GNU bug report logs - #79298
patch: full color in windows terminal

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Ewan <ewan@HIDDEN>; merged with #79297; dated Sun, 24 Aug 2025 06:07:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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

iVBORw0KGgoAAAANSUhEUgAADTAAAAbgCAYAAADteJ2VAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAAHYcAAB2HAY/l8WUAAP+lSURBVHhe7P1/jFxXeth9Pk3Nj8QUuRP7xSvJ
EJjstNiCZgSSDbWDfXf5TurNBkYVkdUfFLDD8TAL/0G0IQS7LyRzWY0gUpwom1QLHREIAgjq7T+M
Rc8MmRfiLrgGu/Duxltr0+84a8YkFXr4usge5+XotajY1mjY6pEokaz9g32L5z51zv1R99yqc6u+
H6Bmuu+9deqc5zz33NvUOXVn/n+n/9teT0R6vZ70eiI96Yn0dn6fmZFeryfb90Q+vT8jX/Rm5L6I
fHFfpCcP9UREetFvIjIzIzM7Pz54tNVqJjowg17PPD76wfjc/rbkTaM0k6eBGZll9sy4WyTvjbPX
1bZtUK7PMX5Oe1+2T1d22jFji4+1jQlslc1ZhE10hvQsEXh09jzcb/4e49gcY9Q59pkF2uKszzDS
iuqpA9KOHzAYX1N6W2asfZRdcvlp/dvrJe+PqhbVceZhR/f/v9ezj8DRuT5wfgwY/GxnfbLQb037
+IJ0+mj2Mc8uilWe92jp8RYVJPP4R9ujKqQXl1zXtKak5X5aLGztTXtPTEoHmvWL5WU/PoOfn0fu
XFeHF/v08Om+1PHW+yM+zqUQ9Hq9Ym2IvTVLOTqjsrwnXEVCl0WUjmV/DsqRNnyH368zD69Sqh0P
6/1wX5kejccPA/Xoc/tHGD8n022QTPGPDnj0Zls5Lunl2yV9hqtM23schwZ7/Uq7/ur99mAYx1hi
YprZ+fehSZX976RAGfXOfS/7cORyvs+1T//NYDtG1HHR36s7O+J/zxag65JX7N9MhmDWf6CM4YpM
lhauMj6zgIGYKGn9n/b+cUjsc9+KFu8I76O8t//70ajp61ik7Otwb2aIcSh2qNFBvUf7+vG1FGvZ
FLfT1plM3W8ckTFG5lFGlQfNzMRvmizlu+oXHRreZVVXaLBNdvb36RC5jnOZGTheiQo3/ptbT20f
MMKgF/2kGdsJkkOe8dd2jqe93/YeU09i/9Gyb3DLI6n9l0bd8znb4Nhsk/lQ/feH6/Mtm7Kyluew
M3wXNuz9f2p+ZC4284HKzMOIqbc/TKuH+5Lo9w1KO0C3/9HxvZ6+btvK2hlHRRz7dzh29QY+X7E0
0NyS8u5Ug6V7Zql/3KMW2I7U7Rs4JrX8BDnfmnpe7+xOPE7vMvMrbUzN0Nb0I3akfdYOa1ssm7KI
ldX/MfnzbcyxLu2+ethxMbvBz9f1S6pD2n4bXX4Wrs8Y9t+PHv1ds2tgWy4p909F8s/63ki0K214
TzFMm816xf8WH4Lx+Znfn1RnI59mzDJd7zH+gHAckZ/rszzQJSdn3+DxWixGWlI7XH9gJp3P+lgf
chapzyl9/6j3O2U8LM3A5+lyU87vXvRvxDrsO//G6/z7QOLH9OlyTI5ixNaOPBxv1XWzf0ZShc2U
s71XrO8309SWznnSOG18tRSfKlamUUDKRzmkvSn6APtx0Wfa4iS565Tt4J7xJ38/P9QHRb/ZqhXt
6/V6smvn+q8/ObnV6f0acd2fPNpe0r//ZqyfLULxcyY5EmZfmMc+LOPR3B1XdR5dRh79Df1wm1mv
hzsGcy2ag+koXHl0z/eo7Ic50E+mnY07Y02GYjMcMihDfZMPMXcm948pucxk9rH34cc+6q9H/S4y
Y95aWUQ7Bvs5jbvMZNY2pNy/awO5NjDwWT7DYjCXh2uX2Sbb29Nq1//vJHpHn32Hrv/w79+Veoyx
RW8YMPieFLH4532zDPz7V94yBo5Pi6ca73bNzBjHPvyh1+upjt/55cEDkV5PevfvS+/+PXnw+V3Z
9fm9aBiNTtudo6N57iIz//70f9vr9XryoPdo4dKDXk/u9UQ+/mKXfHJP5IHMxC52Zv0HGrljZmZG
HqR0qr5BTxK7YYzeZhaftaiBk7o88X4a4nN7g/8BxBVvm+xHuvrC2GbbnfUDbO/VorJiH5nljcrO
henhBUpXMGd5OQ/PynXjaO6Tnf1Z/xFtVEZbn6KfNRjfPGZmdln7KLO0WFnO78hMf7BP2K9+16KR
2lFEOtsNVJ67GvXBurSUdxenPzA3swDLAFUCV3iH68O0NyXvT5vAVP5YkFK+TqCUwweOj+j3DdnV
+nql73/S4qXHmrTjQ6PrnzuAysNruN76UNI+X9LC/7C9Dw/Sxyadu/19lvJdfT4YW/ex4xDVL6Q6
AdPMdU4m/f0BI262Abrv0djvlhZfX+93HZey3zJWmzkxuFebcZad8KdLhcTjF4UmalfW00fHIev7
ippJugnJQjc4bbtYGmc7RlLKEEs5Nrb3ZnlfVnk7WjPrt1PGkCVlYolGTJmfPZRh4xqZSfgjIGlf
mSx9PrSkNiTtyyh6tzNvfM0AL8xVw9QWxOjhIvr7TZ/mD3+f6S9gcuolX+TMBSgPPyna4X5PWlNi
/w0krXpG/ZPvZQzmYbFKx+nJR7byo3//0PefaXzdl2b93GE/byZhgqzrs2P3V45jIrHrt0X/33dV
7F3bzX1qY1z0Ntf2rPT78yr6/mHkGb9T+k/HOvW/X+78rt9nsvWpON5jG74sm9wcB9vyy/r58vAa
Fe2JNTtl7ByQ1hcW/c9zvtW5I1H8OhHfZnL1VVausSUUZdevPz6mfY5z98P369yM+kVv17+mdp8+
PqeBz88r7e39+OkdO8z27RwTu6a73ucwePjglqyi4WGw680Nj0YU87hH5+VOP6tCbNddfcwwBsoY
/Bgn/dZsBt8ULydHBUxplbGcl7Z36E+3HePU64kYC3hi2xPYskNvd9JlW/Jk4BiL6Aj97tR3DpSt
S3hEH2mV6aBHBj5+QPIB6e83pR+crzyxlOmOn4jlfC0ga1l5xh7994X+28H1voj+rLTjq8TVFt1m
STi2dLk/Vr9Bt0Xvt8ve3GwHZi/P1LPU/6F+F1nKzXNP5LyPizg3O3Yo+t84YhybIw/fZ2+/i47z
w3Pc3PLol97AFwCYHh6nyxuUfEDs77v0wgYYtY1tz2qIj9xhe+NgrHq9nvUS/9DMQLyzeXRgPz+z
v7nvYd0s9z8ZZP28pGvIw33J879yc3yW22DnPCwiKidhIEkQVSP17/fY3x/mARk/NyG+WTzMgXgM
8pSX41CD+00Pxxy99SHbZ1n+THCwH5D+PrtH/z716H/7e3K2wa03UPaw3J+br6IDW3X1+mm7c6QO
hKNcmyxHPjom+Wj3xxZr/8BZqtttLWfGeIc+92K/po4fce4D9Hv71YtvziT294IrfjvyjCUij84r
m15vIFzx9DPe2j8/Z8xY7/w4s/NfzXo9men1pHf3rjz4+bbIgwcyE11RjYd0zPzwX/2fej3pSe/B
w2J7vZ789N4u+dkXu+RBrye9GZFPPv1c/vLOJ/Lhx9vyFz/7RP7i40/kk88+f/TBAAAAAAAAAAAA
AAAAAAAAAAAAACbaV770mDz+1a/K7q9+RR7/6ldk91e+Kn/tS196uJys15MHP9+WBz/flhkRmZnZ
JTPRE5j+h5X/Y6+38y1ZXzzoyV9+8Zh8dn9GHvR68v5Hd+T3r/2Z/MXPPtGfBwAAAAAAAAAAAAAA
AAAAAAAAAGDKPf7Vr8j/8pd+Sf4Xf/2vifR60vviC7m/9TPZtfO4pxkR2fWgNyP3ezPy8/sz8sHd
L8mn93fJg57ID//HW3LuD/4ji5cAAAAAAAAAAAAAAAAAAAAAAAAAWH1y93P5j3/+gfxPH/1UeiIi
X/6yPPa1vyG9x74kD3oP5EGvJ7se9Hpyvyfyl5/vki8eiPz5R3fk3168Kn904ye6PAAAAAAAAAAA
AAAAAAAAAAAAAAAY8JOffizv/c8fyNZnd0V2PSa79u4V2bVLetKTXT0R+YudxUsf/HRL/ruLV+X2
T7d0GQAAAAAAAAAAAAAAAAAAAAAAAADgtHX3rrz35x/Inc8+l95jX5KZvV+TB7JLdn38xYx8el+k
JyK//yc/1u8DAAAAAAAAAAAAAAAAAAAAAAAAgMz+7K/+SqQnMvPlL8uu3bsfLmDqicgf/o//E09e
AgAAAAAAAAAAAAAAAAAAAAAAAFDIJ3fvyq2f/lR6vZ7s+ut/XXb1ROR//sufyR/d+Ik+FgAAAAAA
AAAAAAAAAAAAAAAAAABye/+nH8udzz6Tnojskl5Pfv9Hf6aPAQAAAAAAAAAAAAAAAAAAAAAAAICh
/ae/+khERHZ98tnn8hc/+0TvBwAAAAAAAAAAAAAAAAAAAAAAAIChbd/9XO7euy+7PmTxEgAAAAAA
AAAAAAAAAAAAAAAAAIASbH9+V3bx9CUAAAAAAAAAAAAAAAAAAAAAAAAAZdi++zkLmAAAAAAAAAAA
AAAAAAAAAAAAAACUY2cB07beDgAAAAAAAAAAAAAAAAAAAAAAAACFbX9+V3Ztf/a53g4AAAAAAAAA
AAAAAAAAAAAAAAAAhX1+777MvPDCCz29owy9Xk+2t7dla2tLPv/8c7l//758/jmLpwAA0+srX/mK
PPbYY/LVr35V9uzZI7/wC78gMzMz+jAAAAAAAAAAAAAAAAAAAAAAqLRSFzD1ej35/PPP5aOPPpKt
rS158OCBPgQAAOzYtWuX7N27V37xF39RvvKVr+jdAAAAAAAAAAAAAAAAAAAAAFBJpS1gunfvnnz0
0Ufy8ccfxxYu8WQJAAAG9XqPLse7du2Sv/E3/ob84i/+ojz22GOx4wAAAAAAAAAAAAAAAAAAAACg
anbpDUX1ej357LPP5Cc/+Yl89NFH8uDBA5mZmem/AADAIPNa+eDBA/mrv/or+clPfiJ3796NLW4C
AAAAAAAAAAAAAAAAAAAAgKrxuoDpwYMH8vOf/7w/4ZpFSwAA5BddPz/77DN5//335dNPP2UREwAA
AAAAAAAAAAAAAAAAAIDK8raA6cGDB3L37l358z//8/5TlwAAwPBmZmbkiy++kA8++EDu3r0rDx48
0IcAAAAAAAAAAAAAAAAAAAAAQPC8LGDq9Xpy7949uX37NpOrAQDwaGZmRu7duycffvih3L9/nycx
AQAAAAAAAAAAAAAAAAAAAKgcLwuY7t27Jz/96U/l7t27ehcAAPDg008/lY8//lju3bundwEAAAAA
AAAAAAAAAAAAAABA0AovYLp//77cu3dPPv74Y5mZmdG7AQCABzMzM/LTn/5UHjx4wNMOc9i7d6/s
3btXbwYAAAAAAAAAAAAAAAAAAAAwQoUWMPV6PXnw4IF89NFHehcAAPCs1+vJT3/6U7l//77eBQAA
AAAAAAAAAAAAAAAAAADBKrSAKXoKxPb2tt4FAABKsLW1JbLzBEQAAAAAAAAAAAAAAAAAAAAAqILC
C5g+/fRT6fV6ehcAAChBdO198OCB3gUAAAAAAAAAAAAAAAAAAAAAQRp6AVO0aOnnP/+53gUAAEoU
XXtZQAwAAAAAAAAAAAAAAAAAAACgCmZeeOGFoWY/P3jwQO7fvy9//ud/Lp999pneDQAASvILv/AL
8uSTT8qXvvQlmZmZ0bth2Lt3r4iI3LlzR+8CAAAAAAAAAAAAAAAAAABAinPnzsm+ffv05lx+7/d+
T1599VW9Gcq5c+dEROTo0aN6Vy6+yvGt8BOY7t27p3cBAIASRddensAEAAAAAAAAAAAAAAAAAACA
svhYvCQi8q1vfUveeustvRkW+/bt6y9AGoavPivD0E9gunfvnvR6PfmzP/szJlADADBCjz32mPzN
v/k3ZWZmRr70pS/p3TDwBCYAAAAAAAAAAAAAAAAAAIDhXLp0SUREVlZW5MyZM3p3JseOHZOTJ0+K
iMjCwoLeDSVagHTr1q3cT1Aq8t5RKPwEJhYvAQAwWvfv3xfhGgwAAAAAAAAAAAAAAAAAAIARGHbx
khR87zQ6evSo3Lp1K/eTmEJfvCRFFjABAAAAAAAAAAAAAAAAAAAAAAAA8CfvIqYqLF4SFjABAAAA
AAAAAAAAAAAAAAAAAAAA4ci6iKkqi5dERGZeeOGFnt6YxRdffCEiIj/+8Y/1rqH819/6b+R/9b/+
3+jNpfrD/+Gi/P7vdfRmAACC9/Wvf11ERL785S/rXTDs3btXRETu3LmjdwEAAAAAAAAAAAAAAAAA
ACDBpUuXRERkYWFB78rFVznTKGmBUtK+EAWzgOkf/ePX5ej//rjcvXtXRIaqktPb/7f/p7z8f/jf
Dfz//+Pdfytv/ss3ZGZmRr8FAICgsYApGxYwAQAAAAAAAAAAAAAAAAAADMfXwiNf5Uwr20Il27bQ
BbOA6Z/81j+X/+3f+28ebei5ljE93PFoX096O7/smpl5uBhp5uG2h6/ewCvy3/+//p0s/4t/JjPR
+wAAqIgqLGA6duyY/O2//bfl1Vdf1btGhgVMAAAAAAAAAAAAAAAAAABMjmjRhg9VWvgxLr4WHvkq
Z5qZC5ZEpHKLlySkBUz/4l+uyL/7f2+IyKNFRw8ePLC+7t+/H/s5+l1vf/DggXzxxRdy9+5duXv3
rvz85z+XTz/9tP+Z//Sft1jABACopCosYHrrrbfkW9/61lhvNlnABAAAAAAAAAAAAAAAAADA5GAB
02j5Wnjkq5xpZ+Z/FfN3l94wPkOtowIAILOtrS25cuWK3pzq5Zdflq2tLTl79qzeBQAAAAAAAAAA
AAAAAAAAgBE5evSoLCwseHlVbfEHUHXBLGDq9VjAhPG7cuWKbG1tydbWlt4FYAJsbm7K7OxsrkVM
L7/8srz55psiItLpdPRuAAAAAAAAAAAAAAAAAAAAAChV9PSlW7duya1bt2Tfvn1y7tw5fVjQwlnA
ZHkC0+/8zu/IhQsX9Oa+P/iDP9Cbgnf27NnYIpnodfbsWZ7sUVHRk1lsrytXrsiVK1fk5Zdf1m8D
MAaHDh3KtYjJXLx06tQpefvtt/UhAAAAAAAAAAAAAAAAAAAAAFAac/HS0aNH5ejRo5VcxBTMAibt
/Pnz8vf//t+XI0eOSLvd7m//3d/93dhxVXH27FnZ2tqSI0eOyOzsrN4tR44ckSNHjujNqLjZ2VmZ
nZ2VN998k0VMhrNnzxIPjE3WRUwsXgIAAAAAAAAAAAAAAAAAAAAwTnrxUqSKi5iCWcA0s8tdlXq9
3v/57/7dvxvb94d/+If9n+/fvy+ffvqpfPrpp/LZZ5/Jp59+KltbW/Lzn/9c7t27Jw8ePIi9d1Su
XLkSW5y0ubkpm5ubcuHChf4r2o5qu3Dhgpw6dUpOnTolFy5ciPUpi5jiC/lqtZreDYxM2iImFi/B
5dChQ/LCCy/ozaleeOEFOXTokN4MAAAAAAAAAAAAAAAAAAAAWLkWL0WqtojJvWooYF988YX87Gc/
k2eeeUZERP7oj/5I3nvvPbl27ZrcvHlTfvzjH8t/+k//SX7yk5/IX/7lX8rHH38sP/vZz+Tu3bu6
qNKdPXs29sSlCxcuyKFDh+TQoUPy7W9/u//as2cPE5snxNtvvy1vv/22fPvb3+4vkoj8xm/8RuxY
AOPjWsTE4iUk+Sf/5J/IO++8I9/5znf0LqfvfOc78s4778i//tf/Wu8CAAAAAAAAAAAAAAAAAAAA
BqQtXopUaRFTJRYwtdtt+eSTT+TP/uzP5Hd/93flhz/8ofzH//gfZXNzU2ZmZkRE5N69e/ptQTCf
vHTq1Cn59re/HduPyffOO+/oTQACoRcxsXgJaX7wgx+IiMhv/uZvZlrE9J3vfEd+8zd/U2RngSsA
AAAAAAAAAAAAAAAAAACQJOvipUhVFjEFs4Cp1+vFfn/xxRfld37nd+TChQvyta99TX74wx/Kj3/8
4/6CJZder5f4GqWzZ8/2f97c3Bx64vLZs2flypUrsrW11X9FE+1tzGNk5/36vZGXX345tv/KlSux
epv0+32VK442nj171tpGs9yXX35ZXn75Zet7k9iOt31WmXTcdLs0W4xGnQe2Ouo62WIZvc9c0Hfk
yJGBskbFFktbHXR7bblmvk+Xa4tFRMd8KyHuJv0Z0fv059jqajuuTObnihHP0JiLmFi8lN2xY8fk
rbfeSnz9rb/1t0REBrbbXlXxb//tv5V/82/+jXz++efyD//hP5R/8A/+gT6k7zvf+Y4sLi6KiMjq
6mp/8RMAAAAAAAAAAAAAAAAAAECVHDt2TG/KrMh7p1HexUuRKiximnnhhReGWtXzxRdfiIjIj3/8
Y71rKG/8X5al87v/vcjOIqQPPvhArl27Jp9++qk+1Jt/+s9bsvwv/pnMzMykLowaxpUrV2R2dlZE
RC5cuJD76Usvv/yy/MZv/Ea/DJvNzU05dOhQbFu0QGBzc1NExPr+zc1Neeedd/qT9TVbfcso9+zZ
s7FFLTZ6IYH5ngsXLjjfrz9LdmLqqpvs1D9q1549e/RuK7PMtM80+yspnuZnh5QHWWMvqt/S+ln3
cVmy9L8Zx6ztPXXqVGIf6VxKW8Sj6xExxxTNfE9aO3V9yuLKwVF9fh6u8zRkX//610VE5Mtf/rLe
NRJvvfWWfOtb39Kbh7awsKA3ebF3714REblz547eVciv//qvy+Lioty7d09WV1dlfX09tj9avLRn
zx5ZXV2V1dXV2H4AAAAAAAAAAAAAAAAAAIDQ+ZwvmndBzjQadvGSyUcZZQluAdOnn34qV65ckf/8
n/+zPsS7US5gGmbCvvn+zc1N+dM//VPpdDoiIrHFEnqyvV4cceHCBel0OlKr1awLME6dOiWiyhRL
ncssN2pftFhGL8Aw36MXw5ix0XXRC2PMNiS9Tyz1dElbwORayKbjGe0XkVgZIeVBUuwloT7RU3/M
z44WT4nISBYvSUJfmO1KWnhltlfHKdoftcnMX50XUblRn0Sf56qf3qfjXqvVYuWYC4fMPtDHlc2V
g6P6/Kz04qXZ2dmB8ylE417AlEV001rW4qQsylrAJMYipi+++EJWV1fle9/7ngiLlwAAAAAAAAAA
AAAAAAAAwATxsYgpxMU0IYqenFQ0Vr7K8S2oBUz/93fPyr//9/9e7t69q3eXouwFTObk/ayLYSLm
wgnXRHqzfHPRhWu7WBZk6P3mIgm9r6xyXcwyXYtobLFxfVba+5IWTSXRix+iBSySshhIL6bS9ZEM
dZaEfnFtlwL9VaQ+YnmikV7sVaa0z7adr2ntTepDnRf6vS5Rma4FVlnKisrQ8R+1pFwIhdlPUR2j
/M8S63FiAVM2ZS5gkp3FSr/5m78pIiL/6l/9KxGR2O8/+MEPYscDAAAAAAAAAAAAAAAAAAAA02iX
3jAun332mfzBH/zByBYvhe7ZZ5/t/+yaQB89rUd2nsBioxcMRE9skZ336/1/+qd/GvvdRb/PR7ln
z56Vs2fPypUrV+TKlSuxBTbRE3w0W7nmNjMuaTHVdR7G7OysvPnmm/2XuXjp1M4TjmzMRU+mtDrL
GPPAdYxZH5+2trasr7Nnz+pDrcxY6sVLkqHetvZubm72f9b9o2Nq8/LLL8fy3lzwY9Y3Sx7YvPnm
m3L27Fnn+TMs3QdZ+iJLPEbNtnhJdmIcPYnpypUr6l1A3A9+8IPYwiUWLwEAAAAAAAAAAAAAAAAA
AACDglnA9PkXX8j9+/f15kozFzfkXUBgLnxxMReh2Jif75PvcqOFG0eOHJEjR45kanvEFgPbNskY
U99t29zclAsXLsiePXsSF3C49mWps6u9Ed9tiqR9riQsqBoHM5Z64U2UfxHb+ZqlvVm9/PLLsrW1
JW+++WYs7119lSUPTOZiuSNHjsibb77ZX2Bka1vZXO0aJ9fipQiLmJCHuYhJWLwEAAAAAAAAAAAA
AAAAAAAADAhmAdMkcj0JCI9cuXKlvzgjWuizZ88eOXToUOoTcUJktiFqh+1pP6YQF3eEyIyr+UqL
b2jMhTObm5ty6tSpWL748Pbbb8upU6cGzqFoMVNRug+q1hdpi5ciLGJCHj/4wQ/klVdekWazyeIl
AAAAAAAAAAAAAAAAAAAAQGEBU4nMJ7YcOXIk15NPsixqmYRFUdHipc3NzSAWP+R90k3ZqpgHzz77
bP9nn08t8kkvvNEv14IWH8z+euedd3J/VtZx5O2335Zvf/vbsmfPHjl16lQsl86ePRs7dppkXbwU
YRET8vj93/99+Xf/7t/pzQAAAAAAAAAAAAAAAAAAAMDUYwFTid5+++3YooE333wzcfGBuc98epNr
0ry5UCSExT9FmO2NmO3zwXwajW0Bh23buIWcB7/xG7+hN8nLL78cWwSWtjhklMz+TzoPR0nHx1Uv
s+62uKd5++23vT3dqeryLF6KmIuYQhwnAAAAAAAAAAAAAAAAAAAAACB0LGAq2TvvvBP7/c0335St
rS05e/Zs/3XlyhXZ2tqKLUwwF6JET/54+eWX5eWXX+6/x3x6UdXpJ1SZ7fNFPxHr7Nmz/ZheuXJF
jhw5Ejs+BCHnga0+0eIQUYtuImYfPPvss/33jYL52W+++Was/83z0LWIqAzmorSXjScDaWbdbXGP
fo9cuXKl377IqOIcugsXLuRavBQ5dOiQXLhwIdinigEAAAAAAAAAAAAAAAAAAABAyFjAVLK3335b
Tp06NbC45MiRI/1XtABldnY2tuDg1KlT/Z9nZ2flzTfflDfffDP2ns3NzUo/WcVsY7S4a2trS2Zn
Z60LYIp4++23Y2UeOXKkH9PZ2VnZ3Nwc6KcQhJoH0RNpzPqY+2xPgzIXjUTv1YvXyhKdixGz/81Y
DvOEozy+/e1v9/Nsdna2n/NvvvmmM+d13XXcZ2dn+/V+eecpWFH7ovKj/nH1zbT49re/nXvxUqTI
ewEAAAAAAAAAAAAAAAAAAABgmrGAaQTefvttOXTokJw6dcq6QGFzc9P6VJC3335b9uzZ43zPqVOn
Rr5oxTe9MEN22rZnz57YNl++/e1vDywoi+IfaixDzYN33nnH2ndpsdTnwSgXjUX5pmMZLV4bVSwP
HTo00O5Tp04lLixKy4PoaW9JbUzrG8C3V199VRYWFvRmAAAAAAAAAAAAAAAAAAAAAFNm5oUXXujp
jVl88cUXIiLy4x//WO8ayv956R/LP/nHS3pzqf7pP2/J8r/4ZzIzMyMzMzN6NwDl7Nmz/Sf56AV3
AEbr61//uoiIfPnLX9a7YNi7d6+IiNy5c0fvAgAAAAAAAAAAAAAAAAAAADAiwSxg+q+/VZP5F35F
vvrVr+pdmezatUsee2yXPPbYY/LggciD+/fk/v37ktS4H/7B78vv/X//PyxgAjJiARMQDhYwZcMC
JgAAAAAAAAAAAAAAAAAAAGD8glnAJCLS6/Wk1xuqOkNj8RKQHQuYgHCwgCkbFjABAAAAAAAAAAAA
AAAAAAAA47dLbxinaDHRqF8AAAAAAAAAAAAAAAAAAAAAAAAAyhHUAiYZwyImAAAAAAAAAAAAAAAA
AAAAAAAAAOUJbgETAAAAAAAAAAAAAAAAAAAAAAAAgMkx88ILL/T0xiy++OILERH58Y9/rHcBAICS
ff3rXxcRkS9/+ct6Fwx79+4VEZE7d+7oXQAAAAAAAAAAAAAAAAAAAABGhCcwAQAAAAAAAAAAAAAA
AAAAAAAAACgNC5gAAAAAAAAAAAAAAAAAAAAAAAAAlIYFTAAAAAAAAAAAAAAAAAAAAAAAAABKwwIm
AAAAAAAAAAAAAAAAAAAAAAAAAKVhARMAAAAAAAAAAAAAAAAAAAAAAACA0rCACQAAAAAAAAAAAAAA
AAAAAAAAAEBpWMAEAAAAAAAAAAAAAAAAAAAAAAAAoDRDLWDq9XoiInLv3j29CwAAjMCDBw/0Jljc
uXNH7ty5ozcDAAAAAAAAAAAAAAAAAAAAGKFCC5g+//xzvQsAAIxAdA2OrskAAAAAAAAAAAAAAAAA
AAAAEKpCC5ju3r2rdwEAgBGIrsE8iQkAAAAAAAAAAAAAAAAAAABA6HIvYOr1evLgwQPp9XryySef
6N0AAGAEomtwdE0GAAAAAAAAAAAAAAAAAAAAgFDlWsDU6/Xk3r17IiLy05/+VL744gt9CAAAGIG7
d+/Kz372MxERuX//PouYAAAAAAAAAAAAAAAAAAAAAAQrdQFT9MSl+/fv9xcv3b17Vz7++GN9KAAA
GKGPPvpI7t69219gfP/+fXnw4IE+DAAAAAAAAAAAAAAAAAAAAADGaubAgQOZH9nQ6/XkZz/7mXz0
0Ud6FwAAGIOZmRn5pV/6Jdm7d6/eFcNTE6fTl7/8Zb0JAAAAAAAAAAAAAAAAAAAAGLnUBUz379+X
zz//XD777DP55JNPmAANAECAvvKVr8ju3bvlr/21vyZf+cpX5LHHHovt5/o9nVjABAAAAAAAAAAA
AAAAAAAAgBDM9GZeT1zABAAAAAAAAAAAAAAAAAAAAAAAAADD2qU3AAAAAAAAAAAAAAAAAAAAAAAA
AIAvLGACAAAAAAAAAAAAAAAAAAAAAAAAUBoWMAEAAAAAAAAAAAAAAAAAAAAAAAAoDQuYAAAAAAAA
AAAAAAAAAAAAAAAAAJSGBUwAAAAAAAAAAAAAAAAAAAAAAAAASsMCJgAAAAAAAAAAAAAAAAAAAAAA
AAClYQETAAAAAAAAAAAAAAAAAAAAAAAAgNKwgAkAAAAAAAAAAAAAAAAAAAAAAABAaVjABAAAAAAA
AAAAAAAAAAAAAAAAAKA0LGACAAAAAAAAAAAAAAAAAAAAAAAAUBoWMAEAAAAAAAAAAAAAAAAAAAAA
AAAoDQuYAAAAAAAAAAAAAAAAAAAAAAAAAJSGBUwAAAAAAAAAAAAAAAAAAAAAAAAASsMCJgAAAAAA
AAAAAAAAAAAAAAAAAAClYQETAAAAAAAAAAAAAAAAAAAAAAAAgNLM9GZe7+mNefyHP3pRbwIAAAAA
AAAAAAAAAAAAAAAAAACQ0wu/cl5vmgg8gQkAAAAAAAAAAAAAAAAAAAAAAABAaVjABAAAAAAAAAAA
AAAAAAAAAAAAAKA0LGACAAAAAAAAAAAAAAAAAAAAAAAAUBoWMAEAAAAAAAAAAAAAAAAAAAAAAAAo
zWO/NfN3fktvzOODxWf1plKtr6/Le++9J/fv35ennnpK70ZF0I+TgX4EgOnAeA+Eg/MRAAAAAAAA
AAAAAAAAACbbL/9f/1RvmggzvZnXe3pjHv/hj17Um0qzvr4ua2tr/d9Pnz4t8/PzsWMQPvpxMtCP
ADAdGO+BcHA+AgAAAAAAAAAAAAAAAMDke+FXzutNE6FSC5hqtVrs9xMnTsjx48dj20x6gp+2sLAg
KysrejMyuHz5srzyyiv93/NMnszbjwgT/QiX9fV1uXLlily6dEnvyjVWiOeyMF24B/CH8R4IB+dj
dXAdAgAAAAAAAAAAAAAAADAsFjA5RAuY0iZoJck6CT3vhL20Ok3KpLG0dibJGnttnAuYTp482V/M
kPe9Zbp8+bJ873vfExGJLbY4ceKEfPOb38wcH9/KilfRfkS6LOf2wsKCHDp0aKw5FonOAdtio0jW
PPFZFgbp8zevPGP+uKSdP5N4D1BWm3S+cO49lJZjLqM8f8q6B0C6smLP+WhnxiXtHMtzbBFpY0RZ
YzYAAAAAAAAAAAAAAACA6pvUBUy79IaQnT59uv/zwsICk/UqahL78eTJk/LKK6/IpUuXBhZcrK2t
ySuvvCInT56Uy5cvx/ZV2ST2YxVdunSpn2PjzK9oUaPOf+2b3/ym3jTAZ1kAimO8B8LB+QgAAAAA
AAAAAAAAAAAAqKpKLWCan5+X06dPy+nTpzN9W/Xx48el0+nEXidOnNCHYcTy9mPozG/YT3Lp0qWx
LzLxadL6cRKMM7+ip49FFhYWBsbfrE858FkWphf3AP4w3gPh4HysDq5DAAAAAAAAAAAAAAAAABBX
ygIm22TzpFeeSejz8/O5jp82Zcbep0npx/X19djipYWFBTlx4kQ/vqdPn5aFhYXYe/TijCqblH6s
Atu5ffr06YGJsK+88krs91HR54FtUnXWXPFZFux0LkUvM59sORe9iP/0YbwfZFucYD4dRxznGnFE
UZyPAAAAAAAAAAAAAAAAAIAqKmUBEzAt1tbW+j9HCy2OHz/e3zY/Py8rKyuxRUyXLl0a21NyMFnm
5+fl+PHjA4uYRm19fT32u23BUVY+ywIAAAAAAAAAAAAAAAAAAAAAhGGmN/N6T2/M4z/80YsiO5PO
o8Ucridm5GGW53L69Onc3z7us57r6+ty5cqVgaeFHDp0KLaIpWw+22Syte/EiRNy/PhxuXz5cuxJ
L66+8NGPtVpNb8qs0+noTd7otuVpRxRHk6sfT548mSvHyoiXbqtNWvttbDm2sLAg3/3ud1PLssXr
8uXL8r3vfW+o8kxRvUQ9Dcg0THvzsrXRJsv5aOaFbX8kLU9tzBxNqmcWPsty5VfS+SMJ+W7Gw1Z2
1niFkl82WXMujS0+w5yLUkJZPtonAfWjzzZJQv6bhmlXkXi52pj3+jgKejx2XVc1WxuHuaaVcQ9g
cp2PaXF35VWRcVXHOhLV55vf/KYzTkmiuIslV0+cOOEst4zYu+Jmcp03SWyxTsutiK9c9S3rfY7k
PFYS4pWW9za2+GXlem+IYyEAAAAAAAAAAAAAAACAYl74lfN600TgCUxDuHz5stRqNVlbWxuY2Hjp
0iVZW1uTWq1W2afsJLVvbW1NTp48Gds2raKJ2LIzUTBt8qP5lJy0yahi9IPugyjHqtwPSTl26dIl
eeWVV+TkyZO5zqFoInNSeWlOnjwZq5cuyxRNbg5RWi5OurT8KjpGnzx50lp22nk5KfmVJC32ec5t
n2X5NA396FMZ8Zrk62PExzXNp7TzcVzjqk1Un2HidPLkyX7cdV1kpz6vvPKKrKunBVZFWj8OM66G
lqs+pcWraN4XNQ1jIQAAAAAAAAAAAAAAAIDJwgKmnKJJelm88sorY5vQVoStfQsLC7KwsCCyMynu
T/7kT/QhSPHNb35Tb0pkTuQ24x+5dOlSJScmZj2HoomvWVy6dCl14vulS5cSz8eT6tvrq8Q8H3We
jNqhQ4f0pqENU1bW/JIhxugrV67I+vp6P09c56WtzCrnV1ZZY5/l3PZZlk/T0I8+lRWvSb0+Rnxc
03zKej7KiMfVLPeieXIhT76ura1VbhFT1n7MM66Glqs+ZY2XDJH3vkz6WAgAAAAAAAAAAAAAAABg
8gS7gOn48ePS6XRir9OnT+vDRk5PZDtx4kRiHbNMrgyJnuQWtW9lZUVWVlak0+nIwsKCrGV4gpB4
6kf9fnNyno6/fpXJnOQ67EILl0s73/zvir95nC5Hx8BHvHz0Y0RPdDXrdPr06YHJl1knCF+6dEkW
FhYS65h0PupJyydOnJDTp08PtDsqd2VlJXb8uKyvr8fOx+9+97ux/dPGxxht5rs+XnYmCXeM81If
YyuzqvmVh89z22dZPk1DP/oc78uIV5HrY5UMe03TcfVxDxDquOrKVT1GXLp0KXWM0IuXFhYWBsad
E8aTNEU9iVNKir2rjcMoa1wdNldD5yPvyzQtYyEAAAAAAAAAAAAAAACAyRLsAqYQ6Yl8p0+fluPH
j8e2zc/Pxya0ZV3o48ulS5ekVqslvnQ7THrypm6fiGSaYDxtsjxdaX5+Xm9KlDX+o54wWcTly5dj
OXbixIlYG+fn52VlZSU28TLrObSwsDAQm/n5+diEY1dZemJnVC9Xn7m2l8l1bkdtWlhYkNOnT5de
N/35tVot1qdra2sD+11jj95fpCwZwRh96dIlWVtbS80zPam9CvlVlM9z22dZPk1DP/pUZryGvT6u
r68PjCV5XrpNZSpyTfMp1HHVZX5+vj9G5KmTvv9dWVkZGHeOHz/eL9PWPyErc1y1xUL3X9ayQlF2
3vsy7FgIAAAAAAAAAAAAAAAAAONSygIm10R786UnhlWBOXnyxIkTzsm28/PzsQmAo5zwWoSup578
ZjInJaIcSU/SqeqkUD2B0jbpUixt17lp48rXLIvLtGHeMy7RwqXvfve7zjFpWoxijDbfN6wq5VdW
Ps9tn2WVaRL7sUw+46X73lTV66Pm85pWRFXGVRtdV1ed9N8krtjLTpnR026qpMxx1RWLUeeq6ZVX
Xhn429N8pRlF3vug+8s0KWMhAAAAAAAAAAAAAAAAgMlSygKmSWV+c3napLxDhw71f9aTBkOVp55p
7UdxrsmSYon/qCdMDsucEJo0YVm3PU9upskSq1deeUXW19fl8uXLmY4fp0uXLskrr7wir7zyipw8
eTL4+pZpFGO0+T7T8ePHpdPpZJrYXqX8ysrnue2zrDJNYj+WyWe8dN+b9Llf9LNCV3b7qjKuRqL8
yhOXrGNOlWVtoz638vRjmjx9Mm6jyHsfdH+ZdL2rFH8AAAAAAAAAAAAAAAAAk4sFTENK+2bvcX3T
9cLCQn+yp+vl+tZ1U9LkRoxf0oTFqnBNWB6H+fn5gaeKra2t9RcGRU+NG+fkT9e5ffr06X7do8VM
ZdZTf36n04mNFydOnBjY7xp79P4iZWlljdFpn2tThfzyyee57bOsoqatH4saV7ySro/mgphhXkll
T4OQxtXI+vq6nDx5sl+HKL+iuuYV0phTlmloo09l5X3Zpn28AgAAAAAAAAAAAAAAABCmUhYwuSba
m68ikxWB0Iz6G9enwagX0R0/flxOnz7t/Nxo4n1tZ9J9KObn5/t1j5S9iAn5VTW/yuCKwTB8lpUF
/ZgP8UKZTp48KWtra7Gn5aA41/laJadPnx7429N8AQAAAAAAAAAAAAAAAADGo5QFTNNgYWFBTpw4
ken1zW9+U78dU0hPzuab0cMzPz8vKysrcvr06diTjbS1tbWB/hw3/bSTaV9UF+IYXeX8wiP0Yz7E
a3KENK6ePHkytnBpYWHBWj+gKFteuV5l5z0AAAAAAAAAAAAAAAAAVB0LmIb03e9+V44fP57pVcWF
KnybfTpzYuza2lpsXxrf325fxRy7cuWK3hQzzhycn5/vP9mo0+lYJ92vra0F/ZSjtPhOupDH6EnI
ryRpuZfn3PZZlm+T3o++jSteoz6/J1lI46p57p8+fVpWVlZkZWVloB555b2fq6KQx9UQhZT3RYRc
NwAAAAAAAAAAAAAAAADTgwVMOZgTbb/3ve/F9k0C/a3hSZOIp/3pLpIzXjLEpNik8qr6lIpDhw71
f06aIBta+6JJ96dPn9a7gpI2KTlNUs5VQVXH6KrkVxKf57bPskZpEvpxlIrEK2msCi0vqi7EcdXs
44WFhcILM8wxR1Lyq6qqOq6OS4h5b5OUq/QlAAAAAAAAAAAAAAAAgBBN9QKmpAl8NuaClUuXLsnJ
kydj+6tOTwBNWqRUdKFEEeYkzLyLgnzS8Uqa4Khz5bvf/W7sd5uk8sz4pz3NKZR4iWXRl2typc6v
YZ6iMG0uX74cG9P0hGyT69xOyrkqmPQxOmQ+z22fZSXJew+AcCSNVXmuj9Og6D1AlcdV19ih6THn
e9/7XuLCkKyKxt4n3UZXbIqOq5NiVHlf9DrEWAgAAAAAAAAAAAAAAACgaqZuAZOewHfy5MmBSYrr
6+sD22RnwYo5AezSpUtSq9Xk8uXL1uNd20NmfuP42tqatf4nT54sPOGuiCx9KCnfSu6LGa9ogqP+
XB2vrE8LuHTpknWCqS4vaaGKBBYvfQ6tra0NtFG3b1STLqPz3hWH9fX1gYmiWfpxFNbX1+WVV17R
m2P0uW2Le9Xp/AppjK5yfmWhY+/KsSznts+ytCzjoeseQKagH30rK16+ro/TIEvOS8I9gD4fQxhX
9eIS2+etr6/L2tpaprFhfn5+4H7ulVdecY4Fly9ftuafVjT2Pul+9DmuTiIdL595nyUvXLmnMRYC
AAAAAAAAAAAAAAAAqJqZ3szrPb0xj//wRy+KGBMFZWfC28rKijoyO7OsvE6fPp06+bVWq+lNA06c
OGH91vHLly+nLhQwZalPUT7j5WpfNIkvmgx34sSJ2GfqcsRzvTQ9Mc/F1Y8+Za1LxNU2HS8zxjr+
kaznWtY62uKl65WHra2uHLNJap+uV6fTie2P6M8rWqdIUt180W3Myla3LG08ceKEXLlyZSBXbDEz
mflly6E8ipaVpZ0mW9uyXCMirrwz5a2TOPpwFIpcy/O0M61sn2VpWfrXlnt56hTJW7dhDDtOiCX/
fZblM166Xj6vj0XoemWlYyWWslxji46rrSytyD2AWD4zja1OWc67iKvtJlt5tlw4ffr0QN1duZE1
TpEs9cxapi32OifysPVBnn50xUgs9XLFQX+erU4+mTmR9llZjtX1T+Mqx8aWv1qWnAhlLAQAAAAA
AAAAAAAAAADg3wu/cl5vmghT9wQm2ZlglubKlSt6k8jON3J3Op3+JLE0f/Inf6I3BW1+ft4an0uX
LvUnxC0sLAxMqBu17373u5n7oGwrKyuZ6rKwsJBrcqN+woBtQuJ3v/vd2DaXkOLlyjEtT/uKynue
hjwZ1FW3tLgnndf6CSkhC3GMzvsZrj4MXVqORbKc2z7L0rKUa7sHmJZ+9KXMePm8Pk6DovcAIY6r
tvNY54LtGLEs8IisrKzEnsSU5nKGJ+QUjb1PZY6rk6jMvM/SD7brkMZYCAAAAAAAAAAAAAAAAKBq
pnIBUzSBzzZJcWFhQRYWFuTQoUN6V8zKykq/DNvEtqgcc2JZVbjis7CwICdOnMg8wbhM8/PzsT6w
WVhYyDT5z4ekuphxy7p4STL2Q9byQotXNCnUVpdh2lfUN7/5Tet5bIrq1el0gjgHtCznpy2nsryv
ikIaoychv7LyeW77LMtkOw8iUV7Y7gGmqR99KDNerj4skheTzNc9QEjjalIOLCwsSKfTGSoHjh8/
nthGMT4jS/m+Yu9LWePqJCsj7135KynXIc1VDn0JAAAAAAAAAAAAAAAAIFQzvZnXe3pjHv/hj17U
mwAMYX19XdbW1vq/dzqd2H5gFC5fvsxkVwBB4foIAIyFAAAAAAAAAAAAAAAAwDR54VfO600TYSqf
wAQAsGPxEgAAAAAAAAAAAAAAAAAAAADANxYwAQAAAAAAAAAAAAAAAAAAAAAAACgNC5gAAAAAAAAA
AAAAAAAAAAAAAAAAlIYFTAAAAAAAAAAAAAAAAAAAAAAAAABKwwImAAAAAAAAAAAAAAAAAAAAAAAA
AKVhARMAAAAAAAAAAAAAAAAAAAAAAACA0sz0Zl7v6Y157Nn9lt4EAAAAAAAAAAAADzqdjt40tFqt
pjcBAAAAAAAAAAAgMFvbr+pNE4EnMAEAAAAAAAAAAAAAAAAAAAAAAAAoDQuYAAAAAAAAAAAAAAAA
AAAAAAAAAJSGBUwAAAAAAAAAAAAVtL6+LrVaTWq1mpw8eVLvBgAAAAAAAAAAAILBAiYAAAAAAAAA
AAAAAAAAAAAAAAAApXnst2b+zm/pjXn8y6/8UG+qjGazKYcPH5Y9e/bIzZs39e6JMA1tnAb0IwAw
FgJAyBijJwP9CAAAEKZf//Vf15v63nvvPfnjP/5jERH55V/+ZfnVX/1VfUjMb//2b+tNCEhr/wH5
e7/0hPwXX/mqXPvkZ3o3MJHIewBgLAQATA6uaUAxnEMAANM/+uK/0psmwtQuYGo2m9JoNGT//v1y
+PBhuX379sRN0JqGNk4D+hEAGAsBIGSM0ZOBfgQAAAgXC5imQ2v/AXnpiaflG4/vlb/7i/+l/MXn
d5mogolH3gMAYyEAYHJwTQOK4RwCAGiTuoBppjfzek9vzGPP7rf0psKiiVORWq0W2+9Dp9OJ/b6x
sSHLy8uxbVU3DW0cJ52nWrfblcXFRb05N/px/JrNpszOzsrc3JzeJa1WS9rttt4MwDPGwumlr7dl
3Bfmpeuk5bkH8FkWMC6M0ZOBfgQAAAiXvlczra+vy9ramoiILCwsyMrKij4kJoS/q6somkAS2X/x
Qmy/DzcOH4n9/u6H78vSjfdi26rCjNf17Tvy4uWL+pAgtfYfkG88vlee271X75LXbl6TM7dv6c1O
PsuaZJOU92nICUyiUVwfp8E0jYXAKBx7cp+88czz/d+5zo5OaLHn/mv0uKZNJ31PqFXp3wXGjXMI
AKBtbb+qN02EXXrDMDqdTqFXvV7XRQII0Orqav+8bTabevfEqdfrsrq6Ko1Gw7p4SUTk4MGDehMm
zLTl/aSiH8ej2WzG7vki9Xqde8EKoR8nB2MhAAAAgGlx4/CRQq9jT+7TRWKCHXtyn5yfPywvPfG0
dXKjiMihPV/Tm6x8loXJQE6kOz9/uD/+tvYf0LsnQqhtDLVePk1DG5EPOQFMPu6/7Fr7D/THv/Pz
h/VuADlwPwEAQDFeFjBVUavV6v/c7XYn8pulp6GN04B+HI96vS5LS0vOhUuRq1ev6k0ASsBYCADh
YoyeDPQjAAAAMF6v3bzW//n69h2+YXdEom+Jd01sjFzZ+lhvGuCzrGkx6XlPTgDIYtLHQgAYJe6/
xotrGlAM5xAAYFpM7QKmdrstrVZLWq2WLC4u6t0TYRraOE7Ly8tSq9Vir42NDX1YYfTjeBw9ejT2
e7fbHejvVqsl7XY7dhyAcjAWIiQ+7wF8lgWMC2P0ZKAfAQAAgPE6c/uWvHbzmrx285q8ePmi3o2S
/NpT8adtXd++I/svXoi9Xrt5Tc7cvhU7zsZnWdNi0vOenACQxaSPhQAwStx/jRfXtOm0dOO9gfPs
3Q/f14chA84hAMC08LKASU+6tE2+tE3+j17jWgDQbrfH9tmjMg1tnAb04+iZT17qdrvWSZz0CTBa
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
3mFlPYf0xNCDBw/GfreJJtZKSpvI1dHmalJfRHQdh7W6umptc6PRSMy3UKX1Y6PRkE6nM5J+TJP1
3C7T1atX+z9nybssfNwXVqkfh5XWxjxjThn9WFRS+3yNL8OOX0l1y5tfPssKXdFzOylWaX1WJaHf
M9GPAAAA1WZORnhu915pqW+vzsNnWSGKJr/oyVTP7d4rbzzzvJyfPxzbXrbz84flxuEj8tITT8tz
u+OTVLRfe2qf3lQ6V7xeeuLpscQrVMee3BfrR9Nzu/fKS088LTcOH5FjTw7Xh+fnD1vLfumJpyvZ
B6HnvQ9pORGdP+TEQ2nxSjuHzty+Je9++H7/95eeeNp5rJlT17eTJ5pOE9d4X/T6GPVfkTImVehj
oY+cSDu3i46FISi7H/OcQ3ocTBMtMpCd8dAlrR/TxuhIUjlVvX5llacfbYqej9MS+6R2+hhzJu3+
y6cyxsKoP3VZ0fk06pin5VfaWFjWGG1TdMypgklrY1p+DTN+Fb12AADgUokFTObEK9ukybm5uZFN
2ls1nkAxqUJtY5bFEnNzc0xq2xFqP/oUTZBME02YHMbm5qbeNBLm55q5by4ISmJONo/4OIdarVb/
50bKt/aLWgTjiiW5+kiRXM2jjPzSZmdnpdls9vu22+0OXMNHef32IWs/iogsLS2NrG0+zu0qKXpf
GGo/+pS1jaMac8pgq7c5zszNzUmz2dSHZFJk/Moae8mQXz7LCt3c3FzqYhtXzCO2WPnKiVCEfs9E
PwIAAFSfnoxgTnTJy2dZIdIT17Xndu/NNSGkiPPqm6RDpOOlY/bc7r1jn/Tyo08G+3FYw5QVTQrK
4o1nns+VX994/OEiwihPXH2Qp8xxq0Lem8rMiWjiWB6TmBNZ4yUp59DSjfdisbBNjtX5l+fb5Ced
Hu+1tLw6tOdretOAEK4ZodC5GJrndu+1nkOmtJzIem4PMxaGwmc/+jiHrmx9HPs9qX9E3fe7rndZ
+1FSxmjZ2a+Z17Hndu/NFIeQZal/Wj9qPs7HqsXelY9JsubqMGPOJN5/+eRzLDTpexNbzPOcS0Vk
zS9JGAvLGKOznLejjFMZpqGNWfMrz/jl49oBAIDLTG/m9Z7emMee3W/pTX3NZrM/wb3b7cri4qI+
xMp8X2RjY0OWl5f7v+sJfXp/Gv3+Vqs18HQRm06nE/t9Y2NDrl69an1vvV63bh+VaWmj7ExmNifz
5c0HX4bN+SQh9aM5aXJcMTbpSZxmner1+tB5EUI7zVwy66DbbOaD2ee1Wq3/c5JhziHzc5LyUY/l
rjqVkas++cgH3W++cnVYZeWXOV51u13Z3NyU2dnZ2Fiox7SsbdXvS8o9Gx/9aMtVn/cmPg1zbpdB
54SZC1lySixjiVjakSf2ZfWjz3uAomXpc7nomOOjH31Kap/rGEkZN3Qbhx2/fOaXz7IiPsZCG12X
pFhHbOe2zi9drqvOur9tx+ljJGM9i8h6z2QeZ6t7xJYTPu+ZdLyT6hyZhn4EAAAIgb4XNK2vr8va
2pqIiCwsLMjKyoo+JCbpb7fW/gOxb/B998P3h36ihM+yfDLrdX37TuZJ57o9YmmTniyi96fR73/t
5jU5c/tW7BibG4ePxH5/98P35crWx9b3Hntyn3W7b1niJZZJarY2m+2z7Y+Yx9k+y8b8/KzvcSla
lq0fi+SXefz17Tvyo0/uyDce3xvL+bxllkHXIamPTbZ4jTvvtaI5oc8Ps4xjT+6LPelO77cJOSeK
xkocOTHsOZR0rN6XNWd9tLEMReuVZbzXMdP700QTIvPmfKRoG0dBxyhrXtnyftxjoS0n9D2Xbm9S
v/geCyXAnCi7H4c5h7LeV+n+3n/xQmx/xNbGYcaJpHxwHSM5zqmQDdOPun+kwPmo42o7Th8jY4h9
0fNbt6HomGPGN4T7r2H/Hs5DtydrDtjGiWHGQlve22Kq+zprPYuwtXGYsdD3GG0zzJijFcm3Mv8d
IFK0jUXHGxedB0ntN+mcHnb80nkjlv7TdXSVBQDwY2v7Vb1pIlTiCUzdbndg4lK73ZaNjY3+73rS
VBmiycCRaEKVa7KUa3vIqtbGdrst7XZbFhcXcz8ZZpJVrR+HUa/XEyc4RnlhPjHBlhedTmfgZZbb
aDQG9kevcXz7uznp2IdhziHzs7M8+UUcT0kRclUkR66Ogs/8mpubk0ajMbDwQl+/sz71adz0+d5q
taz3JlnPo7INc25XRZH7wqr14zCqNOYMy2yfLR9EZGDsyWPY8ctnfvksqyr0ohexxNzVxrJzIgRV
uWeiHwEAAKpt6cZ78u6H78v17TuFJx/4LCtE17fvDLTpzO1b8u6H7/d/1xM+yhBNuIlEsXZNbnFt
L5srB168fDH2DdjmBBjfbhw+MvAyJ++89MTTA/ujV2v/gdLKkp0JQqbXbl4biNeZ27fktZvX+r/n
ya/ndu+Vl554emDCmM7ZqjwpLcS81/1cNCeOPZk8uezM7VsD588054SOYdFzSMfhpSeejk1wjFzf
vjOS/KqSMq6PZ27f6ud81j6cBiGOhTZ6wqvkyImyx8IQjKIfhzmHsvSPqOuE2Q8mn2O0mQ+28UYm
+Kl4w/SjVuR8DDH2+p6K+6/qKnMszJqvWZ7QU4TOuSJjYZZzVjKO0S4+xpzQTVIbyxy/ilw7AABI
UokFTK5JSlevXtWbRmrcnz8KVWqjnqSnJ/lNsyr1Y1Z64YxtgqOIyLlz52K/VyUvzD7TE6TNSec6
DkVkPYfMujUaDedxZr03Nzdj+1zI1UdccfVhVPnlWrhWRWacNjY2Bs6XSLvdjrW7zH7MStd1lHVq
t9tSq9WkVqsN3M9F25O++dlGlxPJMn5UuR+z0uetjzGnjH4clq6nro+pyGLMYcYvn/nls6yqcPVl
2rmt2+wqRwrmRGjS4jIurvin1Xda+xEAACBESzfekxcvXxyYSDMMn2WFRk/eiFzZ+lhvGqlxf75L
Ug58/4Psk88mlTmx7N0P33dOyDtz+1ZswpGe6Jck74S1Kgk174vQEyhd55A+f6Y1J8o4h5ZuvBc7
9tee2hf7VnPbRD6Uf33UfZvUh9PGV4x9K5IToxgLQ5MlLkVkPYd0PVzHmZOlf/SJ/bria4zWv7ty
S9Tk/kmkY6hj4+KKme5vTZfvKkcqHvtRjDmTdP9VprSczEP3l2mUCzB8jYViiY/tGMk4Rmeh6+r6
vCqrehvLHL9cY77OQwAA8qrEAqas9KSnsi0tLUmz2ZR6vT7yzx6V0NsY1SvEuoUk9H4chjmxN2mS
sZ7wqyd2V5WeBGr2a1I8tGHOoawxNb9F3zWBXiNXH3HFdRR85Zdr4dry8rJzMUSozHzW8dHMdo+r
H4c5tyeNre1V68dhVHHMySNPPdP6OMkw45fP/PJZ1qTR53aeNqfFskqqfs+k6zyt/QgAAIDJl2Uy
iE9vPPO8tPYfkGNP7hv5Z/tS1XoXYU4sS5sEZE4805OUkrgmrC3deE/2X7wg+y9ecE5MCt0k5L2W
9dvS9US7ac2Jss4hc4Lfc7v3xj5HT/5DPnnO1ejczvOeaVT1sdBW51GMhaEpox+HOYf0kxVsMdVP
E3FNlvY1Ruvfk6R9ThUN04/D0p8xLbEfxZgzSfdfZfI5Fur+Mul8LfpZSXyNheJ5jHYZ5ZgzLpPU
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
hAAXcnV0ueozv6bNuXPnBs4d1yuKZ1nKOLenRUj9WJaQxpwyhFx/n/nls6xJF3JO+DbJ90zT1I8A
AACAb2du35Izt2/J0o33ZP/FC9ZJXy898fTAhKZx+sbj8YlE0+77Hzzsvywv/a3b06qKeZ+HeY7Y
8C3icb7PoTeeeV5vqnQ+hczM5dduXpMXL1+UFy9fHOg32DEWJu+viiL9WMY5ZE6cf+mJp/s/mxPl
89y/+RqjJ6W/bcroR58mOfamaRlzQlVkLCwiadzxyddY6GOMDn3M8WEa2mhi/AIAVAULmDyKJpC1
Wi29a2KMo416McS0T8z0YRz96Nvm5mb/56RJjlX+5nmzjTau/focKesc0uVEE2TNCfOuOmZFrpYn
rW9c+3W/TwtzUvjRo0dj+8alrHN7koXYj76FOub4ohdRJi3O0E8HLJvP/PJZ1qQLOSeySKpvHlW/
Z6p6PwIAAAChiiZ9vXbzmt4VDHPyzI8+SZ5c5eJ74tqomZPxfu2parclBFXI+zTmuZA0wazK3zzv
U1nn0Pn5w/2fo29qj9gWNmF4Zi5f376TOFkX2TAWToas/VjWOaTLie65zMnRL16+aBwxyNcYrZ9C
knT/V9UnfJbVj0VNQ+yFMSdoWcdCm6R8HWVf+hoLTXqMyDtGhzrmZJXUt5GqtzErxi8AQBWxgAkT
I7SJuEmThqvKnBRtPnFnHPQkR1f/66dPLFf4SSRzc3PWJxr5msTpimESc4K1rR5VjnekaN5XJVfL
zq9x89mPc3Nzsrq6GtsfMlfOTaNR9aPPe4C8ZVVlzBmWXqiXNEbpNpbNZ375LMtUdCwMUcg5YXLV
iwVqD1WlHwEAAAD4ZS4OEJHUbz12TYj0NQFsXMxJoc/t3jsQF0wfPVHYNdFMf7t22jkUKnPCnfnt
8VmVcQ619h+ITf6LvqndlOdziraxLKHWy8V1LiSpWhvxSFlj4TTnhCuGScxJ99G9WDQ+pj3ZQzyO
0XrSueu+UCw5MWmG6ccipiX2ZY05GK+kvxVH+TRgX2OhVnSMzsJ1LuSRtKgmjWvMSerbvIZpY0j3
E1Ubv87PH5bz84ed9QQATAcWMOXUbDalXq87vxG62WwOTELTk7FCF1ob9QROW72azaY0Gg3r5PtR
0pOGV1dXB+obxbdsZfRjlvZJyjem+9Jut2P93Wg0BiZpr66uxiZ+jzs/fNPnhjjaqI+z9c+w55BZ
dqPRkHq9nlgXmzJy1aeieV/VXNV5I4HUa1i++3Fubk46nY4zd13bfdJ9ZPu8Yc/tSVVmP2bJsaz3
AEXK0m2sypiTh7l4Nrr2aLqNo6BjXyS/fJZlypJbkjAWhirUnND1sp2LeYR+z1SUjpetnePoRwAA
gGnS2n9Abhw+0n9l+TZbF59lIVlr/wE59uQ+Z4xb+w8MTOzRkxBHrbX/gJyfPxybxOT6Nm1zQtZL
Tzw9MMHF18SvcTpz+1Zsctlzu/f2zxtbv7q2T5Mq5n0eOidcuW+eQ74mKI6DnnB3fv6wtW9t28QS
r6Ln0LEn98UmIZrjkDlWPbd7b2I5pqJtLEso9dKTem2f19p/QF564uncuR5KG8vAWDjcWBhaTvjo
x1GdQ994fG+sD7I8PVP3Y5ExWt8X2o7TOZHHuP+GKbMfiyo79iHQueprzEE2PsZCm+d2x8etiO7L
LONZETq/ioyFpiJjdNljTpbrbdTvmh5zdB9m/XeAMtuYpX0yovsJnV+umIUwfkX1eG73Xuf1BAAw
HWZ6M6/39MY89ux+S2/qiybNys7EyMXFRX2Ilfk+EZFarRbbH6nX67K0tNT/vdVqDUzQ0mXlocvT
n5dFnnYPaxra2Ol09Kb+pE5zAlur1Rqo/yjqZ7LVVdvY2Bh40kFV+jHrpEFbG33L086s7RPVxlG0
w8XWPrM+tv2udtry0tc55MqJLLGztSFNWn3K4Gqj5mpznnaOqn22Og2TX7bccnFdz00+x0JtlP0o
Gerjgy3+vs7tUOiccOWR7h9X/PVxaVzl2Nj6Q3Pll1akrDxtrEoemFzt07nf7XYHzgOzL7PEOOLK
O81VNxddJ5PPskxFxkJ9Puah66fLcsVYx0GXYzsmkjcnfHPVy7SxsSGzs7MDfaLrlqUszXV+69jn
oeuly5rEfgQAAAhB0t8v6+vrsra2JiIiCwsLsrKyog+Jcd2ziTyatBHZf/FCbH8ePsvyyazX9e07
A0/TcMnanmNP7pM3nnm+//trN68NTKrSZeWhy9Ofl0Wedg9Lt1FP1NLe/fB95zf/Zmnjux++L994
/OEEGJOOl2ZO4EmqQxZFy8rSTpOtbTcOH4n9nsSVw2XROZGHbmveWMmI8l4bZU642hdyTmh6Qp2L
K5Z54iWWvDKZdbHFVtc1qSyTfp+Lq41lKVIvfW678kj3jy1mtnyNrh863rqvbf1kKtJGn3S88tAx
0zHNIi1OPug2FskJsRyXJE/7QsmJPO2LuNpZ5jlkK1sS+lfL2868+aDb+e6H78fy0FWeljV/y2SL
tW6fZOzHrO3RcbXFSx8T0XUbNva+cP+VTOdEHrovfZaVJ+4RV/x1vcyc1PkacZXlW9526ji5uHIu
S37Z3muLU5Yxx8ZWvmY7V7PEKuu/A9jq4KuNRe4ndK7modsoGWMWSWqXrpcrj/Tn2epko/sjqS4A
gIe2tl/VmyYCT2DK4eDBg3pTIteEsZCF2sZWq6U3ydzc3MDENRs9GbBsrnqYZmdn9SavyuzHc+fO
9ScRjlu73c4U7263K+fOndObK882UXNzc1NvEnHkpa9zyBVbPenZpsxc9alo3lcxV/PkV1X46Mda
rZa5jLz5PQxbXvk6tydVmf3oirUp6z1AkbKqOObk4Wqfmfu2ttnGNd985pfPskxFx8IQhZoTrnpF
ut2u835JP0kpa/9GxnXPVIQrXuPuRwAAgGkVTebwwWdZiDu052t6U6JxTQx5bufbdfXEnuvbd+S1
m9cGJvKYzty+Ja85ns4kO2W43q+/oTtkZ27fkv0XL2Q+X/L2/STJ2/Zx5X1Rabkfub59R77/QfpE
sdB9/4P4t4bn5esc0pMQbbHV+ZR1rCnaxrKEUi9bvutrh+0YsUxE1kJpo0+uHHZhLIwLJSd89qMt
Tr7OoXeNJ2FE8sTP1xjtygeznUn3hnlkratvae0TxzGSoR+LGGXsx8nVTi3vmINkrnPeJWks1PQT
ePR5Msq+9DUWakXGaFu+6zjZjpGMY47rvaZvPD5YTtq5mDTe6HtzWzm+2hjK/YRkiFlklDlvo+OV
9qQwAMDkYgFTDlevXk2d7NftdmVjY0NqtVrlJoxJwG2MJrNtbGzEtne7Xel2u1Kr1YKZuOaqqxj1
LXsRQJn92G63ZXFx0dlG2SnbNanat2hyr60uURsXFxeDyY88bHW+evWq3pSJKy99nEO296XlX6TM
XPXJR96Hlqu2zxk2v6rCRz+KSKwMW/5G59Uo4lnmuT3pyuhHV3/IEPcARcsKbczxzRUfs23j5DO/
fJYlHsfC0ISaE7Z6DVOnqtwzFWWLlwwZMwAAAORnmzQyLJ9lwe3K1scDkz+069t35N0P35f9Fy9k
nuRVVFK9rm/f6dfpxcsXM31DbzQRx5yYZZYxSV68fLHfVlsMo/iZE/GmTVJ+RcaR92WIJjm6JiXm
OY9Cd+b2rVj+21zfvpN6fSlyDh17cl9skuK7H77vjK05OfC53Xultf9AbL+Nrzb6Fkq9bGO9GH22
/+IFZ3+kCaWNPjEWPjTsWBhKTvjsxzLPIduYOcyE4yJjdCSpnVEuDKvs/s4iqX1F+7GopLoVjX1I
yhhzkMznWKhlydtR96WPsdBkOy7rGJ0UHx9jjqt8MT7DVVfbe4cZb2zliKc2ngnkfiJShfHLXDx1
PWEhGgBg8s30Zl7v6Y157Nn9lt4EAJhCq6ur/W/H39jYcD5RAACAUWg2m9JoNPq/12q12H5Mn1Bz
ol6vV3Yx4TiE2o8AAABl6nQ6elPf+vq6rK2tiYjIwsKCrKys6ENiku6fzKdOvPvh+4UmEfgsC8ji
2JP7xjoJBwAAANXG3zBA9bX2H5CXnni6//v+ixdi+zFZ+HcAAMA02Np+VW+aCDyBCQBQWL1e7y9e
EhEWLwEAxs58glDak2swHULNCRYv5RNqPwIAAEwC86kTRfksC8iCSUsAAAAogr9hAKBa+HcAAACq
iwVMAIBCms2mLC0t9X/f2NiI7QcAYNT0wtrNzc3YfkwfcmIy0I8AAACj4/Pbxn2WBQAAAABl428Y
AAAAACjPTG/m9Z7emMee3W/pTQCACVav1+XgwYMiO9+Ab04i7Xa7sri4aBwNAED56vW6iIgcPHiQ
axNEyImJQT8CAAA81Ol09Ka+9fV1WVtbExGRhYUFWVlZ0YfE1Go1vUlERI49uU/eeOb5/u/7L16I
7c/DZ1kAAAAAUDb+hgEmQ2v/AXnpiaf7v3MuAwCAqtvaflVvmggsYAIAZFKv12NPWtKYRAoAGIW0
65HWarWk3W7rzZgg5MRkoB8BAADcRr2A6fr2HXnx8kV9SGY+ywIAAACAsvE3DDAZWMAEAAAmzaQu
YNqlNwAAkNfGxgaLlwAAQel2uyxwQAw5MRnoRwAAgLjjx49Lp9ORTqeTungpyaE9X9ObhuazLAAA
AAAoG3/DAAAAAMDosIAJAJBJNEm02+1Kt9uVjY0N2djYkFqtJsvLy/pwAABGJro2RdenWq0mi4uL
LHCYYuTEZKAfAQAARufK1sdyffuOXN++Iz/65I7enYvPsgAAAACgbPwNAwAAAACjM9Obeb2nN+ax
Z/dbehMAAAAAAAAAAAA86HQ6etPQarWa3gQAAAAAAAAAAIDAbG2/qjdNBJ7ABAAAAAAAAAAAAAAA
AAAAAAAAAKA0LGACAAAAAAAAAAAAAAAAAAAAAAAAUBoWMAEAAAAAAAAAAFTQ+vq61Go1qdVqcvLk
Sb0bAAAAAAAAAAAACAYLmAAAAAAAAAAAAAAAAAAAAAAAAACU5rHfmvk7v6U35vEvv/JDvWkqNZtN
OXz4sOzZs0du3rypdwOFkF+YRuQ9NHICAIByca0FAAAI06//+q/rTX3vvfee/PEf/7GIiPzyL/+y
/Oqv/qo+JOa3f/u39SYAmBit/Qfk7/3SE/JffOWrcu2Tn+ndqIhQ+zHUevk0DW30iXgBAICQTMO9
yTS0EQAA0z/64r/SmyYCC5g8aDab0mg0ZP/+/XL48GG5ffs2k73gDfmFaUTeQyMnAAAoF9daAACA
cLGACQDStfYfkJeeeFq+8fhe+bu/+F/KX3x+lwltFRRqP4ZaL5+moY0+ES8AABCSabg3mYY2AgCg
TeoCpl16A/JrNBqx3w8ePBj7HSiC/MI0Iu+hkRPhqNfr0ul0+q96va4PGYtQ61VlzWazH8/V1VW9
GwiGmaudTkfvRkZcawEAAAAA49Laf0DOzx+WG4ePDLyOPblPH2710hNPx34/tOdrsd+11v4DA59l
vs7PH9ZvwQjk7cdRCbVePk1DG30ad7z0GAZUlY97ABRz7Ml9xB2YAOO+NxmFaWjjMMz7wir9Hevz
HsBnWQCA0WABE4DMVldX+xNDm82m3g3P9GTcrK+0Sfv0IzRyIh/iBY2cAAAAAAAgLHqyQt4Xkxsm
nzmxpbX/gN6NETn25D45P39YXnriaXlu9169W4RJaZgQ0zDmTEMbfZrGeJ2fP1z4Hss1OfX8/GFp
7T9QuPxJE3K8fNwDmG0ad3swWaZxjC5iGuI1DW2cBvRjGHzcA0R8lgUAGC0WMHnQarX6P3e7XVle
Xo7tB4ogvzCNyHto5AQAAOXiWgsAAAAAGKVjT+6TN5553jnJKHJl62O9yeq1m9f6P1/fviNLN96L
7Uc1hNqPodbLp2loo0/EK5/z84flud175Y1nnh9qkUk04dg1OfW53XvlpSeeHrr8SRN6vHzfA8jO
UznG1R4ACME03JtMQxsnnc97AJ9lAQBGjwVMHrTbbWm1WtJqtWRxcVHvBgohvzCNyHto5AQAAOXi
WgsAAAAAGKVfeyo+wfj69h3Zf/FC7PXazWty5vat2HEuZ27fktduXpPXbl6TFy9f1LsHLN14b+Dz
3v3wfX0YRixvP45KqPXyaRra6BPxyq61/0BsYqke/9NEi5+ymvZFLFWIl86BovcApjeeeV5vAoCp
MA33JtPQxknn8x7AZ1kAgNFjAZMn7XZb2u223gx4QX5Np+XlZanVarGX+c34IjKwv1arTUyukPfQ
yAkAAMrFtRYAAACTQk9YiF7m4gTbxIboxeQGoHzm5Orr23esE9Dynotnbt/K/R6EJ9R+DLVePk1D
G30iXtm89MTT/Z9d472LbTHOux++PzAxVd/jTWu/VCVevu4BbPf4svNEBgCYRtNwbzINbZxkvu4B
xHNZAIDRYwETAAAAAAAAAAAAAGAkWvsPxH63TTQCAFSfOd67Jpa66Cc3RYvPl268FzvuzO1bsnTj
PXnt5rXcnzFJqhKvMu4BdBsBAEB4fN4D+CwLADAeM72Z13t6Yx57dr8lnU6n//vGxoYsLy/HjtGa
zaY0Go3+77VaLbZfRKRer8vS0pLeLN1uVzY3N+Xq1aup3wytPydi1rHZbMrs7KzMzc1Z92uuMk2t
Viu1bpqtHt1uV86dO5dalhn/pM/O209i1EtEYnUzJX1mWXzWq16vy9GjR0UsZW1sbDhzzZULIeSX
WU6325XFxUUREVldXR3Isc3NTWd9zJzJy3Zeaz77cVrosTFLnMvux6J85b0WSn7Zzsdo3NHnY5Yx
32QbY7KUMy054Sv2ZcfL1Y9J43PEVxs1W52i65ceh7L2hS4vaxtNtnKK1GtY48qJPH3oQ9b8Srpf
cnG1MW9O+DbsfaGNq41p/WjGPfpMM+ZRbuu+cN1j2vpRhrgvdI3NRe59Tbb3ptUpoutWq9UG4iMZ
46/5qlfSOVSkXmLJ1UjSOKhjZpP0fhni70v9mWnjYZHYAwAATJqkv0PX19dlbW1NREQWFhZkZWVF
HxKTdB927Ml98mtP7ZPndu8tPJnRZ1k+tfYf6D8FoEi9WvsPyDce3zswSfT7H4z3m4CjuIv6JlrZ
+fb9K1sfW+tnxsX07ofv9yeE2tps7k9ie+/17Tvyo0/uZHr/sSf3yRvPPK8398twtct04/ARvSmz
/Rcv6E0DirbRJx/xKpv5hIhhzkVXzppeu3ktdzt9jRESWE74YJ5DWc593Ue280gfYzNsP37j8Ydx
12NhJKlcH/Uqe8wpapLbaNbLbEPS+W2OSbb8DjFeuk77L16I3X9Fxn1/khbbJGbMdJ+Ni77GJrUp
z7E+hBgvm6L3AC6uc39UdH9H8t5/2cYqH+e27b4kykld91HHz1a3rPdMvuLle4zWhm2jHusjvv5O
G1ao8dK5nBSHtGPLbmNRrtwwZTmXfZ1DZfDRxrL7McpVGfLvDl+y9mPSvwtFsl5P8/59KJ7vAXyW
NeyY48rRcY/RACbP1varetNE8PIEpo2Njf7PaZOgRKQ/0Up2JiDlMTc3J41GQ5aWlmR1dVXvzmV1
dVUajcbAhK9Go1G47Kzq9bp0Oh1rPebm5vrtrNfrsX1lW11djdVL180UTfIcBd/1Wl1dlaWlJWdZ
Ua41m029K1UI+RWJ8kzXJTqfRl0f3/0ImELPr2iRha6XOeanCfXaETofsfcprR8bjYZ0Op1c/Vi0
jUl1GuZ6kVRenjYmlTNMvUKV1M4Qzm1XfkX3S1n6Ia2NWXOiDL7uC9PamLcf9WKXpaUla180Go1M
ZUb1s9WtyPk07L1vWryGyQlbfCTHWCgB1yuk+5yy/h2gjNgDAAAgG3Niw3O790pLfZtpHj7LCsmx
J/fJjcNH5KUnnh6YnPLc7r3yxjPPy/n5w3LsyYeLiEbp/PxheeOZ5+W53fGJEZGXnnha3njm+aH6
4vz8YWubX3riaTk/fzi2zZQWr5eeeFpuHD4ydLyiMqK4j0PZbfQphHhNgyrlRB7vfvh+/2fbJC0t
msgnO5O/RuH8/OFY7HX8TdFiT0yeLPmWlBtVFU3E1m0z70/GwazPla2PY/uS6PuV739gnzw7amdu
3xoYD13juTnOXN9OngBbVKjxGhXdftdk63Eoev9V9NxOui9Ju5cvW1Ldhr1nKhov38poo2nYv9NC
VTReoY7RVRLaORSq0P/ucPVjkevRJCo65qSZtDEaAHzzsoDp6tWrsd/TJhKZk5A2Nzdj+yIHDx7U
mwbMzc1lmuSlzc7OSrPZ7Nej2+0OTKCam5tLbUdR0QS2NNGEtlFZVd/GHgrf9cpTXqPRSJ2sGgkl
v0zm5EVXfYY5l4aRJ+5AXqHn19zcXOpk4rTxIdRrR+h8xN6nrP0oxmKFND7aaKuTed2Ym5vLdI8m
nttoK2fYeoUqa7zGeW4XvZ/I2kbJkBO+5bl+JN0XZm1j1n6MFoWYC0VkJz7dbndge5bzoGg/akXu
fbPGS3LmhG6j5qpPpIx6+Rij8+TpKJTx7wBlxB4AAADZ6f+gbk4+z8tnWaGIJoCkiSb2jNJ545tn
07z0xNMDkzxdvvH4w8VnUdnXt+8MTAx/bvde62SOrPESEXnjmeetZUQO7fma3jTgud17Rz4BxGcb
fQo1Xi4/+iR9sUFVhJoTPuiFB2l1N8ekUfRxnnEQk83MN3M8zHovonO9KvREbM11va6C69t3glqQ
snTjvViMbROT9ZhU5KkAeYUWryS+rg/jWDSrlXH/9dzuvdb8MqWd27b7EvOe/rndezPV3bcy7pl8
xMunMtoYKfJ3Wqh8xSv0MTpkoZ1DodL5EyJ9X2gbH/Jcj8rg6x5AhizL15hjM4ljNACUYaY383pP
b8xjz+63RESk0+n0t21sbMjy8rJx1CPNZjP27cy1Wi22P0k0OUl/C3nS50XMiVDdblc2NzdldnZW
FhcXrcdIxnLF8r5WqyXtdjt2jI2egGZ+Xr1ez9xOM/ZJn521j8zjZOfYq1evWsut1+vW7WXwWS8d
+ygnzPgfPHgwlqvdbjeWL6bQ8kufZ+L4PB2HtLLN423lZeGzH6eRzoc8Y2jERz+WTbczLTcjIeaX
7XzU44lub1K/6PN22GuHaVJzwnfsIz7iZctVs5ys9fLZxqTcch0jCX3hq436M23H6WMkoV5l8JET
ug0+zu2ibPll+1xdd1fsfeWEb7r+Re4LdVnD9KOOe3StN+Njfr55vK1eujxxfK6uu6sfxVKXYe99
feVEljZmLUtKrpfuo6xliaNePu9zdF2SciCS9W9MHQvXPaytjcPEHgAAYNLo+yTT+vq6rK2tiYjI
wsKCrKys6ENiXPdisvPN5S8ZT9V498P3h/4WYp9l+WTW6/r2nVwTlfQkFbNNx57cF3vqlN5fJl2v
69t35EefPPoG6WNP7pNDe74W64+ktpuTOKKyvvH43tjxeqKHra03Dh+J/a6PyVJGkmiix7BxN+OW
9T1a2W30qWi8fPMRf03H+7Wb13JP4C4yRkjFcmIYZvuS6q6vAfsvXojtT6JjlLUfbbG/svWx9b3H
ntxn3Z5k2HpFysh53yaljWb+mfXQ10uzfWb+ZM3XccdLn2diKUfXUe8fBX1uvnbzmkiGJ+SY8Rlm
PC5bUmz1vry5MYzQ42Uqmvta0rk9bsPcf9nObd2nOsdc5enY2I7Tx8iIYqjHBl23rG30GS+Tjzz1
1caIeXyRv9PKEFq8ko7V+7Lmu482lm2YtpV1DpVF1yVLG00++tGWqz7/7hiGrR9t7dNjvi1+Zvts
+yNZ/zY0+Yh/pGhZtn4cdsyRwMdoANW3tf2q3jQRvDyBSXYmDkX0JC3T7Oxs/2fbt2Enabfb0m63
ZXFxUVqtVn970ufZzM3NSaPRGJjc1263Y+0w6+pbvV5PnLwYtdOMUd52DqOuvsE6qpdr4ppru2++
66UnqS4uLg7Ef3l5uZ9neqJhkhDyS+t2u9aJfbqOWb61vwjf/QiYqpJftvFEjw+u8T7Ua0dVFIm9
T/rJLa1Wa2CMbrfbQ93rFGmjvjbqOonluuHis40+6xWqqpzbul4RXTdzcUHEZ074pnNs2PvCMvrR
9feS6+k1WWQ9j7LeFw5771tmTtjaqOvjKqvseqXFyVVWqPc5WeouGf8doMzYAwAAIJulG+/Jux++
L9e37xT+j+g+ywrBsSeTJx2euX1LXrx8MfaNqnrySFnMekUTjXTdlm68158wrCcjJXlu91556Ymn
B44/c/uWvPvh+/3f9VMt9BOeXrt5bSAHzty+1a+TDBGvM7dv9eNepJxhjaKNPo0zXjcOHxl4mXn7
0hNPD+yPXjrOIdN1DT0nhmGe90l1H/WTMI6pb66OxmjXZDvXdkw2c4LjJLq+/WjxckRfr5PO27Lo
eL/xzPPyRs5vsR/mW/VNrf0HBq4veV62utpiGx2nn3ow6jEnpHjpfTc83wO0jKcbyJjincTH/Zft
3t2WfzY6NnqMkDE9eUb3rc97piLx8qnMNkqBv9NC5TteOg4hjdGhC+UcCpW+Jwj17w79b1YR/e9W
5mIa3/R1vcg9gN5fpCwpYczRJm2MBoCyeFvAdPXq1djveoJVxJzUV2TinZ6Q5fo8F9ekqVHREwL1
xKzIuXPnYr/nbWdRul9DUaReemKcnkRoarfbUqvVEo+xGXd+aTqPTFknHZahSD8CaULNL9d4kqW+
Vbl2hKpI7H0yJ3FvbGwM3NNE2u127HqSpR+HbaMu21WOqOuGi6826t+L1itUVTm3XfUSS900Xznh
m8/7wqr0o/5807D3hcPc+5aZE64+ShsLJeB6acO8pwy6Hq44ZPl3gDJjDwAAgOyWbrw3sABmWD7L
GrdDe74W+93Vpu9/EJ+coie3+KYnXejJEaYzt2/J/osXEo+xGWbxgTkJ490P33dO2jlz+1as/GHj
pcsftpw8Rt1Gn3RdQ6jTJKhyTmR1Zevj2O+uupuTyYpOpB+Griemi9n/elKgee7pa3vVua7v4z4f
lm68N9S9hDmOhEq37dee2je2JyFVIV5lMPtglPEehr4vcF1DNVeb0s5tXb6rHLEsNCxbmfdMrnam
xcu3MtsYGWZsDVUZ8QppjK4SV0xGfQ5VRahxcf2blVj+3WoalTHmaJM0RgNAWbwtYGqrb47WE/jE
MkHQNanPpV6v919FuSZNLS8vS61WS5yc6EOWb6AWy0ItW1zLtLS0JM1m01vcfSlSr6yxL2Lc+aXp
PDJlnXRYhiL9CKSpen7Z6px1/NLn/KivHVVni71P5iRuPQZr5vXEZz/qNuYpO63O4rGN+vckaZ8T
skk8t3WO+coJ37LGPousZY27H/Xnm3Tf6H50GebeN4ScsLUv1Hppodzn+Px3gBBiDwAAALhkfZqI
nvRQ9uTorPUqwrX4YOnGe7L/4gXroihzEm3ahB6z/DzxOvbkvv5rHEbRRp/GHa9pULWcGMYZ9Y3R
trrrhZVJk+fK8sYzz0tr/wFyHlb6/DRzpKxraUjGcU68uPP0mXd3ns55fYKeeGFOAn5u997YtYAJ
wqPx4uWL8u6H7w/cj4ZglPdf+jNs12gXPS6WLYR7Jh0v30bRxmH+TgtVWfFijC5P2edQVUzC3x1V
rXcRZY05pkkaowGgLN4WMImaZGT7xu6sk/oizWZTVldXpdPpSKfTkaWlpf6r0+now3NxTZoaB9eE
v3HQE9Bkpy/NuEcT5UaprHqVFfuQ8itN0iRW38rqR0CmML/KGr8wWlFuul62+6myZblHy8NXG33X
K1Shnttp8c9zP+ErJ3zzGXufZY1Snn40Fb33DTUnQqpXyPc5vv8dQAKLPQAAAKC5JiGMW1n1Krr4
4I1nnpcbh484Xy898bR+i1Vr/wE5P3+4/743nnm+/7px+Ig+fKR8tdGnkOIVTc4xX+YigXc/fH9g
f/Qqmn/jEmJO+GJO8LK1YxQLKzW9sEp26mbmfDSxEJPPXBgTTU6M+t68Vka5mmciIoZ35vat/tM5
Rz1Z05woOswrabHVmdu35LWb1/TmxG/zD53PeOl9+0u6B8hzbJlCuv8yjep6PIxJvmeKlNXGUPLe
N5/xmsQxGuNVhb870sb8UeW+vq4XuQfQ+4uUpfkcc0xpnwsA8LyASU9405OnzG9UTpvUt7q6Ko1G
I/aeaZV1kpcvy8vL0mq1nJ8bTZSLJsmNSqj1Qj70I8pEfj3iigGAagv13Nb3/frvAsSF2o8IW6j3
Ofp81+NBnn8HAAAAACZB2mQR5Hd+/rC89MTTsW/JhRvxQpn0hDc9Oc/Mu7IWVtos3XhPXrt5zTkG
RxMLo0mFmC7mIqUoh21j5ChzFslc53KI9LgoY5i0WqV4TSruv4AwhTBGY7JU/e8O/feb7RwBAGAU
vC5gEpHYt0IfPHiw/7OexJT0Ld2rq6uxSU7dble63a5sbGzEXihPu92WxcVFabVa0mq1nPFuNBoj
nxwXYr2QD/2IMpFfqBLb/Y3rZT7hokqmoY2I3/enISeghZoTIdYr1Pscsx7D/juAKcTYAwAAABjO
9e078u6H72d6mU92iZyfPxybCHp9+461zHGy1cf1srXRpyrEaxrYYu56lZ0TZTBzyFwYoifDjXpy
6Jnbt+TFyxfltZvX5LWb15y5/tITTwc5mRDlq+L5Nq3MxWTDfvP9qOixT3aexDNKVYrXJOL+a3i2
OLleVR3Dp6GNPvmOVwhjNCZPlf/u4Omjcb7HHABAdt4XMJmThxqNRv9ncxKT6xujI+bipVarJYuL
i7K4uCjLy8ux16SYnZ3Vm2LG+RSqdrst7XZblpeXpVarWSfJNRqNgYlpZfNVLzNH8ZD+BvUy+epH
wGbS8yvkaweyO3fu3MD9jes1qvHZd+74aqPveoWqque2We+0e31fOeGbz/vCqvajNqr4h5oTodZL
ArzP8fHvAKaQYw8AAAB84/Hkb1Uf17euhzpZ9fsf3JKlG+9letm++deM52s3r8mLly/Ki5cvDrx3
nIq20acqxGsahJQTZTAnbpljjzkZzvWN5KNw5vYtOXP7YR/sv3jBOqnwpSeetk5oxWQw8+/Yk/v6
1+7ofIv2m/uEBU5B0X0R8vn6xjPP600jH2OqFK9JFPr917j+Psli0u+ZZEra6JPveIUwRmNyVfHv
DvPed5x/s4XC95gDAMjO+wImPXkomjBlTuJbXFw0jogzvyW62+0OlDcpNjc3+z8nTWD09a3Zviau
RZPkWq2W3jVWeeplxl48xiZkSW30lWM+5OlHIK9JyK9RXztQDnOC+dGjR2P7xkU/vSLpupHlSTu+
2ui7XqGahHPbrLe+1xKPOeGbrmtSjqWpSj8mtXGUdQs1J0KtV5px3+fov9vz/juAVDj2AAAAmA7m
t9onTQAc9TfrmvWSgCarmhN2fu2p4etkxvP69p2gJov4aqNPIcdrGoSYE2XRuRWNPeZkuBcvXzSO
GK9oUuFrN6/pXZhQ+vqoufbr3Mb46L6wTUAPwfn5w/2fo6fuREZZ56rEaxKFev+VZ1HbqJ/GMQ33
TNPQRp/KilcoYzSmRxX+7jD/Tct1T5wm6ZpSBWWNOQCAfLwvYBI18SiaTBpN4svzrctJRjm5rgx6
Qq6rPfrb25dTnjzlmrzLBLBHdOyPHj2aOJFzEiT1f54nJpgTc30+pcCn1dVVWV1ddZ5TqEY/wk6P
X648z3vtICfyKRovsx/n5uZkdXU1tn8c9MRz1/2EWPLLxlcbfderLD5zQjye26Oi+9dWL1854ZuO
fZH7Ql1WqP3o676wqCrkREj1qoKi/w5A7AEAABAyPQHQtVBJP51pqeRvWtf1+rWn9gUxkcSs13O7
98YmjpXB1R9JzIk6wzy9atRt9GmYeE2jpMWKNlXOiWGYk76iic9RzPgm70FFx5wqCLmNz+3ea83L
UU/aN4Ucr1DoJxicnz8cxH1OpLX/QOxaET11xzTKa0Ho8Zp2o77/0gupksY7/TdM2apwz1R0jK5C
G30KMV6+x+iibUQYpr0fdc6n/ZuV69pR9UU/ZYw5ZTo/f1jOzx8e+b0EAJStlAVM5sSj2dnZ2OQ9
/S3nmp60ZJtA2Gw2pdFoZJoEFap2ux2rf6PRGJjkuLq6Gvv2dld7zYlirnLyaDabUq/XrbGXnf16
4qOeYFwGX/Vqt9uxmM3NzcnS0lK/fK1erw/EtGrm5uasbdA5luf8lJ33u2Lm4qsfbaL2zM3NSaPR
cH7GtPPRj6EqM79C4PPaYZrknChD0Xjpfpybm5NOp+PMXdd23/T9hO0zdX65+Gyjz3qVxXdO+Dq3
y9ZsNgfq5Xr6i25jkZzwyed9oW5jqP3o676wKB2vkHIixHpJBe5zivw7gIwg9s1mUzqdTv+V570A
AADTorX/gNw4fKT/KjLh0WdZIThz+1Zs4vNLTzw9MHHg/Pzh2AQp20Rp387cvhWbrPrc7r3yxjPP
S2v/AWvMjz25b6DeZdDxem733n4euOpl264nldiOae0/IC898XTueOvFX65JvrZt4rGNPpUZr2mR
JS9c51fZORHauGrG6huP742NLcN+k3cRUb+44tLaf2Bgop2e3F2mLLklCWNOFVSpjXq8lBFdt01V
ite46Em1afc5rf0H+q+yHXtyX2zis3k/Zj51wXU9LkPI8ZpkejxxxXoc919mXr70xNPWuum/YUah
7HsmH4qO0VVoo0+hxetYCWN00TYiDD76MfS/O2xa+w8MjPeup0Tpa4e+Twh9sU8WvsecMkX99tzu
vc5rOQBU1Uxv5vWe3pjHnt1v6U0iItLpdPQmERGp1Wp60wDbe6OJTHqC5NLSknHUw+MWFxdFHOW4
ZKlXc2fh1DBardbA5LF6vT5QfxezXVqWcjY2NmR2dnZgcq+uV5aytKS6+VJGvfQkzTQ6R0LOL13W
xsZG/3fbuRRtT4pXJGvcNjY2Bp4oUEY/mnSf5HlviHQ/ZqXzwaZIP/o0bBvF0s6y82tYuo2u8UDX
X7cvoo9Lkqd9k5gTuqyisTcVjZf+zDSuOvlsoz4moq8b5jVFHGVJQnkuecsZtl5lGWVO5Dm3i9D5
pRcWaK62RfK0UUbch1n7L5L1XEvi6kcz7uYxZtlmrF3HR3Q/DntfqO+zkrjio+WJlyTkhG6j6/P1
57nK08elcZXjs176mCxs/SiWeuVhq5vJlSeutmt525lWH5Nud9Y6AQAAhMB1nyUisr6+LmtrayIi
srCwICsrK/qQmKT7oGhiXWT/xQux/Xn4LMsns17Xt+8MfANzkmNP7pM3nnleb7bKW3ZReiJKGt0f
Nw4fif2eRL/XJU+8ZGfyjG1Sj61u0UQTPflGf15aP2SN27sfvj8wKVg8ttGnMuPlkxl7V3xd9PiS
R5Y+sMVQc9W5zJzQ7c56LpbJFassddPtyUPHLW/cJSHffdZLKzrm+DINbbTlhPmZtv1VywldL9d5
p9uaVqfQ6Ppn5YqHL2bf2XJH9+2o4h5qvExF7gFCZbseDnv/5fPc1sdEdN3e/fD92GfayvLNVTcX
V518xkvT57GLK4/1Z6ax1cmWWy6uto9KCPGKlDVG6/e5uNroi877PHRbdVmuPNL9o8vxTdcrj7S6
FelHHYcsbDnom46XXpyj2doWydLGdz98X77x+MNFNaY8sU+qQxZFy8rSTpOtbaMYo/VnjCKfAIRn
a/tVvWkilPIEJlHflh8xJz0maVm+uX1u56kqEdsxYpl8F7J2u+1sh6nb7cq5c+f05r60crrdrnMy
qf6G7oMHD8Z+T+OaFOdbGfVaXFy05qlLvcLf0K2fbKbPk7QcM507dy7zuayV0Y8mXa8s3/Q+rYr0
Y6jKzq9QpI35kTzntUxoTpSpaLza7bbUarXMZeTN72G4csu8biTdU2i+2ui7XmXxkRO2dmp5z22f
opjb7iNarVZqH/jKiTL4ui+sQj/6vC8sKtScCLFeeT9jXPc5tvMoaxxlhLHPWj4AAMA0Myc7FOWz
rHE6c/uWvOb4hlrT9e078v0P3BM2yvDi5YvyrvEtuWmOjeAbW8/cviX7L17I3P+H9nxNbxLZmSSi
Pbfz7bMR2zHimKhj+v4H8W/dzctXG32yxcJXvKaFKz6mbzxuj9WociJr+WWzjTvjqFveOI5r0lfR
MacKqtJGPflQxvTksKrEa5yicdU23oyLnvhsu+/TY4x+EkNZQozXNLDdO4Rw/+X6+8Ws2/XtO7kn
ffswqnumIoqO0VVoo0+hxKvMMbpoGxGGIv3oyjuXcf3dEY3z+hpzffuOvHbzWuK477p2RJKuG1nP
pRD4GnPKpus3jr9ZAKAspS1gMifGRbIuJogm/unJT91uV7rdrtRqtczfshy6aIKWbqvstHdjY0MW
FxdT22uLmfn+rK5evZo6mSsqt1ar5Sq7iLLqtby83I+bq/wo79L6IGS2/JCcORZpt9uyuLhoLS/S
7XZldnZWby6tHyPmZNtuAJPZQ1akH0NVdn6FxNe1wzSJOVEmX/Eyy7Dlb3QNst1XlSHL9SIvH20s
o16++ciJMs7tIpLG1ajfhqmTj5wog6/7wtD6UctyPo26bqHmREj1SjofI1EfjvM+xxaLrP8OYCoj
9knjLwAAAB5yTcgfhs+yQpI0KfT69h1598P35cXLF60To8u2dOM9ee3mNXn3w/cHJjhErm/fkevb
d0ZavxcvX0ysV1SnK1sf610ixuQZHfPoffsvXhi6PWdu34rVz+b69p3UfC7aRp/KjNe0cMVQjDim
TRoqIyfS8nAcbPVPi00Zrmx9bI2z6frOGL3/4oWxTCIUj2NOyEJpo22cs+XruIUSrypIu8+JxtXo
PC/LsSf3xSYDv/vh+9Z8E7Vg5bnde6W1/0Bsf5lCide0cN07RHEe5/1XUt3e3fnbZZzKuGfyxdcY
HXIbfQohXmWP0b7aiPEq0o+h/t2RVK/onInGfNc5YbJdO8wyJkmRMWcUzEWY1xMWjwFAFc30Zl7v
6Y157Nn9lt6EQNXr9ZFPRsR4NJtNaTQa/d9rtVpsPwAAAKYD94XAQ6urq/0njm1sbPBlBwAAoFI6
nY7e1Le+vi5ra2siIrKwsCArKyv6kJikvwnMbyp+98P3C/1HcZ9lAQAYVwEAAAAAYTj25L5Mi6EA
AMVtbb+qN02E0p7AhPCweAkAAAAAMI2ixUsAAABwM7+puCifZQEAGFcBAAAAAGFg8RIAoCgWMAEA
AAAAgKnB05cAAADS+Xyyh8+yAACMqwAAAAAAAACqiwVMAAAAAABgYtXrdb0JAAAAyrEn9+lNQ/NZ
FgCAcRUAAAAAAADA5GABEwAAAAAAmArdbldvAgAAgHJ9+47eNDSfZQEAGFcBAAAAAAAAVBsLmAAA
AAAAwMQ6ePCg3gQAADAxjh8/Lp1ORzqdjqysrOjdmR3a8zW9aWg+ywIAMK4CAAAAAAAAmBwsYAIA
AAAAABPr6tWr0u12pdvtyubmpt4NAAAAEbmy9bFc374j17fvyI8+KfZ0D59lAQAYVwEAAAAAAABM
jpnezOs9vTGPPbvf0psAAAAAAAAAAADgQafT0ZuG9uyzz+pNQ3vqqaf0JgAAAAAAAAAAAHiwtf2q
3jQRWMAEAAAAAAAAAAAQKN8LmHwsPPrggw+8lAMAAAAAAAAAAIBBk7qAaZfeAAAAAAAAAAAAAAAA
AAAAAAAAAAC+sIAJAAAAAAAAAACggtbX16VWq0mtVpOTJ0/q3QAAAAAAAAAAAEAwWMAEAAAAAAAA
AAAAAAAAAAAAAAAAoDQsYAIAAAAAoKKazaY0m02p1+t611iFWi8AAAAAAAAAAAAAAAAA48ECJgAA
AAAAKqjZbEqj0ZBGoyFLS0vBLBYKtV4AAAAAAAAAAAAAAAAAxsfbAqZmsymdTkc6nY6srq7q3YBT
vV7v506n02FyGwAMqdlsyurqamxMrdrYat5PdDodvRsK8QIw6fhbIVmj0Yj9fvDgwdjv4xJqvQAA
AAAAAAAAAAAAAACMj7cFTFVgTupuNpt699iEWi9Am4ZcnYY2YvLU63VZXV2VRqMhc3NzerfICCcO
cw5hGpH3k4F+xDQi7wEAAAAAAAAAAAAAAACMylQtYAIAYNLU63VZWlpyLlyKXL16VW8CAAAV12q1
+j93u11ZXl6O7R+XUOsFAAAAAAAAAAAAAAAAYHxYwAQAQIUdPXo09nu325VarRZ7tVotabfbseMA
AED1tdttabVa0mq1ZHFxUe8em1DrBQAAAAAAAAAAAAAAAGB8WMAEAECFmU9e6na71knCLF4CAGBy
tdvtIK/1odYLAAAAAAAAAAAAAAAAwHiwgAkAgIpqNpux322LlwAAAAAAAAAAAAAAAAAAAABg3GZ6
M6/39MY89ux+S2RnEnWj0RAxngBRr9fl6NGjsadDbGxsyNWrVxO/ibnT6fR/brVazmPN4zY2NmR5
edm5P69araY3eVN2vZrNpszOzg48lePcuXPOWJbNVqeoz+r1uiwtLfW3J/V5xFZet9uVzc3NgTww
mXka5aKZo9Fn69y15ZeNq15ZYp/1HMpanimql6intZhscfeZq2b7TGZsbfFLir3OnUiUC2ljjXhu
o42tTVlytWzD5oSNq41peTqu8zGU2Ot6pcXLZnV1tV+O6+lLZfN9DumxolarDeSADBkzV+zHnRNR
+8RyPqbdN/mOl49xVdcpMu7x3mbY2PvOe80Wnyy5WkbsyzKK61BavEbVj+KhjUX5OofMHPN5v2rr
wyJ/KwzL9Xeord0R81qszzXf56OrTFNafMrIex/1Ekecy84vSeh3AACAkCTdx62vr8va2pqIiCws
LMjKyoo+JObZZ5+Vp556Sm/O7YMPPvBSDgAAAAAAAAAAAAZtbb+qN02E0p7AFE0005P1Go2GLC0t
yerqamw7iqvX69LpdKTRaAzEfW5urh/3er0e21empDo1Go3ceZBU3tzcnDQaDel0OpnbqCfDLS0t
WXO30WgklplWr2Fib6uHqPLSrK6uxuqlyzJFE7jHZXV11Rq/YfIkyoWscSpDWk7kzVVffOZEWhvz
5v2ozsdxxT6tXnnjNS1sOSA5x8K02I8rJ2TnnIzap+smxn1TUz1ty8VHvGyiOBUpIxLKeO879j6U
nas+Yz+sUV6HisZrWD7bWLYi55B4GHOS+nCUeRnpdrt60wBdz2GFcD6GbtLyCwAAAAAAAAAAAAAA
AJh2pS1gMifjdbvdgclgc3NzTBjyKJrclSaa7DUqts8y82Fubk4OHjyoD7HK2kYxFj4kaRhPfjEt
LS1Jt9sd2O6qZ9Z65Yn93Nxc6oTWubm5xDauGt8GH7LZ2VlpNpv9urrGC1tbXX1iGsdYkzUnJGOu
+uIzJ7K2MWvej/p8lBHHPmu9ssbLZnNzU2+aCPp+QnOND5GssZcR54TkPCcbjUamhTRF4+U6t0zD
jqshjfdlxL6oMnO1SOx9yhP3NGXGqwifbfTJ9zkknu5XbX047N8KPpjXUvNzoydppbl69areNCCU
8zF0o8qvUYzvAAAAAAAAAAAAAAAAAB6a6c283tMb89iz+y0REWk2m/0J6JGNjQ1ZXl6ObdOT+lqt
lrTb7dgxnU4ncX/EPM72WZr52VmOHxUf9dJxNcup1+sDTzYZ9nPySKqT6xhJ6HOzv8VSnp7IqveL
JU9rtZqIem+325XFxcWB483tJt2GYWOv6yaWz8zSxogtXlevXrXGtl6vW7drPnJVLPHe3NyU2dnZ
odtqiiYxZo275qONttjnzdUy2Oo1bE74yHud8z7OR1sbQ4i9j3jZ+MhX34rWSeeFWMrJ049VyYlo
LDTz4uDBg7FY2PLed7xsioyr+nwOYbz3FXtT0byXEnK1zNgPy9bGYa9DtrKKxEtK7Mdh21i2Yc4h
25ijz4+ssdfnou04fYwk/K3gg9k+sz66HmYdzD6P7mW0Ms9H/b688fGR9zbD1GvS8wsAAKAI/beG
aX19XdbW1kREZGFhQVZWVvQhMc8++6w89dRTenNuH3zwgZdyAAAAAAAAAAAAMGhr+1W9aSKU9gQm
2wQhEZHFxcX+Nx6L41uRkU+9Xk+cnNVutwfirieGlUFPDnblQxb6m7FbrdZAee12W1qtVv/3tDaa
8TDleYpJmbHXk/Vkp7wN40k0rrKiCamRqF6uyXiu7aMwNzcnjUYjta1Zv/m+3W73454nH3wpI1d9
8JkTZeS9j/Mx5Nj7iFen0xl4meU2Go2B/dFLx6ZKbNcPPT7Y4iUB54RYrpGLi4sDebG8vNyvm+2a
YFMkXi6+xtVQxvuyYl9E2bnqO/bD8HkdKjtew/LZxlEY9hwy2c4PnVeu8vS5qPtQcvytUDZzgU9R
IZyPVTEt+QUAAAAAAAAAAAAAAABMi9IWMNkmCEXOnTunN6GAgwcPxn53xV7HXU+y9EmXnTQ5LMtE
QHMC38bGhnPCZ7vdji0C0PXwrczYu2J29epVvSnVMO8ZJdfilaJ0nmSJe1Gh5qpWJCfKzPsiQo19
qPGqiiJjYag5oRdfuNooO3Wr1WqJx5hcx2WJVxY6hnljNe7xvszYFzGKXC0r9sMqkpOjiJcPRdo4
ajqGWWPlOj/S2q7Ld5UjGf9W8MWst15AZOaSvrbnFdr5GCpXXlQ1vwAAAAAAAAAAAAAAAIBpV9oC
pjz0BCPkY06uS5oMpycmFp14lyRP2WkT0ER9g3ba8eYTW/LUYxghxD7L+bO0tCTNZlPq9Xqm40fN
9ZSd5eVlqdVquSaQR20cVztDzVWtSE6EkPc2ocY+1HhNGlseVz0nymSLl4vPcXXc430IsbcZRa76
jL0PRa5Do4iXD0XaOArDnEPD0p+Rpy/S+niUdF3MduUZU0I7H6tuUvILAAAAAAAAAAAAAAAAmHSl
LGBKm7ylJ2nDH9dkuHFKy4e8lpaWpNPpOF+NRkO/ZSRCin273R74NvFGoyFLS0v9+EUTakPgeiJN
Fs1mU1ZXV/v9H7Uxauc4hZSrZeVESHlvCin2piLxiiY0my9zfN3Y2BjYH72KnGOTYhJzoixljqtF
ctF3vUKMvZSYq0Vi70NZ16Gy4jWMstroi+9zyBfffysUYf6dGi2Ui/rLHDOixZB5FsqYxn0+TpOQ
8gsAAAAAAAAAAAAAAACYdqUsYEqjJ+2xoGl0mMA1PqOO/fLysrRaLefnRhNqo8m0VbS6uiqNRiP2
JAa4jSMnXJ8FO+KFcQt1XA21XshnHNehUQu1jZxDwzMXKUV/t9riGOqiSAAAAAAAAAAAAAAAAAAI
xVgWMA37TdWA7Ezw39jYyPS6evWqfvtUabfbsri4KK1WS1qt1sBTASKNRmOkk2h9WF1djU0e7Xa7
1twYJ1t9XK9R5eok54QpxNhjvMiJdKGOq6HWqyy2trleVcxV39ehEOPlu41FTds5VJZR5Q8AAAAA
AAAAAAAAAAAATKqxLGCanZ3t/+z6dnIMx4ytje3bwsvm+zPPnTsny8vLmV6jfLpXiLGPtNttabfb
sry8LLVazTqZttFoDDwdLWRmPFutliwuLsri4uJADoxTqLkqHnMi1LwPNfahxmsahJoTjUZDbxqb
UMfVsuoVUuxNoeaqb76uQyHHy1cbiyrrHPIltGuf+fdpvV7vX7uj/In2m/uEBU7BCi2/AAAAAAAA
AAAAAAAAgGk2lgVM5iSizc3N2L6syp7oVyVmDJMmaI3iG94jegJfUn9leSKXOdnz6NGjsX3jFGLs
s4gm07ZaLb2rEsx4drvdkU9IThJqrqbJkxOh5n2osQ81XtOgCjkhKdfIUQl1XPVdrxBjLwHn6ijl
uQ5VNV552uiL73PIF99/K/ikxwnNtT+U2CLs/AIAAAAAAAAAAAAAAACm2cgXMK2ursZ+T/u2b9eE
omEmK5qTzUL61v2i9dITtFyT4PWTP9JiX4SewOfqR7HUy8Zs49zc3EAejUuIsS9T0VwdNVd/JCna
xlBz1adQ8z7U2Icar7IUPYd8qkpOHD16NHFydUhc+TtuWetVVuyL5n2ouRqqsuJVtB+rLOs55Ivv
vxXKNDc3Z31qcFKdq2QS875K+QUAAAAAAAAAAAAAAABMk5EtYGo2m7K6uhp7+oTr28fNb1VvNBoD
E+qGnaSoJ62urq5aJ63atpWpaL3a7XZsUp0rZmbsbZPwfNP9aKu/rpeLbuPc3Jx0Oh2p1+vWcl3b
fdP1CiX2snPOJcWh2WwOLATUk/20ornqi564bPu8ZrMpjUYjd7yLtlHnRCi5Kh5zQrcxlLzX9Qol
9rpeocSrLEXPIZ907EPKCfMaOTc3J0tLS/1zVKvX6wM541uZ42oRvutVVuyL5n2ouepbWdchX/Eq
2o/isY2++D6HfPL5t8Io6ZgK1+0gVTW/AAAAAAAAAAAAAAAAgEk205t5vac35rFn91sixsS3iJ5U
qG1sbDifLlGv12VpaUlvjtnY2JDZ2dmBslutVuIkwKyTlJLqV4ai9coSs0i325XFxUW92TtXnaLc
iNq7sbERyx1XH7rKc7GVY+apGQezbDPGruNNeerlKkMs51CtVovtj+jPs7VTH5NFUt1Mw+Zqp9OJ
7U/iarvJVp7OLdmJj45FWluHbWMkb/xtfehb3jpJSpzylOcqx3V+jep8lBHFXnLWy9U2GzNXXfk4
DkXOIZ9joViOS+MqpwxZ4xSxxcJnvHyNq7ZyXFz1NdnKG6ZeJh+x17KWact7sfRRmqx96JKlTT7l
bZ8k9J8MUZ4tXjZF+jFvnSSljb7Y8mLYc8jnmKOPiei6Zf1bwRdbvcz+tu3XcRJH3F1ccTTp2OeR
FrMiee+zXrosV1x0H+hybMdEdH51u92B80CXBQAAEIKk+8v19XVZW1sTEZGFhQVZWVnRh8Q8++yz
8tRTT+nNuX3wwQdeygEAAAAAAAAAAMCgre1X9aaJUNoTmObm5vovU7fblVarNTDxydRut6XleDqT
7JTher/+RnPt3Llz/UlLISlar7SYRbrdrpw7d05vLoWrTmZeJPWl1m63pVarZY7TwYMH9aZSuNqp
jTL2edtum3TpUjRXfbHFXI85tmPEsajSVLSNIeZq3s9Iy4kQ814Cjb0EHK+yFD2HfAo1J0REFhcX
ZcN4QkSauuXpET7ZctTXuFqE7TOL1quM2BfN+5Bz1Ye89c1yHSojXkX6MetnRNLa6Ivt/Ch6Dvng
ujYO+7fCqNgWt2xubupNlVIk70OVNb/0fZetfwEAAAAAAAAAAAAAAAD44W0B09WrV52TnrrdrnS7
XdnY2JDFxcVMk4KiCUfm5FKzjGG1221ZXFwcKNvU7XZldnZWby6Vj3pFEzlt788bf19s/SgF+9KM
ky3nony7evWq3lWa0GKfdD5GonrVarVc/eAjV31Iyq1utyu1Wm3oePtqY0i5WkZOhJb3ppBiHwk5
Xr75Ood8CjEnRESWl5cT6yVG3crOjTLH1SLKqpfv2PvK+1BztagyrkNSQryK9GNZbSyqrHPIh6S6
RdfFUbPFImv+VFWRvA9ZiPkFAAAAAAAAAAAAAAAATLOZ3szrPb0xjz2739KbRqZer1snmAEAAAAA
ACRpNpvSaDT6v9dqtdh+AACAUHQ6Hb2pb319XdbW1kREZGFhQVZWVvQhMc8++6w89dRTenNuH3zw
gZdyAAAAAAAAAAAAMGhr+1W9aSJ4ewLTOLB4CQAAAAAADMN8qlTaE9QAAAAAAAAAAAAAAAAAFFPp
BUwAAAAAAAB51et1mZub6/++ubkZ2w8AAAAAAAAAAAAAAADALxYwAQAAAACAiVav16Ver0uz2ZTV
1VVZWlrq7+t2u7K8vBw7HgAAAAAAAAAAAAAAAIBfLGACAAAAAAATo16vS6fTib2WlpZkaWlJGo1G
7MlLIiLnzp2L/Q4AAAAAAAAAAAAAAADAPxYwAQAAAACAqdPtdqXVakm73da7AAAAKuP48eP9Rdsr
Kyt6NwAAAAAAAAAAABCMmd7M6z29MY89u9/SmwAAAAAAAMaiXq/L0tJSbFu32+3/vLm5KcvLy7H9
AAAAIet0OnrT0J599lm9aWhPPfWU3gQAAAAAAAAAAAAPtrZf1ZsmAguYAAAAAAAAAAAAAuVzAVOt
VtObAAAAAAAAAAAAEJhJXcC0S28AAAAAAAAAAAAAAAAAAAAAAAAAAF9YwAQAAAAAAAAAAAAAAAAA
AAAAAACgNCxgAgAAAAAAAAAAqKD19XWp1WpSq9Xk5MmTejcAAAAAAAAAAAAQDBYwAQAAAAAAAAAA
AAAAAAAAAAAAACgNC5gAAAAAYAo1m01pNptSr9f1LgAAAAAAAAAAAAAAAAAAvGIBEwAAAABMmWaz
KY1GQxqNhiwtLbGICQAAAAAAAAAAAAAAAABQKhYwYeo0m03pdDr9FwAAiF8fV1dX9e5gNZtNWV1d
jV3boxcLMorhnmmyNRqN2O8HDx6M/Q7U63XGVAAAAAAAAAAAAAAAAADesIBpSOZE2WazqXejRNMQ
+5DaqCcv53kxyREoT0jjxDSo6uKeSVav12V1dVUajYbMzc3p3SIsyGCcQGWQq9DICQAAAAAAAAAA
AAAAAGDysIAJAAAAlVKv12Vpacm5cCly9epVvQnAjlar1f+52+3K8vJybD8AAAAAAAAAAAAAAAAA
AD6xgAkAAACVcvTo0djv3W5XarVa7NVqtaTdbseOA/BIu92WVqslrVZLFhcX9W4AAAAAAAAAAAAA
AAAAALxiAROAzGwTxJNeTBwHAJTBfPJSt9u1Lr7gGgSka7fbnCsAAAAAAAAAAAAAAAAAgJFgARMA
AAAqo9lsxn63LV4CAAAAAAAAAAAAAAAAAABAWGZ6M6/39MY89ux+S28S2ZlcOjs7K6K+Jd/UarVi
3/hdr9dlaWnJud+m2WxKo9Ho/16r1WL7tWHqJSLS6XRiv+eRVicx6qWfKLC5uSnLy8uxY01m+zc2
NuTq1aty9OjRfjlRW+r1emz7xsZGYrmRYePlk+/Y23JGx0d24n/u3LnUtum8jUT9d/Xq1dQyfLfR
JzNerqdcZFFGrvqIvU1UB7HkfVT3rOWGcA7ZFKmXma+uY0Qd5+pHV36trq4OnI95xsOiZWmuMTpt
jNDjTcSMh61sW7zKHieK5MQ0cOWXD7YcyJJfNkXKytNG87xKO9Y3n589bLx8nts++R4ndDuL3jOZ
bPEZZnz2zedYOOz9hI57pEh+uco0ZWmXa5zIe631nas++bzP0Xzmly0H0uJuYysnao++185at2GU
nRO2dg4zdgEAAIxL0v3S+vq6rK2tiYjIwsKCrKys6ENistw/AQAAAAAAAAAAYLy2tl/VmyaC9ycw
ra6uSqfTkUajIXNzc86JWSLSn9AX0ROHDh48GPvdJpoAJjsTkFyK1KtM9Xo9Vi/T3NycNBoN6XQ6
Uq/XY/tc9ITSpaWl/sQzc3uj0UgsM9R4lcEWH9mJ/9LSkqyursa2ZxX1X5EyJpmvXLUpEvvV1dV+
HXROyE59lpaWpKmeAKKFeg6FWq9INCbqekV9mqc/fZSVNkZHOZY3RyOrq6vWsrPWz4fQc2KS+cwv
n2VlYX7G5uZmbF8VlB2vEM7tMtiu05Lznikt9o2c976++B4Lfd1P2ISUXz6utdPAZ375OoeSypmk
vktqpzl2pcULAAAAAAAAAAAAAAAAQHFeFzCtqm/eHkar1er/3Ej5lnDJOIHWR73KEE0CzSJa3JEk
itfGxkZs+9LSknS73YHtrgViocarLOYkQdsiuLm5ucTYu+Jompubm5hJgD74ylXXdlOe2OfJ/Uaj
4Zx0nKecUQq1XiZ9PupzMk9/Fi0r6xgdTX7NY3Z2VprNZr8/XPVLGnt8qEJOTCqf+eWzrKpx3fsl
KTNeoZzbZdHjqpbWtqyxl4z3vr74HgvzlJd0P6GFmF86J2z1SbrWToM8+ZDG5zlkK8fsw7m5uUz3
2iHLGq9hxnsAAAAAAAAAAAAAAAAA+c30Zl7v6Y157Nn9Vv/nTqcT27exsSFXr14deLKS7Ewmsm0X
VU6r1XIe12w2Y4ucarVabH/EV71M5kS0jY0NWV5e1oekstXLLEdPuNL7JSEG5nu73a4sLi4OHG9u
N9nqVTRePhWNvY6ZWMrJEvsk0WRB/ZShrOUUbaNPWXImCx13H7lqM2zs9eTSbrcrm5ub/ffU63U5
ePBgrA2ueoV6DvmqV9Yx2jzOFX+dF+I4VveP7XN9liWW48yy6vV67hzTub65uSmzs7OxHMoz9vgY
J3zlxDQYdkxy8ZlfvsrK2kZ9rrnuv8pSNPd9xSvi+9z2qWisdF+LpZw8bbONOcOW5ZOtXsOOhTq/
itxPSMn5pd/nuh6asuSEWOKQVnbRXPXJ532OeM4vW1nDnEO6f2zH6WMkJR6++cgJ3QaznGHGewAA
gHHS94Km9fV1WVtbExGRhYUFWVlZ0YfEjPrveAAAAAAAAAAAAOS3tf2q3jQRvD2Bqa6+3Tma/OOa
4OTaLjvvjWT91ufom6I1n/XySX/TeqvVGpgs1W63cz2RyhWDPE8nCDVeZep2u9bYm3mYFnut3W5L
u92WxcXFXH0Yurm5Oel0Ookvnds2PnLVZdjY68nGi4uLsbxot9uyvLzcL9M12TjUcyjUemm281FE
BmKd5dpQpKx6vZ44oTXKMTOX03LMNDc3J41GY6AueuyZnZ2N7fepKjkxiXzml8+ysjLz0jWe+6Kv
MZ1OJ9beRqMxsD/pelR2vEI4t8tkG1d121zx0v3h497XB99joa/7CZsQ88uWE5LxWjsNfOaXz3NI
56kuRyx9WDVlj/cAAAAAAAAAAAAAAAAA8vO2gEm7evWq3pSZ+d5GozEw8StiTs7LuvChSL18Muu+
sbHhnKzWbrdjk6pcsShLKPEqk2tynq+2674ddR9Os6yx1xNCXTkhO2XWarXEY0y+8si3UOt17tw5
vakvywR5U5Gy9ERr28ResXyGK8dsyl74kVeoOTGJfOaXz7Ky0BPCs95/hWIU8Qrt3PbJde3LMn5M
w71vmfcTkdDyS58rprRr7TQqkl++ziH9e1IO/v/Z+4NXWbY9McxcR27cBZerBj+6VEjWaFcltBvq
WPgY1NKDzkkXEQZLeGvoB1Wj/AOuHxVJYy6emM4sDlegYegMNDgDjfbAAmdQPcmBpW48MOwn6EG4
DhhchppooLpcIxDo9ODtyLdyZURmZGZk7sjc3wcJOyMiV661YsWKOPf+frnic3hrrjHfAwAAAAAA
AAAAx7lYAtN8Pg9FUYQsy44OAkqDsdLgo0YcQNsVkJQ6p15Diut+KJAtDg7u6otLGUt/jcEx7W/6
65jPMIxT+v6Sq4mM9Roaa73S+T+WzpWH6n1OWX3HRPodx8zRXYkfy+UyTKfTkwLbzzHWMXGPhhxf
Q5bVx+Pj49b7vs9fY3GN/hrbtf0a2uaQt/Ds23d8nWNs4yu9VmLpeT62P+/ROeNrqGsofb/Poe8Z
s77XYzqGj+kfAAAAAAAAAADgOIMlMFVVtfMLzXmeh/l8HubzeViv15tgrT4O/WJ3/AvnhwKShqzX
JTT16Hq1tf9SbqG/xqgoilCW5eacNf3V9Nm9qOt6Exzb9bp2MPvQfd8VGNzXWK+hsdbrGGmA6TmO
KevcMdHl2tdK6h7GxD0YcnwNWVaqKIqwXq+3AugXi8XWMZeQ3mOm0+nWc99qtdrZ3/d+dKn+OvS9
vI1nX+PruHvtvbrU+BrqGtr37+h7cqnrEQAAAAAAAAAAOM5gCUzhJaBusVh0BkI1wVpNoNY+6a89
p0Fd8S8qHwpIGrJeb4H+Ok5ZliHP862gbq5jrH0/1mtorPW6dV39eQuMifHrOjenOKasyWSyNxi+
ruu7T044pr+4beZCLsn4Gr+ucwMAAAAAAAAAAAxr0ASm8PIr07PZLCwWi7BYLHZ+cbqR5/neAK30
16rfv3+/tT9OWOjzS+RD1esS6roOq9Wq1ytN7LqUMffXmJRluTUW67puPZ8Mb+x9P9ZraKz14vUY
E5zi6ekp3QS9td2vu16efbkHQ4+vMV5DAAAAAAAAAAAAhwyewNSoqipUVRWWy2WYTqetgVp5nu+s
rBSLg63iX/6Pg7qO/bXkIeo1tKenp7BcLnu9rr3awRj7a0ziBJrFYhFms1mYzWY7543hXarv01VG
zjXWa2is9TrGkPPhvrLiFf/ajG0FsFPdw5i4RUOOryHLSqXPW4+Pj1vvb9El+4v93sKz79DPE/fg
2udyjIYaX0NdQ29lnjPfAwAAAAAAAADAOFwsgSnVBGotFot0V6c02KoJ5IoDkL58+RIdcbxT6jWE
OFDtloKAX6u/xihNpEvHK5czdN+n88ihoNFzjPUaGrpep/bhvs/1WZEgdk5Z8ZjYF9R6qJxbNvSY
4DeGHF9DlhWr6zpMp9PNazabbT27TCaTvdfYWF2qvzjsLTz7XvN5Yiz2tfGer6N97T7GMeNrqGso
XZFpX1vSVZBvifkeAAAAAAAAAADG52oJTKeKA7XaAqiWJ6ywMoQ4IOqUX1iPA8cmk0koy3JrP93O
7ftrOyUo7tbaOFZ9+z4N5Hx8fNwbzMlvtM3L4YzA2n2fi5NX09Vg2pxTVjomusZS+ov+17wn3cI8
UZZlKMuys//eqiHH15BlHZJ+Zj6fb72/BdfsrzEY0zzxFp590/H1Fp4nzrnXxsY0VmNDP+ecY6hr
KE3872pjaJkLr+ncMZFej/c+3wMAAAAAAAAAwC0YNIGpKIqQZVlnoF5RFDvBXmkAVSoOPMrzPGRZ
tvkF5UOBcI1L1yu8BGm3ld+2LbyUH9d/MpmE9XrdWc+u7Zdwif4a0rl9P5Q0iLDt+4qiCHme9x6r
jbG0cayG7vuqqnZWFpnP55trIZVlWWcQZBjxNTRUveK+yvN8py9ODagNL32flhdeyox/PT9d5aLN
OWWlc3RXO+Ny+oy1IQ0xTww1Jto0/TOZTDb3b35tyPE1ZFl9pKuEpN81dtfur9c2xDwxlLTv7/HZ
d+jniVtwzr02NqaxOvRzzpDja6hrKG1j23HpOby2c8dE2l9d5/Je5nsAAAAAAAAAALgF776++/5r
uvEY337zQwgvgUPH/hJ/XddhNpulm3ekgUWN1Wp18BeSX6Neqa56Hlu3xWKxE8xWvCRphKTecdnx
93cd3zi2TqGjnEs7p+/jPgghhOl0urW/kfZFW/+v1+ut9yEKfIvrt1gsdvr1UL+d08Yhpf11jLjP
usbeqWP1En3ft88bbWMnHTd9dNVnSEPWq09Zq9UqPDw87PRneh2l42u1Wm2d95Ccz2Z7W72GLCv0
bGejq5y2cdqlbTwd0nfMts0Tx7Sv0dXONmnbj/nsGKXj6xjpuA9H9v+hvhuqrEPzbiMdd23tu6T4
+9vG9iFD9Fc6vvc55doeUnq+urT1ZTruu9qS9mnXmEiPO6SrnCEdW6ewZ1w0+vZ5I+3XocdXeh6P
kZ6DtKxz77Wxvv3WNlaH1GdM9H3O6VNWal9/HVteWp9GVznpOYzPb9hT3qWcOya62tlmX78DAIzB
vn8nfP78OXz69CmEEMKHDx/Cx48f00O29Pl3BAAAAAAAAK/rx5++SzfdhcFWYHr//n26aa9jAoSe
np7STSGE0BqklLp0vZogr1NUVRWm02nvMo5tyymO/Y5j+mtI5/b9UNKVKMJLwF8a2N3mUDDeWNo4
Vm39em7fz2azsIp+kf6QrOUX38d6DQ1Zr6qqOvs2vHy2a35OVxhIpatrpeeqruvOe0Lq3LIOtbNx
qJxLOmeeGHJMtEnrdWj1jbdmyPE1ZFl9pGX0DQ4fi2v312s7Z54Y2lt59h3ieeJWnHuvjY1lrB6a
I455zhl6fA11DXW1MT6H+9p5LeeOia52po4ZpwAAAAAAAAAAwOkGS2B6fn4+GFxU13VYrVZhOp3u
DcxKtf3K86Hvaly6XrPZLCwWi84gxbquw8PDQ7p5S1xGW13rug51XW8FCF7KJftrSEP1/bmaoLi0
Ds05m06nreO3j7G0cawu1ffL5XLv9Rii72grf6zX0ND1auv/5vOHPrtPW7khKbut39sMUVb1Eiic
lhGOLOdSzpknhh4TqTgQuB5BEPQYDTm+hizrkKqqdr6nKIqt92N3zf56befME5fyFp59z32euBVD
3GsbYxqrbe2K29TXpcbXENdQWxvDie28lCHGxFua7wEAAAAAAAAAYOzefX33/dd04zG+/eaHdNPF
lGW5+UXo1WolGBpgxLIsOxgMWhRFyPN88346nW7tP8aQZQEAu9xrf6PPcw4AAAxlvV6nmzY+f/4c
Pn36FEII4cOHD+Hjx4/pIVve8nM8AAAAAADArfjxp+/STXdhsBWYLi3Lsk3yUnj5VXMAxktQLwBw
rzznAAAAAAAAAAAAHOcmEpiKogjz+XzzfrVabe0HAAAAAAAAAAAAAAAAxmmUCUxZloWiKEJRFKEs
y5Dn+WZfXddWXwIAAAAAAAAAAAAAAIAbMaoEpizLwnq9DvP5POR5HvI8D5PJZLO/ruswm822PgMA
AAAAAAAAAAAAAACM16gSmPZZrVaSlwAAAAAAAF784he/COv1OqzX6/Dx48d0NwAAAAAAAIzGqBKY
qqoK4WWlpbquw2q1CqvVKkyn07BcLtPDAQAAAAAAAAAAAAAAgJF79/Xd91/Tjcf49psf0k0AAAAA
AAAMYL1ep5tONp1O000AAAAAAACMzI8/fZduugujWoEJAAAAAAAAAAAAAAAAuC8SmAAAAAAAAAAA
AAAAAICLkcAEAAAAAABwgz5//hym02mYTqfhl7/8ZbobAAAAAAAARkMCEwAAAAAAAAAAAAAAAHAx
bzqBqSiKUBRFyLIs3QUAjMxbuG9rIwAAAAAAAAAAAAD36M0mMBVFEfI8D3meh/l8LogWAEbsLdy3
tREAAAAAAAAAAACAe/VmE5jyPN96//79+633cE1FUYT1et35Kssy/QjAm3KJ+3ZRFKEsy505d71e
v0pizSXaODZvoY1wTVmWvfrcBQAAAAAAAAAAAH282QSmc8UBz0VRpLsBOJJ5lWvJsiyUZRnyPA+T
ySTdHcKNJta4huA8riEAAAAAAAAAAAC4nDebwLRYLDZ/13Udlsvl1n4AYDyGum9nWRbm83ln4lLj
+fk53XRxQ7VxzN5CGwEAAAAAAAAAAADY9WYTmKqqCovFIiwWizCbzdLdcFXL5TJMp9Ot12q1Sg8D
eLOGum8/Pj5uva/remf+XSwWoaqqreOuYag2jtlbaCMAAAAAAAAAAAAAu95sAlN4CaJ9jQBlAOB4
Q9y345WX6rpuTaI59zvOMUQbx+4ttBEAAAAAAAAAAACAbW86gQkAeDuKoth635a8BAAAAAAAAAAA
AAAM793Xd99/TTce49tvfgjr9XrzfrFYbH5VvyiKkOd5CC2rHJRluVkFYbVaheVyufOZWHrMw8PD
1ioK8f5UV5mxuN5t4jYeazqdppt2tLWpruvw5cuXznYNKcuyMJ/PN+8P9Udo6ddD7exq49PT08Hv
6hpjqfi4tjGR1rlxzvi6lH3XTx/pOW004+r5+bmzH2Nt9ciyLDw+Pp50LhuH+vnQOT+0v3FoTDSG
6q/YuW1MtZV3zXliaK81rx4zTi+hqVdIVgOK9RkPYU8bTxkTQ5Z1rq65Ota3j2Lxs8cp8+qQhmjj
pa+hcw3RxjZDXkNDOqdefe8Hfe5pbfftkIz/Zt+h63vIslJdc86hObprXJ3yLHfpa6itHkP1VdOe
9Pll3/gBAABu175/v3z+/Dl8+vQphBDChw8fwsePH9NDtvT59wwAAAAAAACv68efvks33YVBVmCq
6zrdtKMrkPNYZVmGPM93ysvzPJRlubXtFmRZFtbrdWubJpNJyPM8rNfrkGXZ1r6hpYGO79+/33rf
pgnSDQfGwKE2zufzUJblxdvYx72NrzbNuGr6/VhNoGzaR/G53GffeBhjP5/SX0O3cV9515wnbsWh
/nqtOacsy616pXWLPT4+ppu2HGrjMWNiyLLgkoa8hoY01no1mms8rVdzfR9zTxqirENzzrlz9Bie
5Q61se+8uq+ca7YHAAAAAAAAAAAAhjBIAtOXL182f8eJL3GCyz7Pz8/pph0PDw+hKIpN8F5d1ztJ
M5PJ5GAg4JhkHSu+tJnP5xdv22Kx2Pydt/yyfSoOpIzHQKxvG5uA1ddyj+OrTxLaZDI5Kvh1Mpkc
DL4+1E9t5znu78lkEoqiSA+5uCH7a8g29r2GwpXmibHr21/XnnPKZLWSc/RtY+gxJoYs69Z03bcY
pyGvoSGNtV6x+L7d9XzT594WBiir75xzyhw9lme5vm0MPebVtnLS54k+zy8AAAAAAAAAAAAwBoMk
MPUVB+jFwZ7x6j/L5TJMp9MwnU63EmoadV2H6XQaZrNZmM1mO8e0BfHFZe4re5/083FA5Gq12tkf
v7qkQYlpOWkd29o2pHQVpn0BlWnyxXK53HrfSJNd4jYuFoudwNK03KFdYnyNVde4T/v9mGSa8HJ8
009dfdnVT2lQczMemv6evlxbfRLohjZUfw3dxrHNE0NK+3uIeXVsc04jTXBYrVZhsVjstKup52w2
2zo+NuSYGLKsIXVdj/dkiDamnx/iGhrSEG1sDHkNDWms9WpMXlaE6roXxcfte+4LA5U1xBw95LNc
eo6GuIaGmleHfp4AAAAAAAAAAACA13bRBKYmqHO1WqW7jjaZTEKe5zuBn1VVbZXfd9Wn15YGZC4W
i50koKqqtoIcrxGgGPdlV0BlKg02bWRZthXYu1qtttpYVVWYzWZbn79GG9vc2/jqUlXVpt9PHVt1
XR/sp67y4vFQ1/XOmA8h7JT9mk7pryHbONZ5YqzGOuekgfxNvdKk0UbX9jDwmBiyrDFar9c7r3h8
5Hm+s795pX3D6xryGhrSWOuV6nsv6vPcd05Zl56jx/Asl84d58yrQz5PAAAAAAAAAAAAwBgMksD0
/Py8+TsNCoyDENuCGY/RlShzi+J+Wq1WnUGtVVVttTsNlh1afC7zPO/8vrj+X7582drXSM93W+Bl
CCE8PT1tve/6zku7p/HVRzrm+vZ7V7BsPHbapOV3lRMGSnocWp/+Sred28axzhNjdStzzqFrZZ8h
x8SQZcE1nXMNXdJY65XOebE+ycexc8q6xhz92s9yQ82r6ftznycAAAAAAAAAAABgDAZJYDokDeiM
g/KOCTTsSpRZLpdhOp2G6XS6N8BvTOJfVU/7JxW3Ow3+HFoaaNn1fXH9uwJQ4yDOfee573de2j2N
ry5Zlm1el5Z+xzHn9dA1cS3H9tfQbRzrPDFWtzLnzOfzUBTFUWOrMeSYGLIsuKZzrqFLGmu90jkv
ll77h+p9TlnXmKNf+1luqHk1fb/Poe8BAAAAAAAAAACAsRgkgSkONGwC95qgxTg4rwlcPCYoL9aV
KHPr5vN5WK/Xna+2X7G/pEO/oF8UxebvfQGosa6A0jG5x/FVFEUoy3Izlubz+ea1Xq/Tw6+m77i5
tiH7a+g2jm2eGLsxzTlVVe2skJHn+dbYapIejjHkmBiyrLFokhXiV3xdrlarnf3N6x7vB7fsUtfQ
ucZar2OkyULnOKasS83RY7p2h5pXh36eAAAAAAAAAAAAgNcySAJTmzhJqQlojH+VvHGpAEZOl/6S
exp4G/+C/lDnT3Dm8MqyDHmet1537NJfb8u155zlchkWi0Xn9zZJD03CA7BtrNfQWOt167r6EwAA
AAAAAAAAALhdF0tgaqTJMOyq6zqsVqter2v0Z7qiQLpiVpzgMaZfuuc3yrLcOk91XbeOM37tFvqr
rT5dr2vMExyvqqowm83CYrEIi8Wic0zled4r0WHIMTFkWXApQ19DQxlrvXhd5lUAAAAAAAAAAADY
NlgCU/xL6VmWbVbpaVZfavbH+4IEpxBCCE9PT2G5XPZ6Nf15afF5yfN883cceHvMr+PH57yNVW+G
FffnYrEIs9kszGaznfH0WsZ2vi/RX0O3cYzzxJiNec6pqipUVRWWy2WYTqetCQ95nu+sfpcackwM
WRZc2lDX0NDGWq9jDHl97ytrzHP0UIaaV++hLwAAAAAAAAAAACAMmcD05cuXdNOWrv37AvbuWRzQ
+vj4uLVvDNLz0gTbxgGnXee0Ee/fF3w51GoEYw4IvqY0ySw9l68lTVbcd77SVb9Ote87GkP219Bt
HPs8MTbXnnOG0iQ8LBaLdNeOIcfEkGXBazrmGrqmoeu1756yz77PHTsfnlPWrc7RxxhqXh36eQIA
AAAAAAAAAADGYLAEptRkMmldoedeguziIMx4haK+4sDEyWQSyrLc2j8GcRBm23lbHliRJg2+7ApI
TX+F/1C5bXUJZwaKjt2+QN9TdZ2PS0kTg7rOY2gZE4d0lTXkmOjTX0O38RbmiSENOa+GPecs7ftD
c86YDDkmhiyLcTj3GmIcuu4dp97T9n0ung/bnttT55R1C3P0udfQUPPq0M8TXcqyDGVZdp4LAAAA
AAAAAAAAGNLFEphSaUBf6AhuvBVpEGZZlq2/jt62LbwEJsbtn0wmYb1ehyzLWj/Ttf2S4jbmeR6y
LDvq3KVtzPN8J0CyLMut5JyucuNkqq5y7k2fMVYUxc629FpL94eXz+V53tnfl5Kex7a6pWOiS1rW
qWNi6P5K69VWXt82ptfQ0PNEURRhvV5vXsd89hL6jPlwxLzaNS76zDlDa67VrroXRbGTGJAGsDfb
hhoTQ5bFOJx7DY3ZUNfQ0IaqV3rvaJu7TjWZTHbKCy3z4aGVNcOZZaVzTlc7X2OObpx7DaVtPGde
TcdE23Fpfx2j+exkMuksHwAAAAAAAAAAAIb07uu777+mG4/x7Tc/hPASgDefz7f2rVarza+mt+2v
6zrMZrOtbev1euv9PtPpNN20o0k8OMVisWgNMm30DRqM+yHW1if7HKrPJXS1satNqWPa2DYeGn3K
Wa1W4eHhYae+cb8NPb4urU99285F2+eagNq4fxaLxU6/puchvYa6+iU9R23jNT2mkdatruudevYt
K9ZnTISB+6urXml5fdoY9pTXpaucNn3P7TV1zTmptnEfjuyv9NxdyjF1auyr27Hl7RsTQ5Y1lHRc
HuNQ/eLx1TWGruFabdzn0u0fso3HjtNw4BoaypD16lNW33ta2ver1WrzPr0XNbrqNWRZoWc7G13l
tN2zu5xyXzv3GjqmjaHl/DW6ykn7PT4nYU95qbQfu/obAAAYh/QZPvb58+fw6dOnEEIIHz58CB8/
fkwP2XLKv5UAAAAAAAC4rh9/+i7ddBeutgJTWyBd26+z35Knp6dNEOEpqqoK0+m0dxnv379PN13c
09NTuimEEFoDNttUVRUWi0W6eUdd153fFXqUU9d1Z53SlQ9uyb42Nx4eHtJNrZ+bvPzKfqPtmNAS
iDykrvMY161tLLTNH11lNY4ZE23lnNpfXfU6pY3hivNE3/IvbYh5ta3/U23n4FKOPSeHgsiHHBND
lsU4nHsNjdGx4+7QNTSUIet1aO465p6WSlcaTO9bx8yH55Z1qJ2NQ+Vc0rnX0FDzaldfpc8TXePi
kLR+t/7vMgAAAAAAAAAAAMZvsASmtuD7OMjxHlVVFWazWVgsFmG1WqW7Q3gJDmxLMInFZaTBhOGl
jLquX6U/285rWx33aQI52/qoruuwWq3CbDZr/a5YE8gZlxN//h61tbnRjIu2gNOuzzWfmU6nB/v7
UvbV7dhz2VbWUOWEM/prX3nH1q1xiXni0Nz0GoaYV4eac4by/Pzces5iTb2m02nv8THkmBiyLF7X
ENfQ2FzqGjrX0PVqu3fEc9ap2soNJ86HQ5Q1tjk6NdQ1NMS82qe/TxUniNVnJEIBAAAAAAAAAABA
X+++vvv+a7rxGN9+80O6iTtUluXm195Xq9VogxyzLHu1gFeGUxRFyPN88346nW7tP8ZYx8SQbTzV
rVzXAPxan3vakPeXIcsCAADgdOv1Ot208fnz5/Dp06cQQggfPnwIHz9+TA/Z4t92AAAAAAAA4/fj
T9+lm+7CYCswcb+yLNskOYQQRp3kcCiol9sQr2rQtmrBMcY6JoZs46ni6xqA8RvrPQ0AAAAAAAAA
AADgEAlM7FUURZjP55v3q9Vqaz8MLU2Y+/Lly9b+ezDGNo45MREAAAAAAAAAAAAAgNsmgYktWZaF
oihCURShLMuQ5/lmX13XkhwYXJZlm3FXluVWwty9jLkxtjHLsnQTAAAAAAAAAAAAAABchAQmQnhJ
Zliv12E+n4c8z0Oe51srxNR1HWaz2dZn4FjNOItf8/l8M+7iMRdCCE9PT1vvb8EttrGu63QTAAAA
AAAAAAAAAAAMRgITB61WK8lLXFVd12GxWISqqtJdd+O12/j+/ft0EwAAAABwY37xi19sfkjp48eP
6W4AAAAAAAAYDQlMhBDCJomirutQ13VYrVZhtVqF6XQalstlejgMphlzzbibTqdhNpu9WmLPJYyx
jc/Pz5s6ffnyJd0NAAAAAAAAAAAAAACDeff13fdf043H+PabH9JNAAAAAAAADGC9XqebTjadTtNN
AAAAAAAAjMyPP32XbroLVmACAAAAAAAAAAAAAAAALkYCEwAAAAAAAAAAAAAAAHAxEpgAAAAAAABu
0OfPn8N0Og3T6TT88pe/THcDAAAAAADAaEhgAgAAAAAAAAAAAAAAAC5GAhMAAAAAAAAAAAAAAABw
MRKYAAAAAAAAAAAAAAAAgIuRwAQAAAAAAAAAAAAAAABcjAQmAAAAAAAAAAAAAAAA4GIkMAEAAAAA
AAAAAAAAAAAXI4EJAAAAAAAAAAAAAAAAuBgJTAAAAAAAAAAAAAAAAMDFSGACAAAAAAAAAAAAAAAA
LkYCEwAAAAAAAAAAAAAAAHAxEpgAAAAAAAAAAAAAAACAi5HABAAAAAAAAAAAAAAAAFyMBCYAAAAA
AAAAAAAAAADgYiQwAQAAAAAAAAAAAAAAABcjgQkAAAAAAAAAAAAAAAC4GAlMAAAAAAAAAAAAAAAA
wMVIYAIAAAAAAAAAAAAAAAAuRgITAAAAAAAAAAAAAAAAcDESmAAAAAAAAAAAAAAAAICLkcAEAAAA
AAAAAAAAAAAAXIwEJgAAAAAAAAAAAAAAAOBiJDABAAAAAAAAAAAAAAAAFyOBCQAAAAAAAAAAAAAA
ALgYCUwAAAAAAAAAAAAAAADAxUhgAgAAAAAAAAAAAAAAAC5GAhMAAAAAAAAAAAAAAABwMRKYAAAA
AAAAAAAAAAAAgIuRwAQAAAAAAAAAAAAAAABcjAQmAAAAAAAAAAAAAAAA4GIkMAEAAAAAAAAAAAAA
AAAXI4EJAAAAAAAAAAAAAAAAuJh3X999/zXdeIxvv/kh3QQAAAAAAMAA1ut1uulk0+k03QQAAAAA
AMDI/PjTd+mmu2AFJgAAAAAAAAAAAAAAAOBiJDABAAAAAAAAAAAAAAAAFyOBCQAAAAAAAAAAAAAA
ALgYCUwAAAAAAAAAAAAAAADAxUhgAgAAAAAAuEGfP38O0+k0TKfT8Mtf/jLdDQAAAAAAAKMhgQkA
AAAAAAAAAAAAAAC4GAlMAAAAAAAAAAAAAAAAwMVIYAIAAAAAAAAAAAAAAAAuRgITcHOKogjr9brz
VZZl+hEAAAAAAAAAAAAAAOCVvPv67vuv6cZjfPvNDyGEENbr9db21WoVlsvl1rZGfOxisQhVVW3t
f4uKogh5nm9t29eHXbIsC4+PjyGEECaTyda+1WoVnp+fj+7voijCw8PDTnl1XYcvX750ltnWpj7a
xsSQZXH7Do2Huq7DbDZLNwMAAAAA3Jz0/7/EPn/+HD59+hRCCOHDhw/h48eP6SFbptNpugkAAAAA
AICR+fGn79JNd+FiKzDtSy6gn2P7sCzLMJ/Pw2Qy2Uk2Ci/lzefzUJZlyLIs3b2jLMuwXq9Dnuet
5U0mk02ZfcoDAAAAAAAAAAAAAADg7blYAlN4WQ2Ifh4eHtJNIRzRh0VRtCYZtZlMJgeTjsqy7F1e
COFgeTCk5XIZptPp1mu1WqWHAQAAAAAAAAAAAAAAI3DRBKb379+nm+jQJAvVdX1SIka8WlNTRpzc
sVgsQl3XW8dUVbV5H2tLXmorL65nW3ltSSaLxWLrmHT/dDrdKScMXBYAAAAAAAAAAAAAAADXc9EE
pjiphm5FUWz+/vLlS3h+ft6875MElq589PT0FJbL5da2qqrCbDbbJDLNZrOt/Y10Jae6rsN0Om0t
b7lcHiwPAAAAAAAAAAAAAACAt+3d13fff003HuPbb34IIYSwXq832+q63iTBLBaLnVVw4mPb9qeK
oggPDw87iTVPT0+9PtskUjWJNlmWhcfHx5PKu4R4xaPpdBpC0kfNti5xG0OP4/dJz+PQiUlZloX5
fL55f05dhyxrKF1j9cuXLztJYLG0LavVqvP4vsemxzWa+jw/Px8c7/HYWq1W4fn5eevaaa7f9Jrq
qlPb9RhaVv3q02eprrJPcep5bNOUFaKV1lJ95sFG3NfnthMAAAAAGL/4v9unPn/+HD59+hRCCOHD
hw/h48eP6SFbxvDf0QEAAAAAANjvx5++SzfdhYuswPT09LT5u88KQl2yLAvr9Trkeb4T+D+ZTMJ8
Pg9lWe6sQLRPk9Sxr7xrS+sSXhJAGofaF6/YdI54JaiQnEf2OzRW8zwP6/W681xWVbV1zvM87zz2
8fFx83dd10cn1DT1OWW8p4l/8/m89ZraV/9Y029dfXZs/c517nmMlWW5VVZaXiw+p4fE52Aymexc
twAAAAAAAAAAAAAAMDYXSWAKUQJO30SGVNfqMakm8aiPyWRyMFFgMpmcVN9TxckHdV1v7WscmwQ2
RNJHXde9V4R56/qO1RAl/LRZLpdbY6BtrKYrFe1bfafPuJlMJr3HS7wSU2w+n4e6rne29/n+NBkr
vQaOqd+5hjqPoeU8DSktt1ndCQAAAAAAAAAAAAAAxupiCUzxqkB9EhlSafLGarUK0+k0TKfTsFgs
dhId+q5CMplMQl3Xm7Ka8mKn1PdUcfLBly9fNn/H/dckjnSpqmqrP5qkj30JFm0kQpwmTXqJx+qx
4yte9SpdXSfLsq3klbTc1HK53KpHU5f0+km/Z5/ZbBaWy+XWd9d1vdkeJzEdGk+Tl1WJmv6azWZh
NpuF6XS6U79jx/IphjyPaZLRarUKi8Vi53w05e5LREuliWLxvAEAAAAAAAAAAAAAAGN0sQSmOKnm
UAJOKk3UWK1WYblcbt5XVRVms9lWkkPf72iSLWJVVW0lBbSVVRRFWK/XJ7/6JGCkbYwd+nyc+BKi
lan6fndKUkQ/aeLPYrHYOo/h5VzGyS9t46vRNhab85euVpSOkT6qqtpcP33r1EiTBhvnjJW6rnf6
K7SsLLUvWWgIQ57H9Hpr5q+u89W1vUuTKNasepXWEwAAAAAAAAAAAAAAxuZiCUwhSapJg/r3SZMV
ugL006SdPt+RJkY04hWPrqlJ1GpLDokTWdI+STXJFW3l9E1kSleN4bB4laHVatWZjJKukrXvXCyX
y61jHx8fQ1mWW2OlaxwfI63rvjpdSnoNx9JErku6xHlsXGJuWS6Xm1WvAAAAAAAAAAAAAABg7C6a
wBQnARxKwInFyQRtCTmNNMngmO84pE9iwrniVV/aVrGJEx/iPunStrJObD6fh7Isr9K2tyJO+jqU
qBKf40NjNU7smUwmW9+zL+nnkCzLNq8xSK/hWNqfl6zzpc5jeLnuiqIYVb8DAAAAAAAAAAAAAMA1
XTSBKUSrqJy6gkpbYs9rWC6XYTqdnvxqS9Q4lJQUf+aY1ZGqqgrT6bR1RabJZBLm87lEigtoVrrq
eh1zDTQraqX2rQ7UpiiKUJblpg7z+XzzWq/X6eGjckw7h3Tueayqamv1qPAy/8X93iQ0AQAAAAAA
AAAAAADAW3DxBKZ4NZNLBOynCTq3JE5KWi6XW/vaHNt/8YpMaULFfD7feh9uvC/vUVsCT59x0ijL
MuR5flTyG8NYLpetCYSNJqGpSWYCAAAAAAAAAAAAAIB7dvEEpjgJoy1p5q1KkxbSVV6aV+z9+/db
7/uqqmqTUBFLE6Li1a4OrTLDrrquw2q16vWKE/u6pOcntIybLmVZbiUu1XXdWj92tfVT12vfeYwT
CNuSCBt5nvc+rwAAAAAAAAAAAAAAcIsunsAUQtgK3G9Lytjn4eEh3bTlVleXOdSuNucmFaUr+qQJ
UWkyxrHn6q17enoKy+Wy1ys9F23aEv7yPO91XuLrYrFYhNlsFmaz2U49bkmfPhvC0OexqqpNEuF0
Om1NZup7XgEAAAAAAAAAAAAA4BZdJYEpToxJk2baxCsB7UtQuuVVS/a1a59zkxzquk43baTJGG0J
NGyLE1EeHx+39p2jLMvN383qSY1D5yW+Luq63jmvY7JvPF/z+r7UeWzTtSIaAAAAAAAAAAAAAADc
q6skMFVVtUkQ6LOKULoSUFciQ7qK0a2sKJMmbUyn072vOLmiLQEsLW+fQ4lT6cowZVkeVf5bE4/V
yWSylXh0qqIots5Ts3pSbKjveW37koXi63tf4l2bQ+M8dYnzeEllWYayLEdxDgEAAAAAAAAAAAAA
4JCrJDCFlqSkfaqq2kpYyPN8J1C/LMutJIVjExxeU5yEdGy92xLAHh8fw3q9DkVRhKIoWhOOiqLY
ScpoS/hKt00mkzCfz/eW27zeonSsTiaTsF6vQ5Zlrf3Vtb2RZdnWOY4TyuIVeyaTSWc5aTJO23FF
UYQ8z48ef0ObTCatYye9vuNV2bqkc0xb8l3XOB76PDbf03VMURQ7yVt9V8pq+mYymYQ8zzu/AwAA
AAAAAAAAAAAAxuLd13fff003HuPbb34IIYSwXq832xaLRWswfnxMo+vYLMvCfD5PN7eq63pnhZpG
k6jRmE6nW/sb6fd11WsIcXLGarXaSRpKpXVL25Ame/Sxr8/S7+srrVfa93219f2QZQ3t2P7aV6f4
XLado/Rcd5XVdq01CTrp59O6x98b93u8PW5zPIa7jm+k53G1Wm0dH1pWT2orp0tbu1Nd19xQ5/HY
csKZbTzmswAAAADA7Un/m2Ds8+fP4dOnTyGEED58+BA+fvyYHrIl/e/4AAAAAAAAjM+PP32XbroL
V1uBKSSryRxSVdXWijNd6roOT09P6eZRixM02hIpUmmSRLriSprwccihhIeqqsJ0Oj3qfL1lTX/1
Xc0oXoErliYntY3r9Lylq/g02q6dZtWeRtsx4YTxdI50taj0u4+9vrvaFHt4eEg3hTDgeeza3uXQ
9ZhK69dndSoAAAAAAAAAAAAAAHhNV01gipMV+tiXSFPXdVitVmE2m+0k+IxZURSbv9NEhH3iPkgT
JKbTaVgsFmG1WnWW2fTXdDrtnSyxXC73llvX9Va5b91sNuvVX23XQZZlW8k7q9Wqc1zHSTqTyWRr
TDWaBMD02mnqMJ1OO8u/pn31POX67iovRG0/lPBzznkML/Nc2+dip1yPjTihq67rXkmQAAAAAAAA
AAAAAADwmt59fff913TjMb795od0E0CroihCnueb9xLfAAAAAAD2W6/X6aaNz58/h0+fPoUQQvjw
4UP4+PFjesgW/00WAAAAAABg/H786bt001246gpMAAAAAAAAAAAAAAAAwNsigQkAAAAAAAAAAAAA
AAC4GAlMAAAAAAAAAAAAAAAAwMVIYAIAAAAAAAAAAAAAAAAuRgITAAAAAADADfrFL34R1ut1WK/X
4ePHj+luAAAAAAAAGA0JTAAAAAAAAAAAAAAAAMDFvPv67vuv6cZjfPvND+kmAAAAAAAABrBer9NN
J5tOp+kmAAAAAAAARubHn75LN90FKzABAAAAAAAAAAAAAAAAFyOBCQAAAAAAAAAAAAAAALgYCUwA
AAAAAAA36PPnz2E6nYbpdBp++ctfprsBAAAAAABgNCQwAQAAMFpZloUsy9LNAAAAAAAAAAAA3BAJ
TAAAMKCiKEJRFBIu4Eht10yWZWE+n4f5fN66HwAAAAAAAAAAgNsggQmAk5RlGdbrdSjLcmt7lmWb
fQKN4TqKogjr9br1uuu6VrsMWdZYXbKNRVGEPM9DnuevmnAxZBuHLAvaNONoPp+H9Xq9lQD4/v37
9HCgQ/McXhRFugsAAAAAAAAAAF7du6/vvv+abjzGt9/8kG4C7kQThN2lruswm83SzbwB6dhYrVZh
uVyG8BKEPJlMNvsWi0Woqmrz/pCiKMLDw8NWGXVdhy9fvmy+A9i2Xq+33k+n0xBarsf4Wu0yZFlj
dck2pmWfUsYQ0nqc08Yhy4JUOo72acZeKn0u6ToO7l08X5uTAeC+pP8ui33+/Dl8+vQphBDChw8f
wsePH9NDtnheBgAAAAAAGL8ff/ou3XQX7n4FpvgX4499pb8wD5d0zNg75ti3JMuyrb65R0VRbFYp
iF+v/UvrDw8Pm7/TIOS+yUvN+cvzfKeMyWQS8jx/1RU+xtb3cV3O/f4hyxqT+DwdmiuPOXZs9tX3
y5cv6aa9hixrrLTxuDYOWdbYpPP5sa99fUN/aRLcYrHY2t+o6zrddHH3en+M3Wsb+/x3gOYZ7l6u
5bQd8fM5AAAAAAAAAACMwd0nMAHcgya4tC25J0QJPtcKqE5/zf3p6Wnzdxx43DfYOMuyMJ/P0807
JpPJ1YNrx9b3kKqqautai6/B5+fnzd91Xe9cu6khyxqrS7cxnQNPKeNcQ7ZxyLJgn2YMVVUVptNp
WCwWYbVahbquw2q1suong2ue4ebz+V08w6U/GnDrSaYAAAAAAAAAANwfCUxAp+VyGabT6dZrtVql
h3FBzapEbYkzXa4VhNkEF0+n062AyaqqwmKxCIvFonew8ePj49b71Wq1GXOLxWIreD7P861jL2XM
fQ+p2WzWeT0211Hf63HIssbqkm08ZQ68hCHbOGRZkOq6XqqqCsvlMsxmM8lxXNy9PMMtXhL/VquV
6wYAAAAAAAAAgNF5UwlMdV1vAuL7vNJfMAa4tjSxp1mFIJ6rmkDF+JhrzV9d31NVVee+VJZlW0lC
acBlVVVbKzxdy9j7HlL7xt6+fW32Hb9v3y3Z1459+/o4Zg68pH112Levzb7j9+0bs/TZv3ml83q6
v3ndarvHZizXC/er7TpOn+HCSxLTrateEv8kLwEAAAAAAAAAMEZvKoEJ4JYURbGV2FPXdesqBE2g
4uJlpaJ0BYOxe//+/db7tH2h5ZhLeyt9DwDwFjXPcGkSEwAAAAAAAAAAcDnvvr77/mu68RjffvND
umlUiqIIeZ6HEAWgn2q9Xm/+XiwWnb8UHh+XriQSkjrF4mOLoggPDw97VyXp0vbZuq7D09NTZ50b
Xf1VluVOeV++fOlVn0ZXvY4tp5FlWXh8fAyTyeTsczukU+vVd3yFI48Ne/q+z5hIdY2RvrIsa/11
82YsPD8/H12nRlr2dDrd2n9r4vN8Sl83hp5z+o6/Q3Nho8+YiuegrmOGNFTft2nr6z7XY1ynY6XX
wpBljVnfsRr2HJvOK4fKCS3XXNxnfa+Lxr6yGmkdG6fMq0OWNZSuOeLUZ5Mh25ienzaHxowxMT5d
Y+5YXfP9oXGanuPGqfftVNtn+9Tr0rrqdej+GFr6bDqdbj2TNw6VN/T9sevekjp2HghRf4UQttoY
a/vOods4Vn2v43SOa+uz1FBjtanXKWM11VaneCwdGouH9jdOGasAwDD2Pcd9/vw5fPr0KYQQwocP
H8LHjx/TQ7bc0nMdAAAAAADAW/XjT9+lm+6CFZhGqCzLkOf5TiBanuehLMutbbEsy8J6vW797GQy
CfP5PJRlGbIs29q3T1NmW3mH6tM4VK88z8N6vT6qXiGErSCvyWQSiqJID3kVY6rXob4/ZUxcSjMW
mjqdq67rdNNNScfN09PT1vshnTrnXEuRrIZ0yb4IF+z7W7oe+Y00gLfPamBNQHlomYvilR7aEhRS
+8o6ZMh5dciyzjXEs0mb12qjMXF/Ds33pz77Nk69b1+6Xqc6VK9T7o/ZS1LKvvJuVVmWW/2VtjH2
+PiYbuKA9L4fG+NY3VenQ3MCAAAAAAAAAABcmwSmEXl4eNgK1K/reicwdTKZtAZENYFPhzSBUH3F
QW9d9dkXFNW3XiGEMJ/PW9vWJQ3QigN6X9NY6tW3748dE+fqE/x/aFx12RdweGvSAPVLtO2cOeea
4oD+S/VF7BJ9P9brkX4Wi8Xm7z4JJvF94MuXL1v7np+ft94fur72ldUYcl4dsqxLOffZZGxtNCbu
S9/5Ppzw7HvOffuS9TpH33ode39M54lUVz+NXZmsPMf54jmubaw0LjFWJ5PJwSSzQ2O17bviuWHy
yj+oAQAAAAAAAAAAMQlMr2C5XIbpdBqm0+lWUHSjruswnU7DbDYLs9ls55i2QNI08Gm1Wm19RxqM
1SeIafLyi95NWU19ptPpVnn7gqrSgKq4Xm3tb2tbl3jFgrAniPfaxlKvS4yJIcTjP65PWifBdr9x
7hi6xJxzLekYmM1mW+8v7dy+bwxxPabXTfyZdG5NX6l0/zllvQVpElvXPS+0nLvlcrn1Pi1r3/V1
qKzGkPPqkGVdwhDPJkO2sausYxgT92WIZ99L3LeHqNclDHF/bJPOE33bGPfJdIT3x0mSvLRarcJi
sdipS9Petuem9LixtfGaiqLYSkzet+rmJcdqc03H5cXaxmp4SWiLdd0b+yRfAwAAAAAAAADANbyp
BKbJZBLW6/XeV99Ao0uYTCYhz/OdQLOqqraSYtIVfbIs2wpmW61WWwGtVVWF2Wy2FVTVN4ipruvW
4Ni0jm1BVWlfLhaLnbKqqtoK0Opbr/AS3LlarUJd1zttfk1jqNclx8QlVFW1qdOp4+HepAGql3Dq
nDOUsixDWZZ7y09XQ7qGofv+1q5H2sXXRNs9r03XmI3L2neuzxn/Q86rQ5Y1hHOeTbq8dhuNiftw
6WffU+/bl67XqS55f2ybJ9J+6lvWWKRJmU1/VR0rRXZtf4u6/jtAMwbqug6LxaKzzy49Vg9d011l
xXVqG/Oh5d4IAAAAAAAAAACv6U0lMN2CY4NRQ0uAblvgUmj5Rek0CK5N+pnYoaCqOHhytVp1BoRV
VbXV7j71aiyXyzCbzTrb/FrOrdd8Pt8JsItfh1xyTFxaOk7GUKd7dsqcM5TJy0oqQycMjc0tX4/3
5Nx59fn5efN3nued5ye+93Wt4BWXFfac6/ja6CqrjyHn1SHLOlV6rcQOPZv08RptNCbuwzWefU+5
b1+jXqe45P2xK2kjvdZu2T215bU0iUtPT0+d10UY6VhNy+4qJyT3RgAAAAAAAAAAeE0SmEamKxh1
uVyG6XQaptPpTnBS31/jT4Oy0kCsNulnYmlQVRpEFQfZpsem4nb3qRf7XXJMXEKWZZsX/RRFsZOA
cUwyRuOUOeea4vpNJpNRjJFj+/7Wrkfa9T0/8b2vK8C5SlZWaCsrXTGlq6wuQ86rQ5Y1hPRcxNLn
jb51fu02GhP34RrPvqfct69Rr1OM4f54y2N4Pp+Hoihci2eYTCZhPp+H+XweyrLs7McxjtVjyj50
3QMAAAAAAAAAwLW8qQSmuq43gX1dr2ODQYd27vd3BTVeQhqgtc+hlS9OXSVhrIqi2AQUvrZrjom+
iqIIZVluzn8TONiME67n3DnnHM28u+9X4dOAy/l8Porr6lRjvB7p79DqPnGCyb4A59CyolOqb7B0
Y8h5dciyrq3vs8kY22hM3Jemb7pebee4j3Pv25eq17ncHw9LEx3Dy1wRX4tj+ffH2HT9d4DFYrHp
0yaZ6VD/jXGs9rknAAAAAAAAAADAGLypBCYEN11Lnuchz/Pw+PiY7uplsVjsBNjFryFde0yUZRny
PN9aDYBd1z4vY1VVVVgsFlvb+gSXnuM1+/41v/veDTGvpgl16TiME0wOBTiniTZpWfEceaisIefV
Icsaq7G20ZiAbu6Pv7ZcLsNisejsjyahqUlmYr+qqjZ92jj3ObPr3AAAAAAAAAAAABKYuJK6rsNq
ter1SgPEuR9lWW4FQNd13To2ztGUcSi4e+zi+rethrBcLk9KwLhFTRJTHBB6bnDpPvqeLunqF+/f
v9/aH89vfVZJ6SorHdv7yhpyXh2yrLEaexuNifvR1k9dr2s++461XvRXVVWYzWZhsVhsrSCUyvNc
ElNPh+7vAAAAAAAAAADAMCQw3Zl49Yc2l/z1/HTlgNjT01NYLpe9XvvK4XivOSZS8XctFoswm83C
bDbbGQPnGKqcsUmD19+aJlg3duoKZ8casu/HdD1ymjigP05wi4PE42S7fbrKigOnD5U15Lw6ZFlj
kT5TjL2NxsT9GOuz71jr5f54vKqqNisITafT1mSmPM8HfY55K/aNx337wiuN1df4TgAAAAAAAAAA
OIUEpoG9RoBYvFrIvuClU36Be197DpUXB9BdK9GAX7vkmDhVGtx/zaDYW5SuenBr19C+ueMci8Vi
8/e+sX2Ooft+jNcjp0vnrmasxwHNfVeA61NWmrgXG3JeHbKsS9s3v+y7jm6hjWmdjInbMtZn37HW
y/3x1/bNacdokpniZyX625eYNMaxmj6v7htHQ60ote87AAAAAAAAAACgDwlMJ+oKAnqNoMA0eKkr
cCoNylr2+MX8fe2Jy2tbDSCu12QyCWVZbu0fQlmWoSzLzja/VZccE7F9AXyn6qprX/cyJqqq2go4
vtQ1dK7XngsvEUg5dN9f6nqMg2njlVpOMWRZb0E8PtqugUPnLtZWVjO3tt1bT9E15k4xZFmn2je/
HHo26eO122hM3K5rPPue4hbqFfaMpWPvj0Ma8v7Ydr8IB+a0axiyjbcqy7Ktf9ekichjHKtpUmnX
+Aot9Tqkq6zXHqsAAAAAAAAAANw+CUxHiANK8zzfCVx6rWDAqqq2Alq76hYHZfUNgJ1MJjtlhZby
0iCv0FKvyWQS1ut1yLKsNemga3uXpg6TySTkeX7UZ+9d2vdDjok0gK8sy52+L4piZ1saPJvuDy+f
y/O8d11SQ46JoijCer3evM4p61RpXzfXUFv/XtO15sK2dqaBk2nw5lCG7PtLXY9pHduuxdAzyWvI
shpjuIYuJe6vZq5pzl+fcxeLy3p4eNgaG2331tiQ8+qQZV3aqc8mt9LGtzQm7m2eSOf75t6RdTzj
dm0f2q3Ua6j745DOvT8O/czUPId0fV9RFEc/K53bxja3dG0XRRHm83m6ectYx2o6vtr6Oa1Xl7Ss
tvYBAAAAAAAAAMC53n199/3XdOMxvv3mh3TTqDSBladYLBZbAV9Zlh0MblqtVuHh4WEnSCgua71e
b+3bZzqdppta9albo67rMJvN0s0htPTXarXavG+CsNK27SvvmHqFlj7fJ+3HffW4tqZux9Qpbs+h
fuhz7DF9f0w9Q0vft1mtVju/Ot72ubZxtVgsdurep45p+X0+0yW9Fvpei0M75jzG4vqm/bJPn3b2
qVOfubAR93V8zg7V+5zz20efdrZp68NjyjqmXccEpabXY2rIssJIrqE+c2XjmGPDnv7q2z+xrrHe
p8/aPnvqvDpkWUNKx9I5zyZDtjGt1zEOjbG2eoY7HBNpH/Zp3zV03Zf6OGa+Dx1joa3fu/TtsyHq
dQnH1Gvfueg7ltLv69POrvk+1Tb/p9/Xpu8zU5+yUvv6LHZOG9v0PR+XlNahr64+O6b/u8oILfXq
6pv0+9Lx0HZMI52n67rembP7lhXrO1YBgMvY9++Ez58/h0+fPoUQQvjw4UP4+PFjesiWrmcQAAAA
AAAAxuPHn75LN90FKzAdoaqqsFgs0s0bdV13BnSlv4Q9tEN1a9R1HZ6entLNndJf30+DlQ6VV1VV
mE6nmyCqQ96/f59u6pSWeWhVgmvJWn75+jVcakyElyC1Qx4eHtJNrZ9Lx1XbMaElOL3NpcZEWu41
NefxNeuQOjS2rjUXHjtujzVk3x/qs8ax1+PT09Mg9QsDl5W6VLmvqes8dY39feJVDxp9+6xtXJ06
r7Ydd2pZl3TOs0lb/dMy2o4JV27jWxwTfds3dpd89j3HmOvVNYZi+67rSzvn/niofcc8Mx17Tuo9
STSpc9p4yKXKvYR9fXboXDauOVa76hTP0231aUs26iqrccxYBQAAAAAAAACALhKYjtQE9sSBpXVd
h9Vq1RnsdC1NYGJX0GtTx7aApS5t7Q0nlDebzTbltAWx1XUd6rreCko+JA7E2hdQ9ZqODd4d2iXG
RNgzLkJ0LtuSh7o+13xmOp0eXZfYkGOiLQHrtVRV1fsaWq1WV/kV1bZzOfRcmI6TEH3HuWOlryH7
/hLXY1q/NnVd9xrPQ5YVRnYNXULbeWobH3203fva5tA2bddiOHFeHbKsS9pXz0PX0b7PjqmNb2VM
3PM80ffe0XauL2mM9aoucH8c0rn3x7brKG5XX8/Pz63nLNaUO51Ojyr73Dam+h43Fn3PxxjHatv4
Cke0KdZW1inlAAAAAAAAAABAl3df333/Nd14jG+/+SHd9OZlWXbVoKUhFUUR8jzfvN8XjE+7LMvC
fD7fvNeHt6ksy00C2mq1OisZ6q265bmQ872Va+ittPM1eTa5X64f+LV7e2ZybY/LkPfRexurAHBL
1ut1umnj8+fP4dOnTyGEED58+BA+fvyYHrLlnOcBAAAAAAAAruPHn75LN90FKzBdgIAeuH2vvXrW
PTAXvm1v4RrKsmyrnQK04ThvYZ6APu7tmcm1PS7xiliHVvE65N7GKgAAAAAAAAAA1yWBCeAASQlw
nnu8hoqi2Fptb7Vabe0HjnOP8wTg2n5tabL1ly9ftvYDAAAAAAAAAMA1SWACSGRZlm4CjnCP11CW
ZaEoilAURSjLMuR5vtlX17UAbTjSPc4TgGv7tWVZtnlmKctyK9na8woAAAAAAAAAAK9NAhPAHnVd
p5uAI9z6NZRlWViv12E+n4c8z0Oe51srGdR1HWaz2dZngOPc+jwBtHNtX1bzjBK/5vP55pklfl4J
IYSnp6et9wAAAAAAAAAAcG0SmOAC6rrevLg979+/TzcBR3gr19BqtZK8BCd6K/MEvDWu7fGp6zos
FotQVVW6CwC4E7/4xS82Cc0fP35MdwMAAAAAAMBoSGCCgVVVFWaz2ebF7Xl+ft4koH358iXdDRxw
T9dQE+zbtGe1WoXVahWm02lYLpfp4UBP9zRPAL/h2n5d8Q9pNM8rs9lM8hIAAAAAAAAAAKPw7uu7
77+mG4/x7Tc/pJsAAAAAAAAYwHq9TjedbDqdppsAAAAAAAAYmR9/+i7ddBeswAQAAAAAAAAAAAAA
AABcjAQmAAAAAAAAAAAAAAAA4GIkMAEAAAAAANygz58/h+l0GqbTafjlL3+Z7gYAAAAAAIDRkMAE
nK0sy83rXHFZWZalu+FkZVmG9Xod1ut1KIoi3Q3w6oqi2LzaNPvcHxmjLMsGfSYEAAAAAAAAAADg
vkhgAs5SlmWYTCZhMpmku46WZdmmrMlkEqqqSg+BkzRjq7FcLrf2A4xBnuebVyrLss2+x8fHdDe8
usfHx8GeCQEAAAAAAAAAALg/EpiAs8RBqrPZbGvfseKA7NVqtbUPzmFsAbcmXWXp/fv3W+9hbIZ8
JoShFUWxtRpnvCpnOt+OVbPK2S1o+vdW6gsAAAAAAAAAwHVIYAJOVhTF5u+6rrf2ncIKObehKIqb
C0q8hbGVZdlWQO2tBNMCw4kTLB8fHzfzQJZl4eHhYbPvy5cvm79hDIZ+JoQhlWUZ8jxvXR0sz/Mw
n89H/dzVJF/N5/MwmUxu5vkbAAAAAAAAAABS776++/5ruvEY337zQ7oJ3rSiKMLDw8NOgFxd1+HL
ly/h+fk5VFW1te9WlWW5aed0Ok13HyUua7VanZRkkmVZmM/nm/fn1um1rdfrdNOW1Wr1KuOpKIqQ
53kIL+N67KssxPU9dWxdQzp+F4vF1c/tvWrm5ZAks4U7nZu5bYfm/luYd/tK571bv2/H95tj3MM5
jcftrZ9H7su+f2NkWRYeHx83+8f07LXv35S3MF/su5fdShsAYGz23V8/f/4cPn36FEII4cOHD+Hj
x4/pIVs8swMAAAAAAIzfjz99l266C1ZggoGUZRnW63Xnr3tPJpOb+IXvvoqi2LRziF/av4UVcsam
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
krlOFQeYN049l1XLCldNsHh67ppX3JZ07n4r0kD/UwLY475Lz818Pj+6vEa8ClJVVZvz1nWu0rHZ
9b1tbU6lCVRDacpKx+oxLlW3W3couedf/st/ufn7P/gP/oOtfa+hqe9f/uVfprs67UvkjrXtj8fK
Mfes5rq6RDLfKeK5fjKZbD2/xwlH6VzUpkk4CtG9p2vFpL5JX82/OdJz0DxX9CljaLPZLKxeVuHc
p1ltsisxDAAAAAAAAAAAAM7xZhKYGk0AdPrr6CH6VfI+wcDHBH4yjENJSfsC6GNVVe0EuTcBm82v
0p8SwD+UNLC+qVdTt1sUn5vHx8dN3xZFsTlXx1xTj4+Pe8/xMeLEpHhOaAt+32foJK0xi1dzOEeW
ZYOdx0a6itIxweKvdc2/prIsdwL9m/nwmP6Ij/3zP//znWtqPp9HR/d37CpI6XXYlkDc1ea2gP2m
/m3lvLYhrsFLSc/DNfzlX/7l5pym9/g2/+F/+B+mmwbVZ8w09f1f/pf/Jd3VqiuRu++1GtfpNc7R
kJqEnJCsKjSZTEL9koTcPO8fEicxhZYVk5rEo76rJrUlP02n06OfK4bWrMIZt7WpW/pvo8lkspPY
ecrzGgAAAAAAAAAAAMTeXAJT4//P3v2Dym5tCf5f9zHQpo1tmGDG0E1PcEBZv8Mw95fMJNWJkTBM
w4k6cNBRwWSDebYUOVa5L2boYAbEDTq4wYtO0PBawlElPWlz3mQaTjK8hssEDbYx7Qlm7i9wLb2t
VVv/pSpV1fcDwueoVKqt/U86vmvV1m9HT9P0KNB1bKC1a82BxZfKDTbvEwTaFtC72+28SWxKA/ib
VuZYii+w/lq4Kxxo3boBwn3aVDUFz9rVdezW1N5Kz3uN9T83N3i8qT26uKtouNyA6qbN9z7xBKL7
klJclx7EP0WWZbWED61bbdchSUwPDw/Vz//DWeXGDfjvey6Xm3ymSZ1tqyZZNvFVr7l0VuZqC9jH
dH0SeabQPvzhhx+KDLyfjOmTbfomS4pJRvq7v/u72mt9NF2jzmm3cB/zPcuVZSnb7baxfproFxxM
PZc+x6k8z48Sa8WTrK6iKBo0x42h87Ven7IrR/VNHAUAAAAAAAAAAAAAAAAAoK+bTWBSRVFUAZCu
uYNaMY0N4rSB7DYAVHoETbtJbL5ENhVF0dHnL8FNJpBDYGl5+OZ/d7tUmljiXoNeX99VDZQv6aQp
oWUI97xD54Cu/naNdPWqIcHdli+weyo3MaorKcVNOLi1NtT5Jk3TWhu698S+Cb3u3GWThtSQ5A45
jMG2BDQN9HfHqv0Mm8Shv+vKXHbePaVzfe4p2HY4pSFzipt4Nxe9x7Ulf4RhWEvgtfOQruDT1v9d
7txl635sgumlKIqiGks2IWcod1XAseey/c8mxOu81idZfYnnzz4rX7rXoPOrW44p93wAAAAAAAAA
AAAAAAAAwG27+QQmZQM+uwLZmwK0VVdQIobpqm+ftuBhV1EUVSLbZrM5SrKRw7mGJrQM5faZNE1l
u91W3/zvbpfMrefNZjN4ZQPlJqiopkDcIew80MU9vm9/Q11hVkyaixt43jV+3YSDtuOuiV6nTZ5Q
7hjrCqDXc3333Xf2pcb32sQjKwxDSZLkaF7UucNddaVvkpV7zUP5kibjOG68vjZufbfVQRetG1/7
rUGfRJ6pbP3neT6oPoIgmNQGPm5fybLs6PxxHFd91pck49ZX32dJfUbSvu1+pnuP9fXjPsY8g52K
2wdsXQ7VtDLREMVhJaemZ0l3XisPqw2690Ddp2255Phpev5yx5D+PWT7GAAAAAAAAAAAAAAAAAAA
Y5DA5OgKynMTJNqCSm1A7Vg26PWWtdV3mzF1qEk2SyRVNHH7TFNCAeq2220tOLgpEHesriRG5ZZh
TH/DcRLTHMlockh4UUmSNLaPG9S/xIosl0pX4Ria2KXtFzqrzLjjROe7tjHmJngou8rMdrutXu+7
Uo2Y/uWuNFKW5dE80pYkdHd3N7hulJa7rQ7aaB12Pbec05QV7fr6sz/7s+pnX/v1MfeYd+ezIAiq
1Xd0c1decpNk3DHy//7f/6t+duuuqU7tijrar2z/8CWm9OEm3KzNnIk1th6n0GdJN+nSJjTp/OO2
i372HGWY05x1AwAAAAAAAAAAAAAAAAC4XVefwDQkaLYrScZ+c31TopL9pvqugNqmINIxQbVuYOGS
39p+SrYNNRi0aXMDRJvq9lI19bm+siyTLMsmn2ct3ODguQxdNcSdF/quBINjumrFZrPpnDP7solR
TUlMRVFU7R4EwdWMjz7a7ntuvfS5H3300Ud2l4gnsUTHVlPyj5uc4yYY+Y7XBBBdSUff+/bt29px
Tdx+Z1dc6UoS0rKNuc+MTQ5TWodu/azN2GSZvsIwlPfee0/ksPqXbb8uv/3tb0UWGvM699iElbIs
pSzLapVFl3sv+cUvfv943lV3btl1nGn/8CWbDF1xzj3/GvvbXIk17nU+PT31qpsh3IQmpfPq3J/V
pikJzuXbr/Ng334DAAAAAAAAAAAAAAAAAIDP1ScwPTw8yH6/lziOJY5jb9BdHMdHqzf4AuiLoqgF
MkdRdBT0mmVZLSC8KfDZDWptOs8YNskqyzLvNfv2rZUbvNtUn02aklC0LzTVQxzHRwH7vhU45uK2
mwbiW3EcSxRFg+tAad8MguBiA1DDMBw9Nnx846NPcK/LJskMLZ+vDG3iOK6t5jHkvbfItk9TEpNN
sPEdM6dzt6M7n7V9to6HpnlJPHOj1qUmB7mJGjo+dB6z86w4ScDPz8/V623H6/30/v6+eu///t//
2xz1e033BVforB7VlLSh193nfJb7POG7pjZuHdq6V+fuX2poskxfYRjWEkb//M//vPZ6H//4j/8o
eZ53Jk0OTazU+1SSJFXfSNO0Ggvb7dbbbm7CYBRF3rpz36dzmX6GHu/eg3xldvc1zYfKPb/b39bS
v1xRFMl+vx98T/VJkkSSJBl8P+/LXaFrv9+fNPnZ7UNNc4+7X/uLOw/6yrvGPgEAAAAAAAAAAAAA
AAAAWJ+rT2BSURRJFEWSJEktwG6/30sURb2SjsQTyKwBk7rZ89hv2Fc20ch3nufn56OEqa6gQJtk
FQSB95qTJDlKmlord0WrPt+wb+vW0oBcDVC1dTOkT9iATbd+Xb7PcdvRBjPr8dlhxSQtk3iCSPW4
LnallabA1bW6u7uTJElaEyn6CoKgSuiyq1u4Y8gGdzclQbrv0XN3aSvDELbv4FjRM4nJHnPKOfIc
7dhndSU3qaKp3kREfvrpp9p/fbS/u/dG33jRuerp6an62a605NI53523//Ef/1HEzN3uOLWf6Qqd
5Ji2JCFpuTf0YevAXpeP1qE47++j7RqW5N6P2/rZEPf397V7bN/Vtnx8CT5TaN+x99u+80nT84u+
PwzDo3lKDv1wt9vV+od7nGXPYe9toZOEJR3Ps3LG/uUz9p7qq3vffDMHe0+aMo+M4a44aOcetw+5
X7Zgy9w2h8rK+gQAAAAAAAAAAAAAAAAAYD2uPoHJBpF26ROk2RYUqsqyPEp2cnWdR4NRfbqCgB8f
H08eDLkktw2b6sRlgyZt8OnQwNauPjEXX38IDismKd8x0rOf2z7RJxns3Ny2dK9xaBsq95r1fJoY
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
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
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
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
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
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
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
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
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
e5rGAIb23zmnuqpDH8SEOlnP6pB/MW5dzE/FNswYo7quY350ms3n+sEPfqBPfvKTof1ROJl0zoWx
obrS2elZqA9xvK/rOs1moe62XRhf6mJc8jxwWT/ZxX2nuKbXJp4LnAvjG2Ujno6HFNrX0D5l19Bx
DCvkl1MVx7b29/fVtqkshX6giW1NXVdq2lZ1PZM1Rh/FOt91ndqmlYn9uhB8KPc+9vO62FcxxvRp
TW2B92mMNxxHxX5EiK8J43fWysio7UIbVNd16Mc4J694bollJ7WxNo3/KPZFU98qZYwJZzg/Gs8K
6/v3+Yoin40ZZ3R+vgx8+NA5fcgqtu1KZ5o+riHcUMdC2N77PhI+nvdNPFeb2M4Hsd8REizFOqJ0
XOJWcW0UwvDxHOZj+xXKf6iPivH1sf1SH78o1kMbx19DHIZxCJ/SEDsno/zvxwQntlWo58q6P8Nh
HNImo3AeTumK+RPfxE8qpjX8XwpjhflYShX7KSk9Id/jNflwgKKYzybmRYygMUbWWDVto3msJ/Vs
psViob29PSn2MUy8RyAT2rW9vdDOSqGuN00jY6xm81nfl2nbVrP5TDcObshaq0XTaB7DPjs7U1VV
qmfxfBbrjInh//C99zSvZzo4ONCTJ0+0v7en+Xwuea+bN29qVs/04YdP+jrWubZv6128l5HqW398
Y3sxjFOFfm1d17EttWq7TlVl+zaxLzdGoW8Qr0eaJuRX04Y8MDaFHdqoMD4Sy1jWRnrnwnh1qjcK
/crKmqEexGM31I3AZ/XNxH0ahbpgYjr7EELFD/1XhfqUVo7CiPGVDz+sEN770NeN4XWdk61C+xqa
ktB3tLGst20XzoFd15+HQnxDnqd2wzkn2/cVYj1OYwl+GMcM9ST0XVJBXbrGjeeWlOLUDvTjUjFu
3sd7L4pBpfqcBxXLQnrdt0Mxj6w1irdv+vikeiwT61rMl5QmrzCW5LxTXc/kunCe6s+9VRXKU9PI
eafZbC/EKo6j+pgPadsUdh7H3PjdIC8/Sfro1Dob29YyvDLPcsO2oeymvFOxryHKMR2jnaRlRbrS
NcGwJHsd34YCHN9m6yeWL421XdKqj5fx3rhzg1+9wUXXxCPQH8f+/302DsvTvbY+jKnCtMKw5fRn
+vKT9XHS3kLbMO4LmXgPME+NMUXoWVT7tIzeh1SFNtePPrCUfyb8Y2K/XorB9X3X4RN5jo3CKwLt
7+FMCOeroVIOH81eTQQain92/Ip9Bin+WW713YYyl5NRzk4agoshpfZ0RT1Jm08de2XXeyGZMe/7
PBnyPR2TdP4bdjfulyntM/4zSlHR1ytW9m9NPJeE+IQCF6KZ9WlHmR8+mZ8n+uX95/zw+b7RTJ9L
y9R/Lp33+jISotPHLy3wzqmezWTimEbbNFLsF9fzWZxXIDVNo4ODA5lf/rnXh4lLsVJ4H07i3isO
TMWKZ62q2SwU4qzBTvG9iBTXUQbmR+sCyn2lt8vLQ/hhceglTEVzemnu/AjmJ8NcfkIfNgmRWvpE
GUZ8m+I3Wltuu0a/ZZmMtKJYngdtjMKAdfnZzJD24YOjBiAd5P7Yr497uTYNu/dBltkUw+9vOsVN
Qhn2YSJMtnz02mjceGbWJHmkjO8FFqxQJmz8IjV+6XVq/HwaeEndnz7iQwrCRUQMKeVXXy5D/U+D
Ft4Px8j3g4TDBIj+MMQ2ylozDJDnA6ZequtKXdOqqlLYoUthswsDmxrzWG5S2sL7PuExbeMT8qic
jU4Eq/jhBkx2kdSvjQ3GkE9DffD9Z8LCYXn6cPx/n0Gxgx9ejvaXV4FRDCYS0O+vD3qYqDSO/TIf
88jF49Evjwcv70inGyF5e2Xi8XbZuv7CJV5wheXDBXh/I82Fiz2TJm+lMGQkE9vmOCiSylteJtPx
lh8GIWNmxPfjvDJZPo9NNbYXN2qu8l2OI7XGeevXmPpoUUSWS8zAh1ohpe0mNs5KwGh5WpHWl832
RFCjEKbWl8LhTJ8qd5gWDyGlspM2MoplxpTtU/aZ2Nb0bUZYGGpRKuMxc1J5D+sja7KcHKfKSPLG
SwoDHE3baH//oJ+wYGwVbpynjfvkDi1Pnq8xGimlYVnRJpTnz3L9lPLYDVJndIhXEPMqq5vh/fjC
P1+eG29Txi/ur1i6vCBZuaIX9hf2k9qh8rhrIp5LUVtlVRQmytsgHuP42XT+yNb0Rzmcd+LKrA1M
7X5SHotsRVo4LIvKJX1OhYM7lPX02RX95EtLO37OwPrjqRDHNPArY9S1nWxl+xss3ntVdbwJ3YXh
Au/DM7KtFCcT2v4GpLXhhqi1VlU2wbKPcixXKavS+WsYtPRq23DTbrFYSPFG5TzepM5vGCke96X6
U5SPvJxICm2bsbKV7Q9eOseGMhDCDnmSfW7NAViqB1ewHGrKkbwYpiXrXCYufWb1/8s/Pd5TeNfF
Gxo+DmanG+qzqgo3ObtO1obJ9qcfPZP3XgcH+2HQ1rn+WKd02XjTwHlptjdXZas4QTL0e0OVMrJK
J5ZQnlalchTn/Ka3D/+cl3uK9SPsLtw4SnGo4iT0qX2ncM8rC1mzMBLeh4Xp9Tgt+Ztp5b7zuhFe
hzDTTXdjwmTEKtbbs9MztU0jW4X8D+193Hf6YoTCjbDl/kER97jrEKV43LIB7TKX1iUv7avf70Ra
c0t1PluW4tDn91I7HdrE0E7Gfn7cxhipcz5M0jw7U11ZdW2rtlnId07Pnj5V0yx088YNdV0b6orS
9VwoO+mLJ7NY7o0dbqraqupvwH/yRz4pyYQvrFShTrRtmMSQbth6l8ppyBwfrz37G1d9W5v1zWJe
pjEpGycjVXWts9PTEBfvtWjCRCPvwrf2wo2ZMFmgi3Vc8fqlqsLEw3QuqWezsH1/80tyruv3HSba
hPY23dxp2lau7fraXVWVvPN68uETWWv1idc+ofnenhZnZ5rNZ3r64VNVdaXPffZzevLkiW7cvKmP
PnqqDz74QGenZ9rb25O1tp+MMJ+FG0pt26muKtmqUts2fX128WZa17Xhpmbb6vT0VF5e83oW8zPc
JL9xcBAn8VjduHGjPw+m9mFWV3r69CO9dvNGuDkaJ0qECVxn8nFiUtuGyYLy6r8NuTffk4ntqnNe
bRsm83SdU9s0IW+zds3GyUXhhrNV5zrtzffUxUknKY/bppGP26ebh2myTKgXYV/z+bxfX1WV2jQJ
L7WLoeSpbVrN9/dCuLEc7e3taTab6f33/yRMQEo3ME24xm7aVq/dfE1787m6rtPZ2SJOAGximfSa
z2fqnOsne4QyPVTTuo4TWr3CpBHnVc/CJLfF2SKUX3nt7e2H+honilRVmGzRNs1o8py8V1WHSUI+
9i9C+R4mneQ3tW28aWxiHXJdmKiSlnddF1qo2B+KLV8cD0i7HLeVRkZVHb+s5EMaw7kvtUjxZkec
JNi0jeazkIfOdX1bnfpHBwcHenZ6GvPDhIlqdR3arFmtth0m76QdmJi2ruvCGHU87q6ftBTaEJsm
gKR4hdSGYPrjNcS7LzJxfWq3Tf8+fXczjYeM05+Od8r/0K8MbbRLYyTW9nXEeafO+RjeMLkylWXX
j++Ffl9aL4XjUsVJ+i5NNOv3FyY6yYSJ1n0iYhpTuryP7WV2zTS006EdzcdV+vyKGWoUxgzj2rBZ
/CfLymHnChHo8zUuLq+tg3AS8P3k/0H6vMqJS/F6JpUBxTHS0EeIxyHWgZRek8bU+jG6fJwxtG2K
aVec8OHje5PGw/pMGN6nv3DeDPUhxVPZWGYaS0tx79PW9x9iatJxD29G5SAtS2H3vO/zYYpJ6ci/
0JVVAhvPpX0BGInn6zTpzVqZLI/SJJzQD4ufSGXMx+vbfgwmVuoUWzN83suHSSXZNX2aMOrjpNH5
fC5jwrklTUxUlrcy0iLe+HKd6ycMzvf2+vLRNq0Wi0b7+/vy8qFvGe93dV049733g/e0v7enxWKh
WV2HtuvZM71284b29w/Uto1qGyZVV9XQNnsf6tR8Fq8N42TSNJHKxElb3oe05pOXU3lKE91SntR1
OI+EbUJbvr8fJgCH/lfoi3VdJ6Uvn5q+MxnyL5XNNIEp5r+PNxy9D+19Xib6z44XDKUsfplvKLnh
WMTiFbczUixz/Y3f2A9MUUxlJM5/60twX4dS2e3LU4xXnJybrw/X42EimPdhLCD179JE0FRHbZog
HPcTznWhrBljhnFtr5X1QlkemXQ/SkO7KYX5mGlCrUxM+Ei8nunfpXoSMtKYYVJYyMKYs/FDadze
xr5BWDb04dOkVMV6rniu8PH8b4zRfG/e90lM7D8r5WvsQ/pYicOxL9OQmcqqKUPBiWKmDU3EBfWl
7xLyPA8vwvv0egitf53S3u9pOMipbqZV4VyTi2PXuvrEpXVZbpbitgXnBj29wfTSCV6X2XrJucUu
b9uMGT6RFsddj9rAFe3f0vL0OaOifOQblKuG9SG0WL/7sMMHRkH2Yr9Cy1/ELMtJCCtLb15S8m3j
B/tFU3UgvZ96Ve44BXHO3IIs40MYo8NS5vLFDO1kvuycsEw4AYVDEPstad2o7KTNjdJxKPN0aIvL
41HkRYznKGZxX2FVKm9xq4nt055DvyIsy9Oatk59zOVsiH3MtKO4n7RZH92YP6VwXor9hzhR1mTX
Rj5ef9bxC1mpv5L6dmncxlgjE/tSe3t7+v9UQVoYersUnwAAAABJRU5ErkJggg==

--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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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==





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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

iVBORw0KGgoAAAANSUhEUgAACRQAAAROCAMAAACYQNw4AAAABGdBTUEAALGPC/xhBQAAAAFz
UkdCAK7OHOkAAAAJcEhZcwAAHYcAAB2HAY/l8WUAAAL9UExURTAKJO/0+S4KIy0JIi8KI+70
+czMzAwMDDMzM////ywJIcC0vIl0g/Dw8OLd4C8KJC4KIvHz+SsJIPfw+PDz+fPy+TQPKC4J
Ivbx+fTy+S0JITMOKA0NNDQNDQ1Xk/Xx+Uk0QszMsXY0Dffw+S4uLpNXDSsJISkJH8yxdg0N
V3axzLF2NFcNDTR2sbHMzJPMzA00dszMkygIHjQ0NFeTzMyTV5OTk1dXV7GxsQAAAPD0+Uk0
Q/Lz+UczQVc0Dfb19leTsQ00V+Hh4e71+ZOxzLGTVwCm7cyxkzRXk4uLi8HBwZNXNNvV2Vd2
k7Gxk3ZXNJN2V/cKjTRXdnaTse/s7kNERfgxL5OxsRVFuA00NLGTdjQ0Dezo6zQ0V7GxzMyx
sVc0NIl0gtDS076+vikoKfkvYOHb31d2sXV2d7ywubGxdpPMsUh/3jMOJ0R40oCDh3axsZOT
dn1FM1dXNMsMSri7vfz6+zRXV5kLOoxVQyEiI5+fo7HMsbHMk0BwxJN2NDR2k46QlaqpsFdX
dnaTk4WFhUuE5xAQEc3E1rSsvADSalBRU5OTsUBBQV9Yk3VWWLF2V2FmZACEzk6I79zi5uTl
6cLHzJqWmjISVdTa3w5VdrGTk3ayk1GR/lcMNHd2lP92KXQ0M3pldDY9OpPMk5Oxk2MRKXZZ
c1d2dleTk5N2dj4aMJKxdj9f/zAwMHZ4VFg3VTQ0dnaTz5QeKlKN9WttcVI0SnaTdiuOyMYn
LJ684QYHCJNXV4YKRHZXDf3C2+6DoT8/aZOTV/rg5t7q+PG6xBZ5tkBkqHvR9g8PDyR3SSk1
krvo+2eh1s6SekC88jw8PYOn8mx/tfuFxrvT91QJLVk2dvZefnY0V7N3fPyLijR2dphBJ393
eyIobrnH52e248VXU8tgKs3AxDR/o/lHqsfKzVcNV7gKT8ve9C6o4I+XxyXp/IaIjP/FO8O6
wXR2fWMmJNjIxOO2xEoyXBq+4054xJdpMfWiJHZXkwxpoFdXDQ1XV7kxpe8KIt8jxWsAAgiT
SURBVHja7J29i9xIGsYHn+/ocnF42OD8DwzraKM5fMxhWBAXuBQOTOgDDYPcwbgn0gXT0LBJ
b2AcLLNwXLBc4HwC40vW0cDCsIHBXpxfdnAck258qk9VqUtqdbf6Q6XnMXgktaTpUel961dv
vVW1N4AgCII2peuDL+/tQV3W/pcHeI+D1R4eAQRB0MZ0cO8+sKLjuncPVAQogiAIglZmorN9
QEX3Y0VnoCJAEQRBELSarg9+A6QIQI8Ortt7KV6/hmEAiiAIgnoYKHoJoAhBD1+2GCoCFAGK
IAiCehkoQpJ1KFlF7YWKAEWAIgiCoD4Gis7AE4GEilrMKgIUAYogCIL6CEXoPQsFiv4AKAIU
QRAEQcvrGlCEpCJA0VxFpKS4vVtH844AiiAIgjYFRQ+BE4EkFb1sL6kIUDSHiVqkoohEcw4A
iiAIgjajA0BRMJGiewethYoARa4IYe4BRkiLxBXVMhGgKFSdnOAZoCihnYMi0EQwAhStD4rm
H2mJimaZCFDU15p0nJ3mGg/xpABFEKAIAhT1BYpsEPIwEaCopzXp+FQJTwpQBAGKIEBRb6Co
QCEfEwGKegtF4/z/4ekpQkWAImirUPSnixq9wuKxgCJAUctQpGHIy0SAop7WpJmkoQxQBCiC
tgtFd9//w6d/in8XD0BFgCJAUctQJHHIz0RNoehmdO7X9AYl2MWaVPWbyYAR1M2ihFUGAUXs
9Hf6n9Kp2PoP18XjfdBH16GIzRtP3kUo8gybj7oDRRyIKpioKRRNfuB69+7dVa5pLuF7R6PR
+TM4ui7VpMMsk/1mmdwVP9VBqGNQBKsMAoqevOI6yfX648ePh4f5SWdnZ5eX374/Ojq6ePyo
vmZOCU18x2n5eEJIslCdn6ZU3SqlCRBoBSiK59XogKKNQxH//hXftxkUPT8XzveT9r7a+eaC
++1STToUydV85NlYR4xO5Ti0rKadI+RuOe9rjMe9DSiCVQYDRSeCiWwoypmoERTlqONnnfw4
9UERIakS0fhUUlKGqJSk4ROO+zcmpYcHKNqougBFN1e59/3hJ/JZtUiF/x2JNulzlOBG3hKn
/Nh8DvHXpNlpNhzbDCQoKRvXZVzHshUgfq23OQAo2kZRwiq7WJZVkaITESpaPFKUCJNMfAGk
8nEDRUb2LSwl1h04WtHyJ0HKIb9mUTVAUYehaOXus2eiSZpbxWcTpZct0tF0cNjal2Q7WBbF
ax2vBVcXKELb+c5/Vt6adCxhaGh3lg3FXEXDeYPzmfi9/ElEbgSJ5VWB3mIw500VZY+sMiSz
9EHRN7z3jBAJRWShSJGIE6WeGpzygJB73EBRos+ohSLNRISSXkCRTUUNexoBRd2FopUTra8n
InPhM/e/JkwvHPBkUvE3sfJWLL8Ea9n9qr7MVWIVjIdCoojttPe1y6+J8/XXpFl1XnWTwfmx
A0XxGvuU+0JFyxdl6FYZqFlWQRF5dZJTESmgqFGkiEpQyfklnckfSt2etUSwU5LwSJHqPSP1
iECoBCdxIulBD5qhoqbZV4CizkLR6kPy34y49313xf3vJ8f7ViQvxCaObBZyi/jGOtxvFEUr
Vcfi6ojM8a5b975F+TVyvt6adGhnDonEoqH/M7d2MlEgwUP8v5h5LT0CFG2qKEO3ylDNsqr7
jOhEa0JyKLq85IGin+dAEcccWXunpQQiBUs2Femwz2z3WdW9U0kHib5V0hcqavy3rheKvvuu
eg9Q1JLVLjt54+H1zfSdHOIi/K8J009Gk/Njfz2q/4SY6K2IzP2ebOmnx6Kl81rytrL4vfGu
e19dfs2cr68mPbQyh4ZqQuusCCJlVX+5iQJFBooiQNFWizJ0qwzWLD1Q9NCCojcHl4Qc2aqE
IoFEhCZCEngSK58o0T1jKoZkQVGp+6zq9uIiqrb2ejH8zJDgLow+c0yPka8BReuI7y69zMfx
lfS+06nyvyPlfyfTN4PaSH1k3O/cVuMq7neFRXQdX7bT3leWX0PnW9V9pqhoKHFoaKgoa9B9
xogMELE4UlBUJBMxlldfgKLNFWXYVhmsWdZEisibS8FDjaBIIZEJ+qSpif2IjxQsUVLEkIpE
a7v7LKEeFanWSRF7SvpBRQvExNYLRfYr1fT1AhQtyETLLwh7W0yF8l/hf1WLdDIZ1Tor7nRj
WZrxet3vYOmXxnnYu+19efk1tg5/TTo+1TNZ63mKzH41E6neM2aaxHIjt3R3qgpA0SaLMmir
DNYsaxKtf1YYlEORtqiaSBERWT7G9qiIClGFRKmhJZqaGJJ/9BklHlFNUdTqkNvrR6xoAfqb
B0V5Q1EqInorbg5Fgyd/+/qJutHvyd975R5nzIm1aOMlDJqlokZQNFItUq6f8rfmrWqRTka3
lUGFWPkstSUj6dLF5n8f49kCzHwrnjqg3W8sdlnxZApXriL/dt1b9AOw+ReLX6vSP/MLY34O
sUP8pW9mnb4T3lc8qYbVTNXkjZKCzFgzOaV1VjtNkeo9q0QesNBWijJMqwzcLKugaPD+yK8q
KEpmE58TqoaS0QJ1JCyR6lSZGijinUmJkszSDj9YlCySUT4PijxDUcgCUMSp6JteMtFaB/HM
QNDMgSZQ9PxctEjl/HA8VP8X3SatniROln5ENOLpfekZI95WVY6EcX8a86RKVuyJz2LtuYnx
f9w1RnYiRNEmnX+xvjqSF8gTY9v9ut/MPn03vC9r/m5UjeMecygaWvMUZQKKVnrLAEVbKMpA
rTJws/RD0cm3R0cLQtGe4RV7i0NOOlvR6/xhmroMlLo4QMtBkzTxwVLgTNScitY++iynItZH
JvJQUXt1zGx1FS0BRcdTs4zAB94kfXrLG6S8TVo9SZxpfarGoR4Bp9xv0UwtfojP1J4IRzPj
KOUnA9ODM+N+ZT9A/cX6UKQcKdGNzWLsMJHpnfIM5/Sd8L5M1A6rQZEYlV+GovqEIj34zGQP
Fc9f1mqAoi0UZahWGbZZeqHo4/ujxaEoMaCSlhAnKcmezrE5FIluuJ5BkQimNaei9Q/J50bT
t3yi7avJ6LNnxvt+eppbxr9vJyp3YXJV8xrEyumKLdNCtGLoTEXeI+35mLUnLhDOLibMvZen
7Rs3udh0VKodfSsRjWfFd9DfzDl9F7yvsI6m7re6+2ww2302btJ9FntiwICibRVlqFYZuFn6
oOju6GglKKIu4vgnY0ztU0r1fkqohiKq1ztLXWjqRU6R6mBsTEUbmKdIOF8w0c5B0WCiUxd4
PufT/93qfM7J5Nc6T6FcFpMB9lJL1bjOqJgyhVl76npxqPC8jJT9rzZ8NmhwcWT9XtuRMr0M
iv3N3NN3wPsy/VdGS9ekA73o2bhItB5ISGowd+NAJ37EJSgiMoAEa9pkUQZqlYGbpQ+KLpaC
oj01byNVPWZpPRSZrXQ2GELUSHRqjTLj/UjicJr0BYqSYjLvdFegaIA40U5C0Ztz6X0//DY3
q+9fTFQ6J9dt9VWy+TQw0fpq9ztw3K/d2BSeW8Qo9HsVl+fJFdPEqUNzLmZOpMN1pMydJU5e
b5++fe/LigHV0bI1qTMkfygGoy0wJN+MyS8Ze1SbQwitpShDtcrAzXIDUOTW8PonpWb0GS2d
m+rpGeleMXV1ksqzFCX1AIqsRPSGVLQJKDr81xAOc/eg6Ea63x+5H/rrreV8J6PjuveADXQy
JNPNuwXdr/TcsaiMIxOEr5zCZM7FTLpqrllHyhxSUt7XOn3r3tdqMTRyv/4ZrZeYvLHIKVKh
IissIJ84us82X5TBWmXgZtkuFPFRYQ2hSG/plTuckfdpkVNEi06zVN3XXNYXJmpKRRtZ5uMQ
DnP3oOjweJp73ysepP/zL1+NPvwo9Ja736pJ4qS3iGMzAlhnHXjdL3Pcr1meSfo8Jt6n/PKi
Ko4JqXK/tRczx2mVHanH+0bOa71d7+tEUZu434oZrQtAGnMkKpZCq04riovsf7se1IEHQNEW
ijJcqwzcLFuFIpNTtAAUpWUoSooR+1QPOnPIQHwePhS5ExakTZLKsfZZbyNFt7pFKnI5dez6
Vz7Mpe4yPiRD50dGzrwljvvVnpl5sjJ5JawakHYyZ+yM1rVfvfqLayeEm/G+7hnb9r5uz3KD
9RO84YWaPrLqtWLtZWAZsWfzU8tFAIq2UJShWmXgZtkeFCUOFFHqhSJ+2IUikT7tLghv6MlA
UuosBZb2IlJEk7pdQBGgyNb5VLpfkcs5eqps8bY+eUG0m4wvK5Zfm3G/rJh9RH4WF2Fz3rhU
I2/lvVip7TnjUusuNi252P4SMvOBRTPJC+7p2/a+MavbbVqTqlDR2FoIVu3UjD+zociZVI83
2s2SaNBmizJUqwzcLFuFIiunaGbAvIkLGZpR483lmiCpPRuROyTfm2/ck2U+FhOgqK9Q9Pxc
TA/39sVErK30x1+EXtzWJy/I7EuzFVe6X7lsRGRNEydX2GZ2y5GZlSWiOHYmcnL8Yf3FwsWb
j4lVN5gFvd1vZp++G7PELaCq0WfZOOO5ROMCk/jeuCaGxLNPZOteJL4WVBSJiWdIDCjafFEG
a5WBm2WLUESpAZbUTgUqZRCpBWETETOiZu4hqqcwSlORhs0/1oukJaXEGvkpIGhpKJorQFGn
oOjwWHjfYrlJk9BZM0mcrkAHVgy+yv3qWft1WF8sGRCXYu+6tRmR0kCX0miVuosH9noD5kJx
qJgQxbmrdXogUCQZKBsbKpI7dsa1rx5VtZNe+tJORVGPvHZlH6jtogzXKgM3yxZziuqzgsuL
eggUUjnV1Fn9rOiLq7ov9X0KAYp6Gyk6lt53xvl+NZkiM75rUDQYZiK5Wqdcy16z4TjL5sR+
YyJWn7JiDCzSS1GxOIranosdqi9KWGU35YOiVxeu7u7Y3Z3eefV4vxUo4mPtqZ51KKG0NDmj
WEW26r4izQi9Z4AiQJFqk96cV+jqGI+vc1CkpaCoOr26BEXMHmnEYswntuVIEawyHCjae/C4
Ul988eA+6ANQBO1UpKiGl9Ak7SwUZTKHKGsykTW000UJq+w6FN3ff1SpfTARoAjqDBRB3a1J
5ZpnA2viIigMKII6B0UQoAimASiCtluTzsxoDQGKIEARBCgCFEG9lBpzNsSTgCBAEQQoggBF
EARBgCIIUPR/9s4luXEcCaDcMpCRvdNGW1+joy/QyzqCtzrZRPiMI4IgiU+CBGnJbUrvTU1U
WwUCICQZj4kfIEUAAEgRIEWAFAEAIEWAFAFSBACAFAFSBEgRAABSBEgRIEUAAEgRIEWAFAEA
IEWAFAFSBACAFMFvlCJAigAA3o6vj09c4mX4RIqQIgAAOC5FF1ziVbhdPr74SCNFAABwjI+P
GzLxOlbE+BlSBAAAh52IQNFrjZ9hRUgRAADs5+vr4+Oj+wuVeKmp1h9fDKG9nBR9AADA0/ki
TvSCsaKRz/8AvlHPASkCAHg6n5cbcaIXnG39iRS9mhQBAMDTwYh4U+HXcrlcL3eu1yttAQAA
AG/M3YZGLWKQGwAAAN6ZIUo0/I9IEQAAALw1Vz90NngRbQEAAADvLUW3MVpEWwAAAMAbM8SJ
xpnWtAUAAAC8sxRdxhlFRIoAAADgzaVoDBSx+gwAAADemnFB/hUpAgAAgPdmcCK/Jh8pAgAA
gHdmihQhRQAAAPDWXPyS/CFcRFsAAADAG3MNg2fMKQIAAIC3Zlx9dmOiNQAAALw3fosiP9ma
tgAAAIA3Zjjjwy/JPzanyLn7/5VmBACAWkfR93QTcA7GKNFwJuyhy6XvOnU0IwAAVNC+F1oB
ziFFYZr10eGzXgYvAgAAqPQTBIrgLAxBots3pMj1BIoAAGBNiugm4CQME60v35Ci+6edRgQA
gPqzM90EnAW/b+MwgnY7mAEjxQAAAPASUhSOg73+TVsAAADAG3MdNyq6/Q8pAgCAp6DKoAKc
Q4rGwbPr30eliPlzAACwhjCrCE7CeBjsdacUiSyf9R+rqrvzkIcNkR1JT/p4IzyWAcBvQVmT
Dydhmme9a/hMpwWWovfPuv7Ep13uZXoe8fVsXh7qzrqSVJ9c8TbnakzVdK00Zd/sgg0J0UqA
R8FGRXAW/DxrP4ZWGsFdd6ae9f6fGkWHpk+4iPQ/EkyRoETN3yyXDmG7xdxkTy7Pcouhbacm
lbSqj5DMPfe4tym9cd3Zito1pXIhVXZp9qqVysi+rV5Z9poitRLLNF32IwC82uMlvKcU+YM+
LtbneN6bPe0hoi73h4bPNJS4CNiGOki6rbxGIaZfIUWx4iXxr8ccEvQ4KfJ6oJafru7b35TK
9VaqKSY4Nb2VSppeWpG1Ofs+RSolSl++1lQcAHDMB5xKiobFZ9ddUiRx3OVHqln08Vu7gUmq
M7EUSXso5plSpMMcqekHeXCR8qAxzRAx0cy37jXXdR1oSeXGROKSYVEvYU5EQsjHTGVk31av
Ivs4TBQKsEq8f57mZHP9x+L4ZQ+w/ZRGI8BZpGjc0romRXO3rXZf/TNSJLulqMul6JAkPFOK
xBY4/U2/PcaPQNL4U8xuPaTVlmq+72gK1HClbKUysm8r0cjeUG+jRFeRH4cUAbT8IqEV4Bxc
p3M+TCma1GOYTv0fS5ErOreXkaLkMepXTUgc2z1pvNhC+k29WE+VDH3V9NdKZWTfWOJa887v
tlEiUgQA8AbcghJda1IkwTBChyETkW4Mj94yrJdfOpM5TbKMXspF9VIutDdSDaUnxQ6L0bKK
2N1ySLD8lF80/ndR5PhCIkVJvbJyo5o17RyQ9qXRT6mGJY261qquSCVGQ2/fdlHP3NNcFDys
G2Nbqs7QwlXZnVIZ2TeWuJq98Y+xFDW8kQAAcGqGadYXHy4yf9+P/cvQI4SeJpsEG3wgm7zq
ph/CQvrlET6bmDrPaHWRZKWpVJOJsN08z2VjOVoIb4TSq7X3nZ1mr07r/8UlwzpRvbJ53F00
dtM3rbpKrpekmLwW84oos1WLEst7NFrVvO3NsE9cv2FAtWoYbaks+VgNlPVz4LLIvrHEtezF
aAqkCOABPGqPOYDnS1HYvPFyNX/fj33BIBhVrUhW5mj8gnbR3kJieIwmsmOnylYHdcnaoBUp
cnNa2ZAiyfNaXlgGVLIC8w40/FjeUKsUadFr+yI1FbGiVY0SjXeobFXrtndJkc4fjjUpWk9l
S6XbTmVk31biavZWFCkelEOKAA4hrNOEM0WKrmH/RvP3/RgRGbqSOJAi0SYvMq7Zdv51TWYP
37v04XWZfGHSiWjy6rgR0j2PpWPKUo1DQUO8ZBoTCi/0q6Nn3aRz/gbiwI5IJkXTwGA0PWWs
RDQSU9Qr7V1D12jcUJMUJQEJt7TfNDDUV1u1UmJ6j0arWrfdJEVLTroiBG2pkuaIdUfs50q3
TIQusm8rcTV7ww7jedyKFAEcdCJ1DiuCc3AdqUy0li5IUWoBEnfd+seONaT727gkDiOV53Yr
lRWYaZhoPce4hiulmplLHC3Rt+gfy3r18+iczIXtmJed9aXzjxoHfMQIb2S7BtVKzO8xb1Xj
tndJka+nbEnRRqrk3Zzlc45rSTWVkX1biWvZW5uAp+vd4rFMpAigEZ2ev9i/Ec4RKRrnWVel
yI1dvi1Fwx6KlbGidGpH9INE4QrJO9Pe7NYPSNEU4/IHESYDKoUURc8zWSWWuFBeL51H55af
dvSQWcol9Bb5mBqtkrVqtUTJ9trMXzdue48UjSK1JUVbqZInyflCv0uQGtqSpMqzb65XNXuj
GZJhTXtvSKQIYEuKNP0b4FdHisaNiqpSNOjE0FPXHEVdrVPV3lzJHXXSYmxJo1ZXfliKnJ+B
I+tSpGnpkk56cna9ltG5fnEZWdsEZzXAMN1sHJkw71WL7aXNEjMpKlq1vO1mKXJxS1XloyVV
VNl4k9Bw+EmuH0mqIvvWelWzNwJmcZpxdaVzuRUhRQAAryVFl3EEze64JSxBq0tRbfhFM/cw
IheaLdNylfjGESnqJinSLSlyVnwj+VejXi4EonT627yhZilaJiUtdjCvrY93TVZjWZlRopQ3
kUuROy5FoUIbUrSZyrin5ACZtF5JqiL71nqtZb/6CZ4uawzVAQDAWSNF19rZZxLGDbpjUlTR
naWT13T1eiXVUSlyfjDb+b/1YVKky9Rt8VsVSBrgadIiV4ZBXJdNKeqtIZvivu0Sq1Kks30d
lSKdfWJ9ovV2KiP4lW5j2VdTFdm31quWvbEPttoN09e2mAIAgLPjF55d6hOtx4OgalI0TM74
p1GKxNId0WwnHnmoFAWde4AUFfUaJ1updy6p3VCzFIUu2pzDsi5FdomZFMlDpUiXPRRXrthO
ZbhHNjdf6qmy7NvrZb8FZbtWnCjfXhMpAthE+J7AuSJFl3qkKCzjtqVoGNz590ikKPq2pEes
2amOSJH2ToJpdJrt2vPNSNESiPLrv7PRuZZdnIu+dJrA5cw4xvp9GyWuRYq670iRRps3re5T
1JDKcI+atWh+/lqefVuJdSkqGqHmRNlnESkC2OZpByYBPCVS5P/UOu6xe64vBmsaPls983Te
wUIeKUVuWGmk/gZkjxQZPmHVa9rQUozdAre35Cj6Uhklq+8OSJFRYlxjeaQUuWi3R13bObMh
leEe8e1FbZSlMrJvK7GSvTF9qOpERIoAkCJ4ZSkal59dbrWOO+yYWJUiqS/J7+xE1pH3bjXV
QSnSEOdxO6UoX31m1cs71xiIclq7oXYpmiNPG53tys7Kri5FRu0PSpH08SKw2oVtqQz3cOZI
YZ7KyL6tRFcbiMwv0dU8kCKAdoaxfedYkg8nkiI/hLbecZtS5ERVaqeSp913XzvzNMm8lsqU
ImmQotHntHbSmGkHUSWifYryevnjcnVyLq3cULsURefLdV1996CaFEldimq1PyRFXXJUiKtf
0pKqdA+xtgooDcXIvqlEqexE4Mo1fdo1RJuQIoBN5oEApAhOIUXTovwjUuRjMP9Ud7Q2u6Ml
cFGuOrNS2ZKxHY6V5NS1HVIUn+2whLDyeg0vTROOpkCUfCNS5PPrTYuMMs6lSBoiRVbtj0uR
i45i06qltqVSc8nXsjLR1VIZ2TeXmGdvtGpZolRmNyFFAFsMX0lV5asCJ5Ki+uaNZS87bpwz
HEXWOfV/xkXhd9wSH/VHosVHk2lYIRUdMDEtJY+2VzZS2VIk00L06vp36ZejsqItnZfaV+1g
Wsyl6dlnab28xEhsR+YNNUtRlx3N6qvvaxkN/hWtapaY36NR+z1SNJ4zl9UrDxCWb9h2Ku+c
C7Jc6G863vvJTJVkv6decfapBtdKvOt/+ISzeSPAThwHwsKJpCgoUaMUpSfU93+8FP3JD2HP
z7Wfu5r0VPbKknPj7HZjOEr7fuOblpx+Gn834ystO5jPj1dJNyAqap85V+0siCYpyrrv+Gj7
eQyvaNWyRGet5S9q3ypF2ufvbVQvySXVrH09lbntwHKhSksq2VOikX0ZTbJKdBzzAXA8VjQ8
XdAMcAr8LkXX5kiRKUU6v6yuLkVTf7R0RqJl/1SmqkjRXGa3KUWyU4rCGvfhp+Vfi3rNsYYl
SmPeUKsUlRPWG1q1LNGUoqL235CiuXVqh3A0p7L3YgoXxpsT1FMln5w99crCR9qtS1H+XiBF
AACvGSkKuzdeD1wcjMiv2ZJ4VKf2vFCksS5ryWlfwiOPNmXWTcVJW6Ua+9KW3BpLfGhjWXnJ
wVSN2be+RQfrdfTjhhQBrP+u8yPQRIrgNJGigBEp2iVFsK/l6Et5IwHe4yviWpYLA/wOwtiZ
tfqs4dl5+gMH+tJnBrrgB8gP6wWAEg3nRPLwDOeQonGbIuuYD3iqFOWTyeFs9KypAWixIuX0
MziPFI37FF0ORYq6lRXxgBQhRQDQaThFk5aAU0jRJaw/O9gx0CUAAMDKQ6A/LYknaDiFFF2q
mzf+n72zWXIdhcFotpRULLPJE84i77+dNtgJP5JNnPTtODmnpmam3aBgTEefBQhEEQAAAHyR
KLqcL9cpUHTdK4pi5AUAAABs0pYS9pXAQUTREiraO30WRIVwEQAAeF6iTIQL8Nai6HI5X9PC
op3DfRroiCIAAEAUweFFUUppvTNP0aKHEEUAAIAogqOTUzeaB8IiigAAAFEEXySK5tSNF0QR
AAAgiuC7RdE1SSIiRQAAAPDV5MyN+9cU6e1fAAAAlqPAScBBuFySKrruFUUAAABrCGd8wFFI
J3xwICwAACCK4OtF0TRz9sTuszTgiYwCAACiCD5BFOV/9ttgnTUAACCK4Pii6JJCRZdnps+e
E0V/sgJPfvgcKfcvu1AXVi+9svWffGYS50EBogjgnZg3n+2ePosx6lOiKP779BX685mJgyi4
d+pCnbsuxLVLr2y9fHB+EyF3CwDAO7GkblybPtMf4eNqokli/OcXWL79f8ST3HXUvbjudqav
9OsPaal3CzH9chdKpR5/xkJsRVF/6ZWtRxQBAMA/Yo4TXdYOhI2u15KQ3Jr+fLnrpmddiiRh
cfvNvxdFcf7Ee9QnxrFqC3/oyKym/m4XxtA/XO0/Ufc2Yq8oivH4f32IIvh8VOZBLmzJgQOQ
zz2bpNGaV/TGsiTH9PPrLY/oiyL9586ta+vQfPekDeK0FCn+5ey42dTf7UJLBb5SFG213hEO
H7FIAVEEX8D8Vh1DpC/gAKLovMiicRFRfqnPomgrVCR31/rzv/EvXYHuEkVTeGm5wz983fn3
UkCs1VevFEU7hQOiCOAwqiioBjQRHEMUpbPP1o75WAkUndIaa5n+tbFsefr2n0v8vC/8tSiS
7g5HpMGbfLv8wfdZNwLeQBRFRBHAQdi7sQXgD0TREii6+OO5c3Y6bWjPp56FaZVtUkaroaIs
ijTbW1yBt5X7br4odUr76LUu1Ndrrhmlpk+vPlbTe8z6nnJni1Rj3mhqtrnVLuceu/vpmup0
YWfebMTg11nsz7feI4rMzjFbP/9+vj6Plqb15kPTzUwLTkefqhHn2qpL9bbaRAUr5nMVRBF8
BRpCIJ0dHEQUXTamz8QKrNzXG0/f9WrGX1orc4kpYDSXtdctx/qyLD/Mm7/qQloHc5rdYW2p
WCyWzqakuhJPDyjD3rzR1Olul11r+kjFomnLKkWrqWYXGuZvFx/1wenxd1GZHaLIuker9ffe
mq8vLSiGhP3QjAEw0oj7RxZbKA1bbaneVvU3cP+76c3f7hFRBF+iilhkDYeKFK0d89E6RHU0
xHp0VLIHOOXVdiuiqDOvyw9FbiGrDbESO3apEDpRFIZEkeW8evNGU3OELMRSpAxVzC0rt7qb
TTW6sDefFem+PATp8XdhwB2iyLrH1dZLIYpqoWw/tH4AjDUiX4y1eu5tdaUMW+VH3/5uevP9
PQIAwLuIoh+u/pb81sekTVgpRJTefHVJQLQ+fyZ5pV1afCTldIw2IabG/N2LxHRdZXY4cbku
tw/I7VApvGRTKs93TO/sy8THfCHsmD0zGtE3VSpPruMVf36ep2RiOdloNbXpwt78vRH6cBA7
GevCgDvXFLX3aLR+UTlVx912r+TWmz1hDICxRmj5hFxbRinzaWsbWzQq9vcI8AWBIiFcBEcQ
RT+C6Hq++tNnja+L9c+T61bxgim1KDrNouh0asSAuObLMFAsjRUhFnViOVap/gOtYJj5+Xoa
M981tZBtMl7RkaVmU9tpm9a80YgHRJEYynjvQmvrHldafxMTsdembU+M31nTiPtDkEJFSv8Q
1Pig2Ob2lrY5fcVYhvAQRfAFpC9Q9p/BIUhHn6VFRa6akZXAURRfaxiiSPL6Fl8UOXMfsbpe
T2rIyQ5UWaWeEEUrUkVbN2lJp1uNsYp13z0gigzzUk0pPvS9JLe5PH2VKBptfVhvvSGKBt9C
N5+QYcsqZdzQ/ad4N7UyABBF8A3kv4LIWms4RKRo3pA/KIpa1xd0zCkmNzN52GkmxNconpHY
vNvHzg1ptU7WK7VXFAVLFEUvlhNtZzp/J4xVfEIUdeZrx/yQKIq3qTh5kSiKo63vI2uroqgf
AGONiEbv9rai8wyaG5IiQ2l0KjY3gSiCj2eZhEcTwRFE0SUpojVRpGuBIz0NuVuZw6fJA/qi
yD3SwS1U7UcTPW2Uepkocs3Xfq4slrtysOLcVtU6hfamKLLMl9ceFEXFJNCLRJGMtl7L3Wd9
67ueiKPH0sU2NnnLDBCLZV+1LbNUf0N94LKvKN7TAvhM8qsVmggOI4q2IkVrokjiA6LoZG1d
HhVFThvuHirWO6idUq9aU+Sar431HnCw4n3fdgi7RdFsfr8ommrKfLaJvkYUDbf+UVHUDoDB
RjQ7Eu3B5JQyJ/HKCJtVEVEEX0Y6+0xZZA0HEUXXHCjytuRviKKcn3pUFM1rZp8XRWrJiqwi
ijQy+ruiSPeKopGK807uxIOiSF8nisqEQPLuoqgZAE+JotbWqCjSW7YJQRQBAByOS15n7Wa0
3hJF98S9A6Jo3lH04khR0Zb6iDW71B5RZO5ts80/GilyKtbZBvZHik5PiaI2rdN7i6J6AIyL
IrtYZcsr1bUizMm4gmseUQTfCHEiOEqkKO08m2JFO0XRmFOUZZFxOD0titQVRaciHZC+UhRp
MHI6PyqK4iIMRyrGJiH1qCjSV4oiqbaY6++LIn1SFJUD4FlRVNkaFkXLPHF0zSuiCL5OEUWO
+YAjiaJLChe5ckBW1YGvNQxRNGdMXNt9FkZEUTi5Tl6KPIVmqV0HwgYjp7NtvhNFjRsfrOi4
/xFR1JnfLYqikz3gN0VRaB/kg6JoW2h0T0i3VaFXKppi2RWTbUex+wy+gmltIqoIjkE65GMl
UqR9nqJiaKc1F1G3fZG46RO7PEU68nKvrgfUPmteXcoURVt/rtK5fM9853JD49HHKvp5cXT9
GRnmd4siL3vAr4miU33UxoYo0h3q/GTMU/rtvtlayRXRy+dGTEZfYJOnCL4ByasmGOtwjEjR
vCX/6sdIfHWQhnmU7XDLqCgSN6O16cfukYV+15lVynaaI5MYZeZiXTPfiyKpnfxYxSoNYFhv
qpPqSYtchLYo2lCD0sxs6u+LIjujtdX6tid0Z6So1uHq2TJK2TeUD5qLK+alzNDdpHPnXRo+
UhQpogiOI4rymqLr2VcD2vw8He2hKjGWoijsEUU5eUsszvKqzC/l045wrVxR1FpyLBuopVIT
bSlbFOmy/Xpl02jaDCaS0gaJb75tqixbuyWWGZWGKuZCMbSHbdVN7bqwN++Joq1TJrzl7ZpX
CJQHsBmXjD5sn6PR+lC0flUUtT1hDICxRqTzy3Tua/FsGaXMG5pPe90wn+8x1qvCOfQDPhSd
BnxkdMMhyGmKzu6WfOuEh/v55JUoig+KIrG2OXdnvJsboGJ3RrqzX9o4Gt6YXoldVUcVVZvT
o3dkfdHU6b476yMVi2PtpYknFcbMLuzMe6JIN7xw1W9z3Mn4RHG2q3fi2uicrmJ/grzX+qZb
t1vgDSbt8g5YtrpS3s48Y7w15m9XYregDrcBn0gMgYPP4CiiaF5o7YoitZYyz966EEUbkxbD
oqgy7/seXbzK7UIM7SWjlCOKbp+52lXSfkJr3vb7MleMfruse1RZymg3IReKiTGjC1vza6JI
V+9XupDhb4ui+33r1oqo+qGZA2BIFHVDzrE1NDAtbdOav91jdwog02fwobEiEQQ/HCdSlGfQ
VkR++1WdDi1IjuG2fu6V7wE381uFtquNWBov2H3CZq3Zo5ttHfm4nU0dve339MHGHsWh29Th
pz32ZHXXwBwb0aYhJBEAwN+SD4Q9u8d8rDsnTTmXhYQrg9EWeKjrEAkAH8Hu1xWAf81t+swV
RaubYqaxnteMMmGMKEIUAYD5x8yfMxyE8zJ95ouigc3WODBE0asJ2yk1AeAIaHemNMDbiqJz
TlO0IoomVeQNZ0mTZ8rOAkTRa/qr3DrImAL4oLccRBEcQhRd5tmzy57aMU47dehFRNHr+iuI
pNdKNBHA56BEfuEYXPI668suUSRpmOP2EUUv/Oa0cksBwKEh8guHEUX54DMnT5FsbDhPwzzi
9n0nH+mdB3tM4ryjEQA+5m0HSQQHIS+ynsJFhiDamhnTgCgCAABEEXwGKVJkJm8cmMLQfM4f
6+cAAMD3FXQBHIR585khimT9xIRF/3PMHwAAeEhehqGCMoIDcJ1E0fXiHwi7JYsY5wAA4Gmi
OeUY+RvhENzSFHVritLpnwxiAAB4hShiVgHenzx1Numi9jdBhMwSAADwDPPiVM6CgoOIohQm
up7Nhdbbwl7R/gAAAPARomjJ3Xju5Y4MCB4hmAQAAAAfIYpSkqJJGNEXAAAA8M2i6JwxtuQP
1J5yD9OHAACwAtuU4SjkZdbWMR9DOwVUmT4DAIC112d2nsFhRNElT6Bd9omiE6IIAADWCIGt
zHAQ0oKiy/m6b/oMUQQAAJuiiIUWcBBRtBzzYS603h7IiCIAAFj1ExJZVARHEUXpPNjz5doJ
ItGBc80QRQAAAPARXKcgkb2maGAaOMYYIq8AAAAAcHxuW/K76TMJYVPuaIJeBAAA5925/i/A
W4ui6yyLelFE5wAAwHOEfLC4sNYajsAyebZvS77EKASKAADAQUMQkThrI4A3F0V579l5V/LG
GFU5/AwAAPyX57RAlfSNcAjS7rO0K78byNuVw6B4AgCAb2U6XRw/AQcRRedrPuljx4Gw6H8A
AAD4GPyzz7Z3lZGjCAAAAD6GJZ91HymKP5JnYxU1C+cAAGDFS5T8z961JEduw1BtVUBh2Zs+
zFxglrlEFrPN+WORFD8ASFFqt93tea8qExvWh6Ig4hEEQCwrAO9Aim797LODHEpeVxG4iwAA
AACQIuBHkKKQf+Z4ij4Iz7EOo3QjAAAAMLARBegO4PVJUSBE97u/zQeKbQEAAAAA8LeQouQp
shWtFyRRAgAAAADwN5Gi+59Ii66cjYrWAAAAAAD8GFIUl89sSj5FjE5mWpiRggYAAAAAwA9A
WD3745GilC5weAWQIgAAAKBnIpB7BrwR7mmTD7t8FvxEB6RIPgBSBAAAAIAUAT+DFN36MUU8
JkWyZacJSBEAAADgAwn5wDshFinq7X12QIo2JxFiigAAAAAA+AlIFa3vl0gRrVg+AwAAAEaG
IuUoI1UZeAMkT9HFlPzNIQo9BwAAADqQLZ6It0k0goqA10cqZ+1knwEAAADAY6CwY1T4B50B
vD7yfrCGFIkchFAz0ccxRIifAwAAAFyEPcMpeYsA4PVJUYq0tqRoyOtJmr2Poe0AAACAtRWU
5tCwEsA74B78RP6GsH0d5ugOjUAFCgAAAAAA3h+37CoypEi6MdSsnEOBI2EaAAAAADgmA34i
4J1IkV+8UboLaGwdQ4wgOgAAAKAzjca0GXgTUhQ2PvPrFPV2PnPVW7CCBgAAADjW4WPWLOgH
4B0QM/JvNy8ln/30s062GZLQAAAAAIcTbc4isCLgHXC7/YlhRahTBAAAADyDE4UQC7Ai4A2w
J+TfpypaE5myRIxVMwAAAMAHE+3mA6sJwDuQovs0KZKqLtGu3Qz2DwAAAADAT0AsU7T9q/9i
2I6kykSJGG3FrLdfQP4BAAAAAPgJpOi+bwlrSJFaF6PMkpiretbgRAAAAMAYKFUEvAfSdrBe
8Uaj0+2vvAUYIaAIAIC/G1SZ+/1HrsZGxkC5hAovIEXAGyAWtPZiivAZAwAAHIFrc58q23LN
ABh8IERfwKQA74D7VrzR9RQVdiQGYPwAAADJ3HNDkWTbE54VbQJzREoO8CakKOXkD0jRagDK
/32Diy2SyaibCQBfYNbd4U8RoHSc6HP/8jETnAh4F9zSzmd3FG98B5AdlOUyTcWGdQDwKCli
szQmq2UA/JcvoDGiqoC3IUW3UKWoU6cI6QIvx4mEqBmVt0IJdKUyAgc2hT4FgMkvZocy9+bT
8+KqfxgrEKwXAD+WFN0jLbIp+bzZYOj9hSnR81JPWdKssx6B4xgl7vDNI3610reTorm+6mbv
NFm+3lGs/j97xzONaPv9tJ0d9A2rH16FB8x00WuUMXZywYaiYRLZN82DOg/En/NtzeqBbtU2
ExPnY2zuSjFpOevFOXUCgG9B2g72bj1F65pXV3YlZnnxdeHprWr1bI9nTpoawnLN789qvQPL
ZagaoKoiUiMHUtyj8YmtnLrYXF5Ob1q6HuX4SEwFkvXsHaeamob6wl7Ozp6HJ6TQ1O+MUM0r
RnMtaHZC/+QNr/jqS+OlXbxy0sNSVJAcJJHp1/2I6IRLhpTG6KYOhqLz41fKoaE2l8aofvig
1PVjm+q7frz72I/p+yW1/oiFCOAlSdEtlSlySFFQcpZs5Tvr4myy0aQiT89IVWPvouQG14iV
atH+O9tDzjZ9++q3Qt/1yBA78LAXwmFzN3S4TGV6MiUKDeHpC9WdKkK+iGq3eTpqaRMUufr9
+HnmTH6HyagsX5vjw6HnpTmbrpIMc3kpQ/0zSFHsm6qDpHkdZx6inDj6HMn8kfcC9uJfzTyN
KJ3MrXdTVqV6iuE4kb6hBJsQy+M+PEwPCwccHWVe9wOiE0MdO9RjZrn8EvnfJ1dtS8mMq+Hv
stovWXS/7sR+/Ufk31Dajnaehw1igRclRSmq6I/5qH795nq/s/VXz5qYj70SPGeea4cXcp0j
YkMjtUjsibJerdedH7aqdEkxDGg9JgcyeUOzVkZVxDTVbadpUsQ12+FCh5UotlLqWbjqsSCj
+UTFuQhUV414IseHHJt+NeaVbYi7HJMi9pUpmYdNOfIcRHcYB2+teA3P9+SZni56OfocqdMx
6qRuJpW6dt16Pye97pR8svMlc5v7ahNipd8V5IZGOzohR0lk5nU/IJqns7QIL8OmkqtgF7V8
6ysi+yZNxh0vavE9jErcKUXAjYMo/UAIaQRe1FPUqVMUtPif6HGg378GTnQzmD6dFJk7JhcN
09q6bzcpc7UAr0XNiV3RRasZhem+fDAYRa84TT28HbzZkL5zpCgMtdSwLkcUFjH2sypuFsbp
dZ/HR5/Bvk2eHHfaHCviAyPsHkWe9/ABVsT2V67t+Swp4sbId0hRVMXlTUiRmfhz802JT4rW
CVKU/a+7hrHs6iVF6Tpd4eSCdUQ0Psq87gdE8yRlO2/cVJcU8QOLxLZ3SMg7jM3bF6vk1btZ
QIqAtyFFdy8l/7eejvEsF3g6KbLjcu35ocrQ22xZPfGSRZ9oRbPjS/9hD2LWfbf1FD3gMLOr
DcgVUrRIaeJ+B0dUjWXczOSJ1BIVOVa904qpWFZ7FB/n+HCcVute4KvBDAdN9VfD3OhSrqx6
/6g2bNUlRVPBq19Bipy+KXHwfjnj2udRmmiyBCTH91jactzTXi4Yeco0cdSXI5CRlYdNdbMq
rgdZ81SAtumv8Kv6sCQsXdJuTQSkCHgHxJCiu1fRumVEow9FD05PJ0XmjksdIbl2bz1qzehw
mpx2kUsdQwTEESkiz6FE9mr+FJCt4+AkKap4m5jhq4jCWp0ox8A2uvmkyPG8fyXCzWfKCfOn
RL59ckzR4HM8ubj7NctnZ77XfSaTrzVo2JpZOM1c9SchPfi7Np+WvF1URYsJMUXAa3uKQkFr
hxRJiCL67c5CFUPShrpHirx09U3Cetaj58jmxIF3ON9cvHjk9ZSbp5Ci3v28um02BuAEKXId
SIvrLWhbWtb+HiRFXAcoaVE2xtwuU/ZIUaEkdfA9N++f2PGNKEVp1aSvOdof4xl1ZyrseZNi
hnFqa3unjig9trm+o/axpS0pGj+jT4qcx3ZEDimq/s6l+ddIUTq9+WJbUQgZ5917VLyaxcGo
xwmuPZMyQ4qcV+R0fsexxvqoidd9XVT1zVCUQhOfN6v4uvz41YwqcBQBL+wpCqHWDiEYRFZ3
g4j6pMhJV99T24SbQ2j/Q/fEpT/7z38ZkJyzpCguA/n5T050ZjN476HHdEBPItOQMSmS3iKm
6avrpKhxAWkR7UHj9TTPJOrUxl5MREWxZbl6QLXiuaacqzrQVswCrhGNImvYibkyr401uV3X
4smgZq1Q+iLaG1ZsutiWpcfkmjwePSPHVLqE7Q7sP7YrMqSoDvEo1P8SKQrWTdpk61YUTtn+
o+aoXdp+faIcYXsnHZAi5314ne/qiVaK6dd9TZRf7cebLT7VrDhf51vl+XILj5OiUsJKaKBt
APDtpCg4ipyYolV6zn0+2v7HJUWiIkvzN1kNRznMrz7QOXH0SVVDvJOKRANnzeh4Js/gaiGn
itNNBE5abBoPdJKyPnhIijaCoea50WKKH6Z6QIpIZbGQZkqOKNG8RpTMnU+KuNg02Qf/mgOL
kz/EjZEyauKJuqSI6+5hnbHk+xxMYtM8KdLtMs/YBAQ3y4xHz+jFFD1OiriefFwlRez0VyUK
HCn6heqj8p+qJtq+3x/7AilyOt9P8lNK8WxSVF5t1gBPKb6GFX0JNXHcQlg7A14TafnsZkkR
daIjPVLE2jliSVHYoSLSC9HXaZJVw4Q4HMvUOXEZBDZQNZZqt7gjam47FLGToMIm00X080T2
cDzQiRclokmRk16jptXzMUW0mumxKY7tiBIHao+KCbpdUrRWqsCN2Y8vgrOmhTed0n4qNqXV
xNec4ExpS93t9aYqXiGuCms/kTpq2v5V7eLOM8Zkqt01QMv0M/qB1s5jG9GAFHHD38akiIvb
pykSnp8jX8wRLdnplUXJJ0h1E3Pf5+eX0tKzpMjpfKd3HnjdF0nRXr6n0oDV6NCXQLBpAQAY
T1FiRdbj0p1F2FCXllF0SBHZk7xSwCoVtsMneutnxb5+HNB6HDxR7Qg6ErE4lV0VXbCULdnl
44I9Xv6L9hTtoLaZQs6s94AUsdTpzMuW8pwKEeS7GxGvsbhOO/GjVDqm+LBI0baiC52pactt
SrWjjpp0NEfZTS51LAu/kOMpMjUTej5HimgZqHtjg+vk6qlnLH5CZt1hZInMFClib9GIrf8z
t5fjX6lNR9SP7fXEauo5hevmtyztG8pNq+gbKS/p4fJZZ7hoHtBRiieTIkcD2kZ8HVFh+GsA
QHmKUklrZ/ls/W8+Eq6dZHZIEXdsz6KLw6tQF9d6dcT1qC+BL8hazVWNKLtMxJb+EPLcSePy
uQ5ZosBhTqbI8l7cj07upXZm+cw5j5vqQ1rE+5WlrWonxfFEkUyF6las3i13iTYpUl2ZE0dN
epqzWA9AKEmVF0ZaxaTS0Tu4OaphU3P2T/qkvSwU1W496pzoiETXMHycFPFqd7vYyc+AFLV1
Rql5w9IRVXu1cH4dpd6ffUP7M7QFAPceq+oU8QQpoj4pcpTiyaSouuOa+aERAQDwTZ6i6Cq6
O3bqRHqAjmowAyp7aVm9n1UIg8tD/JowbZCJcCN0REuJ7rZFYh0yMixLy6vNar8Icir2njzx
HClKHoi9CBErUZqgc9r1sTqqTPh3k6VSxlW5bV5mSVE0l46a9DSnNXbSxu425KAhH7qjCweQ
6qiTpEi8SYC22HqFaPyMTyBFegOUMSkqC6DalyuWz2pRa/erjq7/bbMdchsdUjQT9jVLijyl
eCIp4lZNSDWCQIoA4DtJ0S1uCGuzz36fIkWN46YbaE0qHDuvBkibH2RSQ3x64uymVM5tI1ul
I9p9Be2anSMqVr2WEZlgFO4ytlOeorZk74kzL5Ki/ASkOZ3sAbLsHxUtDKXUqMWQIuUpEsvG
qN6nJKwNUVEKR016mjPyAJjIrn39qN1Fa2mWgPi0lSRXPetnJMf+zT2jtNlnn0CKzH4R7JGK
Oo9/ccpOUJPcJR1RlxRxes1iCIEhRf+zd+XYkeMwVCkf8BA68WH6Ah1OOBfowGmffyyJIgEC
pFSqKpfs+T/ohSYlbia+sFGK9Wz5DU1ZkTomRe0Ga2Yn2hTPJUXk3x5FJgAA8ArkJEVRnqKb
rkMYiCMTamuj6sNMdC6ZkIRam+jskI79oigKUtTHUEEVFZGzqYkPD5sF+khRdPRSsPWFtyuc
WO4gRZTD7a0bdbY7SlyLUvY0ih2tbZyTnVJuIwtZ3KYItkk3hyFb2WI0AOxd17r3mtYEylLc
m24nRRSOMap0bIw9R+uTpEj6hmpuExaIXTKKJuwsKZqyetGTInvv+pmQfA5DV/uk6NblBikC
gB9HitZrPiJHa77pjqgO4TB3AEmYWWaXFHUumveKLElN8pzmwAyKGs3VNCiiwM1IonvZ0046
pOeSovIVfYYUyRpeJObGLZqabI22lnhyQpF5YjVZkr0UalOFKVuWyENIUSDs2kvPeaT0LBfA
3UeKojFehBSJN4PthuRzsHfvJUVZJSeuC2Lsp6eiz5rJj/cJgxQBAJDRN5+l3zcZtyk+sRtN
NpnUbd34sUDOp73kSK1i52ZSNE5UJKHnddBXlvSw5B903jVJzpAiyvYKbrVC64TGtdKYFJES
ijaLIzfJ/kqVnoPaoGhf2AU8SQ1cqOm8de05TYr8GDuk6MAYH0yKVh/6yKdoQIomEX40Kcqp
HUNN0XRPniI/+QfI84MZEEgRAHwzTVFWFEUZrf/c4lTENmtsTIom7Wt7CymaAidd9r5H0nlM
+fhPAwkwEi0xJer0lSU9KIP9V5OiTAeYtRXS+Y43tcqx3s1oTUakc5uVr8isyhEeQ4paYcdd
UqT3FucL0ziWkuSFHQVUQJx2h/wVXl9Fikq2B0uKuBN9NiJFcfLGu0jRZqGdgvBB1a3jpIhq
6DtPe6SIx6RovNynijjkziBFAHARTVHOVBREn9FNGg/R5hV9DlBH+9I7g3sXlLlH2YqBAxD3
z7rgLQNNEcWUqNvXR51rX0yKcsIhUdeNkHII4rAWjUkRF4dm9cEsrS6viD+n5Iu2STedeVe2
FGmUQk0iN6QoTcn28bD8a0bkxxjGHh0b43lSNDm1ndfbvZAU8ZL/2q1QQ5RuJ0V+8uN94jbF
00lRuwPYXA0GUgQALyVF2YAWkCK6JRicQyYkUZ5oipVIO6SIgzza3OVETeizdIrse6lTREK7
TNCrXL4dKdpUJItVhc1A1NHe1AoI52Svr9j+WZfGLUHSpIhaiS9jKd3ZIkH+mdRj69JEgkuT
ctTuaOkX9eT+ZG7mUG51dHyMDyBF4ozXYi4nfA0pmkRnkmKvRUnHSFG7Ht20Ue0+Yf8RdGy5
zxUFO0AVyZeSItw/BgABKQqTN/5Nv+az6u/m38zx6TwFn96cfHAv+8PL+sj2iAb3v6DsF1df
hugs102RTaQ9dYr4gHrsGaToDpwgRaTzDW3SIbB02VpDUkQjp/Okcl1qQ4m4u7zabdLZOb1M
xdpXVwL9gCcB1WKTmuplREGRyuMszjBW99cwo/VgjOdJEXutSPmXHL/m42mkqOZqYHuK6B7u
kKJgPYLJD4YQbIpjy326iC6U0Ro31QOAxXsOyI98ijJ+0ZLnw0ib6NeWzMfOHJlOonMpEjdf
0/na70UTo25eXW8z0PyCvf6geaNsKUtUYuIt/TSJOXBsUU56rLsaFE37cn3pD/GINd52Whl8
CSlab7ZaJnCeAkXuxET12VomMD/PPa0ZrWUciEc5onCtV8STlDsxKXW2SbxzFt2V1NkS9Xxq
ioaSR+o9I/q+sq1IXWBli2jLHUGGAZkxqobN3We7Y4xJkRt2UDSvDdvMWyZRAlehvaFaE9fb
bdiYF021+0nRZK5/XR9K9mI43tKkU8ctLF4PN/mjfXLjcp8u2o4hlk4t3H0GAC/UFL13NEVN
TLD9tOpkk24u/Ipup269N8zjo4y9Yex1+8YwSFvd083ujcKuIU+9oqOkKEcA35aDukcYzmW0
Pk+KRAdeiy5S2apdLW5TDLPtPY2+Usv4yORs5rJ/4m0SFFGwAdjvwmBjdkhRU6u+kP197jrQ
SLp7ULtnbXuwP6CgKCBFwbCjmQh2UnAPB7l2NP61Sj506iQpUhrFYPKpk8rbOQo16xFMfjgi
ObfcDyiSQgdrra/0KaKHBcqe/OqDBAYuSIoWVdEndqSzmGwwiXcYArWtirRok+Hqa8aisy9u
2LwxzlzD5ARzW8TkxEVQNCJF7B8+uh/tdaSId7Ve1JKihnFQUIta+akEs8j4dM/zJVySIIl5
QmnebJOgKBR2fhfWRFI85EQUbvq1RIzRRxdRvio12E1qjLXMzOb+GM+TouDZycRFyItJ0RQQ
EuHOb0OHFAVL5Cc/3id8arnvKSo7gIv6aOvrF0afcUqPCpS9GV/L/gDgMN43TuQ1RX9/rRry
P57RH5H5Qavo0+DI98Id3xTxG/d6Oh19oaOHl/n8caRILuk90M5W/X+TVfngdtrfhftry4tp
48Q22TyDu2PaLTs1xsMf5lc+iEwwYDjT5wZ5cNh88lQ4XVQ7pgyTHPtO/UiAFAEXxcdCiWZ1
USDvT6sp/jd4nfb5ZlKU4FL5bOCUv0tGYhK2XfTTrEqsPcG0fMGaA9fD+0eOPnsHKfrRpIhx
BIEUXReCqXsuKaLDfpJPOicJpAj4JqQoa4re3sOtjAn6KaSoSesEgBRdZaeucYr49qpnynP2
5gtJUeCGmtIv/LoAV0TO3Bhpinhi7NlvS4pCnoT1BCm64LZ8may+0NbRqfafwQ/vSe/xGFYk
7ujErwtwRWxu1oFPETbsmQ+gq/YUIhuk6Lq/RELYOkueL/mp/gpOTw1SBFyYFK1ORSBFPxnw
DgMpAq7NDH+2Dyc3vtYgRcBFkfMUBZoi7NcfJa9FCB5Fzz73RfBbA5wlDUsClP/NBqLf//7C
kQRclBQt1jNPiqBXAAAAAB7B+VxUPigRcEm8v32swWdBSD5mBwAAALgb3vuSYc4HLkqK3jvm
M9h7AQAAgPsRxNSBFAHXxGo8i0jRP1BuAgAAAPeCA040X+UHGQNcD2uaotB8hskBAAAA7oU4
TkTphZfRAsCYFK1+1gjJBwAAAB4O9lef8XrbOOYGuB4pyvd8wNEaAAAAeA4IX9nANyFFi6P1
W+RoDVIEAAAAPJ4UzSH6PkofAF6P1XgWaor+YHYAAACAO+HTV8OnCLgq3vN1sJ4UAQAAAMAT
SBETJYGmCLggcvDZG0gRAAAA8Bw4nyLkKQKuSopW85mPPmOweAAAAACk6PGYvaoOJGpi3q3E
CsMlmN9487rR6etYDnbrNbPPI1L0iY8wJD/9g99kAAAA4F5BE9R+TkD+cwXww+R79qlKMn6e
5Gp04FE79ejQC92Al0Z8zxB3uv8iij4YU3YpCknRb/yaAwAAXBxkXZYlQ33jkyiwJiYUNNS1
XJHOLqSeJY3I1W/kpXuqIen3sn7i3IxUdzj/3bzRjEemTickGJArsY9aCknP0aT7qjNzm8lb
G5Yp4mZ2QrIju4RDKq/gO0nR/CiRmxkOr728jxTJNyNFa/bGME8R7GcAAABXh1hRp4SkBIJT
Ve033I5/dg2ViKy3d7ATy/qNsjSpDefa1XxmOkGqg9vjdJ/zG8140tTphKmUXyfteOyjlmqs
aYBoSWiuK6H6kzwT+cf2rw5fmJsy7dEdWdRTcsTUKGlQizJX5BMMR05zAbkiIdolRTlL0eef
nhThYhoAAICro9ERLDoBWdUCUmWiV6z0Gq56pqLGke1pU48U8aIOYC3jmecAs8/Hz44zDXtZ
ahVSZDrRI0XJshIONEW+E2o8ZSpIFeoR1uJGZiqqwfMrlAGtdkvWBkdJkZTn0452p7z5TupS
usonGM5JVRGny7qNjUnREn32EWiKBMEBAAAAVwc1KX+M/oYGQsA3TPsSLiJFotkR+wdaUrTo
D2YashEQ9UhKus+SSZEooiS7mhIeKbW4o5sRPXalT6mshZyqjXVXpxtIUf3JUHMjN5ARGWox
FPc6wXDonIbkupxoT1O03PHx/vHm2+G0AQAAuDhmeagPeSNyR6TINzwgoAOmQcZORxEpUv9Z
atfkjbYTc/tcT2YfmJUUkbKIDUxSbSd6lj7ZJSDkWZgEBsiNiUgZ5yFSpCdpNOc3kBHZdU66
g+HwKVURXdgDZ8+nKN/0gbMFAADg22EWvrHjCyujER9pmPYlXMA0xFib0pgUbaoaLponYeOK
REXPQ5v5jKhaxPZNUuVVISnS7KlLivTEVWUQL69XuqZcrVTqkSLeou+ZPSmS+oOtev5fR6tF
PpjfcqL8FuVor22Ahqtw+OKpSQUQPV43ME9hHhEPbmL8mTsZBWyZq2S72kwPB32tDUvfOrGE
q5f1/CfOFgAAgO+GRcRqma4k4JAULQ3JNEwj4tUlRY1fckf1VJnKKkgzG5g7YaxVWWrPHSuk
aGpoR9hD14mYFMValcZUVZmZ6AnY/LDFVGsqtaSIi/d3HoX30DZMpf6YfQw9SxBpZv2JliWV
xuVcou3RzqdZB+k8n4z9UNrtVSYy2nNiVW0skS/8HP5ny8hVCnjl5z+WCED1IE5OQbj2alu3
UJW18KHl/jMcLgAAAN8NixSKXYNpSIqWhtzT8kwRRwiZhjFIUVf1VKxlm5iqEpy04zFTriiF
FEnhbl1SFHWiQ4pCBUxDiiozI/tEaWdDJufxZP/iGpleDYjUELSG0umuGsnNNZbfDFeaxbIU
ggeLEpKixmBmXM8CUqSfL+oZ4tbI0p+UIlJEbRmlHVKU6lySfhKbqEP2pEh6mqI1AA2HCwAA
wHfDpr3wX85VXIekyISRj0lRXKm1Hu3J3xTYrsT2fu4ol8/4ykS4uAkd8NPZandIUehW1Do1
rzMmyqOovp6Npoe0Fs2Tos3bnatDeaVa4QI1fCc1urel6eckdYdTndWrqVJNjuyTooY2Umqy
JrSkSM+06JA8q+YSRRPzKHgxS25/FW3SHEW4hvrxlG1n6/82ixfZiEUunZGsJuOGANvPg211
U0yK3t4/FvsZDhcAAID/2Dt37cZ5HQqr1QIWyjR5mHmBv0x5XmCKafP8x+JFwo2SL7HH9uxd
zCSKJJMURX4GAfD1oMgBQJ8+yER+8wAjrBEo35nB+ev0UySHIhlDUTTSuNKX0jQomhQUdVPR
ZmdyJc0KMYKiLKWPnyC5rS2SYjeFO9owols+QpHolE/KUYltosks3q3mD0jj3UZPp19F/hkL
dR1DkX9KpRC0B0VknM8t0a05E8gsa9meaZcMOals8IT3BerZsCRQqy6ghqKBu3ULPoOlCIIg
6PXUaMGyjd9EgsYLRmyitUNGxAx05uDxQVNPB70PRbJ51VT9WudE1lDUfJ0UFLHJBGRWVC6H
osStKFgNlpLIrg1oMlaPkT0p8dPZoEgoPqHZm1qsZ3d4jsHuRSafZfDJOVw+80zUluP2oIhD
es2NGOc8bpEGUCRxbfEYisgZPgOo6oxdh1BUrER/4FMEQRD0epLg1pFs+5AN/3HpYwRFzraQ
Q1H7dReK1nWYdZb+dmRGzS+kVIuz2e6noIgOoIh1eqSdYHuJK0vagMZ5LCCVMCwyjsDk7CnG
xsQ5AGWAR8HT3uTuPIQib82T6tPFO1A06d6nczCVdbAkx9Ts3LHTpAvjVT/zuLk3NGnznPnS
QM4y1aLPcigqeRvT6LPa3/57zj1uIQiCoEnFZamsz3X5bFt4SaCIYg6jwfJZyD20nqNm/5YY
eh+KCmfIHplRTXZdQ9DMPMfGN5ZvWj6j4+WztnY1DaCI0rPYxqjNUxZp5hfIxLaV6ByXmWFF
2C9AzoMn6/gsR9wARclqHE2cAjZrA4wvamJwomMoGvafIygyDCqO4cTFC65QlIWfffbsjQMo
es49biEIgqA6F3RXkfCNfC/6TIKNYuRoLT4SyTHA+T5FJaBs5h0y62FBc4uMI0ciZzta70JR
UtEIRWZSHzlam3TbbcGrXNgde7LYcco8dIIr+ZwmS2BvyIvGo/iR5ztal1i6OWkZmzUhfDYr
/Fb0PHxC3sPch/lFI9gZUMQZFLFOc3UWFH10T2tAEQRB0ItJ4kBtQ8V4AEXJxg85FLnMxAdQ
tBuS7zdbNfHbZOYs5S+rM8ycB0X7IflpoiLZ5yS/MKbdin0I/WFCHTejGwiiuIxmStxT+Iwe
zzEU7S6fmR3znLGJd6Bo7U46TVFwdeK/AEW1UjJdYCn66J7WGRRh3QyCIOh5lfgBzWYKoByK
KPGczaEozJE35SnyJ0j4K6/eyxaKWprH2/MUpSmtD6Bo4LHil5aUs5PQdA4U+YUkDRUJHYh1
0zkTii5I3ljcy3VnER/Vn0PRlkiKBuXK1/B+AIoohSL7RPgCKGqhZ0n0Gdts3BAEQdBziRJf
j7OgKPNnTaHIm1VuzWitl1Vi6UnnorZQ1HJc35zRmkfV3D0km0uTeK9i17qs8/Pwvk9RMJZp
L514UnQQPxeKksCvHIrYOQMFf3y7FqValT0vssfWM6BouNIX9mFxUMTap8itL9ocVcfRZyV3
4yf2PoMgCHoxSTLb2R0tcihKjRUpLXgMyaFof+8z8wub5JKuQD0RH3OEoup/vQNF5+19JqPN
cXcP1dzSLW+Q2Oblgfd4NKbsWYrKT5RbWuZxQm8+B4ooBdEMijia1Sj8kEDRZJ9VAms8Z1vR
JFA0j0B3UGtRBM0hI6lzbtJrbZT70LX9YAFFEARBr6bMrTlJPx2gyEwxlOw1MTIUZaRBo91W
c0KSQfj17AvqoGiK/i4WBXwhUijK94M9hCK9T9fRfruDNpB9n6ICfZIatCjJHJ3P+QMoYpP8
Z9qBIltSz2zu9mLpKexQMiwojfMUzTlz+Qdkk5Wu/3HP9GkXNFlfSCFfeWIpQp4iCIKglxNl
O3UaS8Yg+sxMhlvg05zYIWQ6gqJJ59EZRKq5jbU4M4bwARTxHhQlhciKOrI1yXFAWkkRrvIt
mk3PhqRBg4zWkyfEMl/bv4g/ac4zk4/DvMITktEWsJ5bQ6YDFSC4LX0ZqmVyjG53+TCxam6V
zVBSatOTEODv0jnRmiaLQ9QjuW8A/Z/BhrAffz7SkHwIgiDomeUNPp1tepD+KE+R2feBaPuu
vR1b51B3aEAafQcrZQMpv24+wTG1c1L6XSiatpguIx4UIiuq6JrzRVCU4E5MJJQR50xsdjGj
uWcbIgkbnZkLhS179JuVK/WsP6vKZFDUQdQH3LfP5xG3SmoX3MplHbhDxU251s3QKKYVtcub
EttmZT92rSM6eLIEz5le2NrdFovbvsP5Vn8tSxGWzyAIgl5MYRZaJ8mmwd5nft+H1THZx/eH
c/I1KQ5LSzQnW6I7o05S+n0oWvEg21w9FmJg1AqtcyUU7fiXy+ThoOcumn3rC1sMSi60TmIh
5/i6sEdjKFI389abtMGywMK4Zz0HpDMO5+Jz+sQVSL10q4xZ/iz15CS2Do/bq7QAxe1tk6ZQ
UPRRvYoARRAEQa+kmELIsI1km3jeBYr6BCg8nQNFKwAFL999KJp2oSgU4r5QJDs5KyWCh7Sk
lN1O5x9RN9Ulj0mfxPHh9oW9bHUuQIRfO+QBRUoPtAvMRgrnxLqUe8pgch/KAQT7A2eL8LFt
1qfrW0Lix1kEYueLzhFHLRQ1JAIUQRAEQdfqKfaDunMhrrz7WipWvlTJBlpJWu2kQvnOW0zz
zgZ34+suaLJ6JrV9Xs69yJZrfKU+PqiiPxrP4hgsKTFoj2nHN20neSMjjzUEQRAE/ahGHr7T
3lR93W1vu+PoY/i+F9xCra7Cq6faBUX6WKnoAa0JQRAEQYCiS2Dpevh4Eih6WNPmKaM4yVow
rsPnx5/Fq+gzZrTGJh8QBEEQ9BgoktsmXUmTGP19KJIH2lccFNGaXZMugKLmaP0ZoegbnReC
IAiCHgRFt/EAPSMU8SO3lOc8DVOSymnPUlTzWUco+sbyGQRBEAQ9BIrmm6AoNcg8ARQ90lDk
oMgkztQZk46gqOZu/Ix1wfIZBEEQBD0Aivgmgsmjup7BUvRIkODxFisup9KOo/VH9ShCRmsI
giAIuvvMLUL54R8nmDvckkWeumklbWcm3ei7dWhe1h+JpYh+E2xFEARBEAT9IyqJG1NL0U4a
bAiCIAiCoLeDorp8lmS0dtuqQRAEQRAEvTkUVS4Ky2f8WK9xCIIgCPo7wqoIVFVSFA2Wz9BL
IAiCoLeXYF0E6lDUVs9SnyJQEQRBEPT2TCQEKoKK6r5naZ6i36c+0vIdMeLQIAiCoLfU4inC
cBeBFtXYs8zR+tRHSGryI3pNqxHVXAQsSEMJQRAE5ao8BCiCFn3W0LMseaMYKKJX7Oml1PLA
PXohCIKgF9PyrR+BRVBR3ePjI1k+W5JiU82MzfNrcsXCdCJYKoYgCLqEEP4xcUnLh0cPnfT5
p1mKPtM3g9t2ai+KFVS6OpgIgiDo7O+S/56/ARNhnoAqFFWXotRS9A6dhOFO9FYDFxrh7i8M
v1d12v/P16zP2tKEuGPoH4eij5a/MUDRc7sn83OMKTcU4soKvMqkNazeVRUgkeczcDcP/rdy
5H+vRYRm9Pj7S+ixWXl+ThcWXjwO7tyheXdIKCNHMkrwGXe6tgQP+hrhwv57F2jer33rdt7+
N8c3aCXTj2bb075Of6d2sH5g9Q1eblscbKm6lc+nA/9bfjcUzJaJXf6m7YV64y961VKUbQg7
lx12N6lmszvvJmf132gL5afsZjsH6rEWQDZtN+Zyr7lqvb0qnsSpajskqtQUy8+toKwKzeFC
1h1m3uBRYhW3WtukBqxrYJtmuZLsLsrm41V3NHF17SR1bvuR4llkqlV+yY4UeTbhM6AgPqD1
QnFb6m2V35/bmp4MIGgb0QBFzzjBz238v2OtyHV/bsMIT8n0t3/oOuwbMbnbip3Og3dZZs47
QlEf+si+3Rzf9fnXF9vLyI4aX9+nY9/bnFNHMDsxMdUhVdiXwI7IlGCrnfrp1Jzu0Okjvlxl
WHoFWB26DYr4gIJmh11zSbrUf50sFEmEIsPn9mmwrUov/9oMrkLNCXldgW1la7+Wk696Fd1F
9VO3z64NVD473p7cLq4kR8N1Q6I/EYqk7QnbZTsxmwJvYn9ITNHsaeoFkORetHWPra3drSQM
MP1gemh2xJsUltQI2l9EdeHWgdg3jSl8PSspqnvxxTdNf7ScD5/mrVS16C+OKmr70fTbNZxQ
8f7Wo9qR3scihpD7TkHp6M7xSau3SR1l1RDzwTC6EPaTWWSWSjHNbxW08q5QdL9nJI6JpcW8
kj0oOVLfzkSjJ0ZuFSzAO/mXtJf+nlAk4YVfsC6bEkzFuIbMpLOJ9I5bh2rDi6dRY16+kqpw
e8mq7Se1PuqY5/WfP0R1YBLDdF/Lx9rvsTdC0eQL4g1H1rJTmqJdIX1YP53DBYMoQpGeR04X
/rZTJ5tfZXoxKJLac7Y2On7vajbrLHkj1yFlM3UYCiJTYHFf9/shxQKkzxJdYFG9PXyinXfX
YDg5TZBMW0G25yYRiiRCkR4gVGFXKGJb0wyKSutQLQX7wisoEt8SrUDLpfUt4O2a3jrkIJT0
q8qcmOBlGxt+CIpama6AoqkhjHpAtL72yzDV7lrgaRm3iPZelaV7PKctxpkKAUVPR0UtVRnd
7xmRa7A6o/mjEkdi+QkoqqsfnP9J9ikpg6KSsOeOUNSGPtq+Skgf01mVqY0Jv1RlWDdZGVe/
y4A5z1/rWG2haMm0t5xap2dxg2/y1d5N77N5iC1oxzxXaQOTaGz47ds9sbRcCEXG9Z3Cgpad
jUvQ+H+tnGtWml0o2oxPZUYRjais5p/1Dy8ERX69j44/v6SzLv9kb3t6PRWy3x1GjTWF0jfS
nKehKB1yVl4pNyPdIdwAMEcomiMU6QGjl5C3D1nLLDKEItF0xFN+1lbrrSXMlxLH+KmJdP15
XZVaO+J6f1Jk9kNQFOxS50MRh68xpHNG0dZgcjwXP3MwzBKz8l7O3whMvnyaT36PL04CRbd3
6zI85nSVDP7uRF5lIcuVjOpyPv9QY4kbI9Z1ns2SvI6rofnUXMzrpECXQNHmMmPGWAoWt9MF
bK3y4g9N2+Smvpv6xNjaSPh/9s4luXIch6KcMoDAMCe5GG/AQw97A96A19/5xN+9AKj3daUr
ohzdlRb9PhJFEYfABfggFEmINrpADc/JE3agVF9r/uzzr4Oi9QXWw2kVzVhd52Nu0GsiB4v/
4j8PSWnTr4HGfvznP5+fn+4xMCbTG6pR/Zo7wuZBi42RQjt1BkXLvj4IRf2b0GSXxJOId8tD
kUUoMo6aRigavkfZQpGQL1euQtEaaTuviLl1ifhf0bNsyh2W9eDfgyImaziJ6eoT7sIzW1z/
q6n2HxT95A6z5Bhb2yJ5TtvlUPvIZWoReVKkL82xY+l5BVTSq8uLP+ekFycKGqHLJGgvWplk
tsIWwJDDhmEihSKhPx0sl0HR5WLAGkjigfdGLWCZTspIcMdgcSeef/FGPAhF6qZw9j39jw9L
IdgpCEXvGygahlR4ZrZ50TH48q9Zswj9qzecea/c+Dtmn0m1fIK8WORoZ/dQZM9AUUFjGs2j
eCiqxyO8bap8UhsoWkom2YbPjKKU9ToUzT/v5hfj5xlj7nOVJce71dDdyVW7fxgUkefU4aNx
DHN9iaB8KHN3JktcXPjiCiK+UvHj15KGVyRynAR+eLIa2i6Qwq94Fv789m9sp5pfIZ0Evyxc
pcY3co9Qb4MCNXtVcqqxJ+gPqpo2JfewpAvPbHGp7gatd7q+oNv9+h+/jagMmaCQE8K20kl7
8tuXSRYUskj2wXItYpdJSOdC5iWOIolfiadGzmO5D4qkzWNl7tXZoeiYWxIL48Uy4eSUBEoW
bGqTvapwbMYVx5PNWvceKMKzbhTkaE74NKf3yKaxal6u927iAhQpW9jGSBgtUzJc/yYoUhpB
t5Qtb4Ubs5T8j5qvGtUHBk+hqDwLRdKdohbnnwSKLjfLQRE11dgxORT1MVq2UFRZ0afXocg8
wJ364Q2ETeiaMscT1vtHfigU6fxGWW83L+9LQoSG7k4hBz7ILNPGvZB/vUyoc232Mb9N43XX
eGuhSeKEa2xpMiH/+Rs1u8J1wmpBNroE7OptcGujZcH8do19j9iaXKO4nhCa3XF8xSapsbQq
zxIn8dlw/2FouYX09xZw9XbeRg60ZANzeBYurqKLIEXOsy6vhxVW+EyNuim3Wtf8Pcda4BD+
qf+kV0T7MoMy79sYqpJQnY6pzAIU2eQGHVA09PUdigw8RcLCiYrj1pIwhff3cEyv+vQsa4oe
nHHI2DwKRUI8ou6xJHNLc8zUJL1dJopLtv4GitqINVhrV5dTRHMGvlBLfGJZ5z0OdW2mImim
BA97kFId5b3h8dHpqh3VrA+iYyS81S86rSE5A3a+DkVHQetfWUr+Vw5F0iodJPYsgyK5AkVy
DYra5dXmJq47kEC6cr4+aqrRVZNBkfShZVsoyqzKbVAku9vCl4fRNsyCNOeV0jaYszjUj4Ci
glAETq8NFLVltVEmo6iFVLaaccsNUGRr2a4FewLHTF0vEn/dFqHIIhS5CSRAkRPyZ1CkwZTm
UCR8Qe4bSw5Fxb3cfyPILpQh/YdBkb9DLtfE3+5vCTdqPKas5ouj6gjicPHRl8iZZ/a1+Zwk
ySHqFjrkM3spFFm6yFaJeSI8Mi42G7K8AIrGGy423oby3Dr6B02RV+coPALBRCn6Zyx3HmnL
ElFYwWth2Uh5HooUg37maU68ilgXFOmEIj2gSDZQ1FPWULNh5J7Cw5dAkTJaKt53XORffnvj
YaFtPdQfNYlQhNPVJz4QcotnthVuzLf5yMUvA9XkJiiyoAS+E4oKCsttt0yDhbODIm6qJVRN
E7AA43Zpn2dkC0U0uvUmKEqRbAtF83WO+2ySDiS754haSWz3t6DIRjYOQ5FyH67I5nJaDH+1
9NRanHushV6MpgfzwTLrTagvO7wga1k9rhuf1BGA0RpGr9YARdTk0zT679qSJe+BIuiANb/O
K8SSD2MaIkhrs6pA+Kz28/BsUyip2dqa0ItRxaURvgCKoE/uhqLS8ELFraVbv1AfavSi/IUf
iQ/9S7LP2po5XuBO/i8PQJG9BooOqLHmixL1gAvpx5eAVJK+Fzy3kEnV4KhN9UeTNlMboMhy
KKreqHkCGn/6pDl+Bnl9COIY2b7pCShysChMc+pVxAOK1kl8NKs21uUJFCnHct1Cwh0+DUXq
pGO4uEGU7L98wJ2a56o9pa4kUAQBHcWnbVLmWUT92A/2d7bNR9MURVFGAICRSg4jfbzRs30W
ifNQ5L+xQ8pRjFNQXdEeMhpdyE5pU22GtFyBolKHZm9e7Tgpy6HIyg1Ca9u5kDMAUbaXzmGk
FDBLXcIARfUJKGoZsuSjsRGyX+LIyi730L9HSZ/Z9dOCYQQqd7UzC1VvmOvpAFtcEZznRq4i
AzTKFnayni3zt5aaJJt6zQFDyG5MoEhqyJfJXwWziXj3zsn4cotNDPy4NBN2jL4OijaKnNug
CC0q3UdcMiS3+wdB0Wtieof3yV5bF0Kpu18FRVmhOrgG9gDGZ5E2J5tQhHGS4xSPf2YYbQit
jxldNSa368aoOSiiuDoBiHCcWiAKXXyT6MNQJOSMUhf+h0NKxbN576x5VjAK6aDI+RqV5W4a
Cu09B0Wrr5dUBd6hMLnShCrDQL136e+8FoaiMmJrlYTW2X28x1P0VdM6WuI9FVmlxpgldTsU
+W/UpJaXTDtMowv0R5um5IlMoUgOHDd4WmKJx/ugaFOIaw9FS+zmNRPOGad1kwtYObPgCSiq
QBXr0EFRUgl1RTiEbuH6/qo7KFqGLaSLSFKT4CYossiopaOAZZ8QoEhWLbO8SUrwRdYARWth
KVtPEQ8mKdfQiYT8cn18ucVmAfU7DZkZDio/Eorckwbuxc3t/mtQJJsTf8Vnf2tN9W/xFO0v
5ZKSJ9cS5fpK+f3zz/8XFMmAIm1mcgmtZWiPcyiKRs1B0ayB+EFxfVd4zVYZvU3Tw1CklYTC
bnnI9avX+nGlXg0osnugiE/VFUd6Eopg+qTPqezRsblgM2amz+N/WkZ6uIei4fL+nLMb3Uc7
2+GvOYp+5XufZVBkNO2gpwhelRTCzmyW3AJF5QSKRAsDs3kock1nMgaGorngeBqKhsssVlc8
hyKoSHUKRaVuqkahTkfmWdwLRUfyMBajnIdgs8aLqADBVSgaxQ+TKpHzMUGzr1ElRYkfu8W4
BkE/905/Ui0Lz/KHg0Atb0oL0HooKvOt5QSKLHGanUHRfUJ+v9gcH2kgAZvIbQF7fgwUQTKx
4kpZNrf7x0DRy0pN2DeXD30VFN3irpN6W5KQZLsoHBA0oOjynyMJracpdhSTFIqiUQumoUej
ZehyOll8HQcfOKq/hhRYyyqe2J/p90ehqLDnyVmDdWg0U8L1WbPneyhy4TML8bKXhs+gWqfh
VC20QgNBGzvejnN/b+7CkkOR9qxz1Ees+3gavm4FrXNNUc3CZzFJkHw6E3KGjOJMUwQVB0/D
ZxfGNYX+bx8u+ESslT5aFd9Uu7aCT6IEKJrFP0P4TO+FomQnk9ug6Hhl8FVEKLK6KZCAZZmY
LO/WFLmtCXVUSCWbhQoflfFjc0Wl6qGI+gcerR4b9VAU6EC58v81KJIOhyMOuoKAPWvESQqs
UrZL7w6GItckce5PoMgL+SPuJOr4DRRJdK3dAkV+scnlNZW+ymUYy96D9QAUVdwZsB8vTZfg
sisN0ApAEbue09v9l34sg6JXuHe+2U10DxQlOg1ukqv3QIlqdVsxcgdFRlC0DeZ7SEsy39dX
KNp2TFWg5XKBQsPHzxcUNp/+jsehaA1z7CdHc7SUAU+XHZ4RqAWZQFF/DTzIzlldXym0hsQ4
4QClse/OyIu1qkX9YYv3qf7NoGik4CmYF5cJuOPu3z0l/3f0FH1kdYqaf1MwE4A2z/CL1dPs
sxSK4nRiUxkkO0VBhZU+QlHIKopWwzIoKqNq961C66tQZHJtyWpJNW81V5Aoaorcln0ZFEG4
8VGhtdIbZ+FUCXym+fKQhdYunZ08RcYJ8Vm6CEyJJiczrkYoSoQNkpSMMffpUwQlDop8U1J7
Ju50UryQX849kTFvcQNFUm7ObvTzKo8Jnz2X1uSF7q1PQFEanj32sknis5ZJVMRrO0q6p6C/
3Un8f1V5ufqjz0LRS4TWLac/1ot6Jc9ZIjTSbLaqsTwB+zqu9h4aVT15Yb+JH7B47irr61Ak
4YlIjNrcfMlAs9Oavo70cCQge0NJ4vvR9I6iHplyg4ehSMnnVDjlvrCuejQIFJdsy3z0zjAU
dZUWbvlA0k1eNL4AimYHUqgShJFK8b8KeXPHX5tsXIZlj1A0In7H7pRJPv7++Ts2g/2VCa0p
889bC7cP6okH3+U+59P0rdlndaco6DdNHRSFpiT/K4ciqShhuwJFpyn55grU3Zp9VjqZSQpF
mOhkWs9S8vt82XTwD2ef1dEtazeRCEWZQbZtSj4Gi2k7tOY8uAmKYqGaJ6BIwjA3EiwZxmLz
pjjlaw5FPdZzAkX6vVDk59UtFLFrNYGiFsAZ4dl7oWhsfWdw3DuR47PwsqtQZD8bivqMqPP3
Z6NSbQvF+k95w5LdDoa4hoUnxovnW6CoC2tFuzB5xzYfATC6nS+hsnUaNS6oQ86KVibBBKjU
CHleYlze0lr+uiZNj0PRtET4tAqH98H38T/a/6XZiM/lHI5QFNI2S9jqLCve+DgUKZ/y3LrC
Xe74vjcUSS0omkllORRZeh+1fqqc1J/81So3Jtt8SJqSn4h+WOvjRQAShQdhUN5evDEJkMxJ
1lg4kjbFdKwNFGnFQfiSOkXXfMiWXTshDlkVfBwkTePKS6U9CEXCUGQpFGXi0X3xRrwVcGuE
nhLNoajnpstp9pm4PXtyXuhUqUIMyZ8+Y6oOikKTYdmSLRStgmWrrP5JeNZuDZ/dBUXpvLrx
FKVbWmKFr0Aod2qKDJVBYxycuiJHfwl2ofcUSWbQ3a7UxYy3qrabfu4FF3OzqPXd4e0FTDR0
cf9QjDBsljodSVz3mjdLbWM7K2OezRajJGVuuqBOEUKRXKxkC07v+pVTcW1n1PJA53JeKecB
aeG9PnZNT0CRUEBMV34IHoqDIkiUO4ciizu3rllA+fA1UFTcKXOBhVEOcbq6Piqgrna31kxZ
yaDIqoUaYh2pPq5lnzVFUfQUqW4Rxce+HoWiegMUwVJct36ItuUMq7bTphodGpj6DGt0Wke/
pKL1CThsoIjyIPX/7F05duMwDFXLBzyU0+QwvoBLl7nAFGlz/rG4CRsleYvtDNDMGKEkiqTA
T6w8Gk0nI0grZT6eC4qAb/IGFJGy5pNJIo2b6ACGoIhUWRdvAS0+ReiaZ9nBjHQCLIcFZhRc
UKSiGy3cwctBETkDtra+lFzVPkUk9ty0BoqWVA1XO1qrbaHEFLsLDHyDiONThI/2trkJFN2l
zEcbS8ialXv5Ke1xM8JRymyLXy7xdl98eKSn7V5QBFT0sEPbiI0K8INZfUVRP/IwfUcLZOK6
+6rTNKwbQBELQGdCG+TPfmfmhFxXX3ZoOg1AEUhLuHKDJOMCcw9QBC3XJhtl4sIFl/CEEj7H
U2hmgHnGeTQCRbXiip3HOcW5OboqUFQURTb6bABRTKCwMp9pUERjUAQ6AGa79lkaa4rI5Cxy
WEna9FZAUT3NrIGiC2ufaYPiNigyqcZKcueJJWgyLkaPAkWkzWe0z3xGfNtHZV4FPfEk0DQO
jnZe5kEfFJEGRcnfrpq5ZfQFlDTnSXXCYYGZNu5UDvzEx6IbXVC09tqD6LPhS7rrC8Q2Kqro
qdzc4E6xBB14pU8ROB9fDTfZhbpFAI70032h4rYqYSxkFZdJcn2VKasmY1abysMtaO7Y4sAn
dEtLrs5Q2TqiqpuPQVGT1PPjiZKpIz+yn1ljvo+jVSSc+GwWBSfI6rDosq53tG6mDwbflIpC
wE/RoxpHcn74cQCKZBoykgk5wLoP3wMUIS9J17U/7HXnthMDldBBUkvbeH4lGIEiEbvNOkPb
VvASkO8VhHWViV6Qq5sZh7xtZSilx6BIVFd3E8m0o7pGWC4rWdk6AEUKk7neQqYTu0DRKDzI
1RQpl3B9vkRlfngYKFKO1uCDIpsiR+Y1VFegyVPkRJivH+3WQJEu4OLiUaYvcSQiX702e7rD
AvMcbp8CZg9G5sjv5ylaeW3uJeUYA/aBbmSwbpJ5sbRNWSRhhX1qm4tAEewDRfbbAZWnKEl7
9lMzNg5BUX3Fu3RuAUW0r9zlI0GRej4q1w3cpyoipomibVDUPpgq9Kfsfo4r1kZzql/VZaHN
XtTxBgsoZ5tN+5NlHW4ARVBzdtte1J+k3FxBlAaB2Wg0AEUk3C/+ykMIOmeSe4CiqdfT6lut
hHUwcVRXzpH8qbOn/VLjRYEilQRy+T+2CgNzpiPfjjtjopLS2tHKjiDK4CivayfwTXEF0KyC
IuKbZbNtio+sx6eom/ks45tg6lXtBEWTLYWwExRh8hOLkKeXA2m31zFXpBDdo0DRrpD8yRZT
IJWNOQk9BJk0HLJWKkpBio75E1ZAERkMrAxbSyNib+8t0fk/Su3os8AIf3JBkXTkd+COqsa4
AopALZZ9Ga21MrW9bKsCRdomJ/Vd9wZFZLaFfahbZbSWT3Gm+3mgyFGheM4A6CAMFjBQHKo5
Tm2mhKopeiooAhPgqNbidrmVHsS2x3xWZxkYKNpEXahTIbmb2hjosTrhPGT8U4VRFQTksK4G
RcgETrmWpBcIJTmMJKqqIo81kKBIh1VIz5CTdRS5Dygqxk6OgkDVzhKqrlrcbnnqkee5sWU+
UAk9WmQaOovV0RRZUFTCvXq6GUAtV1mquhbPyMxTC8vPU1RCSaBHlfTgKPnE5MTUt/QjMiNi
AguKYASK6kYjPHUvBEUF2yArv7QTFNVydlCS8Qw2LSivR961bigQg6igR9UDRS2FEFQ/kNTS
NELNPNvW1PxblDztP1EsAFomG1OxD5CIte7usDBOxwwVL6qVo3Jbg1gBA0drJFEhDXExQU7l
CTCpSNcmmwh6gTAesgQaATkskGgKZa6jBRRJR/5R7TP72g4oSu3T5HhyfvPpPD64BorAhNxR
Ns9SMj5fvFIKLKl/QB21GCiquYGyey04LFzuthTsKa3a7LMFpur6QH4wlwCj2mdyul8JFLmQ
Uu7PLCB56lt+d2FhBqYac/1k8xna8h026qCsn5y2eqTJyU2KGmCQTIaHl1DPhNo1p0NXblzi
7mt6bfQ3NXeemkwkUJhA4JV+gD9Y1ucNoGhKZnloFKSxpcADY1BEKvBIJbaWSCXdDRQ5lURU
ISKl6lJBOGugiOTIynk8JA/sMk1RDsmf1UX6L0flla9TxPYBSraoh2O0A1tNWpFJHQ3Gc7vr
yJ2MiNoe5rPk4geuTroQFLGYG6vmWgVFbuUSZ2m6pyqS6atpZTa8W3RQpEc6uRdeWOaD0Lwf
GATNKgXZ9Eq03Gpc6x48o/DmAjOXLi40rMTO5GbcBKt29Fkgj1TqC2Ap+YUjvweK3Nd2QFFX
HwqLnWMyJz+W1F+WqDVrNEhrkAagKI1SmussVFflKQKPw25IdiReEBSRIxf2giIU540l+mx6
HijCkbDzlN3j+WBeAmsh+VhzMC/YsIMiGsYWgUm8gP6m5mq/erdIZM6lJNQprVsO6xZHa2kr
dyGFastdEdZAkVS/KkXz+Ubf9gO/CyiabCURValdoDoUOg3MxXmXU6kERU7NVW8eVzRFRVtk
vlkcQhThhNBbEYHZkMa59faBIpW/GZV8JXSGd0FAMAZF3YVsuceloKh94OREw6+DIj/NnwVF
tGEEIUdr9BBQRCrKiNyCsL0V2tfr4Q2LwCLXlg+sR6pmCK+j15+J00WgaOkbMUWRzAzLus+f
iBYU4RAUYT/OOyUw2BNXQJH32m70GZiJXl5y1XxmXHTAeKwl/bU/BBT1pQNivWlQxFbYsLai
3A3UdL8SKEKfhc4vqVrFpPxAFsXtD/pQoWfsR//V0V1ju7JVD6ATLJmZliNpH9SLQJG/qblW
TizWDempAlkKkV5zBA5rCnoaOfM4DTVFMyD6Gjla4wOlBLmW3p2f5Fqui8vu86TrN95gTQF8
keSia5cQ3TowoxfYGjKvwRXTPUYEOxYP3mmB3XiTzU60JABugYXtZ8PGvrxjmVypmoBbZcva
AnuMrPgRqOG/SPtf+bflr578Pz8JFNEI5tg1tj0fWKy/m7LufWY26H0opyjKztZmLcNDke1t
oCjoxUHR82lTTfIbCG77bGiUa/P1QVHQ01ceqpWg8zIS/g5JEvSf0VzjI4fk2zIfP7lnBSgK
UBSg6KdBkXd1gKKgPbOnvTIce9d1BVGCgp5MRUs014TdBEVI99wnAxQFKApQ9FxQRMOcDQGK
gtbkiq110sufsFClcKQJektQVN2sP/7s2GDvKcYCFAUoeixeEA4Jt2cO/n2gyF0dl4Giq4c1
QFFQUNBL0qwk+nJB0bGlCupnwrANBwX9DlBUk4hNN4KiWzoeoCgoKOj1aHa0/uOCImYg5knS
goKC3h4UDb090u+0MwYFBQXtopy3cbagffli06YECgoKehFCutJnQ3p/yD/EsAYFBf2/oKiW
g3V8ioCl1IWAREFBQUFBQUG/mj5KoqIvG5I/nxrT8Z0ynwUFBQUFBQUFXQ+KivHs48sHRRER
FhQUFBQUFPR/0J/qVORqijIBGQrVUVBQUFBQUNBvo+ZnvQKK/NKtQUFBQUFBQUG/ibKfdbah
6b/MQSgU4blBQUFBQUFB/w8oyoU+bJ4inDByEwUFBQUFBQX9P6BoDj77GCRv3PAeCswUFBQU
FBQU9LOE1o0HPy1iuTydUPGy9vIUIWznhYuUjkFBLyszCkVKjd8k44N1GWuKFHuvtKKd6bi6
VTqaVumvdfjBi32APlqdD68gLK995vhb79ElBV1O8ObfMdllQbFSfngNkYiMwMYlnYv1ZVnv
1NddrM0TpsOyAj1Yl7Gu2BOD7kTOyOPRTpqDgPa0AjJTCzSZCtUIlvW5/lV+VUjkZLSWldJH
oOjhkWiP2ktfVskF7119Cmkuv542WEEPRkTUNESICBkXYeZmat/tK7Peqa/brB3yiDyWFujB
uoyV4XVIhOccjsnDSXbSHHC7p1WyU5tmDIwCwkBSrAF25jS7Wf/J6iKLsLfdrG8znxHtUO2f
3+iM9QjuP2Ovqrq4C9B8ns1kHlaSS8dhBT0QlaZPj5nYR4S5Sj29A+ud+jpkXakoqt9OsK5m
TT4r6DmKovnDsJNmENCeVhlytVZZLQuZxZudmQfwrlwHyjV544fNU7TnaH/bPgdStz+S8A+x
0hFZAHkzmPGIMn9JfFmOjivaoEsVReC9BowgCD362JQXpjQAO6ygB04AeEYEOn2KhXLerA9q
Mbwq65366rN2rP1+UTF8zkIxs6r4riqnyuJqe9aqSBesrYQY+m6tsDVabl/1cq0TxyZtM/+U
Wx0WeXI+LH/6rToLLKvIR3YhMv+LpVW+2bE8EdpmV5ut3X6+DjLr89APlc1mXwYHzGGT+ntP
Zuz1PgWumMfBlcqssnJ7YH3A5TFlSpCzWgPOgjKXjFU56sIp362xlnTMJ3OvfiHL2Xxa71d7
IrF3yz+co1nK08EPyPnd5RZWW/Hxd1olpgWss5Ha1bUv5+dkOxwmcSRPW0A5A6I/Pih6NMDG
XTZ3/Jvub3qBvE/P2FIo27rCr7pkYOfvSumNDiQqXMJCTZ++og26VKVyESh6fJIF58Wem+zz
YSoqWKknv1VqvrqcDOzPaL2jca/DNGW55s47inXraIJflfVOffW7/20XBJ2++XwUgZ53oLYu
qozHvvO0Vumot1zMCVSS3ByS04rYYa2ycJFVqV6H7Abz/0/LS2HpiG5FjEV9YSMDDiBZDBQt
rZZH1o2YgSJ9e3K7Css31UX4PDhgPjUy0AYGPiGCgy4oUl+zC4pQ7ArqOuxTzJt+i77kBk4r
1j9yL8zsb793YIYjgX2F8e1bJ/7yIUH9nhwBYTqxv6S+HetWyEGpaVV+lFZQHlX/Xsao4M96
1kgHDcNKW/D34Y9CjqP14719ZwC35yGnu4MiLEOEJzlx/RfK5bvbu5ydPLILx7JEUGzSsLJR
X2o9uwgUXTOQoiKw3JntPu2ciuGpoAgf4/dWPjyBWtg/G0AM1pzyuov08gEKFmyZrD33Lac/
89GR6RcEy2n1TNbLdmxn96e/dppnhQsTC1WgQ3HOzl5gn8Rk+CzkobWiz37KwmNrhcuVpyI2
j63N+U+H0upQGs1L5FAvPPbraL59flIFH2f++YIiDWmR2XNHeqtUW2FnQT4DClZbZuxCnHEO
Hk/I7jXfDI8Z1tUlWd9xhkjsQnP7xpr/932s3KIrmD+F02G+nZyDqmNZpHTnaD8wKq+8zFsf
Vo6J2tjj1Lvdxp76Z9kakb0OEntM6cm510xJA3Wj160+mRShf8RdQZLsOAr1VgHBsjZzGF/A
Sy/zArXobZ5/0pKAB5Kdzqrf/SsmprspSZZlCR4PUDX3+9VxDe9Q95o4KBIf0OFOG+uZtipF
rCepFVu64vGrjk7qaNs6bvqiu1DSvg82rKSYBpkd5oFZlQ6dQaTfr378Ekfw4XWr0pwpannW
X3/BYL2W8wYqOnKs9nOjkjnK+5go2w8C+Gt7VbFOCIB5vXP038Nxig5QYBEuWLiP06w/AUUd
hH4QQ0vhyzi7yR8MnsDcv5u89S+AokrziCS/k+Af+ZFku0W1bzVNQbHG9YZFTyJ6w3xVs3VO
XOkmF8n8gomU5odWqnFBBCfPWxmH3kVImlor9gCRdaxLyjb8XjoxXuMiKhNf7VWbGWqk/Z2o
vnzo2A70cw+tanBGOiHjPPHzeeeJOlWFtM3mTvyoHlhPOl6dYti2VOdQ6tbyVjLp2I2vrNCx
T+KZO0qLUsUnHh3l+GjdYDTG5qUHefV+NXKCrboRNFHzCIKoKfvnwX6pqNGZgk9sW1s2ofpE
oEhej8/DrzB8m0Sb6pFZ2zMUGpfUwnPCQyTKV4KiJDqxhyMZQdFErdra0ylR7fhQEGS4Ey4L
YBs2X5zihvFWNLbq42Vviw7I9YSO5AOmsZ4ZJ7wZ3mFp8XFaZh2ZsdAYocjp9iWP/FmrwS5j
Kx26+BqX9GnZkD/St+p+0AVT1P8c7F8CRTcSe4412mKrX4IieOYaORwdhCNmonRIJE4hxJtD
w8ITTj1FOH8b7fkAFPXgGYOGQwcoHvNEqso9UDSBe3+57Gwa5TpjrypG4fcUEQ1QhvwfbZVG
nqdvFbqoYGAb3DzKLHoDio6Pm/86D0mYCwH7vDQsUm2winS+wibybQsd7aWslfa0jvCz5uG9
1eIRnCqq3gjBCJHVPX69gku4SIienIka9AodK1Rbn4KtQtDIQVHlIWB4oTR80whPV08+jb0M
96dIjxtRcF+PWuRopjT4I/WwudqnJXUEDViSmvPfbdCoD7EhWdBOwGu2pkJeH/3w+3Z1Sw9z
dKhtbdXU1cHjeMf66Y7dYqKmpkLHpoTCE5s+6aK9gza1uPDEll8Cw/dJHJvmIOraMeztjv//
PlpxDigxjN5OFw/ecX/eG1B0faB5iAB4BEL8id/epMtpQ+tyoOyKZHMro9VsbvRdUtxteQQE
RD4godVBkT52LwAbKT0RJqNQl/poRd/dnDpxdkmGvbqMrTjzBOBlbbjJ2+yp5CVHUi3DMC45
CBJA0VeLoP334bNFluUtKmpZutsfZBvwiRwhjYy0DedW7cQw8EbhfE1BkfsSY6tfRs8+AUVS
8B/xhSOsdNNy7KFWzX0TFF2G7GJaCybT4Xb7wUVNjKTMDfZxitRYur/El4BoEjMUxkUXACZN
JehuobcqNIJ0GUXrJSiqejGDItyfXeEr+/MAZoItxEJddamIOmEr3hF2goka3MOIBA17/nii
Yj0YqyMzajkg8uygqK9AzcJbzQF8ddi02YL5p4OouKgbZuzYtqY/0sxDS7A5wExQDtaqAwZ8
Yv+vUs3KSuxsRQu0Ck3sqB06Kvkcus5pxMxx2KgMSoLGs+wiQztrGYhebQ+eoAexNl2Ig2No
vM+a/fbWqr9mG7g4kNGOJpISO3IbfoEnLg13avtHDp/oE7lDrHESUhEMUft8bACgJzPRFMeM
uoAzCMJ85FFzXNUXCtBPnISYWI2ZpoSxqZQvTYhDgNqkQY/glFvCRgJFEdOcGSAuhRPmgidS
zhCxGZItW4MmTG5hZnt172YVWtGw5N0/PFrt0EowpSiCot7qOcCwq1Tr//WC/Nmf+WCHVDeQ
xg9ayfIWFTU3n+nPlYrFkbA2YBr4p4wY8hnySPIFKAqo6IoMonzDj9ngM2N/HxSJktSpOmOk
ikQTMzG/km+AommOb5kvCa4J4QrTD6oN+6vJvcuzprSpGfOTrDEaYmbT0Fk79GMY5E581CyV
aJwt5+1Kub4po6dsnhBFojoVFIj5UmvaCGyah6uxIlYmJ24NEOn0XWTTfshIbu+JydDfybIV
MvBBFZsIf1uM4uX3kjZLrbqo5vVEUV3WLXRcnPpy0fGuLY+HYevSs0ArKZ3IHydR7c/rvTse
Ig2qR9VHRhpSim9SMjcNbLaxrNUTuK/BlpnIi5p2mYAi5QjW0UIa0hDR+NgKOxCwDWkriaBo
EL3OznMARTpVFRUXASiKHdsOD8ObqBzxK1FQ5IpQMijCP9cwgiIKtVX0DhRd6HPCYAGlDhRK
8wRBEcSuzkAR0wBRTkCRtFwu+OQZFFHwjim/3CUoMiNIYYYieiaA+xwgCmzfFI/DeswRTUmY
SsxfR1D0tIjQqcsw+amFZ1+zRGt3JegW1LhFDSUUurxDRbpoHFv94t5IhvVr/75fWMpysn3z
kPIOFMHH5qt4Ujxg4iVsEmKE/ANQlINn1XbLlCcrZcgXbtvwc1BECDF4KG6FF/0EFIVkrg5k
OmsnN27PnhBFWmyqMLfwDElNcCm3XlDXR8UjbDK53FsupsXBIZFxInIJiqSnXUQhDVSkUA53
egUt7NPNRdK8TaFhu4CoDCI94gKtKJs9OD+bLuHmJpcUou8e9VY9uykCkk2toBtmSqJCe+hY
QZEYjbTpwYG5LkmrUmdROA8vNtVjOkexlBnmUqAImOsecq+j1OLndUP9FLcoiYaDbF6ecOOz
L8Pn1rRsX3zGoiHdas8RFO2+T3ruj7dyULT7EzWAFUQEoteXlBU7hoWeiCIMC63IgKJNlX2q
fb0YQRFJZormfvGoHpSQogvNWq5OtIyP4QH39kc6P38Cd+aVyzJzvJCF6vjkR6CoQPQQnf+M
3zSvR/lS0YtnJlzZ2pwRvUUhoBb/TKSXR0D4DHTTePtBVk1WX9CHryp+FQhT8NxS9FuKvk4v
b7z5BxpugaKTsc5REaaDYKtSfldnTbpqzb2FBGpvIc2tLgnmz6ATaJhTUATxiau5h9Gpf8pK
3G9mtVkiOXoTFOXgmdSrK2ZUEZkWovSOH4Oi6r8RhhFn8facdPUul7jDH/aIHMOlLRiOjlcp
rK8fvWc4AByAROewqElTafxAEwU3jWcZtvT242OGPg0rvL7BRBkUlfEhJUcw4cNORaTepoo2
x9bL4I7lserFsv3n4S85vDf5vzwe5qYvGsQeOA1yOqGYFXQRRRGV3FHL0F0kYXXGKbZWdUOX
RT2mYap1wQAUrbYUXQWOda0ctQY7SCVVxB72WGtI7diLBT9WyxhLoTUuoaM5/esACWBSugeP
JxQO57aM7LnFZEG0ISCsW7Ks2PHg08AJ6KJWBZU0RZxXnVDxLOMw1a77EBSVvhJnoIhmR0zi
8c6xKLySpw9MMqskBXXHrrA8QZNDy8EXvQeKRoIgFMyJRpgAFKkJKa692LYmZXyY89x8eH/B
jj5L0YijgiImmoAiTTR6DFrxubJqGE09LGWwHqAyPLHNVFNdaSpaX9BUU3/iCqfjBBRVpqj+
b2Z6pL7/nfKhO6DodKwzVBRTZDkojl+F0xwULflWocDJGbEfOI1zBuwCFBkqGvlXqEGKv3Su
TlrlgV3rUTDydA8UWRIwuuwydRFcC+XAzDtQlF+u3pGJ92TyyBR+/qPXUFQ8W9wFp5nGO/+R
CIkuGC74VBSq5Vk6TJW53yYzv5Lfhk6tzWMkBx/nRKPlAOU/spJBEUv+JVABbCr7GVRBs2Mq
+u6KjVy016Lxl+g7DZ86ahR3oCgcaVFZ1/5CLP292DqwM0WrfwiFKCbaTXOv/TjxHjtWiV4J
WPoTQzg8g/3W6vhPFsLhm13RT8CdreiG4tGXgqyCsMSisRjF55AdTpqaEUDReIOMJbRGUFTN
IcVdDcOfgSL+BBQ9IgJa6s0wWJV0qLIBFDkY7BntSvaeGED/DcfhMygyy6z/uABFwwUWLGOw
LErSOjdiZHozTzj+7b46qLNIoIh/CIrilQEtiUCCNl8GUOQXCysokiSahPXaVmSC1HNK+Tta
hASgaOIDrz0RwYkCwirFEFVg8WrauAtPQZFfqGOivUZF2t0BdAMUtfKzr3+mQYrtKGWENMDf
gCI6H2uOinLZEMPCya9QEYAiUqYoXWQl1PZJBvVTFoMdO52CIqfe6Nz8plPk+XasGfa9DBX5
w1ugaAieQclq2rTkKR4ZAX0Kioqyt7+qikdyhm378+d/fW8KivgkT4dOoDf7xbQ00ESUL2e7
U583qFBrs4M+6ETWdgqKxHfRZLOjYiVJ5xYyF70S5CGZJhTvuJlt2GFkSSJWm4JPrK8iTmS7
0n1ggVlfB3JQZF7pOqQpkK6UiTyEaYQRQ/hMb7q1j6zJM1g6YcOvJdJnR2gxjkVtWcUST0UP
m2jGTCNnW9K0U4GUVAXr1Y0cOTkBwrX4dUOb7w/V+nte/AUGJ7V9nC0zz0AR3wJFXqttr7Aj
B1RXR+8uUFB05MvviKYaz/Vt6bknoAgPZvHoljEKuvYAivgUFMU6BsoKZbxiA2+Scv5E9M4j
uSChWJIvFhKtHRSVj0CReCa07h6hEKWmARQZPvAnqohTrCJGD1kZemccGVAK5FigC83UK5Jc
q8mSP+mSQJFgDsFMffsm76CIwV+jesUygiI3Gt7xChTVENoc6/TOfwIUXY01Q0Uip60ae/xz
VASgiGGr5JwWxuwjCvvc7imqP3BbwzkoagqTZiVu4LfR5HXJr8og1+H0ESjKwTMrDaCBKhJ/
6V+CIhK7TPnH36qrEr33BWvmj61PFuDBH34TxU3D09mmPmMkG2Hknz0GuOkqVnYFiqi/SI3u
HW8hbrHLhHSfY6IMimgERRRja4fdRlHTYP9n7lySHMd1KKopAwgMe/IW4w1o6KE34A14/S8t
EsTFh5Kd1d3ROaksJkXZ+pCH+Fxgr07kQlFRDb15Y2vGeH11ksSxOA5PIdDaQxGN5wyg6JGg
aI9ED9bk0fSOitoDFLX+8iIUtfdWMCblJKEumxomFL0rKrHNHBtAEekGocvy2BPIASeM9e21
vk/yBiiKQYxOg5BhTp4rlE4p4of34oK/hqItQtFg+Gnd2TIU/fz6RL+bdH6bNyLOKQ6KaItj
6Xr31Hv7ARQFSaJYeIrmFcGw7JBVc2yr5x9pNdEUwzvpInNTfQVFaGIypGZ0xW8JisT8IeTC
UTIUiociPSaC6sGDAr4QgyI1S7W81dv8jmRMD9vKOfMhFOWxtntLw/K5+6wnoK1MNf9g9tkp
FYmse3Uv6QUVcf6dMxTBGy0JZloKdxd8MZPI9SkUab43rR0n0d5oMzHMDLI5k89nUETReWbb
Kg6fwjS3/hyK6M+hCALpTuyDH0qOZ2PfeXgan4zFpLlhZPH4h87uKQGtExc0jdzXzYPSBqdQ
JOj9/Q6KJBDQ+HYW/StjsgMoYltLoyBFlNE5NNwRsIZzn0K4BbXfQ1EhLzrZRgmIMhQNkMFN
MTQhFKXXJpiY3p/gEJYBTOapnzMva7+WKTu5uZzo+8HcT/+FEIo4xuzCcozB1PpYODOU9NJp
T/AssMPub6EohAYdXubWMOinB28FKJIOMg6KqjOSmr7MfUbeNnWM0u6Cvq6PoCi+3r0UU0va
QisjE8H2IDojk1ehiz+j/ZmnwbnJL6GIY5N+gSBf7TxqcPpwxlgNpXkoOuzV4oc/np4jMoYx
0GhCkaiKCQMUxaQzdJ8xzgAlFW/uiY5QVAAWhjt+DEW1eCO1fw+KEhXV1aO0ElBliDmxNE2S
lwxF1ILiN7lM8RAlZtqlEkWuL6CIQI+1eL84h6CY+0yiwRiw5yMo0iWsSbZJR7uGNFlCEX8H
RTzdZ38ARTItMwAwUXYrFKczcEk/gaZ9hHVhpJIrMxbPVZ29I7uGonVKfo/26c/T+BoNLUWn
UOQzBb+CIjlCHQIU4b22CNbcywUvRC/YKL7ozniUo+iXKiKtPFZQxBdQJDPnDKCINq+6vEUo
KnqNMwYoIgjPnCamR3ObCAbboeCKXEJRmKNDUuZ8sNx2jLI6USE3FMSP+qIJgdbsDM6wveNf
xhRZTPgy9vr45D6maPQiCKnq/EZbOKP4mPBuGtldaLdav1q89ueB1lS/+iyosL2EIlBxrhP2
KcpFyhauvcnJ0++gaEJlDDNqQYFIUrTQBhHavpJZ1OSLSttclEPrrlBQ+NUtNLdF9pnbkn4P
Rfgq+JiinkZzLBBnUHQWUzSQqKh9Ni/BvwJFgYpWFTXZxcCcUhHDsxWaEIo4+rBhApA44y90
wekailgfPz7x6LSo3K3JROPtENOpka/cZ9N5VqiEBlMR54fxGygKASysW8Lfu8/AVyaMbyJ6
1FZ+0hxePVLPpo8thE77F6BdFRqzMNgDjmIc0lmq4ra2IWX5seQMOrvw3wVay9B8SP1h4svx
0vO3e46Essw01rhLlriMu5rgvfTWKtC6XQVa/zCR7WNu+NV4Nh0Gy3sRoT2hyJ3RQZEAFFlU
NeOB75u/3/qllyEM5KCIZQ1FghmFYP3AIIgVFLVTKCIHRVJo7FMPMxIOLhEXvXwGRXXQNilk
KpCuoKgVUER4xsBc4wvhgX1C2HlMXx6KZAlFS3ULjqxQz/pSGtt54ab3NXWdO+oIsZNfZJ+l
D7pFtqEJzR9B0RalsBHZ2dXtJR/9Ie3l6EehqBAHRUS5JR1LA7C0DtFHUPQm/yl8/SsoOlSK
/ldZiiw0qd7W8hnucC2RdIpOSEUiH/S6oiLKSktaCw+gaL5rko2e4pJCtpUSMvieV1DEZsXc
lqYiytkL6jIadY77sy1MaF2+hqLkPHNBveQMG4J2sgKKTpf8bKE6lPfl7y1UDw41om9iyxbZ
ZxUWUUomobq0DM/gminUjJMkVXMpr/gq4sUDLBo5Ia3aABRQ1AonnZHflNfdvG95BrN4lx7l
XulJ2p2wo/S41y3an3ZQ4glnVCii/ln1Qr+i02jwSJdLTFDUxpt/NPka5a4Xso0745a3qAOw
2jiQ8lhdchvSNzXrdA1FYrnDaDwaRpCH5aCmi7+9suP9ZSWndMIyPaCZ8XfDXszeePyNThHI
IDmdIlX3vqu11+sUjV7KNqhTNKDoNq/HDsNrzTQc/rAcT43Lm2QoqnSKThS/wMP3B1DU/EbF
CbHBbtl8BN/qFIFtb4U7Ajowa4GjNRQJ/NmtDGiuGsZRJyIkpBoLkr61IcqsDQsO5QeHu1Nt
4F8PDjOM6XPJK83xrwKK5MRSNNQbc5kPOgWZ4O7iMA9T+u3ansRQUfm6FxdUFGRpptJSbHJQ
RC5JNriIQwLO4j1qlyn5TfyKUI5QuqPA6No0rwIX3g+gKDvPKKQAQ3OWK0I7RiyVeAFFoJUJ
5TFEnEQQZRsNX3jUKHrU2P98B0WZZcoCZ4UrDiiHZaRlyLlO0ahufeJE9dlnsefN1qcFEyWd
Ik5Pmr1pc4KyJgqrkYOifdUL1lmZy57lwRQxP4XWo4k3Ph76OLVdX56VThHGEtPIf2eLWDma
eESwCxH0oihw1B09zwxFbvihxig2/Oi393VZn+kxZ2AN7wKKBLP6Zv/bZKP8yNr8eMtQZLdB
C5bYfGeXcEami8THD6CIpqL1KzqFlEdmDTuHOyRALeS+gOuFGow0HO0eigiiyicUkWweinQs
1qjnacazIsapfsWZimq69JWSdZJzi8JEW0lIhScvlPkoESVBkSzde4o7HKzkCyiSBRS1AEUY
zp0xjPFBUlhBotEeL+QdcX7dKlKrULRm9yqEMh+HAPo7tsoclXbGF74dK0vR+MmWIr4AmRj/
slgaQ5L59gkViVz3YipsRXHdGiHxsclDkepMZE+wxIAbOt0ynNU+E7wYsrASnJdOfUvTaz1u
oehjO4OTqenH1V3x5lgpyWm+Estbu4AiiPSr5auL0LBLRWsBdhEqcOfk8MUtVC/aEonOn0j1
rfbYAEqFpVPMgmmGcjFxgqus0E+6XzDRuszHtuUyH419r6e6DBkqf8w7aQdavvs9jOUPZKxA
azJFsNBCMRD9IqPMR59ex4z2tG/5mNVMSUGG7Mi5vo4JcLc7vocD2zaH1/ogcEaGOmRu+G7X
FcHhqY91qBNxg2e/zVhfgCKY5vvSseWVSPKqJtH+3qp4d+jVsFYmKEK+DY4cHRGuEpnMgmLb
Se2zDT+9q30GxckiFEEvgWodPGqfDdP4w2YDGH4KDw0ocmMROBk1uquufXauEPsZFLVk5Yj2
IPoUilzqO2Xl6BKKZG3J+gyKsjC1jykK3jlxLjOqL4YtlcPLPMItUU2pCNo9Ki4y3G3Q07d1
6G5af+iKEhf8bPGFVu3YzmhbBjoXbyxT8nU7y2251XYhM/6O1N2uIo8671w5W45eVkX7PKTk
Eav+gk4LG+lXwdU+l8A7SMMaR+dQJD7xsFY6YvmVTPc1FGXnGQVxjppHKijyKtTZxlM1aVg8
Sh44Gw19CUWXNqBFHv0hXbG8yDPt5JNQovQIjBXsZcoJc+6tSoOUExWYw5Uu7uHzcmsrCaol
FG2h2h8WhL3B+spx4hFf1xWjw2ASs16iAp94oD5rcGCwt78lwUaLlinRBZR62ZatKD0v4V8V
SmlaRldEg1OwLtIOA2hxGIYmO6NZZA8DKsOBpEbBcEZnFxlG3bEFMON+gKJX78hq7jAauncT
aOvGz5/m51wsxexue1hooGlOZjNrt4HSZpu9wnQFgec8UsYkq+tAnh37A3vOwW6RSf0LPMer
4Ho1sD9zH+s5bFOpQiMItGkvL7N2zONbw+d8QFGertJkS9LCe2iG5/cnZw5WbIpCzwENUkJH
7T6DTxOq0adcMA9FjoNJn56AO/gN5rCSeuEuLC8Tl249YA1dOFiVAqQlWciGLvRBLVN69B4L
IqMKwrPNXmyPr86+HL0xMKEmKPJqf8F91pWKqoKwRaA1eCjgzgYFovEMzW5U9lryznUACg+f
5ZYESYMXZWhyx6YARRTlr6gwFI1ywRLO1CUeZTuFInPs0tIQZkpafzsUJedZUlqlcv9U5t9P
HX5qZSmRFSetanoU9ib+wyIuJ+Ak5xe5X8tFj6X7DL7lHcgPHKCU/HrMlaQSTWfgfLYpu/lk
5XVbQRHl6onUwCc7FPfb3OJbToz/KrOwOTWY7KyX0gweaHITcXhKTWMskAeeWgTfQZESzZag
yDVZRUHJZ/RQRK6X5OGP7rfmoMjGGNdw1HN6uEXocOvfVdNjn5H7T7eEiYkw7qgtNAa6J50i
gmqco+mBcR+jKNndqvQ5tlH31zHALVuW0T3lDhyccx/rPNcHzuwxRsCieeAN7CH18ABFoplo
oC+qjjm9hG6ao1va3t7MBDsmftPItzVsii7YykO2ydPcpONAH2e9u0DrnlFLD3H37OcdPOYD
DB9vOM8oFI3xMZX43USebXCCGjFF7yZ2lRV7L5AwggPBP+iGZzuQBMvGENlc37pe2aH6pXn7
ndbfFtxQFJqa5vrOh/yWJbioWWFJBDwNfaI0HSotmvvsjtPRuU7RX4VOEattYBXYgWuJ16qW
GExT9qotl/cPFsS3BpnUy3g2N0tu8lDErfkSgC0Y88EYQcWZhLdTKBKfByyrBLbWtn8Cilii
84yd08YVqWDhcyjql1OktsdIpcvD23/jp/Xt0m8PXwRaz3l220IaUbYKXVIvVgccv8emPcWy
Z4mvVOFSIhQNl/oTP5uoycL8hyJOLkuwiYtelJvEO/Hn8DgWVK5xZ+ybj9RWdMtNnx1Y9Pro
wINp04HF5+q7R7OleFsmBc9YvxD7kUgxdJwElInJfA0yBGl2MjPdW2hZoMkIaRx4b+NA2+rf
2zyuL2mHThB3Q9gbHo447Ncw7/U/U7c9HBfq+M++//yqTUctCD7WtDnWWOZo87068c9ex9CH
af99RtLwb3Gfaw5PxVg/H+e+sw42tsCb7F1umnRbQm38x7YqqnrYr6pExx3hHECoZqRim/0a
woHRz6AHCviA4LguUH6gsJUd3Xu2rD6XPw3/Z++6kVzJYWinLKAQTjKH0QUUKtQFFCid82/T
wNC0kcZ89QqoNTVPoHePIJq83RgKxYR4E4jN0pAszJVBPrJuhvSORdECuUrCppiGbkpWSsRF
N3GV671zn8jdJP7/fA16eFwqQbuv3I117hxmTF+FqbpeoNIKOjrk69hmEQaejulkP+jTuFZv
tP4cOFrbi69G03f7mnu1+MmvRCtaw3i/9qyh2L853BuKzH2kDVSToql9miG2GHav11a0RWYz
e3XLmBRh2DqcXjoX2blWw0C2z1h2sYCREQjC8J2fUuTBOv8inKi8Z990r4GH9j6n7QXeNbrl
DagiRWvxyx5P7wNgKIxPpVMXhOaC9e3GT54v9CoQiuFtoPVieX0cUiKLcpKkN78UBBsKTYVI
BTP+BJIOhapFPSRLAEMm+lsLkeWnIFm5MZUzrC2cWctmt0Aoz79gvRO4zCugQsTRGy3iR2JM
iqUmuoA2ehkQ1G2GsT1bx8H+Bqf21tRVUlSNvxjwNghY27urgGZcGxOpWR1IX3ds7KMKwWBZ
4Xv2+5XmZCAcaI1STL0H2oB1iv3iZlyZmlf9xF1Fn1oLt7qTWy2UFVauRO19AoI9bCgQyauY
fBYXqCNFYZrWvj5bvLxxwpV7imBxh1v9DKtaQ6616c+B2Qitj3Iux9UuCdTfU9T5jeGCZ8oO
2jIkRcsPkbZh4TlSFEaX8dCyYW83iaiu/UPA6iBpy3z4jYT/2HzUTnSP3I69RiNXrEHLxiOk
7hek8YO2OIhtgXYPWdGec8uXgI6U1wEUhlDj6wDWHSQkUy5YB3V+BKZAKDY51UIm0grpB8gS
kPh1LIYQZKEGsBQlveV1hkdJUbEXXqElRdF3utWqU0zYFRpSBE2+BtFzXJYUyd2MQDtJ0a2c
ZpqZdUCKkE9wdFko5iXj6TUiRVhMpG1cJDeKy9iFfjjvIUUdRxmSom5CGUXPvbPJF6Uz4jar
dG3ms1iu03VqSFG268TVG+Vi3LqTWy3p4+nVo07LQEx5oNioiy0rmUozVJEivSBj2VL0eY+G
ovvy/nrPckC7VvRNrWxUX1+GyjY6bF+rZ32QakePmhS1jkkL3GU7zdVnPjZCQ/hBk0r/aTz9
9iEWVFVuoFc5PfsDUrTLVX6dFJVbKqkhpDNyOZ+fN2GNHI8OAx0prwPo1Beou0bfbtAqaHD/
m0O7oWkaQy8viE++ob0v4EDr6RQfIA6LjYbPaGGvhTv6BOiHJquO1h8f4wdhAXffVU0/oVV+
3xMXwtaiYGiA3CbbXm2/2GfwqaV8/UHYrRJNB5byGgCtQy7/TqD5GIbwINCR8jqELj3z7a7R
V4eLGmqHj0OPQZPPQP9uxoERNGg0oJ/Taq9S6aFIaNafnYruRPfkWDRYoyGAN+2fkaKjL7nU
2jd7yOVf8lZg96NoTYZXh46U1w2IhrYvbK/3Kw6IFrr1l+M49BC0c1Pv8hvL4eDi2kGjYfg5
rT1QfNtwNd/JSLRwTxEF70/fIEX4TqRogv6+Q3jsCkSX36dF0H4c8MLQkfK6DuGCqYj67xcb
6NpNIA49Bk2APvD/2XwzvWSfCOf1PpGvbhw9CBveak3/EaH2K7bgdhIXl7cXGHoV3RaP1Vxc
XP6SrNWkqFzd2F/eiOAc+2FKNPgqyCvRxcXnhvUdlOxEfRvl4vJv5fPznijR8JN8FxcXFxcX
F5d3kXxz48inyMXFxcXFxcXljeTzM7Giu5MiFxcXFxcXl7eW9MLH4oOw7vTn4uLi4uLi8i6k
KJ6cLX595qTIxcXFxcXF5Y1IUf6n/eXZW51dXFxcXFxeQ/qXC1afMzhkXK9Qq/sKNCrjK8Rl
SdFnMhV9fvrXZy4uLi4uToqcFL0zKSofnw2Oz554ddLFxcXFxcVJkZOiw1qKipv16JmPA7WQ
i4uLi4uLkyInRd+r6GIn+vxwUuTi4uLi4qTISdE7k6L87lmkRj54XFxcXFycFDkpemdS9MG0
aPjzq75z+/dPKz9dE/5Ms4uLi4uTIidFB7EU3T/Gz3xQlDD/26zpAftEB9Btl9aLQnjutXpu
sy+uKUFA6YVYMrE45JBDi5BXhUM7ICcyTop+3lJUDEVLPkXtu81E83w1bUGwS+tVoSkMtDq6
szOuuTLOFAdyEr4REx1yyKEV6HUzJnJE6OCdoi6QkyInRb90T9H4+KwhRXOPxMwXoj1ksr2y
QMkokv9vIKuFPTS9IjRzm4FWS3f2xZWq7qJBEWId0TziHXLIoU3otTLWyMEgUvsbwOGgrkBO
ipwU/ZqlaPjMR1zNwa7sqRcmaKYHhhQxZEhRZBUNiTBafw8B0QMBE7cZaNXDcGdc8waHrhU0
z68nqpUccsihJeh1MhY6ORJEkdmJ+QVSGY8D9QWCp5dv/7DaSdE6KZrlPvgkv3gUsU9RIUUh
cx80XZIhQ4oM1GhNPTTQukTzFFAcDqpF+W8u4jDgAsTmrn0B02w40KrpTgmoOxYa5Wv+k3qo
OZJ0qIeA1OrvlfPe0Mtk7NhyIcMjkML5UNBA6NikyB2tX/b47P55/7hvH5/ly62BLS5KioAs
kwjYQLVW6KGBFp0C8QnytUA8LFCmK9oXFygpgl0BM90ZaFXcpgS8aEXMe7E+rimlXDJRVOfC
tbuc40HWfP1YXKh0Z1mLjJH8f1FfYKbwzYBpSXgqRSR6vIWgzA/PZPUvoBdpyE2hXdBOoSeV
VsKdGpJ3wcNAXDgoR5mP2IqcFDkpeqii09NnyalogxRVB2pgOqRASoosNNDqoWQWALTRp3Uh
DoazTXFeUImT1riAvgQqFgasUiyF2JevQncGWtVxomZVVpY+rnyQmMvIzRChZGvjkY0MsYEk
GucydDNKXcAQLXk5oMG+OC6kOqA17oWTpChLomZCG5JTRJmcviRFtGW82EN+Sn+g7XgkKRq6
U6LHviZKIydD3Fp95eqCSctYnRc0xSaBJKug9VU3WjRXBp2TT0ta1R6WlrTQMo0VLUOKNrSi
3ZS6gNGCS+MWWmltqDrmQlZHAXcX6FvQhhqFP8kFlU7LnYxQINAV+rIFBaX8BcrPKdVayTyf
oVuainGktZAifvF2AiXFy1XccIB9HOASsAzzElIg5GnIaKVsQwPJbMgQEk86K1q6L1KtcjAw
DtgsRfiQX5GTIidFjx6fpRO0ASkafF1ejCjVUiMQylqaD5vmVeXGw6iMsOkWZClDCSgrP5ro
Q12eS9CBaVKM0RvttJK1caGQogLd7CKfi3G2p2CnyRwIImrAs5Sa3c7NCkshDMzsJHHNC10I
xupk5Fwgg56XtZplPwW0pKhAQj5AUrSkSE8zy2rHWoYUaVbRkoOSIloSSTXn0ikZq1rFkNfy
THdJzmLbAplwYbkm9HsUzFm99RtjrElR0aqgWSVfIFHKAATpzNO09onqjhOxr/5MhbozYqlV
ZRqwoqWkaEMr+6AaKC9GMz+EhRZaae1dWd0RcB8Uo8/dRbXSijj/Mir2RvxYxt33M9ZDoNMQ
5E/BgyEazHIKt+E90iqUpqoamnotqqDJbrweSVGH4FwgTpuCmPPDxRQo96YMUQ/prN9ppVYr
WmgGZIKoGraSIkVfIeozgQJJswbZeFBvOnJS5KToF47PEiMakaJrPTPl0ayRiumdIZC1tEyi
xNMHSRYwGMOAxkVQZnWFcKrYitp+jVby98bkVljnC+voQ50i9qRIoexCHv9TtnSUDVAhmMUa
q+ihzVf/iUTK6hwbirs2maQZOpeaUIi5YLIY3+qAk8ZlTjMZOhXyQRJXxVrOau4qM7/EpfUR
KneyNJeZFNGmSNETUrvKpbhy8Yo1/55TPGmV2GJj8R0oWppVlKza+rpJGWGqyNegQBUD4uhJ
ayLtxNEecEayFdv+ahaZHNeXLSPW1kO0mch0zVQhKNMwAaHsFtq4IoGutaDRokLzGYo9Ofmk
TkstVBs616BhVqtahXACzN1CGy22I1sJ13IPetDDEBU7W1XsQV7FgGHUuIs9WMhd0Fl6ALdn
qmnuJ8IJ8oJtvhlfghKKNZTdNysIzflxmjpaF2OOfhXKU1eyJ8YOnrQo0bu80aPYWTI5yYZu
hs6Sd4GyMRbS3MiQZlog5DwIZB2kNUXkXm7iwjyqMnRhs3ogUFalkxE9cIDmlzc6KXqUFC1Z
ik7UkSIitWeCPR/SCUoMDPNE8nXKtGIekmV1T8NlniNRF5p5paE271/m2CWUGfk61Q4QKcU0
zEkzoaaZvJGf7OzC6QxI0RRq/4p0fgFsl4rXD6XAHAelQ5cc/TXwRprqk7VEDgSKEYDsjm3S
aAwx7Y+VUSs0AW1ckv0CXaytZUCKmGBIiTUuyRM09RUnKGoZQNGicLNWISqkSMwVJ6GOxgTe
ssLpFELdxNopqvqSyuHWO12mpQKZYp/ULjg1rZ3MFdkykHbVxdCVmQc7tsUUqbK1GQtDkAGT
bF9p8QetL2EapqKpMnOZuEhSTFqUGE6lVTnvSRWm07OFFqqMIV1rW2iU1bpWgTfviMH6w3OR
zmtlBLGzXKrui+pByGVMlArWqlVIkS13adpTC4nFOFsGy0Kcl3qtMDIB80+xPYpF5MZ2zQmu
SkjsodgqlHJSB6Req4EG3kwl+rCeYj7s43mrsKLSd2aaQ+mefmOrEog9QGfuy1AaHmkCE4ik
gxko29gATMAS/VVTJB3Ikgm0WmfeToX0B5PoUjx8zFTkpMhJ0WOk6J4NRf0n+aF2GM6kCKbG
gSbyF5QZNC+f7EdjPDjYliELjW61oWcH08mSIqoph66YxSaMJl9KDr6uZv4P6u68QIquatL4
+o+9M8eSHMfBsFw+4MFspw+jC8iUqQuE0W6cf1IkdlCxZGXN1MxEOl2PLVHcQvwE/AD5If1G
gt76IX3tn478PteR2OXT5Z5YBfs7RYpoOPomTdV/kU3TuhYL1m4mqSTn8oY7UsjbjW4xmId8
Ffx5FurSMEJXPbJxwj8R/ROpBcAUKLrJd/x9/E8IjWi5Lh1Lc1OtzoOxRIp27BRaHzvknngv
dsHhUDspoKsykBc5v5Bv/M1Opdtuts2clqcD3TL5ogjKTa2LyTVLi3ZxN4argnjPhVe6q9IM
LT6nRJnt2C56MqonPm5D4AfdYKcmX4rrvu1i9vAjIWPYYuvDjYgLMxa5ysqwirsc/eCLWiwP
hRS1YZFiigCOdOKGgZ/uG68E9QI5Z7/ZQLYhowke3qF+K0VnT++hKBHQVnFHa4k34lKemMzU
45Jh6tzMoDqmhKM/lm23XxMXAdq70IpofNXpjbDrAtMiew+luvBcGlx0GIblIrSiweCe80DG
2Jvp8ANFHyj6YSj6e+isJxmtU/RFfye2AkW2f0FTKNL9r4n5Yxh0psYQhwL6kzIoYq+Mc605
KGpiuml5cwhNleL2AIo2s6ccfAmcnm44X59N8jL1fGK4sAxc3fwhtkw9itSoudHj7/vaWbBH
r0m7Fd16uvckOZcHy6z6dleZsc09G2RArS4NI3RNRXbY+Ceir/6LgjazoiwCRZs8qikUQVmq
W3apuc1xmXj/3JcmlpEoHZp1O/3jfBWfn7bnWx0XFdV0o35/Sp5H5z51Gbq0aDso/xjhECVN
mTTydQ1xjS9yO4jVpW4LeWKrT+yGAgpP1NCyMtu+6FBGwYtRPX/bID8f9ZFuJobJy4Raqd7V
bx8kfiTkZ1Yq87+rNUkIl7DlXrTitHmcFcNY0lLa31FxukE4ycRrk+jw440i8Ah0VCg65jag
SV0Jio4JFLGpBexqcFDUe4gIjoBy0WpF0D8bwN1oX65StNUilLc8aNHNvizsRn13IBepxV67
tCGA9et1/9kHZD5Q9J6lqEeenbai2usXoIjsO9ygyPY/NfQ7KMpOkOahqL0PRaGphyi634Ui
SLv2gCI4/QPAiiB54pm/yVcP8iONUETy+3abKahjwTZmcHu8QBFSgaIuCog7ulVvrij5xm87
5bpc9aGKIZeyuki0X+ShiIbMYMkNQ0l4jjfzWygU7Wy/x7usF2uXevjU8YarfJhv9Spts/Oa
KWGH1scOuW7fHQL7tcS9HQ5OHB/Eva7ujupFrjkQusEPOtddKjLNPneNTAjvG4G7XXUXcc2a
cce2oK8bYKS2u+kTb7o2wgxhfOIYHJrNti9axcm0X40qjN4i18UPv1UcmbV+zVDkhGc2EkTM
ww9Wef8XLzDKwwqu36v8qO3J5yx/IWP/XXEpT3eYSDZVKAlJANh38ylSwJaVoQhj0Qmzt4dB
9muUektRgqI7T/duoEX8c0ZY2NG1kH08hCLsmfi1aNAVuBvZkueKoC+kr6Jbqv5cMFa0cuze
Hm4MUITi2LZwv6+dhgyKckDaJAPBt0FG5e3yn1+AIlPKsyP0Z3jkufewPb7qpTqWdl3LHD6q
XngOMpczdN0uX/gb2pWg6O9uLqoDcgrnEhRhfD85ZZD49z0UmfrhfP/QnEdmY2PR0BwYDTMo
6hE2EPwC2OTAwNAufhngNRShCvtk9x7xFf1T6wQkCa1nI7SrfuhvzMOuEgzVUaiFDIPEN8SL
xT5WKAJVztq3Yd0uwKCo1DXLBjukNE5RYiE9rvWtx3lRvMp5Tcfby0mPFIoawwwYFLXkd3RQ
BHeFonpVgcgRbAZeWzPrkBvVu+Mq9Btn54el2wlOvQqJSIbdvb566rjc0ngRu1u1CIZ4dl38
woTgGdyydEfCG9HfuBsBxhWNaTp6Hoe0Jig+cQwOzWZ7KWuVnKgwj+q5xzWGIngERXs16mFx
oE+hqDW1zsYxTP3mu+EhFMknyaoAcGtsGBRJEQfG5enGgTHQWhBRvfoHR8nCDJMMhJB3c1zg
OWihyW28uyxU1Jfy6qxPvJIAxISjpt7VFwEfsGFFw2QWiwaZ2I19XYhVx1dP8UZWolkRWkzD
zTsQfCqDL0YXPnRQ1D5Q9IGiH4aifsjHhaUIfVrRGRS5cKQARfijUERvQZFm9vo2FKG99jsU
NRsJbKJy8tUPmzjkkfCHw6IaoLYyUxtUKIIKRYAFiqBO+6Y2lFLXNEW+7nbxKLsORc6FxXlF
/FUCMvIO0/PwujrToGioeFeBImvX1mJSpG5NUc2HcxXl5q9O9zb2ydj62CE3qmuWcRG71qCb
AznsENSd09gA6Kvva364X8ITMQ5OzyHlPHfqBvRBepRmSGLK0N1Ik8Oemoll0wII7VKXGoam
0my2l3xjP33qalS7CEugSMcLKxRRRbrlERT58RIxuWsF5+LZfMMYiqD6G9c0+KC/GOpBToOB
QVdk459/6HcPdrcIKFzegqLCNks5w6vm15Jgg6cuuUJYmOri987qNNhCGurXWjhQgkLRUGVv
VsSvYXBXDRAHR0Ckkvk9VN+jTFz1HJS3lbroMRTRW7kwXwOZCQF9G4omBPTLUDTv0AMkvKbE
x3XMSOMxfPxPtStYijgk/5/3oahv/L8biiytzWtQJNZYpY/XoQjd3jWkBRzOerYeHRTFkRhb
aouNoLj3aNxwEbigV5y/CEWQN9MrKAJvYg5D+CYUDfMIPoOi8cwjQFFv7zMoKocPP4Ci0FQc
gcHb21DUovXpdIiOD+0ARWwp8k+EWjSMHxWB4yZPwZAxhaIJHZAcAXUcyyMo+trTIHMSfB+K
IPfx56HoKCkynkKRZDPe3oUi9oIBmM976W+wkICgb+uQpxuhwWtQtD2FIqqbAlRO4g+EWchZ
qKzYkyDRFDv1n0MRJWph91m7Ge4sBYru9qI3KMoGH64elnAj85xWzykoz0+O/x8oes3q9IGi
/wAUDU3RPzNNUYUirykaHBGUNAmKppqih1BEqiky6S3EqyhqiqAIiBZv8XldUwR8woF6a86w
0F5kSdxGgHSLmqKRZyAWUdq0jtlMJY03PoGioimabICgn8I/DEVYbAdTKELeejwU9bomUHRk
KKJ1qzaztVHSRB+xqSlF9TtQBM2C/BYZsc22SZ7tZIhqxZow1nYx+FxBEV5B0cxkArPZLlA0
vUpX8vtQhO13QpHYzFIiDWzPoWhs1se7UDTOPdH125MAsGFwc1DEHrUIvECObR5BEcAL+zS8
tpvPjvSogIUTjxqkIz9egCKG+gRF4yUK/JW6ViiykJmbuc9y0UIM+3Yj2LePXdVPgD1H9yEU
wQeKPlD026FopCn6axaSH7X9BYo4I+MMiuAdKII5FLULAUKQXF9DEYbskq9AEbILXoPitvHv
E4k2bQXLVzHpuCXZo7sqqD/X6gQxI9WqeV72R0JrekNo7YQ3eFco+r7QmnlkeyS0ZlVqF6qa
0HrcLn307VJH0i3V5SXntxwxBl5LnNNTvSq05sSDpB1qYso8pfAqMuna9iCYn44X5dneda2u
1/JileCgn5cirrnpe2D1jUga5BtLNHAihXee5FeF1v3XjdfdfkNoXYpw1eyEpq6SGKkktI7D
iqsM4f2B0No05/6qbrQBv2BgKFNuqy0K1PUbRtrnW3wgtKYFnwmts6HoQo6ds+LL8TZFaF3r
Qn/rndlpLrSWQ65JBI+uyJZQ488Jb366uiropd1VY+lo9Z6Ua11y1Z8ptP6O/ueXoeiP1O78
V2udHvsxOR7/79egyOcpGt+TQD47T4Yi+Qn2ZCAXUOSMIT4kn+Srx5mMhh0i5ikaBoicztDb
Ux7kKSJ31YhCV8qDdrDNuBEd5mbhENrwxGHZcEXlwAfXjZKnCC3Wfi3IEZI3Ur5xyaYftJD8
PQtbZ1AE+spyB8kJFOXWQ6tRznIjnZJV5K2nRSjqb80KfvpC21JdfsP0jlRI9jSb7S1I1GOH
5t1mOwHqj3+TBbqpsXCEx6OTfU/Ha28mOJPlC2W8KhTVcHWcxaa3ePSYrmgMjVjLzx4qFIFC
UZntVBep93vabRhpPJHrspD8CRSVkPy1EaWm3nXztycqFJXK4lAwFLUoVu9R9It/UfRQM/ue
2mkw8M0tHYkQnfVbQ/IvoWh5DkWQvMUXUIRTKPIa76NandarM2OHHPuWoIgzCFFPM6InsEiR
vfNBD0czl+DVVfY7PAfKriJeJ1zkftxwXRdPBvqxZygit9HRi1zyDhT9m/5+BYqe3/i76/pT
/17q4xMo6lai04NW/hfUjNbgMlozHajxgKjkKSKFIvnlzZNJh7yJ59/dMpbt+vUtvwxzpCkU
aTrb9Z52nNEujvGYpEhyibn7t5jmJ/z6HBUoanCXbXIVh9CRuu1DeshydGtr7kUR1VpNN+fM
SDUVzyRhj53X5rMxJk+EQVFN2EOWgEbrsjxFWBwx/onon9gPEuCtZxENlju1w5ylFVH2VJch
cBdeZg+hUcV9K6NaOxTyYGk6w8FvKomDtm7qp5UAOVpV5I/L9XitebbZ+9v3Zb3qKBkn+RgR
V70T19iNW76qN4IVcJrZc6XzmL7z+/qWZ8gVWZ6iPNu+6ODoM7rsNic4RK7LzifM65hWPbMi
VN9TCrjqh1DLd7t75TCu8mM2FBgOdRmPZGeTuwrGQbk20ge/j8Cyzmvgfuq334ORrvIURW1Q
z0AUvT2HEwz4G8tVOYgM3Blo11B0PHbZbSlPURveLArrl4vW1ZahXCVJO+2qfW3lKjPn+hvl
9Byp3iUlCtXz0bfgocjZw0DOWPETAh8o+kDRD0PROBD2r9kxH3EgytlnzDjr5OwzPc9Qf4Js
YrmCIok8aL7JIyrUqgfVFtoT9UfotAIYP9LHz4qW2PrxQAcToGnsTcPS7EwD3b6zDYD7CKV6
D2umgvA2oJyM8PbkmA/KNz445mMrR6q+dcwHzI75cHae6TEfw3FIA4HRQciJaOXkXUXg6YEU
FA9/jZbFNVuRXF2lQ2Ek/sXe2eu4jSRxnMFigUY1yocL5oCb99iNFowXUMhwkl3ABhQoGwwM
bOYXmMhw7mQCJY6cGWtAmEdwsOHBiTMHfoEj2V/VH6QojTRDaf6FW5+m1E0Wm18/VVdXhVY9
XpPIPk4+jD0MtK+7x9XweGWJFKz1XZjElSxuoVNT2QWLcHyOdVTvgkrFQNIyH2G+tU5HVZw0
H8k0ocyHjqp1pGU+GuV3az0sssCGGi/zUaoiYm+TaI+UNssHzF+dFA1Y/5yo41byh8tSxCrW
yYmMzHdhUY4/liG/dFatQycgowdyMNbbWiUTY5UoZCZaJZNstpJsDkXW16J99VkXj2aS1ota
AUFlfpL0SVStyoeuyVYmDUQX5WdVLtll1NHlb0k3z6JVj6x9iqPQyj16FunaPRk5VQGKAEWH
9hS56bMMimgRYKDyXuQk/lnOb/nXp3+vhltQh2oF4SW/8FGQ4YmTmqzjxMlVkkvZe6R1OnvY
yI4u4jdpxWGJvPJVZMn7rdgd49K9VvwDhKPDpvLmlXgvibORFDgN3hBeuALWWUFYCr+1pxeE
JUd+TQ5F4wVhKVquJ4PWnanyR+qyb9NQoLNQEDaMyCK1KysIW+W1PykvoBsugMbX+x4rCMsO
lONWpMxabBfkXrN/7oczlNBRafNN6XSY4k/tv1pWWY19Jtb7Eh2jL/wRVUbtNkbJGYq9KFwq
VJv596z1nJ7t2Hvk12ONHvb0IquU1nAt15s1h7GlIGxxKNjeyuOG+WK//qLwV+Y28+VN3YTI
HooCrGNHUZclov+VSJyHYfPWVnGp1ypbuk+UBVWTrUGgs1yPPWI1Rh+MMHlp2TnW/Axdp6IQ
sONVHoqq0VZc6OgTrDmVzjtyCGTvVcLJxUlBWH7KgrCAoufgKXLTZ5eFzWtOoKiKoi2iJy6x
gCItfnBZR/8gFHVhAcnLgW7ElIdO5vJI7tGb4VXmfmKKOlI022CnpvsndTDCub/ce+xKrM53
rYrWhyRE2rkmspwjN8k4pp5v6+7SYqVJ2qqgUiLPdhxq3mfrdQt3/R7TChukIovsv+RpLuxR
Zx0TI9gRsDv3Ohku31FUTHCmiqgXYYpdUhWMSGKwKNB097AfPKByK62k+5BkTb6swi+NjVfp
dMhZZz+q9owwjbRi99aksVYyzMuHukVLPs0ZCusoo7bptnyMuTfVBc/XI5dJ2a4JKhLjGrfi
4mFv3X5HSvoAhuUqCsxEdoW9ICkKeaS1bBUWXeaqaL6silbsCVUHN1qo7E8CLeJotLxeB7fl
7tgFm8dSJUiuU8UM5VRV+EkSVP6OFK3Ie/l9K8o7+vWAQeXgNqj8I9moFsq20Mx+xjLEc+xS
D/bEy3wAip5i+uzS/C//TuQ1c289osQ14YNXQiiKnVISBTMqH2gq45T8tnJVnZaWEq1C2TWa
tC0K99BVUGk7sbOgoZ+JjQzBX2RRVmHz/u1ZMMIWx81UOryquz/ZwZh5EvaJiHvV0hNR3lH5
ApxaeoHCttg8ZrroqGiKzU0I2Se5W4LsOronndyjyE/VCJ9YssdUFcFUHR2jPCCx/WhbVt84
I+TSR9PK/MTux1h0dA9hryq2cuNhVI10C6XWdyuZhjYfScODg0P2Zy+NjJd2dNbXWeWxgfb+
DXHS7HtjvGN6tqvg0Nyx44QLYGAkeKDVwGE/fJf7qsjfCdbHF9KnWndF7aLBwxStcio7rE2k
csFTQcUuqadoRbEqgaKoY5OrbiIntZnkWmTVU9unbDMnldbDrRIq0juUgwUUAYp29xSZ2bN8
+owWoSaDy73ingoiVNfOqCjxGrO/uuRubUdJB35buUoEx2atvOOi1HFIZXO+TepoH/4TrRf3
ZmFbLhY1Uelk0cSZqkQ6Q6Ll7tuyeW9ndoyODmY29tpV5dmxI/sX/1wvprkYto/wpHyDhUZT
O/KUfsyNcjVS/GOuaR/c9amoQr5K+2tv6tIzQBGgaJ/VZ4aLqtGxcQEWzukpJzNq70TRMtQh
Wb1GGTAQlVsRswxmSlqRzWlc7HgIld7F+lqszi9tvqeiTJXdzVAVVeRqFWBwnrNqNoadtvQp
VLR1+7HJ0Hk6qnK2AUARoOjwUGQKnxXyFGmtlyGoJmRTTOGgpDLBkHkr5i0dZ6Easp72sD5O
rCMc8VBBBdU01XwMO3Eoqnygkg2APiHV3kw0WyhCoPVcp8/M6rOLi8vSt+SjqVms22TOWnHq
C9GlVikwTNrW46v62mWHsr6SRUvMs9XkFYAKKqgmqOZl2JbqY/NWdbNPbpqVTk6VHRCgCFB0
NE9RMXmjFguDo80t1XZVV740a6WZ9tnW46sGrOe9Nu8CNvuqnl0OS18HFiqooBpSzdcwJVc/
nJrqxC+K+IAARYCiY3iKzOKzAhR1KdLUIr/29JWeoFKLvNVC7betx1cd0vo+bb22CULi2GOo
oIJqSIWhSFUaI5GqAEWAooND0aqDotVlqSBsFSUd3FF04bIlXZ2InLb1EAgEAgEUAYr29xQV
Vp/1K/AZtxQEAoFAAEWAomcBRWbqrOMi3DwQCAQCARTNxy5A0RNAUe8mWl0AiiAQCAQCKDq1
lzyg6KBQ5HI3FmOKIBAIBAIBFAGKngsU9UmKOjACFEEgEAgEUAQoes5QdGEEniIIBAKBAIoA
Rc88o7WZQCssybfdDngGDnmejm3X2Z3zfcfrkPfb45/teVxy5d09/TVXsD3Vlk19lI4H2uUJ
jc4hHwFeFkotSttIZS6Pt62Stso6ZttKN5/tMTcj/S/sdsRIAOhZSB9PVE7eaGvLAIoARYAi
QBGg6DSh6LYbyVtAEaAIMlH6gKLLi9XwknxAEaAIUAQoAhSdJBS96JNAE6BoByjKkSgFogFD
wRPnAUWuzMcloAhQBCgCFAGKzgqKPprr8SOgCFAEmQpFfT3Yi8tV+g1bARQBigBFgCJA0UlC
0V9KLZdK/QUomg5FmD573rLqnEQDMUVD5xpQBCgCFAGKAEXzh6J1rdTtrVL1GlAEKIJM8xS5
JfmXgCJAEaAIUAQoOico0kr9WVV/KqVnCEVqP5nJ9Bng4WyhaGWxCDFFgCJAEaAIUHRWUPRK
qT+q6g+lXgGKAEXPSEjv39dNnuXTZ4gpAhQBigBFgKLThaJ/3SnVdB8ape4ARYedPgN4zFmY
HgBFZu3ZxQViigBFgCJAEaDonDxF35V61/3/O6W+A4oARc9HHnJ++tVn/ap8QBGgCFAEKAIU
nQ0U/fSh1f/Wffqt/fABUITps+cilEXR7QJFFytT6eOycMnSI8AHoAhQBCgCFAGKjuAp6tbj
m0/pqvzHhyJ1MAEUQbYJFxKWTpbh2meAIkARoAhQBCg6WSha3yj1a/9p9UGpmzWgCNNn5yma
iLROzmrU4t+fUvnyZdhTZPJZw1MEKAIUAYoARbOHorVSdaqrlVoXXhVK/Ww/rn6O5xMARYCi
c3ILmRVhfslZX9tGXO+fXl+X5MsgFF2UV58BigBFgCJAEaBoXlD0n4/Z+vp+5f3H4svivfv8
3hX4BhQdc/pMxzLy1SPI+TmESsfIyq000+zmzDgu+FdGolZeD0BRv/4MniJAEaAIUAQomr+n
SPtAoSDLUlzpnVJX4a+raFU+oOgoUETDY0r5gdTHVTUlqhjli5GLzn/g/Ds+xvVypbeObu8N
Ytby3uDCQ1gy0WYju282THlGIwNEl4XVZ48EH4AiQBGgCFAEKJoqC+H/EX6gRdbwq1K/hL9+
UeoroOjI02djUJShA9UDqg5wyX8oqcy7XxsSZratxN+9s6Rkn0MIKvDFoJD3MurY4TigOoBw
nRtERSZK+rExKRzRfz8JJrrffG7l+rr77/pebe6/E6shTxEyWgOKAEWAIkDR3KHonVJXWfzQ
+somJBLi1+MbiVflHxmK1DEFUFQzJ1TUtUqY6Kaw/qqzz2CRTkd1GGw4fKvzltqTCRFPyCM9
rRV3ri+9DYpyJmoHiH1De/wOiF6+bDnos//4Wd13Hws7b2loZbBo6JEAKAIUAYr2M2Lo1TP4
Lt32gtqnFOVIwwl2BURR4xuKHxmuySH3uOMup43S1Pfwlj0+rOPku//Fi1uVJqfu5a5V38aq
N0q9GfwbUDQCRceZPjsoFFUJFbWqhImWpVNq7OuxiCY6ilggk875yey13almE+0st6O5C/iJ
NV1Q9NYkQmzmA/X46OpWE225KJ8lFF3fbzab+/v79r9Ny0Wt4nsJisz0WTGj9a5vgoFLckxV
xR+np4vcYlfh0pymGr/Dd7v5tz0tdnmO7DRe0+yaNhJPa9feZ3sninjwU3rH8QIUAYr2gqLO
TxSjjkCe2Fe0TvM1dp6jNaBoTlCkOJXyXBnb9VXuQ9cqpiLvWHFM1DMCDdnXYpGe5Chi+bXO
G9v9V9xYJYkvOeMtbR04ND7jxi5ISo+Nrk6KedBWKPr0xcp1S0Tquvv3umBIP3u2KkGRBhQB
igBFgCJA0Tyg6MX6o160jd+uS9+u37ZfLfRH/+XvUQxRK6uvSv0OKHrS6bMIK6hmSqQIRV0r
1f7D/kPfKqaiOmEiXbQx2MeatjuKOGImnSOUY6L2w03nF+phS2e9STJR/5ce8xVxiBzXw6Pb
jY1KkaUg//vWSQ9Fr51cb5TafPumfvzY/FPwFNkiH/n0mYWivXFni6r8Xh1RPRh39lBBIAej
pa0xReN4NTTzNwikE2YJZ7HHFA4Gxq2wy2qnOmAPQYGdMfQhe1y/X76q61fL9+uSEW/WA73e
xJt/m8Vjv2+BClA0Kyjad/pMVQkV2W15JrJEQiP2NdscRRx/r/P2AoC48xV1zOZJhXPkEkaR
Gmcit5xOD42uLnnfSlNoBoNexvL35vPfm82PTfttEYouyjFFgCIIBFAEKHpkKLq7ci2v8sr2
V3cDvX5yHQsENMxJ8yeg85o+OxgUcUJFJJxHHRPp8sVGQ2OqR5Gos7cw3SbcPZ1rqrEqqy0w
l/QbbQli8jkGdNl64xejavsB/lNgov+zdzahcSRnGB6CWCi+cmnJQToI9phDTjl5T8scAj4N
gYDQzkGB7IYx0UE5CSEQBLwnmRwCIcYmLFlsiHzwISYiwgpZNCDLLNgmB2EEAWsPwbCGxUvY
i8kp3VXV3fXzVffMSCPPSO9r2dbU9E/1z3Q989ZXX2kq6n2zcSAYo6hlkhRxc59Jc4YBRRAE
KAIUnQ8UFYYPYwsx5hFjMdnf3b6yZI8aoOjdQpEIUwXxMUXZG/lfVf7SViEVURVmpHSwTdBx
1QBFqtVguShmtJrDRCSyCuvdZ/VWFO/K3bupk6L6KKZ2zGsUQpyKwUrGuDc/M7NmUej4OP/p
ZT/9g/39A0WKYzOb0ZpL3miixpORCOcZU3TKcT+jxBSJCY3duQSxTmdytS9ATJE49wifyY5i
OqOYIjFqaND4gpGcuKEiNKg2gKhRq15UdfGsj2KvAUXvtvssPjYWipilZEBF1YA03czLxJ1L
gxlFcS/UYrxOxyGuDIqyvesQ6qIeTMiSD0WqlomcbJQyrr1spd0mFdPetmWi/q3D41u3eoe3
+jkV9XtrWXUpvpLWKeLyFJGu/WBQdJYD5M9yPPn512vcQ98nVWd4vsZ80cZ85zTYjoAiQFEa
ispBZPOz8zVDzZr1GbvmZyNvD1A0UTFFqhVQkcrHqJVM1KoYhgaBoigfY0RFDU6RFPmAMtuD
xzlFbm6kOqeo2nE7RjYKC5Rsuh/NAj0Ginqi39//ng1tsums+SH5+ckCFAGKAEWAIkDROUDR
jJ9uKJWUqFHzH/GeUJDPEVA0rTFFqhVSURFmpDFgJXXrBvVrJyOKQixqiCnKe/XEehFTRHE/
ViuCIkH1Lk87NrIorC4LVt4x5gusrvU49Q/2e71txcYU2flgeSiSgCJAEaDorC+aeHdpoifs
NhHjz2gtpicVtklMPVtC0SybvnoAXU1ED/kzfwCKphWKRCugomL0mQYGGWIBXz/FJWNMYNFA
o8/ytIxF7xm3uDv6TDWNd2vHhg9FQUbU1H2Wn6gqyrp/eNw7PMx+jvNXB/3+/oFkochGWs8x
F1ih+wxQBCgCFAGKzgeK4inMOqMNGFvmHaYZf47YaSCgix1TNGryRmvUVFRkR5/FTOTXkwJO
oYRRFGHRQHmK9AQeUjCzq5VLFVDE5ilSIgVFbkySN/9r4x0qq86zoPus18/e7m9w3WfaJ2In
hB0m0BpQBCgCFAGKAEWn2uNK1EBlzcjK8BW4V5eh+N5pjw1QNDIUhbbQyMkbLVmUVGRGn1km
8qOi2aTP5FBKOrl0hUWDZLSWlVcVMI5ybme9b9XIRAEUiXJmEm9FRalLoFRxoM5w/ON+v5f9
HPePLSTt73NXcq60imo/BIAiQBGgCFAEKBorFF0XYtcrmN8V4vrwFXgv9e1/NWuV3gMUja37
LBxi3wRFo3af2YnOKirSo89s2UoNmYWcRKJ+HrICiwaa+8xG3ESUQ9H2VCMThVBkEliHlWUM
p8Vil/ZYZ9dcKDr2oCjXNtN9ZrMUxaPPFKAIUAQoAhQBis4NitrROPoHWesw9P4/FGI9lfd6
XYgPAUXjgqIanfGEsAEVZUUFE0VDxyiAIvKdSFVfb7M5lXSWZDlXvZRhjI/MkxeFZZIaxp3x
UKSnf40YKApNkhVzGYSTvVT3WRqK9MRnXJ4ie+yAIkARoAhQBCg6BygSQ6WiTGpFiM3EW6ub
I/XHXS4oGr37rA6KmEyNiaIgUyNfZLZHGQDkpTlDkH5NKzVjJ4lJ5yibaq5ntk9DlBRKnf4z
EyUBiNMzSa6uyjedfGrTk+I6UHR8eJj9ZP85UMRO87FgZvqIR58ZxAMUAYoARYAiQNHUQNFH
dTkahxqVLyZS0wpForndP9MixiqKTRo5CNDICnuY5eU4mIg7oA6fq9GbCGQ9iMT2oIgTA0Vz
c6smrCiGosmGD0ARoAhQBCgCFEW6LcR36Xe/M9khAUVpKBpL99l0S05w1XKPzCCRKjJ9uy7X
8FBUDMhnus8ARYAiQBGgCFA0ZVC0WJvx8b7QM3cCigBFF0WFCaeIscJoo0GrP4ihaAFQBCgC
FAGKAEUXAormP6kdsDYzf12ITwBFdVA0lu4zaKx2kUx5WTNNUBSvYtIU5f+G72D0GaAIUAQo
AhRNmVP0af0g67y74VNAEaDosqiBidjRZ8WUsLWfC0ARoAhQBCgCFE04FM3m86W1a2cGedB2
51cDFKH77GJrdVgmatnpYJG8EVAEKAIUAYqm3SmarRmPb5UYlS+mRYAiaLjPRFqrnBlkElpz
MUWAIkARoAhQBCiaKijKV9itX2KX3yagqA6L0H12ebSQJ2+EUwQoAhQBigBFFwKKqGkRAhQB
iqAaKLJj8gFFgCJAEaAIUDT1UNQQMKTDjgBFNVCE7rPLrTk789kCoAhQBCgCFAGKph2KOq3Z
JirqAIoARVASiuZ0lqJ0TBEEQRAEQdClcYry3jNAEQRBEARBl1l2OtgFOEUQBEEQBF1uKJqz
aYoARRAEQRAEXW4oslFFqzgXEARBEARdaihaqM9TBEEQBEEQdHmgaCE9JB+CIAiCIOgyyIQU
LQznFH3z80i/uZbSVzeCtZUSQoXzOMuwQOXpIIid7nlve6BaSlLnnUvi5OnTbqaTO2Pbw/0b
N+/jrq0XKTWlNf/gybVrvxjvmck/Vsr5XE1qEQRB0LuQyd04VPfZwnBMJIRHRdLmz/LbraxU
+q9JY41gnpJ7S8Gq3NOf1ICJD2VaHGfJYvvxmz+88/RxoVuq0HqmRRVJ1iNhovzGzUzFzEZM
C7K9t5RrZ7tqaahaTFZYqoZofSSTP21Zb9VuOj9XnY50zz5RR4tidcpzaN7tLC+77xqt1F8O
4rW83NHv2uu+zJz3TO311LUgis8pc5YHKxpes0/0J2Yw4M+qOuQ+pXKvIE1y0Si8V21C5eeG
yN0qX5RrTEVoWSBomp0iHWo9Jp8of0JIroVVXrsrpb+UDH6xjX72d2dpr3rBQZH92jnYs4nS
iVPJX47Kf1tFPlN/+3e63cGzslIdEibKNRKVTCSVDNvw7aVC225LY1t9WZ5ykdjf4FBkNmCO
gqIjajh2OcBSiorWnztjqnbbVFyd4a6FZGDdOWlDFlk93Ny89zAuY+cxN0x07XfNfk9Z807j
WU6fMzmxRaeBIlXdJ534MTDmoupuRcsCQVMLRdooGiKmaMHDoaOj/aOjV/VM5D7nFPfw0+jj
8k/1q4c8ezu64d8pX4RLSFJMBviW+5gNPJJmKJJknoDZf2qFWm5h1RSePD056Xa7j8XjvxX6
wvgbi8Okr49pRAVI5DCR+bfioj9vlEy0dFB9fy1belVuLWh5OEvsVFAkaw5y0Yci5c9OSQwB
xduv7EZrEVVHSiUU6WU4A7Baza5FHqTRGULRzMOtLbWs7vlMtLW1tZkyiv5w7dpfnbL526V2
WcNnUCji1mpPaNFIZhElbxz3kzXmouo8o2WBoCmV7T6bGyLQ2kGifftU4HjoX19l+mnoCnHP
PotDFRWR08Q4j7mdvN9sb8n0npWdaC4UqcAxN2+5ISYqaC74CaOzRq4IaDLtnY5OWs/XVEWD
43wlbelIIg1FX3cLPa01NWwdbNV0rUQdE+3e9JmoPEXZl1P9/4uNtbUCif6drXnw/QuXIGRV
8RCKmhr5NBSpBBSVB932uql00Up17PYyNUGRbWiIca+UdwMxUMQbX8p3UMhv42TiTMi4aCUq
kgH/dJbbmR6GTCRl5+Y9q/8UXYMfPPr4483P3779b7Xw7q9K3a7OmiFhKakeilR10qSYJiVD
wjL8zUSSKaJ4xXcBRUUxWhYIml6nyFLR8FD0Kmei/aMjHoqecY854pyRAlrKht7lDSd6R+PQ
koGi7aITjYMiZTfAQJGpgeSgiJznLWUtbMf4V4aJZL7oYsuBonLFk5OCibpfO1DUvVNnRUlr
W8mKikQNE90ImMhlO+19vVhbs1B0rJnoMHv5wt3UorPfwKZj+ozcItlgRNQ4Of53ft2eO12C
QlmrIGxR1kOzQLHbCqFI2nOoyl60xbJCVUxSCoqUd2TmnqEq3L+sd45odmOLdgcUIHTlE3Xa
7SvZH01Ff/qJ/vP8+fPX+VavbFmVPZwzn3/77Y/fvHnb2tnZ9qHoxtWrV18WtXS8TtmugSJi
uyopvKD6syK9MnPAxBiZirNzKNwYieauUUk1RbxX5NjAMi6Kb2Oy91sAMmMsqm5+tCwQNK1O
kU1pPYpTlDHRkaEj1il69ix+XnFQVDFL8ZsHRaoyivZM2My2NooSUKRKispji2Iosg8tCqGo
8L39uJuCiXTvWd6eyBKK8oZRiAqIIijqvl8DRSXOOFQkE2By927IRC2n8TJQtFFA0b7QPlH+
cs33x5TbUSR9flHBrqXrkKSdIpmAIrbMNBbScYpIht+0O4lWUUVFDBRpUC2ayaxuVB6Dy5wD
QZFeyO3qtXabt5SGPKdjioJt50x0pW30+wyK/vck16NHGRM9fn3l9T+s/qg7/vIVfvmXj3/2
5o2Jlfeg6OrLX7/8+4OW2wXqnOfFIN5cOVAUHBtFF1RGLqtijVezagMUyeCWWXHrup7cY2xo
ydwHMx5Q6QvpD3dOt1RW0ivyScRcFlV83GVVxhZRtTrFRe5SNStWMW2AIgiaYqfIWEXDO0UZ
E72yv9YGFLmPQgaKvM4tFbpDzu+646yCIrb7rGglye3az0qljLFIelBkGjXSX/5Iv+60LLKo
vE1sK685MbUSv+1201B0pwGKlH26clRUMdGP7v7zdshE5H6pz37e/3KtgKLcZymo6Eu39VEs
FDGDAaWDg1HTyMQUyazp6nAAtKgoMooKG0fXguzu/dXy+rdb0bdvYr6Px1DkqjMUFP2fvbMH
kSO54nghKynq3WPBIAWXOLrMmRQ5GEd7SRtO9jAIMwZhRRsIm0EsXhTYd9EsGMmXWAIHt7pA
glNibmHRLgc6OEksSJaCQxgJc949fMkGAivwGUfuqlcf71VV984KJSu6uNPM1M709Nd0/fr/
/u+V9Mh6VjQQo1RWFDAkQ7qzq92ftguDtUm752nRpy980IysUDR69Ze1tbVZC0mOgaw0hOt/
3os/kx/7lTh56d9nv335cmMy2Wj/p7oTWfjMVCNE43xnmQyKjM6ijVI48ifGKG0/YFBDs7sa
rFmWpqwP0ClZTRlYMuJN4hsPUyUN0GEDTjwgu5r0/WxBK/FZ2py4FemMAXaK0Ho2cePjwsZs
CfEZpLMG083CAEVDG9rxhaJTNCFsb/YZ3bOFn3+AoqATdUHRbiXeAsVlVlppwrvYmGWSUmRx
aELxM3pRvBlSNj6DIo1FgAj9tTZAkfErGO5C+SgM4ANokGyh9JdH53Moup9DEXRCUbig16iI
60RfrOdMJDnFLud3HoruOZfXgxeeipbCu63SMea6Qa8+ICJB3RuguC0sgxZTxBBIKEKuxRnJ
NuEFVmwlphCPTPkm8LHTqJYcBYpUqWkKTcMfFGCxExloFEHHOxdms9na8/dfvXp/jVpLRe5n
sYd6NOdQ9C/6rFInTy59f/Z71TLRxsSzfwZFheXJdORrQRC3BCsayhDIoCg4toTgRUuVP1/D
T7ymTO8bxSNoKi4h9o26+MbISfyTyYhG+Ok3LRwRJQ6ksTAdf772b9DEL4GwoVP3banLhK4U
9Go/2bin7JdKXeC9f3xZDIrsV2KAqGFkGdrQjm/47FRHnSI/frXjix1n/P0aRKXoa33vXAlF
uy5m9vjp8vLTesSooKRMw4HERowYbLs1CVIRhdG2a0pRJfvMVL2bJMIDg6LwOPYDnKGV8WED
ALJfM6XoB59kTHT+cwFF33QzBfI0OL+NbHhj4+t7NwudqBBvlLpMUPTCW3ImnooiE8VimFih
BZ11xZXAfqGIVeeBangLcqHIcC2FOAc4H/unnIpizliT1yxCU2EiNPz4ruZQ1H50pYQiWiLk
ewbEyoPEKQhQlHfZE+PmzLY12WbqVw6K3tHvzHOlKDjUlpbUic1ARdsRij627Y7fRMihKGei
qT93w9ZEkresiNkp6TGEg4wPCBphFiLNVtxvVEAZOxMrmS0ZxDezD3JgS9puUOpizMqQGrOq
pVew7RqHN5qw+naBU03ajd0BVuxzkp/yX4uuy5+w/kJgfMC00XSquQ8STbXLMkqlZbVnVGNF
OZ9FCSGANowsQxvacYUimuajFj5r73ssNMSKMeCDUzF69nUBRQyEdus5JXmdojIqQqEJPraG
y/6mGye2J+Fhu4QifptpVBMuxtVahcHXKQY0TK9NyjtrQcHmsrla3MYlTLlV+k8JRXpRKOKr
RFSkketphcd6/UO+nSgHLA9Ff6eOe5PJl46KnqXRHaItlCe/6UqAhJEOdoX/FgxvZcM3SkuM
NiHuoWNschSPOqpDoo984VD5RrYXUQY9MIe1gEwpVmtKpFOY1dZy3IGVvXCzgkSOimzm2Zyg
aB7bFQZFBP8eiiZ/Un+oZZ+xFRtVoIhClxqUrzaA+a9QnJIrATmwzIyXdzDaZPc0FVLurm4x
zvxZpBrmXYm0IGe/oMsFYs7ChsaJUWMfPnOEYkZ2MWjzOk2AIkp2bL8vcRJ5/01ShbxxPiaE
2mfug6bsogsQqUgY5M96QdmhDW1oxzx81l4UjRa347ZeIEAZPTvHmGj3adt2q5fGxlk02K0n
mjEW8tTIfRGGEI5hkZztjIo2O6AomK0bbQ5J8WWJYOGCC6TQx6Qjp7KM0TTBEIMQRqbzrw9F
EtMcFekQQasz0fo6l2GMzNW5HDxFLRat2vH0sqOiZ2wQ1S7gwKs5slEJk0gDKWhosbCvhlNP
+CwlyLNDM5JMxA0vyJlIuTAlLgxFEJwc8g9NUj16Ur7rhWUqJdenZe61GxUxy2U8faHORJaK
Pp3P1z/69UdXP7ma2l8pQh0XcpKoaP/5Lw6W7xZQJPY01KJnJnqV/SjfC0WLIc7IC3vIjT4V
7093in3xLiy77JYEO/Z06kVN9zMcB1NX2PGuS4b4KWyFQWu0JdNDtqV77UDGeC2H3si6EBkU
GfKLqaQiU0Eru9KsKyzLUHjQpJN6gKKhDe34hs9IKCqhCIylljhA2tctFLVcE6HouwyKWiZ6
HFPPOjOFQd6Zyis6orAVxes/PnEOInJabE+Cu+iW2sygSFQxGfsb3p6psJosJwdDGUk29qC7
37RO60wpKqDovICiJaZ15UpLfneP7kKKOg/TbCUmunaHHxumdSkGRROtf+igyFHRMyYsGO8T
NobjQHDwRDsPeMRwIIp69bWhCMTRNSWOSBcw8nLE2mCKgywIRcYto6ADrJx/pWiY95lqOLDg
pLHbcyYm9rlR8s6sC4rWHv7vrm0P7z4MrX1emeyshaIrZw6WzzxnnqKLW0oEehPQ1ZQip6PQ
IVwEirDsFF1h0B9zKxttMu8y0XOeny1NsWBeBQCBgZycPIN+EnS/wqLLkFcgNXQnAwGK7E3X
SjjFVKgSaiAEuILPH1xXyzcWoQIUOSN3FDbpg8Ydbm/ulsvy3iUTvtjH3Ic2tKEdS6XIVyoq
wmc20TUly1vh2TsaOsNnjyMTLS/f7y4UTb6AeuVd3SE9w2TfB9CoqLV9sF7rW5NbdVc2L/nX
B0VGpirHIdbbKUmBgDBEj9IG2DfmSHRVQNEj1Q1FTbGBdA/qqaioY922L2azO+X6++s2h6IH
BEUtFX35DEWemYxeMe4IA+CqH5Zi9tlIvzYUyeJCtWMdoSiphxADa37tOqDIJWtLKCIPrDy2
q2XF5IWhqHKimJoWBv5cDlYTYqI6FH3885/+rWg/K1bn0rcbG3cPzly/LqDo4sVPt5Sc+6U+
L8bKNNiETBkUq0JRvqOJnKecQulMGpVgyj9oTC3mmZ9ILjsUOCdplduxGfjaGxKCd25HM22n
gCLqhxDFspsUpSX0ATJl/JkKU/QbDdSFWjU+fIfK7Tbgu4Y+OOYOKeoC2k9qgKKhDe3tgSIf
QCtwgUORS2t3N4HMaK0lFO3yIo5HqF/Lv9Nd0KqTwLrLjJ/jg+JnLgFtMsmzzwTuhHXvgyKe
xsuYyA3MoRoPgBuox9GH6m5HMya6vd9C0ecyetYBReVFEzBWx2MbcZszkaMiV4kG8jAPh6IX
HorahjKhTVT7QWZwxiQvQLybR9U9f5hXqlQfFEFhXspmnohQlDzOCYr8+pnuoscgnOqGAjLy
2I7rSuUhUOSSnjDrGLsaA9x7jauuC/VUFDec9UDR2pmd+Xy+M9/Zs//6h2LKjxaJNjZ+a6f2
+ImEIsKiftSMGmlj0camSDSHQlEhyUGBNh6VBduQQGb6OalSL9KoIq4cQsb1OVXBqzoN72h3
uymhyNSgaCrZhlLS/EYDiTztyyayTYAiJJpCBkVoQAAWOODDAYqGNrS3CoqqxRs9FMVRzcVU
MGWffcfiZ4VQ9PgIUASZ0lObgX6yjx6KCJG8UmT/ed4FRdYGtBAUhY0Eyh+BMM0H89c4Shgj
E7msC+EbCUUb++fvJyjyQpFaPRIUZVTk88621q/RUJvHHMMkH3Uo+iqrXI0iJshiGcitXuBt
z9gzM1wlVmaqKhyy0TsfvPuhyE9o0TMThCkCXjkUObEqxHPoyQJQVAn0VbY7dU41m1/ug1kP
Fd1dXt6bLy/vtP/t0bP2QULRyw3Xfnn9+pXPREp+5CI8DIrCCWrKLPcqFLnPj/qLimEFiliN
SJ5FZvLTRmVBvAo6pbNyWrtZamzBIb737a9wpYQiqEIRsChYgqKkFLmkMlNAEaJfAociH3cT
UMTdRAMUDW1ox7y96xPyT3VBEfoEWCdZOyXnXJKKRPFGrXcXiJ71DrDezVKs5eZkX9PjNoci
l5r/ogOK3LV0QShiQyP60JEmeR6jv6a9+5bJWqhuCCbal1B0ow+KVjrCZyCp6MOYi3/aZTS9
8k4LWvWoGG2nmWADFPlZYZ8Airtr7fLP2SiVQ1HUiBaBov7wGUvLxxpI9YfPVPRmd0KRSFBC
8plkUIRaerAXgiKqkMzXFG3idXvUoIgPrtAUswmKZrxlTPSbg4ODnfnewXyn/W95xz8IKDr7
X4tEZ69fuX5NqUs1KLqoF4OicfApH6YUgSq6SI00JTzVpm/NgmwFyRaKo70BMDUoIt9OTUF2
DinWZb+2WVQpSqU5IhT5v0GAopFWORTRQqMZKVjIDLmOGBSZAYqGNrS3Sil6t18povt9J0j4
ibq6pvnQ+unrRM8WgaJtD0V+FljKxqcXR4KifrUqDo3e3JBqNrpgWbjWx2rZJ5e4VHR7w0HR
PzMmqn/nuG60hmCNBSYUOYPtifcsFfEZz5KcsTkRUPQgMdGLiZh2LsIHoO6CIuslfVNQZHiy
fQ8UVYzWXM2qr4FF9DhVHbxJKFLSuJMMy1VPkeLpglpCkcSiz+bVJqDo9y83Nv7xIxs5cy+3
/mibYKKp1he3pNxXYVHam4j6UE9RhYlknnyoMm7fWYtHCqN13qUDNxSuajHdmiHDMvPt5BMW
ynSzSvgMOBRR9tlKqLMYwoEQzdEYFErqsquz6uoAaG+0JsZlDm0yWitMUAQRilQORTiMLEMb
2vENn1mpqG3FQAEmeYqMnYMIaMw6x6lI32ubflNQhB1QNJk8catCVaypmvUmvVgIigziUaAo
TvPBmEiByrJy7GcYFdk7/DjPx6MbaqkPilQ1JR9SiWH359u8ZuOJmxaKpt5tTRUEKlD0QH/F
mGjyf/bOJjSu64rjF1ebxzm+Kl3YYIHpKl4FumqWA1kYCrNokkFoodIOggEtZiNTIygY6mwU
L5pWtGhI6/pjMS0YUaiKkQzGlMpCWEqNsBNIkdPYjhdNDcVJTPCi0He/z7n3vtHYlT8G3knQ
SNfzZt578+bd3z0f//MJ1eoBrCg7YpVGzX2DIsEahg2EIleSj+yF5XDXDhbPAYqAQ1HUuVaE
knzh469qaK6Sin64MAQUiW++GT8gSigy/V+FLto/R6GoUTR8JRpyiQV+0lBIyOYPYaw4VSEb
gamIAQ6GItdcI46ecSiSuWclr8UFoBoun9keolTq8gyKDJJAUpKPRIqMluQDrdIn+mGuJF9/
8AGKQkl+qOUHFxoUJIhmN6ytttpGOXw2kfEU6bxqug5zedcBilQETdt+QZF+Q/s2qqNngCKd
aG2bh5tmsGsWkCqgyMReAkAMGz4TpDMXYSIkrd9l2O8jvU998Eypy1zXULT1qTgiBnqKRE68
EUMQxty5f051rA8cu6A8RbYGjR5Rn0LRP2z8zDDRZKjvN8th2BOKnsJTNDjRWpAesIXM5SFl
xBtbnLbkC4EipXIdjTRZoq/zs0XVczI+7HJoLktF7/+12j5OTlv388XVxY0ARb84TZmoaM7M
XCQXl5KbBxdKRHARx1mjCIl7QBFUNnKRuVwqQlOyUm5IxNEzmYu3ZS4ukRSy+belfV3Q6mmz
D9tEzUQk3mia/AQosuKNItJzDDsLtqkwmGcVjoCseCOFIgm+Xs37iGqdotpqG3HraiRS7qIs
FIXZSTmKMIait956cK24dstVnw2XaK1mXUx7o4JwUom+sYaf+Nd8pzONSGvhVnj9+t9yUIRR
jucg+UY6hasqI7BuIZtoLaX9ATkJwDEhesp+ohxFkyUUvdkr+eVAxAWDWp+xNh9EgRl19Iz0
9hAHLqisXlODxmbj/srKyt27K8aK4qvyZ8lEPy4fhE8zDWk9TM/w/8opQtwDisyBhI5RGSjK
tfkgLqhGUeTzrU00M0AR5KCosCEX1bPWtsTCpFunTEJQqeQn2vmSd/4QmaG5lIpe3/h8Y+N1
pU5U/re6cbu4bQSK9J+rqz036wf74vHjhw8tFD3RviJn5QG11KP3hVqpHAg67lTzB5MLMGnz
kV6hQhbZFmbI23xg0gzEf9kgulSKTGORItchDfJKVNJ1LLMaGWpXprmsOhRGbFQ6wEbbrV4n
B+pEOt2ao6UvJkk7f7T8F8Shk+tIU3gJIrAiRa1CsKEARUCuB1lDUW21jaynqGurzyaysQ8V
pfeKz3aWYFBkWqA57cabaTPY4/r/aBqWUb95T0CofjEhL6WYaH3o43cnCQitrPHJKwdFkmd+
Vh+/vZUF+caTtrdHQXVQkEit+H1XY4emlqfEse8cOzLW14XUfy/Hd0I+UZWrwywtHQEFJJAM
Jv7AmUgcGLvvpicwopTazAf0szvhiLTfZHaJTuiowz+h9elssQ/VZ3uGz8jLkkpsIOGzXENY
+sKmDTzAbELWAOjqsGyX07j6DNPP3pRVZ5goYptM83YhRNQjFpx0g7tI1CYpFM0tciuhiP39
QQJFYx8oKHpbrVmMp+iJ/aEYaFqPuNPTcgk5/JpWXx+7i4J7B2XcEBYzny3k8qM5FEHwwFLx
LUg2xNQ1BRZv4mQksjNN/hHNqqhuCLhhrgscoJPqlMaNN80wS79t0/uzwJWfNQm42W9L0yOb
dOuqpu8kK11AsOn9bE7QQ7pcpLohbG21jXD4zHiKDmWhyDaE5ULIhIh0QlFx7Zp3D92MXUWb
CoreiW/K5M7cUu+gVJDKH+Vyblb7/VUOkDRa/KoRK1ybJK6ifjx5+dgbSkzdMz6hqAqKJO3L
Zj3hTjAXZYo3VJ15a3l52dTej+0qKBL4m6K4vSXIPAm5rlKEhnJMZN7tNGciZW8SKEKWEeWS
UPR8oNbSd5aYB4xGsEiaq0ZUUE1DIISxlCaV1LnMQ0GR6bKa6hSp5bkMLSNyUIScah3GRFBE
Ct9Z9glEJfJJZOxkrB2e5jZB4prAKP/XfQNEaDthI6juJIIWOjXnc+7EjdL+dKIaij6LoOh7
6TTaWyyh6LENnz0JHUEWDBOVI13vHymyM7C9hAt2jOT6auZKvJKhRjUU6ew/4NX82Q1FxNYi
uxMWwwh0+SR6p7xoOgMVrvOPuiBiWTKQEfgh/XzR3XBIfjp3KIfT0KSlfX7DUGfoh1T+Ny0L
QBEaKNZWW22jZ1a5MecpqjISOytoTpFufXaTeYrWN3Wl/lF01dUSfMhKL2BbTTNY6Dxjqb0C
bhlp6rHMn5OTLIAWZrig0FhEXeYdEom923xIJFvZ9Gp9X7R1Z+hWqzEY9JY9FB1WUPSoHLld
HnbIu5VpcU/wrasdyzORPp7pHyS7O/bbL6dLm/uP6XgvpY/9BCiyookBiuwIhyKi0kjK5r2P
SCYaNJVQBFnpIkmX/lLkoQjjedImGOWgqJkm6zIoStt8pK3BZFr3JxO5rKiBqnQpxCdZeEci
xs0w9O9nnN04UQlFReIpAvbhf/u11YcPHx4vf9s1MPSuEF3tNCpB4D3mKcqLN2qQiBr78QsM
M9IQCTrJQeGzzPmSuQ1jKJIpfUrr7QtPpFeegyB6nFi4ToT0QpGpj1LYIJr1KIYhF7KF5Fmu
d04zvTMACR3L3IbStv2ooai22kbbUzSRySkaAoreenDrlsopukUawhabNzc3lZ+ofLAuo82j
giblRo2+zVBSOYZsSBdYrfWza3yZBkGQTd7VUAQsB1vhgXZueEU2dPlEwoYjoiWvYqKpko2m
lnuihKJ7QkwtL++o/ZgqWUnSzFCavxoOWxImyqS6pNOd0StSgkVA7v7l8wgDmZtzoCQb6/EN
uvQWSCd1O91JDOEz/SE1hxFvzEIR0lBJ6ILAAm0m2MGKumw2D4eiRgpF1nnjSvglitjp5Bgo
js5hBVlnJnnvKLMvL8Ml41i35SdWaSOwZ4hZLoqgaHG9WP+MQ1Hcam2j/OIsLr5x7/x5A0Vf
q8GPy1/eK99pQUPRZV2CZiASqGITODcWVKhHD1H6QBxklVDknpVuCXKQWnb25aPtjONWiy7Q
xiFAouP2GvVDjTRMDr4g7kUNVX2Xa6uttpGCIpNU9CxQxHKKWB/YbSLjuH00me7j5TokQtbA
h4w+4QrBopXrZDaDaGYz0y0MFm8EmVN50UwkJQ9yqTROMRtxQXdKQVFPiFPqoYQicfiUHik3
XjdslHVI0CQo4idKdyRHRd/SVDTNG2CBGH9/6bvsdn1fqf+FP0F4KJKs+aZZ8dqfJnRmdgpw
wFxKE62zUAQ0yRayUIQ+nSQFXWAxOB+j8uZ6irpXwtxkJAsm+5TtnkqioolzSrd38fXus4Gt
/G+NdOgMtxs3Tpx4422dUO3tin71f7k/k6zu1350fPH48Tu/LCl799K5c+fe1Uw0cenr0pbU
kxeWLomlmZmLkHNqcZmhTDx5BCxaIJmusGjlqaTksOeGku0yWdvPeYg6mmqrrbbRDJ8ZnaJn
9BTFUFRi0eZ2sb29yZugHU0W57EMnkjkiaIhX3a+stLv91dW1nTxOZdMZokhqFKTBkGRSU8A
01yUWKOlulrp5lFIsEXtUitaAdvgmWYjsXv+kfl1Soh/JxMdSUcQQzSBy1GRLgcs7f6XOr3m
EnMDiXHqGUJLEULYXBcUAYqErNDsQza9D5xJ9wyfBShi2nY8fOZroKuhyAcq4kuGOlcwXATA
994dJdg06BSKsDKqI0V0PhICyg2dydrvmDLRrw+WL3/Q/UVEK62VTHTnvHY8CjHjRInGJ8bL
H+OXbT3ewUZjr+45wL2gI2MnbU6REQ+DUCsBNKAWuYunU3XvlwJFeT3N2mqrbZSgSEfPnhWK
HnAoik27jt5J1+Z8SedcEwOGmBiPl+Rxa8M0k9TctioPwkU8YNB61fuJ7MTC8kd06ZkOnhk2
2i3nsENby8unRLe3vLOezOIoKyq0hJAVBXJ8nO+qU3H0sPOr+fmP3FO7+FWaxiHp+joTVsHY
6RGFrJ4RioTvH5+DokI2KJa6iT6kR3tvyIDOCUibdREWdBkhQVgq43tLZzFkgp7PAYoGiTcq
/PmjdhKZPzwUWbs40wwp53J6qJaCmctHn5xXdQgrPUdKUTYWgzdDkB73S4AiWbXAqa222kYm
fNY1xWfPGj4Lvc+ytp7eItIpTqZ3kszQWopFfX6DkmJIKJIhCQQqrKnzRcAW6LtQkWxIslI9
tLXV7brEInFY0UhPpV0rf9E/M+mvWHVKqwJ8ca8DykRzjzgUifn5eXc+rs7Pf5IsqyUJXGUU
ijGa4HHYRGvUZyvOKQJwvdkctuahKG/TYKNl4QPBAVDk3ptDXIeduk5bv2c72brdKVr8Em1D
0em4f+wkzy/SofCsDBGdXT1zZmFhZ+fsjmKg8uFK+XDFP/45vM4jRUK79xwSXb548fu6Bywx
reB4utNoNKYHM31yoG365A68ykNsrDNUIzG2AbQBOh32sspe4FA9s9RW28hC0cRThs8mfp9C
0X8rHUXr69vb6yzUr5R1SAN64St7kaSLZoZSZ9EavydKEENBEco0ayEhEaSRh9D/LFp/q8Jo
7SjqkpFuz6Ya7bMRQLiv8oou8X8+UpJQiUX9j/r6l6vJ6SOLbBRJWAUjtwfmEppefWuHiaqd
AZl2u2Kz9n7tQA6Kzp794sOz2j78S/pIoGj3/KNdFzczXiJjP+X/G7v89CfHpo53QrLeqzpk
PhRl9T26ttpqe4FmgmdPlVPUfRoqKm1j//a2H9p8ra0MgRGZaR3kYDVH2tsDIlCQOU7opQTk
6/Sfm11ImMhRkbWrvvfaXucoDbYgKdQfQSxqK2x8aXPp/9g7f982zjOOU5FkCPQgy5ZOFA+t
BBhw9wZocD5x8hJ015YWsGAEXghNXMSJWoiAySBAptqlLRwgGQh4CZJF6BygXby4U7IVWpP+
B72f5P3gHe/Il3f3vvf5WD9pkZKoI++D7/O8zztfitL4NHDtf8zqZp4UBTUoxA88eQEAiE+K
/C1hs1+nq//tnzH+86PNb+Ps7gr9ge0u6++++2bZqz9M705pND536g4P7WDBqYk4gYMbNLyc
U3tpdLW//DviRN3YJaLZak9iTtRo//7DVIk+5MxWXkYu+nxenQkW8+xfcf4b4MdPY/xpeuXd
7v9++ilwYz+8TYa7GgBgLVLk9lnrOa+laRN99qr5jdpbv2k0Ai9bW1sVyxEWdSjM8vqXn08d
Kd5F0gicybrdqCjFLhGvRfMu3Dz88I3N4ePHj3JZ0cvFF0EmdjefRdk8DPzZ0v8uu85LgMO2
+y/GIXc1AMAapMjb50PX817PfuO/BgZid8MvsuM6kiyGsLu5zLXm1Joe4kTL/glCNOwX7hQA
AFmkyGm01vL0FAEAAACoh1s8y58UAQAAACiF7m0HixQBAABArfEWn5EUAQAAQN2lyC2faUgR
AAAA1FuKLLpIEQAAACBFdkMRUgQAAAA1lyJ3eiM9RQAAAFBvvClFusacIgAAAKi1FDmrz7ok
RQAAAFBzKXL3+NC7JEUAAABQZ7xx1hrlMwAAAKi5FOmaq0XcF5CTXQBQGp7loG44PuTsf8Z9
gSEAAAB6WPOkyF2AhqYAAACga7WWIk3vOvUzLAUAAABqbFve4jMRSRHHEAhiCwBWh6cSQJCW
6CnSdCcrwoiwCQAALA5qrEXO3MaVV59xwOAuAAAoGF4kf/nMK6DVW4h4ggAAABys5l6k+Z3W
WsWMiIcQAABAxXytHnOKlpIiNAYAAKBm2qT4nCJnpHXu1WcYEQAAQC3FSOGkyJndmDcpQogA
AABq60VKL8nPK0UoEQAAQJ29SN2kKOecIowIAACg7l6kphR1tXxL8lEiWDMfAcDq8FQC69Yi
Zbf5yFE+w4nwEQAA3A4tUlCL3LVn2aUII8IxAABwMLRISSvyGq21jFIklRLx6AYAABQMLVrP
8Mb1xEQ8LAAAACSzLSWtSJta0eoxEYchAABAXQxLQS3Sta7dVaQvnmi9QIk4bACK4VEd4c8O
UEUxUs6K/EZrXV/FiThegDM5ANYJtdMi1azIn2e9SIrSnIhjBfMAAMDX6qhFilmRZ0SLymd0
EuEjAAA4GFqUJEaKNFprbkdReqO1SkvHeMyDkhyqAX9IQLZk1CJbjJTZ+8xNi1JSojKUiIcQ
52wAwEaharKVnJKo0mitpSVFyxXOOFBr7BibACAb+BpeJSItUiIpSptonWMNPj4iGZwGAKDO
toWZLa9N6tbQnBX5Tqv1ak6E0iAvAADIlqJaVRcrckYUJZbPkCKkCAAAKUKKkKIcTlQvo+Hp
CAAAB6uZbGVdnS/9knyv1zqPEy2pRCgNAABApWRrSS1S04rczWDnDW/czehEKysPDwsQThtA
HnjAQrUdLEGLkgc5Sp4UafNWn2Xc6WymRBxumAcAoGugIPO1SMXx1rq7Hj/WU5TLiYh70BSh
NAEgD5gZrD9kymdFu9ImRY4WRctn2XZ/nRbNOF4ktBROJACAr+FguYpvES1Sb4tYveslRXrc
iXbTnCjQSIS8IC8AACiY4lo16y9K1yKZrUh3W4rCSdFiJ6qYEmEpAACgiG3JoEWPFLUid6K1
Hmq0zuNE8oU0PLoBAEDtEGudWhS2IuWkyM+Kok60u4oTYTQAz6D6cJgCspVPq2I1NLWsyFOi
blyKkoOihNIZogPYBABuB8rZVkJYtNiKpCyfaeHhjdmdKEWJOJ7wkVJ5DCAP+BpUndxWJG1U
5Iyzdt6s6EQcNMgLQgKAriFbigZHy1mRnHOKAlK0sKFojhMRDFXcXXhqBwAcDNtatZ6Wx4pk
jYq8yY26t/psCSdqt9vapNPpmLAqJwAAIBpOLitjneMnWrC5KLMVybj3mbvVR6biWcyJ2u3G
xPKhzgnuAgAAoKSZOb/ApDHToogVKRMVuZvBat6S/KSgKHGrs3Z7Yt1To59vezfbUDIbG6te
H6AaPLeIfu6zb+F94H+6NvYEcxrkQABH2TjORCuFJ+XxNERrKY4zk/EePTooBfu4mR5Ge8Xg
PhBufrn9eWSp0STRiuJeJKkUacFtPuZLUWT/16ATNTqm+fbcPqHiJApIFUBlpGgjRYqijiSJ
EoWkSMxJ8kikFaV7hcxSdCxaig4O6iZF1ruDg/O35kmnEbOipC0/ZE2KdG9+Y2L1LMWJNMuJ
brEJpAhg/dFR0VK0hxSpIUXHx6KlqAQZikvRXrFS5H7cN82OltWK5KyfhZKiuUFRxIkehXOi
b++RCaQIoDgpeo4UlSJFrUpI0bqdSAIpOi02KLJMKPjJg2/N7FmRlFLkBkWa22idHhTFnKht
OREqgRUBFKhEYfb3kSLFpUhI7awltqOoXlI0DYyc9xuWFQX7isJtRQpIkTvQOpwUpRbPAkvx
J6ZJToQWAZRkRJJ1WSNFpThRy/3N5O6y9g6Ycp3Iay16YJqTmBXNj4rkTIq8Jfm6tkiKYk7U
OKGfCCkCKFKK4gvRkCKVpUjMyrOsVbSjKktRmL29MqRo33l/a540ggOLFIuKnM1gNbfROp8T
fTQx32IRWBGAulI0daP9OkjRAjGSsZ/I1SH1pKgkJ/J4a06C061TCmgySpHmTm50tvlYJEWR
rT065jkSgRgBFCBFGyVIUTAx2hftRKeiTpdinahqs4oEKFGOfuujCg8pqpIUnZudZjuaFSkT
FbkpkZ6UFIWdKBgUNTVzhD8A9gUFSNHUjTaiq/OdBfprtyIRtbTT0IwZYVJ0UJwUlaBF4pxI
dik6qJAUHYxMrRna8UOlqMhfkm+vPksPikJO1Gw2qZ4BVgSFWFFQjjai06yLiYzESFEgLjoo
0oqQojVIUdFuVIYU+Qd+5NFg18+a0X3QVImK3AX5zoawKdWz8Fr8TXu/3N91aLMGrAgKk6KN
QGL0fCZDRRXS6iFFLWWl6Fi8FB3UVYr2bs2ObQGRrEgRKbKdyB1pnVw9iwyybts5UbPZMXuc
1AEpgjIarp/vhwc5yiFFszKayJOlyPpZxaRIXEuRIvuelbkeP8AvrhTNwqLDUAVtjhVJmBRl
kKKwEz3umOwBC2gSlOJEhQ4sErtAX7ASCW21TtGhMqzoqTApUmXfs3KkKPZguPGkKGhFgSVo
ckdFmrMk346LGolt1qGgyHOiZtM0Qyezvy6A0z1gRbAeJZLKioqVouMcVpSeDxUuRU+fCpMi
Zfc9Oy1DiSxMsxm2olBUJLcUebvBatOeooxBUUyKrhbA2R6wIkCKSkqKFlnR4npZ4VHR06KD
ompK0WmZm8EGpSioRzEpWhgVybb6rKtnlaKpE0WlaHDbjzEY+K+DASd7QIpAVikSO9O6DCc6
WiUlClhRS9EZRZXd9+y07H3PUqUoEBWpUj9zRhQ5zdarSdGLQb83trgPvPx5MPjCeu19Mfg7
UgRIEawkRYlq5KzLl2TDj1PZpKjEsKjY5fgV7bLe/+yTOyPE3SefCXOiV+/fhC948/5V7aXI
3uPDWZKvr5oU9cfRNqLxl1+O3VeSIkCKYGUpimz5IV2PdXg5vhg5OipQip4oLEVVnVF0bcS4
FnY8vr/7OmRFb76+e09SpHsjrfWVk6I/nj+4P7f+PfBfx73e/X2vN77vXfWRomW5MHpIESBF
iVW0fblWngmWoqO1S1GrdClq1XlG0Z1x9SbElXEn7Hi0JChoRZFP6ypFXpu1vnJP0R9uU4gl
RTeDM8t4L6/dE/654W8ZcmVc+jdonHkfXVpa0DMu7A/PjKE/CKDn/v+Zo87Ds9eBjdj6o+H0
tpNu0LqB60vriqPx9rUxFn9qd36GkeczNxfWt9rp2xcbA6QIKYIlpWheGU1WKRJSRjsqVoqe
lOBErVaVOooK7ykyjDfhlqI9w9hbjxXNd6LaSZEdEnU1ET1Fv452Inzsv303+jWiAn3bWs52
DN9TRobvNIb/0cgwtj1jGm7PpGiqT1MpOrOwbs547enSeMeWJFuWXqfcoKUn7lddbI+N68xn
7MFOtq/r2Tdu/SB95xteWr+s9a3sbzO8XI8UZf3BkCKQWYrm9V0H7GVNjiRaik69c5x8UlT8
2rO5kwFKW3pWnhTNmqxFSlFQhBKcqJaN1lpAijKvyG+aJ+GT8veXRiKX3w8iJ/rhhaMw/Ws/
ILrY9tVl4NuR4a7j79seNJWiS98RplLkis7F0HC1YDw0zpzkp3/pWEjiDQ6dG+pb2rIzzDyH
0herhVJ04f5ahn3LvWHfVSPr3eu8wU9GKcr6gyFFoIAUJVjRupIj4VIkbKuPbDoknxTN6Sea
hlU5w6NjFaQoeNQIlaKZCiU50UyFAlJ0Yj5LW5MveVLktllr3dWk6EUOKXpxZQyjBavhrMg1
8jRpx016LKvpB6Toyri8mSNFlnPsuF+yM819bnbsaybc4MiYjU4auIHOGtzjzDGa8XgmY3li
KaQIIP8SfaQoGhEpJUVPnraQIvFWlOhEc4c3Ki1F3nawYpKi4buvvno3dEVo+M7/yDBehZOi
YbyJ57XvKG5ty77g/+ydXYvc5hXHSdPZqgVDJ95sZxknjgsxcVw7Ll3jygyhYW3SXJRCiiht
Qy+0hs7NMle6kS6KdKOLYSECRdAvMRcFXxn6GfxFAv4IfV6lR+8v8+j9HGzvekZ69Iy8Rj/+
53/OsZn04+L8VwhFiGa2mVCEcINmxRQhh2XmLqgJrOGrSmtQFIgpNY1Amw9QBFQEMSYoOm0F
ijqce3YUFK36gaJ4d6RVsl3STLJn7UMRxaF8JpodFK1po6JrXpJ/HBQd7Ksr+0BB6GDz75JK
kRUXSwgPRVZrlh8zVfRLJ6yjLEQo0hlSpaCIco6oACEAMfIW9MKEHfkLZxdnj83XOjo04ADn
Y8MONm6TDBwOgmB7V3U9n23BUVR366MXVVURru/HHEQG+YyC1drf4nV31IqNnVAevSj6ZBb6
6z5gUOR7LjsMn4/dUnuHO4lSG1vEduezT7+jKImvojhzwSPArHlSUQt9i2ITw4+FIvpFWpOi
8kkfdytoRcMaBHs7ZKJ09Dn2rIe5Z+1DEaGifCaaHxTR5Nn6WgIUuQfPurqyvIOLVaKbq6ub
bCjyVCeucWiELHzOSDtWj+aRrJZNHucRFC2Y4JOGoh0+xlVjKssub0HEVls/wpUtv7i79zBK
2QzcHPxVQeCxR1C1wG5pTdOoTVtDSOPqZAuWu0cUsg9cBZ0cKju+o8TShFuCQ77LZakAoQ4+
j3/rcWM2Whptw6Sr79Dq5lZjtnFfwZV2zLSdtTGGneHuHHK3dBcnHX1yvMs/7NSpCMSn6fJQ
GRTJ1ov4s0EGFEkd9VEVikrFoplD0ZE9irJMI9KhiAuN0qEIU1E+E80wfbZm+bPjoehgW97N
jWfZB6wS5UORpurpzFkooBjkKW6jvzrMKO3EoQj9YWdCEXFri5mwS/JK9oILw+VubywjuSyP
RgxLhh4m3TyEOA5VsSwhSxVQVxRFJ001A0JZWLNBELOnHwMLOmKmLHCpn5vLUugEAkke0XNs
CjOEg1TXpLC1ZaZ0up5ONk/UKQRRziJrY+ndEQeVR0htT17wzfj9ByiCGJ9GVERFbVShDReK
PqwBRePxFeUz0eyhaNkHFC1npRRRqUgGFFEMOtjfHPDvmyv9NXcVJaEo6/kXZppIwgrX6PsE
TOjTXoSigKBDGorIMWEzouiszAUxjaiqa8es1kaEVBSdfOxK2gnSCjt5z+QgEy9NIQ3BnSmY
ogJN00xCS5Eu5DBk8Rhv7SKnt8elrS25iBFpYTv2iTR8esC7LpGdZmwsvTvfNX2auAvYStZM
pCKAIoAiiVQkx1sUMpHUUR+VqvFHWJYvg4mkQ1HHWbRU+mzZcfrsdIZGazb+TBYU4dQZTZ/d
0rmrqAoUhbXqBEfIwx/blA0uvERQRDkhDUVWtlKUvSDhF4+LOT7jBVdl4tElVZWIfoUgzEqw
B9ORqI1J47YdL4knjhvmz9C3fBHWAcCNHNeh65tyC1+BfN0xdiJfdyFI4axbxsbSu0PEtaNX
3DExzoiB43St2ABFE6aizqFIouFa+vyz8xlB0WrmUIR+fro1Wp/OEorIoA/pUHSw9Vs8gZaE
oqx6Kp2rJdiH7bDMkc2f5DEoWigIc9JQtMVyjxr3FNl5C4aNHrdMttGZnMPdziSjppCXLWyH
1mNQFIYRboEDi7iD0FO+VZUgepEmvJQMTCQnc2hhUGSIUGSINzG9sfTuSMdLh67AY+xQtAAo
Aih6nqsYsYZFQ6WijWwoqti4cRJQ1KTB9ZihCDuIfogz0bLLkvy8/wfTL8m/lqgUYT8R/u0e
XuvZULTNTt9wq7WumsxnhHUTjdeaiVBkqK6fhiKTltrHqs+CvAXD+jB6VW619m2TmZgxYvGa
OH3rcg80V4o0FkEhFDEFytcEVze3WgtoIkCRWxmKgqyNpXeHgY9LWQp7eQtQBDFyo3VBGq1F
pWjMUHS3jIlGAUUrgKIumzfOE4poS2sZUCQarb85qCqGJNq5KA5FgZrZQTq0Wiuqbqo8w8RM
NHEowlyVgiI628wSWMNgJ2ctmJStmNUan0VdzxiIdhFh2bQTAIciM50OLIAiLd4d0hOXykqf
FUCRmD7L2Fh6d9heTmrPcB3bnHoZNcu3AXKMAYrScNTRLLTlmKHobnMmGgoV9T75jN3tjtNn
m/agqHjMx+kcoWjN53xQKPppHhSlmOh+WUk+hSLauSgx5mOvKllUxGvVEfEwLPBUbtRJQJFv
qrsEFDm0cmthRh2tTcY0WQvGxSSMVE5EEWxl3zRFfWsXsYciZgBL02eW2BOJoM82TkqC0dou
hCLBaL3P3Fh6d9hoTR3ZzvjTZnUQqaGyBMwxIjrK6lg0+MGw44SiYWBRW0x0N5qGMrR2RQiK
Nu1BUclA2ApQVHn42Wig6Joh0VoCFMWbN/JEWgYU4X45BEF8PPssbGbNa9UNVWGikRXOK0tA
EU6gxaAo8PiRgavuCR1ZLkeNrAW3ls9SStzShChDNxZhIyNcpEUvauhRORrrhegwi5Bl50DR
LmBl/7rYg2khdgBAH8HhJfluWJLvF0IRWoqX5BuZG1NYb6Jod+Rt+i4bhKLv50BFjdNtwBpj
rEYbDRIBFA2v9IxCUQ29qEsoeqM6yxgUOeqbdpgoTUWns4QibLM+I3KRDCgSx3xwy3U6fUY8
NrjZoEIsv6HvNxwLhlZgrXxUVfUzoQjPvGdQhE0y2LfErUIB2ggZSh/pMxkLauygsDwM1+wb
+DWFZ/dc2hqIenFMermt6mq0IbZKau53OVCk4XMUVh3mqtzjY4kdABChoYPC5o3k+GBRDEWk
eSPet5W5MYN+aGF3dPSbQRow0atoE5oIUhWKFjWgCKgIoKiLUR8ARQODovNBQtHmWboD0jNp
UPQ2IQ0hKnoLUESbN65Zn6IjoajaQFg6TgMzlGb7glIUTqv3QlOMwvkgBUV+qBSRC3iCXca3
8YvKVhdMPKkFLbwBlWwgav2oeyY+0ednUUnF2Lv4yLC5EdGWHMJ1Vl76jJxjenqiGmwXsxqR
g+jEDn0rXLkAitCHI5M9gpyNKTSHGO5Od10mJ23JQWa0q1lBUZUzS6Go2VsQHUPRoMvxORR1
2aVoOlDUVvKsRuKs82Ef3z17E3+avnn2nTQoevU2YSL64e0rgCLiKWoGRZc4GkJRZli9OoFN
M/FCYhyJzPDU6YHJOKFoUR2KSt4DOumdiAgOtTv/TA4UyX1stgpFt4cDRatWHUXDQyLyc7Lc
bMQRH+Qn6Pmyo5gnFK1pNDJaX4pUZL+7MfPi1c27SlAUjQXrI3ZJBnLN1q5lqFsgmYlBEVBR
/0gUQZGYTHs+UCiSOP+sHSjKGVM/IiZajbjyjAuKjIUEKFoCFLWsFFGf9dFQ9OO717nx7sdK
UCRMq+8hdHWf0K12LcpSLpDMwKCozH9U9CaYkfqEIhGOTjNK0QCKmkFREkYAivqEomVnTHQ6
d6WIjYNtCkWRSagkLsf2nPXNzG5KEBODokXGCaUl/slDAIr6pKL38md+DBmKNh1C0fkRUDQU
KmrMRKtxGopEKEI41J1QFP2ozxaKzmgGrREURQ+J/5TEyJ6ye82dUKtDgKLyc0uL1YouCVDU
IxRF34wGijbCM68bKDpvnD2L4cgYexSV6kUD7VEUh6IOc2cARbQgf91IKRIfEpeFMban7J51
UoKYPBQtKpbwAxQNGYree57nMZJnuI6bLY4tye8YihqM+Lg9LCpqmDpbVYGiIfYoSkHREqCo
M0/R+qyx0Tr9hBk3C0FMhopqnlt/QYCiYVBRsfNadvkZ+XKccNQTFJ0fAUW3AYpmBEVL8BTR
onwCRWVMFEHR/fufZEPRAqAIYoRAVctzVA+KAJf6rNBvo2HRUVC0kQ5FUhJoqwwyyiCSkfms
K7mt6a0ZYN/GfrJnFZAIQdEn91PDz97/VQRFGVQ0LqWI/GoERSAVQUwdihYSoAi4qB8oGuDQ
j00bUNS61zpkkukhUT279Yddx6Y3KDqdLxTR8rOza4AiCICiqp6jOOYsirin0L0N0R4VnbYb
xyPRCEZ9pLBkfEy0qpA6qwxFfTLRZkBMNH0oIim0ZlB0WcxEQEUQ46CiJu9n2o0KvEiALN1D
0fPW8mezgKKhUNFcoWgDUNRX88a1JCgqKzsroyUgKYgxuruLPdoARf1kz1qEIhkm687nnx2Z
P+s1g9Y6FJ2fAxQBFGV1tD42fVZWil+mIQEUQUwPikrSaxCtWKxbhKJjh8GGrYo6hqKjehX1
Khat2oaiwbmsowaf4dyzXixFeXQ0aShiSHQmpfqsrD1RVSgCKoIYExSVZdBqUFHZYUBWvUPR
sY0bpQ6F5c/p9nsVRXQyPSgadDn+skcoytWMpgxFpEvRuqFSVNdPVOY2AicSxFixqAiYilza
i7pUBFEHiuT7rWOzoQYDRce3KsohikFAUXtMNBIo6m3u2Syh6Ix3b2ziKSrpYl38fnUnEgTE
yDJoRTpS7N1sDxIgjhQqaqUKbXls/kyY9NFx9qwIinKZIs0nU2Kimj2KOoWiTTj2rDsmSg2D
nWP6bM2imVLUHIqK3dkARRAjo6KGyJQtKwHhyKYieWy0PDaDxt3WI4GivsfAtstEdUfC9mKw
7nTERwqKZtq8sWlJfnMoWtSCIkAmiFFC0aIMinKSbQBJcqlIumQkgYk2MUNt7+PPJgpFMsvx
+4SiZV9QNMvqM9qmiI75yGCin8SZ6Bfh6LMPWEl+s6gFRSAkQUwOmQCKuqeiWUNRfY/1UKgI
oKiPsWelUPRBavjZ++//MoeKxjX8jPUpOiNKUU0o+hkEBAQEBATElOLnt8pi2lB0xurPAIog
ICAgICAAiuYMRWdC80aAIggICAgICICiGStF62ssFF0DFLUSdz4/IfHZR3Av+rr3T+FWQEBA
QAAUVTZan4GnqL0H8/e/w/EPuBXdx9/Irb8AKIKAgIAAKKpqtL4mxiKAIhFl/vQ/aVD0EP6P
9RsARRAQEBAARZWVorBPUU0o+vzk5Le/oTfxUZSkePLi3qctA8s/T07uvSxNR5HkydMHX6A/
P8V/sgRWhf1d4FPkQ9GjMI32Mfrm3q+bLXj8/f2DeOVvX5ycfP3n/INL3qf/GH//Ujjhr+iF
f+e+n1yv7Pqx9Z48PuHBbl9i/Yvw/YcARRAQEBAARQ1mn4UDYesqRR8/5k/2i+gZ/6hlD8dX
Lz5Dj8A/VjHpPMJo8+AFJrc7/31YZ38XbUARxjT2lwdfvGzqMTr2/n71FxHHHp28/OjOv04e
5l+t8P0nj79Hn+PbxyGnPXjx9Zf4rKc57yfXK7t+fD0Ek/d+T4L98yfXv/g/e2fTGseVhWEI
Q9V28MKGqLqgBW1U3arqNq6OtBLq0EICIzlIC2Mbj7IzKAiSlTc2CQTvApmdDRlmFuPBQwgM
M5tsTBbZZTPLQH5B/sbU/f6sz1a3rNH7Jthq3da5p24LzuNzz7n3dJtrACiCIAgCFLW+5oMd
3djl8EbyD/cRj/EyZxRGJ0c7y8wTDWk4nEgei0fVUBTm1DWZHmnkX7oUKCrMCih6s9nZ4CLr
GwdmjipmtFH6uDXjk2zA/+YffzKeskwYm8MZt+3VzW/ZS4XryWde+9HnvvQboAiCIAhQ1BCK
zikS3ewIRVMelBQULVmTjHJFdCh2aNJRBQKMRCSN/tLKvyVBUSz38M4urRltNlZQlPCvk7E/
71Y3notPPee0x78hIMYet+3V2XfsyYTT1Ds/oAiCIAhQtGBLvqgp8jERgaJbEookE924waGI
BbP0NFsVFMU2ruSjCoCaCsBJfmhFIUuCIpkxSS+v+joaKihKBaSVbBfWjCeSr/j+FlvwQg97
3nHbXt38lj1JtjxR5NgHFEEQBK0CijQq8l1+9sGVvfxsbY1S0Xk3KPpuzIJ8/tv4sqCIZ45C
f6KDxFy6ZzXZazXLkqBIAkk+uLTfdw2KVI1T6q1TqhtPxuLb/m0we9y2V2ff+RjumokiZ37/
riSgCIIgCFDUuCVf1BS1h6I99i/8aPhOQVF0/PMyt4YsKDrOyot0ef1RTgKmqjxq5N+SoEhu
I3UvKVp4fTUoUpmW2Lv9WTdeQA3P9AjIMVvq7HHbXr19f4ve5Pm61z6gCIIgCFC04DUfa2u8
+6wDFLHK4cmL30XKyDm8+cmD4ju8NPjZ1uE3pDR2VnzvEXsTbak+/UT+BG+xfvtFL3THY9lw
zWPg2NeBrYfDwisWOdNB6Pr37OuTEXVGbyHPCt92JBRp87MWf+LDnc1YmLH9rYEintHQ8la0
45w/X9n6KPvO+hrr43meStKQu3la3bqZhaseD6OtxwL2Bsb768aZvebzW8g69dtnm6TR3R6g
CIIgCFDUEYrY/52giAX5eOO1yhSZRbO7wV4vjHIa8qLDjz7Kiuh1cLQjNk6Sef8+OatmXxSL
zMmRM7OhSBzY4+72WVyRKaI11slnWeHQrlZcvCGBax6M0qP7WldYQQzFy4Pn23wWc36a55nR
R+WsY/tbB0U8zKuSorR/rxfOaN+5f30c+8b6Gv55nqcailR+psDLgS8rVz2upZToG8n7KVWe
3isd1+01md9jLxkP/POT+vWvyFFG5sFHgCIIgiBAUfNCa5os6gRFLBrlo0TbPhtqQTsVXUfi
ewXTxASTWNCPhnd2jPFc/M1brO3xllBE3jzZK4xpzWe6f3FwesaSQNx9Rm8F+LBZrPlZ/RL1
jW/UWP7WQhEnkl11qNNAD+r2+vjs6/7b6+M8TzUUyTrnEiipG7c/5jjYeD3fv3/3eG6VCPFx
216d/RJ7qdOqJiBwcnZCIPLfc8MaoAiCIAhQ1PTwRn56YycoohE2Gg5KoGiSiTP2VPHI9zRs
P9zqhcZ5NaylesjjF28vssfbQhGhmHiU9te15jMTikRNCvMvFsE3Fd1RxvzJeCreyzbAbH9r
oYjt88jSF9ldJVM75vr47Ov+2+tjP8+KoEg8RvH+//DP0Xi7Nt4Kivz2kvGoZH75hbkbByiC
IAgCFDXdPmP/dds+o0G+iPElUCQ6rWfjDZkJ0cKV+ime2lA/+6znG28LRYRi8kGBDloRjwlF
ovuJn4MjjDPasOenf7IkTjoKXX8bQBHFrnhqQ42gR3N9vPY1/531sZ9nNVDET1jUD9uO9cIn
bbwtFPnsOc8m7YezH3viFw/XfEAQBAGKup1oTaioGxSRIB9v9PxQlIyd2BzrGyHaC3lwjX6N
ljveHoqiz9eLt8SjGiiyIIi9duanNUq0D5xvgJn+NoAiSj/pwOYTOXNsbjx57Gv+O/5Zz7Ma
KIqGgknSQD1Pf9033haKPPacrUFlX/+t0KAMUARBEAQoalpTxO+E7QZFJMino7AMipzSFoNp
Uv0OLJZ62dWv93THW0JR4cvrH3qTbJQOmkCR6nZir535yfvj/xYGxAaY6W8DKCLRXR4xqNZH
gyLj8Tz2Nf+9/rWAIlXo7O/+qhu3mURBjrbfpY3b9urse+3JvbIKJjL71gBFEARBgKKG22cC
i7pBURHN/zoclECR3BRqDEVh+HA3k91DC0NRmN/5lfg41S6Gr4SijV4lFNHtOFKjpLbjdH8b
QBFJ6cgCJ+1IAZETcQ7sduxfIBQt3JLvLKfazpNnGhglZu1a8n327M46o64fUARBEAQoWihT
dH6TX/NRz0Ti6rPbtyUUFUH+3ZvNC4SikHSYB6JbaVEoSvt/GxUenR5tXggUFT+7RrbjBsY1
HdLfJlCUBtN4r2EmzWv/AqFo0cMbibVc+4gVikiIMcbbHt7osWeVC5n2eXk6oAiCIGjJUORS
0a1btxQUOVR0lQqtby4CRWmwfdbruH3mqxmims39NT2toSgOyNtzvcJkkZqiArLevticZHrm
SfO3CRQV4PVU7Sw1giLT/gXWFC16zUeozgwI/97TIUfdZ6KPt73mw2PPrj6y7U89OA4ogiAI
AhQ1PqeIb591g6KYdgiVdZ+pTZF/9tygr52jyLunRnJk6hsP2919JrZljJBbAUUq9ApIsueP
g+0pyTy94BVApr9NoKgI6oqE3HtQzcfz2Teg016/dlAkF8ZqoQ+bjoepLIqiW4IyiyN+H6xx
216dfcce+UR1CjbtF2NTD2QBiiAIggBFzTNF7JqPblDE/uVeAkUqjSOKcMygL7urOdrEKsiP
fOPlUDTxX2zB/DKySRVQJFlCBm17/knGMk+iU9zytwEUGWkrVTTsXx+ffeOcInv9WkKRSMWI
xEpslfbUjYtLyMQpA3IXjD+YPW7bq7Nv22O5v1HZ/CqzZNAmoAiCIAhQ1OLus3PSkt8NiliM
LYEiGYCTB+u+oC9SHSIRI9mH3+Rgj3ugiOdQ0vUSAphSs4NmUCTmS7PAPz97IFnLY/vbBIqM
QmGRSpMNabF16qFrX/ff9q8tFIkNuFwc4G1dXFczro5RnM2nHEam2nO546a9+vlNezYUOfZT
2cOnmwEUQRAEAYqaFlqvnd8877Z9FpNbS2lVx2SsVe/eUS3kyZzc7RUeb5f0Ds3m+5/SP0VC
IHhUvA6f8Bhqj4eea73S4F4YHuyVfLr5yEgoWP7Jopw8+JI7sL8TRk/30iA4WvfNz572uUzQ
WP42gCKT0HbpZbDHD/zr47NvrK/ln/M8HqUGeKTBXi96yid1oaR6PA5Ot5kC9Q5yScmuOCDc
Hjft1c9v2rOhyLW/u3+/+PmDbF+v1QIUQRAEAYoaX/PBioraQ1FOG8njKbs/nsbj3LjFnkS1
gz8FAT+BUHWga6cG6be8h8k/vj2cF+Pb9/zj0rxODl9lFbfC0wOK5LUapn/MH3oxaSGWZJid
0Dvm00ef3vXML7ZphD3X33ooUs5QHT8ofv6oZH0c++76av75nsdSLH5esgdpbduXaZisb2eY
qsZjdaKAdJk8T3/vcfm4bq/J/Jo9jtk/Vcw/O8mMzwtQBEEQBChqWVO01m37DKpXNPzzXaLH
WIrV6yFdekARBEEQoKjh9hklIkDR8qDISs1AK197QBEEQRCgqCEUIVMEQRAEQRCg6OY5SxR1
asmHIAiCIAhQ9H9TaM3qrO0TrT/wQNGHgokARRAEQRB0naHoxu3bDhX9sZyKrtCFsKTWuiAj
QBEEQRAEAYquORSt0XQRoAiCIAiCAEW6Pn718tXH1weK6CUfF5Ep2vUcoXwwwq8XBEEQBF1Z
KHr18uXLV9cpU8Rb8s8Xg6Jd35HS5TeCQRAEQRD03kPRS6LrV1N0vlimKPUfw1N+JRgEQRAE
QYCi96z77CbryF8IiuK+/z7W8gHofdHDw7Ne1euFdPDl1VyU6PAn/GZAEAQoun5QxAutF4Ii
dVu5o7z8JGdy3rC4oCtV5w5P5v3lppfodWH9vV6bd3+/9eNlnUh90esxydRHwo58Ln+9mH+T
LAiu5P5pblzPB0EQBCi6TpkitoO2ABTl3stHeWCsCItxJhJJeSBTSumSr2WYzTd2wvCgYeg/
yMi7ZydB+SMuWRe9HmlgZu+SsbkS9utF/IuDK1pUlgOKIAgCFF3LmiLRf9YdiirBpwKYSCph
xAOxgo7ohN0Zv6w80ZDG/Inksbgqbsci4K8uStr+XPR65B+Zj8IXpPR17YJW+OeDovgqcFIK
KIIgCFB0nbfPFoCiKu6pJKYCiqbii1VlYrg/0aGodkkrgnQyFm6trpEuXe5EyZtfs+lFQlEl
4HmgKAUUQRAEAYre1wth+fZZdyhKxtPKzEzV3hrfxEpPs1VBUWyHu7wqzaWCeryqq9bz5ULD
5Oy1uT+2aijKAUUQBEGAovf3nCL2fxkU3XKgiDKRgqK4OoBUxJfJdzwTk/82viwoqspkJWNV
fpP8azWV1pV7kReTiDIzeyuGomU/H6AIgiBotVD0YR0U/eFKZYrY7ll3KMqr2+4rim0ne6xU
Jxq+U1AUHf+8TPywoOg4q6gFjrVq7F9+Wclvo+vPBa9HPrAi/sI1RRX+uZ995XoDiiAIggBF
l35OEeWirlBk7Y89eRAEgV56O8mm5VCU0hA5efG7SBk5LeG6vWdbh99kRbSaFd97xN5EO+ZP
P1FN5bSD/tHbL3qhOx4HUlOWCZKvvZE6d/uqDHuWP9HW1yej8KB4w9H9Ju+nkEAe75SfD+D6
46yHaY/MR4z1Gx8HlLzZtFClBRS5/jv+zU4y8vizE/pdMtMT5Z9nve3Pq2Y+tmD98s/bGLc/
nyGfmX4xLbFX+P8/9s6dt43kAMBFgl0gzR1cMIWWC1AAAdH00jRE2qoE8kCCAgRRB6kQJMOO
uwMSELiDCzcObCBOZ8DXOYiDpLlDLtelSpMqvyw7+5zXPihSiaX9vsImObOzs7NLzqd5Xh0i
RQCAFDVSiuKNz0rWKaqSInUK98QJK3hPbjwqmeI9nMezu/y9P+UtRcXpeSePHw/C2upoeRhW
a1G12pt1Qv84my2So3uzKzGD/n46blsPN7vPShqy0pPITiGnp+dn+u6505+EGfC+ceY14osz
dE7bIr+PHhTmRykPLb2Z0w+EgAW1m1+Gv21rJVxfiizlr+dvKFYwCC9/8ffohoYXEyzU/KnX
p9+vyvMFneO2O50tDguOl8PN44fp0LUgfUC19MQNcd2j1wdIEQAgRU3sPotnn7Va124pkhcD
TGs/uaIsGWk9nMfTu0b9ntR9dr8svdBp/HnbzaTi0aESnq4VmQybMcLXkqLeQ6Mry0hPzY/v
dPpyvqvipxP9pYE2vnlOpSyV9HznN9Hy02Wj2VWCsR57ve4zNf9m/pKB851drx03zc21/KnX
p92vyvMlLTjZ46Ifr4ebz0sSr+9a4yc2P32IFAEAUtTUlqLSxRvXkaL0db4KUIUUhX+Z74Yx
ugVSZKbnOz9HGnD5pO1KQz/8VEKSTpHe73ZdS/jaUqRVjWZ6an6yQUiJtVTED6vqbhJ9XEuK
9PSy8wV1t1MZdV1txMy6UiRfr3m/+sr/lvwp16ffr6rzZV2xgf1+6+FGfpMr977ddW3xs2Wp
6D4DAKSomQOto+6zLUlR2vIxfbj3oJYURUf0fnhQIEVmer6j9MzlywhFr/JjX7Vt4RtKkSU9
JT9SYlGTQ2X84XeKQ1VJkZFeFrmuFMXyoInJelKkn0mO72ctX2P1YgqlSLlflefLXCV56PTj
9XAjv0nGhsn2bnr8bIlOpAgAkKImStFKSNFqp7WVMUXyFHbJJErGFEV/m/t7bbsUWdLz5bHP
0pukOgucq8Oy8M2kyJKekh9ZikR4Zfz4gp/99H5QS4qM9HLpqFmJxzag9HiuK0V6/lUp0luK
jPyp16fer6rzRe2Kih6qx5vhen6TGEnvmR4/fwqRIgBAihrcUrSd2Wc922pDSg1sSJEIDauo
Iiky0lOcRhq/m/anTMRcpMPC8M0GWlvSU5PLE4vCK+O77uVk4Cy/+0M9KTLSW1uKgmTyl1Su
a48pKpEiaUxRPSlS71fV+fLnIX2lHm+GG/mNyi3tPdPjZ+OwkSIAQIoaPCVfeNEW1imy+k/p
OkWiNvrr/W6BFFnSq5Ci2DKcxemWpGh8s1IU1umLF27t7rPNpWjUTS6seyNSJC5E7LY76Lv1
pEi9X9VSlK+pkD508vGWcHOtzjC36erkevz8eUOKAAApaqYURc1Eq+t3n0n1jlWKyla0not+
oH//8GCLUuSKGetOOldpIykK8yad/+kNSNEo2xD3fyNF6XhmubS2KkXD5d9kx6khRfL9qt9S
ZD++qmXRTXrMRl17ekgRAEDTZ5+la1pbpUja+qxQivLVGW2VVuneZ3NR/RxES+dcp/vMNmYo
YjpLhtxsNKYoDMvPL/JqHSNkl6LiMUVK/vfWGmi98ZiidICxPNJmm1LUe1hQuKVSlN2vqvMV
PkvJ8ZZw35xA2BcLWFrTY0wRAEBdKbpnStGvi6To9lhR5EORGF1biqRFZqRFG39qp8pULB2x
aIgKumj2mZGe1nKQRk1nY+UrCo5t4e66e5/lkYOuNb0CKYqH8FbFzxpsJCky8qNIon69a0pR
MDZtc5tSFGa+XSFFyvVp96vyfCPdaLXjR0bujPwOB3tHBSotDbxGigAAKWqkFLViNmgpkuq5
vBlgODe9xipFsXgUSJGZnlrJZTO9kyz4uTT0beHFUjS0bpQRZP1ncRuLmV6BFCWtZxXxR7IU
XT6150dZp0i/Xk06/EH51Py03yiv/bc90FpsWrL87snTKimKr0+/X1Xnyxsl4+dBP14Pt+Q3
vPTn3aL00mymg66qyhMAACm6U1IUD7Mu3OajlhTlTUVZZdu72K1uiIlqorRNxSpFZnpqJZc2
naQNMdnZkn4cPdxSSyZtDIG18svmn00vCtLTpSjOb5rvivhZ99nRYK/td+35Ubun1PQ06RBO
UmY0ee+WNKhoq2OK/nnx6eC5GLcc75thkSLl+vT7VXm+VLGT+WPG8Vq4Lb+BPPVOi5+WbzCo
VZ4AAEjRHZOinbgDbZOWorAuyboxZmIvKffsoKv7krXGE7t8Rjs1DPMViUI/yqdoG+lpu3xN
Z2L21jTd22w4cK7EbK5ns7E13LVsExY4x6GVzO05DKvF5en+/snr44L01OR859PBsQjvdOvE
D1MXW1CczT6FUvR2154fpTy09LKxQSPnTY1K/EgaB/7o0Ja+5b1eWsZ2cFL8IH7pPTuJhyxr
+TOuz7hfVefzJtHmrWcXXfvxWrgtv8oGxXr84WAh9m6bB46z3EWKAAApamD3WShFq42kyPUz
pfHEJvH5inp+WffDKJoI7Y+T7cvHbrLrupPvYa6kl8+gliaUy7vGu70fP5zMwvCDY3v4SN+k
XfB2ULbLfLSNfb6SjpyemR/f6XuTQf34yR7vh6Kf5o0tP2Z5GOlFA7qTpYfCZIrHwkSlvNeW
D4wLPt/pXn+v649R/mr+cjmOmmDM/OnXZ96vivMl92N5WHi8FG49XmwqY9zfZXa/pueOyF1w
9WLfrShPAACk6A4OtI63+djZRIrcwP4HtVRLNgLf6Tf5qzQc5OPS6+5QCwAASNFntHhjNNZ6
Z7WRFLmjsbVtomGO0HApkmfH0e0EAIAU3TYpWolGok3HFAkmln6Go6Ypgu+MG+0Cw8HiNCwA
70waxAUAAEjRbZuSv7OhFIEY9iuN/mkk3smB2DJjeUo7EQAAUnT7pGiVaBFSBAAAgBQ1fUp+
vFCRTYq+lKQoc6JfRU6EFAEAANxxKfoYOtFHuxRpVhRJUaZFv9Ss6PYs3hhJUQspAgAAQIoU
vvr4x49fNUeKotln0ax8pAgAAAApquBOS1FrFe/0sYMUAQAAIEUNlqLyvc+QIgAAAKSoMS1F
8XrWtBQBAAAgRU2XohazzwAAAAApijeEpaUIAAAAGi5FkRDtMPsMAAAAaCmKp+UjRQAAAEhR
s8cUrWItQooAAACQoma3FMW9Z0r3meREphTFToQUAQAAIEX55mdfFlvRrVmnKJSiFVIEAAAA
DZeinWSTD7X7DCkCAABAiponRS1zTBFSBAAAgBQ1rftsJ13TGikCAABAiprcUhSvaL2DFAEA
ACBFtBQZ6xQhRQAAAEhR48YURRPymX0GAAAATW8pSvaDRYoAAACQooZ3n8UjrZEiAAAApKjZ
A61b8ZawSBEAAABS1OwVrdOmIlOKEifSpegeUgQAANBsKbpnSpFsRbdz87NWskqRbfYZUgQA
AIAUNUeKoo3P7OsUIUUAAABIUWOkKJ6R32rRfQYAAIAUNbz7bBUPK0KKAAAAkKJmtxTFE/Lp
PgMAAECK6D5DigAAAIDus7ipaIfuMwAAAKSo2bPP0i1hkSIAAACkqOHdZ0V7nyFFAAAASFGD
WooiKWJMEQAAADS9pWiVaFGhFMUX+wt15zOkCAAAoMFSdO9e2eZnuhR98cUt6T6L5+QjRQAA
AEhRk6Wolex8toMUAQAAIEWNlqJWtEpR2ZgipKgOz84PDg5+PlQ/9PafUjJ3mem/2hTC54/3
j93k1Z//E9+wo+M0bLJ8QAEBIEVKS5HoPUOKNiLofN12LydOX/4pPl98OO+8qTr01ctaFav3
7tT46JuB0/k+P9o7Cd8fKzHO3j1OOLVW6ud70sm9yTh9Oeoq771vd6MLctLoQZd77j6bOY+o
UW+Bus6y59odLQ7Fg5099r2Hznj7Z7yU/i7awOXud/iaAVL0fxhTFC1ofSNSFNxwnRF8LnVS
72H06+U7nd38w5HTDX/XnPLftbeDT+9VkSk8RV//aLT4cPJc+k2fzPePBtL5vIkjON7fH32/
bzOvk/eOJEXeu+dpWsPfhwXbezdI3/vRi7fHR0nq3l9sBX+5H9GYuvbDOVL0uWF5BocD6S6F
onE8nUkf+DdxD4+WSZvx9ML63X71JONFiRM5Tn+bRUOrJiBFNaSolSxTdF0p8sJq2en8/MTa
j6BW5IGooaNfIF+82sIfQaYoxNm5krqxzi7CD94UvZ+eDxxneera30+Oa2Zk+Ho3/vmVG16E
FIX/lP6u+aI8kqPXvdbhPPo48zDvZVTIfflHNSnoUb8oUTnD7iiVoDi+d38sNxS5++EncUJ+
P2tCchL22t7JRfJ6Kf3Sv9IfjCibtX+pL1+uEzr9Mbp13k9ZPXdZ1IF5dvF1nUri1YvSe3In
pcizvLquOIpe5Yir9nazVvA+f+bzm6R8BYcD7bcn2Kp5ZGeZt0VTbsf6zfayUjk4mJc4Uefr
tQrNj67Lt/+y9sKSmVvOsXigJhF+kUfOTRQJIEW3RYqSUUWr60nR0WDvUPz0Ffy5NVLq3PAr
mNpIsJ1vnZq++C0SvUlng6zZuTcTzeVB1pyivQ8WYSU6vZ/9Bmjvh/9l79xd49jOAN7NlOnc
aGZgBQv70IzW7EjaSuzCil0Qki5yISQjyZ1At7ErNwYbrktxualyiUOMSULscMHEjbsU7m6K
FKkCKVPevyBd5ry/7ztnHjvedWxrprGPdua853y/8z3OJPtV10C3Dv78eVK8vnAzVS6zlGiK
Qt6nuOcjk4y9ulDU/eMGgqLBdYjoSP4jShkxVdRwzjOKvb37wfAgMcvvZJMMUZBCQTFIWuvF
rXb0X/CwrScU6fdgPNsNDrhEKs6fcflWlYEtql9lKEq9jlO8Rde7guVkf8Pb8p5BjUC1i+lb
iLMYWHPRXcTAeNkMRgL2ef1iupFhBNIuzIy9j0GvdTQcjjuhmo+eZ4GLboF434L3sgbBa57l
30NTN9hhpIJ8UySMxaBbfpvgekW0G+bXK1ChTKat/cH07m59/Ot5Zws+PUiy8iab7hnLJrz1
S7YuxHgFyKZQNk/kmzEWe6PKe8PmaqDo69AUfcw5RZF6fVL39mSQtPF7rpLRcozlOH+d1Arz
7uZWCIUHSctNla4XTVemouwJx43H072wWFMk6aImFCFwkWvxt+uAJ+pCUbyF807bUDml/xEL
50veWcH70Oy6ofgdEJmUop4qdelIbdyeTHWOsb3OZ6IXCJPc/GOltSwdWPS8cBYJwjwoGjos
iKlSpZnftfoqZqbTudQU2lAkjUHhp4SiObwr8rJdxly8Vk4oMiXyzHCFxQSKWSWz+eGCogA3
MOgxhRJ4q6PsWaWeNB12DG4AFbQHaPH08tRtY6+caosm3uxo8T0i79ctvyoUseVHboD0FGmb
aTThOxI8K5urgaLbAUVrNUPyjVBAC1eeyF4+FBEkSFV1FIrIP2jhQdKphiHx2tN0dSoaODRC
nBBKzGecVoJehd7IgaIILnSTG7DwcTtBLSjqfruOelcripTH0hj4Lf3ue/G31wCKkLTGVDQm
/VGmKrKdstATVvceTz1EXcihhEBRlbUebbyzyrDcIkUHFhTJPsdNAlCkxqQTAn3APdUGC4p+
lFy79QmhKPaI6mB2Ix9zQpGpG8tMWa+24OTkUOS/2XA1MiYNzAb3VQzam939IiEVOruCHQIq
aA/QoumlXs/2PoKJHtbSzjxLvLzIjsBlPqOaIvY6AYM8o6KGiRooun3RZ5yL6mmKgEiKcvYn
cNVePhTh/M3rLNdVbdWSnis0ncrVVT1I03xdQILk+NFunnyiS47IpASKBk+eDs97VVYdNxRJ
D2+4PzU8VxeK1FgqKNKKIhnH0/3JPNT9INVrQwhFqNmQimwHjkEC/nK6w52EzndMRF5Aeofo
fsbo1/Pp7AHRRaH8QUddjapZJybTPixbjKlshQVFExHsZ00SRR/y923jK8L0eeI3BRTwav2G
3/7000ER5QNWKz2jiO+bqHEbQpG0Xj2FmxQBRY9DFxQdb5MGRgRWs0pjxDQdZlfQMUCLpb/q
y6EOs3yK6PowZcTaMFEDRbfMp2hNROXnQRFhIghFgB387tuwVJSvAIpQ/kZeSrNeTDaAND1P
+giCaNqioijf5hLT1YPLoPOp98MfihYV5olaaUfphKKuFdwS9FTVa0OR9hiSUAQV7BG7HzqE
RW3o2KmZB8X0GCpyObVOPmgHoOnh9kWrHTy8vACSEHhNi93wB9Rd/4YAcvDAVi5NPnzcoh6A
mT0fsf7uPpQjxqGIjWCZQ2yBf9DgRLogu6CohJaXA0Xzv8EZ8ZzMqOC5blzUckGRKsJuY3dT
vIXosTLNQ0zE9PE20SROTq53cypoDdDC6Sr7sJWolT7TK5szjZ6ogaIiKNJfP5OkUAxFv/pS
NEXc1boGFEXghfn555w1DoXDLh2KaP6yQkJTZACBAoPFBliaoDSkosjhrCiy/u75BZVhYxbm
Fnut5bgpuqBocmJ3Y2osmjWhKOoglxDMQNlvKB7/zQaHouDXIYKe7iZ2p+6EeUxEKpM9eLOP
rV40fgyngx2Hey/ST9Zb1HkpEyV+pZ6DpNk8EQagPFTmsY5nuwgYctvjdLSG7aPcYUGRduma
7VaGoriqjA9YWAPz8ZrcExGerL5XnlEOSo2X8YpODBQ9Dl2NpP3rLJYOMBzQkgFaOO26Tv08
1dlnwCyt9VXm32iKGii6jVDEFUUFPkUFUJS6nB2eJZ0N9Nq2i6BIhtD/+VEIpYjc+j3eObhh
j0+yv6ntNL0fuVoHO/fVAt32bX+SPP8S4y/uTAMqCsYjpykjbn0zHF7R1ZKFgwePl7SkOKBo
8ITFfR3swdUb3BbVhCJtLRNQhDwxGSBBS2n3USig6D2mHqKtEVTkYCI2nq2zkD8uSFZaPpV7
1zy5HHmHu0C5Z9LBwfbNBenz85fb20fGLyYYJy9uksPqYTzHJxctdiRD3Amj0YV0oRrxiUPT
HIr+eXbfD8zIw/YILuZWMLPfLmwPgaLZS9K+alDEmGijqqZobSwBindn0vdPx6OROJOCpmOW
awZF/00kB7L6rvW0vx4rLBh7WX9Lw2QkyuNQ9NqGIrs/Yf+F7gGGBZQN0KJpxwBmydbo4nL/
r9dmwcnbGP0frqC3Uj5rfIoaKLqFUCTNZ3fqQFHQc2z8mckf/RVEzdtQ1J2y5W3S0zvtuLUf
+hMeN8/Da5ln7/xwVxVl3W9H5QNND7PhsFOevct9bdOB6UqKIt/yK3JAlVglY2/pp+N2T9R5
JtlaPcJnvkQJDm3OlusX2xd7SEgWQ1EwT1qvTPdNeux8hYFZ/zdZWiuKupuz7ew3GI/vD576
TiiivlSMiub2dMl2oodvvzvpXHUAFPWhro8fQHyltG0kfTocHiM33AmbH8H8QntCi0C1uOrJ
wGLmTaad73knpDobMSFoOpvse6qn21Z7+J/3QtbLxm+oqD2WpmhI2lcJirJpYOINyqBoNgW3
nGYjNGegLb3haVo84nksLmqezXVeX21gSXmCH88zVu+DhqLgvUtTRPsT9l/oHGBcQOkALZqm
A9idto74tIB1/se7VRyCXe+KVmnJa6LPGii6pZoiSUWLQ5HzDBkLioAjgg1FimiUzUeq8g2V
ZBI3YnJFQhG937cdHcBqHHmdH6ezo+HxVKxiNC1rdTydQU0CTVegIuU1ES99D1kERQEJ7/bP
d3bwJ0POT0qgCMd7n/LMxL0sKv+U/cgYKLjHGzbhbtAiHl/a2J6tZ716uP2IfS4kg9ipN5Nu
szERHIPk0g5+0b5cfNkVdhI5BYRpVo1ziqMHfXPWEdJ1KadqJaj1Rlq7tcg+oxfJTM2/WAcp
udN6nspXAbfH1we+dJVQLW4P9Spiz6D2VYGiTJLpl6Mciji1gfxG1/DwK5oWjygGuvv7njC/
yXeTRcupMxz4/RI54tY3O/dg7J02ONr9afovdA1wFxdQOkCLpskAamgyXnHZSLej23KQeXNO
UQNFt1FTJI+0rqMpYutDqfkM2nMsKNIR9TIIXEeHAYfdv/Bl+XQndNyfZ1aS2cRe510fFEzT
8r9eZxcqpHGaFBK8dUKRpw72Wd0esrtZK0AmOO+1qx2EpDqPfeEDnEbJjGXx2XfG8sjj8SVu
MAVAxGgtKYMiy4EWyhxgBTgdZ4yVXSdMLOnIsUhFE/apfRPKTJONpFPtLqPvij3nJW9TrKLw
oTIUSUsyaY9h5FRRUmF7lgFF3U16dJAwpPZVqyIPqX3wBsbDEEnTPjg3KmvcKw5FgTSgZYW9
M07+oDti7/LCqwRFsP+cUJTiApYORWQANQuZSsTi4IHmxOfmaqDoa/YpWlurqymqorw1rtAO
KFJrzeMQrlFmNcLLPr2f5G+2k1oCbsHVnqaVPuUe2i5baUgkgz03sMiKx0WaZn24fy2Vd00o
EocgLQBFwlo2HoEvfDAS1DFmIh4/OhFS48NwyL+HJqP0jfmMQtGcnjcDR1mPKzN8CSjiYeta
BkqhRNNEZkZeHw0IMIOqJws1Rao+gyf/Ek9WhyLeXNIeYHeQdFLSHpej9YJQ9EPPQ6c4FULR
PLHy6/sYinAaQlGkoEjp5VJvtmlc9O9uAE3ROjjFATaS9CfqPxcUdUkBy4YiOiGBi5z+gf0p
bgxKzdVA0VcLRXfEB2Hv3FkZFBlXaNt8FqOj7E10mJY2xAU6dhx9T061ZuokrC/QanGaBsKg
yNEams8G7k8CZDm3sZrdiSf53zf4bKBIuFUP9uItoyhikYW6lzk0BT/Jz3pcjkZJFZ+iubdn
d44GJylzJtPZEQyGMlYbMR9omsrMFOr/+ujjK5U+cCVv6p605UxcEIpIe4DeUNBJWXuWAEXs
6leEIvv8SgNByoaJ024okga01LuEJzm2kU+Ry9Ha6k/Ufy4oikgBy4YiOiFtKBKWs4orX3M1
VwNFX6T57E7dc4qqapFTs72jUMTOwjefb4WiTi+9+Ci5MfncK8qfMBHY0ImSadq247jTwKUo
cnsTKBNCoexVJ9tt1/I7+kRQxGEoeLgeky98qIZ3+VemorbwKXqz4ec6WrcJEzGpjC1oKZY5
QvwBKMrQ9YXosRseekzTRGbCExe4OQvI0KiKXVPUuXvSripzCRRZ7SFQVNaeZUDR3V882AsF
PkVBb/bLcqBIzP7U+4/JPxYKlcWgCPWfC4piUsCyoYgMoA1FinPTz8fVurmaq4GiVXzmo5b5
rKoHjXaFdp1TdDpORDiLD77WZb6UYH3yGd5P88cWNniCoCiZpqE0oNIBpKGbdZzjYilcOebJ
6tTqnwaKRGhZ1FefP9OaMZVDJI+05lDEjSLOwxvxkVBz6WNNqIjIIGFM0oL4dZgxxwNo4aLp
AiiKa0OR+GDN4lDUt9pjaYrK2rMEKGqtZzMRREoVQdH7MF0OFAkDmg1FMCQf7h++GCiKiOZI
nwu06vOBmqu5Gij6Es1nfuGRdEh3kw9FvvhcVR/LGLBM23pqfT/N35cHzBkpgCGIpmEx5Fvz
II1Cz+K8xZAfX3J4tDpXg08DRYJ5/rShoEgpioT7tYKmZ20RfRb1/RwoQqayuY47w1SEN+La
r0Pi2F7pUQmFUNRHJFTRfNb2/8fe2bS2kaRxfJmB0mVhYA4KjFoNMoixpajdQbKlk5FARgJj
xcgHIxlbvnkvhh1y8CUQM8kxkLnvYRmGYTN72Z1c9rLksLf9LPsltquqq6u6qlqS25Jjdf9/
BydlS/1S3V3176eeF6dbX351RnG05suzuiiK+xQtOp+UoiiKAuXLWA2imOvuV+YjrShi+6TL
Z3W1K2PJG5cRRY1FosjVdrD65bO4KIq0j+vJtAPhScDVGkAUZXT5jBuKUma0loO63QM5bl5J
zGjd6/OS2bWlRFH0eYv5Rmii//5SVj2H+Hypt+VYH56J3jY0kbHOphzpmhPiP4oo4qVpXUI9
hVi98tBQFOUmYr9warPg76Pnhe6Wcok+lhNqnw2VWPyYKoq/iIfXxN8Nw9OrS2Ukj/sU1WPX
SfmbkbbZkUkLY5ogrHRyT58iHiquGxZaWsKgReeTXhSFCpaEeWW0oLf1iyK6z0sykD5cLb4c
GGaJ2hL3x3xR5C7yKfK1HaxaFBmWoQa7SZzugOe7kr5EjbxE5QOIovxZisJMRUnLZ+GZfmev
fSanmkZ1iflcSgr+cVdGC+3ZJUdcFOmfN/RCJI94tEtLVp2Im8d5O8ojEy6X6W1TE5k12x9N
FT2KKPLD/Aft9uk2zUkkEjdGCRy55ei23b4evCyHgWhhbqn/KK/aau7wYSw/kaqKtGAfNkWP
R/8jg5+bF/14CuydN3F7z84bqyFhLzppfr2lZVCfwxqWymLBXdU4LCtbFXOmnrdItGXUIddz
WvBSpEIahMR9VOznk1IUOdK1R2S03ntkUcSj7Qd9zf2ddwv/ye6PBFEU9ufC6DPVM32pC3TP
thkOeUfPq3JSEj5Gcv8wFQGIIiqKNFWkiqKvTFH0zUaIonABLYUoUjyXZVSWnqdItd9I8zS3
PChVturxN0FheNJEkfZ5ffuyjLe7FzP4hBvW2nJka4W59wxDh+8dae/yyWOhS9bpfuncHqT7
3n1EUUuKXLXChz9tNn+nlVVkyQ96Kfw3yiVy6/ICq9001HI2qnpJiGBXprEZHPAgPSad5PpS
V0vq2a1a5sxge0ex2V3JA1QtmKLIeNmP7mc3LgrEZKi3aZH1I5aRestyPsx081O5QEuFkdDS
MPd80voUuaw+ldMSkWciv/YjiiIuMofS0lqV7y5cFLl1UxTp/an2nzVPkavtYNEFum9bv4D0
eGlC0zWX00iPiyg4AFG0BlE0L3njXFEUTX6yMqmR0ZoPx1pi2IZwvI0sN1XFKK4s17haCS3t
8/HtS2NKry8WFPZi29XaesJaI4GtponUgKK48ijHJqOnhCaKxp8XGoqkKAoNRNwBvq5ajJgo
6irFHPgl4GLy974UQr3dQ+NmqMvuZPUtxiNuYvDPRqzq3fhMlJ33PV7w5TrSqPG2NmcG9yOz
9Ay9yOJ3ZJr7hII1L6WYC8Xn+Xqrcz2tkaNza/vFP/vkMqplpp1PlIThRT/ySJ53PqkdrbtR
fELomxfN8WqyRHtGazWZ4gNEEb1HtssN4Yesfo89bD3xxDqxLxn9G/Xfc9sFLmg7WHyB7t2O
XUB5Yz1NUfRkxRqAKNpYUVQKA/KLqUQRHeFGL5vN49dHhXmiKHKFdj2aLXrSnYo5j0yvgn8v
+mItv8uKwY4jjRV3kDU+H9++S2ZhekRxDHyWjEol6W2nRksbOUOxpKO3dU2krExovxZlGupP
cNxURZFwmLbTO4jLPJEiMwr3ulUd6+/I9BUtikIIdTEKZpHbt9TbPOj8itJtE2Mvym/8PrcK
tYx0meKI/kxm++8rb+xtuoxHKiftdnTcQ48ejNy/3x99aJ++ttQpGO8bXvH+6Ko7oLdzJNuo
8cojh6XabP+kbLa5paecfD68fvGJDPOaez6GKGpr55cYfUbLKJPR34SlU9gs7yeKnNtPZPAh
0AaTt4GIe1XW23NFEd0nXf28nAb9Lft/6M0u6f1xSZRHUHUS0vpX9h/rQPMC8x1E4acLLtD9
27EL2Ds7FBmtn2YIPqLgAETROqLP0luKxHCsZg6yLZ9JX594RP3Orx+O6SjUkZMWH94PpIFC
zXZo+by6fdcs3MC2Vzk8j21fafPdvSzY20bRH9/uNySW5RorF0VqloJ4/Yd0oqhFKiszZgUz
ViCKgp+MV+wX7H/n99jIhJdrm5wnLxu2r5LaYt9tNQOoWg2O7aC95PEw8+Tk4/7+ifKFi/je
421LONyDzsfSw8b5rVE+s92dc5+yNhVF8faCr4eKTe/vibg/7N/X+zfqv/OkDtB2MPcCpWir
F7BForov8CACEEW5WT6jpqKAlKJo2bl9vYPKurevvA7bok6cWuWorFiYVjhRvdu3cJJaFDU/
Ie3cKm87xCDJ+yx7tS9aZu03ACCK8rB8VkpvKVp2eFnzgNl6nAE5QRQVCuP3dNXu5AnOCppP
kQtRBFG0JlGUuTvLJS8OuKEIDw2AKMqJKLphkoiai9YrivQCZatm3dtfJIqe8mSliqLeLt55
IYrWwZBkMEh96FWm7fZpksfboxuu9OJ2AEAUrdxSdBNGn613+SwrJDhab4oo6r2L+cuAh/Vs
s0vIYRMdEWZTyKRApC5RV0/kWCCKAETRYyyfcUtREaJoKS7am+Y34RxvFQp3L/Ggr5we9wGG
yuSiaHSAfgAAomjjHa155kZYigAAAIBcvMYQsv0pMTQCliJqKor5FH0lRZHQRBBFAAAAQAag
OVGdbnUFliJZ/Oy7RcXPvtkMVVSKEhVBFAEAAADZpzEv4V2+RVGYpwiWIgAAACAfUD9AVRQ5
XYgiKYrY6hlEEQAAAJAHQRTCijY4zbdnhEAUieWzGx58huUzAAAAIEeiSAGiKMponX75rIXs
yAAAAMBG0duFKEoOyeflYCGKAAAAgDzg1Ehl30tIuZr76LOwJGya5bMuRBEAAACwUZaifuWI
RaBBFNnzFDFVlMZSNEASWwAAAGCj7ETB3O3UIIqsoiis8wFHawAAACAHouhf5Xn1rOFozVfQ
IIoAAACAXOAm+gTn3tGaxZ4lWIqeGaJI9MT3EEUAAADARtIiDynz8X2SKPo6C47WpZJWEBai
CAAAAMgsdPXM+W0LosiS0bo4J3kjRBEAAACQMXxv+6JWgSiyiCK+fFaEKAIAAACyzx3Naf0X
j2wXIIpslqLiDUQRAAAAkAcaIot1HaIooSAsRBEAAACQdVh6IgVLXH7ORRHP3gifIgAAACAX
9HbJi3LSH3MefcazFAU/IYoAAACAzDP0SGJAPkLyqav1DSxFAAAAQPZxuuSSJKWzhijiNT5K
N7AUAQAAAFnH9w6HZE4199z7FIWVPiCKAAAAgKyLojeFRkLgGUTRH7iXNf1piCKqiZ4llj6D
KAIAAAA2DychbWMaURSpoq+V4mc2UbQhqojpIVb/DKIIAAAAyL6tyNsuQxTNKwhbtOUpgigC
AAAAskaD1Hd2E1fQ8i6KiqUbtn4GUQQAAABknhap+iShyEful8948BksRQAAAEAucGkya4ii
BJ+iYonZiiCKAAAAgOzSIMyZyGmxEh/svzVjGS3ny2c3RW4sgigCAAAAskyLDF4G/+xQTVQJ
/jPumxmLcr98Fi6gQRQBAAAA2bYVkcrfr8bMUvTvv3rE4m6dc0uR8LSGKAIAAACyTa9PFAYH
BYgiW54iiCIAAAAg+zgfI11kjcrPfZ4iltIa0WdgHu6c6oEAAAAyQ94tRSx347KWom+/hSjK
56tF7adyYTgvMzwAAIC8iSKj+NmzZ1kIyYcoAotU0Skhg63xuw4LWuj8cIUuAQCALzIah++n
15UqRNFaLEXL5ymCKMoxQ9U9j1ROSjVYjgBInLnO0QdgLfgeD6Pf2TXD6SGKViCKborLh+RD
FOUVNWJh9sd//OmM/mcP/QKySrPdfMjX77xZx6uclNO+gXTYC8ftq/RHMIEoy6ze7o5CS1Hn
M0TRmsp8YPkMzH8Ka1QEvXg+uTg+k+rIaihymoLyRp/yuo+/d/BFT29y2/5ik6Zzy8+9d9rp
2GVDr835UofodMlo/z05TH0LNMhR8NP1Ur43+K/ps+X3SeoAB3/04fr10bosFcEr0nrNxM7x
WafTmW7wENJ8++7zwx6S4x+eW3/f1kh4SJI0fe/dfowtiCJdFBW5VxFEEZg/yJMqH6mDp+rj
mUfI7Ef7iD1+T41JwYjWuSSzE/OBpd5JpNJhzDM3/WafDtyOJ7ZP9xBQNQ9VbL9jjN3866Rz
yBvcQ6pqzomdabt93JkmCJdwKzPLN0/5NkfPxfZnfF9mj9qCYe/YhpWt7uzGdxNs35P9zneg
bb8VW+a0xtw6x+z8PGPSd049bgzsyAtEZrG5qUu7T3BJjJugxf/usZ+XlgPY6YfZURok8foH
oiiQ4VNzvGfnL6+Zf8b2JvvHv+T9xy/trMr1fOWe6oDFFQRHsTtIqUl2dlm3NNKKGhbtSbPs
pXUZYc+qS6rrGg98L7HE+ipwvcGHYLp/tbkD5uSt97DevzhNuHmCF1OP7IUvnuM+SdjNzq9J
t16zG4yK/N31wv51OFpTSQRRBObbNehsqQgMp5b8DuyKp9k59myjejDRV6MX8iRR5HuJg+5Q
HohzbU66wUx0MG/oDqv/8O+3bGN7rx+qheHrrSUOwrSqRXNwa6+cOO9ul5Pkp/KXRof8n73z
6W0buQJ4sQfqUqC39BCKgASosExTYiBK1smQABk2IFg2lIOQFJJ8y8JBgQQ57MWLGOscgzo5
by5Bt4DXKLCbXnrpqbd8gUWB/Qj9EuX84wzF995QlB2gNedkSxQ5M5x585v3b1avi++vPxo+
z9TCDkVN2T53ACz68e11pVP/6PtrxhhurwrVSKSD80Qlh6PVCsS3XPaYCiRsLU92L0dYN4Yt
pIMqU/OtekD3NMTvxZ3d7fUXp0De1CtqIZZQ5PX9or/f78QDYVJYmxh1edPvLpOG52zdnRrn
Liv+BfeRjTvqBNfw5kSHt4dTqzm1ohKKNkzeWELRPS3Ndrx1Dg1ECFu42JIrQoqPoGVLSI4u
JlJQodtsGwtpdu5HGpm2oZukVjpIcoXa6OGhW3W8AwyRFZxVccGE0EBwY3zjfvgzBEW6ze6H
TC2irT3zYh9goq6+NlvBFCcGgGhNUVGGjmX3q0Wz2V65gce/H7Z9AYzNLNVV3Pnu9fVbp9a7
2T2tImpL1Y2THWR0qVFYAIqa7W5mJK+7oG2oSHGno/0N9CRhq3Eb6zLZR3dpP4v+D2I47hKK
jFs32/BjBrgANaEI/Pn9hqIHCRWVUFQWSsiOK+7AkFRRH5f6xlICrkipDyMYiprPF6hMScnj
7Kqv7xiA2hwbFDXbhjSJMMGUB4oIJmILO9yBwXhbV9Dbz+7IGSgltYagKNWiMGu8M9qULP/r
QJGboqJVNX3kpzUJq2bCC1E972Ameumb1QbMR87khBn3Dq523yygYwjiASSb0JzVK7cPRYmW
srjGYmNmCDaKYkjI9O5iIaK7tJ+5R61Jr/e6hCIain6tZua7nvf481NK2KCEooym6E/Mq+hh
zozWJRTd13LRcmq/1Zqi5vN/twlNjp7NkQ2KPFhse91DdKejFhwBBJ6PQQHi92CDolSVw1a3
MBRRTOS++BoxDwUNQ702qENQtKN9VQAoSjtjNf+Vbb8JPbX62lC0QkXDdP0G9TQUhft2wQyp
COUF0xFQg2ZbXOS+wEfX7UBRYRtRvKRt4kmfI4U887it0uspboLcvNyp/Ww4qvVKKLJCEZ/q
XgMWI9CGB5h7XglFiKP1wxKKymIrnw2JuFUNCE3OGlCUXbTFJQ18r52GosyiK1dlxHhmhaJm
mvYwVZEdiigmqoRnWJonJs0UB4RnVRCKdNMAKFpL1gLQZ4cibsHDfJevd9JrJvyC0fU6eTvq
Au2BlrqK12vggyqMFSgC+nn4Zta/2at4/WO4Dv4KHaXLYb+ftP6odwz3w7RNunfPZ33Ujx8w
Oqa7f370cspzZCDWXTWGKSN3ZfgSNa/0evw79+ikkC4s/v2J+H3vJdTE+e7uqboQ7L4cGron
R7PJTxgTHhnBVTBZDd+8FaECcAfOk9AuqP7uG9FBzZmDBijOj0ZOrXcFfnuoYiXCmXOQDb/k
1a/zThg4tdc2KAqhIDcmF6Jc7npQOq3Sp4gffWZA0VcoFP1BM1EJRfe5xMxC7EINKAIlZ469
e0wDuLtRGorc1dDT91W1nsNCwQJFK05KGPtZoYhkImZkgnmDqbMjw/QEQlEl4SYQiqZ72b8Q
GgGWnxxQRFJRPkUCMnz0gEkuAP3SImZB9EAllKy/GoXQEPTYWjac/RPZSydDIEKoWkcIYgaq
cHZSHW4f7OFqhC6rAdaHAQUF7hsWgPf0qnM5QjpZAyV6n4sR8YI+8cEdv2TKBhjhs/iTfP4Q
dqPXgVWf2uPqmvdWGs5xp4Plc/ac5YIHoLLIRGiMuIOD4w4LwkKgSGQgwQ9MfXLBGxAd9FpI
dOf5fueZ03gCBHjK+4ufwUbSJ4csci2emr+c91rErpLYETH9uYcHsViUfLmgSFNRBop+T0LR
7/4Hos+4S1EJRWXJX8JvdwhnSC2K3QialzmgiDmmoK7Iaplr/rBDrrqI04MFigIuj3ypD8Oo
wApFNBMx92LkDgHjTS30YChiCzMuFxM3HsiLOS0qAT1KHiiyU1FBKNI/Sy4AVUXMrejyrJoL
ijLdLLsgbOGBOwFLS7CAmxBt7T5O3MgRrJKOzvRe3cXUkLSiiKNsndLW5ICiVY0ooKnxal+f
UHMUd1hS93YRbWgiAUJklrhHi2UP08HpjvXg2w/Gogcx66faCeCqlLPTznz70SmabE3c4boK
x4MIFuSiJWyBWR3ki8Oaz6EwfsbPe6DrVhJg+S36dpm6HNW3lVBEO1o/EB5FpqN1CUVlycEs
+EYkFsWnPAvG0QLULtuhSOAO5sopJQq6pKiHIDPfS5J8xOVZpipCHjmTK7HyYfoqCxQFNBMw
3EK6IeCP5w9lmhAEilQKHBiKnHcyiQkg9YMVKAI6IAcUcSpq3D4U6ZU2uQCO5ApbWA6gwAZF
yVKNLYoxFA1vdk+ZKgIAP/dv1eSnsCopYSV0WRJzxx2gQ7Rhg6IdqgXxfkLmmdoAitwXpKt4
eI7b5mxQlAzCCG3n9HFtcowPnq6lDSQUqZ0QCgff7FhMeMmX0DCXFC+e4jk4/OM9LKFoBw7P
ZeKJWQaJF8DGKLGhqwnT4surP5ZQBJ59JrRFJRSVJW8RCghU4sXQ8j2fcwsH9JqwQ5HQKnuI
SI+FzpInBqSgKEBV/56z1B4HIwyKeNmqonRDQ1Fw9ncy8IdTJcxbLBrEE5Uf1HEoktCHQFFy
Ql3dssEvDEX46/8yUGTG5ZNQlH1Q4kdFQBGqSJROUiLmPTyvU1WgliUyLCyyuNTYoegWNEUe
/QIjPyK8Ci1QJGcPquoIR/tUMvPktRDaahyKkl4hBVFxKJIiQ1QS1HPKRwd+pSgUjdmmBx8m
QYN6xWp4PJnOnIN6CUWAo/WDUlNUlrWKtIQHqCZHTdYhuJ5ZoYi5LOGrYWI0oCJ0iIy7FvOZ
gqJlvzgUvT2rko0UmjD4FkyeCZchrlzHoEheg0LRkieVvkMoOqSjq24PirTfeaoXXiwcjAi6
5ijMripJm+xQhOoSuIEVSgKVZgFUm+qdf8TPWbGmR/oSUCQnITGE8YB/KxTJYYdRAR44tdK/
aLQHBUX6pQZEWoG8UNQF2tY16oZYGePJ/wtuYTehCDefof4DSiog2GqMajgH7b3XFGUyWpdQ
VBaLSObK295bVJNj5iny14ciZWpHFtYcPkW48SwnFLEEiG5U0HzGn426RFVUHgK4H/gmL2Jd
G8DqdyXxuFsRDEXS6uM+y2E+K+ZTVAksEecFoSjI6VNUGfjYO5ZNkqMQeA1WPYOGIlwdxrJh
YYoO/SsCqmoOuiJTvJILirTpEL8RDUW170d0HWKewZHLCkViEqITOKCTPOkHo8OTgiI9NG8D
inxAke2noAiz4RGNzAdFcvJnDzkL+0IPPnMsVIgkyS3NZ5yLSvNZWfIW5obIC7IRMYUlZAKz
QpHM/4epntPRZ2CiDUPi/LizHhQxKeSKuHL3fXFHa/LgK+lKAQIXRyHmAyyyIuJQxB8AQ1HS
pkHdQivAwpYLioKJJWa6IBTpbjWiz4Ar2UEcmDYw5qBxlbfM7Ry1sm5BtwJFTE0ZoSuyDYro
BEhkJH0eKNJ5irqVYlDE4re6tKKIiBGzQxEfdx72BIv5cEMouk1NEZj8NRcUIcJtFYrInCZc
trn/yBrwxkJAz+H+N0cluHe7547WLEVRaT4ryzolshgXzIUWivCxQZHeQMK2qxUoCqCDOvSy
9mFNKFpRiEe0VwSlJ0DDc1QDwXvw5jAtyKFfoaGIyduHa+cpSmMQ8ArzQFFgPSm1IBTpp6sL
wNHiyfNWESZgR6wvHGc56Z2cEsyzCRSF53XUI8Y0n2HZmHyybyzpsG1QlERnEY+x+hSRR20E
PvWO7VDEFnvCz5iGolszn0Ub+xQBnRTTjmE+c7cRKTD4jpghCRSBtUhDkXCqTtUg+QTWc5dQ
ZIs+k25FJRSVJeeq+sMOTTebQpFO3gGvDgqKPv+laqhd0g9IZn1WRW+BorQYQpeOHFAEO8NU
dBZvsCME43nKH4iCovgB76wZrX9CFSXi9o3K+lAUmMnfYCwrCkXNkQz1lxeAbmkq1UDk5DqB
L/Po3I7WhIXoeT0i/WRpRRs5A+L3WhtXN4Ei+VopM5QVikg1E9di8okIJf/LAUXxLMQ9uW1H
iGhdH27Aw6EoqRUZK5ALisAnRKajNZb3wTurEq1MoAj0rkrLjWxcv07yD0upEoqsyRsfPijz
FJUlfzESjsGulmnzWa2+JhSZG0hQ2ZJYJz6L/xpZmakfmpW8tmM+Ut+jwdF5zj5DdvzahRXa
yKnAEQkVFBTBcelpk1n4mloNIaFuhyKTidL/bA5FFXfgLG9edTrT1tbp/BIMj0lO91Cb8vWg
SDUazcmsBy0OBu72DZ4lRlGVLSTd/RH72hG+8k+Pi0GROKaXNNLxYdCh1nxCVSTTZrKhAp2d
pTNqo7eIX89/Gnj/OQfH5OBRIfm4q7cPHFa8MqjJo+GEosZ6jkoDqp0Rko8EarCDjImc4IGC
IhBr0wI0OwGNbVEEp7MofYosmqIHpaN1WfIXMyoFntbpYz6yc84CRSbGQEy18tQs1pi+JsC6
YIOiykB/hpzzkBOKELcivbWDbhI0UhUjoQh8QPqIXUCdYRhVAjA8zQJFqbyUAZoisyAUxWV+
zd34a73ezSvoIn26h+fkOmwm82xf0BcKRe9ejEnosGkzIhX5hlp3mD5sOMJuMZ31+/1J720L
SyhugSKRLADLGJCAC3Iunbw/R4/3VVhNpqj/O1gCcHXftOXUxs98rP+2yOOSYyh8+sqiKkIS
f4f9MacVd/vg58c+2n2Ww0SiRx+nqOecchgCqcprsSgEOnljEkTxax2hPla9YRs5ZadBaPzM
twqmNTHmHoyt9z0k/6HM3/ibFSb6ijGRgiLJRCUUlSWtegH3GXoius+c9Y/5MJdxMHrNnMjx
E1ZvZhrPXED0XpgfgcuWit4imCgfFDHJv0es6VDzZJiyclgJSCiC7AeRIzP3sQIq7w9bY9VQ
0IvTN//pZteDpb6/46BZoW1QZHEmxqkp2IeVgvgoyX43uboc7UfOsncCK3rcweS4cz2q4QOV
PoljcPCx0xngp5957KSO2ti6AwGzQ14slCYFhzavf3L51zq5uXH6iGcYO2aCAUnkTBaQ9WZ3
+5E81CtyEF1x3Lh+qzb+L3tX89pGksVhF0rLsLBhD7mkJZDAGVsetdt0u6XLGjXI2CAkC+lg
ZNGObl5mCdj4oIsHCaKjib3X9bImh7DZEMgml7nNIX/A/AP7z2xVf1Z3vSq1/DH+0PsdErm7
uurVq+p6v66qV88i0m6geLconJ7unbN1IXl6ctoxRz1pTOHiwbp//Cu8vkrZ0jDnNraVDpQV
aWg5VsNG8WO1dSCJfObsFTvDQ9Ic9YodIEWlFtS9Qra+fAKzqJP9/5aLfzwFI7cZ3B5tRwjX
ovH7CcABNIq13W/pt3FO0UspKfrd45wpehHEhEVShMiA7hkdj8Moj44fhCmf+silg8ll4BH6
qiPsOND+5yVQnFbL2dyasD5k2FQCcmmHPqeiVaaDWTs8m1FPD8qGfcC+Qf0IAv4fbbskDmrt
c9N9s9eWjJr9D2fsECD7XLivtViZpO0F1DRsFrWzPU4mOKAPliJGR9r8sOk94cWI1E6iDF5x
AmotVvLlsXzLFLMEPJZAk1P7WK1e7Qlna2pTT6PFS+90zl7N+6M2Tg7XSUBmeeRlU7Q7Ev3R
WkSlwAp23R4hHTMH6nc7VMgkaM0S2E9Vvaw7/Tik1h0+KsibSuu3bHtXwesKyqN0cs6Vfax6
XOv+9SRDlPlZJygqNsWYA3XWTk8WkHbEIqGesABuNcima+x2cLBmdxd2tVh2eyzerdbqyOSf
GcpYc6tT+WljTEiparpByzm2rHh3an8czii/+1mlwa5td+T3tVG1Ry7g7sWFcy4T2QqeO60R
kFGtHNVSSAzAWp1dCsnaoZegmRpBY3yGe8Bik6IXr4OZIiRFiCzQPFfPaNxlGEApEslSBg96
ih/MU5hxW0jQT94dgI/n+T9AKcJI3koZZbULSuXLSiSQ6i91RSwmrb1+Hm6iGY2QM92hKW0c
6VOA/geKXEyZ2eqrS4nCnJckT6aqKuunZv5anbwwY59vTr5yctuw1JJYM9zU7gkzD1rK3hIb
j3aolG+mj2NYa9PjGQHo7gULTor8LUU4U4RAIBCZSdGt2X1Z/g023XowgxM8dVJUyUJPHx0p
yvj9iaToPg9vfMFvtEZShJiFUR51gFhoUjQj4u+N4YXfa+/Omkh6kKRodEjIxclNG4FWbUd/
mKQvC8w6WR3cpAO4a8V39zTO4kxRKiAskiLETIuwijpAPFE4zPOr9sssOnLHpCgbLPLqhvMR
d0KKgj1JN2SmRLXT+cH3oimLQn+DLtJly8djJEX3tnz2GkkRYvYQFePeJnYRiIcAVXC93/K1
1Ivjp6rirnqjOwJJ0R0GhE0e3piZFBERS9ifkBQhEE8eqmMjEQgkRY+YFHlHWrN/kBQhMgOX
zxALT4pwsEMgKXqq5xRdkxRh31lY4EZrxILDOUEdIJAUPc2ZIn/5DL3PEAgEAoFAUrTYM0X+
8hmSIgQCgUAgkBQtNinyDrR+DrjkP+NI0XcpUvT994tGilhUa2nIawQCgUAgFokURazoZciK
fh+yomcwK/rTo2BF/sGNUJgPJEUCKbJwbyUCgUAgkBQ9XVLk7bKGwnwgKeKhlbfPr3T0uUIg
EIg7GWMHqAMkRU9ipiiK3Wjb51UowiOXwAYP6TTsFErKuzZ/9P1Kwz+Rf8LlPUkfju+wUMCj
KRSzOxl50hBLmIT3nepJ3gCq4J1cGp1d6oJRh7vSChrpCmv/SV6Y8I9MpGEyc/1RtXoymKl8
UX5ev53qUBrTunrlh5XW/p6fUcIYuH28yf1VkmoIqhgfWrQvhPkMxPfDSQe5HG/mQP2lw4yG
yfN8/+nGaeL74ZOlKJMgfnWi9mJM6276jiGkVMQ+DVN8znnxacWQ20HfC57s0yayO3DodW1U
Dcs5Rs9BxIPDypH+IE7DRCAp8ieKngMbreeYKZqQ9aFnrFoHxQugYzuUuQSm7ZCIZ55RQ9Eg
bX/E1gn9lTQPprmjk2bwvNsgibhEheBwJM3s6sVdz1oWhKMFjTElSudUPH17U7S5dUK2w4Dh
pvmVBNmE1oSJTC+F9+uk2EzG3qYlk1/9WOETnYBRkzQqd6CBSpyZ/zSr0UaiQuvvTP7Rlh7J
5wmzvStSz25jnxIWt7e9K9aPqTwKae6ukVedlPwsRaBfVhZE67Qe2T+vvtmj+Rs/pkhR2ROJ
amF5aKZrwwRwy6QY1ahf3gaDs2vml7VEvWNrPqVKpaV7Yo2ogGT7c0JEqv6409HylzeTGdP7
y0Ecda+xlyMBNLdHczsfeMXQn/uMEmouLaN4bkbqHg7CWvgN36dlFJuDqPZMufQulR7gpKzv
0gIHifb2s5TUALAXn/I7p/vV6pUuNC/LfmwGL9n2OZOkpe8LeRkNWrew993ke9z5Jx7aibgj
WrSGpAhJ0UPxPvN88m+yfGboUXe2oHNeqeVYio0+dBCscRoQITAqcmKHs5VMMel8XQ0SBUJY
l+llLuN0bzUQFDiJmZcOqgC9z+UHxYEM9xpVlt/oknNutaOSrP71M57EWQJrTJSfFDYSqtj0
f+wA6kvXb0mVgv4EdpM7a8FFp7xVWRZI0Uae6wQVoYL8OXeRHuYYExntijKwwqrCvQMITa3S
38pa9Cz3M+5iXHKuk3NtGPY6aTRvscFEBc0I67ny6dAnotqhUEpU+YIe6kWrr6d4bSHSX+H6
X+Pu9KxGyMIuIDs2VapTRbONpAhJ0VOfKQpc8l88vx1SxJkWiWGwQFL00w9ZSZFWTqUo+IWH
5gkwu7F8gEFKSlchalJU0OWkiJXclSxOqEjRv/VYgJVPX+cnRRwREDnBfKSI6kpUEcdqxJBP
od5DJWvlDVG+mE9sQdrpfzirHZDiXq12PASHy4g2VtY3cw+LFC3l7pwUxdZCKCasvMF/CFhJ
6k+bdDV3Q1LkNMilfXy+uLs+CkyHFfS0QFL0SNFns+AmkqJspOi1P1t0O6QoOa0CGQZj6/qk
yDtIOR1iIuAboXEuiK9WNA/FSwrPY/14qCRFRvutnBSlF5aykqJ35fhaZdWamxQZ+oaEIVyD
FEGBLvnJOUGDYc2iGwUFqQIninb0Ymfgj4l9tjoJWaRAqAJIue+TFAXrSXdKiv5WkjZvcCFp
UPgO4RUYPXRdUmScNhfcpjBPiw+NfTTbSIoeJbzhK7P7NHqf+TutfytS5G0bFazeeiZS9MFb
p0nv1K5s8KTIEts9ZivQ+hkn3cr7HyoqUrSyVyrISVFBESFSRYponqHVojZ2blKUNJQFSP75
SFFaRUmlWWlS9HM+2QlWvuWkU0UAI2YsbDMeE50GZLcr/sKNoS/lHhgpCmp/t8tneWnzBpVP
1jpFnay4Ra9LiizlYHpYC3DZ2Xy6ZsWt4uLZ9eBtV/QmGbUqQ/43JkXGHu2bbOT5B+ukWwvZ
iitH1GzutDNuCcQ9Rb5b/m0tn83c1QJOTsfrWwpS5FsgLR10iFKVmBRFc078SzHOKYxCLB1j
LipSpB0t5RSkSBUlVUmKYqUVtnJzk6KkROL65XykiMqSrmBSovRMXEhy405QzUmniuolgO/4
JjscE8Hw4/5Wp5U1cBf7fZKiuNg7JEXfeIGTlNWvvFZOXk1Kk4kU9d98HMqtCv2q6E4B77oA
TtC+hg6+6IGTnNz3zZC5nnLoNth+e9ALoHqSD7JgjoLTXSCJSTPYq7V34TZqBQ6BnqBiLY3Q
pdGAa+DXzxuE6rVfwCImCg3QXL/luT8617La7rTWPoY5adKBF06k5XNur7Yv7wNa/YCQ9uwC
xOz7b/YIufC9Iv/wVu8Aazi0bcZ0AHhRr0ElTCK9GWAP6Qbl+o6cY0D28I3WvqbfU4cRploz
Jkze/7EUkXvwJHBLFvyF4+49hhU35bTSBb1UDcXjfoJSrt+q1ToD2dvlZdk9q8m6OMXoyv6c
dfkbXfI9YnRLe4oKZOZWZgiVTKSI/2RO0AI2E+STIsZbVF+8SspWX8opSRFjPXJSZKhouJIU
xTMp9It8blKUktgSt53MuadoSdl6skaAVibTvApYYIzKiz4UCwQQkSZb/1d5I7eIpEiVnV/5
9Ed2cv0sw/KZ1ivaZ/IGrKwa74emeVhszpCqAvsZMJ/EC9/5dB18Scz6+jvPh29ZZpUrhBqs
rg4pyu8wzLGQGY0KOAL97O5Ru2HoWzAjtMiyZy9Mi1wAhsNdC3z8qITQfVq2LzglDhIFm1+3
aP2/rJGm+LzJvZT0TUkn6HvTK+xAhviXgDrzTNyRnKTm+SiavpfkFqBh54iQX4/2h+ZEl82j
GJ7nbvcUHF5pC2yZ7tqGSZkr1EJcr4U2FWrW8qZ2eLm2PN2k/LoJKK+lk1Wv1sZpU+RUGnMw
ZdXqv9UJSCkroVQWtPvA36e40iDNgEFt5BNkvMiIRp/2L085tA23zJRqhp6HtOx7g36VhErX
aDqgBzHf1l0FFy6sFihP0w6LkPpZo7IsLVYPpwx3QEN/1WkdZHWUWPQ9RS+8xbOYFMWc6Fkq
9Nl3L//Mk6K/APZwR4c8ujOQoo1cBlJUkI3ak/ZunpEirft+V1FKv1ccq0b01ZySFHnvs4wU
Ob1t1dKBmhQZesz65iVF6QXLCvD8HN5nlqAicO/8nKQoqGB9CRhPAxv2f/bOnbWRLAvAWQmW
jScYlwpkENuyVLKMSrKSMRJIWGCkbqRAyI0fmZeBhjETOBwz3aHZdji0g0522ZlmoWc62WTY
YH7AhMv+l032vutW1Tnnll7d7rUr8aOkqnvvuY/vnnseZmEHVUUi9gKy3jwkKErLT1Y+ZUSU
koWlvcWgKJJohU2Z0Z2k2QAZx6aS2PNNAUMYitS5Km7IHMgqwO6jV6OWqbS/c3sOFVCOTuwF
RqKI1YUREPIAVb/G1z+gmq5QRA7ZAesfN5tlFG9pWhhTjrmRu9C5jCFz9658buDB2GrKj/W0
QPWYAPGeNb6lSPnLvPu0xPyxTVUQNCqUjgHKiABuYTVNYHte/SWkfUkoMh46+rtBUgT6T+Pe
nC6hOJzA3px+IPK59AhOP6EjvxWCrSsLpO4JMSDycy/EuaHoKw5Ff0olP/vD/4tNkfLJXw2K
SkL/d+OBYYpyyCKq0lDknXU6nVNU9997y257XqczfoYoCCd/fjurl55RpQsGBRKKpJoDhqKz
07N331K6ycpfawQU+crUmmMZBEVnHXPVNwNFKkwUpKFdBxTJWkGW6EZJZqDI3wEn5sgrYSsy
DUX28RE3WdoQFB0KHX5mG8+eIGNAkVDk3ckTAty9y1c6+tRmjz3+jg+8VkpkCVmEnvbZQ6BF
9iF/p1WgWxib+S1NkQOKsJAMDijSwkFmEmGKLgUUgJ1VvzZA2FVLNPRoKArqJBSFxDRHQlFH
PzZsQyWM5YkY3gQOKHBCkRYQkt9RPxeZC4Q1pVyNLa8AkJoHaOOrqiHziJhA0HOATwtFg8LG
oUiVHxZ/aJgU27noU3d6kn6EoqSmaEUoeiKDN06mHqmLwQ8Fynk0RRGqKniq++wEUZBLLWv/
7AgtXeVvNRKK1H30+Gw+6Xu4DR8NRWojJFyZPo2m6CgdKXrNUCRURV0oxFJeKAo9D1uRHVDE
dt9nz85FYMPTs/qmoEgcD528nKbc5wxwzlghirSmiAeTRE+oruTRyU4aikoycGaRgKLCSb90
VKQ0OSIADwFF8el2mYQizL0lnvOvl4IiU+4Iphoe50MKKIKPWN+T5dcSDQYXJBQFA1JT5FOh
LSMKin7VBnX/GC4DRfFjEerLDUWIylPfxqDoKFZRdLeJBoYVRfKVqmrIYiGmuW61sCQU6Wdu
BIr+tXEoMicpoPxEgQwLQV1Ez1g55/KHrikSLvlcXbSW4zNuctlaHIri7QUJRYjPu+wo2tCa
TFAWegOkdHq4olDUxQ8IIsc+2S46DEXSEllsoz7t8dmmoIhXCxRfCB2fVaG93t+RwJhOKOIm
FeIqDZ5v/vgsJQ/LjP9Cnw8Qx2e9Xcexf5SBou1s22dlMR/VS0LPSAjppI9CUQuvuU3VI8xz
3zHna18IFIpCT+qi2324AJXdI1npcI/yr+ntIrdlvVgHDSkoavxWpKDIv6BE190moKisnhuW
g2WgKD4yQRo6PxQFyI7EfewCn9skRxekKNJeGDEUVeESet9XC0tCUbBJKCLfvB4ouqpRghD/
NJKF3mAMzXOenz1qiqS2aD1QBJrJOkURu4zl8D6TqcwyXc645FPvgkoi/6e1GBgUadcyCooQ
5xujYMahSKJQ/NsCUJT+woqG1viktRoUNep7N2V4rssYWgMTN5/VQiSHihOKeGqOfZnW7SPY
FDUS1sD2CyUA0jZFgUcu65ihdfJLQAGH6OGvIqJZ5x0ORVV67pbqsNevTr3j4nJQFFQdUPRk
X12wJXbvm/ENAyfK3/pqdONhdn+iwbgumIKixmURtynyGHGSVoU0FBlV01JQFDcvcryWH4rg
YRytCkWy14OKopxQRI4MFxTp6p3sbA6KSuIIHHLwCrxjE4oAhyITtwCbQaW+Gdow8i1JHLE1
gkLVmSuXqfVD1xRxIHqxtTYogvb5TigK8JC9ABSlNPA6nnQqsjI2euDShdUCCUVmi0NBEXLw
Ix5bpaGIr6TSr2tll3zae2xxKMKOLBaDIigoZEJVpKdzsBGF/g9OQZILirCqbsTQOtFeqXAH
VRcUOWSRVtupyqfmwayQh3s16vjMn5aeUsdnbijKaVOEzgBlFxTRthC92S1PvjcioivOm81J
H+EWLlGxYhNQ1OM+4eTx2ZBQqUoeQKFISpCh4T2FohzKYhqKRMcF49nnhaLQwzuBC4r41NHm
IRk+bFBTJE7op8C+QELRyxm/hULRWfvy9dtZCad64XrYhaGIbUlOaShaLD/PA9cU8RBFwth6
TVAErWlOKApbhVxQJBO0J0+t9S5Z91ngtGfYOUIPl2TpGr8VSCiKT34cUIQM29hoCoEi/hIJ
TgtDUbLC2f3UylCUXJEq3y0FRbjnUpQI3sjKkp0X1HzL/fJr9x+KEl0oFRizlQOKsu5H+wcY
XajKJ+fxSuaUSN9Hvc+ESRsGRbGhjguKMK2iE4rC1aCIQ7OM2Ut/DgsQyCUqdMU4FFVEfCHa
+yzCayntjXAo4k/gn0GgyFN+FrCzSdy8mJnypz4+EyMEtrLPCUXB3jmx53RAUcF/2X59/lGO
z4DhrZ8gZEwfn7kGSo7js3SWn0coWvTiOT6ES/7W+qBoYU1RjAw5cp+l/RvinFvGFrNcmGNK
iggs3a9xQDUQim5jC0oKitgvT4qTVI+85ua18fkgAkXsvWcyztHiaT7sIgPNvzIUJanrp+0F
oajSL3FLRDwJynWc5sMf1gFLY7NaBx5osXbvNEU4FC2jKbKDjKfFZ9J82BNhZhCZ2wgUyVkb
hyKjyQ0chta4QYgDivQgKGOdS7dQ5X0BWZGEgBBD48psQEIBk2hIHeBFpf9cFgtOKCIsmlxQ
xEvGrc2D5QytYwGtaGgNPyD+b+9gSShiffAvA0oTraqGcDWPAocf5DuhiJj+1gxFQNSI+Al7
NQcUId5/jcsaIb+kobW/A61QrUcoWkBTpEJab63NpigrNhcUWVGoc0CRHauBzWRRts+2Usqk
yFr5wDQf1j9BKLLeSEIR39BG1dSAEBhfLTigyETnWRyKkmYrDj3dElCUqPNwsOjxmbIy6+Kv
8CczzzvlJiGlYyjOVGQxLQS19wuKkq/IBsakoQiYUy3lK2BFr/yirBtZSRgBIlAkG41DEbzm
VXbL2CZ0PZoiFREUFZ5pAr9bxtZsUe3KLhkICFlz+Kw1oLpP5I1rBTcUCc/peRGvIQFF7BHS
D3UZl3xXHKX8UARbD8Wv/am2JBTZMUSzajobiqAmklkLAuwRnwsUlbZdhtawgKK04WW29sbD
CHI1is8PglxJDB8NrYVT/hdr8z5bPM2HpXV2Q1HCjjX07uomhorOr1Uv/TGZI8skhAXnxGTp
yNxnLihife/fqalBfN6iPgyKzGhYHIqsagXA2dPqUBSfXvhd9MwbhaKGiJIbDOhh6J/sItGM
/W48jbBF10uHwrpnUOR3E3ftwJhyZSehCFS1mCW9mxGvqbzt/nZYS6koTJ+iNEX+lE3MiB4w
kIGOwNxzhUTwRtrQFd0WDRzCYzzJU3yc9LOtwzguMi54SFfWMwDCTLFEQ8Qf3EwypCaMt08l
mwbEnw5U/yegSPWO5aBIL4TY8WAOKJIaWkxQetoYDpY9PsP7gGoURTzg+Z0OUBR6tMv9KlBk
iH81KAKGmH4C731OTRHcQdS4p4I36uJDGxez5c6Z/eyhB2/c2nqxKhRd60kbibPCPXbR9p83
f6nLKDkyDH3pKBMuZ1g3cft4mHSrY/BFUp5En1x43rF0TYm8tAdcb3rMreBGdSh30qRuhXVn
ULeX+kxj1/s9vr8jg74nnr4rrWJkcVKTWmX38HzY0VC2P2LFf/ZtMfF6+XZ1RHFiHmaVL/7P
sJ6+LVdLfgBVmIN5GHj5TezAk771h/WJFm3Hyl5792z/x1kJlSOTnAw2Dyl6DnIMRmQ+v3rL
W0yGROztT4Vn/btE9ruhl4SiqqMiNlQNPa+lul7XU6kQmlaDs7X4Vt2/4D1TXh8y8x5f0eQQ
GJ4mQ4Q29C7BH8ngoX7223H2ikkfbOFGv9R+PZoBg4sV8EjXTBTaP+knwcnfuZ1oDz//AoYi
1m/H7Xo1KnWwdW3YYb1+0kHsydQL5qP6IbaTPzzHPWuazZ0jJYMq5oDT6wvRw1HQRK0CsUVn
S+sNZIsqLKz9yBXRGlzwApEOi9WsK36pUcqOn/vgPv3n2TahqRJm5vL8A2QCJxRxByRRv0NY
k/dBT6BRCQ0k1RV5VFCjSBEL7oJgjmF9j0wHjMXtVKHUG536YfsApgKjHzTjLHU/UqOg0qeh
CIJanqCDd75f1M9mMs2HmVF0OhBYmabLDWWiUU+Y9NlP7HxMQpHfxazMxaAewuuoLFClL2QX
Is/3Dl83r6Y5Q+c/Glp/YUORxUQair4kocj/MU4G+A5Ky1P5RpgIfl3DummpY1+nKbuRZDbD
dMrB+b5cIE8sf12/m528/Zfse0B2Gb+rXivyOL5Rf1hd7wK6f2vP1q+sNI+9acYp2B9ZCQCb
zZTjpaydWCz/W1D5AhM11JkkxTOu0aSZPv8mkNJT5kjU6SpfAd9X4tFVxK4r9t1332JzjX5L
+yl4t9NxJbkcZhpev9dK99TTbtlWOa4z3ePU65Qdxdy2Fjvk4mtgXK3kNWPL8+9FuIu+P8c6
rzD0vM4IOPGS91jqrznoja76niaqVx0opnuoE6Ro8W+DImL7Bf/VJSomPoDeY1l2HMWXVbzE
dYzemXrAjYf7XbMmaMK8NBsfqKHJJpkuzH2T2ZjJ7RDMAvSmYycFHR8UFrxkUtFb2aMgbJt2
5G4MztLORyDPbPXPopyOsgVwQxFbccdtLCKBqdYQzRLPF2VGB3g6UX/KT7hx5z7ZhlQG+gBX
JPX649ngh90nW9M7wD9QzFCiUeRclXmJbH9xMW5GE62oyT65EDXAER6PzzeZmYEtUKW7bWQZ
6YwzgyR+AnvqEOxhcQUuD9AJst3ug1sOI11WCDaCkO7bE/vJ45x9OwcUfQVB0ZcWFEFU9Bml
+eAnaC+WhaIVr+woDxY0Cnu8Hq/k/JEzwc/yl9/1nhQ/m/bo7Z/f6/I16ramdq+2qffMn3+m
HZprMW+b+rfvmkinbD5fSQbuD63U5XFFkZBNUXlarCqjSX3jo/+jvAOSr7v95026jfNeDxyK
VDrY5TVFq0JRNldO+AhFj9cqV7T5KSv6jKDovl+WxV3qj8fLUmZs279tAEw3SXVFUlHkUIIt
WpPNj/7/sXc2r20kWQBfWOg+btiDL241tEBgS26pjVqyLiskkJBB2AryIShBkW8edsnB5ODL
DBYkx7DxcdkshLAbdhIGhjnlMsxh/oA97G3ZP2H/ia3vr67qbuvLVlyPRFarv6qrq1796tWr
epu4x53Kw4aiXbxQ0Qs2JX/jUPRDoiZEfasIrSwh/gbU4h8tFK0sL8X6nho/zMr6mvk1QhGc
uICnj6XZMcbV4MMqbHkb6BJt5B4Wiu5w9hmagPbirqAo0oxiH1klZeV+QxFZXN3KKlSA5Ibz
XwtFG5c5c6NbD0IM2m6csXogdni7LGxF7d/IPSwU3WmYj10hIOymociKFStWrHzNZqh3b+xw
s4Wi7bEUYVORhSIrVqxYsbJ68a7aNhMsFG2RozUJf2ahyIoVK1asWLFQ9MChCAX6sFBkxYoV
K1asWCiyU/JfWEuRFStWrFixYuXBO1rvLreitRUrVqxYsWLFQtHXsk4Rkt8kmOiRKfQZgqI/
3A8o2u8FRfAx2PqJvHZ2hhUrVqxY2VooYlT0SE9Fv9sKKnpBkGh3q6DomK9sEsPgr7EYAXYq
z3TwTh5vkDeiXzUxsm9ynBg7JVsXc8gEBz/Df55NpDhoVqxYWViWDLHhndlFdy0UfQ1QBN2s
d5C5aHugyOvwhcBg9N8D9EF/CR0ZL0LHqawvLd2zUzHMrFfWxcjOsUaHV76n0bSmeaiDhdyJ
vi0qirL1bgQ+FFlCe85HP/1pVP+mcLx3Xj8uufO9exHQioWVLBp3XbbVeLwsFOzlLg+oy66E
ggST378RggKTH8mapyQkbPNauhlZA28uRulld+fXmvPgl0JY2s80yiz+7ZqefPleusC1cIPP
73n6yJVoT2QsBjRW9rHUF/mhH8hPo8Sirt64aQpX2n3NbzcynZb8Qt7C5Yrni49TLjg9arPP
xANewbJ8Bevb9Fw5YxPiL6cnvbINz7T5trBuEHZE2j4LRWmLN+7SdYq2AIqkyhfDqNqxGFo7
duSAsmuFojAYTnsCzcQavRDmCnDrO4f3cQQwDJpPyPONz547zuwyGVw06sH4y+ggJSTYfm3w
9qxaQRFUnSHFSMeYIRNQYzPREEfL88GdJgX0515IF2TCnr75mnToLu8CPLtIceOqE+AGegrO
v3lGD2JX8mJcfMGBvBR3azyCKsraf4mbwfAZB4Kqc8g4bXIBMwtevk+OAN+DIqtW/QIoq4dt
1NOo0ORRm2xnrwDAvQ/p/dqNagHpeHTL+AHAkTxNYSCSCXoyvs8Zim8Mnv8Le7M9eBz46bCt
rSGmKrJfo3UcpFy1uLLTkl+oflhtzfNTLgjSB/bhT42xGPzqwwfwuc7ynY0phiXj+Vkougv9
7BikJLSHqmS3hw/dUrRL1m/cGigS625URTpGVBux8tKjarCu5euBNi5J0QF9ra7Ldf/92vqS
matRf98C1WV2+qNkeYHhOdFDwkZ/8PioPj15Pmi7ntwIBENQOSs0P8QqC19VCDNFfLzQZBTz
zqqsCYANnb49IFA0eHv0JQ8UeRuKEe87xgHQiEXVVg8SDIQ+4xPw6BUxd4v4QP6bHHBcOlwN
vBlK7X9FTYNYOWA8J2zVBDcr0eRVOO6jLbQP3LKk3CDmL9Url1QrKE+TGu05EmiPBJSL9eVj
i6DIWJVB+sA+/JkCRUKmpF1txdbOJWO/LwZF3t9vTWKTVwIzdz8+6LAwXn1aBiVkyM1AoI/k
9AVrEKgcDdFM1Knm6KQ/bCjaxbJFjta+WHVj2KeMpY5lmGh31mdMQO09Vwbq4NGt7h/mU0n5
7E63tvj3gqeQHWCVmQkPAZkDtXGg9Rwx60ZFjIeIdWmMkqVCYcx+lJgvNrZCnmDn88qDdpql
6Lz+fQ4oir5t9hr5NDls75VtIIOi2i2r8KIo3H29UCSRpBKNVoYIOValSD0EVsQ0MPwBd/3H
QQKKyGt18bhwKhQJPyXeiXDH6PRAhwLEGlVyU6DIO7k04e24Scewj1vXidOavxi+4K3vVz98
ZsZwPHJnGAhEw2ddmJruyxxPTeyTp23N21zM6LCUalkQikAlO/38MqeK9q5g302kRK98+MCD
5SmdokT1UXVOt5adYw/eUoT9rLcFiiTGiL5rkw9XNh6xOvQM94+7L9cCRthoRU1XOocimJ5K
zrKd5zjfWQcUdRzGH3J/EWJeF0CIxDTdmsSlqA5OjgoatQih0UNkJF0Atb/G5+PtrR54+PCZ
O8F/uimtGmAEfIIp1xvCk1SUbSQs4dh4xaFINu6tGYp8oSlQnD/EXWreitciu6Q0xGw3Ii0V
ihiKwTxMhSL50ETDR58yGV6cW0X8vpsGRVZ0BUs0p8bLOApAOlmKLxYcPqO17Cb7nXef4GOl
ZFoqilUn2or6YuUc0vbdLRSpsc+2CIqgHmB+up0i/aDGRFhGYJmYFEg9nz0+GZ6Ac9aiZ2Uo
irVKwc9bZ9XT959Qv2Teu/ar64CiWLZ4iFVsXp0F16q6FQ8RISpR27wzp4V94GWAGDOKuVLc
SP29C5aYTCjyvhTIn5Rnq6AxQINMezw7IRDI23Bc0GOPDktTSVY2JXdjUCRwiEoW8vEN9d02
XNmCI6WBG6DQ2JoKRczTDeZhOhSxVIQNcwb4Wp87YmuiAyEWim5TcfkQp79UvvmSJ8rmoAje
9+l53oR7V2VVl3vle74ei7fmKbIZUCSNUOMsz3zNDx6KdvAI2hZBkWmQHeybDQthaXKCB+1h
MxZcnt1sBooM9BPmVRXKoIgwXeiywB6wcSxAUefpn6vi8M7CdnMx5apfUB3dV8o+0WlEdBDX
eGriGTUCFHlq71Su0f7eX1gTr4ci71Oz2SbzlkbdpjATC/MW9PoGKMwmOPVm1MVb3w40uN3n
vbJddGWriRM0YQlj2dZwNwdFAt14fzswQ22ccKnhhoRKMg3cropOVKGI0Q8eR02DIvpNawYk
Kdx/UtSa/9GThSXXQtFtjTslzkJLeiXGYuHfIBRBpR2UbqGsEqm8QyqKhA6re9GqGDPW8Gp8
aVLu6cGCby4disAv8u29TEazliI0+WznK4Ai1MjNWq3ntNODojPHmxk+MxklO7k11aesOtGt
7RV8RxzfOR2Na8taj9WORHKEI2GXj3WmhtQBQKaxpewAkKe4XPnwCcmhFIrq+d8d9LGYvWuC
AkD1rGrfkcvL7A13mnFK6jYeMeszfPifOHwmu/evH4p4Rqv0LI6fJZCEOxVR92wpDRxW0V4V
ipgZApoxM6CIJDuumMtYp6Jv52Aa+FNpoci7OjJ1uKdoySpsd6TfEqclv9BePNpCf8m53SPp
VnNhSYHX6rIL0yN2sIfvjj7JePoJXy4BrTfwFq5s0B7Tfo7XQetTFPC3/kWrdf1X8EOp+6RF
XKNwYuGxeGEuNGlgSpOKXx4piMs5FKVMbFgxFF0V1NOCYic3FYEW3088p5mKfHna1WoG2iZ6
a7EBSr3Xo/r0zHBrPP5JZcG+QCYU3X69F+tTtLuzTY7W82pwbaqWZ63Hz2CP0ztpPaWl4HiN
szd87GhdcU0ORaCq/LAyHNsHTORKUARv7y/7eHFmBiWqux6K0gYK6SVkhxPfqSShiDWKGIrm
1ZbTz5mH3Rqd+96hLX9UnVUbacb7hmT3UbZhU4FNcUCxDMvBEJYnfRu0bijidJNYT0acrNRI
KkSyj44iSmlguzGTqFBE7VPINpgBRfhrgtjodcz7kKlImFGntxRNrkyq3ZuekAyeTC/Ut8BO
S37BxP2qh7bgJJ7BS3K93uCco5WH1k3A25O5cyMt8+JBozRZA2HSgTuvTnrsTU7gqR/w6lI/
Vft1tw7XQPDqc5pp3D0Pjl760P0wxNYf8tImIHn42OkZvBNiqXFt8LbuKlCUMQNjkrGeVxj8
XG5kTvZIu0o+KEpOPYVaLDRac2U5Bl0UTe/TGNEgkpbW4ib3ZeT482UhqT/SRy+NxCp0Nxf2
CMuEouQAmoWibEuRYUXr38pQ9Pv7GOZDU0Yqqr11besUIdsIrqSxQSNE1yu7G12TghEKMlH5
Sy6FDZqkzBlcilHEnRc1wzOpShHo7xGcECqvTwDqr+jZTKCIMgSZ0N92lWPShhMartJYh87P
abY0qtToI6rbbOiQqax9fLmECls3FHG6iUvmnmDSzMeG3SgvyWmgbanfcHVQRNowxLJZUAT3
q9PxRbUsrySgWLoE0jMNn5lbHcm0VTKdlvwibomLHijWXcESF/V1iZeJVOxDCG/14wGxi7Ay
JKIMvCVCIRmK5JJIno16X4nDZ4k6KqPb84w67n1pw/ob/ZpVw2bDwjJQFCYNIijX8lGRD822
uvHZzcV58j4V0X9X0gaZljrfgKy8KO4vbPLPhqLEANqqoYgHPyNU9EhPRVtkKUL/loOiCVkF
4e6dAVTtkD074bgaDHXfscWB+uzM2Z6ox0wXYfD4Va/h3sKd+t5BUZS9bkVaHwicDjNjUkif
1ACa0Xegq/bGUaHIV32KCqyhhVCEh+TCfLkr+jeRNg6qmrQIKj61hFDfGWEblKQ2LBGHZK46
2C5SS1EyS9YNRYxuEi5Fgs7TNBgsU+KKLg30QegaRgoUkdqErExZUATT+r5hLLyH/26YYXbw
8eCOoUgoPSr5CLCdHAznOyn0iVDEUQtnsApFVFuRuX+pUERTuP+xKOQUvkNakwzd7HK0ibmg
Bo73nJ4vfH4Y/LN6o6xRgruNeagIV07vR51+0VMRmqxyusIlF7rYSsTjTLHOUQqV1guqV6bG
CK/FJmrpGhWWg6LbDqA9dCjC0892XiwFRXS28q099a6OtLK4tz70IWmkWY609ZyWTNVjKXSE
Fd/4PCBufJq+RgU2xyzHVY3YicNny0NRaF4KNR8UoQlxM2j3T10Ql1Z+X4Gi/9SURTVIo9wg
UISfLucQoaQOcKJhdpkUkpCdMZ/BI2zHzIcIJz9mOaTxH1g7FNFGWzMIxWd37Wn24QswO42c
BrKb7E1AEcEf+lrSoQjsM74ocMph2kIMiUUeNg5FnF86RRNYRv3/s3f2vG0kZwDulmU6HRAv
FyCBvYiilqJBUlIlkAAFEjAkGVRBSAYldQ5kGDjDxTU5yIBdCrGvM3JBDkJixGcEcM7NNYGL
+wEurkiTP5Odz52dmXdmyeWXqHkrrYZL7s7OzjzzfhpQnDWmBgdrpSgrQxFb0SLi5m6GIsLF
gsItCckHbS+jYzKG7bUetFCjnIYnjNL+o8mgqFFEGUq0W+fIqtAPai14htFTUTzqToEyKXXA
Jk/9HfTN/Uu8NHV2Di75a8tFf/s+egDrb7eAscsenJ5qiSP2GY6DzQNF4xrQHBQRE9r0oYj/
k3qRyccFlh9PlRzhJ015cYpCOxSxU8S/6Zfx5HmsBX+mJc0HMyyvNlMoOml88rwvlsI45lhf
/z0un0XdrIGqkmyhSJtQIgXCyKpOFnkERVGJ+P+G2R59KGsMkbmOLESm7gwENBGO/TYCvgd8
xsLHvSP9DDZzKGIkElRhu2FT24b/yRMTpK+B3grPYSRBET07qhYyQFE6Y9IYGvxUzutFQZGB
OjkvtcMC2MG8MQVFrJWa1hQooj2OkckKRfjuxGtgyRuhrvGPPWsdCBPUBODpakkbPRQlkU7+
9+R2qlm2NFomMq4KWiqqbJ1BGijAJl+hqV4r2pSv8fz4Pr6I/11wm0j8SJAKfPsaKJwQvyrn
Dw/OvkBQxHZsRvMnKn0T5oKiMQ1oznxGAtBm4FN0Ii62j9Rj+SNy44TUII2uIAMUQZqipkZT
hKFI8ltCAcs89aw/MKs7pyYaKEpFgPFFXTxOK5PlyjjaNydTAhRsQOx0Sz/shiY18U8SFElT
D1V14HVxXChKww9eeMiUY5tuycXhBQT758vHxPPDcDwXKGLLqy6ckYXDP9FWj2gJq7JyDWSr
SkFAgSKqnMCeQnYoim8UHCmmtKNouxQuHIp4B4fQpKL3FJcb02pE4pXFNgMKFJEPk7yVVihC
B79V7QNY7Jo+jsXdX5CmSNgukj8NuWzNr2m9ZpmEKl31A5UnNxsiFYkh8DVvXzuSzlmzfrhi
KNpUrhoYnLheoMl8xQasZY4yOYFkgqJUnSAHRZNntL6VjtbKy2NNVWXyKTrW+BT1z0pp3Sri
geBPD192qZrjdGc+mTNeoDjh+rYUz5WyJIoZmOmx9HZlyO6fpVgtnhLxAqD1p9XHq0bKFwcs
50p81VOAIjJBmHdhlAto76DfbxKLGe8tfL7heD5QxJbXv26Cv6AtekKfXrOqv1Aym0fVgh6K
8I8S2MpgPvsA1s+qPPknXFurWU2lWloQFDGXZQ350CWlHRp+vR1qxzrpK2ZaU6CIDNF2ORsU
xa29TfsAlvam7dqifIrS9QcQD5kS/PcN67aViTgVVX4VR13ZF6konRdI/bn48QjN+1mgSA7E
0A++wIOd7VrK3KX9ojAXFNVr43i23HEooki0OlCkZMuJwpn/YiiUhsVzw6IqRvdrqfX0/h7K
yMzz2yBH4UpXDSW3R5/Z51R073T5DapZoUidSQK+bpXKY/sUSeYz5IQqJWA0TEsBsgh00GVG
iQkNnykE+WiP5wVFZHnUubUw+5PWfY6qETiqStdAzYwhAEWk5PJ3m1mgKH54EcTPMXWBSRlj
DBEToy8MisjJWvIJDCkFyDckuTeksY6HUzuEoAh1MNfTWaEo0Ckw5AGsymjYy7atsX4GiD7z
fyni6LUrQO9ClS9Vc9UjmIoyMBGjIvEpIWN+iorSRil5qYhvoWhYSbRQRAp+A7FjQgBHFVw9
yD5LXwQ51Xc5oGjMCqB3G4pwlqJ7q6QpUoZyc8b+PlgtHPDSsJiMzF7Hs5LI89T8A9IepS7P
mkYPWHCl0Zny2Md0tRy0UBR4IBShlfExjj5rZe/NVKqWCLtY914jv/1jkzJMXHUGaIWiAVdI
M9hHOEgNTODxvKCIoEgEJEBEyittkTei5UhqnUjXgJ8MUz+pUISbgyRo3RiSHyrVKXkXHG6C
ZdgxrwkktDAown/qE4sp3jxKYwRl8UOHfKFWoQitaZGwchqhKLgcbSk3KA9g/TUW7fOYHYrg
PEXN3s1Gq18Lc0ERyA7xi5xF9Y6pSAkEBqlIA0Xr40MRnmABTRB/0JFF0QO0Tw2Kmi4kfxxN
Ec3eeG9VoEjOlFLZmnG0PE6nk+S2Ju9ktIgqhZF3eO0p73kpXdJeSX3ZtJc8alotbGgCYT0d
ZYQipIoHoahOS7MgJVG9lk3ZJz5qvPo0zb5S8jIaoEyNyeYO+Y6VwkQDDhzPDYrIY9BnSMc/
AWgyMCsGLehCEeOxM1UowiTEwsktyRtJwhldV5OXElAjRfuFVHjM4qAInQ0oluNP/XxZBF+8
9bcJS8ljPX5szbAAQlHgfXm3mQ2K0GNSnNnlATz5xJlHuy3Vpp3IfIZfqn0tvWScTlF+20iT
8ZoHl07ffEYeJpD2gxmtTC5BmMStN5jPfDZuNM4d1xRRWR1NkezSMsvkjXi8EY8NDkUEh4JS
eSF3L78RnW6pLE1dvT1lOktXNntuVKbge1Zjr5A+AQ6B0kJR591vMBSh50YzWnulq/HvHl1M
PNXcEPfQpmmfJZzjeaef2HEfQ88DfuXA8RyhCE+f7zYLkP1Mr0Qipp8mSG+ImZLEjjIUYRIj
J9vKfDDHI83aSr5fr0aigW9N/kWLg6L4bs4vQYfY3RBei0vXITjWxRdMA0ViRVczFNUPSerq
dDfIA3hSFXU+KCIeTVWtGl380wJFWirqZN/XxlT0SXcV9H8zcLTGTwzyWkxywbYMPVcqB7Zd
Zz5Ha1unOyjSlPlYm0302VJAURaHmBxC66cuJxT5x6WHRZONiamKxJC1b0KbqkgXs9ziM7nW
iAM5WsNQNH7BHnFJxPr2ZKqB11OpJeIeVhGiRxTyzIq/A8fV+UERGspalyJCEveAjNGo74W3
Qr4G1APNEISi+F9vn5QzQJGu3iy7gmFZuRkutCBactcLhCLI+lewhGCmdGBqVRyvWoChiAYT
2KGo826voGKnMoAn3QLm9IOM9PpYIST/eab1OVD4Ie6t7OkX61s6H0lN7NVEIflaKIqJJwLN
fiyaNjTO2TbrljDPTABFFSkfQOWjgyKLozXOVKTLaM1Kn/1eV/psect8CPYFHxVTjPfP/re0
YOTetH+M7YSWwnwmvxEkJbOo5C8W/MfKnIE2eW94Vfmh3llX+N6+Ws0ZG7joTK4tbg9DkS/G
snQ2vCtxticVOOUqnKbHQVQ3mInS6XZCEBg4LBaRW7rHE0i/wb3FViDouDU/KDJYd9Dn/ggr
OUKBY+VriLvgJknsqEBRPIj++92mHYq405KGaZgKS6dG4lfGvwmCosiDFsdkzeioLjf8NPUP
MpxFoIHfW6iACe3D1Gsn1TdN/LnoFi29UaNeTChl2HpjFHdRI/6rd1Hkl0c+O2AJYoOaUAxQ
HcCtiaeyXFBU2cqQXs6QvFFkjPQS3s26waxfn0F1X1Uqmih5oxaK4knnrFQ2TS99Y8+g8oxA
O9VseUZrhxWKmnKNB6stLSsUJVQkQdFXK5CnaE2nKbqlUPST6MPoeb3h6ZBGqgbTrw3LCCBa
Bkdr6Y1gyTKT6jpQ2rZ4qT9/eNFojN53S0fQuk5niVG3t6fvBrL30jkAjQ5QUtYPz9WVvHdQ
U3IIcN8SMd9nBpu4f4yTv+IwQKQEr3li4HPLYjxjBasFyEnNsNDx/KLP8F20y/CaBKfFawnO
75pr+M8/NkEoiuf1H1sFOxQ1k8ogyvpzWQQ7KVFM4rqwIBT1qdHjUlnwSK35WD5XvmF/qaf9
WfkDf9Ff6BFbAitH4PD61rTN4csku4YHGm0Jv1Isb6TbOEgXL92+Ei7v8m9tdpXsBz4DA3ji
KS5vxGwzg5+CrsyHhYqyMxGeaIZAF2gV4JOICkWCelnz6vVe7xx7tpQgUM9RKPrh4aPC5FAU
pfujs2Hv0LsORWs0/mxFoej0KLoaHJO1zpavZnwJkhpGUkh+dTE3L74RkZwevIOyux3qpn3/
YIin1EMw6yQyHJ0fbg891SDHN8ro7evr1OMjoHhLpWv0DBXzfWYznlFKkQEHfPQiK3WG0inD
NI1pj5NUmPOAovgAdPY1+MvHp52FIBQhR5q0mTEFRahXq3YoCi6LWluStB41teVA2XnkVpve
erHgJOP7Lg3gyQt95YWiTFvOKEu5gnpqozQu5Z28vP48wx4/eL2z88umvCEBiavt2f288m3W
45lZhEjF7aBeWxcraB3XMmSdu+NQtAYnb7z9UITqlOL69T5ZVP0pT7aCIjIqPRiR5GGB96bR
XpD1bJYyeoWKK37UptOgL/VguHs63qScJ3f5Uokfz3760kyNRtzUu2jQmirrFxzwThr9mld6
EPfBCTKbeKcXjSL5+P0b3DF+AxXz3OdIyJUp2pkVHHPxaWzWbeAf6h2J/c4zI5zEbaWbRmMg
2mfQOhaS1i1k3ul61cbPNY+mqzn55GHdYqebnBHflFAEIr6F+0cNdsOP6V3yxlqV3RxqW2/E
P9NFt+94Z+4jOCcUZUuFE2Uh3hORqMtL1k3jFlxozHIs+8fEYsiCAF7s4sPz06JsL/BsRdoc
FAmaontPkaLo6UpCUcHstz9NGVzvUh3K6Hj32d6dmk7b+3d8QanDrk+s6dked5BidTuYweTZ
PW46OeLfhAbTYFs5A9wE+6/AGL34tF/J0Oy8Er+ebTVfke+n1/PhVfpO6ri0HW199qNo3XnB
vgy3ERXkIP39HeHb+A1fpfqmLPbTDb3Ccrng5FZBERT8KMm3Tgs4zYd2kJ4hBsrr/WJbkSMH
RRkcrddW1KeIaA+90L08Tpw4cWJcX6/yfUFnz3XiiohztH6KHYtWFYpmnafIiRMnTpw4cVC0
MpoiKE/RakDRDELOnDhx4sSJEwdFqwdFJHWjviDsLYUiWUZOq+vEiRMnTpw4KMpQ5oOkbry3
ulDkxIkTJ06cOHFQlAWKnmIkWnNQ5MSJk2mJ39jZuXiUoz33F9zydidOHBQtLCQf8Cn6Kg1F
X3+dYiIAiir/WlZjVdZS606cOMkHRIPr2jmK/R1657pcvP5g6O2i9l1vV5MKlLRbP7DC7U6c
3A4o+oNU/CwrFP1uuTVFmIqeTguKoqXNWpgbiipLgHuj56Yp1D/YdlPsssjJnX0SL2qHvJ7d
SbsmF5HyD2qnvL1z7BnbrR9YwXYnTsaRGSSHvNtQhCt86H2KJoGiVGFEaOlejM44NxRFrUWP
/qB2flaC76LSPf33xgqm0p6C/J2tO/73c1qBFlbohU6UL7d3d7c/LuBV8zfStfH8dvq4011P
H2/0/s/e9bS2kWTxy9KC/QDZQ1oNMmixIne7g1p/TkYCGQuMLCEdhBxk+5YwYWGMD7442GAf
Dck5ORiGgc2EwOzseT/Hwn6UvW396ap6VfWq1ZZkJxurZ3Ak/aqqq6tf1fvVe6+qtrLwuQl+
NHx9LXn9Zqw2jgc/Fn5l4sbRP8uWvyZF1HOGrz5bhBTlMRSt1JgU5F5vP58USWG5ukT5HnIr
x4HD4YMc3hRH+5m75JO7Ok+D/3Gv3v68FKOJ2pUh7np7g8fgRd+SFE3bnlf61GjcHnklpxni
gSpY6Vp37F1sQCGu2gPCTiY+N8EPha+vJTteW7bv51QSw10Mn9013hez8GbzLAsn18cNJ35+
Qk9svB7Tc4fx/P51Y7jjyi/3oT4tOvOfC7dBCFk1eL7TgbP+Yl/x2SsTX5MiRor4/6sgRXl2
is93RM43IEXxxUaWuSsoHdVz0h+sAHYm6gmqworZ37V7Bd6HTDX8+mDLNVZ4JXTH2k5XO5OV
sgZ0iO7cPY5rLohK9+F1814rZUTaeWzTfoQfiutot/O7o0V45oOToimVJ/SN9KJSejJZwSef
N5auYJz/gE2078SKFVFib1dYTZNQfG6CDHz6arn8j42vryU5UVKXFjjZquAYIoF3unvDuyNv
14XH3cPmWHQeBNemxDaeHk6dnjOG5Y9bw+tJuq+whcvs/EBDJL/fLg3HYkRPlBaS+Iu9k1rb
UX8/PZszjg4mdPC3jml66u4zZip6vhr3WR6Kgk0FvwdSpAgdasoiOiRAfq9sI6VaCdnx9Oza
fTWPSDo9kPO0GFoVeSX07lUsl+h5aStpX2Hzed5jDN10OLgHa86m4bMxPX8UsaRE2M924aMx
eerjhQ6ye1hS5PcjZgqK9uzHCLUgFdKe+0tW8B6OZ0ehskNI4fZHN43hiTW1UMLv+zPA+ZAE
9DBMcQymifu/fWnSiTohtFzmsRvQY6LeF9H8I3hSFJurI/mvG6fS5ojg5zeN06YTT20MfrO5
83Cm5ad4JamojW4marwCUpPilW3a4n7CxcPGOY/nqTCci7UwyyPlfy3Wak1x9DGSP363xQbf
MopLupVY9UslhaWLo3paft0oPzU9yKeF5fv9I940TBVTbWfpnCceaM0Xn63GfZbrSMFwpRtM
r44UyZIchiIiTNiIjwxnVrqrqDSk0XD+jMw99hclRfHFRj5Ll4troMcjMxakGjHwtK/g+R2/
3/uaKVVGh65Wq/Vlx6joPYK3MnyxDkYkaapuQLKI0/Vt5JUOfl80ihEKAXntq3VqxpGw5o26
uxYnMuSnjXtUc5Mi9PDAWf8Wi1kCvUHMRvnv6SsV0+S29+n0863qDElVx+Ou57VakfL+mQn4
k6qK6biaaAuCbeXvXQwJaxpNLrH8ITxTnD2GmZ9O1Gu1/oXjAfx2dHhSq6koc6N+r3nN4+jw
OtqF+PpaUh8okahsKwGUg7vAUy0Up7YgG+d5k/SrhadSVnaVT0gRqlwEznsfIUVVFBfZGXXC
8qfaTCjT0Kq/EDC8fE6W2F+mb0w1+uTdZ/y/VbjP8jCU1XrPVkeKgKEIqyCDw3ymItNQFHr1
ItKR7k2K3m0tS4qqDlIERg/vYS1F/tg7eC9UKfXcnV43Ik/zeTfP8guI86VSRjTHSUaSlIZo
JPKsP6EGorNlBFVyjg4hwsPVBjwHbKjjzw7N+Q5DbIL2kbykKI5+MUW8Q5uHGlFozNIrTATj
2yNNXNJeInpGOt2tdMWbr7zdgHiQBtn4bUFqjATCxqk0oIb7Pw9q59RfXcNxqkWEctlF8GSv
Ka8xq4GZP+FdWsqfcX9hngsEwYe4329wnsnGQl5Eiq+vZe3MavCGpEj8LvHE29wqKFMNgtf5
P1U8fzpWll3lG6TIwlNBuTrdQnHhsBZc2cqfsqDAUT//BTSI2XhKh+riJ1MrP/Ul+c/4QR+r
IEVJPc8Yu9I50cpIkSwIT8eGe9RBZXEoU9sIG6dADWqRmxQFL5cgRYztoAUkmgWJkSe0AqPW
QT430rQP/Aq2gh6AhkmX4fSi+qJjYH1BRpQ+E91IR6/q9I6o84PhyfLDc/VhGJEMS0kFVRc3
rEXwVspJisjNDLEnTOVYxiz1I++DakBg7/CvNHELuDXfmreKT9yUlOLAR/VCCKOWgN/sA5xg
aLj/s9UV9PxKmYhaaji4TXCJ5pfkSn6AeCh7lDA1WPcvyzfIGaJa29qhPltLLqGRc427cGjI
gaRIiJzEE05o5OoZE//Izdny9Zk4k52G+mbiBimy77+ZjZvzYBM3SJGwDElD1XZd1zZG/tT5
VpVzJkOPPvmYovRM2OVJUa7YA5vF+OdNzTgwPW/q2nd2VoOgFl26KlKkFEeCWrJSszqCWUzJ
MhTpVTRZ4apI0ayfrX5nNzjsjxqQwpBp7GAZje2PvePGbeThvin48GIWU1jcpYqZ7uiYmT+Q
2h+Zy9FmN5QV/b7s5h+Ec0z7D8CIFJsRAq1ZENH+gP6YjxTRF6ZLuP+iBPWRMuYY5g5NJ3FI
1DR5KT3VYpBnkMCBX0yuttQScJr1HJIiDUfsLjou6kYqAGM8BK7OlA52sfxq+idHFYhDvwpe
f66cuPhy4RcQXRBx2GxeT7wSGgu2xjNwbcapCaCwioifOo1L/vqkINSRGSuR9Y2CCw82e9BX
p+MmKTJwEARUyLi/Iucmno6YoYpq0nAxEZcPYOCMFKUMiZVhVOipu88ELVqeFCV5HGNmog5R
op8aR+mSJ79HNFKp1VJrqEgnoBeD6byUXkDhrooUScaRYShygKHZkaqZ/kKTBOUmRZnBmDQI
gzbTtzbCC+sPea3gLfntsvW64AAA23Vasy5FLLQIWBpnLD5uKEZ03yX3NO7QMIIxYnT8ZRlz
Uac7J2jJab26mbTodTlPVGWjQftMfqNQLlLESKxGiipds8f1IiGYAZRQnRSxSsrIIsFElCGI
RZYKPEBIkZaAz0U0V7SGI6TIuIEo6KOYAmh4U7a13AKG4UG94CJFMD/YvUN+1OvP9FE6MgSp
K62sU07Sg9C3tsbduGaU1wSQjzaxaZKWgoDjSk5snLwwYNcxcUqKpq8Krvtb/hL0/mAOYOK8
ADWGWuUbpMjAGSkKASky6NhTtxT97dmKjvnIZSgyVX6QKtHpmBJ/okmM0Ng4Ku3WClMyn6+y
EAQqZyOwzHhFpEhVy2EoEq7m+txHCua4x+aRpIVIUWV7c4c0hZ+Uvi0rAp2905VRsp2uaBPw
uqB1SAuP9KxLtejIwYkEKYonGXZ3Byf6TOgLkuecEaPFAosINztezE1MQ7eOs0mR4EBSoAMY
R1HOMxPJS4r464SFksFzx6mKwmrBSYooH0jKBtNRliL2VAIH6iRRjiiYgPVEPT4P4pVft8j0
qkR47Q6KJ4i+NcqHcyEbl31RCTTAMVKk5w/47DwlRVX1WmkH7pxRERooMwCsJcFH5KE6zZM5
+FkxCydv8nkWTqcmr7PynzfPMnA2s2ln1e9mmFm/qbv+U+ZXGN0M7Ptr3iddANlwY3ingCUI
xeNI9RsLJ70OfjXwytdx1Ir2Bg6cdiyfNGF2/aCz2MQhrbFxFUsk/dMarpOiqmWsXwdaP0NJ
0V8kKfpzPlKUy1BkkBhgtet51T+iQys+RzDd196nbWXLfLm1WlIUZhuKpFpA43Y0U5Glax6F
FNEqBNjayke+Pu5rJgQWhqs5WGT9tBEvWSiEG986gfDn/LyIWoncLi6fEaPSJ9sZN6LrtJUB
zGJEw6KTc4xuOI0b4EK6N8+6JK0guufGlE+/32oNsjyvOUhRSnEhKQrxlYlpKE7ZTYqIDrEj
fQLFdwlpQiKBYjX/0RPQJ9JJEcQrv/63RcOepm216RbAWcYeZZ7AlodVQFvrBnFB/kFnBjjg
euqjlj8ALou09ZgVif7eo2WzP3a3ILhPN58JD+5IAjceH7zpbhbdOB92MvJHdN1eRv5k783X
LSfOZzbVjPIv/jXOvP/F0FW/j60v3Xqhvfem+8HCNenUBZC1uCm9gSLHFu6PJq19d35q2dM4
ko5zPtVzlU9uHNB9ivY2MuqnKRvr/qSZQuBBNHCxs0CkLTuTOIMTSIp0PrYAKfqrRoo4K7JI
0Z/+b/Ypwt1n9yVF+fSxwZwCzVyA2UPlT6G2cLy8UlKktk/BI3clH0Fx7cmtCj0GKWIKjuuJ
72nDE+ruLEXeMRhbQh6XS4iSesrOYttwO19oXl40zWREihhZYeCdMaV59OnKdpkRNzs5OEe2
JcjPcUpL/O6EL4vqRx/4h3+8RQynIdxCIUA3Y5/XXzvbVdP85FgmYWyugpGi+CebFAHyQD1T
Gk53GepPDpQrVEvAbqWTIojHcik80Aoaadm/YYzxj0nVVQFTUeh4EFE+NeoCrQZwZYlS+xkE
c0gRdc3R7htu/rNaCA/JH8zJsvn85y/kddcYy3TjnDxn4dQz5Mb5yRFunBsnM+9PqLobT6qZ
9aOvlzQWhhenRZL172QeEL/7t4lrLMkkRTbLBFGNNj5tjltgaaWJB2wn3bILj7kAKsu9jgde
iyYA/R2pn6YrbTzUoqrM+0fp6jlAwwCOkaLqmhRBSxF6zMd9SVGu0ztMjR9qsXD20K35VaAE
r5YUhYh7BzMUOaKdQ7j2s154fFLE8oTfCSnSVp/5s6bOOq4i76ABzt2gHq8StJpkxhRltJtl
AcqOLaIbWx8vFAZNQz0J7yHMy16OF3rHgyzOEWO7LaJzAHean3qGd/E/bzds8WSbdZYLbgPn
XFIkOBEUf0cnT7dM1DiFTYrMSB8VUcSVDMSnzeZNY9I6HeAJwnrBIkUA95VfQvrfAE5Ikb3W
1KiArZV03H/ttaLSZRHFpd+FLuYsI/kxUiSX5zOvCf9j9GaGVyTpyMTp23Djlbf/Y+/aedtW
snCxAAWk2S63CCWABoRriaashV6sAhGQYQGG7EAqBMWw7C6LXLgIXLjJRQzEpYHcel0YC+QC
3jTBrW63xf6ErfbnLGfIGc7jzAwpMXJiz8F9IPk4Iz6GnG/OnPOdm56m/zR4SomnPkHd76O9
VHV7P/mfAsddxMeAOLq0O8wg6yKuIUVtwPXG/hHC3TdZEQABT0LM2EB/0LWXBSXxOHGR1hj2
7Evn71fU5x/FX/polPmVRbzW2uuczPZH2UDXkyL+0/PkSVFs50BKfkFSZHAUHcOkg30UXU+K
4eQ9RcwGarmkiH71TY4ixVTCXDuQXLcpT1GA9SYeumqtPvusgpWA+1+YzfT2uwvBe6CJKSpA
wnW8KLpblRFh/1C8yEMSS0cw10riqxXBzfqTruVwmdHyj6JGDj/8aut6iignYkiRcmzi2Unr
KZI5B6+1HU/DQHj0OKv5wh6QbBhKniJI7IdmxzM41cxjJ0a5PT9PcHg085A442SZDQIOjxfq
6CnFs9aI8RTpSVGPPKeMFIljHONE8qinx9E4UeNBL9C1ryU+EhUe/3N5oT+/xucdDd4+/Ccq
LaHpH98BEEeP/789fItEvKvePktIAfcecG8FgFdYJVQBrzHpW5r22Uqex0lSYha1JLfnX1oB
TxW5m96W6vej637/KDuAx+WYIkuKuEDrF+fPz9ffPtPPUaQIixR3NCQuQPT44n8PxEFFcxAd
v0tQmkhZEikCwiaV00egdRUBpKQ0UqSL2UKDPBAcuhuxqzDEu0W1wy2yRtZln5VnecL64TJn
KENNs7um91RNR+i6kB62sg4t6v/1Gcg5TJ6gXKToVzH8Dc8/kktoOs8ewAoxRdHunuwodQcK
ItnGInSmmCKeNPFLIBRyA1RXzqKOmANoppYYUwR2QOTuMpz1SQdszA/fng/0ZfHsAxRQ4VG+
vTt0bvtL74CJdGVxRUxRAVKUUBslfrVETgQ1Kfl1R0uKghBvOypJy+eb29G2jnQlvjwlHj86
9AIp8W6vijaAFKRo6Ac+SIoKxRTxSQlgzBHTB48nL48mpsjQnniQVLjk9pJihogid0/7+9kq
DIgpCmxMkbrMRxJUtB4p0n9ih2HybQMm/KvW/pfB4H6OIyKxCMWnweDuHSU9qEJGp/MRad+6
3XiK63SQEnGp2WdMWi3oZ6nxTs26xlUEnE55pKin25bcP4pJ07S14d2zLooZQqtlGtinzz6r
dBSWn4Ol1kpDc1Ijy/FQ1GIUeBHIiNxJyOTWyp4qelOjpFruVcvThyxhfTmgPr2J9LRzqFgC
gdZvy88+a2ScyFBUj52TTNlnPku6+HPCyVkpPs2ceNkWG3NAsI3HzEnTOciGDttBlCmd1dhC
H0TbsQmQIrY95Nbj2jNSxsr2iw53FzhcTsnHWH5S1JjrcbdzhdZJStJRrwQGT9NY0x4NPcTw
NL/frFe0pKcSIe6lwhsjZ/uNwlOENNwVpIgLjAGzzxh86Et8qiZFtXY5tUSKJ1MCkH3mKxf1
fHuJFEntG/wLwuMkQUnTXhjDPC7pFK2fffboYoperL19piUnw710ax9040+QLgvJxI/u+2FI
6zQm8xAW4METG1IxKl+niE4ZsDyiMHuADpuAyPub9YRlUsT/WXWe+p2x9Da93iwnwpP4tOV4
y/QlN2Wf1RyFqaddl01cpSn5S49TLCIp+XjP7CvAi8iIkVhToXS1aIYH4lULYjzyA5G6NZGi
PIHW1B9DBwqj3gMzZ5Bna0kRy4nykyKNTpEoM9RuESHsy6qIt1uMxDqJCWIOcGcpE04kzWQd
oEynOpt+uBPoMqnNTh08QT4hW9QhYuvi9BTt+U5y6RTljilKH54upkcZkxPjtXhFgYrr6Npr
Y36Qb1LTP/FnrhQzRM+/DuOowgq+kV0ppoiTIAR0ilicG6wSPnlXFYYHhw/x+FvGt/HtDtj+
Kpmj6DkIOBkWKrzChiOB7QV6L7fnmZWAp6TIp5e4vk7Ro9o+w4xoXVKkn7EXZBu/u4ojw2VF
rN1Op5qbjOUjRdk2xK5vdBQp+kmbwrEbelIk+jxV6s6m7L5otA1q6rjDkKuaPgthBhDNi2sN
JmL4KPsb7BPIPivsKUKeG7/I5hkUSxT9qbg0xIgKqU5Psa8ojbXW8xtfVpI0BlLX+KBzLfUg
94Db9ClH0box6lVWIEV5Fa3RICdjIpX+ZQWf2d0t6imSFK2F7TMO72bV9MisxuHZijrTAJb6
52clFmfpEjmK75/mvAWgZDdRtMZHMYrWybeCkiLplcc43t7qgZ8Eiid+OyW+wDXdzrTtEXdR
4TikvlvXtMcnqMRTUqT//c87II5vFHoHGr/8T/okdlWK1iQbi/5V4/cdhpOLeMzLfY50SO2F
NY7cvseNFAEnZEWFV1iFLrB/n79GsX10zW+vCThX+wxdouCjfvKkqAxPkZmboNzUb6CiUwIp
okxNERYlFrAGF+O4LUgNjaSIX5Eqd1BMU5NiksPbQdmF4ThmiJpygbkgt3K8FQKDpOyzooZO
2BinlYMXlcGIUv9XGlW0f2R+HAIvMnuCxmbxRkKCyIAOeP9MD7iFcIljPx8nyk+KuFdF2L3o
MT/pDrOsmfTsuyzeZTkH+Yz3KnKdN6fOv5UEz2arscPKrtITaHLxrXD/ATfuWJy9NMJ6uPY0
KSS79Xz/pPaZT88lrSPkbTGkSF4fob/BLpwDFOmmxuOpPvplS40nT0SJux38YNTtAx+HJan7
7/oV7fn3qu332vNzUZw1hAd78RqqsXtQGW+/8WThKx8egGKtsEoa5dj4D4hnpIWUxhPbC6RI
au/VuePF9l2xdpnYP5eaCfTf42cLqX+H3+AT8IQcpdQIXWqwdu2zx0SKzhNH0Xop+XmSngLH
uytfb3l9UkRjUxWUTUpnBn8SN1asyA2kCIU9vMwmRdW0qa/3qpy6kDAOp/AEk58klMbX+TAU
WWDf2t4AtUvM8g9GXuRO53AdDqMkgJtIESU+IzNH5arT1gxUCpeiC/WkSKg5I4xrOSyi0jWn
D4icqLoaKWI9LULpqXqGu13vE6lB/zH5upNLSmuHDdMXAt3qrYp8gEyKBHz8Hpesdd/Q0mM8
nm16wbhEilI89RrXWr5AOPn2ZK7Kgumk36+TuSnlRwmOWfMQPfr4P2P5USK88fsW3kB8rcbj
z8jS+6DB0QbPnqb/ptfaf6lpHx/gHWhwTGx07VGmggYPUEgejN+FaMs0/qztTyBdclbdnV0L
9ng88DkaL+NJ265QYFXUDqqr+ifKXVS6XcDTARhwpcnY/tkMSej8koZdVfvA+aD7/eT08KcD
9ySupZ54oHUSZ72monWeVCA07ZYfBlzzjqDdmOP8pIg6flSOIpPwEG2tKjxlIkXY+YAv4z6e
aFXTvaEerIo0QaQIzEUykKLgoUhREacfz240vEjFiAyB1mQ3Dos3osdWz+W4i3lRnfEEmUiP
edC/P6B3YSruyAXOgfgX9QKeRZkTFSBFNGhmMfg4cpz9T8RNSF6i1F/C3lyfPRdy3Lh1eno7
X9IgOemASuXy4xxFbV1UQXwxbJ2GId3khH7gy2BwHb5S9s9tn4l4NEpGz3i5B/5+rXX7dTAZ
0dUOj1/iyDeUWNI8vcHPkuKNXbJ/GhM6UCjW4jo826COcYfErWXrghRvt07TqKA6iMcjef+o
czIju7wynjEPEG+g5LyoSb7mQP/oNR3T8oUSznuKJByX23GHNJtMxuPznyxJjCmPL/7Y9Q46
+ENye4NdWuK66akHWuOSsDEzkknRX3KTolyxQjz3LYsUwXG7wPStmElrXkFHkYKexM3hMNoc
pCge3UmlW50fITDcYwVpwjMQu3xyHKenID06rxsiV+trILX7CiviQswvxoRirGVeFDMiscRe
UYuSMh+Tfxfdzay49zcaUsTUdtN5lKJRqrJ0MpelAYbca+YOFW+d8gSb22f8CuMkPykinS6I
J+iYX28kOOeMq1Y4xXg6p7kng8GZNPizAxbs8gfAUfjhsaZ93L22//iIY/nlo1+Jk+v4Gd6S
mH65fXTffzeowv0v6IUnKWrsy91AAlgxOmnBz83iejwdav9IY/Hf7gjf/gRvz0na6haIV3Ao
Kx0fIJ4EW+9VYdyd3oRUjx1qP51nVWYgPPqzCs1dFD+ZhYevdP1f91+9BNu7E/R9eYfV1C4v
qtDcuDIpekZJ0U8/Nil6gd1Fa5CifCv3Altdm3MvZBOsgth1e/BWmfw2eku4h0th/r28AOfv
+B3sVFWnHi8LdBn5w3jZocLdWcjmpEXz8DUcj+14WufFYnBRwkMogxQFRTxWYk5+CYyoED0o
ZgHvQdHQousQsdhDyBN2lclmo7KoHGtyM6rT/I1nJmpPWQHxq8bI17744LsTGHDjARvEwVj5
EvunKbaHqr1Zi2vxIbDmZN9Fi1fN36qnTYpwkY91PUV5k8ruH7IEhYIU3ZN3awyu+iGRXHhW
Zgs5lX7qf9vRhRTFE9ne1YMyzo2aWzA2ejFpMUqwh0ebOcnmw5XmjWaOcxozzZulIyqLB7Bn
tbxzbYwktYIxG6EfyaSAowQAbjxgozjAikrtP2Wu2rFlcQ0+lO+vb/H8uCVFaerZi+fnq5Oi
AjEH3x0pMi7dIb4HX3Dw7YQT46lM68aJ5kA0sjWGF22cjruzDw95wSd3N2HY/3q2+V9mU8vA
Pze3uT9HTT1uPOCx4dbWtCvhU9g+sngR3JKiNKbofA1PUfC9BOB+A1IEG7jP5R7b75E1a5Xp
6JAIi7nTmSzoNG7R/Ut3CgRFMbjxgEeJW7P2sPbEt8+wTNFzMCU/Lyka/xBvdZmkyJo1axo/
1czxwn5/3vJeg5uVKPnvsN8PY/xMhRsPeMy4NWuWFD1gTFEiar1W9pk1a9asMeYaKtoZ8bU7
+MFxa9YsKXowT1Gyg2ZJkTVr1qxZs2ZJ0dMOtE7zzywpsmbNmjVr1iwpsttnlhRZs2bNmjVr
1p64p4hsn1lSZM2aNWvWrFlS9NR1ipJ/lKTomUCKfrakyJo1a9asWXvipOhngRQ9o6ToJy0p
+uv37SlKds9WJ0X/MmhBsbjbqWpxU/sceOePb9v/SvjiWI1nN0evtXwyuNBmq3QMuM6ivw+S
eg+Xd6/+z97V/LaNHfE9kddiD3vYUA+QAQGmZEoKRFk8GRIgwQIEWYZ0MKxAtm4uUgSI4UMu
XtjY5BggPhbroouiDbANCiy2l9xy2Fsve+g/sf9G+b4fyZlHmY7bZMt3yHr947wv0pwfZ+bN
FMlzaFazwudvP33sdZAyJ54xTJHJecYUcjLlFko19R0vcP4DS85zPLfdRdv8j/FixvIu9Xp7
d94fWsNJ/nZ1USlf+GUrW9lKUpSTp4jxooKkyKNZw726zAFEtituMDLfyQx/zvTG4Oj2tbO/
h+LegtXIQ3HawhqK+y0nipztCi4fD3AwAeR5kk9e4S9anuHzOziJMXz+fXj+5OD3Q5aibXzw
/VVKXrf50FLdbLConvcWTV33Oa36ps3T3aaTkwhO36dUazdzKz4M4tGrSI0MQxwplOX1nWU8
/xGqlMcnTnTiQLl9VYKpcXP/dTNbuG0wrAE/AvLXl+9eHqXrXmghbwEvP9Vpfyuz8zW+t8gG
avnry9uT7B0SuNrDdCpUNb9+9XAKrN++P+PoXW/hsCdufBnLj8o3ftnKVraSFFkCrbn3zJKn
yEqKvLAbfxwPhSZcLVhB9r5+8wqcFfdhdcRoHS8E955PXO8s1gkI7rqiwkYaF7Wt/LdvXu3S
6uGYPOUutIMU7h73Ke7Vq5QTnWxXsPnR4rH0ehRv8PTeKbz9tEI732IbEDYS8vKyH44cWxV6
0uxWuOKFr/GHj/e4YrVWsQqw8mzty9nKLGsOiVaX6/hGg7VMiHMrK7sOwSF8uUNYKZS+Q/nS
oJWuAjV/NZQ0i9C1DVqJHgzcvBSU54nXwwTpMOVp9YV0Tflsp8mqxjENdpT8pPMivYEJeVYi
MEjWsNc4qYoNNBeYnP+ebf3x/kzo30dyhwlbLRuUVc8D65mWrWxlK1tJinSZD5a7saClKIxf
ui+mTf5ePn7JSZFRCVrgTJMEXa7XazacYgiu1DqC+/+oSOYEy9MBqF5O4t70xKG4qGgWoOMz
fUj/weZPFRAwf8qDmEqn41MtBVbKjvUxSoraTaHqMNYTCrJCHFtd2HYTJUXf5FRqER0jPYRd
PcQItFAJMUwnE7F2kraTHHd+EoV2hbpP8TqNxz/Os7PTvxRDp1Zw3FkJGkfYfxh5TconCv36
adrmev+UpAjaGUOe06kgSSs1Lqoyprox199wofWPmxLvZnEh5Lfix7zelQ9k2cpWtrKVpMhi
KbInb7SRIiJe6PJNLDSX+pyWOLfE8LdyrNYR/JeKMCaAuKFdYVyRIgynrIc4WP9c3PvTDibP
vvSZbrWuL92/37piyrjLLEl8EhB1ITgpChxRaNxvOXCFWkGGcNrDr8JQkqMq/ZZkDhAp095N
mBPFv5YLDsE1Kirit7IzDBPPmOKHaTz1YwYXvDF+ghqg+UyYkMLMAhM0I8yyztBGijQu/jRC
p1sB+xduOZK5v6FJ2ri9zILHz1nimWIOSUrlhJetNBWVrWxlK0mRLdCauc8KkiLpDkmTIvl7
hXNLDHufU60D4pzwePVYN4G4UMo1rH/mppJKFsK55n/xBMHbH5jSGGHy/H/YBzmyPv4pn54/
Ny7EyozxIXYV6EaykiLBhRBS5AbRyM0lReEvraKkiIhhvSkUh93+WXGnrs3OJIklbgmjnAEm
FZI3pU05dyBFwoOHkCKxRDspIrctjBQx57CFFBHMs8n798UehjmkMPuUyPXJ/TF3WJBY+giK
vyHsFpWtbGUrW0mKvvjiGSVFzx59VSymiMhwhxQpkqYQhXNLi9OQSg3EBz9WZA8gTrvYlQEY
AN7WVgp4fK0usP7lBzuEG6QIxMWneJBZ39lTbnwi2p4EmYqIzX0mNCpGirImGYj4/FqYFIXO
RvaFEJkckSYqYU3Dl46SIuoBgonPhqTIf3UF26ISliDl6ANx/+2vhUlRgN2ZxPiAH3NDS5Hw
i7GPCr2cBX322OYpfLs8gVa2sn20Rk+gOM4pemr3U8dLUoRYioqdPlMv4Awp4tRB41ohcKOA
De/i8u2nYzOAIoUbpAjCTYWMji9ccCAeypghGDdJUQrnfIHFHJnUamNSlP7yt5AXtA+/VfOL
kiJcMNkLpvdjeRkzVLOTosBB3EfKmJThZxuSIpQ2JklJM7MTBt6v+YVJUbgRKQoamLzwe4XI
+PJZS5Iivb/aeFkGFZWtbB+reX2nuuz1Xh4hJ38/dbwkRdiRfMqLCpAiFb+QIUX81atx/SYP
jFc4iAsnB4gHDSIDOADcIEUQbpIidPyghuNsbILOzyRFKZyHEglSpP+9OykKHatKGzvomXe6
egsp2q6sFlE0enJ3A1RyCBdT/GxmYySgRbvPHpwUZWmjSUq8erWGkxYyci2k6G878RYC32MG
afE6OaQIYlZy/iF/pLCYo9BCimImBZOi7851b+3zrCDFjy/seJ48/1xdF5KXF3i9i+IT+CgL
uFf/HssP9VDjl/j/Do9fGOJPfrAAwy0/cbwkRSApYmaiZ4XcZ+q7P0OKhBNJ4UqTJKJwAHx8
sIXLx3on4bBK4e3RuOmcTjCc2njk+wsbn4VZo3i4XbHMX8YU8UNGCZzHz4YGHQKcKRuQImvI
kLsanuIfAwGLbsLEg/3Xy3Vn2nSWFdiSU90aHDnNbJKfRCcW5tR3nOq7IfaxonxjD06K7Jag
+RBYoH643+7YSNEfvj3sGMkjUni8xD8vqicAa03ELG1X0Pl79f09gBOl3HN6K81Fm2F8Bp44
BglwWobLOWF4njxfZLeIvD49d3tYKTyB/AXIk4cYzpHi/XOn6L02sMQ/RVwYbq+f7rhwwhOK
kyiKztc47s6PouhgD8P9GN09n9n7jw52cvAtPCFLSYoyBWFFTmuMFH0tSdGXGVKktGCWFLHX
jMaVqiAqqQqAD44ur8zr0nj8ZrXJt5s3FZkHBsD91s1iMo9qtvmRrm1872z5fISvj0fUhNqq
ZIYq1dwEKQL8SPmkyKs7KOsZLE6c6iGaDZklqbGQInEDWlgeouprmrfRC6s1y+xs0SrzpmMx
4GrF/8CkCHBiqYd3/pq9u1C8X3MtpIgbCoEtlqSoGk3oDndtpChs2OYfONUrN8e9RgBbIn0w
QVIUJK7Nej8ZrogagufJS1JUQF5eQBKRinedQP4CvL/m9D94cq/+RaTYfTbws8aDq9/o+iSb
Thhr0zipvuktnBqGe/XTw85q+gHDY73Ve7lo7u+h/e+/6fWoLdIyPstqv3k6jruToi8lKfra
IEW/+2wtRfxE/qMCpCjU3/dZUtQwboJmB6Ed96bCUgTh9OQ3MTP5pfD2lWuQjgzO9ZUKgQbH
V0oJxL36zZnIuQyOT9Wi8DQlce7ZS5Kixt1JUV6482rh7M8QwtJwbaRovifnAF5BZJ5lyA7h
mluGcrZ69duYFi2xhNz16oyx4uhhSRE0R5OUDIb7KGkiI9dGigYzMQKcMkCcvQQ+18xA7pZt
/uPLyRzIaJ1wrw2OTrJvRn1MIEmKUp++mS9hcShALgjB8+QVKbqzvPpN0L3PBDZYwL8etn9B
iu6zgZ81HjZ+q+tjt779zb/5f9PRARxnAZs0FwmM69MpMM5fCvRHrH/ZgW18EC9JEWYpYq2Q
pchCitj+Z0mHKkmA4Iq0QDi9+cTMAgjJKx2awbnnRIQ4w/I6pAPCmS1V/A6UD6qH08vvBUFK
kKL+VooUAc9nLikK8p3CaHLHrutuEi+tIqLTI6uszPgcQov3jFGaQd1BQ6JoPGDUrE4e1n0G
nkdPnT7Lfi0K99jbHSspUkPAKQMknUzmEUqND8a7y/5Z2nV/mLlEWdn6p4eLg3Umpki/VNOk
iP81elNmvHezhwc5TrZXR/wCGGfVbZgBFcGvo+iG0RoEHywiXj4mc3hRTnB4ujvDJ+iO4/Hn
NHTCsoClZYLu4P2ea+k/nsHMtW1Q/Gzvblnk5ZlCAPferxfx5NpH0U0FkZ9fzaPoyjI/6n6Z
4Hj7MOcG0hs0v7LcoPd/fG7bP/oANPDxvVcn+5b7xzf3eobh/OaMJ8j+URMLu2Q8w/bvkA7y
AZ3flHbt0y6Q/WOZ5mf4+sMuM8Sjz4ckRSAuRPHnS3wp0Z/x5891c8YH8ZIUIRmtuQPtq0Kk
CHefcVKQcU+FCVKbxTX5BvCw5qZIESAvqAOAc3Vk6d98fMDxjWzdsPx898cKMUiR4oI/u/cn
RWSTQDk4pTWRdp48UgS5r7jfRt1p7O/KZkSKyUiFMx88o4C3unhC+0eO5H8UUhTCi0uU8cjM
UCZXrLn3I0XyXCbSPzq/ZJ6jLKnS49OCttlAa06IIVIkHtXzdYcPHKREOU5OD9adPoVg3G8t
O50eLh88/ktnymaNyd90xpdbAC6/kF4stnklXGSA6qxzzR4PbAFP16shPgFXKSYM54ZWtH+V
Ix/tX5AiAPdb++tVPZ7hT3EX2PpGnTlTbxg+ifFG4RtIb9CZ5QbF23P75gK/wV692+lc4Ov3
XtSXlvvHNzdsWHHODCCcOWaZF6qGPmA1QRzQ+8djLhH8uNfrLSzycf/iAUH6f7zuXB/sILgZ
RgjKC1JEh7DM3/Z8aif2pv6z/3NS9Ig70P47MUXKUITGHCVOeiVxlpvRGpNkkCJInr03zJie
jLzOtwzGJDW0csHHJ8D8/75lkCItfydStJntU3ppAFvBRifrQ5C1aKpFUFsPsRyMUyaz0MmZ
QYDnKVKkqFaUFMHvhCCH1HCcjNyNSBGWXPI/7F2/TxxJFk5O3dJFFxGse1qakZDAQ49nt+dX
hAZpRjMSYkAQjAANkCFhIWERkPgEkh1a6w0tb7DB3mrvort1cpnz+wdOt//N1e+u7nqvBjdr
G5j3JcZ8vFfVVdXdX7+qeqU1o6sds/LhxIrzttwXyy90YJzPM+qKouytHcPPVPNmgvnEFAjy
Mvoq7izYXn5DQ7ypoJo+QwoQo7uVmyhwLyDG+UwUxXNEEeJ/5d2g7rXXoiiGRJGe02dN4Glg
vAHl9QuqVAfO7aDssR2joiP0Xr9elRDPEUX49ctRDPG8bVudtvgXKZ91kJwCQOrPSJmPHqu/
HiAxKkq8oosf8yx2cICi7u6iKNDnZnp4sH4kitDpMyaKzkuJIhO7QHef1THRAfNGjkB8Uk/T
dBxspn57KYoAXouabPdX0V4/+2Bex0pxe2tg53iV8dlKAfnpu89um4kYyFQUPR3Jw15fNYIf
ut3LT48UxVakCLuvWngQKNvD0WzMCYcB03N5UVE6o3WYC1SjosjN3iiP23u+o5qwulM4NPd2
kSItRtztb1n5sO7V198O514/IIpWp/q97iZvVM/82euprJTvQ5Tfup4PffyZro6kbeOBgBE/
BrftiRQZUQQ6kN3q+dLP9NBnihSNBsMwLBspeq7biF0kEslpextQOhd+SnXgvA6ybhyET6oq
l0cyRxSVihSJ4ltoJIZd+Orf/vvXtbjtKf/I13+8aWQj4v2/7Kv/ME1/80TyeANHfWx8Jl8g
UnSSpocUKfrELflcGJUQReZFjeQpyvjCzYXwmSiC+Bs+szsNJp2a1z6RebNd3k6oiNTPBLIg
3hZFvvJd/h81e4i3wxJ5ijw5gHizD4yWgETRljrB/k2DtV4HSKUT94Z6VzFYiexNj06fIXIq
LLYrMgeYVlBZUzzmwxMp8Yqi6EL+e4VMj/WW4Wia4JtZE/7YqUH+kwmyJT5ff3dTfWLtLsNF
kZ42myeKiuK5bwaGe8yH7Jek+jb9Tb4TPEsWxDsVXBKSnfkG8vY7F7Y/4GrzEuDNwDGiCHLQ
zOruuQCpO7A1P1oUYWuKtCiC/Y8G6jy7ZM6aIoDPiyLQ3hJF+PVLUVSmA+d1kJVmHbu+2VTt
IkB4I4rgAZCJImTNTl0t9gT5Vj1uRxc17gArX99i+PXJEYbW3zv+eMJoGarxrOkRQwzi7eiT
d00Rl4a0pugLJW8Ua62fnJcQRWZaxBFF6hHeymeMlmPrfQ3m1b4t+Q4C7cPisZetfMbq0Zp+
R8D8ij5wFvEfW9/sUP3q5negfbNjFjPmeBkouqqoW2gZXBmSF0U3vXw+m8gM5/cfAT42a3Xk
9FnU7w3hubVlyD+TKmaplnyD94PRWl7x1G3RVOTD4gEkef9ZpEjFYRz7Vn53W443Z5dZB8La
/iFRBPFKHoic5TafKNERqBX4QoA7fF4e9h3/eom67FmXz8ZYPcT8Z1dyA/hvW0u3gOtTQ0qM
0siUr2b9on9md05WvjqHT79YHeEt+y2WKr+O8Sb8C/NScLTa4afbm4GD7T6zC1ipoBegRRHC
G1GE8koUof7fDdpee2z3GeNtUYTYG1EE81Iw8CLKdeDcDjKiCL0+UwbCY7vP1ACoqxbG7OOV
sad945XWcpj8LubAsPq/ghNFmTRUmxc1D69VBbw7LTEze7msRpmBEUUgbzmF7fVGiTbqXz94
feWDPIki+OwzHiQqu6bIzA85oij3BjC7t8TdK/IjQrx83clIAGhv6RbYPsslDdonWfQG9m+t
PgF4HeMRn6SQvTrbzfEvAkXRvyvWtH7iP/uMzwLnxq/RRLINi3y26UxObyUBuHbHiKKivUmU
rQJBTvmxOZC2CpUfFvatFfkk2xSqVnQVr09VQC0pyvGt3EmoYqhBvP0jaK+OC5YLMy1eHcj6
bJTVAOBzogjwr6fd0PrZx3Qg/s2VQPZKgMdO/Vq5A22TnH+5ZY79oq5VVY5XSqKiE7A7KZaE
nAiGleiU/QHCNxubYfhzBbPn/sNxo43759kYeE4Il9fjXokixEFrZZ0VwH7CCtCiCOGNKEJ5
JYpw/6vPhj57pSog/p0lihB7I4qw6x+thxu8huU6cG4HGVGE8NFlGI49A4gfRV3x2Cffroc3
Dbz+7KF3tIzbrz6fsEvrnaH9z1WFUN5o/ZLjswrOrz7fTNMUHOAJTxVfN7Nb7s5VOT95ku5y
2QzzzcbBehjxGwDmV59tprOtI1YTzP/KCatfGOLlA5u0SRTdYkt+memzbFAVRJGJ0bdsjSQf
bbFIvQDwStYGdcw+E0WIvXxEo/YyUvOyhvHZzARSf3Pj+3jHvwwUiSnvtvouBhcIWaIo0Svn
zNiWK1q63Q/yzVfgzaxWEog8SkkAnpFmRFHRfnUgibEK0MRF//rN39KpMYt8XhQV/as0ROYU
Dcc+DtiDkQeIVJY+mzd5eDJlmkC89SPAR09/lBNg/Omf4xP7wFWp2iDeFkVQ+bHa9dgutn8u
j5D69gf9Z8uZIP/6UMDRGszbh/KZ8vvXKcfsqV7Nu5FrPxkpGASjX7l4coPr8kv8YKshhhXC
h7tH8hAXhGeDKxjeDHH7cSMIzsDy9bftzRCJ/stY1x4r4HSlgl8AVwbszYlVIGz+UvP4N6LI
4785rYc+/2uY/e+8aF45dpGIvbh6TwNGpw2Z1ROr34q/A0UHiWcTUn9VfbT8p0Ewqvnarzkw
Ghzpv3r/2mOfyA8ahO+zplm9wNv/lPPTjx7/6h+Y5wkHeiIngsuzr4lXE/U9efa9+8wVXxsi
o/QOE54IvzHlB7bWMJ5ntBY5K8Y+/5Mazqsajm9/zseCi6JzJYvKiSK1o+uDbu7dhngpZ3vR
1Y6v4Frm9GXgT+Mi3+I8uzkPulviF0X+g8nkfCP+0rXfFN972+luYwjaX6spYTWBnecdUQTX
L2KfpBvPhmj9InZjbgwc/7G4bKHVpjW11cOR7M0OvzNGnWstUuy/4E8djTbAyxfLpPOmoQ66
aTac6a0wTGfs4TM64Z88jj2TI5Odn6bVbGlRwT7qV3nnqJzULp/fNwb5H71l9ir1pWvPHpvH
PCW3Uz7r0WCFb9bnVdjZaogaWv5nW5q3frR4fnbJaPvQasN6nuf+T7jR7uCYdYLYJVK0f2uW
Vo8D3tXMmeI3/v4mCKpindbugPWATMleqJ+0j/aOd+TwhnlL3hX57UPRRCMm6Q7U9Y8c+7hx
0P3JtM+3MquSumbhbfzSab94kh1r8r4HRC+/Mn97B+yl/vkqKNdN3ccGug2vp1e+Xvvdd16G
wsrYs5eaSpcbnULLMe87T6II2ZIvExUhougbLYoKmkiKIh4dUet4a3o16k7FCjNafPRafqp/
DGGeP+G7YmcPygsXLyoYv7/VEec04P5fQ7z8EmBfEuOzSjFMnLfflTm8MD7a7bxYd/imvmye
b3hSA8O07OUroT9F9nPkVddgHeLFb666l9m2KPfkUb1UWOou1561feq7TyJWiRPfH+zbn1GO
/+hVp/P20Oc/u3jbj7xquWMu6pqNX/sun/tTlzdteIjYs/+kaYj7z1as867O99vhrez3RbJ9
j/+fwzn2lxVf+8wyft/0meTl72cnFax/HjjAXOB/nPfntQfcNvFtltcm7XBx0Sp/8fz7ZJs9
AbaQtLn3nf/CouhBqKIlufdsaamkKAr77h1nbdIlfh5PIBj8h5qgzCvtuPMmGH4+/zedowet
GEgU+bE1vfWZYBDGRyIYO1l/oDyJInD3mdiVX1IUZXt+s/sr9xvi/TyBQLgTZt3u4Wd0v++P
kN577F/e4o82ThZ4+FTu5iBK0/Qh8ySKigutz+VJH0/KiqLwphBabhbOJCXezxMIBAKBcF+w
8NNn/rPP5osiAoFAIBAIJIoeQ6RI5rO+Q6SIQCAQCAQCiaJHIYqW7rL7jEAgEAgEAomiRyKK
xP4zihQRCAQCgUCg3WcCFCkiEAgEAoFEEUWK+PwZiSICgUAgEEgULfaaonMpi0gUEQgEAoFA
omixI0Vy9iw3ffYXLoqUJvoGPvrsOxJFBAKBQCAsoCj6rqCK/pxTRZgo+tODyFPERNE5iSIC
gUAgEAgLLoqeqEM+8tNnJIoIBAKBQCBRtHiiaMldU0SiiEAgEAgEEkWLNn32ROe0JlFEIBAI
BAKJokWOFMmM1k9IFBEIBAKBQKKIIkVOniISRQQCgUBYeMz2Gse9xvHO4SPlSRS5a4rEhvw7
7D7b2GsEQXC8U0Hal3jiiSe+LE8NRPxX5DcGk8tZt9tNvz8aVh4hT6IIihSp82BLiqKoH1QP
ut1X06C6CbUu8cQTT3xZnhro7rwC8SX45svtrd7OZdrdm2yfrlQeHU+iCJ4+kyuty4mi6GlV
KeyNvaAODDniif/K/NX6H+D/qnsX+43uevnyZyd3rn9S9/Dp5Tz76LLylfqPBvCd+SAD8Z/K
Nyf/mm5q9TQcn1UeGU+iCMtoveQcCHtrUdSq1sJoq9frTWphEiw7jcv4/jX/YXW6jPBhGDPz
tTBEefYXBxWUb/7CbKOLH1B78QchZv+/6VAMmYuDU4SXI6k/xPyL62dPJrT8aa/X2cb5OfbR
HmueF+ue9pmxAibrGM9al2OyhvA38vr3kP75dVqTrYe0T4d13fteLXw/eQP7T3jfsv7fRMpP
RPuuTrf99e/VPOPD07+1sFX38/Ps5bOzfgf7uNrZ9vH/Z+9cWtvIsji+Gao2s56NSwUSaJBU
qpKEqiSthAQWNhg/sBcmNn7sHGwaHLLoTUIC9tK0vTS4yRDwkHTTENKbbJp8hF6Gnk+QxXyJ
uefeWyVZPv8jT7ndw8y4aeTgn859nPv6173nlr22ZB8ms9MvyeUPA4H79gES2zdf1u/pv7z8
wTP4n+d0MjSvPhbog+dXkcKdzRn8LJK44xRFvtfr7Yr2V50zge/RDBBJ5TtflvPH5Tdo63zj
NveO355q/3YLehSFAc+/7fZn8H2Ru+62yNvtdkHiw25X4m36j+OPogi80TrdKpJF0V9ZUeSr
btSMVlbbOxtK+sSt+pRviZs1qdooA+66Tw6Kq9TpEHftvM1zmrG9Gn0B2JspHdlXG/q3zahS
ANw8QMQJyj9aWG2vzy/UYf4vzrvLUeLmtPdqW92TTZr7QPq+etjfed9H/Em3e1A876qHfZ6b
NdergfYhOWBVAcubL4wc9lt1Pv1qgxKIKwVYf2rjEHJV/m73ZD6R+ofQvm4mivLap9XPbW9d
iLi34ewWz2D9M1GE8/ee36d+qSjC9nYE3cN/Obn5wutXww16aoAJ7Jw+6+/0H66A3qDs/mcc
cLcOntg24rha7guh44zow+F4ccmrOcHOB/oC5JWdp/1mhLn6UfIl+wJNsYJ9efj0SwNy8/tQ
SH/uh1Ux/7llVL5f2+/7vrM0fNq/nX4Y6JYf1swQGSx9X2e4mqE3XpQwVw+Uf4sCgZvpEXPf
7mJBXvxx4zPmvtasJYb/rqIo++NnqSriRdGf/jtE0V1e3siKItIiZs0ze3XRtFClzjQWRTyn
RjWdEXI7b/NczwYCH4silivRo/utGreAd/TDmJp5WO7VrKhIxPxJO+Sz10uq/hC4K/pP9O9Y
FAFuRKOqBO+fo5Ib9wJSNSB/2sfQexmAU+NR9xDa39RA4FL945n+mc0F/8+2J99K5VMfwwb1
ZJ5noih/+Y0LUPukiUB7O4I4Pvdpf7mzVhiedlbv41+epw7aW1ldJ1WMHFRcO9ncDdzfvwB3
a8B7p39PrgdHzPtHrabNz6ETrH8OmQMixYtv37+pOXuOkyjRAjkJKvqBeZIt3RyvfIwcKX+d
uSPmX7lsYF4OxfIVS7H6B8udPaXV3nxSiVMGwdRGyzvaRq8e/dmcFlR/OggYThu9epACnq1g
kNMjuWDv298CTlOwxLU84sr3KIpQTNE3c3N3eE8RK4roIT+cGLbxVCSX3gQYiyKejxdtyNN5
m+Vqxg5F+0wUsbx6dJZQ99GP6hxvlPWTGH1wPC07qR4hf1h/3+5/Q3sjekwZ2PTjRPT/LP+O
RRHPdcnNtziuDL3jTgL9owtohRvPKQPTi2D7mzIATsePK33M42Cx1xsJ6Q83er1XQvqDXu+X
WoDtm5ti/sPTSB9/Iv/qKS1M5dFt+zBZ7/UupPYdfirI48fqQp7T4Bp2SoJ9OoIYXj3qrZ1E
W5vny+q7vP36q3XRv+668t8qx9MGbNmnCjABEBnvR3INtPZxUyoAnVAHcgNq/4ABukyFf70K
G/iUGn99jefe8mdqQPWVxVXkwDXK5DPuoLWy7UW3OcmJcph+OBxvTYgOgWtRAXnrzXNfSD/x
TdQO4uVY5qSXQsneiiLANSMPsP5RVftAW0pKOd3kzcMDOwBsMM7g3Y2onIyrQZTI3KQAuFfr
2K0onmenXjz3swUA5m910xR/FEXClXz6Sx95js/Ugj7ep6DGm9p+1Av+hChi+cSijXgqilje
fPldqy/kPyGKOF49ekebIIcH2abIFG+UjaBJePtUFOqlHeevZ+5c9naToozrF21tu6L/RP9O
iCLenmpulRHfvtXrk8MCNTPIv9o4E9qPBMGlGbOw/a3uA/V/tt82qwEof2/U3qGNBui/i/bO
B5i+ehrfb5sgVt7eLy61DzThuXcyf9GV+m89FUW8fVgctdejQPBP2sOx/wKB+9l2b470dccw
/SARy4/7b1hcbS+y9ZvogEIHtWfrgoP8vRUd9IEaqHbRNtHmQgNuCx0kkPOP061efgJI0mNy
NIGQj32hg1MSgDtToojjVnRo3SJwvdkDeeAHkn2yuOsI+av/r87k8rW+NgRe2TleWhTTNx5g
/aP0IIkiraxucD8ZlG6IovCX6zrH0xGGeShxv7JoJ0iex0tWyvA8DobdGeWzummKP4oidHz2
jQkruo8o8pY7nTU0qdtnAOfBRFGUbXrmE0VvKZwmCLEo0uVDoijdp8FzWvPlfnsdLsoz7b1a
sbdrrosC/wznnVHh4UQRWft40Y+T5uHl9Zua0L5pBCgUTb0kv6ibWLbBmqTPMJEonTh+BGtu
q55uRGB7c8ACypeevoD++6I0QxTpTaTkAUXR5Xzg5hVFR6mLwiRf+U39fa7+dxNF4WxRlPoB
iw7xqUJuwJmiyLeH/DzXx/+dRP9E5Z/x1KBMY17V3l0U2U/EL7aH85IouWyIoihoFzwh/dbX
599SzJJQvsCXyk/3VQYCL/tRpeAjUbQUBiErioIf6jdEkX8zKCfjblPfJkG8uhmZCZrnagzZ
BQ7YD3rOAk7fq3VWzmxHAeVLO7B/16Ci//edInMhP9fxWbZT9G13A07qf8BOkVO+jygqhQl9
CKJIR1nPEEXCTlG0Z48Pcu4UbXU3zJiA/tFx2g8linSMfCLYLybe8W9HJSx6jnriTpEbpj+R
aBLb19053YyEnRrdAXH/y07kJf/gB32V8lWn09kN8q6pumQ2OIYXFUn28TCiaGF+5D6kKJLL
bzonK1onRRFWtToBoYEmoqYAH6TX2h9GFOmhnQgTUPX6y8u6n+AGiHdl1Rr/eF2/nyhq7cu8
2LuoNgTRETvBjJ2mkWBfKcT69ErIvxQ7ouhxFnQ1AG/13eYrsFNUVMZAFE3vFPlgJ8YIe8yf
tH9OMA+DtIcie9eLsb2OShX4xAD2H3eK/p3js9wxRenJBoyJ+CNiitK5IVdMUUnJqkohxDFF
+h/3jCmC+c+0NxefEtE/6cScK6bIxPgJ7RMnVjiw3K8cBGpWpkpi+0aQO+ZpImgKxNwUz9sf
tY9RTJFYvwlRhGOuBP9Wj9boflxfCFlJ11RU/rXuRk+KKZJiumbE/NwlpmhhPpFjksSYoglR
lKv8E6IIxRTRPkAMHVRtLKlUImEAjO/XgQrubBbFmCOxASdEUa4BFAe+eqooUQKofOlWKxxA
TgL4HWOKiqVwVkwPjMlRPFHLfsFdFO3FmB86GxPStxFP+WKGsvLHPC/7kVF05bwxRakmEmKK
TAdgOT00R85WQY5J0kOQ53F2hRTZp3c1HmOK7nr7zNw/+0uu22dJOi5DfYXoVnB/MimKeD5e
FCG3jcrz8V1UYJ+JEpbr21OOvj3FcxtN888E2NtfxknO/GfZ6zlXlwL7Jw38yePf8aKE7P3W
d1Y4sf5/sasehK8OUfuPj99ytn+2pCH/lLNgdtY+u7HM8/HhCc+1aNQon/14TUV8vdNZxeNn
LCqg/2wPw/0jHYPAv5fziWgvpD8pivKVf3x8dounDfhrbU+fH6AKRHu7hz8HuAJ+thsLB5DY
QWc0YBYzhOz1UxcegBW1qoX/OCoJ9icv61L5reZi+JQo4rg+3vIdR+JppDPgex3VhZuboj24
HaaBDuIm0QLtbQEBz0SRlP9X9vaakVt0+0374Sb+/stoUhRVf1oMOB5nt8N4Tv88LiHuqUeq
g4VV2V6XAHDK3k8E+6z/TvFHUQT/zIf9k7B53lNEWzQh7T0/GdDp08SLxNzsXGQsiniu/ls0
kdKAe4WmWXd4rmfsmOZMYE8xPfTuKp7TfGKPsXjeMBc81LMYn77vjLbd4YaaVGH+9Ru1nbaP
ZPvxwQDgp/sFVweyQv9a0cHzaqPSd4e0LCJ7z04WyF47IcE8SOVFrvI1XyylLx8D/kkK5k0m
IP24uOQOhfx1Is+F+l0UvAF5ANmr3uu9r0v+KwvtPxa1KP1UVEB728Nw+rHQfibQeuTmS/+3
CVGUs/wx9b8G61/7hcR9UhAr2N7WVUQ8ez0lmGBU4782d/tRAwaSPXWA11Eg2fekAXS0Uneb
vUM0gY7Pr/EAqiD/3BRFLNfHTwP9ckXIryJ9PAW5DfqBfI9eDRBhrgQXiROcvtF0uPx+VJkT
y1ekFDhOd1N7rfrAGTWjaR4G5vzJiqJw6bjE8Or1W/1yRcSpf+lIasCzBkT22/b4DHBVOhvT
CNJPd7Ju8UdRBI/P7vK3z3hRpBcjfbFgZd9dvP2adOLZG60Bz95ojXgaSQ24faP1qADtN+l1
qGVg//Xvalp6VnBfbwG+aXZIeyOYPkUgbvVx+e0btREfyvYevRdTVTBA9geR+bs90L+ur8MA
xfxHBcE+XClhe2+g5/SLf7F3Nq1tJGkcXzaLGuYUcnAOajVIoFnLstry6q1PRgIJC4RlEx9E
HPxy065DwMaHXBIScI6DJ6dlSIYJCxOyGwY2nstcwnyBhT3sYcmy9/0c29VdLXdXdfW71Jb0
/xOC7aerurqqVP3TU09ViexjY0Cpar9GK98Pbbojd8Gj/rc/6HUssrf39r2f76U+Wpc9+l83
k/+sN4LIbkR4euUv7xe92v/pI92mD8ciu7HluP6fuP7MHia2m44EkZ1sF18dlWPkL3n2b7/y
k/ojs1cudvMCa/rUswB1jwcwNsQXpy/pL83tLc8PkLGZsvAB9P5Vbr/wSP/S8wPY1iuodCYu
/5jYR78K7Yc7qriDkTjisfWfq33z01p+V//W8UAV2kn3lsfi9ARYXvc97EU5R4YZoT1fkOW6
h90CL2H6XckzPfl4q+721/qjH64Ze4Vx9tLoi9H1q+ekAym9Ss/NXiIvmJ7YrndwlfQvkV2i
PVSY/0Y+42XX0U7teZRvErHE2QFFHmefRYwpIl9i8ru0e40zDb5yYQ9kVzID1M+y2sm32e3C
9PJX8mSwn8/6MS5o9wJk0H6xtB3ogbELlshuO9sL9rB25fT6/Zbldjm9Hq4vmB1Q5O4pekKx
KBIUSSX9azr5mrGjup7nCHswe/8b1A/sU7L/fY7LjwaMb/c4DxV2H3t/+Gl/aNSvttcfbi2c
HVDkPn1mrsm3Q9ENE92ZnAcrgCJJottyCSscdthhhz2qHRUEe4r26qhXu2w2zy8ORwe5BbTH
hyKLir7+eoECrWmkdVQoIme/GHHMQsEOO+ywR7WjgmBPzy73j/LDpkaiZhfSDihyXZJvLsuP
DkUQBEEQtJiq1R4ttB1QxHuKyOwZoAiCIAiCll3LDUX0ONgsPEUQBEEQBChabihaodsUAYog
CIIgCFC03FBEo4qeAIogCIIgCFC03J4ifp+ihYQixbnJO9m1azU3R+lnXD9+5eXKP+P0cfO/
dfe/5e0ft31Dt3/cAsQt4NQ7BKOqWlQ212fY4LaTE4k6rwqO+3PlYa5n7TO/Pubzzrw8TH7c
74Ci2wVF2VhL8gFFgCJAEaAIUDTPUJQ65CwbFE2Or5nopeMUjvYAUJTegbDGUR+AIkARoAhQ
BCgCFAGKpgNFZR8oqqo2KmrnC+kNBksfU5Q1V+UDigBFgCJAEaAIUAQomkJ5ShssFHHdoao2
6J/k+uZWioMBPEVmqPVvnEef3RFA0e8BRYAiQBGgCFAEKAIUhbi/nsD5hwqf3KKilJkoCSi6
Q6DorgsU/W4OoMhwFFkxRYAiQBGgCFAEKAIUAYqSLQ93dfVZQXKnorSZaMmhiE6frQCKpp2+
2jy3d3T5VbO5BygCFAGKAEWAoiWAIm62jJtPs6godSaCp4hSEaDIJ702dKQfadpBTlocAYoA
RYAiQBGgaDrlcUGgult/qKrb3Zn2A0ARf8wHXX8GT9GUBU8RoAhQBCgCFC0nFLlGEBXdOkIm
kzYTwVNkuooie4oO99VjTT3eE53DG9e+KFCEmCJAEaAIUAQoWkooqqouc2VuriJ5zeonHf17
s4teJNYDSJe0C1BEoWjFPBA26uqzTnd4cdhqtWpXRz23T3xcu37Fvqq313FsrwqgCFAEKAIU
AYoARbMvT2nDfaqswZdye71jXlxVM25Kbh9sQJFw+mwlGx2Kqs92d7S9i1prf7g7dmn2uHZJ
blstlh8kOugDigBFgCJAEaAIUDT98shr7lsxKpkyeyHpIyYVAYrSPeYj4vRZdfhpNLDopdc/
5Tajimk3fIkTlVOFEizJBxQBigBFgCJAUdjydLqi7akrzreayUSUigBF8zh9Jp/95ZXe2PKO
EUJcKVdY7DXtUqd14WF/oCfuvNt7xNslqW74iA4u941GKwKKAEWAotSgaLdmU2URoehE/ICL
CEX29uxnysxLf1DPvLXFsnyTYSBBt39uTbTDQ8Vqy6ZxppFs/v4P+NR+/9ZllynPP5n8ufL4
XF9U8t/ar7gQFaSvbm+JbbY1zBYTmdNtiUMRC0GsAEXW9JnpKIoERZVyu0ha8uBSI8NBe/C9
s9OadknJf+iWRXaZnPGiPPu4v7nO2fVxhjBRofPLVoX85P2Z8Gtyv5eSlZ781e3ngOkbUoVe
rZjJipa7K9xLUWGL717aGx2rXs/rlsIHCjJe1/vWtsvz+t1/zz7E1Pnrt7912B3XXzH2q0x8
vbYPqXrtOsbAMW8PK6ZFR5pDR5n//NGmn/1yO9bY9Hlb8ncBypO3J9ef5yDU/Z1FOCL5fQx3
f06hC2B/qXX1DuF4x7k8sE8BQ98/VP7OVyoLDZLkfKezL125dckE4p6feEIBySEn8sIb3bHv
hJbPG16vY97OQVHC+TshyUXM8/oNAeyA+Xkj3PVFxevjPKmG/lGml/P0IlnxsjdMpI8G3dVr
QFFaniK6U5Ft+uyuHYq+olDEHn2mQ5F89oEcYFd9vi4ZPp7ST2OnL9C0y2cFqfTjurtdPvv4
uCCv6exUL7N2+rFq6MS8+t0GN4Emh/wM8C9pc1S6MEaYm/Tk1XqVCQJFRvoTqWPe3yxiZvNR
hc72MVC06RyzHtZqjgV3D5lPeN17DL0K+VJ3SxEHSq4iQIXP/ZdO4VsUWmA5oYGHChaiOG36
DYhs/k4Izv/Lfocx+/aV1xz576ivx8y3VN/pp3D5s56hAN/DPLXdYsvPeHpyfs8b0DNEVHtK
IO2yqX85OPDeiVHe0av+7Z7hyrJ/6+we33Io+oMTiu4xUHTnrvfhZ7caiugEWngoqp6Oi3Yo
ktofHFFB1G4AUb0ospceF0gOkrKaY+x0UrVYITxS596ioT8jAs+FR0ybDxQ5PUNf6F+KFWuM
CwVFKUBB2lCy7FAELbV8PEUcVHg7GnmI4lzrPtNbnJyOKDdXm9NzM/abPmMg5a/e+bOeoUch
IWm7FfJb81vf53XWf82Z/6VeHu1gNyc93FEtz5J2fhGAVg7fjTTec9zNxISisG9IQJENipjN
G4NCkdJoG5jQ7l2PjB8qn3+091pqN6GoLLLrUKQYXHKaY+z0PVmsT0jD8aGYNyjyDUlYdijy
m74LHSIS96UVNkYq6ZcmE8MTvn5tITLXasz792d+/9AVELaBfPOP+wDh0nOeouOmYzawwUw/
Df7LvMQ9Y3I4qOCnt3LeEMa+jvkaTXP6jI35abUOQ06H+U4O+0yfEQjbMVDqeO8kdLhgqctO
v/3jf4CitFafUVdRBCgq/23djBWjnyfFGRRE7fJaWb+kLLJPoOj5OmO3QooEULRggdZpBzrP
2eqnuIHNYevvtt0/8dVft639p10hs27g0IHWvoHQMWN+5m5123RifhIrP9VL/U698B8snoni
rz4DFEVffRbTU1R9viW1jZZSXD1FUqeb6f1cFNntUOTmKQIUAYoARYCiZYSiZKFiyZf8T7v8
NFF+ID1QRSvwPfiF7xuAohQDrVeMvYoixxRVGmZckSimSKLB1h4xReTP4piiuntM0YyhKOFB
H1AEKAIUAYoARYsERXSTRtFejUJ1NhouOxuPNO3PmT8xi0q1XmIQBCjymj7LRvIUyd//u2eH
otJPfefyMNNu8k9OZNehSP9HsmHtdFaarOLa/GGNW30GKAIUAYoARYAiQNFtgaI67RIhqciV
iWhGm1tT8wwBitz1xEAi4i4KD0Vkn6ECOaqjINdJ/6kMzpw9wbSTpjXjrF3thIj05J3HBc5u
hjCvZtfo8vbQTklAEaAIUAQoAhQBimYBRZXJ/sI6zAS/t5iJwlERoCghT9ETuvoswvSZVBp9
eb9uBFqTyDKlV2E8e9Suow0xCOyl9wWy+jA/6HN26irSM+9sxHUUpQ5F1ea5vXfLr5rNPUAR
oAhQBCgCFC0EFJU2GjZz4NifzkbDsxiBqQhQlNT0mekpirJPkT4unF6/t1qscno9ZPtgXLuz
mRtJDrrhA6W1oSP9SNMOclN8KQCKAEWAIkARoGhuoKhi/70SdF6jqvZ8yiHKKeltQABFNNDa
3LkxmqdIkvrDT/tDstvHjrbXH/JEG9du38GqnOigO/PVZ/AUAYoARYAiQNGiQhHZe8bdbRSH
iTyoCFA0TU9RlsYU3TDRfQEUTZjIhCKpOurVLpvN84vDkavfJK5d56Yjo8GGW8kOuliSDygC
FAGKAEWAooSgqPrM0Z/qge7uz0QkJNeditKGIoaK3KDIg4puNxSZQUXRoIicd5cfNrXM8ETQ
oDHt5JJarZb4oAsoAhQBigBFgCJAUUJQxP4aZP4sCBMJqQhQNNV9iiJ7igwxp3hximufxqAL
KAIUAYoARYAiQFFCUFRnz0kpBmCiYEEhJhVN4SghQJEAiozZszhQNBcCFAGKAEWAIkARoGhK
UNRg/Di+wBOUiSgVAYpmNX32xFx8lgUUAYoARYAiQBGgCFAUvzwBIq2DM5Gudr4AKJrZjtbx
p88ARYAiQBGgCFAEKApVnuGcQ5FX+bnfeVVCLahuF2fXdks+fZY1j4NdfCiCIAhaICnDdVQC
6gdQlPzqM3okLKAIgiAIggBFS74k3zwUNj4UJTzlufrdTX6Go9rK38ONWLPrWvXMPoe+D0EQ
BEGAohsooud8ZBcCipQw2QOKIAiCIAhQxAZaryQSUwQoggJK/sWq/Tc+O5y5N2nQc4XsevNr
qo/cabW8N2VXiugXEAQBilIPtDbWnhmeot9OoOi+BUWUib66NxdQ9DAnVVXjgoqe5svGrYai
N4Xp5t/22SvVa+1D55VG6kj7uBXN7sdEa5Pa99v3VUmKidhtRGarvjGVmx94la+MwRiCoDmF
onuUFSwouj/PgdbZLD0QNiQUTXnbhChQdFJ7oL99BrXa/9k7e9+2kSyAdxRwf0AaUwQkQIAl
mpQEkZIrQQIkSIAhy7AKQxZkuzOQQwAbKdxkkeDs0oC91R3OwAUpFpekSVKlu2K7Ky7l/Qlb
X323xc0Xyfl4M6RkO7Z3RWA3lkiR8/HevN+89zhzjH4zbswrllU/Iv+wH3nwsx5gkp5pw0C7
sjTRdSzLSEWefovd3Z41+HTUaMzfoz/G4Pn4gM5nqFUCRSmE49wVE5Wr9Yd7F6Vj9Weo3h3D
rsYPWr7VsTpWx+pYQRFb0fpZvHjjk4ciQ/js0UGRl+mpS0ePOvg6AxV5haIDrx2GTPd+7ADq
ThQ7bnfEwizs4MCkx0GRuTZOttqnb4/nPEgvR8/eijq9tLQ82A2RhKffY3OcDLL5qBxc07vY
JvEeizfyV3H71bGCokcORTR89mwFRd/3wGG+LMNjABU33Q4xcOkbmAg1F0RFdiAGeYaWtCaZ
UqIFw1LE+8VDkZGKnHQmmnboa4aFnZm5IR8qfpYs48bFDRVHUYo8dMTufOOnheOUlnx+x9bY
Key0Wuf+/UPRlP6TyoA2FYTBkQBJ4jFTIMp4Pu2J+fRvkmNOPKzLOgS7LXTAd7fPWq2Xab1r
PxBEE5if5qMPi/y0AR6qfMw4MRGmDpl+fjsGzyRA5apGtzMUL1PZpyl9O12s71eeomcvfkNQ
hIYc5onA2OHG380eGRQFGSfZNX+Z4FnszOkbmAimooA0xnyCnlsgHiNHLGawDKPJTCRCkYmK
nDQmsieWdXN11Jif76HqalsGC89Dxae4rSE9XVW9FDH0xJYOrBTqFY9f82xPAfvlXUJR0bzD
EzRALNgHf93eiB7hoZ+WT0pZVKWvl9YwZc4h6FZaBexgsCFLt1Y5uwiJ9ls9jbbYHz42xyme
ZSz9QP2HB7RkhxpEZgsxe/fko/JShlIP1diuuPzoIvRYSVR2TkFgA6NIECOO8h+L8mjlpIz1
7AGDKwwc73uLC6iXWjw03IWsiOWeoq7A6F4yDYAlvWgNisZBd7G+/91DEU4oeopQ9Oa1/bW9
u7M2KtZO10bj7tf2mz8jmfzP6WcMRTS76LrRGNK0okcGRVQbJAUqf21n0jtdaXdP8xITabwj
sWlWqYgMKgg09l82Grt7hDIEQ37bHB+WJSVCkeEOTsqzan5hJ7qXPfK1N3IeKEoa04PyZ7o8
AM2gODwzVclZz9sV/GS7UrrjaqVA0aZ0KDbjoh3/a/+Yz9lfxfO15xt48o9m5DPsZLBPNK8Q
2qPNJmdgYuMTIN3njnk1DYrCRSqAek2kImT3NB1sH6NSzco6JiKbOExHpzou2j1i2YXh7pFq
EG+uWi08Jxi0YdEKU6Gom2IzDefvD4rg0drNLQJFIkU6vgpFSaPhplyQ2on8UBk7J/8/ln5P
0wNIER315jX/WvQTHQNQdN1ix7FG26lhNBV8BUWLvX32jO5+9gSh6OP5xdXotHXx6f3p3y92
zptXby/R2V+WD5+V98QB8MC628+bfQkNJAUvVwuqq0NtZU0UqDuJRr1OytUdzkhLVES0p9yL
BoqaH4op4XDmdygUA490hzt5ExPJUGSZYcbERIIh6PZ0NwqWCPR9PyhCzbLf2+9pCxjPKOnP
uV5Yzw/FsNju3mZ/JouQi9oRN7mnTrN/EgvE6cA29Sbu55eHojAK70TBnUAqgIcMJuIB+6RP
/gNemcRuNhZb1L+pqIhlZD2kCiul9VKgKPoYl0usgERFWiaqNXvY+GqZqNv7RvsMXpcBVW8r
giJPdIciMx99tjuQI4mMH24KFCE12jDP4fTns0BRHD5bDIpw2fdb3DGBbH8Um5rmIE8R3ySO
r3qK6kWxLotBEWld8hM235A1DF2AR1TiKaoq+q1sCesBUFQC/oTGSFh0sGvYPq/Wr3AbneVX
UJRt8UaKRU8Oiuzh9tGJ+2XzXac/39vynjdOtrzb5RSVq9tN/jiw1M+X1k1zr3DT7BWgz9ag
ib5Bf6JBcJucP0Dn2Vd+ohMOaONxBdU0ESdTAIKkP9PBQUqEDvN6JlKoiIwp3MBPIj+cqygt
8ZtmYV+jaSuY7xIbLxmKtFTkGJlIidWXe3DzGDwxLBMleUb/rqMMXPgsgIsXDNp4Mj3UJOhw
mkZ+z3ndC5diyKeDZM6XyQPJt4d/CaQ20Pk1+CgWYl2/LRSVSVyCspVafzsIURcwJpIDfOW9
f9gf2hEUdT/la9ttbfgIioJJ4UrACJn8EDEUJa9yShUQqEjLRFiIr/N6JiLFIPMI57VGaxAU
Fd4NCRTxN0HP7/Odrz5/ft5DYJE3QhGWJxMV1fzrQHs+k6doNNZBEd+eZAAsKvkQQkNA2Ecq
Zn9Vgv3O+jFPRZiJriuyp6jeFgq7YHzXSYGiXK6Rm08OcC7CkZoVx+QR1yu8HyhCrd9lLwsP
2l7WTIfVK/lrz148RU9REKIB3Vtfq5Sc+t8qbu1VMfj2l+rHZJ2iIhE2lmSUDYpKQHqN+Bk9
hgTpPaSI6meigUPMIeVeoYjOe3jM6lax4nWSaWgysQ1VgyS/5C7Pgktg9MCPTUFHmfzm9Uwk
UxE2IoLuYSXnTImm/VyxrCXwtTW+KgoU6ajIMcbpVBtLfFvakbtkykS53Sv/mSL6mtK9QRaT
RBjszlaaHwTfii9zYQuBYFvgL3m1BwpFWFj9dCiKP6O/dpGJdgYTjTHNCEWo9Nf5aYeKeiDa
uBJholyuxbiolARaGBQVk85zc//M1dQ9PjsmTHdkKCqZZxwwFHnW1pDBhyxxHBWZmAhPEfRM
FHXwYPzltUYHtvAyFtjX4AlzkIp1YHHKeQiAD7rGpaOXDoqoOOmpCOu/raWiNCgK9OEzW04d
l7/ADeMKjwLqwGgPCp+t572EijATubYIReEXX6SiYNHEQzTorxMoGhVhKKrFC5ioaT93A0W0
/zQ+aOwi3z/K2/MJNEFeQRHoKSJ7fKy9eHqeolzMQiGiGUJH/62/+9cvy69TdHso2qrwVHRg
bfJM5MbLB3rwGBJVcL9tMNvQyBYtHITPATZCUIWOrDw8FRHzHfCPoNGL0Bg9S9gu4Cql6rcQ
9VGskn6Srb0CGiU82W1lxjjS5oWdFkt1ahG6vOuM7AhG9NG9nEQDhsSXMDcfcR/7RzmaL8R0
AhfdE4UEh86QENU3UAeUUqFoHOXfoClHSHNhbgVFtPJsGSbe5uAaEz8Rs4N2pQ+3gmfK5zdn
CUoSogiMY8zXY4Lv4RUVGBUFaloIwwl9PlFA7HIEJzkjmIea/t86oTYXQxGPQW5yWw8pOuAL
IBecnU+00ePo6TrqYSn6GiqSJxUl5TyZlrrwkJquOZwyIl0FWthjX8JQlIupiDCRmFWHf1IT
qaj2w4K6L6XrKFA0ZK/F4tUYrK17gSKqA66uBaM2QzXN2vi/+5wittPHk4MiHDV7R6Jmw+3P
NI72p9uGz/DYlbz9GADXSZ4h+bzNUxHN+IyZKF5TmW84XqOS70UzFJi9GN0edzOQAzgqCtQb
cFSErUDyAnlsuWK913U5Oy+mAwfqixgmKIJNivF8ABCi4CYZavYETm5F3wLcPf1MPOmfL8b3
knyERqb9VmviG3xQeijy0jSlvxb3KghFZLFMB1s9dalMY/jM+4YasF68XfisXMXXDWmXczJB
XWOfiI8IL+cNMdF09gEH/axDH80wcPzvZ3umjSxC+i65hhSzovgJAShioEGpCPJNEpww5FhT
FAWINHlO4UA/5yF6w6DIIVCUzFGoH9yNmAgKkKKLzg2uBK4JdNTjMp8DdF6bzSVWXjfPzOKI
CTlFCLVMxMf/eSiKqIgykQRFPzPu4qjow4ZmMqILULEFI3JnMwiKnGQwx/OL0mJQFAhPdbRD
0/zi9Eg3rCTNAziKV1Ck2eaDYhEIRfLWZ48JiubvT69ofvXH84sdknHduQMo8pInBkniPzkq
ChRdt0avdlrHhavWZHBFzotUJDBRDEWB+Q1RuuZOHh74FRPUnfCooWmBmIqCOvCCSkJF2AqI
Zg4jUlYoigfIEpTAoQSB0j1BKZ4k2CALpNTtgcVti03renRPmPq/fTdQk4+6F80xuueZskrM
WWuGB6Rm+qreJHFJl31uhqIMG/qtr1VIibuTA9JKgbW5JTV9SGMPSs6ECkU3LIPu8lURSdNg
dOucImSODn3WfSJT0PyhKbZOedBPVNtubhBfg1MiM97y6UkxU+sks+OSUmQTFMlJfmHMRIyK
gPAKoSLUxPrVFtzIk6Nl5pB6EsD5PoUiLnwW34dGYykVeVTJ1UmPXbmuwsEbKtzoJN6zZ/sS
pqJutZ/DM8T5S5CKvBRwoJVe2lOEGzeqEego6sREo/EUMSpiTCRB0f9yChX9uigUcbHgHJDZ
L4b/lOCryz/FVaCogLQxgRqklP6C8zWHF7rMrX8rKPqDCkUQFT3yDWHJ/me/ESgqXL9cep0i
FYoWDZ+t53kqwuc5JooSSsSBmFMToUH51CJPGzxjyUTR2WPLbCOGsFZ0orD77aAorlgJwBNx
SglCEWRWTDlHSoYIYPigEBrnhyOpnu1pp0CDRrv+9awbZ3t2opcG87ndn94eqkskVazD9Qki
nSG78IeNJaAn5XzNz6ArLum0mj8Yk8XjGvNRDKQ2xggHi1lAPJmW6/Sz5RThdhjfQaI1FtLD
cV71HpLY2UWRsBFmIpyUavMrEXWblySlzSpsbvr01eabZlEHRfV2typrlVQ8T83UT4MiLiCF
qQjKOSFU5LwqmmOnXmqyGprfQFdEUBQnWlshlyxG2rFQZEwkrypGBOAtSfPOaZnIJRlncLZ1
N2qCAC/rMPg/e+fv28aRxXEgxW5ztVN4uQAJMJBE7YrE7pKsBAqgQB4I/YBYCJJAS8AVBgIE
kOAijQ9iYJWGpTRXxEEM4864OI1sNW5SpTjAzRUuDgjuD7g/4XDd7fzY3Xkzb2aXP6REtlgY
piRK+2N25jPvfd/3LeeOzqqaPJsFioTwUGhh7vpp9akWikD6FUARXxUAFe2V9FAU75EfTQZF
UMjFTIsmgSJ5tBVqDqWVgLhFQ+CfNhQxILqn8yn6PUMRnj5rfNi/Pz8oGgATCURDFOw83gr6
jaPg4cJREFqQiuKfB0zEh2Sok3ZKFzQrNk+BQp4zpfSQLlKUfQw1D/Ss2lzSZ64clgMCEisf
ipA1wVSdhpdo16XVSb7loCyOaGBfwkMj2kuW7/ie3oDFk9K3JTLlhioUNX4gU+F3q7yS+nVl
WiiiRgZYJKnYQ9ZYJtdahND02niposdls24NSOcMUOSXd6N5VJ+JUznQFBEmIrX4JII6Xmds
dAxq8p2AfJ2obZnGtnMh9ToRx88gHCgFDDIUqYuMqbQzPm4g0ompCBXiKn5Fcv5isdv7YPWe
YelToi1ODQvwks1hzNuDIQf0sWDtkTzNzkHCRGp9XTyMn+lFcosrSb0+hSLlNBgWkp8J6dTW
WzYnzyQoSpJnmuqzIq80PgTkRckIEg4YrT4ryZobDIoAFZmgyLoIRroW2M4QgaL44KX0rVy8
eK1QVG82H4hDru6Xm83KHRQV0BR9RfNntw6KEKH1P0gYgOqqpzJvVKFoUk3RT75IRVfWzyIT
LVxFWMA/G7XKBR3IU39Oxw2Npgj4oanzsjDvzya0NkCR/EENFGFaaoPeCIci36gbgQZ3zkZz
Sx4TtX6T0ckaXYgeDzrk9MYVD4Oid6SOuvemWyY/OrCnhKK+v38UBDvdXiVPsqHLDsdnDf5C
chUYFVCpCRVa0ko04QabIkVEaH2NUCQyUYLfx4pPkbdOyL/XJTTr1QzQuPDWT6Eo/SuQ8NVF
Rr6+ChTBnbYfXaF8YaAisjun8sJ4UnBVKhoLwn5njHZiGbWU16r0MKdMhEHR8QttiIpdvQWy
jaxiNWjxBShxJRadFWQqcnOcZdPQBO5TVDRUxORoaqAIugzs2TooIrmzhB8xKBKpyAhF8Qht
5RwtGB+uMqDg+ZO7Fd/eJ11S40Fu63yhyJXMRqkZafUOivKrz+4ZHK1/z1CElOQf/uaaorpI
RdwEI2GiUhihy1yUGylKnk9lQlYiRdiTDGdEZWkHe+GQRhT0JfmhqZZLD0XKSeugSJm+TY7X
BaEIXFd17WKNRrY3vmwdb9NkJPyt45dft3ZPzh/1qzgUvWltPL1oHb3ToUPSHmm0dKFtj5TM
5A5W2zQBFEXqVWA3k/5LUhmUesXrZizJp1A0a0m+For2UiZyjmspEy1eqlLb+J5oS7OSJ5oE
/BIoyqxpZChS0s9Lpg465LhD0ecmKmGRosVXq1oqIoEiUou/0yRApFBRPDQv6IDot3UqfE+/
zUmW0JiJRt2arUmfLRGbksPnl0gYsmvJUCSZUdLrkUGRTEVFoWiG9FliqOIiInSAEPr0meuL
vqcYFAlUlBMpCv79UvegI1Ake0PJFYi5QuvZ02cwUnSXPiumKbp3n8aKbh0UXYd546yaIm4F
k1IRYCImtDZ0ONVqipLFUZ1QJE1RCXmUFQiCtrd98Ji6VCsumjfWips3ajVFKghqoUg+XNdY
N1MthErA1qeCElO5Ul+3OxXE47Hebm++Wt47cDVQdD+wx08Fs/ICoR51Zc7Sk1EhHbF60chZ
eyT7snbykLoe8ZNgs2xY4/RLK47FhSMPimYvyddCEa09sz0eL6LLZgsJqIXs/PQ9aziXE13M
3mgFSophwTTS7SDMgyInzHxuiE4QcVTuMsuDHh5Dirg/UR2jItdKZS+Hm7qCfu2E5WZ1Z1kN
mmqEwaWGyvEtdi0VipjrjshEIhSR37Z8s1DEcAj1bSwGRVRjnSi6EKE1pCKT0NrUUQDVFP32
UORBoXftDooKpM++useCRbcPipA2H3/8+9nZrOaNM2mKEvxhVERngI7wxQjXiCCKnbIsL/F0
TyOsPlOfZSRdJlIRZCLe5mMla/OxAMt88XTOQgl+swr1HMiH9FBkyauGZQj+13ID2MpNrxXI
T4kXun4SbBCVUgdPnx3Ho+xq/6h/mr/h1U5IYsNYtaK30LMy6tIBlqnts8RK/Gdp9IXe2jEr
TisKRfMoyddrir5N8juMiUjvs6zCGUJrz9Bgfo0YBi+8ZcVb4eHmljY2JMWNkIUvUk/ACRNN
C0klqVDEa/E1VBSWzxPPRoyKeH5FTqvkBQv5X2JPJsudsfVW3NAIC/Fo2PaRyjYPg6KBElUW
oci1BjecPmOaMixQJCGEJn3G6844Fakl+RIVvZ4nFLkqFFXnC0WgJNZRdeDcH0z5/x0Umc0b
WQLto4CiP3zzjT+jeeMaz5WVptEUQSoiM4DIRFakOYCqDEVoCzTdiAY+RfLDjAqrMyrqyzMl
nVTi3yg2hJXbE2knQg+8T2WgpmCJa5ZA8YaKutgw6uoSGYM10kdSzZIQKYIze+fnRw8Ho93m
9pIKReXzp7vbo+/ftI4rs0DRY21vtGxIPPdpSw/di0VH4sH79st+NEqlu3zVff9esKXLVmBn
CK9u9p6MqTItyX8xF01RAjSiTxHxsCZ9YImOyHnEPa0rOBOsD/VQxBqreQ/ozXVaqxKUnIoC
nignOYVAEacixkTIMtXNhMAqFcVDJLOcRqgovjK989ajt37jh68FsRB8BTt/FtraxluwAzF2
neiJKBUh9UU8OuGEKFUoUDRQc+0CFEEmKh4pml5oza5sfBVR38ZqNgA0QuukFj/dJ4tQ9Ldl
mYrEL5F59OLomS+G70dDHRRhQuu6LwurZYd1Jq3fC1gBQd+fDIroPauJ+jRElCnE6wsGij71
SFGitL5Ln2GO1pNGig4BFcU/LzJROZ6ScY1IYxmsgPuraBBZP6JFR2tIRThQpFTUV38p2xeP
dskDtr9qK3WcoWHrlOBHFQhllqzJoAgctGuqY8YsXl3EU5fpAYbIFUkOTtQUSeRU3908J4wc
HMv5DWfYHhwQoeSwnRsomhKK0gFLIiHMTIlPzxvxQZ+z+17+r7BDdCMXCuWT25M2gwwtkVbL
FXgxwKM2n5J8gegRTdHSeupXhF2jup+lz1AocvmyQB1tFLsgp5O6Uq0tIZsNaNkgfZ+fANEF
cSZSlinBsxGjojoI0CBURO9v419+4z8rSB1A8jnR68EVjiBedD+kGuv43H9FYgFZYg1tkcGh
qF2tk0de9lz2SPSEPFJBuHBECGNgTwVFmvSZoq/bo665aDgvsjVQxKNjePrMzW4ApSK5zYct
UZEINSFplWY1Mv/48ov4aboyJrAgFMkcotyDelcYc47Suy4HitjsJYw/JDfvJfW2fd+6g6JJ
fIpuIxRdk9Ba0hBNqCkCEETafABIisxCZbz3WfIAvDM5/22AByItS9P7yVU1TEQOFEx8fT8q
mfNNwvf5LaramVWdMeGmiTwJh+2WjWXuai+vFUSOyX9lX7XHSyA1hqKFVjeFonl3PyucPlPL
ozp8raRrftqRYYuH0HZ2//Knn8T9rh3WQEaMXH6w1DuZR7Cs18rec3n7/ErykUgRr79fvGRc
RPyKlmpmUVakyS7FHzsg/6kl4QDxkHf8ZFFAC97tHR81axBPgDufITcI+FgjVCT1O0OoaO1F
s3lCIkVntI002sYHQpH4E674+OH9Uo1QRB8OAkUDdiUH2CLv0og3cUWXmKg4FA1PsSmV/EXZ
ywx79Oq+JuQNoOgVAkWABDwqx4duufLhWACKyi/ir/yaFTheETCaAIoku0Zo5SiDUAxI+9Id
yoEiPh3UxLWtLBuSROQaHJKWtIPwTlNU0KeIWlrf+2hK8mv2DOaNcrWZ+h5Wmynvn3TJZ4ZW
r9Wi3voLrdYzv7xNPrvfWop0xURs7FO7vMGUa25HRA1ORfq1nbdzquG/KVtF9zrK7lq2QwTf
Z6m8QbDxgH9dU1NuhiLhwL+rmAPr0gzlYI6+VtKjnR4dWBoyGySQPpsmyD89FBmE1mTR3m1v
bpfokVZj+m23n28lI5kU5ZRfBuLeVX7POqBvgaBi2hNE2llm7/n/POP875Jx/cQvAEXO2Smm
KToWYkSprsg2JLiqODMxq2ey92DPvBRdpBEiIWKkwy71+9kJpHcILlNSbw8sViRFBtAatCzN
gndpB7s1eFM8Es3L8A6nSiI2OosPFfOo6fD0WQ1lovj7jWUafPUQJiquKcL3mfRxqxYQEHp4
kANAERJQd6VNkKe2EADzLbVyzX5Xp71JoWiXe7O2L0jL7/+tF9cUsQ476Bth10mtNZ2HyNw/
OxTVf4k35DtP/fLzrfg/ryt3UFQkUkS9G2mk6LMUij6XoOiL22Te+PzN9D5F1vW+/ql1nYnY
3y+vl6ZeddeG4vMX5sQ7aOPvmjYbt3l5FASjH3fRuNVOV1ckR55x1sVpc9W+iZcHu91i/aVI
iGUgAJ0sWWKvQ99qW2kHqpuFovgo1vMaxtKxKUyR1Ly5scoX9Kq0wFeVQNl+KwiCJ0MQKyM/
3FuGdMDe8//lQJGm8YxwzIdN6fVANHD/hceIoK5IHypaxw8ivmbENvXt4wrrlFX35fvnkZ2y
YZM89vHzyDkBtd+ZycURoSKH77Y2/Kx7IDoCBPGcHM6Oj713Gdg22Yfg3o8sUuTqJMIdxBcN
fD85I5WJZk2fFYYijUQ4N30m31YP6askpK8eKilawtIlkO2qaZ9vDIrIc5pkRNc03fHir/dW
6T/2hFAkBObTm4FeKCSkfg1Q9IUERZ9nUPTZ7SvJv5VQNFXvs3EbfVVvZAU31BKxE3w3G0ns
nJTELIk5B+SZlrPRGWmHZLVPVqf4vhOgwoDroiIQBkGWBQ/MNtJu2jUPlxuCIrJqb9OGsXic
0GnxvF55m2lKW8PkfatU4BLpLNTtvUCWdKRqj4PZTxmbIOCc/f6vqT9R2gftQCP7KZ9q/kaV
Jc3qp/ReLwu5LmEx65kjjl3NWmw+gbUVNeSTl3nlVER/jRA4Thc2zYEkXx4rTT2z8lNUi5iT
PrMFlaAmSM1bniFMdGNQZLtVe0ooghM9AkVWeZ0OOd58rmiBVkEootHp3mWr9WNXIxhLBji2
H55MaO1pL98dFE0cKeI+RZ8CFH06r9xQqVf7KM4z3rz9n71z920byeP4YXEgm6t9QEQSoAFi
ZTGk5RVFqRIkQIIFGJINuzAkQ5a6BDkESOBCzS5irF0a55SLeLFBsM3uNslW221x3RW3xRUH
HK6/+xvuquPMkBQfMyNLysOP77dwbP04fCqaj36P+Y33yFxOvipzPnW0UkcXfz7cECgK051E
H5qltE+R31pXeouyZWofR4NKTknkiXueaW8ZG52vq6nltuMNp6/fnsjhy04y4HtLCZtzAWor
98Bac7/XECoKe5eXo8BM7Fct+/zvGSQzjDQfPuB9ldGm577//ETwRtCiMgDhB4InZaLQT8Vj
ovn3rxY2b5+GVzWqpe5fJfP9qbLY96kW21tYfUYrCQbJAr5BjaOjBZ7ve/mPHycqisMA+67J
zSQ9fZ7NXTh/kXn0yesZ1ERvgunJQud876Ho6VpYkn/7w2fDd4d/kK9TBN09xdE8bop6K/dx
8K/GXCgy1z/6VQymE13IU6tB0bxb9KmwnbbVS+QVkdiZU1w8gBx8MKQzo272f/aAio6VBb+R
bLTFq3Ws/iA8KRMFdl4+EXRtMWiVPgL9Rp3wPYciVnx2G8NnnETr/229+du/pesUQXdSleAb
4HIhuxHvy2StcbMuT5vGZxaGz2bSr3+LTio36qJKbFlJGjsjeUVkwXdpjaV4V6kvyKPJTXdu
usriXlqWq/dhoJZQkbRvnzcGE90n3XcoWmNZRUtA0Sd+cJySfEZHOt7UEHRb9NfvWSi3/Jd7
c8naUjEa7cOl6mnNnZXsEKDoziVar91CKNJ04nI/YrmZA12txK9AEHR7qAi3AIIARTdx8cZb
BkUQBEEQBAGK3ufijWtx7zNAEQRBEAQBiu6xp+gpySoqkBWtAUUQBEEQBCi694nWBUARBEEQ
BAGKkFNEfEWAIgiCIAgCFN3z6jOaUsSFogcCKPoCUARBEARB9xaKvshAUUhFDyIo+qMAin5/
wxOt11hGET/R+i5AkdY9Xrr1PHSXNa+h6W23QxAEAYqW6H3GvEUrQdG8Vco/3SrmrCXCJ2jb
AN14KDL3arUz176rdgiCIEDREonWa6t7iryq/CbPs1O1zvek7KT96L947+6AuCmg8NBajy6w
39/NbZFoci3oAg7daChaJ71j7LtqhyAIAhQt7imSrGj9UaGo2590+w2pz2cJh48Tt9EUqHnl
Ux0KuqOdBuRj1uvk5w6gCFAEKIIgCFB0p8NnlIuWDJ8ZVhJ6jBxYlKlvR/Oq1M1yKoGa7pNg
k7KYikgczI6bRYcHGvTqfUYhRp3jyqHg0p/8cuaKWyk2w3NyLBGJMf+V1nOzHaqvC0VNZfvh
PD/UBPZlxVrA93cXtQOKIAiCAEWZFa0LhVUSrb0AT0aH4bRm5B0yTcUO+zuPd1RH6ciZKJgh
txo8sJlBR53Jigz95wxUyv6xwm0F6wwf76paRdWaHV0IRd163S3ywMVL7LTVzlwfOa++P9Mh
H4rIZqKZqxtfWrEBu4Cbpj3f3zsRxDeDp7K9V6v1gn8ai9kBRRAEQYCibPVZmFa0HBRpnlJX
zOHl2YEb/FLVOV6SY8X8KZiUXGUsYSJHUa78C+pq4UxtG5tXvu/mwmBaKYVBZW7OqdEn06lB
4IzrhpJ6ipyUj2djU7GytJN8YXB2uCAUOUkfUwN2DhExpGZYrfOAOWKdVpsXXZXYAUUQBEGA
otzijYW1FdYp0kphUElrcj01G23lJbM/EgWRtN6FO2dyNJ7oLGW6mmYlO81I3MyhV3XftRxy
cq3DHdV5ecSBole+3+Y5kkbtxEVtZJ0NOSg6UZ00FJX9PT1Khtr38wEcdsUmCwrmbx+zj312
f0T27Tn2YA/S/Zv1el06PsRVgZ0Mrx/Lzu+yJz0/MwRe3tuHeJL6b08qlWmvzcnqCt4CwSht
3/d3yX3OEym1x++PtB1QBEEQBCjKeYrWVkm0dmac4vH8Ic7sRYfvL9k4fJ1Jy+G5FK7YxGmG
kap1NuOlvTuCdG6tUu4wJ0/Z/WfOnUChaFCrHfAnl2Z8fQHb2HkXkJWa46vlrx6mpmQ61Tvs
R3pjNVouQBnqDr9Ejtl/q/zQYAFEvn3r3eOJzE5OwZPsn9wQ9ptgvNV6/GfJ/u3oVgjsVe3H
3a7k+FuT3i7//MndN2cViVrTzfkavYBzgsGmS4BpYzP3BvC2Up6+KqAIgiAIUCQpyS+E6zcu
B0Ubm7NZh/1+OtRTWEDto0lm28TM+MwylLlUFM3vSjLRWpumvT4jYbau8+RAqbbairL97pcG
B4rIJvzJRStFFJXPmJoLRXSur9K4nsGZ9dl12623Dj9JO3QUucrWdyWxnXKNJ7PvqJ5k/+ab
kiI7fjVO6RIeX7Ekx7ccZes/m2K77YjGM5rU9g+jJRGCJ2hnnoAdBshapeBROFnizURU03ZA
EQRBEKAo4ykqhD1hf/fZNaDo8ywUpWYdOuc4+TwfQjTkVUfh5O00bdVQrkFFlZQWfcqPgsn/
ghuiiaBIa465617HLOTlUlZyUNRfN9ITO6UdW3u2TsEie3AvvFzbidiGb4+4RWxnUCSwF3/+
1ZPsPyQWod1KHEZw/OLPrmS8E0Ed107P3TZ4doPcsa67fUme+A9t6gtKb+NsPYyCYiTBLEcI
mWhm2g4ogiAIWhGKPs9C0YM8FH12mzxFT0NP0RJQ1KMFV1ZyEuv7fns29ZdDuxH6dqg9M/E5
HRZlmkNFWjBz1pXxMUnrDn641iKPuGmSOdt87fLWK2rGJ6T16p2jnD3KSslkdfOgSFX33Yy3
Qzs7P1Q65/91x/7bhsj7FUFRxg0y845F3CKyF0cSe0AdEddw7Vv/OFQkxw+OfXUx5/wsR2Iv
jp7tdMV2BkW8+BnFnYRzZ5+6hVJPwSvqMZYHjJDLKvPSzyxtBxRBEAQBinINYZf1FJWSKwYx
KErnyxpkzcMUFJlRMX28CanETxUhKdm9MjeOXe4E/MJ+PNGdRaCo2SHTr7kTHIWT6t1MUtp+
e3uyGBSlXA+CdYpO3SGvnvz6ULQjgw7l5VGrLbHbhiKFomLlSJXsv/jNybRhSM+v+M2mIoMy
koQvOT8S/+JBUdmtquUvE48n+GMWzZxBkRVtbgGKIAiCAEUrL95IvEVLQJHNSt1nXp98eIza
w3xjrp0Nb51fuBIo0ryx3za/drfbCv1xtZCnKMAeQ3lRaPLXb/Su/GRZWOugqOemZrYhN3yW
nGUdDhQNpq+Pi+d/N4eXlWWhyLQMV2qvd0ZtmadHDkWkPuy7khiKdC8Kf4nG24bs/EnlX0Ey
3txRW3sGx26QLKFqaoCVeQ8loSjYHFAEQRAEKFrZU0Qbwi4FRbKS55mfRavVdL7dsPNTdA6K
NG+eJ0kqozM6UOqiQV52NmbOq4TdipDH5kBR4kX6Z/oS6dqE1cKzdRo/6vAOnYQii2u34kxn
vn22B57dUiuV6A4Kx1vi8dQNZMnGhxlNAjsFKsn+xeefgyLVszNQRHOKwnegt/UQOUUQBEGA
otXDZ0+XgaKBnmQGXnlW2nvEK8mfQVEafa4HPYOM60Ww6PHp8wZxVtWf6CIoMi9roU4qlW+T
E2k3Dgdml24kFGQOJ736T8GYyujsIvj9OA1FNFmK5P9aLEBlZd1oaSjiV2fFwSlJ9Rfz1XDt
ZMnt9dPjOdVjjtDOoEZW3RafoGS8I6+ee8OrrqOlZclqvo0/rWf8dcRNFDorybvLyFefWTmM
ABRBEAQBiiQNYdnijUtVnyXqgcouL58msO9EeMGxG/aslCxJRVZu3uZ4iq65ThHd97NdXW2y
zVsNvruCU2SlNRN/ld1wHcr4ha/onlq1c//55YRdQg6KSLIwoUUvD0VRgrkt6FrL7HY3XFxR
YB+3la2GJ7bPCsgE490ovMW3k/AXwx7B/uOafcH4rnz/s/hbxk49i16yzUo1m2hN3USOMvb9
ttLhpH2lX8nYAUUQBEGAosw6RWth87MloYhMZ8OJro0O+P4dhy4xU6nQrpwcT5F55V/UzeFu
hoquCUXXWdE6ZB/zhWqQ+NV+poOZFIq8VB1ceTN9BeV+jvLSUKSe1ofRitaktk3n3BySKf1I
0EuW2l8SP1RJbP9NJ6uFi+0kUduT2G31iCVCC+zmuqbJxscpRaLxu6p0fPA0WtxljKjrUWua
rCRwdOAS7Mm8x2jGF1nIiPR7zWd9zTLC2Htg/S5BD6AIgiBA0YdYp2gFKArmrUJYWtQpeHkq
cpSOxpo8mHt6M09FUaL1gUu4KKKi8eG1oChDQbL5QSMJUNq3E9LqPl12z8Jne7WeO4Mi7Sge
ljjlXCOTsptpxzVatPdZkshMC/acOeDI1gGzDxvkcVRz4BQ9kxwwzbMDiiAIggBFWU8RC5+t
LQdFHu0BOy0VT6inJ+eqoc4ZdVAqUsxo7gigiHDR+fG4/jVtdaXPurNulCRQFMx421H39EHt
nBu+i44z7qivXFLqpP+/vTtWaSCG4zg+KHe7g8u1BzeIupRCrHUSBMWCWMUOoqXqCwiKg6OC
jr6Bgo/g6/g4JrmrjW1yd55Uqvl+hi4pbblS8uv//kls87KcXpqjUPQ+2iLQOO/saDuYWJim
nt1d1w1Jj09n9nJIXigyNiOwnWbq+7jMMfrq14SoW7+BUPWyJ6cXQgx6jcS6+aZ7PJZRuP3Q
yAkdf3scAAhFFc4+S4/6qHj7LEsWrfyL7ByPv94AG/YXGfsQTe7saNxe63x2NscyTW26C0Uv
729ySu3azgHpBMmBmmpP1L7Ja0FL1M2W6lpPztfP6/rM1fHbX83G5AezhKLsQFi7rA5iHPHF
eGgW54Lzwwu1dHHwavkGdBxOK5XJjuMdnOOx/cS5fzMOAISi74YivaH1YtGS/K+ZaGqhaFRA
WDIihfyjLyfHnboQ8lH0t3rOGTbnA6hZse+YW0aRReYX3blrhpjB8eftm7BSKApDkft5hWA8
LAiNjm9gmHuE6Oe9Q9E4AKBaKFr+dz1FZY75KApF93f5F9l5VGtRKIqTQ9FRR6Bnj/uNYPdA
Pn5jn6LVqyU5s57vWSfe4V7QY1pMqrPj9vF4Y6N7fcOVAABC0ZQrRVG2f+OPQlFl8Wnbpleq
0bp8lajrDGXWV1+p87sAABCKqBT9aig6adv1S46XKzXkPPvW8uKb/CoAAIQi70JRWihaLGq0
nlooAgAAhKKZWX2m1+RHhCIAAAhFPleKsiX5EZUiAAAIRZ6Hosu0WkQoAgCAUOT76jPdaU0o
AgCAUOR9T1FEpQgAALAkXwcjeooAACAU+d1TFOmbZ+OhaI5QBAAAoahMKFooHYrmZ/7ss3RL
a0IRAACEIo9D0bBSRCgCAIBQ5HelSC/JV+UiQhEAAIQizytFabWIUAQAAKHI60qRCkSXNFoD
AADPK0VqiyLdbE0oAgCAUORxKFJnfOgl+fQUAQBAKPK7UpRtaU0oAgCAUESjtQpGHyZKeNGy
nIsdAAAAAElFTkSuQmCC

------=_NextPart_68E9F2FC_8D982EA0_4370A269--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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==





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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==





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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"?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.=




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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/




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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:  &gt; &gt; &gt; Do you see the same problems in an unpatched
 Emacs from the master &gt; &gt; &gt; branch? &gt; &gt; &gt; &gt; After removing
 the patch and recompiling the master branch, I &gt; &gt; 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:  &gt; &gt; &gt; Do you see the same problems in an unpatched
    Emacs from the master &gt; &gt; &gt; branch? &gt; &gt; &gt; &gt; After removing
    the patch and recompiling the master branch, I &gt; &gt; 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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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/




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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/




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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/




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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)
	  |                      ~~~~~~^~~




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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"?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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).





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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!).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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=
.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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 .




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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!




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.
Merged 79297 79298. Request was from Eli Zaretskii <eliz@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 79298 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


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--





Acknowledgement sent to Ewan <ewan@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#79298; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 13 Oct 2025 09:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.