LTCD_070816.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:45:20 +02:00
1 parent d14bbc24f9
commit 0e9364ff4c
506 files changed
+157705 -41812

No files matched your search

+736
View File
@@ -0,0 +1,736 @@
$BD,0$$FD,15$
GrBitMap *RK_base=GrAlias(grbase2,Fs);
$PI,"<ship_null>",2$
$PI,"<ship_thrust>",3$
$PI,"<ship_null2>",19$
$PI,"<ship_thrust2>",20$
$PI,"<speck>",24$
$PI,"<pebble>",23$
$PI,"<tiny_rock>",21$
$PI,"<tiny_rock2>",22$
$PI,"<small_rock>",4$
$PI,"<small_rock2>",13$
$PI,"<medium_rock>",5$
$PI,"<medium_rock2>",14$
$PI,"<large_rock>",6$
$PI,"<large_rock2>",15$
$PI,"<Bullet>",7$
$PI,"<Cargo>",18$
#define CMD_NULL 0
#define CMD_SPIN_LEFT 1
#define CMD_SPIN_RIGHT 2
#define CMD_THRUST 3
#define CMD_FIRE 4
#define CMD_EXIT 5
I8 cmd=CMD_NULL;
#define NUM_STARS 100
I8 stars_x[NUM_STARS],stars_y[NUM_STARS];
BoolU4 bounce=TRUE;
#define OT_SHIP 1
#define OT_CARGO 2
#define OT_BULLET 3
#define OT_SPECK 4
#define OT_PEBBLE 5
#define OT_TINY_ROCK 6
#define OT_SMALL_ROCK 7
#define OT_MEDIUM_ROCK 8
#define OT_LARGE_ROCK 9
#define A_TRANSITION -1
#define A_INACTIVE 0
#define A_ACTIVE 1
class Order2D2Theta
{
double x,y,theta;
double DxDt,DyDt,DthetaDt;
};
class Object
{
I4 active;
I4 type;
U1 *img;
double mass,radius;
U8 timeout;
};
#define NUM_OBJECTS 256
Ode *ode;
Order2D2Theta *o;
Object *objs;
void InitObject(I8 i, I8 type)
{
objs[i].active=A_ACTIVE;
objs[i].timeout=0;
objs[i].type=type;
switch (type) {
case OT_SHIP:
objs[i].img=$IB,"<ship_null>",2$;
objs[i].radius=15;
break;
case OT_CARGO:
objs[i].img=$IB,"<cargo>",18$;
objs[i].radius=30;
break;
case OT_BULLET:
objs[i].img=$IB,"<bullet>",9$;
objs[i].radius=7;
break;
case OT_SPECK:
objs[i].img=$IB,"<speck>",24$;
objs[i].radius=3;
break;
case OT_PEBBLE:
objs[i].img=$IB,"<pebble>",23$;
objs[i].radius=5;
break;
case OT_TINY_ROCK:
if (i&1)
objs[i].img=$IB,"<tiny_rock>",21$;
else
objs[i].img=$IB,"<tiny_rock2>",22$;
objs[i].radius=5;
break;
case OT_SMALL_ROCK:
if (i&1)
objs[i].img=$IB,"<small_rock>",10$;
else
objs[i].img=$IB,"<small_rock2>",13$;
objs[i].radius=11;
break;
case OT_MEDIUM_ROCK:
if (i&1)
objs[i].img=$IB,"<medium_rock>",11$;
else
objs[i].img=$IB,"<medium_rock2>",14$;
objs[i].radius=20;
break;
case OT_LARGE_ROCK:
if (i&1)
objs[i].img=$IB,"<large_rock>",12$;
else
objs[i].img=$IB,"<large_rock2>",15$;
objs[i].radius=26;
break;
}
objs[i].mass=objs[i].radius*objs[i].radius*objs[i].radius;
}
I8 AllocObject(I8 type)
{
I8 i;
for (i=0;i<NUM_OBJECTS-1;i++)
if (objs[i].active==A_INACTIVE)
break;
InitObject(i,type);
return i;
}
void DrawIt(TssStruct *tss)
{
I8 i,*r1,x,y;
ClearWinText(tss);
LtfUpdateAuxLtf(tss);
RK_base->color=WHITE;
for (i=0;i<NUM_STARS;i++)
GrPlot(RK_base,stars_x[i],stars_y[i]);
for (i=0;i<NUM_OBJECTS;i++) {
if (objs[i].active==A_ACTIVE) {
if (objs[i].timeout && objs[i].timeout<GetTimeStamp)
objs[i].active=A_INACTIVE;
else {
x=o[i].x;
y=o[i].y;
if (x<0) {
x=GR_WIDTH-AbsI8(x)%GR_WIDTH;
o[i].x=x;
} else if (x>GR_WIDTH) {
x=x%GR_WIDTH;
o[i].x=x;
}
if (y<0) {
y=GR_HEIGHT-AbsI8(y)%GR_HEIGHT;
o[i].y=y;
} else if (y>GR_HEIGHT) {
y=y%GR_HEIGHT;
o[i].y=y;
}
switch (objs[i].type) {
case OT_SHIP:
RK_base->flags|=BMF_TRANSFORMATION;
r1=RK_base->r;
RK_base->r=GrTheta(o[i].theta);
RK_base->x=x;
RK_base->y=y;
RK_base->z=0;
if (cmd==CMD_THRUST && GetTimeStamp&8192)
GrElemsPlot(RK_base,0,0,0,$IB,"<ship_thrust>",3$);
else
GrElemsPlot(RK_base,0,0,0,$IB,"<ship_null>",2$);
Free(RK_base->r);
RK_base->r=r1;
RK_base->flags&=~BMF_TRANSFORMATION;
break;
case OT_BULLET:
case OT_SPECK:
case OT_PEBBLE:
case OT_TINY_ROCK:
case OT_SMALL_ROCK:
case OT_MEDIUM_ROCK:
case OT_LARGE_ROCK:
case OT_CARGO:
RK_base->flags|=BMF_TRANSFORMATION;
r1=RK_base->r;
RK_base->r=GrTheta(o[i].theta);
RK_base->x=x;
RK_base->y=y;
RK_base->z=0;
GrElemsPlot(RK_base,0,0,0,objs[i].img);
Free(RK_base->r);
RK_base->r=r1;
RK_base->flags&=~BMF_TRANSFORMATION;
break;
}
}
}
}
}
void SongEndTsk()
{
Sound(0);
Exit;
}
void SongTsk()
{
Fs->end_task_cb=&SongEndTsk;
ResetMusicSettings;
while (TRUE) {
Play("qDCDeEGBDetBBFqDeDB");
Play("FAetAFDeDFqAetDFBeDFetFDEqD");
Play("eFAetAFDeDFqAetDFBeDFetFDEqD");
}
}
void InitObjs()
{
I8 i,j;
for (i=0;i<NUM_STARS;i++) {
stars_x[i]=RandU2%GR_WIDTH;
stars_y[i]=RandU2%GR_HEIGHT;
}
MemSet(objs,0,sizeof(Object)*NUM_OBJECTS);
MemSet(o,0,sizeof(Order2D2Theta)*NUM_OBJECTS);
i=AllocObject(OT_SHIP); //always #0
objs[i].mass=2.0*objs[i].radius*objs[i].radius*objs[i].radius;
o[i].x=GR_WIDTH/2;
o[i].y=GR_HEIGHT/2;
i=AllocObject(OT_CARGO); //always #1
objs[i].mass=0.5*objs[i].radius*objs[i].radius*objs[i].radius;
o[i].x=0;
o[i].DxDt=16.0;
o[i].y=GR_HEIGHT/2;
o[i].theta=pi/2;
for (j=0;j<4;j++) {
i=AllocObject(OT_LARGE_ROCK);
o[i].x=RandU4%GR_WIDTH;
o[i].y=RandU4%GR_HEIGHT;
o[i].DxDt=(32768-RandU2)/2000.0;
o[i].DyDt=(32768-RandU2)/2000.0;
o[i].DthetaDt=(32768-RandU2)/25000.0;
o[i].theta=pi2*(32768-RandU2)/16384.0;
}
}
void MyDerivative(Ode *ode,double t,Order2D2Theta *state,Order2D2Theta *DstateDt)
{
I8 i,j;
double f,d,d1,dd,dx,dy;
nounusedwarn ode,t;
MemSet(DstateDt,0,sizeof(Order2D2Theta)*NUM_OBJECTS);
for (i=0;i<NUM_OBJECTS;i++) {
if (objs[i].active==A_ACTIVE) {
DstateDt[i].x=state[i].DxDt;
DstateDt[i].y=state[i].DyDt;
DstateDt[i].theta=state[i].DthetaDt;
for (j=0;j<NUM_OBJECTS;j++) {
if (i!=j && objs[j].active==A_ACTIVE) {
dx=state[i].x-state[j].x;
dy=state[i].y-state[j].y;
dd=Sqr(dx)+Sqr(dy);
d=Sqrt(dd);
if (d) {
dx/=d;
dy/=d;
} else {
dx=0;
dy=0;
}
d1=objs[i].radius+objs[j].radius;
f=0;
if (dd<Sqr(d1)) {
if (bounce && objs[i].type!=OT_CARGO && objs[j].type!=OT_CARGO) {
f=Sqr(Sqr(Sqr(d1-Abs(d)+0.1))); //spring force
if (f>1000000.0) f=1000000.0;
}
} else
f=-2.5*objs[i].mass*objs[j].mass/(dd+1.0);
DstateDt[i].DxDt+=f*dx/objs[i].mass;
DstateDt[i].DyDt+=f*dy/objs[i].mass;
}
}
}
}
switch (cmd) {
case CMD_SPIN_LEFT:
DstateDt[0].DthetaDt-=10.0;
break;
case CMD_SPIN_RIGHT:
DstateDt[0].DthetaDt+=10.0;
break;
case CMD_THRUST:
DstateDt[0].DxDt+=100.0*Cos(state[0].theta-pi/2.0);
DstateDt[0].DyDt+=100.0*Sin(state[0].theta-pi/2.0);
break;
}
DstateDt[1].DxDt+=2.0*Cos(state[1].theta-pi/2.0);
DstateDt[1].DyDt+=2.0*Sin(state[1].theta-pi/2.0);
}
void Collision(I8 i,I8 j)
{
I8 i2;
switch (objs[i].type) {
case OT_SHIP:
if (!bounce) {
cmd=CMD_EXIT;
objs[i].active=A_INACTIVE;
}
break;
case OT_CARGO:
cmd=CMD_EXIT;
objs[i].active=A_INACTIVE;
break;
case OT_SPECK:
if (objs[j].type==OT_BULLET && !bounce)
objs[i].active=A_INACTIVE;
break;
case OT_BULLET:
if (!bounce)
objs[i].active=A_INACTIVE;
break;
case OT_PEBBLE:
case OT_TINY_ROCK:
case OT_SMALL_ROCK:
case OT_MEDIUM_ROCK:
i2=AllocObject(objs[i].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[i].x+objs[i2].radius+2.0;
o[i2].y=o[i].y;
o[i2].theta=o[i].theta;
o[i2].DxDt=o[i].DxDt;
o[i2].DyDt=o[i].DyDt;
o[i2].DthetaDt=o[i].DthetaDt;
i2=AllocObject(objs[i].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[i].x-objs[i2].radius-2.0;
o[i2].y=o[i].y;
o[i2].theta=o[i].theta;
o[i2].DxDt=o[i].DxDt;
o[i2].DyDt=o[i].DyDt;
o[i2].DthetaDt=o[i].DthetaDt;
objs[i].active=A_INACTIVE;
break;
case OT_LARGE_ROCK:
i2=AllocObject(objs[i].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[i].x+objs[i2].radius+4.0;
o[i2].y=o[i].y+objs[i2].radius+4.0;
o[i2].theta=o[i].theta;
o[i2].DxDt=o[i].DxDt;
o[i2].DyDt=o[i].DyDt;
o[i2].DthetaDt=o[i].DthetaDt;
i2=AllocObject(objs[i].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[i].x-objs[i2].radius-4.0;
o[i2].y=o[i].y-objs[i2].radius-4.0;
o[i2].theta=o[i].theta;
o[i2].DxDt=o[i].DxDt;
o[i2].DyDt=o[i].DyDt;
o[i2].DthetaDt=o[i].DthetaDt;
i2=AllocObject(objs[i].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[i].x-objs[i2].radius-4.0;
o[i2].y=o[i].y+objs[i2].radius+4.0;
o[i2].theta=o[i].theta;
o[i2].DxDt=o[i].DxDt;
o[i2].DyDt=o[i].DyDt;
o[i2].DthetaDt=o[i].DthetaDt;
i2=AllocObject(objs[i].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[i].x+objs[i2].radius+4.0;
o[i2].y=o[i].y-objs[i2].radius-4.0;
o[i2].theta=o[i].theta;
o[i2].DxDt=o[i].DxDt;
o[i2].DyDt=o[i].DyDt;
o[i2].DthetaDt=o[i].DthetaDt;
objs[i].active=A_INACTIVE;
break;
}
switch (objs[j].type) {
case OT_SHIP:
if (!bounce) {
cmd=CMD_EXIT;
objs[j].active=A_INACTIVE;
}
break;
case OT_CARGO:
cmd=CMD_EXIT;
objs[j].active=A_INACTIVE;
break;
case OT_SPECK:
if (objs[i].type==OT_BULLET && !bounce)
objs[j].active=A_INACTIVE;
break;
case OT_BULLET:
if (!bounce)
objs[j].active=A_INACTIVE;
break;
case OT_PEBBLE:
case OT_TINY_ROCK:
case OT_SMALL_ROCK:
case OT_MEDIUM_ROCK:
i2=AllocObject(objs[j].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[j].x+objs[i2].radius+2.0;
o[i2].y=o[j].y;
o[i2].theta=o[j].theta;
o[i2].DxDt=o[j].DxDt;
o[i2].DyDt=o[j].DyDt;
o[i2].DthetaDt=o[j].DthetaDt;
i2=AllocObject(objs[j].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[j].x-objs[i2].radius-2.0;
o[i2].y=o[j].y;
o[i2].theta=o[j].theta;
o[i2].DxDt=o[j].DxDt;
o[i2].DyDt=o[j].DyDt;
o[i2].DthetaDt=o[j].DthetaDt;
objs[j].active=A_INACTIVE;
break;
case OT_LARGE_ROCK:
i2=AllocObject(objs[j].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[j].x+objs[i2].radius+4.0;
o[i2].y=o[j].y+objs[i2].radius+4.0;
o[i2].theta=o[j].theta;
o[i2].DxDt=o[j].DxDt;
o[i2].DyDt=o[j].DyDt;
o[i2].DthetaDt=o[j].DthetaDt;
i2=AllocObject(objs[j].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[j].x-objs[i2].radius-4.0;
o[i2].y=o[j].y-objs[i2].radius-4.0;
o[i2].theta=o[j].theta;
o[i2].DxDt=o[j].DxDt;
o[i2].DyDt=o[j].DyDt;
o[i2].DthetaDt=o[j].DthetaDt;
i2=AllocObject(objs[j].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[j].x-objs[i2].radius-4.0;
o[i2].y=o[j].y+objs[i2].radius+4.0;
o[i2].theta=o[j].theta;
o[i2].DxDt=o[j].DxDt;
o[i2].DyDt=o[j].DyDt;
o[i2].DthetaDt=o[j].DthetaDt;
i2=AllocObject(objs[j].type-1);
objs[i2].active=A_TRANSITION;
o[i2].x=o[j].x+objs[i2].radius+4.0;
o[i2].y=o[j].y-objs[i2].radius-4.0;
o[i2].theta=o[j].theta;
o[i2].DxDt=o[j].DxDt;
o[i2].DyDt=o[j].DyDt;
o[i2].DthetaDt=o[j].DthetaDt;
objs[j].active=A_INACTIVE;
break;
}
}
void CheckCollisions()
{
I8 i,j,*r1;
double d,d1,dd,dx,dy;
GrBitMap *b;
for (i=0;i<NUM_OBJECTS;i++) {
if (objs[i].active==A_ACTIVE) {
for (j=i+1;j<NUM_OBJECTS;j++) {
if (objs[j].active==A_ACTIVE) {
dx=o[i].x-o[j].x;
dy=o[i].y-o[j].y;
dd=Sqr(dx)+Sqr(dy);
d=Sqrt(dd);
if (d) {
dx/=d;
dy/=d;
} else {
dx=0;
dy=0;
}
d1=objs[i].radius+objs[j].radius;
if (dd<Sqr(d1)) {
b=GrBitMapNew(BMT_COLOR4,64,64,Fs);
b->flags|=BMF_TRANSFORMATION;
r1=b->r;
b->r=GrTheta(o[i].theta);
b->x=32;
b->y=32;
b->z=0;
GrElemsPlot(b,0,0,0,objs[i].img);
Free(b->r);
b->r=r1;
b->bkcolor=ROP_COLLISION+BLACK;
r1=b->r;
b->r=GrTheta(o[j].theta);
b->x=o[j].x-o[i].x+32;
b->y=o[j].y-o[i].y+32;
b->z=0;
GrElemsPlot(b,0,0,0,objs[j].img);
Free(b->r);
b->r=r1;
if (b->collision_cnt>0)
Collision(i,j);
GrDel(b);
}
}
}
}
}
for (i=0;i<NUM_OBJECTS;i++)
if (objs[i].active==A_TRANSITION)
objs[i].active=A_ACTIVE;
}
#define MUZZLE_VELOCITY 500.0
void Fire()
{
double t=o[0].theta;
I8 i=AllocObject(OT_BULLET);
objs[i].timeout=GetTimeStamp+time_stamp_freq/2;
objs[i].mass*=10.0;
o[i].x=o[0].x+(objs[0].radius+objs[i].radius+1.0)*Cos(t-pi/2.0);
o[i].y=o[0].y+(objs[0].radius+objs[i].radius+1.0)*Sin(t-pi/2.0);
o[i].DxDt=o[0].DxDt+MUZZLE_VELOCITY*Cos(t-pi/2.0);
o[i].DyDt=o[0].DyDt+MUZZLE_VELOCITY*Sin(t-pi/2.0);
o[i].DthetaDt=(32768-RandU2)/3000.0;
//not real physics with the 0.005 factor
o[0].DxDt-=0.005*MUZZLE_VELOCITY*Cos(t-pi/2.0)*objs[i].mass/objs[0].mass;
o[0].DyDt-=0.005*MUZZLE_VELOCITY*Sin(t-pi/2.0)*objs[i].mass/objs[0].mass;
}
void CheckCrazy()
{
I8 i;
double d;
for (i=0;i<NUM_OBJECTS;i++)
if (objs[i].active==A_ACTIVE) {
d=Sqrt(Sqr(o[i].DxDt)+Sqr(o[i].DyDt));
if (d>MUZZLE_VELOCITY*5.0)
Auto(" ");
}
}
void Rocks()
{
I8 ch=0,i=0,c,p1,p2,sc=0;
void *old_update=Fs->update_win;
Ltf *l,*old_cur_ltf=Fs->cur_ltf,*old_aux_ltf=Fs->aux_ltf;
BoolU4 old_preempt=Preempt(OFF),
old_border=WinBorder(OFF);
TssStruct *song_tss=Spawn(&SongTsk,"Rocks Song",Fs);
I8 old_attr=Fs->text_attribute;
SetTypeMatic(0);
ode=OdeNew(NUM_OBJECTS*6);
ode->derivative=&MyDerivative;
ode->tolerance_start=.1;
o=ode->state;
objs=MAlloc(NUM_OBJECTS*sizeof(Object));
Fs->text_attribute=0x0F;
WinMax;
Fs->cur_ltf=NULL;
Fs->aux_ltf=l=InitSysAuxLtf(TRUE);
LtfPutSExt(l,"$$MA+A+TML+IV,\"Restart | \",\" \"$$");
LtfPutSExt(l,"$$MA+A+TML+IV,\"Bounce | \",\"b\"$$");
LtfPutSExt(l,"$$MA+A+TML+IV,\"Exit\",\"\\033\"$$");
LtfPutSExt(l,"$$CM+LX+TY,2,2$$$$TX+BK,\"Escort the cargo ship\"$$");
InitObjs;
InsQue(ode,Fs->last_ode);
Fs->update_win=&DrawIt;
while (ch!=CH_ESC && ch!=CH_CTRLQ) {
InitObjs;
ch=0;
cmd=CMD_NULL;
while (ch!=CH_ESC && ch!=CH_CR && ch!=CH_SPACE && ch!=CH_CTRLQ) {
while (c=ScanMsg(&p1,&p2,1<<MSG_KEY_DOWN|1<<MSG_KEY_UP)) {
ch=p1; sc=p2;
if (c==MSG_KEY_DOWN) {
if (ch==CH_SPACE) {
if (!l->best_d && l->cur_entry!=l) {
LtfRunEntry(l,l->cur_entry,TRUE,old_preempt);
ch=0;
l->best_d=MAX_I8;
}
} else if (ch=='b')
bounce=!bounce;
else if (sc.u1[0]==SC_CURSOR_RIGHT)
cmd=CMD_SPIN_RIGHT;
else if (sc.u1[0]==SC_CURSOR_LEFT)
cmd=CMD_SPIN_LEFT;
else if (sc.u1[0]==SC_CURSOR_UP)
cmd=CMD_THRUST;
else if (sc.u1[0]==SC_CURSOR_DOWN)
Fire;
} else
cmd=CMD_NULL;
}
CheckCollisions;
CheckCrazy;
if (cmd==CMD_EXIT) {
Sleep(1000);
ch=CH_SPACE;
}
WinSync; //messages are only queued by winmngr
}
}
Kill(song_tss);
Sound(0);
LtfDel(l);
Fs->aux_ltf=old_aux_ltf;
if (Fs->cur_ltf=old_cur_ltf)
LtfBottom(Fs->cur_ltf);
RemQue(ode);
OdeDel(ode);
Free(objs);
Fs->text_attribute=old_attr;
Fs->update_win=old_update;
WinBorder(old_border);
Preempt(old_preempt);
}
 ùÿÿÿüÿÿÿüÿÿÿúÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿýÿÿÿýÿÿÿ÷ÿÿÿ÷ÿÿÿûÿÿÿûÿÿÿÿÿÿÿøÿÿÿøÿÿÿ   
 ôÿÿÿôÿÿÿôÿÿÿôÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿþÿÿÿ þÿÿÿ  �ùÿÿÿüÿÿÿüÿÿÿúÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿýÿÿÿýÿÿÿ÷ÿÿÿ÷ÿÿÿûÿÿÿûÿÿÿÿÿÿÿøÿÿÿøÿÿÿÿÿÿÿþÿÿÿ
þÿÿÿ

 ␍  ýÿÿÿ



óÿÿÿóÿÿÿøÿÿÿøÿÿÿûÿÿÿ ûÿÿÿ E þÿÿÿýÿÿÿólß$† n[½þÿÿÿd¨­hþÿÿÿûÿÿÿn[϶m’$C’$É$Q¶eÛ¼„ar–ͳíÙžW’"Cš¶½mÛ²úÿÿÿ¶m’6MÛ+€üÿÿÿ¤m þÿÿÿþÿÿÿ¤iÛT
I²rsüÿÿÿôÿÿÿóæy^ÝÚ³m“$íÛ¶mÛ³g’¡F CQŒ¢d["‰©( ³lÁ°lž×n.$I’T¤$à ÷ÿÿÿž=Û$Îúÿÿÿ«]»¶m“¦IFI’$I’„IrY–ms×zõÖm¶kÛ&MÛ¶m“¤%‘’l¶e[’$‰HÒ·m›<I“$I’$I’ ³mÛ¶mÛ¶m[DŠŒüÿÿÿøÿÿÿ¶Mß§m{ þÿÿÿI�ɶm›·yÛùÿÿÿv]×£’,K€$ÉX $¥�Q‘ IŠK°Ù2Û´MoK’dɶm›=Ï3O“¦=øÿÿÿúÿÿÿ«ëu¦ P ÿÿÿÿþÿÿÿþÿÿÿþÿÿÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿ
þÿÿÿýÿÿÿþÿÿÿ P ÿÿÿÿþÿÿÿþÿÿÿþÿÿÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿ
þÿÿÿýÿÿÿþÿÿÿ
E þÿÿÿýÿÿÿólß$† n[½þÿÿÿd¨ ­hþÿÿÿûÿÿÿn[϶m’$C’$É$Q¶eÛ¼„ar–ͳíÙžW’"Cš¶½mÛ²úÿÿÿ¶m’6MÛ+€üÿÿÿ¤m þÿÿÿþÿÿÿ¤iÛT
I² rsüÿÿÿôÿÿÿóæy^ÝÚ³m“$íÛ¶mÛ³g’¡F CQŒ¢d["‰©( ³lÁ°lž×n.$I’T¤$à ÷ÿÿÿž=Û$Îúÿÿÿ«]»¶m“¦IFI’$I’„IrY–ms×zõÖm¶kÛ&MÛ¶m“¤%‘’l¶e[’$‰HÒ·m›<I“$I’$I’ ³mÛ¶mÛ¶m[DŠŒüÿÿÿøÿÿÿ¶Mß§m{ þÿÿÿI�ɶm›·yÛùÿÿÿv]×£’,K€$ÉX $¥�Q‘ IŠK°Ù2Û´MoK’dɶm›=Ï3O“¦=øÿÿÿúÿÿÿ«ëu¦ ␍J)ÿÿÿÿûÿÿÿÛlÛ¤m“dÂ�$·m ²dm þÿÿÿþÿÿÿöiÚ�Nøÿÿÿض¶µkۦϓ$Û$‰$ ’ A’$$m»Þ6ÏófHÿÿÿÿûÿÿÿuëÚöH† EQdlÛö¶-Q$Æë Á²l¶mýÿÿÿúÿÿÿ6ÚöÿÿÿsÛÖmëÖ­ÏŸ¶mû$¥$”"mY�%‰¢( #I’ÚömÛ®k»@’,˶mö¼$a…‰Â�$mÛ¾i’¾ùÛÁ¶mÛ¶m›çºvm[I¤„‰ÂDHøÿÿÿ®ëÚöì%›mÛ¶Iš´ízÛšˆÜþoI&IHA’$I’$II”m“¤ïmÛ¶Õž·$
’!É␍,øÿÿÿþÿÿÿ¶k»¶éÿ´mÓ$™0L�e[ ýÿÿÿI– É úÿÿÿ¶]Ûh# ýÿÿÿ›·Í¶m& ¥�¦í­n!ðÿÿÿþÿÿÿÿÿÿÿ ␍ûÿÿÿúÿÿÿûÿÿÿúÿÿÿùÿÿÿöÿÿÿöÿÿÿúÿÿÿþÿÿÿüÿÿÿüÿÿÿýÿÿÿýÿÿÿ␍␍␍ýÿÿÿ

þÿÿÿûÿÿÿþÿÿÿûÿÿÿ␍   ÿÿÿÿúÿÿÿüÿÿÿ ûÿÿÿþÿÿÿJùÿÿÿüÿÿÿüÿÿÿúÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿýÿÿÿýÿÿÿ÷ÿÿÿ÷ÿÿÿûÿÿÿûÿÿÿÿÿÿÿøÿÿÿøÿÿÿüùÿÿÿüÿÿÿüÿÿÿúÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿýÿÿÿýÿÿÿ÷ÿÿÿ÷ÿÿÿûÿÿÿûÿÿÿÿÿÿÿøÿÿÿøÿÿÿÿÿÿÿþÿÿÿ
þÿÿÿ

 ␍ 7þÿÿÿþÿÿÿ4In]Kjÿÿÿÿ 7þÿÿÿ6™%Ifýÿÿÿ$Iþÿÿÿÿÿÿÿ¤ÿÿÿÿ(