summaryrefslogtreecommitdiffstats
path: root/src/ccapi/lib/ccapi_string.c
blob: ab84dfe39affb7d119c8cf7b8086f871efc8df0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/* ccapi/lib/ccapi_string.c */
/*
 * Copyright 2006 Massachusetts Institute of Technology.
 * All Rights Reserved.
 *
 * Export of this software from the United States of America may
 * require a specific license from the United States Government.
 * It is the responsibility of any person or organization contemplating
 * export to obtain such a license before exporting.
 *
 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
 * distribute this software and its documentation for any purpose and
 * without fee is hereby granted, provided that the above copyright
 * notice appear in all copies and that both that copyright notice and
 * this permission notice appear in supporting documentation, and that
 * the name of M.I.T. not be used in advertising or publicity pertaining
 * to distribution of the software without specific, written prior
 * permission.  Furthermore if you modify this software you must label
 * your software as modified software and not distribute it in such a
 * fashion that it might be confused with the original M.I.T. software.
 * M.I.T. makes no representations about the suitability of
 * this software for any purpose.  It is provided "as is" without express
 * or implied warranty.
 */

#include "ccapi_string.h"

/* ------------------------------------------------------------------------ */

cc_string_d cci_string_d_initializer = {
    NULL,
    NULL
    VECTOR_FUNCTIONS_INITIALIZER };

cc_string_f cci_string_f_initializer = {
    ccapi_string_release
};

/* ------------------------------------------------------------------------ */

cc_int32 cci_string_new (cc_string_t *out_string,
                         char        *in_cstring)
{
    cc_int32 err = ccNoError;
    cc_string_t string = NULL;

    if (!out_string) { err = cci_check_error (ccErrBadParam); }
    if (!in_cstring) { err = cci_check_error (ccErrBadParam); }

    if (!err) {
        string = malloc (sizeof (*string));
        if (string) {
            *string = cci_string_d_initializer;
        } else {
            err = cci_check_error (ccErrNoMem);
        }
    }

    if (!err) {
        string->functions = malloc (sizeof (*string->functions));
        if (string->functions) {
            *((cc_string_f *) string->functions) = cci_string_f_initializer;
        } else {
            err = cci_check_error (ccErrNoMem);
        }
    }

    if (!err) {
        string->data = strdup (in_cstring);
        if (!string->data) {
            err = cci_check_error (ccErrNoMem);
        }

    }

    if (!err) {
        *out_string = string;
        string = NULL; /* take ownership */
    }

    if (string) { ccapi_string_release (string); }

    return cci_check_error (err);
}

/* ------------------------------------------------------------------------ */

cc_int32 ccapi_string_release (cc_string_t in_string)
{
    cc_int32 err = ccNoError;

    if (!in_string) { err = ccErrBadParam; }

    if (!err) {
        free ((char *) in_string->data);
        free ((char *) in_string->functions);
        free (in_string);
    }

    return err;
}
wŚ4!ݏ+g |6AܺYj+%2|/80b7>UҎlp%cܺ^Rŋs S/$-Q:tplBR#edƳg.IBU#='8V2~52cKڃ_d\Ȓ#pw-wJ75B??Vpkۉċo2BpZ7T){bܑKy@Oz'AD MtG!&M.8/4=AjW5?S"7`Qg&4#̟4|=dT#eYx^vCxk7;׏(xZr8q KW \+Y<:B? =_H(alcSv\uKuR#Mh$N4B:(LSE4p:V2@՞SymPɋeJQMGWKT0^O!i֧6a^K a#Rɗ@ Q_4 %l{Z,Hjbp8ʝUIp W_]muzDZVZ8*b뒢/)Õ-Vv1&X"; [S!0K^؅WrFᑾE  ͔`J@5Ȯ%5(ZeNm74%9S0]r`&7C8gkqc:bӁ4j%Ai.9ڎb͇FD@a'srt&FHQXCcy591>5^Gv;= uJL:$Bߵlc@"jT\5@[Qd5ӣ! ǞCB4 †=HqUDl@[?azUbi}j#{KzX5˙,C.RH2K^X^һiQ($FaYIK[WdJ6(1ҹ MLYKG7ڿwE~؛f2eNO)8z v bLk.3k[MXE+4!8)5\+6E\opcuC?'{s}yXTe#LGQH\ZQ:\6c煖fF}*[ۛ? Ga= Mȏ2┨ ع$CǠw\h{6%X^-tP OÀ_' ކoܯu_SFFV'la&kM&gH(I#r.ΰ9Un"!F’yR,JAKБ;YjBfzPX\816/fp15f`s*_\\f B밷ԭԝQ KteQ1WA˃69)zR| -ΫlhY=$H$RFRFe( ˊ;DOxY%0Lf *ZIˢ4ɃTGHlO-W+dG3'tF$~2O73'`d դWMD.˚&Y,0$-;Z )u3*77@OtAG[(.qW\6N,qIзacu !ᣉsViPwC!cS鐭MӁ3J׮ad>?8z#;G\<3QRJsyx[%0M)X82aMVR1.^xGU s%ʅ6< 4!6SK"cy?9s)F1Z<Pz)|Z?-ۘ.􌩧7 ķ^)+b}1 f`9#, q]iTiFhd^tQ8a `V"^֖;]4`mg M.ye+̛=[iB%_ K15tdE"EW6(3Y) F-pPx`jWx{ P~Ӯ ֱ& s5&o8?!D">1UTܰ}>1R5Ђy\" G3{mEn쵙 IV?V2{AMDf.;Dxtoϼ$_) |bBD\Y$5@c^74Y>ф A;0g/ K`Ak`ӐWYL :Ivir[nmn08̼ʏJKi\ DKZo1'dwM|ڦ}6 H[Y2װrïY]:%V_+)BTIi5unB}zUx@.?/&rY1֯Z3ˮDyGKnjJ1 *#MlX[z40R=nXYeB0MWt}m\XKl~FԾeɝgWAC{~ZaGͪf[z~5OW>3/$/*hv$^"Ro6!@Y/q.r7W@xVnKV !{Ґ`@*]k뵥 V$qD8B@"Jx'_`?!?E ϒkMoDl$y0b??#d1*.Dpi0oySݢҷ]>&HTIH |ٕA.T˼׮25 wtx5p!?'rS~:֮zE!lSYVh"7M~U]+zbs8qF,Bݵ{FSb޵A%G!|R=E\<ɒG9]q}}дPquDsT(1#GҲ0yy-ڌ. ḼTQ(+J'Dvfjb_ޚT{%8/ZY\k`ZD ]Ux/7[UeA3}2,#Kf.„pt cXâ]SEBWr;3wń z{ KcE[qp8x1ASĿzP{{YymjQRn#T~x'H+Tj{eZ#˝:Ze3j#ata1ke"Zap ׯceA}A{"55~<"ryME/!}}? h ?rbyU}T!b] o?d%!][* y:D4 FVkC"]@Hz] D]ۯY; Q&D:͙ wTJjQ[GR ┘ z]*V=HM;&N <(Мt80d{`s'qdl /A05#دKNOZTUWS&HG;@E뺝syxm@5v4V$C^cz*`g+Lʻ—ɄFyi.GrʶgscJs$*ד#Q8 2z0,*JOo]n1zīUכTvG:$U'ϓŶA o oӧ%~&B7v"!UZhb 8BZKSͧ6膖Is 0rvd)QqNt}RU9h]-QN^0SnHw/> )mOKUWa8`FxmDyeD=3%T~XU=a~[Pn{ v:Gr{eԛVQZ0꠶!m_NMӷدEvڧhuEj/2YI;hUat=4ݒ;g2Awc^[\ƞ;"J@ij`I1nֳ.k^U@*PAь^`o'A fX%U<ɐ'(_#?J[ӅeL|SkAb#v%s(pHn "E2 &kzA"8h 2v7"O _6Op$αA+V<! pmoMswڱ-5dŹ'A5Hq[$X^_* /K%1W5xcŹp0/LhS^!4 8 k@ F+Ӟ k9K.tCaot"%sWSO'lNyZeIBHylV;' V_0ZNoHGL F IV8M5Ō[/sM_hPw[\f>EFs9}1oO'AcSq0ڨ')z)hI.& oO1KĶˆv|1YX:6^$lc}`MrT̰;h@ҪQTa4L}G%/$Jwx0>yYaB^(9&fK*DmW&Iˣ7$&`/s0o#jVWݡe$a=kAr\:%6(U y~yX.GL4 I\K|+-UE'YS'Ћf?GqxSG"]i3B0 Ɲ+6yA ?e@׺G( Ͽt]S}!+._NGp5LQ~yWh(fk1cn9١DRfdNĥ~oи\f0/t% Sa-8ҡY٪ݢ+Ȼq.su hqi9w@4@8U~Tg阓r)b>vqvg۳7JxM묑(u)5j=48Gb:^0NSmdC6Wkp'VO)MMfCwpi|7@ ǯa?45?(/UDQ֒6SЉwM] iC%XYi@[\cgSZ'BG>i6dڸRc(}Ϥ>~6))X #h[p*34u~tjLpP/tHǰ*搌ς/:4v)蕋;Y{H҂>eЄ,j[G<[(}U cAxjyT}S_p)U8#EHHûI]S<0X@`4c>rvI^DetwBot^۝at&aaH|Q]P HFU[K; H?V+Kգ#߽fE@M *~`#ԪtJqPUOZz*%l !5r35O :PN"U𐖒ȋ8] @ Ro6VtW;$Ж3~/~QCx#"'_)1SB5܅EJs::)M"tMy`߭;h&YH|hN5풞5~VUը K;ռipH$+<'?W;eìp&uqNBYEH@OUݾ ;b^9mj?pGEkaow iu#ɂ{nzGYxF *.(EU5b5H"rFmk޿qNJ;M<<~0Zvzwt~\~mI>dq[qOmUI0Z E7fm, Wc. te|#Ba,4/ O=dyd Im)0A q)}=l|QKgFi9NT^7s'k"rNR33$!PU4o+{ kq4'y352\ͬ1Fu*֝;i;vrGs1!61@ \uĒܜԀIoϧT?@׆CR/R1.DE.ւs-&cQvn^ G/oLxk;=^6YA.sspO1ux0f$Śvo0T~W?l햣ԔA$Ra4/‰(,{U7zJ֬q™2,PnPzh=&{Pa:}EBŤ WsQVN!y"=6`9sZF gsj~Ui`a{xtSǛ$hNn\ss$Ƕ= UlTgN3GUev$J S[ .O*G)mARHroG0ד4&Sޤd)LbV f1%2gN( 瘚>aFHȥKXVapׄ YP/S(!quoZ3N[{N:Z'.B5VU'ybGc۝ tjuǕ̃̽i,OD1e%&S|[E=367$"TG̪5X?_ѤL)-G+,)ІB&% u_BO1= t9ٚDCM{>5c# s᭹mUkS볼T^3|C8¸3fa܁?Gk `rA]ԗc1͍gh;|,7|,S $ t3L[kCi3^~ehuPԗSqEx7J4c ~4a=9;Y\rYqK)`G۠ Z;0J @ $$#xI3065i~1~ $;H&kNpN`Vt9FT#]{a g@϶M)1x¡v.e@mL3#|)˰TrD\ZV0uGRҥv<ʇbkQ5 X[g 3JՐtWx 3õ5Tj},85X iSЬ3D4y K7 gO]F&`\w&{l1iZ9 Ao0%.\ OL )l~HEcR9`57vKgegdKe'JDwLR~Htu²c 262iA&;@n [4OE&G6lmN_W|(rr i1u:DIxHsֺU+jpDAHҪtE Dl^84)tr&zr@U  ,7=F孌|a**Ոa?.o2os2LJ39D `׺ R"#  M4p?qVΊ{Eez~\u ^VIT9:M2.G$B?zPO+'y;;8CZ(&&qPn5YYl5a|sTK[i2hvuq*=XrO<"ӂD~הUް @|+h[.QY7㦭KnBlBrvjP`@־I Mݩ?n'` gG>W^GH)6_φD5(h#(k".M̨(t7#MN9R2[ɑHm1;=y(qh@+?.9Alr%XgH߽d9E"f"=R}Ǟ\h+ u0RR;4MA3Veݺo^F\v& =rku`rxaCdϜ.*J"Sf5MƓ#mRl<j.k2x}fk{V m"Gfrtowv1fwFIkմI׾u1{!Km+{5@ݥL}:wŞ.ApK&$aIx 8y6/ fyi$Caa#sO[ <ՙ+jqS^;r@@ˀ]Yѝ]NG3S 3XX gwyBZfᶂN&ۢ/{ڸ\t,ߘUr8꾢bbbi! ᳡dJ^lJ AP2@u i2~@gDBْWy8 5>C ^ pNj4 vsU)O}q*ۏE'h6\5"AD]41v?q ^cB(#8rʛ^X-]c@[UƱb8"Kw* S[.snguSoKEA5E!pޏDO(*hV]o:}%:T~5 A<~_"-^zX}+B;!G ;6`c!=Gr5?޶D{+*17%RpbW!g_R9CDg #"Q΍P4/,KuKO}5ʂW*w?W3Լϟ*oS-*2>7+Uxޥ(1lҽm$ۮ.(^[]^@cvU5/ԷqkFLU,9Sev4Ab KV47*Iϧd0.qn-{?`!hFuG nqva^(qQETM"p) 9}sbBK`>2m`3j[J0U-lx^CԙuΓjivcO|ވ1x@M47[& լk.NqQ^? +e@,9Ԩx cN\ "wT!ovQt3;*fWN[aQŀU% 7o9y:g!t:tqfl?Km7U7~z,Gb>"d KQ)T l8&k3r쐇G¬.{oc?Τn*E5@V:aȒ}"{q'~튢^x2.őAh??pƳZ|QXOBT+kJc z[PF"dCnTL{öƴXvT^9Zq_uD)ޢSY "eEMD ߜS@HU Ho(9;VƓ;uR[=,Gh2yStQitz/Qm(1EK_3۾fQ qgg?P[NP|o Sܿcfd[Q£Zr"04C2.RC8 JuwC߾dx륂%_Ep` վN6ɇ:&}jϷV{0h4[H_ӌGG*?C:cfd5BI)-/>8*3{:C#zޡ:v[MV;w5kQCaD)0[Ć:X5p?G[u'[94bS9kk/v˼q%)ZmNsDCj>'RņBFSB1Yw\JOXY1`~ٷMcMja򺼦OIG>MM8rjFb>xVIO% 6niV T}Yp0Ύ?K{np%AW4`RHhZCcI5@ TCxQ ǖ"PU:th߱+VuJaVyjZ XyT~9)vE_"2RPF}Φ%nۅCj;jnCG PZޮ]TyNx qoSBCs f vepP,Y4'4 P!j&y#啺+TfX/w놻VWѕ~C$-~7fh7ߴ8&"?G,ެǾ0HxuQthKjeöbR{B `vi ,|}c2A o]M]^5B(-S5]G tΟhELG3FRGb*_fHwl4ɽiUQV!n fc=LEfXoϮ*ʅ< }xxUbݠhvXՕPuߢmN T:G"/?}H*4nBE{kOS7X&K\h( `P-cҒtK{62û{UO('FQ;_i|JYyw0zU2huMۥJ1$PUSTQҠR\ }քB J X?Е\:l\QFhɺ=1)<zf}`6~+!I!hȝ ژbpS@q-qHFKLBC0R\̦Zv"Ћź~Gk }b g4˘2\B"޻ђ,DA:V}VAr|UyJEщi4nTQ *D2?-_MZ4iwgOݚ{>p6RRy(zS.2lֹЦ-G* L% 5.ϐڲWl @A$$U@?/A2:; ' YoZ5@`h&#Cvk1נFU_tZ9]}H{~cd7j7߄V=+0F3aG{=#Ӻfg6<1 ?P56~TRΗ<ӣ疉O ط0F=/\ڳ;X߷CtV#ɔ6<_Ektwv z\XN9dYS52 rʂ,< |fs)OFj Vs3Hɕ9" x>DH(ڏ2SoIPdXPV4Z#+_X7N3!bXuʀ}m/Ν2a1.v! acq (c |IS&sx=l3MQb{QȆZj:c@e,-2JR˨>[Cx܅)Aķ=9bI#y$uAxtE?PUbW3<+Rβ⪆D l,T |cF ۩-WhO=1r83@<] wXknXj晾7Cm(qJn]R'쀳xcMjUf_'ƥ7zX>MV)̷t't@!ρ>D&bM_U$gzbr+hqԑES}ENnD\I Hrmcϖ;5@WY%S*e}䖯CV `|$C%_ݸK߾ƂhkQ4`6|-GKFWsw>];P?6h,@%P\߽fr.:5Fu!ycJZ.!NC 8G{g[48P3t͊z󮄨W+:Ѻ[Wf/-c d2 ׳# ~I\YgNO(y򡷾̱1 ٬5~%)]F1;IBi힮HΨnc-_i>&ty`Qt ؖ?{Gz;Utds;c53yt)K 6xTh*oE/scyLZ[tTȽQ +xtWgzHBպ®y!P k\;e >*OyXGL'VyIXO C1oXIo  F=2c#3MUWgqQsA'ؤFzBD1mb_忂}@L!GV;Hu0~TTLmY7fE#uS%a9 rXr:qߵw3x32<%+r.:lLNse"@"˗Q!̅&Kaܵˊ 4!rƺ4%<9Ž{(F R|#kH0tqbC|%p O\BEp|7Bkkr!7pZUSa}З(XXVe#<x :Wv Dw .Ual ϘNc'^uG&6UǸf}0컰<0zXҁ&)>AS0"x8Vf ZFLY|`UB}&0r`eFibFˌ? r#c-/J&_%/ aK >fGOŦxٍŠXLىR EWL='<4T5 mzk`!PlLԙ zud>VFrb ]:AB ~ _m}ڰ!VhW =.M=01sV8̔(sOΉM͏ZoA.5mq`.Yɛ bHo49@ uUfVn:fmjLhFsYYeSZ(RTl!\.yTpc{!%(^XXÒwy?n1n@[*-:U~<+Z$/ z&$O"Y(ﲊήJ fe0[760&_cO ~M\mз}X!2?ݬ:zRfk5w,KL}0й;O RMKm Z#|B-- \Hjt,]`Zߌ 6mXz5ɉ _<Û8#xfL<><1x1&8]<^(ٶXgsy@r[㕐;`'V",Ul9~wug0*Z]_n5JV7w F@lʸegXLpMe <"_w pEpX×wRkL"TAѦq:ln2|6I</%:E9X]{ޤ |FOPO!/sb*Ԥf/j!|ޗ)ܚIP IXNd @\/ZVieœ$V R,1PmdT?$ ѕg#7f&y>]SYŢwVpnв9 U3 K%℞Ei'bc; RϷJC\?Jрm]8f@τp)yvR=v2fz-7飶5azwlx8r|\yV1WKa)t&K[DY$䌑 i|vN T iP! Msg'_0Et*JDA gRE }664h$nMllu zٞ"¼T{Zߎ/߱뱡:]Dq.|=6Lg]87k1Y*'c/m%KL@ŷI" ؄1azD0un.M tCm4RnLʀhvڨj_* R=+nٴ#]` ? 5(ǐO\)X7ҴN:BzvĄH} F .oi#˥=tOsNfc xŵߧG)9do~'+sxM{)AKt8ucuJX30Jc˕5I(?<{# O 3HD9ke3lZy /RnM`S n߉W#?8dR۞BtM|(bGZU=Vd7:'jwJka/^S3O--g1tq@w:p:A_tG/F;Em Fk[t.C2?y{.a ZZkl~b29(hWF:@(P16 )B5}'3EjMGB~Wd>pLp_f<0%:ύerHغlhpfA{B67 .^28(jbжaEODtVw2]#./!'lM^g[hL܂à? pT`xWi\dt8zg=<k-2ҏ0':0 ڿq!_`z@]wz^wEۨ$@p$gK1>ﺫз{X 05M73Y%? Ĥ擟K8g;BvuA|zC>lNc"F<gAʫ7@]O .m)E!K膣Ŵa&]r*}t}%+hZ!-dK B‹z3<5{K]/7 ^AJWk*VM.{49&#sF\(n椨OMQF/gTcISР^/̐QSdct5Ǧq݄JuUQ r3%%}\!r@BZwAW9oq\g8(~\F\<,5@z,5Y88Gb]Ơ>oǺn=! -Xkk:撆GK Tt?JgqY .0'8nS 譋Inogo0W -R5-H8 n<fOTx!Nk;2VƿC !(+96+Rs M溳~`{7Aibb˗ uCiCLIuZ?nA}:Գ9^pI h}5+&9'k087oPjh~:?BC,[sԧNc~`Mf%׳ߍyV"pyOSLkp*/` s Hbf ;cA9agΫ XW@Q~ s{,E*tr\431nQ|uЍÜ]82 O*+u/@Z姄5:-yacR!Mo'XPʹ-?K?7bz[&H8"^ ΫnI@nZVsNh50xhv@nI'GR`ꂀb8ONTP#PhAMaq?iVٱZ\tj @ Ou˻siدXο.ߩ$v=/\oI]5VdU|Z>a|ժ䃸j ; 3Z}P654+T´VmeU_9h*wjCq:|΢s&9l2MgkdX07nhUvI~{"A7)0aDca{DTV˝ ƽA#`^L[|ˈ@|1jBƾ:PP˶|祅QUn+=1tDI}X T™Rtih‚IiZ ć-.;oľ'ELx[;j`m_yj?pXPf{Bqϙ(gt)ECQ_$7l4$nئv L.-\F;Xpsjgp+-\(DN6|E%ƒ.L,U,6~M1=y(<[Tԩ"y h+m&[͵[&<_ӸZdt2 "+wwx `OQ lS˼c =BN6ĈdvǁxS,l Ӛ2B]nH tO/Pe zȲjkEvTн!j4 as9VI՚ٔRFM9ޤa*ǎL7s>Inf ,>kwW듐b}qښ>@q9))˻6cўrM_E)X2$TW똫O١yZ;eb+@AvO gŒTօхk/ad5Kј>Ĭcgcjg lzF8*Q-6aC=L}ZcPo,OK,Z"P7&1f *njb#i%yu{gڕN Ct ∞]eC ]cǪ0+iV9zUkmKE67pAsG:`ruՎ\:FyYޠ$z;23rC\~-PYOA`YLT(JI6(]^;>0 /vA#]~Y?=۷8ѫlFj:&c9Mwۣ;""Kj<:|E_+ z}k.of;3N-vd ~ҋ+$Lˮɾb2A[3[[nBLq l9XPa_3 6Jz0rVe߽;໸(䱦.t^6 /x'/i/z;4)7"P[mb(Tvj }ހ:M&QY.p+s]#Y5㐢J޿t*G퓠@w*_[)H@t0 JxDú8Ɂ+$_lS^u]ִ5_T$xY}^ޒ-S9eM@ڈ`p6MhvhW8/1…{xmyIJlCñ9]+DƀIWYpW* 7$$0k!9#z#|OvF5HK?BP,r6"V<|6߁=u?&i&ngPgF1\hք'DΓe;/LH<8N[WɋFn JAP|yX%OPC~qm\Hg9j0;dգ>r7Pom".|/sQEa vbyXߛR$gM!9Ҩ[#@%l86f5؅>#확ҊĔ]0hH@@vݿZ2t gJɎ:!o&ۚɻ:A- r36VxwIA҂p_*::V19AzvڟzA,'~:ݞXS)ٟ.%k5Jn Wsw]u$ʱ<*ԄTev5r DNk)0ZVT8dRLgR]Y;/ƟMe̥3]nl]+z'Gg֝u"Mĭ] ~, ŦXD6um˜"ݎ9wt Bb}X4Rھע?5xp zebߑt`%fx8kL+PZ`j7G#T4Tb)Do ÏUuXw{[*uO$NBGC__Neu$>^:".liI㜒67wSwזHo;Jv)-Xj0_caAw)ɀHz^NrI+8`yD>)>> /kP4 Ƿ]! v"BQoK0j>Y_Y^ƴ°5[@)6v}1_i=-Xla.c*ݔoQqb =PVXfb_-(g\_D΀+ ) [ -kP\Td zŊ@HhkcA-2U~ Y/AM}TS0а n~ƂmA[L|+/ds4ĀCSXKO}K\ 9t~3-6bұ Z]Q;_Ⲍ5e> 2*M>??%(7rcqJ5_F*D,P#Y+8d`*d'c.}E+MڥA4oƙ:N:&-d`3ZF|jY[~pj\L=cR_@}zb= YCʴGϾedtZIﺚC72tg4 Y,` kvkZT7džK m{'B*Xqky2 S(uUbv4}_F(D۳ÜSTR{;mͲqfrl铪H3tpÝ9#W?S#|HEtG:p7º%!- JTs!:g/Y<Ȣl@Nv/[0."p#*QpDJAABtg_f_nD S*: W7 #c<>Z`ʭuJ%UxBn1%Ke2Z ?Izqlq, Ic;Z"ί\*|6]ZiV1ण0rŸۥ~CKvr L6E] ]P/ba)웱p9U"60tR>7* v)qBFto+e eA!;ug}r (¸sJxo>[كy=>Y3U;~ D+(c\Goya{fQ5)`򊨎cAtVB "(Q? .g.lDjQ_BǕT+D`t^9k*HӃZ3÷ -L+>+Ȕ,9s`T nkꑩcF-4 fȤ' M[_},:p$<"LKYh b*XӔ=65 Sfd56A6q1 :ݜ8/0PQN q*5æ߸a u& #5 6CA} <3.ၞ"'O=aTb'c-bcI d>m ~C-=S7V;l~EE}) ,'7۽%>]r/k2`h| :Tnl l .kǶRbQvPſ|jTg"E>$.8옰oAN ]“z[%wDq.F2>)eF%}\*v!/ZIǵmIuu +džLߨnnLZ>r98z6HQ\.9SxS>4vek]ЧojVIÑiɮȠkh`+͎owm Q#t' 3`eZdB3@H,Jߠmcxox3[\-ИHΐN1$6[m}EI5٣T_E<2DI^=$SC&^2^Y=P s}W]IjX@-DC~@qP~VQ3:A#:ŚSlFЕS w/ MvGÎRQh% T~Y@Y0޵wMlZ12ɦ6㨝[@Ԑ=+jciAgSӈ^[@ԹW CCM{=Oj'ZFGWPo&NE_5R;K!Ry1nJNm5D /bM떄ij5O 0Ҽhb.%^8ɓ+ڍUV:j ŦJXwv*Xy$'qLw_ר(td9V@/ʛ_GJ ->p"^>_>;H?:y jtgQX6b$^L8`IIN7ozziGq'Vk{9Z+Wu9Y.xO'?.F0#%=6t&T3O諶rtsn>M7n J,ߛ{JSAf-`qBЗ]|OJz"S]ɰ*5BgXӼMi`L~W-cLn][UǦZ[^-VOϒ.f A9^ӹvz~‰7s̮w{#8.>Ʌ L,}y >Ab WU -&ӈS87A>]?} tHۀ̜{S&$>7l!A6@L񲉉̒8!<_A/y ҆)Pf670MQ*n8N eGɭc892Wwk<ѽy%y <|cp-46: $,i|1$M3ۜ;pJU菹k1yg-GK[NJC0i3J>-LXgepeAroŬ>`3EF8vV\1k$6~&"hmȾؖ4_=($[-KEU9];(8QU _nAm5ce?Ҁh_Z>{N&%4=~y`~Xa̋سnf>_9KaDWpQJoݣ?KC| CxEgE-2cJƾ. C)_77LCY4mL=9cb?0xlX6?W=NN2(mK)_i{`65&:(lnSDTX$gboX;yv~)CÃ_R"}Ti"Lܢ̼[KGRԞ*(17L_xQV5>Uj|xLqxHebnl-UGd*,]ɏ߲C~ $lzJM\8pM]ףppKiPj&EmAގkϢNI`E6Gj;)«|0L߬;e'-[-wD5ӎ`w*_6W' aKɷU!2X/[-)?~΍R(_٫()ei *fA"Y<~T]G=$vv/VR!$iaW=|D_t]kvwisTmjr\Y#Mr)B5m܃P3ƙ84u1rd#ӓ*P, ӻ/$ A*Re8U:_`\V1Il ŕăVڥn:ѡ|HԷ v6q؊kQCڥZ#-i_= $i@,"ꥫR,SW@G:zTې ҂w0ҫw)e}'䴝iG woz$ɯ(XǠx~lnN~oNx6_c A]\;) _?랭OMGŠC gؑ~7C\+ՉAf\e4/Ck֝AHi {VLv&vAZ =UQkfvvѨb(Q(0z-8QFRq%Zi|JWhU!>9帣,ǔJ=(Ʀ9؉ i1 .I,H 32_UkE62TǾć@u'7}s[0ƫIܾ? !kʳT`#KC\}y>j0L+,_Ymh 'Ӣay;F}Mb'@ -I4dS#ՠ>DyHN)la-c}?g#@[Y QK^QN'V }-Ͱhm*bovDXK"tMk57ޛ뇋 uU>Ӣn!^ڧ*,j)^C?"u㉙V= EozU;ە_<n(kȗ);nܒƲzL:u9 c_ޢоn2]aq.dU"^R܀=Ax9WLH$q@nk.]VN`x9Wﹷy/@ayU:'fߢ'p <8X r/~sW+W=g8dlHF03yJ'ΆgqTv x8N: 6# r<CkQK#p PD 2MmoHu~gy390׬} >_Lr.wyg)䟘=6?VޞKhr"U{7*]M$+X(+;8y剏= f$;',;f[ŃL[u%NvZOZF[9{!Oq|78-aup9n`6ӽc'M4H೒4vU-\b~hXCT4 珱b3Xz9 k+!%w /~JSS= T'3`0JaݦydGMKtcd_`1AfӌP߫twQ &SdFE3"1dL9N+Lcb]}r7D#m |d 1a'""H]P>(e9/(FV8v V5Zk{Ma@gi:rH+o8SLA dLEP<_[ubM0q>e~Fz Ư'P,.FJ`G\d z0#  y)68B{^MCݎ]77Z (A3  :x]_Pu`qƵHsczC!䊿??$.53CRYawTjqC J!̽R\H{Q5ȝ=VDŽ Q[5hO.WC?<2P> CXQkC}Q&ߗ䮲LNʥZ_bg5e,Q[S b=h?;A$wtበ^ÀƃbJi\CB佺@3͆ o7+"z [eiZi1#n3x%ebEj& JQ,Ԅēg}Дtw"ʧͷC y%_bGIT5d>b8UnO0.H%`Uá&5!`-ráZMZm\>6Xr_"-~Nr[ 6_](rT}QxU_uM'] Epv0:Ff۝CZȨn螵_5%<]bJj@):š#M|&߯gZtߑYP"&^2G\| ڢ`m/?X0S` v1m[aZMh&8߆c_17ڊhEsϭthSl:p)O",Y3jdu88 =4KaIT%D(PƧ+heO"./5LŧTFFzqX\R?0i^bG v.^r$MlE.jBM[X^p_ǂu ؒ_$@;vH+8IӃp4)q$ro+ ¢Kz πf}0ҙ99L7BEK˯ځ|c1r1n!eXt{hE^rD:fc&_<פĞ}t ?LDcxjQ<*+z\cϰ,j,\!{kRp<<(i1bo%n?i? |=􀐎wujUyF,$,[UIs>'V;rER1Ivr~wl`JX)zG.ھ~*ON~k$fX]hۼƫKK?x@;-zv훺1c6On'if#'0+d{r 9 i9"ڏywkn^j.JK*uP.U &JIy?o oc?ig ,qe4<)Pʦ+0Gw'~zYbG3z[≰:uګlϢ?=ْP?>%{Ҍ%p3K5_ !qcsx Pɠk.HԤ659 Q (pgXQlSeSKH+b! ᶚiEsسvɵx|9e$nP\bt1+ x׷gWd=^Wg4/gk'&є>8fYL(OqGPkc1Ɣm08PKJtM- HD}~tRZG]MzK:YilzoR  篾ֽɉAōmWF@NXO@|o#)ɨn?> -~.ggQCYko4;t}PU8,1m3p"v5;,Ysі릒]te(_}dS"_]JTɷ_,#YQ)?f@ dor @d0v^o.GaB,\¸~KWU>$mZD 7,bS}Z OY]-ug|i& )̙ a85jp:6j@{WGW3C |ta2t$G0YV:ÌٿV&7ٿ\ ˆy=*qUવZ6G1ҾI'SMK@4eQ&PR[~[On4t"#%ό:)%vpHR 51_:^.oa.n[ϓ%੏ߋw6%:/'*={Sm@B\KLM?!֟HIyʛ-S2d7%nVʜk l2U|aepFU2Dy܋КO8"n%J5`LiډdN:.拇'XHw8KɊ5 0է;Ď 7y(豹ӗ M5B: ,5; yLpVwЎ#)hڌפXv #вA@l' 7|3۷ * /=ry`͕,:`Tbxz^7}RjVT ~;ospcL :2wADSk|lB^!!ԯ Tq,]VveM'鯃ڟ|I.$?r b꜍.G@hNCHͫ5OXm;,G)H;KO % p3WcLoqe#TpX,!D~7Llyh]ё(e-(6Du8yy1t>, KYɴ7Cs&,'hֵST1Bi䮦 ]QV_AQ]LEnNH$[N=rIJ  ʅH/˼hUbY>.\^a7_r!lHaVϏMB3Jb~vJo;t6࢏^>W5/mBk>]02(PgV~tAfϿP@,كh[]L+ =`Fxz4Nm,ctW*RcԱ_XR1_^1ulũsǐ| :khXÞD4o9RIls<[b;L+=mURPLI#MhZn$oE<^dyV62o1zߎ #p*μ}[]aUKڛl4D bkTyolSrd^ w+ae..1)\Ʒz.;f#J^Nŏ5UFӥGv,gL$C c \&H:zF6HMg5Ʋԣ|FD\ei^tT5bhU0'P{ 1k"v }aSynj8lK_(]U$zfK&fo=: +1 pq&.>b~*:hQbqҺ6^WHS3W_kѤoP{dp7ET'Z"b p!KDkiYÉ;D_QNt_,'?;<³Z)xڡz/AɄ>#2z):p\OϒEhOu!w#kJK<&Hw5ZkhW׻~}"l{J*yElMFT0֛E=Z `QvLGB1'"R q 6ů[N~j|KP3ӣWA'֜=HjR~FzwɪshZM3V+v c*ćjj&$a>U(E;33_EciFB_[*?^Gxa&ƷֹdFtLȭdFV7U!*~H-EMaKHbpmn}"d*? .hGU9l^~[!Vkרh(L妫#jE\_ٹ@S6ԙm{Im,Ђ^5k%n5B4 >}FZp풐3Ztǁڂi<=_js4bܝى$>J0_u.ܝ4(zvqSJ8QTa7"S"M?Ĥ{'Cbś,Ė1X{A9[Oζ_!/#jC:Nxha:P,njV{DZ%ܘ`蘰|x^H.rw_eU~έ^7#)y1¼ע q")n hUO7ac+oP({I:^wɄ>/ x}vVVebEsKs}{m:+iA2l Gvۖ.,\H{ems"_v=_@U7QΩ._,9DfCk{yމCUN a m CY2$**V{C+bCW^/kZZeC:>;yd(OBj$W7agه)iX5exɀ湆wgmtZ/5=<ޚ)l@`gEX*۟n?`u͸x79`1n(rSoe~m3,^F"9_sC#l2W~N<aн6&"/Sa}2BrIK!Ėks =bٷQq $˥ڞƵ4 ;=$y2L$dlą_ B m Sjgy@VJ8aL>Ϫ{j3|F(nGb 8Jq8 ÷ zCD,"}׻FCut=XPUξ}/Iv[58(>glH'h̨՗Ӝ Cvq2>\X2A `3ZױqoߛussEt[ok#+3\ ?LǢË2+ "7 K@\ől1WibьZڤ Oݳ}'EyD:x {݄\ޒ(&)7~ ;;ѦPnl~bpRr΃fW|S!gc(b[9NhIm6stlODt)m`,ls}]!G/o)>MAH$ݒg}B1me5@!(FO­ dx.d>:w"&r( B_]FIm!h*oVd-E4k=N2DOB V"(StfĎnH8)`mltFP+N`ꙥ/((N G6Y|DS) D5lfWYwL׾g@t$CxO`FɌaJgZʦBU)-f\bp3Ϛўjall6ͳ4"KlEFf`2B~~mb+UM !$YW<>]q7DƆ2F3K :G 8պ}X )|0  30iZ5#VH(W|K#9P(>|V 6J?EW,'ϊ%(DB{-%#]TբRD"fZUai.TS=YY aՈwJ (GMm3]x0?ke15M8œ=Fi%;+xEڍ`"DR`9%?i`V i353J+SI׃"5Ipg- a=6?yu!b 6n;8 k?yฯoq 6U1bU4{2N'TL5m[9iZPw͘+2êx0M<=hetbH4L'%2l9 C0 1Yڟ4y#k/Z9<zBzl:Wr(1Y ~=,dͩ.xnMihv T]OTuSF;F[,FKlcj3"۾$ a26`?ȹ@Q3VI12:QxmiD794؊8YVt`.?YJQUdؠ歖8+V1;U/iVbӿ*it4HWDgZD##hXVB3( tbQX`j3ebː),Ψ$}D&QK"!pWvvVP4w#:"Ǭ@KX͐Mvz/3 | GwS1𻜆fӜ9}xc̳yN,->$+RiswMsr./N#jtS1XGO}kHA(x3V:b3𿠂w끃 s&\e{ =LLl=_ٌ^>XE̴BW7.N>ږ3sd/2C؛c. lkKu,|Sx>#ehҪg_Z31" }+*H 頪V%"ǡWI<;8lNӾp֞g*` t8>^AU$)ٽWF|i Zo0-ffj*&N.V֑m/)6k5b)%#cn)a&u9f[v՗Ir$_CuW^ yxuu[Xc)-]Q|4R=4zdț)mStHݰpA"Ka ע42FaX4-A