#zip file with Tcl loader prepended. Requires either builtin zipfs, or vfs::zip to mount while zipped. #Alternatively unzip so that extracted #modpod-package-version folder is in same folder as .tm file. #generated using: modpod::lib::make_zip_modpod -offsettype archive if {[catch {file normalize [info script]} modfile]} { error "modpod zip stub error. Unable to determine module path. (possible safe interp restrictions?)" } if {$modfile eq "" || ![file exists $modfile]} { error "modpod zip stub error. Unable to determine module path" } set moddir [file dirname $modfile] set mod_and_ver [file rootname [file tail $modfile]] lassign [split $mod_and_ver -] moduletail version if {[file exists $moddir/#modpod-$mod_and_ver]} { source $moddir/#modpod-$mod_and_ver/$mod_and_ver.tm } else { #determine module namespace so we can mount appropriately proc intersect {A B} { if {[llength $A] == 0} {return {}} if {[llength $B] == 0} {return {}} if {[llength $B] > [llength $A]} { set res $A set A $B set B $res } set res {} foreach x $A {set ($x) {}} foreach x $B { if {[info exists ($x)]} { lappend res $x } } return $res } set lcase_tmfile_segments [string tolower [file split $moddir]] set lcase_modulepaths [string tolower [tcl::tm::list]] foreach lc_mpath $lcase_modulepaths { set mpath_segments [file split $lc_mpath] if {[llength [intersect $lcase_tmfile_segments $mpath_segments]] == [llength $mpath_segments]} { set tail_segments [lrange [file split $moddir] [llength $mpath_segments] end] ;#use properly cased tail break } } if {[llength $tail_segments]} { set fullpackage [join [concat $tail_segments $moduletail] ::] ;#full name of package as used in package require set mount_at #modpod/[file join {*}$tail_segments]/#mounted-modpod-$mod_and_ver } else { set fullpackage $moduletail set mount_at #modpod/#mounted-modpod-$mod_and_ver } if {[info commands tcl::zipfs::mount] ne ""} { #argument order changed to be consistent with vfs::zip::Mount etc #early versions: zipfs::Mount mountpoint zipname #since 2023-09: zipfs::Mount zipname mountpoint #don't use 'file exists' when testing mountpoints. (some versions at least give massive delays on windows platform for non-existance) #This is presumably related to // being interpreted as a network path set mountpoints [dict keys [tcl::zipfs::mount]] if {"//zipfs:/$mount_at" ni $mountpoints} { #despite API change tcl::zipfs package version was unfortunately not updated - so we don't know argument order without trying it if {[catch { #tcl::zipfs::mount $modfile //zipfs:/#mounted-modpod-$mod_and_ver ;#extremely slow if this is a wrong guess (artifact of aforementioned file exists issue ?) #puts "tcl::zipfs::mount $modfile $mount_at" tcl::zipfs::mount $modfile $mount_at } errM]} { #try old api if {![catch {tcl::zipfs::mount //zipfs:/$mount_at $modfile}]} { puts stderr "modpod stub>>> tcl::zipfs::mount failed.\nbut old api: tcl::zipfs::mount succeeded\n tcl::zipfs::mount //zipfs://$mount_at $modfile" puts stderr "Consider upgrading tcl runtime to one with fixed zipfs API" } } if {![file exists //zipfs:/$mount_at/#modpod-$mod_and_ver/$mod_and_ver.tm]} { puts stderr "modpod stub>>> mount at //zipfs:/$mount_at/#modpod-$mod_and_ver/$mod_and_ver.tm failed\n zipfs mounts: [zipfs mount]" #tcl::zipfs::unmount //zipfs:/$mount_at error "Unable to find $mod_and_ver.tm in $modfile for module $fullpackage" } } # #modpod-$mod_and_ver subdirectory always present in the archive so it can be conveniently extracted and run in that form source //zipfs:/$mount_at/#modpod-$mod_and_ver/$mod_and_ver.tm } else { #fallback to slower vfs::zip #NB. We don't create the intermediate dirs - but the mount still works if {![file exists $moddir/$mount_at]} { if {[catch {package require vfs::zip} errM]} { set msg "Unable to load vfs::zip package to mount module $mod_and_ver (and zipfs not available either)" append msg \n "If neither zipfs or vfs::zip are available - the module can still be loaded by manually unzipping the file $modfile in place." append msg \n "The unzipped data will all be contained in a folder named #modpod-$mod_and_ver in the same parent folder as $modfile" error $msg } else { set fd [vfs::zip::Mount $modfile $moddir/$mount_at] if {![file exists $moddir/$mount_at/#modpod-$mod_and_ver/$mod_and_ver.tm]} { vfs::zip::Unmount $fd $moddir/$mount_at error "Unable to find $mod_and_ver.tm in $modfile for module $fullpackage" } } } source $moddir/$mount_at/#modpod-$mod_and_ver/$mod_and_ver.tm } } #zipped data follows PKSxmG ;M.&#modpod-gridplus-2.11/LICENSE.GRIDPLUSUn6 ?,rJH><2%W\##6Yr)9E d\ vԵM;CϹRtqv鶺Ï/r!uV7WjK{PӪ=M !}qN7}G'㎶lPҹ3mBvkwڮwܛIfKL޶G`B;}rݚmݓ¦푠#u׶1@nH5GYB.> 0`lSgӫq/`pCHuSJ[zs v& u k//3ٙ]QwO؁w^o;ڧЋԋ @Y7u͍!c]o>@qm0td!/w ``^F[L|Yt{ʌXM12\HNeJdJiF&I R \RHH"e9R|* ~Jh)2"#~ȋoa0y?N")?",Uɯ%KXDȥ3eeA(U2T6/~yBQE! t Nr&Q '|Ց_)[M9F$~OΔOr)YT-Fcߣ46KF~h);김DMhY;! u% (!W9fJhO10\i2*"uC bit#e¶M=#E<LIF(ꆞj@Oh1eOK_ɈJ+!"IE*,)ױ(` %邷1,N26Ir IҞ}=U*^A׻àmߢ4[y _0*&7r* ;Utx85kN dgAnx4;0Ew6 Sfco?t=F77_G{3n ]y ??9ETU# mhT#jPK[wm&#modpod-gridplus-2.11/gridplus-2.11.tmVo6~_qEѭE6Ck #ēsDr$1l9AaCyw? bY3"(S"\}[F7Q ¯i6l*PFC6Ш>!?ZhVn-z>Yl-+ 32%(^^\A KV!ZTj[xX_1,m؆͌[=XTT iIEݙ!S֭_"]SVHAK5+p\%GgEb3/ | <{b#\b ry* N1+8z%9AWȄ5aI0Yv*_mhmDt ? d(8ׅ8w񺱺zJ붞7HԞ^XP2)§o n4vy_U0zE%鶕 7C \{f&r.ue" 3x$'xjW1:@lȫS^- ?1[=wm!>pt- ? .gw4:;pİo sKCVS}O CȲCKwyYv&l\0v$ 5y󰸓8)&6gsU e/yEn,tXb'YOޫU}LZqtqsKU~޿C̚-oK&0&k) .붎C;ub][fTI:z5Vd(JVdʾfQgБG'0{7ُKPK[pFM"#modpod-gridplus-2.11/gridplus.tcl}m[:qMI- MB 6b^kfv׆Z+Fh43}~;|wyQ&i}ys o^ly,N뇃sZ{zgo+<b?kΠ=DN:w2J8EN\B}5~K"o{i]׻kjAX[ۈ+j`QXA~ռ({i%'! `|xl|{P=/oJc` p&5~8$S=SB,aN'68ED[MO ťè=ҹx2dɠdPA2ZIr5Bdau|/`Jz_zՋ4!5%{>wqt9&8a"䠉UouuMB݈7N4{Q2$v9惕_x=%ս!դ :L#k2^؊zdUEf?('9aa aERY?E32s:!$/PGX(lQZɤMz pшt)ٌ|4 )9$8*q>ydЉF=B,;$p9/1W{R9afSbS/9 p ~y' /]"+PXZx#K"t 8iMc2Q2K,NtLx4@L_O0D  ߶k( h4 +EQ:konGtM=A:JeaAe;&R+/|۪LNF&:7e+'gu3 i  ;rs׽/,wvJV@U,aQaLTeǽaᔴ "J@%N)i)!_{T$c{+Lp*PsMm~&QrQ/WֳɣWxutHts.Q&psVO"ԝvN-zo)(c;ENH-L/ѧә+w ṯ!h2ģDCh :)x4}6dB]rJΉw`ۉG).+p"[~oxAVn+_+dFi+)%)ηq9aۇ3xn-INd8 d[wJˤIҞ̴ Aʄ_C(6Rxuf0!s+$'+z2=e [9<#tڝWXޣ{G!y@/ZIzn+ǿv^tjr}; \Yjgo'?6Wmv&%z kJBCZYx@BVp& w#|jfG}D4ݦx񳱺϶hPy/Vif1m_PwXD {I/Rp.7o=%M>Ke_BG1uQ2i>C}v`Y0"^1:6At, :(  "n"Bk-DB2p  砩d!@>> 4:yDDNNRgkkOFa?ݐLZ}5s+J6Ha"z'*Go0⸣s:'v;?ֹaI_Sr㕐XZDtuF! V1^L`[~Z'IɈ➔M\櫵%0F h}m@ח@J64ɎˎJQZF&ڣ65Gבb4Vh-:X6)1Ke8 ;`/ G#QR-T9S__VE{"` >1PŻXtd+KV5ɢ9bG2+x~brA}sPyN?G'V]tJ1z,ai)hE]*S@5dr6i,s-"""EkOFv›Ø0mL)䫨bKf0Lj״;Jab3Mc"vV$=e7-֑=)awD-/ U]BSuUli£9l|2W֤,,o +|&P뇗L F[/H2\x ! 5=)/H;2o;F Ո: Lg)X"b:5qY#u{EwOB+Q,S/~zϼ/jDUx(`ob>*Y ˯-$0k|˧ ;8aFw~0!P2/fkB:MImM q_nPYtx1]іjS*<+CdAƁT3X2J>c<.p'pL5f D%5' .VynE Pq<"HҰ5Ηq(FuQigT;3:hrϒxA?8K(`f3}INT|,vT7#?=FJ%-em"cpۏ4C;< K & '-]}auDamͻ;)-A{K8bdz|r,l3ޱ7W^Q])\1 W(v8_IV9a{dpwͧ;|zSaz .(sEoCT%ٍ77akNy@y ۋ̗ZcU83_J>x tLD"p}w O􀷋RD ࠎI26hTGR y۵ˆ|JhnG{uncF]<R}?.>qnU,!PW>rcuTcx]#BdDF%7qG_8Q`;"Gt>>.eʲuVw jvct|25M՗pQUKݓI3Oэ;p+Y ] Vx̩89 l'Z^t2.U=_K݁M|lv׬yv2銾Z^Q+JK׍8bs|]cdf՗{B"? Aw.{_Fl$&u1m?ֺρA,k` i,Dž{\tuJ8vf#o6ׅDž8C!_VuY^M8Y^ed^xEhW<ҨH9ucH}ȞRq_WD]*uJ.y]º1,4)ZI!gX0. ԥ9pˆJ$ uӱШ+eBꪫ:(8= p)h_ph;].F]i? P ߘYbd{|3aB*" )㒧+P6Hz> ށ, c_[TgT4& p G1^8SOzaH{(Rpq5UQU+9MmZm[6Am}@m&Mjfp a,Ȍ+S)VM3n7"W ;iV[ȒAEStpyʑԌ!}hT=ծ;:(#r+xibjIծw]4A*x?z&Ͱ;O^ 㝻dxn"ЭKZaO#Zч}XP)3 *48+zƂ1@ : Nݮ_f;JiaA6.:@w,5j Gg$w, : l.˖BXlx+%D`>)uxSMrl["w@KQ?sRDzl4aANᩗ)́m Ֆ`.NnkL0E GvNK8ֶM+A/5?9rX*=x2ОBQ)\#a-&9c- (?*',֖Ưul;ڝgRp}PGD_s=!hPnXEF+:OQmza4*(T#) Zh[]}q0rJ$Rͭ^i$;IȣJ&QQ/3evׅ~~\Q!asq-vnmra5J]1ieVry8~`=[ Ç&m.=愶@j07k$| bE_[sddѶnfC93.u^-?5B2{^ KITfѿ, x2'Uu`tkkS2:g* iҎ`r.P(m6TRe`W =4؂(GoN'Q<9sLzŒQ^-aӏCw檥c쟌JAk3seC<(^+ -bu6JNNNh&P؜w= uZ*ˏseh[͖܃X!u>[pmn)E@swo-QußwrX|Js` oo-Q R񶷉 7{[DoMk-Kl4֝Ƹ%1omc=&xcuÂ]z <ǰiowI,Zf 'Ͱȶi2NՑSgh(utI*F_A^i.pcE LHC FNA^4@?ynHfkF>zѓMe8*:RTv! h s~G?H/@58{Q4"?Rz!Khhע!,8p@b *3U~Uߚ@h՝E4EiZۂD;iDض˲wy$ni;FO9ءnS ,0va,0<PpDE΁K힨o L;1f2޻[1U>=xcxP{4Y_X&/O }@av MGQ F  c%"|%"K 9@;ޝ߽;{ܟ:-kߘe=4zHSZVOAbY@ ݕGV`=AFh$G5&]բ6<{ o8 SamfQ'b1N7lՀ߄7%8LzFH#.F16@X}ZWwڃ=lpwY~Q9V9ͭjU]w=3Ϋܚ WT:n[ sfezi[="*"{Z-R[y5,ld t߾!q/Տ'U3߽t+ lZZPW}\Gj`jBXH2%Cˌ iBA4*3RTo4-e?QZ)Gd[FO4D933FNZ{2J,V};/<*]n4J7Q/",vmwɷl11>1@*Yhg"G9sc|x&m]逮g@})Xz~=IyqS~slB!0M8޶ݿ\50}[w=],J;hy3\@|o$L#fv*-s._56+8je61_hۑf)w wyke˳Z~5+c?ZJ54l?c)8 ڀ-VuMB4Lp8x,Y̜U0=i^yuT[p$:k$RY6Am9iΠ҉}'1Aݽ(/;!Rw&_+ *h[27|Jgi&rxIz=_96m &I0'挾 ? (:@LQ{ q,=EF?QŁ"EMvSybkB0h21RH:w[1jDukwSӉ)1ޕkIqɼ=BI"ZQK| TF"@7t~~`ejm$BAɥ .fwp0Gm "A *4j*5[P 26mb) NglX6q^kJVJųX\ҲTת%рU&&4y@5 eIh8Z~İt/;Pxht9I2pEDZWWH▊cEk(/@#֍~r)"^Iz|2 uX cZ_;3A8J1V4AnQ {Ѡcm3uo^+sWS))޳zIWV2dKkfTa cZBI3?.=%Y[y\ "] qA}yl|%Fvt@Q,QtFؙg#k'v~2 M ڽǾΝ4:N߻0f:w :ǔ[H8{'2\d{R( X&x75yIΜYVjt{qfFOcΨ;L%$E/i7)<ï  W~IUuEiim2Oj.: *}>v_-z!IQO1¥:Z KaxRhb^t2&8:b@8]Zɒaa8~.\pٖ' ir+`u:h7 &!9)jw~&SE:v(8KZ^)$D{ o1wsGK$2 <R~4-<t\^l4"' CWFy:`]tcgc|37̢ZjkM g#kSt 'q]=>zSu (|z=v-Ȱo7US˧`?]VS|5Kׁj"ɕxAڽ=9LTĎ8qWwgج P{L> :B@hQ8#>5d8$yX^*QJ\`U,yS`! ^t2)OEUf 3rH@?0Sڥ!/jʳگv"zKUo 0DK}yvfC9jsy%a>{T9ԃF6]7q 嘿-gJє+@ Q" K4Nm-ixѶ񐓽(ҰKB55m"25+C+[>Mw:+w+w>ݙ}Tْ}P5Sb!n6=Gcz sAvaTp㍂ӪhߊW2@~Kh"UlV%&fY?l46FMs4R1v]mwiz`lI e8( Qfa-P[T_Vf*'q oN.UÔlɄhKfPpxanK5/0J="km"yMmIL[{pЍ+4 wdڵwˋ;MWq:w3ZPS 7ӪH.E.2a{R]( kL)* (7k$0xMGZk$Y6"KBܨRmTCi{8- F l&z&{G|xܳ/U/| {^g胪쑑DFw@>V2'U/t rՉS%\*N0\8bX;7l,B}HZL…c{C\gL|P5PU1n79a^D1lf]- Ũ!le(#u {X-"mnl7/^': '=zXɇ(MܕhodL5l i;{.hMVt{}}}gg}}bse~`tʫpl>9|9j?yۿ7;67^`5^n WB+X^~{;tVVD/z7Wn>Lo>:wOw9Ysg}{z*k>lm?x}Lكכ.ӝ ?6ӍFO/u'"RVXls&aNLyufg%^Yt=ItIt(Ow/Zm2G泿6_nwOW[利gNvv&ll|=o뗯YNvMI%NyKLQߟlɳ7_;d>^.L4lvן?o+üΆ ioexO~OVV`vtf{ˇgWpM>tI9k?~}o>;Cg"@ .`8;:'^c-~>X}%D~~ZgHMn{8]==}ۃ/wP-_-w>u r~G(ƏB_ؤo[z~yv[[[=%O7^l N7~knm<۹O>C 32L>Px7N6ۇW+PoL]wO>o$dN~>ytc}Am@w)2\ӧϚj3PLoE/$4+h G\^P){w6jlKWO_^||dY[_>|$X'u`gO{Hv|믞MW'`H>a{|W>wjsKIٳ_mY.; bg& %6k痽۰ Vz_{?l{{Pʻ{^C=O{$ϣwDx~q T#M$pΛeyniawkk>KnF]%?!eRo:X ^Vhrp&|ds{(/!{g5u6CʯC=}lCr_D{6B,dk_Tz0sesJӋƤŇϗϚKNv7/7 zn'lyic^rce /#\(#ۭ/i#՟bl%,ߦgx{9z*=|}q?|`koVycgO/ ingdw9׫g |_$4Qƫω8b~t:d%#_<;hN??߽zt*G F&)rYw #E] U#M"-RdXHj/'>JomI-e-BTGW6{;(E^6.`MQF` y?)$  ^_'u 4>Ⱦg|PyAZ];q>w Oy /|p||EA~FAo7uw̪u{SY?xB6%JDG""1Q^og΢if;G3#^!OGx@qdj^DӽQs`j3}baW&M4X;Ǔ5S0&>.`0wx@o6ŞFZ= - s3!E3yĂ%Qւ::2{] D`zqO7\:5VЉ3Jb2L:2]#H)m&4jS܏(+/Y(!Sr(.:9|N} YIrŮňc9x̵MG~؇ )/p E?Dk\xjc.hK <ɒZ-{t9StUl 3 VQ>ZwWsxÍlt9`1 0½e~ÇgɧN&1w`=B yy@CXՁ0Xt Mehg(#ި__YTZe=kWj[rafV-K+o `tuQزa~I)Sqa obiHȶ"!Px"!UUtt B mQ7C]¿u1\Q:f!Z<2]hn?:fi Bx;@n A&ׄի5cz˭%%m4ӣ){DodcD  aA2dkkTT>Jq÷@x-`f?gVФȷwĮ! 1DƨD=?YĐF3L= Su|6r+3:w\.Qs=w=lnof^+q k(++&Jj"C|-DGJ^e("jj(9d5^0O_; ߫踪7[ t\|Wsϡ2 ҫNmxn kY AtէoE0m?GL4pv}xJQ7pH(Std M 9w$xS> No3qAYl [4dٖ} z.DH +jtN~i-AG) dQrr">ntoN~}$_>Y @1|(@{ H ʹMS &#UDeJ{d3ΘXxW *`dP;CUEz< )oxMf!v͙=ᬺ;"Ƅle҄kTs33˰6S<誠 K}?U eZ=0DRUl!*7@tf] hҡq EW!WnR AUi+Z4GyE+5R00 v&CRtë Kmo]}Ff֠y8}Ԙdܔ o-;w*0ȒxA X;+H^QR "W`599ZLsj\j5j'-  7o?3XWya.n`rQ7&w`HE:nu7VW]R{g=<5x; @z/SO+IǁfKFKjQO׆bUo%Ps*Vh^TA ŬP4̲G8]=)So5So<{qW4VI݋Nc®Iqy9?$#ix@J:Tih@3+ymL&m8ƦV7!a ^p\!=`aPb. USGqH&|4`RXISQr%=:LƄ 5W?r.M];6 Z3EES&%4H{/X~kdCg,fP}4J3(9-AY ⠐ U ޡ <Ȗb3_ĨtSMiߒEDc%9+*;ejT #Tnu7T@(c,wb夡cݵ x~; y9  8T39 e5@u[ xϽ9wb\limihFmKGCPnvy%1te2ceԹW&SQq0amf;fw YkE.f%5GtpHౖ>U޻"4 P= ? ~za"6UvqWB$ԮoL<~,A]x]՗? O:AU ֣u?B:1uNp[a}7 0.8`r1BptQ';_nogfJqPҸ("#rwL/_C c_K_}I|Y-$BO2=՛=2 &(Gt,/9tcq=vE\ZwX}]m.>-JW4 0J\ӌu[>ẍ'UˈaV}4x LϿ c-ӆkhab8vbÛRdQor8 Gv zx܀^K%TXfeP,0Ǽfmf#GӞبǡ*b:{e4EǞzpvgㄻ@񕎤o`Z gjޓ{c3R"8@u@p5 bdzQg;}>x ~(pjv /3G Jjri+ܙkPFýqaҒX2^U$ n4Z.%IM6 30ҾPҾ@Aٸ_[@ Oyiw¸Q}.P_;'gM2n{Gj]l(?:Y]k xfH?=%#k,BTC"<>%H&Oҋ^.BGL[lFDV;}/Z:Gg7VXD5NadR0Ai|=襹c&Sx0>k4, ҽr@i ڬ4YsV1KCJy4E2VRT=^ TZd@!)\)j&CWU+ dO 2 %*PO^5M^+r|GI?`pCo V+:+RuhdKX-"5|$КhhQSaVUXf%f"$: 8y%)'kʲܯ9s'7;s' I;Qά**DmF9>A[m-6@ IK Z 85 *d,:5 bk@׌MZ4UZc,VHReZKV6!)JLu"o9jԴ8lҍc_  @`&=IE|Gh6"_ p"wѢ3<2pthҞB_$Qxd#˥)6\Oy^8:JXw6pdqLsmlUnKnX ۞|ڜg9JDNʤTERut;bFU@@ƝjKmb~$ǽN97tj՘Sn2& NV&k̂^JԊZpnDf㫎r5=,"Q"Hlv!~,ʒ8RŔ_.LĨ dXf4?fuEд{f,>{ ۷2m`Ri ء7k:_θ_ʶe<̀\Q||eKRqT3IG +0`fAXʅ:*(kYƌ K,hHu,(NK_1V.VJ KRQꘕweG"]KiU6ϊLz܀L3L{1SBJDaϻǧ#;m5oF\q2{Oɠ-:FQ/Nh)iBQHKz 5X4ՆDEKd#S8f1Wb.pR,v#wãԪ:r\gfcJ9 }vY$rde˽`T8V vgX._%M\UDĚ$l 85y\?Tٳ7DRUH`φ)\9F8y$ P YI#땞gcBs_2z 'eYO~ :zp <-fr)s1H Q,vl-SRSՙ'h%26͒q%\k<rs1m%xgqSt`ABD~xp$e02Y7ç,"_ G%APi1%4&ׄX 8'B LȵPi$ڒv7Az{x0p>͒BF҄npQff _ù#*Jc19_Equ'ܻԿFzWF)yg0)VM|%|lW\HZrLL)#ϳ/4E# M6eқCфR88#nA ܅r݉"k?&TI6&ڦ^aet2te,􆺝0UkaAT1R| =)1=L1pjt#~{9」1 0Lamm3, QEQE ^`R^E6xY@i,q8hi?-,on j/.Moef0b KK2LLL3u3e 8jdc,p`SXn=MW+6XrzXق]&{mpԦ7ff3#2f m8NfKHޟ7hn+oʥD]hrȿqȗNt4L|y@}U\U6:u=tҵAxlOsPl_=|_(:[:ErU]ndp xfMmJw[o.T,6L)W )ZB.?]53T?y㩬*Xq!˜,O2e+Τ!L V8s L;gb&{% f*mkYd _ъ %ߓjl`ڽ0;XǻT;vc~ɉ蘗ņa h+fQ󊆵xt԰C l^pL)4&VY_oL^i=el>dJI%qI {ڧ;Ppj{MGש+J'Nu<biBz:;1e|Ge|<5\A"M_F9]} )ȽVfQG@[v  Jǔg.\R>z|ǫhF92NpX 0OVЌ@QMWE|8u y;,$rE>޺]i7G$9Ǯuh>`0 Ժ1]Ӎj-$O qb~ } *k>{pȢ2Քړ(lWX _}N kb{!S>;O +g`eMt6"0͖^l ,(: ³L2sʐ碱!< M^&+=Os#΅s8`8 /bw۩&wͽIH©z)P#zgtB)h{ Wb ̪E.$B-_BLŵ@QtWr^ȸ܋]~GY N݁Ro;ȧ\j9L +:+?"Oo V&e Kk 㦿{IV5 ҮG@d骽kD"iOra%t5)?{q/P's<%~M]1TyQR2fhsץfڊfNi4?JH81܇]t) l890,y `+A%d:rjճɫkINy-*H_v s&ا/,I:z}˘ 2?QwN=af\;v8aAZRhbsŻT6^Թ_;d$2j-( `02`)sUdAYZgE>^k.ͭdNǤiKtfw8:/J{6hzYŤ*GZzH}.LՏ Bs#=aw aI|C^1"H+>3+ NCtRPqP/Fx)>y{F 9g+ŏ1<Ԟi=K[hӃ3AУY.`,_;Ku>+s `X%L_2g6ϋ;EȋSp3V1ʼ26Tf.gyE[5hCD+^9-9#3fEBnIu_J8"$!0e`ˑ+*#]_7W?_TşHy܅OȢR3xɘ?AA51G͔+L/+EӊҢ<왞YA m_q`IPDoeQ?WQ4쁆tJ8x \%b>Q,vJbJzyagP X ]51iGx uܜ&R$ Ud z8]="i=n݆cع+&At^1$ {ᔂy-y vpTL$OKoC6&,$(p󍯀G͍MчR*.¯/UХ`qaOԿTA;'i1|FwtJѲ]Y⸊Ɣ0AQTYkiW6J Sb8OAOtB7!ZE/1Mj^mt.tCݥie|sxhhyV BHm <#*vAoj&0肻x0;L|M1O86CYlsBn_e'&&%5|3u|l<ӏײ+V̒"*0͜01`T^P#[-[Cyt\A*40p-m(hW*Z3rٺgW"VnSݛNF\DhVb<yzi22v7PQ}YTvsԹMZ8!AM-Rvn\/ܭ.Dg=!nmiY&BK͛aLf9:!$^ի+/ @@^#uj!pwG:]\=9b4Ow 5F)ERiqQ+yT 5JC$Fд* dL)@~[AI[|='fdVJ)B!m8̻0#QM#gy/=F,إo[8@=:LEn*C|/}YQF-2Iș- eb+/BieN+O5͘¤:/Wxuݕ" 5͜BhT\8>=?O%\/b3..s$<%oJ6:IU 0~ݭ}ΐp4[ Q*A0~㏄q1?Ɲ`}iyű1U :%[eۧYۧukZ>,+?th9Bn]%H+FOVNPnOl^;=\{WD \n&g9?S9j2 n^lD|7^QF[r~Keii`y+RK!DZ7Ruh\/gcP.u[;kWrNlkn7ѡHT/\Rܟ `/( G}`sC>]~;'#qf-N 33A@AnImS?J%9Ԍ"߶ xYh_MP6 F04d%aцgM(ujn^/f1HdU6UWRHv{TUynEZL-k-918\&y~b>OK>vx'l~@4t"icGB NLKTyu$WRlSry/Pҽ%Gs>* i] FJh@6}70|T:@͋C&ق|o4nVc0aD_Js`0U c (劈6dz ~~דa+z*%Ay<.2( m9εǜHo!%R&j8c1(;->DmZr<~+~Щ{ &6xVx^!Mb>>~nO<=9<}Oi4dyV8^GrUg39WhFCWh:]]72b9"ԟ>pf>pWLl+)o1צpdbSLHqu>CYH\@?aLykx-{;_ N穸2 $ucdC7[!~hMֶ[1f=^ R%V 1By ܶU9Y(X¾d- ^|NzPluarn\L]&]>fV$hW0ra B<5b!W[G1 \^S#aD+€r}<CU^80hU1NݪE*DE]ի(Zd߯(9rr>c~}#\ L3.2G^׌0v'8 5iYL*ģ ګp}0| q S-U̳yqz ͇G+GTh# F#N|Ȓ2IN|nk*(UO=_eJ1 b x"x4*Dy1'sB-9ok ?\"Z^AG {Qb|;1z!9~EVG~x[lZiO drys֬] ~lIWɱfJX`Sb{M57 Cò*ySΡ۝a ڑ1.͸83a\Y,Ë9 o\*v(1.R5Jv8 KA. ]wwXOV0 #3vm.k}C_mcNmY3~>\ף@PY|g3رtp7mEZ - ˑ/8Xۋ4s *#:nbWww@n@E;ŝ wN"LB%u$wKu 3$8KΤ!?t-t$6a>ė- ̩QR2 ulɊM2.A*[~Rn0QKМtLYB4\_p4*kvziK1iD*^xSBj+aݵ)O(%vpkRv1I.Sz2GϷofBSoR(aIBA}C̀t^ObsVW%{+FQK1覃_(JuzCi-9T@A$-ε-|_ ;察~=z;=w;'~ BoZcfpOKwL)΄$:obnaelg‚w RiGWa@)HQ&,2 [@9S($pX.AI5!l06UV`}<.ز@n[{l6gm2 ޽/IQ1fu~Kw? ӷ&4BLNi*'96^cj]CY$P}6G ΁)M9 IndYj֢ROd簁G3u(0-ZX5.5W癰 |)uT, }UƢ]RַK-˛K0o:Ts *m7߰k-g|d%**V eD@1D$y~m/+͋xYc_2D e^d:D 35VuBi7qH }0vYE͵ ehS7\>&N2uKK+ו}2rފ1AX@ɂ16>לĈ ~oFi~}7g{2kDKOuU^(ʰOɺ5Z%e9d`g̥R]2l @(5l**a-up?R5fWMvi{)yOfb%S]V_җ4}*\1;y9~-Č~"+xb`ǝ 5S:Hp~?ĥ}r3Թ5n  xUˠSkU0*SgZJ=߉yh MQSWO=;u4;$[4gwen=VWFXg,bV?`큓 Btc=*xy1Ո.w<ɅA[ ~4iν0M%{D{jL|:- AG\['G:<{;,\VZ0&ήޫESs3l63+):Z̐nG޶չى?/͂ Ea?ra|KH\T)FlKʩZ =!_nSx `!_)"l>$N\l`@|DS4x[c_U bfWӓy4QNL9ekܸXlʫ9zh*[GPpO54 Z?B>*s9 ^FTdP U!-pHg9z hBs8;Gi%g:tu QDܽ՝lQDKmxkgq!;BrC旿_0(_}ˡbizb)~q;+}M*>l:|j @"~|at jO΂K;67"ӼH?`o&l좔/AQî4N}9a-]!$;X/S,č6Ϟo_~X!$Ä zΐ 1vp͢#eg3ҺpGepe HEw`LXth4Y/[ uEK 獆]:"`7.@>cvwT$:3gg]pQ"#H_hhCV.t uayn&EwxphƠ\+w(]? sѣo<Ul6͙tq=y*lXIޚ0k3,-/ئE`!~lHAk̑YUF*10Sԏ92TޕL $w?)co co Y>l% 0tY֬GWZo7p|2#7!yaP1 %[/NX2-"ktFmȠ.A÷l#bxqVEaE'/r)Jn1ɖ?f%0^OƓ2VlPpqbK#2S#iѽ-EN`EhRZ8pE΋S%o!][Tu$- p{ :"P5^s(|rk!M#V:#NwM5Zbn;PN). Vs*iNV$> # .ܱs7bv69NlJQ? ZnoSU ب1DWqy:Q}xdۤ|y4 QF$aܘ ouy7>-.to[|"o(0Lbsk" E7{]L9 lV@/j\5[Pv%WCQ.|s~2>( ؗtft`4hv|qݲX6ӻƨB~eR"f Q OS_!]jo&aXn4'HFK̅[JHZ@aS)@AeQpM)T*,4mgG[;.F$-CȃJk˳J';wh;Y(R[0)/yNе: y${$z|x&Zn+F y"EjH+D_am+,t)r.] kK`~q);KT. 40G8Wb~SҘEYɕ!J|h^ǏwHCL|tF%pUMh`v7pR,rO^y\yc;k[++<;ji^yd}px R7!JB&2v̚^%ם\i 6^BU1jzYEۻىR0\ _M2>D{Ƙ^]|qT$.q: 5Ӛh7!Vt=yA}m&T{/\twOvrvOx4xNQANA_Gv`2"&CKr=SR P74e{0eyz1f q2'PEm| E(ĻOhHk&a65I`laGR6z^pƧ _p-9fkV^q(pVPɴwCyW;Y9*$lLctjd/;wUm-Ż~bbmb.k:1 Y\tFPƤH=swD,dxXW61abxQoCR]X#.$6vݰu:5&RC"vٹ36xp]o}@d|ͦʭ-f U[>jɑvʊgaQ;/NRœ4rȮ&| >,ƿaq%SFF&$! tsSOH3nGꖼ"㓆c鯯B$so(MB s 좴GLE ri!/E^DZ%?f1 idF‚!W&괈iޓJc|!э:-'KvH'SPZEjM?`yޚ˽uMuu]ڍmؕot4C~ XM0t!!Fѓ /}VI)5Fuhw\t* fL Xd[BYxl4٫ xMwH4u9h4dlw]FLrPm;uj]7Ta[)SpcӪ5CdH| WQ8.8zIqr0\Y-SL*; [ ;~+: LD"N;~1KF/_ os'mVW}FZ=Fǩc( FHIgCEix[%*-ԝX+ZȄaia(dgbڭV|'3b7rNUqn`@ts,!b+m`pQ7@i߱y{GY{qa*~ѿ0^Nr ;fV^d<]ΥkbE0f "$B tb`j6PXBVXHΛXBl!ö;`hq*L}l`E& [#%`oߒop$~!rT\Lg}Bڤ)!8 +k˵ /5O4$sNPӪ1jq9cV 6m߆XIWa8-o=:P&3аmEM363N=X0>"1d'SȜ5= CtoHNΑɏhl!_i͸B0?5ReB9xޥ"5!!|/3&%I,@>ۖTN먛pM%cg$:RV1xN*mꄊ33{d8/~Yu7 %n~5aä FaGLܒOL2X 5A+&Tv5}HjRRB3^Xo]֪ԫ\QERJr8Ou> {R[- woP!;s MzSׯCDMl4bw!+m;wDp#v5kwC+W9}c- Kj#l k劁ym}cj4ʔr@le`Ul@eӋItv]]w D6bH979! g0RpKŲn@hr|z˔袘/C;m|}( B?R5RIs7 γO%NRz.Qa1Q…0փvAkwܥ>)| ᒈ[Fn%GS1)5@?:fN[=rYثı+9ݵ$i݂kW-2ZM/W\ a{ F#eݮ V::rҦx#Sѵ1 7q PP|&iK놵39e`\9mpu/S~WVi`/ gR|4A(lDH׭)|Y,X`P`#<A@-dL&[ c#~ 4MJOrllBRZhL:k$;ƠKFybp<~I9sHzV$ub6g]Bo&)vDmz*C.%0>sB}p%~"3AR>龗IhKHXEhø&8H{yR.gҢêPυJa!!Q7i B>*&u30x!=S^YksolFr9ǀx tl~zԌ2XGғ؋Gm^6:b9~%J=Z@e{dkiU{.VrmiE%VY;9sJY}{z0i>Q@I #/4ކI\F1H979/ePdf.Ks\]PGĖY0~"(eĂճCX'TRܛU$r>H8̲ mܑ(P(q}K18y )MF 얳ap\ +ih%\;PLOmJPHe{KW`U8_XoB.{A(&bTAKy/:(ڍ4@f#pfhƤct+͡Zg^ey~.[/dWKȽ bxX 1evh_ۋl_q_0dC6^1&](l TVKM}}2r4'q2mt6iL9N*Y|l["Lr"[ ]xRXPM;pr$ѲӡYBp? T*A0cV0B餁~ՊL[<*w> ׾U- gHb(M1`wx 5mqvYlE>d+;MnBULf,ZaT =kvme^Qc>4 Ϻ5@]TtiL$niԎ GFlBfx5v TV+X=]KC/(>`@%HUC%<Ԕ&*]}]΃9‘`8e<;QҽQ>!ꦄ!:IR.,R<+?ؐƨs:`)Sy@9;(˗ pצ\_p?{-I]G艱izܳԭ zkyBEt{JvMe /zP|]^}bޑtqxdDiD9@ON@u26IexAȵ|-N|<[19&ppPKSxmG ;M.&#modpod-gridplus-2.11/LICENSE.GRIDPLUSPK[wm&#modpod-gridplus-2.11/gridplus-2.11.tmPK[pFM"G#modpod-gridplus-2.11/gridplus.tclPK۰