summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/qdoc3/qdoc3.pro4
-rw-r--r--tools/qdoc3/tree.cpp80
2 files changed, 50 insertions, 34 deletions
diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro
index 5438e5f..ed27669 100644
--- a/tools/qdoc3/qdoc3.pro
+++ b/tools/qdoc3/qdoc3.pro
@@ -1,8 +1,8 @@
DEFINES += QDOC2_COMPAT
DEFINES += QT_NO_CAST_TO_ASCII
#DEFINES += QT_NO_CAST_FROM_ASCII
-DEFINES += QT_USE_FAST_OPERATOR_PLUS
-DEFINES += QT_USE_FAST_CONCATENATION
+#DEFINES += QT_USE_FAST_OPERATOR_PLUS
+#DEFINES += QT_USE_FAST_CONCATENATION
QT = core xml
CONFIG += console
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index 0fbd438..370bd5a 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -1884,23 +1884,25 @@ QString Tree::fullDocumentLocation(const Node *node) const
if (!node->url().isEmpty())
return node->url();
+ QString parentName;
+ QString anchorRef;
+
if (node->type() == Node::Namespace) {
// The root namespace has no name - check for this before creating
// an attribute containing the location of any documentation.
if (!node->fileBase().isEmpty())
- return node->fileBase() + ".html";
+ parentName = node->fileBase() + ".html";
else
return "";
}
else if (node->type() == Node::Fake) {
- return node->fileBase() + ".html";
+ parentName = node->fileBase() + ".html";
}
else if (node->fileBase().isEmpty())
return "";
- QString parentName;
Node *parentNode = 0;
if ((parentNode = node->relates()))
@@ -1912,10 +1914,11 @@ QString Tree::fullDocumentLocation(const Node *node) const
case Node::Class:
case Node::Namespace:
if (parentNode && !parentNode->name().isEmpty())
- return parentName.replace(".html", "") + "-"
- + node->fileBase().toLower() + ".html";
+ parentName = parentName.replace(".html", "") + "-"
+ + node->fileBase().toLower() + ".html";
else
- return node->fileBase() + ".html";
+ parentName = node->fileBase() + ".html";
+ break;
case Node::Function:
{
/*
@@ -1925,29 +1928,17 @@ QString Tree::fullDocumentLocation(const Node *node) const
const FunctionNode *functionNode =
static_cast<const FunctionNode *>(node);
- // Functions can be compatibility functions or be obsolete.
- switch (node->status()) {
- case Node::Compat:
- parentName.replace(".html", "-qt3.html");
- break;
- case Node::Obsolete:
- parentName.replace(".html", "-obsolete.html");
- break;
- default:
- ;
- }
-
if (functionNode->metaness() == FunctionNode::Dtor)
- return parentName + "#dtor." + functionNode->name().mid(1);
+ anchorRef = "#dtor." + functionNode->name().mid(1);
- if (functionNode->associatedProperty())
+ else if (functionNode->associatedProperty())
return fullDocumentLocation(functionNode->associatedProperty());
- if (functionNode->overloadNumber() > 1)
- return parentName + "#" + functionNode->name()
- + "-" + QString::number(functionNode->overloadNumber());
+ else if (functionNode->overloadNumber() > 1)
+ anchorRef = "#" + functionNode->name()
+ + "-" + QString::number(functionNode->overloadNumber());
else
- return parentName + "#" + functionNode->name();
+ anchorRef = "#" + functionNode->name();
}
/*
@@ -1955,27 +1946,52 @@ QString Tree::fullDocumentLocation(const Node *node) const
the latter returns the name in lower-case. For
HTML anchors, we need to preserve the case.
*/
+ break;
case Node::Enum:
- return parentName + "#" + node->name() + "-enum";
+ anchorRef = "#" + node->name() + "-enum";
+ break;
case Node::Typedef:
- return parentName + "#" + node->name() + "-typedef";
+ anchorRef = "#" + node->name() + "-typedef";
+ break;
case Node::Property:
- return parentName + "#" + node->name() + "-prop";
+ anchorRef = "#" + node->name() + "-prop";
+ break;
case Node::Variable:
- return parentName + "#" + node->name() + "-var";
+ anchorRef = "#" + node->name() + "-var";
+ break;
case Node::Target:
- return parentName + "#" + Doc::canonicalTitle(node->name());
+ anchorRef = "#" + Doc::canonicalTitle(node->name());
+ break;
case Node::Fake:
{
- QString pageName = node->name();
- return pageName.replace("/", "-").replace(".", "-") + ".html";
+ /*
+ Use node->fileBase() for fake nodes because they are represented
+ by pages whose file names are lower-case.
+ */
+ parentName = node->fileBase();
+ parentName.replace("/", "-").replace(".", "-");
+ parentName += ".html";
}
break;
default:
break;
}
- return "";
+ // Various objects can be compat (deprecated) or obsolete.
+ if (node->type() != Node::Class && node->type() != Node::Namespace) {
+ switch (node->status()) {
+ case Node::Compat:
+ parentName.replace(".html", "-qt3.html");
+ break;
+ case Node::Obsolete:
+ parentName.replace(".html", "-obsolete.html");
+ break;
+ default:
+ ;
+ }
+ }
+
+ return parentName.toLower() + anchorRef;
}
/*!
v.#h6VW\ue坷يyJu*3pMS^kFS[shrAL+wc-[i3aH&"U5Vk[Zs6dyTP.i"ZmGkW4nK7Ğ@%]GfTXP:xb=[B=CHm{2~U$? 4] $ 40*Bk\fY ؓ>(~"_ŀQ[8ً%eW<40LgF]y?xe[94Jٌe:s~˪3o%(`oŁn$ze'(F$fU/ S K6Fn *ohJm*nBHl_EО%Ӱ@䈔qgݡo\]vߤhzB\˺W6ƦNa?a(sgҡZJD &4VD_ <eMUPMCz7@75eVXUn&Alj(#Ս9eR<^T_q 6 23!:#}?UQmzFK7@I|r: qԉK:tDTU͕ [@CH`,AV"W7u0{^^R)@w. Rj0( B>;9WW5bM+kzzݪ(i'bw3hC5[ Ɗ 'HH"O(oB]*B.*Li_bvZ䧚h=<Ӽ0YQ;F=8sB$ 6F!@42~ɞXf뵐6\4茲TTE&q[| U4&']A6m \jb&. F+Yſ3T{yh8RpKt \QD7&},kLd<(|Z} "{(7lU<=z- -A #:K e.В6ت?= C0nC V,+8' %eI3/}Â{yTSش!1\_bM$+ktH BԱ.>eAj~WCuLB${Tn~iyJ%k1nlycMe0tL삲q 8pYHaɅAPZ4_|Wa-\` 1Rq7Uvx\qR*l-C搂^@z>7cvH"z2K?;9={^aFGنXKU76}E8FX {Ȭdt;Ǽ6ѓA1 u[+G4B"gHsrYTeRC{"-)"Y!)lARQAo&NLRbE.ėS>vgۤ "M7# [Jd19RquT |v ebj#T̮>US/tXҚ8ssɺ6b* 6Q,w]jC@k\r"x"ZT멹mUC?T_Ak+~?Pd0udf"*CKUsxOZp/'ënrCC[)x>g)t> 4+[] ~DY7 rs4q qBJJ؂D$Qv;2h rPPH@\[JbL(M!6J@ʼn/Њ7x>DRWgCΔ&*+?b4:8êgPT.Q0A0S5\k72k |N?Є|J#X]4&'t[x6~:$XeTxSeQ0 jffk0nBRuՁUr( (քR ],$(On aM5 >nB>]@6sl8S@U1:vatoJÉWmUȕ6z[&;geh=#K̄,fH)Ls՝A H#h?Oр0:L^h6P(C!, ѡU2 .eLmo(D <䜖iZ+x0i|x913Rv' HQ8b9Ip`f \bfHS1Qװ!!Ww#T" !uCCPA[ r'&v|X(.U:]h!ҤV<Vk-d& MS̋7uĞf>>\JxQ9t0.A1>gyax(V 2) $Լ b-]QVux:1ܦY]Rȫlsh'eXX X3pz2SJLZ :، ,N MecGxR0 Bx!( Xxi%r=rF)0VP6PlD9Ԕ_L5o<=W ̊LiF'bJ"'sbQ48XÎRЄ|La? g(O]fY:0cx֒5EH.512!e:oO͠Gb:73GcKuwq*CXVBމA>eKjTa0R{jpVZ,яR: ԞQ5p !&R|",!_ʽ 9V47ܽyH'Z#r/ND:&73^Wx}MˬV)^3^4TfiڼN*y=9OmSk\}1NҩTkZšI^|p/$T%<6nKM-;s`8.s6:G3,݈C MSe0zǰ~tUn;WL:*3'N|6FfxQMx* ZDJjz*pt|?^]c@?{Z,A?F$zSz> ӨgPs, @`ֽ`VOPDkIrdlI\Q|>[ ౌ>fb-(SZi 2$JhYaoO\@B$x 87@r4@-KSgV,{(#{*r6n.z "{NZFM])u3Oi'$[6diKs1!fPHkBYOBWgpb`&_` Z%hIV)H)V^0f+T$҇%|F8`1wBސ((: \LQ( mT7X S ,:-R,К_V8xZ:J*EPI)E82\i e,94*A a* {PcGiC1E aȵhMz+3YdQFUξQ7hhg jT7 $+xk`PKScyc˾P#G1Gzr|eU*zǗ3b¼̉FGO e~e: &RgBXs!e=2D@깥$ `~kQύ11+c5PM; (=j]:@bN7d9S<6+|$gp{/  Oo`aUή+H7QBEMYQܒ\O՜"19Z$;@Q9zj؞06%=2vh fԻ%J.R$"LZUw#Q_H2ސϮ B6JH/vT@QN㕊&iIxz@Il>p [7T1C]"WvĨtS4' 5Cmz ֤$ͦ(JQtݓԫй]Է`J"7 F(f9u"@9&gx(io\_؉{bnТp$; j!8+TtW612~0!׈H^c6Rz2~(;W`y-%AYD@Qpt"<tqBb5Ӧ {̪lHh ]֎4O d@e9Ѧi`ĝ$[cmS`oC(,CTػUߠJW9Jb΂mE7kd jB86n5t-3п3!7-] k]d+hdL*"5QJn{ȑM <F-JV桔=%q:NBɦ7Pdf& (MN 4ѺH]oOqUhrջćɛlW G!қ!R BC|W̏|hߥ1hHi1!(bjH LE& {NGS !Bu:UQr5{6pNp~'-H@ ͈b*7@oJt˲pl^NMtc8j1Ak(Qˠm`G(^:g@mDdy" ((4EN|"UNa+J lwg[{v NC.FnnَebGrbGV[nHo|H5q#:Wu2LY#BG)<!!,x R|&Q"Q"Ŕ(MD Q"r(JFn%RQ"THթQ"O_s[* 9J$ƙLHv~?)gQ}% nq{pW)$I #uȂ $ bPj(RL3`Ɏ8Oz%VFnШ'#$5!f-|]274}=9%!m(/ړ9xp"2x:V`0Xv=D`=Sayf71:D=ztݢc{qBXt'>9Нgɋ^ t%kX(t~5Ѵt: czcD:#Fg3+%'8w~m0ĝCnk Ӳ;zv!F# RP9uQ7`~iIwϛM/?&$~s Dp'19ZX__A:p%Є@D+IxNea{ lrp~P9K"0wY - mOEyT%7 7=$NE?F: :UTx._ʝ+斻C; I[WRthYzƱ=}0h0|@XOTuxKLVm &A\_J+j`l"4H&U8zPvzdcPfPi!BSV٥t z+`)X=֐&[G-L?ZŸvkQ\ܴ`<̫E=h>j˴Ds= #C`/%RAePa\jXPUx;a5>7gpoeSL|+MO#51W4-2=͔3(! J۵UE}^ÑԌyt+DkmBQZ=zB*`WV _ѷ"}tDžjZ= ڜkiѰ;\S`*(/wRʑ]t3 DsVmM%wl?mpRNVR-TڟéXl2]|؃ fN< ݷc7sdWJ%&ޫ ,p₦{7yLm{`Z ~ÜN@>э#Bf3:cc&m+/ui BнyxM3 >LY,'=, F9t CG]y /|Z4Qi8N tn+ndD" .a{mߋϠq\Y!ri LzaQ&p(يF^rRlwTmWKՑh G#Vu%HOC cp !qH47i=p+vKby2ѮA/r+Y >€zÑ2΀C*2Dt:bLD?WJآځ\YVYٞD B5Ũĸ !#B~P[.< ZLr쑳:0Pco8lẀvxQ;7(-!u6J(wDZ:@U9 p/ 6VJ3&*J NٛV#)ju#Ԙ:_\ K Hv#'MOpðڜ5i,w>q:lG(e$oYMYfp҇ J@rnV4ULg_z UlNZ6C3غU YG?^)ZޟD<`,T HD*њHJ!yz}1XK -um$g{U"m'{˶tW,Dz Ȗ !mԊ; %2abrád+ݕú \;r-RxU Q~幙1u6ՆWt\w%jߔS5qxŁkt-;qKUoL3OHGN>a;4r['BG-17')Ptfdg@\7$ZbMau:*zlWr`l攠Č {qQm ͽ؜(_M{91 )5'rbJ&=CBg)Vj,I;&+m!`R|![hBŤ؆k@mYth!'`W=H yo IprZD^'%S}pS`m+6>J=ȨLWa}&cfěEؔ-R-Q|jQeVe1อ0]+}u"9or%%~Ϊf&r`nݳȸp߿"<"?\ШW2a sfc(Gcm@Uqa cCb^͵a ~xiRg[t†)C ij23g1 2^,V"Vs|:ˤ<\b\*ajو ;nQO@1@u֦/.#f`UH 3Bͺ'5깎 B $larihCWN{5lFt.i例]Zu#Î ep#*Y\ж=+M vRuԥc/՛c%uq{+ 0A$W8"|W|޲4dԵhnޏ<גG*mU}]hR1bKc笡EV7w^sd(eۂkxҧB3ALs^t-F-6&:3n.(=/PL nȅИ|]FT_Twd.=OV:f39i;e1ZAj#bhzUoTW< #FX7G+?<Iͺ7 5FW A0><<`chR!mwJ^h+Gܝ&JJ [5q b=M3&)&[d{"[|]_ >+e𼲺$vA~|{n=Þavs;{n=Þavs;{n=Þavs;{n=Þavs;{n=Þavs;{n=:s;{n=Þase2w6vZWd2hfc[M\ڜƟdkq}%mx&LbQ-(dd wAWvmgH® dXva{QK^ ,cr6RѸL}wqTTh!c_ vʅ}EciV ~ڗCMM֒&Qn6F?,v>mn=:[έGHnF^_덿`_Q<ĥAWT2ܸ O~?ثsIDpF+f9UQ"ࡖ6=oAT ֣9?3Ѧ֧n(?z?~0bh]x'K$^"a֣0*|R-vыۯvœW{~x)+z ֣_dzUytv&lB2,(G?6OG e,m`Py:©lX鮪[Hp{P \f瀕#-H ؽzӇlF֘l s3Uy}Mg9'Se0A rWN$x]o j;R6L3`am%Y _(%QLh,NNKyC^u|"_D7xtXw- P,Z~`'.CIvM!0~bD\[7FSNO^vLQV@Aљ6J>_M}T 3ލ"TOf[@P_r[,mlo BBC>>kTN'4jV5S~FUs@ 7+c r!i9bA)qYn'jooKok-.K+'[ز5*ڇ]|Ι7o~{PZ,Wi8^VeǓ:NT!uMY+Y㛂\?(S\t!7'GGysV^XsţZ![g%yѿ%P.AyR]U[iwyS>D# ."A{,Z7Y _W䣭yo0n-46qNɶXC?zK>;7S1HɆ'k7E>TIhm~ˈ!U%Qn5G/P# ?:Oʔe{vԴ*ȯ ʻ5Li%SZ&Բe]"fNn1ֹx%{kq($~n0S,lDY$%R|Tƀ+?74?GV-쳠 E6?TM+2nt4J l*R#ŒcSG "!znot?I߶\3"C̤)啵FX[f."P^?kQ ષ4Zoҋ/[Ղ(z6nQ_D'IFWx)Z]GXP툓ߋWJY%D$A>)hJԟ&e=ux8lȷ4#`j{ `zW'"vbfrNcuO$o֦rVKK(|ZNø61p9+'s{ ?}^Lt7[^"Xy8n叟kK`M~/5qdoDR=^ p1ox&/Fv1Oß#bd7?/FvK䯉xrYG8 ~= m]ή3V)=$ڤz1bQћ;5 h'S˘7 N}c88T3e,$k9Z֬jP[6.񉶄ɸ+?M?OvȦ?ۚԟ=&2!ugBuSUʼ `G9M*?wdur&n,?3Hy<.wD_yNDXT|;yF*f;%!㜐eV$ Cx]A\bo%ж]%4ga^ [.B P'xmZώ~\ 88dy0:r>N5dF)MP`q( l=PU Q?|/&Foqk<ϫU>u!򜗓^d>6oT"NeqS]̡ "⇼>zԔҌy_Hvyy-;̎/J# UG_1etSf<kKr0orJœ{lQ*Oa*?쵫mdF<ViE;a,({%z`@zHT4:rr$bpg\{=UӣN GQ1{o)M\+*WߟȌ[7yYuk Jh_DWhZdBO)p9hz.Y.zOf5T\'J[j'qj4Q1p/@;(iZ:/T(^pg8T`uAEZy,W(9'2+{/:&7tLYt/=۲D}H`ptOWp(s9LU(ρ?JtIUߊ5\/Q$3J9mW bAOUNJN/`p_(xȄS䆭_1yӺ3:6ጝprTx{@yӰ3wOuV]D%7vmڠZ]Vo YPAkO;)3a#r^\ع>,D)4уU[u̩S`y_&}"=D < {}.(kHl_ǹ{# G@]fahpB7od7o({I|tQʭZ7^ "ыyPM%('j^\Pl]lBԬڦX%k Xjs|V+e0FWەƯojo*[Lg_ }bHׅsY LAV`5`=g ~e [oiǜ= ;G&u$?]"njPZO}U ̦mĎ:g3ʍFcC窄̈/0V,CO^<զ, Iݱݤѓ&|4)!ڼ,vw+ 9MoXe )dVrbÐj:عm}}$#4:9jcW\4݈V%WzB;\͉<D{Ջn(w[Qo~?]|wÊqEje貹a}<ӱ#|wÊy4 V|kH~;*Nj +mgɳrtUsv!MGGcෂUnTWoۓ[Xp:$E"?w9+ɵK"A x? ߰Q`{D~ m]mnAa%tcAV MޓYr.= BV E^ޫtLo,f2Wn$C~PW>,3^_*^3NAdʻ8E BiBxO|M6>*"f'Q7kB)u믵 eJ k_%mMtR<|[56v_|=x^j~|S'G;w9%טw}r䞨>-{grݭ2` bQ>8yrQ}*󯿶 kB?K~ -<4ՕemeQ̤)V1u({v÷k<69,@L8YVոxqjk. `Wκ^4/ Ԓ}'K py:C7jmo3lp =Oܨhh[QqZέ'7R[%uXh6hG5M[#ߺs8~7f0=j3K&Z[ƹqwNRnJ&?&u qO*;mSA)y{,-&=̙jvj&Lσ1ݣSi|I̿ r(**/ %SyCZ\bYtun$1UL"-Tx :7߃y&0kD__S_q1EDY)4;P;6sXn2?j O:a]ķ\{ R_΢n%!:$%A Ed,'B $*Ӭ\3͕sjEE5 bIuX,}[DT1tkk=y&'ooySF P .h8xO[?o>;Cnw{}zx,ɏ*L)hl ^` jN@>Ģ*M j>`2HEtX(|mRqˇ@vNg8;;}BRX5gާQTx  ƆdqΊH2˲{yd+ Ehg;Ih2 7!b D%A'Ň0LkfPy-GtbM95%(G3~)f[֢dAO*WliU7^𦁚^ ԮYxCK\ 4tyB Uߖ˔ ">2jI%ѢEߢ,7"Phׯz Qgf}:qv>J=tG ؞ʽ;(supEu U( Mw=2橑De@sгF~al@Omxt@\ڶTl3Y>ڸC, 8> Ôrǩڋ C( :tdP'؎*Gϑ%r&)z8N9K["Lm %E-QKGQw0!B <ݰ]=r㋇h링0Mr͟_S όd@yEpZo}e3kħZQ)/jFfLGaR[]@m 8IУE;3QI낧k)LgTcDd1ޛe=eR0{\fKTljKzX5-tu“ؓV'0^!+NkBSbI쟚,S*50H*RUkr*_;JbKȓ^Ŭ9fTp՚UA5{\regk|MPLXwvOl-s0ˈj5T{+ 4oQ cvV ꊀ_ύFsoEF|1߆xQó8H\mn3{g޺uSa $ oV1/QRi9gmq^۸8~d ~kmk;"jYEK]V=MN{98Sn봗^هrǤwV_ x6=`KۍħU0Wg Q>$f7(K诲k. a7w?+`6>N}z^euk'9ޖ܍%sz.K#Z4,޸ ݕoEQBxCP*7d7>V9 LR&AA>1cqev2Gkkݺí1tcVۚڠ&gDJ *3 j]4ӊ܀DnNKt< +nO)2 |:}W^ ka\m^ڥ&ݴj;8"W^ȴ=MY, |^ Jے%[dCMDKZ4հT,4MOS7Qᄙ NU8y4Y4W@1OnxkE3Ks%Ea)bԝ@&>,s[USJ)ӟ+v͠`=|$,gй{HЊ&T a4X\zb~QfZCTķ TVE"kP̑ʋK`$qᴔ]֔_'1=[> 's\x 3E6("O[+距f `ap4cb|@1#^ M(sTBh}(m&}E%T~'MCb~i0o+skOK`e 쬙w4x+ o`P4X# CF FtL5Io ByDW<\*L*/x Į,T\s/,6q /ӷa;^YUisޛGjȄMcGKn`B͐Uo.2lM5EѴ_AFVWЂ".|HslO Rș(rhfr%Bp ,Evp_{*ģKЃ.= :oKx<񋰓P]f%I%*(usᷤ](=ymCoE VJɍG~['٦[fƟW24a<ȼdpk$!FRh[Q~>+LӧxU@6ݦ*G0'@%`aALKН'O;cgH>&ܖ5[,YvO"pK=Z|dCCr{sx^*c$k^,n6u¥%w%;fMqh'2"uX}D't5E,W'H)Cϯ1NAPPk 趢&s 3*Փ) w\pߍ+3C8OM~)QkjqNΩsmyPƕ iDw H7YBǔrUo?$'嬩V-Ēr,s8(rיݽg3!ʢ3a%L6XKH<}ʏ^ƗFx,*?0u1Zz~+ߏ7mx{'5hj̼ oW'k4Scј~)Lg3rU WЁg5}#Oe,:D0,($2N.ȜdEg_,8^"J].woÈ}Mp&wv9%C hPfW?q]+[ۮ< N-~8mv6{Hݔ\\rA`̅(!* 0eS?]o3RhCoԻfbSoڵqfL-bxbMPr Ptz^}oX ;ƭoʔVxry^ÿ}M+AzM}VEu?6O5טzɋ +WykkZQM[ÿ.޴{P/߼嗹ʫThatddXax^K4 v?Y ߐˏY.fX} #dgx4.f3{`= cϻw\2pGf*][@&r(^1 תleR+& PjͶSCE.C?s?$S g*˟NAr-WA. 3U&ǃbB(9dA .,̟d?SUz8B3'sj.0S29Sz+%w~IdϬt,>bIӧ9VH:zYcC MOSsD-Sҭ|ڪ id{d,yf/$]m48H l.̱')د/ ާ|ULF"2@& G 2LǸ6^ZSt$SC/j+Zwt+`WO [ݴYXyf6.l޽m zdjׯIA,U7Ջ7 QR=Q>gcHav(lVynL\XG/BkfSp"ӾtbGqQ;he2 2 g#Wz]]PJeOB R?39\-sIg=v[ w,+мҝΆNu[O !JH҇>[!;j4QݘH3K©α95vw 5YM/h1w}lyn܉U>}9Ɲn`np=l.R`UWpۄۂ`~>=nLC,b:Ҩn\\*K}}AW'{;"$U]'$eTꎺmx}fuP]=j 9obI1ȔbPh.SqHcydTr,q[WZ YLQ%ضsgHK{SON'ԖSlH5'M,_*Z=.t\NÔAK"'pZ%.{'Hd2g7lM yOw]k& ۧ+P?OG{8h5Ez. &&71{9AG~I^'&nPr)r \I0y> l6ɔLfQxGo ʜN rQتs2W/ JGΧ$:81@l>5uJ1XE'N c,hb-w=O2jNИ6 Dxr S8u:"0|2ԉ_EdL{/ڣ^*cWtpiU̓IJ6& ^KW2yX$EIHrSe"']W#n(q+$ s6:eXp`iAH `V7nS䞀=irrOq7 )iA% jŘXڨ Ft҃ uC6|eBrOs%96'rrC8j &3swFt` NcNwVSz }J7O/Rۘ2.ryH7~Lt@`v_Y$19Cz6W31DʍʤP[ $]¥Q֓}P,r0"jܦaLԥ R3R>6cj M!HOiuP/s ^B Vh:zvqdxm몮*w`s|i`9:LՅ$qBoR=N7%z 'i whX&ToEK o9g6=x>q`xu8q30 s7Fc;`CnݤQ<{]!rw~cc'Ti,X@JALƥ1@0&Nbp<=MqϿ{ (=2k}A;H3n39nҠS 6?a3Qw׏S D$yRIKˏ[r,+zqp>kVï>ꙟܼ%WSR^[ިW+++y7lF8I69C>=/$s"$q M8A}^QۧQ6`حQ9?0Lr1\qژv{-/mJ[cy}HwZְ1e,4 ÿZwy'wvvONëOvwGۧ/_mLM/2͝Ã{/ޏOv{[ +Sn-y?:Uɪe 9[_o<*e\?3:*\⠒(e) z2 ` W}=_^Jj.K [YvV;8kvor(~ _aGITi VX*xPkNAm%A`e~yL~o.ZvpY돺]xU$@#VAKVG tbZ|dqm-|l*@T],3/_~}mAwc#*QjdWz]"7a<7_Uy/mUthwI,HDXf,ᣝק ⡼- ?5 x o>f= 뿺Vksojoх *[y6B w_m mL9+_]HmYʼn$+zO='nxzLJ< wvwͱ&I_9]pQv4 p_W@, ;g _#x.OR)>Qr2cc 0t؀ZFBbg !p :yk7{p$D(x-hݠ_x@bN現g?&,|` __[k97dw_\O# O;my^A {/02jMTXUlT[WXPmDV%{m>=z};`E#bMro82UTIU+0e ` pNj N b'v8< Y{x*\Χ5+y5p2[5?fYrȂ7jc0hݢYꦵjXyvDa1 nN-jMa! H.{5MwWӘ* oN$YO/͓GGǧ v4~{/_V<$(9>4&Oϳ: ]%GV퐒ሥ>J)5;3sh| *Օ$f%.g}q6ނDG'*:ԤgvgA8BJ$gzEM"o *]AYèu \[ҼiГ*!,D>1AiWIL FN>w}uNfܪ[}vpO)MKKY Yg@0lc(^aY̯DgSTzOIaЊƻ3U?[ n ~da.\xw&:F Mw),dLS 4E2=U/la|F# M?SYBfsYЍD灼$X8ɋoGGb+-h9YA7^Z՛bkUt>ۀM{ge1Am,-/MQ[_]Y3H[T8B.™/½~&&^QE6-5/6Zoi~g?rK]MzKT5hiҝ?MAoH ` /4h4뿶4E2^éHώo2b/H;K,|i6:+fes8 7?9or ]M;ė|%A֮rn3>يr.4ӽ18To=`~g,q2`9?t?oz V"mj./>kiy%gei~"tףuD؄]l6_i61ҽ!c|=$;;rqDJlK;!-q&իSG kv^/VƜy?<O[z( =?]_|?#g%a4q2/eյ,/4_>؁&'7|YZYsG^:*gq$*!DOrj[ގo;ЕI#o#:ӭӏ  w@Fmp%7+v }UVa/(ܐ*L5G⿙>p_ošS՚Nֽ"$bG[wwS" .>4U`\>,9mSx-mo"!;'Ibk羪bySXh@ /mzS q,dQ!(dgJ+ߟ*=AҴ>e]o\ ]*guEQkAĠGq_Zvfa_~d֑zn5)!,]8t{ Xac?%8#ރVIbI~3Tlt~ F[GIT ¿ZŅRJ[fS\[3\>v8A2=3 @u!iut~D k~?;w/w-t,7 ^mqpp qsX Pi Ä2b}:w\m4FY˟L_.y8* s@3[TPn$@BE{7ozOOGGoVy> ϧ˛4moU=t:mC;/64_vhrۃEcfNK -myi1yq/`\sf|[Wks =U<)z}9k)4fjw&8g˟.?qщ2}_EY+c,JGkߐ! pk5X'[2KǛ%eѦb7ՕFc}uiuuV]*{qe4/\Tp_$b0vn {r1_[8cS ŢU+"*ecHzuI>o'Q^X_D_s?dsOR2OHw;LN67s"͖/ah]'gv1ǟ*䏛m9j{|o^H>sy ?('u ~D\▪6uv–3Yˋp(78/ x4GVBUkDOuU9<]F41xq;p >eUL!E%5חWS𹶾5\:=__Yic*v}Ўtu썪ڕ}%>UVrǩnש+U.-۠=Q\T ˾AtY JSr:?HNUT +̰,BP8h /1!D W!T N1(Yڃ j^ k¶.v; wJ-D?:!QS=PukE `jv¾pMPi ZkohGJ{0qVXTo1]Sx :T[&E]kA@GTKo%)ӠkĞ-$J5셭XZb¿ 9,$D{~mSJ)ٜ%e觓t|j+ U s$~= h x3?H8[YOMJ Lх??鳜%󿺒,,RmQDdXZiIÅ @ua: WŕD/[,K"NV2 ΨfcE":)NE#6H iKJ k9 (*ZΖ 艹s?v&K4Qn7 ҽ 2_WWSi^DaWw@zG`x^$SrŽL{_n' .~OK8it/__]"9oS5t >SyY{XsOw& ,1./_I4i''D?6m\y͜ԵR૓h4lb1O~xu/ŁX(~L.o2)ʒ!۰&Ńqp5M~dq #El Ptz.&H˂"ui%G3f,ϛx6|syߗY{\N+k_  <<,\Hя9V;OE 1[3CߣA/&ޖK(%;7}p|6M;er'b;FqP|(οN;FVcyg&Ri?^0w?kK+so_\g& +D>;&oA0LY012vk)^q<9Uzd@^oaL&0' "a_(VN*Kb`OU^$8Iݢ^?j},D.Siz'?Ox3IgCq&292l̏GyvCX[k3Iwx_Z]]I8xS9x_sƧ;%Sz\;d? o;osť;ɂ_N$8fc_7M+Y3I߹wfomE _Tp.;y;)-\;t?ϟc[97dZyT?&ȉk}&AǿwiEnʻn>Kʜ7d xkwC})gUn9A\9ﯖQvYo}mn;tS{Gk:ZY?>oheEe~[!z 37 8?l5z'?M^!LQIƲ0@՘>s3{*nES/9J*]NaE7_?zV?,dGn٨ދW'{7XM$K~OeO)>?忳H.g_#_ziY{Y5_k9?dp^ON4}FoV'qo0qR,Eٟ}q2i)֨"Y^o~Pn t'Nsoueu oM$[zR"\gN~s$S}y5/7tS>x!xCo}Λ&:11'g{'bm '<` SB?aꙬ1\W:S[t;;f"Z~_\DݶhkmYTD!̅8%_юժd󴹶""U<k(jj&ӥ<Ɔ_TOk\f}J[([+b" b#rMMX KT`Cv Wv튨߽p 6ZZaԃ"Uq^}Qkg˄ؘ^)zSoco9M e,rPУC2⦅6߲so/Mi덹,Rs˃;f Ĝ4Rx? Pxۏ`KDLz0 }+@7J O.D4W~/RHuqt?X,g?~gI[4"Mq>,f<9`>-?N+p n]i﯎w_m5_m?9o4G;]\_Eǿw$F:\cIzZŋ<_)KόյyY$ SP_P9`b=3.Kp}t?ϟY[]"__*Nw;0\?Ks,_Oc=W֗gZ5/0lծn?)d~rSY{ytI0hoxk>|?;Gl-4wn-,H/rf#dab^|,ZS'aO ۵u{1Z;Gݮh< -!ʹDN X}iR; T|B>7rH9mK^o+U orzidwu JԹ,0Uw[̑drgA۴N?s\Jn6 vY8~$&xE;  jtKh ?a"6bUu\QPht~&??};?Vf q*f΁9wdg -~D=yt>kMGo6faD <>d@1z @7 t_8WY$ c0~KϏxAH-k_奌z}in;dн'z: |F~"|yԫKE\Iw ƙ-;Dh)eW_7w^x{ Q?'ܿfec?d6v_? [K>~w<<=xyhX( ͻ1R\Xؾ .=lLʚ?It[[ ` [S8t/i}}e7t_>h#tsC9.8?$_"o|_J3dPݗ s ~(^SX.HoE9Jw?q<mA[mfk+s3IHONU8WvK$KK֗:cVdT}\]!Ǔ͉ H ~`1fV_Ho 8nr.FNiZ `5'jxF-iU?'D; D@+1v0)TPB MG+r9ݝ \E i0I# OBIg5XDsmyj _+}s_3I.8'SYn61nI|b迵"Yw((xGϷYzO-Gq+Z>""ϧ۔`(WQ2De,y"?A%:-GC0F4fP*s-?O_90Y&:Gǻk/ӫ}s0 ¾-ˆa>%dz!1wwy!ʩ|za8 [:a/09p?1nA난MY #r:t+-a:nW4\ 7hlMi'hA3L3SeF67=oQ[Z_Zw{TڣRqaԗ=vY.id~AJS\_ofRߋVt)} 5`U03 z޺H?av:-]QWEծ(J\Mzr:IWfasCcmN"ol ;![ xv~JQ?v7?"nQ Lw<ߍS_;yY$ëOvwRc'קmSp.} i ݅""I#G Zbn[ \^*CJ[6D} {2I~Oix:*.QA }8'*(/gzGjdIAg\{ S܂Zh&A'Ze" ޚ%qtz|vV +A=+FTCb+)xNP?-ҽ8t/6M2sﯓOsKon=t?ϟ^Z6fk=Hiq atOev+KϳHw_W__f ד0ȎPn͗wX~;8<Ƨ26~ta2ܡw /P,BDxgd}ifom]7{f$ fY\u:ݠ9kz<5)[(7{?n3+덹w4o?tt?[k/HN+K3I l&c‹E_I 0'_f]3V3If?}O<,ҽ?\0i𿾜\]"Ezfqo&-oB,֬0Ӕ44t/wm?s,o~¿t_YwGO=ye}n7dIwnKr4KX9kyYkyB_4{ 5a?hG,@ j rI'vsýZ5$@>qCI0hh+eJePg? 8~/Ճ^ eD`_4ۢXǍWce=&2|+"|~+L)eX8jzje0Bv*= a=ǏUϢ+_#Mu! -]qi˩6`^knlhpn?L)v0%sEv.\,iIn'(jG#yjo^JmUƷAszY4K YouYSY0}sk/_Q󠭭ף]S8ؤƛ 1TT\ץ*޴