GNU bug report logs - #79374
[PATCH] eglot: add support for semantic tokens

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: me@HIDDEN; Keywords: patch; dated Wed, 3 Sep 2025 00:43:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

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


Received: (at 79374) by debbugs.gnu.org; 20 Sep 2025 18:28:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 20 14:28:41 2025
Received: from localhost ([127.0.0.1]:47598 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v02K9-0005Lm-CJ
	for submit <at> debbugs.gnu.org; Sat, 20 Sep 2025 14:28:41 -0400
Received: from chocolate.ash.relay.mailchannels.net ([23.83.222.35]:13405)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <me@HIDDEN>) id 1v02K5-0005L1-1G
 for 79374 <at> debbugs.gnu.org; Sat, 20 Sep 2025 14:28:38 -0400
X-Sender-Id: hostingeremailsmtpin|x-authuser|lua@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id C0A5F422826;
 Sat, 20 Sep 2025 18:28:34 +0000 (UTC)
Received: from fr-int-smtpout26.hostinger.io
 (trex-blue-7.trex.outbound.svc.cluster.local [100.108.36.204])
 (Authenticated sender: hostingeremailsmtpin)
 by relay.mailchannels.net (Postfix) with ESMTPA id CF382422466;
 Sat, 20 Sep 2025 18:28:32 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1758392914; a=rsa-sha256;
 cv=none;
 b=rjXOxaoFp11ZaP5004c8v86XS71osIKbzpvQageVHOqrqH5CkckDZuewr5IE+nxF20ht3s
 zXVS2Ze1orXYJ8SD02Hna3oWr/tFy2JgLD14tjzWhLU5sZ8ozRqDs55R0cCYi22+ucVAGD
 9NOsKtUuZAB3uiNN/WgWxRr1mS4pReKE6GIXm6dzVJvZwsTZcGILPx+vdRPx1J4qbxC/d3
 9h5dqQaj+d/RzxWYgqrp+fX6XdUkrxFQHk3sYJXU7t6HcuAuWCKF77mISeY+TMauQGAWPC
 JXFceg8+BTAz6789Xbg8IVW5MGiA1pQPHS6bN7a0oR1wfGQ4z3GgTlUH5iOP9w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1758392914;
 h=from:from:reply-to:reply-to:subject:subject:date:date:
 message-id:message-id:to:to:cc:mime-version:mime-version:
 content-type:content-type:in-reply-to:in-reply-to:
 references:references:dkim-signature;
 bh=UJ870OYyxybBan/qAxb3gB3oOcVlzTzESqJLPjWr4o4=;
 b=hmXCUJi8JZDyiepqkjbOaBG46OfWRmQDTeEhd2ikcBj+mTW0IGSie9wkOFjXAxnBGXOnpT
 Fgt7P15DvjaBLsiMJYcrwNaNzzSKvs516KPnjaREZWUqslooYGj4l/kBcxjkgpE1tQt+ue
 Em1A8czwE7O7tCetqjCuA9pT0778FBtgUQdPtlbkf1C6TkjnJbEpNwpkO7gLCVXOmwBuj5
 +ktZs952ubSk2hdrMQqfBesPSbzh0rUw3fw4Ej0gJbjyluXg7aRHctbqeC1PN725tK8RGw
 07xn8e9yVRuFLb7guLIbO6pBgrYfCSHgPx4mGwBUKkCzxOZomF89OnADj3Rrtw==
ARC-Authentication-Results: i=1; rspamd-59b854cb4c-lplnq;
 auth=pass smtp.auth=hostingeremailsmtpin smtp.mailfrom=me@HIDDEN
X-Sender-Id: hostingeremailsmtpin|x-authuser|lua@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: hostingeremailsmtpin|x-authuser|lua@HIDDEN
X-MailChannels-Auth-Id: hostingeremailsmtpin
X-Celery-Continue: 2233ce995c3dba0f_1758392914485_1714015281
X-MC-Loop-Signature: 1758392914485:3257163232
X-MC-Ingress-Time: 1758392914485
Received: from fr-int-smtpout26.hostinger.io (fr-int-smtpout26.hostinger.io
 [148.222.54.11]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.108.36.204 (trex/7.1.3); Sat, 20 Sep 2025 18:28:34 +0000
Received: from [IPV6:2804:14d:8084:9f01::1001] (unknown
 [IPv6:2804:14d:8084:9f01::1001])
 (Authenticated sender: lua@HIDDEN)
 by smtp.hostinger.com (smtp.hostinger.com) with ESMTPSA id 4cTdDF2jFSz1xnJ;
 Sat, 20 Sep 2025 18:28:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lua.blog.br;
 s=hostingermail-a; t=1758392911;
 h=from:from:reply-to:reply-to:subject:subject:date:date:
 message-id:message-id:to:to:cc:mime-version:mime-version:
 content-type:content-type:in-reply-to:in-reply-to:  references:references;
 bh=UJ870OYyxybBan/qAxb3gB3oOcVlzTzESqJLPjWr4o4=;
 b=jr/V9HA/yhZ097NnS1edugC0kscMVCsJlY7Z/OXGOhRA1QpVzg678JKdD/YoyxJX22F3TT
 tXYJuNvGfeG86JhftHm/iaqd+v98zpz0UM7tzm3aWrku4HnQz/OuPEbCxGdfY0PvhRstbS
 jOwxbEFx3iplthP7vjeFMRC8RTHqSFDlfq489/x9SyDhzl+quAXiRhWQsPwT6teQ2b3Zgv
 cTFnxN7ODRXwPCdtoODfdbtgJQG3hsWRgeKHL8L85Yp5MkXQD9osfZB12Alv5ZWXdPurFq
 T7z6N8l8h7dDcgdL9JmQn+iZJGHp2YZKe5OpVn7eDNc9PCEZIukguP0LElJxeg==
Content-Type: multipart/mixed; boundary="------------GJN5oDb0aW0nJ7zJh0m0tAhd"
Message-ID: <6565a5cb-851f-4eda-8721-7ca78e958fff@HIDDEN>
MIME-Version: 1.0
User-Agent: Betterbird (Linux)
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
From: Lua Viana Reis <me@HIDDEN>
To: "J.D. Smith" <jdtsmith@HIDDEN>, 79374 <at> debbugs.gnu.org,
 =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
 <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
 <m2o6r5vxmz.fsf@HIDDEN>
 <CALDnm523KVxY_UTOmRx25ETWnyUV=i-kVQh6+stU_8kecgggaQ@HIDDEN>
 <m2jz1tvw0y.fsf@HIDDEN>
 <d7802adf-79da-465d-8107-50656831c52e@HIDDEN>
Content-Language: en-US, pt-BR
In-Reply-To: <d7802adf-79da-465d-8107-50656831c52e@HIDDEN>
Date: Sat, 20 Sep 2025 18:28:29 +0000 (UTC)
X-CM-Analysis: v=2.4 cv=DJTd4DNb c=1 sm=1 tr=0 ts=68cef24f
 a=a7fqfHw7GlYXtyy7Q6Sjnw==:617 a=xqWC_Br6kY4A:10 a=r77TgQKjGQsHNAKrUKIA:9
 a=pGLkceISAAAA:8 a=5pKtzuSfpS3vxJVUnMcA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10
 a=OK3ux8P1vIYdBQBqfCsA:9 a=1Vq_FK4TplAA:10 a=7FNYEHr8PWIA:10
X-CM-Envelope: MS4xfMbOWXwKHi2aFecp9NgKJFzPW0kAkN4IxxUsMoRtghblenLtbNXtEkXKmfoa4mJ5iNsBYkKZNFqwLH02GmZAKr9WzGK1kLPA8+dYa7p0qH+AtzWrVzw+
 K+eJx78V/tjwyztnHXFRLYHkzPuqc3gjdJBlaF08N+Aaz2x+vzbGrAKAYHJAIrv+kVKopmEvEV0pXuCF8kN9q5vSLzRNy1WURe9Rje5v65QdvD1nXZOuDppx
 W1LlVj31L2QnnCNGGGgmHjPHDd2VfEJjCsSEGNlFqQr7WsFgTEmj6bV8zvPOCBZ5
X-AuthUser: lua@HIDDEN
X-Debbugs-Envelope-To: 79374
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>
Reply-To: me@HIDDEN
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.
--------------GJN5oDb0aW0nJ7zJh0m0tAhd
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Unfortunately I clicked reply again, and it seems the inline GIF is 
gone, so I'm sending it again as an attachment.

Em 20/09/2025 15:25, Lua Viana Reis escreveu:
> Indeed, my complaint was not that they interact with each other, but 
> that the inlay hints sometimes fail to update while the semantic 
> tokens are doing better.  Unfortunately, I'm gen-z which means I'm 
> half-illiterate in this technology called e-mail, so I clicked "reply" 
> instead of "reply all".
>
> Below is the GIF I sent to João. Even if the semantic tokens are 
> disabled, the inlay hints do not update after the edit (but the 
> semantic tokens do). I did not investigate the problem that much, but 
> it's not specific to the Haskell LS or code actions.
>
>
>
> Em 20/09/2025 15:06, J.D. Smith escreveu:
>> João Távora <joaotavora@HIDDEN> writes:
>>
>>> Thanks for the testing, JD. Are you using in conjunction with inlay 
>>> hints? Lua reported some misinteractions...
>>>
>> I typically disable inlay-hints unless I need them.  I've re-enabled and
>> haven't noticed any issues in a few minutes of testing.  I'd be
>> surprised they interact from a display POV, since one uses overlays and
>> the other text properties.
>

--------------GJN5oDb0aW0nJ7zJh0m0tAhd
Content-Type: image/gif; name="output-2025-09-18-01:59:02.gif"
Content-Disposition: attachment; filename="output-2025-09-18-01:59:02.gif"
Content-Transfer-Encoding: base64

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
VzHbxTQ15f+oC98Wq1ZloG71TerK7MelXOWxvNkKDej+rOXQvLaxfcBjTtoKnuC8PjxkTNmF
+VSSpm4kztyP3MAoDr4YTuOavdl1bONyfMxycOdI/Qaofb3DDdbKPu3ODuDgzufU3ueW3OwT
DuHwHOu+S9PNruflDu3XOeLGTen1bu+V54w+Dt5TqcuLxMsexRhK9lckzeQA7zZhHGXqZJLC
DuoK61+rLZOvqVgTr722O7fGDee0rrF2LbuFDsELmMdgwKsPK/CuntIqDY9pjrsXT9zQvaOO
zsFW++fsXtdzjbXo/qIvry4KDgc8HwfXfmnW2vHPzu2WLPPJdvRELOt2beE3z7P/OU/xHo/Q
m6XzTo/0S1/ze/7mb6zoBIz1WX/vYS/2ksevD6qD+35DfhtsgHtvgosDourLxXUmkB3SHtkw
dY+ieMjwX7OhA0ZcL/3caQ2ugrpinqw9nBzgtZ6tdMTrdWZZKOZoPn/BteX3neqpaJ7yqni1
LdbDBr2u7wr67mrIos+uhe/54yr5bZD6qg/0Yf6Xpt/yr/r5pR/cpN/ofRr6pH+mkNz4gf/I
VjpnW67rw334o++sim+vY6/8yy94jpq+ZQ/kVCzk1yRxKCpOeXPkxRl8SE7UT+bgrr9kmKQL
/AUglf+PEv/72B2vdIr7sz37t9/+jgz8jQ/yIv/rkK+//31B/nnDqSAgiCNZmqORGieLqq2g
ru1Q2/dg2ueu473vJwCKfkaekFg0Koc1ZA4qLDFxQWvTiX1KrS3ZDCYek2OyMjpNOqvbsJQ7
XeWSsnYmC6+c37fR+lwQVB4eFd/fiB4doB/h0ddLnODS395RVuLjlRfjIGNg56RhlShl15Rk
quoqa6vrK2ys7Cxtre0tbq7uLm+v7y9wsPAwcbHxMXKy8jJzs/MzdLT0NHV1cAN2dks2d3eD
NEQ4xOxE+cRsRHrEa0K7SDu8GLy7QDzMPD2Jfcn+Oz1+tH4jBOqbhwZfglhsTBCsl6+gQYcJ
ISKMOLAiQElANi7K1AOTR5CUOv969BSSVKhRmzSVTLkS0YmFrsCUiOTCpgickjIKxJjxos+H
rGSWIVpT50tHJjeJmWKJjyMuTaCqLMX0FMuTUTB5EcnpDdJfRnuNtTYma8uqXZp27XgI5klT
owq5TLsWK6pPUkmO3Mo3Llg4rjhW4tsW7ty/gK3K1Zq1z8uvjScnVmz2MubMmjdz7uz5M+jQ
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
ypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtCmtZ9CcSp1KtarVq1izat3KtavXr2DD
ih1LtqzZs2jTql3Ltq3bt46gwp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK64ld7Hjx5Aj
S55MubLly5gza97MubPnz6BDe24surTp06hTq17NurXr17Bjy55Nu7btvaRv697Nu7fv38CD
Cx9OvLjx48iTK3+Re7nz59CjS59Ovbr169iza9/O/XDz7uDDix9Pvrz58+jTq1/Pvv3g7+7j
y59Pv779+/jz69/Pvz9s+P4FKOCA/wQWaOCBCCao4IIMNgggJBNEOEGDFFZo4YUYZqjhhhx2
6OGHND34iIQTgmjiiSimqOKKLLbo4oswGieiIyTGaOONOOao44489ujjj0AKM2MjNQZp5JFI
Jqnkkkw26eST9A3JSJFQVmnllVhmqeWWXHbpJVtSLkLll2SWaeaZaKap5ppstnlDmIqM6eac
dNZp55145qnnnuzBGYecoCzE56CEFmrooYgmquiiNyzj6DHKLJOLn2cA+omgjGaq6aacdurp
p6B6+KijMYw66TOYWOoJpqG26uqrsMYq66y0+jaqpC/ceqozqUpYCqu1BivssMQWa+yxyJLF
jBGk8kLpEf+qdgJsstRWa+212Gar7balLNsopL48a0S0nEzL7bnopqvuuuy2+6m3MuDai7g3
kLuJue7mq+++/Pbr7788wlsquOGieom9R+ArAKuYLsSQDA6/EPHCE0usMMAYZ6zxxhx37HFp
ycjrgsDNGGwJwkYozDAVFDv8cAsus5xCxDG/jELNNn+s88489+zzz0CHdSvBKJBcMq8H+xqJ
yjK3jHPOJjyds9RNnyB10FhnrfXWXHft9S1DE21CyCLfQu8MKN/AdBVRV1xx202bGzPcU6/M
9td456333nz3vbfIAofdwK5Rnaw0JCtbHfe0jFft9MxvO9743X5XbvnlmGeuebX/gYst+OBm
m1xJ2jMkTrfilJ+OOtSTp66Q6xdvLvvstNdu++11wlu20bCcLQPpEMvc8OKwV0116rGv/jTu
zDfv/PPQR9+j7mKPXX0svscAfPAPD2+z3MYfD7nrr18t/fnop6/++uzrRz3oKfDuSvYwbB+D
oPiHXzzlx9dNPszia58AB0jAAhrwgMN538iu1zvRUcJ+MOjfzRz3uNUljILlQ6AGN8jBDnrw
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
mxR+awqZu7eX27WAiwSb2wiHiwuduxWRC5Fqm7qiAqnK2bb3uK4mMLewILsoQLtV4bUIwbeg
G7phS7GVOwOjOxClK7yIqxWOG7y9W7xIO7x9cbpoy4JQawuT+7uLy7xDgbelcLTTa708gbxF
i71/i7vSy71V4byoq7roiyHj6adpqqawKwC22wrxC78y6xWVS7iE+73/ZUu9ccC/Z+C/iUu+
eRG5ABy+rmG+zyuLBNsL26u8mFDA3Yux+QsKEIy5Aky5ijvB/XvBslDBS4HA55u+IswgAApz
2PW2ijC/qzC/Kny7zCuyMHy5Hry1HHwDM7zBDty8pnfD/1vDm2GxG1uypDu8PKwIRVwTMZzD
m3DEQuG/X+vDuyu5UKwUQCzEI3zF91HCc9q+Y4fCcdDCqcDC9dsVDZy3+yvDU2zG1avExMsV
VoyFO5zGPczGTfHGrgDCCVyIdvyCVUvDdLy8f+wTTLzGNbHHRuDEciwDg3wKi1xcC1wLeBzC
WDzJAqLFcrqyk9CyMRsDdTvGtSuzm8zJDxu7/54Ms6UMA6P8AqkcyjRRxrkbxbDsx3TcyBgc
yFHAuJ+LAkLLuLUMwBq8u7/MCZGsCNrmywmBy+Kry7cczAVxyNSrt6EwzDbMs76byDrJcTj5
yJcgzcBLxKXLy7uswU+svNCszNQczL2MzlOrzvrrwB4MzsfMzvzbzIqsvda8kH08zYFsxALs
yrnrzvFMtbn8Cdxcz/q7zvusx3BMyQwdICEqoyacoV58BhDbyXZryhZ90XSrsBatynVLvxrd
AmDc0SJd0R/dyt5MzhmMxgBNz+bMu4tgzE2guwgN0zdbzjVNvjT90jgtzAWtwN1sywex0+mM
0zft0jw9yz1d1LycCf+32LvpHNUv+MYI/NPmZshqPLXmzLlce9RYm8SIm8wIzdRmTNQ5zcw9
DcEwXctMHdZindT1nLO0rMdY7cdHMNcHrc92zdXj3NZ8jdSd8NSQMNRefc/SbNUNndjhwboM
ep+cSgoIm9GnLNkhDdIZ7bCULcqVXdIk/cmZPQlBrM0xndJZPdaxDMyAPdCMINM2/dZt3dVN
3c6A/dp4Tdd17ZB67czge9aprdqyzca7zduxvc2CLbqHm9C47ciiHb1TzdxZvcxu3dpv7bHi
PN2uTdsqbda0vbdzTNS+7du/HdfB7dOIzd26jdy5HdTFO8Hj/d3XTd7O/dfa7YXmptj2bR//
uhWnrzvRR8DKls3ZAO7ZY5zKni3gm73RB47gGk27rEzgzf3IxT3YpP3KW13hnGvhws3O6p3W
+OvPspy06Py7HR7dZ3zPcHzbDbnhs/2zaA3c9vzC1jviF/7SpBDh/BzQ54zeKb7Q1ifaxB3f
sAzd5m3aqF3Tp13dK53kgtvXp93ONA7MGJ7Xut3kUu3kST3bUQ7lOV3j5X3lvzzcOGzWTP7k
Ur7lRl7ap2DjYW7lR8zcQH7fcG4dKBrRGOqg/G0EDk7KCR7gCs7nes7Ze67CsjvocwvGPd6T
am7cLY3m2M3obO3oAbzW7D3hOJvklR7XQ17mRC4KLigJ7Hbdk77o/+JN5VlO5dTdubUNveVd
zSBuzW4OsG++dF0u5I9+5rZ+67Uu5V+O6kqe6Zhu6izt66yt5bie66S+146e6qoe641e1ibe
7KSexMIu7ZDO5as+tqw+1fUd59y+HkzapBUq0Z4Kt5N9yh4d0gzuyeke6Ob+537u7tKH6F3u
66Vu7OOt6fi+6ckr5rwu6pd+4//e5MoegCi+hfrM7+tN6cg+xwEf5QMv63Wd7fmOzcqdzamQ
6LlN6/qO74ic4/4e1BSe3hMf8g5/wWOe7x4O8gs/8gQ96/d+1sSr3ace3SRv7CP/8Pjn46Ut
8bK+7d3+8/Gho657wuOewuWe4Jdd4O++7v+ardmS/e6YENr5XPP6vta/vdQ2H+l33e8rT/Ui
L99fjdczyJPl/ekmz/XVXu+/7uzeLfZTSI4/zfNtvsdS/+AMCffx/QQSO/NU3/G9POoqf+yv
Lfhgn78yXfMnT/j0nuVz/4W2rfNef/A6rvgCz9LBnfhqr9w5CQOdPtqt/vnaXvFAP/rswTuk
cqWdENmbve6dDe9Kj+CYze6y//QY3RMpX/XYntIvn/UGPOWLz/LAn/bYbfkafugSSdeq9ciH
//u8n/ld7+Vhj+Unfvx43/u13vg+L4vJv/nVb8B7b+n03vGxPd+YD+3Bn+GGf/YJX+KR3/zt
b/ONz/2cD+Q8XPz/DZ/e43z5aP/+0w8ChjiKgnmiKJmyLYrAJ4zIsXuzI77ru/8Dg8IhsWg8
IpPKJbPpfEKj0im1ar1is9ott+v9gsPiMblsPqPT6jW77X7D4/I5Hd64B++NOKQPcWIEtgRi
sBAeIqYQDgqiLBo2ujxKIlYWKkbWHc3ccLZ41tCYzIiykJ6Sdto0gfq0hqqWxha9pqDeft7K
HpH0rvD0LvXs1M6arh7v5ir/FIfqIj+fCvv6+lhvroI6Cw0TeQMbUFf/4mBn08SoRxfXctvi
Eusu08ND777b39sHtbNHjwIIq5/AZy/y/SAXLBw4WgUJMhuCkF9AZvde+YsoYGI3hQ1z/yw0
sk3bwyAfgZzUpHIly5YuX8KMKXMmzZo2b+LMqXMnz54+fwINKnSoEj1AjPLxAyjTiUlNmQpw
GhXq1EtPrTqiehWH1B1ddXJzhhGZ2JLGWJk9aPEhQo4UXbhVOy1MSCUp1UKsp/eskHdxpf2N
UlckyVKBQYozcjfFYiyDCadC9RbvZBzQmsWjXHkjwLEak+UFknEzZ41x8+0T8xiyksOaRRfe
K2+t6bRbVkuMXdFuCcW9iQIPLnw48eLGjyNPrnw58+bOn0OPLn26D6TV8STtsxTr1qzcTUj9
Gp7q1+6UvnPVijNsQc9yZcP+7FD+64HwQRPxa9uyaybnxiXGH/999tVXIH65fdZfRQNO8R86
9iloQjkd/cYQXbjNt447Am3I4Ej7LXhgfaMZCBeIbpFIoIolmihfal84iESEpSURGCdlMUij
iKR5EeN8EIJ4w4QmNUadkUcimaSSSzLZpJNPQhmllFNSWeVw1uGgxx7Z/dGEeEx9yV2YmKBX
HnjqVSWEmTexF5F7Bh42I4/3telKkCuy2NedTWCIRGMocshWWnGWJKecRfSJIJA5mlMhkQFe
4ygXieb3oTIp4rmXjf/QRtqbmDHKEaY6znnaoJJdWKSejLZY4543tndioLWx2uCQMupGqp+S
JsSrlb8CG6ywwxJbrLHHIpussssyexz/lic860K0bfjRJRNjegcJmORt+90h6aGXLRBr8ulr
C6r+yNdulaWyI6hPANppq7Olq669ujpGqW/mrvuuu5nmeW/AeB5KIbr+kirnrRb2ym8VPrpa
2KWeTewhWaP2GyK7nXXobrw7tmsQnIKGalbBvC0ccXz3AYxvfIXuh3HL+abMWr8KHyxAzc3y
3LPPPwMdtNBDE1200UcjjYWWKUzL9NJyVLsdI2I6lYi4ZGrrHZrkfnuVt2j6t/MJ+ta7jCwh
r5jR2XU68fG/GXNcq8v6vFe3yFmQzYvDbpd68dv0Crg2p/ic3LDD9X4YNqQNPwqj2OgYNqrM
sqGt8d0LCp6M/+Bxb6653ZdXjm/Hf5vq4p5S5K0oqIQnGPrMLcJ8Macs63r6rjkjnPg4Q+Ce
tO+/Ax+88MMTX7zxxyOffJZaMr8lC81jB7VSXnL7tSXjlQnV9V17vf3U12f98OM6jw/RPJqj
upnrFwkM+WUjt57+65ifr09m9MtP8+KC3XXR7H+XZi4Dw1/+CEix+uGtd3aKHAMVtz8hqap8
/Dvcg+CHwPm5rEPvk8sFDai2AnqQNvcDjAAJRrLZvIiDrrOCBCuVI/bFgmQptB8KRzg5At5G
gYBLmO0Q80AXtFB5QhwiEYtoxCMiMYlKXCIToQC9pgkAenWIGvWyZ71EYG9q31sE9v+2Fy7v
hY8K+krdAjuIQzrFaoRzgswMbxjA0InKf7ArIQlXKMYfThCP/mMd7d44ujJu0H7rm+EVKGgz
HsoNiEUqXxCfYMgKZiqQA8ygBtUIKzrWcW5+bBMIDTjHQcqrj5sEIQwTWIV4qZGGn0zl/CQ5
N/100lZT0J0mEbVIHTYxl7rcJS976ctfAjOYwrxJ83bAPJVQ8VrVO08jshhGMjWzW14El3rI
pbjGtY2Qn/uXHTEJwAxJ0o1+FGUdvSmNGvZwDinbo6dM5s04ltJspjMnS2h5MrExEpdw+JQ8
BbSyt7HSE/TEXMbQt7oBDZSg8+rbPAkpR5n8hZVrZGf7DIr/xoamMw32zChjFtPIYYI0pCId
KUlLatKTojSlakimSltqpI+69BspyecjjVa4KaktpkyqGUx16tOfAjWoQh0qUYtq1Oiw9KhK
9Yk+l0o+PKKrqT67qZRw5FTnzLSmV90qV7vq1a+CNaxi9WlSx2rWOGgVrOaqaVqLRtUoWfWs
wlkrHuVq17viNa963Stf+yqdsvo1sILt61uhBMfCDjaxil0sYxvr2MdCNrItAaxkK2tZlCL2
SQ+9LGc769nPgja0oh1tXylL2tOitniZddJmU+va18I2trKdLW1rOyzT2ja3urXSajUr0d0C
N7jCHS5xi2vc4zIBt8hdLnOb69zn/0I3utKdLnWrG0zlWje72t0ud7vr3e+CN7ziHW8ZsEve
86I3vepdL3vb6973wves5o0vfetr3/viN7/63S9/+0ud+fo3wAIeMIELbOADIzjBBAawghvs
4AdDOMISnjCFK8xXBls4wxreMIc77OEPgzjEysKwiEts4hOjOMUqXjGLW+wFErs4xjKeMY1r
bOMb49i+ML5BAnr8hh4noAVABvJyBmBkI/fkyEW7AJMvkOMnQznKUp4ylav8nGMaM3pz2LEL
iOwGL6dgyD5GzpHLPACeKJloTXayldvs5jfDOc5ynrMXpHgDO0tPO00AMxv4fAIxB5nMZk5z
TggttDXTOf/Ril40oxvt6Cg/8c6RzrO1luBnNVwaBZkOTplPYOibfBpoiH40qUtt6lOjOtUB
xnKWnQfFlU6PCZs+w6wFUOuhhBrNSFZzk1Xt618DO9jCHvZxX42CZxn7DFwW8pjbUOtbCyXX
O5F2z0ZN7GtjO9va3ja39fq06zjPBMk2w7JZAO0xPLvZxaF2oXc9NGt3O97ynje9623vX447
ilqG1r7ZUO4wj1nMOAC0ujUd8CHvQOC2LjjAA/0DhHfZywpPQqcFYGYfVHwH7EbCoM+McWqn
+eI4EPnGNe5uFuS641HIeBxGDW8UrJnJ9545zWtu85vj/Ff5nla+x/BvgweZ4A7/B7rQze3j
ojNb4OkeOo8JnvSgA1oJnVa5Czru8RRYneVHyPrJsU51r5/Z6lUftMW7PgSQd53rV5f619sQ
c5m/XABvj3vO6273u+M973qPSc953u81/PzPQs/04BleeIYvvPADR3zDnd74wVNc7Wv3dNZR
rvYlSL4FXLf85jlf+a2bnfKTzzzbxe72ucc8Bain+95b7/rXwz72sl+CUVj9POwgpediCLwJ
Jp54pife6Ez3PcSBTnTgG3/x6iZ88YsPekJrvewnDzXpOf7p6LOc+tnX/tpFbgS0d//6Jf/4
9EPPO4+0Fea9NsHbVb9+9r9/9vKfP/3rb/+cP9HvW8r9/99hrWdZX9q59V7BOd8ADp/hLV3C
ISDwFaAAjpz4TZ70cd4NjJ8QpJzZcR/YRSAEep71XR30lV8ESmDkbaD5PYpHIMHLpd4JxB3r
3d8LwmAMyuAM0ln+RQv/7V//pQHvBZ/wBYGfMd8BIl8CNt0QLuAUVOAFiqAJVGAQNKESgp3m
pV3oNaEUfqC7GVoVnh0VmiBKoF9d+UALxp8YyhwNmuEZomEaqqGKfZu49RsOumG4UUusWRri
zRrkJV/D6aEPFqHyKd4erlwXooDkLeEIOkH0WWHniZ4VRuEEeiAT7hr3FaIHKmIakCGbwV8Z
qp8mrmEneuIngmIo8pf+OU0Omv8ilzhBED6d4wmeEQph0imfH+JhHkJBElafIx5i22ng5y0i
LkKiCGqhI4YcBuoiJfKiJcZfJmKi3CUjM3KiKEJjNErjNFJjdJHisf2d7oUBD6ri47GiAcIi
LbZiLBbhH4pjLk7iIN5iIz7BMYpeJRqiOo4eF6Yj+Ukfkikh2ZUePJ7BJW7iMipjNQrkQBJk
QRrkaF0jv8lhHKLintnhEQIiOPLhOE5kOEYc8vWhFNhiPTKiRhbjE9IjO8ojCd5j2Jmg6T0i
6nxhCjYjvPnjQcJkTMrkTNKkWCUkQ97eQgIeHSpBN1JkRPYgUPqkRRKlDzggEWxkEQSjUmYg
EEDhSPr/IlOaZNnFIwUupUg60koewUsGpPs9Y02CZViK5ViSJTDdJE4qJKWl4kO+YkUGpTgO
pVsCpQJiJOYJYi9uIUcyAQc6ZUhCJVYi5cXp4w9cJV5CwReC4Q5wpTMCJGOW5WNCZmRK5mT+
zlnqmxxq4zbyZBLEZQACIVvOZQHO5WheJBLepWH2pV46oV/+pckB4xSW4Gm6Jj5iH2s+Xx2o
oEu2ZDNSZm/65m8CZ3AyCbL1n3Vkpmb+Xx26YuMd32h65tD5nlwyZysyIOPZpWpu30nK5mrC
ZmyGH2x2ZGt63/NdITF25z7Ko2p6gbW13z+6p3DCZ3zK53zSp1DYoE5eZjGp/6VDLqc3Rt05
vqUBzqKADih1fqNEBqJ6Xt7YqSdhLqjn6eJTpidKkuc7Qmgxfh8/9uPqJSOHfmV9gmiIiuiI
kugZ5N/y2B4ccCNo+ifUtaVzRt1nHt5F/idpXmdeDmZ4NsGDXmhTAmZJ0maD6mhV/iKFkmCO
rsHcOaZXKmmJOumTQmmUSinttSGKasKK9qfwHdyLAujvBZqMmuMqZmSCSuVdFuZsjt94tiZq
vqPHnekv/miRvimDbicZuBxvMuaHTume8mmf+umfwgQPAuqgEmqhGuqh0qSgIuqiMmqjOuqj
1p+iQuqkUmqlWuqlYpukYuqmcmqneuqnQpmmguqokv9qqZrqqUKYqKLqqrJqq7rqq46XqsLq
rNJqrdrqrdKWrOLqrvJqr/rqr17YZgLrsBJrsRrrscqVpk7Ask4Asjrrs0JrtEor8igrs07r
tWJrtmrrtgpLtS4rt4JruIrruJJrcXhrs5ZruqrrurJru+4nFDArurrrvNJrvdrrvTbBueLr
vvJrv/qrverrvwrswBJswT5rwOrEURrswjJswzrsjKWolb7rE8TrStSlll7sw2rsxnJsx2YY
nrUafu5kcjpBxWqCdWKsx6rsyrJsyxbYpIWsyPpfpZWstdbBUSqsy+rszvJsz05XxKLocYIB
ws5Bzvrs0SJt0iotc2kjyL7/AdHKgdEu7dRSbdVaLULq3tII7RdAbRxI7Uuk39WK7diSbdn2
TNbC4cTW7Lc+AdLRJeMdHkbW6NvWpcSJZlaGrdnq7d7ybd82Sd8Zpw7OrBSYLH+6LcaKZtzS
KMoS6N0S2eE6ARn57eRSbuVarnGgbbht7YsJ6xIULgAWqIFGp5ceqOjS7dw2LuoCSN5ebuu6
7uvCrkvUXpWC25Z1rhJ8rnLKpfPdLYI+HOPKaMpSZ+T2VOwa7/Eib/KWwX3mgeDu4O0mQe5O
wXNKp+8aJco2IJhWr0wVr/J67/eCb/gywX3KLDaWLxp0rRQELxHgLPay6E926flJlfjSb/3a
7/1W/+nOOS/6Qi8SSC/ooq7Rtu/Fdub77ktjIOb9KvACMzDsWmYLbG4XpC9nhmmAAsEAk6NQ
GrAtGVICN/AHg3AIj+0D56TtkmwT/C8SKG78ZvDvEvAGxyX3IrBWinAN2/ANuywJl6IJ0ywK
2yx/uqUAM66NWnCAxjAHsy4OK/ESMzHD6rD58jDh/rDuBvEQFyVdtjD8FvHXdlT3NvEXg3EY
u+sTp6Xa+jDbgm5RCnHGEnEBZ+nqinEcy/Ec4ysZo6WK9u8RpLARPGd1+vGYurAfTqcWWy/K
zC8dI3IiK/KtEuf53vHT5rER7HER8G7i8lnvvqX7Zuz6AigXQ9AhL3Ioi//yKH8q8/5ABHPB
BB/BCrco8B5o3Pox5G6xFSMxKdvyLePyq57oUeyvskVyEUwyJTvdpoVui7ay48ryLLPxruRy
MzvzM3cq0EpsQ8LrFBvul2oyLasuLJdj3W4wNINzOIvz2KryOJvzOaNzOkdBOatzO7vzO8Nz
CrBzPNNzPdtzM8/zPevzPvOzGOdzPwN0QAs0A//zQBv0QSN07BZ0QjN0Qzs02S70Q0v0RFO0
zkZ0RWN0Rmt0wV40EETAR0fARov0SJN0tHb0D4B0SJf0SrN0S9/qSftASrv0TNN0TZMqTO+A
TNv0TvN0TzcqTuOATvv0UBN1UUcpUN+AUBv1UjP/dVMHJ1K7gFI79VRTdVXXJFS3gFQnT3ta
dVd79VcPlTTHIe26AVazgFYbz+qB9VqzdVuPlNMqJMxC8gkzQTAfAVoTD4e69V7zdV8vkVyb
L2DPIV17rjU3AV4PD3vqqV8zdmM79tGI9ViXoiOTgVmnAGIHjws+9mZzdmefbS/bcXn9MhHY
tRFgNvBotmer9mqzdpWQdQnD9lz3cF0bNhOc9u+kdmvr9m7z9nTor06ichZYNgrcthFwdQug
Hg6otXLndobWKRActws0d29Td3Vbd3CgcnBjwXCfQHEPgV6zgIeGt3gjd3LvKIYWAXj/43Jf
d3u793vvRHb3smgTNu7W//YSeHcQeChA7jeTqjcL/rcxqml6kzeAFzh8I3iCK7hKzG7Tavd2
j/YQlHYR5PcPrGBXGjh/j+FuPuOFT/dsrimBc2JuHviCm/iJo7gZmDK4UTZ9z3Zho/ETVHgY
cjh0b/iHdmiOLzZ3RuV3c3hjYniKC/mQEzkXkC+L0wF3m8CMM/eO2/iIN/diSuWQ+vhXst6H
F3mWa/mW8/K+GdtrD/aL23eMOwGT3wCWK+NxN+mZ7zeQW+A6VnljXjmecnmd2/md73Bs52SL
+3J9R+99K4GZSzedl3eAs7d/H3qZumOcj7eeojmeQ3qkKzgJg3lZR7gQTDgRCHqhuzmnJ3qe
Xv94hgd4YPIoEUh5hkt6qqs6kT9wpVu6n/svoCfBpjd6p9c6kw76mgd5Oz63fv94rtv6qgv7
sPd2q8/3yIr5n5P5YYN0E0z3qSP6Mj46j0cBtC8psWN7tvO2ZT441156EGT6ENA6rlv4r9P4
jQd7SkKBtU+7trv7u3c1tx87skvxstt2szt7jaP6em8ip5M7ma67ud86vBN8wfd1I+s5Mn07
EIS7EIy7f79nkKu5wKd5xFeohbIklC92uxt8x3t8Ta94XO+ybNe7vMo4vuf7f7e5tLd5rZv3
kaK3r4/6vn98zdv8Uo98YOd8mJe8FDy8y4d6mvcaiX+60HN8j/a6pwf//b/ffNM7/U6LNfny
OXIme6zbO36j/BNE93qz2SUuPdAnaNI3OaHv+tOb/dkPu5ILwM+jfdu7/ds7idqzPdzTfd3b
PXPIfdbf/d7zfd//1cL/QMMHwdz7feEb/uEHKuD7gOB7tN4j/uNDfuTbRN5/tORb/uVj/kpQ
vkpnfud7/ueTm+LvAOOjtOOD/umjfupLwearfusb9QLAfuzL/uzHvutbCetHAQXoPgXYfu/v
M+0D/+z7/pTgPhTsPu8Pf/LDc/Az/wIoP5QU/xMc//NTfzo3f/BXf5NEvxNMf/Z7PzhfP/B/
v5JsfxN0//ij/y2HP+2n/5GUPxOcf/vLvyKv/7/wz//fw7oeyzoSED4ICKJAldSIpurKtu6r
GjJM1/aN5/rO9/4PDAp9mWJmZDwOl8ym8wmNSqepJNK4lBmo3K73Cw6Lx+Sy+YxOq9fstvsN
j8vn9Lr9js/r9/iF/w8Y+MdHWGh4iJiouMjY6PiYByEJ4TRhOeEUoRnhZHKSp0U1MOoyOgAp
laC6irpnJfLag1U4K1W7ctsKW1SXqxIbGxR6xqpTrIucrLzM3Oz8DB0tPU1dbX2NjSa4HZjt
/Q0eLj5OXt5wfu6Cvn43Sdl0idm0ydnkqTcsZdpiSlqesuoYmIAEA0ID5itHwjtJlERZKKDh
Mog7HDKR2AIhryH5yP8QNKbqn8iRJEuaPIkypcqVLFu6RMUt5oKXNGvavIkz55x16Fjw/FnH
XaVLmTZ1MoFvxpR9LPqdKllwTMGpB2sFq7iRD8aHWX9dbUVRocUlW3FZDZujo1SDOQTqfAs3
rty5dOvavYs3ryOZ3PT6/Qs4sOBGP9OtKMyOjlB4ROcZtYcUlFJ9/ppWPunWy9SozzSO1YFW
TtknFEMvMk0DtdjSZ7v60ALbTOYaswfbvo07t+7dvHv7/i2E7zbgxIsbP66X54vEI5jHWcwk
XlFNR0sk3bL08s3aVLhH8/xDtZvRTsQjM5/R9RDyKMD/gA1/Mh7vyOvbv48/v/79/PsHF97/
jX8CDkhggXz0BAOCKSj43CRDWTJdPUzcIxl2lD2VE31RaOiMe7Kohwd7F4EoDXosmJjaV+21
9pkO8cG3B4cGzkhjjTbeiGOOOvYBICA7/ghkkEIK4FwLDDZnmBzQLSGdY9RBZl2FominzAYb
cCGjE1ky4xqJOKCYhohkeVlVi1iZCYSYu1SB5g2xhRIbCvK9seWQdt6JZ5567snnXT362Geg
gg6K15E6GOrGkkM0yQQ91X2Ch1pBOCUCUyk4heEK/VS6qQpMUQqGlVZOIeNHL5gqgEBZsoUq
Cqyy1UKrABUj64dsviDmLGreoKuKbIa2K2ivJNRQm8P6+iWIufQa/xZGxBZrJrS7Irtis2OR
acMw2s4Zp5a1rmBqnYSOS2655p6Lbrpk/DmIuu6+C280iOIwLxuKCsHoEo5CCekdkv6A6SmW
ooBpKfsE7CkpCH8h6qgbhnTqZixslkCqEIuwKitUzRrSxipQDK7GnH0hbYtYSBseLyibBS0M
YJ5YbETKqmlFy0TMfK3KMcMskS8lq/ezlyu78PJrSv07AozewhprVOLGC3XUUk9NddX+seuH
1VpvzbUa9drw9Rr3BpHvEPtOGFmkcwIccKeXgmpZ2wMLIPfcVDTs8NIRg/wxxapeDIPfbgkO
OMZ+9y04yT97tfjNjf86NM9jPl4ta0E7zv8y5JFfQfkuJTP+Ocs2p9emFNtayEJ8TYw8ceJd
vw577LLPTrtJWM9Ue+667+5TOsrRAFRQDjIGoZMSLkGh2qgDMTDcmlL5tqVuc9o89Hc3/AR9
gxduMeCyuo74xUwbfsz43XMccvlPY14t6BZRm+ItXy2LbdG/Vm5s/R6emTn+7TPuv/sJsH9E
k5/+Sme6GSAtBUpbHffQN4Jv8W6CFKygBS+IQSncLoMc7KC7EBM2IhVJScOLTmMa9Ri0RUl5
Q7Db9BKWqedpZ24vpJv1poC3KzHBO+PrIfcyAz6OVcxVP9zeECNoxCMisXDr48FVnugzbLks
ijnrkuXWA7QrFtD/igjEFc4gB8D/Vc4GEEELFbdIhhfVQHU7fOASw+fBOMpxjnSsY9c2aMc8
6jFHIAxb8BRTQiadUF8pRF7a/LW2HtjNhjGM3gsWKcNIjgFvbVQi4tIHQSJasnsSwyRt3HjJ
UGryDM+qIgH5F0bOnTKVafoi6bzYRWGZjIurLCUZhXbAVQ5QDGpcY7eEwMMHNnGPxCymMY+J
TN3gMZnMbOZvihRCJDVAeJJ4kDxQ+CQV9ssOC9TBIiFJvUfe0JEw7EEOz0mDHA4hmJs83ygz
+UYbZKydnoQn+UjpSlWyUpa1zKcuPzTL/JXOfv+kX0B3qU/R5eqAnUMoL9kIA4gCgZ31/3Sm
RS+K0YxqNCXL3KhHP6oTREVTBCM1w9iAUDYhnM2QK0Tk8nzwzXGCM5w0iGkjb3BOddYAe8AE
pTvtCcQi0rN1QxXl3ip6TzPYUoxM5ec+l5qRyf0zoZJrAlQ918+Dum9nU+VcQ6uQhl7S4Jc/
oKhRQYrWtKp1rWzlEbvaCte4jkOkSUpQXeFw0h+kNAgrHULyXNpC6M10poysgU3NmVOevkCn
QTArUP8m1BvM85PtDGpRu3BVmWnVif7UbFdhIdV9OnS0rdwsVp/aWc2G7rOqXe2JwqrARMag
gRP16WyGKdfc6na3vJVrR3sL3OA+gq7TrEFJy5BXH+wVCH0Vwv9fuSnbHRyWH+MsbE0FW10p
UHIJjn2nJj3mXRpMVrzCjKxSO5vZ1WSVtSMyrWhJmzL3Zja9Z6zqKwtxuhfQtrG2Le9lhQvg
AAt4wHn8LYEPjOA3EBdsd31Dcnuw3B80NwjPrUM3czDduInzppIkZ6i2y93+Vlao4I0nZeXp
0/CaeMVjmG9qkyXfF0MhvU19b2nXi9oYu7fG8IUudhYo0Z4W9bYpTrCRj4zkJMPLwEpuspOf
sGAURJmE1STeNQmZTZZu08LR9SZ2OUxT6oLZwwTLrhNAXEkXEHnEEvwpef/L4qax+axicPGO
YYzjHltVxqe9b3vz3FQ7d9VasYxDflf/sN91ihipT260ox8N6RoxOdKUrnTvirugu065QVU2
YfGweTy/HtLHgW1kDcs8ZuvCoIaEbQJjHTjkJNKZqJItcpyJaknz4VYIUKSljW+p4yoKFIuf
oRahy5NFLhbb12OsMbLMKEX2QuHQkgpyiGO9SfNZetvc7ra38zLpb4vbyUcyFDSPS4YH8yDC
PpgwECpMhwtj+DLOK6fBUj0C57WaCWjWm5qZ6N8ToxjOSX2zPQteBoO+92X0ZbZCiR1A+0qc
2O/rdVeuOppgLLTioGv2w8Pwpthyi6ywPuoSbT3ulKt85SzHRrhbDnPh9hHTUu4jNd/h6Sub
rZCibimpSy23/+jVzd6rrhu++S2qpR1OiCU++bcIl22Uu3lvnTx4nRtKY16l9nKkizawXdva
zXkW2Z0LWkDBHnauKrSUYvdqoZvwIpKTnL9BJB/fYo73vOt974x4Od//rlYQXhoxN7dmhB51
HSYgjIZGN7WZC7swL+QN1ktnurbtXmKoz5rWA2edismA9rHreYp3Dn3Eg9Ayg2Ld67LsGS1H
t9UjUNH1AhWR6T3HerjHfW1dLivh0meQXQN++MQvvvF94PfjK7+Zv1PHHwHZaUF+Gsuhdu6o
ufxS5nWK8UYn+oap9/g7aB7X2L475qt+a87Xurv4LCOfa5D11sI/919XgurRTlCeMf9LgNM6
VrT8D0uEFm351wNipRm/B3xDJHzLx4AN6IB8l3wPKIHHp247wG494G4/AG9zIG97sG/isGYE
t3IEWBIdOIEniIIpqIJjEIEr6IIsV4E6cIE8kIE+sIFyYIJ58IHhUBsLSGkkSBI5+IJDSIRF
aIQt0IJHqISQFoM5MIM7UIM9cIOG1nt8sIPg0INSp3JAOBJCuIRfCIZhaHxJKIZliGBNiANP
qANRyANTmC27F3fjcIXfoGs+GGlcKBJeaIZ7yId9aGlk6IeBqFtoeANqmANsuANu6EtwaG3Z
MId0WHd/h4eCSImVaImXyIJYg4mbyFuEaAOGiAOIqAOKOFb/jNiI2PCI3oCAxDeJnOiKrwiL
segCgCiLtbhHnlgDoHgDopgDpEgXqQiJnjd8rWiLxWiMxyiGtIiMy4hBuEgDumgDvIgDvsiM
1WiN14iN2XgnyqiN3dg1zggD0FgD0ngD1OiN54iO6aiO68iO7XiN4PgC4kgD5GgD5uiO94iP
+aiP+8iP/bh38OgC8ggD9FgD9uiPB4mQCamQC8mQDYlRANkCAvkCBEkDBumQF4mRGamRG8mR
HUkoEMkCEukCFAkDFumRJ4mSKamSK8mSLYkXILkCItkCJPkCJumSN4mTOamTO8mTPckIMKkC
MskCNOkCNumTR4mUSamUS8mUTWkD/0CZAkK5AkTZAkZJLnM3d4Oih07JlV3plV8JlgsJlSgg
lSpAlSxglfyBAGuZBYkmAKfYJ1sJEiL4b5e3CBoijHZQb94XN8AYln8JmIEpmINJLyNkJA2G
V4G0KIO0c1nWc1vmA2spmZM5mStAmWwJBJeJmeAgmW2JlW4JFcggl22hhXJmhx9TSZXHdFRX
mmnQNmJWXQVDmLNJm7Vpm7VZGMaFbsilmPjCmCrFc9bncz+gmZepAsW5mTyAnAjAmcn5Hh2Y
lSLRmnswmjggfHnJX6lpft91WdgpB0EnQ7G5l7dJnuVpnufpkoQHPLuZbr1JNr/JV8FJYdcX
mcvpnPZJnP/L+Q2dKQQ5WJ3UcJpuYID+RncEKmSqaXXqp5fSc0M76JfoCaERKqET2o3Np5vs
OQZjOQJlmQJnuQJpmQL8SQMiKgKV2QMkKgAoag0qWoBVmDQuyoPT6WNxmD0yqqCKRpcC9zA5
igYPWnRHR6FBKqRDSqSwuJvPR2U4J306B5yOKZyQeaLO2QIsyqI3oKJVKg1Y6iIw+pZcGoyQ
wIhQYIcBinAFmgo2SgY++n1FyqZt6qZvyoeGuRwWmqSGZzyINwRaigJ6GqXMGaJSSg186iZc
+p8+MHkxgqY4CCcil31m6qjXlmZnyqNnoKb3BqeXiqmZqqkPeKS+g5gO5p4oBZ//zCWf70af
fVoDgroDVwqoe1qlmCmiWkqZLICltcqns5qirboD/umlSHeoB4p5gcMdq3hrssZJc3aswnA0
y9qopEkrIkZw8zRUxAp8dbl+4/Vm/9V0bHN0snldQMpI4Lqp40qu5WquvdWp04ShYqChIsCh
KOChKgCiruqnI6qr9VmvI2CrxvmnudqZuPqnmnmcukqlAkurxqmqi/iGzYpDioWjFbOt5+df
2zl1ZRp8wigy3rmwIlCo4ZOx5IeXtoZ+Thexx5qFdKmxCWp5bhSJ8zZ04Rl++/aa50qzNWuz
NwtS6UpSn5oooapXoyphpaqBp6qc9xqw+SoErIq0+oqc/0eLn/RanEdrmUprsE5btUDAqwzb
sA5bWy2LoCaLsQHHnSNLrVv6Y70qrF8LttpTZF9bthK7ZtcqdSE7snBrl4bVfTALrq32sjjr
t38LuIHrQT1BpyqQGOsaBu0qAO86AvGaAvPKtE07tQmbqvfZqiZaopYLq/yJop0rpQW7tJjr
r5MLtUvLA9E5W2jrq7/qA6hSh96zaNZKZ66bREp0twrbseFVK0zDtt0JWbJbl7Y7sSVbpsCL
a5/nQ4naeGv6rRuWKZUquNErvdNLvX0yc4eJaYgLBorLuCLguCgAuZkruZNLuS/wtAMbuskZ
q5tJoqLrr0gLuugrv/SKvqabFv+oi2j4q1391gPJO7ug1LuM5r/ftXmDCpo7YFlRp8DGK8AA
3LbmNbZtVrxyZnIqFreTEn6q9qPMm28ZXL0fDMIhLMI3MnM0J001Z8KcpqSLOX2NWX3zOZz4
GrVTCrAyzK/zG7D0K76Rq8M57MM8/MM9vMM4fLr6m7+5i1hJ17U6+nnpV6wQXMFNfL8H7KxI
dcE3anXDmmJXTLISXLEUDMaPNakuewMOKlNfNsJprMZrzMYCcm4pLEI0p71fwL1A225Ca4NE
u6pGS8Ple7BXa7VXu7712r6AqrRBLL76KcRA3KJbScXplFhKvFj8W8XZSrFOPMGWxcSYjAMD
isBi28X/GstOajvBERy2k4qtCVi3t8utZRyzZ5y3bSzLs0zLtTwYmxbHmQbHoBp9LMyk8emk
MAylRWu/lcvHMDDIfazIQzy6zNzMiMzMoLvMzszIjay1R6y6KRDJkgwDXDuXlEXKX9zEmmxw
BWy2RhzFLDZ+WGzKbda7bjudqeyxq0y8PHCFZjxmjSeutszP/ezP//wPuFzCu2wvPqtcdoyB
eCyFeqwDfgzNOTDI9muf6su+FZ2v8YvD0jy+1MzRRXzNcpK728y6KvBqnxytb1vKT7zA5ayy
ZtulH53OFovSKb227rzFZfs08ryyeXnJipTB+HxvfQvQQ03URW3U1iDQJQx9/yvsmy3cpC9s
qjGMqvhK1dW8yH3MyIVsuhj9zFeN1UT8nDD90mlAyd/M0usX0xVbKqCMtczaumwtzmnLwJts
znXNzndN06bJyq4srkAtZkcN2IEt2IOtDEl9vXNQx04NzFA9tFJNzPlZzMYMtaRrr4Rs0V79
qmyZ2ZH90A7dAll7BiXdvyiX0zeNrFI8a3Z4aDzAxXGd1pyM13nd0mEs17Q9l2OsYTbg17lN
2L3t278N3HSAy5dmB4n9y6QazFE9zHvM2ZVd1Vbd0ZT9zFot3Tm82TbA1W0t1kicxCPN2qQd
z6bdwCd92trNsdms0rNt2+rNaOwN2+0d29eZqKjG1/+6DcvBjd/5rd/73QXDfRg82wbGfXj8
sgSqmt0ocAEJnuAu4LmGfMzJ7Mzu676ly+DH3NWJzBGEit5BINq+J4LiEsBCZNeZnKjUtuFq
Tc7WKd4qrq1zG94fvuK17d7Na997K577zN85ruM7ruPlBuAoXNwGDWEITYMK3YYMDdEWLuG6
quAL/tWYrdUXfdnU3OAVLqtRTsQ1HNYbKwZl7eGdR8AKCnCwm+JpjVshtwXobLy7C1nYRnVh
XlEkBufvPeJ5zbvGenJCcM+vnGrTc2o8DuiBLuiBfdh2RdABLuTrRuRQaOSJiOQ4kLDnqwJN
fgFWXr/kK8hTfuGSXr+czen/7zvDyrrdJ26o3AypnUe89AzP5A3fBkyjb622dbfO7Qyt2haJ
ay3rb5vr4exlfb68qCbUHQyeg07sxW7s/Sx4FxrkvdzUxx20yd3Yy93QFg7qWp4ClG7pYB25
NxzNmr7t1q7tmD7hifyv1F6Koy7WrqZDNZqjPR3K89wxUDzXrr2Irw7rF0tPFDvr7cyaJ8vT
4L3rpHzJLWvPNx7s+tyX43nsC8/wDU+9hTunh17QzP6eio3cjJ3Hjs3ckM7tK4DtTz7Zf+zg
lk3yIt/c0Y3p5muinp060MndbFDauO7vEFPm876AnnzvCljrIJvqe22yrLnePO95+76awRug
hIXw/8A+7DDr8E3v9E8P9T0g4HdK4FvTiHDJJy8f9VvP9V3v9Rk19aCGp1pz9Y+sJ1r/9Wmv
9mvP9s2Y6Ba46GvY6KP46PDymaSuI2jf9nvP933v91ET9tQ39kqp939v+IeP+Ik/JIHvwoOv
+I8P+ZEv+ZM/8Uxd8c5+x9Ce8dJO+Z3v+Z8P+qEPA4z/1I4v+qeP+qmv+olP+ott+qsP+7Ev
+7PP8K1/8a9P+7mv+7vP+4Jt+8+O8Qut8b1P/MVv/Mdfvb+f+cF/5MOP/M8P/dEv/W+q/Amt
+cLP+dOv/dvP/d0vmNVf5Nff/Nnv/eVv/ueP/i4J/owu/o7u/OkP//Ev///z74/rL/ftT/fv
T//7z/8gIIgjWZonmqor27ovHMszXds3nus73/s/MCgcEovGIzKpXDKbzic0Kp1Sq9YrNquV
QboQ4CQ8AUbKESAlTdmy2zID3HCKy932Oz6v3/P7/j9goOAgYaHhIWKi4iJjo+MjZKTkJGWl
5SVmpuYmZ6dnlNfXj9jYj9nZj9raZwmC64srQlBsDx3cnC0rzABvL5avbrDwMHGx8TFysvIy
c7PzM3S09DR1tfU1drZ2TkN3N4p3ePhdKJgYmRmaWk9su7usyTs8++sMrcv9T76ObV1J/7Ne
wKwM3GbwIMKEChcybOjwIcSIEidSrGjxIsaMGgn/ift2oqM4cl7MhUFXRl0aevLaxVs5T8c+
GDFVzNxRswadFjmbCeT1y+fGoEKHEi1q9CjSpEqXMm3q9CnUqFKbgWwArqpHN+VGnTOVLtU6
Hi5Zkhj7MsdNFmlbnhVbj98tF3GiFaRSdyrevHr38u3r9y/gwIIHEy5s+DDCkCu8/dnqg5RJ
VD5UqYT1VgRZtJllXl6x9sbnGHPlxg0IlOBpxKpXs27t+jXs2LJn065t+zZuLIxb7O7juAdk
ryfBpnTbFkXN0JaVs10+q/ON0TpLO7srxXru7Nq3c+/u/Tv48OLHky9vPsY43ln5/OYR3Mcp
lKtsQkde34c7e/dPMNd//xwndStIt8QGGwiCHRQInrcggw06+CCEEUo4IYUVWnihDr2xoOEe
7e3wXg/xETcfTPu1YmKJsnyWnwA3sbjWZvbd0990/rAwoBIFFgiEQCL0xEKPLShIwo8q9DRk
kUNiuCSTTTr5JJRRSjkllVVaydF6i32THh4e6gAiDyJOFhZ9//GHIg60wPhOi/XJ0+Z/K6Xw
Jo03BqgCjknouKMPPR45QAp/ArqCkoIOaoKhqRF5pABKXvkopJFKOimllVp6KaaZMsWhllV1
ORJXJQknWQ+UGbecmZqpuJ9ZbbV6ppxsucRDninUisSefO6QqHWJEqooor4Ga+gJvB6qKbLJ
Kv+7LLPNOvsstNFKCwRjil2FlUhdkFQKfF+NWVyZscqaag35uHgZi2WhGyOcLyW3bp143orL
nTnu2UORjd4VpI/AloCkor0Cu29q+U57MMIJK7wwww07/DDEUWGV5QhcCsCpFl7mAOYOYpZK
ZorijkuuDOa6CV2MM7Grcmcso1ljvfLOa0SuBurAb7/H5jyskf6OgLO+Phcb8MCORnw00kkr
vTTTTTv9NNRJTEzxxRRjjIXGOHCsg8c8mBrum3Omq+oI7x4Xk9knnt3yySTbObOtOzmR681C
/+uvgnnjbffdOgusc9SBCz444YUbfjjiiVdocdVWvXD1FVnfsHUOXe//8HWKNIxtA9oot602
rGqPBXpz0ckNQy421Lx6CzXjYLSxgC8q+8970x40o7MPfbvivfv+O/DBCz888cVfgzHkJiRf
heQ2UI6D5TpgTna58cIqMmafq7v2Wa12r73pMcss/guru+7CvTfAbmzPvP+9u6B97248/fXb
fz/++eu/P/9GIE/1tezQvBo87wbRy8H00vQymizQM6MjHQSzxz3RzWp7oYOLjd6WwRqYj24s
OJ8N1ser9pGQZ30jlu5M2L8VsrCFLnwhDGMoQ2j9z3HqsSEbBkiDAtrggDhIIGgaKDa3MdAs
ESwb2yZoQXyALwdwI8ETcZW+1/GtdrwrIQre/ye/LVpxfjP8IhjDKMYxkrGMZjxMDR8HwMiB
6jFd6dZwvkUi6nFOiBc8YtqWiMcG5hGDL4hiEUBIxSt2cQZ6k11dtFhILp6xkY58JCQjKclJ
UjIYaXTB8qigwxnwsAY+vAEQ60jEIgZRiUg0pQTvmEomohIHgBTAK4XgwV1VcWeGtJsibcnI
oHmxkr78JTCDKcxhErOYO7hkxaiWySlsUgadpMEnbRDK6hGxjyW4ADaxOcRtnlJWR2xX6dTi
OTsKiHz/MCcRBFk3Qi5yF7hMJDwBBzSC1dKY9rwnPvOpz33yU3Ec4hTjlsnMNgLnjSHy1sfA
lbkWpGw/2dSmjLjZzf9TjnN743SXyyw6yhr9EZ2ynCK+6om72bmPb/Ec1rEMpkvcsbOfLn0p
TGMq05nS9ElT+8jEsiUKN4oKjqTyGsjoKM4KnuChF5BoOCVIVIpiT6lh0+hTnehREcTSByAN
aUtzFj+SopCruTvhVr361ZqStaxmPSta06rWwmALp57S6bYiI5/KsDKqJjBqREkJ1VVxjyXn
sitTX2G9uG2QsHOzWRCMZsWxarWrYvVZ/P7mJ5GutbKWvSxmM6vZzSLDWinoiB6aGYNnziCa
NZim5uwI2Gs+NK9IdeoqxxXb65HrReQcH8wUoViuZpF9vS1UkLCTJMpytrjGPS5yk6vc5S7/
RLQwIK0MTEsD1A4GICawLnOzq93tcre73v0uwpz7AujGQLozoK5gsAvF1IG3ve59L3zjK9/5
cke8LiAvDMwrA/RWt1anoy+AAyzgARO4wAaeiH1bgN8X6DcG/D0whCMs4QlTuMIWTlqCWbBg
FzQYBg++MIhDLOIRk7jEJj5Phlew4RZ0+AUfPjGMYyzjGdO4xjYWSopVsGIWtNgFL74xkIMs
5CETuchGnkSOU7DjFfS4BT8+MpSjLOUpU7nKVt5BklGwZBU0mQVPvjKYwyzmMZO5zCDO8gm2
nIIur+DLZn4znOMs5znTWa1oNoGaUcBmFbi5zn7+M6ADLehBz/DO/yXI8wn2nII+E7rRjn40
pCMt6YgZmgSINoGiUcDoSXO6057+NKhDbaFKj+DSJcj0CTYt6lWzutWufjWsA0NqEZiaBKg2
gapjretd87rXvv61QWYtgFqP4NYlyPWD/kvVqgK72c5+NrSj7UhhE1sExiYBsjuxpo22q7a3
9U8t2LteZSeDsVPYrbTTre51s7vdQvDsZxmXQ4K6x6BhQihQFaqqB1Lw29+cKH5YxS4ZbU6j
RRgsYf0r7mWY+zrEdTfEIy7xibsbJJ2S9xaobe+O4ftyQVWgEfs9cM6YCeEOLPnIR/ZXf5Oc
VlEk9zEaHgV0U7zmNr85zkX91mvBe97aCv8Vtw4ax4TOEeT8diqbRNlXIGy7rgBPqhBMft2p
wpLqwqC5EbCe861zveteN3PP3bpGn++0oD0V+k89rm+QO8eiSr8e01n+bylI/ZyFRQGzWaF1
Iuz9637/O+ADP2OBNs4PGj/7vYee76KXkpWqLFlD6+5atmNB8iN4Zd4/0XchbF7wnv886ENP
X4yL3fD0/tDGudZx6X288QyV+xCTCPvJu/4Kll/23el12AM9POu9Fz3wgy/84R+X8ITPwuGD
nvi0s37ttT953DOTdNmevB5mY45ypj9UktmW2+XM/dTBn04d8QgYKoWfC0Ro0j/9yvy/Jz78
4y//+bvU+GPXyun/v5T6yq0ega0XZduphMmsTFMFFl/RVqq8CgK+nvaJHJy4nPiN22GRX5/4
Avv91vmpUKCEFVjJHPt1Hv2FoAiOIAmSkf3hEHvk38bsH/T03w/9HzWhSsAdoJrI3mopYL8V
0VJB1fY1INL5oA1gntX9gDoNkrB0INBoIPxcIBImIUsxYQlGoRROIRWCUbWQXuGFHdnF1ajM
lXEUYLedSg0eoB7N1tMVXBmqHBqmoTc93Rmm3BsI4RAS4VUZ4aEkIc4AzBWdlBLyEiNlYBUG
oiAOIiH6zk0pT07BFdDJ1YgI4Goh3UJ1n9tNohuC02tdol5dYue4iuQtnAZF4BAUYQ3M/1PR
yNM7lRTRiBQfklQhtqIrviIsLs3UoGDjtBX+/RxPKR/HKZ7aMZ7SPSIkUp4kVuIDsmEx0h4m
JqMZmqE10YAnwgwohmId0oAI9ZI19qEfCkkqXmMsdqM3fiM4YkpAWc0/3R/zqKDWsKABuSAo
wWBqeR9s1d4AGuMmPt7cQR30xd4ONuMMPOMn3kAHTaMJiGIMqJ9jYWM7JeRj+Y3thKNDPiRE
RmSTIJMIUGTGoePkqGMPsaM0uSO4URM86tE8EmM94qMx2mMmIqBd8WM/Mps/wkBAUmDryOQo
1lPsYBE3ZuNCbiNCSqRP/iRQBiVuWKRFZgxGOo9GehJHnpZHQv9eSBJjy5VNGTYjS0KlSSpj
t2FPVbZkNOJeV65ATOqKChCkO7XUTW4gKnKjbymkTgqlW74lXMalYBClMpnjQOGi2emi6vFi
8/liDD6fUyIVVTbRVRYmSlqlSd5e1XVl5gHBLKmPTf7eIallKe7SSsklZmamZm5mUdAlLRbe
LZZdvSHeLjKf/zkfAAJmDKTFPgxmK90jbBpmf2wlV3bUV36UQN6SWUrmKV5jLrXlZXKmcA4n
cRanQXimWwnQURJQUkLTUk5XU64m7Jkca8LL49Em9glR0zmeYcYhY84hHdJkDlSjbuJkQv7m
bxqneq4ne7bnMCAnIn4m1iznDjVnaT3/53lFZ1QO1WHiFTK+oex9Exxm50atyAK5zFPqHmnc
plU95jq9ANYdEkPyJCumUIW6J4ZmqIZu6COU42d6qCLmIiPKEV1t3z3652EeIzM20Rou439i
pSUqVVK1aG0u6ASKJQ8oVh5OpnnSU0rhYcE4IYcOKZEWqZFqwSGWQJK2QfKNKNGVaA8CoQig
aGFuYgHi4A9KqYqqJBCG3F7RqHfa5o0mFmWN0E76KBQuFgc2VpoeqZu+KZzGKRHYYnyCVojm
pZMuHpRWn5YKAJXeI4K2KJ3YIBhuqRqu4Q4aoKEGIdU1Zg7gaAVmFZui6ZpOKmR9oO1MlqTK
Kad2qqd+akVi/yEJaOFF4uVo6iX/8eVp+uU7SieY/ulJLmoY8umKeml3eo8OetuMzN7lvZyj
tkGECulZLiGQBNelut+mgqqyLiuzNmseNGkXNuKVqFevwpyzXiu2Zqu2Ygi0+pQXWgm1eiV4
biu5lqu5nqtsdCvafeu0Kty4oiu8xqu8zmteqOvysSu95qu+7iu/nhl9cpJ9Rhd+7pd+9qvB
HizCJqxy2Wtp4qvCPizERqzEphXD7qVpviBqTqzGbizHdiwwVWyqXmw7ZqzHlqzJnizKuhDI
tqCqYiyrpizMxiw4LgDN1qzN3mzNyuxarew6tuzIvqzOBq3QBiLOFu3NDu1Z8exG+v9sR5Is
0j4t1NKf0U7tAkRtTSmtUjItUzqt1Xat134e1Rrt18YU1jqn1kIn146t2q4tzoVt0bJtP5Xt
fZ5tfqYt3N4t3qqb2+Js3uaT3Aos3RKs3fYt4Rburu3t0RpuMf1teQ2sgxVs8MRMBkxuBowA
5VZudl2u5VIug7wr6niu4obuVCCuzYruMDFufjmuh0EuQySA677uUdyK5orA7NoA5wLC7S5L
7upA7dYuJcCuNPwqR0kB8MpA8Zou8hID6eZs8jJL2M2ifLKRqaIeaVqsw95BsurB6x6vEmyv
925vJ8Bc7+4uDZDvHlwu5kZB+rLG+q4A+vLA+E7uJXCvLrD/k7X6URR47wzQb/P2LycsL836
L7JYXJ3SaamKJvWiKsuKbNMCbRa83x18rxN8LwVzgrXGb/vOgPnqwfuqbwYfhvy6QAfzbu76
7iTwryfU0/26EujugP4ar+sKsAz/LwDP8KXs3KjOonJOr/5Vb8heL7BCcB6gsBFQsARrwv1i
MA5scB6MsBMwMWFAsQk48RKXsBQ3AhFvgmKtsDOG6xJksQqAsQ2P8SIAcNWSsaSQ6obYpRSg
LoOproux7rkJMR6IsRDY8SWssBLfwBW7ARUzQR8DRiDTrgnzsRWHcCXgsSXsFhd/bj8I7wTH
MBpP8iOYMSVDyvHV6Q4jcA8rcM8y//DWOvAVgKAdKPIPmDIlPNEe2y4i98EfL8Eg+0Usv3IN
rPLvSnIwoBskV+sjMygVoPIlB3MeWLIwU4mornH0Si8nr6APLzAQswEpcxBiEQEw80A1Q0Ij
t7IAaHP5cjMHFzIse3NhzDI4s3IJiLPLndMv43L9Elcj59Zc/FcLFzE7F7M9AwIx3zOUZLKS
svFdLnM6NvMnP7MR/hZanmn2AqR4AgEev3AYg68IHK8iQ7RDkwBFQ3QKVHQJXPQ1491UaTM6
EzIU3y4tywBJlzMJlHRKo3Qto+8Hb7NL//HslnRMv/RJX/EIj3Qsx0A56/RLwzQ637Q41zRL
q7QGt29Is/9wgLxzDVTwCQCvRj81Rm90PVt0VdfksR60mrapgio17n31uPnyCxzxCrxwR+sz
WktBPqc1k/BzDiezMnOht0orVp0fghTEWh6Bg57yVVO1U5uAESeAAEh0X0t1DP/1CIAvYlv1
Ykc07DZ2F8/zCRD1ZMtvTVdx5V52Zcc0C+x0CxA1N4N2aHMuZ08xaJt2Zpf2OV/2Bms2Cbs0
aqdAa6v2Sqc2bK/2aauAZ1/Bwr3kDQR2VT82ZA+2EQN2YZ/1VlemQSc3INqdWNsdWHv0Lhu2
GFcwcrM1divBWmf34vhzcn4KDzOzJy8tKKOtKJdlmjrhjh6hFOVmDoAxcAu2ccf/N2OPdXzL
d2Lf93wXt18Dt1Q9t/vmdm1TtiEL+IDT9mb3gGgjtWijtoGLtGtv7oNDOIEfuFG/wIODcyFP
+II7eIQnOB94sRf/Nn0zdmBT92IT8XWz90ihFELbqFcv5vdNt4kXtmP7N3fnuBZst45HyBUe
n1s/gRtzGBz7mBy334+aIiIJTTQr9EK7sI0TN37f+H7XeH8Pt0NP9Y3jspZLuV+jeH5HOYz7
APmarxOz9Gf77oaDdFLvtm6XuU93ti2LdGwf+IDj9vrK9O66uYPXdp3jdp9LuIffOQrsNJ9H
gW8vpmRveX9fuYnP95fXNwog93pj41333i7Hs0clug3A/zc7R3WPh/oT8LioN8iSqkCQO8GQ
s1iRO9mRm2dbpidbMgFZdrqNazmuB7eunzh1R/qjS3qYT7mUC/uw+zqjArhswzmbj/ZPi7CZ
LzuDh/ShgzigF3pSA3W0Yzi0/zmdV7u3C3qBcztQUzu4+zmhmzu5y3mzZ8GIO7dk8y/3dnm8
z/unc7m9E3tBKjdbXnr2Znq7uzuyT/qt7zq+l7rBIwGpH7x56HCnhNa/OlPANm7gPu7gauOS
K7llWqgU7DUOZDG81zP9hjyOQ7oLNPRVi3zB46+Ce7Oyp7tJs/yyuzy654Cb9/G0d3u5z/y4
fzvO6/zLf/CzZzvP9/zOD33Oq/97HnC6u7+3mIe5YRu700e9l1M5VlPmhML68P43Uyt9DHj8
yTe9woc9DyS82IvHOMI1aII3QGekQJM3QcvAsJ5nb+5AWE5zCtQ6DKf81EM9ypN8yYP93pf1
1xP7dcvMD8y20Bs9DCC+0UvxzQe6tq970Uf+bR890Qe9h3/4z3N4zON5hRM96Fv+m0s+Ffx7
wrVwlz+931M930syVAM+Bh5krM+9aCy6uE6V6Xf9wON74Ze976sA2f++dxRlP6N9XC9itJIo
LZkpF+khD9R9+Tx5U+++6ku99bN+C0w02H884cN+mJI5zCe+z/N0+Dd+m4N/5Y8+0lM+gjO+
zwf9hJP/f4P/OeJnePlbO+mnNB4wtXSDgCGMZGmeZKKuKjquKFzKJv22gmy7/Dj8wCAQNfT9
eoIi8mRoLp+mptQJnUKhuxpOm7h6v+CweEwum8/otHrNbrvf8Lh8Tq/b7/i8fs/v+/+AgYKD
hIWGfQuJiouMioePkJGSk5SVlpeYmZqbnFcNnyifDT2imRCnEG4TqxNuEa8RbhSzFGpCt0cn
SkouvGYbwMHCwU/DG2pZM1vKXczNN8vQXsku1CfJWdZnUm0Z3ijeGSbh4N9k5CfoJOol7ODd
4fHiPe7l80/y+fcj9QLu8e3q6ctXZqA8e+vMjTP4T2HAfQshLpEIaQqVLxZF/5hhwTFGNGnM
PD6T1lHbE1y3iORKsrJXyyvc1nCLiSQjso8hr+HsxLOnz59AgwodSrSo0aNIkypdyrRoo6eM
mkqdSrWq1atYs2plU+pEVxdfLaFK1YZVqzawYrWhVSuNryW7XuqS22cYG23YPnLsqHPkEpM5
/+LMthMNTTX9GlLs5yWxQ3+P+UWuM5De5IhXBD52LJEhQjeMeajjnHly6NA/LWK0cnNvX5Fc
YIcsWRjKWyRxB+Cmu+SwYSq+mbBu3SOv363Ikytfzry58+fQo0ufTh0P1OsLqmvfzr279+/g
44QlMd5E+UljVbFyBUsWLVu8ewy5bYJ+HmNt8A7Wu//X+LTasT3hX4BuDJcGaQ99NgaCCS12
2R0AifZgg1AwKJmDnRmkIBuouUAOYx0mmM6DIfZkU2+qvcHCayymsJ9fMLQgI4BwxcfDfDYa
odtqF6URU3AknLiGfsflQGN4SCap5JJMNunkk1BG6SR2UElp5ZVYZqnllmWcdx55oGCSXlnr
odXeWu+5laNKutlHgpt22OUGkbJxsWI1R7pYJJ57thiYnnEAWZBpmxFKUWOGYjbioXmcNuGF
FSYqoqIRRbjhGiViBuKjk3ZKKVIp8hBqHDsMCKifRq7oGhlwssnSjvKtKZxGMgHXYwmjDlmb
qVz26uuvwAYr7LDEFtsUlU//Gavsssw262wkXoYZirSXjMmGWey94t4sa7Q6l7fexoGfiruW
SlifBAqYZ6pYmMsfutsIuqBiEFkYhr2WXsgoZPuCYa+nl0qYYaEYLlpav+dwuuiEmf5L4cGb
CIlrrhu9mO6pesJ47oyAnSRrfUF4DGsV8vI4wo+3CiDxXeUed+ezMMcs88w012zzzVch2wjO
PPfs88+9jvflCENHYu0a2JqpLZrcwtdSyC6B+/TIc8gJh0nu1olExxgLBu+f7KLaRsliKGbw
2fMW/Cm/lmWKD70CB4Q2EvkeBDDba7e9T75ls8P3Qwz7bfbcn5L4tyW5UnzGy9BoXOS5Fzee
8RlQ/+tIdQlCiIz55VGkPIYVM/mmuK7w2sAX0KinrvrqrLfuOrE6R/X67LTXbrtPouSeOynU
ioWKeqtkqxYbbLGBkn2Zi5x8HcLM2d/pGffH56p2Pu/yulyn+rzWBZLtr2d54512wAzta/cZ
5fdbWfgelh8+ZwS1r6EZ7sv/aP0Ps6/v4ft3YqDK3hOD9SAntgE+jgaMY9XxOGc5Bn5reSj4
XxkyQjEJosGA77Le7TbIwQ568IMgDCEfYrcIEZrwhChM4RJ0tzvejcIUvyNT8JQ2vDUUz3go
2Y0DH1g5OgDjahgUCfX6sj1naDByPMie9qAHtu55LmH6CJj4+qa2Sp3Pfv8IQ9T8BHZFSEWK
IIN7H/gW1kUoxi9uE1nf3VCjRjKaiFYng2N+Bii2sFUvgV2zoxmOp8Mr5NAFFiQDBSX4xAsG
kYgxWpcKF8nIRjrykZB8EgkdEclKWvKSM9PdE4oGiaOpIWlsSMu22tIGCN7oYw3cYSYw2Ccm
3nGISyxiE5OoyMahS4mCDOAXypi/u2lRiv17Wxa/x0t7OExv8wgjwNKHTHiUyG3FPGaDOuS2
5kiPeyAR4i2jgcsaSU2VIOth5wo5wZXVgZXTa0Y3McnOdrrznfCMJyAmmQh52vOe+MSkJ9MA
yjWIkmmk9KBxvuacQOYTYgs76O0M+hs5KvShEI3/qEQnStE/0DM7Fc2oRjfarH2ioZ9q+Cfx
0vRBaqwTObqs6KaGyVGYpfRz5GypTGdK05ralJEXvalOd8pT6Xj0DCBNg0htSFKB7uSkKHUo
TVfa05nFtKFNjapUp0rVqvoqp1bNqla3Wq0YXqtMoTzTSJtW0o1xVTp/499ZZ/fStbr1rXCN
q1wJgdW52vWueP3CT80QVDQMVQ03BOEh86oVZhL2sIhNrGIXy9jW1bWxkI1sVPdahr6e4a9p
CGxZ6ShZphi2s6ANrWhHS9rSZuWxpk2tat1JWTJY1gyYRYNmBXvN1RKljbbNrW53y9ve+nYM
qP2tcIfbutaO4bVliO0Z/2ZL3OY697nQja50pyvR4FL3utj1lXHFgFwyKNcMzM2ueMdL3vKa
97zoTa9614vY7Yahu+yNr3znS9/62ve++M2vfuXpXjDAd78ADrCAB0zgAhv4wAhO8FT6+4X/
KvjBEI6whCdM4Qpb+MLyZbAXHIzhDnv4wyAOsYhHTOISP1TDV+CwiVfM4ha7+MUwjrGMZ/wd
FENBxTTOsY53zOMe+/jHQA5yGGz8BBwLOTlIXcpT47nkIzv5yVCOspSn3FQiL8HIPUmysbQc
CDr9h8tCcSUSK2FKHzU5j8UCczmVSuU2u/nNcI6znKWjSRf2Dj1eRRpYmaJmqhCUDmIOgzX6
PP/mJbYLloLm7PSKU1uWIXqWk/ijGhiKTSj92dB8oPScN83pTnv606AuBAtfOK1R++4UwDtL
Uwi96kvLIdBgGHQtryBrrh1xDAZMp0lv3ZpHZ/MSfDTzmdH8JOzhEQ+aDrWyl83sZjv72WBi
IVhGzclBWBkJWOYJq5eybTL0+djHXlzLDv0MLecakWI+dxpeVutMVC5cT0h2HZukxG6HQd7Q
zre+983vfr+4zi40z50fce0eZLsT9kZKwv8Abnt/e9ZfZvQy8Jg14tAa4n+ANxjwXeglLVwO
HPe3yEdO8pKbHL/VFkC0SG20PH9yz9zGOFY+3gcmwroMD3d1rMcdOQL/GtLVNHeDxk0mQJlX
J+hwaOvJl870pjv96bptIRJWTomC8+DgnEA6ybwwbNIVxebhrpjOJQ7EVh6Vm++y+KHdjUoe
sVldY+eO1p34dqjb/e54z7ve55pylQ+873+wuguwTsubT45PttzanebeA3mHXNdnV7Q28ZTN
XYcdkdosd6ANj+mB5glrFiu86Lnn80V7LeJqykWZH6i5sZ2ZLxW/mA4uTwhZSjzyvDbin2E9
++wpfe/AD77wh0/8ewJeaAM/hOBRQHh0877RgLK97rvAeEAme3Rfln4sfZ17Ixk63ZzfPtrZ
7cruR49jmb+99nk1bz2CrfSvPKDkKz2GkOHi/5Qp4eH949Vk6cX+/RxDe102f9OXQdpnS19j
fonka+NUd8X3gBAYgRI4gR0EeH4nLVInCct3As0Xfw23fupWgAIYKNgXJCV4cd03WCI4fiqI
gF4DfQvILu5ygC3ogoWXgqGHeDqIKvB3fhQXgnSwQLexQPqXf2agSy3IfjVYCEDogxtzgLGk
eDhIgNbngBR4hViYhVq4hcVSCgA3baCQgRrocvwEczg3g0TURNDzgyMRfo03SAx1gnH0eztI
bL9Wh+63eL03ejfoDLOBfv/nfr92c0SigGnHh/MWiJbXhgYIfUH4bm/RQ5EohFAFd0aERDPI
iHGHBz3IOGFXbwASiP+YJjkoYoVceIqomIqquIrTQW2c9IVVR4YfZYbeloNohoayl0FrBods
Zk6zQodf0G63ZyeBgUCFAXrXo4mJp0cJ1Iy6iIhkJ4UdJ4h2mIncd4j0ZwfiNImXgzxtBxNL
ZlazhIuQJgmdeIyKVIjE6IfTOIes+I7wGI/yOI9L4YpDY2qnRhZfNUM/h4KkZ4vUqGW8CCRy
CEDAuHNmVzq2aIyal5DReHqdN3EAyX7teId1iIzQmEdUGJDouIlOYxt04Y3gdG/hOJEmKX+a
IIqW6I8ZmYcAWYX0GJMyOZM0WZOCIIZf4or5mGqkQ1DoNI7jl41091S+uG5QSI1AqYyV15H/
DymNS6mUuYiSLSmUXYOReKiRR/mTVDkH4SKE8TF0JGOKSniSWzmAMAhxoLhNUklsHXOQNvmW
cBmXclmTVCdwGGiBfrCBJtCBBXiDuTeWa0kHjueWUpiVobiQW8CQU2mRO6iYbBmU7YeUkVmV
h+mQ/9iQfmmYHpl6IEmJUeN6YkmWPPiSTDh/65SWTYmVgSkqXTeXrvmasBmbWViXJYB8LNdy
qCZDqmaUjih+YLeaFEmCmlaUZ7iRksmYppOYymmZV3mRfwKYQmlrn4cDgCGMo9mQe6KVk8mV
H+OVDgSW8VaSwCmaFVlzQHia6chzUVmWhCmb7vme8BmfIkebRPN3/8lXCHpZAnzpfMnIkuu5
nTUxkEpVkAUZjNg4mbzimJLpZRCpNdAZmdK5e9RJI9b5n4x5nItZB135jToCmitpoQC4mqXZ
n+WYmk7ZnCrZlq0pnyzaoi76opxGnxdYarGYm/u4m85zoCcaomX5hgNZhd5DnAiZjVaZLgpa
oQC6oBI5niJaok76hwnIlJfJjuVZpW+woSP5LaBphQ8KonZollM6pP5ZaSlKI48Ho2iapmq6
pjomozJKcLIIVLQ4R44zpqrZo6z5o3m6ZAXaoOVYpM+5nF/KoDtqpORZohHqj9UppdeJiWhp
dGiApWEAnuHJpYd6p0m6B12KemvXkmX6Nf/tyaaiOqqkWqoP5qb2eZtwaqN6xo/iJqKJ2qjr
uAdCOoeEKY5U6YxLijFIWkC7epHkaJGXF6tw1zGEKqwsiKdfqqGoBJaUWooOiKvImqxWWopq
d3hqyKgfKkSzipwAcqamGq7iOq7kWl+2SaO1eZ/4Gad8NadFR61Uqj2OSqLL2AcECq7YOop+
oqOxp6AImpy/GqaPqYnqWaiF6ZMtQ7C+Kn8K25x3AG+SKJJv4D0AC6/6qq+E1qcveInd+okS
aaJeypHwEqrlWrIme7Io61v2qKoXSG2VkJ8ksJ++uYhnCatNqAeDuaIeWIhsKH1HuqRUaJra
OrMM67NLeKHplJn/4EeDz7izzLkHGueZrkJ3B+uISXizMEWyRFu0hme0Tfi1pGmCOpuyZFu2
Znu2kqWTYChtL8uuleWu76qZiBac/geptcJ1pli16Ke0XOtz/qqdIlhoT+ixtOE4xolLhAuF
ihu25resj5ilbyJpU0u16re3fZk1vZlLWrs9NEt7Xhu0TNuktoq2pFu6pnu6kAWLa8uyuKmP
rYqjPzeCm8e4eriZPwF7lcmzjSmoTkiIHziVnIe7htu4GAqhximvnlprFGq3e8Shr7ImzxqW
0Vq76eeS6jSCGze26oe0F5uZ/Pl8vYqU+Iq65Fu+5nu+6wWzIyCzLlZ9qTO+uMa8zQK//+hb
v/Z7v/jbW+orAOzbYu77vtobv7b7LFqbvwZ8wAicwHi1v/27Yv+rOgH8rmyVtwpcwRZ8wRh8
VgwMtz62h3P1wBkcwiI8wiT8Yxvsqk52lFwFwiXcwi78wjDcYScMu0KWuWvFwjGcwzq8wzx8
XzM8ZW6YVTjcw0RcxEZ8xM/1w0i8xEzcxE78xCKnxFA8xVRcxVZ8xUEmxVi8xVzcxV78xRCm
xWA8xmRcxmZ8xtclxmi8xmzcxm78xoqlxnA8x3Rcx3Z8xzIlx3i8x3zcx378xyqkx4A8yIRc
yIZ8yDIjyIi8yIzcyI78yOGhyHFwAZR8AZB8yZicyZr8xaprl//qqnxu61ocDAeVbMmbfMqo
nMqqDMP4WGpsW6Ou+3IobAelvMq2fMu4nMvn67Ku3MpjyKqyTMN0UMu6XMzGfMzIPKqdbJfM
DMs8qQfEnMzSPM3UXM1vmXJvCsrAXIazXAfRbM3gHM7iPM4SKIZgiK6/HMvcLMxz8M3k/M7w
HM/yPHJ9l82GIMlX4M4kEM3EXMqm3AP+7AIBLQD+/M8oMNDznNAKvdAMTWD1nKrOrJtooM8j
wM+VTNAFbdAlkNGUfAIBzdEHDdINPdIkXdImnV3HB9F4ts2z2M1hQNEY3dEVzdEUTdMyvc82
fdEmkNMn3dM+/dNAbVpeaM7Rhs6t+8z/ZgDTFr3UNz3TOh3TGg3VOu3OCA3TQX3VWJ3VWq1V
K3vO6frJgoDPUGDROH3TCO3UGk3VT43WTb3WUL3Tbr3Vcj3XdF3XGbWyLIvXEX2jE/3UZu3X
cf3N+qzWce3RgV3Ydp3Yir3YjP1IOJl8Xb3S6tzS7PwF/TzVgN3UaL3ROa3ZVs3Znd3Yoj3a
pF3at2PPLTsKeMkHYj3WMn3ZBj3Ya93Zno3YcB3app3bur3bvA0zqO0VYB0Irf0EtVzcs33Y
bU3btx3VIY3bvf3c0B3d0g0lv/3VbcvScurSL63cZR3Vgm3bhq3ZAg3e013e5n3e6P0c1V3U
e/26aUDbsY3c//Et3jzw2d2d3vid3/q931Sx3i173ZOd3ZUNBs692csN2sw93vQd3gnO3w7+
4BAe4dCi0lMX3GEdysc1yl4w0Gf91geO4K694Awu4SRe4iZ+4nlwrhW+2n0w3MQN27Ut3oSd
3DHe4Ms93zaO4jq+4zzO45EN3K/c3sGsBt9d4yN+4xn94S9u0z3e5E7+5Cautr1s4daG4dyl
4fl83Eau5Ahe0Ece4kkO5WI+5mSO3sscbVROCC6+BEWe1vJd3x1+35Yd52Ve53Z+53heB2ue
53ze537+59Sx54A+6IRe6IauFIJ+6Iq+6Ize6OmM1I4e6ZI+6ZR+4djdrtpd6Zq+6f+c3ulj
kOieHuqiPuqNDuqkfuqonup2buqq3uqu/uolzuqwPuu0XuvTLesu8F22vuu83uskjesooOu+
PuzEXuzWDOwnIOzGvuzM3uypjOwmoOzOPu3UXu2FDO0lIO3Wvu3c3u1ujO0koO3ePu7kXu5X
DO4jIO7mvu7s3u48jO4CoO61qJapVcC8hQD47u76vu97jNesW5//3klW/l5YDgbyLsB+yWTQ
SkFHyPCVGsG0qiX4PvEUT/EoUPH5jgYYX/FmsPEIAAUcnwkfz+8kX/Kk6++rm+aAAO8HL8FJ
+05EyYsNP0gLnwkQTx0eH/IlkPMjXwY83/NjwPNLoPOWkPH/Jn/0SF+yKA/kQf7oEk1DgFaw
7BSkMr+LDu+jNn/z0/HzRj8CP38GX+/zQo8EEy/yXZ/0aJ/25UqbLM7aA+9fBf8FLZ9oA/xI
L6W1oqP1hmDvz1H2IH/2Fp8Gfq/xgH/2QTH4ap/4ii+q5qzikg3pISVWpCK/jXT3eh8cfB8I
md8ciN8Dne/1hk8Gny/6hj/6PmH6i5/6qv+eqBrwav72DRb3XjD3YhpRlk/BlTorRbH5zIH6
JuD7agD8X/D5wr8Jxb/6yJ/8M5nNbZ8HLC/5vDmhXDuM3Rs2QSwI4iRsvVhI8mJQKCMoAhqg
pnj14xRBniOkrCGHOftE4b+nb5f+/xZEkHoPCMd//B0f+iew8S4w+vwPAogoCqV5jkiZqqe7
jq8ssDN7t3Y603Hvu4AoEq9oPCKTyiWz6XxCo9IptWq9YrPaLbfr/YLD4jG5bD6j0+o1u+1+
w+PyOb1uv+Pz+j2/7/8DBgoOEhYa9jUkyiQ2LCrmQURCbE1UTmxFZEZkJXR6Jgh4ynx2Fn2G
koK6iKaq5g3AxsJeGdTa1r7Y8ujm3vK66Pr+mggLGw3LFN/2GiTjMiMDBxvPKBcpN0tjZ0P7
OuMWM38fwuQcCXGhv+DsBBG5m5vcFO3g8LDT48Ozx8vr7/9oN6TfD3IGDyJMqHAhw4YOH0KM
KHEixYoWL/9izKhxI8eOHj+CDCly5BVGM0y+QIlH0iQtli5p0bTpSitSo2zyqInThE5ReGQB
HVBlmzZuJ5YVpXZ0m9ESTJuKu8ZU27huUJdOtYpUa7Sn36wlBUvsGVVy6u6dxZLWH794Z9/W
QNuWYFsd/9jykzF33Vy37waSDCx4MOHChg8jTqx4MePGjh9Djix5MuXKli8fUekCJedHKyVR
soRJExafJXbedDVj56kTqE1DeXqViawTsahsFdCVLFZovZNina2b95FowYuWTV5119bcTocZ
z+38t9Sm0Zvvhmp8ieyw4aTs1StQy9qAAAHzJcjWSFzz58uJ/zse3rm/BdO/m3//Hz3m/v7/
AxiggAMSWKCBByKYoIILMtiggw+uodkJnTUigIR1sBRaJaNlQlMpq8D2QogihljiiCMy0Z0U
t7nAYhTZKTeWdsQNZx2M1dBYnY5Rybicj1/FWCOPPQZJJHPETefcjUbG5lVw2EwRXnzlRVEe
XH7RZR99+dinjpdafqnefnZh2c98YW4JoZprstmmm2/CGaecc9JZp5134pnnmxeaQGEJfM6R
oUuixUSaFSiiyNOHOS1qBKKNOqEiFC7aNsuLOS753IxXIXOdcNvhKJyQSXi645GkYopkjsWt
yqSro6JqFKhKSKopUeDVJReVT1ippVzxccmer8Cml+YS/1ReWawSQuyqp7PPQhuttNNSW621
12KbrbbbcnsGoBY+4ickoA26YaEdHgrpaeq6xm67qpnCbqJuBFWvFLVqGiS+pYbKXau2IsFv
v6Ye4+SrAf8LK3UHn8qwIM1OKSYUyDab7K/BItEXlk5QnKWZw9rFX7cjk1yyySejnLLKK7Pc
sssvt/ytuN/GIWgWL3E4UxWPwgtizz4nwbMd9QZ1r8HUeXrrwaDOOuRX0y39b9NNy6h0vk1M
neqm/sqa8B8Qk6kWyOW0p6yxZoeccV9nJ9ExsSLXZw7YMNNdt91345233nvz3bfff8NMM580
w2EzFjifqzMVQjP687tBy+suvf9E13ZpVsklDeXCDlO9+dNQC/yj00darTCtCYd+9enZdO7H
3G9XsWteaK93se3CSglfE27TPqbaLbwOuPDDE1+88ccjn7zyyzPfPBaCezZh9HYYfgXiWcjk
4c/zouK4ot4DTSL4CF/+BKVYtG5k6gRz7rXnoXpT5KxZi/r+wCmirvXoBbPuPqvl16h0HBtb
2wjIBIjdRXdsg1vv0va7AUrMdwqs3bKIEDznYTCDGtwgBzvowQ+CMIQixAj0KrSZ6WGIXDcj
FPYMtbPIgY973YPc9iQXKwHSxlJaSF+PtpO+9TlMdP/b2v6CaLqGkS9S+eMUjXiYLyfCT3NV
k+LEDBj/tysETz8WcyAXMfbA3RFwixSsoAouOMIzojGNalwjG9voxjfCMXAoPKEJ/zRHOlTP
CtfDQvbSVcMY2nCGSGBckwDYhPPRwn+98aEigai6JCrRRkRE4v34t7pIWnJ0UJxG/W5IxQB+
EoJRsiIZedUlMIUxlREcI+5E6UUGZpEEZowjLWtpy1viMpe63CUve3kIwoGrjsHcQx6rsMcr
9PGFPWvNagIpw+8tM5BsQCQkKelJ9lnzkUXK5vs61cQlZrKa/yviEZFznG1WB4p6QKCv0nKB
d76zlLdjJZpeCbtWFvBjYupYmRqIu1n6MqACHShBC2rQgyI0oc0D5jDtKMw7/xSTCse0QjKV
+S4byvCZ64KNRtdQuRJ8tBvpPOfTRlo1+bUKOqKanzdVJclxYpN0JD0pTX30zZeSM52dBAQ7
TykmeMYzn1zqJ9xkp0oyyi1MSQUZs/S5wAuWTaFSnSpVq2rVq2I1q1otEEMZ4dU74lGFh2Mh
H12oTJ34rCfioyFaf0I5oUSRf2IRqU6Vos27Pik7c7XVXkFp1yn2lYeG9CvU8nrTvpZziDv9
GikDYo8ZAPUC/3zsQGZXWcpeNoESHCpm8TIPziq1sxNE6iq3atrToja1ql0ta1vrWi4wNJhe
7UNEpzDRKlT0rKyAVE9OJM2Ndo+ZbrUX6ToZSnQa9v+mQgTsYb/jnSQdl7B/TWxxCyvd+iE2
uuoMYELAlivIAnWyn92HaL9LXs2+zrL4iep6rzTeBf6utK+dL33ra9/74je/+uVgbB36h9pK
4bZUyK1ugXvRtj5ukB9CjR6AIk657vSHhXUkYD8XPwtHkaWGVOeFderJlVqXuuE8SHrfK4PI
ipe9nh2WZjNb3sZeNr7yNTF57SnP/eI4xzreMY977OMf2xLAURDwFAh8iI4C+Q7b1TFAk+zk
J0M5ylKeMpWrXCAhQ4HIUjCyIZBsZTYsOcdN/jKZy2zmM6M5zWpecxuw/AQtR4HLhfAym8EQ
ZhyPuc563jOf++znPwM6v27/dgKcoSBnQtA50JbDq5N9kGdFQzrSkp40pSttaeYNugmFfsKh
B5HoSyv2zvZtMahLbepTozrVql61njLNhE07odOC+DSr+arIHYu21rreNa977etfA3sjrl4C
rJsg60DQWtcdprKKg+3sZ0M72tKeNrW9MGwlFJsJx642t7vt7W+DO9ziHje4r52EbC9h2+Re
N7vb7e53wzve8r6vuZGAbiWoe9763je/++3vfwM84ICr9xHunYR8CzzhCl84wxvu8IdD3DIE
N4LBkYDwiGM84xrfOMc77vGPr2HiRaj4ES4O8pOjPOUqXznLW65vkfOA5EYwuctrbvOb4zzn
Ot+5/5phPgOZF4HmPB860Ytu9KMjPekB9bkMgM4DoSs96lKfOtWrbvWrs4zpL3D6DKBehppw
JNltSIUbxO4gUQdGwxhEO9bb7va3wz3uC/kq3cEqvYdST6zWIysyzXoHsG/E7PEie2kYXBol
GN5ObB8J00LcIOwidigjljvlK2/5y2P+D3Wne2b622a965HvFPW7HQCvEcE3rhXaQ30zES9c
PC1eJI2PvWWWGPlLTT7zut8973vvey1s/qtGED4xQW9M0eOW9Hl4/UVYnxrT+3ELXnZ+gmgP
ErW7iX7RfQL9fu/974M//OIvQgk9zwatu4DrMvA6GphvEeqH73uc+K0T4P8/J+t/BP8E6j5y
sQbO8QNgAArgALbdbJ0E5xVfJGgITLQQuvSB+1WE/clf/FmUFkhgnOhfR2SggPBf/3FN7hFg
CIrgCJJgysmMSZhfyBmfRCHfgCkfHkAgRVygICVY9Fkg/VXLBm6EDgJIB9oPJsVUCQrhEBJh
EfLbCYaL3ckB+p2A+r0A+0GTKhBeM2lUDMbBgi1KokBfDXKh+HiPb42PFXbh80FgbznOFK4V
FaZeFVATSOlQpTjYFMxeXMEPXwkRIy0bkeRhcpGP+zheJD1D5oBYIP7hIbWhHOIhNwHMwOzh
dWVK1EyXrU0XLzSiEVriJWJiJvYaoBhgQ+kBE5r/gBO6ABRuVClsYSkm3kXpgSmeguH1Vhqq
IhkS0gTKojRllFql1Smi4hdKDs+k4hIc4vm8FVwVUjYd1zI416tAVyhx0oThkCSmVDIajTcI
4khJYxQQTSJNYjQyUSQ24zIyo/48l14FFjhcoyaiYzqq4zr6GRLeHR+AYgmI4gmQYnDh4oGh
oReuohny1j3SYilSoepRoIF5YT7CYkAKJD4a5C6uoT7m4i8mQTC+oQAMIzEC4Y9s2NGYDugA
kEZCIx6eoyPixmBFInOVZA5l40juFUc2Vx565EuKY3KR4zV6JDva5E3iZE4mmeeloBrEowDM
ownUoz1iYT+ahhWKIf4M/5brFaUUGuVB0mBwBeQYmsgZcpQzYWU08eL4DGRXRiVA/qMTSKRF
hhRFHuKDbU5LldQiMglLStJbdk03apJKHdYPfuAUBSFesuWkUMpZrk5c7o9eeU6HWZcPKqNy
VdJa7qVOMmZjOuZjqhZPKmHNrKBttWCRveAToGFVwksMJiXXPCMN0WJHVSU0NQ5UvmJqQKVX
KthWLgH3zCJBhiVKmoCL9OVEuqFF+h83/AJdvqVvpCVZOKNczhSjic4jHtGdCaYi1pRxKgEi
+SVaquVcTtJiUpdhihg5aV9OQWZ3eud3guctmV9PpsFPBmUJDCVEgmUsPp82hmZrjib9laZU
qv8haiKYV8ImDrLmVzpKVnZlbNJmbtbmG0Yn9wnngQImdcaKdRpRNzWSS10Sd8IUcmEnG+Km
Wermbh4nhKIUTqGT9t3ecmUnhYVniZroiaKoBo3nZBZOZQbYZW5ZZtZfFfJjQ8JgFuKoVSYk
cCGlGT7kvNToabbmQsrmEdxiZ6pLkPIlXLEIdBaoho7KdOqL/zSjXKHlda7kgy5lhFLo/2VB
RWaoUgqQlJrkslEYiJ7kRzInXvFgirrpm8JpnFLLiuJdCilguTBgWTng4tCoj07l8uXobKZm
FObnoBIkkPppfQ6eLhZpf3LlUcKQP4qlpTQpbqakSl4NmR7mYoWodHH/kyCaqZa+55Vi35pi
Y0VOIw71ptaUzpnaXiV+JDeCYJvKaa3a6q3iaoOkIHmigXnCaJzJaBN8Jj9uJVeWXaAWaaLu
IkYpKw2WYbPu57L+4vTZIrL+KJE+5yw4GDVRDqZSI4dOKaeGpEzeYUv+lYRt6YLmVIVSAZim
6jEiqIWda0xyp2BtaYXSaq7q677ya78+xq6y6Bv4qrk0oOJMwbB+2mf+5fbB56E+5UDeZ7RS
oBbq5xj+Zy/q5zNB6h9xwW1s64XmZhwu2rd66GBSaadCY2AiZnAuVnYu2rp6KRY86UWqazmh
q4iya2JiKeQRp7/67M8CbdD6B8DWaVjd6QoR/6yeGqwUIGzFrqdKjqqjxqdqxObG6ihTsqfF
Nqyiai1/Dh58Uqyxmo+2CgXZhukLlCUmmeNG0qtzIo29rizLYqSWcgGJ5uyKgCymKmVi3ax2
xuysympM5avQEm7hGu7hDgLRwqOLDtmvGlqwMkHTim1auSfDGqm1XiXHcmHYYq3F0lqhqibX
Xq6x7tbVbkHRFE1E5u2H+VWHSugjbRK4yq3T9O0OtW3/6d/MQukHJmLN/uDduq7OBi/iEm/x
Gu/xzl3A0tHiHu1YJW3f7enBkmaiKSwbbOw/giGSUi3nbu3Tzmb3rqZnZqx89ujkGqLHpi23
ri6IghJwNqfbtiUQtf9UdSYnciLnlW7qIIKghZ7t/jYoXQlvuX7K32JTYRKwyyJvAivwAjNw
hCjvOyZgSyBtnkLv0kaBwr4Gojpt+2FuowgXg3Fme5omVUZq1q5m1k6rBwOS2ELkBwveR6Wv
MB4irGJH25Ioy27Kbz6JyfKGS/qm+3IXHVYSDR8w/5LlDIeYdMye1Pywgw5w13hgc1aiSg1v
A1vxFWNxFm9BT/LqGQwsBY9e9DItkikrsdbB9SarofJn2G5h9tbi6ykpoWIrURqlpB6YozIq
MNqmk76Vh8kUg5LkydKvI5rrHtbkM95rEnckTLbspHarEGfYFDveIvesvEZxmWpYqFayFnP/
cid78ienxAP3iSirYPPu3fOGsQVDQfXSMWfa8Rug8VeC3XyasBwnKQwhJPPFsbR6rS1fawv/
VsSOrW6q7yNDMu2uinYJMhDH6taEpDWApCSPa/vWVTPMbzg2siOn7jHLK8/2oQ9v8nNdcspm
spLcLiijczqrs/FyMSn7JONmmeNyGuS+JvUmnhnTQSz7olNqb+gipOh67x2/cSrixJFmrzB3
bUFagQz3L3H5rzaVc15WsWEx4iQjRUQrFv4CB9tmZDYP8+r+rx1OaEYLMIQNMkmjqcp69Dqz
dEu79EuDwRfnjIkOLkzb9E3jdE5TmkwnDk3fmk4DdVAL9VBPGk8X/6xPrzRRK/VSM3VTS5lR
Ky1SO/VUU3VVWzWQQXUFS/VVc3VXe/VXn1ZWp/JWg3VZm/VZo7UuiXXyiXF31nRaw3Vcy/Vc
o8xau2Bb03Ve6/Ve83Vfi4RdYyZe+/VgE3ZhG/ZhAwJgx6hgnxkBOPZjQ3ZkPzZiU3ZlW/Zl
U5liAytjm5lke3ZkY3Zoi/Zok/Z8afbjcnaZffZqE0Bpu/Zrw3ZsG9Rpz3Nqkxlrf7Zs6/Zu
F13a8jbP0Xas0fOX4bZn//ZxI3fL+XZy31xwG9twW1lxSzZzU3d1a9xyW3fLObe2QXeVSTdo
Z3d4i3fAYfd4o9x2p1t3z+iRju4MDoJR6f+HRXTxDHw3ZC+pyB7EfPPNW5t3f4d3eft3mQXA
gBN4gRe4DBg4gdMWPL+ZPAu3bWvmjuYiHm/wHmgMmUQQjSlE0foXFtT3ZH80gAuCfu8Nfwf4
iSO3iKM4lSV4iweAC7j4gX8igxOagz83hK83karnHBPChUeMeD2EEpK4C3y4Y9+3igPCkOeN
ia94k8M2kjs5lMW4gcP4lL/4jJty6KEyW6uy9FrrCQO0WaxNF9kYQhCOkptAkbf2FEC5H6D5
3TB5lMt5aLf5nP+YlSu4CVC5nsv4Z2T58W35XXf5GJuvsFb4OsFYFclX4gq5OxuBmrer7iKC
o/9NnNv5pRt2nWP/upT1uQB0egl8up1KsPOCMZdL36GDr0E8Gj4xxJlTOg9AOptLOh+8ud1Y
+qbj+l5req4n2aeHeqgb7aifcqkL+qkXeuSiOh6sepnnd6Nz+BPEOt6C9Ii/et/cOq9je1qX
5a5ne375ep6fALAHCo1rmo1zN44jO+mqZ0JTLqIvumMtunetOoXY3eYdYPA9FL0/+xE4dgH4
u7/3+78DvJGjrYpzuyMULSd2Yign4eDMkcITH8M7VL3XHRJEPPkN+VjKgEO/7HJJc//IbzKX
JCUqcprqpZV2e8ofLwzjt8oDmbgjOMxT5p+zYKAH9qAb+isTZedSuHtjEYxpOJlHTJ6h/yAC
Mry901HwSTzSO0HA/zsBCLzAE/yAcvzGzzoPuGPSX/woK0LFL2/SH73Xv6PYa73Rh/3Cl321
YygPMPSlGugTc0U3WvM25nDcK9czh+b2oazL8z2uVo7b932PyXyVgztEkfurmXt6o3t7MyqP
s3srJ3sYzE3Q39PQxzcT4PvD4/vZm/3EM30TOH3Ui/7UYyjgt8jV3zvWT0/mc37nSwjaez7Z
y9bncz3t137n3/7Wny/bTySqFmNidnSrupTcZ6mqIrIy733gK7+buuvyC37hG8GejwvNW6bN
LzbOpztCP/73onDk4wsEkRorMTteMFATXLzD5ztYubpmoH3mP//CY4t+AYT+1ItseR+8xKc+
BHM9wnsGCDRiI5TlaAojmZ5ourYr69Kw2Kq4/Na2f/vpZsTU4JgzHQfGZWvJTEpzhuq0amhh
tVYqNlv6csHhrbdrEqe+ZIF5fD631eu3Gz3N6/f8vv8PGCg4SFhoeIiYqLjI2Oj4CBkpOUlZ
aXmJmam5ydnp+QkaKjpKWmp6ipqqusqKCPX62io7S1tre4ubq7vL2+t7GBAc4CccPAuBDPE4
wTzxGAEd8ZhA/Ued4Hetp93CTcgGjjeIQF5ujqBX7qeex57iPhjDIzTVk2OfJB80TyRP8F8g
oMB/AAP+U+KkCRIpUBT1eLgDSBAh+mr/zDNRcd+9iBI18sE3ZCNFjhYn9uOYUEDKlCoXPnEp
6I1MPHTKiLsjzg7ONDp5tvE55ufOPj2L3jQq9JfSpUybOn0KNarUqVSrWr2KNavWrVy75oIF
1qvYsWTLmj2LNq2vYn2KDTuWbFmzZ9GmVct2l4+3JHtN9A0UDtyhc4TTkVt3eAo8E4sDgQzZ
53HJeiQn+zjJgqBAgwQ7H2wJs0RDhiwNQaRh7zFIySI7to5cGfJHkqxfXzR5UiHCKKB1O5pJ
xk7PoXWSJjFTEw7Rm8T36BwuZTh0tdSrW7+OPbv27dy7e/8OPrx4VGCjjB6PPr369ezbq2XL
x22tZMocNXPm/yiaNEd/8/SX8l8J1wxIIDaqNMYHglIoWAJhDpoWG2uYUUaPRxb+odlAnnkm
WnmxkBYahCy8gI9qldW2T0YiVXhbiyvO4KIemKkISEI2hnjeIsh18RxzSC2XRXJy8CEdczYJ
VpwfgbHhXpNOPglllFJOSWWVVl6J5Xqw7MZbll5+CWaYYm4Hnx7yzReXfXPlVxd/een15jZx
dlNggasw2E5iCeqZhIOFFWIiPTOyiGKgg2TI2YYEdehhaQp1eQiJO5QY4Ymx5dOPjJlKYeiL
RVyYx6CX+nGjeTiGlciOYPSY1I9EhqNHYFf4SOuSyr26pJFj7sprr77+Cmywwg5LbP+xjuQI
GqTGLstss84+m0KZU5yJJjJyMUMXNHYZ2EeAOXhbp50H8okYOn3g6ec5ImI60owUairoqHog
WoCinTHaqLJcLoICjJTG2y5sn4aam22gihojwYMa4kQsjib7oSFbMMnqcUfpGpSQcjAZR8fF
2ZokkLlCS3LJJp+Mcsoqr8xyyyDq63LMMs9M81PSSkFttfU1cl+2+zXi7bdzTgHu0KnmivG5
5Cpt7p5N97m0Q5UGnDBG8sp2oaiZFZSovfgKguy6/tI2tcEKD3y2ip0eTDaLZqdd8G4Q9/Zy
2IBZQXFOtXocq6zOwXpryIIDNXjfxtWMeOKKL854444/Dnn/InZHTnnlll+exM055Kzztfg1
ot+21hjNF+kCBF0I0kk7LQieLaAbdSJrW2Y1oVfPPoS7AtBr76LJgv0wIf2SgMO/7L7NaUQ0
Ukh1jLijCCrzE+qGRPUhJjH5HxMHyf1PRQo13a0az3pxq3qb7/3qhGPOfvvuvw9//PLPT1X2
9N+Pf/5hat4C/3BZqyZssUlbbuIWnAwoJwTSSYGKUN3hytW62EHtaTlwHaDKFj0J3Q6DtdMd
73pHgK8Fwn6OGVtGcIc1hUUPXlUzntmgVzs/aO0lDdlSH4KnpLwl53t8y4Nw1Be45qzPJhZL
3wODqL8kKnGJTGyiE5+oOBJCcYpU/6wiV/xnAizKgj6e85no8MJAAJnudGNMhQUnCME8UVBq
lvrBajTothTSzg8f7N2+aoTDeMQARvzoY9WO10FAOu+Nbmxj82L4R1fUMGwPy2P4cII3Ie3Q
VX+bAw97KMnzDQmJlLSiJz8JylCKcpSkjEqpYFbKVKpylaLQogDcAktjtIKLAfwcI0JXwNGF
sXS7FNBeBnQnCaoxjYqBhzlExBFC2oCPgtRBC682hTp6DV9dyp4UAaEPGrkwkYM0pB87uExv
gnNFEyFnIBm2EkchK3sciw5w0IdEIZIvKJv0iRFpUj5LIkWf4PshEFkJ0IAKdKAELWj+GnZN
gyp0oQwtgf8WYxnLLaaJZ2sCXZuANsZwEWiBGmVgR3sZijMKIF3HfAdJo3ZSZMYNN2jzVNua
iSGu1QuEjypPTT0UqdMAbKWI3AMhXcpMcG6KHzy9TFBZurw/nIeR+fLh+I5kzyL6LZ5F7CEk
p2pPrGYVcBlrZ1e92tCwinWsZC2rWbOE0Oudda1speJDIcq5VNCSogK0KAExCtKPxkmvYdQo
K0R6UnIFdo0N8lNOiddSoRZPXjxFYR+kqSgaoopLjTrsH6eHPJjmDqg/HSpRh1chzHJWkZBq
ZGXJh7GKSRWsQ3RqP/PJVaDE9mNigA7IVvvUtup2t7ztrW9/ewubAne4xL3cW+H/KgyJApCu
tlwELvGawI5y1K9EA2YrABvY12W3mCL16aSSepk5fhZ5MEwCZDeEvYjdVLgXLKTbjsrNDF7K
sxqBL1HFO07vlpcPpcHhZF1rOKoe6YGPbC0RcWscVSWNY+Fj7WqLC+EIS3jCFK7wFJpq4Qxr
mK1zZUTPBvgzg+4XFyCcJphG3MQCb3jFLG6xi188YQzDeMY0DmWHF/Fhu4a4oCi2RYkjG6Ye
L1HFNS6ykY+M5CQzUcZKbrKT2XdjReT4lhcVMTR38WP0BvnKUCTyk78M5jCLeczFwimZz4xm
lkU5EVN2bpV5zOVcZJlDW44jFb2c5jzrec987jNa/uvn/0ALWkxrRkSbFfFcK9sZy3P23Ynj
7EQ8D3rSlK60pS8NCvVietOcHk+hD3HoRCQazovWRaMd/SUhK1HSnW61q18Na07nMda0rvVW
Pm2IUCNi1ARV9SxO/ZlHl/qJrLa1sY+N7GQre9nMbjYicF0IXR+C17EGdgidje1sa3vb3O62
t7/9bWgTQtqGoDasrQ3udKt73exut7vfDe/iinsQ5C6EueON73zre9/87re//w3wZc1bEPUm
xL0DjvCEK3zhDG+4wx8O8VUMPBAFH8TBI47xjGt84xzvuMc/3u2JA6Ligrg4yE+O8pSrfOUs
b7nLfyvyP5A8ECZ/uc1vjvOc6/985zzvucxi7oeZA6LmPi+60Y+O9KQrfelM9wrQ+yD0PxC9
6VSvutWvjvWsa33rfng6H6Luh6mLQlylQN0pLoD2C3B97Wxvu9vfDve4M2WG7ALvKby+B7D3
QeyhIDspzG6KtKtd7oQvvOEPj/jEK15gukOqrzWBdz3onQ98B4XfRwH4Ugh+8ZzvvOc/D/rQ
25zujof0JyKfh8nvofJjL+MmMk+KzYt+9rSvve1vj3t4/8u9wz79RD1cUSrftRawv0TxRSH7
3Ct/+cxvvvOfn+cTclDiv8dx8N08fFocvxLbB0XyoQ/+8It//OQv/1p/mllToH4KqtcD6/vu
ek10/xP/3ze//e+P//zrf//wQ/HjMbF+UtB+efB+YnQXGxVd3RJ/CFhdlyc03DB/mCB79WcC
god2/IeBGaiBG8iBHegl/md6nRCASTCAU1CAvIQNddKADNiAe0BdDxguBghMEVgJFniBFGiD
FOiBO8iDPeiDPwiEUgGCved7ywV8dSV8O2YIfIWCDrhA0aWCMBiF0zWFZ5eDFtgCV6iDQciF
XeiFXwiGYRgJMJRYqjCCOVCCUnCCTegXf2FdvpRXGbVXQ+OGc/JLbzgIDmQIyWeDWZh2KbCF
YiiIg0iIhWiIPkiGdqd+1Sdl14dob3YIeEhGClSHvVQ0cxh/k/iEHCUxqlMI//WHhRX4h354
gYdoiqeIiqmoispXXmUoV4zIZo4oapC4hAtIh6ZzibwERpvIi3noiYSAg6NYAsFYiqtojMeI
jMmojFbXY/8HgLBoaLK4a7RYCIDHhC2Ijb1IhX3RHzQoCcQ4eMMojKJYjMtojueIjumojhkn
ZM5oCWfYAmmYBGv4gAr4Uf6Bi7foUdKVAt2YiZoAjoA4juJYjutokAeJkAmpkNmmau5YCfCY
AvKYA/SojSv4grqYjf1oh/eokfsIUp4QkOQYjiK5kCVpkieJkinZZw0ZgpwAkSYgkS1AkR1p
j4OQi/VYkdyoj52INJ84kALwfSGpkkNJlEVplEc5Yf8sSYQiCI2gJo3TRo2EYI3/SJMZ2YYI
5I9YuZOp84uDIJRA+ZOBiJRjSZZlaZZnGUq14Vh315S59pTlFpU2aYsfaYD46JEVqYlViZfa
05WC8JVfiZaBKZiDSZiFWTmFMn1m2JbR9pb2FpeCkHnbd4laiYkwmJPeGAmgGJRh+ZOG6Zmf
CZqhKZrCgphts5QuuZjj1pgG95iBEJl3mI9xSJmWeZUbaUAsGHjC2IcCWY5iOZq/CZzBKZzD
6R3QszDKtTNH2FyPmH2R+I8cWZsXCYcxKIVVOJ3UiQpaqJnaSZzd6Z3fCZ7hiRXG2Xis8JIl
EJMpMJNXCQjSOYn8uI1GE4P/WTmDVAmQfQiOuyme+8mf/emf/1kKreiKr2iE1oeE2KeEtUiX
UiiD7hmdLmhd/4GAmEkJE9iZYOmbAKqhG8qhHeqhZXGeApCeJrCeH2qiJ4qiKaqiEBaiI1oC
JbqiMSqjM0qjNUpKLbqaFteaNsqjPeqjPwqk+YOjB8qcCRqkR4qkSaqkSxozQ7qcs9icTCql
U0qlVWqlXuKkXnSlW8qlXeqlX5odWQpiYEqmZWqmZ4qmSiGmOpambeqmbwqncfqMBdqIRAql
Riqneaqne8qnerqmSfgIFCCoFNCnhWqoh4qoHPqnCBqog5qojwqpkSqpn7moRdqogjqpmaqp
m8qp/yVZqXd6qYTaqaNKqqVqqob4qdMYpYgwqKJ6qq8Kq7Eqq/yXqlC5qofQqrOqq7vKq716
e7UKl7dqCLlKYf+kdMZqCcXmq8vKrM06aMDqmMJaCMQ6CRTKCtaaHcpqOd2FHpqWA7MGMaj0
DchKCdpqFdh6CrjZCt7qrO3qrldKeir0P8lpoE+qqng6rI5KCeiaCvxaHRqjnQWJFYY1sMJ0
CynVCez1rSRkQzpirr9BrllRidiJgnapropAsaugsO/KsR2rpPGaPC3JlHQai3Z6r6HKffaJ
C/6qFuMTsCOZFSR1Fdx6XTKbsBtLWXrQsA4bsZDwsFQxsdYZnRLqoM4ptP/kgbMeq7RLS6Mg
W3e0AK2sKa2EQK2SwLKmcLVn8VQv2wkOVgkISxU0+1c2uwlLpVZ0w19ny5NHVAmzdRZB64Tw
2ZEZa7TckrWLYLbiyrR7y7cxWpoii5okG40ma6v4Oq36Wq0qewt3Sxa5xZswqwm3dQmLIba6
ULmycLmNAK6FsLm+2LNHI7lmcZMyOLc4yZ6LwLiQ0Ll9y7qt+6HgNaBsKbhOSbjBarhUi7hW
q7i2kLpi4WUZKgk9iQmNkbm2ULzBRFiasLrAo7c82bUjkxaji5F6ebrUa7S4sLyuq73bu59/
C7ibELU6OrWDULWR0LuWt7u28Llr6wfA67Oswrb/jEC8BqsUxzsuyZsJ2YtHzcuV65tD9LQ9
eiMW0ruXOkmJ6Wu6taC/3MvADfybpSlHijm7blm70Xq75Ju7GBuhsblLECiJpFuX7ymbB8jB
9viRR8uz8QuxKkyQkEuSpOjCfAlPk4tSwlRSaDRSN6xG+MsO6rLD5gI7EtTDOsxdsYMgQTxM
FUS/pKK2lMW/jMLETSxgoGtEBwa/22IgF8uJFvvB0wWHdmmV1fvFe1mbB8QIo8GukpW2T+zA
bezGnwnBDvmOqUlvOVpyOyoI5YsIKki0cVsNKHydWSnCfVyffQXIgyyfcpvCLJzCfxCIgHk3
szK8NZy8BKtd6PAgRUzE/4WFyZmsxOqiIJZsUp38JxNUyoxByUm8IKnMuUx2U1G8xmlcT40A
VqriWv5LuoBMt4GsxXwcm2E8xmIczNWpj0WrVGllTYBGTcr8xs3szIEJwRFMoPRap/ZauCiL
utA5tw6oVw2qrt1MzBeryEPbxeDcQF47CZL2yJt5oUCSVfIUCUdMyZ6MymR7yfTMyeliyqJc
z/icw/Y8yv4sz/j7z4ZBQfabLzCzszorxadVSSvsKo+EJBqszeRMn0drztObwNZbid78wRk9
CAmtLw7txAv9zCeN0keplpJymiNLzSVrzbaLzRS9zbQ5zNdpvdOZ0yz40W/yzbBZscL8nltM
xf+MTMvIKpahGIrjuio6RFtaFQgD/clPM7/GNM+jPNVUXdUBvUY6XNV8sslevdWXrMqrrCeb
PEKuvLBsPGs50rk/uzHzpGLoLJfe0NM+vZU7jdcEnNM3bcAgfNOIrMX76xJMBRPqpNYprdiL
XZIrjRrfC3l0THB2THN4HAh6XI22ecCbTdRC3dGlq40Tu9F5qdezOdqeC9f9Cwi+aaECezfd
U1v4JLyEINVkbdv9/Mm5fdv5rNv1PNW97dsBDdycPNwFjdVlbdbBrQjLu7ptfSr8m9oDRmAT
bTjRLYmf3dch7Nl8LdR+Pc6BHSD8uk7PvdYXJsWMjd7pfY6OvUKoEL7/dzy+eZzBCqrRpM3R
eR3Y9q3f3n2Xff3XG323dJ2sSN3OIum+AbYjzaGHhVDbyn3cDg7hDU7cwy3hxr3bFv7gE05M
GI7DBs3hpHXMbK22pgXduPzOleS4tJUIU9nfZuzfv6zdoV20ghzjknPeaOsb6cXG6s3jPX6K
7N1TsyTZFEfZQ2fZgIDZUonfgo2bNG7RTb7kTs7Ll3eNoM0I1O1Os63ajlzgBh7Dr30HPAHP
kFDhg3XhGp7P+pzhEc7K/azmEI7mH+7hcH7m+7zE+xvisGzeiW1VMSHgXyUyuMzi3z3lpk3G
+93d+m3MVX7a6PTEIr3nPi7pk36McBRfpfDe/5Ud35c935nd4oV+3VEO0lKO6AasyIw+5ecM
RAvuvFzu2jmgn87LI5Fk1IZQ5ttF55SL63Ee57cOtrzO4TRr1QQt5/t8LDcOxTc04gmNK4iQ
4giWQ4I+l99d0aROxn3Mi+EN0tndyo/O7CBC6eEu7oXo2OUpwS89uDFtwTO9x6Je7e5+6u5e
36iO6oXu7H/O6lvevl3+wvcO224bz22e5vzs6wDt6x0+8Ph88IAwxMRe7AiPt8iO4wwtrpD+
0IeA5Q89138OoQta76O+5NeeyIbexUxe8oju6MrO5xM/7i3v8ojIWAgj5BPMmBUstRcs35hK
0wCeiaT+mp9e6pVZk/+uecgybOIYT+CvDsNKDwgKRt35HkGEpesOn+uCdedyPvUQ310L/wcN
vwfYZb86nucqnwcLXDj9a6y2fMu1XuPAHMb/fejabsiGjvKSicBiv8bM+/J7z/ceWO6ide5d
NKaOkOR1Pe89L+9DL+NA//MKuqC4Et2o7epf/rhML8NiDklflfEML/APX9zBfvVcv+Zb3/mV
qw4WdEb+fAjMjex5ZPZQpepEpva4tfMdv4s8D/QiP/e9WM4qK943vsCv3/fDT/y314yQnQmZ
buSbjuSdruSMj/jQ//g+n/guTt+xz/Y8O/l7cIVHY/ShG9VLM9asQ+GhX/rnT/XAnvXhT8r/
X7/Ep3/1ek728w/uTA3R8Tv7GcMILH77ICCIYlKOpHmiiaqWbLvGwuumY93mM7/z/2wgBI6E
A2LMiFwym84nNCqdUqvWKzar3XK73i84LB6Ty+YzOq1es9vuNzwun9Pr9js+r9/z+/4/YKDg
IGEhXwMiFGKDH4QjRNeE5ERXhGVEF4UmRZbPCsyJZ48o6Q2QKI1pKihOKeup6uirTJaB7a3a
rQHTRe8FkO+vQPBPsPAM7hvCcssyQozzkvOzSnQ1M5L1NfWIdre3CDiPuIC4OTb0NPcP+fb3
upUSkzwSfdAQlG6Xrm1L8n8/Ffx2aUE1w6COWC9euZoVKtbDWa5s/0BEKGuLPSAZ6+Ez5PEj
yJAiR5IsafIkypQqV7Js6fIlzJgyZ9KsafMmzpwsFylK1OcRJC6TKHG5hInLJk6dTC2U6GMh
RaYVn3pCNbFVw4hOpaqCqpULv1wBkRDjYUzE2RlpkSUboa8MuHbTTsylWzccOrt57+KF17fZ
Xr591wkmdy5wXsDt3LHTJpjKxh+R7x2RbM9IZR5t9711i+vzZgFhuViM+vX0p61aHWL94fVT
QtWxWb2OjbEjEcwndFPW6fs38ODChxMvbvw48uTKlzNv7vw59OjSpy/h+cQ6H6CRJlW6lGlT
wabiY4hvGrU8a/RVp25VT169Q/gM5XvpfP/Gfgtj+o+hLdvfl1r+sTVQaGKoc+A4Bxam4GOD
KcgYhO8w6Fc5E8JjWGIOqgPEhjNYSGFcGU4xWRGYmZjRiSkmkSKJohW4BX4uEjiWZzSGx9pB
8M2G3o7l9Wjej1YpJKR7OeIoRYstsEhiktQ5+SSUUUo5JZVVWnkllllquSWXXXr5ZR3YNSGm
HtoJxV1R3iEF3o1QGVRkRKvUFqRsFL1n3ps8GjkenRDVQlAaMY6w31r/8WdogAACMSOgcE3I
IYOKVdihh5FG+E46G8plqV6ZVvogpCJqSCmmkl6R5JK8lZhqZios+YOgnPnDaKMi2LhFaXTe
iSd7bg4J53l5xuf/J7C2adGkqyxa1iqYzTr7LLTRSjsttdVaey222Wq7LbdWkFmdT9k9sp0k
3VnynSakeWURkMa269qcrRm7Iy17HomVn/jm6lGshAo4jKIn/DvowAPeSganRJDa6aSibiMq
hhQ2TM1iE3/qaYIVM/xpwn+ZGg9uK7Ka7Mg8mLjoi2gQqMa+9MKbg7ApNOSjLEcSieO7Rt7G
7BInaxRyt0ELPTTRRRt9NNJJK7000007/bQIZm4xlLlHbZFUHy1DjfLBYGrc3NfUxSpWrVub
fTbaaau9Ntttu/023HHLPffcUmtBdZrnrpkuH1q/nfKXYS8nuHSAk0034okrvjjjjTv+/zjk
kUs+OeVm250F3lsYha5Se/j9d9nNEo7c6NF1zYbhlau+Ouutu/467LHLPjvttdN9ORaZa7H5
3p3r8bntz5UenDXDQ5168MkrvzzzzTv/PPTRSz899T/gfoXuWfB+NZue51t9csb/1jH45Zt/
Pvrpq78+++27/z78XVxvRfZYbK8F1n1/H/9N4vsGKv8CKMABErCABjwgAhOowAUqZ35VqN8V
7peF/HnvXgxMif/+16ALcrCDHvwgCEMowhGSsITPcyAVIGgFCWKBgiZ8IQxjKMMZ0rCGNrwh
DnOoQ5ugcAoqrAILr+DCHRKxiEY8IhKTqMQlMrGJTmxeD6XwQ/8qBNEKQ3wiFrOoxS1ysYte
/CIYwyjGkkQxClOcQhWrcMUxsrGNbnwjHOMoxznSsY4ILCMUziiFNFJhjXb8IyADKchBErKQ
hjwkIq+ExyfoMQp8nIIfEynJSVKykpa8JCYzqclNImGRTmgkFB4phUhyspSmPCUqU6nKVbKy
le3zZBNA+QRRRoGUrrwlLnOpy13yspe+/OWXYMkEWTqBllCwJTCTqcxlMrOZznwmNKN5BmEu
gZhNMOYTkHkF4K2Bm9L8JjjDKc5xkrOc5kzOItKpTkaoYJ3q/Mm4zlSuvFkNf90DA7v2RwUL
6uuc/vwnQAMq0IEStKBwcOc6W4DQb93/gZpIsCYTsOkEbVohn/yMgj77adCNcrSjHv0oSEPa
zIWmU6EkhacjyEUUzamJe3wLg0W74DdvirSmNr0pTnOq05028VsMbUQ8p4YmlurNpb77AkJy
ts2M8rSpTn0qVKMq1akisKTtDJcgHEoEiC5Bok2gaBWSGq+KMpWqZj0rWtOq1rWydW4M/SlK
gyLUeRK1nhO8J1LzpVSyXpQkp2srYAMr2MEStrCGDcNP4SqulMpzpbtrqT1fuhSYEcsE+9qr
nPTUoyVgdhWpAcPYDiva0ZK2tKY97VMTmwirApWxc3Ws9iB7V8kulVfpsez+ipVZmm0WFryN
k2a1MBrUEre4/8Y9LnKTy0y4njSuKq0a59oUXOB+T0fB4lNva/bb1GzXCgNRLnjDK97xkre8
dmRuc/egVSBwFQleZQJYOcsV9shrNqiZFxJKs5720IamMRiueQMs4AETuMAGJiF6sarYOaz3
B+0lwnuXEF8iZGVewsKvnZhg0fl05SpV+O6BQyziEZO4xCZenmJ9ilU8NJgHDwZChJEwYd/e
qcb1itMTZlpd+uI4w1QA8ImDLOQhE7nIRm7agmeQZDi0eAYv/kGMiTDjl9m4xze+snz76tmL
YJhIPwbyf2n11yOTucxmPjOa0zyTJZuUnWUK6t2G+tiiRvao++TxarBb3ybo2GZ4xv/ylqUQ
2hOIecxqPjSiE63oRTM6DWxu82LlGme6ztmuLcTrnYfFXz0DmsJlDXSVrQzqPecDzLMSc6NT
repVs7rVroZ0T9ychybH4Mk8iDIQpsxlH3N3u9zsM5W7/GdBD/rVxj42spOtbCI/+qqyZjGc
MSfn2NJ5tnaegpdFfeVffzqmwtb0FUC87HGTu9zmPrdxm30Cda+B1i2w9Qxw/QNd6+zboR51
lvm8Y3BrG99TMDW6Ay7wgRO84CFd8FtX3NBo527a9pPtpWmbafuSWtQexjCNa2aafvs3zMU2
OMhDLvKRkxyXCCcTu9vNcOw5PIIQFyKmJ67RTo+6NmO98b7/M17xbAv34yX/OdCDLvShyzHJ
JH02tF07adg+vNoRvza26VPxnev2uhy2bp6VyvOeG5roXv862MMu9hsafaGtlbS0KU1tS8Nc
4mEdzw70+ytOB8nqe6361mEUurHzve9+/zvgBcjmhP7B3SqAdwzkzQN6v0xmN5D7bVtGd/no
9eb+7njgM6/5zXO+84I0/AkQ3wLFz4Dxnj896lOv+tUTF/QjEL0KSB8D07O+9ra/Pe5zf1PX
iwD2J5B9C2iv++ETv/jGP74yeS8A348A+CoQPvKjL/3pU7/6hVQ+80Xg/BNA3/re/z74wy9+
JGK/5St8uRVjPv71s7/97n//C8uv//amsz39boc//vOv//3z/3zyZ7rLOV3bQV3/FaABHiAC
JuDj/B909Y4CPiAERqAETiDTMCA9RRcXSIAGSgAFdqAHfiAIhmBOWGBdYeAWbCAHiqAKriAL
tqALOldjNaBRdQEKvqAN3iAO5qAOagEJVpoJakEN7qAQDiERFiEO9uDa/WAWBKERNqETPiEU
FiAS0p8SYgETRiEWZqEWbuHxTWEA1p8aqV8VXOG1IE+VdF0OoaETmCERqOEcuSEXxqEczqG0
eOH5CaD9ESAVkKEZYF6+BQIbkkFnhUQgwoEfugGyeEQiog4cIkEhDogkPSIdTiIlVuIYHJ3C
OVsmLpzSpf8dAN4hGPaRGO7hBnbTp0nBIN6BJHrBdOFT5WmZI5ohLHraLGYWK5LBIhZCLpLN
3hFbIxKa4QAQHpCPo3yIFkjMTfCMyqyiJTajMz5jrKVXm7GWeq0c/ZgfEKFfGN7fGJYiy5wi
RlkeHjCjunQXK77in3QdOOqcvh1iQuAi0JTELvJiOvZiGwbjowxjPp7BhzgMFPgjTcTjMv4i
NBakQR6kCGAi0iWkO53dc12gA2agN6aBO7IjH6wMG7xGRfqWptWiweTXOgZbjoUkLcKjMpLE
PNIjFvicQODjPtqBMfJjP2JBBp1ESnIGQSKkTu5kQSZcyr2BHWYjHm6jHk4BH5b/wUYSIq2Y
okfWVkeGGxtuZFLylUmuxE0GCjmemj1+ZGNcSE2GQYgg4xd8ZTYApExcJVhkJU+uJVtyITWO
wE8ymTU+EDZSkTaKIjeSogYyZXCg2jc2JV912CEGolSSZF4BphOgpR8o5n3kpMdt5amFCsbA
ZIaQpRNYpmT+BmNyXVt2pmf2ZCa+ZeHNZQrVJRrdJSSNolFOJBpMJSDYiD6ABmxCZm0xpWAa
Zo3QJs2FI2LKFG42wWbuQXCSAUveoxsOGmbKpF8kpzSYpRUwJ0gMJ1Q65r/p5mdeJ3aKn2ot
pEPGIETOoETupW9emC1q14blXHnWR2gABEGsp1qCZF91/9a6xAt20V2pQSblNR7OnKJ9/oi9
mGMU+EyLqIqS4IPP/IxACoA8HChlGGiCKmgiEmiDLuJ7AqMaIo/xLMw3eMykhAoyRkzGOKfF
TKbCYIOGjoqG1sWJgigWSOhuOOhksArP8AaDrorIGCdWUmd27iiP3t52FkJQ2uVQ4mVRSsFR
vl131UAr7hZm9acMLKl34Qd7wkpxapjU6Yp9+Vq7OCkTFFt+7srd8WcqXqm+AOgTqEiMqkiB
HoGaTmhkKIGyiIxupOmJLEuNrkqcco11GqduftzovCReWMyJTgyLXgqKiiWgdmhzPgP5zOTD
EOpyiohl5umLsmmb4imlisCc1v8pydyong6kjvaoqI7q5v0okJKmD5nmHqHmKKmmkbKmU04e
mZZpkw7il9bjrUwplVYpLeId1tGqnikpbrEA5snirPYafYqpODJpztzqiJQMyVyqpkJrtHJq
pb7KmmJrtd7ptGZqt2rrrtZjLOrmBilGx/TjYQgjh26MhKhru6aoiEIqvFqIuQJqoT6rt8po
tuarvlaqp3JNjlYoqQ4swYLdj77TaHZiw83fF1bhFRwpKlLFbfbXr2Bcv82cnOCqZvSDGQIc
b/oqh4EpvlAXsQ7rh8FhruyXxcJn423cvYFMq9wpgW4Eg77pZQBNzdIsbsjszSrjzOIsiiCL
wNpKx6r/4aCyq6JKyGCsa8MgbdI6bVhmCmGEJTGSSrl+DaU8xmFUwc/OaNeeJISCLabi6ZqW
LY7y4p4WrNqu7ddtJ0J152vJYJ3RIKwi6bfVSUnu2q6s7BOI22Oyod/WZsveF2xYGWUd7smm
LeRdHa+1o0herL/ha7aarb9eK+XaaKdabuZiruZWrudyLuiG7b+Gq7gCLBMgCMc8aqkkbdRe
yr02rV5Equw+jLvCrtOubogaautCBtAyi4syyYN+6+aGbiIObRQELtsmr/J6XYKZXaQ9ZAlG
5AnWbdTF57A9Lt9e3m/KSNdh5LiGKuQC2sVxGZAUK8rm1rB5k7c5wUbarO/G/2PQ+mzIuO/w
Ei/8zu/9vq/86u+XpS2fnu3pDuq9OgY6eMPrHrCkJgbhxKShPm0DP/DF4G6A5m/9dqvJBK/o
zsPOYjDR+m9aGu/yhrAIt1rzOhsMxu13zm14pqDgsizfVt3UTV3HIe+u+hwN86ZFYtllPR4P
9+YjQt69qS/6KuuxUPC1gmsG16+M8u/lJvHnhm2qbKu0QrEv6t2YreKKJvDUcgMBbzG93u7u
Iu0Cx+vr3i4Ek+hXLnEFO/Eat3FvhO7GerBWMgqfgu8I3zEeJ1qCxUBcThOqSpGqOhKr1pKr
RgHEQoHW5B2yru/LRm6XrqL3/m8L11vjOnKPxd1v/v/wEAdxSC7usu4mFNDvEWeqKGMqKRsx
HLOxGo/yFHur6ZZuHEuB1mrxxnRx7NorLYOxApMxL4OIw2BtvD5tGvdrKgOv2FqwBscsB8tI
lPqlJOcxNEczsqVYaG4iHQTpaQ5paublaornJOcwvjlr9iryGnosJBYtr+ptI48vJdNA+C6B
Jt9L3gmxBcFwDCMJKn8rEpeyPp/y/q5x/EYxK1vrQB+zhX6wPWbl1n4M6xYwYnyxBDMtAovl
GTfwYgAzRZsKWa5yMSdok+zigi4zMyfuUuqpHUszSqc0iVHzQvaxGWDzqmpzq3Lzq3ozVf5h
JbNz+JJz3xanrsbxSVuy9uL/rTq/87iy7ybbGyIzFZSC8pnmMxsvy+hG9QX/8xMjcyq/cWJO
MSRacUJTZxjjri2v6xj7sleadUWbMYlGNFunNWNstEjzsxtndVVjNQCvgTmrtF7v9ZGxNB9b
M4P9sRkFcigN8jEVMhQc8khaL7/JMHq28z2Xsw0HBODccPWCs06/cCYXIhAr9WIvtp/1JkDj
r0F3NBNzhFWb9lyvdm4ILQjnJlBPQViTtUNzMWIEMFrr8lnjNm8zdFoPTzTAdWnbNV1/tEjb
aPG+tmQrN183t3Mnl1/D2pspLMsxLCg6rBUoNlIzNic3diM7tmjnJm3+dEsyd2fndEaJlWhz
dlI3/y494zBkcy1UL6Jc0/d83/dwU/VTGzRzcy/pRsFsC3Nti3Uv+7YDS3SBL+paq3Vbd+WB
h3JcQ/VVNzFq63dk4nU6P7eGb7h4nVxLA7YcwLQgyzQh07QhU+9lu3f6zh32VrJQ93SM6GqB
WLbdDu7IurhmrzdhDjHjGnV8cxw6ZoHO9m7PDDmFa/UTD7nX5neESnh5yzE8V3bqTPRZb/Hq
BviCp6vqQu0uZzRbX7RZAvfR7neRp/aRs/a+DneGN3N/c7ibv7lgld2zufRLC3YeEfYsGXY2
IfYTaPd2U2zI3u1qtDiQh/eT10pscqx7tvmLq2z23vNgqiFVeHZkE/qNX/86fv1mz/auMpP2
Bu9vp5/2VW/6kof65JJt5wrvf+PkV2/lguS2BI+1A/PFqz9wgNM6li/4g9O2gZclZn7taIPt
zZ45gi4zo9cwlMO5si/7Ycn52z6vd0YveE6vTceq1l2vOFNeoOM4Sc8x8q65ldbzr1Y6zUW6
pCfpuDNrs2b7sVqdfAu0FEsoMcd7/E41FLsytZpyjc77Y4bB2CAnRN8y6l75gNPuwB8qxAS8
wM8yAzOtwy/87D7BmO+3P9v7QBO7nZY2uPdvsjO7x388Wy2Z80I7Cku7ClM7C0+WrHo3stYc
u7N8z3k7mAV1UYPpze3wfhq6zy0pyI67tveJPJv/KXDWKZ0StAVztb4T+ZGjqUAicUHLKdJ3
cMdH+V+FlsJDfMQ3tFkfPMJ3JdcbfLriMqxLLcMDOHM6vVzHO8bb6TMvI8i/Pdyf1qMhLNwu
ndxaG91Wu8pH3neX78ROF0/7O42PQSKLI87XvC/qJpfK58une69lmTsK6INyawZTfrUieVZL
vtha/hEXe5JsfBOEFsBP/Ih+jKzXK8eUK+0uasI3/INrzNfveol6OYTTqcWP8u23Nn8fe9z3
vu/znYgXNokftoknNopPC+/3ZfJPiXTWBOiHfuo8f9tA50d8/vL/PvZnP9AFf54P/54Xf58f
v7Rc/2+QP5Q0P02YP/KY/z/SUL8iBi/7a7/8z7/AcX8x6flE8bkT+LmzgIAhCmRpnmiqrmzr
vnAsr+Ns33iu77w5/L2gcHirEV0iw8t4bDqf0KgLQZVanb8BUnnter/gsHhMLpvP6LR6zW67
3/C4fE6v2+/4vH7P7/v/gIGCg4SFhod7EIoQThOOE04RkhFOFJYUThKaEoiDSZ2goXZZoqWm
p2FUCCSqqCykArCus7S1tre4ubq7vL2+v8DBwsPExcbHyMnKyyuLjE2PkE2TlE2XmE2bnMzc
3d4lst/i4zyq5qu6Wepa5O3u7/Dx8vP09fb3+Pn6+/z9/v9NnDV6FGlSpUuZNgFcyDBMuIYQ
a/+dq7JrHZCIGDNq3Mixo8ePIEOKHEmypMmTTwRCIzjNoDWE2RSinAnwIc2bas75Woezp8+f
QIMKHUq0qNGjSJMqPaPySLSCkg5aSqhpqdWrWLNq3cq1q9evYMOKHUu2rNmzKJoSedoy6sup
MauinUu3rt27ePPq3cu3r9+/gAMLLqV2CNsj1KRiO6LNSYXHFQZLnky5suXLmDNr3sy5s+fP
oAsLOUwk8dvFRBo3gRwZtOvXsGPLnk27tu3buHPr3s1CdBDSQ0wfuUZ12xHWvJMrX868ufPn
0KNLn069ehrfPYALEU6EeFzjRJBbH0++vPnz6NOrX8++vXt62HloD8L/fYh3xjKPQ37Pv7//
/wAGKOCABBZo4HLx7TBfD/UJcV9q+YW334EUVmjhhRhmqOGGHHboITEJ6rAgDw0G8eAQqun3
2IcstujiizDGKOOMNNbIX4g5jLhDiT2cKESKEq5IRAJEFhmDkTIUSSRlSXzShpM2RinllFRW
aeWVWGaJQwNcdulllyd8KSaXdeCIg4468MiDj0EAOYR4Qyi55AtywiAnkisk4MKddeaJZx7s
8NIkE2pAqeWhiCaq6KKMNuoob2OKGWakXpa5yECOQFXNcDDhJ5eKrcXZ555K2smnnirMycKp
f5pwKqCB7jIoF2wY+uituOaq66689urrTZRW/2pCsGDSYeYNaOag5g5s9uCmEHAe0eqqqrZQ
KgnTYlttqqyiekK3d9gkK6Fp2Prrueimq+667LbrLi7FvhCvHMfakCwOy+rQLA/PBhHtkNsK
kS233tIZsKt/XkuHuLqYi4bD70Ys8cQUV2zxxRjLOy8Lws5R7wz33pBvDvvu0G8P/4pasMpH
Huznyt8GPLAbDOcCsRk3Z6zzzjz37PPPQGu4McdkWqoIptIg5hKncHkK3psTNjHzDlPHDDO1
V2ubddVq1IxLzmSAHfTYZJdt9tlop63Z0CuwDcfHMoRsw8g4lKzDyTykLLDLCCtsLd9as/p3
1gIMzLUM6qwAC08pWP9kEQqJxxL5CeJ6vYSTg25Brgpik5A5C7NubsLnnatt+umop6766qyb
5HYKr7sBdwxyz0D3DXbngPcOegfB9Z1YC2618C8Xn8LhLzgeKzhAKA+58jYl7vjzy5NgueZK
hE6D9i2IHbro30Osfemtl2/++einr/76ucQ+aQN4zA5D7TLcbkPuOOyuQ+89/D7q8d2CWQAJ
pzXjoQB5LYBe9RR4ER8wkHoKpFwDHVi9GYSvSSm4YPdEV4IL0mp0GkSBBz/IvhKa8IQoTKEK
VygG9w2raHaQ3wvoFwP7zQB/N9BfDvjHAwRObYBYSxLfDAc4GExOcgs84hElWEEmNnCJSKT/
Hg8+JwAMnsCKnuNgFkkoQkI5zFxgZAIVWUjGMprxjGhMI/pcWAI2rkGGLqAhDGwoAxzaQIc4
4CHVitg3UxHQakIkHBH/mLwJWs+QUKzZ9ZYYPUQaEgdY3GIXuZizStoqkhskYRi1qMZOevKT
oAylKBvlRgGUUg1wbIEcX0DHGNhxBni8gR514EM+FtCPgTQgIHVQOUdWUJGPlGIMwnG9y3GR
c5uz5DE7mExOglCTzVzmKKdJzWpa85rYBFApT3mdS60kU23ZVHc6BaFPBSlU0rLlLUlFyBIg
sHBDdNk7G8fA5fWyiVFMYDAVN8Fiag4GI5RmFbX4RQ6G74rRzKZC/xfK0IY69KGz2SYMY+hN
p7BEaW5hGmpQFCGoCUlq6oRnO0XaspGu84DyDKkK6mnPYAITn8yDqTAPKVOAOnOLIUSmQAt6
TA8itKc3hahQh0rUohr1qEWRKPzykEoWrNIFrYTBK2UQSxvMMge1HGlWc0mwrvKynkykJz4X
uU9+ssOf/zRmTjNI0IT+9KDPZKtAkUrXutr1rnjNaz2UqoemruCpLYjqC6Yag6rO4Ko42KrB
TPrOmQ1yB2i9p1ldgFaaWrYHpSPfT0Hn1rhu1rOf1atoR0va0pr2tLPgK1MrupaLlmZp42xa
OZ8Grailk7HqVCwuvYpSk660rDOl4GT1Wf9TKVaWs3NlZnJ1ily5hha0kpwkaqdL3epa97rY
HYNq48daw7g2OLC1Dzk5ak6PohNguNVqSBsbz62pVKzDdGlZyVrcsB53e8sdaH6li1/nQle5
zwVwdgdM4AIb+MDZ3S53j/bNpL02o7Hd6I86WtuP3raku10sV3nrzvf+tr6S/TBlgfvhYoKN
fJoVsE6h6UVyYXKT+0WwjGdM4xrbOI0KvoNfVQBYFgjWBYSFgWFlgNgb6HZwGO5wEF9WML/l
QIkPCTF8mRfc+F5vjPxV6zN3yslLuthQWNbvlmN84zKb+cxoTvPYckxRBlsUnBgVp3hlS17a
+su2PQRi38DFYXb//i9wfALgq4LwQOFW2YmJJHGJaxrm/2bye2+F65hnJVdJK9fSas60pjfN
6U6ni81Ge8abHQxeCM9Zwm2i8J0tnOcADo94vQ3kn0U66N7OGrLOC+uhKcg4Q9sAipNsK5kx
rd+1XrrRxcYgT5UdVE87+9nQjra0NwRqY3V3NN/dTngdNN4Jl7fC592jq/cM612WNFvjJphv
Z9BrXbt70b9UtIiNmckiYPLYkF5xckkHPiumeNoAD7jAB05wd+04BT1ewY9bEOQXDDkGRf7L
fQtO8Ypb/OIYF+3BUZBwFSycBQ13wcNhEHG/TDzjKE+5ylfO8jRu/AQdT8HHVxDyFoz8/wUl
58vJW87znvv850An28tNEHMUzFwFNWfBzV2Qc7ssTt5Bj7rUp071qvtq6CUo+gmOnoKkr2Dp
LWh6XXJt9bKb/exoT7uUsE4CrZuA6yjwugrAzgKx02V6as+73vfO9777h+0CcHsJ4H4CuaeA
7iuw+92B7ffGO/7xkI98bAAveBIQ3gSGRwHiVaB4yXv+86APvegVSvls02fbJup2qr+96nCP
/vWwj73sZ1/G0sP5wXLmNp1pz/ve+/73wL+r7UmtbVPrHtXBT77yl8/85pNx+JpSjPOnT/3q
W//6ZoN+OKWP/e57//vgDz+utB9n7ov//OhPv/rXryHy49787P+Pv/znT//6R8f9pc596nef
l2bjwf/2F4ACOIAEeHH4V3z61yOqlwMX0IAO2IB4ADx/ME82lV/tBgf/tgYPOAMPCIFzwD23
QHZgsIEncWtR0IEOyA2tcAMrWIAu+IIwWCHEMlHvQ4PW5matdXv5B388gIIeaAcS6AcUiD0j
9jhycG92QIIv4IM/6AY+ZQsi+AVKCAg6QQbo4AS1dgVMaActaAJd2ANXqAJfCANVGINmeIZo
yB4zuFQ1+CU6dm2/YXoMgnoKyH8M6INP0IR742R7MITItVzQ84EZiAZTyAJMqIe1YmyuEIVD
gIgmUIh+UIapEIa3FYRWsIV1MIYCoIn/OUARK8CJLSCJaTiKpFiKzrGGKEAsbSZqOUh8p2d8
+4d8PZiCTUCLWOhhbuCHK1ZITwR1ODOIZgCJKqCEtvgkXgaAiMB4s3gBhliMfyCKXgCKreYt
urgDwvgG5oAC0jgD27iNn+iJphiO4jiOyjE0G8NNZXCAr5iAa7KAy8iMR3CNvoOLbVCNb2VE
vmiMyIgH8uiEnRWCO9eMjlgC/agH3ggFB5lY9FiLzhgH2XgCCfkC3QiO5FiRFnmRz9ExJMA2
6DgG6jiHsFiHsmiNDdkDBSlugGCPjjZcewCMdXCSa8BT6RCQK9CPMHkHEdkEOTkDKikEN4kG
oriTLDCRlIiR/0Z5lEgpG+Zog6bElLIDh9khhyRCh+1oh+/IkAM5j+v2Bj1ZbFbWB0goCD/5
MP8IhTQ5jCVJkGnJB0I5BG2ZYcG4lm0QlBSpA0SZlHiZl3qZGRzJlB0pBh85lSFZlSOpAzfZ
gWh5iFmpkASEJCZ4LSa4Z36GKl2pWWeJa2eljFkWB5jYAmPJizSVj/a2j13AOEa4aLxYX0uo
mHpIgojpmdfomp9pA2OoiZw4EUXJCrj5kFqZhzB5kocIm3LJjZIIitBYArvJm8hJEce5nMqp
jcz5nNDZgm+5l9Z5ndgJD25zjk75lDjoXTqIgDzok8MpAMF5Aqy5mEYGOEYSaLZGa/+O5Z6C
Vio9GZa8xohSQAp4R4Ry0JkokJ7w+FVasJ9N4JJWwBP4GYivcJkkAKDomYL++YgRap4QiodO
UJt1uYl1mZwbyqG5yZPpRpIWWpNymZ6JiYJgWJwZmpwp4KFF2Qq7KYbNqZurEKPTOREa+qHZ
uaM82qPj8Dodo5H0ApXyIZU7QpXM4o4iGqAnOqINaqIsw2RZCGhTSqV8CJ/yqQOdA1ZfwKVp
xZlO+qCsyQNeSgT2iQYslUQKWmLkOaYS6qZiGqEOeqEdmpsYyqEQ6aHTWKU3AKcpII8AyqRP
ep52WQXUWac26oV6mqd42qIzmqMseqOR6qOUWqmWigyxUyn/Qjqk34lt4bmO4xkENkmMazmb
GzafTXYwo8KHfoNu1RKZMrClheYF7eZPBopTxHaHWTmnAtpPolmBQPWE+AaCOIB3jDQ5mqmZ
uiqocfqDr6mWtliIKDqo6tmJdeqolPic0umc6FVufUqqiwmoDSmt4MqstGmonninjDqUGaqo
Xbit3PqN7/qFyvmol3qv+JqvqOBCbrhgrAiergiS7JikVrmkAimosVmetMSe09KwreKwArQt
ELuV/vWVZJBoxXWryZZvJqmwprqgj8Sgl6ZvHIurJXsDp5lPMdVS8yWyb2qu0NqazkiuTfis
1EqnL7qiFGmb7ZqjT9CVMRunJLqr/yU5s0ZbraEYnfHqnNlqnD1Lozmroz4rr1G7rlarr1ib
tVqLCPwqKW/YqXH4qQIbqh1LtIiYsEiLVQx7NRALlx22Mq5KsZsJmhcrXxlLmpF2sobpsQqL
OHY7BPYZUHlLrCirrEikpmPlskE7tMw6hZDouOPat+datdN5tTJQnezUiJFrtjBLoXx7tpIr
o+iwgvSqszp6l5Urr+xqpzt7rVv7urAbu3ngPpTytf/qqQErmAOrL0q6t5yrmCcKBT+kqjKT
W3r2toKGWQCouL/2t19KB78ZunT7blOEtw5RTGlqVqopA6MKujXLq57buNIbA+qauu4qtdj6
swv5p+ArtP9Nqp6BugOHSqOWu7TmK7rpq7r6W7/lK7v++78AjAaZGi+b+jZEqiBGmiZIyrsF
67udG7/sm7aMuWTmhryLxWcWXME5kGLMy27OW29J+LmdW6wfrLxkVgaGe7gRxKbxWKKby6QQ
fLPuewT9666SepCYi2Rt6qczHMHT+p/tO7ncWrqse7pPO7X1m8Q2fL9IbL8B/MRQHMVNQLs0
+JeAecAiksDKssAk07vLyrjA68PCu7bJq8FSOqVxa8IevL1NIGXNFcJI+7Es6WtqXAcpnL0s
TATdK77fC6Uy/LI4y8T0e8OoC1Jy+74TurhgbLPUGsbWeoUw2rpFvL/4K8hLXMn//DuvRyzF
nNzJnqwCA8yGLyTKcRCYRzqYBFuYXxy8HDi+pxprsNxHGua2J7XBy/urRODG/VW9wnqVLiDH
80a9UiC4k0a4zStvKQxBWDnCj1uMh/nC8uu6lzzNjPqoOUzBZTvCjLuaYQrMSRuGOErNg5y/
lOzESmzOTQy14fzJ7NzO7ryR3dmUpAzP8/wGpqzAqMzAqowD4irBimzI2JzBAh3QBE1SvBxj
Hey38cZoGkvM2czN2nzMU9YFDm2yxrzGxZXMTrTMBwvEfRzRf/zPLCjN6IzD0njNuuTLrezP
TurNq3u+kkzOlizO6XzO4yzOjfrOOr3TTxzKsBPPb4TF/zmixfjCxXXjxfxcquPr0gU90LVs
0JlLy1C9A5aJy0OgyxVL1SO0wxCdyyVsBRW9sRet0Bk9cRrNvS7svTDct83szzJ903Ad1+VM
073J1TYwmzbL1JiszkrstOjLs1J70qaLrfDK04Z92PlKxfVsxWBwz1ucz13cwKvMyjGg1302
PLHs1Cm92Vc6mvtVWRq7sru2Zfwowl4dslbNXHbsT2cdmhy9zT0cvl0d20KcxHfatJO81+il
x0ut1OZKsyA90rgtycM91339tIKd23SN2Mzd3JbataTM2I0t1GdC1CJj1LiD1N8arpDLuYMa
peqWqmy7XgnTtm+7vgEGsjGAbP+FS0yKFtpSaNpXDWVs/GgnPAbJXKsvVd8wIJtrrdbNCsgi
LdvRDM6ma+BEXNx7vclJtsP//cC+zccI293BPdfSScQvvZzHHdjIPdg27dwgHuLWCd2RsopI
E32n4eCEGrOJ3MjePEBwG6KafcazdrwHjY+qyd7HvKa7OAcxTNuYyeMHfd9ioNFlisfZnNfQ
3KwtveSFmqjVDOWQKuWEjL6vnORN7sfh68gsHqa1fb5VTpR0qdzqLOWATdj2KuJqvualyEa1
a+INhuIapeKJzOU+/OI2TlJZKsvn9pjAA7ReWYTrfaZrrMIkRuhq8OMCLgT6mbImbL1dWlkr
vLKTjuX/H+3Rv73iBL7oTz6jMXrbuPnNad7gmiun7avlL/vDj/zWZe6NZu7hTDupcg3YVM7m
tn7rZqhUQO2dtxu2uXvKuxvZ+9zfQdzlle3SML5LkTmEsAqfT63VzgTa8P10loPoiV7sm05o
F3GBQQDfB3pfjh6alS6qwI3piyzGQC7cYh6dHxrqEjnqpM7bwqjoWw6cjLzqMz3l5AuNZw7T
r07mrQ7vuD7wBA/ijl3UkH3Ukh0MgP5/3q5iZCqa1i4MCU19tF7wGJ/xa37w153w2b3wwNDw
Dk/kb6ztbPzws1Dx03ebDK7xLv/yUszxc4Pd96PdvyDyDm+m3n5ckD6T/J1+/yxv5TA/9EQv
uzJvOzR/QzbvCzhvCxNvsfug8s534Shd9FZ/9dd59PWT9HW09L3Q9LWA8lIfDGPffC6K9Wif
9lqr9TXE9a7k9bwA9u5Q9r9A98t39mqf93pPqWw/R24vVXC/C3LfDnbfC4V/9+6+94q/+NbZ
96z094MV+Iw/+ZRf+ZYfGI4PVZAPZJJ/+Z7/+aAf+l2R+YG1+QzX+TanaiiDZ6Lf+q7/+rBv
DKTvY6YPcqivdKqfN6wf+7zf+77/+6Ew+wpX+zR3+1+X+7yz+8C//Mzf/M5fytSNLNY98x5f
8yB/R8i/P8r//Nzf/d7//SkR/fYy/Uhf/Up//bCU/f87tP3g3/7u//7wnwLC73HEj3TGP3fq
n0fsH//8DwKCOJKleaKpurKt+8KxPNO1feO5vvO9/wODwiGxaDwik8ols+l8QqPSKbVqvWKz
2i236/2Cw0YIGQKcoCfACDsCpMApQAldAqzgK+I9v+//AwYKDhIWGh4iJiouMjY6PkJGSk5S
VlpeYmZqbnJ2en6ChoqO3pSZ/aSp/bS5/cTJ/dTZ/eTpbSbg0uAmkIrs9gL75lLt/gYa3wwo
L2MxBz9DR0tPU1dbX2Nna29zd3t/g4eLj5OLNZyjp6OnqO+ZnqWttb3FzdXd5fnx8iDDFO8v
6ZdFYLkdBEccDJKwyT+Afxb/wljmzMrEghYvYsyocSPHjh4/ggwpciTJkiZPllOn8tyJlSzB
vEMVb9U8V/Vi3aOVj88wgz39FWP4c+BQlCcWQvSRVElDQUtbSFTWTKrRqlavYs2qdSvXrl6/
gg0rdizZTi7blTj70ktMH6nksaEHxx4dfHh4Fr3x9GjeI3uf/C0Z1MRgI4GRHCbqEEdFKo3L
Qo4seTLlypYvY86seTPnzp5NrEu7VkRotmXgoYHbyscrurN81MK7GEfiKbWZ9r1amMRuIrd9
5w7z+8RjKcU/I0+ufDnz5s6fQ48ufTp1k+lEN2g5ekvbHm9pxrU5F2ddnXf3DOc7+0t6w8Gr
/isR/9/ve6Hr0dePSJXi/ur+/wMYoIADEliggQcimKBkpY3AYIPbadEdD9/5wIpcsPggi122
iNGefPlh4SFw9+nW23zukQgYiFyIKMJxULyooIwz0lijjTfimKOOO/LIo4OkQSjAj1lIuAOF
PVgoHoY9aGgeh7Ttg0xCDfVF5YkoXMnbMFl+2FuXwiR1Yj+1cdllmVoaA5GXCKW5JptnVrFl
T1NSiaWcBzUFJkFW2rmeQG0+5SaUKQJaZaEp6snCfC0KECMJUa0QlaOQNtqfCRKlgGmlMUo6
QI+fghqqqKOSWqqpp6KaKhJDshokFkXqcCQPSbJ2U4Y5wbZTDrnEx6WVe//+mtuvhPFap3pq
Fpunmb3+dNiwxxpLLLP38SktL9GiWS1RAkxbVLCz/YKtnnNm+a206n0p7rKMgqlCuMpmyy28
6wrbFKOObiopCp1qeqm+x/FLHDOdCsyvp6oinLDCCzPcsMMPQxwxR0MKGSTFV8Cag6w70NpD
a+S91kNsOnxrYrDWaksvsCdDS6i5KKcc2Msq4zlztvPKa/O46hJT8lA65/zsmzkT/SfLaKJ7
M89B46xXcCXDzPPRSjddw6QGH1wC1lk/unXBBGu9Ndcuei2x2Wejnbbaa7Pdtttv00Bxq9mZ
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
VXL/Ln48+fLmz6NPr/9+Pfv27nMKHylZqvGqyLEqt039PX9KiSCB1h944QlYoIEHIpigggsy
2KCDD0IYoYQTUlihM/GJNN9IlNknRHJHWBhiZ5lkIqJC+5mYooorstiiiy/CGKOMM9JYo403
toNhSBqKxOFIluEHIo5DbkWiQ0QmQyCSSzLZpJNPQhmllFNSWaWVV7qnY0Q8huSjSECOhBmW
Y7JkpJQokpmmmmuy2aabb8IZp5xz0mmelgpxGZGXIYEpkph1AhqooIMSWqihhyKaqKKLMtro
kHe2k6dCe0bUZ0h/Opqpppty2qmnn4Iaqqijklqqqaeimqqqq7LaqquvwhqrrLPSWqutt+L/
mquuu/Laq6+/AhussMMSW6yxxyKbrLLLMtuss89CG62001JbrbXXYputttty262334Ibrrjj
kluuueeim66667LbrrvvwhuvvPPSW6+99+Kbr7778tuvv/8CHLDAAxNcsMEHI5ywwjaNIAIN
DZOwsMQTU1yxxRdjnLHGVkLcMAsdj7CxyCOTXLLJJ6OcssqOgexxCi2HvLLMM9Ncs80345yz
zijEbELPJ/wsQNA7E1200UcjnbTSSzs7tNAOAw01z1IzXbXVV2OdtdZbc62m00F/TXXXY5Nd
ttlno5222s2FHbHPYpfg9Npz01233XfjnbfeN4ENd9t7Ax644IMT/1644WS7/LTfcCt+uOOP
Qx655JNT7q/HiUftduaVc96555+DHrrowELcQt+Mj5666quz3rrrr3Pc8ccwow677bfjnrvu
u/NOHsyz/9678MMTX7zxxyNvV+KYv3x57clDH73001NfvfUPiy33Ctpf373334MfvviQ/429
5uOjn77667Pf/tHlv8C9+/PTX7/99+NvL/ymy5+///8DMIACHCCx9gc8AiIwgQpcIAMbCKrT
xY95DpwgBStowQticEi0O9/bZJfBD4IwhCIcIQnbEzwVgKyEKlwhC1vowheyTIJT6x8Ma2jD
G+IwhzrcIQ976MMfAjGIQhwiEYtoxCMiMf+JSlwiE5voxCdCMYpSnCIVq2jFK2Ixi1rcIhe7
6MUvgjGMYhwjGctoxjOiMY1qXCMb2+jGN8IxjnKcIx3raMc74jGPetwjH/voxz8CMpCCHCQh
C2nIQyIykYpcJCMb6chHQjKSkpwkJStpyUtiMpOa3CQnO5kbJaELlJ4cJSlLyZeJ7CQjReDG
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
hvYauceLvOkGucn7pFj7DMJXpcGznv3pnv45rns6iwELvMZ7lK45u/wJn33bmZSpuf8IdrTk
Kraqi65yG6cVO6djq6qDSzu3w5r7Gb9YiqexuQVnqDr0C5/2e76FWzfCG6CE9bSvy7wJrMCq
trwLjKB+ta18p2aXeyyNWUzaKaKcu5fteb8p25cUu7gaWqjI+XsU2pq1W8GOecIFC74tnKuc
6b/kS6v5h8ACzMEdLLP4y5gkDJ2tmbpG45cHy72sm8PVq4tDM8KPubqgcLhiqXkLtKgOLMVT
7GwNTMVrqU97lcVaC3YU3LU4mZO+Op+gSq/DxLkrCcLuy6bU2K5dCa9G25RvDMTWmKzlmqo6
w774CnskK8e547A4qZIMK8jae8Qt5nZ1HMc8KZOKLMRGKrH/s0lZB1JYKJDHV2zJl8xoVozJ
Hql69dXJksc1Xiy94ziJWTmTsdu/77iUn4vGlFzJANmQbZqOpSzLqCyQazzGW0rHMnnKxMSA
r4wnewywt1ywddzLvmy+4HjH40uqvTd5i6yQO6KTpIzLhLyssgnJXxlgbDdearzJ3wzOeKbJ
4XyR92VeU/pPovyttji/u0WI15uNt4S6txRDwNyIqeyKMBmQb3vPkHmK+KnKYFzIQbl8fyFI
c1nMvMzOm1iJ8viubWzNoKu4SGfMA21bJ9nPDG2hqfBfk4x8z5p2FknOI03SkDbOJY3SbqhB
NbyFHQTMePbSGxTTKU3TNd1hJ23T/zmdRxjE0i3NQT1dZ0BdOkKt00Vt1CeF00dd1CFsMjMd
k41cMkwtaVItQlSt1FeN1SiV1FnN1Zzj1E8tpF0t1mNN1gK31WWN1iRD1KSAhmnt1m8N1752
1nFN1yjV1nWN13mt1yY9envt1611138t2INN2FU214WN2Imt2IvN2GV52I0N2ZEt2ZNN2dX3
2JWN2Zmt2ZvN2TF32Z0N2qEt2qNN2mbd16WN2qmt2qvN2vb22a0N27Et27NN24/22rWN27mt
27vN2yR2270N3MEt3MNN3KT028WN3Mmt3MvN3Ctz3M2N1Wu4ORkG3dVt3dd9As+N3fSWd58M
OpsX0rXwi/+tMN6r4FGhtd3prd7Drd3rbW6od0/Z9zkDNJuyULwcXd6pcN7o7d797d+y3d7/
DW7Xl3ry7Tn6M7GxIN31l9+ocEkUJOARLuGlHeATvm0EKKVmFDoAKhbcjHb3bXwN7lkfZeEl
buKcXeEnXm152E/zTcCRpOAgbrgyTgqbpOI3juOJneI5Dm0sHpKc08S6sOAAReOjYOM8juRJ
Ttc7ruTL5pb79QvUzQlS3lFUXuX8vQZ7YH8DmgbhTUBq4OUEFObaXFAFhHyPrKgXE0FCcORN
7uZvntVMDue89uRx4wv7fQL7HVp6zt/nzcRigFlsRwZpfjf9gga0iXlkLlmS7AX/ie7RmeLn
V+5Rc07plV7Ucm7pt1bn9AUMfC7pUs7nEC5aVu6Vkdzhj34/vEjokrTqiv7R3Kzoru4gev7p
pJ7pt47rVIzpuY5qbmngna5JGgNBGSPqw04Xbf7EBPLlknSby+7Ezc7sEGXmye7s0f5H027k
xJ5Jns7r3e7tCrzr305qwSkvEdwKkiMFwS7qE1Tl7S4JWw4IiQDrjWTol2XvRwrjidvs8+4v
Q74xU97nJC7uA0/wURvuBU9p4XFeWXsLyB4E6r7uAC/x734I8A7tqY7xTlvo1Z7xG6/v+15Z
/V7klvNRGCbwCI/yKe+oB6/ykEbg+gXsEa8CeF5BJ78x/zTvXxWv86fO6BFTwB/f8fcnoI/O
OECvUcUu8A7f8kvP9GzJ8k3faJTK8HJz5zYP8JNO8p+V56HuCRa/7EXP8Y7s8WCP74l66Bcv
9CK+9Ugf8UoP9W8P98j49HHvaPAjDErP9bXO9rRO8fG+82hP700L42R/8Yse0oTv8Ue/50lv
9XTv+I8vh3MP+XmGOpTr4I1fQe5+9caO5fXz918f8mWv8c6O+GGf+Nhe+B0P6XuPAm4/+a8P
+/4n+bFPZ5Vv7pcv85qf+TNP3a5PpF7P8QPFrKQf+mKf76h/+qbfFiXP+LlP+88P/dA3+9G/
Zfi06bXg8JLT+TWf9dvf94Uu7//Fn/qij/Glr/rJb/Tn7++gNfHtT/3vD/9MetrxD2wtaPm4
v/gSxPn6v+4gcImXUJYjaaor264DbMKDHNe2OrP6i5czLce7tYY7n8vo+iGZwWJzKTWhWNXW
dardcrveLzgsHpPL5jM6rV6z2+43PC6f0+v2Oz6v3/P7/j9goOAgYaHhIWKi4iJjo+MjZKTk
JCXbwiVmpiZmZafnJ2io6ChpqelpY4Oqastqw4prIkrKyYhKlsAsba7tCi5vb60I2VCxD9CT
gJJTMtBRsnLTcjS0UHO18w309LSTUBnu720warn5OXq6+jp7u/s7fLz8PH29/T1+vv4+f/nm
v6Z+Agf/Eixo8CBCc65iuVjocJEuXeMizppIkZywi8RwGLuGDFmSj9xELhtZzRrIZyR7nOzG
LNuYixgtJqxp8ybOnDp38uzp8yfQoEKHEi1qFB3ApAuOMm3q9CnUqFMcvlpClaEimVYiAtvV
laILrRufdLRGDSYUkSHVPksrZWXaj23nrk1JRmzYmVL38u3r9y/gwIIHEy5s+DDixI6UAlTs
+DHkyJK5LKT88JHEvFfEaZySuUxZb0TOnlRZGuVpk1PkvkVrlm7dKGI+LxE3+Tbu3Lp38+7t
+zfw4MKHT2L8jzjy5MqXM2/u/Dn06NKnU69u/Tr27No7Gd+0/Tv48OLHky9v//48+vTq17Nv
7/69vu4B4dOvb/8+/vz69/Pv7/8/gAEKOOAW8mVCIIIJKrgggw06+CCEEUo4IYUV5mcgJxZq
uCGHHXr4IYghijgiiSWaOCKGl5y4IostuvgijDHKOCONNdp4YyMpLoUjjz36+COQQQo5JJFF
GnnkYToiuSSTTTr5JJRRSjkllVUeqaSVWWq5JZddevklmGGKOeZeWJJ5Jpo9QbAmBGm6+Sac
cco5J53WmVknnnmyw2abevr5J6CBCjooofncWSiiiR7Cp6KNOvoopJFKOukXh1J6KaZlMJop
p516+imooQ5pqailcrqpqamquiqrrbp6H6mvyhooqv+z2norrrnquitisfL665i1AjssscUa
eyyy7fiaLLNOChunbc1KOy211VqbzrLXavtcZV6s8sizbCAw7rh9IKDOaXqke0q027r7Lrzx
yltHtvPam9tVVWmBFSPhrkFuuXsEfI5s6q5rSrv3Krwwww3DW6/DEQ+WLyv7fuuIv2oAfK4e
5KLjEh4gs6uXxCWbfDLKrUKcMstMXWzCy1bxu0jGGg+ch8cEFxzyziMP0zLQQQs9NKErE300
TjHDXHFD3TZScxo5d3wzKiLbYXUpCSO9Nddde72k0V+LrY/SJZStwmVPszmH1DhTfQrWdMT9
xgYb5KH12HnrvTffH4bdN+D/65x9ttmsEL7o2nK0XcLijL/t+MYubDw5x2nYtcTlLL0UG1uY
u8RD5trAZUfddcexGcm0Bb466627zt7fr8sOyuBMs/Dt4YZAjUbjjQvQO+XAB/+4GCSVZrxb
o4veuWmqKf8S83SUbnobXHHW2ezZa78998PF3j34itSuLywV517I7mcI34Lww68wvO9hGN/S
/M2zhlr0y7tGWv7z9+zG9KiXBplghIBeCR8CE6jABTrlewx84B7G14qLnY8Q6TPD+liwOIC9
L36/I95YPIINJJQELfsbTWuOIQ0Tfu5/0pueGrKgunCQDII2vCEOc1gPB+qwh21Q2swKp68K
DuKC/2XIYAcrBzn2gdCDYyjhNpTgmv218GBQZMkIU+PCF8LQDL+oCBVmgjcfkrGMZjyjIniI
xjV6i2LkEyLabEezxMUBiSrYIAil4ET5bZEabnmN5taymihIkZAFmxsXBRgTMZLjej9jIyQj
KclJxkGNlLykEK9yO9sRURBGJIMdTdC+L+wRDHNTDSBTGUjP+W+VqnwlGQIoS0UuQZZ3YeQj
u7KVXGKyl778pS8tCUxJVgaIcuxkID45hlAuMYmR00Ipv3BKQ0aRflpcl/9ISE1WqmGWtuRC
F2eDy1048oDDPCc602lDYaqTmMd04xsRoUwxMPODShRl8KYQTS9M05quRP8hbOKCPFhWsZve
DKcUvilOXuoyjAwdYzsjKtGJ6o2dFDVj2eAZT8StyWb3tKcGH+fBfC5hn13o5x8BqlJYsjSl
LUXkHALoxXHSxBc1vChOc6rTlll0pznMKDzV1tGova2e0eRgSfPIx4Ot1I8EPWTPUBrQluJB
obd8aCNp6tOtcrWrC+upVxcYxKZtVJ50VF9R0/pRkHJhpEo1ZR9R2dSCpvCk2xTkH2SKhnLW
tK9h/StgA3sssAq2e8hEJiDmqUe1hvSjSMXnWt26VtCssJqW/adoXIpXLch1qlXV614LSEOs
MrSwpj0tak1F2NS6zmkWKytH+0RUJfrusfakmm3/b5tU2k6Wn0agojazqNlUVlaEmHWqS/uI
BtDGMBgzzGppWSvd6VJXUautbt402QXE/kGxiyVpY913R/j1FnLPpOzzoBe6ztrPms9jLxZP
CAeENpeANsULdvOr3/3O6br85RpVvsBdP3j3u+cNLwfbRzl9LvgMA22vPz2rv+OlF774U+4Z
aMkG641Tdf/9MIhDbCX/ilhort2uHBVRYAMrdXLNRPBbzRtj31otdHONqo1Rs1mq8g9hvYiW
h0ss5CETOUgkLvJfV4zkJTO5yU4WxJGfvFMlS7nKVr4ylscQ5SxLlMpc/jKYwyzlLYv5nF4u
M5rTrGbsknnNmDyzm+Ms/+c577TNdIYknO+s5z3zmZJ27nMZ8wzoQRO60Az8s6FxKOhEM7rR
ju4boh+9wEVLutKWvnTKIo3p7lFaABP49AQ2LepRk3pami617DoN6lCjutWufrWsTg3rwKka
1LO+Na5zfSlZ6zpvtf50r4Mt7GHridfE5tqvWX3sZTO72VwytrOFluxoU7va1jYStK+NsmnH
yQDebtm3IRRubZP7r9kut8S4HYkEsNsxJu2Etw3gF3YnQAr0/gK9221vfa+b35C4dyXizYV8
13vfBTc4wHeS46bGl6lfEDi6I+7Tc0v8TCcuX74wdlY1rFoQB9cCwRMiWciSd7IHPgXEz/Fx
Fv8knOX+VkPLVxDyLRA85iqY+R9WjnCd06HmPn+5CXAeiXjLewo/X4LQW1DzNPzc52Voer73
kF7RDVK+ZCB6xbNOUYpr/UsZn+DX+7XxNHQcEEBHetQRMnIZw09yuTVFystx9qDPXQA2R8Pd
S5B0tDtd6Wn3Q91dnnc5QH3vev87JLAO8qP7ffCHR/zTC+94mkte6lMnTdVhygXFd73zw+S6
57XkRrBrV+xDZUPZAR94wdfk7bplu3iZWF5QED3upXA85B/P8zPgfvV05/fgJ18H4d/c92+Q
fPCNbwjOI/z3fO8C8QeO/N1Dv/J5gAldt6D5zds+9N6PJOi/TyVjbnT/wBYcOxpS34fo68T1
rn/xPGov/1P0/uy5x7vyKU99RbC/EP2nBPMZHBz8nxcQoNHlXx1sn105XBgEoPg9YBmFHwQ+
iQRhXCeo2/ohIE6c3MmN1+ytg/zVHv0FXtIZHu9poABKggEGwgom3rgt3v6ZQQvC4BrMoBso
IBfg4BZ03wT24A1JoA8uSQXGEWwJlWytgfrxgQ0GXNHRAQe+H1uxwwsKANYJXABO4STU38uZ
oAyi4POpoBeyYBg+ggN+oRssoRniXwxeH4ZJUxt6QRkGoRwiEBDOYZEM4dIUoekdIcfZGv49
nvPJXOG5wNIRYsEl3OTd3xrEoRu4GNvtFjR1/yA+vdgeQWEaXGG4QZztMaIaAl/dKaLdDWLx
/V0hCp7vzdzdleIBrmEogqIp7h/jvWLfyaL0Jd8humIg7hz16Rsirh4uNiAWpuAqsh8xRp8x
uuIx3iIaHlfzLOACMiAVBqMdTqP21CE1BgkewtFYqRj6nUESkkG7hVwJiiItGmIrhqMixiIb
iGAdOOJtNdFbuWNIvSM9yp4kogE7moAmSmMJ5GMNHl0qzuIoNp0gkuLeEaQhiqP9ceE5quNA
Gh9CFqRDNqRAPuQaRuQoUqQvniIXouO9meBEjgEn6l5IUmT1sWJJZuQwgqTyfaQqPlErCRQD
Ys3lscBIXiNOQlqK5P8komSjAFAMuHSjGXzjGEzfx1lfOTYeUv5eRZ7B/NmBx0Rluawdi/VW
ySnYPV6dP/ZjJvIjV94kGCCfLObeUraiWbrkypGjRb4kScKiWlokDDalRpLlWzLlRmJkW7Jl
QcblJ07fWC4jD/5lOjLkXq4kYSYi1DVeLeLlUj1Ywzlj5t3PFAQmT1ZmRe2kZQqKT46eEboB
UYpB2oXm3PWfLSqjMkqkSl4iWIrLVLbmuVBlJFplziAVHt3Mu+0gI1qhV+rjai7mQ5piairm
86GlWQZncRYmSQqjUqYkIDYfU7IeckJnLa5idCbnc6YhdSakaTbndXJnGVDmWh5m/iGmv5H/
Z3bmYnjanNAtYTZVHWSykkdwXxNmJn3mjTXWZ42QXzzxi/ntAQZG3sH14u6RZl8GqCemJdAB
5la2Y8A8E2wymGxWjtTUZmPh44KqQAjKJ3gWYIIupM7ZYgqiYnnGHOSpZ/1N50meJ3qqaHWy
KGoO5IsaZ4tiZ2oKaIui4YZKp/6lqHJ6p44CJ4xKZFPSJSvmoHJJFTcx4wrkKH42KU9hppPm
SVBZIJXO0ekhoR+eoIFuaUJy6C4eKHoGZJFOZm+2wWzSJjx+IGRBIiXapkjNGJkyaYZq6HwW
ZYd+qIfSqEqK6FHmqYwep3DSII92aRd+6ZgC6o/6qJj2KKPmoo2u/6iPigGT/qmeEqqlUmqk
/qmJMuaiogEiIelwIZcUTGqUlmrE3KepvghnbkF/5sF/giOYZiqiuqijxmpe6iUcXuiShqCu
ttXATGiadgFVAitvkdd39moLzKkWPKWd4qmzJualSuejZiqJ+mm0Vuq1YqouguigBqpxdmq2
hutxTutcEqZ84hsCFqNb1qW2giukZusyiipnxdXOZBNTkWqq5qu9oKq+tkgxpZjM6KEnCWUZ
fGYYTGveEaih1mqfsmuu7iZv8iq+VmibRqiwBmvFemDbaSXEJiuzLuvEJuqmQqu3Squtziqi
umuiimvJzui2gqLCNmq18tyJomigkqtYmv/BxMaszS4nc9bsjbaktZrBp9JrutgrbtZpvy4t
w/Ar06oqwJJVZ7aBwYalrSZsuhYow6bnL8ZpjkpsmVIs43ggm27BsP6qmxorx06sbiqtx4Yt
kOqeYMIsCZZncKqsyrrsymIryvIdY74r3+Lt0O5ty26td+bssbpto/Kt3pYrMtYtzd5pzwLu
UtHYe8pk/rzt027uV0Ep58oJYrUqHrxqsxou4RYud+LsGNIpHzwo2fqqxWbsmsIBstpkVypu
xHas/smlAQKtjgpu5K7r5NIq5bYstw6vpm7h4Dau3iLsiB4qMOIuy55u466g70JqMqJu5V6u
eyapSOru54Zvsjj/rfiSSOhGLfoQLBlULbpyqazy7M2ebLwuwcdCJcbK3sXGbhS2zW1G76Tu
I+7WL6yGZO9CbhoCr/b2LfVW73gub/GeLgJDcAMvbOo+bxyUKfwK6vQG7vJm7wJzb/dqX72+
Ye6WrwlfC/me8Idso9TuoWdmaaGaLvM279Va8BzUbiPer9jGZtkS6+vKAQ5HY9EFZhC3L91C
r6wmcctFMAMXaQZ/MLVqbbeu7MwmsLqaoeoiMRjg6xMvbhITbxQ7K/LGa9HO5AhDo+1Krwqv
MbCkMBtviE/+JPqe35X2IbCpoQxrK+E6L4Jqsf+CL+/ocBLlbw+j7T31r6QuKAB/ZRqH/6wG
PzLyUu4Sz2wfx20C6zHzbmrQSnEky22Qvuv1ejEfz3DiqjEmn/IXK7AXn2OMPnB3ujII15WR
YhMJw+0b3zKruDEuS8jFyfE7CezA1jHZwTCA5nGYCq+lkisrv7JqOvIyCfIP87DbSaghO5PG
tsFWVuG3YaIzQ7JzerK32nDJVvHvPq4TZ20MIl6JTvLxhuIqp6zkSvCYHq8yq3O8kmoXM649
G3CP5q12NqwalHEsowRBjyog7zJCp4ouJ7SClN4mhZ2V8uEw37GWGrNdUjJGjrKQ4qrOdnMY
uO7sTvPGym4UklyDrWP3ga3S2vJJcrTD3iqmYrReliXiUm9NX//0/ZXlRitvXfa0AxdvTWs0
1/rx25pyKt/0Td9qKO90TgstyToYjsXkhNmYVBc1Q1/1rSw0Vg9IgAVsV08t6hHzAFs0TA+1
OCuzUl+wUc9W2e4wjJ30/lbzW8NpIjeysvIm4T11ehqmOItsSjqdTMvlUet0Wv+lKjtkUpdr
4S41TquiUO+1GoAleep1Yiv2O1s2FKNl11puCtXPhUnmZ6cLS281aUuKVpf2f/Qy6c1xbL0w
RcdwBa/ryGZ0DRvq6h4CSMPfXB+YD+u2xqop7Qrw8L10Qy4mT1equfIpU3fkXeq1kK7kYBOp
c9ulnjK2Uu8zWRc3NufoZONlZVsnGD//N+MGornCFS1XNf9kLtUZ9EGjtntDymm/d5qQ7pl4
NGy3cqaMdkHMLynot3z/t6DEN4AHi/qOAfuGiX0X8yVHSoILBH+PQoMPuITXiYBP+JfQN5lE
OGiO5m0LSnsjxIOLwodbOInjSYWX+JZg+Jho+MGOrESFOIrHONCcuIxXiYqvCmGfE4zXOI+X
DI33eJTcuKrk+DDtOJAfucL8OJI3iZDjuGCjk5EvuZS/i5JP+ZE0uZVnuZZjWpVvuZBguZeH
uZgPWpePeY+AuZmnuZqrWZmveY2guZvHuZxXWZvPOYzAuZ3nuZ6LWJ3v+YrguZ8HuqBLV58P
+ogAuqEnuqJ3/1WhL7qHILqjR7qkt1OjT7qFQHpX+fetaHqCcLppsbil80elh/qEYLqX7gZH
Q4lwm0YIwycJm0MpyaO50LU0EwIiB8KqJ4Jq5+FriS4q+HpHe7pBpM0gAHsaGDsjIDsdKDsI
jjipC8ioPzth7PpDszYdS3T6ifUZdnhfpDoeEDW83ul0529Wsk3J/QsTjmRNLhz0oMJVivTs
yTooQbOMCSuEwm4hv7s9Anch5LohODTGsTaxlwMwZ1LBu4G/B8XABwKzl0HDI8LDvwG174Ow
Szt+RLvF/wVEr7a1F1GBi8GB47FueLsdcHvyPuvfkru8O+G5ExUATqpj6lhnvzoj6P87gkHo
rePvNMO7r9672d7vVRJPuSNCxdvBxuehwE98KHS8wf9B0QvEwgNCxIvB1BdC1bOB0ufD02c8
fGA81+/FqlY7C+vOx4dByFd0b0T5FBeqGC/3ZsP7yitOy6MVv/e77mIfVJkxGkOCzbv1d7H1
zgd+rQs+ztujSY+03zcCqNcBVhzOYTF9J5zvwQOxsycN5N/B1QvY5VdC5q9B56Pc4n99e3i9
6EMF+ZHV5gcztnujtreB2jPF6+8ozGkyKX80btF6INf9M+v+IMA8zc/r3j9CznvB8A8y4c97
vM+Y++V2f1c+H1z95/9B9CO889vE9Gv+5MfB9ffB9vPF1pf/vnqQPvi7DMDGscYJc7a/9gCa
/Lyxv4Iz3Tq3PWs6Fu5jUP2DQfH3ge8H/0CDgCCOZGmeaKquKeKyMOsiMTy3b63eey7PNBIw
eOLpjshkzcBUOp+lhhS6kjao2Gx1qu3GmAaveExOWsvQM1qnXrtj7bd8TveCw/W8fs/v+/+A
gYKDhIWGh4iJim8LjY6PkI6Lk5SVlpeYmZqbnJ2en3txI6ICVlecEKkQZBOtE3IJsZxNoFix
CYG3XreyJLolv2JGI8NyxWTHlmAxA81ozQO1KMnCPlTUAthH2tnWPcVDOETSKMuZpF3o5CLq
lObrk+1+8nX00vbw+Uvv+v3+/wAD/wocSLCgwTmREkI6yLChw4cQI0qcSFEFOlL4FKlaNcbV
KzG8cAkIZiJkDJNo7vThhYIksF6+QsJU4fKlSJsnZM6MqbOmzZslUYqo6RNLMmzhbACZ5u2b
iKQmhkgd95QHVCFNu1GFwk8FNBjQvjJzNpYsJW4lpNZAS4wa0qZqxU2Fm+Nq26VV8RbJmtYu
1rx3V+i1QwsTPlNcYGQstdgLlzYYEUtGMZnyKciJLWdW0dWhKXaft2xOkRGxaNMWQzdOp3o0
idAn1KA+TfoxbM22T+Guffk2b9ejZrPwHbvyPOImhJ9QWbG58+fQo0ufTp2MwusLqmvfzr27
9+/gFV0cvf/a0EZWrkDKHLlzaE+a78fcwZMnPs8ULnsWHbGfPVD+7ekXoID/8SSUgTMR1V4W
R2U111ZYTRUVX3vRMNeED261lIR9QcjWPvSdENaIYplAYg0lekViNJN8mJeLbF3YoRARYqhN
hnRZyOFdRsRV4Q+D9aXVC369GCQWnSUimXFRKJeabk866cYUpim3pJSMIQdallRqeSULSTL0
2ZK/afkacGeSWdyVUKY5JppokKnOl8l1iSVoTAZ3BZ11Vgkcn2lyaSabuMGpJ5ZsGhonoG7e
yVx4kEYq6aSUVmppCdgpdOmmnHbq6aegXjJem+WZpwp6rexCYFD6tdQqYY/WIeD/TznlNyt8
Bd7HKqv2AXgrr+vhFIyCuRrlYI4y2uhjYDHgqCGOyiYLGIZdhCnCiiOicGJZLGBrViIuDkkh
tYI9SK5Vxx4ZobkdshvYDfBSiNay7UJbb5FPWGtIon/e2edwhNLB720DF9pmo4n2qWYK+hY0
8MGC+pvlaQsjLGXB9fC7ZsV4BqxwnhGDHPLFHh/KqMmISjyyaxhnfPLKaMYa6sw012zzzThD
kWlCOffs889AB83dqE3uaWYi53WUXhckHejefz6x5GuxSszHh9RP76q1rlzXSrV/Xm/tK34L
0jq2sDAR26sSDT5LVdvjBGlvveuKA6QPRx4T7goyl+Bt/4oifrsC4CamSDgS8yVemBNzMwWh
4+Vao3ddlD8+LZCRSz5MvDp2bnez8qJbebs1atG3kho/WQM9BCvqmGywQzzx6mi2llvRUNJz
upiwEde67HqKVvSa/w5vch5xOPn7x4Eq3Hyjbhbf8cHL4557ZJkdzXry5IlyNBm/U79ZO7sL
bf756Kevvj47R7L++/DHL//8enhvf8mTJC2GR0wPuBPWTysQsbKQuJX4DydiW0F/Frig/iAw
bAo8oK7S5r+1JaFtpKvbjDbIox1psHQ/yhwHmUVCrpSvcCzilgpTQLjD6UBxBYRC40KoFMtd
roRamdaNxgVCx7mtdEl5iw1HyP/BHnljckP8wgnF47rgwcFQ2BNYYjAju8a0g4pOzKIWl7NE
gfgmisbTTJRwRztSda+JWsCe+NZIxjBucXaHkh6enOfGOUavjnB84/PEWEeiuUyOXGojFxdH
v0Ia8pCITCQL2rcQRTrykZCMJM5aNj2OaeRUSkuVFqL2vwZ28mtI6uIaOCnAT+qAgV8jZQ32
40BVTrAXatPJNdJFxBvmEHTu6iEOdUnDGvIyCVZDkeAGN0wWFnMEh3MhiGBIyAtmKHJrGRcG
gTi6z2HOKeTSIV6EGE3LGZEIm6OlCRvGROAR74nm9KMcsGhHQAqPj3DkHsTsEUzPNFGd54Tn
Ht+px1L/PQGfedwiQAfKsvEV1IzzNGhCEaoEeRDUnH9EZz5NIEpJWvSiGM2odhj5CI169KMg
DelBUhfHfV4yFaj6SBZcebYHZo0MMeQMM8kZwVW5FGxkk2VOcQVBrwWrp66yaUthKcFqeOiI
4tylNa9ZS6U2dal7K0dFr3VMbVUVhSr6WwoREdVb+lIuucxhOHaYRFtms4ffdKpXmZrNtHZQ
WlWb6r7QGFDVlellZWBnXdupmNpN8a/XIynD5KqP0lDSnSbdayXvN9E3PDRhib0fZPup0MY+
DI8B9adDDxvIPywGoCUgrEhHS9rSmhYRHJXEaVfL2ta6tn5vYihiD6E/L/Bv/5OehFpub1ot
mgpgpr7N6a+4xsrhJpC3OP2JToHq01cNVRYDHMM0lQoOHv4Scmd96nWxa9a4NjOrOlAmVo2p
1UV0FUbSdNaMxpresq61lyV063u3m10QyldccPVuiAxD18/C6bJz0Ouc+utX3egVZroTbT4M
K9jZ8pWy+APtGh4b4YNaj1EPtexhM2yG/3IWr45Fo4RHoODXmvjEKE4xplKbHRW7+MUwhjFj
HVyI2nbhtivdbdda+lL51HOwwIUCgXScXOUul7nIjeWRkYugtQ0LukX1wnS7W133znepap2X
dTfYVZnuF7zC3Coxxew3rZK5EOfdcnff6kGx6ujKav/VLpU1F7ftotebeMtz3NRLwO9Swooi
9nCDJwxYPSpWn2E8MICl6ueR3pOziYXwxzg24rxa2GJ5ojCGLy1pTFuJ0w8uY5Twt1i6pjHQ
C+VbcGPM6la72pEsbvGrZ03rWicSjJilLSb3t7Qc58pWvzZlSkqMW1BurSjRDSpPj5vs4zIZ
qD/lcRemfOUqd/Pa9Y3zmj/XZS+vECxXLfOZkRnufAH3y0hIs5XJ2k3OsfurWL4hN7nL1iLq
mb69RXc8CAzRSIc6FIX+96Eb+zxFm5rEjXZ0vwUOsHSCOtQzzrWlU+1vxEa84RqmuKEJntmD
M3zgd/V4GlDNcRIQ29YoT7n/yjcV65W7/OUwDxWuK04IG2sBx7Ygco937MBQnlzIZeMpsnXu
bGnvvMhGT/qOlx3AKE87qXN+m5rhDN9ta9nK75o6iL7drXKTe9xUBTsVzq1vHagb2/S+W+d4
+CFuTHneVY83Ce/b7SOsehCAXvjH/SkGAfdL7wz3e2C9SxEGN1TQGU88jcfA4b5q/OOYvbhA
SQ5IzSL+n3x3gn8fz+iyx/zzoA99dFou+tKb/vQT8d3DkbZr2/Y658HWbeyfDauEo6Hnuxr6
7HfK+5uytOhKZ67TkK4FJGbb2rhEu52tG1XOicG34h0vuMUefXMHWYZa1zZ9w6UXdeFb228P
HZ7X/y3+udNZDncXRN5FzZtACB7R/JSewQEfWts77NH0r3jj91lp8D1884rneAHIf5TXRyK3
WfkHf4QGeP0nAj+HehAYgRI4CaQ3gRZ4gRh4DqsHcoNgc1mAc1SgNmYzNcwWdPplf2OAe8rV
eyTIgiUobAbigkimbAgCfNj3QxnEI/WFfPC2fEnUfPgyTlw3ZmFGhJpwdsmHTTUETm6nZk14
VHs2fnKXdvZ1b9/nc1unRJ6HefQHgHZ1BJmXaAG3eBL3fjTHaFnoY1tocijIBgXohg6nULJ1
R2+kPSIHf6qnd3lIhv8meZ11hn14RjS2PXq4gRt3eGxEhx0DAw+YgY74iP+QqAUVGImUWImW
6H8DNof503o39nqwV4O+l1tAAUCm04hHAECkCIo+pYoz2IJNN4L+EXRNU0oJAmy8YoNPwINE
BDcftG3HV35tkW1qp4ZDCGbTN2ZbFRbmlX2+KGdD0osvooNKCE3B+EvhJIVUOIVedV/PKI19
toYOKEo/dmpd+IYbo4jWkwVmKEeXl08H9ofwSFFtOI7fiIL0yIVlFFhxGH91FT6JOD1lwhr6
uEb6mI4QVpCRJYjHI0jxCFrh84W7UVISuYiFIpAISYB6Z4qXuJEcGYmT2JEgGZIhCWKDxnoo
lUkq5WvONTVLxpLDV4ptqCoruYLC5WRDBiwteZP/NUlKNkmLtIgMz1Qh+WUkfuEsUgeF31CU
zCguxHiMWfU34gaVKIQty+heRnkvbUaUSnmU0ZKV6yI3UAd3wqiVyyJfSDSUTuBb9yiP6SeA
o7ZpJVmSAIkF6zhpclgydVlq8qCWGsmGNLWWiAiHcDlZKEMyhKmXV/Q9YBiXhwlpCBZ5Z0Rq
j5mQC2VJi+Zpd2lJ0GORIiOXgwSOIhmaonmBHzmapnmaEaiZnnYJHogFIAh7LMGTL+mSKpiW
oKkeLUl7sRibn2Rcu6kLSgZlqZSbv9lsRleb2xBWWNle9IJfbUZtyzmWIvR8bRh9ZiZm12lV
K9IiTshnbNacZImUvHSV/2Cli/EFjHH3nVdhlukCntanhfbYl4eIYJmpmpK5kFSQl5h2YRWj
nyujaqAJmNYXn23ZfoKpPJB2n18yKrEVkJxpJwYTRaqplxZ3UA26MQjKeYUZmQr6Mp4pKH2H
V/fZeahZoiYKgaV5oiq6orWmMvhpCa1JBa8JmyJRXCo4m+SAo0vXXEc3ZLH3C7pHVKAUbTw6
g8ZZfF4plFbpfeRJXWxXJF1Wd14GjtZpZlHpLU8pdoTQdt4Znt5nJFh2lsp5L78YhdpIVkF5
Odz4lWoYoDFZoBj3lpTmmHNJG3Q5hgioRniJpwWmKFMlnwh3m3CqgA33d4e5maMmcKiRpyEa
O/+Jek4umjIaOpd5WkWGWKf8KTIviqGuo5iIqCguypa3yaKkWqqvlaKmmqqquqo6EKNQMKOs
+nJSOqUxGavUEVMzE4YOgauMWKshpasBdoeHBKx/AKi2eqzIaj6omqzM2qyo6apPAKvOOmuz
CmSDOq27KqCXQqwMwasAqmLcGmIJeGvCSgjXiq3omq6esqzq2q7uKoHQ6gTS+q4pVq0AOqr0
mq2+Gh6eCh2EZayI1K/uV67zI7CLcK75mrAKCx3surAO+7CtFq9KMK8QK1KiU7H5arCUArDD
Gq7iKlIai7EiO7KQ1LAke7Io61ESmwQUm7IWhZYua6seqx0IK0kzOyX/BBs/NxuzPNuz68pi
Phu0QotIK4sELTu0h5SkSLu0TIsIO9u0UBu1CWuyUlu1VhspRXsER3u16hOEXPu1YEuOYTu2
ZLuwVFu2aJu2BZG1OrC1avu2cBu3cju3dFu38HC2dpu3eqtrJ8lrmrS3gBu4gju4hFu4hnu4
iJu4JskRfpuSivu4kBu5kju5lFu5lnu5Isu2NeC2mNu5nvu5oBu6oju6pFu6IqW5McC5pru6
rNu6rvu6sBu7sju78IC6MKC6tJu7uru7vNu7vvu7wDu6tssCuBu8xnu8yJu8yru8zNu89Dq8
K1C8zju91Fu91nu92Ju92htj0KsC0isRHLu9/+I7vuRbvuZ7vujLvN2bAt8bEd6avvAbv/I7
v/Rbv/ZbueuLAu3bd4TQb+97vwAcwAI8wARcwAYMsfl7AvvLGngHeOF7wBAcwRI8wRRcwRbs
YglsAgusjjnLwfRXsxccwiI8wiRcwiZ8wjiTwSWwwXc6rpj4QvuKwjI8wzRcwzZ8wzj8DypM
Aiycnx3cwjCMrzk8xERcxEZ8xEicxE6wwyPQwyPnwoxHVyCsxFRcxVZ8xVicxfHLxCLgxLFj
qCBGkZDqJR/6WzGsxWicxmq8xmzcxrDLxQLgxXaSoSPqoXOchyMajkLsxnzcx378x4AcyGoL
x3J8qI5pyINGp3osyP+M3MiO/MiQHMkkS8ie+MTZk5j9Vj2IGo+AGKh7LMmgHMqiPMqkXMoQ
SMl/28L/SIYzx8mYbHcPbMqyPMu0XMu2fMvyg8qO+8QlB3L7t3Hloa24PMzEXMzGfMzI7Cm6
LJC9TIiNeanBHMvJPM3UXM3WfM3YjAjLLLYO5swVNqmQJ6qfnM3kXM7mfM7onM5YsM0e3MxQ
tGHQLMVTrM70XM/2fM/4XMvsDMTd/M4MGM8ffMb5PNAEXdAGfdBsvM8+DM6+bI6BJ8/jjNAS
PdEUXdEWbcEKzcv9DFFeWIYQfdEgHdIiPdIkfb8ZjY8bHacq7W+NMc8l/dIwHdMyPdOWe9L/
mgfQZ0JHYhyIwMM93kbTQB3UQj3URK24Nh2Yg6iZDdZ/YezSRf3UUB3VUj3Vz8uJN1fJKC1x
IxOhCqnVTS3QVB3WYj3WZF3WJ3rUHcbQlUQxCujN5iTNZh3Xcj3XdF3XrobW0/G/dr3XfN3X
fv3XGGzVH4jVNCvMgH3YiJ3Yir3Y8YPX0gHXjB3Zkj3ZlF3ZD+HYlp3Zmr3ZnN3ZKYfZnh3a
oj3apF3aFwXapp3aqr3arN3aM4Parh3bsj3btF3bEQHbtp3bur3bvN3bm9i3rpfKvj3cxF3c
toa3xm3AuJ3czN3czp1RyP3cALzc0l3d1n3d6xPd2C2/1L3d3v3d/+D9Kdod3ubb3eR93uid
3tUx3uqtvebd3vAd3/JdEOw939T73vad3/q935tQ3/ytvPhNM069WmD9uwX+3wh+2P6d4MYb
4DMz4IaAnLd64HtbfU3J4Bi+2Que4SN7J5d5Uowb3LtsCcYmDVN8ASie4iqO4gYk4ZxQ4uPk
eUq7pTPuBk3KINEBxYVg4dRJ4Rz+42O94UDusJL54YubUptggutw4ive5C2u5LUA5TGelO45
CGlaBzc+S9Dxw3/A4z0e0UMe5lMt5GJOr4msyDUn2K5J2Ivg4pqgOFnQ5E7e4gHh5stE5VUu
CDNkDF16g8/xtHng5V9e5oTO12Re6Orqh/8QCeJIngl2rgwz1QUqjjOPDiYNU2VYpwfmyeeZ
zjZLGRCAXgeCPuiIXupmfeim7qwNOJGMjpKaUOnuEOlaMOk3A+s/LXf2WgbGh+Wfnpyd7kVc
7gej3uOpXuxhjerGjqyrHs4dqOYyyuaKYOuKoBLLoJG0bjPS/pnUmAm7Tge5Po2FF+x9MOy1
l+zmXtTIfu6suuyhLgYO3oI6GkA7SaTEh3RS85JAmoqEZ8Z4AMLXbgL/LgIBrwT0/kqtVPC3
GFQ1qu86iYXbbnZMGgRrmoNlCla4xBd3BqZKmpXbpC7QyYU9nRtgbJlfPKnEmi0CoEwo33Ve
DuHq/vLnnO4wb6r/7C7ua/Du8k6cxfmjFvR7sVicuafzWTjgAz8CA1/0SIDwWWNBO2+j+A6c
9N7wU15vmaOUTIkvQ/nxY6qe0rleHL/nG9KcH5/WhrnVmYrHIVOhOv51yphMVEle23KvMz/3
JC3zdL+iq97u7u7srwrtSS/1tBmcw+fzPmpkSj/0Pg7wKZ4CK04CjR+COgr4TZebvln4TXb4
QXzxF/+cRuk2Xy+eX+meV96MoS/2YN/nY7+YJ/NhZ77UlxpmWHqlcS/7ytirYH73uE/Odp/7
JZr3Nn/zfB+tfv/3T1ZBOxp8R5f8QkGKB6LvsBwGRL/4jE/rj19suFKLvQmL8p50y2+j/xc+
jA//Xh1fTd44X9C56d0YjaXv8YPxpVenZzh4hXYKcQ9JqIi6hwY4aIZT+yQAAoMokKQ4lOmJ
lmv6poYM07V947m+873/A4PCIbFoPCKTyiWz6XxCo9IptWq9YrPaLbfr/YLD4jG5bD6j0+rr
ou1+w93rOb1uv+Pz+j2/7//7NAi+CA7iFNpBKEI0TThOKCVIJrxMwlhWStpgbmpeeqZMUoaC
koh+jg7JrM4wXbxe4MDGCswucdKcZqaalpbg9vIGowoDkwofrfYgMDfbNCO8QKc4k1QLXFsz
w2Rjb3N/l0xTd3tHS4drQ6/TjJOft6fXuKuDw9cXIRIalhQ2wP/ooxHQhr99/wwiNOhv4cEW
I164UHEC4kSKLCRevKEMEMeOHj+CDClyJMmSJk+iTKlyJcuWLl/C3BFnJpyYNm/izKlzJ8+e
ZxgyPMSPziJGTB5BSmKsxtKlw2409SXAKapcUoGw2qjElqxZsJhQnXoVWNhdVpGVPctE6451
997Fu3dtbrpy5tC9xSdOnt6+ONyysxf3GV/BPLLZDTS03+KBjBsCXCxQ8o2BjgUADYqRRkWH
GT1bJMLWJ+nSpk+jTq16NevWrl/Dji07JM3aC2bjzq17N+/eLjNfTlinaKNHka6eFaUc2S/k
zZkbS/vUbLKsBrZ+zeGV1i3nYqFL1YX/Yzn5qj6k/xjdlt7evHfbw+8L2C3ewXANx9eR2H79
eYX7ryfXfz0AV1AKwQVHQoIHUkbQUAvy0NlmE4ZGYRDq+Zahhhty2KGHH4IYoogjkliiALbR
ZKKKK7LYoos3LYRZg4/dQdxRxinl3THkUVVWVGjp+JxaSFh3HRJcdYXkccwJad6O4hHDI5BM
QhUkVq0Awd57AG5Jl4DzdWNXmIWN6Z5/ZvJ3X5pnLlPXgDwU6BiCM0Ko4IyTQVanDhKCZmGf
f16I5YuDElqooYcimqiiizLaqBcozuSopJNSWimlEOpZho1LILXkDlJCSV0n4E356VhW8qAM
hkIoeUOrOVL5/92QuyyXnJRO8oCeD6sGiJ+aXYaDGJhlrimmPPv5+heZAyLrVw7VNLtDnI1R
tqCemTJ4ELY48GnCQ4CC2+2uglparrnnopuuuuuy2667Q0Aax7vz0luvvSPVua0YmyrRKaym
xjrqeKeWqsOPSWzE6w+v0rBdE2EdzFR5ohqM6jFrkfsDsb56md+Wzy77lrEiv8mlsu7tF220
/a2cw7ZzQiacgzG7bAjMBVaYs7ef7azzlUbeG7TQQxNdtNFHI520FfHWpLTTT0MddQ353nkG
v0n4iwR6ul5cJam4ej2rEQlnzGp2SZ7tqcBgSxyexbKe93aqCoNMMspuwtOxxycXG/+yyTe0
/PHev7LpgzOBV1Z1tnjOXDPNjsv4+LQxi8tn5d/2LAQrUnPeueefgx666KPfxPQbpKOeuuou
Gth4jYsU54jaOXDd5NoUTzfw10S2QncPDL+w3StgeRdxxcW8XTvcS/gO+LF+56e3s4TlVc7I
f1N/GPRrcl+34EG8XC2diutr5z83A+dz5uCu3356Za8ev/zz01+//fdDbboc+PPfv/8wVq18
YbgaErJ2BF0pz0duWyDAxPYzEpANaEUAXgm4QsFaXBB3Glxe7mznQd39QHk72Jzz7ma3E6pJ
etPjnvXKVD2+bEw/20tW906GOKE8jnGRyWHkIKeY1hGhWxH/8cxnhsg+ccWgef9bIhOb6MQn
QjGKLdFfG6RoxStiEQwxShwP00DAIxjQCAjERai61gtaPYltbXPg+2agKiXq4IJeIcEca1DH
44UNbKEqI5T4KDcO/tEGdGPP9QgnPRe+w27YE9zIvqTIXtHQYzAs2ZkoCSfLyEl8PMTkDoGw
RSNIaAU8sxzmiIgRnr0AjllcJStb6cpXwtKVVLxNLGtpy1ua75Oue50iYpcUrSUPVF5TTpQm
ZkYQqnFcRYLf74TXqjtiMG0pgGYxjdnBDoIKOdlMpu6IWR1mqmM+cRFnCoM1STDhhZz2UGc6
6dNOdn4vnu0JDOECZMlLpm9xnZyZ/y7N50kgBlGUAoWBQEVZg4IisQQkxCVDG+rQh0I0ouya
pUQralH6AUUHAgTDF40QxiLU7lbD9GOtooMq42lumeDcgTOfKc1ocid4F8ymL1AaDB6Nqlbc
HKkIBamwYVHPneXMW8iEOk+jrpOe41RqONFZT3k2tYVosqES8qlPme2wnz38p+J6UFABXO6r
NkAoKhWqyouiNa1qXStb27oSiro1rnINmlZ3mQjY3Uh2/wphGdvmFJ2aNGAfvGagsnKElkrz
VcCjJq1EOlgOPslK3mQjwHqqkUEidamFAxaamHrUlnm2kmYaVgyfmsgZtmmqQ6jrVrGaVU2C
r6s+MChYS/95yrIS1Ig0WOhce+vb3wI3uMKNAlyHa9zj3rKjRfhooc4qNd6S7oYn2SgdoIvc
62I3u9rdLkOLy93vgtd+yiUCcwnl3OeutHPSNQl153De8MI3vvKdL33p5d364je/RhvvEMo7
qPdGLb1SW29J2uteCeo3wQpeMIMbTKL7OjjCEm4Uf4Xg3xcBeMI3gdY9C2wz2Wo4xCIeMYlL
rCgImzjFKvZNhYNw4RW7FZ6/ySiMa2zjG+M4x6dBsY577GObtBgIL/5xRAGDExoTOclKXjKT
mwwGHjs5ylLGQ5B/MOQpxzK0L2Etlrvs5S+DOclQDjOZy1yFKvvgymZeM5vb7Ob/N8M5vGOO
M53rbAM090DNdt4zn/vs5z8Den4AGDShC23oQyM60YpeNKMb7ehHQzrSkp40pStt6UtjOtOa
3jSnO+3pT4M61KIeNalLbepTo/rTpJkcq1vt6lfDutWpnjWta23rW+M617reNa977etfAzvY
wh42sYtt7GMjO9nKXjazm+3sZ0M72tKeNrWrbe1rYzvb2t42t7vt7UnD4NviHje5y23uc6M7
3Ypedazb7e53w1sQ6p43vett73vjO9/63je/++3vfwM84AIfOMELbvCDIzzhCl84qsPN8IdD
POISnzi12R3vi2M84/6gOMc77vGPgzzkIh85yUtu8pOj/zzlKl85y1vucns7/OUynznNa+5s
i2s85zqHtc177vOfAz3oQh860Ytu9KMjPelKXzrT+x3zpkM96lL3OM53bvWrZ2bqWt8617vu
9a+DPexiHzvZy272s0f86WhfO9vb7uuqYz3uWHc73etu97vjPe963zvf++73vwO+1moPvMAD
YHhRGz4AiD98qBO/eMU3nvGEvzfc5W75nE8+85rfPOc77/nPgz70oh896Rv+gtLf2vGKVr2p
Wf9p13sa9p2WPadpv2nb7zvxkG975S/v+3gTW/a6Rz3xi2/84yM/+cqPugaa7/zmcxv3tJa+
pnUv+dVbv+PUl/jznc2A7z/bAf/if7bztT34XtN++2THffZLPXxQv3/Q1p//9RkdfwDQf/eS
vn+h+Q/p++dfpcVf/s2fuvlfshHgAeJfAc4eA9pf/Z1a7/3eBMZa7EEg9ukfobWfBl7g8nng
B4JgCIrgCJIgvj1f922b+p2aClqaA2IgC1JaBpIbDC4cCi7b9+FgqOEgA4Ca+PlgqPmgA4Da
CYaaDaba+fFa+nUg2rGfAlrgEmIaACYgFBqaFAbg/gkf/U2aFWohFkreFNLgAyqbExobGMrg
FFZfAr5gGGKaBFLgG7JaA1IhB0Kg47EeGZZgHurhHvJhH/rhH4raCZZfEWpArrFh5MngE26f
C1pguh3/4sEZYbLtIA962iTmYKcFoRB6Wib+YKcRoacJIvQd4ekJm/894tZJ3yn+nyq+YBWC
4aPxHxquYh0SYKTFohrOov6ZYSIK4Bz6Gh4G3yu6Yi1mmiweGjFGoE/A4TJWYO2poCke3h36
IiBSYzVa4zViYzYWXyRy2iCm3jS2HjhGITiyYqKVo7OdY8Bx47FNYiVa4iVuWiZuIid24qZ9
YjeGoigmYwoMGzTyIhOK46gBYy/WHyveYgbC4EHqIgse5DDaousN5DgGpCGm4y8WJOxFZCv2
nxLuXkU2mhsyY0guhDOq3wbS4QJCXkZq40qyZEu65EvC5NStY6bNJKp55KXd/6Q5kuNEwiJP
UltOcl07cppQCqWmySOnHeVRato9LiUKMiWpIeGumSRK3h1QeuE/SuQZ+iQdamVX9iQteqWj
+eMxTqNCup9Vwh9a2lpDkiVWiuUFZiFCbiW4KaNI2mWB3N5UIhojUqXqqWVMAmZgCuZgEmZh
8ltNXhpihqNbptpfyt9OMiZBOuJcll1RatoOFhpmxmMQYmI9AgBn2qNiSpoRiianReWsXSRG
XuTaOWajqeRDgmVWtuVsvmVq6mRkjqVD1qZcUuZujmFrNmZs0mYLwqVwnuQ+8sRdKidQ5CUw
8qUdRiNwGuZ0Umd1Wud1YmevleakbefjoV9vfuUsIv/iZEZm3VlmpsEjoaUnpimlUY6foXkm
pj2lfOojoXljqZ3mCqqmFQ5jeRabAjKeNPLiFcrhEvolHrYfRzbhY3akL5JhF/rmcMYgR0qo
Rm7kgM7hAVLoA4Jleb6fXqIkLnJlSpqkhp7ihz4ogerahuomcSbifu4leDoaSC7nMqah4lEf
dL4oivpndvrojwJpkAqpdc6noYWifRYiopWmICZaPhYpqR1oKkLobQJocWJlRDKkjDIoMrbl
a+okgx4nlTJmgkKhlx7bIHrjfRZaPjbpkbapKD4pqp3npWlmZq6npbUne8bnZ+5ppcUpd6op
AHRnG5LiN+4nRKamltaaij7/ZojiqD8yqovyZV9O6YUOn4Ia6KPqaIbanjEumon2aJfGaFhy
KKm2qIVe6Ki6Zlx66KYqJJc6qqMK6I7O5aVWqqxO6qIGpFXCaIWKGo3W6BveKFV+anRiKIkq
6pAq67Iya7M6K+k5qZJGa6AOmmI6aZKu6bXWp35qKoh66og+Z4eK6SJCZoFGKq6a6UbGqree
65bq6LgmK6TdJ7VGWvkR4Xxq66Gx6ZsW4r7W2pxaWp2q551WWp5eGmgWGsLSJ71SGjcO6qXl
p0Dq5buCaX/G62JW6i7yZrte5a0Ko8XeqqyuoYiO6j9+LJXepqSm7KmirK9WLKqmqstaasl+
Jcmi/+tU7iJX0qykwmrOUmSo5ihPxqWqmhqwBusEFmOAlqnS4ubFPuvTQm3USu3Uhl2+Gqm2
biuSZm22XuvVWm1w2qy7TurJEqvOlmyuhumqhmqpnivZdqzNfqvYji2snppTMuyjYa2aYq2+
uqm0fi2tAWylaSb4AYDAHqzC6ul7Km6fNuzDLprdVuvddlrEImIHUmzZWuyy8efMhujLeu7n
TihvdulCGmesYqBG8mixWu6hliq8DmSViq7a0urKwmza2q6ojq7HbiCIdq7q8ijpduXaWuoX
ciHu4lpCSikN5maUIudOHG2Nyibm9ifoGi/VWu/1Ym/2aq/U3WMkdm+cIv8maTKs4yoi8Poq
63Ju2sIu6XKoeKalW5qlyvZur94u5k4sogovTaKp5DbavXaf+G5rTQrw9/KvDhouneYgZh5w
wSLu4Y4fZzawn5IvvwqqvRawplFu+Zqs0tav2CJg6QpoB8tsLk5v+touq6ru6b5sE2bq7NYu
uPKuCYNsDJutzCbvBrtwy+ZuuKJv9Z4t+9bwlmblxsow9aImZMKvSoJqxbam0T7v5UmkCIdw
+25vFVvxFWNxFp+c986r3t7tAGftTE4wSZoqFdcv/Trh0KpwbY5nCo8wG6/w9cXv7eZmzKaa
3W5tve4vnBYwGGMr33pxHpda4FKaAicwwVKaweL/6Q9CMOMC6gU72v9asCB7WgaTcRIjqxGP
6LGxaNlOsdpGcYV2svRqMimH6Sf7sB1f5cjSsBC7roN26upeKQsTrQ7P8P2K686uYYS6svya
cCsbKgmzrTDTJvMWbV0+sV3ipBzLsirrshZDczRL8zRT8705bBcH8BePb6CKMSS3Mcu6sQgX
My2/cZbmLyiH8xOeMjPnMPXSrzOjWt9aGh4n6ZJusyBfMyWTGiIL7iGD3wIzsCZu5gMzsiM/
sidOcr96M8QW6lk6J/GWsgcHo6d+cixnLNmOckZbaTq3KCoXcQkTcy3D5iyHbCp3MAuTtEiD
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
RR6LbLLKLstss84+C2200k5LbbWmuZbakko2ySS2c3ibC6EXFovfPOaSekekzKUa5quWtgsQ
pemyu2WjQGmW5nVvwulQddRp4yd5uNC53UaziHdwSbOA64rAtqBnbcSDyripp/BabNywGWNc
IcXteSwxZruOTDKKwJ6MsmAhr8xyyy6/DHPMMs9Mc80234wzkvvyu3POPv8MdNDFQCx00QVy
3DHS/miccS0gr2ojvUZLU3LVViuSctZaZzJ1115/DXbYYo9Ndtlmn+21TA6jzXbbbidL9Ns1
P/2f00wnbbfSfdD/PQ0WUssNzNWCD7514YYDjnjiii/OeOOOPw555M2q7afkll+O+TBxZ855
5xdr6vktg49eteGmZx166qqvznrrrr8Oe+xAesuw7Lbf3vjmuO+e+Ia8A0J68LueTjywvx+P
fPLKL898886L7ebz0k9Ps+7UX3+zl9iXIHz3JxYPPovbj09++eafj3766qcS/fruv0+j9fDP
j2yt43uP/1/h728Y/f7/D8AACnCABKRZkgqIwAQmQ34KbKADI5O/CO6FfxRU2QMviMEManCD
HOygBz8IQmEwMIQkLKErJIhCR1RwhZ0woQtfCMMYynCGNKyhDdmWwhzqcIc87KEPfwjE/yAK
cYhELKIRj4jEJCpxiUxsohOfCMUoSnGKVKyiFa+IxSxqcYtc7KIXvwjGMIpxjGQsoxnPiMY0
qnGNbGyjG98IxzjKcY50rKMd74jHPOpxj3zsox//CMhACnKQhCykIQ+JyEQqcpGMbKQjHwnJ
SEpykpSspCUviclManKTnOykJz8JylCKcpSkLKUpT4nKVKpylaxspStfCctYynKWtKylLW+J
y1zqcpe87KUvfwnMYApzmMQspjGPicxkKnOZzGymM58JzWhKc5rUrKY1r4nNbGpzm9zspje/
Cc5winOc5CynOc+JznSqc53sbKc73wnPeMpznvSspz3vic986v9zn/zspz//CdCACnSgBC2o
QQ+K0IQqdKEMbahDHwrRiEp0ohStqEUvitGManSjHO2oRz8K0pCKdKQkLalJT4rSlKp0pSxt
qUtfCtOYynSmNK2pTW+K05zqdKc87alPfwrUoAp1qEQtqlGPitSkKnWpTG2qU58K1ahKdapU
rapVr4rVrGp1q1ztqle/CtawinWsZC2rWc+K1rSqda1sbatb3wrXuMp1rnStq13vite86nWv
fO2rX/8K2MAKdrCELaxhD4vYxCp2sYxtrGMfC9nISnaylK2sZS+L2cxqdrOc7axnPwva0Ip2
tKQtrWlPi9rUqna1rG2ta18L29jKdraytK2tbW+L29zqdre87a1vfwvc4Ap3uMQtrnGPi9zk
Kne5zG2uc58L3ehKd7rUra51r4vd7Gp3u9ztrne/C97wine85C2vec+L3vSqd73sba973wvf
+Mp3vvStr33vi9/86ne//O2vf/8L4AALeMAELrCBD4zgBCt4wQxusIMfDOEIS3jCFK6whS+M
4QxreMMc7rCHPwziEIt4xCQusYlPjOIUq3jFLG6xi18M4xjLGL4hAAAh+QQFJQAFACwDAMcD
7AapBAAE/7DISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoEQgEBqPyKRyyWw6
n9CodEqtWq/YrHbL7Xq/WCJ4TC6bz+i0es1uu9/wuHxOr+PE9rx+z+/7/4CBgoOEhYaHfEWI
i4yNjo+QkZKTlJWWl3aKmJucnZ6foKGio6SlpnenqaqrrK2ur7CxsrMpmrS3uLm6u7y9vr/A
thfCFcQbxsDJysvMzc7P0NFNyBTG1BrX0trb3N3e3+Dho9kY5OXi6Onq6+zt7u9VwtnWHebw
9/j5+vv8/dC25JAF9EewoMGDCBMqhKRp4LljCyNKnEixosWLSuwNMaERo8ePIP9DihzZr2NH
CydJqlzJsqXLl65McoRJs6bNmzhzLpJZIqXOn0CDCh1K9AdPEj6LKl3KtKlTpkdHJH1KtarV
q1glnpw6NavXr2DDio22tefYs2jTql2rK6XGrmzjyp1Lt64fn/bg2t3Lt6/fv/HMQgRMuLDh
w4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt
27hz697Nmw+B38CDCwf+hojx48iP917OvHnl4dCFF09OXbnz69izE47OncD06tW1ix9PXm33
6N/BJy/Pvr37p+ehp1dv/b39+/hrxh8+nz6e/AAGKCD/RvtJ54Z/6w2o4IIM0oJABwg86EKB
wfXnX096NajhhhxeIeEJ1ET4AoXEHYhgfSL81+GKLLbIxYczYSDihCR6Z+KJKoaQo4s89uij
EjCGECQHQ5pQo41t4GhcLT826eSTORQJg5QkHGkhfUxCqeWWXKJApQtfimDljThm2eWZaKZ5
QZgssAnCmEkqmWGGatZpp4BuUjCjCHlO8CWcbBg3wKADEEHooChOUNadjDbaY58S7CnkB2wC
uoaghApwaKY54uXop6BuCGkBkoKQp5uWqoHppqyqmBSdocYqK26j6jkpkWtakGoax226aqEN
DVPPrMQWW16tft66gZRB7opG/6+crvqfQBzAauy12JaGbKTKZkBlszWmF214BVDjULboplvb
tqR2K+MHzp4BLbDgbSSYuvjmyxq7o7LZZ7xmzItluTHqa/DBo/Hrbq4eAFyGwOrZixTCFFfM
mcKm4tpwuGSOS53EUlks8siTYUypxh04TAbE9RJ8L8kwx3yYyR74Cy/HcRqKaMQuTyzzz0D3
RTOERKeMc6DS8txzikE37XRcQ6OsQZ4qj8EyuUvr+PTWXIcFab8joHr0pUm3DPJgXaet9lVf
L1wzB1WDcfXH1Xhg7dp45w1S2xmX8OfYqpaNdd1o62344ZvF/YWcdyPu+OONKe4F45BXbnlo
kndB+f/lnHd+WeZcbO756KRHDjivcpau+uqGgb6F6KzHLvtcrmsB++y45y5W7VncrvvvwFPF
exipB2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/99+CHL/745Jdv/vnop6/++uy3
7/778Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa
8IIYzKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUwjKEMZ0jDGtrwhjjMoQ53yMMe
+vCHQAyiEIdIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFrfIxS7/evGLYAyjGMdI
xjKa8YxoTKMa18jGNrrxjXCMoxznSMc62vGOeMyjHvfIxz768Y+ADKQgB0nIQhrykIhMpCIX
ychGOvKRkIykJCdJyUpa8pKYzKQmN8nJTnryk6AMpShHScpSmvKUqEylKlfJyla68pWwjKUs
Z0nLWtrylrjMpS53ycte+vKXwAymMIdJzGIa85jITKYyl8nMZjrzmdCMpjSnSc1qWvOa2Mym
NrfJzW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJz3ra8574zKc+98nPfvrznwAN
qEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0rRilr0/6IYzahGN8rRjnr0oyANqUhHStKSmvSk
KE2pSlfK0pa69KUwjalMZ0rTmtr0pjjNqU53ytOe+vSnQA2qUIdK1KIa9ahITapSl8rUpjr1
qVCNqlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhNq1rXyta2uvWtcI2rXOdK17ra
9a54zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQjaxkJ0vZylr2spjNrGY3y9nO
evazoA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM2tbnfL29769rfADa5whyur
HRHXoMY9LkGTq1zkNlehjf977jqjK910Ure6vpwHNrSGXW6ei3Dc7a42PRUy8W5THoVT1LDM
O17wZoBa6WVvNYMVX/XWV77SjArT8HtN/YaXv9T0LwiuC+BaCvgDBC7wLA9sNwUHeMAFczA0
F1VeCU/4vxi2MDPdgmANz7fC9/Xwhl/2EBGb+MQoTrGKV8ziFrv4xTCOsYxnTOMa2/jGOM6x
jnfM4x77+MdADrKQh0zkIhv5yEhOspKXzOQmO/nJUI6ylKdM5Spb+cpYzrKWt8zlLnv5y2AO
s5jHTOYym/nMaE6zmtfM5ja7+c1wjrOc50znOtv5znjOs573zOc++/nPgA60oAdN6EIb+tCI
TrT/ohfN6EY7+tGQjrSkJ03pSlv60pjOtKY3zelOe/rToA61qEdN6lKb+tSoTrWqV83qVrv6
1bCOtaxnTeta2/rWuM61rnfN6177+tfADrawh03sYhv72MhOtrKXzexmO/vZ0I62tKdN7Wpb
+9rYzra2t83tbnv72+AOt7jHTe5ym/vc6E63utfN7na7+93wjre8503vetv73vjOt773ze9+
+/vfAA+4wAdO8IIb/OAIT7jCF87whjv84RCPuMQnTvGKW/ziGM+4xjfO8Y57/OMgD7nIR07y
kpv85ChPucpXzvKWu/zlMI+5zGdO85rb/OY4z7nOd87znvv850APutCH/070ohv96EhPutKX
zvSmO/3pUI+61KdO9apb/epYz7rWt871rnv962APu9jHTvaym/3saE+72tfO9ra7/e1wj7vc
5073utv97njPu973zve++/3vgA+84AdP+MIb/vCIT7ziF8/4xjv+8ZCPvOQnT/nKW/7ymM+8
5jfP+c57/vOgD73oR0/60pv+9KhPvepXz/rWu/71sI+97GdP+9rb/va4z73ud8/73vv+98AP
vvCHT/ziG//4yE++8pfP/OY7//nQj770p0/96lv/+tjPvva3z/3ue//74A+/+MdP/vKb//zo
T7/618/+9rv//fCPv/znT//62//++M+//vfP///++///ABiAAjiABFiABniACJiACriADNiA
DviAEBiBEjiBFFiBFniBGJiBGriBHNiBHviBIBiCIjiCJFiCJniCKJiCKriCLNiCLviCMBiD
MjiDNFiDNniDOJiDOriDPNiDPviDQBiEQjiERFiERniESJiESriETNiETviEUBiFUjiFVFiF
VniFWJiFWriFXNiFXviFYBiGYjiGZFiGZniGaJiGariGbNiGbviGcBiHcjiHdFiHdniHeJiH
eriHfNiHfviHgBiIgjiIhFiIhniIiJiIiriIjNiIjviIkBiJkjiJlFiJlniJmJiJmriJnNiJ
nviJoBiKojiKpFiKpnj/iqiYiqq4iqzYiq74irAYi7I4i7RYi7Z4i7iYi7q4i7zYi774i8AY
jMI4jMRYjMZ4jMiYjMq4jMzYjM74jNAYjdI4jdRYjdZ4jdiYjdq4jdzYjd74jeAYjuI4juRY
juZ4juiYjuq4juzYju74jvAYj/I4j/RYj/Z4j/iYj/q4j/zYj/74jwAZkAI5kARZkAZ5kAiZ
kAq5kAzZkA75kBAZkRI5kRRZkRZ5kRiZkRq5kRzZkR75kSAZkiI5kiRZkiZ5kiiZkiq5kizZ
ki75kjAZkzI5kzRZkzZ5kziZkzq5kzzZkz75k0AZlEI5lERZlEZ5lEiZlEq5lEzZlE75lFAZ
/5VSOZVUWZVWeZVYmZVauZVc2ZVe+ZVgGZZiOZZkWZZmeZZomZZquZZs2ZZu+ZZwGZdyOZd0
WZd2eZd4mZd6uZd82Zd++ZeAGZiCOZiEWZiGeZiImZiKuZiM2ZiO+ZiQGZmSOZmUWZmWeZmY
mZmauZmc2Zme+ZmgGZqiOZqkWZqmeZqomZqquZqs2Zqu+ZqwGZuyOZu0WZu2eZu4mZu6uZu8
2Zu++ZvAGZzCOZzEWZzGeZzImZzKuZzM2ZzO+ZzQGZ3SOZ3UWZ3WeZ3YmZ3auZ3c2Z3e+Z3g
GZ7iOZ7kWZ7meZ7omZ7quZ7s2Z7u+Z7wGZ/y+UUAUJ/1KQEBsAH5if+fD2mf9kkBAIAB+1kB
A6qQ/hmgAHoBBUqgC+mfBRAAELqf98mgBYCgFcqfBnqfERqhFWqhGOqhF/qgGQoAG/qg+Tmh
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
6Ej+yOWN46bu1clt7GVu7Vn8ylhMw8D87R3s7jdO5PFu2a7u7WW87eXO7T8s7L2O6M+e1Iat
6+S98IGu4u596YSO5Xq+ubye1WDO482O7zV+2T4M2+Eu7RgO7OE67l198P5u4v1dvDAf8zKf
wXE+8zYvwS9/8zq/8zy/qw7e8zGPsEA/9ERf9IVu9EjPqUKfc/RM3/Q8//NOX7BLH/VUX/Uk
C/VWD7BTn/Vc3/X7ivVef7A5H/ZkX/bzCvZmL69bn/Zs3/Zu//bCuvZwP/d0X/d2b6qMk/d6
v/d83/d+//eAH/iCP/iEX/iGf/iIn/iKv/iM3/iO//iQH/mSP/mUX/l9HwEAIfkEBSwACgAs
BgDHA+kGqQQABP9QyUmrvTjrzbv/YCiOZGmeaKqubOu+cCzPdG3feK7vfO//QGAiESwaj8ik
cslsOp/QqHRKrVqv2Kx2y+16v6EheEwum8/otHrNbrvf8Lh8Tq/XxPa8fs/v+/+AgYKDhIWG
h3lEiIuMjY6PkJGSk5SVlpdzipibnJ2en6ChoqOkpaZ3p6mqq6ytrq+wsbKzJpq0t7i5uru8
vb6/vbYXCQLFxsfCHMnAzM3Oz9DR0tPUS8sVxMfF1xvc1d/g4eLj5OXmod4Z6ern7e7v8PHy
8/RSQ/d47BbrCvz1/wADChxIsCA0fPn07VNmsKHDhxAjSpzYCKG2iwK4rfNHsaPHjyD/Q4oc
aYNjv1okU6pcybKly48mTS58SbOmzZs4cwYDIRObzp9AgwodStRQTJRFkypdyrSpUyhHS/R8
SrWq1atYqUYlMTWr169gw4qlKLPrybFo06pdy3ZeWalt48qdS7furZ4czdrdy7ev3798pvrT
C7iw4cOIE08xu1Gx48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ue
Tbu27du4c+vezbu379/AgwsfTry48S0Ykytfzry58+fQlROYTr26derHs2vfzjm69+/gw3+/
Tt469/Po0ycWz769+/Hl46ufT79+3Pf48+svFl++/f8ABljV/34EFghff9cJqOCCDP5k4IMQ
Sodggg1WaOGFIkWo4YYTUojhhyCGCIsAHRTzwndvdGideAMMIOKLMMboBokoIMDcid6lqCJ1
LLoo449ABolcCjYuh2N0Ou5IQI9CNunkk0zQOIKUHlCJAopuKDndez5C6eWXYNJgpQxjmoBl
G1ou6V6XYbbp5ptT3lBmCWeykSaXcOap554WzHkiC3WuceeafBZqaJt+YmBinCAkGqga0xUg
qaSRTkrplhex2YGmh3bqaYyJXrCoCKFSUOqjaVQ6KQGWWoqpMZxu+umstIZYagWjhnCrArei
ioaqrQb7qgCxylrrscgquKuoupbILP+uOWYJ7KqsUgvrBcVWkG2y3HZ73LJ9NsvBnFb6egZ1
wqJ76bXYcrCtt/DG2xu4uIqrgZ/lRovmtP0Vk+27CgAs78AEy0avqfZmsKy5Zqh7aXz+miBw
wRRXjNrBE9B76gcMl+FwAQhGXMLEFpdssmcYS6DxuBzrayewIRMr8ck01zxayrwmrGjLSEpb
7cPliUwCyTYXbTRiOK+8wcIuCwpzvzKPfPTUVEeWtM7Pltg0pE9DHPXQVYctdmFXN+qs1j3v
+zPIUH8tAtFjxy13VmVzfPa4W6faddBCvz3334CjBa7SWIua9697k3cMyXAH7vjjRA1e+N0K
H35u4tdpM3H/45B37rlNkptN572WN4z5ipm6+/nqrJfWMRlpti777LG9PkbstOeu+2m2g4H7
7sAH31nvX/wu/PHIT0a8F8Yn7/zzhi3fRfPQV289XdJzQf313Hc/1obgP7i99+SXP2D46Os3
vvnst+/++/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQn
SMEKWvCCGMygBjfIwQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEO
d8jDHvrwh0AMohCHSMQiGvGISEyiEpfIxCY68YlQjKIUp0jFKlrxiljMoha3yMUu/3rxi2AM
oxjHSMYymvGMaEyjGtfIxja68Y1wjKMc50jHOtrxjnjMox73yMc++vGPgAykIAdJyEIa8pCI
TKQiF8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKV
sIylLGdJy1ra8pa4zKUud8nLXvryl8AMpjCHScxiGvOYyEymMpfJzGY685nQjKY0p0nNalrz
mtjMpja3yc1uevOb4AynOMdJznKa85zoTKc618nOdrrznfCMpzznSc962vOe+MynPvfJz376
858ADahAB0rQghr0oAhNqEIXytCGOvShEI2oRCdK0Ypa9P+iGM2oRjfK0Y569KMgDalIR0rS
kpr0pChNqUpXytKWuvSlMI2pTGdK05ra9KY4zalOd8rTnvr0p0ANqlCHStSiGvWoSE2qUpfK
1KY69alQjapUp0rVqlr1qljNqla3ytWuevWrYA2rWMdK1rKa9axoTata18rWtrr1rXCNq1zn
Ste62vWueM2rXvfK17769a+ADaxgB0vYwhr2sIhNrGIXy9jGOvaxkI2sZCdL2cpa9rKYzaxm
N8vZznr2s6ANrWhHS9rSmva0qE2talfL2ta69rWwja1sZ0vb2tr2trjNrW53y9ve+va3wA2u
cIdL3OIa97jITa5yl8vc5jr3udD/ja50p0vd6lr3utjNrna3y93ueve74A2veMdL3vKa97zo
DWiL0gvT9bLXpe59b3vlC1/6tpRz9s0ofvPrzncNYDlw2y9/2Qmw/6bObwP+J+fwK+AEq7NF
EI4vBmIlsAY7GJ0RlvCEN7wBC1/YnBluzr9U92F+Ek3AHi7xOE88MxXrk8VSc3E+YQw2GeOT
xiNIsY29iWME77ieAY7xj+kZ5BoPeZ6NY9yRZ5xjD+h4yd3cb4GhTOUqW/nKWM6ylrfM5S57
+ctgDrOYx0zmMpv5zGhOs5rXzOY2u/nNcI6znOdM5zrb+c54zrOe98znPvv5z4AOtKAHTehC
G/rQiE60/6IXzehGO/rRkI60pCdN6Upb+tKYzrSmN83pTnv606AOtahHTepSm/rUqE61qlfN
6la7+tWwjrWsZ03rWtv61rjOta53zete+/rXwA62sIdN7GIb+9jITrayl83sZjv72dCOtrSn
Te1qW/va2M62trfN7W57+9vgDre4x03ucpv73OhOt7rXze52u/vd8I63vOdN73rb+974zre+
983vfvv73wAPuMAHTvCCG/zgCE+4whfO8IY7/OEQj7jEJ07xilv84hjPuMY3zvGOe/zjIA+5
yEdO8pKb/OQoT7nKV87ylrv85TCPucxnTvOa2/zmOM+5znfO8577/OdAD7rQh/9O9KIb/ehI
T7rSl870pjv96VCPutSnTvWqW/3qWM+61rfO9a57/etgD7vYx072spv97GhPu9rXzva2u/3t
cI+73OdO97rb/e54z7ve9873vvv974APvOAHT/jCG/7wiE+84hfP+MY7/vGQj7zkJ0/5ylv+
8pjPvOY3z/nOe/7zoA+96EdP+tKb/vSoT73qV8/61rv+9bCPvexnT/va2/72uM+97nfP+977
/vfAD77wh0/84hv/+MhPvvKXz/zmO//50I++9KdP/epb//rYz772t8/97nv/++APv/jHT/7y
m//86E+/+tfP/va7//3wj7/850//+tv//vjPv/73z////vv//wAYgAI4gARYgAZ4gAiYgAq4
gAzYgA74gBAYgRI4gRRYgRZ4gRiYgRq4gRzYgR74gSAYgiI4giRYgiZ4giiYgiq4gizYgi74
gjAYgzI4gzRYgzZ4gziYgzq4gzzYgz74g0AYhEI4hERYhEZ4hEiYhEq4hEzYhE74hFAYhVI4
hVRYhVZ4hViYhVq4hVzYhV74hWAYhmI4hmRYhmZ4hmiYhmq4hmzYhm74hnAYh3I4h3RYh3Z4
h3iYh3q4h3zYh374h4AYiII4iIRYiIZ4iIiYiIq4iIzYiI74iJAYiZI4iZRYiZZ4iZiYiZq4
iZzYiZ74iaAYiqI4iqRYiqZ4/4qomIqquIqs2Iqu+IqwGIuyOIu0WIu2eIu4mIu6uIu82Iu+
+IvAGIzCOIzEWIzGeIzImIzKuIzM2IzO+IzQGI3SOI3UWI3WeI3YmI3auI3c2I3e+I3gGI7i
OI7kWI7meI7omI7quI7s2I7u+I7wGI/yOI/0WI/2eI/4mI/6uI/82I/++I8AGZACOZAEWZAG
eZAImZAKuZAM2ZAO+ZAQGZESOZEUWZEWeZEYmZEauZEc2ZEe+ZEgGZIiOZIkWZImeZIomZIq
uZIs2ZIu+ZIwGZMyOZM0WZM2eZM4mZM6uZM82ZM++ZNAGZRCOZREWZRGeZRImZRKuZRM2ZRO
+ZRQGf+VUjmVVFmVVnmVWJmVWrmVXNmVXvmVYBmWYjmWZFmWZnmWaJmWarmWbNmWbvmWcBmX
cjmXdFmXdnmXeJmXermXfNmXfvmXgBmYgjmYhFmYhnmYiJmYirmYjNmYjvmYkBmZkjmZlFmZ
lnmZmJmZmrmZnNmZnvmZoBmaojmapFmapnmaqJmaqrmarNmarvmasBmbsjmbtFmbtnmbuJmb
urmbvNmbvvmbwBmcwjmcxFmcxnmcyJmcyrmczNmczvmc0Bmd0jmd1Fmd1nmd2Jmd2rmd3Nmd
3vmd4Bme4jme5Fme5nme6Jme6rme7Nme7vme8Bmf8jmf9Fmf9nmf+Jmf+rn/n/zZn/75nwAa
oAI6oARaoAZ6oAiaoAq6oAzaoA76oBAaoRI6oRRaoRZ6oRiaoRq6oRzaoR76ocYWACI6ogEA
ACZ6oih6oiMKADtJoi4qoimKoi9aojk5oyQaoyZqozRqkzcqoysaoz8KACt6k0HqoyWaokUq
pDDKozAKpE1qpEi6pDWZpDkqokmJo1UaAFeKoyNKlVqqAV0alF+KAT/6oz/Zo056pGbak2ia
pllqomxKpVCqpDvaonJqpELZplgqp2HKpEeKpSr6pHjqp4Dqpihqp39aqG86qFMqqIq6qCyq
kzpKoh8wpo06qYlqpJSKk5jqqFFqqSAaqqI6qqRa/6qmeqrVlz6quqqs2qqu+qqwGquyGqtd
N6u2equ4mqu6uqu82qvKUau+GqzCOqzEWqzGKqzAeqzKuqzM2qzO+qzNkazQOq3UWq3Weq2q
Kq3Yuq3c2q3e+q3aoK3gOq7kWq7m2qtpdgDqSgkG0K7q+q7w+q7tagAfEK/2eq/4mq/6uq/8
qq7zyq/nGrACO7AEGz5Q1q/9ugfzurAMawD4yrD72rAIi7AN+68Te7EH4LD6arH6WrAe+7Eg
G7LPcbAYi68KW7EQe68pm68SW7Isi7Lu6rIbq7EvS7P5KrI4m7M6O7AkK7Pvygcwu7A1a68r
0K9BG7M+G68c+7BIe7M7+/+0UBu11dqz7Nq0SRuxVnu1S+uvWZu0W2uvX2uvUju2ZFu2yLpk
PzsJYXu1Ktu1Phu2a+uyccu1NouvZnu3eJu3rkq1auu2bKu0fiu3XTu3GEu4hHsAepu4iru4
jNu4jvu4kBu5kju5BkKvFLCyNWu5LvC3nFu4gQu2mLuvJVC38Aq3g1uxTBu0GUC3Vku5rvu6
sBu7sju7tFu7tnu7+qG5CoC6qcuwLNC5wDuxh1u6oauvIICybUu6GZu1Rwu2JHAAS4O70ju9
1Fu91nu92Ju92qurR9uuHbCwKvC23gsDFPu5gCu0CPsBQQu6yvu1zau0MLC98ju/s4pl8uq+
Szv/rykgvvq7ueULs1hrsymAvnTLvsnLvvVawDObvxZLvw78wNlqZedrwOeLAvw7vi0gvOu7
wPA6wMxrtfirvEObugFMug0MwSicwgYiwUZ7uro7Al4Lvv7bwgDMwWlrAqb7whNQw/87wj5M
vBqrwkI8xO5BZt2rwyGgtRg8wwEsuEg8ut0LAiXsuxvQxBRMxFicxdBhxFFsAsH7xT1csv2r
AkfsAVPcsgdswxOMuFrcxm4crmNWxl4MxnT8wxr8xCQgxxZwsd1rxxS8xm8cyG7MxXX7u3V8
yGvsuXg8Alv7uyHsx4kMxOoqyJSMxYQcr4aMyJo8vAi8Ao1cA3FruC48/8mVXMopfMkdXLSa
vMnmm7ws8Mk0EMqfm8OkbMq2TL9ltrQZzL8xEMaK3AKc/K8nQMB/TMJXfMvIvL25zMBL/Lwy
S8W7TMNODMzMXLdziwE2W7z3K8AWALemkszgfL1ktq4z8MwyHM38GsxdXALk7AGczLrIm6/f
27XQEs72LL3jDM9CG75ifM6ZnM6tvLxHewLbjMbbzMeoO7fQXAFhW8/3/NC0m88FTbP//L+9
LM00rLpzPNHGjNAWK8rErMCADNEkLbviWtIoDbknndIsvbgr3dIwjbcvHdM0PbYzXdM4vbM3
ndM8HbI73dNATbA/HdREba5DXdRIndRKvdRM3QTUtxoBACH5BAUaAAYALPoC6AMDA1cEAAP/
aLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5siwpwLM8xYd94frt87//AoHBILBqPyKTyQWvOdNDc
ckqtWq/YrHbL7XacYEF0TPCaz+i0es1uu01hJzn6rtvv+Lx+z7/Em3NQfYOEhYaHiIkjfzSB
OoqQkZKTlJVbjE+OOJacnZ6foKEWmDKam6KoqaqrrHWkNaY2rbO0tba3P68wsbK4vr/AwcIN
umK8w8jJysuWxbxlzNHS09RtzsfV2drb3EbXsd3h4uPkITAD6Ojn6eq7OgXw8I/l9PX29uvp
Auzs7jfxAOXtuEewoEFp+fgp9EcgoMOBByNKnEgrhsIBCf0F/BcP/yLFjyBDUrLIT4Y+Yw07
4gDYS6TLlzD3kDwpJ6XAlSpj6tzJE81MjGFsOBxaoGXPo0iTHvkZRyjRjdCUSp1KdQXToDaf
CqzKtavXLxmxspzztazZs8TCgnF6cwzat3CrXl2bNVDcu3h5zq1Zl0zev4BB7gXEtu3YwIgT
ExzciKNWo4ojS9bGOJPjoR4na96srHKpd1Azcx5N+tY3U6VTq551WtPq17BBtXYUu7ZtSbPt
3t7Ne1Busr2DC3el69nw48h9FseWvLlzK7/9Pp9OfelycNWza9/Ovbv37+DDix9Pvrz58+jT
q1/Pvr379/Djy59Pv779+/jz69/Pv7////8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo
4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AG
KeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5pps
tunmm3DGKeecdNZp55145qnnnnz26eefgAYq6KCEFmrooYgmquiijDbq6KOQRirppJRWauml
mGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMYq66y01mrrrbjmquuuvPbq66/ABivs
sMQWa+yxyCar7LL/zDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy2
6+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUY
Z6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQ
RBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+32
23DHLffcdNdt991456333nz37fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnl/5hn
rvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvstNdu++2456777rz37vvvwAcv/PDE
F2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/99+CHL/745Jdv/vnop6/++uy37/77
8Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa8IIY
zKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUwjKEMZ0jDGtrwhjjMoQ53yMMe+vCH
QAyiEIdIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFv+3yMUuevGLYAyjGMdIxjKa
8YxoTKMa18jGNrrxjXCMoxznSMc62vGOeMyjHvfIxz768Y+ADKQgB0nIQhrykIhMpCIXychG
OvKRkIykJCdJyUpa8pKYzKQmN8nJTnryk6AMpShHScpSmvKUqEylKlfJyla68pWwjKUsZ0nL
WtrylrjMpS53ycte+vKXwAymMIdJzGIa85jITKYyl8nMZjrzmdCMpjSnSc1qWvOa2MymNrfJ
zW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJz3ra8574zKc+98nPfvrznwANqEAH
StCCGvSgCE2oQhfK0IY69KEQjahEJ0r/0Ypa9KIYzahGN8rRjnr0oyANqUhHStKSmvSkKE2p
SlfK0pa69KUwjalMZ0rTmtr0pjjNqU53ytOe+vSnQA2qUIdK1KIa9ahITapSl8rUpjr1qVCN
qlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhNq1rXyta2uvWtcI2rXOdK17ra9a54
zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQjaxkJ0vZylr2spjNrGY3y9nOevaz
oA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM2tbnfL29769rfADa5wh0vc4hr3
uMhNrnKXy9zmuTr3udCNrnSnS93qWve62M2udrfL3e5697vgDa94x0ve8pr3vOhNr3rXy972
uve98I2vfOdL3/ra9774za9+98vf/m4JAAAOgIDbB+AACzgA7CswAOJX4AO7r8EHPvCC02dg
AQNAwhS+sIQ1HAAAo4/DHa6wh8/HYQVv+MMKhnCIUZziEk/YfC0W8YvLF2MXszjFJyZxjHMM
4x1beMbkqzGPe4xjC6vPxx1eX4Hl12L4FRnBD66w+hIAACH5BAUmAAYALPoC6AMVA1cEAAP/
aLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s61JCLM+0TNx4ruNv7//AoHBILBqPyKRyGak5abuo
jkmtWq/YrHbL7XpHz7BASiZ8z+i0es1uu98u8bMshdvv+Lx+z++D5E50UX6EhYaHiImKLYA1
gjuLkZKTlJWWbY1QjzmXnZ6foKGiIZkzOAWoqaiDo62ur7CxhqU2N6qqrLK6u7y9vkm0Mae3
q5C/x8jJyssZwWM7uMbM09TV1q/OUdFT193e3+CE2dCpueHn6OnqWOM625zr8fLz9Iw1A/j4
juTF3PX/AAMKnEAjn0F9tdyVkzawocOH6mYcnJgwxzseEDNq3MhM/8ZBj/kqDusHj6PJkyhb
gUS4coAwfgXMpZxJsyaiGAbvhXymkCRGm0CDCoWDc6LRlz1jMhzKtKnTK0WNfuRpcaG/p1iz
ag0SVepObVZLbh1LtiyJroDA+rxhtq3btxfQylGr9Crcu3jdyhVDV2bev4CftpwL02/gw4hp
tnQ5mOrIumITS568UaJXhLaIaWZLubPnhgW91tK82czn06jlOaFoigBpYpxTy57trd0m07Rz
61Zme9Pu38B59X4UvLjxUcMFHV/OvFJyOs2jSz/0vMz069jzVCeTvbv3NdvrfB9PXkt4w+XT
q1/Pvr379/Djy59Pv779+/jz69/Pv7////8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo
4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AG
KeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5pps
tunmm3DGKeecdNZp55145qnnnnz26eefgAYq6KCEFmrooYgmquiijDbq6KOQRirppJRWauml
mGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMYq66y01mrrrbjmquuuvPbq66/ABivs
sMQWa+yxyCar7LL/zDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy2
6+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUY
Z6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQ
RBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+32
23DHLffcdNdt991456333nz37fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnl/5hn
rvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvstNdu++2456777rz37vvvwAcv/PDE
F2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/99+CHL/745Jdv/vnop6/++uy37/77
8Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa8IIY
zKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUwjKEMZ0jDGtrwhjjMoQ53yMMe+vCH
QAyiEIdIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFv+3yMUuevGLYAyjGMdIxjKa
8YxoTKMa18jGNrrxjXCMoxznSMc62vGOeMyjHvfIxz768Y+ADKQgB0nIQhrykIhMpCIXychG
OvKRkIykJCdJyUpa8pKYzKQmN8nJTnryk6AMpShHScpSmvKUqEylKlfJyla68pWwjKUsZ0nL
WtrylrjMpS53ycte+vKXwAymMIdJzGIa85jITKYyl8nMZjrzmdCMpjSnSc1qWvOa2MymNrfJ
zW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJz3ra8574zKc+98nPfvrznwANqEAH
StCCGvSgCE2oQhfK0IY69KEQjahEJ0r/0Ypa9KIYzahGN8rRjnr0oyANqUhHStKSmvSkKE2p
SlfK0pa69KUwjalMZ0rTmtr0pjjNqU53ytOe+vSnQA2qUIdK1KIa9ahITapSl8rUpjr1qVCN
qlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhNq1rXyta2uvWtcI2rXOdK17ra9a54
zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQjaxkJ0vZylr2spjNrGY3y9nOevaz
oA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM2tbnfL29769rfADa5wh0vc4hr3
uMhNrnKXy9zm2jr3udCNrnSnS93qWve62M2udrfL3e5697vgDa94x0ve8pr3vOhNr3rXy972
uve98I2vfOdL3/ra9774za9+98vf/vr3vwAOsIAHTOACG/jACE6wghfM4AY7+MEQjrCEJ0zh
Clv4whjOsIYDE4AOezgAAFjgh0fcYQWSeMQJ/DAAVrziDyPQwyyOsYdf3OEYs3jGB4SxjQGA
4wPu+MYlRuCPeRxkCQYAgkc2MowfqOIQN7DJThaxjlfMQChTWcogtjGWf7zlHZu4xlxO8YlR
nOMxu7jMZi5yARMAACH5BAUlAAUALAQA6AMdBlcEAAP/WLrc/jDKSau9OOvNu/9gKI5kaZ5o
qq5s675wLM90bd94ru9879OCoHBIFBKOyKQS+Ws6n9CodEqtWq/YrHbL7Xq/4LB4UiwTl2jl
eM1uu9/wuHxOr9vv+Lwea+4L0oAEe4OEhYaHiImKi4yNjo+PfmaBaZICkJiZmpucnZ6foKGi
ox6WRZRolqSrrK2ur7CxsrO0oqZnqEqStby9vr/AwcLDxMW3Q7m6fsXMzc7P0NHS09QzQgPY
2dhlyUnL1eDh4uPk5ebnjNfa2dzdR9/o8fLz9PX29/gf6usD7e59+QIKHEiwoMGDrMpo89cN
IMKHECNKnEixIhSF7E65I2DG/6LHjyBDihwZEuM2jf/KkFzJsqXLlzCJmeyHsuGxmDhz6tzJ
s2ecmQyTHbvks6jRo0iTKl0BtKbQm0ujSp1KtWrPprhSmrLKtavXr2AFYkW2EWrYs2jTql3b
a6yRslvZyp1Lt65dRG6DbOQY967fv4ADC66S9w/cXYMTK17MuLGJwnv7Op5MubLlxZAPO7zM
ubPnz18za90MurTp06hfirZJOrXr17BjD1z9tLXs27hz64ZGOxe83cCDCx/uqjeq38STK1/O
/FAQftBpRu7YvLr169jXPI++Tq9mItnDix9P/sd27hmnIy/Pvr3796WGGh5NHb79+/jzy5/P
2nb+//8ABsjcfuqpJOCBCCa4G4HfCaHggxBGaBqD9BEl4YUYZqgYhf1p6OGHIM7FYTIhlmji
iV2NmAuKLLbo4lXy7fXijDTWaOONOOao44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp
5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5ppstunmm3DGKeecdNZp55145qnnnnz2
6eefgAYq6KCEFmrooYgmquiijDbq6KOQRirppJRWaumlmGaq6aacdurpp6CGKuqopJZq6qmo
pqrqqqy26uqrsMYq66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LL/zDbr7LPQRivt
tNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr
778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySin
rPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQRBdt9NFIJ6300kw37fTTUEct9dRU
V2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+3223DHLffcdNdt991456333nz37fff
gAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnl/5hnrvnmnHfu+eeghy766KSXbvrpqKeu
+uqst+7667DHLvvstNdu++2456777rz37vvvwAcv/PDEF2/88cgnr/zyzDfv/PPQRy/99NRX
b/312Gev/fbcd+/99+CHL/745Jdv/vnop6/++uy37/778Mcv//z012///fjnr//+/Pfv//8A
DKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa8IIYzKAGN8jBDnrwgyAMoQhHSMISmvCE
KEyhClfIwha68IUwjKEMZ0jDGtrwhjjMoQ53yMMe+vCHQAyiEIdIxCIa8YhITKISl8jEJjrx
iVCMohSnSMUqWvGKWMyiFv+3yMUuevGLYAyjGMdIxjKa8YxoTKMa18jGNrrxjXCMoxznSMc6
2vGOeMyjHvfIxz768Y+ADKQgB0nIQhrykIhMpCIXychGOvKRkIykJCdJyUpa8pKYzKQmN8nJ
Tnryk6AMpShHScpSmvKUqEylKlfJyla68pWwjKUsZ0nLWtrylrjMpS53ycte+vKXwAymMIdJ
zGIa85jITKYyl8nMZjrzmdCMpjSnSc1qWvOa2MymNrfJzW5685vgDKc4x0nOcprznOhMpzrX
yc52uvOd8IynPOdJz3ra8574zKc+98nPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahE
J0r/0Ypa9KIYzahGN8rRjnr0oyANqUhHStKSmvSkKE2pSlfK0pa69KUwjalMZ0rTmtr0pjjN
qU53ytOe+vSnQA2qUIdK1KIa9ahITapSl8rUpjr1qVCNqlSnStWqWvWqWM2qVrfK1a569atg
DatYx0rWspr1rGhNq1rXyta2uvWtcI2rXOdK17ra9a54zate98rXvvr1r4ANrGAHS9jCGvaw
iE2sYhfL2MY69rGQjaxkJ0vZylr2spjNrGY3y9nOevazoA2taEdL2tKa9rSoTa1qV8va1rr2
tbCNrWxnS9va2va2uM2tbnfL29769rfADa5wh0vc4hr3uMhNrnKXy9zm/zr3udCNrnSnS93q
Wve62M2udrfL3e5697vgDa94x0ve8pr3vOhNr3rXy972uve98I2vfOdL3/ra9774za9+98vf
/vr3vwAOsIAHTOACG/jACE6wghfM4AY7+MEQjrCEJ0zhClv4whjOsIY3zOEOe/jDIA6xiEdM
4hKb+MQoTrGKV8ziFrv4xTCOsYxnTOMa2/jGOM6xjnfM4x77+MdADrKQh0zkIhv5yEhOspKX
zOQmO/nJUI6ylKdM5Spb+cpYzrKWt8zlLnv5y2AOs5jHTOYym/nMaE6zmtfM5ja7+c1wjrOc
50znOtv5znjOs573zOc++/nPgA60oAdN6EIb+v/QiE60ohfN6EY7+tGQjrSkJ03pSlv60pjO
tKY3zelOe/rToA61qEdN6lKb+tSoTrWqV83qVrv61bCOtaxnTeta2/rWuM61rnfN6177+tfA
Drawh03sYhv72MhOtrKXzexmO/vZ0I62tKdN7Wpb+9rYzra2t83tbnv72+AOt7jHTe5ym/vc
6E63utfN7na7+93wjre8503vetv73vjOt773ze9++/vfAA+4wAdO8IIb/OAIT7jCF87whjv8
4RCPuMQnTvGKW/ziGM+4xjfO8Y57/OMgD7nIR07ykpv85ChPucpXzvKWu/zlMI+5zGdO85rb
/OY4z7nOd87znvv850D/D7rQh070ohv96EhPutKXzvSmO/3pUI+61KdO9apb/epYz7rWt871
rnv962APu9jHTvaym/3saE+72tfO9ra7/e1wj7vc5073utv97njPu973zve++/3vgA+84AdP
+MIb/vCIT7ziF8/4xjv+8ZCPvOQnT/nKW/7ymM+85jfP+c57/vOgD73oR0/60pv+9KhPvepX
z/rWu/71sI+97GdP+9rb/va4z73ud8/73vv+98APvvCHT/ziG//4yE++8pfP/OY7//nQj770
p0/96lv/+tjPvva3z/3ue//74A+/+MdP/vKb//zoT7/618/+9rv//fCPv/znT//62//++M+/
lP73z//++///ABiAAjiABFiABniACJiACriADNiADviAEBiBEjiBFFiBFniBGJiBGriB4gMA
HsiBIPhMATCCJAgA+0aCI2iCJ4iCAcBvHuiBJKhvL/iCMXhvM0iDI2iDNwiDOWhvO8iDLUhv
JbiDNThvQ3iDRVhvAYCESRhvAMCCUKiC8/aEUIiCUihvOMiCL/g/CQAAIfkEBSgACAAsBQAW
AvIGWgYABP8QyUmrvTjrzbv/YCiOZGmeaKqubOu+cCzPdG3feK7vfO//wKBwSNwNNkfMYMlk
Fp/QqHRKrVqv2Kx2y+16v+CweEwum8+8ZEZNYaPf8Lh8Tq/b7/i8fs/v+/+AcG4Wg0uBh4iJ
iouMjY6PkJGSk5SVXoMVhUwClp2en6ChoqOkpaanqKlcmAgCroWqsbKztLW2t7i5uru8IKyu
AppOvcTFxsfIycrLzM3JTa9KwE3DztbX2Nna29zd3t8om8EdrODm5+jp6uvs7e5kv+Xl7/T1
9vf4+fr72NT+SPwCChxIsKDBgwgF+WviYWHChxAjSpxIsSJFf8Ayanw1z6LHjyD/Q4ocSVIU
NU4axGnsWLKly5cwY8qcCQWWkk00c+rcybOnz583l6BMufAf0KNIkypdytQcJnlNo0qdSrWq
VVVPiV7dyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw
4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu2
7du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw4sfT768
+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijg/4AEFmjggQgmqOCCDDbo4IMQRijh
hBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okopqjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo
449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWim
qeaabLbp5ptwxinnnHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSU
VmrppZhmqummnHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuv
wAYr7LDEFmvsscgmq+yyzDbr7P+z0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar
7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRX
bPHFGGes8cYcd+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889A
By300EQXbfTRSCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322Winrfba
bLft9ttwxy333HTXbffdeOet99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV275
5Zhnrvn/5px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++689+7778AH
L/zwxBdv/PHIJ6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrs
t+/++/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEK
WvCCGMygBjfIwQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jD
Hvrwh0AMohCHSMQiGvGISEyiEpfIxCY68YlQjKIUp0jFKlrxiljMoha3yMUu/3rxi2AMoxjH
SMYymvGMaEyjGtfIxja68Y1wjKMc50jHOtrxjnjMox73yMc++vGPgAykIAdJyEIa8pCITKQi
F8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKVsIyl
LGdJy1ra8pa4zKUud8nLXvryl8AMpjCHScxiGvOYyEymMpfJzGY685nQjKY0p0nNalrzmtjM
pja3yc1uevOb4AynOMdJznKa85zoTKc618nOdrrznfCMpzznSc962vOe+MynPvfJz376858A
DahAB0rQghr0oAhNqEIXytCGOvShEI2oRCdK0Ypa9P+iGM2oRjfK0Y569KMgDalIR0rSkpr0
pChNqUpXytKWuvSlMI2pTGdK05ra9KY4zalOd8rTnvr0p0ANqlCHSlQnuqKohToqUgel1KUm
1alMhaqghiJVP1G1qlO6qgU2spEQaFUyHZFHUbDKja9WgKtNBYFZIRPWC7CErNlYqwbkOlfM
tDUTb4UrNq5K16/SVQJ/Zcxd24ATvYKDqn81a2LtioFpEMKw6RgKWrvaWA4EdjG/iAZeqwHZ
sqrVBJdVDDTG4dZpGKWz2ghtK0CbGXG8Na+oXYZqVbvV1jYWKrHtxmxZa9eiGCIlud3GbktA
W8T49rcccEhwkzFcEhTXMRj/mWxGkLtc5nqVuJo5CRKEshHYVtcWtH0uYLP72KAMQLzfBa8I
Qote0RaWKMelbnp58dzLtjcxWVHCfPeK3Q3c17hu1cp+B0zgAhv4wAhOsIIXzOAGO/jB0o2w
hCdM4Qpb+MIYzrCGNyxhAnj4wyAO8YcfvBgOm/jEKE6xildsYhG7OMQkVgyLZ0zjGtv4xpN9
sY4JEOPE4PjHQA6ykCe84xf3GDFDTrKSl1zjIrv4yIdhspSnTGULO1nEUDZMlbfM5S5fGcZZ
rktaM4BhfXwZxGEWc2DLnI8zjzjNcxlzYy9sZjfzGM52kSub8WHnO+OZLnqmc5vt/Gcxz1XQ
fCZ0/6HjfGgL19nNi/ZJXyN8XTIj+h4EKICmC/DiTXN6JWON9EgSi9YRBNrRbfZ0pzdNAMeK
eib1dW6jK2xmVbtY1Rx5NU2CAQ3/XmDNs6ZwrVl9a1ZzRCi6hgmvke3rX1s22BMetqY/PG0P
45q0yY7JsoVd2WbPGdV8tnWmOW1tYy9bvtkWSXNNDW0JS5vctr62ctOt7s/299u0HjSx411t
V9O7Jeteb7sprW9Wq9rW0/03wO0ta0uDG9Pj9rTEid1dhY+a4ex2eL4TPfGOk3uy87b4QwJe
aXxzO9ER9zi5Wy1ddIs8IeG9968vbQ9q85vYLFdJwl8ukZg33OTRHnTK4f8t7mOfl+cfKS57
P7BniKccxEU/93GRDvOMP9sDTa95uau99ZX7m+oWQe9isU7zetic60/38HS9C3aqZN3sim67
Wt5Ojz7LfS10f4fd756WvLtj73w/i9/bAfjAl2Xw7Ci84ceC+HUofvFh6bLkJ6/kx0P+K5TP
vOZtbPnLe/7zoA+96EdP+tKb/vSoT73qV8/61rv+9bCPvexnT/va2/72uM+97nfP+977/vfA
D77wh0/84hv/+MhPvvKXz/zmO//50I++9KdP/epb//rYz772t8/97nv/++APv/jHT/7ym//8
6E+/+tfP/va7//3wj7/850//+tv//vjPv/73z////vv//wAYgAI4gARYgAZ4gAiYgAq4gAzY
gA74gBAYgRI4gRRYgRZ4gRiYgRq4gRzYgR74gSAYgiI4giRYgiZ4giiYgiq4gizYgi74gjAY
gzI4gzRYgzZ4gziYgzq4gzzYgz74g0AYhEI4hERYhEZ4hEiYhEq4hEzYhE74hFAYhVI4hVRY
hVZ4hViYhVq4hVzYhV74hWAYhmI4hmRYhmZ4hmiYhmq4hmzYhm74hnAYh3I4h3RYh3Z4h3iY
h3q4h3zYh374h4AYiII4iIRYiIZ4iIiYiIq4iIzYiI74iJAYiZI4iZRYiZZ4iZiYiZq4iZyY
KHLWiWH3X6CoD584ih4h/4qmiA+omIr2sIqsSA+u+IqzMGnSVXKyyF/+VWoCd4txZXW2yIvW
IHV95WxXB4zXcG5jV1veZozOsG1BR4x1xYzBiHG7KI3NQHLUaI3WxXS8pY2ylY3g6I3FgI3c
KI7KQI5YZ47n+IvhqI674HO+6I7EoHTlKI/rWI3LaI/HIHbFqI/++I8AGZACOZAEWZAGeZAI
mZAKuZAM2ZAO+ZAQGZESOZEUWZEWeZEYmZEauZEc2ZEe+ZEgGZIiOZIkWZImeZIomZIquZIs
2ZIu+ZIwGZMyOZM0WZM2eZM4mZM6uZM82ZM++ZNAGZRCOZREWZRGeZRImZRKuZRM2ZRO+ZRQ
Gf+VUjmVVFmVVnmVWJmVWrmVXNmVXvmVYBmWYjmWZFmWZnmWaJmWarmWbNmWbvmWcBmXcjmX
dFmXdnmXeJmXermXfNmXfvmXgBmYgjmYhFmYhnmYiJmYirmYjNmYjvmYkBmZkjmZlFmZlnmZ
mJmZmrmZnNmZnvmZoBmaojmapFmapnmaqJmaqrmarNmarvmasBmbsjmbtFmbtnmbuJmburmb
vNmbvvmbwBmcwjmcxFmcxnmcyJmcyrmczNmczvmc0Bmd0jmd1Fmd1nmd2Jmd2rmd3Nmd3vmd
4Bme4jme5Fme5nme6Jme6rme7Nme7vme8Bmf8jmf9Fmf9nmf+Jmf+rn/n/zZn/75nwAaoAI6
oARaoAZ6oAiaoAq6oAzaoA76oBAaoRI6oRRaoRZ6oRiaoRq6oRzaoR76oSAaoiI6oiRaoiZ6
oiiaoiq6oizaoi76ojAaozI6ozRaozZ6oziaozq6ozzaoz76o0AapEI6pERapEZ6pEiapEq6
pEzapE76pFAapVI6pVRapVZ6pViapVq6pVzapV76pWAapmI6pmRapmZ6pmiapmq6pmzapm76
pnAap3I6p3Rap3Z6p3iap3q6p3zap376p4AaqII6qIRaqIZ6qIiaqIq6qIzaqI76qJAaqZI6
qZRaqZZ6qZiaqZq6qZzaqZ76qaAaqqI6qqRa/6qmeqqomqqquqqs2qqu+qqwGquyOqu0Wqu2
equ4mqu6uqu82qu++qvAGqzCOqzEWqzGeqzImqzKuqzM2qzO+qzQGq3SOq3UWq3Weq3Ymq3a
uq3c2q3e+q3gGq7iOq7kWq7meq7omq7quq7s2q7u+q7wGq/yOq/0Wq/2eq/4mq/6uq/82q/+
+q8AG7ACO7AEW7AGe7AIm7AKu7AM27AO+7AQG7ESO7EUW7EWe7EYm7Eau7Ec27Ee+7EgG7Ii
O7IkW7Ime7Iom7Iqu7Is27Iu+7IwG7MyO7M0W7M2e7M4m7M6u7M827M++7NAG7RCO7REW7RG
e7RIm7RKu7RM27RO+/+0UBu1Uju1VFu1Vnu1WJu1Wru1XNu1Xvu1YBu2Yju2ZFu2Znu2aJu2
aru2bNu2bvu2cBu3cju3dFu3dnu3eJu3eru3fNu3fvu3gBu4gju4hFu4hnu4iJu4iru4jNu4
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
xYsYM2rE+C8atY8f/zeKHEmypMmTKGV1HIDEY8iUMGPKnEmzpk0uhuZ1usmzp8+fQIMKdbNT
w8qAE4cqXcq0qdOn4RANowe1qtWrWLNqBSXVKNWtYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3
rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26
tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069
uvXr2LNr3869u/fv4MOLH0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4P+A
BBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostuji
izDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWVWGap
5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQW
auihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quw
xirrrLTWauutuOaq66689urrr8AGK+ywxBZr7LHIJqvsssw26+z/s9BGK+201FZr7bXYZqvt
ttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds
8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDH
LPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZc
d+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPft99+ABy744IQXbvjh
iCeu+OKMN+7445BHLvnklFdu+eWYZ675/+acd+7556CHLvropJdu+umop6766qy37vrrsMcu
++y012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx3
7/334Icv/vjkl2/++einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCA
CEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrw
hTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQh0jEIhrxiEhMohKXyMQmOvGJUIyiFKdIxSpa
8YpYzKIWt8jFLv968YtgDKMYx0jGMprxjGhMoxrXyMY2uvGNcIyjHOdIxzra8Y54zKMe98jH
Pvrxj4AMpCAHSchCGvKQiEykIhfJyEY68pGQjKQkJ0nJSlrykpjMpCY3yclOevKToAylKEdJ
ylKa8pSoTKUqV8nKVrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKX
ycxmOvOZ0IymNKdJzWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc8
50nPetrznvjMpz73yc9++vOfAA2oQAdK0IIa9KAITahCF8rQhjr0oRCNqEQnStGKWvT/ohjN
qEY3ytGOevSjIA2pSEdK0pKa9KQoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2pTnfK05769KdA
DapQh0rUohr1qEhN6hETkAClKoqpTk0UVKO6qKZS9VBWvWqhsqrVQXG1q1j6qgUSABJqiHUD
Z7UMPaaCFIGAlRtppQBZQRJXDdR1Mmt1w1vXcVcM9NWvnclrBaSx13Qw9bBTzcBZ//pXyAh2
E0Up7DcQm1jFAhatgcWAK3IiWcMitqwfiWtfG/uYXxB2Av/4SmeXQVoCtHasgU2tJkDiBNWu
9hitfW0FdMsY2XbAtrdVRm5NwNvFyKMNwfXGcEtQXMWkNiCP/01uNpZLguYm5rkAcSsHJKJd
6eIWBNa1bmmRAtqyepcZr22ueBGzkpaQ4yXnTUZ6mfsZzhKlCfHFhm5Ju97eRlYJbYVufo3B
28b217h6Re6Ar6FeDhzYuQlWAnAXTOEKW/jCGM6whjfM4Q57+MMgJkh5yxviKo0YtCWm0onN
m2IprRgkLXbxi6kR4yjNmMY1ftKNgZFjvTBhJjs+bY/r8mOZBHnCQz5LkWNy5CTvhSUpabKT
8wJllEh5ynep8kmujGUiw4TLXeaJli+w2bKOmQNnJolEyusSarQVyWFGSJorUGZgzHkDd97I
mkHbZjjH+SJ5zkCgBf1l2Zr5vUL+c/9M2opnMndg0BwxNG0R/V9FnwQpaNZspqNsaJe02dI1
ge6J7zxoSF9kz52mdFJAfWkQmFrTnJatR/rcET+z2iCvJkCuLbBrhtiZHLNGdKJvXZJc95oC
x1bIr7PrEGEPm9giMbYJkp2QZa9E0vCF9kikXQJqI8TaD2H2i2urbYtwmwTePsiym13bGZcb
I7umdroN4ubairredX72u+UcAnkXmrvrnvSS952RXr963soOOMA/EmByE1whxzY1wqttbXyz
+OEb8XejaWLxjl8c4y4CM8hjJPKRv6jkJm8RylO+opWzPEUuf/mJYi7zEtG85iO6Oc53zvOe
+/znQA+60If/TvSiG/3oSE+60pfO9KY7/elQj7rUp071qlv96ljPuta3zvWue/3rYA+72MdO
9rKb/exoT7va1872trv97XCPu9znTve62/3ueM+73vfO9777/e+AD7zgB0/4whv+8IhPvOIX
z/jGO/7xkI+85CdP+cpb/vKYz7zmN8/5znv+86APvehHT/rSm/70qE+96lfP+ta7/vWwj73s
Z0/72tv+9rjPve53z/ve+/73wA++8IdP/OIb//jIT77yl8/85jv/+dCPvvSnT/3qW//62M++
9rfP/e57//vgD7/4x0/+8pv//OhPv/rXz/72u//98I+//OdP//rb//74z7/+98////77//8A
GIACOIAEWIAGeIAImIAKuIAM2IAO+IAQGIESOIEUWIEWeIEYmIEauIEc2IEe+IEgGIIiOIIk
WIImeIIomIIquIIs2IIu+IIwGIMyOIM0WIM2eIM4mIOIMXA6GG0T14P4wINAuG1DSBI/WIT1
cIRI+A5KuISxEGj55mb95oTbUGpmNgJNSIWpEHHopoXawGgakGaQloVeeAqYtnG8tmll6Az3
xmaEhoZryAznhoVxyIauNm112AxzKAJkmIehsIdT6IfKAIh3KIjJQIgf0IeGiAnx1m2LiAyN
2IWPaAwGl4iTuAxc+GiXOIiOCIeb+ImgGIqiOIqkWIqmeP+KqJiKqriKrNiKrviKsBiLsjiL
tFiLtniLuJiLuriLvNiLvviLwBiMwjiMxFiMxniMyJiMyriMzNiMzviM0BiN0jiN1FiN1niN
2JiN2riN3NiN3viN4BiO4jiO5FiO5niO6JiO6riO7NiO7viO8BiP8jiP9FiP9niP+JiP+riP
/NiP/viPABmQAjmQBFmQBnmQCJmQCrmQDNmQDvmQEBmREjmRFFmRFnmRGJmRGrmRHNmRHvmR
IBmSIjmSJFmSJnmSKJmSKrmSLNmSLvmSMBmTMjmTNFmTNnmTOJmTOrmTPNmTPvmTQBmUQjmU
RFmURnmUSJmUSrmUTNmUTvmUUBn/lVI5lVRZlVZ5lViZlVq5lVzZlV75lWAZlmI5lmRZlmZ5
lmiZlmq5lmzZlm75lnAZl3I5l3RZl3Z5l3iZl3q5l3zZl375l4AZmII5mIRZmIZ5mIiZmIq5
mIzZmI75mJAZmZI5mZRZmZZ5mZiZmZq5mZzZmZ75maAZmqI5mqRZmqZ5mqiZmqq5mqzZmq75
mrAZm7I5m7RZm7Z5m7iZm7q5m7zZm775m8AZnMI5nMRZnMZ5nMiZnMq5nMzZnM75nNAZndI5
ndRZndZ5ndiZndq5ndzZnd75neAZnuI5nuRZnuZ5nuiZnuq5nuzZnu75nvAZn/I5n/RZn/Z5
n/iZn/q5/5/82Z/++Z8AGqACOqAEWqAGeqAImqAKuqAM2qAO+qAQGqESOqEUWqEWeqEYmqEa
uqEc2qEe+qEgGqIiOqIkWqImeqIomqIquqIs2qIu+qIwGqMyOqM0WqM2eqM4mqM6uqM82qM+
+qNAGqRCOqREWqRGeqRImqRKuqRM2qRO+qRQGqVSOqVUWqVWeqVYmqVauqVc2qVe+qVgGqZi
OqZkWqZmeqZomqZquqZs2qZu+qZwGqdyOqd0Wqd2eqd4mqd6uqd82qd++qeAGqiCOqiEWqiG
eqiImqiKuqiM2qiO+qiQGqmSOqmUWqmWeqmYmqmauqmc2qme+qmgGqqiOqqkWv+qpnqqqJqq
qrqqrNqqrvqqsBqrsjqrtFqrtnqruJqrurqrvNqrvvqrwBqswjqsxFqsxnqsyJqsyrqszNqs
zvqs0Bqt0jqt1Fqt1nqt2Jqt2rqt3Nqt3vqt4Bqu4jqu5Fqu5nqu6Jqu6rqu7Nqu7vqu8Bqv
8jqv9Fqv9nqv+Jqv+rqv/Nqv/vqvABuwAjuwBFuwBnuwCJuwCruwDNuwDvuwEBuxEjuxFFux
FnuxGJuxGruxHNuxHvuxIBuyIjuyJFuyJnuyKJuyKruyLNuyLvuyMBuzMjuzNFuzNnuzOJuz
OruzPNuzPvuzQBu0Qju0RFu0Rnu0SJu0Sru0TNu0Tvv/tFAbtVI7tVRbtVZ7tVibtVq7tVzb
tV77tWAbtmI7tmRbtmZ7tmibtmq7tmzbtm77tnAbt3I7t3Rbt3Z7t3ibt3q7t3zbt377t4Ar
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
ZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuro
o5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quwxirrrLTWauutuOaq
66689urrr8AGK+ywxBZr7LHIJqvssv/MNuvss9BGK+201FZr7bXYZqvtttx26+234IYr7rjk
lmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDD
EEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zz
zjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt
9tlop6322my37fbbcMct99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BH
LvnklFdu+eX/mGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvu
vPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/vjkl2/+
+einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQ
jKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCG
OMyhDnfIwx768IdADKIQh0jEIhrxiEhMohKXyMQmOvGJUIyiFKdIxSpa8YpYzKIW/7fIxS56
8YtgDKMYx0jGMprxjGhMoxrXyMY2uvGNcIyjHOdIxzra8Y54zKMe98jHPvrxj4AMpCAHSchC
GvKQiEykIhfJyEY68pGQjKQkJ0nJSlrykpjMpCY3yclOevKToAylKEdJylKa8pSoTKUqV8nK
VrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJ
zWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrznvjMpz73
yc9++vOfAA2oQAdK0IIa9KAITahCF8rQhjr0oRCNqEQnSv/Rilr0ohjNqEY3ytGOevSjIA2p
SEdK0pKa9KQoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2pTnfK05769KdADapQh0rUohr1qEhN
qlKXytSmOvWpUI2qVKdK1apa9apYzapWt8rVrnr1q2ANq1jHStaymvWsaE2rWtfK1ra69a1w
jatc50rXutr1rnjNq173yte++vWvgA2sYAdL2MIa9rCITaxiF8vYxjr2sZCNrGQnS9nKWvay
mM2sZjfL2c569rOgDa1oR0va0pr2tKhNrWpXy9rWuva1sI2tbGdL29ra9ra4za1ud8vb3vr2
t8ANrnCHS9ziGve4yE2ucpfL3Ob/Ove50I2udKdL3epa97rYza52t8vd7nr3u+ANr3jHS97y
mve86E2vetfL3va6973wja9850vf+tr3vvjNr373y9/++ve/AA6wgAdM4AIb+MAITrCCF8zg
Bjv4wRCOsIQnTOEKW/jCGM6whjfM4Q57+MMgDrGIR0ziEpv4xChOsYpXzOIWu/jFMI6xjGdM
4xrb+MY4zrGOd8zjHvv4x0AOspCHTOQiG/nISE6ykpfM5CY7+clQjrKUp0zlKlv5yljOspa3
zOUue/nLYA6zmMdM5jKb+cxoTrOa18zmNrv5zXCOs5znTOc62/nOeM6znvfM5z77+c+ADrSg
B03oQhv6/9CITrSiF83oRjv60ZCOtKQnTelKW/rSmM60pjfN6U57+tOgDrWoR03qUpv61KhO
tapXzepWu/rVsI61rGdN61rb+ta4zrWud83rXvv618AOtrCHTexiG/vYyE62spfN7GY7+9nQ
jra0p03talv72tjOtra3ze1ue/vb4A63uMdN7nKb+9zoTre6183udrv73fCOt7znTe962/ve
+M63vvfN7377+98AD7jAB07wghv84AhPuMIXzvCGO/zhEI+4xCdO8Ypb/OIYz7jGN87xjnv8
4yAPuchHTvKSm/zkKE+5ylfO8pa7/OUwj7nMZ07zmtv85jjPuc53zvOe+/znQP8PutCHTvSi
G/3oSE+60pfO9KY7/elQj7rUp071qlv96ljPuta3zvWue/3rYA+72MdO9rKb/exoT7va1872
trv97XCPu9znTve62/3ueM+73vfO9777/e+AD7zgB0/4whv+8IhPvOIXz/jGO/7xkI+85CdP
+cpb/vKYz7zmN8/5znv+86APvehHT/rSm/70qE+96lfP+ta7/vWwj73sZ0/72tv+9rjPve53
z/ve+/73wA++8IdP/OIb//jIT77yl8/85jv/+dCPvvSnT/3qW//62M++9rfP/e57//vgD7/4
x0/+8pv//OhPv/rXz/72u//98I+//OdP//rb//74z79n/vfP//77//8AGIAqEQAEKIAG2EkA
kIAEWIDYpoALqG0AsIABAADaJoEJSIHXZoEXiIHUpoEbWG0e+IEdSIAbKILRFoEkWIIXOG0o
OIEqmIDW9oIrKG0SWIMSOG02mIM4mIM12D0JAAAh+QQFkAAGACwDAOgDDAaIBAAD/2i63P4w
ykmrvTjrzbv/YCiOZGmeaKqubOu+cCzPdG3feK7vfO+PhKBwSBQKjsikEvlrOp/QqHRKrVqv
2Kx2y+16v+Awt0gmLs9KsXrNbrvf8Lh8Tq/b7/g8tswnoP8CeoKDhIWGh4iJiouMjY6MfWWA
aI+VlpeYmZqbnJ2en6AmkWSTZ6GnqKmqq6ytrq+wq6NFpUuxt7i5uru8vb6/wA2zZrVJwcfI
ycrLzM3Ozy3DQ0gD1dbVptDa29zd3t/g4YXSRkfX19ni6uvs7e7v8PEY5EHU59i28vr7/P3+
/wA30fOzBF2+gAgTKlzIsKFDHQPPGEzzsKLFixgzakwYsf+gtXQbQ4ocSbKkyVcdlUw0drKl
y5cwY8p8Q6aATZu0POKjOLOnz59AgwpNQeSmUZzlVH48OLSp06dQo74ccrRq0iQrmUjdyrWr
16/xhBwVe/OqvZ0swapdy7at21tkkcYtUE/nAJBv8+rdy7evoCBGiwQmqBStVr+IEytezFgK
4KqQ6xa+y7Sx5cuYM2v+8BjyWMJYl/LcTLq06dOMO3suC/os5dGoY8ueTfup6lESRaetzbu3
798bb0fKbfgI8OPIkyvXJ7wP8de7l0ufTr16sLnD7eK1zr279++d5tLF3tqc7sPg06tfz14P
1dVIzd+7Z7y9/fv4849577nc/Pn/9ekn4IAEFlhDTZ/59985ARro4IMQRrhBSsUEIuGFGGYo
IYXFaOjhhyC2x2EtIZZo4onKjVgKiiy26KJpKk7y4ow01thXjIDYqOOOPG6F4x89BinkkDH9
SAmRSCappEVGbrfkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptw
xinnnHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrppZhmqumm
nHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvs
scgmq+yy/8w26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DG
K++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYc
d+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTR
SCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy33
3HTXbffdeOet99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755f+YZ6755px3
7vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++689+7778AHL/zwxBdv/PHI
J6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrst+/++/DHL//8
9Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKWvCCGMygBjfI
wQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHvrwh0AMohCH
SMQiGvGISEyiEpfIxCY68YlQjKIUp0jFKlrxiljMohb/t8jFLnrxi2AMoxjHSMYymvGMaEyj
GtfIxja68Y1wjKMc50jHOtrxjnjMox73yMc++vGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCM
pCQnSclKWvKSmMykJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKVsIylLGdJy1ra8pa4
zKUud8nLXvryl8AMpjCHScxiGvOYyEymMpfJzGY685nQjKY0p0nNalrzmtjMpja3yc1uevOb
4AynOMdJznKa85zoTKc618nOdrrznfCMpzznSc962vOe+MynPvfJz376858ADahAB0rQghr0
oAhNqEIXytCGOvShEI2oRCdK/9GKWvSiGM2oRjfK0Y569KMgDalIR0rSkpr0pChNqUpXytKW
uvSlMI2pTGdK05ra9KY4zalOd8rTnvr0p0ANqlCHStSiGvWoSE2qUpfK1KY69alQjapUp0rV
qlr1qljNqla3ytWuevWrYA2rWMdK1rKa9axoTata18rWtrr1rXCNq1znSte62vWueM2rXvfK
17769a+ADaxgB0vYwhr2sIhNrGIXy9jGOvaxkI2sZCdL2cpa9rKYzaxmN8vZznr2s6ANrWhH
S9rSmva0qE2talfL2ta69rWwja1sZ0vb2tr2trjNrW53y9ve+va3wA2ucIdL3OIa97jITa5y
l8vc5v8697nQja50p0vd6lr3utjNrna3y93ueve74A2veMdL3vKa97zoTa9618ve9rr3vfCN
r3znS9/62ve++M2vfvfL3/76978ADrCAB0zgAhv4wAhOsIIXzOAGO/jBEI6whCdM4Qpb+MIY
zrCGN8zhDnv4wyAOsYhHTOISm/jEKE6xilfM4ha7+MUwjrGMZ0zjGtv4xjjOsY53zOMe+/jH
QA6ykIdM5CIb+chITrKSl8zkJjv5yVCOspSnTOUqW/nKWM6ylrfM5S57+ctgDrOYx0zmMpv5
zGhOs5rXzOY2u/nNcI6znOdM5zrb+c54zrOe98znPvv5z4AOtKAHTehCG/r/0IhOtKIXzehG
O/rRkI60pCdN6Upb+tKYzrSmN83pTnv606AOtahHTepSm/rUqE61qlfN6la7+tWwjrWsZ03r
Wtv61rjOta53zete+/rXwA62sIdN7GIb+9jITrayl83sZjv72dCOtrSnTe1qW/va2M62trfN
7W57+9vgDre4x03ucpv73OhOt7rXze52u/vd8I63vOdN73rb+974zre+983vfvv73wAPuMAH
TvCCG/zgCE+4whfO8IY7/OEQj7jEJ07xilv84hjPuMY3zvGOe/zjIA+5yEdO8pKb/OQoT7nK
V87ylrv85TCPucxnTvOa2/zmOM+5znfO8577/OdA/w+60IdO9KIb/ehIT7rSl870pjv96VCP
utSnTvWqW/3qWM+61rfO9a57/etgD7vYx072spv97GhPu9rXzva2u/3tcI+73OdO97rb/e54
z7ve9873vvv974APvOAHT/jCG/7wiE+84hfP+MY7/vGQj7zkJ0/5ylv+8pjPvOY3z/nOe/7z
oA+96EdP+tKb/vSoT73qV8/61rv+9bCPvexnT/va2/72uM+97nfP+977/vfAD77wh0/84hv/
+MhPvvKXz/zmO//50I++9KdP/epb//rYz772t8/97nv/++APv/jHT/7ym//86E+/+tfP/va7
//3wj7/850//+tv//vjPv//+98///vv//wAYgAI4gARYgAZ4gAiYgAq4gAzYgA74gBAYgRI4
gRRYgRZ4gRiYgRq4gRzYgR74gSAYgiI4giRYgiZ4gih4VwCwgiuoAAEwcCzIggwAAAIXgzQ4
gwEXgwYQADz4ggbQgv8mgz3Ygz94g/7GgkO4gy8IhEdIg0SohEUYcEnogktohP72hC6oAFaI
cFsIgwsHhD5YcEIYhjCIhDwohmNIhgCng0qohkHIhFi4hkzYhmVohXHYhFt4h/1mgzKohV2o
b3zIhHPIb4FohIOYgoiYiIq4iIzYiI64ARUSiZI4iZRYiZZ4iZiYiZq4iZn4X5z4iaAYiqI4
iqT/WIqb6ImmmIqquIqs2IquiB779YqyOIu0WIu2CIv6dYu6uIu82IuViIq+GIzCOIy7CIzE
eIzImIykaIzK2IzO+IyRyIzQOI3USI3SWI3YmI3EeI3a2I3eaIvc+I3iOI6qGI7keI7oyInm
mI7s2I6SuI7uGI/y6CT4NY/2eI9A4l/4uI/8CI/8+I/i6I8AOZDZKJAEeZDQaJAIuZDJqJAM
+ZDC6JAQOZHFqI8UeZHNKJEYuZGuqJEc+ZGp6JEgOZKiKJIkeZKnaJEouZIdqZIs+ZIh6ZIw
OZMlKZM0eZMp2V84uZPqaJM8+ZPv6JNAOZQrIpREeZT0eF9IuZQyYpRMHLmUJvmULxmVUlmV
VnmVWJmVWrmVXNmVXnkGCQAAIfkEBZgABwAsAwDHA1cJpwQABP/wyEmrvTjrzbv/YCiOZGme
aKqubOu+cCzPdG3feK7vfO//wKBEIBAaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+CweEwum888
InrNbrvf8Lh8Tq/b7/i8fs/v+/+AgVxqgoWGh4iJiouMjY6PkJGSk5SVlpcmRZibnJ2en6Ch
oqOkpaanqKmqT5qrrq+wsbKztLW2t7i5urtyrby/wMHCw8TFxsfIycrLOr7Mz9DR0tPU1dbX
2NnSzhZE3t/eIdza5OXm5+jp6uvs7e4x4xXg3yPx7/f4+fr7/P3+/wDt2NMwkGDAgwgTKlzI
sKHDh/ycFRxXcAjEixgzatzIsaPHj37/fFWMNxKkyZMoU6pcybKlS3kT5sm0V/KlzZs4c+rc
ybMnrYoUgGYQ6rOo0aNIkypdytQJ0QNPuzWdSrWq1atYszZ9GhWm1q9gw4odS7ZsOq6ZzKpd
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
A2OVWDmW+geWBoIxZJmWarmWbNmWbvmWcBmXcjmXdFmXdnmXeJmXermXfNmXfvmXgBmYgjmY
hFmYhnmYiJmYirmYjNmYjvmYkBmZkjmZlFmZlnmZmJmZmrmZnNmZnvmZoBmaojmapFmapnma
qJmaqrmarNmarvmasBmbsjmbtFmbtnmbuJmburmbvNmbvvmbwBmcwjmcxFmcxnmcyJmcyrmc
zNmczvmc0Bmd0jmd1Fmd1nmd2Jmd2rmd3Nmd3vmd4Bme4jme5Fme5nme6Jme6rme7Nme7vme
8Bmf8jmf9Fmf9nmf+Jmf+rn/n/zZn/75nwAaoAI6oARaoAZ6oAiaoAq6oAzaoA76oBAaoRI6
oRRaoRZ6oRiaoRq6oRzaoR76oSAaoiI6oiRaoiZ6oiiaoiq6oizaoi76ojAaozI6ozRaozZ6
oziaozq6ozzaoz76o0AapEI6pERapEZ6pEiapEq6pEzapE76pFAapVI6pVRapVZ6pViapVq6
pVzapV76pWAapmI6pmRapmZ6pmiapmq6pmzapm76pnAap3I6p3Rap3Z6p3iap3q6p3zap376
p4AaqII6qIRaqIZ6qIiaqIq6qIzaqI76qJAaqZI6qZRaqZZ6qZiaqZq6qZzaqZ76qaAaqqI6
qqRa/6qmeqqomqqquqqs2qqu+qqwGquyOqu0Wqu2equ4mqu6uqu82qu++qvAGqzCOqzEWqzG
eqzImqzKuqzM2qzO+qzQGq3SOq3UWq3Weq3Ymq3auq3c2q3e+q3gGq7iOq7kWq7meq7omq7q
uq7s2q7u+q7wGq/yOq/0Wq/2eq/4mq/6uq/82q/++q8AG7ACO7AEW7AGe7AIm7AKu7AM27AO
+7AQG7ESO7EUW7EWe7EYm7Eau7Ec27Ee+7EgG7IiO7IkW7Ime7Iom7Iqu7Is27Iu+7IwG7My
O7M0W7M2e7M4m7M6u7M827M++7NAG7RCO7REW7RGe7RIm7RKu7RM27RO+/+0UBu1Uju1VFu1
Vnu1WJu1Wru1XNu1Xvu1YBu2Yju2ZFu2Znu2aJu2aru2bNu2bvu2cBu3cju3dFu3dnu3eJu3
eru3fNu3fvu3gBu4gju4hFu4hnu4iJu4iru4jNu4jvu4kBu5kju5lFu5lnu5mJu5mru5nNu5
nvu5oBu6oju6pFu6pnu6qJu6qru6rNu6rvu6sBu7sju7tFu7tnu7uJu7uru7vNu7vvu7wBu8
wju8xFu8xnu8yJu8yru8zJuthNC80DsLzxu91OsK01u92LsKnJi93OsI29u94JsI3xu+5CsI
41u+6CsFwBcg4pC+7ksbEjkT9fC+9FsGqgEY9Zv/v2LgiRtAER1wvvobwEEoOBKJAbYhwAh8
BbWHVwZcwAn8wFXwF/MLwRTMeiAQGgBcwRrsAhIsAhm8wSCcAh3cviFcwkIwwhdswiochCls
GSv8ws1AwhMMwzRcA5WBvzWcwzLwGR/wwTr8w14hw/0LxEQMA7XhwEWcxEq8xEzcxE78xFAc
xVI8xVRcxVZ8xVicxVq8xVzcxV78xWAcxmI8xmRcxmZ8xmicxmq8xmzcxm78xnAcx3I8x3Rc
x3Z8x3icx3q8x3zcx378x4AcyII8yIRcyIZ8yIicyIq8yIzcyI78yJAcyZI8yZRcyZZ8yZic
yZq8yZzcyZ78yaAcyqI8/8qkXMqmfMqonMqqvMqs3Mqu/MqwHMuyPMu0XMu2fMu4nMu6vMu8
3Mu+/MvAHMzCPMzEXMzGfMzInMzKvMzM3MzO/MzQHM3SPM3UXM3WfM3YnM3avM3c3M3e/M3g
HM7iPM7kXM7mfM7onM7qvM7s3M7u/M7wHM/yPM/0XM/2fM/4nM/6vM/83M/+/M8AHdACPdAE
XdAGfdAIndAKvdAM3dAO/dAQHdESPdEUXdEWfdEYndEavdEc3dEe/dEgHdIiPdIkXdImfdIo
ndIqvdIs3dIu/dIwHdMyPdM0XdM2fdM4ndM6vdM83dM+/dNAHdRCPdREXdRGfdRIndRKvdRM
3f/UTv3UUB3VUj3VVF3VVn3VWJ3VWr3VXN3VXv3VYB3WYj3WZF3WZn3WaJ3War3WbN3Wbv3W
cB3Xcj3XdF3Xdn3XeJ3Xer3XfN3Xfv3XgB3Ygj3YhF3Yhn3YiJ3Yir3YjN3Yjv3YkB3Zkj3Z
lF3Zln3ZmJ3Zmr3ZnN3Znv3ZoB3aoj3apF3apn3aqJ3aqr3arN3arv3asB3bsj3btF3btn3b
uJ3bur3bvN3bvv3bwB3cwj3cxF3cxn3cyJ3cyr3czN3czv3c0B3d0j3d1F3d1n3d2J3d2r3d
3N3d3v3d4B3e4j3e5F3e5n3e6J3e6r3e7N3e7v3e8B3f8j3f9F3f9n3/3/id3/q93/zd3/79
3wAe4AI+4ARe4AZ+4Aie4Aq+4Aze4A7+4BAe4RI+4RRe4RZ+4Rie4Rq+4Rze4R7+4SAe4iI+
4iRe4iZ+4iie4iq+4ize4i7+4jAe4zI+4zRe4zZ+4zie4zq+4zze4z7+40Ae5EI+5ERe5EZ+
5Eie5Eq+5Eze5E7+5FAe5VI+5VRe5VZ+5Vie5Vq+5Vze5V7+5WAe5mI+5mRe5mZ+5mie5mq+
5mze5m7+5nAe53I+53Re53Z+53ie53q+53ze537+54Ae6II+6IRe6IZ+6Iie6Iq+6Ize6I7+
6JAe6ZI+6ZRe6ZZ+6Zie6Zq+6Zze6Z7+6aAe/+qiPuqkXuqmfuqonuqqvuqs3uqu/uqwHuuy
Puu0Xuu2fuu4nuu6vuu83uu+/uvAHuzCPuzEXuzGfuzInuzKvuzM3uzO/uzQHu3SPu3UXu3W
fu3Ynu3avu3c3u3e/u3gHu7iPu7kXu7mfu7onu7qvu7s3u7u/u7wHu/yPu/0Xu/2fu/4nu/6
vu/83u/+/u8AH/ACP/AEX/AGf/AIn/AKv/AM3/AO//AQH/ESP/EUX/EWf/EYn/Eav/Ec3/Ee
//EgH/IiP/IkX/Imf/Ion/Iqv/Is3/Iu//IwH/MyP/M0X/M2f/M4n/M6v/M83/M+//NAH/RC
P/REX/RGf/RIn/RKv//0TN/0Tv/0UB/1Uj/1VF/1Vn/1WJ/1Wr/1XN/1Xv/1YB/2Yj/2ZF/2
Zn/2aJ/2ar/2bN/2bv/2cB/3cj/3dF/3dn/3eJ/3er/3fN/3fv/3gB/4gj/4hF/4hn/4iJ/4
ir/4jN/4jv/4kB/5kj/5lF/5ln/5mJ/5mr/5nN/5nv/5oB/6oj/6pF/6pn/6qJ/6qr/6rN/6
rv/6sB/7sj/7tF/7tn/7uJ/7ur/7vN/7vv/7wB/8wj/8xF/8xn/8yJ/8yr/8zN/8zv/80B/9
0j/91F/91n/92J/92r/93N/93v/94B/+4j/+5F/+5n/+6J/+6r/+7N/+7v/+8B//8j//9F//
//Z///if//q///zf//7/////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////b+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADJEmIhFmIhFmIhFmIhBgFNNlDtxVlv3v0HQ3EkS/NEU3VlW/eFY3mm
a/vGc33ne/8HBoVDYtF4RCaVS2bT+YRGpVNqTHDFZrVbbtf7BYfFY+zEfEan1Wt22/2Go6tz
et1+x+f1e37f/wcMFBwkLDQ8RExUXGTsIXuEjJScLIuzvMTM1JRo7PT8BA0VHSUtNT1FTVVd
ZW11fYX9oJylrY3cxM3VxYzt9f0FDhYeJv8uNj5GTlZeZia1fYaOvtqlrrbmbM7W3ubu9v4G
DxcfJy83P5VOV7+9bne/PI+Xn6evt7/Hz9dfYein6Wfwz98MgAIDEhy4T946hg29vIMYcY1C
ihUtXsSYUeNGjhgKcviII2SMkTBKvjjpImWLladadhThUOZMiTVtNgmQM0POnAd8/gQaVOhQ
okWNHkWaVOlSpk2dPoUaVepUqlWtXsWaVetWrl29fgUbVuxYsmXNnkWbVu1atm3dvoUbV67Y
Gy0BJqxxFyHeu331hvhbwS/eEYE9vuxgePDBEooXG2bBOApinDwtX94K4rLODzx9zATN0OZo
iDA8c9gcYMNlDDz/576GHVv2bNq1bd/GnVv3bt69ff8GHlz4cOJC6xK+0Fck5ROOHyMHOfJ5
45OLqfN9fF3yc+YioDfpriT1Zq2dx3PWkJpHaPbSSL+/9sLy6vOqL3g+DcBycf79/f8HMEAB
BySwQAMPRDBBBRes7TjJMggvBchUKom77yCscDrvqstuQ8K4KyxDEFm6cIkIkajPNaw0q48+
9XRoL0Zb4KNxF/nya63F+3TKT0UGfwQySCGHJLJII49EMkkllyzSwSImJPHDEgET8bAHPYDM
uSujk/LBCLOcMkoqTozCx6pYRK+C+XZCD8cbZISTkhrn3MQF1thMUz8c8eNsPyb/BDRQ/0EH
JbRQQw9FNFFFs3JyCCgj43DLEJGLlEpKL5UUQ0w1tfRKMk34NIhQK+vJqhDcVDNPPe2zAFUa
4oQVEjpnhYcFM4VydU8e+yx1UV9/BTZYYYcltlhjjxW2USEe5adSCZ1NLkzBqtSAuQmhxRJb
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
JMESNMETRMEUVMEVZMEWdMEXhMEYlMEZpMEatMEbxMEc1MEd5MEe9MEfBMIgFMIhJMIiNMIj
RMIkVMIlZMImdMInhMIolMIppMIqtMIrxMJ9MYAt5EIu9MBZ6MIw/MIxJMMyNMP/M0TDNFTD
NWTDNnTDN4TDOJTDOaTDOrTDO8TDPNTDWgjDLoyTPjyXPvRCyBnELijEPSw/MbQFQByDQ0TE
R4TESJTESaTESrTES8TETNTETeTETvREIRPELfxDRVwHAxCDUDRFPkRFR/wCVsQCUgyDVPzE
mQjFRYTFVvTDWdTFXeTFXvTFXwTGYBTGYSTGYjTGY2wIV4QTRlQHUYwEZYSEVYTGLYDGW/QC
Z0RGSkBFVczFWOzGbATHcBTHcSTHcjTHc0THdFTHdZzDaVxGbJQGdzREeNRGaZRFb7xHaqTH
a9xHdryCbpRHMghIAbBGfzTIg0TIhFTIhWTIhnTIh4RI//obSPaYyGjsR3y0xXychIoEA44c
R498hIEsyIgkyZI0yZNEyZRUyZVkyZZERJB0CJjEyGe8SIvUSEmQSX28SX/MyZnEx5p0yaAU
yqEkyqI0yqNEyqQsyZ5sRqAEQ6ecx520yYyEBqY0RqvkR6nUgpFUyq70yq8Ey7AUy7Eky7Lc
OY/8xqjExmqEyn9Myyywx0ZsS58UyFx0RWbkgrh8BkGMyrwESq6Ey7f0S6jkS1wETLfUSoLs
x2kUScE0y8eEzMiUzMmkzMq0zJWsyFocTEBky8RUzMLcSmmUS888xbl8Rc5cTMDUS1oQzdC8
SWXcRrXkSs3USdoMzNi8Tdw8zf/X/EvTxMrLBM7gFM7hJM7iNM7jTETf1M3dXMWs7MjmdM3l
dE5uDMnWjM7ehE7WtE7EHMzNxMvc/E7mDM/PlM7VRMzyTE2tnMjfRM72dM/3hM/4lM/5PM7G
hEdW/EbVdEpHZEzTvM2MtM3/FE/DHM145M8D5U2NzE/8PMS3XFAFRdB8TMsJ3U7u1EkCLVD6
1NAN5dAO9dAPBdGWtM8LFdAS7cuslNDOxEn/RFHQNNHzxFC6pEoS3c3udE0ardEb1dEXvUt6
7FGpdMcfjVEZDdEiNdIjRdIkVdIlhcSAFNIX/cznVM/0nM6p5MYAtdAdtVEi1U7SzFIeVU4v
jVIcHdP/0hRTKNXSHD1RM2XSNnXTN4XTOJXTOY0VJzXPMlXTNd1SNP3SujzTKuXS/vRS9oTR
QPXRMPXT7GTO0fzTIKVSQJVSOpXUSaXUSrXUS1VSO61QBk1MQd3TNM3QLvXTTwVVPd1LFy1V
BB1VRkXP8RRPTY1UMi3Va8TUWrXVW8XVXNVVr9RURSXP3IxVU+1TPg3WpxTTJxXWZL3SgkTW
YYVUw/TV85xNLJ3VPLXWas3LXdXWbeXWbvXWb81GWE1UVyVWPL3Wc+VSmjzWR1VWWa1KVDXX
Pl1PRFVX/STXeE1V7ATXfeXXfvXXfwXYJm3LzJROdz1XFVXXGWVTg3VWUm3K/31sVnxtV4Zl
1Ip91nyd0j8N2I3l2I712I8FWYocWBaF14mN2HK92IQN1XIdUdBQVTKd13XVWIdtV0dN0CEN
2ZzV2Z3l2Z71WZRFV5ot1tqMzpQd2o2kV2A1Wmxd0ZuFUgeF2KiF0KldWWs92aAdVsdsWKH9
2a712q8F27DtUPu8R6idWZvF1gYlTask2LLVWonFURYlWqVd1AEt2rql21+920LFW771W73l
WsAlz4xlVbE13MNF3MRVXMiMWWotWHucWmoFT3Ht0mi9U8iF1rc108etUGkdyWj13Fu808Et
WawNXdEdXbtd3NVl3dZ13ddlyLZ11U1N3YK9Tso1VsvQ5csItd3TXdbxrEXYlFzS7Uzg1V3Q
NV3iNUXeHd7DhN3nhd7old7pxUS01NrLTV1pHddBlVvvlFxFZN7SfdV3tddBFNSR7dVOvVfi
Tdfbldfs3Vrqld/5pd/6td8y7N3qTNCZbY/8vd//BeAAFuABJuDfZduLJNSHXd8CZuAGduAH
huDX9d+qTd5AHN4IxuAM1uAN5mAJ5lT+7eAQFuERJuESdmD4NeEUVuEVZuEWdl0UduEYluEZ
puEa5tcLtuEc1uEd5uEeHssIAAAh+QQFLgAIACwDAMcD7AapBAAE/xDJSau9OOvNu/9gKI5k
aZ5oqq5s675wLM90bd94ru987//AoCSREBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/WCJ4TC6b
z+i0es1uu9/wuHxOr+PE9rx+z+/7/4CBgoOEhYaHfEWIi4yNjo+QkZKTlJWWl3aKmJucnZ6f
oKGio6SlpnenqaqrrK2ur7CxsrMpmrS3uLm6u7y9vr/AthcJAsXGx8IcycDMzc7P0NHS09RO
yxXEx8XXG9zV3+Dh4uPk5eak3hnp6uft7u/w8fLz9FVE93jsFusI/PX/AAMKHEiw4DR8+fTt
U2awocOHECNKnAgJobaLArit80exo8ePIP9DihyZg2M/EyZJqlzJsqXLlwRNpsQGs6bNmzhz
6mQmE+XOn0CDCh1KdFHPEjOLKl3KtKnTpz+OkkgKtarVq1izXpU6gqrWr2DDih3rMaVXr2TT
ql3Lti01s0jdyp1Lt65dXTM5or3Lt6/fv4D9JPW3N7Dhw4gTK7YXt9vix5AjS55MubLly5gz
a97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48hp
EFjOvLlz5hijG0tOvbr16zmea3cuXTr27+DDiwexvTyB7tHHq1/PHrv57egxtp9Pv77v99rj
X7TPv79/1/g9p5//Nv8VaOCBngXI3YDTIejggxAqpmBzDF40wAARZqjhhmtNCF2Fx1zI4Ygk
lviUh8uBGCKGJrbo4os3oXieihbCaOONOFIkI4015ujjj0DSsyOPIQZp5JFIgjMkkcWwmOST
UEapy3IFVFkllVZemaKFF16on5NShinmmKZgaSUBWWa5pTFdtulld2CSKeecdE5iZpp4rimA
m3zCWeefgAZaCHN4FnDnmm6y2aWfgjbq6KNyEJpmc2fOuOeiK76JUZyQdurpp1xIWil8l2qq
qKnacArqqqy2uoSohprXJJ+0Sqeqq7jmqusNsL43K62JRnfrrsQWa6wJvcpaKrCYbnrs/7PQ
RutBsuX9OgCNw0qr7ba7Uktqm9hyK+643R6qLLgqZkvuuuz+6W1+1qbb7rz0AvqugNZee6q+
ztbr779S3rtgvrWyCfDBCD8pMIWZFmxwwhBHjOPCH6YabKoSZ6xxiUsyuPHHIGfY8YAhl2zy
fyPrd/LKLLOXcnwtxyzzdS+jN/PNOBNXc3c59+zzbjt79/PQRMcWdHpFJ600akfLt/TTUEct
9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+3223DHLffcdNdt991456333nz3
7fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnlmGeu+f/mnHfu+eeghy766KSXbvrp
qKeu+uqst+7667DHLvvstNdu++2456777rz37vvvwAcv/PDEF2/88cgnr/zyzDfv/PPQRy/9
9NRXb/312Gev/fbcd+/99+CHL/745Jdv/vnop6/++uy37/778Mcv//z012///fjnr//+/Pfv
//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa8IIYzKAGN8jBDnrwgyAMoQhHSMIS
mvCEKEyhClfIwha68IUwjKEMZ0jDGtrwhjjMoQ53yMMe+vCHQAyiEIdIxCIa8YhITKISl8jE
JjrxiVCMohSnSMUqWvGKWMyiFrfIxS7/evGLYAyjGMdIxjKa8YxoTKMa18jGNrrxjXCMoxzn
SMc62vGOeMyjHvfIxz768Y+ADKQgB0nIQhrykIhMpCIXychGOvKRkIykJCdJyUpa8pKYzKQm
N8nJTnryk6AMpShHScpSmvKUqEylKlfJyla68pWwjKUsZ0nLWtrylrjMpS53ycte+vKXwAym
MIdJzGIa85jITKYyl8nMZjrzmdCMpjSnSc1qWvOa2MymNrfJzW5685vgDKc4x0nOcprznOhM
pzrXyc52uvOd8IynPOdJz3ra8574zKc+98nPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQ
jahEJ0rRilr0/6IYzahGN8rRjnr0oyANqUhHStKSmvSkKE2pSlfK0pa69KUwjalMZ0rTmtr0
pjjNqU53ytOe+vSnQA2qUIdK1KIqTURGDSRSk/rHpTJVqU8FpLqiSsepUlWOVr3qEdXFr359
IKtaLeJUu/qwEIA1rEM86wTUula0SpFWG1CVVdnq1h/yiQO3GmtdoXgxW2VAr3t14lnp2tbA
NnGwJiCsYXOI2BIodrE3bCwJHgvZGkp2BJSt7AwvK4LMajaGalWsZz/7wtA6lrRb7exXUbtE
umZ1tKyFoWjxGtva2va2uM2tbnfL29769rfADa5wh0vc4hr3uMhNrnKXy9zmOve50P+NrnSn
S93qWve62M2udrfL3e5697vgDa94x0ve8pr3vOhNr3rXy972uve98I2vfOdL3/ra9774za9+
98vf/vr3vwAOsIAHTOACG/jACE6wghfM4AY7+MEQjrCEJ0zhClv4whjOsIY3zOEOe/jDIA6x
iEdM4hKb+MQoTrGKV8ziFrv4xTCOsYxnTOMa2/jGOM6xjnfM4x77+MdADrKQh0zkIhv5yEhO
spKXzOQmO/nJUI6ylKdM5Spb+cpYzrKWt8zlLnv5y2AOs5jHTOYym/nMaE6zmtfM5ja7+c1w
jrOc50znOtv5znjOs573zOc++/nPgA60oAdN6EIb+tCITrT/ohfN6EY7+tGQjrSkJ03pSlv6
0pjOtKY3zelOe/rToA61qEdN6lKb+tSoTrWqV83qVrv61bCOtaxnTeta2/rWuM61rnfN6177
+tfADrawh03sYhv72MhOtrKXzexmO/vZ0I62tKdN7Wpb+9rYzra2t83tbnv72+AOt7jHTe5y
m/vc6E63utfN7na7+93wjre8503vetv73vjOt773ze9++/vfAA+4wAdO8IIb/OAIT7jCF87w
hjv84RCPuMQnTvGKW/ziGM+4xjfO8Y57/OMgD7nIR07ykpv85ChPucpXzvKWu/zlMI+5zGdO
85rb/OY4z7nOd87znvv850APutCH/070ohv96EhPutKXzvSmO/3pUI+61KdO9apb/epYz7rW
t871rnv962APu9jHTvaym/3saE+72tfO9ra7/e1wj7vc5073utv97njPu973zve++/3vgA+8
4AdP+MIb/vCIT7ziF8/4xjv+8ZCPvOQnT/nKW/7ymM+85jfP+c57/vOgD73oR0/60pv+9KhP
vepXz/rWu/71sI+97GdP+9rb/va4z73ud8/73vv+98APvvCHT/ziG//4yE++8pfP/OY7//nQ
j770p0/96lv/+tjPvva3z/3ue//74A+/+MdP/vKb//zoT7/618/+9rv//fCPv/znT//62//+
+M+//vfP///++///ABiAAjiABFiABniACJiACriADNiADviAEBiBEjiBFFiBFniBGJiBGriB
HNiBHviBIBiCIjiCJFiCJniCKJiCKriCLNiCLviCMBiDMjiDNFiDNniDOJiDOriDPNiDPviD
QBiEQjiERFiERniESJiESriETNiETviEUBiFUjiFVFiFVniFWJiFWriFXNiFXviFYBiGYjiG
ZFiGZniGaJiGariGbNiGbviGcBiHcjiHdFiHdniHeJiHeriHfNiHfviHgBiIgjiIhFiIhniI
iJiIiriIjNiIjviIkBiJkjiJlFiJlniJmJiJmriJnNiJnviJoBiKojiKpFiKpnj/iqiYiqq4
iqzYiq74irAYi7I4i7RYi7Z4i7iYi7q4i7zYi774i8AYjMI4jMRYjMZ4jMiYjMq4jMzYjM74
jNAYjdI4jdRYjdZ4jdiYjdq4jdzYjd74jeAYjuI4juRYjuZ4juiYjuq4juzYju74jvAYj/I4
j/RYj/Z4j/iYj/q4j/zYj/74jwAZkAI5kARZkAZ5kAiZkAq5kAzZkA75kBAZkRI5kRRZkRZ5
kRiZkRq5kRzZkR75kSAZkiI5kiRZkiZ5kiiZkiq5kizZki75kjAZkzI5kzRZkzZ5kziZkzq5
kzzZkz75k0AZlEI5lERZlEZ5lEiZlEq5lEzZlE75lFAZ/5VSOZVUWZVWeZVYmZVauZVc2ZVe
+ZVgGZZiOZZkWZZmeZZomZZquZZs2ZZu+ZZwGZdyOZd0WZd2eZd4mZd6uZd82Zd+6UYBEJiB
uYqCWZiDeYqGmZiIGZgA0JiNKZimKJiOOZmQSYqSOZmPeZiRWJl/2ZkX55iFuQGO2YmZyZiY
WZqYGQCbCACFeZqgmZiaiYmt6ZqvqZiZOJu0SZmheZuXmZuj6Ym46Zu0KZmV2JvCOZyMOYms
aZrHOZyXuJwB0Jy5SZyWKJ2uGZuUCJu22QEAUJzaGZy12ZqW+J3gWZrJ6ZnomZ7quZ7s2Z7u
aV4HEJ/yOZ/0WZ/2eZ/4mZ/6uf+f/Nmf/vmfABqgAjqgBFqgAMokCJqgCrqgDNqgDvqgEBqh
EjqhFFqhFnqhGJqhGrqhHNqhHvqhIBqiIjqiJFqiJnqiKJqiKrqiTGKgLvqiMBqjMjqjNFqj
McqiOJqjOrqjPNqjPvqjQBqkQjqkRFqkRnqkSJqkSrqkJmqjTvqkUBqlUjqlL8qkVnqlWJql
WrqlXNqlXvqlYBqmYjqmZFqmF0GlaJqmarqmbEqgZvqmcBqncjqndFqndnqneJqnerqnTdqm
fvqngBqoT8qnhFqohnqoiJqoirqojNqojlqnghqpkjqplJqfj3qpmJqpmrqpnNqpnvqpoDqm
lTqqpFr/qmwaqqiaqqq6qqzaqq76qrCaqGlqALRaq6bqp7aqn7Waq7c6oLyKn7EarMI6rMRa
rMZ6rMiarCAyq7tqAL1aoM0arbR6n82qq9Uao9I6rTbqrPn5q/eprOAaruI6ruRaruZ6rkzK
rLv6rASarddan+9KrfHqou6qrTJqr/LKrZaKrvzar/76rwAbsAIbsGzqrezqn/VqsPKpsPl6
rwnrsPrasPo5sBRbsRZ7sRibsRp7pwWLrweLsB67rSELrSHLsL46svNpsvK5sSzbsi77sjAb
szK7oR0bsR/bnyqLrSh7sjYbnzn7nzn7szM7tERbtEZ7tEhLsTV7swD6sy/q/7Qg27MHALX8
GbQ7u7JJm7Vau7Vc27Ve66gLm6vzap/rWrVXy7Twerb0Ga1RG7VS67Mjq7DZmq/umrbcOq9f
m7d6u7d827d+a6RhO63Sip9za61vi7Zkq7YpO7aEq7iFu7ZxW7L1ard1C7nO+rh/m7mau7mc
27meq6CBO7mUy7bdqrg827YQC7SMK7Gl+7iBm7g9+7CWW7mLK7oH8Lm4m7u6u7u8u7W1a69l
+7u1a7gi67Sry7OuC7uo27j4arByK7mxu7NW+6tl27vWe73Ym73aa67CO7yWa7etW7yOG7xP
a7usu5/TC77eu75me7jTG73cur3yO7/0W7/2i6nsG/++6nu+EDu+VNu+ybu/6Hu1z2uzCXu4
ysu/Avy6t3u/DvzAEBzBEtyl+cu85rvAqYuzpru8qovA32vBtAu3IQy7pJvAzJvAE5zCKrzC
LNzCfSrCGiy7Coy4MzzAHlzBvzvCIzy6JYzBH/zBLhzEQjzERFzEy8rANnzBP0zD+tu0G6yy
B2zAGzy1MuzDOJyrRpzFWrzFXBzBOGzCTnzDTPy/SGzDTWzGHAzDNVzGDNzFbvzGcBzHnPvF
VozGTHzGaYzHS0y8MQzGe+zDWCzHgjzIhFzIMkvHf9zHd6zH7ZvHiJzIM2yy6au+hlzJlnzJ
mHyuj7zJfpzBjezJHezInEz/xWKsxt3byYkcyJm8yqzcyq6MqqNMyhFLvnVsoMebw6Asyqh8
yrIMySSMy+frsQUcn69czMZ8zMhMqLEsy4ObwwHcrrRMt6WsyEmswwdMws3Mxoa7w84szJEb
v8kczuI8zuS8pcvMzNEcxTprvNFMsqWszt3cw/EMvx1crVCczabsveW8z/zcz/6so+cswigL
zzBKtWRsx9tszVU8umsMwvmMzfRMyf880RRd0RZdoYuc0RoNqBfd0R790SAdHxs90iRNpSF9
0iid0hNd0izd0jSq0jAd0zL9yi5d0zbtpjOd0zq903B80z790/vJ00I91ETdwkB91EiNtUW9
1EzdKNTam9RQ/dNOPdVUXdVzHNVY7dJWvdVc3dVam9VgXdJePdZkXdYsGwEAIfkEBVEABAAs
AwDHA+wGqQQAA/9Iutz+MMpJq7046827/2AojmRpnmiqrmzrvnAsz3Rt33iuCILu/8CgcEgs
Go/IpHLJbDqf0Kh0Sq1ar1Aedsvter/gsHhMLpvP6LR6zW7DtO64fE6v2+/4vH7P7/v/dD2A
g4SFhoeIiYqLjI2Oj26CkJOUlZaXmJmam5ydnm+foaKjpKWmp6ipqqshkqyvsLGys7S1tre4
rg+6DbwTvrjBwsPExcbHyMlFwAy+zBLPytLT1NXW19jZm9EQ3N3a4OHi4+Tl5udNutHOFd7o
7/Dx8vP09ciu3MD59vz9/v8AAwpEJGnft18DEypcyLChw4dC3O3wIBGixYsYM2rcWK//YkUH
HzmKHEmypMmTpjxSRMmypcuXMGMOUtkhpMybOHPq3MnzBk0ONnsKHUq0qFGiPzcEPcq0qdOn
UBV+XLo0qtWrWLNqTTa15tavYMOKHSsrpMSqZNOqXcu2rR2b7tC6nUu3rt276bwixMu3r9+/
gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevX
sGPLnk279goeuHPrzm27t+/fwI3sHq47uPHjyJOrIM5crvLn0KPXbk5cuvXr2I9TH569u/fv
rbfvBk++vPnO4oufX8++PeP0vIE6d0+/vv2X8HHXnH+/v////xblB4dS/AFo4IEI2iOgcwUm
6OCDEF6zYCsRVmjhhehMCEKDGHbo4YelaPgBhyCWaOKJk+A2wIoD8MDiivH1kgGJKNZo441+
qMiiAC/uOOBEGtCI45BEFrmGjj0m+WNQQhrp5JNQYpFbj0i2WNAu7USp5ZZcHlmlbj4uoA8F
TXZp5plo0jAljM0BieVeacYp55xHrGklc24qReeefPZpg53U5Rmkn4QWaqgJgLZJQFVlHuro
o1smiueiK0Fq6aWYLopkoJTqlemnoPIpaXWdAhXqqaiiOSp3gmLQaKqwxlrfquO1esGrsuaq
K3i0qmfrQbsGK+yHvcb4K0jDJqtshP/F6ocsnMtGK+19Ik5r7bXMCojtttweWG234Ia73rfi
lmsuduSeq+662mnL7rvw/pZuvPTWq9q89uarL2j47uvvvwAHLPDABBds8MEIJ6zwwgw37PDD
EEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zz
zjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt
9tlop6322my37fbbcMct99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BH
LvnklFdu+eX/mGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvu
vPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/vjkl2/+
+einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQ
jKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCG
OMyhDnfIwx768IdADKIQh0jEIhrxiEhMohKXyMQmOvGJUIyiFKdIxSpa8YpYzKIW/7fIxS56
8YtgDKMYx0jGMprxjGhMoxrXyMY2uvGNcIyjHOdIxzra8Y54zKMe98jHPvrxj4AMpCAHSchC
GvKQiEykIhfJyEY68pGQjKQkJ0nJSlrykpjMpCY3yclOevKToAylKEdJylKa8pSoTKUqV8nK
VrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJ
zWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc850lPg/2oni28Jz5X
qM995tOfL8QVQBEo0IEasKAG3d46oDGjhArQIDIalEMBCP8XU02UohGNADvIdFGMiomjb2Jo
R/13JWhlVKMjJamrKpXS/SVFoi3V30sbGlOZrtRTNb3fTG+aU53yVE899elPaRrU+nXFokWl
n1lulVSbwtSkTVUqToEV1apa9apYzapWt8rVrnr1q2ANq1jHStaymvWsaE2rWtfK1ra69a1w
jatc50rXutr1rnjNq173yte++vWvgA2sYAdL2MIa9rCITaxiF8vYxjr2sZCNrGQnS9nKWvay
mM2sZjfL2c569rOgDa1oR0va0pr2tKhNrWpXy9rWuva1sI2tbGdL29ra9ra4za1ud8vb3vr2
t8ANrnCHS9ziGve4yE2ucpfL3Ob/Ove50I2udKdL3epa97rYza52t8vd7nr3u+ANr3jHS97y
mve86E2vetfL3va6973wja9850vf+tr3vvjNr373y9/++ve/AA6wgAdM4AIb+MAITrCCF8zg
Bjv4wRCOsIQnTOEKW/jCGM6whjfM4Q57+MMgDrGIR0ziEpv4xChOsYpXzOIWu/jFMI6xjGdM
4xrb+MY4zrGOd8zjHvv4x0AOspCHTOQiG/nISE6ykpfM5CY7+clQjrKUp0zlKlv5yljOspa3
zOUue/nLYA6zmMdM5jKb+cxoTrOa18zmNrv5zXCOs5znTOc62/nOeM6znvfM5z77+c+ADrSg
B03oQhv6/9CITrSiF83oRjv60ZCOtKQnTelKW/rSmM60pjfN6U57+tOgDrWoR03qUpv61KhO
tapXzepWu/rVsI61rGdN61rb+ta4zrWud83rXvv618AOtrCHTexiG/vYyE62spfN7GY7+9nQ
jra0p03talv72tjOtra3ze1ue/vb4A63uMdN7nKb+9zoTre6183udrv73fCOt7znTe962/ve
+M63vvfN7377+98AD7jAB07wghv84AhPuMIXzvCGO/zhEI+4xCdO8Ypb/OIYz7jGN87xjnv8
4yAPuchHTvKSm/zkKE+5ylfO8pa7/OUwj7nMZ07zmtv85jjPuc53zvOe+/znQP8PutCHTvSi
G/3oSE+60pfO9KY7/elQj7rUp071qlv96ljPuta3zvWue/3rYA+72MdO9rKb/exoT7va1872
trv97XCPu9znTve62/3ueM+73vfO9777/e+AD7zgB0/4whv+8IhPvOIXz/jGO/7xkI+85CdP
+cpb/vKYz7zmN8/5znv+86APvehHT/rSm/70qE+96lfP+ta7/vWwj73sZ0/72tv+9rjPve53
z/ve+/73wA++8IdP/OIb//jIT77yl8/85jv/+dCPvvSnT/3qW//62M++9rfP/e57//vgD7/4
x0/+8pv//OhPv/rXz/72u//98I+//OdP//rb//74z7///vfP//77//8AGIACOIAEWIAGeIAI
mIAKuIAM2IAO+IAQGIESOIEUWIEWeIEYmIEauIEc2IEe+IEgGIIiOIIkWIImeIIomIIquIIs
2IIu+IIwGIMyOIM0WIM2eIM4mIM6uIM82IM++INAGIRCOIREWIRGeIRImIRKuIRM2IRO+IRQ
GIVSOIVUWIVWeIVYmIVauIVc2IVe+IVgGIZiOIZkWIZmeIZomIZquIZs2IZu+IZwGIdyOId0
WId2eId4mId6uId82Id++IeAGIiCOIiEWIiGeIiImIiKuIiM2IiO+IiQGImSOImUWImWeImY
mImauImc2Ime+ImgGIqiOIqk/1iKpniKqJiKqriKrNiKrviKsBiLsjiLtFiLtniLuJiLuriL
vNiLvviLwBiMwjiMxFiMxniMyJiMyriMzNiMzviM0BiN0jiN1FiN1niN2JiN2riN3NiN3viN
4BiO4jiO5FiO5niO6JiO6riO7NiO7viO8BiP8jiP9FiP9niP+JiP+riP/NiP/viPABmQAjmQ
BFmQBnmQCJmQCrmQDNmQDvmQEBmREjmRFFmRFnmRGJmRGrmRHNmRHvmRIBmSIjmSJNlmAKAA
AdAAKUkAJ0mELRkAK0kAMKkALTmEAHCSMJmSOcmSNWmTN5mTMHmTN2mEQ+kAQgmFRUmEO3mU
K9mTQv+4kwzQlEUIlQzwklM5kw1glUqJlQtQlDH5lFxJkzj5lWDZlF55hGS5AGG5hGvpkjXZ
liUZl3I5l3RZl3Z5l2C1IHq5l3zZl375l4AZmII5mO4idIR5mIiZmIq5mIzZmIpimI4ZmZI5
mZRZmYlJdJaZmZq5mZypmZjZmaAZmqI5mnr5maR5mqiZmqFpmqrZmq75morJmrA5m7RZm/kh
m7aZm7qpm7i5m775m6rZm8A5nMTJmcJZnMiZnI55nMrZnM4pmMz5nNI5nYUZdNR5ndjZLzqX
ndzZnZMCmd4Znt4ZneJZnslJnuaZnsCJnurZnrnJnu4Zn7AJn/JZn6lJn/ZxmZ+iiZ/62Z+b
yZ/+GaCUCaACWqCNSaAGmqCIiaAK2qCByaAOGqF8CaESWqG3OXQWmqGMSaEa2qGsAp4eGqJ/
yaEiGqIkWqIdeqIomqEquqIV2qIuGqEwGqMNOqM0eqM4mqM6uqM82qM++qNAGqQumgAAIfkE
BRQAAgAsHgPoA0sDVwQAA/8outz+MMpJq7046827/2AojmRpnmiqrmzrvnBDzHRt03Gu73zv
/8CgcEgsGo/Am9KGbDqf0Kh0Sq1ar1jHckvIer/gsHhMLpvP3OV5zW673/C4HJtWzu/4vH7P
77/rN36Cg4SFhoeIHYBMiY2Oj5CRkleLNZOXmJmam5wclTidoaKjpKV8nzOmqqusra5PqF2v
s7S1trcfsbi7vL2+rrq/wsPExYjBxsnKy8xlyM3Q0dLTQ8/U19jZ2iLW297f4OE0BeTl5uWp
4err7NHj5/AF6e309fa47/Hm8/f9/v+hugEcSLBgIYEGEypc6AYhw4cQI1rJp48cP4kYM2o0
QrH/4sWNIEOKdNFR38eRKFOqVIRqpcuXMCc4jEmzJsiZNnPqXIhzp8+f/XoCHUoUnNCiSJNK
O6q0qVNiTJ9KnWorKtWrWE1Zzcq1a6atXsOKTQR2rNmzp1qiXcv2mNq2cOPKnUu3rt27ePPq
3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOr
Xs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr
3869u/fv4MOLH0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v////wAGKOCABBZo4IEI
Jqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOM
NNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWVWGap5ZZcdunl
l2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq
6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quwxirrrLTW
auutuOaq66689urrr8AGK+ywxBZr7LHIJqvssv/MNuvss9BGK+201FZr7bXYZqvtttx26+23
4IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zw
wgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds
880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CH
LfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPft99+ABy744IQXbvjhiCeu+OKM
N+7445BHLvnklFdu+eX/mGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y01277
7bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv
/vjkl2/++einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfI
wAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxn
SMMa2vCGOMyhDnfIwx768IdADKIQh0jEIhrxiEhMohKXyMQmOvGJUIyiFKdIxSpa8YpYzKIW
/7fIxS568YtgDKMYx0jGMprxjGhMoxrXyMY2uvGNcIyjHOdIxzra8Y54zKMe98jHPvrxj4AM
pCAHSchCGvKQiEykIhfJyEY68pGQjKQkJ0nJSlrykpjMpCY3yclOevKToAylKEdJylKa8pSo
TKUqV8nKVrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ
0IymNKdJzWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrz
nvjMpz73yc9++vOfAA2oQAdK0IIa9KAITahCF8rQhjr0oRCNqEQnSv/Rilr0ohjNqEY3ytGO
evSjIA2pSEdK0pKa9KQoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2pTnfK05769KdADapQh0rU
ohr1qEhNqlKXytSmOvWpUI2qVKdK1apa9apYzapWt8rVrnr1q2ANq1jHStaymvWsaE2rWtfK
1ra69a1wjatc50rXutr1rnjNq173yte++vWvgA2sYAdL2MIa9rCITaxiF8vYxjr2sZCNrGQn
S9nKWvaymM2sZjfL2c569rOgDa1oR0va0pr2tKhNrWpXy9rWuva1sI2tbGdL29ra9ra4za1u
d8vb3vr2t8ANrnCHe7MAGPe4yD3u7pLLXONtLre5yeUdAKZLXeoqV3fVzW4AfJfd6h4XALvr
7nS/C97wdve7vTuvcafLXeoyoLy/s65zgSffAMA3vfVlL37zq1/zjne97vXvf+1bXQEDgLwB
zp12AZxg3HmXwQ128ICzu18E99e8FibehXeXAAAh+QQFFQAFACwDAOgDZgaIBAAD/1i63P4w
ykmrvTjrzbv/YCiOZGmeaKqubOu+cCzPdG3feK7vfO//QAdhSCwaiYKkcslUBp/QqHRKrVqv
2Kx2y+16v+CweEx2Hc/GpppZbrvf8Lh8Tq/b7/i8fs/vR9CABGuDAn6Gh4iJiouMjY6PkJGS
kyOBaIRrlJqbnJ2en6ChoqOkpT+WZ5hqpqytrq+wsbKztLW2IKhHqk23vb6/wMHCw8TFxiW5
abtLx83Oz9DR0tPU1TsDF8lFy8zW3t/g4eLj5OWOhRHYFtpI3Enm8PHy8/T19vcu6hXsQ+7v
+AADChxIsKDBX/oo8BPk76DDhxAjSpxIsUrCdNn4+UNXsf+jx48gQ4oMeRFCyT8aG45cybKl
y5cwm510MPPBwo0xc+rcybOnzyk1OXqoaTIjO5w/kypdyrSpUwpEQ0SlaVQb0qdYs2rdyjXi
VKoXvjIQW+Cmyq5o06pdyxbazJpvJ3yN28CsAAN48+rN+6+t37+AAwvuBDdD1LkYGdjdyxhv
38GQI0ueTLlMYQyHK1xesLjx3seVQ4seTbr0jM1FMWtOzDmlO9OwY8ueTVsua7CGV6duffRs
7d/Agwv3i3osB8S7FdjlNry58+fQexZfQPe2deOKXXv+LDS69+/gwxecXoA8dtvJy2rfzre7
+Pfw48unRt48dd0PLnZmbwD0/P//AAYoYCz1pZcffrgp5xpzAzbo4IMQSlJdA/pwRJYC6pRU
3HLLROjhhyCGOMeF5ZF43nX3ZdfbayK26OKLMEph4kkCmHhgehzuEuOOPPboYwtBpZNQIWK5
dyKFdS3Y4Y9MNunkk+hhkaMqUFZp5ZU72qjDlJhg6eWXYA6oZQ5cEhLmmWimCd2YOJQ5iJpw
xilnaWze4GYmc+ap555t1WnDnavwKeighC7lZw2A8lLooow2Gl6ibDgq6aSUzgZpN5Vmqumm
nHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvs
scgmq+yy/8w26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DG
K++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYc
d+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTR
SCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy33
3HTXbffdeOet99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755f+YZ6755px3
7vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++689+7778AHL/zwxBdv/PHI
J6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrst+/++/DHL//8
9Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKWvCCGMygBjfI
wQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHvrwh0AMohCH
SMQiGvGISEyiEpfIxCY68YlQjKIUp0jFKlrxiljMohb/t8jFLnrxi2AMoxjHSMYymvGMaEyj
GtfIxja68Y1wjKMc50jHOtrxjnjMox73yMc++vGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCM
pCQnSclKWvKSmMykJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKVsIylLGdJy1ra8pa4
zKUud8nLXvryl8AMpjCHScxiGvOYyEymMpfJzGY685nQjKY0p0nNalrzmtjMpja3yc1uevOb
4AynOMdJznKa85zoTKc618nOdrrznfCMpzznSc962vOe+MynPvfJz376858ADahAB0rQghr0
oAhNqEIXytCGOvShEI2oRCdK/9GKWvSiGM2oRjfK0Y569KMgDalIR0rSkpr0pChNqUpXytKW
uvSlMI2pTGdK05ra9KY4zalOd8rTnvr0p0ANqlCHStSiGvWoSE2qUpfK1KY69alQjapUp0rV
qlr1qljNqla3ytWuevWrYA2rWMdK1rKa9axoTata18rWtrr1rXCNq1znSte62vWueM2rXvfK
17769a+ADaxgB0vYwhr2sIhNrGIXy9jGOvaxkI2sZCdL2cpa9rKYzaxmN8vZznr2s6ANrWhH
S9rSmva0qE2talfL2ta69rWwja1sZ0vb2tr2trjNrW53y9ve+va3wA2ucIdL3OIa97jITa5y
l8vc5v8697nQja50p0vd6lr3utjNrna3y93ueve74A2veMdL3vKa97zoTa9618ve9rr3vfCN
r3znS9/62ve++M2vfvfL3/76978ADrCAB0zgAhv4wAhOsIIXzOAGO/jBEI6whCdM4Qpb+MIY
zrCGN8zhDnv4wyAOsYhHTOISm/jEKE6xilfM4ha7+MUwjrGMZ0zjGtv4xjjOsY53zOMe+/jH
QA6ykIdM5CIb+chITrKSl8zkJjv5yVCOspSnTOUqW/nKWM6ylrfM5S57+ctgDrOYx0zmMpv5
zGhOs5rXzOY2u/nNcI6znOdM5zrb+c54zrOe98znPvv5z4AOtKAHTehCG/r/0IhOtKIXzehG
O/rRkI60pCdN6Upb+tKYzrSmN83pTnv606AOtahHTepSm/rUqE61qlfN6la7+tWwjrWsZ03r
Wtv61rjOta53zete+/rXwA62sIdN7GIb+9jITrayl83sZjv72dCOtrSnTe1qW/va2M62trfN
7W57+9vgDre4x03ucpv73OhOt7rXze52u/vd8I63vOdN73rb+974zre+983vfvv73wAPuMAH
TvCCG/zgCE+4whfO8IY7/OEQj7jEJ07xilv84hjPuMY3zvGOe/zjIA+5yEdO8pKb/OQoT7nK
V87ylrv85TCPucxnTvOa2/zmOM+5znfO8577/OdA/w+60IdO9KIb/ehIT7rSl870pjv96VCP
utSnTvWqW/3qWM+61rfO9a57/etgD7vYx072spv97GhPu9rXzva2u/3tcI+73OdO97rb/e54
z7ve9873vvv974APvOAHT/jCG/7wiE+84hfP+MY7/vGQj7zkJ0/5ylv+8pjPvOY3z/nOe/7z
oA+96EdP+tKb/vSoT73qV8/61rv+9bCPvexnT/va2/72uM+97nfP+977/vfAD77wh0/84hv/
+MhPvvKXz/zmO//50I++9KdP/epb//rYz772t8/97nv/++APv/jHT/7ym//86E+/+tfP/va7
//3wj7/850//+tv//vjPv//+98///vv//wAYgAI4gARYgAZ4gAiYgAq4gAzYgA74gBAYgRI4
gRRYgRZ4gRiYgRq4gRzYgR74gSAYgiI4giRYgiZ4giiYgiq4gizYgi74gjAYgzI4gzRYgzZ4
gziYgzq4gzzYgz74g0AYhEI4hERYhEZ4hEiYhEq4hEzYhE74hFAYhVI4hVRYhVZ4hViYhVq4
hVzYhV74hWAYhmI4hmRYhmZ4hmiYhmq4hmzYhm74hnAYh3I4h3RYh3Z4h3iYh3q4h3zYh374
h4AYiII4iIRYiIZ4iIiYiIq4iIzYiI74iJAYiZI4iZRYiZZ4iZiYiZq4iZzYiZ74iaD4TQAw
iqT/2ACj6HmkCAAPcIqdV4qrqIqfFwCyKIsL4IqeN4sMkIqxiIu1yIq3SIu9CIu7GAC56Iud
x4sKYIu/SIy8KIzLOIvEqADR+IzAWADIyHnQmIyjeI2bh4ylyI2Z14ysCI6YJ46wSI6XZ47S
WI3dCIyuiI6Wh4u2CI/xKIvvyI7YWI3QOI2/uADZaHr4GIoCOZAEWZAGeZAIyTEHsJAM2ZAO
+ZAQGZESOZEUWZEWeZEYmZEauZEc2ZEe+ZEgWZGLFpIkWZImeZIomZIquZIsyZAj2ZIwGZMy
OZM0WZMn+ZI2mZM6uZM82ZMkiZM+GZRCOZREWZNAWZRImZRKuZQXeZRM//mUUBmVQumURJkX
UimUVkmRjHGVHZmVE0mVM2kAWokXXEmS/EGWELkXY6kXJ7kdLCmWE+mVEgmWMYmWEimXZdmV
ZxmRahmXfVmS/JGSdsmXgxmRdNmSePmQiZmXGnmWcJmWhemXj2mWgWmSi9mQl9mQh/mWkemQ
mcmYFvmZltmZHpmYotmYpMmQp7mZKymapwmad5mabSmbG7mYr3mRrkmbB8CaKpmbkwmbGXmb
ICmcodmZxLmWyEmROJmVfwmZW+mcbumZaNmcwEmYv7mWwpmdmWmbxtkY1hmdmDmdbKmZiqaa
ZOmd0Ime4ckeinme6lmd7Xmdkqmd8hmf1LmQ3P95nZW5nuBpnmLpGS5Znvi5n/z5ngPKntKJ
oKNZn86JksT5nMXJoP5poAeQn/ZJoXuZoOC5nON5oA2aoLEpoRXaoSOqmxh5n+k5m/35oRGK
nesZnyzqnzBqndg5mePJoZFJnyHqoiAKmCQaoiZ6ogpKo7hJm6ZZmEcqoj0ao9A5ozjKpJK5
o1E6o5T5mihamkMKpVJKpEt6oCuanFr6ok4qoCUapiUKoVTKpWLqo0oqoyrKkToKpCtKoOn5
o2uqpm76pGk6oRTqplt6p/Dpp8EZpGUqpwBaoHaqoX3qoVPao3rapV56qGbKqJAaqIWKmm1K
qXVqoA9Kp4C6p4z6qJ//mqR/qqXHKZWneqkV+ZlxWqT6mZq++aGiKqiqSqufWqm1aqmp2qqT
iqt4qqm+aquFOqvAaqG/iqupCpW7SqisyqzOKp/baaTdCZc4+qq/maQMGqug+pG8WqVw+qxg
Gq7ieqaluq1ZWa02mqNyeaWqiqTTuqAmyq7fmqnBuq38ea+3+p0F+qfuCq1oia59mqHf+aPG
WqXxmqhYmqmOqaiSiqjU2alZyrD9KqtkapWLCqDNiqa5urF6aaUI27GumqULu6nqSq9nypYZ
+7DvupsVK56+6bI1aq29iqlCarItGqEiK7ApOrMXCqwXKrNjmmjCaqlEW7RISaxGm7RKy5NI
a7u0Tvu0MNm0UDu1VPuTLWuzVZu1WguRUru1Xvu1D9m1YDu2XsubZHu2W2u2aLu2U7sRbvu2
cBu3cju3dFu3dnu3eJu3eru3fNu3fvu3gBu4gju4hFu4hnu4iJu4iru4jNu4jvu4kBu5G5EA
ACH5BAUWAAMALB4D6AM5A1cEAAP/OLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s674RIc90PQt4
ru857P/AoHBILBqPyKRyySzZnjWedNesWq/YrHbL7Xq/SKiYMC0LwOi0es1uu99w7hhqnsbv
+Lx+z+/7w3M2dVJ/hYaHiImKi12BgoNUjJKTlJWWl5iOUZA6mJ6foKGio0syBacFgZydpK2u
r7CxsgymqKqrOLO6u7y9vnG1p7e4v8XGx8jJP8Gpc7i5ytHS09TVDczDq9bb3N3epNjOz9/k
5ebnfOFjz2fo7u/w8VbhqMI07PL5+vv8Ktj19W6M60ewoMGDEJgBDCgDH8KHECO+U9iMAMCG
AyVq3Mgx/5rCGgwddhxJsiQsdTNCZjTJsqVLSSjDiXxJs6ZNPDEt2iKz8qbPn0C35FRJLKjR
o0iPDN05M6nTp1BPLLXXNKrVq1gtTG1WNavXr1m3YiwKtqxZqGJ5kj3Ltq3PtF3dyp3bEW5P
unjzPrS7Vq/fv/s03bsLuLDhcoIF9j3MuHG1xGO1OZ5MWRlktZIra96863JczqBDe/JMWLTp
04xIL0bNuvUf1Zldy56dBzYn2rhz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr1
69iza9/Ovbv37+DDix9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7////8ABijggAQW
aOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4osw
xijjjDTWaOONOOao44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWW
XHbp5ZdghinmmGSWaeaZaKap5ppstunmm3DGKeecdNZp55145qnnnnz26eefgAYq6KCEFmro
oYgmquiijDbq6KOQRirppJRWaumlmGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMYq
66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LL/zDbr7LPQRivttNRWa+212Gar7bbc
duvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDB
CCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzz
zDTXbPPNOOes88489+zzz0AHLfTQRBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft
9ddghy322GSXbfbZaKet9tpst+3223DHLffcdNdt991456333nz37fffgAcu+OCEF2744Ygn
rvjijDfu+OOQRy755JRXbvnl/5hnrvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvs
tNdu++2456777rz37vvvwAcv/PDEF2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/9
9+CHL/745Jdv/vnop6/++uy37/778Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhM
oAIXyMAGOvCBEIygBCdIwQpa8IIYzKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUw
jKEMZ0jDGtrwhjjMoQ53yMMe+vCHQAyiEIdIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGK
WMyiFv+3yMUuevGLYAyjGMdIxjKa8YxoTKMa18jGNrrxjXCMoxznSMc62vGOeMyjHvfIxz76
8Y+ADKQgB0nIQhrykIhMpCIXychGOvKRkIykJCdJyUpa8pKYzKQmN8nJTnryk6AMpShHScpS
mvKUqEylKlfJyla68pWwjKUsZ0nLWtrylrjMpS53ycte+vKXwAymMIdJzGIa85jITKYyl8nM
ZjrzmdCMpjSnSc1qWvOa2MymNrfJzW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJ
z3ra8574zKc+98nPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0r/0Ypa9KIYzahG
N8rRjnr0oyANqUhHStKSmvSkKE2pSlfK0pa69KUwjalMZ0rTmtr0pjjNqU53ytOe+vSnQA2q
UIdK1KIa9ahITapSl8rUpjr1qVCNqlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhN
q1rXyta2uvWtcI2rXOdK17ra9a54zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQ
jaxkJ0vZylr2spjNrGY3y9nOevazoA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2
uM2tbnfL29769rfADa5wh0vc4hr3uMhNrnKXy9zmpDr3udCNrnSnS93qWve62M2udrfL3e56
97vgDa94x0ve8pr3vOhNr3rXy972uve98I2vfOdL3/ra9774za9+98vf/vr3vwAOcPcCQOAC
GzgA+DuwghOsYAMzOAAAiHD/CgwAAVZYwANycP4A0OAC44/DHSbw/UBM4AhH2MP2I7GJTYxi
+q34xSROsYT/Z2IA1pjGM/bfjTHsHwTzOEA+FmCQ+ZcAACH5BAUVAAYALB4D6AMnA1cEAAP/
aLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s65pELM+0LNx4ruNv7//AoHBILBqPyKRyOao5abuo
jkmtWq/YrHbL7XqFzzBBShZ8z+i0es1uu99U8bMshdvv+Lx+z+//5E50UX6EhYaHiImKTIA1
gjuLkZKTlJWWiY1QjzmXnZ6foKGiQJkzNwOoA4KjrK2ur7CjpTYCqap0sbm6u7y9a08FBXO1
qau+x8jJyssrTsHCgcSoxszV1tfY1zXP0I7St2XZ4uPk5aHbz8O21Obt7u/wdujB6sW48fj5
+vuMBNz/3Git+wbuBr+DCBMqPBEDoEOBxWwNNLOwosWLGBs0dPgP/6LEjzwyihxJEt68bppA
nhpYsqXLl8tO1rOHgyXMmzhzyqIRMNrEmvZ0Ch1KVJFMnzSBTqNYtKnTp26Oevu5cinUq1iz
ZpGaMmnVW1rDih0Lhmc6pEtz2CTLtq3bJmbpoS341eDbu3jzUuBq6tuOtXoDC77L1yNdv0wH
K16s1dnZs3V1AGZMufJQxw/HIFYb1LLnzzCBZY7M2Sro06gxiukYg7RSsKljy+Y3q/WmkLNz
6zZXW/PtxLuDC49Z+7fd4ciT8+ptHLjy59DPFTcevbr1TsypX9/OHdP0393Di+eTHfz48+jb
lL+dvr379/Djy59Pv779+/jz69/Pv7////8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo
4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AG
KeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5pps
tunmm3DGKeecdNZp55145qnnnnz26eefgAYq6KCEFmrooYgmquiijDbq6KOQRirppJRWauml
mGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMYq66y01mrrrbjmquuuvPbq66/ABivs
sMQWa+yxyCar7LL/zDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy2
6+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUY
Z6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQ
RBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+32
23DHLffcdNdt991456333nz37fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnl/5hn
rvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvstNdu++2456777rz37vvvwAcv/PDE
F2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/99+CHL/745Jdv/vnop6/++uy37/77
8Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa8IIY
zKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUwjKEMZ0jDGtrwhjjMoQ53yMMe+vCH
QAyiEIdIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFv+3yMUuevGLYAyjGMdIxjKa
8YxoTKMa18jGNrrxjXCMoxznSMc62vGOeMyjHvfIxz768Y+ADKQgB0nIQhrykIhMpCIXychG
OvKRkIykJCdJyUpa8pKYzKQmN8nJTnryk6AMpShHScpSmvKUqEylKlfJyla68pWwjKUsZ0nL
WtrylrjMpS53ycte+vKXwAymMIdJzGIa85jITKYyl8nMZjrzmdCMpjSnSc1qWvOa2MymNrfJ
zW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJz3ra8574zKc+98nPfvrznwANqEAH
StCCGvSgCE2oQhfK0IY69KEQjahEJ0r/0Ypa9KIYzahGN8rRjnr0oyANqUhHStKSmvSkKE2p
SlfK0pa69KUwjalMZ0rTmtr0pjjNqU53ytOe+vSnQA2qUIdK1KIa9ahITapSl8rUpjr1qVCN
qlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhNq1rXyta2uvWtcI2rXOdK17ra9a54
zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQjaxkJ0vZylr2spjNrGY3y9nOevaz
oA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM2tbnfL29769rfADa5wh0vc4hr3
uMhNrnKXy9zm+Dr3udCNrnSnS93qWve62M2udrfL3e5697vgDa94x0ve8pr3vOhNr3rXy972
uve98I2vfOdL3/ra9774za9+98vf/vr3vwAOsIAHTOACG/jACE6wghfM4AY7+MEQjrCEJ0zh
Clv4whjOsIY3zOEOe/jDIA6xiEdM4hKb+MQoTrGK6QqAFrsYAAGIMQA8+OIWx1jGNK7xjQMw
4w7qeMcffPGOYxxkFw85AEWGsYxvnOQbKxnJOXZyj0H4ZB4/ecobxLICnFxCKXdQyjaWsZYv
COYwW5mDRwayB9PM5DWzGcpdFjMHa2xkOWeZzlfO8Y95rOcXk3DPHkwAACH5BAUUAAYALB4D
6AMVA1cEAAP/aLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s61JELM+0LNx4ruNv7//AoHBILBqP
yKRyGak5abuojkmtWq/YrHbL7XpHzzBBShZ8z+i0es1uu98u8bMshdvv+Lx+z++D5E50UX6E
hYaHiImKLYA1gjuLkZKTlJWWbY1QjzmXnZ6foKGiIZkzm5yjqaqrrK2GpTanN660tba3uEuw
MVIDA3W5wcLDxMUZu2M7vr+Dxs7P0NGsyMrLwNLY2drbftQ6y8yQ3OPk5eZa3jng1+ft7u/w
KzQF9PX0muD567Px/f7/AGHIsEfwHi8B+hLyCMiwocN2AwsSjJVQ38KHGDNqLBbR/2DHAgfV
WWu2saTJk6kA2QuJY584lDBjylSksh7LGy6nzNzJs6edGhJtJhPpi53Po0iTXpkRdOXQliNf
Kp1KtWqQj01vIoyq06rXr2BLfJwntFpRkmHTql0r0CnTst+4omJLty7bGG7HPsUp96Ldv4Cp
4hWKVWvOuYETK9452COBglq3nh25uLLlk42bGoxSkdnlz6AbYrXptJdCM6FTq3b31mlpMvn8
rp5NW1q6U7Vz6zZ2e9Pu38Bt9X4UvLjxUcMFHV/OvFJyOs2jSz/0vMz069jzVCeTvbv3NduN
fh9P3kp4tOXTq1/Pvr379/Djy59Pv779+/jz69/Pv7////8ABijggAQWaOCBCCao4IIMNujg
gxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao
44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSW
aeaZaKap5ppstunmm3DGKeecdNZp55145qnnnnz26eefgAYq6KCEFmrooYgmquiijDbq6KOQ
RirppJRWaumlmGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMYq66y01mrrrbjmquuu
vPbq66/ABivssMQWa+yxyCar7LL/zDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr
7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBH
LPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes8848
9+zzz0AHLfTQRBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZ
aKet9tpst+3223DHLffcdNdt991456333nz37fffgAcu+OCEF2744YgnrvjijDfu+OOQRy75
5JRXbvnl/5hnrvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvstNdu++2456777rz3
7vvvwAcv/PDEF2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/99+CHL/745Jdv/vno
p6/++uy37/778Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIyg
BCdIwQpa8IIYzKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUwjKEMZ0jDGtrwhjjM
oQ53yMMe+vCHQAyiEIdIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFv+3yMUuevGL
YAyjGMdIxjKa8YxoTKMa18jGNrrxjXCMoxznSMc62vGOeMyjHvfIxz768Y+ADKQgB0nIQhry
kIhMpCIXychGOvKRkIykJCdJyUpa8pKYzKQmN8nJTnryk6AMpShHScpSmvKUqEylKlfJyla6
8pWwjKUsZ0nLWtrylrjMpS53ycte+vKXwAymMIdJzGIa85jITKYyl8nMZjrzmdCMpjSnSc1q
WvOa2MymNrfJzW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJz3ra8574zKc+98nP
fvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0r/0Ypa9KIYzahGN8rRjnr0oyANqUhH
StKSmvSkKE2pSlfK0pa69KUwjalMZ0rTmtr0pjjNqU53ytOe+vSnQA2qUIdK1KIa9ahITapS
l8rUpjr1qVCNqlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhNq1rXyta2uvWtcI2r
XOdK17ra9a54zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQjaxkJ0vZylr2spjN
rGY3y9nOevazoA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM2tbnfL29769rfA
Da5wh0vc4hr3uMhNrnKXy9zm2zr3udCNrnSnS93qWve62M2udrfL3e5697vgDa94x0ve8pr3
vOhNr3rXy972uve98I2vfOdL3/ra9774za9+98vf/vr3vwAOsIAHTOACG/jACE6wghfM4AY7
+MEQjrCEJ0zhClv4whjOsIYXE4AOezgAAFjgh0fcYQWSeMQJ/DAAVrziDyPQwyyOsYdf3OEY
s3jGC7QxAHCsQB3zGIE+LnGPWyzkBt5YxTk+cgAcqGMiLxnITXYylKOcZCoP2coprnGQn2xA
GG+ZxlpWMpe7fOIfk7nMYwYzkhOYAAAh+QQFFAAGACweA+gDAwNXBAAD/2i63P4wykmrvTjr
zbv/YCiOZGmeaKqubIsScCzPsWDfeH67fO//wKBwSCwaj8ik8kFrznTQ3HJKrVqv2Kx2y+12
nGBCdCzwms/otHrNbrtNYSc5+q7b7/i8fs+/xJtzUH2DhIWGh4iJI380gTqKkJGSk5SVW4xP
jjiWnJ2en6ChFpgympuiqKmqq6x1pDWmNq2ztLW2tz+vMLGyuL6/wMHCDbpivMPIycrLlsW8
ZczR0tPUbc7H1dna29xG17Hd4eLj5CEwBegF5+mNOAPv8O9S5fT19vbr6ATp/KU38QDl9bpH
sKDBaPn4KVS3y0bAgDsOSpxIsVZCfQlhCYiXg/8jtIogQ4qsdHFGP2NkPI5cybJln4wm2aEc
o9KlzZs4z8CUcVLHQ3gDcwodSvTIzhg9//0E+rGo06dQVRyFqXSpwKhYs2r9sk8mT5lVB3Rk
urWs2bPEumL8itEhU3dk0cqdC3WqWoZuBcK9Srev35sl2eLd+DYv37+IE1e8yPAuLI+GDyue
TLke44WNIy8NWrmzZ20ZMfsjDLHm59OomcE8OZo0U9OpY8v2ZbcduNm4c7eqnem27t/APfFu
rSm48eOShms0hby5c0LKG/p+Tr26m+gzi1vfzl2n4zjPuosfj+Ubc/Lo0xvVFV69+/fw48uf
T7++/fv48+vfz7+/////AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujh
hyCGKOKIJJZo4okopqjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap
5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinnnHTW
aeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeg
hirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yy
/8w26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DGK++89NZr
77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCH
LPLIJJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJM
N+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffd
eOet99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755f+YZ6755px37vnnoIcu
+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++689+7778AHL/zwxBdv/PHIJ6/88sw3
7/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrst+/++/DHL//89Ndv//34
56///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKWvCCGMygBjfIwQ568IMg
DKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHvrwh0AMohCHSMQiGvGI
SEyiEpfIxCY68YlQjKIUp0jFKlrxiljMohb/t8jFLnrxi2AMoxjHSMYymvGMaEyjGtfIxja6
8Y1wjKMc50jHOtrxjnjMox73yMc++vGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSclK
WvKSmMykJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKVsIylLGdJy1ra8pa4zKUud8nL
Xvryl8AMpjCHScxiGvOYyEymMpfJzGY685nQjKY0p0nNalrzmtjMpja3yc1uevOb4AynOMdJ
znKa85zoTKc618nOdrrznfCMpzznSc962vOe+MynPvfJz376858ADahAB0rQghr0oAhNqEIX
ytCGOvShEI2oRCdK/9GKWvSiGM2oRjfK0Y569KMgDalIR0rSkpr0pChNqUpXytKWuvSlMI2p
TGdK05ra9KY4zalOd8rTnvr0p0ANqlCHStSiGvWoSE2qUpfK1KY69alQjapUp0rVqlr1qljN
qla3ytWuevWrYA2rWMdK1rKa9axoTata18rWtrr1rXCNq1znSte62vWueM2rXvfK17769a+A
DaxgB0vYwhr2sIhNrGIXy9jGOvaxkI2sZCdL2cpa9rKYzaxmN8vZznr2s6ANrWhHS9rSmva0
qE2talfL2ta69rWwja1sZ0vb2tr2trjNrW53y9ve+va3wA2ucIdL3OIa97jITa5yl8vc5rY6
97nQja50p0vd6lr3utjNrna3y93ueve74A2veMdL3vKa97zoTa9618ve9rr3vfCNr3znS9/6
2ve++M2vfvfL3/76978ADrCAB0zgAhv4wAhOsIIXzOAGO/jBEI6whCdM4QpbNQAYtvBAAcBh
DGdYgB32MAEB4OEAAICAJebwiQOYYhWv2H8tdvH/YixjGGPYxTXeH4lvjGMV92/HJu4xhwEo
ZB/zr8RILnH/kszkJTMZyf1LAAAh+QQFFQAFACwDAOgDPQaIBAAD/1i63P4wykmrvTjrzbv/
YCiOZGmeaKqubOu+cCzPdG3feK7vfO+PhKBwSBQKjsikEvlrOp/QqHRKrVqv2Kx2y+16v+Cw
eFYsE5do5XjNbrvf8Lh8Tq/b7/i8fs8w+wlpgQJ8hIWGh4iJiouMjY6PkJEYf2aCaZKYmZqb
nJ2en6ChoqMwlGWWaKSqq6ytrq+wsbKztA+mRahLtbu8vb6/wMHCw8QSt2e5ScXLzM3Oz9DR
0tM2x0PJ2Nmo1Nzd3t/g4eLjXtZG2uiBA5bk7e7v8PHy8+TmQegug/T7/P3+/wADIrIHSFs+
gQgTKlzIsKFDFwTTSVRGQd/DixgzatzI8f9dxIkTK1jsSLKkyZMoU376CDKdSJUwY8qcSbNm
OXtIBug8orOnmg0jX9ocSrSo0aNIP7D02bMpRQ1BKyadSrWq1asllzbdulPXhagTwGIdS7as
2bPTtPrM2fWnA7EL4DIQKxet3bt48+p9pHadkrW5wgp9UHev4cOIEyveohYN4G0SCheAK3mx
5cuYM2tG0XjJY7cWJFPeTLq06dOoI3T+2/YpBtERKqeeTbu27aSrk3yW3QA2BN63gwsfTvxi
brZ+Xc8VLPV38efQo0sXeJxn69GRB7+dzr279+/Uqgv4HJu5+e3g06tfzx5WX8/XnZ8vL7+9
/fv48zPqm3z8df//rWWg3GT06WfggQgmyAZ/XPXHBAeFYafghBRWaOEPjTWYRoPrhCDhhSCG
KOKIJXS2lSUnVjZAdvWR6OKLMMbYB07WOZiKjDjmqOOOJogHGo9ABinkkAr4OCCRSCappIVG
Prjkk1BGeV+TR0hp5ZVYRkclcFl26eWXeW0J5phklqkXS9iYqeaabE6FZjJtxinnnHTWaeed
eOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeghirq
qKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yy/8w2
6+yz0EYr7bTUVmvttdhmq+223Hbr7bfghivuuOSWa+656Kar7rrstuvuu/DGK++89NZr7734
5qvvvvz26++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLI
JJds8skop6zyyiy37PLLMMcs88w012zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+30
01BHLfXUVFdt9dVYZ6311lx37fXXYIct9thkl2322WinrfbabLft9ttwxy333HTXbffdeOet
99589+3334AHLvjghBdu+OGIJ6744ow37vjjkEcu+eSUV2755f+YZ6755px37vnnoIcu+uik
l2766ainrvrqrLfu+uuwxy777LTXbvvtuOeu++689+7778AHL/zwxBdv/PHIJ6/88sw37/zz
0Ecv/fTUV2/99dhnr/323Hfv/ffghy/++OSXb/756Kev/vrst+/++/DHL//89Ndv//3456//
/vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKWvCCGMygBjfIwQ568IMgDKEI
R0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHvrwh0AMohCHSMQiGvGISEyi
EpfIxCY68YlQjKIUp0jFKlrxiljMohb/t8jFLnrxi2AMoxjHSMYymvGMaEyjGtfIxja68Y1w
jKMc50jHOtrxjnjMox73yMc++vGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSclKWvKS
mMykJjfJyU568pOgDKUoR0nKUprylKhMpSpXycpWuvKVsIylLGdJy1ra8pa4zKUud8nLXvry
l8AMpjCHScxiGvOYyEymMpfJzGY685nQjKY0p0nNalrzmtjMpja3yc1uevOb4AynOMdJznKa
85zoTKc618nOdrrznfCMpzznSc962vOe+MynPvfJz376858ADahAB0rQghr0oAhNqEIXytCG
OvShEI2oRCdK/9GKWvSiGM2oRjfK0Y569KMgDalIR0rSkpr0pChNqUpXytKWuvSlMI2pTGdK
05ra9KY4zalOd8rTnvr0p0ANqlCHStSiGvWoSE2qUpfK1KY69alQjapUp0rVqlr1qljNqla3
ytWuevWrYA2rWMdK1rKa9axoTata18rWtrr1rXCNq1znSte62vWueM2rXvfK17769a+ADaxg
B0vYwhr2sIhNrGIXy9jGOvaxkI2sZCdL2cpa9rKYzaxmN8vZznr2s6ANrWhHS9rSmva0qE2t
alfL2ta69rWwja1sZ0vb2tr2trjNrW53y9ve+va3wA2ucIdL3OIa97jITa5yl8vc5v8697nQ
ja50p0vd6lr3utjNrna3y93ueve74A2veMdL3vKa97zoTa9618ve9rr3vfCNr3znS9/62ve+
+M2vfvfL3/76978ADrCAB0zgAhv4wAhOsIIXzOAGO/jBEI6whCdM4Qpb+MIYzrCGN8zhDnv4
wyAOsYhHTOISm/jEKE6xilfM4ha7+MUwjrGMZ0zjGtv4xjjOsY53zOMe+/jHQA6ykIdM5CIb
+chITrKSl8zkJjv5yVCOspSnTOUqW/nKWM6ylrfM5S57+ctgDrOYx0zmMpv5zGhOs5rXzOY2
u/nNcI6znOdM5zrb+c54zrOe98znPvv5z4AOtKAHTehCG/r/0IhOtKIXzehGO/rRkI60pCdN
6Upb+tKYzrSmN83pTnv606AOtahHTepSm/rUqE61qlfN6la7+tWwjrWsZ03rWtv61rjOta53
zete+/rXwA62sIdN7GIb+9jITrayl83sZjv72dCOtrSnTe1qW/va2M62trfN7W57+9vgDre4
x03ucpv73OhOt7rXze52u/vd8I63vOdN73rb+974zre+983vfvv73wAPuMAHTvCCG/zgCE+4
whfO8IY7/OEQj7jEJ07xilv84hjPuMY3zvGOe/zjIA+5yEdO8pKb/OQoT7nKV87ylrv85TCP
ucxnTvOa2/zmOM+5znfO8577/OdA/w+60IdO9KIb/ehIT7rSl870pjv96VCPutSnTvWqW/3q
WM+61rfO9a57/etgD7vYx072spv97GhPu9rXzva2u/3tcI+73OdO97rb/e54z7ve9873vvv9
74APvOAHT/jCG/7wiE+84hfP+MY7/vGQj7zkJ0/5ylv+8pjPvOY3z/nOe/7zoA+96EdP+tKb
/vSoT73qV8/61rv+9bCPvexnT/va2/72uM+97nfP+977/vfAD77wh0/84hv/+MhPvvKXz/zm
O//50I++9KdP/epb//rYz772t8/97nv/++APv/jHT/7ym//86E+/+tfP/va7//3wj7/850//
+tv//vjPv//+98///vv//wAYgAI4gARYgAZ4gAiYgAq4gAzYgA74gBAYgRI4gRRYgRZ4gRiY
gRq4gRzYgR74gSAYgiI4giRYgiZ4giiYgiq4gizYgi74gjAYgzI4gzRYgzZ4gziYgzq4gzzY
gz74g0AYhEI4hERYhEZ4hEiYhEq4hEzYhE74hFAYhVI4hVRYhVZ4hViYhVq4hVzYhV74hWAY
hmJIPwBQhmUYAGgYdWZohmiIhgAAdWsIAG3ohk8Xh3Pohm/YdGt4h3jodGzYhnLYh3oYiHgI
iHnYdHP4hwFQhk9niGdIh1l3iFMniVX3iAFQiZZIdXuYhlJnh5wIh554iWoYiqP/SIqgaIp+
GIeZWIeqSIiMOIiqaIipGIuCOIa2eIu4mIu6uIu8KDMH8IvAGIzCOIzEWIzGeIzImIzKuIzM
2IzO+IzQGI3SOI3UWI3VeGHWmI3auI3c2I3e+I3gGI7ciI3iWI7meI7omI7quI7MSI7s+I7w
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
EUmae8z/Hi7qSLKkyZMV9GC8hrKly5cYPn7DJRKmzZs4ze1xRyynz58RZTZUUxOo0aNIY+0k
yDKp06fahNJ8CLWq1auDlr5rirWrV1pSQ1L9SrasWSpae55dy5ZSWKJj28qdS1dFWq518+qV
8zaHyJF7AwsOfJfP4MOIufTNpy+x48deC2OBTLnymR0gxTa2zLmzTa1bJ3seTRpUDoaiipZe
zTqhpYGhMbWeTVvC6cxTN9fezbvcJdhbegvnfBtf6rjDkysv9nul7OXQBevArXlc9OvYlYKO
nb27XDTGqzfzTr58QJU8DZtff3WxQ9Xs48vvIzn4/PtA3SOCj7+/fzH1WfHf/4Av6fcXgQgm
CEWAzynoIEUG8vfghBS+wGCFGBoUIXIZduhhCBd+KGI6G+o24okoroNebPal6KI0JVr34owe
hkjjjcYINRRjMuLoo4Irsijgj0TWo+NM73FY5JLyXZQeXkxGicpCuB0o5ZXmOckUlFh2qYk3
4Vnp5ZjQOQkPmWhOsgxcJqbpJm3WqPfmnIKs6ZeEdObJWZyi6ennHXbyON6fhFLGZ4uFJmpG
oEm2qeijeR06JKSUgsHofkpWqqlZkja46adPXComqKR21WmpqKaq6qqsturqq7DGKuustNZq
66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7P+z0EYr7bTUVmvttdhmq+223Hbr7bfg
hivuuOSWa+656Kar7rrstuvuu/DGK++89NZr77345qvvvvz26++/AAcs8MAEF2zwwQgnrPDC
DDfs8MMQRyzxxBRXbPHFGGes8cYcd+zxxyCHLPLIJJds8skop6zyyiy37PLLMMcs88w012zz
zTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLfXUVFdt9dVYZ6311lx37fXXYIct
9thkl2322WinrfbabLft9ttwxy333HTXbffdeOet99589+3334AHLvjghBdu+OGIJ6744ow3
7vjjkEcu+eSUV2755Zhnrvn/5px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvt
uOeu++689+7778AHL/zwxBdv/PHIJ6/88sw37/zz0Ecv/fTUV2/99dhnr/323Hfv/ffghy/+
+OSXb/756Kev/vrst+/++/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jA
BjrwgRCMoAQnSMEKWvCCGMygBjfIwQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdI
wxra8IY4zKEOd8jDHvrwh0AMohCHSMQiGvGISEyiEpfIxCY68YlQjKIUp0jFKlrxiljMoha3
yMUu/3rxi2AMoxjHSMYymvGMaEyjGtfIxja68Y1wjKMc50jHOtrxjnjMox73yMc++vGPgAyk
IAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU568pOgDKUoR0nKUprylKhM
pSpXycpWuvKVsIylLGdJy1ra8pa4zKUud8nLXvryl8AMpjCHScxiGvOYyEymMpfJzGY685nQ
jKY0p0nNalrzmtjMpja3yc1uevOb4AynOMdJznKa85zoTKc618nOdrrznfCMpzznSc962vOe
+MynPvfJz376858ADahAB0rQghr0oAhNqEIXytCGOvShEI2oRCdK0Ypa9P+iGM2oRjfK0Y56
9KMgDalIR0rSkpr0pChNqUpXytKWuvSlMI2pTGdK05ra9KY4zalOd8rTnvr0p0ANqlCHStSi
GvWoSE2qUpfK1KY69alQjapUp0rVqlr1qljNqla3ytWuevWrYA2rWMdK1rKa9axoTata18rW
trr1rXCNq1znSte62vWueM2rXvfK17769a+ADaxgB0vYwhr2sIhNrGIXy9jGOvaxkI2sZCdL
2cpa9rKYzaxmN8vZznr2s6ANrWhHS9rSmva0qE2talfL2ta69rWwja1sZ0vb2tr2trjNrW53
y9ve+va3wA2ucIdL3OIa97jITa5yl8vc5jr3udD/ja50p0vd6lr3utjNrna3y93ueve74A2v
eMdL3vKa97zoTa9618ve9rr3vfCNr3znS9/62ve++M2vfvfL3/76978ADrCAB0zgAhv4wAhO
sIIXzOAGO/jBEI6whCdM4Qpb+MIYzrCGN8zhDnv4wyAOsYhHTOISm/jEKE6xilfM4ha7+MUw
jrGMZ0zjGtv4xjjOsY53zOMe+/jHQA6ykIdM5CIb+chITrKSl8zkJjv5yVCOspSnTOUqW/nK
WM6ylrfM5S57+ctgDrOYx0zmMpv5zGhOs5rXzOY2u/nNcI6znOdM5zrb+c54zrOe98znPvv5
z4AOtKAHTehCG/rQiE60/6IXzehGO/rRkI60pCdN6Upb+tKYzrSmN83pTnv606AOtahHTepS
m/rUqE61qlfN6la7+tWwjrWsZ03rWtv61rjOta53zete+/rXwA62sIdN7GIb+9jITrayl83s
Zjv72dCOtrSnTe1qW/va2M62trfN7W57+9vgDre4x03ucpv73OhOt7rXze52u/vd8I63vOdN
73rb+974zre+983vfvv73wAPuMAHTvCCG/zgCE+4whfO8IY7/OEQj7jEJ07xilv84hjPuMY3
zvGOe/zjIA+5yEdO8pKb/OQoT7nKV87ylrv85TCPucxnTvOa2/zmOM+5znfO8577/OdAD7rQ
h/9O9KIb/ehIT7rSl870pjv96VCPutSnTvWqW/3qWM+61rfO9a57/etgD7vYx072spv97GhP
u9rXzva2u/3tcI+73OdO97rb/e54z7ve9873vvv974APvOAHT/jCG/7wiE+84hfP+MY7/vGQ
j7zkJ0/5ylv+8pjPvOY3z/nOe/7zoA+96EdP+tKb/vSoT73qV8/61rv+9bCPvexnT/va2/72
uM+97nfP+977/vfAD77wh0/84hv/+MhPvvKXz/zmO//50I++9KdP/epb//rYz772t8/97nv/
++APv/jHT/7ym//86E+/+tfP/va7//3wj7/850//+tv//vjPv/73z////vv//wAYgAI4gARY
gAZ4gAiYgAq4gAzYgA74gBAYgRI4gRRYgRZ4gRiYgRq4gRzYgR74gSAYgiI4giRYgiZ4giiY
giq4gizYgi74gjAYgzI4gzRYgzZ4gziYgzq4gzzYgz74g0AYhEI4hERYhEZ4hEiYhEq4hEzY
hE74hFAYhVI4hVRYhVZ4hViYhVq4hVzYhV74hWAYhmI4hmRYhmZ4hmiYhmq4hmzYhm74hnAY
h3I4h3RYh3Z4h3iYh3q4h3zYh374h4AYiII4iIRYiIZ4iIiYiIq4iIzYiI74iJAYiZI4iZRY
iZZ4iZiYiZq4iZzYiZ74iaAYiqI4ihroDgBwioqYNxATAACXp4qbZ4qomIrtcIq0KAEBUHnt
MAC1yIoDcIuTl4u1qIusmIuS54uxKIy96IuRZ4wUgIrEuIzECIvJ+IvROIvDqIyQ5w62aI3T
WIzVGADOiI2Pp43JCI7XSI3iGI7oWAHq6I3peI7ruIq2iIvPqIvzSI/iKIuumHmwIQG8qI/B
OHkRAAAh+QQFJgADACwDAOgDWgmIBAAE/3DISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94
ru987//AoHBIxBCOyKQSKWg6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv
xbx+z+/7/4CBgoOEhYaHiImKi4yCS49Kd5KTlJWWl5iZmpucnZ6foKGiko2lpqeoqaqrrK2u
r7CxsrOskLYEo7m6u7y9vr/AwcLDxMVqtMjJysvMzc7P0NHS09Qzt5DG2drb3N3e3+Dh4uNX
1ebn6Onq6+zt7u/wi9eP5PX29/j5+vv8/bvxAAMKHEiwoMGDCBPqmbfEn8OHECNKnEixojCF
GDNq3Mixo8ePIP8VMYz00IBJAxZTqlzJsqVLiCdRUglJs6bNmzhz6tyZCEEHBD5djExCi0pM
k054Kl3KtOnBJ0dlRnFKtarVq1izal0V9EQVoC+GIik6JWrSrWjTql3bB+rRKWzjyp1Lt67d
pV1NfM27QuwRslFiTr1LuLDhwlIEDz7MuLHjx5AjI+ILgvIGyyX8EgAM5aQUyaBDi9ZYFuni
0ahTq17NGjTmF69HaObsVuqT1rhz66btxPPp3cCDCx9OvGDsFsdDzJ5V2vbZ4tCjSwfS/PP0
69iza99OKPkK7x+Wy6r+m7v58+grkIeSvr379/DjWwA/AewI+hJii4+1/rb8/wDm1t//cwEW
aOCBCD6G3wD2iUBfcvvBMmATCVZo4V0TCnDhhhx26CFOCzYYAnjeRfhKhh+mqKJSKK7o4osw
xijNghSE+NMFlJnoSmK+sSfjj0AW1JxzGgZp5JFIJgkIjfWNeCOOFejYSmeKlafklVgqY1SV
RWbp5ZdghkkCk/k5eVkGfEnJSm2mWSfmm3AyUsVbFMZp5514Gkkmg2ZqQJ+aq7BJJIF5Fmqo
EHNWeeiijDb63542nukBoKpQ2aaVjmaqqQpb9tjlpqCGKmprkPaJZnh+8SaAp/6N6uqrGgyJ
Kay01mrrVqVWxsGfqTLH46C3Bjtqi8IWa+yxN+X6QXK8iqXq/6qXEorstHYSS+212GYbj7Ie
MIuqs74GFm2d2pabpbXmpqvuushw+6SkHFCaCrrs1usivfbmq+++3ZUQKbwbyIsKvvwWfCDB
Bies8MI34PevrvH2Ot6vbjJsMXwIX6zxxhx3C/GyY0YM7sTiAtvxydpljPLKLDPssKkOaiDw
KbL62PLNwv1qMs489+yzDzOb0mmPPxetmqCDfmr00kw3TULQpQzdptNUN4Y0XFVnrbXWUDdi
haJbhy0Xm1WIbfbZOHctJxdot51VF27HLbfCai8C99x483R33nz3nW3diuzt9+AeCU744Yi7
CngihifuuJBsPy755Idq9tLlmGeu+f/mnHd+CeWghw6n5Z6XbvrpqKeu+kuit+7667DHLvvs
tNdu++2456777rz37vvvwAcv/PDEF2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/9
9+CHL/745Jdv/vnop6/++uy37/778Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhM
oAIXyMAGOvCBEIygBCdIwQpa8IIYzKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUw
jKEMZ0jDGtrwhjjMoQ53yMMe+vCHQAyiEIdIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGK
WMyiFrfIxS7/evGLYAyjGMdIxjKa8YxoTKMa18jGNrrxjXCMoxznSMc62vGOeMyjHvfIxz76
8Y+ADKQgB0nIQhrykIhMpCIXychGOvKRkIykJCdJyUpa8pKYzKQmN8nJTnryk6AMpShHScpS
mvKUqEylKlfJyla68pWwjKUsZ0nLWtrylrjMpS53ycte+vKXwAymMIdJzGIa85jITKYyl8nM
ZjrzmdCMpjSnSc1qWvOa2MymNrfJzW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJ
z3ra8574zKc+98nPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0rRilr0/6IYzahG
N8rRjnr0oyANqUhHStKSmvSkKE2pSlfK0pa69KUwjalMZ0rTmtr0pjjNqU53ytOe+vSnQA2q
UIdK1KIa9ahITapSl8rUpjr1qVCNqlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhN
q1rXyta2uvWtcI2rXOdK17ra9a54zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQ
jaxkJ0vZylr2spjNrGY3y9nOevazoA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2
uM2tbnfL29769rfADa5wh0vc4hr3uMhNrnKXy9zmOve50P+NrnSnS93qWve62M2udrfL3e56
97vgDa94x0ve8pr3vOhNr3rXy972uve98I2vfOdL3/ra9774za9+98vf/vr3vwAOsIAHTOAC
G/jACE6wghfM4AY7+MEQjrCEJ0zhClv4whjOsIY3zOEOe/jDIA6xiEdM4hKb+MQoTrGKV8zi
Frv4xTCOsYxnTOMa2/jGOM6xjnfM4x77+MdADrKQh0zkIhv5yEhOspKXzOQmO/nJUI6ylKdM
5Spb+cpYzrKWt8zlLnv5y2AOs5jHTOYym/nMaE6zmtfM5ja7+c1wjrOc50znOtv5znjOs573
zOc++/nPgA60oAdN6EIb+tCITrT/ohfN6EY7+tGQjrSkJ03pSlv60pjOtKY3zelOe/rToA61
qEdN6lKb+tSoTrWqV83qVrv61bCOtaxnTeta2/rWuM61rnfN6177+tfADrawh03sYhv72MhO
trKXzexmO/vZ0I62tKdN7Wpb+9rYzra2t83tbnv72+AOt7jHTe5ym/vc6E63utfN7na7+93w
jre8503vetv73vjOt773ze9++/vfAA+4wAdO8IIb/OAIT7jCF87whjv84RCPuMQnTvGKW/zi
GM+4xjfO8Y57/OMgD7nIR07ykpv85ChPucpXzvKWu/zlMI+5zGdO85rb/OY4z7nOd87znvv8
50APutCH/070ohv96EhPutKXzvSmO/3pUI+61KdO9apb/epYz7rWt871rnv962APu9jHTvay
m/3saE+72tfO9ra7/e1wj7vc5073utv97njPu973zve++/3vgA+84AdP+MIb/vCIT7ziF8/4
xjv+8ZCPvOQnT/nKW/7ymM+85jfP+c57/vOgD73oR0/60pv+9KhPvepXz/rWu/71sI+97GdP
+9rb/va4z73ud8/73vv+98APvvCHT/ziG//4yE++8pfP/OY7//nQj770p0/96lv/+tjPvva3
z/3ue//74A+/+MdP/vKb//zoT7/618/+9rv//fCPv/znT//62//++M+//vfP///++///ABiA
AjiABFiABniACJiACriADNiADviAEBiBEjiBFFiBFniBGJiBGriBHNiBHviBIBiCIjiCJFiC
JniCKJiCKriCLNiCLviCMBiDMjiDNFiDNniDOJiDOriDPNiDPviDQBiEQjiERFiERniESJiE
SriETNiETviEUBiFUjiFVFiFVniFWJiFWriFXNiFXviFYBiGYjiGZFiGZniGaJiGariGbNiG
bviGcBiHcjiHdFiHdniHeJiHeriHfNiHfviHgBiIgjiIhFiIhniIiJiIiriIjNiIjviIkBiJ
kjiJlFiJlniJmJiJmriJnNiJnviJoBiKojiKpFiKpnj/iqiYiqq4iqzYiq74irAYi7I4i7RY
i7Z4i7iYi7q4i7zYi774i8AYjMI4jMRYjMZ4jMiYjMq4jMzYjM74jNAYjdI4jdRYjdZ4jdiY
jdq4jdzYjd74jeAYjuI4juRYjuZ4juiYjuq4juzYju74jvAYj/I4j/RYj/Z4j/iYj/q4j/zY
j/74jwAZkAI5kARZkAZ5kAiZkAq5kAzZkA75kBAZkRI5kRRZkRZ5kRiZkRq5kRzZkR75kSAZ
kiI5kiRZkiZ5kiiZkiq5kizZki75kjAZkzI5kzRZkzZ5kziZkzq5kzzZkz75k0AZlEI5lERZ
lEZ5lEiZlEq5lEzZlE75lFAZ/5VSOZVUWZVWeZVYmZVauZVc2ZVe+ZVgGZZiOZZkWZZmeZZo
mZZquZZs2ZZu+ZZwGZdyOZd0WZd2eZd4mZd6uZd82Zd++ZeAGZiCOZiEWZiGeZiImZiKuZiM
2ZiO+ZiQGZmSOZmUWZmWeZmYmZmauZmc2Zme+ZmgGZqiOZqkWZqmeZqomZqquZqs2Zqu+Zqw
GZuyOZu0WZu2eZu4mZu6uZu82Zu++ZvAGZzCOZzEWZzGeZzImZzKuZzM2ZzO+ZzQGZ3SOZ3U
WZ3WeZ3YmZ3auZ3c2Z3e+Z3gGZ7iOZ7kWZ7meZ7omZ7quZ7s2Z7u+Z7wGZ/yOZ/0WZ/2eZ/4
mZ/6uf+f/Nmf/vmfABqgAjqgBFqgBnqgCJqgCrqgDNqgDvqgEBqhEjqhFFqhFnqhGJqhGrqh
HNqhHvqhIBqiIjqiJFqiJnqiKJqiKrqiLNqiLvqiMBqjMjqjNFqjNnqjOJqjOrqjPNqjPvqj
QBqkQjqkRFqkRnqkSJqkSrqkTNqkTvqkUBqlUjqlVFqlVnqlWJqlWrqlXNqlXvqlYBqmYjqm
ZFqmZnqmaJqmarqmbNqmbvqmcBqncjqndFqndnqneJqnerqnfNqnfvqngBqogjqohFqohnqo
iJqoirqojNqojvqokBqpkjqplFqplnqpmJqpmrqpnNqpnvqpoBqqojqqpFr/qqZ6qqiaqqq6
qqzaqq76qrAaq7I6q7Raq7Z6q7iaq7q6q7zaq776q8AarMI6rMRarMZ6rMiarMq6rMzarM76
rNAardI6rdRardZ6rdiardq6rdzard76reAaruI6ruRaruZ6ruiaruq6ruzaru76rvAar/I6
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
qEylKlfJyla68pWwjKUsZ0nLWtrylrjMpS53ycte+vKXwAymMIdJzGIa85jITKYyl8nMZjrz
mdCMpjSnSc1qWvOa2MymNrfJzW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJz3ra
8574zKc+98nPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0rRilr0/6IYzahGN8rR
jnr0oyANqUhHStKSmvSkKE2pSlfK0pa69KUwjalMZ0rTmtr0pjjNqU53ytOe+vSnQA2qUIdK
1KIa9ahITapSl8rUpjr1qVCNqlSnStWqWvWqWM2qVrfK1a569atgDatYx0rWspr1rGhNq1rX
yta2uvWtcI2rXOdK17ra9a54zate98rXvvr1r4ANrGAHS9jCGvawiE2sYhfL2MY69rGQjaxk
J0vZylr2spjNrGY3y9nOevazoA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM2t
bnfL29769rfADa5wh0vc4hr3uMhNrnKXy9zmOve50P+NrnSnS93qWve62M2udrfL3e5697vg
Da94x0ve8pr3vOhNr3rXy972uve98I2vfOdL3/ra9774za9+98vf/vr3vwAOsIAHTOACG/jA
CE6wghfM4AY7+MEQjrCEJ0zhClv4whjOsIY3zOEOe/jDIA6xiEdM4hKb+MQoTrGKV8ziFrv4
xTCOsYxnTOMa2/jGOM6xjnfM4x77+MdADrKQh0zkIhv5yEhOspKXzOQmO/nJUI6ylKdM5Spb
+cpYzrKWt8zlLnv5y2AOs5jHTOYym/nMaE6zmtfM5ja7+c1wjrOc50znOtv5znjOs573zOc+
+/nPgA60oAdN6EIb+tCITrT/ohfN6EY7+tGQjrSkJ03pSlv60pjOtKY3zelOe/rToA61qEdN
6lKb+tSoTrWqV83qVrv61bCOtaxnTeta2/rWuM61rnfN6177+tfADrawh03sYhv72MhOtrKX
zexmO/vZ0I62tKdN7Wpb+9rYzra2t83tbnv72+AOt7jHTe5ym/vc6E63utfN7na7+93wjre8
503vetv73vjOt773ze9++/vfAA+4wAdO8IIb/OAIT7jCF87whjv84RCPuMQnTvGKW/ziGM+4
xjfO8Y57/OMgD7nIR07ykpv85ChPucpXzvKWu/zlMI+5zGdO85rb/OY4z7nOd87znvv850AP
utCH/070ohv96EhPutKXzvSmO/3pUI+61KdO9apb/epYz7rWt871rnv962APu9jHTvaym/3s
aE+72tfO9ra7/e1wj7vc5073utv97njPu973zve++/3vgA+84AdP+MIb/vCIT7ziF8/4xjv+
8ZCPvOQnT/nKW/7ymM+85jfP+c57/vOgD73oR0/60pv+9KhPvepXz/rWu/71sI+97GdP+9rb
/va4z73ud8/73vv+98APvvCHT/ziG//4yE++8pfP/OY7//nQj770p0/96lv/+tjPvva3z/3u
e//74A+/+MdP/vKb//zoT7/618/+9rv//fCPv/znT//62//++M+//vfP///++///ABiAAjiA
BFiABniACJiACriADNiADviAEBiBEjiBFFiBFniBGJiBGriBHNiBHviBIBiCIjiCJFiCJniC
KJiCKriCLNiCLviCMBiDMjiDNFiDNniDOJiDOriDPNiDPviDQBiEQjiERFiERniESJiESriE
TNiETviEUBiFUjiFVFiFVniFWJiFWriFXNiFXviFYBiGYjiGZFiGZniGaJiGariGbNiGbviG
cBiHcjiHdFiHdniHeJiHeriHfNiHfviHgBiIgjiIhFiIhniIiJiIiriIjNiIjviIkBiJkjiJ
lFiJlniJmJiJmriJnNiJnviJoBiKojiKpFiKpnj/iqiYiqq4iqzYiq74irAYi7I4i7RYi7Z4
i7iYi7q4i7zYi774i8AYjMI4jMRYjMZ4jMiYjMq4jMzYjM74jNAYjdI4jdRYjdZ4jdiYjdq4
jdzYjd74jeAYjuI4juRYjuZ4juiYjuq4juzYju74jvAYj/I4j/RYj/Z4j/iYj/q4j/zYj/74
jwAZkAI5kARZkAZ5kAiZkAq5kAzZkA75kBAZkRI5kRRZkRZ5kRiZkRq5kRzZkR75kSAZkiI5
kiRZkiZ5kiiZkiq5kizZki75kjAZkzI5kzRZkzZ5kziZkzq5kzzZkz75k0AZlEI5lERZlEZ5
lEiZlEq5lEzZlE75lFAZ/5VSOZVUWZVWeZVYmZVauZVc2ZVe+ZVgGZZiOZZkWZZmeZZomZZq
uZZs2ZZu+ZZwGZdyOZd0WZd2eZd4mZd6uZd82Zd++ZeAGZiCOZiEWZiGeZiImZiKuZiM2ZiO
+ZiQGZmSOZmUWZmWeZmYmZmauZmc2Zme+ZmgGZqiOZqkWZqmeZqomZqquZqs2Zqu+ZqwGZuy
OZu0WZu2eZu4mZu6uZu82Zu++ZvAGZzCOZzEWZzGeZzImZzKuZzM2ZzO+ZzQGZ3SOZ3UWZ3W
eZ3YmZ3auZ3c2Z3e+Z3gGZ7iOZ7kWZ7meZ7omZ7quZ7s2Z7u+Z7wGZ/yOZ/0WZ/2eZ/4mZ/6
uf+f/Nmf/vmfABqgAjqgBFqgBnqgCJqgCrqgDNqgDvqgEBqhEjqhFFqhFnqhGJqhGrqhHNqh
HvqhIBqiIjqiJFqiJnqiKJqiKrqiLNqiLvqiMBqjMjqjNFqjNnqjOJqjOrqjPNqjPvqjQBqk
QjqkRFqkRnqkSJqkSrqkTNqkTvqkUBqlUjqlVFqlVnqlWJqlWrqlXNqlXvqlYBqmYjqmZFqm
ZnqmaJqmarqmbNqmbvqmcBqncjqndFqndnqneJqnerqnfNqnfvqngBqogjqohFqohnqoiJqo
irqojNqojvqokBqpkjqplFqplnqpmJqpmrqpnNqpnvqpoBqqojqqpFr/qqZ6qqiaqqq6qqza
qq76qrAaq7I6q7Raq7Z6q7iaq7q6q7zaq776q8AarMI6rMRarMZ6rMiarMq6rMzarM76rNAa
rdI6rdRardZ6rdiardq6rdzard76reAaruI6ruRarubaAzUiAQCwAeuqrueqCDUSABQgrxfQ
rhVgr+8KCOk6r/WaAfiar3gAEwMAAATbrhNhAQY7AfT6rwBrBxQxsAVLsANwsBSQsPw6sA2b
BxQRsRA7sfQ6ARarsO6asXdwsAWrrutKsSRLCRyLsh67spVwsiArAR8Ls5xQsxfwsDZ7CDhb
AQvrsfLKsDvrsD9rAQtrrxI7tBprskLLtCAr/7RKGwcwIbM+a7IzG7VEy7RNq7JYG7A6S7Xz
yrUj27NdqwY6C7Fb27MhW7ZrcLZoiwFuC7VsKwZxm7RGy7VrO7dh4LZvC7dOq7duEK8qK7Ya
QLaA2wWC+7GEi7E+e7htK7gKS7Yya7iOW7mWe7mYm7mau7mc27mrcBegG7qiO7qkW7qme7qo
m7qqu7qs27qu+7qwG7uyO7u0W7u2e7uli4W4u7u827u++7vAG7zCO7zEW7zGe7zIm7tXmLzM
27zO+7zQG73SO73UW73Wew26e73au73c273e+73gG77im7rZO77me77om77qu77s274OQ4Xu
G7/yO7/0W7/2e7+vW/+++Lu//Nu//vu/AKy9+hvABFzABnzACJzAojvACtzADvzAEBzB7cvA
ElzBFnzBGJzBwkvBGtzBHvzBIBzCprK8IlzCJnzCKFzBHJzCLNzCLvzC67vCMDzDNFzDNty8
MnzDOrzDPNzD+UvCPhzEQjzERNwuUVjESJzESjzEObzETvzEUOzBTRzFVFzFVnzAU3zFWrzF
XCy/WdzFYBzGYty9XzzGZnzGaIy8ZZzGbNzGbly7a/zGcjzHdEy6cVzHeJzHevwOQLzHfvzH
gFwQVhjIhFzIenzHhpzIigzFiLzIjvzIQtzIkDzJlEzDklzJmJzJJnzJmtzJnozBnPzJojxC
ygocyqR8yqjsv6acyqzcyl7cx64cy7IcwKs8y7Z8y9tby7i8y7z8vLrcy8AczMP7y8JczMZ8
zMiczMq8zMwMzBEAADs=

--------------GJN5oDb0aW0nJ7zJh0m0tAhd--




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

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


Received: (at 79374) by debbugs.gnu.org; 20 Sep 2025 18:18:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 20 14:18:01 2025
Received: from localhost ([127.0.0.1]:47539 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v029o-0004PH-LJ
	for submit <at> debbugs.gnu.org; Sat, 20 Sep 2025 14:18:01 -0400
Received: from purple.birch.relay.mailchannels.net ([23.83.209.150]:52025)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <me@HIDDEN>) id 1v029f-0004Ov-5r
 for 79374 <at> debbugs.gnu.org; Sat, 20 Sep 2025 14:17:52 -0400
X-Sender-Id: hostingeremailsmtpin|x-authuser|lua@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 263E28E0F73;
 Sat, 20 Sep 2025 18:17:49 +0000 (UTC)
Received: from fr-int-smtpout12.hostinger.io
 (100-106-202-179.trex-nlb.outbound.svc.cluster.local [100.106.202.179])
 (Authenticated sender: hostingeremailsmtpin)
 by relay.mailchannels.net (Postfix) with ESMTPA id D12218E0D3A;
 Sat, 20 Sep 2025 18:17:47 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1758392268; a=rsa-sha256;
 cv=none;
 b=iDEsxY0e4Rk0pzP6e9VngYd/km5H4XtA692Co/+4fsgpmU/YL4hY/AmWrOI3+Q/Yv91zSk
 qp3KPKVzgD7cRyxRaBsOillZdviVN0nibRYJ6J/d14Wq5m+ASi4OGM3AV5swuyKFUKJUdz
 NUYcnt0G9jhSA0noNpBAONrPdYqVKX5ueggYoxNmi3yvvKug9n8gaGJ/oK9rndGPmGUcNr
 vabLhRXGnh0P9YOit6gAHmZtPl0sd4JuIThngy3NvyXURxSYxJzzWjqsyOSbaMMrqEgU11
 zb5nR/yule0ujWW5mg5Zo/9TlEveMZIzZB1Y6ie9bBoXq5lmGV/DHQe9mw9VRg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1758392268;
 h=from:from:reply-to:reply-to:subject:subject:date:date:
 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
 content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references:dkim-signature;
 bh=kEBAcXYXFLtzyrRdHu0sVQwL2X2HbMNfIs7LNN0+Uqg=;
 b=7DBVPEYhuO/KGawivjwRbQOSs8jXrcuOnb3+sQyU4mQpvdPquxRg2mRXlxDE/9EZg9pKDq
 PNQ0G1c2PYopoOQV3IUzKlASwiEOPKhx1V8ByaZGson2zG7mcqb4RbsRQhByemcbdGNRMM
 Ym6ypSdr9qySs9vehF3T89VjNKRdt3reho2pwVsgVpEjUqfuQK9GN4wBqdCqc2/Y/sKnTk
 9IpCnIzR3uWC0U8m55hsQ5w6TILLIkMwV71PRAoxQ8xlOFBz7jayNSXCaqBFGCIg4ItvA5
 dOfbK2tMKYP26opE4/d5LUVbV4eH4BJt4kiJbeqwsjAqFaQz/ahyc9vJsmVdtA==
ARC-Authentication-Results: i=1; rspamd-59b854cb4c-8jkmb;
 auth=pass smtp.auth=hostingeremailsmtpin smtp.mailfrom=me@HIDDEN
X-Sender-Id: hostingeremailsmtpin|x-authuser|lua@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: hostingeremailsmtpin|x-authuser|lua@HIDDEN
X-MailChannels-Auth-Id: hostingeremailsmtpin
X-Power-Versed: 315c5e8f4d5ef573_1758392269024_3666275129
X-MC-Loop-Signature: 1758392269024:3977058828
X-MC-Ingress-Time: 1758392269024
Received: from fr-int-smtpout12.hostinger.io (fr-int-smtpout12.hostinger.io
 [148.222.54.46]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.106.202.179 (trex/7.1.3); Sat, 20 Sep 2025 18:17:49 +0000
Received: from [IPV6:2804:14d:8084:9f01::1001] (unknown
 [IPv6:2804:14d:8084:9f01::1001])
 (Authenticated sender: lua@HIDDEN)
 by smtp.hostinger.com (smtp.hostinger.com) with ESMTPSA id 4cTczs01sZz1xqt;
 Sat, 20 Sep 2025 18:17:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lua.blog.br;
 s=hostingermail-a; t=1758392266;
 h=from:from:reply-to:reply-to:subject:subject:date:date:
 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
 content-type:content-type:
 content-transfer-encoding:content-transfer-encoding:
 in-reply-to:in-reply-to:references:references;
 bh=kEBAcXYXFLtzyrRdHu0sVQwL2X2HbMNfIs7LNN0+Uqg=;
 b=n2uBjSsn5BoIl+4J37X0rf9rwA6Xfg5AKX0xLbhZHCEG/CEPvNYjOsTc8am5Q8+iPS6bsI
 NTGQ2s7Wgwx+UmA4ek5RU+GIUDuG+ZAr5dNY+Oo14f1j3eEDUhupftTScCqpljahXK/3iO
 gOOsV836Fw1oR15LALXbmZ9cZBK7+zNavYrbp/V1Aa/mEzSk2RpqWtBuNNZwmSxRMxb7T0
 o6Onxj80FYq6xowOJMBdS5v9Y/u4sqdvn63JZ/MXXAdx7gbZfRWFjJv8Z5GVb8QisRr0TP
 dlunEidKDymswDQUF+D8bEfTSTxEY+/g8L0GEahz5iYCIrVpt/Ix9P3A2yTfig==
Message-ID: <b9ac7040-db29-4ff0-974d-be647f1dc466@HIDDEN>
MIME-Version: 1.0
User-Agent: Betterbird (Linux)
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
To: "J.D. Smith" <jdtsmith@HIDDEN>
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
 <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
 <m2o6r5vxmz.fsf@HIDDEN>
Content-Language: en-US, pt-BR
From: Lua Viana Reis <me@HIDDEN>
In-Reply-To: <m2o6r5vxmz.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Date: Sat, 20 Sep 2025 18:17:44 +0000 (UTC)
X-CM-Envelope: MS4xfJnyOMMHIQctbZEqJiCSUVW/xHPE0WodYkjnJI/LV8nKPfLmDYUiQj3d8JPXJWKTrmGAFN/bBsRGpkAOZL9B2dT9W5r1UW39goNB9C2SNUAt0Gq1JTqx
 aQNiPWiK1E+WBnGPUAND3gpOuJqT3/W21AzFpHd9c8NefzgzM9WSH7qk1XLz1aRUjYHJ0OZCSy1LOyQO87auRN4PDVyBJTyXARd7hDC5iqIYvhkefHgyEhVx
 HKmi3cJnOzb1NlyNjtWVm+Dv+s4ddIyBFsDDl7t8fviIrQYzp6WSDxbJVITxoOr0MlxnxhsQWcPDaJXCVdbSxU/1QyVtwMHe1WZXVDmjg2A=
X-CM-Analysis: v=2.4 cv=DJTd4DNb c=1 sm=1 tr=0 ts=68ceefca
 a=a7fqfHw7GlYXtyy7Q6Sjnw==:617 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10
 a=JtP_H48LXAlkbaxfLnIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10
X-AuthUser: lua@HIDDEN
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79374
Cc: Philip Kaludercic <philipk@HIDDEN>, 79374 <at> debbugs.gnu.org,
 =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@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>
Reply-To: me@HIDDEN
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

> Congrats on a clean and performant implementation!
Thanks for testing it! It has been working reasonably well for me too.
> One good approach to avoid this hard-coded precedence: create your own
> property alias (see `char-property-alias-alist'),
> e.g. `eglot-semtok-face', instead of re-using font-lock's
> (`font-lock-face').
This is very good to know. While implementing this, I wondered how on 
earth did emacs treat the `font-lock-face` property specially in regard 
to fontification, and found no clue about that in font-lock.el. So I 
thought it was something hard-coded in C, perhaps reminiscent of older 
days, perhaps even discouraged or deprecated (because I don't see 
font-lock-face being used in the wild that much). I will surely look 
into that.
> One small thing I noticed:
>
> When a semantic category is missing a face, the warning mentions, e.g.
>
> ⛔ Warning (eglot-semtok): No face has been associated to the semantic
> token ‘selfParameter’: consider adding a corresponding definition to
> eglot--semtokfaces
I also noticed this after submitting! It used to be a package 
"eglot-semtok" and I adapted it into a patch without paying too much 
attention. I believe we could improve this warning in other aspects too, 
like using the less intrusive `eglot--message`.

> Thanks for your contribution.  Will continue to test, but so far, so
> good!
Thanks again!

Em 20/09/2025 14:31, J.D. Smith escreveu:
> I've been testing this patch against eglot-1.18.0.20250906.134233 with
> success using the basedpyright language server.  Impressions thus far:
>
> Congrats on a clean and performant implementation!  I haven't looked in
> detail at the core algorithm, but I made some timing tests of
> refontification of a very large python buffer with and without semtok,
> and the difference was relatively small.  This is with `python-ts-mode'
> with `treesit-font-lock-level=3'.
>
> Your jit-lock function works well.  (BTW, this is in contrast with the
> advice to `font-lock-fontify-region' that LSP applies, which doesn't
> play well with other packages, e.g. returning a region of (0 . 0) when
> it doesn't have any semantic info, and not calling the underlying
> function it wraps).  So a real advance.
>
> I wonder about face priority: since your function comes before
> `font-lock-fontify-region' on the `jit-lock-functions' list, I believe
> it always overrides underlying major-mode fontification (e.g. via
> tree-sitter).
>
> One good approach to avoid this hard-coded precedence: create your own
> property alias (see `char-property-alias-alist'),
> e.g. `eglot-semtok-face', instead of re-using font-lock's
> (`font-lock-face').  The user-configurable /order/ of the `face' alias
> in this alist will then determine priority, if both properties are
> applied to the same text (you could obviously provide a convenience
> custom variable to simplify this for the user).
>
> +          (remove-list-of-text-properties beg end '(font-lock-face))
>
> This would normally be `font-lock-unfontify-buffer', but if you use your
> own alias instead of re-using font-lock's, you can also simply remove it
> from the alias alist (see `font-lock-default-function').
>
> One small thing I noticed:
>
> When a semantic category is missing a face, the warning mentions, e.g.
>
> ⛔ Warning (eglot-semtok): No face has been associated to the semantic
> token ‘selfParameter’: consider adding a corresponding definition to
> eglot--semtokfaces
>
> rather than `eglot-semantic-tokens-faces' or
> `eglot-semantic-tokens-modifier-faces'.
>
> Thanks for your contribution.  Will continue to test, but so far, so
> good!





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

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


Received: (at 79374) by debbugs.gnu.org; 20 Sep 2025 18:17:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 20 14:17:46 2025
Received: from localhost ([127.0.0.1]:47535 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v029a-0004Od-5O
	for submit <at> debbugs.gnu.org; Sat, 20 Sep 2025 14:17:46 -0400
Received: from mail-yx1-xb12d.google.com ([2607:f8b0:4864:20::b12d]:45354)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <jdtsmith@HIDDEN>)
 id 1v029S-0004O9-LP
 for 79374 <at> debbugs.gnu.org; Sat, 20 Sep 2025 14:17:43 -0400
Received: by mail-yx1-xb12d.google.com with SMTP id
 956f58d0204a3-635355713d9so271404d50.3
 for <79374 <at> debbugs.gnu.org>; Sat, 20 Sep 2025 11:17:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1758392252; x=1758997052; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=mOeeSacTWdSeWMatHhM4GjgRYouphKIReKbYPMMVeog=;
 b=XW9RnWeGqHpoD4lFCZiNrURt0M9MPavc4DFufV4hGTSP3I72BjdGFlOmGSrOryio5t
 lEJu+x7Cw6xHzBOwbaQaRGzRYoM89HpSKABI73fXJHNERSJeioucmLwSQsUCE6NK76LH
 hJGpgrzHC9yUUGiCXtgWXsoejN6JJTZzpj6K9uPtKUAwCMEF6tehRw7Lc4kbI0s6ACli
 01nzuX4tlu0MfVPb9ToBCtppsTGJ9lkpH+ILGVNfjPRq2xQTwo8n7p3CLEjUWnM/L9Nn
 N1Rh37753TaqbYs22P2kwFTyknO7uXmwvqQRabZDJAfq57IlKcEgRqNp7JsZblXKkgZU
 8YKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1758392252; x=1758997052;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=mOeeSacTWdSeWMatHhM4GjgRYouphKIReKbYPMMVeog=;
 b=qcjyRVvG8ZytSfVQ+SdQD81aFDJvjxK1Co5qN1yZ+na/a2Zz3KrVFMyTJBmwn9B6Lc
 9jEV40+AsEfXaFMIEZQ4Gq313pzK5Y+xghsyV5OKLCpwgL8oUk1SqlVlpwUOgxalc3ny
 fxNrKqsdQx2bblDR+nDHNgqcUdRAhj2vUKcQFmbh/gPw9uu8oah8LdauA+y1FyP3WxVE
 cVPbI6p/rr8kUtONUUqOyuB20acHtbAkyHpOEkTzt/Y+AjA2R9HI/qa4dzRS6IsCmzK7
 n5Qlb6lN6ODRpVRr+i767CoWdhNnGiijuHCRjaQij7fJiRYK7HPZv4UMOPtUvuVTvwK4
 hVew==
X-Gm-Message-State: AOJu0Yz+fzrD0WsKso7b4EBGlYWiI+gkfIYSZ7Xvslkfwu5ABQ/zZjSl
 YPBM4QjgruDPkq7EUg9+7BKiDUScN868UQ/avhX8GPopjp6zU+acqa0AqfPZAw==
X-Gm-Gg: ASbGncvaV6tmwpzMST8Yjt2UCJd0/gfmxZ5FuzeCBOpPVLQV165ngsdhXM2MXPIjdnt
 8ovoXyvgOdpQ8LqyKA0pm2DyPfR6jnzuykCzomMWzF25cbm9ATYtcnsg9BxtDFfhnPwWj8v53a7
 cLu/Wp1+vqdRSrrFEHNTp1HqrE8hgceANY0uN8iaUSmWl0b2BaZPacsEno/Fse6tkgYSPGnbrjY
 eOO2hpbSpVJv2MNI2NGprCreaMALxZugz+HIliPR9hy732Q8KRdm2WAQmrDTruhl7QmbVr/70ks
 1PaRPUYSxGw8df/+oyw0WEe8feqbJYbAxeX+lpUDlVzOXk2fylxUl6Tx+nDr/6Kq3npc3TwTR5q
 HZASDEBWllFwOuoSGoYX+wE13nVF4z86wl/BISfHX+Mfw7su4uwSWk+yA
X-Google-Smtp-Source: AGHT+IG8sMnXIUlg1W6/VMXywyxasVnQ+sMdOJ596eYwima5/XiMhf5JYNOd3jPnDYp43liMIQGULg==
X-Received: by 2002:a05:690e:4316:b0:635:2cdd:4ba9 with SMTP id
 956f58d0204a3-6352cdd4f9emr2414974d50.34.1758392252404; 
 Sat, 20 Sep 2025 11:17:32 -0700 (PDT)
Received: from moss-6 (cm-24-53-143-223.buckeyecom.net. [24.53.143.223])
 by smtp.gmail.com with ESMTPSA id
 3f1490d57ef6-ea5ce728fb8sm2734496276.10.2025.09.20.11.17.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 20 Sep 2025 11:17:31 -0700 (PDT)
From: "J.D. Smith" <jdtsmith@HIDDEN>
To: "Lua V. R." <me@HIDDEN>
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
In-Reply-To: <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN> (Lua V. R.'s
 message of "Tue, 2 Sep 2025 23:18:35 +0000 (UTC)")
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
Date: Sat, 20 Sep 2025 14:17:31 -0400
Message-ID: <m2frchvvic.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: 79374
Cc: Eshel Yaron <me@HIDDEN>, 79374 <at> debbugs.gnu.org,
 =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@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 (-)

"Lua V. R." <me@HIDDEN> writes:

BTW, since semantic highlighting may be coming to elisp too (see
https://git.sr.ht/~eshel/semel), perhaps it makes sense to deploy a
small set of new face names for a subset of semantic categories.  These
could then be used consistently in eglot, semel, and elsewhere.




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

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


Received: (at 79374) by debbugs.gnu.org; 20 Sep 2025 18:06:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 20 14:06:42 2025
Received: from localhost ([127.0.0.1]:47439 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v01yr-0003Zf-Rl
	for submit <at> debbugs.gnu.org; Sat, 20 Sep 2025 14:06:42 -0400
Received: from mail-yw1-x112c.google.com ([2607:f8b0:4864:20::112c]:53601)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <jdtsmith@HIDDEN>)
 id 1v01yj-0003Yc-Sl
 for 79374 <at> debbugs.gnu.org; Sat, 20 Sep 2025 14:06:38 -0400
Received: by mail-yw1-x112c.google.com with SMTP id
 00721157ae682-749399349ddso2646487b3.3
 for <79374 <at> debbugs.gnu.org>; Sat, 20 Sep 2025 11:06:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1758391583; x=1758996383; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=L+7gsF9QvBBJ8DPMdThY9F+fkzMZsEC9PU5QyZtpIsU=;
 b=CL5ZIQPHqzUGRG1dw+ONflQPKwhNo8XRQX2Tr8uegKRNNEjl3XZu3f+DJWHs0y3kFJ
 EM90LFCgkEHmae/dlfUXEpky09wbK34lER76r2K5J+7VYRtep1imjzY10NcrM2ape189
 mkmbeWKCZWcPszf4triaqK7pdOZv9zUhlhGfCFMOppwE5eH1KTRSYaD1NGCIsHNsyLb8
 MSl6xPEzrN+5zOSNPa/yZc6YNvdcL1JQK1yryw7z1ZCVBNtwkE7HYc8KPok+4x102r5d
 Nq+PJi93r9IMOx5WLbPJp9lPMvgQ4Lmv9ay7ZE9ESifbUy+ocL8fUdP9bRO9s3CVIB+m
 ulcw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1758391583; x=1758996383;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=L+7gsF9QvBBJ8DPMdThY9F+fkzMZsEC9PU5QyZtpIsU=;
 b=PFgvb3ovIPIe3od7wuUhp5reBAgMVo1FyPa81FmfFlMnXqyGmhTyfSuYvftJ7PT4+f
 nWmScQQZH0xH15DfLBSycoZM1Sj4P4I2BLaAIxfFAvD9uu/0bYMa8c3k4q4SLdKmrwH5
 jmJInzVt6dvR9TmZ4xQcxeRuv/l1zgetiehadcKYikERpuO/xkkKmBNNf0MHCwWjE6rj
 QYdO05Ey54fgIcQGRpqhePJTGFRBoSIrrWYVAy6j8b2TzsLBmZZp3LCeM0IpYT+5RM6n
 A1ZeXoBi7KQiTFpJJR9Rxu7iR2S6fin3JIdK6PMhJIylPokCMtjCsRqAMfPMU47iLuYq
 01eA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWoKJVAs1MZxBPFejAoFX8u/PXEWGSKNsynkJDOqHM5UVXBl4BsGePFzGaLcsKiIyqj792Gww==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxPeISlzTXEM9mPAdOrQNj/Vhd6ZjKzESgvx5kCCzo2XZUEBlKg
 5x/m9e+LxhNjVtz47M2fMsx7rabWC7mEqUwKVibnaP910tdULlmWwlHRZ8AGJQ==
X-Gm-Gg: ASbGncuaZx/GWAWyNAnk3fYPH6PKcalD4owa3nn8OmfEQqTNJumxmJXcLi2WLyu6T8/
 a0wslzP5kEkZ6qWndrUpd4PxrrZAstXwo99b4wUsqANZBizE1xuhM+Z9hN6hXuuj9OlC/WA/xXU
 Y8YeyoCvf9NNKPRsPoiHPWqrvTf8ib0mqJoC1bFkGHldY+Rgq8rEbuKB9w8kWNPhXyYeYg/hL+j
 XcvZvOwenTKDyWbr+M1oDNJq4t2CHamhjRtMWpFvxtdz7G5owPdE/xbLp4Jv2B2ON9Mj6+pIRmS
 mBMEsiYmwhVp9ndiRHQzPpe2TjOwRu406Dfv86ZFRym0KMP4VVSz5V0GFeqOWIc56tVCe8N4dvw
 pt+G87uptMW37WwfCCz6w+RbkjQPJlDseCURX93C53OFZ2aVldESFVWDO
X-Google-Smtp-Source: AGHT+IEl7J8/nT27vjDCNbrSLyX+XMSWnyycPdqgtARMvYx8in3poGOGZQwceVsjRD3y9Y16zLxgsw==
X-Received: by 2002:a05:690c:6f90:b0:742:a0be:e3fd with SMTP id
 00721157ae682-742a0beeec4mr45218907b3.17.1758391582611; 
 Sat, 20 Sep 2025 11:06:22 -0700 (PDT)
Received: from moss-6 (cm-24-53-143-223.buckeyecom.net. [24.53.143.223])
 by smtp.gmail.com with ESMTPSA id
 00721157ae682-739716bddf2sm22196457b3.15.2025.09.20.11.06.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 20 Sep 2025 11:06:22 -0700 (PDT)
From: "J.D. Smith" <jdtsmith@HIDDEN>
To: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
In-Reply-To: <CALDnm523KVxY_UTOmRx25ETWnyUV=i-kVQh6+stU_8kecgggaQ@HIDDEN>
 (=?utf-8?Q?=22Jo=C3=A3o_T=C3=A1vora=22's?= message of "Sat, 20 Sep 2025
 18:52:26 +0100")
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
 <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
 <m2o6r5vxmz.fsf@HIDDEN>
 <CALDnm523KVxY_UTOmRx25ETWnyUV=i-kVQh6+stU_8kecgggaQ@HIDDEN>
Date: Sat, 20 Sep 2025 14:06:21 -0400
Message-ID: <m2jz1tvw0y.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79374
Cc: "Lua V. R." <me@HIDDEN>, Philip Kaludercic <philipk@HIDDEN>,
 79374 <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 (-)

Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN> writes:

> Thanks for the testing, JD. Are you using in conjunction with inlay hints=
? Lua reported some misinteractions...
>

I typically disable inlay-hints unless I need them.  I've re-enabled and
haven't noticed any issues in a few minutes of testing.  I'd be
surprised they interact from a display POV, since one uses overlays and
the other text properties.




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

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


Received: (at 79374) by debbugs.gnu.org; 20 Sep 2025 17:52:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 20 13:52:52 2025
Received: from localhost ([127.0.0.1]:47312 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v01lT-0002JK-BT
	for submit <at> debbugs.gnu.org; Sat, 20 Sep 2025 13:52:52 -0400
Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]:52603)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>)
 id 1v01lK-0002IV-Vn
 for 79374 <at> debbugs.gnu.org; Sat, 20 Sep 2025 13:52:48 -0400
Received: by mail-ot1-x32e.google.com with SMTP id
 46e09a7af769-758a28587e5so3909123a34.1
 for <79374 <at> debbugs.gnu.org>; Sat, 20 Sep 2025 10:52:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1758390757; x=1758995557; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=uH23Bv3pdBKH9y7XhMKw2wCyJxHD64QS1oPyhbLqF/Q=;
 b=IKtbfr6jLpG7kRaf28p8QysqbX1l5TFD5+QfZJW2aw+dOTIjgVADaA4+JLAegEbDvS
 21zljjR0uyoUP4uJ4ttbIcFjjvOVaS916y8tAvqIKklaNFxLwRYNU1PJnfow5T3FUTly
 lWnmoNQ3wXSrd0NXO1+KIaxaiZ/Y1Xz/XgtY9uAvmzSn8hFE1eq+N1wN3O7mUj1pKXXd
 gXWFO8xI2WJGZdJZHQgS4BFvjZgr6wSbBAU85544nS2U0T9UnkYeuyFSym5LINymo3Og
 HgjX+Xmpz0rRyqSZkk15rcJcKwEVsQhxrjcN3nKJtcDttGcgxcrbK2tg136cVfn/lqQx
 4vCQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1758390757; x=1758995557;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=uH23Bv3pdBKH9y7XhMKw2wCyJxHD64QS1oPyhbLqF/Q=;
 b=JIhBAjiypqWV5IXq7McjY4x7K0IGHW80afpGKPejAwG2EjP7llIhUVo+Y6eJjoEZ36
 Ed5dxiic+giCoq1pt/R34pNwxttojOuX/J8wWiz33600ekkCwLU+qqMOEZlVFwmnX4Pi
 cZvq0RG0xmO+muTztnknTew4AYG3xdlA84FGETkctUc+3wAMRm2pZNMEPK/nEa5qLrAN
 LHBqhDXitdrdEmi/iQg4vabkN/T0HoJk6WihKE+WChoevbh+UHD8RzX7aGEM0/oJB4sU
 BntOUbT9suShZnXdz/3S+tEL7BT3/syMQNu94at9+jPPQLc9G3R9HMBOgMDKYbvUKUiY
 BHQQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCVsWDS88/rktc0WLJ42MY4qCCh55NrczjkMvhUqU9NbbkYs05Zvd7T/VASRjcn/R9cwfGNgyA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyWjGrq0jPpe7r8HWHmKGg37U7PVaXLx5Yv+CGU++UbeYFT4ZZH
 j5rdSTYE2x19LXB+PYCJ1PUvZo4pi9R/EyVoVV74urDlUAv/vea0TCQYv25CAhCXObi3nNlOh39
 QiA+6ZVcq4Okbcpm50qxW+lMElmG6To4=
X-Gm-Gg: ASbGnctfRvOqoHajMH2//VpK1Vu0SPVEdiE0u4Vw5hyRTNuXdrkAUnpE+sUNo0baO3E
 KUvJkY0XEIq37SfefCxro1sKAUMu61KcrmvTQ1RwQuiau+9zpBbE4am+oE+fDr8mp5lhPpXXTX5
 Wyp757yj7N2d+X0tJd9PX/SYYcFjkv2mENdceKF+HiflbcnckmE6g8HcO0DSwxKNvLys5dKjfcZ
 TJ1NDw=
X-Google-Smtp-Source: AGHT+IH4VvS5QPB2W1Sk8Tyy8p1+MwgwYtNxywdLvKeJBao4z1cuL8Xa0VXisir29LFlY6pcyS+QexfYvDmsC50N0tE=
X-Received: by 2002:a05:6808:2212:b0:43d:220f:a695 with SMTP id
 5614622812f47-43d6c2a0c1fmr3623283b6e.41.1758390756709; Sat, 20 Sep 2025
 10:52:36 -0700 (PDT)
MIME-Version: 1.0
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN> <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
 <m2o6r5vxmz.fsf@HIDDEN>
In-Reply-To: <m2o6r5vxmz.fsf@HIDDEN>
From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
Date: Sat, 20 Sep 2025 18:52:26 +0100
X-Gm-Features: AS18NWCzuTEaK-V0UKZfUv0K5wyrAhIXwpWj1NubEL9uBuMiXHf2yYdF-aRvTws
Message-ID: <CALDnm523KVxY_UTOmRx25ETWnyUV=i-kVQh6+stU_8kecgggaQ@HIDDEN>
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
To: "J.D. Smith" <jdtsmith@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000006e1b55063f3f405c"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79374
Cc: "Lua V. R." <me@HIDDEN>, Philip Kaludercic <philipk@HIDDEN>,
 79374 <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 (-)

--0000000000006e1b55063f3f405c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Thanks for the testing, JD. Are you using in conjunction with inlay hints?
Lua reported some misinteractions...

Jo=C3=A3o T=C3=A1vora

On Sat, Sep 20, 2025, 18:31 J.D. Smith <jdtsmith@HIDDEN> wrote:

> "Lua V. R." <me@HIDDEN> writes:
>
> > Hi Philip,
> >
> > Em 03/09/2025 05:01, Philip Kaludercic escreveu:
> >> As mentioned on Emacs-devel, shouldn't this be
> `eglot-semantic-tokens-mode'.
> > Thanks for catching this :) I fixed it among other things, and I
> > apologize for being unfamiliar with the e-mail git workflow. I don't
> > know if I should send a patch on top of the previous patch, but I'm
> > sending a squashed one.
> >
> > In this new patch I also removed a "hash" I used in attempt to avoid a
> > burst of requests, because it was not working in some particular
> > situations (I can explain if you want). Now, due to how jit-lock
> > works, Eglot may send two requests after a didChange if the server
> > does not support delta requests. But this was also the case in the
> > version with the hash, so alas, it was just complicating things.
>
> I've been testing this patch against eglot-1.18.0.20250906.134233 with
> success using the basedpyright language server.  Impressions thus far:
>
> Congrats on a clean and performant implementation!  I haven't looked in
> detail at the core algorithm, but I made some timing tests of
> refontification of a very large python buffer with and without semtok,
> and the difference was relatively small.  This is with `python-ts-mode'
> with `treesit-font-lock-level=3D3'.
>
> Your jit-lock function works well.  (BTW, this is in contrast with the
> advice to `font-lock-fontify-region' that LSP applies, which doesn't
> play well with other packages, e.g. returning a region of (0 . 0) when
> it doesn't have any semantic info, and not calling the underlying
> function it wraps).  So a real advance.
>
> I wonder about face priority: since your function comes before
> `font-lock-fontify-region' on the `jit-lock-functions' list, I believe
> it always overrides underlying major-mode fontification (e.g. via
> tree-sitter).
>
> One good approach to avoid this hard-coded precedence: create your own
> property alias (see `char-property-alias-alist'),
> e.g. `eglot-semtok-face', instead of re-using font-lock's
> (`font-lock-face').  The user-configurable /order/ of the `face' alias
> in this alist will then determine priority, if both properties are
> applied to the same text (you could obviously provide a convenience
> custom variable to simplify this for the user).
>
> +          (remove-list-of-text-properties beg end '(font-lock-face))
>
> This would normally be `font-lock-unfontify-buffer', but if you use your
> own alias instead of re-using font-lock's, you can also simply remove it
> from the alias alist (see `font-lock-default-function').
>
> One small thing I noticed:
>
> When a semantic category is missing a face, the warning mentions, e.g.
>
> =E2=9B=94 Warning (eglot-semtok): No face has been associated to the sema=
ntic
> token =E2=80=98selfParameter=E2=80=99: consider adding a corresponding de=
finition to
> eglot--semtokfaces
>
> rather than `eglot-semantic-tokens-faces' or
> `eglot-semantic-tokens-modifier-faces'.
>
> Thanks for your contribution.  Will continue to test, but so far, so
> good!
>

--0000000000006e1b55063f3f405c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto"><div>Thanks for the testing, JD. Are you using in conjunc=
tion with inlay hints? Lua reported some misinteractions...</div><div><br><=
/div><div data-smartmail=3D"gmail_signature">Jo=C3=A3o T=C3=A1vora</div></d=
iv><br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" cl=
ass=3D"gmail_attr">On Sat, Sep 20, 2025, 18:31 J.D. Smith &lt;<a href=3D"ma=
ilto:jdtsmith@HIDDEN">jdtsmith@HIDDEN</a>&gt; wrote:<br></div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex">&quot;Lua V. R.&quot; &lt;<a hre=
f=3D"mailto:me@HIDDEN" target=3D"_blank" rel=3D"noreferrer">me@HIDDEN=
g.br</a>&gt; writes:<br>
<br>
&gt; Hi Philip,<br>
&gt;<br>
&gt; Em 03/09/2025 05:01, Philip Kaludercic escreveu:<br>
&gt;&gt; As mentioned on Emacs-devel, shouldn&#39;t this be `eglot-semantic=
-tokens-mode&#39;.<br>
&gt; Thanks for catching this :) I fixed it among other things, and I<br>
&gt; apologize for being unfamiliar with the e-mail git workflow. I don&#39=
;t<br>
&gt; know if I should send a patch on top of the previous patch, but I&#39;=
m<br>
&gt; sending a squashed one.<br>
&gt;<br>
&gt; In this new patch I also removed a &quot;hash&quot; I used in attempt =
to avoid a<br>
&gt; burst of requests, because it was not working in some particular<br>
&gt; situations (I can explain if you want). Now, due to how jit-lock<br>
&gt; works, Eglot may send two requests after a didChange if the server<br>
&gt; does not support delta requests. But this was also the case in the<br>
&gt; version with the hash, so alas, it was just complicating things.<br>
<br>
I&#39;ve been testing this patch against eglot-1.18.0.20250906.134233 with<=
br>
success using the basedpyright language server.=C2=A0 Impressions thus far:=
<br>
<br>
Congrats on a clean and performant implementation!=C2=A0 I haven&#39;t look=
ed in<br>
detail at the core algorithm, but I made some timing tests of<br>
refontification of a very large python buffer with and without semtok,<br>
and the difference was relatively small.=C2=A0 This is with `python-ts-mode=
&#39;<br>
with `treesit-font-lock-level=3D3&#39;.<br>
<br>
Your jit-lock function works well.=C2=A0 (BTW, this is in contrast with the=
<br>
advice to `font-lock-fontify-region&#39; that LSP applies, which doesn&#39;=
t<br>
play well with other packages, e.g. returning a region of (0 . 0) when<br>
it doesn&#39;t have any semantic info, and not calling the underlying<br>
function it wraps).=C2=A0 So a real advance.<br>
<br>
I wonder about face priority: since your function comes before<br>
`font-lock-fontify-region&#39; on the `jit-lock-functions&#39; list, I beli=
eve<br>
it always overrides underlying major-mode fontification (e.g. via<br>
tree-sitter).<br>
<br>
One good approach to avoid this hard-coded precedence: create your own<br>
property alias (see `char-property-alias-alist&#39;),<br>
e.g. `eglot-semtok-face&#39;, instead of re-using font-lock&#39;s<br>
(`font-lock-face&#39;).=C2=A0 The user-configurable /order/ of the `face&#3=
9; alias<br>
in this alist will then determine priority, if both properties are<br>
applied to the same text (you could obviously provide a convenience<br>
custom variable to simplify this for the user).<br>
<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (remove-list-of-text-properties beg end=
 &#39;(font-lock-face))<br>
<br>
This would normally be `font-lock-unfontify-buffer&#39;, but if you use you=
r<br>
own alias instead of re-using font-lock&#39;s, you can also simply remove i=
t<br>
from the alias alist (see `font-lock-default-function&#39;).<br>
<br>
One small thing I noticed:<br>
<br>
When a semantic category is missing a face, the warning mentions, e.g.<br>
<br>
=E2=9B=94 Warning (eglot-semtok): No face has been associated to the semant=
ic<br>
token =E2=80=98selfParameter=E2=80=99: consider adding a corresponding defi=
nition to<br>
eglot--semtokfaces<br>
<br>
rather than `eglot-semantic-tokens-faces&#39; or<br>
`eglot-semantic-tokens-modifier-faces&#39;.<br>
<br>
Thanks for your contribution.=C2=A0 Will continue to test, but so far, so<b=
r>
good!<br>
</blockquote></div>

--0000000000006e1b55063f3f405c--




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

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


Received: (at 79374) by debbugs.gnu.org; 20 Sep 2025 17:31:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 20 13:31:51 2025
Received: from localhost ([127.0.0.1]:47092 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1v01R8-0007vD-9r
	for submit <at> debbugs.gnu.org; Sat, 20 Sep 2025 13:31:51 -0400
Received: from mail-yw1-x1133.google.com ([2607:f8b0:4864:20::1133]:55661)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <jdtsmith@HIDDEN>)
 id 1v01Qx-0007sX-VR
 for 79374 <at> debbugs.gnu.org; Sat, 20 Sep 2025 13:31:44 -0400
Received: by mail-yw1-x1133.google.com with SMTP id
 00721157ae682-74109e2ed70so9910677b3.3
 for <79374 <at> debbugs.gnu.org>; Sat, 20 Sep 2025 10:31:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1758389494; x=1758994294; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=BRSNTuAEWrnfLUwptCXn8vGWQD3nL2CLrdKP2d9sMHY=;
 b=avxkVRlgzUX4FMV6GAYNHd4fO9gpQ8EWGxB7RofQWg1acYPF/PY7vqTHc75vRVErso
 zM7Z9p+sZ3HBFUN9RqgRcYzQKJ9Z5YAkBLU+1SLqkh1WGTEoG+dkVu1SZ9pRWk0X6wV8
 VyWa2MmOuDoBJF2RmcZSUIro1oosY5saLMXM3izk8tZ8kwAO2MkB2RsJrOhI99QSzQSd
 PcPgvNNRebfTsSxtNmAnNh3/mq2ElB66tfL25CLtsg0/JGRhezauDDGcuD3fv8ksgdAQ
 Dkk5bKl5Zi5ZWRcygdQay4QYNWW7KSQNIF62UkFMomgL1rPn6gHcNczS/v7RtonUlFgD
 LPUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1758389494; x=1758994294;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=BRSNTuAEWrnfLUwptCXn8vGWQD3nL2CLrdKP2d9sMHY=;
 b=jaS/1Ak8sQ3Ohxl1MM2BpvDTYwuWoZ9NiQcn1S/6eOiNi5hULMAZdqKm1vwg+v1k0w
 XkDzYW4dB50atRaPgWOkFhljlglF2dqZtHdPnX73AvS2nzxBuRwEM10SB1CouU8bdAMV
 1NbRi+Abg5gj/H963sOdDX+KafQnXWB43anybJ4MAaLrFPdTr9JRL1Wf3t4Lzia3LYh7
 AAX392/F1nNaPFYCvL/4LjaY8Xtr4zcXflMY0DjgoXWUyK4sVigngVFWQPn+MyZXhXzv
 7brQav6kjmUssMZGPiTC6PLQ/cjCMKIa/VnsZPpEYhGx8saelwMchnG8Yo7R4IcFnZmT
 jmEA==
X-Forwarded-Encrypted: i=1;
 AJvYcCUf/fLQFSat96ngaX0XlhVdbZN2AwxgKV59OddLcSCiSgSXG0SD4SxzcEWAZ85QdWc4/IB+FA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzqHmvIj36B25DQD2F74MUwN44ICBIOCWgvrrjaCF/yMJ3FlIi+
 m6J2FS68nn1xUmo4NWUFKG1qmFR3wRWGnMGlAXhl3hyKcSi6F/Jq25BB
X-Gm-Gg: ASbGncvs1VwnDyY3A/XtBFKnVIZtKgHrzE8qOWSZJkpv6sDV1WslVUuOxo4+KGJ2Vm4
 ekcZrxYGLyTYBR2Bgg/Gwtnl8Z+lh2fGxvR7NJ25gqmqwCyJZecuDQH4ZFJDDNx5hDRSN0UKJJ/
 v7xE6qRM2EqUv2SyphFFEZx2LItgmq9hCNC7BGleyriSqeGKTrZTWQKWcGZTng06+Y6w/yyLbex
 1DrpnbzhitRmD+qPJH7MLlRnHSFBDqxrYbF30IlOeZ8gQOzXnWc9brlZeN9GoA8+h2yyXuJhoFY
 A5zJRBWoKe1vGF/HFypLogQJuoXicX1t7hL+v4FNSkzVrl2fOKPNYd13cp4pqDOrEJ1RE3RNUOe
 lXRVcZCW9jF5XBjyGgXsaa9sjZ8QQVJhE/AwjpHUWGaHDDTPmtulLxsI3
X-Google-Smtp-Source: AGHT+IHhSgbuFKBlNfgbJC9ZWiFPPynw7EvDY/cJ2g6m901u5PwNKe/GoBnh9ozcMqrz0My22XF4GA==
X-Received: by 2002:a05:690c:c81:b0:71c:bf3:afb0 with SMTP id
 00721157ae682-73d3c013ca7mr57518477b3.40.1758389493623; 
 Sat, 20 Sep 2025 10:31:33 -0700 (PDT)
Received: from moss-6 (cm-24-53-143-223.buckeyecom.net. [24.53.143.223])
 by smtp.gmail.com with ESMTPSA id
 00721157ae682-7397186ac2dsm22441617b3.42.2025.09.20.10.31.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 20 Sep 2025 10:31:33 -0700 (PDT)
From: "J.D. Smith" <jdtsmith@HIDDEN>
To: "Lua V. R." <me@HIDDEN>
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
In-Reply-To: <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN> (Lua V. R.'s
 message of "Thu, 4 Sep 2025 00:02:51 +0000 (UTC)")
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
 <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
Date: Sat, 20 Sep 2025 13:31:32 -0400
Message-ID: <m2o6r5vxmz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79374
Cc: Philip Kaludercic <philipk@HIDDEN>, 79374 <at> debbugs.gnu.org,
 =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@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 (-)

"Lua V. R." <me@HIDDEN> writes:

> Hi Philip,
>
> Em 03/09/2025 05:01, Philip Kaludercic escreveu:
>> As mentioned on Emacs-devel, shouldn't this be `eglot-semantic-tokens-mo=
de'.
> Thanks for catching this :) I fixed it among other things, and I
> apologize for being unfamiliar with the e-mail git workflow. I don't
> know if I should send a patch on top of the previous patch, but I'm
> sending a squashed one.
>
> In this new patch I also removed a "hash" I used in attempt to avoid a
> burst of requests, because it was not working in some particular
> situations (I can explain if you want). Now, due to how jit-lock
> works, Eglot may send two requests after a didChange if the server
> does not support delta requests. But this was also the case in the
> version with the hash, so alas, it was just complicating things.

I've been testing this patch against eglot-1.18.0.20250906.134233 with
success using the basedpyright language server.  Impressions thus far:

Congrats on a clean and performant implementation!  I haven't looked in
detail at the core algorithm, but I made some timing tests of
refontification of a very large python buffer with and without semtok,
and the difference was relatively small.  This is with `python-ts-mode'
with `treesit-font-lock-level=3D3'.

Your jit-lock function works well.  (BTW, this is in contrast with the
advice to `font-lock-fontify-region' that LSP applies, which doesn't
play well with other packages, e.g. returning a region of (0 . 0) when
it doesn't have any semantic info, and not calling the underlying
function it wraps).  So a real advance.

I wonder about face priority: since your function comes before
`font-lock-fontify-region' on the `jit-lock-functions' list, I believe
it always overrides underlying major-mode fontification (e.g. via
tree-sitter).

One good approach to avoid this hard-coded precedence: create your own
property alias (see `char-property-alias-alist'),
e.g. `eglot-semtok-face', instead of re-using font-lock's
(`font-lock-face').  The user-configurable /order/ of the `face' alias
in this alist will then determine priority, if both properties are
applied to the same text (you could obviously provide a convenience
custom variable to simplify this for the user).

+          (remove-list-of-text-properties beg end '(font-lock-face))

This would normally be `font-lock-unfontify-buffer', but if you use your
own alias instead of re-using font-lock's, you can also simply remove it
from the alias alist (see `font-lock-default-function').

One small thing I noticed:

When a semantic category is missing a face, the warning mentions, e.g.

=E2=9B=94 Warning (eglot-semtok): No face has been associated to the semant=
ic
token =E2=80=98selfParameter=E2=80=99: consider adding a corresponding defi=
nition to
eglot--semtokfaces

rather than `eglot-semantic-tokens-faces' or
`eglot-semantic-tokens-modifier-faces'.

Thanks for your contribution.  Will continue to test, but so far, so
good!




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

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


Received: (at 79374) by debbugs.gnu.org; 13 Sep 2025 11:17:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 13 07:17:33 2025
Received: from localhost ([127.0.0.1]:54022 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1uxOG5-0003rN-33
	for submit <at> debbugs.gnu.org; Sat, 13 Sep 2025 07:17:33 -0400
Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]:57468)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>)
 id 1uxOG1-0003qx-9b
 for 79374 <at> debbugs.gnu.org; Sat, 13 Sep 2025 07:17:30 -0400
Received: by mail-ot1-x331.google.com with SMTP id
 46e09a7af769-750b77699b4so2186476a34.2
 for <79374 <at> debbugs.gnu.org>; Sat, 13 Sep 2025 04:17:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1757762243; x=1758367043; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=RaqjOMNfQd8B8FPtEiHmF+xaqEV9gM0GwfSsVkCDY64=;
 b=KXh8f+vgh88WxObo1RIIIW6ymek1zgE6JUHPadwWkfqqUBJ/PVmvb31FQf4EHYqW05
 ukLnrkAOOlWMWexdpuqFVQXzOcaRA5EgX83gwCnNWDndwDNdrWCr2ZAAzgCVQIS/CqRF
 ez9pNHPcOT7vuFCf2vsroarhPIDox3pKhO3mtfUwP7KVk1ajrkcocZ5QgZTE9ewncWqs
 gm1SxxtGleo0vqPvNdDQJ6u78UfuiZqwyzWmXE6Wju2lLyQxv2MvSoQGeoKu5YvtYOvV
 4STTxTrkIsykN0IHvDOIu5GWVdodROqDlrnJGiS8EGPY1FcevYscEonBlDQxN0Kws8gb
 n8tg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1757762243; x=1758367043;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=RaqjOMNfQd8B8FPtEiHmF+xaqEV9gM0GwfSsVkCDY64=;
 b=NmDrCVZHsE1dxR+obZZyNqlgAGDYwQL0hPKycA1t5aw/kX6WzuuqJi2jNwYorvg13l
 Ou/LYvHMLKS7ozOPALo9ezVxoAsvaUaZcd7+fu9dhbppCTHpmO/b+Lkpy5nJpE0wcd4b
 YdPLOcK2RtiISRIPDLYpd+hJ81IfozebiuuOpC7VlLsRBXrT60ntJqJq+ANWjS/SltMH
 aNfXyWOsASMDdOIG/xhrmm3zgd35VnX1SlLBaj9QhnICDkQN6SiiSxwZPlrVhlvGj70o
 LzGLZXYHhzZiBKcJ+DLEBYFrI2vaQIVDEVH8K6JKdrR6yB+EGaFiOcdpK81HFp4ZQxFp
 stIw==
X-Forwarded-Encrypted: i=1;
 AJvYcCXZvS3T3QAtt08S9dQXtqrnAYT3w1kWWTfjtp0xzxdOhIuJl1Q7D7cIOUlU8/Jz9AwExUA8cQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyOns4iUTFIDF/RrJboDQ9nT2FC7wh/JYJdNxaxhCgTruwv3fhB
 tCoTfjftt/1AWpf5kqoRPBwvg6r3tMAmN5auGk/r/4GKRFjulI0Rg0j+CJ8TbMh8usJL4xjc1MJ
 lxnufmjokYabywG3LyatqNRo3xFfKJjw=
X-Gm-Gg: ASbGncslj9u1a5Ftz5ikOUrtjMDmTspS9UmQgSQB6c11dpmbeZ5fnIwQTdwQmxBYdjK
 eNNvWFpcKsYsgYh/S4NWuFoWc3vTKElhPT3tIyf7pDnSbGkjmVeVQCaXfRQVXKOhOvAbDBeSz/3
 Le9T6AnpQ6uz0+nZD9sHpXOyiW+LhObkw5ez/vhj9NASYaD620YIo1iZS6AF+JXfeVYcU4MioVQ
 HZVyns=
X-Google-Smtp-Source: AGHT+IH6XBDr8Ne+/D10CZYRMXef2ZU7K1R/5G47Cnxld8Ath2GxLhUG5N1RXhi40Fvas6e02+VXbH40EWOCdpV7c0U=
X-Received: by 2002:a05:6830:4d93:10b0:756:a322:2f8 with SMTP id
 46e09a7af769-756a32206a2mr259813a34.5.1757762243264; Sat, 13 Sep 2025
 04:17:23 -0700 (PDT)
MIME-Version: 1.0
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN> <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN> <86348qss28.fsf@HIDDEN>
 <CALDnm53cba7uWDOrWSX5H7qGcGdxV9wRh=x0=Rxxnvb3U+F5Sg@HIDDEN>
 <864it6r588.fsf@HIDDEN>
In-Reply-To: <864it6r588.fsf@HIDDEN>
From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
Date: Sat, 13 Sep 2025 12:18:23 +0100
X-Gm-Features: Ac12FXwVVTUJrBCo75QIFCZ2f0m1NMUD9JXNXsX6DnKe57raEUFLg5rWi7FyQkE
Message-ID: <CALDnm50OXd8MKtyXhSMD2bhD0sz1fCOemjRV+YTrQjsNX=7F+g@HIDDEN>
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000001c0703063eacea1a"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79374
Cc: me@HIDDEN, philipk@HIDDEN, 79374 <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 (-)

--0000000000001c0703063eacea1a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, Sep 13, 2025 at 11:56=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote=
:

> > From: Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN>
> > Date: Sat, 13 Sep 2025 10:12:38 +0100
> > Cc: me@HIDDEN, philipk@HIDDEN, 79374 <at> debbugs.gnu.org
> >
> > On Sat, Sep 13, 2025 at 8:57=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wr=
ote:
> >
> >  Jo=C3=A3o, any comments on the patch?  Should I install it?
> >
> > No, don't . This is a significant feature which is missing testing,
> > documentations and a much more thorough review.  I don't
> > have time for that right now.
> >
> > I can say that, from a very cursory review, it is the best version
> > of this  feature ever proposed to Eglot.
>
> OK, thanks.  Should I ping you about this at some later date?
>

Yes, that is fine.  I'll try to take a look at it this week.

--0000000000001c0703063eacea1a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_quote gmail_quote_container"><div dir=
=3D"ltr" class=3D"gmail_attr">On Sat, Sep 13, 2025 at 11:56=E2=80=AFAM Eli =
Zaretskii &lt;<a href=3D"mailto:eliz@HIDDEN">eliz@HIDDEN</a>&gt; wrote:<b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex">&gt; From: Jo=C3=
=A3o T=C3=A1vora &lt;<a href=3D"mailto:joaotavora@HIDDEN" target=3D"_bla=
nk">joaotavora@HIDDEN</a>&gt;<br>
&gt; Date: Sat, 13 Sep 2025 10:12:38 +0100<br>
&gt; Cc: <a href=3D"mailto:me@HIDDEN" target=3D"_blank">me@HIDDEN=
</a>, <a href=3D"mailto:philipk@HIDDEN" target=3D"_blank">philipk@poste=
o.net</a>, <a href=3D"mailto:79374 <at> debbugs.gnu.org" target=3D"_blank">79374=
@debbugs.gnu.org</a><br>
&gt; <br>
&gt; On Sat, Sep 13, 2025 at 8:57=E2=80=AFAM Eli Zaretskii &lt;<a href=3D"m=
ailto:eliz@HIDDEN" target=3D"_blank">eliz@HIDDEN</a>&gt; wrote:<br>
&gt; <br>
&gt;=C2=A0 Jo=C3=A3o, any comments on the patch?=C2=A0 Should I install it?=
<br>
&gt; <br>
&gt; No, don&#39;t . This is a significant feature which is missing testing=
, <br>
&gt; documentations and a much more thorough review.=C2=A0 I don&#39;t<br>
&gt; have time for that right now.<br>
&gt; <br>
&gt; I can say that, from a very cursory review, it is the best version <br=
>
&gt; of this=C2=A0 feature ever proposed to Eglot.<br>
<br>
OK, thanks.=C2=A0 Should I ping you about this at some later date?<br>
</blockquote></div><div><br clear=3D"all"></div>Yes, that is fine.=C2=A0 I&=
#39;ll try to take a look at it this week.</div>

--0000000000001c0703063eacea1a--




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

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


Received: (at 79374) by debbugs.gnu.org; 13 Sep 2025 10:56:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 13 06:56:18 2025
Received: from localhost ([127.0.0.1]:53927 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1uxNvW-0001ze-1I
	for submit <at> debbugs.gnu.org; Sat, 13 Sep 2025 06:56:18 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:57044)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uxNvU-0001yq-5B
 for 79374 <at> debbugs.gnu.org; Sat, 13 Sep 2025 06:56: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 1uxNvN-0000VW-JX; Sat, 13 Sep 2025 06:56: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=l3OumHPs+PI43Tw2owbpMgZgWVZygzttjftg+t6SJ4w=; b=ouXA4tDLVhdD8yt7MiiA
 gzNnfFzx570h3BuZXhLnMoxH+8qb6TJEINHoSyWU08lDLwwX2TGtN87gWunBXbPGt/R1hNPDxYYqH
 5cxsNx48KKO0EiCM6zSk6m/fiq4vwDkTEidFnnmhAJyntUrFheoKVnKQGIVFyOkNmN+P9Bjai+Irc
 TbgACtDcaaog4gV8PPY+6awyKr16bfO0HhpYSE1SBAPAtP0dfKsSoXELE/JBbF1R0KyRoqjRGHkbw
 H+jAl9aCi5N4/gg/OzQasIl6S5MN3TZsxYaq0dcZbKu/jZpJr/uL5NDvkYsRL9ZxO7xtU2LHmhxbr
 +2vqpOex3EdZSA==;
Date: Sat, 13 Sep 2025 13:56:07 +0300
Message-Id: <864it6r588.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
In-Reply-To: <CALDnm53cba7uWDOrWSX5H7qGcGdxV9wRh=x0=Rxxnvb3U+F5Sg@HIDDEN>
 (message from =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= on Sat, 13 Sep 2025 10:12:38
 +0100)
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN> <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN> <86348qss28.fsf@HIDDEN>
 <CALDnm53cba7uWDOrWSX5H7qGcGdxV9wRh=x0=Rxxnvb3U+F5Sg@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: 79374
Cc: me@HIDDEN, philipk@HIDDEN, 79374 <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: João Távora <joaotavora@HIDDEN>
> Date: Sat, 13 Sep 2025 10:12:38 +0100
> Cc: me@HIDDEN, philipk@HIDDEN, 79374 <at> debbugs.gnu.org
> 
> On Sat, Sep 13, 2025 at 8:57 AM Eli Zaretskii <eliz@HIDDEN> wrote:
> 
>  João, any comments on the patch?  Should I install it?
> 
> No, don't . This is a significant feature which is missing testing, 
> documentations and a much more thorough review.  I don't
> have time for that right now.
> 
> I can say that, from a very cursory review, it is the best version 
> of this  feature ever proposed to Eglot.

OK, thanks.  Should I ping you about this at some later date?




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

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


Received: (at 79374) by debbugs.gnu.org; 13 Sep 2025 09:11:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 13 05:11:53 2025
Received: from localhost ([127.0.0.1]:53467 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1uxMIQ-00080t-Kl
	for submit <at> debbugs.gnu.org; Sat, 13 Sep 2025 05:11:52 -0400
Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]:53529)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <joaotavora@HIDDEN>)
 id 1uxMIK-00080M-V2
 for 79374 <at> debbugs.gnu.org; Sat, 13 Sep 2025 05:11:48 -0400
Received: by mail-ot1-x333.google.com with SMTP id
 46e09a7af769-74542b1b2bcso2946381a34.3
 for <79374 <at> debbugs.gnu.org>; Sat, 13 Sep 2025 02:11:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1757754698; x=1758359498; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=HEDRX0W6eL1TPCOWlcnQCFTzXoeHUqymXd3YwPb4+4c=;
 b=OoujEUzQMY6tp/+HfNnmgrTcfbu/fAJDYDW0wrY28e3OorUMMi6fxhL+S52/ZvQLXE
 KZbs3R8t29CfOzKAkBFphHF00QVTu2mL+DhvC3/XzBg3miWAYouykKpV56qjFXQKVGPW
 NyFUMTHZ9dgHLS76wUmVipZjAy0Z8Aksq32AeYoEI8ttEe2DOptIAQQBaCpRWoOsRhEF
 XWcpBMULuodDQB7wXeYEaR/KgLMmQzdTA11T+Ta4iEeN3CjHHpfcosFYhf+H4XafHDt3
 GzwB1OdgZUalrj2P5ozIeuyThPK2rL7jIHQ9u2pR9DzuSpU6PSMYRjEX7YgT3zoceIM6
 pK+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1757754698; x=1758359498;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=HEDRX0W6eL1TPCOWlcnQCFTzXoeHUqymXd3YwPb4+4c=;
 b=lwsNtctpyj/qgGCr9zztwWkboY0nviWxn0Iv5ZT3ZSeOj9ERe0kUPELRO57iLifG4o
 EhGhLaEILEGl2KK31q5/1ydjdnb8lv3bWB0vSndUT1FxFrzTh2wMlALuc5t/RwABhvK0
 9PFVaKUITDO/sPnKoVCwbZYbEA2PdSyBA09Z4MTVw3zr8hAKaWZZQx2dG8SLwi19eS6a
 hJoRXNNkKSl7qVfW2QEH8mJdPh/QeB4cend/XZKDj1OFdUu2W0zcB9Mc9+ppk/xlCnrz
 iSpinlDhdYFXj1eMFkkF8jJ+CgMhygUxXmOdDaWRBXhXd5wk62og5q7/vmXHI+JkivL8
 ofxg==
X-Forwarded-Encrypted: i=1;
 AJvYcCXz0byugG1hzICXx9AUFfkfwTFGqdu5LCLOWO47xXgATnzygIZNN5BjV520jkeckL0AABXofQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yx+XChR1oCU5cwCeyz4XPDj2O5ov6lAsZNs6JCELlhyUv3Nvo3t
 ruQFipA0HIu/aMC3eU8cSRXad76JMOLgapxgiKiM9t6zAHog6B0r4PQibM46WD3BoOkMMu+7J3t
 XpKZjNrZHrMBvufUAZ2y+MAYYbGidIK4=
X-Gm-Gg: ASbGncsJ/Qrpb3+AYXf9+Az5pUuWM072z4Z1Vnz+gJeQMH8bMNZTtB8R75Xn4nMX9zy
 Y/Q9ToAjUq8AN8ufrLy8ms1XzwCtwCZyVsikWJY9bqbujyTUjJSgbjZ/XmJVciYNbWHvIRyb7ga
 XVmsoX9ynWlWjau5HgyJo/iPJUE6ERDQ5pha6zNwwxt7aeFdxm4db68wa38pMcTL+9p6teFZujD
 2jONU4xXxpjyWSx0Q==
X-Google-Smtp-Source: AGHT+IE1fS0Goohsd0vv/dggZocJU38sIyLea4DTVQwfB4/d4FqSQoczgCUe4Laa4fBrgRhCwX1XvySMXhFux+6FgT4=
X-Received: by 2002:a05:6830:698e:b0:745:6528:3d52 with SMTP id
 46e09a7af769-75353875b51mr3408872a34.14.1757754698332; Sat, 13 Sep 2025
 02:11:38 -0700 (PDT)
MIME-Version: 1.0
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN> <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN> <86348qss28.fsf@HIDDEN>
In-Reply-To: <86348qss28.fsf@HIDDEN>
From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@HIDDEN>
Date: Sat, 13 Sep 2025 10:12:38 +0100
X-Gm-Features: Ac12FXxYn004JjrojK3ievJhePUwURb0Jeyu-Uo7oOs16UGFfUOb3EJUeU_-TB8
Message-ID: <CALDnm53cba7uWDOrWSX5H7qGcGdxV9wRh=x0=Rxxnvb3U+F5Sg@HIDDEN>
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000657d5a063eab28d8"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79374
Cc: me@HIDDEN, philipk@HIDDEN, 79374 <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 (-)

--000000000000657d5a063eab28d8
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, Sep 13, 2025 at 8:57=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote:

> Jo=C3=A3o, any comments on the patch?  Should I install it?
>

No, don't . This is a significant feature which is missing testing,
documentations and a much more thorough review.  I don't
have time for that right now.

I can say that, from a very cursory review, it is the best version
of this  feature ever proposed to Eglot.

Jo=C3=A3o



> > Cc: 79374 <at> debbugs.gnu.org,
> >  Jo=C3=A3o T=C3=A1vora <joaotavora@HIDDEN>
> > From: "Lua V. R." <me@HIDDEN>
> > Date: Thu,  4 Sep 2025 00:02:51 +0000 (UTC)
> >
> > Hi Philip,
> >
> > Em 03/09/2025 05:01, Philip Kaludercic escreveu:
> > > As mentioned on Emacs-devel, shouldn't this be
> `eglot-semantic-tokens-mode'.
> > Thanks for catching this :) I fixed it among other things, and I
> > apologize for being unfamiliar with the e-mail git workflow. I don't
> > know if I should send a patch on top of the previous patch, but I'm
> > sending a squashed one.
> >
> > In this new patch I also removed a "hash" I used in attempt to avoid a
> > burst of requests, because it was not working in some particular
> > situations (I can explain if you want). Now, due to how jit-lock works,
> > Eglot may send two requests after a didChange if the server does not
> > support delta requests. But this was also the case in the version with
> > the hash, so alas, it was just complicating things.
> >
> > From 32471c4a0fc9ca80ae8d3c299a3bd55581f8cb04 Mon Sep 17 00:00:00 2001
> > From: Lua Viana Reis <me@HIDDEN>
> > Date: Tue, 2 Sep 2025 19:03:52 -0300
> > Subject: [PATCH] add semantic tokens support for eglot
> >
> > ---
> >  lisp/progmodes/eglot.el | 316 +++++++++++++++++++++++++++++++++++++++-
> >  1 file changed, 313 insertions(+), 3 deletions(-)
> >
> > diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
> > index 475b5e13f1..1d9fb7905d 100644
> > --- a/lisp/progmodes/eglot.el
> > +++ b/lisp/progmodes/eglot.el
> > @@ -141,6 +141,8 @@
> >  (defvar company-tooltip-align-annotations)
> >  (defvar tramp-ssh-controlmaster-options)
> >  (defvar tramp-use-ssh-controlmaster-options)
> > +(defvar eglot-semantic-tokens-faces)
> > +(defvar eglot-semantic-tokens-modifier-faces)
> >
> >
> >  ;;; Obsolete aliases
> > @@ -1017,6 +1019,7 @@ object."
> >                          `(:dynamicRegistration
> >                            ,(if (eglot--trampish-p s) :json-false t))
> >                          :symbol `(:dynamicRegistration :json-false)
> > +                        :semanticTokens '(:refreshSupport t)
> >                          :configuration t
> >                          :workspaceFolders t)
> >              :textDocument
> > @@ -1079,6 +1082,13 @@ object."
> >               :formatting         `(:dynamicRegistration :json-false)
> >               :rangeFormatting    `(:dynamicRegistration :json-false)
> >               :rename             `(:dynamicRegistration :json-false)
> > +             :semanticTokens     `(:dynamicRegistration :json-false
> > +                                   :requests '(:range t :full (:delta
> t))
> > +                                   :tokenModifiers [,@(mapcar #'car
> eglot-semantic-tokens-modifier-faces)]
> > +                                   :overlappingTokenSupport t
> > +                                   :multilineTokenSupport t
> > +                                   :tokenTypes [,@(mapcar #'car
> eglot-semantic-tokens-faces)]
> > +                                   :formats ["relative"])
> >               :inlayHint          `(:dynamicRegistration :json-false)
> >               :callHierarchy      `(:dynamicRegistration :json-false)
> >               :typeHierarchy      `(:dynamicRegistration :json-false)
> > @@ -1149,7 +1159,16 @@ object."
> >      :accessor eglot--managed-buffers)
> >     (saved-initargs
> >      :documentation "Saved initargs for reconnection purposes."
> > -    :accessor eglot--saved-initargs))
> > +    :accessor eglot--saved-initargs)
> > +   (semtok-faces
> > +    :initform nil
> > +    :documentation "Semantic tokens faces.")
> > +   (semtok-modifier-faces
> > +    :initform nil
> > +    :documentation "Semantic tokens modifier faces.")
> > +   (semtok-modifier-cache
> > +    :initform (make-hash-table)
> > +    :documentation "A hashmap of modifier values to the selected
> faces."))
> >    :documentation
> >    "Represents a server. Wraps a process for LSP communication.")
> >
> > @@ -1211,6 +1230,11 @@ If optional MARKERS, make markers instead."
> >           (end (eglot--lsp-position-to-point (plist-get range :end)
> markers)))
> >      (cons beg end)))
> >
> > +(defun eglot-region-range (beg end)
> > +  "Return a LSP range representing region BEG to END."
> > +  (list :start (eglot--pos-to-lsp-position beg)
> > +        :end (eglot--pos-to-lsp-position end)))
> > +
> >  (defun eglot-server-capable (&rest feats)
> >    "Determine if current server is capable of FEATS."
> >    (unless (cl-some (lambda (feat)
> > @@ -1576,7 +1600,8 @@ Use current server's or first available Eglot
> events buffer."
> >    (jsonrpc-forget-pending-continuations server))
> >
> >  (defvar eglot-connect-hook
> > -  '(eglot-signal-didChangeConfiguration)
> > +  '(eglot-signal-didChangeConfiguration
> > +    eglot--semtok-initialize)
> >    "Hook run after connecting to a server.
> >  Each function is passed an `eglot-lsp-server' instance
> >  as argument.")
> > @@ -2291,6 +2316,7 @@ If it is activated, also signal
> textDocument/didOpen."
> >        ;; Run user hook after 'textDocument/didOpen' so server knows
> >        ;; about the buffer.
> >        (eglot-inlay-hints-mode 1)
> > +      (eglot-semantic-tokens-mode 1)
> >        (run-hooks 'eglot-managed-mode-hook))))
> >
> >  (add-hook 'after-change-major-mode-hook
> #'eglot--maybe-activate-editing-mode)
> > @@ -4494,6 +4520,288 @@ If NOERROR, return predicate, else erroring
> function."
> >           (jit-lock-unregister #'eglot--update-hints)
> >           (remove-overlays nil nil 'eglot--inlay-hint t))))
> >
> > +
> > +;;; Semantic tokens
> > +
> > +(defcustom eglot-semantic-tokens-faces
> > +  '(("namespace" . font-lock-keyword-face)
> > +    ("type" . font-lock-type-face)
> > +    ("class" . font-lock-type-face)
> > +    ("enum" . font-lock-type-face)
> > +    ("interface" . font-lock-type-face)
> > +    ("struct" . font-lock-type-face)
> > +    ("typeParameter" . font-lock-type-face)
> > +    ("parameter" . font-lock-variable-name-face)
> > +    ("variable" . font-lock-variable-name-face)
> > +    ("property" . font-lock-property-use-face)
> > +    ("enumMember" . font-lock-constant-face)
> > +    ("event" . font-lock-variable-name-face)
> > +    ("function" . font-lock-function-name-face)
> > +    ("method" . font-lock-function-name-face)
> > +    ("macro" . font-lock-preprocessor-face)
> > +    ("keyword" . font-lock-keyword-face)
> > +    ("modifier" . font-lock-function-name-face)
> > +    ("comment" . font-lock-comment-face)
> > +    ("string" . font-lock-string-face)
> > +    ("number" . font-lock-constant-face)
> > +    ("regexp" . font-lock-string-face)
> > +    ("operator" . font-lock-function-name-face)
> > +    ("decorator" . font-lock-type-face))
> > +  "Alist of faces to use to highlight semantic tokens.
> > +Each element is a cons cell whose car is a token type name and cdr is
> > +the face to use."
> > +  :type `(alist :key-type (string :tag "Token name")
> > +                :value-type (choice (face :tag "Face")
> > +                                    (plist :tag "Face Attributes"
> > +                                           :key-type
> > +                                           (choice
> > +                                            ,@(mapcar
> > +                                               (lambda (cell)
> > +                                                 `(const :tag
> ,(capitalize
> > +                                                                (cdr
> cell))
> > +                                                         ,(car cell)))
> > +
>  face-attribute-name-alist))))))
> > +
> > +(defcustom eglot-semantic-tokens-modifier-faces
> > +  '(("declaration" . font-lock-function-name-face)
> > +    ("definition" . font-lock-function-name-face)
> > +    ("readonly" . font-lock-constant-face)
> > +    ("static" . font-lock-keyword-face)
> > +    ("deprecated" . eglot-diagnostic-tag-deprecated-face)
> > +    ("abstract" . font-lock-keyword-face)
> > +    ("async" . font-lock-preprocessor-face)
> > +    ("modification" . font-lock-function-name-face)
> > +    ("documentation" . font-lock-doc-face)
> > +    ("defaultLibrary" . font-lock-builtin-face))
> > +  "List of face to use to highlight tokens with modifiers.
> > +Each element is a cons cell whose car is a modifier name and cdr is
> > +the face to use."
> > +  :type `(alist :key-type (string :tag "Token name")
> > +                :value-type (choice (face :tag "Face")
> > +                                    (plist :tag "Face Attributes"
> > +                                           :key-type
> > +                                           (choice
> > +                                            ,@(mapcar
> > +                                               (lambda (cell)
> > +                                                 `(const :tag
> ,(capitalize
> > +                                                                (cdr
> cell))
> > +                                                         ,(car cell)))
> > +
>  face-attribute-name-alist))))))
> > +
> > +(defvar-local eglot--semtok-idle-timer nil
> > +  "Idle timer to request full semantic tokens.")
> > +
> > +(defvar-local eglot--semtok-cache nil)
> > +
> > +(defsubst eglot--semtok-put-cache (k v)
> > +  "Set key K of `eglot-semantic-tokens--cache' to V."
> > +  (setq eglot--semtok-cache
> > +        (plist-put eglot--semtok-cache k v)))
> > +
> > +;; Process response
> > +
> > +(defun eglot--semtok-ingest-range-response (response)
> > +  "Handle RESPONSE to semanticTokens/range request."
> > +  (eglot--semtok-put-cache :response response)
> > +  (cl-assert (plist-get eglot--semtok-cache :region)))
> > +
> > +(defun eglot--semtok-ingest-full-response (response)
> > +  "Handle RESPONSE to semanticTokens/full request."
> > +  (eglot--semtok-put-cache :response response)
> > +  (cl-assert (not (plist-get eglot--semtok-cache :region))))
> > +
> > +(defsubst eglot--semtok-apply-delta-edits (old-data edits)
> > +  "Apply EDITS obtained from full/delta request to OLD-DATA."
> > +  (let* ((old-token-count (length old-data))
> > +         (old-token-index 0)
> > +         (substrings))
> > +    (cl-loop for edit across edits do
> > +     (when (< old-token-index (plist-get edit :start))
> > +       (push (substring old-data old-token-index (plist-get edit
> :start)) substrings))
> > +     (push (plist-get edit :data) substrings)
> > +     (setq old-token-index (+ (plist-get edit :start) (plist-get edit
> :deleteCount)))
> > +     finally do (push (substring old-data old-token-index
> old-token-count) substrings))
> > +    (apply #'vconcat (nreverse substrings))))
> > +
> > +(defun eglot--semtok-ingest-full/delta-response (response)
> > +  "Handle RESPONSE to semanticTokens/full/delta request."
> > +  (if-let* ((edits (plist-get response :edits)))
> > +      (progn
> > +        (cl-assert (not (plist-get eglot--semtok-cache :region)))
> > +        (when-let* ((old-data (plist-get (plist-get eglot--semtok-cach=
e
> :response) :data)))
> > +          (eglot--semtok-put-cache
> > +           :response
> > +           (plist-put response :data (eglot--semtok-apply-delta-edits
> old-data edits)))))
> > +    ;; server decided to send full response instead
> > +    (eglot--semtok-ingest-full-response response)))
> > +
> > +(defun eglot--semtok-request (region &optional fontify)
> > +  "Send semantic tokens request to the language server.
> > +A full/delta request will be sent if delta requests are supported by t=
he
> > +language server and a full set of tokens had previously been received.
> > +Otherwise, a ranged request will be dispatched if REGION is non-nil an=
d
> > +ranged requests are supported by the language server. In all other
> > +cases, a full tokens request will be dispatched.
> > +
> > +If FONTIFY is non-nil, refontify after the request completes."
> > +  (let* ((method :textDocument/semanticTokens/full)
> > +         (params (list :textDocument (eglot--TextDocumentIdentifier)))
> > +         (response-handler #'eglot--semtok-ingest-full-response)
> > +         (final-region nil)
> > +         (buf (current-buffer)))
> > +    (cond
> > +     ((and (eglot-server-capable :semanticTokensProvider :full :delta)
> > +           (let ((response (plist-get eglot--semtok-cache :response)))
> > +             (and (plist-get response :resultId) (plist-get response
> :data)
> > +                  (not (plist-get eglot--semtok-cache :region)))))
> > +      (setq method :textDocument/semanticTokens/full/delta)
> > +      (setq response-handler #'eglot--semtok-ingest-full/delta-respons=
e)
> > +      (setq params
> > +            (plist-put params :previousResultId
> > +                       (plist-get (plist-get eglot--semtok-cache
> :response) :resultId))))
> > +     ((and region (eglot-server-capable :semanticTokensProvider :range=
))
> > +      (setq method :textDocument/semanticTokens/range)
> > +      (setq final-region region)
> > +      (setq params
> > +            (plist-put params :range (eglot-region-range
> > +                                      (car final-region) (cdr
> final-region))))
> > +      (setq response-handler #'eglot--semtok-ingest-range-response)))
> > +    (eglot--async-request
> > +     (eglot--current-server-or-lose) method params
> > +     :success-fn
> > +     (lambda (response)
> > +       (eglot--when-live-buffer buf
> > +         (eglot--semtok-put-cache :documentVersion
> eglot--versioned-identifier)
> > +         (eglot--semtok-put-cache :region final-region)
> > +         (funcall response-handler response)
> > +         (when fontify (jit-lock-refontify (car-safe region) (cdr-safe
> region)))
> > +         (when final-region (eglot--semtok-request-full-on-idle))))
> > +     :hint #'eglot--semtok-request)))
> > +
> > +(defun eglot--semtok-fontify (beg end)
> > +  "Apply the cached semantic tokens from BEG to END."
> > +  (with-slots ((modifier-cache semtok-modifier-cache)
> > +               (faces semtok-faces)
> > +               (modifier-faces semtok-modifier-faces))
> > +      (eglot-current-server)
> > +    (cond
> > +     ((not (and faces
> > +                eglot--semtok-cache
> > +                (plist-get eglot--semtok-cache :response)
> > +                (eq eglot--versioned-identifier (plist-get
> eglot--semtok-cache :documentVersion))))
> > +      (eglot--semtok-request (cons beg end) t))
> > +     (t
> > +      ;; if we're using the response to a ranged request, we'll only b=
e
> able to fontify within
> > +      ;; that range (and hence shouldn't clear any highlights outside
> of that range)
> > +      (when-let* ((token-region (plist-get eglot--semtok-cache
> :region)))
> > +        (progn
> > +          (when (or (< beg (car token-region))
> > +                    (> end (cdr token-region)))
> > +            ;; truncated! continue, but request again
> > +            (eglot--semtok-request (cons beg end) t))
> > +          (setq beg (max beg (car token-region)))
> > +          (setq end (min end (cdr token-region)))))
> > +      (eglot--widening
> > +        (with-silent-modifications
> > +          (remove-list-of-text-properties beg end '(font-lock-face))
> > +          (let* ((inhibit-field-text-motion t)
> > +                 (data (plist-get (plist-get eglot--semtok-cache
> :response) :data))
> > +                 (i-max (length data))
> > +                 (beg-bol (and (goto-char beg)
> (line-beginning-position)))
> > +                 (property-beg)
> > +                 (property-end))
> > +            (goto-char (point-min))
> > +            (cl-do ((i 0 (+ i 5)) (column 0)) ((>=3D i i-max))
> > +              (when (> (aref data i) 0)
> > +                (setq column 0)
> > +                (forward-line (aref data i)))
> > +              (unless (< (point) beg-bol)
> > +                (setq column (+ column (aref data (+ i 1))))
> > +                (funcall eglot-move-to-linepos-function column)
> > +                (when (> (point) end) (cl-return))
> > +                (setq property-beg (point))
> > +                (funcall eglot-move-to-linepos-function (+ column (are=
f
> data (+ i 2))))
> > +                (setq property-end (point))
> > +                (when-let* ((face (aref faces (aref data (+ i 3)))))
> > +                  (put-text-property property-beg property-end
> 'font-lock-face face))
> > +                (let* ((code (aref data (+ i 4)))
> > +                       (faces (gethash code modifier-cache 'not-found)=
))
> > +                  (when (eq faces 'not-found)
> > +                    (setq faces nil)
> > +                    (cl-loop for j from 0 below (length modifier-faces=
)
> > +                             if (> (logand code (ash 1 j)) 0)
> > +                             if (aref modifier-faces j)
> > +                             collect (aref modifier-faces j) into face=
s)
> > +                    (puthash code faces modifier-cache))
> > +                  (dolist (face faces)
> > +                    (put-text-property property-beg property-end
> 'font-lock-face face))))))))
> > +      `(jit-lock-bounds ,beg . ,end)))))
> > +
> > +(defun eglot--semtok-request-full-on-idle ()
> > +  "Make a full semantic tokens request after an idle timer."
> > +  (let* ((buf (current-buffer))
> > +         (fun (lambda ()
> > +                (eglot--when-live-buffer buf
> > +                  (eglot--semtok-request nil)))))
> > +    (when eglot--semtok-idle-timer (cancel-timer
> eglot--semtok-idle-timer))
> > +    (setq eglot--semtok-idle-timer (run-with-idle-timer (* 3
> eglot-send-changes-idle-time) nil fun))))
> > +
> > +(defun eglot--semtok-on-refresh (server)
> > +  "Clear semantic tokens within all buffers of SERVER."
> > +  (cl-loop for buffer in (eglot--managed-buffers server) do
> > +           (with-current-buffer buffer
> > +             (setq eglot--semtok-cache nil)
> > +             (jit-lock-refontify))))
> > +
> > +(let ((debounce-timer nil))
> > +  (cl-defmethod eglot-handle-request
> > +    (server (_method (eql workspace/semanticTokens/refresh)))
> > +    "Handle a semanticTokens/refresh request from SERVER."
> > +    (when debounce-timer (cancel-timer debounce-timer))
> > +    (setq debounce-timer (run-with-timer 5 nil
> #'eglot--semtok-on-refresh server))
> > +    nil))
> > +
> > +;; Initialization
> > +(defun eglot--semtok-build-face-map (identifiers faces category varnam=
e)
> > +  "Build map of FACES for IDENTIFIERS using CATEGORY and VARNAME."
> > +  (vconcat
> > +   (mapcar (lambda (id)
> > +             (let ((maybe-face (cdr (assoc id faces))))
> > +               (when (not maybe-face)
> > +                 (display-warning
> > +                  'eglot-semtok
> > +                  (format-message "No face has been associated to the
> %s `%s': consider adding a corresponding definition to %s"
> > +                                  category id varname)))
> > +               maybe-face))
> > +           identifiers)))
> > +
> > +(defun eglot--semtok-initialize (server)
> > +  "Initialize SERVER for semantic tokens."
> > +  (cl-destructuring-bind (&key tokenTypes tokenModifiers
> &allow-other-keys)
> > +      (plist-get (plist-get (eglot--capabilities server)
> > +                            :semanticTokensProvider)
> > +                 :legend)
> > +    (oset server semtok-faces
> > +          (eglot--semtok-build-face-map
> > +           tokenTypes eglot-semantic-tokens-faces
> > +           "semantic token" "eglot--semtokfaces"))
> > +    (oset server semtok-modifier-faces
> > +          (eglot--semtok-build-face-map
> > +           tokenModifiers eglot-semantic-tokens-modifier-faces
> > +           "semantic token modifier" "eglot--semtokmodifier-faces"))))
> > +
> > +(define-minor-mode eglot-semantic-tokens-mode
> > +  "Minor mode for fontifying buffer with LSP server's semantic tokens.=
"
> > +  :global nil
> > +  (cond (eglot-semantic-tokens-mode
> > +         (if (eglot-server-capable :semanticTokensProvider)
> > +             (jit-lock-register #'eglot--semtok-fontify 'contextual)
> > +           (eglot-semantic-tokens-mode -1)))
> > +        (t
> > +         (jit-lock-unregister #'eglot--semtok-fontify)
> > +         (with-silent-modifications
> > +           (remove-list-of-text-properties (point-min) (point-max)
> '(font-lock-face))))))
> > +
> >
> >  ;;; Call and type hierarchies
> >  (require 'button)
> > @@ -4728,7 +5036,8 @@ If NOERROR, return predicate, else erroring
> function."
> >  ;; harder. For now, use `with-eval-after-load'. See also github#1183.
> >  (with-eval-after-load 'desktop
> >    (add-to-list 'desktop-minor-mode-handlers '(eglot--managed-mode .
> ignore))
> > -  (add-to-list 'desktop-minor-mode-handlers '(eglot-inlay-hints-mode .
> ignore)))
> > +  (add-to-list 'desktop-minor-mode-handlers '(eglot-inlay-hints-mode .
> ignore))
> > +  (add-to-list 'desktop-minor-mode-handlers
> '(eglot-semantic-tokens-mode . ignore)))
> >
> >
> >  ;;; Misc
> > @@ -4757,6 +5066,7 @@ If NOERROR, return predicate, else erroring
> function."
> >                 eglot-format
> >                 eglot-format-buffer
> >                 eglot-inlay-hints-mode
> > +               eglot-semantic-tokens-mode
> >                 eglot-reconnect
> >                 eglot-rename
> >                 eglot-signal-didChangeConfiguration
> > --
> > 2.51.0
> >
>


--=20
Jo=C3=A3o T=C3=A1vora

--000000000000657d5a063eab28d8
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_quote gmail_quote_container"><div dir=
=3D"ltr" class=3D"gmail_attr">On Sat, Sep 13, 2025 at 8:57=E2=80=AFAM Eli Z=
aretskii &lt;<a href=3D"mailto:eliz@HIDDEN">eliz@HIDDEN</a>&gt; wrote:<br=
></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-=
left:1px #ccc solid;padding-left:1ex">Jo=C3=A3o, any comments on the patch?=
=C2=A0 Should I install it?<br></blockquote><div><br></div><div>No, don&#39=
;t . This is a significant feature which is missing testing,=C2=A0</div><di=
v>documentations and a much more thorough review.=C2=A0 I don&#39;t</div><d=
iv>have time for that right now.</div><div><br></div><div>I can say that, f=
rom a very cursory review, it is the best version=C2=A0</div><div>of this=
=C2=A0 feature ever proposed to Eglot.</div><div><br></div><div>Jo=C3=A3o</=
div><div><br></div><div><br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
&gt; Cc: <a href=3D"mailto:79374 <at> debbugs.gnu.org" target=3D"_blank">79374@d=
ebbugs.gnu.org</a>,<br>
&gt;=C2=A0 Jo=C3=A3o T=C3=A1vora &lt;<a href=3D"mailto:joaotavora@HIDDEN=
" target=3D"_blank">joaotavora@HIDDEN</a>&gt;<br>
&gt; From: &quot;Lua V. R.&quot; &lt;<a href=3D"mailto:me@HIDDEN" targ=
et=3D"_blank">me@HIDDEN</a>&gt;<br>
&gt; Date: Thu,=C2=A0 4 Sep 2025 00:02:51 +0000 (UTC)<br>
&gt; <br>
&gt; Hi Philip,<br>
&gt; <br>
&gt; Em 03/09/2025 05:01, Philip Kaludercic escreveu:<br>
&gt; &gt; As mentioned on Emacs-devel, shouldn&#39;t this be `eglot-semanti=
c-tokens-mode&#39;.<br>
&gt; Thanks for catching this :) I fixed it among other things, and I <br>
&gt; apologize for being unfamiliar with the e-mail git workflow. I don&#39=
;t <br>
&gt; know if I should send a patch on top of the previous patch, but I&#39;=
m <br>
&gt; sending a squashed one.<br>
&gt; <br>
&gt; In this new patch I also removed a &quot;hash&quot; I used in attempt =
to avoid a <br>
&gt; burst of requests, because it was not working in some particular <br>
&gt; situations (I can explain if you want). Now, due to how jit-lock works=
, <br>
&gt; Eglot may send two requests after a didChange if the server does not <=
br>
&gt; support delta requests. But this was also the case in the version with=
 <br>
&gt; the hash, so alas, it was just complicating things.<br>
&gt; <br>
&gt; From 32471c4a0fc9ca80ae8d3c299a3bd55581f8cb04 Mon Sep 17 00:00:00 2001=
<br>
&gt; From: Lua Viana Reis &lt;<a href=3D"mailto:me@HIDDEN" target=3D"_=
blank">me@HIDDEN</a>&gt;<br>
&gt; Date: Tue, 2 Sep 2025 19:03:52 -0300<br>
&gt; Subject: [PATCH] add semantic tokens support for eglot<br>
&gt; <br>
&gt; ---<br>
&gt;=C2=A0 lisp/progmodes/eglot.el | 316 ++++++++++++++++++++++++++++++++++=
+++++-<br>
&gt;=C2=A0 1 file changed, 313 insertions(+), 3 deletions(-)<br>
&gt; <br>
&gt; diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el<br>
&gt; index 475b5e13f1..1d9fb7905d 100644<br>
&gt; --- a/lisp/progmodes/eglot.el<br>
&gt; +++ b/lisp/progmodes/eglot.el<br>
&gt; @@ -141,6 +141,8 @@<br>
&gt;=C2=A0 (defvar company-tooltip-align-annotations)<br>
&gt;=C2=A0 (defvar tramp-ssh-controlmaster-options)<br>
&gt;=C2=A0 (defvar tramp-use-ssh-controlmaster-options)<br>
&gt; +(defvar eglot-semantic-tokens-faces)<br>
&gt; +(defvar eglot-semantic-tokens-modifier-faces)<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 <br>
&gt;=C2=A0 ;;; Obsolete aliases<br>
&gt; @@ -1017,6 +1019,7 @@ object.&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 `(:dynamicRegistration<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 ,(if (eglot--trampish-p s) :json-false t))<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 :symbol `(:dynamicRegistration :json-false)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 :semanticTokens &#39;(:refreshSupport t)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 :configuration t<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 :workspaceFolders t)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 :textDocument<br>
&gt; @@ -1079,6 +1082,13 @@ object.&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:formatting=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0`(:dynamicRegistration :json-false)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:rangeFormatting=
=C2=A0 =C2=A0 `(:dynamicRegistration :json-false)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:rename=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0`(:dynamicRegistration :json-false=
)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:semanticTokens=C2=A0=
 =C2=A0 =C2=A0`(:dynamicRegistration :json-false<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:requests &#39;(:ra=
nge t :full (:delta t))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:tokenModifiers [,@=
(mapcar #&#39;car eglot-semantic-tokens-modifier-faces)]<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:overlappingTokenSu=
pport t<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:multilineTokenSupp=
ort t<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:tokenTypes [,@(map=
car #&#39;car eglot-semantic-tokens-faces)]<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:formats [&quot;rel=
ative&quot;])<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:inlayHint=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 `(:dynamicRegistration :json-false)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:callHierarchy=
=C2=A0 =C2=A0 =C2=A0 `(:dynamicRegistration :json-false)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:typeHierarchy=
=C2=A0 =C2=A0 =C2=A0 `(:dynamicRegistration :json-false)<br>
&gt; @@ -1149,7 +1159,16 @@ object.&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 :accessor eglot--managed-buffers)<br>
&gt;=C2=A0 =C2=A0 =C2=A0(saved-initargs<br>
&gt;=C2=A0 =C2=A0 =C2=A0 :documentation &quot;Saved initargs for reconnecti=
on purposes.&quot;<br>
&gt; -=C2=A0 =C2=A0 :accessor eglot--saved-initargs))<br>
&gt; +=C2=A0 =C2=A0 :accessor eglot--saved-initargs)<br>
&gt; +=C2=A0 =C2=A0(semtok-faces<br>
&gt; +=C2=A0 =C2=A0 :initform nil<br>
&gt; +=C2=A0 =C2=A0 :documentation &quot;Semantic tokens faces.&quot;)<br>
&gt; +=C2=A0 =C2=A0(semtok-modifier-faces<br>
&gt; +=C2=A0 =C2=A0 :initform nil<br>
&gt; +=C2=A0 =C2=A0 :documentation &quot;Semantic tokens modifier faces.&qu=
ot;)<br>
&gt; +=C2=A0 =C2=A0(semtok-modifier-cache<br>
&gt; +=C2=A0 =C2=A0 :initform (make-hash-table)<br>
&gt; +=C2=A0 =C2=A0 :documentation &quot;A hashmap of modifier values to th=
e selected faces.&quot;))<br>
&gt;=C2=A0 =C2=A0 :documentation<br>
&gt;=C2=A0 =C2=A0 &quot;Represents a server. Wraps a process for LSP commun=
ication.&quot;)<br>
&gt;=C2=A0 <br>
&gt; @@ -1211,6 +1230,11 @@ If optional MARKERS, make markers instead.&quot=
;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(end (eglot--lsp-position-to-p=
oint (plist-get range :end) markers)))<br>
&gt;=C2=A0 =C2=A0 =C2=A0 (cons beg end)))<br>
&gt;=C2=A0 <br>
&gt; +(defun eglot-region-range (beg end)<br>
&gt; +=C2=A0 &quot;Return a LSP range representing region BEG to END.&quot;=
<br>
&gt; +=C2=A0 (list :start (eglot--pos-to-lsp-position beg)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 :end (eglot--pos-to-lsp-position end)))<b=
r>
&gt; +<br>
&gt;=C2=A0 (defun eglot-server-capable (&amp;rest feats)<br>
&gt;=C2=A0 =C2=A0 &quot;Determine if current server is capable of FEATS.&qu=
ot;<br>
&gt;=C2=A0 =C2=A0 (unless (cl-some (lambda (feat)<br>
&gt; @@ -1576,7 +1600,8 @@ Use current server&#39;s or first available Eglo=
t events buffer.&quot;<br>
&gt;=C2=A0 =C2=A0 (jsonrpc-forget-pending-continuations server))<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 (defvar eglot-connect-hook<br>
&gt; -=C2=A0 &#39;(eglot-signal-didChangeConfiguration)<br>
&gt; +=C2=A0 &#39;(eglot-signal-didChangeConfiguration<br>
&gt; +=C2=A0 =C2=A0 eglot--semtok-initialize)<br>
&gt;=C2=A0 =C2=A0 &quot;Hook run after connecting to a server.<br>
&gt;=C2=A0 Each function is passed an `eglot-lsp-server&#39; instance<br>
&gt;=C2=A0 as argument.&quot;)<br>
&gt; @@ -2291,6 +2316,7 @@ If it is activated, also signal textDocument/did=
Open.&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Run user hook after &#39;textDocument/di=
dOpen&#39; so server knows<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; about the buffer.<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (eglot-inlay-hints-mode 1)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (eglot-semantic-tokens-mode 1)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 (run-hooks &#39;eglot-managed-mode-hook))))=
<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 (add-hook &#39;after-change-major-mode-hook #&#39;eglot--maybe-a=
ctivate-editing-mode)<br>
&gt; @@ -4494,6 +4520,288 @@ If NOERROR, return predicate, else erroring fu=
nction.&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(jit-lock-unregister #&#39;egl=
ot--update-hints)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(remove-overlays nil nil &#39;=
eglot--inlay-hint t))))<br>
&gt;=C2=A0 <br>
&gt; +=0C<br>
&gt; +;;; Semantic tokens<br>
&gt; +<br>
&gt; +(defcustom eglot-semantic-tokens-faces<br>
&gt; +=C2=A0 &#39;((&quot;namespace&quot; . font-lock-keyword-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;type&quot; . font-lock-type-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;class&quot; . font-lock-type-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;enum&quot; . font-lock-type-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;interface&quot; . font-lock-type-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;struct&quot; . font-lock-type-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;typeParameter&quot; . font-lock-type-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;parameter&quot; . font-lock-variable-name-face)<=
br>
&gt; +=C2=A0 =C2=A0 (&quot;variable&quot; . font-lock-variable-name-face)<b=
r>
&gt; +=C2=A0 =C2=A0 (&quot;property&quot; . font-lock-property-use-face)<br=
>
&gt; +=C2=A0 =C2=A0 (&quot;enumMember&quot; . font-lock-constant-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;event&quot; . font-lock-variable-name-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;function&quot; . font-lock-function-name-face)<b=
r>
&gt; +=C2=A0 =C2=A0 (&quot;method&quot; . font-lock-function-name-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;macro&quot; . font-lock-preprocessor-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;keyword&quot; . font-lock-keyword-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;modifier&quot; . font-lock-function-name-face)<b=
r>
&gt; +=C2=A0 =C2=A0 (&quot;comment&quot; . font-lock-comment-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;string&quot; . font-lock-string-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;number&quot; . font-lock-constant-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;regexp&quot; . font-lock-string-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;operator&quot; . font-lock-function-name-face)<b=
r>
&gt; +=C2=A0 =C2=A0 (&quot;decorator&quot; . font-lock-type-face))<br>
&gt; +=C2=A0 &quot;Alist of faces to use to highlight semantic tokens.<br>
&gt; +Each element is a cons cell whose car is a token type name and cdr is=
<br>
&gt; +the face to use.&quot;<br>
&gt; +=C2=A0 :type `(alist :key-type (string :tag &quot;Token name&quot;)<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 :value-type (=
choice (face :tag &quot;Face&quot;)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (plist :tag &quot;=
Face Attributes&quot;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0:key-type<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0(choice<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 ,@(mapcar<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0(lambda (cell)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0`(const :tag ,(capitalize<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 (cdr cell))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0,(car cell)))<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0face-attribute-name-alist))))))<br>
&gt; +<br>
&gt; +(defcustom eglot-semantic-tokens-modifier-faces<br>
&gt; +=C2=A0 &#39;((&quot;declaration&quot; . font-lock-function-name-face)=
<br>
&gt; +=C2=A0 =C2=A0 (&quot;definition&quot; . font-lock-function-name-face)=
<br>
&gt; +=C2=A0 =C2=A0 (&quot;readonly&quot; . font-lock-constant-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;static&quot; . font-lock-keyword-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;deprecated&quot; . eglot-diagnostic-tag-deprecat=
ed-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;abstract&quot; . font-lock-keyword-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;async&quot; . font-lock-preprocessor-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;modification&quot; . font-lock-function-name-fac=
e)<br>
&gt; +=C2=A0 =C2=A0 (&quot;documentation&quot; . font-lock-doc-face)<br>
&gt; +=C2=A0 =C2=A0 (&quot;defaultLibrary&quot; . font-lock-builtin-face))<=
br>
&gt; +=C2=A0 &quot;List of face to use to highlight tokens with modifiers.<=
br>
&gt; +Each element is a cons cell whose car is a modifier name and cdr is<b=
r>
&gt; +the face to use.&quot;<br>
&gt; +=C2=A0 :type `(alist :key-type (string :tag &quot;Token name&quot;)<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 :value-type (=
choice (face :tag &quot;Face&quot;)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (plist :tag &quot;=
Face Attributes&quot;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0:key-type<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0(choice<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 ,@(mapcar<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0(lambda (cell)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0`(const :tag ,(capitalize<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 (cdr cell))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0,(car cell)))<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0face-attribute-name-alist))))))<br>
&gt; +<br>
&gt; +(defvar-local eglot--semtok-idle-timer nil<br>
&gt; +=C2=A0 &quot;Idle timer to request full semantic tokens.&quot;)<br>
&gt; +<br>
&gt; +(defvar-local eglot--semtok-cache nil)<br>
&gt; +<br>
&gt; +(defsubst eglot--semtok-put-cache (k v)<br>
&gt; +=C2=A0 &quot;Set key K of `eglot-semantic-tokens--cache&#39; to V.&qu=
ot;<br>
&gt; +=C2=A0 (setq eglot--semtok-cache<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (plist-put eglot--semtok-cache k v)))<br>
&gt; +<br>
&gt; +;; Process response<br>
&gt; +<br>
&gt; +(defun eglot--semtok-ingest-range-response (response)<br>
&gt; +=C2=A0 &quot;Handle RESPONSE to semanticTokens/range request.&quot;<b=
r>
&gt; +=C2=A0 (eglot--semtok-put-cache :response response)<br>
&gt; +=C2=A0 (cl-assert (plist-get eglot--semtok-cache :region)))<br>
&gt; +<br>
&gt; +(defun eglot--semtok-ingest-full-response (response)<br>
&gt; +=C2=A0 &quot;Handle RESPONSE to semanticTokens/full request.&quot;<br=
>
&gt; +=C2=A0 (eglot--semtok-put-cache :response response)<br>
&gt; +=C2=A0 (cl-assert (not (plist-get eglot--semtok-cache :region))))<br>
&gt; +<br>
&gt; +(defsubst eglot--semtok-apply-delta-edits (old-data edits)<br>
&gt; +=C2=A0 &quot;Apply EDITS obtained from full/delta request to OLD-DATA=
.&quot;<br>
&gt; +=C2=A0 (let* ((old-token-count (length old-data))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(old-token-index 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(substrings))<br>
&gt; +=C2=A0 =C2=A0 (cl-loop for edit across edits do<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(when (&lt; old-token-index (plist-get edit :star=
t))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0(push (substring old-data old-token-index =
(plist-get edit :start)) substrings))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(push (plist-get edit :data) substrings)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(setq old-token-index (+ (plist-get edit :start) =
(plist-get edit :deleteCount)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0finally do (push (substring old-data old-token-in=
dex old-token-count) substrings))<br>
&gt; +=C2=A0 =C2=A0 (apply #&#39;vconcat (nreverse substrings))))<br>
&gt; +<br>
&gt; +(defun eglot--semtok-ingest-full/delta-response (response)<br>
&gt; +=C2=A0 &quot;Handle RESPONSE to semanticTokens/full/delta request.&qu=
ot;<br>
&gt; +=C2=A0 (if-let* ((edits (plist-get response :edits)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (progn<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (cl-assert (not (plist-get eglot--semtok-=
cache :region)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (when-let* ((old-data (plist-get (plist-g=
et eglot--semtok-cache :response) :data)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (eglot--semtok-put-cache<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:response<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(plist-put response :data (e=
glot--semtok-apply-delta-edits old-data edits)))))<br>
&gt; +=C2=A0 =C2=A0 ;; server decided to send full response instead<br>
&gt; +=C2=A0 =C2=A0 (eglot--semtok-ingest-full-response response)))<br>
&gt; +<br>
&gt; +(defun eglot--semtok-request (region &amp;optional fontify)<br>
&gt; +=C2=A0 &quot;Send semantic tokens request to the language server.<br>
&gt; +A full/delta request will be sent if delta requests are supported by =
the<br>
&gt; +language server and a full set of tokens had previously been received=
.<br>
&gt; +Otherwise, a ranged request will be dispatched if REGION is non-nil a=
nd<br>
&gt; +ranged requests are supported by the language server. In all other<br=
>
&gt; +cases, a full tokens request will be dispatched.<br>
&gt; +<br>
&gt; +If FONTIFY is non-nil, refontify after the request completes.&quot;<b=
r>
&gt; +=C2=A0 (let* ((method :textDocument/semanticTokens/full)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(params (list :textDocument (eglot-=
-TextDocumentIdentifier)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(response-handler #&#39;eglot--semt=
ok-ingest-full-response)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(final-region nil)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(buf (current-buffer)))<br>
&gt; +=C2=A0 =C2=A0 (cond<br>
&gt; +=C2=A0 =C2=A0 =C2=A0((and (eglot-server-capable :semanticTokensProvid=
er :full :delta)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(let ((response (plist-get e=
glot--semtok-cache :response)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(and (plist-get respo=
nse :resultId) (plist-get response :data)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (=
plist-get eglot--semtok-cache :region)))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (setq method :textDocument/semanticTokens/full/d=
elta)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (setq response-handler #&#39;eglot--semtok-inges=
t-full/delta-response)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (setq params<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (plist-put params :previous=
ResultId<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0(plist-get (plist-get eglot--semtok-cache :response) :resultI=
d))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0((and region (eglot-server-capable :semanticToken=
sProvider :range))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (setq method :textDocument/semanticTokens/range)=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (setq final-region region)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (setq params<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (plist-put params :range (e=
glot-region-range<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (car final-=
region) (cdr final-region))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (setq response-handler #&#39;eglot--semtok-inges=
t-range-response)))<br>
&gt; +=C2=A0 =C2=A0 (eglot--async-request<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(eglot--current-server-or-lose) method params<br>
&gt; +=C2=A0 =C2=A0 =C2=A0:success-fn<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(lambda (response)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0(eglot--when-live-buffer buf<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(eglot--semtok-put-cache :documentV=
ersion eglot--versioned-identifier)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(eglot--semtok-put-cache :region fi=
nal-region)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(funcall response-handler response)=
<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when fontify (jit-lock-refontify (=
car-safe region) (cdr-safe region)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when final-region (eglot--semtok-r=
equest-full-on-idle))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0:hint #&#39;eglot--semtok-request)))<br>
&gt; +<br>
&gt; +(defun eglot--semtok-fontify (beg end)<br>
&gt; +=C2=A0 &quot;Apply the cached semantic tokens from BEG to END.&quot;<=
br>
&gt; +=C2=A0 (with-slots ((modifier-cache semtok-modifier-cache)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(faces semtok-=
faces)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(modifier-face=
s semtok-modifier-faces))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (eglot-current-server)<br>
&gt; +=C2=A0 =C2=A0 (cond<br>
&gt; +=C2=A0 =C2=A0 =C2=A0((not (and faces<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 eglot--semtok=
-cache<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (plist-get eg=
lot--semtok-cache :response)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (eq eglot--ve=
rsioned-identifier (plist-get eglot--semtok-cache :documentVersion))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (eglot--semtok-request (cons beg end) t))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0(t<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 ;; if we&#39;re using the response to a ranged r=
equest, we&#39;ll only be able to fontify within<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 ;; that range (and hence shouldn&#39;t clear any=
 highlights outside of that range)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (when-let* ((token-region (plist-get eglot--semt=
ok-cache :region)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (progn<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (or (&lt; beg (car token-reg=
ion))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 (&gt; end (cdr token-region)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; truncated! continue, but=
 request again<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (eglot--semtok-request (con=
s beg end) t))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq beg (max beg (car token-regi=
on)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq end (min end (cdr token-regi=
on)))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (eglot--widening<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (with-silent-modifications<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (remove-list-of-text-properties be=
g end &#39;(font-lock-face))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (let* ((inhibit-field-text-motion =
t)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(data (=
plist-get (plist-get eglot--semtok-cache :response) :data))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(i-max =
(length data))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(beg-bo=
l (and (goto-char beg) (line-beginning-position)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(proper=
ty-beg)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(proper=
ty-end))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (goto-char (point-min))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cl-do ((i 0 (+ i 5)) (colu=
mn 0)) ((&gt;=3D i i-max))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (&gt; (aref da=
ta i) 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq column =
0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (forward-line=
 (aref data i)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (unless (&lt; (point=
) beg-bol)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq column =
(+ column (aref data (+ i 1))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (funcall eglo=
t-move-to-linepos-function column)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (&gt; (=
point) end) (cl-return))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq propert=
y-beg (point))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (funcall eglo=
t-move-to-linepos-function (+ column (aref data (+ i 2))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq propert=
y-end (point))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when-let* ((=
face (aref faces (aref data (+ i 3)))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (put-t=
ext-property property-beg property-end &#39;font-lock-face face))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (let* ((code =
(aref data (+ i 4)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0(faces (gethash code modifier-cache &#39;not-found)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when =
(eq faces &#39;not-found)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 (setq faces nil)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 (cl-loop for j from 0 below (length modifier-faces)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (&gt; (logand code (ash 1 j)) 0)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (aref modifier-faces j)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0collect (aref modifier-faces j) into fac=
es)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 (puthash code faces modifier-cache))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (dolis=
t (face faces)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 (put-text-property property-beg property-end &#39;font-lock-face face)))))=
)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 `(jit-lock-bounds ,beg . ,end)))))<br>
&gt; +<br>
&gt; +(defun eglot--semtok-request-full-on-idle ()<br>
&gt; +=C2=A0 &quot;Make a full semantic tokens request after an idle timer.=
&quot;<br>
&gt; +=C2=A0 (let* ((buf (current-buffer))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(fun (lambda ()<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (eglot--when-=
live-buffer buf<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (eglot=
--semtok-request nil)))))<br>
&gt; +=C2=A0 =C2=A0 (when eglot--semtok-idle-timer (cancel-timer eglot--sem=
tok-idle-timer))<br>
&gt; +=C2=A0 =C2=A0 (setq eglot--semtok-idle-timer (run-with-idle-timer (* =
3 eglot-send-changes-idle-time) nil fun))))<br>
&gt; +<br>
&gt; +(defun eglot--semtok-on-refresh (server)<br>
&gt; +=C2=A0 &quot;Clear semantic tokens within all buffers of SERVER.&quot=
;<br>
&gt; +=C2=A0 (cl-loop for buffer in (eglot--managed-buffers server) do<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(with-current-buffer buffer<=
br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq eglot--semtok-c=
ache nil)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(jit-lock-refontify))=
))<br>
&gt; +<br>
&gt; +(let ((debounce-timer nil))<br>
&gt; +=C2=A0 (cl-defmethod eglot-handle-request<br>
&gt; +=C2=A0 =C2=A0 (server (_method (eql workspace/semanticTokens/refresh)=
))<br>
&gt; +=C2=A0 =C2=A0 &quot;Handle a semanticTokens/refresh request from SERV=
ER.&quot;<br>
&gt; +=C2=A0 =C2=A0 (when debounce-timer (cancel-timer debounce-timer))<br>
&gt; +=C2=A0 =C2=A0 (setq debounce-timer (run-with-timer 5 nil #&#39;eglot-=
-semtok-on-refresh server))<br>
&gt; +=C2=A0 =C2=A0 nil))<br>
&gt; +<br>
&gt; +;; Initialization<br>
&gt; +(defun eglot--semtok-build-face-map (identifiers faces category varna=
me)<br>
&gt; +=C2=A0 &quot;Build map of FACES for IDENTIFIERS using CATEGORY and VA=
RNAME.&quot;<br>
&gt; +=C2=A0 (vconcat<br>
&gt; +=C2=A0 =C2=A0(mapcar (lambda (id)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(let ((maybe-face (cd=
r (assoc id faces))))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(when (not may=
be-face)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(displa=
y-warning<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &#39;e=
glot-semtok<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (forma=
t-message &quot;No face has been associated to the %s `%s&#39;: consider ad=
ding a corresponding definition to %s&quot;<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 category id varname)))<br=
>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0maybe-face))<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0identifiers)))<br>
&gt; +<br>
&gt; +(defun eglot--semtok-initialize (server)<br>
&gt; +=C2=A0 &quot;Initialize SERVER for semantic tokens.&quot;<br>
&gt; +=C2=A0 (cl-destructuring-bind (&amp;key tokenTypes tokenModifiers &am=
p;allow-other-keys)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 (plist-get (plist-get (eglot--capabilities serve=
r)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 :semanticTokensProvider)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:legend=
)<br>
&gt; +=C2=A0 =C2=A0 (oset server semtok-faces<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (eglot--semtok-build-face-map<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tokenTypes eglot-semantic-to=
kens-faces<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;semantic token&quot; &=
quot;eglot--semtokfaces&quot;))<br>
&gt; +=C2=A0 =C2=A0 (oset server semtok-modifier-faces<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (eglot--semtok-build-face-map<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0tokenModifiers eglot-semanti=
c-tokens-modifier-faces<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quot;semantic token modifie=
r&quot; &quot;eglot--semtokmodifier-faces&quot;))))<br>
&gt; +<br>
&gt; +(define-minor-mode eglot-semantic-tokens-mode<br>
&gt; +=C2=A0 &quot;Minor mode for fontifying buffer with LSP server&#39;s s=
emantic tokens.&quot;<br>
&gt; +=C2=A0 :global nil<br>
&gt; +=C2=A0 (cond (eglot-semantic-tokens-mode<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if (eglot-server-capable :semantic=
TokensProvider)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(jit-lock-register #&=
#39;eglot--semtok-fontify &#39;contextual)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(eglot-semantic-tokens-mode =
-1)))<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (t<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(jit-lock-unregister #&#39;eglot--s=
emtok-fontify)<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(with-silent-modifications<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(remove-list-of-text-propert=
ies (point-min) (point-max) &#39;(font-lock-face))))))<br>
&gt; +<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 ;;; Call and type hierarchies<br>
&gt;=C2=A0 (require &#39;button)<br>
&gt; @@ -4728,7 +5036,8 @@ If NOERROR, return predicate, else erroring func=
tion.&quot;<br>
&gt;=C2=A0 ;; harder. For now, use `with-eval-after-load&#39;. See also git=
hub#1183.<br>
&gt;=C2=A0 (with-eval-after-load &#39;desktop<br>
&gt;=C2=A0 =C2=A0 (add-to-list &#39;desktop-minor-mode-handlers &#39;(eglot=
--managed-mode . ignore))<br>
&gt; -=C2=A0 (add-to-list &#39;desktop-minor-mode-handlers &#39;(eglot-inla=
y-hints-mode . ignore)))<br>
&gt; +=C2=A0 (add-to-list &#39;desktop-minor-mode-handlers &#39;(eglot-inla=
y-hints-mode . ignore))<br>
&gt; +=C2=A0 (add-to-list &#39;desktop-minor-mode-handlers &#39;(eglot-sema=
ntic-tokens-mode . ignore)))<br>
&gt;=C2=A0 <br>
&gt;=C2=A0 <br>
&gt;=C2=A0 ;;; Misc<br>
&gt; @@ -4757,6 +5066,7 @@ If NOERROR, return predicate, else erroring func=
tion.&quot;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0eglot-for=
mat<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0eglot-for=
mat-buffer<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0eglot-inl=
ay-hints-mode<br>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0eglot-semantic=
-tokens-mode<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0eglot-rec=
onnect<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0eglot-ren=
ame<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0eglot-sig=
nal-didChangeConfiguration<br>
&gt; -- <br>
&gt; 2.51.0<br>
&gt; <br>
</blockquote></div><div><br clear=3D"all"></div><br><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature" da=
ta-smartmail=3D"gmail_signature">Jo=C3=A3o T=C3=A1vora</div></div>

--000000000000657d5a063eab28d8--




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

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


Received: (at 79374) by debbugs.gnu.org; 13 Sep 2025 07:58:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 13 03:58:08 2025
Received: from localhost ([127.0.0.1]:53113 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1uxL95-0001Xa-0x
	for submit <at> debbugs.gnu.org; Sat, 13 Sep 2025 03:58:08 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:40456)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1uxL8u-0001VI-2V
 for 79374 <at> debbugs.gnu.org; Sat, 13 Sep 2025 03:58: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 1uxL8e-00039N-1U; Sat, 13 Sep 2025 03:57:48 -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=QC2Jv026SfGdECT27endxgDSWKd0FbDw8VWZfIMsl5k=; b=V/c3Eh+I9jsL34kqluQ3
 TuQSdecoHe7TojJzSF5P1YP08IvNQUjMGErcgbzK/Jc4B87l4n2rJQvEcrBpAQX2LuAyqFkYUzeAm
 Q+PkBp1vLCEB6z5Noqcw7hqaSEyzR+rZK4WbpNogKnf9GSjUSgmt3MGIkuG7fP662UsQGjyli4QE1
 PWhey2UDhiqWka0lVEe2iuavmQaBohjsowrBNakYJmriddoQ3l4MeJrQYQKbw76QT7aMY6S/v9NFz
 UIIQY5TElP0zs46GEosjGFcKq0ewMDrO0JBCKLgjxdJgtFX4Sn/88kNstL0LpbTgd+lzPvR0ByxAm
 1+38Te5huTNH+Q==;
Date: Sat, 13 Sep 2025 10:57:35 +0300
Message-Id: <86348qss28.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: me@HIDDEN, joaotavora@HIDDEN
In-Reply-To: <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
 (me@HIDDEN)
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
 <87ecsoc6cz.fsf@HIDDEN> <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@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: 79374
Cc: philipk@HIDDEN, 79374 <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 (---)

João, any comments on the patch?  Should I install it?

> Cc: 79374 <at> debbugs.gnu.org,
>  João Távora <joaotavora@HIDDEN>
> From: "Lua V. R." <me@HIDDEN>
> Date: Thu,  4 Sep 2025 00:02:51 +0000 (UTC)
> 
> Hi Philip,
> 
> Em 03/09/2025 05:01, Philip Kaludercic escreveu:
> > As mentioned on Emacs-devel, shouldn't this be `eglot-semantic-tokens-mode'.
> Thanks for catching this :) I fixed it among other things, and I 
> apologize for being unfamiliar with the e-mail git workflow. I don't 
> know if I should send a patch on top of the previous patch, but I'm 
> sending a squashed one.
> 
> In this new patch I also removed a "hash" I used in attempt to avoid a 
> burst of requests, because it was not working in some particular 
> situations (I can explain if you want). Now, due to how jit-lock works, 
> Eglot may send two requests after a didChange if the server does not 
> support delta requests. But this was also the case in the version with 
> the hash, so alas, it was just complicating things.
> 
> From 32471c4a0fc9ca80ae8d3c299a3bd55581f8cb04 Mon Sep 17 00:00:00 2001
> From: Lua Viana Reis <me@HIDDEN>
> Date: Tue, 2 Sep 2025 19:03:52 -0300
> Subject: [PATCH] add semantic tokens support for eglot
> 
> ---
>  lisp/progmodes/eglot.el | 316 +++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 313 insertions(+), 3 deletions(-)
> 
> diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
> index 475b5e13f1..1d9fb7905d 100644
> --- a/lisp/progmodes/eglot.el
> +++ b/lisp/progmodes/eglot.el
> @@ -141,6 +141,8 @@
>  (defvar company-tooltip-align-annotations)
>  (defvar tramp-ssh-controlmaster-options)
>  (defvar tramp-use-ssh-controlmaster-options)
> +(defvar eglot-semantic-tokens-faces)
> +(defvar eglot-semantic-tokens-modifier-faces)
>  
>  
>  ;;; Obsolete aliases
> @@ -1017,6 +1019,7 @@ object."
>                          `(:dynamicRegistration
>                            ,(if (eglot--trampish-p s) :json-false t))
>                          :symbol `(:dynamicRegistration :json-false)
> +                        :semanticTokens '(:refreshSupport t)
>                          :configuration t
>                          :workspaceFolders t)
>              :textDocument
> @@ -1079,6 +1082,13 @@ object."
>               :formatting         `(:dynamicRegistration :json-false)
>               :rangeFormatting    `(:dynamicRegistration :json-false)
>               :rename             `(:dynamicRegistration :json-false)
> +             :semanticTokens     `(:dynamicRegistration :json-false
> +                                   :requests '(:range t :full (:delta t))
> +                                   :tokenModifiers [,@(mapcar #'car eglot-semantic-tokens-modifier-faces)]
> +                                   :overlappingTokenSupport t
> +                                   :multilineTokenSupport t
> +                                   :tokenTypes [,@(mapcar #'car eglot-semantic-tokens-faces)]
> +                                   :formats ["relative"])
>               :inlayHint          `(:dynamicRegistration :json-false)
>               :callHierarchy      `(:dynamicRegistration :json-false)
>               :typeHierarchy      `(:dynamicRegistration :json-false)
> @@ -1149,7 +1159,16 @@ object."
>      :accessor eglot--managed-buffers)
>     (saved-initargs
>      :documentation "Saved initargs for reconnection purposes."
> -    :accessor eglot--saved-initargs))
> +    :accessor eglot--saved-initargs)
> +   (semtok-faces
> +    :initform nil
> +    :documentation "Semantic tokens faces.")
> +   (semtok-modifier-faces
> +    :initform nil
> +    :documentation "Semantic tokens modifier faces.")
> +   (semtok-modifier-cache
> +    :initform (make-hash-table)
> +    :documentation "A hashmap of modifier values to the selected faces."))
>    :documentation
>    "Represents a server. Wraps a process for LSP communication.")
>  
> @@ -1211,6 +1230,11 @@ If optional MARKERS, make markers instead."
>           (end (eglot--lsp-position-to-point (plist-get range :end) markers)))
>      (cons beg end)))
>  
> +(defun eglot-region-range (beg end)
> +  "Return a LSP range representing region BEG to END."
> +  (list :start (eglot--pos-to-lsp-position beg)
> +        :end (eglot--pos-to-lsp-position end)))
> +
>  (defun eglot-server-capable (&rest feats)
>    "Determine if current server is capable of FEATS."
>    (unless (cl-some (lambda (feat)
> @@ -1576,7 +1600,8 @@ Use current server's or first available Eglot events buffer."
>    (jsonrpc-forget-pending-continuations server))
>  
>  (defvar eglot-connect-hook
> -  '(eglot-signal-didChangeConfiguration)
> +  '(eglot-signal-didChangeConfiguration
> +    eglot--semtok-initialize)
>    "Hook run after connecting to a server.
>  Each function is passed an `eglot-lsp-server' instance
>  as argument.")
> @@ -2291,6 +2316,7 @@ If it is activated, also signal textDocument/didOpen."
>        ;; Run user hook after 'textDocument/didOpen' so server knows
>        ;; about the buffer.
>        (eglot-inlay-hints-mode 1)
> +      (eglot-semantic-tokens-mode 1)
>        (run-hooks 'eglot-managed-mode-hook))))
>  
>  (add-hook 'after-change-major-mode-hook #'eglot--maybe-activate-editing-mode)
> @@ -4494,6 +4520,288 @@ If NOERROR, return predicate, else erroring function."
>           (jit-lock-unregister #'eglot--update-hints)
>           (remove-overlays nil nil 'eglot--inlay-hint t))))
>  
> +
> +;;; Semantic tokens
> +
> +(defcustom eglot-semantic-tokens-faces
> +  '(("namespace" . font-lock-keyword-face)
> +    ("type" . font-lock-type-face)
> +    ("class" . font-lock-type-face)
> +    ("enum" . font-lock-type-face)
> +    ("interface" . font-lock-type-face)
> +    ("struct" . font-lock-type-face)
> +    ("typeParameter" . font-lock-type-face)
> +    ("parameter" . font-lock-variable-name-face)
> +    ("variable" . font-lock-variable-name-face)
> +    ("property" . font-lock-property-use-face)
> +    ("enumMember" . font-lock-constant-face)
> +    ("event" . font-lock-variable-name-face)
> +    ("function" . font-lock-function-name-face)
> +    ("method" . font-lock-function-name-face)
> +    ("macro" . font-lock-preprocessor-face)
> +    ("keyword" . font-lock-keyword-face)
> +    ("modifier" . font-lock-function-name-face)
> +    ("comment" . font-lock-comment-face)
> +    ("string" . font-lock-string-face)
> +    ("number" . font-lock-constant-face)
> +    ("regexp" . font-lock-string-face)
> +    ("operator" . font-lock-function-name-face)
> +    ("decorator" . font-lock-type-face))
> +  "Alist of faces to use to highlight semantic tokens.
> +Each element is a cons cell whose car is a token type name and cdr is
> +the face to use."
> +  :type `(alist :key-type (string :tag "Token name")
> +                :value-type (choice (face :tag "Face")
> +                                    (plist :tag "Face Attributes"
> +                                           :key-type
> +                                           (choice
> +                                            ,@(mapcar
> +                                               (lambda (cell)
> +                                                 `(const :tag ,(capitalize
> +                                                                (cdr cell))
> +                                                         ,(car cell)))
> +                                               face-attribute-name-alist))))))
> +
> +(defcustom eglot-semantic-tokens-modifier-faces
> +  '(("declaration" . font-lock-function-name-face)
> +    ("definition" . font-lock-function-name-face)
> +    ("readonly" . font-lock-constant-face)
> +    ("static" . font-lock-keyword-face)
> +    ("deprecated" . eglot-diagnostic-tag-deprecated-face)
> +    ("abstract" . font-lock-keyword-face)
> +    ("async" . font-lock-preprocessor-face)
> +    ("modification" . font-lock-function-name-face)
> +    ("documentation" . font-lock-doc-face)
> +    ("defaultLibrary" . font-lock-builtin-face))
> +  "List of face to use to highlight tokens with modifiers.
> +Each element is a cons cell whose car is a modifier name and cdr is
> +the face to use."
> +  :type `(alist :key-type (string :tag "Token name")
> +                :value-type (choice (face :tag "Face")
> +                                    (plist :tag "Face Attributes"
> +                                           :key-type
> +                                           (choice
> +                                            ,@(mapcar
> +                                               (lambda (cell)
> +                                                 `(const :tag ,(capitalize
> +                                                                (cdr cell))
> +                                                         ,(car cell)))
> +                                               face-attribute-name-alist))))))
> +
> +(defvar-local eglot--semtok-idle-timer nil
> +  "Idle timer to request full semantic tokens.")
> +
> +(defvar-local eglot--semtok-cache nil)
> +
> +(defsubst eglot--semtok-put-cache (k v)
> +  "Set key K of `eglot-semantic-tokens--cache' to V."
> +  (setq eglot--semtok-cache
> +        (plist-put eglot--semtok-cache k v)))
> +
> +;; Process response
> +
> +(defun eglot--semtok-ingest-range-response (response)
> +  "Handle RESPONSE to semanticTokens/range request."
> +  (eglot--semtok-put-cache :response response)
> +  (cl-assert (plist-get eglot--semtok-cache :region)))
> +
> +(defun eglot--semtok-ingest-full-response (response)
> +  "Handle RESPONSE to semanticTokens/full request."
> +  (eglot--semtok-put-cache :response response)
> +  (cl-assert (not (plist-get eglot--semtok-cache :region))))
> +
> +(defsubst eglot--semtok-apply-delta-edits (old-data edits)
> +  "Apply EDITS obtained from full/delta request to OLD-DATA."
> +  (let* ((old-token-count (length old-data))
> +         (old-token-index 0)
> +         (substrings))
> +    (cl-loop for edit across edits do
> +     (when (< old-token-index (plist-get edit :start))
> +       (push (substring old-data old-token-index (plist-get edit :start)) substrings))
> +     (push (plist-get edit :data) substrings)
> +     (setq old-token-index (+ (plist-get edit :start) (plist-get edit :deleteCount)))
> +     finally do (push (substring old-data old-token-index old-token-count) substrings))
> +    (apply #'vconcat (nreverse substrings))))
> +
> +(defun eglot--semtok-ingest-full/delta-response (response)
> +  "Handle RESPONSE to semanticTokens/full/delta request."
> +  (if-let* ((edits (plist-get response :edits)))
> +      (progn
> +        (cl-assert (not (plist-get eglot--semtok-cache :region)))
> +        (when-let* ((old-data (plist-get (plist-get eglot--semtok-cache :response) :data)))
> +          (eglot--semtok-put-cache
> +           :response
> +           (plist-put response :data (eglot--semtok-apply-delta-edits old-data edits)))))
> +    ;; server decided to send full response instead
> +    (eglot--semtok-ingest-full-response response)))
> +
> +(defun eglot--semtok-request (region &optional fontify)
> +  "Send semantic tokens request to the language server.
> +A full/delta request will be sent if delta requests are supported by the
> +language server and a full set of tokens had previously been received.
> +Otherwise, a ranged request will be dispatched if REGION is non-nil and
> +ranged requests are supported by the language server. In all other
> +cases, a full tokens request will be dispatched.
> +
> +If FONTIFY is non-nil, refontify after the request completes."
> +  (let* ((method :textDocument/semanticTokens/full)
> +         (params (list :textDocument (eglot--TextDocumentIdentifier)))
> +         (response-handler #'eglot--semtok-ingest-full-response)
> +         (final-region nil)
> +         (buf (current-buffer)))
> +    (cond
> +     ((and (eglot-server-capable :semanticTokensProvider :full :delta)
> +           (let ((response (plist-get eglot--semtok-cache :response)))
> +             (and (plist-get response :resultId) (plist-get response :data)
> +                  (not (plist-get eglot--semtok-cache :region)))))
> +      (setq method :textDocument/semanticTokens/full/delta)
> +      (setq response-handler #'eglot--semtok-ingest-full/delta-response)
> +      (setq params
> +            (plist-put params :previousResultId
> +                       (plist-get (plist-get eglot--semtok-cache :response) :resultId))))
> +     ((and region (eglot-server-capable :semanticTokensProvider :range))
> +      (setq method :textDocument/semanticTokens/range)
> +      (setq final-region region)
> +      (setq params
> +            (plist-put params :range (eglot-region-range
> +                                      (car final-region) (cdr final-region))))
> +      (setq response-handler #'eglot--semtok-ingest-range-response)))
> +    (eglot--async-request
> +     (eglot--current-server-or-lose) method params
> +     :success-fn
> +     (lambda (response)
> +       (eglot--when-live-buffer buf
> +         (eglot--semtok-put-cache :documentVersion eglot--versioned-identifier)
> +         (eglot--semtok-put-cache :region final-region)
> +         (funcall response-handler response)
> +         (when fontify (jit-lock-refontify (car-safe region) (cdr-safe region)))
> +         (when final-region (eglot--semtok-request-full-on-idle))))
> +     :hint #'eglot--semtok-request)))
> +
> +(defun eglot--semtok-fontify (beg end)
> +  "Apply the cached semantic tokens from BEG to END."
> +  (with-slots ((modifier-cache semtok-modifier-cache)
> +               (faces semtok-faces)
> +               (modifier-faces semtok-modifier-faces))
> +      (eglot-current-server)
> +    (cond
> +     ((not (and faces
> +                eglot--semtok-cache
> +                (plist-get eglot--semtok-cache :response)
> +                (eq eglot--versioned-identifier (plist-get eglot--semtok-cache :documentVersion))))
> +      (eglot--semtok-request (cons beg end) t))
> +     (t
> +      ;; if we're using the response to a ranged request, we'll only be able to fontify within
> +      ;; that range (and hence shouldn't clear any highlights outside of that range)
> +      (when-let* ((token-region (plist-get eglot--semtok-cache :region)))
> +        (progn
> +          (when (or (< beg (car token-region))
> +                    (> end (cdr token-region)))
> +            ;; truncated! continue, but request again
> +            (eglot--semtok-request (cons beg end) t))
> +          (setq beg (max beg (car token-region)))
> +          (setq end (min end (cdr token-region)))))
> +      (eglot--widening
> +        (with-silent-modifications
> +          (remove-list-of-text-properties beg end '(font-lock-face))
> +          (let* ((inhibit-field-text-motion t)
> +                 (data (plist-get (plist-get eglot--semtok-cache :response) :data))
> +                 (i-max (length data))
> +                 (beg-bol (and (goto-char beg) (line-beginning-position)))
> +                 (property-beg)
> +                 (property-end))
> +            (goto-char (point-min))
> +            (cl-do ((i 0 (+ i 5)) (column 0)) ((>= i i-max))
> +              (when (> (aref data i) 0)
> +                (setq column 0)
> +                (forward-line (aref data i)))
> +              (unless (< (point) beg-bol)
> +                (setq column (+ column (aref data (+ i 1))))
> +                (funcall eglot-move-to-linepos-function column)
> +                (when (> (point) end) (cl-return))
> +                (setq property-beg (point))
> +                (funcall eglot-move-to-linepos-function (+ column (aref data (+ i 2))))
> +                (setq property-end (point))
> +                (when-let* ((face (aref faces (aref data (+ i 3)))))
> +                  (put-text-property property-beg property-end 'font-lock-face face))
> +                (let* ((code (aref data (+ i 4)))
> +                       (faces (gethash code modifier-cache 'not-found)))
> +                  (when (eq faces 'not-found)
> +                    (setq faces nil)
> +                    (cl-loop for j from 0 below (length modifier-faces)
> +                             if (> (logand code (ash 1 j)) 0)
> +                             if (aref modifier-faces j)
> +                             collect (aref modifier-faces j) into faces)
> +                    (puthash code faces modifier-cache))
> +                  (dolist (face faces)
> +                    (put-text-property property-beg property-end 'font-lock-face face))))))))
> +      `(jit-lock-bounds ,beg . ,end)))))
> +
> +(defun eglot--semtok-request-full-on-idle ()
> +  "Make a full semantic tokens request after an idle timer."
> +  (let* ((buf (current-buffer))
> +         (fun (lambda ()
> +                (eglot--when-live-buffer buf
> +                  (eglot--semtok-request nil)))))
> +    (when eglot--semtok-idle-timer (cancel-timer eglot--semtok-idle-timer))
> +    (setq eglot--semtok-idle-timer (run-with-idle-timer (* 3 eglot-send-changes-idle-time) nil fun))))
> +
> +(defun eglot--semtok-on-refresh (server)
> +  "Clear semantic tokens within all buffers of SERVER."
> +  (cl-loop for buffer in (eglot--managed-buffers server) do
> +           (with-current-buffer buffer
> +             (setq eglot--semtok-cache nil)
> +             (jit-lock-refontify))))
> +
> +(let ((debounce-timer nil))
> +  (cl-defmethod eglot-handle-request
> +    (server (_method (eql workspace/semanticTokens/refresh)))
> +    "Handle a semanticTokens/refresh request from SERVER."
> +    (when debounce-timer (cancel-timer debounce-timer))
> +    (setq debounce-timer (run-with-timer 5 nil #'eglot--semtok-on-refresh server))
> +    nil))
> +
> +;; Initialization
> +(defun eglot--semtok-build-face-map (identifiers faces category varname)
> +  "Build map of FACES for IDENTIFIERS using CATEGORY and VARNAME."
> +  (vconcat
> +   (mapcar (lambda (id)
> +             (let ((maybe-face (cdr (assoc id faces))))
> +               (when (not maybe-face)
> +                 (display-warning
> +                  'eglot-semtok
> +                  (format-message "No face has been associated to the %s `%s': consider adding a corresponding definition to %s"
> +                                  category id varname)))
> +               maybe-face))
> +           identifiers)))
> +
> +(defun eglot--semtok-initialize (server)
> +  "Initialize SERVER for semantic tokens."
> +  (cl-destructuring-bind (&key tokenTypes tokenModifiers &allow-other-keys)
> +      (plist-get (plist-get (eglot--capabilities server)
> +                            :semanticTokensProvider)
> +                 :legend)
> +    (oset server semtok-faces
> +          (eglot--semtok-build-face-map
> +           tokenTypes eglot-semantic-tokens-faces
> +           "semantic token" "eglot--semtokfaces"))
> +    (oset server semtok-modifier-faces
> +          (eglot--semtok-build-face-map
> +           tokenModifiers eglot-semantic-tokens-modifier-faces
> +           "semantic token modifier" "eglot--semtokmodifier-faces"))))
> +
> +(define-minor-mode eglot-semantic-tokens-mode
> +  "Minor mode for fontifying buffer with LSP server's semantic tokens."
> +  :global nil
> +  (cond (eglot-semantic-tokens-mode
> +         (if (eglot-server-capable :semanticTokensProvider)
> +             (jit-lock-register #'eglot--semtok-fontify 'contextual)
> +           (eglot-semantic-tokens-mode -1)))
> +        (t
> +         (jit-lock-unregister #'eglot--semtok-fontify)
> +         (with-silent-modifications
> +           (remove-list-of-text-properties (point-min) (point-max) '(font-lock-face))))))
> +
>  
>  ;;; Call and type hierarchies
>  (require 'button)
> @@ -4728,7 +5036,8 @@ If NOERROR, return predicate, else erroring function."
>  ;; harder. For now, use `with-eval-after-load'. See also github#1183.
>  (with-eval-after-load 'desktop
>    (add-to-list 'desktop-minor-mode-handlers '(eglot--managed-mode . ignore))
> -  (add-to-list 'desktop-minor-mode-handlers '(eglot-inlay-hints-mode . ignore)))
> +  (add-to-list 'desktop-minor-mode-handlers '(eglot-inlay-hints-mode . ignore))
> +  (add-to-list 'desktop-minor-mode-handlers '(eglot-semantic-tokens-mode . ignore)))
>  
>  
>  ;;; Misc
> @@ -4757,6 +5066,7 @@ If NOERROR, return predicate, else erroring function."
>                 eglot-format
>                 eglot-format-buffer
>                 eglot-inlay-hints-mode
> +               eglot-semantic-tokens-mode
>                 eglot-reconnect
>                 eglot-rename
>                 eglot-signal-didChangeConfiguration
> -- 
> 2.51.0
> 




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

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


Received: (at 79374) by debbugs.gnu.org; 4 Sep 2025 08:37:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 04 04:37:00 2025
Received: from localhost ([127.0.0.1]:45201 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1uu5Sl-00055o-IJ
	for submit <at> debbugs.gnu.org; Thu, 04 Sep 2025 04:36:59 -0400
Received: from mout01.posteo.de ([185.67.36.65]:42813)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <philipk@HIDDEN>)
 id 1uu5Sh-00055L-94
 for 79374 <at> debbugs.gnu.org; Thu, 04 Sep 2025 04:36:56 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id EB79E240027
 for <79374 <at> debbugs.gnu.org>; Thu,  4 Sep 2025 10:36:47 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.net; s=2017;
 t=1756975007; bh=879ybWXF05i87nxpv3migv7gZA71+fEMUb26fa9tVTU=;
 h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version:
 Content-Type:From;
 b=U7y7ga8UnfnTYFfbUEJsrRTYnhVW7fBXozXgfxXprmJZ4jssEk6ykdzMRXmhM6o7D
 kxxi6JwspifoUAc0ndOa0lL+l9VbJ6ER1JohXCPJb810nYD3fo5Maoa+zMa79Wspn1
 m18wjrl+NKyj/TiYGriZgCTOzkcbApjT1sGiYVSo4mkr8D/vNEc3p+sutS49BD31aV
 Cg19Umf8oVz3rwKQx69kSVif4XxaD7IaDW3cOdNvJgvE8bs3mwZOpJiW6NYlhrPoKo
 uxI+m4q1VQokjn227XBAvLcfcAzQMb6otxjodeRTuhNZpZmmSwTs9uAk2TJEk8M374
 D5pagj7/Vw/DA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4cHXrt66Zkz9rxT;
 Thu,  4 Sep 2025 10:36:46 +0200 (CEST)
From: Philip Kaludercic <philipk@HIDDEN>
To: "Lua V. R." <me@HIDDEN>
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
In-Reply-To: <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
 <87ecsoc6cz.fsf@HIDDEN>
 <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
Autocrypt: addr=philipk@HIDDEN; keydata=
 mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo
 aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0
 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI
 BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0
 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB
 BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE
 Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK
 NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof
 z4oM
OpenPGP: id=7126E1DE2F0CE35C770BED01F2C3CC513DB89F66;
 url="https://keys.openpgp.org/vks/v1/by-fingerprint/7126E1DE2F0CE35C770BED01F2C3CC513DB89F66";
 preference=signencrypt
Date: Thu, 04 Sep 2025 08:36:47 +0000
Message-ID: <87bjnqty02.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79374
Cc: 79374 <at> debbugs.gnu.org,
 =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@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 (---)

"Lua V. R." <me@HIDDEN> writes:

> Hi Philip,
>
> Em 03/09/2025 05:01, Philip Kaludercic escreveu:
>> As mentioned on Emacs-devel, shouldn't this be `eglot-semantic-tokens-mode'.
> Thanks for catching this :) I fixed it among other things, and I
> apologize for being unfamiliar with the e-mail git workflow. 

FWIW I did not notice that you were doing anything wrong :)

>                                                              I don't
> know if I should send a patch on top of the previous patch, but I'm
> sending a squashed one.

That is the conventional approach.  The idea is that we can apply a
clean patch to emacs.git, while the mailing list is sort of the meta VCS
over the patch (if that makes sense).

> In this new patch I also removed a "hash" I used in attempt to avoid a
> burst of requests, because it was not working in some particular
> situations (I can explain if you want). Now, due to how jit-lock
> works, Eglot may send two requests after a didChange if the server
> does not support delta requests. But this was also the case in the
> version with the hash, so alas, it was just complicating things.

My experience with Eglot internals is limited so I cannot really comment
on that part, sorry.




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

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


Received: (at 79374) by debbugs.gnu.org; 4 Sep 2025 00:03:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 20:03:04 2025
Received: from localhost ([127.0.0.1]:43700 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1utxRO-0001Jr-1O
	for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 20:03:03 -0400
Received: from poodle.tulip.relay.mailchannels.net ([23.83.218.249]:60591)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <me@HIDDEN>) id 1utxRJ-0001JU-NZ
 for 79374 <at> debbugs.gnu.org; Wed, 03 Sep 2025 20:03:00 -0400
X-Sender-Id: hostingeremailsmtpin|x-authuser|lua@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id 11925903CAE;
 Thu,  4 Sep 2025 00:02:55 +0000 (UTC)
Received: from fr-int-smtpout27.hostinger.io
 (trex-blue-0.trex.outbound.svc.cluster.local [100.102.62.95])
 (Authenticated sender: hostingeremailsmtpin)
 by relay.mailchannels.net (Postfix) with ESMTPA id D4EAC9045C8;
 Thu,  4 Sep 2025 00:02:53 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1756944174; a=rsa-sha256;
 cv=none;
 b=CEOpx0iBSyfAKPiNbiw0Gu7AyL6g5symnEnvLW1yN4JXsEYvvcUvt/6tE2cX8+Fj3f4/Ah
 ns2XETxuNtoUwBndgc8dRM07KskcnBo6+a62Ug+nQsGcinpJ6YEly2ynP7U1kkvqMSbyz3
 fwtN5y+09yenB/tWqoCz/UpZ+9seD4jjef9FAhKP+6WBDX820N73p5NoF+mUiDiY8iroDD
 S/m1Fpy1lIgncTqZ+u6sPwk+LplLAlyQSEoUVabMyv0MkMqtQeaERr37SFAucrUkGxrill
 BN4PJfvbbBl88cpmp2qRJkOYO30SpJqeueU+DNWSS308TmU6y+xtISQ3w3Cerw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1756944174;
 h=from:from:reply-to:reply-to:subject:subject:date:date:
 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
 content-type:content-type:in-reply-to:in-reply-to:
 references:references:dkim-signature;
 bh=S9EqPSXjyRw+1qIzD8PXIoNnCd9Ex2F6h6Q72+x12rI=;
 b=CHxQtjRT2YWnRmrX6zPMOzK8jopytr0Ab5+Ta2e0PPEK4q9WG/dhAezMmotjA4I6C0hkmS
 zvZmJjSTt+kf/iXdIH0a+tPZQknnDxmatQIC+p9mKEAgI2SNGaEFaDEPV6LIoSmtkE40xO
 I3zHN6Gm3Mswi8PU68H1TnOYJdl64KgG0eESnujgxntCfRl/83fKTyk7AhGWK9f+MjbUMo
 c9zAyFsYMfotXXfrxpeXG76jafcQU0KTjUR/b3vBRNwiu2QB+WsvYSIjfjJYVuDv2StmDW
 f1FK0ntOw8Y43w4vrOG2lHdjK/07piipMeCrNvpqvxu2T52rpePcBdgUJ1ufPg==
ARC-Authentication-Results: i=1; rspamd-8b9589799-sm6tm;
 auth=pass smtp.auth=hostingeremailsmtpin smtp.mailfrom=me@HIDDEN
X-Sender-Id: hostingeremailsmtpin|x-authuser|lua@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: hostingeremailsmtpin|x-authuser|lua@HIDDEN
X-MailChannels-Auth-Id: hostingeremailsmtpin
X-Chemical-Wide-Eyed: 16757e6d20a8499e_1756944174842_2169012794
X-MC-Loop-Signature: 1756944174842:3667252319
X-MC-Ingress-Time: 1756944174842
Received: from fr-int-smtpout27.hostinger.io ([UNAVAILABLE]. [148.222.54.8])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.102.62.95 (trex/7.1.3); Thu, 04 Sep 2025 00:02:54 +0000
Received: from [IPV6:2804:14d:8084:a662::db8f] (unknown
 [IPv6:2804:14d:8084:a662::db8f])
 (Authenticated sender: lua@HIDDEN)
 by smtp.hostinger.com (smtp.hostinger.com) with ESMTPSA id 4cHKRv2hlgz2yhn;
 Thu,  4 Sep 2025 00:02:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lua.blog.br;
 s=hostingermail-a; t=1756944172;
 h=from:from:reply-to:reply-to:subject:subject:date:date:
 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
 content-type:content-type:in-reply-to:in-reply-to:  references:references;
 bh=S9EqPSXjyRw+1qIzD8PXIoNnCd9Ex2F6h6Q72+x12rI=;
 b=CKEt+dXwwOBzG+K7E1ODaVp8oU2FujWaAVFhZdeWw0BnPZeRZnC5oU25lT3xCf15pIXtRa
 wQpRheT3OMlmeO97WMenqT2KLdPubXmTaEMEmKrbutGCMFr+hpqSr24j/bUu4mIAm/gg+q
 vMitMvFon1PDxaTaoyZKChH72dn2dzB6FdjiN1Ds7Qr5BpbndnUwzeD5JeKf70nhlegOUG
 DhjZj0VMiYK81PpmkjAcyPM1A1r3MTcVy6Z9g8YP2ilYPOBh7d0HNrNSOzpnzwrZr/bXgN
 sb1JIDqAc0Acc79POB0DdBZSD/wgzco3UHJX78wlmsqgc+cx8gT7Bbp2hwRvQw==
Content-Type: multipart/mixed; boundary="------------inAXX13i0ODSZQVny1l1Heua"
Message-ID: <ab41f23e-b8b4-47e4-be70-8fbc1bee92d0@HIDDEN>
MIME-Version: 1.0
User-Agent: Betterbird (Linux)
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
To: Philip Kaludercic <philipk@HIDDEN>
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
 <87ecsoc6cz.fsf@HIDDEN>
Content-Language: en-US, pt-BR
From: "Lua V. R." <me@HIDDEN>
In-Reply-To: <87ecsoc6cz.fsf@HIDDEN>
Date: Thu,  4 Sep 2025 00:02:51 +0000 (UTC)
X-CM-Analysis: v=2.4 cv=DJTd4DNb c=1 sm=1 tr=0 ts=68b8d72c
 a=AE7tfnPL9jKFtS+MZ9Z/2w==:617 a=xqWC_Br6kY4A:10 a=r77TgQKjGQsHNAKrUKIA:9
 a=gOsM90wFzwEAMpLDgvgA:9 a=QEXdDO2ut3YA:10 a=ZXulRonScM0A:10
 a=zZCYzV9kfG8A:10 a=YlruJXNrF_IqJ07b8VgA:9 a=B2y7HmGcmWMA:10
X-CM-Envelope: MS4xfGlW8yDnZvlwwUHvP063i6EvCn3OgT9l6uO0CHc5Wk4h7l9FPG7l2bwybyTVhAyd3anDedm3TqIAq3oZDuTRYO1YWFX1gRA6m/xZFl8CckIaMvamsFHH
 uuJdwGJRqp7fyjy0/1oJCI0keYd6xqPpi6WwaU3MCL5h+mw+7NhY5V5+xmP661muN3RJKbe17La69wlzbLZMGCQrbf6dlz6DGEgG5GoP94P5WTmSLujCXYlq
 bHY78vSpv3z7SLco9kJafxkuiJDwWJbpXVVodFFDg6ZPkHJagZhae0LBvvQeAiaV
X-AuthUser: lua@HIDDEN
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:  Hi Philip, Em 03/09/2025 05:01, Philip Kaludercic escreveu:
 > As mentioned on Emacs-devel, shouldn't this be `eglot-semantic-tokens-mode'.
 Thanks for catching this :) I fixed it among other things, and I apologi
 [...] Content analysis details:   (3.6 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [2804:14d:8084:a662:0:0:0:db8f listed in] [zen.spamhaus.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.
 [23.83.218.249 listed in sa-trusted.bondedsender.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 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [23.83.218.249 listed in wl.mailspike.net]
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
 no trust [23.83.218.249 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.
 [23.83.218.249 listed in bl.score.senderscore.com]
X-Debbugs-Envelope-To: 79374
Cc: 79374 <at> debbugs.gnu.org,
 =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@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>
Reply-To: me@HIDDEN
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:  Hi Philip, Em 03/09/2025 05:01, Philip Kaludercic escreveu:
    > As mentioned on Emacs-devel, shouldn't this be `eglot-semantic-tokens-mode'.
    Thanks for catching this :) I fixed it among other things, and I apologi
   [...] 
 
 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.
                             [23.83.218.249 listed in sa-accredit.habeas.com]
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
                              no trust
                             [23.83.218.249 listed in list.dnswl.org]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [2804:14d:8084:a662:0:0:0:db8f listed in]
                             [zen.spamhaus.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.
                             [23.83.218.249 listed in bl.score.senderscore.com]
  0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                             [23.83.218.249 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
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

This is a multi-part message in MIME format.
--------------inAXX13i0ODSZQVny1l1Heua
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Philip,

Em 03/09/2025 05:01, Philip Kaludercic escreveu:
> As mentioned on Emacs-devel, shouldn't this be `eglot-semantic-tokens-mode'.
Thanks for catching this :) I fixed it among other things, and I 
apologize for being unfamiliar with the e-mail git workflow. I don't 
know if I should send a patch on top of the previous patch, but I'm 
sending a squashed one.

In this new patch I also removed a "hash" I used in attempt to avoid a 
burst of requests, because it was not working in some particular 
situations (I can explain if you want). Now, due to how jit-lock works, 
Eglot may send two requests after a didChange if the server does not 
support delta requests. But this was also the case in the version with 
the hash, so alas, it was just complicating things.

--------------inAXX13i0ODSZQVny1l1Heua
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-add-semantic-tokens-support-for-eglot.patch"
Content-Disposition: attachment;
 filename="0001-add-semantic-tokens-support-for-eglot.patch"
Content-Transfer-Encoding: base64

RnJvbSAzMjQ3MWM0YTBmYzljYTgwYWU4ZDNjMjk5YTNiZDU1NTgxZjhjYjA0IE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWEgVmlhbmEgUmVpcyA8bWVAbHVhLmJsb2cuYnI+
CkRhdGU6IFR1ZSwgMiBTZXAgMjAyNSAxOTowMzo1MiAtMDMwMApTdWJqZWN0OiBbUEFUQ0hd
IGFkZCBzZW1hbnRpYyB0b2tlbnMgc3VwcG9ydCBmb3IgZWdsb3QKCi0tLQogbGlzcC9wcm9n
bW9kZXMvZWdsb3QuZWwgfCAzMTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDMxMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2VnbG90LmVsIGIvbGlzcC9wcm9n
bW9kZXMvZWdsb3QuZWwKaW5kZXggNDc1YjVlMTNmMS4uMWQ5ZmI3OTA1ZCAxMDA2NDQKLS0t
IGEvbGlzcC9wcm9nbW9kZXMvZWdsb3QuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZWdsb3Qu
ZWwKQEAgLTE0MSw2ICsxNDEsOCBAQAogKGRlZnZhciBjb21wYW55LXRvb2x0aXAtYWxpZ24t
YW5ub3RhdGlvbnMpCiAoZGVmdmFyIHRyYW1wLXNzaC1jb250cm9sbWFzdGVyLW9wdGlvbnMp
CiAoZGVmdmFyIHRyYW1wLXVzZS1zc2gtY29udHJvbG1hc3Rlci1vcHRpb25zKQorKGRlZnZh
ciBlZ2xvdC1zZW1hbnRpYy10b2tlbnMtZmFjZXMpCisoZGVmdmFyIGVnbG90LXNlbWFudGlj
LXRva2Vucy1tb2RpZmllci1mYWNlcykKIAogDAogOzs7IE9ic29sZXRlIGFsaWFzZXMKQEAg
LTEwMTcsNiArMTAxOSw3IEBAIG9iamVjdC4iCiAgICAgICAgICAgICAgICAgICAgICAgICBg
KDpkeW5hbWljUmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICwoaWYg
KGVnbG90LS10cmFtcGlzaC1wIHMpIDpqc29uLWZhbHNlIHQpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgOnN5bWJvbCBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgOnNlbWFudGljVG9rZW5zICcoOnJlZnJlc2hTdXBw
b3J0IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICA6Y29uZmlndXJhdGlvbiB0CiAgICAg
ICAgICAgICAgICAgICAgICAgICA6d29ya3NwYWNlRm9sZGVycyB0KQogICAgICAgICAgICAg
OnRleHREb2N1bWVudApAQCAtMTA3OSw2ICsxMDgyLDEzIEBAIG9iamVjdC4iCiAgICAgICAg
ICAgICAgOmZvcm1hdHRpbmcgICAgICAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29u
LWZhbHNlKQogICAgICAgICAgICAgIDpyYW5nZUZvcm1hdHRpbmcgICAgYCg6ZHluYW1pY1Jl
Z2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKICAgICAgICAgICAgICA6cmVuYW1lICAgICAgICAg
ICAgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCisgICAgICAgICAgICAg
OnNlbWFudGljVG9rZW5zICAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyZXF1ZXN0cyAnKDpyYW5n
ZSB0IDpmdWxsICg6ZGVsdGEgdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDp0b2tlbk1vZGlmaWVycyBbLEAobWFwY2FyICMnY2FyIGVnbG90LXNlbWFudGljLXRv
a2Vucy1tb2RpZmllci1mYWNlcyldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDpvdmVybGFwcGluZ1Rva2VuU3VwcG9ydCB0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDptdWx0aWxpbmVUb2tlblN1cHBvcnQgdAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6dG9rZW5UeXBlcyBbLEAobWFwY2FyICMnY2FyIGVnbG90
LXNlbWFudGljLXRva2Vucy1mYWNlcyldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDpmb3JtYXRzIFsicmVsYXRpdmUiXSkKICAgICAgICAgICAgICA6aW5sYXlIaW50
ICAgICAgICAgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCiAgICAgICAg
ICAgICAgOmNhbGxIaWVyYXJjaHkgICAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29u
LWZhbHNlKQogICAgICAgICAgICAgIDp0eXBlSGllcmFyY2h5ICAgICAgYCg6ZHluYW1pY1Jl
Z2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKQEAgLTExNDksNyArMTE1OSwxNiBAQCBvYmplY3Qu
IgogICAgIDphY2Nlc3NvciBlZ2xvdC0tbWFuYWdlZC1idWZmZXJzKQogICAgKHNhdmVkLWlu
aXRhcmdzCiAgICAgOmRvY3VtZW50YXRpb24gIlNhdmVkIGluaXRhcmdzIGZvciByZWNvbm5l
Y3Rpb24gcHVycG9zZXMuIgotICAgIDphY2Nlc3NvciBlZ2xvdC0tc2F2ZWQtaW5pdGFyZ3Mp
KQorICAgIDphY2Nlc3NvciBlZ2xvdC0tc2F2ZWQtaW5pdGFyZ3MpCisgICAoc2VtdG9rLWZh
Y2VzCisgICAgOmluaXRmb3JtIG5pbAorICAgIDpkb2N1bWVudGF0aW9uICJTZW1hbnRpYyB0
b2tlbnMgZmFjZXMuIikKKyAgIChzZW10b2stbW9kaWZpZXItZmFjZXMKKyAgICA6aW5pdGZv
cm0gbmlsCisgICAgOmRvY3VtZW50YXRpb24gIlNlbWFudGljIHRva2VucyBtb2RpZmllciBm
YWNlcy4iKQorICAgKHNlbXRvay1tb2RpZmllci1jYWNoZQorICAgIDppbml0Zm9ybSAobWFr
ZS1oYXNoLXRhYmxlKQorICAgIDpkb2N1bWVudGF0aW9uICJBIGhhc2htYXAgb2YgbW9kaWZp
ZXIgdmFsdWVzIHRvIHRoZSBzZWxlY3RlZCBmYWNlcy4iKSkKICAgOmRvY3VtZW50YXRpb24K
ICAgIlJlcHJlc2VudHMgYSBzZXJ2ZXIuIFdyYXBzIGEgcHJvY2VzcyBmb3IgTFNQIGNvbW11
bmljYXRpb24uIikKIApAQCAtMTIxMSw2ICsxMjMwLDExIEBAIElmIG9wdGlvbmFsIE1BUktF
UlMsIG1ha2UgbWFya2VycyBpbnN0ZWFkLiIKICAgICAgICAgIChlbmQgKGVnbG90LS1sc3At
cG9zaXRpb24tdG8tcG9pbnQgKHBsaXN0LWdldCByYW5nZSA6ZW5kKSBtYXJrZXJzKSkpCiAg
ICAgKGNvbnMgYmVnIGVuZCkpKQogCisoZGVmdW4gZWdsb3QtcmVnaW9uLXJhbmdlIChiZWcg
ZW5kKQorICAiUmV0dXJuIGEgTFNQIHJhbmdlIHJlcHJlc2VudGluZyByZWdpb24gQkVHIHRv
IEVORC4iCisgIChsaXN0IDpzdGFydCAoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24gYmVn
KQorICAgICAgICA6ZW5kIChlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBlbmQpKSkKKwog
KGRlZnVuIGVnbG90LXNlcnZlci1jYXBhYmxlICgmcmVzdCBmZWF0cykKICAgIkRldGVybWlu
ZSBpZiBjdXJyZW50IHNlcnZlciBpcyBjYXBhYmxlIG9mIEZFQVRTLiIKICAgKHVubGVzcyAo
Y2wtc29tZSAobGFtYmRhIChmZWF0KQpAQCAtMTU3Niw3ICsxNjAwLDggQEAgVXNlIGN1cnJl
bnQgc2VydmVyJ3Mgb3IgZmlyc3QgYXZhaWxhYmxlIEVnbG90IGV2ZW50cyBidWZmZXIuIgog
ICAoanNvbnJwYy1mb3JnZXQtcGVuZGluZy1jb250aW51YXRpb25zIHNlcnZlcikpCiAKIChk
ZWZ2YXIgZWdsb3QtY29ubmVjdC1ob29rCi0gICcoZWdsb3Qtc2lnbmFsLWRpZENoYW5nZUNv
bmZpZ3VyYXRpb24pCisgICcoZWdsb3Qtc2lnbmFsLWRpZENoYW5nZUNvbmZpZ3VyYXRpb24K
KyAgICBlZ2xvdC0tc2VtdG9rLWluaXRpYWxpemUpCiAgICJIb29rIHJ1biBhZnRlciBjb25u
ZWN0aW5nIHRvIGEgc2VydmVyLgogRWFjaCBmdW5jdGlvbiBpcyBwYXNzZWQgYW4gYGVnbG90
LWxzcC1zZXJ2ZXInIGluc3RhbmNlCiBhcyBhcmd1bWVudC4iKQpAQCAtMjI5MSw2ICsyMzE2
LDcgQEAgSWYgaXQgaXMgYWN0aXZhdGVkLCBhbHNvIHNpZ25hbCB0ZXh0RG9jdW1lbnQvZGlk
T3Blbi4iCiAgICAgICA7OyBSdW4gdXNlciBob29rIGFmdGVyICd0ZXh0RG9jdW1lbnQvZGlk
T3Blbicgc28gc2VydmVyIGtub3dzCiAgICAgICA7OyBhYm91dCB0aGUgYnVmZmVyLgogICAg
ICAgKGVnbG90LWlubGF5LWhpbnRzLW1vZGUgMSkKKyAgICAgIChlZ2xvdC1zZW1hbnRpYy10
b2tlbnMtbW9kZSAxKQogICAgICAgKHJ1bi1ob29rcyAnZWdsb3QtbWFuYWdlZC1tb2RlLWhv
b2spKSkpCiAKIChhZGQtaG9vayAnYWZ0ZXItY2hhbmdlLW1ham9yLW1vZGUtaG9vayAjJ2Vn
bG90LS1tYXliZS1hY3RpdmF0ZS1lZGl0aW5nLW1vZGUpCkBAIC00NDk0LDYgKzQ1MjAsMjg4
IEBAIElmIE5PRVJST1IsIHJldHVybiBwcmVkaWNhdGUsIGVsc2UgZXJyb3JpbmcgZnVuY3Rp
b24uIgogICAgICAgICAgKGppdC1sb2NrLXVucmVnaXN0ZXIgIydlZ2xvdC0tdXBkYXRlLWhp
bnRzKQogICAgICAgICAgKHJlbW92ZS1vdmVybGF5cyBuaWwgbmlsICdlZ2xvdC0taW5sYXkt
aGludCB0KSkpKQogCisMCis7OzsgU2VtYW50aWMgdG9rZW5zCisKKyhkZWZjdXN0b20gZWds
b3Qtc2VtYW50aWMtdG9rZW5zLWZhY2VzCisgICcoKCJuYW1lc3BhY2UiIC4gZm9udC1sb2Nr
LWtleXdvcmQtZmFjZSkKKyAgICAoInR5cGUiIC4gZm9udC1sb2NrLXR5cGUtZmFjZSkKKyAg
ICAoImNsYXNzIiAuIGZvbnQtbG9jay10eXBlLWZhY2UpCisgICAgKCJlbnVtIiAuIGZvbnQt
bG9jay10eXBlLWZhY2UpCisgICAgKCJpbnRlcmZhY2UiIC4gZm9udC1sb2NrLXR5cGUtZmFj
ZSkKKyAgICAoInN0cnVjdCIgLiBmb250LWxvY2stdHlwZS1mYWNlKQorICAgICgidHlwZVBh
cmFtZXRlciIgLiBmb250LWxvY2stdHlwZS1mYWNlKQorICAgICgicGFyYW1ldGVyIiAuIGZv
bnQtbG9jay12YXJpYWJsZS1uYW1lLWZhY2UpCisgICAgKCJ2YXJpYWJsZSIgLiBmb250LWxv
Y2stdmFyaWFibGUtbmFtZS1mYWNlKQorICAgICgicHJvcGVydHkiIC4gZm9udC1sb2NrLXBy
b3BlcnR5LXVzZS1mYWNlKQorICAgICgiZW51bU1lbWJlciIgLiBmb250LWxvY2stY29uc3Rh
bnQtZmFjZSkKKyAgICAoImV2ZW50IiAuIGZvbnQtbG9jay12YXJpYWJsZS1uYW1lLWZhY2Up
CisgICAgKCJmdW5jdGlvbiIgLiBmb250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKQorICAg
ICgibWV0aG9kIiAuIGZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UpCisgICAgKCJtYWNy
byIgLiBmb250LWxvY2stcHJlcHJvY2Vzc29yLWZhY2UpCisgICAgKCJrZXl3b3JkIiAuIGZv
bnQtbG9jay1rZXl3b3JkLWZhY2UpCisgICAgKCJtb2RpZmllciIgLiBmb250LWxvY2stZnVu
Y3Rpb24tbmFtZS1mYWNlKQorICAgICgiY29tbWVudCIgLiBmb250LWxvY2stY29tbWVudC1m
YWNlKQorICAgICgic3RyaW5nIiAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICAoIm51
bWJlciIgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAoInJlZ2V4cCIgLiBmb250
LWxvY2stc3RyaW5nLWZhY2UpCisgICAgKCJvcGVyYXRvciIgLiBmb250LWxvY2stZnVuY3Rp
b24tbmFtZS1mYWNlKQorICAgICgiZGVjb3JhdG9yIiAuIGZvbnQtbG9jay10eXBlLWZhY2Up
KQorICAiQWxpc3Qgb2YgZmFjZXMgdG8gdXNlIHRvIGhpZ2hsaWdodCBzZW1hbnRpYyB0b2tl
bnMuCitFYWNoIGVsZW1lbnQgaXMgYSBjb25zIGNlbGwgd2hvc2UgY2FyIGlzIGEgdG9rZW4g
dHlwZSBuYW1lIGFuZCBjZHIgaXMKK3RoZSBmYWNlIHRvIHVzZS4iCisgIDp0eXBlIGAoYWxp
c3QgOmtleS10eXBlIChzdHJpbmcgOnRhZyAiVG9rZW4gbmFtZSIpCisgICAgICAgICAgICAg
ICAgOnZhbHVlLXR5cGUgKGNob2ljZSAoZmFjZSA6dGFnICJGYWNlIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdCA6dGFnICJGYWNlIEF0dHJpYnV0ZXMi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleS10eXBl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNob2ljZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsQChtYXBjYXIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJk
YSAoY2VsbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBgKGNvbnN0IDp0YWcgLChjYXBpdGFsaXplCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciBjZWxsKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICwoY2FyIGNlbGwpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmFjZS1hdHRyaWJ1dGUtbmFtZS1hbGlzdCkpKSkpKQorCisoZGVmY3Vz
dG9tIGVnbG90LXNlbWFudGljLXRva2Vucy1tb2RpZmllci1mYWNlcworICAnKCgiZGVjbGFy
YXRpb24iIC4gZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkKKyAgICAoImRlZmluaXRp
b24iIC4gZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkKKyAgICAoInJlYWRvbmx5IiAu
IGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQorICAgICgic3RhdGljIiAuIGZvbnQtbG9jay1r
ZXl3b3JkLWZhY2UpCisgICAgKCJkZXByZWNhdGVkIiAuIGVnbG90LWRpYWdub3N0aWMtdGFn
LWRlcHJlY2F0ZWQtZmFjZSkKKyAgICAoImFic3RyYWN0IiAuIGZvbnQtbG9jay1rZXl3b3Jk
LWZhY2UpCisgICAgKCJhc3luYyIgLiBmb250LWxvY2stcHJlcHJvY2Vzc29yLWZhY2UpCisg
ICAgKCJtb2RpZmljYXRpb24iIC4gZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkKKyAg
ICAoImRvY3VtZW50YXRpb24iIC4gZm9udC1sb2NrLWRvYy1mYWNlKQorICAgICgiZGVmYXVs
dExpYnJhcnkiIC4gZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkpCisgICJMaXN0IG9mIGZhY2Ug
dG8gdXNlIHRvIGhpZ2hsaWdodCB0b2tlbnMgd2l0aCBtb2RpZmllcnMuCitFYWNoIGVsZW1l
bnQgaXMgYSBjb25zIGNlbGwgd2hvc2UgY2FyIGlzIGEgbW9kaWZpZXIgbmFtZSBhbmQgY2Ry
IGlzCit0aGUgZmFjZSB0byB1c2UuIgorICA6dHlwZSBgKGFsaXN0IDprZXktdHlwZSAoc3Ry
aW5nIDp0YWcgIlRva2VuIG5hbWUiKQorICAgICAgICAgICAgICAgIDp2YWx1ZS10eXBlIChj
aG9pY2UgKGZhY2UgOnRhZyAiRmFjZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocGxpc3QgOnRhZyAiRmFjZSBBdHRyaWJ1dGVzIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDprZXktdHlwZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaG9pY2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLEAobWFwY2FyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGNlbGwpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYChjb25zdCA6dGFn
ICwoY2FwaXRhbGl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgY2VsbCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGNhciBjZWxsKSkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2Ut
YXR0cmlidXRlLW5hbWUtYWxpc3QpKSkpKSkKKworKGRlZnZhci1sb2NhbCBlZ2xvdC0tc2Vt
dG9rLWlkbGUtdGltZXIgbmlsCisgICJJZGxlIHRpbWVyIHRvIHJlcXVlc3QgZnVsbCBzZW1h
bnRpYyB0b2tlbnMuIikKKworKGRlZnZhci1sb2NhbCBlZ2xvdC0tc2VtdG9rLWNhY2hlIG5p
bCkKKworKGRlZnN1YnN0IGVnbG90LS1zZW10b2stcHV0LWNhY2hlIChrIHYpCisgICJTZXQg
a2V5IEsgb2YgYGVnbG90LXNlbWFudGljLXRva2Vucy0tY2FjaGUnIHRvIFYuIgorICAoc2V0
cSBlZ2xvdC0tc2VtdG9rLWNhY2hlCisgICAgICAgIChwbGlzdC1wdXQgZWdsb3QtLXNlbXRv
ay1jYWNoZSBrIHYpKSkKKworOzsgUHJvY2VzcyByZXNwb25zZQorCisoZGVmdW4gZWdsb3Qt
LXNlbXRvay1pbmdlc3QtcmFuZ2UtcmVzcG9uc2UgKHJlc3BvbnNlKQorICAiSGFuZGxlIFJF
U1BPTlNFIHRvIHNlbWFudGljVG9rZW5zL3JhbmdlIHJlcXVlc3QuIgorICAoZWdsb3QtLXNl
bXRvay1wdXQtY2FjaGUgOnJlc3BvbnNlIHJlc3BvbnNlKQorICAoY2wtYXNzZXJ0IChwbGlz
dC1nZXQgZWdsb3QtLXNlbXRvay1jYWNoZSA6cmVnaW9uKSkpCisKKyhkZWZ1biBlZ2xvdC0t
c2VtdG9rLWluZ2VzdC1mdWxsLXJlc3BvbnNlIChyZXNwb25zZSkKKyAgIkhhbmRsZSBSRVNQ
T05TRSB0byBzZW1hbnRpY1Rva2Vucy9mdWxsIHJlcXVlc3QuIgorICAoZWdsb3QtLXNlbXRv
ay1wdXQtY2FjaGUgOnJlc3BvbnNlIHJlc3BvbnNlKQorICAoY2wtYXNzZXJ0IChub3QgKHBs
aXN0LWdldCBlZ2xvdC0tc2VtdG9rLWNhY2hlIDpyZWdpb24pKSkpCisKKyhkZWZzdWJzdCBl
Z2xvdC0tc2VtdG9rLWFwcGx5LWRlbHRhLWVkaXRzIChvbGQtZGF0YSBlZGl0cykKKyAgIkFw
cGx5IEVESVRTIG9idGFpbmVkIGZyb20gZnVsbC9kZWx0YSByZXF1ZXN0IHRvIE9MRC1EQVRB
LiIKKyAgKGxldCogKChvbGQtdG9rZW4tY291bnQgKGxlbmd0aCBvbGQtZGF0YSkpCisgICAg
ICAgICAob2xkLXRva2VuLWluZGV4IDApCisgICAgICAgICAoc3Vic3RyaW5ncykpCisgICAg
KGNsLWxvb3AgZm9yIGVkaXQgYWNyb3NzIGVkaXRzIGRvCisgICAgICh3aGVuICg8IG9sZC10
b2tlbi1pbmRleCAocGxpc3QtZ2V0IGVkaXQgOnN0YXJ0KSkKKyAgICAgICAocHVzaCAoc3Vi
c3RyaW5nIG9sZC1kYXRhIG9sZC10b2tlbi1pbmRleCAocGxpc3QtZ2V0IGVkaXQgOnN0YXJ0
KSkgc3Vic3RyaW5ncykpCisgICAgIChwdXNoIChwbGlzdC1nZXQgZWRpdCA6ZGF0YSkgc3Vi
c3RyaW5ncykKKyAgICAgKHNldHEgb2xkLXRva2VuLWluZGV4ICgrIChwbGlzdC1nZXQgZWRp
dCA6c3RhcnQpIChwbGlzdC1nZXQgZWRpdCA6ZGVsZXRlQ291bnQpKSkKKyAgICAgZmluYWxs
eSBkbyAocHVzaCAoc3Vic3RyaW5nIG9sZC1kYXRhIG9sZC10b2tlbi1pbmRleCBvbGQtdG9r
ZW4tY291bnQpIHN1YnN0cmluZ3MpKQorICAgIChhcHBseSAjJ3Zjb25jYXQgKG5yZXZlcnNl
IHN1YnN0cmluZ3MpKSkpCisKKyhkZWZ1biBlZ2xvdC0tc2VtdG9rLWluZ2VzdC1mdWxsL2Rl
bHRhLXJlc3BvbnNlIChyZXNwb25zZSkKKyAgIkhhbmRsZSBSRVNQT05TRSB0byBzZW1hbnRp
Y1Rva2Vucy9mdWxsL2RlbHRhIHJlcXVlc3QuIgorICAoaWYtbGV0KiAoKGVkaXRzIChwbGlz
dC1nZXQgcmVzcG9uc2UgOmVkaXRzKSkpCisgICAgICAocHJvZ24KKyAgICAgICAgKGNsLWFz
c2VydCAobm90IChwbGlzdC1nZXQgZWdsb3QtLXNlbXRvay1jYWNoZSA6cmVnaW9uKSkpCisg
ICAgICAgICh3aGVuLWxldCogKChvbGQtZGF0YSAocGxpc3QtZ2V0IChwbGlzdC1nZXQgZWds
b3QtLXNlbXRvay1jYWNoZSA6cmVzcG9uc2UpIDpkYXRhKSkpCisgICAgICAgICAgKGVnbG90
LS1zZW10b2stcHV0LWNhY2hlCisgICAgICAgICAgIDpyZXNwb25zZQorICAgICAgICAgICAo
cGxpc3QtcHV0IHJlc3BvbnNlIDpkYXRhIChlZ2xvdC0tc2VtdG9rLWFwcGx5LWRlbHRhLWVk
aXRzIG9sZC1kYXRhIGVkaXRzKSkpKSkKKyAgICA7OyBzZXJ2ZXIgZGVjaWRlZCB0byBzZW5k
IGZ1bGwgcmVzcG9uc2UgaW5zdGVhZAorICAgIChlZ2xvdC0tc2VtdG9rLWluZ2VzdC1mdWxs
LXJlc3BvbnNlIHJlc3BvbnNlKSkpCisKKyhkZWZ1biBlZ2xvdC0tc2VtdG9rLXJlcXVlc3Qg
KHJlZ2lvbiAmb3B0aW9uYWwgZm9udGlmeSkKKyAgIlNlbmQgc2VtYW50aWMgdG9rZW5zIHJl
cXVlc3QgdG8gdGhlIGxhbmd1YWdlIHNlcnZlci4KK0EgZnVsbC9kZWx0YSByZXF1ZXN0IHdp
bGwgYmUgc2VudCBpZiBkZWx0YSByZXF1ZXN0cyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQorbGFu
Z3VhZ2Ugc2VydmVyIGFuZCBhIGZ1bGwgc2V0IG9mIHRva2VucyBoYWQgcHJldmlvdXNseSBi
ZWVuIHJlY2VpdmVkLgorT3RoZXJ3aXNlLCBhIHJhbmdlZCByZXF1ZXN0IHdpbGwgYmUgZGlz
cGF0Y2hlZCBpZiBSRUdJT04gaXMgbm9uLW5pbCBhbmQKK3JhbmdlZCByZXF1ZXN0cyBhcmUg
c3VwcG9ydGVkIGJ5IHRoZSBsYW5ndWFnZSBzZXJ2ZXIuIEluIGFsbCBvdGhlcgorY2FzZXMs
IGEgZnVsbCB0b2tlbnMgcmVxdWVzdCB3aWxsIGJlIGRpc3BhdGNoZWQuCisKK0lmIEZPTlRJ
RlkgaXMgbm9uLW5pbCwgcmVmb250aWZ5IGFmdGVyIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy4i
CisgIChsZXQqICgobWV0aG9kIDp0ZXh0RG9jdW1lbnQvc2VtYW50aWNUb2tlbnMvZnVsbCkK
KyAgICAgICAgIChwYXJhbXMgKGxpc3QgOnRleHREb2N1bWVudCAoZWdsb3QtLVRleHREb2N1
bWVudElkZW50aWZpZXIpKSkKKyAgICAgICAgIChyZXNwb25zZS1oYW5kbGVyICMnZWdsb3Qt
LXNlbXRvay1pbmdlc3QtZnVsbC1yZXNwb25zZSkKKyAgICAgICAgIChmaW5hbC1yZWdpb24g
bmlsKQorICAgICAgICAgKGJ1ZiAoY3VycmVudC1idWZmZXIpKSkKKyAgICAoY29uZAorICAg
ICAoKGFuZCAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOnNlbWFudGljVG9rZW5zUHJvdmlkZXIg
OmZ1bGwgOmRlbHRhKQorICAgICAgICAgICAobGV0ICgocmVzcG9uc2UgKHBsaXN0LWdldCBl
Z2xvdC0tc2VtdG9rLWNhY2hlIDpyZXNwb25zZSkpKQorICAgICAgICAgICAgIChhbmQgKHBs
aXN0LWdldCByZXNwb25zZSA6cmVzdWx0SWQpIChwbGlzdC1nZXQgcmVzcG9uc2UgOmRhdGEp
CisgICAgICAgICAgICAgICAgICAobm90IChwbGlzdC1nZXQgZWdsb3QtLXNlbXRvay1jYWNo
ZSA6cmVnaW9uKSkpKSkKKyAgICAgIChzZXRxIG1ldGhvZCA6dGV4dERvY3VtZW50L3NlbWFu
dGljVG9rZW5zL2Z1bGwvZGVsdGEpCisgICAgICAoc2V0cSByZXNwb25zZS1oYW5kbGVyICMn
ZWdsb3QtLXNlbXRvay1pbmdlc3QtZnVsbC9kZWx0YS1yZXNwb25zZSkKKyAgICAgIChzZXRx
IHBhcmFtcworICAgICAgICAgICAgKHBsaXN0LXB1dCBwYXJhbXMgOnByZXZpb3VzUmVzdWx0
SWQKKyAgICAgICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCAocGxpc3QtZ2V0IGVnbG90
LS1zZW10b2stY2FjaGUgOnJlc3BvbnNlKSA6cmVzdWx0SWQpKSkpCisgICAgICgoYW5kIHJl
Z2lvbiAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOnNlbWFudGljVG9rZW5zUHJvdmlkZXIgOnJh
bmdlKSkKKyAgICAgIChzZXRxIG1ldGhvZCA6dGV4dERvY3VtZW50L3NlbWFudGljVG9rZW5z
L3JhbmdlKQorICAgICAgKHNldHEgZmluYWwtcmVnaW9uIHJlZ2lvbikKKyAgICAgIChzZXRx
IHBhcmFtcworICAgICAgICAgICAgKHBsaXN0LXB1dCBwYXJhbXMgOnJhbmdlIChlZ2xvdC1y
ZWdpb24tcmFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNh
ciBmaW5hbC1yZWdpb24pIChjZHIgZmluYWwtcmVnaW9uKSkpKQorICAgICAgKHNldHEgcmVz
cG9uc2UtaGFuZGxlciAjJ2VnbG90LS1zZW10b2staW5nZXN0LXJhbmdlLXJlc3BvbnNlKSkp
CisgICAgKGVnbG90LS1hc3luYy1yZXF1ZXN0CisgICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2
ZXItb3ItbG9zZSkgbWV0aG9kIHBhcmFtcworICAgICA6c3VjY2Vzcy1mbgorICAgICAobGFt
YmRhIChyZXNwb25zZSkKKyAgICAgICAoZWdsb3QtLXdoZW4tbGl2ZS1idWZmZXIgYnVmCisg
ICAgICAgICAoZWdsb3QtLXNlbXRvay1wdXQtY2FjaGUgOmRvY3VtZW50VmVyc2lvbiBlZ2xv
dC0tdmVyc2lvbmVkLWlkZW50aWZpZXIpCisgICAgICAgICAoZWdsb3QtLXNlbXRvay1wdXQt
Y2FjaGUgOnJlZ2lvbiBmaW5hbC1yZWdpb24pCisgICAgICAgICAoZnVuY2FsbCByZXNwb25z
ZS1oYW5kbGVyIHJlc3BvbnNlKQorICAgICAgICAgKHdoZW4gZm9udGlmeSAoaml0LWxvY2st
cmVmb250aWZ5IChjYXItc2FmZSByZWdpb24pIChjZHItc2FmZSByZWdpb24pKSkKKyAgICAg
ICAgICh3aGVuIGZpbmFsLXJlZ2lvbiAoZWdsb3QtLXNlbXRvay1yZXF1ZXN0LWZ1bGwtb24t
aWRsZSkpKSkKKyAgICAgOmhpbnQgIydlZ2xvdC0tc2VtdG9rLXJlcXVlc3QpKSkKKworKGRl
ZnVuIGVnbG90LS1zZW10b2stZm9udGlmeSAoYmVnIGVuZCkKKyAgIkFwcGx5IHRoZSBjYWNo
ZWQgc2VtYW50aWMgdG9rZW5zIGZyb20gQkVHIHRvIEVORC4iCisgICh3aXRoLXNsb3RzICgo
bW9kaWZpZXItY2FjaGUgc2VtdG9rLW1vZGlmaWVyLWNhY2hlKQorICAgICAgICAgICAgICAg
KGZhY2VzIHNlbXRvay1mYWNlcykKKyAgICAgICAgICAgICAgIChtb2RpZmllci1mYWNlcyBz
ZW10b2stbW9kaWZpZXItZmFjZXMpKQorICAgICAgKGVnbG90LWN1cnJlbnQtc2VydmVyKQor
ICAgIChjb25kCisgICAgICgobm90IChhbmQgZmFjZXMKKyAgICAgICAgICAgICAgICBlZ2xv
dC0tc2VtdG9rLWNhY2hlCisgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBlZ2xvdC0tc2Vt
dG9rLWNhY2hlIDpyZXNwb25zZSkKKyAgICAgICAgICAgICAgICAoZXEgZWdsb3QtLXZlcnNp
b25lZC1pZGVudGlmaWVyIChwbGlzdC1nZXQgZWdsb3QtLXNlbXRvay1jYWNoZSA6ZG9jdW1l
bnRWZXJzaW9uKSkpKQorICAgICAgKGVnbG90LS1zZW10b2stcmVxdWVzdCAoY29ucyBiZWcg
ZW5kKSB0KSkKKyAgICAgKHQKKyAgICAgIDs7IGlmIHdlJ3JlIHVzaW5nIHRoZSByZXNwb25z
ZSB0byBhIHJhbmdlZCByZXF1ZXN0LCB3ZSdsbCBvbmx5IGJlIGFibGUgdG8gZm9udGlmeSB3
aXRoaW4KKyAgICAgIDs7IHRoYXQgcmFuZ2UgKGFuZCBoZW5jZSBzaG91bGRuJ3QgY2xlYXIg
YW55IGhpZ2hsaWdodHMgb3V0c2lkZSBvZiB0aGF0IHJhbmdlKQorICAgICAgKHdoZW4tbGV0
KiAoKHRva2VuLXJlZ2lvbiAocGxpc3QtZ2V0IGVnbG90LS1zZW10b2stY2FjaGUgOnJlZ2lv
bikpKQorICAgICAgICAocHJvZ24KKyAgICAgICAgICAod2hlbiAob3IgKDwgYmVnIChjYXIg
dG9rZW4tcmVnaW9uKSkKKyAgICAgICAgICAgICAgICAgICAgKD4gZW5kIChjZHIgdG9rZW4t
cmVnaW9uKSkpCisgICAgICAgICAgICA7OyB0cnVuY2F0ZWQhIGNvbnRpbnVlLCBidXQgcmVx
dWVzdCBhZ2FpbgorICAgICAgICAgICAgKGVnbG90LS1zZW10b2stcmVxdWVzdCAoY29ucyBi
ZWcgZW5kKSB0KSkKKyAgICAgICAgICAoc2V0cSBiZWcgKG1heCBiZWcgKGNhciB0b2tlbi1y
ZWdpb24pKSkKKyAgICAgICAgICAoc2V0cSBlbmQgKG1pbiBlbmQgKGNkciB0b2tlbi1yZWdp
b24pKSkpKQorICAgICAgKGVnbG90LS13aWRlbmluZworICAgICAgICAod2l0aC1zaWxlbnQt
bW9kaWZpY2F0aW9ucworICAgICAgICAgIChyZW1vdmUtbGlzdC1vZi10ZXh0LXByb3BlcnRp
ZXMgYmVnIGVuZCAnKGZvbnQtbG9jay1mYWNlKSkKKyAgICAgICAgICAobGV0KiAoKGluaGli
aXQtZmllbGQtdGV4dC1tb3Rpb24gdCkKKyAgICAgICAgICAgICAgICAgKGRhdGEgKHBsaXN0
LWdldCAocGxpc3QtZ2V0IGVnbG90LS1zZW10b2stY2FjaGUgOnJlc3BvbnNlKSA6ZGF0YSkp
CisgICAgICAgICAgICAgICAgIChpLW1heCAobGVuZ3RoIGRhdGEpKQorICAgICAgICAgICAg
ICAgICAoYmVnLWJvbCAoYW5kIChnb3RvLWNoYXIgYmVnKSAobGluZS1iZWdpbm5pbmctcG9z
aXRpb24pKSkKKyAgICAgICAgICAgICAgICAgKHByb3BlcnR5LWJlZykKKyAgICAgICAgICAg
ICAgICAgKHByb3BlcnR5LWVuZCkpCisgICAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1t
aW4pKQorICAgICAgICAgICAgKGNsLWRvICgoaSAwICgrIGkgNSkpIChjb2x1bW4gMCkpICgo
Pj0gaSBpLW1heCkpCisgICAgICAgICAgICAgICh3aGVuICg+IChhcmVmIGRhdGEgaSkgMCkK
KyAgICAgICAgICAgICAgICAoc2V0cSBjb2x1bW4gMCkKKyAgICAgICAgICAgICAgICAoZm9y
d2FyZC1saW5lIChhcmVmIGRhdGEgaSkpKQorICAgICAgICAgICAgICAodW5sZXNzICg8IChw
b2ludCkgYmVnLWJvbCkKKyAgICAgICAgICAgICAgICAoc2V0cSBjb2x1bW4gKCsgY29sdW1u
IChhcmVmIGRhdGEgKCsgaSAxKSkpKQorICAgICAgICAgICAgICAgIChmdW5jYWxsIGVnbG90
LW1vdmUtdG8tbGluZXBvcy1mdW5jdGlvbiBjb2x1bW4pCisgICAgICAgICAgICAgICAgKHdo
ZW4gKD4gKHBvaW50KSBlbmQpIChjbC1yZXR1cm4pKQorICAgICAgICAgICAgICAgIChzZXRx
IHByb3BlcnR5LWJlZyAocG9pbnQpKQorICAgICAgICAgICAgICAgIChmdW5jYWxsIGVnbG90
LW1vdmUtdG8tbGluZXBvcy1mdW5jdGlvbiAoKyBjb2x1bW4gKGFyZWYgZGF0YSAoKyBpIDIp
KSkpCisgICAgICAgICAgICAgICAgKHNldHEgcHJvcGVydHktZW5kIChwb2ludCkpCisgICAg
ICAgICAgICAgICAgKHdoZW4tbGV0KiAoKGZhY2UgKGFyZWYgZmFjZXMgKGFyZWYgZGF0YSAo
KyBpIDMpKSkpKQorICAgICAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IHByb3Bl
cnR5LWJlZyBwcm9wZXJ0eS1lbmQgJ2ZvbnQtbG9jay1mYWNlIGZhY2UpKQorICAgICAgICAg
ICAgICAgIChsZXQqICgoY29kZSAoYXJlZiBkYXRhICgrIGkgNCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAoZmFjZXMgKGdldGhhc2ggY29kZSBtb2RpZmllci1jYWNoZSAnbm90LWZv
dW5kKSkpCisgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgZmFjZXMgJ25vdC1mb3VuZCkK
KyAgICAgICAgICAgICAgICAgICAgKHNldHEgZmFjZXMgbmlsKQorICAgICAgICAgICAgICAg
ICAgICAoY2wtbG9vcCBmb3IgaiBmcm9tIDAgYmVsb3cgKGxlbmd0aCBtb2RpZmllci1mYWNl
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKD4gKGxvZ2FuZCBjb2RlIChh
c2ggMSBqKSkgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZWYgbW9k
aWZpZXItZmFjZXMgaikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCAo
YXJlZiBtb2RpZmllci1mYWNlcyBqKSBpbnRvIGZhY2VzKQorICAgICAgICAgICAgICAgICAg
ICAocHV0aGFzaCBjb2RlIGZhY2VzIG1vZGlmaWVyLWNhY2hlKSkKKyAgICAgICAgICAgICAg
ICAgIChkb2xpc3QgKGZhY2UgZmFjZXMpCisgICAgICAgICAgICAgICAgICAgIChwdXQtdGV4
dC1wcm9wZXJ0eSBwcm9wZXJ0eS1iZWcgcHJvcGVydHktZW5kICdmb250LWxvY2stZmFjZSBm
YWNlKSkpKSkpKSkKKyAgICAgIGAoaml0LWxvY2stYm91bmRzICxiZWcgLiAsZW5kKSkpKSkK
KworKGRlZnVuIGVnbG90LS1zZW10b2stcmVxdWVzdC1mdWxsLW9uLWlkbGUgKCkKKyAgIk1h
a2UgYSBmdWxsIHNlbWFudGljIHRva2VucyByZXF1ZXN0IGFmdGVyIGFuIGlkbGUgdGltZXIu
IgorICAobGV0KiAoKGJ1ZiAoY3VycmVudC1idWZmZXIpKQorICAgICAgICAgKGZ1biAobGFt
YmRhICgpCisgICAgICAgICAgICAgICAgKGVnbG90LS13aGVuLWxpdmUtYnVmZmVyIGJ1Zgor
ICAgICAgICAgICAgICAgICAgKGVnbG90LS1zZW10b2stcmVxdWVzdCBuaWwpKSkpKQorICAg
ICh3aGVuIGVnbG90LS1zZW10b2staWRsZS10aW1lciAoY2FuY2VsLXRpbWVyIGVnbG90LS1z
ZW10b2staWRsZS10aW1lcikpCisgICAgKHNldHEgZWdsb3QtLXNlbXRvay1pZGxlLXRpbWVy
IChydW4td2l0aC1pZGxlLXRpbWVyICgqIDMgZWdsb3Qtc2VuZC1jaGFuZ2VzLWlkbGUtdGlt
ZSkgbmlsIGZ1bikpKSkKKworKGRlZnVuIGVnbG90LS1zZW10b2stb24tcmVmcmVzaCAoc2Vy
dmVyKQorICAiQ2xlYXIgc2VtYW50aWMgdG9rZW5zIHdpdGhpbiBhbGwgYnVmZmVycyBvZiBT
RVJWRVIuIgorICAoY2wtbG9vcCBmb3IgYnVmZmVyIGluIChlZ2xvdC0tbWFuYWdlZC1idWZm
ZXJzIHNlcnZlcikgZG8KKyAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVy
CisgICAgICAgICAgICAgKHNldHEgZWdsb3QtLXNlbXRvay1jYWNoZSBuaWwpCisgICAgICAg
ICAgICAgKGppdC1sb2NrLXJlZm9udGlmeSkpKSkKKworKGxldCAoKGRlYm91bmNlLXRpbWVy
IG5pbCkpCisgIChjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLXJlcXVlc3QKKyAgICAoc2Vy
dmVyIChfbWV0aG9kIChlcWwgd29ya3NwYWNlL3NlbWFudGljVG9rZW5zL3JlZnJlc2gpKSkK
KyAgICAiSGFuZGxlIGEgc2VtYW50aWNUb2tlbnMvcmVmcmVzaCByZXF1ZXN0IGZyb20gU0VS
VkVSLiIKKyAgICAod2hlbiBkZWJvdW5jZS10aW1lciAoY2FuY2VsLXRpbWVyIGRlYm91bmNl
LXRpbWVyKSkKKyAgICAoc2V0cSBkZWJvdW5jZS10aW1lciAocnVuLXdpdGgtdGltZXIgNSBu
aWwgIydlZ2xvdC0tc2VtdG9rLW9uLXJlZnJlc2ggc2VydmVyKSkKKyAgICBuaWwpKQorCis7
OyBJbml0aWFsaXphdGlvbgorKGRlZnVuIGVnbG90LS1zZW10b2stYnVpbGQtZmFjZS1tYXAg
KGlkZW50aWZpZXJzIGZhY2VzIGNhdGVnb3J5IHZhcm5hbWUpCisgICJCdWlsZCBtYXAgb2Yg
RkFDRVMgZm9yIElERU5USUZJRVJTIHVzaW5nIENBVEVHT1JZIGFuZCBWQVJOQU1FLiIKKyAg
KHZjb25jYXQKKyAgIChtYXBjYXIgKGxhbWJkYSAoaWQpCisgICAgICAgICAgICAgKGxldCAo
KG1heWJlLWZhY2UgKGNkciAoYXNzb2MgaWQgZmFjZXMpKSkpCisgICAgICAgICAgICAgICAo
d2hlbiAobm90IG1heWJlLWZhY2UpCisgICAgICAgICAgICAgICAgIChkaXNwbGF5LXdhcm5p
bmcKKyAgICAgICAgICAgICAgICAgICdlZ2xvdC1zZW10b2sKKyAgICAgICAgICAgICAgICAg
IChmb3JtYXQtbWVzc2FnZSAiTm8gZmFjZSBoYXMgYmVlbiBhc3NvY2lhdGVkIHRvIHRoZSAl
cyBgJXMnOiBjb25zaWRlciBhZGRpbmcgYSBjb3JyZXNwb25kaW5nIGRlZmluaXRpb24gdG8g
JXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgaWQgdmFy
bmFtZSkpKQorICAgICAgICAgICAgICAgbWF5YmUtZmFjZSkpCisgICAgICAgICAgIGlkZW50
aWZpZXJzKSkpCisKKyhkZWZ1biBlZ2xvdC0tc2VtdG9rLWluaXRpYWxpemUgKHNlcnZlcikK
KyAgIkluaXRpYWxpemUgU0VSVkVSIGZvciBzZW1hbnRpYyB0b2tlbnMuIgorICAoY2wtZGVz
dHJ1Y3R1cmluZy1iaW5kICgma2V5IHRva2VuVHlwZXMgdG9rZW5Nb2RpZmllcnMgJmFsbG93
LW90aGVyLWtleXMpCisgICAgICAocGxpc3QtZ2V0IChwbGlzdC1nZXQgKGVnbG90LS1jYXBh
YmlsaXRpZXMgc2VydmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZW1hbnRp
Y1Rva2Vuc1Byb3ZpZGVyKQorICAgICAgICAgICAgICAgICA6bGVnZW5kKQorICAgIChvc2V0
IHNlcnZlciBzZW10b2stZmFjZXMKKyAgICAgICAgICAoZWdsb3QtLXNlbXRvay1idWlsZC1m
YWNlLW1hcAorICAgICAgICAgICB0b2tlblR5cGVzIGVnbG90LXNlbWFudGljLXRva2Vucy1m
YWNlcworICAgICAgICAgICAic2VtYW50aWMgdG9rZW4iICJlZ2xvdC0tc2VtdG9rZmFjZXMi
KSkKKyAgICAob3NldCBzZXJ2ZXIgc2VtdG9rLW1vZGlmaWVyLWZhY2VzCisgICAgICAgICAg
KGVnbG90LS1zZW10b2stYnVpbGQtZmFjZS1tYXAKKyAgICAgICAgICAgdG9rZW5Nb2RpZmll
cnMgZWdsb3Qtc2VtYW50aWMtdG9rZW5zLW1vZGlmaWVyLWZhY2VzCisgICAgICAgICAgICJz
ZW1hbnRpYyB0b2tlbiBtb2RpZmllciIgImVnbG90LS1zZW10b2ttb2RpZmllci1mYWNlcyIp
KSkpCisKKyhkZWZpbmUtbWlub3ItbW9kZSBlZ2xvdC1zZW1hbnRpYy10b2tlbnMtbW9kZQor
ICAiTWlub3IgbW9kZSBmb3IgZm9udGlmeWluZyBidWZmZXIgd2l0aCBMU1Agc2VydmVyJ3Mg
c2VtYW50aWMgdG9rZW5zLiIKKyAgOmdsb2JhbCBuaWwKKyAgKGNvbmQgKGVnbG90LXNlbWFu
dGljLXRva2Vucy1tb2RlCisgICAgICAgICAoaWYgKGVnbG90LXNlcnZlci1jYXBhYmxlIDpz
ZW1hbnRpY1Rva2Vuc1Byb3ZpZGVyKQorICAgICAgICAgICAgIChqaXQtbG9jay1yZWdpc3Rl
ciAjJ2VnbG90LS1zZW10b2stZm9udGlmeSAnY29udGV4dHVhbCkKKyAgICAgICAgICAgKGVn
bG90LXNlbWFudGljLXRva2Vucy1tb2RlIC0xKSkpCisgICAgICAgICh0CisgICAgICAgICAo
aml0LWxvY2stdW5yZWdpc3RlciAjJ2VnbG90LS1zZW10b2stZm9udGlmeSkKKyAgICAgICAg
ICh3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zCisgICAgICAgICAgIChyZW1vdmUtbGlzdC1v
Zi10ZXh0LXByb3BlcnRpZXMgKHBvaW50LW1pbikgKHBvaW50LW1heCkgJyhmb250LWxvY2st
ZmFjZSkpKSkpKQorCiAMCiA7OzsgQ2FsbCBhbmQgdHlwZSBoaWVyYXJjaGllcwogKHJlcXVp
cmUgJ2J1dHRvbikKQEAgLTQ3MjgsNyArNTAzNiw4IEBAIElmIE5PRVJST1IsIHJldHVybiBw
cmVkaWNhdGUsIGVsc2UgZXJyb3JpbmcgZnVuY3Rpb24uIgogOzsgaGFyZGVyLiBGb3Igbm93
LCB1c2UgYHdpdGgtZXZhbC1hZnRlci1sb2FkJy4gU2VlIGFsc28gZ2l0aHViIzExODMuCiAo
d2l0aC1ldmFsLWFmdGVyLWxvYWQgJ2Rlc2t0b3AKICAgKGFkZC10by1saXN0ICdkZXNrdG9w
LW1pbm9yLW1vZGUtaGFuZGxlcnMgJyhlZ2xvdC0tbWFuYWdlZC1tb2RlIC4gaWdub3JlKSkK
LSAgKGFkZC10by1saXN0ICdkZXNrdG9wLW1pbm9yLW1vZGUtaGFuZGxlcnMgJyhlZ2xvdC1p
bmxheS1oaW50cy1tb2RlIC4gaWdub3JlKSkpCisgIChhZGQtdG8tbGlzdCAnZGVza3RvcC1t
aW5vci1tb2RlLWhhbmRsZXJzICcoZWdsb3QtaW5sYXktaGludHMtbW9kZSAuIGlnbm9yZSkp
CisgIChhZGQtdG8tbGlzdCAnZGVza3RvcC1taW5vci1tb2RlLWhhbmRsZXJzICcoZWdsb3Qt
c2VtYW50aWMtdG9rZW5zLW1vZGUgLiBpZ25vcmUpKSkKIAogDAogOzs7IE1pc2MKQEAgLTQ3
NTcsNiArNTA2Niw3IEBAIElmIE5PRVJST1IsIHJldHVybiBwcmVkaWNhdGUsIGVsc2UgZXJy
b3JpbmcgZnVuY3Rpb24uIgogICAgICAgICAgICAgICAgZWdsb3QtZm9ybWF0CiAgICAgICAg
ICAgICAgICBlZ2xvdC1mb3JtYXQtYnVmZmVyCiAgICAgICAgICAgICAgICBlZ2xvdC1pbmxh
eS1oaW50cy1tb2RlCisgICAgICAgICAgICAgICBlZ2xvdC1zZW1hbnRpYy10b2tlbnMtbW9k
ZQogICAgICAgICAgICAgICAgZWdsb3QtcmVjb25uZWN0CiAgICAgICAgICAgICAgICBlZ2xv
dC1yZW5hbWUKICAgICAgICAgICAgICAgIGVnbG90LXNpZ25hbC1kaWRDaGFuZ2VDb25maWd1
cmF0aW9uCi0tIAoyLjUxLjAKCg==

--------------inAXX13i0ODSZQVny1l1Heua--




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

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


Received: (at 79374) by debbugs.gnu.org; 3 Sep 2025 08:01:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Sep 03 04:01:28 2025
Received: from localhost ([127.0.0.1]:38399 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1utiQp-0007rQ-Os
	for submit <at> debbugs.gnu.org; Wed, 03 Sep 2025 04:01:28 -0400
Received: from mout01.posteo.de ([185.67.36.65]:47515)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <philipk@HIDDEN>)
 id 1utiQn-0007rA-4m
 for 79374 <at> debbugs.gnu.org; Wed, 03 Sep 2025 04:01:26 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 50F87240028
 for <79374 <at> debbugs.gnu.org>; Wed,  3 Sep 2025 10:01:18 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.net; s=2017;
 t=1756886478; bh=LTlgDZEuo9ngMOZobm+TSiDQrdSAqYUNV3zcoQDguzo=;
 h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type:
 From;
 b=eJfQJg9iZg9imNZO4CzBoj9APBiZcksF5Qk9zmXRujVm3r2e9i1QlOMidEclO+O6U
 pKWiCV+MNRnvzUWo3TiPgGwbPhXJQfFo/1fF4XlKB6yAR6/bUehuAplUWp6FLMtPOY
 B+WuFNqU/spmqhIKFlYWR7CGs8I/olv8z4ozTmmt0GMuKwguVT3XXhYOhGWT0PIUBX
 i6/65MzMmEsM+KwiMpWyobDmQjC2N+KhwYNLXtTqVO/aLEuGnZIRLkYxpjUEHCz3dK
 ZW/s3LEWwcxvwgA91+TQZpEe+NTTH6I3JLX8lGSwv2b21/S0F0H8fLrE6qs3Qj/Tz7
 EppG5YLlJvTyA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4cGw6P4cQ3z6tx5;
 Wed,  3 Sep 2025 10:01:17 +0200 (CEST)
From: Philip Kaludercic <philipk@HIDDEN>
To: "Lua V. R." <me@HIDDEN>
Subject: Re: bug#79374: [PATCH] eglot: add support for semantic tokens
In-Reply-To: <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
 <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
Date: Wed, 03 Sep 2025 08:01:18 +0000
Message-ID: <87ecsoc6cz.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79374
Cc: 79374 <at> debbugs.gnu.org,
 =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@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 (---)

"Lua V. R." <me@HIDDEN> writes:


[...]

> +(define-minor-mode eglot-semantic-tokens-mode
> +  "Minor mode for fontifying buffer with LSP server's semantic tokens."
> +  :global nil
> +  (cond (eglot-semantic-tokens-mode
> +         (if (eglot-server-capable :semanticTokensProvider)
> +             (jit-lock-register #'eglot--semtok-fontify 'contextual)
> +           (eglot-semantic-tokens-mode -1)))
> +        (t
> +         (jit-lock-unregister #'eglot--semtok-fontify)
> +         (with-silent-modifications
> +           (remove-list-of-text-properties (point-min) (point-max) '(font-lock-face))))))
> +
>  
>  ;;; Call and type hierarchies
>  (require 'button)
> @@ -4728,7 +5048,8 @@ If NOERROR, return predicate, else erroring function."
>  ;; harder. For now, use `with-eval-after-load'. See also github#1183.
>  (with-eval-after-load 'desktop
>    (add-to-list 'desktop-minor-mode-handlers '(eglot--managed-mode . ignore))
> -  (add-to-list 'desktop-minor-mode-handlers '(eglot-inlay-hints-mode . ignore)))
> +  (add-to-list 'desktop-minor-mode-handlers '(eglot-inlay-hints-mode . ignore))
> +  (add-to-list 'desktop-minor-mode-handlers '(eglot-semtok-mode . ignore)))
                                                 ^

As mentioned on Emacs-devel, shouldn't this be `eglot-semantic-tokens-mode'.

(Also, this is of course not a detailed review I just skimmed over the
code this morning, but for the most part it looks good!)

[...]


-- 
Philip Kaludercic




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

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


Received: (at submit) by debbugs.gnu.org; 3 Sep 2025 00:42:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Sep 02 20:42:27 2025
Received: from localhost ([127.0.0.1]:37287 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1utbZu-0007Wq-KO
	for submit <at> debbugs.gnu.org; Tue, 02 Sep 2025 20:42:27 -0400
Received: from lists.gnu.org ([2001:470:142::17]:52658)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <me@HIDDEN>) id 1utaH6-0003DA-4W
 for submit <at> debbugs.gnu.org; Tue, 02 Sep 2025 19:18:53 -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 <me@HIDDEN>) id 1utaH0-00041C-20
 for bug-gnu-emacs@HIDDEN; Tue, 02 Sep 2025 19:18:46 -0400
Received: from cyan.elm.relay.mailchannels.net ([23.83.212.47])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <me@HIDDEN>) id 1utaGw-00073d-Fl
 for bug-gnu-emacs@HIDDEN; Tue, 02 Sep 2025 19:18:45 -0400
X-Sender-Id: hostingeremailsmtpin|x-authuser|lua@HIDDEN
Received: from relay.mailchannels.net (localhost [127.0.0.1])
 by relay.mailchannels.net (Postfix) with ESMTP id D27191A4CEC;
 Tue,  2 Sep 2025 23:18:38 +0000 (UTC)
Received: from fr-int-smtpout13.hostinger.io
 (trex-blue-0.trex.outbound.svc.cluster.local [100.105.11.154])
 (Authenticated sender: hostingeremailsmtpin)
 by relay.mailchannels.net (Postfix) with ESMTPA id DB8FF1A4D4D;
 Tue,  2 Sep 2025 23:18:37 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1756855118; a=rsa-sha256;
 cv=none;
 b=hZnBfCUmnFA9mllLSxk8xB/mH1ragEwDlynxNEe0KTG+4jt+iQJUG6pGSwOQ99P2SI14nJ
 WQ7GTEd5lwX/DeNsVyqdHUNEH83wSvTE2ZhYSC1ud5smfewpS+NycbAU+CxWLJwbPN6ovR
 Eg7UrN2q30GsZKGCNgJf02Rq4am9vuEiiD3gFLnbqeZKPXTD4R+vlPPxXxbbhbtAhbQ2OV
 5tD2E2o2RrS2rG/dVNR+YxSG8N2wFbickEWDeC97/7VQK0EQP4nF554vmqhyDdLYdRo6hG
 ExgZl3OUNliveA0uKhzsBXkfeCfi7tlB8FZSCDmvQpPAlcRurDNaRdoKZjNapw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
 d=mailchannels.net; s=arc-2022; t=1756855118;
 h=from:from:reply-to:reply-to:subject:subject:date:date:
 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
 content-type:content-type:in-reply-to:in-reply-to:
 references:references:dkim-signature;
 bh=of1kYdQv3vHuixldY1+zJReEbTpqeXYwZ3wbCccRpK4=;
 b=RpVl+PrkTqSYqAmKTsVmfq4SOOlHhRrM2N0MJEA0l6FI7glJuxMoU07gF2y5QOiydDBAom
 n6Iy8naDhXLUcczWPf9MkuHAL17ZHh4CpLGHW2m5LcEiX60zQGoO3MbVgkWzOq1VHRndZE
 KqHuW7nEqe/YYzIMQ1OffWpNPG7d8grderupHFVQET3VY6zSMjOuENRNOn8zEVo82ZG/Qb
 7uOGA1qHqW5iVt+JqgIs3/LDzRbnH9TmdkEvKGBBv+kI7BoIZ4eJEpKe0JeZMmWkvWOLhJ
 IPEd936n+u5tno0NvJ9tYYJrzFzH17yFiIlOwJ0XJSOUp3/DrjTnqJIT8K0wFA==
ARC-Authentication-Results: i=1; rspamd-77486b5f64-ldpv4;
 auth=pass smtp.auth=hostingeremailsmtpin smtp.mailfrom=me@HIDDEN
X-Sender-Id: hostingeremailsmtpin|x-authuser|lua@HIDDEN
X-MC-Relay: Neutral
X-MailChannels-SenderId: hostingeremailsmtpin|x-authuser|lua@HIDDEN
X-MailChannels-Auth-Id: hostingeremailsmtpin
X-Glossy-Tank: 4fede0492a5fa425_1756855118692_3993190086
X-MC-Loop-Signature: 1756855118692:1911019864
X-MC-Ingress-Time: 1756855118691
Received: from fr-int-smtpout13.hostinger.io ([UNAVAILABLE]. [148.222.54.40])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384)
 by 100.105.11.154 (trex/7.1.3); Tue, 02 Sep 2025 23:18:38 +0000
Received: from [IPV6:2804:14d:8084:a662::5cb8] (unknown
 [IPv6:2804:14d:8084:a662::5cb8])
 (Authenticated sender: lua@HIDDEN)
 by smtp.hostinger.com (smtp.hostinger.com) with ESMTPSA id 4cGhWH4Xkjz10pb;
 Tue,  2 Sep 2025 23:18:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lua.blog.br;
 s=hostingermail-a; t=1756855116;
 h=from:from:reply-to:reply-to:subject:subject:date:date:
 message-id:message-id:to:to:cc:cc:mime-version:mime-version:
 content-type:content-type:in-reply-to:in-reply-to:  references:references;
 bh=of1kYdQv3vHuixldY1+zJReEbTpqeXYwZ3wbCccRpK4=;
 b=LYuP3G2Te7H5RnMRKhiYfIcBKeSD3p6sUC7ztPM2mwOkNRChoxpBWewRtoW5KagejXFKpF
 6Ox6VjPgUv/7gwOru9uBRJmVPvqsprPDWKG8pVrNks4BZ8amaGywnM4rPXNMz2oCrwFsUP
 Vu7pB3//eKwsTpPHGJe1NGh9q9dzBtl5jLrY1yxGMu/ofG0bSlUe8s7obrwEs0iYXwoeX6
 Nf6R+1FN+lqqf6h5gFS0YoIbWyULqlm7qPWGEqZCZPBarZ7q+oR6V5gQaZTqpOcmE9H7bW
 EJu3WHofu2Mk9fCyMz/1N0q7dyXAhex816wR/2rAvuA2V/MUsb4rBy6nFQYJPA==
Content-Type: multipart/mixed; boundary="------------g0J6nJdLcckbJYpGJXcUemsd"
Message-ID: <2c03b490-5006-4ad4-a090-fafc8a18405d@HIDDEN>
MIME-Version: 1.0
User-Agent: Betterbird (Linux)
Subject: [PATCH] eglot: add support for semantic tokens
Content-Language: en-US, pt-BR
References: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
To: bug-gnu-emacs@HIDDEN
From: "Lua V. R." <me@HIDDEN>
In-Reply-To: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
X-Forwarded-Message-Id: <acb441dc-b748-43e3-ab26-56683e616590@HIDDEN>
Date: Tue,  2 Sep 2025 23:18:35 +0000 (UTC)
X-CM-Envelope: MS4xfCNCCU9iYzy4MelGm5bmqbPgBODhh7agFf87FP3WmczaDQoWu/hCFtdUltbKtJ5QjLE1V/DPBgWTid2x35DOb/VTL3ouc56K5zVLHoBCz3l6VUAIjFEx
 M00b/z2iTiK1le3nh3JTWQbopEQ5TZb6WzmzM+qTL922Nd4IBcB57tH8p6EitgoqlqBK07Im8Uwoe1+FK9lmIuB7ISB1MDagV5N8luIZ8WasUAtvK8ZFBT4O
 vuwukMXby4yFXRapEcnVRyCteb142xI0AVNrRhD9x+4=
X-CM-Analysis: v=2.4 cv=DJTd4DNb c=1 sm=1 tr=0 ts=68b77b4c
 a=VfClAEUqrXadIs2MVknt0w==:617 a=xqWC_Br6kY4A:10 a=r77TgQKjGQsHNAKrUKIA:9
 a=mDV3o1hIAAAA:8 a=pGLkceISAAAA:8 a=9oc3-6I5A5mP93_st9YA:9 a=3ZKOabzyN94A:10
 a=QEXdDO2ut3YA:10 a=ufS1wz06LVvryDGfax4A:9 a=B2y7HmGcmWMA:10
X-AuthUser: lua@HIDDEN
Received-SPF: pass client-ip=23.83.212.47; envelope-from=me@HIDDEN;
 helo=cyan.elm.relay.mailchannels.net
X-Spam_score_int: 13
X-Spam_score: 1.3
X-Spam_bar: +
X-Spam_report: (1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001,
 RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335,
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 4.5 (++++)
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:  Oops. I guess I should have sent it to bug-gnu-emacs, so I'm
 forwarding that. -------- Mensagem encaminhada -------- Assunto: [PATCH]
 eglot: add support for semantic tokens Data: Tue, 2 Sep 2025 19:29:40 -0300
 De: Lua V. R. <me@HIDDEN> Responder a: me@HIDDEN Para: ema [...]
 Content analysis details:   (4.5 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [2804:14d:8084:a662:0:0:0:5cb8 listed in] [zen.spamhaus.org]
 -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record
 1.0 SPF_SOFTFAIL           SPF: sender does not match SPF record (softfail)
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
 no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org]
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Tue, 02 Sep 2025 20:42:19 -0400
Cc: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= <joaotavora@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>
Reply-To: me@HIDDEN
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 3.5 (+++)
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:  Oops. I guess I should have sent it to bug-gnu-emacs, so I'm
    forwarding that. -------- Mensagem encaminhada -------- Assunto: [PATCH]
   eglot: add support for semantic tokens Data: Tue, 2 Sep 2025 19:29:40 -0300
    De: Lua V. R. <me@HIDDEN> Responder a: me@HIDDEN Para: ema [...]
    
 
 Content analysis details:   (3.5 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [2804:14d:8084:a662:0:0:0:5cb8 listed in]
                             [zen.spamhaus.org]
 -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,
                              no trust
                             [2001:470:142:0:0:0:0:17 listed in]
                             [list.dnswl.org]
 -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record
  1.0 SPF_SOFTFAIL           SPF: sender does not match SPF record (softfail)
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

This is a multi-part message in MIME format.
--------------g0J6nJdLcckbJYpGJXcUemsd
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Oops. I guess I should have sent it to bug-gnu-emacs, so I'm forwarding 
that.


-------- Mensagem encaminhada --------
Assunto: 	[PATCH] eglot: add support for semantic tokens
Data: 	Tue, 2 Sep 2025 19:29:40 -0300
De: 	Lua V. R. <me@HIDDEN>
Responder a: 	me@HIDDEN
Para: 	emacs-devel@HIDDEN
CC: 	João Távora <joaotavora@HIDDEN>



Hi all,

Here is my attempt at a patch for the semantic tokens (yesterday I 
proposed it as a nongnu package). I had the feeling that I was mentally 
involved with it to the point that if I did not work on it this 
afternoon, I would probably put it aside and not have the energy to go 
back to it later.

As I said, overall it's based on the lsp-mode implementation, but at 
this point everything has been rewritten, including the 
eglot--semtok-fontify function. Please let me know if there would still 
be a problem with that.

Now that there is a patch, I /will/ put this aside for other priorities, 
so please understand if I'm slow to respond :)


kind regards,

Lua
--------------g0J6nJdLcckbJYpGJXcUemsd
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-add-semantic-tokens-support-for-eglot.patch"
Content-Disposition: attachment;
 filename="0001-add-semantic-tokens-support-for-eglot.patch"
Content-Transfer-Encoding: base64

RnJvbSAyMjAyYzY3MjMwOTgyZmY0N2Q3NmU5ZGE5ZDYzYjZlYmZkMGVkYTk3IE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMdWEgVmlhbmEgUmVpcyA8bWVAbHVhLmJsb2cuYnI+
CkRhdGU6IFR1ZSwgMiBTZXAgMjAyNSAxOTowMzo1MiAtMDMwMApTdWJqZWN0OiBbUEFUQ0hd
IGFkZCBzZW1hbnRpYyB0b2tlbnMgc3VwcG9ydCBmb3IgZWdsb3QKCi0tLQogbGlzcC9wcm9n
bW9kZXMvZWdsb3QuZWwgfCAzMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDMyNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2VnbG90LmVsIGIvbGlzcC9wcm9n
bW9kZXMvZWdsb3QuZWwKaW5kZXggNDc1YjVlMTNmMS4uN2RkYzhiMGI1ZSAxMDA2NDQKLS0t
IGEvbGlzcC9wcm9nbW9kZXMvZWdsb3QuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZWdsb3Qu
ZWwKQEAgLTE0MSw2ICsxNDEsOCBAQAogKGRlZnZhciBjb21wYW55LXRvb2x0aXAtYWxpZ24t
YW5ub3RhdGlvbnMpCiAoZGVmdmFyIHRyYW1wLXNzaC1jb250cm9sbWFzdGVyLW9wdGlvbnMp
CiAoZGVmdmFyIHRyYW1wLXVzZS1zc2gtY29udHJvbG1hc3Rlci1vcHRpb25zKQorKGRlZnZh
ciBlZ2xvdC1zZW1hbnRpYy10b2tlbnMtZmFjZXMpCisoZGVmdmFyIGVnbG90LXNlbWFudGlj
LXRva2Vucy1tb2RpZmllci1mYWNlcykKIAogDAogOzs7IE9ic29sZXRlIGFsaWFzZXMKQEAg
LTEwMTcsNiArMTAxOSw3IEBAIG9iamVjdC4iCiAgICAgICAgICAgICAgICAgICAgICAgICBg
KDpkeW5hbWljUmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICwoaWYg
KGVnbG90LS10cmFtcGlzaC1wIHMpIDpqc29uLWZhbHNlIHQpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgOnN5bWJvbCBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgOnNlbWFudGljVG9rZW5zICcoOnJlZnJlc2hTdXBw
b3J0IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICA6Y29uZmlndXJhdGlvbiB0CiAgICAg
ICAgICAgICAgICAgICAgICAgICA6d29ya3NwYWNlRm9sZGVycyB0KQogICAgICAgICAgICAg
OnRleHREb2N1bWVudApAQCAtMTA3OSw2ICsxMDgyLDEzIEBAIG9iamVjdC4iCiAgICAgICAg
ICAgICAgOmZvcm1hdHRpbmcgICAgICAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29u
LWZhbHNlKQogICAgICAgICAgICAgIDpyYW5nZUZvcm1hdHRpbmcgICAgYCg6ZHluYW1pY1Jl
Z2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKICAgICAgICAgICAgICA6cmVuYW1lICAgICAgICAg
ICAgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCisgICAgICAgICAgICAg
OnNlbWFudGljVG9rZW5zICAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyZXF1ZXN0cyAnKDpyYW5n
ZSB0IDpmdWxsIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0b2tl
bk1vZGlmaWVycyBbLEAobWFwY2FyICMnY2FyIGVnbG90LXNlbWFudGljLXRva2Vucy1tb2Rp
Zmllci1mYWNlcyldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvdmVy
bGFwcGluZ1Rva2VuU3VwcG9ydCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDptdWx0aWxpbmVUb2tlblN1cHBvcnQgdAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6dG9rZW5UeXBlcyBbLEAobWFwY2FyICMnY2FyIGVnbG90LXNlbWFudGlj
LXRva2Vucy1mYWNlcyldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpm
b3JtYXRzIFsicmVsYXRpdmUiXSkKICAgICAgICAgICAgICA6aW5sYXlIaW50ICAgICAgICAg
IGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCiAgICAgICAgICAgICAgOmNh
bGxIaWVyYXJjaHkgICAgICBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlKQog
ICAgICAgICAgICAgIDp0eXBlSGllcmFyY2h5ICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlv
biA6anNvbi1mYWxzZSkKQEAgLTExNDksNyArMTE1OSwxNiBAQCBvYmplY3QuIgogICAgIDph
Y2Nlc3NvciBlZ2xvdC0tbWFuYWdlZC1idWZmZXJzKQogICAgKHNhdmVkLWluaXRhcmdzCiAg
ICAgOmRvY3VtZW50YXRpb24gIlNhdmVkIGluaXRhcmdzIGZvciByZWNvbm5lY3Rpb24gcHVy
cG9zZXMuIgotICAgIDphY2Nlc3NvciBlZ2xvdC0tc2F2ZWQtaW5pdGFyZ3MpKQorICAgIDph
Y2Nlc3NvciBlZ2xvdC0tc2F2ZWQtaW5pdGFyZ3MpCisgICAoc2VtdG9rLWZhY2VzCisgICAg
OmluaXRmb3JtIG5pbAorICAgIDpkb2N1bWVudGF0aW9uICJTZW1hbnRpYyB0b2tlbnMgZmFj
ZXMuIikKKyAgIChzZW10b2stbW9kaWZpZXItZmFjZXMKKyAgICA6aW5pdGZvcm0gbmlsCisg
ICAgOmRvY3VtZW50YXRpb24gIlNlbWFudGljIHRva2VucyBtb2RpZmllciBmYWNlcy4iKQor
ICAgKHNlbXRvay1tb2RpZmllci1jYWNoZQorICAgIDppbml0Zm9ybSAobWFrZS1oYXNoLXRh
YmxlKQorICAgIDpkb2N1bWVudGF0aW9uICJBIGhhc2htYXAgb2YgbW9kaWZpZXIgdmFsdWVz
IHRvIHRoZSBzZWxlY3RlZCBmYWNlcy4iKSkKICAgOmRvY3VtZW50YXRpb24KICAgIlJlcHJl
c2VudHMgYSBzZXJ2ZXIuIFdyYXBzIGEgcHJvY2VzcyBmb3IgTFNQIGNvbW11bmljYXRpb24u
IikKIApAQCAtMTIxMSw2ICsxMjMwLDExIEBAIElmIG9wdGlvbmFsIE1BUktFUlMsIG1ha2Ug
bWFya2VycyBpbnN0ZWFkLiIKICAgICAgICAgIChlbmQgKGVnbG90LS1sc3AtcG9zaXRpb24t
dG8tcG9pbnQgKHBsaXN0LWdldCByYW5nZSA6ZW5kKSBtYXJrZXJzKSkpCiAgICAgKGNvbnMg
YmVnIGVuZCkpKQogCisoZGVmdW4gZWdsb3QtcmVnaW9uLXJhbmdlIChiZWcgZW5kKQorICAi
UmV0dXJuIGEgTFNQIHJhbmdlIHJlcHJlc2VudGluZyByZWdpb24gQkVHIHRvIEVORC4iCisg
IChsaXN0IDpzdGFydCAoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24gYmVnKQorICAgICAg
ICA6ZW5kIChlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBlbmQpKSkKKwogKGRlZnVuIGVn
bG90LXNlcnZlci1jYXBhYmxlICgmcmVzdCBmZWF0cykKICAgIkRldGVybWluZSBpZiBjdXJy
ZW50IHNlcnZlciBpcyBjYXBhYmxlIG9mIEZFQVRTLiIKICAgKHVubGVzcyAoY2wtc29tZSAo
bGFtYmRhIChmZWF0KQpAQCAtMTU3Niw3ICsxNjAwLDggQEAgVXNlIGN1cnJlbnQgc2VydmVy
J3Mgb3IgZmlyc3QgYXZhaWxhYmxlIEVnbG90IGV2ZW50cyBidWZmZXIuIgogICAoanNvbnJw
Yy1mb3JnZXQtcGVuZGluZy1jb250aW51YXRpb25zIHNlcnZlcikpCiAKIChkZWZ2YXIgZWds
b3QtY29ubmVjdC1ob29rCi0gICcoZWdsb3Qtc2lnbmFsLWRpZENoYW5nZUNvbmZpZ3VyYXRp
b24pCisgICcoZWdsb3Qtc2lnbmFsLWRpZENoYW5nZUNvbmZpZ3VyYXRpb24KKyAgICBlZ2xv
dC0tc2VtdG9rLWluaXRpYWxpemUpCiAgICJIb29rIHJ1biBhZnRlciBjb25uZWN0aW5nIHRv
IGEgc2VydmVyLgogRWFjaCBmdW5jdGlvbiBpcyBwYXNzZWQgYW4gYGVnbG90LWxzcC1zZXJ2
ZXInIGluc3RhbmNlCiBhcyBhcmd1bWVudC4iKQpAQCAtMjI5MSw2ICsyMzE2LDcgQEAgSWYg
aXQgaXMgYWN0aXZhdGVkLCBhbHNvIHNpZ25hbCB0ZXh0RG9jdW1lbnQvZGlkT3Blbi4iCiAg
ICAgICA7OyBSdW4gdXNlciBob29rIGFmdGVyICd0ZXh0RG9jdW1lbnQvZGlkT3Blbicgc28g
c2VydmVyIGtub3dzCiAgICAgICA7OyBhYm91dCB0aGUgYnVmZmVyLgogICAgICAgKGVnbG90
LWlubGF5LWhpbnRzLW1vZGUgMSkKKyAgICAgIChlZ2xvdC1zZW1hbnRpYy10b2tlbnMtbW9k
ZSAxKQogICAgICAgKHJ1bi1ob29rcyAnZWdsb3QtbWFuYWdlZC1tb2RlLWhvb2spKSkpCiAK
IChhZGQtaG9vayAnYWZ0ZXItY2hhbmdlLW1ham9yLW1vZGUtaG9vayAjJ2VnbG90LS1tYXli
ZS1hY3RpdmF0ZS1lZGl0aW5nLW1vZGUpCkBAIC00NDk0LDYgKzQ1MjAsMzAwIEBAIElmIE5P
RVJST1IsIHJldHVybiBwcmVkaWNhdGUsIGVsc2UgZXJyb3JpbmcgZnVuY3Rpb24uIgogICAg
ICAgICAgKGppdC1sb2NrLXVucmVnaXN0ZXIgIydlZ2xvdC0tdXBkYXRlLWhpbnRzKQogICAg
ICAgICAgKHJlbW92ZS1vdmVybGF5cyBuaWwgbmlsICdlZ2xvdC0taW5sYXktaGludCB0KSkp
KQogCisMCis7OzsgU2VtYW50aWMgdG9rZW5zCisKKyhkZWZjdXN0b20gZWdsb3Qtc2VtYW50
aWMtdG9rZW5zLWZhY2VzCisgICcoKCJuYW1lc3BhY2UiIC4gZm9udC1sb2NrLWtleXdvcmQt
ZmFjZSkKKyAgICAoInR5cGUiIC4gZm9udC1sb2NrLXR5cGUtZmFjZSkKKyAgICAoImNsYXNz
IiAuIGZvbnQtbG9jay10eXBlLWZhY2UpCisgICAgKCJlbnVtIiAuIGZvbnQtbG9jay10eXBl
LWZhY2UpCisgICAgKCJpbnRlcmZhY2UiIC4gZm9udC1sb2NrLXR5cGUtZmFjZSkKKyAgICAo
InN0cnVjdCIgLiBmb250LWxvY2stdHlwZS1mYWNlKQorICAgICgidHlwZVBhcmFtZXRlciIg
LiBmb250LWxvY2stdHlwZS1mYWNlKQorICAgICgicGFyYW1ldGVyIiAuIGZvbnQtbG9jay12
YXJpYWJsZS1uYW1lLWZhY2UpCisgICAgKCJ2YXJpYWJsZSIgLiBmb250LWxvY2stdmFyaWFi
bGUtbmFtZS1mYWNlKQorICAgICgicHJvcGVydHkiIC4gZm9udC1sb2NrLXByb3BlcnR5LXVz
ZS1mYWNlKQorICAgICgiZW51bU1lbWJlciIgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkK
KyAgICAoImV2ZW50IiAuIGZvbnQtbG9jay12YXJpYWJsZS1uYW1lLWZhY2UpCisgICAgKCJm
dW5jdGlvbiIgLiBmb250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKQorICAgICgibWV0aG9k
IiAuIGZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UpCisgICAgKCJtYWNybyIgLiBmb250
LWxvY2stcHJlcHJvY2Vzc29yLWZhY2UpCisgICAgKCJrZXl3b3JkIiAuIGZvbnQtbG9jay1r
ZXl3b3JkLWZhY2UpCisgICAgKCJtb2RpZmllciIgLiBmb250LWxvY2stZnVuY3Rpb24tbmFt
ZS1mYWNlKQorICAgICgiY29tbWVudCIgLiBmb250LWxvY2stY29tbWVudC1mYWNlKQorICAg
ICgic3RyaW5nIiAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAgICAoIm51bWJlciIgLiBm
b250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAoInJlZ2V4cCIgLiBmb250LWxvY2stc3Ry
aW5nLWZhY2UpCisgICAgKCJvcGVyYXRvciIgLiBmb250LWxvY2stZnVuY3Rpb24tbmFtZS1m
YWNlKQorICAgICgiZGVjb3JhdG9yIiAuIGZvbnQtbG9jay10eXBlLWZhY2UpKQorICAiQWxp
c3Qgb2YgZmFjZXMgdG8gdXNlIHRvIGhpZ2hsaWdodCBzZW1hbnRpYyB0b2tlbnMuCitFYWNo
IGVsZW1lbnQgaXMgYSBjb25zIGNlbGwgd2hvc2UgY2FyIGlzIGEgdG9rZW4gdHlwZSBuYW1l
IGFuZCBjZHIgaXMKK3RoZSBmYWNlIHRvIHVzZS4iCisgIDp0eXBlIGAoYWxpc3QgOmtleS10
eXBlIChzdHJpbmcgOnRhZyAiVG9rZW4gbmFtZSIpCisgICAgICAgICAgICAgICAgOnZhbHVl
LXR5cGUgKGNob2ljZSAoZmFjZSA6dGFnICJGYWNlIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChwbGlzdCA6dGFnICJGYWNlIEF0dHJpYnV0ZXMiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleS10eXBlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNob2ljZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsQChtYXBjYXIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoY2VsbCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKGNv
bnN0IDp0YWcgLChjYXBpdGFsaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciBjZWxsKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoY2Fy
IGNlbGwpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmFjZS1hdHRyaWJ1dGUtbmFtZS1hbGlzdCkpKSkpKQorCisoZGVmY3VzdG9tIGVnbG90
LXNlbWFudGljLXRva2Vucy1tb2RpZmllci1mYWNlcworICAnKCgiZGVjbGFyYXRpb24iIC4g
Zm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkKKyAgICAoImRlZmluaXRpb24iIC4gZm9u
dC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkKKyAgICAoInJlYWRvbmx5IiAuIGZvbnQtbG9j
ay1jb25zdGFudC1mYWNlKQorICAgICgic3RhdGljIiAuIGZvbnQtbG9jay1rZXl3b3JkLWZh
Y2UpCisgICAgKCJkZXByZWNhdGVkIiAuIGVnbG90LWRpYWdub3N0aWMtdGFnLWRlcHJlY2F0
ZWQtZmFjZSkKKyAgICAoImFic3RyYWN0IiAuIGZvbnQtbG9jay1rZXl3b3JkLWZhY2UpCisg
ICAgKCJhc3luYyIgLiBmb250LWxvY2stcHJlcHJvY2Vzc29yLWZhY2UpCisgICAgKCJtb2Rp
ZmljYXRpb24iIC4gZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkKKyAgICAoImRvY3Vt
ZW50YXRpb24iIC4gZm9udC1sb2NrLWRvYy1mYWNlKQorICAgICgiZGVmYXVsdExpYnJhcnki
IC4gZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkpCisgICJMaXN0IG9mIGZhY2UgdG8gdXNlIHRv
IGhpZ2hsaWdodCB0b2tlbnMgd2l0aCBtb2RpZmllcnMuCitFYWNoIGVsZW1lbnQgaXMgYSBj
b25zIGNlbGwgd2hvc2UgY2FyIGlzIGEgbW9kaWZpZXIgbmFtZSBhbmQgY2RyIGlzCit0aGUg
ZmFjZSB0byB1c2UuIgorICA6dHlwZSBgKGFsaXN0IDprZXktdHlwZSAoc3RyaW5nIDp0YWcg
IlRva2VuIG5hbWUiKQorICAgICAgICAgICAgICAgIDp2YWx1ZS10eXBlIChjaG9pY2UgKGZh
Y2UgOnRhZyAiRmFjZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
cGxpc3QgOnRhZyAiRmFjZSBBdHRyaWJ1dGVzIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDprZXktdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjaG9pY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLEAobWFwY2FyCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGNlbGwpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYChjb25zdCA6dGFnICwoY2FwaXRh
bGl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChjZHIgY2VsbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGNhciBjZWxsKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UtYXR0cmlidXRl
LW5hbWUtYWxpc3QpKSkpKSkKKworKGRlZnZhci1sb2NhbCBlZ2xvdC0tc2VtdG9rLWlkbGUt
dGltZXIgbmlsCisgICJJZGxlIHRpbWVyIHRvIHJlcXVlc3QgZnVsbCBzZW1hbnRpYyB0b2tl
bnMuIikKKworKGRlZnZhci1sb2NhbCBlZ2xvdC0tc2VtdG9rLWxhc3QtcmVxdWVzdC1oYXNo
IG5pbAorICAiSGFzaCBvZiBsYXN0IHJlcXVlc3QgcGFyYW1ldGVycyBhbmQgZG9jdW1lbnQg
dmVyc2lvbi4iKQorCisoZGVmdmFyLWxvY2FsIGVnbG90LS1zZW10b2stY2FjaGUgbmlsKQor
CisoZGVmc3Vic3QgZWdsb3QtLXNlbXRvay1wdXQtY2FjaGUgKGsgdikKKyAgIlNldCBrZXkg
SyBvZiBgZWdsb3Qtc2VtYW50aWMtdG9rZW5zLS1jYWNoZScgdG8gVi4iCisgIChzZXRxIGVn
bG90LS1zZW10b2stY2FjaGUKKyAgICAgICAgKHBsaXN0LXB1dCBlZ2xvdC0tc2VtdG9rLWNh
Y2hlIGsgdikpKQorCis7OyBQcm9jZXNzIHJlc3BvbnNlCisKKyhkZWZ1biBlZ2xvdC0tc2Vt
dG9rLWluZ2VzdC1yYW5nZS1yZXNwb25zZSAocmVzcG9uc2UpCisgICJIYW5kbGUgUkVTUE9O
U0UgdG8gc2VtYW50aWNUb2tlbnMvcmFuZ2UgcmVxdWVzdC4iCisgIChlZ2xvdC0tc2VtdG9r
LXB1dC1jYWNoZSA6cmVzcG9uc2UgcmVzcG9uc2UpCisgIChjbC1hc3NlcnQgKHBsaXN0LWdl
dCBlZ2xvdC0tc2VtdG9rLWNhY2hlIDpyZWdpb24pKSkKKworKGRlZnVuIGVnbG90LS1zZW10
b2staW5nZXN0LWZ1bGwtcmVzcG9uc2UgKHJlc3BvbnNlKQorICAiSGFuZGxlIFJFU1BPTlNF
IHRvIHNlbWFudGljVG9rZW5zL2Z1bGwgcmVxdWVzdC4iCisgIChlZ2xvdC0tc2VtdG9rLXB1
dC1jYWNoZSA6cmVzcG9uc2UgcmVzcG9uc2UpCisgIChjbC1hc3NlcnQgKG5vdCAocGxpc3Qt
Z2V0IGVnbG90LS1zZW10b2stY2FjaGUgOnJlZ2lvbikpKSkKKworKGRlZnN1YnN0IGVnbG90
LS1zZW10b2stYXBwbHktZGVsdGEtZWRpdHMgKG9sZC1kYXRhIGVkaXRzKQorICAiQXBwbHkg
RURJVFMgb2J0YWluZWQgZnJvbSBmdWxsL2RlbHRhIHJlcXVlc3QgdG8gT0xELURBVEEuIgor
ICAobGV0KiAoKG9sZC10b2tlbi1jb3VudCAobGVuZ3RoIG9sZC1kYXRhKSkKKyAgICAgICAg
IChvbGQtdG9rZW4taW5kZXggMCkKKyAgICAgICAgIChzdWJzdHJpbmdzKSkKKyAgICAoY2wt
bG9vcCBmb3IgZWRpdCBhY3Jvc3MgZWRpdHMgZG8KKyAgICAgKHdoZW4gKDwgb2xkLXRva2Vu
LWluZGV4IChwbGlzdC1nZXQgZWRpdCA6c3RhcnQpKQorICAgICAgIChwdXNoIChzdWJzdHJp
bmcgb2xkLWRhdGEgb2xkLXRva2VuLWluZGV4IChwbGlzdC1nZXQgZWRpdCA6c3RhcnQpKSBz
dWJzdHJpbmdzKSkKKyAgICAgKHB1c2ggKHBsaXN0LWdldCBlZGl0IDpkYXRhKSBzdWJzdHJp
bmdzKQorICAgICAoc2V0cSBvbGQtdG9rZW4taW5kZXggKCsgKHBsaXN0LWdldCBlZGl0IDpz
dGFydCkgKHBsaXN0LWdldCBlZGl0IDpkZWxldGVDb3VudCkpKQorICAgICBmaW5hbGx5IGRv
IChwdXNoIChzdWJzdHJpbmcgb2xkLWRhdGEgb2xkLXRva2VuLWluZGV4IG9sZC10b2tlbi1j
b3VudCkgc3Vic3RyaW5ncykpCisgICAgKGFwcGx5ICMndmNvbmNhdCAobnJldmVyc2Ugc3Vi
c3RyaW5ncykpKSkKKworKGRlZnVuIGVnbG90LS1zZW10b2staW5nZXN0LWZ1bGwvZGVsdGEt
cmVzcG9uc2UgKHJlc3BvbnNlKQorICAiSGFuZGxlIFJFU1BPTlNFIHRvIHNlbWFudGljVG9r
ZW5zL2Z1bGwvZGVsdGEgcmVxdWVzdC4iCisgIChpZi1sZXQqICgoZWRpdHMgKHBsaXN0LWdl
dCByZXNwb25zZSA6ZWRpdHMpKSkKKyAgICAgIChjbC1hc3NlcnQgKG5vdCAocGxpc3QtZ2V0
IGVnbG90LS1zZW10b2stY2FjaGUgOnJlZ2lvbikpKQorICAgICAgKHdoZW4tbGV0KiAoKG9s
ZC1kYXRhIChwbGlzdC1nZXQgKHBsaXN0LWdldCBlZ2xvdC0tc2VtdG9rLWNhY2hlIDpyZXNw
b25zZSkgOmRhdGEpKSkKKyAgICAgICAgKGVnbG90LS1zZW10b2stcHV0LWNhY2hlCisgICAg
ICAgICA6cmVzcG9uc2UKKyAgICAgICAgIChwbGlzdC1wdXQgcmVzcG9uc2UgOmRhdGEgKGVn
bG90LS1zZW10b2stYXBwbHktZGVsdGEtZWRpdHMgb2xkLWRhdGEgZWRpdHMpKSkpCisgICAg
Ozsgc2VydmVyIGRlY2lkZWQgdG8gc2VuZCBmdWxsIHJlc3BvbnNlIGluc3RlYWQKKyAgICAo
ZWdsb3QtLXNlbXRvay1pbmdlc3QtZnVsbC1yZXNwb25zZSByZXNwb25zZSkpKQorCisoZGVm
dW4gZWdsb3QtLXNlbXRvay1yZXF1ZXN0IChyZWdpb24gJm9wdGlvbmFsIGZvbnRpZnkpCisg
ICJTZW5kIHNlbWFudGljIHRva2VucyByZXF1ZXN0IHRvIHRoZSBsYW5ndWFnZSBzZXJ2ZXIu
CitBIGZ1bGwvZGVsdGEgcmVxdWVzdCB3aWxsIGJlIHNlbnQgaWYgZGVsdGEgcmVxdWVzdHMg
YXJlIHN1cHBvcnRlZCBieSB0aGUKK2xhbmd1YWdlIHNlcnZlciBhbmQgYSBmdWxsIHNldCBv
ZiB0b2tlbnMgaGFkIHByZXZpb3VzbHkgYmVlbiByZWNlaXZlZC4KK090aGVyd2lzZSwgYSBy
YW5nZWQgcmVxdWVzdCB3aWxsIGJlIGRpc3BhdGNoZWQgaWYgUkVHSU9OIGlzIG5vbi1uaWwg
YW5kCityYW5nZWQgcmVxdWVzdHMgYXJlIHN1cHBvcnRlZCBieSB0aGUgbGFuZ3VhZ2Ugc2Vy
dmVyLiBJbiBhbGwgb3RoZXIKK2Nhc2VzLCBhIGZ1bGwgdG9rZW5zIHJlcXVlc3Qgd2lsbCBi
ZSBkaXNwYXRjaGVkLgorCitJZiBGT05USUZZIGlzIG5vbi1uaWwsIHJlZm9udGlmeSBhZnRl
ciB0aGUgcmVxdWVzdCBjb21wbGV0ZXMuIgorICAobGV0KiAoKG1ldGhvZCA6dGV4dERvY3Vt
ZW50L3NlbWFudGljVG9rZW5zL2Z1bGwpCisgICAgICAgICAocGFyYW1zIChsaXN0IDp0ZXh0
RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKSkpCisgICAgICAgICAo
cmVzcG9uc2UtaGFuZGxlciAjJ2VnbG90LS1zZW10b2staW5nZXN0LWZ1bGwtcmVzcG9uc2Up
CisgICAgICAgICAobGFzdC1oYXNoIGVnbG90LS1zZW10b2stbGFzdC1yZXF1ZXN0LWhhc2gp
CisgICAgICAgICAobGFzdC1yZWdpb24gKGNkciBsYXN0LWhhc2gpKQorICAgICAgICAgKGZp
bmFsLXJlZ2lvbiBuaWwpCisgICAgICAgICAoYnVmIChjdXJyZW50LWJ1ZmZlcikpKQorICAg
ICh3aGVuIChhbmQgcmVnaW9uIGxhc3QtcmVnaW9uKQorICAgICAgKHNldHEgcmVnaW9uIChj
b25zIChtaW4gKGNhciByZWdpb24pIChjYXIgbGFzdC1yZWdpb24pKQorICAgICAgICAgICAg
ICAgICAgICAgICAgIChtYXggKGNkciByZWdpb24pIChjZHIgbGFzdC1yZWdpb24pKSkpKQor
ICAgIChjb25kCisgICAgICgoYW5kIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6c2VtYW50aWNU
b2tlbnNQcm92aWRlciA6ZnVsbCA6ZGVsdGEpCisgICAgICAgICAgIChsZXQgKChyZXNwb25z
ZSAocGxpc3QtZ2V0IGVnbG90LS1zZW10b2stY2FjaGUgOnJlc3BvbnNlKSkpCisgICAgICAg
ICAgICAgKGFuZCAocGxpc3QtZ2V0IHJlc3BvbnNlIDpyZXN1bHRJZCkgKHBsaXN0LWdldCBy
ZXNwb25zZSA6ZGF0YSkKKyAgICAgICAgICAgICAgICAgIChub3QgKHBsaXN0LWdldCBlZ2xv
dC0tc2VtdG9rLWNhY2hlIDpyZWdpb24pKSkpKQorICAgICAgKHNldHEgbWV0aG9kIDp0ZXh0
RG9jdW1lbnQvc2VtYW50aWNUb2tlbnMvZnVsbC9kZWx0YSkKKyAgICAgIChzZXRxIHJlc3Bv
bnNlLWhhbmRsZXIgIydlZ2xvdC0tc2VtdG9rLWluZ2VzdC1mdWxsL2RlbHRhLXJlc3BvbnNl
KQorICAgICAgKHNldHEgcGFyYW1zCisgICAgICAgICAgICAocGxpc3QtcHV0IHBhcmFtcyA6
cHJldmlvdXNSZXN1bHRJZAorICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IChw
bGlzdC1nZXQgZWdsb3QtLXNlbXRvay1jYWNoZSA6cmVzcG9uc2UpIDpyZXN1bHRJZCkpKSkK
KyAgICAgKChhbmQgcmVnaW9uIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6c2VtYW50aWNUb2tl
bnNQcm92aWRlciA6cmFuZ2UpKQorICAgICAgKHNldHEgbWV0aG9kIDp0ZXh0RG9jdW1lbnQv
c2VtYW50aWNUb2tlbnMvcmFuZ2UpCisgICAgICAoc2V0cSBmaW5hbC1yZWdpb24gcmVnaW9u
KQorICAgICAgKHNldHEgcGFyYW1zCisgICAgICAgICAgICAocGxpc3QtcHV0IHBhcmFtcyA6
cmFuZ2UgKGVnbG90LXJlZ2lvbi1yYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY2FyIGZpbmFsLXJlZ2lvbikgKGNkciBmaW5hbC1yZWdpb24pKSkpCisg
ICAgICAoc2V0cSByZXNwb25zZS1oYW5kbGVyICMnZWdsb3QtLXNlbXRvay1pbmdlc3QtcmFu
Z2UtcmVzcG9uc2UpKSkKKyAgICAobGV0KiAoKGhhc2ggKGNvbnMgZWdsb3QtLXZlcnNpb25l
ZC1pZGVudGlmaWVyIGZpbmFsLXJlZ2lvbikpKQorICAgICAgKHVubGVzcyAoZXF1YWwgbGFz
dC1oYXNoIGhhc2gpCisgICAgICAgIChzZXRxIGVnbG90LS1zZW10b2stbGFzdC1yZXF1ZXN0
LWhhc2ggaGFzaCkKKyAgICAgICAgKGVnbG90LS1hc3luYy1yZXF1ZXN0CisgICAgICAgICAo
ZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpIG1ldGhvZCBwYXJhbXMKKyAgICAgICAg
IDpzdWNjZXNzLWZuCisgICAgICAgICAobGFtYmRhIChyZXNwb25zZSkKKyAgICAgICAgICAg
KGVnbG90LS13aGVuLWxpdmUtYnVmZmVyIGJ1ZgorICAgICAgICAgICAgICh3aGVuIChlcSBo
YXNoIGVnbG90LS1zZW10b2stbGFzdC1yZXF1ZXN0LWhhc2gpCisgICAgICAgICAgICAgICAo
c2V0cSBlZ2xvdC0tc2VtdG9rLWxhc3QtcmVxdWVzdC1oYXNoIG5pbCkpCisgICAgICAgICAg
ICAgKGVnbG90LS1zZW10b2stcHV0LWNhY2hlIDpkb2N1bWVudFZlcnNpb24gZWdsb3QtLXZl
cnNpb25lZC1pZGVudGlmaWVyKQorICAgICAgICAgICAgIChlZ2xvdC0tc2VtdG9rLXB1dC1j
YWNoZSA6cmVnaW9uIGZpbmFsLXJlZ2lvbikKKyAgICAgICAgICAgICAoZnVuY2FsbCByZXNw
b25zZS1oYW5kbGVyIHJlc3BvbnNlKQorICAgICAgICAgICAgICh3aGVuIGZvbnRpZnkgKGpp
dC1sb2NrLXJlZm9udGlmeSAoY2FyLXNhZmUgcmVnaW9uKSAoY2RyLXNhZmUgcmVnaW9uKSkp
CisgICAgICAgICAgICAgKHdoZW4gZmluYWwtcmVnaW9uIChlZ2xvdC0tc2VtdG9rLXJlcXVl
c3QtZnVsbC1vbi1pZGxlKSkpKQorICAgICAgICAgOmhpbnQgIydlZ2xvdC0tc2VtdG9rLXJl
cXVlc3QpKSkpKQorCisoZGVmdW4gZWdsb3QtLXNlbXRvay1mb250aWZ5IChiZWcgZW5kKQor
ICAiQXBwbHkgdGhlIGNhY2hlZCBzZW1hbnRpYyB0b2tlbnMgZnJvbSBCRUcgdG8gRU5ELiIK
KyAgKHdpdGgtc2xvdHMgKChtb2RpZmllci1jYWNoZSBzZW10b2stbW9kaWZpZXItY2FjaGUp
CisgICAgICAgICAgICAgICAoZmFjZXMgc2VtdG9rLWZhY2VzKQorICAgICAgICAgICAgICAg
KG1vZGlmaWVyLWZhY2VzIHNlbXRvay1tb2RpZmllci1mYWNlcykpCisgICAgICAoZWdsb3Qt
Y3VycmVudC1zZXJ2ZXIpCisgICAgKGNvbmQKKyAgICAgKChub3QgKGFuZCBmYWNlcworICAg
ICAgICAgICAgICAgIGVnbG90LS1zZW10b2stY2FjaGUKKyAgICAgICAgICAgICAgICAocGxp
c3QtZ2V0IGVnbG90LS1zZW10b2stY2FjaGUgOnJlc3BvbnNlKQorICAgICAgICAgICAgICAg
IChlcSBlZ2xvdC0tdmVyc2lvbmVkLWlkZW50aWZpZXIgKHBsaXN0LWdldCBlZ2xvdC0tc2Vt
dG9rLWNhY2hlIDpkb2N1bWVudFZlcnNpb24pKSkpCisgICAgICAoZWdsb3QtLXNlbXRvay1y
ZXF1ZXN0IChjb25zIGJlZyBlbmQpIHQpKQorICAgICAodAorICAgICAgOzsgaWYgd2UncmUg
dXNpbmcgdGhlIHJlc3BvbnNlIHRvIGEgcmFuZ2VkIHJlcXVlc3QsIHdlJ2xsIG9ubHkgYmUg
YWJsZSB0byBmb250aWZ5IHdpdGhpbgorICAgICAgOzsgdGhhdCByYW5nZSAoYW5kIGhlbmNl
IHNob3VsZG4ndCBjbGVhciBhbnkgaGlnaGxpZ2h0cyBvdXRzaWRlIG9mIHRoYXQgcmFuZ2Up
CisgICAgICAod2hlbi1sZXQqICgodG9rZW4tcmVnaW9uIChwbGlzdC1nZXQgZWdsb3QtLXNl
bXRvay1jYWNoZSA6cmVnaW9uKSkpCisgICAgICAgIChwcm9nbgorICAgICAgICAgICh3aGVu
IChvciAoPCBiZWcgKGNhciB0b2tlbi1yZWdpb24pKQorICAgICAgICAgICAgICAgICAgICAo
PiBlbmQgKGNkciB0b2tlbi1yZWdpb24pKSkKKyAgICAgICAgICAgIDs7IHRydW5jYXRlZCEg
Y29udGludWUsIGJ1dCByZXF1ZXN0IGFnYWluCisgICAgICAgICAgICAoZWdsb3QtLXNlbXRv
ay1yZXF1ZXN0IChjb25zIGJlZyBlbmQpIHQpKQorICAgICAgICAgIChzZXRxIGJlZyAobWF4
IGJlZyAoY2FyIHRva2VuLXJlZ2lvbikpKQorICAgICAgICAgIChzZXRxIGVuZCAobWluIGVu
ZCAoY2RyIHRva2VuLXJlZ2lvbikpKSkpCisgICAgICAoZWdsb3QtLXdpZGVuaW5nCisgICAg
ICAgICh3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zCisgICAgICAgICAgKHJlbW92ZS1saXN0
LW9mLXRleHQtcHJvcGVydGllcyBiZWcgZW5kICcoZm9udC1sb2NrLWZhY2UpKQorICAgICAg
ICAgIChsZXQqICgoaW5oaWJpdC1maWVsZC10ZXh0LW1vdGlvbiB0KQorICAgICAgICAgICAg
ICAgICAoZGF0YSAocGxpc3QtZ2V0IChwbGlzdC1nZXQgZWdsb3QtLXNlbXRvay1jYWNoZSA6
cmVzcG9uc2UpIDpkYXRhKSkKKyAgICAgICAgICAgICAgICAgKGktbWF4IChsZW5ndGggZGF0
YSkpCisgICAgICAgICAgICAgICAgIChiZWctYm9sIChhbmQgKGdvdG8tY2hhciBiZWcpIChs
aW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAgICAocHJvcGVydHkt
YmVnKQorICAgICAgICAgICAgICAgICAocHJvcGVydHktZW5kKSkKKyAgICAgICAgICAgIChn
b3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAoY2wtZG8qICgoaSAwICgrIGkg
NSkpIChjb2x1bW4gMCkpICgoPj0gaSBpLW1heCkpCisgICAgICAgICAgICAgICh3aGVuICg+
IChhcmVmIGRhdGEgaSkgMCkKKyAgICAgICAgICAgICAgICAoc2V0cSBjb2x1bW4gMCkKKyAg
ICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIChhcmVmIGRhdGEgaSkpKQorICAgICAgICAg
ICAgICAodW5sZXNzICg8IChwb2ludCkgYmVnLWJvbCkKKyAgICAgICAgICAgICAgICAoc2V0
cSBjb2x1bW4gKCsgY29sdW1uIChhcmVmIGRhdGEgKCsgaSAxKSkpKQorICAgICAgICAgICAg
ICAgIChmdW5jYWxsIGVnbG90LW1vdmUtdG8tbGluZXBvcy1mdW5jdGlvbiBjb2x1bW4pCisg
ICAgICAgICAgICAgICAgKHdoZW4gKD4gKHBvaW50KSBlbmQpIChjbC1yZXR1cm4pKQorICAg
ICAgICAgICAgICAgIChzZXRxIHByb3BlcnR5LWJlZyAocG9pbnQpKQorICAgICAgICAgICAg
ICAgIChmdW5jYWxsIGVnbG90LW1vdmUtdG8tbGluZXBvcy1mdW5jdGlvbiAoKyBjb2x1bW4g
KGFyZWYgZGF0YSAoKyBpIDIpKSkpCisgICAgICAgICAgICAgICAgKHNldHEgcHJvcGVydHkt
ZW5kIChwb2ludCkpCisgICAgICAgICAgICAgICAgKHdoZW4tbGV0KiAoKGZhY2UgKGFyZWYg
ZmFjZXMgKGFyZWYgZGF0YSAoKyBpIDMpKSkpKQorICAgICAgICAgICAgICAgICAgKHB1dC10
ZXh0LXByb3BlcnR5IHByb3BlcnR5LWJlZyBwcm9wZXJ0eS1lbmQgJ2ZvbnQtbG9jay1mYWNl
IGZhY2UpKQorICAgICAgICAgICAgICAgIChsZXQqICgoY29kZSAoYXJlZiBkYXRhICgrIGkg
NCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoZmFjZXMgKGdldGhhc2ggY29kZSBtb2Rp
Zmllci1jYWNoZSAnbm90LWZvdW5kKSkpCisgICAgICAgICAgICAgICAgICAod2hlbiAoZXEg
ZmFjZXMgJ25vdC1mb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgKHNldHEgZmFjZXMgbmls
KQorICAgICAgICAgICAgICAgICAgICAoY2wtbG9vcCBmb3IgaiBmcm9tIDAgYmVsb3cgKGxl
bmd0aCBtb2RpZmllci1mYWNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KD4gKGxvZ2FuZCBjb2RlIChhc2ggMSBqKSkgMCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGFyZWYgbW9kaWZpZXItZmFjZXMgaikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29sbGVjdCAoYXJlZiBtb2RpZmllci1mYWNlcyBqKSBpbnRvIGZhY2VzKQor
ICAgICAgICAgICAgICAgICAgICAocHV0aGFzaCBjb2RlIGZhY2VzIG1vZGlmaWVyLWNhY2hl
KSkKKyAgICAgICAgICAgICAgICAgIChkb2xpc3QgKGZhY2UgZmFjZXMpCisgICAgICAgICAg
ICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBwcm9wZXJ0eS1iZWcgcHJvcGVydHktZW5k
ICdmb250LWxvY2stZmFjZSBmYWNlKSkpKSkpKSkKKyAgICAgIGAoaml0LWxvY2stYm91bmRz
ICxiZWcgLiAsZW5kKSkpKSkKKworKGRlZnVuIGVnbG90LS1zZW10b2stcmVxdWVzdC1mdWxs
LW9uLWlkbGUgKCkKKyAgIk1ha2UgYSBmdWxsIHNlbWFudGljIHRva2VucyByZXF1ZXN0IGFm
dGVyIGFuIGlkbGUgdGltZXIuIgorICAobGV0KiAoKGJ1ZiAoY3VycmVudC1idWZmZXIpKQor
ICAgICAgICAgKGZ1biAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgKGVnbG90LS13aGVu
LWxpdmUtYnVmZmVyIGJ1ZgorICAgICAgICAgICAgICAgICAgKGVnbG90LS1zZW10b2stcmVx
dWVzdCBuaWwpKSkpKQorICAgICh3aGVuIGVnbG90LS1zZW10b2staWRsZS10aW1lciAoY2Fu
Y2VsLXRpbWVyIGVnbG90LS1zZW10b2staWRsZS10aW1lcikpCisgICAgKHNldHEgZWdsb3Qt
LXNlbXRvay1pZGxlLXRpbWVyIChydW4td2l0aC1pZGxlLXRpbWVyICgqIDMgZWdsb3Qtc2Vu
ZC1jaGFuZ2VzLWlkbGUtdGltZSkgbmlsIGZ1bikpKSkKKworKGRlZnVuIGVnbG90LS1zZW10
b2stb24tcmVmcmVzaCAoc2VydmVyKQorICAiQ2xlYXIgc2VtYW50aWMgdG9rZW5zIHdpdGhp
biBhbGwgYnVmZmVycyBvZiBTRVJWRVIuIgorICAoY2wtbG9vcCBmb3IgYnVmZmVyIGluIChl
Z2xvdC0tbWFuYWdlZC1idWZmZXJzIHNlcnZlcikgZG8KKyAgICAgICAgICAgKHdpdGgtY3Vy
cmVudC1idWZmZXIgYnVmZmVyCisgICAgICAgICAgICAgKHNldHEgZWdsb3QtLXNlbXRvay1j
YWNoZSBuaWwpCisgICAgICAgICAgICAgKGppdC1sb2NrLXJlZm9udGlmeSkpKSkKKworKGxl
dCAoKGRlYm91bmNlLXRpbWVyIG5pbCkpCisgIChjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxl
LXJlcXVlc3QKKyAgICAoc2VydmVyIChfbWV0aG9kIChlcWwgd29ya3NwYWNlL3NlbWFudGlj
VG9rZW5zL3JlZnJlc2gpKSkKKyAgICAiSGFuZGxlIGEgc2VtYW50aWNUb2tlbnMvcmVmcmVz
aCByZXF1ZXN0IGZyb20gU0VSVkVSLiIKKyAgICAod2hlbiBkZWJvdW5jZS10aW1lciAoY2Fu
Y2VsLXRpbWVyIGRlYm91bmNlLXRpbWVyKSkKKyAgICAoc2V0cSBkZWJvdW5jZS10aW1lciAo
cnVuLXdpdGgtdGltZXIgNSBuaWwgIydlZ2xvdC0tc2VtdG9rLW9uLXJlZnJlc2ggc2VydmVy
KSkKKyAgICBuaWwpKQorCis7OyBJbml0aWFsaXphdGlvbgorKGRlZnVuIGVnbG90LS1zZW10
b2stYnVpbGQtZmFjZS1tYXAgKGlkZW50aWZpZXJzIGZhY2VzIGNhdGVnb3J5IHZhcm5hbWUp
CisgICJCdWlsZCBtYXAgb2YgRkFDRVMgZm9yIElERU5USUZJRVJTIHVzaW5nIENBVEVHT1JZ
IGFuZCBWQVJOQU1FLiIKKyAgKHZjb25jYXQKKyAgIChtYXBjYXIgKGxhbWJkYSAoaWQpCisg
ICAgICAgICAgICAgKGxldCAoKG1heWJlLWZhY2UgKGNkciAoYXNzb2MgaWQgZmFjZXMpKSkp
CisgICAgICAgICAgICAgICAod2hlbiAobm90IG1heWJlLWZhY2UpCisgICAgICAgICAgICAg
ICAgIChkaXNwbGF5LXdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICdlZ2xvdC1zZW10b2sK
KyAgICAgICAgICAgICAgICAgIChmb3JtYXQtbWVzc2FnZSAiTm8gZmFjZSBoYXMgYmVlbiBh
c3NvY2lhdGVkIHRvIHRoZSAlcyBgJXMnOiBjb25zaWRlciBhZGRpbmcgYSBjb3JyZXNwb25k
aW5nIGRlZmluaXRpb24gdG8gJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2F0ZWdvcnkgaWQgdmFybmFtZSkpKQorICAgICAgICAgICAgICAgbWF5YmUtZmFjZSkp
CisgICAgICAgICAgIGlkZW50aWZpZXJzKSkpCisKKyhkZWZ1biBlZ2xvdC0tc2VtdG9rLWlu
aXRpYWxpemUgKHNlcnZlcikKKyAgIkluaXRpYWxpemUgU0VSVkVSIGZvciBzZW1hbnRpYyB0
b2tlbnMuIgorICAoY2wtZGVzdHJ1Y3R1cmluZy1iaW5kICgma2V5IHRva2VuVHlwZXMgdG9r
ZW5Nb2RpZmllcnMgJmFsbG93LW90aGVyLWtleXMpCisgICAgICAocGxpc3QtZ2V0IChwbGlz
dC1nZXQgKGVnbG90LS1jYXBhYmlsaXRpZXMgc2VydmVyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDpzZW1hbnRpY1Rva2Vuc1Byb3ZpZGVyKQorICAgICAgICAgICAgICAgICA6
bGVnZW5kKQorICAgIChvc2V0IHNlcnZlciBzZW10b2stZmFjZXMKKyAgICAgICAgICAoZWds
b3QtLXNlbXRvay1idWlsZC1mYWNlLW1hcAorICAgICAgICAgICB0b2tlblR5cGVzIGVnbG90
LXNlbWFudGljLXRva2Vucy1mYWNlcworICAgICAgICAgICAic2VtYW50aWMgdG9rZW4iICJl
Z2xvdC0tc2VtdG9rZmFjZXMiKSkKKyAgICAob3NldCBzZXJ2ZXIgc2VtdG9rLW1vZGlmaWVy
LWZhY2VzCisgICAgICAgICAgKGVnbG90LS1zZW10b2stYnVpbGQtZmFjZS1tYXAKKyAgICAg
ICAgICAgdG9rZW5Nb2RpZmllcnMgZWdsb3Qtc2VtYW50aWMtdG9rZW5zLW1vZGlmaWVyLWZh
Y2VzCisgICAgICAgICAgICJzZW1hbnRpYyB0b2tlbiBtb2RpZmllciIgImVnbG90LS1zZW10
b2ttb2RpZmllci1mYWNlcyIpKSkpCisKKyhkZWZpbmUtbWlub3ItbW9kZSBlZ2xvdC1zZW1h
bnRpYy10b2tlbnMtbW9kZQorICAiTWlub3IgbW9kZSBmb3IgZm9udGlmeWluZyBidWZmZXIg
d2l0aCBMU1Agc2VydmVyJ3Mgc2VtYW50aWMgdG9rZW5zLiIKKyAgOmdsb2JhbCBuaWwKKyAg
KGNvbmQgKGVnbG90LXNlbWFudGljLXRva2Vucy1tb2RlCisgICAgICAgICAoaWYgKGVnbG90
LXNlcnZlci1jYXBhYmxlIDpzZW1hbnRpY1Rva2Vuc1Byb3ZpZGVyKQorICAgICAgICAgICAg
IChqaXQtbG9jay1yZWdpc3RlciAjJ2VnbG90LS1zZW10b2stZm9udGlmeSAnY29udGV4dHVh
bCkKKyAgICAgICAgICAgKGVnbG90LXNlbWFudGljLXRva2Vucy1tb2RlIC0xKSkpCisgICAg
ICAgICh0CisgICAgICAgICAoaml0LWxvY2stdW5yZWdpc3RlciAjJ2VnbG90LS1zZW10b2st
Zm9udGlmeSkKKyAgICAgICAgICh3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zCisgICAgICAg
ICAgIChyZW1vdmUtbGlzdC1vZi10ZXh0LXByb3BlcnRpZXMgKHBvaW50LW1pbikgKHBvaW50
LW1heCkgJyhmb250LWxvY2stZmFjZSkpKSkpKQorCiAMCiA7OzsgQ2FsbCBhbmQgdHlwZSBo
aWVyYXJjaGllcwogKHJlcXVpcmUgJ2J1dHRvbikKQEAgLTQ3MjgsNyArNTA0OCw4IEBAIElm
IE5PRVJST1IsIHJldHVybiBwcmVkaWNhdGUsIGVsc2UgZXJyb3JpbmcgZnVuY3Rpb24uIgog
OzsgaGFyZGVyLiBGb3Igbm93LCB1c2UgYHdpdGgtZXZhbC1hZnRlci1sb2FkJy4gU2VlIGFs
c28gZ2l0aHViIzExODMuCiAod2l0aC1ldmFsLWFmdGVyLWxvYWQgJ2Rlc2t0b3AKICAgKGFk
ZC10by1saXN0ICdkZXNrdG9wLW1pbm9yLW1vZGUtaGFuZGxlcnMgJyhlZ2xvdC0tbWFuYWdl
ZC1tb2RlIC4gaWdub3JlKSkKLSAgKGFkZC10by1saXN0ICdkZXNrdG9wLW1pbm9yLW1vZGUt
aGFuZGxlcnMgJyhlZ2xvdC1pbmxheS1oaW50cy1tb2RlIC4gaWdub3JlKSkpCisgIChhZGQt
dG8tbGlzdCAnZGVza3RvcC1taW5vci1tb2RlLWhhbmRsZXJzICcoZWdsb3QtaW5sYXktaGlu
dHMtbW9kZSAuIGlnbm9yZSkpCisgIChhZGQtdG8tbGlzdCAnZGVza3RvcC1taW5vci1tb2Rl
LWhhbmRsZXJzICcoZWdsb3Qtc2VtdG9rLW1vZGUgLiBpZ25vcmUpKSkKIAogDAogOzs7IE1p
c2MKQEAgLTQ3NTcsNiArNTA3OCw3IEBAIElmIE5PRVJST1IsIHJldHVybiBwcmVkaWNhdGUs
IGVsc2UgZXJyb3JpbmcgZnVuY3Rpb24uIgogICAgICAgICAgICAgICAgZWdsb3QtZm9ybWF0
CiAgICAgICAgICAgICAgICBlZ2xvdC1mb3JtYXQtYnVmZmVyCiAgICAgICAgICAgICAgICBl
Z2xvdC1pbmxheS1oaW50cy1tb2RlCisgICAgICAgICAgICAgICBlZ2xvdC1zZW1hbnRpYy10
b2tlbnMtbW9kZQogICAgICAgICAgICAgICAgZWdsb3QtcmVjb25uZWN0CiAgICAgICAgICAg
ICAgICBlZ2xvdC1yZW5hbWUKICAgICAgICAgICAgICAgIGVnbG90LXNpZ25hbC1kaWRDaGFu
Z2VDb25maWd1cmF0aW9uCi0tIAoyLjUxLjAKCg==

--------------g0J6nJdLcckbJYpGJXcUemsd--




Acknowledgement sent to me@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#79374; 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: Sat, 20 Sep 2025 18:30:02 UTC

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