binary added

binary added

2061 xL];L<@@ӠEEEr:PHt X{@$"RLm%1-kE,u-ǖ1t#L_$>=Im
?oD$nѤWjj_ ɶl]}}SAj#(46jѵ"xd]#	kJm`ܠ{`NNJ_G{+8g;^eԬy i6h	I8

&q<[8)@J18jʬ	7e[L	TC.34N%Ԣ+ʰgxT
\y**T
Ǭv$<(DJ"[m@j"XQڔD\Dt%(x,Vސ_^=?m`HpT
0I	0֧)Q	ͰTvT=JT;B=imZk,2Ֆ=h:iʎ:T=`6
ڷ`n EM!X I(0i'н78c]+`,ʒ֖Rbx\Z	bHrn%]$nj,\ѴJ$yQ']DϦL#!bL;8v"I/zr92IL2E:o!D;{7 68ƾOi2{

2-)HgH(Gg'e(XD@4X8 SK<)
=0UTRN&4S',c5o
yK1>^ihOu:XweTf-5{,ݖ <Z/s1F8
H;&<Q03D'U^J(I 3)Xc`WXmi5j(34j/l
(>W($Ld}ɏoc(W>ӷP#`s:Ώ
`vh[m-Ƨm%i?jK K
XL.m$蓘)Jd1gê$F#,uAq$4,fFv
H $
jh*&`SƯwZ0D Jآjݐ'T!KZ$$Hfʹ\IXv PyTԮy%eh8L70 _ xU0֓us'7ѹ
KLkJݤƈTE !RJ3k2ᅽ8u/7)wڊ_ X55E<ޭܗ)zfHśY?s_Fy L$k!kat"Y0yHقK#1Q5ҬP{hHSh:y_{u\ we`wZ
"δ	n(#Р_6>p
8ٹ)7* 5uPKkh(M&)I*i+4,M&4@M-`|c*wA'
m	f6ʹ`(pAB䖈dZgXPG
Y&	1%:ClfbSmMC	^S
퀜6^3
,[
Ef2A	E*

gE#d(ňgbI8!.O;~pW4a"
9\c/<J&P|*2?7%80(	+:<G#=A@KfB5'CyDDIFMV$'=SHTq;gNU,Y[_?`)Ds]bcQ}lmekn~oprtu-vw{~
L7hc˄d0~Jَ13i >ZΙj^E6¬XlĴlĿR־}T8PP],̹͵c@WzX	@pf$H*<0i@L;U}ӳ0 `@ۃ
<؟%Xv*T`_P}zVf̐VWU֙V.ǲ޶dTjItpvgTn*9>/f	0#<")1'
%7eJ/݈D?8jGP!`qmU8{
UVoYfe~'=O֦{h<k5W]{xn}}@($/
*o.ATAn͹JTmS4
+w(ηwsi

t/.fVVDQ^QgՕ5xr	xKs'<B.u
'tfeV#r4I7kvSzd`=y]J_{n=b}+߫n{y^Ywgjvghz=|ݸf_<x*؟v|p`SN]c53w`
c!z,2XY^r!-7U|oGۤxUE5y_W7)O]B#%a?3VΪY>xwZ~VnyqXpe7=6pV-/䮹fy]ྔ%tQS:*
;YY˵ow
;=^_uյf`Hn)&	_鑑XD)6RnϿ+AJWwyfuW=Зo<̶#	VAg`xܶw'	ܝfu߷7
`Q=ؘl׿ޗ^{/]Uuܴx/t
;.	A۷YP#{lBU#-+~%=iqe(ﻭ%E;go^Fwpe4fdtXũ+& g"-xD}Z)'9wvt\xX_8 PdtzUW^|p\@x~|<ժ\YGD%pH;~ۿ']w^7V`2y/]OVwP3fJgw7. "j~(˝la
F`RnbR:2rf4H	<`S>%x@e	n18'|jp$	f\$`k#u}v^NFBVnmpB>zzl"~ xW~a>Vf~ymA
kwcwF!$nx{* \9`X|0b/Pɑ<~<B$0=`02Kw>`<|bʑ2F<8gf?re	`S>%3{]A~o0\lŭJnv87X~V|`ԙV`|o~ugY>f< DTi@0~J&p	<fnP95rxUuY䭹)	ݶ R!+Щ.xǠL_Ҍ;X.R|jj}jm6~dwjxjjyjmz]Z{/LxbH
 h@x{yR{bl
o (C=	AdYdmwod	o]wjAoG'~M7|mۿQTRr|;y#}O ~q| Pof#~|Mb~# |żx	wdbo dNyEݺMd 'p5
=ioKbȝy|pby6xy
xv}2xȝC)+& =!fa3Mjo;bwe x`:}y{d	&V-loxpUccn,YDbvȋc;w5}#qj¨ıxby#HdxoywlxՌb_%RGlOvbՇ$j s#$~u-`lG~+a jl'(g@Wd@s HGbz}1@jրFNE`Ԅ`*
" 9)z3B	0Hww_i=`Tk)@oL<T5¡Ǳ'`
.V3u!YlmѬ4LC3
[#mı	Tsn:6RXqm՛n7ϋ3n9""6<#dł6LX#f,
؅3%&l!&5sm	"KyQjk66dk^h5iR 6`rTGLf1Ue5fCq8>+J5>(|(?P*M<?0"x
3Nqح*j6\)	J.rjDi14	@lfZ8'TTV(6`oTriՅj{t|:
8{|p{A|C{P|A{CuABꂫP
|ʂArP\.T*ʂArP\.UQ0WR
PXT\@U5BVjbWjbYj V|A~P|(H~t)}:
O~a}V~A}C]~P}(d]PP	k~p\d.T*ʂArP\.T*ʠTՃ
XUVTb5WCTb5YCT#+XZKW[
Psr~t:
~~ACP(Rt:
A$CP\.T*ʂArP\.T*ʠWTb58B'Wx
O\+wp\՟
8\*+cACP(Ӏt.(]PPϺCuAB{݁".tJ:l0֑s.Tuap\HZF:0֑ΗIBK<s2PlMcVlCbn)X4sCm#TPYۤz*iZ%RH6[(zF7I]i(ŅRc74P^[Pc`
XZh2Nj߆ҋ>/0M,\Xkzbŧ?t؛򦯵Y@ֆ"=<(L&@>&i-C	̜Hwiwj3YJ
 }4ӜLxf8M'
4A"P^cjSyMk*ہ QU
&	/!oV&+x;
<~8|vd+h{dOCHSfHp{L@yH	fd`W,#$m

fV@`,ڸprq>GN̅`@90	v;_)3h5ꞠQpmxȡ8Z
9Ly;謠X85h,0/2b`dS4\3- }\8nCLv3e>8;
NH3[7c4om@7Mǻ<v?E3
9 8<d2(<	3	X`pP/_/,P*I0}b<Ɔ
]7`O
ϣ)If =x7;CD~P8>x_4 g"xц5{<7p3̒$H0MР@~͵Bfg::?с|-
asm`=61}b "'{`X
*8{=S0ZGC57B@e]|i	0txpse=8,9p'|8}#"2><Pe	w
@;3@TJob0=55|X<]rpy]8T6ǻ4@"@*?kO0'9.];OW6>M0|Db;Cr%U6o1N'\po: Ov	Ç-$G;c	F.[G$I!t?8p fFj(P?IPzОݔ?g}NmBY	P>|CXāuǱ_sDKd$Qse
Bd[@Rځ@,v
|XP~=,Q^<x_sǀ#|wfީAe3)NH`ok]ͮ	if>@q VょvmTx#,IP448ԀEq
ma߂me7H3|~?c2 PH!G<#fAP @/y;Xohv9nKfm
<E[Wߠmi
4@lcs84y,{'<
Yr6`n7!8Wkf|XPɀq[(dj'	:Q1!}'
sq7ɋ݊0Psl`^l`ɱȵ6!9
s$ PYo Ѩ`4+GDL"oPUBs@Әsdp@A7lq	JI.D8`c0lB*bDbslc($lsP@gFsH'Ә	;0sy#r'aB5s7
qG! <LP;w%O<,
xa J m: c>$` w``UЏ;ℱ(젪0|I[Pio@-bmXlpK83p~5yvKw?ma r
s`ph1Ѭ @:y|
....	ښq<(ۛsmm_j/o6x`;	y@-P?s>0 27<r<~FdG);?Ii21>m7Ĩzwbiπ6b0<|pyx\Nm6@xEwPx:`=K8=<==wÞ9pw`<j>3`(Ft;$v*i`=9vwʗ8$
7oyry~(1a.h"3~g9Nh^[Ǯ HnQtmQx4nx1>tnU=<%ѹL"m2Р
P;G`D$QrBfWW P@+xp0 l&($̈́m3֢^=Yp<`||P<3pY&Y:T\3p i<BιT3W&Bа'
韌x9yBn P޷=)1@4H/p|iZP%fʍ0fLJtp
ffBQBf5z:z=OIqC5ӇiEu6մtYmʮLr/ICY7*y+0%tr`ORM_{E1V=Rq=N~G;Nk*6ؽmɷ7s	onTynFm9AǢdސgu<
v]⼝%hoH0ih(Lvu𥺗'A
8vL(ul{"zf
q/qnS颫I3Takh!Qu'0&Y䠣9v#;#Y&
҉kHf	z*MjB<o
?tĠ׽a6@v8`p0y(N9@"
6"s޴]@ĝ-d7:l099F<CR79v+0y'G5L8Ӵ9w63y.:?NK&Qu{j!;	eo6R~~{ߣNMaHKEX)JLw{x9[}sý4-bHz@w
o0V3(əboVĠWz(Aw~i4?M&<I6i97B=J-dQZ~_xey}R0D
zUL\x\wI0[ty'_(mqUp[%QԿ'D)f+ro*mtuz]Ljx)RsfLxO+mS4pm*74,4&y
%z @Q

	(SLy`!;'1b-&2a4Uެo	煌euaQeXAA[ZFe8@dF&,z_X(aTQ$8xyJP:mdL=Pj97|qt߱:2cAI0waRa෦Fbx<np۸pw{0
4>@hU6c_s=}yC7I\	 w<@1BPS 0}x4ZD?[ P3fL}9þ+΁d	~4 .FعFa87:@H\y.h> [g=Hpq1'ځۨ iMFh-jϡs_)－CFW4_+4Gr7@
XF4pz`;X&
?;wKfh辌߿_hŝ`4Ap4/Hg=ozJUF`lњ,DВtdDfy`0~0Okq;Ofó)њ,?u Kg[?`5Cp-e8, 8"
uj(DL1/7сp0@`$VD@b&F3
 	l
L;*D7C*5(@696$TU:MOW;*LSFIADCOVER$ +,U3L?FvhCԈL5Ѐҗ^΍_8cT&5^u8N`EZM(	n-iiʍp`8u+P_rsԷvO0Jm " 52TmD$;lDY40)xTNXWZ`MUkee5!J?{;,)L4O\+.3U,qH~=4ߢ21f ƨL{H56v2wQK	].?ߨŷAIAl`u LB|K.e}װm?KWD5쩃GG{?F)Cd^x4"L>~ JLsp?
Z0,_Ʋ
b7UM-,la1h %?L+]SVW½}`dI7I}.J'͕0M`;V8o
aui
-`L>Ulvf^5ICS}_KSC0@ji{	NԃXS5IL'mɴ,)~(mN6LM90
L(v~pҥhxabmл69OM8˨R30e`+Pr#~)?I
R!Q+v	8rJ$!{y )?9mL30pJ=#[ܷȘ*zː=7%)Z~'a3i]LO
v#U+[w?F))KR[ZW776WRTcV	 id5|U<s
J_ȹ{`])T,`'&
aRb.Q}Ja߲kS^ʹx_$1 $

	*;2
ZxTG )ǤԀ3n !F	s)%='	v/#=cL)
w2Z̧kV𶹪ZK@0zzMdɵB
vJKNLQ
`waNcaÎ
i	$-8KOWX_^5G.j*ju]I`-bZΜW"M[X۠ Ms/vUy+w UL)0kj,m"n O
4s8C-XmGbOXcnrx|,Xb˂A1ywHZ']ՃHUhULia7
J8 eq^Rf1!s,zllrlyjFq͍hBϓ#Aڙ+r*s]J h	t`Z+L`HYYh)_`
'! !"#f,/0%)147lV!(^4-.&7*258J+
$'+369?%A~}K3S@&9KU56t7k#bs9w`u緩l:F6zߊA<dblX.cTq7G5Ý%F<>ßz\ab"\F`Pt<.]N9qv-aɵHC-($C.Rͪax?r&w~;t-~9ZLH;_I?i+gx÷|4>̠UUs
|7f>&6V@*Qw$D|c]_	%. 32v2a/qӬ.ii!w^'ct3p~HDh:20ֆ-B~GWѦ"Bn	8'ஒm#
ޠVQ
rw
6}	꼿3nZ/brv]ٻ:ocݶV56+8}7y;D-tǈ\$Zq	z3Й	{sBt8p]1d/kJpX65+zsAX
61p@P1`pbQ̰f3e[~un Nr̺c1π_1lDDг>+X:	;h,XA|ż?.r59<AC~-D`WP/bۭkhTȽVrOV.2ŵZC=躡 BHI	!3qx`3o0*wv)ͧP%p&ƭBrcz+)
(Ws0{Yɦut9P]w3bQK7`Df/~|1UTJ5	S&s9qs)ᘑK ><3	l:A譙$roqis٩ɑȏr93rHUTs+j^fM혍?fiK=?ٳ6
`r>;&%Ndq.]0M&KCsf"Xv{fl/UwrƼƺ?֌B:f~@wvg@ATip ݂@o@hg.Dlg.}QZҘl!TVcH8i-$ a'	'39i'>s1QG%9〄l[< ($
a.<q	O@Y$"0KZcY6#`I`lu#9'8sGmA6d#=fPZ"lTRȟ
hnB!plAڈУRot\ t	*JA3@[#: {$ÿmh=!
ap
aЍ&-ۭ%7]04,%Qv{nWtM.OP[
%`|_n 9hW0R
&?()*+(i&o7y3ku%w1^rHf4coj->S2

 h	 @!H"#A$%$&'(j$@1B @A5Q8$dD(',xRYߦXw`~S, 7M	薄TU{:HACoELPORMI @(H%NY`Rh<z9_	-YV"Ģ `h	YE!<f.Gcf0t7EeYȟܳ"l}ނ$BuITNzEMQi~?㷖yBz5]bddcŹ^H\3wXU0B4ܳE,gf5}O?6v\/훝={^dI9x4wD&iSgnyL]4>t	S.CA9xOr7嚮UGs-~x24/!"<U੩D}PvYu~}犴6Cǋe
{,8
saht5LISiۛc}l<0eɽtWkm4L+ͩ#z>p|qT*[8w]gixOzz+̫~q
V{.A8J$!N NV~@iR=#8J۲>F:w>E߮~ibrI^<̿N$kޣQn3HC
aAw|I.2_w?ey^{,}
VA|QAϻepHSgi
Kݻ,4~#σ[,HM
cy]~
#υ`ߌ'~
ir-G(HP9f9gzHG@'5"t(}\'rkvYOcMg;,	=O\'|\',
\'xΫejnf_W~`h!MD&(8ˆ93AFt4N"
v
0+-}
L)12:=BDGX#)	(r%,C./0 '*$567;>?CEH@~}^@iz:H<p*@"Q=ar`v-6$_N<L9r9E~*u4t 3>A?s~6};@*ehj..rX0-^-,1rHK8^ 8TIQP8%F%a`H`q8V37xѲ	ʤ2>2-=XqeiC-IX9,:8=AGpfQ.&`!d]{%)<8\rX̜%~{	MB@4 (5c*7;Np0$Rju)y4ƀm\FusfW-(Kv](=2Em+F52Zs5ql{wT5'N2mr~ɴmHKFjbc8qH"36sf:
C,"~@$Ρ}~'^hHSlqFR	CYéG1TjNV3kP@-
#2=K!O_¡-5(7Q9]2*2D54^p?hqC2f 1RgJs~ִaZd@dF*%`kB(rJ})N-B.lht&hkk2$.p0yfE-)+.P2vfڜ`)fmĄ:wrZ%76+~i?3hplenI6 k$Ɨô8߇apϥp4-1 Mw}@pwSQ8Z:8
gL0OqpxN&~@;؉!!GRɈN\4Hs&*d	AidAMF5b
NXq?j~!$1_7Vs5RMl#Bals&F`/6Fa|
*:O^ 'F!  8@ )E
#TD7":: =S-WkK].7`u>(P@'oC%T:JfNAZkHDUYRkGAE_MIX. ,87ctuS\=<*留	Qbd=y HDsy$יRy~\8"	PԽ~1Nd9
Yì^D/x>?'5$SκtXNu)gNGkο`cJ
MyO?}e;%LOu\U"ڄ3%,;:<_4wF^ jLH&5mRy6|kE>.󝽌|[QIޥ`& ':@Ym4H|"?sO2('3	?Lվz<x͙9~6rwbWHssf-7D2 \˼L`vT"]&S5
DiLwU/]ZIz}[.Ӗ#v0`o3V8
9a6LS'ɘ퐷:^ƶ}_iq0{ڮmLp+͖#;IpSESV[즍b\qݜ8;WcMIĐ0ө+wO#ݗۏJ
y*]8Hz$U!o )?9݆LPW03&e=#KBK6/<}J)ӾꖹtVk5W3J=V+IO2|HKg:~bxE7`^YB/`u+ux`unfԂus)syɴϩ#}=)^?g7᳛
`~1O5
i;S׿DoEFGOPHOJ1ː{*@``3"ڧq>[Hk L_)0SbJ@[_,Xݱbx	l
	Nk,$i7
CV8g7ߑuUxY)!	ף"`2!M!#$G|
#&"
%#ju
	"' &7NO$/4Z+Rw
xF% $t	[A|~?~?9KÃEuTN1nCde;D;x;`$|7>-I1υ+A|C*D"_.a:?Xb~/Uwz_$f13a<bR:<b.!'8D[C.hKqM90A1gtYsd1˿
,I=w4/HiZ6D}TU3HJ1Xk՟j硱>B`z%W|0
NӼy!&|]:iv!̬y񥁰@v"RpӴmY!U38ڙcIF[&1p歞N%-ke2yx}֟a&&6[AǸ>T	rYw%lTp)#%v;,L*" pu M"H1%'taÙ=1<NH,:8&61&Ǭj/PNXGqR'=(&W#8-:v<:3-Lzrp4v.e.5D79ы?f	s6639[SwM5zq1$0z(v,g	*D.6w0v2HtkYŪYf9]s:
r5s~D} tnjL/1rn|t!+C	/Np}<c8ދ
obq¬:wk P=BcCcr[\5s.pٺ@
^˱J$q
̵
ufd6aV~.7sRq.p3DXv1䅠s5#w0&blwqkͮfkp09r<$?-pf,'muk3bq_`\@<D9
*T?0cda!9R}L}"-o0݈.dd`
&v6HQ$c'y{FA>8paQ0Es#*Y#Q3$ o6=L!
Gḽ];VR29	40A %Фxب~P@
+I/
N/p2Z
!lg"l	iG?!Dz#\M>z 4
B nho([35Qf"@`a_dbD#Sc't7#Ll_RD.u7Sg c&+TWMI:L^dUNePbCO CeR2$hkk+^n!w5U685wǊ0?ھP`^G) 	w;E^
lo/	iiE[T9践0q
)@wl\\8Cw(PrseF^?r5*&Q[ Yt
px
mލ3|R$U"wIWsg9)wicNE@`MjjȅT?\W0G,L&rbq])9CϽ3~}9:'4
Irl !yLiHˑ5^6e~nKc	.ws?}[
[I`#> k	qc}J<}c??K't??1x8	WP#f 3g`p
?XD"0,__
-6%ٱ7\OF$Շc	 ˼L=`߅]x]SG$`7XIyT}f.J=N}40`68o
aof.8^Lp}_1C_~0@㑽bi-uKTILvm5)!(mzL}B͢:s-ph̞$9"Hɐ|p
K=;ByLY8rt!Fΐ0_+F#}
U$Oavj8gS*$!T ޹lt?>L=/
Δ0}ۨO=#4\$[}uȘA˱[%d76yKiMnSrdp(w+)73yrgT}ڧ6.TRq =9#T[K
J'Dȹ(}f%7bkf`/y/bkIy6vi~3^j_l!"	poɾV+ٰW=+x\z ]T {ՠn{*:L	6)Ls
,	#=cDKit!ay슽&_6W&
x`"cf
ia7`$T!`=3Kۓ"Z
N vtе(wﭭ Ll)0qka{ki68t9_LJ"w
xb=3N,RXjE#'A,PXYzri1yH~]N[HehL>i7|
8 K;WN!;z4sXz؁;Y'Fvht6{r.퉚x(rs`H|J ['h)	y`5(Lb`Bm?S3he+28;>5?aW/(E/;]CB/
 &),036@NOPQXZ\G^abFnMD!
G@	"/#$%.!'*-1#47ASTUGVY[]_cGHJVtq!,X$4LfNDKh)FNa	kv,$\br?iO$
[tԤ%ñ*й|naE-ȵqc=	F=J1RG!`hqEtQExovMQz	1T05a6f]PrSO:?p-+~}2/hsK+Www|:.nŴ{w3f:	fdL+Č$RQ#OMap~eX>nUSTx2r$Z['ΕcUC[vb{>>.'"Er$[QeyDC6A60Ga_HNaxxP@>rϐ)B1Aa]<9	AMc0T:Z1px(A3f<TPU(qJZ'c wdTFp"w~3m361:kGIy!m$%&Ӣ$=&aѠrW¿mp:Y7plTy~JT*8nS3id#)`)T8n<e357]ÊWn>,F5JN2c.G:K҆4papD'83wO/eB1I7cI5ƉD=aaY:!ӻ
0ӽ
05
pfcPÔfӉC@]?
vÂ%=î
.E2
Pbҵh5br?ts܊VMf/1W_6Կ1
Iߪ??;VD@N|ܟ]V$Rv#lc6
KKjK
fv><BSP*A_6EfCGHMU
"hht
JHF*ʴhxO?Hu11`p$0Lb.L)*A~而5*0/l+m)./!#0fq| +rQt7(MECF85>jJ4!<#;#:#p9izd"Mcd3۔BtYuGbCXAmjf!&2@ïPG?2><%~
Vӛ%͑n.B\)5ds΃75ߎ,i:aHxu5fnucE0w]A]23s>(zexisJ[~6sm5d쮥fܨwr|u"r>Wp%culqR p$wԠ
: 'ЯLԁ߾MP;.m"b% c0vg6C`Q|vځ5ctIR퍚`@G[P1 5	6
-@l`EL" OD\4!i!Si&Ig' AJSZmY&!Az#+Pdv:dE( $	Am&Vt#jX5.i:Su)K'A(",KXt#Sg%3Nv9cx$N^o
ALW	)cU5",=ITs8X07>E D8!A
ap B!!"B#$%&B",DY#T!)aY^s)׭~s SL-D.7l?@HCTRI:YJMA5NTCU,h pYtWcSmb1r?^wHwهb%	5[R5`c,$ 쭁DI	sEV
i8,O P |oDժJ+v&9!$(m3~
ȕ$q'VUZ`1)N,Ǽ/`pM=?j)pLOX+ ,-RR35,&"4s jh=LHr5ͨ۠6a>kZT?.cfqQgIz`g- vh-G5-_?6E7:AQ	?M͎>1m~t׬8S/ɎbrYV+WAs-X7f O\L`vV,*]?:戾Du;x2avIV}.2N_&0`Vl|Vt-ת'ʖՐmgT@Ա}vNZF05WFvmL'?+L#p\sm[vTbݧ8daFӐ0'Um+kNO#Lm
!UeV\8$7!sQ  ~03?˨(=w#+]:ȘV/:)|o_"bs~҅Zz;	&iwHֻr,#O^YbZ?@ ~kdB
)ى8ʔ `deԍ\_.5(ؒ?)L_IZ>#=(KB
yw?6zgj?
`uI|5
in?AJzU1C<Ս_'@Y-U"mb2EԚ L{)0Jnع,JX@[b_ԋ,xXb	alˇ
hl/yK5i)~
yK8b[xW)7!U	,`0
%"&),/2
?6<AB #'*-03:79=@C!	$(G+.1457/8;>DEFGH-	vqed"Vciǥ"X~8<-^+s& ͫ+wD~$JqyS 縔}zV3͋#n'Qa"Ǯx?p.r#>|)wxFf-˞w`&7qpu=c%"G~)ds{JP2:$%q&@/5GshvB76$eDp%(	RLJcaN6Pzŝ,5A-,m/Fx5i#ra."pS
	Yro1JΘ^Z
lrc=dq7@#Os~5p & upefBQUp<SèR{Ty5	M,X)kMtҌ##aG|&|j3DvKq
ډ:qRm溽{h tn	FÃ:EinC<L.Yi(¶UZќ+fZuοZr nn X*Xt[#Ms:&87XhϷy:$T>Iup9ғ&Ҡp F@>	p+rqc&zk0˯cDhkJǐCDF?wp"Y!Bm#p$+L7QM.޷wUjĘ	r9gJE+H?1a1jȍ4gjb2`?<e֏ل#ZH>r6$'9prLpіLSӸ"B"86ոp75.u:i|f~)R4mH֡Pr6
Qprap,
p(ria4m
8|21R5E+li3;NIWbAԿĸ]AxkfYNvfr
d#_(-5&
r=db7~[9ظ5dQk+:{>=_Jt:CfۼJ.+]dAi&ÿϗhAyq<17(ǹ2I"$̳%D OVTQ1bŞp̢Ť1f,7pqiU3t}Tw@˽L]"0m3K22}^V,sKVةY@з-lXbԲeq-x&Qx
ഗDK8du=ա,J`[hSIJBa>1T<qA_pfS[bZhs%fMpxiCqu@,*hsar0ò.p4H"Y}0r(<-%PD-Hk[	xrI7fF$f^e&	J!Lh
NqVRYvpW-M؍=<w:rFߥۉ?j)JUdgEs$ynt7RDo@>IyB<(HNp͒]qrmcg)[v?POaW`s}j$EqmI$ɰ?u2)Zf~t+ڛcڮm`4"hqpj}}d̑Cn˰;UY?,F$pOe[΢ZqfrЪmwsUlM*48%=Q j -/ʀ;`AďZx4$?
s2teR5D,\p48f2D/E!sZ/;9ZCH[pY.j;E!T`e;d#'yզZFb
jZWpeNbB
6&3lmt;C)aBaXvu&,<kdfNt'a[VGoK2K]hY RU'	о5@-.A)1-@PJIwr[ŀ
;im/0_FYr/l)*A+B,)_'mVy[=8(|g]^q<x{+`i-,@dA"  !"#
$% &'h()6<DE=MUu-6P%} SF-WIZARD.7SWM'1

@dCT]MI:PRFUGSCOVER2 )c8	a#Kh[XOԈ&^
tN9)KY^V_5S5z i8m6sф	m[[d!iBԜi`u*H\!N}02~0
)@~mKV漜H81PrE
s|wZO.'&="
+)Sp/x
m36S0$V w^XJ+E:L)cNI;}`b{R[?0?Hh1( XT:ȦLugu-z63CEK<*#4
N\SʣVLH56JnK\	ɻ.坹?`7UIތ-`0 ٠	q^.cJݷt}l?Kl4_?KΆ)C[=^i"M2xdy" l|~p'
je0,d/
6̇
T]Z.f	b! lZLM2YE\n\à(װX~HJS,0nL-*`Pw(8
aH	LV㐨l.u}c~}C0@{Di{	N	PDILsm\_)(mN7L2tB|:-΋ph5)$^+g6zɐO,ڪI^8V]4ޙZːI5{Z0({ {!Z /aMn43u
k}!>f z޸t_?мI=ɯLI9Pq0}:=#ąȮ\=߱Ș&*AyP=7A~~&imHL
vTyʭ1w)xfrY}-SkǝS~i t5W
J}c&ȹo-s``hyjs J_0>}br}J}˗k/d
^W_^
	%@l	 "?^-'鏝^U鰝<M+xu2 ,ztJn{{HL-	)VlGq0	#=KLVN
S?_}TK@0Mk B
Pӑ6QNL
`wA;԰
i	$-8OV^gmt]Jխh_ꤐwkL䳻Ygvwf6"K\۠ ԗ'vMQ1w Lw)0
a%)ZڊOtR9LȽ"
mb⣫Ŵʋ,X
B+	,408&9//H]=ݦ~HhLiv7
˝8} oqyTC!$%szryIѭÍdNhgB#ݼ1^rs/J h	`ר1L&j`Hh)	`7,qUI-&:j,
^LK$'*B>2-4XEJMP
8pȲXI1
)1$(B+105FHKNQ!%,QL9<1.$jj,Z&)c,/::K;<b=>?@A,C|3D6GI_LOȕR"r VTX{U	S
`b+!Y6W)ac[ZZ*[\\]X^_d
 ~a5Ұ{zۥfkm;+!)<ƛьKɑ#L	:M)2̞g
ɔ8҄XH5pd~CӭG|p~-k!X'}-E+W')~)h[,
~-p84P|u1A
uk1rڞ7[@43$%䱡,A?	K#3@@u2[`0S33qJ?u/ |Q#58Mʳl[|}rlQ%vgcd[c凮yn2J3|*Ƅ
?m*7Ix!
z
;96m7ŎP9[$Cxp۸
d(xv7/5K!flgM>G+/xV%ӂTd{mO k	tX%B0M.q&@˄q.Xud1lxpO`&j|n0`0YpP_l&L?whpJjD|tBKxoq9+p##`$Pde	#.N735i
&q?::~sp,W'Ħp)C
|s"n ά0Փ3O:.!xeAR5s= JQ0vc"ͧ1]0JBbQ_f)wt5d7 S,]vh	s3c?'txr`$30)A]5G3net6tbZ퓛+
0uϔRG)X&urCsFts=Zi!qCA/KThJ7u1=;X[p;e:divDtu`mi3
EoXpy,tK\n"KcM,i͡#qڶ1M?~;
Du:l׺Mg^wsfVNpLg<u>i0'4y-@:9hۘBPp|ϙ1Ƙ?qqK:aphƪ7b̮l?o	yF> oZ]}p?[,37BH<t1:3-l=M4<\67s7i4
,x#P
r[LpHvC[.B18elwnJp37h	QBp LF~v!g@Xj
׳
prJG,tRš"wqp285&vߩ#budcNe
DC9`8IIt&p].rsaGp8]`%ӂOvY?3iジf@[@t݅vmv$7Br'	#Oh2;rs?Få[%de{C*+:'7) as,qElQ*6l3	k;^]Sw2.se:
iݢ5~^uEfSkO׷zcΫRb?iNTP:~VN5?!8}&UR$*Ϊs.?0҇qg<	1#6~Et-ZFFr7f->fmwn\8*m}· qU;\hoTD !Oto~XJz-
<vFibbӅ5oK 'v%@KKP*WOI`Lk9i	Ro $
S.f)@z[YdڻJ!qBSvvk%b
NJy#'lmdUP`1*]n3
I=&r4A6YeCTImBp|B%Cp.$[y`%yjX2	XFxkw	5V4v{t1[F,_5iNpG`.@/0@1GE,6@!Wl<Hxr_s$S T<_s$5e!T3~9:Vh	3=d.B@_@
 2! "(#@$H% &b'A()$*+(,A-.j,ĄjD@$"D2LJvv"fҝc(=ĦP(Yw4D6vy[]x;19Ïrs}|+9`e^pؼx}n_NL'W8ߜc<
;}頝(ʐ:>ҹh)}oխr*>ϔF4$*tO'!)_`EHv	j]h;Bvw0	i鿝L([#'ۦz)̲"n}Mnymq	YhLy#y:'W08z0) /nS[lF8՟yۿ;(=x^2ztO`ZRۼ"SEY}%L{{k[udfev*OX	lVZo޽@:DՐͳEPFJսGsuYw܉yn!LCniԙ-MQ}PjT}L>	A%8jr*rTLײG)}oeL&E
Ai[ݳ52"_{)Vt"A(:b%CL+quH}n
-0
&QȥLIY>eVwt8\wwŮ]e!4bzF3L	393Y{~}[8Nv_\bU0[@g	#e/\)XELNk+>u`J`}Xu䳇VcTe3	@]]`GJbkNT0*#)9#۝hG!=){(#{J΍C#3úQp-"SAz>jȄ;J28}5S(L=&VSMPYj=YNԽ2+Z:cdZQ'}Լ0iSFMLa|!W0LΧ,_i-g
)p*U ԯ-,")G=0kɀj'/i	^iHL[{.չ/S9L0>X)m/&1U5+5ͭ*[`<_sL-"gZșQ7W~Dͣ89F܋^r8&BŸ L#p@xX0 .tAgvt_

4ȩ3"$')˶I&i1eԬ߿ȍl~J!hx%A!D
	+b"Z5(u%*JaQjli<^@lP"TF`b@7k
=:@Q3/^v8e&Ff,Hw3rTo0  D!"d
$
R EP2z/
 '!*+.1#$2?>5(),/0"%3j<4-'!&
4(siL=ē햦;Bc&؁1v
dS
_R9ݿOXCQ?ɿ<`RѱV	qX􂈍Z/쳁5|,:v±yvWPg`[jj$=
*+A:u-䁫6u2FZ:g}mub9`cu@us*{G='9l74𹞢VXem!yor9YqAD0-mD0a͛<Jh$(w$ž8:7n@IAXd\1-8+<:CRgt]8ipdYub"l'@7c2nt3Yub"ܿ.ā2	ghqQp]kVۍ-_:d5Ƌbjڌ;7bׯaicԌ}7~ ;hC4w޲2_g|ݍދLIb2YbEy`
a@9ZTi9a	JqescT]z5Ae%6nnhLi	bc2Ĺg6أ3_4>Iҍi
20_1/c$%TaQl Tnl׾7qdsf{	Rf\1EXT05Ս*a5:nNA9[b)=@[A(]MM1=a-&t	B.AwKڑf	:_-6s2m=VFaX0;6}Ul%wu_u
_:_Q;Wi&*_	Z-K=h>CB9_7'`\rx{
Hf,@@j,Dj,D>#s Sw-WIZDN.7SWM1A@~CTU\:MiARGENTOCHIP eDeQ!.ckS[Xԟ͸3:Ǩ	{5_8g`exG +I	U	8'OP{GHg8U!聀+px?
m3۽u*$vMIU*'8)~NG$ǂ`M5?WهLO81Bq,B3b,i4 j L{H5ͫ[6k{[Ex.dOQaIC{` {CJZy?5Ku7ҩJH1ԍdxC	PN= |
kؠsGf
_r"QlWW(;s4-׸_lV y\Ln}'(].SXDx]<I{}&.} |0M`VvV[8a
aϻM9LS>En6tIv}m>h0=gKmlotL+#{Xp2
MTr[졍]b✙ݞ8s+p=]0:k+R#)
-w+Ң&8eZ_!Uf u)?9-lLP030=#э	6Șr{e}J)Q蹺YmWri\~I4֣^`oKgH
aJb?'_eaB}^͹Y__Z-@ H4(	^oa
.147:>AEINRW\bhnu|'8K^s
,NqBtY,{'Q68YN	Тmgp:Ddu8&@"ȴqLh8Eh$,
!x@ J `ӥ.eL	:)ZL|	g#=KEK@0sM B
yu훹zV9ڽNL1
g`k0S/	5
i	$-.@AEFGHJ
1Uz]#@iݽ"22oԯZ L)0e7qJ,@X[_b݋x,Xr8	rl
HH]HQhLi%7/
8 q[x)!v	'` 0@:?p
!#%&(*,.1358;=
 "$$')+-/2469<>@_Sv6h)X^U/1: p3E84@0+%uL3.+5exZK~,F,.0,VŸ@{*fX4@:6,FINp;764rJ5΄fhsY@	r61/
lHpv}/[IA35%;0'?xﻘwv$xI ihtʲ)Bv87Ylw81wS
58vI8c
AR/u8?$=
uonv~:>t1nA1Ds)O9	901̙uB,5lF%^`v1>+y@7߀(X\A6K:`ۊæ<E{S.:,=K79tR+AR.|V#%0MRpp9I34	Yhѽ3vs`͞]A7#|{5^RݠmDdmtNNqӇ@~\N4
FA&7C8{x?Fu-\2PG`XH5K8sowr6:T D~[ju@gmܸ
lP=Y?`,ajɝyQhLh
u`@6zpq4sDn2`V,tWĖtA!Be(<fst#%Od̤N9 tp[vnsbĂĐ0i{V=!x(LA!q1
Xb
8
	&.?;Dme1HhA«?zqRMf<TCwu7qqèVq@j
vf'ndHmEoq~MK,IlHlFl,vIYL(dɚ(img4ue~vbf%wW
HtƵDKrP\ED%ptuPqђ:za=b~H<tı
&~nkPPJ9$r[vzg%PQ*3
첀sfr6By?a8̑Ly@LxAXVLu]qk9fr~=glI$cm_(p v[#Yjwq@Mr~+ ;`w{=y4dM8O,, tp@vl0'pM[5iC-@7t'oF@ߜqX:m&3!t,xl{ozFvBoK)|u*6	^66A(U@n5(
ր0
~p~h/c/,?Rex)<Ob%1&('"CRtF\?ajjpa=UmL/t]A@!!!!!! !! "#H$JDGsufb$@F5U`bB6BQbb@((CDD`jĈ@|"	Y,b)J3*&ygyh 44ҠL>&FH  ! ]jh*&`Ưֱ  JȐe '3 ygyH yI4 yheyeh8L;XL
0 82061L+22
݌'F0

error: pathspec 'bin/chipdisk-exo.prg' did not match any file(s) known to git


ZX1->(dbSetOrder(1), dbGoTop(), dbSeek(cChave))

//https://pt.stackoverflow.com/q/358314/101

error: pathspec 'xBase/Alias.prg' did not match any file(s) known to git


constructing evidence that a name does not appear in an environment

-- import "LangPrelude.prg"

data Shape :: *1 where
  Vanish :: Shape
  Assoc :: Tag ~> * ~> Shape ~> Shape
 deriving Record(s)

data Env :: Shape ~> * where
  Empty :: Env Vanish
  Extend :: Label t -> a -> Env s -> Env (Assoc t a s)
 deriving Record(e)

data Free :: Tag ~> Shape ~> * where
  Klar :: Label t -> Free t Vanish
  -- Klar :: Label t -> Env Vanish -> Free t Vanish
  Mehr :: Label t -> DiffLabel t t' -> Free t r -> Free t {t'=a;r}s
-- deriving List(f)

-- diffAB' = let R x = sameLabel `a `b in x
diffAB = case sameLabel `a `b of
         R x -> x

notMentionedIn :: Label a -> Env sh -> Maybe (Free a sh)
notMentionedIn l Empty = Just $ Klar l
notMentionedIn l {m=v; r}e = case sameLabel l m of
                             L _ -> Nothing
                             R diff -> case notMentionedIn l r of
                                       Nothing -> Nothing
                                       Just r' -> Just $ Mehr l diff r'

error: pathspec 'work/FreeEnv.prg' did not match any file(s) known to git


added new example tabdialog.prg

added new example tabdialog.prg

/*

  Qt5xHb Project - Example Program

  Copyright (C) 2012-2017 Marcos Antonio Gambeta

  E-mail:
  marcosgambeta AT outlook DOT com
  marcosgambeta AT gmail DOT com

  Website:
  https://github.com/marcosgambeta/Qt5xHb

  Users Groups:
  https://groups.google.com/forum/?hl=pt-BR#!forum/qtxhb    [ENGLISH]
  https://groups.google.com/forum/?hl=pt-BR#!forum/qtxhb-br [PORTUGUESE]

*/

#include "qt5xhb.ch"
#include "hbclass.ch"

PROCEDURE Main (cFileName)

   LOCAL oApp
   LOCAL oTabDialog

   IF cFileName == NIL
      cFileName := "."
   ENDIF

   oApp := QApplication():new()

   oTabDialog := TabDialog():new(cFileName)

   oTabDialog:show()

   oApp:exec()

   oTabDialog:delete()

   oApp:delete()

RETURN

// Classe GeneralTab

CLASS GeneralTab INHERIT QWidget

   METHOD new (oFileInfo, oParent)

END CLASS

METHOD new (oFileInfo, oParent) CLASS GeneralTab

   LOCAL oFileNameLabel
   LOCAL oFileNameEdit
   LOCAL oPathLabel
   LOCAL oPathValueLabel
   LOCAL oSizeLabel
   LOCAL oSizeValueLabel
   LOCAL nSize
   LOCAL oLastReadLabel
   LOCAL oLastReadValueLabel
   LOCAL oLastModLabel
   LOCAL oLastModValueLabel
   LOCAL oMainLayout

   ::super:new(oParent)

   oFileNameLabel :=  QLabel():new("File Name:")
   oFileNameEdit := QLineEdit():new(oFileInfo:fileName())

   oPathLabel := QLabel():new("Path:")
   oPathValueLabel := QLabel():new(oFileInfo:absoluteFilePath())
   oPathValueLabel:setFrameStyle(QFrame_Panel + QFrame_Sunken)

   oSizeLabel := QLabel():new("Size:")
   nSize := oFileInfo:size()/1024
   oSizeValueLabel := QLabel():new(alltrim(str(nSize))+" K")
   oSizeValueLabel:setFrameStyle(QFrame_Panel + QFrame_Sunken)

   oLastReadLabel := QLabel():new("Last Read:")
   oLastReadValueLabel := QLabel():new(oFileInfo:lastRead():toString())
   oLastReadValueLabel:setFrameStyle(QFrame_Panel + QFrame_Sunken)

   oLastModLabel := QLabel():new("Last Modified:")
   oLastModValueLabel := QLabel():new(oFileInfo:lastModified():toString())
   oLastModValueLabel:setFrameStyle(QFrame_Panel + QFrame_Sunken)

   oMainLayout := QVBoxLayout():new()
   oMainLayout:addWidget(oFileNameLabel)
   oMainLayout:addWidget(oFileNameEdit)
   oMainLayout:addWidget(oPathLabel)
   oMainLayout:addWidget(oPathValueLabel)
   oMainLayout:addWidget(oSizeLabel)
   oMainLayout:addWidget(oSizeValueLabel)
   oMainLayout:addWidget(oLastReadLabel)
   oMainLayout:addWidget(oLastReadValueLabel)
   oMainLayout:addWidget(oLastModLabel)
   oMainLayout:addWidget(oLastModValueLabel)
   oMainLayout:addStretch(1)
   ::setLayout(oMainLayout)

RETURN SELF

// Classe PermissionsTab

CLASS PermissionsTab INHERIT QWidget

   METHOD new (oFileInfo, oParent)

END CLASS

METHOD new (oFileInfo, oParent) CLASS PermissionsTab

   LOCAL oPermissionsGroup
   LOCAL oReadable
   LOCAL oWritable
   LOCAL oExecutable
   LOCAL oOwnerGroup
   LOCAL oOwnerLabel
   LOCAL oOwnerValueLabel
   LOCAL oGroupLabel
   LOCAL oGroupValueLabel
   LOCAL oPermissionsLayout
   LOCAL oOwnerLayout
   LOCAL oMainLayout

   ::super:new(oParent)

   oPermissionsGroup := QGroupBox():new("Permissions")

   oReadable := QCheckBox():new("Readable")
   IF oFileInfo:isReadable()
      oReadable:setChecked(.T.)
   ENDIF

   oWritable := QCheckBox():new("Writable")
   IF oFileInfo:isWritable()
      oWritable:setChecked(.T.)
   ENDIF

   oExecutable := QCheckBox():new("Executable")
   IF oFileInfo:isExecutable()
      oExecutable:setChecked(.T.)
   ENDIF

   oOwnerGroup := QGroupBox():new("Ownership")

   oOwnerLabel := QLabel():new("Owner")
   oOwnerValueLabel := QLabel():new(oFileInfo:owner())
   oOwnerValueLabel:setFrameStyle(QFrame_Panel + QFrame_Sunken)

   oGroupLabel := QLabel():new("Group")
   oGroupValueLabel := QLabel():new(oFileInfo:group())
   oGroupValueLabel:setFrameStyle(QFrame_Panel + QFrame_Sunken)

   oPermissionsLayout := QVBoxLayout():new()
   oPermissionsLayout:addWidget(oReadable)
   oPermissionsLayout:addWidget(oWritable)
   oPermissionsLayout:addWidget(oExecutable)
   oPermissionsGroup:setLayout(oPermissionsLayout)

   oOwnerLayout := QVBoxLayout():new()
   oOwnerLayout:addWidget(oOwnerLabel)
   oOwnerLayout:addWidget(oOwnerValueLabel)
   oOwnerLayout:addWidget(oGroupLabel)
   oOwnerLayout:addWidget(oGroupValueLabel)
   oOwnerGroup:setLayout(oOwnerLayout)

   oMainLayout := QVBoxLayout():new()
   oMainLayout:addWidget(oPermissionsGroup)
   oMainLayout:addWidget(oOwnerGroup)
   oMainLayout:addStretch(1)
   ::setLayout(oMainLayout)

RETURN SELF

// Classe ApplicationsTab

CLASS ApplicationsTab INHERIT QWidget

   METHOD new (oFileInfo, oParent)

END CLASS

METHOD new (oFileInfo, oParent) CLASS ApplicationsTab

   LOCAL oTopLabel
   LOCAL oApplicationsListBox
   LOCAL aApplications
   LOCAL n
   LOCAL oAlwaysCheckBox
   LOCAL oLayout

   ::super:new(oParent)

   oTopLabel := QLabel():new("Open with:")

   oApplicationsListBox := QListWidget():new()
   aApplications := {}

   FOR n := 1 TO 30
      aadd(aApplications,"Application "+alltrim(str(n)))
   NEXT n
   oApplicationsListBox:insertItems(0, aApplications)

   oAlwaysCheckBox := NIL

   IF empty(oFileInfo:suffix())
      oAlwaysCheckBox := QCheckBox():new("Always use this application to open this type of file")
   ELSE
      oAlwaysCheckBox := QCheckBox():new("Always use this application to open files with the extension '"+oFileInfo:suffix()+"'")
   ENDIF

   oLayout := QVBoxLayout():new()
   oLayout:addWidget(oTopLabel)
   oLayout:addWidget(oApplicationsListBox)
   oLayout:addWidget(oAlwaysCheckBox)
   ::setLayout(oLayout)

RETURN SELF

// Classe TabDialog

CLASS TabDialog INHERIT QDialog

   DATA oTabWidget // objeto da classe QTabWidget
   DATA oButtonBox // objeto da classe QDialogButtonBox

   METHOD new (cFileName, oParent)

END CLASS

METHOD new (cFileName, oParent) CLASS TabDialog

   LOCAL oFileInfo
   LOCAL oMainLayout

   ::super:new(oParent)

   oFileInfo := QFileInfo():new(cFileName)

   ::oTabWidget := QTabWidget():new()
   ::oTabWidget:addTab(GeneralTab():new(oFileInfo), "General")
   ::oTabWidget:addTab(PermissionsTab():new(oFileInfo), "Permissions")
   ::oTabWidget:addTab(ApplicationsTab():new(oFileInfo), "Applications")

   ::oButtonBox := QDialogButtonBox():new(QDialogButtonBox_Ok + QDialogButtonBox_Cancel)

   ::oButtonBox:onAccepted({||::accept()})
   ::oButtonBox:onRejected({||::reject()})

   oMainLayout := QVBoxLayout():new()
   oMainLayout:setSizeConstraint(QLayout_SetNoConstraint)
   oMainLayout:addWidget(::oTabWidget)
   oMainLayout:addWidget(::oButtonBox)
   ::setLayout(oMainLayout)

   ::setWindowTitle("Tab Dialog")

RETURN SELF

error: pathspec 'examples/tabdialog.prg' did not match any file(s) known to git


added new example extension.prg

added new example extension.prg

/*

  Qt5xHb Project - Example Program

  Copyright (C) 2012-2017 Marcos Antonio Gambeta

  E-mail:
  marcosgambeta AT outlook DOT com
  marcosgambeta AT gmail DOT com

  Website:
  https://github.com/marcosgambeta/Qt5xHb

  Users Groups:
  https://groups.google.com/forum/?hl=pt-BR#!forum/qtxhb    [ENGLISH]
  https://groups.google.com/forum/?hl=pt-BR#!forum/qtxhb-br [PORTUGUESE]

*/

/*
  Baseado no exemplo "Extension" do Qt Framework
*/

#include "qt5xhb.ch"
#include "hbclass.ch"

PROCEDURE Main ()

   LOCAL oApp
   LOCAL oDialog

   oApp := QApplication():new()

   oDialog := FindDialog():new()

   oDialog:show()

   oApp:exec()

   oDialog:delete()

   oApp:delete()

RETURN

CLASS FindDialog INHERIT QDialog

   DATA oLabel                   // objeto da classe QLabel
   DATA oLineEdit                // objeto da classe QLineEdit
   DATA oCaseCheckBox            // objeto da classe QCheckBox
   DATA oFromStartCheckBox       // objeto da classe QCheckBox
   DATA oWholeWordsCheckBox      // objeto da classe QCheckBox
   DATA oSearchSelectionCheckBox // objeto da classe QCheckBox
   DATA oBackwardCheckBox        // objeto da classe QCheckBox
   DATA oButtonBox               // objeto da classe QDialogButtonBox
   DATA oFindButton              // objeto da classe QPushButton
   DATA oMoreButton              // objeto da classe QPushButton
   DATA oExtension               // objeto da classe QWidget

   METHOD new (oParent)

END CLASS

METHOD new (oParent) CLASS FindDialog

   LOCAL oExtensionLayout
   LOCAL oTopLeftLayout
   LOCAL oLeftLayout
   LOCAL oMainLayout

   ::super:new(oParent)

   ::oLabel := QLabel():new("Find &what:")
   ::oLineEdit := QLineEdit():new()
   ::oLabel:setBuddy(::oLineEdit)

   ::oCaseCheckBox := QCheckBox():new("Match &case")
   ::oFromStartCheckBox := QCheckBox():new("Search from &start")
   ::oFromStartCheckBox:setChecked(.T.)

   ::oFindButton := QPushButton():new("&Find")
   ::oFindButton:setDefault(.T.)

   ::oMoreButton := QPushButton():new("&More")
   ::oMoreButton:setCheckable(.T.)
   ::oMoreButton:setAutoDefault(.F.)

   ::oExtension := QWidget():new()

   ::oWholeWordsCheckBox := QCheckBox():new("&Whole words")
   ::oBackwardCheckBox := QCheckBox():new("Search &backward")
   ::oSearchSelectionCheckBox := QCheckBox():new("Search se&lection")

   ::oButtonBox := QDialogButtonBox():new(Qt_Vertical)
   ::oButtonBox:addButton(::oFindButton, QDialogButtonBox_ActionRole)
   ::oButtonBox:addButton(::oMoreButton, QDialogButtonBox_ActionRole)

   ::oMoreButton:onToggled({|pWidget,lValue|HB_SYMBOL_UNUSED(pWidget),::oExtension:setVisible(lValue)})

   oExtensionLayout := QVBoxLayout():new()
   oExtensionLayout:addWidget(::oWholeWordsCheckBox)
   oExtensionLayout:addWidget(::oBackwardCheckBox)
   oExtensionLayout:addWidget(::oSearchSelectionCheckBox)
   ::oExtension:setLayout(oExtensionLayout)

   oTopLeftLayout := QHBoxLayout():new()
   oTopLeftLayout:addWidget(::oLabel)
   oTopLeftLayout:addWidget(::oLineEdit)

   oLeftLayout := QVBoxLayout():new()
   oLeftLayout:addLayout(oTopLeftLayout)
   oLeftLayout:addWidget(::oCaseCheckBox)
   oLeftLayout:addWidget(::oFromStartCheckBox)

   oMainLayout := QGridLayout():new()
   oMainLayout:setSizeConstraint(QLayout_SetFixedSize)
   oMainLayout:addLayout(oLeftLayout, 0, 0)
   oMainLayout:addWidget(::oButtonBox, 0, 1)
   oMainLayout:addWidget(::oExtension, 1, 0, 1, 2)
   oMainLayout:setRowStretch(2, 1)

   ::setLayout(oMainLayout)

   ::setWindowTitle("Extension")
   ::oExtension:hide()

RETURN SELF

error: pathspec 'examples/extension.prg' did not match any file(s) known to git


simple merging of Nat lists.

simple merging of Nat lists.

There is no duplicate prevention, i.e.

prompt> mergeNL [0v, 1v, 4v]nl [1v]nl

(Just [0v,1v,1v,4v]nl) :: Maybe (NatList [0t,1t,1t,4t]i)

instead of Nothing :-(

import "../src/LangPrelude.prg" (maybeM)

kind Inventory = Empty | More Inventory Nat deriving LeftList(i)

data NatList :: Inventory ~> * where
  Nope :: NatList []i
  Augment :: NatList i -> Nat' n -> NatList [i; n]i
 deriving LeftList(nl)

data LeftThrist :: forall (l :: *1) . (l ~> l ~> *)  ~> l ~> l ~> * where
  LNil :: LeftThrist k a a
  LCons :: LeftThrist k a b -> k b c -> LeftThrist k a c
 deriving LeftList(lt)

data Elem :: Inventory ~> Inventory ~> * where
  Single :: NatList nl -> Elem i {merge i nl}

monad maybeM

merge :: Inventory ~> Inventory ~> Inventory
{merge []i i} = i
{merge [as; a]i []i} = [as; a]i
{merge [as; a]i [bs; b]i} = {arrange {merge as bs} a b a b}

mergeNL :: NatList i -> NatList j -> Maybe (NatList {merge i j})
mergeNL []nl j = Just j
mergeNL (i@[as; a]nl) []nl = Just i
mergeNL [as; a]nl [bs; b]nl = do { abs <- mergeNL as bs
                                 ; arrNL abs a b a b }
mergeNL _ _ = Nothing

arrange :: Inventory ~> Nat ~> Nat ~> Nat ~> Nat ~> Inventory
{arrange i 0t (S b') a b} = [i; a, b]i
{arrange i (S a') 0t a b} = [i; b, a]i
{arrange i (S a') (S b') a b} = {arrange i a' b' a b}

arrNL :: NatList i -> Nat' a' -> Nat' b' -> Nat' a -> Nat' b -> Maybe (NatList {arrange i a' b' a b})
arrNL i 0v (1+b')v a b = Just [i; a, b]nl
arrNL i (1+a')v 0v a b = Just [i; b, a]nl
arrNL i (1+a')v (1+b')v a b = arrNL i a' b' a b
arrNL _ _ _ _ _ = Nothing

join :: NatList i -> LeftThrist Elem []i i -> NatList j -> Maybe (LeftThrist Elem []i {merge i j}, NatList {merge i j})
join i thr j = do { ij <- mergeNL i j
                  ; return ([thr; Single j]lt, ij) }

Just (t1, e1) = join [0v, 2v, 4v]nl [Single [0v, 2v, 4v]nl]lt [3v]nl
Just (t2, e2) = join e1 t1 [8v]nl

error: pathspec 'tests/NatList.prg' did not match any file(s) known to git


initial (untested) 2's complement integers

import "CurryHoward.prg" (LE, Base, Step)

kind Sign = Negative | Positive

-- 2's complement representation
--
prop Integral :: Sign ~> Nat ~> * where
  Minus :: Nat' (1+n)t -> Integral Negative n
  Plus :: Nat' n -> Integral Positive n

-- LEI is less-than-or-equal on Integral
--
prop LEI :: Sign ~> Nat ~> Sign ~> Nat ~> * where
  NP :: Integral Negative m -> Integral Positive n -> LEI Negative m Positive n
  NN :: LE n m -> Integral Negative m -> Integral Negative n -> LEI Negative m Negative n
  PP :: LE m n -> Integral Positive m -> Integral Positive n -> LEI Positive m Positive n

error: pathspec 'tests/IntegralOrder.prg' did not match any file(s) known to git


KActionMenu: class updated

KActionMenu: class updated

- methods new1, new2 and new3 removed
- formatting

Modified:
source/KDEUI/KActionMenuClass.prg

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/marcosgambeta/KDE4xHb.git/'


atualiza rotina

atualiza rotina

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/alvarocneto/prestconthack.git/'


add test from one of the early Omega papers (old syntax)

-- This extended example is an Omega port of Conor McBride's First Order Unification by Structural Recursion
-- From the paper "GADTs + Extensible Kinds = Dependent Programming"

-------- MAYBE MONAD --------------------------------
return x = Just x
fail s = Nothing
bind Nothing g = Nothing
bind (Just x) g = g x
liftM :: (a -> b) -> Maybe a -> Maybe b
liftM2 :: (a -> b -> c) -> Maybe a -> Maybe b -> Maybe c
liftM f ma = do a <- ma;
             return (f a)
liftM2 f ma mb = do a <- ma; b <- mb; return (f a b)

------- FINITE (VARIABLE) SETS & TERMS --------------
data Fin n = ex m. Fz where n = S m
           | ex m. Fs (Fin m) where n = S m
data Term n = Var(Fin n) | Leaf | Fork(Term n)(Term n)

------- SUBSTITUTIONS -------------------------------
rename2sub :: (Fin m -> Fin n) -> Fin m -> Term n
rename2sub f i = Var (f i)
subst :: (Fin m -> Term n) -> Term m -> Term n
subst sub (Var x) = sub x
subst sub Leaf = Leaf
subst sub (Fork s t) = Fork(subst sub s)(subst sub t)
compose :: (Fin m -> Term n) -> (Fin l -> Term m) -> (Fin l -> Term n)
compose f g i = subst f (g i)

------- OCCURS CHECK --------------------------------
thick :: Nat' n -> Fin (S n) -> Fin (S n) -> Maybe (Fin n)
thick n (Fz) (Fz) = Nothing
thick n (Fz) (Fs y) = Just y
thick (S n) (Fs x) (Fz) = Just Fz
thick (S n) (Fs x) (Fs y) = liftM Fs (thick n x y)

chk :: Nat' n -> Fin (S n) -> Term (S n) -> Maybe (Term n)
chk n x (Var y) = liftM Var (thick n x y)
chk n x (Leaf) = Just Leaf
chk n x (Fork s t) = liftM2 Fork(chk n x s)(chk n x t)
for :: Nat' n -> Term n -> Fin (S n) -> Fin (S n) -> Term n
for n t' x y = case thick n x y of
               Just y' -> Var y'
               Nothing -> t'

-----------------------------------------------------
-- substitution lists
data AList m n = Anil where m=n
               | ex m'. Asnoc(AList m' n)(Term m')(Fin (S m')) where m = S m'
sub :: Nat' m -> AList m n -> (Fin m -> Term n)
sub _ (Anil) = Var
sub (S n) (Asnoc s t x) = compose(sub n s)(for n t x)
cat :: AList m n -> AList l m -> AList l n
cat xs (Anil) = xs
cat xs (Asnoc ys t x) = Asnoc (cat xs ys) t x

data SomeSub m = ex n. SomeSub (Nat' n) (AList m n)
asnoc :: SomeSub m -> Term m -> Fin (S m) -> SomeSub (S m)
asnoc (SomeSub m s) t x = SomeSub m (Asnoc s t x)

-----------------------------------------------------
-- unification
mgu :: Nat' m -> Term m -> Term m -> Maybe (SomeSub m)
mgu m s t = amgu m s t (SomeSub m Anil)

amgu :: Nat' m -> Term m -> Term m -> SomeSub m -> Maybe (SomeSub m)
amgu m (Leaf) (Leaf) acc = Just acc
amgu m (Leaf) (Fork s t) acc = Nothing
amgu m (Fork s t) (Leaf) acc = Nothing
amgu m (Fork s1 t1) (Fork s2 t2) acc =
     do acc <- amgu m s1 t1 acc; amgu m s2 t2 acc
amgu m (Var x) (Var y) (SomeSub _ Anil) = Just (flexFlex m x y)
amgu m (Var x) t (SomeSub _ Anil) = flexRigid m x t
amgu m s (Var x) (SomeSub _ Anil) = flexRigid m x s
amgu (S m) s t (SomeSub n (Asnoc sub r z)) =
     do sub <- amgu m (subst (for m r z) s) (subst (for m r z) t) (SomeSub n sub)
     return (asnoc sub r z)

flexFlex :: Nat' m -> Fin m -> Fin m -> SomeSub m
flexFlex (S m) x y = case thick m x y of
                     Just y' -> SomeSub m (Asnoc Anil (Var y') x)
                     Nothing -> SomeSub (S m) Anil

flexRigid :: Nat' m -> Fin m -> Term m -> Maybe (SomeSub m)
flexRigid (S m) x t = do
                      t' <- chk m x t Just (SomeSub m (Asnoc Anil t' x))

error: pathspec 'tests/Unification.prg' did not match any file(s) known to git


Added program that was used to convert .strings to .resx

USING System
USING System.Collections.Generic
USING System.Linq
USING System.Text

FUNCTION Start AS VOID
	LOCAL aFiles AS STRING[]
	aFiles := System.IO.Directory.GetFiles("c:\XSharp\DevRt\Runtime\XSharp.Core\Collations","*.Strings")
	FOREACH sFile AS STRING IN aFiles
		? sFile
		Convert(sFile)
	NEXT
	console.ReadLine()
	RETURN

FUNCTION Convert(sFile AS STRING) AS VOID
	LOCAL aLines AS STRING[]
	LOCAL sb AS StringBuilder
	aLines := SYstem.IO.File.ReadAllLines(sFile)
	sb := StringBuilder{aLines:Length*80}
	sb:AppendLine("<root>")
	sb:AppendLine(e"<resheader name=\"resmimetype\">")
	sb:AppendLine("<value>text/microsoft-resx</value>")
	sb:AppendLine("</resheader>")
	sb:AppendLine(e"<resheader name=\"version\">")
	sb:AppendLine("<value>2.0</value>")
	sb:AppendLine("</resheader>")
	sb:AppendLine(e"<resheader name=\"reader\">")
	sb:AppendLine("<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>")
	sb:AppendLine("</resheader>")
	sb:AppendLine(e"<resheader name=\"writer\">")
	sb:AppendLine("<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>")
	sb:AppendLine("</resheader>")

	FOREACH cLine AS STRING IN aLines
		VAR aElements := cLine:Split(<CHAR>{'='},StringSplitOptions.RemoveEmptyEntries)
		IF aElements:Length == 2
			aElements[1] := aElements[1]:Replace(">", ">")
			aElements[1] := aElements[1]:Replace("<", "<")
			aElements[2] := aElements[2]:Replace(">", ">")
			aElements[2] := aElements[2]:Replace("<", "<")
			sb:AppendLine(e"<data name=\""+aElements[1]:Trim()+e"\" xml:space=\"preserve\">")
			sb:AppendLine("  <value>"+aElements[2]:Trim()+"</value>")
			sb:AppendLine("</data>")
		ENDIF
	NEXT
	sb:AppendLine("</root>")
	sFile := System.IO.Path.ChangeExtension(sFile, ".resx")
	System.IO.File.WriteAllText(sFile, sb:ToString())

error: pathspec 'Runtime/XSharp.Core/Collations/CreateResx.prg' did not match any file(s) known to git