Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 06 Sep 2024 23:07:11 +0200
From:      Steffen Nurpmeso <steffen@sdaoden.eu>
To:        Alan Somers <asomers@freebsd.org>
Cc:        ske-89@pkmab.se, freebsd-hackers@freebsd.org
Subject:   Re: The Case for Rust (in any system)
Message-ID:  <20240906210711.RUo97_0A@steffen%sdaoden.eu>
In-Reply-To: <CAOtMX2gK23KxBXyFFFWt09sV00D8%2BHHui3tX4chtACi%2BOmzVaw@mail.gmail.com>
References:  <202409052313.aa18097@berenice.pkmab.se> <20240905225129.UvYYMXDa@steffen%sdaoden.eu> <CAOtMX2gK23KxBXyFFFWt09sV00D8%2BHHui3tX4chtACi%2BOmzVaw@mail.gmail.com>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Alan Somers wrote in
 <CAOtMX2gK23KxBXyFFFWt09sV00D8+HHui3tX4chtACi+OmzVaw@mail.gmail.com>:
 |On Thu, Sep 5, 2024 at 4:51 PM Steffen Nurpmeso <steffen@sdaoden.eu> wrote:
 ..
 |> ske-89@pkmab.se wrote in
 |>  <202409052313.aa18097@berenice.pkmab.se>:
 |>|Alan Somers <asomers@freebsd.org> wrote:
 |>|> In fact, of all the C bug fixes that I've been involved with (as
 |>|> either author or reviewer) since May, about three quarters could've
 |>|> been avoided just by using a better language.
 |>|...
 |>|> To summarize, here's the list of this week's security advisories, and
 |>|> also some other recent C bug fixes of my own involvement:
 |>|
 |>|After checking several of these examples, I'm wondering what the code
 |>|would have looked like in some "better language", where those bugs would
 |>|have been avoided?
 |>
 |> Examples.  I find the absolute opposite after checking four.
 ...
 |I'm having trouble following your English, but you seem to be missing
 |the point.  The point is not whether the bugs can be fixed in C; of
 |course they can, after all we just did.  The point is that safe
 |programming languages make it nearly impossible to create the bugs in
 |the first place.  For example, a language that uses RAII everywhere
 |makes it nearly impossible to allocate a structure without
 |initializing it.  Nearly impossible to leak memory, too.

C++ also has automatic constructors.  Scoped instances get
automatically destructed, too.  (To me this is all horrors,
including Stroustrup's very own, iirc, first-time-init-switch
injection (aka inject instances of a class via .h into each
compilation unit where they are used), as you then get those
linker sections dtor and fini etc etc.   You know all that.)
Yes, you know all that.

No, so no, and then, i have not looked, a lot of the errors stem
from optimization away things until you really really know, and
this then leads to logical errors.  That of course goes away with
"RAII" (referring to that commit "of yours").  But i note that
RAII can require more object states, possibly new object members
even to be able to differentiate them, even though that could be
not more than a bit.  (And that possibly all the way up to a super
object in case of "real object" hierarchies.)  More data all along
the path, i have definetely seen that.  In C++ .. and plain C, but
not automatically there, of course.

*I* am happy that i do not have to go Rust, i do not like it;
then rather C# (i had to go JAVA ~26 years ago).
But in fact i do like the blood sweat and tears of raw C without
any help, no automatic ctors, dtors, etc etc.  I only feel sorry
for things like what PHK just said, or what Dennis Ritchie
famously said in 1988.  The ISO C standard is a real mess, despite
all the misses (struct aligning, packing, even endian layout
(oh!); bit enumerations (henceforth totally shot to death since
members of different enums may no longer be used together in | etc
operators, leaving you with only preprocessor possibilities for
bit flags .. or a tremendous number of casts) noted already,
desasters like static_assert pre-C23; ISO C++ should always simply
have been built upon ISO C imho, and the C++ static_assert was
sane from the start.  And so forth.  But some basic types could be
mentioned as well, now that you have mentioned Vec<u8>.

Ie, monks have to (work work work and) carefully and consciously
rake the sea into the gravel as a kind of contemplation.  Slow
food and such that is.  And that is a goal i like.
Ok business is the other thing, they will finally abolish life on
earth for sure, that was known 170 years ago already, but *you*
have to make a living, i understand that.  And in a rapid
application development environment, surely already or soon also
AI-assisted, with module-drag-and-plug and live-compilation, this
seems strange .. and surely is.  Yet -- in such an environment,
there are plenty of hints and tools to prevent errors like surely
that strnlen() thing.  You do not need Rust for that, in my
opinion, i would think you need a good utility library with
graceful test coverage, and strictly stick to usage of such tested
utilities when you program your own thing.

New ISO C23 even has integer overflow functions.  Today the new TZ
came into FreeBSD, which introduced bugs because it replaced its
built-in functions which provided the same facilities (correctly)
with usage of those.

 |>|/Kristoffer Eriksson
 |>  --End of <202409052313.aa18097@berenice.pkmab.se>
 |>
 |> In support for that swedish hm virgin, yes, sweden is not a clean
 |> country for sure.
 |
 |Again, I don't know what you mean.  But it looks like a personal
 |attack to me.  Please try to keep your discourse on the public mailing
 |lists respectful.

I cannot understand how you come to the conclusion the above was
addressed to you; it referred for example to the attached picture.

 |-Alan
 --End of <CAOtMX2gK23KxBXyFFFWt09sV00D8+HHui3tX4chtACi+OmzVaw@mail.gmail\
 .com>

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)

[-- Attachment #2 --]
JFIF,,zExifMM*bj(1r2i,,Adobe Photoshop 22.2 (Windows)2023:01:04 14:31:03("*(2@HHAdobe_CMAdobed			



"
?	
	
3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw?TI%8}Cߏֆ_EWy.6c
}>mIe4?+ҝrM?iwu:ݹc3_z_-^NMP|l|\[e6ʽaa}.¶ZwnGk,]gԣx\hew[mN,`{cl,!c꟟GW"ۉ]u86RSzUw}VQz~o9zua^sc?o?Ѡd}4Eck
ce:VOU~\Z{f_٨8ޖ!ͱ-ϲnk}Fl5ߦZ?Aotɪe6ZEg~
FO2vg^Spmk^'m6:֖;u%*kv{$8h\GԢe+]Zv0zE5.e[McŻ7IMqn1uLu;k]Wo}?q,{B6X(c\}V{u)VN{]M͟[]t?k#צ{/lV}ׄ6̟.P͙+2÷#=$>>]v_Wc?bboMPk5E{v~k[-5X%k\MfQޣޗDo<TuZX]1n/Ʊe
XjmuN/YuVCA#Wç[mz-}mbSѻVGzUM^2}J=6k\֐z=_O\l,jjSK}l=κs]g$Zr5Zß]K1n3\U&;muW]m.OԪic57FP&87)f6ETm;jɷ9]uxf=-~dטY;ds_v1 WI*tAUN-n1Z;ӲHmmo\GZ'B˦uzWOkjm~3q-~*zWuRƗq~dl;mp?֫J9z
d֪I$RTI%)$`
I<AT9ku>@[moAii7rΝf(潍Gѱ%V7c2Km>V;lcZַ&m	?קf%UYN<KMZKdq<ԕE}Aպ[Zw܌kmj ƼqɾN2d{GI%(6ÄTRLTє,KeF9Šv^OH7Ig:윀]S5.@}->m9"ʬOZ7rHl$I)I$JTI%0}-cV}ncjn!够i
}c ̳nGkПknÛL3==.h}I­'[Uw1v`kheQ#m`n=N=~EjL`:ok=¦V\w&ftwJ,-5u1~x	쇗N?*WۏC=
饀[lk
rn.w}uǤt{[v^Yq&+cٶ~gO9K`×4c_W3<2D9/)FGs[[=Mψ }A?^IynKfL#o%F WW3
GJ'.@GIsR,A;?[2hg}V>W1;9=f%ùl7O7KBMDka[ϧѻK//TEpS.>b'IXO/^-7_hcvJ[eelhuksOs,`{fcU$+q><K7oAeNu;lk~kKi%2:kig>Ϸ{Oel= yٯ
pݜ6!IU@zEkڭ$TB7
nHi*Juult̆5{a*2:VCvK[.?IU:jQ/{jNep=L
cm=}In}et)3w4X6eu\QQƀhO[V1Vkp澟E8%o疳%snW]͐OU\-_Se3}=?fȮփm-UEƿ.:5˝]~;k}M#cakXp
gc=7Yzf6]~V"#"
y1Zk:'i|͖պ@OsISſͰ8XeNe-1E=߽
^&f1ԑ}c/鍫>;"jss˽s繍vQߣlkVuq}W^f9cDM͆sFY`,7xc¡!(K7iJp6\}&2IΏj3/ٷc>ۣݺl۹OeIӱ'JŶXZ
lc[k6
z u/sŔCmsϠH
x֟fK
sH,wO~W[7	
k{bv]I$TI%)$b970$pzc'~],vs ~)$7T[E+/pkovvs.c@x-a
xW֜.%/4So-v}3zֹR=F4.EԹSo`|}2k*;<Lfo6*EGuOsZ?G{klr H4hֺȭf~shg紐^ִƽhG,Jhsl'qDY#(΃N+bCʼ˲~S*i
k[]-F->
XsSKHk\\I:?6W>ŕK
ŲbIswE,
;5Is2[mmD[o5ߦh`v#]	=aS
oi&4~.cZuHh2{wzo*w{{nM罊Zs#Hog6~
eXs
ŕXqs"ʰ}_k2K]j-~dETr
s&_ioOVV1/a.\,viemoصߚZ-ٳtI;g57je5;[\u<i)TI%42~}cgʙت_^=@ѡeov0vWgG5}Z^fZK9ᅵ?C%	GMNF%4FX8f
7{=?z\g@OD2,nn5kY"\,<>cgfOJ-z״zNcG;ui ?ӽkZe?H'?:~!`qw:sKIcukocfE_Bu;'0v	OAR(|KRE	m|oF;mC#!
lo?gׇh,k
9β2w_gO
_S>zl7Ume~ƺߡIx#TP?CuCht|šϱVl05s޻>Ca;ec#tUno2Km-a\'
[Ul77O֭YGBܟWvnc*?,/թڸ캼f]}O.u^Izm[Zթq+fSm1Kb$Q4ԺqcmU	m
ckIsyk97cV611ӏ$eyam[)
jUs=V7Y֐]3CKkXkGZ7wޮQqe!\+hh';U,L՜BY_#mnl+Z{;\ EI$TI%)E5hsIxI$T:߹9ETDeo%rC赛_Emy0=v).O3ZZ Ns@ʳ3c2Kg[N[f}nǺ7đ]b\
?9	5'ŭ)Cg_Y"f89?Ei1馩p-qE-5>	hǔnoC&6ǵ2>H_nNƩcZfWqU{2=o/~qss}6iS{[NE6=+*YV{^v84LݯMOz6fnL1{#Ms?3bTFS1kncXIMoiٺgQk?~ƲwT6!ŧwK,v?1
N9ZzvTXK
jm5\'Wڝھ穤JRI$T)`,}(ۿV3WC2OP}nu.Zow0_|o2oB1Uo?2sMwպ<Tl7!f^>-n.wqc?jp Xq'6HԷ6{~Ӟ"cжb7}Kw*p^ZA>~qN6?f&E` 4-+'5F|ZC-n[>w7#wgeTZt[`K>jY{)D5w?m(XKKr>ܻ(dgw3r	 =?W/WN~&'R?Wx՘-k`1c-mE74gfz8`-&H^#tq";Au4I!o}At
ZZd4^GߤcͦJq0ẅ́+&uә[핷	ktW*s(f:6_,wM7?N[艒{jcdWC2*7{\Aj*:h4Nl!oPAtuƤbnF8i3ϤW"
Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$NUI%?SdGm#VITU$T:E|~?/+2|X~I|bꤗʩ$http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c006 79.164648, 2021/01/12-15:52:29        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">; <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#" xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmpMM:DocumentID="adobe:docid:photoshop:f0b1b438-b9f5-ae4d-ab16-4f919604a4cc" xmpMM:InstanceID="xmp.iid:71cb08bf-fad9-224e-80ba-1523ed9fa35c" xmpMM:OriginalDocumentID="xmp.did:0180117407206811822AB0106F1A410F" xmpMM:RenditionClass="proof:pdf" dc:format="image/jpeg" xmp:CreatorTool="Adobe Illustrator 27.1 (Macintosh)" xmp:CreateDate="2023-01-04T12:33:19-08:00" xmp:MetadataDate="2023-01-04T14:31:03-07:00" xmp:ModifyDate="2023-01-04T14:31:03-07:00" pdf:Producer="Adobe PDF library 17.00" illustrator:CreatorSubTool="Adobe Illustrator" xmpTPg:NPages="1" xmpTPg:HasVisibleTransparency="False" xmpTPg:HasVisibleOverprint="False" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:088c31e3-a415-7541-8da7-8b815b185718" stRef:documentID="xmp.did:088c31e3-a415-7541-8da7-8b815b185718" stRef:originalDocumentID="xmp.did:0180117407206811822AB0106F1A410F" stRef:renditionClass="proof:pdf"/> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:0180117407206811822AB0106F1A410F" stEvt:when="2018-04-27T10:56:09-07:00" stEvt:softwareAgent="Adobe Illustrator CS6 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:445187d8-a6db-4575-a083-2871b151891a" stEvt:when="2023-01-04T12:33:17-08:00" stEvt:softwareAgent="Adobe Illustrator 27.1 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/pdf to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:088c31e3-a415-7541-8da7-8b815b185718" stEvt:when="2023-01-04T14:31:03-07:00" stEvt:softwareAgent="Adobe Photoshop 22.2 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/pdf to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:71cb08bf-fad9-224e-80ba-1523ed9fa35c" stEvt:when="2023-01-04T14:31:03-07:00" stEvt:softwareAgent="Adobe Photoshop 22.2 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">GFN-Country-Overshoot-Day-2023_v3</rdf:li> </rdf:Alt> </dc:title> <xmpTPg:MaxPageSize stDim:w="0.785958" stDim:h="0.611596" stDim:unit="Yards"/> <xmpTPg:Fonts> <rdf:Bag> <rdf:li stFnt:fontName="FuturaT-Light" stFnt:fontFamily="Futura T" stFnt:fontFace="Light" stFnt:fontType="Type 1" stFnt:versionString="001.002" stFnt:composite="False" stFnt:fontFileName="FuturTLig; FuturaT"/> <rdf:li stFnt:fontName="FuturaT-Book" stFnt:fontFamily="Futura T" stFnt:fontFace="Book" stFnt:fontType="Type 1" stFnt:versionString="001.002" stFnt:composite="False" stFnt:fontFileName="FuturTBoo; FuturaT"/> <rdf:li stFnt:fontName="FuturaT-Demi" stFnt:fontFamily="Futura T" stFnt:fontFace="Demi" stFnt:fontType="Type 1" stFnt:versionString="001.002" stFnt:composite="False" stFnt:fontFileName="FuturTDem; FuturaT"/> <rdf:li stFnt:fontName="FuturaT-Bold" stFnt:fontFamily="Futura T" stFnt:fontFace="Bold" stFnt:fontType="Type 1" stFnt:versionString="001.002" stFnt:composite="False" stFnt:fontFileName="FuturTBol; FuturaT"/> <rdf:li stFnt:fontName="FuturaT-ExtraBold" stFnt:fontFamily="Futura T" stFnt:fontFace="Extra Bold" stFnt:fontType="Type 1" stFnt:versionString="001.002" stFnt:composite="False" stFnt:fontFileName="FuturTExtBol; FuturaT"/> </rdf:Bag> </xmpTPg:Fonts> <xmpTPg:PlateNames> <rdf:Seq> <rdf:li>Cyan</rdf:li> <rdf:li>Magenta</rdf:li> <rdf:li>Yellow</rdf:li> <rdf:li>Black</rdf:li> <rdf:li>PANTONE 647 C</rdf:li> </rdf:Seq> </xmpTPg:PlateNames> <xmpTPg:SwatchGroups> <rdf:Seq> <rdf:li> <rdf:Description xmpG:groupName="Default Swatch Group" xmpG:groupType="0"> <xmpG:Colorants> <rdf:Seq> <rdf:li xmpG:swatchName="r120g162b47" xmpG:type="PROCESS" xmpG:tint="100.000000" xmpG:mode="RGB" xmpG:red="125" xmpG:green="158" xmpG:blue="31"/> <rdf:li xmpG:swatchName="R=0 G=85 B=149 copy" xmpG:type="PROCESS" xmpG:tint="100.000000" xmpG:mode="RGB" xmpG:red="0" xmpG:green="84" xmpG:blue="149"/> <rdf:li xmpG:swatchName="PANTONE 647 C" xmpG:type="SPOT" xmpG:tint="100.000000" xmpG:mode="LAB" xmpG:L="38.823502" xmpG:A="-6" xmpG:B="-34"/> <rdf:li xmpG:swatchName="PANTONE 645 C" xmpG:type="SPOT" xmpG:tint="100.000000" xmpG:mode="LAB" xmpG:L="64.313698" xmpG:A="-6" xmpG:B="-23"/> </rdf:Seq> </xmpG:Colorants> </rdf:Description> </rdf:li> </rdf:Seq> </xmpTPg:SwatchGroups> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>C		

	


 "" $(4,$&1'-=-157:::#+?D?8C49:7C




7%%77777777777777777777777777777777777777777777777777I!1AQa"2q#BR3b$CSr4%Es┲3!1A"Qaq2#B3CR?P
@(P
@(P
@(òv
'PE+/P6P
@(P
@(P
@(P
@(P
@(?HF-7IPoPww`R<1}{g>#*T,3˥k)vvKs8G&{Au[
1[{?!\QQ)?ӵ;N3&w
Ž'
%	G!\30j67RZyo%yH.GQ$&"Ԭf{H-<dr:I[[8IW:!yZYwq@'j{Q*]k6qp\q+`88Z,rrQh<wlbmg"(%uls,9DcJVoV6~\L-9]׼]Ci]7r
ʥxxpVĩźOs7c*y{m2,I88fLT$UK)?h{UIcنx-%Jc>~5G<QՓϖleSjݰu/JvI+T|Ԩa̼;2a~-{~2HYUXOM6eI%KWV@.j,U;yRVQBMA)[f^	cIBQ20ciex犞~Dw36d^ۥRVoPt+ocRT^}7*ỷ
ʶ	G,u#KK9WN{'nKK R}h)٧Vr	UWppx#>UN꾧1;MsYsa;tSugQcFw`%49pvDo)8
%O:ȕfLnӞY$1<ɷy69lz}j0Lhz:2ѩbpې	S3Yicm'fa{%	,݀yqQnH9'%P;i)Xue'p]cTvew-
RJSUKY#o
<s厕(8OS3Rx{GMfR2@Vx.VX>ZT+KZ"ʻ-29T,s|"^H.Yb("p'&"I+dklvB텩8wi>@Ք$VuƮ6ӵ[
Q.cwtTJDqg(a}~c%>ugg/]r|<N~[Vei@en9åvEao64'omb4צԜ}+=9\#lݡ-<wyYwuO)xFLj#9QTfNNmAKceHbIZ8Np15PV>YPrvSZm\cFA5yUkɆiIdݧ	& w2s<b=ߑnRQg#:=_`\}.A<"
i.*q;P
@(P
@(nމ4dc2~zve7"7,H~8xuG+ֻF7TϟIGet@H_s]`OJYm-K߳s-@IuψsQ+ȍG=Cd %kFXӪ`=8Us&FigI/VY#a9WSFi5)-<k{=k꟬i!D`9]sǏ~ӖXSbFv;s@,Cc]#Q
R7&k/fuQэ0M6〦.xy1`x.'㲺~{Y$HT)6~}>4*=ge.6vMOxl0SMNMd_Ikij_[+Xqh\͕_Bn, S&@|iV>M9m{7?&28	O9^iEJ;wfȱGG}3Q"tC2Gʠ>$©p2-єts}_K9/ij/TC2Yߓ&x[õޫX@>'|lpFR]LyF/cQuAK©ӔńǙ̌Up'*o6v	hLV|z!5L5(彗Vl{{擸IddFۼ.sZdE1cY23ێLiA2YU,e##X3/^
N
^}KhI x:gyA,[vR3R44i~ucfϺ:cZYdt+Qx?]q;/zHAb(~D?Jv{mPwfr})>JOsmbSm!K`'ˏ"Vy	]Mu+v>OLs9?dsLs%1,Ioh{VFc~2<昝fWW2|DNihh(s(2}+<ܦق
0U?Q'E|G/khJF}
;OKdY>U=1Ugjݧ4%1vr{QmvB:,<!',~VgRFyT1d={3iٛ+*I|3w}<qO+Ԗe%8Aytǂ0vH9arlkyozk;>Gkv:9?:N32Hkf[8JfxFz`?g̖.Nңӡsg8{	"I=;|sc^e,ӵT{y^ic;*MGSi+gȵ^%6E;dV'xlMf]$oԶԴKpe=%{\r'}&ݵv3I==*&vRL^ٞɪ>g
>߄\/.GRXGϴy;EF;GDH76߅qdǏDpk$͞Lz̚踷ffuUn\=z#n:,աJ0ot/-fdF;\ẍpr>;Ʌg$+j}P
@(P
@(=SLխQI'8oP}EZŕ#5R<B!tEym.ՒJcqw_솏'p6mG?Z<Ʃɂ7fݟ작;Kcm3JۛCQ4ldž+띇5X}Hc gݲg1}d_	$ydmG|ʫ4~3oM
ӒE77[8:2eJN<QzHiZL7Y*lt9yu4iͦ0iu73ize֝iot4p|8JRR|1\WRmCm^NGXXxW&Idw"GA+H۟u~etL{7jɶ=SA 2|?zC|sM>	k{.14-?ZyTr`emzr)!5
|էrMQ0FAssoKХN󑼖-	89Zd<)azM;A}+PYm|GΧi$d4	)gxS<*dcn>ٽ7JԮu4n.ww,[qÚ(NK[{At7:Ϊ|RǞx"0C#ogG#1sy
.+,`ХcI=]۔KrryP_RV(hoe2G}%-',Z9Xrry5'-]I(qmոLw,t/<}k_UZUޜtXhQ01䥩="㥭7۳\	Z;TRMk.ɍ;;ցV1Y^L&)YA5(S/Z[ik
 E98ntR9Zet~)g
.
VOA'A.V=!4_ivT#i²T}k8MM%5Lq~;;H<+,V0]/kWa%#
"dܼ\\tJH&yokoBc1=һAp8`x#,X<jLiݟxJwmUreGr-q&v7e9
:Jdpv55LqշYLu֗643y7\YSֹ5xr^ڬ#nNટOί>ՒJٱ{/kG.wc1U_2>uLyxKss`CVd3dД'Af>|꘳`NH;=؝#AV, adSO"<1\7P
@(P
@(]QӮ^!H٢WdV9+ଯKO-'mm4OjrvӼOWB~{9-%;bmYw2L"`$axqi8ZmHiĭwRH#XsTqO$|^Y{
lRÍ\wryRI.HRXL@ʩ,K9E\ yjN-Z%NX4r1[hYchшyw2O}~Dc73\ȶ;#XѲ@|]2/&.~q%sI!NGAR謇K_WEv	s$BK*Fch`NT9ywMlʷCjv3$K;ŌV;zWՖ^U.Kֆcs	Z,H7}	زj[sS^sʣٶz#/6w9ۏN~u)ONBnipǻ]Wٵn}zU4Q;QapaGs!HlT8bp|:g94xd4_	WnOydD]Ox	f[EmL{7=ݷw>jԪ)\-wo#4%#"Hpzu3VXʼEZS֨^IϴF	VPAUcE)jQl,䲂ymAhcn=oR=9<M*ƬZwWkiznJNb	o r0|r*]dtuhż^u qH.Iǀ9Vy"-Z~ljt.#-Y
ńRA>UeVYf6@d=	ټ83ǦdC&bwҽW%-#0$V57:ڹERIksovƑg}saU}HCiɵ$Gi\Wp}=1ou,rIq-:\L&Hp,bVyb2vOV;;"pφȂqVdUfZ㴱ݔљ\,+u؇tnoajqRE
lcFc$*4#&Ѳ-/4脂m<g#CT6^9U{Sbcb$xPTx*̈i7jtcmy&-F3E^d<7<0Owx'{މyU:Xgx8rWPv<NELmzʕiI9c`!,kg遌V+֭ũ{[s!$yP@wBG嚪&Y扎XOlk[]]ʄq8"dT2ISۉD(x{*|#%y\ګ9lY̗%8ɰWNsR![\qiz
1~6v|ǕJrbWiaUP(<IIL˻O_E=d	񬧎P:UBP
@(P
@(P
gHT-\d9OZ<w;QU6J0,H,鱲<Dq1kXJ,$3Iy$XF}K˻>kOw:zɠi%U_je;TUwqnH$쾕$	C&~ixvX6sRM;#Q$gbBrAHP1ӊH,D]$X-J{YY
09PII̗.*>D/5I9vOc>0ϼF:UDwQ'M"b!-!\0oj;n7,\=eXA%;G?3D1U֔[DnIa3>w.f=x2	dH#*I*߂^8ۓh4k8:	L'{LŊ9GL,qDoL9BG,r3JŜI9䝣J~Xl;=jc߷ngeT;ݚAٝ**9nmȫƒK6BMvyȌdΙRA # qUIAR-,qGu.դe4R2+**YfAi_j:?v7\mF}ORO%;¤f.H<Nqӊ,A$@c9.O(x{ E
3B\G.¦rN>)*dbYiV3c&K9sMD)*b0]6д,L'N_o-q[a!v+<jX❣:jRI%[vbNLdGR9%r'4HٕYQr6<3R*!vlt-9FRHw;Gy+Usm3GGYwȊ;FX4IKq'CO`ܳ^#9'iU$S7$B;Ke謄3$)XK9e(=݌NTyݢLNYy,hg09`yzԬKԯs.gtǺk`rF	M5^UEݘ^ikqјTLKFV+&u{5+p,i+@YH9 9NwcQ昰"#sI;ݎ5DEq0{aTFr&t]-"G;d<cy*,UOݮHe4qp̅xn{l䃁N*VY.xS[[[I1[)HyAB_tP$%Iy٭+xfܮO<P8Z~dwP7A2zz}hI(ca2Ȉ{YAԟ~5YI˒ъa@(P
@(P
@(P
@(skpͼnNOOIHof*w<0-M:
mw"[ːYp2%sI28+fZַIsz.y=UM]iyq1L@c߽36OOPP
@(P
@(P
@(P
@(P
@(P
@(P
@(
:}ԢKn	8#t?Z4YTYZU1IQG*lu0׭FK>I4[ֶ" %xgQHNJ+ɡX2$;xq(1 w&fZF8
ze>Y"h
O4kNу"̛p3灜T7J㊜d>n"G3f6@P
@(P
@(P
@(P
@(P
@(P
@(5kQ+$`ÔF
Nӟ:m<M,XX
'vy?/_Q*u"	UWm
lc>*LX35)8}=<h
ZW|ȈhFyH :A(	h^FNLd~B'2IP
@(P
@(P
@(P
@(P
@(P
@(9Zqi{qE!MlY`sZLÆ3mеRE2?\V'5Sͥqi$*0d	$$ղr9[-l)4YD8\)኶eN۾}dݼݼIeޜ1	5&Eyt!/\#ky2s vwI=Sש=Oh	dfZkD>@ m\pߢ:&BP
>d!\Kx&Y3P
@(P
@(P
@(P
@(P
@(P
@(P
@(G;.#oxRUifڡ((MuEfӜpO)ٜ!6r,,I"cO%wZK&BP.
*LP
@(P9E=I	VGXגU`sSYM=,j0K
IЕfm y>r3gmf~%Nqx?֥;Ve$sam$]*.cYq'y7p0Gӡ(\ӻCg\Go
&uݵ'>z@(P
@(P
@(P
@()7rZPvnItnqcSuHm(Eki̍{-9zxUTͧZjđMrmE2G;@Lu81?~S{R{v6D{,q.g$'tqGj"1HL1FIR['Pm#ZU)b@sg C)GTfPOlu&9@ȽG[r#&a%!`9GS<^d
J&n)<~9"i]b*2dnp?j|o^d0p	'8TjD~ظC#Y$3y#RQv3~~u['Yw!Җ5E3ǟ5%"AJ(P#<5ԋͰ?t??CUw6ť=sVO?BpJ!ަ;^kڽ3[p
rUʎ})'rcvwL#-
I=*umf}(ZagSv')]I_>iPws(;FO.sՌI[gf1!xr3ƀ{eLU .>p	9/߳C'vd6|z@(P
@(P
@(P
@q]f9xv|̪Hʮdx u#/ѴVOaU-YSOǑZxlV6ɸjQb[:18>CæjcwL֕PmvtQKn`@B	ghu88j5-֑¢u13=G4jӮDAY[Mz43Wmma+XmcE
m@1(\)Nm4"9ѣ?|cݧ'gAV<A88L8-TY\~C4}M%uIbCp?sʞ+NveH>D~V?"ՉCP6P~|KO6-F~4\3hIBܧ>?)?Lp[?LJ.<qdj(QO_EevOsJn	aGC>Ơ,2I|ZIP@(ngTsO?6^w*K9˿(	S)@ܸGV܎Tr0G>.֣HI~:%AJ@@<(,"+2ʒ:P0rA> DQU<
HӠ:Pw^*.d]'q,
@(P
@(P
@(#+hȱNjь*؎hψ8?M4PFܷ)$Ecr\)&IdaM!n$?j-/m2Nd#`C@H6Fv|Xq?BPwa7ʾ*9'2Fdr
@(KP6B`9GƪѶ)߾WBxroP7c=)\/8ٓq zzWKRF'Yh!uܘTyUj.U_ͣbWrG_9(dI;\=R9$>(ddHAP[G"ZRI''4\I%D:")EJc=Q~6"6TRQYJ9TH^TߗMYy??E@?_U
3:4wxc7ttcuw!ȩ5M3J9¯ӂыCmiJz_/̼Lx4roXƄu8gNI_Vච(@p23@(P
@(P
@(P
@(W62烟
YhM9S:|P#,OqUpGL{VV*]i:]f(E,
u#!zcp¡M#>-OwܱzsFAZc	P;d5m[Y
[5_VRmycky^Fdc:c<95eq-3^٣'lerAc|P.[iݖ]B(qGL@z4Ȣ%ln}]KCQ7IRp߀#)Lj7ݨ8#Λm2vP!Gᵧd%
]
8l,CjzᓃpzP֗hY}F#յN.~4V5w_O
#qMlΜVŏ'TtI^4i3Z"f5{%thIEd"=6B\<½.)'/{b~c
siyTPH;O^kݸ'u7ǎzu\G`F^j76[irwd`* >uӆx9Bril^3W0;X`&/xf\pdksg|v7]ZtB@f)3PIݑL)iGV,u3$1=ֱNLym4q3|udQuHD#9T4U*TJ4m<>TU݅YH9=q~<yөEh\r$jq,gy,,,h*&mP@(P
@(P
@(P
@(
FݙYTtE"䶳~=mQF8TݘbޏݮqaBmf5)2Qp@\ӬXmYds#ɴn,z0eo3kϾFUv'ϊ(M5]:R!NOƑ\[޹a }CO%TLޠY*T*|?F+O{"%P>?B?yT&DkTo}
LҶI|1Zps7fx#>sxn([ku߽bġ-)I_3ȓkr*LcVo#rQiSFs~xMC
aTGbZdoy]-4ծ	O"h.FGԎ]Bs.$Jy$99>Y{'<̛d]GL?:n׵i*Nz>5='f>ӒA,#|^ݶ7˱YGj4Q
:xᓨuI5˓H#lr'M/=ǕJtUduŽp5UcVW0]F#ǯ9ϮO%EUQZ>FF"U	`1<Ssv-T(P
@(P
@(P
@(PGZلK4{*2
Ni;{<]=ɬɧ9
#`\uzkTKuǿ6ϱ'2gsCeit  pc$0@OwiXE4le	/Y!xďu|ww'Tײ-6/w&M8LUwT(-'3q3z~4WZ\$elt|?sJC%
FRD$N
JP~gr}!\c[MG.xr;@#>>^3;cٮ?,z?_9nuK"z(++y.[jƥ;@=>LbۤU%v\om+H6qCx)2&׽kV(1RYN0W&|}X4kHq7?εƔdn^):<Jܳ1'Ԛ9۳Z(kdrOLWeNq\s3fEsH8F>t<ҽ~¤T&INvoڦV7փ7¹vhOu:qvg>Zͨ]3EyzG"{[kn,(c7m|I>
<Mi\ٖ%}K}ŞGy!'a<ǘNqFݶsy$b&ە
H*qcϦO5V{txu5аP"l$<\*t$>]H|wU[W~㏖>u6,rvdQjPKbS!bsivpF͙ib.%FRO$~Ƥ'}3i~w1Z
sH#\pZ5 zR5U㞃8<PaG.;FO㧨"]ӧ{9cܸ$1o*DD,E~F4*it"U#9>C@[f9UN	F>bP
@(P
@(P
@(BP<u%{NrGGkY/?H#3J&2
>"w⒧x>wɩ<pG$mkm(hns<SJp8ηʯOS,/n;=]7Qw~cP;7zuOl0Txs[77;#AW7Q,52V+77_tóS2'>
@z(HWSmFqbnQqs%ě(<
ņ8HIXMU#ɴOyH3n|9>:Veڔv*otѯnlŬʣÙ&*rJk{6I;}J4t>bLG޹eUfeOĸ^Ans9,.T;3Z_OSłTo}`/!3TP/z\sF_AY6r?O|Y?~t%@e=96M5hڄ@QkcF+]7x'r|OԚvs>@O9|>oܤ=@'54[wi"C"e;`I'z*"ssv)u-
Ɲ,K!8dwmqqg5%JG
m%T呒3X1	|h	⹇H'9V[pC*2r0@=GD+hw,cwdK`(09{sq:TɂM`698H>hOI_=$ܡpnĒ*Ez:<mB+JYS,C.kjs{	XCnn$W|߾wGzOE0f^@ZP
@(P
@(P
pS#
qzԥ
8wT0:S<2hr}˶P_qAz9/lVmu}>k/ ~uxMZyN:dy3F;M{p"f8XHO'º2fwK8<\_5n|{:(QZB
Q+gwiz]$-p	%2>
5r8ƗR{/DZblp1XmMPkivGubʲd֤oB`:|e<J{
Y^W27V95xJHՀtEfRT&ׂ&<<rD0shIuk!zΩЋwk}ͷhha
)5-̷t/&#")gA/SdUVKk9"'P@NҞ9#z5$o~Ӱ/>B bI#Ar	=|nF:ZbBd s=AD=IA@(P
@(P
@(P
@(P
@sd.-\ǯ5V:%"8(JH*b$
>KڽmD1XoXpSϗeXPEM9˿9")VȭdN΅[HrrIk&G7lvL+U][-{O>J,Rz^vP
@muRqqT>hA>۽~uƳ7][YE!N2+d򮅒{h=ҁJĮAυs< VjHhڄM7P6^>t<Aם7WWz}8tr?ΉBjqR]K%]]|-cIS#F*C8N>UFW~:06NK4p]P4ы73̬"N"1Ρn]#[3<K;BҕugVܤr|:o>GIy}M-{c<hF3"8&M%bLRHԧeg'm6eNpЙcu#RfFwmlg>MF_jT:;0!#><΀P
@(P
@(P
@(P
I\G1D=QSfd1ΨL:& jN[[]d6:_Otvx[rcu>k],eEf+- ŏ+L8ԘI3ڕRAJ옓N
@(<sn0sF;ȲH
YF0Zb'ibQw$%orL|uQa-qֵ=bҬЂ EJٕj5\l>ПCi;[ZYe37t]P[%-kMS/lrsMsٓT:ԛ2HC"r,r#xY9w^*;4{yȞ4 <cː0A'|*J6ij;=O?smm#=2`E}[^߹
mkOgd7`A .X3H3bɦ/ءGiu72w N&ruv3pFPq?bsol;4ĐFON=x==P
@(P
@(P
@(+^'EJ+"Oљ3:{?ux]"P
	V
sQ&Rэȣuum\pvc*psZ?
O>Nu-r`ٍ[9?Z0H=slј2fʐh`3N<}%g5+}݈<J;뤰P
@(r
`\:vIl}k4vI5(v!x*JKlnoW
1:C\íxrQ,Ku5وTcʱ/6uLa}}y!Uj《F[;z9-Yv#k{^mXdeb$.BuO9'V}n.;:Ɣ6H9e[V"U#f":&s#x	083~FI-RE,k"
 )ߙ\Bɵs5mklA5;[~A:>)=M2W[x;"8$e>Ck2̖+K+_A{jXۃ޵
q[BBj/<S$ܟ6-M[kbL",I<=٥9sE
Ҁh
ʯHAzq@wtmA5=:+`<vP
@(P
@(MH
RQmZFʋ(2N(o?i#IG[k6s\4&=OG|ڄhU#ÍϊVeU,$#+d` EeE,GRN	I]PhQdƒq횋.>}Q43T?"XE[?FgۥAX1_1u"9嚲9ug
n'<P1xƚlI[51<]v`cֺ4^;-*vSlwI$R4n2zUK2Sp9g멜eL{ۏg>G1\J#3;v,ǩ&IR,b
@(PY+60IU&%DDHxO"؃|1d`VŤK	h#I$QTy$YdK$e^N/w|lm X2Vt#>Cعe	:xv`FWӯ\dgٿف']2%1e'[t(2@-n?v9FvGN{z1\D;cX_Td(3?[
Z:;u0n%e=մ.B9)daM_yl}@>CΣK^$eR{sH|@?>^^"F8zt2%S\~gmk?VHLuqu>|T)zgZ[SEq(d8"1G:nVϘ}EJ{p]mןyv^Gik6g %UBeV26(@b<€-ݤI<M$o<\q.:UT{p(
P
@(P}Z>ƓwhBžBTP~ϊՃ#)]_]mh[09;Ĝ?#DrZs7-cp̶vn~>51<MK~	.Tc,o<7v90@cgN*9ͷ!74(*G\'M6IsF~`FG'@tM,Z$3ſp7cN XX̷I+IIwDp:]7:)xRU_亖FxV!}OV3:}U&b]mipgʭJ94dv!003qqTd{6Xt
^[v\pYp|Ǖi"pI{+gk#X`gdrfzgfeM&CHFqUKS<vF**$u`(P
@(Z}~Ii[!@akSUlQ=w&JFԢddu)g4pW>ӎQBI:g?C,Rv#*E1?rvZ]M6{-;N{y$f$98:te<tu/jJ
*3.kӒS@=FCnVOy%Q/SsD\$shR1Qe/&WY$f:Oq&M*ߢ~B[(`7
ޟRߟ\
HY<BZi#vѨ"g`2:Eu/$6n./?Jun̊&MX(8`>Gy3\'}Ƞ12R|J	^.@K@(P
@(7VrYr:=2>CV^p{[iчyH5
)y:XI	mfH؆śSRIISJ
vWY{
~`;`
2v̌Hv2
c|(
B ]By|PNMn`'=hv0,,59'jKd^y%ZԔKrz*&mACt<y:&(M-2IZy3=$qm#tQtp9fg-#OxI&{=2?PORq&VP
m;*eœj9,@qNz.NNxIlOzsj;}ܻ2|wӔb͖aIt
^W4ۙ؁/wלy2dNP{YcfOܚgfu[G͚鋺AcyY'Uԇ=E4{뗌܎cqg8Ƨ4B媗DFF<MP}s
Hc7=YCںII&"G,z

Ke9c7s䕂zFfV+fkQruɗaLǿ:vݟ*WDND.̫kUj+.v+OÆTi6D̟_&x{%4 X'
l*UQTI˙?ÄF?SZT.YIemJK۴mTPNK5i$7=.Ȓ-E><
:'kg
K";XnM̯SN9ǽJc9EW
Οiw$tL.
rE˼Mj` 
>yljvnسZśs<	lKׅ%#8i_\ƲL2$|@ rTJ .=hP
@(P
@(P
@qgfq<	$wwJp}pEgB5.Yթ7>{[!FgpO@8g<5Fkwu#u'NondVRP
'R\~
%an`y<2[}άmIk֯\\_\i){2|LJDj2UhƜ__մyt7ṂNH,V	<[dV8t5=_lhڍ1#08A<#&iOvOhүW->r=2:gqO1
]4y=z=OZ.;zdtE%nHΐR|GNFlc"V2*2(S:Ru۷ZcGo=VTvq<)R~Nv K|%g_Ah	HYO%oeVV?""Y.hƔ Gኚ*7d6|OQ7@kZtg(q"EWgD_iQ\d60h;OǠ‰FI.-qvdɧgHNg3g'T`F͕MF*\{jɢjRg3p^L"qxU
ϲVH;RJpG*}ק<yi:L";5sr>@vP
@(P
@(P
@(ϟ"Ww_ZC7ɭT+K"FT;;WqOm#mA0
AM,hP$]GB"<o$3#48!M=8Ko#5.
X
@(P
<wU&Y
a#6fV+fkgBMķgLZwhBOm弍(W\1Rkfz0	I=r=sυR%]J=FO*^$hz+q3QFm.CZ[7o"$SxR'nE+/P*hR}New\jdW9,r`Zw:1q|'{}Ǝְf
v>8ƙaC_tf{g-̮lvwc3J{L,z.?;籹^]:٥=n\#!xҮrGI,/h8`"Ќ<(	]Z̃
tb,Fw9s#Wz[`%7~4S&
0~р9/kqZGk+B9#B\x@Q="!2Q(8?yL!]moIr\17jD۬&Wj$s韽j}r.BIN1
$g#Ky҉{.\uϏ*$Yw(;X`h
P
@(P
@Q\K.@i
sUN7Ok}>ZG0= 8$ƻ{n)]vHS#wގ=u{g^Vd9V*|@.dD}dw.6`->Wa?6GҒR,4qɟ>+"527ҏ9e+/3IA|
uC$f%Ӳ:P
@Z#UJ;5 (2(c"ȬdQHڴr̠d/l{q9ywawyVOgjJӽ~7`x(e_S_yUHמks%XG8>??ʪ_ta?nkp3]/?IqP}L.i>
 f+dO”;qU{KZ<"LD+3=
z*6
&{"S7
cH3gٟ{:>=+۫hxcyD$*6qcޗ-,M DKx	$dN23Zjʴ
C˸VIRv;A^G"p`уqu<Ic{`Z#G+x=hI"n *
.a1p&ȂIGPx61᳸l6(6$@[ws4VU,H	Bx4F9|3z@(P
@(P
8dVE?_ª̍uY5
H.;x=3d{%۲c,58.?]:snYXś*6m۳״OS$S|aH&?T<k=pR<7ZEǹϭr}HҮ&P
͕f˶TOJG$,&:"	l)]Jr2g:@(-4Q[EfpWbq",ofi
>ir%VuEy2fJD7;Ud
ŕIH_'eƗmkbs^9pzXZ RZϭǶi"Gް̿NqNmg	4n|9ey&ѕ=ϧK}iTOpg?C5Uv{/o~GEnc~6xԔ*=|U_L__o\¢5?^>䚂mq4
qFi9C<($H#j.Uxm[m".CeNO9BreNVKw@6'#xz5>,%[Dgcڤd#}*1V-C+>f3wG<R[N̶۞<uG54ҪwO-u}oX0håm+- \u8|<@h5MxTtm$c$瞹=hI@(P
@(P
@(Y*
{"x-yA0s隄<tN$9f
Pߧj>NP
?>#'9V,OrIs?mO~]%7qvvx:Cf_|Wi^$ȿ\*2-hRM:@d]cYd*MȼAx5ӏ!}@	`5ޚjѠP
@]X唀|+V\dW?RkWV|\~HvvvZkC!Tl:G,r<|G?
JH6Lmd EoZ9E?@),wP6w̄~s?oE"RZdHX.! p>§buHq-qo!B2m8`~4w[vأy,"X(8=Cov+mQInB+0?Dԇ<)5.myֺb3
Kmq}J9m?*V}gجZeIԬvݗ#>|gbVV8piρ8@_!ڣFw""8Q>:P
@(P
@("I$G3P+-9Erjh3F
6H{yO[#$!!wt$SRErVID<i#ߧ#'¤gN$]F#@ilQy$MoMvp.^G.v(@`I<@N5# _p%E؜C"ԗ6K2@K7>ƛ2`dq鞟JQ$[*J˨N8^~Z(Jqn\}k&<3ǿf'F:EXT+Ym<2GSZv|$5(=d#D=1dY#hxLVd]TVy 
YGWPAS"&36l+&UTdQTdM#	NZb{#w*p*1x7tuERؑ@(/	®3kʠYpw,7#mQ^c3\ڊŤZEoc*=8((Iɾ{w89?մNYPTvM*Oѵ	,3N_(RT",=N96 k+ixF2z.^2q$.V#;ƊʼJle)W@ZkQLDWq+1Fxy#1jFgkxݒK^54K469QrN^sc5:]2͍J.#Y}3TH{ d}}*R,u
5M7RR[6h"DY9B)?Ϩcޛ[3jr6 `ct-Ok/~0Qċc
Ogt*
+m1]Bܳ(G$G$r08;;5K}䂄.OOsP
@(PDŀa#(hKsgt4dPrM3+TsevficL3|q|PwU$i	BfM[L0
Ap}}jڑ?rr烳~׬Z^7v+.|ΤH3'f*2H r=
-}|
@psO9&2qwLj:{I5Zv*KYaʒ;DվG5c&ڄ.―bYSP9Hsz7y:}~5	h;~ywD0>*8|d~&7>>ottxG)b<>C
cB.߿j<j;.Cr{Uwo⭏d)[eG/-g&xkuX%hLk{mۃOCYgi3ir1Q8e76'2q\쩚͕FACX#ِȯ`P
@(
*Ƽ8ϕVR;B"O2yy$홽ϥvWDA}KT)/%%>>'XfG\Y,кb ê5|:qEh;~6~k&S8v(#
|ǚoxMHYw{??_SCi߶te9L3Rn{<PX(ԿaNnixOG_i^cҨǴVqJ?ɥ7_r}ı	ݽ0<<rAO\Ut4h'Ĭ4J-Κ9f.Fq:(j42'GuQ5w@sx'r#܆})Mlҽ絈%]8\uGzUR["XEP$ZQ)$vX#Ǩ};VPc&)_t
rYr4gG6$<.@iv"W/=y&Z@(P
@(]Y]4WC a&s}>W$"M^iq5f09\y=:⚕lgmg:4!&2+8Қ'	UXkۛaoqG$,Al (ϽɾXntt⼆迾`[|38Kٶ^E@["q$|c*ib~DC!8C/ =(wOm7#Łz7;½a$vGȲm5IpbOx ֩\ݐ'Ғ<F]\];Ejp8#w|mJ`^?oh˹s)%3eű1>~cC*c[/>y#I!2JWNV+KcP/[4\Kn%;ݹcOA^sgK`O;މF4޴Aw$qdV.7po<q%]BMxϼ?=kЌϔ\]2XkNQʰՍ%h͕)fUP>{/gYr5rr%}f5Cq1TKJP
<Df9؊%W7h-$=G;'eUu
MA}D_տyv=ٴx통&Զ0<lP=6iA]Cje'v{zv~߳:aiRy$kRÐW8=8d6|#:>]Yifax|=?M4i5(Kߩ	bs[^G?&6ǞŴBH9"3㟐
֡3P[zk}>㞊NCy1];9J(2HJZ6#EMu_P7}8֔8в-x4xH z}g)VJS1mmn.pDe:7nc bǵ8Jb.+3I\n# d#qIy񸵦I4{]J!2)H#$d3Ӡ⬕ɮ1^DwkiDM
<?LTcܱ!/rǞ<r8/i86]Ǽ%EV#*PGJ@(P
@(P
@C%$;2b	#9ʢe9%I%Bxr1gVPC'Δ<m;;K+H$&{3B>UT_-D0_iWs"=Ơ2		SLvi[3Y$eL@()Xͅcuƫgkg]>^Z=cztg`j9@$K v$0뱜cdx두:Zgh4٧#UU
Gc3~{Kdl8cTm8WDto8P.E'cGdҿy0hǂ,%҉yU-߷M0*,i|i#N>|~@OvqO^CƋЙ4W|}H%<9p+DlrM;$>yy||T~T>ڎe؛KfBAuV*Nqǁ#IAJ8"oEh-S{~g
c	Ph`]93bxj#:=Ak_EE8xG\td3TY(nlK0ֽ,]=ǿ(H!9٘,цk	8
Qq3E1rE^ǞWBzWqLMIR4(WAO<i?ɖ8׈)d~}쭟g&~5I~GX.b
{bW9MM[45ɦcmƱrD`#9ɑI"1qW7lqU3t=0qW<+;>~23?i/8>Ot4bcV<x1>fS3
~.좺x_ԵePk<nVd2)9Lsx1S:#8k߿Ж8[G I>H۷ҥ./k5m|yTnј1Ƥ8I:Tx.<E8^DLP8'<w2*#f4ߵ%2a*B̀NqI9cOM8"{MGY二[ڙ<\֮rQCLrf%@$=	g:LTAhP
@(P
@(cǯ2x*p
uRI<`5U~&
4aF-B8@T_T^8V9dPNFY&edTrv]4TgH7
msJʅDžbRde{PS\C^|:(
e6eɥp;Ɛ.09㯘w}Y\XP$q0%8$'}
1i=w-mS#?w>C)&eՒK/v{$}I琚E(iWmw0,?\l~Kc?wߗx/Ϥ_r.t_ŎEV4n&X,DGO<4er}_	=o|}b3K5%@yMw.ZX6W
ynO]L(١=<4anb'?mOj٧2$ps;{:xёʝF|9Q~%G ze
xbv	o+5,
䔛:_aAEĹ;?c.ю=MKOѦgmbsy c?zkT;$c=n{_&ьi2ǐֹFqO(8:5K<ԥd7G6Vr0q\aRҪ*8E}qAla8>>?6|4ۣ,qD܈e<0sPi{ot~&BecŀHIPϨ+\}{2k[RN}1O̬^r"؜{DY*msm2z
6a)Ǎ.,aymЍJU<dCHr5&77b$ӵAmUY7G;FT4-_OʾowB \`2p9<I+-+MO\4dE]A0=z劘rFϬ]hfUtHK6gw	GKa1K=vUP]xq
,x%-u+Nh1F+<PP
@(P
@(P
@k$i"2H
4%6}qyk<)cfdxׅ#:U[ktc9ŹʛȠ幞HAg1BZ]F*W{s}-	Kbe
Yt u⑷\SQ=
^i.M$@C.Wn<Ubi-!tiN#8@=9"X՚mQmiF8=O<s@u4dBebOl*4k.yF?!3^*LeDmH)?o1ǻߺ-",h*Ͷݲ]wLq.4stY-6ߡ?UZ3~#hz	v:ʒ|'/T7'nkz6H[ؙ`Kؚ13+=BOZ"oIpS~![&g
<19,U3Ə;z_]RԎ]NfI-BYIdƓoSHyIqX=9:=hU{w8a	zM>}ŸʡV(.:YZ4,.1@U^&e-x	{o^6y$I@*X	 qŽOɜ/ZW!u~{MZE+k5Mԧ]n5/&,iå<&Fֺ
"=kxfiXn9ؾ\yr<6;1XW5OÁ~ҳvkҹ9c!?R3P/b6==WeFI=0z~&rtY[˔r?/\x
6{pҰ\[?|>PtaPdl0z4
mn\Ff	?*.&K[]@ପ#ED~ѤE$@X
psN:J2>J~l	(G1Un+z73Oz'WBvX"Ie
nHep@㡨y;J5;TK7FzW7o*,bNm>}H.;]6RVyXe!1Ap*Q˓&]QBTR,0XqہlI.D]M=a\p8I|A'4:KD%q8=	iw˨{J#"$@>GNnP
@(P
@(P
@q]f;-XKdxU<Vuwߡw7H) h/C@$E17j^CyWR6ָx	dG^EZ7fբ)o*!po\X}ёXĭ%jM699G{5fkF)FYJ89A(qGZjK%Gos5s#fTi'w5*OPTUp)eBM
J?^M?T*xU4e2ucCtZ1rte-43\tQ$L䟅pLꮥXd9YIhG?*G%y`u#Gu.&I[~~Q4O̫!Qe&wP+BCB3RI;G>nhw-[ГݹP{cju~EJ-դegFsUG7l 
q@h;( 
ciiqwz}0w`d><x֒L1E@DUYE̎YG'l)m=>^?K2+$=699!z)Oo0 t=p=}GkZ*LI>=>l+FXl|َ=0||
q/NOp8huSQz'dg28k}u٦x;F~<3[1
2c0iDI-ӽP[ٻC*1:`VToc:}IbT;{	2*1Vr)^1}"isM鄲0HʃzTZeZdM{v:%Gَ8IHc'<U	Ά+n+ܔ
#wNvc<zhC|Ρ,-@r2xL2HNqN)"v2}n88<%yc$q5ݏj(cá8,^ksoqjDN򣌀sG=p9-QXIm$PN\H:P
@(P
@(PuhfEgbz@Le}
[sVRYhw;kzT\OgpOrAa|o_i"%ܮ}Ӝ:`ҝqj@~ʐ5D>g13yUR6ݬV/h.K猌|1,LH["KHvI2H3@tm,-`mp$Sh+T~0G
Y</e0*Ldu`$BRm+ۣM'̥p1g?ΡyQZWߑjP
9!I:1)
YU~T*@WiÂcV92Qkrc~cxt1J2NL^GEn^;1oy֦+s_dj8$4<R'fUќqԏju/Skꨔ`Sf
S8<j86wUj^$(k}oP]yQ>c8CVmzYD߼:
P#?0GWm%]_=#VN2CK,T+@YА'>E*B\fhstXx#uZj6Zy0($b36#bi&TOt,fڂ-QwgOgJoYdV_37vwE5[s
X@V'Bm=2'ŔPYNǺ1 b'Sў\I.YFM.;]R+Sh
É)0OFᚹexmZrG,+$y@AaY-{Cg3G `xnz~Grmo B\Ԥ€=AdKYFe猜ss!@[Bh''hP
@(P
@(P3ʣ,@d%fxB3S=0hKMrdIHчReLfI4/#(XPm{2A40QRUް^}|*sy%*m=>>gB`()d!q0??z&ZqJ66|{G
i!Kr2ʅ?&Q}_Hm^KU۷#ifḾg$V;\R
a70ﻉ(^0iI{ْY[@7g*J~T\Z-h
RU$oUe!y2>ޟRd`NUA%ZLڄٗٯ{B@oɾΫ:"Ÿ/NX}W_N%{F=_qXXM:Re-N/HE^U 9Sl2j:^w4ƨ׀qado9I?~ide)+#n$`+sd)tB,X_mHwSW%g/y<2q]9\VXՈP2UrpbwGBn$T'J#ƀ:%Kh᜺9?QdvVaX{ۓ
:\,Î@PL\Hd$UTPNx>94CO쮟aM1(P
@(P
@(P
@(ȸ'{ٮ$Yp`:xTqwvuGEAA4o$$bzgj(i<RK3^@%=MР0 c>CԥF9rDW::**pxT<K^I#iW {'^hM@(PIA$v4e4Z.ީ6KRTo5^\E{͇?Qp2~L2=IEG?:FSc6ZfM皔V{5&bd6,D/?>&/2IVEzQU Lu4Nk͋AN^2cl0~DMTu*]E"QR6cOO/HoO&Wj6I&ۨ4+ސF,xS~Ƞ5-Ok%ޔd68'G늮uFc:Ojci'A~~"H>9fEhtkW1鶦kdwp YP{<myOC~4+qy\Z$(MpXcW9m)6p&yZ&;A3Ѓo~&v"##Țoo
}ݼId(	hP
@(P
@(P
@(P
Rʠ`IBiW$E‹| DJ|~~T P
9g/$E>DQee.nd۴})dX{QSq^=~;;IJ']~DKC2c-CaY}Bs/tAó13nzdZ.tEt1|Qɳ2ʐHp֤)4zK#P	<Uz&[DL=L_*J
CmyQ:*Jyw?UM?dM-\'9
]I#L&uKW/GB	*_xRMpFۿ#TF8"><X|*K𴛇m)iIu_؂T 8LJ$ty))R&{[[Ⱦw:as9R259Z)OWcw@
RO8c&bbAqxޤwo"NU8<ws@t,㺴[Ē6,Qp=8;P
@(P
@(P
@(P
@(&Ls+S6Y>U[:KkhMii;# `8>bĮ<+Ly޾eK:H$RdU?_ΦъХ"wQ[kPz/p3R"Qqtl4Zk^)RўّO񞧞=(AُIz4LdX4&(rKZ{EٮT$3ZjWEw.۽<ogr4raJ\>?1_Ɣ5%"
mmaJrG͏Oj6Z׉ГLW\Dn銚}JJ8P$HQRQ3#h#U$P$ۤV7O:U(*j+L~f>Eyx"&ی\Z!/ґbPe-^i}O-p>[WFф-_RX]Iai;v6ώqTtlrOdWZ~cݢf rG~*6hC.^5l6swKvf8?Bf{NLrqjPz"ZJm}ኲRvHOρq9"Ьڅ<1vFdqRT݌$fD^]|<8,buwyU0\>:O'ƀni+(uRq0錩t=Hz,V4h	(P
@(P
@(P
@(P
@(F{iaW]JqJ2hs#SMiv-7JHZ0cR*1799>NqJQ3 rN<yWRPqvr#L]n_*UH'#--Oi.qx2'*p<[ICǨZI;D+0@Hǧ&{+}h
Z$^q¥f}uTSydVwкDP:0XŶݳji<$ӺjYݎ$Ѻ&1rj+Taw kÏOb}d^ؽV1+GA<h%EN6Lfpt>TE-.Q\"O%!Bd']VNJԝ"[Jkw>'?S41<-RHp+ɱϭ+q%g>)j&huGo{[U<j+
Fc2Y!04a9@sTD);afYejkc˜cQNqH*utnFDWC=I:@(P
@(P
@(P
@(P
@(P
@Q໘;HI85W͡PUD.#.Z$-x5WN.>e)9a=Wر@_*LȗH@ɂZC#&m^\i'zPĿ<ז?Ct1EJi>	uN(*9<:q&O#RA˨Ic̐l,#O<tyMc);uKRTgeۏقy񫜂UX.4i"ْGrpEF|4	ӴwB(U((ٚly#~Obpk%sҾ+MJN$ӥϸ%G85jڟޡߺo6|I?Î>B,xrKuU[gdgo9e)5\1h!",)H8z|:]jP{.KFw^L$@vP
@(P
@(P
@(P
@(P
@(P
@(Po$Nơ4lj䴺γl'pm䎜QVƋIF]~eyKk=Nݡf-wM}Vdr	>MJЖ9ӑ>|k~6Ekmv>$<I)V2,n1:*j*F7mqBOWOPlXbJGPA-PH'3@(P
@(P
@(P
@(P
@(P
@(d0R3րSсjUeuH j@(A( 78Z3xf
FpJȥ $3/=۫M+}*HmA
dA> mK$vC#3q=8dZr(
!Q葨P>P229Ѓ3@(P
@C-ռ;MݹN~f&!	P
@(P
@(P
@(P
@QWKi.3d
Ăxkqz|m(Uqπ`HEʴ)o^mq{xc,2?wžufeRd
}+n#9#
$$8̸ͦX*ɭ"zO#1یz8x:mQ+hr#h	/l5B.~3OBqМA@amI0vCe@&L8ƀ}1+%Ÿ]6t#
|9Z++}CfUr9N(q\%\,aOQyǏ!MXND֗=vqx1[Pu{}^	 88յϫ+ZG8e0ύZ_)ct=vJUy;=~GhY]Z?SD[\ڡu%}#[ϮF7)8zY[h/maR$pS222(>7vW#p@s}\cr#OI!Q2+|p8`'&[ɮ{X#,Wc9鞧6fupw $G1RHM\̑bn@#|7@(޵im_<
$0ƹiigHsoc>E<儰yt؄K=ϵJdn^q8FI{H-[[۰Z5ͳ]:Y#?	$8%Tuv|m\ۻ=s"P
@(P
j]HJM
[I9rG6Lm,?hY9b[{0ޡUihޗ:yM˓z^w}F߉b?|a%\xf_L]:q,.|H{Y^ѵlƥUdݔ}}ZW,o-(Rfh6=>u[q&%}'WXK~Kl8;sψbW[Rq^h!"U9?9ZRkCcY[f?G9N1IV0R%0j)*=7mp~|ҙm9u@P
@Vb[ܱJ,3<=Ңf*&8?''Ο1# 6I
JqFу>4w]o&i
3H@q8O\S,jcp 9#ʀ9ʖ^GO/ǫ~j{Y4qF26 @#}1@Eel[Y+T_x3$PIح1tgȜex>9,Gk9's9*vbê?|PG٭:;i-cp͝I9Tu쎙q{!':9<ʹrPz^Yrr8
[iWO$}$=OS3\B8bzӠFNiKtĦn|Ǧy-cOi!F&uP9<d@V\pU1Ko:>~>4OcBƒ\/.ޫ/Leup0
yF4R4l.#8cg$`Qd
,+$q X7Ht(	?(:0Yz1񞂀}x'InH#N	ysӊ@(lZmz3!Bk^gW64{~
Jk ֒*ݽHjA۶wL@ Ҡyqמh I@ 4P%t:-=oVAyq^\SKCзǦ{$>e$*l3<:bZvȡ^ɠt3b;VMPz94n핞'İI ͣ.%BkG8<n⨩q#R%f>l}wo.-}ST
ڍ򅕌rۺ$s7ʜxUo_kb'D/2o/x:iܯ\~x])hr$a2
co/ϡbWwov;w^7lOz1/gM׌I7dw}x3S]zgSM5ƻgcxd7SU<M-[bBX"F]X8pOJgZ*$ŦFXnw6?$Nis+w}s5,`}rNۙqЅ,K֧sI6>@˞z`&S׈zݕ#k}2mܰ(9a}0|	JK@n@gEƻ[W9N^8q%,x/yf1fN>d4nonfUxᕠ0OO;ҒҒHGSm;3[+
0Eǹp:'/Dm$ZEsfAffs9\s*!~d\Ҵm2e)H#F]޹zUk-y	n5:?|eFv&;*ǟ5I{9`	ESjTȓ*;R㌪Oh5#Iɩ0CcZiOr)ؒ^({id2TfInψ9t$QܲE/{%E1<8Q~`:q:+YyR͏s`8#s%6vcuۋoC,Wq۰v9'99-84]
L{B&`"`.7sAemWRBkretd.n6߻gh=~
-qI?Xk]ڞNY}$g?_t4DꟵͽ^n]<NiՓȗE#[]S`ȫ\$zOs'q&u"˩]4I3tԾ
YVNih؇z^)H{C9
a--6{,pDp
F~&n95
d{~kkkwtu59NNc9xӻrV}kG'yb	9mngh6Ȏ֏>$Q"<&66>
?欦k&ޣY
@('iǶ3۲+^NObks]\_ChV7XUU$c5tڴy_	aUl Vs鱲Yq,* x m~<cMPTfV^M}<36AJy`kK߄9ۏw291NG'`Fe$`$ܮs1	NɍHRUfU`(`]O9ꏑm2#JgKK˱زt#:RޟSxm5S"ݠAYauFG\((5#<RݫDV;oozbBqoa7eZTPq?k9ݣH&2T4{k*4wc#mq|
oӆsOn;8}h=ef,pU	{*pޟ'<cׇ_Oc./HitUXmdpYRbX9ǓzJd-Zr!ꑍz:N,l5[G[mf$vJ9rGw4Ȫ+j:[LM<0Y\إ:S2ZsX*̵owNeF~9qVW{.Ԛ@(P
@(!Ԓ!2ZXż8@Hkxcߟy*Uh2H;!c+;Ѕzrܢ+V)-c
L1f`ϺqPP;@okr3'bdAe!,Irz]L0E!A~1{
E#Do m.BvGڣr;_RvvZX"J,S9vT1[i=&o=b"۹ +/4:׶3{s#Fv)|<QTi&i'O4vv:…|3$w<XnyiEY}Bki"
F	!,]<g1<zUMNdj(P
@({MkY%RЗ1FHv/F<WOyW=]l_NFb}2hƠ.
>G54X@@
|wiu$])G0s'QНknYi?xp1JVYH[-φ|5(9}<h2R%(fc}?֚
U4i%e52!g)
*QwuSt4z]-^9凈Ƨ~Dwhg[#iB	;}*/H@(P
@(P
@(P
@(b(GQ@k1»cB`TnJ#zEK=>*$l<997UuR€P
@(P
@y~vZLn-(˃zAoԫ<v,Ws\Kqqp2JA ;R0/V&P
@(P
@
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20240906210711.RUo97_0A>