BinProlog3.45/ 40755 764 764 0 6664734177 12225 5ustar javierjavierBinProlog3.45/src/ 40755 764 764 0 6665546022 13003 5ustar javierjavierBinProlog3.45/src/makefile100644 764 764 24247 5764563067 14640 0ustar javierjavier#replace this with SRC= if it does not work on your machine SRC = `pwd` GCC = gcc DEFS = OPTI= $(DEFS) -s -O WFLAGS = -Wall # Compiler and flag bar TEST = $(DEFS) -g -DPROF=1 -DTRACE=1 LASM = -DTRACE=1 DEBUG = $(DEFS) $(WFLAFS) -g -O -DPROF=2 -DTRACE=2 VERS=345 GCC0 = $(GCC) $(OPTI) GCCS = $(GCC) -msupersparc -fomit-frame-pointer $(OPTI)2 GCCS3 = $(GCC) -msupersparc -fomit-frame-pointer $(OPTI)3 GCCO = $(GCC) -fomit-frame-pointer $(OPTI)2 # CC options GCCG = $(GCC) $(DEFS) -g GCCGT = $(GGCG) -DTRACE=1 GCCT = $(GCC) -O $(WFLAGS) $(TEST) GCCTN = $(GCC) -O $(TESTN) GCCW = $(GCC) -O $(DEFS) $(WFLAGS) GCCD = $(GCC) -g $(WFLAGS) $(DEBUG) GCCU = $(GCC) -g -O $(WFLAGS) $(DEFS) -DSAFETY=2 GCCNV = $(GCCO) -DNO_VALUE_TRAIL -DTIDY GCCL = $(GCC) $(DEFS) -g -O $(LASM) CLCC = clcc $(OPTI) CC0 = cc -s CCO = cc $(OPTI) CCT = cc $(TEST) SCC = scc $(OPTI)2 SCCT = scc $(TEST) SGIO = cc -DSGI $(OPTI)3 -Olimit 1200 SGI2 = cc -DSGI $(OPTI)2 -Olimit 1300 SGIT = cc $(TEST) IBMO = cc -DSGI $(OPTI) # use cc as gcc does not work well, ignore warning on -O !!! CCHP = cc $(DEFS) +w3 +Obb1000 -s CCHP1 = cc $(DEFS) +w3 +O2 -s ###################### START EDITABLE AREA ########################## # PLEASE use the appropriate combination of compilers and options !!! # See also later entries configured for various OSs and compilers. #CC= $(GCCL) CC= $(GCCO) #CC= $(GCCS) #CC= $(GCCG) LDR = ld -r LDS = $(GCC) -shared BINDIR = /usr/local/bin #BINDIR = $(HOME)/bin #BINDIR = $(HOME)/bin/solaris.bin OTHER_PROLOG = sicstus #OTHER_PROLOG = sicstus -f ######################## END EDITABLE AREA ########################### PC = $(HOME)/wabi/tosh/v/src RATPC=$(HOME)/wabi/tosh/v/pc TESTPC=$(HOME)/wabi/tosh/v/win DEL=del OLDBP = bp -q2 P1=engine P2=ru P3=sym P4=load P5=builtins P6=dict P7=io P8=float P9=debug P10=main CPROGS=$(P1).c $(P2).c $(P3).c $(P4).c $(P5).c $(P6).c $(P7).c $(P8).c $(P9).c $(P10).c c.c SELFOBS = sru.o ssym.o sengine.o sload.o MAINOBS = $(P1).o $(P2).o $(P3).o $(P4).o OTHEROBS = $(P5).o $(P6).o $(P7).o $(P8).o $(P9).o $(P10).o OBS = $(MAINOBS) $(OTHEROBS) c.o PPROGS = headers.pl top.pl bin.pl co.pl init.pl oper.pl lib.pl read.pl dcg.pl write.pl extra.pl other.pl c_comp.pl c_instr.pl run.pro wam.pro binpro.pro CP = cp # default generic distribution it: basic install #it: all #it: minimal #it: basic all: basic bp basic: minimal binpro minimal: ru wam.bp another: $(CP) wam.bp otherwam.bp lasm: rm -f $(OBS) make CC="$(GCCL)" rm -f $(OBS) mv ru deb deb: rm -f $(OBS) make CC="$(GCCG)" rm -f $(OBS) mv ru deb solaris sparc.solaris: make all CC="$(GCCS)" sunos sparc.sunos: make basic binpro CC="$(GCCO)" # hobbes.cs.kuleuven.ac.be hp parisc.hp: make binpro CC="$(CCHP)" # bosoleil.ci.umoncton.ca hp1 parisc.hp1: make minimal CC="$(CCHP1)" make binpro CC="$(CCHP1)" #bob.cs.kuleuven.ac.be, ma-dalton # gcc bug: works with -g but not with -O (malloc problem) alpha alpha.dec: make wam.o CC="$(GCC) -s" # gets arround gcc -O malloc bug, unhappy with byte array on Alphas make bp.o binpro.o CC="$(GCCO)" make binpro CC="$(GCC) -s" #zeno.cs.kuleuven.ac.be, spinach ??? ibm r6000.ibm: make CC="$(IBMO)" binpro #euler.cs.kuleuven.ac.be decmips mips.dec: make CC="$(GCCO)" binpro # brutus@cs.kuleuven.ac.be, lccr.cs.sfu.ca sun3 68k.sun3: # (setenv TMPDIR ./ ; gcc -s -o wam.o -c wam.c) make wam.o CC="$(GCC) -s" make binpro CC="$(GCCO)" # make ru CC="$(GCC0)" #basil.cs.sfu.ca next 68k.next: make binpro CC="$(CCO) -DNEXT_MACH" #luke linux pc.linux: make basic binpro CC="$(GCCO)" #bezier.iro.umontreal.ca fraser.sfu.ca missing sgi bp.mips.sgi: make binpro CC="$(SGI2)" #fdml.com sco: make binpro CC="$(CCO)" mirrors: mirror make mirror PC=$(RATPC) make mirror PC=$(TESTPC) mirror: mmirror $(CP) global.h c_defs.h safety.h engine.h $(PC) $(CP) $(PPROGS) $(PC) $(CP) builtins.pl $(PC) $(CP) defs.h prof.h $(PC) $(CP) $(CPROGS) $(PC) $(CP) wam.bp $(PC)/otherwam.bp $(CP) wam.bp $(PC) $(CP) wam.c wam.h binpro.c binpro.h $(PC) # chmod ugo+r+w+x $(PC)/* mmirror: basic # rm -f $(PC)/makefile cp makefile $(PC)/makefile # chmod ugo+r+w+x $(PC)/makefile ratmirror: make mirror PC=$(RATPC) testmirror: make mirror PC=$(TESTPC) # Uses Watcom C/C++ 10.0 # 32 bit Windows 3.1 with Watcom winbp: wmake -f bp.mk # 32 bit DOS with Watcom dosbp: wmake -f dosbp.mk # problems under MsWindows with -DCLOCK (possible djgcc bug) # Watcom versions for 32 DOS and Windows 3.1 are OK dosbinpro: make binpro CC=$(GCC) CFLAGS="-DNOCLOCK $(OPTI)" dos: make basic CC=$(GCC) CFLAGS="-DNOCLOCK $(OPTI)" copy ru ru.386 ldos: make CC=$(GCC) CFLAGS="-DNOCLOCK $(LASM)" copy ru ru.386 $(DEL) ru doslib: doslib1 doslib2 doslib1: $(DEL) *.o make CC=$(GCC) CFLAGS="-DNOCLOCK $(OPTI) -DSELF -DTRACE=0" rem ignore errors and do make doslib doslib2: $(LDR) -o bp.o $(OBS) copy bp.o bpo.386 $(DEL) *.o ren bpo.386 bp.o # not used anymore mac aux: make CC=cc CFLAGS="-DNOCLOCK $(OPTI)" mv ru ru.mac.aux sequent: make CC=$(GCC) CFLAGS="-DNOCLOCK $(OPTI)" mv ru ru.sequent.dynix # bootsrapping wam.bp: otherwam.bp $(PPROGS) # $$$ #wam.bp: $(PPROGS) @echo bootsrapping BinProlog... echo "boot. " | ru -q3 otherwam.bp ru: $(OBS) $(CC) -o ru $(OBS) -lm builtins.pl defs.h prof.h: headers.pl echo "['headers.pl']. ['init.pl']. go. " | $(OTHER_PROLOG) binpro: binpro.o bp.o c.o wam.o $(CC) -o binpro bp.o binpro.o c.o wam.o -lm binpro.o: global.h c_defs.h binpro.h binpro.c $(CC) -o binpro.o -c binpro.c binpro.h binpro.c: binpro.pro echo "cmake(binpro,prolog). " | ru wam.bp # makes a BinProlog library usable to generate a standalone executable bp: libbp.so binpro.o c.o $(GCC) -o bp $(SRC)/libbp.so binpro.o c.o -lm @echo assumed dynamic libraries are in $(SRC) libso: libbp.so libbp.so: global.h c_defs.h wam.o bp.o $(PPROGS) $(LDS) -s -o libbp.so bp.o wam.o # C-ified wam-code library wamlib: wam.o wam.o: global.h c_defs.h wam.h wam.c # $$$ #wam.o: wam.h wam.c $(CC) -o wam.o -c wam.c wam.h wam.c: wam.pro $(PPROGS) # $$$ #wam.h wam.c: wam.pro echo "cmake(wam,prolog). " | ru wam.bp # emulator library lib: bp.o bp.o: $(SELFOBS) $(OTHEROBS) $(LDR) -o bp.o $(SELFOBS) $(OTHEROBS) sload.o: load.c defs.h global.h $(CC) -DSELF -o sload.o -c load.c sengine.o: engine.c defs.h global.h $(CC) -DSELF -o sengine.o -c engine.c ssym.o: sym.c defs.h global.h $(CC) -DSELF -o ssym.o -c sym.c sru.o: ru.c defs.h global.h $(CC) -DSELF -o sru.o -c ru.c cleanlib: rm -f $(SELFOBS) solinst: mv -f bp $(BINDIR)/ @echo TYPE bp TO run BinProlog! install: $(CP) binpro $(BINDIR)/bp chmod ugo+rx $(BINDIR)/bp @echo TYPE bp TO run BinProlog! uninstall: rm -f $(BINDIR)/bp oldinstall: echo '$(BINDIR)/ru $$* $(BINDIR)/wam.bp' > bp chmod ugo+rx bp mv bp $(BINDIR)/ $(CP) ru wam.bp $(BINDIR)/ chmod ugo+r $(BINDIR)/wam.bp chmod ugo+rx $(BINDIR)/ru @echo TYPE bp TO run BinProlog! olduninstall: rm -f $(BINDIR)/bp $(BINDIR)/ru $(BINDIR)/wam.bp wasm: $(CC) -S -o wam.s wam.c asm: $(CC) -DSELF -S -o engine.s engine.c save: rm -f tar.gz tar.Z rm -r -f bak mkdir bak $(CP) makefile README bak $(CP) global.h c_defs.h safety.h engine.h bak $(CP) $(PPROGS) bak $(CP) builtins.pl bak $(CP) defs.h prof.h bak $(CP) $(CPROGS) bak $(CP) wam.bp bak/otherwam.bp uue: save mv bak bp$(VERS) tar cvf bp$(VERS).tar bp$(VERS) compress bp$(VERS).tar uuencode bp$(VERS).tar.Z bp$(VERS).tar.Z > bp$(VERS).tar.Z.uue mv bp$(VERS) bak rm bp$(VERS).tar.Z gz: save tar cvf tar bak gzip tar Z: save tar cvf tar bak compress tar restore: rm -f -r bak gunzip tar tar xvf tar rm -f tar diff bak . @echo 'to restore do cp -p bak/* .' test: rusage bm1 'ru -q2' rusage bm2 'ru -q2' rusage bm3 'ru -q2' btest: rusage bm1 'bp -q2' rusage bm2 'bp -q2' rusage bm3 'bp -q2' ftp: makefile sh -c 'rm -r -f ftp; mkdir ftp; mkdir ftp/progs' $(CP) ftpsrc/* ftp $(CP) $(PPROGS) ftp $(CP) progs/* ftp/progs' prof: $(CC) -DPROF -g -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o bigbug: $(CC) -DPROF -DDEBUG $(GG) -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o trace: $(CC) -DPROF -DTRACE $(GG) -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o # bootstaping remake fromold: realclean echo "[headers]. go. [builtins]=>make. " | $(OLDBP) mv -f wam.bp otherwam.bp make CC="$(GCCO)" make wclean mv -f wam.bp otherwam.bp make CC="$(GCCO)" again: wclean echo "[headers]. go. [builtins]=>make. " | ./ru mv -f wam.bp otherwam.bp make CC="$(GCCO)" make wclean mv -f wam.bp otherwam.bp make CC="$(GCCO)" otherwam.bp: builtins.pl $(PPROGS) echo "['other.pl']. boot_from_other($(OTHER_PROLOG)). "| $(OTHER_PROLOG) @echo finished generating BinProlog using $(OTHER_PROLOG)... oclean: rm -f $(OBS) $(SELFOBS) *.o *.wam ru binpro bp mostly_clean: rm -f *.o rm -f otherwam.bp ruclean ru_clean: rm -f ru.*.* clean: oclean rm -f *.so *.exe core *.asm wam.c wam.h binpro.h binpro.c binpro bp rm -f *.s w2a rm -f *.tar.*.uue *.gz wamclean wam_clean: wclean rm -f *.bp *.out wam.h wam.c binpro.h binpro.c binpro wclean: rm -f *.wam uclean: (cd $(PC); make dosrclean DEL="rm -f") (cd $(RATPC); make dosrclean DEL="rm -f") (cd $(TESTPC); make dosrclean DEL="rm -f") dclean: dosrclean make dosrclean PC=$(RATPC) make dosrclean PC=$(TESTPC) dosclean: $(DEL) *.obj $(DEL) *.sym $(DEL) *.rex $(DEL) *.map $(DEL) *.err $(DEL) *.o $(DEL) *.wam $(DEL) *.bak $(DEL) ru.386 $(DEL) *.exe $(DEL) ru dosrclean: dosclean $(DEL) *.pl $(DEL) *.h $(DEL) *.c $(DEL) *.bp $(DEL) *.pro $(DEL) readme $(DEL) progs $(DEL) myprogs # $(DEL) makefile realclean real_clean: clean wam_clean ru_clean rm -f defs.h prof.h builtins.pl rm -f otherwam.bp engine.txt cpro cprof: $(CC) -O -p -L/usr/5lib -o ru $(CPROGS) tcov: $(CC) -a -o ru $(CPROGS) ru tcov -30 $(CPROGS) tail -40 ru.tcov int: Auxpl/int.c $(CC) -O4 -o int Auxpl/int.c w2a: $(CC) -O -o w2a Auxpl/w2a.c w2a < wam.bp > wam.txt #.IGNORE: # ----------------- dependencies ------------------ sym.o: sym.c global.h dict.o: dict.c global.h io.o: io.c global.h defs.h builtins.o: builtins.c defs.h global.h load.o: load.c defs.h global.h ru.o: ru.c defs.h global.h engine.o: engine.c engine.h defs.h global.h float.o: float.c defs.h global.h debug.o: debug.c defs.h prof.h global.h c.o: global.h c.c main.o: main.c BinProlog3.45/src/README100644 764 764 2535 5764563067 13774 0ustar javierjavierPERF: on SS20 FINISHED b1 22.47 real 20.03 user 0.71 sys 0 FINISHED b2 41.70 real 40.50 user 0.65 sys 0 FINISHED b3 59.86 real 58.97 user 0.31 tmake FINISHED b1 20.98 real 19.48 user 0.89 sys 0 FINISHED b2 42.10 real 40.83 user 0.63 sys 0 FINISHED b3 59.37 real 57.11 user 0.31 sys 0 easier and more flexible C-interface, with multiple Prolog engines faster C-ified version on some machines, with - recompile current project: use co/0. tmake:-tmake(12,60). ?- [library(engines)]. hides engines in a nice, high-level construct Answer<=Producer=>Consumer Linear and intuitionistic implication are modified to take care of the generation/consumption of answers. In the future, this will explit parallelism: the producer can start produce before the consumer actually starts consuming. COROUTINING: Current model: - the master has the control until ask_engine/2 starts the slave when the master waits until the slave finishes, then gets the answer. The slave suspend again until a new answer is asked. - Proposed future model: - a new primitive speculatively runs the slave which stops when it finds an answer and waits for the master's ask_answer or stops and die if no other answer is available WORKS WITH WATCOM, DOS 32 bit and Windows 3.1 versions FIXED bug with invisible DCGs and made dcg_tell backtrackable as it should be BinProlog3.45/src/global.h100644 764 764 36707 5764563067 14555 0ustar javierjavier#ifndef _GLOBAL_H #define _GLOBAL_H #include #define STD_in g.infile #define STD_out g.outfile #define STD_err stderr /* #define WATCOM: 1=DOS,2=WINDOWS */ #if WATCOM>0 #define CLOCK #define NOGETOPT #endif /* multiple-engine operations (used also for the Prolog-C interface) */ #define MAXENGINES (1<<6) #define ROOT_ENGINE 0 #define EMPTY_ENGINE 1 #define LOADED_ENGINE 2 #define HALTED_ENGINE 3 #define RUNNING_ENGINE 4 #define SUSPENDED_ENGINE 5 #define READY_ENGINE 6 #define STOPPED_ENGINE 7 #define DEAD_ENGINE 8 #define ENGINE_TYPE 0 #define ENGINE_PARENT 1 #define ENGINE_P 2 #define ENGINE_GOAL 3 #define ENGINE_ANSWER 4 #define SET_ENGINE(Attr,Mes) (wam[MesStk].base[Attr]=(term)(Mes)) #define GET_ENGINE(Attr) (wam[MesStk].base[Attr]) #define SET_ENGINE_TYPE(Mes) SET_ENGINE(ENGINE_TYPE,INPUT_INT(Mes)) #define GET_ENGINE_TYPE() OUTPUT_INT((cell)GET_ENGINE(ENGINE_TYPE)) #define SET_ENGINE_PARENT(Mes) SET_ENGINE(ENGINE_PARENT,PTR2INT(Mes)) #define GET_ENGINE_PARENT() INT2PTR((cell)GET_ENGINE(ENGINE_PARENT)) #if TRACE>0 #define TRACE_ENGINE(Mes) \ fprintf(STD_err,"!!! %s: (engines=%ld) %ld, type %ld\n", \ (Mes),g.lastengine-g.engines,((cell)wam)>>2,GET_ENGINE_TYPE()); #else #define TRACE_ENGINE(Mes) #endif /* #define NOCOMPRESS #define TRACE_EXEC */ #ifndef TRACE #define TRACE 0 #endif #ifndef SAFETY #define SAFETY -1 #endif #if SAFETY < 0 && TRACE < 1 #define NDEBUG #endif /* SIZEs of various DATA AREAS: can be replaced with variables as they will be dynamically allocated */ #define MAXDCG 256 #ifdef STATIC_TABLES #define HBITS 13 #define ABITS 12 #define HMAX (1<default: debug.c, prof.h are possibly not compiled, ASSERT2 is off 1==>ASSERT2 is on 2==>EXECS AND JUMPS are traced >=3==>ALL INSTRUCTIONS AND DATA AREAS ARE SHOWN ----PROF------- 0==>default: no profiler, debug.c, prof.h possibly ignored 1==>instructions are counted but not timed 2==>instructions are probabilistically timed (chance 1/13...) 3==>all instructions are timed */ #if TRACE > 0 #include #define ASSERT2(Cond,Term) \ if(!(Cond)) \ {(void)local_error((Term),"ASSERT2 failed",wam); \ assert(0);} #else #define ASSERT2(Cond,Term) #endif #include typedef char *string; typedef unsigned char byte; typedef unsigned long no; typedef no cell; typedef cell *term; typedef cell *instr; /* to circumvent bug in insight ! KDB */ extern string *atomtable; #define EMPTY #define VARTAG PUTTAG(0L,0L) #define FUNTAG PUTTAG(0L,2L) #define INTTAG PUTTAG(0L,1L) #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif typedef struct limit { long HEAP,CHOICE,TRAIL,CODE,BOARD, DICT, ATOMS,SBUF,QUIET,MESSAGE; } *limit; /* RESTRICTED SET OF WAM INSTRUCTIONS an easy optimisation is to specialize them for lists*/ #define MAXOP 256 #define END 0 #define UNIFY_VARIABLE 1 #define WRITE_VARIABLE 2 #define UNIFY_VALUE 3 #define WRITE_VALUE 4 #define UNIFY_CONSTANT 5 #define WRITE_CONSTANT 6 #define GET_CONSTANT 7 #define GET_STRUCTURE 8 #define PUT_CONSTANT 9 #define PUT_STRUCTURE 10 #define MOVE_REG 11 #define PUT_VARIABLE 12 #define GET_VALUE 13 #define PUSH_CUT 14 #define PUT_CUT 15 #define GET_CUT 16 #define EXECUTE 17 #define PROCEED 18 #define TRY_ME_ELSE 19 #define RETRY_ME_ELSE 20 #define TRUST_ME_ELSE 21 #define TRY_ME_ONLY 22 #define NONDET 23 #ifndef NOCOMPRESS #define EXEC_SWITCH 24 #endif #define SWITCH 25 #ifndef NOCOMPRESS #define EXEC_JUMP_IF 26 #endif #define JUMP_IF 27 #define LOAD_CONSTANT 28 #define LOAD_VALUE 29 #ifndef NOCOMPRESS #define GET_UNIFY_VAR_VAR 30 #define UNIFY_VAR_VAR 31 #define PUT_WRITE_VAR_VAR 32 #define WRITE_VAR_VAR 33 #define GET_UNIFY_VAL_VAL 34 #define UNIFY_VAL_VAL 35 #define PUT_WRITE_VAL_VAL 36 #define WRITE_VAL_VAL 37 #define GET_UNIFY_VAR_VAL 38 #define UNIFY_VAR_VAL 39 #define PUT_WRITE_VAR_VAL 40 #define WRITE_VAR_VAL 41 #define GET_UNIFY_VAL_VAR 42 #define UNIFY_VAL_VAR 43 #define PUT_WRITE_VAL_VAR 44 #define WRITE_VAL_VAR 45 #define MOVE_REGx2 46 #define LOAD_VALUEx2 47 #define LOAD_VAL_SHORT 48 #define EXEC_TRY 49 #endif #define LOAD_VARIABLE 50 #define PUSH_STRUCTURE 51 #define PUSH_VARIABLE 52 #ifndef NOCOMPRESS #define PUSH_VAR_VAR 53 #define CONSTANT_VAR_VAR 54 #define PUSH_VAL_VAR 55 #define CONSTANT_VAL_VAR 56 #define PUSH_VAL_VAL 57 #define CONSTANT_VAL_VAL 58 #define PUSH_VAR_VAL 59 #define CONSTANT_VAR_VAL 60 #endif #define UNIFY_VOID 61 #define WRITE_VOID 62 #define BEGIN_C_CHUNK 63 #define END_C_CHUNK 64 /* normally the last hardwired instruction: generated by load.c */ #define APPLY 65 /* non-executable pseudo-operations */ #define NOP LAST_BUILTIN+1 #define CLAUSE NOP+1 #define FIRSTARG NOP+2 #define OPERATOR NOP+3 /* currently unused: NEWPRED */ #define NEWPRED NOP+4 #define CodeStk 0 #define HeapStk 1 #define TrailStk 2 #define ChoiceStk 3 #define BoardStk 4 #define MesStk 5 #define MaxStk 6 typedef struct stack { long size; long over; term *top; term *oldtop; term *base; term *margin; term *end; term *maxused; string name; } *stack; #define cbase (wam[CodeStk].base) #define ctop (wam[CodeStk].top) #define bak_ctop (wam[CodeStk].oldtop) #define codend (wam[CodeStk].end) /* GLOBAL REGISTERS */ #define SAVED_H (*(A-2)) #define SAVED_TR (*(A-1)) #define SAVED_P (*A) #define TR_TOP wam[TrailStk].top /* HASING TABLE ENTRY */ typedef struct hentry { no pred; no fun; no val; } *hentry; /* DATA AREA FORMATS & INSTRUCTION FORMATS */ #define LSCALE (sizeof(long)/sizeof(int)) #define TAGBITS (1+LSCALE) #define ARITYBITS 8 #define REGBITS 11 #define ARGBITS 11 #define OPBITS (sizeof(no)*8-REGBITS-ARGBITS) /* if OPBITS > 10 it will be slow on SPARCs */ #define MAXARITY (1L<>(MBITS+RBITS)) #define LPUT(W,Val) ((no)(W)&~LMASK) | (no)(Val)<<(MBITS+RBITS) #define LSET(W,Val) ((no)(W)= LPUT(W,Val)) #define MGET(W) ((no)(W)<>(LBITS+RBITS)) #define MPUT(W,Val) (((no)(W)&~MMASK) |((no)(Val)<<(LBITS+RBITS)>>LBITS)) #define MSET(W,Val) ((no)(W)=MPUT(W,Val)) #define RGET(W) ((no)(W)&RMASK) #define RPUT(W,Val) (((no)(W) & ~RMASK) | (no)(Val)) #define RSET(W,Val) ((no)(W)=RPUT(W,Val)) /*******************INTERFACE TERM OPERATIONS ******************/ #define SETTAG(W,Val) RSET(W,Val) #define PUTTAG(W,Val) RPUT(W,Val) #define GETTAG(W) RGET(W) #define SETSYMNO(W,Val) MSET(W,Val) #define PUTSYMNO(W,Val) MPUT(W,Val) #define GETSYMNO(W) MGET(W) /* #define SETARITY(W,Val) LSET(W,Val) */ #define PUTARITY(W,Val) LPUT(W,Val) /*************** HIGH-LEVEL TERM OPERATIONS************************/ #define HIER Comment("Hier") #define T2T(t) C2T(T2C(t)) #if SAFETY > 1 #define Comment(C) fprintf(STD_err,"%s:%d %s\n",__FILE__,__LINE__,C) #else #define Comment(C) #endif #if SAFETY <= 0 #define T2C(t) ((cell)(t)) #define C2C(c) (c) #define C2T(c) ((term)(c)) #else #include "safety.h" #endif #define GETREF(t) (C2C(*(T2T(t)))) #define GETCELL(t) (C2C(*(C2T(t)))) #define GETARITY(W) LGET(C2C(W)) #define SETREF(t,Ref) (*(T2T(t)) = T2C(Ref)) #define SETCELL(t,Cell) (*(T2T(t)) = C2C(Cell)) #define INITREF(t,Ref) SETREF(t,Ref) #define INITCELL(t,Ref) SETCELL(t,Ref) #define NONVARREF(t) (NONVAR(GETREF(t))) #define NAME(s) (atomtable[GETSYMNO(C2C(s))]) #define INPUT_INT(Extval) ((no)((long)(Extval)<>TAGBITS) #define NONVAR(ACell) GETTAG(C2C(ACell)) #define VAR(ACell) (!GETTAG(C2C(ACell))) #define INTEGER(ACell) (GETTAG(C2C(ACell)) == INTTAG) #define IDENTIFIER(ACell) (GETTAG(C2C(ACell)) == FUNTAG) #define SYMCONST(ACell) (IDENTIFIER(ACell) && !GETARITY(ACell)) #define COMPOUND(ACell) (IDENTIFIER(ACell) && GETARITY(ACell)) #define SIMPLE(ACell) (!COMPOUND(ACell)) #define BP_FLOAT(Cell) (g.bp_float==(C2C(Cell))) #define NUMERIC(Cell) (INTEGER(Cell) || BP_FLOAT(Cell)) #define ATOMIC(ACell) \ (NONVAR(ACell) && (INTEGER(ACell) || !GETARITY(ACell))) /*************** LOW-LEVEL INSTRUCTION OPERATIONS *****************/ #define LCBITS REGBITS #define MCBITS ARGBITS #define RCBITS OPBITS #define RCMASK (((no)(1L)<>(MCBITS+RCBITS+Scale)) #define LCPUT(W,Val) ((no)(W)&~LCMASK) | (no)(Val)<<(MCBITS+RCBITS+TAGBITS) #define LCSET(W,Val) ((W)= LCPUT(W,Val)) #define MCGET(W,Scale) ((no)(W)<<(LCBITS)>>(LCBITS+RCBITS+Scale)) #define MCPUT(W,Val) \ (((no)(W)&~MCMASK)|((no)(Val)<<(LCBITS+RCBITS+TAGBITS)>>LCBITS)) #define MCSET(W,Val) ((W)=MCPUT(W,Val)) #define RCGET(W) ((no)(W)&RCMASK) #define RCPUT(W,Val) (((no)(W) & ~RCMASK) | (no)(Val)) #define RCSET(W,Val) ((W)=RCPUT(W,Val)) /*******INTERFACE INSTRUCTION OPERATIONS ********************/ #define SETOPCELL(W,Val) RCSET(W,Val) #define PUTOPCELL(W,Val) RCPUT(W,Val) #define GETOPCELL(W) RCGET(W) #define SETLEFTCELL(W,Val) MCSET(W,Val) #define PUTLEFTCELL(W,Val) MCPUT(W,Val) #define GETLEFTCELL(W) MCGET(W,TAGBITS) #define SETREGCELL(W,Val) LCSET(W,Val) #define PUTREGCELL(W,Val) LCPUT(W,Val) #define GETREGCELL(W) LCGET(W,TAGBITS) /********* HIGH LEVEL INSTRUCTION OPERATIONS*****************/ #define REGFIELD GETREGCELL(fields) #define LEFTFIELD GETLEFTCELL(fields) #define OPFIELD GETOPCELL(fields) #define On REGFIELD #define Oi LEFTFIELD #define An (*(term)((no)regs+ LCGET(fields,0) )) /* cell */ #define Ai (*(term)((no)regs+ MCGET(fields,0) )) /* cell */ #define GETFIELDS(Step) fields=((term)P)[Step] /* cell instr; An, Ai, Op */ #define GETOP(Ip) GETOPCELL(*(instr)(Ip)) #define SETOP(Ip,Val) SETOPCELL(*(term)(Ip),(term)(Val)) #define GETREG(Ip) GETREGCELL(*(instr)(Ip)) #define SETREG(Ip,Val) SETREGCELL(*(term)(Ip),(term)(Val)) #define GETLEFT(Ip) GETLEFTCELL(*(instr)(Ip)) #define SETLEFT(Ip,Val) SETLEFTCELL(*(term)(Ip),(term)(Val)) #define GETFUN(Ip) (*(term)((Ip)+1)) #define SETFUN(Ip,Val) (*(term)(++(Ip)))=(Val) #define GETLABEL(Ip) (*(instr *)((Ip)+1)) #define SETLABEL(Ip,Val) (*(instr *)((Ip)+1))=(Val) #define COPY_CELLS(To,From,Arity) \ { register no k; /* for k=1 to Arity */ \ for(k=(Arity)<<(TAGBITS); k; k-= 1<<(TAGBITS) ) \ { ASSERT2(!COMPOUND(GETREF((term)((no)(From)+k))),\ GETREF((term)((no)(From)+k)));\ SETCELL((term)((no)(To)+k),GETREF((term)((no)(From)+k)) ); \ } \ } #define COPY_ARGS(To,From,Arity) \ { COPY_CELLS(To,From,(Arity-1)); \ SETREF(To+Arity,From+Arity); \ } #define COPY_REGS()\ if(fields)\ { COPY_CELLS(regs,xref,fields-1);\ xval=xref[fields];\ if(COMPOUND(xval)) xval=T2C(xref+fields);\ regs[fields]=xval;\ } #define CUT2INT(CutPoint) (INTTAG+(cell)(CutPoint)) #define INT2CUT(IntVal) ((cell)(IntVal)-INTTAG) #if 1 #define PTR2INT(PtrVal) CUT2INT(PtrVal) #define INT2PTR(IntVal) ((void *)INT2CUT(IntVal)) #else #define PTR2INT(PtrVal) INPUT_INT(PtrVal) #define INT2PTR(IntVal) OUTPUT_INT(IntVal) #endif /* OTHER MACROS */ #define NEWLN() fprintf(g.tellfile,"\n"); fflush(g.tellfile) #define INSTR_LEN(Instr) instr_len[GETOP(Instr)] #define ON(stk,Ob) \ (wam[stk].base<=(term*)(Ob) && (term*)(Ob)= wam[LimitNo].margin) OVER(Culprit,Top,LimitNo,Action) #define WARNING(errname) {warnmes(errname); FAILURE()} #define ERREXIT(Mes) {warnmes(Mes); return 0;} #define LOCAL_ERR(Sym,Msg) local_error((Sym),(Msg),wam) #endif BinProlog3.45/src/c_defs.h100644 764 764 25137 5764563067 14533 0ustar javierjavier/* headers */ #define NOT_INTEGERS(Arg1,Arg2) \ (INTTAG|(INTTAG<>TAGBITS))),RegNo,IsBound); #define get0_1(RegNo,IsBound) \ { register long ires; \ if(feof(g.seefile)) \ { clearerr(g.seefile); \ /* warnmes("Read past EOF"); */ ires=0; \ } \ else \ ires=(long)getc(g.seefile); \ BOUT(INPUT_INT(ires),RegNo,IsBound); \ } #define put0_1() \ { register cell xval=X(1); \ if(!INTEGER(xval)) BWARFUN(xval,"integer expected in put/1");\ putc(OUTPUT_INT(xval),g.tellfile);\ } #define rel_op(OpName,OpCode) \ { register long ires; register cell xval; \ MUST_BE(OpName,OpCode); \ } #define int_only_op(OpName,RegNo,IsBound) \ { register long ires; register cell xval; \ INT_ONLY(OpName,RegNo,IsBound); \ } #define l_neg_3(RegNo,IsBound) \ { register long ires; register cell xval; \ IF_NOT_INTEGER_OP() BFAIL() \ xval=INPUT_INT(~OUTPUT_INT(X(2))); \ INT_COMP(|,X(1),xval,RegNo,IsBound); \ } #define compare0_3(RegNo,IsBound) \ { register long ires; register cell xval; \ ires=compare(&X(1),&X(2)); \ xval=g.compare_vals[ires+1]; \ BOUT(xval,RegNo,IsBound); \ } #define arg_3(RegNo,IsBound) \ { register long ires; register term xref; register cell xval; \ xval=X(1);\ if(!INTEGER(xval))\ BWARFUN(xval,"arg/3's 1st arg must be integer");\ ires=OUTPUT_INT(xval);\ xref=C2T(X(2));\ if(ATOMIC(T2C(xref)) ) BFAIL()\ ASSERT2(VAR(T2C(xref)),xref);\ xval=GETREF(xref);\ if(VAR(xval))\ BWARFUN(xval,"arg/3's 2nd arg must be nonvar");\ if(ires<=0 || ires>GETARITY(xval))\ BWARFUN(xval,"arg/3's 1st arg must be in 1..arity");\ xref+=ires;\ BOUT(xref,RegNo,IsBound);\ } #define setarg_3() \ if(!setarg(regs,wam,A)) BFAIL() #define change_arg_3() \ if(!change_arg(regs,wam,A)) BFAIL() #define def_3() \ if(!def(regs,wam,BBOARDTIME)) BFAIL() #define set_3() \ if(!set(regs,wam,BBOARDTIME)) BFAIL() #define rm_2() \ X(3)=g.empty; \ set_3(); #define val_3(RegNo,IsBound) \ { register term xref; register cell xval; \ ATOMIZE(X(1)); ATOMIZE(X(2)); \ xval=hget(X(1),X(2)); \ if(!xval || g.empty==xval) BFAIL() \ BOUT(xval,RegNo,IsBound); \ } #define lval_3(RegNo,IsBound) \ { register term xref; register cell xval; \ if(!(xval=lval(regs,wam,VARTIME))) BFAIL() \ BOUT(xval,RegNo,IsBound); \ } #define symcat_3(RegNo,IsBound) \ { register cell xval; \ xval=symcat(regs,wam); if(!xval) BFAIL() \ BOUT(xval,RegNo,IsBound); \ } #define bad_instruction(II,Op,Reg,F,N) #define BFAIL() {wam[ChoiceStk].top=A; return NULL;} #define BUNIFAIL(Term1,Term2) if(!unify((Term1),(Term2),wam,A)) BFAIL() #define SINC() S+=sizeof(cell) #define BOUT(Expr,RegNo,IsBound) \ if(IsBound) \ {BUNIFAIL((Expr),regs[RegNo])} \ else \ regs[RegNo]=(cell)(Expr); #define BWARFUN(Sym,Msg) {LOCAL_ERR(Sym,Msg); BFAIL()} extern term call_builtin(); extern struct specsyms g; extern term float_op(),float_fun(),float_fun2(),input_float(); extern no write_float(); #if 1 #define c_trace(Instr) \ fprintf(STD_err,"H=%ld P=%ld S=%ld CUT=%ld %s\n", \ H-(term)wam[HeapStk].base,\ (instr)P-(instr)wam[CodeStk].base,\ S?(term)S-(term)wam[HeapStk].base:0, \ (term *)cutB-wam[ChoiceStk].base,Instr); #else #define c_trace(Instr) #endif #if TRACE>2 #define c_chunk_variable(Name) \ static term Name(H,regs,P,cutB,A,wam) \ register term H,regs; register instr P; cell cutB; \ register term *A; register stack wam;\ { register cell S=0; \ /* fprintf(STD_err,"Fun=%d H=%d P=%d\n",Name,H,P); */ #define c_chunk_value(Offset,No) \ fprintf(STD_err,"H+O=%ld P+No=%ld A=%ld\n", \ (H+Offset)-(term)wam[HeapStk].base, \ (P+No)-(instr)wam[CodeStk].base,\ (term *)A-wam[ChoiceStk].base ); \ wam[ChoiceStk].top=A; \ wam[ChoiceStk].oldtop=(term *)(P+No); \ return H+Offset; \ } #else #define c_chunk_variable(Name) \ static term Name(H,regs,P,cutB,A,wam) \ register term H,regs; register instr P; cell cutB; \ register term *A; register stack wam;\ { register cell S=0; #define c_chunk_value(Offset,No) \ wam[ChoiceStk].top=A; \ wam[ChoiceStk].oldtop=(term *)(P+No); \ return H+Offset; \ } #endif /* instructions */ /* PURE TERM-CREATION (PUT) INSTRUCTION SUBSET */ #define put_structure(Offset,No,Reg) \ regs[Reg]=(cell)(H+Offset); \ H[Offset]=P[No]; #define put_constant(No,Reg) \ regs[Reg]=P[No]; #define put_integer(No,Reg) \ regs[Reg]=INPUT_INT(No); #define write_value(Offset,Reg) \ H[Offset]=regs[Reg]; #define write_variable(Offset,Reg) \ regs[Reg]=H[Offset]=(cell)(H+Offset); #define write_constant(Offset,No) \ H[Offset]=P[No]; #define write_integer(Offset,No) \ H[Offset]=INPUT_INT(No); #define push_variable() #define push_structure(Offset,No,VarO) \ H[VarO]=(cell)(H+Offset); \ H[Offset]=P[No]; #define move_reg(RegN,RegI) \ regs[RegN]=regs[RegI]; #define put_variable(Offset,RegN,RegI) \ regs[RegN]=regs[RegI]=H[Offset]=(cell)(H+Offset); #define write_void(Offset,Times) \ { register cell xval=Times; \ register term xref=H+Offset; \ while(xval--) \ xref[xval]=(cell)(xref+xval); \ } /* saves cut point on the heap */ #define push_cut(Offset) \ H[Offset]= CUT2INT(cutB); /* % END OF pure PUT... instructions */ /* what follow usually requires A and wam as extra registers */ #define TIDY_TRAIL() /* cuts to saved cut point */ #define get_cut() \ { register cell xval; register term xref; \ FDEREF(regs[1]); \ A=(term *) INT2CUT(xval); \ TIDY_TRAIL(); \ } /* cuts right now */ #define put_cut() \ A=(term *)cutB; \ TIDY_TRAIL(); #define load_constant(Reg,No) \ X(Reg)=P[No]; #define load_integer(Reg,No) \ X(Reg)=INPUT_INT(No); #define load_value(RegN,RegI) \ { register cell xval; register term xref; \ IN(RegN,regs[RegI]); \ } #define load_variable(Offset,RegN,RegI) \ { X(RegN)=regs[RegI]=H[Offset]=(cell)(H+Offset); \ } #define get_value(RegN,RegI) \ BUNIFAIL(regs[RegN],regs[RegI]); #define get_simple(Thing,RegNo) \ { register term xref; register cell xval; \ FDEREF(regs[RegNo]); \ if(VAR(xval)) \ { \ SETCELL(xref,(Thing)); \ SAFE_TRAIL_IF(xref); \ } \ else \ { \ if(xval!=(Thing)) BFAIL() \ } \ } #define get_constant(FunctorNo,RegNo) \ get_simple(P[FunctorNo],RegNo) #define get_integer(No,RegNo) \ get_simple(INPUT_INT(No),RegNo) #define COLLAPSE_FUN() H -= (H= 1 f(i,....,i,optional:o) b0((+)/3,arith(1),in_body). b0((-)/(3),arith(1),in_body). b0((*)/3,arith(1),in_body). b0(mod/3,arith(1),in_body). b0('//'/3,arith(1),in_body). b0((/)/3,arith(1),in_body). b0(random/1,arith(1),in_body). b0(get0/1,arith(1),in_body). b0(put/1,arith(0),in_body). b0(less/2,arith(0),in_body). b0(greater/2,arith(0),in_body). b0(less_eq/2,arith(0),in_body). b0(greater_eq/2,arith(0),in_body). b0(arith_eq/2,arith(0),in_body). b0(arith_dif/2,arith(0),in_body). b0((<<)/3,arith(1),in_body). b0((>>)/3,arith(1),in_body). b0((/\)/3,arith(1),in_body). b0((\/)/3,arith(1),in_body). b0((#)/3,arith(1),in_body). % xor b0((\)/3,arith(1),in_body). % complement b0(compare0/3,arith(1),in_body). b0(arg/3,arith(1),in_body). b0(setarg/3,arith(0),in_body). b0(change_arg/3,arith(0),in_body). b0(def/3,arith(0),in_body). b0(rm/2,arith(0),in_body). b0(set/3,arith(0),in_body). b0(val/3,arith(1),in_body). b0(lval/3,arith(1),in_body). b0(symcat/3,arith(1),in_body). % C-ification of frequently used builtins ends here % it is not clear that for the remaing ones it is a good idea to do it b0(dcg_connect/1,arith(1),in_body). b0(list2term/2,arith(1),in_body). b0(term2list/4,arith(1),in_body). b0(self_info/1,arith(1),in_body). b0(add_instr/4,arith(0),in_body). b0(lift_heap/2,arith(0),in_body). b0(det_append0/3,arith(1),in_body). b0(copy_term/3,arith(1),in_body). b0(bb_list0/3,arith(1),in_body). b0(older_file/2,arith(0),in_body). b0(seeing_telling/2,arith(1),in_body). % seeing=0,telling=1 b0(see_tell/2,arith(0),in_body). % see=0,tell=1 b0(seen_told/1,arith(0),in_body). % seen=0,told=1,flush=2 b0(seeing_telling_at/2,arith(1),in_body). % seeing_at=0,telling_at=1 b0(see_tell_at/2,arith(0),in_body). % see_at=0,tell_at=1 b0(string_op/3,arith(1),in_body). % sread=0, swrite=1 b0(op0/3,arith(0),in_body). b0(term_append/3,arith(1),in_body). b0(float_fun2/4,arith(1),in_body). b0(float_fun/3,arith(1),in_body). b0(input_float/4,arith(1),in_body). b0(write_float/1,arith(0),in_body). b0(strip_cont0/2,arith(1),in_body). % invisible dcgs (up to 256 streams) b0(dcg_def/1,arith(0),in_body). b0(dcg_val/1,arith(1),in_body). b0(dcg_tell/1,arith(0),in_body). b0(dcg_telling/1,arith(1),in_body). b0(iso_open_stream/3,arith(1),in_body). b0(iso_close_stream/2,arith(0),in_body). b0(iso_write_term/3,arith(0),in_body). b0(iso_read_term/3,arith(1),in_body). b0(iso_put_byte/2,arith(0),in_body). b0(iso_get_byte/2,arith(1),in_body). b0(iso_peek_byte/2,arith(1),in_body). b0(iso_eof/1,arith(0),in_body). b0(iso_lseek/4,arith(1),in_body). b0(bb_put/2,arith(0),in_body). b0(bb_get/4,arith(1),in_body). b0(bb_op/3,arith(1),in_body). b0(setref/2,arith(0),in_body). b0(unix_argc/1,arith(1),in_body). b0(unix_argv/2,arith(1),in_body). b0(unix_getenv/2,arith(1),in_body). b0(unix_access/2,arith(0),in_body). b0(unix_cd/1,arith(0),in_body). b0(unix_kill/2,arith(0),in_body). b0(quiet/1,arith(1),in_body). % $$ b0(create_engine/4,arith(1),in_body). b0(destroy_engine/1,arith(0),in_body). b0(load_engine/3,arith(0),in_body). b0(ask_engine/2,arith(1),in_body). b0(multitask_engines/1,arith(0),in_body). b0(suspend_engine/1,arith(0),in_body). b0(new_builtin/3,arith(1),in_body). % arity 3+1 by binarization b0(halt/1,arith(0),in_body). % arbitrary i-o pattern builtins b0(true/0,simple,in_head). % should be C-ified! b0(call/1,simple,in_head). % should be C-ified! b0(abort/0,simple,in_head). b0(restart/0,simple,in_head). b0(findall_store_heap/1,simple,in_head). b0(findall_load_heap/1,simple,in_head). b0(functor/3,simple,in_head). b0(name/2,simple,in_head). b0(shell/1,simple,in_head). b0(stat0/3,simple,in_head). b0(list_asm/3,simple,in_head). b0(bb_reset/0,simple,in_head). b0(profile/0,simple,in_head). b0(if0/3,simple,in_head). % things defined in Prolog which should look like builtins % lib.pl p0('!',0). p0('.',2). p0(compile,1). p0(include,1). p0(or,2). p0(if,3). p0(strip_cont,3). p0(termcat,3). p0(add_cont,3). p0(asm,0). p0(asm,1). p0('=..',2). p0('::-',2). p0(statistics,0). p0(interactive,1). p0(metacall,1). p0(metatrue,1). p0(expand_term,2). p0('=',2). p0('->',2). p0(';',2). p0(',',2). p0(repeat,0). p0((\+),1). p0((\=),2). p0(findall_workhorse,5). p0(findall,3). p0(findall,4). p0(findall_conj,3). p0(findall_conj,4). p0(findall_disj,3). p0(findall_disj,4). p0(all,3). p0(while,2). p0(skip_until,2). p0(skip_when,2). p0(find_while,4). p0(nth_answer,2). p0(take_at_most,2). p0(drop_at_least,2). p0(has_fuel,1). p0(find_at_most,4). p0(all_but_at_least,4). p0(for,3). p0(argn,3). p0(append,3). p0(member,2). p0(det_append,3). p0('.',3). p0('++',3). p0(length,2). p0(make_cmd,2). p0(numbervars,3). p0(gc_call,1). p0(ground,1). p0(atom,1). p0(float,1). p0(number,1). p0(compound,1). p0(appendN,2). p0(append_conj,3). p0(append_disj,3). p0(tab,1). p0(get,1). p0(is,2). p0(expr,2). p0(compare,3). p0(( == ),2). p0(( \== ),2). p0(( @< ),2). p0(( @> ),2). p0(( @=< ),2). p0(( @>= ),2). p0(( < ),2). p0(( > ),2). p0(( =< ),2). p0(( >= ),2). p0(( =:=),2). p0(( =\=),2). p0((+),2). p0((-),2). p0((\),2). p0(bb_def,3). p0(bb_set,3). p0(bb_val,3). p0(bb_rm,2). p0(bb_let,3). p0(bb_change_arg,3). p0(let,3). %p0(let,2). %p0(def,2). %p0(set,2). %p0(val,2). %p0(rm,1). p0(bb_def,2). p0(bb_set,2). p0(bb_val,2). p0(bb_rm,1). p0(bb_let,2). p0(dcg_phrase,3). p0(dcg_phrase,2). p0(( :=: ),2). % for lval p0((#),1). % for i.v. dcgs p0(pow,3). p0(log,3). p0(sqrt,2). p0(exp,2). p0(log,2). p0(sin,2). p0(cos,2). p0(tan,2). p0(asin,2). p0(atan,2). p0(acos,2). p0(integer,2). p0(float,2). p0(statistics,2). p0(predicate_property,2). p0(current_predicate,2). p0(current_predicate,1). p0(ctime,1). p0(help,1). p0(apropos,1). p0(apropos,2). p0(unix,1). p0(system,1). % extra.pl p0(meta_interpreter,1). p0(trace,1). p0((dynamic), 1). p0(asserta,1). p0(assertz,1). p0(assert,1). p0(retract,1). p0(retractall,1). p0(instance,2). p0(erase,1). p0(clause,2). p0(abolish,2). p0(debug,1). p0(consult,1). p0(reconsult,1). p0(listing,0). p0(listing,1). p0(listing,2). p0((=>),2). p0(assumei,1). p0(assumel,1). p0(assumed,1). p0(assumed_clause,2). p0(assumed_clause,3). p0((-:),2). p0(is_assumed,1). p0(is_dynamic,1). p0(bb,0). p0(bb,1). p0(bb_list,1). p0(bb_element,2). p0(sort,2). p0(keysort,2). p0(bagof,3). p0(setof,3). p0((^),2). p0(free_variables,4). p0(not,1). p0(term_chars,2). p0(vars_of,2). p0(user_error,2). p0(errmes,2). p0(quietmes,1). p0(main,0). p0(main,1). p0(toplevel,0). % read.pl p0(is_prolog,1). p0(get_code,1). p0(put_code,1). p0(nl,0). p0(read,1). p0(read_term,2). p0(top_read_term,2). p0(warn_singletons,3). p0(read_with_singletons,3). p0(read_clause,1). p0(read_tokens,2). p0(write,1). p0(print,1). p0(writeq,1). p0(portable_display,1). p0(display,1). p0(portray,1). p0(portray_clause,1). p0(pp_clause,1). p0(pp_term,1). p0(fast_write,1). p0(ttyin,1). p0(ttyout,1). p0(ttyput,1). p0(ttynl,0). p0(ttyprin,1). p0(ttyprint,1). p0(ttycwrite,1). p0(ttycwriteln,1). p0(see,1). p0(seeing,1). p0(seen,0). p0(tell,1). p0(telling,1). p0(told,0). p0(see_at,1). p0(seeing_at,1). p0(tell_at,1). p0(telling_at,1). p0(file_search_path,1). p0(file_extension_list,1). p0(file_library,2). p0(make_file_name,4). p0(find_file,2). p0(exists_file,1). p0(see_or_fail,2). p0(flush,0). p0(sread,2). p0(swrite,2). p0(bu0,3). p0(bu1,1). p0(current_op,3). p0(op,3). p0(is_builtin,1). p0(edit,2). p0(my_edit,1). p0(edit,0). p0(ed,0). p0(textedit,0). p0(emacs,0). p0(pico,0). p0(notepad,0). p0(vi,0). p0(co,0). p0(current_user_file,1). p0(ls,0). p0(dir,0). p0(make_appl,1). p0(make_executable_unix_appl,3). p0(make,0). p0(make,1). p0(make,2). p0(make,4). p0(make,5). p0(make0,4). p0(cmake,0). p0(cmake,1). p0(cmake,2). p0(kmake,0). p0(kcmake,0). p0(tmake,0). p0(tmake,1). p0(tmake,2). p0(ctrace,0). p0(boot,0). p0(add_true,2). p0(gc_read,1). p0(gc_read_clause,1). p0(do_body,1). p0(tr_body,2). p0(ith_clause,4). p0(char_in_cmd,2). p0(show_code0,2). p0(bu_ctr,2). p0(patch_it,4). p0(lwrite,1). p0(module_call,2). p0((module),1). p0((module),2). p0(is_module,1). p0(modules,1). p0(current_module,1). p0(module_predicate,3). p0(module_name,3). p0((public),1). p0(is_public,1). p0(gensym,2). p0(init_gensym,1). p0(spy_goal,1). p0(spy,1). p0(spying,1). p0(nospy,1). p0(otherwise,0). p0(false,0). p0(copy_term,2). p0(phrase,2). p0(phrase,3). p0(nth_member,3). p0(member_i,4). p0(saved,2). p0(stat_dict,2). p0(set_c_threshold,1). p0(set_c_threshold,2). p0(set_c_trace,1). p0(('C'),3). p0(halt,0). p0((:),2). % ---------- tools to generate builtins.pl -------------- % make_ps:- test_ps, make_ps0. test_ps:- findall(F/N,p0(F,N),Xs),length(Xs,L1),sort(Xs,Ys),length(Ys,L2), (L2=:=L1->true ; tell(user),write('redundant relation in p0/2'), nl,halt ). make_ps0:- p0(F,N), functor(P,F,N), pp_c(bu1(P)), fail. make_ps0:- nl. get_all_bs(Bs):- G0=(b0(F/N,X,Y),N1 is N+1,functor(B,F,N1)), G=b0(B,X,Y), findall(G,G0,Bs). filter_b(Class,All,N):- arg(1,Class,I), findall(I-B, ( member_i(OldB,All,0,_), rewrite_b(Class,OldB,B) ), Bs), length(Bs,N), ( member_i(I-B,Bs,0,I), pp_c(B), fail ; nl ). rewrite_b(n_inline(N), b0(B,simple, in_body), bu0(B,N,in_body) ). rewrite_b(n_arith(N), b0(B,arith(K),in_body), bu0(B,arith(N,K),in_body) ). rewrite_b(n_builtin(N),b0(B,simple, in_head), bu0(B,N,in_head) ). %pp_c(C):- % numbervars(C,0,_), % writeq(C),write('.'),nl,fail. %pp_c(_). pp_c(C):-portray_clause(C). make_builtins(Start,Info):- Info=[P1,P2,P3,P4], get_all_bs(All), P1=n_inline(A1),filter_b(P1,All,N1), P2=n_arith(A2),filter_b(P2,All,N2), P3=n_builtin(A3),filter_b(P3,All,N3), P4=n_nop(A4), A1=Start, A2 is A1+N1, A3 is A2+N2, A4 is A3+N3, pp_ctr(P1), pp_ctr(P2), pp_ctr(P3), pp_ctr(P4), nl. pp_ctr(P):-P=..[F,X],NewP=bu_ctr(F,X),pp_c(NewP). make_pl(N,Info):- BU='builtins.pl', write(making(BU)),nl, tell(BU), make_builtins(N,Info), make_ps, told. go(Start):- make_pl(Start,Info), make_h(Info). make_h(Info):- DEF='defs.h',PROF='prof.h', Info=[n_inline(First),n_arith(Arith),n_builtin(Bu),n_nop(Nop)], Last is Nop-1, write([inline=First,arith=Arith,in_body=Bu,last=Last]),nl, write(making(DEF)),nl, tell(DEF), ( make_defs(First,Arith,Bu,Last) ; tell(user),write(failing_on(DEF)),nl,tell(DEF) ), !, make_stats, !, told, write(making(PROF)),nl, tell(PROF), ( make_names(Info) ; tell(user),write(failing_on(PROF)),nl,tell(DEF) ), !, told. make_defs(First,Arith,Bu,Last0):- number_bu(First,Last,N-X), write('#define '),write(X),write(' '),write(N),nl, N=:=Last, !, Last=:=Last0, nl,write('#define INLINE '),write(First),nl, write('#define ARITH '),write(Arith),nl, write('#define BUILTIN '),write(Bu),nl, write('#define LAST_BUILTIN '),write(Last),nl. make_stats:- nl, stat_dict(Name,Val),name(Name,L), to_upper(L,L1), lappend("STAT_",L1,L2), name(SName,L2), write('#define '),write(SName),write(' '),write(Val),nl, fail. make_stats:-nl. make_names(Info):- Info=[n_inline(Max)|_], write('#if TRACE>0 || PROF '),nl, write('char *bu_name[]={'),nl, number_bu(Max,Last,N-X), write('"'),write(X),write('",'),nl, N=:=Last, !, write('"LAST_BUILTIN"};'),nl,write('#endif'),nl,nl. number_bu(First,Last,N-X):- bagof(B,bname(B),Bs), length(Bs,L),!,Last is First+L-1, member_i(X,Bs,First,N). to_upper1(X,Y):-[A]="a",[Z]="z",X>=A,X=>,"RSHIFT"). b_idiom(/\,"L_AND"). b_idiom(\/,"L_OR"). b_idiom(#,"L_XOR"). b_idiom(\,"L_NEG"). to_bname(F,U):-b_idiom(F,U),!. to_bname(F,U):-name(F,L),to_upper(L,U). bname(Name):- [X]="_", b0(F/N,_,_),name(N,Arity), to_bname(F,U), lappend(U,[X|Arity],List), name(Name,List). lappend([],Ys,Ys). lappend([A|Xs],Ys,[A|Zs]):- lappend(Xs,Ys,Zs). BinProlog3.45/src/top.pl100644 764 764 2315 5764563067 14247 0ustar javierjavier% TOPLEVEL main(X):-binpro_start(X). binpro_start(X):- call_ifdef(init_io,true), exec_run_time_commands, call_ifdef(main,toplevel), X='$end'. toplevel:- % interactive(no), repeat, topstep('?- '), !. topstep(Prompt):- ttyprin(Prompt),flush, ttyin(top_read_term(Body,Vs)), topinterp(Body,Vs). topinterp(Goal,_):-end_of_file==Goal,!. topinterp(Goal,Vs):- report_answers(Vs,Goal), fail. topcall(G):- % savetop(G), metacall(G),nothing. savetop(G):-lval(top,goal,G). nothing. report_answers([],Goal):-topcall(Goal),!, ttyprint(yes). report_answers([V|Vs],Goal):- topcall(Goal), report_one_var(V),report_top_vars(Vs), another_sol(Ok), ( Ok=no->!,ttyprint(yes) ; fail ). report_answers(_,_):- ttyprint(no). report_top_vars(Eqs):- member(Eq,Eqs), ttyprint(','),report_one_var(Eq), fail. report_top_vars(_). report_one_var(V=E):- ttyprin(V),ttyprin(=),ttyout(writeq(E)). another_sol(Ok):- is_interactive,!, ttyin(get_code(A)),user_action(A,Ok),ttynl. another_sol(yes):-ttyprint(';'),ttynl. user_action(10,no):-!. user_action(59,yes):-!,ttyin(get_code(10)). user_action(_,Ok):-ttyprin(' ; for more, otherwise '), ttyin(get_code(10)),ttyin(get_code(U)),user_action(U,Ok). BinProlog3.45/src/bin.pl100644 764 764 24573 5764563067 14247 0ustar javierjavier % BINARY CLAUSE COMPILER % EXPORTED compile_binary(Mode,BinClause):-cc_bincomp(Mode,BinClause). compile_builtins(Mode):-cc_builtins(Mode). % INTERNALS cc_must_have_builtins(wam). cc_must_have_builtins(c):-c_chunk_file('wam.h'). cc_builtins(Mode):- cc_must_have_builtins(Mode), bin_builtin(B), cc_bincomp(Mode,B), fail. cc_builtins(_). cc_bincomp(bin,C):-!,portray_clause(C),fail. cc_bincomp(asm,C):-write('BINARY:'),nl,portray_clause(C),nl,fail. cc_bincomp(Mode,C):- newpred(Mode,C), cc_compile_clause(C,CodeChunks), gg_emit(Mode,CodeChunks), !. cc_bincomp(Mode,C):- errmes(failing_to_compile_clause(Mode),C). bin_builtin(('$bin_cut'(X,Cont):-true(Cont))):-cutp(X). bin_builtin(C):- bu(B,_,Where), bu_body(Where,B,C). bu_body(in_head,B,(B:-true(Cont))):- functor(B,_,N),arg(N,B,Cont). bu_body(in_body,B,(B:-B)). cc_compile_clause(C,[Head,PCode,Tail]):- cc_clause(C,PCode,Head,Tail). firstarg(H,FN):-arg(1,H,A),classif_first(A,FN). classif_first(A,FN):-atomic(A),!,FN=A/0. classif_first(A,FN):-var(A),!,FN='_'/0. classif_first(T,F/N):-functor(T,F,N). cc_clause(C,OCode, [ii(clause,?,F1,N1),ii(firstarg,?,GM,LastN)], [ii(execute,?,F2,N2)]):- add_true(C,(H:-B)), firstarg(H,GM), cc_h_b(H,F1/N1,B,F2/N2,'get','put',RCode), max(N1,N2,MaxN),FirstN is MaxN+1, vars(RCode,OCode), functor(Dict,dict,MaxN), fill_info(OCode,Dict), collapse_args(Dict,1,MaxN), allocate_regs(OCode,FirstN/FirstN-[],FirstN/LastN-_). cc_h_b(H,F1/N1,B,F2/N2,HM,BM,RCode):- cc_h(H,F1/N1,HM/LV-RCode,HM/V2-Rest), cc_b(B,F2/N2,BM/V2-Rest,BM/LV-[]), !. begin_chunk--> emit(ii(c_chunk,_,len(L),V)), % start C-ified stream hidden_var(L+V). end_chunk--> emit(ii(c_chunk,_,len(L),V)), % end C-ified stream hidden_var(L+V). emit(E,ModeLength-[E|Es],ModeLength-Es). get_mode(Mode,S,S):-S=Mode/_Length-_Es. set_mode(Mode,_/Length-Es,Mode/Length-Es). hidden_var(Length,S,S):-S=_Mode/Length-_Es. cc_h(B,FN)--> % begin_chunk, % $$$ HERE WHEN defined NOCOMPRESS cc_h0(B,FN). cc_b(Cont,FN)--> cc_b0(Cont,FN) ,end_chunk % $$$ . cc_h0(B,F/N)-->{ bu(B,No,in_head) },!, {functor(B,F,N),arg(N,B,Cont)}, emit(ii(builtin,?,No,Cont)) ,begin_chunk % $$$ HERE WHEN undef NOCOMPRESS . cc_h0(T,F/N)--> {functor(T,F,N),N>0},!,{functor(CT,F,N)}, emit_head_top_term(N,T,CT). cc_h0(T,_)-->{errmes(unexpected_head_atom,T)}. emit_head_top_term(N,T,CT) --> emit_top_args(1,1,T,CT), cc_top_arg(1,1,CT,T), begin_chunk, % $$$ HERE WHEN undef NOCOMPRES emit_top_args(2,N,T,CT), cc_top_arg(2,N,CT,T). cc_b0(Cont,FN)-->{var(Cont)},!,cc_b0(true(Cont),FN). cc_b0(true,true/0)-->!. cc_b0('$bin_cut'(_cutp,Cont),FN)-->!, emit(ii('put',_,cutarg(1),_cutp)), % 1 is unrelated to temp regs cc_b0(Cont,FN). cc_b0(=(A,B,Cont),FN)-->!, cc_eq(A,B), cc_b0(Cont,FN). cc_b0(B,FN)-->{ bu(B,No,in_body) },!, cc_builtin(No,B,FN). cc_b0(T,F/N)--> {functor(T,F,N),N>0},!,{functor(CT,F,N)}, emit_body_top_term(N,T,CT). cc_b0(T,_)-->{errmes(unexpected_body_atom,T)}. emit_body_top_term(N,T,CT) --> cc_top_arg(1,N,CT,T),!, emit_top_args(1,N,T,CT). cc_eq(A,B)-->{var(B),nonvar(A)},!,cc_eq1(B,A). cc_eq(A,B)-->cc_eq1(A,B). cc_eq1(A,B)--> cc_top_t(V1=A), emit(ii('put',_,temp(0),V1)), emit(ii('get',_,temp(0),V2)), set_mode(get), cc_top_t(V2=B), set_mode(put). out_reg(0,_,0). out_reg(1,Res,Res). cc_builtin(arith(No,NbOutArgs),OpArgsCont,FN)-->!, { functor(OpArgsCont,Op,N1),arg(N1,OpArgsCont,Cont), N is N1-1, arg(N,OpArgsCont,X), out_reg(NbOutArgs,X,Res), I is N-NbOutArgs,functor(NewOpArgs,Op,I) % NbOutArgs = 0,1 }, handle_constant_res(NbOutArgs,VarRes=Res), emit_top_bargs(1,I,OpArgsCont,NewOpArgs), emit(ii(arith,_Type,No,VarRes)), cc_b0(Cont,FN). cc_builtin(No,BodyAndCont,FN)--> { functor(BodyAndCont,_,N),N1 is N-1, arg(N,BodyAndCont,Cont), arg(1,BodyAndCont,Arg) }, cc_b_args(N1,Arg), % NOGOOD!!! {temparg(0,_Temp)}, emit(ii(inline,_,No,_Temp)), % void var!!! implicitly temp(0) cc_b0(Cont,FN). handle_constant_res(0,_)-->!. handle_constant_res(1,X=C)-->{var(C)},!,{X=C}. handle_constant_res(1,X=C)-->{atomic(C)},!, emit(ii('put',_,temp(0),C)), emit(ii('get',_,temp(0),X)). handle_constant_res(1,X=C)-->!, cc_top_t(X=C). % handle_constant_res(1,_=C)-->{errmes(must_be_atomic_or_var,C)}. classif_load(X,A,_)-->{var(A)},!,{X=A}. classif_load(X,A,constant)-->{atomic(A)},!,{X=A}. classif_load(X,A,_)-->cc_top_t(X=A). cc_b_args(0,_)-->[]. cc_b_args(1,Arg)--> cc_top_t(V=Arg), % usually in write mode emit(ii('put',_,temp(0),V)). emit_top_bargs(I,N,_,_) --> {I>N},!. emit_top_bargs(I,N,T,CT) --> {I= {I= {I>N},!. emit_top_args(I,N,T,CT) --> {I= {I>N},!. cc_top_arg(I,N,CT,T) --> {I= {var(T)},!,{X=T}. cc_top_t(X=T) --> {atomic(T)},!,{X=T}. cc_top_t(X=T) --> {functor(T,F,N)},{N>0},!, {functor(CT,F,N)}, emit_top_structure(X,F,N,T,CT), cc_args(N,CT,T). % ## sould NOT be cc_top_arg !!! emit_top_structure(X,F,N,T,CT) --> get_mode(Op), emit(ii(Op,structure,F/N,X)), emit_args(N,T,CT). % calls cc_t cc_arg(I,N,_,_) --> {I>N},!. cc_arg(I,N,CT,T) --> {I= {var(T)},!,{X=T}. cc_t(X=T) --> {atomic(T)},!,{X=T}. cc_t(X=T) --> {functor(T,F,N)},{N>0},!, {functor(CT,F,N)}, emit_structure(X,F,N,T,CT), cc_args(N,CT,T). cc_args(N,CT,T)-->{N>1},!, {N1 is N-1}, {arg(N,T,A),arg(N,CT,X)}, cc_t(X=A), cc_arg(1,N1,CT,T). cc_args(N,CT,T)--> cc_arg(1,N,CT,T). emit_structure(X,F,N,T,CT) --> get_mode(Op), {deep_structure_op(Op,NewOp)}, emit(ii(NewOp,structure,F/N,X)), % ## 'push' if Op='put' emit_args(N,T,CT). emit_args(N,T,CT) --> emit_args0(1,N,T,CT). emit_args0(I,N,_,_) --> {I>N},!. emit_args0(I,N,T,CT) --> {I=Y,!,Z=X. max(_,Y,Y). add_true((H:-B),(H:-B)):-!. add_true(H,(H:-true)). % VARIABLE OCCURRENCE CLASSIFIER % vars(T,R) :- % each (selected) variable V of T gives in R a term % % var(NewVar,OccNo/MaxOccurrences) % % and T is subject to (an ugly) side effect as selected % variables get unified to '$OCC'(NewVar,MaxOccurrences=MaxOccurrences) % USES setarg/3 !!! vars(T,R):- find_occurrences(T,R,Vars,true),Vars. find_occurrences([],[])-->[]. find_occurrences([ii(Op,Type,Val,Var)|L],[ii(Op,Type,Val,Occ)|R])--> occurrence(Var,Occ), find_occurrences(L,R). occurrence(A,A,S,S):-atomic(A),!. occurrence(V,var(NewV,XM1),S1,S2):-var(V),!,V='$OCC'(NewV,XM), newvar(1,_Max,XM,XM1,S1,S2). occurrence('$OCC'(OldV,XM),var(OldV,XM1),S,S):-!, oldvar(XM,XM1). occurrence(Var,Occ,S,S):-errmes(bad_occurrence,at(var=Var,occ=Occ)). oldvar(XM,K1/Max):- XM=(K=Max), K1 is K+1, setarg(1,XM,K1). newvar(X,Max,E,NewE,(E,Es),Es):- E=(X=Max), NewE=(X/Max). % ARGUMENT REGISTER OPTIMIZER % fills Dict and and marks still free slots in variables % with information on liftime of arguments fill_info(Is,Dict):-fill_all(Is,Dict,0,_). tpoint(T2,T1,T2):-T2 is T1+1. % gets a time-point fill_all([],_)-->[]. fill_all([I|Is],Dict)--> {fill_var_type(I)}, fill_one(I,Dict), fill_all(Is,Dict). % fills in liftime information using occurrence numbers fill_var_type(ii(Op,Type,_,var(_,Occ))):-var(Type),!, get_var_type(Occ,Op,Type). fill_var_type(_). get_var_type(1/1,unify,void):-!. get_var_type(1/1,write,void):-!. get_var_type(1/_,_,variable):-!. get_var_type(K/Max,_,value):-K=!,tpoint(T), {mark_arg(Op,T,An,var(_-T/T,1/1),Dict)}. fill_one(ii(_,constant,_,_),_)-->!,tpoint(_). fill_one(ii(Op,_,arg(An),Xn),Dict)-->!,tpoint(T), {mark_arg(Op,T,An,Xn,Dict)}, {mark_var(T,Xn)}. fill_one(ii(_,_,_,var(Id,Occ)),_)-->!,tpoint(T), {mark_var(T,var(Id,Occ))}. % marks the argument An of Dict with liftime information mark_arg('get',From,An,Xn,Dict):-arg(An,Dict,Xn*_-From/_). mark_arg('put',To ,An,Xn,Dict):-arg(An,Dict,_*Xn-_/To). % marks a variable with liftime information mark_var(T,var(_-T/T,1/1)):-!. mark_var(T,var(_-T/_,1/Max)):-1Max,!. collapse_args(Dict,I,Max):-I=!. allocate_regs([I|Is])--> allocate1(I), allocate_regs(Is). allocate1(ii(_,_,_,var(Reg-_,KMax)))-->allocate_reg(Reg,KMax),!. allocate1(_)-->[]. allocate_reg(Reg,1/1)-->{var(Reg)},!, get_reg(Reg), free_reg(Reg). allocate_reg(Reg,1/Max)-->{var(Reg),1{1=Min,!. free_reg(_,Rs,Rs). get_reg(Reg,Min/N-[Reg|Regs],Min/N-Regs):-!. get_reg(N,Min/N-Regs,Min/N1-Regs):-N1 is N+1. BinProlog3.45/src/co.pl100644 764 764 57665 5764563067 14110 0ustar javierjavier% BinProlog x.xx Copyright (C) 1992 Paul Tarau. All rights reserved. % COMPILER: dcgs --> prolog --> binary progs --> code %----------PREPROCESSOR TO BINARY LOGIC PROGRAMS------------- % Transforms definite metaprograms to binary meta-programs % definite meta clause -> definite clause+ some replacements mdef_to_def((H:-B),(NewH:-NewB)):-hide_atom(H,NewH),repl_body(B,NewB). mdef_to_def((:-B),(:-NewB)):-repl_body(B,NewB),!, NewB, % called here and not propagated to the next step fail. % replaces metavars and some builtins in clause bodies repl_body(MetaVar,call(MetaVar)):-var(MetaVar),!. repl_body(M,ExpM):-repl_macro(M,ExpM),!. repl_body(A,NewA):-split_op(A,L),!,strip_nil(L,NewA). repl_body(M,ExpM):-is_prolog(binprolog),peval_io(M,ExpM),!. repl_body(A,NewA):-spying(A),!,NewA=spy_goal(A),ttyprint(spying_on(A)). repl_body(A,MA):-hide_atom(A,MA). is_prolog(X):-bb_val(is,prolog,Other),!,X=Other. is_prolog(X):-default_prolog(X). cutp(X):-name(X,"$cut"). repl_macro('!','$bin_cut'(X)):-cutp(X). repl_macro(var(X),Known):-nonvar(X),repl_known(var(X),Known). repl_macro(nonvar(X),Known):-nonvar(X),repl_known(nonvar(X),Known). repl_macro(atomic(X),Known):-nonvar(X),repl_known(atomic(X),Known). repl_macro(float(X),Known):-nonvar(X),repl_known(float(X),Known). repl_macro(atomic(X),Known):-nonvar(X),repl_known(atomic(X),Known). repl_macro((A,B),NewAB):-repl_conj(A,B,NewAB). repl_macro((A;B),NewAB):-repl_disj(A,B,NewAB). repl_macro((A->B),(NewA->NewB)):- repl_body(A,NewA), repl_body(B,NewB). repl_macro(compare(R,A,B),compare0(A,B,R)). repl_macro(A==B,compare0(A,B,=)). repl_macro(A@B,compare0(A,B,>)). repl_macro(':=:'(K,X),lval(K1,K2,X)):-repl_lval(K,K1,K2). repl_macro('#'(X),dcg_connect(X)). repl_macro(':'(M,X),module_call(M,X)). repl_macro(findall(X,G,Xs),findall(X,MG,Xs)):-repl_body(G,MG). repl_macro(bagof(X,G,Xs),bagof(X,MG,Xs)):-repl_body(G,MG). repl_macro(setof(X,G,Xs),setof(X,MG,Xs)):-repl_body(G,MG). repl_macro(all(X,G,Xs),setof(X,MG,Xs)):-repl_body(G,MG). repl_macro(X^G,X^MG):-repl_body(G,MG). repl_macro(call(G),MG):-repl_body(G,MG). repl_macro(\+(G),\+(MG)):-repl_body(G,MG). repl_macro(not(G),not(MG)):-repl_body(G,MG). % repl_macro(metacall(G),MG):-repl_body(G,MG). % do not do this !!! repl_conj(A,B,NewAB):-nonvar(A),split_op(A,NewA),!, repl_body(B,NewB), app_body(NewA,NewB,NewAB). repl_conj(A,B,(NewA,NewB)):- repl_body(A,NewA), repl_body(B,NewB). repl_disj(If,C,if(NewA,NewB,NewC)):-nonvar(If),If=(A->B),!, repl_body(A,NewA), repl_body(B,NewB), repl_body(C,NewC). repl_disj(A,B,or(NewA,NewB)):- repl_body(A,NewA), repl_body(B,NewB). repl_lval('#'(K1,K2),K1,K2):-!. repl_lval(K,K,K). repl_known(X,true):-X,!. repl_known(_,fail). split_op(X is B,R):-split_is_rel(X,B,R). split_op(A < B,R):-split_rel(less,A,B,R). split_op(A > B,R):-split_rel(greater,A,B,R). split_op(A =< B,R):-split_rel(less_eq,A,B,R). split_op(A >= B,R):-split_rel(greater_eq,A,B,R). split_op(A =:= B,R):-split_rel(arith_eq,A,B,R). split_op(A =\= B,R):-split_rel(arith_dif,A,B,R). % split_op(tab(Expr),R):-split_is(X,Expr,R,[tab(Y)]). % faster static tab split_is_rel(X,B,[expr(B,X)]):-var(B),!. split_is_rel(X,B,[+(B,0,X)]):-atomic(B),!. split_is_rel(X,B,[+(B,0,X)]):-float(B),!. split_is_rel(X,B,[+(R,0,X)]):-is_prolog(binprolog),ground(B),!,expr(B,R). split_is_rel(X,B,R):-split_is(X,B,R,[]). app_body([],Bs,Bs):-!. app_body([A|As],Bs,(A,Cs)):-app_body(As,Bs,Cs). strip_nil([A],A):-!. strip_nil([A|As],(A,Bs)):-strip_nil(As,Bs). split_rel(Op,A,B,Res):-split_rel_1(Op,A,B,Res,[]). split_rel_1(Op,A,B)--> split_is(X,A), split_is(Y,B), {OpXY=..[Op,X,Y]}, emit_is(OpXY). %split_is(X,A)-->{var(A)},!,emit_is(expr(A,X)). % very slow but flexible is/2 split_is(X,A)-->{var(A)},!,{X=A}. % fast but static is/2 split_is(X,A)-->{atomic(A)},!,{X=A}. split_is(X,A)-->{float(A)},!,{X=A}. split_is(R,OpAB)--> {OpAB=..[Op,A,B]},!, split_is(VA,A), split_is(VB,B), {OpArgs=..[Op,VA,VB,R]}, emit_is(OpArgs). split_is(R,OpA)--> {OpA=..[Op,A]}, split_is(VA,A), {OpArgs=..[Op,VA,R]}, emit_is(OpArgs). emit_is(X,[X|Xs],Xs). % converts a definite clause to a binary metaclause % where each metavariable Cont represents a "continuation" % and a goal G is represented by a clause :- G. def_to_mbin((H:-B),M):-!,def_to_mbin0(H,B,M). def_to_mbin(H,M):-def_to_mbin0(H,true,M). def_to_mbin0('@@'(H,Upper),B,(HC:-BC)) :- nonvar(H),!, termcat(H,ContH,HC), add_upper_cont(B,Upper,ContH,BC). def_to_mbin0(H,B,(HC:-BC)) :- termcat(H,Cont,HC), add_cont(B,Cont,BC). add_upper_cont(B,Upper,ContH,BC):-nonvar(Upper),!, add_cont(Upper,ContU,ContH), add_cont(B,ContU,BC). add_upper_cont(B,Upper,ContH,BC):- add_cont((strip_cont(ContH,Upper,ContU),B),ContU,BC). % adds a continuation to a term add_cont((true,Gs),C,GC):-!,add_cont(Gs,C,GC). add_cont((fail,_),C,fail(C)):-!. add_cont((G,Gs1),C,GC):-!, add_cont(Gs1,C,Gs2), term_append(G,cont(Gs2),GC). add_cont(G,C,GC):-term_append(G,cont(C),GC). termcat(T,C,TC):-term_append(T,cont(C),TC). % simple WAM-code lister show_code(To,IIs):- findall(I,show_code0(IIs,I),Is), length(Is,Len), write('BRUT WAM-ASSEMBLER:'(mode=To,length=Len)),nl, nth_member(I,Is,K), show_instr(K,I), fail. show_code(To,IIs):- nl,write('POST TERM-COMPRESSION CODE:'(mode=To)),nl, mc_all_instr(IIs,Es), nth_member(I,Es,K), show_instr(K,I), fail. show_code(To,IIs):- nl,write('FINAL CODE:'(mode=To)),nl, gen_code(To,IIs), fail. show_code(_,_):- nl. show_code0(IIs,I):- member(Is,IIs), member(I,Is), show_or_skip(I). show_or_skip(ii(get,variable,arg(I),var(I-_,_))):-!,fail. show_or_skip(ii(put,value,arg(I),var(I-_,_))):-!,fail. show_or_skip(_). show_instr(K,I):- I=ii(Op,T,X,Y), write([K]),write(' '),write(Op),write('_'), write(T),write(' '), show_fun(X), show_info(Y), nl. show_fun(put):-!. show_fun(get):-!. show_fun(T):-write(T). show_info(Var):-Var=var(I-_,_),!, write(' '),write(var(I)), put_code(9),put_code(9),put_code(9),write('% '),write(Var). show_info(Var):-write(' '),write(Var). show_steps(asm,M,D):- nl,M\==D,write('EXPANDED:'),nl,portray_clause(M),nl,fail ; write('DEFINITE:'),nl,portray_clause(D),nl,fail. show_steps(_,_,_). % ------------------------------------------------------------------ % BYTE CODE GENERATOR bind_c_chunk_length(wam,Es,Es):-!. bind_c_chunk_length(mem,Es,Es):-!. bind_c_chunk_length(_,Es,NewEs):-bind_length(Es,_,_,0,NewEs,[]). bind_length([],_,_,_)-->[]. bind_length([X|Xs],L1,L2,N)-->make_anti_call(X,Xs,L1,L2,N). % nonvar(L1) is true inside a chunk make_anti_call(ii(Op,_,Ai),Xs,L1,L2,N)-->{Op=c_chunk_variable},!, [ii(Op,len(L2),Ai)], {L1=N}, bind_length(Xs,L1,L2,N). make_anti_call(ii(Op,_,Ai),Xs,L1,L2,N)-->{Op=c_chunk_value},!, [ii(Op,len(L2),Ai)], {L2 is N-L1}, bind_length(Xs,_,_,0). make_anti_call(II,Xs,L1,L2,N)--> { nonvar(L1), % inside a chunk II=ii(Name,An,Ai), antigenic(Name,An,Ai) },!, {L2 is N-L1}, [ii(c_chunk_value,len(L2),0)], [II], % {expel(II)}, bind_length([ii(c_chunk_variable,_,0)|Xs],_,_,0). make_anti_call(II,Xs,L1,L2,N1)--> {N2 is N1+1}, [II], bind_length(Xs,L1,L2,N2). /* expel(II):- currpred(Pred/Arity-ClauseNo/_Offs), ttyprint(expelling(pred(Pred,Arity),clause(ClauseNo),II)), % $$$ fail. expel(_). */ gen_code(To,IIs):- mc_all_instr(IIs,Es), bind_c_chunk_length(To,Es,NewEs), member(Enc,NewEs), write_instr(Enc,To,Ok), Ok=no, !, fail. gen_code(_,_). maxarity(256). % #if defined TEMPS_AT_END % temparg(Arg,Temp):-maxarity(Max),Temp is (Max-1)-Arg. temparg(Arg,Arg). gen_instr(ii(Op,Type,Arg,Var),Enc):-beautify(Arg,Op,Type,Var,Enc),!. write_instr(ii(II,X,Y),To,Ok):-encode(II,II,X,Y,To),!,Ok=yes. write_instr(_,_,no). mc_all_instr(IIs,Es):-findall(Enc,mc_one_instr(IIs,Enc),Es). mc_one_instr(IIs,Enc):- member(Is,IIs), mc_peephole(Is,I), instr_cat(I,Enc). instr_cat(ii(O,T,X,Y),ii(II,X,Y)):-symcat(O,T,II). % eliminates redundancies and beautifies the code beautify(arg(X),Op,Type,V,Enc):-!,encode_arg(X,Op,Type,V,Enc). beautify(temp(X),Op,Type,V,Enc):-!,temparg(X,Temp), encode_arg(Temp,Op,Type,V,Enc). beautify(cutarg(X),Op,Type,V,Enc):-!,encode_arg(X,Op,Type,V,Enc). beautify(Val,Op,Type,var(Xn-_,_),Enc):-!,encode2(Op,Type,Val,Xn,Enc). beautify(put,write,constant,X,Enc):-cutp(X),!, encode2(push,cut,?,?,Enc). beautify(Y,Op,X,Z,Enc):-encode2(Op,X,Y,Z,Enc). encode_arg(I,get,variable,var(I-_,_),empty_op):-!. encode_arg(I,put,value,var(I-_,_),empty_op):-!. encode_arg(An,Op,Type,var(Xn-_,_),Enc):-!,encode2(Op,Type,Xn,An,Enc). encode_arg(1,Op,constant,X,Enc):-cutp(X),!,encode2(Op,cut,?,?,Enc). encode_arg(An,Op,constant,S,Enc):-encode2(Op,constant,S,An,Enc). encode2(Op,Type,X,Y,ii(Op,Type,X,Y)). % compacts voids, terms and useless c_chunks mc_peephole(Xs,X):-mc_top(Xs,X). mc_input(O,Is,Js):-mc_input0(O,Is,Js). % ,ttyprint(O). mc_input0(Y,[X|Xs],Ys):- gen_instr(X,I), mc_empty(I,Y,Xs,Ys). mc_empty(empty_op,Y,Xs,Ys):-!,mc_input0(Y,Xs,Ys). mc_empty(I,I,Xs,Xs). mc_top(Ys,X):-mc_input(X0,Ys,Xs),mc0(Xs,X0,X). mc0(Xs,X0,X):-op_type(X0,Op,Type),mc1(Op,Type,Xs,X0,X). mc1(push,variable,Xs,X0,R):-mc_push(Xs,Ys,X0,Y),!,mc5(Ys,Y,R). mc1(c_chunk,variable,Xs,X0,R):-!,mc_chunk(Xs,Ys,X0,Y),mc5(Ys,Y,R). mc1(_,void,Xs,X0,R):-!, mc_sel(Xs,Ys,1,N), mc3(Ys,X0,N,R). mc1(_,_,Xs,X0,R):- mc5(Xs,X0,R). mc_push(Zs,Xs,X0,Y):-mc_input(End,Zs,Xs), op_type(End,push,structure), mc_transform_push(X0,End,R),!,Y=R. mc_push(Xs,Xs,X0,X0). mc_chunk(Zs,Xs,_,After):- mc_input(End,Zs,Ys), op_type(End,c_chunk,value),!, mc_input(After,Ys,Xs). mc_chunk(Xs,Xs,X0,X0). mc_sel(Zs,Ys,N1,N3):- mc_input(Y,Zs,Xs), op_type(Y,_,void),!, N2 is N1+1, mc_sel(Xs,Ys,N2,N3). mc_sel(Xs,Xs,N,N). mc3(_,X0,N,R):-mc4(N,X0,R). mc3(Zs,_,_,R):-mc_input(Y,Zs,Ys),mc0(Ys,Y,R). mc4(N,X0,R):-mc_transform_void(N,X0,R),!. mc4(1,X0,X0). mc5(_,R,R). mc5(Zs,_,R):-mc_input(Y,Zs,Ys),mc0(Ys,Y,R). op_type(ii(Op,T,_,_),X,Y):-!,X=Op,Y=T. op_type(Bad,_,_):-errmes(expected(ii/4),Bad). mc_transform_void(1,ii(unify,void,X,N),ii(unify,variable,X,N)):-!. mc_transform_void(N,ii(Op,void,X,_),ii(Op,void,X,N)). mc_transform_push( ii(push,variable,_,X),ii(push,structure,FN,X), ii(push,constant,FN,X)). encode(unify_variable,II,get,Ai,To):- wcode(To,II,1,Ai,?,0). encode(write_variable,II,put,Ai,To):- wcode(To,II,2,Ai,?,0). encode(unify_value,II,get,Ai,To):- wcode(To,II,3,Ai,?,0). encode(write_value,II,put,Ai,To):- wcode(To,II,4,Ai,?,0). encode(unify_constant,II,get,Const,To):- wcode(To,II,5,0,Const,0). encode(write_constant,II,put,Const,To):- wcode(To,II,6,0,Const,0). encode(push_constant,II,F/N,Ai,To):- wcode(To,II,6,Ai,F,N). encode(get_constant,II,Const,Ai,To):- wcode(To,II,7,Ai,Const,0). encode(get_structure,II,Func/Arity,Ai,To):- wcode(To,II,8,Ai,Func,Arity). encode(put_constant,II,Const,Ai,To):- wcode(To,II,9,Ai,Const,0). encode(put_structure,II,Func/Arity,Ai,To):- wcode(To,II,10,Ai,Func,Arity). encode(get_variable,II,Xn,Ai,To):- wcode(To,II,11,Xn,?,Ai). %move encode(put_value,II,Xn,Ai,To):- wcode(To,II,11,Ai,?,Xn). %move encode(put_variable,II,Xn,Ai,To):- wcode(To,II,12,Xn,?,Ai). encode(get_value,II,Xn,Ai,To):- wcode(To,II,13,Xn,?,Ai). encode(push_cut,II,?,?,To):- wcode(To,II,14,0,?,0). encode(put_cut,II,?,?,To):- wcode(To,II,15,0,?,0). encode(get_cut,II,?,?,To):- wcode(To,II,16,0,?,0). encode('execute_?',II,Pred,Arity,To):- wcode(To,II,17,0,Pred,Arity). % proceed ==> 18 (by emulator) encode(load_constant,II,AReg,Const,To):- wcode(To,II,28,AReg,Const,0). encode(load_variable,II,AReg,V,To):- wcode(To,II,50,AReg,?,V). encode(load_value,II,AReg,V,To):- wcode(To,II,29,AReg,?,V). encode(push_structure,II,Func/Arity,Ai,To):- wcode(To,II,51,Ai,Func,Arity). encode(push_variable,II,put,Ai,To):- wcode(To,II,52,Ai,?,0). % encode(push_offset,II,Func/Arity,Ai,To):- wcode(To,II,52,Ai,Func,Arity). encode(unify_void,II,_,Ai,To):- wcode(To,II,61,Ai,?,0). encode(write_void,II,_,Ai,To):- wcode(To,II,62,Ai,?,0). encode(c_chunk_variable,II,Len,Ai,To):- write_or_skip(To,II,63,Ai,?,Len). encode(c_chunk_value,II,Len,Ai,To):- write_or_skip(To,II,64,Ai,?,Len). encode('clause_?',II,Pred,N,To):-n_nop(X1), X is X1+1, wcode(To,II,X,0,Pred,N). encode('firstarg_?',II,F/N,MaxRegs,To):- n_nop(X1), X is X1+2, wcode(To,II,X,MaxRegs,F,N). encode('end_?',II,Reg,Mode,To):- wcode(To,II,0,Reg,Mode,0). encode(inline_variable,II,No,Arg,To):-n_inline(N), wcode(To,II,N,Arg,?,No). encode(arith_variable,II,No,Arg,To):-n_arith(N), wcode(To,II,N,Arg,0,No). encode(arith_value,II,No,Arg,To):-n_arith(N), wcode(To,II,N,Arg,1,No). encode('builtin_?',II,No,Arg,To):-n_builtin(N), wcode(To,II,N,Arg,?,No). encode_op(P,A,N,To):- II=op, n_nop(X1), X is X1+3, make_cmd([P," ",A," ",N],Name), wcode(To,II,X,0,Name,0). % we put metacall at right to be able to override them % by reconsulting builtins.pl n_inline(N):-metacall(bu_ctr(n_inline,N)). n_arith(N):-metacall(bu_ctr(n_arith,N)). n_builtin(N):-metacall(bu_ctr(n_builtin,N)). n_nop(N):-metacall(bu_ctr(n_nop,N)). bu(Pred,Type,Where):-metacall(bu0(Pred,Type,Where)). write_or_skip(wam,_,_,_,_,_):-!. write_or_skip(mem,_,_,_,_,_):-!. write_or_skip(To,II, Op,Ai,Nop,len(Len)):- c_threshold(Min,Max),Len>=Min,LenCF=c;CF='n'), wcode(asm,II,Op+CF,Ai,Nop,Len). write_or_skip0(_,_II,_Op,_Ai,_Nop,_Len). wcode(mem,_II,Op,Reg,F,N):-add_instr(Op,Reg,F,N). wcode(wam,_II,Op,Reg,F,N):- put_code(Op),put_code(Reg),put_code(N),write(F),put_code(0). wcode(c, II,Op,Reg,F,N):-wcode_c(II,Op,Reg,F,N). % ## When compiling to C wcode(asm, II,Op,Reg,F,N):-wcode_asm(II,Op,Reg,F,N). wcode_asm(II,Op,Reg,F,N):- Instr=..[II,Reg,F,N], write(Op),write('-->'),put_code(9),put_code(9), write(Instr),nl. % ## When compiling to asm % *.h file we are currently sending C-code let_c_chunk_file(F_H):-bb_let(c_chunk,file_name,F_H). c_chunk_file(F_H):-bb_val(c_chunk,file_name,F_H). % related to newpred newpred(c,C):-!,C=(H:-_),newpred0(H). newpred(_,_). % deals with info about current predicate newpred0(H):- functor(H,F,N), bb_val(predicate,name,F), bb_val(predicate,arity,N),!, bb_val(predicate,clause,I), I1 is I+1, bb_set(predicate,clause,I1), bb_let(predicate,offset,0). newpred0(H):- functor(H,F,N), bb_let(predicate,name,F), bb_let(predicate,arity,N), bb_let(predicate,clause,1), bb_let(predicate,offset,0). currpred(F/N-I/Offs):- bb_val(predicate,name,F), bb_val(predicate,arity,N), bb_val(predicate,clause,I), bb_val(predicate,offset,Offs). % Compiler interface ------------------------------------------------------ % compiles to memory compile_mem(InFile):- Mode=mem, quietmes(compiling(to(Mode),InFile,'...')), ctime(T1), survive_cleanup(InFile,File), mcomp_file(Mode,File), maincomp(Mode,current_user_file(File)), terminate_file(Mode,'$end1',1), !, ctime(T2),T is T2-T1, quietmes(compile_time(T)). compile_mem(_):- ttyprint('compilation aborted'), restart. survive_cleanup(F0,F):- name(F0,Survivor), % Survivor is now a list on the heap restart, % total cleanup of name-spaces, strings, files etc... call_ifdef(init_io,true), name(F,Survivor), % F is now a valid name init_cmd. mcomp_file(Mode,F):- statistics(code,[C1,_]), statistics(strings,[Z1,_]), statistics(symbols,[S1,_]), statistics(htable,[H1,_]), translate_all(F,Mode), statistics(code,[C2,_]),C is C2-C1, statistics(strings,[Z2,_]),Z is Z2-Z1, statistics(symbols,[S2,_]),S is S2-S1, statistics(htable,[H2,_]),H is H2-H1, Total is C+Z+S+H, quietmes(bytes_used( code(C),strings(Z),symbols(S),htable(H), total(Total))). % modes: wam,c,asm,bin compile0(Mode,[F|Fs],OutFile):-!, compile1(Mode,[F|Fs],OutFile). compile0(Mode,File,OutFile):- compile1(Mode,[File],OutFile). compile1(Mode,Fs,OutFile):-!, init_cmd, ctime(T1), xcompile(Mode,Fs,OutFile), ctime(T2), T is T2-T1, write(total_compile_time(T)),nl. xcompile(Mode,InFiles,OutFile):- tell(OutFile), decorate_file(header,Mode), compile_builtins(Mode), member(InFile,InFiles), quietmes(compiling(to(Mode),InFile,'...')), ctime(T1), comp_file(Mode,InFile), ctime(T2),T is T2-T1, quietmes(compile_time(T)), fail. xcompile(Mode,_,_):- terminate_file(Mode,'$end0',0), decorate_file(footer,Mode), fail. xcompile(_,_,_):- told. decorate_file(Where,c):-!,c_decorate_file(Where). decorate_file(_,_). terminate_file(Mode,Dummy,Level):- make_dummy_end(Mode,Dummy), gg_emit(Mode,[[ii(end,?,Level,Mode)]]), close_c_chunk_file(Mode). make_dummy_end(c,_):-c_chunk_file('wam.h'),!. make_dummy_end(Mode,Dummy):-maincomp(Mode,Dummy). close_c_chunk_file(c):-!,write_c_chunk(told). close_c_chunk_file(_). gg_emit(mem,C):-gen_code(mem,C). gg_emit(wam,C):-gen_code(wam,C). gg_emit(c,C):-gen_code(c,C). gg_emit(asm,C):-show_code(asm,C). % compiles to disk comp_file(Mode,InFile):- member(Mode,[wam,asm,bin,c]),!, translate_all(InFile,Mode). translate_all(F,Mode):-translate_all0(F,Mode). memoing_translate_all(F,Mode):- Mode=wam, is_prolog(binprolog), \+ current_module(prolog), memoable_file(Mode,F,OldF), !, ( \+ older_file(OldF,F) -> true ; make_memo_file(F,Mode,OldF) ), include_memoed_file(OldF). memoing_translate_all(F,Mode):- translate_all0(F,Mode). memoable_file(Mode,F,MemoF):- Suf=[Dot,_,_], name(F,L), append(Inf,Suf,L), !, Suf=".pl", name(Mode,NewSuf), append(Inf,[Dot|NewSuf],R), name(MemoF,R). make_memo_file(F,Mode,MemoF):- Mode=wam, telling(CF), tell(MemoF), translate_all0(F,Mode), told, tell(CF). include_memoed_file(OldF):- seeing(CF), see(OldF), repeat, get_code(C), put_to_eof(C), !, seen, see(CF). put_to_eof(-1):-!. put_to_eof(C):-put_code(C),fail. translate_all0(F,Mode):- seeing(F0), see(F), repeat, read_clause(C), translate(C,Mode), !, seen, see(F0). translate(end_of_file,_):-!. translate(':-'(C),Mode):-!,translate_cmd(C,Mode),fail. translate('::-'(H,B),Mode):-!,compile_binary(Mode,(H:-B)),fail. translate(C,Mode):-is_dynamic_clause(C),!,translate_cmd(assert(C),Mode),fail. translate(C,Mode):-maincomp(Mode,C),fail. is_dynamic_clause((H:-_)):-!,is_dynamic(H). is_dynamic_clause(H):-is_dynamic(H). maincomp(Mode,C):- preprocess(C,M,D,B), show_steps(Mode,M,D), compile_binary(Mode,B). translate_cmd([F],Mode):-!,include_file(F,Mode). translate_cmd(compile(F),Mode):-!,include_file(F,Mode). translate_cmd(ensure_loaded(F),Mode):-!,include_file(F,Mode). translate_cmd(consult(F),Mode):-!,include_file(F,Mode). % can be consult translate_cmd(reconsult(F),Mode):-!,include_file(F,Mode). % can be consult translate_cmd(dynamic(Ps),_):-!,dynamic(Ps). translate_cmd(interactive(On),_):-!,interactive(On). translate_cmd(spy(FN),_):-!,spy(FN). translate_cmd(op(X,Y,Z),Mode):-!, op(X,Y,Z), (member(Mode,[wam,c])->encode_op(X,Y,Z,Mode) ;true ). translate_cmd(C,Mode):- exec_cmd(C,Mode). %exec_cmd(C,_mem):- % used to be mem only ## UNSOUND although useful % telling(F), % tell(user), % (metacall(C)->true;true), % told, % tell(F), % fail. exec_cmd(Body,Mode):- % member(Mode,[wam,c]),!, cmd2clause(Body,C), maincomp(Mode,C), fail. % execution of `:-' runtime commands % % it expects: % - init_gensym in decorate_file(header... % - exec_run_time_commands/0 in main/1 cmd_root('$run_time_command'). init_cmd:- cmd_root(Root), get_cmd_no(Root). get_cmd_no(Root):- bb_val(gensym,Root,_), bb_set(gensym,Root,0),!. get_cmd_no(_). cmd2clause(Body,(Head:-Body)):- cmd_root(Root), gensym(Root,Head), quietmes('% !!! action delayed after compilation, for command:'), quietmes((:-Body)), (public(Head/0)->true;true). exec_run_time_commands:- cmd_root(Root), exec_run_time_commands0(Root), fail. exec_run_time_commands. exec_run_time_commands0(Root):- MaxCmd=10000, for(I,1,MaxCmd), symcat(Root,I,Cmd), % ttyprint('trying to execute command !!!'(Cmd)), (is_compiled(Cmd)->Cmd,fail ;true % , ttyprint('no such command'(Cmd)) ), !. include_file(IFile,Mode):- seeing(CF1), find_file(IFile,F), quietmes(begin(including(F),in(CF1))), memoing_translate_all(F,Mode), seeing(CF2), quietmes(end(including(F),in(CF2))). % preprocess(Clause,BinClause):-preprocess(Clause,_,_,BinClause). preprocess(C,M,D,B):- std_expand_term(C,E), fact2rule(E,M), mdef_to_def(M,D), def_to_mbin(D,B). fact2rule((:-B),(:-B)):-!. fact2rule((H:-B),(H:-B)):-!. fact2rule(H,(H:-true)). % -------------------------------------------------------------------- % Compiler interface make_cmd(Cs,Cmd):- make_cmd0(Cs,Xs), name(Cmd,Xs). make_cmd0(Cs,Xs):- findall(X,char_in_cmd(X,Cs),Xs). char_in_cmd(X,Cs):-member(C,Cs),listify(C,Xs),member(X,Xs). listify([X|Xs],[X|Xs]):-!. listify(X,L):-name(X,L). make_appl(File):- compile0(wam, [File,'init.pl','oper.pl','lib.pl','read.pl','write.pl','dcg.pl'], 'newappl.bp'). % ?-make_executable_unix_appl('/usr/local/bin/bp -q5','hello.pl',hello). make_executable_unix_appl(Emulator,SourceF,ExecF):- make_appl(SourceF), make_cmd([ "(echo '#! /bin/sh '", "; echo 'BP_ARGS=$*; export BP_ARGS'", % for its client "; echo 'exec ", Emulator, " $0'", % for BinProlog " ; cat newappl.bp) > ",ExecF, " ; chmod +x ", ExecF ], Cmd), system(Cmd). cparser:-bb_def(is,prolog,bin_prolog_with_cparser). kmake:-cparser,make(wam). kcmake:-cparser,cmake(wam). tmake:-tmake(12,60). tmake(Min):-tmake(Min,10000). tmake(Min,Max):-set_c_threshold(Min,Max),cmake. cmake:-cmake(wam). cmake(Project):-cmake(Project,user). cmake(Project,Module):-make(Project,Module,c,'.c'). make:-make(wam). make(Proj):-make(Proj,user). make(Project,Module):-make(Project,Module,wam,'.bp'). make(Project,Module,Mode,Suf):-make(Project,Module,Mode,Suf,Project). make(Project,Module,Mode,Suf,Mes):- current_module(M0), module(Module), ( make0(Project,Mode,Suf,Mes)->true ; \+ errmes(unable_to_make, [mode(Mode),project(Project,Suf),in_module(Module)]) ), module(M0). make0(Project,Mode,Suf,Mes):- ctime(T1), find_file(Project,F),make_cmd([Project,Suf],NewF), make_include(Mode,Project), compile0(Mode,F,NewF), ctime(T2),T is T2-T1, write(Mes=time(T)),nl. make_include(c,Project):-!, make_cmd([Project,".h"],F_H), let_c_chunk_file(F_H). make_include(_,_). asm:-comp_file(asm,user). asm(Project):-make(Project,user,asm,'.asm','BinWAM intermediate code'). boot:-make(wam,prolog). uboot:-make(wam,user). ls:-system('ls -tF'). dir:-system(dir). edit(Editor,File):- find_file(File,F), make_cmd([Editor," ",F],R), system(R), compile(F). get_editor(_,Ed):-(unix_getenv('EDITOR',Ed);unix_getenv('VISUAL',Ed)),!. get_editor(Default,Default). my_edit(DefaultEditor):- call_ifdef(current_user_file(File),fail), edit(DefaultEditor,File). my_defedit(DefaultEditor):- call_ifdef(current_user_file(File),fail), defedit(DefaultEditor,File). defedit(DefaultEditor,File):- get_editor(DefaultEditor,Ed), edit(Ed,File). ed:-my_defedit(emacs). edit:-my_defedit(edit). textedit:-my_edit(textedit). emacs:-my_edit(emacs). notepad:-my_edit(notepad). pico:-my_edit(pico). vi:-my_edit(vi). co:- call_ifdef(current_user_file(File),fail), compile(File). s:-statistics. % compiler to C - some constants c_root(xx). set_c_threshold(Min):-set_c_threshold(Min,100000). set_c_threshold(Min,Max):- bb_let(c_flag,c_threshold_min,Min), bb_let(c_flag,c_threshold_max,Max). set_c_trace(X):-bb_let(c_flag,trace,X). c_threshold(Min,Max):- bb_val(c_flag,c_threshold_min,Min), bb_val(c_flag,c_threshold_max,Max), !. c_threshold(1,0):-c_chunk_file('wam.h'),!. % Min > Max means: never c_threshold(5,500). BinProlog3.45/src/init.pl100644 764 764 1534 5764563067 14412 0ustar javierjavierstat_dict(runtime,0). stat_dict(global_stack,1). stat_dict(local_stack,2). stat_dict(trail,3). stat_dict(code,4). stat_dict(strings,5). stat_dict(symbols,6). stat_dict(htable,7). stat_dict(bboard,8). user_error(Mes,Obj):-error_message(basic,Mes,Obj). errmes(Mes,Obj):-error_message(pretty,Mes,Obj). error_message(Portray,Mes,Obj):- quiet(Q),Q=<5, telling(F), tell(user), portray_error(Portray,Mes,Obj),!, tell(F), fail. quietmes(Mes):-quiet(Q),Q=<4,!,ttyprint(Mes). quietmes(_). portray_error(basic,Mes,Obj):- cwrite('>>> '),cwrite(Mes),cwrite(': '),cwrite(Obj),nl. portray_error(pretty,Mes,Obj):- write('*** '),write(Mes),write(': '),nl, portray_clause(Obj). member(C,[C|_]). member(C,[_|L]):- member(C,L). nth_member(X,Xs,N):-member_i(X,Xs,1,N). member_i(X,[X|_],N,N). member_i(X,[_|Xs],N1,N3):- N2 is N1+1, member_i(X,Xs,N2,N3). BinProlog3.45/src/oper.pl100644 764 764 2271 5764563067 14413 0ustar javierjavier:-op(1000,xfy,','). :-op(1100,xfy,(';')). :-op(1200,xfx,('-->')). :-op(1200,xfx,(':-')). :-op(1200,fx,(':-')). :-op(700,xfx,'is'). :-op(700,xfx,'='). :-op(500,yfx,'-'). :-op(500,fx,'-'). :-op(500,yfx,'+'). :-op(500,fx,'+'). :-op(400,yfx,'/'). :-op(400,yfx,'*'). :-op(650,xfy,'.'). :-op(660,xfy,'++'). :-op(700,xfx,'>='). :-op(700,xfx,'>'). :-op(700,xfx,'=<'). :-op(700,xfx,(<)). :-op(700,xfx,(=\=)). :-op(700,xfx,(=:=)). :-op(300,fy,(~)). :-op(200,xfy,(^)). :-op(300,xfx,(mod)). :-op(400,yfx,(>>)). :-op(400,yfx,(<<)). :-op(400,yfx,(//)). :-op(500,yfx,(#)). :-op(500,fx,(#)). :-op(500,yfx,(\/)). :-op(500,yfx,(/\)). :-op(500,yfx,(\)). :-op(500,fx,(\)). :-op(700,xfx,(@>=)). :-op(700,xfx,(@=<)). :-op(700,xfx,(@>)). :-op(700,xfx,(@<)). :-op(700,xfx,(\==)). :-op(700,xfx,(==)). :-op(700,xfx,(=..)). :-op(700,xfx,(\=)). :-op(900,fy,(not)). :-op(900,fy,(\+)). :-op(900,fx,(spy)). :-op(900,fx,(nospy)). :-op(1050,xfy,(->)). :-op(1050,xfx,(@@)). :-op(1150,fx,(dynamic)). :-op(1150,fx,(public)). :-op(1150,fx,(module)). :-op(1200,xfx,(::-)). :-op(900,yfx,(:)). :-op(600,xfx,(:=:)). :-op(950,xfy,(-:)). :-op(950,xfy,(=>)). :-op(600,xfx,(<=)). :-op(700,xfx,(=:)). :-op(700,xfx,(:=)). % :-op(1200,fx,(?-)). BinProlog3.45/src/lib.pl100644 764 764 41254 5764563067 14240 0ustar javierjavier % is_prolog(binprolog). =>moved to read.pl and ../cparser/stdio.pl % ----------------------------------------------------------------- % LIBRARY of basic predicates % expands to strange things in Sicstus: written in binary Prolog here ':'(M,P,Cont)::-module_call(M,P,Cont). module_call(_,P) :- is_public(P),!,P. module_call(M,P) :- module_predicate(M,P,MP), MP. module_predicate(M,Pred,MPred):- Pred=..[F|Xs], module_name(M,F,MF), MPred=..[MF|Xs]. module_name(M,P,MP):- nonvar(M),nonvar(P),!,[Sep]=":", name(M,LM),name(P,LP), det_append(LM,[Sep|LP],LMP), name(MP,LMP). module_name(M,P,_):- user_error(should_be_nonvar,[M,P]). module(M):- bb_let(current,module_name,M), bb_let(module_name,M,M). module(M,FNs):- module(M), member(FN,FNs), public0(FN), fail. module(_,_). current_module(M):-bb_val(current, module_name , M0),!,M=M0. current_module(user). is_module(M):-nonvar(M),!,bb_val(module_name,M,_). is_module(M):-bb_list(Xs),bb_element(module_name/0+M/0=_,Xs). modules(Ms):-findall(M,is_module(M),Ms). hide_atom(G,H):-hide_atom0(G,H),!. hide_atom(G,G). hide_atom0(_,_):-current_module(user),!,fail. hide_atom0(Pred,_):-is_public(Pred),!,fail. hide_atom0(Pred,MPred):-current_module(M),module_predicate(M,Pred,MPred). public0(F/N):- functor(P,F,N), current_module(M), bb_def((public),P,M), !. public0(Bad):- errmes('bad or repeated declaration',public(Bad)). public((A,B)):-!,public(A),public(B). public(A):-public0(A). is_public(Pred):-is_public(Pred,_). is_public(Pred,Module):-bb_val((public),Pred,M),!,Module=M. is_public(Pred,_):-is_builtin(Pred). init_gensym(Root):-bb_let(gensym,Root,0). gensym(Root,Symbol):-gensym_no(Root,N),symcat(Root,N,Symbol). gensym_no(Root,N1):- val(gensym,Root,N),!, N1 is N+1, set(gensym,Root,N1). gensym_no(Root,N):-N=1, def(gensym,Root,N). current_op(Pri,Assoc,Name):-nonvar(Name),!, get_op(Name,Assoc,Pri). current_op(Pri,Assoc,Name):- for(I,0,10000), (val(opmark,I,Name)->get_op(Name,Assoc,Pri);!,fail). op(Pri,Assoc,Name):-op0(Name,Assoc,Pri). get_op(Name,Assoc,Pri):- % nonvar(Name), op_type(Assoc,Cls), get_op0(Name,Cls,Assoc,Pri). get_op0(Name,Cls,Assoc,Pri):- % nonvar(Name), nonvar(Cls), val(Cls,Name,Assoc), val(Name,Cls,Pri), Pri>0. op_type(xfy,infixop). op_type(xfx,infixop). op_type(yfx,infixop). op_type(fx,prefixop). op_type(fy,prefixop). op_type(xf,postfixop). op_type(yf,postfixop). is_dynamic(P):-val(P,'$first',_). is_assumed(H):-val('$assumed',H,Cs),nonvar(Cs). % Spying on compiled/dynamic/assumed code. % Note that for compiled code, declarations ":-spy(F/N)." should be % _BEFORE_ the clauses of F/N in the file F/N is defined. spy_goal(G):-trace(G). spying(H):-val(spying,H,yes). spy(F/N):-functor(H,F,N),\+ is_builtin(H),!,bb_let(spying,H,yes). spy(X):-user_error(unable_to_spy_on,X). nospy(F/N):-!,functor(H,F,N),bb_rm(spying,H). is_builtin_nonvar(T):-metacall(bu1(T)),!. is_builtin_nonvar(T):-termcat(T,cont(_),TC),bu(TC,_,_). is_builtin_var(T):-metacall(bu1(T)). is_builtin_var(T):-bu(TC,_,_),strip_cont(TC,T,_). is_builtin(T):-nonvar(T),!,is_builtin_nonvar(T). is_builtin(T):-is_builtin_var(T). interactive(X):-var(X),!,(is_interactive->X=yes;X=no). interactive(X):-nonvar(X),interactive0(X). is_interactive:- \+ current_op(1199,fx,('?-')). interactive0(yes):-op(1200,fx,('?-')). interactive0(no):-op(1199,fx,('?-')). expand_term(C,E):-portable_expand_term(C,E). std_expand_term(C,D):-portable_expand_term(C,D). /* ustrip_cont(TC,T,C):-TC=..LC,append(L,[C],LC),!,T=..L. strip_cont(TC,T,C):- ustrip_cont(TC,T,C). */ strip_cont(TC,T,C):- strip_cont0(TC,C-T). % NASTY BUG IN BUILTIN strip_cont0... => SOLVED !!! metatrue(TC)::-strip_cont(TC,T,C,metacall(T,C)). metacall(G):- call_ifdef(meta_interpreter(G), call_ifdef(G, user_error('no meta_interpreter for undefined goal',G) )). % true. % call(X):-X. otherwise. false:-fail. call_ifdef(G,_):-is_compiled(G),!,G. call_ifdef(_,Else):-Else. X=X. A->B :- A,!,B. A->B ; C :- !,if(A,B,C). X ; _ :-X. _ ; Y :-Y. or(A,_):-A. or(_,B):-B. if(A,B,_):-A,!,B. if(_,_,C):-C. (X,Y):-X,Y. \+(X):-X,!,fail. \+(_). \=(X,X):-!,fail. \=(_,_). halt:-halt(0). repeat. repeat:-repeat. findall_workhorse(X,G,Cons,AnswerSize,_):- lift_heap(Cons,AnswerSize), % cons,answer_size: 0=automatic G, findall_store_heap(X). findall_workhorse(_,_,_,_,Xs):- findall_load_heap(Xs). findall(X,G,Xs,End):-findall_workhorse(X,G,'.',0,[End|Xs]). findall(X,G,Xs):-findall(X,G,Xs,[]). findall_conj(X,G,Xs):-findall_conj(X,G,Xs,true). findall_conj(X,G,Xs,End):-findall_workhorse(X,G,',',0,(End,Xs)). findall_disj(X,G,Xs):-findall_disj(X,G,Xs,fail). findall_disj(X,G,Xs,End):-findall_workhorse(X,G,';',0,(End;Xs)). % findall(G,Gs):-findall(G,G,Gs). % The following can together be used to give the illusion of having % a parallel engine which produces answers lazily, as needed. % Intended to be used as take and drop work in haskell, % on possibly infinite streams of solutions, % they use WAM-level means as change_arg/3 in has_fuel/3 % the reader is challenged to express them in classical Prolog :-) % To do more, a separate Prolog engine or first order manipulation % of OR continuations is needed... % answers G as far as constraint C holds while(C,G):-G,(C->true;!,fail). skip_until(C,G):-G,(C->fail;!). skip_when(C,G):-G,(C->fail;true). % gives only the N-th answer of G nth_answer(N,G):-N1 is N-1,Max=s(N1),skip_until(has_fuel(Max),G). % generates at most the first N answers of G take_at_most(N,G):-Max=s(N),while(has_fuel(Max),G). % drops at least the first N answers of G drop_at_least(N,G):-Max=s(N),skip_when(has_fuel(Max),G). % re-entrant on-place counter has_fuel(Max):-arg(1,Max,N),N>0,N1 is N-1,change_arg(1,Max,N1). % answer_stream to list converters find_while(C,X,G,Xs):-findall(X,while(C,G),Xs). find_at_most(N,X,G,Xs):-findall(X,take_at_most(N,G),Xs). all_but_at_least(N,X,G,Xs):-findall(X,drop_at_least(N,G),Xs). % if V is not common to X and G then V cannot be bound by all/3 % => such variables should be shared % this is _different_ from what bagof does, and I think, better ! % try: ?-all(X,member(s(X),[A,B,B,C]),Xs). all(X,G,Xs):- are_shared(X,G,Vs), findall(X-Vs,G,Ys), share_vars(Ys,Vs,Xs). are_shared(X,G,vars(Is,Os)):- free_variables(X,G,[],Is), % free variables in X not occurring in G free_variables(G,X,[],Os). % free variables in G not occurring in X share_vars([],_,[]). share_vars([T-Vs|TVs],Vs,[T|Ts]):-share_vars(TVs,Vs,Ts). gc_read(R):-findall(X,read(X),[R]). gc_read_clause(R):-findall(X,read_clause(X),[R]). gc_call(G):-findall(G,G,Gs),member(G,Gs). for(Min,Min,Max):-Min=0,!,fail. ground(_). copy_term(T,CT):-copy_term(0,T,CT). save_term(T,CT):-copy_term(1,T,CT). flush:-seen_told(2). see_or_fail(File):-see_tell(0,File). exists_file(File):-see_or_fail(File),seen. sread(I,O):-string_op(0,I,O). swrite(I,O):-string_op(1,I,O). system([]):-!. system([X|Xs]):-!,name(Command,[X|Xs]),shell(Command). system(Command):-atomic(Command),shell(Command). [File]:-compile(File). include(File):-compile(File). compile(File):- find_file(File,F), compile_mem(F), abort. file_search_path(["","myprogs/",PROGS,SRC]):- getenv_path("../src",SRC), getenv_path("progs",PROGS). file_extension_list([".pl",".pro",""]). file_library([LIBRARY],[".pl"]):-getenv_path("../library",LIBRARY). getenv_path(Default,Computed):- Slash="/", ( unix_getenv('BP_PATH',Where)-> name(Where,Xs),det_append(Xs,Slash,RootPath) ; RootPath="" ), det_append(Default,Slash,Local), det_append(RootPath,Local,Computed). make_file_name(Prefs,File,Sufs,NewFile):- member(Pref,Prefs), member(Suf,Sufs), name(File,L), det_append(L,Suf,R), det_append(Pref,R,Fname), name(NewFile,Fname). statistics(Area,[Used,Free]):-stat_dict(Area,No),stat0(Used,Free,No). statistics:- statistics(Name,Data), cwrite(Name),cwrite(=),cwrite(Data),nl, fail. statistics. atom(X):-integer(X),!,fail. atom(X):-atomic(X). float(X):-nonvar(X),X='$float'(_,_,_). number(X):-integer(X),!. number(X):-float(X). compound(X):-nonvar(X), \+(atomic(X)). =..(T,L):-var(T),!,list2term(L,T). =..(T,L):-term2list(T,('.'),[],L). term2list(T,L):-term2list(T,('.'),[],L). term2dlist(T,Head,Queue):-term2list(T,('.'),Queue,Head). % det_append0 works with an arbitrary constructor % it guesses it from the first constructor in Xs det_append(Xs,Ys,Zs):-det_append0(Xs,Ys,_-Zs). det_append(Xs,Ys,Zs,End):-det_append0(Xs,Ys,End-Zs). appendN(Xss,Xs):-appendN(Xss,Xs,[]). appendN([],End,End). appendN([Xs|Xss],S1,S2):-det_append0(Xs,End,_-S1),appendN(Xss,End,S2). append_body(C1,C2,C3):-append_body(C1,C2,C3,_). append_body(C1,C2,C3,True):- functor(C1,F,2), det_append0(C1,T,End-C3), ( End==True->T=C2 ; T=..[F,End,C2] ). append_conj(C1,C2,C3):-append_body((X,C1),C2,(X,C3),true). append_disj(C1,C2,C3):-append_body((X;C1),C2,(X;C3),fail). % this allows using list-functions in is: Xs is [1,2]++[3]++[4,5] '.'(X,Xs,[X|Xs]). ++(Xs,Ys,Zs) :- det_append0(Xs,Ys,[]-Zs). % this makes about 2 Megalips on a Sparc 10-20: append(Xs,Ys,Zs):- det_append0(Xs,NewXs,EndXs-Zs), general_append(EndXs,Ys,NewXs). general_append([],Ys,Ys). general_append([A|Xs],Ys,[A|Zs]):- general_append(Xs,Ys,Zs). length(L,N):-var(N),!,get_length(L,0,N). length(L,N):-make_length(L,0,N). get_length([],I,I). get_length([_|L],I0,I):-I1 is I0+1,get_length(L,I1,I). make_length([],I,I):-!. make_length([_|L],I0,I):-I032;X<0),!,R=X. % !! use something like Y=3+4, X is 1+expr(Y) instead of % !! Y=3+4, X is 1+Y which will not work in compiled code X is E:-expr(E,R),!,X=R. X is E:-errmes(error_in_is,X is E). expr(E,R):-atomic(E),!,R=E. expr(E,R):-float(E),!,R=E. expr(E,_Error):-var(E),!,user_error(variable_in_is,E). expr(E,R):-functor(E,Op,2),!, arg(1,E,E1),arg(2,E,E2), expr(E1,X1), expr(E2,X2), G=..[Op,X1,X2,R], G,!. expr(E,R):-functor(E,Op,1), arg(1,E,E1), expr(E1,X1), G=..[Op,X1,R], G,!. compare(R,X,Y):-compare0(X,Y,R). +(X,X). -(X,N):- -(0,X,N). \(X,N):- \(0,X,N). A==B :- compare0(A,B,=). A\==B :- compare0(A,B,R),'$noteq'(R). A @< B :- compare0(A,B,<). A @> B :- compare0(A,B,>). A @=< B :- compare0(A,B,R),'$lesseq'(R). A @>= B :- compare0(A,B,R),'$gteq'(R). A < B :-expr(A,X), expr(B,Y), less(X,Y). A > B :-expr(A,X), expr(B,Y), greater(X,Y). A =< B :-expr(A,X), expr(B,Y), less_eq(X,Y). A >= B :-expr(A,X), expr(B,Y), greater_eq(X,Y). A =:= B :-expr(A,X), expr(B,Y), arith_eq(X,Y). A =\= B :-expr(A,X), expr(B,Y), arith_dif(X,Y). '$lesseq'(<). '$lesseq'(=). '$gteq'(>). '$gteq'(=). '$noteq'(<). '$noteq'(>). % BinProlog USER LEVEL naming primitives % DO NOT rely on def/3, set/3, val/3,rm/2. Thay are unsafe % and their implementation may change in the future... /********* BASIC operations: safe with respect to bb_gc ***********/ % WARNING: may be moved to C, do not use their componnents directly bb_def(A,B,X):-saved(X,S),def(A,B,S). bb_set(A,B,X):-saved(X,S),set(A,B,S). bb_val(A,B,CX):-val(A,B,X),copy_term(X,CX). bb_rm(A,B):-rm(A,B). bb_change_arg(N,T,X):-saved(X,A), let(N,T,A), % an overkill: only to let the gc no about A change_arg(N,T,A). /******************DERIVED OPERATIONS ***********************/ % safe bboard operations bb_let(A,B,X):-val(A,B,_),!,bb_set(A,B,X). bb_let(A,B,X):-bb_def(A,B,X). bb_def(A,X):-bb_def(A,A,X). bb_set(A,X):-bb_set(A,A,X). bb_val(A,X):-bb_val(A,A,X). bb_rm(A):-bb_rm(A,A). bb_let(A,X):-bb_let(A,A,X). bb_default_val(A,B,_,X):-bb_val(A,B,X),!. bb_default_val(_,_,D,D). saved(X,S):-save_term(X,NewX),!,S=NewX. saved(X,S):-bb_gc,save_term(X,NewX),!,S=NewX. saved(_,_):-bb_fail(saved/2). saved(_,_):- restart, abort. % unsupported & unsafe let(X,Y,V):-def(X,Y,V),!. let(X,Y,V):-set(X,Y,V). def(A,X):-def(A,A,X). set(A,X):-set(A,A,X). val(A,X):-val(A,A,X). let(A,X):-let(A,A,X). rm(A):-rm(A,A). % INVISIBLE DCG connect operation: normally macro-expanded % renamed as Hidden Accumulator Grammars '#'(Word):-dcg_connect(Word). % example: dcg_phrase((#a,#b,#c),X). dcg_phrase(Axiom,Phrase):-dcg_phrase(1,Axiom,Phrase). dcg_phrase(DcgStream,Axiom,Phrase):- dcg_telling(X),dcg_tell(DcgStream), dcg_def(Phrase), Axiom, dcg_val([]), dcg_tell(X). % GLOBAL LOGICAL VARIABLES ':=:'(K1#K2,X):-!,lval(K1,K2,X). ':=:'(K,X):-lval(K,K,X). /* bboard garbage collector */ bb_gc:- bb_list0(3,1,B), copy_term(B,NewB), bb_reset, bb_put_back(NewB). bb_put_back([]). bb_put_back([P,N,F,K,V|Xs]):- functor(O,P,N), functor(M,F,K), bb_put_1(O,M,V), bb_put_back(Xs). bb_put_1(O,M,V):-save_term(V,NewV),set(O,M,NewV),!,NewV=V. bb_put_1(O,M,_):-bb_fail(O+M). bb_fail(X):- statistics(bboard,[_,Z]), user_error('blackboard overflow, left only'(Z),culprit(X)). % An easy patch to read.pl for basic float input - Paul Tarau, Oct. 1993 try_float(_Ds,[atom('.'),integer(box(_Fraq,FDs))|Ts],I,[atom(Float)|Ts1]):-!, try_float_exp(Ts,Ts1,Exp),name(NFraq,FDs), input_float(I,NFraq,Exp,Float). try_float(Ds,Tokens,I,[integer(box(I,Ds))|Tokens]). try_float_exp([atom(e)|Ts],Ts1,Exp):-try_float_exp1(Ts,Ts1,Exp),!. try_float_exp([atom(EN)|Ts],Ts,Exp):- [E]="e", name(EN,[E|NL]),name(Exp,NL),integer(Exp),!. try_float_exp(Ts,Ts,0). try_float_exp1([atom('-'),integer(box(Exp,_))|Ts],Ts,Exp1):-!, Exp1 is 0-Exp. try_float_exp1([atom('+'),integer(box(Exp,_))|Ts],Ts,Exp). float_minus(F,NegF):-NegF is 0.0-F. pow(A,X,R):-float_fun2(pow,A,X,R). log(A,X,R):-float_fun2(log,A,X,R). sqrt(X,R):-float_fun2(pow,X,0.5,R). % F(X+Y) --> R used for Y=0 exp(X,R):-float_fun(exp,X,R). log(X,R):-float_fun(log,X,R). sin(X,R):-float_fun(sin,X,R). cos(X,R):-float_fun(cos,X,R). tan(X,R):-float_fun(tan,X,R). % F(X)+Y --> R used for Y=0 atan(X,R):-float_fun('T',X,R). asin(X,R):-float_fun('S',X,R). acos(X,R):-float_fun('C',X,R). integer(X,R):-float_fun(integer,X,R). float(X,R):-R is 0.0+X. % for portability... ctime(T):-statistics(runtime,[T,_]). is_predicate(H):-is_compiled(H),!. is_predicate(H):-is_dynamic(H),!. is_predicate(H):-is_assumed(H). predicate_property(H,Prop):-nonvar(H),!,predicate_property0(H,Prop). predicate_property(H,Prop):- generate_a_predicate(F,N), functor(H,F,N), predicate_property0(H,Prop). predicate_property0(H,Prop):-is_dynamic(H),!, (Prop=(dynamic);Prop=(interpreted)). predicate_property0(H,Prop):-is_assumed(H),!, (Prop=(assumed);Prop=(interpreted)). predicate_property0(H,(built_in)):-is_builtin(H),!. predicate_property0(H,(compiled)):-is_compiled(H). current_predicate(F,H):-nonvar(H),!,is_predicate(H),functor(H,F,_). current_predicate(F,H):-generate_a_predicate(F,N),functor(H,F,N). current_predicate(F/N):-nonvar(F),nonvar(N),!, functor(H,F,N),is_predicate(H),!. current_predicate(F/N):- generate_a_predicate(F,N). predicate_key0('$assumed'/0,PN,V,PN):-nonvar(V). predicate_key0(PN,'$first'/0,_V,PN). predicate_key0(predmark/0,P/N,predmark,P/N1):-N>0,N1 is N-1. % for true/0 generate_a_predicate(P,N):- bb_list0(0,0,Xs), bb_element(K1+K2=V,Xs), predicate_key0(K1,K2,V,P/N). help(Name):-apropos(Name). apropos(Name):- findall(FN,apropos(Name,FN),FNs), sort(FNs,Xs), member(X,Xs), write(X),nl, fail. apropos(_). apropos(Name,F/N-Prop):- name(Name,UnKnown), predicate_property(H,Prop),functor(H,F,N), name(F,Known), near_match(Known,UnKnown). near_match(Known,Known):-!. near_match(Known,UnKnown):-append3(_,UnKnown,_,Known),!. near_match(Known,UnKnown):-append3(A,B,C,Known),append3(A,[_|B],C,UnKnown),!. %near_match(Known,UnKnown):-near_match(UnKnown,Known). append3(Xs,Ys,Zs,Us):- append(Xs,YsZs,Us), append(Ys,Zs,YsZs). unix_cd:- unix_getenv('HOME',HomeDir), unix_cd(HomeDir). unix_argv(Xs):- unix_argc(Max), Last is Max-1, % with unix_argv(0,X) you can also get the program's name findall(X,(for(I,1,Last),unix_argv(I,X)),Xs). unix(argc(X)):-unix_argc(X). unix(argv(Xs)):-unix_argv(Xs). unix(getenv(X,Y)):- unix_getenv(X,Y)->true ; errmes('no such environment variable',X). unix(access(X,Y)):-unix_access(X,Y). unix(cd(X)):-unix_cd(X). unix(cd):-unix_cd. unix(kill(X,Y)):-unix_kill(X,Y). BinProlog3.45/src/read.pl100644 764 764 70117 5764563067 14405 0ustar javierjavierdefault_prolog(binprolog). peval_io(get_code(X),get0(X)). peval_io(put_code(X),put(X)). peval_io(nl,cnl). peval_io(seeing(F),seeing_telling(0,F)). peval_io(telling(F),seeing_telling(1,F)). peval_io(seeing_at(F),seeing_telling_at(0,F)). peval_io(telling_at(F),seeing_telling_at(1,F)). peval_io(fast_write(T),cwrite(T)). %peval_io(write(T),R):-atomic(T),!,R=cwrite(T). fast_write(X):-cwrite(X). get_code(X):-get0(X). put_code(X) :- put(X). nl :- cnl. %% see-tell based file access see(File):-see_tell(0,File),!. see(File):-user_error(unable_to_see,File). seeing(F):-seeing_telling(0,F). telling(F):-seeing_telling(1,F). tell(File):-see_tell(1,File),!. tell(File):-user_error(unable_to_tell,File). seen:-seen_told(0). told:-seen_told(1). /* interface to fseek-ftell using the basic see-tell metaphor */ see_at(SeekPos):-see_tell_at(0,SeekPos),!. see_at(SeekPos):-user_error(unable_to_see_at,SeekPos). tell_at(SeekPos):-see_tell_at(1,SeekPos),!. tell_at(SeekPos):-user_error(unable_to_tell_at,SeekPos). seeing_at(FtellPos):-seeing_telling_at(0,FtellPos). telling_at(FtellPos):-seeing_telling_at(1,FtellPos). find_file(File,NewFile):-atom(File),!, file_search_path(Path), file_extension_list(Ext), find_file1(Path,Ext,File,NewFile). find_file(library(File),NewFile):-atom(File),!, file_library(Path,Ext), find_file1(Path,Ext,File,NewFile). find_file(File,_):- user_error('bad file name',File). find_file1(Path,Ext,File,NewFile):- seeing(CF), find_file2(CF,Path,Ext,File,NewFile). find_file2(CF,Path,Ext,File,NewFile):- see_a_file(Path,File,Ext,NewFile),!, see(CF). find_file2(CF,Path,Ext,File,_):- see(CF), findall(N,(member(X,Path),name(N,X)),Ds), findall(N,(member(X,Ext),name(N,X)),Es), errmes(file_not_found(File),Ds+File+Es). see_a_file(Prefs,File,Sufs,NewFile):- make_file_name(Prefs,File,Sufs,NewFile), see_or_fail(NewFile), seen. % File : READ.PL % Author : D.H.D.Warren + Richard O'Keefe % Updated: 5 July 1984 % Purpose: Read Prolog terms in Dec-10 syntax. /* Modified by Alan Mycroft to regularise the functor modes. This is both easier to understand (there are no more '?'s), and also fixes bugs concerning the curious interaction of cut with the state of parameter instantiation. Since this file doesn't provide "metaread", it is considerably simplified. The token list format has been changed somewhat, see the comments in the RDTOK file. I have added the rule X(...) -> apply(X,[...]) for Alan Mycroft. */ read_clause(C):-read_with_singletons(C,Vs,Ss),warn_singletons(Ss,Vs,C). read_with_singletons(X,Vs,Ss):-r_term(X,Vs),singletons(Ss,Vs). warn_singletons([S|Ss],Vs,C):-quiet(Q),Q=<1, warn_singletons1(C,[S|Ss],Vs), fail. warn_singletons(_,_,_). warn_singletons1(':-'(_),_,_):-!. warn_singletons1(C,Ss,Vs):- add_true(C,(H:-_)), seeing_at(Byte), melt_varnames(Vs), ttyout(( print(Ss),print('** warning singleton_variables, byte=>'(Byte)),nl, print('=> '),print(H),cwrite(':-...'),nl, nl )), !. melt_varnames([]). melt_varnames([var(V,V,_)|Xs]) :- melt_varnames(Xs). read(X):-r_term(X,_). top_read_term(T,V) :- read_term(T,V). read_term(T,Vs) :- r_term(T,L),r_vars(L,Vs). r_vars([],[]). r_vars([var(N,V,_O)|Vs],[N=V|Es]):-r_vars(Vs,Es). % awkward O,I order allowing member(Result,Options),call(Result,Vars) singletons(ONs,IVs):-findall(N,member(var(N,_V,s(0)),IVs),ONs). print(X):-portable_print(X). write(X):-portable_write(X). writeq(X):-portable_writeq(X). ttyin(ReadOp):- seeing(F), see(user), ReadOp, %seing(user), see(F). ttyout(WriteOp):- telling(F), tell(user),WriteOp,flush, % telling(user), tell(F). ttyprin(X):-ttyout(write(X)). ttyprint(X):-ttyout((write(X),nl)). ttycwrite(X):-ttyout(cwrite(X)). ttycwriteln(X):-ttyout((cwrite(X),nl)). ttynl:-ttyout(nl). ttyput(X):-ttyout(put(X)). display(X):-ttyout(portable_display(X)). % r_term(?Answer, ?Variables) % reads a term from the current input stream and unifies it with % Answer. Variables is bound to a list of [Atom=Variable] pairs. r_term(Answer, Variables) :- repeat, read_tokens(Tokens, Variables), r_and_check(Tokens,Term), !, Answer = Term. r_and_check(Tokens,Term):- rt(Tokens, 1200, Term, LeftOver), all_read(LeftOver). r_and_check(Tokens,_):- syntax_error(Tokens). % all_read(+Tokens) % checks that there are no unparsed tokens left over. all_read([]) :- !. all_read(S) :- syntax_error([operator,expected,after,expression], S). % expect(Token, TokensIn, TokensOut) % reads the next token, checking that it is the one expected, and % giving an error message if it is not. It is used to look for % right brackets of various sorts, as they're all we can be sure of. expect(Token, [Token|Rest], Rest) :- !. expect(Token, S0, _) :- syntax_error([Token,or,operator,expected], S0). % I want to experiment with having the operator information held as % ordinary Prolog facts. For the moment the following predicates % remain as interfaces to current_op. (i.e unfolded to val/3 - Paul Tarau) % prefixop(O -> Self, Rarg) % postfixop(O -> Larg, Self) % infixop(O -> Larg, Self, Rarg) prefixop(Op, Prec, Prec) :- get_op0(Op, prefixop, fy, Prec), !. prefixop(Op, Prec, Less) :- get_op0(Op, prefixop, fx, Prec), Less is Prec-1. postfixop(Op, Prec, Prec) :- get_op0(Op, postfixop, yf, Prec), !. postfixop(Op, Less, Prec) :- get_op0(Op, postfixop, xf, Prec), Less is Prec-1. infixop(Op, Less, Prec, Less) :- get_op0(Op, infixop, xfx, Prec ), !, Less is Prec-1. infixop(Op, Less, Prec, Prec) :- get_op0(Op, infixop, xfy, Prec), !, Less is Prec-1. infixop(Op, Prec, Prec, Less) :- get_op0(Op, infixop, yfx, Prec), Less is Prec-1. ambigop(F, L1, O1, R1, L2, O2) :- postfixop(F, L2, O2), infixop(F, L1, O1, R1). % rt(+TokenList, +Precedence, -Term, -LeftOver) % parses a Token List in a context of given Precedence, % returning a Term and the unread Left Over tokens. rt([], _, _, _) :- syntax_error([expression,expected], []). rt([Token|RestTokens], Precedence, Term, LeftOver) :- rts(Token, RestTokens, Precedence, Term, LeftOver). % rts(+Token, +RestTokens, +Precedence, -Term, -LeftOver) rts(var(Variable,_), ['('|S1], Precedence, Answer, S) :- !, rt(S1, 999, Arg1, S2), r_args(S2, RestArgs, S3), !, exprtl0(S3, apply(Variable,[Arg1|RestArgs]), Precedence, Answer, S). rts(var(Variable,_), S0, Precedence, Answer, S) :- !, exprtl0(S0, Variable, Precedence, Answer, S). rts(atom(-), [integer(box(Integer,_))|S1], Precedence, Answer, S) :- Negative is 0-Integer, !, exprtl0(S1, Negative, Precedence, Answer, S). rts(atom(-), [atom(F)|S1], Precedence, Answer, S) :- float(F), float_minus(F,Negative),!, exprtl0(S1, Negative, Precedence, Answer, S). rts(atom(Functor), ['('|S1], Precedence, Answer, S) :- !, rt(S1, 999, Arg1, S2), r_args(S2, RestArgs, S3), Term =.. [Functor,Arg1|RestArgs], !, exprtl0(S3, Term, Precedence, Answer, S). rts(atom(Functor), S0, Precedence, Answer, S) :- prefixop(Functor, Prec, Right), !, after_prefix_op(Functor, Prec, Right, S0, Precedence, Answer, S). rts(atom(Atom), S0, Precedence, Answer, S) :- !, exprtl0(S0, Atom, Precedence, Answer, S). rts(integer(box(Integer,_)), S0, Precedence, Answer, S) :- !, exprtl0(S0, Integer, Precedence, Answer, S). rts('[', [']'|S1], Precedence, Answer, S) :- !, exprtl0(S1, [], Precedence, Answer, S). rts('[', S1, Precedence, Answer, S) :- !, rt(S1, 999, Arg1, S2), r_list(S2, RestArgs, S3), !, exprtl0(S3, [Arg1|RestArgs], Precedence, Answer, S). rts('(', S1, Precedence, Answer, S) :- !, rt(S1, 1200, Term, S2), expect(')', S2, S3), !, exprtl0(S3, Term, Precedence, Answer, S). rts('((', S1, Precedence, Answer, S) :- !, rt(S1, 1200, Term, S2), expect(')', S2, S3), !, exprtl0(S3, Term, Precedence, Answer, S). rts('{', ['}'|S1], Precedence, Answer, S) :- !, exprtl0(S1, '{}', Precedence, Answer, S). rts('{', S1, Precedence, Answer, S) :- !, rt(S1, 1200, Term, S2), expect('}', S2, S3), !, exprtl0(S3, '{}'(Term), Precedence, Answer, S). rts(string(List), S0, Precedence, Answer, S) :- !, exprtl0(S0, List, Precedence, Answer, S). rts(Token, S0, _, _, _) :- syntax_error([Token,cannot,start,an,expression], S0). % r_args(+Tokens, -TermList, -LeftOver) % parses {',' expr(999)} ')' and returns a list of terms. r_args([','|S1], [Term|Rest], S) :- !, rt(S1, 999, Term, S2), !, r_args(S2, Rest, S). r_args([')'|S], [], S) :- !. r_args(S, _, _) :- syntax_error([',)',expected,in,arguments], S). % r_list(+Tokens, -TermList, -LeftOver) % parses {',' expr(999)} ['|' expr(999)] ']' and returns a list % of terms. r_list([','|S1], [Term|Rest], S) :- !, rt(S1, 999, Term, S2), !, r_list(S2, Rest, S). r_list(['|'|S1], Rest, S) :- !, rt(S1, 999, Rest, S2), !, expect(']', S2, S). r_list([']'|S], [], S) :- !. r_list(S, _, _) :- syntax_error(['|]',expected,in,list], S). % after_prefix_op(+Op, +Prec, +ArgPrec, +Rest, +Precedence, % -Ans, -LeftOver) after_prefix_op(Op, Oprec, _, S0, Precedence, _, _) :- Precedence < Oprec, !, syntax_error([prefix,operator,Op,in,context,with,precedence,Precedence], S0). after_prefix_op(Op, Oprec, _, S0, Precedence, Answer, S) :- peepop(S0, S1), prefix_is_atom(S1, Oprec), % can't cut but would like to exprtl(S1, Oprec, Op, Precedence, Answer, S). after_prefix_op(Op, Oprec, Aprec, S1, Precedence, Answer, S) :- rt(S1, Aprec, Arg, S2), Term =.. [Op,Arg], !, exprtl(S2, Oprec, Term, Precedence, Answer, S). % The next clause fixes a bug concerning "mop dop(1,2)" where % mop is monadic and dop dyadic with higher Prolog priority. peepop([atom(F),'('|S1], [atom(F),'('|S1]) :- !. peepop([atom(F)|S1], [infixop(F,L,P,R)|S1]) :- infixop(F, L, P, R). peepop([atom(F)|S1], [postfixop(F,L,P)|S1]) :- postfixop(F, L, P). peepop(S0, S0). % prefix_is_atom(+TokenList, +Precedence) % is true when the right context TokenList of a prefix operator % of result precedence Precedence forces it to be treated as an % atom, e.g. (- = X), p(-), [+], and so on. prefix_is_atom([Token|_], Precedence) :- prefix_is_atom(Token, Precedence). prefix_is_atom(infixop(_,L,_,_), P) :- L >= P. prefix_is_atom(postfixop(_,L,_), P) :- L >= P. prefix_is_atom(')', _). prefix_is_atom(']', _). prefix_is_atom('}', _). prefix_is_atom('|', P) :- 1100 >= P. prefix_is_atom(',', P) :- 1000 >= P. prefix_is_atom([], _). % exprtl0(+Tokens, +Term, +Prec, -Answer, -LeftOver) % is called by read/4 after it has read a primary (the Term). % It checks for following postfix or infix operators. exprtl0([atom(F)|S1], Term, Precedence, Answer, S) :- ambigop(F, L1, O1, R1, L2, O2), !, ( exprtl([infixop(F,L1,O1,R1)|S1], 0, Term, Precedence, Answer, S) ; exprtl([postfixop(F,L2,O2) |S1], 0, Term, Precedence, Answer, S) ). exprtl0([atom(F)|S1], Term, Precedence, Answer, S) :- infixop(F, L1, O1, R1), !, exprtl([infixop(F,L1,O1,R1)|S1], 0, Term, Precedence, Answer, S). exprtl0([atom(F)|S1], Term, Precedence, Answer, S) :- postfixop(F, L2, O2), !, exprtl([postfixop(F,L2,O2) |S1], 0, Term, Precedence, Answer, S). exprtl0([','|S1], Term, Precedence, Answer, S) :- Precedence >= 1000, !, rt(S1, 1000, Next, S2), !, exprtl(S2, 1000, (Term,Next), Precedence, Answer, S). exprtl0(['|'|S1], Term, Precedence, Answer, S) :- Precedence >= 1100, !, rt(S1, 1100, Next, S2), !, exprtl(S2, 1100, (Term;Next), Precedence, Answer, S). exprtl0([Thing|S1], _, _, _, _) :- cant_follow_expr(Thing, Culprit), !, syntax_error([Culprit,follows,expression], [Thing|S1]). exprtl0(S, Term, _, Term, S). cant_follow_expr(atom(_), atom). cant_follow_expr(var(_,_), variable). cant_follow_expr(integer(_), integer). cant_follow_expr(string(_), string). cant_follow_expr('((', bracket). cant_follow_expr('(', bracket). cant_follow_expr('[', bracket). cant_follow_expr('{', bracket). exprtl([infixop(F,L,O,R)|S1], C, Term, Precedence, Answer, S) :- Precedence >= O, C =< L, !, rt(S1, R, Other, S2), Expr =.. [F,Term,Other], /*!,*/ exprtl(S2, O, Expr, Precedence, Answer, S). exprtl([postfixop(F,L,O)|S1], C, Term, Precedence, Answer, S) :- Precedence >= O, C =< L, !, Expr =.. [F,Term], peepop(S1, S2), exprtl(S2, O, Expr, Precedence, Answer, S). exprtl([','|S1], C, Term, Precedence, Answer, S) :- Precedence >= 1000, C < 1000, !, rt(S1, 1000, Next, S2), !, exprtl(S2, 1000, (Term,Next), Precedence, Answer, S). exprtl(['|'|S1], C, Term, Precedence, Answer, S) :- Precedence >= 1100, C < 1100, !, rt(S1, 1100, Next, S2), !, exprtl(S2, 1100, (Term;Next), Precedence, Answer, S). exprtl(S, _, Term, _, Term, S). % This business of syntax errors is tricky. When an error is % detected, we have to write out a message. We also have to note % how far it was to the end of the input, and for this we are % obliged to use the data-base. Then we fail all the way back to % read(), and that prints the input list with a marker where the % error was noticed. If subgoal_of were available in compiled code % we could use that to find the input list without hacking the % data base. The really hairy thing is that the original code % noted a possible error and backtracked on, so that what looked % at first sight like an error sometimes turned out to be a wrong % decision by the parser. This version of the parser makes % fewer wrong decisions, and my goal was to get it to do no % backtracking at all. This goal has not yet been met, and it % will still occasionally report an error message and then decide % that it is happy with the input after all. Sorry about that. syntax_error(Message, List) :- seeing(F),seeing_at(Byte), see(user), start_syntax_error(Byte,Message,List), see(F), fail. start_syntax_error(Byte,Message,List):- nl,display('** SYNTAX ERROR: byte='),display(Byte), display_list(Message), length(List, Length), bb_let(syntax_error, length, Length),!. start_syntax_error(_,_,_). syntax_error(List) :- seeing(F),see(user), finish_syntax_error(List), see(F), fail. finish_syntax_error(List):- val(syntax_error, length, AfterError), length(List, Length), BeforeError is Length-AfterError, display_list(List, BeforeError),!. display_list([Head|Tail]) :- ttyput(32), display_token(Head), !, display_list(Tail). display_list([]) :- ttynl. display_list(X, 0) :- display(' '), !, display_list(X, 99999). display_list([Head|Tail], BeforeError) :- display_token(Head), ttyput(32), Left is BeforeError-1, !, display_list(Tail, Left). display_list([], _) :- ttynl. display_token(atom(X)) :- float(X),!,write_float(X). display_token(atom(X)) :- !,display(X). display_token(var(_,X)) :- !, display(X). display_token(integer(box(I,_))) :- !,display(I). display_token(string(Xs)) :- !,[Q]="""", det_append([Q|Xs],[Q],L), name(N,L),display(N). display_token(X):-display(X). % --------- rdtok.pl ---------------- % File : RDTOK.PL % Author : R.A.O'Keefe % Updated: 2 July 1984 % Purpose: Tokeniser in reasonably standard Prolog. /* This tokeniser is meant to complement the library READ routine. It recognises Dec-10 Prolog with the following exceptions: %( is not accepted as an alternative to { %) is not accepted as an alternative to ) NOLC convention is not supported (r_name could be made to do it) ,.. is not accepted as an alternative to | (hooray!) large integers are not read in as xwd(Top18Bits,Bottom18Bits) After a comma, "(" is read as '((' rather than '('. This does the parser no harm at all, and the Dec-10 tokeniser's behaviour here doesn't actually buy you anything. This tokeniser guarantees never to return '(' except immediately after an atom, yielding '((' every other where. In particular, radix notation is EXACTLY as in Dec-10 Prolog version 3.53. Some times might be of interest. Applied to an earlier version of this file: this code took 1.66 seconds the Dec-10 tokeniser took 1.28 seconds [DEC-10 assembler -Tim] A Pascal version took 0.96 seconds The Dec-10 tokeniser was called via the old RDTOK interface, with which this file is compatible. One reason for the difference in speed is the way variables are looked up: this code uses a linear list, while the Dec-10 tokeniser uses some sort of tree. The Pascal version is the program WLIST which lists "words" and their frequencies. It uses a hash table. Another difference is the way characters are classified: the Dec-10 tokeniser and WLIST have a table which maps ASCII codes to character classes, and don't do all this comparison and memberchking. We could do that without leaving standard Prolog, but what do you want from one evening's work? */ % read_tokens(TokenList, Dictionary) % returns a list of tokens. It is needed to "prime" r_toks/2 % with the initial blank, and to check for end of file. The % Dictionary is a list of AtomName=Variable pairs in no particular % order. The way end of file is handled is that everything else % FAILS when it hits character "-1", sometimes printing a warning. % It might have been an idea to return the atom 'end_of_file' % instead of the same token list that you'd have got from reading % "end_of_file. ", but (1) this file is for compatibility, and (b) % there are good practical reasons for wanting this behaviour. read_tokens(TokenList, Dictionary) :- r_toks(32, Dict, ListOfTokens), append(Dict, [], Dict), !, % fill in the "hole" at the end Dictionary = Dict, % unify explicitly so we'll read and TokenList = ListOfTokens. % then check even with filled in arguments read_tokens([atom(end_of_file)], []). % Eof is all that can go wrong r_toks(-1, _, _) :- !, % -1 is the end-of-file character fail. % in every standard Prolog r_toks(Ch, Dict, Tokens) :- Ch =< 32, % ignore layout. CR, LF, and the !, % Dec-10 newline character (31) get0(NextCh), % are all skipped here. r_toks(NextCh, Dict, Tokens). r_toks(37, Dict, Tokens) :- !, % %comment repeat, % skip characters to a line get0(Ch), is_terminator(Ch), !, % stop when we find one Ch =\= -1, % fail on EOF get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(47, Dict, Tokens) :- !, % /*comment? get0(NextCh), r_solidus(NextCh, Dict, Tokens). r_toks(33, Dict, [atom(!)|Tokens]) :- !, % This is a special case so get0(NextCh), % that !. reads as two tokens. r_after_atom(NextCh, Dict, Tokens). % It could be cleverer. r_toks(40, Dict, ['(('|Tokens]) :- !, % NB!!! get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(41, Dict, [')'|Tokens]) :- !, get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(44, Dict, [','|Tokens]) :- !, get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(59, Dict, [atom((;))|Tokens]) :- !, % ; is nearly a punctuation get0(NextCh), % mark but not quite (e.g. r_toks(NextCh, Dict, Tokens). % you can :-op declare it). r_toks(91, Dict, ['['|Tokens]) :- !, get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(93, Dict, [']'|Tokens]) :- !, get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(123, Dict, ['{'|Tokens]) :- !, get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(124, Dict, ['|'|Tokens]) :- !, get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(125, Dict, ['}'|Tokens]) :- !, get0(NextCh), r_toks(NextCh, Dict, Tokens). r_toks(46, Dict, Tokens) :- !, % full stop get0(NextCh), % or possibly .=. &c r_fullstop(NextCh, Dict, Tokens). r_toks(34, Dict, [string(S)|Tokens]) :- !, % "string" r_string(S, 34, NextCh), r_toks(NextCh, Dict, Tokens). r_toks(39, Dict, [atom(A)|Tokens]) :- !, % 'atom' r_string(S, 39, NextCh), name(A, S), % BUG: '0' = 0 unlike Dec-10 Prolog r_after_atom(NextCh, Dict, Tokens). r_toks(Ch, Dict, [var(Var,Name)|Tokens]) :- is_maj(Ch),!, % have to watch out for "_" r_name(Ch, S, NextCh), ( S = "_", Name = '_' % anonymous variable Var = _ ; S=[C|_], name(Name, S), % construct name r_lookup(Dict, C, Name, Var) % lookup/enter in dictionary ), !, r_toks(NextCh, Dict, Tokens). r_toks(Ch, Dict, Tokens) :- is_num(Ch),!, r_integer(Ch, I, NextCh,Digits), r_toks(NextCh, Dict, Tokens1), try_float(Digits,Tokens1,I,Tokens). r_toks(Ch, Dict, [atom(A)|Tokens]) :- is_min(Ch),!, r_name(Ch, S, NextCh), name(A, S), r_after_atom(NextCh, Dict, Tokens). r_toks(Ch, Dict, [atom(A)|Tokens]) :- % THIS MUST BE THE LAST CLAUSE get0(AnotherCh), r_symbol(AnotherCh, Chars, NextCh), % might read 0 chars name(A, [Ch|Chars]), % so might be [Ch] r_after_atom(NextCh, Dict, Tokens). % The only difference between r_after_atom(Ch, Dict, Tokens) and % r_toks/3 is what they do when Ch is "(". r_after_atom % finds the token to be '(', while r_toks finds the token to be % '(('. This is how the parser can tell whether must % be an operator application or an ordinary function symbol % application. See the library file READ.PL for details. r_after_atom(40, Dict, ['('|Tokens]) :- !, get0(NextCh), r_toks(NextCh, Dict, Tokens). r_after_atom(Ch, Dict, Tokens) :- r_toks(Ch, Dict, Tokens). % r_string(Chars, Quote, NextCh) % reads the body of a string delimited by Quote characters. % The result is a list of ASCII codes. There are two complications. % If we hit the end of the file inside the string this predicate % FAILS. It does not return any special structure. That is the % only reason it can ever fail. The other complication is that when % we find a Quote we have to look ahead one character in case it is % doubled. Note that if we find an end-of-file after the quote we % *don't* fail, we return a normal string and the end of file % character is returned as NextCh. If we were going to accept % C-like escape characters, as I think we should, this would need % changing (as would the code for 0'x). But the purpose of this % module is not to present my ideal syntax but to present something % which will read present-day Prolog programs. r_string(Chars, Quote, NextCh) :- get0(Ch), r_string(Ch, Chars, Quote, NextCh). r_string(-1, _, Quote, -1) :- display('! end of file in: '), ttyput(Quote), display(token), ttyput(Quote), ttynl, !, fail. r_string(Quote, Chars, Quote, NextCh) :- !, get0(Ch), % closing or doubled quote more_string(Ch, Quote, Chars, NextCh). r_string(Char, [Char|Chars], Quote, NextCh) :- r_string(Chars, Quote, NextCh). % ordinary character more_string(Quote, Quote, [Quote|Chars], NextCh) :- !, r_string(Chars, Quote, NextCh). % doubled quote more_string(NextCh, _, [], NextCh). % end % r_solidus(Ch, Dict, Tokens) % checks to see whether /Ch is a /* comment or a symbol. If the % former, it skips the comment. If the latter it just calls % r_symbol. We have to take great care with /* comments to % handle end of file inside a comment, which is why r_solidus/2 % passes back an end of file character or a (forged) blank that we % can give to r_toks. patch_slash(['(('|Xs],['('|Xs]):-!. % fixes bug with /\(a) -PT patch_slash(Xs,Xs). r_solidus(42, Dict, Tokens) :- !, % 42= '*' get0(Ch), r_solidus(Ch, NextCh), r_toks(NextCh, Dict, Tokens). r_solidus(Ch, Dict, [atom(A)|Tokens1]) :- r_symbol(Ch, Chars, NextCh), % might read 0 chars name(A, [47|Chars]), r_toks(NextCh, Dict, Tokens), patch_slash(Tokens,Tokens1). r_solidus(-1, -1) :- !, display('! end_of_file in /*.. comment'), ttynl. r_solidus(42, LastCh) :- get0(NextCh), NextCh =\= 47, !, % might be ^Z or * though r_solidus(NextCh, LastCh). r_solidus(42, 32) :- !. % the / was skipped in the previous clause r_solidus(_, LastCh) :- get0(NextCh), r_solidus(NextCh, LastCh). % r_name(Char, String, LastCh) % reads a sequence of letters, digits, and underscores, and returns % them as String. The first character which cannot join this sequence % is returned as LastCh. r_name(Char, [Char|Chars], LastCh) :- is_alpha_num(Char),!, get0(NextCh), r_name(NextCh, Chars, LastCh). r_name(LastCh, [], LastCh). % r_symbol(Ch, String, NextCh) % reads the other kind of atom which needs no quoting: one which is % a string of "symbol" characters. Note that it may accept 0 % characters, this happens when called from r_fullstop. r_symbol(Char, [Char|Chars], LastCh) :- is_spec(Char), get0(NextCh), r_symbol(NextCh, Chars, LastCh). r_symbol(LastCh, [], LastCh). % r_fullstop(Char, Dict, Tokens) % looks at the next character after a full stop. There are % three cases: % (a) the next character is an end of file. We treat this % as an unexpected end of file. The reason for this is % that we HAVE to handle end of file characters in this % module or they are gone forever; if we failed to check % for end of file here and just accepted . like . % the caller would have no way of detecting an end of file % and the next call would abort. % (b) the next character is a layout character. This is a % clause terminator. % (c) the next character is anything else. This is just an % ordinary symbol and we call r_symbol to process it. r_fullstop(-1, _, _) :- !, display('! end_of_file just after full_stop'), ttynl, fail. r_fullstop(Ch, _, []) :- Ch =< 32, !. % END OF CLAUSE r_fullstop(Ch, Dict, [atom(A)|Tokens]) :- r_symbol(Ch, S, NextCh), name(A, [46|S]), r_toks(NextCh, Dict, Tokens). % r_integer is complicated by having to understand radix notation. % There are three forms of integer: % 0 ' - the ASCII code for that character % ' - the digits, read in that base % - the digits, read in base 10. % Note that radix 16 is not understood, because 16 is two digits, % and that all the decimal digits are accepted in each base (this % is also true of C). So 2'89 = 25. I can't say I care for this, % but it does no great harm, and that's what Dec-10 Prolog does. % The X =\= -1 tests are to make sure we don't miss an end of file % character. The tokeniser really should be in C, not least to % make handling end of file characters bearable. If we hit an end % of file inside an integer, r_integer will fail. r_integer(BaseChar, IntVal, NextCh,Digits) :- Base is BaseChar - 48, get0(Ch), [Dot]=".", r_int(Ch, Base, IntVal, NextCh, Ds), Digits=[Dot,BaseChar|Ds]. /* % Paul Tarau - float like 0.0003 used to become 0.3 ( name(Name,Digits), errmes(number(Name),Digits)->true ; true ). */ r_int(-1,_, _, _, _):-!,fail. r_int(39, 0, IntVal, NextCh, [39,IntVal]):-!, get0(IntVal), IntVal =\= -1, get0(NextCh). r_int(39, Base, IntVal, NextCh, Ds):- r_digits(0, Base, IntVal, NextCh, Ds),!. r_int(Ch,Base,IntVal, NextCh, Ds):- r_digs(Ch, Base, 10, IntVal, NextCh ,Ds). r_digits(SoFar, Base, Value, NextCh, Ds) :- get0(Ch), Ch =\= -1, r_digs(Ch, SoFar, Base, Value, NextCh, Ds). r_digs(Digit, SoFar, Base, Value, NextCh, [Digit|Ds]) :- Digit >= 48, Digit =< 57,!, Temp is SoFar*Base, Temp1 is Temp-48, Next is Temp1+Digit, r_digits(Next, Base, Value, NextCh, Ds). r_digs(LastCh, Value, _, Value, LastCh, []). % r_lookup is identical to memberchk except for argument order and % mode declaration. r_lookup([var(Name,Var,Occ)|_], C, Name, Var) :- !,r_varcount(Occ,C). r_lookup([_|T], C, Name, Var) :- r_lookup(T, C, Name, Var). r_varcount(Occ,C):-[C]="_",!,Occ=s(1). r_varcount(Occ,_):-var(Occ),!,Occ=s(_). r_varcount(s(1),_). % added for speed: Paul Tarau, Jan 92 : to be done in C is_alpha_num(Char):- Char >= 97, Char =< 122. % a..z is_alpha_num(Char):- Char >= 65, Char =< 90. % A..Z is_alpha_num(Char):- Char >= 48, Char =< 57. % 0..9 is_alpha_num(95). is_alpha_num(Char):- is_latin1_min(Char). is_alpha_num(Char):- is_latin1_maj(Char). is_maj(Ch):- Ch >= 65, Ch =< 90. is_maj(95). is_maj(Ch):-is_latin1_maj(Ch). is_min(Char):- Char >= 97, Char =< 122. is_min(Char) :- is_latin1_min(Char). is_num(Char):- Char >= 48, Char =< 57. % support for latin1 - thanks to Ulrich Neumerkel is_latin1_maj(Ch) :- Ch >= 192, Ch =< 214. is_latin1_maj(Ch) :- Ch >= 216, Ch =< 222. is_latin1_min(Ch) :- Ch >= 223, Ch =< 246. is_latin1_min(Ch) :- Ch >= 248, Ch =< 255. is_terminator(10). is_terminator(13). is_terminator(-1). % Char is in "#$&*+-./:<=>?@\^`~" is_spec(35). is_spec(36). is_spec(38). is_spec(42). is_spec(43). is_spec(45). is_spec(46). is_spec(47). is_spec(58). is_spec(60). is_spec(61). is_spec(62). is_spec(63). is_spec(64). is_spec(92). is_spec(94). is_spec(96). is_spec(126). % neads also append/3 /* test_read(ok):-repeat,r_term(R,S),write(R-S),nl,R=end_of_file,!. */ BinProlog3.45/src/dcg.pl100644 764 764 17645 5764563070 14230 0ustar javierjavier % File : DCG.PL % Author : Richard A. OKeefe % Updated: Tuesday July 26th, 1988. % Purpose: Definite Clause Grammar rule to Prolog clause translator. /* This file is written in the ISO 8859/1 character set. The "Copyright" line contains after the right parenthesis a character which when transmitted was character 169, the international copyright symbol. Copyright (C)) 1988, Quintus Computer Systems, Inc. This file is distributed in the hope that it will be useful, but without any warrantee. You are expressly warned that it is meant to serve as a model, not for direct use: all error checking and reporting has been omitted, and mistakes are almost surely present. Permission is granted to anyone to distribute verbatim copies of this source code as received, in any medium, provided that the copyright notice, the nonwarrantee warning, and this permission notice are preserved. Permission is granted to distribute modified versions of this source code, or of portions of it, under the above conditions, plus the conditions that all changed files carry prominent notices stating who last changed them and that the derived material is subject to this same permission notice. Permission is granted to include this material in products for which money is charged, provided that the customer is given written notice that the code is (or is derived from) material provided by Quintus Computer Systems, Inc., and that the customer is given this source code on request. ---------------------------------------------------------------- Now that weve got that (adapted from the GNU copyright notice) out of the way, here are the technical comments. The predicates are all named dcg_/ in order to keep out of the way, with the exception of phrase/2 and phrase/3 which bear their proper names. Only phrase/[2,3] and dcg_rule/2 are meant to be called directly, and dcg_rule/2 is meant to be called from expand_term/2. You need to keep dcg_body/4 and its dependents around at run time so that variables as nonterminals in DCG rule bodies will work correctly. So that Quintus have _something_ left to sell, this code has been rewritten from scratch with no error checking or reporting code at all, and a couple of places accept general grammar rule bodies where they are really supposed to demand lists of terminals. However, any rule which is valid according to the Quintus Prolog manual will be translated correctly, except that this code makes no attempt to handle module: prefixes. (The change is trivial.) Note that dcg_rule/2 and phrase/[2,3] are steadfast. Minor modifications as BinProlog is not optimized for disjunction (a:-b;c) replaced in some places by a:-b. a:-c. by Paul Tarau. Using also term_append/3 instead of structure crunching. */ try_dcg_expansion(H,B,EC):-dcg_rule('-->'(H,B),EC),!. try_dcg_expansion(H,_,_):-errmes('dcg expansion error->',H). % dcg rule(+Grammar Rule, -Equivalent Clause) /* % old version : changed to push-back at the left of the body Paul Tarau dcg_rule(-->(Head0,Body0), Clause) :- dcg_head(Head0, Head, PushBack, S0, S), dcg_body(Body0, Body1, S0, S), dcg_conj(Body1, PushBack, Body), Clause = :-(Head,Body). */ dcg_rule(-->(Head,Body), Clause) :- dcg_head(Head, DCGHead, DCGPushBack, S0, S), dcg_body(Body, DCGBody1, S0, S), dcg_conj(DCGPushBack, DCGBody1, DCGBody), Clause = ':-'(DCGHead,DCGBody). % dcg head(+Head0, -Head, -PushBack, -S0, -S) % recognises both % NonTerminal, [PushBackList] --> % and % NonTerminal --> % It returns the difference pair S0\S which the body is to parse. % To avoid error checking, it will accept an arbitrary body in place % of a pushback list, but it should demand a proper list. dcg_head((Head0 @@ Cont0), (Head @@ Cont), true, S0, S2) :- !, dcg_body(Head0,Head,S0,S1), dcg_body(Cont0,Cont,S1,S2). dcg_head(Head0, Head, true, S0, S) :- dcg_goal(Head0, Head, S0, S). dcg_head((Head0,PushBack0), Head, PushBack, S0, S1) :- !, dcg_goal(Head0, Head, S0, S), dcg_body(PushBack0, PushBack, S, S1). dcg_head(Head0, Head, true, S0, S) :- dcg_goal(Head0, Head, S0, S). /* this seems redundant... Paul Tarau dcg_head(Head0, Head, true, S0, S) :- dcg_body(Head0, Head, S0, S). */ % dcg goal(+Goal0, -Goal, +S0, +S) % adds the arguments S0, S at the end of Goal0, giving Goal. % It should check that Goal0 is a callable term. dcg_goal(Goal0, Goal, S0, S) :- term_append(Goal0,S0+S,Goal). % dcg_body(+Body0, -Body, +S0, +S) % translates Body0 to Body, adding arguments as needed to parse S0\S. % It should complain about bodies (such as 2) which are not callable % terms, and about lists of terminals which are not proper lists. % To avoid error checking, [a|foo] is accepted as [a],foo, but it % really should complain. ONLY the forms lists here should be treated; % other non-terminals which look like calls to built-ins could well be % commented on (no error reporting here) but should be expanded even % so. Thus X=Y as a nonterminal is to be rewritten as =(X,Y,S0,S), % perhaps with a warning. If you want the translation X=Y, use {X=Y}. dcg_body(Var, Body, S0, S) :- var(Var), !, Body = phrase(Var,S0,S). dcg_body((A0,B0), Body, S0, S) :- !, dcg_body(A0, A, S0, S1), dcg_body(B0, B, S1, S), dcg_conj(A, B, Body). dcg_body((A0->B0), (A->B), S0, S) :- !, dcg_body(A0, A, S0, S1), dcg_body(B0, B, S1, S). dcg_body((A0;B0), (A;B), S0, S) :- !, dcg_disj(A0, A, S0, S), dcg_disj(B0, B, S0, S). dcg_body({A}, A, S, S) :- !. dcg_body(!, !, S, S) :- !. dcg_body([], true, S, S) :- !. dcg_body([H0|T0], Body, S0, S) :- !, dcg_term(H0, H, S0, S1), dcg_body(T0, T, S1, S), dcg_conj(H, T, Body). dcg_body(NT0, NT, S0, S) :- dcg_goal(NT0, NT, S0, S). % dcg_term(+T0, -T, +S0, +S) % generates code (T) which succeeds when there is a terminal T0 % between S0 and S. This version uses the DEC-10 Prolog predicate % C/3 for compatibility with DEC-10 Prolog, C Prolog, Quintus Prolog. % This is the only place that knows how terminals are translated, so % you could supply instead the definition % dcg_term(T0, S0=[T0|S], S0, S). % and reap the same benefits. The one thing you must not do is % NO! dcg_term(T0, true, [T0|S], S). DONT DO THAT! dcg_term(T0, 'C'(S0,T0,S), S0, S). % To see why dcg disj/4 is needed, consider the translation of % ( [] | [a] ). We have to insert S1=S0 somewhere, but we do it at % "compile"-time if we can. dcg_disj(Body0, Body, S0, S) :- dcg_body(Body0, Body1, S1, S), dcg_disj0(S0,S1,S,Body1,Body). dcg_disj0(S0,S1,S,Body1,Body):-S1==S,!,dcg_conj(S1=S0, Body1, Body). dcg_disj0(S0,S0,_,Body,Body). % dcg_conj(+A, +B, -C) % combines two conjunctions A, B, giving C. Basically, we want to % ensure that there arent any excess trues kicking around (in a % compiled system, that shouldnt matter). There is room for some % leeway here: I have chosen to flatten A completely. dcg_conj(A, true, A) :- !. dcg_conj(A, B, C) :- dcg_CONJ(A, B, C). dcg_CONJ(true, C, C) :- !. dcg_CONJ((A,As), C0, (A,C)) :- !, dcg_CONJ(As, C0, C). dcg_CONJ(A, C, (A,C)). % 'C'(S0, T, S) % is true when the terminal T "Connects" the "string positions" S0 and S. 'C'([T|S], T, S). % phrase(+NT0, ?S0) % is true when the list S0 is in the language defined by the % grammar rule body NT0. E.g. phrase(([a],[b]), [a,b]). phrase(NT0, S0) :- phrase(NT0, S0, []). % phrase(+NT0, ?S0, ?S) % is true when the list S0\S is in the language defined by the % grammar rule body NT0. E.g. phrase(([a],[b]), [a,b|X], X). phrase(NT0, S0, S) :- dcg_body(NT0, NT, T0, T), T0 = S0, T = S, NT. portable_expand_term('-->'(H,B),EC):-!,try_dcg_expansion(H,B,EC). portable_expand_term('-->>'(H,B),EC):-!, G=try_edcg_expansion(H,B,EC), call_ifdef(G,errmes(expected_to_expand,G)). % add other fancy term_expansion/2 predicates here (see: '-->>' in edcg.pl) portable_expand_term(C,C). BinProlog3.45/src/write.pl100644 764 764 21112 5764563070 14605 0ustar javierjavier% File : WRITE.PL % Author : Richard A. O'Keefe. % Updated: 22 October 1984 % Purpose: Portable definition of write/1 and friends. /* minor changes: Paul Tarau 1992 - uses cwrite (written in C) for simple things - disconects unimplemented current_... predicates - minor change by replacing (strange) l_magic with l_magic_nl - removed code not used in BinProlog */ portable_display(Term) :- w_out(Term, display). portable_print(Term) :- w_out(Term, print). portable_write(Term) :- w_out(Term, write). portable_writeq(Term) :- w_out(Term, writeq). w_out(Term,Mode):-w_out(Term, Mode, 1200, punct,_),fail. w_out(_,_). % maybe_paren(P, Prio, Char, Ci, Co) % writes a parenthesis if the context demands it. maybe_paren(P, Prio, Char, _, punct) :- P > Prio, !, put(Char). maybe_paren(_, _, _, C, C). % maybe_space(LeftContext, TypeOfToken) % generates spaces as needed to ensure that two successive % tokens won't run into each other. maybe_space(punct, _) :- !. maybe_space(X, X) :- !, put(32). maybe_space(quote, alpha) :- !, put(32). maybe_space(_, _). % put_string(S) % writes a list of character codes. put_string([]). put_string([H|T]) :- put(H), put_string(T). % put_string(S, Q) % writes a quoted list of character codes, where the first % quote has already been written. Instances of Q in S are doubled. put_string([], Q) :- put(Q). put_string([Q|T], Q) :- !, put(Q), put(Q), put_string(T, Q). put_string([H|T], Q) :- put(H), put_string(T, Q). % w_variable(V) % is system dependent. This just uses whatever Prolog supplies. w_variable(V) :- cwrite(V). portray(T):-write(T). % w_out(Term, Style, Priority, Ci, Co) % writes out a Term in a given Style (display,write,writeq,print) % in a context of priority Priority (that is, operators with % greater priority have to be quoted), where the last token to be % written was of type Ci, and reports that the last token it wrote % was of type Co. w_out(Term, _, _, Ci, alpha) :- var(Term), !, maybe_space(Ci, alpha), w_variable(Term). w_out('$VAR'(N), Style, _, Ci, Co) :- !, w_VAR(N, Style, Ci, Co). w_out(N, _, _, Ci, alpha) :- integer(N), ( N < 0, maybe_space(Ci, other) ; maybe_space(Ci, alpha) ), !, cwrite(N). w_out(Term, print, _, _Ci , alpha) :- portray(Term), !. w_out(Atom, Style, Prio, _, punct) :- atom(Atom), current_op(P, _, Atom), P > Prio, !, put(40), ( Style = writeq, w_atom(Atom, Style, punct, _) ; cwrite(Atom) ), !, put(41). w_out(Atom, Style, _, Ci, Co) :- atom(Atom), !, w_atom(Atom, Style, Ci, Co). w_out(Term, display, _, Ci, punct) :- !, functor(Term, Fsymbol, Arity), w_atom(Fsymbol, display, Ci, _), w_args(0, Arity, Term, 40, display). w_out({Term}, Style, _, _, punct) :- !, put(123), w_out(Term, Style, 1200, punct, _), put(125). w_out([Head|Tail], Style, _, _, punct) :- !, put(91), w_out(Head, Style, 999, punct, _), w_tail(Tail, Style). w_out((A,B), Style, Prio, Ci, Co) :- !, % This clause stops writeq quoting commas. maybe_paren(1000, Prio, 40, Ci, C1), w_out(A, Style, 999, C1, _), put(44), w_out(B, Style, 1000, punct, C2), maybe_paren(1000, Prio, 41, C2, Co). w_out(N, _, _, Ci, alpha) :- float(N), ( N < 0,maybe_space(Ci, other) ; maybe_space(Ci, alpha) ), !, write_float(N). w_out(Term, Style, Prio, Ci, Co) :- functor(Term, F, N), w_out(N, F, Term, Style, Prio, Ci, Co). w_out(1, F, Term, Style, Prio, Ci, Co) :- ( current_op(O, fx, F), P is O-1 ; current_op(O, fy, F), P = O ), !, maybe_paren(O, Prio, 40, Ci, C1), w_atom(F, Style, C1, C2), arg(1, Term, A), w_out(A, Style, P, C2, C3), maybe_paren(O, Prio, 41, C3, Co). w_out(1, F, Term, Style, Prio, Ci, Co) :- ( current_op(O, xf, F), P is O-1 ; current_op(O, yf, F), P = O ), !, maybe_paren(O, Prio, 40, Ci, C1), arg(1, Term, A), w_out(A, Style, P, C1, C2), w_atom(F, Style, C2, C3), maybe_paren(O, Prio, 41, C3, Co). w_out(2, F, Term, Style, Prio, Ci, Co) :- ( current_op(O, xfy, F), P is O-1, Q = O ; current_op(O, xfx, F), P is O-1, Q = P ; current_op(O, yfx, F), Q is O-1, P = O ), !, maybe_paren(O, Prio, 40, Ci, C1), arg(1, Term, A), w_out(A, Style, P, C1, C2), w_oper(F, O, Style, C2, C3), arg(2, Term, B), w_out(B, Style, Q, C3, C4), maybe_paren(O, Prio, 41, C4, Co). w_out(N, F, Term, Style, _Prio, Ci, punct) :- w_atom(F, Style, Ci, _), w_args(0, N, Term, 40, Style). w_oper(Op, Prio, Style, Ci, Co) :- Prio < 700, !, w_atom(Op, Style, Ci, Co). w_oper(Op, _, Style, _Ci, punct) :- put(32), w_atom(Op, Style, punct, _), put(32). w_VAR(N, _Style, Ci, alpha) :- integer(N), N >= 0, !, maybe_space(Ci, alpha), Temp is N mod 26, Letter is Temp + 65, % $$$ put(Letter), ( N < 26 ; Rest is N//26, cwrite(Rest) ), !. w_VAR(A, _Style, Ci, Co) :- atom(A), !, w_atom(A, write, Ci, Co). w_VAR(X, Style, Ci, punct) :- w_atom('$VAR', Style, Ci, _), w_args(0, 1, '$VAR'(X), 40, Style). w_atom(('!'), _, _, punct) :- !, put(33). w_atom((';'), _, _, punct) :- !, put(59). w_atom([], _, _, punct) :- !, put(91), put(93). w_atom('{}', _, _, punct) :- !, put(123), put(125). w_atom('.', writeq, _, quote):-!,put_string("'.'"). w_atom(Atom, Style, Ci, Co) :- name(Atom, String), ( classify_name(String, Co), maybe_space(Ci, Co), put_string(String) ; Style = writeq, Co = quote, maybe_space(Ci, Co), put(39), put_string(String, 39) ; Co = alpha, put_string(String) ), !. % classify_name(String, Co) % says whether a String is an alphabetic identifier starting % with a lower case letter (Co=alpha) or a string of symbol characters % like ++/=? (Co=other). If it is neither of these, it fails. That % means that the name needs quoting. The special atoms ! ; [] {} are % handled directly in w_atom. In a basic Prolog system with no % way of changing the character classes this information can be % calculated when an atom is created, and just looked up. This has to % be as fast as you can make it. /* Paul Tarau -> defined in read.pl: is_min, etc. */ classify_name([H|T], alpha) :- is_min(H), !, classify_alpha_tail(T). classify_name([H|T], other) :- is_spec(H), classify_other_tail(T). classify_alpha_tail([]). classify_alpha_tail([H|T]) :- is_alpha_num(H), classify_alpha_tail(T). classify_other_tail([]). classify_other_tail([H|T]) :- is_spec(H), classify_other_tail(T). % w_args(DoneSoFar, Arity, Term, Separator, Style) % writes the remaining arguments of a Term with Arity arguments % all told in Style, given that DoneSoFar have already been written. % Separator is 0'( initially and later 0', . w_args(N, N, _, _, _) :- !, put(41). w_args(I, N, Term, C, Style) :- put(C), J is I+1, arg(J, Term, A), w_out(A, Style, 999, punct, _), w_args(J, N, Term, 44, Style). % w_tail(Tail, Style) % writes the tail of a list of a given style. w_tail(Var, _) :- % |var] var(Var), !, put(124), w_variable(Var), put(93). w_tail([], _) :- !, % ] put(93). w_tail([Head|Tail], Style) :- !, % ,Head tail put(44), w_out(Head, Style, 999, punct, _), w_tail(Tail, Style). w_tail(Other, Style) :- % |junk] put(124), w_out(Other, Style, 999, punct, _), put(93). pp_term(T):-numbervars(T,0,_),write(T),nl,fail. pp_term(_). pp_clause(C):-portray_clause(C). portray_clause(C):-pp_clause0(C),fail. portray_clause(_). pp_clause0(:-(Body)) :- !, nl, numbervars(Body, 0, _), l_clauses(Body, 0, 2, 8). % 0!='' in sicstus,sb.. pp_clause0((Pred:-Body)) :- numbervars(Pred+Body, 0, _), portable_writeq(Pred), l_clauses(Body, 0, 2, 8), !. pp_clause0((Pred)) :- pp_clause0((Pred:-true)). l_clauses((A,B), L, R, D) :- !, l_clauses(A, L, 1, D), !, l_clauses(B, 1, R, D). l_clauses(true, _, 2, _) :- !,[P]=".", put(P), nl. l_clauses((A;B), L, R, D) :- !, l_magic(fail, L, D), l_magic((A;B), 0, 2, D), l_magic_nl(R, '.'). l_clauses((A->B), L, R, D) :- !, l_clauses(A, L, 5, D), !, l_clauses(B, 5, R, D). l_clauses(Goal, L, R, D) :- l_magic(Goal, L, D), portable_writeq(Goal), l_magic_nl(R,'.'). l_magic(!, 0, _) :- !,cwrite(' :- '). l_magic(!, 1, _) :- !,cwrite(', '). l_magic(_, 0, D) :- !, cwrite(' :- '), nl, tab(D). l_magic(_Goal, 1, D) :- !, [Char]=",", put(Char), nl, tab(D). l_magic(_, 3, _) :- !,cwrite('( '). l_magic(_, 4, _) :- !, cwrite('; '). l_magic(_, 5, D) :- !, cwrite(' ->'), nl, tab(D). l_magic(_, Key, D) :- atom(Key), cwrite((':- ')), cwrite(Key), nl, tab(D). l_magic_nl(2, C) :- !, cwrite(C),nl. l_magic_nl(_, _). l_magic((A;B), L, R, D) :- !, l_magic(A, L, 1, D), !, l_magic(B, 1, R, D). l_magic(Conj, L, R, D) :- E is D+8, M is L+3, l_clauses(Conj, M, 1, E), nl, tab(D), l_magic2(R, ')' ). l_magic2(2, C) :- !, cwrite(C). l_magic2(_, _). BinProlog3.45/src/extra.pl100644 764 764 62002 5764563070 14601 0ustar javierjavier% ------------------------------------------------------------------------- % File : INTERP % Author : R.A.O'Keefe % Updated: 2 March 84 % Purpose: Meta-circular interpreter for Prolog /* This is a genuinely meta-circular interpreter for a subset of Prolog containing cuts. It relies on the fact that disjunction is transparent to cut just like conjunction. If it doesn't work in your Prolog, and if you paid more than $100 for it, take your Prolog back to the shop and insist that they fix it, there are at least four different ways of implementing disjunction so that it works. */ /* R.A. O'Keefe's meta-circular interpreter */ /* slightly modified by Paul Tarau */ meta_interpreter(Body):-do_body(Body). do_body(Body):-var(Body),!,user_error(unbound_goal,Body). do_body(Body) :- do_body(Body, AfterCut, HadCut), ( HadCut = yes, !, do_body(AfterCut) ; HadCut = no ). do_compiled(call(Goal)) :- !, nonvar(Goal), do_body(Goal). do_compiled(\+(Goal)) :- do_body(Goal), !, fail. do_compiled(\+(_)) :- !. do_compiled(bagof(X,Y,Z)) :- !, bagof(X, do_body(Y), Z). do_compiled(setof(X,Y,Z)) :- !, setof(X, do_body(Y), Z). do_compiled(findall(X,Y,Z)) :- !, findall(X, do_body(Y), Z). do_compiled(Goal):-Goal. do_goal(Goal) :- spying(Goal),!, spy_goal(Goal). do_goal(Goal) :- is_assumed(Goal), !, assumed_clause(Goal, Body), % <--- assume anything else is interpreted do_body(Body, AfterCut, HadCut), ( HadCut = yes, !, do_body(AfterCut) ; HadCut = no ). do_goal(Goal) :- is_dynamic(Goal), !, clause(Goal, Body), % <--- assume anything else is interpreted do_body(Body, AfterCut, HadCut), ( HadCut = yes, !, do_body(AfterCut) ; HadCut = no ). do_goal(Goal) :- is_compiled(Goal), % <--- check for a compiled predicate !, do_compiled(Goal). do_goal(G):-functor(G,call,_),!, do_apply(G,Goal), do_goal(Goal). do_goal(Undef):-do_undef(Undef). do_undef(Undef):- functor(Undef,F,N), errmes(undefined_predicate=F/N,culprit=Undef). /* do_undef(Undef) @@ Cont:- functor(Undef,F,N), functor(Cont,G,_),Goal=..[G,'...'], errmes(undefined_predicate=F/N,continuation=Goal). */ do_apply(G,Goal):- G=..[_,Closure|Args], Closure=..L1,det_append(L1,Args,L2), Goal=..L2. do_body((Goal,Body), AfterCut, HadCut):-!, do_conj(Goal,Body, AfterCut, HadCut). do_body((Goal;Body), AfterCut, HadCut):-!, do_disj(Goal,Body, AfterCut, HadCut). do_body(!, true, yes). do_body(Goal, true, no) :- do_goal(Goal). do_conj(!,AfterCut, AfterCut, yes) :- !. do_conj(Goal,Body, AfterCut, HadCut) :- do_body(Goal), do_body(Body, AfterCut, HadCut). do_disj((If->Then),Else, AfterCut, HadCut) :-!, do_if_then_else(If,Then,Else, AfterCut, HadCut). do_disj(Disj1,Disj2, AfterCut, HadCut) :- do_disj0(Disj1,Disj2, AfterCut, HadCut). do_if_then_else(If,Then,_, AfterCut, HadCut) :- do_body(If),!, do_body(Then, AfterCut, HadCut). do_if_then_else(_,_,Else, AfterCut, HadCut) :- do_body(Else, AfterCut, HadCut). do_disj0(Disj1,_, AfterCut, HadCut) :- do_body(Disj1, AfterCut, HadCut). do_disj0(_,Disj2, AfterCut, HadCut) :- do_body(Disj2, AfterCut, HadCut). trace(Goal) :- tr_body(Goal, 0). tr_body(Body,_):-var(Body),!,user_error(unbound_goal,Body). tr_body(Body, Depth) :- tr_body(Body, Depth, AfterCut, HadCut), ( HadCut = yes, !, tab(Depth), write('CUT'), nl, tr_body(AfterCut, Depth) ; HadCut = no ). tr_body((Conj1,Conj2), Depth, AfterCut, HadCut) :- !, tr_body(Conj1, Conj2, Depth, AfterCut, HadCut). tr_body(!, _, true, yes) :- !. tr_body((Disj1;Disj2), Depth, AfterCut, HadCut) :-!, tr_disj1(Disj1, Disj2, Depth, AfterCut, HadCut). tr_body(true, _, true, no) :- !. tr_body(Goal, Depth, true, no) :- tr_goal(Goal, Depth). tr_disj1((If->Then),Else, Depth, AfterCut, HadCut):-!, tr_if1(If,Then, Else, Depth, AfterCut, HadCut). tr_disj1(Disj1,_, Depth, AfterCut, HadCut):- tr_body(Disj1, Depth, AfterCut, HadCut). tr_disj1(_,Disj2, Depth, AfterCut, HadCut) :- tr_body(Disj2, Depth, AfterCut, HadCut). tr_if1(If,Then, Else, Depth, AfterCut, HadCut):- do_body(If)->tr_body(Then, Depth, AfterCut, HadCut) ; tr_body(Else, Depth, AfterCut, HadCut). tr_body(!, AfterCut, _, AfterCut, yes) :- !. tr_body((A,B), Conj, Depth, AfterCut, HadCut) :- !, tr_body(A, (B,Conj), Depth, AfterCut, HadCut). tr_body((Disj1;Disj2), Conj, Depth, AfterCut, HadCut) :- !, tr_disj2(Disj1,Disj2, Conj, Depth, AfterCut, HadCut). tr_body(true, Body, Depth, AfterCut, HadCut) :- !, tr_body(Body, Depth, AfterCut, HadCut). tr_body(Goal, Body, Depth, AfterCut, HadCut) :- tr_goal(Goal, Depth), tr_body(Body, Depth, AfterCut, HadCut). tr_disj2((If->Then),Else, Conj, Depth, AfterCut, HadCut) :-!, tr_if2(If,Then, Else, Conj, Depth, AfterCut, HadCut). tr_disj2(Disj1,_, Conj, Depth, AfterCut, HadCut) :- tr_body(Disj1, Conj, Depth, AfterCut, HadCut). tr_disj2(_,Disj2, Conj, Depth, AfterCut, HadCut) :- tr_body(Disj2, Conj, Depth, AfterCut, HadCut). tr_if2(If,Then, Else, Conj, Depth, AfterCut, HadCut):- do_body(If)->tr_body(Then, Conj, Depth, AfterCut, HadCut) ; tr_body(Else, Conj, Depth, AfterCut, HadCut). tr_goal(call(Goal), Depth) :- !,tr_body(Goal, Depth). tr_goal(\+(Goal), Depth) :- tr_body(Goal, Depth), !, fail. tr_goal(\+(_), _) :- !. tr_goal(Goal, Depth) :- ( tab(Depth), write('Call: '), print(Goal), fail ; is_interactive, write(' : '), fail ; true ), ( is_interactive->get0(X),(X=:=10->true;get0(_)) ; X=32,nl ), ( X=:=10,\+ spying(Goal)->metacall(Goal) ; Depth1 is 1+Depth,tr_call(Goal, Depth1) ), ( tab(Depth), write('Exit: '), print(Goal), nl, fail ; true ; tab(Depth), write('Redo: '), print(Goal), nl, fail ) ; tab(Depth), write('Fail: '), print(Goal), nl, fail. tr_call(bagof(X,Y,Z), Depth) :- !, % include these 4 lines if you bagof(X, tr_body(Y,Depth), Z). % really want them, but they do tr_call(setof(X,Y,Z), Depth) :- !, % slow things down a bit. setof(X, tr_body(Y,Depth), Z). tr_call(findall(X,Y,Z), Depth) :- !, findall(X, tr_body(Y,Depth), Z). tr_call(Goal, Depth) :- is_assumed(Goal),!, tab(Depth),functor(Goal,F,N),write('!!! assumed'(F/N)),nl, assumed_clause(Goal, Body), tr_body(Body, Depth, AfterCut, HadCut), ( HadCut = yes, !, tab(Depth), write('CUT'), nl, tr_body(AfterCut, Depth) ; HadCut = no ). tr_call(Goal, Depth) :- is_dynamic(Goal),!, tab(Depth),functor(Goal,F,N),write('!!! dynamic'(F/N)),nl, clause(Goal, Body), tr_body(Body, Depth, AfterCut, HadCut), ( HadCut = yes, !, tab(Depth), write('CUT'), nl, tr_body(AfterCut, Depth) ; HadCut = no ). tr_call(Goal, Depth) :- is_compiled(Goal), % <--- checks for compiled predicate !, tab(Depth),functor(Goal,F,N),write('!!! compiled'(F/N)),nl, Goal. tr_call(G, Depth):-functor(G,call,_),!, do_apply(G,Goal), tr_call(Goal,Depth). tr_call(Undef):-do_undef(Undef). /* dynamic/1, assert/1 & retract/1 predicates This is an approximation of other Prologs assert & retract predicates. For efficiency and programming style reasons we strongly suggest not to use them too much. If you want maximal efficiency use bb_def/3 bb_set/3 bb_val/3 and lval/3. They give you acces to a very fast hashing table --> value, the same that BinProlog uses internally for indexing by predicate and first argument. Lval/3 (i,i,?) introduces named global logical variables. A friendlier syntax (with no extra cost) is Key1#Key2:=:Var ...for lval(Key1,Key2,Var) and Key:=:Var ...for lval(Key,Key,Var) Beware that assert & retract are not optimized for large databases or frequent use of an asserted predicate. To have dynamic predicates in a compiled file you must declare them as such with dynamic/1. All predicated in a consulted file are dynamic. Dynamic code overrides compiled code and is in turn overriden by assumed (backtrackable) code. */ dynamic(Ps):-make_dynamic(Ps),fail. dynamic(_). make_dynamic((P1,P2)):-!,make_dynamic(P1),make_dynamic(P2). make_dynamic(P/N):- functor(T,P,N), check_dynamic(T,P/N), define_dynamic(T). check_dynamic(T,PN):-is_compiled(T),!, write('WARNING: dynamic code will shadow compiled predicate'(PN)),nl. check_dynamic(T,PN):-is_assumed(T),!, errmes('dynamic code would shadow assumed predicate',PN). check_dynamic(_,_). define_dynamic(Pred):-bb_def(Pred,'$first',0),bb_def(Pred,'$last',0). ensure_dynamic(H):-is_dynamic(H),!. ensure_dynamic(H):-functor(H,P,N),make_dynamic(P/N). add_clause(AZ,Inc,H,B):-add_clause0(AZ,Inc,H,B),!. add_clause(AZ,Inc,H,B):-ensure_dynamic(H),add_clause0(AZ,Inc,H,B),!. add_clause(_,_,H,B):-errmes('unable to assert clause',(H:-B)). add_clause0(AZ,Inc,H,B):- val(H,AZ,V), val(H,V,_), !, V1 is V+Inc, bb_def(H,V1,(H:-B)), set(H,AZ,V1). add_clause0(AZ,_Inc,H,B):- val(H,AZ,V), bb_def(H,V,(H:-B)). asserta(C):- add_true(C,(H:-B)), add_clause('$first',-1,H,B). assertz(C):- add_true(C,(H:-B)), add_clause('$last',1,H,B). assert(C):-assertz(C). assert_it(end_of_file):-!. assert_it(C):-assertz(C). retract(C0):- add_true(C0,C),C=(H:-B), clause0(H,B,I), erase0(H,I). retractall(C0):- add_true(C0,(H:-_)), val(H,'$first',Min), val(H,'$last',Max), for(I,Min,Max), val(H,I,_), erase0(H,I), fail. retractall(_). collect_slot(H,Min):- val(H,'$first',Min), val(H,'$last',Max), MinG :- assume(intuitionistic(Scope),C), % reusable metacall(G), Scope='$closed'. % linear implication (C-:G) :- assume(linear(Scope,_Use),C), % usable_once metacall(G), Scope='$closed'. add_hint_ll(Hint,C,H,clause(Hint,HB)):- HB=(H:-_), add_true(C,HB). % semantics: Clause implies the current continuation, i.e. % it will be true until the end (success or failure) % of the current resolution branch. % Depending on the type of implication get 2 versions of assume: % intuitionistic: assume_ll(intuitionistic(_),Clause,Cont)::-Clause=>Cont. % linear: assume_ll(linear(_,_),Clause,Cont)::- Clause-:Cont. assumel(X):-assume(linear(_,_),X). assumei(X):-assume(intuitionistic(_),X). assume(_,C):-var(C),!,errmes(error_in_assume,bad_clause(C)). assume(Hint,C):-assume1(Hint,C). assume1(Hint,[F]):-!,assume_file(Hint,F). assume1(Hint,C):-assume_ll(Hint,C). assume_ll(Hint,C):- add_hint_ll(Hint,C,H,NewC), lval('$assumed',H,Cs), assume_with_hint_ll(Cs,NewC). assume_with_hint_ll(Cs,NewC):-nonvar(Cs),!, insert_ll(NewC,Cs). assume_with_hint_ll([NewC],NewC). assumed(H):-assumed_clause(H,B),B. assumed_clause(H,B):-assumed_clause(H,B,_). assumed_clause(H,B,Hint):- val('$assumed',H,Cs),nonvar(Cs), get_assumed_clause(H,Cs,B,Hint). get_assumed_clause(G,[clause(Hint,HB)|_],B,Hint):- copy_or_delete_ll(Hint,G,HB,B). get_assumed_clause(G,[_|Ys],B,Hint):- get_assumed_clause(G,Ys,B,Hint). copy_or_delete_ll(linear(Scope,Use),H,(H:-B),B):- var(Scope),var(Use), Use='$used'. copy_or_delete_ll(intuitionistic(Scope),G,HB,B):- var(Scope), copy_term(HB,(G:-B)). insert_ll(X,Xs):-Xs=[_],!,setarg(2,Xs,[X]). insert_ll(X,[_|Xs]):-insert_ll(X,Xs). % linear and intuitionistic file operations assume_file(Hint,F):- find_file(F,InFile), seeing(F0),see(InFile), assume_all(Hint), seen,see(F0). assume_all(Hint):- gc_read_clause(C), assume_all0(C,Hint). assume_all0(end_of_file,_):-!. assume_all0(C,Hint):- assume_one(C,Hint), gc_read_clause(NewC), % ttyprint('.'), assume_all0(NewC,Hint). assume_one(':-'([F]),Hint):-!,assume_file(Hint,F). assume_one(':-'(G),_):-!,(consult_cmd(G)->true;true). assume_one(C,Hint):-assume_ll(Hint,C). % Blackboard related utilities % bboard visualisation bb_element(P/N+F/K=V,[P,N,F,K,V|_]). bb_element(D,[_,_,_,_,_|L]):-bb_element(D,L). bb_list(L):-bb_list0(3,0,L). % lists for arity >= 0 bb:-bb(unsorted). bb(How):- statistics(bboard,X),write(bboard-X),nl, bb_list(L), ( How\==sorted->findall(E,bb_element(E,L),Es),sort(Es,Bs) ; Bs=L ), member(B,Bs),bb_orig(B,B0), write(B0),nl, fail ; nl. bb_orig(K1/N1+K2/N2=_,K1/N1+K2/N2=V):- functor(T1,K1,N1), functor(T2,K2,N2), ( val(T1,T2,V) ; lval(T1,T2,V) ),!. /*******************************************************************/ % sort, adapted from public domain code written by R.A. O'Keefe % use merge_sort(<,_,_) if you do not want duplications eliminated % use merge_sort(>,_,_) for descending order sort(L1,L2):-merge_sort(<,L1,DupL),remdup(DupL,L2). remdup([],[]). remdup([X,Y|Xs],Ys):-compare(=,X,Y),!,remdup([X|Xs],Ys). remdup([X|Xs],[X|Ys]):-remdup(Xs,Ys). merge_sort(Rel, L,S ):- length(L,N), merge_sort1(N, Rel, L,S,[] ). merge_sort1( 0,_,L,[],L ):-!. merge_sort1( 1,_,[X|L],[X],L ):-!. merge_sort1( N,Rel,L,S,R ):- % N >= 2 N1 is N >> 1, N2 is N-N1, merge_sort1( N1,Rel,L,S1,R1), merge_sort1( N2,Rel,R1,S2,R), merge_2( S2,Rel,S1,S ). merge_2([],_,S,S ):-!. merge_2([X|L1],Rel,[Y|L2],[X|L] ):-compare(Rel,X,Y),!, merge_2(L1,Rel,[Y|L2],L ). merge_2(L1,Rel,[Y|L2],[Y|L] ):- merge_2(L2,Rel,L1,L ). % Keysorting. Adapted by Mats Carlsson from R.O'Keefe's code, % but uses recursion instead of an auxiliary stack. % Takes care to check validity of arguments. % Could be speed up if there were an inline keycompare/3. ksort(List, Sorted) :- keysort(List, -1, S, []), !, Sorted = S. ksort(X, Y):-user_error('illegal_arguments',keysort(X,Y)). keysort([Head|Tail], Lim, Sorted, Rest) :- !, nonvar(Head), Head = _-_, Qh = [Head|_], samkeyrun(Tail, Qh, Qh, Run, Rest0), keysort(Rest0, 1, Lim, Run, Sorted, Rest). keysort(Rest, _, [], Rest). keysort([Head|Tail], J, Lim, Run0, Sorted, Rest) :- J =\= Lim, !, nonvar(Head), Head = _-_, Qh = [Head|_], samkeyrun(Tail, Qh, Qh, Run1, Rest0), keysort(Rest0, 1, J, Run1, Run2, Rest1), keymerge(Run0, Run2, Run), K is J+J, keysort(Rest1, K, Lim, Run, Sorted, Rest). keysort(Rest, _, _, Sorted, Sorted, Rest). samkeyrun([Hd|Tail], QH, QT, Run, Rest) :- nonvar(Hd), Hd = H-_, QT = [Q-_|QT2], Q @=< H, !, QT2 = [Hd|_], samkeyrun(Tail, QH, QT2, Run, Rest). samkeyrun([Hd|Tail], QH, QT, Run, Rest) :- nonvar(Hd), Hd = H-_, QH = [Q-_|_], H @< Q, !, samkeyrun(Tail, [Hd|QH], QT, Run, Rest). samkeyrun(Rest, Run, [_], Run, Rest). % keymerge(+List, +List, -List). keymerge([], L2, Out) :- !, Out = L2. keymerge([H1|T1], L2, Out) :- L2 = [K2-_|_], H1 = K1-_, K1 @=< K2, !, Out = [H1|Out1], keymerge(T1, L2, Out1). keymerge(L1, [H2|L2], Out) :- !, Out = [H2|Out1], keymerge(L1, L2, Out1). keymerge(List, _, List). % -------------------- --------------------- % File : SETOF.PL % Author : R.A.O'Keefe % Updated: 17 November 1983 % Purpose: define setof/3, bagof/3, findall/3, and findall/4 % Needs : Not.Pl % Adapted by Paul Tarau for BinProlog: uses a heap based findall/3. % therefore some database hacking predicates have been removed. % Updated: 19 July 1992 /* This file defines two predicates which act like setof/3 and bagof/3. I have seen the code for these routines in Dec-10 and in C-Prolog, but I no longer recall it, and this code was independently derived in 1982 by me and me alone. Most of the complication comes from trying to cope with free variables in the Filter; these definitions actually enumerate all the solutions, then group together those with the same bindings for the free variables. There must be a better way of doing this. I do not claim any virtue for this code other than the virtue of working. In fact there is a subtle bug: if setof/bagof occurs as a data structure in the Generator it will be mistaken for a call, and free variables treated wrongly. Given the current nature of Prolog, there is no way of telling a call from a data structure, and since nested calls are FAR more likely than use as a data structure, we just put up with the latter being wrong. The same applies to negation. Would anyone incorporating this in their Prolog system please credit both me and David Warren; he thought up the definitions, and my implementation may owe more to subconscious memory of his than I like to think. At least this ought to put a stop to fraudulent claims to having bagof, by replacing them with genuine claims. Thanks to Dave Bowen for pointing out an amazingly obscure bug: if the Template was a variable and the Generator never bound it at all you got a very strange answer! Now fixed, at a price. bagof/3, % Like bagof (Dec-10 manual p52) setof/3. % Like setof (Dec-10 manual p51) :- mode bagof(+,+,?), concordant_subset(+,+,-), concordant_subset(+,+,-,-), concordant_subset(+,+,+,+,-), replace_key_variables(+,+,+), setof(+,+,?). % setof(Template, Generator, Set) % finds the Set of instances of the Template satisfying the Generator.. % The set is in ascending order (see compare/3 for a definition of % this order) without duplicates, and is non-empty. If there are % no solutions, setof fails. setof may succeed more than one way, % binding free variables in the Generator to different values. This % predicate is defined on p51 of the Dec-10 Prolog manual. */ setof(Template, Filter, Set) :- bagof(Template, Filter, Bag), sort(Bag, Set). % bagof(Template, Generator, Bag) % finds all the instances of the Template produced by the Generator, % and returns them in the Bag in they order in which they were found. % If the Generator contains free variables which are not bound in the % Template, it assumes that this is like any other Prolog question % and that you want bindings for those variables. (You can tell it % not to bother by using existential quantifiers.) % bagof records three things under the key '.': % the end-of-bag marker - % terms with no free variables -Term % terms with free variables Key-Term % The key '.' was chosen on the grounds that most people are unlikely % to realise that you can use it at all, another good key might be ''. % The original data base is restored after this call, so that setof % and bagof can be nested. If the Generator smashes the data base % you are asking for trouble and will probably get it. % The second clause is basically just findall, which of course works in % the common case when there are no free variables. bagof(Template, Generator, Bag) :- free_variables(Generator, Template, [], Vars), Vars \== [], !, Key =.. [.|Vars], functor(Key, ., N), findall(Key-Template,Generator,Recorded), replace_instance(Recorded, Key, N, OmniumGatherum), keysort(OmniumGatherum, Gamut), !, concordant_subset(Gamut, Key, Answer), Bag = Answer. bagof(Template, Generator, [B|Bag]) :- findall(Template,Generator,[B|Bag]). _^Goal:-Goal. replace_instance([], _, _, []) :- !. replace_instance([NewKey-Term|Xs], Key, NVars, [NewKey-Term|OldBag]) :- replace_key_variables(NVars, Key, NewKey), !, replace_instance(Xs,Key, NVars, OldBag). replace_key_variables(0, _, _) :- !. replace_key_variables(N, OldKey, NewKey) :- arg(N, NewKey, Arg), nonvar(Arg), !, M is N-1, replace_key_variables(M, OldKey, NewKey). replace_key_variables(N, OldKey, NewKey) :- arg(N, OldKey, OldVar), arg(N, NewKey, OldVar), M is N-1, replace_key_variables(M, OldKey, NewKey). % concordant_subset([Key-Val list], Key, [Val list]). % takes a list of Key-Val pairs which has been keysorted to bring % all the identical keys together, and enumerates each different % Key and the corresponding lists of values. concordant_subset([Key-Val|Rest], Clavis, Answer) :- concordant_subset(Rest, Key, List, More), concordant_subset(More, Key, [Val|List], Clavis, Answer). % concordant_subset(Rest, Key, List, More) % strips off all the Key-Val pairs from the from of Rest, % putting the Val elements into List, and returning the % left-over pairs, if any, as More. concordant_subset([Key-Val|Rest], Clavis, [Val|List], More) :- Key == Clavis, !, concordant_subset(Rest, Clavis, List, More). concordant_subset(More, _, [], More). % concordant_subset/5 tries the current subset, and if that % doesn't work if backs up and tries the next subset. The % first clause is there to save a choice point when this is % the last possible subset. concordant_subset([], Key, Subset, Key, Subset) :- !. concordant_subset(_, Key, Subset, Key, Subset). concordant_subset(More, _, _, Clavis, Answer) :- concordant_subset(More, Clavis, Answer). % ---extracted from: not.pl --------------------% % Author : R.A.O'Keefe % Updated: 17 November 1983 % Purpose: "suspicious" negation % In order to handle variables properly, we have to find all the % universally quantified variables in the Generator. All variables % as yet unbound are universally quantified, unless % a) they occur in the template % b) they are bound by X^P, setof, or bagof % free_variables(Generator, Template, OldList, NewList) % finds this set, using OldList as an accumulator. free_variables(Term, Bound, VarList, [Term|VarList]) :- var(Term), term_is_free_of(Bound, Term), list_is_free_of(VarList, Term), !. free_variables(Term, _, VarList, VarList) :- var(Term), !. free_variables(Term, Bound, OldList, NewList) :- explicit_binding(Term, Bound, NewTerm, NewBound), !, free_variables(NewTerm, NewBound, OldList, NewList). free_variables(Term, Bound, OldList, NewList) :- functor(Term, _, N), free_variables(N, Term, Bound, OldList, NewList). free_variables(0, _, _, VarList, VarList) :- !. free_variables(N, Term, Bound, OldList, NewList) :- arg(N, Term, Argument), free_variables(Argument, Bound, OldList, MidList), M is N-1, !, free_variables(M, Term, Bound, MidList, NewList). % explicit_binding checks for goals known to existentially quantify % one or more variables. In particular \+ is quite common. explicit_binding(\+ _, Bound, fail, Bound ). explicit_binding(not(_), Bound, fail, Bound ). explicit_binding(Var^Goal, Bound, Goal, Bound+Var). explicit_binding(setof(Var,Goal,Set), Bound, Goal-Set, Bound+Var). explicit_binding(bagof(Var,Goal,Bag), Bound, Goal-Bag, Bound+Var). term_is_free_of(Term, Var) :- var(Term), !, Term \== Var. term_is_free_of(Term, Var) :- functor(Term, _, N), term_is_free_of(N, Term, Var). term_is_free_of(0, _, _) :- !. term_is_free_of(N, Term, Var) :- arg(N, Term, Argument), term_is_free_of(Argument, Var), M is N-1, !, term_is_free_of(M, Term, Var). list_is_free_of([], _). list_is_free_of([Head|Tail], Var) :- Head \== Var, list_is_free_of(Tail, Var). keysort(L,S):-ksort(L,S). % for compatibility with various prologs % SOUND negation -> replaced with (I think) an improved one % REPLACED: % not(X):-ground(X),!, \+ X. % not(X):-user_error('should be ground',not(X)). % I see no reason to prohibit free variables when the negation succeeds % as no future bindings can change the logical meaning in this case. % the case of failure is (of course) different not(X):- \+ X,!. not(X):-ground(X),!,fail. not(X):-user_error('should be ground',not(X))->fail;abort. term_chars(T,Cs):-nonvar(T),!,swrite(T,S),name(S,Cs). term_chars(T,Cs):-name(S,Cs),sread(S,T). vars_of(Term,Vars):-free_variables(Term,[],[],Vars). BinProlog3.45/src/other.pl100644 764 764 11424 5764563070 14601 0ustar javierjavier :-dynamic(std_timer/1). :-dynamic(try_to_load_file/1). :-op(900,yfx,(:)). :-op(1200,xfx,(::-)). :-op(500,yfx,(#)). :-op(500,fx,(#)). :-op(600,xfx,(:=:)). :-op(950,xfy,(-<>)). :-op(950,xfy,(=>)). :-op(600,xfx,(<=)). :-op(700,xfx,(=:)). :-op(700,xfx,(\=)). :-op(700,xfx,(:=)). :-op(900,fy,(not)). hide_atom(X,X). std_expand_term(C,D):-expand_term(C,D). fast_write(X):-write(X). ttyprint(X):-telling(F),tell(user),write(X),nl,tell(F). symcat(Op,Type,OpType):- [Link]="_", name(Op,Pref), name(Type,Suf), append(Pref,[Link|Suf],Chars), !, name(OpType,Chars). append([],Ys,Ys). append([A|Xs],Ys,[A|Zs]):- append(Xs,Ys,Zs). for(Min,Min,Max):-Min=true ; bb_error(N) ). bb_error(T):-functor(T,F,N), write(F/N), write(' ??? bb_def/3 expected before bb_set/3, bb_rm/2'),nl, fail. bb_let(N,K,X):-bb_val(N,K,_),!,bb_set(N,K,X). bb_let(N,K,X):-bb_def(N,K,X). bb_def(K,X):-bb_def(K,K,X). bb_set(K,X):-bb_set(K,K,X). bb_val(K,X):-bb_val(K,K,X). bb_rm(K):-bb_rm(K,K). bb_let(K,X):-bb_let(K,K,X). bb:- bb(N,K,X),functor(N,Nf,Nn),functor(K,Kf,Kn), write(Nf/Nn+Kf/Kn=X),nl,fail ; nl. bb_reset:- retract(bb(_,_,_)), fail ; true. bb_assert(N,K,X):- term2key(N,NewN), term2key(K,NewK), assert(bb(NewN,NewK,X)). init_gensym(Root):-bb_let(gensym,Root,0). gensym(Root,Symbol):-gensym_no(Root,N),symcat(Root,N,Symbol). gensym_no(Root,N1):- bb_val(gensym,Root,N),!, N1 is N+1, bb_set(gensym,Root,N1). gensym_no(Root,N):-N=1, bb_def(gensym,Root,N). metacall(X):-X. spying(_):-fail. is_dynamic(H):-predicate_property(H,(dynamic)). ctime(T):-std_timer(T). put_code(X) :- put(X). get_code(X) :- get(X). peval_io(X,X). read_clause(C):-read(C). default_prolog(other). quiet(0). BinProlog3.45/src/c_comp.pl100644 764 764 12057 5764563070 14723 0ustar javierjavier% C-instruction coder - writes to files *.c *.h wcode_c(II,Op,Reg,F,N):- make_ccode(II,Op,Reg,F,N). make_ccode(II,Op,Reg,F,N):- % writes C-macro to *.h file c_instr(II,Op,Reg,F,N,Instr),!, make_hcode(Instr). make_ccode(II,Op,Reg,F,N):- % C-ified bytecode make_bcode(II,Op,Reg,F,N). make_hcode(Instr):-c_trace(2,Instr),wchunk(Instr). % makes the bytcode in *.c file make_bcode(_II,Op,Reg,F,N):- fast_write('{'),fast_write(Op),fast_write(','), fast_write(Reg),fast_write(','), fast_write(N),fast_write(',"'), patch_specials(F,NewF), fast_write(NewF),fast_write('"},'),nl. make_comment(Cmd):- currpred(Pred/Arity-No/Offs),NL=[10], make_cmd0( [NL," /* ",Pred," / ",Arity," [",No," / ", Offs, "] */"], Cmd). % writes hint about starting/ending a C-chunk wspec_c(II,Op,Reg,_,N):- % begin chunk c_spec(II,FunSym,Instr),!, make_comment(Cmd), write_c_chunk((lwrite(Cmd),nl)), wchunk(Instr), lwrite(Cmd), c_trace(1,Instr), fast_write(' {'),write(Op),fast_write(','), fast_write(Reg),fast_write(','), fast_write(N),fast_write(',(void *)'),write(FunSym),fast_write('},'),nl. wspec_c(II,Op,Reg,F,N):- % end chunk: c_spec_end(II,Op,Reg,F,N,Instr),!, c_trace(1,Instr), wchunk(Instr). lwrite(L):-member(X,L),put_code(X),fail. lwrite(_). patch_specials(Name,NewName):-integer(Name),!,NewName=Name. patch_specials(Name,NewName):- name(Name,Xs),B=92,Q=34, % i.e. = \ and " findall(Y, ( member(X,Xs), patch_it(X,B,Q,Y) ), Ys), name(NewName,Ys). patch_it(B,B,_,Y):-!,(Y=B;Y=B). patch_it(Q,B,Q,Y):-!,(Y=B;Y=Q). patch_it(X,_,_,X). write_c_chunk(G):-!, c_chunk_file(CF), telling(F), tell(CF), G, tell(F). wchunk(C):-write_c_chunk((fast_write(C),nl)). % starts and ends *.c file c_decorate_file(Where):-c_chunk_file('wam.h'),!, c_decorate_file0(Where,wam_bp). c_decorate_file(Where):- c_decorate_file0(Where,user_bp). c_decorate_file0(header,ArrayName):-!, c_root(XX), init_gensym(XX), wchunk('/* do not edit: generated by co.pl */'), write('#include "../src/global.h"'),nl, write('#include "../src/c_defs.h"'),nl, c_chunk_file(F_H),write('#include "'),write(F_H),write('"'), nl,nl, write('struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} '), write(ArrayName),write('[] = {'), nl. c_decorate_file0(footer,ArrayName):- write('{255,0,0,"'),write(ArrayName),write('"}};'),nl,nl, write('long '), write(ArrayName), write('_size=sizeof('), write(ArrayName), write(');'),nl. %---------------------------- % TOOLS % chunk generation internals % flag No: true if in chunk, counts FunSym c_check:-c_check0(_). c_check0(No):-bb_val(c_chunk,in,No),integer(No). % computes H-offsets (from H-at-beginnig-of-the C-chunk) new_offset(O):- bb_val(predicate,offset,O), O1 is O+1, bb_set(predicate,offset,O1). % retrieves H-offsets (from H-at-beginnig-of-the C-chunk) get_offset(O):- bb_val(predicate,offset,O). % lookup in mini-symbol table at P c_find_fun(F,_,_,_):-integer(F),!, errmes(unexpected,integer(F)). c_find_fun(F,N,No,K):- for(I,0,No), bb_val(fun_symbol,I,F), bb_val(fun_arity,I,N), !, K=I. c_find_fun(F,N,No,No1):- No1 is No+1, bb_set(c_chunk,in,No1), bb_let(fun_symbol,No1,F), bb_let(fun_arity,No1,N), make_bcode(write_constant,6,0,F,N). % looks like write_constant % starts a chunk, starts to count its members at -1 c_chunk_begin(Name):- bb_let(c_chunk,in, -1), c_root(XX), gensym(XX,Name). % ends a chunk, puts `no' so that no arithemtics cannot take place further c_chunk_end:- bb_let(c_chunk,in,no). % finds/adds fun_symbol + fun_arity % if new functor increments code ofset (P-area) % also counts instruction i.e. increments No newP(F,N,K):- bb_val(c_chunk,in,No), integer(No), c_find_fun(F,N,No,K). newH_oldP(O):-c_check,new_offset(O). oldH_oldP(O):-c_check,get_offset(O). newH_newP(F,N,No,O):-newP(F,N,No),new_offset(O). oldH_newP(F,N,No,O):-newP(F,N,No),get_offset(O). c_wvoid(Times,O):- newH_oldP(O), ( for(_,2,Times), new_offset(_), fail ; true ). c_aux_load_integer(An, F, _, load_integer(An,F)):-integer(F),!, c_check. c_aux_load_integer(An, F, N, load_constant(An,No)):- newP(F,N,No). c_aux_put_integer(An, F, _, put_integer(F,An)):-integer(F),!, c_check. c_aux_put_integer(An, F, N, put_constant(No,An)):- newP(F,N,No). c_aux_get_integer(An, F, _, get_integer(F,An)):-integer(F),!, c_check. c_aux_get_integer(An, F, N, get_constant(No,An)):- newP(F,N,No). c_aux_write_integer(F, _, write_integer(O,F)):-integer(F),!, % Max is 1<<15, F > -Max, F < Max, newH_oldP(O). c_aux_write_integer(F, N, write_constant(O,No)):- newH_newP(F,N,No,O). c_aux_unify_integer(F, _, unify_integer(O,F)):-integer(F),!, oldH_oldP(O). c_aux_unify_integer(F, N, unify_constant(O,No)):- oldH_newP(F,N,No,O). % trace=>generates code which prints out C-ified operations % begin_end=>generates begin...end c_chunk for byte code on file c_trace(Level,Instr):- bb_val(c_flag,trace,X),X>=Level, % $$$ !, % ttyprint(generating(Instr)), write_c_chunk(( write('c_trace(" '),write(Instr),write(' ")'),nl )). c_trace(_,_). BinProlog3.45/src/c_instr.pl100644 764 764 11734 5764563070 15125 0ustar javierjavier% PURE TERM-CREATION (PUT) INSTRUCTION SUBSET % begin chunk c_spec(c_chunk_variable, Name, c_chunk_variable(Name)):- % ttyprint(c_chunk_variable=Name), % $$$ c_chunk_begin(Name). % end chunk c_skip(2). c_spec_end(c_chunk_value,Op, _, F, _Len , c_chunk_value(O,No1)):- c_skip(Extra), c_check0(No), No1 is No+Extra, % ## check this c_chunk_end, get_offset(O), % currpred(Pr/Ar-_),ttyprint(c_chunk_value(Op,size(No1),pred(Pr,Ar))), make_bcode(c_chunk_value,Op,0,F,No1). % inside the chunk: C-instruction /* FORMAT: - name - opcode - An register - F: functor or Integer - N: arity - C-instruction: a C-macro to go in the *.h file - continuation action (with side effects!) to be or not to be performed */ c_instr(put_structure,_,An,F,N, put_structure(O,No,An)):- newH_newP(F,N,No,O). c_instr(put_constant,_, An,F,N, Instr):- c_aux_put_integer(An,F,N,Instr). c_instr(push_variable,_, An, _, _, 'push_variable()'):- newH_oldP(O), def(offset,An,O). c_instr(push_structure,_,An,F,N,push_structure(O,No,VarO)):- newH_newP(F,N,No,O), val(offset,An,VarO), rm(offset,An). c_instr(write_value,_, An, _, _, write_value(O,An)):- newH_oldP(O). c_instr(write_variable,_, An, _, _, write_variable(O,An)):- newH_oldP(O). c_instr(write_constant,_, _, F, N, Instr):- c_aux_write_integer(F,N,Instr). c_instr(push_constant,_, _, F, N, Instr):- c_aux_write_integer(F,N,Instr). c_instr(get_variable,_, An, _, Ai, move_reg(An,Ai)):- c_check. c_instr(put_value,_, An, _, Ai, move_reg(An,Ai)):- c_check. c_instr(put_variable,_, An, _, Ai, put_variable(O,An,Ai)):- newH_oldP(O). c_instr(write_void,_, Times, _ , _, write_void(O,Times)):- c_wvoid(Times,O). c_instr(push_cut,_, _, _, _, push_cut(O)):- newH_oldP(O). % END OF pure PUT... instructions c_instr(put_cut,_, _, _, _, 'put_cut()'):- c_check. c_instr(get_cut,_, _, _, _, 'get_cut()'):- c_check. c_instr(load_constant,_, An, F, N, Instr):- c_aux_load_integer(An,F,N,Instr). c_instr(load_variable,_, An, _, Ai, load_variable(O,An,Ai)):- newH_oldP(O). c_instr(load_value,_, An, _, Ai, load_value(An,Ai)):- c_check. c_instr(get_value,_, An, _, Ai, get_value(An,Ai)):- c_check. c_instr(get_constant,_, An, F, N, Instr):- c_aux_get_integer(An,F,N,Instr). c_instr(get_structure,_, An,F,N, get_structure(O,No,An)):- oldH_newP(F,N,No,O). c_instr(unify_variable,_,An,_,_, unify_variable(O,An)):- oldH_oldP(O). c_instr(unify_value,_, An,_,_, unify_value(O,An)):- oldH_oldP(O). c_instr(unify_constant,_,_,F,N,Instr):- c_aux_unify_integer(F,N,Instr). c_instr(unify_void,_, Times, _ , _, unify_void(O,Times)):- oldH_oldP(O). c_instr(inline_variable,_,_,_,No,Instr):- c_check, c_check_iv(No,Instr). c_instr(arith_variable,Base,An,N,No,Instr):- c_check_av(No,OpCode,An,N,Instr), c_opcode(Base,No,OpCode). c_instr(arith_value,Base,An,N,No,Instr):- c_check_av(No,OpCode,An,N,Instr), c_opcode(Base,No,OpCode). c_check_av(0,OpCode,An,N,arith_op(+,OpCode,An,N,O)):-oldH_oldP(O). c_check_av(1,OpCode,An,N,arith_op(-,OpCode,An,N,O)):-oldH_oldP(O). c_check_av(2,OpCode,An,N,arith_op(*,OpCode,An,N,O)):-oldH_oldP(O). c_check_av(3,OpCode,An,N,arith_op('%',OpCode,An,N,O)):-oldH_oldP(O). c_check_av(4,OpCode,An,N,div_3(OpCode,An,N)). c_check_av(5,OpCode,An,N,fdiv_3(OpCode,An,N,O)):-oldH_oldP(O). c_check_av(6,_OpCode,An,N,random_1(An,N)). c_check_av(7,_OpCode,An,N,get0_1(An,N)). c_check_av(8,_OpCode,_An,_N,'put0_1()'). c_check_av(9,OpCode,_An,_N,rel_op('<',OpCode)). c_check_av(10,OpCode,_An,_N,rel_op('>',OpCode)). c_check_av(11,OpCode,_An,_N,rel_op('<=',OpCode)). c_check_av(12,OpCode,_An,_N,rel_op('>=',OpCode)). c_check_av(13,OpCode,_An,_N,rel_op('==',OpCode)). c_check_av(14,OpCode,_An,_N,rel_op('!=',OpCode)). c_check_av(15,_OpCode,An,N,int_only_op('<<',An,N)). c_check_av(16,_OpCode,An,N,int_only_op('>>',An,N)). c_check_av(17,_OpCode,An,N,int_only_op('&',An,N)). c_check_av(18,_OpCode,An,N,int_only_op('|',An,N)). c_check_av(19,_OpCode,An,N,int_only_op('^',An,N)). c_check_av(20,_OpCode,An,N,l_neg_3(An,N)). c_check_av(21,_OpCode,An,N,compare0_3(An,N)). c_check_av(22,_OpCode,An,N,arg_3(An,N)). c_check_av(23,_OpCode,_An,_N,'setarg_3()'). c_check_av(24,_OpCode,_An,_N,'change_arg_3()'). c_check_av(25,_OpCode,_An,_N,'def_3()'). c_check_av(26,_OpCode,_An,_N,'rm_2()'). c_check_av(27,_OpCode,_An,_N,'set_3()'). c_check_av(28,_OpCode,An,N,val_3(An,N)). c_check_av(29,_OpCode,An,N,lval_3(An,N)). c_check_av(30,_OpCode,An,N,symcat_3(An,N)). %c_check_av(31,_OpCode,An,N,dcg_connect_1(An,N)). %c_check_av(32,_OpCode,An,N,list2term_2(An,N)). %c_check_av(33,_OpCode,An,N,term2list_2(An,N)). %c_check_av(34,_OpCode,An,N,add_instr_4(An,N)). antigenic(arith_variable,An,_):-An>30. antigenic(arith_value,An,_):-An>30. antigenic('builtin_?',An,_):-An>=0. c_opcode(Base,No,OpCode):-c_check,OpCode is Base+No. c_check_iv(0,'fail_0()'). c_check_iv(1,'cwrite_1()'). c_check_iv(2,'cnl_1()'). c_check_iv(3,'var_1()'). c_check_iv(4,'nonvar_1()'). c_check_iv(5,'integer_1()'). c_check_iv(6,'atomic_1()'). c_check_iv(7,'is_compiled_1()'). BinProlog3.45/src/run.pro100644 764 764 141 5764563070 14403 0ustar javierjavier:-[oper]. :-[builtins]. :-[init]. :-[lib]. :-[dcg]. :-[read]. :-[write]. :-[top]. :-[extra]. BinProlog3.45/src/wam.pro100644 764 764 65 5764563070 14350 0ustar javierjavier:-[run]. :-[bin]. :-[co]. :-[c_comp]. :-[c_instr]. BinProlog3.45/src/binpro.pro100644 764 764 132 5764563070 15070 0ustar javierjavier% this empty program just gives a name to the % C-ified standalone BinProlog executable BinProlog3.45/src/builtins.pl100644 764 764 23167 5764563070 15320 0ustar javierjavierbu0(fail(_), 0, in_body). bu0(cwrite(_,_), 1, in_body). bu0(cnl(_), 2, in_body). bu0(var(_,_), 3, in_body). bu0(nonvar(_,_), 4, in_body). bu0(integer(_,_), 5, in_body). bu0(atomic(_,_), 6, in_body). bu0(is_compiled(_,_), 7, in_body). bu0(+(_,_,_,_), arith(0,1), in_body). bu0(-(_,_,_,_), arith(1,1), in_body). bu0(*(_,_,_,_), arith(2,1), in_body). bu0(mod(_,_,_,_), arith(3,1), in_body). bu0(//(_,_,_,_), arith(4,1), in_body). bu0(/(_,_,_,_), arith(5,1), in_body). bu0(random(_,_), arith(6,1), in_body). bu0(get0(_,_), arith(7,1), in_body). bu0(put(_,_), arith(8,0), in_body). bu0(less(_,_,_), arith(9,0), in_body). bu0(greater(_,_,_), arith(10,0), in_body). bu0(less_eq(_,_,_), arith(11,0), in_body). bu0(greater_eq(_,_,_), arith(12,0), in_body). bu0(arith_eq(_,_,_), arith(13,0), in_body). bu0(arith_dif(_,_,_), arith(14,0), in_body). bu0(<<(_,_,_,_), arith(15,1), in_body). bu0(>>(_,_,_,_), arith(16,1), in_body). bu0(/\(_,_,_,_), arith(17,1), in_body). bu0(\/(_,_,_,_), arith(18,1), in_body). bu0(#(_,_,_,_), arith(19,1), in_body). bu0(\(_,_,_,_), arith(20,1), in_body). bu0(compare0(_,_,_,_), arith(21,1), in_body). bu0(arg(_,_,_,_), arith(22,1), in_body). bu0(setarg(_,_,_,_), arith(23,0), in_body). bu0(change_arg(_,_,_,_), arith(24,0), in_body). bu0(def(_,_,_,_), arith(25,0), in_body). bu0(rm(_,_,_), arith(26,0), in_body). bu0(set(_,_,_,_), arith(27,0), in_body). bu0(val(_,_,_,_), arith(28,1), in_body). bu0(lval(_,_,_,_), arith(29,1), in_body). bu0(symcat(_,_,_,_), arith(30,1), in_body). bu0(dcg_connect(_,_), arith(31,1), in_body). bu0(list2term(_,_,_), arith(32,1), in_body). bu0(term2list(_,_,_,_,_), arith(33,1), in_body). bu0(self_info(_,_), arith(34,1), in_body). bu0(add_instr(_,_,_,_,_), arith(35,0), in_body). bu0(lift_heap(_,_,_), arith(36,0), in_body). bu0(det_append0(_,_,_,_), arith(37,1), in_body). bu0(copy_term(_,_,_,_), arith(38,1), in_body). bu0(bb_list0(_,_,_,_), arith(39,1), in_body). bu0(older_file(_,_,_), arith(40,0), in_body). bu0(seeing_telling(_,_,_), arith(41,1), in_body). bu0(see_tell(_,_,_), arith(42,0), in_body). bu0(seen_told(_,_), arith(43,0), in_body). bu0(seeing_telling_at(_,_,_), arith(44,1), in_body). bu0(see_tell_at(_,_,_), arith(45,0), in_body). bu0(string_op(_,_,_,_), arith(46,1), in_body). bu0(op0(_,_,_,_), arith(47,0), in_body). bu0(term_append(_,_,_,_), arith(48,1), in_body). bu0(float_fun2(_,_,_,_,_), arith(49,1), in_body). bu0(float_fun(_,_,_,_), arith(50,1), in_body). bu0(input_float(_,_,_,_,_), arith(51,1), in_body). bu0(write_float(_,_), arith(52,0), in_body). bu0(strip_cont0(_,_,_), arith(53,1), in_body). bu0(dcg_def(_,_), arith(54,0), in_body). bu0(dcg_val(_,_), arith(55,1), in_body). bu0(dcg_tell(_,_), arith(56,0), in_body). bu0(dcg_telling(_,_), arith(57,1), in_body). bu0(iso_open_stream(_,_,_,_), arith(58,1), in_body). bu0(iso_close_stream(_,_,_), arith(59,0), in_body). bu0(iso_write_term(_,_,_,_), arith(60,0), in_body). bu0(iso_read_term(_,_,_,_), arith(61,1), in_body). bu0(iso_put_byte(_,_,_), arith(62,0), in_body). bu0(iso_get_byte(_,_,_), arith(63,1), in_body). bu0(iso_peek_byte(_,_,_), arith(64,1), in_body). bu0(iso_eof(_,_), arith(65,0), in_body). bu0(iso_lseek(_,_,_,_,_), arith(66,1), in_body). bu0(bb_put(_,_,_), arith(67,0), in_body). bu0(bb_get(_,_,_,_,_), arith(68,1), in_body). bu0(bb_op(_,_,_,_), arith(69,1), in_body). bu0(setref(_,_,_), arith(70,0), in_body). bu0(unix_argc(_,_), arith(71,1), in_body). bu0(unix_argv(_,_,_), arith(72,1), in_body). bu0(unix_getenv(_,_,_), arith(73,1), in_body). bu0(unix_access(_,_,_), arith(74,0), in_body). bu0(unix_cd(_,_), arith(75,0), in_body). bu0(unix_kill(_,_,_), arith(76,0), in_body). bu0(quiet(_,_), arith(77,1), in_body). bu0(create_engine(_,_,_,_,_), arith(78,1), in_body). bu0(destroy_engine(_,_), arith(79,0), in_body). bu0(load_engine(_,_,_,_), arith(80,0), in_body). bu0(ask_engine(_,_,_), arith(81,1), in_body). bu0(multitask_engines(_,_), arith(82,0), in_body). bu0(suspend_engine(_,_), arith(83,0), in_body). bu0(new_builtin(_,_,_,_), arith(84,1), in_body). bu0(halt(_,_), arith(85,0), in_body). bu0(true(_), 0, in_head). bu0(call(_,_), 1, in_head). bu0(abort(_), 2, in_head). bu0(restart(_), 3, in_head). bu0(findall_store_heap(_,_), 4, in_head). bu0(findall_load_heap(_,_), 5, in_head). bu0(functor(_,_,_,_), 6, in_head). bu0(name(_,_,_), 7, in_head). bu0(shell(_,_), 8, in_head). bu0(stat0(_,_,_,_), 9, in_head). bu0(list_asm(_,_,_,_), 10, in_head). bu0(bb_reset(_), 11, in_head). bu0(profile(_), 12, in_head). bu0(if0(_,_,_,_), 13, in_head). bu_ctr(n_inline, 66). bu_ctr(n_arith, 74). bu_ctr(n_builtin, 160). bu_ctr(n_nop, 174). bu1(!). bu1([_|_]). bu1(compile(_)). bu1(include(_)). bu1(or(_,_)). bu1(if(_,_,_)). bu1(strip_cont(_,_,_)). bu1(termcat(_,_,_)). bu1(add_cont(_,_,_)). bu1(asm). bu1(asm(_)). bu1(_=.._). bu1(::-(_,_)). bu1(statistics). bu1(interactive(_)). bu1(metacall(_)). bu1(metatrue(_)). bu1(expand_term(_,_)). bu1(_=_). bu1((_->_)). bu1((_;_)). bu1((_,_)). bu1(repeat). bu1(\+_). bu1(\=(_,_)). bu1(findall_workhorse(_,_,_,_,_)). bu1(findall(_,_,_)). bu1(findall(_,_,_,_)). bu1(findall_conj(_,_,_)). bu1(findall_conj(_,_,_,_)). bu1(findall_disj(_,_,_)). bu1(findall_disj(_,_,_,_)). bu1(all(_,_,_)). bu1(while(_,_)). bu1(skip_until(_,_)). bu1(skip_when(_,_)). bu1(find_while(_,_,_,_)). bu1(nth_answer(_,_)). bu1(take_at_most(_,_)). bu1(drop_at_least(_,_)). bu1(has_fuel(_)). bu1(find_at_most(_,_,_,_)). bu1(all_but_at_least(_,_,_,_)). bu1(for(_,_,_)). bu1(argn(_,_,_)). bu1(append(_,_,_)). bu1(member(_,_)). bu1(det_append(_,_,_)). bu1('.'(_,_,_)). bu1(++(_,_,_)). bu1(length(_,_)). bu1(make_cmd(_,_)). bu1(numbervars(_,_,_)). bu1(gc_call(_)). bu1(ground(_)). bu1(atom(_)). bu1(float(_)). bu1(number(_)). bu1(compound(_)). bu1(appendN(_,_)). bu1(append_conj(_,_,_)). bu1(append_disj(_,_,_)). bu1(tab(_)). bu1(get(_)). bu1(_ is _). bu1(expr(_,_)). bu1(compare(_,_,_)). bu1(_==_). bu1(_\==_). bu1(_@<_). bu1(_@>_). bu1(_@=<_). bu1(_@>=_). bu1(_<_). bu1(_>_). bu1(_=<_). bu1(_>=_). bu1(_=:=_). bu1(_=\=_). bu1(_+_). bu1(_-_). bu1(\(_,_)). bu1(bb_def(_,_,_)). bu1(bb_set(_,_,_)). bu1(bb_val(_,_,_)). bu1(bb_rm(_,_)). bu1(bb_let(_,_,_)). bu1(bb_change_arg(_,_,_)). bu1(let(_,_,_)). bu1(bb_def(_,_)). bu1(bb_set(_,_)). bu1(bb_val(_,_)). bu1(bb_rm(_)). bu1(bb_let(_,_)). bu1(dcg_phrase(_,_,_)). bu1(dcg_phrase(_,_)). bu1(:=:(_,_)). bu1(#(_)). bu1(pow(_,_,_)). bu1(log(_,_,_)). bu1(sqrt(_,_)). bu1(exp(_,_)). bu1(log(_,_)). bu1(sin(_,_)). bu1(cos(_,_)). bu1(tan(_,_)). bu1(asin(_,_)). bu1(atan(_,_)). bu1(acos(_,_)). bu1(integer(_,_)). bu1(float(_,_)). bu1(statistics(_,_)). bu1(predicate_property(_,_)). bu1(current_predicate(_,_)). bu1(current_predicate(_)). bu1(ctime(_)). bu1(help(_)). bu1(apropos(_)). bu1(apropos(_,_)). bu1(unix(_)). bu1(system(_)). bu1(meta_interpreter(_)). bu1(trace(_)). bu1((dynamic _)). bu1(asserta(_)). bu1(assertz(_)). bu1(assert(_)). bu1(retract(_)). bu1(retractall(_)). bu1(instance(_,_)). bu1(erase(_)). bu1(clause(_,_)). bu1(abolish(_,_)). bu1(debug(_)). bu1(consult(_)). bu1(reconsult(_)). bu1(listing). bu1(listing(_)). bu1(listing(_,_)). bu1(=>(_,_)). bu1(assumei(_)). bu1(assumel(_)). bu1(assumed(_)). bu1(assumed_clause(_,_)). bu1(assumed_clause(_,_,_)). bu1(-:(_,_)). bu1(is_assumed(_)). bu1(is_dynamic(_)). bu1(bb). bu1(bb(_)). bu1(bb_list(_)). bu1(bb_element(_,_)). bu1(sort(_,_)). bu1(keysort(_,_)). bu1(bagof(_,_,_)). bu1(setof(_,_,_)). bu1(_^_). bu1(free_variables(_,_,_,_)). bu1(not(_)). bu1(term_chars(_,_)). bu1(vars_of(_,_)). bu1(user_error(_,_)). bu1(errmes(_,_)). bu1(quietmes(_)). bu1(main). bu1(main(_)). bu1(toplevel). bu1(is_prolog(_)). bu1(get_code(_)). bu1(put_code(_)). bu1(nl). bu1(read(_)). bu1(read_term(_,_)). bu1(top_read_term(_,_)). bu1(warn_singletons(_,_,_)). bu1(read_with_singletons(_,_,_)). bu1(read_clause(_)). bu1(read_tokens(_,_)). bu1(write(_)). bu1(print(_)). bu1(writeq(_)). bu1(portable_display(_)). bu1(display(_)). bu1(portray(_)). bu1(portray_clause(_)). bu1(pp_clause(_)). bu1(pp_term(_)). bu1(fast_write(_)). bu1(ttyin(_)). bu1(ttyout(_)). bu1(ttyput(_)). bu1(ttynl). bu1(ttyprin(_)). bu1(ttyprint(_)). bu1(ttycwrite(_)). bu1(ttycwriteln(_)). bu1(see(_)). bu1(seeing(_)). bu1(seen). bu1(tell(_)). bu1(telling(_)). bu1(told). bu1(see_at(_)). bu1(seeing_at(_)). bu1(tell_at(_)). bu1(telling_at(_)). bu1(file_search_path(_)). bu1(file_extension_list(_)). bu1(file_library(_,_)). bu1(make_file_name(_,_,_,_)). bu1(find_file(_,_)). bu1(exists_file(_)). bu1(see_or_fail(_,_)). bu1(flush). bu1(sread(_,_)). bu1(swrite(_,_)). bu1(bu0(_,_,_)). bu1(bu1(_)). bu1(current_op(_,_,_)). bu1(op(_,_,_)). bu1(is_builtin(_)). bu1(edit(_,_)). bu1(my_edit(_)). bu1(edit). bu1(ed). bu1(textedit). bu1(emacs). bu1(pico). bu1(notepad). bu1(vi). bu1(co). bu1(current_user_file(_)). bu1(ls). bu1(dir). bu1(make_appl(_)). bu1(make_executable_unix_appl(_,_,_)). bu1(make). bu1(make(_)). bu1(make(_,_)). bu1(make(_,_,_,_)). bu1(make(_,_,_,_,_)). bu1(make0(_,_,_,_)). bu1(cmake). bu1(cmake(_)). bu1(cmake(_,_)). bu1(kmake). bu1(kcmake). bu1(tmake). bu1(tmake(_)). bu1(tmake(_,_)). bu1(ctrace). bu1(boot). bu1(add_true(_,_)). bu1(gc_read(_)). bu1(gc_read_clause(_)). bu1(do_body(_)). bu1(tr_body(_,_)). bu1(ith_clause(_,_,_,_)). bu1(char_in_cmd(_,_)). bu1(show_code0(_,_)). bu1(bu_ctr(_,_)). bu1(patch_it(_,_,_,_)). bu1(lwrite(_)). bu1(module_call(_,_)). bu1(module(_)). bu1(module(_,_)). bu1(is_module(_)). bu1(modules(_)). bu1(current_module(_)). bu1(module_predicate(_,_,_)). bu1(module_name(_,_,_)). bu1((public _)). bu1(is_public(_)). bu1(gensym(_,_)). bu1(init_gensym(_)). bu1(spy_goal(_)). bu1(spy _). bu1(spying(_)). bu1(nospy _). bu1(otherwise). bu1(false). bu1(copy_term(_,_)). bu1(phrase(_,_)). bu1(phrase(_,_,_)). bu1(nth_member(_,_,_)). bu1(member_i(_,_,_,_)). bu1(saved(_,_)). bu1(stat_dict(_,_)). bu1(set_c_threshold(_)). bu1(set_c_threshold(_,_)). bu1(set_c_trace(_)). bu1('C'(_,_,_)). bu1(halt). bu1(_:_). BinProlog3.45/src/defs.h100644 764 764 5256 5764563070 14203 0ustar javierjavier#define FAIL_0 66 #define CWRITE_1 67 #define CNL_0 68 #define VAR_1 69 #define NONVAR_1 70 #define INTEGER_1 71 #define ATOMIC_1 72 #define IS_COMPILED_1 73 #define PLUS_3 74 #define SUB_3 75 #define MUL_3 76 #define MOD_3 77 #define DIV_3 78 #define FDIV_3 79 #define RANDOM_1 80 #define GET0_1 81 #define PUT0_1 82 #define LESS_2 83 #define GREATER_2 84 #define LESS_EQ_2 85 #define GREATER_EQ_2 86 #define ARITH_EQ_2 87 #define ARITH_DIF_2 88 #define LSHIFT_3 89 #define RSHIFT_3 90 #define L_AND_3 91 #define L_OR_3 92 #define L_XOR_3 93 #define L_NEG_3 94 #define COMPARE0_3 95 #define ARG_3 96 #define SETARG_3 97 #define CHANGE_ARG_3 98 #define DEF_3 99 #define RM_2 100 #define SET_3 101 #define VAL_3 102 #define LVAL_3 103 #define SYMCAT_3 104 #define DCG_CONNECT_1 105 #define LIST2TERM_2 106 #define TERM2LIST_4 107 #define SELF_INFO_1 108 #define ADD_INSTR_4 109 #define LIFT_HEAP_2 110 #define DET_APPEND0_3 111 #define COPY_TERM_3 112 #define BB_LIST0_3 113 #define OLDER_FILE_2 114 #define SEEING_TELLING_2 115 #define SEE_TELL_2 116 #define SEEN_TOLD_1 117 #define SEEING_TELLING_AT_2 118 #define SEE_TELL_AT_2 119 #define STRING_OP_3 120 #define OP0_3 121 #define TERM_APPEND_3 122 #define FLOAT_FUN2_4 123 #define FLOAT_FUN_3 124 #define INPUT_FLOAT_4 125 #define WRITE_FLOAT_1 126 #define STRIP_CONT0_2 127 #define DCG_DEF_1 128 #define DCG_VAL_1 129 #define DCG_TELL_1 130 #define DCG_TELLING_1 131 #define ISO_OPEN_STREAM_3 132 #define ISO_CLOSE_STREAM_2 133 #define ISO_WRITE_TERM_3 134 #define ISO_READ_TERM_3 135 #define ISO_PUT_BYTE_2 136 #define ISO_GET_BYTE_2 137 #define ISO_PEEK_BYTE_2 138 #define ISO_EOF_1 139 #define ISO_LSEEK_4 140 #define BB_PUT_2 141 #define BB_GET_4 142 #define BB_OP_3 143 #define SETREF_2 144 #define UNIX_ARGC_1 145 #define UNIX_ARGV_2 146 #define UNIX_GETENV_2 147 #define UNIX_ACCESS_2 148 #define UNIX_CD_1 149 #define UNIX_KILL_2 150 #define QUIET_1 151 #define CREATE_ENGINE_4 152 #define DESTROY_ENGINE_1 153 #define LOAD_ENGINE_3 154 #define ASK_ENGINE_2 155 #define MULTITASK_ENGINES_1 156 #define SUSPEND_ENGINE_1 157 #define NEW_BUILTIN_3 158 #define HALT_1 159 #define TRUE_0 160 #define CALL_1 161 #define ABORT_0 162 #define RESTART_0 163 #define FINDALL_STORE_HEAP_1 164 #define FINDALL_LOAD_HEAP_1 165 #define FUNCTOR_3 166 #define NAME_2 167 #define SHELL_1 168 #define STAT0_3 169 #define LIST_ASM_3 170 #define BB_RESET_0 171 #define PROFILE_0 172 #define IF0_3 173 #define INLINE 66 #define ARITH 74 #define BUILTIN 160 #define LAST_BUILTIN 173 #define STAT_RUNTIME 0 #define STAT_GLOBAL_STACK 1 #define STAT_LOCAL_STACK 2 #define STAT_TRAIL 3 #define STAT_CODE 4 #define STAT_STRINGS 5 #define STAT_SYMBOLS 6 #define STAT_HTABLE 7 #define STAT_BBOARD 8 BinProlog3.45/src/bm1100744 764 764 344 5675727566 13502 0ustar javierjavierecho '[brev]. go. [puzzle]. go. [q8]. go. [semi3]. go. [ham]. [allperms]. go. [queens]. go. [cal]. go. [fibo]. go. [qsort]. go. [war]. go. [chat]. go. [differen]. go. [choice]. go. ' | $* -h20000 -s6000 -t1000 echo FINISHED b1 BinProlog3.45/src/bm2100744 764 764 415 5675730365 13471 0ustar javierjavierecho '[subset]. go. [boyer]. go. [ffibo]. go. [cube]. go. [qrev]. [fbrev]. go. [vfbrev]. go. [lq8]. go. [tak]. go. [ltak]. go. [lfibo]. go. [han]. go. [lattice_planet]. go. [lattice_wam]. go. [assertbm]. go. [maplist]. go. ' | $1 -h20000 -s6000 -t1000 echo FINISHED b2 BinProlog3.45/src/bm3100744 764 764 445 5675727560 13500 0ustar javierjavierecho '[cbrev]. go. [knight]. go. [fknight]. go. reconsult(nrev30). [nrev30]=>go. go. reconsult(puzzle). go. reconsult(q8). go. [bfmeta]. i1. i2. i3. go. reconsult(cal). go(100). reconsult(war). go. [chat]=>go. [lrev]. go. [backprop]. go. ' | $* -h20000 -s6000 -t1000 -b1000 echo FINISHED b3 BinProlog3.45/src/otherwam.bp100644 764 764 521026 5764563071 15321 0ustar javierjavier$bin_cut$cut? ?truefail_B?truecwrite_ ?B? ?truecnl_B?truevar_ ?B? ?truenonvar_ ?B? ?trueinteger_ ?B? ?trueatomic_ ?B? ?trueis_compiled_ ?B? ?true+_??J1 ?true-_??J1 ?true*_??J1 ?truemod_??J1 ?true//_??J1 ?true/_??J1 ?truerandom_J1 ?trueget0_J1 ?trueput_?J0 ?trueless_??J 0 ?truegreater_??J 0 ?trueless_eq_??J 0 ?truegreater_eq_??J 0 ?truearith_eq_??J 0 ?truearith_dif_??J0 ?true<<_??J1 ?true>>_??J1 ?true/\_??J1 ?true\/_??J1 ?true#_??J1 ?true\_??J1 ?truecompare0_??J1 ?truearg_??J1 ?truesetarg_???J0 ?truechange_arg_???J0 ?truedef_???J0 ?truerm_??J0 ?trueset_???J0 ?trueval_??J1 ?truelval_??J1 ?truesymcat_??J1 ?truedcg_connect_J1 ?truelist2term_?J 1 ?trueterm2list_???J!1 ?trueself_info_J"1 ?trueadd_instr_????J#0 ?truelift_heap_??J$0 ?truedet_append0_??J%1 ?truecopy_term_??J&1 ?truebb_list0_??J'1 ?trueolder_file_??J(0 ?trueseeing_telling_?J)1 ?truesee_tell_??J*0 ?trueseen_told_?J+0 ?trueseeing_telling_at_?J,1 ?truesee_tell_at_??J-0 ?truestring_op_??J.1 ?trueop0_???J/0 ?trueterm_append_??J01 ?truefloat_fun2_???J11 ?truefloat_fun_??J21 ?trueinput_float_???J31 ?truewrite_float_?J40 ?truestrip_cont0_?J51 ?truedcg_def_?J60 ?truedcg_val_J71 ?truedcg_tell_?J80 ?truedcg_telling_J91 ?trueiso_open_stream_??J:1 ?trueiso_close_stream_??J;0 ?trueiso_write_term_???J<0 ?trueiso_read_term_??J=1 ?trueiso_put_byte_??J>0 ?trueiso_get_byte_?J?1 ?trueiso_peek_byte_?J@1 ?trueiso_eof_?JA0 ?trueiso_lseek_???JB1 ?truebb_put_??JC0 ?truebb_get_???JD1 ?truebb_op_??JE1 ?truesetref_??JF0 ?trueunix_argc_JG1 ?trueunix_argv_?JH1 ?trueunix_getenv_?JI1 ?trueunix_access_??JJ0 ?trueunix_cd_?JK0 ?trueunix_kill_??JL0 ?truequiet_JM1 ?truecreate_engine_???JN1 ?truedestroy_engine_?JO0 ?trueload_engine_???JP0 ?trueask_engine_?JQ1 ?truemultitask_engines_?JR0 ?truesuspend_engine_?JS0 ?truenew_builtin_??JT1 ?truehalt_?JU0 ?truetrue_?truecall_?trueabort_?truerestart_?truefindall_store_heap_?truefindall_load_heap_?truefunctor_?truename_?trueshell_?truestat0_ ?truelist_asm_ ?truebb_reset_ ?trueprofile_ ?trueif0_ ?true1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=bu0failfail?0in_body ?truebu0cwritecwrite=?1in_body ?truebu0cnlcnl?2in_body ?truebu0varvar=?3in_body ?truebu0nonvarnonvar=?4in_body ?truebu0integerinteger=?5in_body ?truebu0atomicatomic=?6in_body ?truebu0is_compiledis_compiled=?7in_body ?truebu0++=?in_body ?arith01truebu0--=?in_body ?arith11truebu0**=?in_body ?arith21truebu0modmod=?in_body ?arith31truebu0////=?in_body ?arith41truebu0//=?in_body ?arith51truebu0randomrandom=?in_body ?arith61truebu0get0get0=?in_body ?arith71truebu0putput=?in_body ?arith80truebu0lessless=?in_body ?arith90truebu0greatergreater=?in_body ?arith100truebu0less_eqless_eq=?in_body ?arith110truebu0greater_eqgreater_eq=?in_body ?arith120truebu0arith_eqarith_eq=?in_body ?arith130truebu0arith_difarith_dif=?in_body ?arith140truebu0<<<<=?in_body ?arith151truebu0>>>>=?in_body ?arith161truebu0/\/\=?in_body ?arith171truebu0\/\/=?in_body ?arith181truebu0##=?in_body ?arith191truebu0\\=?in_body ?arith201truebu0compare0compare0=?in_body ?arith211truebu0argarg=?in_body ?arith221truebu0setargsetarg=?in_body ?arith230truebu0change_argchange_arg=?in_body ?arith240truebu0defdef=?in_body ?arith250truebu0rmrm=?in_body ?arith260truebu0setset=?in_body ?arith270truebu0valval=?in_body ?arith281truebu0lvallval=?in_body ?arith291truebu0symcatsymcat=?in_body ?arith301truebu0dcg_connectdcg_connect=?in_body ?arith311truebu0list2termlist2term=?in_body ?arith321truebu0term2listterm2list=?in_body ?arith331truebu0self_infoself_info=?in_body ?arith341truebu0add_instradd_instr=?in_body ?arith350truebu0lift_heaplift_heap=?in_body ?arith360truebu0det_append0det_append0=?in_body ?arith371truebu0copy_termcopy_term=?in_body ?arith381truebu0bb_list0bb_list0=?in_body ?arith391truebu0older_fileolder_file=?in_body ?arith400truebu0seeing_tellingseeing_telling=?in_body ?arith411truebu0see_tellsee_tell=?in_body ?arith420truebu0seen_toldseen_told=?in_body ?arith430truebu0seeing_telling_atseeing_telling_at=?in_body ?arith441truebu0see_tell_atsee_tell_at=?in_body ?arith450truebu0string_opstring_op=?in_body ?arith461truebu0op0op0=?in_body ?arith470truebu0term_appendterm_append=?in_body ?arith481truebu0float_fun2float_fun2=?in_body ?arith491truebu0float_funfloat_fun=?in_body ?arith501truebu0input_floatinput_float=?in_body ?arith511truebu0write_floatwrite_float=?in_body ?arith520truebu0strip_cont0strip_cont0=?in_body ?arith531truebu0dcg_defdcg_def=?in_body ?arith540truebu0dcg_valdcg_val=?in_body ?arith551truebu0dcg_telldcg_tell=?in_body ?arith560truebu0dcg_tellingdcg_telling=?in_body ?arith571truebu0iso_open_streamiso_open_stream=?in_body ?arith581truebu0iso_close_streamiso_close_stream=?in_body ?arith590truebu0iso_write_termiso_write_term=?in_body ?arith600truebu0iso_read_termiso_read_term=?in_body ?arith611truebu0iso_put_byteiso_put_byte=?in_body ?arith620truebu0iso_get_byteiso_get_byte=?in_body ?arith631truebu0iso_peek_byteiso_peek_byte=?in_body ?arith641truebu0iso_eofiso_eof=?in_body ?arith650truebu0iso_lseekiso_lseek=?in_body ?arith661truebu0bb_putbb_put=?in_body ?arith670truebu0bb_getbb_get=?in_body ?arith681truebu0bb_opbb_op=?in_body ?arith691truebu0setrefsetref=?in_body ?arith700truebu0unix_argcunix_argc=?in_body ?arith711truebu0unix_argvunix_argv=?in_body ?arith721truebu0unix_getenvunix_getenv=?in_body ?arith731truebu0unix_accessunix_access=?in_body ?arith740truebu0unix_cdunix_cd=?in_body ?arith750truebu0unix_killunix_kill=?in_body ?arith760truebu0quietquiet=?in_body ?arith771truebu0create_enginecreate_engine=?in_body ?arith781truebu0destroy_enginedestroy_engine=?in_body ?arith790truebu0load_engineload_engine=?in_body ?arith800truebu0ask_engineask_engine=?in_body ?arith811truebu0multitask_enginesmultitask_engines=?in_body ?arith820truebu0suspend_enginesuspend_engine=?in_body ?arith830truebu0new_builtinnew_builtin=?in_body ?arith841truebu0halthalt=?in_body ?arith850truebu0truetrue?0in_head ?truebu0callcall=?1in_head ?truebu0abortabort?2in_head ?truebu0restartrestart?3in_head ?truebu0findall_store_heapfindall_store_heap=?4in_head ?truebu0findall_load_heapfindall_load_heap=?5in_head ?truebu0functorfunctor=?6in_head ?truebu0namename=?7in_head ?truebu0shellshell=?8in_head ?truebu0stat0stat0=?9in_head ?truebu0list_asmlist_asm=?10in_head ?truebu0bb_resetbb_reset?11in_head ?truebu0profileprofile?12in_head ?truebu0if0if0=?13in_head ?truebu_ctrn_inlinen_inline66 ?truebu_ctrn_arithn_arith74 ?truebu_ctrn_builtinn_builtin160 ?truebu_ctrn_nopn_nop174 ?truebu1!! ?truebu1..=? ?truebu1compilecompile? ?truebu1includeinclude? ?truebu1oror=? ?truebu1ifif=? ?truebu1strip_contstrip_cont=? ?truebu1termcattermcat=? ?truebu1add_contadd_cont=? ?truebu1asmasm ?truebu1asmasm? ?truebu1=..=..=? ?truebu1::-::-=? ?truebu1statisticsstatistics ?truebu1interactiveinteractive? ?truebu1metacallmetacall? ?truebu1metatruemetatrue? ?truebu1expand_termexpand_term=? ?truebu1===? ?truebu1->->=? ?truebu1;;=? ?truebu1,,=? ?truebu1repeatrepeat ?truebu1\+\+? ?truebu1\=\==? ?truebu1findall_workhorsefindall_workhorse=? ?truebu1findallfindall=? ?truebu1findallfindall=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_disjfindall_disj=? ?truebu1findall_disjfindall_disj=? ?truebu1allall=? ?truebu1whilewhile=? ?truebu1skip_untilskip_until=? ?truebu1skip_whenskip_when=? ?truebu1find_whilefind_while=? ?truebu1nth_answernth_answer=? ?truebu1take_at_mosttake_at_most=? ?truebu1drop_at_leastdrop_at_least=? ?truebu1has_fuelhas_fuel? ?truebu1find_at_mostfind_at_most=? ?truebu1all_but_at_leastall_but_at_least=? ?truebu1forfor=? ?truebu1argnargn=? ?truebu1appendappend=? ?truebu1membermember=? ?truebu1det_appenddet_append=? ?truebu1..=? ?truebu1++++=? ?truebu1lengthlength=? ?truebu1make_cmdmake_cmd=? ?truebu1numbervarsnumbervars=? ?truebu1gc_callgc_call? ?truebu1groundground? ?truebu1atomatom? ?truebu1floatfloat? ?truebu1numbernumber? ?truebu1compoundcompound? ?truebu1appendNappendN=? ?truebu1append_conjappend_conj=? ?truebu1append_disjappend_disj=? ?truebu1tabtab? ?truebu1getget? ?truebu1isis=? ?truebu1exprexpr=? ?truebu1comparecompare=? ?truebu1=====? ?truebu1\==\===? ?truebu1@<@<=? ?truebu1@>@>=? ?truebu1@=<@=<=? ?truebu1@>=@>==? ?truebu1<<=? ?truebu1>>=? ?truebu1=<=<=? ?truebu1>=>==? ?truebu1=:==:==? ?truebu1=\==\==? ?truebu1++=? ?truebu1--=? ?truebu1\\=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm=? ?truebu1bb_letbb_let=? ?truebu1bb_change_argbb_change_arg=? ?truebu1letlet=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm? ?truebu1bb_letbb_let=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1:=::=:=? ?truebu1##? ?truebu1powpow=? ?truebu1loglog=? ?truebu1sqrtsqrt=? ?truebu1expexp=? ?truebu1loglog=? ?truebu1sinsin=? ?truebu1coscos=? ?truebu1tantan=? ?truebu1asinasin=? ?truebu1atanatan=? ?truebu1acosacos=? ?truebu1integerinteger=? ?truebu1floatfloat=? ?truebu1statisticsstatistics=? ?truebu1predicate_propertypredicate_property=? ?truebu1current_predicatecurrent_predicate=? ?truebu1current_predicatecurrent_predicate? ?truebu1ctimectime? ?truebu1helphelp? ?truebu1aproposapropos? ?truebu1aproposapropos=? ?truebu1unixunix? ?truebu1systemsystem? ?truebu1meta_interpretermeta_interpreter? ?truebu1tracetrace? ?truebu1dynamicdynamic? ?truebu1assertaasserta? ?truebu1assertzassertz? ?truebu1assertassert? ?truebu1retractretract? ?truebu1retractallretractall? ?truebu1instanceinstance=? ?truebu1eraseerase? ?truebu1clauseclause=? ?truebu1abolishabolish=? ?truebu1debugdebug? ?truebu1consultconsult? ?truebu1reconsultreconsult? ?truebu1listinglisting ?truebu1listinglisting? ?truebu1listinglisting=? ?truebu1=>=>=? ?truebu1assumeiassumei? ?truebu1assumelassumel? ?truebu1assumedassumed? ?truebu1assumed_clauseassumed_clause=? ?truebu1assumed_clauseassumed_clause=? ?truebu1-:-:=? ?truebu1is_assumedis_assumed? ?truebu1is_dynamicis_dynamic? ?truebu1bbbb ?truebu1bbbb? ?truebu1bb_listbb_list? ?truebu1bb_elementbb_element=? ?truebu1sortsort=? ?truebu1keysortkeysort=? ?truebu1bagofbagof=? ?truebu1setofsetof=? ?truebu1^^=? ?truebu1free_variablesfree_variables=? ?truebu1notnot? ?truebu1term_charsterm_chars=? ?truebu1vars_ofvars_of=? ?truebu1user_erroruser_error=? ?truebu1errmeserrmes=? ?truebu1quietmesquietmes? ?truebu1mainmain ?truebu1mainmain? ?truebu1topleveltoplevel ?truebu1is_prologis_prolog? ?truebu1get_codeget_code? ?truebu1put_codeput_code? ?truebu1nlnl ?truebu1readread? ?truebu1read_termread_term=? ?truebu1top_read_termtop_read_term=? ?truebu1warn_singletonswarn_singletons=? ?truebu1read_with_singletonsread_with_singletons=? ?truebu1read_clauseread_clause? ?truebu1read_tokensread_tokens=? ?truebu1writewrite? ?truebu1printprint? ?truebu1writeqwriteq? ?truebu1portable_displayportable_display? ?truebu1displaydisplay? ?truebu1portrayportray? ?truebu1portray_clauseportray_clause? ?truebu1pp_clausepp_clause? ?truebu1pp_termpp_term? ?truebu1fast_writefast_write? ?truebu1ttyinttyin? ?truebu1ttyoutttyout? ?truebu1ttyputttyput? ?truebu1ttynlttynl ?truebu1ttyprinttyprin? ?truebu1ttyprintttyprint? ?truebu1ttycwritettycwrite? ?truebu1ttycwritelnttycwriteln? ?truebu1seesee? ?truebu1seeingseeing? ?truebu1seenseen ?truebu1telltell? ?truebu1tellingtelling? ?truebu1toldtold ?truebu1see_atsee_at? ?truebu1seeing_atseeing_at? ?truebu1tell_attell_at? ?truebu1telling_attelling_at? ?truebu1file_search_pathfile_search_path? ?truebu1file_extension_listfile_extension_list? ?truebu1file_libraryfile_library=? ?truebu1make_file_namemake_file_name=? ?truebu1find_filefind_file=? ?truebu1exists_fileexists_file? ?truebu1see_or_failsee_or_fail=? ?truebu1flushflush ?truebu1sreadsread=? ?truebu1swriteswrite=? ?truebu1bu0bu0=? ?truebu1bu1bu1? ?truebu1current_opcurrent_op=? ?truebu1opop=? ?truebu1is_builtinis_builtin? ?truebu1editedit=? ?truebu1my_editmy_edit? ?truebu1editedit ?truebu1eded ?truebu1textedittextedit ?truebu1emacsemacs ?truebu1picopico ?truebu1notepadnotepad ?truebu1vivi ?truebu1coco ?truebu1current_user_filecurrent_user_file? ?truebu1lsls ?truebu1dirdir ?truebu1make_applmake_appl? ?truebu1make_executable_unix_applmake_executable_unix_appl=? ?truebu1makemake ?truebu1makemake? ?truebu1makemake=? ?truebu1makemake=? ?truebu1makemake=? ?truebu1make0make0=? ?truebu1cmakecmake ?truebu1cmakecmake? ?truebu1cmakecmake=? ?truebu1kmakekmake ?truebu1kcmakekcmake ?truebu1tmaketmake ?truebu1tmaketmake? ?truebu1tmaketmake=? ?truebu1ctracectrace ?truebu1bootboot ?truebu1add_trueadd_true=? ?truebu1gc_readgc_read? ?truebu1gc_read_clausegc_read_clause? ?truebu1do_bodydo_body? ?truebu1tr_bodytr_body=? ?truebu1ith_clauseith_clause=? ?truebu1char_in_cmdchar_in_cmd=? ?truebu1show_code0show_code0=? ?truebu1bu_ctrbu_ctr=? ?truebu1patch_itpatch_it=? ?truebu1lwritelwrite? ?truebu1module_callmodule_call=? ?truebu1modulemodule? ?truebu1modulemodule=? ?truebu1is_moduleis_module? ?truebu1modulesmodules? ?truebu1current_modulecurrent_module? ?truebu1module_predicatemodule_predicate=? ?truebu1module_namemodule_name=? ?truebu1publicpublic? ?truebu1is_publicis_public? ?truebu1gensymgensym=? ?truebu1init_gensyminit_gensym? ?truebu1spy_goalspy_goal? ?truebu1spyspy? ?truebu1spyingspying? ?truebu1nospynospy? ?truebu1otherwiseotherwise ?truebu1falsefalse ?truebu1copy_termcopy_term=? ?truebu1phrasephrase=? ?truebu1phrasephrase=? ?truebu1nth_membernth_member=? ?truebu1member_imember_i=? ?truebu1savedsaved=? ?truebu1stat_dictstat_dict=? ?truebu1set_c_thresholdset_c_threshold? ?truebu1set_c_thresholdset_c_threshold=? ?truebu1set_c_traceset_c_trace? ?truebu1CC=? ?truebu1halthalt ?truebu1::=? ?truestat_dictruntimeruntime0 ?truestat_dictglobal_stackglobal_stack1 ?truestat_dictlocal_stacklocal_stack2 ?truestat_dicttrailtrail3 ?truestat_dictcodecode4 ?truestat_dictstringsstrings5 ?truestat_dictsymbolssymbols6 ?truestat_dicthtablehtable7 ?truestat_dictbboardbboard8 ?trueuser_error_ ? ? ? basic ? ?prolog:error_messageerrmes_ ? ? ? pretty ? ?prolog:error_messageprolog:error_message _JM0?5J 01J)0 prolog:portray_error???$bin_cut?tell?fail? user ?tellquietmes_JM0?4J 0?ttyprintquietmes_ ?trueprolog:portray_errorbasicbasic ? >>> B? ?B? : B? ?B?B?trueprolog:portray_errorprettypretty write?write: cnlportray_clause?? *** ?writemember_.?? ?truemember_.??membernth_member_ ? ? 1 ?member_imember_i_ ?.?? ?truemember_i_.???1J0member_i:_module_callmodule_call_ ? $bin_cut?call??is_publicmodule_call_ call?? ?module_predicatemodule_predicate _ .?? module_name??? =..?4 ??3 .?? ? ?  ?=..module_name _ ?B? ?B?? .?[] ? ?.58[] name?? det_append?4 ? ? name? ??3 .?? ?namemodule_name_ ? .?.?[] should_be_nonvar ?user_errormodule_ ? bb_letmodule_name??? current module_namebb_letmodule_ member??prolog:public0?fail? ?modulemodule_ ?truecurrent_module_ $bin_cut?=??? current module_namebb_valcurrent_moduleuseruser ?trueis_module_ ? ? ?B?? module_name ? ?bb_valis_module_ bb_element4???3=4?>?3+4?/?03/module_name0 ? ?bb_listmodules_ ? ? is_module?findallprolog:hide_atom_ $bin_cut?? ?prolog:hide_atom0prolog:hide_atom_ ? ?trueprolog:hide_atom0_ $bin_cut?fail? usercurrent_moduleprolog:hide_atom0_ $bin_cut?fail?is_publicprolog:hide_atom0_ module_predicate???? ? ?current_moduleprolog:public0 //?? current_module?bb_defpublic??$bin_cut?? ?functorprolog:public0_ ? public? bad or repeated declarationerrmespublic,,??? public?? ?publicpublic_prolog:public0is_public_ ? ?prolog:is_publicprolog:is_public_ ? $bin_cut?=??? public ? ?bb_valprolog:is_public_ ?is_builtininit_gensym_ ? ? gensym ? 0bb_letgensym_ symcat???? ? ?prolog:gensym_noprolog:gensym_no_gensym?J0??1J1gensym??J0 ?trueprolog:gensym_no_ ?1gensym??J0 ?truecurrent_op_ ? ? ?B?? ?prolog:get_opcurrent_op _ if4?4?4 ??3valopmark??3prolog:get_op???3 ,4 ?fail3 $bin_cut? ? 0 10000 ?forop_???J/0 ?trueprolog:get_op_ prolog:get_op0????? ? ? ?prolog:op_typeprolog:get_op0_??J1??J1?0J 0 ?trueprolog:op_typexfyxfyinfixop ?trueprolog:op_typexfxxfxinfixop ?trueprolog:op_typeyfxyfxinfixop ?trueprolog:op_typefxfxprefixop ?trueprolog:op_typefyfyprefixop ?trueprolog:op_typexfxfpostfixop ?trueprolog:op_typeyfyfpostfixop ?trueis_dynamic_?$firstJ0 ?trueis_assumed_$assumed?J0 ?B? ?truespy_goal_tracespying_ yes ?spying?J1 ?truespy //?? \+4?$bin_cut?bb_letspying?yes?3is_builtin? ?functorspy_ ? ? unable_to_spy_on ?user_errornospy//??? bb_rmspying?? ?functorprolog:is_builtin_nonvar_ bu1? $bin_cut?? ? ?metacallprolog:is_builtin_nonvar_ cont>? prolog:bu?>?? ?termcatprolog:is_builtin_var_ bu1? ?metacallprolog:is_builtin_var_ strip_cont??>?? ? ? ?prolog:buis_builtin_ ?B??prolog:is_builtin_nonvaris_builtin_prolog:is_builtin_varinteractive_ ? ?B?? =?yes =?no prolog:is_interactiveifinteractive_ ?B?prolog:interactive0prolog:is_interactive_ ? current_op1199fx?-\+prolog:interactive0yesyes ? 1200 fx ?-opprolog:interactive0nono ? 1199 fx ?-opexpand_term_prolog:portable_expand_termprolog:std_expand_term_prolog:portable_expand_termstrip_cont_ -???J51 ?truemetatrue_ metacall??strip_contmetacall_ ? meta_interpreter? call_ifdef?user_errorno meta_interpreter for undefined goal? ?prolog:call_ifdefotherwise_truefalse_B?trueprolog:call_ifdef_ ? ?B??callprolog:call_ifdef_ ? ?call=_ ? ?true->_ $bin_cut?call?? ?call;->->?? ? ?? ? ?if;_ ?call;_ ? ?callor_ ?callor_ ? ?callif_ $bin_cut?call?? ?callif_ ? ?call,_ call?? ?call\+_ $bin_cut?fail? ?call\+_ ?true\=_ ? ??B?true\=_ ?truehalt_0JU0truerepeat_truerepeat_repeatfindall_workhorse _??J$0 findall_store_heap?? ? ?callfindall_workhorse_ ? ?findall_load_heapfindall_ ? .?? . 0findall_workhorsefindall_ ? []findallfindall_conj_ ? truefindall_conjfindall_conj_ ? ,?? , 0findall_workhorsefindall_disj_ ? failfindall_disjfindall_disj_ ? ;?? ; 0findall_workhorsewhile_ if4?true4??3call?3,4?fail3$bin_cut? ? ?callskip_until_ if4?fail4??3call?3$bin_cut? ? ?callskip_when_ if4?failtrue?3call? ? ?callnth_answer_?1J0 ? ?s? has_fuel?skip_untiltake_at_most_ ? ?s? has_fuel?whiledrop_at_least_ ? ?s? has_fuel?skip_whenhas_fuel_1?J0?0J 0?1J01??J0 ?truefind_while_ while?? ? ? ? ?findallfind_at_most_ take_at_most?? ? ? ? ?findallall_but_at_least_ drop_at_least?? ? ? ? ?findallall _ findall4?4? ? prolog:share_vars ? ???3-? ?3call?  ? ?prolog:are_sharedprolog:are_shared _vars?? free_variables??[]?? [] ?free_variablesprolog:share_vars[][][] ?trueprolog:share_vars..??-?? ?.?? ?prolog:share_varsgc_read_ ? read? .?[] ?findallgc_read_clause_ ? read_clause? .?[] ?findallgc_call_ call? member??? ?findallfor_ ???J 0 ?truefor_??J 0?1J0forargn_ ?B????J1 ?trueargn _ for?1?arg???? ? ? ? ?functornumbervars$VAR$VAR? ? ???1J1truenumbervars_ ?B?? ? ? ?truenumbervars..??? numbervars???? ? ?numbervarsnumbervars_ prolog:numbervars0????? ? ? ?functorprolog:numbervars_ ? ?? ? ?trueprolog:numbervars _?1J0??J0 prolog:numbervars?????? ?  ?numbervarsground_ greater?0$bin_cut?fail? 0numbervarsground_ ?truecopy_term_0?J&1 ?trueprolog:save_term_1?J&1 ?trueflush_2J+0trueprolog:see_or_fail_0?J*0 ?trueexists_file_ seen? ?prolog:see_or_failsread_0?J.1 ?trueswrite_1?J.1 ?truesystem[][] ??truesystem..??? .?? shell?? ?namesystem_ ?B?shell._[] ?compileinclude_compilecompile_ prolog:compile_mem?abort? ?find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[] .46.46.47.115.114.99[] prolog:getenv_path4???3.112.114.111.103.115[] ?prolog:getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[] ?truefile_library..?[].?[].46?.112?.108[] .46.46.47.108.105.98.114.97.114.121[] ?prolog:getenv_pathprolog:getenv_path _ ? ?.47[] unix_getenvBP_PATH? ,4 ? det_append ?? ?3 name? ? = ?[] det_append???det_append ???? ?  ?  ?ifmake_file_name _ ? member ?? name? ? det_append ? ? ? det_append? ? ? name? ?? ? ?memberstatistics_.??.?[] stat0???? ?stat_dictstatistics_ cwrite?cwrite=cwrite?cnlfail? ?statisticsstatistics_trueatom_ ?B??B? ?trueatom_ ?B? ?truefloat_ ?B? ? ?$float=? ?truenumber_ ?B?? ?truenumber_floatcompound_ ?B? atomic? ?\+=.._ ?B???J 1 ?true=.._?.[]J!1 ?trueprolog:term2list_?.[]J!1 ?trueprolog:term2dlist_?.?J!1 ?truedet_append_ ->????J%1 ?trueprolog:det_append_ -????J%1 ?trueappendN_ ? []prolog:appendNprolog:appendN[][] ? ?trueprolog:appendN ..?? ->???2?J%1prolog:appendNprolog:append_body_ ? ?prolog:append_bodyprolog:append_body _ det_append0??4 ? if4 ?4 ?4 ??3 compare0 ??=3 =??3 =..?.? . ? .?[]3 - ?? ? 2 ?functorappend_conj _ ? ,?? ,?? ?  ? trueprolog:append_bodyappend_disj _ ? ;?? ;?? ?  ? failprolog:append_body._.?? ?true++_ -[]???J%1 ?trueappend_ -???2?J%1 ?prolog:general_appendprolog:general_append[][] ? ?trueprolog:general_append..??.??prolog:general_appendlength_ ? ? ?B?? 0 ?prolog:get_lengthlength_ ? ? 0 ?prolog:make_lengthprolog:get_length[][] ? ?trueprolog:get_length..???1J0prolog:get_lengthprolog:make_length[][] ? ??trueprolog:make_length..????J 0?1J0prolog:make_lengthtab_ integer?$bin_cut?prolog:tab0?? ?exprtab_ ? ? in tab/1: should evaluate to an integer ?user_errorprolog:tab0_ ? put32fail? ? 1forprolog:tab0_ ?trueget _ get0?or4?4?$bin_cut?=???3greater?323less?0 ?repeatis_ $bin_cut?=??? ? ? ?expris_ is?? error_in_is ?errmesexpr_ ?B?? ? ? ?trueexpr_ $bin_cut?=??? ?floatexpr_ ? ?B?? variable_in_is ?user_errorexpr _ $bin_cut?arg1??arg2??expr??expr??=..?4 ? call?$bin_cut??3 . ?.?.?.?[]  ? 2functorexpr _ arg1??expr??=..?4? call?$bin_cut??3.?.?.?[] ? 1functorcompare_??J1 ?true+_ ? ?true-_0?J1 ?true\_0?J1 ?true==_ = ???J1 ?true\==_??J0 ?prolog:$noteq@<_ < ???J1 ?true@>_ > ???J1 ?true@=<_??J0 ?prolog:$lesseq@>=_??J0 ?prolog:$gteq<_ expr??less??? ?expr>_ expr??greater??? ?expr=<_ expr??less_eq??? ?expr>=_ expr??greater_eq??? ?expr=:=_ expr??arith_eq??? ?expr=\=_ expr??arith_dif??? ?exprprolog:$lesseq<< ?trueprolog:$lesseq== ?trueprolog:$gteq>> ?trueprolog:$gteq== ?trueprolog:$noteq<< ?trueprolog:$noteq>> ?truebb_def_ def???? ? ?savedbb_set_ set???? ? ?savedbb_val_??J0 ? ?copy_termbb_rm_??J0 ?truebb_change_arg _ let???change_arg???? ? ? ?savedbb_let_??J0?bb_setbb_let_bb_defbb_def_ ? ? ? ? ? ?bb_defbb_set_ ? ? ? ? ? ?bb_setbb_val_ ? ? ? ? ? ?bb_valbb_rm_ ? ? ? ?bb_rmbb_let_ ? ? ? ? ? ?bb_letprolog:bb_default_val_ ? $bin_cut??bb_valprolog:bb_default_val_ ? ?truesaved_ $bin_cut?=??? ?prolog:save_termsaved_ prolog:save_term??$bin_cut?=??? ?prolog:bb_gcsaved_ ? /saved2prolog:bb_failsaved_ abort?restartlet_???J0? ?truelet_???J0 ?trueprolog:def_???J0 ?trueprolog:set_???J0 ?trueprolog:val_??J1 ?trueprolog:let_ ? ? ? ? ? ?letprolog:rm_??J0 ?true#_J1 ?truedcg_phrase_ ? ? ? 1 ? ?dcg_phrasedcg_phrase _J90?J80?J60 dcg_val[]dcg_tell?? ? ?call:=:##?? ????J1true:=:_??J1 ?trueprolog:bb_gc_31J'0 bb_resetprolog:bb_put_back?? ?copy_termprolog:bb_put_back[][] ?trueprolog:bb_put_back ..??.??.??.??.? ? functor ???prolog:bb_put_1? ??prolog:bb_put_back ?? ?functorprolog:bb_put_1_ set???$bin_cut?=??? ? ?prolog:save_termprolog:bb_put_1_ +?? ? ?prolog:bb_failprolog:bb_fail _ .>?.?[] user_error4?4??3blackboard overflow, left only?3culprit? bboard ?statisticsprolog:try_float _.??.??integer?box??atom..??atom?? name ??input_float? ????prolog:try_float_expprolog:try_float_.??integer?box?? ?trueprolog:try_float_exp..??atome $bin_cut?? ?prolog:try_float_exp1prolog:try_float_exp..??atom? ? .?[] ? ?.101[] .?? name??integer?$bin_cut?? ?nameprolog:try_float_exp_ ?0 ?trueprolog:try_float_exp1 ..??.??integer?box??atom- ? ??0?J1trueprolog:try_float_exp1 ..??.??integer?box??atom+ ? ? ?trueprolog:float_minus_ $float000??J1 ?truepow_pow??J11 ?truelog_log??J11 ?truesqrt_pow? $float02679111680?J11 ?trueexp_exp?J21 ?truelog_log?J21 ?truesin_sin?J21 ?truecos_cos?J21 ?truetan_tan?J21 ?trueatan_T?J21 ?trueasin_S?J21 ?trueacos_C?J21 ?trueinteger_integer?J21 ?truefloat_ $float000??J1 ?truectime_ ? .?.>?[] runtimestatisticsprolog:is_predicate_ ?B?? ?trueprolog:is_predicate_ $bin_cut?? ?is_dynamicprolog:is_predicate_is_assumedpredicate_property_ ?B??prolog:predicate_property0predicate_property _ functor???prolog:predicate_property0??? ? ? ?prolog:generate_a_predicateprolog:predicate_property0_ $bin_cut?or4?4??3=?dynamic3=?interpreted ?is_dynamicprolog:predicate_property0_ $bin_cut?or4?4??3=?assumed3=?interpreted ?is_assumedprolog:predicate_property0_built_in $bin_cut??is_builtinprolog:predicate_property0_compiled ?B? ?truecurrent_predicate_ ?B?? functor??>?? ? ?prolog:is_predicatecurrent_predicate_ functor???? ?prolog:generate_a_predicatecurrent_predicate//?? ?B? ?B?? prolog:is_predicate?$bin_cut?? ?functorcurrent_predicate//?? ? ?prolog:generate_a_predicateprolog:predicate_key0//$assumed0 ? ? ?B?trueprolog:predicate_key0_ ? ?/$first0trueprolog:predicate_key0 //predmark0predmark ?/??/???0J 0?1J1trueprolog:generate_a_predicate _00J'0 =4??3+? ? prolog:predicate_key0? ??4??3/?? ? ?  ?bb_elementhelp_aproposapropos _ apropos?? sort??member??write?cnlfail? ?findallapropos_ ?trueapropos _-??/?? predicate_property ??functor ???name??prolog:near_match??? ?nameprolog:near_match_ ? ??trueprolog:near_match_ ? $bin_cut?? ? ?prolog:append3prolog:near_match _ ? prolog:append3?4??? $bin_cut??3.>?? ?prolog:append3prolog:append3_ append???? ? ?appendprolog:unix_cd_HOMEJI0?JK0trueprolog:unix_argv _ ? ?JG0?1J0 ,4?unix_argv??3for?1?findallunixargcargc? ?JG1trueunixargvargv?prolog:unix_argvunixgetenvgetenv?? ? unix_getenv?? errmesno such environment variable? trueifunixaccessaccess?? ???JJ0trueunixcdcd? ??JK0trueunixcdcd ?prolog:unix_cdunixkillkill?? ???JL0trueprolog:try_dcg_expansion_ -->?? $bin_cut?? ? ? ?prolog:dcg_ruleprolog:try_dcg_expansion_ ? ? dcg expansion error-> ?errmesprolog:dcg_rule -->-->?? prolog:dcg_body???? prolog:dcg_conj ??? =?4 ??3 :-??  ?prolog:dcg_headprolog:dcg_head @@@@??true ?@@? ?? prolog:dcg_body? ????  ?prolog:dcg_bodyprolog:dcg_head_true ? ? ?prolog:dcg_goalprolog:dcg_head ,,??? prolog:dcg_body????? ? ?  ?prolog:dcg_goalprolog:dcg_head_true ? ? ?prolog:dcg_goalprolog:dcg_goal_? +???J01 ?trueprolog:dcg_body_ ?B?? ? ?phrase??? ?trueprolog:dcg_body ,,??? prolog:dcg_body?? ?? prolog:dcg_conj ????  ?  ? ?prolog:dcg_bodyprolog:dcg_body ->->??->??? prolog:dcg_body????? ?  ?prolog:dcg_bodyprolog:dcg_body ;;??;??? prolog:dcg_disj?????  ?prolog:dcg_disjprolog:dcg_body{}{}? ? ? ??trueprolog:dcg_body!!! ? ??trueprolog:dcg_body[][]true ? ??trueprolog:dcg_body ..??? prolog:dcg_body?? ?? prolog:dcg_conj ????  ?  ? ?prolog:dcg_termprolog:dcg_body_prolog:dcg_goalprolog:dcg_term_C??? ?trueprolog:dcg_disj _ prolog:dcg_disj0?????? ? ?prolog:dcg_bodyprolog:dcg_disj0 _ = ???J1? =?? ? ? ? ?prolog:dcg_conjprolog:dcg_disj0_ ? ? ?trueprolog:dcg_conj_true ? ??trueprolog:dcg_conj_prolog:dcg_CONJprolog:dcg_CONJtruetrue ? ??trueprolog:dcg_CONJ,,??,???prolog:dcg_CONJprolog:dcg_CONJ_,?? ?trueC..?? ? ? ?truephrase_ ? []phrasephrase _ =??=?? call?? ? ?prolog:dcg_bodyprolog:portable_expand_term-->-->?? ? ?? ? ?prolog:try_dcg_expansionprolog:portable_expand_term-->>-->>??? ? ?try_edcg_expansion??? errmesexpected_to_expand?prolog:call_ifdefprolog:portable_expand_term_ ? ?trueprolog:default_prologbinprologbinprolog ?trueprolog:peval_ioget_codeget_code? ?get0?trueprolog:peval_ioput_codeput_code? ?put?trueprolog:peval_ionlnlcnl ?trueprolog:peval_ioseeingseeing? ?seeing_telling0?trueprolog:peval_iotellingtelling? ?seeing_telling1?trueprolog:peval_ioseeing_atseeing_at? ?seeing_telling_at0?trueprolog:peval_iotelling_attelling_at? ?seeing_telling_at1?trueprolog:peval_iofast_writefast_write? ?cwrite?truefast_write_ ?B? ?trueget_code_J1 ?trueput_code_?J0 ?truenl_B?truesee_0?J*0? ?truesee_ ? ? unable_to_see ?user_errorseeing_0J)1 ?truetelling_1J)1 ?truetell_1?J*0? ?truetell_ ? ? unable_to_tell ?user_errorseen_0J+0truetold_1J+0truesee_at_0?J-0? ?truesee_at_ ? ? unable_to_see_at ?user_errortell_at_1?J-0? ?truetell_at_ ? ? unable_to_tell_at ?user_errorseeing_at_0J,1 ?truetelling_at_1J,1 ?truefind_file _ $bin_cut?file_search_path?file_extension_list?prolog:find_file1????? ?atomfind_file librarylibrary? $bin_cut?file_library??prolog:find_file1????? ?atomfind_file_ ? bad file name ?user_errorprolog:find_file1 _ ? ? ? ? ?0J)0 ?  ?  ?  ?prolog:find_file2prolog:find_file2 _ $bin_cut? see?? ? ? ? ?prolog:see_a_fileprolog:find_file2_ findall ?4 ? ? findall ?4 ? ?errmes4?4??3file_not_found?3+4? ?3+ ??3 ,4 ? name ? ?3 member ??3 ,4 ? name ? ?3 member ?? ?seeprolog:see_a_file _ prolog:see_or_fail?seen? ?make_file_nameread_clause_ warn_singletons???? ?read_with_singletonsread_with_singletons_ prolog:singletons??? ?prolog:r_termwarn_singletons ..?? ? ?J M0 ?1J 0 .?? fail? ? ?prolog:warn_singletons1warn_singletons_ ?trueprolog:warn_singletons1:-:-? ??trueprolog:warn_singletons1_ :-?>? seeing_telling_at0 ? prolog:melt_varnames? ttyout4 ? $bin_cut??3 ,4 ? ,4 ? ,nl ,4 ? ,4 ?,4?,nlnl3cwrite:-...3 print?3 print=> 3 print ** warning singleton_variables, byte=> ?3 print? ? ?add_trueprolog:melt_varnames[][] ?trueprolog:melt_varnames..??var???prolog:melt_varnamesread_ ? ?prolog:r_termtop_read_term_read_termread_term_ prolog:r_vars??? ? ?prolog:r_termprolog:r_vars[][][] ?trueprolog:r_vars..??var???.??=??prolog:r_varsprolog:singletons _ ? ? member4??3var?>?s0 ? ?findallprint_prolog:portable_printwrite_prolog:portable_writewriteq_prolog:portable_writeqttyin_0J)0 call?see?? user ?seettyout_1J)0 call?flushtell?? user ?tellttyprin_ write? ?ttyoutttyprint_ ,4?nl3write? ?ttyoutttycwrite_ cwrite? ?ttyoutttycwriteln_ ,4?nl3cwrite? ?ttyoutttynl_ ? nlttyoutttyput_ put? ?ttyoutdisplay_ portable_display? ?ttyoutprolog:r_term_ read_tokens??prolog:r_and_check??$bin_cut?=??? ?repeatprolog:r_and_check_ ? prolog:all_read?? 1200 ?prolog:rtprolog:r_and_check_ ?prolog:syntax_errorprolog:all_read[][] ??trueprolog:all_read_ ? ? .operator.expected.after.expression[] ?prolog:syntax_errorprolog:expect_.??? ?trueprolog:expect_ ? .?.or.operator.expected[] ?prolog:syntax_errorprolog:prefixop_ ? ? $bin_cut?? prefixop fy ?prolog:get_op0prolog:prefixop_ ? -?1?? prefixop fx ?prolog:get_op0prolog:postfixop_ ? ? $bin_cut?? postfixop yf ?prolog:get_op0prolog:postfixop_ ? -?1?? postfixop xf ?prolog:get_op0prolog:infixop _ ? ? $bin_cut? -?1?? infixop xfx ? ?prolog:get_op0prolog:infixop _ ? ? $bin_cut? -?1?? infixop xfy ? ?prolog:get_op0prolog:infixop _ ? ? -?1?? infixop yfx ? ?prolog:get_op0prolog:ambigop _ prolog:infixop????? ? ?  ?prolog:postfixopprolog:rt[][] ? .expression.expected[] []prolog:syntax_errorprolog:rt ..?? ? ? ? ? ?  ?  ?  ?prolog:rtsprolog:rtsvarvar??.(?? prolog:r_args ? ? ? $bin_cut? prolog:exprtl0 ?4 ?????3 apply?.? ? 999  ?  ?prolog:rtprolog:rts varvar?? ?? ?prolog:exprtl0prolog:rts atomatom-.??integer?box? ?0?J0?prolog:exprtl0prolog:rts atomatom-.? ?atom? prolog:float_minus?? $bin_cut? prolog:exprtl0 ??????floatprolog:rtsatomatom?.(?? prolog:r_args ? ? ? =.. ?4?$bin_cut?prolog:exprtl0 ? ?????3.?.? ? 999  ?  ?prolog:rtprolog:rts atomatom? $bin_cut? prolog:after_prefix_op? ? ??????  ?  ? ?prolog:prefixopprolog:rts atomatom? ?? ?prolog:exprtl0prolog:rts integerinteger?box?? ?? ?prolog:exprtl0prolog:rts[[.]?? []prolog:exprtl0prolog:rts [[ ?? prolog:r_list ? ? ? $bin_cut? prolog:exprtl0 ?4 ?????3 .? ? 999  ? ?prolog:rtprolog:rts (( ?? prolog:expect) ? ? $bin_cut? prolog:exprtl0 ? ????? 1200  ?  ? ?prolog:rtprolog:rts (((( ?? prolog:expect) ? ? $bin_cut? prolog:exprtl0 ? ????? 1200  ?  ? ?prolog:rtprolog:rts{{.}?? {}prolog:exprtl0prolog:rts {{ ?? prolog:expect} ? ? $bin_cut? prolog:exprtl0 ?4 ?????3 {}? 1200  ? ?prolog:rtprolog:rts stringstring? ?? ?prolog:exprtl0prolog:rts _ ? .? .cannot .start .an .expression[] ?prolog:syntax_errorprolog:r_args ..,?.??? $bin_cut? prolog:r_args ???? 999 ?  ?prolog:rtprolog:r_args..)?[] ? ??trueprolog:r_args_ ? ? .,).expected.in.arguments[] ?prolog:syntax_errorprolog:r_list ..,?.??? $bin_cut? prolog:r_list ???? 999 ?  ?prolog:rtprolog:r_list ..|? ?? $bin_cut?prolog:expect]??? 999 ? ?prolog:rtprolog:r_list..]?[] ? ??trueprolog:r_list_ ? ? .|].expected.in.list[] ?prolog:syntax_errorprolog:after_prefix_op _ ???J 0? .prefix .operator .? .in .context .with .precedence .?[]  ? ?prolog:syntax_errorprolog:after_prefix_op _ prolog:prefix_is_atom ?? prolog:exprtl ??????? ?  ?prolog:peepopprolog:after_prefix_op_ =.. ?4 ? $bin_cut? prolog:exprtl ?? ?????3 .? . ?[] ? ?  ?  ?  ?prolog:rtprolog:peepop ..??.(?atom? ?.??.(?atom??trueprolog:peepop ..??atom? ?.??infixop????prolog:infixopprolog:peepop..??atom? ?.??postfixop???prolog:postfixopprolog:peepop_ ? ?trueprolog:prefix_is_atom..??prolog:prefix_is_atomprolog:prefix_is_atominfixopinfixop??=? ???J 0trueprolog:prefix_is_atompostfixoppostfixop??? ???J 0trueprolog:prefix_is_atom)) ?trueprolog:prefix_is_atom]] ?trueprolog:prefix_is_atom}} ?trueprolog:prefix_is_atom|| ?1100?J 0trueprolog:prefix_is_atom,, ?1000?J 0trueprolog:prefix_is_atom[][] ?trueprolog:exprtl0..? ?atom? $bin_cut? or4 ?4 ??3 prolog:exprtl4 ?0????3 .4 ? ?3 infixop? ? ? ?3 prolog:exprtl4 ?0????3 .4 ? ?3 postfixop???  ?  ?  ?prolog:ambigopprolog:exprtl0 ..??atom? $bin_cut? prolog:exprtl4 ?0?????3 .4 ??3 infixop????  ?prolog:infixopprolog:exprtl0 ..??atom? $bin_cut? prolog:exprtl4 ?0?????3 .4 ??3 postfixop???  ?prolog:postfixopprolog:exprtl0 ..,??1000J 0? $bin_cut? prolog:exprtl ?10004 ?????3 ,?? 1000  ? ?prolog:rtprolog:exprtl0 ..|??1100J 0? $bin_cut? prolog:exprtl ?11004 ?????3 ;?? 1100  ? ?prolog:rtprolog:exprtl0 ..?? $bin_cut? prolog:syntax_error4 ?4 ??3 .? .follows .expression[]3 .??prolog:cant_follow_exprprolog:exprtl0_ ? ? ?trueprolog:cant_follow_expratomatom?atom ?trueprolog:cant_follow_exprvarvar=?variable ?trueprolog:cant_follow_exprintegerinteger?integer ?trueprolog:cant_follow_exprstringstring?string ?trueprolog:cant_follow_expr((((bracket ?trueprolog:cant_follow_expr((bracket ?trueprolog:cant_follow_expr[[bracket ?trueprolog:cant_follow_expr{{bracket ?trueprolog:exprtl..??infixop? ? ? ?? ?J 0? ?J 0? =.. ?4?prolog:exprtl? ? ?????3.?.?.?[]  ? ?  ?prolog:rtprolog:exprtl..? ?postfixop? ? ?? ?J 0? ?J 0? .?.?[] prolog:peepop ? ?prolog:exprtl ? ??????=..prolog:exprtl ..,??1000J 0?1000J 0? $bin_cut? prolog:exprtl ?10004 ?????3 ,?? 1000  ?  ?prolog:rtprolog:exprtl ..|??1100J 0?1100J 0? $bin_cut? prolog:exprtl ?11004 ?????3 ;?? 1100  ?  ?prolog:rtprolog:exprtl _ ? ? ?trueprolog:syntax_error_0J)00J,0 prolog:start_syntax_error???see?fail? user ?seeprolog:start_syntax_error _B? display?prolog:display_list?length??bb_letsyntax_errorlength?$bin_cut?? ** SYNTAX ERROR: byte= ?displayprolog:start_syntax_error_ ?trueprolog:syntax_error_0J)0 prolog:finish_syntax_error?see?fail? user ?seeprolog:finish_syntax_error_syntax_errorlengthJ0 -???prolog:display_list??$bin_cut?? ?lengthprolog:display_list..?? prolog:display_token?$bin_cut?prolog:display_list?? 32 ?ttyputprolog:display_list[][] ?ttynlprolog:display_list_0 $bin_cut?prolog:display_list?99999?  displayprolog:display_list ..?? ttyput32-?1?$bin_cut?prolog:display_list??? ?prolog:display_tokenprolog:display_list[][] ?ttynlprolog:display_tokenatomatom? $bin_cut?write_float?? ?floatprolog:display_tokenatomatom??displayprolog:display_tokenvarvar???displayprolog:display_tokenintegerinteger?box???displayprolog:display_token stringstring?? .?[] ? ?.34[] .?? .?[] name??display?? ?det_appendprolog:display_token_displayread_tokens_ append?[]?$bin_cut?=??=??? 32 ? ?prolog:r_toksread_tokens..?[]atomend_of_file[] ?trueprolog:r_toks-1-1 ??B?trueprolog:r_toks_?32J 0?J0prolog:r_toksprolog:r_toks3737? get0?prolog:is_terminator?$bin_cut?arith_dif?-1get0?prolog:r_toks????repeatprolog:r_toks4747?J0prolog:r_solidusprolog:r_toks3333.??atom!?J0prolog:r_after_atomprolog:r_toks4040.((??J0prolog:r_toksprolog:r_toks4141.)??J0prolog:r_toksprolog:r_toks4444.,??J0prolog:r_toksprolog:r_toks5959.??atom;?J0prolog:r_toksprolog:r_toks9191.[??J0prolog:r_toksprolog:r_toks9393.]??J0prolog:r_toksprolog:r_toks123123.{??J0prolog:r_toksprolog:r_toks124124.|??J0prolog:r_toksprolog:r_toks125125.}??J0prolog:r_toksprolog:r_toks4646?J0prolog:r_fullstopprolog:r_toks3434.??string?? prolog:r_toks???? 34 ?prolog:r_stringprolog:r_toks 3939.??atom?? name??prolog:r_after_atom???? 39 ?prolog:r_stringprolog:r_toks_.??var?? $bin_cut? prolog:r_name? ? ? or4 ?4 ?$bin_cut?prolog:r_toks ????3 ,4 ?=?_3 = ? .95[]3 ,4 ? ,4 ?prolog:r_lookup????3 name? ?3 = ? .?>?  ?prolog:is_majprolog:r_toks _ $bin_cut?prolog:r_integer??? ? prolog:r_toks??? prolog:try_float ????? ?prolog:is_numprolog:r_toks _.??atom? $bin_cut? prolog:r_name? ? ? name? ? prolog:r_after_atom ???? ?prolog:is_minprolog:r_toks _.??atom?J0 name?4? prolog:r_after_atom????3.?? ?  ?prolog:r_symbolprolog:r_after_atom4040.(??J0prolog:r_toksprolog:r_after_atom_prolog:r_toksprolog:r_string _ ? ? ? ?J0 ? ?  ?prolog:r_stringprolog:r_string-1-1-1 ttyput?displaytokenttyput?ttynl$bin_cut?fail? ! end of file in: displayprolog:r_string _ ? ? ??J0 ? ?prolog:more_stringprolog:r_string_.?? ? ? ?prolog:r_stringprolog:more_string_ ? ?.??? ? ? ?prolog:r_stringprolog:more_string_[] ? ?trueprolog:patch_slash..((? ?.(??trueprolog:patch_slash_ ? ?trueprolog:r_solidus4242?J0 prolog:r_toks???? ? ?prolog:r_solidusprolog:r_solidus _.??atom? name?4? prolog:r_toks?? ? prolog:patch_slash ???3.47? ?prolog:r_symbolprolog:r_solidus-1-1-1? ttynl? ! end_of_file in /*.. commentdisplayprolog:r_solidus4242J0?47J0?prolog:r_solidusprolog:r_solidus424232 ??trueprolog:r_solidus_J0prolog:r_solidusprolog:r_name _.?? $bin_cut?get0?prolog:r_name????prolog:is_alpha_numprolog:r_name_[] ? ?trueprolog:r_symbol _.?? get0?prolog:r_symbol????prolog:is_specprolog:r_symbol_[] ? ?trueprolog:r_fullstop-1-1? ttynlfail? ! end_of_file just after full_stopdisplayprolog:r_fullstop_[]?32J 0? ?trueprolog:r_fullstop _.??atom? name?4? prolog:r_toks????3.46? ?prolog:r_symbolprolog:r_integer _ ? ??48J0J 0 . ?[] ? ? .46[] =?4 ??3 . ? .??  ? ?  ?prolog:r_intprolog:r_int -1-1 ??B?trueprolog:r_int 39390 ?.39?.?[]?J1?-1J0J1trueprolog:r_int 3939 $bin_cut?? 0 ?prolog:r_digitsprolog:r_int _ ? ? ? ? 10  ?  ?  ?prolog:r_digsprolog:r_digits_ ? ? ? ? ? ?J0?-1J0 ?  ?  ?  ?  ?prolog:r_digsprolog:r_digs _.? ??48J 0?57J 0???J 0 ?48J 0 ??J0 ? ? ?  ? ?prolog:r_digitsprolog:r_digs _ ? ?[] ?trueprolog:r_lookup ..??var??? ? ? ??prolog:r_varcountprolog:r_lookup..??prolog:r_lookupprolog:r_varcount_ .?[] ? ?.95[]? ? ?s1 ?trueprolog:r_varcount_ ?B?? ? ?s? ?trueprolog:r_varcountss1 ?trueprolog:is_alpha_num_?97J 0?122J 0 ?trueprolog:is_alpha_num_?65J 0?90J 0 ?trueprolog:is_alpha_num_?48J 0?57J 0 ?trueprolog:is_alpha_num9595 ?trueprolog:is_alpha_num_prolog:is_latin1_minprolog:is_alpha_num_prolog:is_latin1_majprolog:is_maj_?65J 0?90J 0 ?trueprolog:is_maj9595 ?trueprolog:is_maj_prolog:is_latin1_majprolog:is_min_?97J 0?122J 0 ?trueprolog:is_min_prolog:is_latin1_minprolog:is_num_?48J 0?57J 0 ?trueprolog:is_latin1_maj_?192J 0?214J 0 ?trueprolog:is_latin1_maj_?216J 0?222J 0 ?trueprolog:is_latin1_min_?223J 0?246J 0 ?trueprolog:is_latin1_min_?248J 0?255J 0 ?trueprolog:is_terminator1010 ?trueprolog:is_terminator1313 ?trueprolog:is_terminator-1-1 ?trueprolog:is_spec3535 ?trueprolog:is_spec3636 ?trueprolog:is_spec3838 ?trueprolog:is_spec4242 ?trueprolog:is_spec4343 ?trueprolog:is_spec4545 ?trueprolog:is_spec4646 ?trueprolog:is_spec4747 ?trueprolog:is_spec5858 ?trueprolog:is_spec6060 ?trueprolog:is_spec6161 ?trueprolog:is_spec6262 ?trueprolog:is_spec6363 ?trueprolog:is_spec6464 ?trueprolog:is_spec9292 ?trueprolog:is_spec9494 ?trueprolog:is_spec9696 ?trueprolog:is_spec126126 ?trueportable_display_ ? displayprolog:w_outprolog:portable_print_ ? printprolog:w_outprolog:portable_write_ ? writeprolog:w_outprolog:portable_writeq_ ? writeqprolog:w_outprolog:w_out_ fail? 1200 punct ?prolog:w_outprolog:w_out_ ?trueprolog:maybe_paren _punct??J 0??J0 ?trueprolog:maybe_paren_ ? ?trueprolog:maybe_spacepunctpunct ??trueprolog:maybe_space_ ? ??32J0trueprolog:maybe_spacequotequotealpha ??32J0trueprolog:maybe_space_ ?trueprolog:put_string[][] ?trueprolog:put_string..???J0prolog:put_stringprolog:put_string[][] ??J0trueprolog:put_string..?? ???J0?J0 ?prolog:put_stringprolog:put_string..???J0prolog:put_stringprolog:w_variable_ ?B? ?trueportray_writeprolog:w_out _alpha ?B?? prolog:w_variable?? ? alphaprolog:maybe_spaceprolog:w_out$VAR$VAR? ? ? ??prolog:w_VARprolog:w_out _alpha ?B? ,4 ? prolog:maybe_space?other3 less?0 prolog:maybe_space?alpha $bin_cut? cwrite?? ?orprolog:w_out_printalpha $bin_cut??portrayprolog:w_out _punct current_op ?>?? greater ?? $bin_cut? put40 or4 ?4 ? $bin_cut? put41?3 ,4 ? prolog:w_atom??punct>?3 =?writeq3 cwrite? ?atomprolog:w_out _ $bin_cut? prolog:w_atom????? ?atomprolog:w_out _displaypunct? prolog:w_atom?display?>? prolog:w_args0??40display? ?functorprolog:w_out {}{}?punct?123J0 put125? 1200 punct ? ?prolog:w_outprolog:w_out ..??punct?91J 0 prolog:w_tail??? 999 punct ?  ?prolog:w_outprolog:w_out ,,??? prolog:w_out??999?>? put44 prolog:w_out??1000punct? prolog:maybe_paren1000?41??? 1000 ? 40 ?  ?prolog:maybe_parenprolog:w_out _alpha or4?4 ? $bin_cut? write_float??3,4? prolog:maybe_space?other3less?03 prolog:maybe_space?alphafloatprolog:w_out _ prolog:w_out ? ???????  ?  ? ?functorprolog:w_out11 ,4 ? - ?1 ?3 current_op ?fx? ,4 ?= ? ?3 current_op ?fy? $bin_cut?prolog:maybe_paren ??40??prolog:w_atom????arg1??prolog:w_out?? ??? prolog:maybe_paren ??41???  ?  ?orprolog:w_out11 ,4 ? - ?1 ?3 current_op ?xf? ,4 ?= ? ?3 current_op ?yf? $bin_cut?prolog:maybe_paren ??40??arg1??prolog:w_out?? ??? prolog:w_atom???? prolog:maybe_paren ??41???  ?  ?orprolog:w_out22 ,4 ? ,4 ? = ? ?3 - ?1 ?3 current_op ?xfy? or4?,4?,4?= ? ?3- ?1 ?3current_op ?yfx?3,4?,4?= ? ?3- ?1 ?3current_op ?xfx? $bin_cut?prolog:maybe_paren ??40??arg1??prolog:w_out?? ??? prolog:w_oper? ???? arg2? ?prolog:w_out ?? ??? prolog:maybe_paren ??41???  ? ?orprolog:w_out _punct prolog:w_args0??40?? ? ? ? ?prolog:w_atomprolog:w_oper _?700J 0? ? ? ? ?prolog:w_atomprolog:w_oper _ ?punct32J0 put32? punct ?prolog:w_atomprolog:w_VAR _alpha ?B??0J 0? mod?26? +?65? put?or4?4 ? $bin_cut??3less?263 ,4 ?cwrite?3 //?26? ? alpha ?prolog:maybe_spaceprolog:w_VAR_ $bin_cut?prolog:w_atom?write???atomprolog:w_VAR _punct prolog:w_args014?40??3$VAR? $VAR ? ?prolog:w_atomprolog:w_atom!!punct ??33J0trueprolog:w_atom;;punct ??59J0trueprolog:w_atom[][]punct ??91J093J0trueprolog:w_atom{}{}punct ??123J0125J0trueprolog:w_atom..writeqquote ?? .39.46.39[]prolog:put_stringprolog:w_atom_ or4?4 ? $bin_cut??3,4? ,4 ? prolog:put_string ?3 prolog:maybe_space??3prolog:classify_name ??3 or4 ?,4? prolog:put_string ?3=?alpha3 ,4 ?,4? ,4 ? ,4 ? prolog:put_string ?393 put393 prolog:maybe_space??3=?quote3 =?writeq  ? ?nameprolog:classify_name..??alpha $bin_cut?prolog:classify_alpha_tail??prolog:is_minprolog:classify_name..??other prolog:classify_other_tail??prolog:is_specprolog:classify_alpha_tail[][] ?trueprolog:classify_alpha_tail..?? prolog:classify_alpha_tail?? ?prolog:is_alpha_numprolog:classify_other_tail[][] ?trueprolog:classify_other_tail..?? prolog:classify_other_tail?? ?prolog:is_specprolog:w_args _ ? ??41J0trueprolog:w_args _?J0?1J0??J0 prolog:w_args???44?? ? 999 punct ?  ?prolog:w_outprolog:w_tail_ ?B??124J0 put93?prolog:w_variableprolog:w_tail[][] ??93J0trueprolog:w_tail ..???44J 0 prolog:w_tail??? 999 punct ?prolog:w_outprolog:w_tail _124J0 put93? 999 punct ?prolog:w_outpp_term_ write?cnlfail? 0 ?numbervarspp_term_ ?truepp_clause_portray_clauseportray_clause_ fail? ?prolog:pp_clause0portray_clause_ ?trueprolog:pp_clause0:-:-??B? prolog:l_clauses?028? 0 ?numbervarsprolog:pp_clause0:-:-?? +?? prolog:portable_writeq?prolog:l_clauses?028$bin_cut?? 0 ?numbervarsprolog:pp_clause0_ :-?true ?prolog:pp_clause0prolog:l_clauses ,,??? $bin_cut? prolog:l_clauses?1??? 1 ?prolog:l_clausesprolog:l_clauses truetrue2 ?? .?[] ? ?.46[]?J0B?trueprolog:l_clauses ;;??? prolog:l_magic4 ?02? prolog:l_magic_nl?.?3 ;?? fail ?  ?prolog:l_magicprolog:l_clauses ->->??? $bin_cut? prolog:l_clauses?5??? 5 ?prolog:l_clausesprolog:l_clauses _ prolog:portable_writeq?prolog:l_magic_nl?.? ? ?prolog:l_magicprolog:l_magic!!0 ?? :- B?trueprolog:l_magic!!1 ?? , B?trueprolog:l_magic_0 ? ?? :- B?B?tabprolog:l_magic_1 ? ?? .?[] ? ?.44[]?J0B?tabprolog:l_magic_3 ?? ( B?trueprolog:l_magic_4 ?? ; B?trueprolog:l_magic_5 ? ?? ->B?B?tabprolog:l_magic_ ? cwrite:- cwrite?cnltab??atomprolog:l_magic_nl22 ?? ?B?B?trueprolog:l_magic_nl_ ?trueprolog:l_magic ;;??? $bin_cut? prolog:l_magic?1??? 1 ?prolog:l_magicprolog:l_magic _?8J0?3J0 cnl tab? prolog:l_magic2?)? 1 ? ?prolog:l_clausesprolog:l_magic222 ?? ?B?trueprolog:l_magic2_ ?truemain_prolog:binpro_startprolog:binpro_start_ prolog:exec_run_time_commandsprolog:call_ifdefmaintoplevel=?$end? init_io trueprolog:call_ifdeftoplevel_ prolog:topstep?- $bin_cut?? ?repeatprolog:topstep_ flushttyin4?prolog:topinterp???3top_read_term?? ?ttyprinprolog:topinterp_ = ?end_of_file?J1? ?trueprolog:topinterp_ ? ? fail? ? ?prolog:report_answersprolog:topcall_ prolog:nothing? ?metacallprolog:savetop_topgoalJ1 ?trueprolog:nothing_trueprolog:report_answers[][] ? $bin_cut?ttyprintyes?prolog:topcallprolog:report_answers..?? ? prolog:report_one_var?prolog:report_top_vars?prolog:another_sol?if4?4?fail?3=?no3,4?ttyprintyes3$bin_cut?prolog:topcallprolog:report_answers_ ? nottyprintprolog:report_top_vars_ ? ttyprint,prolog:report_one_var?fail? ?memberprolog:report_top_vars_ ?trueprolog:report_one_var==?? ttyprin=ttyout4??3writeq? ?ttyprinprolog:another_sol_ $bin_cut?ttyin4?prolog:user_action??ttynl?3get_code? ?prolog:is_interactiveprolog:another_solyesyes ttynl? ; ?ttyprintprolog:user_action1010no ??trueprolog:user_action5959yes ?? get_code10ttyinprolog:user_action _ ttyin4?ttyin4?prolog:user_action???3get_code?3get_code10  ; for more, otherwise ?ttyprinmeta_interpreter_do_bodydo_body_ ? ? ?B?? unbound_goal ?user_errordo_body _ or4?4??3,4?,4? do_body?3$bin_cut?3=?yes3=?noprolog:do_bodyprolog:do_compiledcallcall?? ?B?do_bodyprolog:do_compiled\+\+? $bin_cut?fail? ?do_bodyprolog:do_compiled\+\+? ??trueprolog:do_compiledbagofbagof??? ?? do_body?bagofprolog:do_compiledsetofsetof??? ?? do_body?setofprolog:do_compiledfindallfindall??? ?? do_body?findallprolog:do_compiled_callprolog:do_goal_ $bin_cut?spy_goal?? ?spyingprolog:do_goal _ $bin_cut?assumed_clause??prolog:do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_assumedprolog:do_goal _ $bin_cut?clause??prolog:do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_dynamicprolog:do_goal_ ?B??prolog:do_compiledprolog:do_goal_ $bin_cut?prolog:do_apply??prolog:do_goal?? call ?functorprolog:do_goal_prolog:do_undefprolog:do_undef_ errmes4?4??3=undefined_predicate/??3=culprit?functorprolog:do_apply _ .>?.?? =..?? det_append???=..??? ? ?=..prolog:do_body ,,?? ? ? ?? ? ?  ?prolog:do_conjprolog:do_body ;;?? ? ? ?? ? ?  ?prolog:do_disjprolog:do_body!!trueyes ?trueprolog:do_body_trueno ?prolog:do_goalprolog:do_conj!! ?yes ??trueprolog:do_conj_ prolog:do_body???? ?do_bodyprolog:do_disj ->->?? ? ? ? ?? ?  ?  ?  ?prolog:do_if_then_elseprolog:do_disj_prolog:do_disj0prolog:do_if_then_else _ $bin_cut? prolog:do_body???? ?do_bodyprolog:do_if_then_else_ ? ? ? ?prolog:do_bodyprolog:do_disj0_ ? ? ?prolog:do_bodyprolog:do_disj0_ ? ? ? ?prolog:do_bodytrace_ ? 0tr_bodytr_body_ ? ?B?? unbound_goal ?user_errortr_body _ or4?4??3,4? ,4 ? ,4 ? ,4 ? ,cnl tr_body??3 writeCUT3 tab?3 $bin_cut?3=?yes3=?noprolog:tr_bodyprolog:tr_body ,,?? ? ? ? ?? ?  ?  ?  ?prolog:tr_bodyprolog:tr_body!!trueyes ??trueprolog:tr_body ;;?? ? ? ? ?? ?  ?  ?  ?prolog:tr_disj1prolog:tr_bodytruetruetrueno ??trueprolog:tr_body_trueno ?prolog:tr_goalprolog:tr_disj1->->?? ? ? ? ? ?? ?  ?  ?  ?  ?prolog:tr_if1prolog:tr_disj1_ ? ? ? ?prolog:tr_bodyprolog:tr_disj1_ ? ? ? ? ?prolog:tr_bodyprolog:tr_if1 _ do_body? prolog:tr_body???? prolog:tr_body????  ?  ?  ? ?ifprolog:tr_body!! ?yes ??trueprolog:tr_body ,,??? ,??  ?prolog:tr_bodyprolog:tr_body;;?? ? ? ? ? ?? ?  ?  ?  ?  ?prolog:tr_disj2prolog:tr_bodytruetrue ? ? ? ? ??prolog:tr_bodyprolog:tr_body _ prolog:tr_body????? ? ?prolog:tr_goalprolog:tr_disj2->->? ? ? ? ? ? ? ??  ?  ?  ?  ? ? ?prolog:tr_if2prolog:tr_disj2 _ ? ? ? ? ?prolog:tr_bodyprolog:tr_disj2 _ ? ? ? ? ? ?prolog:tr_bodyprolog:tr_if2 _ do_body? prolog:tr_body????? prolog:tr_body?????  ?  ?  ? ?ifprolog:tr_goalcallcall??tr_bodyprolog:tr_goal\+\+? $bin_cut?fail? ?tr_bodyprolog:tr_goal\+\+? ??trueprolog:tr_goal_ ,4?,4?,4? or4 ? ortrue ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeRedo: 3 tab?3 ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeExit: 3 tab?3if4?4 ? ,4 ? prolog:tr_call? ?3 +1? ?3,4? \+ spying?3arith_eq?103 metacall?3ifprolog:is_interactive4? ,4 ?cnl3 =?323,4? if4 ?true get0>?3 arith_eq?103get0?3or4?or4?true3,prolog:is_interactive,4?fail3write : 3,4?,4?,4?fail3print?3writeCall: 3tab? ,4?,4? ,4 ? ,cnlfail3 print?3writeFail: 3tab? ? ?orprolog:tr_call bagofbagof??? ?? tr_body?? ? ?bagofprolog:tr_call setofsetof??? ?? tr_body?? ? ?setofprolog:tr_call findallfindall??? ?? tr_body?? ? ?findallprolog:tr_call_ $bin_cut?tab?functor???write4? cnl assumed_clause? ? prolog:tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! assumed/?? ?is_assumedprolog:tr_call_ $bin_cut?tab?functor???write4? cnl clause? ? prolog:tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! dynamic/?? ?is_dynamicprolog:tr_call _ ?B?? functor???write4? cnl call??3!!! compiled/?? ? ?tabprolog:tr_call_ $bin_cut?prolog:do_apply??prolog:tr_call??? call ?functorprolog:tr_call_prolog:do_undefdynamic_ fail? ?prolog:make_dynamicdynamic_ ?trueprolog:make_dynamic,,??? prolog:make_dynamic?? ?prolog:make_dynamicprolog:make_dynamic //?? prolog:check_dynamic?4?prolog:define_dynamic??3/?? ?functorprolog:check_dynamic_ ?B?? WARNING: dynamic code will shadow compiled predicate? cnl?writeprolog:check_dynamic_ $bin_cut?errmesdynamic code would shadow assumed predicate?? ?is_assumedprolog:check_dynamic_ ?trueprolog:define_dynamic_ bb_def?$last0? $first 0bb_defprolog:ensure_dynamic_ $bin_cut?? ?is_dynamicprolog:ensure_dynamic_ prolog:make_dynamic4??3/??functorprolog:add_clause_ $bin_cut?? ?prolog:add_clause0prolog:add_clause _ prolog:add_clause0????$bin_cut?? ? ?prolog:ensure_dynamicprolog:add_clause_ :-?? unable to assert clause ?errmesprolog:add_clause0 _??J0??J0???J0 :-?? set???? ? ?bb_defprolog:add_clause0_??J0 :-?? ? ? ?bb_defasserta_ :-?? prolog:add_clause$first-1??? ?add_trueassertz_ :-?? prolog:add_clause$last1??? ?add_trueassert_assertzprolog:assert_itend_of_fileend_of_file ??trueprolog:assert_it_assertzretract _ =?4?prolog:clause0?? ? prolog:erase0? ??3:-?? ?add_trueretractall _ :-?>? val?$first?val?$last? for ???val? ?>?prolog:erase0? ? fail? ?add_trueretractall_ ?trueprolog:collect_slot_?$firstJ1?$lastJ0??J 0??1J0?$first?J0 ?trueprolog:collect_slot_ ?trueinstance$dbref$dbref????J0copy_termerase$dbref$dbref?? ? ?prolog:erase0prolog:erase0_ prolog:collect_slot??? ?bb_rmclause_ ? ?prolog:clause0prolog:clause_$dbref??prolog:clause0prolog:clause0 _?$firstJ0?$lastJ0 ith_clause? ??? member4? ??3-?:-??  ? ?  ? ?findallith_clause_-????J1 ?trueith_clause_??J 0?1J0ith_clauseabolish _ ? ? is_dynamic?$bin_cut?prolog:abolish0???? ? ?functorabolish_ found/?? abolish_expects_dynamic_clauses ?errmesprolog:abolish0_ retractall?fail? ?functorprolog:abolish0_ ??$firstJ0?$lastJ0prolog:define_dynamicdebug_reconsultprolog:consult_warning_ ? % using compile/1 is MUCH fasterquietmesconsult_ prolog:consult_warningprolog:consult0?? ?find_filereconsult_ prolog:consult_warningprolog:survive_cleanup??prolog:consult0?? ?find_fileprolog:consult0 _ quietmes4?see?repeatread_clause?prolog:consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes4??3consulted?time?3consulting? ? ?ctimeprolog:consult_included_0J)0 prolog:consult0?see?? ?find_fileprolog:consult_embedded:-:-??prolog:consult_cmdprolog:consult_embedded_ prolog:assert_it?? ?expand_termprolog:consult_cmd..?[]?prolog:consult_includedprolog:consult_cmdconsultconsult??prolog:consult_includedprolog:consult_cmdreconsultreconsult??prolog:consult_includedprolog:consult_cmd_metacalllisting _ ? ? is_dynamic?$bin_cut?write% write4? write: cnl prolog:listing0??3/?? ? ?functorlisting _ ? ? is_assumed?$bin_cut?write% assumed write4? write: cnl prolog:listing1??3/?? ? ?functorprolog:listing0_ portray_clause4?fail?3:-??clauseprolog:listing0_ ?B?trueprolog:listing1_ portray_clause4?fail?3:-??assumed_clauseprolog:listing1_ ?B?truelisting_ listing??fail? 0 255forlisting_ ?B?trueprolog:generate_run_time_predicate _ or4?4?bb_element4? ? nonvar ??3=4? ?3+? ?3,4? = ? /??3=?/$assumed03,4?= ? /$first03=?/??  ? ?bb_listlisting_ listing??fail? ?prolog:generate_run_time_predicatelisting_true=> _ ? intuitionistic? metacall?=?$closed? ? ?prolog:assume-: _ ? linear?>? metacall?=?$closed? ? ?prolog:assumeprolog:add_hint_ll _clause?? ? ?:-?? ? ? ?add_trueassumel_ ? ? linear>? ?prolog:assumeassumei_ ? ? intuitionistic>? ?prolog:assumeprolog:assume_ ?B?? bad_clause? error_in_assume ?errmesprolog:assume_prolog:assume1prolog:assume1_.?[]?prolog:assume_fileprolog:assume1_prolog:assume_llprolog:assume_ll _ lval$assumed?? prolog:assume_with_hint_ll??? ?prolog:add_hint_llprolog:assume_with_hint_ll_ ? ? ?B?? ?prolog:insert_llprolog:assume_with_hint_ll..?[] ? ?trueassumed_ call?? ?assumed_clauseassumed_clause_ ? ?assumed_clauseassumed_clause _ ? ? ?$assumed?J0 ?B ? ? ?prolog:get_assumed_clauseprolog:get_assumed_clause _ ? ? ?. ? ? clause?? ? ?prolog:copy_or_delete_llprolog:get_assumed_clause_.??prolog:get_assumed_clauseprolog:copy_or_delete_ll linearlinear?? ?:-?? ?B? ?B? ?$usedtrueprolog:copy_or_delete_llintuitionisticintuitionistic? ? ? ?B? :-?? ?copy_termprolog:insert_ll_ ? ?.?[]?2? .?[]?J0 ?trueprolog:insert_ll_.??prolog:insert_llprolog:assume_file _ seeing_telling0?see?prolog:assume_all?seensee?? ? ? ?find_fileprolog:assume_all_ prolog:assume_all0??? ? ?gc_read_clauseprolog:assume_all0end_of_fileend_of_file ??trueprolog:assume_all0_ gc_read_clause?prolog:assume_all0??? ?prolog:assume_oneprolog:assume_one:-:-?.?[] ?? ?prolog:assume_fileprolog:assume_one:-:-? ?? prolog:consult_cmd? true trueifprolog:assume_one_ ? ? ?prolog:assume_llbb_element ==??+??/??/?? ?.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_30J'1 ?truebb_ ? unsortedbbbb_ ? ,4?,4?,cnl,4? ,4 ? ,4 ? ,4 ? ,4 ? ,cnlfail3 write ?3 prolog:bb_orig ? ?3 member ? ?3 if4 ?4 ? = ? ?3 \==?sorted3 ,4 ? sort ? ?3 findall ?4 ? ?3 bb_element ? ?3bb_list ?3write-bboard?3statisticsbboard? ? cnlorprolog:bb_orig ==??+??/??/??= ? ? + ? ? /?? /?? functor ???or4?4? $bin_cut??3val? ? ?3lval? ? ? ? ?functorsort_ ? prolog:remdup??? < ? ?prolog:merge_sortprolog:remdup[][][] ?trueprolog:remdup ..??.?? = ???J1? .??prolog:remdupprolog:remdup..??.??prolog:remdupprolog:merge_sort_ prolog:merge_sort1????[]? ? ? ?lengthprolog:merge_sort100[] ? ??trueprolog:merge_sort1 11 ?.??.?[]?trueprolog:merge_sort1 _?1J0??J 0 prolog:merge_sort1 ?? ? ?? prolog:merge_2 ?? ??? ?  ?  ?  ?prolog:merge_sort1prolog:merge_2[][] ? ??trueprolog:merge_2 ..??.? ?.????J1? .? ?prolog:merge_2prolog:merge_2 _ ?.??.?? ?prolog:merge_2prolog:ksort_ $bin_cut?=??? -1 ? []prolog:keysortprolog:ksort_ keysort?? illegal_arguments ?user_errorprolog:keysort ..??? ?B ? ? ? -=? ? ? .?? prolog:keysort?1? ????  ?  ?  ? ?prolog:samkeyrunprolog:keysort_[] ? ?trueprolog:keysort..????J 0? ?B ? ? ? -=? ? ? .?? prolog:keysort ?1? ? ??prolog:keymerge? ? ?+???prolog:keysort??? ????  ?  ?  ?  ? ?prolog:samkeyrunprolog:keysort _ ? ? ?trueprolog:samkeyrun..?? ?B ? ? ? - ? ? ? ? . ? ? -? ? $bin_cut? = ?4 ? prolog:samkeyrun?? ????3 .?>?  ?@=<prolog:samkeyrun ..?? ?B ? ? ? - ? ? ? ? . ? ? - ? ? < ? ? ?J 1? .??  ?prolog:samkeyrunprolog:samkeyrun _ ? ? ?.?[]trueprolog:keymerge[][] ?? ? ?trueprolog:keymerge ..?? ? ?.? ?-? ? ? ? -? ? $bin_cut? =?4 ? prolog:keymerge????3 .?? ?  ?@=<prolog:keymerge_.??? ? ?.??prolog:keymergeprolog:keymerge_ ? ?truesetof _ call? sort??? ? ? ?bagofbagof_ ? ? \==?[] $bin_cut? =.. ?4 ? functor ?. ? findall4 ?4 ??prolog:replace_instance? ? ? ?keysort ? ?$bin_cut?prolog:concordant_subset ? ? ?=? ??3 - ??3 call?3 ..? ? [] ?free_variablesbagof _.?? call? .?? ?findall^_ ? ?callprolog:replace_instance[][][] ??trueprolog:replace_instance ..??-?? ?. ? ? -?? $bin_cut?prolog:replace_instance??? ?? ?prolog:replace_key_variablesprolog:replace_key_variables00 ??trueprolog:replace_key_variables_??J0 ?B???1J0prolog:replace_key_variablesprolog:replace_key_variables_??J0??J1?1J0prolog:replace_key_variablesprolog:concordant_subset ..??-?? prolog:concordant_subset ??4 ????3 .?? ?  ?prolog:concordant_subsetprolog:concordant_subset ..??-??.?? = ???J1?prolog:concordant_subsetprolog:concordant_subset_[] ? ?trueprolog:concordant_subset[][] ? ? ??trueprolog:concordant_subset_ ? ? ?trueprolog:concordant_subset_ ? ? ?prolog:concordant_subsetfree_variables _ ? ?.?? ?B? prolog:list_is_free_of?? $bin_cut?? ? ?prolog:term_is_free_offree_variables_ ? ?B?? ?truefree_variables _ $bin_cut?free_variables? ???? ?  ? ?prolog:explicit_bindingfree_variables _ prolog:free_variables?????? ? ? ?functorprolog:free_variables00 ? ??trueprolog:free_variables _??J0 -?1 ? $bin_cut? prolog:free_variables ??? ??? ? ? ?  ?  ?free_variablesprolog:explicit_binding\+\+?fail ? ?trueprolog:explicit_bindingnotnot?fail ? ?trueprolog:explicit_binding ^^?? ? ?+??trueprolog:explicit_binding setofsetof??? ?-??+??trueprolog:explicit_binding bagofbagof??? ?-??+??trueprolog:term_is_free_of_ ?B??\==prolog:term_is_free_of_ prolog:term_is_free_of???? ? ?functorprolog:term_is_free_of00 ??trueprolog:term_is_free_of _??J0 -?1? $bin_cut? prolog:term_is_free_of???? ? ? ?prolog:term_is_free_ofprolog:list_is_free_of[][] ?trueprolog:list_is_free_of..?? prolog:list_is_free_of??? ?\==keysort_prolog:ksortnot_ call? $bin_cut?? ? ?\+not_ $bin_cut?fail? ?groundnot_ ? user_errorshould be groundnot? ? fail abortifterm_chars_ ?B?? name??? ? ?swriteterm_chars_ sread??? ? ?namevars_of_ ? ? [] []free_variablesprolog:compile_binary_prolog:cc_bincompprolog:compile_builtins_prolog:cc_builtinsprolog:cc_must_have_builtinswamwam ?trueprolog:cc_must_have_builtinscc wam.hprolog:c_chunk_fileprolog:cc_builtins_ prolog:bin_builtin?prolog:cc_bincomp??fail? ?prolog:cc_must_have_builtinsprolog:cc_builtins_ ?trueprolog:cc_bincompbinbin ?? fail?portray_clauseprolog:cc_bincompasmasm cnlportray_clause?cnlfail? BINARY: ?writeprolog:cc_bincomp_ prolog:cc_compile_clause??prolog:gg_emit??$bin_cut?? ?prolog:newpredprolog:cc_bincomp_ failing_to_compile_clause? ?errmesprolog:bin_builtin:-:-??true?$bin_cut??prolog:cutpprolog:bin_builtin_ prolog:bu_body???? ? ?prolog:buprolog:bu_bodyin_headin_head ?:-??true? arg???? ? ?functorprolog:bu_bodyin_bodyin_body ?:-??trueprolog:cc_compile_clause_ ?.??.??.?[]prolog:cc_clauseprolog:firstarg_1?J0prolog:classif_firstprolog:classif_first_ ?B?? ? ?/?0 ?trueprolog:classif_first_ ?B?? ? ?/_0 ?trueprolog:classif_first_ ?/??functorprolog:cc_clause_.??.?[]iifirstarg?? ?iiclause?? ?. ?[] iiexecute? ? ? :-?? prolog:firstarg??prolog:cc_h_b?4??4?getput?prolog:max ? ??+?1?prolog:vars??functor?dict?prolog:fill_info??prolog:collapse_args?1?prolog:allocate_regs?4?4??3-4?[]3/??3-4?>?3/? ?3/? ?3/ ? ?  ?add_trueprolog:cc_h_b_/ ? ?/ ? ? / ? ? -4 ??3 /? ? -4??3/?? prolog:cc_b?4?4?4?$bin_cut??3/ ? ?3-4??3/??3-4?[]3/? ?  ?prolog:cc_hprolog:begin_chunk _ ? iic_chunk>?4??3len? prolog:hidden_var4 ? ???3 +?? ?  ?prolog:emitprolog:end_chunk _ ? iic_chunk>?4??3len? prolog:hidden_var4 ? ???3 +?? ?  ?prolog:emitprolog:emit_-??.??-?? ?trueprolog:get_mode_ ? ? ?-??/?? ?trueprolog:set_mode _-??/??-??/?? ?trueprolog:hidden_var_ ? ? ?-??/?? ?trueprolog:cc_h_prolog:cc_h0prolog:cc_b _ prolog:end_chunk??? ? ?prolog:cc_b0prolog:cc_h0 _/?? $bin_cut? functor???arg???prolog:emit4?? ? prolog:begin_chunk ???3iibuiltin??? in_head  ?prolog:buprolog:cc_h0 _/?? greater?0 $bin_cut? functor ??? prolog:emit_head_top_term?? ???? ? ?functorprolog:cc_h0_ ? ? ? unexpected_head_atom ?errmesprolog:emit_head_top_term_ ? ? ? prolog:cc_top_arg11 ? ? ? ?prolog:begin_chunk ? ?prolog:emit_top_args2? ? ? ? ?prolog:cc_top_arg2? ? ? ??? 1 1  ?  ?  ?  ?prolog:emit_top_argsprolog:cc_b0_ ?B?? true? ?prolog:cc_b0prolog:cc_b0truetrue ? ?/true0?trueprolog:cc_b0 $bin_cut$bin_cut??? iiput>?4 ??3 cutarg1 prolog:cc_b0????? ? ?  ?prolog:emitprolog:cc_b0 ==???? prolog:cc_b0????? ? ?  ?prolog:cc_eqprolog:cc_b0 _ $bin_cut?prolog:cc_builtin?????? ? in_body ?prolog:buprolog:cc_b0 _/?? greater?0 $bin_cut? functor ??? prolog:emit_body_top_term?? ???? ? ?functorprolog:cc_b0_ ? ? ? unexpected_body_atom ?errmesprolog:emit_body_top_term _ ? ? ? $bin_cut? prolog:emit_top_args1? ?? ??? 1 ?  ?  ?  ?prolog:cc_top_argprolog:cc_eq _ ? ? ?B? ?B?? ?prolog:cc_eq1prolog:cc_eq_prolog:cc_eq1prolog:cc_eq1_ =?? prolog:emit4 ? ? ? prolog:emit4 ? ? ?prolog:set_modeget ? ?prolog:cc_top_t4? ? ?prolog:set_modeput ???3=??3 iiget>?4 ??3 temp03 iiput>?4 ??3 temp0 ? ?  ?  ?prolog:cc_top_tprolog:out_reg000 ?trueprolog:out_reg11 ? ?trueprolog:cc_builtinaritharith?? ?? arg ?? ? - ?1 ?arg ???prolog:out_reg???- ?? ?functor?? ?prolog:handle_constant_res?4???prolog:emit_top_bargs1 ?????prolog:emit4??? prolog:cc_b0 ?????3iiarith>???3=??  ?  ?functorprolog:cc_builtin_ - ?1 ? arg ?? ? arg1? ? prolog:cc_b_args ? ?? ? prolog:emit4 ? ? ? prolog:cc_b0 ?? ???3 iiinline>??>? ? ?  ? ?functorprolog:handle_constant_res00 ? ??trueprolog:handle_constant_res 11 ? ?=?? ?B ?? ? ?trueprolog:handle_constant_res 11=?? ?B ?? iiput>?4 ??3 temp0 prolog:emit4? ???3iiget>?4??3temp0 ?  ?  ?prolog:emitprolog:handle_constant_res 11=??? =?? ? ? ?prolog:cc_top_tprolog:classif_load _ ? ?B?? ? ? ?trueprolog:classif_load _constant ? ?B?? ? ? ?trueprolog:classif_load _ ? =?? ? ? ?prolog:cc_top_tprolog:cc_b_args00 ? ?trueprolog:cc_b_args 11 =?? prolog:emit4 ? ???3 iiput>?4 ??3 temp0 ?  ? ?prolog:cc_top_tprolog:emit_top_bargs _ ???J 0? ?trueprolog:emit_top_bargs_??J 0?1J 0??J 0??J 0 prolog:emit4 ???prolog:emit_top_bargs ???????3 iiload?? ?  ?  ? ? ?  ?prolog:classif_loadprolog:emit_top_bargs _??J 0??J 0??J 0? = ? ? +?1 ? prolog:emit_top_bargs ???????  ? ?  ?prolog:cc_top_tprolog:emit_top_args _ ???J 0? ?trueprolog:emit_top_args_??J 0??J 0??J 0 $bin_cut? prolog:get_mode ?? ?prolog:emit4? ? ?+?1?prolog:emit_top_args???? ???3ii ??4 ? ?3 arg?  ?  ?  ?prolog:classif_argprolog:cc_top_arg _ ???J 0? ?trueprolog:cc_top_arg _??J 0??J 0??J 0?1J 0? = ? ? prolog:cc_top_arg ??????? ?  ?prolog:cc_top_tprolog:cc_top_t ==?? ? ? ?B?? ? ?trueprolog:cc_top_t ==?? ? ? ?B?? ? ?trueprolog:cc_top_t ==?? greater?0 $bin_cut? functor ? ?? prolog:emit_top_structure? ??? ??? prolog:cc_args? ?????  ? ? ?functorprolog:emit_top_structure_ prolog:emit4 ? ? ?prolog:emit_args??? ???3 ii ?structure4 ??3 /??  ? ?  ?  ?prolog:get_modeprolog:cc_arg _ ???J 0? ?trueprolog:cc_arg _??J 0??J 0??J 0?1J 0? = ? ? prolog:cc_arg ??????? ?  ?prolog:cc_tprolog:cc_t ==?? ? ? ?B?? ? ?trueprolog:cc_t ==?? ? ? ?B?? ? ?trueprolog:cc_t ==?? greater?0 $bin_cut? functor ? ?? prolog:emit_structure? ??? ??? prolog:cc_args? ?????  ? ? ?functorprolog:cc_args _?1J 0??1J0??J 0??J 0 = ? ? prolog:cc_arg1?????? ?  ?prolog:cc_tprolog:cc_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?prolog:cc_argprolog:emit_structure_ prolog:deep_structure_op ? ? prolog:emit4 ???prolog:emit_args??????3 ii ?structure4 ??3 /??  ? ? ?  ?prolog:get_modeprolog:emit_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?prolog:emit_args0prolog:emit_args0 _ ???J 0? ?trueprolog:emit_args0_??J 0??J 0??J 0 $bin_cut? prolog:get_mode ?? ?prolog:emit4? ? ?prolog:unify_op ? ??+?1?prolog:emit_args0???? ???3ii?? ? ?  ?  ?  ?prolog:classif_argprolog:unify_opgetgetunify ?trueprolog:unify_opputput ? ? ?prolog:deep_var_opprolog:deep_var_op_push $bin_cut??compoundprolog:deep_var_op_write ?trueprolog:deep_structure_opgetgetget ?trueprolog:deep_structure_opputputpush ?trueprolog:classif_arg_ ?B?? ? ? ?trueprolog:classif_arg_constant ?B?? ? ? ?trueprolog:classif_arg_ ?trueprolog:max_??J 0? ? ? ?trueprolog:max_ ? ?trueadd_true:-:-?? ?:-???trueadd_true_:-?true ?trueprolog:vars_ call?? ? trueprolog:find_occurrencesprolog:find_occurrences[][][] ? ?trueprolog:find_occurrences ..??ii?? ??. ? ? ii?? ?? prolog:find_occurrences? ? ???  ?  ?prolog:occurrenceprolog:occurrence_ ? ? ?B?? ?trueprolog:occurrence _ ? ? ?var ?? ?B ?? ? ? $OCC ?? 1 ?  ?prolog:newvarprolog:occurrence$OCC$OCC?? ? ?var???prolog:oldvarprolog:occurrence _ ? ? at4? =occ?3=var? bad_occurrence ?errmesprolog:oldvar_/?? ? ?=???1J11??J0 ?trueprolog:newvar _,?? ? ? =?? ? ? /?? ?trueprolog:fill_info_ ? 0 ?prolog:fill_allprolog:tpoint_ ??1J1 ?trueprolog:fill_all[][] ? ?trueprolog:fill_all ..?? prolog:fill_one??? ? prolog:fill_all?? ??? ?prolog:fill_var_typeprolog:fill_var_typeiiii????var?? ? ?B?? ?prolog:get_var_typeprolog:fill_var_type_ ?trueprolog:get_var_type//11unifyvoid ??trueprolog:get_var_type//11writevoid ??trueprolog:get_var_type//1?variable ??trueprolog:get_var_type//??value ???J 0?trueprolog:fill_one iiii?constant??arg?? prolog:mark_arg???4???3var4?/113->?/?? ? ?  ?prolog:tpointprolog:fill_oneiiii?constant=? ? ? ?? ?prolog:tpointprolog:fill_one iiii????arg?? prolog:mark_arg?????prolog:mark_var??? ? ?  ?prolog:tpointprolog:fill_one iiii=??var?? ? ?? prolog:mark_var?4 ??3 var??prolog:tpointprolog:mark_arg getget ? -4 ? /?>?3 *?>???J1trueprolog:mark_arg putput ? -4 ? />??3 *>????J1trueprolog:mark_var_var??/11-??/??? ?trueprolog:mark_var_var??/1?-??/??1?J 0? ?trueprolog:mark_var_var??/??-??/??1?J 0? ?trueprolog:mark_var_ ?var??/=?-??/=?trueprolog:collapse_args_ ???J 0?trueprolog:collapse_args _??J 0??J0 +?1? prolog:collapse_args???? ? ? ?prolog:collapse_themprolog:default//?? prolog:set_to99999?? 0 ?prolog:set_toprolog:set_to_ ? ??trueprolog:set_to_ ?trueprolog:collapse_them _-??*??var??-??var? ?-? ? prolog:default? prolog:default? prolog:check_lifetimes4 ?4 ?4 ??3 -? ?3 -??3 -??  ?prolog:defaultprolog:check_lifetimes--??-??-?? prolog:check_var_var??prolog:check_var_arg??$bin_cut??prolog:check_var_argprolog:check_lifetimes--??-?? $bin_cut??prolog:check_var_argprolog:check_lifetimes_-??-?? $bin_cut??prolog:check_var_argprolog:check_lifetimes_ ?trueprolog:check_var_var//?? ?/????J 0?trueprolog:check_var_var//?? ?/????J 0trueprolog:check_var_arg //?? ?/????J 0??J 0trueprolog:allocate_regs[][] ? ??trueprolog:allocate_regs..?? prolog:allocate_regs???? ? ?prolog:allocate1prolog:allocate1 iiii=??var??-?? ? ? $bin_cut?? ? ?  ?prolog:allocate_regprolog:allocate1_ ? ?trueprolog:allocate_reg _/11 ?B?? prolog:free_reg???? ? ? ?prolog:get_regprolog:allocate_reg _/1? ?B?1?J 0? ? ? ?prolog:get_regprolog:allocate_reg_/??1?J 0? ? ? ?prolog:free_regprolog:free_reg _-??/??- ? ? .?? /????J 0? ?trueprolog:free_reg_ ? ?trueprolog:get_reg _-??.??/??- ?? /??? ?trueprolog:get_reg _-??/??-??/???1J1 ?trueprolog:mdef_to_def:-:-??:-?? prolog:repl_body??? ?prolog:hide_atomprolog:mdef_to_def:-:-?:-? $bin_cut?call?fail? ?prolog:repl_bodyprolog:repl_body_call? ?B?? ?trueprolog:repl_body_ $bin_cut?? ?prolog:repl_macroprolog:repl_body_ $bin_cut?prolog:strip_nil??? ? ?prolog:split_opprolog:repl_body_ prolog:peval_io??$bin_cut?? binprolog ?is_prologprolog:repl_body_ $bin_cut?=?4?ttyprint4??3spying_on?3spy_goal? ?spyingprolog:repl_body_prolog:hide_atomis_prolog_ $bin_cut?=??? is prologbb_valis_prolog_prolog:default_prologprolog:cutp_ ? .36.99.117.116[]nameprolog:repl_macro!!$bin_cut? ?prolog:cutpprolog:repl_macrovarvar? ?B? var?prolog:repl_knownprolog:repl_macrononvarnonvar? ?B? nonvar?prolog:repl_knownprolog:repl_macroatomicatomic? ?B? atomic?prolog:repl_knownprolog:repl_macrofloatfloat? ?B? float?prolog:repl_knownprolog:repl_macroatomicatomic? ?B? atomic?prolog:repl_knownprolog:repl_macro,,?? ? ? ? ?prolog:repl_conjprolog:repl_macro;;?? ? ? ? ?prolog:repl_disjprolog:repl_macro->->??->?? prolog:repl_body??? ?prolog:repl_bodyprolog:repl_macrocomparecompare??? ?compare0???trueprolog:repl_macro====?? ?compare0??=trueprolog:repl_macro@<@<?? ?compare0??<trueprolog:repl_macro@>@>?? ?compare0??>trueprolog:repl_macro:=::=:?? ?lval???prolog:repl_lvalprolog:repl_macro##? ?dcg_connect?trueprolog:repl_macro::?? ?module_call??trueprolog:repl_macrofindallfindall???findall???prolog:repl_bodyprolog:repl_macrobagofbagof???bagof???prolog:repl_bodyprolog:repl_macrosetofsetof???setof???prolog:repl_bodyprolog:repl_macroallall???setof???prolog:repl_bodyprolog:repl_macro^^??^??prolog:repl_bodyprolog:repl_macrocallcall?prolog:repl_bodyprolog:repl_macro\+\+?\+?prolog:repl_bodyprolog:repl_macronotnot?not?prolog:repl_bodyprolog:repl_conj _ ?B? $bin_cut?prolog:repl_body??prolog:app_body???? ?prolog:split_opprolog:repl_conj_,?? prolog:repl_body??? ?prolog:repl_bodyprolog:repl_disj _if??? ?B ? ? ? ->? ?? prolog:repl_body ??prolog:repl_body??? ?prolog:repl_bodyprolog:repl_disj_or?? prolog:repl_body??? ?prolog:repl_bodyprolog:repl_lval##?? ? ? ??trueprolog:repl_lval_ ? ? ?trueprolog:repl_known_true $bin_cut??callprolog:repl_known_fail ?trueprolog:split_opisis?? ? ? ? ?prolog:split_is_relprolog:split_op <<?? ? ? less ? ?prolog:split_relprolog:split_op >>?? ? ? greater ? ?prolog:split_relprolog:split_op =<=<?? ? ? less_eq ? ?prolog:split_relprolog:split_op >=>=?? ? ? greater_eq ? ?prolog:split_relprolog:split_op =:==:=?? ? ? arith_eq ? ?prolog:split_relprolog:split_op =\==\=?? ? ? arith_dif ? ?prolog:split_relprolog:split_is_rel_.?[]expr?? ?B?? ?trueprolog:split_is_rel_.?[]+?0? ?B?? ?trueprolog:split_is_rel_.?[]+?0? $bin_cut?? ? ?floatprolog:split_is_rel _.?[]+?0? ground?$bin_cut?expr??? binprolog ?is_prologprolog:split_is_rel_ ? []prolog:split_isprolog:app_body[][] ? ??trueprolog:app_body..??,??prolog:app_bodyprolog:strip_nil..?[] ? ??trueprolog:strip_nil..??,??prolog:strip_nilprolog:split_rel_ ? []prolog:split_rel_1prolog:split_rel_1_ prolog:split_is ?? ? ? =.. ?4 ?prolog:emit_is ? ???3 .? .? . ?[] ?  ? ?prolog:split_isprolog:split_is_ ? ?B?? ? ? ?trueprolog:split_is_ ? ?B?? ? ? ?trueprolog:split_is _ ? $bin_cut?=??? ? ?floatprolog:split_is_ .? . ? . ?[] $bin_cut? prolog:split_is ? ?? ? prolog:split_is ? ? ? ? =.. ?4?prolog:emit_is ? ???3.?. ? . ? .?[] ? ?  ?=..prolog:split_is_ .? . ?[] prolog:split_is ? ?? ? =.. ?4 ?prolog:emit_is ? ???3 .?. ? .?[] ? ?  ?=..prolog:emit_is_.?? ?trueprolog:def_to_mbin:-:-?? ? ?? ? ?prolog:def_to_mbin0prolog:def_to_mbin_ ? ? true ?prolog:def_to_mbin0prolog:def_to_mbin0 @@@@??:-?? ?B?? prolog:add_upper_cont????? ?termcatprolog:def_to_mbin0_:-?? add_cont???? ?termcatprolog:add_upper_cont _ ?B?? add_cont???? ? ? ?add_contprolog:add_upper_cont _ ,4??3strip_cont??? ? ? ?add_contadd_cont,,true??add_contadd_cont,,fail? ?fail??trueadd_cont,,??? term_append?4???3cont? ?add_contadd_cont_? cont??J01 ?truetermcat_? cont??J01 ?trueprolog:show_code _ show_code0?? length? ? write4 ? cnl nth_member?? ? prolog:show_instr ?? fail?3 BRUT WAM-ASSEMBLER:4 ? =length ?3 =mode? ? ? ?findallprolog:show_code _B? POST TERM-COMPRESSION CODE:=mode? cnlprolog:mc_all_instr??nth_member??? prolog:show_instr??fail? ? ?writeprolog:show_code_B? FINAL CODE:=mode? cnlprolog:gen_code??fail? ? ?writeprolog:show_code_ ?B?trueshow_code0_ ? member??prolog:show_or_skip?? ? ?memberprolog:show_or_skipiiiigetvariable??var??-??arg? ??B?trueprolog:show_or_skipiiiiputvalue??var??-??arg? ??B?trueprolog:show_or_skip_ ?trueprolog:show_instr _ ? ?ii???? .?[] write  write?write_write?write prolog:show_fun?prolog:show_info?cnl?  ?writeprolog:show_funputput ??trueprolog:show_fungetget ??trueprolog:show_fun_writeprolog:show_info_ ? ?var??-??? write4?put9put9put9write% write??3var?  ?writeprolog:show_info_ write??  ?writeprolog:show_steps asmasm ,cnl,4?,4?,cnl,4? ,cnlfail3portray_clause?3writeEXPANDED:3\==?? ,4?,cnl,4?,cnlfail3portray_clause?3writeDEFINITE: ?orprolog:show_steps_ ?trueprolog:bind_c_chunk_lengthwamwam ? ??trueprolog:bind_c_chunk_lengthmemmem ? ??trueprolog:bind_c_chunk_length _ ? ? ? ? ? 0 []prolog:bind_lengthprolog:bind_length [][] ? ?trueprolog:bind_length..? ? ? ? ? ? ? ?  ?  ?  ?  ? ? ?prolog:make_anti_callprolog:make_anti_call iiii ? ? ? ? ?c_chunk_variable? ii ?4 ? ?3 len? =?? prolog:bind_length???????  ?  ?Cprolog:make_anti_call iiii ? ? ? ? ?c_chunk_value? ii ?4 ? ?3 len? -??? prolog:bind_length?>?0???  ?  ?Cprolog:make_anti_call_ ?B ? ? ? ii ? ? ? $bin_cut?-???C?4??C???prolog:bind_length4?>?0???3.4??3iic_chunk_variable>?03iic_chunk_value4?03len?  ?  ?  ?  ?prolog:antigenicprolog:make_anti_call _ ? ??1J 0 prolog:bind_length??? ????  ?  ?Cprolog:gen_code _ prolog:bind_c_chunk_length???member??prolog:write_instr???=?no$bin_cut?fail? ? ? ?prolog:mc_all_instrprolog:gen_code_ ?trueprolog:maxarity256256 ?trueprolog:temparg_ ? ?trueprolog:gen_instr iiii???? ? $bin_cut?? ? ?prolog:beautifyprolog:write_instr iiii?? ? ? $bin_cut? =?yes? ? ? ?  ?prolog:encodeprolog:write_instr_no ?trueprolog:mc_all_instr_ ? ? prolog:mc_one_instr?? ?findallprolog:mc_one_instr _ ? prolog:mc_peephole??prolog:instr_cat??? ? ?memberprolog:instr_cat iiii???? ?ii ?????J 1trueprolog:beautifyargarg??prolog:encode_argprolog:beautify temptemp?? prolog:encode_arg ??????  ? ?prolog:tempargprolog:beautifycutargcutarg??prolog:encode_argprolog:beautify _ ? ? ?var ? ? -? ?? ?prolog:encode2prolog:beautify putputwriteconstant ? $bin_cut?prolog:encode2pushcut????prolog:cutpprolog:beautify _ ? ? ? ?prolog:encode2prolog:encode_arg _getvariableempty_opvar? ?-??? ?trueprolog:encode_arg _putvalueempty_opvar? ?-??? ?trueprolog:encode_arg _ ? ? ?var ? ? -? ?? ?prolog:encode2prolog:encode_arg 11constant ? $bin_cut? prolog:encode2?cut???? ?prolog:cutpprolog:encode_arg _ ? ?constant ? constant ?prolog:encode2prolog:encode2_ii???? ?trueprolog:mc_peephole_prolog:mc_topprolog:mc_input_prolog:mc_input0prolog:mc_input0 _.?? prolog:mc_empty????? ? ?prolog:gen_instrprolog:mc_emptyempty_opempty_op ? ? ? ??prolog:mc_input0prolog:mc_empty_ ? ? ?trueprolog:mc_top_ ? prolog:mc0???? ? ?prolog:mc_inputprolog:mc0 _ prolog:mc1?????? ? ? ? ?prolog:op_typeprolog:mc1 pushpushvariable ? ? $bin_cut? prolog:mc5???? ?prolog:mc_pushprolog:mc1 c_chunkc_chunkvariable ? ?? prolog:mc5???? ?prolog:mc_chunkprolog:mc1 _void ?? prolog:mc3????? 1 ?prolog:mc_selprolog:mc1_ ? ? ? ?prolog:mc5prolog:mc_push _ ? ? prolog:op_type?pushstructure prolog:mc_transform_push?? ? $bin_cut? =? ?? ? ?  ?prolog:mc_inputprolog:mc_push_ ? ? ?trueprolog:mc_chunk _ ? prolog:op_type?c_chunkvalue $bin_cut? prolog:mc_input???? ? ?prolog:mc_inputprolog:mc_chunk_ ? ? ?trueprolog:mc_sel _ ? prolog:op_type?>?void $bin_cut? +?1 ? prolog:mc_sel?? ??? ? ?prolog:mc_inputprolog:mc_sel_ ? ? ?trueprolog:mc3_ ? ? ?prolog:mc4prolog:mc3 _ ? prolog:mc0???? ? ?prolog:mc_inputprolog:mc4_ $bin_cut?? ?prolog:mc_transform_voidprolog:mc411 ? ?trueprolog:mc5_ ? ?trueprolog:mc5 _ ? prolog:mc0???? ? ? ?prolog:mc_inputprolog:op_typeiiii??=? ?? ? ? ? ?trueprolog:op_type_ ? ? expected/ii4 ?errmesprolog:mc_transform_void11 ?iiunifyvoid??iiunifyvariable???trueprolog:mc_transform_void _ii?void??ii?void?? ?trueprolog:mc_transform_pushiiiipushvariable?? ?iipushstructure??iipushconstant??trueprolog:encode unify_variableunify_variableget ? ? 1 ? 0prolog:wcodeprolog:encode write_variablewrite_variableput ? ? 2 ? 0prolog:wcodeprolog:encode unify_valueunify_valueget ? ? 3 ? 0prolog:wcodeprolog:encode write_valuewrite_valueput ? ? 4 ? 0prolog:wcodeprolog:encode unify_constantunify_constantget ? ? ? 5 0  ? 0prolog:wcodeprolog:encode write_constantwrite_constantput ? ? ? 6 0  ? 0prolog:wcodeprolog:encode push_constantpush_constant ? ?/?? 6prolog:wcodeprolog:encode get_constantget_constant ? ? ? 7  ? 0prolog:wcodeprolog:encode get_structureget_structure ? ?/?? 8prolog:wcodeprolog:encode put_constantput_constant ? ? ? 9  ? 0prolog:wcodeprolog:encode put_structureput_structure ? ?/?? 10prolog:wcodeprolog:encode get_variableget_variable ? ? ? ? 11  ? ?  ?prolog:wcodeprolog:encode put_valueput_value ? ? ? 11 ?  ?prolog:wcodeprolog:encode put_variableput_variable ? ? ? ? 12  ? ?  ?prolog:wcodeprolog:encode get_valueget_value ? ? ? ? 13  ? ?  ?prolog:wcodeprolog:encode push_cutpush_cut?? ? ? 14 0 ? 0prolog:wcodeprolog:encode put_cutput_cut?? ? ? 15 0 ? 0prolog:wcodeprolog:encode get_cutget_cut?? ? ? 16 0 ? 0prolog:wcodeprolog:encode execute_?execute_? ? ? ? ? 17 0  ?  ?prolog:wcodeprolog:encode load_constantload_constant ? ? ? ? 28  ?  ? 0prolog:wcodeprolog:encode load_variableload_variable ? ? ? ? 50  ? ?  ?prolog:wcodeprolog:encode load_valueload_value ? ? ? ? 29  ? ?  ?prolog:wcodeprolog:encode push_structurepush_structure ? ?/?? 51prolog:wcodeprolog:encode push_variablepush_variableput ? ? 52 ? 0prolog:wcodeprolog:encode unify_voidunify_void ? ? 61 ? 0prolog:wcodeprolog:encode write_voidwrite_void ? ? 62 ? 0prolog:wcodeprolog:encode c_chunk_variablec_chunk_variable ? ? ? 63 ?  ?prolog:write_or_skipprolog:encode c_chunk_valuec_chunk_value ? ? ? 64 ?  ?prolog:write_or_skipprolog:encode clause_?clause_? +?1 ? prolog:wcode?? ?0??? ?prolog:n_nopprolog:encode firstarg_?firstarg_?/? ? +?2 ? prolog:wcode?? ??? ??  ?prolog:n_nopprolog:encode end_?end_? ? ? ? ? 0  ?  ? 0prolog:wcodeprolog:encode inline_variableinline_variable prolog:wcode??????? ?prolog:n_inlineprolog:encode arith_variablearith_variable prolog:wcode????0?? ?prolog:n_arithprolog:encode arith_valuearith_value prolog:wcode????1?? ?prolog:n_arithprolog:encode builtin_?builtin_? prolog:wcode??????? ?prolog:n_builtinprolog:encode_op_ ?op + ?3 ? make_cmd4 ? ? prolog:wcode?? ?0 ?0?3 .? .4 ? .? .4 ? .?[]3 .32[]3 .32[]  ? ?prolog:n_nopprolog:n_inline_ bu_ctrn_inline? ?metacallprolog:n_arith_ bu_ctrn_arith? ?metacallprolog:n_builtin_ bu_ctrn_builtin? ?metacallprolog:n_nop_ bu_ctrn_nop? ?metacallprolog:bu_ bu0??? ? ?metacallprolog:write_or_skip wamwam ??trueprolog:write_or_skip memmem ??trueprolog:write_or_skip_len ? greater_eq ? ? less ? ? $bin_cut? prolog:write_or_skip0????? ??  ?  ?  ?prolog:c_thresholdprolog:write_or_skip _ ?trueprolog:write_or_skip0 wamwam $bin_cut? prolog:wcodewam?????? c_flag begin_end yes  ?bb_valprolog:write_or_skip0 cc ? ? ? ? ?? 0prolog:wspec_cprolog:write_or_skip0asmasm? bb_valc_flagbegin_endyes = ?c = ?n prolog:wcodeasm?4 ?????3 +? ?  ?  ?  ?ifprolog:write_or_skip0 _ ?trueprolog:wcode memmem ?????J #0trueprolog:wcode wamwam ??J 0?J 0?J 0 put0?writeprolog:wcode cc ? ? ? ? ? ?prolog:wcode_cprolog:wcode asmasm ? ? ? ? ? ?prolog:wcode_asmprolog:wcode_asm _ .? .? .? .?[] write? write--> put9 put9 write? cnl? ?=..prolog:let_c_chunk_file_ ? ? c_chunk file_namebb_letprolog:c_chunk_file_ ? ? c_chunk file_namebb_valprolog:newpredcc? ? ?:-?? ?prolog:newpred0prolog:newpred_ ?trueprolog:newpred0 _ bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0? ?functorprolog:newpred0_ bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0? ?functorprolog:currpred --??/??/?? bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset?? predicate namebb_valprolog:compile_mem _ ?mem compiling4??...3to? ctime?prolog:survive_cleanup?? prolog:mcomp_file?? prolog:maincomp?4 ? prolog:terminate_file?$end11$bin_cut?ctime? -???quietmes4??3compile_time?3 current_user_file? ? ?quietmesprolog:compile_mem_ restart? compilation aborted ?ttyprintprolog:survive_cleanup_ restartprolog:call_ifdefinit_iotruename??prolog:init_cmd? ?nameprolog:mcomp_file_ .?.>?[] statisticsstrings4? statisticssymbols4 ? statisticshtable4 ? prolog:translate_all?? statisticscode4 ? - ??? statisticsstrings4 ?-???statisticssymbols4?-???statisticshtable4?-???+???+???+???quietmes4??3bytes_used4?4?4?4?total?3code?3strings?3symbols?3htable?3.?.>?[]3.?.>?[]3 .?.>?[]3 . ? .>?[]3 .?.>?[]3 .?.>?[]3.?.>?[] code ? ?statisticsprolog:compile0_.??? .??prolog:compile1prolog:compile0_ .?[] ?prolog:compile1prolog:compile1 _? ctime?prolog:xcompile???ctime? -???write4? cnl?3total_compile_time? ?prolog:init_cmdprolog:xcompile _ prolog:decorate_fileheader?prolog:compile_builtins?member??quietmes4? ctime ? prolog:comp_file?? ctime ? - ? ? ? quietmes4 ? fail?3 compile_time ?3compiling4??...3to? ? ?tellprolog:xcompile_ prolog:decorate_filefooter?fail? $end0 0 ?prolog:terminate_fileprolog:xcompile_ ?toldprolog:decorate_file_c ??prolog:c_decorate_fileprolog:decorate_file_ ?trueprolog:terminate_file _ prolog:gg_emit?4?prolog:close_c_chunk_file??3.4?[]3.4?[]3iiend??? ?prolog:make_dummy_endprolog:make_dummy_endcc $bin_cut?? wam.hprolog:c_chunk_fileprolog:make_dummy_end_prolog:maincompprolog:close_c_chunk_filecc? toldprolog:write_c_chunkprolog:close_c_chunk_file_ ?trueprolog:gg_emitmemmem memprolog:gen_codeprolog:gg_emitwamwam wamprolog:gen_codeprolog:gg_emitcc cprolog:gen_codeprolog:gg_emitasmasm asmprolog:show_codeprolog:comp_file_ .wam.asm.bin.c[] $bin_cut?prolog:translate_all??? ? ?memberprolog:translate_all_prolog:translate_all0prolog:memoing_translate_all _ ?wam \+4?prolog:memoable_file???$bin_cut?if4?true4 ? prolog:include_memoed_file??3\+older_file??3 prolog:make_memo_file???3current_moduleprolog binprolog ?is_prologprolog:memoing_translate_all_prolog:translate_all0prolog:memoable_file_ ? ?.??.??.?[] append ?? ? $bin_cut? =?4? name? ? append ?4 ? ? name? ??3 .? ?3.46.112.108[] ?  ? ?nameprolog:make_memo_file _ ?wam1J)0 prolog:translate_all0??toldtell?? ? ?tellprolog:include_memoed_file_0J)0 repeatget0?prolog:put_to_eof?$bin_cut?seensee?? ?seeprolog:put_to_eof-1-1 ??trueprolog:put_to_eof_?J0B? ?trueprolog:translate_all0 _0J)0 repeatread_clause?prolog:translate??$bin_cut?seensee?? ?seeprolog:translateend_of_fileend_of_file ??trueprolog:translate:-:-?? fail? ?prolog:translate_cmdprolog:translate::-::-?? ?? :-?? fail? ?prolog:compile_binaryprolog:translate_ $bin_cut?prolog:translate_cmd4??fail?3assert? ?prolog:is_dynamic_clauseprolog:translate_ ? ? fail? ? ?prolog:maincompprolog:is_dynamic_clause:-:-???is_dynamicprolog:is_dynamic_clause_is_dynamicprolog:maincomp _ prolog:show_steps??? prolog:compile_binary??? ? ? ?prolog:preprocessprolog:translate_cmd..?[]?prolog:include_fileprolog:translate_cmdcompilecompile??prolog:include_fileprolog:translate_cmdensure_loadedensure_loaded??prolog:include_fileprolog:translate_cmdconsultconsult??prolog:include_fileprolog:translate_cmdreconsultreconsult??prolog:include_fileprolog:translate_cmddynamicdynamic? ??dynamicprolog:translate_cmdinteractiveinteractive? ??interactiveprolog:translate_cmdspyspy? ??spyprolog:translate_cmd opop???? if4?4 ?true?3member?.wam.c[]3 prolog:encode_op???? ? ?opprolog:translate_cmd_prolog:exec_cmdprolog:exec_cmd_ prolog:maincomp??fail? ?prolog:cmd2clauseprolog:cmd_root$run_time_command$run_time_command ?trueprolog:init_cmd_ prolog:get_cmd_no?? ?prolog:cmd_rootprolog:get_cmd_no_ ? bb_setgensym?0$bin_cut?? gensym ? ?bb_valprolog:get_cmd_no_ ?trueprolog:cmd2clause _:-?? gensym??quietmes% !!! action delayed after compilation, for command:quietmes4?if4?truetrue?3public/?03:-? ?prolog:cmd_rootprolog:exec_run_time_commands_ prolog:exec_run_time_commands0?fail? ?prolog:cmd_rootprolog:exec_run_time_commands_trueprolog:exec_run_time_commands0 _ ?10000 symcat???if4?4?true $bin_cut??3is_compiled?3,4?fail3call? 1forprolog:include_file _0J)0 quietmes4?prolog:memoing_translate_all?? seeing_telling0 ? quietmes4 ??3 end4 ? in ?3 including?3begin4? in?3including? ? ?find_fileprolog:preprocess _ prolog:fact2rule?? prolog:mdef_to_def?? prolog:def_to_mbin??? ? ?prolog:std_expand_termprolog:fact2rule:-:-? ?:-??trueprolog:fact2rule:-:-?? ?:-???trueprolog:fact2rule_:-?true ?truemake_cmd_ name??? ?prolog:make_cmd0prolog:make_cmd0_ ? ? char_in_cmd?? ? ?findallchar_in_cmd _ prolog:listify??member??? ? ?memberprolog:listify..?? ?.???trueprolog:listify_namemake_appl_ ? .?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[] wam newappl.bpprolog:compile0make_executable_unix_appl_ make_cmd4?? system??3.4?.4? .4 ? .? .4 ? .4 ? .? .4 ? .?[]3 .32 .59 .32 .99 .104 .109 .111 .100 .32 .43 .120 .32[]3 .32 .59 .32 .99 .97 .116 .32 .110 .101 .119 .97 .112 .112 .108 .46 .98 .112 .41 .32 .62 .32[]3 .32 .36 .48 .39[]3 .59 .32 .101 .99 .104 .111 .32 .39 .101 .120 .101 .99 .32[]3.59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[]3.40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[] ? ?make_applprolog:cparser_ ? is prolog bin_prolog_with_cparserbb_defkmake_ makewam? ?prolog:cparserkcmake_ cmakewam? ?prolog:cparsertmake_ ? 12 60tmaketmake_ ? 10000tmaketmake_ cmake? ?set_c_thresholdcmake_ ? wamcmakecmake_ ? usercmakecmake_ ? c .cmakemake_ ? wammakemake_ ? usermakemake_ ? wam .bpmakemake _ ? ? ? ?makemake _ module? if4 ?true4 ? module ??3 make0????3 \+ errmesunable_to_make .4 ? .4 ? .4 ?[]3 in_module?3 project??3 mode?  ? ?current_modulemake0 _ find_file?? make_cmd4 ? ? prolog:make_include?? prolog:compile0?? ? ctime ?- ? ?? write4 ? cnl?3 =? time?3 .? .?[]  ? ?ctimeprolog:make_includecc? .?.4?[]3.46.104[] prolog:let_c_chunk_file?? ?make_cmdprolog:make_include_ ?trueasm_ ? asm userprolog:comp_fileasm_ ? user asm .asm BinWAM intermediate codemakeboot_ ? wam prologmakeprolog:uboot_ ? wam usermakels_ ? ls -tFsystemdir_ ? dirsystemedit _ make_cmd4??system?compile??3.?.4?.?[]3.32[] ? ? ?find_fileprolog:get_editor_ unix_getenvEDITOR? unix_getenvVISUAL? $bin_cut?? ? ?orprolog:get_editor_ ? ?truemy_edit_ current_user_file? edit??? ? failprolog:call_ifdefprolog:my_defedit_ current_user_file? prolog:defedit??? ? failprolog:call_ifdefprolog:defedit_ edit??? ? ?prolog:get_editored_ ? emacsprolog:my_defeditedit_ ? editprolog:my_defedittextedit_ ? texteditmy_editemacs_ ? emacsmy_editnotepad_ ? notepadmy_editpico_ ? picomy_editvi_ ? vimy_editco_ current_user_file? compile?? ? failprolog:call_ifdefprolog:s_statisticsprolog:c_rootxxxx ?trueset_c_threshold_ ? 100000set_c_thresholdset_c_threshold_ ? bb_letc_flagc_threshold_max?? c_flag c_threshold_min ?bb_letset_c_trace_ ? ? c_flag tracebb_letprolog:c_threshold_ ? bb_valc_flagc_threshold_max?$bin_cut?? c_flag c_threshold_min ?bb_valprolog:c_threshold110 $bin_cut?? wam.hprolog:c_chunk_fileprolog:c_threshold55500 ?trueprolog:wcode_c_prolog:make_ccodeprolog:make_ccode _ $bin_cut? prolog:make_hcode ??  ?prolog:c_instrprolog:make_ccode_prolog:make_bcodeprolog:make_hcode_ ? prolog:wchunk?? 2 ?prolog:c_traceprolog:make_bcode _ ? {B? ?B? ,B? ?B? ,B? ?B? ,"B? cwrite?cwrite"},cnl?prolog:patch_specialsprolog:make_comment _ -4?/??3/?? = ?4 ? prolog:make_cmd04 ???3 . ? .4 ? .?.4? .?.4? .?.4? .?.4?[]3.93.32.42.47[]3.32.47.32[]3.32.91[]3.32.47.32[]3 .32 .47 .42 .32[]3 .10[] ?  ?prolog:currpredprolog:wspec_c _ $bin_cut?prolog:make_comment? prolog:write_c_chunk4 ? prolog:wchunk ? lwrite? prolog:c_trace1 ? cwrite { write? cwrite, cwrite? cwrite, cwrite? cwrite,(void *) write? cwrite}, cnl?3 ,4 ?nl3 lwrite?  ?prolog:c_specprolog:wspec_c _ $bin_cut? prolog:c_trace1 ? prolog:wchunk ??  ?prolog:c_spec_endlwrite_ ? put?fail? ?memberlwrite_ ?trueprolog:patch_specials_ ?B?? ? ? ?trueprolog:patch_specials _ =?92=?34findall?4 ? ? name? ??3 ,4 ? patch_it ????3 member ?? ?namepatch_it_ ? ?? =?? =?? ?orpatch_it_ ? ?? =?? =?? ?orpatch_it_ ? ?trueprolog:write_c_chunk_? seeing_telling1?tell?call?tell?? ? ?prolog:c_chunk_fileprolog:wchunk_ ,4?nl3fast_write? ?prolog:write_c_chunkprolog:c_decorate_file_ $bin_cut?prolog:c_decorate_file0?wam_bp? wam.h ?prolog:c_chunk_fileprolog:c_decorate_file_ ? user_bpprolog:c_decorate_file0prolog:c_decorate_file0headerheader? init_gensym?prolog:wchunk/* do not edit: generated by co.pl */write#include "../src/global.h"cnlwrite#include "../src/c_defs.h"cnlprolog:c_chunk_file?write#include "write?write"cnlcnlwritestruct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} write?write[] = {cnl? ?prolog:c_rootprolog:c_decorate_file0footerfooter write?write"}};cnlcnlwritelong write?write_size=sizeof(write?write);cnl? {255,0,0," ?writeprolog:c_check_ ? ?prolog:c_check0prolog:c_check0_ ? integer?? c_chunk inbb_valprolog:new_offset_ ? +?1?bb_setpredicateoffset?? predicate offsetbb_valprolog:get_offset_ ? ? predicate offsetbb_valprolog:c_find_fun_ ? ?B?? integer? unexpectederrmesprolog:c_find_fun _ bb_valfun_symbol?? bb_valfun_arity?? $bin_cut? =??? ? 0 ?forprolog:c_find_fun _?1J1 bb_letfun_symbol??bb_letfun_arity??prolog:make_bcodewrite_constant60??? c_chunk in ? ?bb_setprolog:c_chunk_begin_ prolog:c_root?gensym??? c_chunk in -1bb_letprolog:c_chunk_end_ ? c_chunk in nobb_letprolog:newP _ integer?prolog:c_find_fun????? c_chunk in ? ?bb_valprolog:newH_oldP_ prolog:new_offset?? ?prolog:c_checkprolog:oldH_oldP_ prolog:get_offset?? ?prolog:c_checkprolog:newH_newP_ prolog:new_offset?? ?prolog:newPprolog:oldH_newP_ prolog:get_offset?? ?prolog:newPprolog:c_wvoid_ or4?true?3,4?,4?fail3prolog:new_offset>?3for>?2? ? ?prolog:newH_oldPprolog:c_aux_load_integer_load_integer?? ?B?? ?prolog:c_checkprolog:c_aux_load_integer_load_constant?? ? ? ? ?prolog:newPprolog:c_aux_put_integer_put_integer?? ?B?? ?prolog:c_checkprolog:c_aux_put_integer_put_constant?? ? ? ? ?prolog:newPprolog:c_aux_get_integer_get_integer?? ?B?? ?prolog:c_checkprolog:c_aux_get_integer_get_constant?? ? ? ? ?prolog:newPprolog:c_aux_write_integer_ ?write_integer?? ?B?? ?prolog:newH_oldPprolog:c_aux_write_integer_ ?write_constant??prolog:newH_newPprolog:c_aux_unify_integer_ ?unify_integer?? ?B?? ?prolog:oldH_oldPprolog:c_aux_unify_integer_ ?unify_constant??prolog:oldH_newPprolog:c_trace _ greater_eq??$bin_cut?prolog:write_c_chunk4??3,4?,4? ,4 ?nl3 write ")3write?3writec_trace(" c_flag trace ?bb_valprolog:c_trace_ ?trueprolog:c_specc_chunk_variablec_chunk_variable ? ?c_chunk_variable?prolog:c_chunk_beginprolog:c_skip22 ?trueprolog:c_spec_endc_chunk_valuec_chunk_valuec_chunk_value ? ? prolog:c_check0 ? + ?? ? prolog:c_chunk_end prolog:get_offset ? prolog:make_bcodec_chunk_value?0? ??  ?prolog:c_skipprolog:c_instr put_structureput_structure ? ? ?put_structure? ??  ?prolog:newH_newPprolog:c_instr put_constantput_constant ? ? ? ? ?prolog:c_aux_put_integerprolog:c_instr push_variablepush_variablepush_variable() defoffset???prolog:newH_oldPprolog:c_instr push_structurepush_structure ? ?push_structure? ? ? valoffset? ? rmoffset??  ?prolog:newH_newPprolog:c_instr write_valuewrite_value ?write_value??prolog:newH_oldPprolog:c_instr write_variablewrite_variable ?write_variable??prolog:newH_oldPprolog:c_instr write_constantwrite_constant ? ? ? ?prolog:c_aux_write_integerprolog:c_instr push_constantpush_constant ? ? ? ?prolog:c_aux_write_integerprolog:c_instr get_variableget_variable ?move_reg??prolog:c_checkprolog:c_instr put_valueput_value ?move_reg??prolog:c_checkprolog:c_instr put_variableput_variable ?put_variable???prolog:newH_oldPprolog:c_instr write_voidwrite_void ? ?write_void??prolog:c_wvoidprolog:c_instr push_cutpush_cut ?push_cut?prolog:newH_oldPprolog:c_instr put_cutput_cutput_cut() ?prolog:c_checkprolog:c_instr get_cutget_cutget_cut() ?prolog:c_checkprolog:c_instr load_constantload_constant ? ? ? ? ?prolog:c_aux_load_integerprolog:c_instr load_variableload_variable ?load_variable???prolog:newH_oldPprolog:c_instr load_valueload_value ?load_value??prolog:c_checkprolog:c_instr get_valueget_value ?get_value??prolog:c_checkprolog:c_instr get_constantget_constant ? ? ? ? ?prolog:c_aux_get_integerprolog:c_instr get_structureget_structure ? ? ?get_structure? ??  ?prolog:oldH_newPprolog:c_instr unify_variableunify_variable ?unify_variable??prolog:oldH_oldPprolog:c_instr unify_valueunify_value ?unify_value??prolog:oldH_oldPprolog:c_instr unify_constantunify_constant ? ? ? ?prolog:c_aux_unify_integerprolog:c_instr unify_voidunify_void ?unify_void??prolog:oldH_oldPprolog:c_instr inline_variableinline_variable prolog:c_check_iv???prolog:c_checkprolog:c_instr arith_variablearith_variable ? ? prolog:c_opcode????prolog:c_check_avprolog:c_instr arith_valuearith_value ? ? prolog:c_opcode????prolog:c_check_avprolog:c_check_av00arith_op+???? ?prolog:oldH_oldPprolog:c_check_av11arith_op-???? ?prolog:oldH_oldPprolog:c_check_av22arith_op*???? ?prolog:oldH_oldPprolog:c_check_av33arith_op%???? ?prolog:oldH_oldPprolog:c_check_av44 ?div_3???trueprolog:c_check_av55fdiv_3???? ?prolog:oldH_oldPprolog:c_check_av66 ?random_1??trueprolog:c_check_av77 ?get0_1??trueprolog:c_check_av88put0_1() ?trueprolog:c_check_av99 ?rel_op<?trueprolog:c_check_av1010 ?rel_op>?trueprolog:c_check_av1111 ?rel_op<=?trueprolog:c_check_av1212 ?rel_op>=?trueprolog:c_check_av1313 ?rel_op==?trueprolog:c_check_av1414 ?rel_op!=?trueprolog:c_check_av1515 ?int_only_op<<??trueprolog:c_check_av1616 ?int_only_op>>??trueprolog:c_check_av1717 ?int_only_op&??trueprolog:c_check_av1818 ?int_only_op|??trueprolog:c_check_av1919 ?int_only_op^??trueprolog:c_check_av2020 ?l_neg_3??trueprolog:c_check_av2121 ?compare0_3??trueprolog:c_check_av2222 ?arg_3??trueprolog:c_check_av2323setarg_3() ?trueprolog:c_check_av2424change_arg_3() ?trueprolog:c_check_av2525def_3() ?trueprolog:c_check_av2626rm_2() ?trueprolog:c_check_av2727set_3() ?trueprolog:c_check_av2828 ?val_3??trueprolog:c_check_av2929 ?lval_3??trueprolog:c_check_av3030 ?symcat_3??trueprolog:antigenicarith_variablearith_variable ??30J 0trueprolog:antigenicarith_valuearith_value ??30J 0trueprolog:antigenicbuiltin_?builtin_? ??0J 0trueprolog:c_opcode_ +???? ?prolog:c_checkprolog:c_check_iv00fail_0() ?trueprolog:c_check_iv11cwrite_1() ?trueprolog:c_check_iv22cnl_1() ?trueprolog:c_check_iv33var_1() ?trueprolog:c_check_iv44nonvar_1() ?trueprolog:c_check_iv55integer_1() ?trueprolog:c_check_iv66atomic_1() ?trueprolog:c_check_iv77is_compiled_1() ?trueprolog:$end0_truewamBinProlog3.45/src/progs120777 764 764 0 6664733562 15372 2../progsustar javierjavierBinProlog3.45/src/wam.bp100644 764 764 521026 5764563414 14260 0ustar javierjavier$bin_cut$cut? ?truefail_B?truecwrite_ ?B? ?truecnl_B?truevar_ ?B? ?truenonvar_ ?B? ?trueinteger_ ?B? ?trueatomic_ ?B? ?trueis_compiled_ ?B? ?true+_??J1 ?true-_??J1 ?true*_??J1 ?truemod_??J1 ?true//_??J1 ?true/_??J1 ?truerandom_J1 ?trueget0_J1 ?trueput_?J0 ?trueless_??J 0 ?truegreater_??J 0 ?trueless_eq_??J 0 ?truegreater_eq_??J 0 ?truearith_eq_??J 0 ?truearith_dif_??J0 ?true<<_??J1 ?true>>_??J1 ?true/\_??J1 ?true\/_??J1 ?true#_??J1 ?true\_??J1 ?truecompare0_??J1 ?truearg_??J1 ?truesetarg_???J0 ?truechange_arg_???J0 ?truedef_???J0 ?truerm_??J0 ?trueset_???J0 ?trueval_??J1 ?truelval_??J1 ?truesymcat_??J1 ?truedcg_connect_J1 ?truelist2term_?J 1 ?trueterm2list_???J!1 ?trueself_info_J"1 ?trueadd_instr_????J#0 ?truelift_heap_??J$0 ?truedet_append0_??J%1 ?truecopy_term_??J&1 ?truebb_list0_??J'1 ?trueolder_file_??J(0 ?trueseeing_telling_?J)1 ?truesee_tell_??J*0 ?trueseen_told_?J+0 ?trueseeing_telling_at_?J,1 ?truesee_tell_at_??J-0 ?truestring_op_??J.1 ?trueop0_???J/0 ?trueterm_append_??J01 ?truefloat_fun2_???J11 ?truefloat_fun_??J21 ?trueinput_float_???J31 ?truewrite_float_?J40 ?truestrip_cont0_?J51 ?truedcg_def_?J60 ?truedcg_val_J71 ?truedcg_tell_?J80 ?truedcg_telling_J91 ?trueiso_open_stream_??J:1 ?trueiso_close_stream_??J;0 ?trueiso_write_term_???J<0 ?trueiso_read_term_??J=1 ?trueiso_put_byte_??J>0 ?trueiso_get_byte_?J?1 ?trueiso_peek_byte_?J@1 ?trueiso_eof_?JA0 ?trueiso_lseek_???JB1 ?truebb_put_??JC0 ?truebb_get_???JD1 ?truebb_op_??JE1 ?truesetref_??JF0 ?trueunix_argc_JG1 ?trueunix_argv_?JH1 ?trueunix_getenv_?JI1 ?trueunix_access_??JJ0 ?trueunix_cd_?JK0 ?trueunix_kill_??JL0 ?truequiet_JM1 ?truecreate_engine_???JN1 ?truedestroy_engine_?JO0 ?trueload_engine_???JP0 ?trueask_engine_?JQ1 ?truemultitask_engines_?JR0 ?truesuspend_engine_?JS0 ?truenew_builtin_??JT1 ?truehalt_?JU0 ?truetrue_?truecall_?trueabort_?truerestart_?truefindall_store_heap_?truefindall_load_heap_?truefunctor_?truename_?trueshell_?truestat0_ ?truelist_asm_ ?truebb_reset_ ?trueprofile_ ?trueif0_ ?true1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=bu0failfail?0in_body ?truebu0cwritecwrite=?1in_body ?truebu0cnlcnl?2in_body ?truebu0varvar=?3in_body ?truebu0nonvarnonvar=?4in_body ?truebu0integerinteger=?5in_body ?truebu0atomicatomic=?6in_body ?truebu0is_compiledis_compiled=?7in_body ?truebu0++=?in_body ?arith01truebu0--=?in_body ?arith11truebu0**=?in_body ?arith21truebu0modmod=?in_body ?arith31truebu0////=?in_body ?arith41truebu0//=?in_body ?arith51truebu0randomrandom=?in_body ?arith61truebu0get0get0=?in_body ?arith71truebu0putput=?in_body ?arith80truebu0lessless=?in_body ?arith90truebu0greatergreater=?in_body ?arith100truebu0less_eqless_eq=?in_body ?arith110truebu0greater_eqgreater_eq=?in_body ?arith120truebu0arith_eqarith_eq=?in_body ?arith130truebu0arith_difarith_dif=?in_body ?arith140truebu0<<<<=?in_body ?arith151truebu0>>>>=?in_body ?arith161truebu0/\/\=?in_body ?arith171truebu0\/\/=?in_body ?arith181truebu0##=?in_body ?arith191truebu0\\=?in_body ?arith201truebu0compare0compare0=?in_body ?arith211truebu0argarg=?in_body ?arith221truebu0setargsetarg=?in_body ?arith230truebu0change_argchange_arg=?in_body ?arith240truebu0defdef=?in_body ?arith250truebu0rmrm=?in_body ?arith260truebu0setset=?in_body ?arith270truebu0valval=?in_body ?arith281truebu0lvallval=?in_body ?arith291truebu0symcatsymcat=?in_body ?arith301truebu0dcg_connectdcg_connect=?in_body ?arith311truebu0list2termlist2term=?in_body ?arith321truebu0term2listterm2list=?in_body ?arith331truebu0self_infoself_info=?in_body ?arith341truebu0add_instradd_instr=?in_body ?arith350truebu0lift_heaplift_heap=?in_body ?arith360truebu0det_append0det_append0=?in_body ?arith371truebu0copy_termcopy_term=?in_body ?arith381truebu0bb_list0bb_list0=?in_body ?arith391truebu0older_fileolder_file=?in_body ?arith400truebu0seeing_tellingseeing_telling=?in_body ?arith411truebu0see_tellsee_tell=?in_body ?arith420truebu0seen_toldseen_told=?in_body ?arith430truebu0seeing_telling_atseeing_telling_at=?in_body ?arith441truebu0see_tell_atsee_tell_at=?in_body ?arith450truebu0string_opstring_op=?in_body ?arith461truebu0op0op0=?in_body ?arith470truebu0term_appendterm_append=?in_body ?arith481truebu0float_fun2float_fun2=?in_body ?arith491truebu0float_funfloat_fun=?in_body ?arith501truebu0input_floatinput_float=?in_body ?arith511truebu0write_floatwrite_float=?in_body ?arith520truebu0strip_cont0strip_cont0=?in_body ?arith531truebu0dcg_defdcg_def=?in_body ?arith540truebu0dcg_valdcg_val=?in_body ?arith551truebu0dcg_telldcg_tell=?in_body ?arith560truebu0dcg_tellingdcg_telling=?in_body ?arith571truebu0iso_open_streamiso_open_stream=?in_body ?arith581truebu0iso_close_streamiso_close_stream=?in_body ?arith590truebu0iso_write_termiso_write_term=?in_body ?arith600truebu0iso_read_termiso_read_term=?in_body ?arith611truebu0iso_put_byteiso_put_byte=?in_body ?arith620truebu0iso_get_byteiso_get_byte=?in_body ?arith631truebu0iso_peek_byteiso_peek_byte=?in_body ?arith641truebu0iso_eofiso_eof=?in_body ?arith650truebu0iso_lseekiso_lseek=?in_body ?arith661truebu0bb_putbb_put=?in_body ?arith670truebu0bb_getbb_get=?in_body ?arith681truebu0bb_opbb_op=?in_body ?arith691truebu0setrefsetref=?in_body ?arith700truebu0unix_argcunix_argc=?in_body ?arith711truebu0unix_argvunix_argv=?in_body ?arith721truebu0unix_getenvunix_getenv=?in_body ?arith731truebu0unix_accessunix_access=?in_body ?arith740truebu0unix_cdunix_cd=?in_body ?arith750truebu0unix_killunix_kill=?in_body ?arith760truebu0quietquiet=?in_body ?arith771truebu0create_enginecreate_engine=?in_body ?arith781truebu0destroy_enginedestroy_engine=?in_body ?arith790truebu0load_engineload_engine=?in_body ?arith800truebu0ask_engineask_engine=?in_body ?arith811truebu0multitask_enginesmultitask_engines=?in_body ?arith820truebu0suspend_enginesuspend_engine=?in_body ?arith830truebu0new_builtinnew_builtin=?in_body ?arith841truebu0halthalt=?in_body ?arith850truebu0truetrue?0in_head ?truebu0callcall=?1in_head ?truebu0abortabort?2in_head ?truebu0restartrestart?3in_head ?truebu0findall_store_heapfindall_store_heap=?4in_head ?truebu0findall_load_heapfindall_load_heap=?5in_head ?truebu0functorfunctor=?6in_head ?truebu0namename=?7in_head ?truebu0shellshell=?8in_head ?truebu0stat0stat0=?9in_head ?truebu0list_asmlist_asm=?10in_head ?truebu0bb_resetbb_reset?11in_head ?truebu0profileprofile?12in_head ?truebu0if0if0=?13in_head ?truebu_ctrn_inlinen_inline66 ?truebu_ctrn_arithn_arith74 ?truebu_ctrn_builtinn_builtin160 ?truebu_ctrn_nopn_nop174 ?truebu1!! ?truebu1..=? ?truebu1compilecompile? ?truebu1includeinclude? ?truebu1oror=? ?truebu1ifif=? ?truebu1strip_contstrip_cont=? ?truebu1termcattermcat=? ?truebu1add_contadd_cont=? ?truebu1asmasm ?truebu1asmasm? ?truebu1=..=..=? ?truebu1::-::-=? ?truebu1statisticsstatistics ?truebu1interactiveinteractive? ?truebu1metacallmetacall? ?truebu1metatruemetatrue? ?truebu1expand_termexpand_term=? ?truebu1===? ?truebu1->->=? ?truebu1;;=? ?truebu1,,=? ?truebu1repeatrepeat ?truebu1\+\+? ?truebu1\=\==? ?truebu1findall_workhorsefindall_workhorse=? ?truebu1findallfindall=? ?truebu1findallfindall=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_disjfindall_disj=? ?truebu1findall_disjfindall_disj=? ?truebu1allall=? ?truebu1whilewhile=? ?truebu1skip_untilskip_until=? ?truebu1skip_whenskip_when=? ?truebu1find_whilefind_while=? ?truebu1nth_answernth_answer=? ?truebu1take_at_mosttake_at_most=? ?truebu1drop_at_leastdrop_at_least=? ?truebu1has_fuelhas_fuel? ?truebu1find_at_mostfind_at_most=? ?truebu1all_but_at_leastall_but_at_least=? ?truebu1forfor=? ?truebu1argnargn=? ?truebu1appendappend=? ?truebu1membermember=? ?truebu1det_appenddet_append=? ?truebu1..=? ?truebu1++++=? ?truebu1lengthlength=? ?truebu1make_cmdmake_cmd=? ?truebu1numbervarsnumbervars=? ?truebu1gc_callgc_call? ?truebu1groundground? ?truebu1atomatom? ?truebu1floatfloat? ?truebu1numbernumber? ?truebu1compoundcompound? ?truebu1appendNappendN=? ?truebu1append_conjappend_conj=? ?truebu1append_disjappend_disj=? ?truebu1tabtab? ?truebu1getget? ?truebu1isis=? ?truebu1exprexpr=? ?truebu1comparecompare=? ?truebu1=====? ?truebu1\==\===? ?truebu1@<@<=? ?truebu1@>@>=? ?truebu1@=<@=<=? ?truebu1@>=@>==? ?truebu1<<=? ?truebu1>>=? ?truebu1=<=<=? ?truebu1>=>==? ?truebu1=:==:==? ?truebu1=\==\==? ?truebu1++=? ?truebu1--=? ?truebu1\\=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm=? ?truebu1bb_letbb_let=? ?truebu1bb_change_argbb_change_arg=? ?truebu1letlet=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm? ?truebu1bb_letbb_let=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1:=::=:=? ?truebu1##? ?truebu1powpow=? ?truebu1loglog=? ?truebu1sqrtsqrt=? ?truebu1expexp=? ?truebu1loglog=? ?truebu1sinsin=? ?truebu1coscos=? ?truebu1tantan=? ?truebu1asinasin=? ?truebu1atanatan=? ?truebu1acosacos=? ?truebu1integerinteger=? ?truebu1floatfloat=? ?truebu1statisticsstatistics=? ?truebu1predicate_propertypredicate_property=? ?truebu1current_predicatecurrent_predicate=? ?truebu1current_predicatecurrent_predicate? ?truebu1ctimectime? ?truebu1helphelp? ?truebu1aproposapropos? ?truebu1aproposapropos=? ?truebu1unixunix? ?truebu1systemsystem? ?truebu1meta_interpretermeta_interpreter? ?truebu1tracetrace? ?truebu1dynamicdynamic? ?truebu1assertaasserta? ?truebu1assertzassertz? ?truebu1assertassert? ?truebu1retractretract? ?truebu1retractallretractall? ?truebu1instanceinstance=? ?truebu1eraseerase? ?truebu1clauseclause=? ?truebu1abolishabolish=? ?truebu1debugdebug? ?truebu1consultconsult? ?truebu1reconsultreconsult? ?truebu1listinglisting ?truebu1listinglisting? ?truebu1listinglisting=? ?truebu1=>=>=? ?truebu1assumeiassumei? ?truebu1assumelassumel? ?truebu1assumedassumed? ?truebu1assumed_clauseassumed_clause=? ?truebu1assumed_clauseassumed_clause=? ?truebu1-:-:=? ?truebu1is_assumedis_assumed? ?truebu1is_dynamicis_dynamic? ?truebu1bbbb ?truebu1bbbb? ?truebu1bb_listbb_list? ?truebu1bb_elementbb_element=? ?truebu1sortsort=? ?truebu1keysortkeysort=? ?truebu1bagofbagof=? ?truebu1setofsetof=? ?truebu1^^=? ?truebu1free_variablesfree_variables=? ?truebu1notnot? ?truebu1term_charsterm_chars=? ?truebu1vars_ofvars_of=? ?truebu1user_erroruser_error=? ?truebu1errmeserrmes=? ?truebu1quietmesquietmes? ?truebu1mainmain ?truebu1mainmain? ?truebu1topleveltoplevel ?truebu1is_prologis_prolog? ?truebu1get_codeget_code? ?truebu1put_codeput_code? ?truebu1nlnl ?truebu1readread? ?truebu1read_termread_term=? ?truebu1top_read_termtop_read_term=? ?truebu1warn_singletonswarn_singletons=? ?truebu1read_with_singletonsread_with_singletons=? ?truebu1read_clauseread_clause? ?truebu1read_tokensread_tokens=? ?truebu1writewrite? ?truebu1printprint? ?truebu1writeqwriteq? ?truebu1portable_displayportable_display? ?truebu1displaydisplay? ?truebu1portrayportray? ?truebu1portray_clauseportray_clause? ?truebu1pp_clausepp_clause? ?truebu1pp_termpp_term? ?truebu1fast_writefast_write? ?truebu1ttyinttyin? ?truebu1ttyoutttyout? ?truebu1ttyputttyput? ?truebu1ttynlttynl ?truebu1ttyprinttyprin? ?truebu1ttyprintttyprint? ?truebu1ttycwritettycwrite? ?truebu1ttycwritelnttycwriteln? ?truebu1seesee? ?truebu1seeingseeing? ?truebu1seenseen ?truebu1telltell? ?truebu1tellingtelling? ?truebu1toldtold ?truebu1see_atsee_at? ?truebu1seeing_atseeing_at? ?truebu1tell_attell_at? ?truebu1telling_attelling_at? ?truebu1file_search_pathfile_search_path? ?truebu1file_extension_listfile_extension_list? ?truebu1file_libraryfile_library=? ?truebu1make_file_namemake_file_name=? ?truebu1find_filefind_file=? ?truebu1exists_fileexists_file? ?truebu1see_or_failsee_or_fail=? ?truebu1flushflush ?truebu1sreadsread=? ?truebu1swriteswrite=? ?truebu1bu0bu0=? ?truebu1bu1bu1? ?truebu1current_opcurrent_op=? ?truebu1opop=? ?truebu1is_builtinis_builtin? ?truebu1editedit=? ?truebu1my_editmy_edit? ?truebu1editedit ?truebu1eded ?truebu1textedittextedit ?truebu1emacsemacs ?truebu1picopico ?truebu1notepadnotepad ?truebu1vivi ?truebu1coco ?truebu1current_user_filecurrent_user_file? ?truebu1lsls ?truebu1dirdir ?truebu1make_applmake_appl? ?truebu1make_executable_unix_applmake_executable_unix_appl=? ?truebu1makemake ?truebu1makemake? ?truebu1makemake=? ?truebu1makemake=? ?truebu1makemake=? ?truebu1make0make0=? ?truebu1cmakecmake ?truebu1cmakecmake? ?truebu1cmakecmake=? ?truebu1kmakekmake ?truebu1kcmakekcmake ?truebu1tmaketmake ?truebu1tmaketmake? ?truebu1tmaketmake=? ?truebu1ctracectrace ?truebu1bootboot ?truebu1add_trueadd_true=? ?truebu1gc_readgc_read? ?truebu1gc_read_clausegc_read_clause? ?truebu1do_bodydo_body? ?truebu1tr_bodytr_body=? ?truebu1ith_clauseith_clause=? ?truebu1char_in_cmdchar_in_cmd=? ?truebu1show_code0show_code0=? ?truebu1bu_ctrbu_ctr=? ?truebu1patch_itpatch_it=? ?truebu1lwritelwrite? ?truebu1module_callmodule_call=? ?truebu1modulemodule? ?truebu1modulemodule=? ?truebu1is_moduleis_module? ?truebu1modulesmodules? ?truebu1current_modulecurrent_module? ?truebu1module_predicatemodule_predicate=? ?truebu1module_namemodule_name=? ?truebu1publicpublic? ?truebu1is_publicis_public? ?truebu1gensymgensym=? ?truebu1init_gensyminit_gensym? ?truebu1spy_goalspy_goal? ?truebu1spyspy? ?truebu1spyingspying? ?truebu1nospynospy? ?truebu1otherwiseotherwise ?truebu1falsefalse ?truebu1copy_termcopy_term=? ?truebu1phrasephrase=? ?truebu1phrasephrase=? ?truebu1nth_membernth_member=? ?truebu1member_imember_i=? ?truebu1savedsaved=? ?truebu1stat_dictstat_dict=? ?truebu1set_c_thresholdset_c_threshold? ?truebu1set_c_thresholdset_c_threshold=? ?truebu1set_c_traceset_c_trace? ?truebu1CC=? ?truebu1halthalt ?truebu1::=? ?truestat_dictruntimeruntime0 ?truestat_dictglobal_stackglobal_stack1 ?truestat_dictlocal_stacklocal_stack2 ?truestat_dicttrailtrail3 ?truestat_dictcodecode4 ?truestat_dictstringsstrings5 ?truestat_dictsymbolssymbols6 ?truestat_dicthtablehtable7 ?truestat_dictbboardbboard8 ?trueuser_error_ ? ? ? basic ? ?prolog:error_messageerrmes_ ? ? ? pretty ? ?prolog:error_messageprolog:error_message _JM0?5J 01J)0 prolog:portray_error???$bin_cut?tell?fail? user ?tellquietmes_JM0?4J 0?ttyprintquietmes_ ?trueprolog:portray_errorbasicbasic ? >>> B? ?B? : B? ?B?B?trueprolog:portray_errorprettypretty write?write: cnlportray_clause?? *** ?writemember_.?? ?truemember_.??membernth_member_ ? ? 1 ?member_imember_i_ ?.?? ?truemember_i_.???1J0member_i:_module_callmodule_call_ ? $bin_cut?call??is_publicmodule_call_ call?? ?module_predicatemodule_predicate _ .?? module_name??? =..?4 ??3 .?? ? ?  ?=..module_name _ ?B? ?B?? .?[] ? ?.58[] name?? det_append?4 ? ? name? ??3 .?? ?namemodule_name_ ? .?.?[] should_be_nonvar ?user_errormodule_ ? bb_letmodule_name??? current module_namebb_letmodule_ member??prolog:public0?fail? ?modulemodule_ ?truecurrent_module_ $bin_cut?=??? current module_namebb_valcurrent_moduleuseruser ?trueis_module_ ? ? ?B?? module_name ? ?bb_valis_module_ bb_element4???3=4?>?3+4?/?03/module_name0 ? ?bb_listmodules_ ? ? is_module?findallprolog:hide_atom_ $bin_cut?? ?prolog:hide_atom0prolog:hide_atom_ ? ?trueprolog:hide_atom0_ $bin_cut?fail? usercurrent_moduleprolog:hide_atom0_ $bin_cut?fail?is_publicprolog:hide_atom0_ module_predicate???? ? ?current_moduleprolog:public0 //?? current_module?bb_defpublic??$bin_cut?? ?functorprolog:public0_ ? public? bad or repeated declarationerrmespublic,,??? public?? ?publicpublic_prolog:public0is_public_ ? ?prolog:is_publicprolog:is_public_ ? $bin_cut?=??? public ? ?bb_valprolog:is_public_ ?is_builtininit_gensym_ ? ? gensym ? 0bb_letgensym_ symcat???? ? ?prolog:gensym_noprolog:gensym_no_gensym?J0??1J1gensym??J0 ?trueprolog:gensym_no_ ?1gensym??J0 ?truecurrent_op_ ? ? ?B?? ?prolog:get_opcurrent_op _ if4?4?4 ??3valopmark??3prolog:get_op???3 ,4 ?fail3 $bin_cut? ? 0 10000 ?forop_???J/0 ?trueprolog:get_op_ prolog:get_op0????? ? ? ?prolog:op_typeprolog:get_op0_??J1??J1?0J 0 ?trueprolog:op_typexfyxfyinfixop ?trueprolog:op_typexfxxfxinfixop ?trueprolog:op_typeyfxyfxinfixop ?trueprolog:op_typefxfxprefixop ?trueprolog:op_typefyfyprefixop ?trueprolog:op_typexfxfpostfixop ?trueprolog:op_typeyfyfpostfixop ?trueis_dynamic_?$firstJ0 ?trueis_assumed_$assumed?J0 ?B? ?truespy_goal_tracespying_ yes ?spying?J1 ?truespy //?? \+4?$bin_cut?bb_letspying?yes?3is_builtin? ?functorspy_ ? ? unable_to_spy_on ?user_errornospy//??? bb_rmspying?? ?functorprolog:is_builtin_nonvar_ bu1? $bin_cut?? ? ?metacallprolog:is_builtin_nonvar_ cont>? prolog:bu?>?? ?termcatprolog:is_builtin_var_ bu1? ?metacallprolog:is_builtin_var_ strip_cont??>?? ? ? ?prolog:buis_builtin_ ?B??prolog:is_builtin_nonvaris_builtin_prolog:is_builtin_varinteractive_ ? ?B?? =?yes =?no prolog:is_interactiveifinteractive_ ?B?prolog:interactive0prolog:is_interactive_ ? current_op1199fx?-\+prolog:interactive0yesyes ? 1200 fx ?-opprolog:interactive0nono ? 1199 fx ?-opexpand_term_prolog:portable_expand_termprolog:std_expand_term_prolog:portable_expand_termstrip_cont_ -???J51 ?truemetatrue_ metacall??strip_contmetacall_ ? meta_interpreter? call_ifdef?user_errorno meta_interpreter for undefined goal? ?prolog:call_ifdefotherwise_truefalse_B?trueprolog:call_ifdef_ ? ?B??callprolog:call_ifdef_ ? ?call=_ ? ?true->_ $bin_cut?call?? ?call;->->?? ? ?? ? ?if;_ ?call;_ ? ?callor_ ?callor_ ? ?callif_ $bin_cut?call?? ?callif_ ? ?call,_ call?? ?call\+_ $bin_cut?fail? ?call\+_ ?true\=_ ? ??B?true\=_ ?truehalt_0JU0truerepeat_truerepeat_repeatfindall_workhorse _??J$0 findall_store_heap?? ? ?callfindall_workhorse_ ? ?findall_load_heapfindall_ ? .?? . 0findall_workhorsefindall_ ? []findallfindall_conj_ ? truefindall_conjfindall_conj_ ? ,?? , 0findall_workhorsefindall_disj_ ? failfindall_disjfindall_disj_ ? ;?? ; 0findall_workhorsewhile_ if4?true4??3call?3,4?fail3$bin_cut? ? ?callskip_until_ if4?fail4??3call?3$bin_cut? ? ?callskip_when_ if4?failtrue?3call? ? ?callnth_answer_?1J0 ? ?s? has_fuel?skip_untiltake_at_most_ ? ?s? has_fuel?whiledrop_at_least_ ? ?s? has_fuel?skip_whenhas_fuel_1?J0?0J 0?1J01??J0 ?truefind_while_ while?? ? ? ? ?findallfind_at_most_ take_at_most?? ? ? ? ?findallall_but_at_least_ drop_at_least?? ? ? ? ?findallall _ findall4?4? ? prolog:share_vars ? ???3-? ?3call?  ? ?prolog:are_sharedprolog:are_shared _vars?? free_variables??[]?? [] ?free_variablesprolog:share_vars[][][] ?trueprolog:share_vars..??-?? ?.?? ?prolog:share_varsgc_read_ ? read? .?[] ?findallgc_read_clause_ ? read_clause? .?[] ?findallgc_call_ call? member??? ?findallfor_ ???J 0 ?truefor_??J 0?1J0forargn_ ?B????J1 ?trueargn _ for?1?arg???? ? ? ? ?functornumbervars$VAR$VAR? ? ???1J1truenumbervars_ ?B?? ? ? ?truenumbervars..??? numbervars???? ? ?numbervarsnumbervars_ prolog:numbervars0????? ? ? ?functorprolog:numbervars_ ? ?? ? ?trueprolog:numbervars _?1J0??J0 prolog:numbervars?????? ?  ?numbervarsground_ greater?0$bin_cut?fail? 0numbervarsground_ ?truecopy_term_0?J&1 ?trueprolog:save_term_1?J&1 ?trueflush_2J+0trueprolog:see_or_fail_0?J*0 ?trueexists_file_ seen? ?prolog:see_or_failsread_0?J.1 ?trueswrite_1?J.1 ?truesystem[][] ??truesystem..??? .?? shell?? ?namesystem_ ?B?shell._[] ?compileinclude_compilecompile_ prolog:compile_mem?abort? ?find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[] .46.46.47.115.114.99[] prolog:getenv_path4???3.112.114.111.103.115[] ?prolog:getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[] ?truefile_library..?[].?[].46?.112?.108[] .46.46.47.108.105.98.114.97.114.121[] ?prolog:getenv_pathprolog:getenv_path _ ? ?.47[] unix_getenvBP_PATH? ,4 ? det_append ?? ?3 name? ? = ?[] det_append???det_append ???? ?  ?  ?ifmake_file_name _ ? member ?? name? ? det_append ? ? ? det_append? ? ? name? ?? ? ?memberstatistics_.??.?[] stat0???? ?stat_dictstatistics_ cwrite?cwrite=cwrite?cnlfail? ?statisticsstatistics_trueatom_ ?B??B? ?trueatom_ ?B? ?truefloat_ ?B? ? ?$float=? ?truenumber_ ?B?? ?truenumber_floatcompound_ ?B? atomic? ?\+=.._ ?B???J 1 ?true=.._?.[]J!1 ?trueprolog:term2list_?.[]J!1 ?trueprolog:term2dlist_?.?J!1 ?truedet_append_ ->????J%1 ?trueprolog:det_append_ -????J%1 ?trueappendN_ ? []prolog:appendNprolog:appendN[][] ? ?trueprolog:appendN ..?? ->???2?J%1prolog:appendNprolog:append_body_ ? ?prolog:append_bodyprolog:append_body _ det_append0??4 ? if4 ?4 ?4 ??3 compare0 ??=3 =??3 =..?.? . ? .?[]3 - ?? ? 2 ?functorappend_conj _ ? ,?? ,?? ?  ? trueprolog:append_bodyappend_disj _ ? ;?? ;?? ?  ? failprolog:append_body._.?? ?true++_ -[]???J%1 ?trueappend_ -???2?J%1 ?prolog:general_appendprolog:general_append[][] ? ?trueprolog:general_append..??.??prolog:general_appendlength_ ? ? ?B?? 0 ?prolog:get_lengthlength_ ? ? 0 ?prolog:make_lengthprolog:get_length[][] ? ?trueprolog:get_length..???1J0prolog:get_lengthprolog:make_length[][] ? ??trueprolog:make_length..????J 0?1J0prolog:make_lengthtab_ integer?$bin_cut?prolog:tab0?? ?exprtab_ ? ? in tab/1: should evaluate to an integer ?user_errorprolog:tab0_ ? put32fail? ? 1forprolog:tab0_ ?trueget _ get0?or4?4?$bin_cut?=???3greater?323less?0 ?repeatis_ $bin_cut?=??? ? ? ?expris_ is?? error_in_is ?errmesexpr_ ?B?? ? ? ?trueexpr_ $bin_cut?=??? ?floatexpr_ ? ?B?? variable_in_is ?user_errorexpr _ $bin_cut?arg1??arg2??expr??expr??=..?4 ? call?$bin_cut??3 . ?.?.?.?[]  ? 2functorexpr _ arg1??expr??=..?4? call?$bin_cut??3.?.?.?[] ? 1functorcompare_??J1 ?true+_ ? ?true-_0?J1 ?true\_0?J1 ?true==_ = ???J1 ?true\==_??J0 ?prolog:$noteq@<_ < ???J1 ?true@>_ > ???J1 ?true@=<_??J0 ?prolog:$lesseq@>=_??J0 ?prolog:$gteq<_ expr??less??? ?expr>_ expr??greater??? ?expr=<_ expr??less_eq??? ?expr>=_ expr??greater_eq??? ?expr=:=_ expr??arith_eq??? ?expr=\=_ expr??arith_dif??? ?exprprolog:$lesseq<< ?trueprolog:$lesseq== ?trueprolog:$gteq>> ?trueprolog:$gteq== ?trueprolog:$noteq<< ?trueprolog:$noteq>> ?truebb_def_ def???? ? ?savedbb_set_ set???? ? ?savedbb_val_??J0 ? ?copy_termbb_rm_??J0 ?truebb_change_arg _ let???change_arg???? ? ? ?savedbb_let_??J0?bb_setbb_let_bb_defbb_def_ ? ? ? ? ? ?bb_defbb_set_ ? ? ? ? ? ?bb_setbb_val_ ? ? ? ? ? ?bb_valbb_rm_ ? ? ? ?bb_rmbb_let_ ? ? ? ? ? ?bb_letprolog:bb_default_val_ ? $bin_cut??bb_valprolog:bb_default_val_ ? ?truesaved_ $bin_cut?=??? ?prolog:save_termsaved_ prolog:save_term??$bin_cut?=??? ?prolog:bb_gcsaved_ ? /saved2prolog:bb_failsaved_ abort?restartlet_???J0? ?truelet_???J0 ?trueprolog:def_???J0 ?trueprolog:set_???J0 ?trueprolog:val_??J1 ?trueprolog:let_ ? ? ? ? ? ?letprolog:rm_??J0 ?true#_J1 ?truedcg_phrase_ ? ? ? 1 ? ?dcg_phrasedcg_phrase _J90?J80?J60 dcg_val[]dcg_tell?? ? ?call:=:##?? ????J1true:=:_??J1 ?trueprolog:bb_gc_31J'0 bb_resetprolog:bb_put_back?? ?copy_termprolog:bb_put_back[][] ?trueprolog:bb_put_back ..??.??.??.??.? ? functor ???prolog:bb_put_1? ??prolog:bb_put_back ?? ?functorprolog:bb_put_1_ set???$bin_cut?=??? ? ?prolog:save_termprolog:bb_put_1_ +?? ? ?prolog:bb_failprolog:bb_fail _ .>?.?[] user_error4?4??3blackboard overflow, left only?3culprit? bboard ?statisticsprolog:try_float _.??.??integer?box??atom..??atom?? name ??input_float? ????prolog:try_float_expprolog:try_float_.??integer?box?? ?trueprolog:try_float_exp..??atome $bin_cut?? ?prolog:try_float_exp1prolog:try_float_exp..??atom? ? .?[] ? ?.101[] .?? name??integer?$bin_cut?? ?nameprolog:try_float_exp_ ?0 ?trueprolog:try_float_exp1 ..??.??integer?box??atom- ? ??0?J1trueprolog:try_float_exp1 ..??.??integer?box??atom+ ? ? ?trueprolog:float_minus_ $float000??J1 ?truepow_pow??J11 ?truelog_log??J11 ?truesqrt_pow? $float02679111680?J11 ?trueexp_exp?J21 ?truelog_log?J21 ?truesin_sin?J21 ?truecos_cos?J21 ?truetan_tan?J21 ?trueatan_T?J21 ?trueasin_S?J21 ?trueacos_C?J21 ?trueinteger_integer?J21 ?truefloat_ $float000??J1 ?truectime_ ? .?.>?[] runtimestatisticsprolog:is_predicate_ ?B?? ?trueprolog:is_predicate_ $bin_cut?? ?is_dynamicprolog:is_predicate_is_assumedpredicate_property_ ?B??prolog:predicate_property0predicate_property _ functor???prolog:predicate_property0??? ? ? ?prolog:generate_a_predicateprolog:predicate_property0_ $bin_cut?or4?4??3=?dynamic3=?interpreted ?is_dynamicprolog:predicate_property0_ $bin_cut?or4?4??3=?assumed3=?interpreted ?is_assumedprolog:predicate_property0_built_in $bin_cut??is_builtinprolog:predicate_property0_compiled ?B? ?truecurrent_predicate_ ?B?? functor??>?? ? ?prolog:is_predicatecurrent_predicate_ functor???? ?prolog:generate_a_predicatecurrent_predicate//?? ?B? ?B?? prolog:is_predicate?$bin_cut?? ?functorcurrent_predicate//?? ? ?prolog:generate_a_predicateprolog:predicate_key0//$assumed0 ? ? ?B?trueprolog:predicate_key0_ ? ?/$first0trueprolog:predicate_key0 //predmark0predmark ?/??/???0J 0?1J1trueprolog:generate_a_predicate _00J'0 =4??3+? ? prolog:predicate_key0? ??4??3/?? ? ?  ?bb_elementhelp_aproposapropos _ apropos?? sort??member??write?cnlfail? ?findallapropos_ ?trueapropos _-??/?? predicate_property ??functor ???name??prolog:near_match??? ?nameprolog:near_match_ ? ??trueprolog:near_match_ ? $bin_cut?? ? ?prolog:append3prolog:near_match _ ? prolog:append3?4??? $bin_cut??3.>?? ?prolog:append3prolog:append3_ append???? ? ?appendprolog:unix_cd_HOMEJI0?JK0trueprolog:unix_argv _ ? ?JG0?1J0 ,4?unix_argv??3for?1?findallunixargcargc? ?JG1trueunixargvargv?prolog:unix_argvunixgetenvgetenv?? ? unix_getenv?? errmesno such environment variable? trueifunixaccessaccess?? ???JJ0trueunixcdcd? ??JK0trueunixcdcd ?prolog:unix_cdunixkillkill?? ???JL0trueprolog:try_dcg_expansion_ -->?? $bin_cut?? ? ? ?prolog:dcg_ruleprolog:try_dcg_expansion_ ? ? dcg expansion error-> ?errmesprolog:dcg_rule -->-->?? prolog:dcg_body???? prolog:dcg_conj ??? =?4 ??3 :-??  ?prolog:dcg_headprolog:dcg_head @@@@??true ?@@? ?? prolog:dcg_body? ????  ?prolog:dcg_bodyprolog:dcg_head_true ? ? ?prolog:dcg_goalprolog:dcg_head ,,??? prolog:dcg_body????? ? ?  ?prolog:dcg_goalprolog:dcg_head_true ? ? ?prolog:dcg_goalprolog:dcg_goal_? +???J01 ?trueprolog:dcg_body_ ?B?? ? ?phrase??? ?trueprolog:dcg_body ,,??? prolog:dcg_body?? ?? prolog:dcg_conj ????  ?  ? ?prolog:dcg_bodyprolog:dcg_body ->->??->??? prolog:dcg_body????? ?  ?prolog:dcg_bodyprolog:dcg_body ;;??;??? prolog:dcg_disj?????  ?prolog:dcg_disjprolog:dcg_body{}{}? ? ? ??trueprolog:dcg_body!!! ? ??trueprolog:dcg_body[][]true ? ??trueprolog:dcg_body ..??? prolog:dcg_body?? ?? prolog:dcg_conj ????  ?  ? ?prolog:dcg_termprolog:dcg_body_prolog:dcg_goalprolog:dcg_term_C??? ?trueprolog:dcg_disj _ prolog:dcg_disj0?????? ? ?prolog:dcg_bodyprolog:dcg_disj0 _ = ???J1? =?? ? ? ? ?prolog:dcg_conjprolog:dcg_disj0_ ? ? ?trueprolog:dcg_conj_true ? ??trueprolog:dcg_conj_prolog:dcg_CONJprolog:dcg_CONJtruetrue ? ??trueprolog:dcg_CONJ,,??,???prolog:dcg_CONJprolog:dcg_CONJ_,?? ?trueC..?? ? ? ?truephrase_ ? []phrasephrase _ =??=?? call?? ? ?prolog:dcg_bodyprolog:portable_expand_term-->-->?? ? ?? ? ?prolog:try_dcg_expansionprolog:portable_expand_term-->>-->>??? ? ?try_edcg_expansion??? errmesexpected_to_expand?prolog:call_ifdefprolog:portable_expand_term_ ? ?trueprolog:default_prologbinprologbinprolog ?trueprolog:peval_ioget_codeget_code? ?get0?trueprolog:peval_ioput_codeput_code? ?put?trueprolog:peval_ionlnlcnl ?trueprolog:peval_ioseeingseeing? ?seeing_telling0?trueprolog:peval_iotellingtelling? ?seeing_telling1?trueprolog:peval_ioseeing_atseeing_at? ?seeing_telling_at0?trueprolog:peval_iotelling_attelling_at? ?seeing_telling_at1?trueprolog:peval_iofast_writefast_write? ?cwrite?truefast_write_ ?B? ?trueget_code_J1 ?trueput_code_?J0 ?truenl_B?truesee_0?J*0? ?truesee_ ? ? unable_to_see ?user_errorseeing_0J)1 ?truetelling_1J)1 ?truetell_1?J*0? ?truetell_ ? ? unable_to_tell ?user_errorseen_0J+0truetold_1J+0truesee_at_0?J-0? ?truesee_at_ ? ? unable_to_see_at ?user_errortell_at_1?J-0? ?truetell_at_ ? ? unable_to_tell_at ?user_errorseeing_at_0J,1 ?truetelling_at_1J,1 ?truefind_file _ $bin_cut?file_search_path?file_extension_list?prolog:find_file1????? ?atomfind_file librarylibrary? $bin_cut?file_library??prolog:find_file1????? ?atomfind_file_ ? bad file name ?user_errorprolog:find_file1 _ ? ? ? ? ?0J)0 ?  ?  ?  ?prolog:find_file2prolog:find_file2 _ $bin_cut? see?? ? ? ? ?prolog:see_a_fileprolog:find_file2_ findall ?4 ? ? findall ?4 ? ?errmes4?4??3file_not_found?3+4? ?3+ ??3 ,4 ? name ? ?3 member ??3 ,4 ? name ? ?3 member ?? ?seeprolog:see_a_file _ prolog:see_or_fail?seen? ?make_file_nameread_clause_ warn_singletons???? ?read_with_singletonsread_with_singletons_ prolog:singletons??? ?prolog:r_termwarn_singletons ..?? ? ?J M0 ?1J 0 .?? fail? ? ?prolog:warn_singletons1warn_singletons_ ?trueprolog:warn_singletons1:-:-? ??trueprolog:warn_singletons1_ :-?>? seeing_telling_at0 ? prolog:melt_varnames? ttyout4 ? $bin_cut??3 ,4 ? ,4 ? ,nl ,4 ? ,4 ?,4?,nlnl3cwrite:-...3 print?3 print=> 3 print ** warning singleton_variables, byte=> ?3 print? ? ?add_trueprolog:melt_varnames[][] ?trueprolog:melt_varnames..??var???prolog:melt_varnamesread_ ? ?prolog:r_termtop_read_term_read_termread_term_ prolog:r_vars??? ? ?prolog:r_termprolog:r_vars[][][] ?trueprolog:r_vars..??var???.??=??prolog:r_varsprolog:singletons _ ? ? member4??3var?>?s0 ? ?findallprint_prolog:portable_printwrite_prolog:portable_writewriteq_prolog:portable_writeqttyin_0J)0 call?see?? user ?seettyout_1J)0 call?flushtell?? user ?tellttyprin_ write? ?ttyoutttyprint_ ,4?nl3write? ?ttyoutttycwrite_ cwrite? ?ttyoutttycwriteln_ ,4?nl3cwrite? ?ttyoutttynl_ ? nlttyoutttyput_ put? ?ttyoutdisplay_ portable_display? ?ttyoutprolog:r_term_ read_tokens??prolog:r_and_check??$bin_cut?=??? ?repeatprolog:r_and_check_ ? prolog:all_read?? 1200 ?prolog:rtprolog:r_and_check_ ?prolog:syntax_errorprolog:all_read[][] ??trueprolog:all_read_ ? ? .operator.expected.after.expression[] ?prolog:syntax_errorprolog:expect_.??? ?trueprolog:expect_ ? .?.or.operator.expected[] ?prolog:syntax_errorprolog:prefixop_ ? ? $bin_cut?? prefixop fy ?prolog:get_op0prolog:prefixop_ ? -?1?? prefixop fx ?prolog:get_op0prolog:postfixop_ ? ? $bin_cut?? postfixop yf ?prolog:get_op0prolog:postfixop_ ? -?1?? postfixop xf ?prolog:get_op0prolog:infixop _ ? ? $bin_cut? -?1?? infixop xfx ? ?prolog:get_op0prolog:infixop _ ? ? $bin_cut? -?1?? infixop xfy ? ?prolog:get_op0prolog:infixop _ ? ? -?1?? infixop yfx ? ?prolog:get_op0prolog:ambigop _ prolog:infixop????? ? ?  ?prolog:postfixopprolog:rt[][] ? .expression.expected[] []prolog:syntax_errorprolog:rt ..?? ? ? ? ? ?  ?  ?  ?prolog:rtsprolog:rtsvarvar??.(?? prolog:r_args ? ? ? $bin_cut? prolog:exprtl0 ?4 ?????3 apply?.? ? 999  ?  ?prolog:rtprolog:rts varvar?? ?? ?prolog:exprtl0prolog:rts atomatom-.??integer?box? ?0?J0?prolog:exprtl0prolog:rts atomatom-.? ?atom? prolog:float_minus?? $bin_cut? prolog:exprtl0 ??????floatprolog:rtsatomatom?.(?? prolog:r_args ? ? ? =.. ?4?$bin_cut?prolog:exprtl0 ? ?????3.?.? ? 999  ?  ?prolog:rtprolog:rts atomatom? $bin_cut? prolog:after_prefix_op? ? ??????  ?  ? ?prolog:prefixopprolog:rts atomatom? ?? ?prolog:exprtl0prolog:rts integerinteger?box?? ?? ?prolog:exprtl0prolog:rts[[.]?? []prolog:exprtl0prolog:rts [[ ?? prolog:r_list ? ? ? $bin_cut? prolog:exprtl0 ?4 ?????3 .? ? 999  ? ?prolog:rtprolog:rts (( ?? prolog:expect) ? ? $bin_cut? prolog:exprtl0 ? ????? 1200  ?  ? ?prolog:rtprolog:rts (((( ?? prolog:expect) ? ? $bin_cut? prolog:exprtl0 ? ????? 1200  ?  ? ?prolog:rtprolog:rts{{.}?? {}prolog:exprtl0prolog:rts {{ ?? prolog:expect} ? ? $bin_cut? prolog:exprtl0 ?4 ?????3 {}? 1200  ? ?prolog:rtprolog:rts stringstring? ?? ?prolog:exprtl0prolog:rts _ ? .? .cannot .start .an .expression[] ?prolog:syntax_errorprolog:r_args ..,?.??? $bin_cut? prolog:r_args ???? 999 ?  ?prolog:rtprolog:r_args..)?[] ? ??trueprolog:r_args_ ? ? .,).expected.in.arguments[] ?prolog:syntax_errorprolog:r_list ..,?.??? $bin_cut? prolog:r_list ???? 999 ?  ?prolog:rtprolog:r_list ..|? ?? $bin_cut?prolog:expect]??? 999 ? ?prolog:rtprolog:r_list..]?[] ? ??trueprolog:r_list_ ? ? .|].expected.in.list[] ?prolog:syntax_errorprolog:after_prefix_op _ ???J 0? .prefix .operator .? .in .context .with .precedence .?[]  ? ?prolog:syntax_errorprolog:after_prefix_op _ prolog:prefix_is_atom ?? prolog:exprtl ??????? ?  ?prolog:peepopprolog:after_prefix_op_ =.. ?4 ? $bin_cut? prolog:exprtl ?? ?????3 .? . ?[] ? ?  ?  ?  ?prolog:rtprolog:peepop ..??.(?atom? ?.??.(?atom??trueprolog:peepop ..??atom? ?.??infixop????prolog:infixopprolog:peepop..??atom? ?.??postfixop???prolog:postfixopprolog:peepop_ ? ?trueprolog:prefix_is_atom..??prolog:prefix_is_atomprolog:prefix_is_atominfixopinfixop??=? ???J 0trueprolog:prefix_is_atompostfixoppostfixop??? ???J 0trueprolog:prefix_is_atom)) ?trueprolog:prefix_is_atom]] ?trueprolog:prefix_is_atom}} ?trueprolog:prefix_is_atom|| ?1100?J 0trueprolog:prefix_is_atom,, ?1000?J 0trueprolog:prefix_is_atom[][] ?trueprolog:exprtl0..? ?atom? $bin_cut? or4 ?4 ??3 prolog:exprtl4 ?0????3 .4 ? ?3 infixop? ? ? ?3 prolog:exprtl4 ?0????3 .4 ? ?3 postfixop???  ?  ?  ?prolog:ambigopprolog:exprtl0 ..??atom? $bin_cut? prolog:exprtl4 ?0?????3 .4 ??3 infixop????  ?prolog:infixopprolog:exprtl0 ..??atom? $bin_cut? prolog:exprtl4 ?0?????3 .4 ??3 postfixop???  ?prolog:postfixopprolog:exprtl0 ..,??1000J 0? $bin_cut? prolog:exprtl ?10004 ?????3 ,?? 1000  ? ?prolog:rtprolog:exprtl0 ..|??1100J 0? $bin_cut? prolog:exprtl ?11004 ?????3 ;?? 1100  ? ?prolog:rtprolog:exprtl0 ..?? $bin_cut? prolog:syntax_error4 ?4 ??3 .? .follows .expression[]3 .??prolog:cant_follow_exprprolog:exprtl0_ ? ? ?trueprolog:cant_follow_expratomatom?atom ?trueprolog:cant_follow_exprvarvar=?variable ?trueprolog:cant_follow_exprintegerinteger?integer ?trueprolog:cant_follow_exprstringstring?string ?trueprolog:cant_follow_expr((((bracket ?trueprolog:cant_follow_expr((bracket ?trueprolog:cant_follow_expr[[bracket ?trueprolog:cant_follow_expr{{bracket ?trueprolog:exprtl..??infixop? ? ? ?? ?J 0? ?J 0? =.. ?4?prolog:exprtl? ? ?????3.?.?.?[]  ? ?  ?prolog:rtprolog:exprtl..? ?postfixop? ? ?? ?J 0? ?J 0? .?.?[] prolog:peepop ? ?prolog:exprtl ? ??????=..prolog:exprtl ..,??1000J 0?1000J 0? $bin_cut? prolog:exprtl ?10004 ?????3 ,?? 1000  ?  ?prolog:rtprolog:exprtl ..|??1100J 0?1100J 0? $bin_cut? prolog:exprtl ?11004 ?????3 ;?? 1100  ?  ?prolog:rtprolog:exprtl _ ? ? ?trueprolog:syntax_error_0J)00J,0 prolog:start_syntax_error???see?fail? user ?seeprolog:start_syntax_error _B? display?prolog:display_list?length??bb_letsyntax_errorlength?$bin_cut?? ** SYNTAX ERROR: byte= ?displayprolog:start_syntax_error_ ?trueprolog:syntax_error_0J)0 prolog:finish_syntax_error?see?fail? user ?seeprolog:finish_syntax_error_syntax_errorlengthJ0 -???prolog:display_list??$bin_cut?? ?lengthprolog:display_list..?? prolog:display_token?$bin_cut?prolog:display_list?? 32 ?ttyputprolog:display_list[][] ?ttynlprolog:display_list_0 $bin_cut?prolog:display_list?99999?  displayprolog:display_list ..?? ttyput32-?1?$bin_cut?prolog:display_list??? ?prolog:display_tokenprolog:display_list[][] ?ttynlprolog:display_tokenatomatom? $bin_cut?write_float?? ?floatprolog:display_tokenatomatom??displayprolog:display_tokenvarvar???displayprolog:display_tokenintegerinteger?box???displayprolog:display_token stringstring?? .?[] ? ?.34[] .?? .?[] name??display?? ?det_appendprolog:display_token_displayread_tokens_ append?[]?$bin_cut?=??=??? 32 ? ?prolog:r_toksread_tokens..?[]atomend_of_file[] ?trueprolog:r_toks-1-1 ??B?trueprolog:r_toks_?32J 0?J0prolog:r_toksprolog:r_toks3737? get0?prolog:is_terminator?$bin_cut?arith_dif?-1get0?prolog:r_toks????repeatprolog:r_toks4747?J0prolog:r_solidusprolog:r_toks3333.??atom!?J0prolog:r_after_atomprolog:r_toks4040.((??J0prolog:r_toksprolog:r_toks4141.)??J0prolog:r_toksprolog:r_toks4444.,??J0prolog:r_toksprolog:r_toks5959.??atom;?J0prolog:r_toksprolog:r_toks9191.[??J0prolog:r_toksprolog:r_toks9393.]??J0prolog:r_toksprolog:r_toks123123.{??J0prolog:r_toksprolog:r_toks124124.|??J0prolog:r_toksprolog:r_toks125125.}??J0prolog:r_toksprolog:r_toks4646?J0prolog:r_fullstopprolog:r_toks3434.??string?? prolog:r_toks???? 34 ?prolog:r_stringprolog:r_toks 3939.??atom?? name??prolog:r_after_atom???? 39 ?prolog:r_stringprolog:r_toks_.??var?? $bin_cut? prolog:r_name? ? ? or4 ?4 ?$bin_cut?prolog:r_toks ????3 ,4 ?=?_3 = ? .95[]3 ,4 ? ,4 ?prolog:r_lookup????3 name? ?3 = ? .?>?  ?prolog:is_majprolog:r_toks _ $bin_cut?prolog:r_integer??? ? prolog:r_toks??? prolog:try_float ????? ?prolog:is_numprolog:r_toks _.??atom? $bin_cut? prolog:r_name? ? ? name? ? prolog:r_after_atom ???? ?prolog:is_minprolog:r_toks _.??atom?J0 name?4? prolog:r_after_atom????3.?? ?  ?prolog:r_symbolprolog:r_after_atom4040.(??J0prolog:r_toksprolog:r_after_atom_prolog:r_toksprolog:r_string _ ? ? ? ?J0 ? ?  ?prolog:r_stringprolog:r_string-1-1-1 ttyput?displaytokenttyput?ttynl$bin_cut?fail? ! end of file in: displayprolog:r_string _ ? ? ??J0 ? ?prolog:more_stringprolog:r_string_.?? ? ? ?prolog:r_stringprolog:more_string_ ? ?.??? ? ? ?prolog:r_stringprolog:more_string_[] ? ?trueprolog:patch_slash..((? ?.(??trueprolog:patch_slash_ ? ?trueprolog:r_solidus4242?J0 prolog:r_toks???? ? ?prolog:r_solidusprolog:r_solidus _.??atom? name?4? prolog:r_toks?? ? prolog:patch_slash ???3.47? ?prolog:r_symbolprolog:r_solidus-1-1-1? ttynl? ! end_of_file in /*.. commentdisplayprolog:r_solidus4242J0?47J0?prolog:r_solidusprolog:r_solidus424232 ??trueprolog:r_solidus_J0prolog:r_solidusprolog:r_name _.?? $bin_cut?get0?prolog:r_name????prolog:is_alpha_numprolog:r_name_[] ? ?trueprolog:r_symbol _.?? get0?prolog:r_symbol????prolog:is_specprolog:r_symbol_[] ? ?trueprolog:r_fullstop-1-1? ttynlfail? ! end_of_file just after full_stopdisplayprolog:r_fullstop_[]?32J 0? ?trueprolog:r_fullstop _.??atom? name?4? prolog:r_toks????3.46? ?prolog:r_symbolprolog:r_integer _ ? ??48J0J 0 . ?[] ? ? .46[] =?4 ??3 . ? .??  ? ?  ?prolog:r_intprolog:r_int -1-1 ??B?trueprolog:r_int 39390 ?.39?.?[]?J1?-1J0J1trueprolog:r_int 3939 $bin_cut?? 0 ?prolog:r_digitsprolog:r_int _ ? ? ? ? 10  ?  ?  ?prolog:r_digsprolog:r_digits_ ? ? ? ? ? ?J0?-1J0 ?  ?  ?  ?  ?prolog:r_digsprolog:r_digs _.? ??48J 0?57J 0???J 0 ?48J 0 ??J0 ? ? ?  ? ?prolog:r_digitsprolog:r_digs _ ? ?[] ?trueprolog:r_lookup ..??var??? ? ? ??prolog:r_varcountprolog:r_lookup..??prolog:r_lookupprolog:r_varcount_ .?[] ? ?.95[]? ? ?s1 ?trueprolog:r_varcount_ ?B?? ? ?s? ?trueprolog:r_varcountss1 ?trueprolog:is_alpha_num_?97J 0?122J 0 ?trueprolog:is_alpha_num_?65J 0?90J 0 ?trueprolog:is_alpha_num_?48J 0?57J 0 ?trueprolog:is_alpha_num9595 ?trueprolog:is_alpha_num_prolog:is_latin1_minprolog:is_alpha_num_prolog:is_latin1_majprolog:is_maj_?65J 0?90J 0 ?trueprolog:is_maj9595 ?trueprolog:is_maj_prolog:is_latin1_majprolog:is_min_?97J 0?122J 0 ?trueprolog:is_min_prolog:is_latin1_minprolog:is_num_?48J 0?57J 0 ?trueprolog:is_latin1_maj_?192J 0?214J 0 ?trueprolog:is_latin1_maj_?216J 0?222J 0 ?trueprolog:is_latin1_min_?223J 0?246J 0 ?trueprolog:is_latin1_min_?248J 0?255J 0 ?trueprolog:is_terminator1010 ?trueprolog:is_terminator1313 ?trueprolog:is_terminator-1-1 ?trueprolog:is_spec3535 ?trueprolog:is_spec3636 ?trueprolog:is_spec3838 ?trueprolog:is_spec4242 ?trueprolog:is_spec4343 ?trueprolog:is_spec4545 ?trueprolog:is_spec4646 ?trueprolog:is_spec4747 ?trueprolog:is_spec5858 ?trueprolog:is_spec6060 ?trueprolog:is_spec6161 ?trueprolog:is_spec6262 ?trueprolog:is_spec6363 ?trueprolog:is_spec6464 ?trueprolog:is_spec9292 ?trueprolog:is_spec9494 ?trueprolog:is_spec9696 ?trueprolog:is_spec126126 ?trueportable_display_ ? displayprolog:w_outprolog:portable_print_ ? printprolog:w_outprolog:portable_write_ ? writeprolog:w_outprolog:portable_writeq_ ? writeqprolog:w_outprolog:w_out_ fail? 1200 punct ?prolog:w_outprolog:w_out_ ?trueprolog:maybe_paren _punct??J 0??J0 ?trueprolog:maybe_paren_ ? ?trueprolog:maybe_spacepunctpunct ??trueprolog:maybe_space_ ? ??32J0trueprolog:maybe_spacequotequotealpha ??32J0trueprolog:maybe_space_ ?trueprolog:put_string[][] ?trueprolog:put_string..???J0prolog:put_stringprolog:put_string[][] ??J0trueprolog:put_string..?? ???J0?J0 ?prolog:put_stringprolog:put_string..???J0prolog:put_stringprolog:w_variable_ ?B? ?trueportray_writeprolog:w_out _alpha ?B?? prolog:w_variable?? ? alphaprolog:maybe_spaceprolog:w_out$VAR$VAR? ? ? ??prolog:w_VARprolog:w_out _alpha ?B? ,4 ? prolog:maybe_space?other3 less?0 prolog:maybe_space?alpha $bin_cut? cwrite?? ?orprolog:w_out_printalpha $bin_cut??portrayprolog:w_out _punct current_op ?>?? greater ?? $bin_cut? put40 or4 ?4 ? $bin_cut? put41?3 ,4 ? prolog:w_atom??punct>?3 =?writeq3 cwrite? ?atomprolog:w_out _ $bin_cut? prolog:w_atom????? ?atomprolog:w_out _displaypunct? prolog:w_atom?display?>? prolog:w_args0??40display? ?functorprolog:w_out {}{}?punct?123J0 put125? 1200 punct ? ?prolog:w_outprolog:w_out ..??punct?91J 0 prolog:w_tail??? 999 punct ?  ?prolog:w_outprolog:w_out ,,??? prolog:w_out??999?>? put44 prolog:w_out??1000punct? prolog:maybe_paren1000?41??? 1000 ? 40 ?  ?prolog:maybe_parenprolog:w_out _alpha or4?4 ? $bin_cut? write_float??3,4? prolog:maybe_space?other3less?03 prolog:maybe_space?alphafloatprolog:w_out _ prolog:w_out ? ???????  ?  ? ?functorprolog:w_out11 ,4 ? - ?1 ?3 current_op ?fx? ,4 ?= ? ?3 current_op ?fy? $bin_cut?prolog:maybe_paren ??40??prolog:w_atom????arg1??prolog:w_out?? ??? prolog:maybe_paren ??41???  ?  ?orprolog:w_out11 ,4 ? - ?1 ?3 current_op ?xf? ,4 ?= ? ?3 current_op ?yf? $bin_cut?prolog:maybe_paren ??40??arg1??prolog:w_out?? ??? prolog:w_atom???? prolog:maybe_paren ??41???  ?  ?orprolog:w_out22 ,4 ? ,4 ? = ? ?3 - ?1 ?3 current_op ?xfy? or4?,4?,4?= ? ?3- ?1 ?3current_op ?yfx?3,4?,4?= ? ?3- ?1 ?3current_op ?xfx? $bin_cut?prolog:maybe_paren ??40??arg1??prolog:w_out?? ??? prolog:w_oper? ???? arg2? ?prolog:w_out ?? ??? prolog:maybe_paren ??41???  ? ?orprolog:w_out _punct prolog:w_args0??40?? ? ? ? ?prolog:w_atomprolog:w_oper _?700J 0? ? ? ? ?prolog:w_atomprolog:w_oper _ ?punct32J0 put32? punct ?prolog:w_atomprolog:w_VAR _alpha ?B??0J 0? mod?26? +?65? put?or4?4 ? $bin_cut??3less?263 ,4 ?cwrite?3 //?26? ? alpha ?prolog:maybe_spaceprolog:w_VAR_ $bin_cut?prolog:w_atom?write???atomprolog:w_VAR _punct prolog:w_args014?40??3$VAR? $VAR ? ?prolog:w_atomprolog:w_atom!!punct ??33J0trueprolog:w_atom;;punct ??59J0trueprolog:w_atom[][]punct ??91J093J0trueprolog:w_atom{}{}punct ??123J0125J0trueprolog:w_atom..writeqquote ?? .39.46.39[]prolog:put_stringprolog:w_atom_ or4?4 ? $bin_cut??3,4? ,4 ? prolog:put_string ?3 prolog:maybe_space??3prolog:classify_name ??3 or4 ?,4? prolog:put_string ?3=?alpha3 ,4 ?,4? ,4 ? ,4 ? prolog:put_string ?393 put393 prolog:maybe_space??3=?quote3 =?writeq  ? ?nameprolog:classify_name..??alpha $bin_cut?prolog:classify_alpha_tail??prolog:is_minprolog:classify_name..??other prolog:classify_other_tail??prolog:is_specprolog:classify_alpha_tail[][] ?trueprolog:classify_alpha_tail..?? prolog:classify_alpha_tail?? ?prolog:is_alpha_numprolog:classify_other_tail[][] ?trueprolog:classify_other_tail..?? prolog:classify_other_tail?? ?prolog:is_specprolog:w_args _ ? ??41J0trueprolog:w_args _?J0?1J0??J0 prolog:w_args???44?? ? 999 punct ?  ?prolog:w_outprolog:w_tail_ ?B??124J0 put93?prolog:w_variableprolog:w_tail[][] ??93J0trueprolog:w_tail ..???44J 0 prolog:w_tail??? 999 punct ?prolog:w_outprolog:w_tail _124J0 put93? 999 punct ?prolog:w_outpp_term_ write?cnlfail? 0 ?numbervarspp_term_ ?truepp_clause_portray_clauseportray_clause_ fail? ?prolog:pp_clause0portray_clause_ ?trueprolog:pp_clause0:-:-??B? prolog:l_clauses?028? 0 ?numbervarsprolog:pp_clause0:-:-?? +?? prolog:portable_writeq?prolog:l_clauses?028$bin_cut?? 0 ?numbervarsprolog:pp_clause0_ :-?true ?prolog:pp_clause0prolog:l_clauses ,,??? $bin_cut? prolog:l_clauses?1??? 1 ?prolog:l_clausesprolog:l_clauses truetrue2 ?? .?[] ? ?.46[]?J0B?trueprolog:l_clauses ;;??? prolog:l_magic4 ?02? prolog:l_magic_nl?.?3 ;?? fail ?  ?prolog:l_magicprolog:l_clauses ->->??? $bin_cut? prolog:l_clauses?5??? 5 ?prolog:l_clausesprolog:l_clauses _ prolog:portable_writeq?prolog:l_magic_nl?.? ? ?prolog:l_magicprolog:l_magic!!0 ?? :- B?trueprolog:l_magic!!1 ?? , B?trueprolog:l_magic_0 ? ?? :- B?B?tabprolog:l_magic_1 ? ?? .?[] ? ?.44[]?J0B?tabprolog:l_magic_3 ?? ( B?trueprolog:l_magic_4 ?? ; B?trueprolog:l_magic_5 ? ?? ->B?B?tabprolog:l_magic_ ? cwrite:- cwrite?cnltab??atomprolog:l_magic_nl22 ?? ?B?B?trueprolog:l_magic_nl_ ?trueprolog:l_magic ;;??? $bin_cut? prolog:l_magic?1??? 1 ?prolog:l_magicprolog:l_magic _?8J0?3J0 cnl tab? prolog:l_magic2?)? 1 ? ?prolog:l_clausesprolog:l_magic222 ?? ?B?trueprolog:l_magic2_ ?truemain_prolog:binpro_startprolog:binpro_start_ prolog:exec_run_time_commandsprolog:call_ifdefmaintoplevel=?$end? init_io trueprolog:call_ifdeftoplevel_ prolog:topstep?- $bin_cut?? ?repeatprolog:topstep_ flushttyin4?prolog:topinterp???3top_read_term?? ?ttyprinprolog:topinterp_ = ?end_of_file?J1? ?trueprolog:topinterp_ ? ? fail? ? ?prolog:report_answersprolog:topcall_ prolog:nothing? ?metacallprolog:savetop_topgoalJ1 ?trueprolog:nothing_trueprolog:report_answers[][] ? $bin_cut?ttyprintyes?prolog:topcallprolog:report_answers..?? ? prolog:report_one_var?prolog:report_top_vars?prolog:another_sol?if4?4?fail?3=?no3,4?ttyprintyes3$bin_cut?prolog:topcallprolog:report_answers_ ? nottyprintprolog:report_top_vars_ ? ttyprint,prolog:report_one_var?fail? ?memberprolog:report_top_vars_ ?trueprolog:report_one_var==?? ttyprin=ttyout4??3writeq? ?ttyprinprolog:another_sol_ $bin_cut?ttyin4?prolog:user_action??ttynl?3get_code? ?prolog:is_interactiveprolog:another_solyesyes ttynl? ; ?ttyprintprolog:user_action1010no ??trueprolog:user_action5959yes ?? get_code10ttyinprolog:user_action _ ttyin4?ttyin4?prolog:user_action???3get_code?3get_code10  ; for more, otherwise ?ttyprinmeta_interpreter_do_bodydo_body_ ? ? ?B?? unbound_goal ?user_errordo_body _ or4?4??3,4?,4? do_body?3$bin_cut?3=?yes3=?noprolog:do_bodyprolog:do_compiledcallcall?? ?B?do_bodyprolog:do_compiled\+\+? $bin_cut?fail? ?do_bodyprolog:do_compiled\+\+? ??trueprolog:do_compiledbagofbagof??? ?? do_body?bagofprolog:do_compiledsetofsetof??? ?? do_body?setofprolog:do_compiledfindallfindall??? ?? do_body?findallprolog:do_compiled_callprolog:do_goal_ $bin_cut?spy_goal?? ?spyingprolog:do_goal _ $bin_cut?assumed_clause??prolog:do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_assumedprolog:do_goal _ $bin_cut?clause??prolog:do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_dynamicprolog:do_goal_ ?B??prolog:do_compiledprolog:do_goal_ $bin_cut?prolog:do_apply??prolog:do_goal?? call ?functorprolog:do_goal_prolog:do_undefprolog:do_undef_ errmes4?4??3=undefined_predicate/??3=culprit?functorprolog:do_apply _ .>?.?? =..?? det_append???=..??? ? ?=..prolog:do_body ,,?? ? ? ?? ? ?  ?prolog:do_conjprolog:do_body ;;?? ? ? ?? ? ?  ?prolog:do_disjprolog:do_body!!trueyes ?trueprolog:do_body_trueno ?prolog:do_goalprolog:do_conj!! ?yes ??trueprolog:do_conj_ prolog:do_body???? ?do_bodyprolog:do_disj ->->?? ? ? ? ?? ?  ?  ?  ?prolog:do_if_then_elseprolog:do_disj_prolog:do_disj0prolog:do_if_then_else _ $bin_cut? prolog:do_body???? ?do_bodyprolog:do_if_then_else_ ? ? ? ?prolog:do_bodyprolog:do_disj0_ ? ? ?prolog:do_bodyprolog:do_disj0_ ? ? ? ?prolog:do_bodytrace_ ? 0tr_bodytr_body_ ? ?B?? unbound_goal ?user_errortr_body _ or4?4??3,4? ,4 ? ,4 ? ,4 ? ,cnl tr_body??3 writeCUT3 tab?3 $bin_cut?3=?yes3=?noprolog:tr_bodyprolog:tr_body ,,?? ? ? ? ?? ?  ?  ?  ?prolog:tr_bodyprolog:tr_body!!trueyes ??trueprolog:tr_body ;;?? ? ? ? ?? ?  ?  ?  ?prolog:tr_disj1prolog:tr_bodytruetruetrueno ??trueprolog:tr_body_trueno ?prolog:tr_goalprolog:tr_disj1->->?? ? ? ? ? ?? ?  ?  ?  ?  ?prolog:tr_if1prolog:tr_disj1_ ? ? ? ?prolog:tr_bodyprolog:tr_disj1_ ? ? ? ? ?prolog:tr_bodyprolog:tr_if1 _ do_body? prolog:tr_body???? prolog:tr_body????  ?  ?  ? ?ifprolog:tr_body!! ?yes ??trueprolog:tr_body ,,??? ,??  ?prolog:tr_bodyprolog:tr_body;;?? ? ? ? ? ?? ?  ?  ?  ?  ?prolog:tr_disj2prolog:tr_bodytruetrue ? ? ? ? ??prolog:tr_bodyprolog:tr_body _ prolog:tr_body????? ? ?prolog:tr_goalprolog:tr_disj2->->? ? ? ? ? ? ? ??  ?  ?  ?  ? ? ?prolog:tr_if2prolog:tr_disj2 _ ? ? ? ? ?prolog:tr_bodyprolog:tr_disj2 _ ? ? ? ? ? ?prolog:tr_bodyprolog:tr_if2 _ do_body? prolog:tr_body????? prolog:tr_body?????  ?  ?  ? ?ifprolog:tr_goalcallcall??tr_bodyprolog:tr_goal\+\+? $bin_cut?fail? ?tr_bodyprolog:tr_goal\+\+? ??trueprolog:tr_goal_ ,4?,4?,4? or4 ? ortrue ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeRedo: 3 tab?3 ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeExit: 3 tab?3if4?4 ? ,4 ? prolog:tr_call? ?3 +1? ?3,4? \+ spying?3arith_eq?103 metacall?3ifprolog:is_interactive4? ,4 ?cnl3 =?323,4? if4 ?true get0>?3 arith_eq?103get0?3or4?or4?true3,prolog:is_interactive,4?fail3write : 3,4?,4?,4?fail3print?3writeCall: 3tab? ,4?,4? ,4 ? ,cnlfail3 print?3writeFail: 3tab? ? ?orprolog:tr_call bagofbagof??? ?? tr_body?? ? ?bagofprolog:tr_call setofsetof??? ?? tr_body?? ? ?setofprolog:tr_call findallfindall??? ?? tr_body?? ? ?findallprolog:tr_call_ $bin_cut?tab?functor???write4? cnl assumed_clause? ? prolog:tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! assumed/?? ?is_assumedprolog:tr_call_ $bin_cut?tab?functor???write4? cnl clause? ? prolog:tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! dynamic/?? ?is_dynamicprolog:tr_call _ ?B?? functor???write4? cnl call??3!!! compiled/?? ? ?tabprolog:tr_call_ $bin_cut?prolog:do_apply??prolog:tr_call??? call ?functorprolog:tr_call_prolog:do_undefdynamic_ fail? ?prolog:make_dynamicdynamic_ ?trueprolog:make_dynamic,,??? prolog:make_dynamic?? ?prolog:make_dynamicprolog:make_dynamic //?? prolog:check_dynamic?4?prolog:define_dynamic??3/?? ?functorprolog:check_dynamic_ ?B?? WARNING: dynamic code will shadow compiled predicate? cnl?writeprolog:check_dynamic_ $bin_cut?errmesdynamic code would shadow assumed predicate?? ?is_assumedprolog:check_dynamic_ ?trueprolog:define_dynamic_ bb_def?$last0? $first 0bb_defprolog:ensure_dynamic_ $bin_cut?? ?is_dynamicprolog:ensure_dynamic_ prolog:make_dynamic4??3/??functorprolog:add_clause_ $bin_cut?? ?prolog:add_clause0prolog:add_clause _ prolog:add_clause0????$bin_cut?? ? ?prolog:ensure_dynamicprolog:add_clause_ :-?? unable to assert clause ?errmesprolog:add_clause0 _??J0??J0???J0 :-?? set???? ? ?bb_defprolog:add_clause0_??J0 :-?? ? ? ?bb_defasserta_ :-?? prolog:add_clause$first-1??? ?add_trueassertz_ :-?? prolog:add_clause$last1??? ?add_trueassert_assertzprolog:assert_itend_of_fileend_of_file ??trueprolog:assert_it_assertzretract _ =?4?prolog:clause0?? ? prolog:erase0? ??3:-?? ?add_trueretractall _ :-?>? val?$first?val?$last? for ???val? ?>?prolog:erase0? ? fail? ?add_trueretractall_ ?trueprolog:collect_slot_?$firstJ1?$lastJ0??J 0??1J0?$first?J0 ?trueprolog:collect_slot_ ?trueinstance$dbref$dbref????J0copy_termerase$dbref$dbref?? ? ?prolog:erase0prolog:erase0_ prolog:collect_slot??? ?bb_rmclause_ ? ?prolog:clause0prolog:clause_$dbref??prolog:clause0prolog:clause0 _?$firstJ0?$lastJ0 ith_clause? ??? member4? ??3-?:-??  ? ?  ? ?findallith_clause_-????J1 ?trueith_clause_??J 0?1J0ith_clauseabolish _ ? ? is_dynamic?$bin_cut?prolog:abolish0???? ? ?functorabolish_ found/?? abolish_expects_dynamic_clauses ?errmesprolog:abolish0_ retractall?fail? ?functorprolog:abolish0_ ??$firstJ0?$lastJ0prolog:define_dynamicdebug_reconsultprolog:consult_warning_ ? % using compile/1 is MUCH fasterquietmesconsult_ prolog:consult_warningprolog:consult0?? ?find_filereconsult_ prolog:consult_warningprolog:survive_cleanup??prolog:consult0?? ?find_fileprolog:consult0 _ quietmes4?see?repeatread_clause?prolog:consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes4??3consulted?time?3consulting? ? ?ctimeprolog:consult_included_0J)0 prolog:consult0?see?? ?find_fileprolog:consult_embedded:-:-??prolog:consult_cmdprolog:consult_embedded_ prolog:assert_it?? ?expand_termprolog:consult_cmd..?[]?prolog:consult_includedprolog:consult_cmdconsultconsult??prolog:consult_includedprolog:consult_cmdreconsultreconsult??prolog:consult_includedprolog:consult_cmd_metacalllisting _ ? ? is_dynamic?$bin_cut?write% write4? write: cnl prolog:listing0??3/?? ? ?functorlisting _ ? ? is_assumed?$bin_cut?write% assumed write4? write: cnl prolog:listing1??3/?? ? ?functorprolog:listing0_ portray_clause4?fail?3:-??clauseprolog:listing0_ ?B?trueprolog:listing1_ portray_clause4?fail?3:-??assumed_clauseprolog:listing1_ ?B?truelisting_ listing??fail? 0 255forlisting_ ?B?trueprolog:generate_run_time_predicate _ or4?4?bb_element4? ? nonvar ??3=4? ?3+? ?3,4? = ? /??3=?/$assumed03,4?= ? /$first03=?/??  ? ?bb_listlisting_ listing??fail? ?prolog:generate_run_time_predicatelisting_true=> _ ? intuitionistic? metacall?=?$closed? ? ?prolog:assume-: _ ? linear?>? metacall?=?$closed? ? ?prolog:assumeprolog:add_hint_ll _clause?? ? ?:-?? ? ? ?add_trueassumel_ ? ? linear>? ?prolog:assumeassumei_ ? ? intuitionistic>? ?prolog:assumeprolog:assume_ ?B?? bad_clause? error_in_assume ?errmesprolog:assume_prolog:assume1prolog:assume1_.?[]?prolog:assume_fileprolog:assume1_prolog:assume_llprolog:assume_ll _ lval$assumed?? prolog:assume_with_hint_ll??? ?prolog:add_hint_llprolog:assume_with_hint_ll_ ? ? ?B?? ?prolog:insert_llprolog:assume_with_hint_ll..?[] ? ?trueassumed_ call?? ?assumed_clauseassumed_clause_ ? ?assumed_clauseassumed_clause _ ? ? ?$assumed?J0 ?B ? ? ?prolog:get_assumed_clauseprolog:get_assumed_clause _ ? ? ?. ? ? clause?? ? ?prolog:copy_or_delete_llprolog:get_assumed_clause_.??prolog:get_assumed_clauseprolog:copy_or_delete_ll linearlinear?? ?:-?? ?B? ?B? ?$usedtrueprolog:copy_or_delete_llintuitionisticintuitionistic? ? ? ?B? :-?? ?copy_termprolog:insert_ll_ ? ?.?[]?2? .?[]?J0 ?trueprolog:insert_ll_.??prolog:insert_llprolog:assume_file _ seeing_telling0?see?prolog:assume_all?seensee?? ? ? ?find_fileprolog:assume_all_ prolog:assume_all0??? ? ?gc_read_clauseprolog:assume_all0end_of_fileend_of_file ??trueprolog:assume_all0_ gc_read_clause?prolog:assume_all0??? ?prolog:assume_oneprolog:assume_one:-:-?.?[] ?? ?prolog:assume_fileprolog:assume_one:-:-? ?? prolog:consult_cmd? true trueifprolog:assume_one_ ? ? ?prolog:assume_llbb_element ==??+??/??/?? ?.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_30J'1 ?truebb_ ? unsortedbbbb_ ? ,4?,4?,cnl,4? ,4 ? ,4 ? ,4 ? ,4 ? ,cnlfail3 write ?3 prolog:bb_orig ? ?3 member ? ?3 if4 ?4 ? = ? ?3 \==?sorted3 ,4 ? sort ? ?3 findall ?4 ? ?3 bb_element ? ?3bb_list ?3write-bboard?3statisticsbboard? ? cnlorprolog:bb_orig ==??+??/??/??= ? ? + ? ? /?? /?? functor ???or4?4? $bin_cut??3val? ? ?3lval? ? ? ? ?functorsort_ ? prolog:remdup??? < ? ?prolog:merge_sortprolog:remdup[][][] ?trueprolog:remdup ..??.?? = ???J1? .??prolog:remdupprolog:remdup..??.??prolog:remdupprolog:merge_sort_ prolog:merge_sort1????[]? ? ? ?lengthprolog:merge_sort100[] ? ??trueprolog:merge_sort1 11 ?.??.?[]?trueprolog:merge_sort1 _?1J0??J 0 prolog:merge_sort1 ?? ? ?? prolog:merge_2 ?? ??? ?  ?  ?  ?prolog:merge_sort1prolog:merge_2[][] ? ??trueprolog:merge_2 ..??.? ?.????J1? .? ?prolog:merge_2prolog:merge_2 _ ?.??.?? ?prolog:merge_2prolog:ksort_ $bin_cut?=??? -1 ? []prolog:keysortprolog:ksort_ keysort?? illegal_arguments ?user_errorprolog:keysort ..??? ?B ? ? ? -=? ? ? .?? prolog:keysort?1? ????  ?  ?  ? ?prolog:samkeyrunprolog:keysort_[] ? ?trueprolog:keysort..????J 0? ?B ? ? ? -=? ? ? .?? prolog:keysort ?1? ? ??prolog:keymerge? ? ?+???prolog:keysort??? ????  ?  ?  ?  ? ?prolog:samkeyrunprolog:keysort _ ? ? ?trueprolog:samkeyrun..?? ?B ? ? ? - ? ? ? ? . ? ? -? ? $bin_cut? = ?4 ? prolog:samkeyrun?? ????3 .?>?  ?@=<prolog:samkeyrun ..?? ?B ? ? ? - ? ? ? ? . ? ? - ? ? < ? ? ?J 1? .??  ?prolog:samkeyrunprolog:samkeyrun _ ? ? ?.?[]trueprolog:keymerge[][] ?? ? ?trueprolog:keymerge ..?? ? ?.? ?-? ? ? ? -? ? $bin_cut? =?4 ? prolog:keymerge????3 .?? ?  ?@=<prolog:keymerge_.??? ? ?.??prolog:keymergeprolog:keymerge_ ? ?truesetof _ call? sort??? ? ? ?bagofbagof_ ? ? \==?[] $bin_cut? =.. ?4 ? functor ?. ? findall4 ?4 ??prolog:replace_instance? ? ? ?keysort ? ?$bin_cut?prolog:concordant_subset ? ? ?=? ??3 - ??3 call?3 ..? ? [] ?free_variablesbagof _.?? call? .?? ?findall^_ ? ?callprolog:replace_instance[][][] ??trueprolog:replace_instance ..??-?? ?. ? ? -?? $bin_cut?prolog:replace_instance??? ?? ?prolog:replace_key_variablesprolog:replace_key_variables00 ??trueprolog:replace_key_variables_??J0 ?B???1J0prolog:replace_key_variablesprolog:replace_key_variables_??J0??J1?1J0prolog:replace_key_variablesprolog:concordant_subset ..??-?? prolog:concordant_subset ??4 ????3 .?? ?  ?prolog:concordant_subsetprolog:concordant_subset ..??-??.?? = ???J1?prolog:concordant_subsetprolog:concordant_subset_[] ? ?trueprolog:concordant_subset[][] ? ? ??trueprolog:concordant_subset_ ? ? ?trueprolog:concordant_subset_ ? ? ?prolog:concordant_subsetfree_variables _ ? ?.?? ?B? prolog:list_is_free_of?? $bin_cut?? ? ?prolog:term_is_free_offree_variables_ ? ?B?? ?truefree_variables _ $bin_cut?free_variables? ???? ?  ? ?prolog:explicit_bindingfree_variables _ prolog:free_variables?????? ? ? ?functorprolog:free_variables00 ? ??trueprolog:free_variables _??J0 -?1 ? $bin_cut? prolog:free_variables ??? ??? ? ? ?  ?  ?free_variablesprolog:explicit_binding\+\+?fail ? ?trueprolog:explicit_bindingnotnot?fail ? ?trueprolog:explicit_binding ^^?? ? ?+??trueprolog:explicit_binding setofsetof??? ?-??+??trueprolog:explicit_binding bagofbagof??? ?-??+??trueprolog:term_is_free_of_ ?B??\==prolog:term_is_free_of_ prolog:term_is_free_of???? ? ?functorprolog:term_is_free_of00 ??trueprolog:term_is_free_of _??J0 -?1? $bin_cut? prolog:term_is_free_of???? ? ? ?prolog:term_is_free_ofprolog:list_is_free_of[][] ?trueprolog:list_is_free_of..?? prolog:list_is_free_of??? ?\==keysort_prolog:ksortnot_ call? $bin_cut?? ? ?\+not_ $bin_cut?fail? ?groundnot_ ? user_errorshould be groundnot? ? fail abortifterm_chars_ ?B?? name??? ? ?swriteterm_chars_ sread??? ? ?namevars_of_ ? ? [] []free_variablesprolog:compile_binary_prolog:cc_bincompprolog:compile_builtins_prolog:cc_builtinsprolog:cc_must_have_builtinswamwam ?trueprolog:cc_must_have_builtinscc wam.hprolog:c_chunk_fileprolog:cc_builtins_ prolog:bin_builtin?prolog:cc_bincomp??fail? ?prolog:cc_must_have_builtinsprolog:cc_builtins_ ?trueprolog:cc_bincompbinbin ?? fail?portray_clauseprolog:cc_bincompasmasm cnlportray_clause?cnlfail? BINARY: ?writeprolog:cc_bincomp_ prolog:cc_compile_clause??prolog:gg_emit??$bin_cut?? ?prolog:newpredprolog:cc_bincomp_ failing_to_compile_clause? ?errmesprolog:bin_builtin:-:-??true?$bin_cut??prolog:cutpprolog:bin_builtin_ prolog:bu_body???? ? ?prolog:buprolog:bu_bodyin_headin_head ?:-??true? arg???? ? ?functorprolog:bu_bodyin_bodyin_body ?:-??trueprolog:cc_compile_clause_ ?.??.??.?[]prolog:cc_clauseprolog:firstarg_1?J0prolog:classif_firstprolog:classif_first_ ?B?? ? ?/?0 ?trueprolog:classif_first_ ?B?? ? ?/_0 ?trueprolog:classif_first_ ?/??functorprolog:cc_clause_.??.?[]iifirstarg?? ?iiclause?? ?. ?[] iiexecute? ? ? :-?? prolog:firstarg??prolog:cc_h_b?4??4?getput?prolog:max ? ??+?1?prolog:vars??functor?dict?prolog:fill_info??prolog:collapse_args?1?prolog:allocate_regs?4?4??3-4?[]3/??3-4?>?3/? ?3/? ?3/ ? ?  ?add_trueprolog:cc_h_b_/ ? ?/ ? ? / ? ? -4 ??3 /? ? -4??3/?? prolog:cc_b?4?4?4?$bin_cut??3/ ? ?3-4??3/??3-4?[]3/? ?  ?prolog:cc_hprolog:begin_chunk _ ? iic_chunk>?4??3len? prolog:hidden_var4 ? ???3 +?? ?  ?prolog:emitprolog:end_chunk _ ? iic_chunk>?4??3len? prolog:hidden_var4 ? ???3 +?? ?  ?prolog:emitprolog:emit_-??.??-?? ?trueprolog:get_mode_ ? ? ?-??/?? ?trueprolog:set_mode _-??/??-??/?? ?trueprolog:hidden_var_ ? ? ?-??/?? ?trueprolog:cc_h_prolog:cc_h0prolog:cc_b _ prolog:end_chunk??? ? ?prolog:cc_b0prolog:cc_h0 _/?? $bin_cut? functor???arg???prolog:emit4?? ? prolog:begin_chunk ???3iibuiltin??? in_head  ?prolog:buprolog:cc_h0 _/?? greater?0 $bin_cut? functor ??? prolog:emit_head_top_term?? ???? ? ?functorprolog:cc_h0_ ? ? ? unexpected_head_atom ?errmesprolog:emit_head_top_term_ ? ? ? prolog:cc_top_arg11 ? ? ? ?prolog:begin_chunk ? ?prolog:emit_top_args2? ? ? ? ?prolog:cc_top_arg2? ? ? ??? 1 1  ?  ?  ?  ?prolog:emit_top_argsprolog:cc_b0_ ?B?? true? ?prolog:cc_b0prolog:cc_b0truetrue ? ?/true0?trueprolog:cc_b0 $bin_cut$bin_cut??? iiput>?4 ??3 cutarg1 prolog:cc_b0????? ? ?  ?prolog:emitprolog:cc_b0 ==???? prolog:cc_b0????? ? ?  ?prolog:cc_eqprolog:cc_b0 _ $bin_cut?prolog:cc_builtin?????? ? in_body ?prolog:buprolog:cc_b0 _/?? greater?0 $bin_cut? functor ??? prolog:emit_body_top_term?? ???? ? ?functorprolog:cc_b0_ ? ? ? unexpected_body_atom ?errmesprolog:emit_body_top_term _ ? ? ? $bin_cut? prolog:emit_top_args1? ?? ??? 1 ?  ?  ?  ?prolog:cc_top_argprolog:cc_eq _ ? ? ?B? ?B?? ?prolog:cc_eq1prolog:cc_eq_prolog:cc_eq1prolog:cc_eq1_ =?? prolog:emit4 ? ? ? prolog:emit4 ? ? ?prolog:set_modeget ? ?prolog:cc_top_t4? ? ?prolog:set_modeput ???3=??3 iiget>?4 ??3 temp03 iiput>?4 ??3 temp0 ? ?  ?  ?prolog:cc_top_tprolog:out_reg000 ?trueprolog:out_reg11 ? ?trueprolog:cc_builtinaritharith?? ?? arg ?? ? - ?1 ?arg ???prolog:out_reg???- ?? ?functor?? ?prolog:handle_constant_res?4???prolog:emit_top_bargs1 ?????prolog:emit4??? prolog:cc_b0 ?????3iiarith>???3=??  ?  ?functorprolog:cc_builtin_ - ?1 ? arg ?? ? arg1? ? prolog:cc_b_args ? ?? ? prolog:emit4 ? ? ? prolog:cc_b0 ?? ???3 iiinline>??>? ? ?  ? ?functorprolog:handle_constant_res00 ? ??trueprolog:handle_constant_res 11 ? ?=?? ?B ?? ? ?trueprolog:handle_constant_res 11=?? ?B ?? iiput>?4 ??3 temp0 prolog:emit4? ???3iiget>?4??3temp0 ?  ?  ?prolog:emitprolog:handle_constant_res 11=??? =?? ? ? ?prolog:cc_top_tprolog:classif_load _ ? ?B?? ? ? ?trueprolog:classif_load _constant ? ?B?? ? ? ?trueprolog:classif_load _ ? =?? ? ? ?prolog:cc_top_tprolog:cc_b_args00 ? ?trueprolog:cc_b_args 11 =?? prolog:emit4 ? ???3 iiput>?4 ??3 temp0 ?  ? ?prolog:cc_top_tprolog:emit_top_bargs _ ???J 0? ?trueprolog:emit_top_bargs_??J 0?1J 0??J 0??J 0 prolog:emit4 ???prolog:emit_top_bargs ???????3 iiload?? ?  ?  ? ? ?  ?prolog:classif_loadprolog:emit_top_bargs _??J 0??J 0??J 0? = ? ? +?1 ? prolog:emit_top_bargs ???????  ? ?  ?prolog:cc_top_tprolog:emit_top_args _ ???J 0? ?trueprolog:emit_top_args_??J 0??J 0??J 0 $bin_cut? prolog:get_mode ?? ?prolog:emit4? ? ?+?1?prolog:emit_top_args???? ???3ii ??4 ? ?3 arg?  ?  ?  ?prolog:classif_argprolog:cc_top_arg _ ???J 0? ?trueprolog:cc_top_arg _??J 0??J 0??J 0?1J 0? = ? ? prolog:cc_top_arg ??????? ?  ?prolog:cc_top_tprolog:cc_top_t ==?? ? ? ?B?? ? ?trueprolog:cc_top_t ==?? ? ? ?B?? ? ?trueprolog:cc_top_t ==?? greater?0 $bin_cut? functor ? ?? prolog:emit_top_structure? ??? ??? prolog:cc_args? ?????  ? ? ?functorprolog:emit_top_structure_ prolog:emit4 ? ? ?prolog:emit_args??? ???3 ii ?structure4 ??3 /??  ? ?  ?  ?prolog:get_modeprolog:cc_arg _ ???J 0? ?trueprolog:cc_arg _??J 0??J 0??J 0?1J 0? = ? ? prolog:cc_arg ??????? ?  ?prolog:cc_tprolog:cc_t ==?? ? ? ?B?? ? ?trueprolog:cc_t ==?? ? ? ?B?? ? ?trueprolog:cc_t ==?? greater?0 $bin_cut? functor ? ?? prolog:emit_structure? ??? ??? prolog:cc_args? ?????  ? ? ?functorprolog:cc_args _?1J 0??1J0??J 0??J 0 = ? ? prolog:cc_arg1?????? ?  ?prolog:cc_tprolog:cc_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?prolog:cc_argprolog:emit_structure_ prolog:deep_structure_op ? ? prolog:emit4 ???prolog:emit_args??????3 ii ?structure4 ??3 /??  ? ? ?  ?prolog:get_modeprolog:emit_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?prolog:emit_args0prolog:emit_args0 _ ???J 0? ?trueprolog:emit_args0_??J 0??J 0??J 0 $bin_cut? prolog:get_mode ?? ?prolog:emit4? ? ?prolog:unify_op ? ??+?1?prolog:emit_args0???? ???3ii?? ? ?  ?  ?  ?prolog:classif_argprolog:unify_opgetgetunify ?trueprolog:unify_opputput ? ? ?prolog:deep_var_opprolog:deep_var_op_push $bin_cut??compoundprolog:deep_var_op_write ?trueprolog:deep_structure_opgetgetget ?trueprolog:deep_structure_opputputpush ?trueprolog:classif_arg_ ?B?? ? ? ?trueprolog:classif_arg_constant ?B?? ? ? ?trueprolog:classif_arg_ ?trueprolog:max_??J 0? ? ? ?trueprolog:max_ ? ?trueadd_true:-:-?? ?:-???trueadd_true_:-?true ?trueprolog:vars_ call?? ? trueprolog:find_occurrencesprolog:find_occurrences[][][] ? ?trueprolog:find_occurrences ..??ii?? ??. ? ? ii?? ?? prolog:find_occurrences? ? ???  ?  ?prolog:occurrenceprolog:occurrence_ ? ? ?B?? ?trueprolog:occurrence _ ? ? ?var ?? ?B ?? ? ? $OCC ?? 1 ?  ?prolog:newvarprolog:occurrence$OCC$OCC?? ? ?var???prolog:oldvarprolog:occurrence _ ? ? at4? =occ?3=var? bad_occurrence ?errmesprolog:oldvar_/?? ? ?=???1J11??J0 ?trueprolog:newvar _,?? ? ? =?? ? ? /?? ?trueprolog:fill_info_ ? 0 ?prolog:fill_allprolog:tpoint_ ??1J1 ?trueprolog:fill_all[][] ? ?trueprolog:fill_all ..?? prolog:fill_one??? ? prolog:fill_all?? ??? ?prolog:fill_var_typeprolog:fill_var_typeiiii????var?? ? ?B?? ?prolog:get_var_typeprolog:fill_var_type_ ?trueprolog:get_var_type//11unifyvoid ??trueprolog:get_var_type//11writevoid ??trueprolog:get_var_type//1?variable ??trueprolog:get_var_type//??value ???J 0?trueprolog:fill_one iiii?constant??arg?? prolog:mark_arg???4???3var4?/113->?/?? ? ?  ?prolog:tpointprolog:fill_oneiiii?constant=? ? ? ?? ?prolog:tpointprolog:fill_one iiii????arg?? prolog:mark_arg?????prolog:mark_var??? ? ?  ?prolog:tpointprolog:fill_one iiii=??var?? ? ?? prolog:mark_var?4 ??3 var??prolog:tpointprolog:mark_arg getget ? -4 ? /?>?3 *?>???J1trueprolog:mark_arg putput ? -4 ? />??3 *>????J1trueprolog:mark_var_var??/11-??/??? ?trueprolog:mark_var_var??/1?-??/??1?J 0? ?trueprolog:mark_var_var??/??-??/??1?J 0? ?trueprolog:mark_var_ ?var??/=?-??/=?trueprolog:collapse_args_ ???J 0?trueprolog:collapse_args _??J 0??J0 +?1? prolog:collapse_args???? ? ? ?prolog:collapse_themprolog:default//?? prolog:set_to99999?? 0 ?prolog:set_toprolog:set_to_ ? ??trueprolog:set_to_ ?trueprolog:collapse_them _-??*??var??-??var? ?-? ? prolog:default? prolog:default? prolog:check_lifetimes4 ?4 ?4 ??3 -? ?3 -??3 -??  ?prolog:defaultprolog:check_lifetimes--??-??-?? prolog:check_var_var??prolog:check_var_arg??$bin_cut??prolog:check_var_argprolog:check_lifetimes--??-?? $bin_cut??prolog:check_var_argprolog:check_lifetimes_-??-?? $bin_cut??prolog:check_var_argprolog:check_lifetimes_ ?trueprolog:check_var_var//?? ?/????J 0?trueprolog:check_var_var//?? ?/????J 0trueprolog:check_var_arg //?? ?/????J 0??J 0trueprolog:allocate_regs[][] ? ??trueprolog:allocate_regs..?? prolog:allocate_regs???? ? ?prolog:allocate1prolog:allocate1 iiii=??var??-?? ? ? $bin_cut?? ? ?  ?prolog:allocate_regprolog:allocate1_ ? ?trueprolog:allocate_reg _/11 ?B?? prolog:free_reg???? ? ? ?prolog:get_regprolog:allocate_reg _/1? ?B?1?J 0? ? ? ?prolog:get_regprolog:allocate_reg_/??1?J 0? ? ? ?prolog:free_regprolog:free_reg _-??/??- ? ? .?? /????J 0? ?trueprolog:free_reg_ ? ?trueprolog:get_reg _-??.??/??- ?? /??? ?trueprolog:get_reg _-??/??-??/???1J1 ?trueprolog:mdef_to_def:-:-??:-?? prolog:repl_body??? ?prolog:hide_atomprolog:mdef_to_def:-:-?:-? $bin_cut?call?fail? ?prolog:repl_bodyprolog:repl_body_call? ?B?? ?trueprolog:repl_body_ $bin_cut?? ?prolog:repl_macroprolog:repl_body_ $bin_cut?prolog:strip_nil??? ? ?prolog:split_opprolog:repl_body_ prolog:peval_io??$bin_cut?? binprolog ?is_prologprolog:repl_body_ $bin_cut?=?4?ttyprint4??3spying_on?3spy_goal? ?spyingprolog:repl_body_prolog:hide_atomis_prolog_ $bin_cut?=??? is prologbb_valis_prolog_prolog:default_prologprolog:cutp_ ? .36.99.117.116[]nameprolog:repl_macro!!$bin_cut? ?prolog:cutpprolog:repl_macrovarvar? ?B? var?prolog:repl_knownprolog:repl_macrononvarnonvar? ?B? nonvar?prolog:repl_knownprolog:repl_macroatomicatomic? ?B? atomic?prolog:repl_knownprolog:repl_macrofloatfloat? ?B? float?prolog:repl_knownprolog:repl_macroatomicatomic? ?B? atomic?prolog:repl_knownprolog:repl_macro,,?? ? ? ? ?prolog:repl_conjprolog:repl_macro;;?? ? ? ? ?prolog:repl_disjprolog:repl_macro->->??->?? prolog:repl_body??? ?prolog:repl_bodyprolog:repl_macrocomparecompare??? ?compare0???trueprolog:repl_macro====?? ?compare0??=trueprolog:repl_macro@<@<?? ?compare0??<trueprolog:repl_macro@>@>?? ?compare0??>trueprolog:repl_macro:=::=:?? ?lval???prolog:repl_lvalprolog:repl_macro##? ?dcg_connect?trueprolog:repl_macro::?? ?module_call??trueprolog:repl_macrofindallfindall???findall???prolog:repl_bodyprolog:repl_macrobagofbagof???bagof???prolog:repl_bodyprolog:repl_macrosetofsetof???setof???prolog:repl_bodyprolog:repl_macroallall???setof???prolog:repl_bodyprolog:repl_macro^^??^??prolog:repl_bodyprolog:repl_macrocallcall?prolog:repl_bodyprolog:repl_macro\+\+?\+?prolog:repl_bodyprolog:repl_macronotnot?not?prolog:repl_bodyprolog:repl_conj _ ?B? $bin_cut?prolog:repl_body??prolog:app_body???? ?prolog:split_opprolog:repl_conj_,?? prolog:repl_body??? ?prolog:repl_bodyprolog:repl_disj _if??? ?B ? ? ? ->? ?? prolog:repl_body ??prolog:repl_body??? ?prolog:repl_bodyprolog:repl_disj_or?? prolog:repl_body??? ?prolog:repl_bodyprolog:repl_lval##?? ? ? ??trueprolog:repl_lval_ ? ? ?trueprolog:repl_known_true $bin_cut??callprolog:repl_known_fail ?trueprolog:split_opisis?? ? ? ? ?prolog:split_is_relprolog:split_op <<?? ? ? less ? ?prolog:split_relprolog:split_op >>?? ? ? greater ? ?prolog:split_relprolog:split_op =<=<?? ? ? less_eq ? ?prolog:split_relprolog:split_op >=>=?? ? ? greater_eq ? ?prolog:split_relprolog:split_op =:==:=?? ? ? arith_eq ? ?prolog:split_relprolog:split_op =\==\=?? ? ? arith_dif ? ?prolog:split_relprolog:split_is_rel_.?[]expr?? ?B?? ?trueprolog:split_is_rel_.?[]+?0? ?B?? ?trueprolog:split_is_rel_.?[]+?0? $bin_cut?? ? ?floatprolog:split_is_rel _.?[]+?0? ground?$bin_cut?expr??? binprolog ?is_prologprolog:split_is_rel_ ? []prolog:split_isprolog:app_body[][] ? ??trueprolog:app_body..??,??prolog:app_bodyprolog:strip_nil..?[] ? ??trueprolog:strip_nil..??,??prolog:strip_nilprolog:split_rel_ ? []prolog:split_rel_1prolog:split_rel_1_ prolog:split_is ?? ? ? =.. ?4 ?prolog:emit_is ? ???3 .? .? . ?[] ?  ? ?prolog:split_isprolog:split_is_ ? ?B?? ? ? ?trueprolog:split_is_ ? ?B?? ? ? ?trueprolog:split_is _ ? $bin_cut?=??? ? ?floatprolog:split_is_ .? . ? . ?[] $bin_cut? prolog:split_is ? ?? ? prolog:split_is ? ? ? ? =.. ?4?prolog:emit_is ? ???3.?. ? . ? .?[] ? ?  ?=..prolog:split_is_ .? . ?[] prolog:split_is ? ?? ? =.. ?4 ?prolog:emit_is ? ???3 .?. ? .?[] ? ?  ?=..prolog:emit_is_.?? ?trueprolog:def_to_mbin:-:-?? ? ?? ? ?prolog:def_to_mbin0prolog:def_to_mbin_ ? ? true ?prolog:def_to_mbin0prolog:def_to_mbin0 @@@@??:-?? ?B?? prolog:add_upper_cont????? ?termcatprolog:def_to_mbin0_:-?? add_cont???? ?termcatprolog:add_upper_cont _ ?B?? add_cont???? ? ? ?add_contprolog:add_upper_cont _ ,4??3strip_cont??? ? ? ?add_contadd_cont,,true??add_contadd_cont,,fail? ?fail??trueadd_cont,,??? term_append?4???3cont? ?add_contadd_cont_? cont??J01 ?truetermcat_? cont??J01 ?trueprolog:show_code _ show_code0?? length? ? write4 ? cnl nth_member?? ? prolog:show_instr ?? fail?3 BRUT WAM-ASSEMBLER:4 ? =length ?3 =mode? ? ? ?findallprolog:show_code _B? POST TERM-COMPRESSION CODE:=mode? cnlprolog:mc_all_instr??nth_member??? prolog:show_instr??fail? ? ?writeprolog:show_code_B? FINAL CODE:=mode? cnlprolog:gen_code??fail? ? ?writeprolog:show_code_ ?B?trueshow_code0_ ? member??prolog:show_or_skip?? ? ?memberprolog:show_or_skipiiiigetvariable??var??-??arg? ??B?trueprolog:show_or_skipiiiiputvalue??var??-??arg? ??B?trueprolog:show_or_skip_ ?trueprolog:show_instr _ ? ?ii???? .?[] write  write?write_write?write prolog:show_fun?prolog:show_info?cnl?  ?writeprolog:show_funputput ??trueprolog:show_fungetget ??trueprolog:show_fun_writeprolog:show_info_ ? ?var??-??? write4?put9put9put9write% write??3var?  ?writeprolog:show_info_ write??  ?writeprolog:show_steps asmasm ,cnl,4?,4?,cnl,4? ,cnlfail3portray_clause?3writeEXPANDED:3\==?? ,4?,cnl,4?,cnlfail3portray_clause?3writeDEFINITE: ?orprolog:show_steps_ ?trueprolog:bind_c_chunk_lengthwamwam ? ??trueprolog:bind_c_chunk_lengthmemmem ? ??trueprolog:bind_c_chunk_length _ ? ? ? ? ? 0 []prolog:bind_lengthprolog:bind_length [][] ? ?trueprolog:bind_length..? ? ? ? ? ? ? ?  ?  ?  ?  ? ? ?prolog:make_anti_callprolog:make_anti_call iiii ? ? ? ? ?c_chunk_variable? ii ?4 ? ?3 len? =?? prolog:bind_length???????  ?  ?Cprolog:make_anti_call iiii ? ? ? ? ?c_chunk_value? ii ?4 ? ?3 len? -??? prolog:bind_length?>?0???  ?  ?Cprolog:make_anti_call_ ?B ? ? ? ii ? ? ? $bin_cut?-???C?4??C???prolog:bind_length4?>?0???3.4??3iic_chunk_variable>?03iic_chunk_value4?03len?  ?  ?  ?  ?prolog:antigenicprolog:make_anti_call _ ? ??1J 0 prolog:bind_length??? ????  ?  ?Cprolog:gen_code _ prolog:bind_c_chunk_length???member??prolog:write_instr???=?no$bin_cut?fail? ? ? ?prolog:mc_all_instrprolog:gen_code_ ?trueprolog:maxarity256256 ?trueprolog:temparg_ ? ?trueprolog:gen_instr iiii???? ? $bin_cut?? ? ?prolog:beautifyprolog:write_instr iiii?? ? ? $bin_cut? =?yes? ? ? ?  ?prolog:encodeprolog:write_instr_no ?trueprolog:mc_all_instr_ ? ? prolog:mc_one_instr?? ?findallprolog:mc_one_instr _ ? prolog:mc_peephole??prolog:instr_cat??? ? ?memberprolog:instr_cat iiii???? ?ii ?????J 1trueprolog:beautifyargarg??prolog:encode_argprolog:beautify temptemp?? prolog:encode_arg ??????  ? ?prolog:tempargprolog:beautifycutargcutarg??prolog:encode_argprolog:beautify _ ? ? ?var ? ? -? ?? ?prolog:encode2prolog:beautify putputwriteconstant ? $bin_cut?prolog:encode2pushcut????prolog:cutpprolog:beautify _ ? ? ? ?prolog:encode2prolog:encode_arg _getvariableempty_opvar? ?-??? ?trueprolog:encode_arg _putvalueempty_opvar? ?-??? ?trueprolog:encode_arg _ ? ? ?var ? ? -? ?? ?prolog:encode2prolog:encode_arg 11constant ? $bin_cut? prolog:encode2?cut???? ?prolog:cutpprolog:encode_arg _ ? ?constant ? constant ?prolog:encode2prolog:encode2_ii???? ?trueprolog:mc_peephole_prolog:mc_topprolog:mc_input_prolog:mc_input0prolog:mc_input0 _.?? prolog:mc_empty????? ? ?prolog:gen_instrprolog:mc_emptyempty_opempty_op ? ? ? ??prolog:mc_input0prolog:mc_empty_ ? ? ?trueprolog:mc_top_ ? prolog:mc0???? ? ?prolog:mc_inputprolog:mc0 _ prolog:mc1?????? ? ? ? ?prolog:op_typeprolog:mc1 pushpushvariable ? ? $bin_cut? prolog:mc5???? ?prolog:mc_pushprolog:mc1 c_chunkc_chunkvariable ? ?? prolog:mc5???? ?prolog:mc_chunkprolog:mc1 _void ?? prolog:mc3????? 1 ?prolog:mc_selprolog:mc1_ ? ? ? ?prolog:mc5prolog:mc_push _ ? ? prolog:op_type?pushstructure prolog:mc_transform_push?? ? $bin_cut? =? ?? ? ?  ?prolog:mc_inputprolog:mc_push_ ? ? ?trueprolog:mc_chunk _ ? prolog:op_type?c_chunkvalue $bin_cut? prolog:mc_input???? ? ?prolog:mc_inputprolog:mc_chunk_ ? ? ?trueprolog:mc_sel _ ? prolog:op_type?>?void $bin_cut? +?1 ? prolog:mc_sel?? ??? ? ?prolog:mc_inputprolog:mc_sel_ ? ? ?trueprolog:mc3_ ? ? ?prolog:mc4prolog:mc3 _ ? prolog:mc0???? ? ?prolog:mc_inputprolog:mc4_ $bin_cut?? ?prolog:mc_transform_voidprolog:mc411 ? ?trueprolog:mc5_ ? ?trueprolog:mc5 _ ? prolog:mc0???? ? ? ?prolog:mc_inputprolog:op_typeiiii??=? ?? ? ? ? ?trueprolog:op_type_ ? ? expected/ii4 ?errmesprolog:mc_transform_void11 ?iiunifyvoid??iiunifyvariable???trueprolog:mc_transform_void _ii?void??ii?void?? ?trueprolog:mc_transform_pushiiiipushvariable?? ?iipushstructure??iipushconstant??trueprolog:encode unify_variableunify_variableget ? ? 1 ? 0prolog:wcodeprolog:encode write_variablewrite_variableput ? ? 2 ? 0prolog:wcodeprolog:encode unify_valueunify_valueget ? ? 3 ? 0prolog:wcodeprolog:encode write_valuewrite_valueput ? ? 4 ? 0prolog:wcodeprolog:encode unify_constantunify_constantget ? ? ? 5 0  ? 0prolog:wcodeprolog:encode write_constantwrite_constantput ? ? ? 6 0  ? 0prolog:wcodeprolog:encode push_constantpush_constant ? ?/?? 6prolog:wcodeprolog:encode get_constantget_constant ? ? ? 7  ? 0prolog:wcodeprolog:encode get_structureget_structure ? ?/?? 8prolog:wcodeprolog:encode put_constantput_constant ? ? ? 9  ? 0prolog:wcodeprolog:encode put_structureput_structure ? ?/?? 10prolog:wcodeprolog:encode get_variableget_variable ? ? ? ? 11  ? ?  ?prolog:wcodeprolog:encode put_valueput_value ? ? ? 11 ?  ?prolog:wcodeprolog:encode put_variableput_variable ? ? ? ? 12  ? ?  ?prolog:wcodeprolog:encode get_valueget_value ? ? ? ? 13  ? ?  ?prolog:wcodeprolog:encode push_cutpush_cut?? ? ? 14 0 ? 0prolog:wcodeprolog:encode put_cutput_cut?? ? ? 15 0 ? 0prolog:wcodeprolog:encode get_cutget_cut?? ? ? 16 0 ? 0prolog:wcodeprolog:encode execute_?execute_? ? ? ? ? 17 0  ?  ?prolog:wcodeprolog:encode load_constantload_constant ? ? ? ? 28  ?  ? 0prolog:wcodeprolog:encode load_variableload_variable ? ? ? ? 50  ? ?  ?prolog:wcodeprolog:encode load_valueload_value ? ? ? ? 29  ? ?  ?prolog:wcodeprolog:encode push_structurepush_structure ? ?/?? 51prolog:wcodeprolog:encode push_variablepush_variableput ? ? 52 ? 0prolog:wcodeprolog:encode unify_voidunify_void ? ? 61 ? 0prolog:wcodeprolog:encode write_voidwrite_void ? ? 62 ? 0prolog:wcodeprolog:encode c_chunk_variablec_chunk_variable ? ? ? 63 ?  ?prolog:write_or_skipprolog:encode c_chunk_valuec_chunk_value ? ? ? 64 ?  ?prolog:write_or_skipprolog:encode clause_?clause_? +?1 ? prolog:wcode?? ?0??? ?prolog:n_nopprolog:encode firstarg_?firstarg_?/? ? +?2 ? prolog:wcode?? ??? ??  ?prolog:n_nopprolog:encode end_?end_? ? ? ? ? 0  ?  ? 0prolog:wcodeprolog:encode inline_variableinline_variable prolog:wcode??????? ?prolog:n_inlineprolog:encode arith_variablearith_variable prolog:wcode????0?? ?prolog:n_arithprolog:encode arith_valuearith_value prolog:wcode????1?? ?prolog:n_arithprolog:encode builtin_?builtin_? prolog:wcode??????? ?prolog:n_builtinprolog:encode_op_ ?op + ?3 ? make_cmd4 ? ? prolog:wcode?? ?0 ?0?3 .? .4 ? .? .4 ? .?[]3 .32[]3 .32[]  ? ?prolog:n_nopprolog:n_inline_ bu_ctrn_inline? ?metacallprolog:n_arith_ bu_ctrn_arith? ?metacallprolog:n_builtin_ bu_ctrn_builtin? ?metacallprolog:n_nop_ bu_ctrn_nop? ?metacallprolog:bu_ bu0??? ? ?metacallprolog:write_or_skip wamwam ??trueprolog:write_or_skip memmem ??trueprolog:write_or_skip_len ? greater_eq ? ? less ? ? $bin_cut? prolog:write_or_skip0????? ??  ?  ?  ?prolog:c_thresholdprolog:write_or_skip _ ?trueprolog:write_or_skip0 wamwam $bin_cut? prolog:wcodewam?????? c_flag begin_end yes  ?bb_valprolog:write_or_skip0 cc ? ? ? ? ?? 0prolog:wspec_cprolog:write_or_skip0asmasm? bb_valc_flagbegin_endyes = ?c = ?n prolog:wcodeasm?4 ?????3 +? ?  ?  ?  ?ifprolog:write_or_skip0 _ ?trueprolog:wcode memmem ?????J #0trueprolog:wcode wamwam ??J 0?J 0?J 0 put0?writeprolog:wcode cc ? ? ? ? ? ?prolog:wcode_cprolog:wcode asmasm ? ? ? ? ? ?prolog:wcode_asmprolog:wcode_asm _ .? .? .? .?[] write? write--> put9 put9 write? cnl? ?=..prolog:let_c_chunk_file_ ? ? c_chunk file_namebb_letprolog:c_chunk_file_ ? ? c_chunk file_namebb_valprolog:newpredcc? ? ?:-?? ?prolog:newpred0prolog:newpred_ ?trueprolog:newpred0 _ bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0? ?functorprolog:newpred0_ bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0? ?functorprolog:currpred --??/??/?? bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset?? predicate namebb_valprolog:compile_mem _ ?mem compiling4??...3to? ctime?prolog:survive_cleanup?? prolog:mcomp_file?? prolog:maincomp?4 ? prolog:terminate_file?$end11$bin_cut?ctime? -???quietmes4??3compile_time?3 current_user_file? ? ?quietmesprolog:compile_mem_ restart? compilation aborted ?ttyprintprolog:survive_cleanup_ restartprolog:call_ifdefinit_iotruename??prolog:init_cmd? ?nameprolog:mcomp_file_ .?.>?[] statisticsstrings4? statisticssymbols4 ? statisticshtable4 ? prolog:translate_all?? statisticscode4 ? - ??? statisticsstrings4 ?-???statisticssymbols4?-???statisticshtable4?-???+???+???+???quietmes4??3bytes_used4?4?4?4?total?3code?3strings?3symbols?3htable?3.?.>?[]3.?.>?[]3 .?.>?[]3 . ? .>?[]3 .?.>?[]3 .?.>?[]3.?.>?[] code ? ?statisticsprolog:compile0_.??? .??prolog:compile1prolog:compile0_ .?[] ?prolog:compile1prolog:compile1 _? ctime?prolog:xcompile???ctime? -???write4? cnl?3total_compile_time? ?prolog:init_cmdprolog:xcompile _ prolog:decorate_fileheader?prolog:compile_builtins?member??quietmes4? ctime ? prolog:comp_file?? ctime ? - ? ? ? quietmes4 ? fail?3 compile_time ?3compiling4??...3to? ? ?tellprolog:xcompile_ prolog:decorate_filefooter?fail? $end0 0 ?prolog:terminate_fileprolog:xcompile_ ?toldprolog:decorate_file_c ??prolog:c_decorate_fileprolog:decorate_file_ ?trueprolog:terminate_file _ prolog:gg_emit?4?prolog:close_c_chunk_file??3.4?[]3.4?[]3iiend??? ?prolog:make_dummy_endprolog:make_dummy_endcc $bin_cut?? wam.hprolog:c_chunk_fileprolog:make_dummy_end_prolog:maincompprolog:close_c_chunk_filecc? toldprolog:write_c_chunkprolog:close_c_chunk_file_ ?trueprolog:gg_emitmemmem memprolog:gen_codeprolog:gg_emitwamwam wamprolog:gen_codeprolog:gg_emitcc cprolog:gen_codeprolog:gg_emitasmasm asmprolog:show_codeprolog:comp_file_ .wam.asm.bin.c[] $bin_cut?prolog:translate_all??? ? ?memberprolog:translate_all_prolog:translate_all0prolog:memoing_translate_all _ ?wam \+4?prolog:memoable_file???$bin_cut?if4?true4 ? prolog:include_memoed_file??3\+older_file??3 prolog:make_memo_file???3current_moduleprolog binprolog ?is_prologprolog:memoing_translate_all_prolog:translate_all0prolog:memoable_file_ ? ?.??.??.?[] append ?? ? $bin_cut? =?4? name? ? append ?4 ? ? name? ??3 .? ?3.46.112.108[] ?  ? ?nameprolog:make_memo_file _ ?wam1J)0 prolog:translate_all0??toldtell?? ? ?tellprolog:include_memoed_file_0J)0 repeatget0?prolog:put_to_eof?$bin_cut?seensee?? ?seeprolog:put_to_eof-1-1 ??trueprolog:put_to_eof_?J0B? ?trueprolog:translate_all0 _0J)0 repeatread_clause?prolog:translate??$bin_cut?seensee?? ?seeprolog:translateend_of_fileend_of_file ??trueprolog:translate:-:-?? fail? ?prolog:translate_cmdprolog:translate::-::-?? ?? :-?? fail? ?prolog:compile_binaryprolog:translate_ $bin_cut?prolog:translate_cmd4??fail?3assert? ?prolog:is_dynamic_clauseprolog:translate_ ? ? fail? ? ?prolog:maincompprolog:is_dynamic_clause:-:-???is_dynamicprolog:is_dynamic_clause_is_dynamicprolog:maincomp _ prolog:show_steps??? prolog:compile_binary??? ? ? ?prolog:preprocessprolog:translate_cmd..?[]?prolog:include_fileprolog:translate_cmdcompilecompile??prolog:include_fileprolog:translate_cmdensure_loadedensure_loaded??prolog:include_fileprolog:translate_cmdconsultconsult??prolog:include_fileprolog:translate_cmdreconsultreconsult??prolog:include_fileprolog:translate_cmddynamicdynamic? ??dynamicprolog:translate_cmdinteractiveinteractive? ??interactiveprolog:translate_cmdspyspy? ??spyprolog:translate_cmd opop???? if4?4 ?true?3member?.wam.c[]3 prolog:encode_op???? ? ?opprolog:translate_cmd_prolog:exec_cmdprolog:exec_cmd_ prolog:maincomp??fail? ?prolog:cmd2clauseprolog:cmd_root$run_time_command$run_time_command ?trueprolog:init_cmd_ prolog:get_cmd_no?? ?prolog:cmd_rootprolog:get_cmd_no_ ? bb_setgensym?0$bin_cut?? gensym ? ?bb_valprolog:get_cmd_no_ ?trueprolog:cmd2clause _:-?? gensym??quietmes% !!! action delayed after compilation, for command:quietmes4?if4?truetrue?3public/?03:-? ?prolog:cmd_rootprolog:exec_run_time_commands_ prolog:exec_run_time_commands0?fail? ?prolog:cmd_rootprolog:exec_run_time_commands_trueprolog:exec_run_time_commands0 _ ?10000 symcat???if4?4?true $bin_cut??3is_compiled?3,4?fail3call? 1forprolog:include_file _0J)0 quietmes4?prolog:memoing_translate_all?? seeing_telling0 ? quietmes4 ??3 end4 ? in ?3 including?3begin4? in?3including? ? ?find_fileprolog:preprocess _ prolog:fact2rule?? prolog:mdef_to_def?? prolog:def_to_mbin??? ? ?prolog:std_expand_termprolog:fact2rule:-:-? ?:-??trueprolog:fact2rule:-:-?? ?:-???trueprolog:fact2rule_:-?true ?truemake_cmd_ name??? ?prolog:make_cmd0prolog:make_cmd0_ ? ? char_in_cmd?? ? ?findallchar_in_cmd _ prolog:listify??member??? ? ?memberprolog:listify..?? ?.???trueprolog:listify_namemake_appl_ ? .?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[] wam newappl.bpprolog:compile0make_executable_unix_appl_ make_cmd4?? system??3.4?.4? .4 ? .? .4 ? .4 ? .? .4 ? .?[]3 .32 .59 .32 .99 .104 .109 .111 .100 .32 .43 .120 .32[]3 .32 .59 .32 .99 .97 .116 .32 .110 .101 .119 .97 .112 .112 .108 .46 .98 .112 .41 .32 .62 .32[]3 .32 .36 .48 .39[]3 .59 .32 .101 .99 .104 .111 .32 .39 .101 .120 .101 .99 .32[]3.59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[]3.40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[] ? ?make_applprolog:cparser_ ? is prolog bin_prolog_with_cparserbb_defkmake_ makewam? ?prolog:cparserkcmake_ cmakewam? ?prolog:cparsertmake_ ? 12 60tmaketmake_ ? 10000tmaketmake_ cmake? ?set_c_thresholdcmake_ ? wamcmakecmake_ ? usercmakecmake_ ? c .cmakemake_ ? wammakemake_ ? usermakemake_ ? wam .bpmakemake _ ? ? ? ?makemake _ module? if4 ?true4 ? module ??3 make0????3 \+ errmesunable_to_make .4 ? .4 ? .4 ?[]3 in_module?3 project??3 mode?  ? ?current_modulemake0 _ find_file?? make_cmd4 ? ? prolog:make_include?? prolog:compile0?? ? ctime ?- ? ?? write4 ? cnl?3 =? time?3 .? .?[]  ? ?ctimeprolog:make_includecc? .?.4?[]3.46.104[] prolog:let_c_chunk_file?? ?make_cmdprolog:make_include_ ?trueasm_ ? asm userprolog:comp_fileasm_ ? user asm .asm BinWAM intermediate codemakeboot_ ? wam prologmakeprolog:uboot_ ? wam usermakels_ ? ls -tFsystemdir_ ? dirsystemedit _ make_cmd4??system?compile??3.?.4?.?[]3.32[] ? ? ?find_fileprolog:get_editor_ unix_getenvEDITOR? unix_getenvVISUAL? $bin_cut?? ? ?orprolog:get_editor_ ? ?truemy_edit_ current_user_file? edit??? ? failprolog:call_ifdefprolog:my_defedit_ current_user_file? prolog:defedit??? ? failprolog:call_ifdefprolog:defedit_ edit??? ? ?prolog:get_editored_ ? emacsprolog:my_defeditedit_ ? editprolog:my_defedittextedit_ ? texteditmy_editemacs_ ? emacsmy_editnotepad_ ? notepadmy_editpico_ ? picomy_editvi_ ? vimy_editco_ current_user_file? compile?? ? failprolog:call_ifdefprolog:s_statisticsprolog:c_rootxxxx ?trueset_c_threshold_ ? 100000set_c_thresholdset_c_threshold_ ? bb_letc_flagc_threshold_max?? c_flag c_threshold_min ?bb_letset_c_trace_ ? ? c_flag tracebb_letprolog:c_threshold_ ? bb_valc_flagc_threshold_max?$bin_cut?? c_flag c_threshold_min ?bb_valprolog:c_threshold110 $bin_cut?? wam.hprolog:c_chunk_fileprolog:c_threshold55500 ?trueprolog:wcode_c_prolog:make_ccodeprolog:make_ccode _ $bin_cut? prolog:make_hcode ??  ?prolog:c_instrprolog:make_ccode_prolog:make_bcodeprolog:make_hcode_ ? prolog:wchunk?? 2 ?prolog:c_traceprolog:make_bcode _ ? {B? ?B? ,B? ?B? ,B? ?B? ,"B? cwrite?cwrite"},cnl?prolog:patch_specialsprolog:make_comment _ -4?/??3/?? = ?4 ? prolog:make_cmd04 ???3 . ? .4 ? .?.4? .?.4? .?.4? .?.4?[]3.93.32.42.47[]3.32.47.32[]3.32.91[]3.32.47.32[]3 .32 .47 .42 .32[]3 .10[] ?  ?prolog:currpredprolog:wspec_c _ $bin_cut?prolog:make_comment? prolog:write_c_chunk4 ? prolog:wchunk ? lwrite? prolog:c_trace1 ? cwrite { write? cwrite, cwrite? cwrite, cwrite? cwrite,(void *) write? cwrite}, cnl?3 ,4 ?nl3 lwrite?  ?prolog:c_specprolog:wspec_c _ $bin_cut? prolog:c_trace1 ? prolog:wchunk ??  ?prolog:c_spec_endlwrite_ ? put?fail? ?memberlwrite_ ?trueprolog:patch_specials_ ?B?? ? ? ?trueprolog:patch_specials _ =?92=?34findall?4 ? ? name? ??3 ,4 ? patch_it ????3 member ?? ?namepatch_it_ ? ?? =?? =?? ?orpatch_it_ ? ?? =?? =?? ?orpatch_it_ ? ?trueprolog:write_c_chunk_? seeing_telling1?tell?call?tell?? ? ?prolog:c_chunk_fileprolog:wchunk_ ,4?nl3fast_write? ?prolog:write_c_chunkprolog:c_decorate_file_ $bin_cut?prolog:c_decorate_file0?wam_bp? wam.h ?prolog:c_chunk_fileprolog:c_decorate_file_ ? user_bpprolog:c_decorate_file0prolog:c_decorate_file0headerheader? init_gensym?prolog:wchunk/* do not edit: generated by co.pl */write#include "../src/global.h"cnlwrite#include "../src/c_defs.h"cnlprolog:c_chunk_file?write#include "write?write"cnlcnlwritestruct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} write?write[] = {cnl? ?prolog:c_rootprolog:c_decorate_file0footerfooter write?write"}};cnlcnlwritelong write?write_size=sizeof(write?write);cnl? {255,0,0," ?writeprolog:c_check_ ? ?prolog:c_check0prolog:c_check0_ ? integer?? c_chunk inbb_valprolog:new_offset_ ? +?1?bb_setpredicateoffset?? predicate offsetbb_valprolog:get_offset_ ? ? predicate offsetbb_valprolog:c_find_fun_ ? ?B?? integer? unexpectederrmesprolog:c_find_fun _ bb_valfun_symbol?? bb_valfun_arity?? $bin_cut? =??? ? 0 ?forprolog:c_find_fun _?1J1 bb_letfun_symbol??bb_letfun_arity??prolog:make_bcodewrite_constant60??? c_chunk in ? ?bb_setprolog:c_chunk_begin_ prolog:c_root?gensym??? c_chunk in -1bb_letprolog:c_chunk_end_ ? c_chunk in nobb_letprolog:newP _ integer?prolog:c_find_fun????? c_chunk in ? ?bb_valprolog:newH_oldP_ prolog:new_offset?? ?prolog:c_checkprolog:oldH_oldP_ prolog:get_offset?? ?prolog:c_checkprolog:newH_newP_ prolog:new_offset?? ?prolog:newPprolog:oldH_newP_ prolog:get_offset?? ?prolog:newPprolog:c_wvoid_ or4?true?3,4?,4?fail3prolog:new_offset>?3for>?2? ? ?prolog:newH_oldPprolog:c_aux_load_integer_load_integer?? ?B?? ?prolog:c_checkprolog:c_aux_load_integer_load_constant?? ? ? ? ?prolog:newPprolog:c_aux_put_integer_put_integer?? ?B?? ?prolog:c_checkprolog:c_aux_put_integer_put_constant?? ? ? ? ?prolog:newPprolog:c_aux_get_integer_get_integer?? ?B?? ?prolog:c_checkprolog:c_aux_get_integer_get_constant?? ? ? ? ?prolog:newPprolog:c_aux_write_integer_ ?write_integer?? ?B?? ?prolog:newH_oldPprolog:c_aux_write_integer_ ?write_constant??prolog:newH_newPprolog:c_aux_unify_integer_ ?unify_integer?? ?B?? ?prolog:oldH_oldPprolog:c_aux_unify_integer_ ?unify_constant??prolog:oldH_newPprolog:c_trace _ greater_eq??$bin_cut?prolog:write_c_chunk4??3,4?,4? ,4 ?nl3 write ")3write?3writec_trace(" c_flag trace ?bb_valprolog:c_trace_ ?trueprolog:c_specc_chunk_variablec_chunk_variable ? ?c_chunk_variable?prolog:c_chunk_beginprolog:c_skip22 ?trueprolog:c_spec_endc_chunk_valuec_chunk_valuec_chunk_value ? ? prolog:c_check0 ? + ?? ? prolog:c_chunk_end prolog:get_offset ? prolog:make_bcodec_chunk_value?0? ??  ?prolog:c_skipprolog:c_instr put_structureput_structure ? ? ?put_structure? ??  ?prolog:newH_newPprolog:c_instr put_constantput_constant ? ? ? ? ?prolog:c_aux_put_integerprolog:c_instr push_variablepush_variablepush_variable() defoffset???prolog:newH_oldPprolog:c_instr push_structurepush_structure ? ?push_structure? ? ? valoffset? ? rmoffset??  ?prolog:newH_newPprolog:c_instr write_valuewrite_value ?write_value??prolog:newH_oldPprolog:c_instr write_variablewrite_variable ?write_variable??prolog:newH_oldPprolog:c_instr write_constantwrite_constant ? ? ? ?prolog:c_aux_write_integerprolog:c_instr push_constantpush_constant ? ? ? ?prolog:c_aux_write_integerprolog:c_instr get_variableget_variable ?move_reg??prolog:c_checkprolog:c_instr put_valueput_value ?move_reg??prolog:c_checkprolog:c_instr put_variableput_variable ?put_variable???prolog:newH_oldPprolog:c_instr write_voidwrite_void ? ?write_void??prolog:c_wvoidprolog:c_instr push_cutpush_cut ?push_cut?prolog:newH_oldPprolog:c_instr put_cutput_cutput_cut() ?prolog:c_checkprolog:c_instr get_cutget_cutget_cut() ?prolog:c_checkprolog:c_instr load_constantload_constant ? ? ? ? ?prolog:c_aux_load_integerprolog:c_instr load_variableload_variable ?load_variable???prolog:newH_oldPprolog:c_instr load_valueload_value ?load_value??prolog:c_checkprolog:c_instr get_valueget_value ?get_value??prolog:c_checkprolog:c_instr get_constantget_constant ? ? ? ? ?prolog:c_aux_get_integerprolog:c_instr get_structureget_structure ? ? ?get_structure? ??  ?prolog:oldH_newPprolog:c_instr unify_variableunify_variable ?unify_variable??prolog:oldH_oldPprolog:c_instr unify_valueunify_value ?unify_value??prolog:oldH_oldPprolog:c_instr unify_constantunify_constant ? ? ? ?prolog:c_aux_unify_integerprolog:c_instr unify_voidunify_void ?unify_void??prolog:oldH_oldPprolog:c_instr inline_variableinline_variable prolog:c_check_iv???prolog:c_checkprolog:c_instr arith_variablearith_variable ? ? prolog:c_opcode????prolog:c_check_avprolog:c_instr arith_valuearith_value ? ? prolog:c_opcode????prolog:c_check_avprolog:c_check_av00arith_op+???? ?prolog:oldH_oldPprolog:c_check_av11arith_op-???? ?prolog:oldH_oldPprolog:c_check_av22arith_op*???? ?prolog:oldH_oldPprolog:c_check_av33arith_op%???? ?prolog:oldH_oldPprolog:c_check_av44 ?div_3???trueprolog:c_check_av55fdiv_3???? ?prolog:oldH_oldPprolog:c_check_av66 ?random_1??trueprolog:c_check_av77 ?get0_1??trueprolog:c_check_av88put0_1() ?trueprolog:c_check_av99 ?rel_op<?trueprolog:c_check_av1010 ?rel_op>?trueprolog:c_check_av1111 ?rel_op<=?trueprolog:c_check_av1212 ?rel_op>=?trueprolog:c_check_av1313 ?rel_op==?trueprolog:c_check_av1414 ?rel_op!=?trueprolog:c_check_av1515 ?int_only_op<<??trueprolog:c_check_av1616 ?int_only_op>>??trueprolog:c_check_av1717 ?int_only_op&??trueprolog:c_check_av1818 ?int_only_op|??trueprolog:c_check_av1919 ?int_only_op^??trueprolog:c_check_av2020 ?l_neg_3??trueprolog:c_check_av2121 ?compare0_3??trueprolog:c_check_av2222 ?arg_3??trueprolog:c_check_av2323setarg_3() ?trueprolog:c_check_av2424change_arg_3() ?trueprolog:c_check_av2525def_3() ?trueprolog:c_check_av2626rm_2() ?trueprolog:c_check_av2727set_3() ?trueprolog:c_check_av2828 ?val_3??trueprolog:c_check_av2929 ?lval_3??trueprolog:c_check_av3030 ?symcat_3??trueprolog:antigenicarith_variablearith_variable ??30J 0trueprolog:antigenicarith_valuearith_value ??30J 0trueprolog:antigenicbuiltin_?builtin_? ??0J 0trueprolog:c_opcode_ +???? ?prolog:c_checkprolog:c_check_iv00fail_0() ?trueprolog:c_check_iv11cwrite_1() ?trueprolog:c_check_iv22cnl_1() ?trueprolog:c_check_iv33var_1() ?trueprolog:c_check_iv44nonvar_1() ?trueprolog:c_check_iv55integer_1() ?trueprolog:c_check_iv66atomic_1() ?trueprolog:c_check_iv77is_compiled_1() ?trueprolog:$end0_truewamBinProlog3.45/src/binpro.h100644 764 764 46 5764563415 14506 0ustar javierjavier/* do not edit: generated by co.pl */ BinProlog3.45/src/agt_prologServ.pl100644 764 764 6216 6665545744 16451 0ustar javierjavier% % Copyright (c) 1995 by Matthias Klusch, Olaf Scheew, Bernd Grossmann % Computer Science Department, % Christian-Albrechts-University of Kiel, % Olshausenstr. 40, 24118 Kiel, Germany % % All rights reserved. % No warranties will be given on any issues arising out of the use % of this software product. % Permission to use, copy, modify and distribute this software % product for non-commercial purposes is hereby granted, provided % that the above copyright notice appears in all copies and % respective publications. % All commercial trades with this product outside the CAU Kiel % without specific written prior permission are prohibited. % % % agt_prologServ.pl % % BinProlog side of a Tcl/BinProlog interface % used in IDEAS. % % Based on 'server.pl' by Paul Tarau. % Modified for IDEAS by Olaf Scheew, 1995 % % The BinProlog process is in IDEAS a child of the % Tcl process of an agent and is subordinated to Tcl. % BinProlog gets the input from Tcl on stdin and % writes the output to stdout. % Tcl sends queries integrated in one of three % special string which are 'call_prolog', 'query_prolog' % and 'query_prolog_list'. Prolog reacts on this strings % as defined later. :-[oper]. :-[init]. :-[lib]. :-[builtins]. :-[dcg]. :-[read]. :-[write]. :-[bin]. :-[co]. :-[extra]. :-op(200,fx,('$')). % start predicate for the Prolog Tcl-server % main(X):-prolog_server(X). % main loop of the server: % initializes the server when starting, repeats % reading input from stdin and evaling it by using % the predicate 'react' % prolog_server(X):- init_server, repeat, in(X,Vs), react(X,Vs), !. % initialization of server: % shuts of interactivity and sends a EOPA % - End Of Prolog Answer - to Tcl for initialization % confirmation % init_server:- interactive(no), end_symbol. % the predicate 'react': react(end_of_file,_):-!. % 'call_prolog' is used to do a quite Prolog evaluation, % i.e. there is no result given back to Tcl except errors % react(call_prolog(X),_):-!,X,!,end_symbol,fail. % 'query_prolog' gives back all the results of the Prolog % evaluation in the standard BinProlog format % react(query_prolog(X),Vs):-query_prolog(X,Vs),fail. % 'query_prolog_list' gives back the result in a special form: % all values for variables in the query X are divided from each % other by a '|' symbol. % If the result of query is TRUE, a single '|' is sent. % If the result is FALSE, just the EOPA is sent. % This format is catched on the Tcl side of this interface and % used to build up a Tcl list of the result. % 'query_prolog_list' is the standard form used for all queries % to the Belief-Base. % react(query_prolog_list(X),Vs):-query_prolog_list(X,Vs),fail. query_prolog(X,Vs):-X,nl,member(A,Vs),write(A),nl,fail. query_prolog(_,_):-end_symbol. query_prolog_list(X,Vs):-X,write('|'),nl,member(A,Vs),write(A),nl,fail. query_prolog_list(_,_):-end_symbol. % 'EOPA' marks the end of the prolog answer and is sent at % the end of each query evaluation to Tcl. end_symbol :- write('EOPA'),nl. % predicates 'in' and 'in1' for reading input from % stdin into a Prolog variable in(T):-in(T,_). in(T,Vs):-read_term(L,Vs),!,in1(L,T). in1([X|Xs],T):-!,member(T,[X|Xs]). in1(T,T). BinProlog3.45/src/agt_prologServ.bp100664 764 764 435520 6665546022 16473 0ustar javierjavier$bin_cut$cut? ?truefail_B?truecwrite_ ?B? ?truecnl_B?truevar_ ?B? ?truenonvar_ ?B? ?trueinteger_ ?B? ?trueatomic_ ?B? ?trueis_compiled_ ?B? ?true+_??J1 ?true-_??J1 ?true*_??J1 ?truemod_??J1 ?true//_??J1 ?true/_??J1 ?truerandom_J1 ?trueget0_J1 ?trueput_?J0 ?trueless_??J 0 ?truegreater_??J 0 ?trueless_eq_??J 0 ?truegreater_eq_??J 0 ?truearith_eq_??J 0 ?truearith_dif_??J0 ?true<<_??J1 ?true>>_??J1 ?true/\_??J1 ?true\/_??J1 ?true#_??J1 ?true\_??J1 ?truecompare0_??J1 ?truearg_??J1 ?truesetarg_???J0 ?truechange_arg_???J0 ?truedef_???J0 ?truerm_??J0 ?trueset_???J0 ?trueval_??J1 ?truelval_??J1 ?truesymcat_??J1 ?truedcg_connect_J1 ?truelist2term_?J 1 ?trueterm2list_???J!1 ?trueself_info_J"1 ?trueadd_instr_????J#0 ?truelift_heap_??J$0 ?truedet_append0_??J%1 ?truecopy_term_??J&1 ?truebb_list0_??J'1 ?trueolder_file_??J(0 ?trueseeing_telling_?J)1 ?truesee_tell_??J*0 ?trueseen_told_?J+0 ?trueseeing_telling_at_?J,1 ?truesee_tell_at_??J-0 ?truestring_op_??J.1 ?trueop0_???J/0 ?trueterm_append_??J01 ?truefloat_fun2_???J11 ?truefloat_fun_??J21 ?trueinput_float_???J31 ?truewrite_float_?J40 ?truestrip_cont0_?J51 ?truedcg_def_?J60 ?truedcg_val_J71 ?truedcg_tell_?J80 ?truedcg_telling_J91 ?trueiso_open_stream_??J:1 ?trueiso_close_stream_??J;0 ?trueiso_write_term_???J<0 ?trueiso_read_term_??J=1 ?trueiso_put_byte_??J>0 ?trueiso_get_byte_?J?1 ?trueiso_peek_byte_?J@1 ?trueiso_eof_?JA0 ?trueiso_lseek_???JB1 ?truebb_put_??JC0 ?truebb_get_???JD1 ?truebb_op_??JE1 ?truesetref_??JF0 ?trueunix_argc_JG1 ?trueunix_argv_?JH1 ?trueunix_getenv_?JI1 ?trueunix_access_??JJ0 ?trueunix_cd_?JK0 ?trueunix_kill_??JL0 ?truequiet_JM1 ?truecreate_engine_???JN1 ?truedestroy_engine_?JO0 ?trueload_engine_???JP0 ?trueask_engine_?JQ1 ?truemultitask_engines_?JR0 ?truesuspend_engine_?JS0 ?truenew_builtin_??JT1 ?truehalt_?JU0 ?truetrue_?truecall_?trueabort_?truerestart_?truefindall_store_heap_?truefindall_load_heap_?truefunctor_?truename_?trueshell_?truestat0_ ?truelist_asm_ ?truebb_reset_ ?trueprofile_ ?trueif0_ ?true1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=stat_dictruntimeruntime0 ?truestat_dictglobal_stackglobal_stack1 ?truestat_dictlocal_stacklocal_stack2 ?truestat_dicttrailtrail3 ?truestat_dictcodecode4 ?truestat_dictstringsstrings5 ?truestat_dictsymbolssymbols6 ?truestat_dicthtablehtable7 ?truestat_dictbboardbboard8 ?trueuser_error_ ? ? ? basic ? ?error_messageerrmes_ ? ? ? pretty ? ?error_messageerror_message _JM0?5J 01J)0 portray_error???$bin_cut?tell?fail? user ?tellquietmes_JM0?4J 0?ttyprintquietmes_ ?trueportray_errorbasicbasic ? >>> B? ?B? : B? ?B?B?trueportray_errorprettypretty write?write: cnlportray_clause?? *** ?writemember_.?? ?truemember_.??membernth_member_ ? ? 1 ?member_imember_i_ ?.?? ?truemember_i_.???1J0member_i:_module_callmodule_call_ ? $bin_cut?call??is_publicmodule_call_ call?? ?module_predicatemodule_predicate _ .?? module_name??? =..?4 ??3 .?? ? ?  ?=..module_name _ ?B? ?B?? .?[] ? ?.58[] name?? det_append?4 ? ? name? ??3 .?? ?namemodule_name_ ? .?.?[] should_be_nonvar ?user_errormodule_ ? bb_letmodule_name??? current module_namebb_letmodule_ member??public0?fail? ?modulemodule_ ?truecurrent_module_ $bin_cut?=??? current module_namebb_valcurrent_moduleuseruser ?trueis_module_ ? ? ?B?? module_name ? ?bb_valis_module_ bb_element4???3=4?>?3+4?/?03/module_name0 ? ?bb_listmodules_ ? ? is_module?findallhide_atom_ $bin_cut?? ?hide_atom0hide_atom_ ? ?truehide_atom0_ $bin_cut?fail? usercurrent_modulehide_atom0_ $bin_cut?fail?is_publichide_atom0_ module_predicate???? ? ?current_modulepublic0 //?? current_module?bb_defpublic??$bin_cut?? ?functorpublic0_ ? public? bad or repeated declarationerrmespublic,,??? public?? ?publicpublic_public0is_public_ ? ?is_publicis_public_ ? $bin_cut?=??? public ? ?bb_valis_public_ ?is_builtininit_gensym_ ? ? gensym ? 0bb_letgensym_ symcat???? ? ?gensym_nogensym_no_gensym?J0??1J1gensym??J0 ?truegensym_no_ ?1gensym??J0 ?truecurrent_op_ ? ? ?B?? ?get_opcurrent_op _ if4?4?4 ??3valopmark??3get_op???3 ,4 ?fail3 $bin_cut? ? 0 10000 ?forop_???J/0 ?trueget_op_ get_op0????? ? ? ?op_typeget_op0_??J1??J1?0J 0 ?trueop_typexfyxfyinfixop ?trueop_typexfxxfxinfixop ?trueop_typeyfxyfxinfixop ?trueop_typefxfxprefixop ?trueop_typefyfyprefixop ?trueop_typexfxfpostfixop ?trueop_typeyfyfpostfixop ?trueis_dynamic_?$firstJ0 ?trueis_assumed_$assumed?J0 ?B? ?truespy_goal_tracespying_ yes ?spying?J1 ?truespy //?? \+4?$bin_cut?bb_letspying?yes?3is_builtin? ?functorspy_ ? ? unable_to_spy_on ?user_errornospy//??? bb_rmspying?? ?functoris_builtin_nonvar_ bu1? $bin_cut?? ? ?metacallis_builtin_nonvar_ cont>? bu?>?? ?termcatis_builtin_var_ bu1? ?metacallis_builtin_var_ strip_cont??>?? ? ? ?buis_builtin_ ?B??is_builtin_nonvaris_builtin_is_builtin_varinteractive_ ? ?B?? =?yes =?no is_interactiveifinteractive_ ?B?interactive0is_interactive_ ? current_op1199fx?-\+interactive0yesyes ? 1200 fx ?-opinteractive0nono ? 1199 fx ?-opexpand_term_portable_expand_termstd_expand_term_portable_expand_termstrip_cont_ -???J51 ?truemetatrue_ metacall??strip_contmetacall_ ? meta_interpreter? call_ifdef?user_errorno meta_interpreter for undefined goal? ?call_ifdefotherwise_truefalse_B?truecall_ifdef_ ? ?B??callcall_ifdef_ ? ?call=_ ? ?true->_ $bin_cut?call?? ?call;->->?? ? ?? ? ?if;_ ?call;_ ? ?callor_ ?callor_ ? ?callif_ $bin_cut?call?? ?callif_ ? ?call,_ call?? ?call\+_ $bin_cut?fail? ?call\+_ ?true\=_ ? ??B?true\=_ ?truehalt_0JU0truerepeat_truerepeat_repeatfindall_workhorse _??J$0 findall_store_heap?? ? ?callfindall_workhorse_ ? ?findall_load_heapfindall_ ? .?? . 0findall_workhorsefindall_ ? []findallfindall_conj_ ? truefindall_conjfindall_conj_ ? ,?? , 0findall_workhorsefindall_disj_ ? failfindall_disjfindall_disj_ ? ;?? ; 0findall_workhorsewhile_ if4?true4??3call?3,4?fail3$bin_cut? ? ?callskip_until_ if4?fail4??3call?3$bin_cut? ? ?callskip_when_ if4?failtrue?3call? ? ?callnth_answer_?1J0 ? ?s? has_fuel?skip_untiltake_at_most_ ? ?s? has_fuel?whiledrop_at_least_ ? ?s? has_fuel?skip_whenhas_fuel_1?J0?0J 0?1J01??J0 ?truefind_while_ while?? ? ? ? ?findallfind_at_most_ take_at_most?? ? ? ? ?findallall_but_at_least_ drop_at_least?? ? ? ? ?findallall _ findall4?4? ? share_vars ? ???3-? ?3call?  ? ?are_sharedare_shared _vars?? free_variables??[]?? [] ?free_variablesshare_vars[][][] ?trueshare_vars..??-?? ?.?? ?share_varsgc_read_ ? read? .?[] ?findallgc_read_clause_ ? read_clause? .?[] ?findallgc_call_ call? member??? ?findallfor_ ???J 0 ?truefor_??J 0?1J0forargn_ ?B????J1 ?trueargn _ for?1?arg???? ? ? ? ?functornumbervars$VAR$VAR? ? ???1J1truenumbervars_ ?B?? ? ? ?truenumbervars..??? numbervars???? ? ?numbervarsnumbervars_ numbervars0????? ? ? ?functornumbervars_ ? ?? ? ?truenumbervars _?1J0??J0 numbervars?????? ?  ?numbervarsground_ greater?0$bin_cut?fail? 0numbervarsground_ ?truecopy_term_0?J&1 ?truesave_term_1?J&1 ?trueflush_2J+0truesee_or_fail_0?J*0 ?trueexists_file_ seen? ?see_or_failsread_0?J.1 ?trueswrite_1?J.1 ?truesystem[][] ??truesystem..??? .?? shell?? ?namesystem_ ?B?shell._[] ?compileinclude_compilecompile_ compile_mem?abort? ?find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[] .46.46.47.115.114.99[] getenv_path4???3.112.114.111.103.115[] ?getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[] ?truefile_library..?[].?[].46?.112?.108[] .46.46.47.108.105.98.114.97.114.121[] ?getenv_pathgetenv_path _ ? ?.47[] unix_getenvBP_PATH? ,4 ? det_append ?? ?3 name? ? = ?[] det_append???det_append ???? ?  ?  ?ifmake_file_name _ ? member ?? name? ? det_append ? ? ? det_append? ? ? name? ?? ? ?memberstatistics_.??.?[] stat0???? ?stat_dictstatistics_ cwrite?cwrite=cwrite?cnlfail? ?statisticsstatistics_trueatom_ ?B??B? ?trueatom_ ?B? ?truefloat_ ?B? ? ?$float=? ?truenumber_ ?B?? ?truenumber_floatcompound_ ?B? atomic? ?\+=.._ ?B???J 1 ?true=.._?.[]J!1 ?trueterm2list_?.[]J!1 ?trueterm2dlist_?.?J!1 ?truedet_append_ ->????J%1 ?truedet_append_ -????J%1 ?trueappendN_ ? []appendNappendN[][] ? ?trueappendN ..?? ->???2?J%1appendNappend_body_ ? ?append_bodyappend_body _ det_append0??4 ? if4 ?4 ?4 ??3 compare0 ??=3 =??3 =..?.? . ? .?[]3 - ?? ? 2 ?functorappend_conj _ ? ,?? ,?? ?  ? trueappend_bodyappend_disj _ ? ;?? ;?? ?  ? failappend_body._.?? ?true++_ -[]???J%1 ?trueappend_ -???2?J%1 ?general_appendgeneral_append[][] ? ?truegeneral_append..??.??general_appendlength_ ? ? ?B?? 0 ?get_lengthlength_ ? ? 0 ?make_lengthget_length[][] ? ?trueget_length..???1J0get_lengthmake_length[][] ? ??truemake_length..????J 0?1J0make_lengthtab_ integer?$bin_cut?tab0?? ?exprtab_ ? ? in tab/1: should evaluate to an integer ?user_errortab0_ ? put32fail? ? 1fortab0_ ?trueget _ get0?or4?4?$bin_cut?=???3greater?323less?0 ?repeatis_ $bin_cut?=??? ? ? ?expris_ is?? error_in_is ?errmesexpr_ ?B?? ? ? ?trueexpr_ $bin_cut?=??? ?floatexpr_ ? ?B?? variable_in_is ?user_errorexpr _ $bin_cut?arg1??arg2??expr??expr??=..?4 ? call?$bin_cut??3 . ?.?.?.?[]  ? 2functorexpr _ arg1??expr??=..?4? call?$bin_cut??3.?.?.?[] ? 1functorcompare_??J1 ?true+_ ? ?true-_0?J1 ?true\_0?J1 ?true==_ = ???J1 ?true\==_??J0 ?$noteq@<_ < ???J1 ?true@>_ > ???J1 ?true@=<_??J0 ?$lesseq@>=_??J0 ?$gteq<_ expr??less??? ?expr>_ expr??greater??? ?expr=<_ expr??less_eq??? ?expr>=_ expr??greater_eq??? ?expr=:=_ expr??arith_eq??? ?expr=\=_ expr??arith_dif??? ?expr$lesseq<< ?true$lesseq== ?true$gteq>> ?true$gteq== ?true$noteq<< ?true$noteq>> ?truebb_def_ def???? ? ?savedbb_set_ set???? ? ?savedbb_val_??J0 ? ?copy_termbb_rm_??J0 ?truebb_change_arg _ let???change_arg???? ? ? ?savedbb_let_??J0?bb_setbb_let_bb_defbb_def_ ? ? ? ? ? ?bb_defbb_set_ ? ? ? ? ? ?bb_setbb_val_ ? ? ? ? ? ?bb_valbb_rm_ ? ? ? ?bb_rmbb_let_ ? ? ? ? ? ?bb_letbb_default_val_ ? $bin_cut??bb_valbb_default_val_ ? ?truesaved_ $bin_cut?=??? ?save_termsaved_ save_term??$bin_cut?=??? ?bb_gcsaved_ ? /saved2bb_failsaved_ abort?restartlet_???J0? ?truelet_???J0 ?truedef_???J0 ?trueset_???J0 ?trueval_??J1 ?truelet_ ? ? ? ? ? ?letrm_??J0 ?true#_J1 ?truedcg_phrase_ ? ? ? 1 ? ?dcg_phrasedcg_phrase _J90?J80?J60 dcg_val[]dcg_tell?? ? ?call:=:##?? ????J1true:=:_??J1 ?truebb_gc_31J'0 bb_resetbb_put_back?? ?copy_termbb_put_back[][] ?truebb_put_back ..??.??.??.??.? ? functor ???bb_put_1? ??bb_put_back ?? ?functorbb_put_1_ set???$bin_cut?=??? ? ?save_termbb_put_1_ +?? ? ?bb_failbb_fail _ .>?.?[] user_error4?4??3blackboard overflow, left only?3culprit? bboard ?statisticstry_float _.??.??integer?box??atom..??atom?? name ??input_float? ????try_float_exptry_float_.??integer?box?? ?truetry_float_exp..??atome $bin_cut?? ?try_float_exp1try_float_exp..??atom? ? .?[] ? ?.101[] .?? name??integer?$bin_cut?? ?nametry_float_exp_ ?0 ?truetry_float_exp1 ..??.??integer?box??atom- ? ??0?J1truetry_float_exp1 ..??.??integer?box??atom+ ? ? ?truefloat_minus_ $float000??J1 ?truepow_pow??J11 ?truelog_log??J11 ?truesqrt_pow? $float00267911168?J11 ?trueexp_exp?J21 ?truelog_log?J21 ?truesin_sin?J21 ?truecos_cos?J21 ?truetan_tan?J21 ?trueatan_T?J21 ?trueasin_S?J21 ?trueacos_C?J21 ?trueinteger_integer?J21 ?truefloat_ $float000??J1 ?truectime_ ? .?.>?[] runtimestatisticsis_predicate_ ?B?? ?trueis_predicate_ $bin_cut?? ?is_dynamicis_predicate_is_assumedpredicate_property_ ?B??predicate_property0predicate_property _ functor???predicate_property0??? ? ? ?generate_a_predicatepredicate_property0_ $bin_cut?or4?4??3=?dynamic3=?interpreted ?is_dynamicpredicate_property0_ $bin_cut?or4?4??3=?assumed3=?interpreted ?is_assumedpredicate_property0_built_in $bin_cut??is_builtinpredicate_property0_compiled ?B? ?truecurrent_predicate_ ?B?? functor??>?? ? ?is_predicatecurrent_predicate_ functor???? ?generate_a_predicatecurrent_predicate//?? ?B? ?B?? is_predicate?$bin_cut?? ?functorcurrent_predicate//?? ? ?generate_a_predicatepredicate_key0//$assumed0 ? ? ?B?truepredicate_key0_ ? ?/$first0truepredicate_key0 //predmark0predmark ?/??/???0J 0?1J1truegenerate_a_predicate _00J'0 =4??3+? ? predicate_key0? ??4??3/?? ? ?  ?bb_elementhelp_aproposapropos _ apropos?? sort??member??write?cnlfail? ?findallapropos_ ?trueapropos _-??/?? predicate_property ??functor ???name??near_match??? ?namenear_match_ ? ??truenear_match_ ? $bin_cut?? ? ?append3near_match _ ? append3?4??? $bin_cut??3.>?? ?append3append3_ append???? ? ?appendunix_cd_HOMEJI0?JK0trueunix_argv _ ? ?JG0?1J0 ,4?unix_argv??3for?1?findallunixargcargc? ?JG1trueunixargvargv?unix_argvunixgetenvgetenv?? ? unix_getenv?? errmesno such environment variable? trueifunixaccessaccess?? ???JJ0trueunixcdcd? ??JK0trueunixcdcd ?unix_cdunixkillkill?? ???JL0truebu0failfail?0in_body ?truebu0cwritecwrite=?1in_body ?truebu0cnlcnl?2in_body ?truebu0varvar=?3in_body ?truebu0nonvarnonvar=?4in_body ?truebu0integerinteger=?5in_body ?truebu0atomicatomic=?6in_body ?truebu0is_compiledis_compiled=?7in_body ?truebu0++=?in_body ?arith01truebu0--=?in_body ?arith11truebu0**=?in_body ?arith21truebu0modmod=?in_body ?arith31truebu0////=?in_body ?arith41truebu0//=?in_body ?arith51truebu0randomrandom=?in_body ?arith61truebu0get0get0=?in_body ?arith71truebu0putput=?in_body ?arith80truebu0lessless=?in_body ?arith90truebu0greatergreater=?in_body ?arith100truebu0less_eqless_eq=?in_body ?arith110truebu0greater_eqgreater_eq=?in_body ?arith120truebu0arith_eqarith_eq=?in_body ?arith130truebu0arith_difarith_dif=?in_body ?arith140truebu0<<<<=?in_body ?arith151truebu0>>>>=?in_body ?arith161truebu0/\/\=?in_body ?arith171truebu0\/\/=?in_body ?arith181truebu0##=?in_body ?arith191truebu0\\=?in_body ?arith201truebu0compare0compare0=?in_body ?arith211truebu0argarg=?in_body ?arith221truebu0setargsetarg=?in_body ?arith230truebu0change_argchange_arg=?in_body ?arith240truebu0defdef=?in_body ?arith250truebu0rmrm=?in_body ?arith260truebu0setset=?in_body ?arith270truebu0valval=?in_body ?arith281truebu0lvallval=?in_body ?arith291truebu0symcatsymcat=?in_body ?arith301truebu0dcg_connectdcg_connect=?in_body ?arith311truebu0list2termlist2term=?in_body ?arith321truebu0term2listterm2list=?in_body ?arith331truebu0self_infoself_info=?in_body ?arith341truebu0add_instradd_instr=?in_body ?arith350truebu0lift_heaplift_heap=?in_body ?arith360truebu0det_append0det_append0=?in_body ?arith371truebu0copy_termcopy_term=?in_body ?arith381truebu0bb_list0bb_list0=?in_body ?arith391truebu0older_fileolder_file=?in_body ?arith400truebu0seeing_tellingseeing_telling=?in_body ?arith411truebu0see_tellsee_tell=?in_body ?arith420truebu0seen_toldseen_told=?in_body ?arith430truebu0seeing_telling_atseeing_telling_at=?in_body ?arith441truebu0see_tell_atsee_tell_at=?in_body ?arith450truebu0string_opstring_op=?in_body ?arith461truebu0op0op0=?in_body ?arith470truebu0term_appendterm_append=?in_body ?arith481truebu0float_fun2float_fun2=?in_body ?arith491truebu0float_funfloat_fun=?in_body ?arith501truebu0input_floatinput_float=?in_body ?arith511truebu0write_floatwrite_float=?in_body ?arith520truebu0strip_cont0strip_cont0=?in_body ?arith531truebu0dcg_defdcg_def=?in_body ?arith540truebu0dcg_valdcg_val=?in_body ?arith551truebu0dcg_telldcg_tell=?in_body ?arith560truebu0dcg_tellingdcg_telling=?in_body ?arith571truebu0iso_open_streamiso_open_stream=?in_body ?arith581truebu0iso_close_streamiso_close_stream=?in_body ?arith590truebu0iso_write_termiso_write_term=?in_body ?arith600truebu0iso_read_termiso_read_term=?in_body ?arith611truebu0iso_put_byteiso_put_byte=?in_body ?arith620truebu0iso_get_byteiso_get_byte=?in_body ?arith631truebu0iso_peek_byteiso_peek_byte=?in_body ?arith641truebu0iso_eofiso_eof=?in_body ?arith650truebu0iso_lseekiso_lseek=?in_body ?arith661truebu0bb_putbb_put=?in_body ?arith670truebu0bb_getbb_get=?in_body ?arith681truebu0bb_opbb_op=?in_body ?arith691truebu0setrefsetref=?in_body ?arith700truebu0unix_argcunix_argc=?in_body ?arith711truebu0unix_argvunix_argv=?in_body ?arith721truebu0unix_getenvunix_getenv=?in_body ?arith731truebu0unix_accessunix_access=?in_body ?arith740truebu0unix_cdunix_cd=?in_body ?arith750truebu0unix_killunix_kill=?in_body ?arith760truebu0quietquiet=?in_body ?arith771truebu0create_enginecreate_engine=?in_body ?arith781truebu0destroy_enginedestroy_engine=?in_body ?arith790truebu0load_engineload_engine=?in_body ?arith800truebu0ask_engineask_engine=?in_body ?arith811truebu0multitask_enginesmultitask_engines=?in_body ?arith820truebu0suspend_enginesuspend_engine=?in_body ?arith830truebu0new_builtinnew_builtin=?in_body ?arith841truebu0halthalt=?in_body ?arith850truebu0truetrue?0in_head ?truebu0callcall=?1in_head ?truebu0abortabort?2in_head ?truebu0restartrestart?3in_head ?truebu0findall_store_heapfindall_store_heap=?4in_head ?truebu0findall_load_heapfindall_load_heap=?5in_head ?truebu0functorfunctor=?6in_head ?truebu0namename=?7in_head ?truebu0shellshell=?8in_head ?truebu0stat0stat0=?9in_head ?truebu0list_asmlist_asm=?10in_head ?truebu0bb_resetbb_reset?11in_head ?truebu0profileprofile?12in_head ?truebu0if0if0=?13in_head ?truebu_ctrn_inlinen_inline66 ?truebu_ctrn_arithn_arith74 ?truebu_ctrn_builtinn_builtin160 ?truebu_ctrn_nopn_nop174 ?truebu1!! ?truebu1..=? ?truebu1compilecompile? ?truebu1includeinclude? ?truebu1oror=? ?truebu1ifif=? ?truebu1strip_contstrip_cont=? ?truebu1termcattermcat=? ?truebu1add_contadd_cont=? ?truebu1asmasm ?truebu1asmasm? ?truebu1=..=..=? ?truebu1::-::-=? ?truebu1statisticsstatistics ?truebu1interactiveinteractive? ?truebu1metacallmetacall? ?truebu1metatruemetatrue? ?truebu1expand_termexpand_term=? ?truebu1===? ?truebu1->->=? ?truebu1;;=? ?truebu1,,=? ?truebu1repeatrepeat ?truebu1\+\+? ?truebu1\=\==? ?truebu1findall_workhorsefindall_workhorse=? ?truebu1findallfindall=? ?truebu1findallfindall=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_disjfindall_disj=? ?truebu1findall_disjfindall_disj=? ?truebu1allall=? ?truebu1whilewhile=? ?truebu1skip_untilskip_until=? ?truebu1skip_whenskip_when=? ?truebu1find_whilefind_while=? ?truebu1nth_answernth_answer=? ?truebu1take_at_mosttake_at_most=? ?truebu1drop_at_leastdrop_at_least=? ?truebu1has_fuelhas_fuel? ?truebu1find_at_mostfind_at_most=? ?truebu1all_but_at_leastall_but_at_least=? ?truebu1forfor=? ?truebu1argnargn=? ?truebu1appendappend=? ?truebu1membermember=? ?truebu1det_appenddet_append=? ?truebu1..=? ?truebu1++++=? ?truebu1lengthlength=? ?truebu1make_cmdmake_cmd=? ?truebu1numbervarsnumbervars=? ?truebu1gc_callgc_call? ?truebu1groundground? ?truebu1atomatom? ?truebu1floatfloat? ?truebu1numbernumber? ?truebu1compoundcompound? ?truebu1appendNappendN=? ?truebu1append_conjappend_conj=? ?truebu1append_disjappend_disj=? ?truebu1tabtab? ?truebu1getget? ?truebu1isis=? ?truebu1exprexpr=? ?truebu1comparecompare=? ?truebu1=====? ?truebu1\==\===? ?truebu1@<@<=? ?truebu1@>@>=? ?truebu1@=<@=<=? ?truebu1@>=@>==? ?truebu1<<=? ?truebu1>>=? ?truebu1=<=<=? ?truebu1>=>==? ?truebu1=:==:==? ?truebu1=\==\==? ?truebu1++=? ?truebu1--=? ?truebu1\\=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm=? ?truebu1bb_letbb_let=? ?truebu1bb_change_argbb_change_arg=? ?truebu1letlet=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm? ?truebu1bb_letbb_let=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1:=::=:=? ?truebu1##? ?truebu1powpow=? ?truebu1loglog=? ?truebu1sqrtsqrt=? ?truebu1expexp=? ?truebu1loglog=? ?truebu1sinsin=? ?truebu1coscos=? ?truebu1tantan=? ?truebu1asinasin=? ?truebu1atanatan=? ?truebu1acosacos=? ?truebu1integerinteger=? ?truebu1floatfloat=? ?truebu1statisticsstatistics=? ?truebu1predicate_propertypredicate_property=? ?truebu1current_predicatecurrent_predicate=? ?truebu1current_predicatecurrent_predicate? ?truebu1ctimectime? ?truebu1helphelp? ?truebu1aproposapropos? ?truebu1aproposapropos=? ?truebu1unixunix? ?truebu1systemsystem? ?truebu1meta_interpretermeta_interpreter? ?truebu1tracetrace? ?truebu1dynamicdynamic? ?truebu1assertaasserta? ?truebu1assertzassertz? ?truebu1assertassert? ?truebu1retractretract? ?truebu1retractallretractall? ?truebu1instanceinstance=? ?truebu1eraseerase? ?truebu1clauseclause=? ?truebu1abolishabolish=? ?truebu1debugdebug? ?truebu1consultconsult? ?truebu1reconsultreconsult? ?truebu1listinglisting ?truebu1listinglisting? ?truebu1listinglisting=? ?truebu1=>=>=? ?truebu1assumeiassumei? ?truebu1assumelassumel? ?truebu1assumedassumed? ?truebu1assumed_clauseassumed_clause=? ?truebu1assumed_clauseassumed_clause=? ?truebu1-:-:=? ?truebu1is_assumedis_assumed? ?truebu1is_dynamicis_dynamic? ?truebu1bbbb ?truebu1bbbb? ?truebu1bb_listbb_list? ?truebu1bb_elementbb_element=? ?truebu1sortsort=? ?truebu1keysortkeysort=? ?truebu1bagofbagof=? ?truebu1setofsetof=? ?truebu1^^=? ?truebu1free_variablesfree_variables=? ?truebu1notnot? ?truebu1term_charsterm_chars=? ?truebu1vars_ofvars_of=? ?truebu1user_erroruser_error=? ?truebu1errmeserrmes=? ?truebu1quietmesquietmes? ?truebu1mainmain ?truebu1mainmain? ?truebu1topleveltoplevel ?truebu1is_prologis_prolog? ?truebu1get_codeget_code? ?truebu1put_codeput_code? ?truebu1nlnl ?truebu1readread? ?truebu1read_termread_term=? ?truebu1top_read_termtop_read_term=? ?truebu1warn_singletonswarn_singletons=? ?truebu1read_with_singletonsread_with_singletons=? ?truebu1read_clauseread_clause? ?truebu1read_tokensread_tokens=? ?truebu1writewrite? ?truebu1printprint? ?truebu1writeqwriteq? ?truebu1portable_displayportable_display? ?truebu1displaydisplay? ?truebu1portrayportray? ?truebu1portray_clauseportray_clause? ?truebu1pp_clausepp_clause? ?truebu1pp_termpp_term? ?truebu1fast_writefast_write? ?truebu1ttyinttyin? ?truebu1ttyoutttyout? ?truebu1ttyputttyput? ?truebu1ttynlttynl ?truebu1ttyprinttyprin? ?truebu1ttyprintttyprint? ?truebu1ttycwritettycwrite? ?truebu1ttycwritelnttycwriteln? ?truebu1seesee? ?truebu1seeingseeing? ?truebu1seenseen ?truebu1telltell? ?truebu1tellingtelling? ?truebu1toldtold ?truebu1see_atsee_at? ?truebu1seeing_atseeing_at? ?truebu1tell_attell_at? ?truebu1telling_attelling_at? ?truebu1file_search_pathfile_search_path? ?truebu1file_extension_listfile_extension_list? ?truebu1file_libraryfile_library=? ?truebu1make_file_namemake_file_name=? ?truebu1find_filefind_file=? ?truebu1exists_fileexists_file? ?truebu1see_or_failsee_or_fail=? ?truebu1flushflush ?truebu1sreadsread=? ?truebu1swriteswrite=? ?truebu1bu0bu0=? ?truebu1bu1bu1? ?truebu1current_opcurrent_op=? ?truebu1opop=? ?truebu1is_builtinis_builtin? ?truebu1editedit=? ?truebu1my_editmy_edit? ?truebu1editedit ?truebu1eded ?truebu1textedittextedit ?truebu1emacsemacs ?truebu1picopico ?truebu1notepadnotepad ?truebu1vivi ?truebu1coco ?truebu1current_user_filecurrent_user_file? ?truebu1lsls ?truebu1dirdir ?truebu1make_applmake_appl? ?truebu1make_executable_unix_applmake_executable_unix_appl=? ?truebu1makemake ?truebu1makemake? ?truebu1makemake=? ?truebu1makemake=? ?truebu1makemake=? ?truebu1make0make0=? ?truebu1cmakecmake ?truebu1cmakecmake? ?truebu1cmakecmake=? ?truebu1kmakekmake ?truebu1kcmakekcmake ?truebu1tmaketmake ?truebu1tmaketmake? ?truebu1tmaketmake=? ?truebu1ctracectrace ?truebu1bootboot ?truebu1add_trueadd_true=? ?truebu1gc_readgc_read? ?truebu1gc_read_clausegc_read_clause? ?truebu1do_bodydo_body? ?truebu1tr_bodytr_body=? ?truebu1ith_clauseith_clause=? ?truebu1char_in_cmdchar_in_cmd=? ?truebu1show_code0show_code0=? ?truebu1bu_ctrbu_ctr=? ?truebu1patch_itpatch_it=? ?truebu1lwritelwrite? ?truebu1module_callmodule_call=? ?truebu1modulemodule? ?truebu1modulemodule=? ?truebu1is_moduleis_module? ?truebu1modulesmodules? ?truebu1current_modulecurrent_module? ?truebu1module_predicatemodule_predicate=? ?truebu1module_namemodule_name=? ?truebu1publicpublic? ?truebu1is_publicis_public? ?truebu1gensymgensym=? ?truebu1init_gensyminit_gensym? ?truebu1spy_goalspy_goal? ?truebu1spyspy? ?truebu1spyingspying? ?truebu1nospynospy? ?truebu1otherwiseotherwise ?truebu1falsefalse ?truebu1copy_termcopy_term=? ?truebu1phrasephrase=? ?truebu1phrasephrase=? ?truebu1nth_membernth_member=? ?truebu1member_imember_i=? ?truebu1savedsaved=? ?truebu1stat_dictstat_dict=? ?truebu1set_c_thresholdset_c_threshold? ?truebu1set_c_thresholdset_c_threshold=? ?truebu1set_c_traceset_c_trace? ?truebu1CC=? ?truebu1halthalt ?truebu1::=? ?truetry_dcg_expansion_ -->?? $bin_cut?? ? ? ?dcg_ruletry_dcg_expansion_ ? ? dcg expansion error-> ?errmesdcg_rule -->-->?? dcg_body???? dcg_conj ??? =?4 ??3 :-??  ?dcg_headdcg_head @@@@??true ?@@? ?? dcg_body? ????  ?dcg_bodydcg_head_true ? ? ?dcg_goaldcg_head ,,??? dcg_body????? ? ?  ?dcg_goaldcg_head_true ? ? ?dcg_goaldcg_goal_? +???J01 ?truedcg_body_ ?B?? ? ?phrase??? ?truedcg_body ,,??? dcg_body?? ?? dcg_conj ????  ?  ? ?dcg_bodydcg_body ->->??->??? dcg_body????? ?  ?dcg_bodydcg_body ;;??;??? dcg_disj?????  ?dcg_disjdcg_body{}{}? ? ? ??truedcg_body!!! ? ??truedcg_body[][]true ? ??truedcg_body ..??? dcg_body?? ?? dcg_conj ????  ?  ? ?dcg_termdcg_body_dcg_goaldcg_term_C??? ?truedcg_disj _ dcg_disj0?????? ? ?dcg_bodydcg_disj0 _ = ???J1? =?? ? ? ? ?dcg_conjdcg_disj0_ ? ? ?truedcg_conj_true ? ??truedcg_conj_dcg_CONJdcg_CONJtruetrue ? ??truedcg_CONJ,,??,???dcg_CONJdcg_CONJ_,?? ?trueC..?? ? ? ?truephrase_ ? []phrasephrase _ =??=?? call?? ? ?dcg_bodyportable_expand_term-->-->?? ? ?? ? ?try_dcg_expansionportable_expand_term-->>-->>??? ? ?try_edcg_expansion??? errmesexpected_to_expand?call_ifdefportable_expand_term_ ? ?truedefault_prologbinprologbinprolog ?truepeval_ioget_codeget_code? ?get0?truepeval_ioput_codeput_code? ?put?truepeval_ionlnlcnl ?truepeval_ioseeingseeing? ?seeing_telling0?truepeval_iotellingtelling? ?seeing_telling1?truepeval_ioseeing_atseeing_at? ?seeing_telling_at0?truepeval_iotelling_attelling_at? ?seeing_telling_at1?truepeval_iofast_writefast_write? ?cwrite?truefast_write_ ?B? ?trueget_code_J1 ?trueput_code_?J0 ?truenl_B?truesee_0?J*0? ?truesee_ ? ? unable_to_see ?user_errorseeing_0J)1 ?truetelling_1J)1 ?truetell_1?J*0? ?truetell_ ? ? unable_to_tell ?user_errorseen_0J+0truetold_1J+0truesee_at_0?J-0? ?truesee_at_ ? ? unable_to_see_at ?user_errortell_at_1?J-0? ?truetell_at_ ? ? unable_to_tell_at ?user_errorseeing_at_0J,1 ?truetelling_at_1J,1 ?truefind_file _ $bin_cut?file_search_path?file_extension_list?find_file1????? ?atomfind_file librarylibrary? $bin_cut?file_library??find_file1????? ?atomfind_file_ ? bad file name ?user_errorfind_file1 _ ? ? ? ? ?0J)0 ?  ?  ?  ?find_file2find_file2 _ $bin_cut? see?? ? ? ? ?see_a_filefind_file2_ findall ?4 ? ? findall ?4 ? ?errmes4?4??3file_not_found?3+4? ?3+ ??3 ,4 ? name ? ?3 member ??3 ,4 ? name ? ?3 member ?? ?seesee_a_file _ see_or_fail?seen? ?make_file_nameread_clause_ warn_singletons???? ?read_with_singletonsread_with_singletons_ singletons??? ?r_termwarn_singletons ..?? ? ?J M0 ?1J 0 .?? fail? ? ?warn_singletons1warn_singletons_ ?truewarn_singletons1:-:-? ??truewarn_singletons1_ :-?>? seeing_telling_at0 ? melt_varnames? ttyout4 ? $bin_cut??3 ,4 ? ,4 ? ,nl ,4 ? ,4 ?,4?,nlnl3cwrite:-...3 print?3 print=> 3 print ** warning singleton_variables, byte=> ?3 print? ? ?add_truemelt_varnames[][] ?truemelt_varnames..??var???melt_varnamesread_ ? ?r_termtop_read_term_read_termread_term_ r_vars??? ? ?r_termr_vars[][][] ?truer_vars..??var???.??=??r_varssingletons _ ? ? member4??3var?>?s0 ? ?findallprint_portable_printwrite_portable_writewriteq_portable_writeqttyin_0J)0 call?see?? user ?seettyout_1J)0 call?flushtell?? user ?tellttyprin_ write? ?ttyoutttyprint_ ,4?nl3write? ?ttyoutttycwrite_ cwrite? ?ttyoutttycwriteln_ ,4?nl3cwrite? ?ttyoutttynl_ ? nlttyoutttyput_ put? ?ttyoutdisplay_ portable_display? ?ttyoutr_term_ read_tokens??r_and_check??$bin_cut?=??? ?repeatr_and_check_ ? all_read?? 1200 ?rtr_and_check_ ?syntax_errorall_read[][] ??trueall_read_ ? ? .operator.expected.after.expression[] ?syntax_errorexpect_.??? ?trueexpect_ ? .?.or.operator.expected[] ?syntax_errorprefixop_ ? ? $bin_cut?? prefixop fy ?get_op0prefixop_ ? -?1?? prefixop fx ?get_op0postfixop_ ? ? $bin_cut?? postfixop yf ?get_op0postfixop_ ? -?1?? postfixop xf ?get_op0infixop _ ? ? $bin_cut? -?1?? infixop xfx ? ?get_op0infixop _ ? ? $bin_cut? -?1?? infixop xfy ? ?get_op0infixop _ ? ? -?1?? infixop yfx ? ?get_op0ambigop _ infixop????? ? ?  ?postfixoprt[][] ? .expression.expected[] []syntax_errorrt ..?? ? ? ? ? ?  ?  ?  ?rtsrtsvarvar??.(?? r_args ? ? ? $bin_cut? exprtl0 ?4 ?????3 apply?.? ? 999  ?  ?rtrts varvar?? ?? ?exprtl0rts atomatom-.??integer?box? ?0?J0?exprtl0rts atomatom-.? ?atom? float_minus?? $bin_cut? exprtl0 ??????floatrtsatomatom?.(?? r_args ? ? ? =.. ?4?$bin_cut?exprtl0 ? ?????3.?.? ? 999  ?  ?rtrts atomatom? $bin_cut? after_prefix_op? ? ??????  ?  ? ?prefixoprts atomatom? ?? ?exprtl0rts integerinteger?box?? ?? ?exprtl0rts[[.]?? []exprtl0rts [[ ?? r_list ? ? ? $bin_cut? exprtl0 ?4 ?????3 .? ? 999  ? ?rtrts (( ?? expect) ? ? $bin_cut? exprtl0 ? ????? 1200  ?  ? ?rtrts (((( ?? expect) ? ? $bin_cut? exprtl0 ? ????? 1200  ?  ? ?rtrts{{.}?? {}exprtl0rts {{ ?? expect} ? ? $bin_cut? exprtl0 ?4 ?????3 {}? 1200  ? ?rtrts stringstring? ?? ?exprtl0rts _ ? .? .cannot .start .an .expression[] ?syntax_errorr_args ..,?.??? $bin_cut? r_args ???? 999 ?  ?rtr_args..)?[] ? ??truer_args_ ? ? .,).expected.in.arguments[] ?syntax_errorr_list ..,?.??? $bin_cut? r_list ???? 999 ?  ?rtr_list ..|? ?? $bin_cut?expect]??? 999 ? ?rtr_list..]?[] ? ??truer_list_ ? ? .|].expected.in.list[] ?syntax_errorafter_prefix_op _ ???J 0? .prefix .operator .? .in .context .with .precedence .?[]  ? ?syntax_errorafter_prefix_op _ prefix_is_atom ?? exprtl ??????? ?  ?peepopafter_prefix_op_ =.. ?4 ? $bin_cut? exprtl ?? ?????3 .? . ?[] ? ?  ?  ?  ?rtpeepop ..??.(?atom? ?.??.(?atom??truepeepop ..??atom? ?.??infixop????infixoppeepop..??atom? ?.??postfixop???postfixoppeepop_ ? ?trueprefix_is_atom..??prefix_is_atomprefix_is_atominfixopinfixop??=? ???J 0trueprefix_is_atompostfixoppostfixop??? ???J 0trueprefix_is_atom)) ?trueprefix_is_atom]] ?trueprefix_is_atom}} ?trueprefix_is_atom|| ?1100?J 0trueprefix_is_atom,, ?1000?J 0trueprefix_is_atom[][] ?trueexprtl0..? ?atom? $bin_cut? or4 ?4 ??3 exprtl4 ?0????3 .4 ? ?3 infixop? ? ? ?3 exprtl4 ?0????3 .4 ? ?3 postfixop???  ?  ?  ?ambigopexprtl0 ..??atom? $bin_cut? exprtl4 ?0?????3 .4 ??3 infixop????  ?infixopexprtl0 ..??atom? $bin_cut? exprtl4 ?0?????3 .4 ??3 postfixop???  ?postfixopexprtl0 ..,??1000J 0? $bin_cut? exprtl ?10004 ?????3 ,?? 1000  ? ?rtexprtl0 ..|??1100J 0? $bin_cut? exprtl ?11004 ?????3 ;?? 1100  ? ?rtexprtl0 ..?? $bin_cut? syntax_error4 ?4 ??3 .? .follows .expression[]3 .??cant_follow_exprexprtl0_ ? ? ?truecant_follow_expratomatom?atom ?truecant_follow_exprvarvar=?variable ?truecant_follow_exprintegerinteger?integer ?truecant_follow_exprstringstring?string ?truecant_follow_expr((((bracket ?truecant_follow_expr((bracket ?truecant_follow_expr[[bracket ?truecant_follow_expr{{bracket ?trueexprtl..??infixop? ? ? ?? ?J 0? ?J 0? =.. ?4?exprtl? ? ?????3.?.?.?[]  ? ?  ?rtexprtl..? ?postfixop? ? ?? ?J 0? ?J 0? .?.?[] peepop ? ?exprtl ? ??????=..exprtl ..,??1000J 0?1000J 0? $bin_cut? exprtl ?10004 ?????3 ,?? 1000  ?  ?rtexprtl ..|??1100J 0?1100J 0? $bin_cut? exprtl ?11004 ?????3 ;?? 1100  ?  ?rtexprtl _ ? ? ?truesyntax_error_0J)00J,0 start_syntax_error???see?fail? user ?seestart_syntax_error _B? display?display_list?length??bb_letsyntax_errorlength?$bin_cut?? ** SYNTAX ERROR: byte= ?displaystart_syntax_error_ ?truesyntax_error_0J)0 finish_syntax_error?see?fail? user ?seefinish_syntax_error_syntax_errorlengthJ0 -???display_list??$bin_cut?? ?lengthdisplay_list..?? display_token?$bin_cut?display_list?? 32 ?ttyputdisplay_list[][] ?ttynldisplay_list_0 $bin_cut?display_list?99999?  displaydisplay_list ..?? ttyput32-?1?$bin_cut?display_list??? ?display_tokendisplay_list[][] ?ttynldisplay_tokenatomatom? $bin_cut?write_float?? ?floatdisplay_tokenatomatom??displaydisplay_tokenvarvar???displaydisplay_tokenintegerinteger?box???displaydisplay_token stringstring?? .?[] ? ?.34[] .?? .?[] name??display?? ?det_appenddisplay_token_displayread_tokens_ append?[]?$bin_cut?=??=??? 32 ? ?r_toksread_tokens..?[]atomend_of_file[] ?truer_toks-1-1 ??B?truer_toks_?32J 0?J0r_toksr_toks3737? get0?is_terminator?$bin_cut?arith_dif?-1get0?r_toks????repeatr_toks4747?J0r_solidusr_toks3333.??atom!?J0r_after_atomr_toks4040.((??J0r_toksr_toks4141.)??J0r_toksr_toks4444.,??J0r_toksr_toks5959.??atom;?J0r_toksr_toks9191.[??J0r_toksr_toks9393.]??J0r_toksr_toks123123.{??J0r_toksr_toks124124.|??J0r_toksr_toks125125.}??J0r_toksr_toks4646?J0r_fullstopr_toks3434.??string?? r_toks???? 34 ?r_stringr_toks 3939.??atom?? name??r_after_atom???? 39 ?r_stringr_toks_.??var?? $bin_cut? r_name? ? ? or4 ?4 ?$bin_cut?r_toks ????3 ,4 ?=?_3 = ? .95[]3 ,4 ? ,4 ?r_lookup????3 name? ?3 = ? .?>?  ?is_majr_toks _ $bin_cut?r_integer??? ? r_toks??? try_float ????? ?is_numr_toks _.??atom? $bin_cut? r_name? ? ? name? ? r_after_atom ???? ?is_minr_toks _.??atom?J0 name?4? r_after_atom????3.?? ?  ?r_symbolr_after_atom4040.(??J0r_toksr_after_atom_r_toksr_string _ ? ? ? ?J0 ? ?  ?r_stringr_string-1-1-1 ttyput?displaytokenttyput?ttynl$bin_cut?fail? ! end of file in: displayr_string _ ? ? ??J0 ? ?more_stringr_string_.?? ? ? ?r_stringmore_string_ ? ?.??? ? ? ?r_stringmore_string_[] ? ?truepatch_slash..((? ?.(??truepatch_slash_ ? ?truer_solidus4242?J0 r_toks???? ? ?r_solidusr_solidus _.??atom? name?4? r_toks?? ? patch_slash ???3.47? ?r_symbolr_solidus-1-1-1? ttynl? ! end_of_file in /*.. commentdisplayr_solidus4242J0?47J0?r_solidusr_solidus424232 ??truer_solidus_J0r_solidusr_name _.?? $bin_cut?get0?r_name????is_alpha_numr_name_[] ? ?truer_symbol _.?? get0?r_symbol????is_specr_symbol_[] ? ?truer_fullstop-1-1? ttynlfail? ! end_of_file just after full_stopdisplayr_fullstop_[]?32J 0? ?truer_fullstop _.??atom? name?4? r_toks????3.46? ?r_symbolr_integer _ ? ??48J0J 0 . ?[] ? ? .46[] =?4 ??3 . ? .??  ? ?  ?r_intr_int -1-1 ??B?truer_int 39390 ?.39?.?[]?J1?-1J0J1truer_int 3939 $bin_cut?? 0 ?r_digitsr_int _ ? ? ? ? 10  ?  ?  ?r_digsr_digits_ ? ? ? ? ? ?J0?-1J0 ?  ?  ?  ?  ?r_digsr_digs _.? ??48J 0?57J 0???J 0 ?48J 0 ??J0 ? ? ?  ? ?r_digitsr_digs _ ? ?[] ?truer_lookup ..??var??? ? ? ??r_varcountr_lookup..??r_lookupr_varcount_ .?[] ? ?.95[]? ? ?s1 ?truer_varcount_ ?B?? ? ?s? ?truer_varcountss1 ?trueis_alpha_num_?97J 0?122J 0 ?trueis_alpha_num_?65J 0?90J 0 ?trueis_alpha_num_?48J 0?57J 0 ?trueis_alpha_num9595 ?trueis_alpha_num_is_latin1_minis_alpha_num_is_latin1_majis_maj_?65J 0?90J 0 ?trueis_maj9595 ?trueis_maj_is_latin1_majis_min_?97J 0?122J 0 ?trueis_min_is_latin1_minis_num_?48J 0?57J 0 ?trueis_latin1_maj_?192J 0?214J 0 ?trueis_latin1_maj_?216J 0?222J 0 ?trueis_latin1_min_?223J 0?246J 0 ?trueis_latin1_min_?248J 0?255J 0 ?trueis_terminator1010 ?trueis_terminator1313 ?trueis_terminator-1-1 ?trueis_spec3535 ?trueis_spec3636 ?trueis_spec3838 ?trueis_spec4242 ?trueis_spec4343 ?trueis_spec4545 ?trueis_spec4646 ?trueis_spec4747 ?trueis_spec5858 ?trueis_spec6060 ?trueis_spec6161 ?trueis_spec6262 ?trueis_spec6363 ?trueis_spec6464 ?trueis_spec9292 ?trueis_spec9494 ?trueis_spec9696 ?trueis_spec126126 ?trueportable_display_ ? displayw_outportable_print_ ? printw_outportable_write_ ? writew_outportable_writeq_ ? writeqw_outw_out_ fail? 1200 punct ?w_outw_out_ ?truemaybe_paren _punct??J 0??J0 ?truemaybe_paren_ ? ?truemaybe_spacepunctpunct ??truemaybe_space_ ? ??32J0truemaybe_spacequotequotealpha ??32J0truemaybe_space_ ?trueput_string[][] ?trueput_string..???J0put_stringput_string[][] ??J0trueput_string..?? ???J0?J0 ?put_stringput_string..???J0put_stringw_variable_ ?B? ?trueportray_writew_out _alpha ?B?? w_variable?? ? alphamaybe_spacew_out$VAR$VAR? ? ? ??w_VARw_out _alpha ?B? ,4 ? maybe_space?other3 less?0 maybe_space?alpha $bin_cut? cwrite?? ?orw_out_printalpha $bin_cut??portrayw_out _punct current_op ?>?? greater ?? $bin_cut? put40 or4 ?4 ? $bin_cut? put41?3 ,4 ? w_atom??punct>?3 =?writeq3 cwrite? ?atomw_out _ $bin_cut? w_atom????? ?atomw_out _displaypunct? w_atom?display?>? w_args0??40display? ?functorw_out {}{}?punct?123J0 put125? 1200 punct ? ?w_outw_out ..??punct?91J 0 w_tail??? 999 punct ?  ?w_outw_out ,,??? w_out??999?>? put44 w_out??1000punct? maybe_paren1000?41??? 1000 ? 40 ?  ?maybe_parenw_out _alpha or4?4 ? $bin_cut? write_float??3,4? maybe_space?other3less?03 maybe_space?alphafloatw_out _ w_out ? ???????  ?  ? ?functorw_out11 ,4 ? - ?1 ?3 current_op ?fx? ,4 ?= ? ?3 current_op ?fy? $bin_cut?maybe_paren ??40??w_atom????arg1??w_out?? ??? maybe_paren ??41???  ?  ?orw_out11 ,4 ? - ?1 ?3 current_op ?xf? ,4 ?= ? ?3 current_op ?yf? $bin_cut?maybe_paren ??40??arg1??w_out?? ??? w_atom???? maybe_paren ??41???  ?  ?orw_out22 ,4 ? ,4 ? = ? ?3 - ?1 ?3 current_op ?xfy? or4?,4?,4?= ? ?3- ?1 ?3current_op ?yfx?3,4?,4?= ? ?3- ?1 ?3current_op ?xfx? $bin_cut?maybe_paren ??40??arg1??w_out?? ??? w_oper? ???? arg2? ?w_out ?? ??? maybe_paren ??41???  ? ?orw_out _punct w_args0??40?? ? ? ? ?w_atomw_oper _?700J 0? ? ? ? ?w_atomw_oper _ ?punct32J0 put32? punct ?w_atomw_VAR _alpha ?B??0J 0? mod?26? +?65? put?or4?4 ? $bin_cut??3less?263 ,4 ?cwrite?3 //?26? ? alpha ?maybe_spacew_VAR_ $bin_cut?w_atom?write???atomw_VAR _punct w_args014?40??3$VAR? $VAR ? ?w_atomw_atom!!punct ??33J0truew_atom;;punct ??59J0truew_atom[][]punct ??91J093J0truew_atom{}{}punct ??123J0125J0truew_atom..writeqquote ?? .39.46.39[]put_stringw_atom_ or4?4 ? $bin_cut??3,4? ,4 ? put_string ?3 maybe_space??3classify_name ??3 or4 ?,4? put_string ?3=?alpha3 ,4 ?,4? ,4 ? ,4 ? put_string ?393 put393 maybe_space??3=?quote3 =?writeq  ? ?nameclassify_name..??alpha $bin_cut?classify_alpha_tail??is_minclassify_name..??other classify_other_tail??is_specclassify_alpha_tail[][] ?trueclassify_alpha_tail..?? classify_alpha_tail?? ?is_alpha_numclassify_other_tail[][] ?trueclassify_other_tail..?? classify_other_tail?? ?is_specw_args _ ? ??41J0truew_args _?J0?1J0??J0 w_args???44?? ? 999 punct ?  ?w_outw_tail_ ?B??124J0 put93?w_variablew_tail[][] ??93J0truew_tail ..???44J 0 w_tail??? 999 punct ?w_outw_tail _124J0 put93? 999 punct ?w_outpp_term_ write?cnlfail? 0 ?numbervarspp_term_ ?truepp_clause_portray_clauseportray_clause_ fail? ?pp_clause0portray_clause_ ?truepp_clause0:-:-??B? l_clauses?028? 0 ?numbervarspp_clause0:-:-?? +?? portable_writeq?l_clauses?028$bin_cut?? 0 ?numbervarspp_clause0_ :-?true ?pp_clause0l_clauses ,,??? $bin_cut? l_clauses?1??? 1 ?l_clausesl_clauses truetrue2 ?? .?[] ? ?.46[]?J0B?truel_clauses ;;??? l_magic4 ?02? l_magic_nl?.?3 ;?? fail ?  ?l_magicl_clauses ->->??? $bin_cut? l_clauses?5??? 5 ?l_clausesl_clauses _ portable_writeq?l_magic_nl?.? ? ?l_magicl_magic!!0 ?? :- B?truel_magic!!1 ?? , B?truel_magic_0 ? ?? :- B?B?tabl_magic_1 ? ?? .?[] ? ?.44[]?J0B?tabl_magic_3 ?? ( B?truel_magic_4 ?? ; B?truel_magic_5 ? ?? ->B?B?tabl_magic_ ? cwrite:- cwrite?cnltab??atoml_magic_nl22 ?? ?B?B?truel_magic_nl_ ?truel_magic ;;??? $bin_cut? l_magic?1??? 1 ?l_magicl_magic _?8J0?3J0 cnl tab? l_magic2?)? 1 ? ?l_clausesl_magic222 ?? ?B?truel_magic2_ ?truecompile_binary_cc_bincompcompile_builtins_cc_builtinscc_must_have_builtinswamwam ?truecc_must_have_builtinscc wam.hc_chunk_filecc_builtins_ bin_builtin?cc_bincomp??fail? ?cc_must_have_builtinscc_builtins_ ?truecc_bincompbinbin ?? fail?portray_clausecc_bincompasmasm cnlportray_clause?cnlfail? BINARY: ?writecc_bincomp_ cc_compile_clause??gg_emit??$bin_cut?? ?newpredcc_bincomp_ failing_to_compile_clause? ?errmesbin_builtin:-:-??true?$bin_cut??cutpbin_builtin_ bu_body???? ? ?bubu_bodyin_headin_head ?:-??true? arg???? ? ?functorbu_bodyin_bodyin_body ?:-??truecc_compile_clause_ ?.??.??.?[]cc_clausefirstarg_1?J0classif_firstclassif_first_ ?B?? ? ?/?0 ?trueclassif_first_ ?B?? ? ?/_0 ?trueclassif_first_ ?/??functorcc_clause_.??.?[]iifirstarg?? ?iiclause?? ?. ?[] iiexecute? ? ? :-?? firstarg??cc_h_b?4??4?getput?max ? ??+?1?vars??functor?dict?fill_info??collapse_args?1?allocate_regs?4?4??3-4?[]3/??3-4?>?3/? ?3/? ?3/ ? ?  ?add_truecc_h_b_/ ? ?/ ? ? / ? ? -4 ??3 /? ? -4??3/?? cc_b?4?4?4?$bin_cut??3/ ? ?3-4??3/??3-4?[]3/? ?  ?cc_hbegin_chunk _ ? iic_chunk>?4??3len? hidden_var4 ? ???3 +?? ?  ?emitend_chunk _ ? iic_chunk>?4??3len? hidden_var4 ? ???3 +?? ?  ?emitemit_-??.??-?? ?trueget_mode_ ? ? ?-??/?? ?trueset_mode _-??/??-??/?? ?truehidden_var_ ? ? ?-??/?? ?truecc_h_cc_h0cc_b _ end_chunk??? ? ?cc_b0cc_h0 _/?? $bin_cut? functor???arg???emit4?? ? begin_chunk ???3iibuiltin??? in_head  ?bucc_h0 _/?? greater?0 $bin_cut? functor ??? emit_head_top_term?? ???? ? ?functorcc_h0_ ? ? ? unexpected_head_atom ?errmesemit_head_top_term_ ? ? ? cc_top_arg11 ? ? ? ?begin_chunk ? ?emit_top_args2? ? ? ? ?cc_top_arg2? ? ? ??? 1 1  ?  ?  ?  ?emit_top_argscc_b0_ ?B?? true? ?cc_b0cc_b0truetrue ? ?/true0?truecc_b0 $bin_cut$bin_cut??? iiput>?4 ??3 cutarg1 cc_b0????? ? ?  ?emitcc_b0 ==???? cc_b0????? ? ?  ?cc_eqcc_b0 _ $bin_cut?cc_builtin?????? ? in_body ?bucc_b0 _/?? greater?0 $bin_cut? functor ??? emit_body_top_term?? ???? ? ?functorcc_b0_ ? ? ? unexpected_body_atom ?errmesemit_body_top_term _ ? ? ? $bin_cut? emit_top_args1? ?? ??? 1 ?  ?  ?  ?cc_top_argcc_eq _ ? ? ?B? ?B?? ?cc_eq1cc_eq_cc_eq1cc_eq1_ =?? emit4 ? ? ? emit4 ? ? ?set_modeget ? ?cc_top_t4? ? ?set_modeput ???3=??3 iiget>?4 ??3 temp03 iiput>?4 ??3 temp0 ? ?  ?  ?cc_top_tout_reg000 ?trueout_reg11 ? ?truecc_builtinaritharith?? ?? arg ?? ? - ?1 ?arg ???out_reg???- ?? ?functor?? ?handle_constant_res?4???emit_top_bargs1 ?????emit4??? cc_b0 ?????3iiarith>???3=??  ?  ?functorcc_builtin_ - ?1 ? arg ?? ? arg1? ? cc_b_args ? ?? ? emit4 ? ? ? cc_b0 ?? ???3 iiinline>??>? ? ?  ? ?functorhandle_constant_res00 ? ??truehandle_constant_res 11 ? ?=?? ?B ?? ? ?truehandle_constant_res 11=?? ?B ?? iiput>?4 ??3 temp0 emit4? ???3iiget>?4??3temp0 ?  ?  ?emithandle_constant_res 11=??? =?? ? ? ?cc_top_tclassif_load _ ? ?B?? ? ? ?trueclassif_load _constant ? ?B?? ? ? ?trueclassif_load _ ? =?? ? ? ?cc_top_tcc_b_args00 ? ?truecc_b_args 11 =?? emit4 ? ???3 iiput>?4 ??3 temp0 ?  ? ?cc_top_temit_top_bargs _ ???J 0? ?trueemit_top_bargs_??J 0?1J 0??J 0??J 0 emit4 ???emit_top_bargs ???????3 iiload?? ?  ?  ? ? ?  ?classif_loademit_top_bargs _??J 0??J 0??J 0? = ? ? +?1 ? emit_top_bargs ???????  ? ?  ?cc_top_temit_top_args _ ???J 0? ?trueemit_top_args_??J 0??J 0??J 0 $bin_cut? get_mode ?? ?emit4? ? ?+?1?emit_top_args???? ???3ii ??4 ? ?3 arg?  ?  ?  ?classif_argcc_top_arg _ ???J 0? ?truecc_top_arg _??J 0??J 0??J 0?1J 0? = ? ? cc_top_arg ??????? ?  ?cc_top_tcc_top_t ==?? ? ? ?B?? ? ?truecc_top_t ==?? ? ? ?B?? ? ?truecc_top_t ==?? greater?0 $bin_cut? functor ? ?? emit_top_structure? ??? ??? cc_args? ?????  ? ? ?functoremit_top_structure_ emit4 ? ? ?emit_args??? ???3 ii ?structure4 ??3 /??  ? ?  ?  ?get_modecc_arg _ ???J 0? ?truecc_arg _??J 0??J 0??J 0?1J 0? = ? ? cc_arg ??????? ?  ?cc_tcc_t ==?? ? ? ?B?? ? ?truecc_t ==?? ? ? ?B?? ? ?truecc_t ==?? greater?0 $bin_cut? functor ? ?? emit_structure? ??? ??? cc_args? ?????  ? ? ?functorcc_args _?1J 0??1J0??J 0??J 0 = ? ? cc_arg1?????? ?  ?cc_tcc_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?cc_argemit_structure_ deep_structure_op ? ? emit4 ???emit_args??????3 ii ?structure4 ??3 /??  ? ? ?  ?get_modeemit_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?emit_args0emit_args0 _ ???J 0? ?trueemit_args0_??J 0??J 0??J 0 $bin_cut? get_mode ?? ?emit4? ? ?unify_op ? ??+?1?emit_args0???? ???3ii?? ? ?  ?  ?  ?classif_argunify_opgetgetunify ?trueunify_opputput ? ? ?deep_var_opdeep_var_op_push $bin_cut??compounddeep_var_op_write ?truedeep_structure_opgetgetget ?truedeep_structure_opputputpush ?trueclassif_arg_ ?B?? ? ? ?trueclassif_arg_constant ?B?? ? ? ?trueclassif_arg_ ?truemax_??J 0? ? ? ?truemax_ ? ?trueadd_true:-:-?? ?:-???trueadd_true_:-?true ?truevars_ call?? ? truefind_occurrencesfind_occurrences[][][] ? ?truefind_occurrences ..??ii?? ??. ? ? ii?? ?? find_occurrences? ? ???  ?  ?occurrenceoccurrence_ ? ? ?B?? ?trueoccurrence _ ? ? ?var ?? ?B ?? ? ? $OCC ?? 1 ?  ?newvaroccurrence$OCC$OCC?? ? ?var???oldvaroccurrence _ ? ? at4? =occ?3=var? bad_occurrence ?errmesoldvar_/?? ? ?=???1J11??J0 ?truenewvar _,?? ? ? =?? ? ? /?? ?truefill_info_ ? 0 ?fill_alltpoint_ ??1J1 ?truefill_all[][] ? ?truefill_all ..?? fill_one??? ? fill_all?? ??? ?fill_var_typefill_var_typeiiii????var?? ? ?B?? ?get_var_typefill_var_type_ ?trueget_var_type//11unifyvoid ??trueget_var_type//11writevoid ??trueget_var_type//1?variable ??trueget_var_type//??value ???J 0?truefill_one iiii?constant??arg?? mark_arg???4???3var4?/113->?/?? ? ?  ?tpointfill_oneiiii?constant=? ? ? ?? ?tpointfill_one iiii????arg?? mark_arg?????mark_var??? ? ?  ?tpointfill_one iiii=??var?? ? ?? mark_var?4 ??3 var??tpointmark_arg getget ? -4 ? /?>?3 *?>???J1truemark_arg putput ? -4 ? />??3 *>????J1truemark_var_var??/11-??/??? ?truemark_var_var??/1?-??/??1?J 0? ?truemark_var_var??/??-??/??1?J 0? ?truemark_var_ ?var??/=?-??/=?truecollapse_args_ ???J 0?truecollapse_args _??J 0??J0 +?1? collapse_args???? ? ? ?collapse_themdefault//?? set_to99999?? 0 ?set_toset_to_ ? ??trueset_to_ ?truecollapse_them _-??*??var??-??var? ?-? ? default? default? check_lifetimes4 ?4 ?4 ??3 -? ?3 -??3 -??  ?defaultcheck_lifetimes--??-??-?? check_var_var??check_var_arg??$bin_cut??check_var_argcheck_lifetimes--??-?? $bin_cut??check_var_argcheck_lifetimes_-??-?? $bin_cut??check_var_argcheck_lifetimes_ ?truecheck_var_var//?? ?/????J 0?truecheck_var_var//?? ?/????J 0truecheck_var_arg //?? ?/????J 0??J 0trueallocate_regs[][] ? ??trueallocate_regs..?? allocate_regs???? ? ?allocate1allocate1 iiii=??var??-?? ? ? $bin_cut?? ? ?  ?allocate_regallocate1_ ? ?trueallocate_reg _/11 ?B?? free_reg???? ? ? ?get_regallocate_reg _/1? ?B?1?J 0? ? ? ?get_regallocate_reg_/??1?J 0? ? ? ?free_regfree_reg _-??/??- ? ? .?? /????J 0? ?truefree_reg_ ? ?trueget_reg _-??.??/??- ?? /??? ?trueget_reg _-??/??-??/???1J1 ?truemdef_to_def:-:-??:-?? repl_body??? ?hide_atommdef_to_def:-:-?:-? $bin_cut?call?fail? ?repl_bodyrepl_body_call? ?B?? ?truerepl_body_ $bin_cut?? ?repl_macrorepl_body_ $bin_cut?strip_nil??? ? ?split_oprepl_body_ peval_io??$bin_cut?? binprolog ?is_prologrepl_body_ $bin_cut?=?4?ttyprint4??3spying_on?3spy_goal? ?spyingrepl_body_hide_atomis_prolog_ $bin_cut?=??? is prologbb_valis_prolog_default_prologcutp_ ? .36.99.117.116[]namerepl_macro!!$bin_cut? ?cutprepl_macrovarvar? ?B? var?repl_knownrepl_macrononvarnonvar? ?B? nonvar?repl_knownrepl_macroatomicatomic? ?B? atomic?repl_knownrepl_macrofloatfloat? ?B? float?repl_knownrepl_macroatomicatomic? ?B? atomic?repl_knownrepl_macro,,?? ? ? ? ?repl_conjrepl_macro;;?? ? ? ? ?repl_disjrepl_macro->->??->?? repl_body??? ?repl_bodyrepl_macrocomparecompare??? ?compare0???truerepl_macro====?? ?compare0??=truerepl_macro@<@<?? ?compare0??<truerepl_macro@>@>?? ?compare0??>truerepl_macro:=::=:?? ?lval???repl_lvalrepl_macro##? ?dcg_connect?truerepl_macro::?? ?module_call??truerepl_macrofindallfindall???findall???repl_bodyrepl_macrobagofbagof???bagof???repl_bodyrepl_macrosetofsetof???setof???repl_bodyrepl_macroallall???setof???repl_bodyrepl_macro^^??^??repl_bodyrepl_macrocallcall?repl_bodyrepl_macro\+\+?\+?repl_bodyrepl_macronotnot?not?repl_bodyrepl_conj _ ?B? $bin_cut?repl_body??app_body???? ?split_oprepl_conj_,?? repl_body??? ?repl_bodyrepl_disj _if??? ?B ? ? ? ->? ?? repl_body ??repl_body??? ?repl_bodyrepl_disj_or?? repl_body??? ?repl_bodyrepl_lval##?? ? ? ??truerepl_lval_ ? ? ?truerepl_known_true $bin_cut??callrepl_known_fail ?truesplit_opisis?? ? ? ? ?split_is_relsplit_op <<?? ? ? less ? ?split_relsplit_op >>?? ? ? greater ? ?split_relsplit_op =<=<?? ? ? less_eq ? ?split_relsplit_op >=>=?? ? ? greater_eq ? ?split_relsplit_op =:==:=?? ? ? arith_eq ? ?split_relsplit_op =\==\=?? ? ? arith_dif ? ?split_relsplit_is_rel_.?[]expr?? ?B?? ?truesplit_is_rel_.?[]+?0? ?B?? ?truesplit_is_rel_.?[]+?0? $bin_cut?? ? ?floatsplit_is_rel _.?[]+?0? ground?$bin_cut?expr??? binprolog ?is_prologsplit_is_rel_ ? []split_isapp_body[][] ? ??trueapp_body..??,??app_bodystrip_nil..?[] ? ??truestrip_nil..??,??strip_nilsplit_rel_ ? []split_rel_1split_rel_1_ split_is ?? ? ? =.. ?4 ?emit_is ? ???3 .? .? . ?[] ?  ? ?split_issplit_is_ ? ?B?? ? ? ?truesplit_is_ ? ?B?? ? ? ?truesplit_is _ ? $bin_cut?=??? ? ?floatsplit_is_ .? . ? . ?[] $bin_cut? split_is ? ?? ? split_is ? ? ? ? =.. ?4?emit_is ? ???3.?. ? . ? .?[] ? ?  ?=..split_is_ .? . ?[] split_is ? ?? ? =.. ?4 ?emit_is ? ???3 .?. ? .?[] ? ?  ?=..emit_is_.?? ?truedef_to_mbin:-:-?? ? ?? ? ?def_to_mbin0def_to_mbin_ ? ? true ?def_to_mbin0def_to_mbin0 @@@@??:-?? ?B?? add_upper_cont????? ?termcatdef_to_mbin0_:-?? add_cont???? ?termcatadd_upper_cont _ ?B?? add_cont???? ? ? ?add_contadd_upper_cont _ ,4??3strip_cont??? ? ? ?add_contadd_cont,,true??add_contadd_cont,,fail? ?fail??trueadd_cont,,??? term_append?4???3cont? ?add_contadd_cont_? cont??J01 ?truetermcat_? cont??J01 ?trueshow_code _ show_code0?? length? ? write4 ? cnl nth_member?? ? show_instr ?? fail?3 BRUT WAM-ASSEMBLER:4 ? =length ?3 =mode? ? ? ?findallshow_code _B? POST TERM-COMPRESSION CODE:=mode? cnlmc_all_instr??nth_member??? show_instr??fail? ? ?writeshow_code_B? FINAL CODE:=mode? cnlgen_code??fail? ? ?writeshow_code_ ?B?trueshow_code0_ ? member??show_or_skip?? ? ?membershow_or_skipiiiigetvariable??var??-??arg? ??B?trueshow_or_skipiiiiputvalue??var??-??arg? ??B?trueshow_or_skip_ ?trueshow_instr _ ? ?ii???? .?[] write  write?write_write?write show_fun?show_info?cnl?  ?writeshow_funputput ??trueshow_fungetget ??trueshow_fun_writeshow_info_ ? ?var??-??? write4?put9put9put9write% write??3var?  ?writeshow_info_ write??  ?writeshow_steps asmasm ,cnl,4?,4?,cnl,4? ,cnlfail3portray_clause?3writeEXPANDED:3\==?? ,4?,cnl,4?,cnlfail3portray_clause?3writeDEFINITE: ?orshow_steps_ ?truebind_c_chunk_lengthwamwam ? ??truebind_c_chunk_lengthmemmem ? ??truebind_c_chunk_length _ ? ? ? ? ? 0 []bind_lengthbind_length [][] ? ?truebind_length..? ? ? ? ? ? ? ?  ?  ?  ?  ? ? ?make_anti_callmake_anti_call iiii ? ? ? ? ?c_chunk_variable? ii ?4 ? ?3 len? =?? bind_length???????  ?  ?Cmake_anti_call iiii ? ? ? ? ?c_chunk_value? ii ?4 ? ?3 len? -??? bind_length?>?0???  ?  ?Cmake_anti_call_ ?B ? ? ? ii ? ? ? $bin_cut?-???C?4??C???bind_length4?>?0???3.4??3iic_chunk_variable>?03iic_chunk_value4?03len?  ?  ?  ?  ?antigenicmake_anti_call _ ? ??1J 0 bind_length??? ????  ?  ?Cgen_code _ bind_c_chunk_length???member??write_instr???=?no$bin_cut?fail? ? ? ?mc_all_instrgen_code_ ?truemaxarity256256 ?truetemparg_ ? ?truegen_instr iiii???? ? $bin_cut?? ? ?beautifywrite_instr iiii?? ? ? $bin_cut? =?yes? ? ? ?  ?encodewrite_instr_no ?truemc_all_instr_ ? ? mc_one_instr?? ?findallmc_one_instr _ ? mc_peephole??instr_cat??? ? ?memberinstr_cat iiii???? ?ii ?????J 1truebeautifyargarg??encode_argbeautify temptemp?? encode_arg ??????  ? ?tempargbeautifycutargcutarg??encode_argbeautify _ ? ? ?var ? ? -? ?? ?encode2beautify putputwriteconstant ? $bin_cut?encode2pushcut????cutpbeautify _ ? ? ? ?encode2encode_arg _getvariableempty_opvar? ?-??? ?trueencode_arg _putvalueempty_opvar? ?-??? ?trueencode_arg _ ? ? ?var ? ? -? ?? ?encode2encode_arg 11constant ? $bin_cut? encode2?cut???? ?cutpencode_arg _ ? ?constant ? constant ?encode2encode2_ii???? ?truemc_peephole_mc_topmc_input_mc_input0mc_input0 _.?? mc_empty????? ? ?gen_instrmc_emptyempty_opempty_op ? ? ? ??mc_input0mc_empty_ ? ? ?truemc_top_ ? mc0???? ? ?mc_inputmc0 _ mc1?????? ? ? ? ?op_typemc1 pushpushvariable ? ? $bin_cut? mc5???? ?mc_pushmc1 c_chunkc_chunkvariable ? ?? mc5???? ?mc_chunkmc1 _void ?? mc3????? 1 ?mc_selmc1_ ? ? ? ?mc5mc_push _ ? ? op_type?pushstructure mc_transform_push?? ? $bin_cut? =? ?? ? ?  ?mc_inputmc_push_ ? ? ?truemc_chunk _ ? op_type?c_chunkvalue $bin_cut? mc_input???? ? ?mc_inputmc_chunk_ ? ? ?truemc_sel _ ? op_type?>?void $bin_cut? +?1 ? mc_sel?? ??? ? ?mc_inputmc_sel_ ? ? ?truemc3_ ? ? ?mc4mc3 _ ? mc0???? ? ?mc_inputmc4_ $bin_cut?? ?mc_transform_voidmc411 ? ?truemc5_ ? ?truemc5 _ ? mc0???? ? ? ?mc_inputop_typeiiii??=? ?? ? ? ? ?trueop_type_ ? ? expected/ii4 ?errmesmc_transform_void11 ?iiunifyvoid??iiunifyvariable???truemc_transform_void _ii?void??ii?void?? ?truemc_transform_pushiiiipushvariable?? ?iipushstructure??iipushconstant??trueencode unify_variableunify_variableget ? ? 1 ? 0wcodeencode write_variablewrite_variableput ? ? 2 ? 0wcodeencode unify_valueunify_valueget ? ? 3 ? 0wcodeencode write_valuewrite_valueput ? ? 4 ? 0wcodeencode unify_constantunify_constantget ? ? ? 5 0  ? 0wcodeencode write_constantwrite_constantput ? ? ? 6 0  ? 0wcodeencode push_constantpush_constant ? ?/?? 6wcodeencode get_constantget_constant ? ? ? 7  ? 0wcodeencode get_structureget_structure ? ?/?? 8wcodeencode put_constantput_constant ? ? ? 9  ? 0wcodeencode put_structureput_structure ? ?/?? 10wcodeencode get_variableget_variable ? ? ? ? 11  ? ?  ?wcodeencode put_valueput_value ? ? ? 11 ?  ?wcodeencode put_variableput_variable ? ? ? ? 12  ? ?  ?wcodeencode get_valueget_value ? ? ? ? 13  ? ?  ?wcodeencode push_cutpush_cut?? ? ? 14 0 ? 0wcodeencode put_cutput_cut?? ? ? 15 0 ? 0wcodeencode get_cutget_cut?? ? ? 16 0 ? 0wcodeencode execute_?execute_? ? ? ? ? 17 0  ?  ?wcodeencode load_constantload_constant ? ? ? ? 28  ?  ? 0wcodeencode load_variableload_variable ? ? ? ? 50  ? ?  ?wcodeencode load_valueload_value ? ? ? ? 29  ? ?  ?wcodeencode push_structurepush_structure ? ?/?? 51wcodeencode push_variablepush_variableput ? ? 52 ? 0wcodeencode unify_voidunify_void ? ? 61 ? 0wcodeencode write_voidwrite_void ? ? 62 ? 0wcodeencode c_chunk_variablec_chunk_variable ? ? ? 63 ?  ?write_or_skipencode c_chunk_valuec_chunk_value ? ? ? 64 ?  ?write_or_skipencode clause_?clause_? +?1 ? wcode?? ?0??? ?n_nopencode firstarg_?firstarg_?/? ? +?2 ? wcode?? ??? ??  ?n_nopencode end_?end_? ? ? ? ? 0  ?  ? 0wcodeencode inline_variableinline_variable wcode??????? ?n_inlineencode arith_variablearith_variable wcode????0?? ?n_arithencode arith_valuearith_value wcode????1?? ?n_arithencode builtin_?builtin_? wcode??????? ?n_builtinencode_op_ ?op + ?3 ? make_cmd4 ? ? wcode?? ?0 ?0?3 .? .4 ? .? .4 ? .?[]3 .32[]3 .32[]  ? ?n_nopn_inline_ bu_ctrn_inline? ?metacalln_arith_ bu_ctrn_arith? ?metacalln_builtin_ bu_ctrn_builtin? ?metacalln_nop_ bu_ctrn_nop? ?metacallbu_ bu0??? ? ?metacallwrite_or_skip wamwam ??truewrite_or_skip memmem ??truewrite_or_skip_len ? greater_eq ? ? less ? ? $bin_cut? write_or_skip0????? ??  ?  ?  ?c_thresholdwrite_or_skip _ ?truewrite_or_skip0 wamwam $bin_cut? wcodewam?????? c_flag begin_end yes  ?bb_valwrite_or_skip0 cc ? ? ? ? ?? 0wspec_cwrite_or_skip0asmasm? bb_valc_flagbegin_endyes = ?c = ?n wcodeasm?4 ?????3 +? ?  ?  ?  ?ifwrite_or_skip0 _ ?truewcode memmem ?????J #0truewcode wamwam ??J 0?J 0?J 0 put0?writewcode cc ? ? ? ? ? ?wcode_cwcode asmasm ? ? ? ? ? ?wcode_asmwcode_asm _ .? .? .? .?[] write? write--> put9 put9 write? cnl? ?=..let_c_chunk_file_ ? ? c_chunk file_namebb_letc_chunk_file_ ? ? c_chunk file_namebb_valnewpredcc? ? ?:-?? ?newpred0newpred_ ?truenewpred0 _ bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0? ?functornewpred0_ bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0? ?functorcurrpred --??/??/?? bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset?? predicate namebb_valcompile_mem _ ?mem compiling4??...3to? ctime?survive_cleanup?? mcomp_file?? maincomp?4 ? terminate_file?$end11$bin_cut?ctime? -???quietmes4??3compile_time?3 current_user_file? ? ?quietmescompile_mem_ restart? compilation aborted ?ttyprintsurvive_cleanup_ restartcall_ifdefinit_iotruename??init_cmd? ?namemcomp_file_ .?.>?[] statisticsstrings4? statisticssymbols4 ? statisticshtable4 ? translate_all?? statisticscode4 ? - ??? statisticsstrings4 ?-???statisticssymbols4?-???statisticshtable4?-???+???+???+???quietmes4??3bytes_used4?4?4?4?total?3code?3strings?3symbols?3htable?3.?.>?[]3.?.>?[]3 .?.>?[]3 . ? .>?[]3 .?.>?[]3 .?.>?[]3.?.>?[] code ? ?statisticscompile0_.??? .??compile1compile0_ .?[] ?compile1compile1 _? ctime?xcompile???ctime? -???write4? cnl?3total_compile_time? ?init_cmdxcompile _ decorate_fileheader?compile_builtins?member??quietmes4? ctime ? comp_file?? ctime ? - ? ? ? quietmes4 ? fail?3 compile_time ?3compiling4??...3to? ? ?tellxcompile_ decorate_filefooter?fail? $end0 0 ?terminate_filexcompile_ ?tolddecorate_file_c ??c_decorate_filedecorate_file_ ?trueterminate_file _ gg_emit?4?close_c_chunk_file??3.4?[]3.4?[]3iiend??? ?make_dummy_endmake_dummy_endcc $bin_cut?? wam.hc_chunk_filemake_dummy_end_maincompclose_c_chunk_filecc? toldwrite_c_chunkclose_c_chunk_file_ ?truegg_emitmemmem memgen_codegg_emitwamwam wamgen_codegg_emitcc cgen_codegg_emitasmasm asmshow_codecomp_file_ .wam.asm.bin.c[] $bin_cut?translate_all??? ? ?membertranslate_all_translate_all0memoing_translate_all _ ?wam \+4?memoable_file???$bin_cut?if4?true4 ? include_memoed_file??3\+older_file??3 make_memo_file???3current_moduleprolog binprolog ?is_prologmemoing_translate_all_translate_all0memoable_file_ ? ?.??.??.?[] append ?? ? $bin_cut? =?4? name? ? append ?4 ? ? name? ??3 .? ?3.46.112.108[] ?  ? ?namemake_memo_file _ ?wam1J)0 translate_all0??toldtell?? ? ?tellinclude_memoed_file_0J)0 repeatget0?put_to_eof?$bin_cut?seensee?? ?seeput_to_eof-1-1 ??trueput_to_eof_?J0B? ?truetranslate_all0 _0J)0 repeatread_clause?translate??$bin_cut?seensee?? ?seetranslateend_of_fileend_of_file ??truetranslate:-:-?? fail? ?translate_cmdtranslate::-::-?? ?? :-?? fail? ?compile_binarytranslate_ $bin_cut?translate_cmd4??fail?3assert? ?is_dynamic_clausetranslate_ ? ? fail? ? ?maincompis_dynamic_clause:-:-???is_dynamicis_dynamic_clause_is_dynamicmaincomp _ show_steps??? compile_binary??? ? ? ?preprocesstranslate_cmd..?[]?include_filetranslate_cmdcompilecompile??include_filetranslate_cmdensure_loadedensure_loaded??include_filetranslate_cmdconsultconsult??include_filetranslate_cmdreconsultreconsult??include_filetranslate_cmddynamicdynamic? ??dynamictranslate_cmdinteractiveinteractive? ??interactivetranslate_cmdspyspy? ??spytranslate_cmd opop???? if4?4 ?true?3member?.wam.c[]3 encode_op???? ? ?optranslate_cmd_exec_cmdexec_cmd_ maincomp??fail? ?cmd2clausecmd_root$run_time_command$run_time_command ?trueinit_cmd_ get_cmd_no?? ?cmd_rootget_cmd_no_ ? bb_setgensym?0$bin_cut?? gensym ? ?bb_valget_cmd_no_ ?truecmd2clause _:-?? gensym??quietmes% !!! action delayed after compilation, for command:quietmes4?if4?truetrue?3public/?03:-? ?cmd_rootexec_run_time_commands_ exec_run_time_commands0?fail? ?cmd_rootexec_run_time_commands_trueexec_run_time_commands0 _ ?10000 symcat???if4?4?true $bin_cut??3is_compiled?3,4?fail3call? 1forinclude_file _0J)0 quietmes4?memoing_translate_all?? seeing_telling0 ? quietmes4 ??3 end4 ? in ?3 including?3begin4? in?3including? ? ?find_filepreprocess _ fact2rule?? mdef_to_def?? def_to_mbin??? ? ?std_expand_termfact2rule:-:-? ?:-??truefact2rule:-:-?? ?:-???truefact2rule_:-?true ?truemake_cmd_ name??? ?make_cmd0make_cmd0_ ? ? char_in_cmd?? ? ?findallchar_in_cmd _ listify??member??? ? ?memberlistify..?? ?.???truelistify_namemake_appl_ ? .?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[] wam newappl.bpcompile0make_executable_unix_appl_ make_cmd4?? system??3.4?.4? .4 ? .? .4 ? .4 ? .? .4 ? .?[]3 .32 .59 .32 .99 .104 .109 .111 .100 .32 .43 .120 .32[]3 .32 .59 .32 .99 .97 .116 .32 .110 .101 .119 .97 .112 .112 .108 .46 .98 .112 .41 .32 .62 .32[]3 .32 .36 .48 .39[]3 .59 .32 .101 .99 .104 .111 .32 .39 .101 .120 .101 .99 .32[]3.59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[]3.40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[] ? ?make_applcparser_ ? is prolog bin_prolog_with_cparserbb_defkmake_ makewam? ?cparserkcmake_ cmakewam? ?cparsertmake_ ? 12 60tmaketmake_ ? 10000tmaketmake_ cmake? ?set_c_thresholdcmake_ ? wamcmakecmake_ ? usercmakecmake_ ? c .cmakemake_ ? wammakemake_ ? usermakemake_ ? wam .bpmakemake _ ? ? ? ?makemake _ module? if4 ?true4 ? module ??3 make0????3 \+ errmesunable_to_make .4 ? .4 ? .4 ?[]3 in_module?3 project??3 mode?  ? ?current_modulemake0 _ find_file?? make_cmd4 ? ? make_include?? compile0?? ? ctime ?- ? ?? write4 ? cnl?3 =? time?3 .? .?[]  ? ?ctimemake_includecc? .?.4?[]3.46.104[] let_c_chunk_file?? ?make_cmdmake_include_ ?trueasm_ ? asm usercomp_fileasm_ ? user asm .asm BinWAM intermediate codemakeboot_ ? wam prologmakeuboot_ ? wam usermakels_ ? ls -tFsystemdir_ ? dirsystemedit _ make_cmd4??system?compile??3.?.4?.?[]3.32[] ? ? ?find_fileget_editor_ unix_getenvEDITOR? unix_getenvVISUAL? $bin_cut?? ? ?orget_editor_ ? ?truemy_edit_ current_user_file? edit??? ? failcall_ifdefmy_defedit_ current_user_file? defedit??? ? failcall_ifdefdefedit_ edit??? ? ?get_editored_ ? emacsmy_defeditedit_ ? editmy_defedittextedit_ ? texteditmy_editemacs_ ? emacsmy_editnotepad_ ? notepadmy_editpico_ ? picomy_editvi_ ? vimy_editco_ current_user_file? compile?? ? failcall_ifdefs_statisticsc_rootxxxx ?trueset_c_threshold_ ? 100000set_c_thresholdset_c_threshold_ ? bb_letc_flagc_threshold_max?? c_flag c_threshold_min ?bb_letset_c_trace_ ? ? c_flag tracebb_letc_threshold_ ? bb_valc_flagc_threshold_max?$bin_cut?? c_flag c_threshold_min ?bb_valc_threshold110 $bin_cut?? wam.hc_chunk_filec_threshold55500 ?truemeta_interpreter_do_bodydo_body_ ? ? ?B?? unbound_goal ?user_errordo_body _ or4?4??3,4?,4? do_body?3$bin_cut?3=?yes3=?nodo_bodydo_compiledcallcall?? ?B?do_bodydo_compiled\+\+? $bin_cut?fail? ?do_bodydo_compiled\+\+? ??truedo_compiledbagofbagof??? ?? do_body?bagofdo_compiledsetofsetof??? ?? do_body?setofdo_compiledfindallfindall??? ?? do_body?findalldo_compiled_calldo_goal_ $bin_cut?spy_goal?? ?spyingdo_goal _ $bin_cut?assumed_clause??do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_assumeddo_goal _ $bin_cut?clause??do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_dynamicdo_goal_ ?B??do_compileddo_goal_ $bin_cut?do_apply??do_goal?? call ?functordo_goal_do_undefdo_undef_ errmes4?4??3=undefined_predicate/??3=culprit?functordo_apply _ .>?.?? =..?? det_append???=..??? ? ?=..do_body ,,?? ? ? ?? ? ?  ?do_conjdo_body ;;?? ? ? ?? ? ?  ?do_disjdo_body!!trueyes ?truedo_body_trueno ?do_goaldo_conj!! ?yes ??truedo_conj_ do_body???? ?do_bodydo_disj ->->?? ? ? ? ?? ?  ?  ?  ?do_if_then_elsedo_disj_do_disj0do_if_then_else _ $bin_cut? do_body???? ?do_bodydo_if_then_else_ ? ? ? ?do_bodydo_disj0_ ? ? ?do_bodydo_disj0_ ? ? ? ?do_bodytrace_ ? 0tr_bodytr_body_ ? ?B?? unbound_goal ?user_errortr_body _ or4?4??3,4? ,4 ? ,4 ? ,4 ? ,cnl tr_body??3 writeCUT3 tab?3 $bin_cut?3=?yes3=?notr_bodytr_body ,,?? ? ? ? ?? ?  ?  ?  ?tr_bodytr_body!!trueyes ??truetr_body ;;?? ? ? ? ?? ?  ?  ?  ?tr_disj1tr_bodytruetruetrueno ??truetr_body_trueno ?tr_goaltr_disj1->->?? ? ? ? ? ?? ?  ?  ?  ?  ?tr_if1tr_disj1_ ? ? ? ?tr_bodytr_disj1_ ? ? ? ? ?tr_bodytr_if1 _ do_body? tr_body???? tr_body????  ?  ?  ? ?iftr_body!! ?yes ??truetr_body ,,??? ,??  ?tr_bodytr_body;;?? ? ? ? ? ?? ?  ?  ?  ?  ?tr_disj2tr_bodytruetrue ? ? ? ? ??tr_bodytr_body _ tr_body????? ? ?tr_goaltr_disj2->->? ? ? ? ? ? ? ??  ?  ?  ?  ? ? ?tr_if2tr_disj2 _ ? ? ? ? ?tr_bodytr_disj2 _ ? ? ? ? ? ?tr_bodytr_if2 _ do_body? tr_body????? tr_body?????  ?  ?  ? ?iftr_goalcallcall??tr_bodytr_goal\+\+? $bin_cut?fail? ?tr_bodytr_goal\+\+? ??truetr_goal_ ,4?,4?,4? or4 ? ortrue ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeRedo: 3 tab?3 ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeExit: 3 tab?3if4?4 ? ,4 ? tr_call? ?3 +1? ?3,4? \+ spying?3arith_eq?103 metacall?3ifis_interactive4? ,4 ?cnl3 =?323,4? if4 ?true get0>?3 arith_eq?103get0?3or4?or4?true3,is_interactive,4?fail3write : 3,4?,4?,4?fail3print?3writeCall: 3tab? ,4?,4? ,4 ? ,cnlfail3 print?3writeFail: 3tab? ? ?ortr_call bagofbagof??? ?? tr_body?? ? ?bagoftr_call setofsetof??? ?? tr_body?? ? ?setoftr_call findallfindall??? ?? tr_body?? ? ?findalltr_call_ $bin_cut?tab?functor???write4? cnl assumed_clause? ? tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! assumed/?? ?is_assumedtr_call_ $bin_cut?tab?functor???write4? cnl clause? ? tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! dynamic/?? ?is_dynamictr_call _ ?B?? functor???write4? cnl call??3!!! compiled/?? ? ?tabtr_call_ $bin_cut?do_apply??tr_call??? call ?functortr_call_do_undefdynamic_ fail? ?make_dynamicdynamic_ ?truemake_dynamic,,??? make_dynamic?? ?make_dynamicmake_dynamic //?? check_dynamic?4?define_dynamic??3/?? ?functorcheck_dynamic_ ?B?? WARNING: dynamic code will shadow compiled predicate? cnl?writecheck_dynamic_ $bin_cut?errmesdynamic code would shadow assumed predicate?? ?is_assumedcheck_dynamic_ ?truedefine_dynamic_ bb_def?$last0? $first 0bb_defensure_dynamic_ $bin_cut?? ?is_dynamicensure_dynamic_ make_dynamic4??3/??functoradd_clause_ $bin_cut?? ?add_clause0add_clause _ add_clause0????$bin_cut?? ? ?ensure_dynamicadd_clause_ :-?? unable to assert clause ?errmesadd_clause0 _??J0??J0???J0 :-?? set???? ? ?bb_defadd_clause0_??J0 :-?? ? ? ?bb_defasserta_ :-?? add_clause$first-1??? ?add_trueassertz_ :-?? add_clause$last1??? ?add_trueassert_assertzassert_itend_of_fileend_of_file ??trueassert_it_assertzretract _ =?4?clause0?? ? erase0? ??3:-?? ?add_trueretractall _ :-?>? val?$first?val?$last? for ???val? ?>?erase0? ? fail? ?add_trueretractall_ ?truecollect_slot_?$firstJ1?$lastJ0??J 0??1J0?$first?J0 ?truecollect_slot_ ?trueinstance$dbref$dbref????J0copy_termerase$dbref$dbref?? ? ?erase0erase0_ collect_slot??? ?bb_rmclause_ ? ?clause0clause_$dbref??clause0clause0 _?$firstJ0?$lastJ0 ith_clause? ??? member4? ??3-?:-??  ? ?  ? ?findallith_clause_-????J1 ?trueith_clause_??J 0?1J0ith_clauseabolish _ ? ? is_dynamic?$bin_cut?abolish0???? ? ?functorabolish_ found/?? abolish_expects_dynamic_clauses ?errmesabolish0_ retractall?fail? ?functorabolish0_ ??$firstJ0?$lastJ0define_dynamicdebug_reconsultconsult_warning_ ? % using compile/1 is MUCH fasterquietmesconsult_ consult_warningconsult0?? ?find_filereconsult_ consult_warningsurvive_cleanup??consult0?? ?find_fileconsult0 _ quietmes4?see?repeatread_clause?consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes4??3consulted?time?3consulting? ? ?ctimeconsult_included_0J)0 consult0?see?? ?find_fileconsult_embedded:-:-??consult_cmdconsult_embedded_ assert_it?? ?expand_termconsult_cmd..?[]?consult_includedconsult_cmdconsultconsult??consult_includedconsult_cmdreconsultreconsult??consult_includedconsult_cmd_metacalllisting _ ? ? is_dynamic?$bin_cut?write% write4? write: cnl listing0??3/?? ? ?functorlisting _ ? ? is_assumed?$bin_cut?write% assumed write4? write: cnl listing1??3/?? ? ?functorlisting0_ portray_clause4?fail?3:-??clauselisting0_ ?B?truelisting1_ portray_clause4?fail?3:-??assumed_clauselisting1_ ?B?truelisting_ listing??fail? 0 255forlisting_ ?B?truegenerate_run_time_predicate _ or4?4?bb_element4? ? nonvar ??3=4? ?3+? ?3,4? = ? /??3=?/$assumed03,4?= ? /$first03=?/??  ? ?bb_listlisting_ listing??fail? ?generate_run_time_predicatelisting_true=> _ ? intuitionistic? metacall?=?$closed? ? ?assume-: _ ? linear?>? metacall?=?$closed? ? ?assumeadd_hint_ll _clause?? ? ?:-?? ? ? ?add_trueassumel_ ? ? linear>? ?assumeassumei_ ? ? intuitionistic>? ?assumeassume_ ?B?? bad_clause? error_in_assume ?errmesassume_assume1assume1_.?[]?assume_fileassume1_assume_llassume_ll _ lval$assumed?? assume_with_hint_ll??? ?add_hint_llassume_with_hint_ll_ ? ? ?B?? ?insert_llassume_with_hint_ll..?[] ? ?trueassumed_ call?? ?assumed_clauseassumed_clause_ ? ?assumed_clauseassumed_clause _ ? ? ?$assumed?J0 ?B ? ? ?get_assumed_clauseget_assumed_clause _ ? ? ?. ? ? clause?? ? ?copy_or_delete_llget_assumed_clause_.??get_assumed_clausecopy_or_delete_ll linearlinear?? ?:-?? ?B? ?B? ?$usedtruecopy_or_delete_llintuitionisticintuitionistic? ? ? ?B? :-?? ?copy_terminsert_ll_ ? ?.?[]?2? .?[]?J0 ?trueinsert_ll_.??insert_llassume_file _ seeing_telling0?see?assume_all?seensee?? ? ? ?find_fileassume_all_ assume_all0??? ? ?gc_read_clauseassume_all0end_of_fileend_of_file ??trueassume_all0_ gc_read_clause?assume_all0??? ?assume_oneassume_one:-:-?.?[] ?? ?assume_fileassume_one:-:-? ?? consult_cmd? true trueifassume_one_ ? ? ?assume_llbb_element ==??+??/??/?? ?.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_30J'1 ?truebb_ ? unsortedbbbb_ ? ,4?,4?,cnl,4? ,4 ? ,4 ? ,4 ? ,4 ? ,cnlfail3 write ?3 bb_orig ? ?3 member ? ?3 if4 ?4 ? = ? ?3 \==?sorted3 ,4 ? sort ? ?3 findall ?4 ? ?3 bb_element ? ?3bb_list ?3write-bboard?3statisticsbboard? ? cnlorbb_orig ==??+??/??/??= ? ? + ? ? /?? /?? functor ???or4?4? $bin_cut??3val? ? ?3lval? ? ? ? ?functorsort_ ? remdup??? < ? ?merge_sortremdup[][][] ?trueremdup ..??.?? = ???J1? .??remdupremdup..??.??remdupmerge_sort_ merge_sort1????[]? ? ? ?lengthmerge_sort100[] ? ??truemerge_sort1 11 ?.??.?[]?truemerge_sort1 _?1J0??J 0 merge_sort1 ?? ? ?? merge_2 ?? ??? ?  ?  ?  ?merge_sort1merge_2[][] ? ??truemerge_2 ..??.? ?.????J1? .? ?merge_2merge_2 _ ?.??.?? ?merge_2ksort_ $bin_cut?=??? -1 ? []keysortksort_ keysort?? illegal_arguments ?user_errorkeysort ..??? ?B ? ? ? -=? ? ? .?? keysort?1? ????  ?  ?  ? ?samkeyrunkeysort_[] ? ?truekeysort..????J 0? ?B ? ? ? -=? ? ? .?? keysort ?1? ? ??keymerge? ? ?+???keysort??? ????  ?  ?  ?  ? ?samkeyrunkeysort _ ? ? ?truesamkeyrun..?? ?B ? ? ? - ? ? ? ? . ? ? -? ? $bin_cut? = ?4 ? samkeyrun?? ????3 .?>?  ?@=<samkeyrun ..?? ?B ? ? ? - ? ? ? ? . ? ? - ? ? < ? ? ?J 1? .??  ?samkeyrunsamkeyrun _ ? ? ?.?[]truekeymerge[][] ?? ? ?truekeymerge ..?? ? ?.? ?-? ? ? ? -? ? $bin_cut? =?4 ? keymerge????3 .?? ?  ?@=<keymerge_.??? ? ?.??keymergekeymerge_ ? ?truesetof _ call? sort??? ? ? ?bagofbagof_ ? ? \==?[] $bin_cut? =.. ?4 ? functor ?. ? findall4 ?4 ??replace_instance? ? ? ?keysort ? ?$bin_cut?concordant_subset ? ? ?=? ??3 - ??3 call?3 ..? ? [] ?free_variablesbagof _.?? call? .?? ?findall^_ ? ?callreplace_instance[][][] ??truereplace_instance ..??-?? ?. ? ? -?? $bin_cut?replace_instance??? ?? ?replace_key_variablesreplace_key_variables00 ??truereplace_key_variables_??J0 ?B???1J0replace_key_variablesreplace_key_variables_??J0??J1?1J0replace_key_variablesconcordant_subset ..??-?? concordant_subset ??4 ????3 .?? ?  ?concordant_subsetconcordant_subset ..??-??.?? = ???J1?concordant_subsetconcordant_subset_[] ? ?trueconcordant_subset[][] ? ? ??trueconcordant_subset_ ? ? ?trueconcordant_subset_ ? ? ?concordant_subsetfree_variables _ ? ?.?? ?B? list_is_free_of?? $bin_cut?? ? ?term_is_free_offree_variables_ ? ?B?? ?truefree_variables _ $bin_cut?free_variables? ???? ?  ? ?explicit_bindingfree_variables _ free_variables?????? ? ? ?functorfree_variables00 ? ??truefree_variables _??J0 -?1 ? $bin_cut? free_variables ??? ??? ? ? ?  ?  ?free_variablesexplicit_binding\+\+?fail ? ?trueexplicit_bindingnotnot?fail ? ?trueexplicit_binding ^^?? ? ?+??trueexplicit_binding setofsetof??? ?-??+??trueexplicit_binding bagofbagof??? ?-??+??trueterm_is_free_of_ ?B??\==term_is_free_of_ term_is_free_of???? ? ?functorterm_is_free_of00 ??trueterm_is_free_of _??J0 -?1? $bin_cut? term_is_free_of???? ? ? ?term_is_free_oflist_is_free_of[][] ?truelist_is_free_of..?? list_is_free_of??? ?\==keysort_ksortnot_ call? $bin_cut?? ? ?\+not_ $bin_cut?fail? ?groundnot_ ? user_errorshould be groundnot? ? fail abortifterm_chars_ ?B?? name??? ? ?swriteterm_chars_ sread??? ? ?namevars_of_ ? ? [] []free_variables200 fx $main_prolog_serverprolog_server_ repeatin??react??$bin_cut?? ?init_serverinit_server_ end_symbol? nointeractivereactend_of_fileend_of_file ??truereactcall_prologcall_prolog?? $bin_cut?end_symbolfail?callreactquery_prologquery_prolog? fail? ?query_prologreactquery_prolog_listquery_prolog_list? fail? ?query_prolog_listquery_prolog_ cnlmember??write?cnlfail? ?callquery_prolog_ ?end_symbolquery_prolog_list_ write|cnlmember??write?cnlfail? ?callquery_prolog_list_ ?end_symbolend_symbol_ cnl? EOPAwritein_ ? ?inin_ $bin_cut?in1??? ? ?read_termin1..?? ?? .??memberin1_ ? ?true$end0_truewamBinProlog3.45/src/oper.wam100664 764 764 1463 6664734341 14563 0ustar javierjavier1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=BinProlog3.45/src/init.wam100664 764 764 2441 6664734341 14556 0ustar javierjavierstat_dictruntimeruntime0 ?truestat_dictglobal_stackglobal_stack1 ?truestat_dictlocal_stacklocal_stack2 ?truestat_dicttrailtrail3 ?truestat_dictcodecode4 ?truestat_dictstringsstrings5 ?truestat_dictsymbolssymbols6 ?truestat_dicthtablehtable7 ?truestat_dictbboardbboard8 ?trueuser_error_ ? ? ? basic ? ?error_messageerrmes_ ? ? ? pretty ? ?error_messageerror_message _JM0?5J 01J)0 portray_error???$bin_cut?tell?fail? user ?tellquietmes_JM0?4J 0?ttyprintquietmes_ ?trueportray_errorbasicbasic ? >>> B? ?B? : B? ?B?B?trueportray_errorprettypretty write?write: cnlportray_clause?? *** ?writemember_.?? ?truemember_.??membernth_member_ ? ? 1 ?member_imember_i_ ?.?? ?truemember_i_.???1J0member_iBinProlog3.45/src/lib.wam100664 764 764 50247 6664734342 14411 0ustar javierjavier:_module_callmodule_call_ ? $bin_cut?call??is_publicmodule_call_ call?? ?module_predicatemodule_predicate _ .?? module_name??? =..?4 ??3 .?? ? ?  ?=..module_name _ ?B? ?B?? .?[] ? ?.58[] name?? det_append?4 ? ? name? ??3 .?? ?namemodule_name_ ? .?.?[] should_be_nonvar ?user_errormodule_ ? bb_letmodule_name??? current module_namebb_letmodule_ member??public0?fail? ?modulemodule_ ?truecurrent_module_ $bin_cut?=??? current module_namebb_valcurrent_moduleuseruser ?trueis_module_ ? ? ?B?? module_name ? ?bb_valis_module_ bb_element4???3=4?>?3+4?/?03/module_name0 ? ?bb_listmodules_ ? ? is_module?findallhide_atom_ $bin_cut?? ?hide_atom0hide_atom_ ? ?truehide_atom0_ $bin_cut?fail? usercurrent_modulehide_atom0_ $bin_cut?fail?is_publichide_atom0_ module_predicate???? ? ?current_modulepublic0 //?? current_module?bb_defpublic??$bin_cut?? ?functorpublic0_ ? public? bad or repeated declarationerrmespublic,,??? public?? ?publicpublic_public0is_public_ ? ?is_publicis_public_ ? $bin_cut?=??? public ? ?bb_valis_public_ ?is_builtininit_gensym_ ? ? gensym ? 0bb_letgensym_ symcat???? ? ?gensym_nogensym_no_gensym?J0??1J1gensym??J0 ?truegensym_no_ ?1gensym??J0 ?truecurrent_op_ ? ? ?B?? ?get_opcurrent_op _ if4?4?4 ??3valopmark??3get_op???3 ,4 ?fail3 $bin_cut? ? 0 10000 ?forop_???J/0 ?trueget_op_ get_op0????? ? ? ?op_typeget_op0_??J1??J1?0J 0 ?trueop_typexfyxfyinfixop ?trueop_typexfxxfxinfixop ?trueop_typeyfxyfxinfixop ?trueop_typefxfxprefixop ?trueop_typefyfyprefixop ?trueop_typexfxfpostfixop ?trueop_typeyfyfpostfixop ?trueis_dynamic_?$firstJ0 ?trueis_assumed_$assumed?J0 ?B? ?truespy_goal_tracespying_ yes ?spying?J1 ?truespy //?? \+4?$bin_cut?bb_letspying?yes?3is_builtin? ?functorspy_ ? ? unable_to_spy_on ?user_errornospy//??? bb_rmspying?? ?functoris_builtin_nonvar_ bu1? $bin_cut?? ? ?metacallis_builtin_nonvar_ cont>? bu?>?? ?termcatis_builtin_var_ bu1? ?metacallis_builtin_var_ strip_cont??>?? ? ? ?buis_builtin_ ?B??is_builtin_nonvaris_builtin_is_builtin_varinteractive_ ? ?B?? =?yes =?no is_interactiveifinteractive_ ?B?interactive0is_interactive_ ? current_op1199fx?-\+interactive0yesyes ? 1200 fx ?-opinteractive0nono ? 1199 fx ?-opexpand_term_portable_expand_termstd_expand_term_portable_expand_termstrip_cont_ -???J51 ?truemetatrue_ metacall??strip_contmetacall_ ? meta_interpreter? call_ifdef?user_errorno meta_interpreter for undefined goal? ?call_ifdefotherwise_truefalse_B?truecall_ifdef_ ? ?B??callcall_ifdef_ ? ?call=_ ? ?true->_ $bin_cut?call?? ?call;->->?? ? ?? ? ?if;_ ?call;_ ? ?callor_ ?callor_ ? ?callif_ $bin_cut?call?? ?callif_ ? ?call,_ call?? ?call\+_ $bin_cut?fail? ?call\+_ ?true\=_ ? ??B?true\=_ ?truehalt_0JU0truerepeat_truerepeat_repeatfindall_workhorse _??J$0 findall_store_heap?? ? ?callfindall_workhorse_ ? ?findall_load_heapfindall_ ? .?? . 0findall_workhorsefindall_ ? []findallfindall_conj_ ? truefindall_conjfindall_conj_ ? ,?? , 0findall_workhorsefindall_disj_ ? failfindall_disjfindall_disj_ ? ;?? ; 0findall_workhorsewhile_ if4?true4??3call?3,4?fail3$bin_cut? ? ?callskip_until_ if4?fail4??3call?3$bin_cut? ? ?callskip_when_ if4?failtrue?3call? ? ?callnth_answer_?1J0 ? ?s? has_fuel?skip_untiltake_at_most_ ? ?s? has_fuel?whiledrop_at_least_ ? ?s? has_fuel?skip_whenhas_fuel_1?J0?0J 0?1J01??J0 ?truefind_while_ while?? ? ? ? ?findallfind_at_most_ take_at_most?? ? ? ? ?findallall_but_at_least_ drop_at_least?? ? ? ? ?findallall _ findall4?4? ? share_vars ? ???3-? ?3call?  ? ?are_sharedare_shared _vars?? free_variables??[]?? [] ?free_variablesshare_vars[][][] ?trueshare_vars..??-?? ?.?? ?share_varsgc_read_ ? read? .?[] ?findallgc_read_clause_ ? read_clause? .?[] ?findallgc_call_ call? member??? ?findallfor_ ???J 0 ?truefor_??J 0?1J0forargn_ ?B????J1 ?trueargn _ for?1?arg???? ? ? ? ?functornumbervars$VAR$VAR? ? ???1J1truenumbervars_ ?B?? ? ? ?truenumbervars..??? numbervars???? ? ?numbervarsnumbervars_ numbervars0????? ? ? ?functornumbervars_ ? ?? ? ?truenumbervars _?1J0??J0 numbervars?????? ?  ?numbervarsground_ greater?0$bin_cut?fail? 0numbervarsground_ ?truecopy_term_0?J&1 ?truesave_term_1?J&1 ?trueflush_2J+0truesee_or_fail_0?J*0 ?trueexists_file_ seen? ?see_or_failsread_0?J.1 ?trueswrite_1?J.1 ?truesystem[][] ??truesystem..??? .?? shell?? ?namesystem_ ?B?shell._[] ?compileinclude_compilecompile_ compile_mem?abort? ?find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[] .46.46.47.115.114.99[] getenv_path4???3.112.114.111.103.115[] ?getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[] ?truefile_library..?[].?[].46?.112?.108[] .46.46.47.108.105.98.114.97.114.121[] ?getenv_pathgetenv_path _ ? ?.47[] unix_getenvBP_PATH? ,4 ? det_append ?? ?3 name? ? = ?[] det_append???det_append ???? ?  ?  ?ifmake_file_name _ ? member ?? name? ? det_append ? ? ? det_append? ? ? name? ?? ? ?memberstatistics_.??.?[] stat0???? ?stat_dictstatistics_ cwrite?cwrite=cwrite?cnlfail? ?statisticsstatistics_trueatom_ ?B??B? ?trueatom_ ?B? ?truefloat_ ?B? ? ?$float=? ?truenumber_ ?B?? ?truenumber_floatcompound_ ?B? atomic? ?\+=.._ ?B???J 1 ?true=.._?.[]J!1 ?trueterm2list_?.[]J!1 ?trueterm2dlist_?.?J!1 ?truedet_append_ ->????J%1 ?truedet_append_ -????J%1 ?trueappendN_ ? []appendNappendN[][] ? ?trueappendN ..?? ->???2?J%1appendNappend_body_ ? ?append_bodyappend_body _ det_append0??4 ? if4 ?4 ?4 ??3 compare0 ??=3 =??3 =..?.? . ? .?[]3 - ?? ? 2 ?functorappend_conj _ ? ,?? ,?? ?  ? trueappend_bodyappend_disj _ ? ;?? ;?? ?  ? failappend_body._.?? ?true++_ -[]???J%1 ?trueappend_ -???2?J%1 ?general_appendgeneral_append[][] ? ?truegeneral_append..??.??general_appendlength_ ? ? ?B?? 0 ?get_lengthlength_ ? ? 0 ?make_lengthget_length[][] ? ?trueget_length..???1J0get_lengthmake_length[][] ? ??truemake_length..????J 0?1J0make_lengthtab_ integer?$bin_cut?tab0?? ?exprtab_ ? ? in tab/1: should evaluate to an integer ?user_errortab0_ ? put32fail? ? 1fortab0_ ?trueget _ get0?or4?4?$bin_cut?=???3greater?323less?0 ?repeatis_ $bin_cut?=??? ? ? ?expris_ is?? error_in_is ?errmesexpr_ ?B?? ? ? ?trueexpr_ $bin_cut?=??? ?floatexpr_ ? ?B?? variable_in_is ?user_errorexpr _ $bin_cut?arg1??arg2??expr??expr??=..?4 ? call?$bin_cut??3 . ?.?.?.?[]  ? 2functorexpr _ arg1??expr??=..?4? call?$bin_cut??3.?.?.?[] ? 1functorcompare_??J1 ?true+_ ? ?true-_0?J1 ?true\_0?J1 ?true==_ = ???J1 ?true\==_??J0 ?$noteq@<_ < ???J1 ?true@>_ > ???J1 ?true@=<_??J0 ?$lesseq@>=_??J0 ?$gteq<_ expr??less??? ?expr>_ expr??greater??? ?expr=<_ expr??less_eq??? ?expr>=_ expr??greater_eq??? ?expr=:=_ expr??arith_eq??? ?expr=\=_ expr??arith_dif??? ?expr$lesseq<< ?true$lesseq== ?true$gteq>> ?true$gteq== ?true$noteq<< ?true$noteq>> ?truebb_def_ def???? ? ?savedbb_set_ set???? ? ?savedbb_val_??J0 ? ?copy_termbb_rm_??J0 ?truebb_change_arg _ let???change_arg???? ? ? ?savedbb_let_??J0?bb_setbb_let_bb_defbb_def_ ? ? ? ? ? ?bb_defbb_set_ ? ? ? ? ? ?bb_setbb_val_ ? ? ? ? ? ?bb_valbb_rm_ ? ? ? ?bb_rmbb_let_ ? ? ? ? ? ?bb_letbb_default_val_ ? $bin_cut??bb_valbb_default_val_ ? ?truesaved_ $bin_cut?=??? ?save_termsaved_ save_term??$bin_cut?=??? ?bb_gcsaved_ ? /saved2bb_failsaved_ abort?restartlet_???J0? ?truelet_???J0 ?truedef_???J0 ?trueset_???J0 ?trueval_??J1 ?truelet_ ? ? ? ? ? ?letrm_??J0 ?true#_J1 ?truedcg_phrase_ ? ? ? 1 ? ?dcg_phrasedcg_phrase _J90?J80?J60 dcg_val[]dcg_tell?? ? ?call:=:##?? ????J1true:=:_??J1 ?truebb_gc_31J'0 bb_resetbb_put_back?? ?copy_termbb_put_back[][] ?truebb_put_back ..??.??.??.??.? ? functor ???bb_put_1? ??bb_put_back ?? ?functorbb_put_1_ set???$bin_cut?=??? ? ?save_termbb_put_1_ +?? ? ?bb_failbb_fail _ .>?.?[] user_error4?4??3blackboard overflow, left only?3culprit? bboard ?statisticstry_float _.??.??integer?box??atom..??atom?? name ??input_float? ????try_float_exptry_float_.??integer?box?? ?truetry_float_exp..??atome $bin_cut?? ?try_float_exp1try_float_exp..??atom? ? .?[] ? ?.101[] .?? name??integer?$bin_cut?? ?nametry_float_exp_ ?0 ?truetry_float_exp1 ..??.??integer?box??atom- ? ??0?J1truetry_float_exp1 ..??.??integer?box??atom+ ? ? ?truefloat_minus_ $float000??J1 ?truepow_pow??J11 ?truelog_log??J11 ?truesqrt_pow? $float00267911168?J11 ?trueexp_exp?J21 ?truelog_log?J21 ?truesin_sin?J21 ?truecos_cos?J21 ?truetan_tan?J21 ?trueatan_T?J21 ?trueasin_S?J21 ?trueacos_C?J21 ?trueinteger_integer?J21 ?truefloat_ $float000??J1 ?truectime_ ? .?.>?[] runtimestatisticsis_predicate_ ?B?? ?trueis_predicate_ $bin_cut?? ?is_dynamicis_predicate_is_assumedpredicate_property_ ?B??predicate_property0predicate_property _ functor???predicate_property0??? ? ? ?generate_a_predicatepredicate_property0_ $bin_cut?or4?4??3=?dynamic3=?interpreted ?is_dynamicpredicate_property0_ $bin_cut?or4?4??3=?assumed3=?interpreted ?is_assumedpredicate_property0_built_in $bin_cut??is_builtinpredicate_property0_compiled ?B? ?truecurrent_predicate_ ?B?? functor??>?? ? ?is_predicatecurrent_predicate_ functor???? ?generate_a_predicatecurrent_predicate//?? ?B? ?B?? is_predicate?$bin_cut?? ?functorcurrent_predicate//?? ? ?generate_a_predicatepredicate_key0//$assumed0 ? ? ?B?truepredicate_key0_ ? ?/$first0truepredicate_key0 //predmark0predmark ?/??/???0J 0?1J1truegenerate_a_predicate _00J'0 =4??3+? ? predicate_key0? ??4??3/?? ? ?  ?bb_elementhelp_aproposapropos _ apropos?? sort??member??write?cnlfail? ?findallapropos_ ?trueapropos _-??/?? predicate_property ??functor ???name??near_match??? ?namenear_match_ ? ??truenear_match_ ? $bin_cut?? ? ?append3near_match _ ? append3?4??? $bin_cut??3.>?? ?append3append3_ append???? ? ?appendunix_cd_HOMEJI0?JK0trueunix_argv _ ? ?JG0?1J0 ,4?unix_argv??3for?1?findallunixargcargc? ?JG1trueunixargvargv?unix_argvunixgetenvgetenv?? ? unix_getenv?? errmesno such environment variable? trueifunixaccessaccess?? ???JJ0trueunixcdcd? ??JK0trueunixcdcd ?unix_cdunixkillkill?? ???JL0trueBinProlog3.45/src/builtins.wam100664 764 764 52743 6664734343 15500 0ustar javierjavierbu0failfail?0in_body ?truebu0cwritecwrite=?1in_body ?truebu0cnlcnl?2in_body ?truebu0varvar=?3in_body ?truebu0nonvarnonvar=?4in_body ?truebu0integerinteger=?5in_body ?truebu0atomicatomic=?6in_body ?truebu0is_compiledis_compiled=?7in_body ?truebu0++=?in_body ?arith01truebu0--=?in_body ?arith11truebu0**=?in_body ?arith21truebu0modmod=?in_body ?arith31truebu0////=?in_body ?arith41truebu0//=?in_body ?arith51truebu0randomrandom=?in_body ?arith61truebu0get0get0=?in_body ?arith71truebu0putput=?in_body ?arith80truebu0lessless=?in_body ?arith90truebu0greatergreater=?in_body ?arith100truebu0less_eqless_eq=?in_body ?arith110truebu0greater_eqgreater_eq=?in_body ?arith120truebu0arith_eqarith_eq=?in_body ?arith130truebu0arith_difarith_dif=?in_body ?arith140truebu0<<<<=?in_body ?arith151truebu0>>>>=?in_body ?arith161truebu0/\/\=?in_body ?arith171truebu0\/\/=?in_body ?arith181truebu0##=?in_body ?arith191truebu0\\=?in_body ?arith201truebu0compare0compare0=?in_body ?arith211truebu0argarg=?in_body ?arith221truebu0setargsetarg=?in_body ?arith230truebu0change_argchange_arg=?in_body ?arith240truebu0defdef=?in_body ?arith250truebu0rmrm=?in_body ?arith260truebu0setset=?in_body ?arith270truebu0valval=?in_body ?arith281truebu0lvallval=?in_body ?arith291truebu0symcatsymcat=?in_body ?arith301truebu0dcg_connectdcg_connect=?in_body ?arith311truebu0list2termlist2term=?in_body ?arith321truebu0term2listterm2list=?in_body ?arith331truebu0self_infoself_info=?in_body ?arith341truebu0add_instradd_instr=?in_body ?arith350truebu0lift_heaplift_heap=?in_body ?arith360truebu0det_append0det_append0=?in_body ?arith371truebu0copy_termcopy_term=?in_body ?arith381truebu0bb_list0bb_list0=?in_body ?arith391truebu0older_fileolder_file=?in_body ?arith400truebu0seeing_tellingseeing_telling=?in_body ?arith411truebu0see_tellsee_tell=?in_body ?arith420truebu0seen_toldseen_told=?in_body ?arith430truebu0seeing_telling_atseeing_telling_at=?in_body ?arith441truebu0see_tell_atsee_tell_at=?in_body ?arith450truebu0string_opstring_op=?in_body ?arith461truebu0op0op0=?in_body ?arith470truebu0term_appendterm_append=?in_body ?arith481truebu0float_fun2float_fun2=?in_body ?arith491truebu0float_funfloat_fun=?in_body ?arith501truebu0input_floatinput_float=?in_body ?arith511truebu0write_floatwrite_float=?in_body ?arith520truebu0strip_cont0strip_cont0=?in_body ?arith531truebu0dcg_defdcg_def=?in_body ?arith540truebu0dcg_valdcg_val=?in_body ?arith551truebu0dcg_telldcg_tell=?in_body ?arith560truebu0dcg_tellingdcg_telling=?in_body ?arith571truebu0iso_open_streamiso_open_stream=?in_body ?arith581truebu0iso_close_streamiso_close_stream=?in_body ?arith590truebu0iso_write_termiso_write_term=?in_body ?arith600truebu0iso_read_termiso_read_term=?in_body ?arith611truebu0iso_put_byteiso_put_byte=?in_body ?arith620truebu0iso_get_byteiso_get_byte=?in_body ?arith631truebu0iso_peek_byteiso_peek_byte=?in_body ?arith641truebu0iso_eofiso_eof=?in_body ?arith650truebu0iso_lseekiso_lseek=?in_body ?arith661truebu0bb_putbb_put=?in_body ?arith670truebu0bb_getbb_get=?in_body ?arith681truebu0bb_opbb_op=?in_body ?arith691truebu0setrefsetref=?in_body ?arith700truebu0unix_argcunix_argc=?in_body ?arith711truebu0unix_argvunix_argv=?in_body ?arith721truebu0unix_getenvunix_getenv=?in_body ?arith731truebu0unix_accessunix_access=?in_body ?arith740truebu0unix_cdunix_cd=?in_body ?arith750truebu0unix_killunix_kill=?in_body ?arith760truebu0quietquiet=?in_body ?arith771truebu0create_enginecreate_engine=?in_body ?arith781truebu0destroy_enginedestroy_engine=?in_body ?arith790truebu0load_engineload_engine=?in_body ?arith800truebu0ask_engineask_engine=?in_body ?arith811truebu0multitask_enginesmultitask_engines=?in_body ?arith820truebu0suspend_enginesuspend_engine=?in_body ?arith830truebu0new_builtinnew_builtin=?in_body ?arith841truebu0halthalt=?in_body ?arith850truebu0truetrue?0in_head ?truebu0callcall=?1in_head ?truebu0abortabort?2in_head ?truebu0restartrestart?3in_head ?truebu0findall_store_heapfindall_store_heap=?4in_head ?truebu0findall_load_heapfindall_load_heap=?5in_head ?truebu0functorfunctor=?6in_head ?truebu0namename=?7in_head ?truebu0shellshell=?8in_head ?truebu0stat0stat0=?9in_head ?truebu0list_asmlist_asm=?10in_head ?truebu0bb_resetbb_reset?11in_head ?truebu0profileprofile?12in_head ?truebu0if0if0=?13in_head ?truebu_ctrn_inlinen_inline66 ?truebu_ctrn_arithn_arith74 ?truebu_ctrn_builtinn_builtin160 ?truebu_ctrn_nopn_nop174 ?truebu1!! ?truebu1..=? ?truebu1compilecompile? ?truebu1includeinclude? ?truebu1oror=? ?truebu1ifif=? ?truebu1strip_contstrip_cont=? ?truebu1termcattermcat=? ?truebu1add_contadd_cont=? ?truebu1asmasm ?truebu1asmasm? ?truebu1=..=..=? ?truebu1::-::-=? ?truebu1statisticsstatistics ?truebu1interactiveinteractive? ?truebu1metacallmetacall? ?truebu1metatruemetatrue? ?truebu1expand_termexpand_term=? ?truebu1===? ?truebu1->->=? ?truebu1;;=? ?truebu1,,=? ?truebu1repeatrepeat ?truebu1\+\+? ?truebu1\=\==? ?truebu1findall_workhorsefindall_workhorse=? ?truebu1findallfindall=? ?truebu1findallfindall=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_disjfindall_disj=? ?truebu1findall_disjfindall_disj=? ?truebu1allall=? ?truebu1whilewhile=? ?truebu1skip_untilskip_until=? ?truebu1skip_whenskip_when=? ?truebu1find_whilefind_while=? ?truebu1nth_answernth_answer=? ?truebu1take_at_mosttake_at_most=? ?truebu1drop_at_leastdrop_at_least=? ?truebu1has_fuelhas_fuel? ?truebu1find_at_mostfind_at_most=? ?truebu1all_but_at_leastall_but_at_least=? ?truebu1forfor=? ?truebu1argnargn=? ?truebu1appendappend=? ?truebu1membermember=? ?truebu1det_appenddet_append=? ?truebu1..=? ?truebu1++++=? ?truebu1lengthlength=? ?truebu1make_cmdmake_cmd=? ?truebu1numbervarsnumbervars=? ?truebu1gc_callgc_call? ?truebu1groundground? ?truebu1atomatom? ?truebu1floatfloat? ?truebu1numbernumber? ?truebu1compoundcompound? ?truebu1appendNappendN=? ?truebu1append_conjappend_conj=? ?truebu1append_disjappend_disj=? ?truebu1tabtab? ?truebu1getget? ?truebu1isis=? ?truebu1exprexpr=? ?truebu1comparecompare=? ?truebu1=====? ?truebu1\==\===? ?truebu1@<@<=? ?truebu1@>@>=? ?truebu1@=<@=<=? ?truebu1@>=@>==? ?truebu1<<=? ?truebu1>>=? ?truebu1=<=<=? ?truebu1>=>==? ?truebu1=:==:==? ?truebu1=\==\==? ?truebu1++=? ?truebu1--=? ?truebu1\\=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm=? ?truebu1bb_letbb_let=? ?truebu1bb_change_argbb_change_arg=? ?truebu1letlet=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm? ?truebu1bb_letbb_let=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1:=::=:=? ?truebu1##? ?truebu1powpow=? ?truebu1loglog=? ?truebu1sqrtsqrt=? ?truebu1expexp=? ?truebu1loglog=? ?truebu1sinsin=? ?truebu1coscos=? ?truebu1tantan=? ?truebu1asinasin=? ?truebu1atanatan=? ?truebu1acosacos=? ?truebu1integerinteger=? ?truebu1floatfloat=? ?truebu1statisticsstatistics=? ?truebu1predicate_propertypredicate_property=? ?truebu1current_predicatecurrent_predicate=? ?truebu1current_predicatecurrent_predicate? ?truebu1ctimectime? ?truebu1helphelp? ?truebu1aproposapropos? ?truebu1aproposapropos=? ?truebu1unixunix? ?truebu1systemsystem? ?truebu1meta_interpretermeta_interpreter? ?truebu1tracetrace? ?truebu1dynamicdynamic? ?truebu1assertaasserta? ?truebu1assertzassertz? ?truebu1assertassert? ?truebu1retractretract? ?truebu1retractallretractall? ?truebu1instanceinstance=? ?truebu1eraseerase? ?truebu1clauseclause=? ?truebu1abolishabolish=? ?truebu1debugdebug? ?truebu1consultconsult? ?truebu1reconsultreconsult? ?truebu1listinglisting ?truebu1listinglisting? ?truebu1listinglisting=? ?truebu1=>=>=? ?truebu1assumeiassumei? ?truebu1assumelassumel? ?truebu1assumedassumed? ?truebu1assumed_clauseassumed_clause=? ?truebu1assumed_clauseassumed_clause=? ?truebu1-:-:=? ?truebu1is_assumedis_assumed? ?truebu1is_dynamicis_dynamic? ?truebu1bbbb ?truebu1bbbb? ?truebu1bb_listbb_list? ?truebu1bb_elementbb_element=? ?truebu1sortsort=? ?truebu1keysortkeysort=? ?truebu1bagofbagof=? ?truebu1setofsetof=? ?truebu1^^=? ?truebu1free_variablesfree_variables=? ?truebu1notnot? ?truebu1term_charsterm_chars=? ?truebu1vars_ofvars_of=? ?truebu1user_erroruser_error=? ?truebu1errmeserrmes=? ?truebu1quietmesquietmes? ?truebu1mainmain ?truebu1mainmain? ?truebu1topleveltoplevel ?truebu1is_prologis_prolog? ?truebu1get_codeget_code? ?truebu1put_codeput_code? ?truebu1nlnl ?truebu1readread? ?truebu1read_termread_term=? ?truebu1top_read_termtop_read_term=? ?truebu1warn_singletonswarn_singletons=? ?truebu1read_with_singletonsread_with_singletons=? ?truebu1read_clauseread_clause? ?truebu1read_tokensread_tokens=? ?truebu1writewrite? ?truebu1printprint? ?truebu1writeqwriteq? ?truebu1portable_displayportable_display? ?truebu1displaydisplay? ?truebu1portrayportray? ?truebu1portray_clauseportray_clause? ?truebu1pp_clausepp_clause? ?truebu1pp_termpp_term? ?truebu1fast_writefast_write? ?truebu1ttyinttyin? ?truebu1ttyoutttyout? ?truebu1ttyputttyput? ?truebu1ttynlttynl ?truebu1ttyprinttyprin? ?truebu1ttyprintttyprint? ?truebu1ttycwritettycwrite? ?truebu1ttycwritelnttycwriteln? ?truebu1seesee? ?truebu1seeingseeing? ?truebu1seenseen ?truebu1telltell? ?truebu1tellingtelling? ?truebu1toldtold ?truebu1see_atsee_at? ?truebu1seeing_atseeing_at? ?truebu1tell_attell_at? ?truebu1telling_attelling_at? ?truebu1file_search_pathfile_search_path? ?truebu1file_extension_listfile_extension_list? ?truebu1file_libraryfile_library=? ?truebu1make_file_namemake_file_name=? ?truebu1find_filefind_file=? ?truebu1exists_fileexists_file? ?truebu1see_or_failsee_or_fail=? ?truebu1flushflush ?truebu1sreadsread=? ?truebu1swriteswrite=? ?truebu1bu0bu0=? ?truebu1bu1bu1? ?truebu1current_opcurrent_op=? ?truebu1opop=? ?truebu1is_builtinis_builtin? ?truebu1editedit=? ?truebu1my_editmy_edit? ?truebu1editedit ?truebu1eded ?truebu1textedittextedit ?truebu1emacsemacs ?truebu1picopico ?truebu1notepadnotepad ?truebu1vivi ?truebu1coco ?truebu1current_user_filecurrent_user_file? ?truebu1lsls ?truebu1dirdir ?truebu1make_applmake_appl? ?truebu1make_executable_unix_applmake_executable_unix_appl=? ?truebu1makemake ?truebu1makemake? ?truebu1makemake=? ?truebu1makemake=? ?truebu1makemake=? ?truebu1make0make0=? ?truebu1cmakecmake ?truebu1cmakecmake? ?truebu1cmakecmake=? ?truebu1kmakekmake ?truebu1kcmakekcmake ?truebu1tmaketmake ?truebu1tmaketmake? ?truebu1tmaketmake=? ?truebu1ctracectrace ?truebu1bootboot ?truebu1add_trueadd_true=? ?truebu1gc_readgc_read? ?truebu1gc_read_clausegc_read_clause? ?truebu1do_bodydo_body? ?truebu1tr_bodytr_body=? ?truebu1ith_clauseith_clause=? ?truebu1char_in_cmdchar_in_cmd=? ?truebu1show_code0show_code0=? ?truebu1bu_ctrbu_ctr=? ?truebu1patch_itpatch_it=? ?truebu1lwritelwrite? ?truebu1module_callmodule_call=? ?truebu1modulemodule? ?truebu1modulemodule=? ?truebu1is_moduleis_module? ?truebu1modulesmodules? ?truebu1current_modulecurrent_module? ?truebu1module_predicatemodule_predicate=? ?truebu1module_namemodule_name=? ?truebu1publicpublic? ?truebu1is_publicis_public? ?truebu1gensymgensym=? ?truebu1init_gensyminit_gensym? ?truebu1spy_goalspy_goal? ?truebu1spyspy? ?truebu1spyingspying? ?truebu1nospynospy? ?truebu1otherwiseotherwise ?truebu1falsefalse ?truebu1copy_termcopy_term=? ?truebu1phrasephrase=? ?truebu1phrasephrase=? ?truebu1nth_membernth_member=? ?truebu1member_imember_i=? ?truebu1savedsaved=? ?truebu1stat_dictstat_dict=? ?truebu1set_c_thresholdset_c_threshold? ?truebu1set_c_thresholdset_c_threshold=? ?truebu1set_c_traceset_c_trace? ?truebu1CC=? ?truebu1halthalt ?truebu1::=? ?trueBinProlog3.45/src/dcg.wam100664 764 764 4562 6664734343 14360 0ustar javierjaviertry_dcg_expansion_ -->?? $bin_cut?? ? ? ?dcg_ruletry_dcg_expansion_ ? ? dcg expansion error-> ?errmesdcg_rule -->-->?? dcg_body???? dcg_conj ??? =?4 ??3 :-??  ?dcg_headdcg_head @@@@??true ?@@? ?? dcg_body? ????  ?dcg_bodydcg_head_true ? ? ?dcg_goaldcg_head ,,??? dcg_body????? ? ?  ?dcg_goaldcg_head_true ? ? ?dcg_goaldcg_goal_? +???J01 ?truedcg_body_ ?B?? ? ?phrase??? ?truedcg_body ,,??? dcg_body?? ?? dcg_conj ????  ?  ? ?dcg_bodydcg_body ->->??->??? dcg_body????? ?  ?dcg_bodydcg_body ;;??;??? dcg_disj?????  ?dcg_disjdcg_body{}{}? ? ? ??truedcg_body!!! ? ??truedcg_body[][]true ? ??truedcg_body ..??? dcg_body?? ?? dcg_conj ????  ?  ? ?dcg_termdcg_body_dcg_goaldcg_term_C??? ?truedcg_disj _ dcg_disj0?????? ? ?dcg_bodydcg_disj0 _ = ???J1? =?? ? ? ? ?dcg_conjdcg_disj0_ ? ? ?truedcg_conj_true ? ??truedcg_conj_dcg_CONJdcg_CONJtruetrue ? ??truedcg_CONJ,,??,???dcg_CONJdcg_CONJ_,?? ?trueC..?? ? ? ?truephrase_ ? []phrasephrase _ =??=?? call?? ? ?dcg_bodyportable_expand_term-->-->?? ? ?? ? ?try_dcg_expansionportable_expand_term-->>-->>??? ? ?try_edcg_expansion??? errmesexpected_to_expand?call_ifdefportable_expand_term_ ? ?trueBinProlog3.45/src/read.wam100664 764 764 46654 6664734343 14566 0ustar javierjavierdefault_prologbinprologbinprolog ?truepeval_ioget_codeget_code? ?get0?truepeval_ioput_codeput_code? ?put?truepeval_ionlnlcnl ?truepeval_ioseeingseeing? ?seeing_telling0?truepeval_iotellingtelling? ?seeing_telling1?truepeval_ioseeing_atseeing_at? ?seeing_telling_at0?truepeval_iotelling_attelling_at? ?seeing_telling_at1?truepeval_iofast_writefast_write? ?cwrite?truefast_write_ ?B? ?trueget_code_J1 ?trueput_code_?J0 ?truenl_B?truesee_0?J*0? ?truesee_ ? ? unable_to_see ?user_errorseeing_0J)1 ?truetelling_1J)1 ?truetell_1?J*0? ?truetell_ ? ? unable_to_tell ?user_errorseen_0J+0truetold_1J+0truesee_at_0?J-0? ?truesee_at_ ? ? unable_to_see_at ?user_errortell_at_1?J-0? ?truetell_at_ ? ? unable_to_tell_at ?user_errorseeing_at_0J,1 ?truetelling_at_1J,1 ?truefind_file _ $bin_cut?file_search_path?file_extension_list?find_file1????? ?atomfind_file librarylibrary? $bin_cut?file_library??find_file1????? ?atomfind_file_ ? bad file name ?user_errorfind_file1 _ ? ? ? ? ?0J)0 ?  ?  ?  ?find_file2find_file2 _ $bin_cut? see?? ? ? ? ?see_a_filefind_file2_ findall ?4 ? ? findall ?4 ? ?errmes4?4??3file_not_found?3+4? ?3+ ??3 ,4 ? name ? ?3 member ??3 ,4 ? name ? ?3 member ?? ?seesee_a_file _ see_or_fail?seen? ?make_file_nameread_clause_ warn_singletons???? ?read_with_singletonsread_with_singletons_ singletons??? ?r_termwarn_singletons ..?? ? ?J M0 ?1J 0 .?? fail? ? ?warn_singletons1warn_singletons_ ?truewarn_singletons1:-:-? ??truewarn_singletons1_ :-?>? seeing_telling_at0 ? melt_varnames? ttyout4 ? $bin_cut??3 ,4 ? ,4 ? ,nl ,4 ? ,4 ?,4?,nlnl3cwrite:-...3 print?3 print=> 3 print ** warning singleton_variables, byte=> ?3 print? ? ?add_truemelt_varnames[][] ?truemelt_varnames..??var???melt_varnamesread_ ? ?r_termtop_read_term_read_termread_term_ r_vars??? ? ?r_termr_vars[][][] ?truer_vars..??var???.??=??r_varssingletons _ ? ? member4??3var?>?s0 ? ?findallprint_portable_printwrite_portable_writewriteq_portable_writeqttyin_0J)0 call?see?? user ?seettyout_1J)0 call?flushtell?? user ?tellttyprin_ write? ?ttyoutttyprint_ ,4?nl3write? ?ttyoutttycwrite_ cwrite? ?ttyoutttycwriteln_ ,4?nl3cwrite? ?ttyoutttynl_ ? nlttyoutttyput_ put? ?ttyoutdisplay_ portable_display? ?ttyoutr_term_ read_tokens??r_and_check??$bin_cut?=??? ?repeatr_and_check_ ? all_read?? 1200 ?rtr_and_check_ ?syntax_errorall_read[][] ??trueall_read_ ? ? .operator.expected.after.expression[] ?syntax_errorexpect_.??? ?trueexpect_ ? .?.or.operator.expected[] ?syntax_errorprefixop_ ? ? $bin_cut?? prefixop fy ?get_op0prefixop_ ? -?1?? prefixop fx ?get_op0postfixop_ ? ? $bin_cut?? postfixop yf ?get_op0postfixop_ ? -?1?? postfixop xf ?get_op0infixop _ ? ? $bin_cut? -?1?? infixop xfx ? ?get_op0infixop _ ? ? $bin_cut? -?1?? infixop xfy ? ?get_op0infixop _ ? ? -?1?? infixop yfx ? ?get_op0ambigop _ infixop????? ? ?  ?postfixoprt[][] ? .expression.expected[] []syntax_errorrt ..?? ? ? ? ? ?  ?  ?  ?rtsrtsvarvar??.(?? r_args ? ? ? $bin_cut? exprtl0 ?4 ?????3 apply?.? ? 999  ?  ?rtrts varvar?? ?? ?exprtl0rts atomatom-.??integer?box? ?0?J0?exprtl0rts atomatom-.? ?atom? float_minus?? $bin_cut? exprtl0 ??????floatrtsatomatom?.(?? r_args ? ? ? =.. ?4?$bin_cut?exprtl0 ? ?????3.?.? ? 999  ?  ?rtrts atomatom? $bin_cut? after_prefix_op? ? ??????  ?  ? ?prefixoprts atomatom? ?? ?exprtl0rts integerinteger?box?? ?? ?exprtl0rts[[.]?? []exprtl0rts [[ ?? r_list ? ? ? $bin_cut? exprtl0 ?4 ?????3 .? ? 999  ? ?rtrts (( ?? expect) ? ? $bin_cut? exprtl0 ? ????? 1200  ?  ? ?rtrts (((( ?? expect) ? ? $bin_cut? exprtl0 ? ????? 1200  ?  ? ?rtrts{{.}?? {}exprtl0rts {{ ?? expect} ? ? $bin_cut? exprtl0 ?4 ?????3 {}? 1200  ? ?rtrts stringstring? ?? ?exprtl0rts _ ? .? .cannot .start .an .expression[] ?syntax_errorr_args ..,?.??? $bin_cut? r_args ???? 999 ?  ?rtr_args..)?[] ? ??truer_args_ ? ? .,).expected.in.arguments[] ?syntax_errorr_list ..,?.??? $bin_cut? r_list ???? 999 ?  ?rtr_list ..|? ?? $bin_cut?expect]??? 999 ? ?rtr_list..]?[] ? ??truer_list_ ? ? .|].expected.in.list[] ?syntax_errorafter_prefix_op _ ???J 0? .prefix .operator .? .in .context .with .precedence .?[]  ? ?syntax_errorafter_prefix_op _ prefix_is_atom ?? exprtl ??????? ?  ?peepopafter_prefix_op_ =.. ?4 ? $bin_cut? exprtl ?? ?????3 .? . ?[] ? ?  ?  ?  ?rtpeepop ..??.(?atom? ?.??.(?atom??truepeepop ..??atom? ?.??infixop????infixoppeepop..??atom? ?.??postfixop???postfixoppeepop_ ? ?trueprefix_is_atom..??prefix_is_atomprefix_is_atominfixopinfixop??=? ???J 0trueprefix_is_atompostfixoppostfixop??? ???J 0trueprefix_is_atom)) ?trueprefix_is_atom]] ?trueprefix_is_atom}} ?trueprefix_is_atom|| ?1100?J 0trueprefix_is_atom,, ?1000?J 0trueprefix_is_atom[][] ?trueexprtl0..? ?atom? $bin_cut? or4 ?4 ??3 exprtl4 ?0????3 .4 ? ?3 infixop? ? ? ?3 exprtl4 ?0????3 .4 ? ?3 postfixop???  ?  ?  ?ambigopexprtl0 ..??atom? $bin_cut? exprtl4 ?0?????3 .4 ??3 infixop????  ?infixopexprtl0 ..??atom? $bin_cut? exprtl4 ?0?????3 .4 ??3 postfixop???  ?postfixopexprtl0 ..,??1000J 0? $bin_cut? exprtl ?10004 ?????3 ,?? 1000  ? ?rtexprtl0 ..|??1100J 0? $bin_cut? exprtl ?11004 ?????3 ;?? 1100  ? ?rtexprtl0 ..?? $bin_cut? syntax_error4 ?4 ??3 .? .follows .expression[]3 .??cant_follow_exprexprtl0_ ? ? ?truecant_follow_expratomatom?atom ?truecant_follow_exprvarvar=?variable ?truecant_follow_exprintegerinteger?integer ?truecant_follow_exprstringstring?string ?truecant_follow_expr((((bracket ?truecant_follow_expr((bracket ?truecant_follow_expr[[bracket ?truecant_follow_expr{{bracket ?trueexprtl..??infixop? ? ? ?? ?J 0? ?J 0? =.. ?4?exprtl? ? ?????3.?.?.?[]  ? ?  ?rtexprtl..? ?postfixop? ? ?? ?J 0? ?J 0? .?.?[] peepop ? ?exprtl ? ??????=..exprtl ..,??1000J 0?1000J 0? $bin_cut? exprtl ?10004 ?????3 ,?? 1000  ?  ?rtexprtl ..|??1100J 0?1100J 0? $bin_cut? exprtl ?11004 ?????3 ;?? 1100  ?  ?rtexprtl _ ? ? ?truesyntax_error_0J)00J,0 start_syntax_error???see?fail? user ?seestart_syntax_error _B? display?display_list?length??bb_letsyntax_errorlength?$bin_cut?? ** SYNTAX ERROR: byte= ?displaystart_syntax_error_ ?truesyntax_error_0J)0 finish_syntax_error?see?fail? user ?seefinish_syntax_error_syntax_errorlengthJ0 -???display_list??$bin_cut?? ?lengthdisplay_list..?? display_token?$bin_cut?display_list?? 32 ?ttyputdisplay_list[][] ?ttynldisplay_list_0 $bin_cut?display_list?99999?  displaydisplay_list ..?? ttyput32-?1?$bin_cut?display_list??? ?display_tokendisplay_list[][] ?ttynldisplay_tokenatomatom? $bin_cut?write_float?? ?floatdisplay_tokenatomatom??displaydisplay_tokenvarvar???displaydisplay_tokenintegerinteger?box???displaydisplay_token stringstring?? .?[] ? ?.34[] .?? .?[] name??display?? ?det_appenddisplay_token_displayread_tokens_ append?[]?$bin_cut?=??=??? 32 ? ?r_toksread_tokens..?[]atomend_of_file[] ?truer_toks-1-1 ??B?truer_toks_?32J 0?J0r_toksr_toks3737? get0?is_terminator?$bin_cut?arith_dif?-1get0?r_toks????repeatr_toks4747?J0r_solidusr_toks3333.??atom!?J0r_after_atomr_toks4040.((??J0r_toksr_toks4141.)??J0r_toksr_toks4444.,??J0r_toksr_toks5959.??atom;?J0r_toksr_toks9191.[??J0r_toksr_toks9393.]??J0r_toksr_toks123123.{??J0r_toksr_toks124124.|??J0r_toksr_toks125125.}??J0r_toksr_toks4646?J0r_fullstopr_toks3434.??string?? r_toks???? 34 ?r_stringr_toks 3939.??atom?? name??r_after_atom???? 39 ?r_stringr_toks_.??var?? $bin_cut? r_name? ? ? or4 ?4 ?$bin_cut?r_toks ????3 ,4 ?=?_3 = ? .95[]3 ,4 ? ,4 ?r_lookup????3 name? ?3 = ? .?>?  ?is_majr_toks _ $bin_cut?r_integer??? ? r_toks??? try_float ????? ?is_numr_toks _.??atom? $bin_cut? r_name? ? ? name? ? r_after_atom ???? ?is_minr_toks _.??atom?J0 name?4? r_after_atom????3.?? ?  ?r_symbolr_after_atom4040.(??J0r_toksr_after_atom_r_toksr_string _ ? ? ? ?J0 ? ?  ?r_stringr_string-1-1-1 ttyput?displaytokenttyput?ttynl$bin_cut?fail? ! end of file in: displayr_string _ ? ? ??J0 ? ?more_stringr_string_.?? ? ? ?r_stringmore_string_ ? ?.??? ? ? ?r_stringmore_string_[] ? ?truepatch_slash..((? ?.(??truepatch_slash_ ? ?truer_solidus4242?J0 r_toks???? ? ?r_solidusr_solidus _.??atom? name?4? r_toks?? ? patch_slash ???3.47? ?r_symbolr_solidus-1-1-1? ttynl? ! end_of_file in /*.. commentdisplayr_solidus4242J0?47J0?r_solidusr_solidus424232 ??truer_solidus_J0r_solidusr_name _.?? $bin_cut?get0?r_name????is_alpha_numr_name_[] ? ?truer_symbol _.?? get0?r_symbol????is_specr_symbol_[] ? ?truer_fullstop-1-1? ttynlfail? ! end_of_file just after full_stopdisplayr_fullstop_[]?32J 0? ?truer_fullstop _.??atom? name?4? r_toks????3.46? ?r_symbolr_integer _ ? ??48J0J 0 . ?[] ? ? .46[] =?4 ??3 . ? .??  ? ?  ?r_intr_int -1-1 ??B?truer_int 39390 ?.39?.?[]?J1?-1J0J1truer_int 3939 $bin_cut?? 0 ?r_digitsr_int _ ? ? ? ? 10  ?  ?  ?r_digsr_digits_ ? ? ? ? ? ?J0?-1J0 ?  ?  ?  ?  ?r_digsr_digs _.? ??48J 0?57J 0???J 0 ?48J 0 ??J0 ? ? ?  ? ?r_digitsr_digs _ ? ?[] ?truer_lookup ..??var??? ? ? ??r_varcountr_lookup..??r_lookupr_varcount_ .?[] ? ?.95[]? ? ?s1 ?truer_varcount_ ?B?? ? ?s? ?truer_varcountss1 ?trueis_alpha_num_?97J 0?122J 0 ?trueis_alpha_num_?65J 0?90J 0 ?trueis_alpha_num_?48J 0?57J 0 ?trueis_alpha_num9595 ?trueis_alpha_num_is_latin1_minis_alpha_num_is_latin1_majis_maj_?65J 0?90J 0 ?trueis_maj9595 ?trueis_maj_is_latin1_majis_min_?97J 0?122J 0 ?trueis_min_is_latin1_minis_num_?48J 0?57J 0 ?trueis_latin1_maj_?192J 0?214J 0 ?trueis_latin1_maj_?216J 0?222J 0 ?trueis_latin1_min_?223J 0?246J 0 ?trueis_latin1_min_?248J 0?255J 0 ?trueis_terminator1010 ?trueis_terminator1313 ?trueis_terminator-1-1 ?trueis_spec3535 ?trueis_spec3636 ?trueis_spec3838 ?trueis_spec4242 ?trueis_spec4343 ?trueis_spec4545 ?trueis_spec4646 ?trueis_spec4747 ?trueis_spec5858 ?trueis_spec6060 ?trueis_spec6161 ?trueis_spec6262 ?trueis_spec6363 ?trueis_spec6464 ?trueis_spec9292 ?trueis_spec9494 ?trueis_spec9696 ?trueis_spec126126 ?trueBinProlog3.45/src/write.wam100664 764 764 17715 6664734344 15002 0ustar javierjavierportable_display_ ? displayw_outportable_print_ ? printw_outportable_write_ ? writew_outportable_writeq_ ? writeqw_outw_out_ fail? 1200 punct ?w_outw_out_ ?truemaybe_paren _punct??J 0??J0 ?truemaybe_paren_ ? ?truemaybe_spacepunctpunct ??truemaybe_space_ ? ??32J0truemaybe_spacequotequotealpha ??32J0truemaybe_space_ ?trueput_string[][] ?trueput_string..???J0put_stringput_string[][] ??J0trueput_string..?? ???J0?J0 ?put_stringput_string..???J0put_stringw_variable_ ?B? ?trueportray_writew_out _alpha ?B?? w_variable?? ? alphamaybe_spacew_out$VAR$VAR? ? ? ??w_VARw_out _alpha ?B? ,4 ? maybe_space?other3 less?0 maybe_space?alpha $bin_cut? cwrite?? ?orw_out_printalpha $bin_cut??portrayw_out _punct current_op ?>?? greater ?? $bin_cut? put40 or4 ?4 ? $bin_cut? put41?3 ,4 ? w_atom??punct>?3 =?writeq3 cwrite? ?atomw_out _ $bin_cut? w_atom????? ?atomw_out _displaypunct? w_atom?display?>? w_args0??40display? ?functorw_out {}{}?punct?123J0 put125? 1200 punct ? ?w_outw_out ..??punct?91J 0 w_tail??? 999 punct ?  ?w_outw_out ,,??? w_out??999?>? put44 w_out??1000punct? maybe_paren1000?41??? 1000 ? 40 ?  ?maybe_parenw_out _alpha or4?4 ? $bin_cut? write_float??3,4? maybe_space?other3less?03 maybe_space?alphafloatw_out _ w_out ? ???????  ?  ? ?functorw_out11 ,4 ? - ?1 ?3 current_op ?fx? ,4 ?= ? ?3 current_op ?fy? $bin_cut?maybe_paren ??40??w_atom????arg1??w_out?? ??? maybe_paren ??41???  ?  ?orw_out11 ,4 ? - ?1 ?3 current_op ?xf? ,4 ?= ? ?3 current_op ?yf? $bin_cut?maybe_paren ??40??arg1??w_out?? ??? w_atom???? maybe_paren ??41???  ?  ?orw_out22 ,4 ? ,4 ? = ? ?3 - ?1 ?3 current_op ?xfy? or4?,4?,4?= ? ?3- ?1 ?3current_op ?yfx?3,4?,4?= ? ?3- ?1 ?3current_op ?xfx? $bin_cut?maybe_paren ??40??arg1??w_out?? ??? w_oper? ???? arg2? ?w_out ?? ??? maybe_paren ??41???  ? ?orw_out _punct w_args0??40?? ? ? ? ?w_atomw_oper _?700J 0? ? ? ? ?w_atomw_oper _ ?punct32J0 put32? punct ?w_atomw_VAR _alpha ?B??0J 0? mod?26? +?65? put?or4?4 ? $bin_cut??3less?263 ,4 ?cwrite?3 //?26? ? alpha ?maybe_spacew_VAR_ $bin_cut?w_atom?write???atomw_VAR _punct w_args014?40??3$VAR? $VAR ? ?w_atomw_atom!!punct ??33J0truew_atom;;punct ??59J0truew_atom[][]punct ??91J093J0truew_atom{}{}punct ??123J0125J0truew_atom..writeqquote ?? .39.46.39[]put_stringw_atom_ or4?4 ? $bin_cut??3,4? ,4 ? put_string ?3 maybe_space??3classify_name ??3 or4 ?,4? put_string ?3=?alpha3 ,4 ?,4? ,4 ? ,4 ? put_string ?393 put393 maybe_space??3=?quote3 =?writeq  ? ?nameclassify_name..??alpha $bin_cut?classify_alpha_tail??is_minclassify_name..??other classify_other_tail??is_specclassify_alpha_tail[][] ?trueclassify_alpha_tail..?? classify_alpha_tail?? ?is_alpha_numclassify_other_tail[][] ?trueclassify_other_tail..?? classify_other_tail?? ?is_specw_args _ ? ??41J0truew_args _?J0?1J0??J0 w_args???44?? ? 999 punct ?  ?w_outw_tail_ ?B??124J0 put93?w_variablew_tail[][] ??93J0truew_tail ..???44J 0 w_tail??? 999 punct ?w_outw_tail _124J0 put93? 999 punct ?w_outpp_term_ write?cnlfail? 0 ?numbervarspp_term_ ?truepp_clause_portray_clauseportray_clause_ fail? ?pp_clause0portray_clause_ ?truepp_clause0:-:-??B? l_clauses?028? 0 ?numbervarspp_clause0:-:-?? +?? portable_writeq?l_clauses?028$bin_cut?? 0 ?numbervarspp_clause0_ :-?true ?pp_clause0l_clauses ,,??? $bin_cut? l_clauses?1??? 1 ?l_clausesl_clauses truetrue2 ?? .?[] ? ?.46[]?J0B?truel_clauses ;;??? l_magic4 ?02? l_magic_nl?.?3 ;?? fail ?  ?l_magicl_clauses ->->??? $bin_cut? l_clauses?5??? 5 ?l_clausesl_clauses _ portable_writeq?l_magic_nl?.? ? ?l_magicl_magic!!0 ?? :- B?truel_magic!!1 ?? , B?truel_magic_0 ? ?? :- B?B?tabl_magic_1 ? ?? .?[] ? ?.44[]?J0B?tabl_magic_3 ?? ( B?truel_magic_4 ?? ; B?truel_magic_5 ? ?? ->B?B?tabl_magic_ ? cwrite:- cwrite?cnltab??atoml_magic_nl22 ?? ?B?B?truel_magic_nl_ ?truel_magic ;;??? $bin_cut? l_magic?1??? 1 ?l_magicl_magic _?8J0?3J0 cnl tab? l_magic2?)? 1 ? ?l_clausesl_magic222 ?? ?B?truel_magic2_ ?trueBinProlog3.45/src/bin.wam100664 764 764 35005 6664734344 14410 0ustar javierjaviercompile_binary_cc_bincompcompile_builtins_cc_builtinscc_must_have_builtinswamwam ?truecc_must_have_builtinscc wam.hc_chunk_filecc_builtins_ bin_builtin?cc_bincomp??fail? ?cc_must_have_builtinscc_builtins_ ?truecc_bincompbinbin ?? fail?portray_clausecc_bincompasmasm cnlportray_clause?cnlfail? BINARY: ?writecc_bincomp_ cc_compile_clause??gg_emit??$bin_cut?? ?newpredcc_bincomp_ failing_to_compile_clause? ?errmesbin_builtin:-:-??true?$bin_cut??cutpbin_builtin_ bu_body???? ? ?bubu_bodyin_headin_head ?:-??true? arg???? ? ?functorbu_bodyin_bodyin_body ?:-??truecc_compile_clause_ ?.??.??.?[]cc_clausefirstarg_1?J0classif_firstclassif_first_ ?B?? ? ?/?0 ?trueclassif_first_ ?B?? ? ?/_0 ?trueclassif_first_ ?/??functorcc_clause_.??.?[]iifirstarg?? ?iiclause?? ?. ?[] iiexecute? ? ? :-?? firstarg??cc_h_b?4??4?getput?max ? ??+?1?vars??functor?dict?fill_info??collapse_args?1?allocate_regs?4?4??3-4?[]3/??3-4?>?3/? ?3/? ?3/ ? ?  ?add_truecc_h_b_/ ? ?/ ? ? / ? ? -4 ??3 /? ? -4??3/?? cc_b?4?4?4?$bin_cut??3/ ? ?3-4??3/??3-4?[]3/? ?  ?cc_hbegin_chunk _ ? iic_chunk>?4??3len? hidden_var4 ? ???3 +?? ?  ?emitend_chunk _ ? iic_chunk>?4??3len? hidden_var4 ? ???3 +?? ?  ?emitemit_-??.??-?? ?trueget_mode_ ? ? ?-??/?? ?trueset_mode _-??/??-??/?? ?truehidden_var_ ? ? ?-??/?? ?truecc_h_cc_h0cc_b _ end_chunk??? ? ?cc_b0cc_h0 _/?? $bin_cut? functor???arg???emit4?? ? begin_chunk ???3iibuiltin??? in_head  ?bucc_h0 _/?? greater?0 $bin_cut? functor ??? emit_head_top_term?? ???? ? ?functorcc_h0_ ? ? ? unexpected_head_atom ?errmesemit_head_top_term_ ? ? ? cc_top_arg11 ? ? ? ?begin_chunk ? ?emit_top_args2? ? ? ? ?cc_top_arg2? ? ? ??? 1 1  ?  ?  ?  ?emit_top_argscc_b0_ ?B?? true? ?cc_b0cc_b0truetrue ? ?/true0?truecc_b0 $bin_cut$bin_cut??? iiput>?4 ??3 cutarg1 cc_b0????? ? ?  ?emitcc_b0 ==???? cc_b0????? ? ?  ?cc_eqcc_b0 _ $bin_cut?cc_builtin?????? ? in_body ?bucc_b0 _/?? greater?0 $bin_cut? functor ??? emit_body_top_term?? ???? ? ?functorcc_b0_ ? ? ? unexpected_body_atom ?errmesemit_body_top_term _ ? ? ? $bin_cut? emit_top_args1? ?? ??? 1 ?  ?  ?  ?cc_top_argcc_eq _ ? ? ?B? ?B?? ?cc_eq1cc_eq_cc_eq1cc_eq1_ =?? emit4 ? ? ? emit4 ? ? ?set_modeget ? ?cc_top_t4? ? ?set_modeput ???3=??3 iiget>?4 ??3 temp03 iiput>?4 ??3 temp0 ? ?  ?  ?cc_top_tout_reg000 ?trueout_reg11 ? ?truecc_builtinaritharith?? ?? arg ?? ? - ?1 ?arg ???out_reg???- ?? ?functor?? ?handle_constant_res?4???emit_top_bargs1 ?????emit4??? cc_b0 ?????3iiarith>???3=??  ?  ?functorcc_builtin_ - ?1 ? arg ?? ? arg1? ? cc_b_args ? ?? ? emit4 ? ? ? cc_b0 ?? ???3 iiinline>??>? ? ?  ? ?functorhandle_constant_res00 ? ??truehandle_constant_res 11 ? ?=?? ?B ?? ? ?truehandle_constant_res 11=?? ?B ?? iiput>?4 ??3 temp0 emit4? ???3iiget>?4??3temp0 ?  ?  ?emithandle_constant_res 11=??? =?? ? ? ?cc_top_tclassif_load _ ? ?B?? ? ? ?trueclassif_load _constant ? ?B?? ? ? ?trueclassif_load _ ? =?? ? ? ?cc_top_tcc_b_args00 ? ?truecc_b_args 11 =?? emit4 ? ???3 iiput>?4 ??3 temp0 ?  ? ?cc_top_temit_top_bargs _ ???J 0? ?trueemit_top_bargs_??J 0?1J 0??J 0??J 0 emit4 ???emit_top_bargs ???????3 iiload?? ?  ?  ? ? ?  ?classif_loademit_top_bargs _??J 0??J 0??J 0? = ? ? +?1 ? emit_top_bargs ???????  ? ?  ?cc_top_temit_top_args _ ???J 0? ?trueemit_top_args_??J 0??J 0??J 0 $bin_cut? get_mode ?? ?emit4? ? ?+?1?emit_top_args???? ???3ii ??4 ? ?3 arg?  ?  ?  ?classif_argcc_top_arg _ ???J 0? ?truecc_top_arg _??J 0??J 0??J 0?1J 0? = ? ? cc_top_arg ??????? ?  ?cc_top_tcc_top_t ==?? ? ? ?B?? ? ?truecc_top_t ==?? ? ? ?B?? ? ?truecc_top_t ==?? greater?0 $bin_cut? functor ? ?? emit_top_structure? ??? ??? cc_args? ?????  ? ? ?functoremit_top_structure_ emit4 ? ? ?emit_args??? ???3 ii ?structure4 ??3 /??  ? ?  ?  ?get_modecc_arg _ ???J 0? ?truecc_arg _??J 0??J 0??J 0?1J 0? = ? ? cc_arg ??????? ?  ?cc_tcc_t ==?? ? ? ?B?? ? ?truecc_t ==?? ? ? ?B?? ? ?truecc_t ==?? greater?0 $bin_cut? functor ? ?? emit_structure? ??? ??? cc_args? ?????  ? ? ?functorcc_args _?1J 0??1J0??J 0??J 0 = ? ? cc_arg1?????? ?  ?cc_tcc_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?cc_argemit_structure_ deep_structure_op ? ? emit4 ???emit_args??????3 ii ?structure4 ??3 /??  ? ? ?  ?get_modeemit_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?emit_args0emit_args0 _ ???J 0? ?trueemit_args0_??J 0??J 0??J 0 $bin_cut? get_mode ?? ?emit4? ? ?unify_op ? ??+?1?emit_args0???? ???3ii?? ? ?  ?  ?  ?classif_argunify_opgetgetunify ?trueunify_opputput ? ? ?deep_var_opdeep_var_op_push $bin_cut??compounddeep_var_op_write ?truedeep_structure_opgetgetget ?truedeep_structure_opputputpush ?trueclassif_arg_ ?B?? ? ? ?trueclassif_arg_constant ?B?? ? ? ?trueclassif_arg_ ?truemax_??J 0? ? ? ?truemax_ ? ?trueadd_true:-:-?? ?:-???trueadd_true_:-?true ?truevars_ call?? ? truefind_occurrencesfind_occurrences[][][] ? ?truefind_occurrences ..??ii?? ??. ? ? ii?? ?? find_occurrences? ? ???  ?  ?occurrenceoccurrence_ ? ? ?B?? ?trueoccurrence _ ? ? ?var ?? ?B ?? ? ? $OCC ?? 1 ?  ?newvaroccurrence$OCC$OCC?? ? ?var???oldvaroccurrence _ ? ? at4? =occ?3=var? bad_occurrence ?errmesoldvar_/?? ? ?=???1J11??J0 ?truenewvar _,?? ? ? =?? ? ? /?? ?truefill_info_ ? 0 ?fill_alltpoint_ ??1J1 ?truefill_all[][] ? ?truefill_all ..?? fill_one??? ? fill_all?? ??? ?fill_var_typefill_var_typeiiii????var?? ? ?B?? ?get_var_typefill_var_type_ ?trueget_var_type//11unifyvoid ??trueget_var_type//11writevoid ??trueget_var_type//1?variable ??trueget_var_type//??value ???J 0?truefill_one iiii?constant??arg?? mark_arg???4???3var4?/113->?/?? ? ?  ?tpointfill_oneiiii?constant=? ? ? ?? ?tpointfill_one iiii????arg?? mark_arg?????mark_var??? ? ?  ?tpointfill_one iiii=??var?? ? ?? mark_var?4 ??3 var??tpointmark_arg getget ? -4 ? /?>?3 *?>???J1truemark_arg putput ? -4 ? />??3 *>????J1truemark_var_var??/11-??/??? ?truemark_var_var??/1?-??/??1?J 0? ?truemark_var_var??/??-??/??1?J 0? ?truemark_var_ ?var??/=?-??/=?truecollapse_args_ ???J 0?truecollapse_args _??J 0??J0 +?1? collapse_args???? ? ? ?collapse_themdefault//?? set_to99999?? 0 ?set_toset_to_ ? ??trueset_to_ ?truecollapse_them _-??*??var??-??var? ?-? ? default? default? check_lifetimes4 ?4 ?4 ??3 -? ?3 -??3 -??  ?defaultcheck_lifetimes--??-??-?? check_var_var??check_var_arg??$bin_cut??check_var_argcheck_lifetimes--??-?? $bin_cut??check_var_argcheck_lifetimes_-??-?? $bin_cut??check_var_argcheck_lifetimes_ ?truecheck_var_var//?? ?/????J 0?truecheck_var_var//?? ?/????J 0truecheck_var_arg //?? ?/????J 0??J 0trueallocate_regs[][] ? ??trueallocate_regs..?? allocate_regs???? ? ?allocate1allocate1 iiii=??var??-?? ? ? $bin_cut?? ? ?  ?allocate_regallocate1_ ? ?trueallocate_reg _/11 ?B?? free_reg???? ? ? ?get_regallocate_reg _/1? ?B?1?J 0? ? ? ?get_regallocate_reg_/??1?J 0? ? ? ?free_regfree_reg _-??/??- ? ? .?? /????J 0? ?truefree_reg_ ? ?trueget_reg _-??.??/??- ?? /??? ?trueget_reg _-??/??-??/???1J1 ?trueBinProlog3.45/src/co.wam100664 764 764 73153 6664734345 14250 0ustar javierjaviermdef_to_def:-:-??:-?? repl_body??? ?hide_atommdef_to_def:-:-?:-? $bin_cut?call?fail? ?repl_bodyrepl_body_call? ?B?? ?truerepl_body_ $bin_cut?? ?repl_macrorepl_body_ $bin_cut?strip_nil??? ? ?split_oprepl_body_ peval_io??$bin_cut?? binprolog ?is_prologrepl_body_ $bin_cut?=?4?ttyprint4??3spying_on?3spy_goal? ?spyingrepl_body_hide_atomis_prolog_ $bin_cut?=??? is prologbb_valis_prolog_default_prologcutp_ ? .36.99.117.116[]namerepl_macro!!$bin_cut? ?cutprepl_macrovarvar? ?B? var?repl_knownrepl_macrononvarnonvar? ?B? nonvar?repl_knownrepl_macroatomicatomic? ?B? atomic?repl_knownrepl_macrofloatfloat? ?B? float?repl_knownrepl_macroatomicatomic? ?B? atomic?repl_knownrepl_macro,,?? ? ? ? ?repl_conjrepl_macro;;?? ? ? ? ?repl_disjrepl_macro->->??->?? repl_body??? ?repl_bodyrepl_macrocomparecompare??? ?compare0???truerepl_macro====?? ?compare0??=truerepl_macro@<@<?? ?compare0??<truerepl_macro@>@>?? ?compare0??>truerepl_macro:=::=:?? ?lval???repl_lvalrepl_macro##? ?dcg_connect?truerepl_macro::?? ?module_call??truerepl_macrofindallfindall???findall???repl_bodyrepl_macrobagofbagof???bagof???repl_bodyrepl_macrosetofsetof???setof???repl_bodyrepl_macroallall???setof???repl_bodyrepl_macro^^??^??repl_bodyrepl_macrocallcall?repl_bodyrepl_macro\+\+?\+?repl_bodyrepl_macronotnot?not?repl_bodyrepl_conj _ ?B? $bin_cut?repl_body??app_body???? ?split_oprepl_conj_,?? repl_body??? ?repl_bodyrepl_disj _if??? ?B ? ? ? ->? ?? repl_body ??repl_body??? ?repl_bodyrepl_disj_or?? repl_body??? ?repl_bodyrepl_lval##?? ? ? ??truerepl_lval_ ? ? ?truerepl_known_true $bin_cut??callrepl_known_fail ?truesplit_opisis?? ? ? ? ?split_is_relsplit_op <<?? ? ? less ? ?split_relsplit_op >>?? ? ? greater ? ?split_relsplit_op =<=<?? ? ? less_eq ? ?split_relsplit_op >=>=?? ? ? greater_eq ? ?split_relsplit_op =:==:=?? ? ? arith_eq ? ?split_relsplit_op =\==\=?? ? ? arith_dif ? ?split_relsplit_is_rel_.?[]expr?? ?B?? ?truesplit_is_rel_.?[]+?0? ?B?? ?truesplit_is_rel_.?[]+?0? $bin_cut?? ? ?floatsplit_is_rel _.?[]+?0? ground?$bin_cut?expr??? binprolog ?is_prologsplit_is_rel_ ? []split_isapp_body[][] ? ??trueapp_body..??,??app_bodystrip_nil..?[] ? ??truestrip_nil..??,??strip_nilsplit_rel_ ? []split_rel_1split_rel_1_ split_is ?? ? ? =.. ?4 ?emit_is ? ???3 .? .? . ?[] ?  ? ?split_issplit_is_ ? ?B?? ? ? ?truesplit_is_ ? ?B?? ? ? ?truesplit_is _ ? $bin_cut?=??? ? ?floatsplit_is_ .? . ? . ?[] $bin_cut? split_is ? ?? ? split_is ? ? ? ? =.. ?4?emit_is ? ???3.?. ? . ? .?[] ? ?  ?=..split_is_ .? . ?[] split_is ? ?? ? =.. ?4 ?emit_is ? ???3 .?. ? .?[] ? ?  ?=..emit_is_.?? ?truedef_to_mbin:-:-?? ? ?? ? ?def_to_mbin0def_to_mbin_ ? ? true ?def_to_mbin0def_to_mbin0 @@@@??:-?? ?B?? add_upper_cont????? ?termcatdef_to_mbin0_:-?? add_cont???? ?termcatadd_upper_cont _ ?B?? add_cont???? ? ? ?add_contadd_upper_cont _ ,4??3strip_cont??? ? ? ?add_contadd_cont,,true??add_contadd_cont,,fail? ?fail??trueadd_cont,,??? term_append?4???3cont? ?add_contadd_cont_? cont??J01 ?truetermcat_? cont??J01 ?trueshow_code _ show_code0?? length? ? write4 ? cnl nth_member?? ? show_instr ?? fail?3 BRUT WAM-ASSEMBLER:4 ? =length ?3 =mode? ? ? ?findallshow_code _B? POST TERM-COMPRESSION CODE:=mode? cnlmc_all_instr??nth_member??? show_instr??fail? ? ?writeshow_code_B? FINAL CODE:=mode? cnlgen_code??fail? ? ?writeshow_code_ ?B?trueshow_code0_ ? member??show_or_skip?? ? ?membershow_or_skipiiiigetvariable??var??-??arg? ??B?trueshow_or_skipiiiiputvalue??var??-??arg? ??B?trueshow_or_skip_ ?trueshow_instr _ ? ?ii???? .?[] write  write?write_write?write show_fun?show_info?cnl?  ?writeshow_funputput ??trueshow_fungetget ??trueshow_fun_writeshow_info_ ? ?var??-??? write4?put9put9put9write% write??3var?  ?writeshow_info_ write??  ?writeshow_steps asmasm ,cnl,4?,4?,cnl,4? ,cnlfail3portray_clause?3writeEXPANDED:3\==?? ,4?,cnl,4?,cnlfail3portray_clause?3writeDEFINITE: ?orshow_steps_ ?truebind_c_chunk_lengthwamwam ? ??truebind_c_chunk_lengthmemmem ? ??truebind_c_chunk_length _ ? ? ? ? ? 0 []bind_lengthbind_length [][] ? ?truebind_length..? ? ? ? ? ? ? ?  ?  ?  ?  ? ? ?make_anti_callmake_anti_call iiii ? ? ? ? ?c_chunk_variable? ii ?4 ? ?3 len? =?? bind_length???????  ?  ?Cmake_anti_call iiii ? ? ? ? ?c_chunk_value? ii ?4 ? ?3 len? -??? bind_length?>?0???  ?  ?Cmake_anti_call_ ?B ? ? ? ii ? ? ? $bin_cut?-???C?4??C???bind_length4?>?0???3.4??3iic_chunk_variable>?03iic_chunk_value4?03len?  ?  ?  ?  ?antigenicmake_anti_call _ ? ??1J 0 bind_length??? ????  ?  ?Cgen_code _ bind_c_chunk_length???member??write_instr???=?no$bin_cut?fail? ? ? ?mc_all_instrgen_code_ ?truemaxarity256256 ?truetemparg_ ? ?truegen_instr iiii???? ? $bin_cut?? ? ?beautifywrite_instr iiii?? ? ? $bin_cut? =?yes? ? ? ?  ?encodewrite_instr_no ?truemc_all_instr_ ? ? mc_one_instr?? ?findallmc_one_instr _ ? mc_peephole??instr_cat??? ? ?memberinstr_cat iiii???? ?ii ?????J 1truebeautifyargarg??encode_argbeautify temptemp?? encode_arg ??????  ? ?tempargbeautifycutargcutarg??encode_argbeautify _ ? ? ?var ? ? -? ?? ?encode2beautify putputwriteconstant ? $bin_cut?encode2pushcut????cutpbeautify _ ? ? ? ?encode2encode_arg _getvariableempty_opvar? ?-??? ?trueencode_arg _putvalueempty_opvar? ?-??? ?trueencode_arg _ ? ? ?var ? ? -? ?? ?encode2encode_arg 11constant ? $bin_cut? encode2?cut???? ?cutpencode_arg _ ? ?constant ? constant ?encode2encode2_ii???? ?truemc_peephole_mc_topmc_input_mc_input0mc_input0 _.?? mc_empty????? ? ?gen_instrmc_emptyempty_opempty_op ? ? ? ??mc_input0mc_empty_ ? ? ?truemc_top_ ? mc0???? ? ?mc_inputmc0 _ mc1?????? ? ? ? ?op_typemc1 pushpushvariable ? ? $bin_cut? mc5???? ?mc_pushmc1 c_chunkc_chunkvariable ? ?? mc5???? ?mc_chunkmc1 _void ?? mc3????? 1 ?mc_selmc1_ ? ? ? ?mc5mc_push _ ? ? op_type?pushstructure mc_transform_push?? ? $bin_cut? =? ?? ? ?  ?mc_inputmc_push_ ? ? ?truemc_chunk _ ? op_type?c_chunkvalue $bin_cut? mc_input???? ? ?mc_inputmc_chunk_ ? ? ?truemc_sel _ ? op_type?>?void $bin_cut? +?1 ? mc_sel?? ??? ? ?mc_inputmc_sel_ ? ? ?truemc3_ ? ? ?mc4mc3 _ ? mc0???? ? ?mc_inputmc4_ $bin_cut?? ?mc_transform_voidmc411 ? ?truemc5_ ? ?truemc5 _ ? mc0???? ? ? ?mc_inputop_typeiiii??=? ?? ? ? ? ?trueop_type_ ? ? expected/ii4 ?errmesmc_transform_void11 ?iiunifyvoid??iiunifyvariable???truemc_transform_void _ii?void??ii?void?? ?truemc_transform_pushiiiipushvariable?? ?iipushstructure??iipushconstant??trueencode unify_variableunify_variableget ? ? 1 ? 0wcodeencode write_variablewrite_variableput ? ? 2 ? 0wcodeencode unify_valueunify_valueget ? ? 3 ? 0wcodeencode write_valuewrite_valueput ? ? 4 ? 0wcodeencode unify_constantunify_constantget ? ? ? 5 0  ? 0wcodeencode write_constantwrite_constantput ? ? ? 6 0  ? 0wcodeencode push_constantpush_constant ? ?/?? 6wcodeencode get_constantget_constant ? ? ? 7  ? 0wcodeencode get_structureget_structure ? ?/?? 8wcodeencode put_constantput_constant ? ? ? 9  ? 0wcodeencode put_structureput_structure ? ?/?? 10wcodeencode get_variableget_variable ? ? ? ? 11  ? ?  ?wcodeencode put_valueput_value ? ? ? 11 ?  ?wcodeencode put_variableput_variable ? ? ? ? 12  ? ?  ?wcodeencode get_valueget_value ? ? ? ? 13  ? ?  ?wcodeencode push_cutpush_cut?? ? ? 14 0 ? 0wcodeencode put_cutput_cut?? ? ? 15 0 ? 0wcodeencode get_cutget_cut?? ? ? 16 0 ? 0wcodeencode execute_?execute_? ? ? ? ? 17 0  ?  ?wcodeencode load_constantload_constant ? ? ? ? 28  ?  ? 0wcodeencode load_variableload_variable ? ? ? ? 50  ? ?  ?wcodeencode load_valueload_value ? ? ? ? 29  ? ?  ?wcodeencode push_structurepush_structure ? ?/?? 51wcodeencode push_variablepush_variableput ? ? 52 ? 0wcodeencode unify_voidunify_void ? ? 61 ? 0wcodeencode write_voidwrite_void ? ? 62 ? 0wcodeencode c_chunk_variablec_chunk_variable ? ? ? 63 ?  ?write_or_skipencode c_chunk_valuec_chunk_value ? ? ? 64 ?  ?write_or_skipencode clause_?clause_? +?1 ? wcode?? ?0??? ?n_nopencode firstarg_?firstarg_?/? ? +?2 ? wcode?? ??? ??  ?n_nopencode end_?end_? ? ? ? ? 0  ?  ? 0wcodeencode inline_variableinline_variable wcode??????? ?n_inlineencode arith_variablearith_variable wcode????0?? ?n_arithencode arith_valuearith_value wcode????1?? ?n_arithencode builtin_?builtin_? wcode??????? ?n_builtinencode_op_ ?op + ?3 ? make_cmd4 ? ? wcode?? ?0 ?0?3 .? .4 ? .? .4 ? .?[]3 .32[]3 .32[]  ? ?n_nopn_inline_ bu_ctrn_inline? ?metacalln_arith_ bu_ctrn_arith? ?metacalln_builtin_ bu_ctrn_builtin? ?metacalln_nop_ bu_ctrn_nop? ?metacallbu_ bu0??? ? ?metacallwrite_or_skip wamwam ??truewrite_or_skip memmem ??truewrite_or_skip_len ? greater_eq ? ? less ? ? $bin_cut? write_or_skip0????? ??  ?  ?  ?c_thresholdwrite_or_skip _ ?truewrite_or_skip0 wamwam $bin_cut? wcodewam?????? c_flag begin_end yes  ?bb_valwrite_or_skip0 cc ? ? ? ? ?? 0wspec_cwrite_or_skip0asmasm? bb_valc_flagbegin_endyes = ?c = ?n wcodeasm?4 ?????3 +? ?  ?  ?  ?ifwrite_or_skip0 _ ?truewcode memmem ?????J #0truewcode wamwam ??J 0?J 0?J 0 put0?writewcode cc ? ? ? ? ? ?wcode_cwcode asmasm ? ? ? ? ? ?wcode_asmwcode_asm _ .? .? .? .?[] write? write--> put9 put9 write? cnl? ?=..let_c_chunk_file_ ? ? c_chunk file_namebb_letc_chunk_file_ ? ? c_chunk file_namebb_valnewpredcc? ? ?:-?? ?newpred0newpred_ ?truenewpred0 _ bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0? ?functornewpred0_ bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0? ?functorcurrpred --??/??/?? bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset?? predicate namebb_valcompile_mem _ ?mem compiling4??...3to? ctime?survive_cleanup?? mcomp_file?? maincomp?4 ? terminate_file?$end11$bin_cut?ctime? -???quietmes4??3compile_time?3 current_user_file? ? ?quietmescompile_mem_ restart? compilation aborted ?ttyprintsurvive_cleanup_ restartcall_ifdefinit_iotruename??init_cmd? ?namemcomp_file_ .?.>?[] statisticsstrings4? statisticssymbols4 ? statisticshtable4 ? translate_all?? statisticscode4 ? - ??? statisticsstrings4 ?-???statisticssymbols4?-???statisticshtable4?-???+???+???+???quietmes4??3bytes_used4?4?4?4?total?3code?3strings?3symbols?3htable?3.?.>?[]3.?.>?[]3 .?.>?[]3 . ? .>?[]3 .?.>?[]3 .?.>?[]3.?.>?[] code ? ?statisticscompile0_.??? .??compile1compile0_ .?[] ?compile1compile1 _? ctime?xcompile???ctime? -???write4? cnl?3total_compile_time? ?init_cmdxcompile _ decorate_fileheader?compile_builtins?member??quietmes4? ctime ? comp_file?? ctime ? - ? ? ? quietmes4 ? fail?3 compile_time ?3compiling4??...3to? ? ?tellxcompile_ decorate_filefooter?fail? $end0 0 ?terminate_filexcompile_ ?tolddecorate_file_c ??c_decorate_filedecorate_file_ ?trueterminate_file _ gg_emit?4?close_c_chunk_file??3.4?[]3.4?[]3iiend??? ?make_dummy_endmake_dummy_endcc $bin_cut?? wam.hc_chunk_filemake_dummy_end_maincompclose_c_chunk_filecc? toldwrite_c_chunkclose_c_chunk_file_ ?truegg_emitmemmem memgen_codegg_emitwamwam wamgen_codegg_emitcc cgen_codegg_emitasmasm asmshow_codecomp_file_ .wam.asm.bin.c[] $bin_cut?translate_all??? ? ?membertranslate_all_translate_all0memoing_translate_all _ ?wam \+4?memoable_file???$bin_cut?if4?true4 ? include_memoed_file??3\+older_file??3 make_memo_file???3current_moduleprolog binprolog ?is_prologmemoing_translate_all_translate_all0memoable_file_ ? ?.??.??.?[] append ?? ? $bin_cut? =?4? name? ? append ?4 ? ? name? ??3 .? ?3.46.112.108[] ?  ? ?namemake_memo_file _ ?wam1J)0 translate_all0??toldtell?? ? ?tellinclude_memoed_file_0J)0 repeatget0?put_to_eof?$bin_cut?seensee?? ?seeput_to_eof-1-1 ??trueput_to_eof_?J0B? ?truetranslate_all0 _0J)0 repeatread_clause?translate??$bin_cut?seensee?? ?seetranslateend_of_fileend_of_file ??truetranslate:-:-?? fail? ?translate_cmdtranslate::-::-?? ?? :-?? fail? ?compile_binarytranslate_ $bin_cut?translate_cmd4??fail?3assert? ?is_dynamic_clausetranslate_ ? ? fail? ? ?maincompis_dynamic_clause:-:-???is_dynamicis_dynamic_clause_is_dynamicmaincomp _ show_steps??? compile_binary??? ? ? ?preprocesstranslate_cmd..?[]?include_filetranslate_cmdcompilecompile??include_filetranslate_cmdensure_loadedensure_loaded??include_filetranslate_cmdconsultconsult??include_filetranslate_cmdreconsultreconsult??include_filetranslate_cmddynamicdynamic? ??dynamictranslate_cmdinteractiveinteractive? ??interactivetranslate_cmdspyspy? ??spytranslate_cmd opop???? if4?4 ?true?3member?.wam.c[]3 encode_op???? ? ?optranslate_cmd_exec_cmdexec_cmd_ maincomp??fail? ?cmd2clausecmd_root$run_time_command$run_time_command ?trueinit_cmd_ get_cmd_no?? ?cmd_rootget_cmd_no_ ? bb_setgensym?0$bin_cut?? gensym ? ?bb_valget_cmd_no_ ?truecmd2clause _:-?? gensym??quietmes% !!! action delayed after compilation, for command:quietmes4?if4?truetrue?3public/?03:-? ?cmd_rootexec_run_time_commands_ exec_run_time_commands0?fail? ?cmd_rootexec_run_time_commands_trueexec_run_time_commands0 _ ?10000 symcat???if4?4?true $bin_cut??3is_compiled?3,4?fail3call? 1forinclude_file _0J)0 quietmes4?memoing_translate_all?? seeing_telling0 ? quietmes4 ??3 end4 ? in ?3 including?3begin4? in?3including? ? ?find_filepreprocess _ fact2rule?? mdef_to_def?? def_to_mbin??? ? ?std_expand_termfact2rule:-:-? ?:-??truefact2rule:-:-?? ?:-???truefact2rule_:-?true ?truemake_cmd_ name??? ?make_cmd0make_cmd0_ ? ? char_in_cmd?? ? ?findallchar_in_cmd _ listify??member??? ? ?memberlistify..?? ?.???truelistify_namemake_appl_ ? .?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[] wam newappl.bpcompile0make_executable_unix_appl_ make_cmd4?? system??3.4?.4? .4 ? .? .4 ? .4 ? .? .4 ? .?[]3 .32 .59 .32 .99 .104 .109 .111 .100 .32 .43 .120 .32[]3 .32 .59 .32 .99 .97 .116 .32 .110 .101 .119 .97 .112 .112 .108 .46 .98 .112 .41 .32 .62 .32[]3 .32 .36 .48 .39[]3 .59 .32 .101 .99 .104 .111 .32 .39 .101 .120 .101 .99 .32[]3.59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[]3.40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[] ? ?make_applcparser_ ? is prolog bin_prolog_with_cparserbb_defkmake_ makewam? ?cparserkcmake_ cmakewam? ?cparsertmake_ ? 12 60tmaketmake_ ? 10000tmaketmake_ cmake? ?set_c_thresholdcmake_ ? wamcmakecmake_ ? usercmakecmake_ ? c .cmakemake_ ? wammakemake_ ? usermakemake_ ? wam .bpmakemake _ ? ? ? ?makemake _ module? if4 ?true4 ? module ??3 make0????3 \+ errmesunable_to_make .4 ? .4 ? .4 ?[]3 in_module?3 project??3 mode?  ? ?current_modulemake0 _ find_file?? make_cmd4 ? ? make_include?? compile0?? ? ctime ?- ? ?? write4 ? cnl?3 =? time?3 .? .?[]  ? ?ctimemake_includecc? .?.4?[]3.46.104[] let_c_chunk_file?? ?make_cmdmake_include_ ?trueasm_ ? asm usercomp_fileasm_ ? user asm .asm BinWAM intermediate codemakeboot_ ? wam prologmakeuboot_ ? wam usermakels_ ? ls -tFsystemdir_ ? dirsystemedit _ make_cmd4??system?compile??3.?.4?.?[]3.32[] ? ? ?find_fileget_editor_ unix_getenvEDITOR? unix_getenvVISUAL? $bin_cut?? ? ?orget_editor_ ? ?truemy_edit_ current_user_file? edit??? ? failcall_ifdefmy_defedit_ current_user_file? defedit??? ? failcall_ifdefdefedit_ edit??? ? ?get_editored_ ? emacsmy_defeditedit_ ? editmy_defedittextedit_ ? texteditmy_editemacs_ ? emacsmy_editnotepad_ ? notepadmy_editpico_ ? picomy_editvi_ ? vimy_editco_ current_user_file? compile?? ? failcall_ifdefs_statisticsc_rootxxxx ?trueset_c_threshold_ ? 100000set_c_thresholdset_c_threshold_ ? bb_letc_flagc_threshold_max?? c_flag c_threshold_min ?bb_letset_c_trace_ ? ? c_flag tracebb_letc_threshold_ ? bb_valc_flagc_threshold_max?$bin_cut?? c_flag c_threshold_min ?bb_valc_threshold110 $bin_cut?? wam.hc_chunk_filec_threshold55500 ?trueBinProlog3.45/src/extra.wam100664 764 764 47502 6664734346 14772 0ustar javierjaviermeta_interpreter_do_bodydo_body_ ? ? ?B?? unbound_goal ?user_errordo_body _ or4?4??3,4?,4? do_body?3$bin_cut?3=?yes3=?nodo_bodydo_compiledcallcall?? ?B?do_bodydo_compiled\+\+? $bin_cut?fail? ?do_bodydo_compiled\+\+? ??truedo_compiledbagofbagof??? ?? do_body?bagofdo_compiledsetofsetof??? ?? do_body?setofdo_compiledfindallfindall??? ?? do_body?findalldo_compiled_calldo_goal_ $bin_cut?spy_goal?? ?spyingdo_goal _ $bin_cut?assumed_clause??do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_assumeddo_goal _ $bin_cut?clause??do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_dynamicdo_goal_ ?B??do_compileddo_goal_ $bin_cut?do_apply??do_goal?? call ?functordo_goal_do_undefdo_undef_ errmes4?4??3=undefined_predicate/??3=culprit?functordo_apply _ .>?.?? =..?? det_append???=..??? ? ?=..do_body ,,?? ? ? ?? ? ?  ?do_conjdo_body ;;?? ? ? ?? ? ?  ?do_disjdo_body!!trueyes ?truedo_body_trueno ?do_goaldo_conj!! ?yes ??truedo_conj_ do_body???? ?do_bodydo_disj ->->?? ? ? ? ?? ?  ?  ?  ?do_if_then_elsedo_disj_do_disj0do_if_then_else _ $bin_cut? do_body???? ?do_bodydo_if_then_else_ ? ? ? ?do_bodydo_disj0_ ? ? ?do_bodydo_disj0_ ? ? ? ?do_bodytrace_ ? 0tr_bodytr_body_ ? ?B?? unbound_goal ?user_errortr_body _ or4?4??3,4? ,4 ? ,4 ? ,4 ? ,cnl tr_body??3 writeCUT3 tab?3 $bin_cut?3=?yes3=?notr_bodytr_body ,,?? ? ? ? ?? ?  ?  ?  ?tr_bodytr_body!!trueyes ??truetr_body ;;?? ? ? ? ?? ?  ?  ?  ?tr_disj1tr_bodytruetruetrueno ??truetr_body_trueno ?tr_goaltr_disj1->->?? ? ? ? ? ?? ?  ?  ?  ?  ?tr_if1tr_disj1_ ? ? ? ?tr_bodytr_disj1_ ? ? ? ? ?tr_bodytr_if1 _ do_body? tr_body???? tr_body????  ?  ?  ? ?iftr_body!! ?yes ??truetr_body ,,??? ,??  ?tr_bodytr_body;;?? ? ? ? ? ?? ?  ?  ?  ?  ?tr_disj2tr_bodytruetrue ? ? ? ? ??tr_bodytr_body _ tr_body????? ? ?tr_goaltr_disj2->->? ? ? ? ? ? ? ??  ?  ?  ?  ? ? ?tr_if2tr_disj2 _ ? ? ? ? ?tr_bodytr_disj2 _ ? ? ? ? ? ?tr_bodytr_if2 _ do_body? tr_body????? tr_body?????  ?  ?  ? ?iftr_goalcallcall??tr_bodytr_goal\+\+? $bin_cut?fail? ?tr_bodytr_goal\+\+? ??truetr_goal_ ,4?,4?,4? or4 ? ortrue ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeRedo: 3 tab?3 ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeExit: 3 tab?3if4?4 ? ,4 ? tr_call? ?3 +1? ?3,4? \+ spying?3arith_eq?103 metacall?3ifis_interactive4? ,4 ?cnl3 =?323,4? if4 ?true get0>?3 arith_eq?103get0?3or4?or4?true3,is_interactive,4?fail3write : 3,4?,4?,4?fail3print?3writeCall: 3tab? ,4?,4? ,4 ? ,cnlfail3 print?3writeFail: 3tab? ? ?ortr_call bagofbagof??? ?? tr_body?? ? ?bagoftr_call setofsetof??? ?? tr_body?? ? ?setoftr_call findallfindall??? ?? tr_body?? ? ?findalltr_call_ $bin_cut?tab?functor???write4? cnl assumed_clause? ? tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! assumed/?? ?is_assumedtr_call_ $bin_cut?tab?functor???write4? cnl clause? ? tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! dynamic/?? ?is_dynamictr_call _ ?B?? functor???write4? cnl call??3!!! compiled/?? ? ?tabtr_call_ $bin_cut?do_apply??tr_call??? call ?functortr_call_do_undefdynamic_ fail? ?make_dynamicdynamic_ ?truemake_dynamic,,??? make_dynamic?? ?make_dynamicmake_dynamic //?? check_dynamic?4?define_dynamic??3/?? ?functorcheck_dynamic_ ?B?? WARNING: dynamic code will shadow compiled predicate? cnl?writecheck_dynamic_ $bin_cut?errmesdynamic code would shadow assumed predicate?? ?is_assumedcheck_dynamic_ ?truedefine_dynamic_ bb_def?$last0? $first 0bb_defensure_dynamic_ $bin_cut?? ?is_dynamicensure_dynamic_ make_dynamic4??3/??functoradd_clause_ $bin_cut?? ?add_clause0add_clause _ add_clause0????$bin_cut?? ? ?ensure_dynamicadd_clause_ :-?? unable to assert clause ?errmesadd_clause0 _??J0??J0???J0 :-?? set???? ? ?bb_defadd_clause0_??J0 :-?? ? ? ?bb_defasserta_ :-?? add_clause$first-1??? ?add_trueassertz_ :-?? add_clause$last1??? ?add_trueassert_assertzassert_itend_of_fileend_of_file ??trueassert_it_assertzretract _ =?4?clause0?? ? erase0? ??3:-?? ?add_trueretractall _ :-?>? val?$first?val?$last? for ???val? ?>?erase0? ? fail? ?add_trueretractall_ ?truecollect_slot_?$firstJ1?$lastJ0??J 0??1J0?$first?J0 ?truecollect_slot_ ?trueinstance$dbref$dbref????J0copy_termerase$dbref$dbref?? ? ?erase0erase0_ collect_slot??? ?bb_rmclause_ ? ?clause0clause_$dbref??clause0clause0 _?$firstJ0?$lastJ0 ith_clause? ??? member4? ??3-?:-??  ? ?  ? ?findallith_clause_-????J1 ?trueith_clause_??J 0?1J0ith_clauseabolish _ ? ? is_dynamic?$bin_cut?abolish0???? ? ?functorabolish_ found/?? abolish_expects_dynamic_clauses ?errmesabolish0_ retractall?fail? ?functorabolish0_ ??$firstJ0?$lastJ0define_dynamicdebug_reconsultconsult_warning_ ? % using compile/1 is MUCH fasterquietmesconsult_ consult_warningconsult0?? ?find_filereconsult_ consult_warningsurvive_cleanup??consult0?? ?find_fileconsult0 _ quietmes4?see?repeatread_clause?consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes4??3consulted?time?3consulting? ? ?ctimeconsult_included_0J)0 consult0?see?? ?find_fileconsult_embedded:-:-??consult_cmdconsult_embedded_ assert_it?? ?expand_termconsult_cmd..?[]?consult_includedconsult_cmdconsultconsult??consult_includedconsult_cmdreconsultreconsult??consult_includedconsult_cmd_metacalllisting _ ? ? is_dynamic?$bin_cut?write% write4? write: cnl listing0??3/?? ? ?functorlisting _ ? ? is_assumed?$bin_cut?write% assumed write4? write: cnl listing1??3/?? ? ?functorlisting0_ portray_clause4?fail?3:-??clauselisting0_ ?B?truelisting1_ portray_clause4?fail?3:-??assumed_clauselisting1_ ?B?truelisting_ listing??fail? 0 255forlisting_ ?B?truegenerate_run_time_predicate _ or4?4?bb_element4? ? nonvar ??3=4? ?3+? ?3,4? = ? /??3=?/$assumed03,4?= ? /$first03=?/??  ? ?bb_listlisting_ listing??fail? ?generate_run_time_predicatelisting_true=> _ ? intuitionistic? metacall?=?$closed? ? ?assume-: _ ? linear?>? metacall?=?$closed? ? ?assumeadd_hint_ll _clause?? ? ?:-?? ? ? ?add_trueassumel_ ? ? linear>? ?assumeassumei_ ? ? intuitionistic>? ?assumeassume_ ?B?? bad_clause? error_in_assume ?errmesassume_assume1assume1_.?[]?assume_fileassume1_assume_llassume_ll _ lval$assumed?? assume_with_hint_ll??? ?add_hint_llassume_with_hint_ll_ ? ? ?B?? ?insert_llassume_with_hint_ll..?[] ? ?trueassumed_ call?? ?assumed_clauseassumed_clause_ ? ?assumed_clauseassumed_clause _ ? ? ?$assumed?J0 ?B ? ? ?get_assumed_clauseget_assumed_clause _ ? ? ?. ? ? clause?? ? ?copy_or_delete_llget_assumed_clause_.??get_assumed_clausecopy_or_delete_ll linearlinear?? ?:-?? ?B? ?B? ?$usedtruecopy_or_delete_llintuitionisticintuitionistic? ? ? ?B? :-?? ?copy_terminsert_ll_ ? ?.?[]?2? .?[]?J0 ?trueinsert_ll_.??insert_llassume_file _ seeing_telling0?see?assume_all?seensee?? ? ? ?find_fileassume_all_ assume_all0??? ? ?gc_read_clauseassume_all0end_of_fileend_of_file ??trueassume_all0_ gc_read_clause?assume_all0??? ?assume_oneassume_one:-:-?.?[] ?? ?assume_fileassume_one:-:-? ?? consult_cmd? true trueifassume_one_ ? ? ?assume_llbb_element ==??+??/??/?? ?.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_30J'1 ?truebb_ ? unsortedbbbb_ ? ,4?,4?,cnl,4? ,4 ? ,4 ? ,4 ? ,4 ? ,cnlfail3 write ?3 bb_orig ? ?3 member ? ?3 if4 ?4 ? = ? ?3 \==?sorted3 ,4 ? sort ? ?3 findall ?4 ? ?3 bb_element ? ?3bb_list ?3write-bboard?3statisticsbboard? ? cnlorbb_orig ==??+??/??/??= ? ? + ? ? /?? /?? functor ???or4?4? $bin_cut??3val? ? ?3lval? ? ? ? ?functorsort_ ? remdup??? < ? ?merge_sortremdup[][][] ?trueremdup ..??.?? = ???J1? .??remdupremdup..??.??remdupmerge_sort_ merge_sort1????[]? ? ? ?lengthmerge_sort100[] ? ??truemerge_sort1 11 ?.??.?[]?truemerge_sort1 _?1J0??J 0 merge_sort1 ?? ? ?? merge_2 ?? ??? ?  ?  ?  ?merge_sort1merge_2[][] ? ??truemerge_2 ..??.? ?.????J1? .? ?merge_2merge_2 _ ?.??.?? ?merge_2ksort_ $bin_cut?=??? -1 ? []keysortksort_ keysort?? illegal_arguments ?user_errorkeysort ..??? ?B ? ? ? -=? ? ? .?? keysort?1? ????  ?  ?  ? ?samkeyrunkeysort_[] ? ?truekeysort..????J 0? ?B ? ? ? -=? ? ? .?? keysort ?1? ? ??keymerge? ? ?+???keysort??? ????  ?  ?  ?  ? ?samkeyrunkeysort _ ? ? ?truesamkeyrun..?? ?B ? ? ? - ? ? ? ? . ? ? -? ? $bin_cut? = ?4 ? samkeyrun?? ????3 .?>?  ?@=<samkeyrun ..?? ?B ? ? ? - ? ? ? ? . ? ? - ? ? < ? ? ?J 1? .??  ?samkeyrunsamkeyrun _ ? ? ?.?[]truekeymerge[][] ?? ? ?truekeymerge ..?? ? ?.? ?-? ? ? ? -? ? $bin_cut? =?4 ? keymerge????3 .?? ?  ?@=<keymerge_.??? ? ?.??keymergekeymerge_ ? ?truesetof _ call? sort??? ? ? ?bagofbagof_ ? ? \==?[] $bin_cut? =.. ?4 ? functor ?. ? findall4 ?4 ??replace_instance? ? ? ?keysort ? ?$bin_cut?concordant_subset ? ? ?=? ??3 - ??3 call?3 ..? ? [] ?free_variablesbagof _.?? call? .?? ?findall^_ ? ?callreplace_instance[][][] ??truereplace_instance ..??-?? ?. ? ? -?? $bin_cut?replace_instance??? ?? ?replace_key_variablesreplace_key_variables00 ??truereplace_key_variables_??J0 ?B???1J0replace_key_variablesreplace_key_variables_??J0??J1?1J0replace_key_variablesconcordant_subset ..??-?? concordant_subset ??4 ????3 .?? ?  ?concordant_subsetconcordant_subset ..??-??.?? = ???J1?concordant_subsetconcordant_subset_[] ? ?trueconcordant_subset[][] ? ? ??trueconcordant_subset_ ? ? ?trueconcordant_subset_ ? ? ?concordant_subsetfree_variables _ ? ?.?? ?B? list_is_free_of?? $bin_cut?? ? ?term_is_free_offree_variables_ ? ?B?? ?truefree_variables _ $bin_cut?free_variables? ???? ?  ? ?explicit_bindingfree_variables _ free_variables?????? ? ? ?functorfree_variables00 ? ??truefree_variables _??J0 -?1 ? $bin_cut? free_variables ??? ??? ? ? ?  ?  ?free_variablesexplicit_binding\+\+?fail ? ?trueexplicit_bindingnotnot?fail ? ?trueexplicit_binding ^^?? ? ?+??trueexplicit_binding setofsetof??? ?-??+??trueexplicit_binding bagofbagof??? ?-??+??trueterm_is_free_of_ ?B??\==term_is_free_of_ term_is_free_of???? ? ?functorterm_is_free_of00 ??trueterm_is_free_of _??J0 -?1? $bin_cut? term_is_free_of???? ? ? ?term_is_free_oflist_is_free_of[][] ?truelist_is_free_of..?? list_is_free_of??? ?\==keysort_ksortnot_ call? $bin_cut?? ? ?\+not_ $bin_cut?fail? ?groundnot_ ? user_errorshould be groundnot? ? fail abortifterm_chars_ ?B?? name??? ? ?swriteterm_chars_ sread??? ? ?namevars_of_ ? ? [] []free_variablesBinProlog3.45/multi/ 40755 764 764 0 5764705606 13352 5ustar javierjavierBinProlog3.45/multi/bboard.c100600 764 764 141735 5764605436 15107 0ustar javierjavier#include #include #include #include #include #include #include #include #include #include #include "bboard.h" #include "rpc.h" #define THREADS 1 #define STACKSIZE 0 #define PREP_CALL(Goal) \ { register term xref; \ register cell xval; int arity; \ IF_OVER("PREP_CALL",H,HeapStk,"heap overflow"); \ FDEREF(Goal); \ arity=GETARITY(xval); \ P=(instr)hget(g.predmark,(no)(PUTARITY(xval,arity+1))); \ if(!P) \ { local_error(xval, \ "metacall to unknown predicate in recursive WAM\n", wam); \ return 0; \ } \ SETREF(regs+arity+1,g.true); \ COPY_CELLS(regs,xref,arity); \ } #define PUSH(top,a) (*++(top)=(cell)(a)) #define POP(top) (*(top)--) #define NOTEMPTY(top,base) ((top)>(term)(base)) #define BIND(Var,Ref,Val) \ {SETREF(Var,COMPOUND(Val)?(cell)Ref:Val); TRAIL_IT(Var);} #define VALID(v) ((v) && (cell)(v) != g.empty) extern struct specsyms g; extern string *atomtable,sbuf,stop; extern term *unwind_trail(); extern struct limit max; extern cell new_func(); extern bp(); pool_t *bb_pool_address = NULL; struct { mutex_t mutex; wamprocess_t *process; } allprocesses; CLIENT * get_bbclient( bb) /* register*/ remotebb_t *bb; /************************************************************* Gets a free client from the blackboard client list. If there is no free client, a new client is created and added to the list. Memory for list nodes is obtained with ordinary malloc ! There is always at least 1 node in the list. *************************************************************/ { clnt_node_t *cl_node; register int alreadyowner; /* for use of bb(un)lock */ cl_node = bb->cl_list; bblock( bb); while (cl_node->inuse) { if (cl_node->next != NULL) cl_node = cl_node->next; else break; } if ( cl_node->inuse) /* no free client in list */ { cl_node->next = (clnt_node_t *) malloc( sizeof(clnt_node_t)); cl_node = cl_node->next; cl_node->inuse = TRUE; cl_node->next = NULL; bbunlock(bb); if (!(cl_node->cl = clnt_create(bb->host, bb->prognum, BBVERS,"tcp"))) { printf("Creation of client in get_bbclient() has failed.\n"); return NULL; /* error */ } } else /* free client has been found */ { cl_node->inuse = TRUE; bbunlock(bb); } return cl_node->cl; } int return_bbclient( bb, client) remotebb_t *bb; CLIENT *client; /************************************************************* Makes the used client available for other remote processes. There is always at least 1 node in the list. *************************************************************/ { clnt_node_t *cl_node; register int alreadyowner; /* for use of bb(un)lock */ cl_node = bb->cl_list; bblock(bb); while (cl_node->cl != client) { if (cl_node->next != NULL) cl_node = cl_node->next; else { printf("Error. Client is vanished in the deep depts"); printf(" of memory...\n"); return 1; /* error */ } } cl_node->inuse = FALSE; bbunlock(bb); return 0; /* OK */ } int remove_bbclient( bb) remotebb_t *bb; /************************************************************* Removes the list of clients out of memory. Blackboard should already be locked. Normally there is always at least one node in the list. *************************************************************/ { clnt_node_t *cl_node, *old_cl_node; cl_node = bb->cl_list; do { clnt_destroy(cl_node->cl); old_cl_node = cl_node; cl_node = cl_node->next; free(old_cl_node); } while (cl_node != NULL); return 0; } localbb_t *createlocalbb(name) register cell name; /*************************************************** allocates and initializes a blackboard of standard size (BUDDYSIZE) from the shared memory pool ***************************************************/ { register localbb_t *bb; register pool_t *pool = (pool_t *)hget(g.bbmark,g.bbmark); assert(pool); mutex_lock(&(pool->mutex)); bb = (localbb_t *)buddymalloc(pool->buddy, BLACKBOARDSIZE); bb->nextbb = pool->blackboards; pool->blackboards = (blackboard_t *)bb; bb->type = LOCALBB; bb->owner = 0; bb->lockno = 1; strncpy(bb->name,NAME(name),NAMESIZE); bb->name[NAMESIZE-1] = 0; /* 0-terminate */ mutex_init(&(bb->mutex),USYNC_THREAD,NULL); mutex_lock(&(bb->mutex)); mutex_unlock(&(pool->mutex)); /* variable part */ buddycreate(bb->buddy, BUDDYSIZE); buddyinit(bb->buddy, (char *)bb+realbuddysize(sizeof(localbb_t)), BLACKBOARDSIZE-realbuddysize(sizeof(localbb_t))); bb->firstterm = (termnode_t *)NULL; bb->lastterm = (termnode_t *)NULL; bb->firstprocess = (processnode_t *)NULL; bb->lastprocess = (processnode_t *)NULL; bb->timestamp = (term)INPUT_INT(0); mutex_unlock(&(bb->mutex)); return bb; } void cleanlocalbb(bb) register localbb_t *bb; /******************************************************** auxiliary routine that removes the term list, kills pending processes, and releases their resources; bb should be a valid blackboard and locked ********************************************************/ { register termnode_t *tp; register processnode_t *pp; assert(bb); assert(bb->type == LOCALBB); tp = bb->firstterm; bb->firstterm = (termnode_t *)NULL; bb->lastterm = (termnode_t *)NULL; while (tp) { /* free all memory in the term list */ register termnode_t *ttp = tp->next; buddyfree(bb->buddy, tp, tp->size); tp = ttp; } pp = bb->firstprocess; bb->firstprocess = (processnode_t *)NULL; bb->lastprocess = (processnode_t *)NULL; while (pp) { /* free all memory in processes list */ register processnode_t *tpp = pp->next; thr_kill(pp->thread,SIGUSR1); /* first kill thread */ thr_continue(pp->thread); /* to guarantee the processing of SIGUSR1 */ buddyfree(bb->buddy, pp, pp->size); pp = tpp; } bb->timestamp = (term)INPUT_INT(0); /* reset timestamp counter */ } int bbclean(bb) register blackboard_t *bb; /**************************************************** empties the blackboard bb by removing all the terms, and all the pending processes; return 1 when successful, 0 when not. ***************************************************/ { assert(bb); if (bb->type == LOCALBB) { register int alreadyowner; bblock(bb); cleanlocalbb((localbb_t *)bb); bbunlock(bb); return 1; } else { return rpc_bbclean(bb); } } int deletelocalbb(pool,bb) register pool_t *pool; register localbb_t *bb; /*************************************************** deletes all the terms and processes from the blackboard, and then deletes the blackboard itself and returns all the resources to the pool. assumes that pool is locked *************************************************/ { register int bi, alreadyowner; assert(bb); assert(bb->type == LOCALBB); bblock(bb); /* free all memory in the term and process list here */ cleanlocalbb(bb); /* return all the remaining blocks to shared memory */ for (bi=2; bibuddy[bi]) { register buddyblock_t *bp = bb->buddy[bi]->next; buddyfree(pool->buddy, bb->buddy[bi], 1 << bi); bb->buddy[bi] = bp; } /* free the buddy system */ mutex_destroy(&(bb->mutex)); buddyfree(pool->buddy, bb, sizeof(localbb_t)); return 1; } int deleteremotebb(pool,bb) register pool_t *pool; register remotebb_t *bb; /************************************************ removes alias of remote blackboard. assumes that pool is locked *************************************************/ { clnt_node_t *cl_node1, *cl_node2; assert(bb); assert(bb->type == REMOTEBB); mutex_lock(&(bb->mutex)); cl_node1 = bb->cl_list; cl_node2 = NULL; while ( cl_node1) { cl_node2 = cl_node1; cl_node1 = cl_node1->next; clnt_destroy(cl_node2->cl); free(cl_node2); } mutex_destroy(&(bb->mutex)); buddyfree(pool->buddy,bb,sizeof(remotebb_t)); return 1; } int deleteblackboard(pool,bb) register pool_t *pool; register blackboard_t *bb; /********************************************* delete blackboard, and return resources to the memory pool. Assume pool to be locked ********************************************/ { register blackboard_t *bp, *bq; register int result = 0; assert(pool); /* remove blackboard from blackboard list */ bq = (blackboard_t *)NULL; bp = pool->blackboards; while (bp != bb && bp) { bq = bp; bp = bp->nextbb; } if (bp) { if (bq) bq->nextbb = bp->nextbb; else pool->blackboards = bp->nextbb; /* remove blackboard */ if (bb->type == LOCALBB) result = deletelocalbb(pool,(localbb_t *)bb); else result = deleteremotebb(pool,(remotebb_t *)bb); } return result; } int printable(l) long l; /* checks whether the 32-bit bit pattern of l can be displayed as string */ { register char *p = (char *)&l; return ('a' <= p[0] && p[0] <= 'z' && p[0]) && ('a' <= p[1] && p[1] <= 'z' || !p[1]) && ('a' <= p[2] && p[2] <= 'z' || !p[2]) && ('a' <= p[3] && p[3] <= 'z' || !p[3]); } term blackboards(H,t) register term H, *t; /************************************** this routine puts all available blackboards into a prolog list (t). **************************************/ { register pool_t *pool = (pool_t *)hget(g.bbmark,g.bbmark); register blackboard_t *bb; assert(pool); mutex_lock(&(pool->mutex)); bb = pool->blackboards; *t = H; while (bb) { PUSH_LIST(new_func(bb->name,0)); bb = bb->nextbb; } PUSH_NIL(); mutex_unlock(&(pool->mutex)); return H; } term bbmem(bb,H,t) register term H, *t; register localbb_t *bb; /************************************** this routine puts the number of non-empty buddies of blackboard bb into a prolog list (t). **************************************/ { register int bi; register cell buddy2 = new_func("buddy",2); register term beginoflist; register int alreadyowner; assert(bb); bblock(bb); beginoflist = H; PUSH_NIL(); for (bi=BUDDYMAX-1; bi>0; bi--) { if (bb->buddy[bi]) { register term buddyterm = H; PUSHVAL(buddy2); PUSHVAL(INPUT_INT(listlength(bb->buddy[bi]))); PUSHVAL(INPUT_INT(1<type == LOCALBB); /* blocksize must be a power of 2 */ if (!n) return 0; while (!(n&1)) n >>= 1; if (n != 1) return 0; mutex_lock(&(pool->mutex)); bblock(bb); p = buddymalloc(pool->buddy, blocksize); mutex_unlock(&(pool->mutex)); if (p) buddyinit(bb->buddy, p, blocksize); bbunlock(bb); return p != NULL; } int bbfree(bb, blocksize) register localbb_t *bb; register unsigned int blocksize; /*********************************** this routines removes a block of blocksize from the buddy system of the blackboard bb and returns it to the memory pool **********************************/ { register pool_t *pool = (pool_t *)hget(g.bbmark,g.bbmark); register void *p; register int n = blocksize, alreadyowner; assert(pool); assert(bb); assert(bb->type == LOCALBB); /* blocksize must be a power of 2 */ if (!n) return 0; while (!(n&1)) n >>= 1; if (n != 1) return 0; mutex_lock(&(pool->mutex)); bblock(bb); p = buddymalloc(bb->buddy, blocksize); bbunlock(bb); if (p) buddyfree(pool->buddy, p, blocksize); mutex_unlock(&(pool->mutex)); return p != NULL; } term poolmem(pool,H,t) register term H, *t; register pool_t *pool; /************************************** this routine puts all non-empty buddies of the memory pool into a prolog list (t). **************************************/ { register int bi; register cell buddy2 = new_func("buddy",2); register term beginoflist; assert(pool); mutex_lock(&(pool->mutex)); beginoflist = H; PUSH_NIL(); for (bi=BUDDYMAX-1; bi>0; bi--) { if (pool->buddy[bi]) { register term buddyterm = H; PUSHVAL(buddy2); PUSHVAL(INPUT_INT(listlength(pool->buddy[bi]))); PUSHVAL(INPUT_INT(1<mutex)); return H; } term my_recursive_copytobb(to, from, firstfree, wam) register term from, to, firstfree; register stack wam; /************************************************** routine that recursively copies the term 'from' to the location 'to', and with 'firstfree' the first available location **************************************************/ { register cell val_t; /* I should check here fore duplication of bb terms */ if (VAR(from)) DEREF2(from,val_t) else val_t = (cell)from; if(VAR(val_t)) { if (ON_BB(val_t)) { SETREF(to,val_t); } else { SETREF(to,to); SETREF(from,to); TRAIL_IT(from); } } else if(INTEGER(val_t) || !GETARITY(val_t)) { SETREF(to,(term)val_t); } else { register int i = GETARITY(val_t); SETREF(to,firstfree); to = firstfree; SETREF(to, (term)val_t); firstfree = to+i; firstfree = my_recursive_copytobb(firstfree,(term)(from+i),firstfree,wam); if (firstfree == to+i) firstfree++; while(--i) { firstfree = my_recursive_copytobb((term)(to+i),(term)from[i],firstfree,wam); } } return firstfree; } term my_recursive_copyfrombb(to, from, firstfree, wam) register term from, to, firstfree; register stack wam; /******************************************* same as copytobb, but in the inverse direction ******************************************/ { register cell val_t; if (VAR(from)) DEREF2(from,val_t) else val_t = (cell)from; if(VAR(val_t)) { if (ON_BB(val_t)) { SETREF(to,to); SETREF(from,to); TRAIL_IT(from); } else { SETREF(to,val_t); } } else if(INTEGER(val_t) || !GETARITY(val_t)) { SETREF(to,(term)val_t); } else { register int i = GETARITY(val_t); SETREF(to,firstfree); to = firstfree; SETREF(to, (term)val_t); firstfree = to+i; firstfree = my_recursive_copyfrombb(firstfree,(term)(from+i),firstfree,wam); if (firstfree == to+i) firstfree++; while(--i) { firstfree = my_recursive_copyfrombb((term)(to+i),(term)from[i],firstfree,wam); } } return firstfree; } void copytobb(bb,t,wam) register term bb,t; register stack wam; /****************************** routine that copies the term t onto the blackboard bb ******************************/ { register term *bakTR=TR_TOP; (void)my_recursive_copytobb(bb,t,bb,wam); TR_TOP=unwind_trail(TR_TOP,bakTR); } term copyfrombb(t,bb,wam) register term t,bb; register stack wam; /************************** routine that copies the term 'bb' from the blackboard into t *************************/ { register term *bakTR=TR_TOP; t = my_recursive_copyfrombb(t,bb,t,wam); TR_TOP=unwind_trail(TR_TOP,bakTR); return t; } term *cleantrail(lowtrail, hightrail, H, wam) term *lowtrail, *hightrail, *H; register stack wam; /******************************************* routine to clean up the temporary trail crated by bbunify ******************************************/ { register term *tr, *trq; for (tr=lowtrail; tr= (cell)buffer && val_t < (cell)(buffer+len)) { SETREF(to,val_t); } else { SETREF(to,to); SETREF(from,to); TRAIL_IT(from); } } else if(INTEGER(val_t) || !GETARITY(val_t)) { SETREF(to,(term)val_t); } else { register int i = GETARITY(val_t); SETREF(to,firstfree); to = firstfree; SETREF(to, (term)val_t); firstfree = to+i; firstfree = my_recursive_copytobuffer(firstfree,(term)(from+i),firstfree, wam,buffer,len); if (firstfree == to+i) firstfree++; while(--i) { firstfree = my_recursive_copytobuffer((term)(to+i),(term)from[i],firstfree, wam,buffer,len); } } return firstfree; } term copytobuffer(buf,t,wam,len) register term buf,t; register stack wam; register int len; /************************************ copies a term into a buffer ***********************************/ { register term *bakTR=TR_TOP, firstfree; firstfree = my_recursive_copytobuffer(buf,t,buf,wam,buf,len); TR_TOP=unwind_trail(TR_TOP,bakTR); return firstfree; } int term_size(t) register term t; /************************************* calculates an upper bound for the term t *************************************/ { register cell val_t; if (VAR(t)) DEREF2(t,val_t) else val_t = (cell)t; if(VAR(val_t) || INTEGER(val_t) || !GETARITY(val_t)) { return sizeof(cell); } else { register int i = GETARITY(val_t), size = i*sizeof(cell); size += term_size((term)(t+i)); while(--i) { register unsigned s = term_size((term)t[i]); if (s > sizeof(cell)) size += s; } return size; } } term putterm(bb, wam, A, H, regs) register localbb_t *bb; register stack wam; register term *A; term H; register term regs; /************************************ this routine puts a term on the local blackboard bb ************************************/ { register term t = (term)(regs[2]); register int size; register unsigned datasize; register termnode_t *tp; register processnode_t *pp, *pq = NULL; register term *bakTR=TR_TOP; register int alreadyowner; register term oldH = H; assert(bb); assert(bb->type == LOCALBB); bblock(bb); bb->timestamp += (1<firstprocess; while (pp) { int status = 0; register int cond; if (bbunify((term)pp->pattern,t,wam,A,&H,&status)) { register instr P; if(pp->condition == (term *)g.true) cond = 1; else { #if 1 H=(term)bp_prolog_call((pp->condition),regs,H,P,A,wam); #else PREP_CALL((cell)(pp->condition)); H = (term)bp(regs,H,P,A,wam); #endif cond = (int)H; } } else cond = 0; if (cond) { if (pq) { pq->next = pp->next; } else { bb->firstprocess = pp->next; } if (pp == bb->lastprocess) bb->lastprocess = pq; if (status) { register int size = sizeof(termnode_t)-4+term_size(t); pp->answer = (termnode_t *)buddymalloc(bb->buddy, size); copytobb((term)pp->answer->data, t, wam); pp->answer->size = size; } pp->timestamp = bb->timestamp; TR_TOP = unwind_trail(TR_TOP,bakTR); if (pp->modifier & DESTRUCTIVE) { /* thr_continue(pp->thread); */ cond_signal(&(pp->condvar)); bbunlock(bb); return H; } else { register processnode_t *ppcont = pp; /* keep pq */ pp = pp->next; /* thr_continue(ppcont->thread); */ cond_signal(&(ppcont->condvar)); } } else { /* restore initial status */ TR_TOP = unwind_trail(TR_TOP,bakTR); H = oldH; pq = pp; pp = pp->next; } } size = term_size(t); datasize = sizeof(termnode_t)-4+size; tp = (termnode_t *)buddymalloc(bb->buddy, datasize); if (!tp) { warnmes("Blackboard memory exhausted"); bbunlock(bb); return 0; } tp->next = (termnode_t *)NULL; tp->size = datasize; copytobb((term)tp->data,t,wam); tp->timestamp = bb->timestamp; if (bb->firstterm) { bb->lastterm->next = tp; bb->lastterm = tp; } else { bb->firstterm = bb->lastterm = tp; } bbunlock(bb); return H; } term getterm(bb, wam, A, H, timestamp, regs) register localbb_t *bb; register stack wam; register term *A; term H; register term *timestamp; register term regs; /********************************************* this routine gets a term from blackboard bb *********************************************/ { register term t = (term)(regs[2]); register int modifier = (int)(regs[4]); register term condition = (term)(regs[3]); register termnode_t *tp, *tq; register int size; register unsigned datasize; register processnode_t *pp; register int alreadyowner; register term oldH = H; register term *bakTR; assert(bb); assert(bb->type == LOCALBB); bakTR = TR_TOP; bblock(bb); tq = (termnode_t *)NULL; tp = bb->firstterm; while (tp) { int status = 1; register int cond; if (*timestamp < tp->timestamp && bbunify((term)tp->data,t,wam,A,&H,&status)) { if(condition == (term)g.true) cond = 1; else { register instr P; #if 1 H=(term)bp_prolog_call(condition,regs,H,P,A,wam); #else PREP_CALL((term)condition); H = (term)bp(regs,H,P,A,wam); #endif cond = (int)H; } } else cond = 0; if (cond) { *timestamp = tp->timestamp; if (modifier & DESTRUCTIVE) { if (tq) { tq->next = tp->next; } else { bb->firstterm = tp->next; } if (tp == bb->lastterm) bb->lastterm = tq; buddyfree(bb->buddy, tp, tp->size); } bbunlock(bb); return H; } else { /* restore initial status */ TR_TOP = unwind_trail(TR_TOP,bakTR); H = oldH; } tq = tp; tp = tp->next; } if (!(modifier & BLOCKING)) { bbunlock(bb); return 0; } H[0] = g.DOT; H[1] = (cell)t; H[2] = (cell)condition; size = term_size(H); datasize = sizeof(processnode_t)-4+size; pp = (processnode_t *)buddymalloc(bb->buddy, datasize); if (!pp) { warnmes("Blacboard memory exhausted"); bbunlock(bb); return 0; } pp->next = (processnode_t *)NULL; pp->size = datasize; pp->thread = thr_self(); cond_init(&(pp->condvar),USYNC_THREAD,NULL); pp->answer = (termnode_t *)NULL; pp->modifier = modifier; copytobb((term)pp->data,H,wam); pp->pattern = (term *)(pp->data[1]); pp->condition = (term *)&(pp->data[2]); if (bb->firstprocess) { bb->lastprocess->next = pp; bb->lastprocess = pp; } else { bb->firstprocess = bb->lastprocess = pp; } bb->owner = 0; /* mutex_unlock(&(bb->mutex)); thr_suspend(thr_self()); mutex_lock(&(bb->mutex)); */ cond_wait(&(pp->condvar),&(bb->mutex)); bb->owner = thr_self(); *timestamp = pp->timestamp; if (pp->answer) { int status = 1; if (!bbunify((term)pp->answer->data,t,wam,A,&H,&status)) { fprintf(stderr,"Blackboard error: answer field inconsistent"); fout(t,wam,stdout); puts(""); fout((term)pp->answer->data,wam,stdout); puts(""); exit(1); } buddyfree(bb->buddy, pp->answer, pp->answer->size); } buddyfree(bb->buddy, pp, pp->size); bbunlock(bb); return H; } term bbterms(bb,H,t,wam) register blackboard_t *bb; register term H, *t; register stack wam; /****************************************** returns the list of waiting terms in t *****************************************/ { assert(bb); if (bb->type == LOCALBB) { register termnode_t *tp; register int alreadyowner; *t = H; bblock(bb); tp = ((localbb_t *)bb)->firstterm; while (tp) { PUSH_LIST((T2C(tp->data))); tp = tp->next; } bbunlock(bb); PUSH_NIL(); return H; } else return rpc_bbterms(bb,H,t,wam); } term bbprocesses(bb,H,t,wam) register blackboard_t *bb; register term H, *t; register stack wam; /****************************************** returns the list of waiting processes in t *****************************************/ { assert(bb); if (bb->type == LOCALBB) { register processnode_t *pp; register int alreadyowner; register term beginoflist = H; PUSH_NIL(); bblock(bb); pp = ((localbb_t *)bb)->firstprocess; while (pp) { register term node = H; PUSHVAL(new_func(",",2)); PUSHVAL(INPUT_INT(pp->thread)); if (pp->modifier & DESTRUCTIVE) { if (pp->modifier & BLOCKING) { PUSHVAL(new_func("gett",2)); } else { PUSHVAL(new_func("gett_nb",2)); /* can never occur */ } } else { if (pp->modifier & BLOCKING) { PUSHVAL(new_func("readt",2)); } else { PUSHVAL(new_func("readt_nb",2)); /* can never occur */ } } PUSHVAL(T2C(pp->pattern)); PUSHVAL(T2C(pp->condition)); PUSH_LIST(T2C(node)); PUSHVAL(T2C(beginoflist)); beginoflist = H-3; pp = pp->next; } PUSH_NIL(); bbunlock(bb); *t = beginoflist; return H; } else return rpc_bbprocesses(bb,H,t,wam); } term processes(H,t) register term H, *t; /************************************** this routine puts all available thread ids into a prolog list (t). **************************************/ { wamprocess_t *wp; *t = H; mutex_lock(&(allprocesses.mutex)); wp = allprocesses.process; while (wp) { PUSH_LIST(INPUT_INT(wp->thread)); wp = wp->next; } mutex_unlock(&(allprocesses.mutex)); PUSH_NIL(); return H; } term bbinfo(bb,H,t) register blackboard_t *bb; register term H, *t; /****************************************** returns information aboutn bb in t *****************************************/ { register term nameinfo; register int alreadyowner; assert(bb); nameinfo = H; PUSHVAL(new_func("name",1)); bblock(bb); PUSHVAL(new_func(bb->name,0)); if (bb->type == LOCALBB) { register term addressinfo, freeinfo, stampinfo; char buffer[20]; addressinfo = H; sprintf(buffer, "%08x", bb); PUSHVAL(new_func("address",1)); PUSHVAL(new_func(buffer, 0)); freeinfo = H; PUSHVAL(new_func("free_memory",1)); PUSHVAL(INPUT_INT(totalbuddymem(((localbb_t *)bb)->buddy))); stampinfo = H; PUSHVAL(new_func("time_stamp", 1)); PUSHVAL((cell)(((localbb_t *)bb)->timestamp)) /* already internalized */; bbunlock(bb); *t = H; PUSH_LIST(T2C(nameinfo)); PUSH_LIST(T2C(addressinfo)); PUSH_LIST(T2C(freeinfo)); PUSH_LIST(T2C(stampinfo)); PUSH_NIL(); } else { register term remotebbinfo, hostinfo, serverinfo; remotebbinfo = H; PUSHVAL(new_func("blackboard",1)); PUSHVAL(((remotebb_t *)bb)->bboard); serverinfo = H; PUSHVAL(new_func("server",1)); if (printable(((remotebb_t *)bb)->prognum)) { long l[2] = {0, 0}; l[0] = ((remotebb_t *)bb)->prognum; PUSHVAL(new_func((char*)l, 0)); } else PUSHVAL(INPUT_INT(((remotebb_t *)bb)->prognum)); hostinfo = H; PUSHVAL(new_func("host",1)); PUSHVAL(new_func(((remotebb_t *)bb)->host,0)); bbunlock(bb); *t = H; PUSH_LIST(T2C(nameinfo)); PUSH_LIST(T2C(hostinfo)); PUSH_LIST(T2C(serverinfo)); PUSH_LIST(T2C(remotebbinfo)); PUSH_NIL(); } return H; } term processinfo(thread,H,t) register thread_t thread; register term H, *t; /********************************* return info about thread in t ********************************/ { register wamprocess_t *wp; mutex_lock(&(allprocesses.mutex)); wp = allprocesses.process; while (wp) { if (wp->thread == thread) { register term procinfo = H; PUSHVAL(new_func("process",2)); PUSHVAL(INPUT_INT(wp->thread)); PUSHVAL((cell)(wp->data)); mutex_unlock(&(allprocesses.mutex)); *t = H; PUSH_LIST(T2C(procinfo)); PUSH_NIL(); return H; } else wp = wp->next; } mutex_unlock(&(allprocesses.mutex)); return 0; } remotebb_t *createremotebb(client,name,host,prognum,bboard) register CLIENT *client; register u_long prognum; register cell name; register char *host; register cell bboard; /*************************************** create remote blackboard description and link it into the list of blackboards **************************************/ { if (rpc_bbcheck(client,NAME(bboard))) { register CLIENT *cp; register remotebb_t *bb; register pool_t *pool = (pool_t *)hget(g.bbmark, g.bbmark); assert(pool); mutex_lock(&(pool->mutex)); bb = (remotebb_t *)buddymalloc(pool->buddy,sizeof(remotebb_t)); bb->nextbb = pool->blackboards; pool->blackboards = (blackboard_t *)bb; bb->type = REMOTEBB; mutex_init(&(bb->mutex),USYNC_THREAD,NULL); bb->owner = 0; bb->lockno = 1; strncpy(bb->name,NAME(name),NAMESIZE); bb->name[NAMESIZE-1] = 0; /* 0-terminate */ mutex_unlock(&(pool->mutex)); strcpy(bb->host,host); bb->bboard = bboard; bb->prognum = prognum; bb->cl_list = (clnt_node_t *) malloc( sizeof(clnt_node_t)); bb->cl_list->inuse = FALSE; bb->cl_list->cl = client; bb->cl_list->next = NULL; mutex_unlock(&(bb->mutex)); return bb; } else return (remotebb_t *)NULL; } int make_bb_pool() /* initialize variables */ { bb_pool_address = (pool_t *)malloc(BB_POOL_SIZE); hdef(g.bbmark, g.bbmark, bb_pool_address, g.timestamp); return (int)bb_pool_address; } void pool_init(pool,size) register pool_t *pool; register unsigned size; /************************************* Initialise pool data structures. **************************************/ { assert(pool); buddycreate(pool->buddy,BUDDYSIZE); buddyinit(pool->buddy, (char *)pool+sizeof(pool_t),size-sizeof(pool_t)); pool->blackboards = (blackboard_t *)NULL; mutex_init(&(pool->mutex),USYNC_THREAD,NULL); mutex_unlock(&(pool->mutex)); } void delete_pool(pool) register pool_t *pool; /******************************** returns all memory allocated for blackboard operations to the memory pool, removes the mutex on the shared memory pool. **********************************/ { register blackboard_t *bb; assert(pool); mutex_lock(&(pool->mutex)); bb = pool->blackboards; while (bb) { deleteblackboard(pool,bb); bb = bb->nextbb; } mutex_destroy(&(pool->mutex)); } int init_small_mem(wam) register stack wam; /**************************************** creates separate data structures for the trail, heap and choice point stack ****************************************/ { register int errctr = 0; /* make_stack gedefinieerd in ru.c */ errctr+=!make_stack(&(wam[TrailStk]),max.TRAIL,2,"trail",NULL); errctr+=!make_stack(&(wam[HeapStk]),max.HEAP,2000,"heap",NULL); errctr+=!make_stack(&(wam[ChoiceStk]),max.CHOICE,MAXARITY+3,"choice",NULL); if(errctr) ERREXIT("not enough memory.") else return 1; } void delete_small_mem(wam) register stack wam; /****************************** frees the memory allocated by init_small_mem ****************************/ { free(wam[TrailStk].base); free(wam[HeapStk].base); free(wam[ChoiceStk].base); } void bb_save_orig() { register pool_t *pool = (pool_t *)hget(g.bbmark, g.bbmark); assert(pool); pool_init(pool,BB_POOL_SIZE); thr_setconcurrency(6); hdef(g.bbmark, g.stdbb, createlocalbb(g.stdbb),g.timestamp); mutex_init(&(allprocesses.mutex),USYNC_THREAD,NULL); allprocesses.process = (wamprocess_t *)NULL; mutex_unlock(&(allprocesses.mutex)); } void bb_restart_orig() { register pool_t *pool = (pool_t *)hget(g.bbmark, g.bbmark); register wamprocess_t *wp; assert(pool); pool_init(pool,BB_POOL_SIZE); hdef(g.bbmark, g.stdbb, createlocalbb(g.stdbb), g.timestamp); mutex_lock(&(allprocesses.mutex)); wp = allprocesses.process; mutex_unlock(&(allprocesses.mutex)); while (wp) { register wamprocess_t *p = wp; wp = wp->next; #if 1 delete_small_mem(p->wam); free(p->wam); free(p); #else thr_kill(wp->thread, SIGUSR1); #endif } allprocesses.process = (wamprocess_t *)NULL; } void killproc(i) long i; { deleteprocess(thr_self()); puts("ERROR: this interrupt code should never be executed"); thr_exit(0); } void *wamproc(arg) void *arg; { cell RegisterBuffer[TEMPARGS+MAXREG]; register term regs=RegisterBuffer+TEMPARGS; register term H; register instr P; register term *A; register term xref; register cell xval; int arity; register stack wam = (stack)arg; sigset_t set; struct sigaction sigact; A=wam[ChoiceStk].base; TR_TOP=wam[TrailStk].base; H=(term)wam[HeapStk].oldtop; addprocess(thr_self(),(term)wam[HeapStk].base,wam); sigact.sa_handler = killproc; sigemptyset(&sigact.sa_mask); sigact.sa_flags = SA_RESTART; sigaction(SIGUSR1,&sigact,NULL); #if 1 H=(term)bp_prolog_call(((term)wam[HeapStk].base),regs,H,P,A,wam); #else FDEREF(H); arity=GETARITY(xval); P=(instr)hget(g.predmark,(no)(PUTARITY(xval,arity+1))); if(!P) { local_error(xval, "metacall to unknown predicate in recursive WAM\n", wam); return 0; } COPY_CELLS(regs,xref,arity); SETREF(regs+arity+1,g.true); bp(regs,H,P,A,wam); #endif #if THREADS deleteprocess(thr_self()); printf("ERROR: could not find thread %d\n", thr_self()); thr_exit(0); #endif return (void *)NULL; /* for the sake of type correctness */ } term bb_op(type,in_arg,out_arg,A,wam,H) register int type; register cell in_arg; register term *out_arg,*A; register stack wam; register term H; { switch (type) { case BB_OP_LOCK: { if (SYMCONST(in_arg)) { register localbb_t *bb = (localbb_t *)hget(g.bbmark,(no)in_arg); if (VALID(bb)) { if (bb->owner != thr_self()) { mutex_lock(&(bb->mutex)); bb->owner = thr_self(); } bb->lockno--; return H; } } else warnmes("Blackboard name is not a constant"); return 0; } case BB_OP_UNLOCK: { if (SYMCONST(in_arg)) { register localbb_t *bb = (localbb_t *)hget(g.bbmark, (no)in_arg); if (VALID(bb)) { if (!bb->lockno) { mutex_unlock(&(bb->mutex)); bb->owner = 0; } bb->lockno++; return H; } } else warnmes("Blackboard name is not a constant"); return 0; } case BB_OP_PROCESSINFO: { if (INTEGER(in_arg)) return processinfo(OUTPUT_INT(in_arg),H,out_arg); else return 0; } case BB_OP_PROCESSES: { return processes(H,out_arg); } case BB_OP_BLACKBOARDS: { return blackboards(H,out_arg); } case BB_OP_BBMEM: { if (SYMCONST(in_arg)) { register localbb_t *bb = (localbb_t *)hget(g.bbmark,(no)in_arg); if (VALID(bb)) { if (bb->type == LOCALBB) { return bbmem(bb,H,out_arg); } else { /* remote blackboard */ return rpc_bbmem(bb,H,out_arg,wam); } } } return 0; } case BB_OP_BBFREE: { register cell xval; register term xref; if (*(term)in_arg != new_func("bb",2)) return 0; FDEREF(((term)in_arg)[1]); if (SYMCONST(xval)) { register localbb_t *bb = (localbb_t *)hget(g.bbmark,(no)xval); if ( VALID(bb) ) { FDEREF(((term)in_arg)[2]); if (INTEGER(xval)) { if (bb->type == LOCALBB) { /* local blackboard */ return bbfree(bb, OUTPUT_INT(xval)) ? H : 0; } else { /* remote blackboard */ return rpc_bbfree(bb, OUTPUT_INT(xval)) ? H : 0; } } } } return 0; } case BB_OP_BBMALLOC: { register cell xval; register term xref; if (*(term)in_arg != new_func("bb",2)) return 0; FDEREF(((term)in_arg)[1]); if (SYMCONST(xval)) { register localbb_t *bb = (localbb_t *)hget(g.bbmark,(no)xval); if (VALID(bb)) { FDEREF(((term)in_arg)[2]); if (INTEGER(xval)) { if (bb->type == LOCALBB) { return bbmalloc(bb, OUTPUT_INT(xval)) ? H : 0; } else { /* remote blackboard */ return rpc_bbmalloc(bb, OUTPUT_INT(xval)) ? H : 0; } } } } return 0; } case BB_OP_POOLMEM: return poolmem((pool_t *)hget(g.bbmark,g.bbmark), H, out_arg); case BB_OP_FREE_: { void *p = malloc(100000); printf("top = %08x\n", p); free(p); return H; } case BB_OP_PROCREATE: { thread_t thread; register stack newwam = malloc(sizeof(struct stack)*MaxStk); memcpy(newwam, wam, sizeof(struct stack)*MaxStk); init_small_mem(newwam); newwam[HeapStk].oldtop = (term *)copytobuffer((term)newwam[HeapStk].base, (term)in_arg, wam, (int)(max.HEAP>>2)); #if THREADS thr_create(NULL,STACKSIZE,wamproc,(void *)newwam,THR_DETACHED,&thread); #else addprocess(-1,in_arg,newwam); wamproc(newwam); #endif return H; } case BB_OP_CREATELOCALBB: { if (SYMCONST(in_arg)) { register localbb_t *bb; char buffer[10]; no test; test = hget(g.bbmark,(no)in_arg); bb = (localbb_t *)hget(g.bbmark,(no)in_arg); if (VALID(bb)) { if (bb->type == LOCALBB) { sprintf(buffer, "%08x", bb); *out_arg = (term)new_func(buffer, 0); return H; } else { warnmes("cannot change existing blackboard"); return 0; } } else { register localbb_t *oldbb = bb; bb=createlocalbb(in_arg); sprintf(buffer, "%08x", bb); *out_arg = (term)new_func(buffer, 0); if (!oldbb) return hdef(g.bbmark,(no)in_arg,(no)bb,g.timestamp) ? H : 0; else /* g.empty */ return hset(g.bbmark,(no)in_arg,(no)bb) ? H : 0; } } else if (VAR(in_arg)) { register localbb_t *bb=createlocalbb(new_func("_",0)); if (bb) { sprintf(bb->name, "%08x", bb); *out_arg = (term)new_func(bb->name, 0); if (!hget(g.bbmark,(no)*out_arg)) hdef(g.bbmark,(no)*out_arg,bb,g.timestamp); return (unify(in_arg,out_arg,wam,A) && hset(g.bbmark,(no)*out_arg,(no)bb)) ? H : 0; } else return 0; } else return 0; } case BB_OP_CREATEREMOTEBB: { register cell xval, name, bboard, host; register term xref; register CLIENT *cl; register u_long prognum; register remotebb_t *rbb; if (*(term)in_arg!=new_func("bb",4)) return 0; FDEREF(((term)in_arg)[1]); name = xval; FDEREF(((term)in_arg)[2]); host = xval; FDEREF(((term)in_arg)[3]); if (IDENTIFIER(xval)) prognum = nametoprog(NAME(xval)); else if (INTEGER(xval)) prognum = OUTPUT_INT(xval); else return 0; FDEREF(((term)in_arg)[4]); bboard = xval; if (SYMCONST(name)) { register remotebb_t *bb = (remotebb_t *)hget(g.bbmark,(no)name); if (VALID(bb)) { if (bb->type == REMOTEBB) return (!strcmp(bb->host,NAME(host)) && !strcmp(bb->name,NAME(name)) && bb->prognum == prognum && bb->bboard == bboard) ? H : 0; else { warnmes("Cannot change blackboard type"); return 0; } } else /* no VALID */ { if (cl=clnt_create(NAME(host),prognum,BBVERS,"tcp")) { if (rbb = createremotebb(cl,name,NAME(host),prognum,bboard)) { if (!bb) return hdef(g.bbmark,(no)name,rbb,g.timestamp) ? H : 0; else /* g.empty */ return hset(g.bbmark,(no)name,(no)rbb) ? H : 0; } else { printf("clnt_create unsuccesful"); return 0;} } else { warnmes("RPC error"); return 0; } } } else if (VAR(name)) { if (cl=clnt_create(NAME(host),prognum,BBVERS,"tcp")) { char buffer[10]; sprintf(buffer, "%08x", cl); *out_arg = (term)new_func(buffer, 0); /* this might cause problems if unify fails */ if (rbb = createremotebb(cl,name,NAME(host),prognum,bboard)) { if (!hget(g.bbmark,(no)*out_arg)) hdef(g.bbmark,(no)*out_arg,rbb,g.timestamp); return unify(((term)in_arg)[1],out_arg,wam,A) && hset(g.bbmark,(no)*out_arg,(no)rbb) ? H : 0; } else return 0; } else return 0; } return 0; } case BB_OP_BBKILL: { if (SYMCONST(in_arg)) { register blackboard_t *bb = (blackboard_t *)hget(g.bbmark,(no)in_arg); if (VALID(bb)) { register pool_t *pool = (pool_t *)hget(g.bbmark,g.bbmark); assert(pool); mutex_lock(&(pool->mutex)); if (deleteblackboard(pool,bb)) { mutex_unlock(&(pool->mutex)); return hset(g.bbmark,(no)in_arg,(no)g.empty) ? H : 0; } else { mutex_unlock(&(pool->mutex)); return 0; } } } return 0; } case BB_OP_BBCLEAN: { if (SYMCONST(in_arg)) { register blackboard_t *bb = (blackboard_t *)hget(g.bbmark,(no)in_arg); if (VALID(bb)) return bbclean(bb) ? H : 0; } return 0; } case BB_OP_KILLPROC: { if (INTEGER(in_arg)) { removeprocessfromblackboard(OUTPUT_INT(in_arg)); thr_kill(OUTPUT_INT(in_arg),SIGUSR1); /* to guarantee the processing of SIGUSR1 */ thr_continue(OUTPUT_INT(in_arg)); return H; } else return 0; } case BB_OP_BBTERMS: { if (SYMCONST(in_arg)) { register blackboard_t *bb = (blackboard_t *)hget(g.bbmark,(no)in_arg); if (VALID(bb)) return bbterms(bb,H,out_arg,wam); } return 0; } case BB_OP_BBPROCESSES: { if (SYMCONST(in_arg)) { register blackboard_t *bb = (blackboard_t *)hget(g.bbmark,(no)in_arg); if (VALID(bb)) return bbprocesses(bb,H,out_arg,wam); } return 0; } case BB_OP_BBINFO: { if (SYMCONST(in_arg)) { register blackboard_t *bb = (blackboard_t *)hget(g.bbmark,(no)in_arg); if (VALID(bb)) return bbinfo(bb,H,out_arg); } return 0; } case RPC_CREATESERVER: { if (serverprog) return 0; else return (*out_arg = (term)initserver(in_arg,wam)) ? H : 0; } case RPC_KILLSERVER: { if (SYMCONST(in_arg)) { if (!strncmp((char *)&serverprog,NAME(in_arg),4)) { killserver(); return H; } else ERREXIT("Server does not exist"); } else if (INTEGER(in_arg)) { if (serverprog == OUTPUT_INT(in_arg)) { killserver(); return H; } else ERREXIT("Server does not exist"); } return 0; } case RPC_BLACKBOARDS: { register cell xval, host; register term xref; register u_long prognum; if (*(term)in_arg!=new_func("bb",2)) return 0; FDEREF(((term)in_arg)[1]); host = xval; FDEREF(((term)in_arg)[2]); if (IDENTIFIER(xval)) prognum = nametoprog(NAME(xval)); else if (INTEGER(xval)) prognum = OUTPUT_INT(xval); else return 0; return rpc_blackboards(host,prognum,H,out_arg,wam); } case RPC_BBMOVE: { register cell xval, host,bb_l, bb_r; register term xref; register u_long prognum; register localbb_t *lbb; if (*(term)in_arg!=new_func("bb",4)) return 0; FDEREF(((term)in_arg)[1]); if (!SYMCONST(xval)){ fprintf(stderr,"first argument is not a symbol constant\n"); return (term)NULL; } bb_l = xval; lbb = (localbb_t *)hget(g.bbmark,(no)bb_l); if ( !VALID(lbb) || (lbb->type != LOCALBB)) { fprintf(stderr,"local blackboard not valid or not local\n"); return (term)NULL; } FDEREF(((term)in_arg)[2]); host = xval; FDEREF(((term)in_arg)[3]); if (IDENTIFIER(xval)) prognum = nametoprog(NAME(xval)); else if (INTEGER(xval)) prognum = OUTPUT_INT(xval); FDEREF(((term)in_arg)[4]); if (!SYMCONST(xval)){ fprintf(stderr,"fourth argument is not a symbol constant\n"); return (term)NULL; } bb_r = xval; return rpc_bbmove(bb_l,host,prognum,bb_r) ? H : 0; } default: return 0; } } int addprocess(thread,t,wam) register thread_t thread; register term t; register stack wam; /******************************************* routine to add a newly created process to the list of processes. This list is needed to keep track of the resources used by the processes. A better solution would be to generalize the wam-structure to keep this kind of information. *******************************************/ { register wamprocess_t *wp; register int datasize = sizeof(wamprocess_t) - 4 + term_size(t); wp = (wamprocess_t *)malloc(datasize); wp->wam = wam; wp->thread = thread; copytobb((term)wp->data,t,wam); mutex_lock(&(allprocesses.mutex)); wp->next = allprocesses.process; allprocesses.process = wp; mutex_unlock(&(allprocesses.mutex)); return 1; } int removeprocessfromblackboard(thread) register thread_t thread; /******************************************* routine to remove a possible pending process entry on any currently existing blackboard This routine should be called before killing a process. Otherwise, a blackbaord will contain a reference to a non-existing process *******************************************/ { register pool_t *pool = (pool_t *)hget(g.bbmark, g.bbmark); register blackboard_t *bb; assert(pool); mutex_lock(&(pool->mutex)); bb = pool->blackboards; while (bb) { if (bb->type == LOCALBB) { register processnode_t *pp, *pq=(processnode_t *)NULL; register int alreadyowner; bblock(bb); pp = ((localbb_t *)bb)->firstprocess; while (pp) { if (pp->thread == thread) { if (pq) { pq->next = pp->next; } else { ((localbb_t *)bb)->firstprocess = pp->next; } buddyfree(((localbb_t *)bb)->buddy, pp, pp->size); bbunlock(bb); mutex_unlock(&(pool->mutex)); return 1; } else { pq = pp; pp = pp->next; } } bbunlock(bb); } bb = bb->nextbb; } mutex_unlock(&(pool->mutex)); return 0; } int deleteprocess(thread) register thread_t thread; /****************************************** routine to release the resources used by thread, and to finally end the thread This routine can only be called by the thread to end itself. ******************************************/ { register wamprocess_t *wp, *wq = (wamprocess_t *)NULL; mutex_lock(&(allprocesses.mutex)); wp = allprocesses.process; while (wp) { if (wp->thread == thread) { if (wq) wq->next = wp->next; else allprocesses.process = wp->next; mutex_unlock(&(allprocesses.mutex)); delete_small_mem(wp->wam); free(wp->wam); thr_exit(0); } else { wq = wp; wp = wp->next; } } mutex_unlock(&(allprocesses.mutex)); return 0; } BinProlog3.45/multi/c.c120777 764 764 0 6664733562 15346 2../src/c.custar javierjavierBinProlog3.45/multi/makefile100600 764 764 7417 5757534071 15146 0ustar javierjavierPROJ=wam BP=../src/ru ../src/wam.bp #BP=../cparser/ru ../cparser/wam.bp VERS=324 #DEFS =-DCPARSER -DBLACKBOARD -DSOLARIS -D_REENTRANT DEFS =-DBLACKBOARD -DSOLARIS -D_REENTRANT OPTI= $(DEFS) -s -O GCCO = gcc -msupersparc $(OPTI)2 ################################################################### # PLEASE use the appropriate combination of compilers and options !!! CC = $(GCCO) OTHER_PROLOG = sicstus BINDIR = $(HOME)/bin # normally this should be the only thing to EDIT !!! ################################################################### P1=engine P2=builtins P3=dict P4=load P5=sym P6=ru P7=io P8=float P9=debug P10=wterm P11=rterm P12=token P13=interf P14=iso P15=buddy P16=bboard P17=rpc P18=c P19=main SELFOBS = ru.o sym.o engine.o load.o NEW_CPROGS=$(P10).c $(P11).c $(P12).c $(P13).c $(P14). \ $(P15).c $(P16).c $(P17).c SRC_CPROGS=$(P1).c $(P2).c $(P3).c $(P4).c $(P5).c $(P6).c $(P7).c $(P8).c $(P9).c $(P18) $(P19) CPROGS=$(SRC_CPROGS) $(NEW_CPROGS) OBS = $(P1).o $(P2).o $(P3).o $(P4).o $(P5).o $(P6).o $(P7).o $(P8).o $(P9).o $(P18).o $(P19).o\ $(P10).o $(P11).o $(P12).o $(P13).o $(P14).o \ $(P15).o $(P16).o $(P17).o PPROGS = $(PROJ).pl stdio.pl CP = cp all: progs ru $(PROJ).bp ru: $(OBS) makefile $(CC) -o ru $(OBS) -lm -lnsl -lthread progs: # add_bp test: rusage bm1 mbp rusage bm2 mbp rusage bm3 mbp rusage bm4 mbp remake: @echo remaking BinProlog with C-parser... echo "make($(PROJ)). " | ../src/bp -q2 mostly_clean: rm -f *.o rm -f otherwam.bp ruclean ru_clean: rm -f ru.*.* oclean: rm -f *.o *.wam clean: rm -f *.o ru core rm -f *.s w2a rm -f *.tar.*.uue *.gz wamclean wam_clean: rm -f *.bp *.out *.wam realclean real_clean: clean wam_clean ru_clean # ----------------- dependencies ------------------ sym.o: sym.c global.h dict.o: dict.c global.h io.o: io.c global.h defs.h builtins.o: builtins.c defs.h global.h load.o: load.c defs.h global.h ru.o: ru.c defs.h global.h bboard.h engine.o: engine.c defs.h global.h bboard.h bb_instr.h float.o: float.c defs.h global.h debug.o: debug.c defs.h prof.h global.h c.o: global.h c.c main.o: main.c rterm.o: rterm.c token.h interf.h global.h wterm.o: wterm.c token.h interf.h token.o: token.c token.h interf.o: interf.c interf.h iso.o: iso.c global.h bboard.o: bboard.c bboard.h rpc.h buddy.h global.h rpc.o: rpc.c rpc.h bboard.h global.h buddy.o: buddy.c buddy.h RM = rm TESTPROGS = prodcons.pl backtrack.pl \ adder.pl swaptest.pl \ lazy.pl bbuffer.pl condget.pl \ incr.pl mread.pl engine.pl #philo.pl REFERENCES = prodcons.ref backtrack.ref \ adder.ref swaptest.ref \ lazy.ref bbuffer.ref condget.ref \ incr.ref mread.ref engine.ref #philo.ref check: ( cd progs; \ for file in $(TESTPROGS); do \ ( name=`basename $$file .pl`; \ # echo "[$$name]. go. " | ../ru ../$(PROJ).bp 2>/dev/null >tmp1.tmp ; \ echo "[$$name]. go. " | ../ru ../$(PROJ).bp >tmp1.tmp ; \ grep -v compile tmp1.tmp | grep -v "Blackboard:" >$$name.tmp ; \ $(RM) tmp1.tmp ; \ if test -s $$name.ref; then \ if diff $$name.ref $$name.tmp; then \ $(RM) $$name.tmp; echo "$$file ok"; \ else \ echo "Error in $$file"; \ fi; \ else \ mv $$name.tmp $$name.ref; \ echo $$name.ref created; \ fi ) ; \ done ) reference: cd progs; \ @for file in $(TESTPROGS); do \ ( name=`basename $$file .pl`; \ echo "[$$name]. go." | $(BP) 2>/dev/null | \ grep -v compile >$$name.ref; \ echo "$$name.ref created" ) ; \ done $(PROJ).bp: rm -f *.wam echo "make($(PROJ),user). " | bp -q2 BinProlog3.45/multi/buddy.c100600 764 764 12547 5764605473 14744 0ustar javierjavier/*LINTLIBRARY*/ /* * Memory allocator based on a buddy system algorithm * * 28/02/93 Initial version: Koen De Bosschere */ #include #include "buddy.h" extern void exit(); #define INVALID (buddyblock_t *)0x1 /* array containing the pointers to the lists */ void buddycreate(buddy, size) buddyblock_t **buddy; /* * create a buddy system * size must be at least BUDDYSIZE bytes */ { unsigned int i; if (!buddy) { fprintf(stderr, "Nilpointer in buddycreate\n"); exit(1); } if ((buddyblock_t **)*buddy != &(buddy[0]->next)) { fprintf(stderr, "Field next in struct buddyblock must have offset 0\n"); exit(1); } if (size < BUDDYSIZE) { fprintf(stderr, "Data structure in buddycreate too small (<%d)\n", BUDDYSIZE); exit(1); } for (i=0; i= 4) { if ((1 << bi) <= size) { unsigned int mask = (1 << bi) - 1; if ((unsigned int)address & mask) { /* split */ buddyblock_t *splitaddress = (buddyblock_t *)((unsigned int)((char *)address+size-1) & ~mask); unsigned int sizeoffirstbuddyblock_t = (char *)splitaddress - (char *)address; buddyinit(buddy,address,sizeoffirstbuddyblock_t); buddyinit(buddy,splitaddress,size-sizeoffirstbuddyblock_t); return; } else { /* buddyblock_t is at properly aligned address */ address->next = buddy[bi]; buddy[bi] = address; address += 1 << bi-2; size -= 1 << bi; } } bi--; } } unsigned int listlength(address) buddyblock_t *address; /* * subsidiairy function */ { unsigned int n = 0; while (address) { n++; address = address->next; } return n; } unsigned int buddymax(buddy) buddyblock_t **buddy; /* * return the size of the biggest buddy block available */ { unsigned int bi = BUDDYMAX-1; while (!buddy[bi] && bi) bi--; return bi ? (1 << bi) : 0; } unsigned int totalbuddymem(buddy) buddyblock_t **buddy; /* * return the total amount of memory available */ { unsigned int total = 0, bi; for (bi=0; binext; } printf("\n"); } } printf("--------------------\n"); printf("Total memory: %u\n", totalbuddymem(buddy)); return 1; } buddyblock_t *buddymalloc(buddy, size) buddyblock_t **buddy; unsigned int size; /* * returns a pointer to a chunk of memory of at least size bytes * return NULL if there is not enough memory */ { register unsigned int buddysize = 4; register buddyblock_t *bp, **qq = (buddy+2); while (buddysize < size) { qq++; buddysize <<= 1; } if (*qq) { bp = *qq; *qq = bp->next; return bp; } else { register buddyblock_t **q; for (q=qq+1; !*q; buddysize <<= 1, q++) ; if (*q == INVALID) return (buddyblock_t *)NULL; bp = *q; *q = bp->next; for (q--; q>=qq; q--) { bp->next = (buddyblock_t *)NULL; *q = bp; bp += buddysize>>2; buddysize >>= 1; } return bp; } } void buddyfree(buddy, address, size) buddyblock_t **buddy; buddyblock_t *address; unsigned int size; /* * returns a block of memory at address of size bytes to * the system. If possible, this block will be fused * with other available blocks to create bigger blocks. */ { register buddyblock_t *p, *q, *tq, *qq = (buddyblock_t *)(buddy+2); register unsigned int buddysize = 4; while (buddysize < size) { qq++; buddysize <<= 1; } tailcallentry: for (q = qq, p = q->next, tq = (buddyblock_t *)NULL; p>address; tq = q, q = p, p = p->next) ; if (((unsigned int)address ^ (unsigned int)p) == buddysize && p) { q->next = p->next; address = p; buddysize <<= 1; qq++; goto tailcallentry; } else if (((unsigned int)q ^ (unsigned int)address) == buddysize && tq) { tq->next = q->next; buddysize <<= 1; qq++; goto tailcallentry; } else { address->next = p; q->next = address; } } unsigned int realbuddysize(size) unsigned int size; { register unsigned int buddysize = 4; while (buddysize < size) { buddysize <<= 1; } return buddysize; } BinProlog3.45/multi/engine.c120777 764 764 0 6664733562 17414 2../src/engine.custar javierjavierBinProlog3.45/multi/float.c120777 764 764 0 6664733562 17114 2../src/float.custar javierjavierBinProlog3.45/multi/debug.c120777 764 764 0 6664733563 17057 2../src/debug.custar javierjavierBinProlog3.45/multi/bboard.pl100600 764 764 10332 5676311404 15233 0ustar javierjavierblackboards(X) :- bb_op(4,_,X). blackboard(B) :- bb_op(8,B,_). blackboard(B,H,P,N) :- bb_op(9,bb(B,H,P,N),_). bbkill(stdbb) :- !, fail. bbkill(B) :- bb_op(10,B,_). kill(P) :- bb_op(13,P,_). bbclean(B) :- bb_op(11,B,_). bbclean :- bb_op(11,stdbb,_). bbempty(B) :- bblock(B), bbterms(B,[]), bbprocesses(B,[]), bbunlock(B). bbempty :- bbempty(stdbb). bbterms(B,X) :- bb_op(15,B,X). bbterms(X) :- bb_op(15,stdbb,X). bbprocesses(B,X):- bb_op(16,B,X). bbprocesses(X) :- bb_op(16,stdbb,X). bbinfo(B,X) :- bb_op(17,B,X). bbinfo(X) :- bb_op(17,stdbb,X). processinfo(P,I):- bb_op(3,P,I). processes(P) :- bb_op(19,_,P). server(X) :- bb_op(20,X,X). killserver(X) :- bb_op(21,X,X). bbmem(B,L) :- bb_op(18,B,L). bbmem(L) :- bb_op(18,stdbb,L). bbmalloc(S) :- bb_op(14,bb(stdbb,S),_). bbmalloc(B,S) :- bb_op(14,bb(B,S),_). bbfree(S) :- bb_op(12,bb(stdbb,S),_). bbfree(B,S) :- bb_op(12,bb(B,S),_). poolmem(L) :- bb_op(5,_,L). tellp(P) :- bb_op(7,P,_). testmem :- bb_op(6,1,_). bbhelp :- write('tellt/1, tellt/2'), nl, write('gett/1, gett/2, gett/3'), nl, write('readt/1, readt/2, readt/3'), nl, write('gett_nb/1, gett_nb/2, gett_nb/3'), nl, write('readt_nb/1, readt_nb/2, readt_nb/3'), nl, write('blackboard/1'), nl, %, blackboard/4'), nl, write('blackboards/1'),nl, write('processes/1'), nl, write('bbinfo/2, processinfo/2'), nl, write('bbshow/0, bbshow/1'), nl, write('bbterms/0, bbterms/1'), nl, write('bbprocesses/0, bbprocesses/1'), nl, write('bbkill/1'), nl, write('kill/1'), nl, write('bbclean/0, bbclean/1'), nl, write('bbempty/0, bbempty/1'), nl, write('bbmem/1, bbmem/2'), nl, write('bbmalloc/1, bbmalloc/2'), nl, write('bbfree/1, bbfree/2'), nl, write('poolmem/1'), nl, write('bblock/1, bbunlock/1'), nl. % write('server/1, killserver/1'), nl. bbshow :- bbshow(stdbb). bbshow(B) :- bbinfo(B,I), write(I), nl, bbterms(B,T), write(terms=T), nl, bbprocesses(B,P), write(processes=P), nl. totalbbmem(T) :- totalbbmem(stdbb,T). totalbbmem(B,T) :- bbmem(B,L), sumprod(L,0,T). sumprod([],T,T). sumprod([buddy(N,S)|L],A,T) :- A1 is A + N*S, sumprod(L,A1,T). bblock(B) :- bb_op(1,B,_). bblock(B) :- bb_op(2,B,_), fail. bbunlock(B) :- bb_op(2,B,_). bbunlock(B) :- bb_op(1,B,_), fail. bblock :- bblock(stdbb). bbunlock :- bbunlock(stdbb). tellt(T) :- put__(stdbb,T). tellt(B,T) :- put__(B,T). put__(B,T) :- nonvar(T), T={A}, !, make_list__(A,L), bblock(B), put_set__(L,B), bbunlock(B). put__(B,T) :- bb_put(B,T). put_set__([],_B). put_set__([X|L],B) :- my_bb_put(B,X), put_set__(L,B). my_bb_put(B,X) :- bb_put(B,X). /* should not be inline builtin */ kludge. /* to suppress bug */ get__(B,T,C,M) :- nonvar(T), T={A}, !, make_list__(A,L), get_set__(M,B,L,C). get__(B,T,C,M) :- get__(B,T,C,M,0). get__(B,T,C,M,_X) :- bb_get(B,T,C,M). get__(_B,_T,_C,_M,_X). /* special trick to create choice point */ gett(T) :- get__(stdbb,T,true,3). gett_nb(T) :- get__(stdbb,T,true,2). readt(T) :- get__(stdbb,T,true,1). readt_nb(T) :- get__(stdbb,T,true,0). gett(B,T) :- get__(B,T,true,3). gett_nb(B,T) :- get__(B,T,true,2). readt(B,T) :- get__(B,T,true,1). readt_nb(B,T) :- get__(B,T,true,0). gett(B,T,C) :- get__(B,T,C,3). gett_nb(B,T,C) :- get__(B,T,C,2). readt(B,T,C) :- get__(B,T,C,1). readt_nb(B,T,C) :- get__(B,T,C,0). check__([],_B) :- !. check__([X|L],B) :- readt_nb(B,X), check__(L,B). checkb__([],_). checkb__([X|L],B) :- readt_nb(B,X), checkb__(L,B). checkb__([X|_],B) :- readt(B,X), !, fail. removeb__([],_B). removeb__([X|L],B) :- gett_nb(B,X), !, removeb__(L,B). removeb__([_X|_],_) :- fail. get_set__(3,B,S,C) :- bblock, repeat, checkb__(S,B), metacall(C), removeb__(S,B), bbunlock. get_set__(2,B,S,C) :- bblock, check__(S,B), metacall(C), removeb__(S,B), bbunlock. get_set__(1,B,S,C) :- bblock, repeat, checkb__(S,B), metacall(C), bbunlock. get_set__(0,B,S,C) :- bblock, check__(S,B), metacall(C), bbunlock. make_list__(T,[X|L]) :- functor(T,',',_N), !, T=(X,Y), make_list__(Y,L). make_list__(X,[X]). BinProlog3.45/multi/ru.c120777 764 764 0 6664733563 15757 2../src/ru.custar javierjavierBinProlog3.45/multi/sym.c120777 764 764 0 6664733563 16323 2../src/sym.custar javierjavierBinProlog3.45/multi/dict.c120777 764 764 0 6664733563 16551 2../src/dict.custar javierjavierBinProlog3.45/multi/bp100710 764 764 30 5632574426 13714 0ustar javierjavier../src/ru ../src/wam.bp BinProlog3.45/multi/add_bp100710 764 764 1410 5646367525 14574 0ustar javierjavierln -s ../src/engine.c engine.c ln -s ../src/float.c float.c ln -s ../src/debug.c debug.c ln -s ../src/ru.c ru.c ln -s ../src/sym.c sym.c ln -s ../src/dict.c dict.c ln -s ../src/builtins.c builtins.c ln -s ../src/load.c load.c ln -s ../src/io.c io.c ln -s ../src/c.c c.c ln -s ../src/main.c main.c ln -s ../src/c.h c.h ln -s ../src/prof.h prof.h ln -s ../src/defs.h defs.h ln -s ../src/c_defs.h c_defs.h ln -s ../src/safety.h safety.h ln -s ../src/global.h global.h ln -s ../cparser/interf.h interf.h ln -s ../cparser/token.h token.h ln -s ../cparser/interf.c interf.c ln -s ../cparser/wterm.c wterm.c ln -s ../cparser/token.c token.c ln -s ../cparser/rterm.c rterm.c ln -s ../cparser/iso.c iso.c ln -s ../cparser myprogs ln -s ../bm1 bm1 ln -s ../bm2 bm2 ln -s ../bm3 bm3 BinProlog3.45/multi/wam.pro100600 764 764 60 5673712174 14676 0ustar javierjavier:-['../multi/bboard.pl']. :-['../src/wam.pro']. BinProlog3.45/multi/mbp100711 764 764 21 5660700467 14067 0ustar javierjavier./ru $* ./wam.bp BinProlog3.45/multi/rm_bp100711 764 764 430 5646234127 14433 0ustar javierjavierrm engine.c rm float.c rm debug.c rm ru.c rm sym.c rm dict.c rm builtins.c rm load.c rm io.c rm c.c rm main.c rm c.h rm prof.h rm defs.h rm c_defs.h rm safety.h rm global.h rm interf.h rm token.h rm interf.c rm wterm.c rm token.c rm rterm.c rm iso.c rm myprogs rm bm1 bm2 bm3 BinProlog3.45/multi/bm4100700 764 764 266 5653204713 14017 0ustar javierjavierecho '[adder]. go. [backtrack]. go. [condget]. go. [incr]. go. [lazy]. go. [prodcons]. go. [mread]. go. [swaptest]. go. [engine]. go. [bbuffer]. go. ' | $* echo FINISHED b4 BinProlog3.45/multi/README100600 764 764 1056 5634412235 14306 0ustar javierjavierMulti-BinProlog 3.0 has been tested on Solaris 2.3. It is a multi-threaded Linda-like blackboard extension to BinProlog 3.0. An RPC based network version is under development. Please send bugreports, comments and requests for more information/papers on Multi-BinProlog directly to: Koen.DeBosschere@elis.rug.ac.be See ../doc/multi.tex for more information. C-files for this applications are provided and you are free to port them to other Prologs. To modify/adapt this you will need a BinProlog source licence and a probably fair amount of support. BinProlog3.45/multi/multi.tex120777 764 764 0 6664733563 20101 2../doc/multi.texustar javierjavierBinProlog3.45/multi/builtins.c120777 764 764 0 6664733563 20365 2../src/builtins.custar javierjavierBinProlog3.45/multi/load.c120777 764 764 0 6664733563 16541 2../src/load.custar javierjavierBinProlog3.45/multi/io.c120777 764 764 0 6664733563 15721 2../src/io.custar javierjavierBinProlog3.45/multi/main.c120777 764 764 0 6664733563 16553 2../src/main.custar javierjavierBinProlog3.45/multi/rpc.c100600 764 764 102733 5764622534 14433 0ustar javierjavier#include "bboard.h" #include #include #include #include #include #include #include #include "rpc.h" #include "global.h" #include typedef struct { term data; u_int datalen; } rpcterm; typedef struct { char *bb_name; unsigned int bl_size; } rpcmallocterm; typedef struct { char *bb_name; rpcterm termlist; } rpcallterm_node; extern struct specsyms g; extern string *atomtable, sbuf, stop; thread_t serverthread = 0; thread_t killerthread = 0; long serverprog = 0; struct stack globalwam[MaxStk]; sema_t rpcserversema; SVCXPRT *transp; bool_t xdr_rpcterm(xdrsp, rpctrm) XDR *xdrsp; rpcterm *rpctrm; { return xdr_array(xdrsp, (caddr_t *)&rpctrm->data, &rpctrm->datalen, 1000000,(u_int)sizeof(unsigned long), xdr_u_long); } bool_t xdr_rpcmalloc(xdrsp, mallocterm) XDR *xdrsp; rpcmallocterm *mallocterm; { if (!xdr_string(xdrsp, (char **)&mallocterm->bb_name,NAMESIZE) ) return (FALSE); if (!xdr_u_int(xdrsp, &mallocterm->bl_size) ) return (FALSE); return (TRUE); } bool_t xdr_allboard(xdrsp, allterm) XDR *xdrsp; rpcallterm_node *allterm; { if (!xdr_string(xdrsp, (char **)&allterm->bb_name, NAMESIZE) ) return FALSE; if (!xdr_rpcterm(xdrsp, (caddr_t)&allterm->termlist) ) return FALSE; return TRUE; } int term2reloc(t,buffer,wam,len) term t, *buffer; struct stack *wam; int len; /******************************************************************************/ { int l,i; char *cp; buffer += 1; copytobuffer((term)buffer,t,wam,len>>2); l = term_size((term)buffer) >> 2; cp = (char*)(buffer+l); for (i=0; i len) { fprintf(stderr, "Heap overflow in term2reloc\n"); thr_exit(0); } strcpy(cp,NAME(buffer[i])); buffer[i] = (term)(PUTARITY((PUTSYMNO(FUNTAG,(cp-(char*)buffer))), (GETARITY(((cell)(buffer[i])))))); cp += n+1; } else if (BP_FLOAT((T2C(buffer[i])))) { puts("Float not supported"); i += 2; } } buffer -= 1; buffer[0] = (term)l; return (int)(((cp-(char*)buffer)&(~3))+4); } term reloc2term(buffer,H,wam) term H,buffer; struct stack *wam; /******************************************************************************/ { int i; int n = (int)buffer[0]; buffer += 1; for (i=0; i> 2; response.data = result; } else { response.datalen = 0; response.data = (term)NULL; } if (!svc_sendreply(transp, xdr_rpcterm, (caddr_t)&response)) { svcerr_systemerr(transp); thr_exit(0); } if (!svc_freeargs(transp, xdr_rpcterm, (caddr_t)&argument)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } xdr_free(xdr_rpcterm, (caddr_t)&response); deleteprocess(thr_self()); /* NOT REACHED */ thr_exit(0); return NULL; } void *bbterms_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; char *argument = (char *)NULL; blackboard_t *bb; term H, t; rpcterm response; struct stack wam[MaxStk]; if (!svc_getargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_decode(transp); fprintf(stderr, "getargs unsuccesful"); thr_exit(0); return NULL; } bb = (blackboard_t *)hget(g.bbmark,new_func(argument,0)); init_small_mem(wam); H = (term)wam[HeapStk].base; H = (term)bbterms(bb, H, &t, wam); if (H) { response.datalen = (term2reloc(t,wam[ChoiceStk].base,wam,wam[ChoiceStk].size) + 5) >> 2; response.data = (term)(wam[ChoiceStk].base); } else { response.datalen = 0; response.data = (term)NULL; } if (!svc_sendreply(transp, xdr_rpcterm, (caddr_t)&response)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } delete_small_mem(wam); if (!svc_freeargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } xdr_free(xdr_rpcterm, (caddr_t)&response); thr_exit(0); return NULL; } void *bbprocesses_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; char *argument = (char *)NULL; blackboard_t *bb; term H, t; rpcterm response; struct stack wam[MaxStk]; if (!svc_getargs(transp, xdr_wrapstring, (caddr_t)&argument)) { fprintf( stderr, "getargs unsuccesful "); svcerr_decode(transp); thr_exit(0); return NULL; } bb = (blackboard_t *)hget(g.bbmark,new_func(argument,0)); init_small_mem(wam); H = (term)wam[HeapStk].base; H = (term)bbprocesses(bb, H, &t, wam); if (H) { response.datalen = (term2reloc(t,wam[ChoiceStk].base,wam,wam[ChoiceStk].size) + 5) >> 2; response.data = (term)(wam[ChoiceStk].base); } else { response.datalen = 0; response.data = (term)NULL; } if (!svc_sendreply(transp, xdr_rpcterm, (caddr_t)&response)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } delete_small_mem(wam); if (!svc_freeargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } xdr_free(xdr_rpcterm, (caddr_t)&response); thr_exit(0); return NULL; } void *bbclean_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; char *argument = (char *)NULL; blackboard_t *bb; int result; sema_wait(&rpcserversema); if (!svc_getargs(transp, xdr_wrapstring, (caddr_t)&argument)) { fprintf( stderr, "getargs unsuccesful\n"); svcerr_decode(transp); thr_exit(0); return NULL; } sema_post(&rpcserversema); bb = (blackboard_t *)hget(g.bbmark,new_func(argument,0)); result = bbclean(bb); if (!svc_sendreply(transp, xdr_int, (caddr_t)&result)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } if (!svc_freeargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } thr_exit(0); return NULL; } void *bbcheck_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; char *argument = (char *)NULL; blackboard_t *bb; int result; if (!svc_getargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_decode(transp); return NULL; } bb = (blackboard_t *)hget(g.bbmark,new_func(argument,0)); result = bb && bb != (blackboard_t *)g.empty; if (!svc_sendreply(transp, xdr_int, (caddr_t)&result)) { svcerr_systemerr(transp); return NULL; } if (!svc_freeargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_systemerr(transp); return NULL; } return NULL; } void *blackboards_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; char *argument = (char *)NULL; term H, t; rpcterm response; struct stack wam[MaxStk]; if (!svc_getargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_decode(transp); fprintf( stderr, "getargs unsuccesful"); thr_exit(0); return NULL; } init_small_mem(wam); H = (term)wam[HeapStk].base; H = (term)blackboards(H, &t); if (H) { response.datalen = (term2reloc(t,wam[ChoiceStk].base,wam,wam[ChoiceStk].size) + 5) >> 2; response.data = (term)(wam[ChoiceStk].base); } else { response.datalen = 0; response.data = (term)NULL; } if (!svc_sendreply(transp, xdr_rpcterm, (caddr_t)&response)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } delete_small_mem(wam); if (!svc_freeargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } xdr_free(xdr_rpcterm, (caddr_t)&response); thr_exit(0); return NULL; } void *bbmem_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; char *argument = (char *)NULL; blackboard_t *bb; term H, t; rpcterm response; struct stack wam[MaxStk]; if (!svc_getargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_decode(transp); fprintf( stderr, "getargs unsuccesful"); thr_exit(0); return NULL; } bb = (blackboard_t *)hget(g.bbmark,new_func(argument,0)); init_small_mem(wam); H = (term)wam[HeapStk].base; H = (term)bbmem(bb,H, &t); if (H) { response.datalen = (term2reloc(t,wam[ChoiceStk].base,wam,wam[ChoiceStk].size) + 5) >> 2; response.data = (term)(wam[ChoiceStk].base); } else { response.datalen = 0; response.data = (term)NULL; } if (!svc_sendreply(transp, xdr_rpcterm, (caddr_t)&response)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } delete_small_mem(wam); if (!svc_freeargs(transp, xdr_wrapstring, (caddr_t)&argument)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } xdr_free(xdr_rpcterm, (caddr_t)&response); thr_exit(0); return NULL; } void *bbmalloc_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; int result; rpcmallocterm argum; blackboard_t *bb; argum.bb_name =(char*) NULL; argum.bl_size = 0; if (!svc_getargs(transp, xdr_rpcmalloc, (caddr_t)&argum)) { svcerr_decode(transp); fprintf( stderr, "getargs unsuccesful\n"); thr_exit(0); return NULL; } bb = (blackboard_t *)hget(g.bbmark,new_func(argum.bb_name,0)); result = bbmalloc(bb,argum.bl_size); if (!svc_sendreply(transp, xdr_int, (caddr_t)&result)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } if (!svc_freeargs(transp, xdr_rpcterm, (caddr_t)&argum)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } deleteprocess(thr_self()); /* NOT REACHED */ thr_exit(0); return NULL; } void *bbfree_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; int result; rpcmallocterm argum; blackboard_t *bb; argum.bb_name =(char*) NULL; argum.bl_size = 0; if (!svc_getargs(transp, xdr_rpcmalloc, (caddr_t)&argum)) { svcerr_decode(transp); fprintf( stderr, "getargs unsuccesful\n"); thr_exit(0); return NULL; } bb = (blackboard_t *)hget(g.bbmark,new_func(argum.bb_name,0)); result = bbfree(bb,argum.bl_size); if (!svc_sendreply(transp, xdr_int, (caddr_t)&result)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } if (!svc_freeargs(transp, xdr_rpcterm, (caddr_t)&argum)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } deleteprocess(thr_self()); /* NOT REACHED */ thr_exit(0); return NULL; } void *bbmove_1(arg) void *arg; /******************************************************************************/ { register SVCXPRT *transp = (SVCXPRT *)arg; rpcallterm_node argument; remotebb_t *bb; blackboard_t *auxbb; localbb_t *newbb; term H; term t; rpcterm response; struct stack wam[MaxStk]; int result,alreadyowner; register int size; register unsigned datasize; register termnode_t *tp; no fname; register pool_t *pool = (pool_t *)hget(g.bbmark,g.bbmark); u_long n; argument.termlist.data = (term) NULL; argument.termlist.datalen = 0; argument.bb_name = (char *)NULL; if (!svc_getargs(transp, xdr_allboard, (caddr_t)&argument)) { svcerr_decode(transp); fprintf( stderr, "getargs unsuccesful"); thr_exit(0); return NULL; } fname = new_func(argument.bb_name,0); bb = (remotebb_t *)hget(g.bbmark,fname); init_small_mem(wam); H = (term)wam[HeapStk].base; t = H; H = (term) reloc2term(argument.termlist.data,H,wam); bblock(bb); remove_bbclient(bb); /* delete the list of client handles */ assert(pool); mutex_lock(&(pool->mutex)); /* make the new (local) blackboard structure */ newbb = (localbb_t *)buddymalloc(pool->buddy, BLACKBOARDSIZE); memcpy(newbb,bb,sizeof(blackboard_t)); /* put new blackboard in pool */ newbb->nextbb = pool->blackboards; pool->blackboards = (blackboard_t *)newbb; /* remove old blackboard from the pool */ auxbb = (blackboard_t *)newbb; while (auxbb->nextbb != (blackboard_t *)bb) auxbb = auxbb->nextbb; auxbb->nextbb = bb->nextbb; /* delete old blackboard structure */ buddyfree(pool->buddy,bb,sizeof(remotebb_t)); mutex_unlock(&(pool->mutex)); hset(g.bbmark,fname,(no)newbb); /* symbol table points to new structure */ newbb->type = LOCALBB; buddycreate(newbb->buddy, BUDDYSIZE); buddyinit(newbb->buddy, (char *)bb+realbuddysize(sizeof(localbb_t)), BLACKBOARDSIZE-realbuddysize(sizeof(localbb_t))); newbb->firstterm = (termnode_t *)NULL; newbb->lastterm = (termnode_t *)NULL; newbb->firstprocess = (processnode_t *)NULL; newbb->lastprocess = (processnode_t *)NULL; newbb->timestamp = (term)INPUT_INT(0); /* put terms and timestamps on blackboard newbb */ *(H-1) = g.DOT; t++; newbb->timestamp = (term)(*t); while ( *t != g.DOT) t++; while ( t < (H-1)) { t++; size = term_size(t); datasize = sizeof(termnode_t)-4+size; tp =(termnode_t *) buddymalloc(newbb->buddy, datasize); if (!tp) { warnmes("Blackboard memory exhausted"); return 0; /* not really elegant */ } tp->next = (termnode_t *)NULL; tp->size = datasize; copytobb((term)tp->data,t,wam); while ( *t != g.DOT) t++; t++; tp->timestamp = (term)(*t); if (newbb->firstterm) { newbb->lastterm->next = tp; newbb->lastterm = tp; } else { newbb->firstterm = newbb->lastterm = tp; } while ( *t != g.DOT) t++; } result =0; if (!svc_sendreply(transp, xdr_int, (caddr_t)&result)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } if (!svc_freeargs(transp, xdr_allboard, (caddr_t)&argument)) { svcerr_systemerr(transp); thr_exit(0); return NULL; } bbunlock(newbb); /* mutex lock is now on newbb */ delete_small_mem(wam); xdr_free(xdr_allboard, (caddr_t)&argument); thr_exit(0); return NULL; } static void rpcmessageserver(rqstp, transp) struct svc_req *rqstp; register SVCXPRT *transp; /******************************************************************************/ { thread_t thread; switch (rqstp->rq_proc) { case NULLPROC: svc_sendreply(transp, xdr_void, NULL); return; case PUTTERM: thr_create(NULL,0,putterm_1,transp,THR_DETACHED,&thread); return; case GETTERM: thr_create(NULL,0,getterm_1,transp,THR_DETACHED,&thread); return; case BBTERMS: thr_create(NULL,0,bbterms_1,transp,THR_DETACHED,&thread); return; case BBPROCESSES: thr_create(NULL,0,bbprocesses_1,transp,THR_DETACHED,&thread); return; case BBCLEAN: thr_create(NULL,0,bbclean_1,transp,THR_DETACHED,&thread); return; case BBCHECK: thr_create(NULL,0,bbcheck_1,transp,THR_DETACHED,&thread); return; case BLACKBOARDS: thr_create(NULL,0,blackboards_1,transp,THR_DETACHED,&thread); return; case BBMEM: thr_create(NULL,0,bbmem_1,transp,THR_DETACHED,&thread); return; case BBMALLOC: thr_create(NULL,0,bbmalloc_1,transp,THR_DETACHED,&thread); return; case BBFREE: thr_create(NULL,0,bbfree_1,transp,THR_DETACHED,&thread); return; case BBMOVE: thr_create(NULL,0,bbmove_1,transp,THR_DETACHED,&thread); return; default: svcerr_noproc(transp); return; } } void stopserver(i) int i; /******************************************************************************/ { if ( serverthread != thr_self()) { fprintf(stderr, "wrong thread (%Ld) was to be killed\n", thr_self()); return; } sema_post(&rpcserversema); /* signal killserver() that thread is exiting */ thr_exit(0); } void killserver(void) /******************************************************************************/ { CLIENT *cl; if (serverprog) { thr_kill(serverthread,SIGUSR2); thr_continue(serverthread); sema_wait(&rpcserversema); /* wait for execution of stopserver() */ fflush(stdout); svc_done(transp); /* works only in User MT mode */ transp = (SVCXPRT *)NULL; serverprog = 0; } } long nametoprog(s) char *s; /******************************************************************************/ { if (strlen(s) > 4) { fprintf(stderr, "server name <%s> too long (>4)\n", s); thr_exit(0); } else { long l[2], i; char *buffer = (char *)l; l[0] = l[1] = 0; strcpy(buffer,s); return l[0]; } } void *rpcserver(arg) void *arg; /******************************************************************************/ { sigset_t set; struct netconfig *config; if (IDENTIFIER((term)arg)) { serverprog = nametoprog(NAME((term)arg)); } else if (VAR(arg)) serverprog = thr_self(); else { fprintf(stderr, "Error: server name must be constant"); thr_exit(0); } sigemptyset(&set); sigaddset(&set,SIGUSR2); thr_sigsetmask( SIG_UNBLOCK, &set, NULL); signal(SIGUSR2,stopserver); /* Creation of the server. We are using the intermediate level because we need the variable "transp" to end the service afterwards. */ config = (struct netconfig *)getnetconfigent( "tcp"); transp = svc_tp_create(rpcmessageserver, serverprog, BBVERS, config); freenetconfigent(config); if (!transp) { fprintf(stderr, "Cannot create server\n"); thr_exit(0); return NULL; } sema_post(&rpcserversema); svc_run(); thr_exit(0); /* NOT REACHED */ return NULL; } term initserver(name,wam) term name; stack wam; /******************************************************************************/ { int info; sigset_t set; memcpy(globalwam,wam,sizeof(struct stack)*MaxStk); sema_init(&rpcserversema, 0, USYNC_THREAD, NULL); /* set USER MT Mode */ info = 2; rpc_control(RPC_SVC_MTMODE_SET, &info); thr_create(NULL, 0, rpcserver, (void *)name, THR_DETACHED|THR_NEW_LWP|THR_BOUND, &serverthread); sema_wait(&rpcserversema); if (IDENTIFIER(name)) return name; else if (VAR(name)) return (term)INPUT_INT(serverthread); else return (term)NULL; } /****************************************************************************** * * * CLIENT * * * ******************************************************************************/ /* Default timeout can be changed using clnt_control() */ static struct timeval TIMEOUT = { 25000, 0 }; term rpc_putterm(bb,wam,A,H,regs) remotebb_t *bb; register stack wam; register term *A; term H; term regs; /******************************************************************************/ { rpcterm data; int result; term temp[3]; term buffer = H; CLIENT *client; temp[0] = (term)g.DOT; temp[1]=(term)bb->bboard; temp[2] = (term)regs[2]; data.data = buffer; data.datalen = (term2reloc((term)temp,(term *)buffer,wam, (char*)wam[HeapStk].margin-(char *)buffer)+5) >> 2; client = get_bbclient(bb); if (clnt_call(client, PUTTERM, xdr_rpcterm, (caddr_t)&data, xdr_int, (caddr_t)&result, TIMEOUT) == RPC_SUCCESS) { int i, res = result; return_bbclient(bb,client); return res ? H : 0; } else return_bbclient(bb,client); return 0; } term rpc_getterm(bb, wam, A, H, timestamp, regs) remotebb_t *bb; register stack wam; register term *A; term H; term *timestamp; term regs; /******************************************************************************/ { term temp[6]; term buffer = H; rpcterm data, result; CLIENT *client; temp[0] = (term)new_func("rpc_get",5); temp[1] = (term)bb->bboard; temp[2] = (term)regs[2]; temp[3] = (term)regs[3]; temp[4] = (term)regs[4]; temp[5] = (term)regs[5]; data.datalen = (term2reloc((term)temp,(term*)buffer,wam, (char*)wam[HeapStk].margin-(char *)buffer)+5) >> 2; data.data = buffer; result.data = (term)NULL; result.datalen = 0; client = get_bbclient(bb); if (clnt_call(client, GETTERM, xdr_rpcterm, (caddr_t)&data, xdr_rpcterm, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS && result.datalen) { term oldH = H; return_bbclient(bb,client); H = (term)reloc2term(result.data,H,wam); xdr_free(xdr_rpcterm,(caddr_t)&result); return unify(regs[2],oldH,wam,A) ? H : 0; } else { return_bbclient(bb,client); return 0; } } term rpc_bbterms(bb,H,t,wam) remotebb_t *bb; term H, *t; stack wam; /******************************************************************************/ { rpcterm result; CLIENT *client; result.data = (term)NULL; result.datalen = 0; client = get_bbclient(bb); if (clnt_call(client, BBTERMS, xdr_wrapstring, (caddr_t)&NAME(bb->bboard), xdr_rpcterm, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS && result.datalen) { return_bbclient(bb,client); *t = H; H = (term)reloc2term(result.data,H,wam); xdr_free(xdr_rpcterm,(caddr_t)&result); return H; } else { return_bbclient(bb,client); fprintf( stderr, "RPC failed\n"); return (term)NULL; } } term rpc_bbprocesses(bb,H,t,wam) remotebb_t *bb; term H, *t; stack wam; /******************************************************************************/ { rpcterm result; CLIENT *client; result.data = (term)NULL; result.datalen = 0; client = get_bbclient(bb); if (clnt_call(client, BBPROCESSES, xdr_wrapstring, (caddr_t)&NAME(bb->bboard), xdr_rpcterm, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS && result.datalen) { return_bbclient(bb,client); *t = H; H = (term)reloc2term(result.data,H,wam); xdr_free(xdr_rpcterm,(caddr_t)&result); return H; } else return_bbclient(bb,client); return (term)NULL; } int rpc_bbclean(bb) remotebb_t *bb; /******************************************************************************/ { int result; char *bbname; CLIENT *client; assert(bb); assert(bb->type == REMOTEBB); bbname = NAME(bb->bboard); client = get_bbclient(bb); if (clnt_call(client, BBCLEAN, xdr_wrapstring, (caddr_t)&bbname, xdr_int, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS) { return_bbclient(bb,client); return result; } else return_bbclient(bb,client); return 0; } int rpc_bbcheck(cl,bbname) CLIENT *cl; char *bbname; /******************************************************************************/ { int result; if (clnt_call(cl, BBCHECK, xdr_wrapstring, (caddr_t)&bbname, xdr_int, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS) { return result; } else return 0; } term rpc_blackboards(host,prognum,H,t,wam) register cell host; register u_long prognum; term H, *t; stack wam; /******************************************************************************/ { rpcterm result; register CLIENT *cl; char *argument = NULL; if (cl = clnt_create(NAME(host),prognum,BBVERS,"tcp") ) { } else { return (term) NULL; } result.data = (term)NULL; result.datalen = 0; if (clnt_call(cl, BLACKBOARDS, xdr_wrapstring, (caddr_t)&argument, xdr_rpcterm, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS && result.datalen) { *t = H; H = (term)reloc2term(result.data,H,wam); xdr_free(xdr_rpcterm,(caddr_t)&result); clnt_destroy(cl); return H; } else { fprintf( stderr, "RPC failed\n"); clnt_destroy(cl); return (term)NULL; } } term rpc_bbmem( bb, H, t, wam) register remotebb_t *bb; register term H, *t; stack wam; /******************************************************************************/ { rpcterm result; CLIENT *client; result.data = (term)NULL; result.datalen = 0; client = get_bbclient(bb); if (clnt_call(client, BBMEM, xdr_wrapstring, (caddr_t)&NAME(bb->bboard), xdr_rpcterm, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS && result.datalen) { return_bbclient(bb,client); *t = H; H = (term)reloc2term(result.data,H,wam); xdr_free(xdr_rpcterm,(caddr_t)&result); return H; } else { fprintf( stderr, "RPC failed\n"); return_bbclient(bb,client); return (term)NULL; } } int rpc_bbmalloc(bb, blocksize) remotebb_t *bb; unsigned int blocksize; /******************************************************************************/ { int result; rpcmallocterm mterm; char *name; CLIENT *client; name = NAME(bb->bboard); mterm.bb_name = (char *) malloc( strlen(name) + 1); strcpy(mterm.bb_name, name); mterm.bl_size = blocksize; client = get_bbclient(bb); if (clnt_call(client, BBMALLOC, xdr_rpcmalloc, (caddr_t)&mterm, xdr_int, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS) { free(mterm.bb_name); return_bbclient(bb,client); return result; } else free(mterm.bb_name); return_bbclient(bb,client); return 0; } int rpc_bbfree(bb, blocksize) remotebb_t *bb; unsigned int blocksize; /******************************************************************************/ { int result; rpcmallocterm mterm; char *name; CLIENT *client; name = NAME(bb->bboard); mterm.bb_name = (char *) malloc( strlen(name) + 1); strcpy(mterm.bb_name, name); mterm.bl_size = blocksize; client = get_bbclient(bb); if (clnt_call(client, BBFREE, xdr_rpcmalloc, (caddr_t)&mterm, xdr_int, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS) { return_bbclient(bb,client); free(mterm.bb_name); return result; } else return_bbclient(bb,client); free(mterm.bb_name); return 0; } int rpc_bbmove(bb_l,host,prognum,bb_r) register cell bb_l, host; register u_long prognum; register cell bb_r; /********************************************** changes bb_l to remote blackboard, and bb_r from remote blackboard to a local one. **********************************************/ { int result; CLIENT *cl; register cell xval, name; register localbb_t *lbb; register remotebb_t *newbb; blackboard_t *auxbb; int alreadyowner; termnode_t *tp; register pool_t *pool = (pool_t *)hget(g.bbmark,g.bbmark); term H,t; struct stack wam[MaxStk]; rpcallterm_node allterm; result=0; lbb = (localbb_t *)hget(g.bbmark,(no)bb_l); if (!(cl = clnt_create(NAME(host),prognum,BBVERS,"tcp"))) { fprintf( stderr, "clnt_create unsuccesful\n"); return 0; } bblock(lbb); /* Prepare for sending the terms of the blackboard */ init_small_mem(wam); H = (term)wam[HeapStk].base; t = H; /* making a list of terms and timestamps */ PUSH_LIST((T2C(lbb->timestamp))); tp = lbb->firstterm; while (tp) { PUSH_LIST((T2C(tp->data))); PUSH_LIST((T2C(tp->timestamp))); tp = tp->next; } PUSH_NIL(); allterm.termlist.datalen = (term2reloc(t,wam[ChoiceStk].base, wam,wam[ChoiceStk].size) + 5) >> 2; allterm.termlist.data = (term)(wam[ChoiceStk].base); allterm.bb_name = NAME(bb_r); if (!clnt_call(cl, BBMOVE, xdr_allboard, (caddr_t)&allterm, xdr_int, (caddr_t)&result, TIMEOUT)==RPC_SUCCESS ) { fprintf( stderr, "RPC failed\n"); bbunlock(lbb); return 0; } delete_small_mem(wam); if (!rpc_bbcheck(cl,NAME(bb_r))) { fprintf(stderr,"couldn't change remote blackboard in a local one\n"); bbunlock(lbb); return 0; } /* Now bb_r is a complete local blackboard */ /* creating a (new) remote bb instead of the local one */ assert(pool); mutex_lock(&(pool->mutex)); /* make the new (remote) blackboard structure */ newbb = (remotebb_t *)buddymalloc(pool->buddy, sizeof(remotebb_t)); memcpy(newbb,lbb,sizeof(blackboard_t)); /* put new blackboard in pool */ newbb->nextbb = pool->blackboards; pool->blackboards = (blackboard_t *)newbb; /* remove old blackboard from the pool */ auxbb = (blackboard_t *)newbb; while (auxbb->nextbb != (blackboard_t *)lbb) auxbb = auxbb->nextbb; auxbb->nextbb = lbb->nextbb; /* delete old blackboard structure */ buddyfree(pool->buddy,lbb,BLACKBOARDSIZE); mutex_unlock(&(pool->mutex)); hset(g.bbmark,bb_l,(no)newbb); /* symbol table points to new structure */ newbb->type = REMOTEBB; strncpy(newbb->host,NAME(host),HOSTNAMESIZE); newbb->host[HOSTNAMESIZE-1] = 0; /* 0-terminate */ newbb->prognum = prognum; newbb->bboard = bb_r; newbb->cl_list = (clnt_node_t *) malloc( sizeof(clnt_node_t)); newbb->cl_list->inuse = FALSE; newbb->cl_list->cl = cl; newbb->cl_list->next = NULL; bbunlock(newbb); return 1; } BinProlog3.45/multi/prof.h120777 764 764 0 6664733563 16631 2../src/prof.hustar javierjavierBinProlog3.45/multi/defs.h120777 764 764 0 6664733563 16557 2../src/defs.hustar javierjavierBinProlog3.45/multi/token.h120777 764 764 0 6664733563 20025 2../cparser/token.hustar javierjavierBinProlog3.45/multi/bm1120777 764 764 0 6664733563 14610 2../bm1ustar javierjavierBinProlog3.45/multi/c_defs.h120777 764 764 0 6664733563 17363 2../src/c_defs.hustar javierjavierBinProlog3.45/multi/buddy.h100600 764 764 1545 5764605473 14725 0ustar javierjavier/* * Memory allocator based on a buddy system algorithm * * 28/02/93 Initial version: Koen De Bosschere */ #ifndef _BUDDYMALLOC_H #define _BUDDYMALLOC_H #define BUDDYMAX 32 #define BUDDYSIZE ((BUDDYMAX+1)<<2) typedef struct buddyblock { struct buddyblock *next; } buddyblock_t; typedef buddyblock_t *buddycontrolblock_t[BUDDYMAX+1]; void buddycreate(); /* creation of a the buddy system */ void buddyinit(); /* initialization of an existing system */ unsigned int buddymax(); /* size of biggest available block */ unsigned int buddymem(); /* total available memory */ int buddyshow(); /* show the contents of a buddy system */ buddyblock_t *buddymalloc(); /* malloc a block */ void buddyfree(); /* free a block */ unsigned int realbuddysize(); /* returns real power of two */ #endif BinProlog3.45/multi/bb_instr.h100600 764 764 3777 5764605711 15424 0ustar javierjavier case BB_PUT_2: /* opgeroepen vanuit engine.c */ { cell cont = regs[3]; /* save continuation */ localbb_t *bb; FDEREF(regs[1]); if (!SYMCONST(xval)) { RESTORE_STATE(6); FAILURE() } bb = (localbb_t *)hget(g.bbmark,xval); if (bb && bb != (localbb_t *)g.empty) { if (bb->type == LOCALBB) { if (H = putterm(bb, wam, A, H, regs)) { regs[1] = cont; /* save continuation */ NEXT(1); } else FAILURE(); } else { /* remote */ if (H = rpc_putterm(bb, wam, A, H, regs)) { regs[1] = cont; /* save continuation */ NEXT(1); } else FAILURE(); } } else { FAILURE() } } case BB_GET_4: { cell cont; term timestamp = A[-4]; localbb_t *bb; RESTORE_STATE(6); A += 3+6; cont=regs[6]; /* save continuation */ FDEREF(regs[1]); if (!SYMCONST(xval)) { RESTORE_STATE(6); FAILURE() } bb = (localbb_t *)hget(g.bbmark,xval); if (bb && bb != (localbb_t *)g.empty) { if (bb->type == LOCALBB) { if (H = getterm(bb, wam, A, H, ×tamp,regs)) { SAVED_P = P; A[-4] = timestamp; regs[1]=cont; /* restore continuation */ NEXT(1); } else { RESTORE_STATE(6); FAILURE() } } else { if (H = rpc_getterm(bb, wam, A, H, ×tamp,regs)) { SAVED_P = P; A[-4] = timestamp; regs[1]=cont; /* restore continuation */ NEXT(1); } else { RESTORE_STATE(6); FAILURE() } } } else { RESTORE_STATE(6); FAILURE() } } case BB_OP_3: { cell t; FDEREF(X(1)); if(!(H=bb_op(OUTPUT_INT(xval),X(2),&t,A,wam,H))) FAILURE() OUT(t); } BinProlog3.45/multi/bb_small.h100600 764 764 746 5764605711 15346 0ustar javierjavierint init_small_mem(wam) register stack wam; { int errctr = 0; errctr+=!make_stack(&(wam[TrailStk]),max.TRAIL,2,"trail",NULL); errctr+=!make_stack(&(wam[HeapStk]),max.HEAP,2000,"heap",NULL); errctr+=!make_stack(&(wam[ChoiceStk]),max.CHOICE,MAXARITY+3,"choice",NULL); if(errctr) ERREXIT("not enough memory") else return 1; } void delete_small_mem(wam) register stack wam; { free(wam[TrailStk].base); free(wam[HeapStk].base); free(wam[ChoiceStk].base); } BinProlog3.45/multi/bboard.h100600 764 764 11243 5764605436 15062 0ustar javierjavier#ifndef _BBOARD_H #define _BBOARD_H #include "global.h" #define REMOVE 1 #define NOREMOVE 0 #define BLOCKING (1< #include #include #include #include #include #include #include #include #include #include "defs.h" #include "buddy.h" #include "rpc.h" #define BB_POOL_SIZE 0x30000 #define BLACKBOARDSIZE 0x00001000 typedef struct pool { buddycontrolblock_t buddy; /* local memory management */ mutex_t mutex; /* sharedmem mutex */ struct blackboard *blackboards; /* link to local blackboards */ } pool_t; #define NAMESIZE 32 #define HOSTNAMESIZE 128 #define LOCALBB 0 #define REMOTEBB 1 /* KO */ typedef struct clnt_node { CLIENT *cl; int inuse; struct clnt_node *next; } clnt_node_t; /* KO */ typedef clnt_node_t *clnt_list_t; typedef struct blackboard { int type; struct blackboard *nextbb; char name[NAMESIZE]; /* name of blackboard */ mutex_t mutex; /* blackboard mutex */ thread_t owner; /* current blackboard owner */ unsigned lockno; /* number of simultaneous locks */ } blackboard_t; typedef struct localbb { int type; struct blackboard *nextbb; char name[NAMESIZE]; /* name of blackboard */ mutex_t mutex; /* blackboard mutex */ thread_t owner; /* current blackboard owner */ unsigned lockno; /* number of simultaneous locks */ /* variable part */ buddycontrolblock_t buddy; /* local memory management */ struct termnode *firstterm; /* head of term list */ struct termnode *lastterm; /* tail of term list */ struct processnode *firstprocess; /* head of process list */ struct processnode *lastprocess; /* tail of process list */ term timestamp; /* timestamp */ } localbb_t; typedef struct remotebb { int type; struct blackboard *nextbb; char name[NAMESIZE]; /* local name of blackboard */ mutex_t mutex; /* blackboard mutex */ thread_t owner; /* current blackboard owner */ unsigned lockno; /* number of simultaneous locks */ /* variable part */ char host[HOSTNAMESIZE]; /* name of the host machine */ u_long prognum; /* rpc prognum */ cell bboard; /* local blackboard name on remote host */ /* KO */ /*CLIENT *cl;*/ /* client handle */ clnt_list_t cl_list; /* list of clients in use */ } remotebb_t; typedef struct termnode { struct termnode *next; term timestamp; unsigned size; unsigned data[1]; } termnode_t; typedef struct processnode { struct processnode *next; unsigned size; thread_t thread; cond_t condvar; int modifier; term timestamp; struct termnode *answer; term *pattern; term *condition; unsigned data[1]; } processnode_t; typedef struct wamprocess { struct wamprocess *next; stack wam; thread_t thread; unsigned data[1]; } wamprocess_t; CLIENT * get_bbclient(); localbb_t *blackboardcreate(); void blackboarddelete(); int blackboardclean(); int blackboardshow(); term putterm(); term getterm(); unsigned int termcount(); unsigned int processcount(); int make_shm(); char *shmcalloc(); #define bblock(BB) {if ((BB)->owner != thr_self()) { \ mutex_lock(&((BB)->mutex)); \ (BB)->owner = thr_self(); alreadyowner = 0; \ } else alreadyowner = 1; /*printf("%08x bblock\n",BB);*/} #define bbunlock(BB) {/*printf("%08x bbunlock\n",BB);*/ if (!alreadyowner) {(BB)->owner = 0; \ mutex_unlock(&((BB)->mutex));}} #define ON_BB(ADR) (((unsigned)(ADR)-(unsigned)(bb_pool_address)) < \ (unsigned)BB_POOL_SIZE) #define BB_OP_LOCK 1 #define BB_OP_UNLOCK 2 #define BB_OP_PROCESSINFO 3 #define BB_OP_BLACKBOARDS 4 #define BB_OP_POOLMEM 5 #define BB_OP_FREE_ 6 #define BB_OP_PROCREATE 7 #define BB_OP_CREATELOCALBB 8 #define BB_OP_CREATEREMOTEBB 9 #define BB_OP_BBKILL 10 #define BB_OP_BBCLEAN 11 #define BB_OP_BBFREE 12 #define BB_OP_KILLPROC 13 #define BB_OP_BBMALLOC 14 #define BB_OP_BBTERMS 15 #define BB_OP_BBPROCESSES 16 #define BB_OP_BBINFO 17 #define BB_OP_BBMEM 18 #define BB_OP_PROCESSES 19 #define RPC_CREATESERVER 20 #define RPC_KILLSERVER 21 #define RPC_BLACKBOARDS 22 #define RPC_BBMOVE 23 /* #define BB_OP_TESTKK 50 */ #endif _BBOARD_H BinProlog3.45/multi/safety.h120777 764 764 0 6664733563 17503 2../src/safety.hustar javierjavierBinProlog3.45/multi/global.h120777 764 764 0 6664733563 17415 2../src/global.hustar javierjavierBinProlog3.45/multi/interf.h120777 764 764 0 6664733563 20343 2../cparser/interf.hustar javierjavierBinProlog3.45/multi/interf.c120777 764 764 0 6664733563 20331 2../cparser/interf.custar javierjavierBinProlog3.45/multi/wterm.c120777 764 764 0 6664733563 20047 2../cparser/wterm.custar javierjavierBinProlog3.45/multi/rpc.h100600 764 764 1222 5764605446 14372 0ustar javierjavier#include /* KO * extern thread_t serverthread;*/ extern long serverprog; #define BBVERS ((u_long)1) #define PUTTERM ((u_long)1) #define GETTERM ((u_long)2) #define BBCHECK ((u_long)3) #define BBTERMS ((u_long)4) #define BBPROCESSES ((u_long)5) #define BBCLEAN ((u_long)6) #define BLACKBOARDS ((u_long)7) #define BBMEM ((u_long)8) #define BBMALLOC ((u_long)9) #define BBFREE ((u_long)10) #define BBMOVE ((u_long)11) term rpc_putterm(); term rpc_getterm(); term rpc_bbterms(); term rpc_bbprocesses(); int rpc_checkbb(); term rpc_blackboards(); term rpc_bbmem(); int rpc_bbmalloc(); int rpc_bbfree(); void killserver(); int rpc_bbmove(); BinProlog3.45/multi/token.c120777 764 764 0 6664733563 20013 2../cparser/token.custar javierjavierBinProlog3.45/multi/rterm.c120777 764 764 0 6664733563 20035 2../cparser/rterm.custar javierjavierBinProlog3.45/multi/iso.c120777 764 764 0 6664733563 17137 2../cparser/iso.custar javierjavierBinProlog3.45/multi/bm2120777 764 764 0 6664733563 14612 2../bm2ustar javierjavierBinProlog3.45/multi/bm3120777 764 764 0 6664733563 14614 2../bm3ustar javierjavierBinProlog3.45/multi/engine.h120777 764 764 0 6664733563 17427 2../src/engine.hustar javierjavierBinProlog3.45/multi/makefile.old100600 764 764 20227 5673711254 15732 0ustar javierjavier#!/bin/sh PROJ=wam BP=../src/ru ../src/wam.bp #BP=../cparser/ru ../cparser/wam.bp VERS=324 #DEFS =-DCPARSER -DBLACKBOARD -DSOLARIS -D_REENTRANT -DC_INTERFACE DEFS =-DBLACKBOARD -DSOLARIS -D_REENTRANT -DC_INTERFACE OPTI= $(DEFS) -s -O WFLAGS = -Wunused -Wcomment -Wformat -Wuninitialized -Wswitch \ -Wreturn-type -Wshadow -Wpointer-arith \ -Wcast-align -Waggregate-return -Winline TEST = $(DEFS) -g -DPROF=1 -DTRACE=1 TESTN = $(TEST) -DNOTCOMPRESS LASM = $(DEFS) -DTRACE=1 DEBUG = $(DEFS) $(WFLAFS) -g -O -DPROF=2 -DTRACE=1 GCC = gcc $(OPTI) GCCG = gcc $(DEFS) -g -O GCCO = gcc $(OPTI)2 GCCE = $(GCCO) -DSELF GCCT = gcc $(TEST) GCCTN = gcc -O $(TESTN) GCCW = gcc -O2 $(WFLAGS) $(TEST) GCCD = gcc $(WFLAGS) $(DEBUG) GCCU = gcc -g -O $(WFLAGS) $(DEFS) -DSAFETY=2 GCCUS = $(GCCU) -DNOOFFSETS GCCL = gcc -O2 $(LASM) IGCC = insight $(DEFS) -s CLCC = clcc $(OPTI) CCO = cc $(OPTI) CCT = cc $(TEST) SCC = scc $(OPTI)2 SCCT = scc $(TEST) SGIO = cc -DSGI $(OPTI)3 -Olimit 1200 SGIT = cc $(TEST) IBMO = cc -DSGI $(OPTI) CCHP = cc +w3 +Obb1000 # however, use gcc as cc does not work well!!! ################################################################### # PLEASE use the appropriate combination of compilers and options !!! #CC= $(CCT) #CC= $(IGCC) CC = $(GCCO) OTHER_PROLOG = sicstus #OTHER_PROLOG = sicstus -f #OTHER_PROLOG = pl #OTHER_PROLOG = sb #OTHER_PROLOG = cprolog #OTHER_PROLOG = sicstus #OTHER_PROLOG = api #OTHER_PROLOG = qprolog #BINDIR = /usr/local/bin BINDIR = $(HOME)/bin # normally this should be the only thing to EDIT !!! ################################################################### OLDBP = bp P1=engine P2=builtins P3=dict P4=load P5=sym P6=ru P7=io P8=float P9=debug P10=wterm P11=rterm P12=token P13=interf P14=iso P15=buddy P16=bboard P17=rpc P18=c P19=main SELFOBS = ru.o sym.o engine.o load.o NEW_CPROGS=$(P10).c $(P11).c $(P12).c $(P13).c $(P14). \ $(P15).c $(P16).c $(P17).c SRC_CPROGS=$(P1).c $(P2).c $(P3).c $(P4).c $(P5).c $(P6).c $(P7).c $(P8).c $(P9).c $(P18) $(P19) CPROGS=$(SRC_CPROGS) $(NEW_CPROGS) OBS = $(P1).o $(P2).o $(P3).o $(P4).o $(P5).o $(P6).o $(P7).o $(P8).o $(P9).o $(P18).o $(P19).o\ $(P10).o $(P11).o $(P12).o $(P13).o $(P14).o \ $(P15).o $(P16).o $(P17).o PPROGS = $(PROJ).pl stdio.pl CP = cp all: progs ru $(PROJ).bp progs: # add_bp solaris: clean make CC="$(GCCO)" mv ru ru.sparc.solaris sunos: clean make CC="$(GCCO)" mv ru ru.sparc.sunos # hobbes.cs.kuleuven.ac.be hp: make CC="$(CCHP)" mv ru ru.parisc.hpux #compy.iro.umontreal.ca alpha: clean gcc -s -O2 -c engine.c make CC="$(CCO)" mv ru ru.alpha.dec #lccr.cs.sfu.ca sun3: clean make CC="$(GCC)" mv ru ru.68k.sun3 #basil.cs.sfu.ca next: clean make CC="$(CCO)" mv ru ru.68k.next #robson.sfu.ca ibm: clean make CC="$(IBMO)" mv ru ru.r6000.ibm #? decmips: clean make CC="$(CCO)" mv ru ru.mips.dec #fdml.com sco: make CC="$(CCO)" mv ru ru.486.sco #fraser.sfu.ca sgi: clean make CC="$(SGIO)" mv ru ru.mips.sgi dos: make CC=gcc CFLAGS="-DCLOCK $(OPTI)" copy ru ru.386 del ru doslib: $(OBS) copy load.o temp.o $(GCCO) -DSELF -c load.c ld -r -o bp.o $(OBS) copy temp.o load.o del temp.o mac aux: make CC=cc CFLAGS="-DNOCLOCK $(OPTI)" ren ru ru.mac.aux # for benchmarking only bm: ru_0n ru_0t ru_2t ru_3n ru_3t ru_3x ru_3x: rm -f *.o make CC="$(GCCO)" mv ru ../Impact/ru_3x ru_3t: rm -f *.o make CC="$(GCCO) -DNOOFFSETS" mv ru ../Impact/ru_3t ru_3n: rm -f *.o make CC="$(GCCO) -DNOTCOMPRESS -DNOOFFSETS" mv ru ../Impact/ru_3n ru_2t: rm -f *.o make CC="$(GCCO) -DICOMPRESS=2 -DNOOFFSETS" mv ru ../Impact/ru_2t ru_0t: rm -f *.o make CC="$(GCCO) -DICOMPRESS=1 -DNOOFFSETS" mv ru ../Impact/ru_0t ru_0n: rm -f *.o make CC="$(GCCO) -DICOMPRESS=1 -DNOTCOMPRESS -DNOOFFSETS -dm" mv ru ../Impact/ru_0n # bootsrapping $(PROJ).bp: @echo bootsrapping BinProlog... echo "make($(PROJ)). " | $(BP) echo "make($(PROJ)). " | ru $(PROJ).bp # makes a BinProlog library usable to generate a standalone executable lib bp.o: complib linklib cleanlib link linklib: make CC="$(CC) -DSELF" $(OBS) ld -r -o bp.o $(OBS) complib: sym.c load.c engine.c debug.c rm -f $(SELFOBS) make CC="$(CC) -DSELF" $(OBS) cleanlib: rm -f $(SELFOBS) ru: $(OBS) makefile $(CC) -o ru $(OBS) -lm -lnsl -lthread install: echo '$(BINDIR)/ru $$* $(BINDIR)/wam.bp' > bp chmod ugo+rx bp mv bp $(BINDIR)/ $(CP) ru wam.bp $(BINDIR)/ chmod ugo+r $(BINDIR)/wam.bp chmod ugo+rx $(BINDIR)/ru @echo TYPE bp TO run BinProlog! uninstall: rm -f $(BINDIR)/bp $(BINDIR)/ru $(BINDIR)/wam.bp asm: $(CC) -S -o engine.s engine.c save: rm -f tar.gz tar.Z rm -r -f bak mkdir bak $(CP) makefile iso.c token.h interf.h $(NEW_CPROGS) bak $(CP) $(PPROGS) bak $(CP) README add_bp cbp bp bak uue: save mv bak bp$(VERS) tar cvf bp$(VERS).tar bp$(VERS) compress bp$(VERS).tar uuencode bp$(VERS).tar.Z bp$(VERS).tar.Z > bp$(VERS).tar.Z.uue mv bp$(VERS) bak rm bp$(VERS).tar.Z gz: save tar cvf tar bak gzip tar Z: save tar cvf tar bak compress tar restore: rm -f -r bak gunzip tar tar xvf tar rm -f tar diff bak . @echo 'to restore do cp -p bak/* .' test: rusage bm1 mbp rusage bm2 mbp rusage bm3 mbp rusage bm4 mbp ftp: makefile sh -c 'rm -r -f ftp; mkdir ftp; mkdir ftp/progs' $(CP) ftpsrc/* ftp $(CP) $(PPROGS) ftp $(CP) progs/* ftp/progs' prof: $(CC) -DPROF -g -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o bigbug: $(CC) -DPROF -DDEBUG $(GG) -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o trace: $(CC) -DPROF -DTRACE $(GG) -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o # bootstaping remake: @echo remaking BinProlog with C-parser... echo "make($(PROJ)). " | cbp mostly_clean: rm -f *.o rm -f otherwam.bp ruclean ru_clean: rm -f ru.*.* clean: rm -f *.o ru core rm -f *.s w2a rm -f *.tar.*.uue *.gz wamclean wam_clean: rm -f *.bp *.out *.pl_wam realclean real_clean: clean wam_clean ru_clean cprof: $(CC) -O -p -L/usr/5lib -o ru $(CPROGS) tcov: $(CC) -a -o ru $(CPROGS) ru tcov -30 $(CPROGS) tail -40 ru.tcov int: Auxpl/int.c $(CC) -O4 -o int Auxpl/int.c w2a: $(CC) -O -o w2a Auxpl/w2a.c w2a < wam.bp > wam.txt #.IGNORE: # ----------------- dependencies ------------------ sym.o: sym.c global.h dict.o: dict.c global.h io.o: io.c global.h defs.h builtins.o: builtins.c defs.h global.h load.o: load.c defs.h global.h ru.o: ru.c defs.h global.h bboard.h engine.o: engine.c defs.h global.h bboard.h bb_instr.h float.o: float.c defs.h global.h debug.o: debug.c defs.h prof.h global.h c.o: global.h c.h c.c main.o: main.c rterm.o: rterm.c token.h interf.h global.h wterm.o: wterm.c token.h interf.h token.o: token.c token.h interf.o: interf.c interf.h iso.o: iso.c global.h bboard.o: bboard.c bboard.h rpc.h buddy.h global.h rpc.o: rpc.c rpc.h bboard.h global.h buddy.o: buddy.c buddy.h RM = rm TESTPROGS = prodcons.pl backtrack.pl \ adder.pl swaptest.pl \ lazy.pl bbuffer.pl condget.pl \ incr.pl mread.pl engine.pl #philo.pl REFERENCES = prodcons.ref backtrack.ref \ adder.ref swaptest.ref \ lazy.ref bbuffer.ref condget.ref \ incr.ref mread.ref engine.ref #philo.ref check: ( cd progs; \ for file in $(TESTPROGS); do \ ( name=`basename $$file .pl`; \ # echo "[$$name]. go. " | ../ru ../$(PROJ).bp 2>/dev/null >tmp1.tmp ; \ echo "[$$name]. go. " | ../ru ../$(PROJ).bp >tmp1.tmp ; \ grep -v compile tmp1.tmp | grep -v "Blackboard:" >$$name.tmp ; \ $(RM) tmp1.tmp ; \ if test -s $$name.ref; then \ if diff $$name.ref $$name.tmp; then \ $(RM) $$name.tmp; echo "$$file ok"; \ else \ echo "Error in $$file"; \ fi; \ else \ mv $$name.tmp $$name.ref; \ echo $$name.ref created; \ fi ) ; \ done ) reference: cd progs; \ @for file in $(TESTPROGS); do \ ( name=`basename $$file .pl`; \ echo "[$$name]. go." | $(BP) 2>/dev/null | \ grep -v compile >$$name.ref; \ echo "$$name.ref created" ) ; \ done $(PROJ): rm -f *.pl_wam echo "make($(PROJ)). " | ru BinProlog3.45/multi/myprogs/ 40755 764 764 0 5764724117 15050 5ustar javierjavierBinProlog3.45/multi/myprogs/philo.pl100644 764 764 2660 5764621400 16610 0ustar javierjavier%%% philo.pl go :- go(5,7). go(S,P) :- table(S), philosophers(P), T is S-1, tickets(T), stop(P), cleantable(S), bbshow(table), bbkill(table). table(S) :- blackboard(table), seats(S,S). seats(0,S) :- !. seats(F1,S) :- F2 is (F1 mod S) + 1, tellt(table,seat(F1, F2)), tellt(table,fork(F1)), F3 is F1-1, seats(F3,S). cleantable(S) :- cleanseats(S,S), T is S-1, removetickets(T). cleanseats(0,S) :- !. cleanseats(F1,S) :- F2 is (F1 mod S) + 1, gett(table,seat(F1, F2)), gett(table,fork(F1)), F3 is F1-1, cleanseats(F3,S). tickets(0) :- !. tickets(T) :- tellt(table,ticket(T)), T1 is T-1, tickets(T1). removetickets(1) :- !. removetickets(T) :- gett(table,ticket(T)), T1 is T-1, removetickets(T1). stop(0). stop(P) :- gett(table,stop), P1 is P-1, stop(P1). philosophers(0). philosophers(P) :- tellp(philosopher(P,100)), P1 is P-1, philosophers(P1). philosopher(P,0) :- write('Stop'), nl, tellt(table,stop), !. philosopher(P,N) :- think(P), gett(table,ticket(T)), gett(table,seat(F1,F2)), take_forks(F1,F2), eat(P), return_forks(F1,F2), tellt(table,seat(F1,F2)), tellt(table,ticket(T)), N1 is N-1, !, philosopher(P,N1). think(P) :- delay(T). eat(P) :- delay(E). delay(_). take_forks(F1,F2) :- gett(table,fork(F1)), gett(table,fork(F2)). return_forks(F1,F2) :- tellt(table,fork(F1)), tellt(table,fork(F2)). BinProlog3.45/multi/myprogs/adder.pl100600 764 764 646 5631276550 16533 0ustar javierjavieradd([X,Y|L],R) :- tellt(bb,add(X,Y)), add(L,R). add([X],R) :-tellt( bb,add(X,0)). add([],0). adder :- gett(bb,add(X,Y)), S is X+Y, adder(S). adder(S) :- gett_nb(bb,add(X,Y)), S1 is S+X+Y, adder(S1). adder(S) :- tellt(bb,result(S)). go :- blackboard(bb), add([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,10,20],R), tellp(adder), gett(bb,result(R)), bbshow(bb), bbkill(bb), write(R), nl. BinProlog3.45/multi/myprogs/backtrack.pl100600 764 764 2727 5631276557 17432 0ustar javierjaviertest1 :- repeat(10), write('repeat: '), test2, nl, fail. test1 :- write(test1), nl, bbshow. repeat(1) :- !. repeat(_). repeat(N) :- N1 is N-1, repeat(N1). test2 :- tellt(a), tellt(a), tellt(a), gett(a), gett(a), gett(a), !, write(ok). test3 :- tellt(a), tellt(b), tellt(c), tellt(d), gett_nb(X), write(X), X=d, nl, bbshow. test4 :- tellt(a), tellt(b), tellt(c), tellt(d), gett_nb(X), write(X), nl, fail. test4 :- bbshow. test5 :- tellt(a), tellt(b), tellt(c), tellt(d), readt(X), write(X), X=d, bbshow. bbdup(S,D) :- readt(S,X), tellt(D,X), fail. test6 :- blackboard(a), blackboard(b), tellt(a,1), tellt(a,2), tellt(a,3), tellp(bbdup(a,b)), gett(b,1), gett(b,2), gett(b,3), tellt(a,1), tellt(a,2), tellt(a,3), gett(b,1), gett(b,2), gett(b,3), bbkill(a), bbshow(b), bbkill(b). bbtolist(B,[X|L]) :- gett_nb(B,X), bbtolist(B,L). bbtolist(_,[]). listtobb(B,[X|L]) :- tellt(B,X), listtobb(B,L). listtobb(_,[]). test7 :- blackboard(a), blackboard(b), tellt(a,1), tellt(a,2), tellt(a,3), tellt(a,4), tellt(a,5), tellt(a,6), tellt(a,7), tellt(a,8), tellt(a,9), tellt(a,10), bbtolist(a,L), listtobb(b,L), bbshow(a), bbshow(b), bbkill(a), bbkill(b). test8 :- blackboard(a), tellt(a,1), tellt(a,2), tellt(a,3), tellt(a,4), tellt(a,5), tellt(a,6), tellt(a,7), tellt(a,8), tellt(a,9), tellt(a,10), readt_nb(a,X), write(X), nl, fail. test8. go :- test1, !, test3, !, test4, !, test5, !, test6, !, test7, !, test8, bbclean. BinProlog3.45/multi/myprogs/condget.pl100600 764 764 1231 5631276574 17114 0ustar javierjaviertest1 :- gett(stdbb,X,X=b), write('test1 '), write(X), nl, bbshow, nl. test2 :- readt(stdbb,X,X=b), write('test2 '), write(X), nl, bbshow, nl. test3 :- gett_nb(stdbb,X,X=b), write('test3 '), write(X), nl, bbshow, nl, fail. test4 :- readt_nb(stdbb,X,X=b), write('test4 '), write(X), nl, bbshow, nl, fail. proc :- tellt(start), gett({a,b,c}), tellt(stop). go :- tellt(a), tellt(b), tellt(c), (test3;true), tellt(a), tellt(b), tellt(c), (test4;true), test2, test1, gett(a), gett(a), gett(c), gett(c), bbshow, bbclean, tellt({a}), tellp(proc), gett(start), tellt(b), gett(a), tellt(c), tellt(a), gett(stop), bbshow. BinProlog3.45/multi/myprogs/incr.pl100600 764 764 252 5631276605 16401 0ustar javierjavierincr :- bblock, gett(stdbb,I,integer(I)), I1 is I+1, tellt(I1), bbunlock. go :- tellt(0), tellp(incr), tellp(incr), tellp(incr), tellp(incr), gett(4), bbshow. BinProlog3.45/multi/myprogs/lazy.pl100600 764 764 744 5631276612 16431 0ustar javierjavier% example that illustrates the lazy evaluation of a background % process. Evenprocess generates even numbers that are communicated % to the blackboard on request. It will always try to calculate % one value ahead. % evenprocess(N) :- gett(bb,request), tellt(bb,even(N)), N1 is N + 2, evenprocess(N1). even(X) :- tellt(bb,request), gett(bb,even(X)), !. go :- blackboard(bb), tellp(evenprocess(0)), repeat, even(N), write(N), nl, N=10, bbshow(bb), bbkill(bb). BinProlog3.45/multi/myprogs/prodcons.pl100600 764 764 1402 5631276635 17316 0ustar javierjavierproducer(25,P) :- tellt(a,done). producer(N,P) :- tellt(a,data(N,P)), N1 is N+1, producer(N1,P). consumer(75,S1,S2,S3) :- gett(b,done), gett(b,done), gett(b,done), tellt(b,alldone(S1+S2+S3)). consumer(N,S1,S2,S3) :- gett(b,data(T,P)), N1 is N+1, sum(P,T,S1,S2,S3,SS1,SS2,SS3), consumer(N1,SS1,SS2,SS3). sum(p1,T,S1,S2,S3,SS1,S2,S3) :- SS1 is S1 + T. sum(p2,T,S1,S2,S3,S1,SS2,S3) :- SS2 is S2 + T. sum(p3,T,S1,S2,S3,S1,S2,SS3) :- SS3 is S3 + T. bbmove(S,D) :- gett(S,X), tellt(D,X), bbmove(S,D). go :- blackboard(a), blackboard(b), tellp(bbmove(a,b)), tellp(consumer(0,0,0,0)), tellp(producer(0,p1)), tellp(producer(0,p2)), tellp(producer(0,p3)), gett(b,alldone(X)), write(sum = X), nl, bbkill(a), bbkill(b). BinProlog3.45/multi/myprogs/mread.pl100600 764 764 1730 5631276621 16556 0ustar javierjavierblockget(N,M,X) :- gett(N), tellt(M), gett(X), tellt(stop). blockread(N,M,X) :- gett(N), tellt(M), readt(X), tellt(stop). go :- tellp(blockget(a1,b1,t)), tellp(blockget(a2,b2,u)), tellp(blockget(a1,b1,t)), tellp(blockget(a2,b2,u)), tellp(blockread(a3,b3,t)), tellp(blockread(a3,b3,t)), tellp(blockread(a3,b3,t)), tellp(blockread(a3,b3,t)), tellp(blockread(a3,b3,t)), tellp(blockread(a4,b4,u)), tellp(blockread(a4,b4,u)), tellt(a1), gett(b1), tellt(a3), gett(b3), tellt(a3), gett(b3), tellt(a1), gett(b1), tellt(a3), gett(b3), tellt(a4), gett(b4), tellt(a2), gett(b2), tellt(a4), gett(b4), tellt(a2), gett(b2), tellt(a3), gett(b3), tellt(a3), gett(b3), tellt(t), tellt(u), tellt(t), tellt(u), tellt(t), tellt(u), gett(u), gett(t), gett(stop), gett(stop), gett(stop), gett(stop), gett(stop), gett(stop), gett(stop), gett(stop), gett(stop), gett(stop), gett(stop), bbshow, write('Done'). BinProlog3.45/multi/myprogs/swaptest.pl100600 764 764 1060 5631276643 17340 0ustar javierjavierproc1 :- gett(V<=(nrev([],[]),Z)), tellt(V<=Z), fail. proc2 :- gett(V<=(nrev([X|L],R),Z)), tellt(V<=(nrev(L,L1), append(L1,[X],R), Z)), fail. proc3 :- gett(V<=(append([],X,X),Z)), tellt(V<=Z), fail. proc4 :- gett(V<=(append([X|Xs],Ys,[X|Zs]),Z)), tellt(V<=(append(Xs,Ys,Zs),Z)), fail. procs :- tellp(proc1), tellp(proc2), tellp(proc3), tellp(proc4). go :- procs, tellt(V<=(nrev([1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,5,6,7,8,9,0],V),true)), gett(S<=true), write(S), bbclean. BinProlog3.45/multi/myprogs/bbuffer.pl100600 764 764 1461 5631276565 17111 0ustar javierjavier% bounded buffer example % the buffer is a blackboard and free buffer space is % kept as tokens on the blackboard. % 1 init(B,N) :- blackboard(B), tokens(N,B). tokens(0,B). tokens(N,B) :- tellt(B,token), N1 is N-1, tokens(N1,B). put(B,X) :- gett(B,token), tellt(B,data(X)), !. get(B,X) :- gett(B,data(X)), tellt(B,token), !. %----------------------------------------------- producer(0,_). producer(N,B) :- put(B,number(N)), N1 is N-1, producer(N1,B). consumer(0,B) :- put(B,consumer_done). consumer(N,B) :- get(B,Data), delay(10000), write(data), nl, N1 is N-1, consumer(N1, B). delay(0) :- !. delay(N) :- N1 is N-1, delay(N1). go :- init(buffer1, 10), tellp(producer(25, buffer1)), tellp(consumer(25, buffer1)), get(buffer1,consumer_done), bbshow(buffer1), bbkill(buffer1). BinProlog3.45/multi/myprogs/condget.ref100600 764 764 1171 5653202134 17241 0ustar javierjavier?- compiling(to(mem),condget.pl,...) ?- test3 b [name(stdbb),address(001a6000),free_memory(3808),time_stamp(12)] terms=[a,c] processes=[] test4 b [name(stdbb),address(001a6000),free_memory(3760),time_stamp(24)] terms=[a,c,a,b,c] processes=[] test2 b [name(stdbb),address(001a6000),free_memory(3760),time_stamp(24)] terms=[a,c,a,b,c] processes=[] test1 b [name(stdbb),address(001a6000),free_memory(3776),time_stamp(24)] terms=[a,c,a,c] processes=[] [name(stdbb),address(001a6000),free_memory(3840),time_stamp(24)] terms=[] processes=[] [name(stdbb),address(001a6000),free_memory(3840),time_stamp(24)] terms=[] processes=[] yes ?- BinProlog3.45/multi/myprogs/bug.pl100600 764 764 104 5646235356 16223 0ustar javierjavierbug:-member(X,[1,2,3,4]),tellt(answer(X)),fail. go:- tellp(bug). BinProlog3.45/multi/myprogs/backtrack.ref100600 764 764 1477 5653201462 17557 0ustar javierjavier?- compiling(to(mem),backtrack.pl,...) ?- repeat: ok repeat: ok repeat: ok repeat: ok repeat: ok repeat: ok repeat: ok repeat: ok repeat: ok repeat: ok test1 [name(stdbb),address(001a6000),free_memory(3840),time_stamp(120)] terms=[] processes=[] abcd [name(stdbb),address(001a6000),free_memory(3840),time_stamp(136)] terms=[] processes=[] a b c d [name(stdbb),address(001a6000),free_memory(3840),time_stamp(152)] terms=[] processes=[] abcd[name(stdbb),address(001a6000),free_memory(3776),time_stamp(168)] terms=[a,b,c,d] processes=[] [name(b),address(001a4000),free_memory(3840),time_stamp(24)] terms=[] processes=[] [name(a),address(001a5000),free_memory(3840),time_stamp(40)] terms=[] processes=[] [name(b),address(001a4000),free_memory(3680),time_stamp(40)] terms=[1,2,3,4,5,6,7,8,9,10] processes=[] 1 2 3 4 5 6 7 8 9 10 yes ?- BinProlog3.45/multi/myprogs/incr.ref100600 764 764 203 5653202136 16526 0ustar javierjavier?- compiling(to(mem),incr.pl,...) ?- [name(stdbb),address(001a6000),free_memory(3840),time_stamp(20)] terms=[] processes=[] yes ?- BinProlog3.45/multi/myprogs/prodcons.ref100600 764 764 100 5653201454 17420 0ustar javierjavier?- compiling(to(mem),prodcons.pl,...) ?- sum=300+300+300 yes ?- BinProlog3.45/multi/myprogs/adder.ref100600 764 764 205 5653201464 16657 0ustar javierjavier?- compiling(to(mem),adder.pl,...) ?- [name(bb),address(001a5000),free_memory(3840),time_stamp(48)] terms=[] processes=[] 220 yes ?- BinProlog3.45/multi/myprogs/mread.ref100600 764 764 211 5653202474 16667 0ustar javierjavier?- compiling(to(mem),mread.pl,...) ?- [name(stdbb),address(001a6000),free_memory(3840),time_stamp(156)] terms=[] processes=[] Doneyes ?- BinProlog3.45/multi/myprogs/lazy.ref100600 764 764 243 5653201474 16562 0ustar javierjavier?- compiling(to(mem),lazy.pl,...) ?- 0 2 4 6 8 10 [name(bb),address(001a5000),free_memory(3776),time_stamp(48)] terms=[] processes=[(4,gett(request,true))] yes ?- BinProlog3.45/multi/myprogs/bbuffer.ref100600 764 764 501 5653201477 17216 0ustar javierjavier?- compiling(to(mem),bbuffer.pl,...) ?- data data data data data data data data data data data data data data data data data data data data data data data data data [name(buffer1),address(001a5000),free_memory(3680),time_stamp(248)] terms=[token,token,token,token,token,token,token,token,token,token] processes=[] yes ?- BinProlog3.45/multi/myprogs/swaptest.ref100600 764 764 155 5653201472 17455 0ustar javierjavier?- compiling(to(mem),swaptest.pl,...) ?- [0,9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,4,3,2,1]yes ?- BinProlog3.45/multi/myprogs/engine.pl100600 764 764 1405 5756773200 16735 0ustar javierjavier% Linda based parallel Prolog engine % Author: Paul Tarau % last update Mon Nov 14 09:21:53 AST 1994 go:- open_engine(X,append(X,Y,[a,b,c,d]),E), query_engine(E,A), query_engine(E,B), query_engine(E,C), query_engine(E,D), close_engine(E), write([A,B,C,D]),nl. open_engine(X,G,Handle):- blackboard(Handle), tellt(Handle,fuel(go)), tellp(engine(Handle,X,G)). getfuel(Handle,Todo) :- gett(Handle,fuel(Todo)), !. putanswer(go,Handle,X) :- tellt(Handle,answer(X)), fail. putanswer(stop,Handle,_). engine(Handle,X,G):- call(G), getfuel(Handle,Todo), putanswer(Todo,Handle,X), bbkill(Handle). query_engine(Handle,Answer):- gett(Handle,answer(X)), tellt(Handle,fuel(go)), !, Answer=X. close_engine(Handle):- bbkill(Handle). BinProlog3.45/multi/myprogs/engine.ref100600 764 764 105 5653204230 17036 0ustar javierjavier?- compiling(to(mem),engine.pl,...) ?- [[],[a],[a,b],[a,b,c]] yes ?- BinProlog3.45/multi/myprogs/all.pl100600 764 764 3676 5760506667 16262 0ustar javierjavier% Linda-based parallel findall % Author: Paul Tarau % Last uptdate: Sat May 6 11:44:49 ADT 1995 /* This program shows how a lazy parallel logic engine can be implemented using Multi-BinProlog. The background engine is seen as an abstract data-type consisting of a (possibly infinite) lazily produced streams of answers. It can be opened with open_engine/3 and closed either when no more answers are available or because the master process thinks its answers are not needed anymore. Answers produced by the engine can also be gathered through a re-entrant findall primitive. On machines with more than one CPU, our multiple parallel engines materialize as threads scheduled on different processors and can give signifacant speed-up over sequential execution. We have measured an almost 4-times speed-up for a graph-coloring program on a 4 processor Sparcstation 10. Koen, please adapt mcolor.pl and the parsec script for your 8-processor SS1000. */ % master operations % creates a parallel engine open_engine(G,X,Handle):- blackboard(Handle), tellt(Handle,fuel(go)), tellp(engine(Handle,X,G)). % gets answer(C,X) or C=yes or no from the parallel engine query_engine(Handle,Ok,Answer):- gett(Handle,answer(Ok,X)), !, tellt(Handle,fuel(go)), Ok=yes, Answer=X. close_engine(Handle):- bbkill(Handle). % slave operations engine(Handle,X,G):- G, getfuel(Handle), tellt(Handle,answer(yes,X)), fail. engine(Handle,_,_):- tellt(Handle,answer(no,[])), getfuel(Handle). getfuel(Handle) :- gett(Handle,fuel(_)), !. % application: parallel findall query_answers(Handle,As):- gett(Handle,answer(C,A)), !, query_answers0(C,A,Handle,As). query_answers0(no,End,_Handle,End). query_answers0(yes,X,Handle,[X|As]):- tellt(Handle,fuel(go)), query_answers(Handle,As). par_findall(X,G,Xs):- open_engine(G,X,Handle), query_answers(Handle,Xs), close_engine(Handle). go:-par_findall(X,member(X,[1,2,3,4,5]),Xs),write(Xs),nl. BinProlog3.45/multi/myprogs/mcolor.pl100600 764 764 15751 5753017022 17002 0ustar javierjavier/* Originally written by Neng-Fa Zhou. Optimized (made about 120 times faster :-)) for BinProlog, further optimized and adapted for Multi-BinProlog as a benchmark for parallel Linda engines on multi-CPU Solaris machines by Paul Tarau. */ go:-par,seq. seq:-bmark(seq(_)). par:-bmark(par(_)). bmark(Goal) :- statistics(runtime,_), Goal, statistics(runtime,[_,T]), arg(1,Goal,Xs), write_all(Xs), write('execution time is '),write(T), write(' milliseconds'),nl. write_all(Xs):-memb(X,Xs),write(X),nl,nl,fail;nl. seq([A,B,C,D]):- color(red), color(pink), color(green), color(white), gett(coloring(A)), gett(coloring(B)), gett(coloring(C)), gett(coloring(D)). par([A,B,C,D]):- tellp(color(red)), tellp(color(pink)), tellp(color(green)), tellp(color(white)), gett(coloring(A)), gett(coloring(B)), gett(coloring(C)), gett(coloring(D)). color(First):- color_graph([First,blue,black,yellow],Dict), !, tellt(coloring(Dict)). color_graph(Colors,Coloring):- regions(Rs,Coloring), solve(Rs,Colors,Coloring). regions(Rs,Dict):-N=110, findall(R,range(R,1,110),Rs), functor(Dict,array,N). range(Min,Min,Max):-Min=Consumer:-!, % the consumer is explicit cross_run(Producer,Answer,Consumer). Answer<=Producer:- % the consumer is in the `future' cross_run_with_current_continuation(Producer,Answer). cross_run(Producer,Answer,Consumer):- compound(Answer),copy_term(Answer,A), open_engine(Producer,Answer,Handle), (A:-ask_or_kill(Handle,A))=>Consumer, close_engine(Handle). cross_run_with_current_continuation(Producer,Answer):- compound(Answer),copy_term(Answer,A), open_engine(Producer,Answer,Handle), assumei((A:-ask_or_kill(Handle,A))). ask_or_kill(Handle,Answer):- query_engine(Handle,Ok,Answer), ( Ok=yes->true ; close_engine(Handle) ). cross_test:- a(V)<=member(V,[s(A),s(B),c(A,B)]), a(X),a(Y),a(Z), write([V,A,B,X,Y,Z]),nl, destroy(a(_)), write('engine closed'),nl. cross_impl_test:- engine_params(30,10,10)=> % overrides the default engine parameters ( G=member(A,[a(B),1,s(B)]), a(A)<=G=> (a(X),a(Y),a(Z),write(G+[X,Y,Z]),nl) ). destroy(AnswerPattern):- assumed_clause( AnswerPattern, ask_or_kill(Handle,AnswerPattern), intuitionistic(Scope) ), close_engine(Handle), Scope='$closed'. % close the scope of the assumption BinProlog3.45/multi/ru100755 764 764 411344 5764705524 14071 0ustar javierjavierELFE44 (44/usr/lib/ld.so.1L)(J^g9s:wYp- }f"zTbO%ml<5F;4>s]ex Q 6y`c&-+3F}ZS\o]PPh9MGMiw=qE,C!dBTUk3 RuCg<KW*Y$~@N^{4$1ftx?H/~V2n|t7Xm.1AJWNSRZ"@,_HVE|j8d/2rOp:yn0L\K=GI ?6z% *i'.7#vD05QqhXal)oD`I8u[+[!rUk'jv( ca#&BA{e_>b;-0@AE( 4 < H   l  ,`H,-t40;4G< UMhHaEthNopt (\ hD$`|$D$`$ PD @L",9\lE4 S,`ei$vd {X38ؤdp!8(|\ D08`}x|&H 4 A[a m@zL`@!$8(<0ά0T { + 5=,< LPVxbXk8 s"4dh L l \=Hd` 0 /%39 B LS<Z?,n8$ $wH$ lDt@GDd|8 D p<# 3Ͱ>lEwlXOHYP` oTt|H><Lה4 DX$K| t( $L"(MP34=lLLRd xrL}L L  R4CD,1\P(2hwP &p0H48HB|Q ,bn8}K@LpdFLd^~ LPlO804T2 :<F9TL_؈kxs,  PH Lht00x(  1x   ` %< 34 ?  HX8 R 0 X8 a  l v8 g(X L   ,TX P     DL   P    % H 0 9 B Q$$ [ aT m$ wK  ~  < |L X ŒD x dd X /t\ ( `@ T հ\  ׸ p 0   +\@ ;\ Fh R  \ c n v   {0   bL <(  ۴ ` * H  | "4 + 7 B K! Sh Y g z l  Ph3  , x , xH |x `( 5<    T 2$  &H +\ 0  :l ? F p N [ kX w Sh  D  ߼ y P    >t   p0 ~x"P.X4՘X?F\Mw8VYpz0 8 hxdpk XX D<0\7{`J|Vx@_pk8 xW"HUP@H  Nd$.֠6=q0 CL<MXSF e$lqvMD$h,8 !@ L<\7 `XϨ4XJ0 $6- 4GHDpN$XDgiH|`P l@KDhX4|ؐH(  hHd l*T@*XQ @_G4sN`@D$wPD Hl!X?8P 4$dX-,3d@9H= KOlx^ h rhtabledcg_telllvalputtermcreateremotebbgetoptsymcatterm_append__DTOR_LIST__call_engine_startanswerhgetsigemptysetlistlengthbb_save_origxdr_voidbb_opreleasevarsmy_recursive_copytobuffernew_builtincallocbbmallocrun_bprpc_controlstart_getatofbracketed_commentatoigetterm_1rpc_bbmallocrpc_bbcheck__CTOR_LIST__seeing_telling_atdefintegertokenhsettanisdigitstats0reducelistoverflow_bybbcheck_1bbtermsreleasestackgiso_read_term_3serverprogfindvarkillprockillserveriso_write_term_3_environ_endstart_wamblackboards_1killerthreadget_hexadecimal_escape_sequenceinputhandlecopytobufferdestroy_engine_iobstat_leftcopyfrombbbp_haltcharconvlextableop_classsetargrpcserversemapoolmembbfree_1_GLOBAL_OFFSET_TABLE_cleanlocalbbreturnfilebufferputvarnamesigactionseterrbb_pool_addressis_engineunix_getenvbuddymax__ctypeshift_char_code_listbbunifyclnt_createapplyfoutxdr_u_intinit_bpabortsigignoreshowerrorcopy_from_engineaddprocessinit_small_memthr_createfloat_opallocatefilebuffermutex_destroyfseeksvc_donesigaddsetsignalswritesingle_line_commentdelete_small_memsvcerr_systemerratexitexitrandmakeintegerunifyvarrootdet_append0blockrootmake_bb_poolrestart_origfunctorunix_cdreducecurlyhdefpool_initclearerrloggetnetconfigentbbmalloc_1accessmakefloatatomtablemallocxdr_wrapstringputcsprintfthr_setconcurrencymake_symtablemake_char_arrayreturncharpowmake_atomtablelocal_errorputsthr_continuesema_initif0bp_prolog_callmaxbuddyfreebbprocesses_1_initask_engineunix_killdouble_to_intsfputcfindall_lift_heapsvcerr_decodemake_floattokenptrsvc_sendreplyinit_cbufferptrbinary_constantchar_code_list_tokensread0bp_versionrpc_bbprocessesgetbyterpcserveriso_eofterm_sizemakeatomallprocessesglobalwambp_constokencharinit_instr_lenfreenetconfigentdcg_connectints_to_doubleexec_linkload_enginemakevariablesoptionunwind_trailftellinit_codeget_non_quote_charcurrent_outputcputimeterm2relocgettermmultitask_enginessscanfmy_recursive_copyfrombbxdr_intbuddymallocinittokenizerparseerrorcan_recovershell_1realbuddysizeunix_accesscurrentfileoctal_constantdeletelocalbbc_interfacesee_tell_atolder_file0make_stackbbmemcompareungetcmakevarpeekbytecond_signalfclosegetenvtotalbuddymemxdr_rpctermxdr_freefloat_funsread_sysconflinenumbername2listinit_randomget_single_quoted_itembbterms_1thr_exitshowstackerrorlinemakesingletonsoptionstrncpythr_sigsetmasksee_tellserverthreadbuddyshowcleantrailsvc_tp_createxdr_u_longthr_kill_DYNAMICstart_profilercopy_termfloortokenstringadd_instrinterpcond_waitstrncmphfulllist2termstart_putchdirget_back_quoted_charhcountshowfbufprintf__iobinput_floatnew_funcrpc_bbmemrpc_puttermmutex_lockfeofsvcerr_noprocremove_bbclientstopserverwrite_floatsema_waitpstackrpc_bbmovechararrputterm_1inputbufferiso_open_stream_3_exitmake_byte_arrayget_double_quoted_charinit_common_memnewatomrpc_bbcleanmake_opshowspecifierload_kernelexpmutex_unlockcopytobbrpc_bbtermsfloattokenvarcountenvironsrandcreate_enginefindall_store_heapdeleteblackboardfindall_load_heapcreatevarbpinstr_lenterm2listprocessesreadtermgetsymbolbuddycreatelink_haltreducetermfilelistxdr_arrayiso_lseekend_profilergetcfreeseen_toldhbakoptindopcountget_bbclientinit_engine_memstrip_cont0wamprocvariable_tokenasinnumber_tokenrpc_bbfreeoperatorhindexbuddyinitinitserveroptarglookahead_char2bufferendquietmescurrent_inputstrcmpsystemstartup_mesblackboardsfgetsnametoproginit_orig_wammaketermget_octal_escape_sequencecond_initget_cmd_line_optionsmake_hentryacossvc_run_PROCEDURE_LINKAGE_TABLE__edatafopenvalid_opderefget_back_quoted_stringmatch_termolder_filebbcleanchange_arg__do_global_dtorsbbfreeiso_close_stream_2processinfofilereadbbprocesses__CTOR_END__strcpyreloc2termget_control_escape_sequencerpc_blackboardsinsert_opshifttokenget_meta_escape_sequencereduceinput_fun_etext_lib_versionnewlexsuspend_enginekillatomstampbp_exitfflushtoken__eprintfquiet__do_global_ctorsdelete_poolatanload_engine0fatal_error_ctypebb_restart_orig__DTOR_END__mainprintablefloat_comparereducebracketsxdr_stringhinitbbmove_1setbad_instrmemcpyreturn_bbclientseparator2atomstrlenheap_or_bp_haltbbclean_1stat_useddeleteremotebbget_back_quoted_itemget_single_quoted_charstatbp_heap_toplseekinterp_frommakevariable_namesoptionget_double_quoted_itematombakrpc_getterm_finitranspbbmem_1hlistsinhstampwritetermmy_recursive_copytobbshowstackelementxdr_rpcmallocdefault_start_pointhexadecimal_constantxdr_allboardwarnmesunix_argvchar_conversioninitvarsremoveprocessfromblackboardfprintfsoutputbyteshiftadvance_charbbinfofloat_fun2thr_selfdeleteprocesstimessfullop0createlocalbbcosget_name_tokeninputfilesema_postmutex_initlibm.so.1libnsl.so.1libthread.so.1libc.so.1H` \N8f' $0<HJT`lxqxba: ,8D)P\Kh7t{o09Um.(4@L0Xedp|1iwj   ! ` $ 0t <  H TG ` ll x         $  y z    , 8n D P, \n @D# @ !(@ @g, @ "@.@@!4!4   !8`*` 2`@ !4, ?, @א @    ("("@ " 㿐 & !"(bp$ a$ a$ cX@X$ @#$ 㿐 & "Ȑ""p? @"@#o @Ð @ @X & 㿐"x"x@n@#!P㿐 ` @#Ԑ!p :` @#㿐&&'? ?" @ @@`@ $```@8(&@ 2&6` "&&rP\@   @#@# P`&Pa"@ 2&@6  "&@&@@TP\@   @#Ė@#c P`&PC"@`C >6  :  @#@#I @:$@P\@   @#@#9 P"P`"`P &P$@ .  $ ?@  $.  @$ @?$8a 㿐#a@Ȕ @#  㿐"x@2a@#㿐 X 4# P#`  | "`$"h "`( " 2 " P" "@+`?㿐ْ㿐&`bhbh&``@X @ ' 2@  '?`P'?`' @㿐@% 2 |@"!*  X 4& P"$bhbh"(` @(   $@ 2 `$ P$ $@ Đ "@ "  " & , & t" 㿐???ǐ?㿐@$    4 , t@  㿐 @:    "@ 2    㿐: `%S"8*`@NNNXNhNxNNNĐ "@Đ "@Ē "Đ "@","t " @"7b@"  㿐@:  #@Òb(@"   "@","t" 㿐 $1?@ ? @  @ @:  `"@@(@ "??'  !'@ :   \   @:  ""@@2`"  ?  ??2@ 㿈 +bx ` T *`@|S\SxSSVWWSX|TTTTXXXXY`,`aaLa`Y@YTYYacD\UT^U[XV^VD]VX_VZPU^UU(bla`cWW_,_8_`_l____ataffe|jhLhlhhi<iij`k(kl`mmn8noo<oopPpqqdqr$r|rs,sstttttuuvv<vvvw(y$xyH|PwHwhwwx wx<xz{{{|,zLzz{{@}||}}P}p}}~`~~~$Tcdf egg8g`ggggghh4&C4&@&=`4 "2/44`@ 2)@  @ 2@  P \@   @!@   P`' P"@`@$@ 2E`4&@ʹ, 2 4& , 2 &@4, 42` Ɩ ", 2 4& , 2 4 4, &2`& 4, & 2 &@`&4 F, 2 &4, 2`&@`& &`` 4 *,  2 4, &@4, & 2 j "}L4&, &@2 &`q`"6`@ 2#@  @ $@@T P \@   @ T@  P`' P"@2@>4$@&@6`@ 6"X đ4`@ 2#@  @ $@@ P \@   @ @  P`' PX"@24&  &@ʲ`ȶ ` @ ?@ @?3"B - 87"  8@! `@  @  @ "@"` 8@ `@  @  @ "` , δ 4`@ 2)@  @ 2@  P \@   @u@  P`' P"@`@$@ 2Z4<` , ` 2` 4`@ 20@  @ 2%@  P \@   @3@Ґ  P`' P"@`@$@ &@4, &`24` , 2 4`@ 22@  @ 2'@  P \@   @@  P`' P"@`@$@ &@4, `& 2 &`2` ,  4`2`& `& 4`@ 2)@  @ 2@  P \@   @@A  P`' P"@`@$@b 24, `& 2` e`  v` 4&@& 4, `& 2 .&`4&@#& 4&@& 4, ;&`4&@0& 4$@&@4, `& 2  &`4$@&@4,  2 &``& &`8` 4$@&@4,  &`4$@&@4`&, &`2  &``  8@l  4 f∓, `,  & 2 ,  & P&&& P{4' P, ` `& & 2 ,  1 Pe4' P, ` `& & 2 @ΐ". @ɐ") Ā4, 4,  @ ?, "@ ?}4 * &, 4&?2 `2m&?@  @  @  2]&?4  "Y&?W&?, 2 `2&?@  @  @  2&?4  "&?&?4`27&?@  @  @  2'&?4  "#&?!&?, 2 `4 * &@  @  @  *`4  "& & & , 4 2 &@*`&& "` `@  @ @bx@K2`bxW* `"6,@ & 2@ /, `@  4 @4  @4 ?bx, ,@ @ ,bx *& * `",@ & 2@ ,@  ,4  2@ ,&bx@2  8@Ӗbx@ 8@  x@@ Rp :    ' , ' t"  Đ !m"@@J @PU 4 | Xc ' P & "$bh` "( & 2 & P& m&@ @k" @ @"1@2X@X# Đ@P"K,   @ Ж "?   @  "4 @  @ "&   '  & @&Mbx@Mb@#1!"@ec0"@e`@ 2@  @ 2`@  @  @ "`@  @  @  `@  @  @ A x4  v` @  4 @ @4 ?bx, *@Ȓ@  ??  * @` @#B , 2  44 W <h7&; , < 2``*4 4(&??  * @` @# ޑ, 2  ѓ44&; , < "2``*4Ð 4&??  * @` @" , 2  44&; < Z@, 2  *``4 4&??  * @` @"’ , 2  44&; < : z Z , "2``*4n 4&? ` 2 ?:` 2??Òc8?  * @` @" V, 2  I44&; , < : z2``*46 4t&??@"d 2, 2  %44d&, 2   @4  ? @4 ? P& !@" @" @", 2  4+  4+  2& ?  NcH"@ʑ< S??  * @`  @" "B6= ??  * @`  @! "+$&??  * @`  @!ޒ "4ߴ??  * @`  @!ǒ "ʹ&ȴ??  * @`  @! "2??  * @`  @! ""??  * @`2; < , * 2``*  4C 4&??  * @`2; < , : 2``*  4+ 4i&??  * @`2 , ?2`` 4 4S&??  * @`2y , ?2`` 4 4=&??  * @`2c , ?2`` 4 4'&??  * @`2M3, ?2`` 4Ӑ 4&?@?* b, 2 44&?  ch?`<  4` "@   c4 (, c@є + 2``@4&@  "ʴ@ & "@  ""8&?@M  "?` 2` "?@&??` 2` "?@&??@ ?V"8R, 2  4D4&@  B, 2  444r&@˒3, 2  4%4c&@ 4", 2  4R& @s, 2  44C&@ٔ, 2  444&, 2  *  44(&@> "Q!@ڒ "I?:  "", 2  4ǐ4&@ ".?@: '@h " @, 2``44&?:  2??  24  2@" @, 2  44&@ "@w, 2  j44&@ `"?  $4  ", ?:  2  8@@#    @" ' , 2  404n&@5-, 2   44_&@ , 2  44P&", 2  @44B&"?$@ P \@   @k@   P`' PZ"@@ ” "S#"ؑ, @2 $@ `4Ԑ4&@ 4ґ, 2  œ44&@đ, 2  44&@ , 2  44&@!, "ߴ@ , @#e đ2  44&, "2``*  4~4&@В}, 2  4o4&@n, 2  4`4&@ "@ "@( "@*, 2``<44z&?`2@@ P \@   @@@  P" P`"` P ' P?$@???:`:@җ:, 2   44E&?@? "n> "g7??, 2  44)&?  2S<  "N?ۙ;  2   ,   t@<   ` @  @  @  2 P4   P' P  & 2 @ H"?@"@   @F42& @U"& ' Po' P  & 2   `$@  @  @  2 P4   PG' P  & 2 P@ "= P?@"9 P@  @F첒2& P!' P  & 2 *@U첒" P&&& ' P  & 2 ' P  & 2 d?`@  @ @?< @J!貒, 2  4& @{Б, 2  ?44&&*` (" ?㿐?   @֒`(:  bb @ǒ`P`+ @@G 㿐? ` 2` *` @`x2 bH* @Z@  @) 㿐? `  `:`? `  2`  `@ *`2 bH* @@3 `?㿐?  6  . `2 bH* @@  a@]㿐?  a8? `   a`< @:`  a@=*` ( 㿐` 2&` `  ` @` ` 2&2` "&& ` 2w :``ja#x*`@<h@Ԡ$ K"Ԑ  @  8 P P0  ( !`" *   " !b " #Xb "@* *` * *  Δ x`, ͐    `. Ð @ 㿐? ` ?2`  @z!8  3   *`+ 2` 2 "H*`*  a*`"H2` `4*`#  :" a2` "H*` ; a@"@ޒ 㾀@?@6! @h? @&  0 㿐? `  b *`2 bH* ? `  *`2 * ΐ  bH@㿐??  2`@ bp, 2 bH* @ `<`bb`T1&`L@j`  @b2\"@ 2S"@bL@ 2@"""@""9bb`X.&`P@.`  @sbذ%@ܔ 2"@abذ@x 2"""""#@t  㿐??   2` @vc( ``: "`@T#X  " @) ?" 㿐?2    "@:#X "@*  㿐 -!  ":"56"" @?@??  ?@W??@?H@""( "  l" x"" @" $"??@>?@" $"?&?@"0@#㿐  `2 *` "*` @` *`2` !"H*`"@ @"㿐?   *"c:@?2 bH* @???: :`@ :@ 㿐 `  @ ``   `@  "@"@ `  &. > >`.`2 2` H* *`@i 6`6 "@`  ` 㿐`2 @"@@`@  `@ ` @ ` "  "@2 ` 2 4``   `@ ` ` 㿐@  @   @ @ `3    E [R ?=+ S, I` 2  "   `2 ` " ` @` ` 23  :` 2, ! %  #c@~@ɐ# ?+,  &&  ?   㿐   6 !"c@v>  " .  2 bH* @ % `   @` `2` *`  0 @` 0 " ,   * 㿐@`2 @"@`@       "@Ւ p% `&!`J@ 0& @ `*  &J@   ,M&    ` `@#  ``(@㿐"4& , `( 2` "8 @`H" @2x && `     ` "8& #@㿐 c  3`   Z` @   @ P`   &   @   @ "8`@ =   2  '`       `  a( 2 ?**`   aP@f @ะ  ? `@2"  0 "    "  "    *"@" ""  " 㿐` @  2@  ` 28 2`3  `1?+*` &* `"*@ & 2@ *@ & ** `"( & 2 ( & (8   @%x 㿐P     @y m & `   @` X` 2`  O `H `2 \@Ґ #@#` `;"\@ǀ#@#`&`"Ǚ2`?* `+  & 2 + `  " ` @` `  2`  8\:\ ` 2&2` "&& *  @@ "㿐,8`  2`   & f2&, 㿐`?&`"?"? @ `  a`?*@ " `  a@:```*`  <" : *   " 㿐`` @?  @>2 `&`   `  & ` 2` 2`& ` `ఒ2$@ "( $`"㿐`"@` "`"```  $` "```Ԡ ` 2?* **  # @ 2@ *  "`"`㿐   bX `  3``2bp@ z "4. ?". . "?+@  " "@ 2 . 㿐?  `?<  8 %b@ I0& 2`P`P`\@   @ w@  `P"`Pؐ "``P &`P"ؑ,` "@㿐"`2P@P\@   @ M@  P"P "`P &P"0"0& & &   $&@ 㿐?   b?` <  4` 2@b@ ` c4 @ *`c8@ $@@@ 2`P:?`P`\@   @ @  `P"`P`"``P &`P? $@㿐? `  1c`? :` 2 2 #c`  c2`( c  `?+ ` @ `8@ [ "l0  l "l㿐#X*` #``@ڕ*@ % x@  㿐!#@ "$b @ " b "a̐?"X @ 㿐"?cX  ", " *` `  * @  @     ', * @  ',  * @` 2 "%: X: @  X  $X@"@"!" *㿐"?cX  "* " *`@ `   * @ @    * * @   *@ " *`   ` "`@ z  @ * (  "  X"  * ( 逢 㿐"? @* b *    -*@ " *` ` !" cX? @  * *           & &ɐ Ȱ? " 4 ̘  @ "  0b ̂  @  @ #X"  ##X  b ` 㿐 ` ` 2` " >`+%?# !  @ {b  v`"x@o  j 8  `````6` 4V R"8@N`M8  @ @ Z b  ` 0$ $ 0$ $$  $ 02$ *  $b   `  0$ $ 0$ $0$  $ 02$ *  $ 0$ $ " |` ", $L L2\" 2 " 㿐  2 6  2  2  > $ ʐ 㿈쀢? H *`  * "8 '"#p:`cX:` *x " + cX@  *`$cX " "a̔"!+@ "  "~p $p 㿐?` 2` "?@&??` 2` "?@&??` 2` "?@&???? (㿈?` 2` "?@&??` 2` "?@&???`!  +  b * @`"8@ #@Ғ`?a `?a(@ (+""3: cX: @ Ґ ?+ @ " *`cX"  &cX ?a""*@ *`  * @`㿈?`? 2` "?@&??` 2` "?@&?? 2?!@`!h@ 0y`!  +  b * @`"8@ #@U`?+a`?$a( *`  * @`"8@ A  4  `` ` `a@,` *`  * @"`"3: cX: @ ) ?+ @ " *`cX"  &cX ?"a"*  㿈?`? 2` "?@&??` 2` "?@&???쀢 ?'a! @, * b * @`"8@  4  ` `* a@ *`  * @ "`㿐@ Z!  "aa* aa *?a*a* a*3a*a*a*a* a*a*a*Aa*a*a*a*a*a*a*a*a*a*1a*a*a*a*"a*&a**a* a*$a*(a*,a*5a*6a*7a*8a*9a*:a*;a*`<㿐N  -`?  ,  , : @k  ,` ,`@@&@ &@`?㿈ג쀢 *  @ 2 2  `" " 㿐`?'+##ᴐ #  @  "   sbx24`? @ aؔA&* @)s` # "I ? "4f&  "  "?]&  "X&  <   & *` < &  <   & *` < & *` 6& < 1& * -& &  < 1'&n &  < &&  < &_ `bx=  `bx *  < $" `, *f 㿐  "b < 1"o!(. @̌ dXʐŨdx͈͈Hm bxbxĒ耢 " "`X 1" #," #`` <@8  `"@ `?@(`  <"  < "  "" @"bR "쀢 2M  ""@ < "@ @ "@ `' "` `' ` < "` . "쀢 2(  @ < "@ ?*@. "#b( @#b@I"8    ' ""쀢 2 g@7"h ʒN`_   b(" 2U "xb |`"J "쀢 2ڰ S"쀢 2Ӱ  "쀢 2̰ " $  c  | +" ' .`2` * "" 2   c 2  | *""   c 2 | " ' .`2` * "" 2s   c 2m  | h""쀢 2{ " $  c  | #" ' .`2` * "" 2G   c 2A  | "<"" 2  c 2. | '" ' .`2` * "" 2"   c 2  | &""쀢 *  @ <  "@"쀢 2 " @  c : | -" ' .`2` * ""    c  | ,""    c 3 | 7"" 2   c 2  | 8""   c 2 | !" ' .`2` * ""    c  | ""    c 3 | 5"" 2   c 2  | 6""쀢 2 " @  c : | %" ' .`2` * ""    c  | $W""    c 3 | 9I"" 2F   c 2@  | :;"" 1  c 2- | )" ' .`2` * ""    c  | (""    c 3 | ;"" 2   c 2  | <""쀢 2  " 28   22 "   # .'  .$""쀢 2 "   c 22` 2`2 | /" ?*@. ">  ?*@.` " .2` * "" 22  ? c 2, 2` 2( `2%   2 : 8   < 0" ?*@* "  0?|' "쀢 2  ?.`* @ "W ' h"@"d @"_ 쀢 2q  ?*@.` " "  Z'  ^E"""쀢 2X  @ <` 8"@ ?*@.`l "  "?N ?* * 2 @""쀢 22  ?*@.` "  <"쀢 2!  ?*@.` "  @a""  @"   '   @⸰ 㿐 ""p@ <"@!  " " *  & !""h "" <"h ""h   & "h" `& 㿐@Ȑ`#"@0@  $`0@bȢP@۔L| x 'L  (* 2 (#Lbp @z#\@Ő#㿐  Ő 㿐@c  @r@o#(@#0L #@@g -'@V?0@P*@J$ +@?⨓* :` *J b *⨘@C #Xc`#Xcx@ 㿐    #㿐!@"" `?@"H "aİ "!"a@* $  "a `?㿐!!@!b *`@ @#! $! ` * " `*㿐#c@@#@ 㿐L   J. J@ ! ? H.    "H `@  ⌒ ? @"H.  "H'H. @ ! "( "@H"@ "a "(*@": : @  # b  Ě  H  @b "b `㿐a #`@@Z  o* .`2  㿀@G@H *`& .  . >  ~*  㿐" @ߐ#㾐b!ӄ" X @; 8#+ #@ +`@ `0+`@  `ؒ@㿐 hے㿐#`p@㿐#`@ 㿐" 4-  4&: #@`0#`@0 . #`@~> 0 2` "H*`6  #@r` 㿐"  㿐㿐.`* b  & # `+ @G# 㿐( $    b(v㿐   (.d㿐!0#b(  $ !8$ !@ $ !H $ !P $ !X $ !` $ !hے $ <!p֒ $ @!xђ $ D!̒ $ H!ǒ $ L!’ $ P! $ T! $ X! $ \! $ `! $ d! $ h! $ $! $ (" $ ," $ " $ " $ "  $ "(| $ 0"8w $ 4"@r $ 8"Pm $ l$ |$ x  $ "X$ b $ p T l  b( X l  b("hS $ t$ $ $ ́㿐 "pb b b!Y@ 㿐@ 㿐@ 㿐@ 㿐@| 㿐@y.  6 "@`㿐 "㿐$`@$@.`@[$`.$$`$`$` ``$``$` `$`@  㿐 b ۤb`? " D d?!"($`  $` " `! "  @@  $`Р  ?$`Ԁ " Y 2   "а 㿐? @`""` đ.` "@ Đ "`" : //4㿐! n l`?! e H "  Y $ " (" N " #8 #P @ @` @(@ 㿐""`  " ? "b(f#p 㿐 @_ $.`(  .."@"`"` "` "`"`"`"` $"` `$ d` 㿐 "  @0 |@. X@, 4@* @( 㿐 " @h?? x#%#+bt@ *`: ?* :  z* Xdddddddddd@d0c@˔쀢 _* ]%btc@耢 U* S$c@䀢 K* I$c@ A* ?$ c@܀ 7ܑ* 5$c@؀ -ؐ ) * '$c@Ԁ Ԑ  * $c@}Ѐ Б* $c@s̀ $ "? ??s #c@ H\ ! * @㿐1"`X @$ -㿀) p'%#`!!0#\#d1##hb#`@a8㿐%(#`$  $ آ!$ !Ѡ `,( @0   ,(    ,("t"t &` 㿐 !u#(@ @@ @  #aP@" ֐ĐȐ㿐ױԐ 㿐@V.@.@㿐!"l"l$"l""l.$"l"H9 " "H J9 $2"  J  _2"J9$, ؄" "@ "H9 " "H J9 _"  J  _2" "@ "H9 " "H J9" J " "@ bH9 " b"bH b* J@8  `"㿐 ߐ ) ڐ ,  @B ``"㿈",  ]$ ) |  @$쀢   ]@ $ ,  @쀢  ؐ耠@ A$p  [  ] ",Q$ 쀢  耠@ D@$ 57 / "- _ ( $ǐܰ# 'Ԑܒo'ذ{Ԙ$Ԁ  *   " 0] $㿈!""$"l "l"@"l 㿐.`6` "H.`㿐  %%  %"# ?@!p07v `4 ! $ _+`4!!" a@2 !$``* " @``*  & $ _+`$ a*@ !!" a@{2 !$``j* " @``*``  $ _+`$ b*@`!!" a@S2 !$``B* " @``*82!!a@7: !$``&* " @``* 2*2 bH* @ $   +⬒ " `*b(`?"` K*  $ [*+     b0 2! , " $"  *  b0b0  b0 "b,  b, $  |*  $  ]:*2 bH* @ $   +" #" `*"(  2" @  (*% ,  Ò``$@  *@,`b"b )*㿐!"( $  `$ *@ 㿐!"( $  `$ *@ ) 㿐!"( $  `$ *@ @,a;`d `(@ ?(`"" ##?2  @#`2 #d`#㿀ژ"&& & &  㿀    >  `  :`'쉠B" +   !ذ    >  ` 2 :`'쉠B" 2    ?" ؁ ? )  x  > : `  :`'a B" )k !   > `  :`'aB"   J?"a `?`\ ~ ܓ*`@ (08Tp5@31@/: 83 1 , *% #@3   @#   ?"$$ $  $ x` 2`  `@ ` 2w 2` 2s *`2 bH* @    :: `  :`'a艡B ?" ( ?   :  `  :`'aB"   "( l p2" ?@ ??@@?؁?S"$$ $  $ 㿀` 2`  `@ `  2` *`2 bH* @    : `  :`'aB?"    ?~" ?`18 !*`@<TTTTTTTTTTTTTTT(TTTTTTTTTTTTTTTTTTLTTTTTTTT @X a 7…@'셠B'  ' *  8$ @B $? @7 ? @; ? @9 ? @7 ? @5  ? @3 ? @1 ?"$$ $  $ 㿀` 2` "@&` 2` "@&` 2` "@&  -  ` (2` %   *`2` "H*`!: ; "@b@"?"/?$@$`$``$` 㿈2 @  & ? Hb@5  㿐"@)# 㿐"@ # 㿐8 @ `"  㿐bH.@@@. @.` @ @2`N @2 @ `H  @;` @` @2`3 @2 @ `- @! `% @ " @ `2 @ [2 @ `]2 @ `2 @  {   `} `@ 㿐`"Y "T  ' . '.`B \ '  a b t n v f r `  \ '.&.2$.. ..? *  . . ..... `ΐ ` '. . `   2 `  . "  .  @     &㿀 "S @   6   . 2 bH* @;29  ` 24 2` /*`2 bH* @䀢 "#      0     @' 䀢6  0 `\`m` @<` - >`` @   .  -?  .  333 ͖؀R @2`*` * " 0@*ؖ . u C`6` ?`.`2 bH* @$  ʖԔА@Ȁ Ԁ6 Ѐ6 ̀6 N@ , N` "   '@ (.  ΐ 2`"@@,````   @ 2 ` ?  . ``` !"P?@+ 2  '@`@ ` `2` *`2 H* @ zRL $NL  VJL  AFL  RBL  > <@f` ` 4@ :` . ; OZ@:`: " * @*`@*`" `A.  333 ͔؀R @2`*` * " 0@*ؔ . ݐ  '@ (.@    , ##\$#`'@.@   @B L .cL  2`ж   ,'@  [. "'@ . `##\$#`@```@ ` 2` *`2 H* @  `L .`L  Հ` 6` .`2 bH* @@~\bX "  '@ |.# #\$\#` '@ ]А@ʘȀ \Ȁ`YЀ V6   `  Ȑ '@ (. Ȁ  ` #\#` `#\ #`$L , L   '@ ,. /А#\` #`2 Ѐ@OmȀ j`g 0ESL $OL  VKL  AGL  RCL  ?@ ;@$` ` 4@ :` . ; OZ@:`: " * @*`@*`" `A.  333 ͔؀R @2`*` * " 0@*ؔ .   '@ (.@ װ   , ##\$#`'@.@   @ԔЖ@Ȁ Ȁ  0     @'Ȁ`DԀ A6   `   '@ (. hȲ`ԓ2` `@  '@ . Ԑ#\ #`2 -Ԁ@yȀ ` 0oȀ 0-̀ * '@ (. Ȁ  ̒` #\#` ̔ #\`#`̀@cA SL $OL  VKL  AGL  RCL  ?@ ;@` ` 4@ :` . ; OZ@:`: " * @*`@*`" `A.  333 ͔؀R @2`*` * " 0@*ؔ .   '@ (.@ Ұ   , ##\$#`'@.@   @L {L  }L  '@ {.$ #\$#`^`'@ }TL $PL  VLL  AHL  RDL  @@ <@` ` 5@ :` . ; OZ@:`: " * @*`@*`" `A.  333 ͔؀R @2`*` * " 0@*ؔ .  w'@  '@ (.@ <   , ##\$#`'@.@   &@ '@ (.@    , ##\$#`'@.@   @#\#$#`*`@  '@ ). `@  . @ 2  '@#b`@{G8#?c !?#$ $$#\{#`%㿐.`@{:  ⨁ "    2  㿐@ @`_` 2 bD "bD@{A & @s&& b& "b  & 㿐b@Jb %@I " "  㿐" @N"@,b )' "@' ⠔ "@  " "&  2 㿐" @""@b  )'  2  "@ ⠔ "@ " "&  2 " "D ""D"D 㿐'ࠀ8 4 `"  1  @4` "` 6 " 6 * 2 bH* @ @$ $` bD" "bD  ""bD`$ $@$;  4t` ` &  g` c@"_ @6Z * 2 bH* @ @h$ "`` " bD  "bD""bD`$ $@$"= @69` "4` 60 ", 4( 2 b  * 2 bH* @ @-$  " ` bD""bD  ""bD`$ $@$`    @ u @p `"%  @g @b * 2 bH* @ @$  D" "D `$$ "` ( "@ ! @ A#@> : * 2 bH* @ @Ɛ$ "` " D$"D#$ $  @  * 2 bH* @ @$ "` " D$"D $  ($㿐bD "bD@yb "" ""`""` "D ""D"D㿐@y:@@bb@'␢@`  @@Q$ @$ ( 㿀`"ܓ.`@)%&&'())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))()))8)H)X)h))#T@ _쀢 K@ F"b* @C (3 (3@cT  7` ` @ @rcT  7@icT  @`cT    @NcT Д@F  cT   0 `"-"$ ` (2` $   *`2 bH* @J@ -J`  "D"$#"D@   "$@  1 `, ` 2*2` 2& !*`2 bH* @J@ -2J` a"D?"D"@  Qa @   FScT0B  <%  8%@  6@   +%@|   #%@͐ !@ 0Ȓ#  ##  #  %x@b %x!㿐 @ @w"  @w"Ȁ  @wy"Ѐ  @ws"؀  @wm"  @wg"耎 @wb"  2"#@wT!@wO#㿐 @wH# @wD# @w?#  ` #pn @w8#(0< " - ,0-" %0(   0 #0#8#@#H #P #X#`#`#h#p@v㿐 @v#(@v#x   @v#x㿐" *"`Qⴀ""""(b","  "ⴔ `!@ "!" &"#c"N"  "b `!@ "!"  "#c"Z@-"0"b("b,"b"b"  #c"`@-&#L@  #L %x     & #L           P@ #L  @@ >㿐"   #   @v#c  #@v 㿐"    2 @uҐ 4b$ "b$@u @uǐ$$ 0 @$ ($ ,㿐"   "  @  @u\c0, 2 `@2""b""$@@u 0Ⰰ` @2@""b""@`0@u"Ⱀ@u㿐"   @o "?@u,㿐" "b* @) "?@u@u>㿐" 2 "b* @  #   !b"  @uh" "$b @ua㿐" "b* @`?@tÐ㿐%"{    " "@bj"`  F#    "_  "[ "W   "N  `F  `2%    #R!@ڒb  I D "D"?$) "@ɔ D$D"$D " " "?$ "`  ("@"` "`㿐% ! Ԓ#@ `#`"W  "S     `E  `2"<  28  " `"  @ 2 ` "(  * 2 bH* @@` , `"D#"D` ""@`#"D"#` "` ("@"` "` 㿐`!` ``&`!`'+  ` ```   ` ```  `( `0`8`@bb@㿐! ',% "! ?z "bD"  "bD`2  "`  "` ("@ "` 㿐! `"> @ "` "@"`@`H  -"` % ``"& @ 2" `  !@`" k"D ""D`"$@ (""`H"@  "`  " 㿐  ?ª?Ĩ?Ӧ?֤?݀L,@ &IG E /C :A`?= @; ^9 ~7 _5? 1? -?А ) !'?؀ $ ," ; [ ] {?  %     ?  \ ' " ` @ ,@ &  / : `  @ ^ ~ @ ,@ &  / :`  @ ^ ~ \ _ @ ,@ _?  ? ?А ? @ ,@?Ѐ ? ?  ! @ ,@ !?؀  , ; [ ] {?  %? @ ,@?  f n r t v @ @,@    ?  @ ,@` P@r`    #,  (,L L P㿐#L`#*`!@>>>(>4>@>L>X X p        cP@rl!㿐#!b"@ 1"#@ @"" * @"@ $"`@$b" ` Ȅ ? *?㿐   "Ȕ "`"""㿐  "Ȕ"`""" !%#"@* @ "@* @ "  " b$"`$b$"  "Ȕ"`"""㿐"b* m / / "  "Ȕ#"`""#""b  N *0 *  "Ȕ"`""" 1#%"b@* @- "b@* @  *"" * " &"`$&""b@* @  " &"`$&""b@* @  "b@* @ / /""b      "Ȕ"`"""   ѐ 㿐  "Ȕ"`"""#T"bL@  "b*  "0 "  "Ȕ"`"""L#T@`"L*@6  2  㿐#Td@"L" `"L  "Ȕ#"`""#" +@ !'%#T#"⼀@* @?. :  /%"⼀@* @3. :  9L"$L b$"`$b$" *ݐ " .  "Ȕ"`""""b* J* :  /0 /"b* J* :  90 9L#T@`"L .*@ L#T@" `"L  "Ȕ#"`""#" +@~ !'%#T#"⼀@* J@* :  /"- /)"⼀@* J@* :  9L 9L"$L b$"`$b$" *B ""b* r e e"b* e E E2"  "Ȕ#"`""#""b  F + +"b* 8 -X -U"  "Ȕ#"`""#""b * :  /0+J /("b* J* :  90 9L#T@`"L*@ L#T@<`"L;*@L#T@ t`0u"b* J* :  /0逢 /"b* J* :  90؀ 9L#T@`"L*@u !'%#T#"⼀@* J@* :  /" /"⼀@* J@* :  9L 9L"$L b$"`$b$" *9 "L#T@`"L*@, @nƐ#T g:!{ .L#T@*S`0T cT 0FcT"L" 2Ax  @P?"b$ o  @? "b$ b  @?"b$4  '  "Ȕ"`"""@  #H  ""$L#T@`"L*@Ɛ @no#T "b$㿐   "Ȕ"`""Ȑ""b    P!' #"⼀@* @ `  BА " .   bȐ$"`$b ?А$" @ݰ?А 8" . bȐ$"`$bȐ$" Ȱ? . bȐ$"`$bȐ$" ? x?㿐   "Ȕ"`""Ȑ""b* Jk* :  /0J /H"b* JZ* :  7!09 77!%#"@* J@H* :  /"0* /("@* J@9* :  7"0 7" .   bȐ$"`$b հ?А$" @ϰ?7 o?㿐   "Ȕ"`""Ȑ""b* J* :  /0J /H"b* J* :  1!09 17!%#"@* J@* :  /"0* /("@* J@* :  1"0 1" .   bȐ$"`$b հ?А$" @ϰ?ʐ b?㿐#Td@"L" `"L  "Ȕ#"`""#" +@Q  1)##T!""@* @} bL"$bL "&"`$"&" *& "L#T@`"L*@  㿐"b* F \b \_ "  "Ȕ#"`""#""b  ' \ \+"b*  ' '"b*   " ""b*  `0 `"  #H"Ȕ#"`""Ȑ#"  +@ 㿐"b*  \m \j "  "Ȕ#"`""#" "b    @F"  Ȓ#" "#" ?`2 <*`@XXXXXXXXXXXXXXXXXXXXXX         *cH  㿐"b* Y \ \ "  "Ȕ#"`""#""b :* :  /0J /"b* J(* :  70r 7p"  Ȓ#" "#" ?1%#"@* J@* :  /"* /&"@* J@* :  7" 7" ,    bȐ&"`$b Ӡ?А&" @͠?"b*  \ \  "Ȕ"`"""  *#H@k!  ̐ 㿐"b*  \ \ "  "Ȕ#"`""#""b   x0| xy   "Ȕ"`""Ȑ"!' #"⼀@* @a `  ?А " .    bȐ$"`$b ?А$" @ݰ?А 8" . bȐ$"`$bȐ$" Ȱ? . bȐ$"`$bȐ$" ? ` \*#H  "Ȕ"`"""  @jn!   㿐"b    6"b    $"b    "b*  0 "  #H"Ȕ#"`""Ȑ#"  +@U    8 @ 㿐"b*  '1 "  "Ȕ"`""""b* j '0 '~ A " (#H"Ȕ#"`#"" `" #H"Ȕ#"`"""  #H"Ȕ#"`""Ȑ#"  +@.  H# @ *H㿐"b*  "7 "4"  "Ȕ#"`""#""b  ".   ". : ] " C#H"Ȕ#"`>"""b*  ' '" %#H"Ȕ#"` """b*  `0 `"  #H"Ȕ#"`""Ȑ#"  +@  H# @ *H㿐"b*  `7 `4"  "Ȕ#"`""#""b b `.   `. t: { " a#H"Ȕ#"`\"""b* ? ' '" C#H"Ȕ#"`>"""b* ! ' '" %#H"Ȕ#"` """b*  '0 '"  #H"Ȕ#"`""Ȑ#"  +@  H# @ *H㿐"b*  \02 \0"  "Ȕ#"`""#""b   0   "Ȕ"`"""  L#T"L #H*N   㿐"b* z \02 \0"  "Ȕ#"`""#""b  ] 0   "Ȕ"`"""b' L#T"L #H*   㿐"b* $ \0? \="  "Ȕ#"`""#""b   0   "Ȕ"`"""L#T@`"L*@  W@ 㿐"b*  `G `D   "Ȕ"`""" "b*  `0! `  "Ȕ"`"""L#T"L #H*R  N  㿐"b* | #TP#bL"#bL   "Ȕ#"`""Ȑ#" +@  1)##T!""@* @K bL"$bL "&"`$"&" * "L#T@ `0 ` @ G"#bL   "Ȕ#"`""Ȑ#" +@ː  1)##T!""@* @ bL"$bL "&"`$"&" * "`!`;."#bL   "Ȕ#"`""Ȑ#" +@`'" #bL  "Ȕ#"`""#" {(i x@  "Ȕ"`""" "b*  '&  '#   "Ȕ"`"""L#T@`"L*@)       㿐   1%'"@* @I  " &"`$&""@* @0 %"0 %"g @* @ /  /2  2  `""b*   ` _ ,R( )  "Ȕ"`"""  (  "Ȕ"`"""  .  "Ȕ"`"""   T  "Ȕ"`""""b    "b*  %0$ %""b*       "Ȕ"`"""  .А  ` ] [  "Ȕ"`"""  |  "Ȕ"`"""n  {  "Ȕ"`"""\  }  "Ȕ"`"""J   "Ȕ"`"""8 "b*  "0 "H $ n  "b*     "Ȕ"`"""  * 㿀y"&& & &  $*` 㿐u 㿐m$.& "㿐X     0㿐"@cݐ  @c㿐% 1'"X"X? :&@"X? 2? @' 'q!(1&@1"\%"\?܀ !:&"\? 2? '2? ' 'F!H1&1"`"`?؀ :&"`˶? 2? ' '"!h@&@ 㿐a@bܔ㿐* *2 2 bH* * a@b #`@bؒa  @b2L@ #pL@ r & 㿐* 2 H*  `@b N r  ?㿐 ?<`` ` `&`@`` ``sҖ !` `` Ŗ ` `瞐  İ0 㿐   2      !aД Y@?ĕ:㿐! ! А 2  2  "     2 ?"? ?㿐!չ "մ ʡ 2  2  "     2 ?"? ?㿐  `#@ab@a 4  #b`@a @a "  |(" & 㿐"    |( @  @?, $ &0 "@& #(@?   `|   |    ?  ( 㿐   @`*  㿐  #@a(b0 @a"@a"Ȣ + '  "`b@a-@a 2@a"``@a"Ȑ!#@a    *  ""* 2 " 2   *      8 @    * " 2 "@ * #"@" * ** 㿐@a#  @@  @a  (@a $ @ "   2   `@`Ɛ &  & `& $ @@a (  Ȗ@a H  &@`#    & $ @@` (㿐@`  @@ @` (@`  & @@`ʐ#X@`ǐ#  2 `$ & @@`͐ ( 㿐  `@@`x  2 㿐" `#c @@``& $`&,& @bH2  & D* @ @`  (  @`. '@`@` HE M J "Y& & & & ؐ@`t& ܁㿐 2 #c @Z  #c @O & Ѐ` & `@ H2` & ؀`& `@@`R @`S``ܐ H2` & ܁㿐 2 #c @! @`! @@ @` (@` & @ 2  & @@` ( @㿐`2 @#c @@  #c @@_`@@ @_`(@_&`@{ ``H " `H@|, $`H`@_`(o  㿐`2 @#c!@@  #c!@@_`(`Ѐ`  `@`@_c`2@_`(> ذ 㿐   #c!3@   `  ` "`& @ l#D D  E F  G 㿐"Dž #c!^@2@_9`` &@3b0&  ~ &   ",`@_'& 㿐 j ` #c!x@@_ `@@ @_`(@_ $`@  ",`|+& `H "?&`H- *  & *``& b0& & & ?? &$`@@^ڐ`(㿐" #c!@Ȁ 2 #c!@  #c!@؀` ` <  "<  # @^@^ @@ @^ (@^ & @@^ h H`& @@^ (@ 㿐"Ʒ #c!@cȀ 2 #c!@X  #c!@M؀` ` <  "<  " @^F`@^A @@" @^> (@^9 & @ H & @@^5 ( ˔@^-`@ 㿐 o  #c!@ @^  ",|)& @ "?& @-@ *  & *``& "0& & & ?? &@]㿐` @@   "#" @(<&&&@P\@   Ζm P`&P)"@"&&2 2& &&,`Ē@"",`??㿐` @@   "#" @8<&&&@P\@   y P`&P)"@"&&2 2& &&,`Ē@"",`??㿐PQP&P㿐PP&P㿐%#̐"   "    {&*P#̐"@ 8&"@  *㿐P &&+? ?" @ @@`@h ``%  2&6` "&&P\@   `_ P`&PI"@ 2 &@6  "&@&@&@P\@   Ф`C P`&P-"@ `P&P 2'@#6    Ѕ( . @ $ ?  $.  @$ @?$8@  P:&P'@㿐` @``@ ` ` @ /`@*@&&&@P\@   >ݐ P`&P-"@"*&2` $&&&,`Ò@"",`??㿐PP{&P㿐` @` `@   `  2` , @? ,  8?㿈 `P  'P#c"@  #c#@@[ @@ @[ (@[ & @  ܀` W& -'`,P쀢 h`0@   Pd'P /@$&  ؀@"& 쀢 "  ݐ H$`(+ `("  $`$`P&`P` @[o`6 @@[j  ``Pؒ&`P'P@`2'Y  H2 $ 8 2 & @@[7 ( $   $  ̀ "&  "& & ̀ 2P& @@[ (P㿈```  'P#c#d@  #c#e@@Z`P @@ @Z (@Z & @ ̀ =  ' @ P쀢 "h  P'P   '`$@&  Ѐ"&  w`PF&`P 'P P"0"@P" "  4 H2 &V X2` & @@Z ([ @Z&  &@Z&(P& R4<&08&, Ԁ "&  "& & & @@Z (@Zv& @$'( ) 'P(} 2(!#@Yǒ`x?Շ#`@ZH(~ @ZA@Y ` H H2P& @@ZD (P㿐 2 #c#@) '@Z)& @@ @Z& (@Z! & @ ̀` 0&@`` &@@``& @@Z (",`&@@_㿐 #c#@ U",@Y& @@ @Y (@Y $ @  Ԁ`7 * &` *  &`    "       & `,& `0& "0& & &@ `΢?",& $ @@Y (&@3㿐!"P&@@Y ` 0&` *  &@` @Y"P",& p #c$2@e ̺ @Ye&`@@ @Ya`(@Y\ $`@  ̩`&@ G ؐ`@X֔ ̚ & ̔  & ̎ &d`H *   & ́!& `܀`& $`@@Y)`(&b0& & b0& & b0& & b0& b0L&![ & `̒ & Q!(&`Ȥ    ''`'C&`ȑ*  & !08  & 2`H`& $`@@Xސ`(&b0& & b0& & b0& & b0& b0& & 㿐%P@X `&%0`2@a8 &@``*  &@`` P@X&@`&0&@`&@`?` &@`2`@X"P 㿐/ )2 "H* @@ } ="  #c$@h@Xoߒ ذ  &   ($  @Xm&.`& @"H2 & D* @ @X` @XW. '@W H& & @X & "  " А@XH"`0 㿐@W!b$"̒b "́㿐   #c$@Ȑ  X  @X%& @X㿐  #c$@@X  h  @X 㿐 @ b|b|F H`?'H = $ " !P 3 l "   ˈ!X 㿐@W X@W 4@W |㿐% #c%@Ȑ@WӐ  U!"P @W @W" 㿐%ْ #c%@Ȑ\Ґ .!"P@W~ @W~`@ @W- @W+`2""h㿐@Wc@@WR!p@W ?c@ X#? |c 0& P@WM`  4@%?bԐ @Wl$    @Wi$ 4@W3!@!@W/ @W@WQ h?`t#*`@Ph<$(@P`Pxt` @6` <=I E@V @@@V (@V$ @ D?6$ D` 6` & " D @VА ($ @ D $ D{! `  >` !j`  6` " ?@" @  w@ ݰ#ڒ @@հ `  `2 `  @` ` ° 2` " ?" `  `2 `  @` `    ѓ:`@ :`#ɒ @@ `  `2 `  @` ` z 2` vd"p ?"l `  `2 `  @` ` Y   1:`M@ :`I":ӔDa@U"!@Uے@U8@U ؠ@V "t 4ߗ:$ 0   @@V` H`6` D`!"""? ؐ`@U7 &\" ؐ`@U# ` &" ":׀"ЀҰ "0ϒ Ƞ``@T’ !&" ""?M "W  #ȡ @@ `   2 `    `    2 `    `    2       + 2 bH* @[@\ ; `   2      h 4 e0-,`?),` 2!,`!2 "H* @@T} H 2  ,2 "H* @@Ts    Ȁ  ̀  y"8 32 bH*  @TbH&  " "Q"耠@T"X J"p ߰ ,`+2 bH*  @TРȐ`@Tʒ &bH#b bb?`L bV  `  6` % `#c&N@ ,@T3  @T.$p@T&p ` l 6` hU"a ?@"] ؐ U` U >`@l@T @TK` G 6` C0"< ?@7 2` . 6` *"# ?@ ̖`  6` "  ?@ <"؀ 2 @T` &@`  6` 2`.`2 bH* @ @SƐ"؀ C"۰ ذ "ؑ>`@@0#̒ @@ǰ ``  @ 2 `@ @``  @ 2 @ @ ` `* 2 bH* @@ : @Y#ƍ @@ `  2     2 #@Rbk   W  ?@@ "`#@Rnb0T  2 `   `   2      *2 bH* @&@":`  2     2 #@R$b  @` @ 㿐Ð@Rd $`` k$`!"P@R $@@R"  㿐"Ԓ #c&@ @Rࠀ 9 22 @R{  @@ @Rx (@Rs $ @ Ԁ``2 `@$@$ ` H $ @@Ra (@R_0@`2`2 $ @@RT (  2@RN 㿐'P@RC  2`$@$@R5Pb @Q @RP 쀤 @R)"P 㿐Ж@ aH@RR`㿐@RM  @RI`@ 㿐@R=  ْ`@ 㿐`>:  @,@@)?#` "@1&2&*`2 "H* @Q@& #@Q2c(@Q * 2 "H* @@Q[,  2   *`  &" 2`@Q#H``@ȴ&? &@㿐`  )' ,`` @ &@ "*`2`2 ې&@ 2&@@QuH  &,`@㿐bx#`Ē *#h㿐bx#ij #?c` ?c@Q ?cج%% c  ` @Q~#@Pc0Ebp@Q^ 7@Q*|#x uX4$P%`$%`(bh%`,t ?a % @QM 2 ` @P@Q=@Q  ?ch ?c@P ?cؔ$" c쀢  @Q0fbp@P Ӑ@P|# X$P4 N% $% ( % ,% 0% 4h% 88" : "`"b" "bc@PД 2 @Pΐ@P  ?ؖ @P@Pn)@P@P  㾨 `'  a  @P#@Oc0;b à QD  |I : ''''c@Pv [ a @Pk0@Pe@P<  㾨 `'  a  #@Okc@PD0;b M :D  | : ''''c@P#  a @P0@P@O  㿈 '@P a  #@Oc@O0"@Ob ސh'a@Oޔ耢 2  ` @O@O  㿈 `'a @O&  ½'@ 'a@O耢   a쀢 2 @O 㾨 `'  a  @O#@Nc00>D  |8 : ''''c@Oe J a @OZ0@OT@O+  㾨 `'  a  @O8#@NXc0:b < )D”  | : ''''c@O  a @O0@O@Nِ  㿀'' `   @N#@Nc0%b Ԑ'a@NԔ䀢 2 c @Ny4@N@N  㿀'' `   @N#@MŒc0%b 'a@N䀢 2 c @N:@N@N[  㾘!"o''' ``  @Na#@Mc0g "S4j@N`@@ @N`(@M $`@8@Mk@=`= `= `= ` = `(= (`0= 0`8= 8`@= @% $   2 ` r# @MԐ!"Ƞ" H %쑐 @쎐 "띒% % % % ؐ % ?%% ?@"0 2:5%   HC$$  X0  $  ̀ "%  "% % 0  2*Ҧa'@M 2 @M0``  @M0  % @@MO (|@M@Mi  㿈 ` T#*`@H  4\pԄԘԬ a@Mn 0=  3  .Đ  )ؐ  $$  p  p  H  h        @@M0@MF 㿐@L!"Ѐ@ !##@L٢` @L?0@M+ @L 㿐#b؀ !"@L֒ @L"@M !@L(#p@M!$!$b؁㿈@La  #`H@L@Lϐ 0''@L?㿀   . 2 bH* @"b2@L!$"ؐ#@K`h@L @L@L  @L  @L=`@Lߐ #p!bؔ @Lٖ$!@Lِ!Ȁ @L @LӞ#@KĒ`@L  x"p@L !   @L   '@Lܐ  3 C@Lmb@L    bб.  `"0' ' ''8-" :`'bܒb'`'`Ș!#\ @Ԁ  `  X#E ' '`'` '`'`'`8"''Ȓ '̐:`'bܒb'`'ĖФ #\ @ ̀ ԒȒ@L``  x'{'bܒb'`' ̢bH * #\2 #* 쀢 ꔒ&ڔ@KĒ ꇒ#@JԒ` x'='bܒb'`' ̢bH * #\2 #* 쀢 V&@KI x ̑* 2 bH* @'bܒb'`' !#\ 쀢 # xbܒb'`''H !#\ H  p. 6 "H.  @J'䰒6'"'"' ' #\ @# 쀢 &@K  @ #@J`  @ x'x'bܒb'`' ̢bH * #\2 #* 쀢 鑒&ה@J #@IӒ`~ p ̑* 2 bH* @@J@J @I','bܒb'`' ؘ!#\  耢  @IN @IGp ̑* 2 bH* @@Iѐ@Iې @I''bܒb'`' ؘ!#\  耢 @I @I㾐!"5"0'.`2 bH*  @I#@ID` @I`@@ @IӐ`(@IΪ $`@֐L"0"`"`̀"0"@` "@`"0"@`"@`","@  : '-.H2 ' * '"ܐ"' ' !#\ @` #@H``i $`@@I`(d Hs #@Hؒ``T $`@@In`(O @Igג ؠ@<`< `< `< ` < `(< (`0< 0`8< 8`@< @$ $   2 `# @I@"5.`"H2`  $*`  H@I6 , $ $ @H $ "  " Ѐ`" $ @@I  ( 㿐!@` !@  㿐!#@Hi@Hj@Iy㿐㿠㿐!4!4   !8`*` 2`@ !4, ?, @H6 㿠no definition for: main/1integer expected in halt/1trailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETunexpected BEGIN_C_CHUNKEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersunexpected BEGIN_C_CHUNKunexpected END_C_CHUNKinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loadingunable to load kernel filewam.bpstring table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceeded Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkbbmarkstdbbend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programediteditor_filenoname.plversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (with Multi-Prolog blackboard by Koen De Bosschere) %s %s%s%s%s%s%s%s interruped(%ld)...restarting string buffer (-i option) exceeded or infinite term%ld%sbad arg in arithmetic operationA%ld%-se%-ld %fc.c not compiled with -D C_INTERFACE %s%f[]Unknown term type (%08x) []._=,end_of_file fx fy xf yf xfx yfx xfylterm term del| %4d: %04x , [ ] | { } ( ) . ===================== %s:%u: failed assertion `%s' rterm.ccurrentfileinputbuffer%4d %s buffers = %d error in returnfilebuffer %d []|(){}{}Clause correctly parsedMissing quoteToken too longUnexpected eofBack quoted strings not supportedNon deterministic codeIncomplete reduction?syntax_error on line %d: %s Errorno assoc for prefix operatorno assoc for infix operatorno assoc for postfix operator_%duser_inputuser_output%s:%u: failed assertion `%s' iso.cINTEGER(xval)current_streamwritereadNilpointer in buddycreate Field next in struct buddyblock must have offset 0 Data structure in buddycreate too small (<%d) Nilpointer in buddyshow nn [ size] length -------------------- %2u [%7u]: %6u %08x Total memory: %u tcpCreation of client in get_bbclient() has failed. Error. Client is vanished in the deep depts of memory... %s:%u: failed assertion `%s' bboard.cpoolbbbb->type == LOCALBBbb->type == REMOTEBBbuddytrailing in unifybb_unifyBlackboard memory exhaustedBlacboard memory exhaustedBlackboard error: answer field inconsistent,gettgett_nbreadtreadt_nbname%08xaddressfree_memorytime_stampblackboardserverhostprocesstrailheapchoicenot enough memory.ERROR: this interrupt code should never be executedERROR: could not find thread %d Blackboard name is not a constanttop = %08x cannot change existing blackboard_Cannot change blackboard typeclnt_create unsuccesfulRPC errorServer does not existfirst argument is not a symbol constant local blackboard not valid or not local fourth argument is not a symbol constant Heap overflow in term2reloc Float not supportedput__no definition for: put__/3get__no definition for: get__/6getargs unsuccesful rpc_getgetargs unsuccesfulgetargs unsuccesful Blackboard memory exhaustedwrong thread (%Ld) was to be killed server name <%s> too long (>4) Error: server name must be constanttcpCannot create server RPC failed clnt_create unsuccesful couldn't change remote blackboard in a local one }  (-0  A@ 00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c|0`0]0Z0W0T0Q0N0K0H0E0B0? 0<09$06003<00H0-T0*`0'l0$x0!0000000 0 00000 0,080D0P0\0h0t00000@  a@(#)SunOS 5.4 generic July 1994as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3ld: (SGU) SunOS/ELF (LK-1.4 (S/I)).interp.hash.dynsym.dynstr.rela.bss.rela.plt.text.init.fini.ctors.dtors.rodata.got.dynamic.plt.data.bss.comment.shstrtab  -0-0@@< )AA 3EE9?(( E44L<<SHH[`i n l lxt  y O7BinProlog3.45/multi/wam.bp100644 764 764 476122 5764705603 14627 0ustar javierjavier$bin_cut$cut? ?truefail_B?truecwrite_ ?B? ?truecnl_B?truevar_ ?B? ?truenonvar_ ?B? ?trueinteger_ ?B? ?trueatomic_ ?B? ?trueis_compiled_ ?B? ?true+_??J1 ?true-_??J1 ?true*_??J1 ?truemod_??J1 ?true//_??J1 ?true/_??J1 ?truerandom_J1 ?trueget0_J1 ?trueput_?J0 ?trueless_??J 0 ?truegreater_??J 0 ?trueless_eq_??J 0 ?truegreater_eq_??J 0 ?truearith_eq_??J 0 ?truearith_dif_??J0 ?true<<_??J1 ?true>>_??J1 ?true/\_??J1 ?true\/_??J1 ?true#_??J1 ?true\_??J1 ?truecompare0_??J1 ?truearg_??J1 ?truesetarg_???J0 ?truechange_arg_???J0 ?truedef_???J0 ?truerm_??J0 ?trueset_???J0 ?trueval_??J1 ?truelval_??J1 ?truesymcat_??J1 ?truedcg_connect_J1 ?truelist2term_?J 1 ?trueterm2list_???J!1 ?trueself_info_J"1 ?trueadd_instr_????J#0 ?truelift_heap_??J$0 ?truedet_append0_??J%1 ?truecopy_term_??J&1 ?truebb_list0_??J'1 ?trueolder_file_??J(0 ?trueseeing_telling_?J)1 ?truesee_tell_??J*0 ?trueseen_told_?J+0 ?trueseeing_telling_at_?J,1 ?truesee_tell_at_??J-0 ?truestring_op_??J.1 ?trueop0_???J/0 ?trueterm_append_??J01 ?truefloat_fun2_???J11 ?truefloat_fun_??J21 ?trueinput_float_???J31 ?truewrite_float_?J40 ?truestrip_cont0_?J51 ?truedcg_def_?J60 ?truedcg_val_J71 ?truedcg_tell_?J80 ?truedcg_telling_J91 ?trueiso_open_stream_??J:1 ?trueiso_close_stream_??J;0 ?trueiso_write_term_???J<0 ?trueiso_read_term_??J=1 ?trueiso_put_byte_??J>0 ?trueiso_get_byte_?J?1 ?trueiso_peek_byte_?J@1 ?trueiso_eof_?JA0 ?trueiso_lseek_???JB1 ?truebb_put_??JC0 ?truebb_get_???JD1 ?truebb_op_??JE1 ?truesetref_??JF0 ?trueunix_argc_JG1 ?trueunix_argv_?JH1 ?trueunix_getenv_?JI1 ?trueunix_access_??JJ0 ?trueunix_cd_?JK0 ?trueunix_kill_??JL0 ?truequiet_JM1 ?truecreate_engine_???JN1 ?truedestroy_engine_?JO0 ?trueload_engine_???JP0 ?trueask_engine_?JQ1 ?truemultitask_engines_?JR0 ?truesuspend_engine_?JS0 ?truenew_builtin_??JT1 ?truehalt_?JU0 ?truetrue_?truecall_?trueabort_?truerestart_?truefindall_store_heap_?truefindall_load_heap_?truefunctor_?truename_?trueshell_?truestat0_ ?truelist_asm_ ?truebb_reset_ ?trueprofile_ ?trueif0_ ?trueblackboards_42?JE1 ?trueblackboard_8?JE0 ?trueblackboard_9 bb?????JE0 ?truebbkillstdbbstdbb ??B?truebbkill_10?JE0 ?truekill_13?JE0 ?truebbclean_11?JE0 ?truebbclean_11stdbbJE0truebbempty_ bbterms?[]bbprocesses?[]bbunlock?? ?bblockbbempty_ ? stdbbbbemptybbterms_15?JE1 ?truebbterms_15stdbbJE1 ?truebbprocesses_16?JE1 ?truebbprocesses_16stdbbJE1 ?truebbinfo_17?JE1 ?truebbinfo_17stdbbJE1 ?trueprocessinfo_3?JE1 ?trueprocesses_192?JE1 ?trueserver_20?JE1 ?truekillserver_21?JE1 ?truebbmem_18?JE1 ?truebbmem_18stdbbJE1 ?truebbmalloc_14 bbstdbb??JE0 ?truebbmalloc_14 bb???JE0 ?truebbfree_12 bbstdbb??JE0 ?truebbfree_12 bb???JE0 ?truepoolmem_52?JE1 ?truetellp_7?JE0 ?truetestmem_61JE0truebbhelp_ cnlwritegett/1, gett/2, gett/3cnlwritereadt/1, readt/2, readt/3cnlwritegett_nb/1, gett_nb/2, gett_nb/3cnlwritereadt_nb/1, readt_nb/2, readt_nb/3cnlwriteblackboard/1cnlwriteblackboards/1cnlwriteprocesses/1cnlwritebbinfo/2, processinfo/2cnlwritebbshow/0, bbshow/1cnlwritebbterms/0, bbterms/1cnlwritebbprocesses/0, bbprocesses/1cnlwritebbkill/1cnlwritekill/1cnlwritebbclean/0, bbclean/1cnlwritebbempty/0, bbempty/1cnlwritebbmem/1, bbmem/2cnlwritebbmalloc/1, bbmalloc/2cnlwritebbfree/1, bbfree/2cnlwritepoolmem/1cnlwritebblock/1, bbunlock/1cnl? tellt/1, tellt/2writebbshow_ ? stdbbbbshowbbshow _ write?cnlbbterms??write4?cnlbbprocesses?? write4 ? cnl?3 =processes?3=terms? ?bbinfototalbbmem_ ? ? stdbb ?totalbbmemtotalbbmem_ sumprod?0?? ? ?bbmemsumprod[][] ? ?truesumprod..??buddy????J0??J0sumprodbblock_1?JE0 ?truebblock_2?JE0B? ?truebbunlock_2?JE0 ?truebbunlock_1?JE0B? ?truebblock_ ? stdbbbblockbbunlock_ ? stdbbbbunlocktellt_ ? ? stdbb ?put__tellt_put__put___ ?B? ? ?{}?? bblock?put_set__??bbunlock?? ? ?make_list__put___??JC0 ?trueput_set__[][] ?trueput_set__..?? ? put_set__??? ? ?my_bb_putmy_bb_put_??JC0 ?truekludge_trueget__ _ ?B? ? ?{}?? get_set__????? ? ?make_list__get___ ? 0get__get___???JD1 ?trueget___ ?truegett_ ? ? stdbb ? true 3get__gett_nb_ ? ? stdbb ? true 2get__readt_ ? ? stdbb ? true 1get__readt_nb_ ? ? stdbb ? true 0get__gett_ ? true 3get__gett_nb_ ? true 2get__readt_ ? true 1get__readt_nb_ ? true 0get__gett_ ? 3get__gett_nb_ ? 2get__readt_ ? 1get__readt_nb_ ? 0get__check__[][] ??truecheck__..?? ? check__??? ? ?readt_nbcheckb__[][] ?truecheckb__..?? ? checkb__??? ? ?readt_nbcheckb__..?? ? $bin_cut?fail? ? ?readtremoveb__[][] ?trueremoveb__ ..?? ? $bin_cut?removeb__??? ? ?gett_nbremoveb__..=? ?B?trueget_set__33 repeatcheckb__??metacall?removeb__??bbunlock?bblockget_set__22 check__??metacall?removeb__??bbunlock?bblockget_set__11 repeatcheckb__??metacall?bbunlock?bblockget_set__00 check__??metacall?bbunlock?bblockmake_list__ _.?? $bin_cut?=?4? make_list__ ???3,? ? , ?functormake_list___.?[] ?true1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=bu0failfail?0in_body ?truebu0cwritecwrite=?1in_body ?truebu0cnlcnl?2in_body ?truebu0varvar=?3in_body ?truebu0nonvarnonvar=?4in_body ?truebu0integerinteger=?5in_body ?truebu0atomicatomic=?6in_body ?truebu0is_compiledis_compiled=?7in_body ?truebu0++=?in_body ?arith01truebu0--=?in_body ?arith11truebu0**=?in_body ?arith21truebu0modmod=?in_body ?arith31truebu0////=?in_body ?arith41truebu0//=?in_body ?arith51truebu0randomrandom=?in_body ?arith61truebu0get0get0=?in_body ?arith71truebu0putput=?in_body ?arith80truebu0lessless=?in_body ?arith90truebu0greatergreater=?in_body ?arith100truebu0less_eqless_eq=?in_body ?arith110truebu0greater_eqgreater_eq=?in_body ?arith120truebu0arith_eqarith_eq=?in_body ?arith130truebu0arith_difarith_dif=?in_body ?arith140truebu0<<<<=?in_body ?arith151truebu0>>>>=?in_body ?arith161truebu0/\/\=?in_body ?arith171truebu0\/\/=?in_body ?arith181truebu0##=?in_body ?arith191truebu0\\=?in_body ?arith201truebu0compare0compare0=?in_body ?arith211truebu0argarg=?in_body ?arith221truebu0setargsetarg=?in_body ?arith230truebu0change_argchange_arg=?in_body ?arith240truebu0defdef=?in_body ?arith250truebu0rmrm=?in_body ?arith260truebu0setset=?in_body ?arith270truebu0valval=?in_body ?arith281truebu0lvallval=?in_body ?arith291truebu0symcatsymcat=?in_body ?arith301truebu0dcg_connectdcg_connect=?in_body ?arith311truebu0list2termlist2term=?in_body ?arith321truebu0term2listterm2list=?in_body ?arith331truebu0self_infoself_info=?in_body ?arith341truebu0add_instradd_instr=?in_body ?arith350truebu0lift_heaplift_heap=?in_body ?arith360truebu0det_append0det_append0=?in_body ?arith371truebu0copy_termcopy_term=?in_body ?arith381truebu0bb_list0bb_list0=?in_body ?arith391truebu0older_fileolder_file=?in_body ?arith400truebu0seeing_tellingseeing_telling=?in_body ?arith411truebu0see_tellsee_tell=?in_body ?arith420truebu0seen_toldseen_told=?in_body ?arith430truebu0seeing_telling_atseeing_telling_at=?in_body ?arith441truebu0see_tell_atsee_tell_at=?in_body ?arith450truebu0string_opstring_op=?in_body ?arith461truebu0op0op0=?in_body ?arith470truebu0term_appendterm_append=?in_body ?arith481truebu0float_fun2float_fun2=?in_body ?arith491truebu0float_funfloat_fun=?in_body ?arith501truebu0input_floatinput_float=?in_body ?arith511truebu0write_floatwrite_float=?in_body ?arith520truebu0strip_cont0strip_cont0=?in_body ?arith531truebu0dcg_defdcg_def=?in_body ?arith540truebu0dcg_valdcg_val=?in_body ?arith551truebu0dcg_telldcg_tell=?in_body ?arith560truebu0dcg_tellingdcg_telling=?in_body ?arith571truebu0iso_open_streamiso_open_stream=?in_body ?arith581truebu0iso_close_streamiso_close_stream=?in_body ?arith590truebu0iso_write_termiso_write_term=?in_body ?arith600truebu0iso_read_termiso_read_term=?in_body ?arith611truebu0iso_put_byteiso_put_byte=?in_body ?arith620truebu0iso_get_byteiso_get_byte=?in_body ?arith631truebu0iso_peek_byteiso_peek_byte=?in_body ?arith641truebu0iso_eofiso_eof=?in_body ?arith650truebu0iso_lseekiso_lseek=?in_body ?arith661truebu0bb_putbb_put=?in_body ?arith670truebu0bb_getbb_get=?in_body ?arith681truebu0bb_opbb_op=?in_body ?arith691truebu0setrefsetref=?in_body ?arith700truebu0unix_argcunix_argc=?in_body ?arith711truebu0unix_argvunix_argv=?in_body ?arith721truebu0unix_getenvunix_getenv=?in_body ?arith731truebu0unix_accessunix_access=?in_body ?arith740truebu0unix_cdunix_cd=?in_body ?arith750truebu0unix_killunix_kill=?in_body ?arith760truebu0quietquiet=?in_body ?arith771truebu0create_enginecreate_engine=?in_body ?arith781truebu0destroy_enginedestroy_engine=?in_body ?arith790truebu0load_engineload_engine=?in_body ?arith800truebu0ask_engineask_engine=?in_body ?arith811truebu0multitask_enginesmultitask_engines=?in_body ?arith820truebu0suspend_enginesuspend_engine=?in_body ?arith830truebu0new_builtinnew_builtin=?in_body ?arith841truebu0halthalt=?in_body ?arith850truebu0truetrue?0in_head ?truebu0callcall=?1in_head ?truebu0abortabort?2in_head ?truebu0restartrestart?3in_head ?truebu0findall_store_heapfindall_store_heap=?4in_head ?truebu0findall_load_heapfindall_load_heap=?5in_head ?truebu0functorfunctor=?6in_head ?truebu0namename=?7in_head ?truebu0shellshell=?8in_head ?truebu0stat0stat0=?9in_head ?truebu0list_asmlist_asm=?10in_head ?truebu0bb_resetbb_reset?11in_head ?truebu0profileprofile?12in_head ?truebu0if0if0=?13in_head ?truebu_ctrn_inlinen_inline66 ?truebu_ctrn_arithn_arith74 ?truebu_ctrn_builtinn_builtin160 ?truebu_ctrn_nopn_nop174 ?truebu1!! ?truebu1..=? ?truebu1compilecompile? ?truebu1includeinclude? ?truebu1oror=? ?truebu1ifif=? ?truebu1strip_contstrip_cont=? ?truebu1termcattermcat=? ?truebu1add_contadd_cont=? ?truebu1asmasm ?truebu1asmasm? ?truebu1=..=..=? ?truebu1::-::-=? ?truebu1statisticsstatistics ?truebu1interactiveinteractive? ?truebu1metacallmetacall? ?truebu1metatruemetatrue? ?truebu1expand_termexpand_term=? ?truebu1===? ?truebu1->->=? ?truebu1;;=? ?truebu1,,=? ?truebu1repeatrepeat ?truebu1\+\+? ?truebu1\=\==? ?truebu1findall_workhorsefindall_workhorse=? ?truebu1findallfindall=? ?truebu1findallfindall=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_disjfindall_disj=? ?truebu1findall_disjfindall_disj=? ?truebu1allall=? ?truebu1whilewhile=? ?truebu1skip_untilskip_until=? ?truebu1skip_whenskip_when=? ?truebu1find_whilefind_while=? ?truebu1nth_answernth_answer=? ?truebu1take_at_mosttake_at_most=? ?truebu1drop_at_leastdrop_at_least=? ?truebu1has_fuelhas_fuel? ?truebu1find_at_mostfind_at_most=? ?truebu1all_but_at_leastall_but_at_least=? ?truebu1forfor=? ?truebu1argnargn=? ?truebu1appendappend=? ?truebu1membermember=? ?truebu1det_appenddet_append=? ?truebu1..=? ?truebu1++++=? ?truebu1lengthlength=? ?truebu1make_cmdmake_cmd=? ?truebu1numbervarsnumbervars=? ?truebu1gc_callgc_call? ?truebu1groundground? ?truebu1atomatom? ?truebu1floatfloat? ?truebu1numbernumber? ?truebu1compoundcompound? ?truebu1appendNappendN=? ?truebu1append_conjappend_conj=? ?truebu1append_disjappend_disj=? ?truebu1tabtab? ?truebu1getget? ?truebu1isis=? ?truebu1exprexpr=? ?truebu1comparecompare=? ?truebu1=====? ?truebu1\==\===? ?truebu1@<@<=? ?truebu1@>@>=? ?truebu1@=<@=<=? ?truebu1@>=@>==? ?truebu1<<=? ?truebu1>>=? ?truebu1=<=<=? ?truebu1>=>==? ?truebu1=:==:==? ?truebu1=\==\==? ?truebu1++=? ?truebu1--=? ?truebu1\\=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm=? ?truebu1bb_letbb_let=? ?truebu1bb_change_argbb_change_arg=? ?truebu1letlet=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm? ?truebu1bb_letbb_let=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1:=::=:=? ?truebu1##? ?truebu1powpow=? ?truebu1loglog=? ?truebu1sqrtsqrt=? ?truebu1expexp=? ?truebu1loglog=? ?truebu1sinsin=? ?truebu1coscos=? ?truebu1tantan=? ?truebu1asinasin=? ?truebu1atanatan=? ?truebu1acosacos=? ?truebu1integerinteger=? ?truebu1floatfloat=? ?truebu1statisticsstatistics=? ?truebu1predicate_propertypredicate_property=? ?truebu1current_predicatecurrent_predicate=? ?truebu1current_predicatecurrent_predicate? ?truebu1ctimectime? ?truebu1helphelp? ?truebu1aproposapropos? ?truebu1aproposapropos=? ?truebu1unixunix? ?truebu1systemsystem? ?truebu1meta_interpretermeta_interpreter? ?truebu1tracetrace? ?truebu1dynamicdynamic? ?truebu1assertaasserta? ?truebu1assertzassertz? ?truebu1assertassert? ?truebu1retractretract? ?truebu1retractallretractall? ?truebu1instanceinstance=? ?truebu1eraseerase? ?truebu1clauseclause=? ?truebu1abolishabolish=? ?truebu1debugdebug? ?truebu1consultconsult? ?truebu1reconsultreconsult? ?truebu1listinglisting ?truebu1listinglisting? ?truebu1listinglisting=? ?truebu1=>=>=? ?truebu1assumeiassumei? ?truebu1assumelassumel? ?truebu1assumedassumed? ?truebu1assumed_clauseassumed_clause=? ?truebu1assumed_clauseassumed_clause=? ?truebu1-:-:=? ?truebu1is_assumedis_assumed? ?truebu1is_dynamicis_dynamic? ?truebu1bbbb ?truebu1bbbb? ?truebu1bb_listbb_list? ?truebu1bb_elementbb_element=? ?truebu1sortsort=? ?truebu1keysortkeysort=? ?truebu1bagofbagof=? ?truebu1setofsetof=? ?truebu1^^=? ?truebu1free_variablesfree_variables=? ?truebu1notnot? ?truebu1term_charsterm_chars=? ?truebu1vars_ofvars_of=? ?truebu1user_erroruser_error=? ?truebu1errmeserrmes=? ?truebu1quietmesquietmes? ?truebu1mainmain ?truebu1mainmain? ?truebu1topleveltoplevel ?truebu1is_prologis_prolog? ?truebu1get_codeget_code? ?truebu1put_codeput_code? ?truebu1nlnl ?truebu1readread? ?truebu1read_termread_term=? ?truebu1top_read_termtop_read_term=? ?truebu1warn_singletonswarn_singletons=? ?truebu1read_with_singletonsread_with_singletons=? ?truebu1read_clauseread_clause? ?truebu1read_tokensread_tokens=? ?truebu1writewrite? ?truebu1printprint? ?truebu1writeqwriteq? ?truebu1portable_displayportable_display? ?truebu1displaydisplay? ?truebu1portrayportray? ?truebu1portray_clauseportray_clause? ?truebu1pp_clausepp_clause? ?truebu1pp_termpp_term? ?truebu1fast_writefast_write? ?truebu1ttyinttyin? ?truebu1ttyoutttyout? ?truebu1ttyputttyput? ?truebu1ttynlttynl ?truebu1ttyprinttyprin? ?truebu1ttyprintttyprint? ?truebu1ttycwritettycwrite? ?truebu1ttycwritelnttycwriteln? ?truebu1seesee? ?truebu1seeingseeing? ?truebu1seenseen ?truebu1telltell? ?truebu1tellingtelling? ?truebu1toldtold ?truebu1see_atsee_at? ?truebu1seeing_atseeing_at? ?truebu1tell_attell_at? ?truebu1telling_attelling_at? ?truebu1file_search_pathfile_search_path? ?truebu1file_extension_listfile_extension_list? ?truebu1file_libraryfile_library=? ?truebu1make_file_namemake_file_name=? ?truebu1find_filefind_file=? ?truebu1exists_fileexists_file? ?truebu1see_or_failsee_or_fail=? ?truebu1flushflush ?truebu1sreadsread=? ?truebu1swriteswrite=? ?truebu1bu0bu0=? ?truebu1bu1bu1? ?truebu1current_opcurrent_op=? ?truebu1opop=? ?truebu1is_builtinis_builtin? ?truebu1editedit=? ?truebu1my_editmy_edit? ?truebu1editedit ?truebu1eded ?truebu1textedittextedit ?truebu1emacsemacs ?truebu1picopico ?truebu1notepadnotepad ?truebu1vivi ?truebu1coco ?truebu1current_user_filecurrent_user_file? ?truebu1lsls ?truebu1dirdir ?truebu1make_applmake_appl? ?truebu1make_executable_unix_applmake_executable_unix_appl=? ?truebu1makemake ?truebu1makemake? ?truebu1makemake=? ?truebu1makemake=? ?truebu1makemake=? ?truebu1make0make0=? ?truebu1cmakecmake ?truebu1cmakecmake? ?truebu1cmakecmake=? ?truebu1kmakekmake ?truebu1kcmakekcmake ?truebu1tmaketmake ?truebu1tmaketmake? ?truebu1tmaketmake=? ?truebu1ctracectrace ?truebu1bootboot ?truebu1add_trueadd_true=? ?truebu1gc_readgc_read? ?truebu1gc_read_clausegc_read_clause? ?truebu1do_bodydo_body? ?truebu1tr_bodytr_body=? ?truebu1ith_clauseith_clause=? ?truebu1char_in_cmdchar_in_cmd=? ?truebu1show_code0show_code0=? ?truebu1bu_ctrbu_ctr=? ?truebu1patch_itpatch_it=? ?truebu1lwritelwrite? ?truebu1module_callmodule_call=? ?truebu1modulemodule? ?truebu1modulemodule=? ?truebu1is_moduleis_module? ?truebu1modulesmodules? ?truebu1current_modulecurrent_module? ?truebu1module_predicatemodule_predicate=? ?truebu1module_namemodule_name=? ?truebu1publicpublic? ?truebu1is_publicis_public? ?truebu1gensymgensym=? ?truebu1init_gensyminit_gensym? ?truebu1spy_goalspy_goal? ?truebu1spyspy? ?truebu1spyingspying? ?truebu1nospynospy? ?truebu1otherwiseotherwise ?truebu1falsefalse ?truebu1copy_termcopy_term=? ?truebu1phrasephrase=? ?truebu1phrasephrase=? ?truebu1nth_membernth_member=? ?truebu1member_imember_i=? ?truebu1savedsaved=? ?truebu1stat_dictstat_dict=? ?truebu1set_c_thresholdset_c_threshold? ?truebu1set_c_thresholdset_c_threshold=? ?truebu1set_c_traceset_c_trace? ?truebu1CC=? ?truebu1halthalt ?truebu1::=? ?truestat_dictruntimeruntime0 ?truestat_dictglobal_stackglobal_stack1 ?truestat_dictlocal_stacklocal_stack2 ?truestat_dicttrailtrail3 ?truestat_dictcodecode4 ?truestat_dictstringsstrings5 ?truestat_dictsymbolssymbols6 ?truestat_dicthtablehtable7 ?truestat_dictbboardbboard8 ?trueuser_error_ ? ? ? basic ? ?error_messageerrmes_ ? ? ? pretty ? ?error_messageerror_message _JM0?5J 01J)0 portray_error???$bin_cut?tell?fail? user ?tellquietmes_JM0?4J 0?ttyprintquietmes_ ?trueportray_errorbasicbasic ? >>> B? ?B? : B? ?B?B?trueportray_errorprettypretty write?write: cnlportray_clause?? *** ?writemember_.?? ?truemember_.??membernth_member_ ? ? 1 ?member_imember_i_ ?.?? ?truemember_i_.???1J0member_i:_module_callmodule_call_ ? $bin_cut?call??is_publicmodule_call_ call?? ?module_predicatemodule_predicate _ .?? module_name??? =..?4 ??3 .?? ? ?  ?=..module_name _ ?B? ?B?? .?[] ? ?.58[] name?? det_append?4 ? ? name? ??3 .?? ?namemodule_name_ ? .?.?[] should_be_nonvar ?user_errormodule_ ? bb_letmodule_name??? current module_namebb_letmodule_ member??public0?fail? ?modulemodule_ ?truecurrent_module_ $bin_cut?=??? current module_namebb_valcurrent_moduleuseruser ?trueis_module_ ? ? ?B?? module_name ? ?bb_valis_module_ bb_element4???3=4?>?3+4?/?03/module_name0 ? ?bb_listmodules_ ? ? is_module?findallhide_atom_ $bin_cut?? ?hide_atom0hide_atom_ ? ?truehide_atom0_ $bin_cut?fail? usercurrent_modulehide_atom0_ $bin_cut?fail?is_publichide_atom0_ module_predicate???? ? ?current_modulepublic0 //?? current_module?bb_defpublic??$bin_cut?? ?functorpublic0_ ? public? bad or repeated declarationerrmespublic,,??? public?? ?publicpublic_public0is_public_ ? ?is_publicis_public_ ? $bin_cut?=??? public ? ?bb_valis_public_ ?is_builtininit_gensym_ ? ? gensym ? 0bb_letgensym_ symcat???? ? ?gensym_nogensym_no_gensym?J0??1J1gensym??J0 ?truegensym_no_ ?1gensym??J0 ?truecurrent_op_ ? ? ?B?? ?get_opcurrent_op _ if4?4?4 ??3valopmark??3get_op???3 ,4 ?fail3 $bin_cut? ? 0 10000 ?forop_???J/0 ?trueget_op_ get_op0????? ? ? ?op_typeget_op0_??J1??J1?0J 0 ?trueop_typexfyxfyinfixop ?trueop_typexfxxfxinfixop ?trueop_typeyfxyfxinfixop ?trueop_typefxfxprefixop ?trueop_typefyfyprefixop ?trueop_typexfxfpostfixop ?trueop_typeyfyfpostfixop ?trueis_dynamic_?$firstJ0 ?trueis_assumed_$assumed?J0 ?B? ?truespy_goal_tracespying_ yes ?spying?J1 ?truespy //?? \+4?$bin_cut?bb_letspying?yes?3is_builtin? ?functorspy_ ? ? unable_to_spy_on ?user_errornospy//??? bb_rmspying?? ?functoris_builtin_nonvar_ bu1? $bin_cut?? ? ?metacallis_builtin_nonvar_ cont>? bu?>?? ?termcatis_builtin_var_ bu1? ?metacallis_builtin_var_ strip_cont??>?? ? ? ?buis_builtin_ ?B??is_builtin_nonvaris_builtin_is_builtin_varinteractive_ ? ?B?? =?yes =?no is_interactiveifinteractive_ ?B?interactive0is_interactive_ ? current_op1199fx?-\+interactive0yesyes ? 1200 fx ?-opinteractive0nono ? 1199 fx ?-opexpand_term_portable_expand_termstd_expand_term_portable_expand_termstrip_cont_ -???J51 ?truemetatrue_ metacall??strip_contmetacall_ ? meta_interpreter? call_ifdef?user_errorno meta_interpreter for undefined goal? ?call_ifdefotherwise_truefalse_B?truecall_ifdef_ ? ?B??callcall_ifdef_ ? ?call=_ ? ?true->_ $bin_cut?call?? ?call;->->?? ? ?? ? ?if;_ ?call;_ ? ?callor_ ?callor_ ? ?callif_ $bin_cut?call?? ?callif_ ? ?call,_ call?? ?call\+_ $bin_cut?fail? ?call\+_ ?true\=_ ? ??B?true\=_ ?truehalt_0JU0truerepeat_truerepeat_repeatfindall_workhorse _??J$0 findall_store_heap?? ? ?callfindall_workhorse_ ? ?findall_load_heapfindall_ ? .?? . 0findall_workhorsefindall_ ? []findallfindall_conj_ ? truefindall_conjfindall_conj_ ? ,?? , 0findall_workhorsefindall_disj_ ? failfindall_disjfindall_disj_ ? ;?? ; 0findall_workhorsewhile_ if4?true4??3call?3,4?fail3$bin_cut? ? ?callskip_until_ if4?fail4??3call?3$bin_cut? ? ?callskip_when_ if4?failtrue?3call? ? ?callnth_answer_?1J0 ? ?s? has_fuel?skip_untiltake_at_most_ ? ?s? has_fuel?whiledrop_at_least_ ? ?s? has_fuel?skip_whenhas_fuel_1?J0?0J 0?1J01??J0 ?truefind_while_ while?? ? ? ? ?findallfind_at_most_ take_at_most?? ? ? ? ?findallall_but_at_least_ drop_at_least?? ? ? ? ?findallall _ findall4?4? ? share_vars ? ???3-? ?3call?  ? ?are_sharedare_shared _vars?? free_variables??[]?? [] ?free_variablesshare_vars[][][] ?trueshare_vars..??-?? ?.?? ?share_varsgc_read_ ? read? .?[] ?findallgc_read_clause_ ? read_clause? .?[] ?findallgc_call_ call? member??? ?findallfor_ ???J 0 ?truefor_??J 0?1J0forargn_ ?B????J1 ?trueargn _ for?1?arg???? ? ? ? ?functornumbervars$VAR$VAR? ? ???1J1truenumbervars_ ?B?? ? ? ?truenumbervars..??? numbervars???? ? ?numbervarsnumbervars_ numbervars0????? ? ? ?functornumbervars_ ? ?? ? ?truenumbervars _?1J0??J0 numbervars?????? ?  ?numbervarsground_ greater?0$bin_cut?fail? 0numbervarsground_ ?truecopy_term_0?J&1 ?truesave_term_1?J&1 ?trueflush_2J+0truesee_or_fail_0?J*0 ?trueexists_file_ seen? ?see_or_failsread_0?J.1 ?trueswrite_1?J.1 ?truesystem[][] ??truesystem..??? .?? shell?? ?namesystem_ ?B?shell._[] ?compileinclude_compilecompile_ compile_mem?abort? ?find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[] .46.46.47.115.114.99[] getenv_path4???3.112.114.111.103.115[] ?getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[] ?truefile_library..?[].?[].46?.112?.108[] .46.46.47.108.105.98.114.97.114.121[] ?getenv_pathgetenv_path _ ? ?.47[] unix_getenvBP_PATH? ,4 ? det_append ?? ?3 name? ? = ?[] det_append???det_append ???? ?  ?  ?ifmake_file_name _ ? member ?? name? ? det_append ? ? ? det_append? ? ? name? ?? ? ?memberstatistics_.??.?[] stat0???? ?stat_dictstatistics_ cwrite?cwrite=cwrite?cnlfail? ?statisticsstatistics_trueatom_ ?B??B? ?trueatom_ ?B? ?truefloat_ ?B? ? ?$float=? ?truenumber_ ?B?? ?truenumber_floatcompound_ ?B? atomic? ?\+=.._ ?B???J 1 ?true=.._?.[]J!1 ?trueterm2list_?.[]J!1 ?trueterm2dlist_?.?J!1 ?truedet_append_ ->????J%1 ?truedet_append_ -????J%1 ?trueappendN_ ? []appendNappendN[][] ? ?trueappendN ..?? ->???2?J%1appendNappend_body_ ? ?append_bodyappend_body _ det_append0??4 ? if4 ?4 ?4 ??3 compare0 ??=3 =??3 =..?.? . ? .?[]3 - ?? ? 2 ?functorappend_conj _ ? ,?? ,?? ?  ? trueappend_bodyappend_disj _ ? ;?? ;?? ?  ? failappend_body._.?? ?true++_ -[]???J%1 ?trueappend_ -???2?J%1 ?general_appendgeneral_append[][] ? ?truegeneral_append..??.??general_appendlength_ ? ? ?B?? 0 ?get_lengthlength_ ? ? 0 ?make_lengthget_length[][] ? ?trueget_length..???1J0get_lengthmake_length[][] ? ??truemake_length..????J 0?1J0make_lengthtab_ integer?$bin_cut?tab0?? ?exprtab_ ? ? in tab/1: should evaluate to an integer ?user_errortab0_ ? put32fail? ? 1fortab0_ ?trueget _ get0?or4?4?$bin_cut?=???3greater?323less?0 ?repeatis_ $bin_cut?=??? ? ? ?expris_ is?? error_in_is ?errmesexpr_ ?B?? ? ? ?trueexpr_ $bin_cut?=??? ?floatexpr_ ? ?B?? variable_in_is ?user_errorexpr _ $bin_cut?arg1??arg2??expr??expr??=..?4 ? call?$bin_cut??3 . ?.?.?.?[]  ? 2functorexpr _ arg1??expr??=..?4? call?$bin_cut??3.?.?.?[] ? 1functorcompare_??J1 ?true+_ ? ?true-_0?J1 ?true\_0?J1 ?true==_ = ???J1 ?true\==_??J0 ?$noteq@<_ < ???J1 ?true@>_ > ???J1 ?true@=<_??J0 ?$lesseq@>=_??J0 ?$gteq<_ expr??less??? ?expr>_ expr??greater??? ?expr=<_ expr??less_eq??? ?expr>=_ expr??greater_eq??? ?expr=:=_ expr??arith_eq??? ?expr=\=_ expr??arith_dif??? ?expr$lesseq<< ?true$lesseq== ?true$gteq>> ?true$gteq== ?true$noteq<< ?true$noteq>> ?truebb_def_ def???? ? ?savedbb_set_ set???? ? ?savedbb_val_??J0 ? ?copy_termbb_rm_??J0 ?truebb_change_arg _ let???change_arg???? ? ? ?savedbb_let_??J0?bb_setbb_let_bb_defbb_def_ ? ? ? ? ? ?bb_defbb_set_ ? ? ? ? ? ?bb_setbb_val_ ? ? ? ? ? ?bb_valbb_rm_ ? ? ? ?bb_rmbb_let_ ? ? ? ? ? ?bb_letbb_default_val_ ? $bin_cut??bb_valbb_default_val_ ? ?truesaved_ $bin_cut?=??? ?save_termsaved_ save_term??$bin_cut?=??? ?bb_gcsaved_ ? /saved2bb_failsaved_ abort?restartlet_???J0? ?truelet_???J0 ?truedef_???J0 ?trueset_???J0 ?trueval_??J1 ?truelet_ ? ? ? ? ? ?letrm_??J0 ?true#_J1 ?truedcg_phrase_ ? ? ? 1 ? ?dcg_phrasedcg_phrase _J90?J80?J60 dcg_val[]dcg_tell?? ? ?call:=:##?? ????J1true:=:_??J1 ?truebb_gc_31J'0 bb_resetbb_put_back?? ?copy_termbb_put_back[][] ?truebb_put_back ..??.??.??.??.? ? functor ???bb_put_1? ??bb_put_back ?? ?functorbb_put_1_ set???$bin_cut?=??? ? ?save_termbb_put_1_ +?? ? ?bb_failbb_fail _ .>?.?[] user_error4?4??3blackboard overflow, left only?3culprit? bboard ?statisticstry_float _.??.??integer?box??atom..??atom?? name ??input_float? ????try_float_exptry_float_.??integer?box?? ?truetry_float_exp..??atome $bin_cut?? ?try_float_exp1try_float_exp..??atom? ? .?[] ? ?.101[] .?? name??integer?$bin_cut?? ?nametry_float_exp_ ?0 ?truetry_float_exp1 ..??.??integer?box??atom- ? ??0?J1truetry_float_exp1 ..??.??integer?box??atom+ ? ? ?truefloat_minus_ $float000??J1 ?truepow_pow??J11 ?truelog_log??J11 ?truesqrt_pow? $float02679111680?J11 ?trueexp_exp?J21 ?truelog_log?J21 ?truesin_sin?J21 ?truecos_cos?J21 ?truetan_tan?J21 ?trueatan_T?J21 ?trueasin_S?J21 ?trueacos_C?J21 ?trueinteger_integer?J21 ?truefloat_ $float000??J1 ?truectime_ ? .?.>?[] runtimestatisticsis_predicate_ ?B?? ?trueis_predicate_ $bin_cut?? ?is_dynamicis_predicate_is_assumedpredicate_property_ ?B??predicate_property0predicate_property _ functor???predicate_property0??? ? ? ?generate_a_predicatepredicate_property0_ $bin_cut?or4?4??3=?dynamic3=?interpreted ?is_dynamicpredicate_property0_ $bin_cut?or4?4??3=?assumed3=?interpreted ?is_assumedpredicate_property0_built_in $bin_cut??is_builtinpredicate_property0_compiled ?B? ?truecurrent_predicate_ ?B?? functor??>?? ? ?is_predicatecurrent_predicate_ functor???? ?generate_a_predicatecurrent_predicate//?? ?B? ?B?? is_predicate?$bin_cut?? ?functorcurrent_predicate//?? ? ?generate_a_predicatepredicate_key0//$assumed0 ? ? ?B?truepredicate_key0_ ? ?/$first0truepredicate_key0 //predmark0predmark ?/??/???0J 0?1J1truegenerate_a_predicate _00J'0 =4??3+? ? predicate_key0? ??4??3/?? ? ?  ?bb_elementhelp_aproposapropos _ apropos?? sort??member??write?cnlfail? ?findallapropos_ ?trueapropos _-??/?? predicate_property ??functor ???name??near_match??? ?namenear_match_ ? ??truenear_match_ ? $bin_cut?? ? ?append3near_match _ ? append3?4??? $bin_cut??3.>?? ?append3append3_ append???? ? ?appendunix_cd_HOMEJI0?JK0trueunix_argv _ ? ?JG0?1J0 ,4?unix_argv??3for?1?findallunixargcargc? ?JG1trueunixargvargv?unix_argvunixgetenvgetenv?? ? unix_getenv?? errmesno such environment variable? trueifunixaccessaccess?? ???JJ0trueunixcdcd? ??JK0trueunixcdcd ?unix_cdunixkillkill?? ???JL0truetry_dcg_expansion_ -->?? $bin_cut?? ? ? ?dcg_ruletry_dcg_expansion_ ? ? dcg expansion error-> ?errmesdcg_rule -->-->?? dcg_body???? dcg_conj ??? =?4 ??3 :-??  ?dcg_headdcg_head @@@@??true ?@@? ?? dcg_body? ????  ?dcg_bodydcg_head_true ? ? ?dcg_goaldcg_head ,,??? dcg_body????? ? ?  ?dcg_goaldcg_head_true ? ? ?dcg_goaldcg_goal_? +???J01 ?truedcg_body_ ?B?? ? ?phrase??? ?truedcg_body ,,??? dcg_body?? ?? dcg_conj ????  ?  ? ?dcg_bodydcg_body ->->??->??? dcg_body????? ?  ?dcg_bodydcg_body ;;??;??? dcg_disj?????  ?dcg_disjdcg_body{}{}? ? ? ??truedcg_body!!! ? ??truedcg_body[][]true ? ??truedcg_body ..??? dcg_body?? ?? dcg_conj ????  ?  ? ?dcg_termdcg_body_dcg_goaldcg_term_C??? ?truedcg_disj _ dcg_disj0?????? ? ?dcg_bodydcg_disj0 _ = ???J1? =?? ? ? ? ?dcg_conjdcg_disj0_ ? ? ?truedcg_conj_true ? ??truedcg_conj_dcg_CONJdcg_CONJtruetrue ? ??truedcg_CONJ,,??,???dcg_CONJdcg_CONJ_,?? ?trueC..?? ? ? ?truephrase_ ? []phrasephrase _ =??=?? call?? ? ?dcg_bodyportable_expand_term-->-->?? ? ?? ? ?try_dcg_expansionportable_expand_term-->>-->>??? ? ?try_edcg_expansion??? errmesexpected_to_expand?call_ifdefportable_expand_term_ ? ?truedefault_prologbinprologbinprolog ?truepeval_ioget_codeget_code? ?get0?truepeval_ioput_codeput_code? ?put?truepeval_ionlnlcnl ?truepeval_ioseeingseeing? ?seeing_telling0?truepeval_iotellingtelling? ?seeing_telling1?truepeval_ioseeing_atseeing_at? ?seeing_telling_at0?truepeval_iotelling_attelling_at? ?seeing_telling_at1?truepeval_iofast_writefast_write? ?cwrite?truefast_write_ ?B? ?trueget_code_J1 ?trueput_code_?J0 ?truenl_B?truesee_0?J*0? ?truesee_ ? ? unable_to_see ?user_errorseeing_0J)1 ?truetelling_1J)1 ?truetell_1?J*0? ?truetell_ ? ? unable_to_tell ?user_errorseen_0J+0truetold_1J+0truesee_at_0?J-0? ?truesee_at_ ? ? unable_to_see_at ?user_errortell_at_1?J-0? ?truetell_at_ ? ? unable_to_tell_at ?user_errorseeing_at_0J,1 ?truetelling_at_1J,1 ?truefind_file _ $bin_cut?file_search_path?file_extension_list?find_file1????? ?atomfind_file librarylibrary? $bin_cut?file_library??find_file1????? ?atomfind_file_ ? bad file name ?user_errorfind_file1 _ ? ? ? ? ?0J)0 ?  ?  ?  ?find_file2find_file2 _ $bin_cut? see?? ? ? ? ?see_a_filefind_file2_ findall ?4 ? ? findall ?4 ? ?errmes4?4??3file_not_found?3+4? ?3+ ??3 ,4 ? name ? ?3 member ??3 ,4 ? name ? ?3 member ?? ?seesee_a_file _ see_or_fail?seen? ?make_file_nameread_clause_ warn_singletons???? ?read_with_singletonsread_with_singletons_ singletons??? ?r_termwarn_singletons ..?? ? ?J M0 ?1J 0 .?? fail? ? ?warn_singletons1warn_singletons_ ?truewarn_singletons1:-:-? ??truewarn_singletons1_ :-?>? seeing_telling_at0 ? melt_varnames? ttyout4 ? $bin_cut??3 ,4 ? ,4 ? ,nl ,4 ? ,4 ?,4?,nlnl3cwrite:-...3 print?3 print=> 3 print ** warning singleton_variables, byte=> ?3 print? ? ?add_truemelt_varnames[][] ?truemelt_varnames..??var???melt_varnamesread_ ? ?r_termtop_read_term_read_termread_term_ r_vars??? ? ?r_termr_vars[][][] ?truer_vars..??var???.??=??r_varssingletons _ ? ? member4??3var?>?s0 ? ?findallprint_portable_printwrite_portable_writewriteq_portable_writeqttyin_0J)0 call?see?? user ?seettyout_1J)0 call?flushtell?? user ?tellttyprin_ write? ?ttyoutttyprint_ ,4?nl3write? ?ttyoutttycwrite_ cwrite? ?ttyoutttycwriteln_ ,4?nl3cwrite? ?ttyoutttynl_ ? nlttyoutttyput_ put? ?ttyoutdisplay_ portable_display? ?ttyoutr_term_ read_tokens??r_and_check??$bin_cut?=??? ?repeatr_and_check_ ? all_read?? 1200 ?rtr_and_check_ ?syntax_errorall_read[][] ??trueall_read_ ? ? .operator.expected.after.expression[] ?syntax_errorexpect_.??? ?trueexpect_ ? .?.or.operator.expected[] ?syntax_errorprefixop_ ? ? $bin_cut?? prefixop fy ?get_op0prefixop_ ? -?1?? prefixop fx ?get_op0postfixop_ ? ? $bin_cut?? postfixop yf ?get_op0postfixop_ ? -?1?? postfixop xf ?get_op0infixop _ ? ? $bin_cut? -?1?? infixop xfx ? ?get_op0infixop _ ? ? $bin_cut? -?1?? infixop xfy ? ?get_op0infixop _ ? ? -?1?? infixop yfx ? ?get_op0ambigop _ infixop????? ? ?  ?postfixoprt[][] ? .expression.expected[] []syntax_errorrt ..?? ? ? ? ? ?  ?  ?  ?rtsrtsvarvar??.(?? r_args ? ? ? $bin_cut? exprtl0 ?4 ?????3 apply?.? ? 999  ?  ?rtrts varvar?? ?? ?exprtl0rts atomatom-.??integer?box? ?0?J0?exprtl0rts atomatom-.? ?atom? float_minus?? $bin_cut? exprtl0 ??????floatrtsatomatom?.(?? r_args ? ? ? =.. ?4?$bin_cut?exprtl0 ? ?????3.?.? ? 999  ?  ?rtrts atomatom? $bin_cut? after_prefix_op? ? ??????  ?  ? ?prefixoprts atomatom? ?? ?exprtl0rts integerinteger?box?? ?? ?exprtl0rts[[.]?? []exprtl0rts [[ ?? r_list ? ? ? $bin_cut? exprtl0 ?4 ?????3 .? ? 999  ? ?rtrts (( ?? expect) ? ? $bin_cut? exprtl0 ? ????? 1200  ?  ? ?rtrts (((( ?? expect) ? ? $bin_cut? exprtl0 ? ????? 1200  ?  ? ?rtrts{{.}?? {}exprtl0rts {{ ?? expect} ? ? $bin_cut? exprtl0 ?4 ?????3 {}? 1200  ? ?rtrts stringstring? ?? ?exprtl0rts _ ? .? .cannot .start .an .expression[] ?syntax_errorr_args ..,?.??? $bin_cut? r_args ???? 999 ?  ?rtr_args..)?[] ? ??truer_args_ ? ? .,).expected.in.arguments[] ?syntax_errorr_list ..,?.??? $bin_cut? r_list ???? 999 ?  ?rtr_list ..|? ?? $bin_cut?expect]??? 999 ? ?rtr_list..]?[] ? ??truer_list_ ? ? .|].expected.in.list[] ?syntax_errorafter_prefix_op _ ???J 0? .prefix .operator .? .in .context .with .precedence .?[]  ? ?syntax_errorafter_prefix_op _ prefix_is_atom ?? exprtl ??????? ?  ?peepopafter_prefix_op_ =.. ?4 ? $bin_cut? exprtl ?? ?????3 .? . ?[] ? ?  ?  ?  ?rtpeepop ..??.(?atom? ?.??.(?atom??truepeepop ..??atom? ?.??infixop????infixoppeepop..??atom? ?.??postfixop???postfixoppeepop_ ? ?trueprefix_is_atom..??prefix_is_atomprefix_is_atominfixopinfixop??=? ???J 0trueprefix_is_atompostfixoppostfixop??? ???J 0trueprefix_is_atom)) ?trueprefix_is_atom]] ?trueprefix_is_atom}} ?trueprefix_is_atom|| ?1100?J 0trueprefix_is_atom,, ?1000?J 0trueprefix_is_atom[][] ?trueexprtl0..? ?atom? $bin_cut? or4 ?4 ??3 exprtl4 ?0????3 .4 ? ?3 infixop? ? ? ?3 exprtl4 ?0????3 .4 ? ?3 postfixop???  ?  ?  ?ambigopexprtl0 ..??atom? $bin_cut? exprtl4 ?0?????3 .4 ??3 infixop????  ?infixopexprtl0 ..??atom? $bin_cut? exprtl4 ?0?????3 .4 ??3 postfixop???  ?postfixopexprtl0 ..,??1000J 0? $bin_cut? exprtl ?10004 ?????3 ,?? 1000  ? ?rtexprtl0 ..|??1100J 0? $bin_cut? exprtl ?11004 ?????3 ;?? 1100  ? ?rtexprtl0 ..?? $bin_cut? syntax_error4 ?4 ??3 .? .follows .expression[]3 .??cant_follow_exprexprtl0_ ? ? ?truecant_follow_expratomatom?atom ?truecant_follow_exprvarvar=?variable ?truecant_follow_exprintegerinteger?integer ?truecant_follow_exprstringstring?string ?truecant_follow_expr((((bracket ?truecant_follow_expr((bracket ?truecant_follow_expr[[bracket ?truecant_follow_expr{{bracket ?trueexprtl..??infixop? ? ? ?? ?J 0? ?J 0? =.. ?4?exprtl? ? ?????3.?.?.?[]  ? ?  ?rtexprtl..? ?postfixop? ? ?? ?J 0? ?J 0? .?.?[] peepop ? ?exprtl ? ??????=..exprtl ..,??1000J 0?1000J 0? $bin_cut? exprtl ?10004 ?????3 ,?? 1000  ?  ?rtexprtl ..|??1100J 0?1100J 0? $bin_cut? exprtl ?11004 ?????3 ;?? 1100  ?  ?rtexprtl _ ? ? ?truesyntax_error_0J)00J,0 start_syntax_error???see?fail? user ?seestart_syntax_error _B? display?display_list?length??bb_letsyntax_errorlength?$bin_cut?? ** SYNTAX ERROR: byte= ?displaystart_syntax_error_ ?truesyntax_error_0J)0 finish_syntax_error?see?fail? user ?seefinish_syntax_error_syntax_errorlengthJ0 -???display_list??$bin_cut?? ?lengthdisplay_list..?? display_token?$bin_cut?display_list?? 32 ?ttyputdisplay_list[][] ?ttynldisplay_list_0 $bin_cut?display_list?99999?  displaydisplay_list ..?? ttyput32-?1?$bin_cut?display_list??? ?display_tokendisplay_list[][] ?ttynldisplay_tokenatomatom? $bin_cut?write_float?? ?floatdisplay_tokenatomatom??displaydisplay_tokenvarvar???displaydisplay_tokenintegerinteger?box???displaydisplay_token stringstring?? .?[] ? ?.34[] .?? .?[] name??display?? ?det_appenddisplay_token_displayread_tokens_ append?[]?$bin_cut?=??=??? 32 ? ?r_toksread_tokens..?[]atomend_of_file[] ?truer_toks-1-1 ??B?truer_toks_?32J 0?J0r_toksr_toks3737? get0?is_terminator?$bin_cut?arith_dif?-1get0?r_toks????repeatr_toks4747?J0r_solidusr_toks3333.??atom!?J0r_after_atomr_toks4040.((??J0r_toksr_toks4141.)??J0r_toksr_toks4444.,??J0r_toksr_toks5959.??atom;?J0r_toksr_toks9191.[??J0r_toksr_toks9393.]??J0r_toksr_toks123123.{??J0r_toksr_toks124124.|??J0r_toksr_toks125125.}??J0r_toksr_toks4646?J0r_fullstopr_toks3434.??string?? r_toks???? 34 ?r_stringr_toks 3939.??atom?? name??r_after_atom???? 39 ?r_stringr_toks_.??var?? $bin_cut? r_name? ? ? or4 ?4 ?$bin_cut?r_toks ????3 ,4 ?=?_3 = ? .95[]3 ,4 ? ,4 ?r_lookup????3 name? ?3 = ? .?>?  ?is_majr_toks _ $bin_cut?r_integer??? ? r_toks??? try_float ????? ?is_numr_toks _.??atom? $bin_cut? r_name? ? ? name? ? r_after_atom ???? ?is_minr_toks _.??atom?J0 name?4? r_after_atom????3.?? ?  ?r_symbolr_after_atom4040.(??J0r_toksr_after_atom_r_toksr_string _ ? ? ? ?J0 ? ?  ?r_stringr_string-1-1-1 ttyput?displaytokenttyput?ttynl$bin_cut?fail? ! end of file in: displayr_string _ ? ? ??J0 ? ?more_stringr_string_.?? ? ? ?r_stringmore_string_ ? ?.??? ? ? ?r_stringmore_string_[] ? ?truepatch_slash..((? ?.(??truepatch_slash_ ? ?truer_solidus4242?J0 r_toks???? ? ?r_solidusr_solidus _.??atom? name?4? r_toks?? ? patch_slash ???3.47? ?r_symbolr_solidus-1-1-1? ttynl? ! end_of_file in /*.. commentdisplayr_solidus4242J0?47J0?r_solidusr_solidus424232 ??truer_solidus_J0r_solidusr_name _.?? $bin_cut?get0?r_name????is_alpha_numr_name_[] ? ?truer_symbol _.?? get0?r_symbol????is_specr_symbol_[] ? ?truer_fullstop-1-1? ttynlfail? ! end_of_file just after full_stopdisplayr_fullstop_[]?32J 0? ?truer_fullstop _.??atom? name?4? r_toks????3.46? ?r_symbolr_integer _ ? ??48J0J 0 . ?[] ? ? .46[] =?4 ??3 . ? .??  ? ?  ?r_intr_int -1-1 ??B?truer_int 39390 ?.39?.?[]?J1?-1J0J1truer_int 3939 $bin_cut?? 0 ?r_digitsr_int _ ? ? ? ? 10  ?  ?  ?r_digsr_digits_ ? ? ? ? ? ?J0?-1J0 ?  ?  ?  ?  ?r_digsr_digs _.? ??48J 0?57J 0???J 0 ?48J 0 ??J0 ? ? ?  ? ?r_digitsr_digs _ ? ?[] ?truer_lookup ..??var??? ? ? ??r_varcountr_lookup..??r_lookupr_varcount_ .?[] ? ?.95[]? ? ?s1 ?truer_varcount_ ?B?? ? ?s? ?truer_varcountss1 ?trueis_alpha_num_?97J 0?122J 0 ?trueis_alpha_num_?65J 0?90J 0 ?trueis_alpha_num_?48J 0?57J 0 ?trueis_alpha_num9595 ?trueis_alpha_num_is_latin1_minis_alpha_num_is_latin1_majis_maj_?65J 0?90J 0 ?trueis_maj9595 ?trueis_maj_is_latin1_majis_min_?97J 0?122J 0 ?trueis_min_is_latin1_minis_num_?48J 0?57J 0 ?trueis_latin1_maj_?192J 0?214J 0 ?trueis_latin1_maj_?216J 0?222J 0 ?trueis_latin1_min_?223J 0?246J 0 ?trueis_latin1_min_?248J 0?255J 0 ?trueis_terminator1010 ?trueis_terminator1313 ?trueis_terminator-1-1 ?trueis_spec3535 ?trueis_spec3636 ?trueis_spec3838 ?trueis_spec4242 ?trueis_spec4343 ?trueis_spec4545 ?trueis_spec4646 ?trueis_spec4747 ?trueis_spec5858 ?trueis_spec6060 ?trueis_spec6161 ?trueis_spec6262 ?trueis_spec6363 ?trueis_spec6464 ?trueis_spec9292 ?trueis_spec9494 ?trueis_spec9696 ?trueis_spec126126 ?trueportable_display_ ? displayw_outportable_print_ ? printw_outportable_write_ ? writew_outportable_writeq_ ? writeqw_outw_out_ fail? 1200 punct ?w_outw_out_ ?truemaybe_paren _punct??J 0??J0 ?truemaybe_paren_ ? ?truemaybe_spacepunctpunct ??truemaybe_space_ ? ??32J0truemaybe_spacequotequotealpha ??32J0truemaybe_space_ ?trueput_string[][] ?trueput_string..???J0put_stringput_string[][] ??J0trueput_string..?? ???J0?J0 ?put_stringput_string..???J0put_stringw_variable_ ?B? ?trueportray_writew_out _alpha ?B?? w_variable?? ? alphamaybe_spacew_out$VAR$VAR? ? ? ??w_VARw_out _alpha ?B? ,4 ? maybe_space?other3 less?0 maybe_space?alpha $bin_cut? cwrite?? ?orw_out_printalpha $bin_cut??portrayw_out _punct current_op ?>?? greater ?? $bin_cut? put40 or4 ?4 ? $bin_cut? put41?3 ,4 ? w_atom??punct>?3 =?writeq3 cwrite? ?atomw_out _ $bin_cut? w_atom????? ?atomw_out _displaypunct? w_atom?display?>? w_args0??40display? ?functorw_out {}{}?punct?123J0 put125? 1200 punct ? ?w_outw_out ..??punct?91J 0 w_tail??? 999 punct ?  ?w_outw_out ,,??? w_out??999?>? put44 w_out??1000punct? maybe_paren1000?41??? 1000 ? 40 ?  ?maybe_parenw_out _alpha or4?4 ? $bin_cut? write_float??3,4? maybe_space?other3less?03 maybe_space?alphafloatw_out _ w_out ? ???????  ?  ? ?functorw_out11 ,4 ? - ?1 ?3 current_op ?fx? ,4 ?= ? ?3 current_op ?fy? $bin_cut?maybe_paren ??40??w_atom????arg1??w_out?? ??? maybe_paren ??41???  ?  ?orw_out11 ,4 ? - ?1 ?3 current_op ?xf? ,4 ?= ? ?3 current_op ?yf? $bin_cut?maybe_paren ??40??arg1??w_out?? ??? w_atom???? maybe_paren ??41???  ?  ?orw_out22 ,4 ? ,4 ? = ? ?3 - ?1 ?3 current_op ?xfy? or4?,4?,4?= ? ?3- ?1 ?3current_op ?yfx?3,4?,4?= ? ?3- ?1 ?3current_op ?xfx? $bin_cut?maybe_paren ??40??arg1??w_out?? ??? w_oper? ???? arg2? ?w_out ?? ??? maybe_paren ??41???  ? ?orw_out _punct w_args0??40?? ? ? ? ?w_atomw_oper _?700J 0? ? ? ? ?w_atomw_oper _ ?punct32J0 put32? punct ?w_atomw_VAR _alpha ?B??0J 0? mod?26? +?65? put?or4?4 ? $bin_cut??3less?263 ,4 ?cwrite?3 //?26? ? alpha ?maybe_spacew_VAR_ $bin_cut?w_atom?write???atomw_VAR _punct w_args014?40??3$VAR? $VAR ? ?w_atomw_atom!!punct ??33J0truew_atom;;punct ??59J0truew_atom[][]punct ??91J093J0truew_atom{}{}punct ??123J0125J0truew_atom..writeqquote ?? .39.46.39[]put_stringw_atom_ or4?4 ? $bin_cut??3,4? ,4 ? put_string ?3 maybe_space??3classify_name ??3 or4 ?,4? put_string ?3=?alpha3 ,4 ?,4? ,4 ? ,4 ? put_string ?393 put393 maybe_space??3=?quote3 =?writeq  ? ?nameclassify_name..??alpha $bin_cut?classify_alpha_tail??is_minclassify_name..??other classify_other_tail??is_specclassify_alpha_tail[][] ?trueclassify_alpha_tail..?? classify_alpha_tail?? ?is_alpha_numclassify_other_tail[][] ?trueclassify_other_tail..?? classify_other_tail?? ?is_specw_args _ ? ??41J0truew_args _?J0?1J0??J0 w_args???44?? ? 999 punct ?  ?w_outw_tail_ ?B??124J0 put93?w_variablew_tail[][] ??93J0truew_tail ..???44J 0 w_tail??? 999 punct ?w_outw_tail _124J0 put93? 999 punct ?w_outpp_term_ write?cnlfail? 0 ?numbervarspp_term_ ?truepp_clause_portray_clauseportray_clause_ fail? ?pp_clause0portray_clause_ ?truepp_clause0:-:-??B? l_clauses?028? 0 ?numbervarspp_clause0:-:-?? +?? portable_writeq?l_clauses?028$bin_cut?? 0 ?numbervarspp_clause0_ :-?true ?pp_clause0l_clauses ,,??? $bin_cut? l_clauses?1??? 1 ?l_clausesl_clauses truetrue2 ?? .?[] ? ?.46[]?J0B?truel_clauses ;;??? l_magic4 ?02? l_magic_nl?.?3 ;?? fail ?  ?l_magicl_clauses ->->??? $bin_cut? l_clauses?5??? 5 ?l_clausesl_clauses _ portable_writeq?l_magic_nl?.? ? ?l_magicl_magic!!0 ?? :- B?truel_magic!!1 ?? , B?truel_magic_0 ? ?? :- B?B?tabl_magic_1 ? ?? .?[] ? ?.44[]?J0B?tabl_magic_3 ?? ( B?truel_magic_4 ?? ; B?truel_magic_5 ? ?? ->B?B?tabl_magic_ ? cwrite:- cwrite?cnltab??atoml_magic_nl22 ?? ?B?B?truel_magic_nl_ ?truel_magic ;;??? $bin_cut? l_magic?1??? 1 ?l_magicl_magic _?8J0?3J0 cnl tab? l_magic2?)? 1 ? ?l_clausesl_magic222 ?? ?B?truel_magic2_ ?truemain_binpro_startbinpro_start_ exec_run_time_commandscall_ifdefmaintoplevel=?$end? init_io truecall_ifdeftoplevel_ topstep?- $bin_cut?? ?repeattopstep_ flushttyin4?topinterp???3top_read_term?? ?ttyprintopinterp_ = ?end_of_file?J1? ?truetopinterp_ ? ? fail? ? ?report_answerstopcall_ nothing? ?metacallsavetop_topgoalJ1 ?truenothing_truereport_answers[][] ? $bin_cut?ttyprintyes?topcallreport_answers..?? ? report_one_var?report_top_vars?another_sol?if4?4?fail?3=?no3,4?ttyprintyes3$bin_cut?topcallreport_answers_ ? nottyprintreport_top_vars_ ? ttyprint,report_one_var?fail? ?memberreport_top_vars_ ?truereport_one_var==?? ttyprin=ttyout4??3writeq? ?ttyprinanother_sol_ $bin_cut?ttyin4?user_action??ttynl?3get_code? ?is_interactiveanother_solyesyes ttynl? ; ?ttyprintuser_action1010no ??trueuser_action5959yes ?? get_code10ttyinuser_action _ ttyin4?ttyin4?user_action???3get_code?3get_code10  ; for more, otherwise ?ttyprinmeta_interpreter_do_bodydo_body_ ? ? ?B?? unbound_goal ?user_errordo_body _ or4?4??3,4?,4? do_body?3$bin_cut?3=?yes3=?nodo_bodydo_compiledcallcall?? ?B?do_bodydo_compiled\+\+? $bin_cut?fail? ?do_bodydo_compiled\+\+? ??truedo_compiledbagofbagof??? ?? do_body?bagofdo_compiledsetofsetof??? ?? do_body?setofdo_compiledfindallfindall??? ?? do_body?findalldo_compiled_calldo_goal_ $bin_cut?spy_goal?? ?spyingdo_goal _ $bin_cut?assumed_clause??do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_assumeddo_goal _ $bin_cut?clause??do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_dynamicdo_goal_ ?B??do_compileddo_goal_ $bin_cut?do_apply??do_goal?? call ?functordo_goal_do_undefdo_undef_ errmes4?4??3=undefined_predicate/??3=culprit?functordo_apply _ .>?.?? =..?? det_append???=..??? ? ?=..do_body ,,?? ? ? ?? ? ?  ?do_conjdo_body ;;?? ? ? ?? ? ?  ?do_disjdo_body!!trueyes ?truedo_body_trueno ?do_goaldo_conj!! ?yes ??truedo_conj_ do_body???? ?do_bodydo_disj ->->?? ? ? ? ?? ?  ?  ?  ?do_if_then_elsedo_disj_do_disj0do_if_then_else _ $bin_cut? do_body???? ?do_bodydo_if_then_else_ ? ? ? ?do_bodydo_disj0_ ? ? ?do_bodydo_disj0_ ? ? ? ?do_bodytrace_ ? 0tr_bodytr_body_ ? ?B?? unbound_goal ?user_errortr_body _ or4?4??3,4? ,4 ? ,4 ? ,4 ? ,cnl tr_body??3 writeCUT3 tab?3 $bin_cut?3=?yes3=?notr_bodytr_body ,,?? ? ? ? ?? ?  ?  ?  ?tr_bodytr_body!!trueyes ??truetr_body ;;?? ? ? ? ?? ?  ?  ?  ?tr_disj1tr_bodytruetruetrueno ??truetr_body_trueno ?tr_goaltr_disj1->->?? ? ? ? ? ?? ?  ?  ?  ?  ?tr_if1tr_disj1_ ? ? ? ?tr_bodytr_disj1_ ? ? ? ? ?tr_bodytr_if1 _ do_body? tr_body???? tr_body????  ?  ?  ? ?iftr_body!! ?yes ??truetr_body ,,??? ,??  ?tr_bodytr_body;;?? ? ? ? ? ?? ?  ?  ?  ?  ?tr_disj2tr_bodytruetrue ? ? ? ? ??tr_bodytr_body _ tr_body????? ? ?tr_goaltr_disj2->->? ? ? ? ? ? ? ??  ?  ?  ?  ? ? ?tr_if2tr_disj2 _ ? ? ? ? ?tr_bodytr_disj2 _ ? ? ? ? ? ?tr_bodytr_if2 _ do_body? tr_body????? tr_body?????  ?  ?  ? ?iftr_goalcallcall??tr_bodytr_goal\+\+? $bin_cut?fail? ?tr_bodytr_goal\+\+? ??truetr_goal_ ,4?,4?,4? or4 ? ortrue ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeRedo: 3 tab?3 ,4 ? ,4 ? ,4 ? ,cnlfail3 print?3 writeExit: 3 tab?3if4?4 ? ,4 ? tr_call? ?3 +1? ?3,4? \+ spying?3arith_eq?103 metacall?3ifis_interactive4? ,4 ?cnl3 =?323,4? if4 ?true get0>?3 arith_eq?103get0?3or4?or4?true3,is_interactive,4?fail3write : 3,4?,4?,4?fail3print?3writeCall: 3tab? ,4?,4? ,4 ? ,cnlfail3 print?3writeFail: 3tab? ? ?ortr_call bagofbagof??? ?? tr_body?? ? ?bagoftr_call setofsetof??? ?? tr_body?? ? ?setoftr_call findallfindall??? ?? tr_body?? ? ?findalltr_call_ $bin_cut?tab?functor???write4? cnl assumed_clause? ? tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! assumed/?? ?is_assumedtr_call_ $bin_cut?tab?functor???write4? cnl clause? ? tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,cnltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! dynamic/?? ?is_dynamictr_call _ ?B?? functor???write4? cnl call??3!!! compiled/?? ? ?tabtr_call_ $bin_cut?do_apply??tr_call??? call ?functortr_call_do_undefdynamic_ fail? ?make_dynamicdynamic_ ?truemake_dynamic,,??? make_dynamic?? ?make_dynamicmake_dynamic //?? check_dynamic?4?define_dynamic??3/?? ?functorcheck_dynamic_ ?B?? WARNING: dynamic code will shadow compiled predicate? cnl?writecheck_dynamic_ $bin_cut?errmesdynamic code would shadow assumed predicate?? ?is_assumedcheck_dynamic_ ?truedefine_dynamic_ bb_def?$last0? $first 0bb_defensure_dynamic_ $bin_cut?? ?is_dynamicensure_dynamic_ make_dynamic4??3/??functoradd_clause_ $bin_cut?? ?add_clause0add_clause _ add_clause0????$bin_cut?? ? ?ensure_dynamicadd_clause_ :-?? unable to assert clause ?errmesadd_clause0 _??J0??J0???J0 :-?? set???? ? ?bb_defadd_clause0_??J0 :-?? ? ? ?bb_defasserta_ :-?? add_clause$first-1??? ?add_trueassertz_ :-?? add_clause$last1??? ?add_trueassert_assertzassert_itend_of_fileend_of_file ??trueassert_it_assertzretract _ =?4?clause0?? ? erase0? ??3:-?? ?add_trueretractall _ :-?>? val?$first?val?$last? for ???val? ?>?erase0? ? fail? ?add_trueretractall_ ?truecollect_slot_?$firstJ1?$lastJ0??J 0??1J0?$first?J0 ?truecollect_slot_ ?trueinstance$dbref$dbref????J0copy_termerase$dbref$dbref?? ? ?erase0erase0_ collect_slot??? ?bb_rmclause_ ? ?clause0clause_$dbref??clause0clause0 _?$firstJ0?$lastJ0 ith_clause? ??? member4? ??3-?:-??  ? ?  ? ?findallith_clause_-????J1 ?trueith_clause_??J 0?1J0ith_clauseabolish _ ? ? is_dynamic?$bin_cut?abolish0???? ? ?functorabolish_ found/?? abolish_expects_dynamic_clauses ?errmesabolish0_ retractall?fail? ?functorabolish0_ ??$firstJ0?$lastJ0define_dynamicdebug_reconsultconsult_warning_ ? % using compile/1 is MUCH fasterquietmesconsult_ consult_warningconsult0?? ?find_filereconsult_ consult_warningsurvive_cleanup??consult0?? ?find_fileconsult0 _ quietmes4?see?repeatread_clause?consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes4??3consulted?time?3consulting? ? ?ctimeconsult_included_0J)0 consult0?see?? ?find_fileconsult_embedded:-:-??consult_cmdconsult_embedded_ assert_it?? ?expand_termconsult_cmd..?[]?consult_includedconsult_cmdconsultconsult??consult_includedconsult_cmdreconsultreconsult??consult_includedconsult_cmd_metacalllisting _ ? ? is_dynamic?$bin_cut?write% write4? write: cnl listing0??3/?? ? ?functorlisting _ ? ? is_assumed?$bin_cut?write% assumed write4? write: cnl listing1??3/?? ? ?functorlisting0_ portray_clause4?fail?3:-??clauselisting0_ ?B?truelisting1_ portray_clause4?fail?3:-??assumed_clauselisting1_ ?B?truelisting_ listing??fail? 0 255forlisting_ ?B?truegenerate_run_time_predicate _ or4?4?bb_element4? ? nonvar ??3=4? ?3+? ?3,4? = ? /??3=?/$assumed03,4?= ? /$first03=?/??  ? ?bb_listlisting_ listing??fail? ?generate_run_time_predicatelisting_true=> _ ? intuitionistic? metacall?=?$closed? ? ?assume-: _ ? linear?>? metacall?=?$closed? ? ?assumeadd_hint_ll _clause?? ? ?:-?? ? ? ?add_trueassumel_ ? ? linear>? ?assumeassumei_ ? ? intuitionistic>? ?assumeassume_ ?B?? bad_clause? error_in_assume ?errmesassume_assume1assume1_.?[]?assume_fileassume1_assume_llassume_ll _ lval$assumed?? assume_with_hint_ll??? ?add_hint_llassume_with_hint_ll_ ? ? ?B?? ?insert_llassume_with_hint_ll..?[] ? ?trueassumed_ call?? ?assumed_clauseassumed_clause_ ? ?assumed_clauseassumed_clause _ ? ? ?$assumed?J0 ?B ? ? ?get_assumed_clauseget_assumed_clause _ ? ? ?. ? ? clause?? ? ?copy_or_delete_llget_assumed_clause_.??get_assumed_clausecopy_or_delete_ll linearlinear?? ?:-?? ?B? ?B? ?$usedtruecopy_or_delete_llintuitionisticintuitionistic? ? ? ?B? :-?? ?copy_terminsert_ll_ ? ?.?[]?2? .?[]?J0 ?trueinsert_ll_.??insert_llassume_file _ seeing_telling0?see?assume_all?seensee?? ? ? ?find_fileassume_all_ assume_all0??? ? ?gc_read_clauseassume_all0end_of_fileend_of_file ??trueassume_all0_ gc_read_clause?assume_all0??? ?assume_oneassume_one:-:-?.?[] ?? ?assume_fileassume_one:-:-? ?? consult_cmd? true trueifassume_one_ ? ? ?assume_llbb_element ==??+??/??/?? ?.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_30J'1 ?truebb_ ? unsortedbbbb_ ? ,4?,4?,cnl,4? ,4 ? ,4 ? ,4 ? ,4 ? ,cnlfail3 write ?3 bb_orig ? ?3 member ? ?3 if4 ?4 ? = ? ?3 \==?sorted3 ,4 ? sort ? ?3 findall ?4 ? ?3 bb_element ? ?3bb_list ?3write-bboard?3statisticsbboard? ? cnlorbb_orig ==??+??/??/??= ? ? + ? ? /?? /?? functor ???or4?4? $bin_cut??3val? ? ?3lval? ? ? ? ?functorsort_ ? remdup??? < ? ?merge_sortremdup[][][] ?trueremdup ..??.?? = ???J1? .??remdupremdup..??.??remdupmerge_sort_ merge_sort1????[]? ? ? ?lengthmerge_sort100[] ? ??truemerge_sort1 11 ?.??.?[]?truemerge_sort1 _?1J0??J 0 merge_sort1 ?? ? ?? merge_2 ?? ??? ?  ?  ?  ?merge_sort1merge_2[][] ? ??truemerge_2 ..??.? ?.????J1? .? ?merge_2merge_2 _ ?.??.?? ?merge_2ksort_ $bin_cut?=??? -1 ? []keysortksort_ keysort?? illegal_arguments ?user_errorkeysort ..??? ?B ? ? ? -=? ? ? .?? keysort?1? ????  ?  ?  ? ?samkeyrunkeysort_[] ? ?truekeysort..????J 0? ?B ? ? ? -=? ? ? .?? keysort ?1? ? ??keymerge? ? ?+???keysort??? ????  ?  ?  ?  ? ?samkeyrunkeysort _ ? ? ?truesamkeyrun..?? ?B ? ? ? - ? ? ? ? . ? ? -? ? $bin_cut? = ?4 ? samkeyrun?? ????3 .?>?  ?@=<samkeyrun ..?? ?B ? ? ? - ? ? ? ? . ? ? - ? ? < ? ? ?J 1? .??  ?samkeyrunsamkeyrun _ ? ? ?.?[]truekeymerge[][] ?? ? ?truekeymerge ..?? ? ?.? ?-? ? ? ? -? ? $bin_cut? =?4 ? keymerge????3 .?? ?  ?@=<keymerge_.??? ? ?.??keymergekeymerge_ ? ?truesetof _ call? sort??? ? ? ?bagofbagof_ ? ? \==?[] $bin_cut? =.. ?4 ? functor ?. ? findall4 ?4 ??replace_instance? ? ? ?keysort ? ?$bin_cut?concordant_subset ? ? ?=? ??3 - ??3 call?3 ..? ? [] ?free_variablesbagof _.?? call? .?? ?findall^_ ? ?callreplace_instance[][][] ??truereplace_instance ..??-?? ?. ? ? -?? $bin_cut?replace_instance??? ?? ?replace_key_variablesreplace_key_variables00 ??truereplace_key_variables_??J0 ?B???1J0replace_key_variablesreplace_key_variables_??J0??J1?1J0replace_key_variablesconcordant_subset ..??-?? concordant_subset ??4 ????3 .?? ?  ?concordant_subsetconcordant_subset ..??-??.?? = ???J1?concordant_subsetconcordant_subset_[] ? ?trueconcordant_subset[][] ? ? ??trueconcordant_subset_ ? ? ?trueconcordant_subset_ ? ? ?concordant_subsetfree_variables _ ? ?.?? ?B? list_is_free_of?? $bin_cut?? ? ?term_is_free_offree_variables_ ? ?B?? ?truefree_variables _ $bin_cut?free_variables? ???? ?  ? ?explicit_bindingfree_variables _ free_variables?????? ? ? ?functorfree_variables00 ? ??truefree_variables _??J0 -?1 ? $bin_cut? free_variables ??? ??? ? ? ?  ?  ?free_variablesexplicit_binding\+\+?fail ? ?trueexplicit_bindingnotnot?fail ? ?trueexplicit_binding ^^?? ? ?+??trueexplicit_binding setofsetof??? ?-??+??trueexplicit_binding bagofbagof??? ?-??+??trueterm_is_free_of_ ?B??\==term_is_free_of_ term_is_free_of???? ? ?functorterm_is_free_of00 ??trueterm_is_free_of _??J0 -?1? $bin_cut? term_is_free_of???? ? ? ?term_is_free_oflist_is_free_of[][] ?truelist_is_free_of..?? list_is_free_of??? ?\==keysort_ksortnot_ call? $bin_cut?? ? ?\+not_ $bin_cut?fail? ?groundnot_ ? user_errorshould be groundnot? ? fail abortifterm_chars_ ?B?? name??? ? ?swriteterm_chars_ sread??? ? ?namevars_of_ ? ? [] []free_variablescompile_binary_cc_bincompcompile_builtins_cc_builtinscc_must_have_builtinswamwam ?truecc_must_have_builtinscc wam.hc_chunk_filecc_builtins_ bin_builtin?cc_bincomp??fail? ?cc_must_have_builtinscc_builtins_ ?truecc_bincompbinbin ?? fail?portray_clausecc_bincompasmasm cnlportray_clause?cnlfail? BINARY: ?writecc_bincomp_ cc_compile_clause??gg_emit??$bin_cut?? ?newpredcc_bincomp_ failing_to_compile_clause? ?errmesbin_builtin:-:-??true?$bin_cut??cutpbin_builtin_ bu_body???? ? ?bubu_bodyin_headin_head ?:-??true? arg???? ? ?functorbu_bodyin_bodyin_body ?:-??truecc_compile_clause_ ?.??.??.?[]cc_clausefirstarg_1?J0classif_firstclassif_first_ ?B?? ? ?/?0 ?trueclassif_first_ ?B?? ? ?/_0 ?trueclassif_first_ ?/??functorcc_clause_.??.?[]iifirstarg?? ?iiclause?? ?. ?[] iiexecute? ? ? :-?? firstarg??cc_h_b?4??4?getput?max ? ??+?1?vars??functor?dict?fill_info??collapse_args?1?allocate_regs?4?4??3-4?[]3/??3-4?>?3/? ?3/? ?3/ ? ?  ?add_truecc_h_b_/ ? ?/ ? ? / ? ? -4 ??3 /? ? -4??3/?? cc_b?4?4?4?$bin_cut??3/ ? ?3-4??3/??3-4?[]3/? ?  ?cc_hbegin_chunk _ ? iic_chunk>?4??3len? hidden_var4 ? ???3 +?? ?  ?emitend_chunk _ ? iic_chunk>?4??3len? hidden_var4 ? ???3 +?? ?  ?emitemit_-??.??-?? ?trueget_mode_ ? ? ?-??/?? ?trueset_mode _-??/??-??/?? ?truehidden_var_ ? ? ?-??/?? ?truecc_h_cc_h0cc_b _ end_chunk??? ? ?cc_b0cc_h0 _/?? $bin_cut? functor???arg???emit4?? ? begin_chunk ???3iibuiltin??? in_head  ?bucc_h0 _/?? greater?0 $bin_cut? functor ??? emit_head_top_term?? ???? ? ?functorcc_h0_ ? ? ? unexpected_head_atom ?errmesemit_head_top_term_ ? ? ? cc_top_arg11 ? ? ? ?begin_chunk ? ?emit_top_args2? ? ? ? ?cc_top_arg2? ? ? ??? 1 1  ?  ?  ?  ?emit_top_argscc_b0_ ?B?? true? ?cc_b0cc_b0truetrue ? ?/true0?truecc_b0 $bin_cut$bin_cut??? iiput>?4 ??3 cutarg1 cc_b0????? ? ?  ?emitcc_b0 ==???? cc_b0????? ? ?  ?cc_eqcc_b0 _ $bin_cut?cc_builtin?????? ? in_body ?bucc_b0 _/?? greater?0 $bin_cut? functor ??? emit_body_top_term?? ???? ? ?functorcc_b0_ ? ? ? unexpected_body_atom ?errmesemit_body_top_term _ ? ? ? $bin_cut? emit_top_args1? ?? ??? 1 ?  ?  ?  ?cc_top_argcc_eq _ ? ? ?B? ?B?? ?cc_eq1cc_eq_cc_eq1cc_eq1_ =?? emit4 ? ? ? emit4 ? ? ?set_modeget ? ?cc_top_t4? ? ?set_modeput ???3=??3 iiget>?4 ??3 temp03 iiput>?4 ??3 temp0 ? ?  ?  ?cc_top_tout_reg000 ?trueout_reg11 ? ?truecc_builtinaritharith?? ?? arg ?? ? - ?1 ?arg ???out_reg???- ?? ?functor?? ?handle_constant_res?4???emit_top_bargs1 ?????emit4??? cc_b0 ?????3iiarith>???3=??  ?  ?functorcc_builtin_ - ?1 ? arg ?? ? arg1? ? cc_b_args ? ?? ? emit4 ? ? ? cc_b0 ?? ???3 iiinline>??>? ? ?  ? ?functorhandle_constant_res00 ? ??truehandle_constant_res 11 ? ?=?? ?B ?? ? ?truehandle_constant_res 11=?? ?B ?? iiput>?4 ??3 temp0 emit4? ???3iiget>?4??3temp0 ?  ?  ?emithandle_constant_res 11=??? =?? ? ? ?cc_top_tclassif_load _ ? ?B?? ? ? ?trueclassif_load _constant ? ?B?? ? ? ?trueclassif_load _ ? =?? ? ? ?cc_top_tcc_b_args00 ? ?truecc_b_args 11 =?? emit4 ? ???3 iiput>?4 ??3 temp0 ?  ? ?cc_top_temit_top_bargs _ ???J 0? ?trueemit_top_bargs_??J 0?1J 0??J 0??J 0 emit4 ???emit_top_bargs ???????3 iiload?? ?  ?  ? ? ?  ?classif_loademit_top_bargs _??J 0??J 0??J 0? = ? ? +?1 ? emit_top_bargs ???????  ? ?  ?cc_top_temit_top_args _ ???J 0? ?trueemit_top_args_??J 0??J 0??J 0 $bin_cut? get_mode ?? ?emit4? ? ?+?1?emit_top_args???? ???3ii ??4 ? ?3 arg?  ?  ?  ?classif_argcc_top_arg _ ???J 0? ?truecc_top_arg _??J 0??J 0??J 0?1J 0? = ? ? cc_top_arg ??????? ?  ?cc_top_tcc_top_t ==?? ? ? ?B?? ? ?truecc_top_t ==?? ? ? ?B?? ? ?truecc_top_t ==?? greater?0 $bin_cut? functor ? ?? emit_top_structure? ??? ??? cc_args? ?????  ? ? ?functoremit_top_structure_ emit4 ? ? ?emit_args??? ???3 ii ?structure4 ??3 /??  ? ?  ?  ?get_modecc_arg _ ???J 0? ?truecc_arg _??J 0??J 0??J 0?1J 0? = ? ? cc_arg ??????? ?  ?cc_tcc_t ==?? ? ? ?B?? ? ?truecc_t ==?? ? ? ?B?? ? ?truecc_t ==?? greater?0 $bin_cut? functor ? ?? emit_structure? ??? ??? cc_args? ?????  ? ? ?functorcc_args _?1J 0??1J0??J 0??J 0 = ? ? cc_arg1?????? ?  ?cc_tcc_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?cc_argemit_structure_ deep_structure_op ? ? emit4 ???emit_args??????3 ii ?structure4 ??3 /??  ? ? ?  ?get_modeemit_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?emit_args0emit_args0 _ ???J 0? ?trueemit_args0_??J 0??J 0??J 0 $bin_cut? get_mode ?? ?emit4? ? ?unify_op ? ??+?1?emit_args0???? ???3ii?? ? ?  ?  ?  ?classif_argunify_opgetgetunify ?trueunify_opputput ? ? ?deep_var_opdeep_var_op_push $bin_cut??compounddeep_var_op_write ?truedeep_structure_opgetgetget ?truedeep_structure_opputputpush ?trueclassif_arg_ ?B?? ? ? ?trueclassif_arg_constant ?B?? ? ? ?trueclassif_arg_ ?truemax_??J 0? ? ? ?truemax_ ? ?trueadd_true:-:-?? ?:-???trueadd_true_:-?true ?truevars_ call?? ? truefind_occurrencesfind_occurrences[][][] ? ?truefind_occurrences ..??ii?? ??. ? ? ii?? ?? find_occurrences? ? ???  ?  ?occurrenceoccurrence_ ? ? ?B?? ?trueoccurrence _ ? ? ?var ?? ?B ?? ? ? $OCC ?? 1 ?  ?newvaroccurrence$OCC$OCC?? ? ?var???oldvaroccurrence _ ? ? at4? =occ?3=var? bad_occurrence ?errmesoldvar_/?? ? ?=???1J11??J0 ?truenewvar _,?? ? ? =?? ? ? /?? ?truefill_info_ ? 0 ?fill_alltpoint_ ??1J1 ?truefill_all[][] ? ?truefill_all ..?? fill_one??? ? fill_all?? ??? ?fill_var_typefill_var_typeiiii????var?? ? ?B?? ?get_var_typefill_var_type_ ?trueget_var_type//11unifyvoid ??trueget_var_type//11writevoid ??trueget_var_type//1?variable ??trueget_var_type//??value ???J 0?truefill_one iiii?constant??arg?? mark_arg???4???3var4?/113->?/?? ? ?  ?tpointfill_oneiiii?constant=? ? ? ?? ?tpointfill_one iiii????arg?? mark_arg?????mark_var??? ? ?  ?tpointfill_one iiii=??var?? ? ?? mark_var?4 ??3 var??tpointmark_arg getget ? -4 ? /?>?3 *?>???J1truemark_arg putput ? -4 ? />??3 *>????J1truemark_var_var??/11-??/??? ?truemark_var_var??/1?-??/??1?J 0? ?truemark_var_var??/??-??/??1?J 0? ?truemark_var_ ?var??/=?-??/=?truecollapse_args_ ???J 0?truecollapse_args _??J 0??J0 +?1? collapse_args???? ? ? ?collapse_themdefault//?? set_to99999?? 0 ?set_toset_to_ ? ??trueset_to_ ?truecollapse_them _-??*??var??-??var? ?-? ? default? default? check_lifetimes4 ?4 ?4 ??3 -? ?3 -??3 -??  ?defaultcheck_lifetimes--??-??-?? check_var_var??check_var_arg??$bin_cut??check_var_argcheck_lifetimes--??-?? $bin_cut??check_var_argcheck_lifetimes_-??-?? $bin_cut??check_var_argcheck_lifetimes_ ?truecheck_var_var//?? ?/????J 0?truecheck_var_var//?? ?/????J 0truecheck_var_arg //?? ?/????J 0??J 0trueallocate_regs[][] ? ??trueallocate_regs..?? allocate_regs???? ? ?allocate1allocate1 iiii=??var??-?? ? ? $bin_cut?? ? ?  ?allocate_regallocate1_ ? ?trueallocate_reg _/11 ?B?? free_reg???? ? ? ?get_regallocate_reg _/1? ?B?1?J 0? ? ? ?get_regallocate_reg_/??1?J 0? ? ? ?free_regfree_reg _-??/??- ? ? .?? /????J 0? ?truefree_reg_ ? ?trueget_reg _-??.??/??- ?? /??? ?trueget_reg _-??/??-??/???1J1 ?truemdef_to_def:-:-??:-?? repl_body??? ?hide_atommdef_to_def:-:-?:-? $bin_cut?call?fail? ?repl_bodyrepl_body_call? ?B?? ?truerepl_body_ $bin_cut?? ?repl_macrorepl_body_ $bin_cut?strip_nil??? ? ?split_oprepl_body_ peval_io??$bin_cut?? binprolog ?is_prologrepl_body_ $bin_cut?=?4?ttyprint4??3spying_on?3spy_goal? ?spyingrepl_body_hide_atomis_prolog_ $bin_cut?=??? is prologbb_valis_prolog_default_prologcutp_ ? .36.99.117.116[]namerepl_macro!!$bin_cut? ?cutprepl_macrovarvar? ?B? var?repl_knownrepl_macrononvarnonvar? ?B? nonvar?repl_knownrepl_macroatomicatomic? ?B? atomic?repl_knownrepl_macrofloatfloat? ?B? float?repl_knownrepl_macroatomicatomic? ?B? atomic?repl_knownrepl_macro,,?? ? ? ? ?repl_conjrepl_macro;;?? ? ? ? ?repl_disjrepl_macro->->??->?? repl_body??? ?repl_bodyrepl_macrocomparecompare??? ?compare0???truerepl_macro====?? ?compare0??=truerepl_macro@<@<?? ?compare0??<truerepl_macro@>@>?? ?compare0??>truerepl_macro:=::=:?? ?lval???repl_lvalrepl_macro##? ?dcg_connect?truerepl_macro::?? ?module_call??truerepl_macrofindallfindall???findall???repl_bodyrepl_macrobagofbagof???bagof???repl_bodyrepl_macrosetofsetof???setof???repl_bodyrepl_macroallall???setof???repl_bodyrepl_macro^^??^??repl_bodyrepl_macrocallcall?repl_bodyrepl_macro\+\+?\+?repl_bodyrepl_macronotnot?not?repl_bodyrepl_conj _ ?B? $bin_cut?repl_body??app_body???? ?split_oprepl_conj_,?? repl_body??? ?repl_bodyrepl_disj _if??? ?B ? ? ? ->? ?? repl_body ??repl_body??? ?repl_bodyrepl_disj_or?? repl_body??? ?repl_bodyrepl_lval##?? ? ? ??truerepl_lval_ ? ? ?truerepl_known_true $bin_cut??callrepl_known_fail ?truesplit_opisis?? ? ? ? ?split_is_relsplit_op <<?? ? ? less ? ?split_relsplit_op >>?? ? ? greater ? ?split_relsplit_op =<=<?? ? ? less_eq ? ?split_relsplit_op >=>=?? ? ? greater_eq ? ?split_relsplit_op =:==:=?? ? ? arith_eq ? ?split_relsplit_op =\==\=?? ? ? arith_dif ? ?split_relsplit_is_rel_.?[]expr?? ?B?? ?truesplit_is_rel_.?[]+?0? ?B?? ?truesplit_is_rel_.?[]+?0? $bin_cut?? ? ?floatsplit_is_rel _.?[]+?0? ground?$bin_cut?expr??? binprolog ?is_prologsplit_is_rel_ ? []split_isapp_body[][] ? ??trueapp_body..??,??app_bodystrip_nil..?[] ? ??truestrip_nil..??,??strip_nilsplit_rel_ ? []split_rel_1split_rel_1_ split_is ?? ? ? =.. ?4 ?emit_is ? ???3 .? .? . ?[] ?  ? ?split_issplit_is_ ? ?B?? ? ? ?truesplit_is_ ? ?B?? ? ? ?truesplit_is _ ? $bin_cut?=??? ? ?floatsplit_is_ .? . ? . ?[] $bin_cut? split_is ? ?? ? split_is ? ? ? ? =.. ?4?emit_is ? ???3.?. ? . ? .?[] ? ?  ?=..split_is_ .? . ?[] split_is ? ?? ? =.. ?4 ?emit_is ? ???3 .?. ? .?[] ? ?  ?=..emit_is_.?? ?truedef_to_mbin:-:-?? ? ?? ? ?def_to_mbin0def_to_mbin_ ? ? true ?def_to_mbin0def_to_mbin0 @@@@??:-?? ?B?? add_upper_cont????? ?termcatdef_to_mbin0_:-?? add_cont???? ?termcatadd_upper_cont _ ?B?? add_cont???? ? ? ?add_contadd_upper_cont _ ,4??3strip_cont??? ? ? ?add_contadd_cont,,true??add_contadd_cont,,fail? ?fail??trueadd_cont,,??? term_append?4???3cont? ?add_contadd_cont_? cont??J01 ?truetermcat_? cont??J01 ?trueshow_code _ show_code0?? length? ? write4 ? cnl nth_member?? ? show_instr ?? fail?3 BRUT WAM-ASSEMBLER:4 ? =length ?3 =mode? ? ? ?findallshow_code _B? POST TERM-COMPRESSION CODE:=mode? cnlmc_all_instr??nth_member??? show_instr??fail? ? ?writeshow_code_B? FINAL CODE:=mode? cnlgen_code??fail? ? ?writeshow_code_ ?B?trueshow_code0_ ? member??show_or_skip?? ? ?membershow_or_skipiiiigetvariable??var??-??arg? ??B?trueshow_or_skipiiiiputvalue??var??-??arg? ??B?trueshow_or_skip_ ?trueshow_instr _ ? ?ii???? .?[] write  write?write_write?write show_fun?show_info?cnl?  ?writeshow_funputput ??trueshow_fungetget ??trueshow_fun_writeshow_info_ ? ?var??-??? write4?put9put9put9write% write??3var?  ?writeshow_info_ write??  ?writeshow_steps asmasm ,cnl,4?,4?,cnl,4? ,cnlfail3portray_clause?3writeEXPANDED:3\==?? ,4?,cnl,4?,cnlfail3portray_clause?3writeDEFINITE: ?orshow_steps_ ?truebind_c_chunk_lengthwamwam ? ??truebind_c_chunk_lengthmemmem ? ??truebind_c_chunk_length _ ? ? ? ? ? 0 []bind_lengthbind_length [][] ? ?truebind_length..? ? ? ? ? ? ? ?  ?  ?  ?  ? ? ?make_anti_callmake_anti_call iiii ? ? ? ? ?c_chunk_variable? ii ?4 ? ?3 len? =?? bind_length???????  ?  ?Cmake_anti_call iiii ? ? ? ? ?c_chunk_value? ii ?4 ? ?3 len? -??? bind_length?>?0???  ?  ?Cmake_anti_call_ ?B ? ? ? ii ? ? ? $bin_cut?-???C?4??C???bind_length4?>?0???3.4??3iic_chunk_variable>?03iic_chunk_value4?03len?  ?  ?  ?  ?antigenicmake_anti_call _ ? ??1J 0 bind_length??? ????  ?  ?Cgen_code _ bind_c_chunk_length???member??write_instr???=?no$bin_cut?fail? ? ? ?mc_all_instrgen_code_ ?truemaxarity256256 ?truetemparg_ ? ?truegen_instr iiii???? ? $bin_cut?? ? ?beautifywrite_instr iiii?? ? ? $bin_cut? =?yes? ? ? ?  ?encodewrite_instr_no ?truemc_all_instr_ ? ? mc_one_instr?? ?findallmc_one_instr _ ? mc_peephole??instr_cat??? ? ?memberinstr_cat iiii???? ?ii ?????J 1truebeautifyargarg??encode_argbeautify temptemp?? encode_arg ??????  ? ?tempargbeautifycutargcutarg??encode_argbeautify _ ? ? ?var ? ? -? ?? ?encode2beautify putputwriteconstant ? $bin_cut?encode2pushcut????cutpbeautify _ ? ? ? ?encode2encode_arg _getvariableempty_opvar? ?-??? ?trueencode_arg _putvalueempty_opvar? ?-??? ?trueencode_arg _ ? ? ?var ? ? -? ?? ?encode2encode_arg 11constant ? $bin_cut? encode2?cut???? ?cutpencode_arg _ ? ?constant ? constant ?encode2encode2_ii???? ?truemc_peephole_mc_topmc_input_mc_input0mc_input0 _.?? mc_empty????? ? ?gen_instrmc_emptyempty_opempty_op ? ? ? ??mc_input0mc_empty_ ? ? ?truemc_top_ ? mc0???? ? ?mc_inputmc0 _ mc1?????? ? ? ? ?op_typemc1 pushpushvariable ? ? $bin_cut? mc5???? ?mc_pushmc1 c_chunkc_chunkvariable ? ?? mc5???? ?mc_chunkmc1 _void ?? mc3????? 1 ?mc_selmc1_ ? ? ? ?mc5mc_push _ ? ? op_type?pushstructure mc_transform_push?? ? $bin_cut? =? ?? ? ?  ?mc_inputmc_push_ ? ? ?truemc_chunk _ ? op_type?c_chunkvalue $bin_cut? mc_input???? ? ?mc_inputmc_chunk_ ? ? ?truemc_sel _ ? op_type?>?void $bin_cut? +?1 ? mc_sel?? ??? ? ?mc_inputmc_sel_ ? ? ?truemc3_ ? ? ?mc4mc3 _ ? mc0???? ? ?mc_inputmc4_ $bin_cut?? ?mc_transform_voidmc411 ? ?truemc5_ ? ?truemc5 _ ? mc0???? ? ? ?mc_inputop_typeiiii??=? ?? ? ? ? ?trueop_type_ ? ? expected/ii4 ?errmesmc_transform_void11 ?iiunifyvoid??iiunifyvariable???truemc_transform_void _ii?void??ii?void?? ?truemc_transform_pushiiiipushvariable?? ?iipushstructure??iipushconstant??trueencode unify_variableunify_variableget ? ? 1 ? 0wcodeencode write_variablewrite_variableput ? ? 2 ? 0wcodeencode unify_valueunify_valueget ? ? 3 ? 0wcodeencode write_valuewrite_valueput ? ? 4 ? 0wcodeencode unify_constantunify_constantget ? ? ? 5 0  ? 0wcodeencode write_constantwrite_constantput ? ? ? 6 0  ? 0wcodeencode push_constantpush_constant ? ?/?? 6wcodeencode get_constantget_constant ? ? ? 7  ? 0wcodeencode get_structureget_structure ? ?/?? 8wcodeencode put_constantput_constant ? ? ? 9  ? 0wcodeencode put_structureput_structure ? ?/?? 10wcodeencode get_variableget_variable ? ? ? ? 11  ? ?  ?wcodeencode put_valueput_value ? ? ? 11 ?  ?wcodeencode put_variableput_variable ? ? ? ? 12  ? ?  ?wcodeencode get_valueget_value ? ? ? ? 13  ? ?  ?wcodeencode push_cutpush_cut?? ? ? 14 0 ? 0wcodeencode put_cutput_cut?? ? ? 15 0 ? 0wcodeencode get_cutget_cut?? ? ? 16 0 ? 0wcodeencode execute_?execute_? ? ? ? ? 17 0  ?  ?wcodeencode load_constantload_constant ? ? ? ? 28  ?  ? 0wcodeencode load_variableload_variable ? ? ? ? 50  ? ?  ?wcodeencode load_valueload_value ? ? ? ? 29  ? ?  ?wcodeencode push_structurepush_structure ? ?/?? 51wcodeencode push_variablepush_variableput ? ? 52 ? 0wcodeencode unify_voidunify_void ? ? 61 ? 0wcodeencode write_voidwrite_void ? ? 62 ? 0wcodeencode c_chunk_variablec_chunk_variable ? ? ? 63 ?  ?write_or_skipencode c_chunk_valuec_chunk_value ? ? ? 64 ?  ?write_or_skipencode clause_?clause_? +?1 ? wcode?? ?0??? ?n_nopencode firstarg_?firstarg_?/? ? +?2 ? wcode?? ??? ??  ?n_nopencode end_?end_? ? ? ? ? 0  ?  ? 0wcodeencode inline_variableinline_variable wcode??????? ?n_inlineencode arith_variablearith_variable wcode????0?? ?n_arithencode arith_valuearith_value wcode????1?? ?n_arithencode builtin_?builtin_? wcode??????? ?n_builtinencode_op_ ?op + ?3 ? make_cmd4 ? ? wcode?? ?0 ?0?3 .? .4 ? .? .4 ? .?[]3 .32[]3 .32[]  ? ?n_nopn_inline_ bu_ctrn_inline? ?metacalln_arith_ bu_ctrn_arith? ?metacalln_builtin_ bu_ctrn_builtin? ?metacalln_nop_ bu_ctrn_nop? ?metacallbu_ bu0??? ? ?metacallwrite_or_skip wamwam ??truewrite_or_skip memmem ??truewrite_or_skip_len ? greater_eq ? ? less ? ? $bin_cut? write_or_skip0????? ??  ?  ?  ?c_thresholdwrite_or_skip _ ?truewrite_or_skip0 wamwam $bin_cut? wcodewam?????? c_flag begin_end yes  ?bb_valwrite_or_skip0 cc ? ? ? ? ?? 0wspec_cwrite_or_skip0asmasm? bb_valc_flagbegin_endyes = ?c = ?n wcodeasm?4 ?????3 +? ?  ?  ?  ?ifwrite_or_skip0 _ ?truewcode memmem ?????J #0truewcode wamwam ??J 0?J 0?J 0 put0?writewcode cc ? ? ? ? ? ?wcode_cwcode asmasm ? ? ? ? ? ?wcode_asmwcode_asm _ .? .? .? .?[] write? write--> put9 put9 write? cnl? ?=..let_c_chunk_file_ ? ? c_chunk file_namebb_letc_chunk_file_ ? ? c_chunk file_namebb_valnewpredcc? ? ?:-?? ?newpred0newpred_ ?truenewpred0 _ bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0? ?functornewpred0_ bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0? ?functorcurrpred --??/??/?? bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset?? predicate namebb_valcompile_mem _ ?mem compiling4??...3to? ctime?survive_cleanup?? mcomp_file?? maincomp?4 ? terminate_file?$end11$bin_cut?ctime? -???quietmes4??3compile_time?3 current_user_file? ? ?quietmescompile_mem_ restart? compilation aborted ?ttyprintsurvive_cleanup_ restartcall_ifdefinit_iotruename??init_cmd? ?namemcomp_file_ .?.>?[] statisticsstrings4? statisticssymbols4 ? statisticshtable4 ? translate_all?? statisticscode4 ? - ??? statisticsstrings4 ?-???statisticssymbols4?-???statisticshtable4?-???+???+???+???quietmes4??3bytes_used4?4?4?4?total?3code?3strings?3symbols?3htable?3.?.>?[]3.?.>?[]3 .?.>?[]3 . ? .>?[]3 .?.>?[]3 .?.>?[]3.?.>?[] code ? ?statisticscompile0_.??? .??compile1compile0_ .?[] ?compile1compile1 _? ctime?xcompile???ctime? -???write4? cnl?3total_compile_time? ?init_cmdxcompile _ decorate_fileheader?compile_builtins?member??quietmes4? ctime ? comp_file?? ctime ? - ? ? ? quietmes4 ? fail?3 compile_time ?3compiling4??...3to? ? ?tellxcompile_ decorate_filefooter?fail? $end0 0 ?terminate_filexcompile_ ?tolddecorate_file_c ??c_decorate_filedecorate_file_ ?trueterminate_file _ gg_emit?4?close_c_chunk_file??3.4?[]3.4?[]3iiend??? ?make_dummy_endmake_dummy_endcc $bin_cut?? wam.hc_chunk_filemake_dummy_end_maincompclose_c_chunk_filecc? toldwrite_c_chunkclose_c_chunk_file_ ?truegg_emitmemmem memgen_codegg_emitwamwam wamgen_codegg_emitcc cgen_codegg_emitasmasm asmshow_codecomp_file_ .wam.asm.bin.c[] $bin_cut?translate_all??? ? ?membertranslate_all_translate_all0memoing_translate_all _ ?wam \+4?memoable_file???$bin_cut?if4?true4 ? include_memoed_file??3\+older_file??3 make_memo_file???3current_moduleprolog binprolog ?is_prologmemoing_translate_all_translate_all0memoable_file_ ? ?.??.??.?[] append ?? ? $bin_cut? =?4? name? ? append ?4 ? ? name? ??3 .? ?3.46.112.108[] ?  ? ?namemake_memo_file _ ?wam1J)0 translate_all0??toldtell?? ? ?tellinclude_memoed_file_0J)0 repeatget0?put_to_eof?$bin_cut?seensee?? ?seeput_to_eof-1-1 ??trueput_to_eof_?J0B? ?truetranslate_all0 _0J)0 repeatread_clause?translate??$bin_cut?seensee?? ?seetranslateend_of_fileend_of_file ??truetranslate:-:-?? fail? ?translate_cmdtranslate::-::-?? ?? :-?? fail? ?compile_binarytranslate_ $bin_cut?translate_cmd4??fail?3assert? ?is_dynamic_clausetranslate_ ? ? fail? ? ?maincompis_dynamic_clause:-:-???is_dynamicis_dynamic_clause_is_dynamicmaincomp _ show_steps??? compile_binary??? ? ? ?preprocesstranslate_cmd..?[]?include_filetranslate_cmdcompilecompile??include_filetranslate_cmdensure_loadedensure_loaded??include_filetranslate_cmdconsultconsult??include_filetranslate_cmdreconsultreconsult??include_filetranslate_cmddynamicdynamic? ??dynamictranslate_cmdinteractiveinteractive? ??interactivetranslate_cmdspyspy? ??spytranslate_cmd opop???? if4?4 ?true?3member?.wam.c[]3 encode_op???? ? ?optranslate_cmd_exec_cmdexec_cmd_ maincomp??fail? ?cmd2clausecmd_root$run_time_command$run_time_command ?trueinit_cmd_ get_cmd_no?? ?cmd_rootget_cmd_no_ ? bb_setgensym?0$bin_cut?? gensym ? ?bb_valget_cmd_no_ ?truecmd2clause _:-?? gensym??quietmes% !!! action delayed after compilation, for command:quietmes4?if4?truetrue?3public/?03:-? ?cmd_rootexec_run_time_commands_ exec_run_time_commands0?fail? ?cmd_rootexec_run_time_commands_trueexec_run_time_commands0 _ ?10000 symcat???if4?4?true $bin_cut??3is_compiled?3,4?fail3call? 1forinclude_file _0J)0 quietmes4?memoing_translate_all?? seeing_telling0 ? quietmes4 ??3 end4 ? in ?3 including?3begin4? in?3including? ? ?find_filepreprocess _ fact2rule?? mdef_to_def?? def_to_mbin??? ? ?std_expand_termfact2rule:-:-? ?:-??truefact2rule:-:-?? ?:-???truefact2rule_:-?true ?truemake_cmd_ name??? ?make_cmd0make_cmd0_ ? ? char_in_cmd?? ? ?findallchar_in_cmd _ listify??member??? ? ?memberlistify..?? ?.???truelistify_namemake_appl_ ? .?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[] wam newappl.bpcompile0make_executable_unix_appl_ make_cmd4?? system??3.4?.4? .4 ? .? .4 ? .4 ? .? .4 ? .?[]3 .32 .59 .32 .99 .104 .109 .111 .100 .32 .43 .120 .32[]3 .32 .59 .32 .99 .97 .116 .32 .110 .101 .119 .97 .112 .112 .108 .46 .98 .112 .41 .32 .62 .32[]3 .32 .36 .48 .39[]3 .59 .32 .101 .99 .104 .111 .32 .39 .101 .120 .101 .99 .32[]3.59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[]3.40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[] ? ?make_applcparser_ ? is prolog bin_prolog_with_cparserbb_defkmake_ makewam? ?cparserkcmake_ cmakewam? ?cparsertmake_ ? 12 60tmaketmake_ ? 10000tmaketmake_ cmake? ?set_c_thresholdcmake_ ? wamcmakecmake_ ? usercmakecmake_ ? c .cmakemake_ ? wammakemake_ ? usermakemake_ ? wam .bpmakemake _ ? ? ? ?makemake _ module? if4 ?true4 ? module ??3 make0????3 \+ errmesunable_to_make .4 ? .4 ? .4 ?[]3 in_module?3 project??3 mode?  ? ?current_modulemake0 _ find_file?? make_cmd4 ? ? make_include?? compile0?? ? ctime ?- ? ?? write4 ? cnl?3 =? time?3 .? .?[]  ? ?ctimemake_includecc? .?.4?[]3.46.104[] let_c_chunk_file?? ?make_cmdmake_include_ ?trueasm_ ? asm usercomp_fileasm_ ? user asm .asm BinWAM intermediate codemakeboot_ ? wam prologmakeuboot_ ? wam usermakels_ ? ls -tFsystemdir_ ? dirsystemedit _ make_cmd4??system?compile??3.?.4?.?[]3.32[] ? ? ?find_fileget_editor_ unix_getenvEDITOR? unix_getenvVISUAL? $bin_cut?? ? ?orget_editor_ ? ?truemy_edit_ current_user_file? edit??? ? failcall_ifdefmy_defedit_ current_user_file? defedit??? ? failcall_ifdefdefedit_ edit??? ? ?get_editored_ ? emacsmy_defeditedit_ ? editmy_defedittextedit_ ? texteditmy_editemacs_ ? emacsmy_editnotepad_ ? notepadmy_editpico_ ? picomy_editvi_ ? vimy_editco_ current_user_file? compile?? ? failcall_ifdefs_statisticsc_rootxxxx ?trueset_c_threshold_ ? 100000set_c_thresholdset_c_threshold_ ? bb_letc_flagc_threshold_max?? c_flag c_threshold_min ?bb_letset_c_trace_ ? ? c_flag tracebb_letc_threshold_ ? bb_valc_flagc_threshold_max?$bin_cut?? c_flag c_threshold_min ?bb_valc_threshold110 $bin_cut?? wam.hc_chunk_filec_threshold55500 ?truewcode_c_make_ccodemake_ccode _ $bin_cut? make_hcode ??  ?c_instrmake_ccode_make_bcodemake_hcode_ ? wchunk?? 2 ?c_tracemake_bcode _ ? {B? ?B? ,B? ?B? ,B? ?B? ,"B? cwrite?cwrite"},cnl?patch_specialsmake_comment _ -4?/??3/?? = ?4 ? make_cmd04 ???3 . ? .4 ? .?.4? .?.4? .?.4? .?.4?[]3.93.32.42.47[]3.32.47.32[]3.32.91[]3.32.47.32[]3 .32 .47 .42 .32[]3 .10[] ?  ?currpredwspec_c _ $bin_cut?make_comment? write_c_chunk4 ? wchunk ? lwrite? c_trace1 ? cwrite { write? cwrite, cwrite? cwrite, cwrite? cwrite,(void *) write? cwrite}, cnl?3 ,4 ?nl3 lwrite?  ?c_specwspec_c _ $bin_cut? c_trace1 ? wchunk ??  ?c_spec_endlwrite_ ? put?fail? ?memberlwrite_ ?truepatch_specials_ ?B?? ? ? ?truepatch_specials _ =?92=?34findall?4 ? ? name? ??3 ,4 ? patch_it ????3 member ?? ?namepatch_it_ ? ?? =?? =?? ?orpatch_it_ ? ?? =?? =?? ?orpatch_it_ ? ?truewrite_c_chunk_? seeing_telling1?tell?call?tell?? ? ?c_chunk_filewchunk_ ,4?nl3fast_write? ?write_c_chunkc_decorate_file_ $bin_cut?c_decorate_file0?wam_bp? wam.h ?c_chunk_filec_decorate_file_ ? user_bpc_decorate_file0c_decorate_file0headerheader? init_gensym?wchunk/* do not edit: generated by co.pl */write#include "../src/global.h"cnlwrite#include "../src/c_defs.h"cnlc_chunk_file?write#include "write?write"cnlcnlwritestruct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} write?write[] = {cnl? ?c_rootc_decorate_file0footerfooter write?write"}};cnlcnlwritelong write?write_size=sizeof(write?write);cnl? {255,0,0," ?writec_check_ ? ?c_check0c_check0_ ? integer?? c_chunk inbb_valnew_offset_ ? +?1?bb_setpredicateoffset?? predicate offsetbb_valget_offset_ ? ? predicate offsetbb_valc_find_fun_ ? ?B?? integer? unexpectederrmesc_find_fun _ bb_valfun_symbol?? bb_valfun_arity?? $bin_cut? =??? ? 0 ?forc_find_fun _?1J1 bb_letfun_symbol??bb_letfun_arity??make_bcodewrite_constant60??? c_chunk in ? ?bb_setc_chunk_begin_ c_root?gensym??? c_chunk in -1bb_letc_chunk_end_ ? c_chunk in nobb_letnewP _ integer?c_find_fun????? c_chunk in ? ?bb_valnewH_oldP_ new_offset?? ?c_checkoldH_oldP_ get_offset?? ?c_checknewH_newP_ new_offset?? ?newPoldH_newP_ get_offset?? ?newPc_wvoid_ or4?true?3,4?,4?fail3new_offset>?3for>?2? ? ?newH_oldPc_aux_load_integer_load_integer?? ?B?? ?c_checkc_aux_load_integer_load_constant?? ? ? ? ?newPc_aux_put_integer_put_integer?? ?B?? ?c_checkc_aux_put_integer_put_constant?? ? ? ? ?newPc_aux_get_integer_get_integer?? ?B?? ?c_checkc_aux_get_integer_get_constant?? ? ? ? ?newPc_aux_write_integer_ ?write_integer?? ?B?? ?newH_oldPc_aux_write_integer_ ?write_constant??newH_newPc_aux_unify_integer_ ?unify_integer?? ?B?? ?oldH_oldPc_aux_unify_integer_ ?unify_constant??oldH_newPc_trace _ greater_eq??$bin_cut?write_c_chunk4??3,4?,4? ,4 ?nl3 write ")3write?3writec_trace(" c_flag trace ?bb_valc_trace_ ?truec_specc_chunk_variablec_chunk_variable ? ?c_chunk_variable?c_chunk_beginc_skip22 ?truec_spec_endc_chunk_valuec_chunk_valuec_chunk_value ? ? c_check0 ? + ?? ? c_chunk_end get_offset ? make_bcodec_chunk_value?0? ??  ?c_skipc_instr put_structureput_structure ? ? ?put_structure? ??  ?newH_newPc_instr put_constantput_constant ? ? ? ? ?c_aux_put_integerc_instr push_variablepush_variablepush_variable() defoffset???newH_oldPc_instr push_structurepush_structure ? ?push_structure? ? ? valoffset? ? rmoffset??  ?newH_newPc_instr write_valuewrite_value ?write_value??newH_oldPc_instr write_variablewrite_variable ?write_variable??newH_oldPc_instr write_constantwrite_constant ? ? ? ?c_aux_write_integerc_instr push_constantpush_constant ? ? ? ?c_aux_write_integerc_instr get_variableget_variable ?move_reg??c_checkc_instr put_valueput_value ?move_reg??c_checkc_instr put_variableput_variable ?put_variable???newH_oldPc_instr write_voidwrite_void ? ?write_void??c_wvoidc_instr push_cutpush_cut ?push_cut?newH_oldPc_instr put_cutput_cutput_cut() ?c_checkc_instr get_cutget_cutget_cut() ?c_checkc_instr load_constantload_constant ? ? ? ? ?c_aux_load_integerc_instr load_variableload_variable ?load_variable???newH_oldPc_instr load_valueload_value ?load_value??c_checkc_instr get_valueget_value ?get_value??c_checkc_instr get_constantget_constant ? ? ? ? ?c_aux_get_integerc_instr get_structureget_structure ? ? ?get_structure? ??  ?oldH_newPc_instr unify_variableunify_variable ?unify_variable??oldH_oldPc_instr unify_valueunify_value ?unify_value??oldH_oldPc_instr unify_constantunify_constant ? ? ? ?c_aux_unify_integerc_instr unify_voidunify_void ?unify_void??oldH_oldPc_instr inline_variableinline_variable c_check_iv???c_checkc_instr arith_variablearith_variable ? ? c_opcode????c_check_avc_instr arith_valuearith_value ? ? c_opcode????c_check_avc_check_av00arith_op+???? ?oldH_oldPc_check_av11arith_op-???? ?oldH_oldPc_check_av22arith_op*???? ?oldH_oldPc_check_av33arith_op%???? ?oldH_oldPc_check_av44 ?div_3???truec_check_av55fdiv_3???? ?oldH_oldPc_check_av66 ?random_1??truec_check_av77 ?get0_1??truec_check_av88put0_1() ?truec_check_av99 ?rel_op<?truec_check_av1010 ?rel_op>?truec_check_av1111 ?rel_op<=?truec_check_av1212 ?rel_op>=?truec_check_av1313 ?rel_op==?truec_check_av1414 ?rel_op!=?truec_check_av1515 ?int_only_op<<??truec_check_av1616 ?int_only_op>>??truec_check_av1717 ?int_only_op&??truec_check_av1818 ?int_only_op|??truec_check_av1919 ?int_only_op^??truec_check_av2020 ?l_neg_3??truec_check_av2121 ?compare0_3??truec_check_av2222 ?arg_3??truec_check_av2323setarg_3() ?truec_check_av2424change_arg_3() ?truec_check_av2525def_3() ?truec_check_av2626rm_2() ?truec_check_av2727set_3() ?truec_check_av2828 ?val_3??truec_check_av2929 ?lval_3??truec_check_av3030 ?symcat_3??trueantigenicarith_variablearith_variable ??30J 0trueantigenicarith_valuearith_value ??30J 0trueantigenicbuiltin_?builtin_? ??0J 0truec_opcode_ +???? ?c_checkc_check_iv00fail_0() ?truec_check_iv11cwrite_1() ?truec_check_iv22cnl_1() ?truec_check_iv33var_1() ?truec_check_iv44nonvar_1() ?truec_check_iv55integer_1() ?truec_check_iv66atomic_1() ?truec_check_iv77is_compiled_1() ?true$end0_truewamBinProlog3.45/library/ 40755 764 764 0 5764563210 13655 5ustar javierjavierBinProlog3.45/library/stacks.pl100644 764 764 2042 5627623306 15576 0ustar javierjavier/* new stack package, working fine with bb_gc */ bb_def_stack(Stack):-bb_def(Stack,'$top',0). bb_push(Stack,Ob):- val(Stack,'$top',I),!, I1 is I+1, bb_def(Stack,I1,Ob), bb_set(Stack,'$top',I1). bb_push(Stack,_):- errmes('undefined stack',Stack). bb_pop(Stack,Ob):- bb_val(Stack,'$top',I), bb_val(Stack,I,Ob), I>0,I1 is I-1,!, bb_rm(Stack,I), bb_set(Stack,'$top',I1). bb_pop(Stack,_):- errmes('stack underflow',stack(Stack)). bb_stack(Stack,List):- val(Stack,'$top',Top), findall(X,bb_stack_member(Stack,Top,X),List). bb_stack_member(Stack,Max,Elem):- for(I,1,Max), val(Stack,I,Elem). bb_stack_rm(Stack):- val(Stack,'$top',Top),bb_rm(Stack,'$top'), for(I,1,Top), bb_rm(Stack,I), fail. bb_stack_rm(_). /* old stacks: for compatibility only */ push(Type,S,X):-val(Type,S,Xs),!,bb_set(Type,S,[X|Xs]). push(Type,S,X):-bb_def(Type,S,[X]). pop(Type,S,X):-val(Type,S,[A|Xs]),set(Type,S,Xs),copy_term(A,X). stack(Type,S,Xs):-val(Type,S,Xs). push(S,X):-push('$stack',S,X). pop(S,X):-pop('$stack',S,X). stack(S,X):-stack('$stack',S,X). BinProlog3.45/library/high.pl100644 764 764 11366 5742240543 15252 0ustar javierjavier go:-foldl(+,0,[1,2,3],R),write(R),nl. % fold,foldl based on safe failure driven destructive change_arg foldl(Closure,Null,List,Final):-fold(Closure,Null,X^member(X,List),Final). fold(Closure,Null,I^Generator,Final):- fold0(s(Null),I,Generator,Closure,Final). fold0(Acc,I,Generator,Closure,_):- term_append(Closure,args(SoFar,I,O),Selector), Generator, arg(1,Acc,SoFar), Selector, change_arg(1,Acc,O), fail. fold0(Acc,_,_,_,Final):- arg(1,Acc,Final). % new version of bestof best_of(X^Generator,TotalOrder,Bottom,Result):- term_append(TotalOrder,args(X,Y),Test), fold(compare_closure(Y,Test),Bottom,X^Generator,Result). % map with updates on place map(Closure,Xs):- term_append(Closure,args(I,O),Goal), update_on_place(Xs,I,O,Goal), fail. map(_,_). update_on_place(Xs,I,O,Goal):- Xs=[I|_], Goal, change_arg(1,Xs,O). update_on_place([_|Xs],I,O,Goal):- update_on_place(Xs,I,O,Goal). % gives the illusion of a parallel engine % works only with goals generating a finite stream of solutions test_engine:- open_engine(X,(X=1;X=2;X=3),E), ask_engine(E,A), ask_engine(E,B), close_engine(E), ask_engine(E,C), ask_engine(E,D), write([A,B,C,D]),nl. open_engine(X,G,'$answers'(Gs)):-findall(X,G,Gs). ask_engine('$answers'([]),X):-!,X='$empty'. ask_engine(E,'$answer'(X)):-E='$answers'([X|Xs]),setarg(1,E,Xs). close_engine(Engine):-setarg(1,Engine,[]). /************************* maplist/3 ****************************/ % maps a Closure to a list and collects the results % % ex: ?-maplist(+(1),[10,20,30],Xs). % maplist(Closure,Is,Os):-maplist(Closure,Is,Os,[]). maplist(Closure,Is,Os,End):- term_append(Closure,args(I,O),Test), findall(O,member_test(Test,I,Is),Os,End). member_test(Test,I,[I|_]):-Test. member_test(Test,I,[_|Is]):-member_test(Test,I,Is). /************************* find/4 ****************************/ % combines 2 by 2 using Closure the selected answers I of Generator % accumulating in Final the overall result % % ex: ?-find(member(X,[10,20,30]),+,X,Sum). % find(Generator,Closure,I,Final):- term_append(Closure,args(SoFar,I,O),Selector), find0(SoFar,I,O,Generator,Selector,Final). find0(SoFar,I,O,Generator,Selector,_):- inc_level(find,Level), Generator, select_or_init(Selector,Level,SoFar,I,O), fail. find0(_,_,_,_,_,Final):- dec_level(find,Level), bb_val(find,Level,Final), rm(find,Level). select_or_init(Selector,Level,SoFar,_,O):- bb_val(find,Level,SoFar),!, Selector, bb_set(find,Level,O). select_or_init(_,Level,_,I,_):- bb_def(find,Level,I). % ensure correct implementation of embedded calls to find/4 inc_level(Obj,X1):-bb_val(Obj,Obj,X),!,X1 is X+1,bb_set(Obj,Obj,X1). inc_level(Obj,1):-bb_def(Obj,Obj,1). dec_level(Obj,X):-bb_val(Obj,Obj,X),X>0,X1 is X-1,bb_set(Obj,Obj,X1). /************************* scan/3 ****************************/ % Scans a list accumulating the results of applyng Closure on % the elements of the list % % ex: ?-scan(+,[10,20,30],Sum). % scan(Closure,List,Result):-find(member(X,List),Closure,X,Result). % X is the best answer of G with respect to TotalOrder (a closure) % % ex: ?-bestof(X,>,member(X,[3,2,9,1,5,4]). % bestof(X,TotalOrder,Generator):- term_append(TotalOrder,args(X,Y),Test), find(Generator,compare_closure(Y,Test),X,X). compare_closure(Y,Test,Y,X,R):-Test,!,R=X. compare_closure(_,_,Y,_,Y). :-op(602,xfx,(..)). :-op(602,xf,(...)). :-op(700,xfx,(<-)). :-op(750,xfy,(#=)). :-op(750,xfy,(#<)). :-op(750,xfy,(#>)). % TOWARDS AN ALGEBRA OF (FINITE AND INFINITE) STREAMS % basic infinite streams % natural numbers starting with N: i,o nat(N,N). nat(N,R):-N1 is N+1,nat(N1,R). % arithmetic progression: i,i,o arith_prog(X0,Ratio,X):-nat(0,I),X is Ratio*I+X0. % constant stream = N: i,o const(N,N). const(N,R):-const(N,R). % finite infix selectors interval(Min,Max,X):-N is Max-Min,take_at_most(N,nat(Min,X)). finite_arith_prog(Min,Ratio,Max,X):-while(X=N1,XX=1;X=0),I,J,X,M). % M is the 0 square matrix of dim N zero(N,M):-newm(N,N,X=0,_,_,X,M). % KM is K times M, where K is a scalar times(K,M,KM):- dim(M,MaxI,MaxJ), newm(MaxI,MaxJ,(aref(M,I,J,X),KX is K*X),I,J,KX,KM). print_matrix(M):- argn(_I,M,MI), % non-deterministic arg/3 nl,argn(_J,MI,X), write(X),write(' '), fail ; nl. list2vector(Name,Xs,V) :- V=..[Name|Xs]. list2matrix(Xss,M):- findall(V,(member(Xs,Xss),list2vector(v,Xs,V)),Vs), list2vector(m,Vs,M). % boolean matrix operations with 1=true, 0=false bool_or(M1,M2,R):-sum_like(max,M1,M2,R). bool_and(M1,M2,R):-sum_like(min,M1,M2,R). bool_prod(M1,M2,M):-prod_like(max,min,M1,M2,M). % tools for boolean operations max(X,Y,Z):-compare(R,X,Y),order(R,X,Y,_,Z). min(X,Y,Z):-compare(R,X,Y),order(R,X,Y,Z,_). order(<,X,Y,X,Y). order(=,X,Y,X,Y). order(>,X,Y,Y,X). % generic tools % combines 2 by 2 answers I of Generator, by applying Closure, % and accumulating in Final the overall result % no 0 element is needed as in Haskell because we initialize % with the first solution % if the generator is `empty' i.e if it always fails % then fold will simply fail - this make its behvior compositional fold(Closure,I^Generator,Final):- % we construct the Selector once and reuse it over and over term_append(Closure,args(SoFar,I,O),Selector), fold0(SoFar,I,O,Generator,Selector,Final). fold0(SoFar,I,O,Generator,Selector,_):- inc_level(fold,Level), Generator, select_or_init(Selector,Level,SoFar,I,O), fail. fold0(_,_,_,_,_,Final):- dec_level(fold,Level), bb_val(fold,Level,Final), rm(fold,Level). select_or_init(Selector,Level,SoFar,_,O):- val(fold,Level,SoFar),!, Selector, bb_set(fold,Level,O). select_or_init(_,Level,_,I,_):- bb_def(fold,Level,I). % ensure correct implementation of embedded calls to fold/4 inc_level(Obj,X1):-val(Obj,Obj,X),!,X1 is X+1,set(Obj,Obj,X1). inc_level(Obj,1):-def(Obj,Obj,1). dec_level(Obj,X):-val(Obj,Obj,X),X>0,X1 is X-1,set(Obj,Obj,X1). /* % test data rcons(Y,X,[X|Y]). reverse(Xs,Ys):-fold(rcons,X^(X=[];member(X,Xs)),Ys). test(1):- newm(3,3,(X is (I+J)//2),I,J,X,M),print_matrix(M), sum(M,M,R), times(10,R,RR), print_matrix(R), print_matrix(RR). test(2):-id(3,Id),newm(3,3,(X is I+J),I,J,X,M), prod(M,Id,R),prod(Id,M,RR), print_matrix(M), print_matrix(R), print_matrix(RR). test(3):- Xss=[[1,2,3], [0,4,5], [0,0,6]], list2matrix(Xss,M), transposed(M,T), prod(M,T,R), print_matrix(M), print_matrix(T), print_matrix(R). test(4):- Xss=[[0,1,0], [0,0,1], [1,0,0]], list2matrix(Xss,M), transposed(M,T), prod_like(max,min,M,M,R), print_matrix(M), print_matrix(T), print_matrix(R). test(5):- list2matrix( [[7,6,4], [8,2,9], [2,5,3]], M1), list2matrix( [[1,2,3], [4,5,6], [7,8,9]], M2), transposed(M1,T1),transposed(M2,T2), prod(M1,M2,M12), prod(T2,T1,T21), transposed(T21,T12), print_matrix(M12), print_matrix(T12). go:-test(_),fail. ex(1, [[ 0.500027, 0, -0.866010, 0], [ 0, 1, 0, 0], [ 0.866010, 0, 0.500027, 0], [ 0, 0, 0, 1]]). ex(2, [[ 1, 0, 0, 0], [ 0, 0.7071, 0.7071, 0], [ 0, -0.7071, 0.7071, 0], [ 0, 0, 0, 1]]). exm(I,M):-ex(I,Xss),list2matrix(Xss,M). go1:-exm(1,M1),exm(2,M2),prod(M1,M2,M12),print_matrix(M12),fail. */ BinProlog3.45/library/media.pl100644 764 764 2563 5735342736 15402 0ustar javierjavier% Shorthands for my Solaris 2.x system - please adapt speak(What):-speak(What,speak). play(File):-play(File,audioplay). record(File):-record(File,audiorecord). netsurf:-netsurf(mosaic,''). binpro_site:-netsurf(netscape,'ftp://clement@info.umoncton.ca/BinProlog'). to_binpro(Message):- mail( 'BinProlog', 'binprolog@info.umoncton.ca', 'from a BinProlog process', Message). % Some multi-media calls from BinProlog do(ToDo):- 'make_cmd'(ToDo,Cmd), write('DOING: '),write(Cmd),nl, system(Cmd). speak(What,Speaker):- do(['echo ',What," | ",Speaker]). play(File,Player):- do([Player,' ',File]). record(File,Recorder):- do([Recorder,' ',File]). netsurf(Surfer,StartFile):- do([Surfer,' ',StartFile]). mail(To,Subject,Message):- TempFile='message.tmp', tell(TempFile), write(Message),nl, told, do(['/usr/ucb/mail -s "',Subject,'" ',To,' < ',TempFile]), do(['rm -f ',TempFile]). mail(Name,Email,Subject,Message):- 'make_cmd'(['Dear ',Name, ', ',Message], DearMessage), mail(Email,Subject,DearMessage). % at - batch job scheduler % ?-at_test. at_test:- at('now + 5 minutes', '/bin/audioplay /usr/demo/SOUND/sounds/rooster.au'). at(Time,Action):- TempFile='at.tmp', tell(TempFile), write(Action),nl, told, do(['at -f ',TempFile,' ',Time]) ,do(['rm -f ',TempFile]) . % add here your own multi-media friends BinProlog3.45/library/lambda.pl100644 764 764 215 5721705114 15477 0ustar javierjavier% ?- lambda(X^expr(2*X+1),5,Y). % ?- lambda(X^lambda(Y^expr(sqrt(X*X+Y*Y)),3),4,R). lambda(I^FI,I,O):- term_append(FI,args(O),G), G. BinProlog3.45/library/tree.pl100644 764 764 21001 5723152373 15257 0ustar javierjavier:-module(tree, [ ppt/1 ]). /* From fornax!nntp.cs.ubc.ca!cyber2.cyberstore.ca!math.ohio-state.edu!howland.reston.ans.net!europa.eng.gtefsd.com!uunet!newsgate.watson.ibm.com!watnews.watson.ibm.com!hawnews.watson.ibm.com!syllog2!neumann Tue Dec 21 23:45:21 PST 1993 In article <1993Dec20.154218.7769@news.unige.ch> from [Mon, 20 Dec 1993 15:42:18 GMT] you wrote: |> Does anyone have code for visually representing trees? |> Something of the form showtree(root(branch1,branch2,branch3)) |> which prints |> |> root |> _____________|_____________ |> / | \ |> branch1 branch2 branch3 |> |> |> or similar. Below is a program for printing Prolog terms as trees on typewriter output devices (eg. ASCII terminals). I have posted this program here some time ago, here it comes again with some minor modifications. The program assumes no Prolog libraries and works at least under SISCtus and Quintus Prolog. I will put it later this day on ftp.wu-wien.ac.at:pub/src/Languages/Prolog/asciitree.pl A graphical version, which is much more elaborated (various tree layouts, arc-types etc) can be found in the same directory in ptd.tar.gz. It has backends for xwip and tgif as they existed in April 91. Some changes may be necessary. Please no complaints about spacing between arguments. -gustaf ========================================================================== printing Prolog terms in a tree layout for typewriter output. Written in Spring 1985 -- Gustaf Neumann (c)1991 Gustaf Neumann, Wirtschaftsuniversitaet Wien, Augasse 2-6, 1090 Vienna, Austria *222/31 336-4533. email: neumann@wu-wien.ac.at Permission is granted to use, copy and distribute this program as long (1) this note remains intact, (2) no fees are charged and (3) no further restrictions are imposed. ppt/1 ..... layouts and prints the term given as argument ppt/2 ..... second argument can be set to the atom 'arc' or 'noarc' depending on whether or not tree arcs should be printed The following predicates are not defined within this program: - length(List,Length), - tab(Exp) Do not try to print infinite trees :-) To show, what this program does, issue the goal: examples. */ :-op(100,xfy,::). examples:- example(X), ppt(X), nl, nl, write(X), nl, wait_for_input, fail. examples. example(sin(alpha)/cos(beta-phi)+cos(beta)*tan(360-alpha)). example(buch(titel(wirschaftsinformatik1),autor(hans_robert, hansen))). example((a:-b,c,d)). %example((ppt(X,Y):-Body)):- clause(ppt(X,Y),Body). example(sentence(np(proper(gustaf)),vp(v(likes),np(proper(prolog))))). example(sentence(np(det(that),n(man),rel(that,vp(iv(whistle)))), vp(tv(tunes),np(det(nil),n(pianos),rel(nil))))). example(wirtschaftsinformatik(leitung(hans_robert), sekretariat(virly,anita), assistenten(lore,rony,goeha,gu,margret,andy,stessi))). /************************************************************************ * top level predicate ppt/1 * ************************************************************************/ ppt(Term):- ppt(Term,arc). ppt(Term,Arc) :- number_vars(Term,0,_), /* ground all variables in Term */ pos(Term,Pos,C,0-Right)-> /* compute hor. positions of nodes */ inv([Pos],[]::_,H::T,s)-> /* invert structure for printing */ posdiff(-(72-Right)//2,0,Tab), /* compute hor. tab for centering */ print_tree(H::T,[C],Tab,Arc)->true. /* print tree in line printer mode */ /************************************************************************ * Compute Positions of Nodes * ************************************************************************/ pos(Head,t(Head,Rel,L,[],0)-[], Nc, N0-Nn):- /* leaf node */ atomic(Head), !, string_length(Head,L), Nn is N0+L, Rel is L//2, /* middle of the node */ Nc is (N0+Nn)//2. /* center over node */ pos(X,t(Head,Rel,L,Centers,Adj)-A, Nc, N0-N2):- /* non-leaf node */ X =.. [Head|Args], pos_list(Args,A,Centers,N0-N1), string_length(Head,L), posdiff(N1-N0,L,Error), Adj is (Error+((N1-N0) mod 2))//2, N2 is N1+Error, Rel is L//2, /* middle of the node */ Nc is (N0+N2)//2. pos_list([], [], [], N-N). pos_list([H], [A], [Center], N-N1) :- !, pos(H,A,Center,N-N1). pos_list([H|T],[A|Args],[C|Centers],N0-Nn):- pos( H, A, C, N0-N1), N2 is N1+2, pos_list(T,Args,Centers,N2-Nn). posdiff(Expr,L,Adj) :- X is Expr, Adj is L-X, Adj > 0, !. posdiff(_,_,0). /************************************************************************ * invert tree * ************************************************************************/ inv([Node-Sons|Brothers], List::Deep, [Node|List1]::Deep2, _) :- inv(Brothers, List::Deep, List1::Deep1, b), inv(Sons, Deep1, Deep2, s). inv([], []::[], [], s). inv([], []::[], []::_, b). inv([], E, E, _). /************************************************************************ * print tree * ************************************************************************/ print_tree([],[],_,_). print_tree(Node::Deep, Centers, Tab, Arc) :- tab(Tab), print_list(Node,0,Centers,Cd), nl, ( Arc == noarc ; Deep == [] ; tab(Tab), marks(Centers,Node,0), tab(Tab), horarc(Node,0,_), nl, tab(Tab), marks(Cd,0) ),!, print_tree(Deep,Cd,Tab,Arc). print_list([],_,[],[]). print_list([t(H,Rel,L,Cd,Adj)|R], P0, [C|Centers], Ca) :- P is C-Rel, tab(P-P0), write(H), Pn is P+L, print_list(R,Pn,Centers,Cr), add_to(Cd,Adj,Cda), local_append(Cda,Cr,Ca). /************************************************************************ * draw arcs * ************************************************************************/ marks([],[],_) :- nl. marks([H|T],[t(_,_,_,[],_)|R],E) :- !, tab(H-E), write(' '),marks(T,R,H+1). marks([H|T],[_|R], E) :- tab(H-E), write('|'),marks(T,R,H+1). marks([],_) :- nl. marks([H|T],E) :- tab(H-E), write('|'), marks(T,H+1). horarc([], A,A). horarc([t([],_,_,_,_ )|R],P,P2) :- !, horarc(R,P,P2). horarc([t(_,_,_,Cd,Adj)|R],P,P2) :- line(Cd,Adj,P,P1), horarc(R,P1,P2). line([], _,E,P) :- P is E. line([H], A,E,P) :- !, tab(H+A-E), write('.'), P is H+A+1. line([H|T],A,E,P) :- tab(H+A-E), write('.'), line_([H|T],A,H+A+1,P). line_([], _,E,P) :- P is E. line_([H], A,E,P) :- line_to(H+A-E), P is H+A+1. line_([_,T|Tt],A,E,P) :- line_to(T+A-E), write('.'), line_([T|Tt],A,T+A+1,P). line_to(Exp) :- L is Exp, line_to_(L,'-'). line_to_(L,_) :- L < 1. line_to_(L,C) :- L >= 1, write(C), L1 is L-1, line_to_(L1,C). add_to([],_,[]). add_to([H|T],A,[Ha|Ta]) :- Ha is H+A, add_to(T,A,Ta). /************************************************************************ * misc utility predicates * ************************************************************************/ wait_for_input. % :- get0(_). % some of the following predicates are builtins or available from % libraries in some prolog implementations string_length(X,L):- atomic(X), name(X,S), length(S,L). % use numbervars/3, if it's a builtin number_vars(Term,N0,N1) :- var(Term), !, name(N0,Digits), name('V',[C]), name(Term,[C|Digits]), N1 is N0+1. number_vars(Term,N0,N0) :- atomic(Term), !. number_vars(Term,N0,N1) :- Term =.. [_|Args], number_list(Args,N0,N1). number_list([],N0,N0). number_list([H|T],N0,N2) :- number_vars(H,N0,N1), number_list(T,N1,N2). % to avoid conflicts with builtin append in Quintus local_append([],L,L). local_append([X|A],B,[X|C]) :- local_append(A,B,C). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hint how to use tree_test:- nl, write(' Issue the goal ''examples'' to see a few trees!'), nl, nl. /* ========================================================================== -- Gustaf Neumann neumann@watson.ibm.com Postdoctoral/Visiting Scientist Tel: (914) 784 7086 IBM T.J.Watson Research Center, P.O.Box 704 Yorktown Heights, New York 10598 */ :-module(user). /* Adapted for BinProlog's restricted is/2 and made a library module for bp3.32 by Paul Tarau 1995 */ BinProlog3.45/library/if.pl100644 764 764 637 5734315725 14676 0ustar javierjavier:-op(970,fx,if). :-op(980,xfy,then). :-op(990,xfy,else). else(then(if(If),Then),Else):-If->Then;Else. then(if(If),Then):-If->Then. if_example(if 1>0 then if 2>0 then (write(yes),nl) else (write(no),nl)). if_example( if_max(1,2,3) then write(1) else if 2<0 then write(2) else write(3) ). if_test:-if_example(T),write(T),nl,display(T),nl,T,nl,nl,fail;nl. if_max(X,Y,Z) :- if X>Y then Z is X else Z is Y. BinProlog3.45/library/oldlinda.pl100644 764 764 1653 5737644127 16111 0ustar javierjavier% out/1, rd/1, in/1 out(Mes):-object(Obj),message(Id),out(Obj,Id,Mes). rd(Mes):-object(Obj),message(Id),rd(Obj,Id,Mes). in(Mes):- object(Obj),message(Id),in(Obj,Id,Mes). % out/2, rd/2, in/2 out(Id,Mes):-object(Obj),out(Obj,Id,Mes). rd(Id,Mes):-object(Obj),rd(Obj,Id,Mes). in(Id,Mes):-object(Obj),in(Obj,Id,Mes). % out/3, rd/3, in/3 out(Obj,Id,_):-val(Obj,Id,_),!,fail. out(Obj,Id,Mes):-saved(Mes,Sent),let(Obj,Id,Sent). rd(Obj,Id,Mes):-val(Obj,Id,Mes). in(Obj,Id,Mes):-val(Obj,Id,Mes),rm(Obj,Id). % eval/0, eval/1, eval/2 eval:-object(Obj),message(Id),eval(Obj,Id). eval(Id):-object(O),eval(O,Id). eval(Obj,Id):-val(Obj,Id,(Answer:-Goal)),Goal,!, saved(Answer,NewAnswer), set(Obj,Id,NewAnswer). % tools object(New):-var(New),!,val('$object','$object',New). object(New):-atomic(New),let('$object','$object',New). message(New):-var(New),!,object(O),val(O,'$message',New). message(New):-atomic(New),object(O),let(O,'$message',New). BinProlog3.45/library/objects.pl100644 764 764 3477 5745555356 15766 0ustar javierjavier% objects with backtrackable state % based on intuitionistic assumption % our primitive constructors relation(class_of). relation(part_of). relation(inst_of). relation(state_of). class(X):-new(X,class). part(Body,Part):-new_rel(part,Body,Part). inst(Body,Part):-new_rel(inst,Body,Part). state(Body,Part):-new_rel(state,Body,Part). % creating a new relation new_rel(Rel,Body,Part):- symcat(Body,Part,BodyPart), new(BodyPart,class), symcat(Rel,of,RelOf), Pred=..[RelOf,Body,Part], add_rel(Pred). % creating a new link new(X,Name):- symcat(Name,of,Link), % creates something like `..._of' create_new(Link,X,Name). % create_new(Op,Name,Parent):- get_op(Op), Rel=..[Op,Name,Parent], add_or_call(Name,Op,Rel). add_or_call(Name,Link,Rel):- nonvar(Name),!, % create if Name is given add_rel(Rel), term_append(Name,arg(X),Pred), add_link(Pred,Link,Name,X). add_or_call(_Name,_Link,Rel):- % call otherwise and retrieve _Name and _Link Rel. get_op(Op):-nonvar(Op),!. get_op(Op):-relation(Op). add_rel(R):-assumed(R),!,fail. add_rel(R):-assumei(R). add_link(Pred,_,_,_):-is_assumed(Pred),!. % assumes at most once add_link(Pred,Link,Name,X):- % this makes Pred have the ability of replication assumei( ( Pred:-create_new(Link,X,Name) ) ). % example of inheritance is_a(Super,Inst):-assumed(inst_of(Class,Inst)),inherits_from(Super,Class). inherits_from(X,X). inherits_from(X,Z):-assumed(class_of(X,Y)),inherits_from(Y,Z). go:- class(animal), animal(mamal), mamal(dog), mamal(cat), class(friendly), friendly(dog), friendly(cat), part(dog,leg), inst(dog,fido), inst(cat,minou), inst(dog_leg,no_3), state(no_3,broken) ,listing . go1:- class(animal),animal(dog),inst(dog,fido),part(dog,nose),listing. /* add exceptions, overriding add methods: sink, source, arrow */ BinProlog3.45/library/bin2iso.pl100644 764 764 25546 5764317601 15711 0ustar javierjavier/* Return-Path: Received: from infko.uni-koblenz.de (mailhost.uni-koblenz.de) by clement.info.umoncton.ca (4.1/SMI-4.1) id AA13563; Tue, 11 Apr 95 08:23:57 ADT Received: from brian.uni-koblenz.de (hartrump@brian.uni-koblenz.de [141.26.4.22]) by infko.uni-koblenz.de (8.6.9/8.6.9) with SMTP id NAA03177 for ; Tue, 11 Apr 1995 13:21:17 +0200 From: Sven Hartrumpf Message-Id: <199504111121.NAA03177@infko.uni-koblenz.de> Received: by brian.uni-koblenz.de (4.1/KO-2.0) id AA24743; Tue, 11 Apr 95 13:21:33 +0200 Subject: implementations for ISO built-ins To: binprolog@info.umoncton.ca Date: Tue, 11 Apr 1995 13:21:33 +0200 (MET DST) X-Mailer: ELM [version 2.4 PL24] Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Content-Length: 10214 Status: RO Hello Paul, I keep on using BinProlog. And with each new version, I get more and more satisfied. As I have to write mostly portable code (i.e. ISO Prolog) I have developed a file that contains implementations of many ISO built-in predicates that are missing in BinProlog 3.30. I encourage you to include them in the next release. Some of them may need some error detection like "first argument must be ground" and may be implemented more efficiently. Some naming problems are mentioned at the beginning of the file. My implementations for I/O predicates are just a hack as I have seen that there are already predicates named iso_open etc, which I can't use at the moment (but will be able to use in the future?). Thanks for making your work publicly available, Regards, Sven */ % isobi_bp.pl % All ISO built-in predicates. % (See chapter 8 and 9 of the draft ISO standard for Prolog, March 1993) % This file contains some implementations for predicates etc that are missing % in BinProlog 3.30. % Predicates etc that are not provided are marked "%% missing". % Sven Hartrumpf (C) 1994, 1995 /* Non-standard predicates etc whose names should be freed by removing them from BinProlog (this is a matter of taste, of course): abolish/2 (should become abolish/1) float/1 (should be named real/1) flush/0 (should be named flush_output/0) get/1 get0/1 integer/2 (should be named floor/2) name/2 (should be split into atom_codes/2 and number_codes/2) pow/3 (should be named '**'/3) put/1 Operator mod should have priority 400 and mode yfx (?). Operator \ should have priority 200 (not 500) and mode fy (not fx) (?). Operator - should have priority 200 (not 500) and mode fy (not fx) (?). */ /* :- module(isobi_bp, [ '\='/2, abolish/1, atom_codes/1, atom_concat/3, atom_length/2, close/2, current_input/1, current_output/1, fail_if/1, number_codes/1, once/1, open/3, set_input/1, set_output/1 ... ]). */ % standard operators :- op(1200, fx, ?-). :- op( 400, yfx, rem). :- op( 200, xfx, **). :- op( 100, xfx, @). :- op( 50, xfx, :). % term unification % =/2 % '='(?term,?term) % unify_with_occurs_check/2 % unify_with_occurs_check(?term,?term) %% missing % \=/2 % '\='(@term,@term) % \=(A, B) :- \+ (A = B). % type testing % var/1 % var(@term) % atom/1 % atom(@term) % integer/1 % integer(@term) % real/1 % real(@term) real(X) :- float(X). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % atomic/1 % atomic(@term) % compound/1 % compound(@term) % nonvar/1 % nonvar(@term) % number/1 % number(@term) % term comparison % ==/2 % '=='(@term,@term) % \==/2 % '\=='(@term,@term) % @/2 % '@>'(@term,@term) % @>=/2 % '@>='(@term,@term) % term creation and decomposition % functor/3 % functor(-nonvar,+constant,+integer) % functor(@nonvar,?constant,?integer) % arg/3 % arg(+integer,+compound_term,?term) % =../2 % '=..'(+nonvar,?list) % '=..'(-nonvar,+list) % copy_term/2 % copy_term(?term,?term) % is/2 % 'is'(?nonvar,+nonvar) % arithmetic comparison % =:=/2 % '=:='(+nonvar,+nonvar) % =\=/2 % '=\='(+nonvar,+nonvar) % /2 % '>'(+nonvar,+nonvar) % >=/2 % '>='(+nonvar,+nonvar) % clause retrieval and information % clause/2 % clause(+head,?body) % current_predicate/1 % current_predicate(?predicate_indicator) % clause creation and destruction % asserta/1 % asserta(@clause) % assertz/1 % assertz(@clause) % retract/1 % retract(+clause) % abolish/1 % abolish(@predicate_indicator) abolish(F/N) :- abolish(F, N). % all solutions % findall/3 % findall(@term,@callable_term,?list) % bagof/3 % bagof(@term,+callable_term,?list) % setof/3 % setof(@term,+callable_term,?list) % stream selection and control % current_input/1 % current_input(?stream) current_input(X) :- seeing(X). % current_output/1 % current_output(?stream) current_output(X) :- telling(X). % set_input/1 % set_input(@stream_or_alias) set_input(S) :- ( S == user_input -> see(user) ; see(S) ). % set_output/1 % set_output(@stream_or_alias) set_output(S) :- ( S == user_output -> tell(user) ; tell(S) ). % open/3 % open(@source_sink,@io_mode,-stream) open(N, read, S) :- seeing(Old), see(N), seeing(S), see(Old). open(N, write, S) :- telling(Old), tell(N), telling(S), tell(Old). % open/4 % open(@source_sink,@io_mode,-stream,@io_options) %% missing % close/1 % close(@stream_or_alias) %% missing % close/2 % close(@stream_or_alias,@close_options) %% missing. This is an implementation to simulate close/1. close(N, read) :- see(N), seen. close(N, write) :- tell(N), told. % flush_output/0 % flush_output flush_output :- flush. % flush_output/1 % flush_output(@stream_or_alias) flush_output(S) :- telling(Old), tell(S), flush, tell(Old). % stream_property/2 % stream_property(?stream,?stream_property) %% missing % at_end_of_stream/0 % at_end_of_stream %% missing % at_end_of_stream/1 % at_end_of_stream(@stream_or_alias) %% missing % set_stream_position/2 % set_stream_position(@stream_or_alias,@stream_position) %% missing % character input/output % get_char/1 % get_char(?character) get_char(Character) :- get_code(Code), atom_codes(Character, [Code]). % get_char/2 % get_char(@stream_or_alias,?character) get_char(S, Character) :- get_code(S, Code), atom_codes(Character, [Code]). % put_char/1 % put_char(@character) put_char(Character) :- atom_codes(Character, [Code]), put_code(Code). % put_char/2 % put_char(@stream_or_alias,@character) put_char(S, Character) :- atom_codes(Character, [Code]), put_code(S, Code). % nl/0 % nl % nl/1 % nl(@stream_or_alias) nl(S) :- telling(Old), tell(S), nl, tell(Old). % character code input/output % get_code/1 % get_code(?character_code) % get_code/2 % get_code(@stream_or_alias,?character_code) get_code(S, Code) :- seeing(Old), see(S), get_code(Code), see(Old). % put_code/1 % put_code(@character_code) % put_code/2 % put_code(@stream_or_alias,@code) put_code(Out, Code) :- telling(Old), tell(Out), put_code(Code), tell(Old). % term input/output % read_term/2 % read_term(?term,+read_options_list) % read_term/3 % read_term(@stream_or_alias,?term,+read_options_list) read_term(S, Term, []) :- !, seeing(Old), see(S), read(Term), see(Old). read_term(S, Term, [variable_names(Vars)]) :- seeing(Old), see(S), read_term(Term, Vars), see(Old). % read/1 % read(?term) % read/2 % read(@stream_or_alias,?term) read(S, Term) :- seeing(Old), see(S), read(Term), see(Old). % write_term/2 % write_term(@term,@write_options_list) %% incomplete write_term(Term, []) :- write(Term). % write_term/3 % write_term(@stream_or_alias,@term,@write_options_list) %% incomplete write_term(Out, Term, []) :- telling(Old), tell(Out), write(Term), tell(Old). % write/1 % write(@term) % write/2 % write(@stream_or_alias,@term) write(Out, T) :- telling(Old), tell(Out), write(T), tell(Old). % writeq/1 % writeq(@term) % writeq/2 % writeq(@stream_or_alias,@term) writeq(Out, T) :- telling(Old), tell(Out), writeq(T), tell(Old). % write_canonical/1 % write_canonical(@term) %% missing % write_canonical/2 % write_canonical(@stream_or_alias,@term) %% missing % op/3 % op(@integer,@operator_specifier,@atom_or_atom_list) % current_op/3 % op(?integer,?operator_specifier,?atom) % char_conversion/2 % char_conversion(@character,@character) %% missing % current_char_conversion/2 % current_char_conversion(?character,?character) %% missing % logic and control % fail_if/1 % fail_if(@callable_term) fail_if(G) :- \+ G. % once/1 % once(+callable_term) once(G) :- G, !. % repeat/0 % repeat % constant processing % atom_length/2 % atom_length(+atom,?integer) atom_length(A, L) :- atom_codes(A, Codes), length(Codes, L). % atom_concat/3 % atom_concat(?atom,?atom,+atom) % atom_concat(+atom,+atom,-atom) atom_concat(A, B, C) :- atom(C), !, name(C, C_string), append(A_string, B_string, C_string), name(A, A_string), name(B, B_string). atom_concat(A, B, C) :- name(A, A_string), name(B, B_string), det_append(A_string, B_string, C_string), name(C, C_string). % sub_atom/4 % sub_atom(+atom,?integer,?integer,?atom) %% missing % atom_chars/2 % atom_chars(+atom,+list) % atom_chars(+atom,-list) % atom_chars(-atom,+list) %% missing % atom_codes/2 % atom_codes(+atom,+list) % atom_codes(+atom,-list) % atom_codes(-atom,+list) atom_codes(A, L) :- name(A, L). % char_code/2 % char_code(+character,+character_code) % char_code(+character,-character_code) % char_code(-character,+character_code) char_code(Character, Code) :- name(Character, [Code]). % number_chars/2 % number_chars(+number,+list) % number_chars(+number,-list) % number_chars(-number,+list) %% missing % number_codes/2 % number_codes(+number,+list) % number_codes(+number,-list) % number_codes(-number,+list) number_codes(N, L) :- name(N, L). % implementation defined hooks % set_prolog_flag/2 % set_prolog_flag(@flag,@term) %% missing % current_prolog_flag/2 % current_prolog_flag(?flag,?term) % missing % halt/0 % halt % halt/1 % halt(@integer) % mathematic predicates (evaluable functors) % '+'/2 % '-'/2 % '*'/2 % '//'/2 % '/'/2 % rem/2 %% missing % mod/2 % '-'/1 % abs/1 abs(X, R) :- ( X < 0 -> R is -X ; R = X ). % sqrt/1 % sign/1 sign(X, S) :- ( X < 0 -> S = -1 ; S = 1). % float_truncate/1 %% missing % float_round/1 %% missing % float_integer_part/1 %% missing % float_fractional_part/1 %% missing % float/1 % floor/1 floor(F, I) :- integer(F, I). % truncate/1 truncate(F, I) :- ( F < 0 -> F1 is -F, floor(F1, I1), I is -I1 ; floor(F, I) ). % round/1 round(F, I) :- F1 is F + 0.5, floor(F1, I). % ceiling/1 ceiling(F, I) :- F1 is -F, floor(F1, I1), I is -I1. % '**'/2 **(B, E, P) :- pow(B, E, P). % sin/1 % cos/1 % atan/1 % exp/1 % log/1 % '>>'/2 % '<<'/2 % '/\'/2 % '\/'/2 % '\'/1 BinProlog3.45/library/monad.pl100644 764 764 2021 5742276766 15415 0ustar javierjavier% tools id(X,X). compose(F,G,X,Z):-call(F,X,Y),call(G,Y,Z). % basic operations on the monad of Lists unitList(X,[X]). bindList([],_,[]). bindList([X|Xs],K,R):- call(K,X,Ys), bindList(Xs,K,Zs), append(Ys,Zs,R). % derived operations on the monad of Lists joinList(Xss,Xs) :- bindList(Xss,id,Xs). mapList(F,Xs,Ys):-bindList(Xs,compose(F,unitList),Ys). % test predicates and data filterList(P,X,Xs) :- call(P,X), !, unitList(X,Xs). filterList(_,_,[]). flip(F,X,Y):-call(F,Y,X). dupList(X,[X,X]). %pair(X,Y,R):- % unitList(X,Xs), % unitList(Y,Ys), % bindList([Xs,Ys],id,R). mapcan(F,Xs,R):-bindList(Xs,F,R). test(L,R):-bindList(L,dupList,R). test(L,R):-bindList(L,compose(joinList,compose(dupList,dupList)),R). test(L,R):-bindList(L,unitList,R). test(L,R):-joinList([L,L,L,L],R). test(L,R):-mapList(unitList,L,Xss),joinList(Xss,R). test(L,R):-mapList(filterList(>(3)),L,Xss),joinList(Xss,R). test(L,R):-mapList(+(10),L,R). test(L,R):-mapList(compose(unitList,flip(unitList)),L,R). go:-test([1,2,3,4],R),write(R),nl,fail. BinProlog3.45/library/engines.pl100644 764 764 5612 5763634406 15750 0ustar javierjavier:-op(960,xfx,<=). % executes Producer on an `orthogonal' OR-engine Answer<=Producer=>Consumer:-!, % the consumer is explicit cross_run(Producer,Answer,Consumer). Answer<=Producer:- % the consumer is in the `future' cross_run_with_current_continuation(Producer,Answer). cross_run(Producer,Answer,Consumer):- default_engine_params(H,S,T), cross_run(H,S,T,Producer,Answer,Consumer). cross_run(H,S,T,Producer,Answer,Consumer):- compound(Answer),copy_term(Answer,A), new_engine(H,S,T,Producer,Answer,Handle), (A:-ask_or_kill(Handle,A))=>Consumer, destroy_engine(Handle). cross_run_with_current_continuation(Producer,Answer):- default_engine_params(H,S,T), cross_run_with_current_continuation(H,S,T,Producer,Answer). cross_run_with_current_continuation(H,S,T,Producer,Answer):- compound(Answer),copy_term(Answer,A), new_engine(H,S,T,Producer,Answer,Handle), assumei((A:-ask_or_kill(Handle,A))). ask_or_kill(Handle,Answer):-ask_engine(Handle,Answer),!. ask_or_kill(Handle,_):-destroy_engine(Handle),fail. new_engine(H,S,T,Goal,Answer,Handle):- create_engine(H,S,T,Handle), load_engine(Handle,Goal,Answer). find_all(X,Goal,Xs):- default_engine_params(H,S,T), find_all(H,S,T,X,Goal,Xs). find_all(H,S,T,X,Goal,Xs):- new_engine(H,S,T,Goal,X,Handle), collect_answers(Handle,Xs), destroy_engine(Handle). collect_answers(Handle,[X|Xs]):-ask_engine(Handle,A),!, copy_term(A,X), collect_answers(Handle,Xs). collect_answers(_,[]). call_and_fail(Goal):- default_engine_params(H,S,T), call_and_fail(H,S,T,Goal). call_and_fail(H,S,T,Goal):- new_engine(H,S,T,Goal,X,Handle), (ask_engine(Handle,X),fail ;destroy_engine(Handle) ). call_once(Goal):- default_engine_params(H,S,T), call_once(H,S,T,Goal). call_once(H,S,T,Goal):- copy_term(Goal,G), new_engine(H,S,T,G,G,Handle), ask_engine(Handle,X), copy_term(X,Goal), destroy_engine(Handle). % overridable default engine sizes for heap,stack,trail default_engine_params(H,S,T):-assumed(engine_params(H,S,T)),!. default_engine_params(128,32,32). % tests cross_test:- a(V)<=member(V,[s(A),s(B),c(A,B)]), a(X),a(Y),a(Z), write([V,A,B,X,Y,Z]),nl, listing, destroy(a(_)), write('engine closed'),nl. destroy(AnswerPattern):- assumed_clause( AnswerPattern, ask_or_kill(Handle,AnswerPattern), intuitionistic(Scope) ), destroy_engine(Handle), Scope='$closed'. % close the scope of the assumption cross_impl_test:- engine_params(30,10,10)=> % overrides the default engine parameters ( G=member(A,[a(B),1,s(B)]), a(A)<=G=> (a(X),a(Y),a(Z),write(G+[X,Y,Z]),nl) ). find_all_test:- As=[A,B,B,A], find_all(X,member(s(X),As),Xs),write(As+Xs),nl. engine_test:- find_all_test, call_and_fail((X=f(X),write(X),nl)), nl,write('engine dies gracefully'),nl, call_once(member(A,[B,B])), write(A+B),nl. simple_test:- a(X)<=member(X,[1,2,3])=>(a(A),a(B),a(C),write([A,B,C]),nl). BinProlog3.45/library/case.pl100644 764 764 306 5744755505 15211 0ustar javierjavierswitch(Selector,Body):- case(Selector)-:Body. test(X):- switch(X, ( case(1)->write(one) ; case(2)->write(two) ; otherwise->write(unexpected(X)) )) ,nl. go:-test(2),test(13). BinProlog3.45/library/format.pl100644 764 764 33400 5763464545 15631 0ustar javierjavier % File : WRITEF.PL % Author : Lawrence + Richard % Updated: 10 September 1983 % Purpose: Formatted write routine (and support) % WRITEF - FORMATTED WRITE UTILITY % % fwritef(File, Format) % % Formatted write to file. Equivalent to 'fwritef(File, Format, [])'. % % fwritef(File, Format, List) % % Formatted write to File. Temporarily redirects output to the file % named by File, but is otherwise like 'writef(Format, List)'. % % writef(Format) % % Formatted write. Equivalent to 'writef(Format, [])'. % % writef(Format, List) % % Formatted write. Format is an atom whose characters will be output. % Format may contain certain special character sequences which specify % certain formatting actions. The following sequences result in % particular (otherwise hard to use) characters being output. % % '\n' -- is output % '\l' -- is output (same as on UNIX) % '\r' -- is output % '\t' -- is output % '\e' -- is output % '\\' -- The character "\" is output % '\%' -- The character "%" is output % '\nnn' - where nnn is an integer (1-3 digits) % the character with ASCII code nnn is output % (NB : nnn is read as DECIMAL) % % The following special sequences specify that items be taken from the % List and output in some way. List, then, provides all the actual terms % that are required to be output, while Format specifies where and how % this is to occur. % % '%t' -- output the next item (mnemonic: Term) % '%w' -- Write the next item % '%q' -- Writeq the next item % '%d' -- Display the next item % '%p' -- Print the next item (identical to %t) % '%l' -- output the next item using prlist % '%c' -- output the next item using prconj % '%e' -- output the next item using prexpr % '%n' -- put the next item as a character (ie it is % an iNteger) % '%r' -- Repeat the next item N times where N is the % second item (an integer) % '%s' -- write the next item as a String (so it must % be a list of characters) % '%i' -- the next item is a format, and the item after that % a list. Apply writef to that format and % list (Indirect). Use for error messages. % '%f' -- perform a ttyflush (no items used) % % %l (prlist) works on lists [A1,...,An]. %c (prconj) works on % conjunctions A1&...&An. They both display A1, ..., An with one element % per line, preceded by four spaces. You will probably want a \n % (newline) in front of %l or %c, but unless you want a blank line in the % output there is no need for a \n afterwards. % % There is a new set of three special sequences: % % '%Nc' -- write the next item Centered in N columns. % '%Nl' -- write the next item Left justified in N columns. % '%Nr' -- write the next item Right justified in N columns. % N is a decimal number with at least one digit. % The item must be an atom, integer, or string. % % In each of these cases, a minimum of N characters will be written. % Enough spaces will be added around (c), after (l), or before (r) to % make the total up to N. If the item is too long, exactly one space will % be added. % % The following examples may help to explain the use of writef. % % writef('Hello there\n\n') % writef('%t is a %t\n',[Person,Property]) % writef('Input : %l \nBecomes : %e\n \7',[In,Out]) % writef('%20l %4r clauses %3r predicates.\n', [File,Ccnt,Pcnt]) % fwritef('demo.for', '\tDO %w I = 1, %w\n', [End,Limit]) % % FIXES % % (11 May 81) LB % % Split the (now obsolete) module IOROUT into two: WRITEF (this one) % and TRACE. % Added cuts to writefs to make it determinate (it's tail recursive). % % (8 September 82) ROK % % Added a clause to writef to allow the format to be a string. % Added the format items nL, nR, nC for atoms/numbers/strings. % Added the %s format code. Made getxxx things grammar rules. % % (9 September 82) ROK % % Fixed long-standing bug in ttyprint: 'tell' was 'see' !! % % (22 June 83) ROK % % Added fwrite/2 and fwritef/3 by analogy to fprintf. % They are very often useful. % Also added the %i (indirect) format item, and the \e % escape (generates ESC) for talking to terminals. % % (10 September 1983) ROK % % Added the %g (agglutinated) format item. The idea of this is that % you can have a term like +(A,B,C,D) written as A + B + C + D. ASA % is the only program to use it so far, but since such records are % quite a bit more compact than lists, it sems like a good idea. % % Added the %x (ignore) format item, so that you can compute % a format : get_format(Key,Fmt), writef(Fmt, [List]) where % some of the variations don't want to display all the arguments. % % Added the \b (backspace) and \f (formfeed) escapes. This wants % to be done when strings are read, and wants to be exactly the same % as C. Maybe in the next Prolog system... % % If the list argument is neither [] nor a list, it will be turned % into a list of one element. I keep forgetting to do this in my % source code, so writef might as well do it fo me. % % Changed uses of & and # as operators to uses as function symbols, % so this file can be loaded when you're not using those operators. % Also made the logical stuff treat , as conjunction and ; (same as % |) as disjunction. Renamed all prexpr's subroutines to prexpr,to % remove possible name conflicts. That was a bit dubious, but I also % renamed special->wf_char and action->wf_act; those two were *bound* % to get in someone's way sooner or later, probably mine. % % (15 September 1983) ROK % % Added the %v hack, which calls numbervars on the items in the list. % This is to make variables come out as letters, which I think looks % pretty, and it is harmless, because writef fails anyway! % % (6 December 1983) ROK % Moved to the VAX, again again % /* :- public prconj/1, % print conjunction prexpr/1, % print logical expression prlist/1, % print list, one per line ttyprint/1, % print on terminal fwritef/2, fwritef/3, % formatted write to file writef/1, writef/2. % formatted write :- mode ttyprint(?), prlist(?), prconj(?), prexpr(?), prexpr(+,+,-,?,?), prexpr(+,-,-,-), prexpr(+,+), fwritef(+,+), fwritef(+,+,+), writef(+), writef(+,+), wf_act(+,+,-), getcode(-,+,-), getdigits(+,-,+,-), getpad(+,-), getpad(+,+,-), getpad(-,-,+,-), padout(+), padout(+,+,+), padout(+,+,+,-,-), praggl(+,+,+,+), wf_char(+,-), writelots(?,+), writef_nonlist(+,-), writefs(+,+). % Print (therefore use pretty printing) onto % the terminal (no-one uses this routine). ttyprint(X) :- % fwritef(user, '%p', [X]) telling(Old), tell(user), print(X), tell(Old). */ % Print a list, one element per line format(Format,Xs):-writef(Format,Xs). prlist([]) :- !. prlist([Head|Tail]) :- tab(4), print(Head), nl, prlist(Tail). % Print a conjunction, one element per line prconj(true) :- !. prconj(&(A,B)) :- prconj(A), !, prconj(B). prconj((A,B)) :- prconj(A), !, prconj(B). prconj(A) :- tab(4), print(A), nl. % Pretty print a simple logical expression % This is done by first printing the logical % structure using X1 X2 etc to name the components % and then printing the 'values' of X1 X2 etc on % separate lines. prexpr(Expr) :- prexpr(Expr, 1, _, Elements, []), nl, write(' where :'), nl, prexpr(Elements, 1). prexpr(Term, Nin, Nout, Elements, Z) :- prexpr(Term, Conn, A, B), !, put(40), prexpr(A, Nin, Nmid, Elements, Rest), put(32), put(Conn), % 40 is "(" put(32), prexpr(B, Nmid, Nout, Rest, Z), put(41). % 41 is ")" prexpr(Term, Nin, Nout, [Term|Z], Z) :- succ(Nin, Nout), put(88), write(Nin). % 88 is "X" prexpr(&(A,B), 38, A, B). % 38 is "&" prexpr(#(A,B), 35, A, B). % 35 is "#" prexpr((A,B), 38, A, B). % 38 is "&" prexpr((A;B), 124, A, B). % 124 is "|" prexpr([Head|Tail], M) :- write(' X'), write(M), write(' = '), print(Head), nl, succ(M, N), !, prexpr(Tail, N). prexpr([], _). % Formatted write utility % This converts the format atom to a string and % uses writefs on that. Note that it fails back over % itself to recover all used space. fwritef(File, Format) :- fwritef(File, Format, []). fwritef(File, Format, List) :- telling(Old), tell(File), writef(Format, List), tell(Old). writef(Format) :- writef(Format, []). writef(Format, Item) :- writef_nonlist(Item, List), !, writef(Format, List). writef([F|String], List) :- writefs([F|String], List), fail. writef(Format, List) :- atom(Format), name(Format, Fstring), writefs(Fstring, List), fail. writef(_, _). writef_nonlist([], _) :- !, fail. writef_nonlist([_|_], _) :- !, fail. writef_nonlist(Item, [Item]). % Formatted write for a string (ie a list of % character codes). writefs([], _). writefs([37,A|Rest], List) :- % % wf_act(A, List, More), !, writefs(Rest, More). writefs([37,D|Rest], [Head|Tail]) :- % % 48 =< D, D =< 57, % 48 is "0", 57 is "9" getpad(Size, Just, [D|Rest], More), padout(Head, Size, Just), !, writefs(More, Tail). writefs([92,C|Rest], List) :- % \ wf_char(C, Char), put(Char), !, writefs(Rest, List). writefs([92|Rest], List) :- % \ getcode(Char, Rest, More), put(Char), !, writefs(More, List). writefs([Char|Rest], List) :- % put(Char), !, writefs(Rest, List). wf_act( 99, [Head|Tail], Tail) :- % Conjunction nl, !, prconj(Head). wf_act(100, [Head|Tail], Tail) :- % Display display(Head). wf_act(101, [Head|Tail], Tail) :- % Expression nl, !, prexpr(Head). wf_act(102, List, List) :- % Flush flush. wf_act(103, [Head|Tail], Tail) :- % aGglutinated functor(Head, F, N), praggl(1, N, F, Head). wf_act(105, [Format,List|Tail], Tail):- % Indirect writef(Format, List). wf_act(108, [Head|Tail], Tail) :- % List nl, !, prlist(Head). wf_act(110, [Char|Tail], Tail) :- % iNteger (character) put(Char). wf_act(112, [Head|Tail], Tail) :- % Print print(Head). wf_act(113, [Head|Tail], Tail) :- % Quoted writeq(Head). wf_act(114, [Thing,Times|Tail],Tail) :- % Repeatedly writelots(Times, Thing). wf_act(115, [Head|Tail], Tail) :- % String padout(Head). wf_act(116, [Head|Tail], Tail) :- % Term print(Head). wf_act(118, List, List) :- % numberVars numbervars(List, 0, _). wf_act(119, [Head|Tail], Tail) :- % Write write(Head). wf_act(120, [_|Tail], Tail). % X (skip) wf_char( 37, 37). % % wf_char( 92, 92). % \ wf_char( 98, 8). % Backspace wf_char(101, 27). % Escape wf_char(102, 12). % Formfeed wf_char(108, 10). % Linefeed wf_char(110, 10). % Newline (=LF on UNIX) wf_char(114, 13). % Return wf_char(116, 9). % Tab getcode(Char) --> getdigits(3, Digits), !, { Digits \== [], name(Char, Digits), Char < 128 }. getdigits(Limit, [Digit|Digits]) --> { Limit > 0 }, [Digit], { 48 =< Digit, Digit =< 59 }, { succ(Fewer, Limit) }, !, getdigits(Fewer, Digits). getdigits(_, []) --> []. writelots(N, T) :- N > 0, write(T), succ(M, N), !, writelots(M, T). writelots(_, _). % praggl(ArgNo, Arity, Func, Term) % prints the arguments of the term one after the other, starting with % argument ArgNo. Arguments are separated by " Func ". This is meant % mainly for ASA, but should be generally useful. praggl(N, N, _, Term) :- !, arg(N, Term, Arg), print(Arg). praggl(L, N, F, Term) :- arg(L, Term, Arg), print(Arg), put(32), write(F), put(32), succ(L, M), !, praggl(M, N, F, Term). /* The new formats are %nC, %nL, and %nR for centered, left, and right justified output of atoms, integers, and strings. This is meant to simplify the production of tabular output when it is appropriate. At least one space will always precede/follow the item written. */ getpad(Size, Just) --> getdigits(3, Digits), { name(Size, Digits) }, [Char], { getpad(Char, Just) }. getpad(114, r). % right justified getpad(108, l). % left justified getpad( 99, c). % centered getpad( 82, r). % right justified getpad( 76, l). % left justified getpad( 67, c). % centered % padout(A,S,J) writes the item A in a % field of S or more characters, Justified. padout(Atom, Size, Just) :- atomic(Atom), name(Atom, Name), !, padout(Name, Size, Just). padout(String, Size, Just) :- length(String, Length), padout(Just, Size, Length, Left, Right), tab(Left), padout(String), tab(Right). % padout(Just,Size,Length,Left,Right) % calculates the number of spaces to put % on the Left and Right of an item needing % Length characters in a field of Size. padout(l, Size, Length, 0, Right) :- !, plus(Excess, Length, Size), getpad(Excess, 1, Right). padout(r, Size, Length, Left, 0) :- !, plus(Excess, Length, Size), getpad(Excess, 1, Left). padout(c, Size, Length, Left, Right) :- plus(Excess, Length, Size), is(Prefix, div, Excess, 2), plus(Remainder, Prefix, Excess), getpad(Prefix, 1, Left), getpad(Remainder, 1, Right). % getpad(A,B,Max) returns the maximum. getpad(A, B, A) :- A >= B, !. getpad(_, B, B). % padout(Str) writes a string. padout([Head|Tail]) :- put(Head), !, padout(Tail). padout([]). succ(N,N1):-N1 is N+1. plus(X,Y,Z):-Z is X+Y. BinProlog3.45/BINARY.LICENSING100644 764 764 11546 5764433552 14563 0ustar javierjavier BinProlog 3.45 (binaries) SOFTWARE AGREEMENT Between Paul Tarau, 17 Kingsmere Court, #8, Moncton N.B, CANADA E1A-6C2 (hereinafter referred to as "the Licensor") and (organisation) ______________________________ (address) ______________________________ ______________________________ ______________________________ (hereinafter referred to as "the User"). 1. Definitions As used in this Agreement: "Software" shall mean the executable binaries of BinProlog 3.45 for all the architectures the software has been ported, as available by ftp staring from Sep 10 09:38:50 ADT 1994. 2. Right to use the Software 2.1 The Licensor hereby grants to the User a non-transferable, non-exclusive right to use the Software for any purpose including creation of run-time applications and integrating it in an application for profit. 3. Fee (C) In case the User is a commercial organization or individual willing to use BinProlog or develop and sell BinProlog runtime applications, after obtaining and evaluating the Software during a 10-day period, a one-time fee of the amount specified in the file PRICING section 1 in the current distribution shall be paid to the Licensor. (A) In the case of Universities, Research institutes or other non-profit organizations BinProlog is licensed free of charge upon return by e-mail of this form. 5. Ownership The Licensor is and shall remain sole and exclusive owner of the Software and the copies thereof. However no run-time fees are required for integration of the software in a value-added product delivered in executable form to a third party or for use of the executables at the User'premises. 7. Copies and Modifications 7.1 The User is entitled to make copies of the Software for use in accordance with clause 3 above. The User shall furnish each copy with proprietary marks and symbols identical to those affixed to the Software. 7.2 The User may modify, update, improve, correct, or alter the Software in accordance with this Agreement. Such modifications, updates, improvements, corrections or alterations made by the User shall become the property of the User. The User grants to the Licensor a non-exclusive right to use said modifications, updates, improvements, corrections or alterations free of charge and the User will also free of charge supply to the Licensor copies of any modifications, updates, improvements, corrections or alterations. The Licensor shall have the right to grant sub-licences with respect to the rights acquired in accordance with this Agreement. 8. Service and information Unless the parties otherwise agree, the Licensor shall not be required to provide to the User any installation services, technical assistance, maintenance support, supplementary information, improvements or modifications for or in respect of the Software. 9. Limitation of liability, industrial property rights etc. 9.1 The Licensor does not assume any responsibility whatsoever with respect to functioning, design, material or workmanship of the Software. 9.2 (i) The Licensor shall not be liable to the User for any loss or damage whatsoever or howsoever caused arising directly or indirectly in connection with this Agreement, the Software, its use or otherwise. (ii) Notwithstanding (i), the Licensor expressly excludes liability for consequential loss or damage which may arise in respect of the Software, its use, the system or in respect of other equipment or property, or for loss of profit, business, revenue, goodwill or anticipated savings. 9.3 To the best of the Licensor's knowledge the Software or the use thereof does not infringe any third party's property rights. The Licensor shall have no responsibility for any claims or infringements of patents, trade marks, industrial designs, copyrights or other property rights affecting the User's use of the Software. 10. Assignment The rights granted under this Agreement may not be assigned or transferred without the prior written consent of the Licensor. 11. Term and Termination 11.1 This Agreement is effective when signed by the User. The rights granted herein for the Software shall remain in force until the User discontinues to use the Software. 11.2 The Licensor may terminate this Agreement immediately if the User commits a material breach of any provision of this Agreement. Any use or disposal of the Software that is not expressly permitted under this Agreement is considered as a material breach of the Agreement. 11.3 Immediately upon termination of this Agreement, the User shall destroy the original and all such copies. 12. Applicable law This Agreement shall be governed by Canadian law. Date:________________________________ Signature:___________________________ Name:________________________________ Organisation: _____________________________________ BinProlog3.45/cparser/ 40755 764 764 0 5764564553 13663 5ustar javierjavierBinProlog3.45/cparser/wterm.c100644 764 764 30070 5676227026 15273 0ustar javierjavier#include #include #include "token.h" #include "interf.h" #define QUOTED 1 #define IGNORE_OPS 2 #define NUMBERVARS 4 #define WLTERM 256 #define OPTIONMASK 255 #define WBUFSIZE (4096) #define WBUFSLACK 64 #define SOLO_ITEM 1 #define NUMERIC_ITEM 2 #define IDENTIFIER_ITEM 3 #define QUOTED_ATOM_ITEM 4 #define GRAPHIC_ITEM 5 #define VARNUM 1024 #define RESETWBUF() wptr = wbuffer+1 #define PUTCHAR(c) {*wptr++ = (c);} #define PUTSOLO(c) {*lastitem = SOLO_ITEM; *wptr++ = (c);} #define CHECKBUFFER(file) if (wptr > wbuffer+1+WBUFSIZE) wptr = flushbuffer(file,wptr,wbuffer) #define USDVAR(s) ((s[0] == '$') && (s[1] == 'V') && \ (s[2] == 'A') && (s[3] == 'R') && (!s[4])) #define PUTINT(i) \ { \ register unsigned n = (i); \ unsigned char tempbuffer[20]; \ register unsigned char *p = tempbuffer; \ do { \ *p++ = n % 10 + '0'; \ n /= 10; \ } while (n); \ do { \ PUTCHAR(*--p); \ } while (p > tempbuffer); \ } #define FUNCTIONAL(tp,termname) \ { \ if ((options & NUMBERVARS) && USDVAR(termname) && __ARITY(tp) == 1) { \ register int varno; \ register termtype *tp2; \ \ tp2 = __LASTARG(tp,1); \ tp2 = deref(tp2); \ if (ISINT(tp2)) { \ varno = __INT(tp2); \ if (*lastitem == IDENTIFIER_ITEM) PUTCHAR(' '); \ PUTCHAR(varno % 26 + 'A'); \ if (varno = varno / 26) { \ PUTINT(varno); \ } \ *lastitem = IDENTIFIER_ITEM; \ return wptr; \ } \ } \ wptr = showname(termname, options, lastitem, wptr); \ PUTSOLO('('); \ for (i=1; i < __ARITY(tp); i++) { \ wptr = recwriteterm(file, __ARG(tp,i), options, 1000, 1201, lastitem, wptr, wbuffer); \ PUTSOLO(','); \ } \ wptr = recwriteterm(file, __LASTARG(tp,__ARITY(tp)), options, 1000, 1201, lastitem, wptr, wbuffer); \ PUTSOLO(')'); \ } static unsigned char *flushbuffer(file,wptr,wbuffer) FILE *file; unsigned char *wptr, *wbuffer; /* * write buffer is copied to file */ { *wptr = 0; fprintf(file,"%s",wbuffer+1); *wbuffer = wptr[-1]; RESETWBUF(); fflush(file); return wptr; } static int needquotes(s) unsigned char *s; /* * function that checks whether an atom should be quoted * in order to make it readable by read_term/3 again */ { if (small_letter_char(*s)) { s++; while (alpha_numeric_char(*s)) s++; return *s; } else if (end_token(*s) && !s[1]) { return 1; } else if (graphic_token_char(*s)) { s++; while (graphic_token_char(*s)) s++; return *s; } else if (semicolon_char(*s) && !s[1]) return 0; else if (cut_char(*s) && !s[1]) return 0; else if (solo_char(*s) && !s[1]) return 1; else if (open_list_char(s[0]) && close_list_char(s[1]) && !s[2]) return 0; else if (open_curly_char(s[0]) && close_curly_char(s[1]) && !s[2]) return 0; return 1; } static unsigned char *showname(tn, options, lastitem, wptr) char *tn; int options; int *lastitem; unsigned char *wptr; /* * outputs a name, adds quotes and layout text if needed */ { register unsigned char *s = (unsigned char *)tn; /* type conversion */ if ((options & QUOTED) && needquotes(s)) { if (*lastitem == QUOTED_ATOM_ITEM) PUTCHAR(' '); PUTCHAR('\''); while (*s) { if (*s >= ' ') { if (backslash_char(*s)) { /* escape char should be duplicated in order to denote itself */ PUTCHAR(*s); PUTCHAR(*s); } else if (single_quote_char(*s)) { PUTCHAR('\\'); PUTCHAR('\''); } else PUTCHAR(*s); } else { PUTCHAR('\\'); switch (*s) { case 7: PUTCHAR('a'); break; case 8: PUTCHAR('b'); break; case 9: PUTCHAR('t'); break; case 10: PUTCHAR('n'); break; case 11: PUTCHAR('v'); break; case 12: PUTCHAR('f'); break; case 13: PUTCHAR('r'); break; } } s++; } PUTCHAR('\''); *lastitem = QUOTED_ATOM_ITEM; } else { /* not needed if (!s[1] && (open_char(*s) || close_char(*s) || open_list_char(*s) || close_list_char(*s) || open_curly_char(*s) || close_curly_char(*s) || head_tail_separator_char(*s) || end_line_comment_char(*s))) { PUTCHAR('\''); PUTCHAR(*s); PUTCHAR('\''); *lastitem = QUOTED_ATOM_ITEM; } else { **************/ if ((*lastitem == IDENTIFIER_ITEM || *lastitem == NUMERIC_ITEM) && alpha_numeric_char(*s) || *lastitem == GRAPHIC_ITEM && graphic_token_char(*s)) PUTCHAR(' '); while (*s) { PUTCHAR(*s); s++; } if (graphic_token_char(wptr[-1])) *lastitem = GRAPHIC_ITEM; else if (solo_char(wptr[-1])) *lastitem = SOLO_ITEM; /* kdb inserted to cover a;b */ else *lastitem = IDENTIFIER_ITEM; } return wptr; } static int needspace(tp, termpri) termtype *tp; int termpri; /* * checks whether the term tp will be displayed between * brackets, given the priority level termpri. In that * case a space need to be inserted before the left bracket. */ { int prepri, inpri, postpri, spec; if (!tp) return 0; tp = deref(tp); if (ISATOM(tp)) return operator(__ATOMNAME(tp),&prepri,&inpri,&postpri,&spec); else if (ISTERM(tp)) { if(operator(__TERMNAME(tp), &prepri, &inpri, &postpri, &spec)) { if (__ARITY(tp)==2) return inpri >= termpri; if (__ARITY(tp)==1) { if (isprefix(spec) && ispostfix(spec)) { /* in case of ambiguity: select the associative operator over the nonassociative select prefix over postfix */ if (isfy(spec)) spec = isfy(-1); else if (isyf(spec)) spec = isyf(-1); else spec = isfx(-1); } if (isprefix(spec)) return prepri >= termpri; else return postpri >= termpri; } else return 0; } else return 0; } else return 0; } static unsigned char *recwriteterm(file, tp, options,termpri,atompri,lastitem,wptr,wbuffer) FILE *file; termtype *tp; int options; int termpri, atompri; int *lastitem; unsigned char *wptr, *wbuffer; /* * recursive writeterm routine */ { int prepri, inpri, postpri, spec; if (!tp) return wptr; CHECKBUFFER(file); tp = deref(tp); if (ISINT(tp)) { register int intval = __INT(tp); if (intval < 0) { if (*lastitem == GRAPHIC_ITEM) PUTCHAR(' '); PUTCHAR('-'); intval = -intval; } else { if (*lastitem == NUMERIC_ITEM || *lastitem == IDENTIFIER_ITEM) PUTCHAR(' '); } PUTINT(intval); *lastitem = NUMERIC_ITEM; } else if (ISATOM(tp)) { register int brackets = 0; register char *atomname = __ATOMNAME(tp); if (atompri == 1201) wptr = showname(atomname, options, lastitem, wptr); else { if (operator(atomname,&prepri,&inpri,&postpri,&spec)) { if (prepri >= atompri) brackets = 1; if (inpri >= atompri) brackets = 1; if (postpri >= atompri) brackets = 1; if (comma_char(atomname[0]) && !atomname[1]) brackets = 1; } if (brackets) PUTSOLO('('); wptr = showname(atomname, options, lastitem, wptr); if (brackets) PUTSOLO(')'); } } else if (ISFLOAT(tp)) { register double ff = __FLOAT(tp); if (ff < 0.0) { if (*lastitem == GRAPHIC_ITEM) PUTCHAR(' '); } else { if (*lastitem == NUMERIC_ITEM || *lastitem == IDENTIFIER_ITEM) PUTCHAR(' '); } sprintf(wptr,"%f", __FLOAT(tp)); while (*wptr) wptr++; *lastitem = NUMERIC_ITEM; } else if (ISTERM(tp)) { register char *termname = __TERMNAME(tp); register int termarity = __ARITY(tp); register int i; if (options & IGNORE_OPS || termarity > 2) { FUNCTIONAL(tp,termname); } else /* operator definitions are now in effect */ if (termarity == 2) { if (end_char(termname[0]) && !termname[1]) { /* list constructor */ register int first = 1; PUTSOLO('['); do { if (first) first = 0; else PUTSOLO(','); wptr = recwriteterm(file, __ARG(tp,1), options, 1000, 1201, lastitem, wptr, wbuffer); tp = __LASTARG(tp,2); tp = deref(tp); } while (ISTERM(tp) && (termname = __TERMNAME(tp)) && end_char(termname[0]) && !termname[1]); if (!ISATOM(tp) || strcmp(__ATOMNAME(tp),"[]")) { PUTSOLO('|'); wptr = recwriteterm(file,tp,options, 1000, 1201, lastitem, wptr, wbuffer); } PUTSOLO(']'); } else if (operator(termname, &prepri, &inpri, &postpri, &spec) && isinfix(spec) && inpri) { if (inpri >= termpri || (options & WLTERM) && isxfy(spec) && inpri+1==termpri) PUTSOLO('('); if (isyfx(spec)) wptr = recwriteterm(file, __ARG(tp,1), options | WLTERM, inpri+1,0, lastitem, wptr, wbuffer); else wptr = recwriteterm(file, __ARG(tp,1), options & OPTIONMASK, inpri,0, lastitem, wptr, wbuffer); if (comma_char(termname[0]) && !termname[1]) { PUTSOLO(','); } else wptr = showname(termname, options, lastitem, wptr); wptr = recwriteterm(file,__LASTARG(tp,2),options,isxfy(spec)?inpri+1:inpri,0, lastitem, wptr, wbuffer); if (inpri >= termpri || (options & WLTERM) && isxfy(spec) && inpri+1==termpri) PUTSOLO(')'); } else { FUNCTIONAL(tp,termname); } } else if (termarity == 1) { if (operator(termname, &prepri, &inpri, &postpri, &spec)) { if (isprefix(spec) && ispostfix(spec)) { /* in case of ambiguity: select the associative operator over the nonassociative select prefix over postfix */ if (isfy(spec)) spec = isfy(-1); else if (isyf(spec)) spec = isyf(-1); else spec = isfx(-1); } if (isprefix(spec) && prepri) { if (prepri >= termpri || (options & WLTERM) && isfy(spec) && prepri+1==termpri) PUTSOLO('('); wptr = showname(termname, options, lastitem, wptr); if (needspace(__LASTARG(tp,1),isfy(spec)?prepri+1:prepri)) PUTSOLO(' '); wptr = recwriteterm(file, __LASTARG(tp,1), options, isfy(spec)?prepri+1:prepri,0, lastitem, wptr, wbuffer); if (prepri >= termpri || (options & WLTERM) && isfy(spec) && prepri+1==termpri) PUTSOLO(')'); } else if (ispostfix(spec) && postpri) { if (postpri >= termpri) PUTSOLO('('); if (isyf(spec)) wptr = recwriteterm(file, __LASTARG(tp,1), options | WLTERM, postpri+1, 0, lastitem, wptr, wbuffer); else wptr = recwriteterm(file, __LASTARG(tp,1), options, postpri, 0, lastitem, wptr, wbuffer); wptr = showname(termname, options, lastitem, wptr); if (postpri >= termpri) PUTSOLO(')'); } else { FUNCTIONAL(tp,termname); } } else if (open_curly_char(termname[0]) && close_curly_char(termname[1]) && !termname[2]) { /* curly brackets */ PUTSOLO('{'); wptr = recwriteterm(file, __LASTARG(tp,1), options, 1201,1201, lastitem, wptr, wbuffer); PUTSOLO('}'); } else { FUNCTIONAL(tp,termname); } } else { FUNCTIONAL(tp,termname); } } else if (ISVAR(tp)) { if (*lastitem == IDENTIFIER_ITEM) { PUTCHAR(' '); } putvarname(wptr, tp); while (*wptr) wptr++; *lastitem = IDENTIFIER_ITEM; /* same properties as variable */ } else { fprintf(stderr, "Unknown term type (%08x)\n", tp); } return wptr; } int writeterm(file, tp, options) FILE *file; termtype *tp; int options; { unsigned char wbuffer[1+WBUFSIZE+MAXTOKENLENGTH+WBUFSLACK]; /* * +-+-------------------+------------+ * |p| wbufsize | reserve | * +-+-------------------+------------+ * * p = previous character */ unsigned char *wptr; int lastitem = SOLO_ITEM; #if 0 printf("file=%08x\n", file); file = stdout; #endif RESETWBUF(); wptr = recwriteterm(file, tp, options, 1201,1201,&lastitem,wptr,wbuffer); wptr = flushbuffer(file,wptr,wbuffer); return lastitem; } void putbyte(file, c) FILE *file; char c; { fputc(c, file); } BinProlog3.45/cparser/rterm.c100644 764 764 63303 5676226734 15300 0ustar javierjavier#include #include #include #include #include "token.h" #include "interf.h" void *malloc(); long strlen(); #define BALLOC(P,T) { if (blockroot) { \ (P) = (T *)blockroot; blockroot = blockroot->next; \ } else { \ (P) = (T *)malloc(sizeof(struct blocklist)); \ }} #define BFREE(P) {((blocklist *)(P))->next = blockroot; \ blockroot = (blocklist *)(P);} /* parse stack */ typedef struct stacktype { int tokentype; int priority; int specifier; termtype *term; struct stacktype *down; } stacktype; /* variable list */ typedef struct varlist { termtype *var; symboltype *name; int refcount; struct varlist *next; } varlist; /* free memory list */ typedef struct blocklist { struct blocklist *next; unsigned char body[sizeof(struct stacktype)>sizeof(struct varlist) ? (sizeof(struct stacktype)-4) : (sizeof(struct varlist)-4)]; } blocklist; typedef struct openfile { struct openfile *next; FILE *file; char name[30]; unsigned char *ptr, *end, *buffer; } openfile; stacktype *pstack; int varcount; varlist *varroot = (varlist *)NULL; blocklist *blockroot; FILE *inputfile = (FILE*)NULL; openfile *filelist = (openfile*)NULL; openfile *currentfile = (openfile*)NULL; /* variable management ; all correctly parsed variable names are put in a list to be used later to return the variables names to the options of read_term/3 */ void initvars() /* initialize variable list */ { varcount = 0; varroot = (varlist *)NULL; } varlist *findvar(varname) register symboltype *varname; /* find name of variable in variable list; return 0 is not found */ { register varlist *vlp = varroot; while (vlp) { if (vlp->name == varname) return vlp; else vlp = vlp->next; } return 0; } termtype *createvar(H,s) register heapcell *H; register unsigned char *s; /* create variable in variable list if it does not already exist. If it already exists, increment reference counter */ { register varlist *vlp; register symboltype *varname = getsymbol(s,0); if ((s[0] == '_' && !s[1]) || !(vlp = findvar(varname))) { BALLOC(vlp,varlist); vlp->name = varname; vlp->var = makevar(H); vlp->refcount = 0; vlp->next = varroot; varroot = vlp; } vlp->refcount++; return vlp->var; } termtype *makevariablesoption(H) register heapcell *H; /* generate list of variable to be used by the option variables(T) T = [v1,v2,...] */ { register varlist *vlp = varroot; register termtype *t; t = makeatom(H,"[]"); while (vlp) { termtype *t2 = maketerm(H, ".",2); __ARG(t2, 1) = vlp->var; __ARG(t2, 2) = t; t = t2; vlp = vlp->next; } return t; } termtype *makevariable_namesoption(H) register heapcell *H; /* generate list of variable to be used by the option variable_names(T) T = [v1='name1',v2='name2',...] */ { register varlist *vlp = varroot; register termtype *t; register symboltype *anonymous = getsymbol("_",0); t = makeatom(H,"[]"); while (vlp) { if (vlp->name != anonymous) { termtype *t2 = maketerm(H, ".", 2); __ARG(t2, 2) = t; t = t2; t2 = maketerm(H, "=", 2); __ARG(t2, 1) = vlp->var; __ARG(t2, 2) = (termtype *)vlp->name; __ARG(t, 1) = t2; } vlp = vlp->next; } return t; } termtype *makesingletonsoption(H) register heapcell *H; /* generate list of variable to be used by the option singletons(T) T = [v1='name1',v2='name2',...] */ { register varlist *vlp = varroot; register termtype *t; register symboltype *anonymous = getsymbol("_",0); t = makeatom(H,"[]"); while (vlp) { if (vlp->refcount == 1 && vlp->name != anonymous) { register termtype *t2 = maketerm(H, ".", 2); __ARG(t2, 2) = t; t = t2; t2 = maketerm(H, "=", 2); __ARG(t2, 1) = vlp->var; __ARG(t2, 2) = (termtype *)vlp->name; __ARG(t, 1) = t2; } vlp = vlp->next; } return t; } void releasevars() { register varlist *vlp = varroot; while (vlp) { register varlist *vlq = vlp->next; BFREE(vlp); vlp = vlq; } varroot = (varlist *)NULL; } void reduce(H,newpri) register heapcell *H; register int newpri; /* * lterm = term, op, term ; * f(a,b) a f b * n n-a n n-1 * xfx * * lterm = lterm, op, term ; * f(a,b) a f b * n n n n-1 * yfx * * term = term, op, term ; * f(a,b) a f b * n n-1 n n * xfy * * lterm = lterm, op ; * f(a) a f * n n n * yf * * lterm = term, op ; * f(a) a f * n n-1 n * xf * * term = op, term ; * f(a) f a * n n n * fy * * lterm = op, term ; * f(a) f a * n n n-1 * fx */ { register stacktype *top1, *top2, *top3; reduce: if (top1 = pstack) { if (top2 = top1->down) { if (top3 = top2->down) { if (isxfx(top2->specifier)) { if (top2->priority <= newpri && isterm(top3->specifier) && top3->priority < top2->priority && isterm(top1->specifier) && top1->priority < top2->priority) { top2->term = maketerm(H,__ATOMNAME(top2->term), 2); __ARG(top2->term,1) = top3->term; __ARG(top2->term,2) = top1->term; top2->down = top3->down; BFREE(top3); BFREE(top1); pstack = top2; pstack->specifier = LTERM; pstack->tokentype = TERMTYPE; goto reduce; } } else if (isyfx(top2->specifier)) { if (top2->priority <= newpri && (isterm(top3->specifier) && top3->priority < top2->priority || islterm(top3->specifier) && top3->priority == top2->priority) && isterm(top1->specifier) && top1->priority < top2->priority) { top2->term = maketerm(H,__ATOMNAME(top2->term), 2); __ARG(top2->term,1) = top3->term; __ARG(top2->term,2) = top1->term; top2->down = top3->down; BFREE(top3); BFREE(top1); pstack = top2; pstack->specifier = LTERM; pstack->tokentype = TERMTYPE; goto reduce; } } else if (isxfy(top2->specifier)) { if (top2->priority < newpri && isterm(top3->specifier) && top3->priority < top2->priority && isterm(top1->specifier) && top1->priority <= top2->priority) { if (top2->tokentype == COMMA_TOKEN) top2->term = maketerm(H, ",", 2); else top2->term = maketerm(H,__ATOMNAME(top2->term), 2); __ARG(top2->term,1) = top3->term; __ARG(top2->term,2) = top1->term; top2->down = top3->down; BFREE(top3); BFREE(top1); pstack = top2; pstack->specifier = TERM; pstack->tokentype = TERMTYPE; goto reduce; } } } if (isyf(top1->specifier)) { if (isterm(top2->specifier) && top2->priority < top1->priority || islterm(top2->specifier) && top2->priority == top1->priority) { top1->term = maketerm(H,__ATOMNAME(top1->term), 1); __ARG(top1->term,1) = top2->term; top1->down = top2->down; BFREE(top2); pstack->specifier = LTERM; pstack->tokentype = TERMTYPE; goto reduce; } } else if (isxf(top1->specifier)) { if (isterm(top2->specifier) && top2->priority < top1->priority) { top1->term = maketerm(H,__ATOMNAME(top1->term), 1); __ARG(top1->term,1) = top2->term; top1->down = top2->down; BFREE(top2); pstack->specifier = LTERM; pstack->tokentype = TERMTYPE; goto reduce; } } else if (isfy(top2->specifier)) { if (top2->priority < newpri && isterm(top1->specifier) && top1->priority <= top2->priority) { top2->term = maketerm(H,__ATOMNAME(top2->term), 1); __ARG(top2->term,1) = top1->term; BFREE(top1); pstack = top2; pstack->specifier = TERM; pstack->tokentype = TERMTYPE; goto reduce; } } else if (isfx(top2->specifier)) { if (top2->priority <= newpri && isterm(top1->specifier) && top1->priority < top2->priority) { top2->term = maketerm(H,__ATOMNAME(top2->term), 1); __ARG(top2->term,1) = top1->term; BFREE(top1); pstack = top2; pstack->specifier = LTERM; pstack->tokentype = TERMTYPE; goto reduce; } } } } } void shift(tok, tterm, pri, spec) register int tok; register termtype *tterm; register int pri; { register stacktype *sp; BALLOC(sp,stacktype); sp->tokentype = tok; sp->term = tterm; sp->priority = pri; sp->specifier = spec; sp->down = pstack; pstack = sp; } void releasestack() /* return memory used for the variable list */ { register stacktype *vlp = pstack; while (vlp) { register stacktype *vlq = vlp->down; BFREE(vlp); vlp = vlq; } } void shift_char_code_list(H,s) register heapcell *H; register unsigned char *s; /* * term = char code list * * this is list containing the ascii values of the characters belonging * to the string. */ { register termtype *listterm, *secondarg; register unsigned char *p = s+strlen(s); secondarg = makeatom(H,"[]"); while (p > s) { listterm = maketerm(H, ".", 2); __ARG(listterm,1) = makeinteger(H,*--p); __ARG(listterm,2) = secondarg; secondarg = listterm; } shift(TERMTYPE,secondarg,0,TERM); } void shifttoken(H,tok) register heapcell *H; register int tok; /* * term = integer ; (* 6.3.1.1 *) * term = float number ; (* 6.3.1.1 *) * term = - integer ; (* 6.3.1.2 *) * term = - float number ; (* 6.3.1.2 *) * term = atom ; (not an operator) (* 6.3.1.2 *) * term = atom ; (an operator ) (* 6.3.1.2 *) * atom = name ; * atom = empty list ; * empty list = open list, close list ; * atom = curly brackets ; * curly brackets = open curly, close curly ; * term = variable */ { switch (tok) { case NAME_TOKEN: { int prepri, inpri, postpri, spec; register int inpostpri, sumpri; if (operator(tokenstring, &prepri, &inpri, &postpri, &spec)) { /* an operator */ if (prepri > 0 && (inpostpri = inpri + postpri) > 0) { /* infix and postfix do never occur together 6.3.4.2 */ if (open_char(LOOKAHEAD_CHAR)) { /* prefix can never be followed directly by an open char */ reduce(H,inpostpri); shift(NAME_TOKEN,makeatom(H,tokenstring), inpostpri, spec & (XFX|XFY|YFX|YF|XF)); } else { if (pstack) { reduce(H,inpostpri); /* must be done before testing the stack */ if (isterm(pstack->specifier)) { /* can be either infix of postfix */ shift(NAME_TOKEN, makeatom(H,tokenstring), inpostpri, spec & (XFX|XFY|YFX|XF|YF)); } else { /* in the beginning of an expression -> must be prefix */ shift(NAME_TOKEN,makeatom(H,tokenstring),prepri,isprefix(spec)); } } else /* empty stack */ shift(NAME_TOKEN, makeatom(H,tokenstring),prepri,spec&(FX|FY)); } } else { /* there is only one specifier with priority sumpri */ reduce(H, sumpri = prepri+inpri+postpri); shift(NAME_TOKEN,makeatom(H,tokenstring), sumpri, spec); } } else /* not an operator */ shift(NAME_TOKEN,makeatom(H,tokenstring),0,TERM); break; } case VARIABLE_TOKEN: shift(VARIABLE_TOKEN,createvar(H,tokenstring),0,TERM); break; case INTEGER_TOKEN: if (pstack && pstack->term && ISATOM(pstack->term) && isprefix(pstack->specifier)) { /* * if a is a numeric constant, f is not - */ register char *s = __ATOMNAME(pstack->term); if (s[0] == '-' && !s[1]) { register stacktype *sp = pstack; pstack = pstack->down; BFREE(sp); shift(INTEGER_TOKEN,makeinteger(H,-integertoken),0,TERM); break; } } shift(INTEGER_TOKEN,makeinteger(H,integertoken),0,TERM); break; case FLOAT_NUMBER_TOKEN: if (pstack && pstack->term && ISATOM(pstack->term) && isprefix(pstack->specifier)) { /* * if a is a numeric constant, f is not - */ register char *s = __ATOMNAME(pstack->term); if (s[0] == '-' && !s[1]) { register stacktype *sp = pstack; pstack = pstack->down; BFREE(sp); shift(FLOAT_NUMBER_TOKEN,makefloat(H,-floattoken),0,TERM); break; } } shift(FLOAT_NUMBER_TOKEN,makefloat(H,floattoken),0,TERM); break; case CHAR_CODE_LIST_TOKEN: shift_char_code_list(H, tokenstring); break; case OPEN_TOKEN: shift(OPEN_TOKEN, (termtype *)NULL,1300,DELIMITER); break; case OPEN_CT_TOKEN: shift(OPEN_CT_TOKEN, (termtype *)NULL,1300,DELIMITER); break; case CLOSE_TOKEN: if (!reduceterm(H)) if (!reducebrackets(H)) seterr(ERR_INCOMPLETE_REDUCTION); break; case OPEN_LIST_TOKEN: shift(OPEN_LIST_TOKEN, (termtype *)NULL,1300,DELIMITER); break; case CLOSE_LIST_TOKEN: if (!reducelist(H)) seterr(ERR_INCOMPLETE_REDUCTION); break; case OPEN_CURLY_TOKEN: shift(OPEN_CURLY_TOKEN, (termtype *)NULL, 1300, DELIMITER); break; case CLOSE_CURLY_TOKEN: if (!reducecurly(H)) seterr(ERR_INCOMPLETE_REDUCTION); break; case HEAD_TAIL_SEPARATOR_TOKEN: reduce(H,1000); shift(HEAD_TAIL_SEPARATOR_TOKEN, (termtype *)NULL, 1000, DELIMITER); break; case COMMA_TOKEN: reduce(H,1000); shift(COMMA_TOKEN, (termtype *)NULL /* makeatom(H,",") */, 1000, XFY); break; case EOFFILE: reduce(H,1400); shift(EOFFILE, makeatom(H,"end_of_file"), 1400, DELIMITER); break; case END_TOKEN: break; } } void showspecifier(spec) register int spec; { if (spec & FX) printf(" fx"); if (spec & FY) printf(" fy"); if (spec & XF) printf(" xf"); if (spec & YF) printf(" yf"); if (spec & XFX) printf(" xfx"); if (spec & YFX) printf(" yfx"); if (spec & XFY) printf(" xfy"); if (islterm(spec)) printf("lterm"); else if (isterm(spec)) printf(" term"); if (spec & DELIMITER) printf(" del"); } void showstackelement(sp) register stacktype *sp; { printf("| %4d: ", sp->priority); printf(" %04x ", sp->specifier); showspecifier(sp->specifier); printf(" "); if (sp->term) { writeterm(stdout,sp->term,1+4); puts(""); } else { switch (sp->tokentype) { case COMMA_TOKEN: printf(",\n"); break; case OPEN_LIST_TOKEN: printf("[\n"); break; case CLOSE_LIST_TOKEN: printf("]\n"); break; case HEAD_TAIL_SEPARATOR_TOKEN: printf("|\n"); break; case OPEN_CURLY_TOKEN: printf("{\n"); break; case CLOSE_CURLY_TOKEN: printf("}\n"); break; case OPEN_CT_TOKEN: printf("(\n"); break; case OPEN_TOKEN: printf("(\n"); break; case CLOSE_TOKEN: printf(")\n"); break; case END_TOKEN: printf(".\n"); break; } } } void showstack() { register stacktype *sp = pstack; puts(""); printf("=====================\n"); while (sp) { showstackelement(sp); sp = sp->down; } printf("=====================\n"); } termtype *readterm(file,H) FILE *file; register heapcell *H; /* * this procedure reads tokens and puts them on the stack * until it read either eof or end token. If one term is * left on the stack, the clause is correctly parsed. */ { register int tok; pstack = (stacktype *)NULL; if (inputfile) { if(inputfile != file) { inputbuffer = (unsigned char *)NULL; if (currentfile) { currentfile->ptr = bufferptr; currentfile->end = bufferend; } currentfile = filelist; while (currentfile) { if (currentfile->file == file) break; else currentfile = currentfile->next; } assert(currentfile); inputbuffer = currentfile->buffer; bufferptr = currentfile->ptr; bufferend = currentfile->end; inputfile = currentfile->file; } } else { currentfile = filelist; while (currentfile) { if (currentfile->file == file) break; else currentfile = currentfile->next; } assert(currentfile); inputbuffer = currentfile->buffer; bufferptr = currentfile->ptr; bufferend = currentfile->end; inputfile = currentfile->file; } assert(inputbuffer); initvars(); parseerror = ERR_NOERROR; do { shifttoken(H,tok=token()); } while (tok != EOFFILE && tok != END_TOKEN && parseerror == ERR_NOERROR); reduce(H,1400); if (tok == EOFFILE) { if (pstack->down) { seterr(ERR_UNEXPECTED_EOF); showerror(); showstack(); releasestack(); return (termtype *)NULL; } } if (parseerror == ERR_NOERROR && (tok==EOFFILE || tok==END_TOKEN) && pstack && !pstack->down && pstack->term) { register termtype *tp = pstack->term; releasestack(); return tp; } else { while (tok != EOFFILE && tok != END_TOKEN) tok=token(); if (parseerror == ERR_NOERROR) seterr(ERR_INCOMPLETE_REDUCTION); showerror(); showstack(); releasestack(); return (termtype *)NULL; } } int showfbuf() { openfile *p = filelist; int count = 0; while (p) { count++; printf("%4d %s\n", fileno(p->file), p->name); p = p->next; } printf("buffers = %d\n", count); return 1; } /**************** ****************/ void allocatefilebuffer(file,name) FILE *file; char *name; { openfile *p = filelist; while (p) { if (p->file == file) return; else p = p->next; } p = (openfile *)malloc(sizeof(struct openfile)); p->next = filelist; filelist = p; p->file = file; strcpy(p->name, name); p->buffer = (unsigned char *)malloc(SLACK+INPUTBUFFERSIZE); p->end = p->ptr = &(p->buffer[SLACK]); } void returnfilebuffer(file) FILE *file; { openfile *p = filelist, *q = (openfile *)NULL; while (p) { if (p->file == file) p = (openfile *)NULL; else { q = p; p = p->next; if (!p) { fprintf(stderr, "error in returnfilebuffer %d\n", fileno(file)); return; } } } if (q) { p = q->next; if (q->next == currentfile) { currentfile = (openfile *)NULL; inputfile = (FILE *)NULL; inputbuffer = (unsigned char *)NULL; } q->next = p->next; free(p->buffer); free(p); } else if (filelist) { q = filelist; if (filelist == currentfile) { currentfile = (openfile *)NULL; inputfile = (FILE *)NULL; inputbuffer = (unsigned char *)NULL; } filelist = filelist->next; free(q->buffer); free(q); } } int getbyte(file) FILE *file; { if (inputfile) { if(inputfile != file) { return getc(file); } else { int c = advance_char(); return c ? c : -1; } } else { return getc(file); } } int peekbyte(file) FILE *file; { if (inputfile) { if(inputfile != file) { return ungetc(getc(file),file); } else { int c = LOOKAHEAD_CHAR; return c ? c : -1; } } else { return ungetc(getc(file),file); } } long iso_lseek(file, p, whence) FILE *file; long p; int whence; { if (inputfile) { if(inputfile != file) { return lseek(fileno(file),p,whence); } else { if (!LOOKAHEAD_CHAR) return lseek(fileno(file),0,SEEK_END); else { lseek(fileno(file),bufferptr-bufferend,SEEK_CUR); bufferptr = bufferend; return lseek(fileno(file),p,whence); } } } else { return lseek(fileno(file),p,whence); } } int iso_eof(file) FILE *file; { if (inputfile) { if(inputfile != file) { return feof(file); } else { return !LOOKAHEAD_CHAR; } } else { return feof(file); } } int reducelist(H) register heapcell *H; /* * term = open list, items, close list ; (* 6.3.5 *) * items = exp, comma, items ; * items = exp, ht sep, exp ; * items = exp ; * * exp = atom (operator but no comma); * exp = term (priority < 1000) */ { if (!pstack) return 0; /* empty stack */ if (pstack->tokentype == OPEN_LIST_TOKEN) { /* empty list */ pstack->specifier = TERM; pstack->tokentype = NAME_TOKEN; /* behaves like atom 6.3.1.3 */ pstack->term = makeatom(H,"[]"); pstack->priority = 0; return 1; } else { register stacktype *sp; register termtype *tterm; register int arty = 0, inlist = 1; reduce(H,1000); sp = pstack; do { if (isterm(sp->specifier) || isop(sp->specifier) && sp->tokentype != COMMA_TOKEN) { arty++; sp = sp->down; } else return 0; if (!sp) return 0; if (sp->tokentype == HEAD_TAIL_SEPARATOR_TOKEN) { if (arty == 1) { sp = sp->down; if (!sp) return 0; } else return 0; } else if (sp->tokentype == COMMA_TOKEN) { sp = sp->down; if (!sp) return 0; } else if (sp->tokentype == OPEN_LIST_TOKEN) inlist = 0; else return 0; } while (inlist); if (pstack->down->tokentype != HEAD_TAIL_SEPARATOR_TOKEN) { shift(HEAD_TAIL_SEPARATOR_TOKEN, (termtype *)NULL, 1000, DELIMITER); shift(NAME_TOKEN, makeatom(H,"[]"), 0, TERM); arty++; } tterm = pstack->term; sp = pstack; pstack = pstack->down; BFREE(sp); while (--arty) { register termtype *lterm = maketerm(H, ".", 2); sp = pstack->down; BFREE(pstack); __ARG(lterm,1) = sp->term; __ARG(lterm,2) = tterm; tterm = lterm; pstack = sp->down; BFREE(sp); } pstack->term = tterm; pstack->tokentype = TERMTYPE; pstack->specifier = TERM; pstack->priority = 0; return 1; } } int reduceterm(H) register heapcell *H; /* * term = atom, open ct, arg list, close ; * * arg list = exp ; * arg list = exp , comma, arg list ; */ { register stacktype *sp; register termtype *tterm; register int arty = 0, interm = 1; if (!pstack) return 0; reduce(H,1000); /* was: 999; kdb */ sp = pstack; do { if ((isterm(sp->specifier) && sp->priority < 1000) || isop(sp->specifier) && sp->tokentype != COMMA_TOKEN) { arty++; sp = sp->down; } else return 0; if (!sp) return 0; if (sp->tokentype == COMMA_TOKEN) { sp = sp->down; if (!sp) return 0; } else if (sp->tokentype == OPEN_CT_TOKEN) { interm = 0; } else return 0; } while (interm); sp = sp->down; if (!sp) return 0; if (sp->tokentype != NAME_TOKEN) return 0; /* term must contain atom */ /* postfix operator can never occur individually, it immediately reduces. if it occurs, it must be a function name */ if (isinfix(sp->specifier) && sp->down) { /* if (isterm(sp->down->specifier)) return 0; term infix_op (exp) */ if (!(separator_token(sp->down->tokentype) || isop(sp->down->specifier))) { return 0; } } tterm = maketerm(H,__ATOMNAME(sp->term),arty); while (arty) { __ARG(tterm,arty--) = pstack->term; sp = pstack->down; BFREE(pstack); pstack = sp->down; BFREE(sp); } pstack->priority = 0; pstack->tokentype = TERMTYPE; pstack->specifier = TERM; pstack->term = tterm; return 1; } termtype *separator2atom(H,tok) register heapcell *H; register int tok; { switch (tok) { case OPEN_LIST_TOKEN: return makeatom(H,"["); case CLOSE_LIST_TOKEN: return makeatom(H,"]"); case HEAD_TAIL_SEPARATOR_TOKEN: return makeatom(H,"|"); case OPEN_CT_TOKEN: case OPEN_TOKEN: return makeatom(H,"("); case CLOSE_TOKEN: return makeatom(H,")"); case OPEN_CURLY_TOKEN: return makeatom(H,"{"); case CLOSE_CURLY_TOKEN: return makeatom(H,"}"); case END_TOKEN: return makeatom(H,"."); case COMMA_TOKEN: return makeatom(H,","); } return (termtype *)NULL; } int reducebrackets(H) register heapcell *H; /* * 6.3.4.1 * term = open, term, close ; * term = copen ct, term, close ; */ { register stacktype *sp; if (!pstack) return 0; reduce(H,1300); /* anything can between brackets */ sp = pstack->down; if (!sp) return 0; if (sp->tokentype == OPEN_TOKEN || sp->tokentype == OPEN_CT_TOKEN) { pstack->down = sp->down; BFREE(sp); if (!pstack->term) { if (pstack->tokentype & SEPARATORBIT) return 0; pstack->term = separator2atom(H,pstack->tokentype); } pstack->specifier = TERM; pstack->tokentype = TERMTYPE; pstack->priority = 0; return 1; } else return 0; } int reducecurly(H) register heapcell *H; /* * term = open curly, term, close curly ; */ { if (!pstack) return 0; if (pstack->tokentype == OPEN_CURLY_TOKEN) { pstack->specifier = TERM; pstack->tokentype = NAME_TOKEN; /* behaves like atom 6.3.1.3 */ pstack->priority = 0; pstack->term = makeatom(H,"{}"); return 1; } else { register stacktype *sp; reduce(H,1300); /* anything can between curly brackets */ sp = pstack->down; if (!sp) return 0; if (sp->tokentype == OPEN_CURLY_TOKEN) { register termtype *tterm = pstack->term; if (!tterm) { if (pstack->tokentype == COMMA_TOKEN) return 0; tterm = separator2atom(H,pstack->tokentype); } pstack->down = sp->down; BFREE(sp); pstack->tokentype = TERMTYPE; pstack->priority = 0; pstack->specifier = TERM; pstack->term = maketerm(H, "{}",1); __ARG(pstack->term,1) = tterm; return 1; } else return 0; } } BinProlog3.45/cparser/token.c100644 764 764 57123 5676227056 15270 0ustar javierjavier#include #include #include "token.h" unsigned char *inputbuffer = (unsigned char *)NULL; unsigned char *bufferend=(unsigned char *)NULL; unsigned char *bufferptr=(unsigned char *)NULL; int inputhandle = 0; unsigned char tokenstring[MAXTOKENLENGTH+1]; unsigned char *tokenptr; int integertoken; double floattoken; unsigned char tokenchar; int parseerror; int errorline; int linenumber = 1; unsigned char chararr[256]; unsigned char charconv[256]; #define CHAR_CONVERSION() tokenchar = charconv[tokenchar] #define RESETTOKEN tokenptr = tokenstring #define ADDTOKENCHAR(c) { if (tokenptr < tokenstring+MAXTOKENLENGTH) { \ *tokenptr++ = (c); } else seterr(ERR_TOKEN_TOO_LONG); } #define TOKENLENGTH (tokenptr - tokenstring) /* return next char and skip it ; update line count */ #define SKIPCHAR() (new_line_char(*bufferptr) ? \ (linenumber++, *bufferptr++) : *bufferptr++) void inittokenizer() { register unsigned int i; for (i=0 ; i<=255; i++) { chararr[i] = 0; if (PROLOGCHAR(i)) chararr[i] |= _PROLOGCHAR; if (GRAPHIC_CHAR(i)) chararr[i] |= _GRAPHIC_CHAR; if (GRAPHIC_TOKEN_CHAR(i)) chararr[i] |= _GRAPHIC_TOKEN_CHAR; if (ALPHA_NUMERIC_CHAR(i)) chararr[i] |= _ALPHA_NUMERIC_CHAR; if (HEXADECIMAL_DIGIT_CHAR(i)) chararr[i] |= _HEXADECIMAL_DIGIT_CHAR; if (SOLO_CHAR(i)) chararr[i] |= _SOLO_CHAR; if (SYMBOLIC_CONTROL_CHAR(i)) chararr[i] |= _SYMBOLIC_CONTROL_CHAR; if (LAYOUT_CHAR(i)) chararr[i] |= _LAYOUT_CHAR; printf(""); } for (i=0 ; i<=255; i++) { charconv[i] = i; } } void seterr(err) register int err; { if (parseerror == ERR_NOERROR) { parseerror = err; errorline = linenumber; } } void showerror() { register char *s; switch (parseerror) { case ERR_NOERROR: s = "Clause correctly parsed"; break; case ERR_MISSING_QUOTE: s = "Missing quote"; break; case ERR_TOKEN_TOO_LONG: s = "Token too long"; break; case ERR_UNEXPECTED_EOF: s = "Unexpected eof"; break; case ERR_BACK_QUOTED_STRING: s = "Back quoted strings not supported"; break; case ERR_NONDET: s = "Non deterministic code"; break; case ERR_INCOMPLETE_REDUCTION: s = "Incomplete reduction"; break; default: s = "?"; } printf("syntax_error on line %d: %s\n", errorline, s); } int lookahead_char2() /* return current char and refill buffer is empty */ { if (bufferptr >= bufferend) { int count = fileread(&(inputbuffer[SLACK]), INPUTBUFFERSIZE); if (!count) { /* end-of-file ; return 0 */ count++; inputbuffer[SLACK] = 0; } bufferend = &(inputbuffer[SLACK+count]); bufferptr = &(inputbuffer[SLACK]); } return *bufferptr; } void returnchar(c) int c; /* return char to buffer */ /* SLACK is used in case the buffer would have been refilled */ { if (new_line_char(c)) linenumber--; *--bufferptr = c; } int advance_char() { lookahead_char2(); return SKIPCHAR(); } void single_line_comment() /* * single line comment (* 6.4.1 *) * = end line comment char (* 6.5.3 *), * comment txt (* 6.4.1 *), * new line char (* 6.5.4 *) ; */ { /* end_line_comment_char(LOOKAHEAD_CHAR) is true */ SKIPCHAR(); while (prologchar(LOOKAHEAD_CHAR) && !new_line_char(LOOKAHEAD_CHAR)) SKIPCHAR(); SKIPCHAR(); } int bracketed_comment() /* * bracketed comment (* 6.4.1 *) * = comment open (* 6.4.1 *), * comment text (* 6.4.1 *), * comment close (* 6.4.1 *) ; * comment open (* 6.4.1 *) * = comment 1 char (* 6.4.1 *), * comment 2 char (* 6.4.1 *) ; * comment close (* 6.4.1 *) * = comment 2 char (* 6.4.1 *), * comment 1 char (* 6.4.1 *) ; * comment text (* 6.4.1 *) * = { char (* 6.5 *) } ; */ { if (comment_1_char(LOOKAHEAD_CHAR)) { register unsigned char c = SKIPCHAR(); if (comment_2_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); do { while (prologchar(LOOKAHEAD_CHAR) && !comment_2_char(LOOKAHEAD_CHAR)) SKIPCHAR(); if (prologchar(LOOKAHEAD_CHAR)) SKIPCHAR(); } while (prologchar(LOOKAHEAD_CHAR) && !comment_1_char(LOOKAHEAD_CHAR)); if (prologchar(LOOKAHEAD_CHAR)) SKIPCHAR(); else { seterr(ERR_UNEXPECTED_EOF); return 0; } return 1; } else { returnchar(c); return 0; } } else return 0; } int char_code_list_token() /* * char code list token (* 6.4.6 *) * = double quote char (* 6.5.5 *), * { double quoted item } (* 6.5.6 *), * double quote char (* 6.5.5 *) ; */ { /* double_quote_token(LOOKAHEAD_CHAR) is true */ SKIPCHAR(); RESETTOKEN; while (get_double_quoted_item()) ; if (double_quote_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); ADDTOKENCHAR(0); /* terminator */ return 1; } else { seterr(ERR_UNEXPECTED_EOF); return 0; } } int number_token() /* * float number token (* 6.4.5 *) * = integer constant (* 6.4.4 *), * fraction (* 6.4.5 *), * [ exponent (* 6.4.5 *) ] ; * fraction (* 6.4.5 *) * = decimal point char (* 6.4.5 *), * decimal digit char (* 6.4.5 *), * { decimal digit char (* 6.5.2 *) ; * exponent (* 6.4.5 *) * = exponent char (* 6.4.5 *), * sign (* 6.4.5 *), * integer constant (* 6.4.4 *) ; * sign (* 6.4.5 *) * = negative sign char (* 6.4.5 *) * | [ positive sign char (* 6.4.5 *) ] ; * integer token (* 6.4.4 *) * = integer constant (* 6.4.4 *) * | character code constant (* 6.4.4 *) * | binary constant (* 6.4.4 *) * | octal constant (* 6.4.4 *) * | hexadecimal constant (* 6.4.4 *) ; * integer constant (* 6.4.4 *) * = decimal digit char (* 6.4.4 *), * { decimal digit char (* 6.4.4 *) } ; * character code constant (* 6.4.4 *) * = "0", single quote char (* 6.5.5 *), * single quoted char (* 6.4.2.1 *) ; */ { register unsigned char c; RESETTOKEN; ADDTOKENCHAR(SKIPCHAR()); while (decimal_digit_char(c = LOOKAHEAD_CHAR)) ADDTOKENCHAR(SKIPCHAR()); if (decimal_point_char(c)) { SKIPCHAR(); if (decimal_digit_char(LOOKAHEAD_CHAR)) { ADDTOKENCHAR('.'); ADDTOKENCHAR(SKIPCHAR()); while (decimal_digit_char(LOOKAHEAD_CHAR)) ADDTOKENCHAR(SKIPCHAR()); if (exponent_char(LOOKAHEAD_CHAR)) { unsigned char expchar = SKIPCHAR(); if (sign_char(LOOKAHEAD_CHAR)) { unsigned char signchar = SKIPCHAR(); if (decimal_digit_char(LOOKAHEAD_CHAR)) { ADDTOKENCHAR(expchar); ADDTOKENCHAR(signchar); } else { returnchar(signchar); returnchar(expchar); ADDTOKENCHAR(0); /* terminator */ floattoken = atof(tokenstring); return FLOAT_NUMBER_TOKEN; } } else if (decimal_digit_char(LOOKAHEAD_CHAR)) { ADDTOKENCHAR(expchar); } else { returnchar(expchar); ADDTOKENCHAR(0); /* terminator */ floattoken = atof(tokenstring); return FLOAT_NUMBER_TOKEN; } while (decimal_digit_char(LOOKAHEAD_CHAR)) ADDTOKENCHAR(SKIPCHAR()); ADDTOKENCHAR(0); /* terminator */ floattoken = atof(tokenstring); return FLOAT_NUMBER_TOKEN; } else { ADDTOKENCHAR(0); /* terminator */ floattoken = atof(tokenstring); return FLOAT_NUMBER_TOKEN; } } else { returnchar('.'); ADDTOKENCHAR(0); /* terminator */ integertoken = atoi(tokenstring); return INTEGER_TOKEN; } } else { /* up to here we have read an integer */ if (tokenstring[0] == '0' && TOKENLENGTH == 1) { if (c == 'x' && (integertoken = hexadecimal_constant()) != -1) return INTEGER_TOKEN; if (c == 'o' && (integertoken = octal_constant()) != -1) return INTEGER_TOKEN; if (c == 'b' && (integertoken = binary_constant()) != -1) return INTEGER_TOKEN; if (single_quote_char(c)) { SKIPCHAR(); if (get_single_quoted_char()) { integertoken = tokenchar; return INTEGER_TOKEN; } else return 0; } integertoken = 0; /* read number 0 */ return INTEGER_TOKEN; } else { ADDTOKENCHAR(0); /* terminator */ integertoken = atoi(tokenstring); return INTEGER_TOKEN; } } } int hexadecimal_constant() /* * hexadecimal constant (* 6.4.4 *) * = hexadecimal constant indicator (* 6.4.4 *), * hexadecimal digit char (* 6.5.2 *), * { hexadecimal digit char (* 6.5.2 *) } ; * * hexadecimal constant indicator (* 6.4.4 *) * = "0x" ; ---> 0 already read by caller */ { register unsigned int n = 0; register unsigned char c; /* LOOKAHEAD == x is true */ SKIPCHAR(); if (hexadecimal_digit_char(LOOKAHEAD_CHAR)) { while (hexadecimal_digit_char(c = LOOKAHEAD_CHAR)) { if (decimal_digit_char(c)) n = n * 16 + SKIPCHAR() - '0'; else if (capital_letter_char(c)) n = n * 16 + SKIPCHAR() - 'A' + 10; else n = n * 16 + SKIPCHAR() - 'a' + 10; } return n; } else { returnchar('x'); return -1; } } int octal_constant() /* * octal constant (* 6.4.4 *) * = octal constant indicator (* 6.4.4 *), * octal digit char (* 6.5.2 *), * { octal digit char (* 6.5.2 *) } ; * * octal constant indicator (* 6.4.4 *) * = "0o" ; ---> 0 already read by caller */ { register unsigned int n = 0; /* LOOKAHEAD == o is true */ SKIPCHAR(); if (octal_digit_char(LOOKAHEAD_CHAR)) { while (octal_digit_char(LOOKAHEAD_CHAR)) { n = n * 8 + SKIPCHAR() - '0'; } return n; } else { returnchar('o'); return -1; } } int binary_constant() /* * binary constant (* 6.4.4 *) * = binary constant indicator (* 6.4.4 *), * binary digit char (* 6.5.2 *), * { binary digit char (* 6.5.2 *) } ; * * binary constant indicator (* 6.4.4 *) * = "0b" ; ---> 0 already read by caller */ { register unsigned int n = 0; /* LOOKAHEAD == b is true */ SKIPCHAR(); if (binary_digit_char(LOOKAHEAD_CHAR)) { while (binary_digit_char(LOOKAHEAD_CHAR)) { n = n * 2 + SKIPCHAR() - '0'; } return n; } else { returnchar('b'); return -1; } } int variable_token() /* * variable token (* 6.4.3 *) * = anonymous variable (* 6.4.3 *) * | named variable (* 6.4.3 *) * anonymous variable (* 6.4.3 *) * = variable indicator char (* 6.4.3 *) * named variable (* 6.4.3 *) * = variable indicator char (* 6.4.3 *), * alpha numeric char (* 6.5.2 *), * { alpha numeric char (* 6.5.2 *) } * | capital letter char (* 6.5.2 *), * { alpha numeric char (* 6.5.2 *) } ; */ { /* variable_indicator_char(LOOKAHEAD_CHAR) || capital_letter_char(LOOKAHEAD_CHAR) is true */ RESETTOKEN; ADDTOKENCHAR(SKIPCHAR()); while (alpha_numeric_char(LOOKAHEAD_CHAR)) ADDTOKENCHAR(SKIPCHAR()); ADDTOKENCHAR(0); /* terminator */ return VARIABLE_TOKEN; } int get_meta_escape_sequence() /* * meta escape sequence (* 6.4.2.1 *) * = backslash char (* 6.5.5 *), * meta char (* 6.5.5 *) */ { if (backslash_char(LOOKAHEAD_CHAR)) { register int c = SKIPCHAR(); if (meta_char(LOOKAHEAD_CHAR)) { tokenchar = SKIPCHAR(); return 1; } else { returnchar(c); return 0; } } else return 0; } int get_control_escape_sequence() /* * control escape sequence (* 6.4.2.1 *) * = backslash char (* 6.5.5 *), * symbolic control char (* 6.4.2.1 *) * symbolic control char (* 6.4.2.1 *) * = symbolic alert char (* 6.4.2.1 *) "a" * = symbolic vertical tab char (* 6.4.2.1 *) "v" * = symbolic horizontal tab char (* 6.4.2.1 *) "t" * = symbolic backspace char (* 6.4.2.1 *) "b" * = symbolic form feed char (* 6.4.2.1 *) "f" * = symbolic new line char (* 6.4.2.1 *) "n" * = symbolic carriage return char (* 6.4.2.1 *) "r" */ { if (backslash_char(LOOKAHEAD_CHAR)) { register int c = SKIPCHAR(); if (symbolic_control_char(LOOKAHEAD_CHAR)) { switch (SKIPCHAR()) { case 'a': tokenchar = 7; break; /* alert char, bell */ case 'b': tokenchar = 8; break; /* backspace */ case 'f': tokenchar = 12; break; /* formfeed */ case 'n': tokenchar = 10; break; /* newline */ case 'r': tokenchar = 13; break; /* carriage return */ case 't': tokenchar = 9; break; /* horizontal tab */ case 'v': tokenchar = 11; break; /* vertical tab */ } return 1; } else { returnchar(c); return 0; } } else return 0; } int get_octal_escape_sequence() /* * octal escape sequence (* 6.4.2.1 *) * = backslash char (* 6.5.5 *), * octal digit char (* 6.5.2 *), * { octal digit char (* 6.5.2 *) }, * backslash char (* 6.5.5 *) ; */ { if (backslash_char(LOOKAHEAD_CHAR)) { register int c = SKIPCHAR(); if (octal_digit_char(LOOKAHEAD_CHAR)) { register unsigned int n = SKIPCHAR() - '0'; while (octal_digit_char(LOOKAHEAD_CHAR)) { n = n * 8 + SKIPCHAR() - '0'; } if (backslash_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); tokenchar = n; return 1; } else { printf("Error"); return 0; } } else { returnchar(c); return 0; } } else return 0; } int get_hexadecimal_escape_sequence() /* * hexadecimal escape sequence (* 6.4.2.1 *) * = backslash char (* 6.5.5 *), * symbolic hexadecimal char (* 6.4.2.1 *), * hexadecimal digit char (* 6.5.2 *), * { hexadecimal digit char (* 6.5.2 *) }, * backslash char (* 6.5.5 *) ; */ { if (backslash_char(LOOKAHEAD_CHAR)) { register int c = SKIPCHAR(); if (symbolic_hexadecimal_char(LOOKAHEAD_CHAR)) { register unsigned char lac; register unsigned int n = 0; SKIPCHAR(); while (hexadecimal_digit_char(lac = LOOKAHEAD_CHAR)) { if (decimal_digit_char(lac)) n = n * 16 + SKIPCHAR() - '0'; else if (capital_letter_char(lac)) n = n * 16 + SKIPCHAR() - 'A' + 10; else n = n * 16 + SKIPCHAR() - 'a' + 10; } if (backslash_char(lac)) { tokenchar = n; SKIPCHAR(); return 1; } else { printf("Error"); return 0; } } else { returnchar(c); return 0; } } else return 0; } int get_non_quote_char() /* * non quote char (* 6.4.2.1 *) * = graphic char (* 6.5.1 *) * | alpha numeric char (* 6.5.2 *) * | solo char (* 6.5.3 *) * | space char (* 6.5.4 *) * | meta escape sequence (* 6.4.2.1 *) * | control escape sequence (* 6.4.2.1 *) * | octal escape sequence (* 6.4.2.1 *) * | hexadecimal escape sequence (* 6.4.2.1 *) */ { if (graphic_char(LOOKAHEAD_CHAR) || alpha_numeric_char(LOOKAHEAD_CHAR) || solo_char(LOOKAHEAD_CHAR) || space_char(LOOKAHEAD_CHAR)) { tokenchar = SKIPCHAR(); return 1; } else { if (get_meta_escape_sequence()) return 1; if (get_control_escape_sequence()) return 1; if (get_octal_escape_sequence()) return 1; if (get_hexadecimal_escape_sequence()) return 1; return 0; } } int get_single_quoted_char() /* * single quoted char (* 6.4.2.1 *) * = non quote char (* 6.4.2.1 *) * | single quote char (* 6.5.5 *), * single quote char (* 6.5.5 *) * | double quote char (* 6.5.5 *) * | back quote char (* 6.5.5 *) ; */ { register unsigned char c = LOOKAHEAD_CHAR; if (single_quote_char(c)) { SKIPCHAR(); if (!single_quote_char(LOOKAHEAD_CHAR)) { returnchar(c); return 0; } else { tokenchar = SKIPCHAR(); return 1; } } if (double_quote_char(c)) { tokenchar = SKIPCHAR(); return 1; } if (back_quote_char(c)) { tokenchar = SKIPCHAR(); return 1; } if (get_non_quote_char()) { CHAR_CONVERSION(); return 1; } return 0; } int get_double_quoted_char() /* * double quoted char (* 6.4.2.1 *) * = non quote char (* 6.4.2.1 *) * | single quote char (* 6.5.5 *) * | double quote char (* 6.5.5 *), * double quote char (* 6.5.5 *) * | back quote char (* 6.5.5 *) ; */ { if (double_quote_char(LOOKAHEAD_CHAR)) { register char c = SKIPCHAR(); if (!double_quote_char(LOOKAHEAD_CHAR)) { returnchar(c); return 0; } else { tokenchar = SKIPCHAR(); return 1; } } if (single_quote_char(LOOKAHEAD_CHAR)) { tokenchar = SKIPCHAR(); return 1; } if (back_quote_char(LOOKAHEAD_CHAR)) { tokenchar = SKIPCHAR(); return 1; } if (get_non_quote_char()) { CHAR_CONVERSION(); return 1; } return 0; } int get_back_quoted_char() /* * back quoted char (* 6.4.2.1 *) * = non quote char (* 6.4.2.1 *) * | single quote char (* 6.5.5 *) * | double quote char (* 6.5.5 *) * | back quote char (* 6.5.5 *), * back quote char (* 6.5.5 *) ; */ { if (back_quote_char(LOOKAHEAD_CHAR)) { register char c = SKIPCHAR(); if (!back_quote_char(LOOKAHEAD_CHAR)) { returnchar(c); return 0; } else { tokenchar = SKIPCHAR(); return 1; } } if (single_quote_char(LOOKAHEAD_CHAR)) { tokenchar = SKIPCHAR(); return 1; } if (single_quote_char(LOOKAHEAD_CHAR)) { tokenchar = SKIPCHAR(); return 1; } if (single_quote_char(LOOKAHEAD_CHAR)) { tokenchar = SKIPCHAR(); return 1; } if (get_non_quote_char()) { CHAR_CONVERSION(); return 1; } return 0; } int get_single_quoted_item() /* * single quoted item (* 6.4.2 *) * = single quoted char (* 6.4.2.1 *) * | continuation escape sequence (* 6.4.2.1 *) ; * continuation escape sequence (* 6.4.2.1 *) * = backslash char (* 6.5.5 *), * new line char (* 6.5.4 *); */ { if (backslash_char(LOOKAHEAD_CHAR)) { register int c = SKIPCHAR(); if (new_line_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); return 1; } else returnchar(c); } if (get_single_quoted_char()) { ADDTOKENCHAR(tokenchar); return 1; } else return 0; } int get_double_quoted_item() /* * double quoted item (*6.4.6 *) * = double quoted char (* 6.4.2.1 *) * | continuation escape sequence (* 6.4.2 *) */ { if (backslash_char(LOOKAHEAD_CHAR)) { register int c = SKIPCHAR(); if (new_line_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); return 1; } else returnchar(c); } if (get_double_quoted_char()) { ADDTOKENCHAR(tokenchar); return 1; } else return 0; } int get_back_quoted_item() /* * back quoted item (*6.4.6 *) * = back quoted char (* 6.4.2.1 *) * | continuation escape sequence (* 6.4.2 *) */ { if (backslash_char(LOOKAHEAD_CHAR)) { register int c = SKIPCHAR(); if (new_line_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); ADDTOKENCHAR(0); return 1; } else returnchar(c); } if (get_back_quoted_char()) { return 1; } else return 0; } int get_back_quoted_string() /* * back quoted string (* 6.4.2 *) * = back quote char (* 6.5.5 *), * { back quoted item (* 6.4.2 *) }, * back quote char (* 6.5.5 *) */ { if (back_quote_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); while (get_back_quoted_item()); if (back_quote_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); ADDTOKENCHAR(tokenchar); return 1; } else { seterr(ERR_MISSING_QUOTE); return 0; } } else return 0; } int get_name_token() /* * name token (* 6.4.2 *) * = identifier token (* 6.4.2 *) * | graphic token (* 6.4.2 *) * | quoted token (* 6.4.2 *) * | semicolon token (* 6.4.2 *) * | cut token (* 6.4.2 *) * identifier token (* 6.4.2 *) * = small letter char (* 6.5.2 *), * { alpha numeric char (* 6.5.2 *) } ; * graphic token (* 6.4.2 *) * = graphic token char (* 6.4.2 *) * { graphic token char (* 6.4.2 *) } ; * quoted token (* 6.4.2 *) * = single quote char (* 6.5.5 *), * { single quoted item (* 6.4.2 *) }, * single quote char (* 6.5.5 *) */ { register unsigned char c = LOOKAHEAD_CHAR; RESETTOKEN; if (small_letter_char(c)) { ADDTOKENCHAR(SKIPCHAR()); while (alpha_numeric_char(LOOKAHEAD_CHAR)) ADDTOKENCHAR(SKIPCHAR()); ADDTOKENCHAR(0); /* term */ return 1; } if (graphic_token_char(c)) { ADDTOKENCHAR(SKIPCHAR()); while (graphic_token_char(LOOKAHEAD_CHAR)) ADDTOKENCHAR(SKIPCHAR()); ADDTOKENCHAR(0); /* term */ return 1; } if (cut_token(c)) { ADDTOKENCHAR(SKIPCHAR()); ADDTOKENCHAR(0); /* term */ return 1; } if (semicolon_token(c)) { ADDTOKENCHAR(SKIPCHAR()); ADDTOKENCHAR(0); /* term */ return 1; } if (single_quote_char(c)) { SKIPCHAR(); while (get_single_quoted_item()) ; if (single_quote_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); ADDTOKENCHAR(0); /* term */ return 1; } else { seterr(ERR_MISSING_QUOTE); return 0; } } if (get_back_quoted_string()) seterr(ERR_BACK_QUOTED_STRING); return 0; } int token() /* * token (* 6.4 *) * = name token (* 6.4.2 *) * | variable token (* 6.4.3 *) * | integer token (* 6.4.4 *) * | float token (* 6.4.5 *) * | char code list token (* 6.4.6 *) * | open token (* 6.4.8 *) * | close token (* 6.4.8 *) * | open list token (* 6.4.8 *) * | close list token (* 6.4.8 *) * | open curly token (* 6.4.8 *) * | close curly token (* 6.4.8 *) * | head tail separator token (* 6.4.8 *) * | comma token (* 6.4.8 *) * | end token (* 6.4.8 *) * layout text sequence (* 6.4.1 *) * = layout text (* 6.4.1 *), * { layout text (* 6.4.1 *) } ; * layout text (* 6.4.1 *) * = layout char (* 6.5.4 *) * | comment (* 6.4.1 *) * comment (* 6.4.1 *) * = single line commment (* 6.4.1 *) * | bracketed comment (* 6.4.1 *) */ { register unsigned char c; register int layout_inserted = 0; register int more_layout = 1; do { if (layout_char(LOOKAHEAD_CHAR)) { SKIPCHAR(); layout_inserted = 1; } else if (end_line_comment_char(LOOKAHEAD_CHAR)) { single_line_comment(); layout_inserted = 1; } else if (comment_1_char(LOOKAHEAD_CHAR)) { if (bracketed_comment()) layout_inserted = 1; else more_layout = 0; } else more_layout = 0; } while (more_layout); c = LOOKAHEAD_CHAR; if (capital_letter_char(c) || variable_indicator_char(c)) return variable_token(); if (comma_token(c)) { SKIPCHAR(); return COMMA_TOKEN; } if (close_token(c)) { SKIPCHAR(); return CLOSE_TOKEN; } if (open_token(c)) { SKIPCHAR(); return layout_inserted ? OPEN_TOKEN : OPEN_CT_TOKEN; } if (end_token(c)) { SKIPCHAR(); if (layout_char(LOOKAHEAD_CHAR) || end_line_comment_char(LOOKAHEAD_CHAR)) { if (new_line_char(LOOKAHEAD_CHAR)) SKIPCHAR(); return END_TOKEN; } else returnchar('.'); } if (decimal_digit_char(c)) return number_token(); if (close_list_token(c)) { SKIPCHAR(); return CLOSE_LIST_TOKEN; } if (open_list_token(c)) { SKIPCHAR(); return OPEN_LIST_TOKEN; } if (head_tail_separator_token(c)) { SKIPCHAR(); return HEAD_TAIL_SEPARATOR_TOKEN; } if (open_curly_token(c)) { SKIPCHAR(); return OPEN_CURLY_TOKEN; } if (close_curly_token(c)) { SKIPCHAR(); return CLOSE_CURLY_TOKEN; } if (double_quote_char(LOOKAHEAD_CHAR)) { if (char_code_list_token()) return CHAR_CODE_LIST_TOKEN; } if (get_name_token()) return NAME_TOKEN; if (!LOOKAHEAD_CHAR) { SKIPCHAR(); return EOFFILE; } return 0; } int char_conversion(c1,c2) register unsigned char c1,c2; { charconv[c1] = c2; return 1; } BinProlog3.45/cparser/token.h100644 764 764 20031 5626410425 15246 0ustar javierjavier#define SEPARATORBIT 128 #define EOFFILE 0 #define NAME_TOKEN 1 #define VARIABLE_TOKEN 2 #define INTEGER_TOKEN 3 #define FLOAT_NUMBER_TOKEN 4 #define CHAR_CODE_LIST_TOKEN 5 #define OPEN_TOKEN (6+SEPARATORBIT) #define OPEN_CT_TOKEN (7+SEPARATORBIT) #define CLOSE_TOKEN (8+SEPARATORBIT) #define OPEN_LIST_TOKEN (9+SEPARATORBIT) #define CLOSE_LIST_TOKEN (10+SEPARATORBIT) #define OPEN_CURLY_TOKEN (11+SEPARATORBIT) #define CLOSE_CURLY_TOKEN (12+SEPARATORBIT) #define HEAD_TAIL_SEPARATOR_TOKEN (13+SEPARATORBIT) #define COMMA_TOKEN (14+SEPARATORBIT) #define END_TOKEN 15 #define TERMTYPE 40 /* meta token */ #define separator_token(X) ((X) & SEPARATORBIT) #define LOOKAHEAD_CHAR ((bufferptr >= bufferend) ? \ lookahead_char2() : *bufferptr) #define open_token(X) open_char(X) #define close_token(X) close_char(X) #define open_list_token(X) open_list_char(X) #define close_list_token(X) close_list_char(X) #define open_curly_token(X) open_curly_char(X) #define close_curly_token(X) close_curly_char(X) #define head_tail_separator_token(X) head_tail_separator_char(X) #define comma_token(X) comma_char(X) #define end_token(X) end_char(X) #define semicolon_token(X) semicolon_char(X) #define cut_token(X) cut_char(X) #define MAXTOKENLENGTH 1024 #define SLACK 64 #define INPUTBUFFERSIZE 1024-SLACK extern unsigned char tokenstring[MAXTOKENLENGTH+1]; extern int integertoken; extern double floattoken; extern int parseerror; extern int linenumber; extern unsigned char *bufferend, *bufferptr, *inputbuffer; extern unsigned char chararr[]; /* character definitions */ /* symbols for use in inittokenizer */ #define _PROLOGCHAR 1 #define _GRAPHIC_CHAR 2 #define _GRAPHIC_TOKEN_CHAR 4 #define _ALPHA_NUMERIC_CHAR 8 #define _HEXADECIMAL_DIGIT_CHAR 16 #define _SOLO_CHAR 32 #define _SYMBOLIC_CONTROL_CHAR 64 #define _LAYOUT_CHAR 128 #define PROLOGCHAR(X) ((GRAPHIC_CHAR(X)) || (ALPHA_NUMERIC_CHAR(X)) || \ (SOLO_CHAR(X)) || (LAYOUT_CHAR(X)) || (meta_char(X))) #define GRAPHIC_CHAR(X) ((X) == '#' || (X) == '$' || (X) == '&' || \ (X) == '*' || (X) == '+' || (X) == '-' || \ (X) == '.' || (X) == '/' || (X) == ':' || \ (X) == '<' || (X) == '=' || (X) == '>' || \ (X) == '?' || (X) == '@' || (X) == '^' || \ (X) == '~' || (extra_graphic_char(X))) #define GRAPHIC_TOKEN_CHAR(X) (GRAPHIC_CHAR(X) || backslash_char(X)) #define ALPHA_NUMERIC_CHAR(X) ((alpha_char(X)) || (decimal_digit_char(X))) #define HEXADECIMAL_DIGIT_CHAR(X) ((X) >= '0' && (X) <= '9' || \ (X) >= 'A' && (X) <= 'F' || \ (X) >= 'a' && (X) <= 'f') #define SOLO_CHAR(X) ((cut_char(X)) || \ (open_char(X)) || \ (close_char(X)) || \ (comma_char(X)) || \ (semicolon_char(X)) || \ (open_list_char(X)) || \ (close_list_char(X)) || \ (open_curly_char(X)) || \ (close_curly_char(X)) || \ (head_tail_separator_char(X)) || \ (end_line_comment_char(X)) || \ (extra_solo_char(X))) #define SYMBOLIC_CONTROL_CHAR(X) (symbolic_alert_char(X) || \ symbolic_backspace_char(X) || \ symbolic_form_feed_char(X) || \ symbolic_new_line_char(X) || \ symbolic_carriage_return_char(X) || \ symbolic_horizontal_tab_char(X) || \ symbolic_vertical_tab_char(X)) #define LAYOUT_CHAR(X) ((space_char(X)) || \ (new_line_char(X)) || \ (extra_layout_char(X))) #define prologchar(X) (chararr[X] & _PROLOGCHAR) #define graphic_char(X) (chararr[X] & _GRAPHIC_CHAR) #define graphic_token_char(X) (chararr[X] & _GRAPHIC_TOKEN_CHAR) #define alpha_numeric_char(X) (chararr[X] & _ALPHA_NUMERIC_CHAR) #define alpha_char(X) ((underscore_char(X)) || (letter_char(X))) #define letter_char(X) ((capital_letter_char(X)) || (small_letter_char(X))) #define small_letter_char(X) ((char)(X) >= 'a' && (char)(X) <= 'z' || \ extra_small_letter_char(X)) #define capital_letter_char(X) ((char)(X) >= 'A' && (char)(X) <= 'Z' || \ extra_capital_letter_char(X)) #define decimal_digit_char(X) ((char)(X) >= '0' && (char)(X) <= '9') #define binary_digit_char(X) ((char)(X) >= '0' && (char)(X) <= '1') #define octal_digit_char(X) ((char)(X) >= '0' && (char)(X) <= '7') #define hexadecimal_digit_char(X) (chararr[X] & _HEXADECIMAL_DIGIT_CHAR) #define underscore_char(X) ((X) == '_') #define solo_char(X) (chararr[X] & _SOLO_CHAR) #define cut_char(X) ((X) == '!') #define open_char(X) ((X) == '(') #define close_char(X) ((X) == ')') #define comma_char(X) ((X) == ',') #define semicolon_char(X) ((X) == ';') #define open_list_char(X) ((X) == '[') #define close_list_char(X) ((X) == ']') #define open_curly_char(X) ((X) == '{') #define close_curly_char(X) ((X) == '}') #define head_tail_separator_char(X) ((X) == '|') #define end_line_comment_char(X) ((X) == '%') #define eof_char(X) ((X)==0) #define layout_char(X) (chararr[X] & _LAYOUT_CHAR) #define space_char(X) ((X) == ' ') #define new_line_char(X) ((X) == 10) /* implementation dependent */ #define meta_char(X) ((backslash_char(X)) || \ (single_quote_char(X)) || \ (double_quote_char(X)) || \ (back_quote_char(X))) #define backslash_char(X) ((X) == '\\') #define single_quote_char(X) ((X) == '\'') #define double_quote_char(X) ((X) == '"') #define back_quote_char(X) ((X) == '`') #define comment_1_char(X) ((X) == '/') #define comment_2_char(X) ((X) == '*') #define end_char(X) ((X) == '.') #define symbolic_alert_char(X) ((X) == 'a') #define symbolic_backspace_char(X) ((X) == 'b') #define symbolic_form_feed_char(X) ((X) == 'f') #define symbolic_new_line_char(X) ((X) == 'n') #define symbolic_carriage_return_char(X) ((X) == 'r') #define symbolic_horizontal_tab_char(X) ((X) == 't') #define symbolic_vertical_tab_char(X) ((X) == 'v') #define symbolic_hexadecimal_char(X) ((X) == 'x') #define symbolic_control_char(X) (chararr[X] & _SYMBOLIC_CONTROL_CHAR) #define positive_sign_char(X) ((X) == '+') #define negative_sign_char(X) ((X) == '-') #define sign_char(X) (positive_sign_char(X) || negative_sign_char(X)) #define decimal_point_char(X) ((X) == '.') #define exponent_char(X) ((X) == 'e' || (X) == 'E') #define variable_indicator_char(X) underscore_char(X) /* error flags */ #define ERR_NOERROR 0 #define ERR_MISSING_QUOTE 1 #define ERR_TOKEN_TOO_LONG 2 #define ERR_UNEXPECTED_EOF 3 #define ERR_BACK_QUOTED_STRING 4 #define ERR_NONDET 5 #define ERR_INCOMPLETE_REDUCTION 6 #define is_latin1_upper(X) (((X) >= 192) && ((X) <= 214) || \ ((X) >= 216) && ((X) <= 222)) #define is_latin1_lower(X) (((X) >= 223) && ((X) <= 246) || \ ((X) >= 248) && ((X) <= 255)) #define extra_graphic_char(X) (0) #define extra_small_letter_char(X) (0 /* is_latin1_lower(X) */) #define extra_capital_letter_char(X) (0 /* is_latin1_upper(X) */) #define extra_solo_char(X) (0) #define extra_layout_char(X) ((carriage_return_char(X)) || \ (tab_char(X)) || \ (formfeed_char(X)) || \ (vertab_char(X))) #define carriage_return_char(X) ((X) == 13) /* ascii */ #define tab_char(X) ((X) == 9) /* ascii */ #define formfeed_char(X) ((X) == 12) /* ascii */ #define vertab_char(X) ((X) == 11) /* ascii */ BinProlog3.45/cparser/interf.c100644 764 764 7424 5626410370 15402 0ustar javierjavier/* * interface module with the standard Prolog parser * */ #include "interf.h" #include extern struct specsyms g; extern string *atomtable; extern cell new_func(); #define PUT_FLOAT(F) \ double_to_ints((F),&i1,&i2,&i3); \ MAKE_FLOAT(i1,i2,i3) #define MAKE_FLOAT(I,J,K) \ { H[0]=g.bp_float; \ H[1]=(I); H[2]=(J); H[3]=(K);\ H+=4;\ } termtype *makefloat(Hptr,f) register heapcell *Hptr; double f; /* * internatizes the float value f * and return it */ { register term saveH = *Hptr, H = *Hptr; no i1, i2, i3; PUT_FLOAT(f); *Hptr = H; return (termtype *)saveH; } termtype *makeinteger(Hptr,i) register heapcell *Hptr; int i; /* * internalizes the integer value i * and return it */ { return (termtype *)INPUT_INT(i); } termtype *makeatom(Hptr,s) register heapcell *Hptr; char *s; /* * internalizes the string s and returns * it as atom */ { return (termtype *)new_func(s,0); } termtype *maketerm(Hptr,s,n) register heapcell *Hptr; char *s; int n; /* * internalizes the functor string s with arity n * and returns a pointer to it */ { register term H = *Hptr; int i; *H = new_func(s,n); *Hptr += n+1; return (termtype *)H; } termtype *makevar(Hptr) register heapcell *Hptr; /* * creates a variable and returns it */ { register heapcell H = *Hptr; *H = (cell)H; *Hptr += 1; return (termtype *)H; } symboltype *getsymbol(s,a) char *s; int a; /* * return the internalized version of the functor s with * arity a; create the symbol if it does not already exist */ { return (symboltype *)new_func(s,a); } termtype *deref(tp) term tp; /* no comment */ { cell xval; if (!GETTAG(tp)) { DEREF2(tp,xval); } if (ISVAR(tp) && (ISINT(*(term)tp) || ISATOM(*(term)tp))) return (termtype *)(*(term)tp); else return (termtype *)tp; } int fileread(buf, len) register char *buf; register int len; /* * read at most len bytes from stdin into buf * returns the number of bytes read */ { #if 1 char *p; p = fgets(buf, len, inputfile); if (p) return strlen(buf); else return 0; #else if (inputfile) { return read(fileno(inputfile), buf, len); } else { return 0; } #endif } int operator(op, prepri, inpri, postpri, spec) char *op; int *prepri, *inpri, *postpri, *spec; /* * operator interface. * given a string representation op, * it returns the priority as prefix operator (prepri), * infix operator (inpri) and postfix operator (postpri). * In addition it returns the specifier of the operator. * This is the OR of all the possible (overloaded) * specifiers. The function returns 1 is op is an * operator, 0 otherwise */ { cell opsym = new_func(op, 0); cell xval; *spec = 0; xval=hget(opsym,g.prefixop); if(xval && g.empty!=xval) { *prepri = OUTPUT_INT(xval); xval = hget(g.prefixop,opsym); if (xval == g.fx) *spec |= FX; else if (xval == g.fy) *spec |= FY; else fatal_error("no assoc for prefix operator"); } else *prepri = 0; xval=hget(opsym,g.infixop); if(xval && g.empty!=xval) { *inpri = OUTPUT_INT(xval); xval = hget(g.infixop,opsym); if (xval == g.xfx) *spec |= XFX; else if (xval == g.xfy) *spec |= XFY; else if (xval == g.yfx) *spec |= YFX; else fatal_error("no assoc for infix operator"); } else *inpri = 0; xval=hget(opsym,g.postfixop); if(xval && g.empty!=xval) { *postpri = OUTPUT_INT(xval); xval = hget(g.postfixop,opsym); if (xval == g.xf) *spec |= XF; else if (xval == g.yf) *spec |= YF; else fatal_error("no assoc for postfix operator"); } else *postpri = 0; return *prepri + *inpri + *postpri; } void putvarname(buffer, t) register char *buffer; register termtype *t; /* * this functions writes a null terminated string * in buffer, corresponding to the output format * for variable t */ { sprintf(buffer, "_%d", t); } BinProlog3.45/cparser/interf.h100644 764 764 5635 5626410444 15413 0ustar javierjavier/* * This file contains the interface with the underlying * Prolog system. Put here all the include files you * need to complete the defines that follow */ #include "global.h" extern struct specsyms g; extern FILE *inputfile; double ints_to_double(); typedef cell symboltype; typedef term termtype; typedef term heapcell; /************************************************** * here starts the obligatory part of interface.h **************************************************/ /***************** type tests ********************/ /* t is a term */ #define ISFLOAT(t) (!GETTAG((term)(t)) && BP_FLOAT(*((term)(t)))) #define ISINT(t) (INTEGER(t)) #define ISATOM(t) (SYMCONST(t)) #define ISTERM(t) (!GETTAG((term)(t)) && COMPOUND(*((term)(t)))) #define ISVAR(t) (!GETTAG(t)) /***************** value definitions *************/ /* these definitions can be used as lvalue and as rvalues! They will have to be redefined by the user. **********************************/ /* floating point value */ #define __FLOAT(t) (ints_to_double(((term)t)[1],((term)t)[2],((term)t)[3])) /* integer value */ #define __INT(t) (OUTPUT_INT(t)) /* internalized atom */ #define __ATOM(t) (t) /* string representation of an atom t */ #define __ATOMNAME(t) (NAME(t)) /* string representation of a compound term t */ #define __TERMNAME(t) (NAME(*((term)(t)))) /* arity of a compound term t */ #define __ARITY(t) (GETARITY(*((term)(t)))) /* argument n of compound term t */ #define __ARG(t,n) (((termtype **)(t))[n]) /* last argument of a compound term t some implementations (eg BinProlog) use a compaction scheme that treats the last argument of a compound term different from the other arguments */ #define __LASTARG(t,n) (&(((termtype *)(t))[n])) /********************* fixed part of interface.h This part should not be modified by the user *******/ termtype *makefloat(); termtype *makeinteger(); termtype *makeatom(); termtype *maketerm(); termtype *makevar(); symboltype *getsymbol(); termtype *deref(); int fileread(); int operator(); void putvarname(); /************* defines used to deal with operators */ #define XFX 0x0001 #define XFY 0x0002 #define YFX 0x0004 #define XF 0x0010 #define YF 0x0020 #define FX 0x0040 #define FY 0x0080 #define DELIMITER 0x0100 #define TERM 0x1000 #define LTERM 0x3000 #define isprefix(X) ((X) & (FX|FY)) #define ispostfix(X) ((X) & (XF|YF)) #define isinfix(X) ((X) & (XFX|XFY|YFX)) #define isfx(X) ((X) & FX) #define isfy(X) ((X) & FY) #define isxf(X) ((X) & XF) #define isyf(X) ((X) & YF) #define isxfx(X) ((X) & XFX) #define isxfy(X) ((X) & XFY) #define isyfx(X) ((X) & YFX) #define isop(X) ((X) & (XFX|XFY|YFX|XF|YF|FX|FY)) #define isterm(X) ((X) & TERM) #define islterm(X) (((X) & LTERM) == LTERM) #define isdelimiter(X) ((X) & DELIMITER) BinProlog3.45/cparser/iso.c100644 764 764 5132 5631276351 14704 0ustar javierjavier/* This file contains ISO-versions of some builtins * and various other ISO extensions. */ #include #include #include #include #include #include "global.h" extern struct specsyms g; extern struct limit max; extern string *atomtable; extern term *unwind_trail(),local_error(); extern term unify(); extern string lextable,newlex; extern no newatom; extern no hcount; extern no hget(),hset(),hdef(); extern hentry htable; extern term readterm(); term iso_open_stream_3(H,regs,wam,A) register term H,regs,*A; register stack wam; { string opt,cmd; FILE *f; opt=NAME(X(1)); cmd=NAME(X(2)); if (!strcmp(cmd,"user_input")) f = stdin; else if (!strcmp(cmd, "user_output")) f = stdout; else if(!(f=fopen(cmd,opt))) return 0; if (opt[0] == 'r') allocatefilebuffer(f,cmd); PUSHVAL(INPUT_INT((cell)(f)>>2)); return H; } int iso_close_stream_2(H,regs,wam,A) register term H,regs,*A; register stack wam; { string opt; opt=NAME(X(1)); if (fileno((FILE*)(OUTPUT_INT(X(2))<<2)) >= 3) fclose((FILE*)(OUTPUT_INT(X(2))<<2)); if (opt[0] == 'r') returnfilebuffer((FILE*)(OUTPUT_INT(X(2))<<2)); return 1; } term iso_read_term_3(H,regs,wam,A) register term H,regs,*A; register stack wam; { register term result; if (result = readterm(OUTPUT_INT(X(1))<<2,H)) { term *options; cell xval; options = (term*)(X(2)); DEREF2(options[1],xval); if ((cell)xval & 4) /* variables */ if (!unify(options[2],makevariablesoption(H),wam,A)) return 0; if ((cell)xval & 8) /* variable_names */ if (!unify(options[3],makevariable_namesoption(H),wam,A)) return 0; if ((cell)xval & 16) /* singletons */ { if (!unify(options[4],makesingletonsoption(H),wam,A)) return 0; } releasevars(); return result; } else { releasevars(); return 0; } } int iso_write_term_3(H,regs,wam,A) register term H,regs,*A; register stack wam; { term xref = (term)X(1); cell xval = (cell)NULL; FDEREF(xref); #if 1 assert(INTEGER(xval)); return writeterm(OUTPUT_INT(xval)<<2, X(3), OUTPUT_INT(X(2))); #else return writeterm(stdout, X(3), OUTPUT_INT(X(2))); #endif } FILE *current_output() { term xref = (term)hget(new_func("current_stream",0), new_func("write",0)); cell xval = (cell)NULL; FDEREF(xref); xref = (term)(xref[1]); FDEREF(xref); return (FILE*)(OUTPUT_INT(xval)<<2); } FILE *current_input() { term xref = (term)hget(new_func("current_stream",0), new_func("read",0)); cell xval = (cell)NULL; FDEREF(xref); xref = (term)(xref[1]); FDEREF(xref); return (FILE*)(OUTPUT_INT(xval)<<2); } BinProlog3.45/cparser/engine.c120777 764 764 0 6664733563 17722 2../src/engine.custar javierjavierBinProlog3.45/cparser/add_bp100754 764 764 1125 5675620536 15110 0ustar javierjavierln -s ../src/binpro.pro binpro.pro ln -s ../src/engine.c engine.c ln -s ../src/float.c float.c ln -s ../src/debug.c debug.c ln -s ../src/ru.c ru.c ln -s ../src/sym.c sym.c ln -s ../src/dict.c dict.c ln -s ../src/builtins.c builtins.c ln -s ../src/load.c load.c ln -s ../src/io.c io.c ln -s ../src/c.c c.c ln -s ../src/main.c main.c ln -s ../src/prof.h prof.h ln -s ../src/defs.h defs.h ln -s ../src/c_defs.h c_defs.h ln -s ../src/safety.h safety.h ln -s ../src/global.h global.h ln -s ../src/c.h c.h ln -s ../progs progs ln -s ../myprogs myprogs ln -s ../bm1 bm1 ln -s ../bm2 bm2 ln -s ../bm3 bm3 BinProlog3.45/cparser/cbp100754 764 764 21 5660676332 14374 0ustar javierjavier./ru $* ./wam.bp BinProlog3.45/cparser/float.c120777 764 764 0 6664733563 17422 2../src/float.custar javierjavierBinProlog3.45/cparser/debug.c120777 764 764 0 6664733563 17364 2../src/debug.custar javierjavierBinProlog3.45/cparser/ru.c120777 764 764 0 6664733563 16264 2../src/ru.custar javierjavierBinProlog3.45/cparser/sym.c120777 764 764 0 6664733563 16630 2../src/sym.custar javierjavierBinProlog3.45/cparser/dict.c120777 764 764 0 6664733563 17056 2../src/dict.custar javierjavierBinProlog3.45/cparser/builtins.c120777 764 764 0 6664733563 20672 2../src/builtins.custar javierjavierBinProlog3.45/cparser/load.c120777 764 764 0 6664733563 17046 2../src/load.custar javierjavierBinProlog3.45/cparser/io.c120777 764 764 0 6664733563 16226 2../src/io.custar javierjavierBinProlog3.45/cparser/prof.h120777 764 764 0 6664733563 17136 2../src/prof.hustar javierjavierBinProlog3.45/cparser/defs.h120777 764 764 0 6664733563 17064 2../src/defs.hustar javierjavierBinProlog3.45/cparser/c_defs.h120777 764 764 0 6664733563 17670 2../src/c_defs.hustar javierjavierBinProlog3.45/cparser/safety.h120777 764 764 0 6664733563 20010 2../src/safety.hustar javierjavierBinProlog3.45/cparser/global.h120777 764 764 0 6664733563 17722 2../src/global.hustar javierjavierBinProlog3.45/cparser/progs120777 764 764 0 6664733563 16243 2../progsustar javierjavierBinProlog3.45/cparser/myprogs120777 764 764 0 6664733563 17157 2../myprogsustar javierjavierBinProlog3.45/cparser/bm1120777 764 764 0 6664733563 15115 2../bm1ustar javierjavierBinProlog3.45/cparser/bm2120777 764 764 0 6664733563 15117 2../bm2ustar javierjavierBinProlog3.45/cparser/bm3120777 764 764 0 6664733563 15121 2../bm3ustar javierjavierBinProlog3.45/cparser/c.c120777 764 764 0 6664733563 15654 2../src/c.custar javierjavierBinProlog3.45/cparser/main.c120777 764 764 0 6664733563 17060 2../src/main.custar javierjavierBinProlog3.45/cparser/makefile100644 764 764 12651 5757107511 15472 0ustar javierjavierVERS=340 DEFS = -DCPARSER OPTI= $(DEFS) -s -O #OPTI= $(DEFS) -s -O WFLAGS = -Wunused -Wcomment -Wformat -Wuninitialized -Wswitch \ -Wreturn-type -Wshadow -Wpointer-arith \ -Wcast-align -Waggregate-return -Winline TEST = $(DEFS) -g -DPROF=1 -DTRACE=1 TESTN = $(TEST) -DNOTCOMPRESS LASM = $(DEFS) -DTRACE=1 DEBUG = $(DEFS) $(WFLAFS) -g -O -DPROF=2 -DTRACE=1 GCC = gcc $(OPTI) GCCG = gcc $(DEFS) -g -O # usualy one of those GCCO = gcc $(OPTI)2 GCCS = gcc -fomit-frame-pointer -msupersparc $(OPTI)2 GCCE = $(GCCO) -DSELF GCCT = gcc -O $(TEST) GCCTN = gcc -O $(TESTN) GCCW = gcc -O2 $(WFLAGS) $(TEST) GCCD = gcc $(WFLAGS) $(DEBUG) GCCU = gcc -g -O $(WFLAGS) $(DEFS) -DSAFETY=2 GCCUS = $(GCCU) -DNOOFFSETS GCCL = gcc -O2 $(LASM) CLCC = clcc $(OPTI) CCO = cc $(OPTI) CCT = cc $(TEST) SCC = scc $(OPTI)2 SCCT = scc $(TEST) SGIO = cc -DSGI $(OPTI)3 -Olimit 1200 SGIT = cc $(TEST) IBMO = cc -DSGI $(OPTI) CCHP = cc +w3 +Obb1000 # however, use gcc as cc does not work well!!! ################################################################### # PLEASE use the appropriate combination of compilers and options !!! CC= $(GCCS) OTHER_PROLOG = sicstus #OTHER_PROLOG = sicstus -f #OTHER_PROLOG = pl #OTHER_PROLOG = sb #OTHER_PROLOG = cprolog #OTHER_PROLOG = sicstus #OTHER_PROLOG = api #OTHER_PROLOG = qprolog #BINDIR = /usr/local/bin BINDIR = $(HOME)/local/bin # normally this should be the only thing to EDIT !!! ################################################################### OLDBP = bp P1=engine P2=builtins P3=dict P4=load P5=sym P6=ru P7=io P8=float P9=debug P15=c P16=main P10=wterm P11=rterm P12=token P13=interf P14=iso SELFOBS = ru.o sym.o engine.o load.o NEW_CPROGS=$(P10).c $(P11).c $(P12).c $(P13).c SRC_CPROGS=$(P1).c $(P2).c $(P3).c $(P4).c $(P5).c $(P6).c $(P7).c $(P8).c $(P9).c $(P15).c $(P16).c CPROGS=$(SRC_CPROGS) $(NEW_CPROGS) OBS = $(P1).o $(P2).o $(P3).o $(P4).o $(P5).o $(P6).o $(P7).o $(P8).o $(P9).o $(P15).o $(P16).o \ $(P10).o $(P11).o $(P12).o $(P13).o $(P14).o PPROGS = wam.pro stdio.pl CP = cp it: all all: basic cbinpro basic: progs ru wam.bp cbinpro: wam.o bp.o binpro.o $(CC) -o cbinpro wam.o bp.o binpro.o -lm wam.o: global.h c_defs.h wam.h wam.c # $$$ $(CC) -o wam.o -c wam.c wam.h wam.c: wam.pro $(PPROGS) # $$$ echo "kcmake. " | ../src/ru ../src/wam.bp binpro.o: global.h c_defs.h binpro.h binpro.c $(CC) -o binpro.o -c binpro.c binpro.h binpro.c: binpro.pro echo "cmake(binpro,prolog). " | ../src/ru ../src/wam.bp progs: add_bp # bootsrapping wam.bp: stdio.pl ../src/co.pl echo "kmake. " | ../src/ru -q2 ../src/otherwam.bp rm -f ../src/*.wam mv -f wam.bp otherwam.bp echo "kmake. " | ru -q2 otherwam.bp # makes a BinProlog library usable to generate a standalone executable lib bp.o: complib linklib cleanlib linklib: make CC="$(CC) -DSELF" $(OBS) ld -r -o bp.o $(OBS) complib: sym.c load.c engine.c debug.c rm -f $(SELFOBS) make CC="$(CC) -DSELF" $(OBS) cleanlib: rm -f $(SELFOBS) ru: $(OBS) $(CC) -o ru $(OBS) -lm install: echo '$(BINDIR)/ru $$* $(BINDIR)/wam.bp' > bp chmod ugo+rx bp mv bp $(BINDIR)/ $(CP) ru wam.bp $(BINDIR)/ chmod ugo+r $(BINDIR)/wam.bp chmod ugo+rx $(BINDIR)/ru @echo TYPE bp TO run BinProlog! uninstall: rm -f $(BINDIR)/bp $(BINDIR)/ru $(BINDIR)/wam.bp asm: $(CC) -S -o engine.s engine.c save: rm -f tar.gz tar.Z rm -r -f bak mkdir bak $(CP) makefile iso.c token.h interf.h $(NEW_CPROGS) bak $(CP) $(PPROGS) bak $(CP) README add_bp cbp bp bak uue: save mv bak bp$(VERS) tar cvf bp$(VERS).tar bp$(VERS) compress bp$(VERS).tar uuencode bp$(VERS).tar.Z bp$(VERS).tar.Z > bp$(VERS).tar.Z.uue mv bp$(VERS) bak rm bp$(VERS).tar.Z gz: save tar cvf tar bak gzip tar Z: save tar cvf tar bak compress tar restore: rm -f -r bak gunzip tar tar xvf tar rm -f tar diff bak . @echo 'to restore do cp -p bak/* .' test: rusage bm1 cbp rusage bm2 cbp rusage bm3 cbp ftp: makefile sh -c 'rm -r -f ftp; mkdir ftp; mkdir ftp/progs' $(CP) ftpsrc/* ftp $(CP) $(PPROGS) ftp $(CP) progs/* ftp/progs' prof: $(CC) -DPROF -g -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o bigbug: $(CC) -DPROF -DDEBUG $(GG) -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o trace: $(CC) -DPROF -DTRACE $(GG) -c $(CPROGS) $(CC) -g -o ru $(OBS) /usr/lib/debug/mallocmap.o # bootstaping remake: @echo remaking BinProlog with C-parser... echo "kmake. " | cbp oclean: rm -f *.o *.wam otherwam.bp wam.c wam.h binpro.c binpro.h ru mostly_clean: rm -f *.o *.wam rm -f otherwam.bp ruclean ru_clean: rm -f ru.*.* clean: rm -f *.o ru core *.wam wam.h wam.c cbinpro rm -f *.s w2a rm -f *.tar.*.uue *.gz wamclean wam_clean: rm -f *.bp *.out *.wam realclean real_clean: clean wam_clean ru_clean cprof: $(CC) -O -p -L/usr/5lib -o ru $(CPROGS) tcov: $(CC) -a -o ru $(CPROGS) ru tcov -30 $(CPROGS) tail -40 ru.tcov int: Auxpl/int.c $(CC) -O4 -o int Auxpl/int.c w2a: $(CC) -O -o w2a Auxpl/w2a.c w2a < wam.bp > wam.txt #.IGNORE: # ----------------- dependencies ------------------ sym.o: sym.c global.h dict.o: dict.c global.h io.o: io.c global.h defs.h builtins.o: builtins.c defs.h global.h load.o: load.c defs.h global.h ru.o: ru.c defs.h global.h makefile c.o: c.c global.h main.o: main.c engine.o: engine.c defs.h global.h float.o: float.c defs.h global.h debug.o: debug.c defs.h prof.h global.h rterm.o: rterm.c token.h interf.h wterm.o: wterm.c token.h interf.h token.o: token.c token.h interf.o: interf.c interf.h iso.o: iso.c global.h BinProlog3.45/cparser/run.pro100644 764 764 154 5756772607 15270 0ustar javierjavier:-[oper]. :-[stdio]. :-[builtins]. :-[init]. :-[lib]. :-[dcg]. :-[top]. :-[extra]. % main(X):-toplevel(X). BinProlog3.45/cparser/stdio.pl100644 764 764 30354 5676232733 15456 0ustar javierjavier% File : STDIO.PL % Author : K. De Bosschere % Created: March 22, 1994 % Purpose: Read and Write Standard Prolog Text in BinProlog % -------------- initialisation of user_input and user_output ----- default_prolog(binprolog_with_cparser). % by defining this, macro-expansion is not performed on put_code and % friends default_input :- open(user_input, read, Stdin), saved(Stdin, S2), (def(alias, user_input, S2); set(alias, user_input, S2)), !, (def(current_stream, read, S2); set(current_stream, read, S2)), !. default_output :- open(user_output, write, Stdout), saved(Stdout, S2), (def(alias, user_output, S2); set(alias, user_output, S2)), !, (def(current_stream, write, S2); set(current_stream, write, S2)), !. init_io :- default_input, default_output. % ------------------------------------------------------------------ current_input(Stream) :- val(current_stream,read,Stream). current_output(Stream) :- val(current_stream,write,Stream). set_input(Stream_or_Alias) :- alias(Stream_or_Alias,Stream), saved(Stream,Saved_Stream), set(current_stream,read,Saved_Stream). set_output(Stream_or_Alias) :- alias(Stream_or_Alias,Stream), saved(Stream,Saved_Stream), set(current_stream,write,Saved_Stream). open(File, Mode, Stream) :- open(File, Mode, Stream, []). open(File, Mode, S, Options) :- S = '$stream'(Stream,File,Mode,Options), io_options(Mode,Mode1), iso_open_stream(Mode1,File,Stream), open_options(Options,S). open_options([],_). open_options([type(text)|L],S) :- open_options(L,S). open_options([type(binary)|L],S) :- open_options(L,S). open_options([reposition(true)|L],S) :- open_options(L,S). open_options([reposition(false)|L],S) :- open_options(L,S). open_options([eof_action(error)|L],S) :- open_options(L,S). open_options([eof_action(eof_code)|L],S) :- open_options(L,S). open_options([eof_action(reset)|L],S) :- open_options(L,S). open_options([alias(A)|L],S) :- saved(S,S2), %--- create aliases (def(alias, A, S2); set(alias,A,S2)), !, open_options(L,S). close(Stream_or_Alias) :- close(Stream_or_Alias,[]). close(Stream_or_Alias, _) :- alias(Stream_or_Alias,'$stream'(Stream,_File,Mode,_)), iso_close_stream(Mode,Stream). flush_output :- current_output(Stream), flush_output(Stream). flush_output(Stream_or_Alias) :- alias(Stream_or_Alias, _Stream), true. /* iso_write automatically flushes all buffers */ stream_property('$stream'(_,File,_,_),file_name(File)). stream_property('$stream'(_,_,Mode,_),mode(Mode)). stream_property('$stream'(_,_,read,_),input). stream_property('$stream'(_,_,write,_),output). stream_property('$stream'(_,_,_,Options),alias(A)) :- member(alias(A),Options). stream_property('$stream'(Stream,_,_,_Options),position(P)) :- iso_lseek(Stream,0,1,P). stream_property(Stream,end_of_stream(at)) :- at_end_of_stream(Stream), !. stream_property(Stream,end_of_stream(past)) :- at_end_of_stream(Stream), !. stream_property(_Stream,end_of_stream(not)) :- !. % default stream_property('$stream'(_,_,_,Options),eof_action(A)) :- member(eof_action(A),Options) -> true ; A = eof_code. stream_property('$stream'(_,_,_,Options),reposition(B)) :- member(reposition(B),Options). stream_property('$stream'(_,_,_,Options),type(T)) :- member(type(T),Options) -> true; T=text. at_end_of_stream :- current_input(Stream), at_end_of_stream(Stream). at_end_of_stream(Stream_or_Alias) :- alias(Stream_or_Alias,'$stream'(Stream,_,_,_)), iso_eof(Stream). set_stream_position(Stream_or_Alias, Position) :- alias(Stream_or_Alias,'$stream'(Stream,_,_,_)), iso_lseek(Stream,Position,0,_). io_options(read, r). io_options(write,w). io_options(append,a). get_char(Char) :- current_input(Stream), get_char(Stream,Char). get_char(Stream_or_Alias,Char) :- get_byte(Stream_or_Alias,Byte), (Byte= -1, Char=end_of_file; name(Char,[Byte])), !. get_code(Code) :- current_input(Stream), get_code(Stream,Code). get_code(Stream_or_Alias,Code) :- alias(Stream_or_Alias,'$stream'(Stream,_,_,_)), iso_get_byte(Stream,Code). peek_char(Char) :- current_input(Stream), peek_char(Stream, Char). peek_char(Stream, Char) :- peek_byte(Stream,Byte), (Byte= -1, Char=end_of_file; name(Char,[Byte])). peek_code(Code) :- current_input(Stream), peek_code(Stream,Code). peek_code(Stream_or_Alias,Code) :- alias(Stream_or_Alias,'$stream'(Stream,_,_,_)), iso_peek_byte(Stream,Code). put_char(Char) :- current_output(Stream), put_char(Stream,Char). put_char(Stream_or_Alias,Char) :- name(Char,[Byte]), put_byte(Stream_or_Alias,Byte). put_code(Code) :- current_output(Stream), put_code(Stream,Code). put_code(Stream_or_Alias,Code) :- alias(Stream_or_Alias,'$stream'(Stream,_,_,_)), iso_put_byte(Stream,Code). nl :- put_byte(10). nl(Stream_or_Alias) :- put_byte(Stream_or_Alias,10). get_byte(Byte) :- current_input(Stream), get_byte(Stream,Byte). get_byte(Stream_or_Alias,Byte) :- alias(Stream_or_Alias,'$stream'(Stream,_,_,_)), iso_get_byte(Stream,Byte). peek_byte(Byte) :- current_input(Stream), peek_byte(Stream,Byte). peek_byte(Stream_or_Alias,Byte) :- alias(Stream_or_Alias,'$stream'(Stream,_,_,_)), iso_peek_byte(Stream,Byte). put_byte(Byte) :- current_output(Stream), put_byte(Stream,Byte). put_byte(Stream_or_Alias,Byte) :- alias(Stream_or_Alias,'$stream'(Stream,_,_,_)), iso_put_byte(Stream,Byte). alias(Stream_or_Alias, Stream) :- val(alias, Stream_or_Alias, Stream), !. alias('$stream'(Stream,File,Mode,Options), '$stream'(Stream,File,Mode,Options)). %------------ basic input/output primitives ------------- read(T) :- current_input(S), read(S,T). read(S,T) :- read_term(S,T,[]). read_term(T,O) :- current_input(S), read_term(S,T,O). read_term(Stream_or_Alias,T,O) :- alias(Stream_or_Alias,'$stream'(S,_,_,_)), nonvar(O), read_options(O,0,0,0,O1,O2,O3,0,R), iso_read_term(S,options(R,O1,O2,O3),T). read_options([],I1,I2,I3,I1,I2,I3,A,A). read_options([variables(Vars)|L],_,I2,I3,O1,O2,O3,A,R) :- !, A2 is A \/ 1, read_options(L,Vars,I2,I3,O1,O2,O3,A2,R). read_options([variable_names(VN_list)|L],I1,_,I3,O1,O2,O3,A,R) :- !, A2 is A \/ 2, read_options(L,I1,VN_list,I3,O1,O2,O3,A2,R). read_options([singletons(VN_list)|L],I1,I2,_,O1,O2,O3,A,R) :- !, A2 is A \/ 4, read_options(L,I1,I2,VN_list,O1,O2,O3,A2,R). read_options([_|L],I1,I2,I3,O1,O2,O3,A,R) :- write('error in read option'), read_options(L,I1,I2,I3,O1,O2,O3,A,R). write_term(T,O) :- current_output(S), write_term(S,T,O). write(T) :- current_output(Stream), write_term(Stream,T,[numbervars(true)]). write(Stream_or_Alias,T) :- write_term(Stream_or_Alias,T,[numbervars(true)]). writeq(T) :- current_output(S), write_term(S,T,[quoted(true),numbervars(true)]). writeq(S,T) :- write_term(S,T,[quoted(true),numbervars(true)]). write_canonical(T) :- current_output(S), write_term(S,T,[quoted(true),ignore_ops(true)]). write_canonical(S,T) :- write_term(S,T,[quoted(true),ignore_ops(true)]). write_term(Stream_or_Alias,T,O) :- alias(Stream_or_Alias,'$stream'(S,_,_,_)), nonvar(O), write_options(O,0,BP), iso_write_term(S,BP,T). % convert to bit pattern write_options([],A,A). write_options([quoted(B)|L],A,R) :- !, (B==true -> A2 is A \/ 1; A2 is A /\ -2), write_options(L,A2,R). write_options([ignore_ops(B)|L],A,R) :- !, (B==true -> A2 is A \/ 2; A2 is A /\ -3), write_options(L,A2,R). write_options([numbervars(B)|L],A,R) :- !, (B==true -> A2 is A \/ 4; A2 is A /\ -5), write_options(L,A2,R). write_options([_|L],A,R) :- write('Error in write options'), write_options2(L,A,R). % ----------------------- for compatibility ---------------------- see(user) :- !, see(user_input). see(F) :- (val('$see',F,S); (open(F,read,S2), saved(S2,S), def('$see',F,S))), !, set_input(S). tell(user) :- !, tell(user_output). tell(F) :- (val('$tell',F,S); (open(F,write,S2), saved(S2,S), def('$tell',F,S))), !, set_output(S). seen :- current_input('$stream'(_,user_input,_,_)), !. seen :- current_input(S), close(S), S='$stream'(_,F,_,_), rm('$see',F), see(user_input). told :- current_input('$stream'(_,user_output,_,_)), !. told :- current_output(S), close(S), S='$stream'(_,F,_,_), rm('$tell',F), tell(user_output). seeing(F) :- current_input('$stream'(_,F,_,_)). telling(F) :- current_output('$stream'(_,F,_,_)). find_file(user,user). % added for compatibility find_file(File,NewFile):-atom(File),!, file_search_path(Path), file_extension_list(Ext), see_a_file(Path,File,Ext,NewFile), !. find_file(library(File),NewFile):-atom(File),!, file_library(Path,Ext), see_a_file(Path,File,Ext,NewFile), !. find_file(File,_):- user_error('bad file name',File). see_a_file(Prefs,File,Sufs,NewFile):- make_file_name(Prefs,File,Sufs,NewFile), open(NewFile, read, S, []), close(S). putbyte(C) :- put_code(C). print(X):-current_output(S), write_term(S,X,[]). display(X):-current_output(S), write_term(S,X,[ignore_ops(true)]). portable_print(X) :- print(X). portable_write(X) :- write(X). portable_writeq(X) :- writeq(X). portable_display(X) :- display(X). switch_vars([],[]). switch_vars([X=Y|L1],[Y=X|L2]) :- switch_vars(L1,L2). prolog_r_term(A,V) :- current_input(S), read_term(S,A,[variable_names(V)]). prolog_read(X):-prolog_r_term(X,_). ttyin(top_read_term(T,W)) :- !, read_term(user_input,T,[variable_names(V)]), switch_vars(V,W). ttyin(get0(A)) :- !, get_code(user_input,A). ttyin(ReadOp):- seeing(F), see(user), ReadOp, seen, see(F). ttyout(writeq(T)) :- !, alias(user_output,'$stream'(S,_,_,_)), iso_write_term(S,1,T). ttyout(WriteOp):- current_output(Out), set_output(user_output), WriteOp,flush_output, set_output(Out). ttyprin(X) :- write(user_output, X). ttyprint(X) :- write(user_output, X), nl(user_output). ttywrite(X):-ttyprin(X). ttywriteln(X):-ttyprint(X). ttynl:-nl(user_output). ttyput(X):-ttyout(put_code(X)). portray_clause(C):-pp_clause0(C),fail. portray_clause(_). pp_clause0(:-(Body)) :- !, nl, numbervars(Body, 0, _), l_clauses(Body, 0, 2, 8). % 0!='' in sicstus,sb.. pp_clause0((Pred:-Body)) :- numbervars(Pred+Body, 0, _), portable_writeq(Pred), l_clauses(Body, 0, 2, 8), !. pp_clause0((Pred)) :- pp_clause0((Pred:-true)). l_clauses((A,B), L, R, D) :- !, l_clauses(A, L, 1, D), !, l_clauses(B, 1, R, D). l_clauses(true, _L, 2, _D) :- !,[P]=".", put_code(P), nl. l_clauses((A;B), L, R, D) :- !, l_magic(fail, L, D), l_magic((A;B), 0, 2, D), l_magic_nl(R, '.'). l_clauses((A->B), L, R, D) :- !, l_clauses(A, L, 5, D), !, l_clauses(B, 5, R, D). l_clauses(Goal, L, R, D) :- l_magic(Goal, L, D), portable_writeq(Goal), l_magic_nl(R,'.'). l_magic(!, 0, _D) :- !, fast_write(' :- '). l_magic(!, 1, _D) :- !, fast_write(', '). l_magic(_Goal, 0, D) :- !, fast_write(' :- '), nl, tab(D). l_magic(_Goal, 1, D) :- !, [Char]=",", put_code(Char), nl, tab(D). l_magic(_Goal, 3, _D) :- !, fast_write('( '). l_magic(_Goal, 4, _D) :- !, fast_write('; '). l_magic(_Goal, 5, D) :- !, fast_write(' ->'), nl, tab(D). l_magic(_Goal, Key, D) :- atom(Key), fast_write((':- ')), fast_write(Key), nl, tab(D). l_magic_nl(2, C) :- !, fast_write(C),nl. l_magic_nl(_, _). l_magic((A;B), L, R, D) :- !, l_magic(A, L, 1, D), !, l_magic(B, 1, R, D). l_magic(Conj, L, R, D) :- E is D+8, M is L+3, l_clauses(Conj, M, 1, E), nl, tab(D), l_magic2(R, ')' ). l_magic2(2, C) :- !, fast_write(C). l_magic2(_, _). peval_io(_,_):-fail. read_clause(C) :- read(C). fast_write(C) :- write(C). read_with_singletons(C,Vs,Ss) :- current_input(S), read_term(S,C,[singletons(Sing),variable_names(VN)]), singletonnames(Sing,Ss), termvarlist(VN,Vs). singletonnames([],[]). singletonnames([_X=N|L1],[N|L2]) :- singletonnames(L1,L2). termvarlist([],[]). termvarlist([X=N|L1],[var(N,X,_)|L2]) :- termvarlist(L1,L2). warn_singletons([S|Ss],Vs,C):-quiet(Q),Q=<1, warn_singletons1(C,[S|Ss],Vs), fail. warn_singletons(_,_,_). %warn_singletons(_Ss,_Vs,_C). warn_singletons1(':-'(_),_,_):-!. warn_singletons1(C,Ss,Vs):- add_true(C,(H:-_)), seeing_at(Byte), melt_varnames(Vs), ttyout(( print(Ss),print('** warning singleton_variables, byte=>'(Byte)),nl, print('=> '),print(H),fast_write(':-...'),nl, nl )), !. melt_varnames([]). melt_varnames([var(V,V,_)|Xs]) :- melt_varnames(Xs). BinProlog3.45/cparser/wam.pro100644 764 764 163 5660674715 15243 0ustar javierjavier% :-module(prolog). :-[run]. :-[bin]. :-[co]. :-[c_comp]. :-[c_instr]. % main(X):-toplevel(X). % :-module(user). BinProlog3.45/cparser/README100644 764 764 441 5675620430 14603 0ustar javierjavierThis contains the C-sources and Solaris 2.x executables for Koen De Boschere's ISO C-parser for BinProlog. Ask him directly for executables for other platforms at: Koen.DeBosschere@elis.rug.ac.be Use the `./cbinpro' Sparc Solaris 2.x executable to start BinProlog 3.x with C-parser. BinProlog3.45/cparser/engine.h120777 764 764 0 6664733563 17734 2../src/engine.hustar javierjavierBinProlog3.45/cparser/binpro.pro120777 764 764 0 6664733563 20726 2../src/binpro.proustar javierjavierBinProlog3.45/cparser/cbinpro100755 764 764 1037530 5764564550 15430 0ustar javierjavierELF04<84 (44--00lXz44/usr/lib/ld.so.1aRs+6D&-I:Ir:OBF&5"L7)2>+jC Ed!Syw(\WQP<%L~G@"MHJk $/KZ P'5g8No)0AN{z=2Ev|406M? ,# =H;1h>B#'9%.n !43AJK<]OT@e/pF-;G^V1c9lf,b_}iUCa[QtuXR?8qY$7`.D m3**x(  .(.d0no o o o 0 4\7:hs$40o >8HJ0tQ9 XH] Di$u8|֔$/4o x`:\h< pX"<Ddx8:k`%D-l|>;GE4LVJv7P LB@!p$;<<H0j 7,,xP#nx/< 7LhRLW_Le7X(m,w dL̨t<.,0f3D74D> 2l\|"o|*'6D;͌?`FfpXP>ZDāiwˌ.<̀4$7|7(n8Pp LlL># *7L4A8D2YXD`l,ks!h{f 4>d|486$@7 d1L̴Mm)ĬL1:X0CJ(X>c(oyxwn7@?7,wht$h@{\0g,  lT8ݜ0 ,7T)65X8AV,XXXb>l $uL4ѐ$͘>y6 TL0lShB\ B@ T#P\,`h8D?D G7DSj4e kp{QL(E `|xLͤEE;!\HX\l%`/;2H2E<F(OgLY(c$@n7<w!(јPxd DE 6΀0Bh3 h(E$ -t 7H 0 (m 6 = DԘ P@ V2T df8 mH Ѡ ˨   7 ̜ Xh ghp Z$X  t  n< -k` @g@ Io V ]F y 4H DT  ( |@ - o E( 9d x E, @ $ `4  n<  1< ( -8d$ :, F< ! Mo ZL _\ m& |X <  X 50 %  2H m$ XH OT ̐ 6 ( 6d  t 1WX H| Po  V< \Ͱ `E0 g|l qxX 24 = $ m fT    TH  X .<P $   @   ͼ [| ,78htabledcg_telllvalgetoptsymcatterm_append__DTOR_LIST__call_engine_startanswerhgetreleasevarsnew_builtincallocrun_bpatofbracketed_commentatoi__CTOR_LIST__seeing_telling_atdefintegertokenwam_bphsettanisdigitstats0reducelistoverflow_byreleasestackgiso_read_term_3findvariso_write_term_3_environ_endstart_wamget_hexadecimal_escape_sequenceinputhandledestroy_engine_iobstat_leftbp_haltcharconvlextableop_classsetarg__flsbuf_GLOBAL_OFFSET_TABLE_returnfilebufferputvarnameuser_bp_sizeseterris_engineunix_getenv__ctypeshift_char_code_listapplyfoutinit_bpabortuser_bpshowerrorcopy_from_enginefloat_opallocatefilebufferfseeksignalswritesingle_line_commentatexitexitrandmakeintegerunifyvarrootdet_append0blockrootrestart_origfunctorunix_cdreducecurlyhdeflogaccessmakefloatatomtablemallocsprintfmake_symtablemake_char_arrayreturncharpowmake_atomtablelocal_errorputsif0bp_prolog_callmax_initask_engineunix_killdouble_to_intsfputcfindall_lift_heapmake_floattokenptrinit_cbufferptrbinary_constantchar_code_list_tokensread0bp_versiongetbyteiso_eofmakeatombp_constokencharinit_instr_lendcg_connectints_to_doubleexec_linkload_enginemakevariablesoptionunwind_trailftellinit_codeget_non_quote_charcurrent_outputcputimemultitask_enginessscanfinittokenizerparseerrorcan_recovershell_1unix_accesscurrentfileoctal_constantc_interfacesee_tell_atolder_file0make_stackcompareungetcmakevarpeekbytefclosegetenvfloat_funsread_sysconflinenumbername2listwam_bp_sizeinit_randomget_single_quoted_itemshowstackerrorlinemakesingletonsoptionsee_tell_DYNAMICstart_profilercopy_termfloortokenstringadd_instrinterphfulllist2termchdirget_back_quoted_charhcountshowfbufprintf__iobinput_floatnew_funcwrite_floatpstackchararrinputbufferiso_open_stream_3_exitmake_byte_arrayget_double_quoted_charinit_common_memnewatommake_opshowspecifierload_kernelexpfloattokenvarcountenvironsrandcreate_enginefindall_store_heapfindall_load_heapcreatevarbpinstr_lenterm2listreadtermgetsymbollink_haltreducetermfilelistiso_lseekend_profilerfreeseen_toldhbakoptindopcountinit_engine_memstrip_cont0variable_tokenasinnumber_tokenoperatorhindexoptarglookahead_char2bufferendquietmescurrent_inputstrcmpsystemstartup_mesfgetsinit_orig_wammaketermget_octal_escape_sequenceget_cmd_line_optionsmake_hentryacos_PROCEDURE_LINKAGE_TABLE__edatafopenvalid_opderefget_back_quoted_stringmatch_termolder_filechange_arg__do_global_dtorsiso_close_stream_2fileread__CTOR_END__strcpyget_control_escape_sequenceinsert_opshifttokenget_meta_escape_sequencereduceinput_fun_etext_lib_versionnewlexsuspend_enginekillatomstampbp_exitfflushtoken__eprintfquiet__do_global_ctorsatanload_engine0fatal_error_ctype__DTOR_END__mainfloat_comparereducebracketshinit__filbufsetbad_instrseparator2atomstrlenheap_or_bp_haltstat_usedget_back_quoted_itemget_single_quoted_charstatbp_heap_toplseekinterp_frommakevariable_namesoptionget_double_quoted_itematombak_finihlistsinhstampwritetermshowstackelementdefault_start_pointhexadecimal_constantwarnmesunix_argvchar_conversioninitvarsfprintfputbytesoutshiftadvance_charfloat_fun2timessfullop0cosget_name_tokeninputfilelibm.so.1libc.so.1;6B E$E <KZ[ F$0\<*HCT`hlx̄l̐3̨̜V̴-. L,8!DkP\htẀp͌gͤ͘Ͱ<ͼO,!#{s(54%@LP @D# @#@@O, @ "@/@@##   #`*` 2`@ #, ?, @"@    ("("@ " 㿐 & !"b$ a($ a $ b@$$ $ 㿐 & #X#X"? @"(@$M @o @m  & 㿐##@@$ǐ!㿐 ` @$! :` @$㿐&&'? ?" @ @@`@ $```@8(&@ 2&6` "&&rP\@   @$–@$a P`&Pa"@ 2&@6  "&@&@@TP\@   @$@$C P`&PC"@`C >6  :  @$@$) @:$@P\@   @$z@$ P"P`"`P &P$@ .  $ ?@  $.  @$ @?$8a 㿐"b @ @# 㿐#@F2b@@#㿐 X 4# P#`  | "`$# "`( " 2 " P" "@+`?㿐ْ㿐&`cc&``@ @ ' 2@  '?`P'?`' @㿐@% 2 |@#"X*  X 4& P"$cc"(` @֤   $@ 2 `$ P$ $@ Đ "@ "  " & , & t" 㿐???ǐ?㿐@%    4 , t@  㿐 @:    "@ 2    㿐: `%N!X*`@999x99999Đ "@Đ "@Ē "Đ "@","t " @#bp@"  㿐@:  "@~b@"   "@","t" 㿐 $1?@ ? @  @ @:  `"@@(@ #??'  !'@ :   \   @:  ""@㌀@2`"  ?  ??2@ 㿈 +c ` N#ē*`@k>|>>>ABB>C??@@CCCD D8KLKL LlLD`DtDDLNdG@tI@FxA0JAdHAxJ8AEp@IA@HMMK4NBBJLJXJJJJJJLLQRPVStSSTTdTU$UVPVWX@Y Y`YZPZ[[x[\0\\]H]^^X^__L``(`L`p`|`aDaabb@b|bddldgbbc8cXccpcdLeg<ggtgefDf ffkkXkkkllhllmDmDmDidh$h\hhhii4ij8jXjtjjmXmOOQ,QR0R`RRRRSS$S,S<4&C4&@&=`4 "2/44`@ 2)@  @ 2@  P \@   @!@!  P`' P"@`@$@ 2E`4&@ʹ, 2 4& , 2 &@4, 42` Ɩ ", 2 4& , 2 4 4, &2`& 4, & 2 &@`&4 H, 2 &4, 2`&@`& &`` 4 ,,  2 4, &@4, & 2 j "}L4&, &@2 &`q`"6`@ 2#@  @ $@@T P \@   @!4@ Ӑ  P`' P"@2@>4$@&@6`@!" đ4`@ 2#@  @ $@@ P \@   @ @   P`' PX"@24&  &@ʲ`ȶ ` @ ?@ @?3"B - 87" \ 8@! `@  @  @ "@"` 8@ `@  @  @ "` , δ 4`@ 2)@  @ 2@  P \@   @ U@  P`' P"@`@$@ 2Z4<` , ` 2` 4`@ 20@  @ 2%@  P \@   @ @  P`' P"@`@$@ &@4, &`24` , 2 4`@ 22@  @ 2'@  P \@   @ɖ@h  P`' P"@`@$@ &@4, `& 2 &`2` ,  4`2`& `& 4`@ 2)@  @ 2@  P \@   @@!  P`' P"@`@$@b 24, `& 2` e`  v` 4&@& 4, `& 2 .&`4&@#& 4&@& 4, ;&`4&@0& 4$@&@4, `& 2  &`4$@&@4,  2 &``& &`8` 4$@&@4,  &`4$@&@4`&, &`2  &``  8@l  4 f, `,  & 2 ,  & P&&& P4' P, ` `& & 2 ,  1 Pi4' P, ` `& & 2 @". @#) Ā4, 4,  @ ?, "@ ?}4 * &, 4&?2 `2m&?@  @  @  2]&?4  "Y&?W&?, 2 `2&?@  @  @  2&?4  "&?&?4`27&?@  @  @  2'&?4  "#&?!&?, 2 `4 * &@  @  @  *`4  "& & & , 4 2 &@*`&& "` `@  @ @c@2`cW* `"6,@ & 2@ /, `@  4 @4  @4 ?c, ,@Β@ ,c *& * `",@ & 2@ ,@  ,4  2@ ,&c@2  8@c@ 8@  @@} Tp :    ' , ' t"  Đ !"@@ W 4 | Xc ' P & "$c` "( & 2 & P& o& tb x@#(/@ Ȕ2V@6#P Đ@ "I,   @ | "=   @ 6 "2 @  @l "$   '  & @'"c@ ct@$!#t@cp#t@`@ 2@  @ 2`@  @  @ "`@  @  @  `@  @  @ A v4  t` @  4 @ @4 ?c, *@t@  ??  * @` @$ , 2  44 U :f5&; , < 2``*4 4&&??  * @` @# ޑ, 2  ѓ44&; , < "2``*4Ð 4&??  * @` @# , 2  44&; < Z@, 2  *``4 4&??  * @` @# , 2  44&; < : z Z , "2``*4n 4&? ` 2 ?:` 2??ڒcx?  * @` @#] V, 2  I44&; , < : z2``*46 4r&??@#9 2, 2  %44b&, 2   @4  ? @4 ? N& p `  Ϙ *` @? "@@pp "  , 2  4+  4+  && ?  [ct@? "@t4 @m t< " *??  * @`  @"ʒ ")6$??  * @`  @" "$ ݴ??  * @`  @" "˴4ƴ??  * @`  @" "&??  * @`  @"n "2??  * @`  @"W ""??  * @`2; < , * 2``*  4, 4h&??  * @`2; < , : 2``*  4 4P&??  * @`2v , ?2`` 4 4:&??  * @`2` , ?2`` 4 4$&??  * @`2J , ?2`` 4Ґ 4&??  * @`243, ?2`` 4 4&?@?* cH, 2 44&?  c?`<  4` "@   c4 (, c@+ 2``{@4&@ u "@  "@M  ""&?@  "?` 2` "?@&??` 2` "?@&??@ ??"Ѐ;, 2  4-4i&@ +, 2  44Y&@`, 2  44J&@ ɖ , 2  49& @, 2  44*&@n, 2  ޓ44&, 2  *  4Ӑ4&@Ӓ "8@o "0?:  #0#4, 2  44&@x "?@A: @ "״@, 2``44&?:  2??  24  2@h" @ϒ, 2  4k4&@  "@3`, 2  S44&@"?  $4  ", ?:  2  8@:@     @+" ' , 2  44U&@ʔ, 2   44F&@ U, 2  447&#h, 2  @44)&#h?$@ P \@   @2@ѐ  P`' PA"@@ W ": #h, @2 $@ `44&@ , 2  44&@ [, 2  44&@!, 2  44&@! "ƴ@ , @̐ 0L đ2  t44&, #2``*  4g4&@ef, 2  4X4&@yW, 2  4I4&@ "~@ "v@ "n@, 2``%44a&?`2@@ P \@   @h@  P" P`"` P ' P?p$@???:`:@:, 2   44,&?@? "U% "N??, 2  ӓ44&?  2:<  "5?™;  2   ,  t@?Ö, 2  44&@? " ۴'@?젒, 2  44&@@) "?? ?@&:`, 2   ?@, ?4 * k @, ?4*  & , 2   ?@, ?4 * V @, ?4*  & ?@-E ?M , 2  ??:`?:@- ?4 * 8 ?:`?:@- ?4*  i& @x H Đ@ $, 2  ?44Q&Ux*` (" ?㿐?   @`p:  cc @``+ @@y 㿐? ` 2` *` @`2 b* @a@  @[ 㿐? `  `:`? `  2`  a@ *`2 b* @@: `?㿐?  6  . a82 b* @&@  a`@㿐?  a? `   a< @ :`  a@o*` ( 㿐` 2&` `  ` @` ` 2&2` "&& ` 2w :``j\!P*`@qtqqqqrr@rXr@d$ K"d  @  8 P P0  ( !(`" *   " ! c " "c "@* *` * *  Δ x`,     `.  @ 㿐? ` ?2`  @!8  3   *`+ 2` 2 "*`8*  b*`"2` `4*`#  :#8 b 2` "*`8 ; b0@!#8@ 㾀@?@h"@ @h? @&  0 㿐? `  bh*`2 b* ? `  *`2 * ΐ  b@K㿐??  2`@<b, 2 b* @ `<`c$c$`T1&`L@j`  @bذ2\"@ 2S#@bذL@ 2@#"#p@"#09c$c$`X.&`P@.`  @zc %@ܔ 2#(@hc @x 2#8"#t"#4#H@  㿐??   2` @cp ``: #p`@#  #t @0 ?" 㿐?2    #p@l# #t@*  㿐 -!  ":"56#p#p @?@??  ?@W??@?P@#p" "  d" p#t#t @" $#t??@>?@#t $#t?&?@#t0@#Ё㿐  `2 *` "*` @` *`2` !"*`#8@ @#8㿐?   *#8c:@?2 b* @???: :`@ m:@ 㿐 `  @ ``   `@  "@"@ `  &. > >`.`2 2` * *`@p 6`6 "@`  ` 㿐`2 @"@@`@  `@ ` @ ` #,  #,@-2 ` 2 4``   `@ ` ` 㿐@  @   @ @ `3    헖 [R ?폒+ S, I` 2  "   `2 ` " ` @` ` 23  :` 2, ! %  "`@@  ?+,  &&  ? >  㿐   6 !#8c@}>  #8 .  2 b* @8 %8 `   @` `2` *`  Ȑ @` Ȁ " Ā   * 㿐@`2 @"@`@       #8@Ւ –% `&!`J@ & @ `*  &J@   Ē&    ` `@9 (  `P`p@A㿐"& , `( 2` "8 @'`" @d && `     ` "8& #@㿐 c  3`   Z` @   @ P`   &   @   @ "8`@!=   2  'a8       `  ap 2 ?**`   a@ @Ֆ  ? `@2"  0 "    "  "    *"@" ""  " 㿐` @  2@  ` 28 2`3  `1?+*` &* `"*@ & 2@ *@ & ** `"( & 2 ( & (8   @W 㿐P     @Fy m & `   @` X` 2`  O `H `2 \@Ґ #@#` `;"\@ǀ#@#`&`"Ǚ2`?* `+  & 2 + `  " ` @` `  2`  8\:\ ` 2&2` "&& *  @@ "㿐,8`  2`   & f2&, 㿐`?&`"?"? @ `  a`?*@ " `  b@M:```*`  <" : *   " 㿐`` @?  @p@2 `&`   `  & ` 2` 2`& ` `ఒ2$@"p $`"㿐`"@` "`"```  $` "```& ` 2?* **  # @ 2@ *  "`"`㿐   b `  3``2b@ "̑. ?". . "?+@  " "@ 2 . 㿐?  `?<  8 %b@{0&h 2`P`P`\@   @@H `P"`Ph "``P &`P#h,` "@㿐#h`2P@P\@   @@ P"P "`P &P"Ȕ"& & g&   $&@ 㿐?   c?` <  4` 2@c0@ ` cX4 @ *`c@ $@@@ 2`P:?`P`\@   @@  `P"`P`"``P &`P? $@㿐? `  1c? :` 2 2 #c`  c2`( `(  `X?+ ` @ `@  "   "㿐"*` "`@*@ W @ N 㿐!#@#$b@# b"a0?" @ 㿐#?b  ", "*` `  * @  @     ', * @  ', ⸣* @` 2 #%: : @  ⸐ $@"@"!0" *㿐#?b  "* "*`@ `   * @ @    * * @   *@ "*`   ` "`@   @ * ⸇(  " #  * ( 逢 㿐#? @* b*    -*@ "*` ` !# b? @  * *           & &ɐ!? # 4 0  @ #  0c 0  @  @ ""  #"  c ` 㿐 ` ` 2` # >`+%?# !0  @ {b v`#@o  j 8  `````6` 4V R"Ѐ@N`M8  @  @  b ` $ $ $ $$  $ ȑ2$ *  $b  `  $ $ $ $$  $ ȑ2$ *  $ $ $ # |` "İ $䀢 2" 2 " 㿐  2 6  2  2  > $ ʐ 㿈쀢? H *` * "8 '##:`b:` *x "+ b@  *`$b " "a0"!+@ #   # ~ $ 㿐?` 2` "?@&??` 2` "?@&??` 2` "?@&???? 㿈?` 2` "?@&??` 2` "?@&???`!0  +  b* @`"Ѐ@ "@ߒa0?aP `?ap@ Z+"#3: b: @ Ґ ?+ @ "*`b"  &b ?a0""*@ *` * @`㿈?`? 2` "?@&??` 2` "?@&?? 2?!`!@  0y`!0  +  b* @`"Ѐ@ "@ba0?+aP`?$ap *` * @`"Ѐ@ A  4  `` ` `a@ ,` *` * @"`#3: b: @ ) ?+ @ "*`b"  &b ?"a0"*  㿈?`? 2` "?@&??` 2` "?@&???쀢 ?'a!0 @, * b* @`"Ѐ@  4  ` `* a@ C *` * @ "`㿐@ !  "aa* aa *?a*a* a*3a*a*a*a* a*a*a*Aa*a*a*a*a*a*a*a*a*a*1a*a*a*a*"a*&a**a* a*$a*(a*,a*5a*6a*7a*8a*9a*:a*;a*`<㿐N  -`?  ,  , : @r  ,` ,`@@&@ &@`?㿈ג쀢 *  @* 2 2  `" " 㿐`: -+5/ #  @  Z〤 ʀ ?ހ b ےb` "`, # @,@@   ,`@ # @, # @"`b @I  @#b)'    *2` ⨓*` b2@8 `b"@:X @`@ b@bh` #_2@ < A&bp4 ??, * @ y` # "M C "8l&  "  "Cc&  "^&  <   & *` < &   <   & *` < & *` 8& < 1& * @/& &  < 1)& &  < &&  < & `! # `# *@ @ < $@" `, *  㿐  "c@ < 8"j `. @X 0LLLLLLT<<                                  <L          4        D                                                                                                   $ ccl㈀ # "`X 1" #,# #`` <@8  `"@ `?@(`  <"  < "  "" @h"cY # 2T  "#@ < "@ @ "@ `' "` `' ` < "` . # 2/  @ < "@ ?*@. ""b @#c@#"   ' "# 2  g@# rN`_   b#ƒ 2U #Rc |`"J # 2 S# 2ڰ  # 2Ӱ # $  c  | +" ' .`2` * "# 2   c 2  | *"#   c 2 | " ' .`2` * "# 2z   c 2t  | o"# 2 # $  c  | #" ' .`2` * "# 2N   c 2H  | "C"# 9  c 25 | '" ' .`2` * "# 2)   c 2#  | &"# 1  @ <  "@# 2& # @  c : | -" ' .`2` * "#    c  | ,"#    c 3 | 7"# 2   c 2  | 8"#   c 2 | !" ' .`2` * "#    c  | "#    c 3 | 5"# 2   c 2  | 6"# 2 # @  c : | %" ' .`2` * "#    c  | $^"#    c 3 | 9P"# 2M   c 2G  | :B"# 8  c 24 | )" ' .`2` * "#    c  | ("#    c 3 | ;"# 2    c 2  | <"# 2 # 28   22 #   # .'  .$"# 2 #   c 22` 2`2 | /" ?*@. ">  ?*@.` " .2` * "# 22  ? c 2, 2` 2( `2% (  2 : 8   < 0" ?*@* "  0?' # 2  ?.`* @ " ' o"# 2  ?*@.` " `' ^"`㌀ 2q  ?*@.` " "  '  ^E"#@# 2X  @ <` 8"@ ?*@.`l "  #?N ?* * 2 @"# 22  ?*@.` "  <# 2!  ?*@.` "  @a"#  @"㘐   '   @h 㿐 ""@ <"@!  "㌖ " *  & !"# "# <# "#   & #" `& 㿐? &@k `&  @`#" @0  ? &@W `&  @ $`0? &@C0  & )#l T#l  %#lc(P@^L  L T*~  T"Lc0 @#\@u#`%#l㿐  㿐@ c @!@#@P#u #@n +? $@֐ `$  @?P? $@Ɛ `$  @@? $@ `$  @0c !c8 c8? $@ `$  @*`: ? ,@c8J c8 &c8*c8}2@ #c#c@㿐 "#lR '), W  ?M : *` @ ,  ``` &`",  @`*  "c@) *  ``` @ ($@ 8,2,!`X#8@!@B#8 㿐  \   X @ 㿐O    ې㿐!@## `?@" "a, #!"a @* $ "a( `?㿐!!(@!(c *`@ @  !( $!( ` *( "( `*㿐" `@@ @ 㿐L   J. J@ !  ? .    b `@   ? @b.  b".  ) "`" `" }b. "   " a, "*@#:  : @    c  ,   @c " c `㿐a "a@@Z! f* .`2  㿀@@ *`& .  . >  ~ *  㿐#  @"㾐c`!ӄ" X @; 8#+ #@ +`@ a(+`@ !Xؒ@㿐!`ے㿐"ah@㿐"a@ 㿐# 4-  4&: "@ha0"a@b0 . "a@Y> 0 2` "*`6  "@Ma 㿐#@  㿐㿐.`* c   & " a+ @"# 㿐( $    bD㿐   .2㿐"(#b  $ "0$ "8 $ "@ $ "H $ "P $ "X $ "`ے $ <"h֒ $ @"pђ $ D"x̒ $ H"ǒ $ L"’ $ P" $ T" $ X" $ \" $ `" $ $" $ (" $ ," $ " $ # $ # $ # $ 0#  $ 4#(| $ 8#8w $ d$ t$ p  $ #@$ l $ h T d  b X d  b#P] $ l$ $ $ ā㿐 #Xch#x c c)!Y@ 㿐@p 㿐@i 㿐@b 㿐@[ 㿐@X.  6 "@`㿐 "㿐$ @$ 2$ @6.`$ .`." $ $ $   $  $  $ @ 㿐 c  פc `? "  d?!"$`x  $`| " `! "  @@  $`Ƞ  ?$`̀ " U 2   # 㿐? @`""` đ.` "@ Đ "`#ذ : //4㿐! j l`?! a H " U $ " #$ J "    8 @ @` @(@ 㿐##`  "㌰ ? "c(l X 㿐 @: $.`(  .."@"`"` "` "`"`"`"` $"` `$ d` 㿐 "  @  |@  X@ 4@ @ 㿐 " @~h?? t"%#+c@~x*`: ?* :  z* h0hӠҐҸ$`@~쀢 _* ]%c$`@~耢 U* S$$`@~䀢 K* I$$`@~ A* ?$ $`@~~܀ 7ܑ* 5$$`@~t؀ -ؐ ) * '$$`@~fԀ Ԑ  * $$`@~XЀ Б* $$`@~Ǹ $ "? ??s "`@}!0b !  * @㿐1#a@ @} -㿀+aX)!'%#a!"#\#d1##hc,#`@}ߒb0㿐%"$  $ ܢ!$ !Ϡ!X, "  @ ,    ,## %` 㿐 !u"@}բ @}Ғ "bH@}s#@ !ǐѐ㿐ސؐ 㿐@-.@.@㿐!""$""".$""H " "H J $2"ⴔ  J  _2"J$, ؄"ⴐ "@ ⴁ"H " "H J _"ⴔ  J  _2" "@ ⴁ"H " "H J"ⴔ J " "@ ⴁbH " b"bH b* J@8  `"㿐 ߐ ) ڐ ,  @B ``"㿈"İ  ]$ ) |  @$쀢   ]@ $ ,  @쀢  ؐ耠@ $p  [  ] "Q$ 쀢  耠@ D@$ 57 / "- _ ( $ǐܰ# 'Ԑܒo'ذ{Ԙ$Ԁ  *   " 0] $㿈!""$" ""@" 㿐.`6` ".`㿐  %%  %<<## ?@"h07v `4 ! $< _+`4!"" b@{2< "$<``*< "< @``* & $< _+<`$< a*@!"" b@{Y2< "$<``j*< "< @``*``  $< _+<`$< b*@`!"" b@{12< "$<``B*< "< @``*82!"b@{:< "$<``&*< "< @``* 2*2 b* @ $<   +< "< `*b`|?"`| K*  $< [*+     bȀ 2! , #< $#<  *  bbȰ  bȀ #<bĀ  b x$ x |* x $ x ]:*2 b* @ $<   +#< ##< `*" | 2" |@  (*% ,  Ò<``$<@  *@,`c<"c< )*㿐!" x$ | |`$ |*@ x㿐!" x$ | |`$ |*@ x2 㿐!" x$ | |`$ |*@ x@zb;`d `(@ ?(`"" ##?2  @#`2 #d`#㿀ژ#,&& & &  㿀    >  `  :`'쉠B#, +   !а    >  ` 2 :`'쉠B#, 2    ?#( Ё ? )  x  > : `  :`'b B#, )k !   > `  :`'bB#,   J?#(a `?`\ y#X*`@$$$$$$D5@31@/: 83 1 , *% #@3   @#   ?#,$$ $  $ x` 2`  `@ ` 2w 2` 2s *`2 b* @    :: `  :`'bB ?#, ( ?   :  `  :`'bB#,   #(( l p2" ?@x ??@x@x?؁?S#,$$ $  $ 㿀` 2`  `@ `  2` *`2 b* @    : `  :`'b艡B?#,    ?#( ?`18 { *`@h,@T| @x3 b 7…@'셠B'  ' *  8$ @x $? @x ? @x ? @x ? @x ? @x  ? @x ? @x  ?#,$$ $  $ 㿀` 2` "@&` 2` "@&` 2` "@&  -  ` (2` %   *`2` "*`!: ; #8@w_b@w#8?#8/?$@$`$``$` 㿈2 ,@,  & ? Hc@w  㿐#0@w " 㿐#0@w" 㿐= @ `"  㿐c@.@@v@v. @.` @ @2`N @2 @ `H  @ ;` @` @2`3 @2 @ `- @! `% @  " @ `2 @ [2 @ `]2 @ `2 @  {   `} `@ 㿐`"Y "T  ' . '.`B \ '|# a b t n v f r `  \ '.&.2$.. ..? * 4<DLT\d . . ..... `ΐ ` '. . `   2 `  . "  .  @     &㿀 "S @   6   . 2 b* @ٖ;29  ` 24 2` /*`2 b* @–䀢 "#      0     @' 䀢6  0 `\`m` @^` - >`` @   .  -?  .  333 ͖؀R @2`*` * " 0@*ؖ . u C`6` ?`.`2 b* @$  ʖԔА@>Ȁ Ԁ6 Ѐ6 ̀6 N@ , N` "   '@ (.  ΐ 2`#,@@,```` x @ 2 ` ?  . ``` !#H?@u  2  '@`@ ` `2` *`2 * @ zRL $NL  VJL  AFL  RBL  > <@` ` 4@ :` . ; OZ@:`: " * @*`@*`" `A.  333 ͔؀R @2`*` * " 0@*ؔ . ݐ  '@ (.@    , ##\$#`'@.@   @B L .cL  2`ж   ,'@  [. "'@ . `##\$#`@```@ ` 2` *`2 ⨑* @  `L .`L  Հ` 6` .`2 b* @@t:cP "  '@ |.# #\$\#` '@ ]А@Ȁ \Ȁ`YЀ V6   `  Ȑ '@ (. Ȁ  ` #\#` `#\ #`$L , L   '@ ,. /А#\` #`2 Ѐ@OmȀ j`g 0ESL $OL  VKL  AGL  RCL  ?@ ;@F` ` 4@ :` . ; OZ@:`: " * @*`@*`" `A.  333 ͔؀R @2`*` * " 0@*ؔ .   '@ (.@ װ   , ##\$#`'@.@   @ԔЖ@Ȁ Ȁ  0     @'Ȁ`DԀ A6   `   '@ (. hȲ`ԓ2` `@  '@ . Ԑ#\ #`2 -Ԁ@yȀ ` 0oȀ 0-̀ * '@ (. Ȁ  ̒` #\#` ̔ #\`#`̀@cA SL $OL  VKL  AGL  RCL  ?@ ;@A` ` 4@ :` . ; OZ@:`: " * @*`@*`" `A.  333 ͔؀R @2`*` * " 0@*ؔ .   '@ (.@ Ұ   , ##\$#`'@.@   @L {L  }L  '@ {.$ #\$#`^`'@ }TL $PL  VLL  AHL  RDL  @@ <@` ` 5@ :` . ; OZ@:`: " * @*`@*`" `A.  333 ͔؀R @2`*` * " 0@*ؔ .  w'@  '@ (.@ <   , ##\$#`'@.@   &@ '@ (.@    , ##\$#`'@.@   @#\#$#`*`@  '@ ). `@  . @ 2  '@"cX@q+8#?c !?#$ $$#\{#`%㿐.`@q:   44 "    2  㿐@ @`_` 2 b "b@q & @&& c4& "c4  & 㿐c4@lc %@k " "  㿐#4 @p#@Nc )' #@I 㘔 "@B " "&  2 㿐#4 @D#@"c  )'  2  #@ 㘔 "@ " "&  2 4" 4" """ 4㿐'8 4 `"  1  @4` "` 6 " 6 * 2 b* @ @Đ$ $` b" "b  ""b`$ $@$;  4t` ` &  g` c@"_ @6Z * 2 b* @ @$ "`` " b  "b""b`$ $@$"= @69` "4` 60 ", 4( 2 c  * 2 b* @ @O$  " ` b""b  ""b`$ $@$`    @ u @p `"%  @g @b * 2 b* @ @$  " " `$$ "` ( "@ ! @ A#@> : * 2 b* @ @$ "` " $"#$ $  @  * 2 b* @ @ǐ$ "` " $" $  ($㿐b "b@o@ "" ""`""` " """㿐@o@@c@'㈢@  @@s$ @$ ( 㿀`!X.`@@Txd\ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttp "@ _쀢 K@ F#LcH* @e (3 (3@b  7` ` @ @b  7@b  @b    @pb Д@h  b   0 `"-" ` (2` $   *`2 b* @J@ -J`  ""#"⤐@(   "@   1 `, ` 2*2` 2& !*`2 b* @J@ -2J` a"?""@א  Qa @̔   FSb0B  <%  8%@, 6@ѐ   +%@   #%@ !@* 0Ȓ#  ##  #  %x@c %x!㿐 @ @m`#  @mZ#  @mT#Ȁ  @mN#Ѐ  @mH#؀  @mB# @m=#  2##@m/!@m* 㿐 @m#  @m  @m  ` "n @m 0< " - ,0-" %0(   0  ( 0 8 @  H  P X X ` h@l㿐 @lϐ @lɐ p   @l p㿐#8 *"`Q@"#D#L"(cH",#<  "@ @`!@ "@!#@ &#@ `"N#<  "c@ @`!@ "@!#@  #@ `"Z@#@0"cD("cL,"cH"c8#D   `"`@&"@  " %x     & "            P@ "  @@ >㿐#<   #   @k`   @k 㿐#<    2 @k 4c<$ "c<$@k @k$$ 0 @$ ($ ,㿐#<   "  @  @k@`0, 2 `@@2"@"c8"#D$@@ky 0<`@ @2@"@"c8"#D@`0@ke"<@kb㿐#8  ? & @ "?? & `&  @@j㿐#8  ? & #LcH* @3 "?? &@jѐ0 `&  @@j㿐#8 2 #LcH* @  #   !cL#H  @k!" #H$cL @k㿐#8 2 #LcH* @`?  㿐%"{    " "@cj"`  $#    "_  "[ "W   "N  `F  `2%    #0!@ڒc  '  ""?$) #@ɔ $"$ " " "?$ "`  ("@"` "`㿐% ! #@ `#`"W  "S     `E  `2"<  28  " `"  @ 2 ` "(  * 2 b* @@` , `"#"` ""@`#""#` "` ("@"` "` 㿐`!` ``&`!`'+  ` ```   ` aaa a  a(a0a8cc@㿐!  ' % "! ?z "b"  "b`2  "`  "` ("@ "` 㿐! `"> @ "` "@"`@a@  -"` ˒% ``"& @ 2" `  !@`" k" ""`"$@ (""a@"@  "`  " 㿐  ?ª?Ĩ?Ӧ?֤?݀L,@ &IG E /C :A`?= @; ^9 ~7 _5? 1? -?А ) !'?؀ $ ," ; [ ] {?  %     ?  \ ' " ` @ ,@ &  / : `  @ ^ ~ @ ,@ &  / :`  @ ^ ~ \ _ @ ,@ _?  ? ?А ? @ ,@?Ѐ ? ?  ! @ ,@ !?؀  , ; [ ] {?  %? @ ,@?  f n r t v @ @,@    ?  @ ,@`!H@hn`    #,  (,ⴀ T ⸁㿐"`#*` @-- -,-8-D-P-\!P!h!x ! !!!!b@h%!㿐#!cL#H@ 1#D#@ @#D#D * @#D@ $#H`@$cL#L ` T TL? L*?㿐L   #T "L`"#T"L㿐L  #T"L`"#T"L !%##LH@* @ #LH@* @ #L  #L cT$#L`$cT$#LL  #T"L`"#T"L㿐#LcH* m / / #L  #T##L`"#T##L#LcH  N *0 *L  #T"L`"#T"L 1#%#LcH@* @- #LcH@* @  *#L#L * #L T&#L`$T&#L#LcH@* @  #L T&#L`$T&#L#LcH@* @  #LcH@* @ / /#L#LcH    L  #T"L`"#T"L   ѐ 㿐L  #T"L`"#T"L""b@  #LcH*  "0 "L  #T"L`"#T"L"@`"*@6  2  㿐"d@"#L `"  #T##L`"#T##L +@ !'%"##LH@* @?. :  /%#LH@* @3. :  9#L$ cT$#L`$cT$#L *ݐ #L .L  #T"L`"#T"L#LcH* J* :  /0 /#LcH* J* :  90 9"@`" .*@ "@#L `"  #T##L`"#T##L +@~ !'%"##LH@* J@* :  /#L- /)#LH@* J@* :  9 9#L$ cT$#L`$cT$#L *B #L#LcH* r e e#LcH* e E E2#L  #T##L`"#T##L#LcH  F + +#LcH* 8 -X -U#L  #T##L`"#T##L#LcH * :  /0+J /(#LcH* J* :  90 9"@`"*@ "@<`";*@"@ t`0u#LcH* J* :  /0逢 /#LcH* J* :  90؀ 9"@`"*@u !'%"##LH@* J@* :  /#L /#LH@* J@* :  9 9#L$ cT$#L`$cT$#L *9 #L"@`"*@, @d" g:!{ ."@*S`0T b 0Fb"" 2Ax  @P?"b o  @? "b b  @?"b4  'L  #T"L`"#T"L@  "  """@`"*@Ɛ @d(" "b㿐L   #T"L`"#T"L#LcH    P!' ##LH@* @ `  BА #L .   cT$#L`$cT ?А$#L @ݰ?А 8#L . cT$#L`$cT$#L Ȱ? . cT$#L`$cT$#L ? x?㿐L   #T"L`"#T"L#LcH* Jk* :  /0J /H#LcH* JZ* :  7!09 77!%##LH@* J@H* :  /#L0* /(#LH@* J@9* :  7#L0 7#L .   cT$#L`$cT հ?А$#L @ϰ?7 o?㿐L   #T"L`"#T"L#LcH* J* :  /0J /H#LcH* J* :  1!09 17!%##LH@* J@* :  /#L0* /(#LH@* J@* :  1#L0 1#L .   cT$#L`$cT հ?А$#L @ϰ?ʐ b?㿐"d@"#L `"  #T##L`"#T##L +@Q  1)#"!#L#H@* @} b#L$b #T&#L`$#T&#L *& #L"@`"*@  㿐#LcH* F \b \_ #L  #T##L`"#T##L#LcH  ' \ \+#LcH*  ' '#LcH*   " "#LcH*  `0 `#L  "#T##L`"#T##L  +@ 㿐#LcH*  \m \j #L  #T##L`"#T##L #LcH    @F#L  T##L "T##L ?`2#@*`@GGGGGGGGGGGGGGGGGGGGGG         *b  㿐#LcH* Y \ \ #L  #T##L`"#T##L#LcH :* :  /0J /#LcH* J(* :  70r 7p#L  T##L "T##L ?1%##LH@* J@* :  /#L* /&#LH@* J@* :  7#L 7#L ,    cT&#L`$cT Ӡ?А&#L @͠?#LcH*  \ \L  #T"L`"#T"L  *"@`Ԑ" ̐ 㿐#LcH*  \ \ #L  #T##L`"#T##L#LcH   x0| xyL   #T"L`"#T"L!' ##LH@* @a `  ?А #L .    cT$#L`$cT ?А$#L @ݰ?А 8#L . cT$#L`$cT$#L Ȱ? . cT$#L`$cT$#L ? ` \L*"  #T"L`"#T"L  @`'"  㿐#LcH    6#LcH    $#LcH    #LcH*  0 #L  "#T##L`"#T##L  +@U    8 @ 㿐#LcH*  '1 "L  #T"L`"#T"L#LcH* j '0 '~ A #L ("#T##L`#"#T `#L "#T##L`"#T#L  "#T##L`"#T##L  +@.  # @ *㿐#LcH*  "7 "4#L  #T##L`"#T##L#LcH  ".   ". : ] #L C"#T##L`>"#T#LcH*  ' '#L %"#T##L` "#T#LcH*  `0 `#L  "#T##L`"#T##L  +@  # @ *㿐#LcH*  `7 `4#L  #T##L`"#T##L#LcH b `.   `. t: { #L a"#T##L`\"#T#LcH* ? ' '#L C"#T##L`>"#T#LcH* ! ' '#L %"#T##L` "#T#LcH*  '0 '#L  "#T##L`"#T##L  +@  # @ *㿐#LcH*  \02 \0#L  #T##L`"#T##L#LcH   0 L  #T"L`"#T"L  "" "*N   㿐#LcH* z \02 \0#L  #T##L`"#T##L#LcH  ] 0 L  #T"L`"#T"Lb' "" "*   㿐#LcH* $ \0? \=#L  #T##L`"#T##L#LcH   0 L  #T"L`"#T"L"@`"*@  W@ 㿐#LcH*  `G `D L  #T"L`"#T"L #LcH*  `0! `L  #T"L`"#T"L"" "*R  N  㿐#LcH* | "P#b#L#b   #T##L`"#T##L +@  1)#"!#L#H@* @K b#L$b #T&#L`$#T&#L * #L"@ `0 ` @ G#L#b   #T##L`"#T##L +@ː  1)#"!#L#H@* @ b#L$b #T&#L`$#T&#L * #L`!`;.#L#b   #T##L`"#T##L +@`'#L #b  #T##L`"#T##L {(i x@L  #T"L`"#T"L #LcH*  '&  '# L  #T"L`"#T"L"@`"*@)       㿐   1%'#LH@* @I  #L T&#L`$T&#L#LH@* @0 %#L0 %#Lg H@* @ /  /2  2  `#L#LcH*   ` _ ,R( )L  #T"L`"#T"L  (L  #T"L`"#T"L  .L  #T"L`"#T"L   TL  #T"L`"#T"L#LcH    #LcH*  %0$ %"#LcH*     L  #T"L`"#T"L  .А  ` ] [L  #T"L`"#T"L  |L  #T"L`"#T"Ln  {L  #T"L`"#T"L\  }L  #T"L`"#T"LJ L  #T"L`"#T"L8 #LcH*  "0 "H $ n  #LcH*   L  #T"L`"#T"L  * 㿀W#,&& & &  $*` 㿐\ 㿐T$.& "㿐?     0㿐#8@Y  @YD㿐  1'"Ţ"? :&@"ʺ? 2? @' 'X" 1&@1"ʡ%"?܀ !:&"ʖ? 2? '2? ' '-"@1&1"v"?؀ :&"k? 2? ' ' "`@&@ 㿐b@X㿐* *2 2 b* * b@X "@Xb  @X}2L@ "L@ rے & 㿐* 2 *  `@Xc N r  ?㿐 ?<`` ` `&`@`` ``Qٖ !` `` ]̖ ` `|  碰0 㿐   2      "bȔ Y@w?梕:㿐"ϒ "ʒ Ʌ 2  2  "     2 ?"? ?㿐"ՠ "՛ V 2  2  "     2 ?"? ?㿐#` #  㿐!"@WP@WQ@W㿐㿠㿐##   #`*` 2`@ #, ?, @W"㿠is_compiled_1()atomic_1()integer_1()nonvar_1()var_1()cnl_1()cwrite_1()fail_0()symcat_3lval_3val_3set_3()rm_2()def_3()change_arg_3()setarg_3()arg_3compare0_3l_neg_3|&int_only_op!=<=rel_opput0_1()get0_1random_1fdiv_3div_3%arith_opc_check_avc_opcodec_check_ivget_cut()put_cut()move_regpush_variable()c_skipc_trace(" ")unify_integerc_aux_unify_integerwrite_integerc_aux_write_integerget_integerc_aux_get_integerput_integerc_aux_put_integerload_integerc_aux_load_integerc_wvoidoldH_newPnewH_newPoldH_oldPnewH_oldPnewPc_chunk_endc_chunk_beginfun_arityfun_symbolunexpectedc_find_funget_offsetnew_offsetc_check0c_check{255,0,0,");_size=sizeof(long "}};[] = {struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} "#include "#include "../src/c_defs.h"#include "../src/global.h"/* do not edit: generated by co.pl */user_bpwam_bpc_decorate_file092c_spec_endc_spec},,(void *) {9193make_comment{"},patch_specials,"c_tracewchunkmake_bcodec_instrmake_hcodemake_ccode500c_threshold_minc_threshold_max100000xxc_rootdefeditmy_defeditVISUALEDITORget_editorls -tFubootBinWAM intermediate code.asmmake_includeprojectin_moduleunable_to_make.bp.cbin_prolog_with_cparsercparser95119110120100104newappl.bpdcg.plwrite.plread.pllib.ploper.plinit.pllistifymake_cmd0fact2rulebeginincludinginexec_run_time_commands0% !!! action delayed after compilation, for command:get_cmd_no$run_time_commandcmd_rootcmd2clauseexec_cmdensure_loadedinclude_filepreprocessis_dynamic_clausetranslate_cmdtranslateput_to_eofmake_memo_fileinclude_memoed_filememoable_filememoing_translate_alltranslate_all0write_c_chunkmake_dummy_endendclose_c_chunk_filec_decorate_file$end0footercomp_fileheaderdecorate_filetotal_compile_timexcompilecompile1compile0totalbytes_usedtranslate_allinit_cmdcompilation abortedcompile_time$end1terminate_filemaincompmcomp_fileto...compilingcurrpredoffsetaritypredicatenewpred0let_c_chunk_filewcode_asmwcode_cnwspec_cbegin_endc_flagc_thresholdwrite_or_skip0encode_opbuiltin_?arith_valuearith_variableinline_variableend_?firstarg_?clause_?write_or_skipwrite_voidunify_voidpush_variablepush_structureload_valueload_variableload_constantexecute_?get_cutput_cutpush_cutget_valueput_variableput_valueget_variableput_structureput_constantget_structureget_constantpush_constantwrite_constantunify_constantwrite_valueunify_valuewrite_variablewcodeunify_variableexpectedmc_transform_voidmc4mc_transform_pushmc_selmc3mc_chunkmc_pushmc5mc1mc0mc_emptymc_input0mc_inputmc_topempty_opcutencode2encode_arginstr_catmc_peepholemc_one_instrencodebeautifygen_instrtemparg256maxaritywrite_instrantigenicc_chunk_valuec_chunk_variablemake_anti_callbind_lengthmembind_c_chunk_lengthDEFINITE:EXPANDED:show_stepsshow_infoshow_fun show_or_skipFINAL CODE:gen_codePOST TERM-COMPRESSION CODE:mc_all_instrBRUT WAM-ASSEMBLER:show_instrshow_codeadd_upper_contdef_to_mbin0def_to_mbinemit_issplit_rel_1split_issplit_relsplit_is_relapp_bodyrepl_lvalrepl_disjrepl_conjrepl_known116117prologspying_onbinprologsplit_opstrip_nilrepl_macrorepl_bodymdef_to_defget_regfree_regallocate_regallocate1check_var_argcheck_var_varcheck_lifetimes99999set_todefaultcollapse_themmark_varmark_argvaluevariablevoidget_var_typefill_var_typefill_onetpointfill_allbad_occurrenceoccoldvarnewvar$OCCoccurrencefind_occurrencespushdeep_var_opunifyunify_opemit_args0deep_structure_opemit_structurecc_tcc_argstructureemit_argscc_argsemit_top_structureclassif_argloadconstantclassif_loadinlinecc_b_argsemit_top_bargshandle_constant_resout_regtempcc_top_tcc_eq1unexpected_body_atomemit_body_top_termcc_builtincc_eqcutargemit_top_argscc_top_argunexpected_head_atomemit_head_top_termbuiltincc_b0cc_h0set_modeget_modeend_chunkemithidden_varlenc_chunkbegin_chunkcc_hcc_ballocate_regscollapse_argsfill_infodictmaxcc_h_bexecuteiiclassif_firstfirstargcc_clausebu_bodycutpfailing_to_compile_clausenewpredgg_emitcc_compile_clauseBINARY:binbin_builtinc_chunk_filewam.hcwamcc_must_have_builtinscc_builtinscompile_builtinscc_bincompcompile_binaryshould be groundexplicit_bindingterm_is_free_oflist_is_free_ofreplace_key_variablesconcordant_subsetreplace_instancekeymergesamkeyrunillegal_argumentsksortmerge_2merge_sort1merge_sortremdupsortedbb_origunsortedassume_oneassume_all0assume_all$usedcopy_or_delete_llget_assumed_clauseinsert_llassume_with_hint_llassume_llassume_fileassume1error_in_assumebad_clauseadd_hint_lllinearassume$closedintuitionisticgenerate_run_time_predicate255listing1% assumed listing0% consult_cmdconsult_includedconsultingtimeconsultedconsult_embeddedsurvive_cleanupconsult0% using compile/1 is MUCH fasterconsult_warningabolish_expects_dynamic_clausesfoundabolish0$dbrefcollect_sloterase0clause0assert_itunable to assert clauseadd_clause0add_clauseensure_dynamic$lastdynamic code would shadow assumed predicateWARNING: dynamic code will shadow compiled predicatedefine_dynamiccheck_dynamicmake_dynamic!!! compiled!!! dynamic!!! assumedFail: Call: : tr_callExit: Redo: tr_if2tr_disj2tr_if1tr_goaltr_disj1CUTdo_disj0do_if_then_elsedo_disjdo_conjundefined_predicatedo_undefdo_applydo_goaldo_compiledunbound_goal ; for more, otherwise user_actionanother_solreport_top_varsreport_one_vargoaltopsavetopnothingtopcallreport_answerstopinterp?- topstep$endexec_run_time_commandsbinpro_startexpected_to_expandtry_edcg_expansion-->>dcg_CONJdcg_disj0dcg_term{}dcg_disjdcg_goal@@dcg_headdcg_conjdcg_bodydcg expansion error->dcg_rule-->try_dcg_expansionkillcdaccessno such environment variablegetenvargvargcHOMEappend3near_matchpredmarkpredicate_key0compiledbuilt_ininterpretedgenerate_a_predicatepredicate_property0is_predicateST267911168float_minus101try_float_exp1etry_float_expboxtry_floatculpritblackboard overflow, left onlybb_put_1bb_put_backbb_failbb_gcbb_default_val$gteq$lesseq$noteqvariable_in_iserror_in_isin tab/1: should evaluate to an integertab0make_lengthget_lengthgeneral_appendappend_bodyterm2dlist$floatBP_PATH9798105108getenv_path99115103111114112121109compile_memsave_term$VARvarsare_sharedshare_varssno meta_interpreter for undefined goalcall_ifdefstd_expand_termportable_expand_term1200?-1199interactive0is_interactivenois_builtin_varbucontis_builtin_nonvarunable_to_spy_onyes$assumed$firstyfpostfixopxffyprefixopfxyfxxfxinfixopxfyop_typeget_op010000opmarkget_opgensym_nobad or repeated declarationhide_atom0hide_atompublic0currentshould_be_nonvar*** : >>> portray_errorprettyerror_messagebasicbboardhtablesymbolsstringscodetraillocal_stackglobal_stackruntime:Cset_c_traceset_c_thresholdstat_dictmember_inth_memberphraseotherwisenospyspyingspyspy_goalinit_gensymgensymis_publicpublicmodule_namemodule_predicatecurrent_modulemodulesis_modulemodulemodule_calllwritepatch_itshow_code0char_in_cmdith_clausetr_bodydo_bodygc_read_clausegc_readbootctracetmakekcmakekmakecmakemake0makemake_executable_unix_applmake_appldirlscurrent_user_filecovinotepadpicoemacstexteditedmy_editeditis_builtinopcurrent_opswritesreadflushsee_or_failexists_filetelling_attell_atsee_atttycwritelnttycwritepp_termpp_clauseportrayread_tokensis_prologtoplevelmainquietmeserrmesvars_ofterm_charsfree_variables^setofbagofkeysortsortbb_elementbb_listbbis_dynamicis_assumed-:assumed_clauseassumedassumelassumei=>listingreconsultconsultdebugabolishclauseeraseinstanceretractallretractassertassertzassertadynamictracemeta_interpretersystemunixaproposhelpctimecurrent_predicatepredicate_propertyacosatanasintancossinexpsqrtlogpow:=:dcg_phraseletbb_change_argbb_letbb_rmbb_valbb_setbb_def=\==:=>==<><@>=@=<@>@<\====compareexprisgetappend_disjappend_conjappendNcompoundnumberfloatgroundgc_callmake_cmdlength++det_appendargnforall_but_at_leastfind_at_mosthas_fueldrop_at_leasttake_at_mostnth_answerfind_whileskip_whenskip_untilwhileallfindall_disjfindall_conjfindallfindall_workhorse\=\+repeatexpand_termmetatruemetacallinteractivestatistics::-=..asmadd_conttermcatstrip_contincludecompilebu1174n_nop160n_builtinn_arithn_inlinebu_ctrin_head858483828180797877767574737271706968676665646362616059585756555453525150494847454342414039383736353433323130292827262524232221201918171615141312119arith76in_bodybu0add_true** warning singleton_variables, byte=>=> :-...melt_varnamesseeing_atwarn_singletons1warn_singletonstermvarlistsingletonnamesread_with_singletonsread_clausepeval_io)l_magic2:- ->; ( 344tab, fast_write :- !5->l_magic_nll_magic;468l_clauses:-pp_clause0portray_clausettyputttynlttywritelnttywritettyprintttyprinttyouttop_read_termttyinprolog_readprolog_r_termswitch_varsportable_displayportable_writeqportable_writeportable_printdisplayprintputbytemake_file_nameuser_errorbad file namefile_librarylibraryatomsee_a_filefile_extension_listfile_search_pathfind_filetellingseeingtoldseen$telltell$seeuserseeError in write optionswrite_options2-5-3-2write_optionsignore_opswrite_canonicalquotedwriteqnumbervarswrite_termerror in read option4singletons2variable_namesvariablesoptionsread_optionsread_term10nlput_codeput_byteput_charpeek_codepeek_bytepeek_charget_codeget_byte-1end_of_file,get_charaappendwrset_stream_positionif=notpastat_end_of_streamatend_of_streampositionmemberoutputinputmodefile_namestream_propertyflush_outputclosereseteof_codeerroreof_actionfalserepositionbinarytexttype.io_optionsopen_options$stream[]set_outputset_inputcurrent_outputcurrent_inputinit_iouser_outputwritedefault_outputopenuser_inputaliasreadcurrent_streamorsaveddefault_inputbinprolog_with_cparserdefault_prolog700 xfx :=700 xfx =:600 xfx <=950 xfy =>950 xfy -:600 xfx :=:900 yfx :1200 xfx ::-1150 fx module1150 fx public1150 fx dynamic1050 xfx @@1050 xfy ->900 fx nospy900 fx spy900 fy \+900 fy not700 xfx \=700 xfx =..700 xfx ==700 xfx \==700 xfx @<700 xfx @>700 xfx @=<700 xfx @>=500 fx \500 yfx \500 yfx /\500 yfx \/500 fx #500 yfx #400 yfx //400 yfx <<400 yfx >>300 xfx mod200 xfy ^300 fy ~700 xfx =:=700 xfx =\=700 xfx <700 xfx =<700 xfx >700 xfx >=660 xfy ++650 xfy .400 yfx *400 yfx /500 fx +500 yfx +500 fx -500 yfx -700 xfx =700 xfx is1200 fx :-1200 xfx :-1200 xfx -->1100 xfy ;1000 xfy ,if0profilebb_resetlist_asmstat0shellnamefunctorfindall_load_heapfindall_store_heaprestartabortcallhaltnew_builtinsuspend_enginemultitask_enginesask_engineload_enginedestroy_enginecreate_enginequietunix_killunix_cdunix_accessunix_getenvunix_argvunix_argcsetrefbb_opbb_getbb_putiso_lseekiso_eofiso_peek_byteiso_get_byteiso_put_byteiso_read_termiso_write_termiso_close_streamiso_open_streamdcg_tellingdcg_telldcg_valdcg_defstrip_cont0write_floatinput_floatfloat_funfloat_fun2term_appendop0string_opsee_tell_atseeing_telling_atseen_toldsee_tellseeing_tellingolder_filebb_list0copy_termdet_append0lift_heapadd_instrself_infoterm2listlist2termdcg_connectsymcatlvalvalsetrmdefchange_argsetargargcompare0\#\//\>><<arith_difarith_eqgreater_eqless_eqgreaterless0putget0random///mod*-1+is_compiledatomicintegernonvarvarcnlcwrite_failtrue?$cut$bin_cutno definition for: main/1integer expected in halt/1trailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: blackboard operationunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loadingunable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserstring table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceeded Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programediteditor_filenoname.plversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (with ISO C-parser by Koen De Bosschere) (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting string buffer (-i option) exceeded or infinite term%ld%sbad arg in arithmetic operationA%ld%-se%-ld %fc.c not compiled with -D C_INTERFACE %s%f[]Unknown term type (%08x) []._=,end_of_file fx fy xf yf xfx yfx xfylterm term del| %4d: %04x , [ ] | { } ( ) . ===================== %s:%u: failed assertion `%s' rterm.ccurrentfileinputbuffer%4d %s buffers = %d error in returnfilebuffer %d []|(){}{}Clause correctly parsedMissing quoteToken too longUnexpected eofBack quoted strings not supportedNon deterministic codeIncomplete reduction?syntax_error on line %d: %s Errorno assoc for prefix operatorno assoc for infix operatorno assoc for postfix operator_%duser_inputuser_output%s:%u: failed assertion `%s' iso.cINTEGER(xval)current_streamwritereaduser_bpctrue_prolog:$end04 6 @ n o J d.d.( 00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c|0`0] xBpx B hxB`x B Xx B Px B Hx B 8x B 0xJ(  xJ( xJ( xJ( xJ( xJ( xJ( xJ( xJ ذxJ  аxJ  ȰxJ  xJ  xJ  xJ xJ( xJ( xJ( xxJ( pxJ( hxJ( XxJ( PxJ( HxJ 8xJ 0xJ (xJ  xJ xJ( xJ( xJ( xJ( xJ ( ذxJ!( ȰxJ"( xJ# xJ$ xJ%( xJ&( xxJ'( hxJ( XxJ)( HxJ* 8xJ+  xJ,( xJ- xJ.( xJ/ xJ0( ذxJ1( ȰxJ2( xJ3( xJ4 xJ5( xJ6 xJ7( xxJ8 hxJ9( XxJ:( @xJ; 0xJ<  xJ=( xJ> xJ?( xJ@( xJA ذxJB( аxJC ȰxJD( xJE( xJF xJG( xJH( xJI( xxJJ pxJK `xJL XxJM( HxJN( 8xJO (xJP xJQ( xJR xJS xJT( ذxJU xаxȰxxxxxxxxpx `x Px Hx @x 0 бp`P@0 бp`P@0 бp`P@0 бxx h x `X44  X4 4  3 0H@3  H@308(3 8( ( @  x `X44  X4 4  3 0H3  H3083 8   x  hxH@J( аxHJ( x ` H@ 8x ` H 8 x    x   X      xxphxxp`xxPxxPHxx80xx8 xx8 xx8  X44   3083  8 `x  x >> @ 8x  Яx  8= = =@ = =8 8 = (JB(x xx x p = 8 438 h `=P P  = p 43p hh `x  x >  8Hx > >  8@@@ 8 00( x    x X4434h3h3x  ذx   ذx >   8Ȱx   Ȱ x X4434h3h3x  x   x >   8x   Яx x    xx x  Яxx >   8px  hpx  hx   x >   8x   x >   8x   Яx >   88x8J( 8  @x @  @x  XXx X  Xx > X H      43@      8 H         H xx  0 (J   H H xx    J   H H xx   J   H Hxx   H      ذx   Яx 43x43  Яx  x43دx 43x4x433  Яx  x4x433دx 43x4x433  Яx  x4x433دذ x > X   0   8   xx Xh x(       ` xx Xh x x      ` xx Xh x p      `xx ` H @88 (@@ x 0 4 4  003 ` 3 @     X(88 (( x   4 4  0 3 ` 3      Xx >(>  x h4(0@(3>> x >>  x h4( (3>> Яx >> x >> Я888  x     x   p x  @  `XxxPx   ЯHx 43x43  Я8xP(xxxH xxhxhx X43x43   аx  Ȱ  x43   ( XȰ  ( دȰx @8@   > 0(  8x  Яx    x  p  xxxpx  phx x Xx  HXx H@@ >0(pH@@ 0 0(  ȯHx @ H0   0( ( 00 x  x  px0  4  x3     0   0  00 x x    Я(  Яx p Яx( x  x pxx  Яx  Яx p Яx  p  pЯx    ( (  x(JJ p  x (  0  Яx hx BXx@аx@ x X4 0    3x4 x4 3   3   0 0xxhx0   xxhx`  xx  J M (J  x   x @@ x @>    4  3 4  4  p 4  4 4pp33 P3 P3 P  3 P  ذ ذxx`د pp=( hh ``= XX= PP= HH=x 88=p 00= h(  = h((= h(= h(= h(= h(= hx(= hp(= h(= h`= hh= hX= hP= hH= h@= h8(= h0(= h((xx= h (pp= h(hh= h(XX= h(PP= h(HH= h88= h00= h((= h  = h= h(= h(= h(= h(= h(= h(= h(= h= h= h(= h(xx= hx(hh= hpXX= hh(HH= h`88= hX  = h(= hP= h (= hH= h@(= h8(= h0(= h((= h = h(= h= h(xx= hhh= h(XX= h(@@= h00= h  = h(= h= h(= h(= h= h(= h= h(= h(= h= h(= h(= hx(xx= hppp= hh``= h`XX= hX(HH= hP(88= hH((= h@= h8(= h0= h(= h (= h =(   = = =x =p xx=( pp=` ``=h PPX HHP @@=H  p    xx=   XX= ``= = = =   xx= pp= `` PP @@ 00   = hh= = = =   = = = = = = = = = = = = = xx= hh= XX= HH 88=   = = = 00= = = xx= = = = =       = = =   xx= pp= hh= ``= XX= PP= HH= @@= 88= 00= ((=   = = = = 00=   = hh= = = = = = = = = = =  = = = = pp = = = = = = = xx= pp= hh= ``= PP= = ``= HH= 00= 00 ((     =           =  = =  xx hh `` `` ``= XX= PP HH @@ 00= 00= ((=      = = = = = = = pp = = pp= =  xx xx hh XX  xx pp @@ XX= = = @@= XX HH=  PP   HH @@ XX 00 ((    hh pp     @@   ((         = ``= =  =  = = =  = =  = xx  pp `` XX PP HH @@ 88       =   = = = =   =     =   =    xx= hh= XX= HH= = 88= 00   =  =    = =   =    xx pp `` HH = XX= XX= HH= 88= ``= ((=  =  =  = ( (( ( ( ( ( (x (p (( px      x      xJMJ  (8p( xJMJ x p  hB B `B Bpp `pX X xx xxHx   ( 88x x 8xx(J8x  x   x  دذ x x  x4 3 x    xȰ x B B x  x  4    3 x Ȱx  xx @ px   8 x 0 x x h 8 88 x   B   x 43h4>3043  x    x   x  x  8x x   0   0x     x0x  x  h   x x     x   xJ(J(J x (J x   B د x `444 333 4 3     xJ/ ذx    xJ(J(J      xx pp` XX` xPJ x@J B xxx 8 xJ(   4x83 x    pp x x    @x > > x  @x >   x BxPx  B h8 h `Px Bаx  88         xxx  J5( 0x @@x   ppH p`xHxBpx  BЯpx  Яhx  x  Я    `x Яx  ЯXx ЯXx  Я`x  Я`x  Яx  Яx  Яx x  Bx ذxJUxx xJ$   Яx  x  x x x  ذx  دذx    Ȱx  ȯȰx    x `443343  Яx `4433  Яx `43  Яxx(J  @ Hhx  @ HXx  @ HHx(JJ (J(J x     8x h     x X     x 44  0  3  3     x   0 0xx  x 0x  @ x x  X x ذx   x J  xJ (Jx BJ(  x (P    Ȱ  (J(Ȱx B   Ȱxx   ȯȰx    Ȱx    Ȱ x(JJ    ȯаx  ȯаx xJ&( x(J&( xJ+ȰxJ* ذx  ȯxJ.( x(J.(  xx x x x Bxxx xx  ذxxxxxxxxxxxxxH x x xHxxx 43xxxxx xxxxx xxxx xx xxxx xx x x xHxxxxxxx  x  xH x 4    3   h        `` x                `xxx p (`x pphpp ``xx BB x B Ȱx B  p= x B xȯx B H xx BJ ( xxxJ!( ذxxJ!( `xxJ!( x  >J%( x  J%( x     xx  >2J%(Px  PP x 4  `4 4 4 3 X h3 h3 xx x  x3       x       P x       Pxxx x  J%( 0x  2J%( @@  @xxx@x   B  0x     0  0xx(J0    xxJ (J x P px    px  x  (x  x X44h33 xx h   pxx x  px B   px h ȯpx  B  pp x P(Pppx4  3 x xxx   p x P(px4 3xxx  (hxJ( 0x   xJ( hxJ( `x h J( XxJ ȯPx 0 J( Hx ( J( @xJ 8xJ 0x p p(x p p x p px p px p px p p00 hh (( hh Ȱ00 Ȱ(( x 0  `x    `xJ  xJ а x 8   `xJxx      x      x      x    x      x  x  `x h `x h `x  ``x ȰxJ ȰxJ 0xJ  xJ xJ( Ȱx      ȯ(xJ pxJ( x    (   xJ9J8J6 x  Яpp J(xJ( x(J' P   xxxxxx   x   xx  h  xx 0   x x>x p443X3P  `@ xxxP8xx   (@xxP8 (xx  (xx  x  x x P (x   xxxP8  J( xxxP80   x pJ( xJ1( xJ1( x pJ1( xJ2( xJ2( xJ2( xJ2( xxxJ2( hxJ2( pxJ2( `xJ2( PxPJ2( Ȱx pJ( (x  xx> `Ȱx B Ȱx  ȰxHx BH x    x X443h3h x X443h@3h xx xh B 0x B >  ȯ0x  0 B B  0  X@   BXx  PX HH J (J( xJ' h430  X 43     x x  p x  x  H  8 8x  8x    08 x  04 3x> 00x 0  0px(JIJK x  JG(J 43(   JG(    ` JJ JK p JLx     x       p  h4 3 @  `` XX X     `x   H`      H`x   HHx 0J0( x B  X     p             8  800        xx   p       xH x 8 x    x h J( h    px   px  px  x xx   Xx  XX x hh          px  xxx pxhh  phx  x 4x3 xx h J( xx     h`x X @PxH@J( Xxh  8`hxx  0 `443h3483`hx   x  0  x 0hh h43 x 4p3 Я88 p  hh 8  hȯ x 4433h  xx   B  p x X44344 33h83h B     Я  ȯ  xЯx  x x 0X4434 4  3 3h83h  x X4434 4  3 3h83h x Bx   xx 443hx3hP x x>x x x  x        p        h8 x p 8 px  h            XhxHX x   Xx    Hx   Hx    x  xxx  B  px x X4434 4  4  4  p x3 @3 3 3h83hxx            xx8 x            0x xx (0               0x    x0x     x x  x x       `x 8 x    xx              x     xx x x  (                  x     x x      x x  x x       `(x(  x( (x 444 X4  X 4  4  4  p3 P3 3 3 4  4  4  p3 P3 3 3`44  4   3 0( 34  x3h3 @3`4 4 p3 h34 `4  >3 h33X4X434334443P33 44 4  p3 P33  X   x  Я   x  ȯ   x  x 4 p 0  x    X4 4 3 4  4 44px 3@33 3 h 83 h 3 x 4 p   x    X4 4 3 4  4 44px 3@33 3 h 83 h 3  x B 4 p 3  x   xx  x     p4`3 px B ( ppx  px `x  P x  x 43аx  а x   аx @   xJJJ @    xJ @   ذx @ P аx @ ( ȰxЯ xЯ x h4   3@  x @> P   >   x xxPJ(JJ (JPJ xx ppJpp  x x x  xp xPJJ h  4 3 @      hx J( hxJ (Jh x   `  x X 8 `x  `x PJJ`xh(x  xx ( hx (  x 4@Xh( 433  (x @ Ȱ@@xȰx   xxxxxxxhhxx@` x   p4  p `3  ` x   P4  p @3  `x X43@`x p@x X43@0@x p`x `  8`x p x X444  X 3h4 30 34 h  3h@34h  P3h   `x ` `xX x   @h  ( x  > @h   x  @   Hx   > Px   > x B   xxxx x @  x   B pxx  @x  00x  00 x   @J B   XX x   x     @XxxX@  @ B B 8@   B @ px  x xJ pxxp x @(@   (x    x  @@x  @@  x  `x    hh0 xxxxxxxxxxxxJ'( x  x  44p4 4  4  4  4  p3  3   3   3 `4 4  h  3 X3 4    3  4  3   3 3 3`  pX hh0h   0      X44 3  3    x   0  Я  xxx h J( xxxxаx       (( xx x(JJ                  xxx xJ( x  x xx x h   دx   pذ xx B     =   x (        ذx  ذxxJ  B     =   x  (  x  0          ذ x   xx B          x       h 4   3 x>  @ xx B          x       0   J ( x   x   xx   x xx  x          h4  x3 x   @xxx  xxxx  Ȱ x     Яаx   X  x 4   x  4 4 `     H   h 3   3 3 xx   а xx  x x  Я` ` xx  x     `  00 0xJ B(J00xJJ((J0H xx  H 4 3 x   HH xx x h J(HHx  H   Hx   Hx   H x  x B     x  B  x       x       xJ  (              pp     0   0   0x BXx     xJ  (        xx   Xذxpx    px  Яpx  pp   `x B   x   x    аxxxx pp hXx H x @@  X pXp 8 x   x  H@@Hx    @ P   @ x xxxЯx(Jx B   x B  x x аxxx  x     @ 44  0(xh(X443 433 4>3 3 3    x         4 3    43 P4443  3 433 43   H8 x  0>43( 4  3 0    x  0>43( 4  3 0   x x  x      x   x     HxدP x   Яذ x  P4  8 3   ذ x        ذx     x    ((    8  x        ( (        xаx B  Яа  а  >4 3 p(     а hh     hа x X   а x     @   аx    ( @ x     x(   (       h x   B B  hx  x h 4    4     4   3h3 >4 3 3 >4 3        ((  Xhh  P     ( P     4( 4  3h>3h    Xx   (  P   P(      4      3 >>        ((  h B    ((h B  >4 3  4 3>43      ((h h    x  B    x  B    x  h   Ȱ  Ȱ (( h 4  3 >4 3     ذ x J  ذxJ (J J J  4  3          ذ xJ J J  h   0(        x x J  xxJ J J     4  0(x 3 4  3 P       x J   xJ J J (J  h        hh   B   hh   B   hh      p   h     px 4   X 3  H4 3        @ x J  @ xJ J J (J  h   @    88 hh   B  8 hh   B  8 hh      (   h     h x(J (JJ J  h   @(   8hx       (         @(x    4 X3  H4 3       Xx       (          x J  xJ J J     4    0( 3            دذx ذx   x B   x B   x xJ    x  @@ @x@ x      xx x           x   B  x   `  B      (     ` x   4 h3h` x x  h(J((J  x   h    xx   h`x (J( h  h xx P  h  @@`  B 0@x 0((( 0((( 0( 0 J P P 43`4((3 >    `P=    `P P     `P =`   4 3 ``    4  >3 >J(    4  >3 >J(x`((  x`( (J  x` (J  x `= =hx J h xJ J 0( h   ذ   Яаx  аx  x ` `      4 4 4 3   3  3    د         x   x  J  J   J J X  Xxx X   =`        xx  x x(( B h   `x x( B(J    `xx(J    hh x     x J  hx  ` x x    ` x  (J( P@@@ @  P@@@  @@x B @x  0@x    @x h  X@x h4433 x@x Xx h x Xxx  xxxx0 0`` B `ȯ0XX B Xȯ0HH B Hȯ0 B ȯ0HH B Hȯ0    0    0 @ @0hh X0`` Xh0PP X00HH X(0 0pp 0  0@0@0@0@0@0@0@0ppp@ x B @ x @ @ x` B      @ @ @xX @ @pp   x   Ȱx ЯȰx xx    x 00     h ((     h        h      h      h      hxxxp B xxx0 B xxx0   ȯx xx0 p  Xxx  X  xx xx   xx hx  HHx X    x 4 @  3 x x x     XXx  B   Xx  B   X x  h  ȯXx x x  x   X    X     x 4@  3xx  x  x    xXx x x  X    x 4 @  3 xx  x    x@xx 0@@     0x      XX@ B   x@   x B     x 43     43 x J0( x J0(  x H   4  p H    3 4  h 3 h    x 4pH 3h px 4p3h px pHx  x  x` P Bx` P Bxx  x   x p xp`Pp  ` ` `xPx  `  4x`x`x`p3` p Px  p @  p44p4 p3X303X 4p4p3X3 X@x xx     x       ~~   ~xx                 ~~      ~  4  3 ( h ~    ~      ~  4  3 (   ~>    ~x B         4~4>3x43~>3~43(        ~~ x  (J  ~      x ~h   ȯx ~~~ ~xx  ~h     ~X~     h8     ~P~x Ȱx   ~@ ~@ x  ~0~   ~   J (~XPP~~X  ~    ~x~Xpp~~X x   `      ~~X   ~~~X x    ~~ x}`   ~ x}`   ~ x   `      ~~ ((   ~~ ~ x     ~~x ~0x}}ذx}ȯ}Ȱ xx }  ~h}}}    }ȯ}x   }x  }  }د} x }    }     } }} 00   } }} x(  } ( }x}x    }} x   H }`   h     }د}x   } x  0  }  }د}x   }x x  >(  0(  }x   }د}xx   }x   }X} x  }  }د}Xx  }@}X((  }x  } x  }   }د=     x   }0 }@(( (}@ x(( }` H~P } }    (  }~P }}     }~P ||     }~P ||     }~P ||        }~P ||    x    }~P ||   x}~P ||    p   }~P ||   (}~P ||    `   }~P |x|x   h}~P |h|h     X     }~P |X|X    X   }~P |H|H     P     }~P |8|8     H     }~P |(|(   @   }~P | |    8   }~P ||   0   }~P ||     (     }~P {{          }~P {{     0     }~P {{          }~P {{   (}~P {{     }~P {{     }~P {{     }~P ~~       {~P ~~       {~P {x{x 0(  }  Я~P {h{h  0  }    Я~P {`{`          }~P {P{P } ~P {@{@ } ~P {0{0 }( ~P { { } {x  0   4   }  3 x x4  x x4  x3 x3 x   Яx  @x  @x  @аx  @x   @{ xx {  {x(         {       z{ x { xx  }x z z 8  { pp      zЯ{ zz8 h p h z }4 3 0       `{ x }  J #} xx  x x  xx} pp      z}       zz x x x x x   x` x`  p xzx   0 Xx   0 pp  @ zx z x zxzxzpzx0(zxzxzh zx zxzxzpzx(zxzh zX    zxzpzxzxzh zx  x  zH4z@3z8 ( z( z4  zz((  43y3    x  y x py z(x xx> `4 `4  `4  y `4     `4  `4 `4 00043y4444y33333xx>3xx>3 xx>3 x  x>3 xx>3 xx>3xx>   `yxx xyyx x yy x (yp(  4 p3yX yȯyp x yHy@4 (  y0 (       4  3 y 3zH4z@3z8  (ypx yHy( y  zypx yHxp yyHx z x 4x3x43x43x xxpp  hXxxzxpp xЯxx  xx xpp p y0x xxxx@xp y  yxxx x x 4x`44  x3h3 xp3  Xxxxxx  xxx 0    h4   0 4    3 x 3x xx    xpx x (x( xx @x`@ x` x`x  xxx @XxP@ xP xP@@  x@xPpp  @  ЯxPx x@43 x(xPx     zx(@@x(xz x @    xx@xxxx@xx@wwxx@xxxx@hhxx@ x@PP Px@ x@  `44 3xxxp3 {  x@xwwx z wدwȰww yȰx w wȯwx     wx wذ x@ wh4`433@ wȯx wP wȯxwP x  `44 38343 (x x 4x 4 3 x4  wH3 w83w04 wH3w8 x x w  P 0  w @@ @w @@ @w x@ x  wwx   X  X x w  wxx xwxx  xxwxvxvxvxvxv x vyx 4 3x4x4 x4  x x4  x4  x x4  x3 x x x x xv x x xv x xX xv x3 x x x x x x x xv x xv x x x x x  x x xh x x x3 x x x@ xx3 x x x x xv x x xx x xv x x x3xxxxxvxxxxxx@xvxx0xx(xxx`xxxxvxxxxxxx@xvxx0xx(xx3xpxxxvxxxxxxxxHxxxvxHxxvxxx  vx  x  vpx x vx x vx  P x  x  Ȱx  xȯȰx  8ȯȰx  p vhدذx  xدذx  8دذx  x v`دذ x    دذ x  `4 4   3 3  vP x4  x4  x4 3 v@3 v83    а x  4   v( y  (     4  p3 h 3 x x   (v(pp xx43x xv z v(x x   8y0x  8  v vدx  x دux  x 8دx  ux   x 43xx4x3x   ux u u   Xux  xx     pux   u  pux   upx  Xux  u`x  `xXx  XxHx  HxPx  Px@x  @x8x     p@x`uuu x  ux  zu z u x   z zx  zu z u z((  hXzux zxuhuh x  uX   uPuhxu@uXx  u8  u0u@ x      u( u    u p u Яt x  43 h 4  w4 3 x  x4  xx4 xx4 xx4 xx43xtxx`xH3xxHx3xxt3xxHx3 x xH x` x3 xh   zXzа x t x4  u8  0 u0(  t      t  t p3 4 p3 0  tzа x  u0(  u8   t0x  x 0x ux B   u x hth4    3 4  8 3   8x   h h X8x   h h X8x  xаx ((  Xu8x 4p3 xЯyx tt h Xyx  ttty@y@ u8tXt8ptpXttppssp uty(y( sppsssp sp shx  sXsXx  P 0 wHsHx  0(zxzh zx zhs8x   zx zhs(x  B P ss( x s r  h   s( x(J( sru@|x 0 wH  rx u 0 wH rذx  0 wH rа x Ps( 0 wH  rx sH shrx s8 shrx sH rЯrx s8 rЯrx X43443sH>3>  rrpxr` B shrpx{    rЯrHxr8 B shrHx|    rЯr xr B shr x|    rЯqx q B rqx |rqаx q B rqаx |ru0 x x4344 4 p3 q33q z  u0x t~~  ~rq t~~~   sX  0   r s8  u@~   quP |x|x   |x   ruP ||     rHuP {{q 0zhruP {{  {   zh  (zh  ruP || |ruP }} }ruP ||    quP ||    quP |h|h qshuP |X|X qshuP |H|H |HruP {{  {ruP |(|( |(ruP | | qp shuP ||q` shuP {{     rpuP {{ {ruP {{ {shuP |8|8 |8shuP ||     r uP ||   |   ruP } } } ruP || |ruP ||    qЯuP {{ {ruP {P{P qPshuP {@{@   q@q0uP {0{0   q@q0q0q 0 rq0((q   rq0q  rq0q q rq0 qq0q rq0xx pq0pp pq0((p q0`` p0q0hh p(q0XX ppq0PP pq0HH p`q0@@ ppq088 pq000 pq0(( ppq0  ppq0 pq0 pq0 pq0 pq0px q0ph q0p` q0pX q0pP q0 pHq0 p@q0 p0~{@{@ J ~{0{0 J ~{ { J q@x 0 shqPp qP((p qPp qPp qPo qPo qPxxo qPppo pth@ ư (@(#)SunOS 5.4 generic July 1994as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3as: SC3.1 dev 09 May 1994 GCC: (GNU) 2.6.3ld: (SGU) SunOS/ELF (LK-1.4 (S/I)).interp.hash.dynsym.dynstr.rela.bss.rela.plt.text.init.fini.ctors.dtors.rodata.got.dynamic.plt.data.bss.comment.shstrtab      J.(.(< ).d.dd 300>49nn?oo EooLooSoo[u[00`44i n\\i(t77 y7";BinProlog3.45/cparser/wam.bp100644 764 764 431101 5764564225 15123 0ustar javierjavier$bin_cut$cut? ?truefail_B?truecwrite_ ?B? ?truecnl_B?truevar_ ?B? ?truenonvar_ ?B? ?trueinteger_ ?B? ?trueatomic_ ?B? ?trueis_compiled_ ?B? ?true+_??J1 ?true-_??J1 ?true*_??J1 ?truemod_??J1 ?true//_??J1 ?true/_??J1 ?truerandom_J1 ?trueget0_J1 ?trueput_?J0 ?trueless_??J 0 ?truegreater_??J 0 ?trueless_eq_??J 0 ?truegreater_eq_??J 0 ?truearith_eq_??J 0 ?truearith_dif_??J0 ?true<<_??J1 ?true>>_??J1 ?true/\_??J1 ?true\/_??J1 ?true#_??J1 ?true\_??J1 ?truecompare0_??J1 ?truearg_??J1 ?truesetarg_???J0 ?truechange_arg_???J0 ?truedef_???J0 ?truerm_??J0 ?trueset_???J0 ?trueval_??J1 ?truelval_??J1 ?truesymcat_??J1 ?truedcg_connect_J1 ?truelist2term_?J 1 ?trueterm2list_???J!1 ?trueself_info_J"1 ?trueadd_instr_????J#0 ?truelift_heap_??J$0 ?truedet_append0_??J%1 ?truecopy_term_??J&1 ?truebb_list0_??J'1 ?trueolder_file_??J(0 ?trueseeing_telling_?J)1 ?truesee_tell_??J*0 ?trueseen_told_?J+0 ?trueseeing_telling_at_?J,1 ?truesee_tell_at_??J-0 ?truestring_op_??J.1 ?trueop0_???J/0 ?trueterm_append_??J01 ?truefloat_fun2_???J11 ?truefloat_fun_??J21 ?trueinput_float_???J31 ?truewrite_float_?J40 ?truestrip_cont0_?J51 ?truedcg_def_?J60 ?truedcg_val_J71 ?truedcg_tell_?J80 ?truedcg_telling_J91 ?trueiso_open_stream_??J:1 ?trueiso_close_stream_??J;0 ?trueiso_write_term_???J<0 ?trueiso_read_term_??J=1 ?trueiso_put_byte_??J>0 ?trueiso_get_byte_?J?1 ?trueiso_peek_byte_?J@1 ?trueiso_eof_?JA0 ?trueiso_lseek_???JB1 ?truebb_put_??JC0 ?truebb_get_???JD1 ?truebb_op_??JE1 ?truesetref_??JF0 ?trueunix_argc_JG1 ?trueunix_argv_?JH1 ?trueunix_getenv_?JI1 ?trueunix_access_??JJ0 ?trueunix_cd_?JK0 ?trueunix_kill_??JL0 ?truequiet_JM1 ?truecreate_engine_???JN1 ?truedestroy_engine_?JO0 ?trueload_engine_???JP0 ?trueask_engine_?JQ1 ?truemultitask_engines_?JR0 ?truesuspend_engine_?JS0 ?truenew_builtin_??JT1 ?truehalt_?JU0 ?truetrue_?truecall_?trueabort_?truerestart_?truefindall_store_heap_?truefindall_load_heap_?truefunctor_?truename_?trueshell_?truestat0_ ?truelist_asm_ ?truebb_reset_ ?trueprofile_ ?trueif0_ ?true1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=default_prologbinprolog_with_cparserbinprolog_with_cparser ?truedefault_input _ saved??or4?4? $bin_cut? or4 ?4 ? $bin_cut??3 defcurrent_streamread?3 setcurrent_streamread?3defaliasuser_input?3setaliasuser_input? user_input readopendefault_output _ saved??or4?4? $bin_cut? or4 ?4 ? $bin_cut??3 defcurrent_streamwrite?3 setcurrent_streamwrite?3defaliasuser_output?3setaliasuser_output? user_output writeopeninit_io_ default_output? ?default_inputcurrent_input_current_streamreadJ1 ?truecurrent_output_current_streamwriteJ1 ?trueset_input_ saved??setcurrent_streamread?? ?aliasset_output_ saved??setcurrent_streamwrite?? ?aliasopen_ ? []openopen _ ? ?$stream???? iso_open_stream ???open_options??? ?  ? ?io_optionsopen_options[][] ?trueopen_options..??typetextopen_optionsopen_options..??typebinaryopen_optionsopen_options..??repositiontrueopen_optionsopen_options..??repositionfalseopen_optionsopen_options..??eof_actionerroropen_optionsopen_options..??eof_actioneof_codeopen_optionsopen_options..??eof_actionresetopen_optionsopen_options ..??alias? ? or4?4 ? $bin_cut? open_options???3defalias??3 setalias?? ?savedclose_ ? []closeclose_ $stream?>??>? iso_close_stream??? ?aliasflush_output_ flush_output?? ?current_outputflush_output_ true? ?aliasstream_property$stream$stream??=? ?file_name?truestream_property$stream$stream=??? ?mode?truestream_property$stream$stream=?read?input ?truestream_property$stream$stream=?write?output ?truestream_property$stream$stream=??alias? alias? ?memberstream_property$stream$stream?=? ?position??01JB1truestream_property_end_of_streamat $bin_cut??at_end_of_streamstream_property_end_of_streampast $bin_cut??at_end_of_streamstream_property_ ?end_of_streamnot?truestream_property $stream$stream=?? ?eof_action? member4??3eof_action? =?eof_code trueifstream_property$stream$stream=??reposition? reposition? ?memberstream_property $stream$stream=?? ?type? member4??3type? =?text trueifat_end_of_stream_ at_end_of_stream?? ?current_inputat_end_of_stream_ $stream?>? iso_eof?? ?aliasset_stream_position_ $stream?>? iso_lseek??0>?? ? ?aliasio_optionsreadreadr ?trueio_optionswritewritew ?trueio_optionsappendappenda ?trueget_char_ get_char??? ? ?current_inputget_char _ or4?4?$bin_cut??3,4?=?end_of_file3=?-13name?.?[] ? ?get_byteget_code_ get_code??? ? ?current_inputget_code_ $stream?>? iso_get_byte??? ? ?aliaspeek_char_ peek_char??? ? ?current_inputpeek_char _ or4?4??3,4?=?end_of_file3=?-13name?.?[] ? ?peek_bytepeek_code_ peek_code??? ? ?current_inputpeek_code_ $stream?>? iso_peek_byte??? ? ?aliasput_char_ put_char??? ? ?current_outputput_char_ .?[] put_byte??? ? ? ?nameput_code_ put_code??? ? ?current_outputput_code_ $stream?>? iso_put_byte??? ? ?aliasnl_ ? 10put_bytenl_ ? 10put_byteget_byte_ get_byte??? ? ?current_inputget_byte_ $stream?>? iso_get_byte??? ? ?aliaspeek_byte_ peek_byte??? ? ?current_inputpeek_byte_ $stream?>? iso_peek_byte??? ? ?aliasput_byte_ put_byte??? ? ?current_outputput_byte_ $stream?>? iso_put_byte??? ? ?aliasalias_alias?J1? ?truealias $stream$stream???? ?$stream????trueread_ read??? ? ?current_inputread_ ? []read_termread_term_ read_term???? ? ?current_inputread_term_ $stream?>? nonvar? read_options?000 ? ? ?0 ? iso_read_term?4???3options ? ? ? ? ? ?alias read_options [][] ? ? ?  ?  ?true read_options .. ?? variables ???1J0  ? read_options read_options .. ?? variable_names ???2J0  ? read_options read_options .. ?? singletons ???4J0  ? read_options read_options.. ? ? read_options ???????? ? ? error in read option  ?writewrite_term_ write_term???? ? ?current_outputwrite_ write_term??4??3.4?[]3numbervarstrue ? ?current_outputwrite_ ? .4?[]3numbervarstruewrite_termwriteq_ write_term??4??3.4?.4?[]3numbervarstrue3quotedtrue ? ?current_outputwriteq_ ? .4?.4?[]3numbervarstrue3quotedtruewrite_termwrite_canonical_ write_term??4??3.4?.4?[]3ignore_opstrue3quotedtrue ? ?current_outputwrite_canonical_ ? .4?.4?[]3ignore_opstrue3quotedtruewrite_termwrite_term _ $stream?>? nonvar? write_options?0 ? iso_write_term? ??? ? ?aliaswrite_options[][] ? ?truewrite_options ..??quoted?? compare0?true= \/?1? /\?-2? write_options???? ?  ?  ?ifwrite_options ..??ignore_ops?? compare0?true= \/?2? /\?-3? write_options???? ?  ?  ?ifwrite_options ..??numbervars?? compare0?true= \/?4? /\?-5? write_options???? ?  ?  ?ifwrite_options..?? write_options2???? Error in write options ?writeseeuseruser? user_inputseesee _ val$see?? ,4? ,4 ? def$see??3 saved ??3open?read ? $bin_cut? set_input?? ? ?ortelluseruser? user_outputtelltell _ val$tell?? ,4? ,4 ? def$tell??3 saved ??3open?write ? $bin_cut? set_output?? ? ?orseen_ $stream>?user_input>? $bin_cut?? ?current_inputseen_ close?=?4?rm$see?seeuser_input?3$stream>??>? ?current_inputtold_ $stream>?user_output>? $bin_cut?? ?current_inputtold_ close?=?4?rm$tell?telluser_output?3$stream>??>? ?current_outputseeing_ $stream>??>? ?current_inputtelling_ $stream>??>? ?current_outputfind_fileuseruseruser ?truefind_file _ $bin_cut?file_search_path?file_extension_list?see_a_file????$bin_cut?? ?atomfind_file librarylibrary? $bin_cut?file_library??see_a_file????$bin_cut?? ?atomfind_file_ ? bad file name ?user_errorsee_a_file _ open?read?[] close?? ?make_file_nameputbyte_put_codeprint_ write_term??[]? ? ?current_outputdisplay_ write_term??4??3.4?[]3ignore_opstrue ? ?current_outputportable_print_printportable_write_writeportable_writeq_writeqportable_display_displayswitch_vars[][][] ?trueswitch_vars..??=??.??=??switch_varsprolog_r_term_ read_term??4??3.4?[]3variable_names? ? ?current_inputprolog_read_ ? ?prolog_r_termttyin top_read_termtop_read_term??? .4?[]3variable_names? switch_vars??? user_input ?read_termttyinget0get0? ?? user_input ?get_codettyin_ seeusercall?seensee?? ?seeingttyout writeqwriteq?? $stream?>? iso_write_term?1?? user_output ?aliasttyout_ set_outputuser_outputcall?flush_outputset_output?? ?current_outputttyprin_ ? ? user_output ?writettyprint_ ? nluser_output? user_output ?writettywrite_ttyprinttywriteln_ttyprintttynl_ ? user_outputnlttyput_ put_code? ?ttyoutportray_clause_ fail? ?pp_clause0portray_clause_ ?truepp_clause0:-:-?? numbervars?0>?l_clauses?028?nlpp_clause0:-:-?? +?? portable_writeq?l_clauses?028$bin_cut?? 0 ?numbervarspp_clause0_ :-?true ?pp_clause0l_clauses ,,??? $bin_cut? l_clauses?1??? 1 ?l_clausesl_clausestruetrue2? .?[] ? ?.46[] nl?put_codel_clauses ;;??? l_magic4 ?02? l_magic_nl?.?3 ;?? fail ?  ?l_magicl_clauses ->->??? $bin_cut? l_clauses?5??? 5 ?l_clausesl_clauses _ portable_writeq?l_magic_nl?.? ? ?l_magicl_magic!!0 ??  :- fast_writel_magic!!1 ?? , fast_writel_magic_0? nltab??  :- fast_writel_magic_1? .?[] ? ?.44[] nltab??put_codel_magic_3 ?? ( fast_writel_magic_4 ?? ; fast_writel_magic_5? nltab??  ->fast_writel_magic_ ? fast_write:- fast_write?nltab??atoml_magic_nl22 ?? nl?fast_writel_magic_nl_ ?truel_magic ;;??? $bin_cut? l_magic?1??? 1 ?l_magicl_magic _?8J0?3J0 nl tab? l_magic2?)? 1 ? ?l_clausesl_magic222 ? ??fast_writel_magic2_ ?truepeval_io_ ?B?trueread_clause_readfast_write_writeread_with_singletons _ read_term??4? singletonnames ?? termvarlist ???3.4? .4 ?[]3 variable_names ?3singletons ? ? ?current_inputsingletonnames[][][] ?truesingletonnames..??=??.??singletonnamestermvarlist[][][] ?truetermvarlist..??=??.??var???termvarlistwarn_singletons ..?? ? ?J M0 ?1J 0 .?? fail? ? ?warn_singletons1warn_singletons_ ?truewarn_singletons1:-:-? ??truewarn_singletons1_ :-?>? seeing_at ? melt_varnames? ttyout4 ? $bin_cut??3 ,4 ? ,4 ? ,nl ,4 ? ,4 ?,4?,nlnl3fast_write:-...3 print?3 print=> 3 print ** warning singleton_variables, byte=> ?3 print? ? ?add_truemelt_varnames[][] ?truemelt_varnames..??var???melt_varnamesbu0failfail?0in_body ?truebu0cwritecwrite=?1in_body ?truebu0cnlcnl?2in_body ?truebu0varvar=?3in_body ?truebu0nonvarnonvar=?4in_body ?truebu0integerinteger=?5in_body ?truebu0atomicatomic=?6in_body ?truebu0is_compiledis_compiled=?7in_body ?truebu0++=?in_body ?arith01truebu0--=?in_body ?arith11truebu0**=?in_body ?arith21truebu0modmod=?in_body ?arith31truebu0////=?in_body ?arith41truebu0//=?in_body ?arith51truebu0randomrandom=?in_body ?arith61truebu0get0get0=?in_body ?arith71truebu0putput=?in_body ?arith80truebu0lessless=?in_body ?arith90truebu0greatergreater=?in_body ?arith100truebu0less_eqless_eq=?in_body ?arith110truebu0greater_eqgreater_eq=?in_body ?arith120truebu0arith_eqarith_eq=?in_body ?arith130truebu0arith_difarith_dif=?in_body ?arith140truebu0<<<<=?in_body ?arith151truebu0>>>>=?in_body ?arith161truebu0/\/\=?in_body ?arith171truebu0\/\/=?in_body ?arith181truebu0##=?in_body ?arith191truebu0\\=?in_body ?arith201truebu0compare0compare0=?in_body ?arith211truebu0argarg=?in_body ?arith221truebu0setargsetarg=?in_body ?arith230truebu0change_argchange_arg=?in_body ?arith240truebu0defdef=?in_body ?arith250truebu0rmrm=?in_body ?arith260truebu0setset=?in_body ?arith270truebu0valval=?in_body ?arith281truebu0lvallval=?in_body ?arith291truebu0symcatsymcat=?in_body ?arith301truebu0dcg_connectdcg_connect=?in_body ?arith311truebu0list2termlist2term=?in_body ?arith321truebu0term2listterm2list=?in_body ?arith331truebu0self_infoself_info=?in_body ?arith341truebu0add_instradd_instr=?in_body ?arith350truebu0lift_heaplift_heap=?in_body ?arith360truebu0det_append0det_append0=?in_body ?arith371truebu0copy_termcopy_term=?in_body ?arith381truebu0bb_list0bb_list0=?in_body ?arith391truebu0older_fileolder_file=?in_body ?arith400truebu0seeing_tellingseeing_telling=?in_body ?arith411truebu0see_tellsee_tell=?in_body ?arith420truebu0seen_toldseen_told=?in_body ?arith430truebu0seeing_telling_atseeing_telling_at=?in_body ?arith441truebu0see_tell_atsee_tell_at=?in_body ?arith450truebu0string_opstring_op=?in_body ?arith461truebu0op0op0=?in_body ?arith470truebu0term_appendterm_append=?in_body ?arith481truebu0float_fun2float_fun2=?in_body ?arith491truebu0float_funfloat_fun=?in_body ?arith501truebu0input_floatinput_float=?in_body ?arith511truebu0write_floatwrite_float=?in_body ?arith520truebu0strip_cont0strip_cont0=?in_body ?arith531truebu0dcg_defdcg_def=?in_body ?arith540truebu0dcg_valdcg_val=?in_body ?arith551truebu0dcg_telldcg_tell=?in_body ?arith560truebu0dcg_tellingdcg_telling=?in_body ?arith571truebu0iso_open_streamiso_open_stream=?in_body ?arith581truebu0iso_close_streamiso_close_stream=?in_body ?arith590truebu0iso_write_termiso_write_term=?in_body ?arith600truebu0iso_read_termiso_read_term=?in_body ?arith611truebu0iso_put_byteiso_put_byte=?in_body ?arith620truebu0iso_get_byteiso_get_byte=?in_body ?arith631truebu0iso_peek_byteiso_peek_byte=?in_body ?arith641truebu0iso_eofiso_eof=?in_body ?arith650truebu0iso_lseekiso_lseek=?in_body ?arith661truebu0bb_putbb_put=?in_body ?arith670truebu0bb_getbb_get=?in_body ?arith681truebu0bb_opbb_op=?in_body ?arith691truebu0setrefsetref=?in_body ?arith700truebu0unix_argcunix_argc=?in_body ?arith711truebu0unix_argvunix_argv=?in_body ?arith721truebu0unix_getenvunix_getenv=?in_body ?arith731truebu0unix_accessunix_access=?in_body ?arith740truebu0unix_cdunix_cd=?in_body ?arith750truebu0unix_killunix_kill=?in_body ?arith760truebu0quietquiet=?in_body ?arith771truebu0create_enginecreate_engine=?in_body ?arith781truebu0destroy_enginedestroy_engine=?in_body ?arith790truebu0load_engineload_engine=?in_body ?arith800truebu0ask_engineask_engine=?in_body ?arith811truebu0multitask_enginesmultitask_engines=?in_body ?arith820truebu0suspend_enginesuspend_engine=?in_body ?arith830truebu0new_builtinnew_builtin=?in_body ?arith841truebu0halthalt=?in_body ?arith850truebu0truetrue?0in_head ?truebu0callcall=?1in_head ?truebu0abortabort?2in_head ?truebu0restartrestart?3in_head ?truebu0findall_store_heapfindall_store_heap=?4in_head ?truebu0findall_load_heapfindall_load_heap=?5in_head ?truebu0functorfunctor=?6in_head ?truebu0namename=?7in_head ?truebu0shellshell=?8in_head ?truebu0stat0stat0=?9in_head ?truebu0list_asmlist_asm=?10in_head ?truebu0bb_resetbb_reset?11in_head ?truebu0profileprofile?12in_head ?truebu0if0if0=?13in_head ?truebu_ctrn_inlinen_inline66 ?truebu_ctrn_arithn_arith74 ?truebu_ctrn_builtinn_builtin160 ?truebu_ctrn_nopn_nop174 ?truebu1!! ?truebu1..=? ?truebu1compilecompile? ?truebu1includeinclude? ?truebu1oror=? ?truebu1ifif=? ?truebu1strip_contstrip_cont=? ?truebu1termcattermcat=? ?truebu1add_contadd_cont=? ?truebu1asmasm ?truebu1asmasm? ?truebu1=..=..=? ?truebu1::-::-=? ?truebu1statisticsstatistics ?truebu1interactiveinteractive? ?truebu1metacallmetacall? ?truebu1metatruemetatrue? ?truebu1expand_termexpand_term=? ?truebu1===? ?truebu1->->=? ?truebu1;;=? ?truebu1,,=? ?truebu1repeatrepeat ?truebu1\+\+? ?truebu1\=\==? ?truebu1findall_workhorsefindall_workhorse=? ?truebu1findallfindall=? ?truebu1findallfindall=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_conjfindall_conj=? ?truebu1findall_disjfindall_disj=? ?truebu1findall_disjfindall_disj=? ?truebu1allall=? ?truebu1whilewhile=? ?truebu1skip_untilskip_until=? ?truebu1skip_whenskip_when=? ?truebu1find_whilefind_while=? ?truebu1nth_answernth_answer=? ?truebu1take_at_mosttake_at_most=? ?truebu1drop_at_leastdrop_at_least=? ?truebu1has_fuelhas_fuel? ?truebu1find_at_mostfind_at_most=? ?truebu1all_but_at_leastall_but_at_least=? ?truebu1forfor=? ?truebu1argnargn=? ?truebu1appendappend=? ?truebu1membermember=? ?truebu1det_appenddet_append=? ?truebu1..=? ?truebu1++++=? ?truebu1lengthlength=? ?truebu1make_cmdmake_cmd=? ?truebu1numbervarsnumbervars=? ?truebu1gc_callgc_call? ?truebu1groundground? ?truebu1atomatom? ?truebu1floatfloat? ?truebu1numbernumber? ?truebu1compoundcompound? ?truebu1appendNappendN=? ?truebu1append_conjappend_conj=? ?truebu1append_disjappend_disj=? ?truebu1tabtab? ?truebu1getget? ?truebu1isis=? ?truebu1exprexpr=? ?truebu1comparecompare=? ?truebu1=====? ?truebu1\==\===? ?truebu1@<@<=? ?truebu1@>@>=? ?truebu1@=<@=<=? ?truebu1@>=@>==? ?truebu1<<=? ?truebu1>>=? ?truebu1=<=<=? ?truebu1>=>==? ?truebu1=:==:==? ?truebu1=\==\==? ?truebu1++=? ?truebu1--=? ?truebu1\\=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm=? ?truebu1bb_letbb_let=? ?truebu1bb_change_argbb_change_arg=? ?truebu1letlet=? ?truebu1bb_defbb_def=? ?truebu1bb_setbb_set=? ?truebu1bb_valbb_val=? ?truebu1bb_rmbb_rm? ?truebu1bb_letbb_let=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1dcg_phrasedcg_phrase=? ?truebu1:=::=:=? ?truebu1##? ?truebu1powpow=? ?truebu1loglog=? ?truebu1sqrtsqrt=? ?truebu1expexp=? ?truebu1loglog=? ?truebu1sinsin=? ?truebu1coscos=? ?truebu1tantan=? ?truebu1asinasin=? ?truebu1atanatan=? ?truebu1acosacos=? ?truebu1integerinteger=? ?truebu1floatfloat=? ?truebu1statisticsstatistics=? ?truebu1predicate_propertypredicate_property=? ?truebu1current_predicatecurrent_predicate=? ?truebu1current_predicatecurrent_predicate? ?truebu1ctimectime? ?truebu1helphelp? ?truebu1aproposapropos? ?truebu1aproposapropos=? ?truebu1unixunix? ?truebu1systemsystem? ?truebu1meta_interpretermeta_interpreter? ?truebu1tracetrace? ?truebu1dynamicdynamic? ?truebu1assertaasserta? ?truebu1assertzassertz? ?truebu1assertassert? ?truebu1retractretract? ?truebu1retractallretractall? ?truebu1instanceinstance=? ?truebu1eraseerase? ?truebu1clauseclause=? ?truebu1abolishabolish=? ?truebu1debugdebug? ?truebu1consultconsult? ?truebu1reconsultreconsult? ?truebu1listinglisting ?truebu1listinglisting? ?truebu1listinglisting=? ?truebu1=>=>=? ?truebu1assumeiassumei? ?truebu1assumelassumel? ?truebu1assumedassumed? ?truebu1assumed_clauseassumed_clause=? ?truebu1assumed_clauseassumed_clause=? ?truebu1-:-:=? ?truebu1is_assumedis_assumed? ?truebu1is_dynamicis_dynamic? ?truebu1bbbb ?truebu1bbbb? ?truebu1bb_listbb_list? ?truebu1bb_elementbb_element=? ?truebu1sortsort=? ?truebu1keysortkeysort=? ?truebu1bagofbagof=? ?truebu1setofsetof=? ?truebu1^^=? ?truebu1free_variablesfree_variables=? ?truebu1notnot? ?truebu1term_charsterm_chars=? ?truebu1vars_ofvars_of=? ?truebu1user_erroruser_error=? ?truebu1errmeserrmes=? ?truebu1quietmesquietmes? ?truebu1mainmain ?truebu1mainmain? ?truebu1topleveltoplevel ?truebu1is_prologis_prolog? ?truebu1get_codeget_code? ?truebu1put_codeput_code? ?truebu1nlnl ?truebu1readread? ?truebu1read_termread_term=? ?truebu1top_read_termtop_read_term=? ?truebu1warn_singletonswarn_singletons=? ?truebu1read_with_singletonsread_with_singletons=? ?truebu1read_clauseread_clause? ?truebu1read_tokensread_tokens=? ?truebu1writewrite? ?truebu1printprint? ?truebu1writeqwriteq? ?truebu1portable_displayportable_display? ?truebu1displaydisplay? ?truebu1portrayportray? ?truebu1portray_clauseportray_clause? ?truebu1pp_clausepp_clause? ?truebu1pp_termpp_term? ?truebu1fast_writefast_write? ?truebu1ttyinttyin? ?truebu1ttyoutttyout? ?truebu1ttyputttyput? ?truebu1ttynlttynl ?truebu1ttyprinttyprin? ?truebu1ttyprintttyprint? ?truebu1ttycwritettycwrite? ?truebu1ttycwritelnttycwriteln? ?truebu1seesee? ?truebu1seeingseeing? ?truebu1seenseen ?truebu1telltell? ?truebu1tellingtelling? ?truebu1toldtold ?truebu1see_atsee_at? ?truebu1seeing_atseeing_at? ?truebu1tell_attell_at? ?truebu1telling_attelling_at? ?truebu1file_search_pathfile_search_path? ?truebu1file_extension_listfile_extension_list? ?truebu1file_libraryfile_library=? ?truebu1make_file_namemake_file_name=? ?truebu1find_filefind_file=? ?truebu1exists_fileexists_file? ?truebu1see_or_failsee_or_fail=? ?truebu1flushflush ?truebu1sreadsread=? ?truebu1swriteswrite=? ?truebu1bu0bu0=? ?truebu1bu1bu1? ?truebu1current_opcurrent_op=? ?truebu1opop=? ?truebu1is_builtinis_builtin? ?truebu1editedit=? ?truebu1my_editmy_edit? ?truebu1editedit ?truebu1eded ?truebu1textedittextedit ?truebu1emacsemacs ?truebu1picopico ?truebu1notepadnotepad ?truebu1vivi ?truebu1coco ?truebu1current_user_filecurrent_user_file? ?truebu1lsls ?truebu1dirdir ?truebu1make_applmake_appl? ?truebu1make_executable_unix_applmake_executable_unix_appl=? ?truebu1makemake ?truebu1makemake? ?truebu1makemake=? ?truebu1makemake=? ?truebu1makemake=? ?truebu1make0make0=? ?truebu1cmakecmake ?truebu1cmakecmake? ?truebu1cmakecmake=? ?truebu1kmakekmake ?truebu1kcmakekcmake ?truebu1tmaketmake ?truebu1tmaketmake? ?truebu1tmaketmake=? ?truebu1ctracectrace ?truebu1bootboot ?truebu1add_trueadd_true=? ?truebu1gc_readgc_read? ?truebu1gc_read_clausegc_read_clause? ?truebu1do_bodydo_body? ?truebu1tr_bodytr_body=? ?truebu1ith_clauseith_clause=? ?truebu1char_in_cmdchar_in_cmd=? ?truebu1show_code0show_code0=? ?truebu1bu_ctrbu_ctr=? ?truebu1patch_itpatch_it=? ?truebu1lwritelwrite? ?truebu1module_callmodule_call=? ?truebu1modulemodule? ?truebu1modulemodule=? ?truebu1is_moduleis_module? ?truebu1modulesmodules? ?truebu1current_modulecurrent_module? ?truebu1module_predicatemodule_predicate=? ?truebu1module_namemodule_name=? ?truebu1publicpublic? ?truebu1is_publicis_public? ?truebu1gensymgensym=? ?truebu1init_gensyminit_gensym? ?truebu1spy_goalspy_goal? ?truebu1spyspy? ?truebu1spyingspying? ?truebu1nospynospy? ?truebu1otherwiseotherwise ?truebu1falsefalse ?truebu1copy_termcopy_term=? ?truebu1phrasephrase=? ?truebu1phrasephrase=? ?truebu1nth_membernth_member=? ?truebu1member_imember_i=? ?truebu1savedsaved=? ?truebu1stat_dictstat_dict=? ?truebu1set_c_thresholdset_c_threshold? ?truebu1set_c_thresholdset_c_threshold=? ?truebu1set_c_traceset_c_trace? ?truebu1CC=? ?truebu1halthalt ?truebu1::=? ?truestat_dictruntimeruntime0 ?truestat_dictglobal_stackglobal_stack1 ?truestat_dictlocal_stacklocal_stack2 ?truestat_dicttrailtrail3 ?truestat_dictcodecode4 ?truestat_dictstringsstrings5 ?truestat_dictsymbolssymbols6 ?truestat_dicthtablehtable7 ?truestat_dictbboardbboard8 ?trueuser_error_ ? ? ? basic ? ?error_messageerrmes_ ? ? ? pretty ? ?error_messageerror_message_JM0?5J 0 telluserportray_error???$bin_cut?tell?fail? ?tellingquietmes_JM0?4J 0?ttyprintquietmes_ ?trueportray_errorbasicbasic ? >>> B? ?B? : B? ?B?nlportray_errorprettypretty write?write: nlportray_clause?? *** ?writemember_.?? ?truemember_.??membernth_member_ ? ? 1 ?member_imember_i_ ?.?? ?truemember_i_.???1J0member_i:_module_callmodule_call_ ? $bin_cut?call??is_publicmodule_call_ call?? ?module_predicatemodule_predicate _ .?? module_name??? =..?4 ??3 .?? ? ?  ?=..module_name _ ?B? ?B?? .?[] ? ?.58[] name?? det_append?4 ? ? name? ??3 .?? ?namemodule_name_ ? .?.?[] should_be_nonvar ?user_errormodule_ ? bb_letmodule_name??? current module_namebb_letmodule_ member??public0?fail? ?modulemodule_ ?truecurrent_module_ $bin_cut?=??? current module_namebb_valcurrent_moduleuseruser ?trueis_module_ ? ? ?B?? module_name ? ?bb_valis_module_ bb_element4???3=4?>?3+4?/?03/module_name0 ? ?bb_listmodules_ ? ? is_module?findallhide_atom_ $bin_cut?? ?hide_atom0hide_atom_ ? ?truehide_atom0_ $bin_cut?fail? usercurrent_modulehide_atom0_ $bin_cut?fail?is_publichide_atom0_ module_predicate???? ? ?current_modulepublic0 //?? current_module?bb_defpublic??$bin_cut?? ?functorpublic0_ ? public? bad or repeated declarationerrmespublic,,??? public?? ?publicpublic_public0is_public_ ? ?is_publicis_public_ ? $bin_cut?=??? public ? ?bb_valis_public_ ?is_builtininit_gensym_ ? ? gensym ? 0bb_letgensym_ symcat???? ? ?gensym_nogensym_no_gensym?J0??1J1gensym??J0 ?truegensym_no_ ?1gensym??J0 ?truecurrent_op_ ? ? ?B?? ?get_opcurrent_op _ if4?4?4 ??3valopmark??3get_op???3 ,4 ?fail3 $bin_cut? ? 0 10000 ?forop_???J/0 ?trueget_op_ get_op0????? ? ? ?op_typeget_op0_??J1??J1?0J 0 ?trueop_typexfyxfyinfixop ?trueop_typexfxxfxinfixop ?trueop_typeyfxyfxinfixop ?trueop_typefxfxprefixop ?trueop_typefyfyprefixop ?trueop_typexfxfpostfixop ?trueop_typeyfyfpostfixop ?trueis_dynamic_?$firstJ0 ?trueis_assumed_$assumed?J0 ?B? ?truespy_goal_tracespying_ yes ?spying?J1 ?truespy //?? \+4?$bin_cut?bb_letspying?yes?3is_builtin? ?functorspy_ ? ? unable_to_spy_on ?user_errornospy//??? bb_rmspying?? ?functoris_builtin_nonvar_ bu1? $bin_cut?? ? ?metacallis_builtin_nonvar_ cont>? bu?>?? ?termcatis_builtin_var_ bu1? ?metacallis_builtin_var_ strip_cont??>?? ? ? ?buis_builtin_ ?B??is_builtin_nonvaris_builtin_is_builtin_varinteractive_ ? ?B?? =?yes =?no is_interactiveifinteractive_ ?B?interactive0is_interactive_ ? current_op1199fx?-\+interactive0yesyes ? 1200 fx ?-opinteractive0nono ? 1199 fx ?-opexpand_term_portable_expand_termstd_expand_term_portable_expand_termstrip_cont_ -???J51 ?truemetatrue_ metacall??strip_contmetacall_ ? meta_interpreter? call_ifdef?user_errorno meta_interpreter for undefined goal? ?call_ifdefotherwise_truefalse_B?truecall_ifdef_ ? ?B??callcall_ifdef_ ? ?call=_ ? ?true->_ $bin_cut?call?? ?call;->->?? ? ?? ? ?if;_ ?call;_ ? ?callor_ ?callor_ ? ?callif_ $bin_cut?call?? ?callif_ ? ?call,_ call?? ?call\+_ $bin_cut?fail? ?call\+_ ?true\=_ ? ??B?true\=_ ?truehalt_0JU0truerepeat_truerepeat_repeatfindall_workhorse _??J$0 findall_store_heap?? ? ?callfindall_workhorse_ ? ?findall_load_heapfindall_ ? .?? . 0findall_workhorsefindall_ ? []findallfindall_conj_ ? truefindall_conjfindall_conj_ ? ,?? , 0findall_workhorsefindall_disj_ ? failfindall_disjfindall_disj_ ? ;?? ; 0findall_workhorsewhile_ if4?true4??3call?3,4?fail3$bin_cut? ? ?callskip_until_ if4?fail4??3call?3$bin_cut? ? ?callskip_when_ if4?failtrue?3call? ? ?callnth_answer_?1J0 ? ?s? has_fuel?skip_untiltake_at_most_ ? ?s? has_fuel?whiledrop_at_least_ ? ?s? has_fuel?skip_whenhas_fuel_1?J0?0J 0?1J01??J0 ?truefind_while_ while?? ? ? ? ?findallfind_at_most_ take_at_most?? ? ? ? ?findallall_but_at_least_ drop_at_least?? ? ? ? ?findallall _ findall4?4? ? share_vars ? ???3-? ?3call?  ? ?are_sharedare_shared _vars?? free_variables??[]?? [] ?free_variablesshare_vars[][][] ?trueshare_vars..??-?? ?.?? ?share_varsgc_read_ ? read? .?[] ?findallgc_read_clause_ ? read_clause? .?[] ?findallgc_call_ call? member??? ?findallfor_ ???J 0 ?truefor_??J 0?1J0forargn_ ?B????J1 ?trueargn _ for?1?arg???? ? ? ? ?functornumbervars$VAR$VAR? ? ???1J1truenumbervars_ ?B?? ? ? ?truenumbervars..??? numbervars???? ? ?numbervarsnumbervars_ numbervars0????? ? ? ?functornumbervars_ ? ?? ? ?truenumbervars _?1J0??J0 numbervars?????? ?  ?numbervarsground_ greater?0$bin_cut?fail? 0numbervarsground_ ?truecopy_term_0?J&1 ?truesave_term_1?J&1 ?trueflush_2J+0truesee_or_fail_0?J*0 ?trueexists_file_ seen? ?see_or_failsread_0?J.1 ?trueswrite_1?J.1 ?truesystem[][] ??truesystem..??? .?? shell?? ?namesystem_ ?B?shell._[] ?compileinclude_compilecompile_ compile_mem?abort? ?find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[] .46.46.47.115.114.99[] getenv_path4???3.112.114.111.103.115[] ?getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[] ?truefile_library..?[].?[].46?.112?.108[] .46.46.47.108.105.98.114.97.114.121[] ?getenv_pathgetenv_path _ ? ?.47[] unix_getenvBP_PATH? ,4 ? det_append ?? ?3 name? ? = ?[] det_append???det_append ???? ?  ?  ?ifmake_file_name _ ? member ?? name? ? det_append ? ? ? det_append? ? ? name? ?? ? ?memberstatistics_.??.?[] stat0???? ?stat_dictstatistics_ cwrite?cwrite=cwrite?nlfail? ?statisticsstatistics_trueatom_ ?B??B? ?trueatom_ ?B? ?truefloat_ ?B? ? ?$float=? ?truenumber_ ?B?? ?truenumber_floatcompound_ ?B? atomic? ?\+=.._ ?B???J 1 ?true=.._?.[]J!1 ?trueterm2list_?.[]J!1 ?trueterm2dlist_?.?J!1 ?truedet_append_ ->????J%1 ?truedet_append_ -????J%1 ?trueappendN_ ? []appendNappendN[][] ? ?trueappendN ..?? ->???2?J%1appendNappend_body_ ? ?append_bodyappend_body _ det_append0??4 ? if4 ?4 ?4 ??3 compare0 ??=3 =??3 =..?.? . ? .?[]3 - ?? ? 2 ?functorappend_conj _ ? ,?? ,?? ?  ? trueappend_bodyappend_disj _ ? ;?? ;?? ?  ? failappend_body._.?? ?true++_ -[]???J%1 ?trueappend_ -???2?J%1 ?general_appendgeneral_append[][] ? ?truegeneral_append..??.??general_appendlength_ ? ? ?B?? 0 ?get_lengthlength_ ? ? 0 ?make_lengthget_length[][] ? ?trueget_length..???1J0get_lengthmake_length[][] ? ??truemake_length..????J 0?1J0make_lengthtab_ integer?$bin_cut?tab0?? ?exprtab_ ? ? in tab/1: should evaluate to an integer ?user_errortab0_ ? put_code32fail? ? 1fortab0_ ?trueget _ get_code?or4?4?$bin_cut?=???3greater?323less?0 ?repeatis_ $bin_cut?=??? ? ? ?expris_ is?? error_in_is ?errmesexpr_ ?B?? ? ? ?trueexpr_ $bin_cut?=??? ?floatexpr_ ? ?B?? variable_in_is ?user_errorexpr _ $bin_cut?arg1??arg2??expr??expr??=..?4 ? call?$bin_cut??3 . ?.?.?.?[]  ? 2functorexpr _ arg1??expr??=..?4? call?$bin_cut??3.?.?.?[] ? 1functorcompare_??J1 ?true+_ ? ?true-_0?J1 ?true\_0?J1 ?true==_ = ???J1 ?true\==_??J0 ?$noteq@<_ < ???J1 ?true@>_ > ???J1 ?true@=<_??J0 ?$lesseq@>=_??J0 ?$gteq<_ expr??less??? ?expr>_ expr??greater??? ?expr=<_ expr??less_eq??? ?expr>=_ expr??greater_eq??? ?expr=:=_ expr??arith_eq??? ?expr=\=_ expr??arith_dif??? ?expr$lesseq<< ?true$lesseq== ?true$gteq>> ?true$gteq== ?true$noteq<< ?true$noteq>> ?truebb_def_ def???? ? ?savedbb_set_ set???? ? ?savedbb_val_??J0 ? ?copy_termbb_rm_??J0 ?truebb_change_arg _ let???change_arg???? ? ? ?savedbb_let_??J0?bb_setbb_let_bb_defbb_def_ ? ? ? ? ? ?bb_defbb_set_ ? ? ? ? ? ?bb_setbb_val_ ? ? ? ? ? ?bb_valbb_rm_ ? ? ? ?bb_rmbb_let_ ? ? ? ? ? ?bb_letbb_default_val_ ? $bin_cut??bb_valbb_default_val_ ? ?truesaved_ $bin_cut?=??? ?save_termsaved_ save_term??$bin_cut?=??? ?bb_gcsaved_ ? /saved2bb_failsaved_ abort?restartlet_???J0? ?truelet_???J0 ?truedef_???J0 ?trueset_???J0 ?trueval_??J1 ?truelet_ ? ? ? ? ? ?letrm_??J0 ?true#_J1 ?truedcg_phrase_ ? ? ? 1 ? ?dcg_phrasedcg_phrase _J90?J80?J60 dcg_val[]dcg_tell?? ? ?call:=:##?? ????J1true:=:_??J1 ?truebb_gc_31J'0 bb_resetbb_put_back?? ?copy_termbb_put_back[][] ?truebb_put_back ..??.??.??.??.? ? functor ???bb_put_1? ??bb_put_back ?? ?functorbb_put_1_ set???$bin_cut?=??? ? ?save_termbb_put_1_ +?? ? ?bb_failbb_fail _ .>?.?[] user_error4?4??3blackboard overflow, left only?3culprit? bboard ?statisticstry_float _.??.??integer?box??atom..??atom?? name ??input_float? ????try_float_exptry_float_.??integer?box?? ?truetry_float_exp..??atome $bin_cut?? ?try_float_exp1try_float_exp..??atom? ? .?[] ? ?.101[] .?? name??integer?$bin_cut?? ?nametry_float_exp_ ?0 ?truetry_float_exp1 ..??.??integer?box??atom- ? ??0?J1truetry_float_exp1 ..??.??integer?box??atom+ ? ? ?truefloat_minus_ $float000??J1 ?truepow_pow??J11 ?truelog_log??J11 ?truesqrt_pow? $float02679111680?J11 ?trueexp_exp?J21 ?truelog_log?J21 ?truesin_sin?J21 ?truecos_cos?J21 ?truetan_tan?J21 ?trueatan_T?J21 ?trueasin_S?J21 ?trueacos_C?J21 ?trueinteger_integer?J21 ?truefloat_ $float000??J1 ?truectime_ ? .?.>?[] runtimestatisticsis_predicate_ ?B?? ?trueis_predicate_ $bin_cut?? ?is_dynamicis_predicate_is_assumedpredicate_property_ ?B??predicate_property0predicate_property _ functor???predicate_property0??? ? ? ?generate_a_predicatepredicate_property0_ $bin_cut?or4?4??3=?dynamic3=?interpreted ?is_dynamicpredicate_property0_ $bin_cut?or4?4??3=?assumed3=?interpreted ?is_assumedpredicate_property0_built_in $bin_cut??is_builtinpredicate_property0_compiled ?B? ?truecurrent_predicate_ ?B?? functor??>?? ? ?is_predicatecurrent_predicate_ functor???? ?generate_a_predicatecurrent_predicate//?? ?B? ?B?? is_predicate?$bin_cut?? ?functorcurrent_predicate//?? ? ?generate_a_predicatepredicate_key0//$assumed0 ? ? ?B?truepredicate_key0_ ? ?/$first0truepredicate_key0 //predmark0predmark ?/??/???0J 0?1J1truegenerate_a_predicate _00J'0 =4??3+? ? predicate_key0? ??4??3/?? ? ?  ?bb_elementhelp_aproposapropos _ apropos?? sort??member??write?nlfail? ?findallapropos_ ?trueapropos _-??/?? predicate_property ??functor ???name??near_match??? ?namenear_match_ ? ??truenear_match_ ? $bin_cut?? ? ?append3near_match _ ? append3?4??? $bin_cut??3.>?? ?append3append3_ append???? ? ?appendunix_cd_HOMEJI0?JK0trueunix_argv _ ? ?JG0?1J0 ,4?unix_argv??3for?1?findallunixargcargc? ?JG1trueunixargvargv?unix_argvunixgetenvgetenv?? ? unix_getenv?? errmesno such environment variable? trueifunixaccessaccess?? ???JJ0trueunixcdcd? ??JK0trueunixcdcd ?unix_cdunixkillkill?? ???JL0truetry_dcg_expansion_ -->?? $bin_cut?? ? ? ?dcg_ruletry_dcg_expansion_ ? ? dcg expansion error-> ?errmesdcg_rule -->-->?? dcg_body???? dcg_conj ??? =?4 ??3 :-??  ?dcg_headdcg_head @@@@??true ?@@? ?? dcg_body? ????  ?dcg_bodydcg_head_true ? ? ?dcg_goaldcg_head ,,??? dcg_body????? ? ?  ?dcg_goaldcg_head_true ? ? ?dcg_goaldcg_goal_? +???J01 ?truedcg_body_ ?B?? ? ?phrase??? ?truedcg_body ,,??? dcg_body?? ?? dcg_conj ????  ?  ? ?dcg_bodydcg_body ->->??->??? dcg_body????? ?  ?dcg_bodydcg_body ;;??;??? dcg_disj?????  ?dcg_disjdcg_body{}{}? ? ? ??truedcg_body!!! ? ??truedcg_body[][]true ? ??truedcg_body ..??? dcg_body?? ?? dcg_conj ????  ?  ? ?dcg_termdcg_body_dcg_goaldcg_term_C??? ?truedcg_disj _ dcg_disj0?????? ? ?dcg_bodydcg_disj0 _ = ???J1? =?? ? ? ? ?dcg_conjdcg_disj0_ ? ? ?truedcg_conj_true ? ??truedcg_conj_dcg_CONJdcg_CONJtruetrue ? ??truedcg_CONJ,,??,???dcg_CONJdcg_CONJ_,?? ?trueC..?? ? ? ?truephrase_ ? []phrasephrase _ =??=?? call?? ? ?dcg_bodyportable_expand_term-->-->?? ? ?? ? ?try_dcg_expansionportable_expand_term-->>-->>??? ? ?try_edcg_expansion??? errmesexpected_to_expand?call_ifdefportable_expand_term_ ? ?truemain_binpro_startbinpro_start_ exec_run_time_commandscall_ifdefmaintoplevel=?$end? init_io truecall_ifdeftoplevel_ topstep?- $bin_cut?? ?repeattopstep_ flushttyin4?topinterp???3top_read_term?? ?ttyprintopinterp_ = ?end_of_file?J1? ?truetopinterp_ ? ? fail? ? ?report_answerstopcall_ nothing? ?metacallsavetop_topgoalJ1 ?truenothing_truereport_answers[][] ? $bin_cut?ttyprintyes?topcallreport_answers..?? ? report_one_var?report_top_vars?another_sol?if4?4?fail?3=?no3,4?ttyprintyes3$bin_cut?topcallreport_answers_ ? nottyprintreport_top_vars_ ? ttyprint,report_one_var?fail? ?memberreport_top_vars_ ?truereport_one_var==?? ttyprin=ttyout4??3writeq? ?ttyprinanother_sol_ $bin_cut?ttyin4?user_action??ttynl?3get_code? ?is_interactiveanother_solyesyes ttynl? ; ?ttyprintuser_action1010no ??trueuser_action5959yes ?? get_code10ttyinuser_action _ ttyin4?ttyin4?user_action???3get_code?3get_code10  ; for more, otherwise ?ttyprinmeta_interpreter_do_bodydo_body_ ? ? ?B?? unbound_goal ?user_errordo_body _ or4?4??3,4?,4? do_body?3$bin_cut?3=?yes3=?nodo_bodydo_compiledcallcall?? ?B?do_bodydo_compiled\+\+? $bin_cut?fail? ?do_bodydo_compiled\+\+? ??truedo_compiledbagofbagof??? ?? do_body?bagofdo_compiledsetofsetof??? ?? do_body?setofdo_compiledfindallfindall??? ?? do_body?findalldo_compiled_calldo_goal_ $bin_cut?spy_goal?? ?spyingdo_goal _ $bin_cut?assumed_clause??do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_assumeddo_goal _ $bin_cut?clause??do_body???or4?4??3,4? ,4 ? do_body?3 $bin_cut?3=?yes3=?no ?is_dynamicdo_goal_ ?B??do_compileddo_goal_ $bin_cut?do_apply??do_goal?? call ?functordo_goal_do_undefdo_undef_ errmes4?4??3=undefined_predicate/??3=culprit?functordo_apply _ .>?.?? =..?? det_append???=..??? ? ?=..do_body ,,?? ? ? ?? ? ?  ?do_conjdo_body ;;?? ? ? ?? ? ?  ?do_disjdo_body!!trueyes ?truedo_body_trueno ?do_goaldo_conj!! ?yes ??truedo_conj_ do_body???? ?do_bodydo_disj ->->?? ? ? ? ?? ?  ?  ?  ?do_if_then_elsedo_disj_do_disj0do_if_then_else _ $bin_cut? do_body???? ?do_bodydo_if_then_else_ ? ? ? ?do_bodydo_disj0_ ? ? ?do_bodydo_disj0_ ? ? ? ?do_bodytrace_ ? 0tr_bodytr_body_ ? ?B?? unbound_goal ?user_errortr_body _ or4?4??3,4? ,4 ? ,4 ? ,4 ? ,nl tr_body??3 writeCUT3 tab?3 $bin_cut?3=?yes3=?notr_bodytr_body ,,?? ? ? ? ?? ?  ?  ?  ?tr_bodytr_body!!trueyes ??truetr_body ;;?? ? ? ? ?? ?  ?  ?  ?tr_disj1tr_bodytruetruetrueno ??truetr_body_trueno ?tr_goaltr_disj1->->?? ? ? ? ? ?? ?  ?  ?  ?  ?tr_if1tr_disj1_ ? ? ? ?tr_bodytr_disj1_ ? ? ? ? ?tr_bodytr_if1 _ do_body? tr_body???? tr_body????  ?  ?  ? ?iftr_body!! ?yes ??truetr_body ,,??? ,??  ?tr_bodytr_body;;?? ? ? ? ? ?? ?  ?  ?  ?  ?tr_disj2tr_bodytruetrue ? ? ? ? ??tr_bodytr_body _ tr_body????? ? ?tr_goaltr_disj2->->? ? ? ? ? ? ? ??  ?  ?  ?  ? ? ?tr_if2tr_disj2 _ ? ? ? ? ?tr_bodytr_disj2 _ ? ? ? ? ? ?tr_bodytr_if2 _ do_body? tr_body????? tr_body?????  ?  ?  ? ?iftr_goalcallcall??tr_bodytr_goal\+\+? $bin_cut?fail? ?tr_bodytr_goal\+\+? ??truetr_goal_ ,4?,4?,4? or4 ? ortrue ,4 ? ,4 ? ,4 ? ,nlfail3 print?3 writeRedo: 3 tab?3 ,4 ? ,4 ? ,4 ? ,nlfail3 print?3 writeExit: 3 tab?3if4?4 ? ,4 ? tr_call? ?3 +1? ?3,4? \+ spying?3arith_eq?103 metacall?3ifis_interactive4? ,4 ?nl3 =?323,4? if4 ?true get0>?3 arith_eq?103get0?3or4?or4?true3,is_interactive,4?fail3write : 3,4?,4?,4?fail3print?3writeCall: 3tab? ,4?,4? ,4 ? ,nlfail3 print?3writeFail: 3tab? ? ?ortr_call bagofbagof??? ?? tr_body?? ? ?bagoftr_call setofsetof??? ?? tr_body?? ? ?setoftr_call findallfindall??? ?? tr_body?? ? ?findalltr_call_ $bin_cut?tab?functor???write4? nl assumed_clause? ? tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,nltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! assumed/?? ?is_assumedtr_call_ $bin_cut?tab?functor???write4? nl clause? ? tr_body ?? ? ? or4 ?4 ??3 ,4 ? ,4 ?,4?,4?,nltr_body ??3writeCUT3tab?3 $bin_cut?3 = ?yes3 = ?no3!!! dynamic/?? ?is_dynamictr_call _ ?B?? functor???write4? nl call??3!!! compiled/?? ? ?tabtr_call_ $bin_cut?do_apply??tr_call??? call ?functortr_call_do_undefdynamic_ fail? ?make_dynamicdynamic_ ?truemake_dynamic,,??? make_dynamic?? ?make_dynamicmake_dynamic //?? check_dynamic?4?define_dynamic??3/?? ?functorcheck_dynamic_ ?B?? WARNING: dynamic code will shadow compiled predicate? nl?writecheck_dynamic_ $bin_cut?errmesdynamic code would shadow assumed predicate?? ?is_assumedcheck_dynamic_ ?truedefine_dynamic_ bb_def?$last0? $first 0bb_defensure_dynamic_ $bin_cut?? ?is_dynamicensure_dynamic_ make_dynamic4??3/??functoradd_clause_ $bin_cut?? ?add_clause0add_clause _ add_clause0????$bin_cut?? ? ?ensure_dynamicadd_clause_ :-?? unable to assert clause ?errmesadd_clause0 _??J0??J0???J0 :-?? set???? ? ?bb_defadd_clause0_??J0 :-?? ? ? ?bb_defasserta_ :-?? add_clause$first-1??? ?add_trueassertz_ :-?? add_clause$last1??? ?add_trueassert_assertzassert_itend_of_fileend_of_file ??trueassert_it_assertzretract _ =?4?clause0?? ? erase0? ??3:-?? ?add_trueretractall _ :-?>? val?$first?val?$last? for ???val? ?>?erase0? ? fail? ?add_trueretractall_ ?truecollect_slot_?$firstJ1?$lastJ0??J 0??1J0?$first?J0 ?truecollect_slot_ ?trueinstance$dbref$dbref????J0copy_termerase$dbref$dbref?? ? ?erase0erase0_ collect_slot??? ?bb_rmclause_ ? ?clause0clause_$dbref??clause0clause0 _?$firstJ0?$lastJ0 ith_clause? ??? member4? ??3-?:-??  ? ?  ? ?findallith_clause_-????J1 ?trueith_clause_??J 0?1J0ith_clauseabolish _ ? ? is_dynamic?$bin_cut?abolish0???? ? ?functorabolish_ found/?? abolish_expects_dynamic_clauses ?errmesabolish0_ retractall?fail? ?functorabolish0_ ??$firstJ0?$lastJ0define_dynamicdebug_reconsultconsult_warning_ ? % using compile/1 is MUCH fasterquietmesconsult_ consult_warningconsult0?? ?find_filereconsult_ consult_warningsurvive_cleanup??consult0?? ?find_fileconsult0 _ quietmes4?see?repeatread_clause?consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes4??3consulted?time?3consulting? ? ?ctimeconsult_included_ find_file??consult0?see?? ?seeingconsult_embedded:-:-??consult_cmdconsult_embedded_ assert_it?? ?expand_termconsult_cmd..?[]?consult_includedconsult_cmdconsultconsult??consult_includedconsult_cmdreconsultreconsult??consult_includedconsult_cmd_metacalllisting _ ? ? is_dynamic?$bin_cut?write% write4? write: nl listing0??3/?? ? ?functorlisting _ ? ? is_assumed?$bin_cut?write% assumed write4? write: nl listing1??3/?? ? ?functorlisting0_ portray_clause4?fail?3:-??clauselisting0_ ?nllisting1_ portray_clause4?fail?3:-??assumed_clauselisting1_ ?nllisting_ listing??fail? 0 255forlisting_ ?nlgenerate_run_time_predicate _ or4?4?bb_element4? ? nonvar ??3=4? ?3+? ?3,4? = ? /??3=?/$assumed03,4?= ? /$first03=?/??  ? ?bb_listlisting_ listing??fail? ?generate_run_time_predicatelisting_true=> _ ? intuitionistic? metacall?=?$closed? ? ?assume-: _ ? linear?>? metacall?=?$closed? ? ?assumeadd_hint_ll _clause?? ? ?:-?? ? ? ?add_trueassumel_ ? ? linear>? ?assumeassumei_ ? ? intuitionistic>? ?assumeassume_ ?B?? bad_clause? error_in_assume ?errmesassume_assume1assume1_.?[]?assume_fileassume1_assume_llassume_ll _ lval$assumed?? assume_with_hint_ll??? ?add_hint_llassume_with_hint_ll_ ? ? ?B?? ?insert_llassume_with_hint_ll..?[] ? ?trueassumed_ call?? ?assumed_clauseassumed_clause_ ? ?assumed_clauseassumed_clause _ ? ? ?$assumed?J0 ?B ? ? ?get_assumed_clauseget_assumed_clause _ ? ? ?. ? ? clause?? ? ?copy_or_delete_llget_assumed_clause_.??get_assumed_clausecopy_or_delete_ll linearlinear?? ?:-?? ?B? ?B? ?$usedtruecopy_or_delete_llintuitionisticintuitionistic? ? ? ?B? :-?? ?copy_terminsert_ll_ ? ?.?[]?2? .?[]?J0 ?trueinsert_ll_.??insert_llassume_file _ seeing?see?assume_all?seensee?? ? ? ?find_fileassume_all_ assume_all0??? ? ?gc_read_clauseassume_all0end_of_fileend_of_file ??trueassume_all0_ gc_read_clause?assume_all0??? ?assume_oneassume_one:-:-?.?[] ?? ?assume_fileassume_one:-:-? ?? consult_cmd? true trueifassume_one_ ? ? ?assume_llbb_element ==??+??/??/?? ?.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_30J'1 ?truebb_ ? unsortedbbbb_ ? ,4?,4?,nl,4? ,4 ? ,4 ? ,4 ? ,4 ? ,nlfail3 write ?3 bb_orig ? ?3 member ? ?3 if4 ?4 ? = ? ?3 \==?sorted3 ,4 ? sort ? ?3 findall ?4 ? ?3 bb_element ? ?3bb_list ?3write-bboard?3statisticsbboard? ? nlorbb_orig ==??+??/??/??= ? ? + ? ? /?? /?? functor ???or4?4? $bin_cut??3val? ? ?3lval? ? ? ? ?functorsort_ ? remdup??? < ? ?merge_sortremdup[][][] ?trueremdup ..??.?? = ???J1? .??remdupremdup..??.??remdupmerge_sort_ merge_sort1????[]? ? ? ?lengthmerge_sort100[] ? ??truemerge_sort1 11 ?.??.?[]?truemerge_sort1 _?1J0??J 0 merge_sort1 ?? ? ?? merge_2 ?? ??? ?  ?  ?  ?merge_sort1merge_2[][] ? ??truemerge_2 ..??.? ?.????J1? .? ?merge_2merge_2 _ ?.??.?? ?merge_2ksort_ $bin_cut?=??? -1 ? []keysortksort_ keysort?? illegal_arguments ?user_errorkeysort ..??? ?B ? ? ? -=? ? ? .?? keysort?1? ????  ?  ?  ? ?samkeyrunkeysort_[] ? ?truekeysort..????J 0? ?B ? ? ? -=? ? ? .?? keysort ?1? ? ??keymerge? ? ?+???keysort??? ????  ?  ?  ?  ? ?samkeyrunkeysort _ ? ? ?truesamkeyrun..?? ?B ? ? ? - ? ? ? ? . ? ? -? ? $bin_cut? = ?4 ? samkeyrun?? ????3 .?>?  ?@=<samkeyrun ..?? ?B ? ? ? - ? ? ? ? . ? ? - ? ? < ? ? ?J 1? .??  ?samkeyrunsamkeyrun _ ? ? ?.?[]truekeymerge[][] ?? ? ?truekeymerge ..?? ? ?.? ?-? ? ? ? -? ? $bin_cut? =?4 ? keymerge????3 .?? ?  ?@=<keymerge_.??? ? ?.??keymergekeymerge_ ? ?truesetof _ call? sort??? ? ? ?bagofbagof_ ? ? \==?[] $bin_cut? =.. ?4 ? functor ?. ? findall4 ?4 ??replace_instance? ? ? ?keysort ? ?$bin_cut?concordant_subset ? ? ?=? ??3 - ??3 call?3 ..? ? [] ?free_variablesbagof _.?? call? .?? ?findall^_ ? ?callreplace_instance[][][] ??truereplace_instance ..??-?? ?. ? ? -?? $bin_cut?replace_instance??? ?? ?replace_key_variablesreplace_key_variables00 ??truereplace_key_variables_??J0 ?B???1J0replace_key_variablesreplace_key_variables_??J0??J1?1J0replace_key_variablesconcordant_subset ..??-?? concordant_subset ??4 ????3 .?? ?  ?concordant_subsetconcordant_subset ..??-??.?? = ???J1?concordant_subsetconcordant_subset_[] ? ?trueconcordant_subset[][] ? ? ??trueconcordant_subset_ ? ? ?trueconcordant_subset_ ? ? ?concordant_subsetfree_variables _ ? ?.?? ?B? list_is_free_of?? $bin_cut?? ? ?term_is_free_offree_variables_ ? ?B?? ?truefree_variables _ $bin_cut?free_variables? ???? ?  ? ?explicit_bindingfree_variables _ free_variables?????? ? ? ?functorfree_variables00 ? ??truefree_variables _??J0 -?1 ? $bin_cut? free_variables ??? ??? ? ? ?  ?  ?free_variablesexplicit_binding\+\+?fail ? ?trueexplicit_bindingnotnot?fail ? ?trueexplicit_binding ^^?? ? ?+??trueexplicit_binding setofsetof??? ?-??+??trueexplicit_binding bagofbagof??? ?-??+??trueterm_is_free_of_ ?B??\==term_is_free_of_ term_is_free_of???? ? ?functorterm_is_free_of00 ??trueterm_is_free_of _??J0 -?1? $bin_cut? term_is_free_of???? ? ? ?term_is_free_oflist_is_free_of[][] ?truelist_is_free_of..?? list_is_free_of??? ?\==keysort_ksortnot_ call? $bin_cut?? ? ?\+not_ $bin_cut?fail? ?groundnot_ ? user_errorshould be groundnot? ? fail abortifterm_chars_ ?B?? name??? ? ?swriteterm_chars_ sread??? ? ?namevars_of_ ? ? [] []free_variablescompile_binary_cc_bincompcompile_builtins_cc_builtinscc_must_have_builtinswamwam ?truecc_must_have_builtinscc wam.hc_chunk_filecc_builtins_ bin_builtin?cc_bincomp??fail? ?cc_must_have_builtinscc_builtins_ ?truecc_bincompbinbin ?? fail?portray_clausecc_bincompasmasm nlportray_clause?nlfail? BINARY: ?writecc_bincomp_ cc_compile_clause??gg_emit??$bin_cut?? ?newpredcc_bincomp_ failing_to_compile_clause? ?errmesbin_builtin:-:-??true?$bin_cut??cutpbin_builtin_ bu_body???? ? ?bubu_bodyin_headin_head ?:-??true? arg???? ? ?functorbu_bodyin_bodyin_body ?:-??truecc_compile_clause_ ?.??.??.?[]cc_clausefirstarg_1?J0classif_firstclassif_first_ ?B?? ? ?/?0 ?trueclassif_first_ ?B?? ? ?/_0 ?trueclassif_first_ ?/??functorcc_clause_.??.?[]iifirstarg?? ?iiclause?? ?. ?[] iiexecute? ? ? :-?? firstarg??cc_h_b?4??4?getput?max ? ??+?1?vars??functor?dict?fill_info??collapse_args?1?allocate_regs?4?4??3-4?[]3/??3-4?>?3/? ?3/? ?3/ ? ?  ?add_truecc_h_b_/ ? ?/ ? ? / ? ? -4 ??3 /? ? -4??3/?? cc_b?4?4?4?$bin_cut??3/ ? ?3-4??3/??3-4?[]3/? ?  ?cc_hbegin_chunk _ ? iic_chunk>?4??3len? hidden_var4 ? ???3 +?? ?  ?emitend_chunk _ ? iic_chunk>?4??3len? hidden_var4 ? ???3 +?? ?  ?emitemit_-??.??-?? ?trueget_mode_ ? ? ?-??/?? ?trueset_mode _-??/??-??/?? ?truehidden_var_ ? ? ?-??/?? ?truecc_h_cc_h0cc_b _ end_chunk??? ? ?cc_b0cc_h0 _/?? $bin_cut? functor???arg???emit4?? ? begin_chunk ???3iibuiltin??? in_head  ?bucc_h0 _/?? greater?0 $bin_cut? functor ??? emit_head_top_term?? ???? ? ?functorcc_h0_ ? ? ? unexpected_head_atom ?errmesemit_head_top_term_ ? ? ? cc_top_arg11 ? ? ? ?begin_chunk ? ?emit_top_args2? ? ? ? ?cc_top_arg2? ? ? ??? 1 1  ?  ?  ?  ?emit_top_argscc_b0_ ?B?? true? ?cc_b0cc_b0truetrue ? ?/true0?truecc_b0 $bin_cut$bin_cut??? iiput>?4 ??3 cutarg1 cc_b0????? ? ?  ?emitcc_b0 ==???? cc_b0????? ? ?  ?cc_eqcc_b0 _ $bin_cut?cc_builtin?????? ? in_body ?bucc_b0 _/?? greater?0 $bin_cut? functor ??? emit_body_top_term?? ???? ? ?functorcc_b0_ ? ? ? unexpected_body_atom ?errmesemit_body_top_term _ ? ? ? $bin_cut? emit_top_args1? ?? ??? 1 ?  ?  ?  ?cc_top_argcc_eq _ ? ? ?B? ?B?? ?cc_eq1cc_eq_cc_eq1cc_eq1_ =?? emit4 ? ? ? emit4 ? ? ?set_modeget ? ?cc_top_t4? ? ?set_modeput ???3=??3 iiget>?4 ??3 temp03 iiput>?4 ??3 temp0 ? ?  ?  ?cc_top_tout_reg000 ?trueout_reg11 ? ?truecc_builtinaritharith?? ?? arg ?? ? - ?1 ?arg ???out_reg???- ?? ?functor?? ?handle_constant_res?4???emit_top_bargs1 ?????emit4??? cc_b0 ?????3iiarith>???3=??  ?  ?functorcc_builtin_ - ?1 ? arg ?? ? arg1? ? cc_b_args ? ?? ? emit4 ? ? ? cc_b0 ?? ???3 iiinline>??>? ? ?  ? ?functorhandle_constant_res00 ? ??truehandle_constant_res 11 ? ?=?? ?B ?? ? ?truehandle_constant_res 11=?? ?B ?? iiput>?4 ??3 temp0 emit4? ???3iiget>?4??3temp0 ?  ?  ?emithandle_constant_res 11=??? =?? ? ? ?cc_top_tclassif_load _ ? ?B?? ? ? ?trueclassif_load _constant ? ?B?? ? ? ?trueclassif_load _ ? =?? ? ? ?cc_top_tcc_b_args00 ? ?truecc_b_args 11 =?? emit4 ? ???3 iiput>?4 ??3 temp0 ?  ? ?cc_top_temit_top_bargs _ ???J 0? ?trueemit_top_bargs_??J 0?1J 0??J 0??J 0 emit4 ???emit_top_bargs ???????3 iiload?? ?  ?  ? ? ?  ?classif_loademit_top_bargs _??J 0??J 0??J 0? = ? ? +?1 ? emit_top_bargs ???????  ? ?  ?cc_top_temit_top_args _ ???J 0? ?trueemit_top_args_??J 0??J 0??J 0 $bin_cut? get_mode ?? ?emit4? ? ?+?1?emit_top_args???? ???3ii ??4 ? ?3 arg?  ?  ?  ?classif_argcc_top_arg _ ???J 0? ?truecc_top_arg _??J 0??J 0??J 0?1J 0? = ? ? cc_top_arg ??????? ?  ?cc_top_tcc_top_t ==?? ? ? ?B?? ? ?truecc_top_t ==?? ? ? ?B?? ? ?truecc_top_t ==?? greater?0 $bin_cut? functor ? ?? emit_top_structure? ??? ??? cc_args? ?????  ? ? ?functoremit_top_structure_ emit4 ? ? ?emit_args??? ???3 ii ?structure4 ??3 /??  ? ?  ?  ?get_modecc_arg _ ???J 0? ?truecc_arg _??J 0??J 0??J 0?1J 0? = ? ? cc_arg ??????? ?  ?cc_tcc_t ==?? ? ? ?B?? ? ?truecc_t ==?? ? ? ?B?? ? ?truecc_t ==?? greater?0 $bin_cut? functor ? ?? emit_structure? ??? ??? cc_args? ?????  ? ? ?functorcc_args _?1J 0??1J0??J 0??J 0 = ? ? cc_arg1?????? ?  ?cc_tcc_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?cc_argemit_structure_ deep_structure_op ? ? emit4 ???emit_args??????3 ii ?structure4 ??3 /??  ? ? ?  ?get_modeemit_args_ ? ? ? ? ? ? 1 ?  ?  ?  ?  ?emit_args0emit_args0 _ ???J 0? ?trueemit_args0_??J 0??J 0??J 0 $bin_cut? get_mode ?? ?emit4? ? ?unify_op ? ??+?1?emit_args0???? ???3ii?? ? ?  ?  ?  ?classif_argunify_opgetgetunify ?trueunify_opputput ? ? ?deep_var_opdeep_var_op_push $bin_cut??compounddeep_var_op_write ?truedeep_structure_opgetgetget ?truedeep_structure_opputputpush ?trueclassif_arg_ ?B?? ? ? ?trueclassif_arg_constant ?B?? ? ? ?trueclassif_arg_ ?truemax_??J 0? ? ? ?truemax_ ? ?trueadd_true:-:-?? ?:-???trueadd_true_:-?true ?truevars_ call?? ? truefind_occurrencesfind_occurrences[][][] ? ?truefind_occurrences ..??ii?? ??. ? ? ii?? ?? find_occurrences? ? ???  ?  ?occurrenceoccurrence_ ? ? ?B?? ?trueoccurrence _ ? ? ?var ?? ?B ?? ? ? $OCC ?? 1 ?  ?newvaroccurrence$OCC$OCC?? ? ?var???oldvaroccurrence _ ? ? at4? =occ?3=var? bad_occurrence ?errmesoldvar_/?? ? ?=???1J11??J0 ?truenewvar _,?? ? ? =?? ? ? /?? ?truefill_info_ ? 0 ?fill_alltpoint_ ??1J1 ?truefill_all[][] ? ?truefill_all ..?? fill_one??? ? fill_all?? ??? ?fill_var_typefill_var_typeiiii????var?? ? ?B?? ?get_var_typefill_var_type_ ?trueget_var_type//11unifyvoid ??trueget_var_type//11writevoid ??trueget_var_type//1?variable ??trueget_var_type//??value ???J 0?truefill_one iiii?constant??arg?? mark_arg???4???3var4?/113->?/?? ? ?  ?tpointfill_oneiiii?constant=? ? ? ?? ?tpointfill_one iiii????arg?? mark_arg?????mark_var??? ? ?  ?tpointfill_one iiii=??var?? ? ?? mark_var?4 ??3 var??tpointmark_arg getget ? -4 ? /?>?3 *?>???J1truemark_arg putput ? -4 ? />??3 *>????J1truemark_var_var??/11-??/??? ?truemark_var_var??/1?-??/??1?J 0? ?truemark_var_var??/??-??/??1?J 0? ?truemark_var_ ?var??/=?-??/=?truecollapse_args_ ???J 0?truecollapse_args _??J 0??J0 +?1? collapse_args???? ? ? ?collapse_themdefault//?? set_to99999?? 0 ?set_toset_to_ ? ??trueset_to_ ?truecollapse_them _-??*??var??-??var? ?-? ? default? default? check_lifetimes4 ?4 ?4 ??3 -? ?3 -??3 -??  ?defaultcheck_lifetimes--??-??-?? check_var_var??check_var_arg??$bin_cut??check_var_argcheck_lifetimes--??-?? $bin_cut??check_var_argcheck_lifetimes_-??-?? $bin_cut??check_var_argcheck_lifetimes_ ?truecheck_var_var//?? ?/????J 0?truecheck_var_var//?? ?/????J 0truecheck_var_arg //?? ?/????J 0??J 0trueallocate_regs[][] ? ??trueallocate_regs..?? allocate_regs???? ? ?allocate1allocate1 iiii=??var??-?? ? ? $bin_cut?? ? ?  ?allocate_regallocate1_ ? ?trueallocate_reg _/11 ?B?? free_reg???? ? ? ?get_regallocate_reg _/1? ?B?1?J 0? ? ? ?get_regallocate_reg_/??1?J 0? ? ? ?free_regfree_reg _-??/??- ? ? .?? /????J 0? ?truefree_reg_ ? ?trueget_reg _-??.??/??- ?? /??? ?trueget_reg _-??/??-??/???1J1 ?truemdef_to_def:-:-??:-?? repl_body??? ?hide_atommdef_to_def:-:-?:-? $bin_cut?call?fail? ?repl_bodyrepl_body_call? ?B?? ?truerepl_body_ $bin_cut?? ?repl_macrorepl_body_ $bin_cut?strip_nil??? ? ?split_oprepl_body_ peval_io??$bin_cut?? binprolog ?is_prologrepl_body_ $bin_cut?=?4?ttyprint4??3spying_on?3spy_goal? ?spyingrepl_body_hide_atomis_prolog_ $bin_cut?=??? is prologbb_valis_prolog_default_prologcutp_ ? .36.99.117.116[]namerepl_macro!!$bin_cut? ?cutprepl_macrovarvar? ?B? var?repl_knownrepl_macrononvarnonvar? ?B? nonvar?repl_knownrepl_macroatomicatomic? ?B? atomic?repl_knownrepl_macrofloatfloat? ?B? float?repl_knownrepl_macroatomicatomic? ?B? atomic?repl_knownrepl_macro,,?? ? ? ? ?repl_conjrepl_macro;;?? ? ? ? ?repl_disjrepl_macro->->??->?? repl_body??? ?repl_bodyrepl_macrocomparecompare??? ?compare0???truerepl_macro====?? ?compare0??=truerepl_macro@<@<?? ?compare0??<truerepl_macro@>@>?? ?compare0??>truerepl_macro:=::=:?? ?lval???repl_lvalrepl_macro##? ?dcg_connect?truerepl_macro::?? ?module_call??truerepl_macrofindallfindall???findall???repl_bodyrepl_macrobagofbagof???bagof???repl_bodyrepl_macrosetofsetof???setof???repl_bodyrepl_macroallall???setof???repl_bodyrepl_macro^^??^??repl_bodyrepl_macrocallcall?repl_bodyrepl_macro\+\+?\+?repl_bodyrepl_macronotnot?not?repl_bodyrepl_conj _ ?B? $bin_cut?repl_body??app_body???? ?split_oprepl_conj_,?? repl_body??? ?repl_bodyrepl_disj _if??? ?B ? ? ? ->? ?? repl_body ??repl_body??? ?repl_bodyrepl_disj_or?? repl_body??? ?repl_bodyrepl_lval##?? ? ? ??truerepl_lval_ ? ? ?truerepl_known_true $bin_cut??callrepl_known_fail ?truesplit_opisis?? ? ? ? ?split_is_relsplit_op <<?? ? ? less ? ?split_relsplit_op >>?? ? ? greater ? ?split_relsplit_op =<=<?? ? ? less_eq ? ?split_relsplit_op >=>=?? ? ? greater_eq ? ?split_relsplit_op =:==:=?? ? ? arith_eq ? ?split_relsplit_op =\==\=?? ? ? arith_dif ? ?split_relsplit_is_rel_.?[]expr?? ?B?? ?truesplit_is_rel_.?[]+?0? ?B?? ?truesplit_is_rel_.?[]+?0? $bin_cut?? ? ?floatsplit_is_rel _.?[]+?0? ground?$bin_cut?expr??? binprolog ?is_prologsplit_is_rel_ ? []split_isapp_body[][] ? ??trueapp_body..??,??app_bodystrip_nil..?[] ? ??truestrip_nil..??,??strip_nilsplit_rel_ ? []split_rel_1split_rel_1_ split_is ?? ? ? =.. ?4 ?emit_is ? ???3 .? .? . ?[] ?  ? ?split_issplit_is_ ? ?B?? ? ? ?truesplit_is_ ? ?B?? ? ? ?truesplit_is _ ? $bin_cut?=??? ? ?floatsplit_is_ .? . ? . ?[] $bin_cut? split_is ? ?? ? split_is ? ? ? ? =.. ?4?emit_is ? ???3.?. ? . ? .?[] ? ?  ?=..split_is_ .? . ?[] split_is ? ?? ? =.. ?4 ?emit_is ? ???3 .?. ? .?[] ? ?  ?=..emit_is_.?? ?truedef_to_mbin:-:-?? ? ?? ? ?def_to_mbin0def_to_mbin_ ? ? true ?def_to_mbin0def_to_mbin0 @@@@??:-?? ?B?? add_upper_cont????? ?termcatdef_to_mbin0_:-?? add_cont???? ?termcatadd_upper_cont _ ?B?? add_cont???? ? ? ?add_contadd_upper_cont _ ,4??3strip_cont??? ? ? ?add_contadd_cont,,true??add_contadd_cont,,fail? ?fail??trueadd_cont,,??? term_append?4???3cont? ?add_contadd_cont_? cont??J01 ?truetermcat_? cont??J01 ?trueshow_code _ show_code0?? length? ? write4 ? nl nth_member?? ? show_instr ?? fail?3 BRUT WAM-ASSEMBLER:4 ? =length ?3 =mode? ? ? ?findallshow_code _ write4?nlmc_all_instr??nth_member??? show_instr??fail?3POST TERM-COMPRESSION CODE:=mode? ?nlshow_code_ write4?nlgen_code??fail?3FINAL CODE:=mode? ?nlshow_code_ ?nlshow_code0_ ? member??show_or_skip?? ? ?membershow_or_skipiiiigetvariable??var??-??arg? ??B?trueshow_or_skipiiiiputvalue??var??-??arg? ??B?trueshow_or_skip_ ?trueshow_instr _ ? ?ii???? .?[] write  write?write_write?write show_fun?show_info?nl?  ?writeshow_funputput ??trueshow_fungetget ??trueshow_fun_writeshow_info_ ? ?var??-??? write4?put_code9put_code9put_code9write% write??3var?  ?writeshow_info_ write??  ?writeshow_steps asmasm ,nl,4?,4?,nl,4? ,nlfail3portray_clause?3writeEXPANDED:3\==?? ,4?,nl,4?,nlfail3portray_clause?3writeDEFINITE: ?orshow_steps_ ?truebind_c_chunk_lengthwamwam ? ??truebind_c_chunk_lengthmemmem ? ??truebind_c_chunk_length _ ? ? ? ? ? 0 []bind_lengthbind_length [][] ? ?truebind_length..? ? ? ? ? ? ? ?  ?  ?  ?  ? ? ?make_anti_callmake_anti_call iiii ? ? ? ? ?c_chunk_variable? ii ?4 ? ?3 len? =?? bind_length???????  ?  ?Cmake_anti_call iiii ? ? ? ? ?c_chunk_value? ii ?4 ? ?3 len? -??? bind_length?>?0???  ?  ?Cmake_anti_call_ ?B ? ? ? ii ? ? ? $bin_cut?-???C?4??C???bind_length4?>?0???3.4??3iic_chunk_variable>?03iic_chunk_value4?03len?  ?  ?  ?  ?antigenicmake_anti_call _ ? ??1J 0 bind_length??? ????  ?  ?Cgen_code _ bind_c_chunk_length???member??write_instr???=?no$bin_cut?fail? ? ? ?mc_all_instrgen_code_ ?truemaxarity256256 ?truetemparg_ ? ?truegen_instr iiii???? ? $bin_cut?? ? ?beautifywrite_instr iiii?? ? ? $bin_cut? =?yes? ? ? ?  ?encodewrite_instr_no ?truemc_all_instr_ ? ? mc_one_instr?? ?findallmc_one_instr _ ? mc_peephole??instr_cat??? ? ?memberinstr_cat iiii???? ?ii ?????J 1truebeautifyargarg??encode_argbeautify temptemp?? encode_arg ??????  ? ?tempargbeautifycutargcutarg??encode_argbeautify _ ? ? ?var ? ? -? ?? ?encode2beautify putputwriteconstant ? $bin_cut?encode2pushcut????cutpbeautify _ ? ? ? ?encode2encode_arg _getvariableempty_opvar? ?-??? ?trueencode_arg _putvalueempty_opvar? ?-??? ?trueencode_arg _ ? ? ?var ? ? -? ?? ?encode2encode_arg 11constant ? $bin_cut? encode2?cut???? ?cutpencode_arg _ ? ?constant ? constant ?encode2encode2_ii???? ?truemc_peephole_mc_topmc_input_mc_input0mc_input0 _.?? mc_empty????? ? ?gen_instrmc_emptyempty_opempty_op ? ? ? ??mc_input0mc_empty_ ? ? ?truemc_top_ ? mc0???? ? ?mc_inputmc0 _ mc1?????? ? ? ? ?op_typemc1 pushpushvariable ? ? $bin_cut? mc5???? ?mc_pushmc1 c_chunkc_chunkvariable ? ?? mc5???? ?mc_chunkmc1 _void ?? mc3????? 1 ?mc_selmc1_ ? ? ? ?mc5mc_push _ ? ? op_type?pushstructure mc_transform_push?? ? $bin_cut? =? ?? ? ?  ?mc_inputmc_push_ ? ? ?truemc_chunk _ ? op_type?c_chunkvalue $bin_cut? mc_input???? ? ?mc_inputmc_chunk_ ? ? ?truemc_sel _ ? op_type?>?void $bin_cut? +?1 ? mc_sel?? ??? ? ?mc_inputmc_sel_ ? ? ?truemc3_ ? ? ?mc4mc3 _ ? mc0???? ? ?mc_inputmc4_ $bin_cut?? ?mc_transform_voidmc411 ? ?truemc5_ ? ?truemc5 _ ? mc0???? ? ? ?mc_inputop_typeiiii??=? ?? ? ? ? ?trueop_type_ ? ? expected/ii4 ?errmesmc_transform_void11 ?iiunifyvoid??iiunifyvariable???truemc_transform_void _ii?void??ii?void?? ?truemc_transform_pushiiiipushvariable?? ?iipushstructure??iipushconstant??trueencode unify_variableunify_variableget ? ? 1 ? 0wcodeencode write_variablewrite_variableput ? ? 2 ? 0wcodeencode unify_valueunify_valueget ? ? 3 ? 0wcodeencode write_valuewrite_valueput ? ? 4 ? 0wcodeencode unify_constantunify_constantget ? ? ? 5 0  ? 0wcodeencode write_constantwrite_constantput ? ? ? 6 0  ? 0wcodeencode push_constantpush_constant ? ?/?? 6wcodeencode get_constantget_constant ? ? ? 7  ? 0wcodeencode get_structureget_structure ? ?/?? 8wcodeencode put_constantput_constant ? ? ? 9  ? 0wcodeencode put_structureput_structure ? ?/?? 10wcodeencode get_variableget_variable ? ? ? ? 11  ? ?  ?wcodeencode put_valueput_value ? ? ? 11 ?  ?wcodeencode put_variableput_variable ? ? ? ? 12  ? ?  ?wcodeencode get_valueget_value ? ? ? ? 13  ? ?  ?wcodeencode push_cutpush_cut?? ? ? 14 0 ? 0wcodeencode put_cutput_cut?? ? ? 15 0 ? 0wcodeencode get_cutget_cut?? ? ? 16 0 ? 0wcodeencode execute_?execute_? ? ? ? ? 17 0  ?  ?wcodeencode load_constantload_constant ? ? ? ? 28  ?  ? 0wcodeencode load_variableload_variable ? ? ? ? 50  ? ?  ?wcodeencode load_valueload_value ? ? ? ? 29  ? ?  ?wcodeencode push_structurepush_structure ? ?/?? 51wcodeencode push_variablepush_variableput ? ? 52 ? 0wcodeencode unify_voidunify_void ? ? 61 ? 0wcodeencode write_voidwrite_void ? ? 62 ? 0wcodeencode c_chunk_variablec_chunk_variable ? ? ? 63 ?  ?write_or_skipencode c_chunk_valuec_chunk_value ? ? ? 64 ?  ?write_or_skipencode clause_?clause_? +?1 ? wcode?? ?0??? ?n_nopencode firstarg_?firstarg_?/? ? +?2 ? wcode?? ??? ??  ?n_nopencode end_?end_? ? ? ? ? 0  ?  ? 0wcodeencode inline_variableinline_variable wcode??????? ?n_inlineencode arith_variablearith_variable wcode????0?? ?n_arithencode arith_valuearith_value wcode????1?? ?n_arithencode builtin_?builtin_? wcode??????? ?n_builtinencode_op_ ?op + ?3 ? make_cmd4 ? ? wcode?? ?0 ?0?3 .? .4 ? .? .4 ? .?[]3 .32[]3 .32[]  ? ?n_nopn_inline_ bu_ctrn_inline? ?metacalln_arith_ bu_ctrn_arith? ?metacalln_builtin_ bu_ctrn_builtin? ?metacalln_nop_ bu_ctrn_nop? ?metacallbu_ bu0??? ? ?metacallwrite_or_skip wamwam ??truewrite_or_skip memmem ??truewrite_or_skip_len ? greater_eq ? ? less ? ? $bin_cut? write_or_skip0????? ??  ?  ?  ?c_thresholdwrite_or_skip _ ?truewrite_or_skip0 wamwam $bin_cut? wcodewam?????? c_flag begin_end yes  ?bb_valwrite_or_skip0 cc ? ? ? ? ?? 0wspec_cwrite_or_skip0asmasm? bb_valc_flagbegin_endyes = ?c = ?n wcodeasm?4 ?????3 +? ?  ?  ?  ?ifwrite_or_skip0 _ ?truewcode memmem ?????J #0truewcode wamwam ? put_code? put_code? write? put_code0?put_codewcode cc ? ? ? ? ? ?wcode_cwcode asmasm ? ? ? ? ? ?wcode_asmwcode_asm _ .? .? .? .?[] write? write--> put_code9 put_code9 write? nl? ?=..let_c_chunk_file_ ? ? c_chunk file_namebb_letc_chunk_file_ ? ? c_chunk file_namebb_valnewpredcc? ? ?:-?? ?newpred0newpred_ ?truenewpred0 _ bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0? ?functornewpred0_ bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0? ?functorcurrpred --??/??/?? bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset?? predicate namebb_valcompile_mem _ ?mem compiling4??...3to? ctime?survive_cleanup?? mcomp_file?? maincomp?4 ? terminate_file?$end11$bin_cut?ctime? -???quietmes4??3compile_time?3 current_user_file? ? ?quietmescompile_mem_ restart? compilation aborted ?ttyprintsurvive_cleanup_ restartcall_ifdefinit_iotruename??init_cmd? ?namemcomp_file_ .?.>?[] statisticsstrings4? statisticssymbols4 ? statisticshtable4 ? translate_all?? statisticscode4 ? - ??? statisticsstrings4 ?-???statisticssymbols4?-???statisticshtable4?-???+???+???+???quietmes4??3bytes_used4?4?4?4?total?3code?3strings?3symbols?3htable?3.?.>?[]3.?.>?[]3 .?.>?[]3 . ? .>?[]3 .?.>?[]3 .?.>?[]3.?.>?[] code ? ?statisticscompile0_.??? .??compile1compile0_ .?[] ?compile1compile1 _? ctime?xcompile???ctime? -???write4? nl?3total_compile_time? ?init_cmdxcompile _ decorate_fileheader?compile_builtins?member??quietmes4? ctime ? comp_file?? ctime ? - ? ? ? quietmes4 ? fail?3 compile_time ?3compiling4??...3to? ? ?tellxcompile_ decorate_filefooter?fail? $end0 0 ?terminate_filexcompile_ ?tolddecorate_file_c ??c_decorate_filedecorate_file_ ?trueterminate_file _ gg_emit?4?close_c_chunk_file??3.4?[]3.4?[]3iiend??? ?make_dummy_endmake_dummy_endcc $bin_cut?? wam.hc_chunk_filemake_dummy_end_maincompclose_c_chunk_filecc? toldwrite_c_chunkclose_c_chunk_file_ ?truegg_emitmemmem memgen_codegg_emitwamwam wamgen_codegg_emitcc cgen_codegg_emitasmasm asmshow_codecomp_file_ .wam.asm.bin.c[] $bin_cut?translate_all??? ? ?membertranslate_all_translate_all0memoing_translate_all _ ?wam \+4?memoable_file???$bin_cut?if4?true4 ? include_memoed_file??3\+older_file??3 make_memo_file???3current_moduleprolog binprolog ?is_prologmemoing_translate_all_translate_all0memoable_file_ ? ?.??.??.?[] append ?? ? $bin_cut? =?4? name? ? append ?4 ? ? name? ??3 .? ?3.46.112.108[] ?  ? ?namemake_memo_file_ ?wam tell?translate_all0??toldtell?? ?tellinginclude_memoed_file_ see?repeatget_code?put_to_eof?$bin_cut?seensee?? ?seeingput_to_eof-1-1 ??trueput_to_eof_ fail? ?put_codetranslate_all0_ see?repeatread_clause?translate??$bin_cut?seensee?? ?seeingtranslateend_of_fileend_of_file ??truetranslate:-:-?? fail? ?translate_cmdtranslate::-::-?? ?? :-?? fail? ?compile_binarytranslate_ $bin_cut?translate_cmd4??fail?3assert? ?is_dynamic_clausetranslate_ ? ? fail? ? ?maincompis_dynamic_clause:-:-???is_dynamicis_dynamic_clause_is_dynamicmaincomp _ show_steps??? compile_binary??? ? ? ?preprocesstranslate_cmd..?[]?include_filetranslate_cmdcompilecompile??include_filetranslate_cmdensure_loadedensure_loaded??include_filetranslate_cmdconsultconsult??include_filetranslate_cmdreconsultreconsult??include_filetranslate_cmddynamicdynamic? ??dynamictranslate_cmdinteractiveinteractive? ??interactivetranslate_cmdspyspy? ??spytranslate_cmd opop???? if4?4 ?true?3member?.wam.c[]3 encode_op???? ? ?optranslate_cmd_exec_cmdexec_cmd_ maincomp??fail? ?cmd2clausecmd_root$run_time_command$run_time_command ?trueinit_cmd_ get_cmd_no?? ?cmd_rootget_cmd_no_ ? bb_setgensym?0$bin_cut?? gensym ? ?bb_valget_cmd_no_ ?truecmd2clause _:-?? gensym??quietmes% !!! action delayed after compilation, for command:quietmes4?if4?truetrue?3public/?03:-? ?cmd_rootexec_run_time_commands_ exec_run_time_commands0?fail? ?cmd_rootexec_run_time_commands_trueexec_run_time_commands0 _ ?10000 symcat???if4?4?true $bin_cut??3is_compiled?3,4?fail3call? 1forinclude_file _ find_file??quietmes4?memoing_translate_all??seeing? quietmes4 ??3 end4 ? in?3 including?3begin4? in?3including? ?seeingpreprocess _ fact2rule?? mdef_to_def?? def_to_mbin??? ? ?std_expand_termfact2rule:-:-? ?:-??truefact2rule:-:-?? ?:-???truefact2rule_:-?true ?truemake_cmd_ name??? ?make_cmd0make_cmd0_ ? ? char_in_cmd?? ? ?findallchar_in_cmd _ listify??member??? ? ?memberlistify..?? ?.???truelistify_namemake_appl_ ? .?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[] wam newappl.bpcompile0make_executable_unix_appl_ make_cmd4?? system??3.4?.4? .4 ? .? .4 ? .4 ? .? .4 ? .?[]3 .32 .59 .32 .99 .104 .109 .111 .100 .32 .43 .120 .32[]3 .32 .59 .32 .99 .97 .116 .32 .110 .101 .119 .97 .112 .112 .108 .46 .98 .112 .41 .32 .62 .32[]3 .32 .36 .48 .39[]3 .59 .32 .101 .99 .104 .111 .32 .39 .101 .120 .101 .99 .32[]3.59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[]3.40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[] ? ?make_applcparser_ ? is prolog bin_prolog_with_cparserbb_defkmake_ makewam? ?cparserkcmake_ cmakewam? ?cparsertmake_ ? 12 60tmaketmake_ ? 10000tmaketmake_ cmake? ?set_c_thresholdcmake_ ? wamcmakecmake_ ? usercmakecmake_ ? c .cmakemake_ ? wammakemake_ ? usermakemake_ ? wam .bpmakemake _ ? ? ? ?makemake _ module? if4 ?true4 ? module ??3 make0????3 \+ errmesunable_to_make .4 ? .4 ? .4 ?[]3 in_module?3 project??3 mode?  ? ?current_modulemake0 _ find_file?? make_cmd4 ? ? make_include?? compile0?? ? ctime ?- ? ?? write4 ? nl?3 =? time?3 .? .?[]  ? ?ctimemake_includecc? .?.4?[]3.46.104[] let_c_chunk_file?? ?make_cmdmake_include_ ?trueasm_ ? asm usercomp_fileasm_ ? user asm .asm BinWAM intermediate codemakeboot_ ? wam prologmakeuboot_ ? wam usermakels_ ? ls -tFsystemdir_ ? dirsystemedit _ make_cmd4??system?compile??3.?.4?.?[]3.32[] ? ? ?find_fileget_editor_ unix_getenvEDITOR? unix_getenvVISUAL? $bin_cut?? ? ?orget_editor_ ? ?truemy_edit_ current_user_file? edit??? ? failcall_ifdefmy_defedit_ current_user_file? defedit??? ? failcall_ifdefdefedit_ edit??? ? ?get_editored_ ? emacsmy_defeditedit_ ? editmy_defedittextedit_ ? texteditmy_editemacs_ ? emacsmy_editnotepad_ ? notepadmy_editpico_ ? picomy_editvi_ ? vimy_editco_ current_user_file? compile?? ? failcall_ifdefs_statisticsc_rootxxxx ?trueset_c_threshold_ ? 100000set_c_thresholdset_c_threshold_ ? bb_letc_flagc_threshold_max?? c_flag c_threshold_min ?bb_letset_c_trace_ ? ? c_flag tracebb_letc_threshold_ ? bb_valc_flagc_threshold_max?$bin_cut?? c_flag c_threshold_min ?bb_valc_threshold110 $bin_cut?? wam.hc_chunk_filec_threshold55500 ?truewcode_c_make_ccodemake_ccode _ $bin_cut? make_hcode ??  ?c_instrmake_ccode_make_bcodemake_hcode_ ? wchunk?? 2 ?c_tracemake_bcode _ fast_write? fast_write, fast_write? fast_write, fast_write? fast_write," patch_specials? ? fast_write ? fast_write"}, nl? { ?fast_writemake_comment _ -4?/??3/?? = ?4 ? make_cmd04 ???3 . ? .4 ? .?.4? .?.4? .?.4? .?.4?[]3.93.32.42.47[]3.32.47.32[]3.32.91[]3.32.47.32[]3 .32 .47 .42 .32[]3 .10[] ?  ?currpredwspec_c _ $bin_cut?make_comment? write_c_chunk4 ? wchunk ? lwrite? c_trace1 ? fast_write { write? fast_write, fast_write? fast_write, fast_write? fast_write,(void *) write? fast_write}, nl?3 ,4 ?nl3 lwrite?  ?c_specwspec_c _ $bin_cut? c_trace1 ? wchunk ??  ?c_spec_endlwrite_ ? put_code?fail? ?memberlwrite_ ?truepatch_specials_ ?B?? ? ? ?truepatch_specials _ =?92=?34findall?4 ? ? name? ??3 ,4 ? patch_it ????3 member ?? ?namepatch_it_ ? ?? =?? =?? ?orpatch_it_ ? ?? =?? =?? ?orpatch_it_ ? ?truewrite_c_chunk_? telling?tell?call?tell?? ? ?c_chunk_filewchunk_ ,4?nl3fast_write? ?write_c_chunkc_decorate_file_ $bin_cut?c_decorate_file0?wam_bp? wam.h ?c_chunk_filec_decorate_file_ ? user_bpc_decorate_file0c_decorate_file0headerheader? init_gensym?wchunk/* do not edit: generated by co.pl */write#include "../src/global.h"nlwrite#include "../src/c_defs.h"nlc_chunk_file?write#include "write?write"nlnlwritestruct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} write?write[] = {nl? ?c_rootc_decorate_file0footerfooter write?write"}};nlnlwritelong write?write_size=sizeof(write?write);nl? {255,0,0," ?writec_check_ ? ?c_check0c_check0_ ? integer?? c_chunk inbb_valnew_offset_ ? +?1?bb_setpredicateoffset?? predicate offsetbb_valget_offset_ ? ? predicate offsetbb_valc_find_fun_ ? ?B?? integer? unexpectederrmesc_find_fun _ bb_valfun_symbol?? bb_valfun_arity?? $bin_cut? =??? ? 0 ?forc_find_fun _?1J1 bb_letfun_symbol??bb_letfun_arity??make_bcodewrite_constant60??? c_chunk in ? ?bb_setc_chunk_begin_ c_root?gensym??? c_chunk in -1bb_letc_chunk_end_ ? c_chunk in nobb_letnewP _ integer?c_find_fun????? c_chunk in ? ?bb_valnewH_oldP_ new_offset?? ?c_checkoldH_oldP_ get_offset?? ?c_checknewH_newP_ new_offset?? ?newPoldH_newP_ get_offset?? ?newPc_wvoid_ or4?true?3,4?,4?fail3new_offset>?3for>?2? ? ?newH_oldPc_aux_load_integer_load_integer?? ?B?? ?c_checkc_aux_load_integer_load_constant?? ? ? ? ?newPc_aux_put_integer_put_integer?? ?B?? ?c_checkc_aux_put_integer_put_constant?? ? ? ? ?newPc_aux_get_integer_get_integer?? ?B?? ?c_checkc_aux_get_integer_get_constant?? ? ? ? ?newPc_aux_write_integer_ ?write_integer?? ?B?? ?newH_oldPc_aux_write_integer_ ?write_constant??newH_newPc_aux_unify_integer_ ?unify_integer?? ?B?? ?oldH_oldPc_aux_unify_integer_ ?unify_constant??oldH_newPc_trace _ greater_eq??$bin_cut?write_c_chunk4??3,4?,4? ,4 ?nl3 write ")3write?3writec_trace(" c_flag trace ?bb_valc_trace_ ?truec_specc_chunk_variablec_chunk_variable ? ?c_chunk_variable?c_chunk_beginc_skip22 ?truec_spec_endc_chunk_valuec_chunk_valuec_chunk_value ? ? c_check0 ? + ?? ? c_chunk_end get_offset ? make_bcodec_chunk_value?0? ??  ?c_skipc_instr put_structureput_structure ? ? ?put_structure? ??  ?newH_newPc_instr put_constantput_constant ? ? ? ? ?c_aux_put_integerc_instr push_variablepush_variablepush_variable() defoffset???newH_oldPc_instr push_structurepush_structure ? ?push_structure? ? ? valoffset? ? rmoffset??  ?newH_newPc_instr write_valuewrite_value ?write_value??newH_oldPc_instr write_variablewrite_variable ?write_variable??newH_oldPc_instr write_constantwrite_constant ? ? ? ?c_aux_write_integerc_instr push_constantpush_constant ? ? ? ?c_aux_write_integerc_instr get_variableget_variable ?move_reg??c_checkc_instr put_valueput_value ?move_reg??c_checkc_instr put_variableput_variable ?put_variable???newH_oldPc_instr write_voidwrite_void ? ?write_void??c_wvoidc_instr push_cutpush_cut ?push_cut?newH_oldPc_instr put_cutput_cutput_cut() ?c_checkc_instr get_cutget_cutget_cut() ?c_checkc_instr load_constantload_constant ? ? ? ? ?c_aux_load_integerc_instr load_variableload_variable ?load_variable???newH_oldPc_instr load_valueload_value ?load_value??c_checkc_instr get_valueget_value ?get_value??c_checkc_instr get_constantget_constant ? ? ? ? ?c_aux_get_integerc_instr get_structureget_structure ? ? ?get_structure? ??  ?oldH_newPc_instr unify_variableunify_variable ?unify_variable??oldH_oldPc_instr unify_valueunify_value ?unify_value??oldH_oldPc_instr unify_constantunify_constant ? ? ? ?c_aux_unify_integerc_instr unify_voidunify_void ?unify_void??oldH_oldPc_instr inline_variableinline_variable c_check_iv???c_checkc_instr arith_variablearith_variable ? ? c_opcode????c_check_avc_instr arith_valuearith_value ? ? c_opcode????c_check_avc_check_av00arith_op+???? ?oldH_oldPc_check_av11arith_op-???? ?oldH_oldPc_check_av22arith_op*???? ?oldH_oldPc_check_av33arith_op%???? ?oldH_oldPc_check_av44 ?div_3???truec_check_av55fdiv_3???? ?oldH_oldPc_check_av66 ?random_1??truec_check_av77 ?get0_1??truec_check_av88put0_1() ?truec_check_av99 ?rel_op<?truec_check_av1010 ?rel_op>?truec_check_av1111 ?rel_op<=?truec_check_av1212 ?rel_op>=?truec_check_av1313 ?rel_op==?truec_check_av1414 ?rel_op!=?truec_check_av1515 ?int_only_op<<??truec_check_av1616 ?int_only_op>>??truec_check_av1717 ?int_only_op&??truec_check_av1818 ?int_only_op|??truec_check_av1919 ?int_only_op^??truec_check_av2020 ?l_neg_3??truec_check_av2121 ?compare0_3??truec_check_av2222 ?arg_3??truec_check_av2323setarg_3() ?truec_check_av2424change_arg_3() ?truec_check_av2525def_3() ?truec_check_av2626rm_2() ?truec_check_av2727set_3() ?truec_check_av2828 ?val_3??truec_check_av2929 ?lval_3??truec_check_av3030 ?symcat_3??trueantigenicarith_variablearith_variable ??30J 0trueantigenicarith_valuearith_value ??30J 0trueantigenicbuiltin_?builtin_? ??0J 0truec_opcode_ +???? ?c_checkc_check_iv00fail_0() ?truec_check_iv11cwrite_1() ?truec_check_iv22cnl_1() ?truec_check_iv33var_1() ?truec_check_iv44nonvar_1() ?truec_check_iv55integer_1() ?truec_check_iv66atomic_1() ?truec_check_iv77is_compiled_1() ?true$end0_truewamBinProlog3.45/pl2c/ 40755 764 764 0 5764563223 13055 5ustar javierjavierBinProlog3.45/pl2c/makefile100644 764 764 2577 5755746366 14700 0ustar javierjavier# This is a template to generate a C file and finally a # self contained executable file from a BinProlog program # *.pro => top project file + included files # !!!!! to edit for each new project !!!! # PROJ.pl is the top file of a project # PROJ is the name of the resulting binary executable file PROJ = brev # !!!!! to edit for each new architecture/environment # CC is the name of your C compiler (gcc prefered) # BINPROLOG is the name of the installed executable BinProlog file # SRC is the BinProlog source directory # BPLIB referes to BinProlog libraries CC = gcc -s -O2 #CC = gcc -s -msupersparc -fomit-frame-pointer -O3 SRC=../src #BINPROLOG = $(SRC)/ru $(SRC)/wam.bp BINPROLOG = bp BPLIB = $(SRC)/bp.o $(SRC)/c.o $(SRC)/wam.o # Note: # on a HP use: # CC = cc +w3 +Obb1000 -s # --------------------- do not edit below this line---------------------# # This generates a C-file the Prolog files in PROJ file and links it to # the BinProlog `library' (a relocatable object file usually ../src/bp.o) $(PROJ): $(PROJ).o $(BPLIB) rm -f core $(CC) -s -o $(PROJ) $(BPLIB) $(PROJ).o -lm $(PROJ).o: $(PROJ).h $(PROJ).c $(SRC)/c_defs.h $(SRC)/global.h $(CC) -c $(PROJ).c $(PROJ).h $(PROJ).c: $(PROJ).pro rm -f $(PROJ).c echo "cmake($(PROJ)). " | $(BINPROLOG) clean realclean: oclean rm -f *.o *.h *.c *.ccp *.s $(PROJ) oclean: rm -f $(PROJ).o $(PROJ).s $(PROJ).c $(PROJ).h .IGNORE: BinProlog3.45/pl2c/README100644 764 764 1567 5716446162 14042 0ustar javierjavierThis is for your own C-ified standalones. Make sure you have copied the file for the appropriate architecture/machine from ../bin to ../src/bp.o and have generated ../src/wam.o from ../src/wam.c and ../src/wam.h which are generated with cmake from ../src/wam.pro. Look at *.pro examples, showing how to C-ify a given project. Something like: make PROJ=queens will create a standalone executable from queens.pro and its included files. Use (one or more) directives :-set_c_threshold(Min,Max). or :-set_c_threshold(Min). in your *.pro file to fine-tune your C-ified code for speed or size. Good results are obtained for Min in 6..15 on most architectures. P.S. Min and Max are the minimum and maximum length of a sequence of WAM-instructions which gets translated to a C leaf-routine. To clean up files generated for a project do something like: make clean PROJ=queens BinProlog3.45/pl2c/queens.pro120777 764 764 0 6664733563 20323 2../progs/queens.plustar javierjavierBinProlog3.45/pl2c/brev.pro120777 764 764 0 6664733563 17417 2../progs/brev.plustar javierjavierBinProlog3.45/pl2c/allperms.pro120777 764 764 0 6664733563 21161 2../progs/allperms.plustar javierjavierBinProlog3.45/pl2c/backprop.pro120777 764 764 0 6664733563 21125 2../progs/backprop.plustar javierjavierBinProlog3.45/pl2c/bcolor.pro120777 764 764 0 6664733563 20263 2../progs/bcolor.plustar javierjavierBinProlog3.45/pl2c/boyer.pro120777 764 764 0 6664733563 17763 2../progs/boyer.plustar javierjavierBinProlog3.45/pl2c/cal.pro120777 764 764 0 6664733563 17021 2../progs/cal.plustar javierjavierBinProlog3.45/pl2c/chat.pro120777 764 764 0 6664733563 17361 2../progs/chat.plustar javierjavierBinProlog3.45/pl2c/color.pro120777 764 764 0 6664733563 17757 2../progs/color.plustar javierjavierBinProlog3.45/pl2c/fknight.pro120777 764 764 0 6664733563 20607 2../progs/fknight.plustar javierjavierBinProlog3.45/pl2c/ham.pro120777 764 764 0 6664733563 17035 2../progs/ham.plustar javierjavierBinProlog3.45/pl2c/hello.pro100644 764 764 410 5662532612 14745 0ustar javierjavier:-write('this is a simple program'),nl. go:- nl, write([hello,this,is,a,'BinProlog',3,10, standalone,'C-ified',executable]), nl. % if main/0 is absent the toplevel prompt "?-" will show up, % otherwise execution will start with main/0. main:-go. BinProlog3.45/pl2c/pbench.pro120777 764 764 0 6664733563 20221 2../progs/pbench.plustar javierjavierBinProlog3.45/pl2c/qsort.pro120777 764 764 0 6664733563 20043 2../progs/qsort.plustar javierjavierBinProlog3.45/pl2c/semi3.pro120777 764 764 0 6664733563 17563 2../progs/semi3.plustar javierjavierBinProlog3.45/pl2c/tak.pro120777 764 764 0 6664733563 17061 2../progs/tak.plustar javierjavierBinProlog3.45/pl2c/tetris.pro120777 764 764 0 6664733563 20347 2../progs/tetris.plustar javierjavierBinProlog3.45/c_inter/ 40755 764 764 0 5764563223 13640 5ustar javierjavierBinProlog3.45/c_inter/c.c100644 764 764 17032 5762750744 14352 0ustar javierjavierint init_c() { return 1; } #include "c.h" char *c_interface="(with C-interface)\n"; /* ADD YOUR INITIALISATION CODE HERE */ /* CALLING BinProlog from C ******************************************/ /* simple example of prolog call */ term if0(regs,H,P,A,wam) register term regs,H,*A; register instr P; register stack wam; { term OldH,bp(); cell goal=regs[1]; cell yes=regs[2]; cell n0=regs[3]; cell cont=regs[4]; /* save continuation */ /* In this example the input GOAL is in regs[1]. Of course, you can build it yourself directly in C. If you are NOT SAVING (as a caller) your useful registers here, use the more expensive but safe BP_prolog_call(goal) which allocates a new set of them. This is OK if you return from BP_prolog_call but is a cummulative expense if you have mutually recursive Prolog and C calls. In this case, it is better to use the "caller saves registers" protocol, as the cost of embedded calls is reduced to their actual heap consumption. */ H=bp_prolog_call(goal,regs,(OldH=H),P,A,wam); fprintf(stderr,"returning from New WAM\n"); if(H) { fprintf(stderr,"success:\n"); regs[1]=yes; } else { fprintf(stderr,"fail:\n"); regs[1]=n0; H=OldH; }; /* do not forget this !!! */ regs[2]=cont; /* restore continuation */ return H; /* return NULL to signal failure */ } /* ADD YOUR NEW BUILTINS HERE they can be called from Prolog as: new_builtin(0,,) X(1) contains the integer `opcode' of your builtin X(2) contains your input arg regs[I] contains somthing that will be unified with what you return (the precise value of I depends on the register allocator). You are expected to `return' either - a non-null object that will be unified with , or - NULL to signal FAILURE As the returned object will be in a register this can be used for instance to add a garbage collector that moves every data area around... */ term new_builtin(H,regs,A,P,wam) register term H,regs,*A; register instr P; register stack wam; { BP_check_call(); switch(BP_op) { /* for beginners ... */ case 0: /* this just returns your input argument (default behavior) */ break; case 1: BP_result=BP_integer(13); /* this example returns 13 */ break; case 2: BP_result=BP_atom("hello"); /* this example returns 'hello' */ break; /* for experts ... */ case 3: /* iterative list construction */ { cell middle,last,F1,F2; int i; BP_make_float(F1, 77.0/2); BP_make_float(F2, 3.14); BP_begin_put_list(middle); BP_put_list(BP_integer(33)); BP_put_list(F1); BP_put_list(BP_string("hello")); BP_put_list(F2); BP_end_put_list(); BP_begin_put_list(last); for(i=0; i<5; i++) { BP_put_list(BP_integer(i)); } BP_end_put_list(); BP_begin_put_list(BP_result); BP_put_list(BP_string("first")); BP_put_list(middle); BP_put_list(last); BP_put_list(F1); BP_put_list(F2); BP_end_put_list(); } break; case 4: /* cons style list construction */ BP_begin_cons(); BP_result= BP_cons( BP_integer(1), BP_cons( BP_integer(2), BP_nil ) ); BP_end_cons(); break; case 5: /* for hackers only ... */ ; BP_result=(cell)H; H[0]=g.DOT; H[1]=X(2); H[2]=g.DOT; H[3]=BP_integer(99); H[4]=g.DOT; H[5]=(cell)(H+5); /* new var */ H[6]=g.DOT; H[7]=(cell)(H+5); /* same var as previously created */ H[8]=g.DOT; H[9]=BP_atom("that's it"); H[10]=g.NIL; H+=11; break; case 6: BP_fail(); break; case 7: { cell T=BP_input; if(BP_is_integer(T)) {fprintf(g.tellfile,"integer: %ld\n",BP_get_single_integer(T)); BP_result=BP_integer(-1); } else BP_fail(); } break; case 8: /* for experts: calling BinProlog from C */ { cell L,R,Goal; BP_begin_put_list(L); BP_put_list(BP_string("one")); BP_put_list(BP_integer(2)); BP_put_list(BP_string("three")); BP_put_list(BP_input); /* whatever comes as input */ BP_end_put_list(); BP_put_functor(Goal,"append",3); BP_put_old_var(L); BP_put_old_var(L); BP_put_new_var(R); BP_prolog_call(Goal); /* this will return NULL on failure !!!*/ BP_put_functor(Goal,"write",1); BP_put_old_var(R); BP_prolog_call(Goal); /* calls write/1 */ BP_put_functor(Goal,"nl",0); BP_prolog_call(Goal); /* calls nl/0 */ BP_result=R; /* returns the appended list to Prolog */ } break; case 10: /* for experts: calling BinProlog from C */ { cell L,R,Goal; BP_begin_put_list(L); BP_put_list(BP_string("one")); BP_put_list(BP_integer(2)); BP_put_list(BP_string("three")); BP_put_list(BP_input); /* whatever comes as input */ BP_end_put_list(); BP_put_functor(Goal,"cut_test",3); /* see c.pl */ BP_put_old_var(L); BP_put_old_var(L); BP_put_new_var(R); BP_prolog_call(Goal); /* this will return NULL on failure !!!*/ BP_put_functor(Goal,"write",1); BP_put_old_var(R); BP_prolog_call(Goal); /* calls write/1 */ BP_put_functor(Goal,"nl",0); BP_prolog_call(Goal); /* calls nl/0 */ BP_result=R; /* returns the appended list to Prolog */ } break; case 11: /* CALLING BinProlog on a NEW ENGINE */ { stack Engine; cell Goal,Answer; cell Xs,X; BP_begin_put_list(Xs); BP_put_list(BP_string("new_engine_test")); BP_put_list(BP_input); /* whatever comes as input */ BP_put_list(BP_integer(100)); BP_put_list(BP_integer(200)); BP_put_list(BP_integer(300)); BP_end_put_list(); BP_put_functor(Goal,"member",2); BP_put_new_var(X); BP_put_old_var(Xs); Engine=BP_create_engine(wam,100,50,50); BP_load_engine(Engine,Goal,X); while((Answer=(cell)ask_engine(Engine))) { cell Goal1; BP_put_functor(Goal1,"write",1); BP_put_old_var(X); BP_prolog_call(Goal1); /* calls write/1 */ BP_put_functor(Goal1,"nl",0); BP_prolog_call(Goal1); /* calls nl/0 */ } BP_result=X; /* returns the now free variable */ BP_destroy_engine(Engine); } break; case 12: /* CALLING BinProlog on a NEW ENGINE. The friendliest way... */ { stack Engine; cell Goal,Answer; cell Xs,X; BP_sread("[0,s(0),s(s(0)),[a,b,c]]",Xs); BP_put_functor(Goal,"member",2); BP_put_new_var(X); BP_put_old_var(Xs); Engine=BP_create_engine(wam,100,50,50); BP_load_engine(Engine,Goal,X); while((Answer=(cell)ask_engine(Engine))) { printf("Answer = %s\n",BP_swrite(Answer)); } BP_result=X; /* returns the now free variable */ BP_destroy_engine(Engine); } break; /* EDIT AND ADD YOUR CODE HERE....*/ default: return LOCAL_ERR(X(1),"call to unknown user_defined C function"); } return H; } BinProlog3.45/c_inter/c.h100644 764 764 5371 5762750315 14334 0ustar javierjavier#include "../src/global.h" extern struct specsyms g; extern term bp_prolog_call(); extern term make_float(),local_error(),bp_heap_top,bp(),*unwind_trail(); extern term sread0(); extern string *atomtable,swrite(); extern struct limit max; extern cell bp_cons(); extern string lextable,newlex; extern no newatom; extern no hcount; extern no hget(),hset(),hdef(); extern stack create_engine(); extern no destroy_engine(); extern term load_engine(); extern term ask_engine(); #define BP_op OUTPUT_INT(X(1)) #define BP_input X(2) #define BP_result X(3) #define BP_fail() return NULL #define BP_is_integer(Cell) INTEGER(Cell) #define BP_is_var(Cell) VAR(Cell) #define BP_is_atom(Cell) SYMCONST(Cell) #define BP_is_nonvar(Cell) NONVAR(Cell) #define BP_is_compound(Cell) COMPOUND(Cell) #define BP_is_float(Cell) BP_FLOAT(Cell) #define BP_is_number(Cell) NUMERIC(Cell) #define BP_atom(Name) input_fun((Name),0) #define BP_functor(Name,Arity) input_fun((Name),Arity) #define BP_integer(Int) INPUT_INT((Int)) #define BP_make_float(Var,FVal) {(Var)=(cell)H; H=make_float(H,(FVal));} #define BP_string(Name) BP_atom((Name)) #define BP_begin_cons() bp_heap_top=H #define BP_cons(Car,Cdr) bp_cons(Car,Cdr) #define BP_nil g.NIL #define BP_end_cons() H=bp_heap_top; #define BP_put_new_var(Var) (Var)=(cell)(SETREF(H,H),H++) #define BP_put_old_var(Var) {SETREF(H,Var);H++;} #define BP_begin_put_list(Result) (Result)=(cell)H #define BP_put_list(Element) PUSH_LIST((cell)(Element)) #define BP_end_put_list() PUSH_NIL() #define BP_put_functor(Result,Name,Arity) \ {(Result)=(cell)H; SETREF(H,BP_functor((Name),(Arity))); H++;} #define BP_put_arg(Element) {SETREF(H,(Element)); H++;} #define BP_get_args(ARGV,ARGC) {ARGV=BP_input; ARGC=GETARITY(BP_input);} #define BP_get_single_integer(IVar) IVar=OUTPUT_INT(BP_input) #define BP_get_single_string(SVar) SVar=NAME(BP_input) #define BP_check_call() \ if(!BP_is_integer(X(1))) \ return LOCAL_ERR(X(1), \ "op-code of C-function must be an integer");\ BP_result=BP_input; #define BP_prolog_call(Goal) \ { cell RegBuffer[TEMPARGS+MAXREG]; \ register term newregs=RegBuffer+TEMPARGS; \ if(!(H=bp_prolog_call((Goal),newregs,H,P,A,wam))) BP_fail(); \ } /* NEW: Abstract engine manipulation macros */ #define BP_create_engine(ParentWam,HeapSize,StackSize,TrailSize)\ create_engine(ParentWam,HeapSize,StackSize,TrailSize) #define BP_destroy_engine(Wam) {if(!destroy_engine(Wam)) return NULL;} #define BP_load_engine(Wam,Goal,Answer) \ if(!load_engine(Wam,Goal,Answer)) return NULL; #define BP_ask_engine(Wam) ask_engine(Wam) #define BP_sread(String,Cell) \ { string s=(string)strdup(String); \ cell xval=(cell)sread0(H,s); \ free(s); \ if(!xval) return NULL; \ Cell=xval; H=(term)xval+1; \ } #define BP_swrite(Term) swrite((Term),wam) BinProlog3.45/c_inter/c.pl100644 764 764 1272 5762751400 14510 0ustar javierjavierc_test:- for(I,1,12), new_builtin(I,I,R), write(c_test(I=R)),nl, fail ; X=1, if0(X>0,write(yes),write(no)),nl. example1(I,O):-new_builtin(1,I,O). c_append(I,O):-new_builtin(8,I,O). % uncomment this if you want BinProlog to start from here % main:-c_test. cut_test(X,Y,Z):- for(I,1,10), (I<6->write(I),nl,fail ; !, write(cut_test),nl,append(X,Y,Z) ). % tests the NEW, first-order engine based interface % the most efficient one engine_test1:-new_builtin(11,from_prolog,R),write(R),nl. % the easier one engine_test2:-new_builtin(12,from_prolog,R),write(R),nl. go:- c_test,fail ; cut_test(Xs,Ys,[1,2]),write(Xs+Ys),nl,fail ; engine_test1,fail ; engine_test2. BinProlog3.45/c_inter/c_binpro.pro100644 764 764 7 5762753252 16170 0ustar javierjavier:-[c]. BinProlog3.45/c_inter/makefile100644 764 764 2001 5763711536 15427 0ustar javierjavierPROJ = c_binpro CINTERF = c #CC = gcc -g CC = gcc -s -O2 SRC=../src BINPROLOG = bp BPLIB = bp.o WAMLIB = wam.o # --------------------- do not edit below this line---------------------# PPARTS=$(SRC)/$(BPLIB) $(PROJ).o $(CINTERF).o $(SRC)/$(WAMLIB) # This generates a C-file from the Prolog file in PROJ file and links it to # the BinProlog `library' (a relocatable object file usually ../src/bp.o) # combined with the C-ified emualtor (usually ../src/wam.o) and your # own C-code in files c.c + c.h and your Prolog code using the interface # in file c.pl $(PROJ): $(PPARTS) makefile rm -f core cat README $(CC) -o $(PROJ) $(PPARTS) -lm $(PROJ).o: $(PROJ).h $(PROJ).c $(SRC)/c_defs.h $(SRC)/global.h $(CC) -c $(PROJ).c $(PROJ).h $(PROJ).c: $(PROJ).pro $(CINTERF).pl rm -f $(PROJ).c echo "cmake($(PROJ)). " | $(BINPROLOG) $(CINTERF).o: $(CINTERF).c $(CINTERF).h $(SRC)/global.h $(CC) -c $(CINTERF).c clean realclean: oclean rm -f *.o *.ccp *.s $(PROJ) oclean: rm -f $(PROJ).o $(PROJ).s $(PROJ).c $(PROJ).h BinProlog3.45/c_inter/README100644 764 764 1173 5762607550 14617 0ustar javierjavier# This generates a C-file from the Prolog file in PROJ file and links it to # the BinProlog `library' (a relocatable object file usually ../src/bp.o) # combined with the C-ified emualtor (usually ../src/wam.o) and your # own C-code in files c.c + c.h and your Prolog code using the interface # in file c.pl Possible changes (upcoming): BP_create_engine() etc. to create multiple Prolog engines from C. BinProlog bp.o library will not define "main()" anymore, but leaves this to the embedding application. A tiny prototype "main.c" will have to be included by the client application who also may decide to replace this by its own. BinProlog3.45/dynpl2c/ 40755 764 764 0 5764563225 13572 5ustar javierjavierBinProlog3.45/dynpl2c/makefile100644 764 764 4405 5763603715 15370 0ustar javierjavier# This is a template to generate a C file and finally a # self contained executable file from a BinProlog program # *.pro => top project file + included files # !!!!! to edit for each new project !!!! # PROJ.pl is the top file of a project # PROJ is the name of the resulting binary executable file BMFILES = brev cal fibo tak ltak semi3 queens fknight PROJECTS = $(BMFILES) test1 test2 test2 test4 hello color bcolor fibo1 qsort allperms cperms ham backprop chat boyer tetris pbench PROJ = cal # !!!!! to edit for each new architecture/environment # TESTED ON SOLARIS 2.3 with gcc 2.6.0 # on othe systems dynamic linking may be unavailable or use other commands # CC is the name of your C compiler (gcc prefered) # BINPROLOG is the name of the installed executable BinProlog file # SRC is the BinProlog source directory # BPLIBSO is tha name of BinProlog shared library #CC = gcc -msupersparc -fomit-frame-pointer -ffast-math -s -O3 CC = gcc -msupersparc -fomit-frame-pointer -s -O2 SRC=../src LIB = $(SRC) BINPROLOG = $(SRC)/ru -q2 $(SRC)/wam.bp BPLIB = libbp.so CSTUB = c.o BPLIBSO = $(LIB)/$(BPLIB) $(LIB)/$(CSTUB) # it: all # --------------------- do not edit below this line---------------------# # This generates a C-file the Prolog files in PROJ file and links it to # the BinProlog `library' (a relocatable object file usually ../src/bp.o) $(PROJ): $(PROJ).o $(BPLIBSO) @echo "Dynamic linked C-ification for Solaris 2.x" rm -f core gcc -o $(PROJ) $(BPLIBSO) $(PROJ).o -lm $(PROJ).o: $(PROJ).h $(PROJ).c $(CC) -c $(PROJ).c $(PROJ).h $(PROJ).c: $(PROJ).pro $(SRC)/c_defs.h $(SRC)/global.h $(SRC)/c_instr.pl $(SRC)/c_comp.pl $(SRC)/co.pl $(SRC)/bin.pl $(SRC)/ru $(SRC)/wam.bp echo "cmake($(PROJ)). " | $(BINPROLOG) #$(BPLIBSO): # (cd $(SRC); make $(BPLIB)) blindclean: rm -f *.o *.h *.c *.ccp *.s $(PROJ) aclean: oclean eclean eclean: rm -f $(PROJ) go oclean: rm -f $(PROJ).o $(PROJ).c $(PROJ).h $(PROJ).s $(PROJ).ccp $(PROJ).asm all: for i in $(PROJECTS) ; \ do make $$i PROJ=$$i ; \ done bmarks: for i in $(BMFILES) ; \ do make $$i PROJ=$$i ; \ done clean realclean: for i in $(PROJECTS) ; \ do make aclean PROJ=$$i ; \ done bm bm.txt: bmarks rm -f bm.txt for i in $(BMFILES) ; \ do (ls -lR $$i $$i.o; echo "go. " | $$i -h1200 >> bm.txt) ; \ done BinProlog3.45/dynpl2c/test.pro100644 764 764 4413 5667450142 15365 0ustar javierjavier% :-ctrace. atest:- T=f(a,b,c), arg(1,T,X), arg(3,R,Z), cwrite(g(X,Z)),cnl, arg(4,T,_). ltest:- X=1, X1 is X<<3, X2 is X>>1, X3 is X1 /\ X2, X4 is X1 \/ X2, X5 is X1 # X2, X6 is X1 \ X2, X7 is \(X1), write([X,X1,X2,X3,X4,X5,X6,X7]),nl. ftest:- see('test.h'), repeat, get_put(X), X= -1, !. get_put(X):- get0(X), put(X). rtest:- repeat, rtest(Y), cwrite(Y), cnl, Y=0, !. rtest(Y):- random(X), Y is X mod 10. a100(M,K,P):-P is M + K. aa:-a100(3,4,X),write(X),nl. ar:-ar(11). ar(X):-cwrite(X),cnl, X0 is X/2,write(X0),cnl, X1 is (X-1) mod 3,cwrite(X1),cnl, X2 is (2*3.14+X*2)/2-X,write(X2),cnl. class:-member(X,[1,a,f(A),A]),class1(X,R),show(X,R),fail. class1(X,R):-var(X),R=var(X). class1(X,R):-nonvar(X),R=nonvar(X). class1(X,R):-integer(X),R=integer(X). class1(X,R):-is_compiled(X),R=is_compiled(X). show(X,R):-cwrite(X),cwrite(=),cwrite(R),cnl,fail. zut:-!,wtest. wtest:-X=f(o,Y,Y),cwrite(a),cwrite(b),cwrite(c),cwrite(X),cnl,fail. rest:-rest_verb(X,Y,b,c),write(X+Y),nl. verb(verb(B)) :- aaa(M,N,B), rest_verb(N,M,B,_), aaa(M,N,B). rest_verb(aux,have,B,C):-bbrest(B),bbrest(C). aaa(_,_,_). bbrest(_). ex(f(X,X,X)):-name(expell,L),write(L),nl. ex:-functor(T,f,3),ex(T),write(T),nl. a(0):-!. a(X):-X>1,X1 is X+1,functor(T,f,X1),b(T). b(T):-cwrite(T),nl. fact(0,1):-ok,ok,ok,ok,ok,ok,!,ok,ok. fact(N,X):-N>0,N1 is N-1,fact(N1,X1),X is N*X1. ok. go0:-cwrite(f(1,2,a,b,s(3),s(4))),cnl, copy_term(0,fact(5,_),G),copy_term(1,G,S), S, write(S),nl,fail. range(Min,Min,Max):-Min=1,N1 is N-1,N2 is N-2,fibo(N1,X1),fibo(N2,X2),X is X1+X2. range(Min,Min,Max):-Min= *.dvi -> *.ps and *.txt - use it if you edit and improve art.tex tcl.tex describes BinProlog's (portable) Tcl/Tk interface multi.tex describes Mult-BinProlog 3.0 BinProlog3.45/doc/art.tex100644 764 764 315315 5764562344 14442 0ustar javierjavier\documentstyle[11pt]{article} \textheight 21 cm \textwidth 14 cm \topmargin -1mm \marginparwidth 0mm \evensidemargin 1.5 cm \oddsidemargin 1.5 cm \begin{document} \pagestyle{plain} \bibliographystyle{abbrv} \newtheorem{df}{Definition} \newtheorem{th}{Theorem} \title{ \Huge BinProlog 3.45 \\ User Guide \\ \vskip 5cm } \author{ \Large Paul Tarau \\\\ \large Departement d'Informatique \\ Universit\'{e} de Moncton \\ Moncton, Canada, E1A 3E9, \\ tarau@info.umoncton.ca \\ \normalsize } %\date{} \vskip 5cm \maketitle \newpage \section{Installation} \begin{verbatim} EITHER: Edit `Makefile'. Change BINDIR and comment out ARCH_AND_OS, for example: BINDIR = /usr/local/bin ARCH_AND_OS = sparc.sunos then TYPE: make install OR: Copy or symbolically link bin/bp. to `bp' somewhere in your path, then type `bp'. \end{verbatim} Normally the appropriate `wam' (a C-ified self contained executable) or (for some old architectures) typing `ru wam.bp' (possibly a small `bp' shell-script) are all you need to have BinProlog 3.45 running. For DOS/Windows 386/486 PCs you will have to edit \verb~bp.bat~ with your path information and then type \verb~bp~. Something like `go32 ru.386 wam.bp' directly \ in the distribution directory should also work. To start BinProlog use \begin{verbatim} $ bp \end{verbatim} or simply \begin{verbatim} $ bp \end{verbatim} Sizes of the blackboard, heap, stack, trail and code areas can be passed as command line parameters etc, in Kbytes: {\flushleft usage:} [-h heap] [-s stack] [-t trail] [-c code] [-b bboard] [-a 2\^atoms] [-d 2\^hashtable entries] [-i size of IO-buffer] [-q quietness] wamfile (default: wam.bp). \section{Obtaining BinProlog} The ORIGINAL DISTRIBUTION SITE for BinProlog\footnote{BinProlog Copyright $\copyright$ Paul Tarau 1992-94 All rights reserved} is: \begin{verbatim} ftp clement.info.umoncton.ca (139.103.16.2) \end{verbatim} {\flushleft in} the directory: \begin{verbatim} /pub/BinProlog. \end{verbatim} {\flushleft The} ftp server clement.info.umoncton.ca is a Sparcstation ELC with SUNOS 4.1.1). Please send comments and bug reports to {\tt binprolog@info.umoncton.ca.} \section{Introduction to BinProlog} BinProlog has been developped by Paul Tarau mostly at the University of Moncton, Canada, and is based on his BinWAM abstract machine, a specialization of the WAM for the efficient execution of binary logic programs. BinProlog is a fast and small Prolog compiler, based on the transformation of Prolog to binary clauses. The compilation technique is similar to the Continuation Passing Style transformation used in some ML implementations. Although it (used to) incorporate some last minute research experiments, which might look adventurous at the first sight, BinProlog is a fairly robust and complete Prolog implementation featuring both C-emulated execution and generation of standalone applications by compilation to C. Some of its features are: \begin{itemize} \item source-level transformation based stateless module system \item dynamic code, \item intuitionistic and linear implication, \item efficient high-order programming builtins, \item logical global variables, \item backtrackable destructive assignment, \item circular term unification, \item extended DCGs (now built in the engine as `Hidden Accumulator grammars'), \item continuation manipulation primitives, \item a garbage-collected hashing based global dictionnary for constant-time sparse arrays and graphs, \item C-compatible floating point operations, \item a C-interface etc. \end{itemize} New features in added in version 3.30: \begin{itemize} \item source-level modules \item faster compilation to C and faster resulting C-code \item very small (dynamically linked) standalone executables (5K) for Solaris 2.x \item improved (fileevent based) Tcl/Tk interface now running under tcl7.4b2 and tk4.0b2 \item help/1 detecting near-matching predicate definitions \item help warnings for singleton variables \item spy/1 for debugging compiled code \end{itemize} New features in added in version 3.45: \begin{itemize} \item ability to start multiple engines from Prolog or C \item improved C-interface now moved to its own directory {\tt c\_inter} \item one file 32 bit DOS and Windows 3.1 executables (see directory \verb~pc~) \end{itemize} The {\tt bp} command starts the BinProlog toplevel. Prolog sources for the compiler and builtins are in directory {\tt src}. The directories {\tt pl2c and dynpl2c } contain various project (*.pro) files and a makefile for generating a standalone applications through compilation to C. The directory {\tt TCL} contains a bidirectional pipe based BinProlog to Tcl/Tk interface. The directory {\tt cparser} contains Koen De Bosschere's ISO Prolog parser (written in C) and BinProlog standalones based on the parser (cbp.*). The directory {\tt multi} contains Koen De Bosschere's a blackboard based distributed programming extension to BinProlog and BinProlog executables which integrate them (mbp.*). \subsection{Binarization} BinProlog is a small, program-transformation based compiler. Everything is converted to Continuation Passing Binary Clauses: {\flushleft A rule like} \begin{verbatim} a(X):-b(X),c(X,Y),d(Y). \end{verbatim} {\flushleft becomes} \begin{verbatim} a(X,Cont):-b(X,c(X,Y,d(Y,Cont))). \end{verbatim} {\flushleft A} fact like \begin{verbatim} a(13). \end{verbatim} {\flushleft becomes} \begin{verbatim} a(13,Cont):-true(Cont). \end{verbatim} {\flushleft A} predicate using metavariables like \begin{verbatim} p(X,Y):-X,Y. \end{verbatim} {\flushleft becomes} \begin{verbatim} p(X,Y,Cont);-call(X,call(Y,Cont))). \end{verbatim} {\flushleft with} true/1 and call/2 efficient builtins in BinProlog. You can now try out in BinProlog 3.45 your own binary programs by using \verb~::-~ instead of \verb~:-~ so that the preprocessor will not touch them\footnote{Take care if you use your own binary clauses to keep always the continuation as a last argument of the last embedded continuation `predicate'. Look at the asm/0 tracer how BinProlog itself does this.}. Otherwise, from the outside, BinProlog looks like any other Prolog. Binarization allows a significant simplification of the Prolog engine, which can be seen as specialization of the WAM for the execution of Continuation Passing Binary Programs. As a consequence, a very small emulator (about 60K on Solaris) that often fits completely in the cache of the processor, a more efficient new data representation and some low-level optimizations make BinProlog probably the fastest freely available C-emulated Prolog at this time (812 KLIPS on a Sparcstation 20-41). This means 3-5 times faster than C-Prolog, 2-3 times faster than SWI-Prolog, 1.5-2 times faster than (X)SB-Prolog and close to C-emulated Sicstus 2.1. \subsection{Machines supported} This distribution contains the Prolog source of the compiler and executable emulators for: \begin{verbatim} - Sparc - SunOS 4.x, Solaris 2.x; - DEC Alpha - 64 bit - 68k NeXT - Mach; SUN3 - SunOS 4.x - MIPS - DEC and SGI; - IBM R6000; - 386-486-Pentium (MsDOS+Windows - with 32bits DOS-extender go32 ver. 1.10, Linux, FreeBSD). \end{verbatim} {\flushleft As} the implementation makes no assumption about machine word size it is likely to compile even on very strange machines that have a C-compiler. BinProlog's integers are inherited from the native C-system. For example on DEC ALPHA machines BinProlog has $64-3=61$ bit integers. On 32-bit systems it has $32-2=30$ bit integers. Floating point is double (64 bits) and it is guaranteed that computations in Prolog will always give the same results as in the underlying C. As a matter of fact BinProlog does not really know that it has floats but how this happens is rather long to explain here. \section{Using BinProlog} BinProlog uses R.A. O'Keefe's public domain tokeniser and parser and write utilities (see the files read.pl, write.pl), DCGs and a transformer to binary programs. It compiles itself in less than 1 minute on a Sparcstation 10-40. The system has very fast (heap-based) {\tt copy\_term/2}, {\tt findall/3} and {\tt findall/4} predicates, floating point, global logical variables, but still lacks full garbage collection. A new term compression technique \cite{TN94:PLILP} (joint work with Ulrich Neumerkel) reduces heap-consumption and adds some extra speed . Ulrich's iterative {\tt copy\_term/2} algorithm further accelerates BinProlog's `copy-once' heap-based {\tt findall/3} and {\tt findall/4} so that findall-intensive programs may run 2-3 times faster in BinProlog than in other (even native code) implementations. All data areas are now user configurable, and all except the heap are garbage collected. A garbage collector for the heap will be released soon. Although other Prolog's assert and retract primitives are emulated in BinProlog, their functionality has been decomposed in separate simpler operations that give also improved efficiency. For permanent information BinProlog has a new, garbage-collected data area, the {\em blackboard}, where terms can be stored and accessed efficiently with a a 2-key hashing function using something like \begin{verbatim} ?-bb_def(likes,joe,[any(beer),good(vine),vegetarian(food)]). \end{verbatim} and updated with something like \begin{verbatim} ?-bb_set(likes,joe,nothing). \end{verbatim} or \begin{verbatim} ?-bb_rm(likes,joe). \end{verbatim} To get its value: \begin{verbatim} ?-bb_val(likes,joe,What). \end{verbatim} BinProlog 3.45 has also backtrackable global variables, with 2-keyed names. Try: \begin{verbatim} ?- Person=joe, friend#Person:=:mary, bb. \end{verbatim} and then \begin{verbatim} ?- friend # joe:=:X. \end{verbatim} The blackboard can be used either directly or through an assert-retract style interface. {\em A small exercise:} if you want backtrackable behaviour of assert and retract you can modify extra.pl and use \verb~A#B:=:X~ style global variables in their definition, instead of {\tt bb\_def/3} etc. The blackboard also gives constant-time sparse arrays and lemmas. For example try: \begin{verbatim} ?- for(I,1,99),bb_def(table,I,f(I,I)),fail. ?- bb. \end{verbatim} BinProlog 3.45 has Edinburgh behaviour and tries to be close to Sicstus and Quintus Prolog on the semantics of builtins without being too pedantic on what's not really important. All the basic Prolog utilities are now supported (dynamic clauses, a metainterpreter with tracing facility, sort, setof, dynamic operators floating point operations and functions). A fast deterministic append \verb~det_append/3 (i,i,o)~ has been added. Naive reverse using \verb~det_append/3~ makes more than 3 MegaLIPS on a Sparc 20-41 (a 3-times speed-up). Almost all the builtins are now expanded inline resulting in improved heap consumption and performance. A few programs (an automatic Tetris player, a knight-tour, an OR-parallel simulator, Fibonacci, Tak with lemmas, a small neural-net simulator backprop.pl) illustrate some of the new features. A few well-known benchmarks have been added to help compare BinProlog with other implementations. BinProlog has supported from start 30 bit integer arithmetic. Now it has also {\em floating point operations} and functions like sin, cos, tan, log, exp, pow, etc. They can be used either through the is/2 interface\footnote{Is/2 now accepts execution of any predicate of arity $n+1$ as a function of arity $n$.}: \begin{verbatim} ?- X is cos(3.14)+sin(0). \end{verbatim} or in relational form \begin{verbatim} ?- cos(1,X). \end{verbatim} Note that you should use something like \verb~Y=3+4, X is 1+expr(Y)~ instead of \verb~Y=3+4, X is 1+Y~ which will not work in compiled code. Floating point has the same precision and semantics as the type double in C. Floating point operations are close in speed to emulated Sicstus. To try them out use the toy neural-network simulator \verb~backprop.pl.~ This program uses also constant time arrays and is therefore unusually fast compared to its execution in other Prologs like Quintus or Sicstus. \subsection{The interactive toplevel shell} To see the command line options: \verb~ $ bp -help~ {\flushleft To} compile and load \verb~~ or \verb~.pl~ or \verb~.pro~: \verb~ ?-[].~ {\flushleft BinProlog} searches them in the directories {\tt ., ./progs} and {\tt ../src ../library}, relative to the {\tt BP\_PATH} environment variable which defaults silently to the current directory if undefined. The dirctory {\tt ./myprogs} is also searched for possible user programs. While compatible to previous configurations which where single user minded, this allows installing the BinProlog distributon for shared use in a place like {\tt /usr/local/BinProlog}~\footnote{This is usually better to be left to a system person who also can ensure that users inherit the {\tt BP\_PATH} environment variable. An individual user can also put something like {\em setenv BP\_PATH /usr/local/BinProlog} his or her {\tt .cshrc} or {\tt .login} file, to access the shared BinProlog programs.} \subsection{Using multiple logic engines} A new (experimental) feature added starting with version 3.39 alows launching multiple Prolog engines having their own stack groups (heap, local stack and trail). An engine can be seen as an abstract data-type which produces a (possibly infinite) stream of solutions as needed. To create an engine use: \begin{verbatim} % :-mode create_engine(+,+,+,-). create_engine(HeapSize,StackSize,TrailSize,Handle) \end{verbatim} The Handle is a unique integer denoting the engine for further processing. To `fuel' the engine with a goal and an expected answer variable do: \begin{verbatim} % :-mode load_engine(+,+,+). load_engine(Handle,Goal,AnswerVariable) \end{verbatim} No processing except the initialization of the engine takes place and no answer is returned with this operation. Think about it as simply puting gas in your car. To get an answer from the engine do: \begin{verbatim} % :-mode ask_engine(+,-). ask_engine(Handle,Answer) \end{verbatim} If you want to keep the answer for further processing before asking for the next one, use \verb~copy_term/2~ as the original will go away as the engine backtracks. Note that nothing nasty (as unsafe references to dead heap cells) happens even if you forget to do this, except that the bindings in the `master' engine will be undone. When the stream of answers reaches its end, \verb~ask_engine/2~ will simply fail. If for some reasons you are not interested in the engine anymore, do \begin{verbatim} % :-mode destroy_engine(+). destroy_engine(Handle) \end{verbatim} {\flushleft to} free the data areas alocated for the engine. If you want to submit another query before using the complet stream of answers, it is more efficient to reuse an existing engine with \verb~load_engine/3~, instead of destroying it and creating a new one. Try out the following example (see more in files {\tt library/engines, progs/engtest.pl}): \begin{verbatim} ?-create_engine(256,64,64,E), load_engine(E,append(As,Bs,[A,B,B,A]),As+Bs), ask_engine(E,R1),write(R1),nl, ask_engine(E,R2),write(R2),nl, load_engine(E,member(X,[1,2,3]),X), ask_engine(E,R3),write(R3),nl, ask_engine(E,R4),write(R4),nl, destroy_engine(E). \end{verbatim} As engines will be assigned to real processors in future multi-threaded implementations this reusability of a given engine for execution of multiple goals is intended to allow precise control to the programmer over the resurces of a system. Preemptive multitasking handled either with thread libraries, when available and efficient, or by BinProlog itself otherwise, is planned in the near future. This `super-scalar' performance improvement can already be tested with the companion (Solaris 2.x only) Linda implementation in directory \verb~multi~ (see file \verb~multi/myprogs/mcolor.pl~). If an engine fails due to the overflow of a given data area, it will warn you and fail. The warnings are disabled with quietness levels higher than 6 (command line switch \verb~-q6~). This allows use of engines to quietly recover from ressource errors. For owners of BinProlog's C-source licenses, C-functions with similar names and semantics as the predicates described in this section are available to allow embedding of multiple independent Prolog engines in their C-applications. \subsection{Using multiple engines} The file {\tt library/engines.pl} contains som examples of how multiple engines can be used for implementing for instance all-solution predicates. Here is a re-entrant \verb~find_all/3~. \begin{verbatim} find_all(X,Goal,Xs):- default_engine_params(H,S,T), find_all(H,S,T,X,Goal,Xs). find_all(H,S,T,X,Goal,Xs):- create_engine(H,S,T,Handle), load_engine(Handle,Goal,X), collect_answers(Handle,Xs), destroy_engine(Handle). collect_answers(Handle,[X|Xs]):-ask_engine(Handle,A),!, copy_term(A,X), collect_answers(Handle,Xs). collect_answers(_,[]). default_engine_params(128,32,32). \end{verbatim} A more interesting application is based on the synergy between intuitionistic and linear implication and their continuation passing couterparts assumei/1 and assume/0 and multiple engines. The following extension is available with \verb~:-[library(enines)]~. The concrete syntaxe is Answer<=Producer=>Consumer or Answer<=Producer when the Consumer is the (implicit) current AND-continuation. Producer is started on a separate engine. It produces linear facts of the form Answer, from computed answers of Goal, originating fro {\em distinct OR-branches}. They are usable by Consumer as if they were assumed through use of linear implication, i.e. they are consumed one-by-one. This hides the intricacies of starting a new `orthogonal' logic engine into a simple, easy to use abstraction. The actual implementation follows (see also file {\tt library/engines.pl}): \begin{verbatim} % executes Producer on an `orthogonal' OR-engine Answer<=Producer=>Consumer:-!, % the consumer is explicit cross_run(Producer,Answer,Consumer). Answer<=Producer:- % the consumer is in the `future' cross_run_with_current_continuation(Producer,Answer). cross_run(Producer,Answer,Consumer):- default_engine_params(H,S,T), cross_run(H,S,T,Producer,Answer,Consumer). cross_run(H,S,T,Producer,Answer,Consumer):- compound(Answer),copy_term(Answer,A), new_engine(H,S,T,Producer,Answer,Handle), (A:-ask_or_kill(Handle,A))=>Consumer, destroy_engine(Handle). cross_run_with_current_continuation(Producer,Answer):- default_engine_params(H,S,T), cross_run_with_current_continuation(H,S,T,Producer,Answer). cross_run_with_current_continuation(H,S,T,Producer,Answer):- compound(Answer),copy_term(Answer,A), new_engine(H,S,T,Producer,Answer,Handle), assumei((A:-ask_or_kill(Handle,A))). ask_or_kill(Handle,Answer):-ask_engine(Handle,Answer),!. ask_or_kill(Handle,_):-destroy_engine(Handle),fail. new_engine(H,S,T,Goal,Answer,Handle):- create_engine(H,S,T,Handle), load_engine(Handle,Goal,Answer). % overridable default engine sizes for heap,stack,trail default_engine_params(H,S,T):-assumed(engine_params(H,S,T)),!. default_engine_params(128,32,32). \end{verbatim} The following example shows how and OR-stream of answers seen as linear assumptions from an `orthogonal' engine can be used in and AND-branch. \begin{verbatim} ?- a(X)<=member(X,[1,2,3])=>(a(A),a(B),a(C),write([A,B,C]),nl). [1,2,3] \end{verbatim} If found interesting, a trully parallel, highly efficient implementation will be made available in future releases. The same abstraction is already supported in the companion Multi-BinProlog engine, through use of real Solaris 2.4 threads (see file {\tt multi/myprogs/ortho.pl}). On multiple processor Sparcs this extension should allow super-linear speed-up, in the hands of a good programmer, as the answer is speculatively computed in parallel with the computations performed by {\tt Consumer}. We have verified that when multiple processors are available, Multi-BinProlog background processes will tend to execute on different processors, with super-linear speed-up (see file multi/myprogs/mcolor.pl and scripts {\tt seq} and {\tt par} in the same directory). \subsection{Real standalone applications through compilation to C} Starting with version 3.30 it is possible to separately compile user applications and just link them with the emulator library and the C-ified compiler (see directory \verb~pl2c~). This allows creation of a fully C-ified application in a few seconds. Just type \verb~make PROJ=queens~ in directory \verb~pl2c~. The standalone application \verb~queens~ is ready to be executed by typing \verb~queens~. The generated C-code can be seen in files \verb~queens.h~ and \verb~queens.c~. Moreover, on systems with dynamic linking like Solaris 2.x true executables of size starting at about 6K can be created starting with version 3.30 (see directory \verb~dynpl2c~). If you define a predicate \verb~main/0~ then your executable will start directly from there instead of the usual interactive top-level. Calling it with a high quietness-level (i.e. command line switch \verb~-q5~) will suppress warnings and unwanted messages. \subsection{Unix pseudo-executables} The following still works, although the new C-ification technique (see directories pl2c, dynpl2c) can now create true one-file standalones. {\flushleft It} is possible to create (as in the past) a small runtime application (called "newappl.bp"), from \verb~.pl~ as follows: \begin{verbatim} ?-make_appl('.pl'). \end{verbatim} {\flushleft Deliver} the appropriate "bp" file (the Prolog engine) with your application. The user must type: \verb~ $ bp newappl.bp~ {\flushleft to} start it. {\flushleft Note:} the file must contain a clause \begin{verbatim} main(X):-... \end{verbatim} {\flushleft That's} where execution starts. BinProlog's shell is nothing but such an application which starts with a toplevel loop i.e. something like: \begin{verbatim} main(X):-toplevel(X). \end{verbatim} {\flushleft As} a new feature, you can override this behaviour, even for the standard BinProlog system containing the predicate \verb~main/1~ (which starts the interactive top-level), by defining a predicate \verb~main/0~ in your program file. In this case, \verb~main/0~ becomes the new starting point. You can also generate (on UNIX systems) stand-alone executables that dynamically start the emulator (thanks to Peter Reintjes for suggesting this). You can do something like: \begin{verbatim} % FILE: hello.pl main(true):-write(hello),nl. % DO: % ?-make_executable_unix_appl( % '/usr/local/bin/bp -q5', % AbsolutePathToEmulator (q=quietness) % 'hello.pl', % SourceFile % hello). % ExecutableFile \end{verbatim} In the case of the "hello.pl" program, the user must type, at the Unix prompt: \verb~ $ hello~ {\flushleft to} start it. {\flushleft The} code of this primitive is at the end of the file \verb~co.pl~. Again, we recommend using the C-ification technique which can already speed up most applications and in the future will generate very fast code competitive with native code compilers. {\flushleft You} can bootstrap the compiler, after modifying the \verb~*.pl~ files by: \begin{verbatim} ?- boot. ?- make. \end{verbatim} or, similarly for any other project having a top \verb~*.pro~ file: \begin{verbatim} ?-make(ProjectFile). ?-make(ProjectFile,Module). \end{verbatim} or \begin{verbatim} ?-cmake(ProjectFile). ?-cmake(ProjectFile,Module). \end{verbatim} if you intend to generate C-code and possibly hide non-public predicates inside a module. {\flushleft This} allows to integrate your preferences and extensions written in Prolog to the BinProlog kernel. {\em {\flushleft Make} sure you keep a copy the original {\em wam.bp} in a safe place, in case things go wrong when you type} \verb~?-boot.~ \subsection{Some limitations/features of BinProlog} We passed Occam's razor on a few "features" of Prolog that are obsolete in modern programming environments and on some others that are, in our opinion, bad software practice. Only one file at a time can be compiled in the interactive environment: \begin{verbatim} ?-[myfile]. \end{verbatim} or \begin{verbatim} ?- compile(myfile). \end{verbatim} Now BinProlog supports an include directive: \begin{verbatim} :-[include1]. :-[include2]. .... \end{verbatim} This suggest to make a project \verb~(*.pro)~ file using a set of include directives each refereing to a \verb~*.pl~ file. When compiled to a file (by using the \verb~?-make(MyProject)~ command) a make-like memoing facility will avoid useless recompilation of the included \verb~(*.pl)~ files by creation of precompiled \verb~(*.wam)~ files. For large projects this is the recommended technique. Creation of C-ified standalone files is also possible (see the \verb~pl2c~ directory). {\flushleft Programs} that work well can be added to the BinProlog kernel. This avoids repeated recompilation of working code and predicates in the kernel are protected against name clashing. New programs can be loaded in the interactive environment. When they work well, they migrate to the kernel. You can prepare a good Makefile to automate this job. When everything is OK you can deliver it as a run-time-only application. Releases after 3.30 contain a basic make facility which avoids to recompile included \verb~*.pl~ files when a newer \verb~*.wam~ file exists. Programs are searched with suffixes {\tt "", ".pl", ".pro"} in the directories {\tt ., ./progs and ./myprogs}. There's no limit on the number of files you can compile to disk: \begin{verbatim} ?- compile(wam,[file1,file2,...],'application.bp'). \end{verbatim} Now BinProlog does implement consult/1, reconsult/1 and listing/0 for interpreted code but use of compile/1 is highly recommended instead. See the file extra.pl for the implementation. Faster than asserted code is so called assumed code (see the next sections) i.e. intuitionistic and linear implication. {\flushleft Here} are some other limitations/features: \begin{itemize} \item Clauses of a predicate must be grouped. \item Clauses having undefined predicates occurring right after the head are rejected. \item ARITY is limited to 255. \item The heap garbage collector is not yet implemented, but we plan to add it soon. However, the blackboard, dynamic code space, the string space and the hashing table ARE garbage collected before loading a new program. \end{itemize} {\flushleft Mode} is interactive by default (for compatibility with other Prologs) but if you use a modern, windows based environment you may want to switch it off with: \begin{verbatim} ?- interactive(no). \end{verbatim} {\flushleft or} turn it on again with \begin{verbatim} ?- interactive(yes). \end{verbatim} \subsection{Other BinProlog goodies and new predicates} A few BinProlog specific predicates are available: \begin{itemize} \item {\tt restart/0} - cleans every data area \item {\tt cwrite/1} - fast but restricted write \item {\tt symcat/3 (i,i,o)} returns a new symbol of the form \verb~_.~ \item {\tt gensym/2 (i,o)} forms a new name of the form \verb~_.~ \item \verb~sread/2 (i,o)~ reads from a name a (ground) term, \verb~swrite(i,o)~ writes a term to a name. \item term \verb~termcat/3 (i,i,o)~ adds its second argument as last argument of its first argument and returns the new term \item {\tt term\_chars/2} converts between a ground term and its string representation \item \verb~not/1~ is a form of sound negation \item \verb~for/3~ as for instance in \verb~?-for(I,1,5),write(I),nl,fail~ generates a failure driven loop \end{itemize} It is a good idea to take a look at BinProlog's \verb~*.pl~ for other builtin-or-library predicates before implementing them yourself. The file \verb~write.pl~ contain various output predicates like \begin{itemize} \item write/1 \item writeq/1 \item portray\_clause/1 \item print/1 \item display/1 \item ttyprint/1 \item ttynl/1 \end{itemize} {\flushleft You} can extend BinProlog by adding new predicates to the file extra.pl and then use the predicate {\tt boot/0} defined in the file co.pl. \subsection{Efficient findall based meta-programming} BinProlog's {\tt findall/3} is so efficient that you can afford (with some care) to use it instead of explicit (and more painful) first-order programs as in: \begin{verbatim} % maplist with findall maplist(Closure,Is,Os):- Closure=..L1, det_append(L1,[I,O],L2), P=..L2, findall(O,map1(P,I,Is),Os). map1(P,I,Is):-member(I,Is),P. \end{verbatim} This can be used as follows: \begin{verbatim} ?- maplist(+(1),[10,20,30],T). => T=[11,21,31] \end{verbatim} Note that constructing {\tt Closure} only once (although this may not be in any Prolog text-book!) is more efficient than doing it at each step. The predicate {\tt gc\_call(Goal)} defined in the file {\tt lib.pl} executes Goal in minimal space. It is explained in the Craft of Prolog by R.A. O'Keefe, MIT Press. Do not hesitate to use it. BinProlog offers a very fast, heap-oriented findall, so you can afford to use {\tt gc\_call}. In good hands, it is probably faster than using assert/retract or the usual mark-and-sweep garbage collector of other implementations. \subsection{Builtins} The following (user-level) builtins are supported, with semantics (intended to be) close to SICSTUS and QUINTUS Prolog. \begin{verbatim} fail/0 nl/0 var/1 nonvar/1 integer/1 atomic/1 +/3 % arithmetic offers also the usual is/2 interface -/3 * /3 // /3 mod/3 << /3 >> /3 /\ /3 \/ /3 # /3 % bitwise XOR \ /3 % bitwise NOT random/1 % returns an integer, not a float get0/1 put/1 < /2 > /2 =< /2 >= /2 =:= /2 =\= /2 compare/3 seeing/1 seen/0 telling/1 told/0 copy_term/2 functor/3 arg/3 name/2 abort/0 is_compiled/1 % checks if a predicate is compiled \end{verbatim} {\flushleft Other} useful predicates are defined in the file lib.pl and work as expected. \begin{verbatim} true/0, =/2, .. -> .. ; .. ;/1 call/1 \+/1 repeat/0 findall/3 findall/4 for/3 numbervars/4 see/1 tell/1 system/1 statistics/0 statistics/2 atom/1 compound/1 =../2 length/2 tab/1 get/1 == /2 \== /2 A @< B A @> B A @=< B A @>= B compile/1 - see co.pl for the compiler read/1 - see the file: read.pl write/1 - see the file: write.pl halt/0, halt(ReturnCode), listing/0, % only for interpreted code listing(Pred,Arity), assert/1, asserta/1, assertz/1, retract/1, retractall/1 erase/1, dynamic/1, instance/2, clause/2, clause/3, consult/1, % usable for debugging or dynamic code reconsult/1, % they override compiled definitions !!! setof/3, bagof/3, sort/3, keysort/3, setarg/3, % backtrackable update of arg I of term T with new term X is_builtin/1 % lists the system-level builtins (written in C): current_predicate/1 % lists/checks existence of a predicate/arity predicate_property/2 % lists/checks if a property (arg 2) is associated with a head (arg 1) \end{verbatim} {\flushleft Operators} are defined and retrieved with \begin{verbatim} :-op/3, current_op/3. \end{verbatim} Including files are supported. For {\tt compile/1} use \begin{verbatim} :-compile(file). \end{verbatim} or \begin{verbatim} :-[file]. % this calls the compiler too !!! \end{verbatim} For consulting included interpreted code within an embedding reconsult/1 use: \begin{verbatim} :-consult(file). \end{verbatim} {\flushleft in} your (unique) top-level file. This overcomes the limitation of having only one top-level file. \section{Source-level stateles modules} \begin{verbatim} (module)/1 current_module/1 is_module/1 - checks/generates an existing module-name module_call/2, ':'/2 - calls a predicate hidden in a module module_name/3 - adds the name of a module to a symbol module_predicate/3 - adds the name of a module to a goal modules/1 - gives the list of existing modules \end{verbatim} The following example: \begin{verbatim} :-module m1. :-public d/1. a(1). a(2). a(3). a(4). d(X):-a(X). :-module m2. :-public b/1. b(X):-c(X). c(2). c(3). c(4). c(5). c(6). :-module m3. :-public test/1. test(X):-b(X),d(X). :-module user. go:-modules(Ms),write(Ms),nl,fail. go:-test(X),write(X),nl,fail. \end{verbatim} Executiong \verb~?-go.~ will generate the following output: \begin{verbatim} [user/0,m1/0,m2/0,m3/0] 2 3 4 \end{verbatim} Starting with version 3.30, predicates in the BinProlog system itself which are not intended to be used by applications, are hidden in the module \verb~prolog~ but can be accessed by calling them with \verb~'prolog:my_predicate'(...)~. Explicit naming of the module where the hidden predicate is defined should be used when call/1, findall/3 etc. uses a hidden predicate, even if it is in the module itself. This draconian constraint is motivated by simplicity of BinProlog's stateless purely source-level module system. Basically predicates in a module have their names prefixed as in \verb~'my_current_module:my_predicate'~ in a preprocessing step, except if they are declared \verb~public~ or are known to the system as being so (i.e. in the case of builtins). This basic concept of modules (essentially the same as what can be achieved with \verb~extern~ and \verb~static~ declarations in C) covers only compiled code, and is mostly intended to ensure multiple name spaces with a very simple semantics and no aditional space or time overhead. On the other hand use of linear and intutionistic implication is suggested for dynamic modular and hypothetical reasoning constructs. {\em Meta-predicate} declarations are not supported at this time (mostly because they are at least as cumbersome as just puting the right name extension in argument positions which require it \verb~:-)~), but they might be added in the future if a significant number of users will ask to have them. Note that builtins and predicates defined in a special module \verb~user~ are always public. A public predicate keeps its name unchanged in the global name space while hidden predicates have their names prefixed by the name of the module in their definitions and in all their statically obvious (first-order) uses. Alternatively, {\tt module/2} allows to define a module and its public predicates with one declaration as in: \begin{verbatim} :-module(beings,[cat/4,dog/4,chicken/2,fish/0,maple/1,octopus/255]). \end{verbatim} \section{Editing, apropos/1, trace/1, spy/1, nospy/1} To edit a file and then compile it use: \verb~?- edit(,).~ To edit and recompile the currently compiled file using the \verb~emacs~ editor type: \verb~?- ed.~ To edit and recompile the currently compiled file using the \verb~edit~ editor (under DOS) type: \verb~?- edit.~ To simply recompile the last file type: \verb~?- co.~ {\flushleft The debugger/tracer} uses R.A. O'Keefe's public domain meta-interpreter. You can modify it in the file "extra.pl". {\flushleft DCG-expansion} is supported by the public domain file dcg.pl. To debug a file type: \begin{verbatim} ?- reconsult(FileName). \end{verbatim} {\flushleft and then} \begin{verbatim} ?- trace(Goal). \end{verbatim} {\flushleft For} interactivity, both the toplevel and the debugger depend on \begin{verbatim} ?-interactive(yes). \end{verbatim} {\flushleft or} \begin{verbatim} ?-interactive(no). \end{verbatim} {\flushleft My personal preference is using} \verb~interactive(no)~ within a scrollable window. However, as traditionally all Prologs hassle the user after each answer BinProlog 3.45 will do the same by default. If you forget the name of some builtin, {\tt apropos/1} (or {\tt help/1}) will give you some (flexible up to one misspelled or missing letter) matches with their arities. You can use the debugger to debug compiled code with the following trick if you always debug bottom-up i.e. if you ensure that tools work before to using them. For example, on top of the compiled file \verb~allperms.pl~ you can temporarily interpret {\tt perm/2}, {\tt insert/3} etc. to be able to trace them while keeping uninteresting predicates compiled. By the way, this allows, to trace/debug parts of the kernel itself in particular. The following terminal session shows an example: \begin{verbatim} ?- [allperms]. compiling(to(mem),progs/allperms.pl,...) compile_time(230) ?- consult(user). % using compile/1 is MUCH faster reconsulting(user) g0(N):-nats(1,N,Ns),perm(Ns,_),fail. g0(_). WARNING: redefining compiled predicate(g0/1) perm([],[]). perm([X|Xs],Zs):- perm(Xs,Ys), insert(X,Ys,Zs). insert(X,Ys,[X|Ys]). insert(X,[Y|Ys],[Y|Zs]):- insert(X,Ys,Zs). WARNING: redefining compiled predicate(perm/2) WARNING: redefining compiled predicate(insert/3) reconsulted(user,time = 20) yes ?- interactive(no). yes ?- trace(g0(3)). Call: g0(3) Call: nats(1,3,_645) compiled(nats(1,3,_645)) Exit: nats(1,3,[1,2,3]) Call: perm([1,2,3],_648) Call: perm([2,3],_1095) Call: perm([3],_1362) Call: perm([],_1629) Exit: perm([],[]) Call: insert(3,[],_1362) Exit: insert(3,[],[3]) Exit: perm([3],[3]) Call: insert(2,[3],_1095) Exit: insert(2,[3],[2,3]) Exit: perm([2,3],[2,3]) Call: insert(1,[2,3],_648) Exit: insert(1,[2,3],[1,2,3]) Exit: perm([1,2,3],[1,2,3]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[1,2,3]) Redo: insert(1,[2,3],[1,2,3]) Call: insert(1,[3],_2683) Exit: insert(1,[3],[1,3]) Exit: insert(1,[2,3],[2,1,3]) Exit: perm([1,2,3],[2,1,3]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[2,1,3]) Redo: insert(1,[2,3],[2,1,3]) Redo: insert(1,[3],[1,3]) Call: insert(1,[],_2945) Exit: insert(1,[],[1]) Exit: insert(1,[3],[3,1]) Exit: insert(1,[2,3],[2,3,1]) Exit: perm([1,2,3],[2,3,1]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[2,3,1]) Redo: insert(1,[2,3],[2,3,1]) Redo: insert(1,[3],[3,1]) Redo: insert(1,[],[1]) Fail: insert(1,[],_2945) Fail: insert(1,[3],_2683) Fail: insert(1,[2,3],_648) Redo: perm([2,3],[2,3]) Redo: insert(2,[3],[2,3]) Call: insert(2,[],_2421) Exit: insert(2,[],[2]) Exit: insert(2,[3],[3,2]) Exit: perm([2,3],[3,2]) Call: insert(1,[3,2],_648) Exit: insert(1,[3,2],[1,3,2]) Exit: perm([1,2,3],[1,3,2]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[1,3,2]) Redo: insert(1,[3,2],[1,3,2]) Call: insert(1,[2],_2945) Exit: insert(1,[2],[1,2]) Exit: insert(1,[3,2],[3,1,2]) Exit: perm([1,2,3],[3,1,2]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[3,1,2]) Redo: insert(1,[3,2],[3,1,2]) Redo: insert(1,[2],[1,2]) Call: insert(1,[],_3207) Exit: insert(1,[],[1]) Exit: insert(1,[2],[2,1]) Exit: insert(1,[3,2],[3,2,1]) Exit: perm([1,2,3],[3,2,1]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[3,2,1]) Redo: insert(1,[3,2],[3,2,1]) Redo: insert(1,[2],[2,1]) Redo: insert(1,[],[1]) Fail: insert(1,[],_3207) Fail: insert(1,[2],_2945) Fail: insert(1,[3,2],_648) Redo: perm([2,3],[3,2]) Redo: insert(2,[3],[3,2]) Redo: insert(2,[],[2]) Fail: insert(2,[],_2421) Fail: insert(2,[3],_1095) Redo: perm([3],[3]) Redo: insert(3,[],[3]) Fail: insert(3,[],_1362) Redo: perm([],[]) Fail: perm([],_1629) Fail: perm([3],_1362) Fail: perm([2,3],_1095) Fail: perm([1,2,3],_648) Redo: nats(1,3,[1,2,3]) Fail: nats(1,3,_645) Exit: g0(3) \end{verbatim} Starting with version 3.08 spy/1 and nospy/1 allow to watch entry and exit from compiled predicates. Note that they should be in the file to be compiled, before any use of the predicate to be spied on as in: \begin{verbatim} % FILE: jbond.pl :-spy a/1. :-spy c/1. b(X):-a(X),c(X). a(1). a(2). c(2). c(3). \end{verbatim} {\flushleft This} gives the following interaction: {\small \begin{verbatim} ?-[jbond]. ...... ?- b(X). Call: a(_2158) : ; !!! compiled(a/1) Exit: a(1) Call: c(1) : ; !!! compiled(c/1) Fail: c(1) Redo: a(1) Exit: a(2) Call: c(2) : ; !!! compiled(c/1) Exit: c(2) X=2; Redo: c(2) Fail: c(2) Redo: a(2) Fail: a(_2158) no \end{verbatim}} {\flushleft Although} these are very basic debugging facilities you can enhance them at your will and with some discipline in programming they may be all you really need. Anyway, future of debugging is definitely not by tracing. One thing is to have stronger static checking. In dynamic debugging the way go is to have a database of trace-events and then query it with high level tools. We plan to add some non-tracing database-oriented debugging facilities in the future. {\flushleft You} can generate a kind of intermediate WAM-assembler by \begin{verbatim} ?- compile(asm,[file1,file2,...],'huge_file.asm'). \end{verbatim} {\flushleft A} convenient way to see interactively the sequence of program transformations BinProlog is based on is: \begin{verbatim} ?- asm. a-->b,c,d. ^D DEFINITE: a(A,B) :- b(A,C), c(C,D), d(D,B). BINARY: a(A,B,C) :- b(A,D,c(D,E,d(E,B,C))). WAM-ASSEMBLER: clause_? a,3 firstarg_? _/0,6 put_structure d/3,var(4-4/11,1/2) write_variable put,var(5-5/10,1/2) write_value put,var(2-2/6,2/2) write_value put,var(3-3/7,2/2) put_structure c/3,var(3-8/14,1/2) write_variable put,var(2-9/13,1/2) write_value put,var(5-5/10,2/2) write_value put,var(4-4/11,2/2) execute_? b,3 \end{verbatim} \section{Compiling to C} Partial C-ification \cite{tdb95} is a translation framework which `does less instead of doing more' to improve performance of emulators close to native code systems. Starting from an emulator for a language L written in C, we translate to C a subset of its instruction set (usually frequent and fine-grained instructions which are executed in contiguous sequences) and then simply use a compiler for C to generate a unique executable program. A translation threshold allows the programmer to empirically fine-tune the C-ification process by choosing the length of the emulator instruction sequence, starting from which, translation is enabled. The process uses a reasonable default value and can be easily controlled by the programmer \begin{verbatim} :-set_c_threshold(Min,Max). \end{verbatim} will ensure that only emulated sequences of length between Min and Max get translated to C. This allows to handle gracefully the size/speed tradeoff. Communication between the run-time system (still under the control of the emulator) and the C-ified chunks is handled as follows. The emulated code representation of a given program (in particular the compiler itself) is mapped to a C data structure which allows exchange of symbol table information at link time. To be able to call a C-routine from the emulator we have to know its address. Unfortunately, the linker is the only one that knows the eventual address of a C-routine. A simple and fully portable technique to plug the address of a C-routine into the byte code is to C-ify the byte-code of the emulator into a huge C array of records, containing the symbolic address of the C-chunks. After compilation, and linking with the emulator, the linker will automatically resolve all the missing addresses and generate warnings for the missing C-routines. This is compiled together with the C-code of the emulator to a stand alone executable with performance in the range between pure emulators and native code implementations. The method ensures a strong operational equivalence between emulated and translated code which share exactly the same observables in the run-time system. An important characteristic is easy debugging of the resulting compiler, coming from the full sharing of the run-time system between emulated and compiled code and the following property we call {\em instruction-level compositionality}: if every translated instruction has the same observable effect on a (small) subset of the program state (registers and a few data areas) in emulated and translated mode, then arbitrary sequences of emulated and translated instructions are operationally equivalent. Currently C-ification covers term creation on the heap and frequently used inline operations which can be processed in Binary Prolog before calling the `real goal' in the body. Chunks containing small built-ins that do not require a procedure call will generate `leaf-routines' in C (which are called efficently and do not use stack space). On the other hand large built-ins implemented as macros in the emulator would make code size explode. Implementing them as functions to be called from the C-chunk would require code duplication and it would destroy the leaf-routine discipline which is particularly rewarding on Sparcs. We have chosen to implement them through an abstraction with a coroutining flavor: {\em anti-calls}. Note that calling a built-in from a C-chunk is operationally equivalent to the following sequence: \begin{itemize} \item return from the chunk, \item execute the built-in in the emulator (usually a macro), \item call a new leaf-routine to resume the work left from the previous leaf-routine. \end{itemize} Overall, anti-calls can be seen as form of coroutining (jumping back and forth) between native and emulated code. Anti-calls can be implemented with the direct-jump technique even more efficiently, although for portability reasons we have chosen a conventional return/call sequence, which is still fairly efficient as a return/call costs the same as a call/return. Moreover, this allows the chunks to remain leaf-routines, while delegating overflow and signal handling to the emulator. Note that excessively small chunks created as result of anti-calls are removed by an optimizing step of the compiler with the net result that such code will be completely left to the emulator. This is of course {\em more compact} and provable to be {\em not slower} than its fully C-expanded alternative. \subsection{Performance of C-ified code} The speed-up clearly depends on the amount of C-ification and on the statistical importance of C-ified code in the execution profile of a program (see figure~\ref{bm}). We have noticed between 10-20\% speed increase for programs which take advantage of C-ified code moderately, As these programs spend only 20-30\% of their time in C-ified sequences performances are expected to scale correspondingly when we extend this approach to the full BinProlog instruction set and implement low-level gcc direct jumps instead of function calls and anti-calls. \begin{figure} \begin{center} \begin{tabular}{||l||r|r||r|r||} \hline \hline \multicolumn{1}{|c|}{{\em Bmark/Compiler}} & \multicolumn{1}{c|}{emBP} & \multicolumn{1}{c|}{C-BP} & \multicolumn{1}{c|}{emSP} & \multicolumn{1}{c|}{natSP} \\ \hline \hline NREV (KLIPS) & 445 &455 &412 &882 \\\hline CAL (ms) & 490 &310 &590 &310 \\\hline FIBO (ms) & 1730& 1320 &1400 &800 \\\hline TAK (ms) & 610 &470 &400 &180 \\\hline SEMI3 (ms) & 1810 &1410 &1810 &1310 \\\hline QUEENS (ms) & 3170 &2220 &2840 &1070 \\\hline \hline \hline \end{tabular} \\ \medskip \caption{Performance of emulated (emBP) and partially C-ified BinProlog 3.22 (C-BP) compared to emulated (emSP) and native (natSP) SICStus 2.1\_9 on a Sparc 10/20). \label{bm}} \end{center} \end{figure} Code-sizes for C-ified BinProlog executables (dynamically linked on Sparcs with Solaris 2.3) are usually even smaller than `compact' Sicstus code which uses classical instruction folding (a few hundreds of opcodes) to speed-up the emulator. The following table shows some code-size/execution-speed variations with respect to the threshold for the semi-ring ({\tt SEMI3}) benchmark. Clearly, excessively small chunks can influence adversely not only on size but also on speed. Something like threshold=20, looks like a practical optimum for this program. {\small \begin{verbatim} threshold: 0 4 8 20 30 1000 emBP emSP natSP size: (K) 34.5 32.2 29.9 16.3 13.1 12.9 4.8 22.0 31.9 speed: (ms) 1480 1430 1440 1450 1810 1790 1800 1810 1310 \end{verbatim} } \section{The Blackboard} A new interface has been added to separate backtrackable and surviving uses of blackboard objects so this primitive and the def/3, set/3, rm/2 of previous version although still available should be replaced either with: \begin{itemize} \item global logical variables \item garbage-collectible permanent objects. \end{itemize} \subsection{Global logical variables} {\tt Syntax:} \verb~A#B:=:X~, or \verb~lval(A,B,X).~ {\flushleft where X} is any term on the heap. It has simply a global name \verb~A#B~ i.e. an entry in the hashing table with keys A and B. The address in the table (C-pointers are the same as logical variables in BinProlog) is trailed such that on backtracking it will be unbound (i.e. point to itself). Unification with \verb~A#B:=:Y~ is possible at any point in the program which knows the `name' \verb~A#B~. Although a global logical variable cannot be changed it can be further instantiated as it happens to ordinary Prolog terms. Backtracking ensures they vanish so that no unsafe reference can be made to them. The program lq8.pl is an efficient 8-queens program using global logical variables to simulate the chess-board. \subsection{Garbage-collectible permanent objects.} On the other hand, if {\tt bb\_def/3} or {\tt bb\_set/3} is used to name objects on the blackboard, they "survive" backtracking and can afterwards be retrieved as logical variables using \verb~bb_val/3~. \begin{verbatim} bb_def/3 (i,i,i) defines a value bb_set/3 (i,i,i) updates a value bb_rm/2 (i,i) removes a value bb_val/3 (i,i,o) retrieves the value \end{verbatim} They are quite close to the {\tt recorda/recordz} family of other Prologs although they offer better 2-key indexing, are simpler and can be used to do much more things efficiently. You can look to the program {\tt progs/knight.pl} on how to use them to implement in a convenient and efficient way programs with backtrackable global arrays. They can be used to save information that survives backtracking in a way similar to other Prolog's {\tt assert} and {\tt retract} and are safe with respect to garbage collection of the blackboard. The predicate {\tt bb\_list/1} gives the content of the blackboard as a heap object (list), while {\tt bb/0} simply prints it out. These predicates offer generally faster and more flexible management of dynamic state information than other Prolog's dynamic databases. \subsection{Assert and retract} For compatibility reasons BinProlog has them, implemented on top of the more efficient blackboard manipulation builtins. This is an approximation of other Prologs assert and retract predicates. It tries to be close to Sicstus and Quintus with their semantics. For efficiency and programming style reasons I strongly suggest not to use them too much. If you want maximal efficiency use \verb~bb_def/3, bb_set/3, bb_val/3, bb_rm~ They give you access to a very fast hashing table \verb~--> value~, the same that BinProlog uses internally for indexing by predicate and first argument. They are close to other Prolog's `record' family, except that they do even less. To use dynamic predicates it is a good idea to declare them with {\tt dynamic/1} although asserts will now be accepted even without such a declaration. To define dynamic code in a file you compile, dynamic declarations are mandatory. To activate an asserted predicate it is a good idea to alway call it with \begin{verbatim} ?-metacall(Goal). \end{verbatim} {\flushleft instead} of \begin{verbatim} ?- Goal. \end{verbatim} However, this is not a strong requirement anymore, as an important number of users were unhappy with this restriction. The dynamic predicates are: \begin{verbatim} assert/1 asserta/1 assertz/1 retract/1 clause/2 metacall/1 abolish/2 \end{verbatim} You can easily add others or improve them by looking to the sources in the file \verb~extra.pl~. \subsection{Assumed code, intutionistic and linear implication} Intuitionistic assumei/1 adds temporarily a clause usable in later proofs. Such a clause can be used an indefinite number of times, mostly like asserted clauses, except that it vanishes on backtracking. Its scoped version \verb~Clause=>Goal~ or \verb~[File]=>Goal~ makes \verb~Clause~ or the set of clauses found in \verb~File~ available only during the proof of Goal. Both vanish on backracking. Clauses are usable an indefinite number of times in the proof, i.e. for instance \verb~?-assumei(a(13)),a(X),a(Y)~ will succed. Linear assumel/1 adds temporarily a clause usable {\em at most once} in later proofs. This assumption also vanishes on backtracking. Its scoped version \verb~Clause-:Goal~ or \verb~[File]-:Goal~ makes \verb~Clause~ or the set of clauses found in \verb~File~ available only during the proof of Goal. Both vanish on backracking. Each clause is usable at most once in the proof, i.e. for instance \verb~?-assumel(a(13)),a(X),a(Y)~ will fail. You can freely mix linear and intutionistic clauses and implications for the same predicate. Try out something like \begin{verbatim} ?-a(10)-:a(11)=>a(12)-:a(13)=>(a(X),a(X)). X=11; X=13; no \end{verbatim} This shows that \verb~a(10)~ and \verb~a(12)~ are {\em consumed} after their first use while \verb~a(11)~ and \verb~a(13)~ are reusable indefinitely. See the relatively straightforward implementation of these predicates in the file extra.pl. Note that BinProlog's linear implication succeeds even if not all the assumptions are consumed while in systems like Lolli this is a strong requirement. Quantifiers and other linear operators are not implemented at this time, but can be added in the future if there's enough demand for them. \subsection{Overriding} Assumed predicate will override similarly named dynamic predicates which in turn will override compiled ones. Note that overriding is done at {\em predicate}, not {\em clause} level. Note also that multifile compiled clauses are still forbidden. However, multifile assumed and dynamic code is now accepted. \subsection{Language enhancements based on linear implication} Linear implication can be used to quickly add some language enhancements to a Prolog system. For instance, to add a {\tt switch} $\ldots$ {\tt case} statement one can write simply: \begin{verbatim} switch(Selector,Body):- case(Selector)-:Body. test(X):- switch(X, ( case(1)->write(one) ; case(2)->write(two) ; otherwise->write(unexpected(X)) )) ,nl. % ?-test(2),test(13). \end{verbatim} Clearly, this is a very compact way, useful at least as a specification. Note that this can be done as well with macro expansion, possibly more efficiently, but also with much more work. \subsection{Problem solving with linear implication} Linear implication is a serious and very convenient problem solving tool, which allows avoiding explicit handling of complex data-structures. Let's suppose we want to walk through a (possibly circular) graph structure without looping. With linear implication this becomes: \begin{verbatim} path(X,X,[X]). path(X,Z,[X|Xs]):-linked(X,Y),path(Y,Z,Xs). linked(X,Y):-c(X,Ys),member(Y,Ys). go(Xs):- c(1,[2,3]) -: c(2,[1,4]) -: c(3,[1,5]) -: c(4,[1,5]) -: path(1,5,Xs). \end{verbatim} {\flushleft or} \begin{verbatim} path(X,X,[X]). path(X,Z,[X|Xs]):-c(X,Y),path(Y,Z,Xs). % data go(Xs):- (c(1,X1):-c1(X1)) -: (c(2,X2):-c2(X2)) -: (c(3,X3):-c3(X3)) -: (c(4,X4):-c4(X4)) -: path(1,5,Xs). c1(2). c1(3). c2(1). c2(4). \end{verbatim} Some finite domain constraint solving can also be done quite efficiently (1.3 seconds on a Sparc 10-20 for the {\tt SEND + MORE = MONEY} puzzle - see file {\tt progs/lconstr.pl}). {\small \begin{verbatim} % Program: linear implication based FD constraint solving % Author: Paul Tarau, 1995 % cryptarithmetic puzzle solver -see progs/lconstr.pl % a kind of "constraint solving with linear implication" example1( [s,e,n,d,m,o,r,e,y]=[S,E,N,D,M,O,R,E,Y], [S,E,N,D]+ [M,O,R,E]= [M,O,N,E,Y], _ ). % Addition of two numbers - simplified version - sum(As, Bs, Cs) :- sum(As, Bs, 0, Cs). sum([], [], Carry, [Carry]). sum([A|As], [B|Bs], Carry, [C|Cs]) :- !, add2digits(A,B,Carry,C,NewCarry), sum(As, Bs, NewCarry, Cs). add2digits(A,B,Carry,Result,NewCarry):- bind(A),bind(B), add_with_carry(10,A,B,Carry,Result,NewCarry). add_with_carry(Base,A,B,Carry,Result,NewCarry):- S is A+B+Carry, Result is S mod Base, NewCarry is S // Base, new_digit(Result). bind(A):-var(A),!,digit(A). bind(_). new_digit(A):-digit(A),!. new_digit(_). solve(As,Bs,Cs,Z):- digit(0)-:digit(1)-:digit(2)-:digit(3)-:digit(4)-:digit(5)-: digit(6)-:digit(7)-:digit(8)-:digit(9)-: ( sum(As,Bs,Cs), Z>0 ). puzzle:- init(Vars,Puzzle,Names), Puzzle=(Xs+Ys=Zs),Zs=[Z|_], reverse(Xs,As), % see progs/lconstr.pl reverse(Ys,Bs), reverse(Zs,Cs), solve(As,Bs,Cs,Z), show_answer(Vars,Names,Puzzle), % see progs/lconstr.pl fail. puzzle:- write('no (more) answers'),nl,nl. go:- (init(X,Y,Z):-example1(X,Y,Z))-:puzzle, fail. \end{verbatim}} Notice how linearly assumed \verb~digit/1~ facts are consumed by \verb~bind/1~ and \verb~new_digit/1~ to enforce constraints as early as possible inside the addition loop. \subsection{The blackboard as an alternative to assert and retract} Designed in the early stages of Prolog, assert and retract have been overloaded with different and often conflicting requirements. They try to be both the way to implement permanent data structures for global state information, self-modifying code and tools for Prolog program management. This created not only well-known semantical but also expressivity and efficiency problems. This unnecessary overloading is probably due to some of their intended uses in interpreted Prologs like implementing the \verb~consult/1~ and \verb~reconsult/1~ code-management predicates that can be replaced today by general purpose makefiles. As a consequence, their ability to express sophisticated data structures is very limited due mostly to unwanted copying operations (from heap to dynamic code area and back) and due to their non-backtrackable behaviour. For example, to ensure indefinite number of uses of an asserted clause most Prologs either compile it on the fly or do some form of copying (usually twice: when asserting and when calling or retracting). This is not only a waste of resources but also forbids use of asserted clauses for dynamically evolving global objects containing logical variables, one of the most interesting and efficient data structure tricks in Prolog. Worst, variables representing global data structures have to be passed around as extra arguments, just to bore programmers and make them dream about inheritance and objects oriented languages. This also also creates error prone maintenance problems. Just think about adding a new seventh argument to a 10-parameter Prolog predicate having 10 clauses and being called 10 times. Those are the main reasons for the re-design of these operations using BinProlog's blackboard. Objects on the blackboard have indefinite extent. However, their names are "rigid designators" that can change their reference. Data objects do not disappear just because they have no names anymore. This is the main difference with variables in languages with destructive assignment. If the garbage collector "can prove" that an object or some part of it is will never be used again, the space will be recuperated automatically. Although objects cannot be "changed" they can be further instantiated as it happens to ordinary Prolog terms. Efficient access to objects on the blackboard or part of them is based on an efficient 2-key hashing table, internal to BinProlog's run-time system. \subsection{The low-level blackboard operations} Six low-level\footnote{ We suggest avoiding these operations because they are not garbage collection-safe in BinProlog 3.45.} primitives {\tt def/3, set/3, val/3, rm/2, copy\_term/2, save\_term/2} are used in BinProlog 3.45 to fully replace assert and retract while keeping distinct their overloaded {\em naming} and {\em copying} function. \subsubsection{Naming primitives} The first four are simply an interface to BinProlog's unique global hashing table working as an \begin{verbatim} -->HeapOrBlackboardObject. \end{verbatim} function. \begin{itemize} \item def/3: (i,i,i) defines a value (usable only once) or fails; \item set/3: (i,i,i) updates a value that has been defined or warns and fails; \item val/3: (i,i,o) retrieves the value or fails if absent; \item rm/3: (i,i) deletes the value or fails if absent. \end{itemize} We call them {\em naming primitives} as they are used to name arbitrary heap or blackboard objects for definition, update and access function. Naming objects on the heap is generally unsafe and should be hidden from the user except for constants which are actually copied in the hashing table instead of being pointed to. This frequent case has been given to end users as an efficient 2-keys, 1-value dictionary since the first release of BinProlog. If blackboard operations are backtrackable heap objects can be safely named. This suggested the implementation of global logical variables in BinProlog 3.45. Otherwise, in BinProlog's gc-safe transfers to and from the blackboard are doing with a very efficient copying algorithm. Not that if the garbage collector is not used naming objects on the blackboard is safe as they are always at a lower address than the base of the heap. As a consequence they survive backtracking while keeping their behaviour as close as possible to the behaviour of usual heap objects. This usage is compatible with BinProlog 1.71 but not recommended in BinProlog 3.45. \subsubsection{Copying primitives} \verb~Copy_term/2~ is Prolog's usual primitive extended to copy objects from the heap and also from blackboard to the current top of the heap. We refer to \cite{Tarau92:ECO} for the implementation and memory management aspects of these primitives. \verb~Save_term/2~ copies an object possibly distributed over the heap and the blackboard to a new blackboard object. It also takes care not to copy parts of the object already on the blackboard. Remark that having known modes and argument types helps in the case of partial evaluation or type inference systems. Separating Prolog's asserts two main functions (naming+copying) in lower level operations allows program transformers to go {\em inside} more complex blackboard operations and possibly use the typing and mode information that comes from def/3, set/3 and val/3 to infer it for other predicates. \subsection{An useful Prolog extension: bestof/3} \verb~Bestof/3~ is missing in all current Prolog implementations we know of. BinProlog's \verb~bestof/3~ works like \verb~findall/3~, but instead of accumulating alternative solutions, it selects successively the {\em best} one with respect to an arbitrary {\em total order} relation. If the test succeeds the new answer replaces the previous one. At the end, either the query has no answers, case in which {\tt bestof} fails, or an answer is found such that it is better than every other answer with respect to the total order. The proposed syntax is \begin{verbatim} ?-bestof(X,TotalOrder,Goal) \end{verbatim} At the end, X is instantiated to the best answer. For example, the maximum of a list of integers can be defined simply as: \begin{verbatim} max(Xs,X):-bestof(X,>,member(X,Xs)). \end{verbatim} The following is an efficient implementation implementation using the blackboard. \begin{verbatim} % true if X is an answer of Generator such that % X Rel Y for every other answer Y of Generator bestof(X,Closure,Generator):- copy_term(X,Y), Closure=..L1, det_append(L1,[X,Y],L2), Test=..L2, bestof0(X,Y,Generator,Test). bestof0(X,Y,Generator,Test):- inc_level(bestof,Level), Generator, update_bestof(Level,X,Y,Test), fail. bestof0(X,_,_,_):- dec_level(bestof,Level), val(bestof,Level,X), rm(bestof,Level). % uses Rel to compare New with so far the best answer update_bestof(Level,New,Old,Test):- val(bestof,Level,Old),!, Test, bb_set(bestof,Level,New). update_bestof(Level,New,_,_):- bb_let(bestof,Level,New). % ensure correct implementation of embedded calls to bestof/3 inc_level(Obj,X1):-val(Obj,Obj,X),!,X1 is X+1,bb_set(Obj,Obj,X1). inc_level(Obj,1):-bb_def(Obj,Obj,1). dec_level(Obj,X):-val(Obj,Obj,X),X>0,X1 is X-1,bb_set(Obj,Obj,X1). \end{verbatim} {\flushleft Note} that precomputation of Test in bestof/3 before calling the workhorse bestof0/4 is much more efficient than using some form of apply meta-predicate inside bestof0/4. \subsection{Blackboard based abstract data types} We will describe some simple utilisations of the blackboard to implement efficiently some basic abstract data types. They all use the \verb~saved/2~ predicate instead of \verb~save_term/2~. \verb~Saved/2~ does basically the same work but also makes a call to the blackboard garbage collector if necessary. The reader can find the code in the file \verb~lib.pl~ of the BinProlog distribution. \subsubsection{Blackboard based failure surviving stacks} A very useful data structure that can be implemented with the blackboard is a stack that survives failure but still allows the programmer to use some of the nice properties of logical variables. The main operations are \verb~push/3~ that saves a term to the blackboard and pushes it to a named stack, \verb~pop/3~ that removes the top element from a named stack and unifies it with its third argument and \verb~stack/3~ that simply gives access to the list on the blackboard representing the stack. The only operation that uses copying is \verb~push/3~, although if the term that is pushed to the stack has already some subterms on the blackboard, such subterms will not be copied again. The implementation is straightforward: \begin{verbatim} push(Type,S,X):- default_val(Type,S,Xs,[]), saved([X|Xs],T), set(Type,S,T). pop(Type,S,X):- default_val(Type,S,V,[]), V=[X|Xs], set(Type,S,Xs). stack(Type,S,Xs):-val(Type,S,Xs). default_val(X,Y,V,_):-val(X,Y,V),!. default_val(X,Y,D,D):-def(X,Y,D). \end{verbatim} \subsubsection{Constant time vectors} Defining a vector is done initializing it to a given Zero element. The \verb~vector_set/3~ update operation uses \verb~saved/2~, therefore the old content of vectors is also subject to garbage collection. \begin{verbatim} vector_def(Name,Dim,Zero):- Max is Dim-1, saved(Zero,BBVal), for(I,0,Max), % generator for I from 0 to Max let(Name,I,BBVal), % def/3 or set/3 if needed fail. vector_def(_,_,_). vector_set(Name,I,Val):-saved(Val,BBVal),set(Name,I,BBVal). vector_val(Name,I,Val):-val(Name,I,Val). \end{verbatim} Building multi-dimensional arrays on these vectors is straightforward, by defining an index-to-address translation function. The special case of a high-performance 2-dimension (possibly sparse) global array can be handled conveniently by using def/3, set/3, val/3 and saved/2 as in: \begin{verbatim} global_array_set(I,J,Val):-saved(Val,S),set(I,J,S). \end{verbatim} \subsection{Blackboard based problem solving} \subsubsection{A complete knight tour} The following is a blackboard based complete knight-tour, adapted from Evan Tick's well known benchmark program. \begin{verbatim} % recommended use: ?-go(5). go(N):- time(_), init(N,M), % prepare the chess board knight(M,1,1),!, % finds the first complete tour time(T), write(time=T),nl,statistics,show(N). % shows the answer % fills the blackboard with free logical variables % representing empty cell on the chess board init(N,_):- for(I,1,N), % generates I from 1 to N nondeterministically for(J,1,N), % for/3 is the same as range/3 in the Art of Prolog bb_def(I,J,_NewVar), % puts a free slot in the hashing table fail. init(N,M):- M is N*N. % returns the number of cells % tries to make a complete knight tour knight(0,_,_) :- !. knight(K,A,B) :- K1 is K-1, val(A,B,K), % here we mark (A,B) as the K-th cell of the tour move(Dx,Dy), % we try a next move nondeterministically step(K1,A,B,Dx,Dy). % makes a step and then tries more step(K1,A,B,Dx,Dy):- C is A + Dx, D is B + Dy, knight(K1,C,D). % shows the final tour show(N):- for(I,1,N), nl, for(J,1,N), val(I,J,V), write(' '),X is 1-V // 10, tab(X),write(V), fail. show(_):-nl. % possible moves of the knight move( 2, 1). move( 2,-1). move(-2, 1). move(-2,-1). move( 1, 2). move(-1, 2). move( 1,-2). move(-1,-2). \end{verbatim} Constant time access in this kind of problems to cell(I,J) is essential for efficiency as it is the most frequent operation. While the blackboard based version takes 39s in BinProlog for a 5x5 squares chess board, an equivalent program representing the board with a list of lists takes 147s in BinProlog, 167s in emulated Sicstus 2.1 and 68 seconds in native Sicstus 2.1. Results are expected to improve somewhat with binary trees or functor-arg representation of the board but they will still remain worse than with the blackboard based sparse array, due to their relatively high log(N) or constant factor. Moreover, representing large size (possibly updatable!) arrays with other techniques is prohibitively expensive and can get very complicated due to arity limits or tree balancing as it can see for example in the Quintus library. \subsubsection{A lemma based TAK} The following tak/4 program uses lemmas to avoid heap explosion in the case of of a particularly AND intensive program with 4 recursive calls, a problem particularly severe in the case of the continuation passing binarization that BinProlog uses to simplify the WAM. To encode the 2 first arguments in a unique integer some bit-shifting is needed as it can be seen in \verb~tak_encode/3~. To avoid such problems, hashing on arbitrary terms like Quintus Prolog's \verb~term_hash/2~ looks a very useful addition to BinProlog. \begin{verbatim} tak(X,Y,Z,A) :- X =< Y, !, Z = A. tak(X,Y,Z,A) :- X1 is X - 1, Y1 is Y - 1, Z1 is Z - 1, ltak(X1,Y,Z,A1), ltak(Y1,Z,X,A2), ltak(Z1,X,Y,A3), ltak(A1,A2,A3,A). ltak(X,Y,Z,A):- tak_encode(X,Y,XY), tak_lemma(XY,Z,tak(X,Y,Z,A),A). tak_encode(Y,Z,Key):-Key is Y<<16 \/ Z. tak_decode(Key,Y,Z):-Y is Key>>16, Z is Key <<17>>17 . %optimized lemma --> O (instantiated executing G) tak_lemma(P,I,_,O):-val(P,I,X),!,X=O. tak_lemma(P,I,G,O):-G,!,def(P,I,O). go:- statistics(runtime,_), tak(24,16,8,X), statistics(runtime,[_,T]),statistics, write([time=T,tak=X]), nl. \end{verbatim} We hope that we showed the practicality of BinProlog's blackboard for basic work on data structures and problem solving. BinProlog's blackboard primitives make a clear separation between the {\em copying} and the {\em naming} intent overloaded in Prolog's assert and retract. Our blackboard primitives give most of the time simpler and more efficient solutions to current programming problems than assert and retract while being closer to a logical semantics and more cooperative to partial evaluation. \subsection{A Linda style interface to the blackboard} The following predicates show how to do some Linda-style operations on top of the blackboard primitives. The current focus of the operations is managed by \verb~object/1~ and \verb~message/1.~ \verb~Out/?~ puts a tuple Mes on the blackboard, \verb~rd/?~ reads it and \verb~in/?~ removes it. {\tt Eval/?} executes the Goal part of the clause \verb~(Answer:-Goal)~ focussed by \verb~object/1~ and \verb~message/1~. Then it puts the result \verb~Answer~ back to the blackboard. As \verb~Answer~ itself can be of the form \verb~(A:-G)~, a limited number of cascaded \verb~evals~ are possible. \begin{verbatim} % out/1, rd/1, in/1 out(Mes):-object(Obj),message(Id),out(Obj,Id,Mes). rd(Mes):-object(Obj),message(Id),rd(Obj,Id,Mes). in(Mes):- object(Obj),message(Id),in(Obj,Id,Mes). % out/2, rd/2, in/2 out(Id,Mes):-object(Obj),out(Obj,Id,Mes). rd(Id,Mes):-object(Obj),rd(Obj,Id,Mes). in(Id,Mes):-object(Obj),in(Obj,Id,Mes). % out/3, rd/3, in/3 out(Obj,Id,_):-val(Obj,Id,_),!,fail. out(Obj,Id,Mes):-saved(Mes,Sent),let(Obj,Id,Sent). rd(Obj,Id,Mes):-val(Obj,Id,Mes). in(Obj,Id,Mes):-val(Obj,Id,Mes),rm(Obj,Id). % eval/0, eval/1, eval/2 eval:-object(Obj),message(Id),eval(Obj,Id). eval(Id):-object(O),eval(O,Id). eval(Obj,Id):-val(Obj,Id,(Answer:-Goal)),Goal,!, saved(Answer,NewAnswer), set(Obj,Id,NewAnswer). % tools object(New):-var(New),!,val('$object','$object',New). object(New):-atomic(New),let('$object','$object',New). message(New):-var(New),!,object(O),val(O,'$message',New). message(New):-atomic(New),object(O),let(O,'$message',New). \end{verbatim} \section{Continuations as first order objects} \subsection{Continuation manipulation vs. intuitionistic/linear implication} Using intuitionistic implication (actullay it should be \verb~-:~ but let's forget this for a moment) we can write in BinProlog: \begin{verbatim} insert(X, Xs, Ys) :- paste(X) => ins(Xs, Ys). ins(Ys, [X|Ys]) :- paste(X). ins([Y|Ys], [Y|Zs]):- ins(Ys, Zs). \end{verbatim} {\flushleft used} to nondeterministically insert an element in a list, the unit clause \verb~paste(X)~ is available only within the scope of the derivation for \verb~ins~. This gives: {\small \begin{verbatim} ?- insert(a,[1,2,3],X). X=[a,1,2,3]; X=[1,a,2,3]; X=[1,2,a,3]; X=[1,2,3,a] \end{verbatim} } With respect to the corresponding Prolog program we are working with a simpler formulation in which the element to be inserted does not have to percolate as dead weight throughout each step of the computation, only to be used in the very last step. We instead clearly isolate it in a global-value manner, within a unit clause which will only be consulted when needed, and which will disappear afterwards. Now, let us imagine we are given the ability to write part of a proof state context, i.e., to indicate in a rule's left-hand side not only the predicate which should match a goal atom to be replaced by the rule's body, but also which other goal atom(s) should surround the targeted one in order for the rule to be applicable. Given this, we could write, using BinProlog's \verb~@@~ (which gives in its second argument the current continuation) a program for \verb~insert/3~ which strikingly resembles the intuitionistic implication based program given above: {\small \begin{verbatim} insert(X,Xs,Ys):-ins(Xs,Ys),paste(X). ins(Ys,[X|Ys]) @@ paste(X). ins([Y|Ys],[Y|Zs]):-ins(Ys,Zs). \end{verbatim} } {\flushleft Note} that the element to be inserted is not passed to the recursive clause of the predicate {\bf ins/2} (which becomes therefore simpler), while the unit clause of the predicate {\bf ins/2} will communicate directly with {\bf insert/3} which will directly `paste' the appropriate argument in the continuation. In this formulation, the element to be inserted is first given as right-hand side context of the simpler predicate \verb~ins/2~, and this predicate's first clause consults the context \verb~paste(X)~ only when it is time to place it within the output list, i.e. when the fact \verb~ins(Ys,[X|Ys]),paste(X)~ is reached. Thus for this example, we can also obtain the expressive power of intuitionistic/linear implication by this kind of (much more efficient) direct manipulation of BinProlog's first order continuations. \section{Direct binary clause programming and full-blown continuations} BinProlog 3.45 supports direct manipulation of binary clauses denoted \begin{verbatim} Head ::- Body. \end{verbatim} {\flushleft They} give full power to the knowledgeable programmer on the future of the computation. Note that such a facility is not available in conventional WAM-based systems where continuations are not first-order objects. We can use them to write programs like: {\small \begin{verbatim} member_cont(X,Cont)::- strip_cont(Cont,X,NewCont,true(NewCont)). member_cont(X,Cont)::- strip_cont(Cont,_,NewCont,member_cont(X,NewCont)). test(X):-member_cont(X),a,b,c. \end{verbatim} } {\flushleft A} query like {\small \begin{verbatim} ?-test(X). \end{verbatim} } {\flushleft will} return \verb~X=a; X=b; X=c; X=~whatever follows from the calling point of \verb~test(X)~. {\small \begin{verbatim} catch(Goal,Name,Cont)::- lval(catch_throw,Name,Cont,call(Goal,Cont)). throw(Name,_)::- lval(catch_throw,Name,Cont,nonvar(Cont,Cont)). \end{verbatim} } {\flushleft where} \verb~lval(K1,K2,Val)~ is a BinProlog primitive which unifies \verb~Val~ with a backtrackable global logical variable accessed by hashing on two (constant or variable) keys \verb~K1,K2~. This allows for instance to avoid execution of the infinite \verb~loop~ from inside the predicate \verb~b/1~. {\small \begin{verbatim} loop:-loop. c(X):-b(X),loop. b(hello):-throw(here). b(bye). go:-catch(c(X),here),write(X),nl. \end{verbatim} } Notice that due to its simple {\em translation semantics} this program still has a first order reading and that BinProlog's \verb~lval/3~ is not essential as it can be emulated by an extra argument passed to all predicates. Although implementation of \verb~catch~ and \verb~throw~ requires full-blown continuations, we can see that at user level, ordinary clause notation is enough. \section{Backtrackable destructive assignment} \subsection{Updatable logical arrays in Prolog: fixing the semantics of {\tt setarg/3}} Let us recall that \verb~setarg(I,Term,Value)~ installs \verb~Value~ as the \verb~I~-th argument of \verb~Term~ and takes care to put back the old value found there on backtracking. {\tt Setarg/3} is probably the most widelly used (at least in SICStus, Aquarius, Eclipse, ProLog-by-BIM, BinProlog), incarnation of backtrackable mutable arrays (overloaded on Prolog's universal {\em term} type). Unfortunately {\tt setarg/3} lacks a logical semantics and is implemented differently in in various systems. This is may be the reason why the standardization (see its absence from the Prolog ISO Draft) of \verb~setarg/3~ can hardly reach a consensus in the predictable future. Ideally, \verb~setarg/3~ should work as if a new term (array) had been created identical to the old one, except for the given element. There's no reason to `destroy' a priori the content of the updated cell or to make it subject to ugly side effects. Should this have to happen for implementation reasons, a run-time error should be produced, at least, although this is not the case in any implementation we know of. Let us start with an inefficient but fairly clean array-update operation, \verb~setarg/4~. \begin{verbatim} setarg(I,OldTerm,NewValue,NewTerm):- functor(OldTerm,F,N), functor(NewTerm,F,N), arg(I,NewTerm,NewValue), copy_args_except_I(N,I,OldTerm,NewTerm). copy_args_except_I(0,_,_,_):-!. copy_args_except_I(I,I,Old,New):-!,I1 is I-1, copy_args_except_I(I1,I,Old,New). copy_args_except_I(N,I,Old,New):-N1 is N-1,arg(N,Old,X),arg(N,New,X), copy_args_except_I(N1,I,Old,New). \end{verbatim} We can suppose that functor and arg are specified by a (finite) set of facts describing their behavior on the signature of the program. For a given program, we can obviously see setarg/4 as being specified similarly by a finite set of facts. Furthermore,suppose that all uses of setarg/3 are replaced by calls to setarg/4 with the new states passed around with DCG-style chained variables. This looks like a good definition of the intended meaning of a program using setarg/3. We will show that actual implementations (Sicstus and BinProlog) can be made to behave accordingly to this semantics through a small, source level wrapping into a suitable ADT. Let \verb~'$box'/1~ be a new functor not in the signature of any user program. By defining \begin{verbatim} safe_arg(I,Term,Val):-arg(I,Term,'$box'(Val)). safe_setarg(I,Term,Val):-setarg(I,Term,'$box'(Val)). \end{verbatim} Using \verb~'$box'/1~ in \verb~safe_arg/3~ (\verb~safe_setarg/3~) ensures that cell \verb~I~ of the functor \verb~Term~ will be indirectly accessed (updated) even if it contains a variable which in a WAM would be created on place and therefore it would be subject of unpredictable side-effects. The reason of the draconian warning in some Prolog manuals manual \begin{quote} ...setarg is only safe if there is no further use of the old value of the replaced argument... \end{quote}. will therefore disappear and a purely logical setarg (with a {\em translation semantics} expressible in term of \verb~setarg/4~) can be implemented. Not only this ensures referential transparency and allows normal references to the old content of the updated cells but it also makes incompatible implementations of setarg (Sicstus, Eclipse, BinProlog) work exactly the same way\footnote{A further ambiguity in some implementations of \verb~setarg/3~ comes from the fact that it is not clear if the location itself or its dereferenced contents should be mutated}. To finish the job properly, something like the following ADT can be created. \begin{verbatim} new_array(Size,Array):- functor(Array,'$array',Size). update_array(Array,I,Val):- safe_setarg(I,Array,Val). access_array(Array,I,Value):- safe_arg(I,Array,Value). \end{verbatim} We suggest to use this ADT in your program instead of basic setarg when performance is not an absoulte requirement. A new \verb~change_arg/3~ builtin has been added to BinProlog to allow, efficient failure-driven iteration with persistent information. It works like \verb~setarg/3~ except that side-effects are permanent. Sould unsafe heap objects be generated through the precess \verb~change_arg/3~ signals a run-time error. This is not the case as far the result is either a constant (which is does not need new heap allocation) or the result of moving a preexistent heap object to a new location. For instance the (Haskell-style) \verb~fold/4~ predicate (see \verb~library/high.pl~) uses \verb~change_arg/3~ to avoid painful iteration and slow side-effects on the dynamic database. The implementation is competitive is speed with hand-written explicitely recursive code and uses only memory proportional to the size of the answer. \begin{verbatim} % fold,foldl based on safe failure driven destructive change_arg foldl(Closure,Null,List,Final):-fold(Closure,Null,X^member(X,List),Final). fold(Closure,Null,I^Generator,Final):- fold0(s(Null),I,Generator,Closure,Final). fold0(Acc,I,Generator,Closure,_):- term_append(Closure,args(SoFar,I,O),Selector), Generator, arg(1,Acc,SoFar), Selector, change_arg(1,Acc,O), fail. fold0(Acc,_,_,_,Final):- arg(1,Acc,Final). ?- foldl(+,0,[1,2,3],R). ?- fold(*,1,X^member(X,[1,2,3]),R). \end{verbatim} \section{`Invisible' grammars} By using backtrackable setarg/3 and logical global variables (lval/3) we can implement easily a superset of DCG grammars practically equivalent with Peter VanRoy's Extended DCGs. We call them {\em Hidden Accumulator Grammars} as no preprocessor is involved in their implementation. It turns out that the technique has the advantage of `meta-programming for free' (without the expensive phrase/3), allows source level debugging and can be made more space and time efficient than the usual preprocessing based implementation. On real examples, their best use is for writting a Prolog compiler (they can contribute to the writing of compact and efficient code with very little programming effort) and for for large natural language processing systems. Basically, they work as follows: {\small \begin{verbatim} % tools begin_dcg(Name,Xs):-lval(dcg,Name,Xs-Xs). end_dcg(Name,Xs):-lval(dcg,Name,Xs-[]). w(Word,Name):- lval(dcg,Name,State), State=_-[Word|Xs2], setarg(2,State,Xs2). begin_dcg(Xs):-begin_dcg(default,Xs). end_dcg(Xs):-end_dcg(default,Xs). w(Word):-w(Word,default). % grammar x:-ng,v. ng:-a,n. a:-w(the). a:-w(a). n:-w(cat). n:-w(dog). v:-w(walks). v:-w(sleeps). % test go:-begin_dcg(Xs),x,end_dcg(Ys),write(Ys),nl,fail. ?- go. [the,cat,walks] [the,cat,sleeps] [the,dog,walks] [the,dog,sleeps] [a,cat,walks] [a,cat,sleeps] [a,dog,walks] [a,dog,sleeps] \end{verbatim} } The program can be found in progs/setarg\_dcg.pl. For reasons of efficiency (i.e. to equal or beat preprocessor based DCGs in terms of both space and time) BinProlog's `Hidden Accumulator Grammars' have been implemented in C and are accessible through the following set of builtins: {\small \begin{verbatim} dcg_connect/1 % works like 'C'/3 with 2 hidden arguments dcg_def/1 % sets the first hidden DCG argument dcg_val/1 % retrives the current state of the DCG stream dcg_tell/1 % focus on a given DCG stream (from 0 to 255) dcg_telling/1 % returns the number of the current DCGs stream % INVISIBLE DCG connect operation: normally macro-expanded '#'(Word):-dcg_connect(Word). % example: ?-dcg_phrase(1,(#a,#b,#c),X). dcg_phrase(DcgStream,Axiom,Phrase):- dcg_telling(X),dcg_tell(DcgStream), dcg_def(Phrase), Axiom, dcg_val([]), dcg_tell(X). \end{verbatim}} Starting with BinProlog 3.33 \verb~dcg_tell/1~ is backtrackable, mostly like lval/3. Admissible values for X in \verb~dcg_tell(X)~ are ranging from 1 to 255, which gives (I hope) enough distinct DCG streams for any application. Invisible grammars consume no heap, as they are based on backtrackable destructive assigment implemented with a technique called {\em value trailing} like {\tt setarg/3}. They consume trail only when a nondeterministic situation (choice-point) arrises. If you try the following program: {\small \begin{verbatim} % grammar ax:-ng,v. ng:-a,n. a:-dcg_connect(the). a:-dcg_connect(a). n:-dcg_connect(cat). n:-dcg_connect(dog). v:-dcg_connect(walks). v:-dcg_connect(sleeps). go:- st(H,T), dcg_def(Xs),ax,dcg_val([]), pp(Xs,H,T),nl, fail. st(H,T):-statistics(global_stack,[H,_]),statistics(trail,[T,_]). pp(O,H0,T0):- st(H1,T1),T is T1-T0,H is H1-H0, write([heap=H,trail=T]),write('==>'),write(O),nl,fail. pp(_,_,_). \end{verbatim}} {\flushleft it} will print out something like: {\small \begin{verbatim} [heap = 308,trail = 44]==>[the,cat,walks] [heap = 308,trail = 32]==>[the,cat,sleeps] [heap = 308,trail = 32]==>[the,dog,walks] [heap = 308,trail = 20]==>[the,dog,sleeps] [heap = 308,trail = 44]==>[a,cat,walks] [heap = 308,trail = 32]==>[a,cat,sleeps] [heap = 308,trail = 32]==>[a,dog,walks] [heap = 308,trail = 20]==>[a,dog,sleeps] \end{verbatim}} \section{BinProlog's C-interface} To be able to extend BinProlog and possibly embedd it as logic engine in your no run-time fee application you will need a BinProlog C-source code licence. See the files SOURCE.LICENCE and PRICING for more information. You can also interact with other languages under UNIX using the bidireactional pipe based interface starting from BinProlog's Tcl/Tk interfaced (see directory TCL). The following sequence of quick examples shows how it works. \subsection{A Demo Program} Starting with version 3.39 the C-interface has been moved in directory \verb~c_inter~. The discussion which follows basically explains the content of the files c.c c.h and c.pl in this directory. Once BinProlog is correctly installed as file "bp" somewhere in your path along with the libraries bp.o and wam.o which should be in directory \verb~../src~ and you have a C-compiler around, you can simply do \verb~make~ in directory \verb~c_inter~ to create a standalone application which integrates the functionality of the C-code in file c.c. To test the resulting standalone executable \verb~c_binpro~, try out the demo \verb~c_test~ defined in file \verb~c.pl~. Start running it by typing \verb~c_binpro~ and then type \verb~c_test.~ at the Prolog prompt. To avoid the prompt and directly launch the application add \verb~main:-c_test.~" in file c.pl before typing \verb~make~. \subsection{Calling C from BinProlog: adding new builtins} New builtins are added in {\tt headers.pl} and after a "make realclean; make" a new version of BinProlog containing them is generated automatically. Starting from {\tt headers.pl} the system will first generate the files {\tt defs.h, prof.h, builtins.pl} and then recompile itself. For this recompilation either a previous version of BinProlog\footnote{Use "make remake" if BinProlog is the only Prolog around.} or SICStus Prolog is used. An example of declaration in {\tt headers.pl} is: {\small \begin{verbatim} b0(+/3,arith(1),in_body). % arity=3+1 by binarization \end{verbatim} } {\flushleft Notice} that arith(1) means that it is "like an arithmetic functions" which returns {\em one} value, i.e this should be used as in {\small \begin{verbatim} +(0,1,Result). \end{verbatim} } {\flushleft I would} suggest to start with the simplest form of interaction: a call of your own C-code from BinProlog. Try modifying in the file c.c (provided with the C-sources of BinProlog, in directory \verb~c_inter~), the function \verb~new_builtin()~ which looks as follows: {\small \begin{verbatim} /* New builtins can be called from Prolog as: new_builtin(0,,) X(1) contains the integer `opcode' of your builtin X(2) contains your input arg regs[I] contains somthing that will be unified with what you return (the precise value of I depends on the register allocator). You are expected to `return' either - a non-null object that will be unified with , or - NULL to signal FAILURE As the returned object will be in a register this can be used for instance to add a garbage collector that moves every data area around... */ term new_builtin(H,regs,A,P,wam) register term H,regs,*A; register instr P; register stack wam; { BP_check_call(); switch(BP_op) { /* for beginners ... */ case 0: /* this just returns your input argument (default behavior) */ break; case 1: BP_result=BP_integer(13); /* this example returns 13 */ break; case 2: BP_result=BP_atom("hello"); /* this example returns 'hello' */ break; /* for experts ... */ case 3: /* iterative list construction */ { cell middle,last,F1,F2; int i; BP_make_float(F1, 77.0/2); BP_make_float(F2, 3.14); BP_begin_put_list(middle); BP_put_list(BP_integer(33)); BP_put_list(F1); BP_put_list(BP_string("hello")); BP_put_list(F2); BP_end_put_list(); BP_begin_put_list(last); for(i=0; i<5; i++) { BP_put_list(BP_integer(i)); } BP_end_put_list(); BP_begin_put_list(BP_result); BP_put_list(BP_string("first")); BP_put_list(middle); BP_put_list(last); BP_put_list(F1); BP_put_list(F2); BP_end_put_list(); } break; case 4: /* cons style list construction */ BP_begin_cons(); BP_result= BP_cons( BP_integer(1), BP_cons( BP_integer(2), BP_nil ) ); BP_end_cons(); break; case 5: /* for hackers only ... */ ; BP_result=(cell)H; H[0]=g.DOT; H[1]=X(2); H[2]=g.DOT; H[3]=BP_integer(99); H[4]=g.DOT; H[5]=(cell)(H+5); /* new var */ H[6]=g.DOT; H[7]=(cell)(H+5); /* same var as previously created */ H[8]=g.DOT; H[9]=BP_atom("that's it"); H[10]=g.NIL; H+=11; break; case 6: BP_fail(); break; case 7: { cell T=BP_input; if(BP_is_integer(T)) {fprintf(g.tellfile,"integer: %ld\n",BP_get_single_integer(T)); BP_result=BP_integer(-1); } else BP_fail(); } break; case 8: /* for experts: calling BinProlog from C */ { cell L,R,Goal; BP_begin_put_list(L); BP_put_list(BP_string("one")); BP_put_list(BP_integer(2)); BP_put_list(BP_string("three")); BP_put_list(BP_input); /* whatever comes as input */ BP_end_put_list(); BP_put_functor(Goal,"append",3); BP_put_old_var(L); BP_put_old_var(L); BP_put_new_var(R); BP_prolog_call(Goal); /* this will return NULL on failure !!!*/ BP_put_functor(Goal,"write",1); BP_put_old_var(R); BP_prolog_call(Goal); /* calls write/1 */ BP_put_functor(Goal,"nl",0); BP_prolog_call(Goal); /* calls nl/0 */ BP_result=R; /* returns the appended list to Prolog */ } break; case 10: /* for experts: calling BinProlog from C */ { cell L,R,Goal; BP_begin_put_list(L); BP_put_list(BP_string("one")); BP_put_list(BP_integer(2)); BP_put_list(BP_string("three")); BP_put_list(BP_input); /* whatever comes as input */ BP_end_put_list(); BP_put_functor(Goal,"cut_test",3); /* see c.pl */ BP_put_old_var(L); BP_put_old_var(L); BP_put_new_var(R); BP_prolog_call(Goal); /* this will return NULL on failure !!!*/ BP_put_functor(Goal,"write",1); BP_put_old_var(R); BP_prolog_call(Goal); /* calls write/1 */ BP_put_functor(Goal,"nl",0); BP_prolog_call(Goal); /* calls nl/0 */ BP_result=R; /* returns the appended list to Prolog */ } break; case 11: /* CALLING BinProlog on a NEW ENGINE from C*/ { stack Engine; cell Goal,Answer; cell Xs,X; BP_begin_put_list(Xs); BP_put_list(BP_string("new_engine_test")); BP_put_list(BP_input); /* whatever comes as input */ BP_put_list(BP_integer(100)); BP_put_list(BP_integer(200)); BP_put_list(BP_integer(300)); BP_end_put_list(); BP_put_functor(Goal,"member",2); BP_put_new_var(X); BP_put_old_var(Xs); Engine=BP_create_engine(wam,100,50,50); BP_load_engine(Engine,Goal,X); while((Answer=(cell)ask_engine(Engine))) { cell Goal1; BP_put_functor(Goal1,"write",1); BP_put_old_var(X); BP_prolog_call(Goal1); /* calls write/1 */ BP_put_functor(Goal1,"nl",0); BP_prolog_call(Goal1); /* calls nl/0 */ } BP_result=X; /* returns the now free variable */ BP_destroy_engine(Engine); } break; case 12: /* CALLING from C BinProlog on a NEW ENGINE. The friendliest way... */ { stack Engine; cell Goal,Answer; cell Xs,X; BP_sread("[0,s(0),s(s(0)),[a,b,c]]",Xs); BP_put_functor(Goal,"member",2); BP_put_new_var(X); BP_put_old_var(Xs); Engine=BP_create_engine(wam,100,50,50); BP_load_engine(Engine,Goal,X); while((Answer=(cell)ask_engine(Engine))) { printf("Answer = %s\n",BP_swrite(Answer)); } BP_result=X; /* returns the now free variable */ BP_destroy_engine(Engine); } break; /* EDIT AND ADD YOUR CODE HERE....*/ default: return LOCAL_ERR(X(1),"call to unknown user_defined C function"); } return H; } \end{verbatim} } \subsection{Calling Prolog from C} Normally this is done after a first call from Prolog to C (this gives a chance to the prolog system to get initialized). The most flexible technique is based on mutiple engines. Take a look at \verb~case 11~ and \verb~case 12~ in the previous section. The lower-level interface, (which follows) is still usable but less recommended. {\small \begin{verbatim} /* this can be used to call Prolog from C : see example if0 */ term bp_prolog_call(goal,regs,H,P,A,wam) register term goal,regs,H,*A; register instr P; register stack wam; { PREP_CALL(goal); return bp(regs,H,P,A,wam); } /* simple example of prolog call */ term if0(regs,H,P,A,wam) register term regs,H,*A; register instr P; register stack wam; { term bp(); cell goal=regs[1]; /* in this example the input GOAL is in regs[1] */ /* of course you can also build it directly in C */ /* unless you want specific action on failure, use BP_prolog_call(goal) here */ H=bp_prolog_call(goal,regs,H,P,A,wam); if(H) fprintf(stderr,"success: returning from New WAM\n"); else fprintf(stderr,"fail: returning from New WAM\n"); /* do not forget this !!! */ return H; /* return NULL to signal failure */ } \end{verbatim} } BinProlog's \verb~main()~ should be the starting point of your program to be able to initialize all data areas. To call back from C you can follow the example if0. A sustained BinProlog-C dialog can be set up by using the 2 techniques described previously. An example of using the C-interface (composed of files c.h c.c c.pl) can be faound in directory \verb~c_inter~. If you whish you can create a standalone C-executable by using BinProlog's compilation to C (see directories \verb~pl2c~, \verb~dynpl2c~) you can simply type `make' in directory \verb~c_inter~. %\pagebreak \section{Example programs} The directory \verb~progs~ contains a few BinProlog benchmarks and applications. {\small \begin{verbatim} allperms.pl: permutation benchmarks with findall bestof.pl: an implementation of bestof/3 bfmeta.pl: breadth-first metainterpreter bp.pl: float intensive neural net learning by back-propagation cal.pl: calendar: computes the last 10000 fools-days fcal.pl: calendar: with floats chat.pl: CHAT parser choice.pl: Choice-intensive ECRC benchmark cnrev.pl: nrev with ^/2 as a constructor instead of ./2 cube.pl: E. Tick's benchmark program fibo.pl: naive Fibonacci ffibo.pl: naive Fibonacci with floats hello.pl: example program to create stand-alone Unix application knight.pl: knight tour to cover a chess-board (uses the bboard) lknight.pl: knight tour to cover a chess-board (uses the lists) ltak.pl: tak program with lemmas lfibo.pl: fibo program with lemmas lq8.pl : 8 queens using global logical variables maplist.pl: fast findall based maplist predicate nrev.pl: naive reverse nrev30.pl: small nrev benchmark to reconsult for the meta-interpreter or.pl: or-parallel simulator for binary programs (VT100) other_bm*: benchmark suite to compare Sicstus, Quintus and BinProlog puzzle.pl: king-prince-queen puzzle q8.pl: fast N-queens qrev.pl: quick nrev using builtin det_append/3 subset.pl: findall+subset tetris.pl: tetris player (VT100) \end{verbatim} } \section{Related work} Some BinProlog related papers can be found at clement.info.umoncton.ca in the file \verb~papers.tar.Z.~ {\flushleft The reader} interested in the internals of BinProlog and other issues related to binary logic programs, their transformations and performance evaluation is referred to \cite{Tarau90:PLILP,Tarau91:JAP,Tarau91:RU,Demoen90:KUL,Demoen91:RU,Tarau92:WAMOpt,Tarau92:ECO,LOPSTR93:Neumerkel,Neum92,Tarau93:GULP,Tarau93a,kdb93f,WA83,lindgren,TD94:WE,TA94:JFPL,TN94:PLILP,kdb93j,kdb93d} \bibliography{local} \section{Appendix} Here is the list of currently visible public predicates exported by module Prolog. {\small \begin{verbatim} !/0 (#)/1 (#)/3 * /3 (+)/2 (+)/3 (++)/3 (,)/2 (-)/2 (-)/3 (-:)/2 (->)/2 (.)/2 (.)/3 / /3 // /3 (/\)/3 (:)/2 (:=:)/2 (;)/2 (<)/2 << /3 (=)/2 (=..)/2 (=:=)/2 (=<)/2 (==)/2 (=>)/2 (=\=)/2 (>)/2 (>=)/2 >> /3 (@<)/2 (@=<)/2 (@>)/2 (@>=)/2 C/3 (\)/2 (\)/3 (\+)/1 (\/)/3 (\=)/2 (\==)/2 ^ /2 abolish/2 abort/0 acos/2 add_cont/3 add_instr/4 add_true/2 all/3 all_but_at_least/4 append/3 appendN/2 append_conj/3 append_disj/3 apropos/1 apropos/2 arg/3 argn/3 arith_dif/2 arith_eq/2 asin/2 ask_engine/2 asm/0 asm/1 assert/1 asserta/1 assertz/1 assumed/1 assumei/1 assumel/1 atan/2 atom/1 atomic/1 bagof/3 bb/0 bb/1 bb_change_arg/3 bb_def/2 bb_def/3 bb_element/2 bb_get/4 bb_let/2 bb_let/3 bb_list/1 bb_list0/3 bb_op/3 bb_put/2 bb_reset/0 bb_rm/1 bb_rm/2 bb_set/2 bb_set/3 bb_val/2 bb_val/3 boot/0 bu0/3 bu1/1 bu_ctr/2 call/1 change_arg/3 char_in_cmd/2 clause/2 cmake/0 cmake/1 cmake/2 cnl/0 co/0 compare/3 compare0/3 compile/1 compound/1 consult/1 copy_term/2 copy_term/3 cos/2 create_engine/4 ctime/1 current_module/1 current_op/3 current_predicate/1 current_predicate/2 cwrite/1 dcg_connect/1 dcg_def/1 dcg_phrase/2 dcg_phrase/3 dcg_tell/1 dcg_telling/1 dcg_val/1 debug/1 def/3 destroy_engine/1 det_append/3 det_append0/3 dir/0 display/1 do_body/1 drop_at_least/2 (dynamic)/1 ed/0 edit/0 edit/2 emacs/0 erase/1 errmes/2 exists_file/1 exp/2 expand_term/2 expr/2 fail/0 false/0 fast_write/1 file_extension_list/1 file_library/2 file_search_path/1 find_at_most/4 find_file/2 find_while/4 findall/3 findall/4 findall_conj/3 findall_conj/4 findall_disj/3 findall_disj/4 findall_load_heap/1 findall_store_heap/1 findall_workhorse/5 float/1 float/2 float_fun/3 float_fun2/4 flush/0 for/3 free_variables/4 functor/3 gc_call/1 gc_read/1 gc_read_clause/1 gensym/2 get/1 get0/1 get_code/1 greater/2 greater_eq/2 ground/1 halt/0 halt/1 has_fuel/1 help/1 if/3 if0/3 include/1 init_gensym/1 input_float/4 instance/2 integer/1 integer/2 interactive/1 (is)/2 is_assumed/1 is_builtin/1 is_compiled/1 is_dynamic/1 is_module/1 is_prolog/1 is_public/1 iso_close_stream/2 iso_eof/1 iso_get_byte/2 iso_lseek/4 iso_open_stream/3 iso_peek_byte/2 iso_put_byte/2 iso_read_term/3 iso_write_term/3 ith_clause/4 kcmake/0 keysort/2 kmake/0 length/2 less/2 less_eq/2 let/3 lift_heap/2 list2term/2 list_asm/3 listing/0 listing/1 listing/2 log/2 log/3 ls/0 lval/3 lwrite/1 main/1 make/0 make/1 make/2 make/4 make/5 make0/4 make_appl/1 make_cmd/2 make_executable_unix_appl/3 make_file_name/4 member/2 member_i/4 meta_interpreter/1 metacall/1 mod/3 (module)/1 (module)/2 module_call/2 module_name/3 module_predicate/3 modules/1 my_edit/1 name/2 new_builtin/3 nl/0 nonvar/1 (nospy)/1 (not)/1 notepad/0 nth_answer/2 nth_member/3 number/1 numbervars/3 older_file/2 op/3 op0/3 or/2 otherwise/0 patch_it/4 phrase/2 phrase/3 pico/0 portable_display/1 portray/1 portray_clause/1 pow/3 pp_clause/1 pp_term/1 predicate_property/2 print/1 profile/0 (public)/1 put/1 put_code/1 quiet/1 quietmes/1 random/1 read/1 read_clause/1 read_term/2 read_tokens/2 read_with_singletons/3 reconsult/1 repeat/0 restart/0 retract/1 retractall/1 rm/2 saved/2 see/1 see_at/1 see_tell/2 see_tell_at/2 seeing/1 seeing_at/1 seeing_telling/2 seeing_telling_at/2 seen/0 seen_told/1 self_info/1 set/3 set_c_threshold/1 set_c_trace/1 setarg/3 setof/3 setref/2 shell/1 show_code0/2 sin/2 skip_until/2 skip_when/2 sort/2 (spy)/1 spy_goal/1 spying/1 sqrt/2 sread/2 load_engine/3 stat0/3 stat_dict/2 statistics/0 statistics/2 string_op/3 strip_cont/3 strip_cont0/2 swrite/2 symcat/3 system/1 tab/1 take_at_most/2 tan/2 tell/1 tell_at/1 telling/1 telling_at/1 term2list/4 term_append/3 term_chars/2 termcat/3 textedit/0 told/0 top_read_term/2 toplevel/0 tr_body/2 trace/1 true/0 ttyin/1 ttynl/0 ttyout/1 ttyprin/1 ttyprint/1 ttyput/1 ttywrite/1 ttywriteln/1 unix/1 unix_access/2 unix_argc/1 unix_argv/2 unix_cd/1 unix_getenv/2 unix_kill/2 user_error/2 val/3 var/1 vars_of/2 vi/0 warn_singletons/3 while/2 write/1 write_float/1 writeq/1 \end{verbatim} } BinProlog's default operator definitions (see file oper.pl) are the following: {\small \begin{verbatim} :-op(1000,xfy,','). :-op(1100,xfy,(';')). :-op(1200,xfx,('-->')). :-op(1200,xfx,(':-')). :-op(1200,fx,(':-')). :-op(700,xfx,'is'). :-op(700,xfx,'='). :-op(500,yfx,'-'). :-op(500,fx,'-'). :-op(500,yfx,'+'). :-op(500,fx,'+'). :-op(400,yfx,'/'). :-op(400,yfx,'*'). :-op(650,xfy,'.'). :-op(700,xfx,'>='). :-op(700,xfx,'>'). :-op(700,xfx,'=<'). :-op(700,xfx,(<)). :-op(700,xfx,(=\=)). :-op(700,xfx,(=:=)). :-op(300,fy,(~)). :-op(200,xfy,(^)). :-op(300,xfx,(mod)). :-op(400,yfx,(>>)). :-op(400,yfx,(<<)). :-op(400,yfx,(//)). :-op(500,yfx,(#)). :-op(500,fx,(#)). :-op(500,yfx,(\/)). :-op(500,yfx,(/\)). :-op(700,xfx,(@>=)). :-op(700,xfx,(@=<)). :-op(700,xfx,(@>)). :-op(700,xfx,(@<)). :-op(700,xfx,(\==)). :-op(700,xfx,(==)). :-op(700,xfx,(=..)). :-op(700,xfx,(\=)). :-op(900,fy,(not)). :-op(900,fy,(\+)). :-op(900,fx,(spy)). :-op(900,fx,(nospy)). :-op(1050,xfy,(->)). :-op(1050,xfx,(@@)). :-op(1150,fx,(dynamic)). :-op(1150,fx,(public)). :-op(1150,fx,(module)). :-op(1200,xfx,(::-)). :-op(900,yfx,(:)). :-op(600,xfx,(:=:)). :-op(950,xfy,(-:)). :-op(950,xfy,(=>)). :-op(600,xfx,(<=)). :-op(700,xfx,(=:)). :-op(700,xfx,(:=)). \end{verbatim} } \end{document} BinProlog3.45/doc/local.bib100644 764 764 14375 5715522441 14652 0ustar javierjavier@inproceedings{tdb95, author = {Tarau, Paul and Demoen, Bart and De Bosschere, Koen}, title = "The Power of Partial Translation: an Experiment with the C-ification of Binary Prolog", booktitle = "Proceedings of the 1995 ACM Symposium on Applied Computing", publisher = "ACM Press", address = "Nashville/TN", month = feb, year = 1995 } @TECHREPORT{Tarau92:WAMOpt, author={Tarau, Paul}, title = {WAM-optimizations in {B}in{P}rolog: towards a realistic Continuation Passing Prolog Engine}, institution = {Dept. d'Informatique, Universit\'{e} de Moncton}, number = "92-3", year = 1992, month = jul, note = "available by ftp from clement.info.umoncton.ca" } @InProceedings{Tarau93:GULP, title={Language issues and programming techniques in {B}in{P}rolog }, author={Tarau, Paul}, editor={Sacca, Domenico}, booktitle={Proceeding of the GULP'93 Conference}, year=1993, month=Jun, address = {Gizzeria Lido, Italy} } @inproceedings{Tarau92:ECO, author={Tarau, Paul}, title = {{E}cological {M}emory {M}anagment in a {C}ontinuation {P}assing {P}rolog {E}ngine}, pages = {344--356}, editor = {Y. Bekkers and J. Cohen}, booktitle = {Memory Management International Workshop IWMM 92 Proceedings}, year = 1992, month = Sep, publisher = {Springer}, series = {Lecture Notes in Computer Science}, keywords = {Logic Programming}, number = 637} } @inproceedings{Tarau90:PLILP, title={{E}lementary {L}ogic {P}rograms}, author={Tarau, Paul and Boyer, Michel}, pages={159--173}, editor={P. Deransart and J. Ma{\l}uszy{\'n}ski}, booktitle={Proceedings of Programming Language Implementation and Logic Programming}, year=1990, month=Aug, publisher={Springer}, series={Lecture Notes in Computer Science}, keywords={Logic Programming}, number=456} @inproceedings{Tarau91:JAP, title={A {S}implified {A}bstract {M}achine for the Execution of {B}inary {M}etaprograms}, author={Paul Tarau}, pages={119--128}, booktitle={Proceedings of the Logic Programming Conference'91}, year=1991, month=7, publisher={ICOT, Tokyo}} @inproceedings{Tarau91:RU, title={{P}rogram {T}ransformations and {WAM}-support for the {C}ompilation of {D}efinite {M}etaprograms}, author={Paul Tarau}, pages={462--473}, booktitle = {Logic Programming, RCLP Proceedings}, year = {1992}, editor = {Voronkov, Andrei}, publisher = {Springer-Verlag}, series = {Lecture Notes in Artificial Intelligence}, number = {592}, address = {Berlin, Heidelberg}, } @inproceedings{Tarau93a, class = "int-conference", author = "Tarau, P", title = "An Efficient Specialization of the WAM for Continuation Passing Binary Programs", booktitle = "Proceedings of the 1993 ILPS Conference", address = "Vancouver, Canada", year = 1993, note = "poster" } @inproceedings{kdb93f, class = "int-conference", author = "De Bosschere, K. and Tarau, P", title = "Blackboard-Based Logic Programming", booktitle = "Proceedings of the 1993 ILPS Conference", address = "Vancouver, Canada", year = 1993, note = "poster" } @inproceedings{Demoen91:RU, title={{I}mplementation of {P}rolog as binary definite {P}rograms}, author={Demoen, Bart and Mari\"{e}n, Andr\'{e}}, pages={165--176}, booktitle = {Logic Programming, RCLP Proceedings}, year = {1992}, editor = {Voronkov, Andrei}, publisher = {Springer-Verlag}, series = {Lecture Notes in Artificial Intelligence}, number = {592}, address = {Berlin, Heidelberg}, } @TECHREPORT{Demoen90:KUL, author={Demoen, Bart}, title = {On the {T}ransformation of a {P}rolog Program to a more efficient {B}inary Program}, institution = "K.U.Leuven", number = "130", month = dec, year = 1990, } @inproceedings{LOPSTR93:Neumerkel, author="Ulrich Neumerkel", title= "A Transformation Based on the Equality between Terms", booktitle= "Logic Program Synthesis and Transformation, LOPSTR 1993", publisher = "Springer-Verlag", year = "1993" } @PHDTHESIS{Neum92, author = "Neumerkel, Ulrich", title = "Specialization of {Prolog} Programs with Partially Static Goals and Binarization", type={PhD thesis}, school={Technische Universit\"{a}t Wien}, year = 1992, } @Misc{lindgren, author = "Lindgren, T.", title = "Compiling Logic Programs Using a Binary Continuation Style", month = dec, year = 1992, note = "draft, Uppsala University" } @TECHREPORT{WA83, author={Warren, D. H. D.}, title = "An {A}bstract {P}rolog {I}nstruction {S}et", institution = "SRI International", type="Technical Note", number=309, month = Oct, year = 1983, } @inproceedings{TD94:WE, author={Tarau, Paul and Demoen, Bart}, title = {Language Embedding by Dual Compilation and State Mirroring}, booktitle = {Proceedings of 6-th Workshop on Logic Programming Environments, Santa Margherita Ligure, 1994}, year = 1994, month = Jun, comment = "describes the BinProlog Tcl/Tk interface and its design principles" } @inproceedings{TA94:JFPL, author={Tarau, Paul}, title = {Low Level Issues in Implementing a High-Performance Continuation Passing Binary Prolog Engine}, booktitle = {Proceedings of JFPL'94}, year = 1994, month = jun, editor = {M.-M. Corsini} } @inproceedings{TN94:PLILP, author={Tarau, Paul and Neumerkel, Ulrich}, title = {A {N}ovel {T}erm {C}ompression {S}cheme and {D}ata {R}epresentation in the {B}in{WAM}}, booktitle = {Proceedings of Programming Language Implementation and Logic Programming}, year = 1994, month = sep, publisher = {Springer}, series = {Lecture Notes in Computer Science}, keywords = {Logic Programming}, } @inproceedings{kdb93j, author = "De Bosschere, K. and Tarau, P.", title = "{H}igh {P}erformance {C}ontinuation {P}assing {S}tyle {P}rolog-to-{C} {M}apping", booktitle = "Proceedings of the 1994 ACM Symposium on Applied Computing", publisher = "ACM Press", editor = "Deaton, E. and Oppenheim, D. and Urban, J. and Berghel, H.", address = "Phoenix/AZ", pages = "383--387", month = mar, year = 1994 } @inproceedings{kdb93d, class = "int-conference", author = "De Bosschere, K. and Tarau, P.", title = "{B}lackboard {C}ommunication in {L}ogic {P}rogramming", booktitle = "Proceedings of the PARCO'93 Conference", address = "Grenoble, France", month = sep, year = 1993 } BinProlog3.45/doc/makefile100644 764 764 1075 5757001202 14544 0ustar javierjavierall: art.dvi art.ps art.txt art.dvi: art.tex art.bbl latex art art.bbl: local.bib latex art bibtex art latex art art.tex: latex art art.txt: art.dvi dvi2tty -u -l -w112 -o art.txt art art.ps: art.dvi dvips -f art.dvi > art.ps ps: art.ps ghostview art.ps print: art.ps lpr art.ps nprint: art.tex lpr -#6 art.ps bak: art.tex cp makefile art.tex bak x: art.dvi xdvi art see: art.tex dvi2tty -l -w112 art wc: dvi2tty -l -w132 art | wc clean: rm -f *.aux *.blg *.log *.dlog realclean: clean rm -f *.bbl *.dvi *.ps *.txt BinProlog3.45/doc/bp.1100644 764 764 5076 5634104370 13540 0ustar javierjavier.nr X .TH bp 1 "1 Sep 1994" .SH NAME bp \- BinProlog System .SH SYNOPSIS \f4bp\f1 [\f4\-h\f2 n\f1] [\f4\-s\f2 n\f1] [\f4\-t\f2 n\f1] [\f4\-c\f2 n\f1] [\f4\-b\f2 n\f1] [\f4\-i\f2 n\f1] [\f2filename\f1] .SH AVAILABILITY .LP Various Unix systems and 32-bit extended DOS+Windows 3.1 .SH DESCRIPTION BinProlog has been developped by Paul Tarau mostly at the University of Moncton, Canada, and is based on his BinWAM abstract machine, a specialization of the WAM for the efficient execution of binary logic programs. BinProlog is a fairly complete Prolog implementation featuring both C-emulated execution and generation of standalone applications by compilation to C. Some other features are: Tcl/Tk interface, C-compatible floating point operations, dynamic code, intuitionistic and linear implication, efficient high-order programming builtins, logical global variables, backtrackable destructive assignment, circular term unification, extended DCGs (now built in the engine as `invisible grammars'), continuation manipulation primitives, a garbage-collected hashing based global dictionnary for constant-time sparse arrays and graphs, a C-interface (optional with C-source licensing) etc. The \f4bp\fP command starts the BinProlog toplevel. The directory \f4wam2c\fP contains a project (*.pro) file and a makefile for generating a standalone application through compilation to C. The directory \f4TCL\fP contains a bidirectional pipe based BinProlog to Tcl/Tk interface. The directory \f4cparser\fP contains Koen De Bosschere's ISO Prolog parser (written in C) and BinProlog standalones based on the parser (cbp.*). The directory \f4multi\fP contains Koen De Bosschere's blackboard based distributed programming extension to BinProlog and BinProlog executables for Solaris 2.3 which integrate them (mbp.*) .SH OPTIONS .TP 10 .B \-h\f2 n\f1 .B Heap size in Kb. .TP .B \-s\f2 n\f1 .B Stack size in Kb. .TP .B \-t\f2 n\f1 .B Trail size in Kb. .TP .B \-c\f2 n\f1 .B Code size in Kb. .TP .B \-b\f2 n\f1 .B Basement size in Kb. .TP .B \-d\f2 n\f1 .B String Input-Output buffer in Kb. .TP .B \-d\f2 n\f1 .B Exponent of 2 giving the number of entries in the global hashing table. .TP .B \-a\f2 n\f1 .B Exponent of 2 giving the number of entries in the atom table. .TP .B \-q\f2 n\f1 .B Level of quietness to suppress some verbose messages. .TP .B \f2filename \f1 .B Prolog run time system. When omitted, the filename wam.bp is used by default. .SH NOTES The latest release can be obtained by ftp from: clement.info.umoncton.ca. Send bug reports and requests for licensing information to binprolog@info.umoncton.ca. BinProlog3.45/doc/multi.tex100664 764 764 15616 5765041525 14763 0ustar javierjavier\documentstyle[11pt]{article} \textheight 21 cm \textwidth 14 cm \topmargin -1mm \marginparwidth 0mm \evensidemargin 1.5 cm \oddsidemargin 1.5 cm \begin{document} \pagestyle{plain} \title{ \Huge Multi-BinProlog 3.45 \\ User Guide \\ \vskip 5cm } \author{ \Large Koen De Bosschere \\\\ \large Vakgroep Elektronica en Informatiesystemen \\ Universiteit Gent \\ St.-Pietersnieuwstraat 41, B-9000 Gent, Belgium\\ kdb@elis.rug.ac.be \\ \normalsize } %\date{} \vskip 5cm \maketitle \newpage \section{Introduction} This is a short description of Multi-BinProlog, an implementation of a Linda-Based blackboard in the BinProlog language. This implementation requires Sun Solaris 2.4 and a Sparc to run on. This implementation supports both local an virtual blackboards. A local blackboard is based on the use of shared memory whereas a virtual blackboard is pointing to a blackboard on another machine. All blackboard operations are automatically forwarded to the remote blackboard. \section{Primitives} The primitives that are currently supported are \begin{itemize} \item {\tt blackboard(name)} creates the blackboard {\tt name} if it does not yet exist. If the blackboard already exists, nothing happens. On backtracking, the blackboard is not removed. The blackboard name should be an atom. \item {\tt blackboard(Name)} creates a blackboard, and automatically generates a unique name for it. \item {\tt blackboard(name, host, server, bboard)} creates a virtual blackboard {\tt name} that points to the blackboard {\tt bboard} on machine {\tt host} that is running the blackboard server {\tt server}. Furthermore, this predicate behaves like {\tt blackboard/1}. \item {\tt server(sname)} creates a blackboard server with name {\tt sname} (this name cannot be longer than 4 characters and must be a symbolic constant). \item {\tt bbkill(name)} physically removes blackboard {\tt name}. In the case of a virtual blackboard, only the virtual blackboard is removed, not the local blackboard. \item {\tt blackboards(List)} unifies {\tt List} with the list of currently existing blackboards. \item {\tt processes(List)} unifies {\tt List} with the list of current processes. \item {\tt kill(Process)} kills process {\tt Process}. \item {\tt bbclean(name)} empties blackboard {\tt name}. \item {\tt bbempty(name)} succeeds when blackboar {\tt name}d is empty, fails otherwise. \item {\tt bbterms(name,List)} unifies {\tt List} with the list of terms that are currently residing on blackboard {\tt name}. \item {\tt bbprocesses(name,List)} unifies {\tt List} with the list of processes that are currently suspended on blackboard {\tt name}. \item {\tt bbinfo(name,List)} unifies {\tt List} with information about blackboard {\tt name}. \item {\tt processinfo(proc, List)} unifies {\tt List} with information about process {\tt proc}. \item {\tt bbmem(name,List)} unifies {\tt List} with the current status of the free memory of blackboard {\tt name}. \item {\tt bbmalloc(name,size)} increases the internal memory of blackboard {\tt name} with a block of {\tt size} bytes. The argument {\tt size} must be a power of two and must be available. This block is taken from the {\tt pool}. \item {\tt bbfree(name,size)} decreases the internal memory of blackboard {\tt name} with a block of {\tt size} bytes. The argument {\tt size} must be a power of two. This block is returned to the {\tt pool}. \item {\tt poolmem(List)} unifies {\tt List} with a description of the free memory in the pool. \item {\tt tellp(goal)} creates a parallel thread to execute {\tt goal}. This goal should not use IO because in this version the IO module still contains some routines that are not thread-safe. \item {\tt bbhelp} shows the currently available blackboard-related commands. \item {\tt bbshow(name)} displays a summary of the current status of blackboard {\tt name}. \item {\tt bblock(name)} locks blackboard {\tt name} until {\tt bbunlock(name)} is called. Most blackboard operations can still be executed after a blackboard has been locked. On backtracking, the blackboard is unlocked. \item {\tt bbunlock(name)} is the dual of {\tt bblock(name)}. \item {\tt tellt(name,T)} puts the term {\tt T} on the blackboard {\tt name}. \item {\tt gett(name,T)} removes a term that unifies with {\tt T} from blackboard {\tt name}. It suspends until the right term is found. On backtracking it removes the next term that unifies. \item {\tt gett(name,T,C)} removes a term that unifies with {\tt T} and satisfies condition {\tt C} from blackboard {\tt name}. Same behavior as {\tt gett/2}. \item {\tt readt(name,T)} looks for a term that unifies with {\tt T} on blackboard {\tt name}. It suspends until the right term is found. The term is not removed. On backtracking is looks for the next term. \item {\tt readt(name,T,C)} looks for a term that unifies with {\tt T} and satisfies condition {\tt C} on blackboard {\tt name}. Same behavior as {\tt readt/2}. \item {\tt gett\_nb(name,T)} has the same behavior as {\tt gett/2} but fails instead of suspending. \item {\tt gett\_nb(name,T,C)} has the same behavior as {\tt gett/3} but fails instead of suspending. \item {\tt readt\_nb(name,T)} has the same behavior as {\tt readt/2} but fails instead of suspending. \item {\tt readt\_nb(name,T,C)} has the same behavior as {\tt readt/3} but fails instead of suspending. \end{itemize} Any Multi-BinProlog application has a default blackboard ({\tt stdbb}) that is used when no blackboard is specified (hence, {\tt bbterms(X)} returns the same answer as {\tt bbterms(stdbb,X)}). \section{Example} \subsection*{Local blackboard} \begin{verbatim} go :- blackboard(board), % create blackboard bbmalloc(board,4096), % increase blackboard memory tellp(producer(50)), % create producer tellp(consumer), tellp(consumer), % create consumers gett(done), gett(done), % wait until finished bbkill(board). % remove blackboard producer(0) :- tellt(board,end_of_data), !. producer(N) :- tellt(board,N), N1 is N-1, producer(N1). consumer :- gett(board,X), X==end_of_data, tellt(board,end_of_data), % restore token for other consumers tellt(done). % for main program \end{verbatim} \subsection*{Virtual blackboard} Server side (machine name aa.rr.edu): \begin{verbatim} go :- blackboard(remote), % create a blackboard server(test), % creation of the blackboard server tellt(remote, 1). % initialize the blackboard \end{verbatim} \noindent Client side: \begin{verbatim} go :- blackboard(virtual, 'aa.rr.edu', test, remote), gett(virtual, 1), % operations on virtual blackboard tellt(vitual, 2), % as if it were a local blackboard bbkill(virtual). % only virtual board is killed \end{verbatim} \section{Remark} Please report any bugs you find to {\tt kdb@elis.rug.ac.be}. \end{document} BinProlog3.45/doc/tcl.tex100644 764 764 45406 5634443511 14405 0ustar javierjavier\newtheorem{df}{Definition} \newtheorem{th}{Theorem} \newtheorem{ex}{Example} \documentstyle{article} \begin{document} \title{Language Embedding by Dual Compilation and State Mirroring: implementing a portable Tcl/Tk-Prolog interface} \author{ Paul Tarau\\\ D\'ept. d'Informatique \\ Universit\'e de Moncton\\ tarau@info.umoncton.ca\\\ \and Bart Demoen\\\ Dept. of Computer Science\\ Katholieke Universiteit Leuven\\ bimbart@cs.kuleuven.ac.be\\\ } \date{} \maketitle % page numbering \pagestyle{plain} % page numbering off %\pagestyle{empty} \begin{abstract} We give an abstract scheme for the embedding of two languages with strong meta-programming, parsing and structure manipulation capabilities. We provide a call-back mechanism requiring each language to {\em compile} its service requests to the other's syntax for processing through the other's {\em meta-programming} capabilities. {\em State mirroring} ensures that only differential information needs to be transmitted. We describe a practical implementation of these principles and our experience with the {\bf BinProlog Tcl/Tk} interface. Compilation by each side, that targets the other's syntax and dynamic object manipulation capabilities, achieves in {\em less than two hundred} lines of code, a fully functional integration of the two systems. The environment is portable to any Prolog system to which it adds powerful graphic and transparent distributed network programming facilities. Our approach suggest that logic programming language-processors can be made to fit easily in a multi-paradigm programming environment with little programming effort by using their strong {\em language translation} and {\em meta-programming} capabilities. {\em Keywords:} multi-paradigm programming, visual environments for logic programming languages, meta-programming, Prolog graphic interface. \end{abstract} \section{Introduction} Integration of various programming paradigms is a necessity in modern programming environments. Monolithic language implementations tend to be replaced more and more by a combination of specialised {\em tools}. In particular, generic graphic processors can be connected to various languages which do not need their own graphic primitives anymore. However, when there's a large semantic distance between the languages and they feature radically different computational models, a low-level interface is a painful and not always rewarding programming task. It happens very often that when the interface is finished one of the sides of the interface just becomes obsolete because of rapid evolution. This is especially true with various windowing systems which are often machine/operating system dependent. The aim of this paper is to propose an unusually quick interfacing technique which uses meta-programming capabilities on the two sides. The basic idea is to link the two languages through a standard client-server interface and have each of them drive the other as an interactive agent, by generating the appropriate code on the fly. By mirroring the state of the objects, only state changes have to be transmitted from one side to the other, so that the granularity of the interaction will not become a bottleneck. Moreover, if one side has the capacity to react to events, this property will be inherited with minimal programming effort by the other side. This paper is motivated by our work on finding a simple and portable way to add a visual programming environment to Prolog systems. The popular Tcl/Tk visual language by John Ousterhout \cite{Oust:TclTk} is basically a a composite of a shell-like interpreted programming language (Tcl) and a high-level Motif-style graphic package (Tk). Tcl is an untyped string-only language with strong meta-programming facilities (i.e. an {\em eval} primitive and dynamic procedure creation). After describing a general language-processor interaction model we will report how it has been applied to an interface between BinProlog \cite{Tarau93:GULP}, and Tcl/Tk and how this interface has been ported to another Prolog system (Prolog by BIM) with minimal programming effort. \section{An abstract multi-language communication model} Let {\tt L} and {\tt R} be two languages, $t_{L,R}$ a translation function (compilation) from L to R, $t_{R,L}$ the reverse translation from {\tt R} to {\tt L}. Let $e_L$ and respectively $e_R$ be the {\em eval} operations of {\tt L} and {\tt R}. Let $r_L$, $w_L$, $r_R$ and $w_R$ denote the read and write operations of languages L and R. An $L_R$-processor is a process with capabilities to \begin{enumerate} \item execute programs written in L \item implement a translation function from L to R. \end{enumerate} We say that two language processors $L_R$ and $R_L$ are {\em connected} if the following conditions are verified: \begin{enumerate} \item each {\em translate+write} operation on one side triggers exactly one {\em read+eval} operation on the other side, \item one or more\footnote{The ability to trigger more than one {\em translate+write} is needed for instance when more than one task has to be initiated or more than on component of the state of one side has to be updated in a transaction. } {\em translate+write} operations can be triggered by each {\em eval} operation. \end{enumerate} {\flushleft This} can be formalized more precisely in terms of temporal modal operators. Our {\em write} and {\em read} operations should not be confused with ordinary input-output primitives. More precisely they are abstracted from the subset of input-output operations which can be meaningfully translated and are therefore suitable as input for the other side's eval functions. Thus they can be seen as carrying messages from an $L_R$ processor to an $R_L$ processor. We say that an $L_R$ and an $R_L$ processor are {\em fairly interacting} if \begin{enumerate} \item each write operation on one side will be eventually read on the other side \item the behaviour of each side is observable on the other side in terms of a sequence of successive read and write operations \end{enumerate} If for two $L_R$ and $R_L$ language processors are {\em connected} and their read and write operations are queued, then they are {\em fairly interacting}. We will break this fully symmetric behaviour by defining a {\em slave} language-processor as one that passively waits for write operations from the other side and a {\em master} language-processor which reacts to a write operation by a corresponding read operation with its result passed to its {\em eval} operation. We suppose also that the user interacts only with the master. As only the slave waits blocked on read operations, the master is free to be `multi-threaded' or event-driven. \section{The BinProlog to Tcl/Tk interface} As an instance of this general scheme, we have chosen to connect BinProlog as a `slave process' to a Tcl/Tk {\em wish} shell enhanced with reactive capabilities given by the {\em addinput} facility~\footnote{ A modification of the Tcl/Tk event loop ( freely available from ftp.neosoft.com) which enables it to react to the presence of new input by triggering the execution of a user specified procedure when input becomes available.}. A specialized BinProlog toplevel is launched from the Tcl/Tk shell as a background Unix process connected through a bidirectional pipe. The BinProlog process is able to generate and react to Tcl/Tk events. The interface uses tcl7.3 with tk3.6 combined with addinput-3.6a. It consists of 91 lines of Prolog and 101 lines of (commented) Tcl code. Thanks to the strong meta-programming capabilities of both languages the interface boldly {\em compiles} messages from one side to evaluable representations on the other side and calls the appropriate {\em eval} operation. The interface is portable to other Prolog systems and requires no C-programming. The installation of a BinProlog slave on the `event channel' handled by {\tt addinput} is done as follows: {\small \begin{verbatim} proc start_prolog {} { # Opening a bidirectional pipe to BinProlog # under control of the addinput facility set f [open "|bp -q5 server.bp" r+] addinput $f "bpInOut %% %E %F" } \end{verbatim}} {\flushleft Output} from the BinProlog slave {\tt bp server.bp} activates a Tcl/Tk procedure which executes on a {\em new} Tk-interpreter without disturbing normal interaction with the {\em wish} shell. Basically, performance is not affected by the parsing as this is kept minimal. Moreover in systems with a parser written in C (as Prolog by BIM or the Koen De Bosschere's ISO-parser based version of BinProlog) parsing is in itself fast enough not to dominate the interaction cost. Techniques as {\em state mirroring} which will be discussed in the next section are also used to minimize the communication overhead. High-level primitives on the Tcl/Tk side ensure that output to Prolog are valid Prolog terms. On the Prolog side a special toplevel loop reads the Tcl/Tk message, and applies its eval operation (call/1) to it. To avoid spurious interaction due to syntax errors or unexpected messages on each side only lines having a reserved header (i.e. \verb~call_prolog~ and respectively \verb~call_tcl~) are evaluated. However, to give the look and feel of interacting with a Prolog system, messages from Prolog which are not of the form \verb~call_tcl {...}~ will be printed out as such. This fits well with Tcl which is string oriented but would not fit well with a term-oriented language like Prolog without parser modifications. \subsection{State mirroring} State mirroring is a simple technique that consists of duplication by a given language processor of (relevant) state information of an interactively connected other language processor. In the case of Prolog, we have chosen to avoid the representation of states by infinite forward loops for two reasons: \begin{enumerate} \item unexpected failure would make the system unreliable and hard to debug \item unexpected delays induced by garbage collection would make a visual interface unpleasant to use \end{enumerate} Fortunately, BinProlog's blackboard turned out to be the perfect match to mirror the state of various Tcl/Tk objects. A library emulating BinProlog's blackboard operations in terms of generic Prolog dynamic database operations has been used to achieve the same effect in the Prolog by BIM port of the interface. \subsection{Programming with the embedded environment} Using the BinProlog-Tcl/Tk interface is very simple. Let \verb~

~ be the name of the composite program. Suppose the user creates 2 files \verb~

.tcl~ and \verb~

.pl~. The composite `program' can be executed as follows: {\small \begin{verbatim} $ wish % source

.tcl \end{verbatim}} {\flushleft \verb~

.tcl~ is expected} to have at its end something like: {\small \begin{verbatim} start_prolog p {compile(

)} \end{verbatim}} {\flushleft The} user will get the usual Tcl command prompt to interact with either Tcl or Prolog. A command entered at the Tcl prompt normally `goes to' Tcl except for the following: {\small \begin{verbatim} start_prolog -connects to a new Prolog process halt_prolog -terminates the Prolog process: p {} -sends a goal to Prolog for quiet evaluation q {} -sends a query to Prolog and gets back answers \end{verbatim}} {\flushleft After} being activated by one of the previous (p or q) Tcl commands a Prolog goal may `call back' to continue the dialog with Tcl/Tk using the following Tcl command on the Prolog side: {\small \begin{verbatim} call_tcl/1 -sends to Tcl a command to be immediately evaluated in `background', while the Tcl shell prompts and waits for Tcl or Prolog commands. \end{verbatim}} {\flushleft Output} with {\tt puts} (Tcl) or {\tt write/1} (Prolog) goes as usual to the {\tt stdout} of the Tcl shell. \subsection{A visual N-queens program} This program illustrates two simple-minded but useful features of the interface: \begin{enumerate} \item Prolog lists are sent to Tcl as Tcl-lists \item Prolog simply pumps solutions one by one using their most natural representation through \verb~call_tcl(display_queens(L))~. \item synchronization is done as follows: \begin{itemize} \item the user provides mouse events generating write operations \item the prolog process waits for input on a read operation until asked for another answer \end{itemize} \end{enumerate} Equivalently, the user can also control the Prolog program from Tcl's command line by typing in "p more" or "p done" messages. The code on the Prolog side consists of a classic N-queens program, the generic prolog interface program server.pl and the clause: {\small \begin{verbatim} qs(N):- queens(N,L), call_tcl(display_queens(L)), % sends a display request write('type

when finished

otherwise'),nl, in(call_prolog(done)),!. % waits for `done' or `more' \end{verbatim}} {\flushleft The} code on the Tcl/Tk side consists of the generic server.tcl interface program, routines to set up the visual display and procedures like \verb~show_queen~, \verb~hide_queen~ which are called by the main Tcl/Tk-side routine: {\small \begin{verbatim} proc display_queens {qs} { global w count incr count hide_queens set l 0 foreach q $qs { incr l show_queen $w [expr $l -1] [expr $q -1] } } \end{verbatim}} {\flushleft This} procedure simply counts the answers and updates the display when a new answer comes from Prolog, triggered by the presence of new input on the pipe. % \subsection{A visual heap-measurement tool} \subsection{Performance evaluation} Tcl/Tk is itself a glue language which links together large blocks of C-code. We have written a naive-reverse program and measured that it executes in Tcl between 20-50 times slower than in BinProlog. This definitely suggests that our technique, using relatively expensive parsing and compilation operations will not become itself an interaction bottleneck and therefore due to the much higher flexibility and almost instant portability between various Prolog systems this approach looks superior to a highly Prolog-specific C-level integration. As BinProlog is a much faster symbolic processor than Tcl, we have decided to do most of the translation operations on the Prolog side. We have measured about 1500 BinProlog-Tcl/Tk exchanges per second on a Sparcstation 2 and 700-800 exchanges on a Sparcstation 1, both serving the same Tektronix X-terminal through a network. This confirms that the interface is fast enough for complex real time visualisation tasks and pleasant to use in a average Unix environment. \subsection{Porting the interface to another Prolog} It took one hour to make the interface work with ProLog by BIM. The main change was to modify \verb~start_prolog~ on the Tcl side to start a ProLog by BIM process with: {\small \begin{verbatim} set f [open "|bim server.pro" r+] \end{verbatim}} {\flushleft The} ProLog by BIM process is initialized from a small new toplevel \verb~server.pro~. The one hour work had more to deal with the differences between the two Prolog systems, than the interface itself. Moreover, code written for one Prolog system (like the {\tt N-queens} program) runs without changes on the other, as far as it is written in portable Prolog. We think this compares favorably with a dedicated piecewise interface written in C for each Prolog graphic builtin in terms of programming effort, portability and learning curve for the user, and, as our performance evaluation has shown, with reasonable real-time interactivity. \section{Related work} The only other Prolog with Tcl/Tk interface we know of is that developed by Micha Meier at ECRC \cite{Meier:TclTk} as the standard Eclipse GUI, although ongoing work on SICStus Prolog may also lead to a such an interface in the future. Micha Meier's interface is tightly integrated (at C-level) and Eclipse specific (although a Sicstus port is also provided). The tighter integration is better (in principle) in the case of a very low granularity communication, although the programming effort to implement it is more considerable than ours. Our performance analysis shows that global costs are dominated by process switching, graphic manipulations and brute force processing in Prolog. Moreover, our interface, does not rely on a specific Tcl/Tk implementation and has no modification to the C-code neither on the Prolog emulator neither on the Tcl/Tk side. Because of this reasons, we believe that the simplicity and portability of our design is a clear advantage, especially in the context of rapidly evolving backward incompatible Tcl/Tk releases. \section{Future work} We plan to make the interface fully Prolog-independent and to write Prolog libraries to support various existing Tcl/Tk extensions and tools for distributed Tcl/Tk programming, automatic interface generators etc. A Tcl/Tk based generic Prolog toplevel would also be very helpful to give the full illusion of {\em being in Prolog} while benefiting of visual goodies of a Tcl/Tk shell. \section{Conclusion} We have outlined a generic programming framework for a seamless integration of two programming languages which have `eval' capability and implemented an instance of the framework as a Prolog to TCL/Tk interface. Our experiments show that support for metaprogramming tools in modern programming environment is important not only for the expressiveness of the language itself but also multi-paradigm language integration. We have shown that with a reduced programming effort a powerful interface can be built between a Prolog system and a state-of-the art visual environment. This suggests that embedding of a logic engine in a generic multi-language environment is competitive in functionality and performance with the traditional approach which advocates to hardwire in the Prolog system a set of language-specific extensions. The code for the interface can be obtained by ftp from {\bf clement.info.umoncton.ca} and has been integrated in the BinProlog 2.20 distribution. \section{Acknowledgements} Paul Tarau thanks for support from K.U.Leuven through Fellowship F/93/36, from NSERC (grant OGP0107411) and from the FESR of the Universit\'{e} de Moncton. Bart Demoen thanks the Belgian Ministry (DPWB) for support through project IT/IF/4. Special thanks go to the referees for their useful comments and suggestions. \begin{thebibliography}{1} \bibitem{Meier:TclTk} M.~Meier. \newblock The {E}clipse tcl/tk interface, 1993. \newblock Program, publicly available on INTERNET. (ftp.ecrc.de). \bibitem{Oust:TclTk} J.~Ousterhout. \newblock Tcl/tk, 1993. \newblock Program, publicly available on INTERNET (harbor.ecn.purdue.edu). \bibitem{Tarau93:GULP} P.~Tarau. \newblock Language issues and programming techniques in {B}in{P}rolog. \newblock In D.~Sacca, editor, {\em Proceeding of the GULP'93 Conference}, Gizzeria Lido, Italy, June 1993. \end{thebibliography} %\bibliographystyle{abbrv} %\bibliography{../biblio} \end{document} BinProlog3.45/doc/art.dvi100644 764 764 414564 5764565251 14432 0ustar javierjavier; TeX output 1995.06.05:0829s}ndffDtHGcmr17BinProlog3.45UserGuideVI/XQ ff cmr12Paul/T4arauXQ cmr12Departemenrtd'InformatiqueeUnivrersitsedeMonctonMoncton,Canada,E1A3E9,tarau@info.umoncton.calYtJune5,1995eK`y 3 cmr101*s}n}*0Nff cmbx121BInstallationq*1. Tto`bp'6-/somewhereinyourpath,thentype`bp'.e;۹Normallyhtheappropriate`w!am'(aC-i edselfcontainedexecutable)or(forsome*oldarc!hitectures)typing`ruwam.bp'(pMossiblyasmall`bp'shell-script)areallyou*needMtoha!veMBinProlog3.45running.yFeorDOS/Windo!ws386/486PCsyouwill*ha!vetoeditbp.batwithy!ourpathinformationandthentypMebp.Somethinglike*`go32fru.386w!am.bp'directlyLinthedistributiondirectoryshouldalsowork.;TeofstartBinProloguse*$bp;۹orfsimply*$bp;۹Sizesgoftheblac!kbMoard,heap,stack,trailgandcoMdeareascanbepassedascom-*mandflineparametersetc,inKb!ytes:*usage:[-hheap][-sstac!k][-ttrail][-ccoMde][-bbboard][-a2^fatoms][-d2D^hash!table*en!tries]f[-isizeofIO-bu er][-qquietness]wam le(default:wam.bp)."O؍*2BObtainingffBinPrologq*۹ThefORIGINALDISTRIBUTIONSITEforBinProlog|{Ycmr81fjis:;ftpclement.info.umoncton.ca(139.103.16.2)*۟ nffU? L͍ {-=Aacmr61a:o cmr9BinPrologTCop9yrightc< cmsy9 jPaulT:arau1992-94Allrightsreservede2s}n}*۹infthedirectory:6-//pub/BinProlog.*۹TheNwftpserv!erclement.info.umoncton.caisaSparcstationELCN`withSUNOS4.1.1). *Pleasefsendcommen!tsandbugrepMortstobinprolog@info.umoncton.ca."A*3BIntros3ductionfftoBinPrologq*۹BinProloghasbMeendev!eloppedb!yPaulTearaumostlyattheUniversityofMoncton,*Canada,qandisbasedonhisBinWȈAMabstractmac!hine,aspMecializationofthe*WȈAMffortheecien!texecutionofbinarylogicprograms.;BinPrologP5isafastandsmallPrologcompiler,zbasedonthetransformationof*Prologatobinaryclauses.7Thecompilationtec!hniqueissimilartotheContinuation*P!assingfStyletransformationusedinsomeMLimplementations.;Althoughhit(usedto)incorpMoratesomelastmin!uteresearchexpMeriments,twhich*migh!tloMokadventurousatthe rstsight,XBinPrologisafairlyrobustandcom-*pletePrologimplemen!tationfeaturingbMothC-emulatedexecutionandgenerationof*standalonefapplicationsb!ycompilationtoC.Someofitsfeaturesare:;3!", 3 cmsy10F ߹source-lev!elftransformationbasedstatelessmoMdulesystem;F ߹dynamicfcoMde,;F ߹in!tuitionisticfandlinearimplication,;F ߹ecien!tfhigh-orderprogrammingbuiltins,;F ߹logicalfglobalvdDariables,;F ߹bac!ktrackdDablefdestructiveassignment,;F ߹circularftermuni cation,;F ߹extended)vDCGs(no!wbuiltintheengineas`HiddenAccumulatorgrammars'),;F ߹con!tinuationfmanipulationprimitiv!es,;F ߹agarbage-collectedhashingbasedglobaldictionnaryforconstan!t-timesparse F arra!ysfandgraphs,;F ߹C-compatiblef oatingpMoin!toperations,;F ߹afC-in!terfaceetc.;Newffeaturesinaddedinv!ersion3.30:;F ߹source-lev!elfmoMdulese3 Us}n};F ߹fasterfcompilationtoCandfasterresultingC-coMde;F ߹v!eryfsmall(dynamicallylinked)standaloneexecutables(5K)forSolaris2.x;F ߹impro!ved(8( leeventbased)Tcl/Tkinterfacenowrunningundertcl7.4b2and F tk4.0b2;F ߹help/1fdetectingnear-matc!hingpredicatede nitions;F ߹helpfw!arningsforsingletonvdDariables;F ߹sp!y/1ffordebuggingcompiledcoMde;Newffeaturesinaddedinv!ersion3.45:;F ߹abilit!yftostartmultipleenginesfromPrologorC;F ߹impro!vedfC-interfacenowmovedtoitsowndirectorycffs#inter;F ߹onef le32bitDOSandWindo!ws3.1executables(seedirectorypc);ThefbpcommandstartstheBinPrologtoplev!el.;Prologfsourcesforthecompilerandbuiltinsareindirectorysrc.;TheDdirectoriespl2canddynpl2c con!tainDvdDariousproject(*.pro) lesanda*mak!e lefforgeneratingastandaloneapplicationsthroughcompilationtoC.;The1directoryTCLcon!tainsabidirectionalpipMebasedBinPrologtoTcl/Tkin-*terface.;Thedirectorycparsercon!tainsKoMenDeBosschere'sISOPrologparser(written*infC)andBinPrologstandalonesbasedontheparser(cbp.*).;Thedirectorymulticon!tainsKoMenDeBosschere'sablackbMoardbaseddis-*tributedprogrammingextensiontoBinPrologandBinPrologexecutableswhic!hin-*tegratefthem(m!bp.*).R*N cmbx123.1ImBinarization*۹BinPrologisasmall,program-transformationbasedcompiler.iEv!erythingiscon-*v!ertedftoContinuationPassingBinaryClauses:*Afrulelik!e6-/a(X):-b(X),c(X,Y),d(Y).*۹bMecomes6-/a(X,Cont):-b(X,c(X,Y,d(Y,Cont))).*۹Affactlik!ee4:s}n}6-/a(13).*۹bMecomes6-/a(13,Cont):-true(Cont).*۹Afpredicateusingmeta!vdDariableslike6-/p(X,Y):-X,Y.*۹bMecomes6-/p(X,Y,Cont);-call(X,call(Y,Cont))).*۹withftrue/1andcall/2ecien!tbuiltinsinBinProlog. ;Yeou\canno!wtryoutinBinProlog3.45yourownbinaryprogramsbyusing::-*۹insteadWof:-sothatthepreproMcessorwillnottouc!hthem2.:Otherwise,fromthe*outside,fBinPrologloMokslik!eanyotherProlog.;Binarizationallo!wsasigni cantsimpli cationofthePrologengine,hwhichcanbMe*seen4or.plor.pro:G-/?-[].*۹BinProlog:searc!hestheminthedirectories.,./progsand../src../library,*relativ!eLtotheBPffs#PATH5environmentvdDariablewhichdefaultssilentlytothecurrent*directoryifunde ned.sThedirctory./myprogsisalsosearc!hedforpMossibleuser*programs. qWhile9compatibletopreviouscon gurationswhic!hwheresingleuser*minded,zthisCallo!wsinstallingtheBinPrologdistributonforshareduseinaplace*lik!ef/usr/local/BinProlog4R*4.2ImUsingmultiplelogicengines*۹Anew(expMerimen!tal)featureaddedstartingwithversion3.39alowslaunchingmul-*tiplelPrologenginesha!vingtheirownstackgroups(heap,wloMcalstackandtrail).hAn*engine8canbMeseenasanabstractdata-t!ypewhic!hproducesa(possiblyin nite)*streamfofsolutionsasneeded.Teocreateanengineuse:6-/%:-modecreate_engine(+,+,+,-).6-/create_engine(HeapSize,StackSize,TrailSize,Handle);۹The?Handleisauniquein!tegerdenotingtheengineforfurtherproMcessing.Teo*`fuel'ftheenginewithagoalandanexpMectedansw!ervdDariabledo:6-/%:-modeload_engine(+,+,+).6-/load_engine(Handle,Goal,AnswerVariable);۹NojproMcessingexcepttheinitializationoftheenginetak!esplaceandnoanswer*isfreturnedwiththisopMeration.Thinkaboutitassimplyputinggasiny!ourcar.;Teofgetanansw!erfromtheenginedo:*۟ wffU? L͍ {-=4aThis=UisusuallybAettertobelefttoasystempersonwhoalsocanensurethatusersinheritthe AߤN cmtt9ABP$ffŽfPATHen9vironmentNv|rariable.h_Anindividualusercanalsoputsomethinglik9eCj cmti9CsetenvSBPffYfiPJATH/usr/local/BinPrologThisorherA.cshrcorA.login le,toaccessthesharedBinPrologprograms.e8 8ws}n}6-/%:-modeask_engine(+,-). 6-/ask_engine(Handle,Answer) ;۹Ify!ouwanttokeeptheanswerforfurtherproMcessingbeforeaskingforthenext*one,=usescopy_term/2astheoriginalwillgoa!waysastheenginebac!ktracks.INote*that"nothingnast!y(asunsafereferencestodeadheapcells)happMensevenifyou*forgetftodothis,exceptthatthebindingsinthe`master'enginewillbMeundone.;Whenfthestreamofansw!ersreachesitsend,ask_engine/2willsimplyfail.;Iffforsomereasonsy!ouarenotinterestedintheengineanymore,doډ6-/%:-modedestroy_engine(+).6-/destroy_engine(Handle)*۹tofreethedataareasaloMcatedfortheengine.ٵIfy!ouwanttosubmitanotherquery*bMeforeusingthecompletstreamofansw!ers,itismoreecienttoreuseanexisting*enginefwithload_engine/3,insteadofdestro!yingitandcreatinganewone.;Terynoutthefollo!wingexample(seemorein leslibrary/engines,progs/engtest.pl):0m?-create_engine(256,64,64,E),;load_engine(E,append(As,Bs,[A,B,B,A]),As+Bs),;ask_engine(E,R1),write(R1),nl,;ask_engine(E,R2),write(R2),nl,;load_engine(E,member(X,[1,2,3]),X),;ask_engine(E,R3),write(R3),nl,;ask_engine(E,R4),write(R4),nl,;destroy_engine(E).;۹AsengineswillbMeassignedtorealprocessorsinfuturem!ulti-threadedimplemen-*tationsLthisreusabilit!yofagivenengineforexecutionofmultiplegoalsisintendedto*allo!w precisecontroltotheprogrammerovertheresurcesofasystem.fPreemptive*m!ultitasking handledeitherwiththreadlibraries,:whenavdDailableandecient,:orby*BinPrologfitselfotherwise,isplannedinthenearfuture.;ThisQ`supMer-scalar'performanceimpro!vementQcanalreadybetestedwiththe*companion(Solaris2.xonly)Lindaimplemen!tationindirectorymulti(see le*multi/myprogs/mcolor.pl).;If݉anenginefailsduetotheo!ver ow݉ofagiv!endataarea,Ritwillwarnyouand*fail.Thew!arningsaredisabledwithquietnesslevelshigherthan6(commandline*switc!hf-q6).Thisallowsuseofenginestoquietlyrecoverfromressourceerrors.;Feor8o!wnersofBinProlog'sC-sourcelicenses,N#C-functionswithsimilarnamesand*seman!ticsasthepredicatesdescribMedinthissectionareavdDailabletoallowembMedding*offm!ultipleindepMendentPrologenginesintheirC-applications.*4.3ImUsingmultipleengines*۹The/ lelibrary/engines.plcon!tainssomexamplesofhowmultipleenginescan*bMe<,usedforimplemen!tingforinstanceall-solutionpredicates.0Hereisare-entrant*find_all/3.e9 DLs}n}*find_all(X,Goal,Xs):- 6-/default_engine_params(H,S,T),6-/find_all(H,S,T,X,Goal,Xs).*find_all(H,S,T,X,Goal,Xs):-6-/create_engine(H,S,T,Handle),6-/load_engine(Handle,Goal,X),6-/collect_answers(Handle,Xs),6-/destroy_engine(Handle).*collect_answers(Handle,[X|Xs]):-ask_engine(Handle,A),!,6-/copy_term(A,X),6-/collect_answers(Handle,Xs).*collect_answers(_,[]).*default_engine_params(128,32,32).;۹A^morein!terestingapplicationisbasedonthesynergybMetweenintuitionistic*andlinearimplicationandtheircon!tinuationpassingcouterpartsassumei/1and*assume/0fandm!ultipleengines.;Theffollo!wingextensionisavdDailablewith:-[library(enines)].;Thefconcretesyn!taxeisAnswer<=ProMducer=>ConsumerorAnswer<=ProMducer*whenftheConsumeristhe(implicit)curren!tAND-continuation.;ProMducersisstartedonaseparateengine.E=Itproduceslinearfactsoftheform*Answ!er,fromcomputedanswersofGoal,originatingfrodistinct OR-brpanches.cThey*areտusableb!yConsumerasiftheywereassumedthroughuseoflinearimplication,*i.e.theykareconsumedone-b!y-one.Thishidesthein!tricaciesofstartinganew*`orthogonal'flogicenginein!toasimple,easytouseabstraction.;Thefactualimplemen!tationfollows(seealso lelibrary/engines.pl):*%executesProduceronan`orthogonal'OR-engine*Answer<=Producer=>Consumer:-!,%theconsumerisexplicit6-/cross_run(Producer,Answer,Consumer).*Answer<=Producer:-J%theconsumerisinthe`future'6-/cross_run_with_current_continuation(Producer,Answer).*cross_run(Producer,Answer,Consumer):-6-/default_engine_params(H,S,T),6-/cross_run(H,S,T,Producer,Answer,Consumer).*cross_run(H,S,T,Producer,Answer,Consumer):-;compound(Answer),copy_term(Answer,A),;new_engine(H,S,T,Producer,Answer,Handle),;(A:-ask_or_kill(Handle,A))=>Consumer,_10 PVs}n};destroy_engine(Handle). *cross_run_with_current_continuation(Producer,Answer):-;default_engine_params(H,S,T),;cross_run_with_current_continuation(H,S,T,Producer,Answer).*cross_run_with_current_continuation(H,S,T,Producer,Answer):-;compound(Answer),copy_term(Answer,A),;new_engine(H,S,T,Producer,Answer,Handle),;assumei((A:-ask_or_kill(Handle,A))).*ask_or_kill(Handle,Answer):-ask_engine(Handle,Answer),!.*ask_or_kill(Handle,_):-destroy_engine(Handle),fail.*new_engine(H,S,T,Goal,Answer,Handle):-6-/create_engine(H,S,T,Handle),6-/load_engine(Handle,Goal,Answer).*%overridabledefaultenginesizesforheap,stack,trail*default_engine_params(H,S,T):-assumed(engine_params(H,S,T)),!.*default_engine_params(128,32,32).Í;۹TheOfollo!wingexampleshowshowandOR-streamofanswersseenaslinearas-*sumptionsffroman`orthogonal'enginecanbMeusedinandAND-branc!h.*?-a(X)<=member(X,[1,2,3])=>(a(A),a(B),a(C),write([A,B,C]),nl).*[1,2,3];۹Iffoundin!teresting,Xatrullyparallel,highlyecien!timplementationwillbMemade*a!vdDailablefinfuturereleases.;The%sameabstractionisalreadysuppMortedinthecompanionMulti-BinProlog*engine,۬throughuseofrealSolaris2.4threads(see lemulti/myprogs/ortho.pl).*Onm!ultipleproMcessorSparcsthisextensionshouldallowsupMer-linearspeed-up,in*thehandsofagoModprogrammer,astheansw!erisspMeculativelycomputedinparallel*withâthecomputationspMerformedb!yConsumer.FWeehaveveri edthatwhenmultiple*proMcessorsL0area!vdDailable,^;Multi-BinPrologbackgroundproMcesseswilltendtoexecute*ondi eren!tproMcessors,withsuper-linearspeed-up(see lem!ulti/myprogs/mcolor.pl*andfscriptsseqandparinthesamedirectory).0I*4.4ImRealstandaloneapplicationsthroughcompilationtoC*۹Starting"withv!ersion3.30itispMossibletoseparatelycompileuserapplicationsand*just6linkthemwiththeem!ulatorlibraryandtheC-i edcompiler(seedirectory*pl2c).Thisfallo!wscreationofafullyC-i edapplicationinafewseconds._11 Xs}n};۹JustOt!ypMemakePROJ=queensindirectorypl2c. Thestandaloneapplication *queensisreadytobMeexecutedb!ytypingqueens.ThegeneratedC-coMdecanbe*seenfin lesqueens.handqueens.c.;Moreo!ver,Don%)systemswithdynamiclinkinglik!eSolaris2.xtrueexecutablesof*sizelstartingatabMout6Kkcanbecreatedstartingwithv!ersion3.30(seedirectory*dynpl2c).;Ify!oude neapredicatemain/0thenyourexecutablewillstartdirectlyfrom*there(insteadoftheusualin!teractive(top-level.Callingitwithahighquietness-level*(i.e.commandflineswitc!h-q5)willsuppresswarningsandunwantedmessages.R*4.5ImUnixpseudo-executables*۹TheMfollo!wingstillworks,:althoughthenewC-i cationtechnique(seedirectories*pl2c,fdynpl2c)canno!wcreatetrueone- lestandalones.*ItnispMossibletocreate(asinthepast)asmallrun!timeapplication(called"newappl.bp"),*fromf.plasfollo!ws:6-/?-make_appl('.pl').*۹Deliv!ertheappropriate"bp" le(thePrologengine)withyourapplication.}The*userfm!usttypMe:G-/$bpnewappl.bp*۹tofstartit.*Note:thef lem!ustcontainaclause;main(X):-...*۹That'swhereexecutionstarts.ݠBinProlog'sshellisnothingbutsuc!hanapplication*whic!hfstartswithatoplevelloMopi.e.somethinglike:;main(X):-toplevel(X).*۹Asbanewfeature,0y!oucanoverridethisbMehaviour,0evenforthestandardBinProlog*systembcon!tainingthepredicatemain/1(whichstartstheinteractivetop-level),by*de ningapredicatemain/0iny!ourprogram le.Inthiscase,main/0bMecomesthe*newfstartingpMoin!t.;Yeoucanalsogenerate(onUNIXsystems)stand-aloneexecutablesthatdynam-*icallymstarttheem!ulator(thankstoPeterReintjesforsuggestingthis).Yeoucando*somethingflik!e:_12 bs}n}*%FILE:hello.pl *main(true):-write(hello),nl.*%DO:*%?-make_executable_unix_appl(*%R'/usr/local/bin/bp-q5',%AbsolutePathToEmulator(q=quietness)*%R'hello.pl',P{L%SourceFile*%"}hello).aJ%ExecutableFile;۹Infthecaseofthe"hello.pl"program,theuserm!usttypMe,attheUnixprompt:G-/$hello*۹tofstartit.*ThefcoMdeofthisprimitiv!eisattheendofthe leco.pl.;Again,?lw!e recommendusingtheC-i cationtechniquewhichcanalreadyspMeed*up,mostapplicationsandinthefuturewillgeneratev!eryfastcoMdecompetitiv!ewith*nativ!efcoMdecompilers.*YeoufcanbMootstrapfthecompiler,aftermoMdifyingthe*.pl lesb!y:6-/?-boot.6-/?-make.;۹or,fsimilarlyforan!yotherprojecthavingatop*.pro le:6-/?-make(ProjectFile).6-/?-make(ProjectFile,Module).;۹or6-/?-cmake(ProjectFile).6-/?-cmake(ProjectFile,Module).;۹ify!ouintendtogenerateC-coMdeandpossiblyhidenon-publicpredicatesinside*afmoMdule.*Thisallo!wstointegrateyourpreferencesandextensionswritteninPrologtothe*BinPrologfk!ernel.*Make*surpeyoukeepacopytheoriginalw!am.bpinasafeplace,incasethingsgo*wrpongwhenyoutypef?-boot._13ks}n}*4.6ImSomelimitations/featuresofBinProlog*۹Wee`passedOccam'srazoronafew"features"ofPrologthatareobsoleteinmoMdern *programmingen!vironmentsandonsomeothersthatare,inouropinion,badsoft!ware*practice.;Onlyfone leatatimecanbMecompiledinthein!teractivefenvironment:6-/?-[myfile].;۹or6-/?-compile(myfile).;۹No!wfBinPrologsuppMortsanincludedirective:*:-[include1]. *:-[include2].*....;۹This&suggesttomak!eaproject(*.pro) leusingasetofincludedirectiveseach*refereingtoa*.pl le.NWhencompiledtoa le(b!yusingthe?-make(MyProject)*۹command)%%amak!e-like%%memoingfacilit!ywillavoiduselessrecompilationofthein-*cludedT(*.pl) lesb!ycreationofprecompiled(*.wam) les.¡Feorlargeprojectsthis*is?therecommendedtec!hnique.!gCreationofC-i edstandalone lesisalsopMossible*(seefthepl2cdirectory).*Programsƒthatw!orkwellcanbMeaddedtotheBinPrologkernel.ThisavoidsrepMeated*recompilationofw!orkingcoMdeandpredicatesinthekernelareprotectedagainst*namefclashing.;New$EprogramscanbMeloadedinthein!teractive$Eenvironment.W{Whentheywork*w!ell,@0they;migratetothekernel.\YeoucanprepareagoMod;Make letoautomate*this5job.FIWhenev!erythingisOK,youcandeliveritasarun-time-onlyapplication.*Releasesafter3.30con!tainabasicmakefacilitywhichavoidstorecompileincluded**.plf leswhenanew!er*.wam leexists.;Programs$aresearc!hedwithsuxes"",".pl",".pro"$inthedirectories.,*./progsand./myprogs.;There'sfnolimitonthen!umbMerfof lesy!oucancompiletodisk:6-/?-compile(wam,[file1,file2,...],'application.bp').;۹No!wpBinPrologdoMesimplementconsult/1,rreconsult/1andlisting/0forinter- *preted[coMdebutuseofcompile/1ishighlyrecommendedinstead.Seethe leex-*tra.plGfortheimplemen!tation.FeasterthanassertedcoMdeissocalledassumedcode*(seefthenextsections)i.e.in!tuitionisticandlinearimplication.*Herefaresomeotherlimitations/features:_14qs}n};F ߹Clausesfofapredicatem!ustbMegrouped.;F ߹Clausesha!vingunde nedpredicatesoMccurringrightaftertheheadarerejected.;F ߹ARITYfislimitedto255.;F ߹Theheapgarbagecollectorisnoty!etimplemented,hbutweplantoaddit F soMon.Ho!wever,thepblackboard,dynamicpcodespace,thestringspaceandtheF hashingftableAREgarbagecollectedbMeforeloadinganewprogram.*MoMdeisin!teractivebydefault(forcompatibilitywithotherPrologs)butifyouuse*afmoMdern,windo!wsbasedenvironmentyoumaywanttoswitchito with:*?-interactive(no).*۹orfturnitonagainwith*?-interactive(yes).R*4.7ImOtherBinProloggo`odiesandnewpredicates*۹AffewBinPrologspMeci cpredicatesarea!vdDailable:;F restart/0f-cleansev!erydataarea;F cwrite/1f-fastbutrestrictedwrite;F symcat/3(i,i,o)freturnsanewsym!bMoloftheform_.;F gensym/2(i,o)fformsanewnameoftheform_.;F sread/2(i,o)readsfromanamea(ground)term,Lswrite(i,o)writesa F termftoaname.;F ߹term;termcat/3(i,i,o)addsitssecondargumen!taslastargumentofitsF rstfargumen!tandreturnsthenewterm;F termffs#chars/2fcon!vertsbMetweenagroundtermanditsstringrepresentation;F not/1fisaformofsoundnegation;F for/3 ùasforinstancein?-for(I,1,5),write(I),nl,failgeneratesafailureF driv!enfloMop;ItisagoModideatotak!ealoMokatBinProlog's*.plforotherbuiltin-or-library*predicatesbMeforeimplemen!tingthemyourself.MThe lewrite.plcontainvdDarious*outputfpredicateslik!e;F ߹write/1_15{ޠs}n};F ߹writeq/1;F ߹pMortra!y/ffH'clause/1;F ߹prin!t/1;F ߹displa!y/1;F ߹tt!yprint/1;F ߹tt!ynl/1*YeoulcanextendBinPrologb!yaddingnewpredicatestothe leextra.plandthen *usefthepredicateboot/0de nedinthe leco.pl.R*4.8ImEcient ndallbasedmeta-programming*۹BinProlog'smfindall/3issoecien!tthatyoucana ord(withsomecare)touseit*insteadfofexplicit(andmorepainful) rst-orderprogramsasin:*%maplistwithfindall*maplist(Closure,Is,Os):-6-/Closure=..L1,6-/det_append(L1,[I,O],L2),6-/P=..L2,6-/findall(O,map1(P,I,Is),Os).*map1(P,I,Is):-member(I,Is),P.;۹ThisfcanbMeusedasfollo!ws:*?-maplist(+(1),[10,20,30],T).*=>T=[11,21,31];۹NoteAthatconstructingClosureonlyonce(althoughthisma!ynotbMeinany*Prologftext-bMook!)ismoreecien!tthandoingitateachstep.;Thepredicategcffs#call(Goal)de nedinthe lelib.plexecutesGoalinminimal*space.It{isexplainedintheCraftofPrologb!yR.A.O'Keefe,AMITcPress.Donot*hesitatetouseit.BinPrologo ersav!eryfast,heap-oriented ndall,soyoucan*a ordCtousegcffs#call.IngoModChands,WSitisprobablyfasterthanusingassert/retract*orftheusualmark-and-sw!eepgarbagecollectorofotherimplementations.R*4.9ImBuiltins*۹Then;follo!wing(user-level)builtinsaresuppMorted,0withsemantics(intendedtobMe)*closeftoSICSTUSandQUINTUSProlog._16s}n} *fail/0*nl/0*var/1*nonvar/1*integer/1*atomic/1*+/3>%arithmeticoffersalsotheusualis/2interface*-/3**/3*///3*mod/3*<</3*>>/3*/\/3*\//3*#/3%bitwiseXOR*\/3R%bitwiseNOT*random/1%returnsaninteger,notafloat*get0/1*put/1*</2*>/2*=</2*>=/2*=:=/2*=\=/2*compare/3*seeing/1*seen/0*telling/1*told/0*copy_term/2*functor/3*arg/3*name/2*abort/0*is_compiled/1%checksifapredicateiscompiled*۹Otherfusefulpredicatesarede nedinthe lelib.plandw!orkasexpMected.*true/0, *=/2,*..->..;.._17s}n}*;/1 *call/1*\+/1*repeat/0*findall/3*findall/4*for/3*numbervars/4*see/1*tell/1*system/1*statistics/0*statistics/2*atom/1*compound/1*=../2*length/2*tab/1*get/1*==/2*\==/2*A@B*A@==B*compile/1-seeco.plforthecompiler*read/1 T-seethefile:read.pl*write/1-seethefile:write.pl*halt/0,*halt(ReturnCode),*listing/0,%onlyforinterpretedcode*listing(Pred,Arity),*assert/1,*asserta/1,*assertz/1,*retract/1,*retractall/1*erase/1,*dynamic/1,*instance/2,*clause/2,*clause/3,*consult/1,>%usablefordebuggingordynamiccode*reconsult/1,%theyoverridecompileddefinitions!!!_18s}n}*setof/3, *bagof/3,*sort/3,*keysort/3,*setarg/3,%backtrackableupdateofargIoftermTwithnewtermX*is_builtin/1%liststhesystem-levelbuiltins(writteninC):*current_predicate/1%lists/checksexistenceofa Tpredicate/arity*predicate_property/2%lists/checksifaproperty(arg2)isassociatedwithahead(arg1)ʍ*۹OpMeratorsfarede nedandretriev!edwith*:-op/3,current_op/3.;۹Includingf lesaresuppMorted.Feorcompile/1use*:-compile(file).;۹or*:-[file].%thiscallsthecompilertoo!!!;۹Feorfconsultingincludedin!terpretedcoMdewithinanembMeddingreconsult/1use:*:-consult(file).*۹iny!our(unique)top-level le.0Thisovercomesthelimitationofhavingonlyone *top-lev!elf le."]*5BSource-levelffstatelesmos3dulesq*(module)/1*current_module/1*is_module/19|-checks/generatesanexistingmodule-name*module_call/2,':'/2-callsapredicatehiddeninamodule*module_name/3-P-addsthenameofamoduletoasymbol*module_predicate/3>-addsthenameofamoduletoagoal*modules/1D-givesthelistofexistingmodulesʍ;۹Theffollo!wingexample:m*:-modulem1.*:-publicd/1.*a(1).*a(2)._19s}n}*a(3). *a(4).*d(X):-a(X).*:-modulem2.*:-publicb/1.*b(X):-c(X).*c(2).*c(3).*c(4).*c(5).*c(6).*:-modulem3.*:-publictest/1.*test(X):-b(X),d(X).*:-moduleuser.*go:-modules(Ms),write(Ms),nl,fail.*go:-test(X),write(X),nl,fail.;۹Executiongf?-go.willgeneratethefollo!wingoutput:*[user/0,m1/0,m2/0,m3/0]*2*3*4;۹Starting9,).;۹Teofeditandrecompilethecurren!tlycompiled leusingtheemacseditortypMe:;?-ed.;۹Teoeditandrecompilethecurren!tlycompiled leusingtheediteditor(under*DOS)ft!ypMe:;?-edit.;۹Teofsimplyrecompilethelast let!ypMe:;?-co.*۹Thedebugger/tracerusesR.A.O'Keefe'spublicdomainmeta-in!terpreter.Yeoucan*moMdifyfitinthe le"extra.pl".UW*DCG-expansionfissuppMortedb!ythepublicdomain ledcg.pl.;Teofdebuga let!ypMe:*?-reconsult(FileName).*۹andfthen*?-trace(Goal).*۹Feorfin!teractivity,fbMoththetoplev!elandthedebuggerdependon_21s}n}*?-interactive(yes).(*۹or*?-interactive(no).*۹MypMersonalpreferenceisusinginteractive(no)withinascrollablewindo!w.nHow- *ev!er,WasltraditionallyallPrologshassletheuseraftereachanswerBinProlog3.45*willfdothesameb!ydefault.;Ify!ouforgetthenameofsomebuiltin,,apropos/1(orhelp/1)willgiveyousome*( exiblefuptoonemisspMelledormissingletter)matc!heswiththeirarities.;YeoucanusethedebuggertodebugcompiledcoMdewiththefollo!wingtrickif*y!ou=alwaysdebugbMottom-upi.e. sifyouensurethattoMolsworkbMeforetousing*them.UbFeor#example,Bontopofthecompiled leallperms.ply!oucantempMorarily*in!terpretvperm/2,insert/3etc.8tobMeabletotracethemwhilekeepinguninteresting*predicatescompiled.Bythew!aye,(thisallows,totrace/debugpartsofthek!ernelitself*infparticular.;Theffollo!wingterminalsessionshowsanexample:卑*?-[allperms].*compiling(to(mem),progs/allperms.pl,...)*compile_time(230)*?-consult(user).*%usingcompile/1isMUCHfaster*reconsulting(user)*g0(N):-nats(1,N,Ns),perm(Ns,_),fail.*g0(_).*WARNING:redefiningcompiledpredicate(g0/1)*perm([],[]).*perm([X|Xs],Zs):-*perm(Xs,Ys),*insert(X,Ys,Zs).*insert(X,Ys,[X|Ys]).*insert(X,[Y|Ys],[Y|Zs]):-*insert(X,Ys,Zs).*WARNING:redefiningcompiledpredicate(perm/2)*WARNING:redefiningcompiledpredicate(insert/3)*reconsulted(user,time=20)*yes*?-interactive(no).*yes*?-trace(g0(3)).*Call:g0(3)0mCall:nats(1,3,_645)_22s}n}6-/compiled(nats(1,3,_645)) 0mExit:nats(1,3,[1,2,3])0mCall:perm([1,2,3],_648)6-/Call:perm([2,3],_1095);Call:perm([3],_1362)ACall:perm([],_1629)AExit:perm([],[])ACall:insert(3,[],_1362)AExit:insert(3,[],[3]);Exit:perm([3],[3]);Call:insert(2,[3],_1095);Exit:insert(2,[3],[2,3])6-/Exit:perm([2,3],[2,3])6-/Call:insert(1,[2,3],_648)6-/Exit:insert(1,[2,3],[1,2,3])0mExit:perm([1,2,3],[1,2,3])0mCall:fail6-/compiled(fail)0mFail:fail0mRedo:perm([1,2,3],[1,2,3])6-/Redo:insert(1,[2,3],[1,2,3]);Call:insert(1,[3],_2683);Exit:insert(1,[3],[1,3])6-/Exit:insert(1,[2,3],[2,1,3])0mExit:perm([1,2,3],[2,1,3])0mCall:fail6-/compiled(fail)0mFail:fail0mRedo:perm([1,2,3],[2,1,3])6-/Redo:insert(1,[2,3],[2,1,3]);Redo:insert(1,[3],[1,3])ACall:insert(1,[],_2945)AExit:insert(1,[],[1]);Exit:insert(1,[3],[3,1])6-/Exit:insert(1,[2,3],[2,3,1])0mExit:perm([1,2,3],[2,3,1])0mCall:fail6-/compiled(fail)0mFail:fail0mRedo:perm([1,2,3],[2,3,1])6-/Redo:insert(1,[2,3],[2,3,1]);Redo:insert(1,[3],[3,1])ARedo:insert(1,[],[1])AFail:insert(1,[],_2945)_23s}n};Fail:insert(1,[3],_2683) 6-/Fail:insert(1,[2,3],_648)6-/Redo:perm([2,3],[2,3]);Redo:insert(2,[3],[2,3])ACall:insert(2,[],_2421)AExit:insert(2,[],[2]);Exit:insert(2,[3],[3,2])6-/Exit:perm([2,3],[3,2])6-/Call:insert(1,[3,2],_648)6-/Exit:insert(1,[3,2],[1,3,2])0mExit:perm([1,2,3],[1,3,2])0mCall:fail6-/compiled(fail)0mFail:fail0mRedo:perm([1,2,3],[1,3,2])6-/Redo:insert(1,[3,2],[1,3,2]);Call:insert(1,[2],_2945);Exit:insert(1,[2],[1,2])6-/Exit:insert(1,[3,2],[3,1,2])0mExit:perm([1,2,3],[3,1,2])0mCall:fail6-/compiled(fail)0mFail:fail0mRedo:perm([1,2,3],[3,1,2])6-/Redo:insert(1,[3,2],[3,1,2]);Redo:insert(1,[2],[1,2])ACall:insert(1,[],_3207)AExit:insert(1,[],[1]);Exit:insert(1,[2],[2,1])6-/Exit:insert(1,[3,2],[3,2,1])0mExit:perm([1,2,3],[3,2,1])0mCall:fail6-/compiled(fail)0mFail:fail0mRedo:perm([1,2,3],[3,2,1])6-/Redo:insert(1,[3,2],[3,2,1]);Redo:insert(1,[2],[2,1])ARedo:insert(1,[],[1])AFail:insert(1,[],_3207);Fail:insert(1,[2],_2945)6-/Fail:insert(1,[3,2],_648)6-/Redo:perm([2,3],[3,2]);Redo:insert(2,[3],[3,2])ARedo:insert(2,[],[2])_24zs}n}AFail:insert(2,[],_2421) ;Fail:insert(2,[3],_1095);Redo:perm([3],[3])ARedo:insert(3,[],[3])AFail:insert(3,[],_1362)ARedo:perm([],[])AFail:perm([],_1629);Fail:perm([3],_1362)6-/Fail:perm([2,3],_1095)0mFail:perm([1,2,3],_648)0mRedo:nats(1,3,[1,2,3])0mFail:nats(1,3,_645)*Exit:g0(3)\Ѝ;۹Startingwithv!ersion3.08spy/1andnospy/1allowtowatchentryandexitfrom*compiledApredicates.GNotethattheyshouldbMeinthe letobecompiled,Ubeforean!y*usefofthepredicatetobMespiedonasin:u*%FILE:jbond.pl*:-spya/1.*:-spyc/1.*b(X):-a(X),c(X).*a(1).*a(2).*c(2).*c(3).*۹Thisfgiv!esthefollowinginteraction:ۍ*K:;/!!!?compiled(a/1)*Exit:?a(1)*Call:?c(1):;/!!!?compiled(c/1)*Fail:?c(1)*Redo:?a(1)*Exit:?a(2)*Call:?c(2):;/!!!?compiled(c/1)*Exit:?c(2)_25cs}n}*KX=2; *Redo:?c(2)*Fail:?c(2)*Redo:?a(2)*Fail:?a(_2158)*no*۹Althoughthesearev!erybasicdebuggingfacilitiesyoucanenhancethematyourwill *and`Zwithsomedisciplineinprogrammingtheyma!ybMeallyoureallyneed.ƄAnywaye,*futureWofdebuggingisde nitelynotb!ytracing.fOnethingistohavestrongerstatic*c!hecking.InVhdynamicdebuggingthew!ayVhgoistoha!veVhadatabaseoftrace-ev!ents*and_.thenqueryitwithhighlev!eltoMols. Weeplantoaddsomenon-tracingdatabase-*orien!tedfdebuggingfacilitiesinthefuture.*Yeoufcangenerateakindofin!termediateWȈAM-assemblerby6-/?-compile(asm,[file1,file2,...],'huge_file.asm').*۹AOcon!venientPwaytoseeinteractivelythesequenceofprogramtransformationsBin-*Prologfisbasedonis:*?-asm.*a-->b,c,d.*^D*DEFINITE:*a(A,B):-X+b(A,C),X+c(C,D),X+d(D,B).*BINARY:*a(A,B,C):-X+b(A,D,c(D,E,d(E,B,C))).*WAM-ASSEMBLER:*clause_?a,3*firstarg_?_/0,6*put_structured/3,var(4-4/11,1/2)*write_variableput,var(5-5/10,1/2)*write_valueput,var(2-2/6,2/2)*write_valueput,var(3-3/7,2/2)*put_structurec/3,var(3-8/14,1/2)*write_variableput,var(2-9/13,1/2)_26s}n}*write_valueput,var(5-5/10,2/2) *write_valueput,var(4-4/11,2/2)*execute_?b,3"A*7BCompilingfftoCq*۹P!artialݖC-i cation[18 4]isatranslationframeworkwhich`doMeslessinsteadofdoing*more'ftoimpro!vefpMerformanceofem!ulatorsclosetonativecoMdesystems.;Startingmfromanem!ulatorforalanguageLmwritteninC,wetranslatetoCma*subset)ofitsinstructionset(usuallyfrequen!tand ne-grainedinstructionswhichare*executedZ]incon!tiguoussequences)andthensimplyuseacompilerforCZJtogenerate*afuniqueexecutableprogram.;AMtranslationMthresholdallo!wstheprogrammertoempirically ne-tunetheC-*i cation proMcessb!ychoMosingthelengthoftheemulatorinstructionsequence,starting*fromtwhic!h,~$translationisenabled.TheproMcessusesareasonabledefaultvdDalueand*canfbMeeasilycon!trolledbytheprogrammer*:-set_c_threshold(Min,Max).;۹will|ensurethatonlyem!ulatedsequencesoflengthbMetweenMinandMaxget *translatedftoC.Thisallo!wstohandlegracefullythesize/spMeedtradeo .;Comm!unicationzbMetweentherun-timesystem(stillunderthecontroloftheem-*ulator)fandtheC-i edc!hunksfishandledasfollo!ws.;Thenem!ulatedcoMderepresentationofagivenprogram(inparticularthecompiler*itself)wEismappMedtoaCvdatastructurewhic!hallowsexchangeofsymbMoltable*informationfatlinktime.;Teo&bMeabletocallaC-routinefromtheem!ulatorwehavetoknowitsaddress.*Unfortunatelye,thehilink!eristheonlyonethatknowstheeventualaddressofaC-*routine.A5simple5andfullypMortabletec!hniquetoplugtheaddressofaC-routine*in!tothebytecoMdeistoC-ifythebyte-coMdeoftheemulatorintoahugeCwarray*ofrecords,lcon!tainingthesymbMolicaddressoftheC-chunks. Aftercompilation,*andlinkingwiththeem!ulator,fthelinkerwillautomaticallyresolveallthemissing*addressesfandgeneratew!arningsforthemissingC-routines.;This=1iscompiledtogetherwiththeC-coMdeoftheem!ulatortoastandalone*executableGwithpMerformanceintherangebet!weenGpureem!ulatorsandnativecoMde*implemen!tations.;The^ methoMdensuresastrongoperationalequivdDalencebet!ween^ emulatedand*translatedfcoMdewhic!hshareexactlythesameobservdDablesintherun-timesystem.;AnimpMortan!tcharacteristiciseasydebuggingoftheresultingcompiler,4com-*ingfromthefullsharingoftherun-timesystembMet!weenemulatedandcompiled*coMdeandthefollo!wingpropert!ywecallinstruction-levelFcpompositionality:lifev-*erytranslatedinstructionhasthesameobservdDablee ectona(small)subsetofthe*programstate(registersandafewdataareas)inem!ulatedandtranslatedmoMde,_27۠s}n}*۹then farbitrarysequencesofem!ulatedandtranslatedinstructionsareopMerationally *equivdDalen!t.;Curren!tly}C-i cationcoverstermcreationontheheapandfrequentlyusedinline*opMerationswhic!hcanbeprocessedinBinaryPrologbeforecallingthe`realgoal'in*thefbModye.;Ch!unkscontainingsmallbuilt-insthatdonotrequireaproMcedurecallwillgen-*eratef`leaf-routines'inC(whic!harecalledecentlyanddonotusestackspace).;Onctheotherhandlargebuilt-insimplemen!tedasmacrosintheemulatorwould*mak!ecoMdesizeexplode.GImplemen!tingthemasfunctionstobecalledfromtheC-*c!hunk׼wouldrequirecoMdeduplicationanditwoulddestroytheleaf-routinediscipline*whic!h@isparticularlyrewardingonSparcs. Weehavechosentoimplementthem*throughanabstractionwithacoroutining a!vor:;anti-cpalFls.iNotethatcallinga*built-inffromaC-c!hunkfisopMerationallyequivdDalen!ttothefollowingsequence:;F ߹returnffromthec!hunk,;F ߹executefthebuilt-inintheem!ulator(usuallyamacro),;F ߹callanewleaf-routinetoresumethew!orkleftfromthepreviousleaf-routine.;Ov!erall,anti-callscanbMeseenasformofcoroutining(jumpingbac!kandforth) *bMet!ween0nativeandemulatedcoMde.+:Anti-callscanbMeimplementedwiththedirect-*jumptec!hniqueevenmoreecientlye,zalthoughforpMortabilityreasonswehavechosen*acon!ventionalreturn/callsequence,Pwhichisstillfairlyecientasareturn/call*costsv=thesameasacall/return.McMoreo!ver,3thisv=allowsthechunkstoremainleaf-*routines,while|delegatingo!ver ow|andsignalhandlingtotheem!ulator.Notethat*excessiv!ely0Usmallchunkscreatedasresultofanti-callsareremovedbyanoptimizing*stepHofthecompilerwiththenetresultthatsuc!hcoMdewillbecompletelylefttothe*em!ulator.]This{isofcoursemorpe$compact{andprovdDabletobMenot$slowerthanits*fullyfC-expandedalternativ!e.R*7.1ImPerformanceofC-i edco`de*۹ThespMeed-upclearlydependsontheamoun!tofC-i cationandonthestatistical*impMortance֚ofC-i edcodeintheexecutionpro leofaprogram(see gure1).nzWee*ha!ve(noticedbMet!ween(10-20%speedincreaseforprogramswhic!htakeadvdDantageof*C-i edcoMdemoderatelye,7Astheseprogramsspendonly20-30%oftheirtimeinC-*i edHsequencespMerformancesareexpectedtoscalecorrespondinglywhenw!eextend*thisapproac!htothefullBinProloginstructionsetandimplementlow-levelgccdirect*jumpsfinsteadoffunctioncallsandan!ti-calls.;CoMde-sizesLforC-i edBinPrologexecutables(dynamicallylink!edonSparcswith*Solaris2.3)areusuallyev!ensmallerthan`compact'SicstuscoMdewhichusesclassical*instructionffolding(afewh!undredsofopMcodes)ftospMeed-uptheemulator.;Thep follo!wingtableshowssomecoMde-size/execution-speedp vdDariationswithrespMect*tothethresholdforthesemi-ring(SEMI3)bMenc!hmark.gClearlye,excessivelysmall_28s}nd c7rvjff&2ff&2 ͤ} ff͟Bmark/Compiler ffcMemBP͟} ffC-BP͟} ffEemSP͟} ff natSP͟} ffzff&2ff&2ͤ} ff ff͟NREVf(KLIPS)&" ff ffp445͟} ffN455͟} ff ff_?412͟} ffd882͟} ff ffzff&2ͤ} ff ff͟CALf(ms)" ff ffp490͟} ffN310͟} ff ff_?590͟} ffd310͟} ff ffff&2ͤ} ff ff͟FIBOf(ms) ff ffjn1730͟} ff^1320͟} ff ff1400͟} ffd800͟} ff ffff&2ͤ} ff ff͟TeAKf(ms)!p ff ffp610͟} ffN470͟} ff ff_?400͟} ffd180͟} ff ffff&2ͤ} ff ff͟SEMI3f(ms)} ff ffjn1810͟} ff^1410͟} ff ff1810͟} ff?1310͟} ff ffff&2ͤ} ff ff͟QUEENSf(ms) ) ff ffjn3170͟} ff^2220͟} ff ff2840͟} ff?1070͟} ff ffff&2ff&2ff&2Kɍ*Figure1:jP!erformanceofemulated(emBP)xandpartiallyC-i edBinProlog3.22 *(C-BP)comparedtoem!ulated(emSP)andnativ!e(natSP)SICStus2.1/ffH'9onaSparc*10/20).*c!hunks:canin uenceadv!erselynotonlyonsizebutalsoonspMeed.-->value,Othesame*thatBinPrologusesin!ternallyforindexingbypredicateand rstargument.They*arefclosetootherProlog's`record'familye,exceptthattheydoev!enless.;TeousedynamicpredicatesitisagoModideatodeclarethemwithdynamic/1*۹althoughPassertswillno!wbMeacceptedevenwithoutsuchadeclaration.܉Teode ne*dynamicfcoMdeina ley!oucompile,dynamicdeclarationsaremandatorye.;TeofactivdDateanassertedpredicateitisagoModfideatoalw!ayfcallitwith*?-metacall(Goal).*۹insteadfof*?-Goal._30s}n};۹Ho!wever,ޔthisXisnotastrongrequiremen!tanymore,ޔasanimpMortantnumbMerof *usersfw!ereunhappywiththisrestriction.;Thefdynamicpredicatesare:*assert/1*asserta/1*assertz/1*retract/1*clause/2*metacall/1*abolish/2;۹Yeou8caneasilyaddothersorimpro!ve8themb!yloMokingtothesourcesinthe le*extra.pl.R*8.4ImAssumedco`de,intutionisticandlinearimplication*۹In!tuitionisticassumei/1addstempMorarilyaclauseusableinlaterproofs.Suc!ha*clauseBcanbMeusedaninde niten!umberBoftimes,Imostlylik!eassertedclauses,except*thatitvdDanishesonbac!ktracking.QItsscopMedv!ersionClause=>Goalor[File]=>Goal*۹mak!esClauseorthesetofclausesfoundinFileavdDailableonlyduringtheproMofof*Goal.BothvdDanishonbac!kracking.Clausesareusableaninde niten!umbMeroftimes*inftheproMof,i.e.forinstance?-assumei(a(13)),a(X),a(Y)willsucced.;Linearassumel/1addstempMorarilyaclauseusableatmostoncpeinlaterproofs.*Thisk>assumptionalsovdDanishesonbac!ktracking.,fItsk>scopMedv!ersionClause-:Goal*۹or5[File]-:Goalmak!esClauseorthesetofclausesfoundinFileavdDailableonly*duringtheproMofofGoal.BothvdDanishonbac!kracking.Eachclauseisusableatmost*oncefintheproMof,i.e.forinstance?-assumel(a(13)),a(X),a(Y)willfail.;YeouGcanfreelymixlinearandin!tutionisticclausesandimplicationsforthesame*predicate.Teryfoutsomethinglik!e*?-a(10)-:a(11)=>a(12)-:a(13)=>(a(X),a(X)).*X=11;*X=13;*no;۹Thiscsho!wsthata(10)anda(12)arecponsumedcaftertheir rstusewhilea(11)*۹andfa(13)arereusableinde nitelye.;Seetherelativ!elystraightforwardimplementationofthesepredicatesinthe le*extra.pl.;Note thatBinProlog'slinearimplicationsucceedsev!enifnotalltheassumptions*areRconsumedwhileinsystemslik!eLollithisisastrongrequirement.5Quanti ers*and2otherlinearopMeratorsarenotimplemen!tedatthistime,Ubutcanbeaddedin*theffutureifthere'senoughdemandforthem._31 s}n}*8.5ImOverriding*۹Assumed[predicatewillo!verride[similarlynameddynamicpredicateswhic!hinturn *will~Go!verridecompiledones.eNotethatoverridingisdoneatprpedicate,?notclause*۹lev!el.9Notexalsothatmulti lecompiledclausesarestillforbidden.9However,multi le*assumedfanddynamiccoMdeisno!waccepted.R*8.6ImLanguageenhancementsbasedonlinearimplication*۹LinearimplicationcanbMeusedtoquic!klyaddsomelanguageenhancementstoa*Prologsystem.?sFeorinstance,toaddaswitch2 b> 3 cmmi10:1::T=casestatemen!tonecanwrite*simply:*switch(Selector,Body):-6-/case(Selector)-:Body.*test(X):-6-/switch(X,(Gl-case(1)->write(one);Gl-case(2)->write(two);Gl-otherwise->write(unexpected(X))6-/))0m,nl.*%?-test(2),test(13).;۹Clearlye,thisisav!erycompactwaye,usefulatleastasaspMeci cation.Notethat*thisTcanbMedoneasw!ellwithmacroexpansion,,possiblymoreecien!tlye,,butalso*withfm!uchmorework.R*8.7ImProblemsolvingwithlinearimplication*۹LinearRimplicationisaseriousandv!eryconvenientproblemsolvingtoMol,which*allo!ws&avoidingexplicithandlingofcomplexdata-structures.TLet'ssuppMosewewant*tofw!alkthrougha(pMossiblycircular)graphstructurewithoutlooping.;WithflinearimplicationthisbMecomes:*path(X,X,[X]).*path(X,Z,[X|Xs]):-linked(X,Y),path(Y,Z,Xs).*linked(X,Y):-c(X,Ys),member(Y,Ys).*go(Xs):-6-/c(1,[2,3])-:c(2,[1,4])-:c(3,[1,5])-:c(4,[1,5])-:6-/path(1,5,Xs)._32!Ss}n}*۹or *path(X,X,[X]).*path(X,Z,[X|Xs]):-c(X,Y),path(Y,Z,Xs).*%data*go(Xs):-6-/(c(1,X1):-c1(X1))-:6-/(c(2,X2):-c2(X2))-:6-/(c(3,X3):-c3(X3))-:6-/(c(4,X4):-c4(X4))-:6-/path(1,5,Xs).*c1(2).*c1(3).*c2(1).*c2(4).;۹Somej nitedomainconstrain!tsolvingcanalsobMedonequiteeciently(1.3sec-*ondsnonaSparc10-20fortheSEND+MORE=MONEYnpuzzlen-see leprogs/lconstr.pl).*K%?Program:linearimplicationbasedFDconstraintsolving *%?Author:PaulTarau,1995*%?cryptarithmeticpuzzlesolver-seeprogs/lconstr.pl*%?akindof"constraintsolvingwithlinearimplication"*example1(:m[s,e,n,d,m,o,r,e,y]=[S,E,N,D,M,O,R,E,Y],:m[S,E,N,D]+:m[M,O,R,E]=/[M,O,N,E,Y],/_*).*%?Additionoftwonumbers-simplifiedversion-*sum(As,?Bs,Cs):-sum(As,Bs,0,Cs).*sum([],?[],Carry,[Carry]).*sum([A|As],?[B|Bs],Carry,[C|Cs]):-!,*add2digits(A,B,Carry,C,NewCarry),Tsum(As,?Bs,NewCarry,Cs).*add2digits(A,B,Carry,Result,NewCarry):-_33"s}n}5-Kbind(A),bind(B), 5-add_with_carry(10,A,B,Carry,Result,NewCarry).*add_with_carry(Base,A,B,Carry,Result,NewCarry):-5-S?isA+B+Carry,5-Result?isSmodBase,5-NewCarry?isS//Base,5-new_digit(Result).*bind(A):-var(A),!,digit(A).*bind(_).*new_digit(A):-digit(A),!.*new_digit(_).*solve(As,Bs,Cs,Z):-5-digit(0)-:digit(1)-:digit(2)-:digit(3)-:digit(4)-:digit(5)-:5-digit(6)-:digit(7)-:digit(8)-:digit(9)-:5-(?sum(As,Bs,Cs),?Z>05-).*puzzle:-?init(Vars,Puzzle,Names),?Puzzle=(Xs+Ys=Zs),Zs=[Z|_],?reverse(Xs,As),c%?seeprogs/lconstr.pl?reverse(Ys,Bs),?reverse(Zs,Cs),J-solve(As,Bs,Cs,Z),J-show_answer(Vars,Names,Puzzle),?%seeprogs/lconstr.pl?fail.*puzzle:-?write('no?(more)answers'),nl,nl.*go:-5-(init(X,Y,Z):-example1(X,Y,Z))-:puzzle,5-fail.;۹Noticenho!wlinearlyassumeddigit/1factsareconsumedbybind/1andnew_digit/1 *۹tofenforceconstrain!tsasearlyaspMossibleinsidetheadditionloop.R*8.8ImTheblackb`oardasanalternativetoassertandretract*۹DesignedCintheearlystagesofProlog,assertandretractha!veCbMeeno!verloaded*with(4di eren!tandoftencon ictingrequirements.cFTheytrytobMeboththew!ay(4to*implemen!tpMermanentdatastructuresforglobalstateinformation,self-moMdifying*coMdeandtoolsforPrologprogrammanagemen!t.)mThiscreatednotonlywell-known*seman!ticalfbutalsoexpressivityandeciencyproblems._34# s}n};۹Thisunnecessaryo!verloadingisprobablyduetosomeoftheirin!tendeduses *in1in!terpretedPrologslikeimplementingtheconsult/1andreconsult/1coMde-*managemen!tpredicatesthatcanbMereplacedtoda!ybygeneralpurpMosemake les.As*alconsequence,ޭtheirabilit!ytoexpresssophisticateddatastructuresisverylimited*duemostlytoun!wantedcopyingopMerations(fromheaptodynamiccodeareaand*bac!k)fandduetotheirnon-backtrackdDablebMehaviour.;Feor=example,Rtoensureinde niten!umbMer=ofusesofanassertedclausemostPro-*logsT*eithercompileitonthe yordosomeformofcop!ying(usuallytwice:9ewhen*asserting andwhencallingorretracting). FThisisnotonlyaw!asteofresources*butalsoforbidsuseofassertedclausesfordynamicallyev!olvingglobalobjectscon-*taininglogicalvdDariables,}oneofthemostin!terestingandecientdatastructure*tric!ksһinProlog.bWeorst,vdDariablesrepresentingglobaldatastructureshavetobMe*passed-aroundasextraargumen!ts,EJjusttobMoreprogrammersandmakethemdream*abMoutB7inheritanceandobjectsorien!tedlanguages.xThisalsoalsocreateserrorprone*main!tenanceproblems.AZJustthinkabMoutaddinganewseventhargumenttoa10-*parameterfPrologpredicateha!ving10clausesandbMeingcalled10times.;Those@arethemainreasonsforthere-designoftheseopMerationsusingBinProlog's*blac!kbMoard.;Objectsontheblac!kbMoardhaveinde niteextent. AUHowever,ztheirnamesare*"rigidڊdesignators"thatcanc!hangetheirreference.zIDataobjectsdonotdisappMear*justbMecausetheyha!venonamesan!ymore.Thisisthemaindi erencewithvdDariables*inOlanguageswithdestructiv!eassignment.Ifthegarbagecollector"canprove"that*an6objectorsomepartofitiswillnev!erbMeusedagain,3thespacewillberecu-*pMerateduautomaticallye. Althoughobjectscannotbe"c!hanged"theycanbefurther*instan!tiatedfasithappMenstoordinaryPrologterms.;Ecien!taccesstoobjectsontheblackbMoardorpartofthemisbasedonan*ecien!tf2-keyhashingtable,internaltoBinProlog'srun-timesystem.R*8.9ImThelow-levelblackb`oardoperations*۹Sixnlo!w-level5.primitivesdef/3,set/3,val/3,rm/2,copyffs#term/2,saveffsterm/2*۹areusedinBinProlog3.45tofullyreplaceassertandretractwhilek!eepingdistinct*theirfo!verloadednamingandcpopyingfunction.*4"V 3 cmbx108.9.1Q'Naming2primitivtes*۹Thef rstfouraresimplyanin!terfacetoBinProlog'suniqueglobalhashingtable*w!orkingfasanA-->HeapOrBlackboardObject.*۹function.*۟ffffU? L͍ {-=5aW:e0suggesta9voiding0theseopAerationsbecausetheyarenotgarbagecollection-safeinBinProlog 3.45._35$ s}n};F ߹def/3:(i,i,i)fde nesavdDalue(usableonlyonce)orfails;;F ߹set/3:(i,i,i)fupMdatesavdDaluethathasbeende nedorw!arnsandfails;;F ߹vdDal/3:(i,i,o)fretriev!esthevalueorfailsifabsen!t;;F ߹rm/3:(i,i)fdeletesthevdDalueorfailsifabsen!t.;Weekcallthemnaming,primitivesastheyareusedtonamearbitraryheapor *blac!kbMoardUobjectsforde nition,updateandaccessfunction.FNamingobjectson*the!heapisgenerallyunsafeandshouldbMehiddenfromtheuserexceptforconstan!ts*whic!hareactuallycopiedinthehashingtableinsteadofbMeingpoin!tedto.This*frequen!tcasehasbMeengiventoendusersasanecient2-keys,+f1-vdDaluedictionary*sincefthe rstreleaseofBinProlog.;If#blac!kbMoardoperationsarebac!ktrackdDable#heapobjectscanbesafelynamed.*Thisfsuggestedtheimplemen!tationofgloballogicalvdDariablesinBinProlog3.45.;Otherwise,3 inNBinProlog'sgc-safetransferstoandfromtheblac!kbMoardaredoing*withfav!eryecientcopyingalgorithm.;Not$Uthatifthegarbagecollectorisnotusednamingobjectsontheblac!kbMoardis*safe}kastheyarealw!ays}katalo!wer}kaddressthanthebaseoftheheap.zAsaconsequence*theyLsurviv!ebacktrackingwhilekeepingtheirbMehaviourascloseaspMossibletothe*bMeha!viour7ofusualheapobjects.OThisusageiscompatiblewithBinProlog1.71but*notfrecommendedinBinProlog3.45.*8.9.2Q'Coptying2primitives*Copy_term/2disProlog'susualprimitiv!eextendedtocopyobjectsfromtheheap*andE/alsofromblac!kbMoardtothecurrenttopoftheheap.7Weereferto[10 4]forthe*implemen!tationfandmemorymanagementaspMectsoftheseprimitives.;Save_term/2copiesanobjectpMossiblydistributedo!vertheheapandtheblac!k-*bMoardb`toanewblac!kboardobject.0Italsotak!escarenottocopypartsoftheobject*alreadyfontheblac!kbMoard.;Remarkthatha!vingknownmoMdesandargumenttypMeshelpsinthecaseofpartial*evdDaluation6ort!ypMeinferencesystems.#SeparatingProlog'sassertstwomainfunctions*(naming+cop!ying)inlowerlevelopMerationsallowsprogramtransformerstogoin-*sideꁹmorecomplexblac!kbMoardoperationsandpossiblyusethet!ypingandmode*informationfthatcomesfromdef/3,set/3andvdDal/3toinferitforotherpredicates.R*8.10P-AnusefulPrologextension:b`estof/3*Bestof/3}ismissinginallcurren!tPrologimplementationsweknowof.BinProlog's*bestof/3w!orkslikefindall/3,Bbutinsteadofaccumulatingalternativesolutions,*it9selectssuccessiv!elythebpestonewithrespMecttoanarbitrarytotalorderrelation.*If"3thetestsucceedsthenewansw!erreplacesthepreviousone.Attheend,,member(X,Xs)).;۹The%follo!wingisanecientimplementationimplementationusingtheblack-*bMoard.*%trueifXisananswerofGeneratorsuchthat*%XRelYforeveryotheranswerYofGenerator*bestof(X,Closure,Generator):-6-/copy_term(X,Y),6-/Closure=..L1,6-/det_append(L1,[X,Y],L2),6-/Test=..L2,6-/bestof0(X,Y,Generator,Test).*bestof0(X,Y,Generator,Test):-6-/inc_level(bestof,Level),6-/Generator,6-/update_bestof(Level,X,Y,Test),6-/fail.*bestof0(X,_,_,_):-6-/dec_level(bestof,Level),6-/val(bestof,Level,X),6-/rm(bestof,Level).*%usesReltocompareNewwithsofarthebestanswer*update_bestof(Level,New,Old,Test):-6-/val(bestof,Level,Old),!,6-/Test,6-/bb_set(bestof,Level,New).*update_bestof(Level,New,_,_):-6-/bb_let(bestof,Level,New).*%ensurecorrectimplementationofembeddedcallstobestof/3*inc_level(Obj,X1):-val(Obj,Obj,X),!,X1isX+1,bb_set(Obj,Obj,X1).*inc_level(Obj,1):-bb_def(Obj,Obj,1).*dec_level(Obj,X):-val(Obj,Obj,X),X>0,X1isX-1,bb_set(Obj,Obj,X1)._37&7s}n}*۹NotetthatprecomputationofTeestinbMestof/3beforecallingthew!orkhorsebestof0/4 *is}m!uchmoreecientthanusingsomeformofapplymeta-predicateinsidebMestof0/4.R*8.11P-Blackb`oardbasedabstractdatatyp`es*۹Wee~willdescribMesomesimpleutilisationsoftheblac!kboardtoimplemen!teciently*someR%basicabstractdatat!ypMes. Theyallusethesaved/2predicateinsteadof*save_term/2.wSaved/2.doMesbasicallythesamew!orkbutalsomakesacalltothe*blac!kbMoard+Qgarbagecollectorifnecessarye.lThereadercan ndthecodeinthe le*lib.plfoftheBinPrologdistribution.*8.11.1WsBlactkbYoard2basedfailuresurvivingstacks*۹A v!eryjusefuldatastructurethatcanbMeimplementedwiththeblackbMoardisa*stac!kthatsurvivesfailurebutstillallowstheprogrammertousesomeofthenice*propMertiesfoflogicalvdDariables.;The"mainopMerationsarepush/3thatsa!ves"atermtotheblac!kboardandpushes*ittoanamedstac!k,!pop/3thatremovesthetopelementfromanamedstackand*uni es!itwithitsthirdargumen!tandstack/3thatsimplygivesaccesstothelist*ontheblac!kbMoardrepresentingthestack.ATheonlyopMerationthatusescopyingis*push/3,`valthoughNifthetermthatispushedtothestac!khasalreadysomesubterms*onftheblac!kbMoard,suchsubtermswillnotbMecopiedagain.;Thefimplemen!tationisstraightforward:*push(Type,S,X):-6-/default_val(Type,S,Xs,[]),6-/saved([X|Xs],T),6-/set(Type,S,T).*pop(Type,S,X):-6-/default_val(Type,S,V,[]),6-/V=[X|Xs],6-/set(Type,S,Xs).*stack(Type,S,Xs):-val(Type,S,Xs).*default_val(X,Y,V,_):-val(X,Y,V),!.*default_val(X,Y,D,D):-def(X,Y,D).*8.11.2WsConstantt2timevectors*۹De ningav!ectorisdoneinitializingittoagivenZeroelement. Thevector_set/3*۹upMdateuoperationusessaved/2,xthereforetheoldcon!tentofvectorsisalsosubject*tofgarbagecollection._38'=ڠs}n}*vector_def(Name,Dim,Zero):-MaxisDim-1, 6-/saved(Zero,BBVal),6-/for(I,0,Max),%generatorforIfrom0toMaxAlet(Name,I,BBVal),%def/3orset/3ifneeded6-/fail.*vector_def(_,_,_).*vector_set(Name,I,Val):-saved(Val,BBVal),set(Name,I,BBVal).*vector_val(Name,I,Val):-val(Name,I,Val).;۹Buildingm!ulti-dimensionalarraysonthesevectorsisstraightforward,byde ning*anfindex-to-addresstranslationfunction.;The5spMecialcaseofahigh-performance2-dimension(possiblysparse)globalarra!y*canfbMehandledcon!venientlyfbyusingdef/3,set/3,vdDal/3andsaved/2asin:*global_array_set(I,J,Val):-saved(Val,S),set(I,J,S).R*8.12P-Blackb`oardbasedproblemsolving*8.12.1WsA2completeknightttour*۹Thefollo!wingisablackbMoardbasedcompleteknight-tour,PadaptedfromEvdDanTick's *w!ellfknownbMenchmarkprogram.*%recommendeduse:?-go(5).*go(N):-*time(_),6-/init(N,M),J%preparethechessboard6-/knight(M,1,1),!,(=%findsthefirstcompletetour*time(T),6-/write(time=T),nl,statistics,show(N).%showstheanswer*%fillstheblackboardwithfreelogicalvariables*%representingemptycellonthechessboard*init(N,_):-6-/for(I,1,N),R%generatesIfrom1toNnondeterministicallyAfor(J,1,N),>%for/3isthesameasrange/3intheArtofPrologM+bb_def(I,J,_NewVar), T%putsafreeslotinthehashingtable6-/fail.*init(N,M):-6-/MisN*N.aJ%returnsthenumberofcells*%triestomakeacompleteknighttour*knight(0,_,_):-!._39(G@s}n}*knight(K,A,B):- 6-/K1isK-1,6-/val(A,B,K), T%herewemark(A,B)astheK-thcellofthetour6-/move(Dx,Dy),%wetryanextmovenondeterministically6-/step(K1,A,B,Dx,Dy).*%makesastepandthentriesmore*step(K1,A,B,Dx,Dy):-ACisA+Dx,ADisB+Dy,Aknight(K1,C,D).*%showsthefinaltour*show(N):-6-/for(I,1,N),Anl,Afor(J,1,N),M+val(I,J,V),M+write(''),Xis1-V//10,tab(X),write(V),6-/fail.*show(_):-nl.*%possiblemovesoftheknight*move(2,1).move(2,-1).move(-2,1).move(-2,-1).*move(1,2).move(-1,2).move(1,-2).move(-1,-2).;۹Constan!t?timeaccessinthiskindofproblemstocell(I,J) isessentialforeciency*asLitisthemostfrequen!topMeration.vWhiletheblackbMoardbasedversiontakes39s*inBinPrologfora5x5squaresc!hessbMoard,anequivdDalentprogramrepresentingthe*bMoardݒwithalistofliststak!es147sinBinProlog,]167sinemulatedSicstus2.1and*68[0secondsinnativ!eSicstus2.1.>16,ZisKey<<17>>17.*%optimizedlemma-->O(instantiatedexecutingG)*tak_lemma(P,I,_,O):-val(P,I,X),!,X=O.*tak_lemma(P,I,G,O):-G,!,def(P,I,O).*go:-statistics(runtime,_),X+tak(24,16,8,X),X+statistics(runtime,[_,T]),statistics,X+write([time=T,tak=X]),nl.;۹WeehopMethatw!eshowedthepracticalityofBinProlog'sblackbMoardforbasic*w!orkfondatastructuresandproblemsolving.;BinProlog'sblac!kbMoardprimitivesmakeaclearseparationbMetweenthecpopying*۹andfthenamingin!tentfoverloadedinProlog'sassertandretract.;Our lblac!kbMoardprimitivesgivemostofthetimesimplerandmoreecientso-*lutionsktocurren!tprogrammingproblemsthanassertandretractwhilebMeingcloser*tofalogicalseman!ticsandmorecoMoperativeftopartialevdDaluation.*8.13P-ALindastyleinterfacetotheblackb`oard*۹Thefollo!wingpredicatesshowhowtodosomeLinda-styleopMerationsontopofthe*blac!kbMoardfprimitives.;TheMcurren!tfoMcusoftheoperationsismanagedb!yobject/1andmessage/1.*Out/?.ȹputsatupleMesontheblac!kbMoard,rd/?readsitandin/?removesit.*Eval/?̹executes2theGoalpartoftheclause(Answer:-Goal)foMcussedb!yobject/1_41*Xs}n}*۹andcmessage/1.jThenitputstheresultAnswerbac!ktotheblackbMoard.jAsAnswer *۹itselffcanbMeoftheform(A:-G),alimitedn!umberfofcascadedevalsarepossible.M*%out/1,rd/1,in/1*out(Mes):-object(Obj),message(Id),out(Obj,Id,Mes).*rd(Mes):-object(Obj),message(Id),rd(Obj,Id,Mes).*in(Mes):-object(Obj),message(Id),in(Obj,Id,Mes).*%out/2,rd/2,in/2*out(Id,Mes):-object(Obj),out(Obj,Id,Mes).*rd(Id,Mes):-object(Obj),rd(Obj,Id,Mes).*in(Id,Mes):-object(Obj),in(Obj,Id,Mes).*%out/3,rd/3,in/3*out(Obj,Id,_):-val(Obj,Id,_),!,fail.*out(Obj,Id,Mes):-saved(Mes,Sent),let(Obj,Id,Sent).*rd(Obj,Id,Mes):-val(Obj,Id,Mes).*in(Obj,Id,Mes):-val(Obj,Id,Mes),rm(Obj,Id).*%eval/0,eval/1,eval/2*eval:-object(Obj),message(Id),eval(Obj,Id).*eval(Id):-object(O),eval(O,Id).*eval(Obj,Id):-val(Obj,Id,(Answer:-Goal)),Goal,!,6-/saved(Answer,NewAnswer),6-/set(Obj,Id,NewAnswer).*%tools*object(New):-var(New),!,val('$object','$object',New).*object(New):-atomic(New),let('$object','$object',New).*message(New):-var(New),!,object(O),val(O,'$message',New).*message(New):-atomic(New),object(O),let(O,'$message',New).!*9BContinuationsffas rstorderobfjects񍍑*9.1ImContinuationmanipulationvs.intuitionistic/linearimplication*۹Using'in!tuitionisticimplication(actullayitshouldbMe-:butlet'sforgetthisfora*momen!t)fwecanwriteinBinProlog:Ainsert(X,Xs,Ys):-X+paste(X)=>ins(Xs,Ys).Ains(Ys,[X|Ys]):-paste(X).Ains([Y|Ys],[Y|Zs]):-ins(Ys,Zs)._42+`2s}n}*۹usedtonondeterministicallyinsertanelemen!tinalist,theunitclausepaste(X)is *a!vdDailablefonlywithinthescopMeofthederivationforins.Thisgiv!es:Ӎ*K?-?insert(a,[1,2,3],X). *X=[a,1,2,3];*X=[1,a,2,3];*X=[1,2,a,3];*X=[1,2,3,a]ym;۹WithrespMecttothecorrespondingPrologprogramw!eareworkingwithasimpler*form!ulationRinwhichtheelementtobMeinserteddoesnotha!veRtopercolateasdead*w!eight_throughouteac!hstepofthecomputation,MonlytobMeusedintheverylast*step.Wee]insteadclearlyisolateitinaglobal-vdDaluemanner,withinaunitclause*whic!hfwillonlybMeconsultedwhenneeded,andwhichwilldisappMearafterwards.;No!w,let5usimaginewearegiventheabilitytowritepartofaproMofstatecontext,*i.e.,to}indicateinarule'sleft-handsidenotonlythepredicatewhic!hshouldmatch*aagoalatomtobMereplacedb!ytherule'sbodye,butalsowhic!hothergoalatom(s)*shouldfsurroundthetargetedoneinorderfortheruletobMeapplicable.;Giv!enDthis,Xwecouldwrite,XusingBinProlog's@@(whichgivesinitssecondargu-*men!tathecurrentcontinuation)aprogramforinsert/3whichstrikinglyresembles*thefin!tuitionisticimplicationbasedprogramgivenabMove:Ӎ*Kinsert(X,Xs,Ys):-ins(Xs,Ys),paste(X).*ins(Ys,[X|Ys])?@@paste(X).*ins([Y|Ys],[Y|Zs]):-ins(Ys,Zs).ym*۹Notethattheelemen!ttobMeinsertedisnotpassedtotherecursiveclauseofthe*predicate:rins/2(whic!hbMecomesthereforesimpler),twhiletheunitclauseofthe*predicateMins/2willcomm!unicatedirectlywithinsert/3whichwilldirectly`paste'*thefappropriateargumen!tinthecontinuation.;In4thisform!ulation,WtheelementtobMeinsertedis rstgivenasright-handside*con!textfnofthesimplerpredicateins/2,s9andthispredicate's rstclauseconsultsthe*con!textpaste(X)onlywhenitistimetoplaceitwithintheoutputlist,i.e.when*theffactins(Ys,[X|Ys]),paste(X)isreac!hed.;Th!usforthisexample,AwecanalsoobtaintheexpressivepMowerofintuitionis-*tic/linearIimplicationb!ythiskindof(muchmoreecient)directmanipulationof*BinProlog'sf rstordercon!tinuations."**10K?Directbinaryclauseprogrammingandfull-blownK?continuationsq*۹BinPrologf3.45suppMortsdirectmanipulationofbinaryclausesdenoted_43,g~s}n};Head::-Body.*۹They_'giv!efullpMowertotheknowledgeableprogrammeronthefutureofthecompu- *tation.Note1thatsuc!hafacilityisnotavdDailableinconventionalWȈAM-basedsystems*wherefcon!tinuationsarenot rst-orderobjects.;Weefcanusethemtowriteprogramslik!e:5-Kmember_cont(X,Cont)::- ?strip_cont(Cont,X,NewCont,true(NewCont)).5-member_cont(X,Cont)::-?strip_cont(Cont,_,NewCont,member_cont(X,NewCont)).5-test(X):-member_cont(X),a,b,c.*۹Afquerylik!e5-K?-test(X).*۹willLreturnX=a;X=b;X=c;X=whatev!erLfollowsfromthecallingpMointoftest(X).*Kcatch(Goal,Name,Cont)::-:mlval(catch_throw,Name,Cont,call(Goal,Cont)).*throw(Name,_)::-:mlval(catch_throw,Name,Cont,nonvar(Cont,Cont)).*۹where~lval(K1,K2,Val)isaBinPrologprimitiv!ewhichuni esValwithaback- *trac!kdDable/globallogicalvariableaccessedb!yhashingontwo(constantorvdDariable)*k!eysfK1,K2.;Thisallo!wsforinstancetoavoidexecutionofthein niteloopfrominsidethe*predicatefb/1.*Kloop:-loop. *c(X):-b(X),loop.*b(hello):-throw(here).*b(bye).*go:-catch(c(X),here),write(X),nl.;۹Notice4thatduetoitssimpletrpanslationVsemanticsthisprogramstillhasa rst *orderbreadingandthatBinProlog'slval/3isnotessen!tialasitcanbMeemulatedby*anfextraargumen!tpassedtoallpredicates.;AlthoughF4implemen!tationofcatchandthrowrequiresfull-blowncontinuations,*w!efcanseethatatuserlevel,ordinaryclausenotationisenough._44-rؠs}n}*11K?Backtrackableffdestructiveassignment񍍑*11.1P-Up`datable54logicalarraysinProlog: jh xingthesemanticsofP- ߆T cmtt12setarg/3*۹Letusrecallthatsetarg(I,Term,Value)installsValueastheI-thargumen!tof *Termfandtak!escaretoputbacktheoldvdDaluefoundthereonbacktracking.;Setarg/3TVisprobablythemostwidellyused(atleastinSICStus,Aquarius,*Eclipse,ProLog-b!y-BIM,qBinProlog),incarnationofbac!ktrackdDablemutablearrays*(o!verloadedfonProlog'suniv!ersaltermtypMe).;Unfortunately)setarg/3lac!ksalogicalsemanticsandisimplementeddi erently*in9invdDarioussystems.QThisisma!ybMethereasonwhythestandardization(seeits*absenceTfromthePrologISOTDraft)ofsetarg/3canhardlyreac!haconsensusin*thefpredictablefuture.;Ideallye,setarg/3shouldw!orkasifanewterm(array)hadbMeencreatedidentical*totheoldone,exceptforthegiv!enelement.There'snoreasonto`destroy'apriori*thecon!tentoftheupMdatedcellortomakeitsubjecttouglysidee ects.Shouldthis*ha!ve@tohappMenforimplemen!tationreasons,gaarun-timeerrorshouldbeproduced,*atfleast,althoughthisisnotthecaseinan!yimplementationweknowof.;LetCusstartwithaninecien!tbutfairlycleanarray-upMdateoperation,setarg/4.*setarg(I,OldTerm,NewValue,NewTerm):-6-/functor(OldTerm,F,N),6-/functor(NewTerm,F,N),6-/arg(I,NewTerm,NewValue),6-/copy_args_except_I(N,I,OldTerm,NewTerm).*copy_args_except_I(0,_,_,_):-!.*copy_args_except_I(I,I,Old,New):-!,I1isI-1,6-/copy_args_except_I(I1,I,Old,New).*copy_args_except_I(N,I,Old,New):-N1isN-1,arg(N,Old,X),arg(N,New,X),6-/copy_args_except_I(N1,I,Old,New).;۹Wee`cansuppMosethatfunctorandargarespeci edb!ya( nite)setoffacts*describingx9theirbMeha!vioronthesignatureoftheprogram.yFeoragivenprogram,vwe*canfob!viouslyseesetarg/4asbMeingspeci edsimilarlyb!ya nitesetoffacts.;Feurthermore,suppMosethatallusesofsetarg/3arereplacedb!ycallstosetarg/4*withfthenewstatespassedaroundwithDCG-st!ylechainedvdDariables.;ThisploMokslik!eagoodde nitionofthein!tendedmeaningofaprogramusing*setarg/3.;Wee^Lwillsho!wthatactualimplementations(SicstusandBinProlog)canbMemade*tobMeha!veaccordinglytothissemanticsthroughasmall,sourcelevelwrappinginto*afsuitableADT.;LetS'$box'/1bMeanewfunctornotinthesignatureofan!yuserprogram.By*de ning_45.zQs}n}*safe_arg(I,Term,Val):-arg(I,Term,'$box'(Val)). *safe_setarg(I,Term,Val):-setarg(I,Term,'$box'(Val)).;۹UsingT'$box'/1insafe_arg/3(safe_setarg/3)ensuresthatcellI/ofthefunc-*torMTermwillbMeindirectlyaccessed(updated)ev!enifitcontainsavdDariablewhichin*a͇WȈAMPw!ouldbMecreatedonplaceandthereforeitwouldbMesubjectofunpredictable*side-e ects.;Thefreasonofthedraconianw!arninginsomePrologmanualsmanualF ...setargisonlysafeifthereisnofurtheruseoftheoldvdDalueoftheF replacedfargumen!t...*.JwillthereforedisappMearandapurelylogicalsetarg(withatrpanslation%semantics*۹expressible݀intermofsetarg/4)canbMeimplemen!ted.*Notonlythisensuresrefer-*en!tialâtransparencyandallowsnormalreferencestotheoldcontentoftheupMdated*cells,butitalsomak!esincompatibleimplementationsofsetarg(Sicstus,Eclipse,*BinProlog)fw!orkexactlythesameway6.;Teof nishthejobpropMerly,somethinglik!ethefollowingADTcanbMecreated.*new_array(Size,Array):-6-/functor(Array,'$array',Size).*update_array(Array,I,Val):-6-/safe_setarg(I,Array,Val).*access_array(Array,I,Value):-6-/safe_arg(I,Array,Value).;۹Wee6suggesttousethisADT)iny!ourprograminsteadofbasicsetargwhenpMer-*formancefisnotanabsoulterequiremen!t.;Anewchange_arg/3builtinhasbMeenaddedtoBinPrologtoallo!w,Kecient*failure-driv!en iterationwithpMersistentinformation. Itworkslikesetarg/3except*thatside-e ectsarepMermanen!t.{Souldunsafeheapobjectsbegeneratedthrough*theprecesschange_arg/3signalsarun-timeerror.$Thisisnotthecaseasfarthe*result>iseitheraconstan!t(whichisdoMesnotneednewheapallocation)ortheresult*offmo!vingapreexistentheapobjecttoanewloMcation.;Feor{instancethe(Hask!ell-style){fold/4predicate(seelibrary/high.pl)uses*change_arg/3ntoa!voidnpainfuliterationandslo!wside-e ectsonthedynamicdatabase.*TheĹimplemen!tationiscompMetitiveisspMeedwithhand-writtenexplicitelyrecursive*coMdefandusesonlymemoryproportionaltothesizeoftheansw!er.*۟ wffU? L͍ {-=6aAjfurtheram9biguityinsomeimplementationsofAsetarg/3comesfromthefactthatitisnot clearTiftheloAcationitselforitsdereferencedcon9tentsTshouldbem9utated_46/Ks}n}*%fold,foldlbasedonsafefailuredrivendestructivechange_arg *foldl(Closure,Null,List,Final):-fold(Closure,Null,X^member(X,List),Final).*fold(Closure,Null,I^Generator,Final):-6-/fold0(s(Null),I,Generator,Closure,Final).*fold0(Acc,I,Generator,Closure,_):-6-/term_append(Closure,args(SoFar,I,O),Selector),6-/Generator,Aarg(1,Acc,SoFar),ASelector,Achange_arg(1,Acc,O),6-/fail.*fold0(Acc,_,_,_,Final):-6-/arg(1,Acc,Final).*?-foldl(+,0,[1,2,3],R).*?-fold(*,1,X^member(X,[1,2,3]),R)."A*12K?`Invisible'ffgrammarsq*۹By>usingbac!ktrackdDable>setarg/3andlogicalglobalvariables(lval/3)w!ecanimple-*men!tԑeasilyasupMersetofDCG\grammarspracticallyequivdDalentwithPeterVeanRoy's*ExtendedDCGs.BWeecallthemHiddenApccumulatorGrammarsasnopreproMcessor*isin!volvedintheirimplementation. ItturnsoutthatthetechniquehastheadvdDan-*tageof`meta-programmingforfree'(withouttheexpMensiv!ephrase/3),5Iallowssource*lev!eldebuggingandcanbMemademorespaceandtimeecientthantheusualpre-*proMcessingCVbasedimplemen!tation.Onrealexamples,jtheirbestuseisforwritting*aPrologcompiler(theycancon!tributetothewritingofcompactandecientcoMde*withYv!erylittleprogramminge ort)andforforlargenaturallanguageproMcessing*systems.;Basicallye,ftheyw!orkasfollows:*K%?tools *begin_dcg(Name,Xs):-lval(dcg,Name,Xs-Xs).*end_dcg(Name,Xs):-lval(dcg,Name,Xs-[]).*w(Word,Name):-5-lval(dcg,Name,State),5-State=_-[Word|Xs2],5-setarg(2,State,Xs2).*begin_dcg(Xs):-begin_dcg(default,Xs)._470s}n}*Kend_dcg(Xs):-end_dcg(default,Xs). *w(Word):-w(Word,default).*%?grammar*x:-ng,v.*ng:-a,n.*a:-w(the).*a:-w(a).*n:-w(cat).*n:-w(dog).*v:-w(walks).*v:-w(sleeps).*%?test*go:-begin_dcg(Xs),x,end_dcg(Ys),write(Ys),nl,fail.*?-?go.*[the,cat,walks]*[the,cat,sleeps]*[the,dog,walks]*[the,dog,sleeps]*[a,cat,walks]*[a,cat,sleeps]*[a,dog,walks]*[a,dog,sleeps];۹TheprogramcanbMefoundinprogs/setarg/ffH'dcg.pl.9Feorreasonsofeciency(i.e. *toVvequalorbMeatpreprocessorbasedDCGsintermsofbothspaceandtime)Bin-*Prolog'sJ`HiddenAccum!ulatorGrammars'havebMeenimplementedinCJ&andare*accessiblefthroughthefollo!wingsetofbuiltins:*Kdcg_connect/1 %?workslike'C'/3with2hiddenarguments *dcg_def/1%?setsthefirsthiddenDCGargument*dcg_val/1%?retrivesthecurrentstateoftheDCGstream*dcg_tell/1 %?focusonagivenDCGstream(from0to255)*dcg_telling/1?%returnsthenumberofthecurrentDCGsstream*%?INVISIBLEDCGconnectoperation:normallymacro-expanded*'#'(Word):-dcg_connect(Word).*%?example:?-dcg_phrase(1,(#a,#b,#c),X).*dcg_phrase(DcgStream,Axiom,Phrase):-5-dcg_telling(X),dcg_tell(DcgStream),?dcg_def(Phrase),J-Axiom,_481]s}n}?Kdcg_val([]), 5-dcg_tell(X).x;۹Starting>withBinProlog3.33dcg_tell/1isbac!ktrackdDable,4mostly>likelvdDal/3. *AdmissiblevdDaluesforXindcg_tell(X)arerangingfrom1to255,+whic!hgives(I*hopMe)fenoughdistinctDCGstreamsforan!yapplication.;In!visiblegrammarsconsumenoheap,MastheyarebasedonbacktrackdDabledestruc-*tiv!eassigmentimplementedwithatechniquecalledvalue9trpailinglikesetarg/3.*Theyfconsumetrailonlywhenanondeterministicsituation(c!hoice-pMoint)farrises.;Iffy!outrythefollowingprogram:*K%?grammar *ax:-ng,v.*ng:-a,n.*a:-dcg_connect(the).*a:-dcg_connect(a).*n:-dcg_connect(cat).*n:-dcg_connect(dog).*v:-dcg_connect(walks).*v:-dcg_connect(sleeps).*go:-5-st(H,T),5-dcg_def(Xs),ax,dcg_val([]),5-pp(Xs,H,T),nl,5-fail.*st(H,T):-statistics(global_stack,[H,_]),statistics(trail,[T,_]).*pp(O,H0,T0):-5-st(H1,T1),T?isT1-T0,HisH1-H0,5-write([heap=H,trail=T]),write('==>'),write(O),nl,fail.*pp(_,_,_).*۹itfwillprin!toutsomethinglike:*K[heap?=308,trail=44]==>[the,cat,walks]*[heap?=308,trail=32]==>[the,cat,sleeps]*[heap?=308,trail=32]==>[the,dog,walks]*[heap?=308,trail=20]==>[the,dog,sleeps]*[heap?=308,trail=44]==>[a,cat,walks]*[heap?=308,trail=32]==>[a,cat,sleeps]*[heap?=308,trail=32]==>[a,dog,walks]*[heap?=308,trail=20]==>[a,dog,sleeps]_492s}n}*13K?BinProlog'sffC-interfaceq*۹Teo 5bMeabletoextendBinPrologandpossiblyem!bedditaslogicengineiny!ourno *run-time}feeapplicationy!ouwillneedaBinPrologC-sourcecoMdelicence.zSeethe les*SOUR!CE.LICENCEsandsPRICINGformoreinformation.wYeoucanalsoin!teractwith*otherlanguagesunderUNIX usingthebidireactionalpipMebasedin!terfacestarting*fromfBinProlog'sTcl/Tkin!terfaced(seedirectoryTCL).;Theffollo!wingsequenceofquickexamplesshowshowitworks.R*13.1P-ADemoProgram*۹Starting٪withv!ersion3.39theC-interfacehasbMeenmovedindirectoryc_inter.*The7bdiscussionwhic!hfollowsbasicallyexplainsthecontentofthe lesc.cc.hand*c.plfinthisdirectorye.;OnceBinPrologiscorrectlyinstalledas le"bp"somewhereiny!ourpathalong*withOthelibrariesbp.oandw!am.owhichshouldbMeindirectory../srcandyou*ha!vexaC-compileraround,y!oucansimplydomakeindirectoryc_intertocreate*a standaloneapplicationwhic!hintegratesthefunctionalityoftheC-coMdein lec.c.;Teotesttheresultingstandaloneexecutablec_binpro,dtryoutthedemoc_test*۹de nedHin lec.pl.tStartrunningitb!ytypingc_binproandthentypMec_test.*۹atRvthePrologprompt.Teoa!voidRvthepromptanddirectlylaunc!htheapplicationadd*main:-c_test."fin lec.plbMeforet!ypingmake.*13.2P-CallingCfromBinProlog:addingnewbuiltins*۹NewHbuiltinsareaddedinheaders.plandaftera"mak!erealclean;make"anew*v!ersion>ofBinPrologcontainingthemisgeneratedautomaticallye. NStartingfrom*headers.plthesystemwill rstgeneratethe lesdefs.h,prof.h,builtins.pl*۹andnthenrecompileitself.v Feorthisrecompilationeitherapreviousv!ersionofBinProlog7;۹orfSICStusPrologisused.;Anfexampleofdeclarationinheaders.plis:5-Kb0(+/3,arith(1),in_body).?%arity=3+1bybinarization*۹NoticeX:thatarith(1)meansthatitis"lik!eanarithmeticfunctions"whichreturns*onefvdDalue,i.ethisshouldbMeusedasin5-K+(0,1,Result).*۹IQw!ouldQsuggesttostartwiththesimplestformofinteraction:4acallofyourown*C-coMde`fromBinProlog.Terymodifyinginthe lec.c(pro!videdwiththeC-sources*ofBinProlog,indirectoryc_inter),thefunctionnew_builtin()whic!hloMoksas*follo!ws:*۟ffffU? L͍ {-=7aUseT"mak9eremake"ifBinPrologistheonlyPrologaround._503ls}n} *K/*:mNew?builtinscanbecalledfromPrologas::mnew_builtin(0,,):mX(1)?containstheinteger`opcode'ofyourbuiltin:mX(2)?containsyourinputarg:mregs[I]?containssomthingthatwillbeunifiedwithwhatyoureturnJ-(the?precisevalueofIdependsontheregisterallocator).:mYou?areexpectedto`return'either?-?anon-nullobjectthatwillbeunifiedwith,or?-?NULLtosignalFAILURE:mAs?thereturnedobjectwillbeinaregisterthis:mcan?beusedforinstancetoaddagarbagecollector:mthat?moveseverydataareaaround...**/*term?new_builtin(H,regs,A,P,wam)5-register?termH,regs,*A;5-register?instrP;5-register?stackwam;*{ BP_check_call();:mswitch(BP_op)5-{?/*?forbeginners...*/?case?0:Om/*?thisjustreturnsyourinputargument(defaultbehavior)*/?break;?case?1:J-BP_result=BP_integer(13);?/*thisexamplereturns13*/?break;?case?2:J-BP_result=BP_atom("hello");?/*thisexamplereturns'hello'*/?break;?/*?forexperts...*/?case?3:/*iterativelistconstruction*/?{?cellmiddle,last,F1,F2;inti;J-BP_make_float(F1,?77.0/2);J-BP_make_float(F2,?3.14);J-BP_begin_put_list(middle);_514$s}n}YKBP_put_list(BP_integer(33)); YBP_put_list(F1);YBP_put_list(BP_string("hello"));YBP_put_list(F2);J-BP_end_put_list();J-BP_begin_put_list(last);Tfor(i=0;?i<5;i++){_-BP_put_list(BP_integer(i));T}J-BP_end_put_list();J-BP_begin_put_list(BP_result);TBP_put_list(BP_string("first"));TBP_put_list(middle);TBP_put_list(last);TBP_put_list(F1);TBP_put_list(F2);J-BP_end_put_list();?}?break;?case?4:/*consstylelistconstruction*/J-BP_begin_cons();J-BP_result=OmBP_cons(_-BP_integer(1),_-BP_cons(ymBP_integer(2),ymBP_nil_-)Om);J-BP_end_cons();?break;?case?5:/*forhackersonly...*/;J-BP_result=(cell)H;J-H[0]=g.DOT;J-H[1]=X(2);J-H[2]=g.DOT;J-H[3]=BP_integer(99);J-H[4]=g.DOT;J-H[5]=(cell)(H+5);?/*newvar*/J-H[6]=g.DOT;J-H[7]=(cell)(H+5);?/*samevaraspreviouslycreated*/_525s}n}J-KH[8]=g.DOT; J-H[9]=BP_atom("that's?it");J-H[10]=g.NIL;J-H+=11;?break;?case?6:J-BP_fail();?break;?case?7:J-{ cell?T=BP_input;Yif(BP_is_integer(T))i{fprintf(g.tellfile,"integer:?%ld\n",BP_get_single_integer(T));nBP_result=BP_integer(-1);i}YelseiBP_fail();J-}?break;:mcase?8:/*forexperts:callingBinPrologfromC*/J-{?cellL,R,Goal;TBP_begin_put_list(L);_-BP_put_list(BP_string("one"));_-BP_put_list(BP_integer(2));_-BP_put_list(BP_string("three"));_-BP_put_list(BP_input);?/*whatevercomesasinput*/TBP_end_put_list();TBP_put_functor(Goal,"append",3);TBP_put_old_var(L);TBP_put_old_var(L);TBP_put_new_var(R);TBP_prolog_call(Goal);?/*thiswillreturnNULLonfailure!!!*/TBP_put_functor(Goal,"write",1);TBP_put_old_var(R);TBP_prolog_call(Goal);?/*callswrite/1*/TBP_put_functor(Goal,"nl",0);TBP_prolog_call(Goal);?/*callsnl/0*/TBP_result=R;?/*returnstheappendedlisttoProlog*/_536js}n} J-K}J-break;?case?10:/*forexperts:callingBinPrologfromC*/J-{?cellL,R,Goal;TBP_begin_put_list(L);_-BP_put_list(BP_string("one"));_-BP_put_list(BP_integer(2));_-BP_put_list(BP_string("three"));_-BP_put_list(BP_input);?/*whatevercomesasinput*/TBP_end_put_list();TBP_put_functor(Goal,"cut_test",3);?/*seec.pl*/TBP_put_old_var(L);TBP_put_old_var(L);TBP_put_new_var(R);TBP_prolog_call(Goal);?/*thiswillreturnNULLonfailure!!!*/TBP_put_functor(Goal,"write",1);TBP_put_old_var(R);TBP_prolog_call(Goal);?/*callswrite/1*/TBP_put_functor(Goal,"nl",0);TBP_prolog_call(Goal);?/*callsnl/0*/TBP_result=R;?/*returnstheappendedlisttoProlog*/J-}J-break;:mcase?11:/*CALLINGBinPrologonaNEWENGINEfromC*/J-{?stackEngine;Tcell?Goal,Answer;Tcell?Xs,X;TBP_begin_put_list(Xs);_-BP_put_list(BP_string("new_engine_test"));_-BP_put_list(BP_input);?/*whatevercomesasinput*/_-BP_put_list(BP_integer(100));_-BP_put_list(BP_integer(200));_-BP_put_list(BP_integer(300));TBP_end_put_list();TBP_put_functor(Goal,"member",2);_547Es}n}TKBP_put_new_var(X); TBP_put_old_var(Xs);TEngine=BP_create_engine(wam,100,50,50);TBP_load_engine(Engine,Goal,X);Twhile((Answer=(cell)ask_engine(Engine)))_-{?cellGoal1;iBP_put_functor(Goal1,"write",1);iBP_put_old_var(X);iBP_prolog_call(Goal1);?/*callswrite/1*/iBP_put_functor(Goal1,"nl",0);iBP_prolog_call(Goal1);?/*callsnl/0*/_-}TBP_result=X;?/*returnsthenowfreevariable*/TBP_destroy_engine(Engine);J-}J-break;5-case?12:/*CALLINGfromCBinPrologonaNEWENGINE.t-The?friendliestway...*/J-{?stackEngine;Tcell?Goal,Answer;Tcell?Xs,X;TBP_sread("[0,s(0),s(s(0)),[a,b,c]]",Xs);TBP_put_functor(Goal,"member",2);TBP_put_new_var(X);TBP_put_old_var(Xs);TEngine=BP_create_engine(wam,100,50,50);TBP_load_engine(Engine,Goal,X);Twhile((Answer=(cell)ask_engine(Engine)))_-{iprintf("Answer?=%s\n",BP_swrite(Answer));_-}TBP_result=X;?/*returnsthenowfreevariable*/TBP_destroy_engine(Engine);J-}J-break;_558Ƣs}n} ?K/*?EDITANDADDYOURCODEHERE....*/?default:Dreturn?LOCAL_ERR(X(1),"calltounknownuser_definedCfunction");5-}5-return?H;*}R*13.3P-CallingPrologfromC*۹Normallythisisdoneaftera rstcallfromPrologtoC(thisgiv!esachancetothe *prologJsystemtogetinitialized).-Themost exibletec!hniqueisbasedonmutiple*engines.Teak!efaloMokatcase11andcase12intheprevioussection.;Theflo!wer-levelinterface,(whichfollows)isstillusablebutlessrecommended.*K/*?thiscanbeusedtocallPrologfromC:seeexampleif0*/ *term?bp_prolog_call(goal,regs,H,P,A,wam)5-register?termgoal,regs,H,*A;5-register?instrP;5-register?stackwam;*{5-PREP_CALL(goal);5-return?bp(regs,H,P,A,wam);*}*/*?simpleexampleofprologcall*/*term?if0(regs,H,P,A,wam)5-register?termregs,H,*A;5-register?instrP;5-register?stackwam;*{?termbp();5-cell?goal=regs[1];5-/*?inthisexampletheinputGOALisinregs[1]*/5-/*?ofcourseyoucanalsobuilditdirectlyinC*/5-/*?unlessyouwantspecificactiononfailure,Duse?BP_prolog_call(goal)here*/5-H=bp_prolog_call(goal,regs,H,P,A,wam);5-if(H)Dfprintf(stderr,"success:?returningfromNewWAM\n");5-elseDfprintf(stderr,"fail:?returningfromNewWAM\n");5-/*?donotforgetthis!!!*/_569~s}n}5-Kreturn?H;/*returnNULLtosignalfailure*/ *};۹BinProlog'smain()shouldbMethestartingpoin!tofyourprogramtobMeableto *initializealldataareas. Teocallbac!kfromCwyoucanfollowtheexampleif0. A*sustained)BinProlog-CdialogcanbMesetupb!yusingthe2techniquesdescribMed*previouslye.;An@exampleofusingtheC-in!terface(compMosedof lesc.hc.cc.pl)canbefaound*inydirectoryc_inter.yIfy!ouwhishyoucancreateastandaloneC-executablebyusing*BinProlog's[compilationtoC>(seedirectoriespl2c,6dynpl2c)y!oucansimplytypMe*`mak!e'findirectoryc_inter."A*14K?Exampleffprogramsq*۹Thefdirectoryprogscon!tainsafewBinPrologbMenchmarksandapplications.*Kallperms.pl:?permutationbenchmarkswithfindall*bestof.pl:an?implementation ofbestof/3*bfmeta.pl:breadth-first?metainterpreter*bp.pl:$float?intensiveneuralnetlearningbyback-propagation*cal.pl:calendar:?computesthelast10000fools-days*fcal.pl:?calendar:?withfloats*chat.pl:?CHAT?parser*choice.pl:Choice-intensive?ECRCbenchmark*cnrev.pl:nrev?with^/2asaconstructorinsteadof./2*cube.pl:?E.?Tick'sbenchmarkprogram*fibo.pl:?naive?Fibonacci*ffibo.pl:naive?Fibonacciwithfloats*hello.pl:example?programtocreatestand-aloneUnixapplication*knight.pl:knight?tourtocoverachess-board(usesthebboard)*lknight.pl: knight?tourtocoverachess-board(usesthelists)*ltak.pl:?tak?programwithlemmas*lfibo.pl:fibo?programwithlemmas*lq8.pl?:?8queensusinggloballogicalvariables*maplist.pl: fast?findallbasedmaplistpredicate*nrev.pl:?naive?reverse*nrev30.pl:small?nrevbenchmarktoreconsultforthemeta-interpreter*or.pl:$or-parallel?simulatorforbinaryprograms(VT100)*other_bm*:benchmark?suitetocompareSicstus,QuintusandBinProlog*puzzle.pl:king-prince-queen?puzzle*q8.pl:$fast?N-queens*qrev.pl:?quick?nrevusingbuiltindet_append/3*subset.pl:findall+subset*tetris.pl:tetris?player(VT100)_57:s}n}*15K?Relatedffworkq*۹SomeD BinPrologrelatedpapMerscanbefoundatclemen!t.info.umoncton.cainthe le *papers.tar.Z.֢*۹Thereaderin!terestedintheinternalsofBinPrologandotherissuesrelatedtobinary*logicm:programs,xtheirtransformationsandpMerformanceevdDaluationisreferredto[16 4,*90'u,f11,f4 ,f5,f12,f10,f8,f7,f14,f13,f1,f20,f6,f17,f15,f19,f3,f2]"(*References0'u[1]A/K.}DeBossc!hereandPe.Tarau.X-Blac!kbMoard-basedlogicprogramming.InPrpo-A/cpeedingsofthe1993ILPSConferpence,fVeancouv!er,Canada,1993.pMoster.򍍍0'u[2]A/K.xDeBossc!hereandPe.Tarau.Blac!kbMoardCommunicationinLogicProgram-A/ming.ߑInPrpoceedingsـoftheP)AR\CO'93Conferpence,Grenoble,Ferance,Sept.A/1993.0'u[3]A/K.DeBossc!hereandPe.Tarau.HighPerformanceCon!tinuationPassingSt!yleA/Prolog-to-C7Mapping.&In7E.Deaton,MD.OppMenheim,J.Urban,andH.Berghel,A/editors,PrpoceedingsFofthe1994A\CMFSympposiumonAppliedComputing,pagesA/383{387,fPhoMenix/AZ,Mar.1994.A!CMPress.0'u[4]A/B.DemoMen.gOntheTransformationofaPrologprogramtoamoreecien!tA/Binaryfprogram.Teec!hnicalRepMort130,K.U.Leuven,Dec.1990.0'u[5]A/B.*DemoMenandA.Mari"Den.dImplemen!tationofPrologasbinaryde nitePro-A/grams.InߥA.Veoronk!ov,eeditor,Lpogic4Programming,XR\CLP3Proceedings,en!umbMerA/592pinLectureNotesinArti cialIn!telligence,pages165{176,Berlin,Heidel-A/bMerg,f1992.Springer-Veerlag.0'u[6]A/T.Lindgren.Compilinglogicprogramsusingabinarycon!tinuationstyle,cDec.A/1992.draft,fUppsalaUniv!ersitye.0'u[7]A/U.Neumerk!el.6Sppecialization5ofPrpolog5ProgramswithPartialFlyStaticGoalsA/andBinarization.Phdfthesis,Teec!hnischefUniversitfatWien,1992.0'u[8]A/U.(Neumerk!el. A(transformationbasedontheequalitybMetweenterms. InLpogicA/PrpogramSynthesisandT)rpansformation,YLOPSTR1993.7Springer-Veerlag,M1993.0'u[9]A/Pe.cTarau.mAcSimpli edAbstractMac!hinefortheexecutionofBinaryMetapro-A/grams.:In APrpoceedings[CoftheLpogic[CProgrammingConference'91,)|pages A119{128.A/ICOT,fTeoky!o,71991.*[10]A/Pe.;Tarau.EcologicalMemoryManagmen!tinaContinuationPassingPrologEn-A/gine.In|Y.Bekk!ersandJ.Cohen, editors,MemoryđManagementInternationalA/WorkshopfIWMMf92Prpoceedings,Nn!umbMer-637inLectureNotesinComputerA/Science,fpages344{356.Springer,Sept.1992._58;s}n}*۹[11]A/Pe.Tarau. ProgramTransformationsandWȈAM-suppMortfortheCompilation A/ofDe niteMetaprograms.InA.Veoronk!ov,editor,LpogicaProgramming,?R\CLPA/Prpoceedings,/n!umbMer!592inLectureNotesinArti cialIn!telligence,pages462{A/473,fBerlin,HeidelbMerg,1992.Springer-Veerlag.*[12]A/Pe.Tarau.ZWam-optimizationsinBinProlog:(to!wardsarealisticcontinuationA/passingDnprologengine.;Teec!hnicalRepMort92-3,XDept.d'Informatique,Univ!ersit"DeA/defMoncton,July1992.a!vdDailablebyftpfromclement.info.umoncton.ca.*[13]A/Pe.pTarau.)/2*(.)/2*(.)/3*/?/3*//?/3*(/\)/3*(:)/2*(:=:)/2*(;)/2*(<)/2*<<?/3*(=)/2*(=..)/2*(=:=)/2*(=<)/2*(==)/2*(=>)/2*(=\=)/2*(>)/2*(>=)/2*>>?/3*(@<)/2*(@=<)/2*(@>)/2*(@>=)/2*C/3*(\)/2*(\)/3*(\+)/1*(\/)/3*(\=)/2*(\==)/2*^?/2*abolish/2*abort/0*acos/2*add_cont/3*add_instr/4_60=s}n}*Kadd_true/2 *all/3*all_but_at_least/4*append/3*appendN/2*append_conj/3*append_disj/3*apropos/1*apropos/2*arg/3*argn/3*arith_dif/2*arith_eq/2*asin/2*ask_engine/2*asm/0*asm/1*assert/1*asserta/1*assertz/1*assumed/1*assumei/1*assumel/1*atan/2*atom/1*atomic/1*bagof/3*bb/0*bb/1*bb_change_arg/3*bb_def/2*bb_def/3*bb_element/2*bb_get/4*bb_let/2*bb_let/3*bb_list/1*bb_list0/3*bb_op/3*bb_put/2*bb_reset/0*bb_rm/1*bb_rm/2*bb_set/2*bb_set/3*bb_val/2*bb_val/3*boot/0*bu0/3_61>[s}n}*Kbu1/1 *bu_ctr/2*call/1*change_arg/3*char_in_cmd/2*clause/2*cmake/0*cmake/1*cmake/2*cnl/0*co/0*compare/3*compare0/3*compile/1*compound/1*consult/1*copy_term/2*copy_term/3*cos/2*create_engine/4*ctime/1*current_module/1*current_op/3*current_predicate/1*current_predicate/2*cwrite/1*dcg_connect/1*dcg_def/1*dcg_phrase/2*dcg_phrase/3*dcg_tell/1*dcg_telling/1*dcg_val/1*debug/1*def/3*destroy_engine/1*det_append/3*det_append0/3*dir/0*display/1*do_body/1*drop_at_least/2*(dynamic)/1*ed/0*edit/0*edit/2*emacs/0*erase/1*errmes/2_62?s}n}*Kexists_file/1 *exp/2*expand_term/2*expr/2*fail/0*false/0*fast_write/1*file_extension_list/1*file_library/2*file_search_path/1*find_at_most/4*find_file/2*find_while/4*findall/3*findall/4*findall_conj/3*findall_conj/4*findall_disj/3*findall_disj/4*findall_load_heap/1*findall_store_heap/1*findall_workhorse/5*float/1*float/2*float_fun/3*float_fun2/4*flush/0*for/3*free_variables/4*functor/3*gc_call/1*gc_read/1*gc_read_clause/1*gensym/2*get/1*get0/1*get_code/1*greater/2*greater_eq/2*ground/1*halt/0*halt/1*has_fuel/1*help/1*if/3*if0/3*include/1*init_gensym/1*input_float/4_63@)s}n}*Kinstance/2 *integer/1*integer/2*interactive/1*(is)/2*is_assumed/1*is_builtin/1*is_compiled/1*is_dynamic/1*is_module/1*is_prolog/1*is_public/1*iso_close_stream/2*iso_eof/1*iso_get_byte/2*iso_lseek/4*iso_open_stream/3*iso_peek_byte/2*iso_put_byte/2*iso_read_term/3*iso_write_term/3*ith_clause/4*kcmake/0*keysort/2*kmake/0*length/2*less/2*less_eq/2*let/3*lift_heap/2*list2term/2*list_asm/3*listing/0*listing/1*listing/2*log/2*log/3*ls/0*lval/3*lwrite/1*main/1*make/0*make/1*make/2*make/4*make/5*make0/4*make_appl/1*make_cmd/2_64As}n}*Kmake_executable_unix_appl/3 *make_file_name/4*member/2*member_i/4*meta_interpreter/1*metacall/1*mod/3*(module)/1*(module)/2*module_call/2*module_name/3*module_predicate/3*modules/1*my_edit/1*name/2*new_builtin/3*nl/0*nonvar/1*(nospy)/1*(not)/1*notepad/0*nth_answer/2*nth_member/3*number/1*numbervars/3*older_file/2*op/3*op0/3*or/2*otherwise/0*patch_it/4*phrase/2*phrase/3*pico/0*portable_display/1*portray/1*portray_clause/1*pow/3*pp_clause/1*pp_term/1*predicate_property/2*print/1*profile/0*(public)/1*put/1*put_code/1*quiet/1*quietmes/1*random/1_65Bjs}n}*Kread/1 *read_clause/1*read_term/2*read_tokens/2*read_with_singletons/3*reconsult/1*repeat/0*restart/0*retract/1*retractall/1*rm/2*saved/2*see/1*see_at/1*see_tell/2*see_tell_at/2*seeing/1*seeing_at/1*seeing_telling/2*seeing_telling_at/2*seen/0*seen_told/1*self_info/1*set/3*set_c_threshold/1*set_c_trace/1*setarg/3*setof/3*setref/2*shell/1*show_code0/2*sin/2*skip_until/2*skip_when/2*sort/2*(spy)/1*spy_goal/1*spying/1*sqrt/2*sread/2*load_engine/3*stat0/3*stat_dict/2*statistics/0*statistics/2*string_op/3*strip_cont/3*strip_cont0/2*swrite/2_66C s}n}*Ksymcat/3 *system/1*tab/1*take_at_most/2*tan/2*tell/1*tell_at/1*telling/1*telling_at/1*term2list/4*term_append/3*term_chars/2*termcat/3*textedit/0*told/0*top_read_term/2*toplevel/0*tr_body/2*trace/1*true/0*ttyin/1*ttynl/0*ttyout/1*ttyprin/1*ttyprint/1*ttyput/1*ttywrite/1*ttywriteln/1*unix/1*unix_access/2*unix_argc/1*unix_argv/2*unix_cd/1*unix_getenv/2*unix_kill/2*user_error/2*val/3*var/1*vars_of/2*vi/0*warn_singletons/3*while/2*write/1*write_float/1*writeq/1 ύ;۹BinProlog'sfdefaultopMeratorde nitions(see leoper.pl)arethefollo!wing:t5*K:-op(1000,xfy,',').*:-op(1100,xfy,(';'))._67D s}n} *K:-op(1200,xfx,('-->')).*:-op(1200,xfx,(':-')).*:-op(1200,fx,(':-')).*:-op(700,xfx,'is').*:-op(700,xfx,'=').*:-op(500,yfx,'-').*:-op(500,fx,'-').*:-op(500,yfx,'+').*:-op(500,fx,'+').*:-op(400,yfx,'/').*:-op(400,yfx,'*').*:-op(650,xfy,'.').*:-op(700,xfx,'>=').*:-op(700,xfx,'>').*:-op(700,xfx,'=<').*:-op(700,xfx,(<)).*:-op(700,xfx,(=\=)).*:-op(700,xfx,(=:=)).*:-op(300,fy,(~)).*:-op(200,xfy,(^)).*:-op(300,xfx,(mod)).*:-op(400,yfx,(>>)).*:-op(400,yfx,(<<)).*:-op(400,yfx,(//)).*:-op(500,yfx,(#)).*:-op(500,fx,(#)).*:-op(500,yfx,(\/)).*:-op(500,yfx,(/\)).*:-op(700,xfx,(@>=)).*:-op(700,xfx,(@=<)).*:-op(700,xfx,(@>)).*:-op(700,xfx,(@<)).*:-op(700,xfx,(\==)).*:-op(700,xfx,(==)).*:-op(700,xfx,(=..)).*:-op(700,xfx,(\=)).*:-op(900,fy,(not)).*:-op(900,fy,(\+)).*:-op(900,fx,(spy)).*:-op(900,fx,(nospy)).*:-op(1050,xfy,(->))._68Ets}n}*K:-op(1050,xfx,(@@)). *:-op(1150,fx,(dynamic)).*:-op(1150,fx,(public)).*:-op(1150,fx,(module)).*:-op(1200,xfx,(::-)).*:-op(900,yfx,(:)).*:-op(600,xfx,(:=:)).*:-op(950,xfy,(-:)).*:-op(950,xfy,(=>)).*:-op(600,xfx,(<=)).*:-op(700,xfx,(=:)).*:-op(700,xfx,(:=))._69; EK 3 cmmi10147 D<903801FFC0010F13F8013F13FF90B67E48814881489038807FF03A0FFC000FF801F06D 7E484813036F7EA21500A26C5A6C5AC9FC15015EA215034B5A150F4B5A4B5A913803FFC0 0103B55A4991C7FC5D8116C06D8090C76C7EED0FF8ED03FC6F7E6F7E821780163FA2EE1F C0A3123C127EB4FCA2163F1780167F6C16006D5C6D495A6C6C1303D81FF8EB0FFC3A0FFF 807FF86C90B55A6C5D6C15806C6C91C7FC010F13FC010113C02A3F7CBD33>51 D97 D101 D103 D114 D<90381FFE0F90B5EA8F80000314FF120F5A5AEBF007387F800190C7 FC00FE147F5A153FA37E007FEC1F0001C090C7FCEA3FF8EBFFC06C13FF6C14E0000314F8 C680011F13FF01001480020713C0EC007FED1FE0007C140F00FEEC07F01503A27EA27F15 076D14E06D130F6DEB3FC09038FE01FF90B61280160000FD5C00FC14F8D8F83F13E0D878 0790C7FC242E79AC33>II E /Fb 34 122 df46 D<161C163E167EA216FE16FC150116F8 A2150316F0A2150716E0150F16C0A2151F1680153F1600A25D157E15FE5DA214015DA214 035D14075DA2140F5D141F5DA2143F92C7FC5C147EA214FE5CA213015C13035CA213075C 130F5CA2131F5C133F91C8FCA25B137EA213FE5B12015BA212035B12075BA2120F5B121F 5BA2123F90C9FCA25A127E12FE5AA25A1278275B7AC334>I<140F143F5C495A130F48B5 FCB6FCA313F7EAFE071200B3B3A8B712F0A5243C78BB34>49 D<903803FF80013F13F890 B512FE00036E7E4881260FF80F7F261FC0037F4848C67F486C6D7E6D6D7E487E6D6D7EA2 6F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B5AA24B5A5E4A5B4A5B4A48 C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A4948EB1F00495AEB1F8049C7FC 017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I<903801FFE0010F13FE013F 6D7E90B612E04801817F3A03FC007FF8D807F06D7E82D80FFC131F6D80121F7FA56C5A5E 6C48133FD801F05CC8FC4B5A5E4B5A4A5B020F5B902607FFFEC7FC15F815FEEDFFC0D900 0113F06E6C7E6F7E6F7E6F7E1780A26F13C0A217E0EA0FC0487E487E487E487EA317C0A2 5D491580127F49491300D83FC0495A6C6C495A3A0FFE01FFF86CB65A6C5DC61580013F49 C7FC010313E02B3D7CBB34>I56 D<903801FFE0010F13FC01 3F13FF90B612C04801E07F489038003FF048486D7E000F6E7E485A6F7E123F4848808117 8012FFA217C0A517E0A4007F5CA4003F5C6C7E5D6C7E00075C3903FF80FB6C13FF6C6C13 F36D13C3010F018313C090380008031400A24B1380EA03F0487E486C1500487E4B5AA25E 151F4B5A495C6C48EBFFE049485B2607FC0F5B6CB6C7FC6C14FC6C14F06D13C0D90FFEC8 FC2B3D7CBB34>I<16FCA24B7EA24B7EA34B7FA24B7FA34B7FA24B7FA34B7F157C03FC7F EDF87FA2020180EDF03F0203804B7E02078115C082020F814B7E021F811500824A81023E 7F027E81027C7FA202FC814A147F49B77EA34982A2D907E0C7001F7F4A80010F835C8301 1F8391C87E4983133E83017E83017C81B500FC91B612FCA5463F7CBE4F>65 DI<9226 07FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01039138803FFB4990 39F80003FF4901C01300013F90C8127F4948151FD9FFF8150F48491507485B4A15034817 01485B18004890CAFC197E5A5B193E127FA349170012FFAC127F7F193EA2123FA27F6C18 7E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6DED07E0D97FFEED0FC06D6CED3F 80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC010091B55A023F15E0020715800200 02FCC7FC030713C03F407ABE4C>I75 D78 D<003FB912FCA5903BFE003FFE003FD87FF0EE0FFE01C0160349160190C71500197E127E A2007C183EA400FC183F48181FA5C81600B3AF010FB712F8A5403D7CBC49>84 D<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF0486C806F7EA36F 7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F1380381FFE00 485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391FFF07F36CEBFF E100031480C6EC003FD91FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAFEDFFE002 0713FC021FEBFF80027F80DAFF8113F09139FC003FF802F06D7E4A6D7E4A13074A807013 80A218C082A318E0AA18C0A25E1880A218005E6E5C6E495A6E495A02FCEB7FF0903AFCFF 01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113C033407DBE3A>IIIII<903A03FF8007F0013F9038F83FF8499038FCFFFC48 B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381FF0F81700003F81A7 001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F03138090 CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E01207001F16F0393FE0 00034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F003F16E001F0147F D81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E0010101FCC7FC2F3D7DA8 34>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E4A80DA0FE07F91381F007F023C80 5C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7CBE3A>II< 13FFB5FCA512077EB092380FFFFEA5DB01FEC7FC4B5AED07F0ED1FE04B5A4B5A4BC8FCEC 03FC4A5A4A5A141FEC7FF84A7EA2818102E77F02C37F148102007F826F7E6F7E151F6F7E 826F7F6F7F816F7FB5D8FC07EBFFC0A5323F7DBE37>107 D<13FFB5FCA512077EB3B3AF B512FCA5163F7CBE1D>I<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13FE4A6E48 7FDA0FE09026F07F077F91261F003FEBF8010007013EDAF9F0806C0178ECFBC04A6DB448 6C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858>I<01FFEB 1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5CA25CA35C B3A4B5D8FE0FB512E0A533297CA83A>II<01FFEBFFE0B5000713FC021FEBFF80027F80DAFF8113F09139FC007FF8000301F0 6D7E4A6D7E4A130F4A6D7E1880A27013C0A38218E0AA4C13C0A318805E18005E6E5C6E49 5A6E495A02FCEBFFF0DAFF035B92B55A029F91C7FC028713FC028113C00280C9FCACB512 FEA5333B7DA83A>I<3901FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C3FF800 0713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2B6FCA5 25297DA82B>114 D<90383FFC1E48B512BE000714FE5A381FF00F383F800148C7FC007E 147EA200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14F06C806C806C806C80C6 1580131F1300020713C014000078147F00F8143F151F7EA27E16806C143F6D140001E013 FF9038F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA929>IIII121 D E /Fc 1 59 df<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>58 D E /Fd 91 127 df<121C127FEAFF80B1EA7F00AF123EC7FCA8121C127FA2EAFF80A3EA7F 00A2121C09346FB32C>33 D<003C131E007F137F481480A66C1400A6007E7FA6003E133E A3003C131E001C131C191977B32C>I<010F133C90381F807EA8013F13FE4A5AA4007FB6 12F0B712F8A4003F15F03A007E01F800A5EBFE0301FC5BA6003FB612F0B712F8A46C15F0 3A01F807E000A30003130F01F05BA86C486C5A25337DB22C>I37 D39 D<143814FC13011303EB07F8EB0FF0EB1FC0EB3F80EB7F0013FE485A485A5B12 075B120F5B485AA2123F90C7FCA25A127EA312FE5AAC7E127EA3127F7EA27F121FA26C7E 7F12077F12037F6C7E6C7E137FEB3F80EB1FC0EB0FF0EB07F8EB03FC1301130014381642 72B92C>I<127012FC7E7E6C7E6C7EEA0FE06C7E6C7E6C7E6C7E137F7F1480131F14C013 0FEB07E0A214F01303A214F81301A314FC1300AC130114F8A3130314F0A2130714E0A2EB 0FC0131F1480133F14005B13FE485A485A485A485AEA3FC0485A48C7FC5A5A1270164279 B92C>II<147814FC AF007FB612F0B712F8A46C15F0C700FCC7FCAF147825267DAB2C>II<007FB6FCB71280A46C150021067B9B2C>I<121FEA3F80EA7F C0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>I<1507ED0F80151FA2153F16005D157E 15FE5D14015D14035DA214075D140F5D141F5D143F92C7FC5C147E14FE5CA213015C1303 5C13075C130F5C131F5CA2133F91C8FC5B137E13FE5B12015B12035B12075BA2120F5B12 1F5B123F90C9FC5A127E12FE5AA25A127821417BB92C>II<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C 1F1200B3AE007FB512E0B612F0A36C14E01C3477B32C>IIII<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090 B512E015F8819038FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07 E0A4123C127EB4FC150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80F FC6CB55A6C5C000114C06C6C90C7FCEB0FF823347CB22C>II<1278B712C016E0A316C000FCC7EA3F80ED7F0015FE0078 5CC712014A5A4A5A5D140F5D4A5A143F92C7FC5C147E14FE5C13015CA2495AA213075CA3 495AA4495AA5133F91C8FCAA131E23357CB32C>III<12 1FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0A5EA 7FC0EA3F80EA1F000B2470A32C>II<1507ED1F80153F15FF14034A1300EC1FFC 4A5AECFFE0491380010790C7FCEB0FFCEB3FF8EB7FE048485A4890C8FCEA0FFEEA1FF8EA 7FF0EAFFC05BA27FEA7FF0EA1FF8EA0FFEEA03FF6C13C06C6C7EEB3FF8EB0FFC6DB4FC01 017F6D13E0EC3FF86E7EEC07FF6E13801400153F151FED0700212A7BAD2C>I<003FB612 E04815F0B712F8A36C15F0CAFCA8007FB612F0B712F8A36C15F06C15E025147DA22C>I< 127012FC7E6C7E13E06C7EEA1FFC6C7E3803FF80C67FEB7FF0EB1FF8EB0FFEEB03FF6D13 C06D6C7EEC3FF8EC0FFC6EB4FC0201138080A25C02071300EC0FFCEC3FF8EC7FE049485A 4990C7FCEB0FFEEB1FF8EB7FF0EBFFC000035BD80FFEC8FC485AEA7FF0485A138048C9FC 5A1270212A7BAD2C>III<14FE497EA4497FA214EFA2130781A214C7A2010F7FA3 14C390381F83F0A590383F01F8A490387E00FCA549137E90B512FEA34880A29038F8003F A34848EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C> I<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0 A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501 ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E016C0B712806CECFE 0015F027337FB22C>I<02FF13700107EBE0F84913F9013F13FD4913FFEBFF813901FE00 7F4848131FD807F0130F1507485A491303485A150148C7FCA25A007EEC00F01600A212FE 5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F 6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F00100138025357DB32C>I<007F B5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F01503 16F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC 03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0B712F8A37E3903F000 01A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB6 12FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803F0C7FCA716781600A5 15F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C7E26337EB22C>I<90 3901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC01497E4848137F4848 133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA8913803FFF84A13 FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F6C7E6C6C13FF6D 5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB32C>II<007FB512F8B612FCA36C14F839000FC000B3B3A5 007FB512F8B612FCA36C14F81E3379B22C>I75 D<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01F8A8007FB6FCB7 FCA36C15F025337DB22C>IIII<007FB512C0B612F88115FF6C15802603 F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90 B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>II< 387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4B C7FCEC01FE140790B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D8 7FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>I<90381FF80790B5EA0F80 4814CF000714FF5A381FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC0F 00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F90 38007FFEEC07FF02001380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F 806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC23357C B32C>I<007FB612FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA249 7F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C03B03F00001F800 B3AF6D130300015DA26D130700005D6D130F017F495A6D6C485AECE0FF6DB5C7FC6D5B01 0313F86D5B9038003F802B3480B22C>III<3A3FFF03FFE0484913F0148714076C6D13E03A01F800FE007F0000495A 13FE017E5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7FCA26D5AA26D5A A2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01017E7FEBFE0049 7F0001147E49137F000380491480151FD87FFEEBFFFC6D5AB514FE6C15FC497E27337EB2 2C>I I<003FB612C04815E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A003C5CC712034A 5AA24A5A4A5AA24A5A4AC7FCA214FE495AA2495A495AA2495A495AA2495A49C8FCA213FE 485AA24848EB03C049EB07E01207485A5B121F485AA248C7FCB7FCA46C15C023337CB22C >I<387FFFFCB512FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC17416FB92C>I<1278 12F87EA27E127E127F7E7F121F7F120F7F1207A27F12037F12017F12007F137E137F7F80 131FA280130F801307801303801301801300A280147E147F8081141F81140F8114078114 03A281140181140081157E157F811680151FA2150FED070021417BB92C>I<387FFFFCB5 12FEA37EC7127EB3B3B3387FFFFEB5FCA36C13FC17417DB92C>I<130EEB3F80EBFFE000 0313F8000F13FE487FD87FF113C0D8FFE013E0EB803F38FE000F007CEB07C00030EB0180 1B0C78B22C>I<007FB6FCB71280A46C150021067B7D2C>I<137013F812011203EA07F0EA 0FE0EA1FC01380EA3F00123E127E127CA212FC5AA4EAFF8013C013E0A2127FA2123FEA1F C0EA0F800D1B71B82C>I<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01 FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC0 90C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A00 3FF007FC27247CA32C>II<903803FFE0011F13F8017F13FE48B5FC48804848C6FC EA0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D 133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>I< EC0FFE4A7EA380EC003FAAEB07F8EB3FFE90B512BF4814FF5A3807FC0F380FF00348487E 497E48487F90C7FC007E80A212FE5AA87E007E5CA2007F5C6C7E5C6C6C5A380FF0073807 FC1F6CB612FC6CECBFFE6C143FEB3FFC90390FF01FFC27337DB22C>IIIII<1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7E A2EA0007B3A8007FB512FCB612FEA36C14FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC 3F80A2EC0E0091C7FCA748B512804814C0A37EC7120FB3B3A2141F003C1480007E133FB4 14005CEB01FEEBFFFC6C5B5C001F5B000790C7FC1A467CB32C>II<387FFFE0B57EA37E EA0003B3B3A5007FB61280B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1F F83AFFDFFE3FFCD87FFF13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E0 13C0A301C01380B33B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D 2481A32C>I<397FF01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC0 1F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>I< EB07FCEB1FFF017F13C048B512F048803907FC07FC390FF001FE48486C7E0180133F003F 158090C7121F007EEC0FC0A348EC07E0A76C140F007E15C0A2007F141F6C15806D133F6C 6CEB7F006D5B6C6C485A3907FC07FC6CB55A6C5C6C6C13C0011F90C7FCEB07FC23247CA3 2C>I<397FF01FE039FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091 380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07 F0150F9138801FE09138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFF E0B57EA36C5B27367FA32C>I<903903FC078090391FFF0FC0017F13CF48B512EF4814FF 3807FE07380FF00148487E49137F4848133F90C7FC48141F127E150F5AA87E007E141FA2 6C143F7F6C6C137F6D13FF380FF0033807FC0F6CB6FC6C14EF6C6C138F6D130FEB07F890 C7FCAD0203B5FC4A1480A36E140029367DA32C>II<90387FF8700003B512F8120F5A5A387FC00F387E00 034813015AA36CEB00F0007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C13F801 0113FCEB0007EC00FE0078147F00FC143F151F7EA26C143F6D133E6D13FE9038F007FC90 B5FC15F815E000F8148039701FFC0020247AA32C>I<131E133FA9007FB6FCB71280A36C 1500D8003FC8FCB1ED03C0ED07E0A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D 13F89038003FE0232E7EAD2C>I<3A7FF003FF80486C487FA3007F7F0001EB000FB3A315 1FA2153F6D137F3900FE03FF90B7FC6D15807F6D13CF902603FE07130029247FA32C>I< 3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D131F00011500A26D5B000014 3EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA21483010F5BA214C701075B A214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>II<3A3FFF03FFF048018713F8A36C010313F03A00FC007E005D9038 7E01F8013F5BEB1F83EC87E090380FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE 130180903803EF80903807CFC0EB0FC7EC83E090381F01F0013F7FEB7E00017C137C4913 7E0001803A7FFF01FFFC1483B514FE6C15FC140127247EA32C>I<3A7FFF01FFFCB50081 13FE148314816C010113FC3A03E0000F806C7E151F6D140012005D6D133E137C017E137E 013E137CA2013F13FC6D5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB 00FFA292C7FC80A2143EA2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F49 5A387FFF806C90C8FC6C5A6C5AEA07E027367EA32C>I<003FB612E04815F0A4007EC7EA 1FE0ED3FC0ED7F80EDFF004A5A003C495AC7485A4A5A4A5A4A5A4A5A4AC7FCEB01FC495A EB0FF0495A495A495A49C8FC4848EB01E04848EB03F0485A485A485A485A485AB7FCA46C 15E024247DA32C>I<15FF02071380141F147F91B512004913C04AC7FCEB03F85CB31307 EB1FE013FF007F5BB55A49C8FC6D7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13 FF6E1380141F14070200130021417BB92C>I<127812FCB3B3B3A9127806416DB92C>II<01F81370D803FE13F8380FFF0148138748EBCFF0397F9FFFE0D8FF0F 13C0D8FC07138039F803FE00387000F81D0A79B22C>I E /Fe 19 119 df<17E0EE01F0A2EE03E0A2EE07C0160F1780EE1F00A2163EA25EA25E15015E4B5A A24B5AA24B5A151F93C7FC153EA25DA25DA24A5A14035D4A5AA24A5AA24AC8FCA2143E14 7E147C5CA2495AA2495A13075C495AA249C9FCA2133EA25B13FC5B485AA2485AA2485AA2 485A121F90CAFC123EA25AA25AA25A5A2C4B7EB727>47 D<161C163CA2167C16FCA21501 821503A2ED077E150F150E151CA21538A2157015F015E0EC01C0A2913803807F82EC0700 A2140E141E141C5CA25CA25C49B6FCA25B913880003F49C7EA1F80A2130E131E131C133C 13385B13F05B12011203D80FF0EC3FC0D8FFFE903807FFFEA32F367BB539>65 D<0107B612C04915F017FC903A003F8000FE177FEF3F8092C7121FA24A15C0A2147EA214 FE18804A143FA20101ED7F00177E4A5C16010103EC03F04C5A4AEB1FC091B6C7FC495C91 39F0007F804AEB0FC0707E010F6E7E834A1301A2011F81A25CA2133F5F91C71203A2494A 5AA2017E4A5A4C5A01FE4A5A4CC7FC49EB01FE0001EC07FC007FB612F0B712C04BC8FC32 337BB236>I<0107B548B512C0495CA2903C003FC0000FF0004B5CA292C75BA24A141F60 147EA202FE143F95C7FC5CA201015D177E5CA2010315FE5F5C91B6FC5B5F9138E00001A2 010F14035F5CA2011F14075F5CA2013F140F5F91C7FCA249141F5F137EA201FE143F94C8 FC5B00015D3B7FFFF01FFFFCB55BA23A337BB239>72 D<0107B612C04915F883903A003F 8001FEEE003FEF1F8092C713C0170F5C18E0147EA214FEEF1FC05CA201011680173F4A15 00177E010315FE5F4AEB03F8EE07E00107EC3FC091B6C7FC16F802E0C9FC130FA25CA213 1FA25CA2133FA291CAFCA25BA2137EA213FEA25B1201387FFFF0B5FCA233337CB234>80 D<0003B812C05A1880903AF800FC003F260FC001141F0180150F01005B001EEE07001403 121C003C4A5BA200380107140E127800705CA2020F141E00F0161CC74990C7FCA2141FA2 5DA2143FA292C9FCA25CA2147EA214FEA25CA21301A25CA21303A25CA21307A25C497E00 1FB512F05AA2323374B237>84 D97 D<14FCEB07FF90381F078090383E03C0EB FC013801F8033803F0073807E00F13C0120F391F80070091C7FC48C8FCA35A127EA312FE 5AA4007C14C0EC01E0A2EC03C06CEB0F80EC1F006C137C380F81F03803FFC0C648C7FC1B 2278A023>99 D 101 D<143FECFF80903803E1E6903807C0FF90380F807FEB1F00133E017E133F49133EA2 4848137EA24848137CA215FC12074913F8A21401A2D80FC013F0A21403120715E0140714 0F141F3903E03FC00001137FEBF0FF38007FCF90381F0F801300141FA21500A25C143E12 38007E137E5C00FE5B48485A387803E0387C0F80D81FFFC7FCEA07F820317CA023>103 D105 D<133FEA07FF5A13FEEA007EA3137CA213FCA213F8A21201A213F0A21203A213E0A21207 A213C0A2120FA21380A2121FA21300A25AA2123EA2127EA2127C1318EAFC1C133CEAF838 A21378137012F013F0EAF8E01279EA3FC0EA0F00103579B314>108 D<3903C007F0390FF01FFC391E787C1E391C7CF01F393C3DE00F26383FC01380EB7F8000 781300EA707EA2D8F0FC131F00E01500EA60F8120000015C153E5BA20003147E157C4913 FCEDF8180007153C0201133801C013F0A2000F1578EDE070018014F016E0001FECE1C015 E390C7EAFF00000E143E26227AA02B>110 D<14FCEB07FF90381F07C090383E03E09038 FC01F0EA01F83903F000F8485A5B120F484813FCA248C7FCA214014814F8127EA2140300 FE14F05AA2EC07E0A2007CEB0FC01580141FEC3F006C137E5C381F01F0380F83E03803FF 80D800FCC7FC1E2278A027>I<3903C00FC0390FF03FF0391E78F078391C7DE03C393C3F C0FC00381380EB7F00007814F8D8707E13701500EAF0FC12E0EA60F812001201A25BA212 03A25BA21207A25BA2120FA25BA2121FA290C8FC120E1E227AA020>114 DI<1303EB0F80A3131FA214 00A25BA2133EA2137EA2137C387FFFF8A2B5FC3800F800A21201A25BA21203A25BA21207 A25BA2120FA25B1460001F13F014E01300130114C01303001E1380EB07005BEA0F1EEA07 F8EA01E015307AAE19>II<01F01338D803FC13FCEA0F1E120E12 1C123C0038147CEA783E0070143CA2137ED8F07C1338EA60FCC65A1578000114705BA215 F0000314E05BA2EC01C0A2EBC003158014071500EBE00EA26C6C5A3800F878EB7FE0EB1F 801E227AA023>I E /Ff 20 117 df<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A72 8927>46 D<1538157C15FCA2140115F8140315F0140715E0140F15C0141F1580143F1500 A25C147E14FE5C13015C13035C13075C130F5CA2131F5C133F91C7FC5B137E13FE5B1201 5B12035BA212075B120F5B121F5B123F90C8FC5A127E12FE5AA25A12781E3A7CB327>I< EB1FF8EBFFFE0003EBFF80000F14C015E0391FF01FF0393FC007F8EB800115FC1400A26C C7FC1204C8FC140115F81403EC07F0140FEC3FE090381FFFC0491380A215E06D13F09038 001FF8EC03FC1401EC00FE157E157F153FA21238127C12FEA2157F48147E6C14FE007FEB 01FCEB8003393FF01FF86CB512F06C14E000031480C6EBFE00EB1FF820307DAE27>51 D65 D<007FB5FCB612C08115F87E3907E003FCEC00FE157E157F81A615 7EA25D1403EC0FF890B55A15C015F081819038E000FE157FED3F80151FA2ED0FC0A6151F 1680153FED7F004A5A007FB55AB65A5D15E06C1480222E7FAD27>I<3A7FFE07FFE0B548 13F0A36C486C13E03A07E0007E00AF90B512FEA59038E0007EB03A7FFE07FFE0B54813F0 A36C486C13E0242E7FAD27>72 D<007FB5FCB612E081816C803907E003FEEC00FF81ED3F 80151F16C0150FA6151F1680153FED7F005DEC03FE90B55A5D5D5D92C7FC01E0C8FCADEA 7FFEB5FCA36C5A222E7FAD27>80 D<007FB61280B712C0A439FC03F00FA60078EC078000 0091C7FCB3AB90B512C04880A36C5C222E7EAD27>84 D<3803FFC0000F13F04813FC4813 FF811380EC1FC0381F000F000480C71207A2EB0FFF137F0003B5FC120F5A383FFC07EA7F C0130012FE5AA46C130F007F131FEBC0FF6CB612806C15C07E000313F1C69038807F8022 207C9F27>97 D99 D101 D<153F90391FC0FF80D97FF313C048B6 12E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F48486C7EA66C6C485AEBC01FA2 390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5FC15E015F84814FE4880EB 8001007EC7EA3F80007C140F00FC15C0481407A46C140F007C1580007F143F6C6CEB7F00 9038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337EA027>103 DI<130F497E497EA46D 5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E1D2F7B AE27>I<387FFF80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>108 D<387FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA25BB03A7F FF83FFE0B500C713F0A36C018313E024207F9F27>110 DI<397FFC03FC39FFFE0FFF023F13804A13C0007F90B5FC39 007FFE1F14F89138F00F809138E002004AC7FC5CA291C8FCA2137EAD007FB57EB67EA36C 5C22207E9F27>114 D<9038FFF3800007EBFFC0121F5A5AEB803F38FC000F5AA2EC0780 6C90C7FCEA7F8013FC383FFFF06C13FC000713FF00011480D8000F13C09038003FE01407 0078EB03F000FC1301A27E14036CEB07E0EBE01F90B512C01580150000FB13FC38707FF0 1C207B9F27>I<133C137EA8007FB512F0B612F8A36C14F0D8007EC7FCAE1518157EA415 FE6D13FC1483ECFFF86D13F06D13E0010313C0010013001F297EA827>I E /Fg 1 111 df110 D E /Fh 55 123 df13 D39 D44 D<387FFFFEA3B5FCA21705799521>I<1838187CA218F8170118F0 EF03E0A2EF07C0A2EF0F80171F1800173EA25FA25F16015F4C5AA24C5AA24C5A161F94C7 FC163EA25EA25E15015E4B5AA24B5AA24B5A151F93C8FC153EA25DA25D14015D4A5AA24A 5AA24A5A141F92C9FC143EA25CA25C13015C495AA2495AA2495A131F91CAFC133EA25BA2 5B12015B485AA2485AA2485A121F90CBFC123EA25AA25AA25A5A365B7FC32E>47 D<15031507150F151F151E153E157EEC01FEEC03FC1407141FEB01FF90380FFBF8EB1FC3 EB0E07130015F0A2140FA215E0A2141FA215C0A2143FA21580A2147FA21500A25CA25CA2 1301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CEB7FE0B612F0A215E0203D77 BC2E>49 D<15FE913803FFC091380F01F091383C00F84A137C4A7F4948133F49487F4A14 8049C7FC5BEB0E0C011E15C0EB1C0EEB3C06133813781370020E133FD9F00C148013E014 1C0218137F00011600EBC0384A13FEEC600102E05B3A00E3C003F89039FF0007F0013C49 5A90C7485A5E037FC7FC15FC4A5A4A5AEC0FC04AC8FC147E14F8EB03E0495A011FC9FC13 3E49141801F0143C48481438485A1678485A48C85A120E001E4A5AD83FE0130301FF495A 397C3FF01FD8780FB55AD8700391C7FCD8F0015B486C6C5A6E5AEC07C02A3F79BC2E>I< ED7F80913803FFE091380F80F891383C007C02F87FD901E07F494814804948130F49C7FC 010E15C0131EEB1C18EB3C1CEB380C0178141F17801370A2021C133F6D4814004A5BD91F E0137ED90F805B90C8FC4B5A4B5A4B5AED1F8003FFC7FCECFFFC15F0A2EC00FC153E153F 8182150F82A4151FA2121E127F153F485DA3484AC7FC12F800E014FE5D14016C495A0070 495A0078EB0FC00038495A6C017EC8FC380F01F83803FFE0C690C9FC2A3F78BC2E>I<16 38167E16FE16FCA3150116F8A3150316F0A2150716E0A2ED0FC0A3ED1F80A216005DA215 7EA2157C15FC5D14015D14035D4A5AA24A5AA24AC7FC143EED038091387C0FC014F8ECF0 1F01011480EB03E014C0903807803F010F1400EB1F00133E495B49137E485A485A484813 FE48B46C5A4813F04813FE267C00FF130800F090380FFFFC00601301C714E0913803F800 5DA314075DA3140F5DA3141F5DA3020EC7FC274F7DBC2E>I<02C0EB018002F0130FD901 FEEB7F0091B512FE5E5E4914E016804BC7FCECBFF8D90780C8FC91C9FCA35B130EA3131E 131CA3133C9038381FC0ECFFF090383BE07C90387F003E017E133F017C7F0178805B4980 90C7FCA6153FA4001F147F486C5C487EA24913FF00FF92C7FC90C7FC48495A12E04A5A5D 6C495A140F00705C0078495A6C495A003E01FEC8FC381F03FC380FFFF0000313C0C648C9 FC293F77BC2E>II<15FF020713C091381F81E091383E00F002FC13F84948137C495A4948137E 010F143E495A133F4A133F017F147F91C7FC5BA2485AA216FF12035B16FE150112075B15 03A216FC491307A20003140F16F8151F12016D133F0000EC7FF015EF90387C01CF90393E 079FE090380FFE1FD903F813C090C7123FA21680157F160015FEA24A5A001C5C007F1303 485C4A5A4A5A4A5A4849C7FC00F8137E00E05B6C485A387C07E0383FFFC06C90C8FCEA03 F8283F77BC2E>57 D<131EEB3F80137FEBFFC05AA214806C13005B133C90C7FCB3120FEA 3FC0127FA212FFA35B6CC7FC123C122777A61C>I<171C173C177CA217FCA216011603A2 1607A24C7EA2161DA216391679167116E1A2ED01C1A2ED038115071601150EA2031C7FA2 4B7EA25D15F05D4A5AA24A5AA24AC7FC5C140E5C021FB6FC4A81A20270C7127FA25C1301 5C495AA249C8FCA2130E131E131C133C5B01F882487ED807FEEC01FFB500E0017FEBFF80 A25C39417BC044>65 D<49B712C018F818FE903B0003FC0001FF9438007F804BEC3FC0A2 F01FE014074B15F0180FA2140F5D181FA2021F16E05D183F19C0023FED7F804B14FF1900 4D5A027F4A5A92C7EA07F0EF1FE0EF7F804AD903FEC7FC92B512F017FE4AC7EA3F800101 ED1FE04A6E7E17078401036F7E5CA30107825CA3010F5E4A1407A260011F150F5C4D5A60 013F153F4A4A5A4D5A017F4A90C7FC4C5A91C7EA0FF849EC3FF0B812C094C8FC16F83C3E 7BBD40>I<9339FF8001C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA 0FF0EB071FDA1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E49 48157C495A13FF91C9FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5B A312FF5BA490CCFCA2170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E 6D1403001F4B5A6D4AC8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F 8090261FFFFEC9FC010713F0010013803A4272BF41>I<49B812F8A390260003FEC7121F 18074B14031801F000F014075DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B 91C7FCA217F0027F5CED80011603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF0 03804C13070107020E14005C93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15 014A4A5A1707017F150F4D5A4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>69 D<49B812F0A390260003FEC7123F180F4B1403A2F001E014075DA3140F5D19C0A2141F5D 1770EFF003023F02E013804B91C7FCA21601027F5CED8003A2160702FFEB1F8092B5FCA3 49D9003FC8FC4A7F82A20103140E5CA2161E0107141C5CA293C9FC130F5CA3131F5CA313 3F5CA2137FA25C497EB612E0A33C3E7BBD3B>II<49B648B6FC495DA2D9000390C7000313004B5D4B5DA2180714074B5DA2180F140F4B 5DA2181F141F4B5DA2183F143F4B5DA2187F147F4B5DA218FF91B8FC96C7FCA292C71201 5B4A5DA2170313034A5DA2170713074A5DA2170F130F4A5DA2171F131F4A5DA2173F133F 4A5DA2017F157FA24A5D496C4A7EB66CB67EA3483E7BBD44>I<49B6FC5BA2D900031300 5D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF92C7FCA35B5CA313035CA3 13075CA3130F5CA3131F5CA3133F5CA2137FA25C497EB67EA3283E7BBD23>I<4AB61280 A2180091C713C0167F5FA216FF94C7FCA35D5EA315035EA315075EA3150F5EA3151F5EA3 153F5EA3157FA25EA215FFA293C8FCA25CA25DA2380F8003EA3FC0D87FE05BA21407D8FF C05B140F01805B49485A12FC0070495A4A5A6C01FEC9FC383C01FC380F07F03807FFC0C6 48CAFC314079BD30>I<49B612C0A25FD9000390C8FC5D5DA314075DA3140F5DA3141F5D A3143F5DA3147F5DA314FF92C9FCA35B5CA313035C18C0EF01E0010716C05C1703188013 0F4A140718005F131F4A141EA2173E013F5D4A14FC1601017F4A5A16074A131F01FFECFF F0B8FCA25F333E7BBD39>76 D<49B5933807FFFC496062D90003F0FC00505ADBBF805E1A 771AEF1407033F923801CFE0A2F1039F020FEE071F020E606F6C140E1A3F021E161C021C 04385BA2F1707F143C023804E090C7FCF001C0629126780FE0495A02705FF00700F00E01 14F002E0031C5BA2F03803010116704A6C6C5D18E019070103ED01C00280DA03805BA294 3807000F13070200020E5C5FDB03F8141F495D010E4B5CA24D133F131E011CDAF9C05CEE FB80197F013C6DB4C7FC013895C8FC5E01784A5C13F8486C4A5CD807FE4C7EB500F04948 B512FE16E01500563E7BBD52>I79 D<49B77E18F018FC903B0003FE0003FEEF00FF 4BEC7F80F03FC00207151F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0187F4B 1580A2027FEDFF00604B495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512FC17E0 4ACAFCA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C497EB6 7EA33C3E7BBD3E>I<49B612FCEFFF8018F0903B0003FE000FF8EF03FE4BEB00FF841980 0207ED3FC05DA219E0140F5DA3021FED7FC05DA2F0FF80143F4B15004D5A60027F4A5A4B 495A4D5AEF3F8002FF02FEC7FC92380007F892B512E01780499038000FE04A6D7E707E70 7E0103814A130083A213075CA25E130F5C5F1603131F5CA3013F020714404A16E05F017F 160119C04A01031303496C1680B6D8800113079438FE0F009338007E1ECAEA3FFCEF07F0 3B407BBD42>82 D<92390FF001C0ED7FFE4AB5EA0380913907F80FC791390FC003EF9139 1F8001FF4AC71300027E805C495A4948143EA2495AA2010F153C5CA3011F1538A38094C7 FC80A214FC6DB4FC15F015FE6DEBFFC06D14F06D14FC6D80143F020F7F020180EC001F15 0303007F167F163FA2161FA212075A5F120EA2001E153F94C7FCA2163E003E157E167C00 3F15FC4B5A486C5C4B5A6D495AD87DE0EB1F80D8F8F849C8FC017F13FE39F03FFFF8D8E0 0F13E048C690C9FC32427ABF33>I<48B9FCA25A903AFE001FF00101F89138E0007FD807 E0163E49013F141E5B48C75BA2001E147FA2001C4B131C123C003814FFA2007892C7FC12 704A153C00F01738485CC716001403A25DA21407A25DA2140FA25DA2141FA25DA2143FA2 5DA2147FA25DA214FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5AA2383D71BC41 >I<001FB500F090B512F0485DA226003FF0C7380FFC004AEC03F04A5D715A017F1503A2 4A5DA201FF150795C7FC91C8FCA2485E170E5BA20003161E171C5BA20007163C17385BA2 000F167817705BA2001F16F05F5BA2003F1501A2495DA2007F1503A2495DA2160794C8FC 48C8FC5E160E161E6C151C163C5E5E5E6C6C13014B5A001F4A5A6C6C011FC9FC6D133E6C 6C13F83903FC07F0C6B512C0013F90CAFCEB07F83C406FBD44>I<277FFFFE01B500FC90 B512E0B5FCA20003902680000790C7380FFC006C90C701FCEC07F049725A04035EA26350 C7FCA20407150EA2040F5D1A3C041F153862163B6216734F5A6D14E303014B5A6C15C303 034BC8FC1683DB0703140E191E030E151C61031C7F61ED380161157003F04A5A15E00201 4B5A15C0DA03804AC9FC60DA0700140E60140E605C029C5D14B8D97FF85D5C715A5C4A5D A24A92CAFC5F91C7FC705A137E5F137C5F137801705D53406EBD5B>87 D<147E49B47E903907C1C38090391F80EFC090383F00FF017E137F4914804848133F485A A248481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401485C5AA21403EDF038 5AA21407EDE078020F1370127C021F13F0007E013F13E0003E137FECF3E1261F01E313C0 3A0F8781E3803A03FF00FF00D800FC133E252977A72E>97 DIIII<167C4BB4FC923807C78092380F83 C0ED1F87161FED3F3FA2157EA21780EE0E004BC7FCA414015DA414035DA30103B512F8A3 90260007E0C7FCA3140F5DA5141F5DA4143F92C8FCA45C147EA414FE5CA413015CA4495A A4495AA4495A121E127F5C12FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0EA0F802A53 83BF1C>III<14 78EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E13C0121E121C EA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA212015BA212035B14 38120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700EA03FEEA00F8 163E79BC1C>I107 DII II<903903E001F890390FF807FE903A1E7C1E0F80903A 1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED80019038F07F0001E015 F8147E1603000113FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A 1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC 03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I< D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB380F001C1370003CEBE0 1F123814C0D8783F14C00070903880070092C7FC91C8FC12F05BEA007EA313FE5BA31201 5BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726>114 DII<137C48B4141C26038F 80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F13 03140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F 1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C9039 1FFC07F8903907F001F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E 01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012 005B017E130116C013FE5B1503000115805BA2ED07001203495B150EA25DA25D15780001 14706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<017C167048B491 387001FC3A038F8001F8EA0707000E01C015FE001E1403001CEDF000EA3C0F0038177C15 07D8781F4A133C00701380A2D8F03F130F020049133812005B017E011F14784C137013FE 5B033F14F0000192C712E05BA2170100034A14C049137E17031880A2EF070015FE170E00 010101141E01F86D131C0000D9039F5BD9FC076D5A903A3E0F07C1E0903A1FFC03FFC090 2703F0007FC7FC372979A73C>I<903903F001F890390FFC07FE90393C1E0E0F9026780F 1C138001F0EBB83FD801E013F89039C007F07FEA0380000714E0D9000F140048151C000E 4AC7FCA2001E131FA2C75BA2143F92C8FCA35C147EA314FE4A131CA30101143C001E1538 003F491378D87F811470018314F000FF5D9039077801C039FE0F7C033A7C0E3C07802778 3C1E1EC7FC391FF80FFC3907E003F029297CA72A>I<137C48B4143826038F8013FCEA07 07000E7F001E1401001C15F8EA3C0F12381503D8781F14F000701380A2D8F03F13070200 13E012005B017E130F16C013FE5B151F1201491480A2153F000315005BA25D157EA315FE 5D00011301EBF8030000130790387C1FF8EB3FF9EB07E1EB00035DA21407000E5CEA3F80 007F495AA24A5AD8FF0090C7FC143E007C137E00705B387801F0383803E0381E0FC06CB4 C8FCEA03F8263B79A72C>II E /Fi 56 123 df 12 D14 D44 DIIIIIII<163FA25E5E5D5DA25D5D5D5DA25D92 B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14F8EB01F0EB03E0130714C0 EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E5A12FCB91280A5C8000F90 C7FCAC027FB61280A531417DC038>I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E 5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE0 3FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F 80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C0123E003F4A1380D81FC049 1300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F01FCC7FC010113C02D427B C038>I<4AB47E021F13F0027F13FC49B6FC01079038807F8090390FFC001FD93FF014C0 4948137F4948EBFFE048495A5A1400485A120FA248486D13C0EE7F80EE1E00003F92C7FC A25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039F9F01FFC9039FBC007FE90 39FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA4127FA5123FA217F07F121FA2 000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C9038E01FFC6DB55A011F5C01 0714C0010191C7FC9038003FF02D427BC038>I<121E121F13FC90B712FEA45A17FC17F8 17F017E017C0A2481680007EC8EA3F00007C157E5E00785D15014B5A00F84A5A484A5A5E 151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D143FA2147F5D14FFA25BA35B92 C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>IIII65 DIII I71 D 76 DI<923807FFC0 92B512FE0207ECFFC0021F15F091267FFE0013FC902601FFF0EB1FFF01070180010313C0 4990C76C7FD91FFC6E6C7E49486F7E49486F7E01FF8348496F7E48496F1380A248496F13 C0A24890C96C13E0A24819F04982003F19F8A3007F19FC49177FA400FF19FEAD007F19FC 6D17FFA3003F19F8A26D5E6C19F0A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B1300 6C6D4B5A6D6C4B5A6D6C4B5A6D6C4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC 6D90B65A023F15F8020715C002004AC8FC030713C047467AC454>79 DI82 D I<003FBA12E0A59026FE000FEB8003D87FE09338003FF049171F90C71607A2007E180300 7C1801A300781800A400F819F8481978A5C81700B3B3A20107B8FCA545437CC24E>II<903801FFE0011F13FE01 7F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA 00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F1380381FFE00 485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007 EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 DIIIIIII<137C48B4FC4813804813C0A24813E0 A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467C C520>II< EB7FC0B5FCA512037EB293387FFFE0A593380FE0004C5A4CC7FC167E5EED03F8ED07E04B 5A4B5A037FC8FC15FEECC1FCECC3FE14C7ECDFFF91B57E82A202F97F02E17F02C07FEC80 7F6F7E826F7E816F7F836F7F816F7F83707E163FB60003B512F8A535457DC43B>II<90277F8007FEEC0FFCB590263FFF C090387FFF8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F 801FFC0003D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7EA24A5D4A5D A34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB590383FFF8092B5 12E0028114F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02F86D7E5CA2 5CA35CB3A7B60083B512FEA5372D7CAC3E>II<90397FC00FF8B590B57E02C314E002CF14F89139DFC03FFC9139FF00 1FFE000301FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7F F8A318F017FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07FFC02CFB512 F002C314C002C091C7FCED1FF092C9FCADB67EA536407DAC3E>I<90387F807FB53881FF E0028313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007 F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E>114 D<90391FFC038090B512870003 14FF120F381FF003383FC00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC 13FE387FFFF014FF6C14C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313 E0140000F0143FA26C141F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803 FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7CAD2C>IIIIIII<00 1FB71280A49026FC001F130001E0495A5B49495A90C7485A48495B123E4A5B4A5B003C49 5BA24A90C7FC4A5A4A5AC7FC4A5A495B495BA2495B499038800780491300A2495A494813 0F49481400A2485B48495B485BA248495B4890C75A48485C15034848EB1FFEB7FCA4292C 7DAB32>I E /Fj 2 16 df<007FB812FEBAFCA26C17FE3804799847>0 D15 D E /Fk 1 14 df13 D E /Fl 48 122 df12 D<003C13F0387E01F838FF03FCA2EB83FEA2EA7F81383D80 F600011306A40003130EEB000CA248131C00061318000E1338000C1330001C13704813E0 387001C00060138017177EB326>34 D<123C127EB4FCA21380A2127F123D1201A4120313 00A25A1206120E120C121C5A5A126009177AB315>39 D<156015F0B3A4007FB812C0B912 E0A26C17C0C800F0C8FCB3A4156033327CAB3C>43 D<123C127EB4FCA21380A2127F123D 1201A412031300A25A1206120E120C121C5A5A126009177A8715>II<123C127E12FFA4127E123C08087A8715>I<1530157815F8A215F01401A215E01403 A215C01407A21580140FA215005CA2143EA2143C147CA2147814F8A25C1301A25C1303A2 5C1307A2495AA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A248 5AA25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601D4B7CB726>I< EB0FE0EB7FFCEBF83E3903E00F803907C007C0EB8003000F14E0391F0001F0A24814F8A2 003E1300007E14FCA500FE14FEB2007E14FCA56CEB01F8A36C14F0A2390F8003E03907C0 07C0A23903E00F803900F83E00EB7FFCEB0FE01F347DB126>I<13075B5B137FEA07FFB5 FC13BFEAF83F1200B3B3A2497E007FB51280A319327AB126>IIII<000C14C0 380FC00F90B5128015005C5C14F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380F C03F9038001F80EC0FC0120E000CEB07E0A2C713F01403A215F8A41218127E12FEA315F0 140712F8006014E01270EC0FC06C131F003C14806CEB7F00380F80FE3807FFF8000113E0 38003F801D347CB126>I57 D<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC 187FA34A6C7EA202707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D 7EA2010E80010FB5FCA249800118C77EA24981163FA2496E7EA3496E7EA2000182160748 7ED81FF04A7ED8FFFE49B512E0A333367DB53A>65 DII73 D76 D80 D<007FB712FEA390398007F001D87C00EC00 3E0078161E0070160EA20060160600E01607A3481603A6C71500B3AB4A7E011FB512FCA3 30337DB237>84 DI87 D<12035A120E5A12181238123012701260A212E05AA412DEB4FC1380A2127FA2 EA3F00121E09177BB315>96 DIII<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F39 01F003BF3907E001FF48487E48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA2 6C6C5B6C6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>III<151F90391FC07F809039FFF8E3C03901F07FC73907E03F033A 0FC01F83809039800F8000001F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FC EBF07C380EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880 381F0001003EEB007F4880ED1F8048140FA56C141F007C15006C143E6C5C390FC001F839 03F007E0C6B51280D91FFCC7FC22337EA126>III107 DI<2703F01FE013FF00FF 90267FF80313C0903BF1E07C0F03E0903BF3803E1C01F02807F7003F387FD803FE147049 6D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F0 1FC000FFEB7FF09038F1E0FC9038F3807C3907F7007EEA03FE497FA25BA25BB3486CEB7F 80B538C7FFFCA326217EA02B>II<3903F03F8000FFEBFFE09038F3C0F89038F7007ED807FE7F6C48EB1F804914C049 130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16C06D131F6DEB3F80160001FF13FC 9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB512C0A325307EA02B>I<3803E07C 38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487EB512 E0A31A217FA01E>114 DI<13 30A51370A313F0A21201A212031207381FFFFEB5FCA23803F000AF1403A814073801F806 A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>IIIII<3A7FFF807F F8A33A07F8001FC00003EC0F800001EC070015066C6C5BA26D131C017E1318A26D5BA2EC 8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC14FBEB01FEA26D5AA314 78A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0F C025307F9F29>I E /Fm 7 56 df<13E01201120712FF12F91201B3A7487EB512C0A212 217AA01E>49 DI<13FF000313C0380F03E038 1C00F014F8003E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2 380003E0EB00F01478147C143E143F1230127812FCA2143E48137E0060137C003813F838 1E03F0380FFFC00001130018227DA01E>I<14E01301A213031307A2130D131D13391331 136113E113C1EA01811203EA07011206120C121C12181230127012E0B6FCA2380001E0A6 EB03F0EB3FFFA218227DA11E>I<00101330381E01F0381FFFE014C01480EBFE00EA1BF0 0018C7FCA513FE381BFF80381F03C0381C01E0381800F014F8C71278A2147CA212301278 12F8A214784813F8006013F0387001E01238381E07803807FF00EA01F816227CA01E>I< EB0FC0EB7FF03801F0383803C0183807803C380F007C121E001C1338003C1300A2127C12 78EB7FC038F9FFE038FB80F038FE0038143C48131EA248131FA41278A36C131EA2001C13 3C001E13386C1370380781E03801FFC038007F0018227DA01E>I<1230123C003FB5FCA2 4813FE14FC3860001C143814704813E014C0EA0001EB0380EB07001306130E5BA25BA213 78A35BA41201A76C5A18237CA11E>I E /Fn 7 56 df<130C133C137CEA03FC12FFEAFC 7C1200B3B113FE387FFFFEA2172C7AAB23>49 DII<140EA2141E143EA2147E14FEA2EB01BE1303143E1306130E130C1318133813301360 13E013C0EA0180120313001206120E120C5A123812305A12E0B612FCA2C7EA3E00A9147F 90381FFFFCA21E2D7EAC23>I<000CEB0180380FC01F90B512005C5C14F014C0D80C7EC7 FC90C8FCA8EB1FC0EB7FF8380DE07C380F801F01001380000E130F000CEB07C0C713E0A2 140315F0A4127812FCA448EB07E012E0006014C00070130F6C14806CEB1F006C133E3807 80F83801FFE038007F801C2D7DAB23>I I<1230123C003FB512F8A215F05A15E039700001C000601480140348EB0700140E140CC7 121C5C143014705C495AA2495AA249C7FCA25B130E131EA2133EA3133C137CA413FCA913 781D2E7CAC23>I E /Fo 89 125 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C12 7FA2EAFF80A3EA7F00A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C13 7FA248133FB2007E1400007C7F003C131E00101304191C75B830>I<903907C007C0A249 6C487EA8011F131FA202C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A20200 90C7FCA9495BA2003F90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A2 01F85BA76C486C5AA229387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC4880 000780481580261FFEFD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15 F800FE14035A1507A36CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14 E0000114F86C6C7F011F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018 EC03F8127E1501B4FCA35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81F FEB512806CB612006C5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE 30>II< EA07C0EA0FF0EA1FF8A213FCA213FE120F1207EA007EA513FE13FCA2120113F81203EA07 F0120FEA1FE0127FEAFFC013801300127C12380F1D70B730>39 D<141E147F14FF5BEB03 FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F 5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7E EB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812 FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB 03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14 E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A12781847 78BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9 FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048 B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD8 7E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7 FCA2B81280A36C1600A2C76CC8FCAF143EA229297DAF30>II<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120F EA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A2 1507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA2 4A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249 C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA22547 7BBE30>I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F48 48EB3FC04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FE EC00FEAD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A2 6C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FE C7FC273A7CB830>IIIII<000FB6128048 15C05AA316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007F C049133F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716 F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C 6C14E06C6C1380D90FFCC7FC25397BB730>II<127CB712FC16FEA416FC48C7EA0F F816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5AA2 4AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830> I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF04913 1FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6CEB 1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE488026 07FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815FE 481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE06C 90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13E0 013F13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0FF0 48481307A290C7EA03F85A4815FC1501A416FEA37E7E6D130315076C7E6C6C130F6D133F D80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8A215 0716F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC90B5 5A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0A4EA 7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C 276EA630>II<16F01503ED07F8151F157FEDFFF01403 4A13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0485B 000F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F38007FFC 6D7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7FF815 1F1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003FB612 FE4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1FFF6C 13C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF806E13 C0020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801FFF0 495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE05B90 C9FC127E1278252F7BB230>III<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7F A314C1A2011F7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038FC00 1F00038149130FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C130029397DB8 30>I<007FB512F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615015E A24B5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500 167FA3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29 387EB730>I<91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48 EB801F3903FE000F484813075B48481303A2484813015B123F491300A2127F90C8FC167C 16005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C 6CEB0FF03901FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038007F C0273A7CB830>I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F 7E6F7E15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17 005E4B5A15034B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB7 30>I<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EB F800A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB7 12804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC 007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0 F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A4913 07121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D14 00ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1 FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFF E0486D4813F0B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8 C7FCB3A23B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D387FB7 30>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C15002138 79B730>I<49B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A1403 EB8007397FF01FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>I I<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA2 7E6C16802A387EB730>III<90383FFFE048B512FC000714FF4815804815C04815E0EB F80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D13 0FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E025 3A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7E A2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001 F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C81 2603F8017F9138003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A 90B65A5E93C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003 FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 D<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E484813 7F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C 14E0000114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07 F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B5128016 0000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA4 3AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I< 3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C 6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038 007FFCEC1FF02F3980B730>III<3A3FFF01FFF84801837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00 005C6D5BEB7F01EC81FCEB3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90 C8FCA4497FA2497FA2815B81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F 49800003141F49800007140FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730 >II<001FB612FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C0153FED7F 80003E1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C 130F495A5C133F495A91C8FC5B4848147C4914FE1203485A5B120F485A5B123F485A90B6 FCB7FCA46C15FC27387CB730>I<007FB5FCB61280A4150048C8FCB3B3B3A5B6FC1580A4 6C140019476DBE30>I<127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA2 12017FA26C7EA26D7EA26D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E 7EA26E7EA26E7EA26E7EA26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0 A2ED07F8A21503A2ED01F0150025477BBE30>I<007FB5FCB61280A47EC7123FB3B3B3A5 007FB5FCB6FCA46C140019477DBE30>I<1307EB1FC0EB7FF0497E000313FE000FEBFF80 003F14E0D87FFD13F039FFF07FF8EBC01FEB800F38FE0003007CEB01F00010EB00401D0E 77B730>I<007FB612F0A2B712F8A36C15F0A225077B7D30>I<1338137CEA01FE12031207 EA0FFC13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EAFFC013E013F0127FA2123FA2 EA1FE0EA07C00F1D70BE30>IIII<913801FFE04A7F5CA28080EC0007AAEB03FE9038 1FFF874913E790B6FC5A5A481303380FFC00D81FF0133F49131F485A150F4848130790C7 FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC0 6CB712E06C16F06C14F76D01C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC 010713E0011F13F8017F7F90B57E488048018113803A07FC007FC04848133FD81FE0EB1F E0150F484814F0491307127F90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01 F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806D EBFE00010713F8010013C0252A7CA830>II II<14E0EB03F8A2497EA36D5AA2 EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15 C023397AB830>III<387FFFF8B57E A47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01 FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07EB03F801FC13FE9039 F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C0107 1380322881A730>II<49B4FC010F13E0013F13F849 7F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F84913 03007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303003F15F86D13076D130F 6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13 E0010190C7FC272A7CA830>II<49B413F8010FEBC1FC013F13F14913FD48B6FC5A481381390FFC007F49131F484813 0F491307485A491303127F90C7FC15015A5AA77E7E15037FA26C6C1307150F6C6C131F6C 6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9013F13F1010F13C1903803FE0190 C7FCAD92B512F84A14FCA46E14F82E3C7DA730>II<90381FFC1E48B5129F 000714FF5A5A5A387FF007EB800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13 FC6CEBFF806C14E0000114F86C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0 A2150F7EA27F151F6DEB3F806D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026 780FFEC7FC222A79A830>III<3B3FFFC07FFF80486DB512C0B515 E0A26C16C06C496C13803B01F80003F000A26D130700005DA26D130F017E5CA2017F131F 6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE01075BA214F101035BA3903801FB F0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16 F06C496C13E0D807E0C7EA3F00A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0 A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2 011F5C90390F800F802D277FA630>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC6 48C66CC7FC137FEC80FE90383F81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8 FC147E147F5C497F81903803F7E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90 387F007E017E137F01FE6D7E48486D7E267FFF80B5FCB500C1148014E3A214C16C018014 0029277DA630>I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01FC00 03F000A2000014076D5C137E150F017F5C7F151FD91F805BA214C0010F49C7FCA214E001 07137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA214 3F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9 FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0 ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A 495A495A495A4948133E4890C7127F485A485A485A485A485A48B7FCB8FCA46C15FE2827 7DA630>I<127CA212FEB3B3B3AD127CA207476CBE30>124 D E /Fp 52 122 df12 D39 D44 DI47 D<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E4948 6D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A24817FC49157F A3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D 4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF0 6D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>I<157815FC14031407141F 14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43> II<91380FFFC091B512FC0107ECFF80011F15E09026 3FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15 E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B 5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E701380 7013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FC A25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A 6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C 17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C 15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A13 1F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7 FCAF020FB712C0A53A4F7CCE43>III<121F7F7FEB FF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F 4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FF A24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC0 6E5A395279D043>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3F E0003FFCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA212 1F7FA27F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B92 38FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC0107 81011F81491680EBFFE748018115C048D9007F14E04848011F14F048487F484813030300 14F8484880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17 F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C 01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<9138 0FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E4849 80486F7E484980824817805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37E A25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C301030283 13F89039007FFE03EC00401500A218F05EA3D801F816E0487E486C16C0487E486D491380 A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFE C7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7ACD43>I<171F4D7E4D7EA2 4D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C8083047F80167E8304FE804C7E03018116 F8830303814C7E03078116E083030F814C7E031F81168083033F8293C77E4B82157E8403 FE824B800201835D840203834B800207835D844AB87EA24A83A3DA3F80C88092C97E4A84 A2027E8202FE844A82010185A24A820103854A82010785A24A82010F855C011F717FEBFF FCB600F8020FB712E0A55B547BD366>65 DI<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92 B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC49 4848C9FC4901F8824949824949824949824949824990CA7E494883A2484983485B1B7F48 5B481A3FA24849181FA3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7F A21B0F6C6D1980A26C1A1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D 4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF8 0203903AFFE001FFF0020091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC52 5479D261>II< BC1280A5D8000701F8C7000114C0F0001F19071901851A7F1A3F1A1FA2F20FE0A21A07A3 1A03A318F81BF01A01A497C7FC1701A317031707170F177F92B6FCA59238F8007F170F17 0717031701A317001B3EA31B7CA395C8FCA21BFCA21BF8A21A01A31A031BF01A071A0FA2 1A1F1A3FF27FE0F101FF1907191F0603B5FCBCFCA21BC0A34F517CD058>I73 D<93380FFFC00303B6FC031F15E092 B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED 7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707FA24849717E 48864A83481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF8 6E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C62 6D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B 023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB 001F13E0565479D265>79 DI82 D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801 E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F82A28412 FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C 16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F15C0ED00 7F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0 A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0 486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<00 3FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F49193F90 C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A55351 7BD05E>II<1306131F5B137E5B485A5B485A485A485AA248C7FC 121E123EA2123C127C1278A312F85AA2EAF1FCEAF7FFB5128014C0A214E0A37EA37E6C13 C0A26C138000031300EA01FC132878D225>96 DII<913801FFF8021FEBFF8091B612F0010315FC 010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA248 6F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D 15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF001 0390B55A01001580023F49C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F17 07B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC01 01B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA3 7EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC0 7FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0 023F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F4849 6D7E48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CA FCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC 3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC0201 13F034387CB63D>IIII<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8 FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I<157FEDFF80020313E04A13 F0A24A13F8A76E13F0A26E13E002001380ED7F0092C7FCADED1FF891B5FCA51401EC007F B3B3B1EA0780EA1FE0487E487E486C13FF16F0A216E05C16C04A13806C4848130049485A 003F495A000FB512F06C5C0001148026001FFCC7FC256C87D329>IIIII<913801FFE0021F 13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F4849 6D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC00 7F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C49 5BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387C B643>I<903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007F FE0003D9FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A472 1380AC1A0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFF FC9126FBFE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7B B54B>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003 D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55C B3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD8 0FF81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC0 6C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC 003F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F 8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC 2C387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90 B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEB F0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>I III<007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D 6D5C6D6D495A6D4B5A6F495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6E EB8FE06EEBCFC06EEBFF806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA 01FD7F03F87F4A486C7E4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F 495A49486D7F01076F7E49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I< B600F00107B5FCA5C601F8C8EA7FE06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F 13016D5E6F13036D5E8117076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E02 3F147C6F13FCA26E6D5A16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5A A26F5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C 486C13FC5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F00003 5BC690CBFC404D7DB447>I E /Fq 91 128 df<4AB4EB0FE0021F9038E03FFC913A7F00 F8FC1ED901FC90383FF03FD907F090397FE07F80494801FF13FF4948485BD93F805C137F 0200ED7F00EF003E01FE6D91C7FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3F EBFF80A339407FBF35>11 D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C49 48133E494813FF49485A137F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE000181 82B3AC486CECFF80007FD9FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB 01F8903807F001EB0FE0EB1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486C ECFF80007FD9FC3F13FEA32F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F 80F8903C01F80078FE003CD907F0D93FF8130E49484948131F49484948EB7F8049484849 13FF137F02005CA201FE92C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC 197F193FB3AC486C4A6CEB7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<133E133F13 7F13FFA2EA01FEEA03FCEA07F813F0EA0FE0EA1FC01380EA3E005A5A1270122010116EBE 2D>19 D<1470EB03F0131FEBFF803803FE00EA1FF0EAFF8000FCC7FC12E014097DA219> 32 D<121EEA7F80EAFFC0A9EA7F80ACEA3F00AC121EAB120CC7FCA8121EEA7F80A2EAFF C0A4EA7F80A2EA1E000A4179C019>I<001E130F397F803FC000FF137F01C013E0A201E0 13F0A3007F133F391E600F3000001300A401E01370491360A3000114E04913C000031301 01001380481303000EEB070048130E0018130C0038131C003013181C1C7DBE2D>I<013F 4C7ED9FFC04B7E2601E0E015072607C070150F48486C4B5A023E4BC7FC48486C5D48D90F C0EB01FE003ED90EF0EB07FCDA0F3F133E007E903A070FFFF8F8007C0200EBC1F0EE0003 00FC6D6C495A604D5A171F95C8FC173E177E177C5F16015F007C4948485A1607007E5E00 3E49495A020E131F003F93C9FC6C49133E260F803C137E0238137C6C6C485B3901E0E001 6CB448485AD93F0049133F90C74848EBFFC0030F903801E0E093398007C0704B4848487E 4B153C033E90381F001C4B497F03FC133E4B150F4A48017E7F0203147C5D4A4801FCEB03 80140F5D4AC7FC5C143E5C14FC5C495A13034948027CEB07005C4948147E011F033E5B91 C8140E013E153F017E6F5B017C92380F803C4917380001706C5A49923801E0E0496FB45A 6C48043FC7FC41497BC34C>37 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413 E013C0A312011380120313005A120E5A1218123812300B1C79BE19>39 D<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2485A A2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F 120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00E014 701430145A77C323>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA2 7FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480 A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A 145A7BC323>II<1506150FB3A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A915063C3C 7BB447>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A31201138012 0313005A120E5A1218123812300B1C798919>II<121EEA7F80A2 EAFFC0A4EA7F80A2EA1E000A0A798919>III< EB01C013031307131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8A31D3D78 BC2D>III<150E151E 153EA2157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB03 80EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8 EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D 15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E49 137E497F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090C7 121F12FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F8 0FE0C6B55A013F90C7FCEB07F8243F7CBC2D>II<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED07 8016005D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C14 7814F8A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>I< EB03FC90381FFF8090387C07E09038F001F83901E0007C48487F48487F48C7FCED0F8012 1E16C0003E1407A4123FA26DEB0F807F6C6C131F6D140001FC133E6C6C5B9038FF80786C 6D5A6CEBF3E06CEBFF806C91C7FC133F6D13C06D7F013F13F801787F48486C7E3903E01F FF48486C1380260F800313C048487E489038007FE0003E143F007E141F007CEC0FF01507 481403A31501A46C15E0007C1403A2007E15C06C14076CEC0F806DEB1F006C6C133ED807 F05B3901FC03F86CB512E0011F1380D903FCC7FC243F7CBC2D>II<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA 7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA 1E00C7FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A120612 0E120C121C5A1230A20A3979A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCA8 120C121EAB123FACEA7F80ACEAFFC0A9EA7F80EA1E000A4179AC19>I<007FB912E0BA12 F0A26C18E0CDFCAE007FB912E0BA12F0A26C18E03C167BA147>II<15074B7EA34B7EA34B7E A34B7EA34B7E15E7A2913801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA3 4A6D7EA34A6D7EA34A6D7EA349486D7E91B6FCA249819138800001A249C87EA24982010E 157FA2011E82011C153FA2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB5 00F0010FB512F8A33D417DC044>65 DIIIIIIII<011FB512FCA3D9 000713006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C00 3C495A6C495A6C495A2603E07EC7FC3800FFF8EB3FC026407CBD2F>IIIIIIIIII<003FB91280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E170712 7C00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42 >IIII<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48 EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13 036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E5B6F 5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC0700 4A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749 C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>II<003FB712F8A391C7EA1FF013F801E0 EC3FE00180EC7FC090C8FC003EEDFF80A2003C4A1300007C4A5A12784B5A4B5AA200704A 5AA24B5A4B5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8 FCA2495A4948141CA2495A495AA2495A495A173C495AA24890C8FC485A1778485A484815 F8A24848140116034848140F4848143FED01FFB8FCA32E3E7BBD38>II93 D<1318133C137E13FF3801E7803803C3C0380781E0380F00F0001E137848133C48 131E48130F00601306180D76BD2D>I96 DII< 49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B121FA248 48EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C1307 6C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA828 >IIII<167C903903F801FF903A1FFF078F8090397E0FDE1F9038 F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE00 075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA2 7F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E14004815 7E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017F C7FC90383FFFFC010313C0293D7EA82D>III<1478EB01FEA2EB 03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF807E14 FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>III<2701F801FE14FF00FF902707FFC0 0313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D487F 000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F8 7FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803F0 00079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8 F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB0F 804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C 15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D800 7EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF90381F FF8091387C0FE09039FDE003F03A03FFC001FC6C496C7E91C7127F49EC3F805BEE1FC017 E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001F8 9039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733> I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848EB0FFC15 0748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C130F 6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E92B512F8 A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB14 01EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC0603901FF F8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E6D1300EA 7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0FF800 E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F0038E0FF FC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001FB512C0B6 FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700EB07FEEB 01F81B397EB723>II IIII<001FB61280A2 EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D4AC7FCC6 485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B484813071207491400 485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>II<001C130E007FEB3F8039FF807FC0A5397F003F80001CEB0E001A0977BD2D>127 D E /Fr 33 119 df<131F1480133F137FA2EBFF00485A485A5B485A485A138048C7FC12 3E123C5A12E0124011126CC431>19 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200 A413E013C0A312011380120313005A1206120E5A5A5A12600B1D78C41B>39 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A 1206120E5A5A5A12600B1D78891B>44 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A 78891B>46 D<143014F013011303131F13FFB5FC13E713071200B3B3B0497E497E007FB6 FCA3204278C131>49 D<49B4FC010F13E0013F13FC9038FE01FE3A01F0007F80D803C0EB 3FC048C7EA1FE0120EED0FF0EA0FE0486C14F8A215077F5BA26C48130FEA03C0C813F0A3 ED1FE0A2ED3FC01680ED7F0015FE4A5AEC03F0EC1FC0D90FFFC7FC15F090380001FCEC00 7FED3F80ED1FC0ED0FE016F0ED07F816FC150316FEA2150116FFA3121EEA7F80487EA416 FE491303A2007EC713FC00701407003015F80038140F6C15F06CEC1FE06C6CEB3FC0D803 E0EB7F803A01FE01FE0039007FFFF8010F13E0010190C7FC28447CC131>51 D<000615C0D807C0130701FCEB7F8090B612005D5D5D15E0158026063FFCC7FC90C9FCAE 14FF010713C090381F01F090383800FC01F0137ED807C07F49EB1F8016C090C7120F0006 15E0C8EA07F0A316F81503A216FCA5123E127F487EA416F890C712075A006015F0A20070 140F003015E00038EC1FC07E001EEC3F806CEC7F006C6C13FE6C6C485A3901F807F03900 7FFFE0011F90C7FCEB07F826447BC131>53 D<14FF010713E0011F13F890387F80FC9038 FC007E48487F4848EB1F804848EB0FC0000FEC07E0485AED03F0485A16F8007F140190C7 13FCA25AA216FE1500A516FFA46C5CA36C7E5D121F7F000F5C6C6C1306150E6C6C5B6C6C 5BD8007C5B90383F01E090390FFF80FE903801FE0090C8FC150116FCA4ED03F8A216F0D8 0F801307486C14E0486C130F16C0ED1F80A249EB3F0049137E001EC75A001C495A000F49 5A3907E01FE06CB51280C649C7FCEB1FF028447CC131>57 D64 D<16C04B7EA34B7EA34B7EA34B7EA3ED19FEA3ED30FFA203707FED607FA2 03E07FEDC03FA2020180ED801FA2DA03007F160FA20206801607A24A6D7EA34A6D7EA34A 6D7EA20270810260147FA202E08191B7FCA249820280C7121FA249C87F170FA201068217 07A2496F7EA3496F7EA3496F7EA201788313F8486C83D80FFF03037FB500E0027FEBFFC0 A342477DC649>I67 DII73 D<010FB512FEA3D9000313806E130080B3B3 AB123F487E487EA44A5A13801300006C495A00705C6C13076C5C6C495A6CEB1F802603E0 7FC7FC3800FFFCEB1FE027467BC332>I77 D 85 D97 D99 D<167FED3FFFA315018182B3EC7F80903803 FFF090380FC07C90383F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA2 127FA290C8FC5AAB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C 010E13C0013F011C13FE90380FC0F8903803FFE09026007F0013002F467DC436>III105 D109 D<3901FC01FE00FF903807 FFC091381E07F091383801F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA2 5BA35BB3A8486CECFF80B5D8F83F13FEA32F2C7DAB36>II<3901FC03FC00FF90380FFF8091383C07E091387001F83A07FDE000FE00 010180137F01FFEC3F8091C7EA1FC04915E049140F17F0160717F8160317FCA3EE01FEAB EE03FCA3EE07F8A217F0160F6D15E0EE1FC06D143F17806EEB7E00D9FDC05B9039FCF003 F891383C0FE091381FFF80DA03FCC7FC91C9FCAE487EB512F8A32F3F7DAB36>I<91387F 8003903903FFE00790380FE07890393F801C0F90387E000E496D5AD803F8EB039F0007EC 01BF4914FF48487F121F5B003F81A2485AA348C8FCAB6C7EA3123F7F121F6D5C120F6D5B 12076C6C5B6C6C497E6C6C130E013F131C90380FC0F8903803FFE09038007F0091C7FCAE EEFF80033F13FEA32F3F7DAB33>I<3903F803F000FFEB1FFCEC3C3EEC707F0007EBE0FF 3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA3202C7DAB26> I<90383FE0183901FFFC383907E01F78390F0003F8001E1301481300007C1478127800F8 1438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF6C14C06C14E0C614F0 011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C143C6C147C15786C14 F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7DAC26>I<1306A5130E A4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3A4150CAA017E131C 017F1318A26D133890381F8030ECC070903807E0E0903801FFC09038007F001E3E7EBC26 >III E /Fs 6 118 df80 D<003FBB12C0A449C79038F0000701F06E48130001C0 183F48C8EE0FE0007E1907007C1903A200781901A400701900A500F01AF0481A70A6C917 00B3B3AC4C7E030313FC027FB712E0A44C517CD055>84 D97 D108 D<01FFEB1F80B5EB7FF0913801FFF8913803E1FC91 380783FE0003EB0F07C6131EEB7F1C1438143091387003FC91386000F0160014E05CA45C B3AA8048487EB612F0A427347DB32E>114 D117 D E /Ft 18 118 df46 D[80 139 121 263 95 51 D[86 138 124 265 95 I[<01301818013C1878013FEF01F802E0160F02FCEE7FF0DAFFC09138 07FFE003FF49B55A93B75A97C7FC6119F86119C0614EC8FC18F818C0D93E3F92C9FC0203 14F09126000FFECAFC92CCFCB3ADEE3FFC0303B512C0031F14F0037F14FC913A01FFE007 FFDA07FEC713C0DA0FF06E7EDA1FC0EC1FF8027FC86C7E02FC6F7ED93FF86F7E4A834A6F 7F4A814A707E91CA7F013E717EA2013C8490CB121F86190F86A21B8085A21BC0A31BE085 A51BF0A7EA03C0EA0FF0EA3FFC487EA2B5FCA31BE0A261A25B4919C05BEA7FE00078CB48 1380127CA2003C1A00003E60626C183F627F000F4E5A6D4D5A6C7E6C6C4C5B6D4C5B6C6C 606C6C4C90C7FC017F5E6EED3FFED93FE0ED7FF86D6C4B5AD90FFC02035B902603FF8001 1F5B6D01F890B5C8FC6D6CB65A6E15F8020F15E0020392C9FCDA007F13F803071380>76 139 119 263 95 I[113 141 117 268 135 66 D[<96261FFFC0161C0603B512FC063FDAFFC0153C4DB712F0050F 04FC157C053F04FF15FC94B526FE000713C0040302C09026007FF01301040F01FCC8EA0F F8043F01F0DB03FC13034C0180ED00FF4B4848CA387F80074B01F8EF1FC0030F4994380F E00F4B01C0EF07F04B49943801F81F4B48CC12FC4B48F17E3F4A49193F4A491A7F4A49F1 1FFF4A49854A49854A90CD7E4A5A4A4886495B8A49491B7F495B1F3F495B49491B1FA249 90CF120FA2495A01FF1D075C5A1F035C5A4A1C015AA348491C00A3485BA2207C5AA25CA2 9DC8FC5AA591D4FCB5FCB37E80A499B912E07EA280A36C98C7EDC0000C0791C7FC6E755B 6C775B8AA26C7FA36C7FA27E80A26C7FA26D7E7F817F817F6D7F817F6D7F816D7F147F6E 6C626E7F6E7F6E6D616E7F6E01FC616E7F6F6C616F6DF01F9F6F01E0183F6F6DF07F0F03 0301FC943801FE076F01FFEF03FC6F6C01C093380FF8037001F893383FF001040F01FF93 38FFC000040302F0020F5B0400DAFF80D9FFFEC7127C053F91B600F8143C050F05E0141C 050194C8120CDD003F03F892C8FC06031580DE001F01E0CCFC>131 147 118 271 150 71 D[108 141 117 268 130 80 D[120 144 117 268 143 85 D[<1B7E96380FFFFE0603B5FCA6F00003F1007F1A3F1A1FA21A0F B3B3A3EE0FFE4BB512E0030F14FC033F14FF9226FFFC0013C0020301E0EB0FE0020F90C7 EA03F8DA1FFCEC00FC4A48153EDAFFE0151F4949ED0F8F4949ED07CF4990C9EA03EF4948 EE01FF494882133F4A177F4948173F13FF4A171F5A4849170FA2485BA25A91CBFC5AA348 5AA4127FA25BA312FFAF127FA37FA3123FA3121F7FA27EA26C7FA21A1F6C7F6C193F806C 197F80017F18FF6D6C5E6D6C17EF6D6C1603963807CFFF6D6CEE0F8F6D6DDB1F0F7F6D6D 037E809026007FF003FC14F86E6CDA01F8ECFFF8DA1FFEEC07E0912607FF80EB3FC00201 9039F003FF006E6CB512FC031F14F003030280EDFE009226003FF8C701C0C7FC>93 145 122 270 106 100 DI103 D[37 137 121 264 52 105 D[39 143 121 270 52 108 D<023F913801FFE00003B5021F13FEB6027FEBFFC04CB612F0932607FC0113FC933A0FC0 003FFE4CC7EA0FFF047E02037FC603F86E7F011F4948826D4A806D49486F7E4B5A6D49C9 6C7EA2151E031C707E153C153815780370707E15F05DA45DA45DB3B3B0496D4C7E496D4C 7F013F01F893B512E0B700FE0103B712F8A65D5B79DA6A>110 DI<023FEC0FF00003B5EC7FFEB649B51280040714E093391FF00FF093 383F803F93397E007FF85EC6DA01F0EBFFFC011F5C6D13036D495A5E6D49C7FCF07FF815 1EF01FE04BEC078095C7FC5DA2157015F0A25DA45DA65DB3B3AB815B497F013F13FCB812 C0A63E5B7ADA49>114 DI117 D E end TeXDict begin 1 0 bop 1393 806 a Ft(BinProlog)61 b(3.45)1541 1055 y(User)i(Guide)1721 2489 y Fs(P)m(aul)37 b(T)-10 b(arau)1399 2721 y Fr(Departemen)m(t)33 b(d'Informatique)1523 2837 y(Univ)m(ersit)m(\023)-46 b(e)32 b(de)i(Moncton)1391 2953 y(Moncton,)g(Canada,)e(E1A)h(3E9,)1492 3070 y(tarau@info.umoncton.ca)1739 3388 y(June)g(5,)g(1995)1985 5493 y Fq(1)p eop 2 1 bop 354 375 a Fp(1)135 b(Installation)354 578 y Fo(EITHER:)498 804 y(Edit)46 b(`Makefile'.)f(Change)h(BINDIR)g(and)h(comment)f(out)h (ARCH_AND_OS,)498 917 y(for)f(example:)498 1142 y(BINDIR)g(=)h (/usr/local/bin)498 1255 y(ARCH_AND_OS)d(=)k(sparc.sunos)498 1481 y(then)e(TYPE:)641 1707 y(make)g(install)354 1933 y(OR:)450 2159 y(Copy)g(or)i(symbolically)c(link)j(bin/bp.)90 b(to)48 b(`bp')450 2271 y(somewhere)d(in)i(your)g(path,)f(then)h(type)f (`bp'.)495 2587 y Fq(Normally)22 b(the)h(appropriate)e(`w)m(am')i(\(a)h (C-i\014ed)d(self)h(con)m(tained)g(executable\))i(or)e(\(for)h(some)354 2700 y(old)29 b(arc)m(hitectures\))i(t)m(yping)f(`ru)f(w)m(am.bp')h (\(p)s(ossibly)d(a)j(small)f(`bp')g(shell-script\))f(are)i(all)f(y)m (ou)354 2813 y(need)40 b(to)i(ha)m(v)m(e)f(BinProlog)f(3.45)i(running.) 67 b(F)-8 b(or)42 b(DOS/Windo)m(ws)d(386/486)44 b(PCs)39 b(y)m(ou)i(will)354 2926 y(ha)m(v)m(e)34 b(to)f(edit)g Fo(bp.bat)d Fq(with)i(y)m(our)g(path)h(information)e(and)g(then)i(t)m (yp)s(e)g Fo(bp)p Fq(.)46 b(Something)32 b(lik)m(e)354 3039 y(`go32)h(ru.386)e(w)m(am.bp')f(directly)59 b(in)29 b(the)i(distribution)c(directory)i(should)g(also)h(w)m(ork.)495 3151 y(T)-8 b(o)31 b(start)g(BinProlog)f(use)354 3354 y Fo($)48 b(bp)f()i()495 3557 y Fq(or)31 b(simply)354 3759 y Fo($)48 b(bp)495 3962 y Fq(Sizes)29 b(of)h(the)g(blac)m(kb)s(oard,)f(heap,)h(stac)m(k,)i (trail)c(and)h(co)s(de)h(areas)g(can)g(b)s(e)f(passed)h(as)f(com-)354 4075 y(mand)h(line)f(parameters)h(etc,)i(in)d(Kb)m(ytes:)354 4277 y(usage:)50 b([-h)34 b(heap])g([-s)h(stac)m(k])h([-t)f(trail])e ([-c)j(co)s(de])e([-b)h(bb)s(oard])e([-a)i(2^)-45 b(atoms])36 b([-d)e(2)3287 4253 y(^)3284 4277 y(hash)m(table)354 4390 y(en)m(tries])d([-i)f(size)g(of)h(IO-bu\013er])e([-q)i(quietness]) f(w)m(am\014le)f(\(default:)41 b(w)m(am.bp\).)354 4675 y Fp(2)135 b(Obtaining)46 b(BinProlog)354 4878 y Fq(The)30 b(ORIGINAL)g(DISTRIBUTION)g(SITE)f(for)h(BinProlog)2538 4845 y Fn(1)2607 4878 y Fq(is:)498 5080 y Fo(ftp)46 b (clement.info.umoncton.ca)c(\(139.103.16.2\))p 354 5159 1323 4 v 458 5212 a Fm(1)493 5244 y Fl(BinProlog)27 b(Cop)n(yrigh)n(t) 1237 5242 y(c)1216 5244 y Fk(\015)e Fl(P)n(aul)i(T)-6 b(arau)26 b(1992-94)h(All)f(righ)n(ts)g(reserv)n(ed)1985 5493 y Fq(2)p eop 3 2 bop 354 375 a Fq(in)29 b(the)i(directory:)450 587 y Fo(/pub/BinProlog.)354 800 y Fq(The)c(ftp)g(serv)m(er)h(clemen)m (t.info.umoncton.ca)h(is)d(a)i(Sparcstation)f(ELC)g(with)f(SUNOS)h (4.1.1\).)354 913 y(Please)k(send)e(commen)m(ts)j(and)d(bug)h(rep)s (orts)g(to)h Fo(binprolog@info.umoncton.)o(ca.)354 1199 y Fp(3)135 b(In)l(tro)t(duction)45 b(to)g(BinProlog)354 1402 y Fq(BinProlog)25 b(has)h(b)s(een)f(dev)m(elopp)s(ed)g(b)m(y)g(P)m (aul)g(T)-8 b(arau)26 b(mostly)g(at)g(the)g(Univ)m(ersit)m(y)f(of)h (Moncton,)354 1515 y(Canada,)46 b(and)c(is)f(based)h(on)g(his)f(BinW) -10 b(AM)42 b(abstract)h(mac)m(hine,)i(a)e(sp)s(ecialization)e(of)h (the)354 1628 y(W)-10 b(AM)31 b(for)g(the)f(e\016cien)m(t)h(execution)g (of)f(binary)f(logic)h(programs.)495 1741 y(BinProlog)36 b(is)e(a)j(fast)f(and)f(small)g(Prolog)h(compiler,)g(based)f(on)h(the)g (transformation)f(of)354 1854 y(Prolog)d(to)g(binary)d(clauses.)44 b(The)31 b(compilation)e(tec)m(hnique)i(is)g(similar)e(to)j(the)f(Con)m (tin)m(uation)354 1967 y(P)m(assing)f(St)m(yle)h(transformation)e(used) h(in)f(some)i(ML)f(implemen)m(tations.)495 2080 y(Although)e(it)g (\(used)g(to\))h(incorp)s(orate)f(some)h(last)f(min)m(ute)g(researc)m (h)h(exp)s(erimen)m(ts,)f(whic)m(h)354 2193 y(migh)m(t)42 b(lo)s(ok)f(adv)m(en)m(turous)h(at)g(the)g(\014rst)f(sigh)m(t,)j (BinProlog)d(is)g(a)h(fairly)e(robust)g(and)h(com-)354 2306 y(plete)26 b(Prolog)f(implemen)m(tation)f(featuring)h(b)s(oth)g (C-em)m(ulated)h(execution)f(and)g(generation)h(of)354 2418 y(standalone)k(applications)f(b)m(y)h(compilation)f(to)i(C.)f (Some)h(of)f(its)g(features)h(are:)491 2631 y Fj(\017)46 b Fq(source-lev)m(el)30 b(transformation)g(based)g(stateless)h(mo)s (dule)e(system)491 2819 y Fj(\017)46 b Fq(dynamic)29 b(co)s(de,)491 3006 y Fj(\017)46 b Fq(in)m(tuitionistic)27 b(and)j(linear)e(implication,)491 3194 y Fj(\017)46 b Fq(e\016cien)m(t)30 b(high-order)f(programming)g(builtins,)491 3381 y Fj(\017)46 b Fq(logical)29 b(global)h(v)-5 b(ariables,)491 3569 y Fj(\017)46 b Fq(bac)m(ktrac)m(k)-5 b(able)32 b(destructiv)m(e)e (assignmen)m(t,)491 3757 y Fj(\017)46 b Fq(circular)28 b(term)j(uni\014cation,)491 3944 y Fj(\017)46 b Fq(extended)26 b(DCGs)g(\(no)m(w)h(built)d(in)h(the)i(engine)f(as)g(`Hidden)f(Accum)m (ulator)i(grammars'\),)491 4132 y Fj(\017)46 b Fq(con)m(tin)m(uation)30 b(manipulation)d(primitiv)m(es,)491 4320 y Fj(\017)46 b Fq(a)30 b(garbage-collected)i(hashing)d(based)h(global)f(dictionnary) f(for)i(constan)m(t-time)i(sparse)582 4433 y(arra)m(ys)e(and)g(graphs,) 491 4620 y Fj(\017)46 b Fq(C-compatible)29 b(\015oating)h(p)s(oin)m(t)g (op)s(erations,)491 4808 y Fj(\017)46 b Fq(a)30 b(C-in)m(terface)h (etc.)495 5020 y(New)g(features)g(in)e(added)g(in)g(v)m(ersion)h(3.30:) 491 5233 y Fj(\017)46 b Fq(source-lev)m(el)30 b(mo)s(dules)1985 5493 y(3)p eop 4 3 bop 491 375 a Fj(\017)46 b Fq(faster)30 b(compilation)f(to)i(C)f (and)g(faster)h(resulting)d(C-co)s(de)491 563 y Fj(\017)46 b Fq(v)m(ery)30 b(small)f(\(dynamically)g(link)m(ed\))g(standalone)h (executables)h(\(5K\))g(for)f(Solaris)f(2.x)491 750 y Fj(\017)46 b Fq(impro)m(v)m(ed)34 b(\(\014leev)m(en)m(t)h(based\))g (Tcl/Tk)f(in)m(terface)h(no)m(w)f(running)e(under)h(tcl7.4b2)j(and)582 863 y(tk4.0b2)491 1051 y Fj(\017)46 b Fq(help/1)29 b(detecting)i (near-matc)m(hing)g(predicate)f(de\014nitions)491 1238 y Fj(\017)46 b Fq(help)29 b(w)m(arnings)g(for)h(singleton)f(v)-5 b(ariables)491 1426 y Fj(\017)46 b Fq(sp)m(y/1)31 b(for)f(debugging)f (compiled)g(co)s(de)495 1638 y(New)i(features)g(in)e(added)g(in)g(v)m (ersion)h(3.45:)491 1851 y Fj(\017)46 b Fq(abilit)m(y)28 b(to)k(start)e(m)m(ultiple)f(engines)g(from)h(Prolog)h(or)f(C)491 2039 y Fj(\017)46 b Fq(impro)m(v)m(ed)29 b(C-in)m(terface)i(no)m(w)g (mo)m(v)m(ed)g(to)g(its)f(o)m(wn)g(directory)g Fo(c)p 2786 2039 29 4 v 34 w(inter)491 2226 y Fj(\017)46 b Fq(one)30 b(\014le)g(32)h(bit)e(DOS)h(and)g(Windo)m(ws)g(3.1)h(executables)g (\(see)g(directory)f Fo(pc)p Fq(\))495 2439 y(The)g Fo(bp)g Fq(command)g(starts)h(the)g(BinProlog)e(toplev)m(el.)495 2552 y(Prolog)i(sources)f(for)g(the)h(compiler)e(and)h(builtins)c(are) 31 b(in)e(directory)h Fo(src)p Fq(.)495 2665 y(The)35 b(directories)g Fo(pl2c)47 b(and)g(dynpl2c)81 b Fq(con)m(tain)36 b(v)-5 b(arious)34 b(pro)5 b(ject)36 b(\(*.pro\))h(\014les)d(and)h(a) 354 2778 y(mak)m(e\014le)c(for)f(generating)h(a)f(standalone)h (applications)d(through)i(compilation)f(to)i(C.)495 2890 y(The)j(directory)g Fo(TCL)f Fq(con)m(tains)h(a)h(bidirectional)c(pip)s (e)h(based)i(BinProlog)f(to)i(Tcl/Tk)e(in-)354 3003 y(terface.)495 3116 y(The)25 b(directory)f Fo(cparser)e Fq(con)m(tains)j(Ko)s(en)f(De) i(Bossc)m(here's)g(ISO)d(Prolog)i(parser)f(\(written)354 3229 y(in)29 b(C\))i(and)e(BinProlog)h(standalones)g(based)g(on)g(the)h (parser)f(\(cbp.*\).)495 3342 y(The)47 b(directory)g Fo(multi)f Fq(con)m(tains)i(Ko)s(en)f(De)h(Bossc)m(here's)h(a)f(blac)m (kb)s(oard)e(based)h(dis-)354 3455 y(tributed)28 b(programming)h (extension)g(to)i(BinProlog)e(and)g(BinProlog)g(executables)h(whic)m(h) e(in-)354 3568 y(tegrate)33 b(them)d(\(m)m(bp.*\).)354 3811 y Fi(3.1)113 b(Binarization)354 3983 y Fq(BinProlog)37 b(is)f(a)i(small,)g(program-transformation)f(based)g(compiler.)61 b(Ev)m(erything)36 b(is)h(con-)354 4096 y(v)m(erted)31 b(to)g(Con)m(tin)m(uation)f(P)m(assing)g(Binary)g(Clauses:)354 4308 y(A)h(rule)e(lik)m(e)450 4521 y Fo (a\(X\):-b\(X\),c\(X,Y\),d\(Y\).)354 4733 y Fq(b)s(ecomes)450 4946 y Fo(a\(X,Cont\):-b\(X,c\(X,Y,d\()o(Y,Co)o(nt\)\))o(\).)354 5159 y Fq(A)i(fact)g(lik)m(e)1985 5493 y(4)p eop 5 4 bop 450 375 a Fo(a\(13\).)354 587 y Fq(b)s(ecomes)450 800 y Fo(a\(13,Cont\):-true\(Cont\).)354 1012 y Fq(A)31 b(predicate)f(using)f(meta)m(v)-5 b(ariables)30 b(lik)m(e)450 1225 y Fo(p\(X,Y\):-X,Y.)354 1438 y Fq(b)s(ecomes)450 1650 y Fo(p\(X,Y,Cont\);-call\(X,cal)o(l\(Y,)o(Cont)o(\)\)\))o(.)354 1863 y Fq(with)f(true/1)i(and)f(call/2)h(e\016cien)m(t)g(builtins)26 b(in)k(BinProlog.)495 1976 y(Y)-8 b(ou)31 b(can)f(no)m(w)g(try)g(out)g (in)f(BinProlog)g(3.45)j(y)m(our)e(o)m(wn)g(binary)e(programs)i(b)m(y)g (using)e Fo(::-)354 2088 y Fq(instead)36 b(of)g Fo(:-)f Fq(so)i(that)g(the)f(prepro)s(cessor)f(will)f(not)i(touc)m(h)h(them) 2730 2055 y Fn(2)2769 2088 y Fq(.)58 b(Otherwise,)37 b(from)e(the)354 2201 y(outside,)30 b(BinProlog)g(lo)s(oks)g(lik)m(e)f (an)m(y)i(other)g(Prolog.)495 2314 y(Binarization)23 b(allo)m(ws)g(a)h(signi\014can)m(t)f(simpli\014cation)e(of)j(the)g (Prolog)g(engine,)g(whic)m(h)f(can)h(b)s(e)354 2427 y(seen)j(as)g(sp)s (ecialization)e(of)i(the)g(W)-10 b(AM)27 b(for)g(the)f(execution)h(of)g (Con)m(tin)m(uation)f(P)m(assing)g(Binary)354 2540 y(Programs.)495 2653 y(As)33 b(a)g(consequence,)i(a)e(v)m(ery)g(small)e(em)m(ulator)i (\(ab)s(out)g(60K)g(on)g(Solaris\))e(that)j(often)f(\014ts)354 2766 y(completely)21 b(in)g(the)g(cac)m(he)i(of)f(the)f(pro)s(cessor,)i (a)f(more)g(e\016cien)m(t)f(new)g(data)h(represen)m(tation)g(and)354 2879 y(some)38 b(lo)m(w-lev)m(el)f(optimizations)e(mak)m(e)j(BinProlog) e(probably)g(the)h(fastest)h(freely)e(a)m(v)-5 b(ailable)354 2992 y(C-em)m(ulated)31 b(Prolog)f(at)h(this)e(time)i(\(812)h(KLIPS)d (on)h(a)h(Sparcstation)f(20-41\).)495 3105 y(This)35 b(means)h(3-5)h(times)e(faster)i(than)e(C-Prolog,)j(2-3)f(times)f (faster)g(than)g(SWI-Prolog,)354 3218 y(1.5-2)d(times)c(faster)i(than)f (\(X\)SB-Prolog)i(and)e(close)g(to)h(C-em)m(ulated)g(Sicstus)e(2.1.)354 3461 y Fi(3.2)113 b(Mac)m(hines)37 b(supp)s(orted)354 3633 y Fq(This)29 b(distribution)e(con)m(tains)k(the)g(Prolog)g(source) g(of)g(the)g(compiler)f(and)g(executable)h(em)m(ula-)354 3746 y(tors)g(for:)450 3958 y Fo(-)47 b(Sparc)g(-)g(SunOS)f(4.x,)h (Solaris)f(2.x;)450 4071 y(-)h(DEC)g(Alpha)g(-)g(64)g(bit)450 4184 y(-)g(68k)g(NeXT)g(-)g(Mach;)g(SUN3)f(-)i(SunOS)e(4.x)450 4297 y(-)h(MIPS)g(-)g(DEC)g(and)g(SGI;)450 4410 y(-)g(IBM)g(R6000;)450 4523 y(-)g(386-486-Pentium)d(\(MsDOS+Windows)g(-)j(with)g(32bits)f (DOS-extender)545 4636 y(go32)h(ver.)g(1.10,)f(Linux,)g(FreeBSD\).)p 354 4717 1323 4 v 458 4771 a Fm(2)493 4803 y Fl(T)-6 b(ak)n(e)21 b(care)h(if)g(y)n(ou)f(use)g(y)n(our)g(o)n(wn)h(binary)f (clauses)h(to)g(k)n(eep)f(alw)n(a)n(ys)h(the)f(con)n(tin)n(uation)g(as) h(a)g(last)g(argumen)n(t)354 4894 y(of)27 b(the)e(last)h(em)n(b)r (edded)d(con)n(tin)n(uation)j(`predicate'.)35 b(Lo)r(ok)26 b(at)g(the)f(asm/0)h(tracer)g(ho)n(w)f(BinProlog)j(itself)f(do)r(es)354 4985 y(this.)1985 5493 y Fq(5)p eop 6 5 bop 354 375 a Fq(As)28 b(the)h(implemen)m(tation)d(mak)m(es)j(no)f (assumption)f(ab)s(out)h(mac)m(hine)g(w)m(ord)f(size)h(it)g(is)f(lik)m (ely)g(to)354 488 y(compile)e(ev)m(en)h(on)g(v)m(ery)f(strange)i(mac)m (hines)e(that)h(ha)m(v)m(e)h(a)f(C-compiler.)37 b(BinProlog's)25 b(in)m(tegers)354 601 y(are)39 b(inherited)e(from)h(the)g(nativ)m(e)h (C-system.)66 b(F)-8 b(or)39 b(example)f(on)h(DEC)f(ALPHA)h(mac)m (hines)354 714 y(BinProlog)c(has)g(64)24 b Fj(\000)f Fq(3)34 b(=)e(61)k(bit)f(in)m(tegers.)55 b(On)34 b(32-bit)i(systems)f (it)f(has)h(32)25 b Fj(\000)e Fq(2)33 b(=)g(30)j(bit)354 827 y(in)m(tegers.)46 b(Floating)32 b(p)s(oin)m(t)f(is)g(double)g(\(64) i(bits\))e(and)g(it)h(is)f(guaran)m(teed)i(that)g(computations)354 939 y(in)g(Prolog)h(will)e(alw)m(a)m(ys)i(giv)m(e)h(the)f(same)h (results)d(as)j(in)e(the)h(underlying)d(C.)j(As)g(a)g(matter)h(of)354 1052 y(fact)27 b(BinProlog)d(do)s(es)i(not)f(really)g(kno)m(w)g(that)h (it)f(has)h(\015oats)g(but)e(ho)m(w)i(this)e(happ)s(ens)g(is)g(rather) 354 1165 y(long)30 b(to)h(explain)e(here.)354 1452 y Fp(4)135 b(Using)46 b(BinProlog)354 1655 y Fq(BinProlog)23 b(uses)g(R.A.)h(O'Keefe's)g(public)c(domain)j(tok)m(eniser)g(and)g (parser)g(and)f(write)h(utilities)354 1768 y(\(see)42 b(the)e(\014les)f(read.pl,)j(write.pl\),)g(DCGs)e(and)g(a)h (transformer)e(to)j(binary)c(programs.)70 b(It)354 1880 y(compiles)30 b(itself)f(in)g(less)g(than)i(1)f(min)m(ute)g(on)g(a)h (Sparcstation)f(10-40.)495 1993 y(The)d(system)f(has)h(v)m(ery)g(fast)g (\(heap-based\))g Fo(copy)p 2237 1993 29 4 v 33 w(term/2)p Fq(,)f Fo(findall/3)e Fq(and)i Fo(findall/4)354 2106 y Fq(predicates,)k(\015oating)g(p)s(oin)m(t,)g(global)f(logical)g(v)-5 b(ariables,)29 b(but)h(still)e(lac)m(ks)i(full)e(garbage)j(collec-)354 2219 y(tion.)495 2332 y(A)i(new)g(term)g(compression)e(tec)m(hnique)i ([19)q(])g(\(join)m(t)g(w)m(ork)g(with)f(Ulric)m(h)f(Neumerk)m(el\))i (re-)354 2445 y(duces)23 b(heap-consumption)f(and)h(adds)f(some)i (extra)g(sp)s(eed)e(.)38 b(Ulric)m(h's)22 b(iterativ)m(e)i Fo(copy)p 3348 2445 V 33 w(term/2)354 2558 y Fq(algorithm)43 b(further)g(accelerates)j(BinProlog's)d(`cop)m(y-once')j(heap-based)e Fo(findall/3)d Fq(and)354 2671 y Fo(findall/4)25 b Fq(so)j(that)h (\014ndall-in)m(tensiv)m(e)24 b(programs)k(ma)m(y)g(run)e(2-3)j(times)e (faster)h(in)e(BinProlog)354 2784 y(than)k(in)g(other)g(\(ev)m(en)i (nativ)m(e)e(co)s(de\))h(implemen)m(tations.)495 2897 y(All)36 b(data)h(areas)h(are)f(no)m(w)g(user)f(con\014gurable,)i(and)e (all)g(except)h(the)g(heap)g(are)g(garbage)354 3010 y(collected.)k(A)31 b(garbage)h(collector)e(for)h(the)f(heap)g(will)e(b)s(e)i(released)g (so)s(on.)495 3122 y(Although)24 b(other)h(Prolog's)g(assert)g(and)f (retract)i(primitiv)m(es)d(are)i(em)m(ulated)g(in)e(BinProlog,)354 3235 y(their)e(functionalit)m(y)g(has)h(b)s(een)f(decomp)s(osed)h(in)f (separate)i(simpler)d(op)s(erations)h(that)i(giv)m(e)f(also)354 3348 y(impro)m(v)m(ed)30 b(e\016ciency)-8 b(.)495 3461 y(F)g(or)39 b(p)s(ermanen)m(t)d(information)g(BinProlog)g(has)h(a)h (new,)h(garbage-collected)g(data)f(area,)354 3574 y(the)g Fh(blackb)-5 b(o)g(ar)g(d)p Fq(,)43 b(where)38 b(terms)g(can)g(b)s(e)f (stored)h(and)g(accessed)h(e\016cien)m(tly)e(with)g(a)h(a)h(2-k)m(ey) 354 3687 y(hashing)29 b(function)g(using)g(something)h(lik)m(e)354 3900 y Fo(?-bb_def\(likes,joe,[any\(b)o(eer\))o(,goo)o(d\(v)o(ine\))o (,veg)o(eta)o(rian)o(\(foo)o(d\)])o(\).)495 4112 y Fq(and)g(up)s(dated) f(with)g(something)h(lik)m(e)354 4325 y Fo(?-bb_set\(likes,joe,nothin)o (g\).)495 4537 y Fq(or)354 4750 y Fo(?-bb_rm\(likes,joe\).)495 4962 y Fq(T)-8 b(o)31 b(get)h(its)e(v)-5 b(alue:)354 5175 y Fo(?-bb_val\(likes,joe,What\).)1985 5493 y Fq(6)p eop 7 6 bop 495 375 a Fq(BinProlog)30 b(3.45)i(has)e(also)g(bac)m(ktrac)m (k)-5 b(able)32 b(global)e(v)-5 b(ariables,)29 b(with)g(2-k)m(ey)m(ed)k (names.)495 488 y(T)-8 b(ry:)354 700 y Fo(?-)48 b(Person=joe,)c (friend#Person:=:mary,)e(bb.)495 913 y Fq(and)30 b(then)354 1100 y Fo(?-)48 b(friend)e(#)h(joe:=:X.)495 1288 y Fq(The)40 b(blac)m(kb)s(oard)f(can)h(b)s(e)f(used)g(either)g(directly)g(or)h (through)f(an)g(assert-retract)j(st)m(yle)354 1401 y(in)m(terface.)495 1514 y Fh(A)32 b(smal)5 b(l)34 b(exer)-5 b(cise:)40 b Fq(if)30 b(y)m(ou)g(w)m(an)m(t)h(bac)m(ktrac)m(k)-5 b(able)32 b(b)s(eha)m(viour)d(of)h(assert)h(and)f(retract)h(y)m(ou)354 1627 y(can)23 b(mo)s(dify)e(extra.pl)h(and)g(use)g Fo(A#B:=:X)f Fq(st)m(yle)h(global)g(v)-5 b(ariables)21 b(in)h(their)f(de\014nition,) h(instead)354 1740 y(of)31 b Fo(bb)p 560 1740 29 4 v 34 w(def/3)e Fq(etc.)495 1853 y(The)d(blac)m(kb)s(oard)e(also)i(giv)m (es)g(constan)m(t-time)h(sparse)e(arra)m(ys)h(and)f(lemmas.)38 b(F)-8 b(or)27 b(example)354 1966 y(try:)354 2178 y Fo(?-)48 b(for\(I,1,99\),bb_def\(tab)o(le,I)o(,f\(I)o(,I\))o(\),fa)o(il.)354 2291 y(?-)g(bb.)495 2504 y Fq(BinProlog)40 b(3.45)i(has)e(Edin)m(burgh) d(b)s(eha)m(viour)i(and)g(tries)h(to)h(b)s(e)f(close)g(to)h(Sicstus)e (and)354 2616 y(Quin)m(tus)33 b(Prolog)h(on)g(the)h(seman)m(tics)g(of)f (builtins)d(without)i(b)s(eing)g(to)s(o)i(p)s(edan)m(tic)f(on)g(what's) 354 2729 y(not)d(really)e(imp)s(ortan)m(t.)495 2842 y(All)j(the)h (basic)f(Prolog)h(utilities)d(are)j(no)m(w)g(supp)s(orted)e(\(dynamic)h (clauses,)h(a)h(metain)m(ter-)354 2955 y(preter)d(with)g(tracing)g (facilit)m(y)-8 b(,)31 b(sort,)h(setof,)h(dynamic)d(op)s(erators)h (\015oating)h(p)s(oin)m(t)e(op)s(erations)354 3068 y(and)g (functions\).)495 3181 y(A)45 b(fast)f(deterministic)e(app)s(end)g Fo(det_append/3)j(\(i,i,o\))d Fq(has)h(b)s(een)h(added.)81 b(Naiv)m(e)354 3294 y(rev)m(erse)44 b(using)d Fo(det_append/3)e Fq(mak)m(es)44 b(more)f(than)f(3)i(MegaLIPS)f(on)g(a)g(Sparc)f(20-41)j (\(a)354 3407 y(3-times)31 b(sp)s(eed-up\).)495 3520 y(Almost)e(all)f(the)h(builtins)c(are)k(no)m(w)g(expanded)f(inline)e (resulting)h(in)h(impro)m(v)m(ed)g(heap)h(con-)354 3633 y(sumption)g(and)h(p)s(erformance.)495 3746 y(A)g(few)f(programs)g (\(an)h(automatic)g(T)-8 b(etris)29 b(pla)m(y)m(er,)h(a)g(knigh)m (t-tour,)f(an)h(OR-parallel)d(sim-)354 3858 y(ulator,)38 b(Fib)s(onacci,)g(T)-8 b(ak)37 b(with)f(lemmas,)i(a)f(small)e (neural-net)h(sim)m(ulator)g(bac)m(kprop.pl\))g(il-)354 3971 y(lustrate)c(some)g(of)g(the)g(new)g(features.)45 b(A)32 b(few)g(w)m(ell-kno)m(wn)f(b)s(enc)m(hmarks)g(ha)m(v)m(e)i(b)s (een)e(added)354 4084 y(to)g(help)e(compare)i(BinProlog)f(with)f(other) i(implemen)m(tations.)495 4197 y(BinProlog)k(has)f(supp)s(orted)f(from) i(start)g(30)h(bit)e(in)m(teger)h(arithmetic.)54 b(No)m(w)35 b(it)g(has)f(also)354 4310 y Fh(\015o)-5 b(ating)39 b(p)-5 b(oint)39 b(op)-5 b(er)g(ations)38 b Fq(and)d(functions)f(lik)m(e)h (sin,)g(cos,)j(tan,)f(log,)g(exp,)g(p)s(o)m(w,)f(etc.)57 b(They)354 4423 y(can)31 b(b)s(e)f(used)f(either)h(through)g(the)g (is/2)h(in)m(terface)2131 4390 y Fn(3)2171 4423 y Fq(:)354 4636 y Fo(?-)48 b(X)f(is)g(cos\(3.14\)+sin\(0\).)495 4848 y Fq(or)31 b(in)e(relational)g(form)354 5061 y Fo(?-)48 b(cos\(1,X\).)p 354 5135 1323 4 v 458 5188 a Fm(3)493 5220 y Fl(Is/2)26 b(no)n(w)g(accepts)g(execution)g(of)g(an)n(y)f (predicate)h(of)h(arit)n(y)e Fg(n)18 b Fl(+)e(1)26 b(as)h(a)f(function) g(of)g(arit)n(y)g Fg(n)p Fl(.)1985 5493 y Fq(7)p eop 8 7 bop 495 375 a Fq(Note)45 b(that)e(y)m(ou)g(should)e(use)h (something)g(lik)m(e)g Fo(Y=3+4,)k(X)i(is)f(1+expr\(Y\))40 b Fq(instead)i(of)354 488 y Fo(Y=3+4,)k(X)i(is)f(1+Y)30 b Fq(whic)m(h)f(will)e(not)k(w)m(ork)f(in)g(compiled)e(co)s(de.)495 601 y(Floating)38 b(p)s(oin)m(t)e(has)h(the)g(same)h(precision)d(and)h (seman)m(tics)i(as)f(the)h(t)m(yp)s(e)f(double)f(in)g(C.)354 714 y(Floating)e(p)s(oin)m(t)f(op)s(erations)g(are)h(close)g(in)e(sp)s (eed)h(to)i(em)m(ulated)e(Sicstus.)50 b(T)-8 b(o)34 b(try)f(them)h(out) 354 827 y(use)23 b(the)g(to)m(y)h(neural-net)m(w)m(ork)e(sim)m(ulator)g Fo(backprop.pl.)d Fq(This)i(program)i(uses)f(also)h(constan)m(t)354 939 y(time)f(arra)m(ys)h(and)f(is)f(therefore)i(un)m(usually)c(fast)k (compared)f(to)h(its)f(execution)g(in)f(other)h(Prologs)354 1052 y(lik)m(e)30 b(Quin)m(tus)e(or)j(Sicstus.)354 1296 y Fi(4.1)113 b(The)37 b(in)m(teractiv)m(e)f(toplev)m(el)g(shell)354 1467 y Fq(T)-8 b(o)31 b(see)g(the)g(command)f(line)f(options:)591 1580 y Fo($)47 b(bp)h(-help)354 1793 y Fq(T)-8 b(o)31 b(compile)f(and)f(load)h Fo()f Fq(or)h Fo(.pl)e Fq(or)i Fo(.pro)p Fq(:)591 1906 y Fo(?-[].)354 2118 y Fq(BinProlog)38 b(searc)m(hes)i(them)f(in)f(the)h(directories)f Fo(.,)47 b(./progs)37 b Fq(and)i Fo(../src)46 b(../library)p Fq(,)354 2231 y(relativ)m(e)34 b(to)g(the)f Fo(BP)p 1056 2231 29 4 v 34 w(PATH)f Fq(en)m(vironmen)m(t)h(v)-5 b(ariable)32 b(whic)m(h)g(defaults)g(silen)m(tly)g(to)i(the)g(curren)m(t)354 2344 y(directory)39 b(if)e(unde\014ned.)64 b(The)39 b(dirctory)f Fo(./myprogs)e Fq(is)i(also)h(searc)m(hed)g(for)g(p)s(ossible)d(user) 354 2457 y(programs.)80 b(While)42 b(compatible)h(to)h(previous)e (con\014gurations)h(whic)m(h)f(where)h(single)f(user)354 2570 y(minded,)c(this)f(allo)m(ws)g(installing)e(the)j(BinProlog)f (distributon)e(for)i(shared)g(use)h(in)e(a)i(place)354 2683 y(lik)m(e)30 b Fo(/usr/local/BinProlog)1506 2650 y Fn(4)354 2926 y Fi(4.2)113 b(Using)37 b(m)m(ultiple)d(logic)i (engines)354 3098 y Fq(A)26 b(new)g(\(exp)s(erimen)m(tal\))f(feature)i (added)e(starting)g(with)g(v)m(ersion)g(3.39)j(alo)m(ws)e(launc)m(hing) e(m)m(ul-)354 3211 y(tiple)k(Prolog)g(engines)g(ha)m(ving)g(their)f(o)m (wn)i(stac)m(k)h(groups)e(\(heap,)h(lo)s(cal)f(stac)m(k)i(and)d (trail\).)40 b(An)354 3324 y(engine)g(can)g(b)s(e)g(seen)g(as)g(an)g (abstract)h(data-t)m(yp)s(e)h(whic)m(h)c(pro)s(duces)h(a)i(\(p)s (ossibly)c(in\014nite\))354 3437 y(stream)31 b(of)g(solutions)d(as)j (needed.)40 b(T)-8 b(o)31 b(create)h(an)e(engine)g(use:)450 3649 y Fo(\045)47 b(:-mode)f(create_engine\(+,+,+,-\).)450 3762 y(create_engine\(HeapSize,)o(Stac)o(kSiz)o(e,T)o(rail)o(Size)o (,Ha)o(ndle)o(\))495 3975 y Fq(The)35 b(Handle)g(is)f(a)i(unique)d(in)m (teger)j(denoting)f(the)g(engine)g(for)g(further)f(pro)s(cessing.)55 b(T)-8 b(o)354 4088 y(`fuel')30 b(the)h(engine)e(with)h(a)g(goal)h(and) f(an)g(exp)s(ected)h(answ)m(er)f(v)-5 b(ariable)29 b(do:)450 4300 y Fo(\045)47 b(:-mode)f(load_engine\(+,+,+\).)450 4413 y(load_engine\(Handle,Goal)o(,Ans)o(werV)o(ari)o(able)o(\))495 4626 y Fq(No)34 b(pro)s(cessing)d(except)j(the)f(initialization)d(of)j (the)g(engine)f(tak)m(es)j(place)d(and)h(no)f(answ)m(er)354 4738 y(is)e(returned)f(with)g(this)g(op)s(eration.)40 b(Think)29 b(ab)s(out)h(it)g(as)g(simply)e(puting)h(gas)i(in)e(y)m(our) i(car.)495 4851 y(T)-8 b(o)31 b(get)h(an)e(answ)m(er)g(from)g(the)h (engine)f(do:)p 354 4930 1323 4 v 458 4984 a Fm(4)493 5016 y Fl(This)d(is)h(usually)f(b)r(etter)g(to)g(b)r(e)g(left)g(to)g(a) h(system)e(p)r(erson)h(who)g(also)i(can)e(ensure)g(that)f(users)i (inherit)f(the)354 5107 y Ff(BP)p 437 5107 24 4 v 29 w(PATH)33 b Fl(en)n(vironmen)n(t)d(v)l(ariable.)54 b(An)31 b(individual)h(user)g(can)g(also)i(put)d(something)h(lik)n(e)g Fe(setenv)j(BP)p 3429 5107 V 28 w(P)-6 b(A)g(TH)354 5199 y(/usr/lo)l(c)l(al/BinPr)l(olo)l(g)28 b Fl(his)e(or)g(her)f Ff(.cshrc)i Fl(or)f Ff(.login)h Fl(\014le,)f(to)g(access)h(the)f (shared)f(BinProlog)j(programs.)1985 5493 y Fq(8)p eop 9 8 bop 450 375 a Fo(\045)47 b(:-mode)f(ask_engine\(+,-\).)450 488 y(ask_engine\(Handle,Answe)o(r\))495 643 y Fq(If)30 b(y)m(ou)h(w)m(an)m(t)g(to)g(k)m(eep)g(the)f(answ)m(er)g(for)g(further) f(pro)s(cessing)g(b)s(efore)h(asking)g(for)g(the)g(next)354 755 y(one,)36 b(use)e Fo(copy_term/2)d Fq(as)k(the)f(original)f(will)f (go)j(a)m(w)m(a)m(y)h(as)e(the)h(engine)f(bac)m(ktrac)m(ks.)54 b(Note)354 868 y(that)41 b(nothing)d(nast)m(y)j(\(as)f(unsafe)f (references)h(to)h(dead)e(heap)h(cells\))f(happ)s(ens)f(ev)m(en)i(if)f (y)m(ou)354 981 y(forget)32 b(to)f(do)f(this,)g(except)h(that)g(the)f (bindings)e(in)h(the)h(`master')h(engine)f(will)e(b)s(e)i(undone.)495 1094 y(When)h(the)f(stream)h(of)f(answ)m(ers)h(reac)m(hes)g(its)f(end,) g Fo(ask_engine/2)d Fq(will)g(simply)h(fail.)495 1207 y(If)i(for)h(some)f(reasons)h(y)m(ou)f(are)h(not)g(in)m(terested)f(in)f (the)i(engine)f(an)m(ymore,)h(do)450 1380 y Fo(\045)47 b(:-mode)f(destroy_engine\(+\).)450 1493 y(destroy_engine\(Handle\))354 1666 y Fq(to)31 b(free)f(the)g(data)h(areas)g(alo)s(cated)f(for)g(the)g (engine.)40 b(If)30 b(y)m(ou)g(w)m(an)m(t)h(to)g(submit)d(another)i (query)354 1779 y(b)s(efore)h(using)f(the)h(complet)g(stream)g(of)g (answ)m(ers,)h(it)e(is)g(more)h(e\016cien)m(t)h(to)g(reuse)e(an)h (existing)354 1892 y(engine)f(with)f Fo(load_engine/3)p Fq(,)e(instead)j(of)g(destro)m(ying)h(it)e(and)h(creating)h(a)g(new)f (one.)495 2005 y(T)-8 b(ry)20 b(out)h(the)f(follo)m(wing)f(example)h (\(see)h(more)g(in)e(\014les)g Fo(library/engines,)43 b(progs/engtest.pl)p Fq(\):)402 2178 y Fo(?-create_engine\(256,64,6)o (4,E\))o(,)498 2291 y(load_engine\(E,append\(A)o(s,Bs)o(,[A,)o(B,B)o (,A]\))o(,As+)o(Bs\))o(,)498 2404 y(ask_engine\(E,R1\),write)o(\(R1\))o (,nl,)498 2517 y(ask_engine\(E,R2\),write)o(\(R2\))o(,nl,)498 2630 y(load_engine\(E,member\(X)o(,[1,)o(2,3])o(\),X)o(\),)498 2743 y(ask_engine\(E,R3\),write)o(\(R3\))o(,nl,)498 2856 y(ask_engine\(E,R4\),write)o(\(R4\))o(,nl,)498 2969 y (destroy_engine\(E\).)495 3142 y Fq(As)24 b(engines)f(will)e(b)s(e)i (assigned)g(to)h(real)g(pro)s(cessors)f(in)f(future)h(m)m (ulti-threaded)f(implemen-)354 3255 y(tations)i(this)f(reusabilit)m(y)e (of)j(a)g(giv)m(en)f(engine)g(for)h(execution)g(of)f(m)m(ultiple)f (goals)i(is)e(in)m(tended)h(to)354 3367 y(allo)m(w)32 b(precise)f(con)m(trol)h(to)h(the)f(programmer)f(o)m(v)m(er)i(the)f (resurces)g(of)g(a)g(system.)45 b(Preemptiv)m(e)354 3480 y(m)m(ultitasking)25 b(handled)f(either)h(with)g(thread)h(libraries,)e (when)h(a)m(v)-5 b(ailable)25 b(and)h(e\016cien)m(t,)h(or)f(b)m(y)354 3593 y(BinProlog)k(itself)f(otherwise,)h(is)g(planned)e(in)h(the)i (near)f(future.)495 3706 y(This)43 b(`sup)s(er-scalar')g(p)s (erformance)h(impro)m(v)m(emen)m(t)g(can)h(already)f(b)s(e)f(tested)i (with)e(the)354 3819 y(companion)k(\(Solaris)e(2.x)j(only\))e(Linda)g (implemen)m(tation)f(in)h(directory)h Fo(multi)e Fq(\(see)j(\014le)354 3932 y Fo(multi/myprogs/mcolor.pl)p Fq(\).)495 4045 y(If)32 b(an)g(engine)g(fails)f(due)g(to)i(the)f(o)m(v)m(er\015o)m(w)i(of)e(a)h (giv)m(en)f(data)h(area,)g(it)f(will)e(w)m(arn)h(y)m(ou)i(and)354 4158 y(fail.)49 b(The)33 b(w)m(arnings)f(are)i(disabled)d(with)i (quietness)f(lev)m(els)h(higher)f(than)i(6)f(\(command)h(line)354 4271 y(switc)m(h)c Fo(-q6)p Fq(\).)40 b(This)29 b(allo)m(ws)h(use)g(of) g(engines)g(to)h(quietly)e(reco)m(v)m(er)j(from)e(ressource)g(errors.) 495 4384 y(F)-8 b(or)28 b(o)m(wners)f(of)g(BinProlog's)f(C-source)h (licenses,)f(C-functions)g(with)f(similar)f(names)j(and)354 4497 y(seman)m(tics)c(as)g(the)g(predicates)f(describ)s(ed)e(in)i(this) f(section)i(are)g(a)m(v)-5 b(ailable)22 b(to)h(allo)m(w)f(em)m(b)s (edding)354 4609 y(of)31 b(m)m(ultiple)d(indep)s(enden)m(t)g(Prolog)i (engines)g(in)f(their)h(C-applications.)354 4847 y Fi(4.3)113 b(Using)37 b(m)m(ultiple)d(engines)354 5018 y Fq(The)h(\014le)f Fo(library/engines.pl)29 b Fq(con)m(tains)35 b(som)g(examples)g(of)g (ho)m(w)f(m)m(ultiple)f(engines)h(can)354 5131 y(b)s(e)h(used)f(for)h (implemen)m(ting)e(for)i(instance)g(all-solution)e(predicates.)55 b(Here)36 b(is)e(a)i(re-en)m(tran)m(t)354 5244 y Fo(find_all/3)p Fq(.)1985 5493 y(9)p eop 10 9 bop 354 375 a Fo(find_all\(X,Goal,Xs\):-)450 488 y(default_engine_params\(H)o(,S,T)o(\),)450 601 y (find_all\(H,S,T,X,Goal,X)o(s\).)354 827 y(find_all\(H,S,T,X,Goal,Xs\)) o(:-)450 939 y(create_engine\(H,S,T,Han)o(dle\))o(,)450 1052 y(load_engine\(Handle,Goal)o(,X\),)450 1165 y (collect_answers\(Handle,)o(Xs\),)450 1278 y(destroy_engine\(Handle\).) 354 1504 y(collect_answers\(Handle,[X)o(|Xs])o(\):-a)o(sk_)o(engi)o (ne\(H)o(and)o(le,A)o(\),!,)450 1617 y(copy_term\(A,X\),)450 1730 y(collect_answers\(Handle,)o(Xs\).)354 1843 y (collect_answers\(_,[]\).)354 2069 y(default_engine_params\(128)o(,32,) o(32\).)495 2281 y Fq(A)42 b(more)f(in)m(teresting)f(application)g(is)g (based)h(on)g(the)g(synergy)g(b)s(et)m(w)m(een)g(in)m(tuitionistic)354 2394 y(and)h(linear)f(implication)e(and)j(their)f(con)m(tin)m(uation)h (passing)f(couterparts)i(assumei/1)f(and)354 2507 y(assume/0)31 b(and)f(m)m(ultiple)e(engines.)495 2620 y(The)i(follo)m(wing)f (extension)h(is)g(a)m(v)-5 b(ailable)29 b(with)g Fo (:-[library\(enines\)])p Fq(.)495 2733 y(The)37 b(concrete)h(syn)m (taxe)f(is)f(Answ)m(er<=Pro)s(ducer=>Consumer)d(or)k(Answ)m(er<=Pro)s (ducer)354 2846 y(when)30 b(the)g(Consumer)f(is)h(the)g(\(implicit\))e (curren)m(t)j(AND-con)m(tin)m(uation.)495 2959 y(Pro)s(ducer)36 b(is)g(started)i(on)f(a)g(separate)h(engine.)60 b(It)37 b(pro)s(duces)f(linear)g(facts)h(of)h(the)f(form)354 3071 y(Answ)m(er,)25 b(from)e(computed)g(answ)m(ers)g(of)g(Goal,)i (originating)d(fro)h Fh(distinct)k(OR-br)-5 b(anches)p Fq(.)39 b(They)354 3184 y(are)33 b(usable)d(b)m(y)i(Consumer)f(as)h(if) f(they)h(w)m(ere)g(assumed)g(through)f(use)g(of)h(linear)f (implication,)354 3297 y(i.e.)75 b(they)41 b(are)h(consumed)f(one-b)m (y-one.)76 b(This)40 b(hides)g(the)i(in)m(tricacies)f(of)g(starting)h (a)g(new)354 3410 y(`orthogonal')32 b(logic)e(engine)g(in)m(to)g(a)h (simple,)d(easy)j(to)g(use)f(abstraction.)495 3523 y(The)g(actual)h (implemen)m(tation)e(follo)m(ws)h(\(see)h(also)f(\014le)g Fo(library/engines.pl)p Fq(\):)354 3736 y Fo(\045)48 b(executes)d(Producer)h(on)h(an)g(`orthogonal')e(OR-engine)354 3849 y(Answer<=Producer=>Consume)o(r:-!)o(,)d(\045)47 b(the)g(consumer)f(is)h(explicit)450 3961 y(cross_run\(Producer,Answ)o (er,C)o(onsu)o(mer)o(\).)354 4074 y(Answer<=Producer:-)616 b(\045)47 b(the)g(consumer)f(is)h(in)g(the)g(`future')450 4187 y(cross_run_with_current_)o(cont)o(inua)o(tio)o(n\(Pr)o(oduc)o (er,)o(Answ)o(er\).)354 4413 y(cross_run\(Producer,Answer)o(,Con)o (sume)o(r\):)o(-)450 4526 y(default_engine_params\(H)o(,S,T)o(\),)450 4639 y(cross_run\(H,S,T,Produce)o(r,An)o(swer)o(,Co)o(nsum)o(er\).)354 4865 y(cross_run\(H,S,T,Producer,)o(Answ)o(er,C)o(ons)o(umer)o(\):-)498 4978 y(compound\(Answer\),copy_)o(term)o(\(Ans)o(wer)o(,A\),)498 5091 y(new_engine\(H,S,T,Produ)o(cer,)o(Answ)o(er,)o(Hand)o(le\),)498 5203 y(\(A:-ask_or_kill\(Handle)o(,A\)\))o(=>Co)o(nsu)o(mer,)1962 5493 y Fq(10)p eop 11 10 bop 498 375 a Fo(destroy_engine\(Handle\))o(.)354 601 y(cross_run_with_current_co)o(ntin)o(uati)o(on\()o(Prod)o(ucer)o (,An)o(swer)o(\):-)498 714 y(default_engine_params\()o(H,S,)o(T\),)498 827 y(cross_run_with_current)o(_con)o(tinu)o(ati)o(on\(H)o(,S,T)o(,Pr)o (oduc)o(er,A)o(nsw)o(er\).)354 1052 y(cross_run_with_current_co)o(ntin) o(uati)o(on\()o(H,S,)o(T,Pr)o(odu)o(cer,)o(Answ)o(er\))o(:-)498 1165 y(compound\(Answer\),copy_)o(term)o(\(Ans)o(wer)o(,A\),)498 1278 y(new_engine\(H,S,T,Produ)o(cer,)o(Answ)o(er,)o(Hand)o(le\),)498 1391 y(assumei\(\(A:-ask_or_kil)o(l\(Ha)o(ndle)o(,A\))o(\)\).)354 1617 y(ask_or_kill\(Handle,Answer)o(\):-a)o(sk_e)o(ngi)o(ne\(H)o(andl)o (e,A)o(nswe)o(r\),!)o(.)354 1730 y(ask_or_kill\(Handle,_\):-de)o(stro)o (y_en)o(gin)o(e\(Ha)o(ndle)o(\),f)o(ail.)354 1956 y (new_engine\(H,S,T,Goal,Ans)o(wer,)o(Hand)o(le\))o(:-)450 2069 y(create_engine\(H,S,T,Han)o(dle\))o(,)450 2181 y(load_engine\(Handle,Goal)o(,Ans)o(wer\))o(.)354 2407 y(\045)48 b(overridable)d(default)g(engine)h(sizes)h(for)g (heap,stack,trail)354 2520 y(default_engine_params\(H,S)o(,T\):)o(-ass) o(ume)o(d\(en)o(gine)o(_pa)o(rams)o(\(H,S)o(,T\))o(\),!.)354 2633 y(default_engine_params\(128)o(,32,)o(32\).)495 2839 y Fq(The)33 b(follo)m(wing)e(example)i(sho)m(ws)g(ho)m(w)g(and)f (OR-stream)h(of)g(answ)m(ers)g(seen)g(as)g(linear)f(as-)354 2951 y(sumptions)d(from)h(an)g(`orthogonal')h(engine)f(can)h(b)s(e)e (used)h(in)f(and)h(AND-branc)m(h.)354 3157 y Fo(?-)48 b(a\(X\)<=member\(X,[1,2,3])o(\)=>\()o(a\(A\))o(,a\()o(B\),a)o(\(C\),)o (wri)o(te\([)o(A,B,)o(C]\))o(,nl\))o(.)354 3383 y([1,2,3])495 3588 y Fq(If)21 b(found)f(in)m(teresting,)j(a)f(trully)d(parallel,)j (highly)d(e\016cien)m(t)j(implemen)m(tation)e(will)f(b)s(e)h(made)354 3701 y(a)m(v)-5 b(ailable)30 b(in)f(future)h(releases.)495 3814 y(The)37 b(same)h(abstraction)g(is)f(already)g(supp)s(orted)e(in)i (the)g(companion)g(Multi-BinProlog)354 3927 y(engine,)32 b(through)f(use)h(of)g(real)f(Solaris)f(2.4)j(threads)e(\(see)i(\014le) e Fo(multi/myprogs/ortho.pl)p Fq(\).)354 4040 y(On)i(m)m(ultiple)e(pro) s(cessor)h(Sparcs)h(this)f(extension)h(should)e(allo)m(w)i(sup)s (er-linear)d(sp)s(eed-up,)j(in)354 4153 y(the)25 b(hands)e(of)i(a)g(go) s(o)s(d)f(programmer,)h(as)g(the)g(answ)m(er)f(is)g(sp)s(eculativ)m (ely)f(computed)h(in)f(parallel)354 4266 y(with)f(the)h(computations)g (p)s(erformed)f(b)m(y)g Fo(Consumer)p Fq(.)36 b(W)-8 b(e)25 b(ha)m(v)m(e)f(v)m(eri\014ed)e(that)i(when)e(m)m(ultiple)354 4379 y(pro)s(cessors)27 b(are)h(a)m(v)-5 b(ailable,)28 b(Multi-BinProlog)d(bac)m(kground)j(pro)s(cesses)f(will)e(tend)i(to)h (execute)354 4492 y(on)23 b(di\013eren)m(t)g(pro)s(cessors,)h(with)e (sup)s(er-linear)e(sp)s(eed-up)i(\(see)i(\014le)e(m)m(ulti/m)m (yprogs/mcolor.pl)354 4604 y(and)30 b(scripts)f Fo(seq)h Fq(and)f Fo(par)h Fq(in)f(the)i(same)f(directory\).)354 4847 y Fi(4.4)113 b(Real)36 b(standalone)j(applications)d(through)h (compilation)e(to)i(C)354 5018 y Fq(Starting)30 b(with)f(v)m(ersion)h (3.30)i(it)e(is)f(p)s(ossible)f(to)j(separately)g(compile)e(user)g (applications)g(and)354 5131 y(just)42 b(link)e(them)i(with)f(the)h(em) m(ulator)g(library)e(and)h(the)i(C-i\014ed)d(compiler)h(\(see)i (directory)354 5244 y Fo(pl2c)p Fq(\).)d(This)29 b(allo)m(ws)h (creation)g(of)h(a)g(fully)d(C-i\014ed)h(application)f(in)h(a)i(few)f (seconds.)1962 5493 y(11)p eop 12 11 bop 495 375 a Fq(Just)44 b(t)m(yp)s(e)g Fo(make)j(PROJ=queens)41 b Fq(in)i(directory)h Fo(pl2c)p Fq(.)81 b(The)43 b(standalone)h (application)354 488 y Fo(queens)36 b Fq(is)h(ready)h(to)g(b)s(e)f (executed)i(b)m(y)e(t)m(yping)g Fo(queens)p Fq(.)61 b(The)37 b(generated)i(C-co)s(de)f(can)g(b)s(e)354 601 y(seen)31 b(in)e(\014les)g Fo(queens.h)f Fq(and)i Fo(queens.c)p Fq(.)495 714 y(Moreo)m(v)m(er,)38 b(on)d(systems)f(with)f(dynamic)h (linking)d(lik)m(e)j(Solaris)f(2.x)i(true)f(executables)h(of)354 827 y(size)i(starting)g(at)g(ab)s(out)g(6K)f(can)i(b)s(e)e(created)h (starting)g(with)f(v)m(ersion)g(3.30)i(\(see)g(directory)354 939 y Fo(dynpl2c)p Fq(\).)495 1052 y(If)g(y)m(ou)g(de\014ne)f(a)h (predicate)f Fo(main/0)f Fq(then)h(y)m(our)h(executable)g(will)d(start) j(directly)f(from)354 1165 y(there)27 b(instead)e(of)i(the)f(usual)f (in)m(teractiv)m(e)i(top-lev)m(el.)40 b(Calling)24 b(it)i(with)f(a)h (high)f(quietness-lev)m(el)354 1278 y(\(i.e.)41 b(command)30 b(line)f(switc)m(h)h Fo(-q5)p Fq(\))g(will)d(suppress)i(w)m(arnings)g (and)h(un)m(w)m(an)m(ted)g(messages.)354 1522 y Fi(4.5)113 b(Unix)37 b(pseudo-executables)354 1693 y Fq(The)k(follo)m(wing)e (still)g(w)m(orks,)k(although)e(the)g(new)f(C-i\014cation)g(tec)m (hnique)h(\(see)g(directories)354 1806 y(pl2c,)31 b(dynpl2c\))e(can)h (no)m(w)h(create)h(true)e(one-\014le)g(standalones.)354 2019 y(It)21 b(is)e(p)s(ossible)f(to)j(create)h(\(as)f(in)e(the)h (past\))h(a)f(small)f(run)m(time)g(application)g(\(called)h("new)m (appl.bp"\),)354 2132 y(from)30 b Fo(.pl)e Fq(as)j(follo)m(ws:) 450 2344 y Fo(?-make_appl\('.pl')o(\).)354 2557 y Fq(Deliv)m(er)38 b(the)h(appropriate)e("bp")i(\014le)e(\(the)i (Prolog)f(engine\))g(with)g(y)m(our)g(application.)63 b(The)354 2670 y(user)30 b(m)m(ust)g(t)m(yp)s(e:)591 2782 y Fo($)47 b(bp)h(newappl.bp)354 2995 y Fq(to)31 b(start)g(it.)354 3208 y(Note:)42 b(the)31 b(\014le)e(m)m(ust)i(con)m (tain)f(a)h(clause)498 3420 y Fo(main\(X\):-...)354 3633 y Fq(That's)g(where)f(execution)g(starts.)41 b(BinProlog's)30 b(shell)e(is)i(nothing)f(but)h(suc)m(h)g(an)g(application)354 3746 y(whic)m(h)f(starts)i(with)e(a)i(toplev)m(el)f(lo)s(op)g(i.e.)40 b(something)30 b(lik)m(e:)498 3958 y Fo(main\(X\):-toplevel\(X\).)354 4171 y Fq(As)g(a)g(new)e(feature,)j(y)m(ou)f(can)f(o)m(v)m(erride)h (this)e(b)s(eha)m(viour,)h(ev)m(en)h(for)f(the)h(standard)e(BinProlog) 354 4284 y(system)33 b(con)m(taining)e(the)i(predicate)f Fo(main/1)e Fq(\(whic)m(h)h(starts)i(the)f(in)m(teractiv)m(e)h(top-lev) m(el\),)g(b)m(y)354 4396 y(de\014ning)c(a)i(predicate)g Fo(main/0)e Fq(in)g(y)m(our)i(program)f(\014le.)41 b(In)30 b(this)f(case,)j Fo(main/0)d Fq(b)s(ecomes)i(the)354 4509 y(new)f(starting)g(p)s(oin)m(t.)495 4622 y(Y)-8 b(ou)31 b(can)g(also)f(generate)i(\(on)e(UNIX)h(systems\))f (stand-alone)g(executables)h(that)g(dynam-)354 4735 y(ically)e(start)i (the)g(em)m(ulator)f(\(thanks)h(to)g(P)m(eter)g(Rein)m(tjes)f(for)h (suggesting)f(this\).)40 b(Y)-8 b(ou)31 b(can)f(do)354 4848 y(something)g(lik)m(e:)1962 5493 y(12)p eop 13 12 bop 354 375 a Fo(\045)48 b(FILE:)e(hello.pl)354 601 y(main\(true\):-write\(hello\),)o(nl.)354 827 y(\045)i(DO:)354 939 y(\045)g(?-make_executable_unix_)o(appl)o(\()354 1052 y(\045)239 b('/usr/local/bin/bp)42 b(-q5',)47 b(\045)g (AbsolutePathToEmulator)42 b(\(q=quietness\))354 1165 y(\045)239 b('hello.pl',)665 b(\045)47 b(SourceFile)354 1278 y(\045)286 b(hello\).)810 b(\045)47 b(ExecutableFile)495 1491 y Fq(In)30 b(the)h(case)g(of)g(the)f("hello.pl")f(program,)i(the)f (user)g(m)m(ust)g(t)m(yp)s(e,)h(at)g(the)g(Unix)e(prompt:)591 1604 y Fo($)47 b(hello)354 1816 y Fq(to)31 b(start)g(it.)354 2029 y(The)f(co)s(de)h(of)f(this)g(primitiv)m(e)e(is)h(at)i(the)g(end)f (of)g(the)h(\014le)e Fo(co.pl)p Fq(.)495 2142 y(Again,)36 b(w)m(e)f(recommend)f(using)f(the)h(C-i\014cation)g(tec)m(hnique)g (whic)m(h)f(can)h(already)g(sp)s(eed)354 2255 y(up)26 b(most)g(applications)f(and)h(in)f(the)i(future)e(will)f(generate)k(v)m (ery)f(fast)g(co)s(de)f(comp)s(etitiv)m(e)h(with)354 2367 y(nativ)m(e)k(co)s(de)g(compilers.)354 2580 y(Y)-8 b(ou)31 b(can)g(b)s(o)s(otstrap)f(the)g(compiler,)g(after)g(mo)s (difying)e(the)j Fo(*.pl)e Fq(\014les)g(b)m(y:)450 2792 y Fo(?-)47 b(boot.)450 2905 y(?-)g(make.)495 3118 y Fq(or,)31 b(similarly)c(for)j(an)m(y)h(other)g(pro)5 b(ject)30 b(ha)m(ving)g(a)h(top)g Fo(*.pro)e Fq(\014le:)450 3330 y Fo(?-make\(ProjectFile\).)450 3443 y(?-make\(ProjectFile,Modu)o (le\).)495 3656 y Fq(or)450 3868 y Fo(?-cmake\(ProjectFile\).)450 3981 y(?-cmake\(ProjectFile,Mod)o(ule\))o(.)495 4194 y Fq(if)j(y)m(ou)g(in)m(tend)f(to)i(generate)h(C-co)s(de)e(and)g(p)s (ossibly)d(hide)i(non-public)e(predicates)j(inside)354 4307 y(a)f(mo)s(dule.)354 4519 y(This)37 b(allo)m(ws)g(to)i(in)m (tegrate)h(y)m(our)e(preferences)g(and)g(extensions)g(written)f(in)g (Prolog)h(to)h(the)354 4632 y(BinProlog)30 b(k)m(ernel.)354 4845 y Fh(Make)38 b(sur)-5 b(e)38 b(you)h(ke)-5 b(ep)38 b(a)g(c)-5 b(opy)39 b(the)g(original)g Fq(w)m(am.bp)e Fh(in)h(a)h(safe)f(plac)-5 b(e,)40 b(in)e(c)-5 b(ase)39 b(things)f(go)354 4958 y(wr)-5 b(ong)34 b(when)g(you)f(typ)-5 b(e)31 b Fo(?-boot.)1962 5493 y Fq(13)p eop 14 13 bop 354 375 a Fi(4.6)113 b(Some)37 b(limitations/features)d(of)k (BinProlog)354 547 y Fq(W)-8 b(e)30 b(passed)d(Occam's)i(razor)g(on)f (a)g(few)g("features")h(of)g(Prolog)f(that)h(are)f(obsolete)h(in)e(mo)s (dern)354 659 y(programming)20 b(en)m(vironmen)m(ts)g(and)g(on)h(some)g (others)g(that)h(are,)h(in)d(our)g(opinion,)h(bad)f(soft)m(w)m(are)354 772 y(practice.)495 885 y(Only)29 b(one)i(\014le)e(at)i(a)g(time)f(can) h(b)s(e)f(compiled)f(in)g(the)h(in)m(teractiv)m(e)h(en)m(vironmen)m(t:) 450 1098 y Fo(?-[myfile].)495 1310 y Fq(or)450 1523 y Fo(?-)47 b(compile\(myfile\).)495 1735 y Fq(No)m(w)32 b(BinProlog)d(supp)s(orts)g(an)h(include)e(directiv)m(e:)354 1948 y Fo(:-[include1].)354 2061 y(:-[include2].)354 2174 y(....)495 2386 y Fq(This)d(suggest)i(to)g(mak)m(e)g(a)g(pro)5 b(ject)26 b Fo(\(*.pro\))f Fq(\014le)g(using)g(a)h(set)h(of)g(include)d (directiv)m(es)h(eac)m(h)354 2499 y(refereing)30 b(to)g(a)h Fo(*.pl)e Fq(\014le.)39 b(When)30 b(compiled)f(to)i(a)f(\014le)f(\(b)m (y)h(using)f(the)h Fo(?-make\(MyProject\))354 2612 y Fq(command\))35 b(a)g(mak)m(e-lik)m(e)g(memoing)f(facilit)m(y)g(will)d (a)m(v)m(oid)k(useless)f(recompilation)f(of)i(the)f(in-)354 2725 y(cluded)27 b Fo(\(*.pl\))f Fq(\014les)g(b)m(y)i(creation)g(of)g (precompiled)e Fo(\(*.wam\))f Fq(\014les.)39 b(F)-8 b(or)29 b(large)e(pro)5 b(jects)28 b(this)354 2838 y(is)33 b(the)h(recommended) g(tec)m(hnique.)51 b(Creation)33 b(of)h(C-i\014ed)f(standalone)g (\014les)g(is)g(also)h(p)s(ossible)354 2951 y(\(see)e(the)e Fo(pl2c)f Fq(directory\).)354 3163 y(Programs)23 b(that)h(w)m(ork)f(w)m (ell)f(can)h(b)s(e)g(added)f(to)i(the)f(BinProlog)f(k)m(ernel.)38 b(This)21 b(a)m(v)m(oids)i(rep)s(eated)354 3276 y(recompilation)39 b(of)g(w)m(orking)g(co)s(de)h(and)f(predicates)h(in)e(the)i(k)m(ernel)f (are)h(protected)h(against)354 3389 y(name)31 b(clashing.)495 3502 y(New)k(programs)f(can)h(b)s(e)f(loaded)g(in)f(the)h(in)m (teractiv)m(e)i(en)m(vironmen)m(t.)52 b(When)35 b(they)f(w)m(ork)354 3615 y(w)m(ell,)43 b(they)e(migrate)h(to)f(the)h(k)m(ernel.)72 b(Y)-8 b(ou)41 b(can)h(prepare)e(a)h(go)s(o)s(d)g(Mak)m(e\014le)h(to)g (automate)354 3728 y(this)31 b(job.)44 b(When)31 b(ev)m(erything)g(is)g (OK)g(y)m(ou)g(can)h(deliv)m(er)e(it)i(as)f(a)h(run-time-only)e (application.)354 3841 y(Releases)g(after)g(3.30)h(con)m(tain)f(a)f (basic)g(mak)m(e)h(facilit)m(y)f(whic)m(h)f(a)m(v)m(oids)i(to)g (recompile)e(included)354 3954 y Fo(*.pl)i Fq(\014les)f(when)g(a)i(new) m(er)f Fo(*.wam)f Fq(\014le)h(exists.)495 4067 y(Programs)39 b(are)g(searc)m(hed)g(with)e(su\016xes)g Fo("",)47 b(".pl",)f(".pro")37 b Fq(in)g(the)i(directories)e Fo(.,)354 4180 y(./progs)46 b(and)h(./myprogs)p Fq(.)495 4292 y(There's)30 b(no)h(limit)d(on)i(the) h(n)m(um)m(b)s(er)e(of)h(\014les)g(y)m(ou)g(can)h(compile)e(to)i(disk:) 450 4480 y Fo(?-)47 b(compile\(wam,[file1,file2)o(,...)o(],')o(appl)o (icat)o(ion)o(.bp')o(\).)495 4668 y Fq(No)m(w)39 b(BinProlog)f(do)s(es) f(implemen)m(t)g(consult/1,)k(reconsult/1)d(and)g(listing/0)f(for)h(in) m(ter-)354 4781 y(preted)e(co)s(de)h(but)e(use)h(of)h(compile/1)f(is)f (highly)f(recommended)i(instead.)58 b(See)36 b(the)g(\014le)g(ex-)354 4894 y(tra.pl)c(for)g(the)h(implemen)m(tation.)45 b(F)-8 b(aster)34 b(than)e(asserted)h(co)s(de)g(is)e(so)i(called)e(assumed)h (co)s(de)354 5006 y(\(see)g(the)e(next)h(sections\))g(i.e.)40 b(in)m(tuitionistic)27 b(and)j(linear)f(implication.)354 5219 y(Here)i(are)g(some)g(other)f(limitations/features:)1962 5493 y(14)p eop 15 14 bop 491 375 a Fj(\017)46 b Fq(Clauses)29 b(of)h(a)h(predicate)f (m)m(ust)h(b)s(e)e(group)s(ed.)491 563 y Fj(\017)46 b Fq(Clauses)20 b(ha)m(ving)i(unde\014ned)d(predicates)j(o)s(ccurring)e (righ)m(t)i(after)g(the)g(head)g(are)g(rejected.)491 750 y Fj(\017)46 b Fq(ARITY)30 b(is)f(limited)f(to)j(255.)491 938 y Fj(\017)46 b Fq(The)41 b(heap)h(garbage)h(collector)g(is)e(not)h (y)m(et)h(implemen)m(ted,)h(but)d(w)m(e)i(plan)e(to)h(add)g(it)582 1051 y(so)s(on.)e(Ho)m(w)m(ev)m(er,)31 b(the)f(blac)m(kb)s(oard,)f (dynamic)f(co)s(de)h(space,)h(the)g(string)e(space)i(and)e(the)582 1164 y(hashing)g(table)j(ARE)f(garbage)i(collected)e(b)s(efore)g (loading)g(a)g(new)g(program.)354 1376 y(Mo)s(de)h(is)e(in)m(teractiv)m (e)j(b)m(y)e(default)f(\(for)i(compatibilit)m(y)e(with)g(other)h (Prologs\))h(but)f(if)f(y)m(ou)i(use)354 1489 y(a)g(mo)s(dern,)e(windo) m(ws)g(based)h(en)m(vironmen)m(t)g(y)m(ou)h(ma)m(y)g(w)m(an)m(t)g(to)g (switc)m(h)f(it)g(o\013)h(with:)354 1702 y Fo(?-)48 b (interactive\(no\).)354 1914 y Fq(or)31 b(turn)e(it)h(on)g(again)h (with)354 2127 y Fo(?-)48 b(interactive\(yes\).)354 2370 y Fi(4.7)113 b(Other)37 b(BinProlog)e(go)s(o)s(dies)i(and)i(new)f (predicates)354 2542 y Fq(A)31 b(few)f(BinProlog)g(sp)s(eci\014c)f (predicates)h(are)g(a)m(v)-5 b(ailable:)491 2754 y Fj(\017)46 b Fo(restart/0)27 b Fq(-)k(cleans)f(ev)m(ery)h(data)g(area)491 2942 y Fj(\017)46 b Fo(cwrite/1)28 b Fq(-)i(fast)h(but)f(restricted)g (write)491 3130 y Fj(\017)46 b Fo(symcat/3)f(\(i,i,o\))29 b Fq(returns)g(a)h(new)g(sym)m(b)s(ol)f(of)i(the)g(form)e Fo(_.)491 3317 y Fj(\017)46 b Fo(gensym/2)f(\(i,o\))29 b Fq(forms)h(a)h(new)e(name)i(of)f(the)h(form)f Fo(_.) 491 3505 y Fj(\017)46 b Fo(sread/2)f(\(i,o\))38 b Fq(reads)h(from)g(a)h (name)f(a)h(\(ground\))f(term,)i Fo(swrite\(i,o\))c Fq(writes)h(a)582 3618 y(term)30 b(to)h(a)g(name.)491 3805 y Fj(\017)46 b Fq(term)39 b Fo(termcat/3)45 b(\(i,i,o\))38 b Fq(adds)g(its)h(second) h(argumen)m(t)g(as)f(last)h(argumen)m(t)f(of)h(its)582 3918 y(\014rst)29 b(argumen)m(t)i(and)f(returns)f(the)i(new)e(term)491 4106 y Fj(\017)46 b Fo(term)p 780 4106 29 4 v 33 w(chars/2)28 b Fq(con)m(v)m(erts)k(b)s(et)m(w)m(een)f(a)g(ground)e(term)i(and)e(its) h(string)f(represen)m(tation)491 4293 y Fj(\017)46 b Fo(not/1)29 b Fq(is)g(a)i(form)f(of)g(sound)f(negation)491 4481 y Fj(\017)46 b Fo(for/3)24 b Fq(as)h(for)g(instance)g(in)f Fo(?-for\(I,1,5\),write\(I\),nl,)o(fail)19 b Fq(generates)26 b(a)g(failure)582 4594 y(driv)m(en)j(lo)s(op)495 4807 y(It)k(is)f(a)i(go)s(o)s(d)f(idea)f(to)i(tak)m(e)g(a)f(lo)s(ok)g(at)h (BinProlog's)e Fo(*.pl)g Fq(for)g(other)h(builtin-or-library)354 4919 y(predicates)38 b(b)s(efore)g(implemen)m(ting)e(them)i(y)m (ourself.)63 b(The)37 b(\014le)g Fo(write.pl)f Fq(con)m(tain)i(v)-5 b(arious)354 5032 y(output)30 b(predicates)g(lik)m(e)491 5220 y Fj(\017)46 b Fq(write/1)1962 5493 y(15)p eop 16 15 bop 491 375 a Fj(\017)46 b Fq(writeq/1)491 563 y Fj(\017)g Fq(p)s(ortra)m(y)p 883 563 28 4 v 32 w(clause/1)491 750 y Fj(\017)g Fq(prin)m(t/1)491 938 y Fj(\017)g Fq(displa)m(y/1)491 1125 y Fj(\017)g Fq(tt)m(yprin)m(t/1)491 1313 y Fj(\017)g Fq(tt)m(ynl/1)354 1526 y(Y)-8 b(ou)38 b(can)f(extend)g(BinProlog)f(b)m (y)g(adding)g(new)g(predicates)g(to)i(the)f(\014le)f(extra.pl)g(and)h (then)354 1638 y(use)30 b(the)h(predicate)f Fo(boot/0)f Fq(de\014ned)g(in)g(the)i(\014le)e(co.pl.)354 1882 y Fi(4.8)113 b(E\016cien)m(t)36 b(\014ndall)h(based)h(meta-programming) 354 2054 y Fq(BinProlog's)30 b Fo(findall/3)d Fq(is)i(so)i(e\016cien)m (t)f(that)h(y)m(ou)f(can)g(a\013ord)h(\(with)e(some)h(care\))h(to)g (use)f(it)354 2166 y(instead)g(of)h(explicit)d(\(and)i(more)h (painful\))d(\014rst-order)h(programs)h(as)h(in:)354 2379 y Fo(\045)48 b(maplist)e(with)g(findall)354 2492 y(maplist\(Closure,Is,Os\):-)450 2605 y(Closure=..L1,)450 2718 y(det_append\(L1,[I,O],L2\))o(,)450 2831 y(P=..L2,)450 2944 y(findall\(O,map1\(P,I,Is\),)o(Os\).)354 3169 y (map1\(P,I,Is\):-member\(I,Is)o(\),P.)495 3382 y Fq(This)29 b(can)i(b)s(e)e(used)h(as)h(follo)m(ws:)354 3594 y Fo(?-)48 b(maplist\(+\(1\),[10,20,30)o(],T\))o(.)354 3707 y(=>)g(T=[11,21,31]) 495 3920 y Fq(Note)c(that)e(constructing)f Fo(Closure)f Fq(only)h(once)h(\(although)g(this)e(ma)m(y)j(not)f(b)s(e)f(in)f(an)m (y)354 4033 y(Prolog)31 b(text-b)s(o)s(ok!\))42 b(is)29 b(more)i(e\016cien)m(t)f(than)g(doing)g(it)g(at)h(eac)m(h)h(step.)495 4146 y(The)21 b(predicate)g Fo(gc)p 1160 4146 29 4 v 34 w(call\(Goal\))e Fq(de\014ned)h(in)g(the)h(\014le)f Fo(lib.pl)g Fq(executes)j(Goal)e(in)f(minimal)354 4259 y(space.)51 b(It)33 b(is)g(explained)f(in)g(the)h(Craft)h(of)f(Prolog)h (b)m(y)f(R.A.)h(O'Keefe,)h(MIT)e(Press.)50 b(Do)34 b(not)354 4372 y(hesitate)40 b(to)g(use)f(it.)67 b(BinProlog)38 b(o\013ers)i(a)f(v)m(ery)h(fast,)i(heap-orien)m(ted)d(\014ndall,)g(so)h (y)m(ou)f(can)354 4484 y(a\013ord)27 b(to)h(use)f Fo(gc)p 975 4484 V 34 w(call)p Fq(.)39 b(In)26 b(go)s(o)s(d)h(hands,)g(it)g(is) f(probably)f(faster)j(than)f(using)e(assert/retract)354 4597 y(or)31 b(the)f(usual)f(mark-and-sw)m(eep)i(garbage)g(collector)g (of)g(other)f(implemen)m(tations.)354 4841 y Fi(4.9)113 b(Builtins)354 5012 y Fq(The)37 b(follo)m(wing)e(\(user-lev)m(el\))i (builtins)c(are)k(supp)s(orted,)g(with)f(seman)m(tics)h(\(in)m(tended)f (to)i(b)s(e\))354 5125 y(close)31 b(to)g(SICSTUS)d(and)i(QUINTUS)g (Prolog.)1962 5493 y(16)p eop 17 16 bop 354 488 a Fo(fail/0)354 601 y(nl/0)354 714 y(var/1)354 827 y(nonvar/1)354 939 y(integer/1)354 1052 y(atomic/1)354 1165 y(+/3)143 b(\045)47 b(arithmetic)e(offers)h(also)h (the)g(usual)f(is/2)h(interface)354 1278 y(-/3)354 1391 y(*)h(/3)354 1504 y(//)g(/3)354 1617 y(mod/3)354 1730 y(<<)g(/3)354 1843 y(>>)g(/3)354 1956 y(/\\)g(/3)354 2069 y(\\/)g(/3)354 2181 y(#)g(/3)190 b(\045)48 b(bitwise)d(XOR)354 2294 y(\\)j(/3)238 b(\045)47 b(bitwise)f(NOT)354 2407 y(random/1)g(\045)h(returns)f(an)h(integer,)f(not)h(a)g(float)354 2520 y(get0/1)354 2633 y(put/1)354 2746 y(<)h(/2)354 2859 y(>)g(/2)354 2972 y(=<)g(/2)354 3085 y(>=)g(/2)354 3198 y(=:=)f(/2)354 3311 y(=\\=)g(/2)354 3423 y(compare/3)354 3536 y(seeing/1)354 3649 y(seen/0)354 3762 y(telling/1)354 3875 y(told/0)354 3988 y(copy_term/2)354 4101 y(functor/3)354 4214 y(arg/3)354 4327 y(name/2)354 4440 y(abort/0)354 4553 y(is_compiled/1)e(\045)i(checks)f(if)h(a)h(predicate)d(is)i (compiled)354 4765 y Fq(Other)30 b(useful)f(predicates)h(are)h (de\014ned)e(in)g(the)h(\014le)g(lib.pl)d(and)j(w)m(ork)g(as)h(exp)s (ected.)354 4978 y Fo(true/0,)354 5091 y(=/2,)354 5203 y(..)48 b(->)f(..)g(;)g(..)1962 5493 y Fq(17)p eop 18 17 bop 354 375 a Fo(;/1)354 488 y(call/1)354 601 y(\\+/1)354 714 y(repeat/0)354 827 y(findall/3)354 939 y(findall/4)354 1052 y(for/3)354 1165 y(numbervars/4)354 1278 y(see/1)354 1391 y(tell/1)354 1504 y(system/1)354 1617 y(statistics/0)354 1730 y(statistics/2)354 1843 y(atom/1)354 1956 y(compound/1)354 2069 y(=../2)354 2181 y(length/2)354 2294 y(tab/1)354 2407 y(get/1)354 2520 y(==)48 b(/2)354 2633 y(\\==)f(/2)354 2746 y(A)h(@<)f(B)354 2859 y(A)h(@>)f(B)354 2972 y(A)h(@=<)f(B)354 3085 y(A)h(@>=)f(B)354 3198 y(compile/1)f(-)h(see)g(co.pl)f(for)h(the)g (compiler)354 3311 y(read/1)94 b(-)48 b(see)f(the)f(file:)h(read.pl)354 3423 y(write/1)f(-)i(see)f(the)f(file:)h(write.pl)354 3536 y(halt/0,)354 3649 y(halt\(ReturnCode\),)354 3762 y(listing/0,)e(\045)j(only)e(for)h(interpreted)e(code)354 3875 y(listing\(Pred,Arity\),)354 3988 y(assert/1,)354 4101 y(asserta/1,)354 4214 y(assertz/1,)354 4327 y(retract/1,)354 4440 y(retractall/1)354 4553 y(erase/1,)354 4665 y(dynamic/1,)354 4778 y(instance/2,)354 4891 y(clause/2,)354 5004 y(clause/3,)354 5117 y(consult/1,)141 b(\045)47 b(usable)f(for)h(debugging)e(or)j (dynamic)d(code)354 5230 y(reconsult/1,)g(\045)i(they)g(override)e (compiled)h(definitions)f(!!!)1962 5493 y Fq(18)p eop 19 18 bop 354 375 a Fo(setof/3,)354 488 y(bagof/3,)354 601 y(sort/3,)354 714 y(keysort/3,)354 827 y(setarg/3,)46 b(\045)h(backtrackable)d(update)i(of)h(arg)g(I)h(of)f(term)g(T)g(with)g (new)g(term)f(X)354 1052 y(is_builtin/1)f(\045)i(lists)g(the)f (system-level)f(builtins)g(\(written)h(in)h(C\):)354 1165 y(current_predicate/1)c(\045)k(lists/checks)e(existence)g(of)i(a) 95 b(predicate/arity)354 1278 y(predicate_property/2)43 b(\045)k(lists/checks)d(if)k(a)f(property)f(\(arg)g(2\))h(is)h (associated)d(with)h(a)i(head)e(\(arg)h(1\))354 1484 y Fq(Op)s(erators)30 b(are)h(de\014ned)e(and)h(retriev)m(ed)g(with)354 1689 y Fo(:-op/3,)46 b(current_op/3.)495 1894 y Fq(Including)28 b(\014les)h(are)i(supp)s(orted.)39 b(F)-8 b(or)31 b Fo(compile/1)d Fq(use)354 2100 y Fo(:-compile\(file\).)495 2305 y Fq(or)354 2511 y Fo(:-[file].)46 b(\045)h(this)g(calls)f(the)h(compiler)e(too)i (!!!)495 2716 y Fq(F)-8 b(or)32 b(consulting)c(included)g(in)m (terpreted)i(co)s(de)g(within)e(an)i(em)m(b)s(edding)f(reconsult/1)i (use:)354 2921 y Fo(:-consult\(file\).)354 3127 y Fq(in)39 b(y)m(our)g(\(unique\))f(top-lev)m(el)i(\014le.)68 b(This)38 b(o)m(v)m(ercomes)j(the)f(limitation)d(of)j(ha)m(ving)f(only)g(one)354 3240 y(top-lev)m(el)31 b(\014le.)354 3525 y Fp(5)135 b(Source-lev)l(el)46 b(stateles)h(mo)t(dules)354 3728 y Fo(\(module\)/1)354 3841 y(current_module/1)354 3954 y(is_module/1)475 b(-)47 b(checks/generates)c(an)48 b(existing)d (module-name)354 4067 y(module_call/2,)f(':'/2)j(-)g(calls)f(a)i (predicate)d(hidden)h(in)h(a)h(module)354 4180 y(module_name/3)379 b(-)47 b(adds)g(the)g(name)f(of)h(a)h(module)e(to)h(a)h(symbol)354 4293 y(module_predicate/3)139 b(-)47 b(adds)g(the)g(name)f(of)h(a)h (module)e(to)h(a)h(goal)354 4405 y(modules/1)571 b(-)47 b(gives)f(the)h(list)g(of)g(existing)f(modules)495 4611 y Fq(The)30 b(follo)m(wing)f(example:)354 4793 y Fo(:-module)46 b(m1.)354 4905 y(:-public)g(d/1.)354 5131 y(a\(1\).)354 5244 y(a\(2\).)1962 5493 y Fq(19)p eop 20 19 bop 354 375 a Fo(a\(3\).)354 488 y(a\(4\).)354 714 y(d\(X\):-a\(X\).)354 939 y(:-module)46 b(m2.)354 1165 y(:-public)g(b/1.)354 1391 y(b\(X\):-c\(X\).)354 1617 y(c\(2\).)354 1730 y(c\(3\).)354 1843 y(c\(4\).)354 1956 y(c\(5\).)354 2069 y(c\(6\).)354 2294 y(:-module)g(m3.)354 2520 y(:-public)g(test/1.)354 2746 y(test\(X\):-b\(X\),d\(X\).)354 2972 y(:-module)g(user.)354 3198 y(go:-modules\(Ms\),write\(Ms\))o (,nl,)o(fail)o(.)354 3311 y(go:-test\(X\),write\(X\),nl,f)o(ail.)495 3498 y Fq(Executiong)31 b Fo(?-go.)e Fq(will)f(generate)j(the)g(follo)m (wing)e(output:)354 3711 y Fo([user/0,m1/0,m2/0,m3/0])354 3824 y(2)354 3937 y(3)354 4049 y(4)495 4262 y Fq(Starting)35 b(with)f(v)m(ersion)g(3.30,)39 b(predicates)34 b(in)g(the)i(BinProlog)e (system)h(itself)f(whic)m(h)g(are)354 4375 y(not)e(in)m(tended)f(to)i (b)s(e)e(used)g(b)m(y)h(applications,)f(are)h(hidden)e(in)g(the)i(mo)s (dule)f Fo(prolog)f Fq(but)h(can)354 4488 y(b)s(e)f(accessed)i(b)m(y)e (calling)f(them)h(with)f Fo('prolog:my_predicate'\(...)o(\))p Fq(.)495 4601 y(Explicit)h(naming)h(of)i(the)f(mo)s(dule)f(where)g(the) i(hidden)d(predicate)i(is)f(de\014ned)g(should)f(b)s(e)354 4714 y(used)h(when)f(call/1,)i(\014ndall/3)e(etc.)45 b(uses)31 b(a)g(hidden)e(predicate,)j(ev)m(en)g(if)e(it)h(is)f(in)g (the)i(mo)s(dule)354 4827 y(itself.)495 4939 y(This)43 b(draconian)h(constrain)m(t)h(is)e(motiv)-5 b(ated)45 b(b)m(y)g(simplicit)m(y)d(of)j(BinProlog's)f(stateless)354 5052 y(purely)f(source-lev)m(el)i(mo)s(dule)d(system.)83 b(Basically)44 b(predicates)g(in)f(a)i(mo)s(dule)e(ha)m(v)m(e)i(their) 354 5165 y(names)27 b(pre\014xed)f(as)i(in)d Fo ('my_current_module:my_pre)o(dica)o(te')c Fq(in)k(a)j(prepro)s(cessing) d(step,)1962 5493 y(20)p eop 21 20 bop 354 375 a Fq(except)34 b(if)f(they)g(are)h(declared)e Fo(public)g Fq(or)h(are)g(kno)m(wn)g(to)h(the)f(system)h(as)f(b)s(eing) f(so)h(\(i.e.)50 b(in)354 488 y(the)31 b(case)g(of)g(builtins\).)495 601 y(This)22 b(basic)h(concept)h(of)g(mo)s(dules)e(\(essen)m(tially)g (the)i(same)g(as)g(what)f(can)h(b)s(e)e(ac)m(hiev)m(ed)j(with)354 714 y Fo(extern)k Fq(and)g Fo(static)f Fq(declarations)i(in)e(C\))i(co) m(v)m(ers)i(only)d(compiled)f(co)s(de,)j(and)e(is)g(mostly)g(in-)354 827 y(tended)23 b(to)h(ensure)f(m)m(ultiple)d(name)k(spaces)f(with)f(a) i(v)m(ery)g(simple)d(seman)m(tics)i(and)g(no)g(aditional)354 939 y(space)h(or)g(time)f(o)m(v)m(erhead.)39 b(On)23 b(the)g(other)h(hand)e(use)h(of)g(linear)f(and)h(in)m(tutionistic)e (implication)354 1052 y(is)30 b(suggested)h(for)f(dynamic)f(mo)s(dular) g(and)g(h)m(yp)s(othetical)h(reasoning)g(constructs.)495 1165 y Fh(Meta-pr)-5 b(e)g(dic)g(ate)30 b Fq(declarations)d(are)h(not)f (supp)s(orted)f(at)i(this)f(time)g(\(mostly)h(b)s(ecause)f(they)354 1278 y(are)40 b(at)g(least)g(as)f(cum)m(b)s(ersome)g(as)h(just)e (puting)g(the)i(righ)m(t)f(name)g(extension)g(in)f(argumen)m(t)354 1391 y(p)s(ositions)23 b(whic)m(h)g(require)h(it)g Fo(:-\))p Fq(\),)i(but)e(they)h(migh)m(t)f(b)s(e)g(added)g(in)g(the)h(future)f (if)f(a)i(signi\014can)m(t)354 1504 y(n)m(um)m(b)s(er)k(of)i(users)e (will)f(ask)j(to)g(ha)m(v)m(e)g(them.)495 1617 y(Note)38 b(that)f(builtins)32 b(and)k(predicates)f(de\014ned)g(in)g(a)h(sp)s (ecial)f(mo)s(dule)f Fo(user)h Fq(are)i(alw)m(a)m(ys)354 1730 y(public.)g(A)26 b(public)e(predicate)h(k)m(eeps)i(its)e(name)i (unc)m(hanged)e(in)g(the)h(global)g(name)g(space)g(while)354 1843 y(hidden)38 b(predicates)i(ha)m(v)m(e)i(their)d(names)h (pre\014xed)f(b)m(y)h(the)h(name)f(of)g(the)h(mo)s(dule)d(in)h(their) 354 1956 y(de\014nitions)28 b(and)i(in)f(all)g(their)h(statically)g(ob) m(vious)f(\(\014rst-order\))i(uses.)495 2069 y(Alternativ)m(ely)-8 b(,)28 b Fo(module/2)d Fq(allo)m(ws)h(to)h(de\014ne)f(a)h(mo)s(dule)f (and)g(its)g(public)e(predicates)j(with)354 2181 y(one)k(declaration)f (as)h(in:)354 2391 y Fo(:-module\(beings,[cat/4,do)o(g/4,)o(chic)o(ken) o(/2,f)o(ish/)o(0,m)o(aple)o(/1,o)o(cto)o(pus/)o(255])o(\).)354 2677 y Fp(6)135 b(Editing,)46 b(aprop)t(os/1,)g(trace/1,)g(sp)l(y/1,)g (nosp)l(y/1)354 2880 y Fq(T)-8 b(o)31 b(edit)f(a)h(\014le)e(and)h(then) g(compile)f(it)h(use:)495 2993 y Fo(?-)48 b(edit\(,\).) 495 3106 y Fq(T)-8 b(o)31 b(edit)f(and)g(recompile)f(the)i(curren)m (tly)e(compiled)g(\014le)h(using)e(the)j Fo(emacs)e Fq(editor)h(t)m(yp) s(e:)495 3219 y Fo(?-)48 b(ed.)495 3332 y Fq(T)-8 b(o)35 b(edit)f(and)g(recompile)f(the)h(curren)m(tly)f(compiled)g(\014le)h (using)e(the)j Fo(edit)e Fq(editor)h(\(under)354 3445 y(DOS\))d(t)m(yp)s(e:)495 3558 y Fo(?-)48 b(edit.)495 3671 y Fq(T)-8 b(o)31 b(simply)d(recompile)i(the)g(last)g(\014le)g(t)m (yp)s(e:)495 3784 y Fo(?-)48 b(co.)354 3993 y Fq(The)30 b(debugger/tracer)i(uses)e(R.A.)h(O'Keefe's)h(public)c(domain)h (meta-in)m(terpreter.)42 b(Y)-8 b(ou)31 b(can)354 4106 y(mo)s(dify)e(it)h(in)f(the)h(\014le)g("extra.pl".)354 4292 y(DCG-expansion)g(is)g(supp)s(orted)e(b)m(y)i(the)h(public)d (domain)h(\014le)g(dcg.pl.)495 4405 y(T)-8 b(o)31 b(debug)f(a)h(\014le) e(t)m(yp)s(e:)354 4615 y Fo(?-)48 b(reconsult\(FileName\).)354 4824 y Fq(and)30 b(then)354 5034 y Fo(?-)48 b(trace\(Goal\).)354 5244 y Fq(F)-8 b(or)31 b(in)m(teractivit)m(y)-8 b(,)32 b(b)s(oth)d(the)i(toplev)m(el)f(and)g(the)g(debugger)h(dep)s(end)d(on) 1962 5493 y(21)p eop 22 21 bop 354 375 a Fo(?-interactive\(yes\).)354 582 y Fq(or)354 789 y Fo(?-interactive\(no\).)354 996 y Fq(My)25 b(p)s(ersonal)e(preference)h(is)g(using)f Fo(interactive\(no\))d Fq(within)i(a)i(scrollable)f(windo)m(w.)37 b(Ho)m(w-)354 1109 y(ev)m(er,)j(as)d(traditionally)d(all)i(Prologs)h(hassle)f(the)h (user)f(after)h(eac)m(h)h(answ)m(er)f(BinProlog)f(3.45)354 1222 y(will)28 b(do)i(the)h(same)g(b)m(y)f(default.)495 1335 y(If)24 b(y)m(ou)g(forget)g(the)g(name)g(of)g(some)g(builtin,)e Fo(apropos/1)f Fq(\(or)j Fo(help/1)p Fq(\))f(will)e(giv)m(e)j(y)m(ou)g (some)354 1448 y(\(\015exible)29 b(up)h(to)h(one)f(missp)s(elled)d(or)k (missing)d(letter\))j(matc)m(hes)g(with)e(their)h(arities.)495 1561 y(Y)-8 b(ou)41 b(can)f(use)g(the)g(debugger)g(to)g(debug)g (compiled)e(co)s(de)i(with)f(the)h(follo)m(wing)e(tric)m(k)i(if)354 1674 y(y)m(ou)k(alw)m(a)m(ys)g(debug)f(b)s(ottom-up)h(i.e.)80 b(if)42 b(y)m(ou)i(ensure)f(that)h(to)s(ols)g(w)m(ork)f(b)s(efore)h(to) g(using)354 1787 y(them.)53 b(F)-8 b(or)35 b(example,)h(on)e(top)h(of)f (the)h(compiled)e(\014le)g Fo(allperms.pl)f Fq(y)m(ou)j(can)f(temp)s (orarily)354 1900 y(in)m(terpret)22 b Fo(perm/2)p Fq(,)h Fo(insert/3)d Fq(etc.)39 b(to)24 b(b)s(e)e(able)g(to)h(trace)h(them)e (while)f(k)m(eeping)h(unin)m(teresting)354 2012 y(predicates)h (compiled.)37 b(By)23 b(the)g(w)m(a)m(y)-8 b(,)26 b(this)c(allo)m(ws,)i (to)f(trace/debug)h(parts)f(of)g(the)g(k)m(ernel)g(itself)354 2125 y(in)29 b(particular.)495 2238 y(The)h(follo)m(wing)f(terminal)g (session)h(sho)m(ws)g(an)g(example:)354 2421 y Fo(?-)48 b([allperms].)354 2534 y(compiling\(to\(mem\),progs/a)o(llpe)o(rms.)o (pl,)o(...\))354 2647 y(compile_time\(230\))354 2760 y(?-)g(consult\(user\).)354 2873 y(\045)g(using)e(compile/1)f(is)j (MUCH)e(faster)354 2986 y(reconsulting\(user\))354 3099 y(g0\(N\):-nats\(1,N,Ns\),perm\()o(Ns,_)o(\),fa)o(il.)354 3212 y(g0\(_\).)354 3325 y(WARNING:)g(redefining)f(compiled)g (predicate\(g0/1\))354 3438 y(perm\([],[]\).)354 3551 y(perm\([X|Xs],Zs\):-)354 3663 y(perm\(Xs,Ys\),)354 3776 y(insert\(X,Ys,Zs\).)354 4002 y(insert\(X,Ys,[X|Ys]\).)354 4115 y(insert\(X,[Y|Ys],[Y|Zs]\):-)354 4228 y(insert\(X,Ys,Zs\).)354 4341 y(WARNING:)h(redefining)f(compiled)g(predicate\(perm/2\))354 4454 y(WARNING:)h(redefining)f(compiled)g(predicate\(insert/3\))354 4567 y(reconsulted\(user,time)d(=)48 b(20\))354 4680 y(yes)354 4793 y(?-)g(interactive\(no\).)354 4905 y(yes)354 5018 y(?-)g(trace\(g0\(3\)\).)354 5131 y(Call:)f(g0\(3\))402 5244 y(Call:)f(nats\(1,3,_645\))1962 5493 y Fq(22)p eop 23 22 bop 450 375 a Fo(compiled\(nats\(1,3,_645\))o(\))402 488 y(Exit:)46 b(nats\(1,3,[1,2,3]\))402 601 y(Call:)g (perm\([1,2,3],_648\))450 714 y(Call:)g(perm\([2,3],_1095\))498 827 y(Call:)g(perm\([3],_1362\))545 939 y(Call:)h(perm\([],_1629\))545 1052 y(Exit:)g(perm\([],[]\))545 1165 y(Call:)g(insert\(3,[],_1362\)) 545 1278 y(Exit:)g(insert\(3,[],[3]\))498 1391 y(Exit:)f (perm\([3],[3]\))498 1504 y(Call:)g(insert\(2,[3],_1095\))498 1617 y(Exit:)g(insert\(2,[3],[2,3]\))450 1730 y(Exit:)g (perm\([2,3],[2,3]\))450 1843 y(Call:)g(insert\(1,[2,3],_648\))450 1956 y(Exit:)g(insert\(1,[2,3],[1,2,3]\))402 2069 y(Exit:)g (perm\([1,2,3],[1,2,3]\))402 2181 y(Call:)g(fail)450 2294 y(compiled\(fail\))402 2407 y(Fail:)g(fail)402 2520 y(Redo:)g(perm\([1,2,3],[1,2,3]\))450 2633 y(Redo:)g (insert\(1,[2,3],[1,2,3]\))498 2746 y(Call:)g(insert\(1,[3],_2683\))498 2859 y(Exit:)g(insert\(1,[3],[1,3]\))450 2972 y(Exit:)g (insert\(1,[2,3],[2,1,3]\))402 3085 y(Exit:)g(perm\([1,2,3],[2,1,3]\)) 402 3198 y(Call:)g(fail)450 3311 y(compiled\(fail\))402 3423 y(Fail:)g(fail)402 3536 y(Redo:)g(perm\([1,2,3],[2,1,3]\))450 3649 y(Redo:)g(insert\(1,[2,3],[2,1,3]\))498 3762 y(Redo:)g (insert\(1,[3],[1,3]\))545 3875 y(Call:)h(insert\(1,[],_2945\))545 3988 y(Exit:)g(insert\(1,[],[1]\))498 4101 y(Exit:)f (insert\(1,[3],[3,1]\))450 4214 y(Exit:)g(insert\(1,[2,3],[2,3,1]\))402 4327 y(Exit:)g(perm\([1,2,3],[2,3,1]\))402 4440 y(Call:)g(fail)450 4553 y(compiled\(fail\))402 4665 y(Fail:)g(fail)402 4778 y(Redo:)g(perm\([1,2,3],[2,3,1]\))450 4891 y(Redo:)g (insert\(1,[2,3],[2,3,1]\))498 5004 y(Redo:)g(insert\(1,[3],[3,1]\))545 5117 y(Redo:)h(insert\(1,[],[1]\))545 5230 y(Fail:)g (insert\(1,[],_2945\))1962 5493 y Fq(23)p eop 24 23 bop 498 375 a Fo(Fail:)46 b(insert\(1,[3],_2683\))450 488 y(Fail:)g(insert\(1,[2,3],_648\))450 601 y(Redo:)g (perm\([2,3],[2,3]\))498 714 y(Redo:)g(insert\(2,[3],[2,3]\))545 827 y(Call:)h(insert\(2,[],_2421\))545 939 y(Exit:)g (insert\(2,[],[2]\))498 1052 y(Exit:)f(insert\(2,[3],[3,2]\))450 1165 y(Exit:)g(perm\([2,3],[3,2]\))450 1278 y(Call:)g (insert\(1,[3,2],_648\))450 1391 y(Exit:)g(insert\(1,[3,2],[1,3,2]\)) 402 1504 y(Exit:)g(perm\([1,2,3],[1,3,2]\))402 1617 y(Call:)g(fail)450 1730 y(compiled\(fail\))402 1843 y(Fail:)g(fail)402 1956 y(Redo:)g(perm\([1,2,3],[1,3,2]\))450 2069 y(Redo:)g (insert\(1,[3,2],[1,3,2]\))498 2181 y(Call:)g(insert\(1,[2],_2945\))498 2294 y(Exit:)g(insert\(1,[2],[1,2]\))450 2407 y(Exit:)g (insert\(1,[3,2],[3,1,2]\))402 2520 y(Exit:)g(perm\([1,2,3],[3,1,2]\)) 402 2633 y(Call:)g(fail)450 2746 y(compiled\(fail\))402 2859 y(Fail:)g(fail)402 2972 y(Redo:)g(perm\([1,2,3],[3,1,2]\))450 3085 y(Redo:)g(insert\(1,[3,2],[3,1,2]\))498 3198 y(Redo:)g (insert\(1,[2],[1,2]\))545 3311 y(Call:)h(insert\(1,[],_3207\))545 3423 y(Exit:)g(insert\(1,[],[1]\))498 3536 y(Exit:)f (insert\(1,[2],[2,1]\))450 3649 y(Exit:)g(insert\(1,[3,2],[3,2,1]\))402 3762 y(Exit:)g(perm\([1,2,3],[3,2,1]\))402 3875 y(Call:)g(fail)450 3988 y(compiled\(fail\))402 4101 y(Fail:)g(fail)402 4214 y(Redo:)g(perm\([1,2,3],[3,2,1]\))450 4327 y(Redo:)g (insert\(1,[3,2],[3,2,1]\))498 4440 y(Redo:)g(insert\(1,[2],[2,1]\))545 4553 y(Redo:)h(insert\(1,[],[1]\))545 4665 y(Fail:)g (insert\(1,[],_3207\))498 4778 y(Fail:)f(insert\(1,[2],_2945\))450 4891 y(Fail:)g(insert\(1,[3,2],_648\))450 5004 y(Redo:)g (perm\([2,3],[3,2]\))498 5117 y(Redo:)g(insert\(2,[3],[3,2]\))545 5230 y(Redo:)h(insert\(2,[],[2]\))1962 5493 y Fq(24)p eop 25 24 bop 545 375 a Fo(Fail:)47 b(insert\(2,[],_2421\))498 488 y(Fail:)f(insert\(2,[3],_1095\))498 601 y(Redo:)g(perm\([3],[3]\)) 545 714 y(Redo:)h(insert\(3,[],[3]\))545 827 y(Fail:)g (insert\(3,[],_1362\))545 939 y(Redo:)g(perm\([],[]\))545 1052 y(Fail:)g(perm\([],_1629\))498 1165 y(Fail:)f(perm\([3],_1362\)) 450 1278 y(Fail:)g(perm\([2,3],_1095\))402 1391 y(Fail:)g (perm\([1,2,3],_648\))402 1504 y(Redo:)g(nats\(1,3,[1,2,3]\))402 1617 y(Fail:)g(nats\(1,3,_645\))354 1730 y(Exit:)h(g0\(3\))495 1907 y Fq(Starting)26 b(with)e(v)m(ersion)h(3.08)i(sp)m(y/1)g(and)e (nosp)m(y/1)h(allo)m(w)f(to)h(w)m(atc)m(h)h(en)m(try)f(and)f(exit)h (from)354 2020 y(compiled)g(predicates.)39 b(Note)29 b(that)e(they)h(should)d(b)s(e)h(in)g(the)h(\014le)g(to)g(b)s(e)g (compiled,)f(b)s(efore)h(an)m(y)354 2133 y(use)j(of)h(the)g(predicate)f (to)h(b)s(e)f(spied)e(on)j(as)f(in:)354 2333 y Fo(\045)48 b(FILE:)e(jbond.pl)354 2446 y(:-spy)h(a/1.)354 2559 y(:-spy)g(c/1.)354 2785 y(b\(X\):-a\(X\),c\(X\).)354 3011 y(a\(1\).)354 3124 y(a\(2\).)354 3349 y(c\(2\).)354 3462 y(c\(3\).)354 3662 y Fq(This)29 b(giv)m(es)i(the)f(follo)m(wing)f(in)m(teraction:)354 3849 y Fd(?-[jbond].)354 3949 y(......)354 4049 y(?-)43 b(b\(X\).)354 4248 y(Call:)f(a\(_2158\))e(:) f(;)398 4348 y(!!!)k(compiled\(a/1\))354 4447 y(Exit:)g(a\(1\))354 4547 y(Call:)g(c\(1\))g(:)h(;)398 4646 y(!!!)j(compiled\(c/1\))354 4746 y(Fail:)g(c\(1\))354 4846 y(Redo:)g(a\(1\))354 4945 y(Exit:)g(a\(2\))354 5045 y(Call:)g(c\(2\))g(:)h(;)398 5145 y(!!!)j(compiled\(c/1\))354 5244 y(Exit:)g(c\(2\))1962 5493 y Fq(25)p eop 26 25 bop 354 375 a Fd(X=2;)354 574 y(Redo:)42 b(c\(2\))354 674 y(Fail:)g(c\(2\))354 773 y(Redo:)g(a\(2\))354 873 y(Fail:)g(a\(_2158\))354 973 y(no)354 1185 y Fq(Although)24 b(these)h(are)g(v)m(ery)g(basic)f(debugging)f(facilities)g(y)m(ou)i (can)f(enhance)h(them)f(at)i(y)m(our)e(will)354 1298 y(and)k(with)f(some)h(discipline)c(in)j(programming)g(they)h(ma)m(y)h (b)s(e)e(all)g(y)m(ou)i(really)e(need.)40 b(An)m(yw)m(a)m(y)-8 b(,)354 1411 y(future)27 b(of)h(debugging)f(is)g(de\014nitely)f(not)i (b)m(y)f(tracing.)40 b(One)28 b(thing)e(is)h(to)i(ha)m(v)m(e)g (stronger)f(static)354 1524 y(c)m(hec)m(king.)59 b(In)35 b(dynamic)g(debugging)g(the)i(w)m(a)m(y)g(go)f(is)g(to)g(ha)m(v)m(e)i (a)e(database)h(of)f(trace-ev)m(en)m(ts)354 1637 y(and)28 b(then)g(query)f(it)h(with)e(high)h(lev)m(el)h(to)s(ols.)40 b(W)-8 b(e)29 b(plan)e(to)h(add)g(some)g(non-tracing)g(database-)354 1750 y(orien)m(ted)j(debugging)e(facilities)g(in)g(the)h(future.)354 1962 y(Y)-8 b(ou)31 b(can)g(generate)h(a)f(kind)d(of)j(in)m(termediate) f(W)-10 b(AM-assem)m(bler)31 b(b)m(y)450 2175 y Fo(?-)47 b(compile\(asm,[file1,file2)o(,...)o(],')o(huge)o(_fil)o(e.a)o(sm'\))o (.)354 2387 y Fq(A)28 b(con)m(v)m(enien)m(t)h(w)m(a)m(y)f(to)h(see)f (in)m(teractiv)m(ely)f(the)h(sequence)g(of)g(program)f(transformations) g(Bin-)354 2500 y(Prolog)k(is)e(based)h(on)g(is:)354 2713 y Fo(?-)48 b(asm.)354 2826 y(a-->b,c,d.)354 2939 y(^D)354 3164 y(DEFINITE:)354 3277 y(a\(A,B\))e(:-)736 3390 y(b\(A,C\),)736 3503 y(c\(C,D\),)736 3616 y(d\(D,B\).)354 3842 y(BINARY:)354 3955 y(a\(A,B,C\))g(:-)736 4068 y (b\(A,D,c\(D,E,d\(E,B,C\)\)\).)354 4294 y(WAM-ASSEMBLER:)354 4406 y(clause_?)g(a,3)354 4519 y(firstarg_?)f(_/0,6)354 4632 y(put_structure)g(d/3,var\(4-4/11,1/2\))354 4745 y(write_variable)f(put,var\(5-5/10,1/2\))354 4858 y(write_value)h (put,var\(2-2/6,2/2\))354 4971 y(write_value)g(put,var\(3-3/7,2/2\))354 5084 y(put_structure)g(c/3,var\(3-8/14,1/2\))354 5197 y(write_variable)f(put,var\(2-9/13,1/2\))1962 5493 y Fq(26)p eop 27 26 bop 354 375 a Fo(write_value)45 b(put,var\(5-5/10,2/2\))354 488 y(write_value)g(put,var\(4-4/11,2/2\))354 601 y(execute_?)h(b,3)354 887 y Fp(7)135 b(Compiling)46 b(to)g(C)354 1090 y Fq(P)m(artial)32 b(C-i\014cation)f([18)r(])h(is)f(a)i(translation)e(framew)m(ork)h(whic) m(h)f(`do)s(es)h(less)f(instead)h(of)g(doing)354 1203 y(more')f(to)g(impro)m(v)m(e)f(p)s(erformance)g(of)h(em)m(ulators)f (close)h(to)g(nativ)m(e)g(co)s(de)f(systems.)495 1316 y(Starting)37 b(from)f(an)h(em)m(ulator)g(for)f(a)i(language)f(L)g (written)e(in)h(C,)h(w)m(e)g(translate)g(to)h(C)e(a)354 1429 y(subset)25 b(of)g(its)g(instruction)e(set)j(\(usually)d(frequen)m (t)i(and)g(\014ne-grained)f(instructions)f(whic)m(h)h(are)354 1542 y(executed)29 b(in)e(con)m(tiguous)h(sequences\))g(and)g(then)f (simply)f(use)h(a)i(compiler)d(for)i(C)f(to)i(generate)354 1655 y(a)i(unique)e(executable)i(program.)495 1768 y(A)36 b(translation)f(threshold)f(allo)m(ws)h(the)h(programmer)g(to)g (empirically)d(\014ne-tune)i(the)h(C-)354 1880 y(i\014cation)20 b(pro)s(cess)h(b)m(y)g(c)m(ho)s(osing)g(the)g(length)f(of)i(the)f(em)m (ulator)g(instruction)e(sequence,)24 b(starting)354 1993 y(from)29 b(whic)m(h,)f(translation)f(is)h(enabled.)39 b(The)29 b(pro)s(cess)f(uses)g(a)h(reasonable)g(default)f(v)-5 b(alue)28 b(and)354 2106 y(can)j(b)s(e)f(easily)f(con)m(trolled)h(b)m (y)g(the)h(programmer)354 2319 y Fo(:-set_c_threshold\(Min,Max)o(\).) 495 2531 y Fq(will)k(ensure)i(that)h(only)e(em)m(ulated)h(sequences)h (of)f(length)g(b)s(et)m(w)m(een)h(Min)e(and)h(Max)h(get)354 2644 y(translated)30 b(to)h(C.)g(This)d(allo)m(ws)i(to)h(handle)e (gracefully)g(the)i(size/sp)s(eed)f(tradeo\013.)495 2757 y(Comm)m(unication)e(b)s(et)m(w)m(een)i(the)f(run-time)e(system)j (\(still)d(under)g(the)i(con)m(trol)h(of)f(the)g(em-)354 2870 y(ulator\))i(and)e(the)i(C-i\014ed)e(c)m(h)m(unks)h(is)f(handled)g (as)h(follo)m(ws.)495 2983 y(The)25 b(em)m(ulated)h(co)s(de)g(represen) m(tation)f(of)h(a)g(giv)m(en)f(program)h(\(in)e(particular)g(the)i (compiler)354 3096 y(itself)7 b(\))45 b(is)g(mapp)s(ed)f(to)i(a)g(C)f (data)h(structure)f(whic)m(h)f(allo)m(ws)h(exc)m(hange)i(of)e(sym)m(b)s (ol)f(table)354 3209 y(information)29 b(at)i(link)d(time.)495 3322 y(T)-8 b(o)35 b(b)s(e)f(able)g(to)i(call)e(a)g(C-routine)g(from)g (the)h(em)m(ulator)f(w)m(e)h(ha)m(v)m(e)h(to)g(kno)m(w)e(its)g (address.)354 3435 y(Unfortunately)-8 b(,)39 b(the)d(link)m(er)f(is)h (the)h(only)f(one)h(that)g(kno)m(ws)g(the)f(ev)m(en)m(tual)i(address)e (of)g(a)h(C-)354 3548 y(routine.)54 b(A)35 b(simple)e(and)i(fully)d(p)s (ortable)i(tec)m(hnique)h(to)h(plug)d(the)j(address)e(of)h(a)g (C-routine)354 3660 y(in)m(to)k(the)g(b)m(yte)h(co)s(de)f(is)f(to)i (C-ify)d(the)j(b)m(yte-co)s(de)g(of)f(the)g(em)m(ulator)g(in)m(to)g(a)g (h)m(uge)g(C)g(arra)m(y)354 3773 y(of)k(records,)i(con)m(taining)d(the) g(sym)m(b)s(olic)e(address)i(of)g(the)g(C-c)m(h)m(unks.)76 b(After)43 b(compilation,)354 3886 y(and)33 b(linking)c(with)j(the)h (em)m(ulator,)h(the)f(link)m(er)e(will)f(automatically)j(resolv)m(e)g (all)e(the)i(missing)354 3999 y(addresses)d(and)g(generate)i(w)m (arnings)d(for)h(the)h(missing)d(C-routines.)495 4112 y(This)42 b(is)h(compiled)f(together)j(with)d(the)i(C-co)s(de)g(of)f (the)h(em)m(ulator)g(to)g(a)g(stand)f(alone)354 4225 y(executable)33 b(with)e(p)s(erformance)g(in)f(the)j(range)f(b)s(et)m (w)m(een)h(pure)d(em)m(ulators)i(and)g(nativ)m(e)g(co)s(de)354 4338 y(implemen)m(tations.)495 4451 y(The)45 b(metho)s(d)f(ensures)f(a) i(strong)g(op)s(erational)f(equiv)-5 b(alence)44 b(b)s(et)m(w)m(een)h (em)m(ulated)g(and)354 4564 y(translated)30 b(co)s(de)h(whic)m(h)e (share)h(exactly)h(the)g(same)g(observ)-5 b(ables)29 b(in)g(the)i(run-time)e(system.)495 4677 y(An)38 b(imp)s(ortan)m(t)g(c) m(haracteristic)h(is)e(easy)i(debugging)f(of)g(the)h(resulting)d (compiler,)j(com-)354 4790 y(ing)f(from)g(the)h(full)d(sharing)h(of)i (the)f(run-time)g(system)g(b)s(et)m(w)m(een)h(em)m(ulated)g(and)f (compiled)354 4902 y(co)s(de)43 b(and)f(the)h(follo)m(wing)e(prop)s (ert)m(y)h(w)m(e)h(call)f Fh(instruction-level)i(c)-5 b(omp)g(ositionality)p Fq(:)69 b(if)42 b(ev-)354 5015 y(ery)32 b(translated)f(instruction)e(has)j(the)f(same)h(observ)-5 b(able)31 b(e\013ect)i(on)e(a)h(\(small\))f(subset)g(of)g(the)354 5128 y(program)38 b(state)h(\(registers)f(and)f(a)h(few)g(data)g (areas\))h(in)d(em)m(ulated)i(and)f(translated)h(mo)s(de,)1962 5493 y(27)p eop 28 27 bop 354 375 a Fq(then)34 b(arbitrary)e(sequences)i(of)g(em)m (ulated)g(and)f(translated)g(instructions)f(are)i(op)s(erationally)354 488 y(equiv)-5 b(alen)m(t.)495 601 y(Curren)m(tly)24 b(C-i\014cation)f(co)m(v)m(ers)k(term)e(creation)g(on)f(the)h(heap)g (and)f(frequen)m(tly)g(used)g(inline)354 714 y(op)s(erations)30 b(whic)m(h)f(can)h(b)s(e)g(pro)s(cessed)g(in)f(Binary)g(Prolog)h(b)s (efore)g(calling)f(the)h(`real)h(goal')g(in)354 827 y(the)g(b)s(o)s(dy) -8 b(.)495 939 y(Ch)m(unks)30 b(con)m(taining)g(small)f(built-ins)f (that)j(do)g(not)g(require)e(a)i(pro)s(cedure)f(call)g(will)e(gen-)354 1052 y(erate)k(`leaf-routines')e(in)f(C)h(\(whic)m(h)f(are)i(called)f (e\016cen)m(tly)g(and)g(do)g(not)h(use)f(stac)m(k)i(space\).)495 1165 y(On)c(the)g(other)h(hand)e(large)h(built-ins)d(implemen)m(ted)i (as)h(macros)h(in)e(the)h(em)m(ulator)h(w)m(ould)354 1278 y(mak)m(e)35 b(co)s(de)f(size)f(explo)s(de.)49 b(Implemen)m(ting) 32 b(them)i(as)g(functions)e(to)i(b)s(e)f(called)g(from)g(the)g(C-)354 1391 y(c)m(h)m(unk)24 b(w)m(ould)e(require)h(co)s(de)g(duplication)f (and)h(it)g(w)m(ould)f(destro)m(y)i(the)g(leaf-routine)f(discipline)354 1504 y(whic)m(h)43 b(is)f(particularly)g(rew)m(arding)g(on)i(Sparcs.)80 b(W)-8 b(e)45 b(ha)m(v)m(e)f(c)m(hosen)h(to)f(implemen)m(t)e(them)354 1617 y(through)e(an)g(abstraction)g(with)f(a)i(coroutining)e(\015a)m(v) m(or:)61 b Fh(anti-c)-5 b(al)5 b(ls)p Fq(.)71 b(Note)41 b(that)g(calling)e(a)354 1730 y(built-in)28 b(from)h(a)i(C-c)m(h)m(unk) f(is)g(op)s(erationally)f(equiv)-5 b(alen)m(t)29 b(to)i(the)g(follo)m (wing)e(sequence:)491 1942 y Fj(\017)46 b Fq(return)29 b(from)h(the)g(c)m(h)m(unk,)491 2130 y Fj(\017)46 b Fq(execute)31 b(the)g(built-in)c(in)i(the)i(em)m(ulator)f(\(usually)f(a)i(macro\),) 491 2318 y Fj(\017)46 b Fq(call)29 b(a)i(new)f(leaf-routine)f(to)i (resume)f(the)g(w)m(ork)h(left)f(from)g(the)g(previous)f(leaf-routine.) 495 2530 y(Ov)m(erall,)k(an)m(ti-calls)f(can)h(b)s(e)f(seen)g(as)h (form)f(of)h(coroutining)e(\(jumping)g(bac)m(k)i(and)f(forth\))354 2643 y(b)s(et)m(w)m(een)g(nativ)m(e)g(and)e(em)m(ulated)i(co)s(de.)43 b(An)m(ti-calls)30 b(can)i(b)s(e)f(implemen)m(ted)e(with)h(the)i (direct-)354 2756 y(jump)21 b(tec)m(hnique)g(ev)m(en)i(more)f (e\016cien)m(tly)-8 b(,)24 b(although)d(for)h(p)s(ortabilit)m(y)d (reasons)j(w)m(e)h(ha)m(v)m(e)g(c)m(hosen)354 2869 y(a)42 b(con)m(v)m(en)m(tional)g(return/call)f(sequence,)j(whic)m(h)d(is)f (still)f(fairly)h(e\016cien)m(t)i(as)g(a)g(return/call)354 2982 y(costs)c(the)g(same)f(as)g(a)h(call/return.)60 b(Moreo)m(v)m(er,)41 b(this)36 b(allo)m(ws)g(the)i(c)m(h)m(unks)e(to)i (remain)e(leaf-)354 3095 y(routines,)c(while)f(delegating)h(o)m(v)m (er\015o)m(w)i(and)e(signal)f(handling)f(to)j(the)g(em)m(ulator.)47 b(Note)34 b(that)354 3208 y(excessiv)m(ely)27 b(small)e(c)m(h)m(unks)h (created)i(as)f(result)e(of)i(an)m(ti-calls)f(are)h(remo)m(v)m(ed)g(b)m (y)g(an)f(optimizing)354 3321 y(step)i(of)f(the)h(compiler)e(with)g (the)h(net)h(result)e(that)i(suc)m(h)f(co)s(de)h(will)c(b)s(e)j (completely)g(left)g(to)h(the)354 3433 y(em)m(ulator.)62 b(This)35 b(is)i(of)g(course)h Fh(mor)-5 b(e)40 b(c)-5 b(omp)g(act)39 b Fq(and)e(pro)m(v)-5 b(able)37 b(to)h(b)s(e)f Fh(not)i(slower)g Fq(than)e(its)354 3546 y(fully)28 b(C-expanded)i (alternativ)m(e.)354 3790 y Fi(7.1)113 b(P)m(erformance)37 b(of)g(C-i\014ed)h(co)s(de)354 3961 y Fq(The)g(sp)s(eed-up)e(clearly)h (dep)s(ends)f(on)i(the)g(amoun)m(t)g(of)g(C-i\014cation)f(and)h(on)f (the)i(statistical)354 4074 y(imp)s(ortance)31 b(of)i(C-i\014ed)d(co)s (de)i(in)f(the)h(execution)g(pro\014le)f(of)h(a)g(program)g(\(see)h (\014gure)e(1\).)46 b(W)-8 b(e)354 4187 y(ha)m(v)m(e)33 b(noticed)f(b)s(et)m(w)m(een)h(10-20\045)g(sp)s(eed)e(increase)h(for)g (programs)f(whic)m(h)g(tak)m(e)i(adv)-5 b(an)m(tage)34 b(of)354 4300 y(C-i\014ed)e(co)s(de)h(mo)s(derately)-8 b(,)34 b(As)g(these)f(programs)g(sp)s(end)e(only)h(20-30\045)j(of)f (their)e(time)h(in)e(C-)354 4413 y(i\014ed)d(sequences)h(p)s (erformances)g(are)g(exp)s(ected)h(to)g(scale)f(corresp)s(ondingly)e (when)h(w)m(e)h(extend)354 4526 y(this)21 b(approac)m(h)i(to)g(the)f (full)e(BinProlog)h(instruction)f(set)j(and)e(implemen)m(t)g(lo)m (w-lev)m(el)h(gcc)h(direct)354 4639 y(jumps)29 b(instead)h(of)g (function)f(calls)h(and)g(an)m(ti-calls.)495 4752 y(Co)s(de-sizes)d (for)h(C-i\014ed)e(BinProlog)g(executables)i(\(dynamically)e(link)m(ed) g(on)h(Sparcs)g(with)354 4865 y(Solaris)d(2.3\))i(are)g(usually)c(ev)m (en)k(smaller)d(than)i(`compact')i(Sicstus)d(co)s(de)h(whic)m(h)f(uses) g(classical)354 4978 y(instruction)29 b(folding)f(\(a)j(few)f(h)m (undreds)f(of)h(op)s(co)s(des\))g(to)i(sp)s(eed-up)c(the)j(em)m (ulator.)495 5090 y(The)20 b(follo)m(wing)f(table)h(sho)m(ws)g(some)h (co)s(de-size/execution-sp)s(eed)g(v)-5 b(ariations)19 b(with)g(resp)s(ect)354 5203 y(to)40 b(the)g(threshold)e(for)h(the)g (semi-ring)f(\()p Fo(SEMI3)p Fq(\))h(b)s(enc)m(hmark.)66 b(Clearly)-8 b(,)41 b(excessiv)m(ely)f(small)1962 5493 y(28)p eop 29 28 bop 953 387 2110 4 v 953 403 V 951 516 4 113 v 1003 482 a Fh(Bmark/Compiler)p 1726 516 V 102 w Fq(emBP)p 2068 516 V 100 w(C-BP)p 2390 516 V 100 w(emSP)p 2718 516 V 99 w(natSP)p 3061 516 V 953 519 2110 4 v 953 536 V 951 649 4 113 v 968 649 V 1019 615 a(NREV)31 b(\(KLIPS\))p 1709 649 V 1726 649 V 224 w(445)p 2068 649 V 171 w(455)p 2373 649 V 2390 649 V 209 w(412)p 2718 649 V 192 w(882)p 3045 649 V 3062 649 V 953 652 2110 4 v 951 765 4 113 v 968 765 V 1019 731 a(CAL)f(\(ms\))p 1709 765 V 1726 765 V 461 w(490)p 2068 765 V 171 w(310)p 2373 765 V 2390 765 V 209 w(590)p 2718 765 V 192 w(310)p 3045 765 V 3062 765 V 953 768 2110 4 v 951 881 4 113 v 968 881 V 1019 847 a(FIBO)h(\(ms\))p 1709 881 V 1726 881 V 379 w(1730)p 2068 881 V 125 w(1320)p 2373 881 V 2390 881 V 165 w(1400)p 2718 881 V 192 w(800)p 3045 881 V 3062 881 V 953 885 2110 4 v 951 998 4 113 v 968 998 V 1019 964 a(T)-8 b(AK)31 b(\(ms\))p 1709 998 V 1726 998 V 454 w(610)p 2068 998 V 171 w(470)p 2373 998 V 2390 998 V 209 w(400)p 2718 998 V 192 w(180)p 3045 998 V 3062 998 V 953 1001 2110 4 v 951 1114 4 113 v 968 1114 V 1019 1080 a(SEMI3)g(\(ms\))p 1709 1114 V 1726 1114 V 332 w(1810)p 2068 1114 V 125 w(1410)p 2373 1114 V 2390 1114 V 165 w(1810)p 2718 1114 V 147 w(1310)p 3045 1114 V 3062 1114 V 953 1117 2110 4 v 951 1230 4 113 v 968 1230 V 1019 1196 a(QUEENS)f(\(ms\))p 1709 1230 V 1726 1230 V 225 w(3170)p 2068 1230 V 125 w(2220)p 2373 1230 V 2390 1230 V 165 w(2840)p 2718 1230 V 147 w(1070)p 3045 1230 V 3062 1230 V 953 1233 2110 4 v 953 1250 V 953 1267 V 354 1476 a(Figure)41 b(1:)62 b(P)m(erformance)42 b(of)f(em)m(ulated)g(\(emBP\))h(and)e(partially)f (C-i\014ed)h(BinProlog)g(3.22)354 1589 y(\(C-BP\))27 b(compared)e(to)i(em)m(ulated)e(\(emSP\))h(and)f(nativ)m(e)h(\(natSP\)) g(SICStus)e(2.1)p 3147 1589 28 4 v 34 w(9)h(on)h(a)g(Sparc)354 1702 y(10/20\).)354 2065 y(c)m(h)m(unks)34 b(can)h(in\015uence)d(adv)m (ersely)i(not)h(only)e(on)h(size)g(but)f(also)h(on)h(sp)s(eed.)51 b(Something)33 b(lik)m(e)354 2178 y(threshold=20,)d(lo)s(oks)g(lik)m(e) f(a)i(practical)f(optim)m(um)g(for)g(this)f(program.)354 2352 y Fd(threshold:)127 b(0)174 b(4)g(8)g(20)86 b(30)g(1000)42 b(emBP)g(emSP)g(natSP)354 2452 y(size:)85 b(\(K\))h(34.5)42 b(32.2)g(29.9)g(16.3)g(13.1)g(12.9)86 b(4.8)42 b(22.0)g(31.9)354 2551 y(speed:)f(\(ms\))h(1480)g(1430)g(1440)g(1450)g(1810)g(1790)g (1800)g(1810)g(1310)354 2834 y Fp(8)135 b(The)45 b(Blac)l(kb)t(oard)354 3037 y Fq(A)d(new)e(in)m(terface)i(has)f(b)s(een)f(added)h(to)h (separate)g(bac)m(ktrac)m(k)-5 b(able)42 b(and)f(surviving)d(uses)j(of) 354 3150 y(blac)m(kb)s(oard)31 b(ob)5 b(jects)33 b(so)f(this)e (primitiv)m(e)g(and)h(the)h(def/3,)h(set/3,)h(rm/2)e(of)g(previous)e(v) m(ersion)354 3262 y(although)g(still)e(a)m(v)-5 b(ailable)30 b(should)f(b)s(e)g(replaced)h(either)g(with:)491 3450 y Fj(\017)46 b Fq(global)29 b(logical)h(v)-5 b(ariables)491 3629 y Fj(\017)46 b Fq(garbage-collectible)30 b(p)s(ermanen)m(t)g(ob)5 b(jects.)354 3869 y Fi(8.1)113 b(Global)36 b(logical)f(v)-6 b(ariables)354 4040 y Fo(Syntax:)39 b(A#B:=:X)p Fq(,)28 b(or)j Fo(lval\(A,B,X\).)354 4228 y Fq(where)g(X)h(is)e(an)m(y)i(term)f (on)h(the)f(heap.)44 b(It)31 b(has)h(simply)d(a)i(global)g(name)h Fo(A#B)e Fq(i.e.)44 b(an)31 b(en)m(try)h(in)354 4341 y(the)h(hashing)d(table)i(with)f(k)m(eys)i(A)f(and)g(B.)h(The)f (address)f(in)g(the)h(table)g(\(C-p)s(oin)m(ters)g(are)g(the)354 4454 y(same)k(as)f(logical)g(v)-5 b(ariables)33 b(in)h(BinProlog\))h (is)f(trailed)g(suc)m(h)g(that)i(on)f(bac)m(ktrac)m(king)h(it)f(will) 354 4567 y(b)s(e)30 b(un)m(b)s(ound)e(\(i.e.)42 b(p)s(oin)m(t)30 b(to)h(itself)7 b(\).)41 b(Uni\014cation)29 b(with)h Fo(A#B:=:Y)e Fq(is)i(p)s(ossible)e(at)j(an)m(y)g(p)s(oin)m(t)354 4680 y(in)e(the)i(program)f(whic)m(h)f(kno)m(ws)h(the)h(`name')g Fo(A#B)p Fq(.)495 4793 y(Although)f(a)i(global)e(logical)g(v)-5 b(ariable)30 b(cannot)h(b)s(e)f(c)m(hanged)i(it)e(can)h(b)s(e)g (further)e(instan)m(ti-)354 4905 y(ated)35 b(as)g(it)f(happ)s(ens)e(to) j(ordinary)e(Prolog)h(terms.)52 b(Bac)m(ktrac)m(king)37 b(ensures)c(they)h(v)-5 b(anish)33 b(so)354 5018 y(that)e(no)g(unsafe)e (reference)i(can)g(b)s(e)f(made)g(to)h(them.)495 5131 y(The)25 b(program)g(lq8.pl)e(is)h(an)h(e\016cien)m(t)h(8-queens)f (program)g(using)e(global)h(logical)h(v)-5 b(ariables)354 5244 y(to)31 b(sim)m(ulate)f(the)h(c)m(hess-b)s(oard.)1962 5493 y(29)p eop 30 29 bop 354 375 a Fi(8.2)113 b(Garbage-collectible)35 b(p)s(ermanen)m(t)j(ob)6 b(jects.)354 547 y Fq(On)32 b(the)h(other)f(hand,)h(if)e Fo(bb)p 1349 547 29 4 v 34 w(def/3)g Fq(or)i Fo(bb)p 1864 547 V 33 w(set/3)f Fq(is)f(used)h(to)h(name)g(ob)5 b(jects)33 b(on)f(the)h(blac)m(k-)354 659 y(b)s(oard,)e(they)h("surviv)m(e")g(bac)m(ktrac)m(king)g(and)f(can) h(afterw)m(ards)g(b)s(e)f(retriev)m(ed)g(as)h(logical)f(v)-5 b(ari-)354 772 y(ables)30 b(using)f Fo(bb_val/3)p Fq(.)354 985 y Fo(bb_def/3)189 b(\(i,i,i\))46 b(defines)g(a)h(value)354 1098 y(bb_set/3)189 b(\(i,i,i\))46 b(updates)g(a)h(value)354 1211 y(bb_rm/2)237 b(\(i,i\))46 b(removes)g(a)i(value)354 1324 y(bb_val/3)189 b(\(i,i,o\))46 b(retrieves)f(the)i(value)495 1536 y Fq(They)33 b(are)g(quite)f(close)h(to)g(the)g Fo(recorda/recordz)c Fq(family)i(of)h(other)h(Prologs)g(although)354 1649 y(they)24 b(o\013er)g(b)s(etter)g(2-k)m(ey)h(indexing,)e(are)h (simpler)d(and)i(can)h(b)s(e)f(used)g(to)h(do)g(m)m(uc)m(h)g(more)f (things)354 1762 y(e\016cien)m(tly)-8 b(.)495 1875 y(Y)g(ou)23 b(can)g(lo)s(ok)e(to)i(the)g(program)f Fo(progs/knight.pl)c Fq(on)k(ho)m(w)g(to)h(use)f(them)g(to)h(implemen)m(t)354 1988 y(in)29 b(a)i(con)m(v)m(enien)m(t)h(and)d(e\016cien)m(t)i(w)m(a)m (y)h(programs)e(with)f(bac)m(ktrac)m(k)-5 b(able)32 b(global)d(arra)m (ys.)495 2101 y(They)24 b(can)h(b)s(e)e(used)h(to)h(sa)m(v)m(e)g (information)e(that)i(surviv)m(es)e(bac)m(ktrac)m(king)i(in)e(a)i(w)m (a)m(y)g(similar)354 2214 y(to)f(other)f(Prolog's)f Fo(assert)f Fq(and)h Fo(retract)f Fq(and)h(are)h(safe)g(with)f(resp)s(ect)g(to)i (garbage)g(collection)354 2326 y(of)31 b(the)f(blac)m(kb)s(oard.)495 2439 y(The)35 b(predicate)g Fo(bb)p 1188 2439 V 34 w(list/1)f Fq(giv)m(es)h(the)h(con)m(ten)m(t)h(of)e(the)h(blac)m(kb)s(oard)e(as)i (a)f(heap)g(ob)5 b(ject)354 2552 y(\(list\),)30 b(while)f Fo(bb/0)g Fq(simply)f(prin)m(ts)h(it)h(out.)495 2665 y(These)25 b(predicates)f(o\013er)h(generally)f(faster)i(and)e(more)h (\015exible)d(managemen)m(t)27 b(of)e(dynamic)354 2778 y(state)32 b(information)d(than)h(other)g(Prolog's)h(dynamic)e (databases.)354 3022 y Fi(8.3)113 b(Assert)37 b(and)h(retract)354 3193 y Fq(F)-8 b(or)44 b(compatibilit)m(y)c(reasons)j(BinProlog)f(has)g (them,)k(implemen)m(ted)41 b(on)h(top)h(of)f(the)h(more)354 3306 y(e\016cien)m(t)31 b(blac)m(kb)s(oard)f(manipulation)d(builtins.) 495 3419 y(This)20 b(is)g(an)h(appro)m(ximation)f(of)i(other)f(Prologs) g(assert)h(and)e(retract)i(predicates.)38 b(It)21 b(tries)g(to)354 3532 y(b)s(e)g(close)g(to)g(Sicstus)f(and)g(Quin)m(tus)f(with)h(their)g (seman)m(tics.)38 b(F)-8 b(or)21 b(e\016ciency)g(and)g(programming)354 3645 y(st)m(yle)31 b(reasons)f(I)h(strongly)e(suggest)i(not)g(to)g(use) f(them)h(to)s(o)g(m)m(uc)m(h.)495 3758 y(If)46 b(y)m(ou)f(w)m(an)m(t)i (maximal)d(e\016ciency)i(use)f Fo(bb_def/3,)g(bb_set/3,)h(bb_val/3,)f (bb_rm)354 3871 y Fq(They)35 b(giv)m(e)g(y)m(ou)g(access)h(to)g(a)f(v)m (ery)g(fast)g(hashing)e(table)i Fo(-->)44 b(value)p Fq(,)35 b(the)g(same)354 3984 y(that)f(BinProlog)f(uses)g(in)m (ternally)f(for)h(indexing)f(b)m(y)h(predicate)g(and)g(\014rst)g (argumen)m(t.)51 b(They)354 4096 y(are)31 b(close)g(to)g(other)g (Prolog's)f(`record')h(family)-8 b(,)29 b(except)j(that)f(they)f(do)g (ev)m(en)h(less.)495 4209 y(T)-8 b(o)40 b(use)g(dynamic)e(predicates)h (it)g(is)f(a)i(go)s(o)s(d)g(idea)f(to)h(declare)f(them)h(with)e Fo(dynamic/1)354 4322 y Fq(although)e(asserts)g(will)d(no)m(w)j(b)s(e)f (accepted)j(ev)m(en)e(without)f(suc)m(h)h(a)g(declaration.)57 b(T)-8 b(o)36 b(de\014ne)354 4435 y(dynamic)29 b(co)s(de)i(in)e(a)i (\014le)e(y)m(ou)i(compile,)f(dynamic)f(declarations)h(are)g(mandatory) -8 b(.)495 4548 y(T)g(o)31 b(activ)-5 b(ate)32 b(an)e(asserted)h (predicate)f(it)g(is)g(a)g(go)s(o)s(d)h(idea)f(to)h(alw)m(a)m(y)g(call) e(it)h(with)354 4761 y Fo(?-metacall\(Goal\).)354 4973 y Fq(instead)g(of)354 5186 y Fo(?-)48 b(Goal.)1962 5493 y Fq(30)p eop 31 30 bop 495 375 a Fq(Ho)m(w)m(ev)m(er,)35 b(this)c(is)g(not)h(a)g (strong)g(requiremen)m(t)f(an)m(ymore,)i(as)f(an)g(imp)s(ortan)m(t)f(n) m(um)m(b)s(er)f(of)354 488 y(users)g(w)m(ere)h(unhapp)m(y)d(with)i (this)f(restriction.)495 601 y(The)h(dynamic)f(predicates)i(are:)354 813 y Fo(assert/1)354 926 y(asserta/1)354 1039 y(assertz/1)354 1265 y(retract/1)354 1378 y(clause/2)354 1491 y(metacall/1)354 1604 y(abolish/2)495 1816 y Fq(Y)-8 b(ou)32 b(can)g(easily)f(add)g (others)g(or)h(impro)m(v)m(e)f(them)g(b)m(y)h(lo)s(oking)e(to)i(the)g (sources)f(in)g(the)g(\014le)354 1929 y Fo(extra.pl)p Fq(.)354 2172 y Fi(8.4)113 b(Assumed)37 b(co)s(de,)h(in)m(tutionistic) 33 b(and)39 b(linear)d(implication)354 2344 y Fq(In)m(tuitionistic)h (assumei/1)i(adds)f(temp)s(orarily)f(a)j(clause)f(usable)f(in)g(later)h (pro)s(ofs.)66 b(Suc)m(h)38 b(a)354 2457 y(clause)24 b(can)g(b)s(e)f(used)g(an)g(inde\014nite)f(n)m(um)m(b)s(er)g(of)i (times,)h(mostly)e(lik)m(e)g(asserted)h(clauses,)h(except)354 2570 y(that)g(it)e(v)-5 b(anishes)23 b(on)g(bac)m(ktrac)m(king.)40 b(Its)24 b(scop)s(ed)f(v)m(ersion)g Fo(Clause=>Goal)e Fq(or)j Fo([File]=>Goal)354 2683 y Fq(mak)m(es)31 b Fo(Clause)d Fq(or)h(the)h(set)g(of)g(clauses)f(found)g(in)f Fo(File)g Fq(a)m(v)-5 b(ailable)29 b(only)g(during)f(the)h(pro)s(of)g(of)354 2796 y(Goal.)40 b(Both)27 b(v)-5 b(anish)24 b(on)i(bac)m(krac)m(king.) 40 b(Clauses)25 b(are)h(usable)f(an)h(inde\014nite)e(n)m(um)m(b)s(er)h (of)h(times)354 2909 y(in)j(the)i(pro)s(of,)f(i.e.)40 b(for)31 b(instance)f Fo(?-assumei\(a\(13\)\),a\(X\),a)o(\(Y\))24 b Fq(will)k(succed.)495 3022 y(Linear)i(assumel/1)g(adds)f(temp)s (orarily)f(a)j(clause)f(usable)f Fh(at)k(most)g(onc)-5 b(e)31 b Fq(in)e(later)h(pro)s(ofs.)354 3134 y(This)35 b(assumption)g(also)i(v)-5 b(anishes)36 b(on)g(bac)m(ktrac)m(king.)61 b(Its)37 b(scop)s(ed)f(v)m(ersion)h Fo(Clause-:Goal)354 3247 y Fq(or)e Fo([File]-:Goal)d Fq(mak)m(es)k Fo(Clause)d Fq(or)i(the)g(set)h(of)f(clauses)g(found)e(in)h Fo(File)g Fq(a)m(v)-5 b(ailable)34 b(only)354 3360 y(during)23 b(the)i(pro)s(of)g(of)g(Goal.)39 b(Both)26 b(v)-5 b(anish)23 b(on)i(bac)m(krac)m(king.)40 b(Eac)m(h)25 b(clause)g(is)f(usable)g(at)i (most)354 3473 y(once)31 b(in)e(the)i(pro)s(of,)f(i.e.)40 b(for)31 b(instance)f Fo(?-assumel\(a\(13\)\),a\(X\),a)o(\(Y\))24 b Fq(will)k(fail.)495 3586 y(Y)-8 b(ou)28 b(can)g(freely)f(mix)f (linear)f(and)i(in)m(tutionistic)e(clauses)i(and)g(implications)d(for)j (the)h(same)354 3699 y(predicate.)41 b(T)-8 b(ry)30 b(out)g(something)g (lik)m(e)354 3887 y Fo(?-a\(10\)-:a\(11\)=>a\(12\)-:a\()o(13\)=)o (>\(a\()o(X\),)o(a\(X\))o(\).)354 4000 y(X=11;)354 4112 y(X=13;)354 4225 y(no)495 4413 y Fq(This)d(sho)m(ws)h(that)h Fo(a\(10\))d Fq(and)i Fo(a\(12\))f Fq(are)h Fh(c)-5 b(onsume)g(d)30 b Fq(after)f(their)e(\014rst)h(use)g(while)e Fo(a\(11\))354 4526 y Fq(and)k Fo(a\(13\))f Fq(are)i(reusable)e(inde\014nitely)-8 b(.)495 4639 y(See)33 b(the)f(relativ)m(ely)f(straigh)m(tforw)m(ard)h (implemen)m(tation)f(of)h(these)h(predicates)e(in)g(the)h(\014le)354 4752 y(extra.pl.)495 4865 y(Note)27 b(that)f(BinProlog's)f(linear)f (implication)e(succeeds)k(ev)m(en)g(if)f(not)g(all)f(the)i(assumptions) 354 4978 y(are)37 b(consumed)e(while)f(in)h(systems)h(lik)m(e)f(Lolli)f (this)h(is)g(a)h(strong)g(requiremen)m(t.)57 b(Quan)m(ti\014ers)354 5090 y(and)35 b(other)g(linear)e(op)s(erators)i(are)h(not)f(implemen)m (ted)e(at)j(this)e(time,)i(but)e(can)h(b)s(e)f(added)h(in)354 5203 y(the)c(future)e(if)h(there's)g(enough)h(demand)e(for)h(them.)1962 5493 y(31)p eop 32 31 bop 354 375 a Fi(8.5)113 b(Ov)m(erriding)354 547 y Fq(Assumed)31 b(predicate)g(will)d(o)m(v)m(erride)j(similarly)d (named)j(dynamic)f(predicates)h(whic)m(h)f(in)f(turn)354 659 y(will)35 b(o)m(v)m(erride)j(compiled)d(ones.)62 b(Note)39 b(that)f(o)m(v)m(erriding)e(is)h(done)g(at)h Fh(pr)-5 b(e)g(dic)g(ate)p Fq(,)42 b(not)37 b Fh(clause)354 772 y Fq(lev)m(el.)h(Note)25 b(also)e(that)h(m)m(ulti\014le)d(compiled) h(clauses)h(are)h(still)d(forbidden.)36 b(Ho)m(w)m(ev)m(er,)27 b(m)m(ulti\014le)354 885 y(assumed)j(and)g(dynamic)f(co)s(de)i(is)e(no) m(w)h(accepted.)354 1129 y Fi(8.6)113 b(Language)39 b(enhancemen)m(ts)f (based)h(on)f(linear)e(implication)354 1300 y Fq(Linear)i(implication)e (can)k(b)s(e)e(used)g(to)i(quic)m(kly)d(add)h(some)i(language)f (enhancemen)m(ts)g(to)h(a)354 1413 y(Prolog)g(system.)69 b(F)-8 b(or)41 b(instance,)h(to)e(add)f(a)h Fo(switch)e Fc(:)15 b(:)g(:)41 b Fo(case)e Fq(statemen)m(t)i(one)f(can)g(write)354 1526 y(simply:)354 1739 y Fo(switch\(Selector,Body\):-)450 1852 y(case\(Selector\)-:Body.)354 2077 y(test\(X\):-)450 2190 y(switch\(X,)45 b(\()593 2303 y(case\(1\)->write\(one\))d(;)593 2416 y(case\(2\)->write\(two\))g(;)593 2529 y (otherwise->write\(unexpec)o(ted\()o(X\)\))450 2642 y(\)\))402 2755 y(,nl.)354 2981 y(\045)48 b(?-test\(2\),test\(13\).)495 3193 y Fq(Clearly)-8 b(,)31 b(this)f(is)g(a)h(v)m(ery)h(compact)g(w)m (a)m(y)-8 b(,)33 b(useful)c(at)j(least)f(as)g(a)h(sp)s(eci\014cation.) 41 b(Note)33 b(that)354 3306 y(this)i(can)i(b)s(e)e(done)h(as)g(w)m (ell)f(with)g(macro)h(expansion,)h(p)s(ossibly)c(more)j(e\016cien)m (tly)-8 b(,)38 b(but)d(also)354 3419 y(with)29 b(m)m(uc)m(h)i(more)f(w) m(ork.)354 3662 y Fi(8.7)113 b(Problem)35 b(solving)i(with)f(linear)g (implication)354 3834 y Fq(Linear)44 b(implication)d(is)j(a)g(serious)f (and)h(v)m(ery)h(con)m(v)m(enien)m(t)g(problem)e(solving)g(to)s(ol,)48 b(whic)m(h)354 3947 y(allo)m(ws)26 b(a)m(v)m(oiding)g(explicit)e (handling)g(of)i(complex)g(data-structures.)40 b(Let's)27 b(supp)s(ose)e(w)m(e)h(w)m(an)m(t)354 4060 y(to)31 b(w)m(alk)g(through) e(a)i(\(p)s(ossibly)d(circular\))h(graph)h(structure)g(without)f(lo)s (oping.)495 4173 y(With)h(linear)f(implication)f(this)h(b)s(ecomes:)354 4385 y Fo(path\(X,X,[X]\).)354 4498 y(path\(X,Z,[X|Xs]\):-linked\()o (X,Y\))o(,pat)o(h\(Y)o(,Z,X)o(s\).)354 4724 y (linked\(X,Y\):-c\(X,Ys\),memb)o(er\(Y)o(,Ys\))o(.)354 4950 y(go\(Xs\):-)450 5063 y(c\(1,[2,3]\))45 b(-:)i(c\(2,[1,4]\))e(-:)i (c\(3,[1,5]\))e(-:)i(c\(4,[1,5]\))e(-:)450 5176 y(path\(1,5,Xs\).)1962 5493 y Fq(32)p eop 33 32 bop 354 375 a Fq(or)354 700 y Fo(path\(X,X,[X]\).)354 813 y(path\(X,Z,[X|Xs]\):-c\(X,Y\),)o(path)o(\(Y,Z)o(,Xs)o(\).)354 1039 y(\045)48 b(data)354 1265 y(go\(Xs\):-)450 1378 y(\(c\(1,X1\):-c1\(X1\)\))43 b(-:)450 1491 y(\(c\(2,X2\):-c2\(X2\)\))g (-:)450 1604 y(\(c\(3,X3\):-c3\(X3\)\))g(-:)450 1717 y(\(c\(4,X4\):-c4\(X4\)\))g(-:)450 1829 y(path\(1,5,Xs\).)354 2055 y(c1\(2\).)354 2168 y(c1\(3\).)354 2394 y(c2\(1\).)354 2507 y(c2\(4\).)495 2719 y Fq(Some)29 b(\014nite)e(domain)h(constrain)m (t)g(solving)f(can)i(also)f(b)s(e)g(done)h(quite)e(e\016cien)m(tly)i (\(1.3)g(sec-)354 2832 y(onds)20 b(on)g(a)h(Sparc)e(10-20)k(for)d(the)g Fo(SEND)47 b(+)g(MORE)g(=)g(MONEY)19 b Fq(puzzle)h(-)g(see)h(\014le)f Fo(progs/lconstr.pl)p Fq(\).)354 3032 y Fd(\045)44 b(Program:)c(linear) h(implication)e(based)i(FD)i(constraint)d(solving)354 3131 y(\045)k(Author:)c(Paul)i(Tarau,)f(1995)354 3330 y(\045)j(cryptarithmetic)37 b(puzzle)k(solver)g(-see)h (progs/lconstr.pl)354 3430 y(\045)i(a)f(kind)f(of)g("constraint)d (solving)i(with)h(linear)f(implication")354 3629 y(example1\()485 3729 y([s,e,n,d,m,o,r,e)o(,y])o(=[)o(S,E)o(,N)o(,D,)o(M,)o(O,)o(R,E)o (,Y)o(],)485 3829 y([S,E,N,D]+)485 3928 y([M,O,R,E]=)398 4028 y([M,O,N,E,Y],)398 4127 y(_)354 4227 y(\).)354 4426 y(\045)j(Addition)c(of)j(two)f(numbers)f(-)i(simplified)c(version)i(-) 354 4526 y(sum\(As,)g(Bs,)h(Cs\))h(:-)f(sum\(As,)f(Bs,)i(0,)f(Cs\).)354 4725 y(sum\([],)f([],)h(Carry,)f([Carry]\).)354 4825 y(sum\([A|As],)e([B|Bs],)i(Carry,)g([C|Cs]\))g(:-)i(!,)354 4924 y(add2digits\(A,B,Ca)o(rr)o(y,C)o(,N)o(ewC)o(ar)o(ry\))o(,)703 5024 y(sum\(As,)e(Bs,)h(NewCarry,)e(Cs\).)354 5223 y (add2digits\(A,B,Ca)o(rr)o(y,R)o(es)o(ult)o(,N)o(ewC)o(ar)o(ry)o(\):-) 1962 5493 y Fq(33)p eop 34 33 bop 442 375 a Fd(bind\(A\),bind\(B\))o(,)442 475 y(add_with_carry\()o(10)o(,A,)o(B,)o(Car)o(ry)o(,Re)o(su)o(lt)o(,Ne)o (wC)o(arr)o(y\))o(.)354 674 y(add_with_carry\(Ba)o(se)o(,A,)o(B,)o(Car) o(ry)o(,Re)o(su)o(lt)o(,Ne)o(wC)o(arr)o(y\))o(:-)442 773 y(S)43 b(is)f(A+B+Carry,)442 873 y(Result)f(is)h(S)i(mod)e(Base,) 442 973 y(NewCarry)e(is)j(S)g(//)f(Base,)442 1072 y(new_digit\(Resul)o (t\))o(.)354 1272 y(bind\(A\):-var\(A\),!)o(,d)o(igi)o(t\()o(A\).)354 1371 y(bind\(_\).)354 1570 y(new_digit\(A\):-dig)o(it)o(\(A\))o(,!)o(.) 354 1670 y(new_digit\(_\).)354 1869 y(solve\(As,Bs,Cs,Z\))o(:-)442 1969 y(digit\(0\)-:digit)o(\(1)o(\)-:)o(di)o(git)o(\(2)o(\)-:)o(di)o (gi)o(t\(3)o(\)-)o(:di)o(gi)o(t\()o(4\)-)o(:d)o(igi)o(t\()o(5\)-)o(:) 442 2069 y(digit\(6\)-:digit)o(\(7)o(\)-:)o(di)o(git)o(\(8)o(\)-:)o(di) o(gi)o(t\(9)o(\)-)o(:)442 2168 y(\()h(sum\(As,Bs,Cs\),)529 2268 y(Z>0)442 2367 y(\).)354 2567 y(puzzle:-)529 2666 y(init\(Vars,Puzzl)o(e,N)o(am)o(es\))o(,)529 2766 y(Puzzle=\(Xs+Ys=Z)o (s\),)o(Zs)o(=[Z)o(|_)o(],)529 2866 y(reverse\(Xs,As\),)822 b(\045)43 b(see)f(progs/lconstr.pl)529 2965 y(reverse\(Ys,Bs\),)529 3065 y(reverse\(Zs,Cs\),)616 3164 y(solve\(As,Bs,Cs,Z)o(\),)616 3264 y(show_answer\(Vars)o(,N)o(ame)o(s,)o(Puz)o(zl)o(e\))o(,)c(\045)43 b(see)f(progs/lconstr.pl)529 3364 y(fail.)354 3463 y(puzzle:-)529 3563 y(write\('no)e(\(more\))h(answers'\),nl,nl)o(.)354 3762 y(go:-)442 3862 y(\(init\(X,Y,Z\):-e)o(xa)o(mpl)o(e1)o(\(X,)o(Y,)o (Z\)\))o(-:)o(pu)o(zzl)o(e,)442 3961 y(fail.)495 4174 y Fq(Notice)22 b(ho)m(w)e(linearly)e(assumed)h Fo(digit/1)g Fq(facts)i(are)f(consumed)g(b)m(y)g Fo(bind/1)f Fq(and)g Fo(new_digit/1)354 4287 y Fq(to)31 b(enforce)g(constrain)m(ts)g(as)f (early)g(as)h(p)s(ossible)d(inside)g(the)i(addition)f(lo)s(op.)354 4530 y Fi(8.8)113 b(The)37 b(blac)m(kb)s(oard)h(as)g(an)h(alternativ)m (e)d(to)h(assert)g(and)i(retract)354 4702 y Fq(Designed)44 b(in)e(the)i(early)g(stages)h(of)f(Prolog,)j(assert)d(and)g(retract)g (ha)m(v)m(e)h(b)s(een)e(o)m(v)m(erloaded)354 4815 y(with)34 b(di\013eren)m(t)g(and)g(often)h(con\015icting)e(requiremen)m(ts.)53 b(They)34 b(try)g(to)h(b)s(e)f(b)s(oth)g(the)h(w)m(a)m(y)h(to)354 4928 y(implemen)m(t)i(p)s(ermanen)m(t)g(data)h(structures)f(for)h (global)f(state)i(information,)f(self-mo)s(difying)354 5041 y(co)s(de)32 b(and)e(to)s(ols)h(for)g(Prolog)h(program)e (managemen)m(t.)45 b(This)30 b(created)i(not)f(only)f(w)m(ell-kno)m(wn) 354 5154 y(seman)m(tical)h(but)e(also)i(expressivit)m(y)e(and)h (e\016ciency)g(problems.)1962 5493 y(34)p eop 35 34 bop 495 375 a Fq(This)41 b(unnecessary)h(o)m(v)m(erloading)h(is)e (probably)g(due)h(to)h(some)g(of)g(their)e(in)m(tended)h(uses)354 488 y(in)g(in)m(terpreted)h(Prologs)g(lik)m(e)f(implemen)m(ting)f(the)j Fo(consult/1)c Fq(and)j Fo(reconsult/1)d Fq(co)s(de-)354 601 y(managemen)m(t)26 b(predicates)d(that)i(can)f(b)s(e)f(replaced)g (to)s(da)m(y)i(b)m(y)f(general)g(purp)s(ose)e(mak)m(e\014les.)38 b(As)354 714 y(a)33 b(consequence,)g(their)e(abilit)m(y)f(to)j(express) e(sophisticated)g(data)h(structures)g(is)e(v)m(ery)j(limited)354 827 y(due)h(mostly)f(to)i(un)m(w)m(an)m(ted)f(cop)m(ying)g(op)s (erations)f(\(from)h(heap)g(to)g(dynamic)f(co)s(de)h(area)h(and)354 939 y(bac)m(k\))d(and)e(due)f(to)i(their)f(non-bac)m(ktrac)m(k)-5 b(able)32 b(b)s(eha)m(viour.)495 1052 y(F)-8 b(or)28 b(example,)g(to)g(ensure)e(inde\014nite)e(n)m(um)m(b)s(er)i(of)h(uses)g (of)g(an)g(asserted)g(clause)g(most)g(Pro-)354 1165 y(logs)36 b(either)g(compile)f(it)g(on)h(the)g(\015y)g(or)g(do)g(some)g(form)g (of)g(cop)m(ying)g(\(usually)e(t)m(wice:)52 b(when)354 1278 y(asserting)42 b(and)f(when)g(calling)g(or)h(retracting\).)76 b(This)40 b(is)h(not)h(only)f(a)h(w)m(aste)h(of)f(resources)354 1391 y(but)29 b(also)h(forbids)e(use)h(of)h(asserted)g(clauses)f(for)h (dynamically)d(ev)m(olving)i(global)g(ob)5 b(jects)31 b(con-)354 1504 y(taining)42 b(logical)g(v)-5 b(ariables,)44 b(one)f(of)g(the)g(most)g(in)m(teresting)e(and)h(e\016cien)m(t)i(data)f (structure)354 1617 y(tric)m(ks)d(in)f(Prolog.)70 b(W)-8 b(orst,)44 b(v)-5 b(ariables)39 b(represen)m(ting)g(global)g(data)i (structures)f(ha)m(v)m(e)h(to)g(b)s(e)354 1730 y(passed)26 b(around)g(as)g(extra)i(argumen)m(ts,)f(just)f(to)h(b)s(ore)f (programmers)g(and)g(mak)m(e)h(them)g(dream)354 1843 y(ab)s(out)g(inheritance)f(and)g(ob)5 b(jects)28 b(orien)m(ted)f (languages.)40 b(This)26 b(also)h(also)g(creates)h(error)f(prone)354 1956 y(main)m(tenance)35 b(problems.)50 b(Just)34 b(think)f(ab)s(out)h (adding)f(a)h(new)g(sev)m(en)m(th)h(argumen)m(t)g(to)g(a)f(10-)354 2069 y(parameter)d(Prolog)g(predicate)f(ha)m(ving)g(10)h(clauses)f(and) g(b)s(eing)f(called)g(10)i(times.)495 2181 y(Those)21 b(are)g(the)g(main)f(reasons)h(for)f(the)h(re-design)f(of)h(these)h(op) s(erations)e(using)f(BinProlog's)354 2294 y(blac)m(kb)s(oard.)495 2407 y(Ob)5 b(jects)43 b(on)f(the)h(blac)m(kb)s(oard)f(ha)m(v)m(e)h (inde\014nite)e(exten)m(t.)78 b(Ho)m(w)m(ev)m(er,)48 b(their)42 b(names)g(are)354 2520 y("rigid)31 b(designators")h(that)h (can)f(c)m(hange)h(their)e(reference.)47 b(Data)33 b(ob)5 b(jects)33 b(do)f(not)g(disapp)s(ear)354 2633 y(just)24 b(b)s(ecause)g(they)h(ha)m(v)m(e)g(no)f(names)g(an)m(ymore.)40 b(This)22 b(is)h(the)i(main)e(di\013erence)h(with)f(v)-5 b(ariables)354 2746 y(in)29 b(languages)g(with)f(destructiv)m(e)i (assignmen)m(t.)40 b(If)29 b(the)h(garbage)h(collector)f("can)g(pro)m (v)m(e")h(that)354 2859 y(an)41 b(ob)5 b(ject)41 b(or)g(some)g(part)g (of)g(it)f(is)g(will)e(nev)m(er)j(b)s(e)f(used)f(again,)44 b(the)d(space)g(will)d(b)s(e)i(recu-)354 2972 y(p)s(erated)33 b(automatically)-8 b(.)48 b(Although)32 b(ob)5 b(jects)33 b(cannot)g(b)s(e)f("c)m(hanged")j(they)e(can)g(b)s(e)f(further)354 3085 y(instan)m(tiated)e(as)h(it)f(happ)s(ens)e(to)k(ordinary)c(Prolog) j(terms.)495 3198 y(E\016cien)m(t)42 b(access)h(to)f(ob)5 b(jects)42 b(on)g(the)g(blac)m(kb)s(oard)e(or)i(part)f(of)h(them)f(is)g (based)g(on)g(an)354 3311 y(e\016cien)m(t)31 b(2-k)m(ey)h(hashing)d (table,)h(in)m(ternal)g(to)h(BinProlog's)e(run-time)g(system.)354 3554 y Fi(8.9)113 b(The)37 b(lo)m(w-lev)m(el)f(blac)m(kb)s(oard)i(op)s (erations)354 3726 y Fq(Six)19 b(lo)m(w-lev)m(el)839 3693 y Fn(5)899 3726 y Fq(primitiv)m(es)f Fo(def/3,)46 b(set/3,)g(val/3,)g(rm/2,)g(copy)p 2800 3726 29 4 v 34 w(term/2,)f(save)p 3407 3726 V 34 w(term/2)354 3839 y Fq(are)31 b(used)e(in)g(BinProlog)g(3.45)i(to)g(fully)d(replace)i (assert)g(and)g(retract)h(while)d(k)m(eeping)i(distinct)354 3951 y(their)g(o)m(v)m(erloaded)h Fh(naming)g Fq(and)f Fh(c)-5 b(opying)31 b Fq(function.)354 4192 y Fb(8.9.1)106 b(Naming)34 b(primitiv)m(es)354 4363 y Fq(The)39 b(\014rst)g(four)g (are)h(simply)d(an)i(in)m(terface)h(to)g(BinProlog's)f(unique)f(global) g(hashing)g(table)354 4476 y(w)m(orking)30 b(as)h(an)545 4664 y Fo()o(-->H)o(eap)o(OrBl)o(ackb)o(oar)o (dObj)o(ect.)354 4851 y Fq(function.)p 354 4913 1323 4 v 458 4967 a Fm(5)493 4998 y Fl(W)-6 b(e)22 b(suggest)h(a)n(v)n (oiding)g(these)g(op)r(erations)h(b)r(ecause)f(they)f(are)h(not)f (garbage)i(collection-safe)i(in)c(BinProlog)354 5090 y(3.45.)1962 5493 y Fq(35)p eop 36 35 bop 491 375 a Fj(\017)46 b Fq(def/3:)41 b(\(i,i,i\))29 b(de\014nes)h(a)g(v)-5 b(alue)30 b(\(usable)g(only)f(once\))j(or)e (fails;)491 563 y Fj(\017)46 b Fq(set/3:)c(\(i,i,i\))29 b(up)s(dates)g(a)i(v)-5 b(alue)30 b(that)h(has)f(b)s(een)g(de\014ned)f (or)h(w)m(arns)g(and)g(fails;)491 750 y Fj(\017)46 b Fq(v)-5 b(al/3:)41 b(\(i,i,o\))30 b(retriev)m(es)h(the)f(v)-5 b(alue)30 b(or)h(fails)e(if)g(absen)m(t;)491 938 y Fj(\017)46 b Fq(rm/3:)41 b(\(i,i\))29 b(deletes)i(the)f(v)-5 b(alue)30 b(or)h(fails)d(if)i(absen)m(t.)495 1150 y(W)-8 b(e)43 b(call)e(them)h Fh(naming)i(primitives)e Fq(as)g(they)g(are)g(used)f (to)i(name)e(arbitrary)g(heap)g(or)354 1263 y(blac)m(kb)s(oard)35 b(ob)5 b(jects)37 b(for)f(de\014nition,)f(up)s(date)h(and)f(access)j (function.)56 b(Naming)36 b(ob)5 b(jects)36 b(on)354 1376 y(the)26 b(heap)f(is)f(generally)g(unsafe)h(and)f(should)f(b)s(e)i (hidden)e(from)h(the)i(user)e(except)i(for)f(constan)m(ts)354 1489 y(whic)m(h)38 b(are)h(actually)g(copied)f(in)g(the)h(hashing)e (table)i(instead)f(of)i(b)s(eing)d(p)s(oin)m(ted)h(to.)67 b(This)354 1602 y(frequen)m(t)34 b(case)h(has)f(b)s(een)f(giv)m(en)g (to)i(end)e(users)g(as)h(an)g(e\016cien)m(t)g(2-k)m(eys,)j(1-v)-5 b(alue)34 b(dictionary)354 1715 y(since)c(the)h(\014rst)e(release)i(of) f(BinProlog.)495 1828 y(If)39 b(blac)m(kb)s(oard)e(op)s(erations)h(are) h(bac)m(ktrac)m(k)-5 b(able)41 b(heap)d(ob)5 b(jects)39 b(can)g(b)s(e)f(safely)h(named.)354 1941 y(This)29 b(suggested)i(the)g (implemen)m(tation)e(of)h(global)g(logical)g(v)-5 b(ariables)29 b(in)g(BinProlog)g(3.45.)495 2054 y(Otherwise,)d(in)e(BinProlog's)h (gc-safe)j(transfers)d(to)h(and)f(from)h(the)f(blac)m(kb)s(oard)g(are)h (doing)354 2166 y(with)j(a)i(v)m(ery)g(e\016cien)m(t)g(cop)m(ying)f (algorithm.)495 2279 y(Not)e(that)e(if)f(the)i(garbage)g(collector)g (is)e(not)h(used)g(naming)f(ob)5 b(jects)27 b(on)f(the)g(blac)m(kb)s (oard)f(is)354 2392 y(safe)c(as)g(they)g(are)h(alw)m(a)m(ys)f(at)g(a)g (lo)m(w)m(er)g(address)f(than)h(the)g(base)g(of)g(the)f(heap.)38 b(As)20 b(a)i(consequence)354 2505 y(they)33 b(surviv)m(e)f(bac)m (ktrac)m(king)i(while)d(k)m(eeping)i(their)f(b)s(eha)m(viour)g(as)h (close)g(as)g(p)s(ossible)e(to)i(the)354 2618 y(b)s(eha)m(viour)d(of)g (usual)f(heap)i(ob)5 b(jects.)42 b(This)29 b(usage)i(is)f(compatible)g (with)f(BinProlog)h(1.71)i(but)354 2731 y(not)f(recommended)f(in)f (BinProlog)h(3.45.)354 2971 y Fb(8.9.2)106 b(Cop)m(ying)35 b(primitiv)m(es)354 3143 y Fo(Copy_term/2)i Fq(is)i(Prolog's)h(usual)e (primitiv)m(e)g(extended)i(to)g(cop)m(y)h(ob)5 b(jects)40 b(from)g(the)g(heap)354 3256 y(and)35 b(also)h(from)f(blac)m(kb)s(oard) f(to)j(the)e(curren)m(t)h(top)f(of)h(the)g(heap.)56 b(W)-8 b(e)36 b(refer)g(to)g([10)q(])g(for)f(the)354 3369 y(implemen)m(tation) 29 b(and)h(memory)g(managemen)m(t)i(asp)s(ects)f(of)f(these)h(primitiv) m(es.)495 3482 y Fo(Save_term/2)c Fq(copies)i(an)g(ob)5 b(ject)30 b(p)s(ossibly)c(distributed)g(o)m(v)m(er)31 b(the)e(heap)g(and)g(the)g(blac)m(k-)354 3594 y(b)s(oard)e(to)i(a)g (new)f(blac)m(kb)s(oard)f(ob)5 b(ject.)41 b(It)28 b(also)g(tak)m(es)i (care)f(not)f(to)h(cop)m(y)g(parts)f(of)g(the)g(ob)5 b(ject)354 3707 y(already)30 b(on)h(the)f(blac)m(kb)s(oard.)495 3820 y(Remark)22 b(that)g(ha)m(ving)g(kno)m(wn)f(mo)s(des)g(and)g (argumen)m(t)h(t)m(yp)s(es)g(helps)e(in)g(the)i(case)h(of)f(partial)354 3933 y(ev)-5 b(aluation)24 b(or)g(t)m(yp)s(e)g(inference)f(systems.)38 b(Separating)24 b(Prolog's)g(asserts)g(t)m(w)m(o)h(main)e(functions)354 4046 y(\(naming+cop)m(ying\))34 b(in)f(lo)m(w)m(er)h(lev)m(el)g(op)s (erations)f(allo)m(ws)h(program)g(transformers)f(to)i(go)g Fh(in-)354 4159 y(side)41 b Fq(more)h(complex)e(blac)m(kb)s(oard)g(op)s (erations)g(and)g(p)s(ossibly)e(use)j(the)g(t)m(yping)f(and)h(mo)s(de) 354 4272 y(information)29 b(that)i(comes)g(from)f(def/3,)h(set/3)h(and) e(v)-5 b(al/3)31 b(to)g(infer)e(it)h(for)g(other)g(predicates.)354 4515 y Fi(8.10)113 b(An)37 b(useful)h(Prolog)e(extension:)49 b(b)s(estof/3)354 4687 y Fo(Bestof/3)27 b Fq(is)h(missing)f(in)h(all)g (curren)m(t)h(Prolog)g(implemen)m(tations)e(w)m(e)j(kno)m(w)f(of.)40 b(BinProlog's)354 4800 y Fo(bestof/3)30 b Fq(w)m(orks)i(lik)m(e)f Fo(findall/3)p Fq(,)f(but)h(instead)g(of)h(accum)m(ulating)f (alternativ)m(e)i(solutions,)354 4913 y(it)f(selects)g(successiv)m(ely) g(the)g Fh(b)-5 b(est)32 b Fq(one)h(with)d(resp)s(ect)i(to)h(an)f (arbitrary)f Fh(total)k(or)-5 b(der)34 b Fq(relation.)354 5026 y(If)26 b(the)g(test)h(succeeds)g(the)f(new)f(answ)m(er)h (replaces)g(the)h(previous)d(one.)40 b(A)m(t)27 b(the)f(end,)h(either)e (the)354 5139 y(query)34 b(has)f(no)h(answ)m(ers,)h(case)g(in)e(whic)m (h)g Fo(bestof)f Fq(fails,)i(or)g(an)g(answ)m(er)f(is)g(found)g(suc)m (h)h(that)1962 5493 y(36)p eop 37 36 bop 354 375 a Fq(it)33 b(is)f(b)s(etter)h(than)g(ev)m(ery)h (other)f(answ)m(er)g(with)f(resp)s(ect)h(to)h(the)f(total)h(order.)48 b(The)33 b(prop)s(osed)354 488 y(syn)m(tax)e(is)498 694 y Fo(?-bestof\(X,TotalOrder,)o(Goal)o(\))495 900 y Fq(A)m(t)g(the)f (end,)f(X)h(is)f(instan)m(tiated)g(to)h(the)g(b)s(est)f(answ)m(er.)41 b(F)-8 b(or)30 b(example,)g(the)g(maxim)m(um)e(of)354 1013 y(a)j(list)e(of)i(in)m(tegers)f(can)h(b)s(e)f(de\014ned)f(simply)f (as:)545 1219 y Fo(max\(Xs,X\):-bestof\(X,>,mem)o(ber\()o(X,X)o(s\)\).) 495 1425 y Fq(The)43 b(follo)m(wing)e(is)h(an)h(e\016cien)m(t)g (implemen)m(tation)e(implemen)m(tation)h(using)f(the)i(blac)m(k-)354 1538 y(b)s(oard.)354 1744 y Fo(\045)48 b(true)e(if)i(X)f(is)g(an)g (answer)f(of)i(Generator)d(such)i(that)354 1857 y(\045)h(X)f(Rel)g(Y)h (for)f(every)f(other)g(answer)g(Y)i(of)f(Generator)354 1970 y(bestof\(X,Closure,Generato)o(r\):-)450 2083 y(copy_term\(X,Y\),) 450 2196 y(Closure=..L1,)450 2309 y(det_append\(L1,[X,Y],L2\))o(,)450 2421 y(Test=..L2,)450 2534 y(bestof0\(X,Y,Generator,T)o(est\))o(.)354 2760 y(bestof0\(X,Y,Generator,Tes)o(t\):-)450 2873 y (inc_level\(bestof,Level\))o(,)450 2986 y(Generator,)450 3099 y(update_bestof\(Level,X,Y)o(,Tes)o(t\),)450 3212 y(fail.)354 3325 y(bestof0\(X,_,_,_\):-)450 3438 y (dec_level\(bestof,Level\))o(,)450 3551 y(val\(bestof,Level,X\),)450 3663 y(rm\(bestof,Level\).)354 3889 y(\045)h(uses)e(Rel)h(to)h(compare) d(New)i(with)g(so)g(far)g(the)g(best)f(answer)354 4002 y(update_bestof\(Level,New,O)o(ld,T)o(est\))o(:-)450 4115 y(val\(bestof,Level,Old\),!)o(,)450 4228 y(Test,)450 4341 y(bb_set\(bestof,Level,New)o(\).)354 4454 y (update_bestof\(Level,New,_)o(,_\):)o(-)450 4567 y (bb_let\(bestof,Level,New)o(\).)354 4793 y(\045)i(ensure)e(correct)g (implementation)e(of)j(embedded)e(calls)i(to)g(bestof/3)354 4905 y(inc_level\(Obj,X1\):-val\(Ob)o(j,Ob)o(j,X\))o(,!,)o(X1)42 b(is)47 b(X+1,bb_set\(Obj,Obj,X1\).)354 5018 y (inc_level\(Obj,1\):-bb_def\()o(Obj,)o(Obj,)o(1\).)354 5244 y(dec_level\(Obj,X\):-val\(Obj)o(,Obj)o(,X\),)o(X>0)o(,X1)41 b(is)48 b(X-1,bb_set\(Obj,Obj,X1\).)1962 5493 y Fq(37)p eop 38 37 bop 354 375 a Fq(Note)27 b(that)f(precomputation)e(of)i(T)-8 b(est)25 b(in)f(b)s(estof/3)i(b)s(efore)f(calling)f(the)h(w)m(orkhorse) g(b)s(estof0/4)354 488 y(is)20 b(m)m(uc)m(h)h(more)g(e\016cien)m(t)g (than)g(using)e(some)i(form)f(of)h(apply)f(meta-predicate)h(inside)e(b) s(estof0/4.)354 731 y Fi(8.11)113 b(Blac)m(kb)s(oard)37 b(based)i(abstract)e(data)i(t)m(yp)s(es)354 903 y Fq(W)-8 b(e)31 b(will)26 b(describ)s(e)i(some)h(simple)e(utilisations)f(of)k (the)f(blac)m(kb)s(oard)f(to)i(implemen)m(t)e(e\016cien)m(tly)354 1016 y(some)45 b(basic)f(abstract)h(data)g(t)m(yp)s(es.)82 b(They)44 b(all)f(use)h(the)g Fo(saved/2)f Fq(predicate)h(instead)f(of) 354 1129 y Fo(save_term/2)p Fq(.)51 b Fo(Saved/2)33 b Fq(do)s(es)i(basically)e(the)i(same)g(w)m(ork)g(but)f(also)h(mak)m(es)g (a)h(call)e(to)h(the)354 1242 y(blac)m(kb)s(oard)f(garbage)i(collector) f(if)f(necessary)-8 b(.)54 b(The)35 b(reader)f(can)h(\014nd)e(the)i(co) s(de)g(in)e(the)i(\014le)354 1354 y Fo(lib.pl)29 b Fq(of)i(the)f (BinProlog)g(distribution.)354 1595 y Fb(8.11.1)106 b(Blac)m(kb)s(oard) 36 b(based)f(failure)g(surviving)h(stac)m(ks)354 1766 y Fq(A)43 b(v)m(ery)g(useful)e(data)i(structure)f(that)h(can)g(b)s(e)f (implemen)m(ted)f(with)g(the)i(blac)m(kb)s(oard)e(is)h(a)354 1879 y(stac)m(k)36 b(that)e(surviv)m(es)f(failure)f(but)h(still)f(allo) m(ws)h(the)i(programmer)e(to)i(use)e(some)i(of)f(the)g(nice)354 1992 y(prop)s(erties)29 b(of)i(logical)e(v)-5 b(ariables.)495 2105 y(The)26 b(main)f(op)s(erations)g(are)i Fo(push/3)d Fq(that)j(sa)m(v)m(es)g(a)g(term)f(to)h(the)f(blac)m(kb)s(oard)f(and)h (pushes)354 2218 y(it)33 b(to)i(a)f(named)f(stac)m(k,)j Fo(pop/3)c Fq(that)i(remo)m(v)m(es)h(the)f(top)g(elemen)m(t)g(from)f(a) h(named)f(stac)m(k)i(and)354 2331 y(uni\014es)e(it)g(with)g(its)h (third)f(argumen)m(t)h(and)g Fo(stack/3)e Fq(that)j(simply)d(giv)m(es)j (access)g(to)g(the)g(list)354 2444 y(on)f(the)f(blac)m(kb)s(oard)f (represen)m(ting)h(the)g(stac)m(k.)51 b(The)33 b(only)g(op)s(eration)f (that)i(uses)f(cop)m(ying)g(is)354 2557 y Fo(push/3)p Fq(,)27 b(although)g(if)f(the)i(term)g(that)g(is)e(pushed)g(to)i(the)g (stac)m(k)h(has)e(already)h(some)g(subterms)354 2670 y(on)j(the)f(blac)m(kb)s(oard,)g(suc)m(h)g(subterms)f(will)f(not)i(b)s (e)g(copied)g(again.)495 2782 y(The)g(implemen)m(tation)f(is)h(straigh) m(tforw)m(ard:)354 2995 y Fo(push\(Type,S,X\):-)450 3108 y(default_val\(Type,S,Xs,[)o(]\),)450 3221 y(saved\([X|Xs],T\),)450 3334 y(set\(Type,S,T\).)354 3560 y(pop\(Type,S,X\):-)450 3672 y(default_val\(Type,S,V,[])o(\),)450 3785 y(V=[X|Xs],)450 3898 y(set\(Type,S,Xs\).)354 4124 y(stack\(Type,S,Xs\):-val\(Typ)o (e,S,)o(Xs\).)354 4350 y(default_val\(X,Y,V,_\):-val)o(\(X,Y)o(,V\),)o (!.)354 4463 y(default_val\(X,Y,D,D\):-def)o(\(X,Y)o(,D\).)354 4703 y Fb(8.11.2)106 b(Constan)m(t)34 b(time)g(v)m(ectors)354 4875 y Fq(De\014ning)28 b(a)i(v)m(ector)h(is)d(done)h(initializing)c (it)k(to)h(a)f(giv)m(en)g(Zero)g(elemen)m(t.)41 b(The)29 b Fo(vector_set/3)354 4987 y Fq(up)s(date)j(op)s(eration)g(uses)g Fo(saved/2)p Fq(,)g(therefore)h(the)f(old)g(con)m(ten)m(t)j(of)d(v)m (ectors)i(is)e(also)h(sub)5 b(ject)354 5100 y(to)31 b(garbage)h (collection.)1962 5493 y(38)p eop 39 38 bop 354 375 a Fo(vector_def\(Name,Dim,Zero\))o(:-)42 b(Max)47 b(is)g(Dim-1,)450 488 y(saved\(Zero,BBVal\),)450 601 y(for\(I,0,Max\),)d(\045)j(generator)f(for)h(I)g(from)g(0)g(to)g (Max)545 714 y(let\(Name,I,BBVal\),)c(\045)k(def/3)g(or)g(set/3)f(if)i (needed)450 827 y(fail.)354 939 y(vector_def\(_,_,_\).)354 1165 y(vector_set\(Name,I,Val\):-s)o(aved)o(\(Val)o(,BB)o(Val\))o(,set) o(\(Na)o(me,I)o(,BBV)o(al\))o(.)354 1391 y(vector_val\(Name,I,Val\):-v) o(al\(N)o(ame,)o(I,V)o(al\).)495 1604 y Fq(Building)19 b(m)m(ulti-dimensional)e(arra)m(ys)22 b(on)f(these)h(v)m(ectors)h(is)d (straigh)m(tforw)m(ard,)j(b)m(y)e(de\014ning)354 1717 y(an)31 b(index-to-address)e(translation)h(function.)495 1829 y(The)22 b(sp)s(ecial)e(case)j(of)f(a)g(high-p)s(erformance)e (2-dimension)g(\(p)s(ossibly)f(sparse\))j(global)f(arra)m(y)354 1942 y(can)31 b(b)s(e)f(handled)e(con)m(v)m(enien)m(tly)j(b)m(y)f (using)f(def/3,)i(set/3,)h(v)-5 b(al/3)31 b(and)f(sa)m(v)m(ed/2)i(as)f (in:)354 2155 y Fo(global_array_set\(I,J,Val\))o(:-sa)o(ved\()o(Val)o (,S\),)o(set\()o(I,J)o(,S\).)354 2398 y Fi(8.12)113 b(Blac)m(kb)s(oard) 37 b(based)i(problem)d(solving)354 2570 y Fb(8.12.1)106 b(A)35 b(complete)f(knigh)m(t)h(tour)354 2742 y Fq(The)23 b(follo)m(wing)g(is)f(a)i(blac)m(kb)s(oard)f(based)g(complete)h(knigh)m (t-tour,)h(adapted)f(from)f(Ev)-5 b(an)24 b(Tic)m(k's)354 2854 y(w)m(ell)30 b(kno)m(wn)g(b)s(enc)m(hmark)f(program.)354 3067 y Fo(\045)48 b(recommended)d(use:)h(?-go\(5\).)354 3180 y(go\(N\):-)354 3293 y(time\(_\),)450 3406 y(init\(N,M\),)617 b(\045)48 b(prepare)e(the)h(chess)f(board)450 3519 y (knight\(M,1,1\),!,)329 b(\045)48 b(finds)e(the)h(first)g(complete)e (tour)354 3632 y(time\(T\),)450 3744 y(write\(time=T\),nl,statis)o (tics)o(,sho)o(w\(N)o(\).)d(\045)47 b(shows)f(the)h(answer)354 3970 y(\045)h(fills)e(the)h(blackboard)e(with)i(free)f(logical)g (variables)354 4083 y(\045)i(representing)c(empty)j(cell)f(on)h(the)g (chess)g(board)354 4196 y(init\(N,_\):-)450 4309 y(for\(I,1,N\),)235 b(\045)48 b(generates)d(I)j(from)e(1)i(to)f(N)g(nondeterministically) 545 4422 y(for\(J,1,N\),)140 b(\045)48 b(for/3)e(is)h(the)g(same)g(as)g (range/3)f(in)h(the)g(Art)g(of)g(Prolog)641 4535 y (bb_def\(I,J,_NewVar\),)90 b(\045)47 b(puts)g(a)g(free)g(slot)f(in)i (the)f(hashing)e(table)450 4648 y(fail.)354 4761 y(init\(N,M\):-)450 4874 y(M)i(is)g(N*N.)811 b(\045)47 b(returns)f(the)h(number)f(of)h (cells)354 5099 y(\045)h(tries)e(to)h(make)g(a)g(complete)f(knight)g (tour)354 5212 y(knight\(0,_,_\))f(:-)i(!.)1962 5493 y Fq(39)p eop 40 39 bop 354 375 a Fo(knight\(K,A,B\))45 b(:-)450 488 y(K1)i(is)g(K-1,)450 601 y(val\(A,B,K\),)92 b(\045)48 b(here)e(we)h(mark)g(\(A,B\))f(as)i(the)f(K-th)f(cell)h(of)g(the)g (tour)450 714 y(move\(Dx,Dy\),)d(\045)k(we)f(try)g(a)g(next)g(move)f (nondeterministically)450 827 y(step\(K1,A,B,Dx,Dy\).)354 1052 y(\045)i(makes)e(a)i(step)e(and)h(then)g(tries)f(more)354 1165 y(step\(K1,A,B,Dx,Dy\):-)545 1278 y(C)i(is)f(A)g(+)h(Dx,)545 1391 y(D)g(is)f(B)g(+)h(Dy,)545 1504 y(knight\(K1,C,D\).)354 1730 y(\045)g(shows)e(the)h(final)f(tour)354 1843 y(show\(N\):-)450 1956 y(for\(I,1,N\),)545 2069 y(nl,)545 2181 y(for\(J,1,N\),)641 2294 y(val\(I,J,V\),)641 2407 y(write\(')g('\),X)g(is)h(1-V)g(//)g(10,) g(tab\(X\),write\(V\),)450 2520 y(fail.)354 2633 y(show\(_\):-nl.)354 2859 y(\045)h(possible)d(moves)i(of)g(the)g(knight)354 2972 y(move\()g(2,)g(1\).)g(move\()f(2,-1\).)g(move\(-2,)g(1\).)h (move\(-2,-1\).)354 3085 y(move\()g(1,)g(2\).)g(move\(-1,)e(2\).)i (move\()g(1,-2\).)f(move\(-1,-2\).)495 3297 y Fq(Constan)m(t)25 b(time)e(access)j(in)c(this)h(kind)f(of)i(problems)e(to)j(cell\(I,J\))e (is)g(essen)m(tial)h(for)f(e\016ciency)354 3410 y(as)33 b(it)e(is)g(the)h(most)h(frequen)m(t)f(op)s(eration.)45 b(While)31 b(the)h(blac)m(kb)s(oard)f(based)h(v)m(ersion)f(tak)m(es)j (39s)354 3523 y(in)28 b(BinProlog)h(for)g(a)g(5x5)h(squares)f(c)m(hess) h(b)s(oard,)f(an)g(equiv)-5 b(alen)m(t)29 b(program)g(represen)m(ting)f (the)354 3636 y(b)s(oard)j(with)g(a)i(list)e(of)h(lists)f(tak)m(es)i (147s)h(in)c(BinProlog,)j(167s)g(in)e(em)m(ulated)h(Sicstus)f(2.1)i (and)354 3749 y(68)k(seconds)g(in)d(nativ)m(e)j(Sicstus)e(2.1.)59 b(Results)36 b(are)g(exp)s(ected)h(to)g(impro)m(v)m(e)f(somewhat)h (with)354 3862 y(binary)h(trees)i(or)g(functor-arg)g(represen)m(tation) g(of)g(the)f(b)s(oard)g(but)g(they)h(will)d(still)g(remain)354 3975 y(w)m(orse)44 b(than)g(with)e(the)i(blac)m(kb)s(oard)e(based)i (sparse)f(arra)m(y)-8 b(,)48 b(due)43 b(to)h(their)f(relativ)m(ely)g (high)354 4088 y(log\(N\))38 b(or)f(constan)m(t)h(factor.)61 b(Moreo)m(v)m(er,)41 b(represen)m(ting)36 b(large)h(size)g(\(p)s (ossibly)d(up)s(datable!\))354 4201 y(arra)m(ys)26 b(with)d(other)i (tec)m(hniques)g(is)f(prohibitiv)m(ely)e(exp)s(ensiv)m(e)i(and)g(can)h (get)h(v)m(ery)g(complicated)354 4313 y(due)h(to)h(arit)m(y)f(limits)d (or)k(tree)f(balancing)f(as)h(it)g(can)h(see)f(for)g(example)g(in)f (the)h(Quin)m(tus)e(library)-8 b(.)354 4554 y Fb(8.12.2)106 b(A)35 b(lemma)e(based)i(T)-9 b(AK)354 4725 y Fq(The)30 b(follo)m(wing)g(tak/4)i(program)e(uses)g(lemmas)g(to)i(a)m(v)m(oid)f (heap)f(explosion)g(in)f(the)i(case)g(of)g(of)354 4838 y(a)e(particularly)d(AND)j(in)m(tensiv)m(e)f(program)g(with)f(4)i (recursiv)m(e)f(calls,)g(a)h(problem)e(particularly)354 4951 y(sev)m(ere)38 b(in)d(the)i(case)g(of)g(the)g(con)m(tin)m(uation)f (passing)f(binarization)g(that)i(BinProlog)f(uses)g(to)354 5064 y(simplify)c(the)k(W)-10 b(AM.)37 b(T)-8 b(o)36 b(enco)s(de)f(the)h(2)g(\014rst)f(argumen)m(ts)g(in)g(a)h(unique)d(in)m (teger)j(some)g(bit-)354 5177 y(shifting)41 b(is)h(needed)h(as)g(it)f (can)h(b)s(e)g(seen)g(in)e Fo(tak_encode/3)p Fq(.)75 b(T)-8 b(o)44 b(a)m(v)m(oid)f(suc)m(h)g(problems,)1962 5493 y(40)p eop 41 40 bop 354 375 a Fq(hashing)34 b(on)g(arbitrary)g(terms)h(lik)m(e)f (Quin)m(tus)f(Prolog's)i Fo(term_hash/2)c Fq(lo)s(oks)k(a)g(v)m(ery)g (useful)354 488 y(addition)29 b(to)i(BinProlog.)354 684 y Fo(tak\(X,Y,Z,A\))45 b(:-)i(X)g(=<)h(Y,)f(!,)g(Z)g(=)h(A.)354 797 y(tak\(X,Y,Z,A\))d(:-)736 910 y(X1)i(is)h(X)f(-)g(1,)736 1023 y(Y1)g(is)h(Y)f(-)g(1,)736 1135 y(Z1)g(is)h(Z)f(-)g(1,)736 1248 y(ltak\(X1,Y,Z,A1\),)736 1361 y(ltak\(Y1,Z,X,A2\),)736 1474 y(ltak\(Z1,X,Y,A3\),)736 1587 y(ltak\(A1,A2,A3,A\).)354 1813 y(ltak\(X,Y,Z,A\):-)736 1926 y(tak_encode\(X,Y,XY\),)736 2039 y(tak_lemma\(XY,Z,tak\(X,Y,Z,)o(A\),)o(A\).)354 2265 y(tak_encode\(Y,Z,Key\):-Key)41 b(is)48 b(Y<<16)e(\\/)h(Z.)354 2377 y(tak_decode\(Key,Y,Z\):-Y)42 b(is)47 b(Key>>16,)f(Z)h(is)g(Key)g (<<17>>17)f(.)354 2603 y(\045optimized)f(lemma)i()e(-->)i(O)h (\(instantiated)c(executing)h(G\))354 2716 y (tak_lemma\(P,I,_,O\):-val\(P)o(,I,X)o(\),!,)o(X=O)o(.)354 2829 y(tak_lemma\(P,I,G,O\):-G,!,d)o(ef\(P)o(,I,O)o(\).)354 3055 y(go:-)190 b(statistics\(runtime,_\),)736 3168 y (tak\(24,16,8,X\),)736 3281 y(statistics\(runtime,[_,T]\))o(,st)o(atis) o(tics)o(,)736 3394 y(write\([time=T,tak=X]\),)42 b(nl.)495 3703 y Fq(W)-8 b(e)42 b(hop)s(e)e(that)h(w)m(e)g(sho)m(w)m(ed)f(the)h (practicalit)m(y)f(of)h(BinProlog's)e(blac)m(kb)s(oard)h(for)g(basic) 354 3816 y(w)m(ork)31 b(on)f(data)h(structures)f(and)g(problem)e (solving.)495 3928 y(BinProlog's)j(blac)m(kb)s(oard)g(primitiv)m(es)e (mak)m(e)j(a)g(clear)f(separation)h(b)s(et)m(w)m(een)g(the)f Fh(c)-5 b(opying)354 4041 y Fq(and)30 b(the)h Fh(naming)g Fq(in)m(ten)m(t)f(o)m(v)m(erloaded)i(in)d(Prolog's)h(assert)h(and)f (retract.)495 4154 y(Our)j(blac)m(kb)s(oard)g(primitiv)m(es)e(giv)m(e)j (most)g(of)g(the)f(time)h(simpler)d(and)i(more)h(e\016cien)m(t)g(so-) 354 4267 y(lutions)27 b(to)i(curren)m(t)f(programming)g(problems)e (than)j(assert)f(and)g(retract)i(while)c(b)s(eing)h(closer)354 4380 y(to)k(a)g(logical)f(seman)m(tics)h(and)e(more)i(co)s(op)s(erativ) m(e)g(to)g(partial)e(ev)-5 b(aluation.)354 4621 y Fi(8.13)113 b(A)37 b(Linda)h(st)m(yle)e(in)m(terface)h(to)g(the)g(blac)m(kb)s(oard) 354 4793 y Fq(The)30 b(follo)m(wing)e(predicates)i(sho)m(w)g(ho)m(w)g (to)g(do)g(some)h(Linda-st)m(yle)e(op)s(erations)g(on)h(top)g(of)g(the) 354 4905 y(blac)m(kb)s(oard)g(primitiv)m(es.)495 5018 y(The)36 b(curren)m(t)f(fo)s(cus)h(of)g(the)g(op)s(erations)f(is)f (managed)j(b)m(y)e Fo(object/1)f Fq(and)h Fo(message/1.)354 5131 y(Out/?)42 b Fq(puts)g(a)i(tuple)e(Mes)h(on)g(the)h(blac)m(kb)s (oard,)h Fo(rd/?)d Fq(reads)h(it)g(and)f Fo(in/?)g Fq(remo)m(v)m(es)j (it.)354 5244 y Fo(Eval/?)38 b Fq(executes)27 b(the)f(Goal)g(part)f(of) h(the)g(clause)g Fo(\(Answer:-Goal\))c Fq(fo)s(cussed)j(b)m(y)h Fo(object/1)1962 5493 y Fq(41)p eop 42 41 bop 354 375 a Fq(and)28 b Fo(message/1)p Fq(.)37 b(Then)28 b(it)f(puts)h(the)g(result)f Fo(Answer)g Fq(bac)m(k)i(to)f (the)h(blac)m(kb)s(oard.)39 b(As)28 b Fo(Answer)354 488 y Fq(itself)i(can)g(b)s(e)g(of)g(the)h(form)f Fo(\(A:-G\))p Fq(,)f(a)i(limited)d(n)m(um)m(b)s(er)h(of)h(cascaded)i Fo(evals)d Fq(are)h(p)s(ossible.)354 673 y Fo(\045)48 b(out/1,)e(rd/1,)g(in/1)354 786 y(out\(Mes\):-object\(Obj\),mes)o(sage) o(\(Id\))o(,ou)o(t\(Ob)o(j,Id)o(,Me)o(s\).)354 899 y (rd\(Mes\):-object\(Obj\),mess)o(age\()o(Id\),)o(rd\()o(Obj,)o(Id,M)o (es\))o(.)354 1012 y(in\(Mes\):-)g(object\(Obj\),message\(Id\))o(,in)o (\(Obj)o(,Id,)o(Mes)o(\).)354 1238 y(\045)i(out/2,)e(rd/2,)g(in/2)354 1350 y(out\(Id,Mes\):-object\(Obj\),)o(out\()o(Obj,)o(Id,)o(Mes\))o(.) 354 1463 y(rd\(Id,Mes\):-object\(Obj\),r)o(d\(Ob)o(j,Id)o(,Me)o(s\).) 354 1576 y(in\(Id,Mes\):-object\(Obj\),i)o(n\(Ob)o(j,Id)o(,Me)o(s\).) 354 1802 y(\045)i(out/3,)e(rd/3,)g(in/3)354 1915 y (out\(Obj,Id,_\):-val\(Obj,Id)o(,_\),)o(!,fa)o(il.)354 2028 y(out\(Obj,Id,Mes\):-saved\(Me)o(s,Se)o(nt\),)o(let)o(\(Obj)o (,Id,)o(Sen)o(t\).)354 2141 y(rd\(Obj,Id,Mes\):-val\(Obj,I)o(d,Me)o (s\).)354 2254 y(in\(Obj,Id,Mes\):-val\(Obj,I)o(d,Me)o(s\),r)o(m\(O)o (bj,I)o(d\).)354 2480 y(\045)i(eval/0,)e(eval/1,)f(eval/2)354 2592 y(eval:-object\(Obj\),message)o(\(Id\))o(,eva)o(l\(O)o(bj,I)o (d\).)354 2705 y(eval\(Id\):-object\(O\),eval\()o(O,Id)o(\).)354 2818 y(eval\(Obj,Id\):-val\(Obj,Id,)o(\(Ans)o(wer:)o(-Go)o(al\)\))o (,Goa)o(l,!)o(,)450 2931 y(saved\(Answer,NewAnswer\))o(,)450 3044 y(set\(Obj,Id,NewAnswer\).)354 3270 y(\045)j(tools)354 3383 y(object\(New\):-var\(New\),!,v)o(al\(')o($obj)o(ect)o(','$)o (obje)o(ct')o(,New)o(\).)354 3496 y(object\(New\):-atomic\(New\),)o (let\()o('$ob)o(jec)o(t',')o($obj)o(ect)o(',Ne)o(w\).)354 3722 y(message\(New\):-var\(New\),!,)o(obje)o(ct\(O)o(\),v)o(al\(O)o (,'$m)o(ess)o(age')o(,New)o(\).)354 3834 y (message\(New\):-atomic\(New\))o(,obj)o(ect\()o(O\),)o(let\()o(O,'$)o (mes)o(sage)o(',Ne)o(w\).)354 4117 y Fp(9)135 b(Con)l(tin)l(uations)47 b(as)e(\014rst)g(order)g(ob)7 b(jects)354 4323 y Fi(9.1)113 b(Con)m(tin)m(uation)28 b(manipulation)f(vs.)48 b(in)m(tuitionistic/li) o(near)24 b(implication)354 4494 y Fq(Using)34 b(in)m(tuitionistic)e (implication)g(\(actulla)m(y)j(it)f(should)e(b)s(e)i Fo(-:)g Fq(but)g(let's)h(forget)g(this)f(for)g(a)354 4607 y(momen)m(t\))e(w)m(e)f(can)f(write)g(in)f(BinProlog:)545 4793 y Fo(insert\(X,)46 b(Xs,)g(Ys\))h(:-)736 4905 y(paste\(X\))f(=>)h (ins\(Xs,)f(Ys\).)545 5131 y(ins\(Ys,)g([X|Ys]\))g(:-)h(paste\(X\).)545 5244 y(ins\([Y|Ys],)e([Y|Zs]\):-)g(ins\(Ys,)h(Zs\).)1962 5493 y Fq(42)p eop 43 42 bop 354 375 a Fq(used)29 b(to)h(nondeterministically)c(insert)i (an)h(elemen)m(t)h(in)e(a)i(list,)e(the)i(unit)e(clause)h Fo(paste\(X\))e Fq(is)354 488 y(a)m(v)-5 b(ailable)30 b(only)g(within)d(the)k(scop)s(e)f(of)h(the)g(deriv)-5 b(ation)29 b(for)h Fo(ins)p Fq(.)40 b(This)28 b(giv)m(es:)354 669 y Fd(?-)43 b(insert\(a,[1,2,3])o(,X\))o(.)354 769 y(X=[a,1,2,3];)354 968 y(X=[1,a,2,3];)354 1168 y(X=[1,2,a,3];)354 1367 y(X=[1,2,3,a])495 1562 y Fq(With)23 b(resp)s(ect)g(to)h(the)f (corresp)s(onding)f(Prolog)h(program)g(w)m(e)g(are)h(w)m(orking)e(with) g(a)i(simpler)354 1675 y(form)m(ulation)30 b(in)f(whic)m(h)g(the)i (elemen)m(t)g(to)g(b)s(e)f(inserted)f(do)s(es)h(not)h(ha)m(v)m(e)h(to)f (p)s(ercolate)g(as)g(dead)354 1787 y(w)m(eigh)m(t)37 b(throughout)f(eac)m(h)i(step)e(of)h(the)f(computation,)i(only)e(to)h (b)s(e)f(used)f(in)g(the)i(v)m(ery)f(last)354 1900 y(step.)64 b(W)-8 b(e)40 b(instead)d(clearly)g(isolate)h(it)g(in)f(a)h(global-v)-5 b(alue)37 b(manner,)j(within)35 b(a)k(unit)e(clause)354 2013 y(whic)m(h)29 b(will)f(only)i(b)s(e)f(consulted)h(when)f(needed,)i (and)e(whic)m(h)g(will)f(disapp)s(ear)h(afterw)m(ards.)495 2126 y(No)m(w,)d(let)d(us)g(imagine)f(w)m(e)h(are)h(giv)m(en)f(the)g (abilit)m(y)f(to)i(write)e(part)h(of)h(a)f(pro)s(of)g(state)h(con)m (text,)354 2239 y(i.e.,)30 b(to)g(indicate)e(in)g(a)h(rule's)f (left-hand)g(side)g(not)h(only)f(the)i(predicate)f(whic)m(h)e(should)g (matc)m(h)354 2352 y(a)37 b(goal)g(atom)h(to)f(b)s(e)f(replaced)f(b)m (y)i(the)f(rule's)g(b)s(o)s(dy)-8 b(,)37 b(but)f(also)g(whic)m(h)f (other)i(goal)g(atom\(s\))354 2465 y(should)29 b(surround)f(the)i (targeted)i(one)f(in)e(order)h(for)g(the)g(rule)f(to)i(b)s(e)f (applicable.)495 2578 y(Giv)m(en)e(this,)f(w)m(e)g(could)f(write,)i (using)d(BinProlog's)i Fo(@@)g Fq(\(whic)m(h)f(giv)m(es)h(in)f(its)h (second)g(argu-)354 2691 y(men)m(t)32 b(the)g(curren)m(t)f(con)m(tin)m (uation\))h(a)f(program)h(for)f Fo(insert/3)e Fq(whic)m(h)h(strikingly) f(resem)m(bles)354 2804 y(the)i(in)m(tuitionistic)c(implication)h (based)i(program)g(giv)m(en)h(ab)s(o)m(v)m(e:)354 2985 y Fd(insert\(X,Xs,Ys\):-)o(in)o(s\(X)o(s,)o(Ys\))o(,p)o(ast)o(e\()o (X\))o(.)354 3185 y(ins\(Ys,[X|Ys]\))38 b(@@)43 b(paste\(X\).)354 3284 y(ins\([Y|Ys],[Y|Zs])o(\):)o(-in)o(s\()o(Ys,)o(Zs)o(\).)354 3479 y Fq(Note)e(that)f(the)f(elemen)m(t)h(to)f(b)s(e)g(inserted)f(is)g (not)h(passed)g(to)h(the)f(recursiv)m(e)g(clause)g(of)g(the)354 3592 y(predicate)44 b Fb(ins/2)g Fq(\(whic)m(h)e(b)s(ecomes)i (therefore)g(simpler\),)h(while)d(the)h(unit)f(clause)i(of)f(the)354 3705 y(predicate)28 b Fb(ins/2)g Fq(will)d(comm)m(unicate)j(directly)e (with)g Fb(insert/3)i Fq(whic)m(h)e(will)f(directly)h(`paste')354 3818 y(the)31 b(appropriate)e(argumen)m(t)i(in)e(the)i(con)m(tin)m (uation.)495 3931 y(In)k(this)f(form)m(ulation,)h(the)g(elemen)m(t)g (to)h(b)s(e)e(inserted)g(is)g(\014rst)g(giv)m(en)h(as)h(righ)m(t-hand)d (side)354 4044 y(con)m(text)d(of)f(the)f(simpler)e(predicate)i Fo(ins/2)p Fq(,)g(and)g(this)f(predicate's)h(\014rst)g(clause)g (consults)f(the)354 4157 y(con)m(text)34 b Fo(paste\(X\))c Fq(only)i(when)f(it)h(is)f(time)h(to)h(place)g(it)e(within)f(the)j (output)e(list,)h(i.e.)46 b(when)354 4269 y(the)31 b(fact)g Fo(ins\(Ys,[X|Ys]\),paste\(X\))24 b Fq(is)30 b(reac)m(hed.)495 4382 y(Th)m(us)37 b(for)g(this)f(example,)j(w)m(e)f(can)g(also)f (obtain)g(the)h(expressiv)m(e)f(p)s(o)m(w)m(er)h(of)f(in)m(tuitionis-) 354 4495 y(tic/linear)e(implication)e(b)m(y)i(this)g(kind)f(of)i(\(m)m (uc)m(h)g(more)g(e\016cien)m(t\))g(direct)f(manipulation)e(of)354 4608 y(BinProlog's)d(\014rst)g(order)f(con)m(tin)m(uations.)354 4892 y Fp(10)135 b(Direct)72 b(binary)f(clause)g(programming)h(and)f (full-blo)l(wn)623 5041 y(con)l(tin)l(uations)354 5244 y Fq(BinProlog)30 b(3.45)i(supp)s(orts)c(direct)i(manipulation)e(of)i (binary)f(clauses)h(denoted)1962 5493 y(43)p eop 44 43 bop 498 375 a Fo(Head)46 b(::-)h(Body.)354 587 y Fq(They)28 b(giv)m(e)g(full)e(p)s(o)m(w)m(er)i(to)h(the)f(kno)m (wledgeable)g(programmer)g(on)g(the)g(future)f(of)h(the)g(compu-)354 700 y(tation.)39 b(Note)25 b(that)f(suc)m(h)f(a)h(facilit)m(y)f(is)g (not)g(a)m(v)-5 b(ailable)23 b(in)g(con)m(v)m(en)m(tional)h(W)-10 b(AM-based)24 b(systems)354 813 y(where)30 b(con)m(tin)m(uations)g(are) h(not)g(\014rst-order)e(ob)5 b(jects.)495 926 y(W)-8 b(e)32 b(can)f(use)f(them)g(to)h(write)f(programs)g(lik)m(e:)442 1125 y Fd(member_cont\(X,C)o(on)o(t\):)o(:-)529 1225 y(strip_cont\(Cont)o(,X,)o(Ne)o(wCo)o(nt)o(,tr)o(ue)o(\(N)o(ewC)o(on)o (t\)\))o(.)442 1325 y(member_cont\(X,C)o(on)o(t\):)o(:-)529 1424 y(strip_cont\(Cont)o(,_,)o(Ne)o(wCo)o(nt)o(,me)o(mb)o(er)o(_co)o (nt)o(\(X,)o(Ne)o(wC)o(ont)o(\)\))o(.)442 1624 y(test\(X\):-member)o (_c)o(ont)o(\(X)o(\),a)o(,b)o(,c.)354 1823 y Fq(A)h(query)f(lik)m(e)442 1997 y Fd(?-test\(X\).)354 2210 y Fq(will)e(return)h Fo(X=a;)47 b(X=b;)f(X=c;)h(X=)p Fq(whatev)m(er)30 b(follo)m(ws)g(from)f (the)i(calling)d(p)s(oin)m(t)i(of)g Fo(test\(X\))p Fq(.)354 2409 y Fd(catch\(Goal,Name,C)o(on)o(t\):)o(:-)485 2509 y(lval\(catch_throw)o(,Na)o(me)o(,Co)o(nt)o(,ca)o(ll)o(\(G)o(oal)o(,C)o (ont)o(\)\))o(.)354 2708 y(throw\(Name,_\)::-)485 2807 y(lval\(catch_throw)o(,Na)o(me)o(,Co)o(nt)o(,no)o(nv)o(ar)o(\(Co)o(nt)o (,Co)o(nt)o(\)\))o(.)354 3020 y Fq(where)39 b Fo(lval\(K1,K2,Val\))d Fq(is)i(a)i(BinProlog)f(primitiv)m(e)e(whic)m(h)h(uni\014es)g Fo(Val)g Fq(with)g(a)i(bac)m(k-)354 3133 y(trac)m(k)-5 b(able)36 b(global)e(logical)g(v)-5 b(ariable)34 b(accessed)i(b)m(y)f (hashing)e(on)i(t)m(w)m(o)h(\(constan)m(t)g(or)f(v)-5 b(ariable\))354 3246 y(k)m(eys)31 b Fo(K1,K2)p Fq(.)495 3359 y(This)i(allo)m(ws)g(for)h(instance)g(to)h(a)m(v)m(oid)f (execution)h(of)f(the)g(in\014nite)e Fo(loop)h Fq(from)g(inside)f(the) 354 3472 y(predicate)f Fo(b/1)p Fq(.)354 3671 y Fd(loop:-loop.)354 3870 y(c\(X\):-b\(X\),loop.)354 4069 y(b\(hello\):-throw\(h)o(er)o (e\).)354 4169 y(b\(bye\).)354 4368 y(go:-catch\(c\(X\),he)o(re)o(\),w) o(ri)o(te\()o(X\))o(,nl)o(.)495 4581 y Fq(Notice)h(that)f(due)f(to)h (its)f(simple)f Fh(tr)-5 b(anslation)35 b(semantics)d Fq(this)d(program)h(still)f(has)h(a)h(\014rst)354 4694 y(order)d(reading)f(and)h(that)h(BinProlog's)e Fo(lval/3)g Fq(is)g(not)h(essen)m(tial)g(as)h(it)e(can)i(b)s(e)e(em)m(ulated)h(b)m (y)354 4807 y(an)j(extra)g(argumen)m(t)g(passed)e(to)j(all)d (predicates.)495 4920 y(Although)e(implemen)m(tation)f(of)h Fo(catch)f Fq(and)h Fo(throw)e Fq(requires)h(full-blo)m(wn)e(con)m(tin) m(uations,)354 5032 y(w)m(e)31 b(can)g(see)g(that)g(at)g(user)f(lev)m (el,)g(ordinary)f(clause)h(notation)g(is)g(enough.)1962 5493 y(44)p eop 45 44 bop 354 375 a Fp(11)135 b(Bac)l(ktrac)l(k)-7 b(able)46 b(destructiv)l(e)g(assignmen)l(t)354 581 y Fi(11.1)113 b(Up)s(datable)52 b(logical)d(arra)m(ys)k(in)e(Prolog:)77 b(\014xing)51 b(the)g(seman)m(tics)g(of)666 697 y Fa(setarg/3)354 869 y Fq(Let)39 b(us)e(recall)g(that)i Fo(setarg\(I,Term,Value\))32 b Fq(installs)k Fo(Value)g Fq(as)i(the)g Fo(I)p Fq(-th)g(argumen)m(t)g (of)354 982 y Fo(Term)30 b Fq(and)f(tak)m(es)j(care)f(to)g(put)f(bac)m (k)h(the)g(old)e(v)-5 b(alue)30 b(found)f(there)i(on)f(bac)m(ktrac)m (king.)495 1095 y Fo(Setarg/3)43 b Fq(is)g(probably)f(the)j(most)g (widelly)c(used)j(\(at)h(least)g(in)e(SICStus,)j(Aquarius,)354 1208 y(Eclipse,)38 b(ProLog-b)m(y-BIM,)h(BinProlog\),)f(incarnation)e (of)h(bac)m(ktrac)m(k)-5 b(able)38 b(m)m(utable)f(arra)m(ys)354 1321 y(\(o)m(v)m(erloaded)32 b(on)e(Prolog's)h(univ)m(ersal)d Fh(term)j Fq(t)m(yp)s(e\).)495 1434 y(Unfortunately)26 b Fo(setarg/3)e Fq(lac)m(ks)j(a)f(logical)g(seman)m(tics)h(and)e(is)h (implemen)m(ted)f(di\013eren)m(tly)354 1546 y(in)34 b(in)g(v)-5 b(arious)34 b(systems.)55 b(This)34 b(is)g(ma)m(y)i(b)s(e)e(the)h (reason)h(wh)m(y)e(the)i(standardization)e(\(see)i(its)354 1659 y(absence)h(from)e(the)i(Prolog)f(ISO)f(Draft\))i(of)f Fo(setarg/3)e Fq(can)i(hardly)e(reac)m(h)j(a)f(consensus)g(in)354 1772 y(the)31 b(predictable)e(future.)495 1885 y(Ideally)-8 b(,)24 b Fo(setarg/3)c Fq(should)g(w)m(ork)j(as)f(if)g(a)h(new)f(term)g (\(arra)m(y\))i(had)d(b)s(een)h(created)i(iden)m(tical)354 1998 y(to)31 b(the)g(old)e(one,)i(except)g(for)f(the)h(giv)m(en)f (elemen)m(t.)41 b(There's)30 b(no)g(reason)h(to)g(`destro)m(y')g(a)g (priori)354 2111 y(the)26 b(con)m(ten)m(t)i(of)e(the)g(up)s(dated)e (cell)h(or)h(to)g(mak)m(e)h(it)e(sub)5 b(ject)26 b(to)g(ugly)f(side)g (e\013ects.)40 b(Should)23 b(this)354 2224 y(ha)m(v)m(e)37 b(to)f(happ)s(en)e(for)h(implemen)m(tation)f(reasons,)j(a)f(run-time)e (error)h(should)e(b)s(e)i(pro)s(duced,)354 2337 y(at)c(least,)g (although)f(this)f(is)h(not)g(the)h(case)g(in)e(an)m(y)i(implemen)m (tation)e(w)m(e)i(kno)m(w)f(of.)495 2450 y(Let)22 b(us)f(start)h(with)f (an)g(ine\016cien)m(t)g(but)g(fairly)e(clean)j(arra)m(y-up)s(date)f(op) s(eration,)i Fo(setarg/4)p Fq(.)354 2661 y Fo (setarg\(I,OldTerm,NewValue)o(,New)o(Term)o(\):-)450 2774 y(functor\(OldTerm,F,N\),)450 2887 y(functor\(NewTerm,F,N\),)450 3000 y(arg\(I,NewTerm,NewValue\))o(,)450 3113 y (copy_args_except_I\(N,I,)o(OldT)o(erm,)o(New)o(Term)o(\).)354 3339 y(copy_args_except_I\(0,_,_,)o(_\):-)o(!.)354 3452 y(copy_args_except_I\(I,I,Ol)o(d,Ne)o(w\):-)o(!,I)o(1)42 b(is)47 b(I-1,)450 3565 y(copy_args_except_I\(I1,I)o(,Old)o(,New)o(\).) 354 3678 y(copy_args_except_I\(N,I,Ol)o(d,Ne)o(w\):-)o(N1)41 b(is)48 b(N-1,arg\(N,Old,X\),arg\(N,)o(New,)o(X\),)450 3791 y(copy_args_except_I\(N1,I)o(,Old)o(,New)o(\).)495 4002 y Fq(W)-8 b(e)46 b(can)f(supp)s(ose)f(that)h(functor)f(and)g(arg)h (are)g(sp)s(eci\014ed)e(b)m(y)i(a)g(\(\014nite\))f(set)i(of)f(facts)354 4115 y(describing)27 b(their)h(b)s(eha)m(vior)g(on)h(the)g(signature)f (of)h(the)g(program.)40 b(F)-8 b(or)30 b(a)f(giv)m(en)g(program,)g(w)m (e)354 4228 y(can)i(ob)m(viously)e(see)i(setarg/4)h(as)f(b)s(eing)e(sp) s(eci\014ed)g(similarly)e(b)m(y)j(a)h(\014nite)e(set)i(of)f(facts.)495 4341 y(F)-8 b(urthermore,supp)s(ose)34 b(that)g(all)g(uses)f(of)i (setarg/3)h(are)f(replaced)f(b)m(y)g(calls)f(to)i(setarg/4)354 4454 y(with)29 b(the)i(new)f(states)h(passed)f(around)g(with)f(DCG-st)m (yle)i(c)m(hained)f(v)-5 b(ariables.)495 4567 y(This)38 b(lo)s(oks)g(lik)m(e)g(a)h(go)s(o)s(d)g(de\014nition)e(of)i(the)g(in)m (tended)f(meaning)g(of)h(a)g(program)g(using)354 4680 y(setarg/3.)495 4793 y(W)-8 b(e)30 b(will)25 b(sho)m(w)j(that)h(actual) f(implemen)m(tations)f(\(Sicstus)g(and)g(BinProlog\))h(can)g(b)s(e)f (made)354 4905 y(to)j(b)s(eha)m(v)m(e)g(accordingly)f(to)h(this)e (seman)m(tics)i(through)f(a)g(small,)g(source)g(lev)m(el)g(wrapping)e (in)m(to)354 5018 y(a)k(suitable)e(ADT.)495 5131 y(Let)37 b Fo('$box'/1)d Fq(b)s(e)h(a)h(new)g(functor)f(not)i(in)d(the)j (signature)e(of)h(an)m(y)g(user)g(program.)57 b(By)354 5244 y(de\014ning)1962 5493 y(45)p eop 46 45 bop 354 375 a Fo(safe_arg\(I,Term,Val\):-arg)o(\(I,T)o(erm,)o ('$b)o(ox'\()o(Val\))o(\).)354 601 y(safe_setarg\(I,Term,Val\):-)o (seta)o(rg\(I)o(,Te)o(rm,')o($box)o('\(V)o(al\)\))o(.)495 813 y Fq(Using)25 b Fo('$box'/1)f Fq(in)g Fo(safe_arg/3)f Fq(\()p Fo(safe_setarg/3)p Fq(\))f(ensures)j(that)h(cell)f Fo(I)g Fq(of)h(the)g(func-)354 926 y(tor)i Fo(Term)f Fq(will)d(b)s(e)j(indirectly)e(accessed)k(\(up)s(dated\))e(ev)m(en)h (if)e(it)i(con)m(tains)f(a)h(v)-5 b(ariable)26 b(whic)m(h)h(in)354 1039 y(a)d(W)-10 b(AM)24 b(w)m(ould)e(b)s(e)h(created)h(on)g(place)f (and)g(therefore)g(it)g(w)m(ould)f(b)s(e)h(sub)5 b(ject)23 b(of)h(unpredictable)354 1152 y(side-e\013ects.)495 1265 y(The)30 b(reason)h(of)f(the)h(draconian)e(w)m(arning)h(in)f(some)i (Prolog)f(man)m(uals)f(man)m(ual)582 1453 y(...setarg)43 b(is)d(only)h(safe)g(if)g(there)g(is)g(no)g(further)f(use)h(of)h(the)f (old)g(v)-5 b(alue)40 b(of)i(the)582 1565 y(replaced)29 b(argumen)m(t...)354 1753 y(.)47 b(will)30 b(therefore)j(disapp)s(ear)d (and)i(a)h(purely)d(logical)i(setarg)i(\(with)d(a)i Fh(tr)-5 b(anslation)37 b(semantics)354 1866 y Fq(expressible)30 b(in)h(term)i(of)f Fo(setarg/4)p Fq(\))e(can)j(b)s(e)e(implemen)m(ted.) 45 b(Not)33 b(only)e(this)g(ensures)g(refer-)354 1979 y(en)m(tial)g(transparency)g(and)g(allo)m(ws)g(normal)f(references)h (to)i(the)e(old)f(con)m(ten)m(t)k(of)d(the)h(up)s(dated)354 2092 y(cells)42 b(but)h(it)f(also)h(mak)m(es)h(incompatible)d(implemen) m(tations)h(of)h(setarg)h(\(Sicstus,)i(Eclipse,)354 2205 y(BinProlog\))30 b(w)m(ork)h(exactly)g(the)f(same)h(w)m(a)m(y)1892 2172 y Fn(6)1933 2205 y Fq(.)495 2318 y(T)-8 b(o)31 b(\014nish)d(the)j (job)f(prop)s(erly)-8 b(,)29 b(something)h(lik)m(e)f(the)i(follo)m (wing)e(ADT)h(can)h(b)s(e)f(created.)354 2530 y Fo (new_array\(Size,Array\):-)450 2643 y(functor\(Array,'$array',)o(Size)o (\).)354 2869 y(update_array\(Array,I,Val\))o(:-)450 2982 y(safe_setarg\(I,Array,Val)o(\).)354 3208 y (access_array\(Array,I,Valu)o(e\):-)450 3321 y (safe_arg\(I,Array,Value\))o(.)495 3533 y Fq(W)-8 b(e)34 b(suggest)f(to)f(use)g(this)f(ADT)h(in)f(y)m(our)h(program)g(instead)f (of)h(basic)g(setarg)h(when)e(p)s(er-)354 3646 y(formance)g(is)e(not)i (an)f(absoulte)g(requiremen)m(t.)495 3759 y(A)42 b(new)f Fo(change_arg/3)d Fq(builtin)f(has)k(b)s(een)g(added)g(to)h(BinProlog)e (to)i(allo)m(w,)i(e\016cien)m(t)354 3872 y(failure-driv)m(en)31 b(iteration)j(with)e(p)s(ersisten)m(t)h(information.)50 b(It)34 b(w)m(orks)g(lik)m(e)f Fo(setarg/3)e Fq(except)354 3985 y(that)39 b(side-e\013ects)h(are)e(p)s(ermanen)m(t.)65 b(Sould)36 b(unsafe)i(heap)h(ob)5 b(jects)39 b(b)s(e)f(generated)h (through)354 4098 y(the)34 b(precess)f Fo(change_arg/3)e Fq(signals)h(a)h(run-time)g(error.)49 b(This)32 b(is)g(not)i(the)g (case)g(as)g(far)f(the)354 4211 y(result)26 b(is)g(either)h(a)g (constan)m(t)h(\(whic)m(h)f(is)f(do)s(es)g(not)i(need)e(new)h(heap)g (allo)s(cation\))f(or)h(the)g(result)354 4323 y(of)k(mo)m(ving)f(a)h (preexisten)m(t)f(heap)g(ob)5 b(ject)32 b(to)f(a)g(new)e(lo)s(cation.) 495 4436 y(F)-8 b(or)39 b(instance)d(the)i(\(Hask)m(ell-st)m(yle\))g Fo(fold/4)e Fq(predicate)h(\(see)h Fo(library/high.pl)p Fq(\))c(uses)354 4549 y Fo(change_arg/3)17 b Fq(to)k(a)m(v)m(oid)g (painful)d(iteration)h(and)h(slo)m(w)g(side-e\013ects)h(on)f(the)h (dynamic)e(database.)354 4662 y(The)31 b(implemen)m(tation)f(is)h(comp) s(etitiv)m(e)g(is)f(sp)s(eed)h(with)f(hand-written)g(explicitely)f (recursiv)m(e)354 4775 y(co)s(de)i(and)f(uses)g(only)f(memory)h(prop)s (ortional)f(to)i(the)f(size)h(of)f(the)h(answ)m(er.)p 354 4854 1323 4 v 458 4908 a Fm(6)493 4940 y Fl(A)d(further)i(am)n (biguit)n(y)e(in)h(some)g(implemen)n(tations)g(of)h Ff(setarg/3)h Fl(comes)e(from)h(the)f(fact)h(that)f(it)h(is)f(not)354 5031 y(clear)e(if)f(the)g(lo)r(cation)h(itself)g(or)f(its)g (dereferenced)g(con)n(ten)n(ts)g(should)f(b)r(e)h(m)n(utated)1962 5493 y Fq(46)p eop 47 46 bop 354 375 a Fo(\045)48 b(fold,foldl)d(based)h(on)h(safe)g (failure)f(driven)g(destructive)f(change_arg)354 488 y(foldl\(Closure,Null,List,F)o(inal)o(\):-f)o(old)o(\(Clo)o(sure)o(,Nu) o(ll,X)o(^mem)o(ber)o(\(X,L)o(ist\))o(,Fi)o(nal\))o(.)354 714 y(fold\(Closure,Null,I^Gener)o(ator)o(,Fin)o(al\))o(:-)450 827 y(fold0\(s\(Null\),I,Generat)o(or,C)o(losu)o(re,)o(Fina)o(l\).)354 1052 y(fold0\(Acc,I,Generator,Clo)o(sure)o(,_\):)o(-)450 1165 y(term_append\(Closure,arg)o(s\(So)o(Far,)o(I,O)o(\),Se)o(lect)o (or\))o(,)450 1278 y(Generator,)545 1391 y(arg\(1,Acc,SoFar\),)545 1504 y(Selector,)545 1617 y(change_arg\(1,Acc,O\),)450 1730 y(fail.)354 1843 y(fold0\(Acc,_,_,_,Final\):-)450 1956 y(arg\(1,Acc,Final\).)354 2181 y(?-)j(foldl\(+,0,[1,2,3],R\).)354 2294 y(?-)g(fold\(*,1,X^member\(X,[1)o(,2,3)o(]\),R)o(\).)354 2581 y Fp(12)135 b(`In)l(visible')47 b(grammars)354 2784 y Fq(By)32 b(using)e(bac)m(ktrac)m(k)-5 b(able)33 b(setarg/3)h(and)d (logical)g(global)g(v)-5 b(ariables)30 b(\(lv)-5 b(al/3\))32 b(w)m(e)g(can)g(imple-)354 2897 y(men)m(t)24 b(easily)f(a)h(sup)s (erset)e(of)i(DCG)g(grammars)g(practically)e(equiv)-5 b(alen)m(t)23 b(with)f(P)m(eter)j(V)-8 b(anRo)m(y's)354 3010 y(Extended)31 b(DCGs.)43 b(W)-8 b(e)32 b(call)e(them)h Fh(Hidden)i(A)-5 b(c)g(cumulator)35 b(Gr)-5 b(ammars)34 b Fq(as)d(no)g(prepro)s(cessor)354 3122 y(is)f(in)m(v)m(olv)m(ed)h(in)e (their)h(implemen)m(tation.)41 b(It)31 b(turns)f(out)h(that)g(the)g (tec)m(hnique)g(has)f(the)h(adv)-5 b(an-)354 3235 y(tage)28 b(of)e(`meta-programming)g(for)f(free')h(\(without)g(the)g(exp)s(ensiv) m(e)f(phrase/3\),)i(allo)m(ws)e(source)354 3348 y(lev)m(el)31 b(debugging)e(and)h(can)h(b)s(e)f(made)g(more)h(space)g(and)f(time)g (e\016cien)m(t)h(than)g(the)g(usual)e(pre-)354 3461 y(pro)s(cessing)35 b(based)g(implemen)m(tation.)54 b(On)35 b(real)g(examples,)i(their)d(b) s(est)h(use)g(is)g(for)g(writting)354 3574 y(a)30 b(Prolog)g(compiler)e (\(they)i(can)g(con)m(tribute)f(to)h(the)g(writing)e(of)h(compact)i (and)e(e\016cien)m(t)h(co)s(de)354 3687 y(with)35 b(v)m(ery)i(little)e (programming)g(e\013ort\))i(and)f(for)g(for)f(large)i(natural)e (language)i(pro)s(cessing)354 3800 y(systems.)495 3913 y(Basically)-8 b(,)31 b(they)f(w)m(ork)h(as)f(follo)m(ws:)354 4112 y Fd(\045)44 b(tools)354 4311 y(begin_dcg\(Name,Xs)o(\):)o(-lv)o (al)o(\(dc)o(g,)o(Nam)o(e,)o(Xs)o(-Xs)o(\).)354 4511 y(end_dcg\(Name,Xs\):)o(-l)o(val)o(\(d)o(cg,)o(Na)o(me,)o(Xs)o(-[)o (]\).)354 4710 y(w\(Word,Name\):-)442 4809 y(lval\(dcg,Name,S)o(ta)o (te\))o(,)442 4909 y(State=_-[Word|X)o(s2)o(],)442 5009 y(setarg\(2,State,)o(Xs)o(2\).)354 5208 y(begin_dcg\(Xs\):-be)o(gi)o (n_d)o(cg)o(\(de)o(fa)o(ult)o(,X)o(s\))o(.)1962 5493 y Fq(47)p eop 48 47 bop 354 375 a Fd(end_dcg\(Xs\):-end_)o(dc)o(g\(d)o(ef)o(aul)o(t,) o(Xs\))o(.)354 475 y(w\(Word\):-w\(Word,d)o(ef)o(aul)o(t\))o(.)354 674 y(\045)44 b(grammar)354 773 y(x:-ng,v.)354 973 y(ng:-a,n.)354 1172 y(a:-w\(the\).)354 1272 y(a:-w\(a\).)354 1471 y(n:-w\(cat\).)354 1570 y(n:-w\(dog\).)354 1770 y(v:-w\(walks\).)354 1869 y(v:-w\(sleeps\).)354 2069 y(\045)g(test)354 2168 y (go:-begin_dcg\(Xs\))o(,x)o(,en)o(d_)o(dcg)o(\(Y)o(s\),)o(wr)o(it)o (e\(Y)o(s\))o(,nl)o(,f)o(ai)o(l.)354 2367 y(?-)f(go.)354 2467 y([the,cat,walks])354 2567 y([the,cat,sleeps])354 2666 y([the,dog,walks])354 2766 y([the,dog,sleeps])354 2866 y([a,cat,walks])354 2965 y([a,cat,sleeps])354 3065 y([a,dog,walks])354 3164 y([a,dog,sleeps])495 3377 y Fq(The)31 b(program)f(can)h(b)s(e)f(found)f(in)g(progs/setarg)p 2199 3377 28 4 v 34 w(dcg.pl.)41 b(F)-8 b(or)31 b(reasons)g(of)f (e\016ciency)h(\(i.e.)354 3490 y(to)37 b(equal)f(or)g(b)s(eat)g(prepro) s(cessor)f(based)h(DCGs)g(in)f(terms)h(of)g(b)s(oth)g(space)g(and)g (time\))g(Bin-)354 3603 y(Prolog's)44 b(`Hidden)f(Accum)m(ulator)h (Grammars')g(ha)m(v)m(e)i(b)s(een)d(implemen)m(ted)f(in)h(C)h(and)f (are)354 3716 y(accessible)30 b(through)g(the)h(follo)m(wing)e(set)h (of)h(builtins:)354 3915 y Fd(dcg_connect/1)82 b(\045)43 b(works)f(like)g('C'/3)f(with)h(2)h(hidden)e(arguments)354 4015 y(dcg_def/1)127 b(\045)44 b(sets)d(the)i(first)e(hidden)g(DCG)i (argument)354 4114 y(dcg_val/1)127 b(\045)44 b(retrives)c(the)i (current)f(state)g(of)i(the)f(DCG)h(stream)354 4214 y(dcg_tell/1)83 b(\045)44 b(focus)d(on)i(a)g(given)f(DCG)g(stream)f(\(from)g(0)j(to)e (255\))354 4313 y(dcg_telling/1)d(\045)k(returns)d(the)j(number)e(of)i (the)f(current)f(DCGs)h(stream)354 4513 y(\045)i(INVISIBLE)39 b(DCG)k(connect)d(operation:)g(normally)g(macro-expanded)354 4612 y('#'\(Word\):-dcg_co)o(nn)o(ect)o(\(W)o(ord)o(\).)354 4812 y(\045)k(example:)c(?-dcg_phrase\(1,\()o(#a)o(,#b)o(,#)o(c\))o (,X\))o(.)354 4911 y(dcg_phrase\(DcgStr)o(ea)o(m,A)o(xi)o(om,)o(Ph)o (ras)o(e\))o(:-)442 5011 y(dcg_telling\(X\),)o(dc)o(g_t)o(el)o(l\(D)o (cg)o(Str)o(ea)o(m\))o(,)529 5110 y(dcg_def\(Phrase\))o(,)616 5210 y(Axiom,)1962 5493 y Fq(48)p eop 49 48 bop 529 375 a Fd(dcg_val\([]\),)442 475 y(dcg_tell\(X\).)495 777 y Fq(Starting)38 b(with)f(BinProlog)g(3.33)i Fo(dcg_tell/1)d Fq(is)h(bac)m(ktrac)m(k)-5 b(able,)41 b(mostly)d(lik)m(e)f(lv)-5 b(al/3.)354 890 y(Admissible)31 b(v)-5 b(alues)33 b(for)h(X)g(in)e Fo(dcg_tell\(X\))f Fq(are)j(ranging)f(from)g(1)i(to)f(255,)i(whic)m(h)d (giv)m(es)h(\(I)354 1003 y(hop)s(e\))c(enough)h(distinct)d(DCG)j (streams)g(for)f(an)m(y)g(application.)495 1116 y(In)m(visible)19 b(grammars)j(consume)f(no)g(heap,)j(as)d(they)h(are)g(based)f(on)g(bac) m(ktrac)m(k)-5 b(able)23 b(destruc-)354 1229 y(tiv)m(e)42 b(assigmen)m(t)f(implemen)m(ted)e(with)h(a)h(tec)m(hnique)g(called)f Fh(value)i(tr)-5 b(ailing)42 b Fq(lik)m(e)e Fo(setarg/3)p Fq(.)354 1342 y(They)30 b(consume)g(trail)g(only)f(when)g(a)i (nondeterministic)d(situation)h(\(c)m(hoice-p)s(oin)m(t\))i(arrises.) 495 1455 y(If)f(y)m(ou)h(try)f(the)h(follo)m(wing)e(program:)354 1645 y Fd(\045)44 b(grammar)354 1744 y(ax:-ng,v.)354 1944 y(ng:-a,n.)354 2143 y(a:-dcg_connect\(th)o(e\))o(.)354 2242 y(a:-dcg_connect\(a\))o(.)354 2442 y(n:-dcg_connect\(ca)o(t\))o(.) 354 2541 y(n:-dcg_connect\(do)o(g\))o(.)354 2741 y(v:-dcg_connect\(wa)o (lk)o(s\).)354 2840 y(v:-dcg_connect\(sl)o(ee)o(ps\))o(.)354 3039 y(go:-)442 3139 y(st\(H,T\),)442 3239 y(dcg_def\(Xs\),ax,)o(dc)o (g_v)o(al)o(\([])o(\),)442 3338 y(pp\(Xs,H,T\),nl,)442 3438 y(fail.)354 3637 y(st\(H,T\):-statisti)o(cs)o(\(gl)o(ob)o(al_)o (st)o(ack)o(,[)o(H,)o(_]\))o(,s)o(tat)o(is)o(ti)o(cs\()o(tr)o(ail)o(,[) o(T,_)o(]\))o(.)354 3836 y(pp\(O,H0,T0\):-)442 3936 y(st\(H1,T1\),T)39 b(is)j(T1-T0,H)f(is)i(H1-H0,)442 4036 y(write\([heap=H,t)o(ra)o(il=)o (T])o(\),w)o(ri)o(te\()o('=)o(=>)o('\),)o(wr)o(ite)o(\(O)o(\),)o(nl,)o (fa)o(il.)354 4135 y(pp\(_,_,_\).)354 4338 y Fq(it)30 b(will)e(prin)m(t)h(out)i(something)e(lik)m(e:)354 4528 y Fd([heap)42 b(=)h(308,trail)d(=)j(44]==>[the,cat,w)o(alk)o(s])354 4628 y([heap)f(=)h(308,trail)d(=)j(32]==>[the,cat,s)o(lee)o(ps)o(])354 4728 y([heap)f(=)h(308,trail)d(=)j(32]==>[the,dog,w)o(alk)o(s])354 4827 y([heap)f(=)h(308,trail)d(=)j(20]==>[the,dog,s)o(lee)o(ps)o(])354 4927 y([heap)f(=)h(308,trail)d(=)j(44]==>[a,cat,wal)o(ks])354 5026 y([heap)f(=)h(308,trail)d(=)j(32]==>[a,cat,sle)o(eps)o(])354 5126 y([heap)f(=)h(308,trail)d(=)j(32]==>[a,dog,wal)o(ks])354 5226 y([heap)f(=)h(308,trail)d(=)j(20]==>[a,dog,sle)o(eps)o(])1962 5493 y Fq(49)p eop 50 49 bop 354 375 a Fp(13)135 b(BinProlog's)46 b(C-in)l(terface)354 578 y Fq(T)-8 b(o)35 b(b)s(e)e(able)g(to)h(extend)g(BinProlog)f(and)g (p)s(ossibly)e(em)m(b)s(edd)i(it)g(as)h(logic)f(engine)g(in)g(y)m(our)g (no)354 691 y(run-time)20 b(fee)h(application)e(y)m(ou)i(will)d(need)j (a)g(BinProlog)f(C-source)g(co)s(de)h(licence.)37 b(See)21 b(the)g(\014les)354 804 y(SOUR)m(CE.LICENCE)e(and)h(PRICING)g(for)g (more)h(information.)35 b(Y)-8 b(ou)21 b(can)g(also)f(in)m(teract)i (with)354 917 y(other)34 b(languages)g(under)f(UNIX)h(using)e(the)i (bidireactional)d(pip)s(e)h(based)h(in)m(terface)i(starting)354 1029 y(from)30 b(BinProlog's)g(Tcl/Tk)g(in)m(terfaced)g(\(see)h (directory)f(TCL\).)495 1142 y(The)g(follo)m(wing)f(sequence)i(of)f (quic)m(k)g(examples)g(sho)m(ws)g(ho)m(w)h(it)f(w)m(orks.)354 1386 y Fi(13.1)113 b(A)37 b(Demo)g(Program)354 1557 y Fq(Starting)j(with)f(v)m(ersion)h(3.39)i(the)e(C-in)m(terface)h(has)f (b)s(een)g(mo)m(v)m(ed)h(in)e(directory)h Fo(c_inter)p Fq(.)354 1670 y(The)35 b(discussion)d(whic)m(h)i(follo)m(ws)g (basically)g(explains)f(the)i(con)m(ten)m(t)i(of)e(the)h(\014les)e(c.c) i(c.h)f(and)354 1783 y(c.pl)30 b(in)f(this)g(directory)-8 b(.)495 1896 y(Once)30 b(BinProlog)f(is)g(correctly)h(installed)e(as)i (\014le)f("bp")h(somewhere)f(in)g(y)m(our)h(path)f(along)354 2009 y(with)39 b(the)i(libraries)c(bp.o)j(and)g(w)m(am.o)i(whic)m(h)d (should)f(b)s(e)i(in)f(directory)h Fo(../src)e Fq(and)i(y)m(ou)354 2122 y(ha)m(v)m(e)35 b(a)f(C-compiler)e(around,)h(y)m(ou)h(can)g (simply)d(do)i Fo(make)f Fq(in)g(directory)h Fo(c_inter)f Fq(to)i(create)354 2235 y(a)c(standalone)f(application)f(whic)m(h)h(in) m(tegrates)h(the)g(functionalit)m(y)e(of)i(the)f(C-co)s(de)h(in)e (\014le)h(c.c.)495 2348 y(T)-8 b(o)30 b(test)g(the)g(resulting)d (standalone)i(executable)h Fo(c_binpro)p Fq(,)e(try)h(out)g(the)h(demo) f Fo(c_test)354 2461 y Fq(de\014ned)35 b(in)f(\014le)h Fo(c.pl)p Fq(.)55 b(Start)36 b(running)d(it)i(b)m(y)h(t)m(yping)f Fo(c_binpro)e Fq(and)i(then)h(t)m(yp)s(e)f Fo(c_test.)354 2574 y Fq(at)29 b(the)f(Prolog)f(prompt.)39 b(T)-8 b(o)28 b(a)m(v)m(oid)g(the)g(prompt)f(and)g(directly)f(launc)m(h)h(the)h (application)e(add)354 2687 y Fo(main:-c_test.)p Fq(")i(in)h(\014le)g (c.pl)h(b)s(efore)g(t)m(yping)g Fo(make)p Fq(.)354 2930 y Fi(13.2)113 b(Calling)35 b(C)i(from)g(BinProlog:)48 b(adding)38 b(new)f(builtins)354 3102 y Fq(New)f(builtins)c(are)k (added)f(in)f Fo(headers.pl)f Fq(and)i(after)h(a)g("mak)m(e)i (realclean;)g(mak)m(e")f(a)f(new)354 3215 y(v)m(ersion)43 b(of)h(BinProlog)f(con)m(taining)g(them)h(is)e(generated)j (automatically)-8 b(.)81 b(Starting)43 b(from)354 3327 y Fo(headers.pl)27 b Fq(the)i(system)g(will)e(\014rst)i(generate)h(the) g(\014les)e Fo(defs.h,)46 b(prof.h,)f(builtins.pl)354 3440 y Fq(and)20 b(then)g(recompile)f(itself.)36 b(F)-8 b(or)21 b(this)f(recompilation)e(either)i(a)h(previous)e(v)m(ersion)g (of)i(BinProlog)3708 3407 y Fn(7)495 3553 y Fq(or)31 b(SICStus)d(Prolog)j(is)e(used.)495 3666 y(An)h(example)h(of)f (declaration)g(in)f Fo(headers.pl)f Fq(is:)442 3865 y Fd(b0\(+/3,arith\(1\))o(,i)o(n_b)o(od)o(y\).)37 b(\045)43 b(arity=3+1)d(by)j(binarization)354 4078 y Fq(Notice)37 b(that)g(arith\(1\))g(means)f(that)g(it)g(is)f("lik)m(e)h(an)g (arithmetic)g(functions")f(whic)m(h)g(returns)354 4191 y Fh(one)c Fq(v)-5 b(alue,)30 b(i.e)g(this)g(should)e(b)s(e)i(used)f (as)i(in)442 4390 y Fd(+\(0,1,Result\).)354 4603 y Fq(I)36 b(w)m(ould)f(suggest)h(to)h(start)g(with)d(the)i(simplest)e(form)i(of)g (in)m(teraction:)52 b(a)36 b(call)f(of)h(y)m(our)g(o)m(wn)354 4716 y(C-co)s(de)d(from)e(BinProlog.)45 b(T)-8 b(ry)32 b(mo)s(difying)e(in)g(the)j(\014le)e(c.c)i(\(pro)m(vided)e(with)g(the)h (C-sources)354 4828 y(of)40 b(BinProlog,)h(in)d(directory)g Fo(c_inter)p Fq(\),)i(the)g(function)e Fo(new_builtin\(\))d Fq(whic)m(h)j(lo)s(oks)h(as)354 4941 y(follo)m(ws:)p 354 5003 1323 4 v 458 5057 a Fm(7)493 5088 y Fl(Use)25 b("mak)n(e)g(remak)n(e")g(if)i(BinProlog)g(is)g(the)e(only)h(Prolog)h (around.)1962 5493 y Fq(50)p eop 51 50 bop 354 475 a Fd(/*)485 574 y(New)42 b(builtins)f(can)h(be)h (called)e(from)h(Prolog)f(as:)485 674 y(new_builtin\(0,,)o()o(\))485 873 y(X\(1\))h(contains)e (the)j(integer)d(`opcode')h(of)h(your)g(builtin)485 973 y(X\(2\))g(contains)e(your)i(input)g(arg)485 1072 y(regs[I])f(contains) f(somthing)g(that)i(will)g(be)h(unified)e(with)h(what)g(you)g(return) 616 1172 y(\(the)g(precise)e(value)i(of)h(I)g(depends)e(on)h(the)h (register)d(allocator\).)485 1371 y(You)i(are)h(expected)d(to)j (`return')d(either)529 1471 y(-)j(a)g(non-null)d(object)h(that)h(will)g (be)h(unified)e(with)h(,)c(or)529 1570 y(-)43 b(NULL)f(to)h(signal)e(FAILURE)485 1770 y(As)i(the)f(returned)e(object) i(will)g(be)g(in)h(a)g(register)d(this)485 1869 y(can)i(be)h(used)f (for)g(instance)f(to)i(add)f(a)h(garbage)e(collector)485 1969 y(that)h(moves)g(every)f(data)h(area)g(around...)354 2168 y(*/)354 2367 y(term)g(new_builtin\(H,reg)o(s,)o(A,P)o(,w)o(am\)) 442 2467 y(register)e(term)i(H,regs,*A;)442 2567 y(register)e(instr)h (P;)442 2666 y(register)f(stack)h(wam;)354 2766 y({)87 b(BP_check_call\(\);)485 2866 y(switch\(BP_op\))442 2965 y({)529 3065 y(/*)42 b(for)h(beginners)d(...)i(*/)529 3264 y(case)g(0:)659 3364 y(/*)h(this)f(just)g(returns)f(your)h(input)f (argument)f(\(default)h(behavior\))f(*/)529 3463 y(break;)529 3663 y(case)i(1:)616 3762 y(BP_result=BP_int)o(eg)o(er\()o(13)o(\);)37 b(/*)43 b(this)f(example)e(returns)h(13)i(*/)529 3862 y(break;)529 4061 y(case)f(2:)616 4161 y(BP_result=BP_ato)o(m\()o("he)o (ll)o(o"\))o(;)37 b(/*)43 b(this)f(example)f(returns)f('hello')h(*/)529 4260 y(break;)529 4460 y(/*)h(for)h(experts)d(...)j(*/)529 4659 y(case)f(3:)g(/*)h(iterative)d(list)i(construction)d(*/)529 4758 y({)k(cell)f(middle,last,F1,F)o(2;)37 b(int)42 b(i;)616 4858 y(BP_make_float\(F1)o(,)37 b(77.0/2\);)616 4958 y(BP_make_float\(F2)o(,)g(3.14\);)616 5157 y(BP_begin_put_lis)o(t\()o (mid)o(dl)o(e\);)1962 5493 y Fq(51)p eop 52 51 bop 747 375 a Fd(BP_put_list\(BP_)o(int)o(eg)o(er\()o(33)o(\)\))o (;)747 475 y(BP_put_list\(F1\))o(;)747 574 y(BP_put_list\(BP_)o(str)o (in)o(g\(")o(he)o(ll)o(o"\))o(\);)747 674 y(BP_put_list\(F2\))o(;)616 773 y(BP_end_put_list\()o(\);)616 973 y(BP_begin_put_lis)o(t\()o(las)o (t\))o(;)703 1072 y(for\(i=0;)40 b(i<5;)i(i++\))g({)790 1172 y(BP_put_list\(BP_in)o(te)o(ger)o(\(i)o(\)\))o(;)703 1272 y(})616 1371 y(BP_end_put_list\()o(\);)616 1570 y(BP_begin_put_lis)o(t\()o(BP_)o(re)o(sul)o(t\))o(;)703 1670 y(BP_put_list\(BP_s)o(tri)o(ng)o(\("f)o(ir)o(st)o("\)\))o(;)703 1770 y(BP_put_list\(midd)o(le\))o(;)703 1869 y(BP_put_list\(last)o(\);) 703 1969 y(BP_put_list\(F1\);)703 2069 y(BP_put_list\(F2\);)616 2168 y(BP_end_put_list\()o(\);)529 2268 y(})h(break;)529 2467 y(case)f(4:)g(/*)h(cons)f(style)g(list)g(construction)c(*/)616 2567 y(BP_begin_cons\(\);)616 2666 y(BP_result=)659 2766 y(BP_cons\()790 2866 y(BP_integer\(1\),)790 2965 y(BP_cons\()1008 3065 y(BP_integer\(2\),)1008 3164 y(BP_nil)790 3264 y(\))659 3364 y(\);)616 3463 y(BP_end_cons\(\);)529 3563 y(break;)529 3762 y(case)k(5:)g(/*)h(for)f(hackers)f(only)h(...)g(*/)h(;)616 3862 y(BP_result=\(cell\))o(H;)616 4061 y(H[0]=g.DOT;)616 4161 y(H[1]=X\(2\);)616 4360 y(H[2]=g.DOT;)616 4460 y (H[3]=BP_integer\()o(99)o(\);)616 4659 y(H[4]=g.DOT;)616 4758 y(H[5]=\(cell\)\(H+5\))o(;)37 b(/*)43 b(new)g(var)f(*/)616 4958 y(H[6]=g.DOT;)616 5057 y(H[7]=\(cell\)\(H+5\))o(;)37 b(/*)43 b(same)f(var)g(as)h(previously)d(created)g(*/)1962 5493 y Fq(52)p eop 53 52 bop 616 375 a Fd(H[8]=g.DOT;)616 475 y(H[9]=BP_atom\("th)o(at)o ('s)37 b(it"\);)616 674 y(H[10]=g.NIL;)616 773 y(H+=11;)529 873 y(break;)529 1072 y(case)42 b(6:)616 1172 y(BP_fail\(\);)529 1272 y(break;)529 1471 y(case)g(7:)616 1570 y({)87 b(cell)42 b(T=BP_input;)747 1670 y(if\(BP_is_intege)o(r\(T)o(\)\))877 1770 y({fprintf\(g.tellfi)o(le,)o("i)o(nt)o(ege)o(r:)37 b(\045ld\\n",BP_get_si)o(ngl)o(e_)o(in)o(teg)o(er)o(\(T\))o(\);)921 1869 y(BP_result=BP_int)o(ege)o(r\()o(-1)o(\);)877 1969 y(})747 2069 y(else)877 2168 y(BP_fail\(\);)616 2268 y(})529 2367 y(break;)485 2567 y(case)42 b(8:)h(/*)g(for)f(experts:)e (calling)h(BinProlog)f(from)i(C)h(*/)616 2666 y({)g(cell)f(L,R,Goal;) 703 2866 y(BP_begin_put_lis)o(t\(L)o(\);)790 2965 y(BP_put_list\(BP_st) o(ri)o(ng\()o("o)o(ne)o("\)\))o(;)790 3065 y(BP_put_list\(BP_in)o(te)o (ger)o(\(2)o(\)\))o(;)790 3164 y(BP_put_list\(BP_st)o(ri)o(ng\()o("t)o (hr)o(ee")o(\)\))o(;)790 3264 y(BP_put_list\(BP_in)o(pu)o(t\);)37 b(/*)42 b(whatever)f(comes)g(as)i(input)f(*/)703 3364 y(BP_end_put_list\()o(\);)703 3563 y(BP_put_functor\(G)o(oal)o(,")o (app)o(en)o(d")o(,3\))o(;)703 3663 y(BP_put_old_var\(L)o(\);)703 3762 y(BP_put_old_var\(L)o(\);)703 3862 y(BP_put_new_var\(R)o(\);)703 4061 y(BP_prolog_call\(G)o(oal)o(\);)37 b(/*)43 b(this)f(will)g(return) f(NULL)h(on)g(failure)f(!!!*/)703 4260 y(BP_put_functor\(G)o(oal)o(,")o (wri)o(te)o(",)o(1\);)703 4360 y(BP_put_old_var\(R)o(\);)703 4559 y(BP_prolog_call\(G)o(oal)o(\);)c(/*)43 b(calls)e(write/1)g(*/)703 4758 y(BP_put_functor\(G)o(oal)o(,")o(nl")o(,0)o(\);)703 4958 y(BP_prolog_call\(G)o(oal)o(\);)c(/*)43 b(calls)e(nl/0)h(*/)703 5157 y(BP_result=R;)d(/*)j(returns)f(the)h(appended)f(list)h(to)g (Prolog)g(*/)1962 5493 y Fq(53)p eop 54 53 bop 616 475 a Fd(})616 574 y(break;)529 773 y(case)42 b(10:)g(/*)h(for)f(experts:)e(calling)h(BinProlog)f(from)i(C)h(*/)616 873 y({)g(cell)f(L,R,Goal;)703 1072 y(BP_begin_put_lis)o(t\(L)o(\);)790 1172 y(BP_put_list\(BP_st)o(ri)o(ng\()o("o)o(ne)o("\)\))o(;)790 1272 y(BP_put_list\(BP_in)o(te)o(ger)o(\(2)o(\)\))o(;)790 1371 y(BP_put_list\(BP_st)o(ri)o(ng\()o("t)o(hr)o(ee")o(\)\))o(;)790 1471 y(BP_put_list\(BP_in)o(pu)o(t\);)37 b(/*)42 b(whatever)f(comes)g (as)i(input)f(*/)703 1570 y(BP_end_put_list\()o(\);)703 1770 y(BP_put_functor\(G)o(oal)o(,")o(cut)o(_t)o(es)o(t",)o(3\))o(;)c (/*)k(see)h(c.pl)f(*/)703 1869 y(BP_put_old_var\(L)o(\);)703 1969 y(BP_put_old_var\(L)o(\);)703 2069 y(BP_put_new_var\(R)o(\);)703 2268 y(BP_prolog_call\(G)o(oal)o(\);)37 b(/*)43 b(this)f(will)g(return) f(NULL)h(on)g(failure)f(!!!*/)703 2467 y(BP_put_functor\(G)o(oal)o(,")o (wri)o(te)o(",)o(1\);)703 2567 y(BP_put_old_var\(R)o(\);)703 2766 y(BP_prolog_call\(G)o(oal)o(\);)c(/*)43 b(calls)e(write/1)g(*/)703 2965 y(BP_put_functor\(G)o(oal)o(,")o(nl")o(,0)o(\);)703 3164 y(BP_prolog_call\(G)o(oal)o(\);)c(/*)43 b(calls)e(nl/0)h(*/)703 3364 y(BP_result=R;)d(/*)j(returns)f(the)h(appended)f(list)h(to)g (Prolog)g(*/)616 3563 y(})616 3663 y(break;)485 3862 y(case)g(11:)g(/*)h(CALLING)e(BinProlog)f(on)i(a)i(NEW)e(ENGINE)f(from) h(C*/)616 3961 y({)h(stack)f(Engine;)703 4061 y(cell)g(Goal,Answer;)703 4161 y(cell)g(Xs,X;)703 4360 y(BP_begin_put_lis)o(t\(X)o(s\))o(;)790 4460 y(BP_put_list\(BP_st)o(ri)o(ng\()o("n)o(ew)o(_en)o(gi)o(ne_)o(te)o (st)o("\)\))o(;)790 4559 y(BP_put_list\(BP_in)o(pu)o(t\);)37 b(/*)42 b(whatever)f(comes)g(as)i(input)f(*/)790 4659 y(BP_put_list\(BP_in)o(te)o(ger)o(\(1)o(00)o(\)\);)790 4758 y(BP_put_list\(BP_in)o(te)o(ger)o(\(2)o(00)o(\)\);)790 4858 y(BP_put_list\(BP_in)o(te)o(ger)o(\(3)o(00)o(\)\);)703 4958 y(BP_end_put_list\()o(\);)703 5157 y(BP_put_functor\(G)o(oal)o(,") o(mem)o(be)o(r")o(,2\))o(;)1962 5493 y Fq(54)p eop 55 54 bop 703 375 a Fd(BP_put_new_var\(X)o(\);)703 475 y(BP_put_old_var\(X)o(s\);)703 674 y(Engine=BP_create)o(_en)o(gi)o (ne\()o(wa)o(m,)o(100)o(,5)o(0,5)o(0\))o(;)703 873 y(BP_load_engine\(E) o(ngi)o(ne)o(,Go)o(al)o(,X)o(\);)703 1072 y(while\(\(Answer=\(c)o(ell)o (\)a)o(sk_)o(en)o(gi)o(ne\()o(En)o(gin)o(e\))o(\)\))790 1172 y({)43 b(cell)f(Goal1;)877 1371 y(BP_put_functor\(Go)o(al1)o(,")o (wr)o(ite)o(",)o(1\);)877 1471 y(BP_put_old_var\(X\))o(;)877 1670 y(BP_prolog_call\(Go)o(al1)o(\);)37 b(/*)43 b(calls)e(write/1)g (*/)877 1869 y(BP_put_functor\(Go)o(al1)o(,")o(nl)o(",0)o(\);)877 2069 y(BP_prolog_call\(Go)o(al1)o(\);)c(/*)43 b(calls)e(nl/0)h(*/)790 2268 y(})703 2367 y(BP_result=X;)d(/*)j(returns)f(the)h(now)h(free)f (variable)e(*/)703 2467 y(BP_destroy_engin)o(e\(E)o(ng)o(ine)o(\);)616 2567 y(})616 2666 y(break;)442 2866 y(case)h(12:)i(/*)g(CALLING)d(from) i(C)h(BinProlog)d(on)j(a)g(NEW)f(ENGINE.)965 2965 y(The)g(friendliest)d (way...)i(*/)616 3065 y({)i(stack)f(Engine;)703 3164 y(cell)g(Goal,Answer;)703 3264 y(cell)g(Xs,X;)703 3463 y(BP_sread\("[0,s\(0)o(\),s)o(\(s)o(\(0\))o(\),)o([a)o(,b,)o(c])o(]",)o (Xs)o(\);)703 3663 y(BP_put_functor\(G)o(oal)o(,")o(mem)o(be)o(r")o (,2\))o(;)703 3762 y(BP_put_new_var\(X)o(\);)703 3862 y(BP_put_old_var\(X)o(s\);)703 4061 y(Engine=BP_create)o(_en)o(gi)o (ne\()o(wa)o(m,)o(100)o(,5)o(0,5)o(0\))o(;)703 4260 y (BP_load_engine\(E)o(ngi)o(ne)o(,Go)o(al)o(,X)o(\);)703 4460 y(while\(\(Answer=\(c)o(ell)o(\)a)o(sk_)o(en)o(gi)o(ne\()o(En)o (gin)o(e\))o(\)\))790 4559 y({)877 4659 y(printf\("Answer)c(=)43 b(\045s\\n",BP_swrite\(A)o(ns)o(wer)o(\)\))o(;)790 4758 y(})703 4858 y(BP_result=X;)c(/*)j(returns)f(the)h(now)h(free)f (variable)e(*/)703 4958 y(BP_destroy_engin)o(e\(E)o(ng)o(ine)o(\);)616 5057 y(})616 5157 y(break;)1962 5493 y Fq(55)p eop 56 55 bop 529 574 a Fd(/*)42 b(EDIT)g(AND)h(ADD)f(YOUR)g(CODE)g (HERE....*/)529 773 y(default:)572 873 y(return)f(LOCAL_ERR\(X\(1\),"c) o(all)c(to)42 b(unknown)f(user_defined)e(C)k(function"\);)442 973 y(})442 1072 y(return)e(H;)354 1172 y(})354 1515 y Fi(13.3)113 b(Calling)35 b(Prolog)h(from)h(C)354 1687 y Fq(Normally)31 b(this)f(is)h(done)h(after)g(a)g(\014rst)f(call)g (from)g(Prolog)g(to)i(C)e(\(this)g(giv)m(es)h(a)g(c)m(hance)h(to)f(the) 354 1799 y(prolog)k(system)g(to)g(get)h(initialized\).)54 b(The)35 b(most)h(\015exible)e(tec)m(hnique)h(is)g(based)g(on)h(m)m (utiple)354 1912 y(engines.)k(T)-8 b(ak)m(e)32 b(a)f(lo)s(ok)f(at)h Fo(case)47 b(11)29 b Fq(and)h Fo(case)47 b(12)29 b Fq(in)h(the)g (previous)f(section.)495 2025 y(The)h(lo)m(w)m(er-lev)m(el)h(in)m (terface,)g(\(whic)m(h)f(follo)m(ws\))g(is)f(still)f(usable)h(but)h (less)g(recommended.)354 2225 y Fd(/*)43 b(this)f(can)g(be)h(used)f(to) h(call)f(Prolog)f(from)h(C)h(:)g(see)f(example)f(if0)i(*/)354 2424 y(term)f(bp_prolog_call\(go)o(al)o(,re)o(gs)o(,H,)o(P,)o(A,)o(wam) o(\))442 2523 y(register)e(term)i(goal,regs,H,*A;)442 2623 y(register)e(instr)h(P;)442 2723 y(register)f(stack)h(wam;)354 2822 y({)442 2922 y(PREP_CALL\(goal\))o(;)442 3022 y(return)g (bp\(regs,H,P,A,w)o(am\))o(;)354 3121 y(})354 3320 y(/*)i(simple)e (example)g(of)i(prolog)e(call)h(*/)354 3420 y(term)g (if0\(regs,H,P,A,wa)o(m\))442 3520 y(register)e(term)i(regs,H,*A;)442 3619 y(register)e(instr)h(P;)442 3719 y(register)f(stack)h(wam;)354 3819 y({)j(term)d(bp\(\);)442 3918 y(cell)g(goal=regs[1];)442 4117 y(/*)h(in)h(this)f(example)f(the)h(input)g(GOAL)f(is)i(in)g (regs[1])e(*/)442 4217 y(/*)h(of)h(course)e(you)h(can)h(also)f(build)f (it)i(directly)d(in)j(C)g(*/)442 4317 y(/*)f(unless)f(you)i(want)f (specific)e(action)h(on)i(failure,)572 4416 y(use)g(BP_prolog_call\()o (goa)o(l\))37 b(here)42 b(*/)442 4616 y(H=bp_prolog_cal)o(l\()o(goa)o (l,)o(reg)o(s,)o(H,P)o(,A)o(,w)o(am\))o(;)442 4715 y(if\(H\))572 4815 y(fprintf\(stderr,"s)o(uc)o(ces)o(s:)37 b(returning)j(from)i(New)g (WAM\\n"\);)442 4914 y(else)572 5014 y(fprintf\(stderr,"f)o(ai)o(l:)37 b(returning)j(from)i(New)g(WAM\\n"\);)442 5213 y(/*)g(do)h(not)f (forget)f(this)h(!!!)h(*/)1962 5493 y Fq(56)p eop 57 56 bop 442 375 a Fd(return)41 b(H;)h(/*)h(return)e(NULL)h(to)h (signal)e(failure)g(*/)354 475 y(})495 687 y Fq(BinProlog's)32 b Fo(main\(\))g Fq(should)e(b)s(e)i(the)h(starting)g(p)s(oin)m(t)f(of)h (y)m(our)f(program)h(to)g(b)s(e)f(able)h(to)354 800 y(initialize)k(all) h(data)i(areas.)68 b(T)-8 b(o)39 b(call)g(bac)m(k)h(from)e(C)h(y)m(ou)h (can)f(follo)m(w)f(the)i(example)f(if0.)66 b(A)354 913 y(sustained)41 b(BinProlog-C)g(dialog)g(can)h(b)s(e)f(set)h(up)f(b)m(y) h(using)e(the)i(2)g(tec)m(hniques)f(describ)s(ed)354 1026 y(previously)-8 b(.)495 1139 y(An)24 b(example)g(of)g(using)e(the) i(C-in)m(terface)g(\(comp)s(osed)g(of)h(\014les)d(c.h)i(c.c)h(c.pl\))f (can)g(b)s(e)f(faound)354 1252 y(in)d(directory)g Fo(c_inter)p Fq(.)35 b(If)20 b(y)m(ou)h(whish)e(y)m(ou)i(can)g(create)h(a)f (standalone)f(C-executable)h(b)m(y)g(using)354 1365 y(BinProlog's)34 b(compilation)e(to)j(C)f(\(see)h(directories)e Fo(pl2c)p Fq(,)h Fo(dynpl2c)p Fq(\))f(y)m(ou)h(can)h(simply)c(t)m(yp)s(e)354 1477 y(`mak)m(e')h(in)d(directory)h Fo(c_inter)p Fq(.)354 1764 y Fp(14)135 b(Example)46 b(programs)354 1967 y Fq(The)30 b(directory)g Fo(progs)f Fq(con)m(tains)i(a)f(few)g(BinProlog)g(b)s (enc)m(hmarks)f(and)h(applications.)354 2166 y Fd(allperms.pl:)39 b(permutation)g(benchmarks)g(with)j(findall)354 2266 y(bestof.pl:)127 b(an)43 b(implementation)81 b(of)43 b(bestof/3)354 2365 y(bfmeta.pl:)127 b(breadth-first)38 b(metainterpreter)354 2465 y(bp.pl:)303 b(float)41 b(intensive)f (neural)h(net)i(learning)d(by)j(back-propagation)354 2565 y(cal.pl:)259 b(calendar:)40 b(computes)g(the)i(last)g(10000)g (fools-days)354 2664 y(fcal.pl:)215 b(calendar:)40 b(with)i(floats)354 2764 y(chat.pl:)215 b(CHAT)42 b(parser)354 2863 y(choice.pl:)127 b(Choice-intensive)37 b(ECRC)42 b(benchmark)354 2963 y(cnrev.pl:)171 b(nrev)42 b(with)g(^/2)g(as)h(a)g(constructor)c (instead)i(of)i(./2)354 3063 y(cube.pl:)215 b(E.)43 b(Tick's)e (benchmark)f(program)354 3162 y(fibo.pl:)215 b(naive)41 b(Fibonacci)354 3262 y(ffibo.pl:)171 b(naive)41 b(Fibonacci)f(with)i (floats)354 3362 y(hello.pl:)171 b(example)41 b(program)f(to)j(create)e (stand-alone)e(Unix)j(application)354 3461 y(knight.pl:)127 b(knight)41 b(tour)h(to)h(cover)e(a)i(chess-board)c(\(uses)j(the)g (bboard\))354 3561 y(lknight.pl:)83 b(knight)41 b(tour)h(to)h(cover)e (a)i(chess-board)c(\(uses)j(the)g(lists\))354 3660 y(ltak.pl:)215 b(tak)42 b(program)f(with)h(lemmas)354 3760 y(lfibo.pl:)171 b(fibo)42 b(program)f(with)h(lemmas)354 3860 y(lq8.pl)f(:)218 b(8)43 b(queens)e(using)h(global)f(logical)g(variables)354 3959 y(maplist.pl:)83 b(fast)42 b(findall)f(based)g(maplist)g (predicate)354 4059 y(nrev.pl:)215 b(naive)41 b(reverse)354 4159 y(nrev30.pl:)127 b(small)41 b(nrev)h(benchmark)e(to)j(reconsult)d (for)i(the)h(meta-interprete)o(r)354 4258 y(or.pl:)303 b(or-parallel)39 b(simulator)h(for)i(binary)f(programs)g(\(VT100\))354 4358 y(other_bm*:)127 b(benchmark)40 b(suite)h(to)i(compare)e(Sicstus,) f(Quintus)h(and)h(BinProlog)354 4457 y(puzzle.pl:)127 b(king-prince-quee)o(n)38 b(puzzle)354 4557 y(q8.pl:)303 b(fast)42 b(N-queens)354 4657 y(qrev.pl:)215 b(quick)41 b(nrev)h(using)g(builtin)f(det_append/3)354 4756 y(subset.pl:)127 b(findall+subset)354 4856 y(tetris.pl:)g(tetris)41 b(player)g (\(VT100\))1962 5493 y Fq(57)p eop 58 57 bop 354 375 a Fp(15)135 b(Related)47 b(w)l(ork)354 578 y Fq(Some)28 b(BinProlog)e(related)h(pap)s(ers)f(can)h(b)s(e)g (found)f(at)i(clemen)m(t.info.umoncton.ca)g(in)e(the)h(\014le)354 691 y Fo(papers.tar.Z.)354 880 y Fq(The)d(reader)g(in)m(terested)g(in)f (the)h(in)m(ternals)f(of)h(BinProlog)g(and)f(other)h(issues)f(related)h (to)h(binary)354 993 y(logic)k(programs,)f(their)g(transformations)g (and)g(p)s(erformance)f(ev)-5 b(aluation)28 b(is)g(referred)g(to)h([16) q(,)354 1106 y(9)q(,)h(11)q(,)h(4,)g(5,)g(12)q(,)f(10)q(,)h(8,)g(7,)g (14)q(,)f(13)q(,)h(1,)g(20)q(,)f(6)q(,)g(17)q(,)h(15)q(,)f(19)q(,)h(3,) g(2])354 1389 y Fp(References)400 1592 y Fq([1])46 b(K.)32 b(De)g(Bossc)m(here)h(and)f(P)-8 b(.)32 b(T)-8 b(arau.)44 b(Blac)m(kb)s(oard-based)32 b(logic)g(programming.)43 b(In)31 b Fh(Pr)-5 b(o-)541 1705 y(c)g(e)g(e)g(dings)34 b(of)f(the)g(1993)h(ILPS)e(Confer)-5 b(enc)g(e)p Fq(,)32 b(V)-8 b(ancouv)m(er,)32 b(Canada,)e(1993.)43 b(p)s(oster.)400 1885 y([2])j(K.)29 b(De)h(Bossc)m(here)g(and)e(P)-8 b(.)29 b(T)-8 b(arau.)39 b(Blac)m(kb)s(oard)29 b(Comm)m(unication)e(in)h (Logic)h(Program-)541 1998 y(ming.)65 b(In)38 b Fh(Pr)-5 b(o)g(c)g(e)g(e)g(dings)42 b(of)f(the)g(P)-7 b(AR)n(CO'93)40 b(Confer)-5 b(enc)g(e)p Fq(,)42 b(Grenoble,)e(F)-8 b(rance,)42 b(Sept.)541 2111 y(1993.)400 2291 y([3])k(K.)32 b(De)h(Bossc)m(here)h (and)e(P)-8 b(.)32 b(T)-8 b(arau.)47 b(High)31 b(Performance)i(Con)m (tin)m(uation)e(Passing)g(St)m(yle)541 2404 y(Prolog-to-C)d(Mapping.)34 b(In)26 b(E.)h(Deaton,)i(D.)e(Opp)s(enheim,)e(J.)i(Urban,)g(and)f(H.)h (Berghel,)541 2516 y(editors,)f Fh(Pr)-5 b(o)g(c)g(e)g(e)g(dings)29 b(of)e(the)h(1994)h(A)n(CM)d(Symp)-5 b(osium)29 b(on)f(Applie)-5 b(d)29 b(Computing)p Fq(,)e(pages)541 2629 y(383{387,)34 b(Pho)s(enix/AZ,)29 b(Mar.)i(1994.)i(A)m(CM)d(Press.)400 2809 y([4])46 b(B.)38 b(Demo)s(en.)62 b(On)37 b(the)h(Transformation)e (of)i(a)f(Prolog)h(program)f(to)h(a)g(more)g(e\016cien)m(t)541 2922 y(Binary)30 b(program.)40 b(T)-8 b(ec)m(hnical)30 b(Rep)s(ort)g(130,)i(K.U.Leuv)m(en,)f(Dec.)h(1990.)400 3102 y([5])46 b(B.)35 b(Demo)s(en)h(and)e(A.)h(Mari)m(\177)-43 b(en.)54 b(Implemen)m(tation)33 b(of)i(Prolog)g(as)g(binary)e (de\014nite)g(Pro-)541 3215 y(grams.)d(In)24 b(A.)g(V)-8 b(oronk)m(o)m(v,)27 b(editor,)e Fh(L)-5 b(o)g(gic)28 b(Pr)-5 b(o)g(gr)g(amming,)30 b(R)n(CLP)c(Pr)-5 b(o)g(c)g(e)g(e)g (dings)p Fq(,)28 b(n)m(um)m(b)s(er)541 3328 y(592)38 b(in)e(Lecture)h(Notes)i(in)c(Arti\014cial)g(In)m(telligence,)j(pages)g (165{176,)k(Berlin,)37 b(Heidel-)541 3441 y(b)s(erg,)30 b(1992.)j(Springer-V)-8 b(erlag.)400 3621 y([6])46 b(T.)29 b(Lindgren.)37 b(Compiling)27 b(logic)i(programs)g(using)e(a)j(binary)e (con)m(tin)m(uation)h(st)m(yle,)h(Dec.)541 3734 y(1992.)43 b(draft,)30 b(Uppsala)f(Univ)m(ersit)m(y)-8 b(.)400 3914 y([7])46 b(U.)40 b(Neumerk)m(el.)67 b Fh(Sp)-5 b(e)g(cialization)43 b(of)e(Pr)-5 b(olo)g(g)43 b(Pr)-5 b(o)g(gr)g(ams)43 b(with)f(Partial)5 b(ly)42 b(Static)f(Go)-5 b(als)541 4027 y(and)34 b(Binarization)p Fq(.)42 b(Phd)29 b(thesis,)h(T)-8 b(ec)m(hnisc)m(he)31 b(Univ)m(ersit\177)-45 b(at)30 b(Wien,)g(1992.)400 4207 y([8])46 b(U.)27 b(Neumerk)m(el.)34 b(A)26 b(transformation)g(based)g (on)g(the)g(equalit)m(y)g(b)s(et)m(w)m(een)h(terms.)34 b(In)26 b Fh(L)-5 b(o)g(gic)541 4320 y(Pr)g(o)g(gr)g(am)32 b(Synthesis)e(and)g(T)-7 b(r)i(ansformation,)34 b(LOPSTR)29 b(1993)p Fq(.)g(Springer-V)-8 b(erlag,)26 b(1993.)400 4500 y([9])46 b(P)-8 b(.)29 b(T)-8 b(arau.)37 b(A)28 b(Simpli\014ed)c(Abstract)29 b(Mac)m(hine)g(for)f(the)g(execution)g(of) h(Binary)e(Metapro-)541 4613 y(grams.)33 b(In)24 b Fh(Pr)-5 b(o)g(c)g(e)g(e)g(dings)30 b(of)e(the)h(L)-5 b(o)g(gic)28 b(Pr)-5 b(o)g(gr)g(amming)31 b(Confer)-5 b(enc)g(e'91)p Fq(,)28 b(pages)e(119{128.)541 4725 y(ICOT,)k(T)-8 b(oky)m(o,)32 b(7)e(1991.)354 4905 y([10])47 b(P)-8 b(.)24 b(T)-8 b(arau.)30 b(Ecological)24 b(Memory)g(Managmen)m(t)h(in)d(a)i(Con)m(tin)m(uation)f (P)m(assing)g(Prolog)h(En-)541 5018 y(gine.)38 b(In)28 b(Y.)i(Bekk)m(ers)g(and)e(J.)h(Cohen,)g(editors,)g Fh(Memory)j (Management)g(International)541 5131 y(Workshop)39 b(IWMM)c(92)j(Pr)-5 b(o)g(c)g(e)g(e)g(dings)p Fq(,)38 b(n)m(um)m(b)s(er)33 b(637)j(in)e(Lecture)h(Notes)h(in)d(Computer)541 5244 y(Science,)e(pages)g(344{356.)i(Springer,)c(Sept.)h(1992.)1962 5493 y(58)p eop 59 58 bop 354 375 a Fq([11])47 b(P)-8 b(.)39 b(T)-8 b(arau.)66 b(Program)39 b(Transformations)f(and)g(W)-10 b(AM-supp)s(ort)38 b(for)h(the)g(Compilation)541 488 y(of)31 b(De\014nite)g(Metaprograms.) 43 b(In)30 b(A.)h(V)-8 b(oronk)m(o)m(v,)33 b(editor,)e Fh(L)-5 b(o)g(gic)33 b(Pr)-5 b(o)g(gr)g(amming,)36 b(R)n(CLP)541 601 y(Pr)-5 b(o)g(c)g(e)g(e)g(dings)p Fq(,)33 b(n)m(um)m(b)s(er)c(592)j (in)d(Lecture)h(Notes)i(in)d(Arti\014cial)g(In)m(telligence,)h(pages)h (462{)541 714 y(473,)h(Berlin,)d(Heidelb)s(erg,)g(1992.)k(Springer-V)-8 b(erlag.)354 901 y([12])47 b(P)-8 b(.)39 b(T)-8 b(arau.)64 b(W)-8 b(am-optimizations)38 b(in)f(BinProlog:)56 b(to)m(w)m(ards)39 b(a)f(realistic)f(con)m(tin)m(uation)541 1014 y(passing)26 b(prolog)h(engine.)35 b(T)-8 b(ec)m(hnical)27 b(Rep)s(ort)g(92-3,)i (Dept.)f(d'Informatique,)f(Univ)m(ersit)m(\023)-43 b(e)541 1127 y(de)30 b(Moncton,)i(July)d(1992.)42 b(a)m(v)-5 b(ailable)30 b(b)m(y)g(ftp)g(from)g(clemen)m(t.info.umoncton.ca.)354 1315 y([13])47 b(P)-8 b(.)27 b(T)-8 b(arau.)33 b(An)25 b(e\016cien)m(t)i(sp)s(ecialization)d(of)i(the)g(w)m(am)g(for)g(con)m (tin)m(uation)f(passing)g(binary)541 1428 y(programs.)62 b(In)37 b Fh(Pr)-5 b(o)g(c)g(e)g(e)g(dings)41 b(of)f(the)f(1993)j(ILPS) d(Confer)-5 b(enc)g(e)p Fq(,)40 b(V)-8 b(ancouv)m(er,)41 b(Canada,)541 1541 y(1993.)i(p)s(oster.)354 1728 y([14])k(P)-8 b(.)47 b(T)-8 b(arau.)89 b(Language)47 b(issues)e(and)h(programming)f (tec)m(hniques)h(in)f(BinProlog.)88 b(In)541 1841 y(D.)34 b(Sacca,)h(editor,)e Fh(Pr)-5 b(o)g(c)g(e)g(e)g(ding)37 b(of)e(the)g(GULP'93)h(Confer)-5 b(enc)g(e)p Fq(,)34 b(Gizzeria)f(Lido,)g(Italy)-8 b(,)541 1954 y(June)30 b(1993.)354 2142 y([15])47 b(P)-8 b(.)39 b(T)-8 b(arau.)64 b(Lo)m(w)38 b(lev)m(el)g(issues)f(in)g(implemen)m(ting)e(a)k(high-p)s (erformance)d(con)m(tin)m(uation)541 2255 y(passing)23 b(binary)f(prolog)i(engine.)30 b(In)23 b(M.-M.)j(Corsini,)d(editor,)i Fh(Pr)-5 b(o)g(c)g(e)g(e)g(dings)29 b(of)e(JFPL'94)p Fq(,)541 2367 y(June)j(1994.)354 2555 y([16])47 b(P)-8 b(.)42 b(T)-8 b(arau)41 b(and)g(M.)h(Bo)m(y)m(er.)75 b(Elemen)m(tary)41 b(Logic)h(Programs.)74 b(In)40 b(P)-8 b(.)42 b(Deransart)g(and)541 2668 y(J.)26 b(Ma )-25 b(luszy)s(\023)-48 b(nski,)26 b(editors,)g Fh(Pr)-5 b(o)g(c)g(e)g(e)g(dings)31 b(of)e(Pr)-5 b(o)g(gr)g(amming)31 b(L)-5 b(anguage)29 b(Implementation)541 2781 y(and)41 b(L)-5 b(o)g(gic)41 b(Pr)-5 b(o)g(gr)g(amming)p Fq(,)44 b(n)m(um)m(b)s(er)37 b(456)j(in)d(Lecture)i(Notes)h(in)d(Computer)h(Science,)541 2894 y(pages)31 b(159{173.)j(Springer,)28 b(Aug.)j(1990.)354 3081 y([17])47 b(P)-8 b(.)31 b(T)-8 b(arau)30 b(and)f(B.)i(Demo)s(en.) 40 b(Language)31 b(em)m(b)s(edding)d(b)m(y)i(dual)f(compilation)g(and)g (state)541 3194 y(mirroring.)62 b(In)38 b Fh(Pr)-5 b(o)g(c)g(e)g(e)g (dings)42 b(of)e(6-th)h(Workshop)h(on)e(L)-5 b(o)g(gic)41 b(Pr)-5 b(o)g(gr)g(amming)42 b(Envir)-5 b(on-)541 3307 y(ments,)33 b(Santa)h(Mar)-5 b(gherita)34 b(Ligur)-5 b(e,)33 b(1994)p Fq(,)f(June)e(1994.)354 3495 y([18])47 b(P)-8 b(.)32 b(T)-8 b(arau,)33 b(B.)f(Demo)s(en,)h(and)e(K.)h(De)g (Bossc)m(here.)47 b(The)31 b(p)s(o)m(w)m(er)h(of)g(partial)e (translation:)541 3608 y(an)g(exp)s(erimen)m(t)f(with)f(the)i (c-i\014cation)g(of)g(binary)e(prolog.)39 b(In)30 b Fh(Pr)-5 b(o)g(c)g(e)g(e)g(dings)34 b(of)e(the)h(1995)541 3721 y(A)n(CM)25 b(Symp)-5 b(osium)28 b(on)f(Applie)-5 b(d)27 b(Computing)p Fq(,)f(Nash)m(ville/TN,)c(F)-8 b(eb.)24 b(1995.)i(A)m(CM)e(Press.)354 3908 y([19])47 b(P)-8 b(.)41 b(T)-8 b(arau)39 b(and)h(U.)g(Neumerk)m(el.)69 b(A)40 b(No)m(v)m(el)h(Term)e(Compression)f(Sc)m(heme)i(and)g(Data)541 4021 y(Represen)m(tation)47 b(in)d(the)j(BinW)-10 b(AM.)87 b(In)46 b Fh(Pr)-5 b(o)g(c)g(e)g(e)g(dings)49 b(of)e(Pr)-5 b(o)g(gr)g(amming)50 b(L)-5 b(anguage)541 4134 y(Implementation)39 b(and)f(L)-5 b(o)g(gic)37 b(Pr)-5 b(o)g(gr)g(amming)p Fq(,)38 b(Lecture)d(Notes)h(in)d(Computer)h(Science.)541 4247 y(Springer,)29 b(Sept.)h(1994.)354 4435 y([20])47 b(D.)27 b(H.)g(D.)g(W)-8 b(arren.)34 b(An)26 b(Abstract)h(Prolog)f (Instruction)f(Set.)34 b(T)-8 b(ec)m(hnical)26 b(Note)i(309,)g(SRI)541 4548 y(In)m(ternational,)i(Oct.)h(1983.)354 4834 y Fp(16)135 b(App)t(endix)354 5037 y Fq(Here)31 b(is)f(the)g(list)f(of)i(curren)m (tly)e(visible)f(public)g(predicates)i(exp)s(orted)g(b)m(y)g(mo)s(dule) f(Prolog.)1962 5493 y(59)p eop 60 59 bop 354 375 a Fd(!/0)354 475 y(\(#\)/1)354 574 y(\(#\)/3)354 674 y(*)44 b(/3)354 773 y(\(+\)/2)354 873 y(\(+\)/3)354 973 y(\(++\)/3)354 1072 y(\(,\)/2)354 1172 y(\(-\)/2)354 1272 y(\(-\)/3)354 1371 y(\(-:\)/2)354 1471 y(\(->\)/2)354 1570 y(\(.\)/2)354 1670 y(\(.\)/3)354 1770 y(/)g(/3)354 1869 y(//)f(/3)354 1969 y(\(/\\\)/3)354 2069 y(\(:\)/2)354 2168 y(\(:=:\)/2)354 2268 y(\(;\)/2)354 2367 y(\(<\)/2)354 2467 y(<<)g(/3)354 2567 y(\(=\)/2)354 2666 y(\(=..\)/2)354 2766 y(\(=:=\)/2)354 2866 y(\(=<\)/2)354 2965 y(\(==\)/2)354 3065 y(\(=>\)/2)354 3164 y(\(=\\=\)/2)354 3264 y(\(>\)/2)354 3364 y(\(>=\)/2)354 3463 y(>>)g(/3)354 3563 y(\(@<\)/2)354 3663 y(\(@=<\)/2)354 3762 y(\(@>\)/2)354 3862 y(\(@>=\)/2)354 3961 y(C/3)354 4061 y(\(\\\)/2)354 4161 y(\(\\\)/3)354 4260 y(\(\\+\)/1)354 4360 y(\(\\/\)/3)354 4460 y(\(\\=\)/2)354 4559 y(\(\\==\)/2)354 4659 y(^)h(/2)354 4758 y(abolish/2)354 4858 y(abort/0)354 4958 y(acos/2)354 5057 y(add_cont/3)354 5157 y(add_instr/4)1962 5493 y Fq(60)p eop 61 60 bop 354 375 a Fd(add_true/2)354 475 y(all/3)354 574 y(all_but_at_least/)o(4)354 674 y(append/3)354 773 y(appendN/2)354 873 y(append_conj/3)354 973 y(append_disj/3)354 1072 y(apropos/1)354 1172 y(apropos/2)354 1272 y(arg/3)354 1371 y(argn/3)354 1471 y(arith_dif/2)354 1570 y(arith_eq/2)354 1670 y(asin/2)354 1770 y(ask_engine/2)354 1869 y(asm/0)354 1969 y(asm/1)354 2069 y(assert/1)354 2168 y(asserta/1)354 2268 y(assertz/1)354 2367 y(assumed/1)354 2467 y(assumei/1)354 2567 y(assumel/1)354 2666 y(atan/2)354 2766 y(atom/1)354 2866 y(atomic/1)354 2965 y(bagof/3)354 3065 y(bb/0)354 3164 y(bb/1)354 3264 y(bb_change_arg/3)354 3364 y(bb_def/2)354 3463 y(bb_def/3)354 3563 y(bb_element/2)354 3663 y(bb_get/4)354 3762 y(bb_let/2)354 3862 y(bb_let/3)354 3961 y(bb_list/1)354 4061 y(bb_list0/3)354 4161 y(bb_op/3)354 4260 y(bb_put/2)354 4360 y(bb_reset/0)354 4460 y(bb_rm/1)354 4559 y(bb_rm/2)354 4659 y(bb_set/2)354 4758 y(bb_set/3)354 4858 y(bb_val/2)354 4958 y(bb_val/3)354 5057 y(boot/0)354 5157 y(bu0/3)1962 5493 y Fq(61)p eop 62 61 bop 354 375 a Fd(bu1/1)354 475 y(bu_ctr/2)354 574 y(call/1)354 674 y(change_arg/3)354 773 y(char_in_cmd/2)354 873 y(clause/2)354 973 y(cmake/0)354 1072 y(cmake/1)354 1172 y(cmake/2)354 1272 y(cnl/0)354 1371 y(co/0)354 1471 y(compare/3)354 1570 y(compare0/3)354 1670 y(compile/1)354 1770 y(compound/1)354 1869 y(consult/1)354 1969 y(copy_term/2)354 2069 y(copy_term/3)354 2168 y(cos/2)354 2268 y(create_engine/4)354 2367 y(ctime/1)354 2467 y(current_module/1)354 2567 y(current_op/3)354 2666 y(current_predicate)o(/1)354 2766 y(current_predicate)o(/2)354 2866 y(cwrite/1)354 2965 y(dcg_connect/1)354 3065 y(dcg_def/1)354 3164 y(dcg_phrase/2)354 3264 y(dcg_phrase/3)354 3364 y(dcg_tell/1)354 3463 y(dcg_telling/1)354 3563 y(dcg_val/1)354 3663 y(debug/1)354 3762 y(def/3)354 3862 y(destroy_engine/1)354 3961 y(det_append/3)354 4061 y(det_append0/3)354 4161 y(dir/0)354 4260 y(display/1)354 4360 y(do_body/1)354 4460 y(drop_at_least/2)354 4559 y(\(dynamic\)/1)354 4659 y(ed/0)354 4758 y(edit/0)354 4858 y(edit/2)354 4958 y(emacs/0)354 5057 y(erase/1)354 5157 y(errmes/2)1962 5493 y Fq(62)p eop 63 62 bop 354 375 a Fd(exists_file/1)354 475 y(exp/2)354 574 y(expand_term/2)354 674 y(expr/2)354 773 y(fail/0)354 873 y(false/0)354 973 y(fast_write/1)354 1072 y(file_extension_li)o(st) o(/1)354 1172 y(file_library/2)354 1272 y(file_search_path/)o(1)354 1371 y(find_at_most/4)354 1471 y(find_file/2)354 1570 y(find_while/4)354 1670 y(findall/3)354 1770 y(findall/4)354 1869 y(findall_conj/3)354 1969 y(findall_conj/4)354 2069 y(findall_disj/3)354 2168 y(findall_disj/4)354 2268 y (findall_load_heap)o(/1)354 2367 y(findall_store_hea)o(p/)o(1)354 2467 y(findall_workhorse)o(/5)354 2567 y(float/1)354 2666 y(float/2)354 2766 y(float_fun/3)354 2866 y(float_fun2/4)354 2965 y(flush/0)354 3065 y(for/3)354 3164 y(free_variables/4)354 3264 y(functor/3)354 3364 y(gc_call/1)354 3463 y(gc_read/1)354 3563 y(gc_read_clause/1)354 3663 y(gensym/2)354 3762 y(get/1)354 3862 y(get0/1)354 3961 y(get_code/1)354 4061 y(greater/2)354 4161 y(greater_eq/2)354 4260 y(ground/1)354 4360 y(halt/0)354 4460 y(halt/1)354 4559 y(has_fuel/1)354 4659 y(help/1)354 4758 y(if/3)354 4858 y(if0/3)354 4958 y(include/1)354 5057 y(init_gensym/1)354 5157 y(input_float/4)1962 5493 y Fq(63)p eop 64 63 bop 354 375 a Fd(instance/2)354 475 y(integer/1)354 574 y(integer/2)354 674 y(interactive/1)354 773 y(\(is\)/2)354 873 y(is_assumed/1)354 973 y(is_builtin/1)354 1072 y(is_compiled/1)354 1172 y(is_dynamic/1)354 1272 y(is_module/1)354 1371 y(is_prolog/1)354 1471 y(is_public/1)354 1570 y(iso_close_stream/)o(2)354 1670 y(iso_eof/1)354 1770 y(iso_get_byte/2)354 1869 y(iso_lseek/4)354 1969 y(iso_open_stream/3)354 2069 y(iso_peek_byte/2)354 2168 y(iso_put_byte/2)354 2268 y(iso_read_term/3)354 2367 y(iso_write_term/3)354 2467 y(ith_clause/4)354 2567 y(kcmake/0)354 2666 y(keysort/2)354 2766 y(kmake/0)354 2866 y(length/2)354 2965 y(less/2)354 3065 y(less_eq/2)354 3164 y(let/3)354 3264 y(lift_heap/2)354 3364 y(list2term/2)354 3463 y(list_asm/3)354 3563 y(listing/0)354 3663 y(listing/1)354 3762 y(listing/2)354 3862 y(log/2)354 3961 y(log/3)354 4061 y(ls/0)354 4161 y(lval/3)354 4260 y(lwrite/1)354 4360 y(main/1)354 4460 y(make/0)354 4559 y(make/1)354 4659 y(make/2)354 4758 y(make/4)354 4858 y(make/5)354 4958 y(make0/4)354 5057 y(make_appl/1)354 5157 y(make_cmd/2)1962 5493 y Fq(64)p eop 65 64 bop 354 375 a Fd(make_executable_u)o(ni)o(x_a)o(pp)o(l/3)354 475 y(make_file_name/4)354 574 y(member/2)354 674 y(member_i/4)354 773 y(meta_interpreter/)o(1)354 873 y(metacall/1)354 973 y(mod/3)354 1072 y(\(module\)/1)354 1172 y(\(module\)/2)354 1272 y(module_call/2)354 1371 y(module_name/3)354 1471 y(module_predicate/)o(3)354 1570 y(modules/1)354 1670 y(my_edit/1)354 1770 y(name/2)354 1869 y(new_builtin/3)354 1969 y(nl/0)354 2069 y(nonvar/1)354 2168 y(\(nospy\)/1)354 2268 y(\(not\)/1)354 2367 y(notepad/0)354 2467 y(nth_answer/2)354 2567 y(nth_member/3)354 2666 y(number/1)354 2766 y(numbervars/3)354 2866 y(older_file/2)354 2965 y(op/3)354 3065 y(op0/3)354 3164 y(or/2)354 3264 y(otherwise/0)354 3364 y(patch_it/4)354 3463 y(phrase/2)354 3563 y(phrase/3)354 3663 y(pico/0)354 3762 y(portable_display/)o(1)354 3862 y(portray/1)354 3961 y(portray_clause/1)354 4061 y(pow/3)354 4161 y(pp_clause/1)354 4260 y(pp_term/1)354 4360 y(predicate_propert)o(y/)o(2)354 4460 y(print/1)354 4559 y(profile/0)354 4659 y(\(public\)/1)354 4758 y(put/1)354 4858 y(put_code/1)354 4958 y(quiet/1)354 5057 y(quietmes/1)354 5157 y(random/1)1962 5493 y Fq(65)p eop 66 65 bop 354 375 a Fd(read/1)354 475 y(read_clause/1)354 574 y(read_term/2)354 674 y(read_tokens/2)354 773 y(read_with_singlet)o (on)o(s/3)354 873 y(reconsult/1)354 973 y(repeat/0)354 1072 y(restart/0)354 1172 y(retract/1)354 1272 y(retractall/1)354 1371 y(rm/2)354 1471 y(saved/2)354 1570 y(see/1)354 1670 y(see_at/1)354 1770 y(see_tell/2)354 1869 y(see_tell_at/2)354 1969 y(seeing/1)354 2069 y(seeing_at/1)354 2168 y(seeing_telling/2)354 2268 y(seeing_telling_at)o(/2)354 2367 y(seen/0)354 2467 y(seen_told/1)354 2567 y(self_info/1)354 2666 y(set/3)354 2766 y(set_c_threshold/1)354 2866 y(set_c_trace/1)354 2965 y(setarg/3)354 3065 y(setof/3)354 3164 y(setref/2)354 3264 y(shell/1)354 3364 y(show_code0/2)354 3463 y(sin/2)354 3563 y(skip_until/2)354 3663 y(skip_when/2)354 3762 y(sort/2)354 3862 y(\(spy\)/1)354 3961 y(spy_goal/1)354 4061 y(spying/1)354 4161 y(sqrt/2)354 4260 y(sread/2)354 4360 y(load_engine/3)354 4460 y(stat0/3)354 4559 y(stat_dict/2)354 4659 y(statistics/0)354 4758 y(statistics/2)354 4858 y(string_op/3)354 4958 y(strip_cont/3)354 5057 y(strip_cont0/2)354 5157 y(swrite/2)1962 5493 y Fq(66)p eop 67 66 bop 354 375 a Fd(symcat/3)354 475 y(system/1)354 574 y(tab/1)354 674 y(take_at_most/2)354 773 y(tan/2)354 873 y(tell/1)354 973 y(tell_at/1)354 1072 y(telling/1)354 1172 y(telling_at/1)354 1272 y(term2list/4)354 1371 y(term_append/3)354 1471 y(term_chars/2)354 1570 y(termcat/3)354 1670 y(textedit/0)354 1770 y(told/0)354 1869 y(top_read_term/2)354 1969 y(toplevel/0)354 2069 y(tr_body/2)354 2168 y(trace/1)354 2268 y(true/0)354 2367 y(ttyin/1)354 2467 y(ttynl/0)354 2567 y(ttyout/1)354 2666 y(ttyprin/1)354 2766 y(ttyprint/1)354 2866 y(ttyput/1)354 2965 y(ttywrite/1)354 3065 y(ttywriteln/1)354 3164 y(unix/1)354 3264 y(unix_access/2)354 3364 y(unix_argc/1)354 3463 y(unix_argv/2)354 3563 y(unix_cd/1)354 3663 y(unix_getenv/2)354 3762 y(unix_kill/2)354 3862 y(user_error/2)354 3961 y(val/3)354 4061 y(var/1)354 4161 y(vars_of/2)354 4260 y(vi/0)354 4360 y(warn_singletons/3)354 4460 y(while/2)354 4559 y(write/1)354 4659 y(write_float/1)354 4758 y(writeq/1)495 4958 y Fq(BinProlog's)30 b(default)g(op)s(erator)g(de\014nitions)e (\(see)k(\014le)d(op)s(er.pl\))g(are)i(the)g(follo)m(wing:)354 5145 y Fd(:-op\(1000,xfy,',')o(\).)354 5244 y(:-op\(1100,xfy,\(';)o ('\))o(\).)1962 5493 y Fq(67)p eop 68 67 bop 354 475 a Fd(:-op\(1200,xfx,\('-)o(->)o('\)\))o(.)354 574 y(:-op\(1200,xfx,\(':)o(-')o(\)\).)354 674 y(:-op\(1200,fx,\(':-)o ('\))o(\).)354 773 y(:-op\(700,xfx,'is')o(\).)354 873 y(:-op\(700,xfx,'='\))o(.)354 1072 y(:-op\(500,yfx,'-'\))o(.)354 1172 y(:-op\(500,fx,'-'\).)354 1272 y(:-op\(500,yfx,'+'\))o(.)354 1371 y(:-op\(500,fx,'+'\).)354 1471 y(:-op\(400,yfx,'/'\))o(.)354 1570 y(:-op\(400,yfx,'*'\))o(.)354 1770 y(:-op\(650,xfy,'.'\))o(.)354 1869 y(:-op\(700,xfx,'>=')o(\).)354 1969 y(:-op\(700,xfx,'>'\))o(.)354 2069 y(:-op\(700,xfx,'=<')o(\).)354 2168 y(:-op\(700,xfx,\(<\)\))o(.) 354 2268 y(:-op\(700,xfx,\(=\\=)o(\)\))o(.)354 2367 y (:-op\(700,xfx,\(=:=)o(\)\))o(.)354 2567 y(:-op\(300,fy,\(~\)\).)354 2666 y(:-op\(200,xfy,\(^\)\))o(.)354 2766 y(:-op\(300,xfx,\(mod)o(\)\)) o(.)354 2866 y(:-op\(400,yfx,\(>>\))o(\).)354 2965 y (:-op\(400,yfx,\(<<\))o(\).)354 3065 y(:-op\(400,yfx,\(//\))o(\).)354 3164 y(:-op\(500,yfx,\(#\)\))o(.)354 3264 y(:-op\(500,fx,\(#\)\).)354 3364 y(:-op\(500,yfx,\(\\/\))o(\).)354 3463 y(:-op\(500,yfx,\(/\\\))o (\).)354 3663 y(:-op\(700,xfx,\(@>=)o(\)\))o(.)354 3762 y(:-op\(700,xfx,\(@=<)o(\)\))o(.)354 3862 y(:-op\(700,xfx,\(@>\))o(\).) 354 3961 y(:-op\(700,xfx,\(@<\))o(\).)354 4161 y(:-op\(700,xfx,\(\\==)o (\)\))o(.)354 4260 y(:-op\(700,xfx,\(==\))o(\).)354 4360 y(:-op\(700,xfx,\(=..)o(\)\))o(.)354 4460 y(:-op\(700,xfx,\(\\=\))o (\).)354 4659 y(:-op\(900,fy,\(not\))o(\).)354 4758 y (:-op\(900,fy,\(\\+\)\))o(.)354 4858 y(:-op\(900,fx,\(spy\))o(\).)354 4958 y(:-op\(900,fx,\(nosp)o(y\))o(\).)354 5157 y(:-op\(1050,xfy,\(->)o (\)\))o(.)1962 5493 y Fq(68)p eop 69 68 bop 354 375 a Fd(:-op\(1050,xfx,\(@@)o(\)\))o(.)354 475 y(:-op\(1150,fx,\(dyn)o(am)o(ic\))o(\).)354 574 y (:-op\(1150,fx,\(pub)o(li)o(c\)\))o(.)354 674 y(:-op\(1150,fx,\(mod)o (ul)o(e\)\))o(.)354 873 y(:-op\(1200,xfx,\(::)o(-\))o(\).)354 1072 y(:-op\(900,yfx,\(:\)\))o(.)354 1172 y(:-op\(600,xfx,\(:=:)o(\)\)) o(.)354 1272 y(:-op\(950,xfy,\(-:\))o(\).)354 1371 y (:-op\(950,xfy,\(=>\))o(\).)354 1471 y(:-op\(600,xfx,\(<=\))o(\).)354 1570 y(:-op\(700,xfx,\(=:\))o(\).)354 1670 y(:-op\(700,xfx,\(:=\))o (\).)1962 5493 y Fq(69)p eop end userdict /end-hook known{end-hook}if BinProlog3.45/doc/art.txt100644 764 764 327363 5764565276 14476 0ustar javierjavier BinProlog 3.45 User Guide Paul Tarau Departement d'Informatique Universite de Moncton Moncton, Canada, E1A 3E9, tarau@info.umoncton.ca June 5, 1995 1 ^L 1 Installation EITHER: Edit `Makefile'. Change BINDIR and comment out ARCH_AND_OS, for example: BINDIR = /usr/local/bin ARCH_AND_OS = sparc.sunos then TYPE: make install OR: Copy or symbolically link bin/bp. to `bp' somewhere in your path, then type `bp'. Normally the appropriate `wam' (a C-ified self contained executable) or (for some old architectures) typing `ru wam.bp' (possibly a small `bp' shell-script) are all you need to have BinProlog 3.45 running. For DOS/Windows 386/486 PCs you will have to edit bp.bat with your path information and then type bp. Something like `go32 ru.386 wam.bp' directly in the distribution directory should also work. To start BinProlog use $ bp or simply $ bp Sizes of the blackboard, heap, stack, trail and code areas can be passed as com- mand line parameters etc, in Kbytes: usage: [-h heap] [-s stack] [-t trail] [-c code] [-b bboard] [-a 2^atoms] [-d 2^hashtable entries] [-i size of IO-buffer] [-q quietness] wamfile (default: wam.bp). 2 Obtaining BinProlog The ORIGINAL DISTRIBUTION SITE for BinProlog1 is: ftp clement.info.umoncton.ca (139.103.16.2) _________________________________________1 BinProlog Copyright Oc Paul Tarau 1992-94 All rights reserved 2 ^L in the directory: /pub/BinProlog. The ftp server clement.info.umoncton.ca is a Sparcstation ELC with SUNOS 4.1.1). Please send comments and bug reports to binprolog@info.umoncton.ca. 3 Introduction to BinProlog BinProlog has been developped by Paul Tarau mostly at the University of Moncton, Canada, and is based on his BinWAM abstract machine, a specialization of the WAM for the efficient execution of binary logic programs. BinProlog is a fast and small Prolog compiler, based on the transformation of Prolog to binary clauses. The compilation technique is similar to the Continuation Passing Style transformation used in some ML implementations. Although it (used to) incorporate some last minute research experiments, which might look adventurous at the first sight, BinProlog is a fairly robust and com- plete Prolog implementation featuring both C-emulated execution and generation of standalone applications by compilation to C. Some of its features are: o source-level transformation based stateless module system o dynamic code, o intuitionistic and linear implication, o efficient high-order programming builtins, o logical global variables, o backtrackable destructive assignment, o circular term unification, o extended DCGs (now built in the engine as `Hidden Accumulator grammars'), o continuation manipulation primitives, o a garbage-collected hashing based global dictionnary for constant-time sparse arrays and graphs, o C-compatible floating point operations, o a C-interface etc. New features in added in version 3.30: o source-level modules 3 ^L o faster compilation to C and faster resulting C-code o very small (dynamically linked) standalone executables (5K) for Solaris 2.x o improved (fileevent based) Tcl/Tk interface now running under tcl7.4b2 and tk4.0b2 o help/1 detecting near-matching predicate definitions o help warnings for singleton variables o spy/1 for debugging compiled code New features in added in version 3.45: o ability to start multiple engines from Prolog or C o improved C-interface now moved to its own directory c_inter o one file 32 bit DOS and Windows 3.1 executables (see directory pc) The bp command starts the BinProlog toplevel. Prolog sources for the compiler and builtins are in directory src. The directories pl2c and dynpl2c contain various project (*.pro) files and a makefile for generating a standalone applications through compilation to C. The directory TCL contains a bidirectional pipe based BinProlog to Tcl/Tk in- terface. The directory cparser contains Koen De Bosschere's ISO Prolog parser (written in C) and BinProlog standalones based on the parser (cbp.*). The directory multi contains Koen De Bosschere's a blackboard based dis- tributed programming extension to BinProlog and BinProlog executables which in- tegrate them (mbp.*). 3.1 Binarization BinProlog is a small, program-transformation based compiler. Everything is con- verted to Continuation Passing Binary Clauses: A rule like a(X):-b(X),c(X,Y),d(Y). becomes a(X,Cont):-b(X,c(X,Y,d(Y,Cont))). A fact like 4 ^L a(13). becomes a(13,Cont):-true(Cont). A predicate using metavariables like p(X,Y):-X,Y. becomes p(X,Y,Cont);-call(X,call(Y,Cont))). with true/1 and call/2 efficient builtins in BinProlog. You can now try out in BinProlog 3.45 your own binary programs by using ::- instead of :- so that the preprocessor will not touch them2. Otherwise, from the outside, BinProlog looks like any other Prolog. Binarization allows a significant simplification of the Prolog engine, which can be seen as specialization of the WAM for the execution of Continuation Passing Binary Programs. As a consequence, a very small emulator (about 60K on Solaris) that often fits completely in the cache of the processor, a more efficient new data representation and some low-level optimizations make BinProlog probably the fastest freely available C-emulated Prolog at this time (812 KLIPS on a Sparcstation 20-41). This means 3-5 times faster than C-Prolog, 2-3 times faster than SWI-Prolog, 1.5-2 times faster than (X)SB-Prolog and close to C-emulated Sicstus 2.1. 3.2 Machines supported This distribution contains the Prolog source of the compiler and executable emula- tors for: - Sparc - SunOS 4.x, Solaris 2.x; - DEC Alpha - 64 bit - 68k NeXT - Mach; SUN3 - SunOS 4.x - MIPS - DEC and SGI; - IBM R6000; - 386-486-Pentium (MsDOS+Windows - with 32bits DOS-extender go32 ver. 1.10, Linux, FreeBSD). _________________________________________2 Take care if you use your own binary clauses to keep always the continuation as a last argument of the last embedded continuation `predicate'. Look at the asm/0 tracer how BinProlog itself does this. 5 ^L As the implementation makes no assumption about machine word size it is likely to compile even on very strange machines that have a C-compiler. BinProlog's integers are inherited from the native C-system. For example on DEC ALPHA machines BinProlog has 64 - 3 = 61 bit integers. On 32-bit systems it has 32 - 2 = 30 bit integers. Floating point is double (64 bits) and it is guaranteed that computations in Prolog will always give the same results as in the underlying C. As a matter of fact BinProlog does not really know that it has floats but how this happens is rather long to explain here. 4 Using BinProlog BinProlog uses R.A. O'Keefe's public domain tokeniser and parser and write utilities (see the files read.pl, write.pl), DCGs and a transformer to binary programs. It compiles itself in less than 1 minute on a Sparcstation 10-40. The system has very fast (heap-based) copy_term/2, findall/3 and findall/4 predicates, floating point, global logical variables, but still lacks full garbage collec- tion. A new term compression technique [19 ] (joint work with Ulrich Neumerkel) re- duces heap-consumption and adds some extra speed . Ulrich's iterative copy_term/2 algorithm further accelerates BinProlog's `copy-once' heap-based findall/3 and findall/4 so that findall-intensive programs may run 2-3 times faster in BinProlog than in other (even native code) implementations. All data areas are now user configurable, and all except the heap are garbage collected. A garbage collector for the heap will be released soon. Although other Prolog's assert and retract primitives are emulated in BinProlog, their functionality has been decomposed in separate simpler operations that give also improved efficiency. For permanent information BinProlog has a new, garbage-collected data area, the blackboard, where terms can be stored and accessed efficiently with a a 2-key hashing function using something like ?-bb_def(likes,joe,[any(beer),good(vine),vegetarian(food)]). and updated with something like ?-bb_set(likes,joe,nothing). or ?-bb_rm(likes,joe). To get its value: ?-bb_val(likes,joe,What). 6 ^L BinProlog 3.45 has also backtrackable global variables, with 2-keyed names. Try: ?- Person=joe, friend#Person:=:mary, bb. and then ?- friend # joe:=:X. The blackboard can be used either directly or through an assert-retract style interface. A small exercise: if you want backtrackable behaviour of assert and retract you can modify extra.pl and use A#B:=:X style global variables in their definition, instead of bb_def/3 etc. The blackboard also gives constant-time sparse arrays and lemmas. For example try: ?- for(I,1,99),bb_def(table,I,f(I,I)),fail. ?- bb. BinProlog 3.45 has Edinburgh behaviour and tries to be close to Sicstus and Quintus Prolog on the semantics of builtins without being too pedantic on what's not really important. All the basic Prolog utilities are now supported (dynamic clauses, a metainter- preter with tracing facility, sort, setof, dynamic operators floating point operations and functions). A fast deterministic append det_append/3 (i,i,o) has been added. Naive reverse using det_append/3 makes more than 3 MegaLIPS on a Sparc 20-41 (a 3-times speed-up). Almost all the builtins are now expanded inline resulting in improved heap con- sumption and performance. A few programs (an automatic Tetris player, a knight-tour, an OR-parallel sim- ulator, Fibonacci, Tak with lemmas, a small neural-net simulator backprop.pl) il- lustrate some of the new features. A few well-known benchmarks have been added to help compare BinProlog with other implementations. BinProlog has supported from start 30 bit integer arithmetic. Now it has also floating point operations and functions like sin, cos, tan, log, exp, pow, etc. They can be used either through the is/2 interface3: ?- X is cos(3.14)+sin(0). or in relational form ?- cos(1,X). _________________________________________3 Is/2 now accepts execution of any predicate of arity n + 1 as a function of arity n. 7 ^L Note that you should use something like Y=3+4, X is 1+expr(Y) instead of Y=3+4, X is 1+Y which will not work in compiled code. Floating point has the same precision and semantics as the type double in C. Floating point operations are close in speed to emulated Sicstus. To try them out use the toy neural-network simulator backprop.pl. This program uses also constant time arrays and is therefore unusually fast compared to its execution in other Prologs like Quintus or Sicstus. 4.1 The interactive toplevel shell To see the command line options: $ bp -help To compile and load or .pl or .pro: ?-[]. BinProlog searches them in the directories ., ./progs and ../src ../library, relative to the BP_PATH environment variable which defaults silently to the current directory if undefined. The dirctory ./myprogs is also searched for possible user programs. While compatible to previous configurations which where single user minded, this allows installing the BinProlog distributon for shared use in a place like /usr/local/BinProlog 4 4.2 Using multiple logic engines A new (experimental) feature added starting with version 3.39 alows launching mul- tiple Prolog engines having their own stack groups (heap, local stack and trail). An engine can be seen as an abstract data-type which produces a (possibly infinite) stream of solutions as needed. To create an engine use: % :-mode create_engine(+,+,+,-). create_engine(HeapSize,StackSize,TrailSize,Handle) The Handle is a unique integer denoting the engine for further processing. To `fuel' the engine with a goal and an expected answer variable do: % :-mode load_engine(+,+,+). load_engine(Handle,Goal,AnswerVariable) No processing except the initialization of the engine takes place and no answer is returned with this operation. Think about it as simply puting gas in your car. To get an answer from the engine do: _________________________________________4 This is usually better to be left to a system person who also can ensure that users inherit the BP_PATH environment variable. An individual user can also put something like setenv BP_PATH /usr/local/BinProlog his or her .cshrc or .login file, to access the shared BinProlog programs. 8 ^L % :-mode ask_engine(+,-). ask_engine(Handle,Answer) If you want to keep the answer for further processing before asking for the next one, use copy_term/2 as the original will go away as the engine backtracks. Note that nothing nasty (as unsafe references to dead heap cells) happens even if you forget to do this, except that the bindings in the `master' engine will be undone. When the stream of answers reaches its end, ask_engine/2 will simply fail. If for some reasons you are not interested in the engine anymore, do % :-mode destroy_engine(+). destroy_engine(Handle) to free the data areas alocated for the engine. If you want to submit another query before using the complet stream of answers, it is more efficient to reuse an existing engine with load_engine/3, instead of destroying it and creating a new one. Try out the following example (see more in files library/engines, progs/engtest.pl): ?-create_engine(256,64,64,E), load_engine(E,append(As,Bs,[A,B,B,A]),As+Bs), ask_engine(E,R1),write(R1),nl, ask_engine(E,R2),write(R2),nl, load_engine(E,member(X,[1,2,3]),X), ask_engine(E,R3),write(R3),nl, ask_engine(E,R4),write(R4),nl, destroy_engine(E). As engines will be assigned to real processors in future multi-threaded implemen- tations this reusability of a given engine for execution of multiple goals is intended to allow precise control to the programmer over the resurces of a system. Preemptive multitasking handled either with thread libraries, when available and efficient, or by BinProlog itself otherwise, is planned in the near future. This `super-scalar' performance improvement can already be tested with the companion (Solaris 2.x only) Linda implementation in directory multi (see file multi/myprogs/mcolor.pl). If an engine fails due to the overflow of a given data area, it will warn you and fail. The warnings are disabled with quietness levels higher than 6 (command line switch -q6). This allows use of engines to quietly recover from ressource errors. For owners of BinProlog's C-source licenses, C-functions with similar names and semantics as the predicates described in this section are available to allow embedding of multiple independent Prolog engines in their C-applications. 4.3 Using multiple engines The file library/engines.pl contains som examples of how multiple engines can be used for implementing for instance all-solution predicates. Here is a re-entrant find_all/3. 9 ^L find_all(X,Goal,Xs):- default_engine_params(H,S,T), find_all(H,S,T,X,Goal,Xs). find_all(H,S,T,X,Goal,Xs):- create_engine(H,S,T,Handle), load_engine(Handle,Goal,X), collect_answers(Handle,Xs), destroy_engine(Handle). collect_answers(Handle,[X_Xs]):-ask_engine(Handle,A),!, copy_term(A,X), collect_answers(Handle,Xs). collect_answers(_,[]). default_engine_params(128,32,32). A more interesting application is based on the synergy between intuitionistic and linear implication and their continuation passing couterparts assumei/1 and assume/0 and multiple engines. The following extension is available with :-[library(enines)]. The concrete syntaxe is Answer<=Producer=>Consumer or Answer<=Producer when the Consumer is the (implicit) current AND-continuation. Producer is started on a separate engine. It produces linear facts of the form Answer, from computed answers of Goal, originating fro distinct OR-branches. They are usable by Consumer as if they were assumed through use of linear implication, i.e. they are consumed one-by-one. This hides the intricacies of starting a new `orthogonal' logic engine into a simple, easy to use abstraction. The actual implementation follows (see also file library/engines.pl): % executes Producer on an `orthogonal' OR-engine Answer<=Producer=>Consumer:-!, % the consumer is explicit cross_run(Producer,Answer,Consumer). Answer<=Producer:- % the consumer is in the `future' cross_run_with_current_continuation(Producer,Answer). cross_run(Producer,Answer,Consumer):- default_engine_params(H,S,T), cross_run(H,S,T,Producer,Answer,Consumer). cross_run(H,S,T,Producer,Answer,Consumer):- compound(Answer),copy_term(Answer,A), new_engine(H,S,T,Producer,Answer,Handle), (A:-ask_or_kill(Handle,A))=>Consumer, 10 ^L destroy_engine(Handle). cross_run_with_current_continuation(Producer,Answer):- default_engine_params(H,S,T), cross_run_with_current_continuation(H,S,T,Producer,Answer). cross_run_with_current_continuation(H,S,T,Producer,Answer):- compound(Answer),copy_term(Answer,A), new_engine(H,S,T,Producer,Answer,Handle), assumei((A:-ask_or_kill(Handle,A))). ask_or_kill(Handle,Answer):-ask_engine(Handle,Answer),!. ask_or_kill(Handle,_):-destroy_engine(Handle),fail. new_engine(H,S,T,Goal,Answer,Handle):- create_engine(H,S,T,Handle), load_engine(Handle,Goal,Answer). % overridable default engine sizes for heap,stack,trail default_engine_params(H,S,T):-assumed(engine_params(H,S,T)),!. default_engine_params(128,32,32). The following example shows how and OR-stream of answers seen as linear as- sumptions from an `orthogonal' engine can be used in and AND-branch. ?- a(X)<=member(X,[1,2,3])=>(a(A),a(B),a(C),write([A,B,C]),nl). [1,2,3] If found interesting, a trully parallel, highly efficient implementation will be made available in future releases. The same abstraction is already supported in the companion Multi-BinProlog engine, through use of real Solaris 2.4 threads (see file multi/myprogs/ortho.pl). On multiple processor Sparcs this extension should allow super-linear speed-up, in the hands of a good programmer, as the answer is speculatively computed in parallel with the computations performed by Consumer. We have verified that when multiple processors are available, Multi-BinProlog background processes will tend to execute on different processors, with super-linear speed-up (see file multi/myprogs/mcolor.pl and scripts seq and par in the same directory). 4.4 Real standalone applications through compilation to C Starting with version 3.30 it is possible to separately compile user applications and just link them with the emulator library and the C-ified compiler (see directory pl2c). This allows creation of a fully C-ified application in a few seconds. 11 ^L Just type make PROJ=queens in directory pl2c. The standalone application queens is ready to be executed by typing queens. The generated C-code can be seen in files queens.h and queens.c. Moreover, on systems with dynamic linking like Solaris 2.x true executables of size starting at about 6K can be created starting with version 3.30 (see directory dynpl2c). If you define a predicate main/0 then your executable will start directly from there instead of the usual interactive top-level. Calling it with a high quietness-level (i.e. command line switch -q5) will suppress warnings and unwanted messages. 4.5 Unix pseudo-executables The following still works, although the new C-ification technique (see directories pl2c, dynpl2c) can now create true one-file standalones. It is possible to create (as in the past) a small runtime application (called "newappl.bp"), from .pl as follows: ?-make_appl('.pl'). Deliver the appropriate "bp" file (the Prolog engine) with your application. The user must type: $ bp newappl.bp to start it. Note: the file must contain a clause main(X):-... That's where execution starts. BinProlog's shell is nothing but such an application which starts with a toplevel loop i.e. something like: main(X):-toplevel(X). As a new feature, you can override this behaviour, even for the standard BinProlog system containing the predicate main/1 (which starts the interactive top-level), by defining a predicate main/0 in your program file. In this case, main/0 becomes the new starting point. You can also generate (on UNIX systems) stand-alone executables that dynam- ically start the emulator (thanks to Peter Reintjes for suggesting this). You can do something like: 12 ^L % FILE: hello.pl main(true):-write(hello),nl. % DO: % ?-make_executable_unix_appl( % '/usr/local/bin/bp -q5', % AbsolutePathToEmulator (q=quietness) % 'hello.pl', % SourceFile % hello). % ExecutableFile In the case of the "hello.pl" program, the user must type, at the Unix prompt: $ hello to start it. The code of this primitive is at the end of the file co.pl. Again, we recommend using the C-ification technique which can already speed up most applications and in the future will generate very fast code competitive with native code compilers. You can bootstrap the compiler, after modifying the *.pl files by: ?- boot. ?- make. or, similarly for any other project having a top *.pro file: ?-make(ProjectFile). ?-make(ProjectFile,Module). or ?-cmake(ProjectFile). ?-cmake(ProjectFile,Module). if you intend to generate C-code and possibly hide non-public predicates inside a module. This allows to integrate your preferences and extensions written in Prolog to the BinProlog kernel. Make sure you keep a copy the original wam.bp in a safe place, in case things go wrong when you type ?-boot. 13 ^L 4.6 Some limitations/features of BinProlog We passed Occam's razor on a few "features" of Prolog that are obsolete in modern programming environments and on some others that are, in our opinion, bad software practice. Only one file at a time can be compiled in the interactive environment: ?-[myfile]. or ?- compile(myfile). Now BinProlog supports an include directive: :-[include1]. :-[include2]. .... This suggest to make a project (*.pro) file using a set of include directives each refereing to a *.pl file. When compiled to a file (by using the ?-make(MyProject) command) a make-like memoing facility will avoid useless recompilation of the in- cluded (*.pl) files by creation of precompiled (*.wam) files. For large projects this is the recommended technique. Creation of C-ified standalone files is also possible (see the pl2c directory). Programs that work well can be added to the BinProlog kernel. This avoids repeated recompilation of working code and predicates in the kernel are protected against name clashing. New programs can be loaded in the interactive environment. When they work well, they migrate to the kernel. You can prepare a good Makefile to automate this job. When everything is OK you can deliver it as a run-time-only application. Releases after 3.30 contain a basic make facility which avoids to recompile included *.pl files when a newer *.wam file exists. Programs are searched with suffixes "", ".pl", ".pro" in the directories ., ./progs and ./myprogs. There's no limit on the number of files you can compile to disk: ?- compile(wam,[file1,file2,...],'application.bp'). Now BinProlog does implement consult/1, reconsult/1 and listing/0 for inter- preted code but use of compile/1 is highly recommended instead. See the file ex- tra.pl for the implementation. Faster than asserted code is so called assumed code (see the next sections) i.e. intuitionistic and linear implication. Here are some other limitations/features: 14 ^L o Clauses of a predicate must be grouped. o Clauses having undefined predicates occurring right after the head are rejected. o ARITY is limited to 255. o The heap garbage collector is not yet implemented, but we plan to add it soon. However, the blackboard, dynamic code space, the string space and the hashing table ARE garbage collected before loading a new program. Mode is interactive by default (for compatibility with other Prologs) but if you use a modern, windows based environment you may want to switch it off with: ?- interactive(no). or turn it on again with ?- interactive(yes). 4.7 Other BinProlog goodies and new predicates A few BinProlog specific predicates are available: o restart/0 - cleans every data area o cwrite/1 - fast but restricted write o symcat/3 (i,i,o) returns a new symbol of the form _. o gensym/2 (i,o) forms a new name of the form _. o sread/2 (i,o) reads from a name a (ground) term, swrite(i,o) writes a term to a name. o term termcat/3 (i,i,o) adds its second argument as last argument of its first argument and returns the new term o term_chars/2 converts between a ground term and its string representation o not/1 is a form of sound negation o for/3 as for instance in ?-for(I,1,5),write(I),nl,fail generates a failure driven loop It is a good idea to take a look at BinProlog's *.pl for other builtin-or-library predicates before implementing them yourself. The file write.pl contain various output predicates like o write/1 15 ^L o writeq/1 o portray_clause/1 o print/1 o display/1 o ttyprint/1 o ttynl/1 You can extend BinProlog by adding new predicates to the file extra.pl and then use the predicate boot/0 defined in the file co.pl. 4.8 Efficient findall based meta-programming BinProlog's findall/3 is so efficient that you can afford (with some care) to use it instead of explicit (and more painful) first-order programs as in: % maplist with findall maplist(Closure,Is,Os):- Closure=..L1, det_append(L1,[I,O],L2), P=..L2, findall(O,map1(P,I,Is),Os). map1(P,I,Is):-member(I,Is),P. This can be used as follows: ?- maplist(+(1),[10,20,30],T). => T=[11,21,31] Note that constructing Closure only once (although this may not be in any Prolog text-book!) is more efficient than doing it at each step. The predicate gc_call(Goal) defined in the file lib.pl executes Goal in minimal space. It is explained in the Craft of Prolog by R.A. O'Keefe, MIT Press. Do not hesitate to use it. BinProlog offers a very fast, heap-oriented findall, so you can afford to use gc_call. In good hands, it is probably faster than using assert/retract or the usual mark-and-sweep garbage collector of other implementations. 4.9 Builtins The following (user-level) builtins are supported, with semantics (intended to be) close to SICSTUS and QUINTUS Prolog. 16 ^L fail/0 nl/0 var/1 nonvar/1 integer/1 atomic/1 +/3 % arithmetic offers also the usual is/2 interface -/3 * /3 // /3 mod/3 << /3 >> /3 /" /3 "/ /3 # /3 % bitwise XOR " /3 % bitwise NOT random/1 % returns an integer, not a float get0/1 put/1 < /2 > /2 =< /2 >= /2 =:= /2 ="= /2 compare/3 seeing/1 seen/0 telling/1 told/0 copy_term/2 functor/3 arg/3 name/2 abort/0 is_compiled/1 % checks if a predicate is compiled Other useful predicates are defined in the file lib.pl and work as expected. true/0, =/2, .. -> .. ; .. 17 ^L ;/1 call/1 "+/1 repeat/0 findall/3 findall/4 for/3 numbervars/4 see/1 tell/1 system/1 statistics/0 statistics/2 atom/1 compound/1 =../2 length/2 tab/1 get/1 == /2 "== /2 A @< B A @> B A @=< B A @>= B compile/1 - see co.pl for the compiler read/1 - see the file: read.pl write/1 - see the file: write.pl halt/0, halt(ReturnCode), listing/0, % only for interpreted code listing(Pred,Arity), assert/1, asserta/1, assertz/1, retract/1, retractall/1 erase/1, dynamic/1, instance/2, clause/2, clause/3, consult/1, % usable for debugging or dynamic code reconsult/1, % they override compiled definitions !!! 18 ^L setof/3, bagof/3, sort/3, keysort/3, setarg/3, % backtrackable update of arg I of term T with new term X is_builtin/1 % lists the system-level builtins (written in C): current_predicate/1 % lists/checks existence of a predicate/arity predicate_property/2 % lists/checks if a property (arg 2) is associated with a head (arg 1) Operators are defined and retrieved with :-op/3, current_op/3. Including files are supported. For compile/1 use :-compile(file). or :-[file]. % this calls the compiler too !!! For consulting included interpreted code within an embedding reconsult/1 use: :-consult(file). in your (unique) top-level file. This overcomes the limitation of having only one top-level file. 5 Source-level stateles modules (module)/1 current_module/1 is_module/1 - checks/generates an existing module-name module_call/2, ':'/2 - calls a predicate hidden in a module module_name/3 - adds the name of a module to a symbol module_predicate/3 - adds the name of a module to a goal modules/1 - gives the list of existing modules The following example: :-module m1. :-public d/1. a(1). a(2). 19 ^L a(3). a(4). d(X):-a(X). :-module m2. :-public b/1. b(X):-c(X). c(2). c(3). c(4). c(5). c(6). :-module m3. :-public test/1. test(X):-b(X),d(X). :-module user. go:-modules(Ms),write(Ms),nl,fail. go:-test(X),write(X),nl,fail. Executiong ?-go. will generate the following output: [user/0,m1/0,m2/0,m3/0] 2 3 4 Starting with version 3.30, predicates in the BinProlog system itself which are not intended to be used by applications, are hidden in the module prolog but can be accessed by calling them with 'prolog:my_predicate'(...). Explicit naming of the module where the hidden predicate is defined should be used when call/1, findall/3 etc. uses a hidden predicate, even if it is in the module itself. This draconian constraint is motivated by simplicity of BinProlog's stateless purely source-level module system. Basically predicates in a module have their names prefixed as in 'my_current_module:my_predicate' in a preprocessing step, 20 ^L except if they are declared public or are known to the system as being so (i.e. in the case of builtins). This basic concept of modules (essentially the same as what can be achieved with extern and static declarations in C) covers only compiled code, and is mostly in- tended to ensure multiple name spaces with a very simple semantics and no aditional space or time overhead. On the other hand use of linear and intutionistic implication is suggested for dynamic modular and hypothetical reasoning constructs. Meta-predicate declarations are not supported at this time (mostly because they are at least as cumbersome as just puting the right name extension in argument positions which require it :-)), but they might be added in the future if a significant number of users will ask to have them. Note that builtins and predicates defined in a special module user are always public. A public predicate keeps its name unchanged in the global name space while hidden predicates have their names prefixed by the name of the module in their definitions and in all their statically obvious (first-order) uses. Alternatively, module/2 allows to define a module and its public predicates with one declaration as in: :-module(beings,[cat/4,dog/4,chicken/2,fish/0,maple/1,octopus/255]). 6 Editing, apropos/1, trace/1, spy/1, nospy/1 To edit a file and then compile it use: ?- edit(,). To edit and recompile the currently compiled file using the emacs editor type: ?- ed. To edit and recompile the currently compiled file using the edit editor (under DOS) type: ?- edit. To simply recompile the last file type: ?- co. The debugger/tracer uses R.A. O'Keefe's public domain meta-interpreter. You can modify it in the file "extra.pl". DCG-expansion is supported by the public domain file dcg.pl. To debug a file type: ?- reconsult(FileName). and then ?- trace(Goal). For interactivity, both the toplevel and the debugger depend on 21 ^L ?-interactive(yes). or ?-interactive(no). My personal preference is using interactive(no) within a scrollable window. How- ever, as traditionally all Prologs hassle the user after each answer BinProlog 3.45 will do the same by default. If you forget the name of some builtin, apropos/1 (or help/1) will give you some (flexible up to one misspelled or missing letter) matches with their arities. You can use the debugger to debug compiled code with the following trick if you always debug bottom-up i.e. if you ensure that tools work before to using them. For example, on top of the compiled file allperms.pl you can temporarily interpret perm/2, insert/3 etc. to be able to trace them while keeping uninteresting predicates compiled. By the way, this allows, to trace/debug parts of the kernel itself in particular. The following terminal session shows an example: ?- [allperms]. compiling(to(mem),progs/allperms.pl,...) compile_time(230) ?- consult(user). % using compile/1 is MUCH faster reconsulting(user) g0(N):-nats(1,N,Ns),perm(Ns,_),fail. g0(_). WARNING: redefining compiled predicate(g0/1) perm([],[]). perm([X_Xs],Zs):- perm(Xs,Ys), insert(X,Ys,Zs). insert(X,Ys,[X_Ys]). insert(X,[Y_Ys],[Y_Zs]):- insert(X,Ys,Zs). WARNING: redefining compiled predicate(perm/2) WARNING: redefining compiled predicate(insert/3) reconsulted(user,time = 20) yes ?- interactive(no). yes ?- trace(g0(3)). Call: g0(3) Call: nats(1,3,_645) 22 ^L compiled(nats(1,3,_645)) Exit: nats(1,3,[1,2,3]) Call: perm([1,2,3],_648) Call: perm([2,3],_1095) Call: perm([3],_1362) Call: perm([],_1629) Exit: perm([],[]) Call: insert(3,[],_1362) Exit: insert(3,[],[3]) Exit: perm([3],[3]) Call: insert(2,[3],_1095) Exit: insert(2,[3],[2,3]) Exit: perm([2,3],[2,3]) Call: insert(1,[2,3],_648) Exit: insert(1,[2,3],[1,2,3]) Exit: perm([1,2,3],[1,2,3]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[1,2,3]) Redo: insert(1,[2,3],[1,2,3]) Call: insert(1,[3],_2683) Exit: insert(1,[3],[1,3]) Exit: insert(1,[2,3],[2,1,3]) Exit: perm([1,2,3],[2,1,3]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[2,1,3]) Redo: insert(1,[2,3],[2,1,3]) Redo: insert(1,[3],[1,3]) Call: insert(1,[],_2945) Exit: insert(1,[],[1]) Exit: insert(1,[3],[3,1]) Exit: insert(1,[2,3],[2,3,1]) Exit: perm([1,2,3],[2,3,1]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[2,3,1]) Redo: insert(1,[2,3],[2,3,1]) Redo: insert(1,[3],[3,1]) Redo: insert(1,[],[1]) Fail: insert(1,[],_2945) 23 ^L Fail: insert(1,[3],_2683) Fail: insert(1,[2,3],_648) Redo: perm([2,3],[2,3]) Redo: insert(2,[3],[2,3]) Call: insert(2,[],_2421) Exit: insert(2,[],[2]) Exit: insert(2,[3],[3,2]) Exit: perm([2,3],[3,2]) Call: insert(1,[3,2],_648) Exit: insert(1,[3,2],[1,3,2]) Exit: perm([1,2,3],[1,3,2]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[1,3,2]) Redo: insert(1,[3,2],[1,3,2]) Call: insert(1,[2],_2945) Exit: insert(1,[2],[1,2]) Exit: insert(1,[3,2],[3,1,2]) Exit: perm([1,2,3],[3,1,2]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[3,1,2]) Redo: insert(1,[3,2],[3,1,2]) Redo: insert(1,[2],[1,2]) Call: insert(1,[],_3207) Exit: insert(1,[],[1]) Exit: insert(1,[2],[2,1]) Exit: insert(1,[3,2],[3,2,1]) Exit: perm([1,2,3],[3,2,1]) Call: fail compiled(fail) Fail: fail Redo: perm([1,2,3],[3,2,1]) Redo: insert(1,[3,2],[3,2,1]) Redo: insert(1,[2],[2,1]) Redo: insert(1,[],[1]) Fail: insert(1,[],_3207) Fail: insert(1,[2],_2945) Fail: insert(1,[3,2],_648) Redo: perm([2,3],[3,2]) Redo: insert(2,[3],[3,2]) Redo: insert(2,[],[2]) 24 ^L Fail: insert(2,[],_2421) Fail: insert(2,[3],_1095) Redo: perm([3],[3]) Redo: insert(3,[],[3]) Fail: insert(3,[],_1362) Redo: perm([],[]) Fail: perm([],_1629) Fail: perm([3],_1362) Fail: perm([2,3],_1095) Fail: perm([1,2,3],_648) Redo: nats(1,3,[1,2,3]) Fail: nats(1,3,_645) Exit: g0(3) Starting with version 3.08 spy/1 and nospy/1 allow to watch entry and exit from compiled predicates. Note that they should be in the file to be compiled, before any use of the predicate to be spied on as in: % FILE: jbond.pl :-spy a/1. :-spy c/1. b(X):-a(X),c(X). a(1). a(2). c(2). c(3). This gives the following interaction: ?-[jbond]. ...... ?- b(X). Call: a(_2158) : ; !!! compiled(a/1) Exit: a(1) Call: c(1) : ; !!! compiled(c/1) Fail: c(1) Redo: a(1) Exit: a(2) Call: c(2) : ; !!! compiled(c/1) Exit: c(2) 25 ^L X=2; Redo: c(2) Fail: c(2) Redo: a(2) Fail: a(_2158) no Although these are very basic debugging facilities you can enhance them at your will and with some discipline in programming they may be all you really need. Anyway, future of debugging is definitely not by tracing. One thing is to have stronger static checking. In dynamic debugging the way go is to have a database of trace-events and then query it with high level tools. We plan to add some non-tracing database- oriented debugging facilities in the future. You can generate a kind of intermediate WAM-assembler by ?- compile(asm,[file1,file2,...],'huge_file.asm'). A convenient way to see interactively the sequence of program transformations Bin- Prolog is based on is: ?- asm. a-->b,c,d. ^D DEFINITE: a(A,B) :- b(A,C), c(C,D), d(D,B). BINARY: a(A,B,C) :- b(A,D,c(D,E,d(E,B,C))). WAM-ASSEMBLER: clause_? a,3 firstarg_? _/0,6 put_structure d/3,var(4-4/11,1/2) write_variable put,var(5-5/10,1/2) write_value put,var(2-2/6,2/2) write_value put,var(3-3/7,2/2) put_structure c/3,var(3-8/14,1/2) write_variable put,var(2-9/13,1/2) 26 ^L write_value put,var(5-5/10,2/2) write_value put,var(4-4/11,2/2) execute_? b,3 7 Compiling to C Partial C-ification [18 ] is a translation framework which `does less instead of doing more' to improve performance of emulators close to native code systems. Starting from an emulator for a language L written in C, we translate to C a subset of its instruction set (usually frequent and fine-grained instructions which are executed in contiguous sequences) and then simply use a compiler for C to generate a unique executable program. A translation threshold allows the programmer to empirically fine-tune the C- ification process by choosing the length of the emulator instruction sequence, starting from which, translation is enabled. The process uses a reasonable default value and can be easily controlled by the programmer :-set_c_threshold(Min,Max). will ensure that only emulated sequences of length between Min and Max get translated to C. This allows to handle gracefully the size/speed tradeoff. Communication between the run-time system (still under the control of the em- ulator) and the C-ified chunks is handled as follows. The emulated code representation of a given program (in particular the compiler itself) is mapped to a C data structure which allows exchange of symbol table information at link time. To be able to call a C-routine from the emulator we have to know its address. Unfortunately, the linker is the only one that knows the eventual address of a C- routine. A simple and fully portable technique to plug the address of a C-routine into the byte code is to C-ify the byte-code of the emulator into a huge C array of records, containing the symbolic address of the C-chunks. After compilation, and linking with the emulator, the linker will automatically resolve all the missing addresses and generate warnings for the missing C-routines. This is compiled together with the C-code of the emulator to a stand alone executable with performance in the range between pure emulators and native code implementations. The method ensures a strong operational equivalence between emulated and translated code which share exactly the same observables in the run-time system. An important characteristic is easy debugging of the resulting compiler, com- ing from the full sharing of the run-time system between emulated and compiled code and the following property we call instruction-level compositionality: if ev- ery translated instruction has the same observable effect on a (small) subset of the program state (registers and a few data areas) in emulated and translated mode, 27 ^L then arbitrary sequences of emulated and translated instructions are operationally equivalent. Currently C-ification covers term creation on the heap and frequently used inline operations which can be processed in Binary Prolog before calling the `real goal' in the body. Chunks containing small built-ins that do not require a procedure call will gen- erate `leaf-routines' in C (which are called efficently and do not use stack space). On the other hand large built-ins implemented as macros in the emulator would make code size explode. Implementing them as functions to be called from the C- chunk would require code duplication and it would destroy the leaf-routine discipline which is particularly rewarding on Sparcs. We have chosen to implement them through an abstraction with a coroutining flavor: anti-calls. Note that calling a built-in from a C-chunk is operationally equivalent to the following sequence: o return from the chunk, o execute the built-in in the emulator (usually a macro), o call a new leaf-routine to resume the work left from the previous leaf-routine. Overall, anti-calls can be seen as form of coroutining (jumping back and forth) between native and emulated code. Anti-calls can be implemented with the direct- jump technique even more efficiently, although for portability reasons we have chosen a conventional return/call sequence, which is still fairly efficient as a return/call costs the same as a call/return. Moreover, this allows the chunks to remain leaf- routines, while delegating overflow and signal handling to the emulator. Note that excessively small chunks created as result of anti-calls are removed by an optimizing step of the compiler with the net result that such code will be completely left to the emulator. This is of course more compact and provable to be not slower than its fully C-expanded alternative. 7.1 Performance of C-ified code The speed-up clearly depends on the amount of C-ification and on the statistical importance of C-ified code in the execution profile of a program (see figure 1). We have noticed between 10-20% speed increase for programs which take advantage of C-ified code moderately, As these programs spend only 20-30% of their time in C- ified sequences performances are expected to scale correspondingly when we extend this approach to the full BinProlog instruction set and implement low-level gcc direct jumps instead of function calls and anti-calls. Code-sizes for C-ified BinProlog executables (dynamically linked on Sparcs with Solaris 2.3) are usually even smaller than `compact' Sicstus code which uses classical instruction folding (a few hundreds of opcodes) to speed-up the emulator. The following table shows some code-size/execution-speed variations with respect to the threshold for the semi-ring (SEMI3) benchmark. Clearly, excessively small 28 ^L __________________________________________________________________ |__Bmark/Compiler__|_____emBP__|____C-BP__|___emSP__|___natSP__|__ |_|__NREV_(KLIPS)__|_|_______445__|___455__|_|___412__|____882__|_| |_|__CAL_(ms)_________|_|____490__|___310__|_|___590__|____310__|_| |_|__FIBO_(ms)________|_|__1730__|___1320__|_|_1400__|_____800__|_| |_|__TAK_(ms)_________|_|____610__|___470__|_|___400__|____180__|_| |_|__SEMI3_(ms)______|_|___1810__|___1410__|_|_1810__|___1310__|_| |_|__QUEENS_(ms)___|_|_____3170__|___2220__|_|_2840__|___1070__|_|__ Figure 1: Performance of emulated (emBP) and partially C-ified BinProlog 3.22 (C-BP) compared to emulated (emSP) and native (natSP) SICStus 2.1_9 on a Sparc 10/20). chunks can influence adversely not only on size but also on speed. Something like threshold=20, looks like a practical optimum for this program. threshold: 0 4 8 20 30 1000 emBP emSP natSP size: (K) 34.5 32.2 29.9 16.3 13.1 12.9 4.8 22.0 31.9 speed: (ms) 1480 1430 1440 1450 1810 1790 1800 1810 1310 8 The Blackboard A new interface has been added to separate backtrackable and surviving uses of blackboard objects so this primitive and the def/3, set/3, rm/2 of previous version although still available should be replaced either with: o global logical variables o garbage-collectible permanent objects. 8.1 Global logical variables Syntax: A#B:=:X, or lval(A,B,X). where X is any term on the heap. It has simply a global name A#B i.e. an entry in the hashing table with keys A and B. The address in the table (C-pointers are the same as logical variables in BinProlog) is trailed such that on backtracking it will be unbound (i.e. point to itself). Unification with A#B:=:Y is possible at any point in the program which knows the `name' A#B. Although a global logical variable cannot be changed it can be further instanti- ated as it happens to ordinary Prolog terms. Backtracking ensures they vanish so that no unsafe reference can be made to them. The program lq8.pl is an efficient 8-queens program using global logical variables to simulate the chess-board. 29 ^L 8.2 Garbage-collectible permanent objects. On the other hand, if bb_def/3 or bb_set/3 is used to name objects on the black- board, they "survive" backtracking and can afterwards be retrieved as logical vari- ables using bb_val/3. bb_def/3 (i,i,i) defines a value bb_set/3 (i,i,i) updates a value bb_rm/2 (i,i) removes a value bb_val/3 (i,i,o) retrieves the value They are quite close to the recorda/recordz family of other Prologs although they offer better 2-key indexing, are simpler and can be used to do much more things efficiently. You can look to the program progs/knight.pl on how to use them to implement in a convenient and efficient way programs with backtrackable global arrays. They can be used to save information that survives backtracking in a way similar to other Prolog's assert and retract and are safe with respect to garbage collection of the blackboard. The predicate bb_list/1 gives the content of the blackboard as a heap object (list), while bb/0 simply prints it out. These predicates offer generally faster and more flexible management of dynamic state information than other Prolog's dynamic databases. 8.3 Assert and retract For compatibility reasons BinProlog has them, implemented on top of the more efficient blackboard manipulation builtins. This is an approximation of other Prologs assert and retract predicates. It tries to be close to Sicstus and Quintus with their semantics. For efficiency and programming style reasons I strongly suggest not to use them too much. If you want maximal efficiency use bb_def/3, bb_set/3, bb_val/3, bb_rm They give you access to a very fast hashing table --> value, the same that BinProlog uses internally for indexing by predicate and first argument. They are close to other Prolog's `record' family, except that they do even less. To use dynamic predicates it is a good idea to declare them with dynamic/1 although asserts will now be accepted even without such a declaration. To define dynamic code in a file you compile, dynamic declarations are mandatory. To activate an asserted predicate it is a good idea to alway call it with ?-metacall(Goal). instead of ?- Goal. 30 ^L However, this is not a strong requirement anymore, as an important number of users were unhappy with this restriction. The dynamic predicates are: assert/1 asserta/1 assertz/1 retract/1 clause/2 metacall/1 abolish/2 You can easily add others or improve them by looking to the sources in the file extra.pl. 8.4 Assumed code, intutionistic and linear implication Intuitionistic assumei/1 adds temporarily a clause usable in later proofs. Such a clause can be used an indefinite number of times, mostly like asserted clauses, except that it vanishes on backtracking. Its scoped version Clause=>Goal or [File]=>Goal makes Clause or the set of clauses found in File available only during the proof of Goal. Both vanish on backracking. Clauses are usable an indefinite number of times in the proof, i.e. for instance ?-assumei(a(13)),a(X),a(Y) will succed. Linear assumel/1 adds temporarily a clause usable at most once in later proofs. This assumption also vanishes on backtracking. Its scoped version Clause-:Goal or [File]-:Goal makes Clause or the set of clauses found in File available only during the proof of Goal. Both vanish on backracking. Each clause is usable at most once in the proof, i.e. for instance ?-assumel(a(13)),a(X),a(Y) will fail. You can freely mix linear and intutionistic clauses and implications for the same predicate. Try out something like ?-a(10)-:a(11)=>a(12)-:a(13)=>(a(X),a(X)). X=11; X=13; no This shows that a(10) and a(12) are consumed after their first use while a(11) and a(13) are reusable indefinitely. See the relatively straightforward implementation of these predicates in the file extra.pl. Note that BinProlog's linear implication succeeds even if not all the assumptions are consumed while in systems like Lolli this is a strong requirement. Quantifiers and other linear operators are not implemented at this time, but can be added in the future if there's enough demand for them. 31 ^L 8.5 Overriding Assumed predicate will override similarly named dynamic predicates which in turn will override compiled ones. Note that overriding is done at predicate, not clause level. Note also that multifile compiled clauses are still forbidden. However, multifile assumed and dynamic code is now accepted. 8.6 Language enhancements based on linear implication Linear implication can be used to quickly add some language enhancements to a Prolog system. For instance, to add a switch : : :case statement one can write simply: switch(Selector,Body):- case(Selector)-:Body. test(X):- switch(X, ( case(1)->write(one) ; case(2)->write(two) ; otherwise->write(unexpected(X)) )) ,nl. % ?-test(2),test(13). Clearly, this is a very compact way, useful at least as a specification. Note that this can be done as well with macro expansion, possibly more efficiently, but also with much more work. 8.7 Problem solving with linear implication Linear implication is a serious and very convenient problem solving tool, which allows avoiding explicit handling of complex data-structures. Let's suppose we want to walk through a (possibly circular) graph structure without looping. With linear implication this becomes: path(X,X,[X]). path(X,Z,[X_Xs]):-linked(X,Y),path(Y,Z,Xs). linked(X,Y):-c(X,Ys),member(Y,Ys). go(Xs):- c(1,[2,3]) -: c(2,[1,4]) -: c(3,[1,5]) -: c(4,[1,5]) -: path(1,5,Xs). 32 ^L or path(X,X,[X]). path(X,Z,[X_Xs]):-c(X,Y),path(Y,Z,Xs). % data go(Xs):- (c(1,X1):-c1(X1)) -: (c(2,X2):-c2(X2)) -: (c(3,X3):-c3(X3)) -: (c(4,X4):-c4(X4)) -: path(1,5,Xs). c1(2). c1(3). c2(1). c2(4). Some finite domain constraint solving can also be done quite efficiently (1.3 sec- onds on a Sparc 10-20 for the SEND + MORE = MONEY puzzle - see file progs/lconstr.pl). % Program: linear implication based FD constraint solving % Author: Paul Tarau, 1995 % cryptarithmetic puzzle solver -see progs/lconstr.pl % a kind of "constraint solving with linear implication" example1( [s,e,n,d,m,o,r,e,y]=[S,E,N,D,M,O,R,E,Y], [S,E,N,D]+ [M,O,R,E]= [M,O,N,E,Y], _ ). % Addition of two numbers - simplified version - sum(As, Bs, Cs) :- sum(As, Bs, 0, Cs). sum([], [], Carry, [Carry]). sum([A_As], [B_Bs], Carry, [C_Cs]) :- !, add2digits(A,B,Carry,C,NewCarry), sum(As, Bs, NewCarry, Cs). add2digits(A,B,Carry,Result,NewCarry):- 33 ^L bind(A),bind(B), add_with_carry(10,A,B,Carry,Result,NewCarry). add_with_carry(Base,A,B,Carry,Result,NewCarry):- S is A+B+Carry, Result is S mod Base, NewCarry is S // Base, new_digit(Result). bind(A):-var(A),!,digit(A). bind(_). new_digit(A):-digit(A),!. new_digit(_). solve(As,Bs,Cs,Z):- digit(0)-:digit(1)-:digit(2)-:digit(3)-:digit(4)-:digit(5)-: digit(6)-:digit(7)-:digit(8)-:digit(9)-: ( sum(As,Bs,Cs), Z>0 ). puzzle:- init(Vars,Puzzle,Names), Puzzle=(Xs+Ys=Zs),Zs=[Z__], reverse(Xs,As), % see progs/lconstr.pl reverse(Ys,Bs), reverse(Zs,Cs), solve(As,Bs,Cs,Z), show_answer(Vars,Names,Puzzle), % see progs/lconstr.pl fail. puzzle:- write('no (more) answers'),nl,nl. go:- (init(X,Y,Z):-example1(X,Y,Z))-:puzzle, fail. Notice how linearly assumed digit/1 facts are consumed by bind/1 and new_digit/1 to enforce constraints as early as possible inside the addition loop. 8.8 The blackboard as an alternative to assert and retract Designed in the early stages of Prolog, assert and retract have been overloaded with different and often conflicting requirements. They try to be both the way to implement permanent data structures for global state information, self-modifying code and tools for Prolog program management. This created not only well-known semantical but also expressivity and efficiency problems. 34 ^L This unnecessary overloading is probably due to some of their intended uses in interpreted Prologs like implementing the consult/1 and reconsult/1 code- management predicates that can be replaced today by general purpose makefiles. As a consequence, their ability to express sophisticated data structures is very limited due mostly to unwanted copying operations (from heap to dynamic code area and back) and due to their non-backtrackable behaviour. For example, to ensure indefinite number of uses of an asserted clause most Pro- logs either compile it on the fly or do some form of copying (usually twice: when asserting and when calling or retracting). This is not only a waste of resources but also forbids use of asserted clauses for dynamically evolving global objects con- taining logical variables, one of the most interesting and efficient data structure tricks in Prolog. Worst, variables representing global data structures have to be passed around as extra arguments, just to bore programmers and make them dream about inheritance and objects oriented languages. This also also creates error prone maintenance problems. Just think about adding a new seventh argument to a 10- parameter Prolog predicate having 10 clauses and being called 10 times. Those are the main reasons for the re-design of these operations using BinProlog's blackboard. Objects on the blackboard have indefinite extent. However, their names are "rigid designators" that can change their reference. Data objects do not disappear just because they have no names anymore. This is the main difference with variables in languages with destructive assignment. If the garbage collector "can prove" that an object or some part of it is will never be used again, the space will be recu- perated automatically. Although objects cannot be "changed" they can be further instantiated as it happens to ordinary Prolog terms. Efficient access to objects on the blackboard or part of them is based on an efficient 2-key hashing table, internal to BinProlog's run-time system. 8.9 The low-level blackboard operations Six low-level5 primitives def/3, set/3, val/3, rm/2, copy_term/2, save_term/2 are used in BinProlog 3.45 to fully replace assert and retract while keeping distinct their overloaded naming and copying function. 8.9.1 Naming primitives The first four are simply an interface to BinProlog's unique global hashing table working as an -->HeapOrBlackboardObject. function. _________________________________________5 We suggest avoiding these operations because they are not garbage collection-safe in BinProlog 3.45. 35 ^L o def/3: (i,i,i) defines a value (usable only once) or fails; o set/3: (i,i,i) updates a value that has been defined or warns and fails; o val/3: (i,i,o) retrieves the value or fails if absent; o rm/3: (i,i) deletes the value or fails if absent. We call them naming primitives as they are used to name arbitrary heap or blackboard objects for definition, update and access function. Naming objects on the heap is generally unsafe and should be hidden from the user except for constants which are actually copied in the hashing table instead of being pointed to. This frequent case has been given to end users as an efficient 2-keys, 1-value dictionary since the first release of BinProlog. If blackboard operations are backtrackable heap objects can be safely named. This suggested the implementation of global logical variables in BinProlog 3.45. Otherwise, in BinProlog's gc-safe transfers to and from the blackboard are doing with a very efficient copying algorithm. Not that if the garbage collector is not used naming objects on the blackboard is safe as they are always at a lower address than the base of the heap. As a consequence they survive backtracking while keeping their behaviour as close as possible to the behaviour of usual heap objects. This usage is compatible with BinProlog 1.71 but not recommended in BinProlog 3.45. 8.9.2 Copying primitives Copy_term/2 is Prolog's usual primitive extended to copy objects from the heap and also from blackboard to the current top of the heap. We refer to [10 ] for the implementation and memory management aspects of these primitives. Save_term/2 copies an object possibly distributed over the heap and the black- board to a new blackboard object. It also takes care not to copy parts of the object already on the blackboard. Remark that having known modes and argument types helps in the case of partial evaluation or type inference systems. Separating Prolog's asserts two main functions (naming+copying) in lower level operations allows program transformers to go in- side more complex blackboard operations and possibly use the typing and mode information that comes from def/3, set/3 and val/3 to infer it for other predicates. 8.10 An useful Prolog extension: bestof/3 Bestof/3 is missing in all current Prolog implementations we know of. BinProlog's bestof/3 works like findall/3, but instead of accumulating alternative solutions, it selects successively the best one with respect to an arbitrary total order relation. If the test succeeds the new answer replaces the previous one. At the end, either the query has no answers, case in which bestof fails, or an answer is found such that 36 ^L it is better than every other answer with respect to the total order. The proposed syntax is ?-bestof(X,TotalOrder,Goal) At the end, X is instantiated to the best answer. For example, the maximum of a list of integers can be defined simply as: max(Xs,X):-bestof(X,>,member(X,Xs)). The following is an efficient implementation implementation using the black- board. % true if X is an answer of Generator such that % X Rel Y for every other answer Y of Generator bestof(X,Closure,Generator):- copy_term(X,Y), Closure=..L1, det_append(L1,[X,Y],L2), Test=..L2, bestof0(X,Y,Generator,Test). bestof0(X,Y,Generator,Test):- inc_level(bestof,Level), Generator, update_bestof(Level,X,Y,Test), fail. bestof0(X,_,_,_):- dec_level(bestof,Level), val(bestof,Level,X), rm(bestof,Level). % uses Rel to compare New with so far the best answer update_bestof(Level,New,Old,Test):- val(bestof,Level,Old),!, Test, bb_set(bestof,Level,New). update_bestof(Level,New,_,_):- bb_let(bestof,Level,New). % ensure correct implementation of embedded calls to bestof/3 inc_level(Obj,X1):-val(Obj,Obj,X),!,X1 is X+1,bb_set(Obj,Obj,X1). inc_level(Obj,1):-bb_def(Obj,Obj,1). dec_level(Obj,X):-val(Obj,Obj,X),X>0,X1 is X-1,bb_set(Obj,Obj,X1). 37 ^L Note that precomputation of Test in bestof/3 before calling the workhorse bestof0/4 is much more efficient than using some form of apply meta-predicate inside bestof0/4. 8.11 Blackboard based abstract data types We will describe some simple utilisations of the blackboard to implement efficiently some basic abstract data types. They all use the saved/2 predicate instead of save_term/2. Saved/2 does basically the same work but also makes a call to the blackboard garbage collector if necessary. The reader can find the code in the file lib.pl of the BinProlog distribution. 8.11.1 Blackboard based failure surviving stacks A very useful data structure that can be implemented with the blackboard is a stack that survives failure but still allows the programmer to use some of the nice properties of logical variables. The main operations are push/3 that saves a term to the blackboard and pushes it to a named stack, pop/3 that removes the top element from a named stack and unifies it with its third argument and stack/3 that simply gives access to the list on the blackboard representing the stack. The only operation that uses copying is push/3, although if the term that is pushed to the stack has already some subterms on the blackboard, such subterms will not be copied again. The implementation is straightforward: push(Type,S,X):- default_val(Type,S,Xs,[]), saved([X_Xs],T), set(Type,S,T). pop(Type,S,X):- default_val(Type,S,V,[]), V=[X_Xs], set(Type,S,Xs). stack(Type,S,Xs):-val(Type,S,Xs). default_val(X,Y,V,_):-val(X,Y,V),!. default_val(X,Y,D,D):-def(X,Y,D). 8.11.2 Constant time vectors Defining a vector is done initializing it to a given Zero element. The vector_set/3 update operation uses saved/2, therefore the old content of vectors is also subject to garbage collection. 38 ^L vector_def(Name,Dim,Zero):- Max is Dim-1, saved(Zero,BBVal), for(I,0,Max), % generator for I from 0 to Max let(Name,I,BBVal), % def/3 or set/3 if needed fail. vector_def(_,_,_). vector_set(Name,I,Val):-saved(Val,BBVal),set(Name,I,BBVal). vector_val(Name,I,Val):-val(Name,I,Val). Building multi-dimensional arrays on these vectors is straightforward, by defining an index-to-address translation function. The special case of a high-performance 2-dimension (possibly sparse) global array can be handled conveniently by using def/3, set/3, val/3 and saved/2 as in: global_array_set(I,J,Val):-saved(Val,S),set(I,J,S). 8.12 Blackboard based problem solving 8.12.1 A complete knight tour The following is a blackboard based complete knight-tour, adapted from Evan Tick's well known benchmark program. % recommended use: ?-go(5). go(N):- time(_), init(N,M), % prepare the chess board knight(M,1,1),!, % finds the first complete tour time(T), write(time=T),nl,statistics,show(N). % shows the answer % fills the blackboard with free logical variables % representing empty cell on the chess board init(N,_):- for(I,1,N), % generates I from 1 to N nondeterministically for(J,1,N), % for/3 is the same as range/3 in the Art of Prolog bb_def(I,J,_NewVar), % puts a free slot in the hashing table fail. init(N,M):- M is N*N. % returns the number of cells % tries to make a complete knight tour knight(0,_,_) :- !. 39 ^L knight(K,A,B) :- K1 is K-1, val(A,B,K), % here we mark (A,B) as the K-th cell of the tour move(Dx,Dy), % we try a next move nondeterministically step(K1,A,B,Dx,Dy). % makes a step and then tries more step(K1,A,B,Dx,Dy):- C is A + Dx, D is B + Dy, knight(K1,C,D). % shows the final tour show(N):- for(I,1,N), nl, for(J,1,N), val(I,J,V), write(' '),X is 1-V // 10, tab(X),write(V), fail. show(_):-nl. % possible moves of the knight move( 2, 1). move( 2,-1). move(-2, 1). move(-2,-1). move( 1, 2). move(-1, 2). move( 1,-2). move(-1,-2). Constant time access in this kind of problems to cell(I,J) is essential for efficiency as it is the most frequent operation. While the blackboard based version takes 39s in BinProlog for a 5x5 squares chess board, an equivalent program representing the board with a list of lists takes 147s in BinProlog, 167s in emulated Sicstus 2.1 and 68 seconds in native Sicstus 2.1. Results are expected to improve somewhat with binary trees or functor-arg representation of the board but they will still remain worse than with the blackboard based sparse array, due to their relatively high log(N) or constant factor. Moreover, representing large size (possibly updatable!) arrays with other techniques is prohibitively expensive and can get very complicated due to arity limits or tree balancing as it can see for example in the Quintus library. 8.12.2 A lemma based TAK The following tak/4 program uses lemmas to avoid heap explosion in the case of of a particularly AND intensive program with 4 recursive calls, a problem particularly severe in the case of the continuation passing binarization that BinProlog uses to simplify the WAM. To encode the 2 first arguments in a unique integer some bit- shifting is needed as it can be seen in tak_encode/3. To avoid such problems, 40 ^L hashing on arbitrary terms like Quintus Prolog's term_hash/2 looks a very useful addition to BinProlog. tak(X,Y,Z,A) :- X =< Y, !, Z = A. tak(X,Y,Z,A) :- X1 is X - 1, Y1 is Y - 1, Z1 is Z - 1, ltak(X1,Y,Z,A1), ltak(Y1,Z,X,A2), ltak(Z1,X,Y,A3), ltak(A1,A2,A3,A). ltak(X,Y,Z,A):- tak_encode(X,Y,XY), tak_lemma(XY,Z,tak(X,Y,Z,A),A). tak_encode(Y,Z,Key):-Key is Y<<16 "/ Z. tak_decode(Key,Y,Z):-Y is Key>>16, Z is Key <<17>>17 . %optimized lemma --> O (instantiated executing G) tak_lemma(P,I,_,O):-val(P,I,X),!,X=O. tak_lemma(P,I,G,O):-G,!,def(P,I,O). go:- statistics(runtime,_), tak(24,16,8,X), statistics(runtime,[_,T]),statistics, write([time=T,tak=X]), nl. We hope that we showed the practicality of BinProlog's blackboard for basic work on data structures and problem solving. BinProlog's blackboard primitives make a clear separation between the copying and the naming intent overloaded in Prolog's assert and retract. Our blackboard primitives give most of the time simpler and more efficient so- lutions to current programming problems than assert and retract while being closer to a logical semantics and more cooperative to partial evaluation. 8.13 A Linda style interface to the blackboard The following predicates show how to do some Linda-style operations on top of the blackboard primitives. The current focus of the operations is managed by object/1 and message/1. Out/? puts a tuple Mes on the blackboard, rd/? reads it and in/? removes it. Eval/? executes the Goal part of the clause (Answer:-Goal) focussed by object/1 41 ^L and message/1. Then it puts the result Answer back to the blackboard. As Answer itself can be of the form (A:-G), a limited number of cascaded evals are possible. % out/1, rd/1, in/1 out(Mes):-object(Obj),message(Id),out(Obj,Id,Mes). rd(Mes):-object(Obj),message(Id),rd(Obj,Id,Mes). in(Mes):- object(Obj),message(Id),in(Obj,Id,Mes). % out/2, rd/2, in/2 out(Id,Mes):-object(Obj),out(Obj,Id,Mes). rd(Id,Mes):-object(Obj),rd(Obj,Id,Mes). in(Id,Mes):-object(Obj),in(Obj,Id,Mes). % out/3, rd/3, in/3 out(Obj,Id,_):-val(Obj,Id,_),!,fail. out(Obj,Id,Mes):-saved(Mes,Sent),let(Obj,Id,Sent). rd(Obj,Id,Mes):-val(Obj,Id,Mes). in(Obj,Id,Mes):-val(Obj,Id,Mes),rm(Obj,Id). % eval/0, eval/1, eval/2 eval:-object(Obj),message(Id),eval(Obj,Id). eval(Id):-object(O),eval(O,Id). eval(Obj,Id):-val(Obj,Id,(Answer:-Goal)),Goal,!, saved(Answer,NewAnswer), set(Obj,Id,NewAnswer). % tools object(New):-var(New),!,val('$object','$object',New). object(New):-atomic(New),let('$object','$object',New). message(New):-var(New),!,object(O),val(O,'$message',New). message(New):-atomic(New),object(O),let(O,'$message',New). 9 Continuations as first order objects 9.1 Continuation manipulation vs. intuitionistic/linear implication Using intuitionistic implication (actullay it should be -: but let's forget this for a moment) we can write in BinProlog: insert(X, Xs, Ys) :- paste(X) => ins(Xs, Ys). ins(Ys, [X_Ys]) :- paste(X). ins([Y_Ys], [Y_Zs]):- ins(Ys, Zs). 42 ^L used to nondeterministically insert an element in a list, the unit clause paste(X) is available only within the scope of the derivation for ins. This gives: ?- insert(a,[1,2,3],X). X=[a,1,2,3]; X=[1,a,2,3]; X=[1,2,a,3]; X=[1,2,3,a] With respect to the corresponding Prolog program we are working with a simpler formulation in which the element to be inserted does not have to percolate as dead weight throughout each step of the computation, only to be used in the very last step. We instead clearly isolate it in a global-value manner, within a unit clause which will only be consulted when needed, and which will disappear afterwards. Now, let us imagine we are given the ability to write part of a proof state context, i.e., to indicate in a rule's left-hand side not only the predicate which should match a goal atom to be replaced by the rule's body, but also which other goal atom(s) should surround the targeted one in order for the rule to be applicable. Given this, we could write, using BinProlog's @@ (which gives in its second argu- ment the current continuation) a program for insert/3 which strikingly resembles the intuitionistic implication based program given above: insert(X,Xs,Ys):-ins(Xs,Ys),paste(X). ins(Ys,[X_Ys]) @@ paste(X). ins([Y_Ys],[Y_Zs]):-ins(Ys,Zs). Note that the element to be inserted is not passed to the recursive clause of the predicate ins/2 (which becomes therefore simpler), while the unit clause of the predicate ins/2 will communicate directly with insert/3 which will directly `paste' the appropriate argument in the continuation. In this formulation, the element to be inserted is first given as right-hand side context of the simpler predicate ins/2, and this predicate's first clause consults the context paste(X) only when it is time to place it within the output list, i.e. when the fact ins(Ys,[X_Ys]),paste(X) is reached. Thus for this example, we can also obtain the expressive power of intuitionis- tic/linear implication by this kind of (much more efficient) direct manipulation of BinProlog's first order continuations. 10 Direct binary clause programming and full-blown continuations BinProlog 3.45 supports direct manipulation of binary clauses denoted 43 ^L Head ::- Body. They give full power to the knowledgeable programmer on the future of the compu- tation. Note that such a facility is not available in conventional WAM-based systems where continuations are not first-order objects. We can use them to write programs like: member_cont(X,Cont)::- strip_cont(Cont,X,NewCont,true(NewCont)). member_cont(X,Cont)::- strip_cont(Cont,_,NewCont,member_cont(X,NewCont)). test(X):-member_cont(X),a,b,c. A query like ?-test(X). will return X=a; X=b; X=c; X=whatever follows from the calling point of test(X). catch(Goal,Name,Cont)::- lval(catch_throw,Name,Cont,call(Goal,Cont)). throw(Name,_)::- lval(catch_throw,Name,Cont,nonvar(Cont,Cont)). where lval(K1,K2,Val) is a BinProlog primitive which unifies Val with a back- trackable global logical variable accessed by hashing on two (constant or variable) keys K1,K2. This allows for instance to avoid execution of the infinite loop from inside the predicate b/1. loop:-loop. c(X):-b(X),loop. b(hello):-throw(here). b(bye). go:-catch(c(X),here),write(X),nl. Notice that due to its simple translation semantics this program still has a first order reading and that BinProlog's lval/3 is not essential as it can be emulated by an extra argument passed to all predicates. Although implementation of catch and throw requires full-blown continuations, we can see that at user level, ordinary clause notation is enough. 44 ^L 11 Backtrackable destructive assignment 11.1 Updatable logical arrays in Prolog: fixing the semantics of setarg/3 Let us recall that setarg(I,Term,Value) installs Value as the I-th argument of Term and takes care to put back the old value found there on backtracking. Setarg/3 is probably the most widelly used (at least in SICStus, Aquarius, Eclipse, ProLog-by-BIM, BinProlog), incarnation of backtrackable mutable arrays (overloaded on Prolog's universal term type). Unfortunately setarg/3 lacks a logical semantics and is implemented differently in in various systems. This is may be the reason why the standardization (see its absence from the Prolog ISO Draft) of setarg/3 can hardly reach a consensus in the predictable future. Ideally, setarg/3 should work as if a new term (array) had been created identical to the old one, except for the given element. There's no reason to `destroy' a priori the content of the updated cell or to make it subject to ugly side effects. Should this have to happen for implementation reasons, a run-time error should be produced, at least, although this is not the case in any implementation we know of. Let us start with an inefficient but fairly clean array-update operation, setarg/4. setarg(I,OldTerm,NewValue,NewTerm):- functor(OldTerm,F,N), functor(NewTerm,F,N), arg(I,NewTerm,NewValue), copy_args_except_I(N,I,OldTerm,NewTerm). copy_args_except_I(0,_,_,_):-!. copy_args_except_I(I,I,Old,New):-!,I1 is I-1, copy_args_except_I(I1,I,Old,New). copy_args_except_I(N,I,Old,New):-N1 is N-1,arg(N,Old,X),arg(N,New,X), copy_args_except_I(N1,I,Old,New). We can suppose that functor and arg are specified by a (finite) set of facts describing their behavior on the signature of the program. For a given program, we can obviously see setarg/4 as being specified similarly by a finite set of facts. Furthermore,suppose that all uses of setarg/3 are replaced by calls to setarg/4 with the new states passed around with DCG-style chained variables. This looks like a good definition of the intended meaning of a program using setarg/3. We will show that actual implementations (Sicstus and BinProlog) can be made to behave accordingly to this semantics through a small, source level wrapping into a suitable ADT. Let '$box'/1 be a new functor not in the signature of any user program. By defining 45 ^L safe_arg(I,Term,Val):-arg(I,Term,'$box'(Val)). safe_setarg(I,Term,Val):-setarg(I,Term,'$box'(Val)). Using '$box'/1 in safe_arg/3 (safe_setarg/3) ensures that cell I of the func- tor Term will be indirectly accessed (updated) even if it contains a variable which in a WAM would be created on place and therefore it would be subject of unpredictable side-effects. The reason of the draconian warning in some Prolog manuals manual ...setarg is only safe if there is no further use of the old value of the replaced argument... . will therefore disappear and a purely logical setarg (with a translation semantics expressible in term of setarg/4) can be implemented. Not only this ensures refer- ential transparency and allows normal references to the old content of the updated cells but it also makes incompatible implementations of setarg (Sicstus, Eclipse, BinProlog) work exactly the same way6. To finish the job properly, something like the following ADT can be created. new_array(Size,Array):- functor(Array,'$array',Size). update_array(Array,I,Val):- safe_setarg(I,Array,Val). access_array(Array,I,Value):- safe_arg(I,Array,Value). We suggest to use this ADT in your program instead of basic setarg when per- formance is not an absoulte requirement. A new change_arg/3 builtin has been added to BinProlog to allow, efficient failure-driven iteration with persistent information. It works like setarg/3 except that side-effects are permanent. Sould unsafe heap objects be generated through the precess change_arg/3 signals a run-time error. This is not the case as far the result is either a constant (which is does not need new heap allocation) or the result of moving a preexistent heap object to a new location. For instance the (Haskell-style) fold/4 predicate (see library/high.pl) uses change_arg/3 to avoid painful iteration and slow side-effects on the dynamic database. The implementation is competitive is speed with hand-written explicitely recursive code and uses only memory proportional to the size of the answer. _________________________________________6 A further ambiguity in some implementations of setarg/3 comes from the fact that it is not clear if the location itself or its dereferenced contents should be mutated 46 ^L % fold,foldl based on safe failure driven destructive change_arg foldl(Closure,Null,List,Final):-fold(Closure,Null,X^member(X,List),Final). fold(Closure,Null,I^Generator,Final):- fold0(s(Null),I,Generator,Closure,Final). fold0(Acc,I,Generator,Closure,_):- term_append(Closure,args(SoFar,I,O),Selector), Generator, arg(1,Acc,SoFar), Selector, change_arg(1,Acc,O), fail. fold0(Acc,_,_,_,Final):- arg(1,Acc,Final). ?- foldl(+,0,[1,2,3],R). ?- fold(*,1,X^member(X,[1,2,3]),R). 12 `Invisible' grammars By using backtrackable setarg/3 and logical global variables (lval/3) we can imple- ment easily a superset of DCG grammars practically equivalent with Peter VanRoy's Extended DCGs. We call them Hidden Accumulator Grammars as no preprocessor is involved in their implementation. It turns out that the technique has the advan- tage of `meta-programming for free' (without the expensive phrase/3), allows source level debugging and can be made more space and time efficient than the usual pre- processing based implementation. On real examples, their best use is for writting a Prolog compiler (they can contribute to the writing of compact and efficient code with very little programming effort) and for for large natural language processing systems. Basically, they work as follows: % tools begin_dcg(Name,Xs):-lval(dcg,Name,Xs-Xs). end_dcg(Name,Xs):-lval(dcg,Name,Xs-[]). w(Word,Name):- lval(dcg,Name,State), State=_-[Word_Xs2], setarg(2,State,Xs2). begin_dcg(Xs):-begin_dcg(default,Xs). 47 ^L end_dcg(Xs):-end_dcg(default,Xs). w(Word):-w(Word,default). % grammar x:-ng,v. ng:-a,n. a:-w(the). a:-w(a). n:-w(cat). n:-w(dog). v:-w(walks). v:-w(sleeps). % test go:-begin_dcg(Xs),x,end_dcg(Ys),write(Ys),nl,fail. ?- go. [the,cat,walks] [the,cat,sleeps] [the,dog,walks] [the,dog,sleeps] [a,cat,walks] [a,cat,sleeps] [a,dog,walks] [a,dog,sleeps] The program can be found in progs/setarg_dcg.pl. For reasons of efficiency (i.e. to equal or beat preprocessor based DCGs in terms of both space and time) Bin- Prolog's `Hidden Accumulator Grammars' have been implemented in C and are accessible through the following set of builtins: dcg_connect/1 % works like 'C'/3 with 2 hidden arguments dcg_def/1 % sets the first hidden DCG argument dcg_val/1 % retrives the current state of the DCG stream dcg_tell/1 % focus on a given DCG stream (from 0 to 255) dcg_telling/1 % returns the number of the current DCGs stream % INVISIBLE DCG connect operation: normally macro-expanded '#'(Word):-dcg_connect(Word). % example: ?-dcg_phrase(1,(#a,#b,#c),X). dcg_phrase(DcgStream,Axiom,Phrase):- dcg_telling(X),dcg_tell(DcgStream), dcg_def(Phrase), Axiom, 48 ^L dcg_val([]), dcg_tell(X). Starting with BinProlog 3.33 dcg_tell/1 is backtrackable, mostly like lval/3. Admissible values for X in dcg_tell(X) are ranging from 1 to 255, which gives (I hope) enough distinct DCG streams for any application. Invisible grammars consume no heap, as they are based on backtrackable destruc- tive assigment implemented with a technique called value trailing like setarg/3. They consume trail only when a nondeterministic situation (choice-point) arrises. If you try the following program: % grammar ax:-ng,v. ng:-a,n. a:-dcg_connect(the). a:-dcg_connect(a). n:-dcg_connect(cat). n:-dcg_connect(dog). v:-dcg_connect(walks). v:-dcg_connect(sleeps). go:- st(H,T), dcg_def(Xs),ax,dcg_val([]), pp(Xs,H,T),nl, fail. st(H,T):-statistics(global_stack,[H,_]),statistics(trail,[T,_]). pp(O,H0,T0):- st(H1,T1),T is T1-T0,H is H1-H0, write([heap=H,trail=T]),write('==>'),write(O),nl,fail. pp(_,_,_). it will print out something like: [heap = 308,trail = 44]==>[the,cat,walks] [heap = 308,trail = 32]==>[the,cat,sleeps] [heap = 308,trail = 32]==>[the,dog,walks] [heap = 308,trail = 20]==>[the,dog,sleeps] [heap = 308,trail = 44]==>[a,cat,walks] [heap = 308,trail = 32]==>[a,cat,sleeps] [heap = 308,trail = 32]==>[a,dog,walks] [heap = 308,trail = 20]==>[a,dog,sleeps] 49 ^L 13 BinProlog's C-interface To be able to extend BinProlog and possibly embedd it as logic engine in your no run-time fee application you will need a BinProlog C-source code licence. See the files SOURCE.LICENCE and PRICING for more information. You can also interact with other languages under UNIX using the bidireactional pipe based interface starting from BinProlog's Tcl/Tk interfaced (see directory TCL). The following sequence of quick examples shows how it works. 13.1 A Demo Program Starting with version 3.39 the C-interface has been moved in directory c_inter. The discussion which follows basically explains the content of the files c.c c.h and c.pl in this directory. Once BinProlog is correctly installed as file "bp" somewhere in your path along with the libraries bp.o and wam.o which should be in directory ../src and you have a C-compiler around, you can simply do make in directory c_inter to create a standalone application which integrates the functionality of the C-code in file c.c. To test the resulting standalone executable c_binpro, try out the demo c_test defined in file c.pl. Start running it by typing c_binpro and then type c_test. at the Prolog prompt. To avoid the prompt and directly launch the application add main:-c_test." in file c.pl before typing make. 13.2 Calling C from BinProlog: adding new builtins New builtins are added in headers.pl and after a "make realclean; make" a new version of BinProlog containing them is generated automatically. Starting from headers.pl the system will first generate the files defs.h, prof.h, builtins.pl and then recompile itself. For this recompilation either a previous version of BinProlog7 or SICStus Prolog is used. An example of declaration in headers.pl is: b0(+/3,arith(1),in_body). % arity=3+1 by binarization Notice that arith(1) means that it is "like an arithmetic functions" which returns one value, i.e this should be used as in +(0,1,Result). I would suggest to start with the simplest form of interaction: a call of your own C-code from BinProlog. Try modifying in the file c.c (provided with the C-sources of BinProlog, in directory c_inter), the function new_builtin() which looks as follows: _________________________________________7 Use "make remake" if BinProlog is the only Prolog around. 50 ^L /* New builtins can be called from Prolog as: new_builtin(0,,) X(1) contains the integer `opcode' of your builtin X(2) contains your input arg regs[I] contains somthing that will be unified with what you return (the precise value of I depends on the register allocator). You are expected to `return' either - a non-null object that will be unified with , or - NULL to signal FAILURE As the returned object will be in a register this can be used for instance to add a garbage collector that moves every data area around... */ term new_builtin(H,regs,A,P,wam) register term H,regs,*A; register instr P; register stack wam; - BP_check_call(); switch(BP_op) - /* for beginners ... */ case 0: /* this just returns your input argument (default behavior) */ break; case 1: BP_result=BP_integer(13); /* this example returns 13 */ break; case 2: BP_result=BP_atom("hello"); /* this example returns 'hello' */ break; /* for experts ... */ case 3: /* iterative list construction */ - cell middle,last,F1,F2; int i; BP_make_float(F1, 77.0/2); BP_make_float(F2, 3.14); BP_begin_put_list(middle); 51 ^L BP_put_list(BP_integer(33)); BP_put_list(F1); BP_put_list(BP_string("hello")); BP_put_list(F2); BP_end_put_list(); BP_begin_put_list(last); for(i=0; i<5; i++) - BP_put_list(BP_integer(i)); " BP_end_put_list(); BP_begin_put_list(BP_result); BP_put_list(BP_string("first")); BP_put_list(middle); BP_put_list(last); BP_put_list(F1); BP_put_list(F2); BP_end_put_list(); " break; case 4: /* cons style list construction */ BP_begin_cons(); BP_result= BP_cons( BP_integer(1), BP_cons( BP_integer(2), BP_nil ) ); BP_end_cons(); break; case 5: /* for hackers only ... */ ; BP_result=(cell)H; H[0]=g.DOT; H[1]=X(2); H[2]=g.DOT; H[3]=BP_integer(99); H[4]=g.DOT; H[5]=(cell)(H+5); /* new var */ H[6]=g.DOT; H[7]=(cell)(H+5); /* same var as previously created */ 52 ^L H[8]=g.DOT; H[9]=BP_atom("that's it"); H[10]=g.NIL; H+=11; break; case 6: BP_fail(); break; case 7: - cell T=BP_input; if(BP_is_integer(T)) -fprintf(g.tellfile,"integer: %ld"n",BP_get_single_integer(T)); BP_result=BP_integer(-1); " else BP_fail(); " break; case 8: /* for experts: calling BinProlog from C */ - cell L,R,Goal; BP_begin_put_list(L); BP_put_list(BP_string("one")); BP_put_list(BP_integer(2)); BP_put_list(BP_string("three")); BP_put_list(BP_input); /* whatever comes as input */ BP_end_put_list(); BP_put_functor(Goal,"append",3); BP_put_old_var(L); BP_put_old_var(L); BP_put_new_var(R); BP_prolog_call(Goal); /* this will return NULL on failure !!!*/ BP_put_functor(Goal,"write",1); BP_put_old_var(R); BP_prolog_call(Goal); /* calls write/1 */ BP_put_functor(Goal,"nl",0); BP_prolog_call(Goal); /* calls nl/0 */ BP_result=R; /* returns the appended list to Prolog */ 53 ^L " break; case 10: /* for experts: calling BinProlog from C */ - cell L,R,Goal; BP_begin_put_list(L); BP_put_list(BP_string("one")); BP_put_list(BP_integer(2)); BP_put_list(BP_string("three")); BP_put_list(BP_input); /* whatever comes as input */ BP_end_put_list(); BP_put_functor(Goal,"cut_test",3); /* see c.pl */ BP_put_old_var(L); BP_put_old_var(L); BP_put_new_var(R); BP_prolog_call(Goal); /* this will return NULL on failure !!!*/ BP_put_functor(Goal,"write",1); BP_put_old_var(R); BP_prolog_call(Goal); /* calls write/1 */ BP_put_functor(Goal,"nl",0); BP_prolog_call(Goal); /* calls nl/0 */ BP_result=R; /* returns the appended list to Prolog */ " break; case 11: /* CALLING BinProlog on a NEW ENGINE from C*/ - stack Engine; cell Goal,Answer; cell Xs,X; BP_begin_put_list(Xs); BP_put_list(BP_string("new_engine_test")); BP_put_list(BP_input); /* whatever comes as input */ BP_put_list(BP_integer(100)); BP_put_list(BP_integer(200)); BP_put_list(BP_integer(300)); BP_end_put_list(); BP_put_functor(Goal,"member",2); 54 ^L BP_put_new_var(X); BP_put_old_var(Xs); Engine=BP_create_engine(wam,100,50,50); BP_load_engine(Engine,Goal,X); while((Answer=(cell)ask_engine(Engine))) - cell Goal1; BP_put_functor(Goal1,"write",1); BP_put_old_var(X); BP_prolog_call(Goal1); /* calls write/1 */ BP_put_functor(Goal1,"nl",0); BP_prolog_call(Goal1); /* calls nl/0 */ " BP_result=X; /* returns the now free variable */ BP_destroy_engine(Engine); " break; case 12: /* CALLING from C BinProlog on a NEW ENGINE. The friendliest way... */ - stack Engine; cell Goal,Answer; cell Xs,X; BP_sread("[0,s(0),s(s(0)),[a,b,c]]",Xs); BP_put_functor(Goal,"member",2); BP_put_new_var(X); BP_put_old_var(Xs); Engine=BP_create_engine(wam,100,50,50); BP_load_engine(Engine,Goal,X); while((Answer=(cell)ask_engine(Engine))) - printf("Answer = %s"n",BP_swrite(Answer)); " BP_result=X; /* returns the now free variable */ BP_destroy_engine(Engine); " break; 55 ^L /* EDIT AND ADD YOUR CODE HERE....*/ default: return LOCAL_ERR(X(1),"call to unknown user_defined C function"); " return H; " 13.3 Calling Prolog from C Normally this is done after a first call from Prolog to C (this gives a chance to the prolog system to get initialized). The most flexible technique is based on mutiple engines. Take a look at case 11 and case 12 in the previous section. The lower-level interface, (which follows) is still usable but less recommended. /* this can be used to call Prolog from C : see example if0 */ term bp_prolog_call(goal,regs,H,P,A,wam) register term goal,regs,H,*A; register instr P; register stack wam; - PREP_CALL(goal); return bp(regs,H,P,A,wam); " /* simple example of prolog call */ term if0(regs,H,P,A,wam) register term regs,H,*A; register instr P; register stack wam; - term bp(); cell goal=regs[1]; /* in this example the input GOAL is in regs[1] */ /* of course you can also build it directly in C */ /* unless you want specific action on failure, use BP_prolog_call(goal) here */ H=bp_prolog_call(goal,regs,H,P,A,wam); if(H) fprintf(stderr,"success: returning from New WAM"n"); else fprintf(stderr,"fail: returning from New WAM"n"); /* do not forget this !!! */ 56 ^L return H; /* return NULL to signal failure */ " BinProlog's main() should be the starting point of your program to be able to initialize all data areas. To call back from C you can follow the example if0. A sustained BinProlog-C dialog can be set up by using the 2 techniques described previously. An example of using the C-interface (composed of files c.h c.c c.pl) can be faound in directory c_inter. If you whish you can create a standalone C-executable by using BinProlog's compilation to C (see directories pl2c, dynpl2c) you can simply type `make' in directory c_inter. 14 Example programs The directory progs contains a few BinProlog benchmarks and applications. allperms.pl: permutation benchmarks with findall bestof.pl: an implementation of bestof/3 bfmeta.pl: breadth-first metainterpreter bp.pl: float intensive neural net learning by back-propagation cal.pl: calendar: computes the last 10000 fools-days fcal.pl: calendar: with floats chat.pl: CHAT parser choice.pl: Choice-intensive ECRC benchmark cnrev.pl: nrev with ^/2 as a constructor instead of ./2 cube.pl: E. Tick's benchmark program fibo.pl: naive Fibonacci ffibo.pl: naive Fibonacci with floats hello.pl: example program to create stand-alone Unix application knight.pl: knight tour to cover a chess-board (uses the bboard) lknight.pl: knight tour to cover a chess-board (uses the lists) ltak.pl: tak program with lemmas lfibo.pl: fibo program with lemmas lq8.pl : 8 queens using global logical variables maplist.pl: fast findall based maplist predicate nrev.pl: naive reverse nrev30.pl: small nrev benchmark to reconsult for the meta-interpreter or.pl: or-parallel simulator for binary programs (VT100) other_bm*: benchmark suite to compare Sicstus, Quintus and BinProlog puzzle.pl: king-prince-queen puzzle q8.pl: fast N-queens qrev.pl: quick nrev using builtin det_append/3 subset.pl: findall+subset tetris.pl: tetris player (VT100) 57 ^L 15 Related work Some BinProlog related papers can be found at clement.info.umoncton.ca in the file papers.tar.Z. The reader interested in the internals of BinProlog and other issues related to binary logic programs, their transformations and performance evaluation is referred to [16 , 9, 11 , 4 , 5 , 12 , 10 , 8 , 7 , 14 , 13 , 1 , 20 , 6 , 17 , 15 , 19 , 3 , 2 ] References [1] K. De Bosschere and P. Tarau. Blackboard-based logic programming. In Pro- ceedings of the 1993 ILPS Conference, Vancouver, Canada, 1993. poster. [2] K. De Bosschere and P. Tarau. Blackboard Communication in Logic Program- ming. In Proceedings of the PARCO'93 Conference, Grenoble, France, Sept. 1993. [3] K. De Bosschere and P. Tarau. High Performance Continuation Passing Style Prolog-to-C Mapping. In E. Deaton, D. Oppenheim, J. Urban, and H. Berghel, editors, Proceedings of the 1994 ACM Symposium on Applied Computing, pages 383-387, Phoenix/AZ, Mar. 1994. ACM Press. [4] B. Demoen. On the Transformation of a Prolog program to a more efficient Binary program. Technical Report 130, K.U.Leuven, Dec. 1990. [5] B. Demoen and A. Mari"en. Implementation of Prolog as binary definite Pro- grams. In A. Voronkov, editor, Logic Programming, RCLP Proceedings, number 592 in Lecture Notes in Artificial Intelligence, pages 165-176, Berlin, Heidel- berg, 1992. Springer-Verlag. [6] T. Lindgren. Compiling logic programs using a binary continuation style, Dec. 1992. draft, Uppsala University. [7] U. Neumerkel. Specialization of Prolog Programs with Partially Static Goals and Binarization. Phd thesis, Technische Universit"at Wien, 1992. [8] U. Neumerkel. A transformation based on the equality between terms. In Logic Program Synthesis and Transformation, LOPSTR 1993. Springer-Verlag, 1993. [9] P. Tarau. A Simplified Abstract Machine for the execution of Binary Metapro- grams. In Proceedings of the Logic Programming Conference'91, pages 119-128. ICOT, Tokyo, 7 1991. [10] P. Tarau. Ecological Memory Managment in a Continuation Passing Prolog En- gine. In Y. Bekkers and J. Cohen, editors, Memory Management International Workshop IWMM 92 Proceedings, number 637 in Lecture Notes in Computer Science, pages 344-356. Springer, Sept. 1992. 58 ^L [11] P. Tarau. Program Transformations and WAM-support for the Compilation of Definite Metaprograms. In A. Voronkov, editor, Logic Programming, RCLP Proceedings, number 592 in Lecture Notes in Artificial Intelligence, pages 462- 473, Berlin, Heidelberg, 1992. Springer-Verlag. [12] P. Tarau. Wam-optimizations in BinProlog: towards a realistic continuation passing prolog engine. Technical Report 92-3, Dept. d'Informatique, Universite de Moncton, July 1992. available by ftp from clement.info.umoncton.ca. [13] P. Tarau. An efficient specialization of the wam for continuation passing binary programs. In Proceedings of the 1993 ILPS Conference, Vancouver, Canada, 1993. poster. [14] P. Tarau. Language issues and programming techniques in BinProlog. In D. Sacca, editor, Proceeding of the GULP'93 Conference, Gizzeria Lido, Italy, June 1993. [15] P. Tarau. Low level issues in implementing a high-performance continuation passing binary prolog engine. In M.-M. Corsini, editor, Proceedings of JFPL'94, June 1994. [16] P. Tarau and M. Boyer. Elementary Logic Programs. In P. Deransart and J. Maluszynski, editors, Proceedings of Programming Language Implementation and Logic Programming, number 456 in Lecture Notes in Computer Science, pages 159-173. Springer, Aug. 1990. [17] P. Tarau and B. Demoen. Language embedding by dual compilation and state mirroring. In Proceedings of 6-th Workshop on Logic Programming Environ- ments, Santa Margherita Ligure, 1994, June 1994. [18] P. Tarau, B. Demoen, and K. De Bosschere. The power of partial translation: an experiment with the c-ification of binary prolog. In Proceedings of the 1995 ACM Symposium on Applied Computing, Nashville/TN, Feb. 1995. ACM Press. [19] P. Tarau and U. Neumerkel. A Novel Term Compression Scheme and Data Representation in the BinWAM. In Proceedings of Programming Language Implementation and Logic Programming, Lecture Notes in Computer Science. Springer, Sept. 1994. [20] D. H. D. Warren. An Abstract Prolog Instruction Set. Technical Note 309, SRI International, Oct. 1983. 16 Appendix Here is the list of currently visible public predicates exported by module Prolog. 59 ^L !/0 (#)/1 (#)/3 * /3 (+)/2 (+)/3 (++)/3 (,)/2 (-)/2 (-)/3 (-:)/2 (->)/2 (.)/2 (.)/3 / /3 // /3 (/")/3 (:)/2 (:=:)/2 (;)/2 (<)/2 << /3 (=)/2 (=..)/2 (=:=)/2 (=<)/2 (==)/2 (=>)/2 (="=)/2 (>)/2 (>=)/2 >> /3 (@<)/2 (@=<)/2 (@>)/2 (@>=)/2 C/3 (")/2 (")/3 ("+)/1 ("/)/3 ("=)/2 ("==)/2 ^ /2 abolish/2 abort/0 acos/2 add_cont/3 add_instr/4 60 ^L add_true/2 all/3 all_but_at_least/4 append/3 appendN/2 append_conj/3 append_disj/3 apropos/1 apropos/2 arg/3 argn/3 arith_dif/2 arith_eq/2 asin/2 ask_engine/2 asm/0 asm/1 assert/1 asserta/1 assertz/1 assumed/1 assumei/1 assumel/1 atan/2 atom/1 atomic/1 bagof/3 bb/0 bb/1 bb_change_arg/3 bb_def/2 bb_def/3 bb_element/2 bb_get/4 bb_let/2 bb_let/3 bb_list/1 bb_list0/3 bb_op/3 bb_put/2 bb_reset/0 bb_rm/1 bb_rm/2 bb_set/2 bb_set/3 bb_val/2 bb_val/3 boot/0 bu0/3 61 ^L bu1/1 bu_ctr/2 call/1 change_arg/3 char_in_cmd/2 clause/2 cmake/0 cmake/1 cmake/2 cnl/0 co/0 compare/3 compare0/3 compile/1 compound/1 consult/1 copy_term/2 copy_term/3 cos/2 create_engine/4 ctime/1 current_module/1 current_op/3 current_predicate/1 current_predicate/2 cwrite/1 dcg_connect/1 dcg_def/1 dcg_phrase/2 dcg_phrase/3 dcg_tell/1 dcg_telling/1 dcg_val/1 debug/1 def/3 destroy_engine/1 det_append/3 det_append0/3 dir/0 display/1 do_body/1 drop_at_least/2 (dynamic)/1 ed/0 edit/0 edit/2 emacs/0 erase/1 errmes/2 62 ^L exists_file/1 exp/2 expand_term/2 expr/2 fail/0 false/0 fast_write/1 file_extension_list/1 file_library/2 file_search_path/1 find_at_most/4 find_file/2 find_while/4 findall/3 findall/4 findall_conj/3 findall_conj/4 findall_disj/3 findall_disj/4 findall_load_heap/1 findall_store_heap/1 findall_workhorse/5 float/1 float/2 float_fun/3 float_fun2/4 flush/0 for/3 free_variables/4 functor/3 gc_call/1 gc_read/1 gc_read_clause/1 gensym/2 get/1 get0/1 get_code/1 greater/2 greater_eq/2 ground/1 halt/0 halt/1 has_fuel/1 help/1 if/3 if0/3 include/1 init_gensym/1 input_float/4 63 ^L instance/2 integer/1 integer/2 interactive/1 (is)/2 is_assumed/1 is_builtin/1 is_compiled/1 is_dynamic/1 is_module/1 is_prolog/1 is_public/1 iso_close_stream/2 iso_eof/1 iso_get_byte/2 iso_lseek/4 iso_open_stream/3 iso_peek_byte/2 iso_put_byte/2 iso_read_term/3 iso_write_term/3 ith_clause/4 kcmake/0 keysort/2 kmake/0 length/2 less/2 less_eq/2 let/3 lift_heap/2 list2term/2 list_asm/3 listing/0 listing/1 listing/2 log/2 log/3 ls/0 lval/3 lwrite/1 main/1 make/0 make/1 make/2 make/4 make/5 make0/4 make_appl/1 make_cmd/2 64 ^L make_executable_unix_appl/3 make_file_name/4 member/2 member_i/4 meta_interpreter/1 metacall/1 mod/3 (module)/1 (module)/2 module_call/2 module_name/3 module_predicate/3 modules/1 my_edit/1 name/2 new_builtin/3 nl/0 nonvar/1 (nospy)/1 (not)/1 notepad/0 nth_answer/2 nth_member/3 number/1 numbervars/3 older_file/2 op/3 op0/3 or/2 otherwise/0 patch_it/4 phrase/2 phrase/3 pico/0 portable_display/1 portray/1 portray_clause/1 pow/3 pp_clause/1 pp_term/1 predicate_property/2 print/1 profile/0 (public)/1 put/1 put_code/1 quiet/1 quietmes/1 random/1 65 ^L read/1 read_clause/1 read_term/2 read_tokens/2 read_with_singletons/3 reconsult/1 repeat/0 restart/0 retract/1 retractall/1 rm/2 saved/2 see/1 see_at/1 see_tell/2 see_tell_at/2 seeing/1 seeing_at/1 seeing_telling/2 seeing_telling_at/2 seen/0 seen_told/1 self_info/1 set/3 set_c_threshold/1 set_c_trace/1 setarg/3 setof/3 setref/2 shell/1 show_code0/2 sin/2 skip_until/2 skip_when/2 sort/2 (spy)/1 spy_goal/1 spying/1 sqrt/2 sread/2 load_engine/3 stat0/3 stat_dict/2 statistics/0 statistics/2 string_op/3 strip_cont/3 strip_cont0/2 swrite/2 66 ^L symcat/3 system/1 tab/1 take_at_most/2 tan/2 tell/1 tell_at/1 telling/1 telling_at/1 term2list/4 term_append/3 term_chars/2 termcat/3 textedit/0 told/0 top_read_term/2 toplevel/0 tr_body/2 trace/1 true/0 ttyin/1 ttynl/0 ttyout/1 ttyprin/1 ttyprint/1 ttyput/1 ttywrite/1 ttywriteln/1 unix/1 unix_access/2 unix_argc/1 unix_argv/2 unix_cd/1 unix_getenv/2 unix_kill/2 user_error/2 val/3 var/1 vars_of/2 vi/0 warn_singletons/3 while/2 write/1 write_float/1 writeq/1 BinProlog's default operator definitions (see file oper.pl) are the following: :-op(1000,xfy,','). :-op(1100,xfy,(';')). 67 ^L :-op(1200,xfx,('-->')). :-op(1200,xfx,(':-')). :-op(1200,fx,(':-')). :-op(700,xfx,'is'). :-op(700,xfx,'='). :-op(500,yfx,'-'). :-op(500,fx,'-'). :-op(500,yfx,'+'). :-op(500,fx,'+'). :-op(400,yfx,'/'). :-op(400,yfx,'*'). :-op(650,xfy,'.'). :-op(700,xfx,'>='). :-op(700,xfx,'>'). :-op(700,xfx,'=<'). :-op(700,xfx,(<)). :-op(700,xfx,(="=)). :-op(700,xfx,(=:=)). :-op(300,fy,(")). :-op(200,xfy,(^)). :-op(300,xfx,(mod)). :-op(400,yfx,(>>)). :-op(400,yfx,(<<)). :-op(400,yfx,(//)). :-op(500,yfx,(#)). :-op(500,fx,(#)). :-op(500,yfx,("/)). :-op(500,yfx,(/")). :-op(700,xfx,(@>=)). :-op(700,xfx,(@=<)). :-op(700,xfx,(@>)). :-op(700,xfx,(@<)). :-op(700,xfx,("==)). :-op(700,xfx,(==)). :-op(700,xfx,(=..)). :-op(700,xfx,("=)). :-op(900,fy,(not)). :-op(900,fy,("+)). :-op(900,fx,(spy)). :-op(900,fx,(nospy)). :-op(1050,xfy,(->)). 68 ^L :-op(1050,xfx,(@@)). :-op(1150,fx,(dynamic)). :-op(1150,fx,(public)). :-op(1150,fx,(module)). :-op(1200,xfx,(::-)). :-op(900,yfx,(:)). :-op(600,xfx,(:=:)). :-op(950,xfy,(-:)). :-op(950,xfy,(=>)). :-op(600,xfx,(<=)). :-op(700,xfx,(=:)). :-op(700,xfx,(:=)). 69 BinProlog3.45/TCL/ 40755 764 764 0 5764563226 12642 5ustar javierjavierBinProlog3.45/TCL/myprogs120777 764 764 0 6664733563 16142 2../myprogsustar javierjavierBinProlog3.45/TCL/server.pl100644 764 764 3261 5763710105 14571 0ustar javierjavier% BinProlog server for tcl/tk :-['../src/wam']. :-op(200,fx,('$')). main:-prolog_server. prolog_server:- init_server, repeat, in(X,Vs), react(X,Vs), !. init_server:- interactive(no), cwrite('# Prolog process ready'),nl,tcl_prompt. qtest:- repeat, cwrite('% '),flush, read_term(T,Vs), react(T,Vs), !. react(end_of_file,_):-!. react(call_prolog(X),_):-!,X,!,fail. react(query_prolog(X),Vs):-query_prolog(X,Vs),fail. query_prolog(X,Vs):-X,nl,member(A,Vs),write(A),nl,fail. query_prolog(_,_):-tcl_prompt. tcl_prompt :- call_tcl(puts('-nonewline "% "')). call_tcl(Line):- cwrite('call_tcl '),out(Line). out([X|Xs]):-!,out_list([X|Xs]). out(T):-out_term(T). out_list(L):-member(T,L),out_term(T),fail. out_list(_). out_term(T):-pl2tcl(T),!. out_term(T):-errmes(unable_to_write,T). in(T):-in(T,_). in(T,Vs):-read_term(L,Vs),!,in1(L,T). in1([X|Xs],T):-!,member(T,[X|Xs]). in1(T,T). pl2tcl(T):-pl2tcl(T,L),writelist(L),nl. pl2tcl(X,L):-pl2tcl(X,L,[]). pl2tcl(X)-->{var(X)},!,{errmes(unexpected_in(tcl),var(X))}. pl2tcl(X)-->{atomic(X)},!,[X]. pl2tcl('$'(X))-->!,{ val(X,V);V='$'(X)},!,[V]. pl2tcl([X|Xs])-->!,['{'],pl2tcl(X),tcl_cmd(Xs),['}']. pl2tcl({Xs})-->!,['{'],pl2tcl(Xs),['}']. pl2tcl((X,Xs))-->!,pl2tcl(X),pl2tcl(Xs). pl2tcl(T)-->{T=..[F|Xs]},begin_script(F,Xs,Ys),tcl_cmd(Ys),end_script(F). begin_script(script,Xs,Xs)-->!,['[']. begin_script(F,Xs,[F|Xs])-->['{']. end_script(script)-->!,[']']. end_script(_)-->['}']. tcl_cmd([X|Xs])-->!,pl2tcl(X),tcl_cmd(Xs). tcl_cmd([])-->[]. writelist(L):- member(X,L), cwrite1(X),cwrite(' '), fail. writelist(_). cwrite1('$'(X)):-!,cwrite('$'),cwrite(X). cwrite1(X):-float(X),!,write(X). cwrite1(X):-cwrite(X). BinProlog3.45/TCL/server.tcl100644 764 764 4646 5725341751 14755 0ustar javierjavier#!/usr/local/bin/wish -f # Tcl/Tk side of the BinProlog-Tcl/Tk interface # tested with tcl7.4b2 and tk4.0b2 under Soalris 2.3 on a Sparc 10-20 # uses the new fileevent (addinput-inspired) Tk feature # USAGE: under the wish tcl/tk shell do: # # % start_prolog # % q {PrologQuery} # % p {QuietPrologGoal} # % halt_prolog # global f # tests what Tcl would send to Prolog proc start_test {} { global f set f stdout } proc halt_slave {f} { set fpid [pid $f] catch {removeinput $f} catch {close $f} catch {exec sh -c "kill -9 $fpid"} puts "Removed input on $f from process $fpid" } # terminates the Prolog process proc halt_prolog {} { global f halt_slave $f } # connects to a process proc start_slave {process} { global f set f [open "|$process" r+] # -- use this for older versions patched with addinput # addinput $f "bpInOut %% %E %F" fileevent $f readable "bpInOut" return $f } # connects to a new Prolog process proc start_prolog {} { return [start_slave "bp -q3 server.bp"] } # writes "Something." to Prolog proc write_prolog {s} { global f puts $f $s. flush $f } # sends to prolog a goal to be quietly evaluated proc call_prolog {l} { write_prolog "call_prolog(($l))" } # sends to prolog a query with variables to be answered proc query_prolog {l} { write_prolog "query_prolog(($l))" } # shorthand for call_prolog proc p {l} { call_prolog $l } # shorthand for query_prolog proc q {l} { query_prolog $l } # true if there's a tcl call coming from Prolog proc prolog_is_calling_tcl {l} { return [expr 0 == [string first "call_tcl " [string trimleft $l]]] } # evaluates a call to tcl from Prolog proc call_tcl {l} { return [eval $l] } # detects if an input line contains a tcl call # (i.e. when it starts with "call_tcl ") # if yes then it executes the line # otherwise it prints it out proc eval_line {l} { if {[prolog_is_calling_tcl $l]} { call_tcl $l } else { puts $l } } # spies (in background) on input coming from Prolog # and passes it to eval_line # the prolog process should flush the output when doing "nl/0" #proc bpInOut {token events fileid} { # if {"$events" != "READ"} { # error "Unexpected events: $events" # } elseif {[gets $fileid line] < 0} { # halt_prolog # } else { # eval_line $line # } #} proc bpInOut {} { global f # puts "entering bpInOut" if {[gets $f line] < 0} { halt_prolog } else { eval_line $line } } BinProlog3.45/TCL/queens.pl100644 764 764 2623 5517360431 14564 0ustar javierjavier% Prolog part based on clever N-Queens program by T. Fruhwrith queens(N,Qs):- gen_list(N,Qs), place_queens(N,Qs,_,_). gen_list(0,[]). gen_list(N,[_|L]):- N>0, M is N-1, gen_list(M,L). place_queens(0,_,_,_). place_queens(I,Cs,Us,[_|Ds]):- I>0, J is I-1, place_queens(J,Cs,[_|Us],Ds), place_queen(I,Cs,Us,Ds). place_queen(I,[I|_],[I|_],[I|_]). place_queen(I,[_|Cs],[_|Us],[_|Ds]):- place_queen(I,Cs,Us,Ds). % Tcl/Tk interactive visualisation qs(N):- queens(N,L), call_tcl(display_queens(L)), % sends a display request write('type

when finished

otherwise'),nl, in(call_prolog(done)), % waits for `done' or `more' !. /**************************************************************** This program illustrates two simple-minded but useful features: 1. Prolog lists are sent to Tcl as Tcl-lists 2. Prolog simply pumps solutions one by one using their most natural representation through "call_tcl(display_queens(L))". Synchronization is done as follows: - in/1 blocks the prolog process until Tcl confirms it want another one Messages have special `headers' like "call_tcl" and "call_prolog" to avoid spurious intraction due to errors on any side. Note that you can also control the program from Tcl's command line by typing in "p more" or "p done" messages *******************************************************************/ BinProlog3.45/TCL/queens.tcl100644 764 764 4124 5712504735 14735 0ustar javierjavierglobal n w scale count proc make_board {{w .p1} name} { global scale n set s [expr $n * 40] catch {destroy $w} toplevel $w wm title $w $name wm iconname $w $name message $w.msg \ -font -Adobe-times-medium-r-normal--*-180* -aspect 300 \ -text $name frame $w.frame \ -width 400 -height 400 \ -borderwidth 2 -relief sunken \ -bg Bisque3 button $w.start \ -text START \ -command "p qs($n); set count 0" button $w.more \ -text MORE \ -command {p more; $w.more configure -text MORE($count)} button $w.ok \ -text OK \ -command "p done; destroy $w; q nl" pack $w.msg \ -side top pack $w.frame \ -side top \ -padx 5 \ -pady 5 pack $w.ok -side bottom -fill x pack $w.more -side bottom -fill x pack $w.start -side bottom -fill x for {set i 0} {$i < $n} {set i [expr $i+1]} { for {set j 0} {$j < $n} {set j [expr $j+1]} { set ypos($i) [expr $i*$scale] set xpos($j) [expr $j*$scale] button $w.frame.q($i,$j) \ -relief sunken \ -command "flip_queen $w $i $j" place $w.frame.q($i,$j) \ -rely $ypos($i) -relx $xpos($j) \ -relwidth $scale -relheight $scale } } } proc show_queen {w i j} { $w.frame.q($i,$j) configure -relief raised -text Q } proc hide_queen {w i j} { $w.frame.q($i,$j) configure -relief sunken -text "" } proc hide_queens {} { global n w for {set i 0} {$i < $n} {set i [expr $i+1]} { for {set j 0} {$j < $n} {set j [expr $j+1]} { hide_queen $w $i $j } } } proc eq {s t} { return [expr 0 == [string compare $s $t]] } proc flip_queen {w i j} { set s [lindex [$w.frame.q($i,$j) config -text] 4] if {[eq $s "Q"]} { hide_queen $w $i $j } else { show_queen $w $i $j } } proc display_queens {qs} { global w count incr count hide_queens set l 0 foreach q $qs { incr l show_queen $w [expr $l -1] [expr $q -1] } } proc go {queens} { global w n scale count set n $queens set w .b set count 0 set scale [expr 1.0/$n] make_board $w $n-Queens } source server.tcl start_prolog p {compile(queens)} go 9 BinProlog3.45/TCL/ReleaseNotes100644 764 764 3625 5764434322 15253 0ustar javierjavierA BinProlog server for the Tcl/Tk visual programming environment is available from ftp://clement.info.umoncton.ca/BinProlog/UNCOMPRESSED/TCL together with the new BinProlog 3.45. The interface has been ported to tk4.0b2 + tcl7.4b2. It consists of a _very_ few pages of Prolog and Tcl code. Thanks to the strong metaprogramming capabilities of both languages the interface `compiles' their objects to evaluable representations on the other side. It is portable between present (and future :-) ) Tcl/Tk implementations and requires no C-programming. The BinProlog server is connected to it's master Tcl application through a bidirectional pipe and it is able to generate and react to Tcl/Tk events via the new `fileevent' Tcl/Tk command. For Tcl/Tk programmers it adds a high-performance logic programming engine which can be seamlessly integrated in their applications. BinProlog (a fast C-emulated compiler) executes list processing and other symbolic operations at more than an order of magnitude faster than Tcl scripts (see nrev.tcl vs. nrev.pl). For Prolog programmers it gives access to megabytes of free Tcl/Tk programs and program generators for graphic user interfaces, network communication, distributed programming facilities, high-level X programming, regular expression search, etc. A few demo programs (as a Prolog-driven N-Queens with interactive Tcl/Tk visualisation) give an idea of what can be done with the composit environment. The BinProlog-TCL/Tk interface has been tested for: Sparcs with SunOs 4.x and Solaris 2.x However it may work also on other systems for which BinProlog 3.45 executables are included. For help on the Tcl/Tk installation and programming please take a look at the FAQs on comp.lang.tcl. Comments and BinProlog questions should be addressed to binprolog@info.umoncton.ca. --------------------------------------------------------------------- Paul Tarau tarau@info.umoncton.ca BinProlog3.45/TCL/nrev.tcl100644 764 764 1451 5504707253 14406 0ustar javierjavierproc car {l} { return [lindex $l 0] } proc cdr {l} { return [lrange $l 1 end] } proc empty {l} { return [expr 0 == [string compare {} $l]] } proc cons {l r} { return [concat [list $l] $r] } proc app {l r} { if {[empty $l]} { return $r } else { return [cons [car $l] [app [cdr $l] $r]] } } proc nrev {l} { if {[empty $l]} { return $l } else { return [app [nrev [cdr $l]] [cons [car $l] {}]] } } proc ints {min max} { if {$min > $max} { return {} } else { return [cons $min [ints [expr $min + 1] $max]] } } proc go {n} { set ms 1000000.0 set l [ints 1 $n] set r [time [list nrev $l]] set t [car $r] set infs [expr ($n + 1.0) * ($n + 2.0) / 2.0] set lips [expr ($infs * $ms) / $t ] return "length=$n, time=[expr $t / $ms], lips=$lips" } BinProlog3.45/TCL/progs120777 764 764 0 6664733563 15226 2../progsustar javierjavierBinProlog3.45/TCL/README100644 764 764 5016 5721401735 13606 0ustar javierjavier!!! Recently (Sat Jan 28 14:23:52 AST 1995) ported to tk4.0b2 tcl7.4b2. !!! Tested for queens.tcl can.tcl scale.tcl !!! -- geomtery XxY should be changed to -width X -height Y !!! in old applications. ---------------------- QUICKSTART---------------------------------- Start by making sure BinProlog (i.e. bp) is working on your machine. Type make in this directory. This will create the file server.bp needed by all the applications. Start wish (the Tcl/Tk shell) and do something like: source queens.tcl to see the first demo. ------------------------------------------------------------------ The BinProlog-Tcl/Tk interface is very simple. Let's use

for the name of the composite program. You will have to replace

in each of the following examples with the name of one of your programs. Suppose you will create 2 files

.tcl and

.pl. You can start the composite `program' as follows: $ wish % source

.tcl

.tcl is expected to have at its end something like: start_prolog p {compile(

)} You will get the usual Tcl command prompt to interact with either Tcl or Prolog. A command entered at the Tcl prompt normally `goes to' Tcl except for the following: ----------------------------------------------------------------------- Prolog commands on the Tcl/Tk side: start_prolog -connects to a new Prolog process halt_prolog -terminates the Prolog process: p -sends a goal to Prolog for quiet evaluation q -sends a query to Prolog and gets back answers ----------------------------------------------------------------------- After having been activated by one of the previous (p or q) Tcl commands a Prolog goal may `call back' to continue the dialog with Tcl/Tk using the following: ---------------------------------------------------------------------- Tcl commands on the Prolog side: call_tcl/1 -sends to Tcl a command to be immediately evaluated in `background' (while the Tcl prompt waits for your Tcl or Prolog commands ----------------------------------------------------------------------- Output with puts (Tcl) or write/1 (Prolog) goes as usual to the Tcl shell. ----------------------------------------------------------------------- If you want to modify server.pl (after proper installation of BinProlog and Tcl/Tk) type: make to create a new instance of server.bp. Make sure that the directory myprogs is a valid symbolic link to the BinProlog *.pl sources. BinProlog3.45/TCL/dir.tcl100644 764 764 3121 5712506304 14201 0ustar javierjavier# # This script generates a directory browser, which lists the working # directory and allows you to open files or subdirectories by # double-clicking. # Create a scrollbar on the right side of the main window and a listbox # on the left side. # The procedure below is invoked to open an editor on a given file; if # the file is a regular file then the emacs editor is invoked to display # the file. global action editor set action edit set editor textedit proc compile {file} { p "compile('$file')" } proc edit {file} { global env editor if [file isfile $file] { if [info exists env(EDITOR)] { set editor $env(EDITOR) exec $editor $file & } } else { puts stdout "\"$file\" isn't a directory or regular file" } } proc init {} { # make the box scrollbar .scroll -command ".list yview" pack .scroll -side right -fill y listbox .list -yscroll ".scroll set" -relief raised -width 20 -height 20 \ -setgrid yes pack .list -side left -fill both -expand yes wm minsize . 1 1 # Set up bindings for the browser. bind .list {destroy .} bind .list {destroy .} focus .list bind .list {foreach i [selection get] { $action $i } } } # Fill the listbox with a list of all the files in the directory proc refresh {} { .list delete 0 end foreach i [exec ls -a] { if [file isfile $i] { .list insert end $i } } } # change the action dynamically proc e {} { global action set action edit } proc c {} { global action set action compile } source server.tcl start_prolog init refresh BinProlog3.45/TCL/makefile100644 764 764 730 5626545301 14406 0ustar javierjavierPROG=server $(PROG).bp: $(PROG).pl echo "make($(PROG)). " | bp save bak: rm -f tar.gz *.uue rm -f -r bak mkdir bak cp -p * bak rm -f bak/ru bak/*.bp bak/*.ps bak/*.gz bak/*.Z bak*.uue Z tar.Z: bak tar cvf tar bak compress tar gz tar.gz: bak tar cvf tar bak gzip tar uue: tar.gz uuencode tar.gz tar.gz > tar.gz.uue restore: rm -f -r bak gunzip tar.gz tar xvf tar rm -f tar diff bak . realclean clean: rm -f $(PROG).bp tar.gz tar.Z *.uue .IGNORE: BinProlog3.45/TCL/scale.pl100644 764 764 735 5725325210 14332 0ustar javierjavier:-[brev]. mesure_heap:- random_int(Lucky), repeat, random(X), random_int(Max),mesure_heap(Max), Max=Lucky,!. mesure_heap(Max):- mesure_heap(Max,Heap), call_tcl('.sc.frame.scale'(set,Heap)). mesure_heap(Max,Heap):- make_integers(Is,1,Max), statistics(global_stack,[H1,_]), nrev(Is,_), statistics(global_stack,[H2,_]), H is H2-H1, Heap is H//1000. random_int(R):-random(X), R is X mod 220. make_integers(Is,1,Max):-findall(I,for(I,1,Max),Is). BinProlog3.45/TCL/scale.tcl100644 764 764 2707 5712505250 14522 0ustar javierjavier# mkVScale w # # Create a top-level window that displays a vertical scale. # proc mkVScale {{w .scale1}} { catch {destroy $w} toplevel $w wm title $w "BinProlog-Tcl/Tk -DEMO-" wm iconname $w "NrevScale" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 400 \ -text { Heap consumption of BinProlog for nrev/2. Send the length of the list, BinProlog will adjust the scale to the size of the consumed heap in KBytes. Click on DEMO for a random interaction. Click on OK to finish. } frame $w.frame -borderwidth 10 button $w.send -text SEND -command { set l [.sc.frame.scale get] p "mesure_heap($l)" } button $w.demo -text DEMO -command { p "mesure_heap" } button $w.ok -text OK -command "destroy $w" pack $w.msg $w.frame $w.send $w.demo $w.ok scale $w.frame.scale -orient vertical -length 350 -from 0 -to 220 \ -command "setHeight $w.frame.right.inner" -tickinterval 50 \ -bg Bisque1 frame $w.frame.right -borderwidth 15 pack $w.frame.scale -side left -anchor ne pack $w.frame.right -side left -anchor nw $w.frame.scale set 30 frame $w.frame.right.inner -width 40 -height 20 -relief raised \ -borderwidth 2 -bg SteelBlue1 pack $w.frame.right.inner -expand yes -anchor nw } proc setHeight {w height} { $w config -width 40 -height $height } proc make_scale {} { mkVScale .sc } make_scale source server.tcl start_prolog p {compile(scale)} BinProlog3.45/TCL/split.tcl100644 764 764 3010 5517461754 14567 0ustar javierjavier# This program can be used to split a unique TCL+Prolog+TeX + whatever # file in multiple files with parts in the same language merged # don't expect too much from it, as it is my first tcl program... # # An example file looks like this: # >>>.pl # .... # >>>.tcl # .... # >>>.pl # .... # A reverse join operation is also supported. global mark set mark ">>>." # detects a hint >>> NewFile proc is_new_file {l} { global mark set is_new [expr 0 == [string first $mark [ string trim $l]]] return $is_new } # extracts "NewFile" from ">>>NewFile" proc file_ext {l} { global mark set name [string range [string trim $l] [string length $mark] end] return [string trim $name] } # splits a source file in various different programs proc split_file {fname} { global mark set f [open $fname r] catch {eval exec rm [glob $fname.*]} gets $f l if {0 == [is_new_file $l]} { return "Expected $mark FILE_EXTENSION, found $l" } set ext [file_ext $l] set g [open "$fname.$ext" a+] while {[gets $f l] >= 0} { if {0 != [is_new_file $l]} { close $g set ext [file_ext $l] set g [open "$fname.$ext" a+] } else { puts $g $l } } close $g close $f } # joins . into with annotations for each part proc join_file {fname} { set l [glob $fname.*] catch {exec rm $fname} exec touch $fname foreach i $l { set r [string range $i [expr [string length $fname] + 1] end] set j ">>>$r\n" exec cat << $j >> $fname exec cat $i >> $fname } } BinProlog3.45/TCL/can.pl100644 764 764 150 5522277740 14004 0ustar javierjavier% This is a simple BinProlog interface of some `drag' activity % on Tcl/Tk canvases. list_them:- bb. BinProlog3.45/TCL/can.tcl100644 764 764 14246 5660770725 14232 0ustar javierjavier# Simplified version of a Tcl/Tk DEMO - patched by Paul Tarau 1992 # All copyrigtht on this file goes to the original holders # Possible new errors are mine... # mkItems w # # Create a top-level window containing a canvas that displays the # various item types and allows them to be selected and moved. This # demo can be used to test out the point-hit and rectangle-hit code # for items. # # Arguments: # w - Name to use for new top-level window. proc mkItems {{w .citems}} { catch {destroy $w} toplevel $w dpos $w wm title $w "BinProlog-Tcl/Tk Canvas Demonstration" wm iconname $w "Items" wm minsize $w 100 100 set c $w.frame2.c message $w.msg -font -Adobe-Times-Medium-R-Normal--*-180-* -width 13c \ -bd 2 -relief raised -text "This window contains a canvas widget with examples of the various kinds of items supported by canvases. The following operations are supported:\n Button-1 drag:\tmoves item under pointer.\n Button-2 drag:\trepositions view.\n Button-3 drag:\tstrokes out area.\n Ctrl+f:\t\tprints items under area." frame $w.frame2 -relief raised -bd 2 button $w.ok -text "OK" -command "destroy $w" pack $w.msg -side top -fill x pack $w.frame2 -side top -fill both -expand yes pack $w.ok -side bottom -pady 5 -anchor center canvas $c -scrollregion {0c 0c 20c 14c} -width 15c -height 10c \ -xscroll "$w.frame2.hscroll set" -yscroll "$w.frame2.vscroll set" scrollbar $w.frame2.vscroll -relief sunken -command "$c yview" scrollbar $w.frame2.hscroll -orient horiz -relief sunken -command "$c xview" pack $w.frame2.hscroll -side bottom -fill x pack $w.frame2.vscroll -side right -fill y pack $c -in $w.frame2 -expand yes -fill both set font1 -Adobe-Helvetica-Medium-R-Normal--*-120-* set font2 -Adobe-Helvetica-Bold-R-Normal--*-240-* if {[tk colormodel $c] == "color"} { set blue DeepSkyBlue3 set red red set bisque bisque3 set green SeaGreen3 } else { set blue black set red black set bisque black set green black } # Set up demos within each of the areas of the grid. $c create oval 1c 2c 3c 6c -outline $red -width 2m -tags item $c create text 6c 6c -anchor n -font $font1 -width 4c \ -text "A short string of text, word-wrapped, justified left, and anchored north (at the top)." -tags item $c create text 10c 7c -anchor w -font $font1 -fill $blue \ -text "Several lines,\n each centered\nindividually,\nand all anchored\nat the left edge." \ -justify center -tags item button $c.button -text "Press Me" -command "butPress $c $red" $c create window 6c 2c -window $c.button -anchor nw -tags item entry $c.entry -width 50 -relief sunken $c.entry insert end "Edit this text If you want to" $c create window 1c 1c -window $c.entry -anchor nw -tags item # Set up event bindings for canvas: $c bind item "itemEnter $c" $c bind item "itemLeave $c" bind $c <2> "$c scan mark %x %y" bind $c "$c scan dragto %x %y" bind $c <3> "itemMark $c %x %y" bind $c "itemStroke $c %x %y" bind $c "itemsUnderArea $c" bind $c <1> "itemStartDrag $c %x %y" bind $c "itemDrag $c %x %y" bind $w "focus $c" } # Utility procedures for highlighting the item under the pointer: proc itemEnter {c} { global restoreCmd if {[tk colormodel $c] != "color"} { set restoreCmd {} return } set type [$c type current] if {$type == "window"} { set restoreCmd {} return } if {$type == "bitmap"} { set bg [lindex [$c itemconf current -background] 4] set restoreCmd [list $c itemconfig current -background $bg] $c itemconfig current -background SteelBlue2 return } set fill [lindex [$c itemconfig current -fill] 4] if {(($type == "rectangle") || ($type == "oval") || ($type == "arc")) && ($fill == "")} { set outline [lindex [$c itemconfig current -outline] 4] set restoreCmd "$c itemconfig current -outline $outline" $c itemconfig current -outline SteelBlue2 } else { set restoreCmd "$c itemconfig current -fill $fill" $c itemconfig current -fill SteelBlue2 } } proc itemLeave {c} { global restoreCmd eval $restoreCmd } # Utility procedures for stroking out a rectangle and printing what's # underneath the rectangle's area. proc itemMark {c x y} { global areaX1 areaY1 set areaX1 [$c canvasx $x] set areaY1 [$c canvasy $y] $c delete area } proc itemStroke {c x y} { global areaX1 areaY1 areaX2 areaY2 set x [$c canvasx $x] set y [$c canvasy $y] if {($areaX1 != $x) && ($areaY1 != $y)} { $c delete area $c addtag area withtag [$c create rect $areaX1 $areaY1 $x $y \ -outline black] set areaX2 $x set areaY2 $y } } proc itemsUnderArea {c} { global areaX1 areaY1 areaX2 areaY2 set area [$c find withtag area] set items "" foreach i [$c find enclosed $areaX1 $areaY1 $areaX2 $areaY2] { if {[lsearch [$c gettags $i] item] != -1} { lappend items $i } } puts stdout "Items enclosed by area: $items" set items "" foreach i [$c find overlapping $areaX1 $areaY1 $areaX2 $areaY2] { if {[lsearch [$c gettags $i] item] != -1} { lappend items $i } } puts stdout "Items overlapping area: $items" } set areaX1 0 set areaY1 0 set areaX2 0 set areaY2 0 # Utility procedures to support dragging of items. proc itemStartDrag {c x y} { global lastX lastY puts "c = $c" set lastX [$c canvasx $x] set lastY [$c canvasy $y] } proc itemDrag {c x y} { global lastX lastY set x [$c canvasx $x] set y [$c canvasy $y] $c move current [expr $x-$lastX] [expr $y-$lastY] set lastX $x set lastY $y set this [$c find closest $x $y] inform_prolog $this lastX $x inform_prolog $this lastY $y } # Procedure that's invoked when the button embedded in the canvas # is invoked. proc butPress {w color} { set i [$w create text 5c 5c -text "Hello!!" -fill $color -anchor n] after 500 "$w delete $i" p bb } # Position a dialog box at a reasonable place on the screen. proc dpos w { wm geometry $w +300+300 } proc inform_prolog {a b c} { p "bb_let('$a','$b',$c)" } mkItems .cw source server.tcl start_prolog BinProlog3.45/TCL/ping.tcl100644 764 764 2663 5712506104 14370 0ustar javierjavier# mkVScale w # # Create a top-level window that displays a vertical scale. # proc mkVScale {{w .scale1}} { catch {destroy $w} toplevel $w wm title $w "BinProlog-Tcl/Tk -DEMO-" wm iconname $w "NrevScale" message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 400 \ -text { Heap consumption of BinProlog for nrev/2. Send the length of the list, BinProlog will adjust the scale to the size of the consumed heap in KBytes. Click on DEMO for a random interaction. Click on OK to finish. } frame $w.frame -borderwidth 10 button $w.send -text SEND -command { set l [.sc.frame.scale get] p "go($l)" } button $w.demo -text DEMO -command { p "go" } button $w.ok -text OK -command "destroy $w" pack $w.msg $w.frame $w.send $w.demo $w.ok scale $w.frame.scale -orient vertical -length 350 -from 0 -to 220 \ -command "setHeight $w.frame.right.inner" -tickinterval 50 \ -bg Bisque1 frame $w.frame.right -borderwidth 15 pack $w.frame.scale -side left -anchor ne pack $w.frame.right -side left -anchor nw $w.frame.scale set 0 frame $w.frame.right.inner -width 40 -height 20 -relief raised \ -borderwidth 2 -bg SteelBlue1 pack $w.frame.right.inner -expand yes -anchor nw } proc setHeight {w height} { $w config -width 40 -height $height } proc make_scale {} { mkVScale .sc } make_scale source server.tcl start_prolog p {compile(ping)} BinProlog3.45/TCL/ping.pl100644 764 764 642 5544346775 14217 0ustar javierjaviergo:-go(100). go(K):- N is K*10, ctime(T1), ping(N), ctime(T2), T is T2-T1, Time10 is T//10, message(Time10), call_tcl(puts(result(ping(N),time(T)))). message(I):-call_tcl('.sc.frame.scale'(set,I)). ping(Max):- range(I,0,Max), message(I), fail. ping(_). range(Min,Min,Max):-Min=0} { set n [expr $n-1] } return $n } BinProlog3.45/TCL/tcl.tex120777 764 764 0 6664733563 16451 2../doc/tcl.texustar javierjavierBinProlog3.45/TCL/db.pl100644 764 764 73 5641312060 13577 0ustar javierjaviermale('John'). male('Burt'). male('David'). female('Mary'). BinProlog3.45/wam2c120777 764 764 0 6664733563 13756 2pl2custar javierjavierBinProlog3.45/CHANGES100644 764 764 16246 5716530467 13337 0ustar javierjavierfrom 1.23->1.39 - added sort, keysort, bagof, setof (see extra.pl) - added basic debugger (see extra.pl) - added push_cc pop_cc (get and set the current continuation) - def, set, val now support arbitrary terms that go to a new data area (called the blackboard) - operationally the blackboard is "older" than everything on the heap but val gets the original terms - however, set does not free the space, so the old value is available possibly as part of the new value (to implment stacks for example) - it can be used both for backtrackable and destructive assignment - the blackboard is a garbage collected area - you can also change its size with the command line switch -b - assert & retract are supported, but you have to call dynamic predicates form compiled ones with metacall/1 - see the file extra.pl and USERGUIDE for other improvements -------------------------------------------------------------- from 1.39->1.43: - improved bestof/3, alternative findall/3 (called find_all/3) added - added apply/2, call/N (N=2,3,4,5). - fixed bug in display/1, e/1, make_appl/1 - added make_appl/3, for standalone executables - improved portability: now sicstus, quintus, sbprolog or swiprolog and its own previous versions can be used to bootstrap BinProlog -------------------------------------------------------------- from 1.43->1.71: - speed improvements (about 10%) - space consumption reduced by moving some builtins inline - added sread/2, swrite/2 to read and write from a `name' to a term - added det_append/3: fast deterministic append/3 written in C (nrev+det_append gives 1.4 Megalips on Sparc 10-20) - moved Linda-style primitives to in/3, out/3, rd/3 to C-builtins for speed - added Solaris 2.1 version (400KLIPS) - added include directive to load multiple files (:-[include_file]). - added support for european languages in identifiers (thanks to Ulrich Neumerkel) -------------------------------------------------------------- from 1.71->MultiBinProlog 2.00 (thanks to Koen De Bosschere) - parallel Linda-style operations with multiple blackboards using shared memory and/or RPC have beed added - read & write have been replaced with experimental C-versions - see more about this prototype implementation in the MultiBinProlog directory -------------------------------------------------------------- from 1.71->2.10 - all data areas are now user configurable: usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD] [-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp] - fast floating point (double) added with log, exp, sin, cos etc. - term compression (a generalized form of CDR-coding applied to all functors) highly reduces heap-consumption - findall & copy_term are about 50% faster (thanks to Ulrich Neumerkel's iterative implementation of a general copying primitive) - PC-version now runs under WINDOWS 3.1 (thanks to DJGCC's go32 1.10) - added WAM-level profiler (on Sparc) showing time spent in each various instructions - interactive top-level and trace (use ?-interactive(no), if you don't want it) - separated global logical variables (lval/3 i.e A#B=>X with some sugar) from destructive operations bb_def/3, bb_set/3, bb_val/3 bb_rm/3 which are now safe (for a price) - garbage collection of the blackboard is now safe with bb_*... - ^C trapping to get back to top-level - fixed bug in restart/0 that gave segm. fault (some files where left open) - new architectures and OS added: -Sparc, SuperSparc - SunOS 4.x, Solaris 2.x; -DEC - Alpha 64 bit version -680xx NeXT - Mach; SUN3 - SunOS 4.x -MIPS - SGI, DEC; -IBM R6000; -386-486 (MsDOS+Windows - with 32bits DOS-extender go32 1.10). -------------------------------------------------------------- from 2.10->2.20 - added flush/0 builtin to flush the output buffer (also implicit in nl/0) - fixed bug in tab/1 which had not evaluated its argument - fixed bug in running under emacs on SGI's - fixed bug with embedded reconsults (thanks to Guy Lapalme for pointing out these deficiencies) - fixed bug with tell/1 at toplevel which did not work - fixed bug with some stack oveflows which unnecessarily terminated the program - ADDED Tcl/Tk interface and toplevel for BinProlog 2.20 server ----------------------------------------------------------------- from 2.20->2.53 - metacall now optional for dynamic code - added call/N for easier metaprogramming as in call(+(10),1,X) ===> X=11 - some builtins like =.. (now in C) are faster - added term_append/2. try: ?-term_append(f(a,b),args(c,d,e),X). - DCGs (and phrase) are faster and support correctly push_back lists - append now much faster (when deterministic) - added setarg/3 which allows backtrackable updates i.e. try T=f(a,b), setarg(2,T,c), write(T),nl. - compatibilty with Koen De Bosschere's fast (C-written) standard Prolog parser (to be released soon) - ability to `compile' to a C by converting wam.bp wam.c and linking it (see make lib + make in wam2c) - use of blackboard builtins is safer (with more severe validations) - new directory structure TOP---src <= Prolog and C sources with makefile |----library <= Parts of the system loaded on demand |----progs <= Examples of working programs |--- myprogs <= WORK HERE |----pl2c <= CREATE A C-standalone - added some esoteric continuation manipulation builtins like strip_cont/3 and the @@ notation allowing some `continuation surgery' so you can take a look and see what goal comes next with as in a @@ NextGoal :- write(NextGoal),Body. Fixed some bugs, and (I hope) not introduced new ones :-) ----------------------------------------------------------------- from 2.53 to 3.00 ADDED: - C-ification (ability to compile to C and generate standalone executables) - logical and permanent global variables, - intutionistic and linear implication (assumed code) - metacall/1 not mandatory anymore - default quietness is -q1 (get more verbose messages with -q0) - more flexible dynamic and assumed code declaration - temporary and permanent overriding of compiled code by assumed and asserted code - space efficient setarg/3 - circular term unification based on value trailing of functors - extended DCGs (now built in the engine as `invisible grammars') based on setarg + backtrackable global variables - support for *.pro projects and `make-like' incremental compilation of *.pl files in a project - optional C-interface (comes with source licensing) ----------------------------------------------------------------- from 3.00 to 3.30 - source-level modules - faster compilation to C and faster resulting C-code - ability to fine-tune optimisation for speed or size of the resulting C-code (directory pl2c) - very small (dynamically linked) standalone executables (5K) for Solaris 2.x - improved (fileevent based) Tcl/Tk interface now running under tcl7.4b2 and tk4.0b2 (directory TCL) - help/1 detecting near-matching predicate definitions - examples of graph problems and constraint solving with linear implication (progs/lgraph.pl, progs/lmap.pl progs/lconstr.pl) - new builtin change_arg/3 supporting efficient failure driven loops and higher-order Haskell-style operators (library/high.pl and library/matrix.pl) - C-interface included (SUPPORT comes with source licensing) BinProlog3.45/COPYRIGHT100644 764 764 4544 5764434207 13613 0ustar javierjavierBinProlog 3.45, Copyright (C) Paul Tarau 1992-94 Multi-BinProlog 3.45 Copyright (C) Koen De Bosschere 1993-95 (C) Paul Tarau, 1993-95 ISO Prolog parser (C) Koen De Bosschere 1995 The programming environment has benefited from public domain code by R.A. O'Keefe. Ulrich Neumerkel wrote the iterative copy_term algorithm used in BinProlog. Research results made public by by D.H.D. Warren, Bart Demoen, Andre Marien, Mats Carlsson among others, and theoretical work by researchers in the field of logic programming, semantics of the programming languages and partial evaluation have contributed to the design of the BinProlog engine. The 386-486 version is created with the GNU gcc compiler and contains the go32 DOS-extender, by D.J. Delorie. The Sparc-SunOS 4.x and sun3 and Next versions are created with the bundled C compilers. The Solaris version is created by the gcc compiler. Grants from the Canadian NSERC and the FESR of the Universite de Moncton have supported in part the basic research that made this implementation possible. Development was done in part at Universite de Moncton and while visiting Simon Fraser University, K.U. Leuven, IRISA Rennes, Universite de Montreal. PERMISSION TO USE AND MODIFY THIS SOFTWARE IS GRANTED FREE OF CHARGES FOR RESEARCH AN OTHER NON-PROFIT PURPOSES, PROVIDED THIS COPYRIGHT NOTICE IS ADDED TO THE RESULTING VERSION. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. LICENSING FOR COMMERCIAL PURPOSES TO INDIVIDUALS AND ORGANISATIONS, LICENSING OF THE SOURCE CODE OF THE ENGINE, PORTS TO OTHER ARCHITECTURES AND EXTENDED VERSIONS OF THE PROGRAMMING ENVIRONMENT ARE AVAILABLE, BUT NEED A SEPARATE AGREEMENT. PLEASE CONTACT: Paul Tarau, PhD Associate professor Dept. of Computer Science University of Moncton Moncton N.B. Canada E1A-3E9 E-MAIL: tarau@info.umoncton.ca BinProlog3.45/Makefile100644 764 764 2455 6664733640 13762 0ustar javierjavierBINDIR = /usr/local/bin BPEXE = bp BPO = bp.o # ARCH_AND_OS=sparc.sunos # ARCH_AND_OS=sparc.solaris # ARCH_AND_OS=alpha.dec # ARCH_AND_OS=68k.sun3 # ARCH_AND_OS=68k.next # ARCH_AND_OS=r6000.ibm # ARCH_AND_OS=mips.dec ARCH_AND_OS=pc.linux # ARCH_AND_OS=parisc.hp ## ARCH_AND_OS=mips.sgi BP=$(BPEXE).$(ARCH_AND_OS) BPLIB=$(BPO).$(ARCH_AND_OS) help: @echo Use Makefile.old for 68k.sun3 and 68k.next @echo On a 386-486-Pentium pc: TYPE: make 386 @echo "Edit Makefile and comment out your architecture/operating" @echo "system, i.e. one of the following:" @echo "------------------------------------------------------" @grep "# ARCH_AND_OS" Makefile @echo "------------------------------------------------------" @echo When finished, TYPE: make install install: echo INSTALLING binary FOR: $(ARCH_AND_OS) as $(BINDIR)/bp cp bin/$(BP) bp chmod ugo+x bp bin/$(BP) @echo TYPE bp TO run BinProlog! rm -f src/ru src/bp.o (cd src; ln -s ../bin/$(BP) ru) (cd src; ln -s ../bin/$(BPLIB) $(BPO)) mv bp $(BINDIR) 386 486 pentium: @echo COPY from the directory 386 the files @echo go32 ru.386 and wam.bp and EDIT bp.bat to your 386-486-PC, @echo then put bp.bat in a directory on your PATH. @echo Please put the driver ANSI.SYS in CONFIG.SYS if you want @echo to run programs that use VT100 style screen control BinProlog3.45/PRICING100644 764 764 1502 5764434007 13323 0ustar javierjavierPRICING: Sat Feb 4 09:48:52 AST 1995 1. Binary Licensing: Use of BinProlog 3.45 binaries as found in the distribution is FREE for universities, research institutes and other non-profit organizations. For other organizations or individuals, under the shareware concept, use of BinProlog 3.45 requires payment of a 50$US/user or 500$US/site one-time fee. Please read the file BINARY.LICENSING for details. 2. Source Licensing: Full C-sources of the software are available under a 900 $US commercial (C) or 300 $US academic site-license (A). This also includes a site license for binaries created from them. Individual licenses for non-profit purposes are available for the price of the academic license. Please read the file SOURCE.LICENSING for details. Best regards, Paul Tarau tarau@info.umoncton.ca OR taraup@umoncton.ca BinProlog3.45/README.first100644 764 764 10552 5716531565 14344 0ustar javierjavierPERMISSION TO USE AND MODIFY THIS SOFTWARE IS GRANTED FREE OF CHARGES FOR RESEARCH AN OTHER NON-PROFIT PURPOSES, PROVIDED THIS COPYRIGHT NOTICE IS ADDED TO THE RESULTING VERSION. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. LICENSING FOR COMMERCIAL PURPOSES TO INDIVIDUALS AND ORGANISATIONS, LICENSING OF THE SOURCE CODE OF THE ENGINE, PORTS TO OTHER ARCHITECTURES AND EXTENDED VERSIONS OF THE PROGRAMMING ENVIRONMENT ARE AVAILABLE, BUT NEED A SEPARATE AGREEMENT. FOR LICENSING INFORMATION PLEASE READ THE FILES SOURCE.LICENSING OR BINARY.LICENSING AND CONTACT Paul Tarau Dept. of Computer Science Universite de Moncton Moncton N.B. Canada E1A-3E9 E-MAIL: tarau@info.umoncton.ca ---------------------------------------------------------------------- !!! ORIGINAL DISTRIBUTION: ftp clement.info.umoncton.ca (139.103.16.2) in /pub/BinProlog. (clement.info.umoncton.ca is a Sparcstation ELC with SUNOS 4.1.1). Please send comments and bug reports to binprolog@info.umoncton.ca. BinProlog Copyright (C) Paul Tarau 1992-95 All rights reserved ---------------------------- INSTALLATION -------------------------- EITHER: Edit `Makefile'. Change BINDIR and comment out ARCH_AND_OS, for example: BINDIR = /usr/local/bin ARCH_AND_OS = sparc.sunos then TYPE: make install OR: Copy or symbolically link bin/bp.. to `bp' somewhere in your path, than type `bp'. Normally the appropriate `bp' (a C-ified self contained executable) or (for some old architectures) typing `ru wam.bp' (possibly a small `bp' shell-script) are all you need to have BinProlog running. For DOS/Windows 386/486 PCs you will have to type something like `go32 ru.386 wam.bp' (or a small bp.bat) file. ---------------------------------------------------------------------- MACHINES SUPPORTED This distribution contains the Prolog source of the compiler and executable emulators for: - Sparc - SunOS 4.x, Solaris 2.x; - DEC Alpha - 64 bit - 680xx NeXT - Mach; SUN3 - SunOS 4.x - MIPS - DEC; - 386-486 (MsDOS+Windows - with 32bits DOS-extender go32 ver. 1.10). - pc-linux As the implementation makes no assumption about machine word size it is likely to compile even on very strange machines that have a C-compiler. Moreover, BinProlog's integers are inherited from the native C-system. For example on DEC ALPHA machines BinProlog has 64-3=61 bit integers. On 32-bit systems it has 32-2=30 bit integers. Floating point is double (64 bits) and it is guaranteed that computations in Prolog will always give the same results as in the underlying C. As a matter of fact BinProlog does not really know that it has floats but how this happens is rather long to explain here. --------------------------------------------------------------------- Mode is interactive by default (for compatibility with other Prologs) but if you use a modern, windows based environment you may want to switch it off with: ?- interactive(no). and turn it on again with ?- interactive(yes). --------------------------- EDITOR -------------------------------- To edit a file and then compile it use: ?- edit(,). To debug your code, R.O. Keefe's meta-interpreter with a basic tracing mechanism is included. Using interactive(no) and greping and searching through the output file is probably the best way to debug at this time. To use it do: ?-reconsult(File). and then ?-trace(Goal). -------------------------- INCLUDED PROGRAMS --------------------------- The directory "progs" contains a few BinProlog benchmarks and applications. --------------------------- DOCUMENTATION ------------------------------ Although BinProlog does contain a relatively slim documentation (see the directory `doc') its Prolog is fairly standard. Availability of source code for builtins and the compiler gives to the Prolog programmer the possibility to configure and to adapt it easily. BinProlog3.45/ReleaseNotes100644 764 764 14574 5764440101 14646 0ustar javierjavierBinProlog 3.45 is now available by ftp from clement.info.umoncton.ca (139.103.16.2) or on WWW as ftp://clement.info.umoncton.ca/BinProlog. The full distribution is in the file: BinProlog3.45.tar.gz 32 bit DOS and Windows 3.1 executables are available in file bp345.zip BinProlog is a fairly complete and efficient Prolog compiler featuring both C-emulated execution and generation of standalone applications by translation to C. It is developed by Paul Tarau and based on his compact and efficient BinWAM abstract machine, a specialization of the WAM for the execution of continuation passing binary logic programs. New features in version 3.45 - robust 32 bit extended DOS and Windows 3.1 all-in-one-file executables generated with Watcom C/C++ 10.0 compiler - multiple engines callable either from Prolog or C -- each engine has configurable heap-stack-trail sizes and delivers its answers on demand -- engines are reusable for execution of multiple goals -- resource overflows of an engine do not affect its caller -- alternative answers of an engine (i.e. produced by distinct OR-branches) are available to the caller on the same AND-branch -- engines share static code and the dynamic database - improved C-interface (see directory c_inter) -- the C-interface and BinProlog's C-translator are integrated to generate a standalone executable -- multiple Prolog engines can be used directly from C (see file c_inter/c.c) - Hidden Accumulator Grammars (a form of Extended DCGs based on backtrackable destructive assignment, requiring no preprocessing) - assert-like linear and intuitionistic assumptions (assumel/1 and assumei/1) scoped over the current continuation (easier to use than implications) - high level `Answer<=Producer=>Consumer' primitive allowing answers from Producer (running on its own engine) to be seen as linear assumptions by Consumer (see library/engines.pl). - some new library files engines.pl - utilities to play with multiple Prolog engines format.pl - formatted output tree.pl - tree printing media.pl - basic multi-media + mail handling from Prolog objects.pl - dynamic objects bin2iso.pl - some ISO predicates monad.pl - list operations, monadic style - some new demo programs mud.pl - a toy mud-like simulation, with plain English (with `no grammar' operator-precedence parsing), based on linear and intuitionistic assumptions lmoney.pl - SEND+MORE=MONEY puzzle with linear implication lgraph.pl - graph walking with linear implication color.pl - fast graph-coloring program Some other features: - dynamic code, intuitionistic and linear implication, - compilation to C, with compact and portable generated C-code - ability to fine-tune optimization for speed or size of the resulting C-code (directory pl2c) - very small (dynamically linked) standalone executables (6K) for Solaris 2.x (directory dyn2pl) - improved (fileevent based) Tcl/Tk interface now running under tcl7.4b2 and tk4.0b2 (directory TCL) - help/1 detecting near-matching predicate definitions - examples of graph problems and constraint solving with linear implication (progs/lgraph.pl, progs/lmap.pl progs/lconstr.pl) - new builtin change_arg/3 supporting efficient failure driven loops and higher-order Haskell-style operators (library/high.pl and library/matrix.pl) - logical and permanent global variables, - backtrackable destructive assignment, - circular term unification, - continuation manipulation primitives, - a garbage-collected hashing based global dictionary for constant-time sparse arrays and graphs, - efficient higher-order programming builtins, - C-compatible (double) floating point operations, - source-level modules This distribution contains the Prolog source of the compiler and executables for: - Sparc - Solaris 2.x, SunOS 4.x; - DEC Alpha - 64 bit version; - DEC MIPS; - 68k - NeXT, SUN3; - IBM RS6000 ; - HP PA-RISC (two variants) - 386 or better PC - Linux - 386 or better PC - 32 bit Windows and 32 bit DOS (Watcom C/C++ based) - 386 or better PC - go32 DOS-extender ver. 1.10 based Multi-BinProlog 3.45 is a multi-threaded Linda-style parallel extension to BinProlog for Solaris 2.4 developed by Koen De Bosschere. Koen's ISO C-parser and C-writer with full C-sources are also available for considerably faster I/O and stream-support. Some research papers explaining the implementations, example programs, benchmarks and a User's Guide can be found at the same site. BinProlog 3.45 minimal configuration: Uncompressed versions of BinProlog 3.45 are also available on clement.info.umoncton.ca (139.103.16.2) in directory BinProlog/UNCOMPRESSED. If you do not want the full distribution you can get only the binary for your particular architecture/operating system from the directory: BinProlog/UNCOMPRESSED/bin i.e. one of the following: bp.68k.next.gz bp.r6000.ibm.gz bp.parisc.hp.gz bp.sparc.solaris.gz bp.parisc.hp1.gz bp.mips.dec.gz bp.68k.sun3.gz bp.alpha.dec.gz bp.o.68k.sun3.gz bp.sparc.sunos.gz bp.pc.linux.gz bp345.zip (32 bit Windows+DOS) and BinProlog/UNCOMPRESSED/doc/art.ps (UserGuide). After getting the files and uncompressing with "gunzip" type something like bp.alpha.dec to run BinProlog 3.45. For DOS/Windows 3.1 executables only, uncompress (with pkunzip) the file: bp345.zip Use of BinProlog executables and user-generated standalone applications is FREE for research and other non-profit purposes. BinProlog SUPPORT, use of the software for industrial applications, licensing of full C-sources with ability to use the full BinProlog system as an embedded logic engine, need a separate agreement (see files BINARY.LICENSING and SOURCE.LICENSING in the distribution). Please send comments, bug reports and requests for industrial licensing information to: binprolog@info.umoncton.ca. Paul Tarau ---------------------------------------------------------------------- Paul Tarau, PhD. Associate professor Dept. of Computer Science University of Moncton Moncton N.B., CANADA E1A-3E9 e-mail: tarau@info.umoncton.ca BinProlog3.45/SOURCE.LICENSING100644 764 764 11730 5736540304 14563 0ustar javierjavier BinProlog 3.34 SOFTWARE AGREEMENT (C-sources) Between Paul Tarau, 17 Kingsmere Court, #8,Moncton N.B., CANADA E1A-6C2 (hereinafter referred to as "the Licensor") and (organisation) ______________________________ (address) ______________________________ ______________________________ ______________________________ (hereinafter referred to as "the User"). 1. Definitions As used in this Agreement: "Software" shall mean the C-sources of the emulator of BinProlog, version 3.34, on floppy disk or by electronic mail. 2. Right to use the Software 2.1 The Licensor hereby grants to the User a non-transferable, non-exclusive right to use the Software for any purpose including porting it to a new machine or integrating it in an application for profit. 2.2 The User may not grant any right to the Software to any third party or give away his or her copy of the Software or forward the e-mail message containig the software. 3. Fee The User shall upon delivery of the Software pay a one time fee of the amount specified in the file PRICING section 2 in the current distribution. (C) For commercial organizations or individuals willing to add value and resell a product obtained by integrating the licensed Software in a C or C++ application, a one time fee of the amount specified as commercial site license in the file PRICING (section 2) in the current distribution shall be paid to the Licensor. (A) For universities, research institutes and other non-profit organizations and individuals using the software for non-profit purposes an one-time fee of the amount specified as the academic site-license (A) in the file PRICING (section 2) in the current distribution shall be paid to the Licensor. 5. Ownership The Licensor is and shall remain sole and exclusive owner of the Software and the copies thereof. However no run-time fees are required for integration of the software in a value-added product delivered in executable form to a third party or for use of the executables at the User'premises. 6. Copies and Modifications 6.1 The User is entitled to make copies of the Software for use in accordance with clause 2 above. The User shall furnish each copy with proprietary marks and symbols identical to those affixed to the Software. The User may not make any copy available outside the User's premises. 6.2 The User may modify, update, improve, correct, or alter the Software in accordance with this Agreement. Such modifications, updates, improvements, corrections or alterations made by the User shall become the property of the User. 7. Service and information Unless the parties otherwise agree, the Licensor shall not be required to provide to the User any installation services, technical assistance, maintenance support, supplementary information, improvements or modifications for or in respect of the Software. 8. Limitation of liability, industrial property rights etc. 8.1 The Licensor does not assume any responsibility whatsoever with respect to functioning, design, material or workmanship of the Software. 8.2 (i) The Licensor shall not be liable to the User for any loss or damage whatsoever or howsoever caused arising directly or indirectly in connection with this Agreement, the Software, its use or otherwise. (ii) Notwithstanding (i), the Licensor expressly excludes liability for consequential loss or damage which may arise in respect of the Software, its use, the system or in respect of other equipment or property, or for loss of profit, business, revenue, goodwill or anticipated savings. 8.3 To the best of the Licensor's knowledge the Software or the use thereof does not infringe any third party's property rights. The Licensor shall have no responsibility for any claims or infringements of patents, trade marks, industrial designs, copyrights or other property rights affecting the User's use of the Software. 9. Assignment The rights granted under this Agreement may not be assigned or transferred without the prior written consent of the Licensor. 10. Term and Termination 10.1 This Agreement is effective when signed by the User. The rights granted herein for the Software shall remain in force until the User discontinues to use the Software. 10.2 The Licensor may terminate this Agreement immediately if the User commits a material breach of any provision of this Agreement. Any use or disposal of the Software that is not expressly permitted under this Agreement is considered as a material breach of the Agreement. 10.3 Immediately upon termination of this Agreement, the User shall destroy the original and all such copies and certify such destruction to the Licensor by e-mail. 11. Applicable law This Agreement shall be governed by Canadian law. Date:________________________________ Signature:___________________________ Name:________________________________ Organisation: _____________________________________ BinProlog3.45/TCLInterfaceReleaseNotes120777 764 764 0 6664733563 22110 2../TCL/ReleaseNotesustar javierjavierBinProlog3.45/bin/ 40755 764 764 0 6664733706 12772 5ustar javierjavierBinProlog3.45/bin/bp.68k.next100644 764 764 740000 5764363150 15030 0ustar javierjavierh8__PAGEZERO __TEXT __text__TEXT/44__fvmlib_init0__TEXT0__fvmlib_init1__TEXT00__const__TEXT0<0__cstring__TEXTlNl__DATA __data__DATA __bss__DATA0__common__DATA07/usr/shlib/libsys_s.B.shlibX/4 O .# /H# R/H# aXJg yNJg yNJgabBJgaRa.aNqNqNV-|Nq 0d n h"n P`N^NuNV/Hna .ЀЮЮ @A tHxHycN#BHxHyhN#FHxHyqN#J BHyzN#NBHy҃N#RBHyҋN#VBHyҔN#Z BHyҠN#^BHyҧN#"BHyҫN#&BHyүN#* BHyҳN#BHyҶN#BHyҹN#BHyҼN# BHyҿN#.BHyN#2BHyN#6BHyNKb*#r#nGѶ#Ѯ#ѺѲ BHyN#fIBA///9RGvNBA/9Ѻ//9VN(HxHyN#jBѪ#Ѿ#L< N^NuNVH BHyHyHyE2RN Jg gIzb |0 p NHnHy/9an Jg .?# `HnHy/9a8 Jg .?# `HnHy/9a Jgb .?# `NHnHy/9a Jg, .?# `HnHy/9a Jg .?# `HnHy/9a` Jgz lzmp*.# `HnHy/9a Jgzz lrzmjp*.# $`\HnHy/9a Jg< .z # (`.HnHy/9a Jg# ,`JgRQBCSdJg.HyHyHy1HyuHy(aHxa0 9Bo"2 LHxE/~NHy>HxNJg/Hy0Hy(a J~g /aXO/aR$/a/aPL N^NuNV/$./a/a Ba\$.N^NuNqNV/B/9 $aXO#ft/9 $a mP XP`"fdprf rg"C"`"C""nd"-P\e$Hy/ Hx/-PaHx a mP XP`gB`prfrge"Hy/ Hx/ aHx a"ndD"-P\e$Hy/ Hx/-PaHxaH mP mPC!IPP&XJ C$Ћ$` XJ$,$,Sfb6pL< N^NuNV n"/Hy(Hy(aLHxaN^NuNVH0&.//9Na_$POf/. HyH/a L N^NuNVH8&n k|'kXP(k4E C"%IXI%y>p!Yf!I!kP / //./ / aJWIDLN^NuNV/.a/azN^NuNVH 8&n $.$n(n'n'y>/9:/9Na^*rPO%Yf%B%lP$/ / /// a8LN^NuNVH88(n&. / aPXOJfHyZavB`$l|)lXP"l4G $ 'C'y>/9:/9Na]r%Yf%B%lP$ lx l!C l!n)B,)Jt l!@ LN^NuNV n/(/( hSH/a*N^NuNV/ $n/ axXOJg" j/ /*t/(/*,r Ҫ4/a`B$nN^NuNV/ $n j rfr ` / aJg j ($nN^NuNVH8"n". $.&. i xbH |ʀ p N ix ` ix `F ix ` ix `2#A,#Bt i!C ` / Hyr i/aHxaBLN^NuNV/"n". i tg$// Hy֊Hy(aHxaXB` it #A,#nt i!n $.N^NuNVH00$.n$<@"9ʲbB`&yXKb$C$S j rf jr XKc&yXKBSrgV$S j rgrf / aXOJf j rfr! f JgB&yXKQBBSdpL N^NuNVH?<(n&n*.B-K(  b' |ʠ p NJg ~)`:"n " ~)`Jg(/.// ~/4aJg&XXK` ~"n XI-I Y"` ~$t. g$ `$B$fffvB"nd< E*hP\e$Hy/Hx/(PaHx aX"E iP XP$ ". P cY-A *n XM-M Y*PK`شf%`< n  ~)X `"~)` "n ""~))` /.//4 ~/4aJg%\`"~)(+")`VJg ~)"FXI)` ~) "n "$IXJ)$`Jg2/.// ~/4a$Jg$ FXH)` ~$n $)$`JgH/.// ~/4aJg$x/./ FHh/4aJg#2`B ~"n "`JJg4 ~)/./"FHi/4ajJg#P`v ~) "n "#tP `RJg FX$P. g$ `$B$fZffP$"nd E*hP\e$Hy/Hx/(PaHx a"E iP XP`f"@`"n XI-I Y`2 ~$t$ "n XI-I Y`Hyֶ`" ~$t. g$ `$B$fZffP$"nd E*hP\e$Hy/Hx/(Pa@Hx a"E iP XP`дf!` ~)` nRH"n XI-I Y"`-n`$l. g$ `$B$ff"BSI-I`&k. g// a&@POJg B-n n "E8e` / /./. /a-@ g . `"&k-n n "E8d $l. g$ `$B$f fg//+aUF&@POJg!, X`&k-n*n E8d b$l. g$ `$B$f fgp"+"Ag`8 A(( ~C)A)| ܊*AG ` ~$t. g$ `$B$fffB"nd< E*hP\e$Hy/Hx/(Pa$Hx a"E iP XP$ ". P cY-A *A*(+ ~+t$APJ)$`f L, (+/./Hj ~/4a|Jg " FPH)` ~$t. g$ `$B$fffB"nd< E*hP\e$Hy/Hx/(Pa,Hx a"E iP XP$ ". P cY-A *A*(+ ~+t+t`ȴfX, (+/./Hj ~/4aJg././ FHh/4adJg` ~$t. g$ `$B$fffB"nd< E*hP\e$Hy/Hx/(Pa Hx a"E iP XP$ ". P cY-A $A$(+ ~)$$APJ)$`fH(+ ~C)A)| ܊ ` ~$t. g$ `$B$fffB"nd< E*hP\e$Hy/Hx/(Pa8Hx a"E iP XP$ ". P cY-A $A$(+ ~)$"A`Ҵfh, (+ ~C)/./Hj/4aJg~ ܇ `&"n " ~)(+$IXJ )$$IPJ)$`X"n " ~)(+ #t$IPJ)$`&"n " ~)(+ #t`"n " ~)(+$IXJ )$` ~$t$ $n $(+ ~)$$n PJ)$` ~$t$ "n "(+ ~#t$IPJ)$`` ~$t$ "n "(+ ~#t`. ~$t$ $n $(+ ~)$"n #t~ ߮ `&k-n n "E8dd($~ n"EeHy/Hx/.`L g*n+Yf"nC, -I#n E#hP"`:$~"n"/) E/(Pa*E+@P"n-i ~ Ї POg"n)Yf-n nA, -H`$~"n/) E/(Pa*E+@P"n-i ~ Ї POg"n)Yf-n`~Hy`Hy`Jg$~"FC,, `$~$n "JC,-I S~g~C,%,QBBSd`h$~ D) ` $~)B$t. f"`$B$ffp~f ~g)J`)B`$t. f"`$B$ffp~f ~g)J`)B ~$t. f"`$B$ffp~f ~g)J`)B`&~$t. g D) `f$B$ff"Dp~f ~g)`:)`2&~"n ""D))X `$l. g$ `$B$ff//9NaL &@(~POJf /9J`Jg2 Sg )Yf$2Lp~f ~gEL$ )L-n n "E8e`$l. g$ `$B$ff(~"R 拓//9NaKx&@POJf /9F`)LSg2 Sg )Yf$2Lp~f ~gEL$ )L-n n "E8el`X$+//9NEN&@POJf(/// /. aD4-@ /9F/9NN&@-n"n *E8eHy/Hx/. ara:` /ad` E*h g(!n ,!nt"h#K-h~!"n"B`HxaKav&@-K E-h|!hXP*h4I C-I ")IX )y>pXO n!Yf~߮"n#n E#hP"`8$+//./.Hk/ /. *BN-@ "E-itJg*E&mx`HyaJ`// /. aA-@ fHy3`h/.// /. aBL-@ gt)l` /./Hl HlHl/. a80-@ gV`\/./HlHl/. a:@-@ gR)l `/ a5)l`&/.// /. a.Jg)l`|*E+m`p//./ /. / afR-@ g/9:/9NaH|&@PO`/9Ѳ//a\`HyR/9Ѳa`/9ѲaXK `$T. g$ `$B$fvffj`$T. g$ `$B$ffg@`$T. g$ `$B$ffp~g`$T. g$ `$B$f fgp~gL ~gB`$T. g$ `$B$ff" //9NaG:PO`&,$,rƒp刂~gP$n //.// a]\-@ gJg/./ ~/4/ ` ~)` ր~g/./ ~/4/` ~)`T&,$,rƒp刂~gP$n //.// a\-@ gg/./ ~/4/ `| ~)` 䀖~g/./ ~/4/`D ~)`&,$,rƒp刂~gP$n //.// a\-@ gg/./ ~/4/ ` ~)`H L8~g/./ ~/4/` ~)`&,$,rƒp刂~gP$n //.// a[t-@ gbg/./ ~/4/ `6 ~)` L@8&~g/./ ~/4/` ~)`hp~f ,f/HyT/,`&,$,rƒp刂~gP$n //.// aZ-@ gg/./ ~/4/ `l ~)` L@8 ~g/./ ~/4/`0 ~)`$n /,/,.// aZ-@ gg/./ ~/4/ ` ~)`Jg$/./ ~/4aˀ~~/`al"~~~)`$yѮ*g jB`,EѮ RSk R"hBR`/9ѮanXO&g/./ ~/4 ~/` "~ ~)`$,p~g /Hya` yѲSk yѲ"h R`J$yѲJ*lH D l> j  g yѲR`/9Ѳ yѲ-h"nBG` /9Ѳ%/aPO`&,$,rƒp刂~g$////. aXHJg8`破o `&,$,rƒp刂~g$////. aXJg `Xl `N&,$,rƒp刂~g$////. aWJg `m h`&,$,rƒp刂~g$////. aWpJg ``ȴn `&,$,rƒp刂~g$////. aW(Jg `怴f `v&,$,rƒp刂~g$////. aVJg `8g `.r¬p刂~f ,& ,~g/./ ~/4/` h ~)`r¬p刂~f R ,& ,~g/./ ~/4/`  ~)`~r¬p刂~f ,& ,ƀ~g/./ ~/4/` ~)`&r¬p刂~f ,vƀ~g/./ ~/4/` f ~)`r¬p刂~f P ,.,vƀ~g/./ ~/4/`  ~)`r¬p刂~f $,F vƀ~g/./ ~/4/` ~)`*HlHla,Aц$0 POf z ~)`$,p~g /Hy{`d&$l. g ~~g X ~g N$f/Hyכ/a n&P `(Jo ~d/Hy׺/aɪ"n&Q `E<g/./ ~/4/ ` ~)`:/.// a9& Jg `/.// a: Jg d`Hx// aD Jg\`)yHx// aF Jg Z`gp~gJ,g l)Pgp~gJ,g l)P/,/,a<$POggf ~)`HHx// aB$ gf ~)`// a#$POgfr ~)`/.// /. a7"-@ ghg/./ ~/4/`< ~)`$n // /. a.-@ g g/./ ~/4/ ` ~)`b$n // /. a/-@ gg/./ ~/4/ ` ~)`"~fz ~)`// a(JPOJg|`// a#tPOJg0` ,f$9n`$9rf" ~)`// a#POJg$` ,/a&ZXKXO` // a%~POJg``/ a%$XOf ~)`> ,f8$,p~f ~f//. aJ$POgf*BXM-M `//,aN$POfX ~)`// a?POJgZ`$n // /. a,4-@ gg/./ ~/4/ ` ~)`z// /. a1-@ g`\$,gp~gt ~gl ,f6/"E/)8/. //. a/$@Jf Hy`@$. -J `./ E/(/(//(a.$@JgP"E$)#Jf> ~)`޾$n // /. a--@ g4g/./ ~/4/ ` ~)`v$n // /. a2D-@ gg/./ ~/4/ ` ~)`. yѦ P$f ~)`"yѦ$Q$ E*hP\e$Hy/Hx/(PaHx aì"E iP XP`/.// a2( Jg`ݦ-yѦ"n$Ѧ~ć~f ~)`t$n / /. aQ-@ POgg/./ ~/4/ ` ~)`0$n / /. aO|-@ POgg/./ ~/4/ `~ ~)`$n // /. aS -@ gbg/./ ~/4/ `6 ~)`ܤ// /. aS Jg `܈$n // /. a8-@ f Hy`g/./ ~/4/ ` ~)`8 9Ѿ$~f ~)`// a$POgfl ~)`// a$POgnfD ~)`// a6POJgF`ۮ// aPOJg`ۘ// aPOJg`ۂa$f ~)`d$l. f$ ndH*E.-P\e$Hy/Hx/-Pa2Hxa"E iP A*iP+HPP$` ,/ ,/ ,//a$gBRf: ~)`ں"lSI/ abXOJg`ڠ/ aצXOJfڐ*n&U`.,S/a$@XOJgg/./ ~/4/ ` ~)`Dp~f ,&/aXOJg|` ,$// /./. /aFJg*E-m, -mt"m&i`Hy`Hy+aXO`t// /./ /. aQ-@ f n&P`.$,g,/./ ~/4/a\Jfn"n&Q` ~)`V/ /. a`/ a"XO`L0$n&n B -WIDgRJJfB`:|I/aXOJg Ѐ"@AN(؃RJ`&JgDJWIDL |N^NuNV/$.Hn/a|POJg .r` /. /aΎ$.N^NuNV/ "n i rf. (rfJ g @r"E#J `B$nN^NuNVH?<$n(n d*<|@KNB  yB0 ~ge ~g `~gr~?f 9fJѪg`R <gp<~g <g~/ HyLHr<at `zp,~f2 2,"~/ y/0 HybHy(a``:p,~f 2,/Hyj`.β,/Hy؂Hy(a$ R Xl~HyRHy(aPO`$*//a/&@POJf< @~A$/ Hy؏" /a `v ~ge~g~g` gb ~g` g8` @@$~p y( 2L@@%LB(`4 @@$~p yB("2 AA% B(.2 % ` @~1$ yB(G %K` @~1`, @~`"B/ aPOJg @~` @~$`Hx/ aPO`B/*/a.\&@ yB(Hs /*/a- @~&`JfvE<epL0*.&. &n(.$n|#~ j @ b 0 |X p\N// a$9BF/*//9Na+,9и>g y!jJgBм,9и>g jg y |g|g<`N yQHpЪer XH Ъd jh jh`, y @| `|#мHyعa` Jмf #и j @| jX j X j @|`иf2Jмf < j @| j" | `.|#м// HyHy(aDHya` #X` Jмf cHy a` // aPO _g(9BF/*//9иa*Jf/9и/9Na+ @ @| PO`Jмf J`Jмf < j" | j" | `Jмf |f j (|f^ (@|+!@Y j" || 쨂 |fd j (|fN (@|*`|f j (f (@|!@Y j" || 쨂 |f j (|f (@|`Jмf|f j (|f^ (@|#!@Y j" || 쨂 |f^ j (|fH (@|"`|f j (f (@|'!@Y j" || 쨂 |f j (|f (@|&`Jмfz j @ Jмf|fv j (|f (@|-!@Y j" || 쨂 |f< j (| f (@|,`|f j (|3f (@|7`|f j (|f (@|8`|f j (|f (@|!!@Y j" || 쨂 |f` j (| f (@| `|f2 j (|3f (@|5`|f j (|f (@|6`Jмf|f j (|f (@|%!@Y j" || 쨂 |fz j (| f (@|$`4|fL j (|3f (@|9`|f j (|f (@|:`|f j (|f (@|)!@Y j" || 쨂 |f j (| f (@|(`X|fr j (|3f (@|;`,|fF j (|f0 (@|#иr#мr## j @r 9BA/*//9Na X j XL N^NuNVH $nSk jBR` / aXOr#g / /a`B$Sk jBR` / aXOrgr$fr0fSkR`/ aLN^NuNV\H<0xAѪ* 9fB&`/tԎ/Hn\Hy+/.aGBA .\r/B/EsLNPO/B/NPO/a%B$Jf6///.\BA/9 8Hy3Hy(a~Hy\aB#Ѫ L <$.,. Hyy/a$@POJf$/E04NHy|NHyفaB`/Hyِa/ at K (IvSk jBR` / aXO*rgSk jBR` / aXO(rg~Sk jBR` / aXO&rgZBl4&TSk jR` / aXO( g TJ0(gRm TB0(/////a$f:/ aXOJgHy٤`HyٸHyќa L<|N^NuNVH?8(n &nnr#ѪB.gBB/ /3>>3>/3>/3>BAaJg4| ?f Њ 3@g0B Њ43//3aN l XPORJ Њ 3@f Њ03gv/ Њ?3Bg/HyHy(aBm>BB Ђ/3:3/3/3B@HyHy(aRlHyaNXO֊3>.f//.Hy,Ev/a/adpLN^NuNVH0 &.BBHy t/Hy\EzNJgHxHy @/HyNJVID L N^NuNVH0&.$. /aXOJgJg //a`/avL N^NuNV n "nA .rN^NuNV/ n"n "(ptg / Hyc` kѾm/ Hyڇ/a<`B y/0 a$.N^NuNV/ n"(ptf tg/. Hyڨ/a`( y/0 aXOJg B/a`B$.N^NuNVH0 n"n "(pvg / Hy`"$"(pvf vg/ Hy/aj`/ y/0 avJWIDL N^NuNVH0 n&. $(prf rg /Hy`& y/0 aXOJfp`/Hy@/aL N^NuNVpN^NuNV n "nA 1rN^NuNVH>0*.&n $n(.$+ f&"B`$"A"ffp|f |g'B`'Ap|gB`| +|b | p Na&AѢ$ ` / Hx/ap&/ Hx/`/ Hx/aT&/ Hx/`/ Hx/*Pa6&/ Hx/*P`/ B/*a&/ B/*`&9ܖ 9 $$Թ`r 9&$9 $`X&9R"CC: &$9 S"BC* $`(/ Hx/*a&/ Hx/*aL$// /+ |/aJg // /+ |/aJVIDL |N^NuNVH0 n"n $("(pvf vgHyYaJB`pvf& vf y/0 /0 Hyq`@f 4/ y/0 Hy}` / y/0 Hyۈ/9vaB/9vaL N^NuNVHn/. aPOrfHyےaB`&Hn/.arg".ಮ]ID`pN^NuNVH0 $n$. "*g pvf /Hy۶`* y"p "*g pvf/Hy/a>` y/0 / a8L N^NuNVH< n ("&(g pzf/. Hy/a` y(0 Jfʶbf#ѶѮ`//9Ra$POff@Hyy/a$POf Hy`B///9Ra JfRHy4` JfDHyy/aP$POg9BE///9RaJf HyB`#Ѯ#n` fbf#ѺѲ`//9Va$POff6HyN/a$POg///9Va JfLHyQ`XJf@HyN/a$POgL9BE///9VaJfHy^`#Ѳ#r`HykaB`pL8&n"n n$n*.(.`"B$f fglp|g&|f&////aRJg//Hx/ `////a&Jg// |// ` B$ff`$A"ffp|fJ&p|f Jf8///`bg* K c$/Hy Hy(a HyaB`< "|&S|g&XKQBCSd//// a\Jg L|N^NuNVH ".ptf /Hy Ev/a$ ` tgB` y 0 LN^NuNVH 0 n". "yvfJEXH"fg &A"ffptf* XH` A"ffgfBp`BL N^NuNVH><$n&n (n(.*.`&C&ff`(B$f fg*// a6POJg//B/9vaܖPO// `DgP/a @XOJg:$ JgCB$ |$Jf$/// /aJfH`HffHy.aB`,g/HyV/a`/Hyt/a` L<|N^NuNVH0<"n(n $n" &IXI l&fh"$g^ vvg*/ Hyݒ/ad`HHy/ Hx/ a$B`08d"K#MPIPH` A"ffg"& L< N^NuNVH<8"n n $n h*f &IXI(XB& zzg/ Hy/a` PH` A"f2f`,R8dI"PH*g"` A"ffg oHya$B`gpzg zg / Hy,`6 Dg"` A"f fgpzfJg/ Hy`/a`Hpzf z먂&`*/ Hyކ/a`Hy/ Hx/ aB` L lP lPRK!KPP $$( XJ$& XJ/ / //aJg yѦ&P&"n " `BL<N^NuNVH08(n&n n$,pvg / Hy߽``"$l& g( vvg vf/ Hy/ a`$f / Hy`Jo v樰d/ Hy)/a`^E$dLfd@"kP\e Hy/ Hx/+PaFHxa kP kPC!IPP$pL N^NuNVH00$n"n &n"*pvg / HyP`$ j&g& vvg vf/ Hyw/a`d"f / Hy`DJo v樰d / Hy`,c / Hy`A,"*fc/ Hy/a~` pL N^NuNV/ .". y 4 !@!At չ 4 $.N^NuNqNV/. 9Ѐй/Hy;Hy(a&HyMaHxaN^NuNVH E /a#/a"#t#BJgJVIDLN^NuNVH<0&.(. $C 9 S* ʀ$E$ ԹĀgJ"yAJg:"yG Af Ag" R S€$Ag AJf"yAJfX 9 "Ҁl Hyia"yA#A#A#R yp`BL AB1b.&yN`V"yA&q( g" `&A"ffpxfJn x訴bⲹgg*n8e$Hy/.Hx/ aHx aj"yA 1r€xf$$$$`"$($$xx$"yA 1r€xf$$$$`"$($$xx$$$RL e$ L<N^NuNV ."g&g*f 92`2gf 9.`gf 96`BN^NuNVH0".$.pvf, vf$pvf k n /. ab`BL N^NuNVH?0*.&n $..// /a& gHn//a ~fB`~f" n"yA#/ //a6` 9 8(~ 9 "ҀlHyia~XO"n$yA%A%A%R yB// //EvN//G^//N Jg////NR 8pL N^NuNV"ngprgJ)g i#PgprgJ)g i#PgprgJ)g i#P9BA/)/)/)aXN^NuNVH8<&n&. .gpxgJ+g k'PgpxgJ+g k'PHn/+/+a xfR(y$n2gB"yA"qg,2BDBBHyHy(ay/Hy`xf/Hy/+a`~Jfh 9 "Ҁl Hyial"n$yA%A%AK йP%R y n"yA 1L<N^NuNVH8<&n*n .$+gpxgJ+g k'PgpxgJ+g k'PfHy`fHyaxB`^Hn/+/+aL" xfR(y$n2gB"yA"qg,2BDBCHyHy(awl/ Hy`xf/ Hy/+a0`xf n"yA"qgB`gpxg& xgee/ HyA/a`txf n"yA#`X 9 "Ҁl Hyia`"n$yA%A%A%R ypL<N^NuNVH00$n&n .$*gprgJ*g j%PgprgJ*g j%PHn/*/*a rg/ Hy_/*a`t y$n2f"yA"qfB`Jgprg& rgee/ HyA/ah` n"yA#pL N^NuNVH ".$n .B//a^LN^NuNVH0$.&9 4//. /.a y 4 X 4չ 4 L N^NuNVH0$n&n $ yIAb0gCbR yI1f"yIAb0f $f2Rg*Cb<_ yICffBRf`8"yIAb0g* $g$ ,g (g )gRg &p`#BL N^NuNVH0$n&n $ yIAb0gCbR yI1f"yIAb0f _f:Rg2Cb<_ yICffRf&p`#BL N^NuNVH0$n&n $ yIAb0gCbR yI1f yICb1g,Rg$ yI1gRf&p`#BL N^NuNV. yIAb0gCbR yI1f yf Rp`BN^NuNVH00&n&. tHx)ENXOJf.Hx,NXOJg /Xa$XOgR// a$`B L N^NuNVH 0&nt&Hx]ENXOJfHx|NXOJg,BHnaXOJgHx]NJVIDJgV&`PHx,aXOJg>BHnaDXOJgHnaxXOJVIDJg/./.a&`B L N^NuNVH 0&ntHx[ENXOJgXHx]NXOJg &`BHnaXOJgHnaXOJVIDJg/./.a@&`HnHnaPOJfHnHnaTPOJfHnHnaPOJgHx(aXOJgdHna0$XOgj4|-J-nHnHna$POgH/././.a"@& n*A # Ro`B/./.a&`B L N^NuNV .# # 4HnaJg y 4 9 4`BN^NuNV y/0 /.aN^NuNVH88(n $n( g$ `$B$ff"9zvpй (lHyaz`f4eLAz"P_R 4/Hy HyayCEz RRJfSz`deVAz"P_R"PaR /Hy Hyay>CEz RRJfSz`eAz"P_R"PbR /Hy HyaxCEz RRJfSz`pxf: /Hy HyaxCEz RRJfSz`f xf* y"p Ez RRJfSz`4fAz"P[R/ XJ/ aXJPO( g$ `$B$fff@Gz S,R/ XJ/ aXJPO( g$ `$B$ffgƴgAz"P|R/ / a~Az"P]`x y"p Gz SRJfAzS"P(Rv x訰c$Gz/ /2<a S,RPORb/ Hr<aAz"P)RLN^NuNVH0". . EzGv$//a RBR L N^NuNVH0". . EzGv$//a RBRB/aL N^NuNVH 0". . $.EzGv$//aD RBR/Hy/akL N^NuNqNVH8 n"n$n".$. vƁp刀x„ĄR R"R$LN^NuNVH0".S$. S&.Sp䉄-B-C .".L N^NuNV/ $nHnHnHn/./. aZ$j%n%n%n pЊ$nN^NuNV'/ n ttf `$fL"ptf A($\H$ $2$$$$8 (d. L ) )))%F)2-z" ($   <<6<qqqqqqqqqqqqonnno o6oLobop*pDp^ppq"qXYhZZ[[[\\0\B\^\hJ\ty{z} yy~~~y~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~y {~~~~~~~~~~Z~N~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~N~~~~~~~~~~~~~~w\y6Vrhhhhhv??@ Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatediteditor_programbp_statenoname.pleditor_fileversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u [wam.bp][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS]usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD]%s %s%s BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationexpected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s......finished loadingunable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directorysymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2string buffer (-i option) exceeded or infinite term%sbad arg in arithmetic operation%ld%-se%-ld %fprolog:$end0_cuser_bpc.c not compiled with -D C_INTERFACE $bin_cut$cut?failcwritecnlvarnonvarintegeratomicis_compiled+1*mod///randomget0put0lessgreaterless_eqgreater_eqarith_eqarith_dif<<>>/\\/#\compare0argsetargchange_argdefrmsetvallvalsymcatdcg_connectlist2termterm2listself_infoadd_instrlift_heapdet_append0copy_termbb_list0older_fileseeing_tellingsee_tellseen_toldseeing_telling_atsee_tell_atstring_opop0term_appendfloat_fun2float_funinput_floatwrite_floatstrip_cont0dcg_defdcg_valdcg_telldcg_tellingiso_open_streamiso_close_streamiso_write_termiso_read_termiso_put_byteiso_get_byteiso_peek_byteiso_eofiso_lseekbb_putbb_getbb_opsetrefunix_argcunix_argvunix_getenvunix_accessunix_cdunix_killquietcreate_enginedestroy_engineload_engineask_enginemultitask_enginessuspend_enginenew_builtinhaltabortrestartfindall_store_heapfindall_load_heapfunctornameshellstat0list_asmbb_resetprofileif01000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=bu0in_body234567arith8910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485in_headbu_ctrn_inlinen_arithn_builtin160n_nop174bu1!compileincludeorifstrip_conttermcatadd_contasm=..::-statisticsinteractiveexpand_term->;,repeat\+\=findall_workhorsefindallfindall_conjfindall_disjallwhileskip_untilskip_whenfind_whilenth_answertake_at_mostdrop_at_leasthas_fuelfind_at_mostall_but_at_leastforargnappendmemberdet_append++lengthmake_cmdnumbervarsgc_callgroundatomfloatnumbercompoundappendNappend_conjappend_disjtabgetisexprcompare==\==@<@>@=<@>==<>==:==\=bb_defbb_setbb_valbb_rmbb_letbb_change_argletdcg_phrase:=:powlogsqrtexpsincostanasinatanacospredicate_propertycurrent_predicatectimehelpaproposunixmeta_interpretertracedynamicassertaassertzassertretractretractallinstanceeraseclauseabolishdebugconsultreconsultlisting=>assumeiassumelassumedassumed_clause-:is_assumedis_dynamicbbbb_listbb_elementsortkeysortbagofsetof^free_variablesnotterm_charsvars_ofuser_errorerrmesquietmestoplevelis_prologget_codeput_codenlreadread_termtop_read_termwarn_singletonsread_with_singletonsread_clauseread_tokenswriteprintwriteqportable_displaydisplayportrayportray_clausepp_clausepp_termfast_writettyinttyoutttyputttynlttyprinttyprintttycwritettycwritelnseeseeingseentelltellingtoldsee_atseeing_attell_attelling_atfile_search_pathfile_extension_listfile_librarymake_file_namefind_fileexists_filesee_or_failflushsreadswritecurrent_opopis_builtinmy_editedtexteditemacspiconotepadvicocurrent_user_filelsdirmake_applmake_executable_unix_applmakemake0cmakekmakekcmaketmakectracebootadd_truegc_readgc_read_clausedo_bodytr_bodyith_clausechar_in_cmdshow_code0patch_itlwritemodule_callmoduleis_modulemodulescurrent_modulemodule_predicatemodule_namepublicis_publicgensyminit_gensymspy_goalspyspyingnospyotherwisefalsephrasenth_membermember_isavedstat_dictset_c_thresholdset_c_traceC:runtimeglobal_stacklocal_stackstringssymbolshtablebboardbasicprolog:error_messageprettyprolog:portray_error>>> : *** should_be_nonvarcurrentprolog:public0prolog:hide_atomprolog:hide_atom0bad or repeated declarationprolog:is_publicprolog:gensym_noprolog:get_op10000prolog:get_op0prolog:op_type$first$assumedyesunable_to_spy_onprolog:is_builtin_nonvarcontprolog:buprolog:is_builtin_varnoprolog:is_interactiveprolog:interactive01199?-1200prolog:portable_expand_termprolog:std_expand_termcall_ifdefno meta_interpreter for undefined goalprolog:call_ifdefsprolog:share_varsprolog:are_sharedvars$VARprolog:numbervarsprolog:save_termprolog:see_or_failprolog:compile_mem10912111211411110311599prolog:getenv_path1081059897BP_PATHprolog:term2listprolog:term2dlistprolog:det_appendprolog:appendNprolog:append_bodyprolog:general_appendprolog:get_lengthprolog:make_lengthprolog:tab0in tab/1: should evaluate to an integererror_in_isvariable_in_isprolog:$noteqprolog:$lesseqprolog:$gteqprolog:bb_default_valprolog:bb_gcprolog:bb_failprolog:defprolog:setprolog:valprolog:letprolog:rmprolog:bb_put_backprolog:bb_put_1blackboard overflow, left onlyculpritprolog:try_floatboxprolog:try_float_expeprolog:try_float_exp1101prolog:float_minus267911168TSprolog:is_predicateprolog:predicate_property0prolog:generate_a_predicateinterpretedbuilt_incompiledprolog:predicate_key0prolog:near_matchprolog:append3prolog:unix_cdHOMEprolog:unix_argvargcargvgetenvno such environment variableaccesscdkillprolog:try_dcg_expansion-->prolog:dcg_ruledcg expansion error->prolog:dcg_bodyprolog:dcg_conj:-prolog:dcg_head@@prolog:dcg_goalprolog:dcg_disj{}prolog:dcg_termprolog:dcg_disj0prolog:dcg_CONJ-->>try_edcg_expansionexpected_to_expandprolog:default_prologbinprologprolog:peval_iounable_to_seeunable_to_tellunable_to_see_atunable_to_tell_atprolog:find_file1librarybad file nameprolog:find_file2prolog:see_a_filefile_not_foundprolog:singletonsprolog:r_termprolog:warn_singletons1prolog:melt_varnames:-...=> ** warning singleton_variables, byte=>prolog:r_varsprolog:portable_printprolog:portable_writeprolog:portable_writeqprolog:r_and_checkprolog:all_readprolog:rtprolog:syntax_erroroperatorexpectedafterexpressionprolog:expectprolog:prefixopprolog:postfixopprolog:infixopprolog:ambigopprolog:rts(prolog:r_argsprolog:exprtl0apply999prolog:after_prefix_op[]prolog:r_list)(({}stringcannotstartan,)inarguments||]listprefixcontextwithprecedenceprolog:prefix_is_atomprolog:exprtlprolog:peepop11001000followsprolog:cant_follow_exprvariablebracketprolog:start_syntax_errorprolog:display_listsyntax_error** SYNTAX ERROR: byte=prolog:finish_syntax_errorprolog:display_token99999 prolog:r_toks-1prolog:is_terminatorprolog:r_solidusprolog:r_after_atom9193123124125prolog:r_fullstopprolog:r_stringprolog:r_name95prolog:r_lookupprolog:is_majprolog:r_integerprolog:is_numprolog:is_minprolog:r_symboltoken! end of file in: prolog:more_stringprolog:patch_slash! end_of_file in /*.. commentprolog:is_alpha_numprolog:is_spec! end_of_file just after full_stopprolog:r_intprolog:r_digitsprolog:r_digsprolog:r_varcount12290prolog:is_latin1_minprolog:is_latin1_maj192214216222223246248255929496126prolog:w_outpunctprolog:maybe_parenprolog:maybe_spacequotealphaprolog:put_stringprolog:w_variableprolog:w_VARotherprolog:w_atomprolog:w_argsprolog:w_tailprolog:w_oper700prolog:classify_nameprolog:classify_alpha_tailprolog:classify_other_tailprolog:pp_clause0prolog:l_clausesprolog:l_magicprolog:l_magic_nl :- , ( ; ->:- prolog:l_magic2prolog:binpro_startprolog:exec_run_time_commands$endinit_ioprolog:topstep?- prolog:topinterpprolog:report_answersprolog:topcallprolog:nothingprolog:savetoptopgoalprolog:report_one_varprolog:report_top_varsprolog:another_solprolog:user_action ; for more, otherwise unbound_goalprolog:do_bodyprolog:do_compiledprolog:do_goalprolog:do_applyprolog:do_undefundefined_predicateprolog:do_conjprolog:do_disjprolog:do_if_then_elseprolog:do_disj0CUTprolog:tr_bodyprolog:tr_disj1prolog:tr_goalprolog:tr_if1prolog:tr_disj2prolog:tr_if2Redo: Exit: prolog:tr_call : Call: Fail: !!! assumed!!! dynamic!!! compiledprolog:make_dynamicprolog:check_dynamicprolog:define_dynamicWARNING: dynamic code will shadow compiled predicatedynamic code would shadow assumed predicate$lastprolog:ensure_dynamicprolog:add_clauseprolog:add_clause0unable to assert clauseprolog:assert_itprolog:clause0prolog:erase0prolog:collect_slot$dbrefprolog:clauseprolog:abolish0foundabolish_expects_dynamic_clausesprolog:consult_warning% using compile/1 is MUCH fasterprolog:consult0prolog:survive_cleanupprolog:consult_embeddedconsultedtimeconsultingprolog:consult_includedprolog:consult_cmd% prolog:listing0% assumed prolog:listing1prolog:generate_run_time_predicateintuitionistic$closedprolog:assumelinearprolog:add_hint_llbad_clauseerror_in_assumeprolog:assume1prolog:assume_fileprolog:assume_llprolog:assume_with_hint_llprolog:insert_llprolog:get_assumed_clauseprolog:copy_or_delete_ll$usedprolog:assume_allprolog:assume_all0prolog:assume_oneunsortedprolog:bb_origsortedprolog:remdupprolog:merge_sortprolog:merge_sort1prolog:merge_2prolog:ksortprolog:keysortillegal_argumentsprolog:samkeyrunprolog:keymergeprolog:replace_instanceprolog:concordant_subsetprolog:replace_key_variablesprolog:list_is_free_ofprolog:term_is_free_ofprolog:explicit_bindingprolog:free_variablesshould be groundprolog:compile_binaryprolog:cc_bincompprolog:compile_builtinsprolog:cc_builtinsprolog:cc_must_have_builtinswamwam.hprolog:c_chunk_fileprolog:bin_builtinbinBINARY:prolog:cc_compile_clauseprolog:gg_emitprolog:newpredfailing_to_compile_clauseprolog:cutpprolog:bu_bodyprolog:cc_clauseprolog:firstargprolog:classif_firstiifirstargexecuteprolog:cc_h_bprolog:maxprolog:varsdictprolog:fill_infoprolog:collapse_argsprolog:allocate_regsprolog:cc_bprolog:cc_hprolog:begin_chunkc_chunklenprolog:hidden_varprolog:emitprolog:end_chunkprolog:get_modeprolog:set_modeprolog:cc_h0prolog:cc_b0builtinprolog:emit_head_top_termunexpected_head_atomprolog:cc_top_argprolog:emit_top_argscutargprolog:cc_eqprolog:cc_builtinprolog:emit_body_top_termunexpected_body_atomprolog:cc_eq1prolog:cc_top_ttempprolog:out_regprolog:handle_constant_resprolog:emit_top_bargsprolog:cc_b_argsinlineprolog:classif_loadconstantloadprolog:classif_argprolog:emit_top_structureprolog:cc_argsprolog:emit_argsstructureprolog:cc_argprolog:cc_tprolog:emit_structureprolog:deep_structure_opprolog:emit_args0prolog:unify_opprolog:deep_var_oppushprolog:find_occurrencesprolog:occurrence$OCCprolog:newvarprolog:oldvaratoccbad_occurrenceprolog:fill_allprolog:tpointprolog:fill_oneprolog:fill_var_typeprolog:get_var_typevoidvalueprolog:mark_argprolog:mark_varprolog:collapse_themprolog:defaultprolog:set_toprolog:check_lifetimesprolog:check_var_varprolog:check_var_argprolog:allocate1prolog:allocate_regprolog:free_regprolog:get_regprolog:mdef_to_defprolog:repl_bodyprolog:repl_macroprolog:strip_nilprolog:split_opspying_onprolog117116prolog:repl_knownprolog:repl_conjprolog:repl_disjprolog:repl_lvalprolog:app_bodyprolog:split_is_relprolog:split_relprolog:split_isprolog:split_rel_1prolog:emit_isprolog:def_to_mbinprolog:def_to_mbin0prolog:add_upper_contprolog:show_codeprolog:show_instrBRUT WAM-ASSEMBLER:modePOST TERM-COMPRESSION CODE:prolog:mc_all_instrFINAL CODE:prolog:gen_codeprolog:show_or_skip prolog:show_funprolog:show_infoprolog:show_stepsEXPANDED:DEFINITE:prolog:bind_c_chunk_lengthmemprolog:bind_lengthprolog:make_anti_callc_chunk_variablec_chunk_valueprolog:antigenicprolog:write_instrprolog:maxarity256prolog:tempargprolog:gen_instrprolog:beautifyprolog:encodeprolog:mc_one_instrprolog:mc_peepholeprolog:instr_catprolog:encode_argprolog:encode2cutempty_opprolog:mc_topprolog:mc_inputprolog:mc_input0prolog:mc_emptyprolog:mc0prolog:mc1prolog:mc5prolog:mc_pushprolog:mc_chunkprolog:mc3prolog:mc_selprolog:mc_transform_pushprolog:mc4prolog:mc_transform_voidunify_variableprolog:wcodewrite_variableunify_valuewrite_valueunify_constantwrite_constantpush_constantget_constantget_structureput_constantput_structureget_variableput_valueput_variableget_valuepush_cutput_cutget_cutexecute_?load_constantload_variableload_valuepush_structurepush_variableunify_voidwrite_voidprolog:write_or_skipclause_?prolog:n_nopfirstarg_?end_?inline_variableprolog:n_inlinearith_variableprolog:n_aritharith_valuebuiltin_?prolog:n_builtinprolog:encode_opprolog:write_or_skip0prolog:c_thresholdc_flagbegin_endprolog:wspec_cnprolog:wcode_cprolog:wcode_asmprolog:let_c_chunk_filefile_nameprolog:newpred0predicatearityoffsetprolog:currpredcompiling...toprolog:mcomp_fileprolog:maincompprolog:terminate_file$end1compile_timecompilation abortedprolog:init_cmdprolog:translate_allbytes_usedtotalprolog:compile0prolog:compile1prolog:xcompiletotal_compile_timeprolog:decorate_fileheaderprolog:comp_filefooter$end0prolog:c_decorate_fileprolog:close_c_chunk_fileendprolog:make_dummy_endprolog:write_c_chunkprolog:translate_all0prolog:memoing_translate_allprolog:memoable_fileprolog:include_memoed_fileprolog:make_memo_fileprolog:put_to_eofprolog:translateprolog:translate_cmdprolog:is_dynamic_clauseprolog:preprocessprolog:include_fileensure_loadedprolog:exec_cmdprolog:cmd2clauseprolog:cmd_root$run_time_commandprolog:get_cmd_no% !!! action delayed after compilation, for command:prolog:exec_run_time_commands0includingbeginprolog:fact2ruleprolog:make_cmd0prolog:listifyinit.ploper.pllib.plread.plwrite.pldcg.plnewappl.bp104100120110119prolog:cparserbin_prolog_with_cparser.c.bpunable_to_makein_moduleprojectprolog:make_include.asmBinWAM intermediate codeprolog:ubootls -tFprolog:get_editorEDITORVISUALprolog:my_defeditprolog:defeditprolog:sprolog:c_rootxx100000c_threshold_maxc_threshold_min500prolog:make_ccodeprolog:make_hcodeprolog:c_instrprolog:make_bcodeprolog:wchunkprolog:c_trace,""},prolog:patch_specialsprolog:make_comment {,(void *)},prolog:c_specprolog:c_spec_endprolog:c_decorate_file0wam_bp/* do not edit: generated by co.pl */#include "../src/global.h"#include "../src/c_defs.h"#include ""struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} [] = {"}};long _size=sizeof();{255,0,0,"prolog:c_checkprolog:c_check0prolog:new_offsetprolog:get_offsetprolog:c_find_fununexpectedfun_symbolfun_arityprolog:c_chunk_beginprolog:c_chunk_endprolog:newPprolog:newH_oldPprolog:oldH_oldPprolog:newH_newPprolog:oldH_newPprolog:c_wvoidprolog:c_aux_load_integerload_integerprolog:c_aux_put_integerput_integerprolog:c_aux_get_integerget_integerprolog:c_aux_write_integerwrite_integerprolog:c_aux_unify_integerunify_integer ")c_trace(" prolog:c_skippush_variable()move_regput_cut()get_cut()prolog:c_check_ivprolog:c_opcodeprolog:c_check_avarith_op%div_3fdiv_3random_1get0_1put0_1()rel_op<=!=int_only_op&l_neg_3compare0_3arg_3setarg_3()change_arg_3()def_3()rm_2()set_3()val_3lval_3symcat_3fail_0()cwrite_1()cnl_1()var_1()nonvar_1()integer_1()atomic_1()is_compiled_1()@ ⸯ^('05 5^7B5^< 5B5 5^CB5^G 5B5 5^K 5B5 5^R 5B5 5^Z 5B5 5^a 5B5 5^m55Jo 5^J55Jo 5^q55Jo 5^s55Jo 5^w55Jo 5^z55Jo 5^|Jo 5^ヰJo 5^㈰5J 5^㎰55J 5^㓰55J 5^㛰55J 5^㣰55J 5^㮰55J 5^㷰55J 5^55Jo 5^İ55Jo 5^ǰ55Jo 5^ʰ55Jo 5^Ͱ55Jo 5^ϰ55Jo 5^Ѱ55Jo 5^ڰ55Jo 5^ް555J 5^555J 5^555J 5^55J 5^555J 5^55Jo 5^55Jo 5^55Jo 5^ Jo 5^5J o 5^!555J!o 5^+J"o 5^55555J# 5^?55J$ 5^I55J%o 5^U55J&o 5^_55J'o 5^h55J( 5^s5J)o 5^䂰55J* 5^䋰5J+ 5^䕰5J,o 5^䧰55J- 5^䳰55J.o 5^佰555J/ 5^55J0o 5^Ͱ555J1o 5^ذ55J2o 5^555J3o 5^5J4 5^5J5o 5^5J6 5^J7o 5^5J8 5^J9o 5^+55J:o 5^;55J; 5^L555J< 5^[55J=o 5^i55J> 5^v5J?o 5^僰5J@o 5^呰5JA 5^噰555JBo 5^声55JC 5^媰555JDo 5^屰55JEo 5^巰55JF 5^徰JGo 5^Ȱ5JHo 5^Ұ5JIo 5^ް55JJ 5^5JK 5^55JL 5^JMo 5^555JNo 5^5JO 5^555JP 5^+5JQo 5^65JR 5^H5JS 5^W55JTo 5^c5JU 5^^5^Y5^h5^n5^v5^扰5^曰5^棰5^樰5^殰 5^洰 5^潰 5^ư 5^ΰ 5^ұݱ !+4>GQ[ep{煱琱皱禱粱绱űѱܱ%.:FQ\hs花蕱蟱誱跱ñϱ߱  +6ALW775[ 5^W<<=5o[ 5^WCC5c[ 5^WGG=5e[ 5^WKK=5g[ 5^WRR=5i[ 5^WZZ=5k[ 5^Waa=5m[ 5^Wmm=5[ 5oo^WJJ=5[ 5ooo^Wqq=5[ 5oco^Wss=5[ 5oeo^Www=5[ 5ogo^Wzz=5[ 5oio^W||=5[ 5oko^W=5[ 5omo^W=5[ 5ou^W=5[ 5ow^W=5[ 5oy^W=5[ 5o|^W=5[ 5o^W=5[ 5o^W=5[ 5o^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W=5[ 5o^W=5[ 5o^W=5[ 5o^W=5[ 5o^W=5[ 5o^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W  =5[ 5oo^W=5[ 5oo^W!!=5[ 5oo^W++=5[ 5oo^W55=5[ 5o^W??=5[ 5o^WII=5[ 5oo^WUU=5[ 5oo^W__=5[ 5oo^Whh=5[ 5o^Wss=5[ 5oo^W=5[ 5o^W=5[ 5o^W=5[ 5oo^W=5[ 5o^W=5[ 5oo^W=5[ 5o^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W=5[ 5oo^W=5[ 5o^W=5[ 5oo^W=5[ 5o^W=5[ 5oo^W=5[ 5o^W=5[ 5oo^W++=5[ 5o o^W;;=5[ 5o ^WLL=5[ 5o^W[[=5[ 5oo^Wii=5[ 5o^Wvv=5[ 5oo^W=5[ 5oo^W=5[ 5o^W=5[ 5o!o^W=5[ 5o$^W=5[ 5o'o^W=5[ 5o*o^W=5[ 5o-^W=5[ 5o0o^W=5[ 5o3o^W=5[ 5o6o^W=5[ 5o9^W=5[ 5o<^W=5[ 5o?^W=5[ 5oBo^W=5[ 5oEo^W=5[ 5oH^W=5[ 5oK^W++=5[ 5oNo^W66=5[ 5oQ^WHH=5[ 5oT^WWW=5[ 5oWo^Wcc=5[ 5oZ^W^^5] 5^WYY=5o] 5^Whh5c] 5^Wnn5e] 5^Wvv=5g] 5^W=5i] 5^W=5k] 5^W=5m] 5^W=5u] 5^W=5w] 5^W=5y] 5^W5|] 5^W5] 5^W=5] 5^ell! 5^euu9 5^e}} 5^e 5^ꕰ 5^ꕰHH=5 5^ꕰ5 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ 5^ꕰ5 5^ꕰhh5 5^ꕰqq5 5^ꕰ=5 5^ꕰUU=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ 5^ꕰ  5 5^ꕰ  =5 5^ꕰ=5 5^ꕰ""=5 5^ꕰ""=5 5^ꕰ**=5 5^ꕰ**=5 5^ꕰ77=5 5^ꕰ77=5 5^ꕰDD=5 5^ꕰHH=5 5^ꕰNN=5 5^ꕰYY=5 5^ꕰcc=5 5^ꕰnn=5 5^ꕰyy=5 5^ꕰ=5 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰHH=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ5 5^ꕰ  5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ%%=5 5^ꕰ--=5 5^ꕰ99=5 5^ꕰEE5 5^ꕰII5 5^ꕰMM=5 5^ꕰPP=5 5^ꕰUU=5 5^ꕰ]]=5 5^ꕰ``=5 5^ꕰdd=5 5^ꕰgg=5 5^ꕰjj=5 5^ꕰnn=5 5^ꕰSS=5 5^ꕰWW=5 5^ꕰrr=5 5^ꕰuu=5 5^ꕰxx=5 5^ꕰ||=5 5^ꕰmm=5 5^ꕰJJ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰRR=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ=5 5^ꕰ''5 5^ꕰ\\5 5^ꕰ,,5 5^ꕰ==5 5^ꕰCC5 5^ꕰKK5 5^ꕰSS5 5^ꕰ[[5 5^ꕰbb5 5^ꕰjj5 5^ꕰuu=5 5^ꕰ~~5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ5 5^ꕰ 5^ꕰ5 5^ꕰ5 5^ꕰ=5 5^ꕰ  =5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ%%=5 5^ꕰ''=5 5^ꕰ665 5^ꕰ::=5 5^ꕰEE=5 5^ꕰMM=5 5^ꕰXX=5 5^ꕰ__5 5^ꕰcc 5^ꕰcc5 5^ꕰhh 5^ꕰqq5 5^ꕰ{{5 5^ꕰ5 5^ꕰ 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ=5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ--5 5^ꕰ775 5^ꕰ??5 5^ꕰJJ5 5^ꕰPP5 5^ꕰWW5 5^ꕰ^^ 5^ꕰdd5 5^ꕰll5 5^ꕰuu5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ 5^ꕰ5 5^ꕰ5 5^ꕰ 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ((=5 5^ꕰ44 5^ꕰ::=5 5^ꕰ@@=5 5^ꕰWW=5 5^ꕰ5 5^ꕰGG=5 5^ꕰRR=5 5^ꕰUU5 5^ꕰ=5 5^ꕰ``5 5^ꕰ 5^ꕰhh 5^ꕰkk 5^ꕰtt 5^ꕰzz 5^ꕰ 5^ꕰ 5^ꕰ 5^ꕰ5 5^ꕰ 5^ꕰ 5^ꕰ5 5^ꕰ=5 5^ꕰ 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ 5^ꕰ5 5^ꕰ=5 5^ꕰ 5^ꕰ 5^ꕰ 5^ꕰ5 5^ꕰ=5 5^ꕰ 5^ꕰ 5^ꕰ=5 5^ꕰ5 5^ꕰ  5 5^ꕰ5 5^ꕰ""=5 5^ꕰ**=5 5^ꕰ55=5 5^ꕰAA=5 5^ꕰee=5 5^ꕰLL=5 5^ꕰUU5 5^ꕰ\\=5 5^ꕰhh5 5^ꕰhh=5 5^ꕰoo5 5^ꕰyy5 5^ꕰ5 5^ꕰ=5 5^ꕰ=5 5^ꕰ5 5^ꕰ5 5^ꕰ=5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ5 5^ꕰ 5^ꕰ 5^ꕰUU=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ=5 5^ꕰ  =5 5^ꕰ=5 5^ꕰ=5 5^ꕰ&&5 5^ꕰ&&=5 5^ꕰ665 5^ꕰBB=5 5^ꕰcc 5^ꕰDD=5 5^FF 5^NNo 5^[[c 5^vve 5^--g 5^ggi 5^ook 5^wwm 5^~~u 5^M 5 5 5  5 5X 5 5 5  5 5 JM5iJ oJ) 555'5575  5_JM5gJ 5l_ 5^ 5 B5 5B5 B5 5B5B5^ 5C55  5˰H55 5^˰H55˯ 5 5 o 5   5H55 5^ H555oJ D\\ 5 '5Y55\ Y55 5 H55 555 54 553 H55 5 5  5ѯ 5B5 5B55 H5E 5 5H E 55 54 5 5 5 553 H55 5棯 5 H5H5E  5Mh 5 555  웯h 55575 5hh 5^ '5U555  쎯 5^o 5 5 5B55  5 5쎯o 45553U45>53m45z53z 5 5y 5 5 o5" '55 5 5 5^ '575  '575 5555 5 5 zz55 555'55 5曯 5 5 X555 55 5 5 500 5 '5U555  5 5쎯0 5UŰ 5 5  5 웯 5555 5 5AA5J55oJo55J 5^A 5o55J 5^G 5 5 5B55 5RG 45454 553Ҡ553R5553 4 573 '5 5  ` 5뻯R555J/ 5^R f55555 5 5 5uf55Jo55Jo5J 5^uҫҫ 5^uҧҧ 5^uүү 5^uҳҳҿ 5^uҶҶҿ 5^uҹҹ 5^uҼҼ 5^5J 5^5J 5B5 5^Ѱ=ް 55Jo 5^ڰ zz55  45'5553U5 5曯ڰ 5 5  5Mzz555 55 5曯 5 '55 5 5h >5 5>55 5꼯Ѱ 5 5hѰ 55>55 5 5 5ǯU 5B55Uѯ 5 5B55 U5 U5 ꮯ 5B5 5 Gҳ  5  ҳ R 5  ҳ R!=!거 J555J5o 5^q h55걯h 5 ,5 T5M_5 5^B5^ 5 5B55Y 5 5YU 5 5^ '5Y55 5Y55 5 55 5 5ꮯ 5Y 5 5Y꫰ 5Y꫰ 5 5Yꮰ '5Y55 5Yꮰ 5 5Y Y55 5Y  '575 5Y  5^  5 55B5^  5^cJU^^ 55J$ v55 5 5Y 5 5扯" 5 H55 H " 5 E"* 5 ^** 5 55  7 5 777 5 55  H 45^4553Y534573'5 5 5YN 4574553Y53'5 5 5YY 457^53Y5 5 5Yn5oJ 5 55 5Ny 5 55 5H놰 5 55 5Y따o5J5J 5oJo55J 5^c H55 5 5 5 5"띰 y55 5 5 5 5"몰 55 5 5 5 5"D "4545 5  5 5553J5 53Y5  5 5 55 '55E55 E 5'EEE 5^HH55J55 5H55 5 5 5 H5E 5"  5 5 H5E 5" Y5 555 5"뻰 555J 5^뻰55J 5oJ뻯뿰 5B5555Jo 5^뿰 5o55555 5 5 5 5曯5 5 555oJo^ 5B55 5 5 5^HH555 5555 5 5 55555 5 5 5曯Ȱ 5 55 5 5^Ȱ 5oJ55J 555555 5  5 5'575  5^U5J&o 5^ڰo5J&o 5^4cJ+^5J* 5^ 5 5:5J.o 5^@o5J.o 5^\EE 55^\HH555 H55 55 5棯\ 5B5樯HE 5ꛯ꣰ꛯ꛰ 5h5 5ѰHHE5H55H55H5EH5H5H5H5H!5H%5H)5HE HHHH)HH-E 045553HHH!H%H)E 50HH55H55HEEH5H5H5H!EH5H5HCE 5^HH5EH5EH5H5HCE HHHHCHGHKHHNHHE 500 5 5HE Q5 4 5  55 53 5 5 U 5E 555 5555 5  5  5ꮯ 5  55 5 5  5 5 5 5 5 5 5 55 5 5˯ٰH55H5E 5555 5ٰ <5<U<5C75 5ٯٰ^  5B55B5 5^  5B5 5^ 5B5 5 5=5 5^ 5B55 5^ 5B5 Z5 5 Ѱ 5B555J o 5^Ѱ5HEJ!o 5^Y5HEJ!o 5^j5H5J!o 5^Ұ J>5555J%o 5^| J5555J%o 5^% 5 EEE 5 5^ HH55 J>55525J%o 5 5 I554 5 4 54 54 553  55U3 U553 5H5 H 5 H5E3 J 55 5 c 5曯- 5 55 55 5  5 ^9 5 55 55 5  5 7HH55 5^ݰ JE555J%o 5^İ J55525J%o 5EE 5 5^HH55H55 5 5 5B55  5Ư 5 5  5دưEE 5 5^ưHH555oJƯذEE 5 55^ذHH5555J 5oJدE R5'555 5PE 5 5  5M 5 75 5 o뻯 5^I 54545'5U5553535 5M '5U555 5 5 5PM M55  5XP 5B55 5 5 5^P '5U555 5P 5 5B55 + 5MP '5o55c55P55P5554 5 Y5'553 H 5H5H5H5E  5 c曯P o55P55545 Y5'553H5H5H5E 5 o曯U55Jo 5^m 5 5^J5Jo 5^ϰ5Jo 5^] U 555Jo 5^`55J 5:d S 555Jo 5^g W 555Jo 5^j55J 5Hn55J 5WS P55555 5PW P55555 5Pr P55555 5Pu P55555 5Px P55555 5P| P55555 5PHSS 5^HUU 5^WWW 5^WUU 5^:SS 5^:WW 5^쀰 5555 5 5쇰 5555 5 5쎰55J 5 5U앰55J 5^좰 5555555 5 5 5웰55J5쇯웰쀯쀰 5 5 5 5 5 5쀯쇰 5 5 5 5 5 5쇯쎰 5 5 5 5 5 5쎯앰 5 5 5 5앯웰 5 5 5 5 5 5웯d 5 '55쎯d 5 5^ '5U555 5گ 55'5U555 5z 5 zc h5n찰555J5 5^찰555J 5^555J 5^555J 5^55Jo 5^ 5 5 5 5 5 5찯°55J 5^ͰJo 5^촰 5 5 5 o 5 5촯촰 J95J85J6 E55 5 5Y쿰55 5555Jo^쿰55Jo 5^zeoJ' 55 5ṴEE 5^̰ HH55H55H55H55H5 5  5555 55 55 5曯߰ 555'5U555 5 5گ߰ m55 5 5 H>5H5E M454553535 ~ 5ٯ H55H55R5'55 HH55 55  555 5555+H55R5'55 5^+HH55 @ '55 5B+HH55 5 5 H5E 5 5HXE H55 55R5'55 5棯+ 5 5^B HH55H55R5'55 J 5 555Jo^B HH55H55R5'55 m 5 5 5^\ 55Jo 5^ð55J1o 5^ǰ55J1o 5^˰5 o5J1o 5^а5J2o 5^ǰ5J2o 5^԰5J2o 5^ذ5J2o 5^ܰ5J2o 5^y5J2o 5^{5J2o 5^B5J2o 5^RR5J2o 5^ 55Jo 5^ 5 H5H>5E Fٯ} 5B55 5^} '55 5} 5B55 555555 5 5 5 '5454553U5C3U5 5 '5454553U53U5 5 '55U 5B5 5^ 5B55 55>55 5 5} 5555 5zz55 5B5 5B55 }5'55 5曯zz55 5 5zz 5 5 5B5^ 5 5z^ zzzz 5z55z555J 5oJo^ J' U4553m5 5 5 554553z55 5 5  5 55  55555C75 5" 5^ J55z55  55 55555555 5棯 5 55^ 5 '55 5 5 5 54555 '553H>55 5 5555 5 5į,JI5JK^1 5 5JG5oJ 455535o5"'BB5 5JGo^'GG51'LL55 5 55 XS5 ^ꮯ'pp55 555JJ^'ww5 55JK^'ww 5'zz55 555JL^ 55 '55 5 5 5 5 5  5X 55 5555  555 U54 553 55  5 55^ 55 55 5 5555  5¯^ 5 5 5 555 55555 5 5  5^ 5 5 55 m555J0o 5^° 5B55 5 5555 5^° 555 55 55  5555  5  5 5¯° 55555 55555 5  5¯° 55555 55555  5°5 5 5 55^° 5 55^°EE^ 5 55^° HH555 55 55  5555  5  5 5°B555 5^ +555555 5 5¯+ U 555Jo5 U55 5 5 5 5ү+ 5 5 5^Ұ^ 5 55^Ұ<<^^ 5 55^<55555<<55 5^BHH55 5 5 5^ 5 E U55U55 Y55 5 5¯!55 5 55 5 5!LL555 5 5Q555 Xd5! 5 5^w 5^{{5 55^5 55^C 5^5 5s5^5 5so5^5 55^5 5o5^??5 5<5^? 5B5 5^{Jo 5^5J 5^B5^5J*5 5^ 5 5  5MJ)o 5^oJ)o 5^o5J*5 5^ 5 5  5MJ+^侮oJ+^ﭰ5J-5 5^ﭰ 5 5  5Mᄚo5J-5 5^ᄚ 5 5  5MﴰJ,o 5^ưoJ,o 5^ '55555555 5  5 '55555555 5  5  5M 5 5 5 5 5J) 5  5  5  5 '5 55 5 5 5 5! " 54 5 5 " 54 5 5X454553353m45 53m 553 4 5  5 53  553 4 5  5 53  55 5! 55 5Ұ 5555 5 B555 5T HH55 5 5J M 5oJ H55 75 5 5b 5^b5 55^b 5>5  5 z5 P4 5 '553 4 5 4 5  4 5 4 5453<3 53 3   53 5 5 5zEE 5^zHH55G555z 5 5T 555 5 5TEEE 5^HH55G555H55U55B 5 5 4553G5>5 5 5"ίJJ) Y555  5PoJ) Y5455  5d 5 5Pl 4535 5Pu <5 5P 453<5 5P^ 5 PW 5 5P 5 5PT 5555'5U555 5 5 $55  54 5>$EE 55^$ 5 5 HRH[HdHjE 5>uH555 5^u 5 H5HHRH[E 5> 5 5 '55 ҿ Ҷ 5f 5 J5o55 ҿ ҳ 5f 5 5 '55  Ҽ 5f 5 J5o55  ҹ 5f 5 5 '5 J5o55  ҧ 5 5f 5 5 '5 J5o55  ҫ 5 5f 5 5 J5o55  ү 5 5f 55555 5 5  54EE 5 HjH[E E>4 HH55 5 5 5 5 5  5  5  5¯°GG55H55  5 5 5 '5  54 555553 5H5 5   5  54° GG55 55 5ݯ°   JH55R5'5 55J5ݯ°   JH5 5 5 \55 '5  555555°  5H55  5 5 5  545'5 5 555553H5H5 5   5  54°   5 '5 5 5 555555  5  5 5°   5 55 5ݯ° RR5'55 55 5ݯ°  H55 Eݯ°  55  5 5 5 '5  54 555553 H5 5   5 54°  55 u 5 5 '5  5 55555   5  5 54° !! 55 u 5 5 '5  5 55555   5  5 54°$$H&55 ݯ° $$ 55 u& 5 5 '5  54 555553 5   5 54° ((5 55 5ݯ° 5 H5 H/ H6 H< HjE 5>ϰ HH5H555 '5  5555  5  54ϰHH5E 5 55^ϰ 5 5 H?H[HBHEE 5> HH5H555 '5  5555  5  54 HHO5 55 '5u555  5 54HH5E 5 55^ 5 5 HQH[HBHTE 5> 555J 5 HY HR H5 HB H` Hh Hm H5E  5 5> x 55  5555555 5  5  54 5 '5  55 555553 H5 H 5E 5 5  5  5  54 HH55H5 5 5H55H5 55^ HH55 5 5H555555HH55 5 5H55555 5 5^xHH55xx55=5 555J ^x555 555J ^x 5^x 5^x&& 5^xOO 55J ^x 55J ^xEE 5^ݰHH5 5 5 '5 4 54 553 4 555553 H4 5 53 5 5 5 53 4 555553 H4 5 53 555  5  5  5ݰ HH55 5 '5 4 5555553 H4 553 5555  5ݰ HH55 5 '5 4 5555553 H4 553 555  5ݰ HH55J 5 '5  54 555553 55   5 54ݰ HHO55J 5 '5  54 555553 55   5 54ݰ HH55 '5 >4 54 553 H5 H HjE3 H55ݰ 5 5 5^  5 5^GG=5 5^RR5R 5^((5( 5^!! 5^ 5^   5^$$ 5^HH555 5 5 55 5J 5 5J 5  5455 5 555553H5H5H5E  5 5  54HH5 55 5 55 5J 5 5J 5 H5H5E  5 5 5 555555ѯ HH55J 5J 5 '5  54 555553 55   5  54 HHO55J 5J 5 '5  54 555553 55   5  54 5 5 5^>J)J, 555575  5 B5 55555'55  5 5^>J) 75575  57J J55555'55 5HH55 R5'555  5WEE 5^ '55g5 m HH55 WJ5o5'5555 5REE 5^R  5 '555 5R  55RGG555RRR5'555R ((55 H5E 5 5HE H55 H5E 5555 5үRް 5E5'5U55U555  5 5wްHH5E ҔE 5^w 55B5^w5J 5Jww5 55'555w5555w5JwH55 5JwH!55JwwH55JwwH55Jww  H55 5JwwH 55JwwH55JwwH$55JwwHO55JwwH&55Jww5JԯwH55(55 w5555  5w H55 55 555555  5wH55G55 '5 5 5 5 4 54 5'5w 55553 4 5U53 U 5 HE3 4 5 4 555553 5 53 U 5 H5>5  5w '5%555 5 w555  55555 56w H55 5 '5 5 5 5 5 5  5555 5Dw H55 5J 545 55553H55 5  5RH55Jww 5 5 5 5J 5 5  5 W5bW5^'575 h 5 5 55J 5 5{H55 5 5 5{ 5 5H555 5 5 5{E 5 5^HH!5 5H55^ 5 5^5J w5555 5 5 H55 5 545 w55 5  5553H5 5R5 ^5 J5J5 55^J H55 '555555E 5 5^R H55 5R5555ӯRE 5 5^԰5 ^75 ԰E5J 5 5^԰ H55 5 545 w55553H5 5R% 5 55JJ  H 5E 5 5 HE U54 553 H 5 H55  5 5  5  55B5^  5H5H5E5Jo5JJo^  '55  5 5 5 5 5 y  5  5  5" 5 5 5 5 5 5J5J 5  5  5  5  5"" H5 55J 5J 555J  5J  55J 5 5 5  5 5" 5 5E 5^ HH55G555 5 5 550HH550 H5E 5 5HE5 5 5o 5^0 5B55 5 55 5^0o 5^5NJ 5BJ 5^5J 5FJ 5^5J 5J 5^ 5^I^5J 5FJ 5^ 5^^D5NJ 5BJ 5^DI65J 5J 5^^5sJ 5wJ 5^^5{J 5J 5^I5J 5J 5^I5J 5J 5^yy 5^ 5^ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ  5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^Ӱ 5^ 5 ΰ 5  5  5  75   5 5^ 55J 55J 5^ 5 5^ư 55^ư 5 55J^ư 55J^ư 5^EE 5^HH555JEE 55J^HH55 555J5J 5HH555J 5B5 5^  5B55 55 5 Ư5 5 5 55   5B5 4 5 53 5 5 '5 <55 5ꫯ '55  G 5>55  55 '5  4 54 5 '5 53 4 5 55>53 U53 <5 5  '5 55555 5  5 55>5 *555 5曯 55J 5   5 5 HH555J  8555   5  5 555 555>5  555 5555  5  5  5  454 5 '5 55345 5353 5  5 5555555  5  5 5曯oo 4 5 J 5o 53 G 5ҳ5 4 5U 5 53 G 5Ҷ5 '5 55555555o5555 555  55555  5  5ꫯoo 4 5 J 5o 53 G 5ҹ5 4 5U 5 53 G 5Ҽ5 '5 5555o5555 555 5555  55555  5  5ꫯcc 4 5 4 5 U 5 53 J 5o 53 G 5ҫ5 454545U 5 53J 5o 53G 5ү534545U 5 53J 5o 53G 5ҧ5 '5 5555o5555 555 F5 5555 c5 5 55 555  55555  5 5ꫯ  *5555 5 5 5 5F 5TJ 5 5 5 5 5F 5J 5  5  5B55J 5 s55 m55 5454 5 '55353 4 5<53 w55 5  5Ư  '55555   *o455535  5 5 55J^ 55 J^EE 55JJ^ 55JJ^HH 55 HHHE 454 5 '55345 4 5  53 553X 553 4 545  53U53 4 545 4 5 4 5  53 3 553U53 U5  5 5棯XHH55 '5m55DXHH55 55ӯmEE 5^mHH55 m55 5EE 5^HH55 55 5ӯ* 5 55J^* 5J5oJ55J *55555 5   5  58 5B55J 58EE 55J^8 HH555J  8555   58 J 5   57 5C75  57 5^- 75 5 5^55B5 5cu5  555 m55 55cu'55  5 5^ 5 555 '5 5o555 o 5 ^^c 55 H5E 5 5HE5JB5^ 555 4 5c5 5H53 55 7 5  5Ư 555 '5 5i555 i 5 55H5 5 5Ưư 55 B5^ưo 55 B5^ư 5 55 B5B5Eưo 5 55 H5E 5 5HE5JB5Eưe 55 B5^ưg 55 B5^ưi 5 55 B5B5Eư 5 <<5CE55 հcc 55 5B5B5^հ 5^ư 555 '5 5o555 o 5Ưư 5uJ5eJ C E5 55 o 5 5cc 55 5B5^ 5^c &chU5D5 I ^h Q`'55 5Q 4J45d555355 5dd U 5Ҕ5Jo5 5^d 5 5 75 5 5u 5 5hJo 5^^uEE 5 '5l5uHH55 5 5554545753U5345l3'5u 5 lװ 5 l575 5˯װ 5^UU55 dUP45535 5d '5J4555^53{5 5 ^5  5lyy 55^   55 {yJ J45J455553{53{y  5d, 5 5 5B55 5 5M 4545534545 53'53U53U5BQYY55 5B5Q  5 '575 5Q  5 55^Q555 55 5Q555 55 5Q""555 55 5"QYd '555 5ޯd '555B55545455345 4 5 53 '53U53U5 5d '555B55545455345 4 5 53 '53U53U5 5d 5B55Qd '5s55d55 Y 5曯d X454553Uz553U5曯s H>5H55 55 555555 5 5ѯB 55 5 5 55 5 5  5B 55 5 5 55 5 5  5B^ 5^B^ 5d 5 55^ B5555 5 55 5 5 5 55 5  5  5  5ůܯŰ '5 B5555 5Ű 5 5 5 5Bܰ 5 5 5Bܰ 5 5 5 5B= 5 "" 5 5B55 5 5M" 45455345 4 5 4 5 4 5 C "553 3 E53 '53U53U5 55 5 5 5 55 5  5  5  5^ 55^ 55 5 5 5 55 5  5  5  5^^^ 55^^ 555 5 5 5 5 55 5  5  5  5  5 5 5 5 5 5 5 5 5 5 5 5555 5555  5  5  5 5ꮯ 5 55^ 555 55  555 5 5 5 5 55 5  5  5  5  5,^^ 5 5 5 5 55 55555 5 5,5 5 5 5 5 5 5 55  5  5  5  5 5 5<, 5 5 5 5 5, 5 5 5 5 5 5< 5 55555 55555  5  5  5 5ꮯYY55"  5 '575 5"  5 55^ 454545 4 5 ^ 4 5 4 5 4 5 C73 53 J3 E53 4 5 4 5 4 5 C73 53 Q3 E53454 5 4 5 X5 53 mo5 5345   535y3 h5345 4 5C3 U5345 4 5^ >53 5y3534545^34573g345454573533E5 4545 4 5 C73 533E5 5 5ꫯX 555 55 "55 5 5X 555 55 "55 5 5X ""555 55 "55 5 5"X '5E555545 C 5 5  55 5 5 4 54 553 4 5 4 54545C" 5533E53 '53 U 53 U 53z55 5X '5E555545 C 5 5  55 5 5 4 54 553 4 5 4 54545C" 5533E53 '53 U 53 U 53z55 5X 5B55 55545 C Y553z55 5 5EX '5s55X555 Y 5曯XC 75 5C 5^555 55 5 zz55 545553z55 5曯˰ 5B55 5 C5˰ '5X+55 5˰ 5^ 5W5  쀯] '55 5] 4553z55曯s '55 5s 5555'55 5 5]s 55  5X 55J55J555J 55 5555 5 5쀯55J 55 5 5 5쀯K 55 s555 5S 55 sWo555 5[SҔҔ 55^Sb U54555 5 5 55355 5j 5>5 555W5  5555 5>55 5 75 5j 5^ް5Jo5WJ55J 55oJ55J 5^ް 5^u5555JU~55 5 5Яа 555 5앯터 5 555 5J5WJ *5 555 45 553J555  5 5  5 5"*J5555Jo 5^*55J 5oJ*티 5 5 5'55555 5 5曯티 z55  5X j575 5曯 55J5WJ퓰= 5 T_홰 =u55 5 =55u55 5u _45555U5Ҕ'55J555_45535535 5 5ΰJ) u555 555 55 5HH5E5ί55ί55ίh 5 5 5'545 D C 553z55 5 5曯 5 5 5'5 45 D C 553z55 5 5曯 4575355턯 5B5^ 4575355ί 5B5^ 5575  뻯 5B5^' 454545 5 K 553U45 53m5 5345 U 5 z553U5z345U 5 z3U5z55  5 5 5575 5'^ 5 J5 h5U5Y5 5 5aݰ 5 o5>5 h5U5Y5 5 5av 55 5 555 5 5 5 5 5 o>5 5a 5 5 J>5 5aa 5B55 5  5XaH5E5Ưư 55 555 5vװ 5 5 5B55 5װHH5E 5 5^ư Y55 5ίΰ 5 5ίΰ 5 5 55J 5B 5 5 5 5 5 5H 5 5 55 5 5H55 oo55 555 5B5 5B5 56^JJ5 5 5 5B5 55 5U 5 5H5E5c5 H5E5J 5^H55 s55<555 5 5 5< N555 5 5 NҔҔ 55^N  5N555 5aa5H5E 55 5a5 55 5 ^ ^ꮯa 5 5 5Ư UU55m55z55z55 5H55H55H55H55H55^H55H55H55H55H55eJ'o 5^ 5 s 5 4545C45 4 5 4 5 4 5 4 5 C73  53 | 5 53  5 53 4 54 5 U 5 53 `53 4 5   5 53 " 54 5 53  5 53 53J~53~5 5 Cꫯ| UU55m55z55z55U 5 5 m 5 5 z55 z55  5554545 '5535 5 535 5 5 5 5曯  5 555 S 5 5EEE 5^ HH55H55 U 555Jo5 H55HH55H55 5555E5 5 5 5E 5 55^ oo 5H55H5E5^ 5oJ55J   55 5 55  55 555 5  5  5  5ŰEE 5 55^Ű HH55H5 5H5555Jo5 H5 5ůŰ 5H55H55 5ů԰ '5U555  5 E԰ 55  5M HH555 5B 5 5 5 J=5 5 5 H55 5o5 5555  5  5  5 5E 5 5^HH5555J 5 5B 5 5 5 J=5 5 5 H55  5o5 5 555 5 5m555555 5555  5  5  5  5 5 5 5 5^HH55 5B 5 5 5 J 5 5 5 5 H 5 5 J5 5 '5 U 54 5 55 55553 H5>5  5j HH55 5B 5 5 5 J 5 5 5 5 H 5 5 J 5 5 S 5 5 5J o5 H55  5 5 5 5H5E^EE 55 5 5^ HH55 5 5H5 5J5 5 5 5 J5 5 '5 U54 5 55553 H55 5  5jH555 5 5H55 5 5^ Y5  555 5 5 5 5 5 `5E '5  54 5  5H 5 "4 54 55#5 5 5 5 5 5'5; 5 5 5U5 553 J 553 Y53 HH5 5 E 5' H55 Y5 H55 5"% 5 5Y#EEE 55^# HH55J55 5H 5 5 J55 '5#555 55 5TT 55^T55J 5B555oJTT55J55Jo5oJT; HH55J55 ; 554 55553 H55 5  5;; HH55J55H55 U 555Jo5;;E 5 5^;EE 5 5 55^; 5 5 5^; 5 5 5;' 5 5H55 5B5 q55 '55 5 5' 5 5B55 5^' '5'5 5555 5  5 5' 555555 5 5 5曯 5 55^ 55J J5o 5 '5  555 555 5 5 5  5  5'  57 5 5^6657 5 5^ %%55 5 5m55^ 555 5J55m55^ 555 5J55m55^ 5B55` 5555 5 5曯 55^ 55J J5o5 '5 5555 5 5 5qEE 5^qHH55 q555 5`ԯ6 Y5 '55 5 5 6 '575 56 5 M65 5 7 hꮯ: 5B55 555 5 5@: :555 5 5棯E 5 5 E E'ް   1 N N 5^ 1  R X   l55575 5 1  5^   55 75 C5C75  5  55 55'55 5   5 5X l55^5'55 ܯ l  5555 5 5ǯ ]] 555^5 5555 5 5曯 [[ 555^  5H55H55H5E  o5J   5B55 5 5z5 5^  5B55 5 5z 5^  5z55曯 H55H5E - 055 5 -55 5H 5E  - 95 5 5 55  55 A545545I5 O 5 55m5o5 Z555 f5 k55 |5o5 5454553J45E3z553J45>53z5 53z5 53z 5 5  5 Az 5 5z 5 5 z 5 5 J4 553 z5 5 J4553z55  5454545'553z 5 53J4553z553J45E3z5 5  5  5  - >54553 5  4 5 5553 m55 5  5  5  - >54553 5  4 5 5553 m55 5  5  J55H55J55 5^  5 5 5J55z55 5^  J55z55J55z55 5^ ݰ 5 5 5J55z55 5^  ,  555 5 5 9 , z55 '5 555555 455 5   5553 - F555 ]  5ǯ , z55 5 '5  555  N55 5555 5 5曯 , 5 5 5  h 5X N 5 5 5  }oo 5 5 5 5  5 5 c5 5 5 5 5 }c5 5 5 555 o o  5  5  5  5  9 5B55 ^5 5 9 9^^ 5 5z^5^ 9 ''555  ->54 553  o  955555 5 5  5  9 UU5555  955555 5 5  5  9 '5 555555 5 [ 5ǯ 9 z55 5 '5  555  55 5555 5 5曯 9 5 5 5  5X ʰ 5 5 5 '5  o5 55 555 o 5  5  5  5 } 5 5 5B5 5B55 5     U55  4 5 5 5  4 5 5 5 I 5 5 45 5 5  5553U553  -I>54 553  3  ->54 553   5 5  5  5   5^ oo 5 5^ oo55 55  55 5 J 5o 5 555 555J 55 555 5 +54555 Fo 55555 4555  9 555553 -o>5553U55  5  5曯  J 5o 5  55 5 o5 5  \ 5 55 5  4 5 5 5  9 55 5553  - m>55>5 5 5  5 5曯 + 5 55^ + oo 5 5U55 5B 55 5 5^ + ooU55 5B 55  ->54 553    45 5553 -I>54553  5  5  5  + ooU555 U55 5 5 5  t 5 5B55 5 5 5^ t  5 5B55 5 5 5^ t 5 U55 5 5 5  \ 5 5^ \ oo U55  4 5 5553  ->54 553   5  5 5  F 555J 5 5^ F55J 5oJ 55J 55J   4 555 F 55555553  - 55 5  5  5 5 5  5 t F 55J 55J 55J 5 U 5 5 m5o 5  F 5555555  5 5  5  555J 5 5^ 55J 55J 55J  '5   55 5 45 5 5m5o5 5555 5553 - 554 5 53 5  5  5  5  } 555J 5 5^ } 55J 55J 55J 5oJ 5 U 5 5  } 5555555 5  5   UU55 5 5 5B55 5 5^  UU55 5 5 5B55 5 5^  UU55 5 '5  5 55  5 555 555  5 55555  5 5 5曯   4 5 5 5 555 5553  - 5 4 553 z55  5 5  5  5  555J 5 5^ 55J 55J 55J 5oJ 5 U 5 5   5555555 5  5  UU55 5 5 5B55 5 5^ UU55 5 5 5B55 5 5^ UU55 5 '5  5 55  5 555 555  5 55555  5 5 5曯 ð 5oJ 55oJ55J 55J  U 5 5  o555555 5  5  ð 5 5 5 5 5 5 o 5  5  5  5  5     5 5  4 555 5555553  - 5 4 553 z55  5 5 5  5  Ұ 5 5 5 5 5 5 o 5  5  5  5  5 6 6 555J 5 5^ 655J 55J 55J  '5   55 5 45 5 5 H 5 55m5o5 65555 5553 -55 5 5  5  5  5  HII 5^ H 5 5 5 X X k '55 X 5^ III 5^  k 5^  5B55 5 5 5^  5B55 5 5 5^  5^ O55J 5 5 5 5^ O 5 5^55 5555^5^ 5^ Z Y55 5 ^ p pEEE 5 5^ p HH55 -55 55H 5 5  -55 55  p5 5 555  5  5   5 5 5B55 5^ 5 5 5G 55 5B 55 5 5   55 o 5  5    55 5 5G555  5 5  45 U 53UG5  5X z55 5 5U555oJoo55J 5^ 55 5 5 U55 5 5 z55 5^ k 5  5 ѯ  55oJo 5^ ѰEE 5 5^ Ѱ HH55  555 5  55 555 5   - -5555G55 5 5B55 5  5^zzoo( 55^zzoo( 55^zzo5 55^zz55- 555J 5^  - -5 5555 355545553G45zoo3J>5z55 5 5  5   - -5 =5 5 5 55 5   - -555555 355555C555 5 5  5   - -=55G55 5 55 C54 553 G55 3 II 5 J4 5 z5>53 q5>555Jo^3  5 J4 5 z>553 q>5555Jo^CG55zooJ55z555 5^CG55zo5J55z55o5J 5 5^CG55z55J55z55o5J 5 5^C 5G55z=5J55z=5^ | 555J 5^ | 55J 55J m5o5  |5555 5 5 5Shzz55 wg55  5ww 5 55^w 5^S J55q55G55J55G5 5J5 5 h5 h5 4 54 54 553 J5 53 J553 J55  5hJJ55J55J55 5555'55JJ55J55 '55J55J55 '55 5^zz55 5z5555J 5^zz55 5z5555J ^ zz55 5z5555J 55J ^ EE 5 55^ HH55  5555 5 5Ưư  - -=55G55J55 5 5 '55 5 5  5ׯư 5 5^װ zoo 5B55 5555 5 5 5װ zo5 5B5o5J 5 5 5 5װz55o5J 5 5 5 5 J55z55J 5 5 H55 z5555J 5 5^ 5 5^ J55H55z55J 55 z555 5^ J55z55J55z555oJo 5^ 5555 555 5 55 '5Y575 5Y5 5B55 5^ '55 5. '5@555 5 5Q 55'55  5q '5U545l4553a535 5ޯq '5U555 M k쎯qw ܰ 5 HH-HrHvE棯.'5 5 ܯ.GG5 5B5 G5z.KK5 5B5 K5z.ZZ5 5B5 Z5z.5 5B5 5z.ZZ5 5B5 Z5z.55 5 5 5 5.55 5 5 5 5.5555 555 5.UU555 5555^.]]55 555U^.dd55 555S^.gg55 555W^.55 5555.5 5 5^.DD55 5\55^.""555"555.555555.555555.DD555555.%%55%55.YY5.  5 5.66565 5B5 '5555555 5Q55 555 5 555 5B 5 5 5 5 55  55555 555 555 555 5 5 55^ 5 5 5^z^ '55Yz7 5^QMM55 5 5 5 5ϯQ SS55 5 5  5 5Q WW55 5 5  5 5Q rr55 5 5  5 5Q uu55 5 5  5 5Q xx55 5 5  5 5Q ||55 5 5  5 5ϰH5EP55 5B55 5^ϰH5Em55 5B55 5^ϰH5Em55 '55 5 5ϰ H5Em55 5'5P555  5qϰ 5 EEE 5 55^HH5555@HH5E 5 55^@HH5555@ 5 E  55 5 5  54 5 5 5553 H5 H5 H 5E 5  5 5 5 5B55 5 5 5^ 5 5B55 5 5 5^ 5 '5U555 5 5 H5 H 5 H 5E '5  5 55 5  5 5 5 5  545 5 5553H5H 5 H 5 H5E 5 5  5ѯ H5 H 5E  5 55 5  54 5 5 5553 H5H 5 H5E 5 5  5ѯH55 5^&55 5 55 5 59& 5 5 ^ 599 5555 5B55 M55555 5꼯955 5555 5꼯M 5B55 5555 5 5 5įM 4553555 5 5 5įİ^55įİ75 5755^İ555 5455535 5įİ5 55J0o 5^꼰5 55J0o 5^c A55 5 5 4 5 C 55 5 t 55 753 4 5 U 53 U5 5 5 5"c B5 U5 C55555 t5575 5 5cB5 U5 C5575 5 5c 5B5^A 5 5555 5 5˯ - -I55G55J555 55B5^ - --55G55J555 55B5^ 5^t 5 5 -5555 H5E  5555C5  5 55^II 55^ 5 5G55J555 45www553G5  5 55  5"  C4545C45 C735343`55 45C45C7353> 5ꫯ" 5^H N N 5 55^Hcc 5 55^H 5 5 5 5 5  Egg EE 5 5^gHH5 5 5 5 5 5 5 5  5  5  5  5 5 5zz  - - 5 5 5 5 55  - 54 5 53  5 U55 g5555555  5  5Bz  - - 5 5 5 5 55  - 54 5 53  5 J555 g5>5555  5  5Bz 5B 5 5 5  - 5 5 5 '5J555B5455B555g45>55553H4553 ->53 -453 5  5  5  5  5z 5 55oJ g555 5555  5  5B۰ H55555555U5'575 5 5 5۰ 5^Ӱ 5^ 5 5^  - -5555 5 '55 5 5  - -55 5 5 '5 U55 5 5 5  5 5^ 5 5 %55 5"% 5 955L555 5 5˯L  - -5555 5 - 55555J o^55]   55 ] 555555  5 5  55] 5 5 5G 5 5 J5 55 5o  5 '5o k~5555 ܯ 5 5 5 5o] IG5 5J555 5^] -G5 5J555 5^] 5 5 5G 5 5 J5 55 5o] oo 5 '5 o5~5555 5 ܯ] 5 5 5  5oo -5555 5^9 H55 55555 5 5 5 5 5 55 5 5 5^ 5 5555 5 5ʰ 555555 5 5 5 5uհ  k k 5 5 '5 5555 5հ    5 55 5555 5հ ( 55  55555 o 5հ 5 5 5 5 5 5 u5 k  #55 5 '5 U5 55 5 5  5 5 5 5^ 5 u5 - '5 5555 5 5 5 5 5^ 5 u5>5( '5 m5o 5 55 555 5 5 5 5 5^  5 5 5< 5 5555 5 5< '55 5G<oo 5 5^ 5 5^ 5 5555 5 5 5u - -55=5 55 5 5 5 5^u 5 5 [z -g 5XGoo 5 -(55 -555^G  -5(55 -5(55 5^# - - k55 5 - k 55 - k 55^ ``I 5 5 o 5 o || 5 5 c 5 o I 5 5 e 5 o  5 5 g 5 o I 5 5 5 i   5 o  5 5 5 k   5 o  5 5z55 ko  5 5 5 m  5 o  5 5z55 uo  5 5 5 w  5 o  5 5z55 yo  5 5 5 5 |  5 5  5o  5 5 5 | 5  5o  5 5 5 5   5 5  5o )) 5 5 5 5   5 5  5o 3355 5 5   5 o <<55 5 5   5 o DD55 5 5   5 o LL 5 5 5 5    5  5o VV 5 5 5 5   5  5 o dd 5 5 5 5   5 5  5o rr 5 5 5 5   5 5  5o }} 5 5z55 o  5 5  5 o  5 5  5 o  5 5  5 o  5 5 5  5  5  5 5 5  5  5  m5o 5 o55 5555 5ί z5 5 m5c 5 o55 555 55  5ί  5 5 5 5   5  5 o  o5555555 5   o555555 5 ** o5555o55 5 66 o5555555 5@Q 5R m 5e 5 4 5 5 o55 5 553 H5 H4 5 H5 H4 5 H5E3 HE3 HE  5 5ί el5 5h eu5 5h@ e}5 5hΰ e5 5hǰ W555 5 5h  N N 55^ cc 55^  5  5 5  5 5 '5 b55555 55  5  5  5x 5^b  N N '5 o N555555     5쎯b  5 5 5 5 55 b5  U 5 U 5 o54 555553 m5 5  5  5  5ꮯb 5^o cc 55555J #^o  N N 55J 5J 5J  5o  5 5 5 5 5 5o  5 5 5 5 5 5 H5 H5 H5 H5E 5  w w 5 C5 5ѯͰ 5 5  웯 X 5 5  쎯 5 5 555 5  5^ 5 5'55m5o555 5曯 5 5o5 5曯 JJ55z55z55  5555  쎯 5c &4550345 555 755 I54 5 Y5oo'55 J555_4553u53 5 5 5_ n5  5l nI^555 5棯7 H5H>5E g45 o4 5 w4 5 55 -4 5 J 555 g4 5J555o45J555w45J555m555m555m555_45534545454553-53g53o53w53H5H>5E3H5H>5E3 H5H>5E3 H 5 H>5E3 H5H>5E3 H5H>5E3H5H>5E - 5 5ٯ̰H555 H55ܯ̰ H5E 5ܯܰ 5 55555 J55545 C535 5 $5 555_45  5 +55  5 J 5 5 5 _4 5 753 u 53&4550345 5 5 <575 C  5Y 5隷 55I 5^Y  545`553H45E3H45E3 -z555 5~~ '55  R X~I`5 ` 5^ cc cۯ  N N  Nۯ  ۯ  c+ H NHH HE '5555 5 5˯ 5 N  45555'545^4 5 553 h553  5553k  5qܰ 5 5H55H55H5E  55 5 '5 U545 5 5  54 5 5 5 553 H5 53HHHCE 5  5 5棯 5 NoJ) 5555 5 5J) 5"5'555 5" 55^"5JB5 5^ J) 5455'555 54ҔҔ 55^455 75 5E455 55 55 75 5ޯ4 '5E455753[5 5Z4 5 5 75 5 5IZ555ZI "555 555 5 5 5sEHH5E5E55E55E55E55ECC5 55CE5 55E5 55گE RR5555 454 5^535H NHE3 Q5555 5 5RE I5575 5ɰ 5^ 55 5ɯ 5 5'55  5 5쎯 5^ 55 55__4545^^53z535 5ɯ& 2575 5ɯ&^2 5` 5554545^ '553a534573Y5 o뻯 J) _4555 s 5 _4 553 z4 5 B 53 Q53[45 B53Q5 5 5s a55  55 &555 5 5=a5 555^a55 5555^a5^ 5^ 555 5rr 5 5 555 5 5"5 55555 5 5˯HH55 5H555^棯 5 H5HHHHHHE  N ̯ 455 \553H45H45 H4 5 H5 H4 5 H4 5 H5 H4 5 H5E3 H H  H H- H H H! H H H H HE3 H H  H H- HN Hv H H HX H HN H H HC H HK H H H H HE3 H H H HE3 H  H HX H- H H! H H HX H HX H- HE3H HHXH-HH!HHH!HKHHHQH0HTHHHH HHXHHH!HHvHH!HKHHHQH0HTHE3HHXH-HH!HHHHHHHKHGHHH)HHHE 5 5 5 M k 쀯۰  N5 5  N5 5 5   5 ` 5 5&հ 5  Nկհ 5 կհ 5  ʯʰ 5  Nʯʰ 5 ʯʰ 5  N  ʯʰ 5 5 5 5ʯʰ h5 4 5^4 5 h 553 55553   X H4 5 H4 5 H4 5E3 53 '553 5  5 5ϰ 55 4 5 5 /55 55 5  5J 5 55 4 5 C53 U5 53 H5 H5E  5 5/5 H5H45E3HHE 55 5/ 5^Ͱ 5  +Ͱ 5   C Hʯ 5  N kʯa 5  N ʯ 5 n\ 5 \ 455\5553H5H45H5E3HE 5 5 5u 5 5 '55 5 5ꫯu 5 5^` 5 555 5 7 5 555 5 7 555 5 5uh 5 t 5 k 5 k`t 5 t` 5 `z 5 z` 5 ` 5 55 5 7ٯ 5^& 5 && 5 55   5웯6 5 5  =웯x 5 5'55   5쎯xoo '55  R Xxii 5^ '5   55  5.  5 @55 c 5N. 5 $B5 5B5 B5 5B5 B5 5B5 ]B5 <5<`C5dz J45z553z55 U 54 5 r4 5553 H 5 H4 5 H5H45 H5H45 H5H45 H5H45E3HHHHE3HHHE3HHE3HHHE3 H H H HE3 HyE 5  5 '5z5 4 5 @ 5 U5 No 5 < 5 < <5 < <5 < 5 < C53 4 53 U5  5 '5 No 5 @ 55  5U 5 575 5˯U 5^d 5B55 5 5 5^d U5U5"54 5 5 5 553 4 5 L 55553  55 5棯L 5 55 U55 U55 5ꫯL 5 55 U55 U55 5ꫯL 5 5^5 so55Y555 5 5 X@ 453?5 5I '555  R 5 XI 5 $$5 5@CC X595DCCF5C5 5<< 5CC55C5  5 5 5ίΰ 5 R55  B쎯ް 5 m5o555  쎯 5 5  쎯 5 5B55 R5 X 55 *55 '5 U555 5  5뻯 5oJo 55*55.k555  B 5 5쇯4 5555  B 웯I 5  B 웯\ R555555  B 5 5쎯h 55 5y 55 5 55 5\ 55 5\ 45^53454573>53>5c5 5 5h55 5B55 5V55 5 5 5 5\55 5B55 555 5 5 5 5\ 55 5B55 555 5 5 5 5\, 5G55 5B55 5h, 555U 5p55 5B55 5yU 555N 55'545534545 4 53 ~353  = 5쎯N 5^ 5 554cc 5^ 5 5  5 m 55 5 I  5 .55 55  5  5 5 55 55  5  5 5 5 5 5  555h }} 5 5}5 5 5 5 5 55  5  555h || 5|55h  5 5 5 5,  5 5 5 5,  555  555  5555h  5 555 33 535h << 5 DD 5 VV 5 5 5 5 5 dd 5d555h rr 5r55 )) 5)55  5 5 5 5 5  5 5 55 55  5 `` 5`55y  555y  5 5 5 5U  555y  555   5 5 5555 ** 5 5 5555m5555 5yooJ5555 5yccq5555 5yee5555 5ygg 5555^ii 5555 5ykk 555^mm 555^uu$ 5^ww 5-S5^yy 5-W5^|| 5-45^ 5-u5^ 5-]5^ 5-75^ 5:55^ 5:55^ 5:F55^ 5:O55^ 5:%55^ 5H55^ 5P55^ 5[55^a 5^l 5^{ 5^ 5^ 5^ 555^ 555^ 555^  55J ^** 55J ^66 55J ^ڰ m5555 5Ȱ 5^Ȱoo 5^Ȱcc 5^Ȱee 5^Ȱgg 5^Ȱii 5^Ȱkk 5^Ȱmm 5^HBinProlog3.45/bin/bp345.zip100644 764 764 2166312 5764572036 14540 0ustar javierjavierPK PC/PK  PC/DOS32/PKp"ڵqtPC/DOS32/MAKEFILE,tHMWP Vp ruTp q VO,IUpwV043P((JM.QHI-VH/RK//V03TJ/N*KH^PKY_PC/DOS32/DOSBP.LK1suUH/N*rQH+(OI*)+sdJjRi:\fg楂i9L @~ f\0]yxPKP:EPC/DOS32/DOSBP.MK+(JM.QRH))HI/N*KHU utRK)MIESmPK+ PC/DOS32/DOSBP.MK1j0yvQ@ڬtC64c |cKJՖY=%@Q c:RX.R :oc^'XIA,`z}:`<2^at3.xgrlgi.4Ɩ`ÕR-Ķ,7}n2Υ)TKsޛ&,~Zqܑh@^MhAɝ6|!6#;P+|-Rtgt.47~5ʑn)vJn,6;AY֒xy'T[ lyl^PMx+nv6{܅m;n ^4`E:G9k#l\;H㽴ݮHwk 0OCO,|k-]"5VAjIT)*UbR$ej8X'XZhi p㸸˙VýY`ŊzPK8T*6 PC/DOS32/DOSBP.TGT]o0O WԍISEԩ٪vZvKMׯ1IewZTpr~'ǛZbXwY^uӇ l^0vEO}"ҹ-uME{a}3ݰݿ$[5me5N?(@\rx(WF&W.)4`f>G {as.U`~l7`0V?|\Z$ZB A'fʣ.ߦ5]G!, GdA$="raJ3b]V}Qiet Lbycpu{M+09Y󮬞ajz $999HQFev5h\1 :2, zuۏU9"J{_5>@IKa> xT*m/ɇ~ YaN2RT=Nrp 4^3^6/IVCpdϱimSe'43铙ۙQWց[Vl\6ͬi<<4g;i$E<;>ږvs'svP7:qOS[}Gg(.la;'d>Cr'g' 9rVVS_Xü?(bQ+Q#C ֩4#@TN.Y4p|Ч8LAPP!Cm~@(ƎQC[m bP+fHc;VC' [C@+"s)Xl,-bRBPK~WPC/DOS32/DOSBP.WPJu 1DdY HhD́x63{3KGK߇X:&O4jpA "@a3̶K$ nsFmC%}L$ Z-k=$!B0I `$G6-OPK  PC/WINDOWS/PK Hp,#cnnPC/WINDOWS/MAKEFILEit: @echo "THIS DIRECTORY CONTAINS Watcom C/C++ 10.0 project files for Windows 3.1" bp.exe: wmake -f bp.mk PK؝,^%PC/WINDOWS/BP.CBRe; ;xYh ,kaaܮݛӶ*m]‡Xj+*yr,BΈnz,8b0f|t `@`yPKH!0cPC/WINDOWS/BP.DBR\ ŕݝY\`ݰYVD.')PLDTD=O_4^0 Exb.ƯDͽWUS] {ޫW^}4kY0/H(*(C99:uFig福?+JjR@;OjnH4&f _wZ݉Mdp#(5QIU乪VQ vTډZ?YeJUuuur0}4w{bBތlA՟Z lکX 4lp54HXZ&PQwr}`.}A|@\΢ז zK>LRQʓI0 e/Xtɜ]UtI:3ap}y.owiI pֲ9:w/wi0Ռu9h(yϴ\Cx b9K˽ޢ sL+'/z@ktj2ReRpe{<<7B2 +gZe bl֘WVмP!5iGutng(g) 4ӢP) :% -P$xH5Jz 1NcMB5.Bk3~ '3jw-:hueg%-8"$.>,0" oЇ.T@l|%q)ϓe]Lx?5 Ek7&˿fEWEȚk"V*ڮu ʽ{Ney;bppQĢōLAszx50ØaeT;fͼ .KUۮ*Lɖ,=lJ5@$һ5-I @$Rp;v&$^ӣ Ճ >LGPL E1UZui=eAc2T a% sw (2'x M\$Tka*Ӳ ]dK3iOqB`zj Z^л47]ݚɋ<5/ 0ԧy%^%P=UI /8v44Ba5'GC _TpUv=x[AC(mPÀo0P&Dm[+9y M H}1i0 a}@G6W{"& 9@D;`,nk%AL+WF:72x"4>BV`1fcЇ\ed ע<gN0n1u{nc¬[ZXZtjH[]OXb+5fҸal(fJ۬t4$OGC$5|HAz:F΅m vvA. :!- [;23˲)됢24 /ʖ%тst`0c5>a]PFDζaj_=}]faF LX]rXsXDJ) y{e޾(Aob-vZ}T?O. <+StbOJcbR0Bl +$D% /<_1ã1E}#>'cP=*ajOV+tdkh8q 0F[ۺ&[;QmwN-?:ԬP4׵u/FEuĆ#,: K -̇=JbAV3%8 LУӆPM+ 8"8 询VJE `I[{cHjTĴ4Ry/TѰ6-ijn˨]]d$]5!'[d43/d\]upW y["÷LyŦPtmDm-l /qCr7q%ycaYY}c_mB,Yp⪔ +YkdƓwm;w͕?7jB=ɳQz!]SCӞKnwdgL,sEeʺ)2(? N {,rga@BKpLF  cKsbo! w``O ŁLڞIz{~{RMFcxԪt_?^f.?KZ&3fp?V̲o1'44iDZ9cE{u#!p^ȸe X #A,iFI4v\r噖8||ߜb x?nKVΐmocO9I/E{ͧkxGU~[6 vnJN?#Ȃhђh{?_ȹss ^ rt'H%Ybbp=q2ouBaG+φrِsjnW.q]ihS-"i\;y6e[{kDr%Ͳ])ctPuۂ99vS t1 $H`QBF͛EI-`*$Ir1_5&E3RKRԓ펠蠬2 fN[$ !2pp-w@C} :״LO*m@_PMO:;Au`%a O"{kSLҍ,_?e(M$hIljGO]g\jPromglwK Mp%+#˻c4mdUWau< *V:ȱi j ;Ӿ[z[RDŽ|}NKl\K^+rc:%k+d%&.uyQ#"Ϫ}.N:g_u#h 4MSje`Wt @KK Kl\]CE=;蘨komx#VK+U#&N{+Ā=Ak:ٳ֕ ;憔;pKMty bbNu1mJl` 1p51"Q&$et޺Tn`фYø eo_ۀbƯD7#XMk)8MR3] >m@vIG QE3Qa;d@3@ڐV'ꋙa^DpCkiuVX3d,xN@ >aސZ+[!9vťNi viBm~6`1M-͕ HU⾧`N"Eq?ư]OOԒkT}8WF^Cy.'/od+7gOUqOYj#nfHr42 ?!r#a?rnߑBj>\Zbg[bW۳>)]3 ;˒1ͺ.кSG5ϤXKC8[j7W&fñ6g2*^b =duZfٯ%/p4+)6&DY \jѧB~X@;;W0/؏ene2}pc̩B]1s<*O1ZV6CsC,z5aw/٩s:& `3``MFEw FMѿ3ԸɂVZaz JЌ<թ+k *;Ę.tFͽcxm{vs7H=qV,fč%EyR=R2JRTuz&K"0="a^:.vZ?MkF0[@ (r 4Aӄ kBl]9NٱX)*=K^QdJ.ɹ g٢7t,oMƝtwhl^|b 71a|;؅CȰ=q5l̰[cTܲrc|% yo-l( ef+d<3Y`묟w-g, ۈe?%ڹ0J>uq LBcb!0;ؖ\!>h<ƶFG*~dԗ ;OVI3=LDWQe`2H8KJGΘ)'7kl0k_`aRa5 ق#_eg}J>7ΚF>#'{4!mLDƏ EϥLD)G"Rq^2ޓ0alcd!_ ?_!1%(9,swm5~C|~ 5i&<&bS?>?1<B#`EkA7`tU%(DbZ7K=ATY;!SſׅW-ۭ7H>IԷ3xm }7Ya6^Ā}MvoJšʺX8MVƔIjCZ_#/Cc֑`< +&1+\6?āD"蕎ul\/̳eyByѶ7lՔ+"^)ᴣX#K.coVpqPJcEv S}%7%D0NjzeΜ$P]edHal1 'Gwe_q S 1xj؅9= 'Lz:SAOP;R/3Bw-~2f_ ^X[]lQiEq e4P4\Sꋕ-uuv~qQNabFt^ٌOf+8`};SbpQCӰ[q V7Y/`|a>~>nwSsGv7g˲8i.'t"/N>bf't|J8#[݄^kݐVEeWmX9mF{gu٧9m"D"5X!au̧-ApDa~jRvz.~+uh+x}3>>?~yi'ɯc>@F 1q qux95sX:Ss^h-n-[ @\dF[X L C%r|6vQmdɭ%@85XlztYh}KmiŖ}w@;_ b'6/^E6آ$2u!XR>ڙR6Gymi`蠉=Ez㟹(/[xE[,3P;V%iI#a[ֲ9V4Zeu\<(.ɶ|0҂fO]H[4m v팴SJe!ZdV( =^f9HOa8) Σ=z< x2:T'Rˆ+4(>^,ɡ6epqtn-W?BF? KC>1@˓[b` 4|~UM K#^#Gqd-J4Mb.D1:3an9\)J;ٯwVG=9^eM>d'FI*yas(sී\N;פ' Xm>}[\g0&so[kkj j1W/45dv3Z2uF`OV`oVDgR…cl ,*<X<,o bW 虀s&3p3 ؛ȝɝ&$c &oB=?Zx]=KkQp[,o9.Xݙ漠6gQmnNfZv+nRZ4-pb%7- 25A=krw eRZ ^) ߓɎX$:3!3137I6WMq'._'tB9uOwB^5]m!Tm ʪPns\]al"m}CX(L&+Yw -%qY_ 1wֽAMUv͢?NR|ǁ͘@^ĝ2 ΰkl`m؟Հ]Pjʼn V>Č/ ʕwmH;[o3lI,Mm2zN܉.kE*VĽ=Ѯje99I\N?Hj#p߾҃}&甾}V(yʮo-b0 ș@7< do!T^&o̒? i "F.?ffSyp<\~3\X &OmF"(̌A3-ayşgZI&my<|a 吏9}l)U)s{T>_bvd27Ü#Lۀ`KE sZ sJ;ȵصϹг>̵=e?`0s/VO m t\I5z}ҕq[@o0\JmT?hzNInN7eeƆ),/f )ח))~UqvLАCX.S/ malJKųyc(2j2=߄wodmߞb"}T0+88L)YD& "YAQ[(,:}.˅ݛQH |%.S^E%IB:FJwnjK{}4>_gѕ٩Iv:~ 7UqiDMؿfkS &0_&v!QHo7ܢA2 w;{!W|m܏X}\j&+p mļ'=YonQIdƩ#kZ˙߃Œh6uSKv.7Nڤ2Xv̙rWb/YJ6+vؓI3ԅGE-ħG5glxJph7;쀰=]CMEŲ~OC vv"ӯ~S4$~qY6rL"/{{1v+ޖ]9g#5|*3 *˖Ku"?k2yB :?m[xl4D2¡gcmOf#!Lgp_@9oeCsFКmF5jI?,@QЗEcr+)ע_o8f$zͪиOaay\x][]z5&ʪ,iM%gp}>1Ɉy070RO4 $) 7SNX+7D+i4{}Ƀp 8eܯt(/̊ p zza;&7Τȣ+y$Ng"llA[H\ d 1a#ޔ M!`Mn SYɤ矝t0j#/4`VU$ 0 +U:%U3w7=6v  l~(K!aQ5DGnG& .y:f{?9,8JAdsdwPppFP F2v׳M&M ꠕU+Wz+]pÎ42dy[|q٢J&(~_ GzJ/m<Üۦ-exiLR;.0F}T!V'ru|Y ȥq8(S q(@&gc+K%cI^`m ޡ;)9zq(tY1THQ8 bVwO1U/`~ۗ>8T<׭|k–֩ .,&G:RXei[psHT;שȉXJægo`0o^%fwROw~PZ`"U¾'e;q@(8 pf?z "z a8Ɏg ?7D ss:X_rr8ֈ5M^,!e貂Kݗ2Rkݝ>pXAM1ۑ|WBl}}L; Uj|<dǷ=)ΚwO흄:IJTmH$m*;7$:hW c_Yww\88Oe˱ ړN<ɿd0SvLAB<#.'l Ҟܽ\$w 'x>ej9yO:[f_= wVXf.D ~:-?%.k*1([de̴oeq>zDi h)Hi_%SS ן  Q\޻;% ƞYs3ip \VM 5a%6]#{e l3%K wF3n+`T]1c @=tz4O/D ک(G@7 9od֢zKD"{(\8t͛El [CVqp)U(8rN9fY""qIάSS0 *.S"5)\LIHgEü`4P: "6NnCKy\_3|yttk%&7a\/PIƧ<%WV+!opi٬J&4ޒNjivxxLE[>+x+u4PKh\PC/WINDOWS/BP.LK1suUH*rQH+(OI*)+sdJjRi:\fg楂i9L @~ f\0]yxPKr ^8APC/WINDOWS/BP.MK+(JM.QRH)).JI*KHU utRK)MIEQmPK5W PC/WINDOWS/BP.MK1]k0 bHd2It4c:Ji, P1G%|%"W:/Na'db A2M~`s9mѷhЋ P/a):A&!'+e!LWI/0b}ҹUЄ8ُ/X1#zpJGO[eD@ϻ b*h"?w }Sgʚ#)6 zйCWD:|3/:lut;7L2dƟD {Ix˽Lihw mïDi٢F4S;NW\_|#2XE$<##EH]RJ aV׀(ݤK*D# Rh3:N H&В[c=XLeXSkG)5űűRÐ?CcΠ~_<^9}O|/?)裏~_裯?3'>?%|"ߏO'?kEIF~'|wxd>3|:?_?Y&~_oAO( _OKI?/?|ߚ??||ڷß}?z~ ?OGC~w3~'G9|wʯ~?w|*?ʯ3_|~5~?O#a ?ߛw;V7O_O9ww7k}.|*?ȯ|?|m߅O1n~;__O/ݻ?7k|*?̯)񃿧g~{y_ca/Əl oIozL5> <~?OW}M+Oկį'{?OOA(~O[.__?Sf`7D7_~!o3?o~oyO~_/f|c_/_#/ '~9wG'ߕoH?5W| ߔ/ƿ>)-ݗOVo|[ɯ?'U |i}6 |S:_//_g}ۉ?͟a1V+#_/g_z?ϟ}.~'?+]gm[Id|"_̗o%~?ίd~"?wv|"_'\|[?__'ÿ$>?ϟOG~o7kUn&gd>_OȟD(>~\]:g?>}w'~9{|*1_/E&#N_qY~KZ~"?/E>7~?ğ@Ew;F|yw#~;|҅O|Y4 ??9/~;/{ÿ{>OK/g|s>noF~5??>;}>˿k/G}t }?w;9S>|>>n)?7&k~ƏG~T|nчORG0__~G||C'_>?^~ߺ`uZ?gCm AϏG~+ֻN_?g?׿M>y_/}NOw9) 1!珱lO|Is_/>=}|}L{Q$>o{~G/9_kчço2Gӧ{-Fߋo_SLV>w5,~ 3)_̿9Вpl,L x^s;+ 3#/ OztiQSQR]gj()HI 8{s0_sS`gceafbdœ-w5odœ-wnTd$WknTd$Dξ9XY@Hs\;'=gxNÍj-%9) 1!3ov6VfkԿ9XYxAG˝՚9Iσ; 7j*J r2RbW5%9) 1!sov6Vf&B;pl,N32Iσlg3O֒pl,L x^s;+ 3#/%%!&"$Կ9XYxZg7Vf&F^ZOztiQ_/}xs0312pl,L xNÍj?O˓-wnTd$DW;Spl,L\s0312Iσ; 75œ-wnTd$DWk*J r2Rk?wfgceafbd?hXYxAG˝5G-=:Z4ܨ()HI 8-O-9) 1!pտ9XYxAG˝5ګ'=:Z4ܨ()HI ^d$D{0312ol,L xNÍj-wnTd$Df)S`gceafbdul,L xNÍjUσ; 7j*J r2Rb"Bk '#%!&"$s܃Ozά,L xNÍj; 7j*J r2Rb"BNo-) 1!:0312Iσ; 7j*JW:Z4ܨ()HI 8{_s9) 1!}=x'=:Z4ܨ()ȯ_jip '#%!&"$4N$D7;+ 3#/W'=:Z4ܨ()ȯ^uiQSQRpz3Rb"BNik{Iσ33#/7ƿ/3tiQSQRp_Ւpl,L ֙OztiQS]_NÍ^d$D7;+ 3#5W`gceafbdv'=:Z4ܨg3Z4ܨ()HI 8?gZ2Rb"BNϫungceafbdœ-wnTWhyrFMEIANFJBLDHid$D7;+ 3#u`gceafbdœ-wnTמ^g4ܨ()HI 8A$D7;+ 3#/W'=:Z4ܨ()/jhp '#%!&"$4An2Rb"BNϫungceafbdœ-wnTמ^3j*J r2Rb"B?dVKBLDHs0312Ij_YxAG˝5%ZZ4ܨ()HI 8zsفS`gceafbdœjXYxAG˝5%ŵWkkgd$D=8HS`gceafbdœ՚0312Iσ; 7j*J rSZ4ܨ()HI 8ysځS`gceafbdœ:0312Iσ; 7j*J kO^ܯ}p_JǴD7;+ 3#/gcYIσ; 7j*J r2Rb"«ZJ r2Rb"BNgl,LN˩s0312Iσ; 5sœ-wnTd$DWkj*J r2Rb"BNl,Lv Կ9XYfdœ~g?3x.86Xeܷ҆N8` Vh(r"4RH"8b蔰,CB C':І("! QDBaJWxnv`( ,2H#$#N r9dA)$@1tm"V p  /( ?aJ/ H :!aY6 H!∡hCD~n {aAA^x N8` Vh(WaJ/ H :!aY6 H!∡hCD~GҮڤy p  ϳ( ,v`( ,2H#$#NtM²|iDqЉ!B"?|7\6HXD~nv`Q@N;6XD" ! H!∡h,A)$@1tm"-aiWQD KDE!>x.86XIXڕaUl2H#$#N", H :с6DAA^ {5aц("! p  %,%,\p;lBCECB ,S@YdF I$G @ ]u QDBaJ/7\p;lBCI{ہH :с2B C':І("! ]NXDAA^x N8` Vh(_WN8` Vh(r"4RH"8b蔰,CB C':І("! ]!B"?|7\p;lBC/ pP"|Qڴl#Nt %l3H!∡hCD~n /x.86XECaOXXD" ! H!∡hC K<)$@1tm" pHXUaJ,_D9dxv`( ,2ҦB ĥc;Bɏ1qЉ!B"?|7\p8a^x N8` Vh(lEi`sJ/ H :с6DAHW C':І("! p v>x.86XIJEC%^ Vh(r"i$@1tJ{0iC01tm" p(aaJ,WD9dA)$a(r"4RH"8bDE!%,%G @ /x.86X2ECBRk(r"4RHJF1tm""i{?>x.86XDExhnv`( ,2H#$#&aY H :с6DAAOک̛<>x.86XtiCs '+4_D9dA)$@1tC²lB C':І("! QDBaJWDnڀ N8` Vh(r"4RH"8b蔰,CB C':І("!+TJ{?y/x.86XDyp;lBCi ہr"4 +4_D9dA)$@1tm"%$#Nt QDB k%,/x.86XIJEC6`( ,2H#$#Nt QDĕDqЉ!B"?|7\p!TҮ/x.io״h(r"4RH"m/ H :с6DAAC':І("! p *a-l3 pPb" ! H!4@ECB C':І("!%8bDE!>x.86ivio( ,2H#$t( ,2H#$#Nt QDBᓰohCD~nv`&aKnv`( ,2H#$D" ! H!∡hCD~ KhCD~nv`v*aiW^x N8`M"4RH"8b(',r"4RH"8bDE!>x%E /xᑰQDBaJWx N8` Vh(r"4RH"8b蔰,CB C':І("!+aiWhCD~nv`q aJҦ@ C':{mFiDqЉ!B"?|+aAA^x N8` Vh(Wwp;lBCECB C':$,fA)$@1tm"HXU /x.86 { p  %+ ě%,4_D9dA)$@1tm"#Nt QDB%,*?|7\p;lBCe( ,2H#m %Q@Yd6$#Nt ҆C @ /x.86X;p'+4_D9dA)$@\%|EiDqЉ!B"?|@ /,-_MXf\%# +j7{ A/9e*  ?d~܁&,ey*x6c"N0G;$G WqR Dŝ"a9f㶤؈F\a?;dhWiDqЉ!B"?|7\vAA?u,dQ܍p+X |cN ?KŇ0uxo/@ ߘS'X#!<}F0v;؁u%$q'_q#֢ W21gO .L4z8 M0?Vi hW8m Ǘiϫq6?Cޢuߵi_.>QN O/؄p{'3I>#c){LG@/<})n}:ox?:|-4V`&>rĴב H'-FE3a֏Kxou13t܆+ǖk7Ô`>`.r [ZCyЍ! 1~Ľem[<Ň0uy8'+LƵeR,9‚ "Fc0ƳxHxlm, /`VJ\dZ;}90!¼ǑĄoP6L//0~|[e>sp&|a;>'܃#XOh.R7n#{p;6a.>m xi5"_A- |`!.?o#GvA--祿P~&LLxx؁6lC-.X/^Чm!.\5P]x {H H{4@c?^X1 je_Q>?؈e0l+V+3q+u ?P~\_nHŅיv|~;тk6`8 um>A?.i?D'nv ,-]H0bxx؁6lC-.p؄nfxel;.s`L+ At7G|}"$p},C.elrѫFQ<}"m>E \qXiЍ#|x"[p#nZGƯ2B YZ~f#!ٰH=Q쿙-S07}[YSX"O> J(b1dч zIt!GÈ!tt`ڰ Q d90bxx؁6lC-.p؄nfx,%p"80v̄Myṅ 164:hD|C(b1dч zIt!Gd9<,A/8 >dA+` gIfя,g?ǽ`5X37G?K?Ș( rlXO*|Sa0/|΢00}^w㳸CX湘rÛ|G$xy͸IL!0e1 UgЇ Y|#( %iy<~G"ӞC>܀W>N!.$x1|6OXҦfa2i8n0NgyI_&|$.ϡ&;>Zw:8[Yp6Sϡd Y -?|ďΥ#5;4 ~6}6j4?#؊dMK Å3Q x=8| 0x>" snga\~0VvmLg~XT8DMȺ35}Tz'j-GEc2j, mǼCdBJ oՆ=3 }@ZX1{fO5{&{B*v߅5l$qh$wJL/ɗ4Kzw'7e3$13r*[Sa `r;l(ZMhtg݋N?ByoEffoU7|<3.c7(B'0kQ܄rlߒB__[ԟWNME80ר}xBqoH6RV*eU,ƢʇfOݜH[Ȱc+%3kv*%7I:qUz>43,=\vOa2h4 %ܡXƙƧ{jrAgl7Sv^GQ3b,\!6w晋ʌY}|)}|Sҗ5rcyJ jw߯>>36N_K{/^@֟:1]jiX9Xn1Vk?jɅY?͜9QՒnܸt=kV\ҟ.:YOj:Z,ܸQ4 sY]?BƶUv baUkǺM|Vpxr1ݦ3.6Y-hk#N f[ļwh۳Khr!pJLo;hJ=;e=vd1Yz`,ݳS֑?Q5=9ljw3`>K &J7fH0kgW@h%a?_L g̖yj؟!=<%kZҪ 2dD( zSq/vRL#JQb `l4_0.jrRX]O06WJ)1jx8!<)2!c+pXYLTXz3K+Jч6z~Znmuz=z1]A?muvIdE5Z뾺E~wʦ'I)חJ5U)Ԅjfu`H,DwTrR2 $5;e%X]b~ ^PsתC"Bn$ \pg?Io_|߾D7#򱕣'#G{ c$KeZEz;RF[/cUz8ެu$N2'}I |K@~ҫ%p:N2qx^n\=I㓛}e$n&E.Q#a%wq%K2tF4=PڙS 5ٕS ݏܢ JaLV8xQ[5}Yt>g`4#/T cZhKSEnMx!md=WQ;=%|1KeS Gu~e=/:\үYR66H~qzz3[h!#[3*_p*Sm MMB)ϐ:e}.=TP @r7^7g4 fs͜W?=vjW9fv#A,G=з 61BoB璳<ѮNH9kٯH} +崏 Ἓrbəfwɶ-oF>t 6)pq`;4>EX~Mz[5>Sbai*Gx'>1=A9w$S*./[VkEV"a0D[Wl뷿Uݞ%,_2Wkd3]Ovwk߬b&/bZқ]˵|0ƍ{M%ܽ7 IKw46 {_זm3۵Ȇ*o2ͯ_[GӯT_9?ZJC=}I=OUהS΄Ӷ{IC-UKvgvU2DSzMf6[sNvNͳژ~h|VY~Nڼ8Dvް¢VWH0up%K; s j}tw,05/XgT5Ylui|VOvBzͺEuYs)I&}3e=s b\?$bD>=j:qǦ4}PҴY:w_kh9)ZYi u K A6;>`gme0rԳc4KN0s{ߤEe{Mjɲ9Z Fo7#^\56/L5>~mw 0gҕR5u r@&\''<xoVo˻`muiˋzmt^RJ%I!uŸfHf8W} yΤҞ"MߨڴF(žk;1&s&C;}͓(:&sc#sss+HcRe_pٻ|rN۫3׌Ɇz\P5Noko2gdH-_#?C\mrx_7oڍ.:i[m̐+Ryܳ4o)s2 ]N zIRO_OYz\ghrĬ*I3-w LOgeP6l r3hN9R֜XaL/[ݍ>Np֝=Cٻ,9 ?ܦ&w8{XT_K.3ѽ645Zg Θ-kPy-5} &ʪLZ!9pHvV>:Hm8kzmiFs n;SlyU zk_LPE|k՘ֻ~]^! .a儒]pI+tifa Xe{z?GK$^[qAotܽ&8In-Auu<؎~`z]鑯&rp}mAlu7Zi}ñN2TkeD~. jK?֛+񶵆Z {e? }SgZk³F"g>"ْ?A#emjG׵YFvSwro.c O;<5:})OX0-gL\$LȅI;Y0Yz9u9U:ߜ,S'9D̩\z V֣{zvz=^xme1or@ޭ7bć,ɆcX[r-U5hJftn`cz^]㉾ɡ~,%kFHQ SC,wA3˙۫^tH{1){et1&t[]2_3?:WdwIyg䵹j_1uxl)nqKkV_Ta4ʝ|Tt:>gͥ㋆T C#A$EE88(Auy o^ >q -{g<['*uF  C $V @0D/5V?V뫔1CuylM͛vTN5R_U׽[Z9IABdVŇ~O͌A kVƾJ=[yss^rmܗW[ճ8&i:6ȩeurzG ͈<\ Rnr ϶٣ 2\/JMb ޕݣN<3Km]u1c3F6f1O|CI1 &.T-_ZϔvMo7njV|]]E O~bb~lj%1jjcZ#Cݶ:>C^;T|HK{6-On|nr\ǭηNݡ4J7~>pK5ּƑϖOms{436!6[^p#rc͹7q')] ۥ3q܀r[N.) hv»$U槟~CZo~ʄ|2lLXOzfe2SvH?~LV#gHt}ol+Yg5>YuW4=\Ww|[Yl< W /[+nyc {[:6 GղϱV3صhg[g^.gE 7%v,C c\QZ˲KեrIdu)|&eHR99)|ұ`K14e*wGrxK< F`Q*ȵAr㒙VdJJ>.ћCEtMr|,ŲAEEǚrRW$]e_+i<3Ԇ~oc7T6gɟW &⭕[wwiKѭVO6sYWE Cc0n*sAE 7-ur8IG37xndQI+˭FXkmopP_N 7IԤ'Vݣ4W/Y{UNﺈ R :}YվbDF}FTr$aw9(]֬/o05m})ְ"gV>f9/s'tU{GoY0_ Vϗ<ukjcӸ*d,qߓH[熺|oTWرsk43bܫ,j`;>n|e_+mX`kl}W[P /m|>21 Ef~[LNqc }KO!Nsm2u"JؘNGh;)C*xed<I -|I+zsmt]Ү?<ߌ\ Oo fH_n=ϩ5 m-gZ,O}bib|bY}r7`g ?+-'.\l|qwoX>b !{,{^i`g/'w}B9?g@/%L>$;8ESrn @Ng5Y,sV[,XS…X?3cXVX~x2mby7h,$>ig\/od~6)̧k,O#r3i~E9h7R q+6-Ϻ6_Ae=Kp|.''r5j}s?Y_BnگQ۝Ȱ.%eC Hw~n,t5oߌJW ڣIUjlZv#meT 2jӍTW˟ft%UU݂M.oRi#dEqPކs 2{ Ve꼣Ɗ!3߾TnZ[Ns6W_qZN֕G*>ejmrkGJ{d,+T_`t2-4Y-kF)w*']&cmrU*\dױiP/KIk'UVJz$aTeZ kjSۿx\UQ'ټw !:$١ХZ*T!sd#dMQdS-UW[ѾD3P[ʕgԑs嬰]ё^MnIį' NY''Qj{L3o&>US%}YP9ꟾ1H%ɍ}*I3IEq[#[]7{:%a YOڒ1{K{%8q*P4P3NWQiJWF3#`nܵRg9vor{)W `mْ@9;+gxIa˞7eެN䘲O|sl[ΜW] $|WTI i!t͜Z62@nds`W}g蘞y;*ov~%oo6Rַ!=X)w룻ޮ_놪rQz1zm¡Jެw }4jL*Sdڧ4 xL.ܡXm$C5y}&gӻEFk@G mA{Gې_o w?hjW3s*9CRfRH)SsfHɭ$%wݲK>K%j~a9~~[]x%)z1o_NVwRK)ٲfPOA\m33i]sK^xF6Tqk# v,Xʚ6pYT)EU\8F 繪Y-+OQ8ʅl* P\ʑqt/~y9sWW_5#bZ4,K^+TVd^Q#Y^ꕁJVjj13I~/R)1r7hȬFSuX^KSB2=55n=Roh9al37&Q1 scbd W<+[.^i8Lv撑7.ݫoxČxм[SS>C%ɮ9o0V>R%\:4\: o%4NáJ{<4iljry(_ lg~gcjkhT) 33ZP ѧ[Q"N+A:Ζ) q F:e|'b^6?{ Q1#0r8{9,H^U,e6__YslZ]vel褦PKd4EGo=]-1MZrqXctu7}!}3ǟOyo?Sn凍lk\f>AřSޖ{|9sHUSmhvU"&rs-Yε*ZHmڃ[)sɵ0?SP*ߕ"ceex"?mT9?Ra [jyK:o+-_)aI\u$話w_۳7~^>zҼcÊd'˻ Mᢈy_jky?-r#C^3ڗɱǛojwRjUY&wA,7_U"YN]L>!"9-_>Z2WĺTeu/A_*#GYc/v"2z?z̝݅_8E|OQɻ0.w/ɝL9w;sɝfNΝ/ɹ`?6.t2hީ3hDo0}H۞Σ՚llw'CN?|x\y̱4Fז}ʜ͜}#{^R-Ks Æڋk2:{ϙ&+=4.<7&|d[ O[#k*<^#7.[ǭ\\5&>Mu!k'U(Y|TW+ó15S>E~kVQW3K{vˬ)OjU3?NW>dռ_u̫>Z|ǖ\+1+NY^$`KqE#K7H]s? [귪H ɕL"1F)m=W:c$Vu J]ħK^):sܥץyvL+gOtEe,u3k0gЌ5y{VnQg1=ыr}ZCT=B<_`nP} %<"dg},a6?]& FFǗL[V.^ȝ U}& ,% ˶m博@h&suo][~`4kCfm._?S4窻:1bm|d?լX2Wcd+2gnHj|_ę}[+W(VWO|𙿳\^)?rOUG1~yď>{UY=UgVO7f%'WVed'OzC8 yU4rʾqC[ 4GC 47t?WzF"crМn5v^kQ wa6HϤ>Dҩ[&q(F˴tն_#CW7?122:ʩ?QuU4n30rRLp{΢wrf9n3+>V50̹h[xb_e/%wuavs\%i>52o9w4믒bҼ~ ”i9w-:?{cWQI,e_8_WOk)[jrɹ\gtg_4+'֬Z-^k3ff+~y/Wj]4vQ̏^c4YRyk@XܰѬ2f;_{}u)=S7C5 Wom8xS~BByIe\R]cWsy}E޸jVUw͇8msMkړfiˑ9xU&GU;l%s-F-Fi1խO_lm_{\S~෼^N4 O-Ѧ;7SݚzdM[޼yf-o7xV>*TC|_}Hgw_ni}T;X]el6NqS–FIw%hFGG^{CG >}oX(U|L>=ppȟ׎ k.|%N>='U#rPwuCU1Tt@kغ/Q7^X2r}c\XR:D]X2z}c%r}c%AKA#A8JTFD0T,W+S/K#/8_;jmo ɭcc፪3O^BU櫭4ԎjAȋj%$r:6I+^Z~Rhkcste9׏}uRySI)詗/.L<F^W~kfn?S{w_YJ=dȏ:U {-*4cLT~~`l󎶼Xp@v" M*Z}3쏬ޯ?Fݜ?y =վFn&ìneiF}_S)C< .Qg™KI>*9ĒMI#E#x|GBmbïe-n>w7R^)/BW2ȟGg%o͗WM7ߟԙV]B&GXkʽϽSb|L9{JJcm\J62 ` ' b <ā;YOΏHKiob_/זKLQ~Z(u tXͷ8 ۬r4 h8a]KV09M黮Gb^3.+; s>껂r|n8;]We}nx;!.TG~-j~F/l[.=h_1O/_*wrZ,UQ}Zbi:ﶎP櫰y쨿w<2KMjv[c~Vp޻yX1 SkŸP#[t4o%DZsS_Y~ͣ4S'a}ƪ׸omEjuxτT sktYeZZ6ͲeKVDFof vjܗq˖o[7_Z޶k8hfN(7}.ZVcNn|ǍI=\Ď^/ FέZG)kد\pZ#+~ޡXXl1]MU?Q U6Ũ/,EkT/׏p:R7UK?i*9ơ}Zm"Hq߲+j-T|1 1v8v:6Y8lLy0\'.'pcܵڈ{ϧGZN W;:ʓBh5K۲eavwKk|IM 5O҇5!g[,7ӢF^l{As'|mr>`` /S={](<,$ʐ~\㪺ʷ粃;Øyі?Z8WپN^{q\4/XRWߺ^~6ɘ!Ywpu\SQ_ٯIN6PiJo[⫥>buGIiɕImlՊ{2=Y$)a\~j"av_UqIS;UD[djcRgq+ǰ}O6/ިw䫄헓oz߼g(fP5>i X}&:m+b+U9QPO~'?K>jХN6{>y`փ቏|q]]͓c{ayCڢNU"y$Ԍ$1 jSi u{o&ob:*ӮS TpGdC/jtYtQ}8Ge^5cuKx}ꃫ>`46F.L+Bl:e5T<O:qt?nz@Dς?d5f8+%DwWC9YUa-o,"ш#]ߙcr [ҁŭ){4zsXW׾~KdP<<4r5jy|00GUѮ9 t$!66C M~.nS~|s{F";GoP_ XHʅ,cգ(/q:6:/-m7U='=yRU՟R|h̍pIԵvk5uzM4҅;-fU6; /U$M֋%%*ymäOWLCBoyJ9¡ru[WLCꔜ]\4"&R9+ϗu@7}rsjѬiS5K2HΛ$ٺrCIoeb<~ͭgu.}r&}Lj9$L糱 2$s̔EfTZZwr}Prl>]& y}_ާv(x>ef޽/Oz@ Up tB ZcvZ2s 51H`O_~N7swH1Cu'j]ơpڝ?7-?|5wjjf: *h}|]5<21Ԛ>v近U~Qܤ>Q{ 9}Tq%9AfI"UoK皺Iw/gnTO(Ay;1ͺ* ;;Arg$\ 5ͱ!Wȴ֣X$uLjD9B5M(5c<+rbtzX!3ͱ\X>͗aUN`l'+ݍˈ Gi74>FSC yeCDn ]kW[_ݾvI=iο}pݥ^~K5lUl9lȝ6;w,Yuu,6m&|3۳F\l6K%Z)n'Ηػz2o8T.eC/}8fXYJ?^z+i{'C=(GkUoOgi^H7UO%ّjWS7/mWWcźL뤓`RGگ6&7hY::R/Txh~z봫I:M)"jփf˽cFTPD4[.;DOc#AWG]f7趞ַC=iZ4> O3urFI/-g&zVCB'[[j`'tɻPDwOZ9xrEunQ Y_-cEc62yuT+hZԖM3~ansv6\_[!=t5ϓs@(Mej[F˵ڼ=b,/k7E+K[oSl|k]Sȩ|%!7l[;}mq{xpk["O [rnzT5ͦUW ;uLVyyQ^o0L}SgWk- ?֣+ =JR/^PHWv*C U,c@f|rko1ys1t#/ݱ"lJPL~uٻU*=,:SuӐs&/OzV ԼjݦA} YԜL5b]f[SiΗ+Yjr;ty/6|79GyVuRN&U|]]/ /ʁv5<I{7Dj.[;ʾ}#RoCVGHrO_WߗeF^n\JVl&7ti>r+]9T&\dN(ȄɄNs L@&p:y"֙(a|Z:Q߱GߗIbPST\*j屯;eh_v.C u ˣk,T~e̘)}(FΗ.Dͬgojm9,lVt;eBk^%/6J|J{ƫG ܨ:4$*Pa=]"6y~Ow8d螿˅dt K~V^A;߱{h+,o;n%{Vy +g)*RTr B`ѿVZ} W<8QC+urڂI7WKsO~ޓwWu5j ֵI m=)WS'1ǡP.м]0QrswACN-if˼=mY`^-/9XWHn($%q2y#?zCIsnhkKu~Nze`}}td3>u5p~rPB-j姚C |˫+[~JK"'I>וW\%mQz??QDuEyt9P5~lØ.SK;Wȉֽq܃WOxJNvTTdj䆯7uZܱ͗ͳ{xܷz^&>]|s{y'%lRf>:|hS[=Gsur|:jn*pxh +J*J;F |ATl%𕣁׫r`]}Vʁ쟥g*zH` iVVI+3e(қ$UC]+7-,cGo%9?8ҕdlB^Д&ͻdO0lo:P ,h:KUhu{eؼkoJ˔>o&Wo"Pe&m=5>6r{X}[oraׁ{/LشI^&RkRS7 LϘQVT i!/˩M"OK<5u1ZU؋TXivGHcߖ-vɑ=GC3d[iPk>5<35?j&_䶣.+$ Ʉ7?[?]N28}$5g׊qA+(iƥ*c,%+gjzFQ3\ͫG6O.,9uYKm [ԴSO՛nɚ+D%:<5Q6ժ3#K`yGB3浚oY=NRقkvz.xo_7P~wSMѰP}iTNQ2GW KW\z:ou?`z Q%4|;k\̕ 449EN)2󌺱PҶ6!kR{DPrj^ЖY]KȦݸ0<}yḾi4㴭Rh}=y=ǻkB$&y[wȝrKB@oerM,ȿtTS`0lrP6گ^`ԳFc}J[VlY#Ez~j&ˇTCMߧno G,oX|޷lw4mM͡swf?:K5qK~UuB˛/{_Uk]gB -g Cez#-]iۗO/rpL“ZxU d;3<ށ rER*j˧%FЍuy{Xϑ-`WK&/.ޤk,]RS9lsAˉO5k36rnMSZ0}fˍ{/}e:MH;ר[ۓ|w惪rxNWg1vޤcZKBV<#WhTh8/'kk m_p\dӧ3$]0@g1g>W/d1MDd>ix|zf\- me'`=}r,#X`uԹO4ElZf~cݚy~iI%*ʑn㋬B7_')wLo}6qGCwWy ߞ_/ Jlf7ME.3Q^"s$ſ2o_+'P۵i u|,cJFi^i\Q_BNLnΑ0K X̊d:ِFE7 2awWR]^+֗5~mBǧ_>C>&Tz>{VpAҘo x>$~,⺏[<%o/[<}m'8ȸAVzkI4}㩆}s 2d*yH}y>l]_kiTЌy8LܾrvjG1r$"Sesf{{CAc1;78o_p- ŜOsθ93Xj52ֽ֞ c:ϖv[B/g, L9{5|U {V}C}C1yzuK2p;}x/.e Ď+ w>f摅,|_YX>tY/Mex;mD~&omxe!Q4C 2XNKPeZuzksTl[oeش^Z_m=E.c=՘}R|,EC5fD~ठr!WY[6_eUC@Wŕo3zbd}y]uG`?=xjNxjRhjt%[-/.z+cO>/0oߛ_omv26^D6M- /m,KY_f;~6+ٷo_l->9Re46<ف\eS`*fCgIoo_b}2byxQ-WMo0jY[&O#rc ykWM1lLM|*?y5(XQ~ywaﻎsqg%[u_ gQ0^\<ђChi{|_M3|4d:L~t9guS0R;kE''ۋUP}/'M~tϣ. O{ |ob`ѾChN5%b] M+R®Ckz((~uZ%Ġ3?Øqxf/o@x\T~a$S |2Xmouؓ R);)O4/6KF)O2.˶R\{aNy 4>h OFQ~RST`6[ڦbs¶Vеޣf+]m餧޽Wb[[㢘Q3)T3"@a{ĵ8Y }QvG/M} (p}B|n3R!]񄓀_rhf":qf| . K5B~e]yD8zdbGEh )snNğE!,AL+x%]M4;hRI)*~ߴO ^ჳ0bsN(pZ5{]nqd;QA^Px{4[deD+u`&GSZ3Ep;0+?:<2S }XX~KaMTMށ*hҢw*&dAf6_O|m ]hVntSE9 PF9ˢ.B֍RB?'<c].0>?+RtG^H>0ޠI6$ekgЗU@Kos?^9$Pb<lfg%$ 6K2hN#T#|/Cs$%bIx`.XN钛l?(Orn#ٮ[mԺםCu6x{5 &cϬ1kųS>ט,q|l};%x z*~֐tw_[ vkywU,6!3wϬPa |fi/ι}g&<"vJޫ;h^etյ=VЖ/Jok@K{kwMR˟m$y1g+;%{tu%~}4^3m0~KRnu疶璆͞[WAN X@RDܚ7f8L|]TڲQmJv !&cDfOp ԗ' i:*|1$ c^ ޷\{fRc'y umqy)k2y.'11y]ՁI!cS%hٔ+g ]d.X@εEUwxI0|vOCEz7M S.gq"z_KOZk}@_{[qƳ}do֞e^B<6c2A~7#c {tWy3y 3)7 -kt=^j'^Kř,rߚ"=nK˛[Fovk^^!<ms%$^2"?3J7drZ cJ)roA>;O$8K_5>5I|q%x_57)s[b 8/[_CcL tnܞ"B3ES-ˋ[{fira%,LX0 _ &YT^)BOS\S ?ӽCeo5gӫ'!z6P^į#9A{4T|#Y--{M[';2U{ro*u{dnջx,2_Sֈ~z~(m߀Srf-[ ߥJZ :+^'S&jiĝ;1V~pVsaT<M>@ ;0w}W[}Хsݞgy}>M-nf]DŞ@Z*D9(+zG'B~JeEHc}RtIM:K?{/Flp#z mGBW?\ڄx3Mxa uTHns%x/^GfqT<6`5P;Z+j]l}}%mANz܌ff`b($7 l 0[{vrrΌ*掄Z-ZG-OtO1NWC]+gtf5:뭠Pa5:ڸr(zh5Q 31}}Qnp7) rH/N"ˁԚV)7G\FM?uУޫIG;0㓑kq+|б=%XJ%OAK)NHhCď 'g]05pw΋= tD*m8+S!1͓Fc)#%OBʾnW} NM$˅)*$e3ӎRic$<`xz'pX[d6u6%G /'Ck!0}oy@= '?rv5 NS-_}{wJ%o fT/`)jN 9)S~ soA hbC|*Gq s3t.GڟRS89ٓ?<~3wPn}B_9g!:FgR2 zz,;#F cȻ-81CLCV\= Fj*|6jDV.h5fmw%ĖP>~u0:($CwctyYM#uk5&7׼4< RM/zc-9QHX=O2ԟAw1)ט,Wr@ p 6fRw,}x%Py> `? %OB [2i&KZn?i+ҝOOEVM+ڞzp3uS1)-)U5c)6a3⤅g.%4]\zhO~y>3'ڻj zG3HS8- D ў~g mϭڀFjZ rn7?ߝ0iNº)+4hYQ_;3A@n(%p\#*uKnRRQ}wmEE|] A ~mBB-s~CV5>h6SrlBtC6, OaaB8q} 0c7;:2(Áu폍9 .r![ͲU0<{'!dnF.Prioms E@KYKzC[eքV#Y?UF&~ h*z@/m Wq ;em,fjm1/!:7R:܏R~&KJ|1u1(_YƔ)ڋ;$LS۳.h +1'uaqf=a9Tw:nxo!5_q!e3: +FOym 1# O2 1⇣́zdlDnBpAa?:7pU1WtEP\{CYQz/hm&,fi$K gQӁ?N(@( .n;-AB\OK*9-㙗9bic%'w}^bk3=mlp!KڲZg @K, <&5s4EKF\.{')4MbWZnyIA9ub)W]:OSrmdNzg W<}O!whx  fT*n%c٭cOFGz81*1£cl ,A {ThMͧ$M(ncd2ZpxF`FYqJܠ tv见TxD1QrT0ϝs0𶥓zKGGE$.%0@\Am^y3w؟sq|BE17a_]܏ e?ChWtԳw-ݳNbg G9Zӄٓ*B@*_7(OшFEP$?\ߨՓ+iѢI QD?D+댑۠&YȃCx=ި% ][ U#(LX30=ftDC߶c-{ J$$ xtj6L6=^T-{=Ϛ# ¯xߛq!Q[k%~ӖkuE-R1fb G{tc1[,}PEL)KḖu뒡 c"iVK@AMH[?S0]}|ߘ%:@2z)gE$-BCٛUP9:`?z_.U*%`EQ>2ӽF# \p^xF.h ḻob Oŭf 1en9Ty4S4ږxGMl).Oѭm6x+\2A obۈ(e>,ur9u0{=Vyox MtWwa=G4LS)<]m91.]F2ՖS0Kژ=МAx@\ۊ{@jC nG/߰(c J%ᶥSW͊FjsYAwg5DEO}(آ[ %# snYg_G;3=(oл,'iRC5cdg0;mT57ڋlR%Sϟ:kҎ[Gsk+nx61Zz,y90ctM pHfqEi@mM5Cq~:XqWsbWy3L>V5x܂N g4O[ rF?H{#cqT^rY,L._nǵ? RKI`QfFk6zo1{kPw3F~)y-|_6 _DrB^d|m(\*JVrC|)O#;pQFjWа-\^N a?g YE4l32= C7C壣9bا] _ UlTH'};:WH?heWN>>ã.+>n= tmVTVPWJ>:ک+^SSu^+q cPGx.#3W亓;?sz ݈&w:.J&%xz;z`Q/]sLYηzvUScYdW['mscp=9GYyF{U(og^HJ/C[y|˻8`i1[u[2բ5D[^O")T(R'RY|p .XsҾ?/γ1/?$s5@ZGǁ|7m TIaQl/8ӏE04aTKTNpTr4?#ŞI0ؾ';:lNvڪZg-)t:kmYnnN`7oykT<_+ 6Gdj|ë?cߠOۿ'QCqz^r9l-9Gv; DAeC.#/̤^/#g?d F)27M-3r|C 5/ !w,]ܩS*=j_?/SZ,R`{01"dc F J.>AUϔkw2S3j]ųZjb~B uFOTc,%G߸jeW`:"u$m85>(ˊNVR΍0q-0Uz֨Vh2L/k.}xmM,/WdG=pU/C!YIL;퐃U,KYiYtE?X<{ŋӾkQ$GTc2z)Pz={I4Ԙ`ӓѻ77gi`TޭV@=]Hx# 9b8ǐZJ8cAF]?i"yη'+^v&@7jr'X5ƫ(lʹVIZ9y#2Ǵ r |ܳ,PV!7"Wh1OvD꿇bTr}ľ#.XʳHn\׻ZpJ?Ν'd6Š5H? n[2v&>s*~-p6Uz4ZP]|4%OTvK).9ksa轖^huH!1kv?4fe7ݜEgyS/mdyz gxsVxB{{M*P'L^ 7G온.czf| tH<+[>>9vޢx >#Y~v@ ;)% ZoL Dɩ|7o`ԗSͱ?{ Ԁ˜(;2hf;ic[ ;kRfE\ǀgŧ%:+&=78D//::,ǨU* ˾th=zno\I"2N':c3uuxi='r.F$ ?i[2 )K Wb8+@m4'-;`?Ͳ'|y5]wxo<(DyoXC^rgoվj6'O6KhVG d$Fw@ _i+ \ "`/<}W-% _awn ?=@'ſ_c܍4ݍKbB%._P+/ ~?ロN\{Jg2).+c|ă{ 9/ϻtLLᱽlsicʌ"[Xi/fo?%_<\Of0H0$M+x{>%-"fR(7YWj ܋4Mlh| bhfZ x`BhߠQ샑MY{n^,mƿI{Ͻqf]E7F_fR}|{{ Ҿ֝k %h 12UcS$4\~/FZT Cb7GFqG3ssvDi)rg}!eb tmT \"&DjD楁_2.9!u<>@U#ٵ, WSbH|6V.!r tQ4.6:gw3"cX> La*GӖP,c{<1d1쀇;ηo3rvGo{I_A{iT7x, u!sx#Il->R]b6눷 ~F/Z}psEbwn<:7ɍ!+]L;EhI_Oʯx@d19Q DAB̝CRbl:HNJ.>)?񝣏 vM|ث8 w7a?52sw0‚7ZXϗ-`=Wj4O[* ?YO~gmx~q0{* `Ԑ CJ'g~FF=|Fm9 W9 ޓfyCT2!z I9dqeYC{q)jۚ#aن.\]TKJJ=k?/س}b(/,x6I4c!چPg[DV΁iVOb[!Κ0Q"ԗO^֭z))>@,0R`OWQ+@-_&91g9@ŴѼlrV/X/eÛ]<:%G871>i=uO="Ïk x) ãϔO22[@I\͕<)fm`4`:`^ c:-2spX8%y.sM3USDoʓIh> i,mlkt7~;Wc)dGwzz)zh#(,\_ץcnWWw/9Ɔ%@QPJaף{KMW>djww3oX9ކu!OSN㧧$:yίK^ncT  薇PE^g- $ R.)s /6n hT m'AA _8JYg+?pzg{$,7n4͍j%홓֓N w3 RqE1i&cKdn^?(gJf31ݢw3ǗVH/-F!kC #*-C%;ypaV{ (mN-^0?/Ҟ;<ю=vHjKQ@%  {{R1pȖ];36$v" fvEǩ/'ӜQHYO!b_HJWz^zl.O<ŊCfve配8}_<"L_|xDNWI 7^y\)Wrk05V=v osȀ})}%P!C?^B.܅_9$N'_Ҡ:eNdlHV.<5ۜn[E;\RrNYmdoܸ~)ژqUq\ܿ~ aJ+mH$Bu6ޱb<&e7eueƲ%yx#{}{S+;Lj܏wZ XtAc_/mZ ؂0Jg?]Cn xfӋJP(Wtak@{ܼ~ έGQaE= v \#;N0sWC.[SE~=[xJNq=|!VdDG mڳn?cl}mc<ʽ? Kw> lpvS:|'|> ;Y"߸Mȕ&Az@7ze0xnȦge 6[*m)ǂXn$?SȾ>K2y\+r 0n7>+!Qֲ? iQxdAc5|x8n]t{Pe٩"nW9^ʴbәqu}ii{+Bj~WFA/zW*w$8$ >n)_PWfc*y5n/ڏ\R$tHi8YV@VW;ٳ7zNԊMP eEڗ)f=DRRPLljVЈ}4k-eoLoS6O6>/"o,wo7&hͶw6%R|Zv0{ )5 1kЏ _ހb~eAB[S} nRQP9W~uTM*nj/X(LaG>f{2\ғsۄۏ>aaĒ:x HW&a p{2u (%lfKPK8~vTr'u/oig eŃp6T.2􊴳Nh{Aڔ TڱkhH+Kŧ$Hl袹xg^smR|qOy(J.Й*?x~*?Η;~J/-) 1<beZkc\+8u&oyx%&][l \ˇZ95;DGiKn^Z*^'nɅY˝+^ihΦΈV/ʣxU<{qS.{JkrW>Ƈի5Osņ# Ĝ\)'kw?x !'7WY,rX}kE˿-9xiAX"mΕWY'nΥW+v#mX-Ii۵o{Yjwl;p>ȃ2r\ZҎV u~#Adjr~Mejh oWc&H"ydσr.? .qUZ7GT+:Nv`5柖74N@B$mJRp KOp/͗?[Z7[x J{GGyMa4 X7JbFtI{f:6t< 1'@alAf?-y[g 6zѝ&٧@ʍd^(/9WʵI4ns8 P!',~S1Ԝ Fѽ|} gHҰۓ5)l83?;2'f<ߑ ǡ#xlq<<& ?ߟow b/ V灿5m]ď獦/;;_x8v!;/ɁHLN FG(&s cls~d\ QIRáGA ;F [e 81m`hS 7v!kv͹;q5\#|O؃\ѝQRs̺ʘsIy"dmI=ey8vMF*9=T N~`bwe9ck:}ƙ3.cO? _DGgqmj4`Jܜ*Z]2N%c4ze|b sctaJMxƁ45OGԂ_6hx!L%Cυo%#7O~45dqܞҔ8P-5b? YO@2>޵j3zJ%AzP{>~I.)*-q^wlp>:qY<&9KVyV"֏;hD<:,'&҅[17RO:( cVʼz';5'gC.|L tP30n J;f uoJ]wG' ޏ b\{(%g ;V,`{Afx /ޓ,_ލ]PIh$Kͷl qь. };a-E%w ;=jQ;z+-JOδcsҾjxfܫs=Lp ̹8I/!W1ĸcԐNK_Xx E*up] oIZ]:h .؜ ㇆>1XX{\6F hDR ۇ0TI> Qrr3+,/\s~w-T&@´"?`87&!ɤΚ.Lyw d7Bp d樱{jx%BGjG١q U ^22W&M%-z$DdcdM[qqkNB>cLNnⷎFv60eGG,.<՜:Pa 4C'#sKo >O,aܢB} @8qH\F\𢡄?GWbOPDZ O^bq{%dEInSIO~%cPjSS{xm2C 0؄H =-D0 rNFGg}$;ηȯ*g>O({Ŵx9eADB ޠ H z؉=&w3Dhcn W7i w5(;*^[7B^kZ_tᘔpc/eIDdzO#Eu+erFIҌSݞkǕ-5XEKw;'o T*ul803}#w*nj{I&}7{X1hv tsQFF݋^d<00\0*RCt4EzKxh&KZOd (G?QlD51*e 2/*ΑWK[ вg<=A'V_CQ]F42pZzżC V2;Ra2,7x*D1fҶ.$QϑtkY>{fvUF i8/\+FG}6[]{qc,<،Œ.+.6f9]2ҩO4 "ŧls2>bǎ8U|}@@#*쾳1 E6x7@`n%p<x2{Kь\._ ֣S;xH2oo4 `4LSLK֍N57`! 9pV/EtIZ<}&f\bA1P^<þDY003c2CAOmqAǁr\g`.jɦfRdaXa,\=I:x0|hnڱ sKg$OD9G+VxqK$C򋻮nTgmE:q.%$qf48ݥꉧ̽; 6{`G[9mUs=. ^RUksnw)a*5VW˝ _j_[1nZ5P =0ٗڶU*r] -` Y+4Yo(tVuiܬmNy]kOs:ŏ'"l-qC|aj;'yȎ0!Nd,816S[ :ۉ`Hlp i0|ww~/e7 B[vnp eм- e!o@髫]ө}g3uKMCʄr>WՖ*<` Ŏ%l:ah:#bGxXXV>.NlzJ+e~P 駀aP֗kt]xUU[Q)UNsZH|]M}6MRV6|;u;jZ' 0R R%L݆0?}<6j+q(6w\D&ShI  Y |^9;}-WvVcҖSjFGanV6xҶ]amV=c#6J#P6?AHlËfJgCu;T9Nۜ9 f=DiP{Ngdv'@ZؘsYky2jڰe+g* jKgV62 YFؖ 6W=0;z`()M2nwyꑫWӰVZos;S@&0&nApV grM谚3'@*:UJc센-9<63yN`8!KlY xa4TCs3(cY$z _YlPs6e2uytX8<ɪxK+=0(0bL[\B~4y7͋# @A}m\ULm*_0m-؆k[U:XVd;ܸu)rI̗2Kh80j~@UF+aNqY^*M앣PG5u:CE;`|ZUW<$W_"WK\Mw£El\ \UḾ`X{r˫2.xx3 9c\dnAf^}5̿QP 8 L&;e9LTIh-*wt%.:[0NʶRq\euHi&O V8p6PgyRYlO,&'?q}~QɹU1+{#lg: KldAԳ ū9J)_js{C-ϑUlErn֪XnYbf^ ߳g,^]UG,Z+H,!^)f <6<6{F(@X`sjlx<(j@3U;,͎@$Zf yv*WJ3:iH,PmCƒYZrYY2nYǼyn'UCĩs'H , %knH>{Ë҈S#@RRd|w@=8NQB6q=cgR!w'1V@rQWT;Ƀ0s, =DI'R H"T"}/u>a*Tʞ+\ ._N^R}l%nhdkP/"y"~CTlpUXPwkQZ?# g{c7Vw7hI s,y8BSNU 8&a"r•ɠrsX|c}ewM]}:*e.O|rX}Zax2VqcmX/XwbaHZg$~)V"VcJwV^)I /Ca@t>"\sQjgpjŞ\NF:TKTq[@]VQN,gnQћHY3*`Z1xIssg6ORj:7ejLqUV`gG_.:B,ZZPcz(igr{zz:LlsHΟOls>}\= R<宋y&:1PJ> yCFy~8ŋIŋ]J^غKWH.p =g]A"5JyMGogwVo%3 ҙ ƓrbSДkEfA"dAj FCC.Bsm=7t g}=&޳^wCt7[Aρ Rd[|Zd(-zGHJl`Y9wm%U"#dBcIÐH9YnO'v;yn_t.$";$/! gp2/0 ,`,,&d܂ k! ҅vm|BpiZp g[A?XEoR]!E"[Av2w1-C!aB 3P@R0= p/xa{8%P%d>ٵ[l[mWȁ*6Oi9N0sh-e[r;W `2!M,͙؜ENpR9ְocWB~j]:cЪ?@+H] ͰYj$Э=ˈP5hu;a u0(<0^TLex%N4@WT5=avVbjg8FJ'(U 1ʞR w]=W; J* dPBi6Z421O#Aՠn&h( @o-=5< -"f'ʒ`izeTW!2L e<#; 3oJ"?D&GHvxW's0סS!x9Ĕp‡P#R@Jw44A^T>(YV4T Ղ/XfmH;qA)UAcUz)6j쿥sCj^QAUy߲79bFHA ʺx-a @tgg;qV8^yGD˘YjV(a)[dRҡ͈~N g㶲 ! аS } Mpr2.z쵥MiP3 jT'$ &@P] L6BٕVk3xh}A_P`jhs*hP~5m$JƠq'9A5RKߟƀ|8ˠV( #zF x[vAek! v^! ߁ CeeκgZuCԁQRoPdDя{H,`at[i}p+9@GK4j(ջJyR@y'@t UjWFCUmPX! [a_Q'=jZk@}G҆/@ jg}Uy*zXE`m ng)Eer*܄g5DvfN`r!>>=#T 匡mu0Vo ggy*꘬%YpʺtA{)OUS5&#yˋ@}GR:W>tA 8\8f`m؅J|mP_@-^ b/at2!Jk;pZhpAK.m>VZX  r<;yHP X%vyN+>d[}{uݶ2Tʟ!5nW2dY5AH/4pS_?% ۘQaLTڹ/傥ܨI^U`r ܒPIGyF6Rmt?Y'ŕnjK 1V ʪ  ;q餎ԹmL$k;lVxqE]C CBgPMN87]FbF86o&ĩ6 S]Un`ATew9z pRu=BzҨ̋3mPJRiaKFoIQP?C5}"$եU.jkl 5עHSʬI g?}yF0W|HݔUs шnp(*ӲZ /UhagⴃvhB;(5w8k,䶧/Ad,!e҂yzBO j*hSG++tEi;c51m\k9nqt 4i-]JQ.&B:7X,)>@CY>o}#6tVj]m r\xkrR7623*jZ5u*et1hEҟ x@l}z4ptjީt.ٮvLu8 5T~Y, L:~Z<9׭&@#`ВUVpa[meq]|0(mÿN;9Qw 3>;[o+"8=)z2wy _f}PʖWUUԫժcTZBn8ZiҹMA@}w%I:r'wueJTݘx&/uڷܥ8W:w)sNTfW`ܷV(k_B 4{!oЊH:UqHSY;xB_Ͷ lRɽ!H3!T[,΀IXr.= _J@OUqy< h=T?O7vfmԱ Rzk z/-M.!fY T&<ģOD‰:zΐriw:Zq=v*\uո`M1T(*)5(ViH>3 Z=ncfvR֡U"NKhi[(tvb3 'sj_J kd8wiC]uŮ B0Zv6dp : R]3Z#8vݥv^4H7i6ʪ!P':cUoW9 Ln.k$4RQWih(,`d؁ފWRZi|U۫}N}J >>H׶s5(xvZ=U18,^|c>p k>qf,$Ť>BRfvIwZo8OdU5slR+<Ӫ<j8UDLU(ۂk A{OǮBpqZo8Ц䧌31|6KM4=ҖyBNdL\z80O|M[Wj;_*yRUNqAgʍ4nj{&ڕwZLŹQ氆N@85_50Ru9W4xu.hS.JF@W6Ro(|.j|0ԫA$aB#χ-C[ø7Сl-X/(UXf`Ti0wVMZ v*ķNԵF7U XW!waSv`?Uk;q06&,#6yEW@л"T,e+#@sUj{48+KimM*Հf5?\K.Aa(op2hV_5.!OsB|fl3mjyqK k BxEUVGg0 =BITC { Э-CTvJ>*@BcW8xx,퓸4gI} %X8gi+B?QZ(-^; k5z4L\*5i5-(WeF Ҿ|=vOt% VPkhD<EߑpHpPNGW |_]rҭ~5OTa&@٘x::"UvMjWyDzBo 9\8yҸrwN]2k564KW֙D)Pʾ2ab/ 4jAieqt!k.8a L=wh/yT[:6NQ׃Nuhql҆⍶dzf9: :]66: /(tZRRN¼6;,{m Ǣ+*uݕnPa>zġud;6d[X,%+󪍐kƠ`5f\\~YCZNe%8ީꦐ ʊZKl z5&z"Tnz 4aar,}xfj+reԌX;C -Hs 'J3]@$=] m"UUNeYҋe@3QF}_@4piiN\u S,Zzq(86I JjZY߫x+7|f΂V6'<=8"; {O:*{)!5YY! Gey#۟ƥER (*Z ) q\ΰƝ2~fP)<O=*rxV&csTp T?.;FvzfrNՄKuʑS2jW˶*&qYw'RKm?, ;nNp0OO5>TyD1U3%8\.ԖUzAP SPuU4Mqӈ2{3ZU~Ԝ9PGQ٩AtZжCh|Rp%SN7RIPhUe*Mpv&eoMWBUߧέ `5v l]E?vP {vԠ/.m g ǫ΅ũRwKU{~k Bc@USki,Z]gE"]ti -ظj­tEԅ*5˥U\!xqntKN _ եT̲Q<]AU8v9+ ;ϡ +R-)1U{m_ײ cZ<"CiSg$UPt>G ЃP\2İj5RQ>#şy@/x+HJ~B<_f`U>+'3!dV]M뚞-lP5bX#zҹZꯎ\!7?"`0 IUEYk.TS>뙗" OW^XWDjq:f  T!ЂkhHH\%SʹYFaT1A;!s#os/yU[Bq*^I8H#L]6 NyNv٠=``.) :{zw۽=.9ϫԌ ~#6۶zV= Uw%Z̦BkvB2˚mdmԏe0# m@k)c\8E3d^CfBz|Fk4{mڱBs"sNj29bk.óf1PU#)RaX0ee<ǹ}mQXw1 vG$xG)y0lk4p R} zV])z9cD(s:BQ0U7Ww<>z724;. 졔O@+I6Q*k0d%*sB5gC=t#'剞S<+2 <? qg%b7@UOp?tNvғT0jéd)n2땣yb؍(@L'"'rF<&G gHmYR{y8u/GHծ́ ޲wrE擛_He;gψ廎4B1|Yfߙif[ȿ_/C d69h"ix6Vochp66Xe CU nBⳑŋ1B;Ae4ļG<&,fHw#QfCD|I!¿ILIʸGE3.|tDD7Lf3 ~^x 1&LgnL1 ә#9bA]oD&wD췗u{gDG&}ct3#3(]mN-;5QÇ_IݩQcJtEg8\XsoL$oJO6NX"?b }'B:i|#O{Zv7W&c~0Kvi)?KOw -EO~qiCq4.}q"絉Ǵ1GȇhD cp5:ǧMx6X!cO9},1: 1c-c[=nLSӖʘCǏ?!B>LVVPࡗy*AaO󰟇<yZy<\LfV𰞇y+<|?aa/Pe,a2SyO K3}*O>Eg9<6 ҧJ Wytf{aClq|y:ZoN|p|:%Mo#ǷQ'Im6ė2!>cL6 B'IUs|:kX|lb` No7Ƿ['%kZt[> ~2'*N|+'N|yc)8>k'o8C:L0wX';щo$:8N8w\''W1 i*'W=Iοu&C|MwwY'}'7睤}op|7tkK!> O2_N} u-l_ c^ WDMIʛ˛NBrNr6^?oe$iiޞ_5Wߏ&Mt+E'C N|'a~]g>2IyN:&)oסII_N/=Ϳ_N|''jן'M|>j.NB_*/U'}$w7G'I[-ԉoh29L.O6qK72 w1뤏g3qy_}Ygy-}:OBAN| uc:_҄eȯztI{LByNy&GcNRA^A=ay5e;gpP}u[8 d/Y'%_.>W's8}stҗ9 }K8}Ktҷrc8>03>&/?Gt&ij:c$mmY͓~oN|['xosI_ńw\_p=ңYߜ8=[1o}s<}GX$]FyaStg~?C9qzWiD;4뛓я~H?Zuoyя:[yzkX%:?9jya3uҟOM~i0C#GS[8| _2 ~ÿ: k5ָ0qߊĞ`? o v`? HszDzqIIR'| uipv2X:q㐮zxY<˜I6etcX9U'| O^VN BP'D'r\'|&n/k' 'ǵNG.:ƽLP'G{8pqd,TD9z9zW'~/Չee]^gqt¿o&xy*tp:9O?>ˠb&## ro^}!z)鄟g7t/O K8%:9ك:Jqt|,VNV]H7 ̋^'|o ^~ 2Y<)^xq:vp={\g=:맗Wxtsß u_u^ ?uq!9e#~D' C'<9Y'|&ltueVo uקMW}YKog~V꬟J-:gY8yyMd#oYޭ:[+touWrJZ'|= /pxA'n['| o ?~|~ꝿiDj?N_/s.` 8!G89q8/q=IiZ'y^' ?Gt“O'=o 4Z}c`K:mަ~ @.U^B2}c8L7S'<7o9ލ< _unncvÿ D^q.)? @zxy{t4~lW:8N?>c>'O):p9:p%:39|N~N~N~.xB*Z8pBVCNx/ÿ5z|[8?##q=N>ߧ:I+ק[VƷ1#2y C= 9g-ǿV~B6~DxxօH*9|.xC={X`n\cG>wɫٯ ?xJkI^pO#IqCpG&;Oz&~x'"8I2_֕\JEF _kB=prY8$sɺbb^l^l:Ŧ^=!sIp%k /Z˵Dg29Л&3A>۪|R+t ^Y9uޟ[tgП9u78k:0x 6m]'9ǃu~)Q^֮S|'L1{Lfgxij|B<,<ϵΧf&?O1/zat ;юԳiE_pr:W&nU_KJ=38,+jLFz4q>cV7+PI` 3F3<*1tKd:L* ˅r;@SMFx_FFax9qQlܪOw^çiTS/qp2(O> ^37bcqK3ׄ';&bRxR`Zqoo?(X!#x iEȽ3|9< O7;#|yl mO1DQ]il#m="Ѝt@ө/>?_Bs.oczG<؏`lcn9swkhz,ö_8az=Ikkcmų~_l?yS>CŮ`T ;Ql:6MF3~wq]J7QKgft珃md b4T^Lcjg"o~O4?r\5&?]ƣ ǣ!?^7B~#|L|ݔ뛊}r. 'A>Ү,MǘpQi|I@|ӡ?C)叔D;4)n|!^\8K&> 6eLOjWu]1 y9_"jwnIQTܘxZ?fCȺl99ESQ ;?0|j}栞QHE|x>>3=O1~EFŮp g*W*t*v$Cȼi?繜2OX@^jӬ[*zQQtj=JYGR֧u`_GӬ.6*ؗ(%5~(qv'ƨqSZ@ vIzgxU?UN3opy Xϖ~n`f\,KðrQ?E0*FlX9ukvﲂGp,:T߉Ռ;/kt+u3kZ=V Ӄd4]"ڕ355~AO:QE,eD叔H;:hr"ai] 1֎_τ7h >@ˡ+v#{BJ! [.M4?dDcRel(:JXח%*LQ| z4?&B[#?!"B|eZ%^?GIOha_5Z 1q&4zaTh[IyOWHХOzG|0:lp~(7^?zT{Ma9x |R+[+?:q(]k# {GT%9XŧS,{|H\2r4E[;W1rGӣGè'1DC+'9?b=/r?ye)\3ף)8ϾFFzໂG꟭3ƞl紏B ጟ>:"w\xoW{R&Mů4/O@ʑsB9(Gv!nǫ rF%Rdߒ+,Gx|=;~$DcGicYE=/N'fŤ3I/_%(㔛NlRP3$]WߣwxSȟ6jըqOpZ畅sמ V_O y(L^R⣹s}%.=hDžnGi}gP|BjWZyWMC}Fgy|GYgRjBY}vݿ{\=.*a{Xq%3%OBb:Hx;Dύy|? _ܿ2~?Uu\^ /i*rAP' [׍匴Fb"sLO9W]ÌOk'7DGO.)b>Myb9%*5#"nL:4vW<?޻bI}x_;u}+/PNa}+q;!w!^I+e& j>aW_ba.p;Mp\k_i_L>ꎈ~/Eqʡ~r?L)lMSC%NV}]8tIu_cxx}v om4r?ۏEI4L"atS~r~׉v _K44ʁ ?5t߯'O?gKA9'{֜';9Pѷ O va\IyqRx"oDlߜ7oS wG؏sM?+9_\㫣3]Ya56iZ?}nda{~ y&/j097bόt^wP?Â~a6AsL/[Ү+㬻EѶ;`G _4Ep^ ;w׳QF=2|9ǚvk} On<4)9V^J4jߙ;&*peGBvpo~߭FA~C]kcΡފ]A{v n?aCx>b\W5+aC^kה[YǤO3|&4fu+DPrjn_OoϜcۮW0d.g2О*+6hbZm25z# iM<:F.3#nKJoFrrQb^GL9,f*ULWZgt:Kw]_:!,݈t-a:^җǓ6]jt^eD:H <1dOAF'OԦOM:[/گ-Nl"xUnbr`~]?t؉4}a( D?(MtN99axыXyPerRrDcˁrU1Ԏ^ŧ Me 1r YI硲KݯWS=&\^c+]p3Sƥ>K7jU8VnU_ sT}O=osީkȾP~|ۛٻ:4E]E[ꧭЩ]i5ol ?_c:dz_5q<'l\*z'>s~,o5b4cG_|ۯ^H烄ث5JG:T E:}W9ߪEl?PC)J, 21'Y'2ۡ}*hZ3f_~Ɯ+Αg<r.G+X_J=thC'j _ sXmz,txOrp@W1 /~sosF4FxysNy),? M)sތyc.+cgӡC-_9t TNwEڰ|dw]VG vs)V]f'Weڌ\;.c6ewqfMG 7hn6TJ$TjTQ/<z<@8*8{2Ḣ\^f"qHiws5x4ծߏ[/ޯyC珒 eќ/:YreƿHOtj;Oٱ>Ҏs#hw󠉷a)޾#2DrzE?Kz* ;Tj_z/]p;)z5P}Eqp-:q}hʑv['28=4"lę|]y-U,f4\xz 9 9$uabvM @✵LŽ|^՟SSeZ$.voʛkmw[(׷)Jܚr)<#:9K=kq_3|BzwүP|Fk]+V[yȨܐRm)Mt]CqF^,i&U>C%{&j$Sz]֏s:lWKL9Oh~-/3KONƷӱfw\/<ߗ=~y*u~¼"O.7jl0w u|Shgf;wzɛoJݿ}ڍ1P?`oWÙ(+fpd?[)OP Ji_7Ns B. Q}#]寲{,Q>lxeύqx;d8n}5u(N]}ϫ<5dL)r72$5$`U:?oyz՟!w/r?kŸy5{~ ~}j w1jbō ģkZÑq_O؍V͟#?G7sN~t֥CTp<\ct71&tL\d'o>S{]t5C_C5we5^,p\8}ֿؗs? =Q<~Mz I'ugqd}GOWE?xoI یxo%B`?S-iojZ8{5j@(Y\wVn>!ww编Z}돕*7[ _nVRžhֵߐu@z4 n*{-~?q]3ˏ2 ~ŇSN?+x5*}t޵bQnPѿu^?o~/C_ޏS4{b5}8sW$Y>W9]Y+`=sEs!yӯ@;7ro >bIw%ڨ}o\*+Bp^}C*'~[x`^ g3 u?1x2݋qiRNSbxX_ib;0LLGꧡ|yÝg_ Iqsp_꧄+7Ն1o_+ͿpE-XnKYLOPn?+x/[fmxj9oq*߹`L5s?wU1g|l5ݙ5#X]oL?ݾK.uz/Oסӌ#ƻ+ǻPiCkWEv#Ŀ~d?~yHy>|I^Vs!._vϼ??Wٟm\x~MDž3fCo[رPB}\_N1Kf = koz~wpz%(?(՟)us=OȾiP>itiݑC'ɓ&7_q]#Pz4v[7y]`tOuV)oWW?2^8=1^~%6"^ϋ®ĭWqT/-w<6ؾzE/;{x?}zWm~^O7!7X<12fJ2|;#H` cfj3 ~Ł0o'mM{%C%Aq^jV?UXo7Yc7EtQ}lZ߼N]BvG00]x0[>vbq={CYפ B~&>{OvKn6_$emwNκ:?JNx*_VUX\3WrESk*9g{qVۓe^GuQ^Qkc4T^Sx=!b=U4#?*7v $_$qU\@>rs߀)rK5q)G`.ou݂lD23U3y:K /Cq$Ζٙkup}ֿxؗ%UGoIyt?~1vi(żvl|o̖7i~ZZtnڱpκ2I&>_f U&x,"E9LpΒqp +)yPs@ޫ5\xrA^%3"l^%Q3*_%gep]M~υ= ?1<"S6G!?/  x9x?ma~km܍0^(wU+z@nE?g ~y<̎3 ʩ"3u~nVuܾu囤vpٔg;du7 ˷U+>T7A`';TѓK!u<{)w=Pփw_ߑx[\гq|(2w9&CLL#_[O|;cו v.,\t4O\,z9g-!_\~]/ṝ @z݈G7ܿ!6?m/Jσ7͇Gkx6xhL>̅kz;6n?꾢_?񥽆(Pp+ q R`7+?wb}٬nXn|X?sl|@謧~Z^'=E3/?w>;kŇy,N1գ;O֫h>2T wMb2}^/8bz^)Z׶_vVצ󷤏LG:ЉGչ,=Ǭ?ώ#vu \-SG}dB.#},9+} OWW/*R}nK=~{Y֠#Yr{~A$p}|Gv8u Q!]3j<֬A= (2p_7̿Gfz^|7h~"ݯ30ElŽNO:Uۅ6s0/ḑHGɳb{!׭r?! O?8uFqly?0yKh.=$;_l0{xݏ[w9A^kWc[qVjI ,7QQΕkrp]Axg"Y,w<(Ie.c喱rE9G/+ʭ`rq]eZXUQ.ryETrU@xoTrc6` r+8d#or 9[-݊OD!5*q7mGen}j'0:m GߑJs%h|f2myFCz0V۹Ab{Y@pH(qIa?b/ й"'in],}~.~8-“7i>$?ĥ^┭tp=p:WMrw㵶: ✺8<;w;p1<1Nl,%a vad?&C;}É g/5ح2.8z`35^ 8tOu*cpgd ;gB?o'8N=vvdO4p;~<J94 qԺ|?v5U)W0_<ǻW){:kDzk{&בngqsam9nj{kߩ{Qo~[wWh^c(p=o1:%\#˵m?=dHkA ,=0GzgWy;c=5໚'s,ϛW\A_[̯"W|u84p>c8 ݭK/|Х+Bf.}KG蕷nh]HA E﴾&L$?vP~orךb[O-:_ubso oߏepyF/@rfM3~@Q򜇷>%y#Njr R`f=ܫ h;|c;P?ʁax'^̳cqC_UQpv^w\:&>0 :nz\x'zyF._Ncё g;Q8*8JsA20Ozp7V]SOԫ|k!;cx_8fۥTկ#ypTc{ො~=}z0迲cW'+ n#(a;!$nMi%{ dA?ϱ%@Ŏȷ%M|pwϥ>r^Uym8y]jyz{QǏxexe¿6m;'}wbn^{_O/b0h5xt<`_<|̗_T. ?0%3[Ȝgg⋐wa~γ@<+ǑcFü?#GyO?HżLDVq,h!ÇGf}D <'d #q?ǗOu"?!Rl#wv O0.Ǡ|G|A>_"_1fzj|ЏrsslŜW~yM2.ohz0x816?z6 l|&ػz(,~)/84>^d/1Wl|{qO懣u-ʤsz&toaoțpz2Z]l~l~3tI9_rEo2x|Ÿ~soNܩ7Y|Uл_xP~:?z+KWO5\(wsuBNr)碳~}:xc BzN}l=sݶ/O%n8.g9|`s;oa$ߢM/YzOg;^TLUWn獷@ ߭g}/g,e?i|Wot#d_q}%z,[oN84|&GkqZ>{}Dwhy4_Yş[brRom{!|4 rdE  /ܿAXGWz~/~{v5ݙb?ԓq@z{w9r}oi`a?=wb->_ߣ${:~!z^-6^ 7XwśfSv^~vNv2_DzL% ?:>wz_ =Gڑ~VpeB]& GoЏ5ʼreyngbvh,@<)5u?ny} ϲ?^^#l"kp4$WZD8C_"WFvwJ_TC2X?U\P[@~`~ľk9\yV^;{]n" .:>U86_m.%Ǫw~|{|s;+z|7yFrBR`ScGIUoF9:m_Gf }#r\zIvLJ~#o^AY6 yM zx^TFpژw0[ʓ^zǍV~qh|߮n{vuh&%ىQ1?ף*} TND"J;' {qURWn><`wpd|rlrnqoy]:L[i|=XG >:*W;J}ǁ_A|!Nw<[ώ.g G tg >ǣWkieNGm*z~v;ok]_}%r}~0_sֻJR}chOiuJ`>/G=ԛ9RN_c ֏ȏlΙ?85qx5sf_sGN:8GmWk֜E>=nrq]bF^fZWޫ̾xmV-f󥈣 ʗS nW3W=_cp{cN,Utloh%O2xj9Ŀ{e?GʟMgRkf^b3t81zWn#|oc磝;a)Gw gj 2oV?ۡ~6Ў\gsx8OƮ3vPc'~|W.32]\fqCT^ps7$[~+Y:S蘿;ΰHy pU;qyq0ܿyd/?~7ApHc3qa'.Kz}L/{iAvwb[;aN<6h&C3|ꄶӻsF60}OzB i=Cc h7J9糣= 9OKg=]rv忧Zd1;sߧZz ܈A C4Wn!)ay`h#|{ݫ#7.{^ޯɮԜp_{MLz3?a43M=fly5埻epU|E@]^36|wӀ?2nlbx7p^|lwmyֵ󉟐<^2ϋlޤ *o#9RZ___?^9}X/ʯW ɯMLnb;7w6br3wxZ=B+y֣c{v}=Z=<‡1Hk)n~9~S<29h3Z]N?v?wAqz%ϜVpe|!7vp.2q o$}kg7VcWOh;WǏX'~}Qֵ;q)MR]g3w߾cf'JUd?l^s?Rq ߏ_zt_ޣ#|UnQמ9Ǝ=#gM\z]3v¾Sq ]|= OQ gfvɟe?NwSh}-q%[ k0nCb} .On Z L)lwo>ph]:Gܻ>œo+%{i/T[t7CZ RZ} %}샷<#z܏n~ēmesx Mr7n Ł5vs9!,ie"ޣK9ʁo.b|y;s?U0)5o|}r;OՎ΃ M~ԞN g-2nQ(G\pz JT=W3$ƙMf|7pɦ|n:q|z`vo*/%n0~f:'Sg(žsI_Dcn/,ƒǫR?_77{ϲ2AEK^5^zYq'.<7.K9#&j#ϲqrvMb~DΕ>ﰼTzp(>2O }[ ]'Y̋ CySwtX;g/3GGo'%>^k8 u/[F#H 33J::|^߱'w$|l}g8׍&H/CF.K?GqQ|7y| ̞#k:q9˘ad@#o~ߐCG~YwԼ]vO/н ;p7vk \H!9oDL՗vbv/}wd͡ܬzxz2r?oH_a+3w|;S[$}^`Kze?+RKt8ib߰&w}.LJKzxW|bퟆ~c;WαKcs 3@ &?9_$GDHNyWN'}YmEֻ97{qYrg+l׿8{=PUׇC'43CS}v&kI{OÎ=?;kO:oMƎe\`Igvv~\﷽NdpʟўK?0⋚J}~lZo z~;#סOu\,L^Y}Zw0_>~}$_2,_u3C){Vz9>\^ʷIvPm#6s;v\;,~rN#}6>]k دlyci4h׺PQ&OlQH{gp>p}{Nh?u{%ס>xΈ?l&gf?7,g{b>ƌG.쐀A:8#xi1O,>/Խ=#ٵH7? -;n//{Bo#(/~O^U;krImeގ/|o ؽ=}ϓk1OL[ɭS{a GYfr}_Cegpz4y :&x>(Z^gx^j|`L>b8Plky\t# }(ӈxt?#NVؕeX;;.~wo> io1vBT>wo17X;z=x>@?:44p Ƴ\hc=< B uܿ~fͨ]8)9./-@eC /SWyqqԫJ+W]cGhs ϧ?>h|bH^l:oy\ v+k:6q zB1.]=g'\'f#^GW{-\<>#:~'ycH~tGl!/-Nγq;@Yj<螌LZ}^>,ϭ{%SW?A_{%sw?^s&9;sG3ى~,ߘ;$>[ƮdoB:{p%doңIoh@FMt |Skm)~NğAt~J-ݏ"[KZu޿4.Qynn@'g1ͯ' }ji}|O9TrؐLf=>١*V_p; 1:I![_c:,Ez>WK<̵`~~ [7Dyf:Y/VOqs= f#I?fvcž=a̸SON|K<7w_:5TXyK1ڃwT<^mӈu]>gwyҺ4-duw~9s&g=Fߙ^Uӥ*/]_:?I:Vi'L>z ! =/@8"v ݾNu`Ob>; \K?#'>&Uܴ=wywҌPq2эq2fG5񪰓4 {8=yqЙS_Oڑ ^Uo혿oFC1MF~—_k@h{Vsc''fS+2Oa~`GטͣMQn֛{?%I!W.2tؠ.?]H_x>>!bN3?8a)i7k4$=7>.~Ǹ~K}@.?kX(|͟?YP<}ǎǧQ/:.w(ãx,Ne_bd^α3|U!{{A];7?Jx^>$̷/e|E~ȿ_0; tط>CYQPW2?ga<{~,?Ǭߒ.(9=/oS.*~T'*|ۣ}BOG $L+/N%Hof(7L}ϩ~)ΩwcYcq;]{Xh_`|G^sG8Upo0$?Z/zF. x|a?0o{G%vNRDzsV~2;i"NϩO =՛yד?EGz #jxg*5O}wgm7kq t{g uG2aܼ gTl28wג|A1O(?΂ m{HxWo3a?LOkl~{/#7|eM3L?37un{p}7mBpo# ~pyH#pw=ӣ yd( | >|. i2x|~ 7ϲst~2s|PwOoVL/*.!'|4C28\a ^l<Ӧq˒-h{x\@~36/yN~fw.?"O;7;σ{l> Mu(<{ꀟ|)* Ϗ3 0"] REs;?|G ]npˑgE{_WFя#DexOei07#KK?3kk'_ǡ_1^uQl"@_=oݾnG/_D'|>(<p_8C>?\dG?ץwųyNFJngo"e|+_uhſwhGX׮gQ/+pw ?r=&yм}^_6!9+$7(xR*>η9'k͗glW@CGi%["eNN3yy_/v[捂mCo%G^z1 /:>G˟p/1vD='^ĉl~@o<զ<8~Bp{O=߬Gg GGLpO=]g{ oEl>f'X𝍟ɏc_\ `lp>qٽMm1Ok 9^o |0@&WBDnXnQz*CS?l>;ON>^x)6iC~6qن [޵?.O.)l%>5~;o}|=.a>=6/[~+N~!ܯO3on( Qxy<ơI~k1;~ӎ;?.gl%wvoH_Gy5M<~,| 9zv,=AR>5@pYZ<&.(8 9t">yrEᯟCMSڳ<,Or񧡸\]i+=qmYY]y#ڝ~~'=t rQO܇E%KFa{NwkxP~9x(Eᦉotԅ7lHww>m \w&Ր:#?tMqLqzu@etAq9+hO^[E3g-,Y\/B|)Kkwԏ+?rg/3$_n,rvRΔE}: {qУLS0d{v 0_ aHLq|2W1t~_W9gN\lxrff紙l=N?K=?kn?d"??7as}no靲g<ƟWC.kŕ"4#G<[?s܍I綎kr9WH8W ͒koUiy8[N&4^Զ_ޗ>'D~۟q{~hatЌA+><7r8DJ$gP~\Q!㊘%k~"?Y@R @i32އ-6ӷ? p-Eq[q)޲` ĿWz㺅_/˒m^??;w~yf9!(Qzn?=?>[{*5{`_ Q8.=oWEs SqX#hO4Qӫ!V^?~ﹰw76Gُusi9뭎$'3響@?ѸTgL!WhKݎ A|$=Ɔc)ӃS|6=n!We6r9(~#՞tR9j'TU9Om^N/ P*]SsuxcAσz6Gp@;7 .>H>%{.0k\{KW~`z^2_(|?pAxe|䥫/a''bw;~!q'D="8Zxk;vts f&YloAvt0^*<^}+ zo'e_D-G/w9Eqo&?F2s6Ɏa3zo~nu/*^?x-]`pK컖z{[˸!ٱ{!o?lgtn @}n7I~[?&ο'y߹#-wxRj~"?/dnB yi7mG\  ޻`칿Ƀ ^>Y|ǖuNvbZ/}WU l!-[_ 9Y;ncⓋl?,sߐI6FM+?wcϢ+GB\E0^6ޣq>g Kv/sjɭޔ/]Qiu>^{E>oEgL.2-ߩ9HϟG< C/' ;mWP?~>~|nYZOG񽵾 wr>X종?T̓K_{l$UFx= ~jl{?RɎ}MEq?#y H9mWJKS'^tn͜P^K cp `Ճ'ɑ=rb<~NsrgǯP9~sC9XwNRܗ,Pߡ}#I~8A;Vrs}_r|sg~J0.oA㋟EI/ {vT{w3M̟*T,g楏7W7dAߧzK{~龟%׍ ݺ>Լx8DbGǘoJϗ"|/l\.hzu A;;Z^qxFoa2E/VS)v3|Ks~x}+fm7N̎#>%ߝ86mc3oѿ'`;o9܇`?=Ol4a ]8<80O_7yW2Hs'h/ߏѓ,|ULgb u<p=$߁*> EWďyN4Y:kO_gY<<߇,.⺇ەgz-z^ Xȳ7 gǯoo3fw`۵z|ˀ6$)8!o# &ۯW\^lެD:_2~0<˙k-@yhx)$k|Y1\/ϋ]2*>lWpپw򤛧ox} G&Eo[rJvKzQw9{~ʂ>zy&<=\E|f|,tM}EղcĻ] cﻖĻ}x߽Tx*D%~Ż{VR~ߺx?%ޯOW_?؉{{$󝽟pbb~ػ3*YZ]_( ~_%x^Go{K\=b{5~Zx߻T^@E'Rk?wK>R2o&p_ϟ6=oχ`8z+R~qz5m}5-x&ǵ|@>r79_~Z95U/hK/JyRʃFKK E?~nҐO]bX)-{yܨG]{&0vkwy]Ʃvdž_QI{/KKq{ ]y- _|ws qyu4+jRl]^_*S+ڒ+[LFZ ʇ4-wF~.̇}H9n5ϹsE<9{ỹ%,i?;~9EuF=?ӷ#qʸd `{U{@>ӌxtgbB7b9:ya\Dnn3;)wZ;)w͢5>S1=BCU!9E.w駕Sԑ>p?/rz!K/P{zڟ-t/#8^޽L <7"c#1~JuĉQqei8sC|D%Q?a9sQ՛xb?peqQ ԗ;} 1{Y3O _7}wO͊Wf~|YbJæ|y)\~&R=~&+Q\zOޝ]/KW.}.~9@J_z9R2Q."/OֿCgzM/^{LՑw!;jgk:z}+u /vuK3z&;@9Z'۾O*sEvwݲPgy Oj ?Jv}Ƴx48zq._݇|c?LwI ƎO{SOS y8+)>q +5 ?'{Ȗ+ҟkս!i=?gt {j)߭?5d;z43S Y O_;Pc4 ?wz1z3  {}<p8z-W O~'WυyXJ'#x׵_:9;=ʾpv<f<:/+w_^*:Xto.:n@? nʝx F3g{n׵kv^iJ0w[g~W|r~ k'7|QBKGbxGDžExbi+㗃^~o]bS@ߤ#7ZGx &oNK?{o|Mo! (d'UK'l?q/1^]3`woiRJփ<.^+v3~~Q̟E/AF?y}:p\{EZA>lOڥyqzDZ9%n*`||(kuLVOk$k8/&lg!2yWƒ&oHGGiox.< W5~ _?~G¯l K]^?}$k.Mc߇tg!s '#;~Cx~+|2gs/|7q ^MwRƵk,e Koa>8ӤRz>QCz@]"#q>5a&<,n$חo~C쯙bڵzfr/{zxywi6#qy}xSDžIy2xANo(^źx:qx?Xx;ټ{yw^`ˏݼq~&?>%ƉF?y ^O>kQ? ڇ:;yuw8|5;G=WC-ʋ~8ˏW?A=$#wJy#rGy4K{~%p=;qEx^dook߂ճm8M<ݛoԿ_Q7c*ڟ7+ObH;.+g&gwtygoC8<ٟXfXf)?Tź>b!,,W?bŊX~Zץu Ԭ"QԿZZ'i\$W Ok&]̏[ւyT_mW@P/{-(*-^G=DџySc7mqqs$[dn]Y%k4/vuLV~t|?l3|2/nxOv]}x~mmmmm ??gSF~'O^oTW?_~xOɖOF? ͣ͏͟${~Cv~ +$A\Xpl~:Nաe]P} *xqXMD7Ir2ůJ^S,~nQBS.UßBgGS?Ovljzvt@NGPK3 PC/WINDOWS/BP.TGT]O0$W\LWIbHl 45GV;ƿLCBPἏ -TJ˥ 0׿Tma:Yu_'03V`~QOp`PVVQ؜? YJoK[yg*q-]]ξ⸈N״dQCH`z{oճq}l-btugYGܳ[,bt4f\(v 8~D4wU{ xT ǷHwG{G@l7~Vm"gEI 4O_-ړ^6&|/g^5j2SQ˴!#8.uNAw~pjg&ӏ$;,Ҝ7UmMͮ'd>'s ',[<U^u+=#ʃ\x9,NbHs}k6cx r:Y)[lQm2q +c^y7V޵&|$ $1 G?+z )<̵獲a@pJXnӯe|Ey9@ <@쓹nk99 8,׮^$ RiQ0+Q&/HVDRR|"Ua{JMm=6rA{{rhMmaٔ<ҏd5{WNFXr7"3cRͤi>hhXt# g!;5p- 7aCr܈0EsW E dApϬErƹL+(ى 9qe%Q2G>橱 U2f0˪ʝ\Z*pT_VT< !0S?R.gXɱPK-R PC/DOSBP.EXE}|]E?=1IrM4=}Ni )T@F)BR@nQ+ i^Ԩ{5jը1t6<MWJj PZ5{IvB׾N=k̞fzϚ+nҚjo(+jY˪NL˺;dYWo)u;~0<Y^s=ṣM~@rBWZ#7'G_fe~m%G2`rdhC%=YO2z);n)PnuntpmK|1/T$Y]#k w[VfLSt#s,QI',U걭#kҒyǛΡ2i0y`hv꺓ɾ仙}{w[/92۱_b?Ҳћl]ܛt۔䒕ӷE.K~uׇ)Gɧ׽|bi}=՜ozbtt gw2gQdjEϭXr٩$*?Pf0 ;3u;+OmrΛUQE/:En^OeZ3?6UEar?e'[Wk:uYMg߳rEa-'d%dP z2'WG~TOZS-x XSZCњUMdKQTٰi\;thS'BZjY NOYIk@{(t>FI=:OvpGf#Y_ҫH\Υkoccb'4m#q]6&nےh|6lܐ-w&ܲI|-y˝EKj>Д'Zlڸ[n[6Ƴ.\ =+qɦM $ْؼq[7n8+?3L\5klrcM 6ڴqC~u]Mwk'ޭwiwQO, p [_^,;a/Yv;LJwOکY/h SٻoyOVg;{S/|U789Jɏ٩ 9n?ػx`χҳwk=pY'o~oWT RQMU vUS7;ַS#o۩_ l>%%O$.GIRVl_FZDk~'y3XrҤs/?7yVP%). R׶W֛qQXY= Qh.zH\BN"H0@-ue=qǶ~]SEj'wq|_z ӳSnHqb7/?=Uu=kҳk{H@sW_N9`O}{o`/rGOH6V^9m*h=qhZ%* ڜѶ9Ɂ^kV.^=[ߔnnz塦t(Q[v[W^^p^Jh5w'UkVW}+ګ/&Xgo.8OM+2M -/Y=_L~D9-zLO^B`Ldrًy2 YCHGy.s4D R_׿߶jZ #%C;(ziDt]@&:U%w(eCa 5\ԑI}O^ג|)s_.yqfӻIgvlK/ؙssE#Gn7+9yUeiW*Y}7nx|Y^9'9yWɑE\Q}i\3ʌÁ\gtt]ՙ˩3Z > ZL_RT2gd~:]7GG7U; Z!zA_.=:lkxݟVU֫Ko$i qX1FڇoD?|jYNr`p-/ϳOYo6/} {U<O]??]RՊչQ*Ed Q{>5U\ Hy@ȼ#?̥'R\omҺPwwY╦,k [l ެ"y^QC?qSvv}~&燣GF?rQ}~ڑC+9<7\Y)GwUdo]թǓË˦edZzo@jTQ;ٗ9NJ7w%{JQ6ie%=$٦ʃ.ohaȁպ2j]z}E9+dT,T5SK{e]]k} M9Ē /:?ZSZMg$)#ܟ)AFX*d>im14-#Maqdhj%Meh3PhKXeTd Ճ~[o|C#DZ4L+3}~zg~v>:l/{f V)M} \.=C2v <"E+_h,ewxҡp c݈'K:M>qz{ߵ-^4b6Oo}9Âxs68e(nba)[X1W:m#%gmW_ bI뉵/tֻO1M7pOsk@PA61yn8Ŧ|9҃{zY{ț97]g,ZM{j]չڞ`2WG?^Bs3G(c:Le=ܕ gY䁲SfeΉ&9!hnxʼRfP_\T!gyպ)B+Cԩeɻu_Cu; v9a&pwt(A˞ymVwB牸̏s4$kaRJ*VmMoO%sOTu[憷arN[pc"?k$Xr$u䛙ͳF9qt[F޽TKE?WT >*xa@Tfkzf[uH /{!U=bxZ\ŨZ뮽&rF6r88&{o?'G}C{\Q>> uU N[R{E,}F#{U@+y>*^-iݲF=3Cz$ OsOp(_d$yɡR׍dn.4JO}; -&kwhڂuW4>Y M?۪`xiɽtd~_ozn: ۖ@ȋ[{^_3f9zASkeI[`/BJn.HPqzng>F(CU[5AA6 R=By2 a|??J<-,Giϼk]t2O︇,UTSYCp *VECnweAȮ16W莰!!d)Dděߺ!ªۃVSyjJ VE37sVRMWf.;s2NV] aJI4EW/8MSؔ~ܶzļogvCin]NVȁUT(=SH>!tƙ:؄T46_4ak޿<3^-Nm 8@&϶ţ{XxgTSp'wqDGWRk; o.K $ 'HR7=K{WN5`Y%)1;>>BFMJ̼,-eg'P2xm& gAyHSx+XѬݙh[?>TH\Xmon )*UWKn ػOȺZ{ kEM>@CV㣋&CqͿK]AVHjǨ9fo <~rEnϏ#42J}pǑu,NI8#]ן)zF*Lڦ/)=‹hCg\l2{'Ԇ!ZF̑?I!9uSYo˔X>ao_hz.? :2knnMwmke N~A<4k}d=nn g֎}ћtkLm- jMvU}Rȭ> ;:dhpsxu/ \9|͉ϠR},"x;ӟ;Z֋"(jU_OnerG9V|reBx'YI?{ygD7۟|#O@zyy/|ix% >g2#`KovKV|뭗2'Ow#gX:d ݠ˞LsMŗ6Uxy[N/w o/oz9up3Ίg7h[?t>|Ng6O-b`F2zE˜/b75;G6L9oCԳo~^ݯ"X}бzŒI^y\05u>@ ʢ(P^*yjʮ>y;.G2YMy`CEx#n>YAzXΡuoe eB j%)r8L:9`|~:uw4O;9DP,u3GΥWjAKQhzuGvP.?9g{ouuͭx33ᬊ gֿCz[G>Aj{ nz coҾ_'Sl/ fWW3*u$sNt(&{Odvc$p$3;ymD fgoٶn?~>T2O VRh5bIlH|w-oϝ77޹w g=n7_H ~YϹ~ks;{xŠ$|XăW=MEMѝ`(ޟ~:z۩b\rۭO[7+֞ԽVgQz&uN?4,[w5Y5:)#֥S{m ;(%?OVξ|l+`DX฽8 mRձ~H_?DGd+lz?pOX} $R=GMW`(꿲^=" 2SrN]FwIv]w?gTh2+aT0AT7O|KΥ0& wq q:hz]#T4AGobCt|W=8¦Y *둖uP .Q#OւKTphZO+ #_,ܱ=l5z <'hY|"CȽ'dyz?/S)b]}`hN͊>Dcw7-[d>o52 ;t1\Z1Be iހW2[]M%$i d>4ѡyy3vO4d~*Ĭd]ȧɩ  6cO[ 2;^՟5t~^s#9 IOl͂Jz1;IoD[#$I,{[B=ou݁<q!3Ɋ=+pUwWUlwߵ2?:y֫D`-AeUru'|*/3E|gҹ~RA$uޜ 3w:\Ta6tejh@i,˜gk>" l9zDyl'VA0n\~G5B_9ѶUant#]DUNUw_׸UL;o49Ƒ#;=l~H:<>Wyn u3dq#f.:splU;- 6z3<HkjM=wK:_,-p/ևէ'#ɫ&&?.gRnr>rj`t[A**Hږ'+8uK[NvyItItIGtuyN:t.tq'}>IOqEN '=IOsNzKt˜,'pҳ'=Is<|Q:r'I;%Nz>I+2'}>I/ws9tIIp+N"'}rҗ88K*'}vҫtIqW8+UNI_q:NN:'}sq78:'}^ovN'Q'}7:9;'}IIorw8;]NI줷8&'줷:mNIIIIowҟqw;{tIIp9tN:tItһN4q_pr_t_r_vN+NNkNa'oNߝ8N'~I?椿IIw9o9o;8NN{NNIIIIq{ON '~II:駝^'8}NNz>3NY'~I/t>_p/:CNo~I;qҿsү8A'{''~III8#NNzIuqusNu'~Iswǝ[NzIq:NNum(z7}wEfOҜ(>j7Т>boprԻ szԞK뇯?ssc٧gYvKXsوֆ,6mj(nm ﷬6oksºĖ[ om"SӺdǛanmKS鮻e"&Faw6эsaڍm˖xݰ6nc b]-[nظ[7R^w~[otۆ-tGzhZK;$nx' x 1"< ?&ѺfMnռnxˆMwĶ7mHu͛;?q]ԏ,lu]wH]nͱXZki=z5L {}ho`01Wj̵5?weϣg˱p0 h$ڣgU@МkdϵXDJ0g9H,ewiXk.~-zJQt%E 'Ic:beBΡHQΥVINlToė%}R_Ls΅YB ӏLPkqҏ>~+Pi;~v:U9M Я~3=KE\#KyO[Hr-ߙ[L%[Jw6*L?͹[N$<eUTCc7nԷ*FEj6.u՜TX3HA`uU#p{gE~T9P.yz.]+0G.7GrvpϽ0WJI᷅BT ug.V#0T*x gNYi- u<}QzzȯHckty[lT[UyV=DP DZU]ZB:A7?QQ݁}ZEV:X[sįqW׈q[f\Lj;{8OՅUˉ4Wʼnlc&t||0@P"..ZҪ AϮ ZB$[uLR{Ĉs* 7lG曨sۯX^O$Da?n$|W9s}4B"K"RA~>@q0e4(䰐etHH 'WȓBz ?-bu%;l?v]=Ug04S<y4bw-5bO^ZĎYKTj#?'RCdUN*bʈ]L2b~UZ2bUDFcb >e+ zGrϾns.gګ*ك$7h]zbO8w|j7dQF"vC7 ٟ0nȾ-nCȾ!d CDн!'D _ ?AdOȾHwȮ ;dM_},dHg.nȶ?Ć}jݐH{ȾNJN-d[Ml>J5dI%dϦk 'VFƐcM!!dDo"RO.dC>q!l6Ra,"avRL"-a&r7j4?Q a:"a{?uaSRYx+DؾȚ(DؾȪG*lv Dʰ"\"n, Cvya'7S no|Y!ꥎhց<PƟtQQVVHsHu\Re(kʾȠ#rX٥D]O䐲T XP%*HqBϓA {+_I+h+C=.JmkC*tR1\~|Uz^*=dJjH^~ȉa"#A+5,IQjGv;LׂDj"v'i@LPо,t A>i ģ*7ن"dF \rvLu"w_Ƙ?~Q _=,s 4(Go6k(GOo hWjU$3kb~Xl5@unŮ־ڍX>_&Y.!}wtQG)bW0}|(*'2R<z@PR4((rX90gxq7 N,-wkxS=? \LU0y._Vg>">׻rDzȝj7p8C? un xM.2 |ɕBčxǍ lOk[|\=BJ!F+^EԄ.gMiBuۚE]ф./DDx+GwǤ12`ArUE1a}3+Qk@ ]n5ׂZпϻGunnR9]ާ]wY n u}ݦrPw\77)9MiyӽM8qrcy8;W4@$ZWnW=>UM~$:_ 7|- ܱ;9j#aX_=[l+PD|}xo|D_"Kwwqɷ-_tF7yT~Ƌl8UBҶ#n.*sk@f4ϟܨ;Щ~ /5mn`h j70 ug!-[!- ^#rvuzV ({2, :' [U4t[Y6bIdNNd }$J ?!^ڀ;D6GP Ŀ˗5@ym=ݾHߎ9{n I*B7lr+,u+.둠=DR?TI]H;'T;]CN~JC8 Rt*COI;zpau7ej>*֒ z ~v5N6 1N׵S@:{q-nW]0Rgh}OUwNr@t 3%b}̰) XÖZ܀R9sQ|~m?X߲{wk6RZ/SDr';2ˍOGq4+& G֯J׹riwK34ZP)03"ẅ*:Gm9!n#;?3x½ϵ,}΅Bv}BcH\1^A9vHrDxE7n3y[APh{`ڍ'oDx}۾%hWØ9JpaUZ օM⺰ٶau#"nPX5XCaJCj F(B 7"2w[fOݒ_P_B_PDtO:eªQVu?("GMl6nvWEU5ߍGD쎪мhQ-7+X3IUDߞ7ڈG4Bo>QU)ہ~ lՁ[unj7HFܘ5_-)*PyU#Zq3>'rKABB5(RtK"nAprшЎنUQz~f!d32"H5j4 yVR2'dPN^!>_[(|!߈_n A" DDjjjQ\Tnw!m/$?>#d/bS OⰝƁ,Otxmv"?r5TB]uV)qӅKX7;_uvKnk Ҧ,i$ևp30C4f@ pٹZ%'7@Y# 7z4 j FA _ww.N7#?k+A]fBSJn ~+u7krkzyՊy7-W7 Zu%<ܒU1uAL閲нs(%wn1krMoF@115e1G`1tdF`$O34+y SQ0yB<NFK@+곈?/>'B3gIɎa%<($ҬJvt[~Xz(f@@7Ϲw?˓-wen? ({,b(Q$}o{.vSȞߊvH5@+Š׭ U :>=wތ7n <QMQm kUTml$iQm~wnQ,R2&G+7n`PjoQKvKXYZSbNKw7ww\JU>nNg<.OJq֥YeU3ݨ"ek=$T+:>gi<J,t^u~cK}D?5Ol%[WvҽicaCos~m JW?ܡ# ofq[JeAs~J+lÙ-c!3 4ѐ\dBgr5`޼n;χ߂/do}ސ}O{rͷ{|*bvK1=̉٫`(Op.@{>Ӎj ۋ!>Nklwﴸ]a{lrblەxaaYԅOs`mؾpjv> O5a*l/yYT'"lΒ!*1șI?M^\ ,y;͆>砽v9h;oA'hU }Z7"AౠΠt3x(hF=h#3hh Q 'AۃQZk44Cl ڿD!h!!hE>h?=.j]q}UsU t}sUϵ}rϕp唺U>W\qbsE erNss ߆&k PǨt?}oB:B[! 3d_%m0dπBli  g{~k s!)d_9!ÐCCHMUu!; AYKw 6d9kBvrjB /#UUȾrV+C|yWi, كx8 ٿU䔆ߠ!) ٿCx~YBvD)S /@/Ak3 9ǂvr+s4˜ ڟ;A rwsȽϳГ^}8W^׹W I< n u_Wu=$}R `[|aX˙ú`~'[s,QOOON[“1]c:c7o7p 31Cgq1|sk5֪i. ..O3)tywNx޵iio;Uw}]g"oG 7ܗwEt ᶦ#nkۚ~~X'zXn*2.A^dP% (*T @v.l-y]l,ݶm˟v5nEnynTvPGQdH7juOnmn-Ao 6z'sA{Ws"hFr@ಠKe 9 !K]`@u 쳑P>)Íz /`@o'l@?W]@?Wm@?#J'777E7/n`H UOyMW:w"on`CN ̍~OnX@%TJjSlbheO×pz:R#"_||$bw;#a={ q3zX/޹)G߹8F=g!@vj]eFhڻ9 j2W}`]:#?j̯_[˚S~ LFJ³Jx ҍأ,;_U w C]]q ㅪ GG Q7Ў}={gG.suҽ3R;&EuP Q.3nݨǮQzxlRJmB`5ۍr\Ӣ*'AՃiAU U_r;zRƕ=~ڣtwW\9^F`0W#F*d(G1Gep7j+,Ej'T?v|e~0OFOT7侜 ճ\Yg*QT:3.CZ5vhQU{n!KNj97[Z>lWX:*K'_ab,urJ--HG&ǦD^u U;B5HUZ4Lj4a"Nj%A\U aS;="S7/2"cj"T1 S\/1UD#x8Tz-˸Hj痏"#VkW\u qB gMJr^oHU'qWm\uj; +KM!B* DXcaY,qq!Q!p^~mF2 _ ؗz=gu 2R2,LHFxqr/OrI& %KtUvIVsKk ^8 T? n앸[T44aDrtP)RIz'W&naNyj6U8[$Q "HH]r)CZ@;!AI*q-d:’_X "B08'ΈUAmA qE!Y/uW+kJH$ oZ$$XD>*¢",*JHeTE:& WarN+jXm$a(#)`Dd^EE,i#ðd4U-6R~g蕫!B$]gT5QI.qm(r"Q4DU%葲 UG#VeP:Xr-+('$h *W-B4Hzb  "laUp6Aᬗ:BX*BX*!XCiaj5ViUW)-Bʅ$ KhX I]v0/-uM KU(% 6V3 vd;(WB,auw8;R$A\ڒn[t> b.^$?%)O)OzOtK\$蔫!풠Mu6E%A\ "uvJ, bU!!MK: r*!")A$HH\$UTH4ZQiUrU)BZ@yP$($ʕ%dDDKY2ƽe@WH.h%J4"yXDg Jj-N[RdVU%T[O 3*,3뼭ʉpfD\ t}Jp& z$[tUIΛқ" AH$Tj -j#nUi*r6W' jFH$r $A%$A\ŅD%AZ긷P%^)-Bʅ$$ARk)A\D%Β#ðd4hZmdgN4YX/$YXfrӒ9PofAٰAF]'HV x p#K3b!qbp#K!+nd)*- hbIaMRqc"F%R:E Ƣ`.9(0׼ ogdgKHЌRF5J5#7vndR+RjDJH!lL9Y:K.OȹRp#k]*R)R gl`(Hp F]'p#+ѨR!R nALR)#R@2B̠z}! i,,7Z%,Fmp#7K neS'f7YJ\K- J3N+v R$-nd73B_!bt^ q#p#t^,NARnD!ZEJ\nNAHH)"pc Ft @!rE{:!󂝪^n<<Kb"߱K܈"G nd),TfBfY\!"dXDgR@nD!EF:u )"=}yjxp#ָq@~1 1rD!Wd9d D A!R'(t>n8:{V"RE  <܈Í<^)BFa!(/zAK܈/Yt\n1r! R,R"pc FtRa)`F*Y6UĥYDE,:nO4((>!R)`pc FFBr΋j,GΈ,3_}B7"?Ig7rrp# itx|OHG,8+Cn0Z&UҵHFaitYfmc5B$]Vi-Y聐ziurU|*i, n?%FRp#4!EV,p F`nArDlEwOIl#iB 7.n,X V ܸqC1pc]1pbƪbb`1p44@צ Lz~:Pt=Ӂ7><]pt7Ln4~:p5ӁWNn8o:pcttFk:pbL1Bf dB0/7 7FH4nlܸ}pc 3f7ܸrp3c3Ǧc :B7j@ƌNH@(†Ӏ 1aC~rJ'ai&g gBtXtкiB$nDn\; :F蠥LnwEz$[nv 1so6$ܸjp#f l4F#4FqiF@=[Ln9"qGq4F=rxBa ¤ p#)op#:+8=Ӏ!SCؑ]bGáXX䴋0!"㺄t 0`.n9%<K7ˮNHH)U7.n%FXroOL l5BU 0gL p#>8#a8L)VKÍα[x`Ip " 3)0:Q!H"pcG p>;r# ' R %F\nd_$F&":#F`7n(nDAxFvPv ) b2(4.4|"C:/EvFf!]VBqS p#:IW/R nZfab+@cU p#:R A EP:/W_,p#t^_5% <#:ȓJR5% APhߌlx =B]RNBqm p#:߈7!"NcmI^/@x_<"sJ)UҸ7+nD!"y>CT#ϡ`%%hơ6#7FHH)"ay ! oÆppW !((G%y:KnDndzFȠi@/E"XQ܈7 $# ژ3 _ hp#xZY܈/kod*RZDJH!XY܈BՊor@tPaf@Fi7bpSU%0u: 3a92!qUS/o&,G&ip# y ȤU8 1zLF&ip#o ȤQ8^X<5L7Os<ujL72NDoGf72 >: ayexS$lXZlȤW8{S7ذ ؐIpjl8vzTL@!&d9^jܸj&p#xněfUnd).,mB7VndBPm&ӃB71ce&p#vMěL7OUu38oZ8}S/U櫞LjEkJ n $!,Q!<,F&IP(BG-e1S/9OHGBi ԉYLڅM8[5f72N3OzZ_Wtf"Hʷdu'o:B4Kp,F7K櫾YLEkdYLR8+ndNoxT YaBc,X(qgrdb YdXlڌi= MdXH\0IT8-aфy##dP 1 o`=BSś$B0¤_ 'B[9 IpxBZEHp6gc,F&U.[+OndR/uY+,,B*pB=Onq-G^XˣeLR8+\T+%{e7M ̒BPȚ(_+FʀX[7QdjpKzn.nd)ٮf,z9 ]7]YLڅM8}K By\K9*1 !LZE[D} vٓ[7-b؊fOR%i\h(72 7!dp# FS&TˀWMrjwr! @łnY.2F&":# n<\ȤW8}TC2F&J!kt]z=^#[8S/3+MHp#޴ ^HPdW2XLڅM8[2F&ÍxJm/ndR!PxI2e(p%{H)cp#x܈7P;ˀ K!2RAhE ' GE|K:ˀ J!|omp#n4Fio}cGp#~)؁@g)>܈Ԓ2@/T@! /W}B )b-}S/QxKU72iN=cep#Z*a1O6 1!(kKt]/ndR%Y!,f޺2F&qSśT]p#A)7^R %Z7"͒=t]j*nd/Sśզ2F&Í<z[BcT?#6Cz) ˑI 4S/x.p#pZ©=772.B)7CʹBL%3O[72^a1Fub.p#lNoD_'4h*ʷK\F&cmfcڹLŷT\F&UbBi ʹL4n4p\`C&g攢17908…;X=)nd^FB;6P)\h9LNo<<)s:|7p#/ i6 ndR#MՉ9LK-+ˑIؑ Y/,ȤJ8+ӷKtp#pNuzj\U5Iz9L,mQ72BES̅V?vzȤGX|[Ixsp#6mOdȤ;O@S8зnd2,Oqh (3PI "V/ ȤA8}[L*B8 něhc ZAD^ndR. 4o:nd2"7LW8 nDo#J4BlBdR6^gP4jUó gplF&9|Bt, XLr$8nd2n|-1 ml@!&PJndR'ip#tHndR. 4h6p#kEOB0vMo\3)+g72ós6p# xlF&7r+F`#1ke#~1Xqx(ȤS8} p#f 'td&BL& LmdIpPړndR!^6Օndb gu|qCm)&7&6iz8LEtF 1(y F&#%dlF&cq#% +&b*4B%.$* Jυ6LȒp#z[ L:]8ۄl2ȤA8xKBLZ&mn\ndR+%{xӶK72I7"qhED+E}[&ąS/3 vAت%dP 7UcIpeǡg~V/x1۱bqdlU$6#cUf%s۸c+-\'z an."ězi-7rM !9Lp#[f*Bb>d8B$۱vJ5cl F{ p#?X3Tp|F&>%{6̇Ȅ,a9,Eh|F&5b\V gafT|@!&Xt% +oȜY.Nm>p#pZizaW; ȃ⯅oaB{>p#=,͒=Bk>p#>$sN7vnd!©7䣲XQ-BPIN \Fqx/(Dc|XL8nndr ,5B 7(T5PI8~Pt]J!K729nLndR.z/o޺LEoZLzG8F~!i7BO anȤKTSU5)#s T@PsЂ4"l}.!S`ÆLb\h72HAI`E̕^7boo.p#6laiи]B˅*,-BNod!72K&uƁFX* gB8B&7jOSXd92To[X a9/Ȅ]3ރw2V_wl p#-^nϵU 8<-ON qUB gp#[fU '޶%i}7r9V/\NFĚfPpw}hq#'70'R:D F.9ZÍ0 1iDS%(Կ#Tc9"?oRg^Bm$of}#z @mR ssm(AZ߈8s$!>p2(O(aB`ݥ^ֈJ8+!M{ /60{T >yjcc09ZT?E)j)uxaK.YFFnmn[,nD nY}F nʣnܠqBgo4!8IC#BFS>>TX,l^lnzo;zf%(w:;-BqN7rIBrep#jXDJiW pBӸ;n\h-Bqy!̘JIgaPU-nÍ_ҍN5F[aâ 6 Q3ߔ 'R0#C  qV/ѓC3',o|~f5"4PO8.RFfp#?:Æ[dF+n7>ÍmdUTߜa졯Ngtf,|dT.ćkTdFUfj=okr%M^rL,刡\ocPSo H9ƅsU"7Ոd4,np9Zr+W=RnI%7V/\vB0 =Z".9ZEntH9}F qQ6nhRF*"ܸdL.`P7`7-ƍ7Ⲵh"(\(Wd9CY\5rU%WrU!\$8̨43լExӞD9p#& eO7LKp#IYʠ\ FVp#:'"]a{9IƁuM9ik-"QH4[MMFԼVi-V/kJ7ׇw be0Y#ìy58]Mƅ-Bp#k2%%P!#fLh(JWżQd^6Q<ʈ<ذ<FNnzڌ7F| tɢ*qf@tpHI9 7У7Bo?7r2y-,so(˞z.س(͒+c9M{yn\4i /|T'Vd^p#zoZ2 J:KFBM m(aa5({׼7G;JqHBr4expPf5FD9 [XFnEٸj#R7rgw.|Pi}€o%{S5[77B=#kOH) bx³,W#DmRyK LnƅD!X̒=tRA!_7y9߈¼&d@Z1FH3:8f9-`hn\̅Ӈ1!pEoQ1! Y/Nn"A EF7N0oZ+EuX7Dmy'r7c&^C W$FLp#l7bpÍXro$wEjI&`2e,Ma9btRqƅa=T3勳z7S -=fn\؛JPq.4p#[:R$n"#oxܸFkEjKvLvW'T|[b-%˼i-r囧1&Bw_vjHؐFafN)y򦅐ȕǁ+q@wFt4kBPr[BX #g"}7O5E\hp'xS/i C^ #0-X6~qaF>r&"}]C\u>#Fy/GeBƅv ܷ<jfM=SPۙ@!輷dzɅ NI?7r܈7mpcp]T4g9k^~AƁ^8{ș# x-2oD͏7)7r-h߂]`x%f!Y}gr=&xTzdr)K86qXQ=̋tV#FT 1jś ar;An9$ZnĐ&%{PI@I!/HBi!-B>!tt@opCOby 5I(,LF}|Jħ%̐^raYOqd9rEb7.qōM8K[@odt 7MKbInB0=љ ޒ==~Pa}[qFo'"gFǧ@J7|!HFfPRu-B]PI<s^BM=q.{oߨgq:jpc|S/nxf%t~=p#޴#{"^A%7M 'F~h}D}3mFnp#yۊxg챔ASg:@gY2I" K\X 6ļ[f E(t"F6tp#KV=OUJoJPh{Pltm7>_6HǍH 'ItSy\*!7܈l<܈&&7 $_Yˑ Y|YX K[eKז7=%GK>߈F27.ndBBvI6n|r p#a)υa*t%{\؍%fBqRF&7=Xt^$Ro}#Yf?n19Pd30bxUm@! 7xS/{ffoa1l܈E4ℬfح^H<ذ$h hR%;eanܹp=s0%LlqK0o`&^s - KuJ q. BP9$KF,y0pclȻٵc UK a9!ÍiIB|>ȇ܈"G6[|t^r#1KQK7r؉׾^p#Ԓ|£@&O/@@!T]gp# 4Q5ntLd5nD+\e+/7){ )N|VT8;HFzF>&o@+X^e "6> bYrdY8Ff7P(xJ ⚳!r ;e-NlE@(h$něq[zsyyoZ8n<h@Y|c8mSH%{XP-ttv7O+Z4V/7BLJ);Z 1TkL>Or$!^hBΗFY3ع#y0Y<1r$(ij|PuiPF~-BʼncB:$]31TK?Z· W9ee=-Es!ܘ8cu]+FWIrEhF֞b ƍf 䩚3&psR.$!wЄ$m GBK!i@oN !˱}idCɠ6L5/H'l£Mzg e>ɶz~vxӞndMz#gp#wna!:7S/nAh)|.4Jۗ7r!l܈7=~"2 7-nDo#,zP3a@.i&;„p#g[# |K6%`c^O6;) 9IE(' F.EhrurEGjF(zkl¯JZ9c*$|T5nDK3TYfFp#TV/XX5~PA/ gTNu'ˑk9ndݠXTw8ϛ4nNyaPb98ļ9=v6p#_Wg7rbُ& geO4c}AKN }Pt3,FVaKdVvxd y/hB!%{o·gMyo^f_^ }!:cC-T$i%{k7i͡d˲=lN(`%BEcNgGGFLx^z⚣%=El3ةd5Mf'Nj\n/V/fPtYDc#Q&d9TrD~-33V76ULq0^BXP([;eTY_V/PKi6ndX_K6Xp#P.^G\nd}+G+d1jSr?nyXo@Y8[z19id9h ąƯF=vsy M=p F&6@+ l F&!,*:o% 3[r~!}R^)dF7zBK!7d¢Hn\yHBԼ<1C]ZG[ yy v1䕃Q8`y^6fZ‰?4A!.`%KlnndR#ɫ$dKAx[jqoIM;K7BXm֔N0&Y nDo3#?fLZk0ZFn$>&G\=XqL,˱,{PLlAFΨN22fZo7r jsCm<:GH a.|}-ŲJ\aCYB\׽ꅇZ:nB -Û"/G%(ą/axS/齃`Ip# vȊ8йmFp##nDBL`ׇQB%؍dߡdlbe0Kƻ0kUF~>ܸi]߾^PuzAe`^P727KxhylœF.x[6ˮeXo ifWd/ȤBKv__uߒ=Ngnd{2"Kf$Y>7R@mOIq}ƝFozxZhm.}GK#ǁ5$kseB:&\h>܈FNnd[bJ-)NK9Q$ܸ}p#vgŐx܈7Ao7bj`7^<պ fA$[{{/ 7nB,5qc@(Ul`&s ܱl BPmFf^%{^1\Y>#F 7ǍHM QBK(1'oz-B^ʅ$DX0Dk!Jr! a)oa4KȈd䛧cABOXz4* 1sNL5 (z}(V=7ۅa]hkJO F-'(F.˄[8' A |!l a,pc9XP 쓛R$6<-oZ"[LC $pn\Ml7{[IpfϚ#X.p#K17n:I*vD*D io刎zo8pfi gNgg*I`졃?-vOρ:-B!Lڑ%cD7bo\QRY1?>ケ$ ԫm҂&5GD RM;꤭RKm4`sôN03NG;6KAkPmT#Fw{Ks^{k*Qmhp9Fgk67$nDTHY0"4 /{4{Иvk=wjCtd7FO \y#l=LS/AHi"0BN.†t2zi _#o8v$g/D(3o%@DK.zI8G[WLKna 7h@yS^p)v 7"tZx@!9L)]K㻲)NpiͺVRݑ!@j@o܈jn$'F7(-qR==1vk 7l#p n|^ )#o-`aM F*fzqp#MAgTHЗjv; 0aQ\. y |9N%2x31 h4!%scܐbnņ%OR^+{8pDhF޸ӹSk%ڵ6KVS/zu58;KfF񟹲ޤg"{(u>l2M`:5Z#m☫zN3+quW@,āef7#q0P|"4ܸ(=vlfVy#N|z]iF٤Z "B̕=(5nD7R] Dq7f>L n1[p-zW)^w)^;^J#Fg3p4J@!e ō$э`p#*ѦQ(`܈~)~g$lQiP  nUUj5&Bp#y#nphPWi7!kP_D(-) 76"ndϏF$OS^* JX> ^.S/7"܈AuN;;lGՀKֺn&F|y%K1ō@nlpA34$F$0^2qcqQn܈ yJa!o+ ̮PNMtFXq䍆s$ei #z)s(E(VA[3STA&(VhiT/ycj!Jgp#/K~Tv;K3-Ϩ^rtU/y2GōhCܮm咐 C%rЉ] $s<,5s-AqMJm{BĬ&BA#;6r1g&9Gg\č4JF1qLB!j nRFGGO1"qs]THW c"1P-!Ba<>骗$}S1. ZFO;^KW840v-:t>l 7:Ftn6g O"B P^7ҠQ%M5Zp!"RRQj)jVǨ^>8PFs%+{LR%Q~ l-GK7G4k6ۡu@i~@6^D܈[K(7D܈`F٭Q<&B'7"h(Mo9AF1!p#i0;  a+qX&q$qa@p#\K@FV ,"48ޞq^܈`celičU7bV5i܈^ K6B4x|V;;ф@ičb\8U\ciR kiY\K8D ؐ]*\OO$66fa,7x",uJiWSMyB 7sedYYLƽ(=* 1WxRE6",Bi"4f^튖|rzA.F>Ź7uNU$ Q!47!"Lv*nlz:;5 āz.'qy*8f:Kܯ쫃 a)W%2UdDh(Fwuq/nLz +oDƕ=8 ^D(B &vUI7cT)=ƮjAiAgQHK"S4K*9nt4ZTQIB5 Hwvh|T/ADkTA&/ nēOhLJJY;; 9Ύ̺T ةAֳM[GVU*t$խ avB!`T/m>  &I ھm_Opcz:gjH?AԘ%ٌαesa8i9GT,n8 ;Utp#U32q#t'q-1S*_XXz%6"4@q^S/FF}Zyz D&nDy#bT!jw(^sWNp#[հ}%8 ֕7k"17rusM`Αa0MS gF@G>]T/#/!D(G:$|v%q$%weM7͘efz0dF0>=U|kn.=1vvNtϵ'm>Tg]CaLfgg矙Ez p+` ^HWhō䍴~$4К nfu-aL03 t80tL>y#yWxċ۸8 #1αbBXPBsyw9& nF82OL_ōmxTF]cKse53"4laV[G۷[S/;-o$ѺF8$e ƶ+QP.̬5tw_Aܸb/nRy#iH+ѯyh]|EsFYʕ8 q.%'Pdyei Frr.n+aB9Fވ\ڵmڢҵ@eWˋ\#o䌋 nEy#/gju7&m7r{Ƥ=©IM:6qOވdx^NΑ yerB!L>mx X7q8FjDP2'<2Zč4 QJ(tT%7nh"Z9q#^@ (驢'oHF2 6o1%w<aw^N܈kdYw0QpˉE7i7ik7(`ܸ4=y{A+V qGuJ},SS r98aQ\xyno myd׫9g7HTMW<&B//pIhDh,Ǖ=f:b|hFk.'nē7n4!Ox5JN#xM1uX[4htBP\#uU/Y^=㔌 D%}%P%ƥ2ԋc"Fq#(aLRֽa42EnQb nDFAH9|+ʊ鴈(S/ժJQ iS0R`NJX4PksQ1VIYNER+k*^ Bčfq]M5t*GZk 6P.Gl&Bz\Hg^٣jAp#{7BU T'Lzq,iY` S"GOՈ`qfj}&ByTsp#WpčP}6F̣t(P4@!Ll\ 2]Kp+{T֠F܈ɵ9"Pxg'K1WeNR 5FP0%*G:MO7ADgN@-ׅ]fFԥSҮG>dVޅB\*](Dai/{g DH7r̦zMj n2#ōFMJ@!܈\ٝ+{)qY7LSR܈5F0qhNA<A\ts+י#čF3ɘzY6!P1AH? D E>g5"lNl2k1^Y(utiւʞ7"]4 ZkG軲7+Bま^܈nhǽ Z;Gčr})U*U}nlj I6!~Fd\FR]ubxS9 Ws$p9G7T3nlh/}&BYW 5F^čc>817za׹WxS* nl4WWf [K nDAp#L۽1in&B-ndKPS0z7RS4 y9#էzCʱ_٫b"ÍH^FTL\&BI6if 7\WT7^ n*NN I7ōF"=>AG}Ь+@adޣg\iHx)q Ҩ^"Av>S/Fw*(LWl''#oē7s卬(4oT/efwv'Lƍ "UčX.ōX*P=3-9Dc 7Rpf܈ nWe7N nD;Ї: b ȑV^Q8GL8GlYØz;QPB!ԥ[o nc7xU$d9zp< E0sy#''H2Ly#F^ō]+5v]Kk+aꅙ1OcPOp#IFVM t-:I+@'%^kU7܌'#Rrms114MH(eQ nJ7^Md7"o P:GOחy#A+oRy#5 fhÌQ̐>8bb/6dVY4Nj >x:2EHa,2Eq 4M(Ļ.l4#tZI6 ā3.7r3o8M܈UXpcčDQbXzI%Ww&%riR7r]܈JpcQ DvxМ$8#nDˀjTyBf/7X4kO&n4h4hg(BN#q αrvǙӼWLBT ɘ>QNq]KL7f7rqzdDpčSszy+o(>S/'7"21 ne7Ҍu@p%s$n68]P2!AyL7JYEH}"x2 hZ č5pJΑڒJr80+H07>r7127]sWzM`7v7ҋy 7){Sq\CHZʋX}˨*b*KT^p#ڲ4H9LR$SO\Tkڢ"0i\$FΠzY*,܈ƕ~*ؐ/3AV/hЮ)%75HO*9Q͸rED>S/{.+{%^K܈M_yZz ٌ(TWJ(DmW25&ByadJz FȼB eiF̅B^QW>7>$MdQՕ7/rK֞@pc\WؤbMC^dQ& fOݧ uT -;|nиD(8 Sp#ISMRwي50@̕==tk7nfn}کvҢAYwe/ n$ F 777r0 nD}vJ:jjo:na9ǁ9Úzp: H6rHǙnD]"z&BYlҜY;iOr d9.爘 Zp#vcAK9č(@!iQNn7r(FOe]yʞAp#n$ 1}+S`԰q,fݢ]Ф#o4!N>,3v-:}vU!sr|P+{$%nL܈K)`H829^։\JQ%ߕ=dm$7-nH+6t☃zq4%n 50%PO8a59^X7'7ntTK uP;;j ϐs 9G:Qf$2q#dF.cYpn8Q8h nDͺ4ȥzj\z$ӧ*VдSP0+^8A_ƬFǵ{>7R(~#'WO]V)e/iV*;)Α64WB%Qo ^JzYJpʞc"mPQntY;z@+o4W(ri0a^RKP8MSb 6i}. I6=Bxō$Wçx͞t5TkJ |%897>Αdze's~q˔a5|ejqEdq 4e$(MJB2E>/{̕7KFKsevsFGވک<}W܈!zA|&B4i겒. wLݡ.73 Qs|nnFB4)ue8uKg9Ү*G:S:n4\/reFę!0%88Wڸ^IiGg-g0z&,/S幜#@8G p4}cn܈sK܈ y#JFg^c3Ml2MUfp#j9yx5!\rzaf&BI6%Gڕ7ՠK٩g"+oDL~['eփ<'nd\Ɂra @!wfHT;77nHթ.*<\S/tiꅙqq#3ӗ>y#5܈d詒lW4}6ottnDcd^s\r]y#7)7%z&W%F+99PCu(TV72R_MX[MHj%0H̘zB!^ͼkU]S/pjdžO93n+,>υ+{9ǫsGwTgTruJY9QF`NC#@xH܈wnOdrn8 Is$'/ B W{e4F0WڸFJ BK!ܸJ5@K>S/Ʈ7up@!P1PY/a"3čPL2 |‘RF'oHk`p'zhXldhUYB>wvTF q֥]'񶫈o*FQvE7>2,cg9<}q)Y$i]cdi7bup0WါzI?􋑩ʑ*vp#]=UĬ'lgk3Yd֕7"OOl[Kؼ B)YAD7Ϻtvh丰USwed^Cf=nFLa$i7r83^ycVΆÍUވҽHx7>FŚ.A,@  7"\nD q٦AdBzP*Gkd@@98I%Hy#͟d njsfM*SOL%ryg'ٸ֤ WTވ1]jFY&n$h.Ay #]FA͕=bP%!&7RAOp#h1$`Ӽ,jTD:y^(DB!") č|Ftq#550FX?&B}"4td.ӧz }.|9\gY6lMP0,^ֹe~n=UH =ϫzI64S)αd/Y4H6Np#MP|B!f #\WYEf7Pg\Au>zΎ 7bls7o6ev0=cB{#*@^E\&BQ&MUS-ו=^b4df\~ZDiѠInDۇ7r3o8 1QcPϟc"k7rւ7|)%@'ٜD(S.y#6zάp*np#{^M.r]CO>96#;9LljiF$KyYpaMj-4(Aݠ ztQa(}@+7(S+#C(^31o}=. :"#oKG=vM0998sq#FjFbčsQ #BkG(fas]D(6h*GZe#o5\GӈeЌ nJ{e#ϙÍh܈eFuۼJAuz}GFX4+q˔8 #Bkda5HF ΌQ3Qtإ –ܮ̈Иz/D(sFGOfq#z: 4 |tҠ{eֹͬ^=)oDLFM4yigƙJVN!dDz0>S j]KFQ`4P,,>y#2y'7R̵yǃ,:FzA]m\|i6#o)U&ndfFMk s5X3x n[scs,®qtS/:s 9dÍk'3B r@ƲaL%+H3F7Nf[zIGulJP^p#̮%hf_6%bdQdrl E.h FzIm 8\α( k h rFs(MQ.g'Bcf9L/8[I-ȁ}!ž+{xq#&r-Q k vņmZψRRttl39Q\%h үrj@ x$c|%8jy"Nr^231y.SȑvT9Nfv*0^*x=Fn k^\Kl\Ly# ca*ԚL; J ͻ#N. zayqyF\ߕ=y= p#3Z D*&7R_+(z>KD1"4+FPWd/}6s} NfaB0Bqa%y#yWHi1(D9%#Bw'- ǑD$)"39L9Ԧ'o)b5nHgFv}ٹڸ^ ϱtߕ=.]4~rVziWO=(GOuk")aS=!Ӹ|+{&&B M2o8bBK;7"'B&BZM]] nܽlaDFqF㐩zIo=}3F}VFTTQd.ȵNw25LiHm2b sEÈ"7 mYD(DˆEčyvq,GZX\K^}.REp#:9My#H#<{#qf03 W}7串GNna܈ n䉼# u/rP"ruH0*>8FNŐ^H#adzq#Y9Қ<+nJݣ8^J|"4ng7<#5ȞyOI\4z!hX:nLsyh"%|\+LF>9&oT'JKF>He( Z\Fgd⥃=^e񲇘7l1I3B^g!]Ou{M:e6szaי5s9GT'q`yN62U/Î]:[7FrTk:#oD>=UT|JU/VYI>)Dpc‚]+hOsm{C,tk"u٣F+ڢ-KBlИXLjv&αE(  7BP2:<̅B- YHHWS/L}F9ҙ"E(G+;AL1#*I^R Ǖ7ɼG.6 7Ԙj+yS/5*KRq@T<W 7⌺EX!7RڢAiDhG3 nD%rFt#}fy#'@/ ;jFnR'QnD.=ZOnH]5<n٘RV+$9\LΑ2=0Ppw/΂]OQ8 nDf>+č =8PV_S,+*;)čvjf;43jiQ&n4Wx.87"n.)čp1q#2µg_\lxGs\Ӌp,'q+( z(>w 7.9 nDnK7T/Y/{\=2ו=GrbFnGOu}q#'@ĝ!Í$lׂ7"\UotRP"B!O\hf՚Y.M5d.oxg/Uo BlfFX0O4ADy#~ l`V/o,čFV!\mrzafYp#5ÍFIx7f?W)^؊o.a$P8B!t@!n+{0ˉ)*oBأ;OSfÍMS(˫5B *-ƺxny# nDЯweSn;>J1>:3:7rN vhf53==G|9vm$vj # s4 NNB$+{ϩPQF,s]}eDA"L&B딮 !A")Ύa6AVBp#G̸QTJuZ|x*9SvSGޘ.q(4g[sEhY%cץčx)qbFl=LPōX7hf ƅ7v+(^23fp#)QƚF՚@pZB勽g,&nQPd:qcd`2o1 "< n\z֩AV^p#;FA82[-[spU4ݨ* b5ү"B[_53Swe4Si7ōhNZB'/и%ifFuV!"Ƴ(^wǽxq=Od1› ԣU*ui7brh_JT@m^h}-MS-%j7pd=]wv[j15Q 7/!nSNF(g'BC=NHȝ @p#*a:K+ةO7Rˤ0F<$ZLU 'o%č.6^Blb}cхr"$qFj/!nLWܾP%mKy]*J,Ff}%!GSEfFTV9GOUО%B!yL !;%%Z[纲 sIȅNf^@R>kLx1r- nD 'BHn!{4qs q#\WX^敽,jh/!nDn%B#ٌ m[YW:,G12+{$u}s-AwZA[YF̙W{$Q^#pq#2!d ;5F$[=! f*^(jpqy_)AhKIȞw]"vHhAڢaܤp5č ƆV]M(D6̦^-Z\7_MPX\K(7.9WB3Eh9LJ~! ( JyOSrI瘋{o[}hs#OV4ؤmt1g{4αjF8 OSm.nFT/q^ Z7n+{4f Ue3FsTiwe:mLV@̧̀گ&Bti7>W7r9Pͺ_ǐ|t+@'=:}"r#DV/{Jߨ!n%LKlN1Z&Bkkrh nD%zFb/!yȜI.nDj4H q#z7k f%y[|5BphLp+`4Ɲ7 n\ԋ#o Z_sJqyMoL_^47z!n[&nLwIȑvqԋS!B}$LKf7"j5R?}FN'kwde{7uHRFA!>y#V~e >(ī #lCu+{Fȑ@p#enBzKzU<<7b}^8g-o4!ԠgM:^a|^: 16/ ndftf3y#bƕ=ڰ][ۣt$vi&>KfF]_܈t7>y#n|p6q#C+yLYX q#y]LZ@5:I5G޸0e\]9]Cp.slZJYL@ġB!2'c睝3nlaM.AYy9IƆ*!nD`Dh %q&B!nD ܈J7L7`5Ćl-GKzlȻI!{_nA٤y:cZ61P&VعFhib4$mbn܈GpcRFV@qFTiҠ-pq]ؽARlPniQӢN܈yKFŚKLs,^PA+7F +Us[Y8Gؔ(\@!ņ>[K亲֘;5 7XJHr6y@!M8]%RōKI6KbpcP(Ү Ki. ؠ^'IN #@;15*(č5\q,z4{!q)q#sYJqܦ^h[@p㎫D(35sq#X&BګJ č'dF*z!ȥ;Dp# ܈k҉IݩndnhQ.\ Frۼ]m_ōR(Qb2nΑ6ÜcFS t,c ,%T/Y&B ] 矂ahS/3_CrJ1&nDP@?;^:34ō |Js܈8јz :%f٤^PABo hDhp wU/Fgt%PIkFBp,P:^K(9>H߱7R1$~q^H=V!w!dT/'Il~kPk3(;;:Wա\zpۯGôJlzk= 6Mlx۵^K ]F+UQ^ $%3sMrF)O+1| VZO7(eftr;P1vMpv%pWAR81f6kȵY\rEk`p#'">U\ɻLjIxp'!HInM5+q9dsf3&BFGg}. q UP!=,BFtOBDqGPөNa\ Fw~B(͚m͚m͚ n;+@jܸ2F޵Dڑ74TB!<K{qEhY^9FUk ݼPTS,*!n7rK.-\F[EH @Ah$FM_їH54W/Bl]Z353tTi&J`&x2F$KKTXRrIآIgOΥk.]jLyJp:b$^7.#Bl(]peč7F7lhO &B7"kečX\WZ ZpečZ4Pރeč3Ҥiq#(Vp#ZՕp"#T IY$]C܈Ak:MnpIYp#Bǯ!zdR(DɣV(Hp#Lܸ{RnE4kumGOuB@ץa0D(i0fFFFވ%1mvmf:nȶ!ڵmZe"h xf/>Z5B7I%S%Mō!nDPyVk4,%B!" H9pcbҰ^v\C܈ y4-ևK&eRbY$4)˕=gƽ7"Jk%|Ft0T:̮%|!= 4s,c)Z(zB!(^s _M>ġh 3Z2x7OO[g^O$U:H I,#&Pyq#3˼G5L$ZE\a>܈1VXMcl֘>RNAY6FדsgÆFBj5(UBP֫TUAXIE4h Qޠ<z:ƒ>SE%h P:dN!zLBpWy]Ki;qE4iI mfg xMtq#F[q#фx ;F'fԶ\&BYzEhP0cWinTvqc,^Kإ^0~Fʏ |qzq#ݩ뼸5[#n 7| %nq-B#@w2M}^0ڰSϵ)oWHLs>l^˃&t nĩƛbtVӢNZMAM5_^5 9brqrBuJ&qH亲G9Dh 7[.y#jfTw_H܈p#3S*ue ny7<zsˍ@_7vwv65W+{ y8}ڭQ n$;F#>o ;;SF\>v7b4%8!`>;u;,Qq^+#n\?Y^t6q#,c+{'^"A&]F܈ x"A(RIߨ^PJzK7`I+(=ѩ]Sʐ0m֥[ͥx۽砬ĵDY (_1R~0Hڕ=$]Sӄ6MGoƵ[~3* AիXNp#$*1e#PG XBHI+{(^7qYp#^L?#n|-q#jFsj5t##@"|&m` n$K$Awi7la>܈1کߺJ6)02Wx.yeoTqyv,y͕7bس\M\EȋcCˉy]č7>Opj[m(cЧڨ^237rmuk pcީ+nӗ{ƓˉY&yM f> n_ōečd C'ʈ9򴜸XHcUNhЯYԣ}XgɼG7AWh|Ač¸eǍ>7";;('sIƮ5W h卥JDzp^N΢zITDLPҦ8#N܈_oD̮1ǖ d3&w9BHcB,'n$ tҠ)rq#N}٠ÕtCO V?#BsFs -98p#GzdhgqcE^hU/Br%"|}Kg7,y#/uѯečmP(S#>0S)+{Eč]-o_7 ۖ{午i>d αzrM|,gQCu ܈:y%nP 7#nD\%aS-^(ts .qw-q#&7>y#, Mč4ϨZFzFwFJ FLCˉiz%%nD:ڽteϛ|Trsi爉3:NCcpcm q# 'B{#N(@p#3YR;;mРAn|`jny#UjP 7&BY|(>܈=Fʔ7rzaϏѠ[k֥=b\حraS2>6*n%nt8Ǚȡ&P葩^K/ƧW,NɐDhKBt&n^B(6/4p=вܪȳIM@p#%^Jgp#ZT%}s3WdA|&B9\^xQuekF A@ lnAR8夏FlZQPku1MQ#I>ych O9>#2.Ir 7 B\W8}]Xvq#*o,#nWZM`8hf;W(n,^]@(T~P^A_49xU/ifc,_ZB9eF܈< n P1`o494]+( QAxoQ/[4 F}YQ_=U#d99Co\@1sܰaq#^Cz%zMp#@F_PmWg >K?]^176]ō nđe> n%'8ܡOoP~WF nOVWPZZ}܈b7tFckIprF.#Bč<ͧߕ=мFTweAMxq#T@p#H# 7>~qZ"uN #@{1@FN*=@H XpfprW MzKpr-Ap4"n+:1[(wq#WۣO1;Ip#(˘w.-V@B!ōHG7Bik>rP4ژ1k"$q$FуF> nwxLB@ :sFg> nD܈,'Oc'π> nDy#- 6u7AK3-qZBˉ 9-}lIRO g> 6SL蓐@!nP6D$FҠ`ZUjm0WF씻Ip#tvvMעOZlVSڃtF.]$K>mIҢOM&}ziЧzmmΣZ})Ič L>6 4^tZ;T񚙩rR/KQ|X9e9S8G< u>MqYYM܈@PbZ,%jY!0QD.zEPp#d!%˷čHP 5Q$-dpoT/y]UښzIнGc.n$'76s5q#*S}`B5 ":_`D "Dܰ2+rAۤ6Gԉ@ӺWnSqrWs=$})~q#]YU"nܲZ 4[E܈@pc*BUB@!< n|LU/nD:+QA'W7Ҹ+oMhh*F/{x 7dւu.ŏK@|@3Q<4t(F|3&Bu5*S4ѹU\%B/ؼ!4U^*7&Bڸ&BYV47NWʻcm\U/yU/i(h$n=΋I $n7't"O شtBԖtl > ny<WSMS/M詮t卹%@|/q$%Lp^4Op#+0k |Hq@h:фTZݚn2F@Te B{>EH6TSFƆ48# 7x#(]Rp#8v}j{)"(tRA睝7=GF]V]_i͌k Svh=;POc6&MA_fō{v}2tL+(^"7"е7WzT M }V]:5xαr%9M,[TC1M  ^I(̕WVDK+^x\y#WOk"9$E=DhPG2^qNLB7R^٣#s~!AFFx.njOFH)odD(Օ$"-s&1a +_H`Z-ad%!`>ؐXAlHэz 3"4TPp#*XzFy}^p#*˩čHs-OAzTI6P|%q#9 4Pf \Ik]7b܈ھ*KlD(jV]#z ЉtpP-%/jr$.kvsSNpc3kV0D(,:7 ݶP;5hJnX.+{xjѠI n<SQ 5]gL4e5܈t}e3N3Lp#`DVg`Ç4أܭ2Qjk #"#k1 7"F4&Bת5č7"F4j7$ vkLW{M֪c"[b7+D(vjC nDֹL7NZM.q,z, Az$w9[S/0^ZA&)4X#oS>:&I8p@9>Ps܈[>dx)P6SK  4l 7GrWƥzi)q#t>Zdf.YUIЉǍk64tuh*GSE/5)yo`΀ѡkKh^ۮ'\2M^璐=?ݑ7 z|u/{,@ p8}R 5)~T&կƲčaDh0G,n 7'7aL멢 E:z]Jםa򲇙#r-q#4iIsܸaͰ% Ԡ\ nڼy7hPAp#p#FgeF U FWgqJFpX^"kW(Zp#s-JJp# ݵDb.zɳ W 2U/ nb=j nNwmWObjmW |njwvf準@yk{KZFnč<ю#oTrwvMz3qz @+{Kj媆f4ըUi5^WPt#FlЂKeoHgߘKrF(o3;5FZ[tU/?NIlPUMP |^$H6*Xy `P  a(edZMp#։2ER+{LD(G:@QSXqU,6oWgQdfA8sekF$HkSP;L ]fALNO C](07|6~K:'0V'o说ԑJRAƌiLMn#7 +λ+U\ҍꔍH631 l$d=tk]Za## GS=VGCϓN l@  aAloSzp |l cCuDP26 lcߖ 16 66 DHpP G$X?6 ĸ:p/$X66 D{%X86|C9cCr. f =xB&3uc$&`6pK0\TA+t>s2X]^n˯%{sg[2=:/՛0K>^ [Z a>s@mt5c6_ZGb'l#/IcriL%1*c77qРkuFsGmkIߘq79ֻ -බ$ {Pu#&3K"tgn~{)yIgxɁ% huE'=BPSZG^22$J^[ňPqWw-<$v| ֹ#8*D^AVMce̅u%&D]chL6NO"/^c=ZK륱>kxHn3O!/tz 4]3d,S13z pg-yIf^1$^|k3wNUk$[WAX\VD^idpӣAVK+ax% vjC`*P%ON$/`VwV%=U 4X/Ĝ=>a%{GhנMα>pqyIt dSZ`#443]ZGd֒Ė_xɵ%I6/D^٫n4yD3ݧ\2%R%}^^\Oף|Gݚn3S`Nr *| d ?Y N 3Mq(8T?"3?_{-:ZK+9fuN VZGՃO}3}CgX;N=(O}x5?*W#v^hmB+ہ?5to})1:/c'_#j=*+`k{@zj]Ji8Vq̾Ӂ+GW̎⭇%"'E6ױ/ 0];:{]g],+wB[RV\( 24'OgasN$*M)w1ot^@@`ܾ׬]|"l^y}%C#Uak;(NRL.:ɶe<{ 7Rȝl(K^~u!!j&\K(i );R-j Gd8,'B_Wy\SzwՕ8y}l靽HƘ5;ycq]f*܅/\26:.7ɾs+ ,I[kՑ[BzMf$܎dIL5"uڴѸz7: ڭIS/r~Ah~q$Ƨ~Wn꽳,_c5hw^b5Ƙ,?H7:ԍޗ\0:#4ĿG̢dZ_944dZ„$L~v*o+w¼8{k!x{{[8dIޖÅ[ mҙ>z/E]1ahwtS7 k~*xHZwۊAmŲ3bTOD,RdsGa1ۀ}UVze sLj?DN=?UtʂS͎4_f?fY sXofU,sU' MlC_Eo]X I b;(!PկA,?php ƉIv%.ΐ+}HˋUO"Fx˙CE#ֶ^JsLX pa7vG3](N(7tڳbNpwsB[zp9=XbPbu^jT:2ESe=0د9q2@L$uZV|PV4KIkm!@ͤӛ=$-"듷;+֬Mֆ[p89޵[ mC-K͇BsM\YRoqwMV;vֵ 3RH~?@Ѿs[hѽeKގAO^QHV.먵_Hg޽dVYRJuyhnG]:${^ӷ3W3Փ#|gzWS}פ h%!wߧɋIsWZHGib(c?_QW,V2ff{;}QH1c}o'9頰V/:jdvd.=oZȢ-Khh/\bBsuxPḃEI(PsG@DWíEd1CUoM;ApQB*D2[i=Vַg'ŋERg$-b'p> m~zĉ!|đ1*ddZ͢ɠv٣@=$=sej5](wz=L:ɬC`(XH7OlZB5zƲ 26XӪm:kS ֎׋Gv[6JXs߻nؿbuԒGVqoV'":7i<'5Z$2~=2nU] 3AFT#Zgy-\u@z}rIϞ=O{`Tڀ, R3R3}+?5zA޾&^$f !9ҩU9\tcXǩSt~=GX dX/gJ\-bÉ cPwklmh+*t8Xm]n>VƗ.I(߲e_N*r3La~+$1?E4HVy9KOl8.mvN-.YZtT,Y]+Y?`r=V?glySAĔMdV!q ޼}4:Ċ2Pz)U׬8hLː¾iLc ?fg7dy7O0'1uuZn6Y ­߈Xd+f 1UOH@yY<ͽ֒ sdްu{X3( 's]:*zsc΢PK1nڒ`|G0yc&'k2oVvcu#FٓHŭZDZγ~+sauةvŃ}L._Z6ۥ~28g9m Ǥ[V#ҽ/ ݅m֍a c#'kǧ8C: VP~X>sjF$'Bn%X? }sF# lHm >[Cɥ?ٷg7˓zw@R{g)t+|( Fdc4Z[4|zS>鬸#+Ғ_Hi~ >L*S0#|H>A^mj T]d^ծAp1ɕU]/&7Bkg/^/lJ Y$_H+v%5X\i67V˺ռ6Z'2,ᗋE8g4@r9v֢;jd/ JlI%5޾-UQ%ǬR%– &Q '.zAS}9VMV/C:"vξX>{D0&ua0_{}pl܎ȳ5ϭ",G៸c*Wٷzn=r h_F͛\c\\`ϗ膱޾do2+ĭT_?mCj!KNZ!0#<^Z0ucĸ}zsɾl֓Q21ˬ80x 4וJm&V 70#KC;&yj/񍁪kzj:pIDIo?o_ u&~>PN0riĪF΀_-9SbP^TH5.gemx 3Y[| ׺L~m]4qY*Oֽ!dhxLbɲEeŏp6+5`@1y)2 69ɧ|vZoՓKbttS$'# ;:ֱkvy㹳kcpmh۴-` |/{Lrwhu9f38"(wGIioʌ:JkZΗ&L}W읲?{`v8J,Y6Oy=#F~1C/RXꭢZl-$eңx̾E2sN{ [.])nB]&>Qm/ՆyhOX!=%"NKgpDxHAWFCm-|e 6@Tx}/*{+^ڕJ55<2ɡj., $G7>m6k&^:~q W"od,z9l"v%q*Y,QNKW%Rª]*^Zx!YIL[ʫ.GŻvv~ D'UZL}Wn}`^@nSg7Nj< ~dfqՋViY2*2p $M-Gh{dU2\2#SumXk]i)-.L C0ݡRQmyg 2 CJ?J(,XXԠ@Ԡzx<ds9f,_-u+>)rj7 4Ӷ=.j4PXR6ޥ%}U;ڐ:X5Kfա<^Cys81J-x6yY.ߗ]o :-oɶ*oٚ@m ._ Ru{A~?1Q~˯s@&$eolP >\ [*/oUe }@.UM~/Ȼ/xK 0I~5L~7G@`qVKe 2_ {?o0C_ٟmO7Igz}Q~7An?om-ַLWm2ŵ,߯1S8I{Ȓe&C,x.ojQu< \/3z8q{-6AhDBa`AWQ|kJ&&I6z8ēH.+0#Eqy%dK2f`o˅kf53(K ;#{*;Qq8z }yr +|@G_Nq{ mɔv͠t!*;G?UO.l]B__&qpQ%Y@lj~DЛ\0ǡu)#D㽗~tEhJ0Dj-)HЛyE8#YڥQU JQF {4+5${a%EqҎos1虂x$pyQFՍ Yit}h(mO JJ d u;i71{b!HFBV1Ao=@aqG㙺~TI#t$:'Uh05"i|M#u?HMu**ڙjGc5.j܃j|ヌ☲;s3˼G <x\qH#и?䏻?o3hnGRGiǭXwiLHO-SwRe gn ` 㽟Hm`ٷ)ek;|Z3jHi"iI*RDzy;]t.g_Z˥eC/cƾ[vƚ>8^w=қ'H*/{zw3zRzR{J^^^{S{ʏ{{Yzu]hGz׿a+סW܃K+qJ>ґh'O T`*hm,+@h j{l?SnΏL&z32qSB(³hߊ֍xfFshRw(uT8oٳ;S=9ҢQϐךՅ #̣y,;C9ƻ : 'Iz`呃Vapvԍ2_Cx&RE[x{QkQ~p YlM7fh}l|ՓV?ںhLl\j!n- T7MP3t"wX=()%$ίM.IjtS'_I~{⳿r{0h`Tgs}օoUݍ2) >{h=^@G׫=C:'WS@f$^7FOo>&Of"PދCCR{렐Α ;]XQr_*r@ WxKMJ|Rg|NgMwAۡD,̖-s*{*(|GY+M?:cW ;zs#SA_4GD Yh|IDڎ+=}۽}خ}`Z]ibwĮ)rijNg\$k22ZNK彟Rg\]*^<-I!RI$~MEV6+(~_5//2?Ӹ%5/z򔭮w5`kTZ"G]\.''ӰSYȷnx|ZaFMZ׾$xEa3^9R_)ca;Uv!ռ3r:?c ycS!N|NKV6WFhS(MDpaJ=CXf=k0$ 'oRa,xOeME/rG›S eȇ!:gŕ7Bܤs>Eo" 9,߃P%i=;zZϙ_z?V6zf{mߣ{l-n+.tha?|-eٚ0^mOv$՗^3m_%eiWjxgoa* ^TKѕv "evWN L`$YťytDC =a}T_("ժx=nrZlc=^B? 8=lRBӓA) y$E]AH1~k:z"a9E'E/%NuUY&dpI R=dY(R=JwY]v+0wX"5AqvƔCUH`*Jm0 5 ;7ͷG(GH{+o0emÂLm6tRhM%މEՉiwg0ϙyND3se}-5e )&zk"ïH*qDOuі'^MKmoYpOUGÍӒmژ8&U硚p2ֺ.hWo,Aj1x ғhP(HsZbl("O*h塪 6h¥JG|éccd(deXRB!_~;hF5 ~-ʌl۽mӘĒMc ʨ /`{ϼ"'>5Vj$tj?^0w ,y_>VUVjT(¿v0|??A8>w?%e]f kN-No2Z79/*}Uʾ*e_1Nq'O%Ֆ"/ W~kq+H4jVi>kG j>~ķqB0`O>oy^~ܳ0_ZeGyN-|,QMN2ֳQ?nFg=- 2D-=xB[B<ڰU+LP.-%uAuKM-z{L]Fk[-FChG >Zw~֕qAwqZ+0zWpM53S=T_\ZG{ma3\;7 Wop''Gtz8qj"r;~?I`I{f|7)(i7gRO=nFaory7C?N+///movG>OymʊN0f=u?nfݝκͬє i|*0]D6s;J4(i";UgRdj6L:/|l{T&kզws [~ %g2/>D[o8v"왳f{;~ x VO]Au<ނ꜂iaۧƤw4¬w)Sܴ.~:c97+H2 ?2)mcq9])ROeR3k:̠S5*= ov#t%.Aޖ}{A4˂'l|QkY;w{O+p['~\lLWo XԭY 7X**S"jZ-IE+=lO&oǡ NC'>c8:CY=X˿dصZB/^tRO5j[t§[R: _LU$;پ(_MlN@z~>uUqa+.LoEH~%a\w*R3ePVv<6˵(Qkx#i[CiKNo~ч26`| 귗 =*oP,^3)7>=[b9DdsIV>(l_|"RaZt*:z<0I^,,}x :V1hX)^*[ٸG8:GXQT kaY9%>۝׸4KC;=%m(KT.9YKyTZ"r4gcI8K]S͈੓DB$ij&!\I ۻ>2%Ȋ!kNvd3K%~;/K'/ks~''ߵo~!c[ ` g]3scApOm%ǹ=f/96pc|o!s*G} soݾ"eA8#g K_e\΄No]Ċu"VZRMk_85y|<~><~{?Nͧ'Mnr-4Uq|*&1NQ+fj z;YisHXTqD]\#V^֦+F_Z{)䊦&WOH]yKrכs%0jNRtCj7Z K[0@\X0Tr~u,9 gqA#ÎW\VFyrruʘuqVGNmk['=y z}^k(myDq۱{~UũT=T79~Bܚڷ|[Gz1m[|HLQ),Q<0#Qd-{ hYvS_*g[WB+l"#WTG8+<p1,s )1M؋A %%'w*>w!&kshRuLK/QmoEwV)#5oMj<IlqOH歰O%K4kK8L}7mGRn6v+N,}sYJf/sj-Qd|:uu8~ˠ5:Zp_oŐC<M>eqX퐅VHuҝ+ B]2dD7gu? LXFTNrVD:si{~ZT:U]V,,>5}5Do[/^=oHv0K찅9\&q4,DG/}V>wM=ik/UO?;ݖZ)a?2Ҕd X{L{Lڦ .a,Y,Qg*vor/'ѫ3 AuO:Q,nC[O5Pl8 {K=ͥ­d [ -:H#M8Ӥ!O#LԴ;i6W$syH`6 %&,iY3drZz<\s ek룪>z2obfT ;^%lm_{+Aɘ }v8C<:fJ\+G. HX߾-jZ9Td.'`|FXIȨ @ǾSў:>tɃ \(}Z~#/_Α<:OW$;O~o&ȯB~()._ȯT~qofr]!JUJ͖ߜFܸJ:~ p)֡DiN<8ovk2 ,vl >Gŭ.{l ^^:w n9boKҟ^7>S}#d30uG dȓ8o\I=Mi$gIVqu-jůepÜVtmPS ;:ޑĸ9[zB8p  sEH IXF@u" 9{ñO:zͧ Vas~ sZU݅߆$\+Dsn-+OW2E4!8իmߍ=9ؘ?ݏS1.XħF 5l.M旷71g2Fw[}#<Nqz}Ef.cb.`ͽ <0p |NӸ{1@,CW  rti_84450Fd@Gʗ ɒUr>=Ǔ. YUm.f}5'EZ^OL^N۪'xj{cAQŒx~]D+6s<ք֦!' L2PX?Da!T@#nIh^TwfLL.t6.tQbV߼f;7NkV`rMu]Uo%+iyRU;wCAMOb}4Y[T^[ޙ;ўw1VΌ% uku)Z*75\pҌVW,x}d64]-6 ԗK55j$qiVH Izqkxj`|LGz5đ{>8-.tg_^!9\Ǩ 1ͧÅ[imإgիjg35Ŭ?|"2 >][J$-3lTm4' K,;K9d1HԺR?Z7 g#no.G8(B!Cy}9 f͑Q#1>vW O=e8K-mHgT g/:U҉َ֛kJ/>F`9\CajLs~ uHZ.L9ӬOeo:d .qˏ*d uӓ> }rޓd7͋#aE2`F| yh጑ViJ. 'CWak:Vϰbcgj֗5߂ͧN,]\FuDfTKx]aea0@^Ͽ-.J-\ vYוN∵8E[dnYߡS>,FmרQ@unN$2~3_"g>YWKGL]KoÅM򳏜.Hu Xo]xlCWS: x01m/l}#ɋɠ.>{:ewںH_r|w*Hަ'9m5S@j޾c U܏d6U]wWl2P(4f?ӁN%5:fx"ݼ?n ja>`I5;<#d ߀3|Ma_(\fFX/|]ж"NTb|[|oIj0e:cXwL;ުh_,#enIua[N&urn[<ᵃ'h<==.Gűol&Z/v>Zz OGh~;`Qp^J7>r޴#q_/MKNbSdrf˓pK3"sjFa'9; }=7`ϏT 48U]Q 6yWWP(&AomM 6w4l,cݜm\xےϜ ;$ @}b nI"e}-1_86-/;$j'gTz98yYw%NnDF/NE2ѿы[Aw2oENt,=DcNt,4z4}=/n~tc*~a+6hC6ry)\"mȥv=XfK4H6? vYi6T6'M8U\ac2FTE-[ΥsRL-c7l›-q97a!#)XW`{S䧨Wx?A{JK~)ıK!IYGzƋMo+;L '|2u컯Fj/@ub<)k.&{CC(:GC\k~Ƿ8/h/. 70CC? Z-<8_ux Oݚpr2KvLx3xc?n!fu/i>FX=9w:PPڻ`>|АPXz?@m"?~UY]oK4BK=akr|?XŒ;Q)%9 X/EO߮:qTI .6q~ˍC[^j_˶*ފTW}q*Ք{6͜D[W:*^r$1zHbwGmVo9%[,](fڻiMTL+z$qAbOH^Rf jz8yΎ@V(J5i8Z  VMwa,-Ey(>{zsWJuF-Oqf^k>9Eth?2w{^{ m-yݡa-xkrd`` j-Wq2]0&_-:Q-J}a :^6͵FUlQ}:󚞺*Îʄq -T˖p|sL9m`\ PfrmKѼ/ifض4nz sO$3wPn@+}5n+Ʊ懬\8p^_K47yO"MʿqDS{ ~v"˦G!^CףB\4`Ӷ}-Z~`HV2:y:$y=RRyLaiM?9qV֮7EŚji84/Ad9*V,]v#mtJ惲*jut. >\)c2Ͻyk=7pSyեS"IjuDQ!gd!{}] ꏤ TlQ=@5HH#3M_i&E?Uս(yWufp!S2 wȡ+(Ϟ7&HzoKIRح9JI'KN΋8]mwbiU ~W B#A(qcߞ/%.wz2}/1oK$Dn[ryzozIAy -ퟝe myT*ڟ[SA/3duҔ84,9KOHXyFXV^.:BXd]DXW!U"{}/>-o;bt ΁,>LShFh - WxFdŧy+Vy88oWhe^MYj 4mc*Nz<)ck NQFzctb,jdWyPc$Q(=muPO$1NmϷn{$eE Oҩ~mb#[} ܮ/H뢁mI& Uvbɶ jW~)`? ['>3u+q[2/9=;b裏>yak\\ /g|2 \/2&DKeRXXqq@7;XGoL^'oIcبNj6黥$nn_ք|`}Rg@c_{WÜ.xMZcML6NUE*%5&ׅօMcɉ!DY+H76e@ԋ|QkmipL_uXTBr#u"N89yR5jۼ!]M@d)1/MzvW7^ܴtL,:bԒ䗊d!9ڧ&h-P5ThB7yqEF[c@fܱ7Oov8qO?o-dfBy";c/J?vƣ~hw?6 _7p9<&B{-/wccRnM.:uߺn޾XKn8ZqS[:z`[8f˫{@"}ֹ=C{B3`Xcou?yW+ hAoy˟xyd8pξnw=1S^:~]|c6E_Ƒ"?Ŕ.:Q\]\dr쏯ˋN!xs'[NlG?86' fď -AȁNi{BȟXҼXw ])bz.&=I1WXNl5.Mj:=rc;N?y|E0W/I:I@ v0 d ƐthHb,L0޹޹\:Ϲ3/.W`(Ѱ>A`zz̽} کN:uԩSq׭BxUy:&5SF,Xq[OQ%C)0x]3ޟ:dS)v?uwɵ55 O<;]_ư k?in? 赂⌔ef>-;@Go Dszwk}e8y Cg+ ܶ b)kW]Ӏ}{oO;M.}z m~^eeBC //{G3pr3ħw9vw#AZuLʿ"j?˿PkmA ۃ^ۃT96X-}RMڵ ,L;P7'a`Rw> IJ#NV z؄)s6>ݕƐyfBt @U& oP&t_Ix=(!o |'UtC', DuHg[؜7!oI˝Wo;uK9$͜WU^L0oa b 쬬ٓͳ+*4l:\&]IU%%^!qvBl/fכg/L;qrԿߓRPi%xAmƚΙ.o0)dc zo/v(zц vqěe79YL,3@DZ,^JAp(k:lRgE&޵7wrXmdˌXHNf&m(1R8ہ-$YۛC!r:Z`ḿPS6bZ1ռ30Q&cjg6@#?x`}Ժ.c;8Q]"oFeU(n &5^)(%筑l59R11i7]3j3nMG5ut<'۴iu?S/u~?%di11M y2`JUy8l= .6jf@UO^|[>s | y^trȖ- u/QZ%njnqȺo;ix `f`\tۀ]E7Nx pe\ DZf8p MSAxop:i,"4kuݝ:!n;Kpp;|1+n9iqz^ǙyDɝoN_naDFbP,|n^V'Dȭ€7o|~~빋}A?(VEl]sߎ5=KB͗@Xwز~c]ͱhJ@J9O#\tgnNhm Cnqxz 0[/%[vqnNcBI?Y?i_ I'xE4Rטy- .^!~%kmc}58l0lnۦs՛kl{u"]!ڄ`yNxdv0$wUx-wB@t0dGCg<"ŀ֦SΎ, :ݮ[Nxmy (]A[Awpc7GmKb:VX$~..8ege>r2ω,Yc Z-SE8\CyZf39X $h4 k;] qefބ\!S#] &iq>:i\7Sa~. |#wyOv4 {3G )v KiH(z֟ &5I qm|xM0@bTfEG:ǀ]d (vlYiɁAXiq4;Cn ;:Ղ7yΦ^H5FZd1 <Dc/v̵(9}P#Xf8ʽ9Q"a,͘Aݨ~A q'L~>>A񓦼!D<۔7,9hΣນavm 1`/rŅFCK{]Y9Gcꩤ+O?q$A|Bq$6P]Yy3tXpR뻢8dw$( BC5B%a[Wu[Gnnf0}fn.FfE9׳"&YH b ry<: !G؜bӜR=Z`qݾ~jnuyR=^~Kt6;yǤkwv2S/L´y@c˙'Lj[| 񂅗S/^?c`ׁuӛ?c6@e$*e/7Ee<O 75 x T#C  I_6Cx(ɥZH=r<8-;]ޯB*r 4cl=Љs66x'h}G5kqA< i>NdKaAPv'@e\_<rV8Gt4upqV,zeLfvNB`@,A6aJ#fAFkUa@S Ƞn)HbMyڝƴVgKn. UlGŨy(A*:..[m8LS`(7OFS?~m\M,4_β"S[M^W< 񠚠WSw[S_1NmMd~  U0R ݟ YMIdg0@둑)7I/s,H -#7lF9jV'q]YooC;n %*tNů`ȁ[Lڨ i1!=nH4]m^ũz(^MMKX}/T{YMWmy5;Ok εGŁu%U6RS|3L+OE ]MFyxiڠ-~E(>^J ڢ+xQt7/]W<O`l9{ݹn]gn\^"whwc!hj])2-{/]ͤ#؅tN7h\Y/GhNM :K%^hIdbņ\wzq?!^7U^\`IZ!Tu|<  O]7."~xc+Rj&̂՘Ѥ3ۂ}> Nϥ3Y#QX;N&h&ۙq"ˮax\tYfg_0 _ذ iB3X^U\L3x/`u )ԳxMɐ=L0ȡ<0(Cb|Rvt:Ms}`vY,{S:s|hS"x%'͘dFVx1d">Fj:m"oc.vIgJxx9<>}s␏zw8^sx !MV:0g473;Rޯuxg0P}uܭ5w6C*G&Y(xSC,2[w|*]PE7 ;t=N1o;zWVؠcHγ(%A4SAV%@eE^T ֱ83_U;f]=g]\Gc9C8)kvĹfѳ#eia }zbNxC foni,3z>[/e3~zL=F,D$dc<I:Tiw,⿇05kq9ӕHq[ůOշşe*FA-׭Y7eE87}_es/dQm |Mk0qt3 tt)!'Q%w4GQ0A ttί؎bBDQdGה)[8ڍ˱Iku1fwǥUB9}ήWt$p^PF_H XAWOč≦PZ{ۢ_-n_^XvBvCrx\JO_ڧMwwR@WN%5xϮV?)!1/T͟SvpouBݪ! O \^4p,]aF JP ;;@COɖN("[Th{ ە!R~+8MRt"HK 3'p;K>הm ވ]2h a~^/z!|s{zP3f!ZOncw`a6?xqqT 9 ObGqTO}6 /ҜyאȚvNR͂8='G⼸iжnm/,%D;KkNbHmgql S mPcMruiMwi9YLqq,.]5<o֑yнz33sjV+^=nw$j/Vj7qW,_^]!|}Μ's[GF{'ҳ$v?[c[rmC ܦ?77?Sw/ϴ+M; (v@η2gIkm0֋3?*裻"u f<{B0O'HLr?{RqOʳ;%wO4djV@HԷb>WS{{7 ȳ?c(O=D_[F67纙X+T-N[VGo?޳JO>KA>-~槠,NO]#O43ok1iݧIx.m F0FLfxz-u'$mƸSߜj=9 s^n!.}HFcjiq1!(HkXN8 Po#w84q8FBfE||~Q~{/|._h];X<+؇x$eč{o4Ք OIh\S*{Ҝym, Xw7%k~ k/\vx)oX5 +KC޼wTz4}P.ɱquM~UϞtf|IG|[~mTcS`",l3iRF㚸:Khݘ$fl#C僀v0H=F4F\VsHTہ&h yHQޕ &9Rq>OJqq,;NYI N^X6:y|h|(q6Rg4WlG)'GÓ|"0:ӧ0rg|mR9v~Mzq˟L3&;Jw~)wrTk妠ix~͉-J9DVbR9i̧> vZ6)%6HXñ@=/(* AX/o^Zѧ*MXKg6~f~zz׌b 2GAQ2_@IFw65.IAyk'\8sFɿűMk*EFO"&$"F&_<y:Oxc- 5R32{Z?mA6 dͻmX,gYqZ ^k4Z?V۞Pud$ վ}{3v߮7=t/}xwU}{ôuиJ{I:5 Em"%vɟcw^oڇ{^QvV`P;bڇm,cv z+~S]J ;mc4B􎢟Z(^C:|~"~fkݎ&`A *"E7LǙY0)ͿC_Xve8G3nUä`ұ'^; `?Y:i3ұ'tG<<۝\ϣ84 剢ӏ&[fj~0!N-wM}$r~&0* xHx7u~Ufߚk{õޱ7kYWCjFE ٚ]<({k Y7uG^mho^<)6vk!34wAvti /Mt7IKp1KZap9#wߋ4,W#|BmKsc<޿ ,D6-Z5ėC)B8ك +;;(!i>ûDzX;'a0 2*p-bgWohNrS$m׉!8@ w쾋ĵomL зaak!~ӛ3ziu7K-]\Or҅2̵2OC-,C9KggboOaŴ+p'ߴ I͡:ww";;95?5¬ng\7$ s~ >@IbORC76XʼFBJK/xpHIxy_ޱG B ǝ $ERq6my,)^ǀ˼8a *vQ1bދyJ+-+_Eƶscv^^й̫xvC|"YC/,0Μ%Tq?iI[[㝃Cnϗ M~Vstp"sdv5etbxS;ԾX5=潃uTqF0ǃbMFEƑYv!x鏟iSoOݷ9''\B؞' #XZO I)Z$`Q( Lm8Wex;j TQ b9ARapଘ =W> nư,U$O`Π1f7clΌ=z(, =xJgۥ\#hoΈ[|wủǓ|zIspuK^}75-d.ִ8?/X7\\#/?>ud+G 3a naWdq$fjͶZM镳o wIyhFD-ki QC!U$l |'=״ngo(DN C:nԖiDiZN;UA;^{Z?Ӌu:i BhX `xMj󇗊8{^eⱁiW"Fk~WیC!/8"rY-#^Nyp݊vr;mg59+/1mrF@>h01ַWF=Zgvjrkhw5ģ[x[,uҾs}f!u;Z0nopFkFwO1$jQ_jkSXwΩ -MZҖ2M<)mx+1p_|xx r2\CYi[/ԁ {HMAVQ[3´iG5-!L 4az]Gv#"|&c#0gP y>h@g YrوgAuQ\K-ǻ:im0JOgwni>ipv֡i"ȇOkWO_O$y5Oq[FY|(#b^\j{} A}(mՋ 60MPukAN?Cz)Lޯ,w 8GNAr]B*K{h6Ew'ڀ*'R7{M>al[vZ&Ͼ)Ҋ۴iu Lij0r w4w^au Ȝpm҃ziSN]Tv3^gMH-w///ޭO I0L_U'.0ʏ˥DG⌖DꑆVZA RaiAG)+$$ gxWDq v]"-0P־P.IhbCړX(AL3(4fsH7̹OҘ9xi?B,Iä^vFsboq}՞qZH_ˬ;j很ǝCOITDP>€zG|qġ [fۍ[}BLsD'| !m4z{D;B5[909y2-]gr tG{F Ϭ^vr^nwQ j@(d[go{Wɲ?/_Zh#Oj%+O/>$}&_|7`Bh׌t5ZbCp>-@Xx/SJ%y8qf8pWy Cs"#;Td"vvYtn{&ai snٶ r.)6}Eۈ`I[KӂgQMzqE3Qg5:5 ,&U<+.?%Cߜ$g{Ao*Ǚ%4[Q:mS#Fɇ 'r$spD?1EQdhPFчh j%G2*~CAO]ǁ5cԁ/2i fDe؟7cQ/!ҌM͘abrK~h8ж;l!94zkdA$]=!DRҌ(0nR'vǑ? J^)BȓONW3:< J?Y`;B'3=c<ֳDY92d IM̀.xǰo/=ѣlՔ6 d1;p,h'B2{XRg 3uvڬW hlG"RNq.ۉ+ϊ qrHbKܩq3@!0yW t4Ew싇}P pZk`_1TxX>\cacܓ[Tέ1I`1)p'qJVxy*>Pg[i@=Neڟ5͊uՖĎWiսB.OkC3ch-Ѫ~u;!Or;co+3,!gECb Л&(LD*=3f&gAhVX{^FLũ)tnxQ/ Sʬf9?o{Jz{/Z6:ol۠Vdvy=aC:z&t\Ϡ}?€{4A51(=yZ6+>~,/oFIL?+xSIնG+TVU?fwέ۶xazW ӵ,ǵ,<}cK^x48O=j4Ȃ}uQƉk7I<yI;~.!k-r\'U҆-?E`@cVXR)i`0^ ўaѝ6L42;ߣsfH$hG[Ϣw&k~j&G>Y3 Tx ""olM̾BCs񑗅GݒE@|GҪx)7_ɸ\ә ~ o_6\Mŋ cilvi5䱋-|^n O=\SiM0?!2jZ4Kw*SʫY I tokN-$7R0f'ejܽLvGRfA>/v`nGL~ўHbc=m?aʧF=wK?%vMkܡwSw4?_A[Gܝ{2@X%f>9su2Sv]O1ȵH1/I4E od(.jd-ͩ&E˝yBO{c?1MTt#B8?C,3nqBS6Uv7dJ)e4 i6qθvi rh<'/O<|U9ҽ /CmקNN=- O2fN*Gq6ɉ&BvlYa}(' tbNpxo\oͫQ%(y*/ 22 S7* qOõp࿦'Л! +jzp2R;{6>71Ds}`7Nx8^itO#oܻQHyni_ф[#Ї腟b\>ǰ#8X{ELȳTt$dz]Qd%7@y"ƝM(]ѹ`y!3ۂ1C?O8Tm!E)^[S'jHODK(fBCzܔn$q;@s}<)P;\l AC Gh"tCMVuI UV?|ي-[!鶪pҋ]༨A/7h?Fs89QSb J@#3MDe8#3{ucOZWU % M?AῨv'G}3o|#֯]!$n| e=/8.hmM@pAxd(L|CȲ{uXFXo!%Fkb۸&^C }ZP8JlB;LW6j"h5&7'd#_M:apN:}AA3)?z/hMc[ZnMy> oӫx^\h]شmŦ h!(%"_htM'¸:b.ތT^o[6X9uKZ@pC 4Fށ -YB䴩@hEC/ΖQ޶˴rh:םtA^P3kOy0|&f6qoh4|ٜuid>rtRn7Dš/d7.yHW{scKf^Ҋ9z1e)>|ߦi.tw5MWxj;; oGP }aߏDgY׽:['ޤXW{GvLNvz׀SZ{Xv>vc{nk^M3Rv;Uٓ5OsijnF:M~ׇųb $_5[H\&ڜf)FZOK>ĩOTot7r߹3nmX\|WZ 6^lpKsw5\5aIiaS_hSSgNw8W NctpNtkb"n?Dp8(_/U^TP{ I;]猊>(&ݸOҎ<c~l zOnpǪ](=4 H,tfڢ!OrWf: 'du]t]]9":_~qvz޾%>^IWm/>X4vW$#_4k lj&fsݜg5uf7n꺹YHn-x*Nn~&ֻ=x\ip5Gs`P_j)u*\wbCPH!42NWVrsvCoB+!n7L::K$J̨?r b@(Ɉ.bCh1}hGIE:"wp@߇f%D;GԹO_P i>;k7~I7i([po7w?' aR!56VԐuf 0JC 9Lf}/w⟅!9 Cq!]/@~BYo2 Ni %MOU›!~ K!^b ~:įo=}4mLӐszs߁gi_s?]迕ƾ q,s;ǯ7A!nECOe0A|_!~͘Wyc1~to o>\8&.%-eܬ=2ç=}LU'/p/cI-\`+-Z&(zh$Yn횧??]S%nj,E*j̇OKW$g9@&yu[Rvi,ja,GK΢|MWw@|I/74``׋,ZyV}O.dn.6c;!붃%g03']3U3S0 X96ٴxO!ScH5~|_;ہ6t4K|쾘B%]t:6t7_EQ:k'bP4n.QSnpg{:{2Xvє3ZgO=s,4m'_FSBpPC"w&ԋ޶Hz̡6q>&/gFz~M=1w h^׌q6cf3gEp_8U*(uS]~gz(hv DQ3Ou}bdntN1пf7MN4J#`|I}L\ wM.e_ xVD?,ʇYHV>D0L3^06֌(XEeu" I'\pו77J+S"?;.oYBjn5!W2gʣâ뇄DAfc>q䏫C2ί] =1,!уRgh^"H, To7oݸ5ͦXy(haë\6J?]]ȶ|M1' :6qN\՛ !Z 9Cbj8v I.A|2ƤP|>03WF_ eh`y[U@N4_]!1=4zMXj1R?2Y탁Ԝoϡ9"1c841ʿ"LAVXȿ_PCS uoXrwP 3>K墳+4}PC>T;7yzj9 KbӺB=mq⨦9ҡGç9eھWz [d '?{=3&6=mUfR :tKH¶W4]PHwMײ#>?&=Eh%tAj7_lM}4xTmsaDuN\VðF )XEi%>`$uΑloF键yYA{F۩c;b9o44z{!__ mƙ~fSANH?ml =ߍosN nX&ƭ{ul[gF6r[cOK cO a?pvq'pNT*/qF, Cj {UX8j>m0kPݠӎ[mOc%yV(ϩ?uT~8z=Val3/HZl{p5Vm hZpVB:9Ct>&n78vN5}Z':_oPQ#ݐnlVǡ|4MƷ'u^+.\@,qY3 gd9+O׍yн4B8HA9[%]]?b}Ԓmi {nPi웵n^]M;=<6ntcOJM7/驳7.W4Bڪ7 kvK˽Eָ7^!9?%o;(fMw>DBO):a\Rf{e@#jq;նfzQCm)#m~|OiMPi>v Q5lEW}hvgh{AovƮwO?l o\tbݍ-ݱA? _%R#U:v*k9G*PA]/6ͦ$P@s\wv=m[kVl^Jކq!"gO7;J2rwڌG|'%I~хVa#*ɽъ<ҫ[g3m.v5Es3q]5=S8:ݹ@9ګ8w]^IZΌn^2C6Z%ܱRullݎoCY,Ylc5mGjN^;;!xX'0fcR@w0[!fR%܏l{Iw2FU0,}eouyS@ Tzmkr {j֩:͛ %qR)nPCKtaՂm= SUs^6plsZi@n!;G:+ Գ~e+Vc5&6]m4ؑ9wDQ7xMOYB4h{spDY~h$9.P+[:ǞIEhn?#NXurwj%h޹$]өrϱLS.Ces"ΑMOb7T#bTM0!Ma:ȴ.D@0j9@̐S$I<~3@MinLjW.5fA"h(%I_]n>[b5óMn3t̻ڂܞu߯c߸cr/ݞUgvzgއ]~?keRMZjҙ1'%$y<=>۬Y: f 6;M?4Lo5C#1qة|KL :mYwlBhkQu7֮{c;lchS8ΕZf yhkqƨy+:B;4i|b7p(;6Gc` =qjExtE?䡹1MlL;Į[t[A_~;D[,˭M=os+.ВZ=s-#EMwŅEu PiugG}ʺ |tv"4nMW ~ BE=]%R(hb4Paά;P1{N~6xg-w5_{g+֡ ЕLC}F )#- J3KIs2H'56}9mjc3׃&ڸr4Dm= o0qkJ_ho n$n3`wanXZ@Z螶bnJr$޻d(~gܐg5ȣQS=UkaZVO]yY?Mw,78=~؉]ev\el!qxYYmu{w~_G4oYz7wmq|͊}a(nR Œ _$YH urhijTWA&ՊTam | RX͇:A8PBQ[hLk..i—5Brٝ6[n u9-vݜ.d,]YlmJo{/i91qҐeR;u3եޙ"-U:!GZ,ӾbZXk\gux⺸&:#'M5SCt<[(_ F_H#'s H^[sN#H0KKYB#z`Z!)`: |:϶9o0Xva}Ys{q5="_yq'濿}DRHYUqvYQ% 7kUn ?X]ڠ[`l8u`i6CWWXMSS%b ,۾Yv:1m;x7?Zns{pEvq0zzaտ?oð@7PW7-U"[ hՠZt5r~:|1vj4Xwt!>'ӥti/ڭ1c4B)nY @&Ct`lo͹ߏ6<"\8`8 t-m]sSmBԝvX_!>0v=7ΝihC'F釛>#XpcSKF1FX0ӛ@~uPàO#zW/+Nڇ +t)*'W"T ZVĤK#YU+`6.6:w_K LEiVA#gp%n].k;BNXfehŋU wm)ߺ`0r>.ˊY'D{sOp^[VߦqWZ:a'< <Ƨ?H呂A?༎iiit<&~7izMm4 ᑙo\?z;~"O67: 41JT=($֪WxLx;qzYȵϽ0Lآs7Ɩ"MfYwr4mlQ5RGVCkȮgǛ5fΫDZ˒6˴Sspd|QC;otg#I` Zjʈ2O$ng\=y&Is6Mo@8 Ф]YӜ|ۚUh%nnr+Ĺne#\򽟉rZ;׈Bm^톘Z) 7km~`Ԋ# *rҦ 5]i(@*u#^̕}fX,;hgX,!MԱkZ3 7sHeĸD%n!ؕ$5Nja3 ΩșOlj'@}37}F?i[3ʹ$c+oBØN.W}oZ67v/ŀg.$щ7L_l:4gMC)Ϳ&{Q^.j6&!Wڸ[AB ׮(m|\ڃuχ -35kP[i+7WDAx^vEų~v]n9T(`9׫I|~F_"V%=ly^(Q,Y^Һ/ewKzWko|l3cD |W"}-6Eыď +#}K o>g[5F4MQvAo?2mYHɂk Fzw<3 ]Wjr5 =xbWfs~_s+I?2;5Vpuwƻv;c0taO7;^/w`N9.ų6Bi~4ql%KW2;;܂]u5$Oyaϴglc?n =lg-g9~{Ys|] 26ʒSvکϾ')zw,^6Ņn]#Df_ |gkޘ̎W Dѳk|UZlњ}lWTm6؞̷7L;Ju#jjt$UV< ^H6ƧRBY.G7Ȱ̺녵wp ٺZZuE^ BiPxzv7' (jK筴3oQW.W}P8Alw\{w.mlU Y/[UӾ &;Vr^/]Ӵf7ݦ6^ə>ɾc\-?H' %kF}o䃫fmB֣X׌+Zo  ^2%G?Q.J~6RƷ4NF?rĸ|(gXհ8˳6YEKdh"ˢGDfs[,?pt_zޖYUB6㮿qg=ws_ޖUV_ݳJ0?^eFsnwnIҮ'oJ:̂':rF:J^5,|!J}:3= !Z>ϛƎ=.`7v }lہįUn216}_^WjVϯ8H% szG9ҋVbBQ#W޾uƩ{_Aiv/K[DwۤUϗ/ڴN.yԾl:z8zo҂I:59e3lWgzYY4o"D\v#?h  !wNԟ\:v6mc>Ս93[9L3bo RS^SGt'BՔGBM|t1=OfvLٲo39b~0&/rsԓz_)߁3Lvrh^ [z=)ߕk&M0Ƒ)){h\Q%t4H|2es60fC>,t]2e^Sng):|ZJ j&uWs}jZ*zry. 퍳0Mkp7Dߑ2ņ/'ݝNL,tߎĄ˵طRʿ=-Nz#>.\@Iy擴əѸ]2_MfWԛr@^ iX #vGJ<Щ䟖;]r~Ru]ɢ}@g ˧vU\묓 `M'*_)gݬ!EbgJ{SXh\QvxM/9LBnDH4/)qp8#"lpShg0 `G, Km;xNAmOh5)}"QeM<%Ɲ-#h:[ A$K,L3Ob S@DJ3F^2-xk{U_d,X4{4 WUTmfVfŅE$-M;l6j/TMۋ훷0g:3|8c\^)X7[=TV oWn9 fUVرeSUpX 'V 9(\I ̛KͥvkPe߁DLI0a-JAR'Mtѿ(8x8|n6+f^e7WU'܁'U[0 V`[ u Lu[02&$a!cZQ7M!T֪jk%~!#@z*2\Vjq?ٶ+'Svm"_c͐X($@+!\ełB&|NV@k(nWV᭪`^JJ6)š, ;fW ڜ(b#M2` `DsIq%6(VC;h} ŘfR[x{1ƗTU:R:B]7Zj HqH?}EC(X[P:>2WTUncR,Tm)/1wye1͡  .+(aҺWL  W8A啛YMmBQ(PAr Ȋ+۬VVQ Kd+,-s %U;xNP^dWmrVF`meAAKK6Zx <1yf &⋂`ěU:Y %̙Qm))ޣ?ap/B#wh@qmpI`Nc.I/}'/RrP,X2y|\JA!X)QF : *,P5Z\!AMz4r_l_1'ts( Pr&DR_⬨ JIµE ׮ +-՜q~O iU|2F҃ 䠤(t']'LE5c_}bU?ż4vs?8°r4J/ }\ 9BV@F$a;s?owS\MANS*f %e&?L*.-Vn`fotRpYQm%@=OFe*Vkޭv:ʊތ'UJ-/_"?8 ^dZRd钹+uZEyEyW-YTk"V. HGSn!fkirVs{j'VI?ޠx.p+((pqҙy6aO*?X l҃7U<^lc?3#@l -@S;)zX%tf/6Qpj-ŖR>!~be.-`I78&P)9{AUU]rжvW7\a Ѐ< BRMb YZFvsf]9XVP\ VPelrVV)(c|s%J)Alrn.]@څ"P[m Bڬƥ8?SQTV[ے2ɬYHg|-nB*ұR~G@} [C͏Z fWVJ7[Si.3P#abw*+e()*)sV>ʔ ˆ2yi "v`&mL!z`´ts^*32<Y?('u,Ty[,STn/UU6Pl WTdá2Rb´,UHj5؜ @xZ UgDKoa# jnUQCg3PnHcr ; Mt-GAxpB?qC?tU6:^ydm;vV4o>[vs [<~V9[h}%Un^ pX Nhi7Uz&G` M&:4@08l (1ҹj @kqiS.UX4hoB;uoAa!EAy('ZjYCMqqӞSJwo+ޒz#tf'>4{+6׏/+毜=gQ>X:gUAAԅs 1U\bFDʧN(3ϟ]+g-O,sҹ&E?gs7bAE*S^[^ 4$%*{2f.,vV+v3'?Sb~B^eNt:LU Y%1h(BdQ^rhN_n+aP}U5 Hx?2unhBi?Ae@K}ӛSSFA $%V'`?  lrf#I]Bp_KmH E^ XU;6I(w)}%KL@:}T Ҫ-fA|{jAǓ BV@;0:&Y#܏-Ԉ/}!I3g 6 ȅ{H@ *[3@7dž$!0"u&ơ L*H)Yax[c 'bV؊P0lô!?Xzs q7!I`:XAB N+Y,А 43H!6E9[3H欜HZ@+ '|SEJ#j|Aޡ,C*Hxq?VV cPTJHvb(a~[[U6 Wxؑ(j\HJ] Ȱ eTҶ3&A2r,..-2U3AVPIpB(! BGYmr`%9KbxS] ۹!=OaT\_q`;@7@HНTXm$3##:q:3O'$s"n?~&`iYR|^S{&:0%|,@d>8(0u #):}Kv(y͜ |ç{Ɔ=m40D^HyA +@E)=@3/=0{7 sg̅I; 35#3 Yy [@s6Q]Y>!\9 DW;7U:A'`nD͘F{LEA@Y:wlrf%7U L2 j`2䒩}?E RB R2O22'3s S 2X,~?87q*',pnR2 &ܤID4\4I pɎ4y"7dLBO7M& OV2I7eN~w9ddL2~*MBS!ߩ7~Blw??lB8w?ݟMH7 &Y@_d)k A*%E%aVBYZh,bܭk;+VYT^g&dəIF08K*haXENS>PQP߁+/l.1V+wVxh K e9αVC'@Q8*eUvtJ?hz/-w<- KW)8@,4BYa^iP s#BTv#\jFʠq@oP@_Hs$H#3#'[6|!tk 6CHh(RJJ'‚ aeH mI`I΀WN1KXƿ)P&C?"@QHP~}W!Dg9w){pqbfݰ7ȤQ[DR ˜`q[b>]i[\YB+-n&p L2697k)y镯j-N8X˹[R-xK@XD[[!XMgecA@uT,b*\bo2;7j/C킼V4ݗ@rAC~D< *T(l@#jBJVk7x`ݣ r _BO=L8T% hHBp&8hJeUZ! 鬎j@KǠ2 _,:bRWA[Z]|DU3 m+AO산aʉ:X؁vx)P\G9 ]he͇U+*q;D19Jqn7dDw*cAZ7.UZiu;8 dUoARF,Pɬa;|H+VP%+=CV?G籀-0|OwiCkR U dZ طhed,TNi27":8 &)Bѣ,Q P\(a lbKLt>+=sSZl-\f'`+) BeUhɀEȟf#~ۋ?')f?ϕ.RVF+ۢNls38,LݢUK `ʌro+na] 'ۼ/`n"PA, " ce(O4ŽvоjS1K%@oEU#+Bz|?9z)qlbMQj{,ⓘ^(+WזNtϜ9LifRs^ǞV ΗTb`sYy)u RET$k9V0V@ymǽRgq+s8绋s em.ypVnd(=н+ՋP 0@{@(|Ҩ͋3MNuLRW₭aC ?3,Y0"$`{9Ґ`(*UYYe7W63miJBȇס < Chx)A ²zrS8LjWxMQeRE -l8͙X3at Lf 0p\KkX+^ȞcdE'9EWW7zӐ@kpX) * S:@:Pf97ma T MUۻc!~H\&gf덅o)t0q 0X r@WnC `rQA].&n03(|-qF3-$Re/]58NtW2?d˧w6;%ж^UI,j_N| 㐏2x┧"OgGC>~  PӜApwx9(ΛY 0OO1^&~x.Y@`ВWVa_JccYQQyUpeűkϬxEyl+&8=)zȞdRm y _`}PĖS0VW;6<=Ң#%ъƾl0Ƣ>+y~\X6i˖2+.n sNOB h.D4;@C~:SvQ۲|3nTRdɾ*2ЈkgC'BRQFCFq~$ hNM%Oiջ`tfmt#'i8H8ͷ=sZNRyFB6C,K`pqDԊ3,!<3 hڭ! ZmV#[Jp=T۪*W@29)3Z&~?&(. KUU:Gm^]/YӀh9|فƬ-d^ecJ[~}Ln6vT;HMp7M/=n} +ˊ)e0pDU2:`jirA`T teNH3x=t#pX8D'fN%D߉{r8*k"fO&đ9qB˶"bqb+6We Xȅr,0@W_n lrR1 KIp*$@yA Լ uA%(zjQnD gLUQzx&JANUlfj{Pq6_T vyx3v,fj?3]1:4DM9Y4_GZK,‰ܱ;x ''\&]WU#Y| YPj8H0,R' tgߞ$MpZ9ΪJ:x%U[BqVUh2+.aSt~9rr?#eF?`$Ы`>=V< TAiXӑ{`x1 nyOq(, AV ́q LO$An[K@o/-Ӻi. cAgfNCA8h-V/ej shg+0J;DW1FGȃ/y`ɼiJ&l6༸j[`srPp: pK.RthIeXh0T !wy@Ѵb-3 NHn½?ĩ؍|*!T. (bFɯyŭ"nϓ~svBa^*oWJp~ Z4ULb/N1_ )z&C_5o0Lp-tTZޠv JGbÌRB`> ݅~х6%?-ROp,l2pFz4;CCF;eJ\D}Q4Ue/L2?DjN79=Xfnasb$@K[@X7T0G! PA_("s@VK8jq87\`OIVrl F ]ꭲEeޠp40 ( Ö`|7᧗ ( ؀eR* i2Bܶ-Lr]F*zG%l$ZH?BHVkPEU|B/=B`,~x@Fk7h;*[EfRΌ}\ӻ WFJ$B'0t_.4ha?LTU0 %Xl6-C G \?'q|jDq{3[P*k8 ,Pt> >DϪv;N>)8W %t`/$B-귩h6u KmWΆtE!TTEXz>۪p֮]\B(';:.GJ[p/N"g{MF`̅;w O6R?6{ժca J)ˢp-XE2ϞRpmfKUlBUNtٔk;A2 ";nK/l)M1yb.Vﰖ qGV8iPgk{IaM T)=f"݌3::8E]0Q'xK.[Q -)?RZ~"şM`TdfLxxW_G`)`'eJDz NTM8˷nS^ӻˢKG )wҾNt:/;ㅂy`C@cʟʥIV(`ݔO&zK_wI3+VUlN=`:" C N ղ !ae4̿0(_olc fZ`m#wM*F{*#8]'HٸT e[s@Ou^!:4l+ނW*wN\ZE/AN3+ *=}p0NOగL`F-0WH ϩ7U3FpV:7c<`f(Ԗ]`72Ng a=}o4XG5:t 53O-KҦ'&N2.g)JC~Ἃݏ*sEl|C}rc$cXUZ _2\%;AtIaQSz VRUAbyHϴzuc},OcK.!#tl'JB>&@MfLIrzFJ4J2 c;? |Iw xnf0-Ryدy.}_ſZB*o si0-9B8kzw(_x|ZrGx}u=G G^[z^O#|$aõ nMr4L5ݕ>zMg:}.tZ$_ 4{=a E gHԧBzב>莈t%.t>.t^M3]\rL7tzt:SSg^ӭ3^ӭ3]gA{t +3]bL7t9pCxwOSU^{T:rOګ>*aLN߿3^=gۗC^Ij>N xntB^ g;ܞXutrrbUN{Jg13$^HB_"R{{^]G2^ђя#]zkCt~wzz3QЫgAWK|};|S^=^p?qC ^˖f|^g=L뵝w){s`5ӫ&;t3{K9{YE=*/z^#H":R'zCٮ*߹wWkyW=`׫\5}Gz?' zGXث:g>z>-9wXUzW{0zZk;L ^W#^˓5/_٫<|Vsq^t[4$Ps|W N|, ߽Mn*w's7ܭNz w+=ݣmyܽ]r7sM⮅|ܭv}/s0w>w[{׹Kr:q"n)w>3b}q ޣ(iz6n0w6F|:(,W0pXT? KXe:.,ҿ2} ONUz6o0wKg(# t/2wY%>>U{ehp|WT;v]%]WHzGg|~CW ~8>J|aw|l a ]Z%q?Y%~r|*doJ|wO|l=jڇO{+ UJ[~m69U_)W7jZ%>}?OP0oyT>Q/O|l7=~==_r?+W**jo/Sֵ~q}c^ sgD/NVN_Ji9._N?]#]_J|so]5# ߢ~U+쇾 /C%}PU#k)|N|m觼8 *=܏t\?9d識򢫦/>r8^E"^G7 f;gyٺ2+tZeyCvNvO{sqs~,~Ӽ~VY9Ns*{|/s|/;N%Z8}Tw>} y8}\G\]QI܏Ke{O}>jꣽ& aEWMyS_J|/k)\N\c~\_DM}rk8= Z;=۷f7R{@K?2v~{X#ҳ}(#h}l_gSf?.U0[T%,*#aߪ2QhX*~L#d&( w>i?ofq?>ON>gqA$:9[18\O$wx )LfF?F?VI".R/_/2Jᯨ,o'S= ]5U'p>Y%[TTu*yT_8}aUq4/Uɟ ^ UTҳoW T .8>Q P 4Z%3R N%yl?7s_U?I%ÛUt^/ddOxFG3WV U¯kT?VUS2L%=Z%v]%@%3qT¿_R E%aX%[-p11J9*eY%=W8=WT:wX3WE/xUG\UW{NO*z`|U[8Eeyqǩ_ᙫsT'ӟ8"UrYQIA%K9_JUY5V oWY.^.U#Q)OszVEK;_%P%k8kaatq2T;U{8G%s9UZrh4誱F3{ ]5Z8UApϫ_eU zr%]o*Z[ޣ?yc= ?j$ =\ݣR9RUGC28 U Kq7\.7íap?pO8we*O.'}<}ב>J^ yJ?txE\Ur_Fpx_OOsU'-Η[/o[/o !G9G9}>\r}\r}\92'\_QG;y:UOCAxtUٿ>^$YE]{1[<S_K8|Jxc2GW s9sU/gJ~QE?9RK9R+8 oW .U?Xx?aQg_RyN!GT(Q_%=U%eY%e]FF1$pW?_k(yu<_I^{Jk +!%H.;:gJF~UCR ?4ΨP:%s}As :o9rG*|P'F&\=rx$!F൑:#wt|Z^>1zjgWF|&DŽϤWI7;\{Hk/̯r'狁 }N+EC$iyh)'ѽ_/,܊sUʥW׆kRH{e`y1~OzօʍCZrPJ草`/Azg"Z1:x#+LC cK*sxD^=7CrMXyD')5r֡&sI켱?SJ8 AWcye=ȑR-WksXsDW@O)rzmLP:.q_Y 7.MaӫzŎ 7 NEk=<=;AOK` ⿢ohomxcWڝ.P_VOǸ\rz\ ۯ#| !K^2NQˏBQ=n#Q' }/ ~;"gZB [^߿s/{2sbnxD uҏG >=]?즇9n~ɡ1Axb{HO `! 7x/71fAG˹Roh`;Q"h&D>c{K|q y};e\ G뷏w)2&H΢z3d\ 9_+ҿ Jyw{{x{lqBczKw'};sx=77|OP 8|r?>Ox-ݷø{Y^[nP:lߓ o%a:ְ~{`9ɖz{r^>~8ۢؾ]_\{N~>Xso}(fWX7`Ԇ7 ] Opn {#؎Gz}=C~h />H=<C 2օ֧V2Q.F={x^FwirP~ЍtEt/޾b~r/smy>oq9ۀ|wVNg=Kgz)x^,oEH?h?Ly|#S+x;ow )5~#~~%5XvTFK)&ӉPJ?0_?i쭈nrhHP:^tZꧯq>Ϻ{B_̰p=ø'qAH*p?xVз0~l%>n'=@x<}:z?\z]9\5X}ޡvnUzZO.<HzY,lA;D0>q>8㇋tR6^ã8G>y|=^]^: ]{+%{ɯZ{OGW ̛2?JX9;?(x=`R?wcTQz/:SE'!=委¿!<:oz ^.0K:c}mJ˂7*]фxנ4e=50m]꣈n?zMȺl`}R/z?_V@gy;{& _Ka}3>_Uub@ ?LJheIo*e?S]*Aʺ^D=>#)Su`_G Zg}n&y*=/QxC})"{c:nظ6x?O# FnblbopX~c OzX2bJ]na<?&߇cƳ/4dedxɔ?9^}h]yNem?~e|)ӆQg'0;虰A_AA_8$m>YKiGs8s^{W*#Yi}stAH2_9Ў<)yue|@cծ<dWKP^Oʴ@9فǛ|̰nȔ^E9:_?_) z3cgZ8e=rS (@Zu=J?=x?`~5:Mdc4!{Ql^{ퟁ`Ɵ9x`61sc07DHA H.Hx)z`yœGQW>6g l؉!RoXW;$oGkowtsn>`=⏨։t?}>B ً8ߝ0SѿWyg_ev؏iQW woA[?sͭ^F}k;p>a.-V#>y_uwUnѣV;7}I ɗwIOzNj?72i򞸕Iˁ|V2?>}䃐~ tojI| >T~NO6~>ǫlg$^܆O3$Bad2}䯲882N+zL><.zTow|?W)q{r3qѺYOgz=os^scO6M}zfEskz`wW*;m“[57e| ou_ٹGK:z?1Is_@};$k/+(/9%{!7dpzYҭ/;+Pm}v{lo=Vw[L?Iu?z~&-8s7^\yG^/}ЉQNjE1?هd1%6ӓ2\z$ix|r7`?PJaviu 5lo!^tΟ/kk)o'POt¤uPxϋv&wov/1$o`tcdNF$>w|Vs$ǣ?`l{{_oLjWex/ 879pE49] {8"q%XzOh<5Jź U5x>?g~EՏ[9.%"C6~(%gEX_:ޒVwj$GB āZ,w+Xя9Y:~힬hwocA ]I܎IQB\%n qtױ{mFWie cy8'.=k(ob_=OQoS\,9-9үN<X?J>'!{l' h~jfkz]#+oM9;-l mf V2hw ?C=uz&=9DwqHqvZ?"ω]/?)=\Ce~)iv: UP9~)yrAQf惶r B;5ۡ97!ޔ7,kx.?CQkP] g\{ecy]5-SVs;o|+ri_'vοs B. Q#]]~cQވdId=GA?:xĝUe| cdq78qG{<5SL)r2$4y?·yN7_Gj)&'ycp e] %{Uw3S~;bv0sRE3B޻\i<^o/yNrQ^bqρN K(/p>d]vtO@J:q?_u~s^?<\-r k56_޷Ҕsmɒ05b\L%^s׷trn}-g_i8q?#dž7 ~.nG&]5Egz8njl)w0a#ׅ9=7y3󽹇5ic"W9]YYʹ"ƞYl@c8t/"ǥE;-a~^K33=yC? Ӧ;6 \ݿTn[ ]*ͿJE[XVYLOPTwx/ԇ'NK6ŚndljҴK~ 4-%dFs9)$Z>vhI=;~n%3rcgv3|ՑFD[m :Wl ;gp?rڏew}cy=Gݎgpz%(?WV<)MdrQ%==˳N$Ow߱<!y7u#x/KE~;= t kc_ma`8 R&a<{l=ހ ==I9L|`&k OvotoKp:@R >~=g8&T<TE/axI=#mvO |); e~On@A:ӞS>ސ&e}ÅۍNSOmxf:7ylK_g2I&>_f U^1p\0~^Y@8 !E8G{C)¹PsFKⷊt Oߕ!p!\E8WC¹p 8J>us]5$>K8KqC,?ovs;di8ƞq] |GvQϳlj9&gmfa~m܍0^(wURܯreodr`ٔg;d|mq <{P!?I&Nq<Uynݡ#^]/ԃw$֟v`|=kz6W>Iq{b^W ]W&ELp_&F?/s9XV @8B8ɗN OMs7":=8Wz=Yn>/c)#oCyȁ{ cQbVhy0oiW~~?>Yݰ`~tYOMzmNﲳN3/?w>sutV]lzC:x.cGxga:q1e*^bqSuw3^7oItС syoR\{ǷX#vu \-\)#x>?!L>?zq f3<^]@.׫5ϥ~{OK6|o9{@ZgGʕOYncٻ?_!xgI&.sV?GytvΈNX_tF;lDࣟf}ɣՋYS x 绉oE~Yq/gvp~R޷չ.垃~ ǍF%?ROa{!mrz6/4>+ųu ̷Yd0\ir*.W)zq{kɿ/~4i 0 xZGUR=ߞ)/G GfOK&>_K3axggUw>oޑ xޥU1OnԾZR>_QΕkrw>ܰwKy}Xn_EX`E9~N*+w(+q=zY9~UVn-W.V.U.WT[r+UfL<,RQn˭V[rkr;4>Nq?"}/\()wZ;)w)6Cji8, ڤN_6:m G摟{B^s~}n4>{+yy9SxX>qkg1':$ܾ)'ͷCxz*?!{:WW<-؍'e9W;t+oI OLg\#.W~9CUAj ^;عC~ԬS/Ω(#y^,}~ O=s x;kFc<7pv_8կ_$|nEϗ?pa&$J610 q蠟p~ ߂W{ ?Mf9s&z2/({CcmcD 㠔G`u;MJɺYr}KoFP'^Qݤu+ 8oоDwMߺ׵KzNkL*<"=]^nʏ /&N܇Os?~0=~Qٽ7mzfn$qRy2]{PZWY _|wO^A32)\G Z?΁=縥E9?Nqo3=p:=o1:%\'˥ɉ1Oc~>(zg7yqޙn6yReGM:zxߵ_73k㼰!.%_E3>pi<04}<Fӑ8 ݭK}/|Х+Bf.G}KG蕷nh]HA E﴾.L$?vP~orZbSю̋'Ηz]so;>ȁ[~,+KH3z3Vndr!c[ߘ<m@˰|Gz1ώ=NQpv^w\:&>0 :nz\x'zyF.f_N̔b(!1u~¹pVPɏPG{){ ԩg ܫ oD*}qsݒ8{lp.ŧ Õ9C39z\t֣lO7)]Wȋۡ&?{I$^01gc5<ҹ[&>Kg~=Oۯ/pUz~xdϧ^hWW[cbۇ#yݳ 9ƛFi7ԃp9%mz'~~h3 7tO z0迲c|Ypɝ t}*>v-I[urSO\ݡ_e=GʗsO7oΓOPc!/ x\ݼ6<_.yz{QǏxexeY߿϶w/o=v5>y}=O(h=uP}f_~zon_K|ہ\3ݟ3Nd|K{} ΋LnxWasv{<^yROt#לs7v!4ļ3UDZ[ SmݣGy$6y@'H}5+z+߃uƷ/ gP~4vpBH?iCrWah>|iu__x(ȟuH+9vq\? q<|\8tq•w~ʹV#9P&w@9@:oV3)ؼs:ބg`gh遽迋;w9YcO Bc~Uͳz3ҮL]aLSTE%_xO`zKԟPbL%ݫ74\(7_jGtχ'--9/qoG9qP{3 |k 9Ů_N:^0:]ύDهA?/mRt~QXyXf'Ixoz҃~8|heE$@jr;o]eaxNmwѝ;i<>hp꾗q+~u&W>߆g {xz^NVCG8R֣ȋW\qi L\i㤪>{}Ag\ȋ p"p)]M!|Τ4Ý N?LN$?,˹7={\^i;]>h0[!z[;bj3cc?}Ɖ'㶁n8=3:?r/䗉r{}'84Pnh2=$ <~.::xx3NWw |jݰ_#/_Nh^M^;<륪\\~QR~{4utoF9:m_GfTa>!gٸH/uW{s;_W_P{Vn;B^B#3xCףk#6xGdխxܘ5݇1cO~# ڵ֡ѻ|d'FyƬ^z>-\~P;̣*O;^JUu|諤鯄 }D]y9 ɵ|rl7j9i8-)k^v^f~6{Dkfw_ϳzuf\{П+lA+q\% \/#Ό]ꁛ|G4{{kieNGl_sep=]vEnƃK o|URq/F.ڞ~p+ջΊJ/=6X~*LRoKru {^d9gJ(xrvQ5^3 ~:"Ι}Ι29ݏ`Gi_w?_t6՜y>=nrq]๳ O#Z|lcWbPJ{e*//rY|):evԮ pp>Nvُ=_?@~QvǑُBMM?ܾ7CÏy/j.oK{%L(ėıU~z^}𽍝v#Oq?яY=cWWU |ǶzvM#pA?c\ws>N*m"8wCE<n.E建Gn/r==lw)oqGgnY+.|qYŐpֶ{{k{OrǬ?Rp>=p׶|\|>ys[-/Ycwsw/?[>e}K;^xкݹvWwk'ډlmQ-gt?)vmwcSG^cܧ=ug8$/_ -v1ڡ{%k(u<ric}|qϖkxyxҺ9E3uo6:^*i8A[,sl{㝖/B^OƉlJʼ(.<__fs<뫸ۙcSEN7mw}; ;.$'ra_zxظ;n^ ~_l귒 V\y> rFL53hgmo/k e"浔z |:OҮ ÷8/#/~ (/Ď̗?qaμq;2S'-ߔˍq]j',oz EC\$/3.1z q߫MWK_-?m+MΧP0ڮw $^R ^v|?n@ane*-O=E;l?roQF&߰UL~\s }=R/dWj]μe&}X&lIQρr3-=fly5埏?apUL" ȃp_av0r?ܹ/ 8,t{yN@XF'~B,O#{?/y~*Tf2VZ_Ϗ͇*k?+}/$"6O+9d)[ۗ[ə@=~˜]R.+"{E{.zƒ"o{É9~SP¯=J+Go& {JP_ݸ* {AޏjxU?y &O|J9#~Bto ,\dFEড় ~aiB۹:~B?;_򝗷.T^ĥ4yJw1ܭg7f~{GqxZmN&JUdl.S+L[Q?#/*ۨkhcGXǞγ&vgSkh%^y\f)q{S OQ33DO2' Nvj/VpZS_Xگ-캀>m |ﶰ+uD!|kZ9h?{WG{~Dq/mZ~f~h^ ,~ UӟqMxs"z܏N~ēmO?Ϩ?ḙ)8=UM8n<|4ǿ"?4%=V%FHRrگ|z!9ďDLbCb-s?ߟ鸜V<Gdrڧz JT=W3$ƙMf|JttL<.1xusG#<>7p[ !ߺq[N_ݛK|Rvr,Sz>S<} qj_G>:槫OyzYGq/HZ2AE n-jV7^O4]<7.K9#&j#8{'n>os9~xq>:5x[=)\Ӡ|]Re0b8<>.3ݏVh5=a#yc=<>#?>П"Hԗ/8hsG}pd^ˉdω?^#;Xזq<~܏pJ=gKϗr@@e'O}^0qĞ ~E4MSN>gs^㝿 o:CJ{|X-Crވۙ/( _D/LӗS%jIt!}Om9^cz/ʗ,Js/Fu36ߤOF<>Y&_~,'i7vq%ɒ ݅m3_$GDHNyWNUhf 7wsncWйٮe\,; 鴜tf39/'\O{rvp߬=?7vtzq%umr?W{mY'ܾr Y2K?0⋚J}~Dcy>,ta̛SL܀?iRW.zG{=wէ/Mw4 ~ͽ/ =mЭgJՇoγP5~QlG:X>J|Юsz>~sM /SE,Oew\{[fy O x }*qD+vwsw=sK>Ͽ9.5Wn}1Fr$hz`~V"k; =ďs~{Nh?u{-ס>_O#ߒGsx;} l;q&>j#O~C<`|1ewƳuz=kc]Ho}vHvv|`!":؋"\.N3?][~8op/?h0^;ϋs~~ѫvl94o/q_0k{{z08cO'qcݦ95&'@6+~_Ce38E پL^IgZ|ozI Mjyy ߕOiԛ+>h~'=aߤxdmu깟0:2z7C8a&!;?DB0!z3Hj'Wp7. No@.6/Xbگ5#qǏӍ'@v})== sve{Y57 C9Gen[%폽~V#֎^<^/`?קi:44;p Ƴ\hc=< BO'3ݱmf.ߔmjyr k7e(j?v_^`DVW~-V:F8/|8\Y]#q{Nr ϛ/XP͟[YI"=O,y?8i<ČsDjρ:Sp:n|hiGtF+C8WkG#uF7=Vyv^2]w8W8r7C/`Tz[H ' C#At~i$'XE?=a˗(.Kz  =/@8"v ݾNu`Ob>; \K?#'>&U@~wywҌHq2эq1oUa'iAq {>)ˠ3&#hb9u>@/ݿ Z1r;{% 笞42Oa~`GטͣMQnq}joSGz w,voI;q@ ӈ{ T{owM?Rɧt*\@='aqv }(n'}}Tg_S{Z}=~9*V/4zZ9ϗGϺBb{;sSďr>O7d=wdqx\C?1r0I~ ͬ+}NuKqNM_iį 'WTgME[ kC‘ۂz"qSѷ=438VfYo]W)уס}\o윭w:Wh9#_EGQrMZŵm .3u]5m}[߻_S_۸ +*hWװsrkUs 87 87+opY~R9o xwwT3bnߦ|JX$x3 /Nn9 ?=pO?'\+9ត}pIjB(7s9\+ x\vd_OOoٚwwtqGKu⧖=;$IɊq n& 0O<8m-?9qs|peԻWOUFu!dKy 9ƞǭð}:pr=x9Og^LK ͥ~|%ho}|Q75fz|K?=;6dz/sZsnp?r9obא fy?8E{c!=;"GkT2] w& BMj½p/ք;S%{&p5]=s x 9rxoOڽ6}"vz|k7?E˿;vthGRi0|2sOq<53_?[Փ3;,'(m8}ep 9OP{_ iܲ,):ߌ3D"5;yclߛARڽ|6_:vc=uO^}v^ׅǙj{Oծg͏'N|qn=w} `9SLH?t(=:7/hTƟ)x3ވ3㹾xpUwa$2Nu˼~!KOqr90} swQy,t=9 s0q=C+ou靻he,N3i4S7#'-x32[_Kn7~o-?W~7 O~_b46+f>[_|3K9x[8R4[}5^-6~,Krx2d/i/}j:| O=? c3/{߲v~xv_dmw" ctvy{+_Z9Co `ޚA k9F$|G |x[{*^9GJ_+Vx 7̫ه"xzr*nsx9o|r{9V돇dWo #غ9c$gиR|D#_~v~^KL!KcmNqx|}uA6//A!=9.gT{KD9j'TU9Om^M7?r*]Ksu!}-sq"GkN <;=\ցw ]o&RZx~t]u]~^l M[0)=O(!ƒ{z=ExOV(75ۄ9 ~wBr.׋V"zgd/[9n^Aw& 0[Dpǜ|o#5?I&G/4?]sOEgkbU_ ¿R0]CkCS[n ,NoGwޝ~RM8uZʖ$хw᝭R^A/鼆O8_s }ԯ x:zW#/F |d^_/_QguM]P1gv=//i{Rm#{,w n}3ijw qȎ ǿ2^n?=ynO~֏oIt?wn-~~ԟ󴚟H|aϋ/ٱt\: 3kkCݘ齙eCsY;{or;m/;7~lV2IQ%V/ew翘7]wl^eHm|bEE{;nx7,!l\_Ϗ`ʳ|q~v<ʉ7o\{\ Os~b|Ժbl?]~{hl{_~ԥqY1ldexx]ss=1$3;#A;E GScH?~8s/>ps>}/]-W~NsrgǯP9~sC+nYfh7;wh9x!yŷ16} A49߾/9~"ϛuijo~W4?<DžN.?>Ch\t?tuQk"4IHKrf^(|0y1_ O4}_KK[\}}=׍ ݺ>j^e<GK1M[䚯1˥M=hg.s}\ɘ{NC/VϜ-] =h_ǎ_(UF'f.z݉3ͰEvEnv\~`?+gpE{qP>U> wy@+g橐|+{x}G$n lgtG|>ϟ*z k%b~?ٸw׸^i`褐_-+  ~}[Y<<,Y| zߗ]w=ةn\xJ}6;mQWa|CD||xG)-o8/T1? z}X[Xy}5z'> sĹ}˓PƋp=B9MۂΠsҗ-?ȫ>=5՝nl?fb\}uGa>4j|u@^7Vۥ1G%vơWm.eܝQ\2_s -җ/-?sJ&^kspnSLk$?Z=Ïa^cd׵=Of,ٓ?y<}VWیv^/٥&!S~, _ NGdspxvy .Q6oV^"Oz Yrf}vx Pi%Z?_o _ơ[c/[xx .Oy~V~t5~CwtJv?q?zo;ߔݜ'Wt;o(pzg|?xA{>jӱ ]G?]3rGP$b(].U޳Otߏ?oOK]*9G2>~\r8]1]+Ư+懽+:cJVp;㓋~\.n.~kx}_?7e}~ID1r|wnKk:<|q`NػgG-]ӊOמμ/O>R2o&?}6]|v+o~xwKԻVޝ7=_ ~~-Z>󆖏Ms΁-VNm(|Br75(]Ew ۿ8{]?i JE+JE+JӾ~z0_TOXK; ϻBo6(oCd(߼=*YO/JyRʃFk$bnShW7~ǧϥ!;9%?:SZQ=i&MnAa0 S- ^he 3m1^xI}5peG[^Q;o/uUTq>+8_oA_uݤ|-SO]HNGşP?]5Rrd\y&xNd)3Agni.Kodb?ώ7OL\;]*[@O:^*g3b7W%cgȞU. Opp?8X7Cg H-w/S5^[l&O81*f gPh$'3{zsOে|0'y|tzo\lϕ<)9p)pboU~|ȾW6{\}\9Yb_qqɇ5g"glrť7(IPɏL!=g_ξ=v}W)?'c@&EꞰ:)c⽮~x?,c_d?i-G~ƎZN^J;C]NF}^oCb)]ws7JL-{{Vv~ۡxt<:Ƴx48zq._}|ڗvG]}>)8%+OS y8+)>q2Mgk2r{y/)Vyj+x&?*-wƞ"S@ӪN91qwaoE+Guk'_׺J}8qy-~uyrP+ OX}yހ 3Or4ɟs톡ܾ5}SOv8?;pye+f}oW_vU^;9_:w+_Y=-/4~g?67ͺQ6ޮBd?ɛgޒO>x-;8|&߀٥xՒl ۏ6o@^-=i@g/;ޞɍsaq._лX?_3P&q?kk'?`{.]7!-֪Jfx̹-vU&鬥 ]a񙬞د ?DZ'?߄,V&LFA\I7#qx4'sby0'AZj.xk/q|4|ګ[<~ |!]ouEy>|gOz}9{_Ӕ=Ca6퐹}]]'CUJ Е_i>6w/Z>[A=/z_}VqXOOsxANbEy'G!ۉ̻?\`'y \=~xA\p U*bpK{~%p=; u ]sj&7~u]Կ]-@omsxw"WԿF?=/RBEH`+ :~#(g&qNr'I zp"8'ypyJk'٢ÓԬbTT~ճđu=,?YQ~ˏb}ǰ?XQ~߄+ʏcq1^k֟֬JɅY7r gsYOӶ]d3ߣSgz??3F?Kvt,o%v8^GN?wf.{Iߟ+_7[߿)wR^*`_¿{E(F4Y6zPnළ x4.k?XJljQ_wQwW_s俘TW/5|? Q8(PrPKnB*7H} PC/BP.EXEX \W%0! @i JDkuCPZꈮ&Tt k[ö\o{ۮZm `A]i]/m@ysNI& x{|9ɣ$EnR񳀺C_*1qqꬭ;6={Z2eVz Ooܾ90 AW:M|||(*J\|to-RG"dK5遥k}۔TlJ|ESoɢeV,Δ?83mRW-r\NUχJݶ0DXi"Hi G }w1a d|H#Qގ.E'cF= _Aa R+WK}|VF;b&;RPtŽ'ktQ .NN癉Ry-&+îѾP 0'Ӆ {9PJ[m2٠&1\ Ǽ(խqTaДNJ׵,¾蜯)`osJ`tKL&<1$Ѽ>cv̋~XfEj=TNTMʛ3vpBa˹,M*v–7aVZkM2`^ 4S3rZԏBE@(mJ[hMMuem>e >n%噕cќRTeZ)b)^r{9t??KN?ܶO9KsWRF9w/eX נ{9^AWg/ul>Bz7Yi=(InϤs(TR3IMːg;4UK* F4PDU!5 hEur pc>Kmyw(;^ȱkukub߮4邰 c$Y/*9}l 5pYj-ϩTp"}7 v=t2!-@OZ:^܇+^Χg7Ʉ}`V)(]g|֕l7㳚Mg_0vEE-88%, Mc3l6Snc˄`!pҜfc;WUSNw -W,LeW(13h庥;i=Ԟ%t2Mҳ׌1D;krﰾ@߲|MN"l+ج-lod-rYΚ5[X>z\Ja`y:XsR{eX>ׇEI ׯcv5BAbe׽b8D̒ R$;0EQb7+gٛ=!d=""X8|<0-pU`vC8(S(3 FL[BqK4=?RPPt4:^Kҧf2+D)ِ!߅ D++Y1'*e }8tOhIh]㷌mWƷ ۰a/;ǫQ=ڣW}*U.zTF<"b]ć7#:"#&GfGn̉4DcdI䏑mݑ'L0w M0)jmzGQQQ~LtN蟢b1l̮1t$2~Slzz:_Wuzb\Z\^GqW~OTUXIHIؐPP|xPٮz虇~(41-oDiҬI% 'EL=؊LH`u, RvS+{'#u>bc'뜼ɐL$HԐDA$&j6v{bCZB|{%6Y:g*a 谰 vX!€Fpr,\" SA,>zg+:XD BunZ0' W}'\Nc{ԃxUc |̅d&$35ȓ`O x< 7p?2]FГH]]2Ա) N{Cc~5kuwg\%ȏQ<əe?>RfpOԆ}Xa%Z)|(]$V**gܝ "ůXED$ҋ4b) ^ Q;RZb^9}a_%Bsmv wZ[W^ųQԦo`x]>;YGPOG.IvV`(;{aW< E jS4z7n m7s;э^.=]DsݤEtcv0r";Dh]эP Ʉ ].T#c2|Du]1x҅32Sw ЕعbiQ6x i>gmu,{T{M%:}:w∽fQ"dO.IV1Wvf'λ<3AduN1YA&1'_[="DExA,d࿊ qؼCL;Սr\%]_WXGL,VK<~'c)=LE'Ng-~*ϙ62}`t!A,.x"}u؎%iU~|F6vZ[@0:ڝ/]`le1pl''m 1JC/'+bK3gAzBq F;2#}=dGͽ NYd҆cE̡`>lÈSm6׮mb;EG C, J܅V~AN]|zr_:FX7WZqhzV/ Ajh6a0{q}@C |K?_C:"JU%oNp k%2=^%uu+LF,&S)3 r_IP/wӅ&f&M7ٌnDw=d]}r5-~|ylovZkhq=I=-DˈcA ρhhX$ O @>9➤,zâfC}O Hg4,k&DYLG&i/TfĪ&lrEɗMDIsگ o1z ;&,E|U;p;>'8Gོwvu,r W^.^e\\ąs9r&)<y2O <DzGqְ/:~~ʏ]* p |#|^;y;o:yc2.b.B^ʹ 9yΉ<'cģ8GrkXk??{.|NgOI>>x/杼r\ռױpp1q!/\ᅜ{>‡ݼVck7:v..".䥜939,Nȓy"Oq-|Oq!>{y7X ]˸ y)r/LN9xmܷz{nٿG,y?أ_Н/lxˇ޼n޺m9_|Ėvr5{X][jkt}U+68q]\s}]uʷo װƚ-~e94ˇ;Ѝ{:[:M??߳ï~xHMDz?O~(hߋ>i"{=wˁ J[o5{57{ڛ63^Φ+;'3,vo ݫ7u#ˇ޺ w[}[=EZj./]aW"8[ol[Srr {{rݳ;b>*xr>}^밥khUr}?p'? s,j3"/~WyWYwWV~ؼlϼhiP.Ļ?C#~qSxuf+΁WZxކ+ca7#=n=ا%Z{'߸iUKojGl]}0쌸-ycO57amSpgY_^5x$km׬W{#񛖗}/o9ur{?{ȼ TQMa|䨛S7Lxn8bCv=vi;"(#\%{K(M{KoXţڛ7b_l}lӑްie8.wۉD!KH||^}c -2'7?p~w>Hk{Ԟ{or7 _Zikx޺^I][7?} |9nw7WFw/)%qvm]Ȏ-+?GQ8O;ڱї|g=;;vl ;VڣU;V_u3W(?2;'"[,_9 uoޱ+cU,޺㚛ڙ[xC-V=:rԺm+]zK/莳}w/ܱ}K}Z7S|XHؽ-+_?jǩV]Yڱ{5Wk}UUΗ 0tK[6\;{þVF5OB޶ai{lCr-[}⭮5axW㿪?xs wݿPqݵ^}O =:w+v;VsV^0^ۃWBzmkcxݶپ?/z-.DžpnѼ3Vy@9Xyʰa_ܲMl_nщwE|ow%暻vuǂmybwin wssoۼsgKRaR._TٰT^qcvb~bibeÅtf}-jU}}u3o;Wm薶6_s_[뿺Oۻ붸y۽.\ o]{ࡣ~v J/}"Gb- o9|q˃-nC'dnp>_m#f/>{xso>?l~Sl\~ޫ⇔79KKϮrOջ2]uqQ{c1/^۵(vusj_;ߴRk᪕M@jۡ~3RX?KWU]#4.-'_>xΥ/zXno.޿r.x3spWM^WŇg/#7^|۷zB7{ml~Oؗ\5ɵr/v=;ܼ ]:8&\ blڙWų֕f{wb-ߙ=ep}GK]˗+W?fa݉ZX3;~CWݿZrunao}o _bȎm;qQ~O# OG/ru&f{~)osVʃEYyÏRxg@-kΧ.'޵}CڲqK\?Z $yȵ}{!y}~?x[>NyWva㳯rN/,ܼ'3GQ0ib-e\습_ygŇ|!][Xviqہ}>]S魵}R>a߆l9}HܹL'܌{|AB|Or#{m*ܭLcό|u۾ _Iц0 x/Z;^kgzk/^^fޡCv>[}haQkEnٷzϾsCo>.kVGN+9߯/]?ƾֲǢ;<}vW^cWѕGȿoy˻kyQ<u^.$}~7F-=߷tmsK7a3:ܾvkw'w?~y˻7/Nj+C~0ˉȿ7>b?4N^oݰbWr?ؿv#Po1au8<w5Gً&˻wyqrpO672ߏc#<{{?v';z!y77 'V6îY=|dzf';}ƞ]?;K-]sG|5#k_y'l;;Vo[GDdK_<#.]sg5sٛ6χl7>G-\{p{ ퟿!}7, qCtnXu|o{߰9W?]/< Xg/_ȡ[m}$r?JVWmL,ً f򷮽{e^{~9:?``7|k.|wBo wimqܼ7]8tU7-uffޱƃ%˛ǣ}}߼̷-οo^e߲mݶi"G?F=7W_{1`>m|xёO}=司}Wz^s!K[~'K,ySyOݥǏk'wvvVwy^=?|\~kWӝ^;{WpJ.ݽtmK_Y7K=}"]ϝ{99>ح.r.>]Qc_1|WxqW]~E¿nc_~9j~OOy3|)}oׅE郧4ȍ |viS?̹q]]ߕψ &-zۖ"ݳ}7cs][o~HvT/mk'"w_us\P~v癋[ku C~e[f_dևן}]rpF7?p7^xȋ߾7]Wş5lgi_:f5KۣaP_w?g=~G[^jE7ۿxo߼Ek=c}eGuݭjvmX^}~wkvwk{JӺ#G/>zEڑG~K^208.{[moܷ{7y6o=zun}ȋ7l_36zxQtrcz?=?=cU\]Y{C9.]a鍱W×^"Bw vr}wpHw;xDwߡ 7xTwpC~;<;Ht6wtv 㻃{_uW ~;㻃Tw)SuuNdguu<;xNwyA;8;AwpfwA;xawpVw`kw l^;p/ evu/^+?..GwP..^;xMw;;(wku;to5?,vRwP;p;;xGw?;xWwA;xww/;xw>|;ou;hu>]wﻃǻOt;;dwpSwA;Tw[[nw>|;\wp{wpGw /t|;;;Rw0;rw=׺Qw7oukw0|;`_wpow`w0~;Qw';iw@wC/Yw@wu[ow=Y=}oꝛ]_<~g#cwaܽ͞#._'=폾ow^r[ܢ|kk7/}qn׳Q|T/cфgo^z\{~?R迏,yǹ'މ7_l]޺ g8?.>vO۷{Gc3>//}s۵+ܓYU>d+,}w,tƪ{~a׆G-^~٪o1[.8Bm[ɑ|ѶwoY/,t }o>h?;˟wx>oӒnZ9֟>߾e㗮\~]?~y)~ꭻ>P]wK7n8/8o\|Fl)ڝ~pk~xF]WJtqתEmkVEy;ܽх_O,oRoB?[u̩o\kUWYxUKo bo\e>]|SS׽SxZ/:9?r΋OJ!,=['}h~w~vM6`Gl1v0ֈ.j)'_Y5޶Տ\|W}ڥ?bCʪ]ѥ/Y~S_~ !7/Gr7vͥEڮ kˏg]]xOx;ke7UT]{v1s9 WG.>h#/[fEk6:2+z_l٫"YX??3FK<9#'[,D/ *U˿܅y"]qGR/Zdqyr|凾(Ϋ"ӳ#z}Ցט¿\zgz3y{uKV[ח;w]~%rMO{f~^r٫K_v啷;wj籯z+;.)]yJ=%t?:/{CE~uW4w/K.uٱoI_뒝x^"c_yq6fv^|Q1F[/;}v6;6*[. Wv(7񼝗ҿڼhWWʜp}caUt>{,f.i83'7k>wcnK6|ewmܳŋ/+P,"xeK\?tp/K._q;.,+V~,׾ˋ+]v+WWLW˱?9! X]fͪ֯]|ݹ"c#^co}c#CNEV/|U#qyZ8.>i}<1|j8.p\p\7XՑ+}ȟȝ2]nKWV/쐯4rnzW4ܪnI!SnL-<0oC`ʵ%r+yUa^;nM^g2|=y|dhd=2!,/&fy TvBUwOdkVG>1/7wp|2Wr|l8G:'p-\82ϵW7~s@ayH߸< p~˿_>!pe =+g/ pe<YrK8o a2߇9ty>i<ϣy<7ynyyyhy7{<1{y5/y6[y4Oy~tyg;y^?k|<{;y7Mjyt;yn6ϭw#7]|<6y<<7y~sy}s[y6gy4y7swi<ϣy<7ynyy?xhy7{<1{y5/y6[y4Oy~t> _XynȆ|"O{} 'WG>O,?*<jؿ+'=OuD)jFbM]އzrQ[W!yH8 ϵ6} CVo{vGο !v&_gzO^+0||Dxj[7#w.x_.2:z߲6T~Yvm12i2Lyg$^ޟ.?7SDi^xbac ORx*y;a'a{kWEifyX؞1Zze\n4}M؞  OCvDž) S|l2|L?ɣIn '[$4{ۆ~o]7޼7޴7Юpppp7 vltopk/ple.|>6>*ϕg|8sX4zLy<*<]^y2gC3pa]n~]* ;dx}^.o M2\VOyei p=v4'ПN2J˷/O _>>|:>;Z' DŽ&d~p_na{/r~nyx3},!"ߐ' ?_]ץ/g!h<ܪT8e7/779Gpehrο {dx>x #cݚσf: \k:,ۿpjoz{?O _~z ^+zƏ|/ _{p*,οp"W72O>L;'p8IǎzytU°=2|u|JgI^tazf\ӡfMۓdx}Op>ꎓǛfuw& MM7ZPs |[oWEMz#q'zz!=<ȧfB,n.yko2 ף0|*oWMW|^ >A?MBߧ.\gwGοz8wF96Uq~ y;Wv7?'ףkVE25 +p p} wpGa8ak~fw! _ߛV7ο #.=Ϙ+VZyOa{r؞To2\Mx'ZX9;No2!{ txy חm2׶y ?RE=S2ogp9I 2ܟ$; %/Y:ѫWޏFys +g7ƿ /X󷅅=5LM |?paϿХk_m_SZ^-Yßg~yq&.칙=oaϻSy#W?م={0לb5{ž!,9Χ.gsf's);x99ml,iFsc#h;yw%1^<\fW<_M84OI$oq7wr͟od'3y.m61O? ]HN^8tNk7Ϸq+&> |A{x_o4(b,}N1g/)lȞo]s҂ãYǷ,,o2BZ^ȶՎylOF?xiJ%ɱ$-ND0/2GLǘu9?\,zwMөopߣż?4Ndx#\gk}Y3>y-Ȟ 8Sx#{|˼}kD|[_#{Ȟ?||=Hs_dϵ\kR^<ȞH;|.7\s2^J|_Ȟ3y}=Ȟ{ȞU .Y\}dO8'=K?y#_pL|;q_p L:>gRͶ_DwS/x>mޫd~S|'EcxK#2I$AQfL3bv7~ȞGy3%籬gtsdVy:?>g"{EO7g)p GS]|>(b/F,oɐ/УY}W7q O8l'wlǦ{W"{;{ҤH N({&1Oje~ʄ1#ѡM& ԨR ѡM& ԨRL"Ȓ!Md#)'G iR$I'FL3b5ĉe~ʄ1#ѡM& ԨR ѡM& ԨRL"Ȓ!M*%ȇ1rH N(ƌҧGj2S?e˜CЦEujTPЦEujTPDyrdɐ&ED-@Y2I$AQf֝2ä!Ю'F)ƌҧG6-4SJrV6-4SJ2%ȓ#K4)ָ*Q@\qbD]80fĐ>=:^)ƌҧG6-4SJ2P6-4SJ2%ȓ#K4)$?TKY2I$AQf֛2ä!}z]?F)ƌҧG6-4SJ2P6-4SJ2%ȓ#K4)$BqU@Y2a82{`˜C&zZS&1OmZ4iPF eJC6[4iPF eJ)'G iR$I'j jɑ%CIĉef)ƌҧG'G2ä!}zthӢI:5T(Sj٢I:5T(SH<9dH"Ix5 ɑ%CTǹ cF ӣCֹ_V˄1#ѡM& ԨRL"P{ZԩQBE ɑ%CIĉ /QK iR$I'F)ƌҧGvhW2ä!}zthӢI:5T(SH!jI:5T(SH<9dH"I8Pk\ɑ%CIa 83bHڴh2ݪ1#ѡM& ԨRL"jSJ2%ȓ#K4)$#LZ2I$AQfL3bHڴBL3bHڴhҠN*ʔ(R jujTPDyrdɐ&EqbDCq#K4)$ c!}zthӢIYj1OmZ4iPF eJ)'j_U*)Q@Y2I$AQfڜ=[-iR$I'F)ƌҧG6-:ƌҧG6-4SJ2%ȓ UU*)Q@Y2I$AQf]?K4)$#,3=:iѤA3CЦEujTPDyrdC RBE ɑ%CIĉe)29H N(3S&1OmZ4iZ1OmZ4iPF eJ)'G6W5T(SH<9dH"I81̴7 ҤH N(30x?qЦEuj8fЦEujTPDyrdɄ3RL"Ȓ!M$ Ĉ2֔ c$ Ĉ2S?e˜CЦEPkCЦEujTPDyrdɄZJ2%ȓ#K4)$#L[S&]?M$ Ĉ2S?e40ޟ8hҠN*:fzthӢI:5T(SH<9dH穥L"Ȓ!M$ Ĉ2Δ cFjI'F)ƌҧG6-4S ҧG6-4SJ2%ȓ#Kt5*)Q@Y2I$AQfڙ2aS$I'F4Q?e8ixN*9f:iѤAU*)Q@Y2IWK"Ȓ!M$ Ĉ2Ɣ cF I>[-qbD2ä!}zthӢI:5V}zthӢI:5T(SH<9dH UE ɑ%CIĉe)ƌBqbD2a(i~J2gZFMԩQBE ɑ%CP{Zȓ#K4)$#S&1O"QfL3bHڴhҠN*PڴhҠN*ʔ(R O,ҤHZDyrdɐ&EqbDYʄ1#]?AQfL3b4=:itA-EujTPDyrdɐ&ED=ȓ#K4)$#̺S&1O3e~ʄ1#ѡM& ԨRjաM& ԨRL"Ȓ!M$Pk\)'G iR$I'FuL3bH?lje~ʄ1#ØCMah(>24SJ2%ȓ#K4)$ڧ%O,ҤH N(3M0fĐ>=:j2ä!}zthӢI:5T(S kӢI:5T(SH<9dH"Ix5 ɑ%CIĉef)ƌҧcD2ä!}zaLӦEujlh` ԨRL"Ȓ!M$ BSԒ#K4)$#:S&1OmOU~ʄ1#ѡM& ԨRLbf& ԨRL"Ȓ!M$ Bq'G iR$I'FuL3bHЮe~ʄ1# cMԩQ퉖=2ԨRL"Ȓ!M$ ĈՒ%CIĉe~ʄ1#ѡM)ƌҧG6-4SJ2%BmJ- ԨRL"Ȓ!M$ ĈZ*G iR$I'F)ƌҧGvhW2ä!}zth1MujTPg5T(SH<9dH"I81̞wԒ!M$ Ĉ2S?e˜CЦE3Zg˜CЦEujTPDPjSJ2%ȓ#K4)$#L9*K4)$#L cF ӣCVhW cF ӣCV4SJ2%²[F2%ȓ#K4)$#qo%M$ Ĉ2S?e˜CЦEFޘCЦEujTPDyr6U*)Q@Y2I$AQfڜ52I$AQfL3bHڴhZL3bHڴhҠN*ʔ(R iX2J)'G iR$I'Fc2Ǩ%EqbD2ä!}zthӢIz!}zthӢI:5T(SH<9XTPDyrdɐ&EqbDioʄ1&EqbD2ä!}zthӢI#Zö!}zthӢI:5T(SH<0NCmG[F<9dH"I8169&I?F-Iĉe~ʄ1#ѡM& BѡM& ԨRL"Ȓ T(SH<9dH"I81̴5e˜1"I81O0fĐ>=:iѤA=ZwĐ>=:iѤAU*)Q@0NCqU (ȑ%CIĉe(1#RVK81O0fĐ>=:iѤAP>=:iѤAU*)Q@Y2CoL"Ȓ!M$ Ĉ2Δ cF$ Ĉ2S?e˜CЦEujCЦEujTPDyrdɄqj 07ZF4)$#1#$TKQfL3bHڴhҠN*PڴhҠN*ʔ(R O,ҤBm\-%ȓ#K4)$#LS&1$i $#L cF ӣCMԩQ ӣCMԩQBE ɑ%C:Pk\)Q PH$AQftL3bHaje~ʄ1#ѡM& ԨRjաM& ԨRL"Ȓ!Md=\-E ɑ%CIĉef)ƌ'a ĉe~ʄ1#ѡM& ԨR ѡM& ԨRL"Ȓ!M*Pk\(R H'F! cF #D2ä!}zthӢI:5T(S kӢI:5T(SH<9dH"I"R O,ҤH N(3N0fĐ>=@(3S&1OmZ4iPF PmZ4iPF eJ)'G iR$8 Uyrdx_8eq0ä!}ztSL cF ӣCMԩQBPMԩQ]K-%ȓ#K4)$jɓ#K4)$#zS&1O1c L cF ӣCMԩQBR^MԩQBE ɑ%CIaZ@Y2x_8-8&1Omժ2ä!}zthӢI:5T(SH!jI:5T(SH<9dH"I8PUK,ҤH N(3L0fĐ>=:3S&1OmZ4iPF eJC6[4iPF eJ)'G iR$I4Wyrdɐ&E2_3e˜CЦZ&1OmZ4iPF eJ)jSJ2%ȓ#K4)$#j#,ҤH N(3S&1OmZO0fĐ>=:iѤAU*)Qj& ԨRL"Ȓ!M$ 8 U,ҤH 3#ѡM&Ӈ>1OmZ4iPF eJ)'jU*)Q@Y2I$AQfݙZ2I$AQfL3bHڴhZL3bHڴhҠN*ʔ(R jujTPDyrdɐ&EqbD8nθʒ!M$ Ĉ1SAڴh`cfĐ>=:iѤAU*)Q@P3TPDyrdɐ&EqbDio}P-iR$I'F)ƌҧG6-4BƌҧG6-4SJ2%ȓ UU*)Q@Y2I$AQfڜ52I$AQfaLcA6-4313OmZ4iPF eJ)'GLZ*)Q@Y2I$AQfښ2 NՒ"I81O0fĐ>=:iѤA=ZwĐ>=:iѤAU*)Q@Pk\ըRL"Ȓ!M$ Ĉ2ޔ c M$ Ĉ2S? cq?phҠN}>=:iѤAU*)Q@Y2CRDyrdɐ&EqbDigʄqhGjI N(3S&1OmZ4iPj?OmZ4iPF eJ)'GL5T(SH<9dH"I81̴5e˜1"I81O1͈a:ԩQe}LmZ4iPF eJ)'G iRvZJ)'G iR$I'F6L3 NԒ N(3S&1OmZ4iPF5jOmZ4iPF eJ)'G Pk\U(SH<9dH"I81̴3e˜)c I81O0c!}zaqPJ,CMԩQBE ɑ%CPoj)R O,ҤH N(3O0f0O-qbD2ä!}zthӢI:5TBvzthӢI:5T(SH<9dH UE ɑ%CIĉe)ƌ4ĉe~ʄ10ӣC;o;*}2ڴhҠN*ʔ(R O,ҤHyrdɐ&EqbDYwʄ1#CcĈ2S?e˜CЦEujTPЦEujTPDyrdɐ&E2W%ȓ#K4)$#S&1O#L cF ØG6-aݾQ hѤAU*)Q@Y2I$A<~S-yrdɐ&EqbDYoʄ1#v(3S&1OmZ4iPF eJV{mZ4iPF eJ)'G iR$IZH<9dH"I81̬;e˜C1O0fĐ~thӢI:7XFujTPDyrdɐ&Eqbkjɑ%CIĉef)ƌҧG';RL cF ӣCMԩQBPMԩQBE ɑ%CICqU O,ҤH N(3M0fĐ>=:Č(3S&1O/iڴhҠNjط˖ѠN*ʔ(R O,ҤH NhZdH"I81O0fĐ>=:CwU?e˜CЦEujTPDBnujTPDyrdɐ&Eqbָʓ#K4)$#:S&1OmL cF ӣ4-4SJrXveԩQBE ɑ%CIĉev/%CIĉe~ʄ1#ѡM+~ʄ1#ѡM& ԨRL"v:5T(SH<9dH"I81ָʑ%CIĉe~ʄ1#ѡM)ƌҧGv4iPF eJò/XF eJ)'G iR$I'FgI$AQfL3bHڴhZL3bHڴhҠN*ʔ(R O.~Q-5T(SH<9dH"I81B iR$I'F)ƌҧG6-:ƌҧG6-4SJ2%ȇewXFE ɑ%CIĉev}cBjI$AQfL3bHڴh3bHڴhҠN*ʔ(R OlJ2%ȓ#K4)$#L{Ю!M$ Ĉ2S?e˜CЦEFޘCЦEujTPDyr6,H<9dH"I81>80&Y$I'F)ƌҧG6-4ZҧG6-4SJ2%ȓ#K&~N-ʔ(R O,ҤH N(3mMv4)$#L cF ӣCMCuG ӣCMԩQBE ɑ U-[-#O,ҤH N([ƌHuՒ N(3S&1OmZ4iPj?OmZ4iPF eJ)'G PSKE ɑ%CIĉe)ơ]?EqbD2ä!}zthӢI:Pk!}zthӢI:5T(SH<9dBqU-#K4)$#S cF IZĈ2S?e˜CЦEujTC6ЦEujTPDyrdɐ&joVK"Ȓ!M$ Ĉ2Ɣ cF]?I81O0fĐ>=:iѤAP>=:iѤAU*)Q@Y2CqUL),#M$ Ĉ2`˜C$Q-1O0fĐ>=:iѤAU*V;=:iѤAU*)Q@Y2I )'G iR$I'FL3bĉe~ʄ1#ѡM& ԨR ѡM& ԨRL"Ȓ!M*WeJ) H N(;&1OVK)ƌҧG6-4SJrV6-4SJ2%ȓ#K4)$Bj)'G iR$I'FuL3bH?lje~ʄ1#ѡM& ԨRjաM& ԨRL"Ȓ!Md5J)' 81q0ä!}ztZfL3bHڴhҠN*ʔBڴhҠN*ʔ(R O,ҤH jjɓ#K4)$#zS&1O/Lj2S?e˜CЦEujTPjצEujTPDyrdɐ&ED5ȓ#K&:>80fĐ>=:ZS&1OmZ4iPF eJC6[4iPF eJ)'G iR$I'j?Y2I$AQf֙2ä!}ztB)ƌҧG6-4SJ2%V-4SJ2%ȓ#K4)$Z@Y2Ia!1#ѡM)ƌҧG6-4SJ2%BߪAU*)Q@Y2I$APRK iR$I'F)ƌҧGvhW2ä!}zthӢI:5T(SH!jI:5T(SH<9dH"I8Pk\ɑ%CIa q0fĐ>=:idA1OmZ4iPF eJ):5T(SH<9dH"I81̴dH"I81O0fĐ>=:ivO0fĐ>=:iѤAU*)Q@>W ԨRL"Ȓ!M$ ĈZ*G iR$I'{CЦEeĐ>=:iѤAU*)Q@\}ZjTPDyrdɐ&EqbDisJ4)$#L cF ӣCPk cF ӣCMԩQBE ɅZN*ʔ(R O,ҤH N(Ю%CIĉe=:iѤA{3CЦEujTPDyrdC_J2%ȓ#K4)$#L{S&dJ-)$#L cF ӣCMzcF ӣCMԩQBE ɑ U*ʔ(R O,ҤH N(3MC4)$#L408hӢI:5FrѡM& ԨRL"Ȓ  eJ)'G iR$I'FLn%I81O0fĐ>=:iѤA=ZwĐ>=:iѤAU*)Q@Y2ָRL"Ȓ!M$ Ĉ2֔IhWO"I81O1(;4SڴhҠN*ʔ(R O,ҡL"Ȓ!M$ Ĉ2Δ cFZĉe~ʄ1#ѡM& BѡM& ԨRL"Ȓ!j eJ)'G iR$I'FvLvIĉe~ʄq VAU*ЦEujTPDyrdɐ&j\-%ȓ#K4)$#LS&1$YWKQfL3bHڴhҠNjFڴhҠN*ʔ(R O,ҤBqUDyrdɐ&EqbDicʄ1Ю$AQfL3 c>=:a_8RLzhӢI:5T(SH<9dH"jT-E ɑ%CIĉef)ƌ'gje~ʄ1#ѡM& ԨR ѡM& ԨRL"Ȓ!Md5J)'G iR$I'FL3bĉe~ʄ1#aLӣCV2%:ZF& ԨRL"Ȓ!M$Pyrdɐ&EqbDYwʄ1#%L cF ӣCMԩQB9jCMԩQBE ɑ%CIָ*R O,ҤH N(3N0fĐ~hW#L cF 1M6-4xƾQfhҠN*ʔ(R O,ҤH jD-yrdɐ&EqbDYoʄ1#!O0fĐ>=:iѤAU*)ZiѤAU*)Q@Y2I$A<WȒ!M$ Ĉ2ޔ cF 1O0fĐ>0iӢI:5W7ZoujTPDyrdɐ&EqbvZrdɐ&EqbDYgʄ1#ѡMV cF ӣCMԩQBPMԩQBE ɑ%CIĉZ*O,ҤH N(3L0fĐ>=:]?L cF ӣ4-4SJ%,2ԨRL"Ȓ!M$ Ĉ7%K4)$#L cF ӣC3S&1OmZ4iPF eJ)=jiPF eJ)'G iR$I'F4W9dH"I81O0fĐ>=:CL cF ӣC;i4SJ2QJ2%ȓ#K4)$#ujX-ҤH N(3S&1OmZ4Cu&1OmZ4iPF eJ)ԩQBE ɑ%CIĉeݜq%CIĉe~ʄ1#ѡM+~ʄ1#ѡM+iԩQBE an˨PDyrdɐ&EqbDodTKIĉe~ʄ1#ѡM&Pk1#ѡM& ԨRL"BkRJ2%ȓ#K4)$#LS@4)$#L cF ӣCPk cF ӣCMԩQBE 8 vZF"Ȓ!M$ Ĉ2{}cB H N(3S&1OmZ4iP1OmZ4iPF eJ)'G6ԖRBE ɑ%CIĉe)2@Iĉe~ʄ1#ѡM&Pk1#ѡM& ԨRL"8 a_nȒ!M$ Ĉ2q0aLUjI N(3S&1OmZ4iPj?OmZ4iPF eJ)'GL}Z*)Q@Y2I$AQfښ2aLH$AQfL3bHڴhҠj;bHڴhҠN*ʔ(R Olָ~eȒ!M$ Ĉ2q0äPK81O0fĐ>=:iѤAP>=:iѤAU*)Q@Y2CmI-eJ)'G iR$I'FvL3"e $I'F)ƌҧG6-4S ҧG6-4SJ2%ȓ#K&Pk\U(22I$AQf;&1$Jĉe~ʄ1#ѡM& ԨR ѡM& ԨRL"Ȓ!M*ZJ)'G iR$I'F6L3bHH'F)ƌҧG6-4SjѧG6-4SJ2%ȓ#Ktָ*S-#EqbD]80fĐ>W%F)ƌҧG6-4SJrV6-4SJ2%ȓ#K4)"Ȓ!M$ Ĉ2 cF 0Ĉ2S?e˜CЦEujTZЦEujTPDyrdɐ&i5J)}e$#B1#ZO0fĐ>=:iѤAU*)ZiѤAU*)Q@Y2I$jP-Ȓ!M$ Ĉ2 cF #n Ĉ2S?e˜CЦEujTPЦEujTPDyrdɐ&E2Pk\)'G61^80fĐ>=:.PL cF ӣCMԩQBPMԩQBE ɑ%CICmA-yrdɐ&EqbDYoʄ1#!f D2ä!}zthӢI:5T(S kӢI:5T(SH<9dH"I"Pk\ȓ#KtsƌҧG6Ԫ2ä!}zthӢI:5T(SH!jI:5T(SH<9dH"I8PȒ!M$ Ĉ2Δ cF ӣC10S?e˜CЦEujTPD1jEujTPDyrdɐ&E0NCq'G iR$x?q0ä!}zthbU-ƌҧG6-4SJ2%ȇN*ʔ(R O,ҤH Nhͫ%K4)$#L cF ӣC3S&1OmZ4iPF eJ)ZI:5T(SH<9dH"I80NCq#K4)$1B!}zthӢ,1OmZ4iPF eJ)'j_U*)Q@Y2I$AQfݳՒ!M$ Ĉ2S?e˜CЦE3Zg˜CЦEujTPDPk\5SJ2%ȓ#K4)$#ƩvsU iR$I'F43}zthӢI3#ѡM& ԨRL"ȆJ2%ȓ#K4)$#L{nN-iR$I'F)ƌҧG6-4BƌҧG6-4SJ2%ȓ UU*)Q@Y2I$AQfڜ52I$AQfaL~CMoq ӣCMԩQBE ɑ%jPK2%ȓ#K4)$#L[S&?PK$ Ĉ2S?e˜CЦEPkCЦEujTPDyrdCqUJ2%ȓ#K4)$#L{S&d4)$#L4ia?qТI:5FuѡM& ԨRL"Ȓ!j2%ȓ#K4)$#L;S&CY$I'F)ƌҧG6-4S ҧG6-4SJ2%ȓ#K&WU*)Q@Y2I$AQfښ2aLH$AQfL˜f0g9ԩQexcG6-4SJ2%ȓ#K4Pj)Q@Y2I$AQfژ2a(l$#L cF ӣCMԩQ ӣCMԩQBE ɑ%C:Wʔ(R O,ҤH N(3L0fDH N(3S&ØfH^8jTethӢI:5T(SH<9dH"jOUKyrdɐ&EqbDYʄ1#݌ZĈ2S?e˜CЦEujTZЦEujTPDyrdɐ&j2%ȓ#K4)$#LS&1$i $#L cFaLӧGvOwT(;2ڴhҠN*ʔ(R O,ҤHyrdɐ&EqbDYwʄ1#CPK(3S&1OmZ4iPF PmZ4iPF eJ)'G iR$CqUH<9dH"I81̬?e˜C$81O0f0izthӢ,EujTPDyrdɐ&EP4ɑ%CIĉef)ƌҧM%L cF ӣCMԩQBR^MԩQBE ɑ%CIָ*R O,ҤH N(3N0fĐ>=@(3S&14ڴhҠN ѤAU*)Q@Y2I$AX}Zrdɐ&EqbDYgʄ1# >U-3S&1OmZ4iPF eJC6[4iPF eJ)'G iR$IU<9dH"I81̬7e˜C3O0fĐ>0iӢI:5aߞhٓ,AU*)Q@Y2I$AP{ZdH"I81O0fĐ>=:C)L3bHڴhҠN*ʔ(RmҠuw*}fKe B FTv ӒRڴ ՀU⽵A bC2P5(jP*Q\EZC@ Q0e(~9g:3y>;'^k$mQFB eJ)'G iR!k^(R O,ҤX(3gƔ cF '2sfL0fĐAҡM:5ѦE U*)Q@Y2IN%O,ҤXϙ1e˜Cz̘2ä!ҡM:5T(S gҦE U*)Q@Y2IyU@Y2I3cʄ1# c!?gƔ cF s.ڴS#J%{uԩPBE ɑ%C1k%G iRD,̘2ä!膬23L3bȀ>=thӢN*ʔ(lFuj$TPDyrdɐ&EL"kȓ#K4)b"sfL0fĐ}ztCVS&1d@]:iQFB eJaS#J2%ȓ#K4)b"gi3O%K4)b"sfL0fĐ}zt鄬rS&1d@]:iQFB eJ)ٲԩPBE ɑ%C1 CY2I3cʄ1# ӣK'd2ä!ҡM:5T(Sa?:*)Q@Y2Ix~0cJ)dH"&b!?gƔ cF ЧGUv˜CѥCuj$TPDMR#J2%ȓ#K4)b"3 9dH"&b!?gƔ cF ЧGUv˜CѥCuj$TPDBȚW0ߟ`%ȓ#K4)b"g3L>Q4)b"sfL0fĐ}ztЦʏ1d@]:iQFB eJ)'gʒPBE ɑ%C1 ̙1 Y2I3cʄ1# ӣK6U~̈!ҡM:5T(SH|ȚWuja?: ɑ%C13Ly,)b"sfL0fĐ}ztЦE=d1bȀ>=thӢN*ʔ(R OlȦdRL"Ȓ!M:̘2 ҤXϙ1e˜CѥCULj!ҡM:5T(SH<5j$T|uȒ!MţS&&KLB~Ό)ƌ2O.ڴS Y ЧGmZԩPBE ɑ%ePDyrdɐ&ELB93Lz4)b"sfL0fĐ}ztЦEZȪgȀ>=thӢN*ʔ(R OlȚW U*|?:2Ix~0cʄ1#%KB~Ό)ƌ2O.ڴS# Yu ӣK6-HRL"Ȓ!,eJ)'G iRD,3cʄ1P"&b!?gƔ cF ЧGmZԩѥCuj$TPDyrdɄyUB0X̘2ä!dYϙ1e˜CѥCuj$TCV}}ztЦE U*)Q@Y2I,%ȓ#K4)b"͙1e˜P3cʄ1# ӣK6-HҡM:5T(SH<9dHyUL"ao"[S&1d@Y93L3bȀ>=thӢN*Ug.ڴS#J2%ȓ#K4)␍d)R O,ҤX(3gƔ cF zS&1d@]:iQFBJȪGmZԩPBE ɑ%CTȚWeJ)'G6om~ͭϙ1e˜C鱐3cʄ1# ӣK6-HRҡM:5T(SH<9dH"& }@Y2I3cʄ1# zS&1d@]:iQFB UomZԩPBE ɑ%CqȚW%ȓ#Kt_gL3bȀ>=eʄ1# ӣK6-HRL)d!Kuj$TPDyrdɐ&ELBŅ,yrdɐ&ELB~Ό)ƌ2O/+?gƔ cF ЧGmZԩPBRȚWڴS#J2%ȓ#K4)b5ȓ#K4)0M?3bȀ>=t/˄1# ӣK6-HRLb~Muj$TPDyrdɐ&ELBs Geɑ%C1 93L3bȀ>=!̌)ƌ2O.ڴS#J2%!k^iQFB eJ)'G iRD,B<9dH"&b!ҡ+̘CѥCuj$TPDB~U:5T(SH<9dH"&b93sYdH"&b!?gƔ cF ЧGN*7e˜CѥCuj$TPDBȚW-HRL"Ȓ!M^?O,ҤXÜ_>=thb%}fĐ}ztЦE U*)Q@>dU U*)Q@Y2IPלSrGdɐ&ELB~Ό)ƌ2O.!1# ӣK6-HRL"!k^թPBE ɑ%C1 u͙zY2I3 sI.ڴ3>3d@]:iQFB eJ)'eIRL"Ȓ!Mz̘2!;%MS&1d@]:icF ЧGmZԩPBE ɅyU#J2%ȓ#K4)b"3c5dH"&b!?g4iƌ|GM:5F ӣK6-HRL"Ȇ?RBE ɑ%C1 u̙1e˜̚,)b"sfL0fĐ}ztЦE=d1bȀ>=thӢN*ʔ(R OlȚW U*)Q@Y2IPǜS&^?C1 93LœfĐAԩ0uѥCuj$TPDyrdɄdPDyrdɐ&ELB93L3"=%&b!?gƔ cF ЧGmZԩz ӣK6-HRL"Ȓ YJ2%ȓ#K4)b"ϙ1e8kI3cʄq Чg*ZG.ڴS#J2%ȓ#Kt~N2%ȓ#K4)b"Ι1e˜CR3cʄ1# ӣK6-HBV]ҡM:5T(SH<9dHyUL"Ȓ!MsfL0f5SD,̘2a(iѥ' OYGmZԩPBE ɑ%CT~ZE ɑ%C1 ̘2ä!, 93L3bȀ>=thӢNjȪO.ڴS#J2%ȓ#K45ʔ(R O,ҤX(7gƔ cF CLB~Ό)ƌ9M]:iQ{mqЦE U*)Q@Y2I'd)R O,ҤX(3gƔ cF 'WV~Ό)ƌ2O.ڴS#J%d٣K6-HRL"Ȓ!M8dͫE ɑ%C1 e̘2ä!P3cʄ1# œGmZԩ}̺M:5T(SH<9dH"& {d)'G iRD,̘2ä!Xϙ1e˜CѥCuj$TPٱ,ڴS#J2%ȓ#K4)b5ȓ#K4)b"sfL0fĐP񿐟3cʄ1# 9MmZԩP >j-HRL"Ȓ!M,yrdɐ&ELB~Ό)ƌ2On*3cʄ1# ӣK6-HRL)dҦE U*)Q@Y2IPoѼ*'G iRD,̘2ä!BsfL0fĐ}zaNӡM:5T(u U*)Q@Y2IK(|DY2I3cʄ1# ӣK'd2ä!ҡM:5T(S#YZԩPBE ɑ%C1 u)yrdɐ&ELB~Ό)ƌ2On*3cʄ1# ӣK6-HRL)ӰCQBE ɑ%C1m!K iRD,̘2ä!ҡN3bȀ>=thӢN*ʔ(R;eS#J2%ȓ#K4)b"3#oȒ!MS&1d@]:!ܔ cF ЧGmZԩPB0OC6۬L"Ȓ!M`ƔdH"&b!?gƔ cF ЧGmZ!CѥCuj$TPDR#J2%ȓ#K4)b"3cJȒ!MS&1d@]:CV cF ЧGmZԩPBE ayUoH<9dH"&b)[4)b"sfL0fĐ}ztЦE=d1bȀ>=thӢN*ʔ(R O.do%J2%ȓ#K4)b"3cʄ9!MS&1d@]:icF ЧGmZԩPBE < YF~ȓ#K4)b"fL0&WXϙ1e˜CѥCuj!!ҡM:5T(SH<9!;J2%ȓ#K4)b"3cʄ1s MS&1d@]:iQYu2O.ڴS#J2%ȓ 4dͫ*0:dH"&b)ƌH,1 93L3bȀ>=thӢN$d5O.ڴS#J2%ȓ#K&doBE ɑ%C1 ̘2ä9"&b!?gƔ cF ЧGmZԩz ӣK6-HRL"ȆyU eJauI`Ɣ cF I, 93L3bȀ>=thӢNjȪO.ڴS#J2%ȓ#Kte)SH<9dH"&bS&1$eD,̘2ä!ҡM:5U׀>=thӢN*ʔ(R O,0OCּPDBD,~0cʄ1# XS&1d@]:iQFBJȪGmZԩPBE ɑ%CT~@E ɑ%C1 ̘2ä!bs b!?gƔ cF ЧGmZԩP YѥCuj$TPDyrdɐ4dͫ2%ȓ ?fL0fĐ})+?gƔ cF ЧGmZԩPB9dۥCuj$TPDyrdɐ&E=Yȓ#K4)b"̙1e˜ĆS&1d@]:iQFBJȪGmZԩPBE ɑ%CT!k^(R O,0O?1e˜C}YfL0fĐ}ztЦE U*)ҦE U*)Q@Y2Ie)'G iRD,̘2ä!Xϙ1e˜CѥCuj$TPYK6-HRL"Ȓ!M8Ӑ5ȓ#K40o&1d@]+˔ cF ЧGmZԩPBŐ},-HRL"Ȓ!ME+KY2I3cʄ1# ӣ̘2ä!ҡM:5T(S YCuj$TPDyrdɐ&ELzU<9dH"& s=!ā1# ӣK6-HRL"YHRL"Ȓ!Mʒ#K4)b"sfL0fĐ}zt鄬rS&1d@]:iQFB eJCּjӢN*ʔ(R O,ҤXsNȓ#K4)b"aN>=th3M}f̈!ҡM:5T(SH|,5T(SH<9dH"&b9PoG,ҤXϙ1e˜CѥC;d0fĐ}ztЦE U*)QU:5T(SH<9dH"&b93@,ҤXÜf]:i15}fĐ}ztЦE U*)Q@\, U*)Q@Y2IPϜPeɐ&ELB~Ό)ƌ2O.ڴBV1# ӣK6-HRL"!k^թPBE ɑ%C1 u͙1%gdɐ&ELB~,i&|eCuƿ ЧGmZԩPBE ɑ _J2%ȓ#K4)b"3c$ۖ%MS&1d@]:iQYu2O.ڴS#J2%ȓ YFB eJ)'G iRD,3gƔ Ys C1 93aN3f0}A:5Fﰎ}ztЦE U*)Q@Y2!NY*)Q@Y2IP~Ό)ơޛdI3cʄ1# ӣK6-BV=CѥCuj$TPDyrdCּJRL"Ȓ!M:̘2aLH"&b!?gƔIӌ2{C?0|uѥCuj$TPDyrdɐ٦,eJ)'G iRD,3cʄ1PoKS&1d@]:iQFЧGmZԩPBE ɑ%U eJ)'G iRD,3cʄ1#@S&ÜfȀ>=aߠmT:ztЦE U*)Q@Y2I/RH<9dH"&bܜS&1 (KB~Ό)ƌ2O.ڴS#ӣK6-HRL"Ȓ!U2%ȓ#K4)b"Ι1e˜CR@LB~Ό)ƌœf@]:E:thӢN*ʔ(R O,ҤCv,E ɑ%C1 e̘2ä!Po]S&1d@]:iQFBJȪGmZԩPBE ɑ%CTȚWeJ)'G iRD,3cʄ1# ́S&1 s>=thӢf~::iQFB eJ)'G iRD!ȓ#K4)b"sfL0fĐPsfL0fĐ}ztЦE U*CV]:iQFB eJ)'G iR!k^(R O,ҤX(3gƔ cF '2sfL0fĐAҡM:5MѦE U*)Q@Y2I9ٟ%O,ҤXϙ1e˜Cz̘2ä!ҡM:5T(S ٚ,mZԩPBE ɑ%C1QȚWE ɑ%C1 93L3bȀ>=sfL0fĐ0ҡM:5Tº[G U*)Q@Y2Iأm K,ҤXϙ1e˜C YefL0fĐ}ztЦE U*)Q 7ҢN*ʔ(R O,ҤXzyrdɐ&ELB~Ό)ƌ2On*3cʄ1# ӣK6-HRL):T(SH<9dH"&bƌudɐ&ELB~Ό)ƌ2O.Unʄ1# ӣK6-HRL"MdS#J2%ȓ#K4)b"ꛇz<9dH"&b!?gƔ cF ЧGN*7e˜CѥCuj$TPD1d|oQL"Ȓ!M3,ҤXϙ1e˜CѥC;d0fĐ}ztЦE U*)Q@>dFB eJ)'G iRD,5g5sdɐ&ELB~Ό)ƌ2O.!1# ӣK6-HRL"5Zau(R O,ҤX~0cʄdI"&b!?gƔ cF ЧGmZ!CѥCuj$TPDyr![%J2%ȓ#K4)b"3c5dH"&b!?gƔ cF ЧGmZ!CѥCuj$TPD5|uȓ#K4)b"fL0&󓲤Xϙ1e˜CѥCULj!ҡM:5T(SH<9!{,U*)Q@Y2IPǜS&^?C1 93L3bȀ>=thӢ1d@]:iQFB eJ)'Uj?n9dH"&b_S& Yb"sfL0fĐ}ztЦEZȪgȀ>=thӢN*ʔ(R O,RL"Ȓ!MsfL0iRD,̘2ä!ҡM:Uϐ}ztЦE U*)Q@ِ5T(JȐ&EL*`Ɣ cF IJS&1d@]:iQFЧGmZԩPBE ɑ%C:d_-KE ɑ%C1 e̘2a(kXϙ1e˜CѥCuj$!}ztЦE U*)Q@Y2!k^UPD1)b"?̘2ä!WȲ3cʄ1# ӣK6-HҡM:5T(SH<9dH ٲ,%ȓ#K4)b"͙1e˜P3cʄ1# ӣK6-HҡM:5T(SH<9dHyUL"a_D,fL0fĐ}ϙ1e˜CѥCuj$T:{tЦE U*)Q@Y2Id)R O,ҤX(3gƔ cF zS&1d@]:iQFBJȪGmZԩPBE ɑ%CTȚWeJ)'G6%)ƌ2OS&1d@]:iQFB 吽\mZԩPBE ɑ%C1QȖd)'G iRD,̘2ä!^!?gƔ cF ЧGmZԩPB9dۥCuj$TPDyrdɐ&EU"Ȓ! cF ЧGe2ä!ҡM:5T(S M:5T(SH<9dH"&bnYȒ!MS&1d@^W~Ό)ƌ2O.ڴS#J25:iQFB eJ)'G iRD!k^)'G iRa~0fĐ}zt0{,ƌ2O.ڴS#J2%!"YZԩPBE ɑ%C1 u)eɑ%C1 93L3bȀ>=!̌)ƌ2O.ڴS#J2%!k^iQFB eJ)'G iRD,B<9dH"&b}ztfz>3fĐ}ztЦE U*)QRFB eJ)'G iRD,7gFYdH"&b!?gƔ cF ЧGN*7e˜CѥCuj$TPDBȚW-HRL"Ȓ!M^?O,ҤXÜ|O.ڴ\ό2O.ڴS#J2%ȇ dPBE ɑ%C1 u͙1%W%C1 93L3bȀ>=thƌ2O.ڴS#J2%ȇyUFB eJ)'G iRD,5g5sdɐ&ELB~,i&a?O?ҡM:g ӣK6-HRL"B$TPDyrdɐ&ELB=sfL%K1 93L3bȀ>=th Ynj2O.ڴS#J2%ȓ YFB eJ)'G iRD,3g4kgɐ&ELB~ΌiӌC?hӢNs}ztЦE U*)Q@ِ)K eJ)'G iRD,1gƔ c2yYRD,̘2ä!ҡMzȪcĐ}ztЦE U*)Q@ِ5T(SH<9dH"&b93LB4)b"sfL9͈!0ߟԩ0AӣK6-HRL"Ȓ BE ɑ%C1 ̘2äyD,̘2ä!ҡM:Uϐ}ztЦE U*)Q@Y2!k^UPDyrdɐ&ELB93Lz4)b"sfL0s!|?W?H2~ѥCuj$TPDyrdɐL"Ȓ!MsfL0fĐTNS&1d@]:iQFЧGmZԩPBE ɑ%C:dͫ eJ)'G iRD,3cʄ1P"&b!?gƔ cFaN3O.0QѥCuj$TPDyrdɐ&'K"Ȓ!MrsfL0fĐeYϙ1e˜CѥCuj$TCV}}ztЦE U*)Q@Y2IyUDyrdɐ&ELB93L3b5c"sfL0f0iҡM9FﻭCuj$TPDyrdɐ&E#Kyrdɐ&ELB93L3bȀ>QVV~Ό)ƌ2O.ڴS#J%d٣K6-HRL"Ȓ!M8dͫE ɑ%C1 e̘2ä!P3cʄ1# œGmZԩ}uϴ6-HRL"Ȓ!M(dKyrdɐ&ELB~Ό)ƌ2OS&1d@]:iQFB },ڴS#J2%ȓ#K4)b5ȓ#K4)b"sfL0fĐP񿐟3cʄ1# 9MmZԩP a-HRL"Ȓ!MeC<9dH"&b!?gƔ cF ЧG7d1e˜CѥCuj$TPYڴS#J2%ȓ#K4)b"-WȒ!MS&1d@^W~Ό)ƌ2O/i:iQFB Q#J2%ȓ#K4)b"giɒ#K4)b"sfL0fĐ}zt鄬rS&1d@]:iQFB eJClYZԩPBE ɑ%C1 u)yrdɐ&ELB~Ό)ƌ2On*3cʄ1# ӣK6-HRL)ӰQBE ɑ%C1'i3O%K4)b"sfL0fĐ}ztYe'1d@]:iQFB eJ)lZ:5T(SH<9dH"&b93@,ҤXϙ1e˜CѥM0fĐ}ztЦE U*)Q 4d|u)Q@Y2I8C?1%DY2I3cʄ1# ӣK6U~̈!ҡM:5T(SH|Ȟ)K*ʔ(R O,ҤXkΌ)9s K4)b"sfL0fĐ}ztYe'1d@]:iQFB eJ)yU=YGyrdɐ&EL)%MS&1d@]:iQYu2O.ڴS#J2%ȓ ٔ, U*)Q@Y2IPϜS&d́ iRD,̘2ä!ҡM+d3bȀ>=thӢN*ʔ(R iȚW50cyrdɐ&EL)dɒ"&b!?gƔ cF ЧGmZԩz ӣK6-HRL"ȆvYT(SH<9dH"&b93L1ҤXϙ1e˜CѥCULj!ҡM:5T(SH<0OCּJR tȒ!M#S&~,1 93L3bȀ>=thӢN$d5O.ڴS#J2%ȓ#K&dcY*)Q@Y2IP~Ό)ƌH)b"sfL0fĐ}ztЦEZȪgȀ>=thӢN*ʔ(R Ol!k^UP##Mũ)ƌ:MS&1d@]:iQFB5dקGmZԩPBE ɑ%C:dWe)SH<9dH"&bS&1$eD,̘2ä!ҡM:5U׀>=thӢN*ʔ(R O,0OCּPDB[`Ɣ cF "B~Ό)ƌ2O.ڴS#J%d٣K6-HRL"Ȓ!M*d#YJ)'G iRD,3cʄ1# ́S&1d@]:iQFB5dקGmZԩPBE ɑ%C:Ӑ5ʔ(R O.om>b-ϙ1e˜C3cʄ1# ӣK6-HRҡM:5T(SH<9dH"}H<9dH"&b̜S&1d@Xϙ1e˜CѥCuj$T:{tЦE U*)Q@Y2IyU"Ȓ ̌)ƌ2O̘2ä!ҡM:5T(S oҦE U*)Q@Y2IByrdɐ&ELB~Ό)ƌ2OS&1d@]:iQFB 5thӢN*ʔ(R O,Ҥ< YH<9dH s cF ЧGL0fĐ}ztЦE U*)Q ٯҢN*ʔ(R O,ҤXzʒ'G iRD,̘2ä!膬23L3bȀ>=thӢN*ʔBּЦE U*)Q@Y2IyޢyU O,Ҥ~0bȀ>=t}E0fĐ}ztЦE U*)Q_N*ʔ(R O,ҤXo˒#K4)b"sfL0fĐ}zt鄬rS&1d@]:iQFB eJCּjӢN*ʔ(R O,ҤXsNȓ#K4)b"aN/>=th3>3fĐ}ztЦE U*)Q@>dU U*)Q@Y2IPלY,Y2I3cʄ1# ӣKv*;ä!ҡM:5T(SH!dͫuj$TPDyrdɐ&ELB}sf́Y2I94CA.ڴ|Q1d@]:iQFB eJ)'eIRL"Ȓ!Mz̘zgdH"&b!?gƔ cF ЧGmZ!CѥCuj$TPD5HRL"Ȓ!M̘3dH"&b!?g4a~СM:g ӣK6-HRL"Ȇ?RBE ɑ%C1 u̙1e]%MS&1d@]:iQYu2O.ڴS#J2%ȓ YFB eJ)'G iRD,3gƔ Ys C1 93aN3f0Zԩ1u ӣK6-HRL"Ȓ /RL"Ȓ!MsfL0NeI3cʄ1# ӣK6-BV=CѥCuj$TPDyrdCּJRL"Ȓ!M:̘2aLH"&b!?gƔIӌ2g ZG]:iQFB eJ)'G ,eJ)'G iRD,3cʄ1P}D,̘2ä!ҡM:5U׀>=thӢN*ʔ(R O,5T(SH<9dH"&bS&6RD,̘2a4C FGmZԩPBE ɑ%CT~ZE ɑ%C1 ̘2äaw"KB~Ό)ƌ2O.ڴS#ӣK6-HRL"Ȓ!U2%ȓ#K4)b"Ι1e˜CR@LB~Ό)ƌœf@]:utЦE U*)Q@Y2I'd)R O,ҤX(3gƔ cF ze!?gƔ cF ЧGmZԩPѥCuj$TPDyrdɐ&UE ɑ%C1 ̘2ä!bs b!?gƔ cF ÜO.ڴ}̺Cuj$TPDyrdɐ&ELR O,ҤXϙ1e˜CCcY93L3bȀ>=thӢN*!.ڴS#J2%ȓ#K4)5J)'G iRD,3cʄ1#  93L3b iztЦEIXQhӢN*ʔ(R O,ҤXɒ'G iRD,̘2ä!BsfL0fĐ}ztЦE U*)AYڴS#J2%ȓ#K4)b5ȓ#K4)b"sfL0fĐ}z,̘2ä!aNӥCuj$Tu:5T(SH<9dH"&bqQ,9dH"&b!?gƔ cF ЧG7d1e˜CѥCuj$TPD1dGS#J2%ȓ#K4)b"^@Y2I3cʄ1# ӣ̘2ä!ҡM:5T(S >d U*)Q@Y2I?ƌdɐ&ELB~Ό)ƌ2O.Unʄ1# ӣK6-HRL"S:5T(SH<9dH"&byϓ#K4)b"sfL0fĐ}zt鄬rS&1d@]:iQFB eJC6۬BE ɑ%C1)eɐ&ELB~Ό)ƌ2O.!1# ӣK6-HRL"!;FB eJ)'G iRD,5g5sdɐ&ELB~Ό)ƌ2O.!1# ӣK6-HRL"5Zau(R O,ҤX~0cʄ%MS&1d@]:icF ЧGmZԩPBE Ʌ쭲$TPDyrdɐ&ELB=sfLC iRD,̘2ä!ҡM+d3bȀ>=thӢN*ʔ(R U_+?rmE>a ϟz~*?ɏs›nYgx5Wq|/o*5gxW?̄O0&k}wr=B+׿#6NIۉ``?N~kZ w歼B9k+dy5bȀ>=thӢN*ʔ(R O.dͫ Uʗ.~?_ƻU꼉kxeE\l8q\9E.`'ws6Ob|Kk Ą# ϟ?vy@9?|?̯sor_&&~U\<\3y4y?w dǟ|nN3Ųno,ϳ?a>bn5ϚϗQ;y"G}AVcxJ~7'뙿G|懸cpoxK۱tw~S7;_uz;\ r g][ l'baWYs #fO=coyuʌt-U\ïq+׿9oZ#9;r}U&zU ~_⭼2sW)*y4\Ty+N͕_‹x$bV쿰繇-eOQ0/6o*rz\K²} wp&82_ 8soAwNφ> Ow:d|ۼeOQ v|'kw{_ux|:]8]~o:9V<㣖m1^)wq /i^x9}E:נkW78^|'ɛ3\ͩ|~ݴ7Rzj?yC.WjioIs(}oLJWv]VX.{Xwu-fZ^E4ʥd7k̼0e[-|;y-y ~{k"O7Աw<%{Hse dX^~a^˫xJ6s/3nʕ3t>ØWp }>@_y9dN(1[x&gG+0o\ͯos;n:_?~Sx3V??ɘ=5gO&7_.=Ŝ i4{,low({".{4-yS=&˘Թ&ޚk9ǖIq[Jd8:ep=$AaŇ-~7*.%ޟ#g8N/U4n_|Һ{ ZzPPC/)ںa: ZυMul{vm[e`}7=K;wޣ;qR]ε'^l_YeX;'3ϹӼ[WVk^FmWtlqGy㳍K4/dyἱ{~gumIԸWGmME/+5_-ͭ^ q7378?}Xuhfhԕ 7/;qι %<}ݳLVi^u?9:ҕ敻%3?{ι;W8xνWyM2yeKa|t-Xw7m>o3틖УZĉ-=mڻۿ Sq{.ޮ]TkYnl^zdcYe|r?>{a̿WVνU 4Ly{[#v_z٬_<%MW^&G/Ί}e9ݽ,o}]Cz'=&?*ztXeeep2hwree㻷oWeܻ7{W\/{=e ;}WGm+y;/|_Y6O/qsOIN7[lwz/5rlͩ\YGW>LjC yIQOE+6فo]ˍ:SFmpvj^ζٷf]nrSkm7}w,7kG\{~g]ns-ЕtN#؃W̚hkgG6kZճ[h>/Tr]3CuG>eegR }}'TxN~F7ƺsoNm7|򤮏CGkB׏hu]so\odxl4^+oi}N酛je/9&e߮ 땴dzR;;~ٕ/m‰!j</'q,O[_GxZ~%/޲=kZk׾8Ӿ_c.{j \w_}F5E.[{Ɵu|qaM%NAoȁomukӸ9zIw9Rvmnl./uwz;N^ȃP涷|~}Ƌ}+>~3G~圃{Sx~𗛏Xy!bڸ]yV=:vϻG5u?n߻o=`6 | vq'|s;:|Jџqq{ {{dS?{eq~w|OqCsa18}ƅh-c%xf wqU?ԧ/LpX.޿eyn?vǂCZ_fU^/+ͲFpz:v;uJ^^WWi>|+hGX-ɣ)xX Cƃ[u҃?[ׯFB7n)bюSC-m^yj:[//ڲm#ntPݥ]5O3 p~ʞG;GaA 6Gמc]ܸm^ׇލO]?.E}>ٖ~jcϬ~WG>4s]o_ -/~hϪ˞ϨеG;tk\naϏm(laS->Fr}rY>X汑?qwK hKwܜ hG n*ķ6n7rX>:xHk5k×|y>,ZN7\^[˛suQG޶ǎۓӞۘK]{: ܵolgmN*{wh~ p uvq/){.n v|ڧ|c?ݾޔƗqpI>p%Ե>k[ZY滏/7>JؒQBj^e,~̱'8qށ//,{Evxyktg_py5j^qvcO5h\u!0l.8ڸpvGNINubfΖY6vPrCGi\8;m^ּj-O֯9;5ʺs_=K(9v6r/AYxaȞ/5zg[nkNdmsږ;q͖p>ߖ;޷]{v cӴf㪵ƥƅ5/\mmG7.睯_նqy}'NWܷ['srߞhl=t+֮ݶukkcО+٥GvBn' m+_CO 7ǥƣe5b[턚Wi<#Dͫ{XmƽAGv=]:?tW)~(y=-=i>;CQCx3iiSzmw.ϱO,hj5~ܾFCޛmo=5쯢wǝ=s>9k9<nl?|_kHʗ6>|AٳqGxLybcG]*;\^eOm\m syk(yݫ~i{W;hyj߳ڽ W\_]~Lt|&pi\N7}޽ua+g~rW7_o):聣Ѿxcr5 '/mokݱcųw|3?ɇ׵`: {rת$Zt>܃۾+WOwՑ"O9Gnv-e-W+n|u*pdʅc>Iron<[Ƴ:oޯݟXi._m|k#-xmF{_.͋}glFCܸpD^䒍Gqfj8/6XOޗ:}·;< N3[m4Z7?x|"\P?zy_v_-3|;S\O/?t pNW-ןx^#~U gύ~<򠛶Ӭ֛'틞S>\g{x zoXEq#a yB󿺶əo5no;^wQq8͋vH>tYS[".B\{WhEW'eaCI=ظ>nzJǎKJ5Sj͋w6}ccmЦwp~z.֢Kg#f+ݖ޷| =z=!{s?lS]. Ǟnؘx_YÿN_O͋C#Jj͛Ց۞'|Ckybҧ+>S;>zKopFfjG߹o?΍=[߷#͋獭7o灃/6?YIZ>};졻4_|4m<$?wL 3?Qw׵(ѵ;N9a7Gֶ_ukN=vs}ydZ7Ϯ{;j3?wΞ5|qG{\m^ݷ;v'8#,@r'g68*xAx_=et׷yFFjh gWӛn_mMռ|{4<+,|Q4[v]V{++NԸ* W-<5lͧrIw9nСDkl|rٍۏ5ap1^p˝/\O8䜛_wo==:ԨٟX?B_7><)aM<}盢=6/X=yVFoix"jLuo_I e O~͢Oߜ$gܱ<ݱkyyVP s۵w6z+gۏ}N#KL7=ILܻ=pv4|>][6u˝o+l{m>g7_*]Y3o:|Cm7j{3uޡ[ÂՇ/o|_)+uw~ӕm|іUS;>;cRͶ-WտkOc- gLg{yx>7WLtu߫楣U{7:ۚN[n^h>ẁ7Oˏ%xj%|tKߵ8%9{qxgdի:}(rXh|?Cd|ܻ׿l4oh|ƫl\Tw+S/[wч"GE}n$^rTQ02~*Zy#6؉73hso})sWߴya,kgyjԟuV{|SCHXw/~33z |ٻ> ws]o \~vyΑ/Rz|_u3I8-Z~vΝ>*wjxgyk۵#ݮH?9r4 7< ֏Ws<|V|G-Բ籷LCSoY~>gVrOׅϫ?̝a>kᛣpM <̟{<--?o8ޓ_g-V#|ڿsWn˞g}[nѭggoN.2iw;w-'Gns{е 5]w˫>~X~_#«pv<Ç /Tss(Pf՟\Jo ְ^=gM;o)9('\/}tK/?^)WK}Co\5m\z߾ ߥ6G~)jw;キwwBG8eޛo>ra^xd[[÷eS[]4wv趽guִk >wxOϡ^Յo^-eQthэ_VǍJh܅s׼bsmɖh[_mn듵oŝ{KƱܸh^~׼ ᫞eG~CКӖ_i3æ\})/4[㲓ڱ>rm7_oE[@ 0&6Ƒ?o{}C^;b]wI͜?f3N_PzyAc14ݻ˩|UO—_:n#|({N{5ӷqG3oŸ'6p'S[m~/bśN}{8hܳ=_7?s뙍_-Ϲ| ym~9t|=j1e'1wDN+W޺>?3ю;|9._~(y_nھC>_S_?9ar7/_޿,o7o^ '-sFؙ/G-yl|ۚ7o\7/W{XoZ_qS mW=-ߪ嗹=-O9/: oJz'W=k.?_u~3=;Ʃ{VXyR8?qp=3zdȮ6XYWMq%˓s'׭^y{< mtp)Kld%KV_8%qn!qvưt.G;Yl'7{߼5?l/y8kc/;~~_Vݜ?~ak7/ 'Biy<p/Av<]3{1{[7d[O_~,7Iݱ6+qޯ?On]^Y,QrޣƽkZyʣ=c<#Խ/o\[_Yi>wXYVV>++Z"OٵrsWV{{Җo~te|gó/XY)xe++ WVΕ߹den+5GVVΰ'^,޿y󹕕mrgz}^{km!++87yL-[ZY9w]A>QqɗxVV.}beQW:OxʇyիVV>^YU}%?Y.VxOai(yOzCxYE]VB3:m,=X*lȚ^߿=;i ˆ+,=K7`LJ{A䓮ݼ|g}vruvYOۼ莃~}NcKܶwybг݌(JYOVzᗫ?tڷ6wS":p۷s<{T]_ .蹇Ȳo~pP ~WN?=tIU;}Ӛ[:c9N19 !<։o- |pqzFwAϚ^r|񌽷sbЛ7ڨ.N[/.\<4ǚ_/4&>ۛF&~5q[,xf>fv(s_Ct}}&e֛#'Uo݁cgCo<|N^ё C>'ɥ' xn:l_[FC >~!ypכۚ_Zs% -yBh]u8n^-I_gfu7ݿd^{N/~SB_+.:\};\e-{ĞFMa95:q:yW_w%]}殾]}Ʈخv%]}iesW@av%˖=|ɿqܑw3jYIs#'ռL-Ǔuw&9vsF8F]X~ .9V6>9e[D.X3yƒjXK=pܣ /'/w+W+˽x,QY1 3 2hH|4|VY* Ѽ<[=*#1*J: @F͆&FVv'NWu{oݺeU+pV]ys}W a3Gct&1ga@f X;_| TDFH;W1f{p>3'd(t E@ ^ڝ`9y[{oˣ(I(/qd++WpV6ӕdڀɥzY0\8X &~ |%3f x^J!^cLnFSL$!߈sKMXemPf2Umh6gM=RƳ2%ʔhE`.׊͊q$Gv3]$F6\@ pa=eCiCP!٦q@^ӂ̒%1+pt_i)p=6(JbF'hE(JU}air1b6֊mR~zeh{4yVwDph~<يGbhm*_ F58$.@٫> qZBQ11H%—<\B䁸:tкգ7䁁%b3MD3¬‰ES$pMР!ܽ ?ہh1E2i0*ThG3HNc}b`]ql3N3;d'ޜc"'Wd Xr"ܼR8a [#xS\)\). tt/z<wƮ"aMwST :ǽU%ūYk C͛lX8C!A2~6qg`o@}u?TG/uys vj#%Zw0l[ӿ Ӫ"yawuO,')&sO22FwG022NR&N;);sQqiֆd뺌cA7|gcn__u7Fj6}@ԼScW!.׃֘0{VZn0Kur[9 *-qQ::P6HރwB[0Sts?Sآ49:yvֳ@Ѷ:-6mQrsH:Mdȃ;.SA(%NS{e5njӵg4f1ƧEFO]eF>T+32kd`֠kPGTQa:sA՛ktFU5zӽOCi5ߊǬ8fz/c̑aek~D[ ؕ-^̸T^xN QL\ {ql'Q^r+txR-F۪bH!e`uug[1Z+:. wH ګ ZzNkPF7rtQ اޮÑ[LQv(xC6`ک䱹ƕsClD8dA1uqK)QfahK*Lܼc&n1j@I 9)y,DgYq)QAI訶3`QmI5!i T}bQ\S\"٣ IAIĠ}{cյP]#F1Ɨzֽ?lF\sj\⢓l?NEhI^TGO{r n2B2X3g xL~5W*Y!PMRPQbMoF'N#VWE0w*d5t/(}=*aԥ5zZ3#B^jrt*+5,k(CQ/0>y8&I6]kC"Gd~jCa7o=#51rftI NI$0VN?4pT̙o\3Hm_݈ob3cԪrI!pu;ٮ`rocH0[3qϬӬW]ޱ6Cl7B1&.Y=Zو[tcrXڅj0o-M|~^-sLk{fR7㱡L-5PK\̥ejgDj͉$p9Y:7QFHR.X׹.2uqlxMb!#S̏hi 09]a[ruy"Gł/rŢ.YR1F6! vVj[p?N#)tfJ6KEԞƩnHKӔSE nOFD4#P=}|gtx >|t$GrGKk"tq8iX`F=w4r(<<@0Tv Pzt{v Kx1'""Ov2en̼7ނ*\!u1>fAG`T_=_9ezq͠zx6"ew2VmRǀKՆK#nEΨ&-B.jfʙY WiEʦ׃s;{k84umBUPF:f?inˠNOki9 2Ifn`u[5J @<sAB?=xϗGLN;-QTPCTQ'* JTO͒iϿ./5}7Cy>>wD~ H`~Mz/;4ÿo}X.=~O2Z- "̖*I:9^K@3j&=5m ́Ӯښ1|f4+(*Y<̈ yJX'H\J4'%sz 8i멎d3޶Z"bn+ + S2ƒi`ߧxE& yybR/=qL9Jr(\Bn?.ZppFEcL0+ppW"+3&c9N6mMnMI IS4WB M5Ho<@3~_kk aɐ{Ia>_G9?SczOz6]7ػy~-4_qr-%%oE|sM)B"|U|:VHn;8ӳE-5,zF$t雬wG|{`detb#^tP͇ -W4-G+!׿iR iX)F?a,cO+]4Dҷ&n1W?Ɠ?_ w~iH|?!]S%JZՍ|s'cm4 /X"<*@˵KIwOv}'-x=k}b zO HmOBMk dѢEZEVhcbOayCT4L7 =lhZܴ>W5)r JbG9kw94b{˗-_+K[ywĴ`c3_!s6u;ّ.}0w”L _X̻plBvӼ@N>?m'eRO9m٪|tO^*˕SyR1?kcA3R]J a$h"q-_ &?~4 2^G\tpU$r$loKo3ȶIt;iz ȣK;!@tl qW(-_S ߟSx\ ݮVq۳Qgk _" MVc/~S7~o ߽͆~͇B- =K_ RJ%FG|ϧM|FIi"v4G,uaiYiI\;;.9\p^ugA)@҇`݌oplpFo#{kʮm 95SsnǛmRvն7vkUi9UȦL= ?_ O5a2P <KL&x MHP*ht^/> oV 7(½s$]pj|5.N'UHN M i)*%B\7e=xcYR|˕iuFhٚk: _<5NJb>x_nOoJ!$E貘fDp6?=hpi?o4@u&ϠY.?Ok2,;WlQoEef_Ϧ>lXaBӹ 0i8UdmIpN^_IR'ϪC$35CFT}Ux"zZg3,8sYu}>V60v!,0ӯþsx5cvch1TG v|alYc{C")"N}L¯E%JqAӖl^s"~sU@,]Mk*ڝbȏ&eDudzJG>+I>pwe҃@RlF=~ I-wPyY!e}9ѷb-hyJchMѿfaIFhIH&*㪔Uh/` (W| ;5F[ybh>TRLҡNRK =0Ѳm)~h(4%[wKXWA[Љqcu$s5'iQ\M(8=Cv`ҁE~ M+YgAptp&%$M1N&F:;L,8HA9I TX/ 3uq~ Vje:2ERE GK(Qb^@CqzZʉ %uu!6xq g`sȇ=1<鼙 s8Ix[ 4R[x ">R| /ƽɘYc7=ra&HW/Bg} |X4L_OCI6O)6G bY͐ ٌThbpm*u_62!F'bNЖ ?2C6em&<}puD`D.0zҼZXjM1atOM#rxkCsp%Jnl:wΑAyhz1sbZ#0Gt +;yqRXƢdZЗtQOwIPu"4@ ,h5>][0,J2W=pTz]m[>^O`d&_8K]"G|tX#X`(h$K9vQAh"yC ?>M̫PxW}8gZeWu*3^dE, l/in֪fNJW gх0/llq)2DzB?*LR[||3F'}S3ӭw WuCk<@T߷%FG,X*axx0A_M[z}L# I5vU.b1:'BW] b/RT/hvJ8ONա'd򠝖2D:u8yU|Y1Cxeg`熀z]a#zDvVUkbsoh9؃.A#O tYNB( y+~Snx܏XϠU[Q^|:!acs@g6s@&O+OlmJyA/X\8„ғˠeZn//~@ ֘+,p{@^zs04K#0nN;i#M7E,CS9wiHF3j8Jmt" .Vh,i.}筈yY7%^+68xbF3 o&1v^Nț8ی݀@'o0&,J,b/> A@ou -W~=ū-ߕB%5<;|r'vEy z1l3H'M}Y,A ϳk,wF'w3KDlO4d>DF41 >fb؋6~,`x0€Pb^ Yf ؎YcVcJ Hge= X`h/Oŀ,E%SI,@2c'ǀn X0e0% 0g1pNIh^xиh<&<8"8/7`#K_h g>wZK\~ɼPi$RHe-[MX-[M]RMW{ Ta%}uLSFeʣsH>`OWhG~6Q;Ч[/!3!>촏:ݤ;!y=0кZ"9bSwGL}zK5$;Z ܅m=p@ơW XQBU't?neK!,S\f_#i(gφG҂jД{+ΑW9-).v4?Ѵ|it/ z클Da C;{rPp(-2ь.Y:zR<(ḙr;._S8#l]oQH?`4ru|h'>=M//ơVxzoo]dOAQg402*|5;sVے궯z6Kw#(g] W{I\kWԭ]{tG߇UβLp Ӿ%DNQD'a6] NFȪ}'O}Jb-&>N&U11O_'^L&$Fڿ&'L&Q#AO@bB;v01 U9Q?{b&Z&,¼I` A e'-_gZ;~0ʃEP; S?Y?_(:O }tE&l>Ciw0C? ʪvKFQJ@WALxP&tVRkU3mmvʯ]~lj.*JA*AKpECqR i.=ϸ` *8$}!؞on* ?}B32];} qoa!"WORW^uLuzK)}" KSzŭ7^l-z*w]˥7 [{{Y;=]kPn$}c7?&!F] Yk%_:)\,5!Db)0U"jC@1 Q8Ki+6LÚhugGZUk\q3^9ex' M/*{>O崴Vu~֗ DzK9g*L܎0J鈗zlDZPvdx!\hؘu N坷 J<}%+TofijC| t #8?{ (oB,3dX&Dzp\w]-Ml<-\@?P1Zl56̒gN&ĦjSC-9qsi+NԼ.BBf'SO&rlgcs=F|ZP뜤Dk/]h/jkD1hmDzk-8c)RhŤH[bj"ܱA~Sé՘lʺYipm. hx<<3u=+_Aw̴r3K'/Q,IabdtE̚)T鲜 %Z,`2kfYY3R͑g,Jv, "_]4Ԓnbwňi SWr6}{8 ҟ7_OBuGF=Xس3tqUƋE`\U6~}|ܪ~R3*n=6qs0WlsWi7w7y>HZc%  -6Rt n0ѝ^@8捇0^p<3z,ˀR#@ґaX` bGǍ@vc\7-T`>Hg,0(J1c}Y|NԆZID~Ch(R$Ca RL݊L1ZNQd{~̊I 0N#|qDqڌ"~_{3_AnSdq~>Ӆus8P{m }>G٫ UT[€82b$FeDØ?fhgDUj3ĕY;Hw:~-"_GQ0Y\Sr*@DCXKV렳-2 &7MA`FD7V2ۃnNSfamK+0):Eq6wO,ea f㸘)K#@q1)K+B=6U?6q"^[Z)ZEk+8(?o-zK+7k9_\buOuyl*mumFm/ne5E)8 "8tQ=ȼ՟y+K?3:ښߖ'_gK%B_۞q59 kyHr]J%+[%p Jmuo:6qmٴ]AܮnXǘpJ3aYL6Pf9nS65`LzI ~{qZ_!] 7tyLD%Z6-L]'D[6-ОJfg14XMg,W@=aҶXi.\<jqhiծM*Gkpe@je۠TB<۰9k ~ h̯ԛ-,ugj_!.|ϱ>F/I$-Y#b'^?җb߰dx)eS%/|%fҤ?bI]=v9⟻\?|@v[nBshP4 MGЀ-G{.@ܖ[ԗ_@ XEG!vbIĤ}!^^usYnB=ް_-PsV4d7xغhkϷ\,֨fa8FJtaui_a#oE\0!fcXl5'DGy9sR*"b_.BEvYNar vեkry-/͈)4$[6i˗_|xMi/.'\4n$vlE-Kh_90sM9 %c@G?-g4qss_]Н=b9/.iB>e=Dz6<4;F |c$ʦq KxrI# H"A?@9>mrOw|XH#,pxp|d&yLlq+vLW*x'qZ4^jQ"E91Aߔj!˞{"ZOaǷ0,6~^ֽ wMӽPWZ${дkơh瓸s&!>4quzWݰR zł}*{OAȭe%ʏL?s9g0Ľh9oqt]~֫0=uj!X+ygq4)?` "3t)(eSo`[% c Sk?Kc9n?&(gFª(W)Sj՛lJˌ]+%P'R35|$дx$Ł'HUcvOi棲ĭ BV=ZFUO|5mڙs "jmS' w&)׷XBv?PEϢsVg0oL,`' MT$_u\g] T0Q1.Et]Bi'V/*Q9p{}% jJC8k~c%[顨{HkP @KXeXL{Zq~ q,z"Vly%s|=@Q p:rP8ӳ/n3O Cӝvga(!f]LD׃G*̙p Cꯀ!׽ |4o׽2v+:߫$ԞCaI}Ƌ.K( >=O ⥘^6։1"\¾L5~фcDU쑆ߖ| k,b["8Yr*i^@tڕ_CD\I/U x@ԄEC%& `c? p=ܿpb"w|)0pWrE%L(l;}hvr+[a|nSWpH>$<==mR&\EoG[GA?vMFZn,@ /.Vgz[Ƶ0q3؛9Z naf[$gadK79=s8ʺkpuMѰUQ1}#m!.#tLjYP~v{mOVn~5N)n驹e7 Erv²mWt4J(:]EKƋbQS)^DJq.74&UuW핦mRިCmz~+E85b b/c铱V8Qڄ[!W%jĩyd;aj1B2[PR(C=9P#Kjَ Z1|w54j ZsÃ=Df!%L[t @TVCoL].(p/sO6t#ě}b?86>{%4;b$]C> ֿCtO wtmjAiZ QQYӈx=kJ:(oֈI6X4ݠ]WSΦn F.ȺOs|@78|ucw^m]eMv\,AփY h>RI*G(ݠ[1̵SW&b'븹(r^ȶe%9n>E;?qƐʏ %] .v).{oO$\홱︵o}yrZ LqjOqmq2Ouɮ@Yz5@ SӽeCG(~S\{Bfi>2yo8f۔Tg`s2)٪6Ƀto?3KICMx`wrg6f};zk†:Dq0#׶{LavjX(ڢ0fn\":iCUԔ66gO*ǡs=>j&bHt;m h{?Q5)5)#5[sJ;GL_9t H>/,lÌI 1|Y,۹$ȥw$' aag@~|Hw#yss 7oOZ$9Pڣ^uPKzěbӽ츎lɪ TQW 6MUU5U[munk,JN JJE)diA5\ K/  5H'K:M}@q4MX՘F>tS'w'E'%y2w3<\=׿ߟ섿Mv4]$7둊sCn83j9 mevr_*rQ=;/uu#"O z.zшŕ9-r8׍FR z:_,OQE7Ɏ %5VZSIfsG{H@ Yvf'JJA$Tt.лM}.49+.FUu ڡ0] YX+s)Gk犷N>,dyyeQQp=_)['TS?fLkICQ׈C&U xu9uD^-SOm?ן'U' {q:̵A+Ö0S%n i'*9A޿ngYC1?2)Luoqmpmj4 hhb}кļ5o 5 Y$mSӷbrǸ7iJkֻ35Coc(>x]uc,OWt?Y |)CJ)+{ B<- TƁ CU4]heX݅=~ct%o4 ٍVMCV[zQ]fG lP^&?)`wSX:6XGrgj*f],b2}ƋFŭ7(bU,7j!EAu1wn\Y0z>\BZarc)W?)fw$~q_,g~eŋݹ1FPu쪎rμ+;eG߈|V1Ѭm6pk CuHl-~6n'bp{WЛ* 2c₋zSM}#DX35d x%av &3{b()ׄ*l֖g>>Z3i؛nl|q=o<#|jW5"_ǏW%ކ:i0͵Ey"rdbm) ř} ѻAڀvoAo0նS>Ҹ-Qn߃ }B/.hiHnlZlZHklZc@ɟKkXG QxS$\<O^4 &+̳E|תţΟ?4X=5Z0 ;O8~Ҟ0şF`#0ZgY`}:K2 ðм3y^@&[6oI&?B4#2x>r,_'6&5D؆)-#0ۧyͧ q3N2wwnث:72@=Dnt@}e0wFu#B݉ݨs2[@|;=Ookqvl% 8>F+&'u oz}#w=g?da!g:PĮ#Q#vahrRQlr''IlͣԤ)ag4@F{08n.͡M#h4kkǾעz;(8Xt=9tl̍ GF1l͵|;yggܤq4.<4K0/ {D jNNVx'X+9,KFR6AM 6s+LSÁ폏PFՀlGsklxv,GO㧞zWWyLE_ _wf\hj߬pY]0^ F#V?4H56 3 U=9Z7;xVպl0 >6sÎVL,Z!k?r[x8蛊H-HgUF}ͫBuH57ū/8j4{v? ,LUk[;u hԹ=AL0MB_H][Q0UK6(Cz9o52ٴu4`T&"2f%g-`%fN{{ I!KK<'U~Q s&"~tJ'7>1J+ bAp_x `V>]lT\-sqR}WiˮGy{鮽zMwlՌpҲIUI6v密De1_  z7q3:#r.%A TMpo+sw`uwB$z~ 6}ܴ~6W!&^΀bym(d%Ԇ["ӝ85_gX^)w;J uR8 TZ}{pVzrGYDRX2="a5GdWY8~ ?xcOu!'u/@lo?ȫC\IgOE5eCUS2'&y$g/sg&vqcl;6xjСɴz#eS,`.b zT0 {tyQ^ixyuP814xU<je}82v[^1.> OࣔHa;u?6 `_ }˄af)L>dfqP;/jDed-ΤvlCl&=3j soRL^&u;N$6=m*, s?y%arlq6 K#3MjL~dLHvmwU|(*YK#b(g%/3<Y%[g>{޿B=)@h n7-_x}H)vfKEh2+[,zOےArZkPf0uQ&k;毞k͵9IVعF^Vu (WG;_5[F l%5]rw!vl]Ys,"/B}Wawu,L,L02}3t}t:o ?v vT:^%cZj0"A&) 6t`iR}ΨFiܩkxK(<~8C 7zѬ<8$%zqY]#&N&``_-VXm@ 6[/y3%wL8xdz'e#vN^4d0)8[T'lw$ cLҢL5q "vJW9;PpX?HB4Jl~R'9of;}z!_/~yhB ʱ,>gNK{`^ A4f/jΑat8%#qTϒcycX^JJz" EB؍"t[Corvez H$Nf {@6. 2 tv]WBКQwoEAͰ%QC-xgSNp'r'V;69L%dŠ-mMسT8%kx zjWJmu'"WwWbWK:H  7_(rE6]cADCr6Pቲ:**7“{}'YC.7oq]=xv+LMl'R;E]_O?=J͊ݷ@k'%D45nF|TI~_L|26ٻ!U|RˊG#Zl!>NX7j'5jooLd!O-ځmvNAs,hί 4 f9Oj0)FKj0XڟšOZzr~mnRcIC=a_aboquɝyR~|9>Ubx#aiP+/8>X+ XSXZ _ڢ&`DLa:QjGh[n{'fCjqF:! 0q>uC,~ciЫt pTr-JlQ| odj51 aYnTօhރtd RaqS^(nUj=1ԗ5;6נ_p.wNm$%K9&"JdN6Zֆ˰6 rXq'K->/% O@a PJQl^S=RV F JpT튣o0YT 6Abcs[FfƼG My9r36ۘM|q~p˯<{2*J lз_,   /+c3}wq`he$c8^3mFxrV-7UajtoeK::6mĚ4ʶH.婕UGm<5@,xxQ^>bI&)װ襭Ƌ|= v7C P!}ԄES^ح{ 45T__QsnZ> K?[>S%vpCgP#lۘ`"vpav?Qq=PK0'ǟ],_40@]Zt4g NqB[fpCO&MWgzߧ\è-F]nTCIeeMi o1X+*-;oJyf:&q7b3j~C7]EguM?"`g8 Ζ(7i"3(#k4ʭB/{!v'it5f(=&]InC* 3->_ | JM>( 9F# ϶|ֳֳgZ議Wm{cL6δ2z c߰o0롼xKN@LՎ|!H,c{*yf @=7S6W2w`͕w"qv/bI%zƬO -^=4@̓ѽ)C-pc>⡷8pS{ҀSR;Co.#qދBhBǐ+̡ <=5s{ݯc*莢9Co9xrp^-jA u+zsBwlFͰHM5?;թMgOh+gu]oq܌t?O/]>>Tf&=:h@͋S ũնg&KM /#)(ߒrT/+]Gebm)NuQg?>{.G} 9q=LitbmԐтG8[89R$H< _&`;QBdi!썿q+'{??$֤$.S~ˢk]>% lݱ8ۓʷLRsae)3u,R)C7a4Z@Zţ>k۱'% mmj~'_|x|^0 _`: :Tg"yO7Kbz#܌<Ꮒpp|P4ϵ,UMYaċx" GF}&~ YGP\u7&Q=;mp!X _(Rb/^Ldl/z4#?^?b`Q|IuY̰n#& U#-e5~Z o*ٰCDMb?*>B@ D42>;lS49(ב?<|b $?35hCOoj=4 d[;X'xf6~ __L\Et (1k P"B_q^*}{:VoYGʖ˦.5|!^ +Uʥhh#Iʟ++-糊[ ED:L)!i=q91e=_m )UahqLršAc=;Tj2XR) 2أWJ-#wo)/CP_N"tYŢsW84iqA,-4K~8?ݳ*8N eh?E G8#t90M]ZtVZKk2yRK8C2 򕙬_S{wY4 훂c>SÉTĵDxz2>mT>XhɟU8totuoa`~bվFbL~ff'-orPJlCKp԰.PBi~J a|KrFN_%)9?' [LJ̪g?ȶ9F{똇OY'zѬ^'5Yǯ4D3BHhI7=郞t=MҁVJco8"]zQbNTShR#ܘ82@B}Or:n:O v;>5#@0\n׮"YTk-h2o ?vAt3s?AFJ1{J_52Kr*cVyLBɜUsj  Ct40A *_lPm0Ik up?E9ל"ee&d%i|XP8 Om}˰>;w{ҋ<=N饂Tgk+xS=rSzR <}( KEdrp!u*o IE}9d8ଜ79!RJ L_zU@mԊm;):C%xUEnч?=18@¶X,t zH*W:MG^'#6vfjL2q0gh:hjghg:h_оl z X3_P^>P4XS=]/eCw&v`R6 ES5bA~k!AV4 L=RASLyP)GymdDAM l:ӓgJ.ga9ȧa}r!.s130k&?8.gt/7ɒpqH׀4xZ6/bRBHvM5k)[}: ;g6whTnn/`CeR`% ᔌ*R%{a. riFi:+L֪=aDRULhg _n{4@}fCߡ,C`!޸ul/!J5X2x >C#U$4TVdѳ.|G4С-*MAI[>_8"6[xfbnm3YqS<0L=:Lq>'$\4VY9/dfKIl3vgyp6-LNqSb.pَLriƋR¬>pK?mwf}Š1QEmgx<{K>hEw "!s7p)1!go'P}!Nx'6V7j]]saY!O 쵏dm(ee،tv,ie&b%QjwdQ;A!OВ#Aa9t'g)ͥErTHX 듿'rhj;CƧpi2_Sz7J~C;'h\[ctA)gaE  :ig sY*mqQ qk0Yn;}3ѓ'?'!'kLTxڬKIk+EHUw/ƗЀ,"vGWKa2p>g*l|>oYwʩ.^^tCײ]U$Bֳt0l×q(Α0A%l&tk`kXZ*ī$p"š pJV:_v.BƋIRz;Y& :#3s]/! *4iq*gc P;9\+!ZiW0h3/yP'6e5nM+Zؐ)|ct]=';1w.B4npOsΡDa#:1kZ%pJ>GZ$-)PL!&v5?=] ( 3ŻLWasU?\%ޓr^TІ˦OE!v|EON)s)=Nv8t]Ԯz/“ˉ9٢I몺xmlQкr;ꯛ)G{'>҃O.O=m%W<$LLC 7>̣G w P6KEZ%3$ɓEnvy݌ "`ϗB2AiKQ/ ܳNV']OL 7|Kj5ü2 ( ֮u6ut BL9S HءzE !j(=W%蜭,)7BL~r 4)}G3͖1{m., oWyw"qn8U%TTʛJ*k|I=;AҤ.OGSꃃηkXa#ol.*NfP?hsƻ]4Y]r$I%LH9_WmD%0*uXSoKPXہ>Ruow웂ɔ1ZGks5P~ u#G^SoŸ?F-HSL}zĘrۇ"ҊN(+PCIP9WbYN,j;&ER"4{ : 5*ŸW Io3ͷCriY%Ezg[x\ &Ҁ8qzU"w\11Zl$ W*@{i*g,`xơF_FDii~Q/q6P {6^mB]f)E*'pT/kxzdb5c YZ-Qd_dȄrE%5ЭY%./=#;ghGz4IԝI'$ў[%foVJ⡕!cPҖQ4 U![,ڤO>z+oNǸІ"C`Rp(zTZe/Kk#s}mw"GUJAy2} IzOFQslplQYbhB<,ٖ$cҶI;o2 exj_f٧/4S=xd Vf7쫨4J12Xy0bBy'U5B5oȷ$ݚ#tSI^*nb%|)Wc)--Zi<.7hMqd_*|r}AEM_K?% fOD*kQ:IaTt=_.Տw߱\h=OM3#:m.,B#Qauz~d\J8dLh\.tiiO VRfDz}/GgUJar( ``@e=$;4ow{f  _J'ʒr5F*iTؽ~4[#;ooB6P7wytFe*|7*c% $AB[5 $Lx$XpS7JLDt]YAMOvFEx(ȧY,;J{;X jE}ޗ$ujqHxhN6z_y<ךIFs[\EZ[:r{]p|U+bZk4nZt|e'/BMڡy؂wo87:zs?-9 ?VoVgdi08$-"=Z!VN\v~`䰯M31<^-_*Čm(GhM x==friq% Ҩ_݉1'4,Ȟ7ӚzWzcPۛR ,dkj &rЋ#ߚh71C`/oz9'ҁK?=+_4˻EAӊRy Ӹ{Р[ۚRw];hEZǕ0&ltVlMPɳW(gil‚P:53 yV&(?y[O*ȌJ-9ZeDoBM }w6esrXp%==aziG7AFtpF1 ͞|2.(@5XfxI)BfRjIF:<L_A* {󐪘ZOMh ;Xu'!%t|_3;n)bPyL mX['И!+k``^on->~;+&MWV4v((㓔2"&~}jLX:>5|# }f~,!RBcL]EX*&D]0^D:p|K.KB$R2 /jCm߁ p.Y)'V yk@J;.[4E7j@ zw)T A:o/unqI/Xt`N'\.xYu\_b5m(6ad)Nrg *\E1D[C8ER /V&OyD|PINGIp'hQF;\BR Cp1!/].C|Z~c)Vt?MϓNrj*UOE^)ֺx= n8ޝQ>^>g=٤Q@ZwԭI$rͤg/cf/(Hl7[̑670MxQ~Rɰo ';xEo6TY JK)_QSMV%;Ė,EL6[ ̏ZKuEn:UYQVF7FK٣>}V)}cXf~{z;lJQ|wa'5) l)a1Kΐ0M2gfJ18DsfH//y/]}dB`pl_V>K"mXOeFba<'z MyZjy+!Р ̇1b!V<)DWPLjziÉΖ(DπķEQGγ6 r,\LXGI;kP]|=νygjkxy=';o``4>z_ڑY BAc9/_}b [`{Fl(|aQtɽ5ɗښ+a7^nF E7 1 -(!*v+Z-WimƛWœ h1&wz,~!ȱ6WDI1-QMPrKOt )wѠkk3RCӢJ?c|7kk>)LW+1*^4R]@^kg0M]>el~,6.E,CR~A=7`s. S`9MdF˟ _\ Ep>_?2H'O'8k3T=nM1v֙y2*ڝ-*##}HUfMoDzM1vJ| @MA7QG9ٮTWVN=*jESOֶDs2;b?=tXmkIϹvK{"_ ,c+!Ba*j>{/l/ g;P *m-= s.ʸCx/4P9b^HNB}=KvtE<#9jC)#51#4m=!r !};}UtЬg*"FJZ)ݐ8 M[rK Vݵ$%EtS k2pRuj"Ah` THS~<s2x^ĒRObQaf#~]kXɤ^̜_|fK2EYʜMgfS( g9iRlzvаїU2xswi:i&EZmV#6j3hjн5*])/mk}iF]B$l88z9&T6H$$A=G~6UNQT0yao]x#݋y%T/ CQoˈ^ڰPav,ԽS׏>2E5 Hy fapWpۑآ3 R*ng[$Sŵ׽%mZM-o[+aV$^Ȕ)<90v[7Vs%uqgv·)}z6qbLVm.ASq{gS^"7LS .RF;Ǟ%X_iM`cޛQ||o9XI| iLk, `,!(>QR:ʻ磱,Mz=0x3{, q+eXD= |%XMBs'.y Z:)TH I. `Mv5M#55v "{-FXE2a{L6uL|TJ~,r.؍*Pj1:9R?$S:~Ss X)6T%Dp}ú_2#'zZ,xs][UW뿖 z2-7RQOBBjHo7{S'9fnXiG3pWlmW65nu:lU 6-S.j.Go1GZ5Op=/'6nުѫa{P =3(fl f2fmQruQnSܲn;U$t) v1`ZqpGk\BOcޭP7ʁЉWAL#m]|xZ~Œ92glnidyL7oCkVDzo~4sO;n e#iХL`=!֤3?<5F_J?LzK <?`kۤilصl\}dG&UFt>z%].y⧈:3?Aڐ;l}lѾ>y>Oʖ0%fwcYXE(K>oܿWJ[rŭv|Վ:Mːgk)cmPtjF6< ۔Kn3S_ R3Q$[C hxt`}lHu`<y [2'H[;?W8sE%/GPC)ƥ]q5UܴޫSy.RX<@;?L'(6T6~.MXܡt@K3Zn܅K=l|9I[HM) D2*I xuP[Z<2T2‡}99RV݀tXcql]+th3Vp!^gdJoYTٌ>3|@'}M* .T'`1KZ)Ry*ӊlMaG>LL_:|Ø)>0sZv.\3C 6c#Ƴs2l0†UN?MwdatGp\ A۳Iic0b|(GN o~pDu?~O¯1ij} ۣޣp,]xЅBGmAc}@<'FKR{<5ۨ_I38Cu?mxlrPwdODGJ3BoϏۧ3ZJ}8:#ltf6UC|ApTK'kytI]gJfgRR69''X(06)Fp)B-sMhbc'gЊ&e$ZaVPIz#,~ɊLECsX .2*p|rm%0}`^Ήvu튦6!uN׈6, c(TԂ^hrt{'$ާN-iB _HsBt]eLBVh`t@ZΩICk]Q=ӟ~p6bEaoՠ{+-TI(0w?^ JlIs/]6--GlqosbG>7]$¸}Sxv(h5|xAp,A_H!^\ь.Gs 3 *X?c؄k Am?h  ]0NUO-gǾB;i5x"K7^^GsNoCLq &ߜ8fs F*u\ ޜH W(@u`X*exs.qn{b=G'yɵ9}h=19d"h/ѳv +<9LcE٬z4z=Q]eL4;c`egGaGcçvDnAΐMRy%%_'͇L󳤂xih&DPcW 캈8lwb jnnN@y%jetReʘ>. 3TuZu/LsEMCjL\IB_T{ԞL 0gD Η-siˤ SZY/eaaFCG8^alD =!A'ާzGu?>8ɻt;hEm xJ [MeKuY1e/&9f&XRb0vxW-+v}n0y8 U8vY ռev4KEVRۂ4n o[I%]5JRÒ겻VʳteH)]%e Gh4%KY,ռ[tU*ˈ] 'S6Xua  #\BT`iQ{|1MewyЈi-T[*+.[.)͂dT@/[x%Fb1YE*LTQ`YhAbEs[ UNXi%Lp>hcֱޑ)j?r\5M*jp$Kl4pEUƹAͧqİkW _lvqbJq({ƥVn:?wmZ@sKiqtq);q|-UbYڐU.w)/;#˄Ro/4̳ϝ;@ rS4?'L6ňa, hi&܎ì/*ke,IF md|V{^O4aT<ٵ`*IIy`?gjv1͒LSY˺1>YKqVYkX@b4v) H1TTT~I2!5FV_m9ƾdƸ8Pp4ώ;^Nzs3HcaVmd~m^IRVdWtdb8Jl{a BPxJE4rVb8`%(Z9+@N0\ZY薕`gY`]ajl@ p(4k+`%}jǥ3f2 ]0;`^0s`-) a+@i5BwXRl ^25XZX׆ԩD)ueuBrP `3Űh^)Î}%UwfcQaΌs ;gmF0°ncfAv)0Cf"=nTδ9ה_D<` ܰ֔a\vC挬 aX(:K YWRw2̍yp eVT++o,%etU.  {^`0&'/YGٛ*`@q,)SXa&zqiI4Mr"IL~gZUX+OiID`j̃ rOD.c 2>/Y(":ױy_ɸ_er e"wϟDb o +0;RBVU=0B#lz I狁,X !}z9U؋{'Y[?4Y^USF| !ZVSEv[$l5|D8R H "t"[D t]Vap*xATLj @%6KX.QxEX/"y$!J*dp YX`wJ_PRi-ᚦ !M D|8 DxX¸Sn~`LdE96]1 ,}l!`M"! BQgU^BnVnX+n,{~/v~)|ߍWkQoa)5臸2歭E?B_a~[,{Y+MW ذqBV>0/O.%w][r([[`o蒲R:gTMpA[kJB&RbHX%T|0:/dWKՔ.oɮO*+H܅_ QhPI"#;b-)L%* fZ&dDJJ'ߘD*F$ɸ\Fr?d0$@3o ݒe,tKV!/Y _H4T-tK!ҥ_ n B>_H4XtZK᷌$-[N/t7[L`>Z1Pr9Ի|9a9[LV$+d H[zW@ҭH9=ZJtAV@8{(ޕnr`%rٵr9ʮ]Bq)nհsewVޭ`;W`hq?4,؞ExNpS=pnTB|rݐx: ?kXjRiR _`Yja 5(X/ƶf- *{4ʱuռ}/4u+_yY"(#&#|^<*Fa.ԢR將a׷T MC_ #5TFUMFFF@%0RqZ nBҪ2VSauhGl706@}HKH6XZR?w֕s/2M e<#< 'Bg+F|ql9w)/xERG=Ȕ*pÇoI{@Vh y;5 xrؙ@9JVC 0Jvz~8WkU>;TvUi(]sR UXedl:g)D%r*lg%DLJuqhX{YD^% !-3V``ܽb%K;پЋ{?')a{J JX0: -*:fT _]+ uw. ?FW `_n v+RepVJ-Qf>YCr`q+~YO]6ݕ5J ,)Kܮ4eɒJ^*/+'r~J컘PԾ 6R@.łŊPeQBNp?pH1ʶ yO<+ݮە돱\WZDjJH2zåߖmA~X;˙X3chL1i)z;: ٌI+G&+IICĞi.6gl^?Cae4'4$C Vq?1t+}n%n!J? <(FUG^j(_c(}3dSw?x=N0'->e$| Кt/ .%sOǯ2_VVBu! e$XV"zLzٹr0TW 6.j&$ 1qF7&ƍWUT @4,YP2E`k*7ü'#HRGyQ%!y|.HAzG@'Q8*MJ5PiU珟Kk/]1%4tV*-*]أ v*l5T-ws~k *XCY>a""O|80aH" 0OyܔEdwHY 0O'僸ן& Xr6'Èa-[?m!xl<_\QYw U?&mKY'OQ&iSAL?܌WI%ETv{ŋ* B`(-/찲Ǘ3gŴjC AU$dKMjAq:ΕUiTPq5&/!K&_b\A@K`|,dr%Ē+ݸd}(`k>+JsQ }"<.  H*CJU%0QX*G K,%A( m0 6UliA(&/tr|D 8t @p˯Lj)W]}hr O87*SUZJT_JPO @@F[˧/E% 5%yq&kƅȄ@,  T“2UPB@!s*_7Bw$%r0<ȷ0zϿ}) '(#wt2~(cN%al}T)4~'`xEeVT)1} TJNvA^ iؒLl/k nK LbA-:dY8b[r-vaJr<(+$7@U6 Qo= KH &BqGa6ɂHz)ale N) Oq9ʤ]?N 6у4R.7#o[JH~) aOՖ}dPH3.s o]ۧC_=A튱tg1;+*UA2ˋwʪf(x0óZU4 a1 ?^RƂeP EWFg0~xhG21NUOY_XC`Kƒ@Cr{T,B,L_f -G sϕQ:8ZeRS Pf̿6M+ˁ iZCq @[vƌ_>Hh7?Q͖Kþ)_SPu""|!cLyb &y懗^)dni~,xɳRRv[A4acV/lҟ lMj!#zC$PP\}*h 3ԏpӓ[R]`p]MZ@/K%<(SԏP!tΖp5A++z/xI* # *cȘ1[ێ^?U0wdBxJɃ8UjBT%2^;ldK ,qE(]Pf_uas L(l+ ww~isb+lؒ(#?ߔ)/Ѝ2ollY1ǜg_1 U c~gՇ t, pM2FOBPb'9զ)$6A6Ct lz ?cx%<#P`lſ׆% u/B6h+r!VdWTX\/Ygʕy4k`^ б0(Q* H 4A1*5<-.}c–܇ -s'If[@d?)dAD'ƪR# ey^l|H) )ߎ .FwbZ 2rtOCۤUnX+P;:S; 5VڭLSB>$`VJ|UtT@BVC*YZ)px3N ?!<VVH ggE3t c֏Y ,0O>@Cl)+5( 8_P8 %X/Hi/Ea6jy%: x6DAIA$$eeA2mSmS7mȦ:jWpUBXW[^tyo@*t@]|~Ɛ?MWrgvBVsqEoV;%\掗ʪO~GeCp2#IXÇ \Cp ̤rc{8~|$ 2<>%alM%aӛ4~~NS74Кjj>P-iO٣w5HŪYێ2pT% hXHO=mJѩT5C4ņr;TYGiB lt>g?Vu";[?b!S;G#:57iH@g͠sAv;}Icoՙv0jSX~N?sV)S: I[,-06<*I DՉrFݱڠ ] g;~췇nɛ!O0k:NP&>7٧>7'I.?ϛ\6P2dLwSJi䜲*JY<N!ŨGZ+DpJC|({z5cjJ ~BX6{$TNHQN`Em*o Ł} dhJC>j: hCOyW~s~"eϒɿ?iu`+OX^{链L[ c>| j<cS#Ǿ_1D% <k-ԀtOi߀S_ |:}СO @JÐ?~KG>o>b,_քnxBqwnjar,S `ℯ{; 㖖]SoҪTAK0=JczOLvr5rZV/ θ٫G?Wvū[VM :1&8|dPrt-MWPTǦPO曶 =z yQM'Ò0=<1e5Hm聇 AcBx㩆y< gjO}l L!`=d|Z{'SO#)"ӑbK'ѹ:J1=j+;PHwHc[P򹿞xXH g@):LQ9c`*PQQ/:ω~D7UwQ1*SEygveySUi?Błj~"USU ALxc*#çA QM8f~?TQ*2Bc_A1HTI$٣O7`DkB?OA>F4>OɿȿRO˿6{_N>\D0+K U5H <{_&_ӿ#^*%RJB%Iύct٩ 1L-mRrQ$j/%^L?_HVHJ\Mӝ)^{BӔpP%.^ӿwCR&eLj~s&|-5΄o5% `YH{^r`rrUsUv疫ʕ=vӄM$:vTLJ2Gw*^r:r'sus˝-!P,AY-,w1`K>,w9/-,[`u(.`E/W˯F@Jr;o?;Q~8HZnnnO>h%{2C^_-dDUyt :t}$@W-pzD}bGx*X^6d<-8^{szdn(WIs۷%>eG^INzəz8NϤkk˹tfp|r37r [KnEͻ]/OMc tǿ/ ہO '?7LsOp&mA# Mqdp+WTnj_}{_grt޹\z?Kg2B&H_.gƵ,GC$r܈w48om5?;aPHv3(T;oΪA95z=OS1σrwWf{4ОTo+OfәYP̄`{NOe<7ˬ/'Lɷ->xO>~?.;p~mOgJuo\X)5<ɗ9ee$I#܉=܇)|$>y e|^ >Wg/>N|> >><>/s WyyA9n|Ns?>g93\%|.>Wϵ_>͒~lƽ+ˡ~[fI??]Gk{:ԿI{(>OԿ)|?"oE[VQ~ 07GfI??]\3]Dׂg^͒~~VTA{/o;ҷ=c o,8x$-࿽oo$s&d$77 E⛍ķX@)w*\9H~THH.2o \]wF$ʗ[ZA{ }w"^@S}Fz4t?s4GqwHHn߭ok$p$ H|w o4_o@9w ~o$}||3o&_p~{簽smҧ}ߙH|B$\|r$mm>Wy) { {-@nD7K> ڻ]lk;㻵>8C`.F.ׇ"m+OzT\m/[з Ihnyceҷ+~S?z*W081^iltd{wIw2ߞ;w:w.\;/3|sg7kYE/cˢ_EoQm|3;,.~xr#o~YONpd^,+o/'`-H$H4|%XLF ee," O#i? ʟ_<Ÿ?oRpagaRxX 7="|o$|EρLiĿ%AAHH3z7K؟oD["g4Fhd{w!jY,no%G#a7lOd{'~"~7߇"'~2~?BH0~g#gp}]i: Ÿ/gP>d#/!H%_WKޥ^AW"鹆"o H;~ "#1MoF"|o$|E @|9zDI&h*xF,l!\|%9sT;xFM~! ,c{#{ ɷ+%r\o!H;~ "ỳ1~S$|?GoE~[$DD? D'Ĭ̕w2)AH2~#O#~yMj }lZg0Ÿ$g$x݋xF-'~_|EGz Ϙa/Vg~pF i&rNbSTDU~$t;Sw-"b%TpKp ;+xW 꿉p7 꿅ߊA~ůI^\_kx^?g _!(I22P//22/IؒKG "`6VЮmخmچٮc1˅+']Q1oOTJODO!TdDFΗY(~Nψ. 99#.T\KHH~XFˑr$j$@7f|>xl$EĿ\՟#gKHR.oGOy_Elh ¯yzƇA;l~u}YIɎG{QMFU̟^E><7p#Zw\EQGQ>Uj~Qt>A)^H8G-Nc?'<z|8N/ ^GK Oo꿺i?~x ʧ_Qq+}ϯYT~p.XW _6cLƷ֕ r=W :e>| 􉎊g.Ѓ/]]qf>T,cxvU×.|BWUz|.t\]+7ݪ*=OޮQgP[rզ_u*-3OM{:U1_;Oi~i"4拎çBPO}c{,GGC+f\tynw[jW^v 3_j[Eg;%7>r /ۮykɝrLOih~7;&Gå*G׍z2*uPOv+.[?ۆ#)|:TgJ;Gwȷn|\;nd]겹Dx;n˵kxY9E|ʵAɍuQH/؈=cCϓVY<;9׬x ?病V>ﲜw:]Ŏ&@]=i+]cq祒K5 / M* nlgg?O=y@yArw\{C+p􂽃D o=-\>|F|fW;<xQ{D9qQppu:?0Aad MPU F>nYSYC7C͊/ 'Jg[j>c  .߅s/%k֟z->gUaǡoFOhz ό=]Ung@ݻ߷|?qL>͗FO D$>߇? "LI? _V~>4z|Be`~ϟ`M==Yxu6K;:j^h~vs u uW#>um @*kV\ Y=\00wȠ7O?w>^gUo}}3\?aX؟gʒ>+VOX~Yyg_A'}F oop=~ kZ:owȇdprߵ+y^ӽ|xJj?~^?AsNw|t叞Gn;yY|wFxr{"tO\_u);4]l ȧfI83Rg[ǟoG8{9}e׏|* }|)VI_xpl|}XHS^\ꃼZ M7/ٿ=SÍ>/ f z#q~tYy+AR <~DZxh9I~ܬ^,WT>2/XV_%g-kJ^U>4:Wznf}~yPݡ.'K'|o<}^3뽲CV~9}V h`Wr#֣c'45]te߳ ԗ= Է=P**~죉nO?jٻ!4;]@+#sή/eOQvTn8ti^`)KT.|m46b?+. \s ܸO+j䬛t^?7PO'T_<;sZMūJ{#99;g];zx^a_RM7ٟ"͚E{C9z~aD$i׮5:7,Ÿi{y•s?9o/e?Gzi/Ƈ9*BQvFګ9[kWv&ײ_(CyT`}<|^F}wjOJϞ鏲}n^ؓOu{GJ_i=)vr;u9[G:/Cc'.~xeTq} ?7]>/u<02-oegӞ[{ _]~曃7g _mz-7U>vT-/U]yYAl^?lg*WVHv/o54žt݁{ |;._3<;eav8P`vES]:/"mʛ:ۛ+*S鷳~O_͚/>£yǯ |'}oD+ 3I~BYW;{ ViW*ؾ+^>B]?1/h8ⅺ7(Oc/ޯ6+?˿+g,9Y}%GL(.Ste|ty|X_'>WOUOЃrNww zO} *?Ž/8oeGHµ;x~up^S{GBJ-ڎ]SMY u(Ma')~GUw?߅G\Q"=ueIyeُzКXyI8Y;e_k>PNNvz~&vc%9B~>2z\}Gnu;nw{.܀;JA6ӫ'; X S\|Cϳmyi{g=-\a69 LJ +/:hoۯ~7@O9=_!~OZ@>s@᯦쏇:4pוC|]>`5?ɧ!Z~xu׍|+m.N{w:SqbAom<!:] e}7YԳ=Pz䌱w"ފq{Oc]{\<~NH8UOj|\|SR=[Qs;Cjr,<~kd*7_g5|~sX`D]؉uս'\?,#1zor Û?뤫Ioc'qq]V91 c׆N_xo?;S<Egg#m|x!~'5,ng;[1qy&K/ э~U1fY~,33>>Ç*}|x:O\yq7~Jnkj3пͧ<'C}Ƈrx7گ^`/O l8׭/F^C=[:^Q`1tc ηr害PzJxn}W.%ט+~w^)ܹG<َ؎u[r~WyPKT|ϐw"\'޵H{7uM;NHgׅW+'ׁp0_N E-F;Iߩzuܤ/UU>i|ߝNcu3_i# yk ^b䙌v0vxwΌ0j>ՍK܈mާd$~܄>"Cq|\0=H~ZK}OTKn9ˑes]poڦ>&/ữ{}$GK6~UOF9I˨c3O qx>K˓Yr%6n7/Ɣoz1K!}?_ x?ok^V^=(j QIϠs(;꿋v qyMφ}gH'][?؞ ALY]I}Y˶Jƹ^_5\χh%q-{a Hyld~a]qArM/z{$ެ&h{?qhn v}hhR%Ͼh^x]<nEG>o8VY]8\~v6~tOt^/0zT|Uśv;bĹB~GzE?^wS}~/yʮVaA? i2~l'Rۑ͹9E?\7g4\کtvTJϛFoO=t.TI~}4O:w.U=<=ynQ~W=yE L~DnQnwd}ܾrddrE;/ƕ"͊rŕm>Wnf~K(mYk?t>z "?O6ru&߆Wb+~Gc($J=>+^Sp5<̈2II:(H+|<[wqyLvM'28="l䙑r]ye[Ui _;g-/sHw 5s?ᙵ p>kQ-Ytq,DwVI,?(?W|?mxO=<~G"Y,3Z s>ijR3eW= 9^voڎTcdtfU|>yFg(P*OoεR<`hyѮu|A3ۥ-yne~Rr)=yr7 ۱TЎ^/t+|58+|JX{q-YÂugz_J\8/59D+3yN8-\7ۨtP|^k|7SEFyUɍ992N8X6K='d!zWNP7h 鿿f2qBݖt0N˥T^̎;Cmo'xsʛs{~V|rf_ļsf_l=1ə|Z󖅣Z^x`|==im..Nw^T;svhq+3}6NϬ<#_)+M}(?Ι@?"gb fP >c:g fNv A|^uJ2,g<?urj"L}w~b?!ej'nzUySZz~MMONӱf^_q\ߗm~9[rz[{=ߨumyy\ůB=#{' gYqb%(y5_+3#y2|g5|K/k O//búeOv"#-p YugsF{vaI-{Iw[Cu]dG#\Ofo.Wwq3ϟE?s|?kMyL =l#wyd{=19sv햣϶Z9A{?(gIjygqy2_z,l尗_U_sl we.߀QaCO'w|/we?E>ur˻F{ ?"(7dCe҉#pS L3NhEF:֙EdTQQyP 1L4h>?]vWByn\?«,+7E/[7pypu>{՗y>Pʏ<햿S&N-l_dm;[T~Zfuʸ@ҮS >u_VUX^3WgȧЕϞ;~Jg{R~Nѣ{Ej6^k~$xO!~ Wxxq<tϼk "A{CeGn?U &0C`hlqۜqķi?:?lLE @彈rS.iC~$Þ3xA_=SyCƿ/-A;qtnO!]/< ^;ֿN7[Seuţ k]vj?\:n)_N!<L`xϢyx.#҇cu܍/b ON_wC<}O:#~g: gbx6#:,-ǖWy?Y{3=~cyD)~񥿆Px  qbƺoiɗW~O벙la~#gF[M?3iz_>t+Կ|m ԏ~uV/W#%NIb$]ۿY][^ߒ?"?NO,.?Az?7s֧ @a^=dyvQQK fen{$aG'R~}dO6z\O];յ˸?ԔՖRyK=v^Som@}CΦG&N:JzN7t ~q!]F2x?:M7Wda6^kjgTYBNyqL۩˵䷢ Kt֩x.:g~iw}RԾ/ Fǥ8RN:On#]re)_o>W3ʋgu ˗y "-g^Syrç֟'u ·p6O}>5U8|g3\zk g: Ns6@ϽWT{k^z6t [+w)n_᫾Ym[9p7Z5>v>;pg !ܹ8Oʃp nyT­%5<W-k"\p^-*{mBMp}[Cؿ;l[G]܊駽D!Ut*qp٣ny'#^aU5jG~G-Ut/^ g$cHV=|=UZӋ{>L}"B<~-'8po@v]N/}EԧEI~;M\w7җ_S%:|9LsN^M,OFOws5ބ;C~֪P~#SPcy]KNq<gl,%aRg_S\0P_v~qKy} "giVx]WAZ;0+. O&] J*)Wrw\8Og$qa^#[S39t= }Hh>7qE[Nߋvsy\eCBs^=VLQ4#7qq$GAy( WM4SE@ut*G8/?;ӺӸ|_H>Y},鏛W\݃]x33&> }\"W|8DGo6CtL0:y9|@^}_^~/w?_|i W_N|)=x[?𑩟慌uWN+5W4ZEwU#@nz^{1ؾǷƷxy.@zfMs@QG*y !ӂ2}cB`xlfd3 5ϞvxF9;];b*z@ ۲1Ɂm :@υw~ylsofbh?1hHųgxr}G߬tO{Qx=ԟp O>IמWv?S.y;Izo!~Ky&G&?Kgs_ؓ\^ī+g?+͑n.WW[bݴh>bͦwΪibik?~I;c^kFh;QH?][?3o9Jy;a_ce/-/OW=x6v_f'Gj<)n}ɞJB<*'1_܃q# >[hO2|ɳg~گm޲sϗK-qb@ùGtE|O45;@'og{oɺaTПkt{?K7%H7+~}~^2SI]9X>;_VN}'qһ>DZP8G7"6oOk>qpy%1a<< <| CrJ0|q4'd c#p=5m:?(&|=ӿ w}='Iʨߏ;B[ȥu})Ih:\}A&گ68 .yuc̿  "Owζc?r6Xwp\~7e+A!jm/h^ 2iw\=ul=m5;@k_Ճ{5ޅ mײ1V>ɼ?S{/} i-K>Z;O.݅{ f;@ KoP^h^ҹzI)wgGS[.39?G ޜk2ryl{$1t{b^>& D%6m6 5e5gx|:'xZhg ~ް8IR9EٛNX~Ogwz7qo; ꯦ7^y-{n<#Sx1wP^[k컞դ:_/ۍ$Xw>dϟa{*|̹TK77<4r&מTUyw'Uwᄃ/ݯSLOʐ[ۏ<!>>;1<J2wB7w»wZ_PKLVW쑸v ݞtCCw>>suOLC9 p_nw.S͗JH vS?*'vG{7d7v}4yW.Sz4j)vFv"ަkIotgtɄ7BEgJqWwr9-f'OɗUQ?8Nًw_9]z](XYw֒8N_WS[WP^D{;S *:D8*P/)+2mo|~ۜf~zk5+p%`o1hԈe/xqxгl^ź//7$vyܝ.s4k_P}Vo[Az^rAހt?T!&>ὃ  ]ͤV|yc.Q>}<>Ԣm[n$?1gdzW=䴃&|Yv@Un8*ox+7qp?G?A;8b~7\?F~rzm[ t߷~YvH|.qVOf?ǶC^vN6`/Əv_/~`א^]ΪY,xJڴ8;li`x~Cۯ9x_D [oh:xMPn *9]`_u*z` h8mw]߇VE}>m6Zy*Lnܗr=/k o-ެ|j>SG;"N^GAbA|ߴϔ|4=G:{;~#y`-k vՋ۵{7}"Ԁyt{iѻn.%׾l{B=ya|?իt?^xs588 %w翑/+moue!y9<QK)G7u3~{Q^yo֮?vя\nQ<_`tR'G@~~c'ld|q1~f]i@KNO|a^xsO9W=R=.[h?@^=G\yryX, xssk߯&;IӬ=Rxzq~{窼_i;~qy</=|>ஏJrN^z~.|~*~xqmPσ*aޣ3rӻuZ`o>k/8xDluOSŝdo~/[_rUՓ,or%ů@#I7 Σ^N2}hrl0ɷc=,{ {K+l$IB#+:~W'O7a\o'x;E;ש?7A~P`h+7S)jw/_fh~{!:cO~yvMa\-W]Vj?:s}Jк\Inew;<eQ1ܥv~Z;9H)mn6sN|YvG\=yzڃ N?vo*x_Z|~2dz^P=(K(7-1<{5Q>d~Z/|k⼓y*H^_wCsR&9!0vM|Eki_/-/|\F~'{?#ƾKAÌOMG\aI~/|}W-u!r5cfݠ?6zMv5 (r͵N1~~<\~ vY>3}2K.3y--`%nGgKstį6q!ÿ^ca?koxmM>u<"l1p׎0;3K/-F1{'?~9n4Uނ\t_~[[u-wM<-#~lgm#~mv54K]aŕ_wŹ-ϛqM|)~ ǒoyM=ٷgv\Vp=tɖ|2ky9S\77{ΰxAŷ%o-j6gßh| w/NwyԳMNĽޑgX?pcZ]'1>ϕn]27mb\~I(K,_r{u*= YLсx!IIO;}a7_uhpv9/m6X;p|hug؏&/=F/e8G&n}%2vd(?]#?Pז?}\pJ;3gR^r|\V9 T~K{z@&ڧ+ƔwVQ[ؿQK)}sXbPKf|ggCEwy/V5zh̻ϡ^_ 1xkhzk|<|"|@z%Q8OaJԫiWdi@9]^= rIlq~.7)O<]dW йJ&_vg+]CoFXҏ@e:OΝlyԛ.I''ƿo]=zxO^Gٺ*DYb=^:7|獐6dO7ëj/)>!%g8kl4߉Z<Ŀԓ7\Ctms?}I?\7 Gt I2(kxn^^o__E?PQ].hO)gz<]'9ZzY}z>ݯ 7~tU.K>ۦcs_oۍy7L ?{o&Waqc]I'Vocl?k=v<#3?ShOxy:f~J< /2B?vF߂^+= <,|F&nif\Z?o~-3/M0k\I~x3Avy]48_*x2n,V6磦h^ȿG ߣy w<ϼz絪8W^k7+_7{)R(;]ĿUWD[$b;7rzۈ{9 ەd;vS_/7IyEFv] yyj C+<Go.$lfvdo8)ԫu;~ v <۾m&I#L`!^W$!wT-d?,D紣yD^d_!WdW #̬7"| N-4ȏ)^d!TxYWLY}Oy\x.}8y5\OQ2iPy4=f}v~_}s)x'~Qx񿝆`~Uw~<ɞ< gq ig#sکSso7(K~$g8~Z78]p-~׮tغl(O6~gAG|{)~hbE5~xOK̓>#Wx <VIՒjx%/_wS-gȗ8,g/ݏ=V0nI-k9=.oX|/>G{*O3pOeyA_wf\/3^\GC{}z2=w&_$噔)ߧ~k0'KMq3}v7MyB.aN6~ӟW/$e~qs~ޛlUMo'G.`W:mS< ˳&$g+黽/v|"ܗwKFk|֯1GJģy}/t<1twwS5Xq'WiggM&%#N}#DvOcoo{ޫY?=3K*qt_FgVqN*/VItp{%_.6q(3HO,@ܔ_GA/OOp9/.[ys)ڗ@{ޛct̟ܔ[R* 'I60.?˞s]C&N6Qˣb( 8}M pP5E0^a\107Nxo{C9~N~Dvs_]sd;iNySۍo5qdvTk7'9o'G?k.j_^;}댯#_Wq]*I9-ʟ&bpo96hVIg{PrN>R/sNO{NI7"ŌGyr_hmě퓡</ d=@9৙a爫<~}gS\'B^0gfXSdSoC珶y$eޜ#'.}v0}/t;Ooֹ{sB=0'fR~gi#Wy Q?ɺoZ|ޗ9#F,ǃwjodmO?)ug/\c{Y{Tv{y(<8\|E|-gT|F,_W/p{g?>B7x~=Gq 2}Y^?2[F!~OTϩL< ާdH~#~xM")yꇞ@?<Ķ-ڭozྷ^Zn}.{[!琞sPpܞ ?TN|۟޾_aF_8V5Y9y^G=䌕WQ_qC\rGEL^7xAjr |<,AT7~9P\?a~?c"~9rԟ\28/|rx*ɩ蟧 |{`h{!Щ&|{ [Х9~?~mvchxF@>ۦ{,@y/@|yH~_)^Tӽt7Gg5YB𓽏 SYG13|   VT)^sNe}h؏|x'/!&џѕs {+!@vv+[oQv*hߡ~zwsvr|\{\cdſ놅wϋ\:e= 1;@ {Meߥs~ lgg嫢|5}-p:!vw#|o`z~0)lz "_N|Y  iV;*B}_gt+o^A}5T}U'{G#9}ϱB#|o ]]כ =O` Jq:B =䲢_?z*.g3=g/e|xPB33~'Z7y_>Oty30t> {F;hyELޒj~(2ync<OHg2?t6+cyy^:Nּs`x`~V\_Ru,v=ϕbkv/1>[;h|({3|G>/!$8'|rj(͹_"?>]E9ux9ȟU =Z7]|wħϑ||pe 3Mz_ʧ/_#~N_˕o!kקy"vOyQ=YD|4y/3|(=o: 7&  ;Neї 'IN_;<YS'?8o?C|"Y)b$Oo /7WH;׉:zW"_S{)vo>l'lߙu,?!yӌn?-'Orˁrnʝ,(7(w:_w*IP؞meGccEѾsBxf]mXyZQq&Oo0 v|_ҿ7EXڞA*0뿶W Ǟ j-ۑu xgIg9Nz'/0\K{?ZEկy91o?G}}oC䈹 ~ۇ=9“5MδĺAU^+_\p/;U;gZ?gWN.0 q|s.hۂrzާ qmcy/09]l-Ɂ%GOM~=rG4#~ޛQm_oI=~m#-wtR{5>H_ad7rY f5ߡ=oLu=GV^  ޾`y _>YrqfY(ӅU>OǍ}WU "U[^ =ЙC\GyYKoVQ֯F-%rcGB^E_6ߣ.y~y˜\`z+7| j?8m3;??V򿑖G1aWq߻ya%9Nw}?_tz{],N\~^AAF,|nQه2YOHG^T{C^ RrfPIK_{zE#>HWC8'? 8W|q#} 8ҳl8Яߕ+ؗ[(9̾ϺغGIzϓ޿?gQ(ymbG=:Opzo ^T }c\ų09ex^F8#XNx۸Q\vg@sgc /^ek/'I-l@z8c}TY)'?zb%xxQ7QKAɷGzdy۷hĉd_ʇ><Oos#ƭp8n3 gsO)Ponߡ_CF'~<wq~PH7cZMߑަ 8%O~o֭[׍ ߺTո|8ďt/ŎG)=^^~?xyxcrG#cQ}Ӻ}}JKn>n)?g-_#S_q_V_sj;C3ߦ5loۛo[=[ijAl{gSlRކ2< vTHu^}cor=#\3>ˍv}|QVI/gb t>p;ӏM܁*>k4è$='rd>eg #1{~o$3~uoמqU1vrէrct9x;ʥ8\xJ{6;=~1}!{F?kf_C#<a6/:n? ɑ?ί?Dfy5vyq.} 19X9_q 7Pn^c"ksOoܦ|{n*{ُ0d>?M4>Z?Q1;1q)%PB|e?rK)][Oq>(=~^?;C2N Oyv}J¼ 0OE_wg+vȒ?BΏȳ0˙k-Vq1/ˋ*?lD+lZ[r}ҽw}}x]_shݿMyze*O)yLxv6U̦YfUaOw/Z}|1%; > uD;r~W࿋wuYN=wϊeQɂ?qwqd3x?xޖ迖}!W?MѮk M)w^WM},/ޫx_o[=]ۜ~̇3~`OػⓆ臆hgCOS_'E} ړI"vsYXdqhfº>z]nsv~hF;_܈@AQn ܶ9_ q~@grXG _6Y8zjIѓ=`wʖx7s\qV,䢶>-- sO/ޗb?=Os|_]a7z!PoPswCϱuv+N-|PR4_)9Pn18|@~6&kޗf)ΏEFzwMcӴ0~,~koS-\hmwB;pM;^b8FWΛ:f ^ *EWpmϷR2j^>䊁ʍRlJE7pUϺsu?}"?eyn]|朖F]w9>ko߃3}?w+YNN1;oJv$3=Y[x?n}7ȻW o=/w|wn+ pgpgS %KKn1(pKn9|2U*R]a>jz&<f#^]i{A5'<_l|*^Ndzeȸ-Nw.Ag&?/Fx O+sH7K$j'3i2X*Ojx_{W [C\K?g/}U8tp~b^~oؾ\߁??.3ꉡǺx/k0Dڳ0Τ\s8Koc`w'}׻Ltgī~{.^rX 3}Ŭ}{H 0c?J:'+=־xE_!6GA2!nQ8SnR]ׯn9=_dyvb)]f_;_%s݇9+qd׏YvB폲G/{Qn,=i.ɿQXI>-rC?)#̰8xVSrnj/y?H_Ἧ,P>CVv~Ζ|_ iLY>s?*Ɵ"WO1yl򏇸Ǚ)N v [>cS?Џj׺~sҏq ?Y5tbߍgf~x#/L4t\ <^,{ W@g2Vĥ_ (%s?m]3?O?|F~+_kݏVqu^+~w)~.WK;=֗gi(YzV ~~/4^<߁XIi济v"q-ͽ9Ulu[iXp| \|@o??Z?aы{UW|!Ŀ`{.%[.f[rp-WM_dvƺ?־?"@ {#>zzx<=RTZ~ilܠ_ܬ(Ur5}["6Ls7W< [_{Y~&krv uq,]> 3Կ44$=(<_95EvFiI|s_O>o}WM6e:嫟ZuKg8^cwxAn>8ܮ=H7=8?aiֽV׏<_ ܧ)tQϙvWIPծ]/uuw~=STo<^,'s>gPwz/%_[v_eu\ޛAr ۈvX74ف(TFQC|@-GM|UL?<]c_Gu ﲽf'thveqqwS޹`q+{ xO<Z@>|5 dy~E|%䃓1;qR0e&&al׫͟}$s%^Y ~<7gVKx@ݻgF>jhw>ryx7!M樂?}WK{Jssv~āk 8t-Gf,Y,?37>0pn* o SP~;(ˏ`@b@ǰXx;Nǻq߅xv,FG<<|y9ij'Α8<{^1N"3'Da}X~lޏ~~ L4O# g~FDZqQ~9|5}m7ŗ 8g;mOۖw:dWqW&{3uN!|ަ۵˲YxoR_-)z-~~TȀ_=<WWJBe1,jX||[SfRU*uZV^Yo{?H~?$'mbt_% &Ryӿ?NvD/{,J==H^LJ^M^OzC==tn@-, 莭vAl8~?/<^MǷ1fߟ9ɹs7d{{{{{C( ٟ>'&ţMImڦMXY%샖(j 6%d-H c5ꮯݕEw.-Vt݉aJιN2-|>Ct3{{ωq\Y9ۓ NF;̄Z௲uK?JO39h>C+;9N9n+qUҿ b,lWz=Aj|_za9闒S7m\ǥG`H:9(ۍ$'BV)D wIUWynH>C/0IF9:9npJHOx_> }5rGEeuPYSmqM.a^I@04ي| Rnl>"99T'!TY-8V8\VGCLp[+*RsL=(t<%&'l7T%ȚG{m}smW؁}z++po]i谪Js¸jG4ɅF9?IZKz:ҝFۻOB>^1J+䡧A.,-V MlV(AA+9?h7?1 ێ%EӦPPraր[ o3S_DەA+M/\BeRAi^@^h)~I=$Z["WՔ8W0k1Neim14 :rhx(O Z@m(/FwB[N5 K$pP߲5%õzDrո|yIU[TaX0Ss Z_huQkWZ^S*pp)Z`Gwtvg؏m< ,gzhXiɸH+8n'u4Ǎ VH$<'BW +Ͼr +&A O+<%ǟsj9<(<9 g Ŀ__qiz =\ (<{ 3 c.< - PE'DE,8cOpd+Ŗ7|ӡSU[[*n! gJ>1&d_Jb:f@V7? 4V))S0#;/yy?s,XB.^p0ώ"$}OYW$3ʮ<+>!L7kH 6Qi7T^ThqڿgJ`nkőOMTQ z)؁lـL~IK023U[5gZKd4i_+:"GO_#r9Z\umؿxOAkwQN+_h$F3HB9ok/d EG$mC_"MeRNHCHbL'}UA{ۈlJW?Qwf$xI0&A NIFpM,]hz5_ faEtP(Z]~5){F\rpI.hR+ =!E W+F`= pm1&=jK]?*6*i5gmZt!_ jɈjaQ_U*W0FO bدbE[Tl4He$:דXExkDO }#Y~=(~ [?'!ϋfUq'I|qCarJZhg)!]y3l?K$/:I苜 ID])@/'2a$I-TN5<[riL/:Y$#,xG<5vhέϊVsnCh[X#R~ZO$}ے(n+9{}>"Foa*cV 0k\AR q'^Dp5#4軒}ۧ!FCTT͔)([!Ӏo?CIT^׈0*Gۄ&ӇInPrcO ēo8Sw|M"]l0ʆ6ǿȥ[C[z'm_\ɩA6q3{eD wSGahI݃\D5/Sl`gE+u}W;#˜txq){3j"c;$"h$/.?dlWpQ#DMY0XUj{},+uv+9NJ8,Dl=I(;61EȢ€3za"5R4vAn џY 魾RJrP bqLs-IVc" y9d`#3m 6~.k`|?V% Bўo'$S}a`ž(d)7g d!ӆ;c1/K&fM4_w$UߚE-g˩B]oǔ%KXLYmҤ쓤$$Aen#,#~@?~3y(i#n#[B,H/~z|_뗘[ !m!Cxb2@*U}ԓ7cF% zgi!0H0x/՚2 f4sG}|5)߼ ^|f?gS٨6?cN<̛)|JkfESEfNHNys1R9V6qq/nžZ+I#@eB{Rɜ v ϧ+-f:LP}<)@wM)MZj;+9Dx"ߺy1{Pր^7Χ&E`g E/ xR%$gGA\Q<$)IpI,$) G4@}!ڱ4omFWqS>oGC4tt*oֿI.gɷC[(tGl ݔ |b|'k6IC|B[:_sz?B ݤ/pF+kKE5~x_4mgGyٶzP'?cVi0psmL8yW5_O-Fm_Ԭ W ZjkT~:r?9l Piy=6-lp,I[X&(ḴIgyy $io`:d<)gh5aI[+ R_,#ʉ^Ƈk^/| =[q%_7GwJxM;Σ>4B}"SFY{ׄAr*{Gd#?FއԛW5dB a)HnF}3T2yA &qY?Kde JƧnIi8 7âil&6R½8PK43AYvc/uUݟHNЖW3_?YE9o&ӇE7>8#eW>+f7R|uj Ж3U'znn^H˥ǣk4ȅY3&G# ,&]9=Cڼ˽ndo Z!5Q66%HNC{l{NzVb 0}(2~~#P#͛](+Е'bSQyaMGL&_PíS :T|+]XΞIW+Ll|~?Tﭏq̧n5|@J ,>!XR^o8MpJcAT簧,ۃm_TNC DbXٰ `8 3oΎ &Ϸ ]j̫"2\R;?Ye4+f%ūje:Ws$<\=S`R8:i陸hkmZ46LBvo;"24 m=S .\ 9ُ^Bޟ"峷L@jupw!P>jj%x<ςioA׼Q/k#׸TӮD OkGZH]CTv^H; {/4|ф%_%{Ô5r2:DlS(xI8egfD֠1/QÓ#y֢dHY<\c$ހ4um]"t.ձ TTPlV׈ښd',wp" dV1o^BtGWq=7B=u4w.گv ]r~0pMG-杜f C v9{`xc>7ݪ}&K?~F7.#œVR"#ikM/N*dW[__e|'Rero[V G|ϿKm_R͢R#zp%׽uG:oj6S8 tld3o`Kfxo8f5|:=rDUql{U\pqq#O`'֕ Q`^TI* ET!b&"NPD ""'Lƅ(7w!ˆ"<8#E DLvo yl!r{ 9\_`j VlD8M`B6+ "ۑtZvt &?(mJ?5ZW WjnymZ.]W[ ɍNI;N?U&cY γc,,EpЫT'^|)gVNv_C8.5"WFɶsZJiWx@Kml[$,uErADHڋއ%r;[-Rg|7\n_ *S"Td$MrQTԑvKEVz %2 ^u'ror>i2--WOItkqqmQߎQ~W7֚t^Hqli)r/)a-|)pY\h D81j7Kޜ5e\CC~Cvp uYYk&R[BtTKn]oC&&ٕ?Dj %ho_ҒfWѥTzM rs1?hbK:_b:Ek.|x`jhR6 KaCQտAX5buyNU6Rkmz1T3xz h.绷kw~@+VF+ x6dL?jַL7H|o8TLĠb s/umӛ>2Cl:dr/U"/9DHڔ}H}҃ʟO1 ǠPU5N*L-|jҩSʍ9sƖZ'ޞyb벱YwsfDTZ,*Y\l9/k.*s󂜂bt@Z]"8y9vLܜ=Az9,f/E.f͇𬅙gdO<' GZCs!90sYjmZdI\0ߙz ]ͦ`hRqx>yn~Ϸ,^ <-9A:`r7ZFXH|AWPLIeItԯ<\w E}S_lʞlprr:Q2nK^AYw** u?aPs$VSGEs'1Eʶ;Wƒp|P$Dmӡ*wP,^muD=\m+@xj#E`$K;;8pdL 6D=A.q~!y'ul]ΌR̯pmŒ")6OH=L8_^zyM{ hUW]eYvFXYZգGHBοU h$pd'\3UQ:~&N0ݼy`Aݾܦ[Ucӂm'PsL!yyx2XdBjK޿j$'ߍ5 /`iA%<:$8CanM[LBZ?ؙ8 `rdk1i Oj SRu<7qBBOpAcBtNqR#kUJ^rpe5AZP,/SHq^^?8_G)5b[w\b4mSbj C1)ؾxI? y.kT_QLMzU NW(VUT*0I*U` \CT ]RT2B5*p XU MF7*0El*0Ut=ӌޡid畷^tvj:!w|z?˼e{z] 1aˬu)'x3#:1 C7KxBX *PjCl{0\°z'py3^}?/,OHЕx_'ZFzFi޵q<ƶv44^H LCZl(O×Ӽ8}U#A*"$7_RW1sx07bh3G@N 9b `K>J{߅xq!JVՖ e :},+nkt+\5b|RpOVqep9VT r_=M>p %5C,tDCJVdE1JF\(4X,6~' +`$w 8nj݅gUM#ϓ/< <kzS$uyq_ꩮ8k5;#iQn\4|Q7S7 vo>dތwD2g=ӼnlN4Zc| $ 7d c2#i w`$P!8TS_l`#vwBCێ.=3MLFڹiGV4$_^5JS lx#61H0՛vÔ-n㧄bNR[6)?.!SZݏl?)刐y# 6l  RvņksiZ0\SCJxlCs18C,|T~C$r%Fsc,+9:'WqFQb͏) Sx;᎖$' yf@Fonvd|3AH]'e|YF,kkg"iXW}1ga&+0}ZHᡘKH @pdczV p1)\,ߍd fjF DBF}Vpw5rZݏYܼ0;'3{CfAaF IDN,~tk߈?(_hs(0`Qں/_(M[?8q`8k+f=9 ˢ][=OהLs(MMn&GVE[i\^ea7]S1mMn8&w4bDMĬW45y{M#ߠ-ݸtiK7 ښfפxCbƋP:1!Br`aq?Xܦ'aD< PzBzqx8,ùp7sT._"̝kVƍyAPެrN\o~7Ac5H ۠XO_,*%E, PIw$Ag"|E(wqlBu&ellj|C;i(舃02'IÒ9d@F㙶CbߓUb*q5۔0|= +d2b1 cz3?_mZ&pc˼/c[>W/YɇNNN?KYPClCwTx h7w#ڕN/4T=DV7㮟.!'$TtU9`u?*U~=UU#"^}^g8? *IxfB 0aTz!q. ̰Tm }5jNMu"i`\ktS2~A{޼"7zD痐R6{cX szm9Ϳk~(lJՎՎKU wuEo.qlؼa'DԍrQ%I #BϼĹqF^CÆᰂ.Oeq9۫Fv,tY`o\p 0k%$) ͧT gڀzE= s<$-x+=Iѣy8nvhw~KQt˙e;Q:+;7s*P\ƶs08!LFHd).)؆a1ι)m%M#䓊ަOY"|[iYf-xgaaE)Pc5T-@SXa$ӵRT΍N7&MJ}O?XezQl*6t\z/T}p|\׬4bOa`*flC)b"(-0`v>є/ &E&m_ԧa 3 [q2]'$R2PH\qMhJVSKTMȼ+Huy !,}{=/qI vQb%eE> )$\kzLjod$u^$y0=F%}OL"0&kHn~pجJV)͢Xn"VֹnUDЕ#"+s;Ѕ+5Xpqbz2F&#^rotOE5Z TLrn {i8⭝Ni>| ;TE!Voҍ G|H,kbãUêM6 YEwhe^4a/SȍB}}| JPMy؂rSq Q\|%'mǩhgaa E#xs40Hy[Vg?;~8wmꇷ$j7+7X\HێF TA ɺp!s3}/ZSm1`ŷ8[Id b7)x3XXt̛" '|9U,DH%H# {̯Ɓdߠ7ēq%>,^ )k0I&|u>^/?1baFƳXuW8oUZh,*^'38g;qIѸ~Q|pHt?Asl#Z6rm_x^E} 륀-a_rM6wG rPRZ_=EOmi}TAlvNyTv`4܎߇Nȃy}p%ɂṭdJǯ]gfoGGmeDwψNd3x:B)Rfuej2 ̾ bXdL*~±4.#2_Y`nƃoR~fK-@y$65%/CHiQYE-(IٶSwF?)A0{. {w9\?Йv?(^:ęw?^+ΣT1Yb j*9f6@ [0+a ?f+ͶCIJ=R,-ߴޔ:nU^.GjXgk?/ (13?jھxآNj"甇eu s;w0Ŗo@rݖ{[}Qmve&}e.kRi31{r+ KA8=a 0운Fbx[f$vәIFŏ#϶NU../lϮJ/[`g4u;%W5QTnQqdyYǍ;oVNL_,q?迍$Roo!%NtQ̩8.q&< Ds"uN|f 8JtogfEg: q6`[mji)iHyFOL$qb1?_.sfewF 1UI+Z?kCq}Tiku2Lv#%O}VH4"SqQں-mmc"Gq9[ '# }eu! _CS|mhI:  $}>Mȉ)IxOڎE9PF$-k;'M| @o1HmXI[L<1H\B'Stẙ hn \lSGJ4Vyif1ANsMƣ{@te6{tzh5k8|8j6'5g &Ӊbة9 ~- ,(Ow( آ>gx9{(HxvVG"Oqxx$ :`NWhql"eUڂ=?Pi{ɺ};\dF=']ՉW9AU26)%JLZ1|mB/wtR헦GJVXr66}ߎ) -h5Q1'݋X BՊN<( S! D[3EѬ"P61eaM[?\"{cV=;\?'Q 50ڄ㥽hFf]*lI*8~y"jmDfkJ]Ƙxԡ/Qg g҈D,1[-إ,r*\vYeceOeˎ\6lRο/F:߇7eDS܁AE>ߛi%'p@߃,L1nd]諡gBEi+!^RӃ5 F/4D6YTh^! tG:QwpFzpY}GAQ(Z>+MF-ӵxM_]s3`xBbacUT­DX"S:TL1ܽ{c1`'Z!S8%@x,zQG*3c@x&~5a^BHIF}pa\0aÀevnBhy 7meodL^*1x"mu|4y I߆?xp(@'FO1z1ij-LJM$c}"\RdW%"Nb#x+% ytu. QLދfjJG{Gq0GdQXw S,bb( !N_'g妣řc=,•Ev^9̱C1EK/IdSf^Z> Y,V83rrc81Ge+"0C!%Ő"h`\`sjʩ,p$RqsSd^ ؎9wZO~eʯ,v71/KC9\?!rAkTՃͻ ?O dD#rTFJeDnJ[ь>Z?!ko!!vhtܺ:/"Cbq}4H׍H2y(?d/(O|F+秺1u MTi#"73nPi9;d6uJ5tT5+/v D ?O8;% ɔ)oφL̅sym_ƶIќ\^ +jPYw׽焉޽kkeqq߮4`/saTzfm= Sڬ$y*.!dѨ_8a> t 6w1Нb wl_ņ< 9Hz]!\m\H݆]_0Iw9bK8+q1}m D]^߷dcڂ&K/p.*?rP@r~9POV˙I3zdG;ahE eޕb9Xe(:Oj?44Q~lR64^)[Uh5rmotf[1ߥ` [-9ʅ kwFN"R΢6ʗ 钆?TNg>bt.AOJ Ԋ'|vB9#a^&h;Z*Q5=[.P=σc' 3 w|ֵ`+E >5c#6KJoKnל_|0`-Qi9NZbx*; /heiMhz9^uV Ѕ0j B[{$V>iZ n)RN7[fͅS>_̼'k]]v@p[1< ??{?a̘bԷ{dnqܣX!'Ğ{r"bO>yu;F*DQ7$3WL6s3WSd*32sf2q*3p*̳gF3<{&γxJF/dHBcht+ C SZSТ!zqO([m'ȕ'zw=H6cHe !4)y''|dmV<gd@)mlފ 0L9`h]\{j"qeuuYβfYpsv>x-1e6禣.ا]gudW뱶}; ?u83\e:82F8[#t?9|3ɽeN}Wާ`TR1JK9*V;cDW~9OF2*o BCZ1IQ6%1&x<` 4zQTm$//h:vrw@" '# I˳6ێ#[&QJ8HۨlP oO" R z eTQM MܺΙ$ˋI+(Z"ߜfy~WܾgB \'w#w3# 7 랗7V7%:X 9ljgmͶ̛/ll[2r* a=Jdޓ=/~CK+Ųoƽbp0Q^\N&Я_y{ؕrc:rK/oC=Ș 30\GٚA M[t1n;=;}h&`l@78'#ݹK~8"}i_F<@:MSKŸz^L|KD< cEl &]"yׁjG w̦M9v@֫EН=ٖfmaV D)h!7)R & $õH5 91-`EI>.hvz2b׬%5eљ#Gf4Ƅqs3Ldq8ڕĖ(':o0~T_C[ͨ|ڳCm6$gGguY/Xc5o ŁP $Ld'6]f(gβvB@F?,0iOP2#8C[>v|mo \ct@5 jDZ 9J!ަ`u֜+Ng!G0^ɳ 6|ʼn[a[m\#V{({^ZYP]t u>|D:,dΆ#9ԙS~7+G5M!0JyW~^cH0 q'QpZ[ɍ/{TU9VVˌkQGBm(w[K#X4ӌm`>d_kG>|'4dԠѡ(DlS0b*o17w%$ysT۬Ekbzf`jEiAt+ǃEbd=MFBvf4M* 0 0|;O./R!V7b ްSҡm<%pl /v8-REFCdJ8>44Ȯ Owwkp  Nnįs&x 5^n d?n0xZ}w ~- LP2 OU|yӟ ڎ[F`@Hx8%ZUS3%7tApG6PpW y#/aEL^ݡl[2' ۏ )=AD9Ȟ 1B2(hؗ i-`[G}!1@Y]Rsn8DܪkWW5S1\T- _yS +9iyAy7=ə0XJz' 饽EBc!ኖdfL%LbFX;d]xs<\lxZJM}jɼk^/:r6j,4hUz $1W-5-q] Ԕ?gA:q2-s󥴎Gy-YA1@d+4HT%9{gHUqP ^Bh{HuڽQ/AXH{F)x77}dxw#!Jr&HƇ8"Y<~;-~s63=gm('z_g4IS 3l`Ċo >3iЀ-lEhy9N޾ʕ*KKKm|Opɥa(i'bZ饃ba[K1䘰wWyd?P{N}(^&'J=9'rNlgmnOަ#@6A51R7~ :Ŋ{ RN[݅+74" }zBfp?o>ymɧ=^qk-QqoH?on>ǽ}4XJ#Y0ACUžv=^EczT1i~h顦ocud7/6 XZxt2}U!ݪB5)A-RzԅJ )󌤅ބ˰]H4 9êCQ)L SKRc bRGd'@x-#{?CZħ^F2zЍOM65>y!w=9OVxZW!87"^CVq,ߚ u[c0RS BT!XNI'+nj $>cvH0v(t @\r5i|y2`#U3ڇkez6U9E/ǼKo޵(4 kW.ͭ-ͭB\V&@:l77U:C>#{K$,)(RFrAZX<ၬɅhw($³AO65:ݯfW`ri>^)]_(HGNE5iU845Vihc'6D6~}zTۆ1G:əѮMt0{Zv`$& 4l?94u8hT$ H:Jt@Ҷ0}YIyh4+GSBl/,%BT42oN S"^ GF(#]4{"]*dx6ˁKwU$5mY,ܖr0R֣Tv*!Ðn8=U,jp~P ̩ވտ|]Y5 ljmNd5 }U!:J©O= <'D{Y/<^4z@} >ąx9b!.'^- }bRݠ ߾柟)(gã{.aׅ[HDO]1?ѽ`'%tK>3h*]+gҵ )=Վ<66nn]o'@LyENHx78VQFq|fV\VOБoUȢB^`)G^`7UXښG ~\ h-_Qcj$i-Cj%7Szp٢"M-WF߇8 1q"/(>50 ӿ73IHɌ懾4:LA&τU% A~)kREJvC}Dܺ3MץW4g_kP##oA5/T7O Kpk^pK˓Đ;GO4{n+ii:qx!0fT1. 4aJclGs9$KxP)]~2mMBTmr0 f%AEy-$E 5t][y; { C1\a )HMp{z@i6DD*!#X<3ˎQ EqxГ$"Hny)T}7Y Ue;pk56UPS[!|kS/%#HF_ :7HCVm<0Ϣ //|}n]|DBqըCl{|=x\quitR~ ͟n}` QGv`7L"%L"Q+xo`ÊEdC &̶D>Vs m%r[t" ȼ .2GH '`r⥱ ,ڌ0H5=`Li\PtO⍬u4^ i嘠c2_9WQ6Ri믹pO44>:0uSKBu|2խ9ekW'I&^-_CA:O:O}es}w_QGtyW3?]٩7\vfekNl;z%ZgK9ϑz;r>Gb4X-$~(*V8mќ@G;#DFǓ_m4dG{|>NQЏOH,:;RIG}!S$鼷rN9w`}/Mwĩ5)~ >rX{Opl[qZ]VÖ\#{ڣ'6Ę9I`qwn P=vUj˼LĈTѹ AB B#x,ג h]gNr8Qqsq5B~M<b @VfbEarഛ,rđB@t"Ѹyrv)ǕJ9$S`8 z8InZqN\*Zأԟ&ߨ‚qC#ON\hrNgO眐JqM4͜ |4s[m((RhFEhk< aq"ec(#4.w¦ ){ϗeY2"|Y`>OMM/4O9"FYap_ ѹl3:ǪiE3dOIrqTUhJ?NxDS9hX{tz(ƿ+۾nzDc'ruަiP>hn /9V\Oq Z4a WpRDdtI 9F ѹ]oN#:+)_Z  tgv% Pn/;%1;w' ҀZծnAnNu:fsGlGg {O c2j ݆ۧks#|yӛ:f~SǭI?BC~=gG7N+I7 HY\M){D . !&i3o&^_Nu|c(L޼qCtY[mJ3`[KP=Glc;l|'G΄DBaԗ&e/%wE{eB'+ l;R%FR~(ϪBt/1`X+?CGd /t(V[ 1%!Ʀ%oy¤gIp< wg{'-ڕA])Qwrw46& 4]Mx;Cxz~ -4DF Z"Tv MGxl.N?/m{i H| n\?Bu5G mB@eʀK@u@D0@V{% ﻦjvލx5O?}MF}m xŠߏCs8Ml wSӴbaւsS]oޕ}%Oge5NoyL0/u3Iu Y3W GnQڶ|:=4nWW';Һƅxϵn,[h8}w3?`W _4}leƆ/qb:C?aӷ!,0ia')TѢA6"Ę-gtv_DžeLwkp:*E :%ho2T3)bTKV5G&2OA`@?F-y b4HczGw>S+Zc5,/eI I2l{#EαIKnnj-RC2ii34E~Sr}͟?~OpxZ¢"ǽqqӏ ޵`UmLJ1D&?E/C7?yyh8p& A2(| cdwm>/ٲF.o?~<{0Oajfpc44 'D qz='0޿pP=rS:lEcp>z_\WD##;5x?axEGX1ŋ~QzG3wpn&&r\AxOe`0` d K3xp>7|3AxO˅r8o"mj FO^nb]- /|ՇZ5e#<¯1Yo2EG4xYb6[[5xS^GvF_4x'1| NB.3G *8݇#{ *W3xk< .XbpyQTw,1x |V*B=4jgq:zW塇OBUp |xw֤8[8Oc4xg1#Ih ^ pq41 `<ș}Foa0M_ftm3<..e0dq6Px'894 ~"%'` dȊVi+9N฻yZq0'1x-0x@wc ^qGXRO/|!w ¯A'<5f!0 Gd3|;x%34Lmb&b@Od^g@ռ~eg3_3{XϑE*g_]`0} ]> cv0?;7rcG8bp<'7?x@ > ~&?dp{ lง/@n 0 8/n1 ^Pin/ig^A>~{7 c6v|ߏ(lE'cw4h0}3qnW)l&} 5 N}171|[賕3"qQ z`~;~һ7r\|`T>+9m T3 z㸣x?t8`H0 cA 1e Dhqrql`!0}"?9\ ؜Z/9 ر^=@_`|'YqO@}0vhw 2ieˁE*}KG2]?1Q^`p;3ڗ3,ĹU<3x o`0!Lg0-d18d`(b6pC vO(JGS"U@0q_"x=Joy<8`Vm8?|O3<ߣk63`,^?q<8`g2}y _q8vv1 c<oc'x cgU1qg.?] 1qF/Le~q:qܪPq 6`+ xoxk`a/fp+1 >p5q|qqLQ8 qVBs080zN`r(23g2A㸥 1 \3 j ãli08k@ˎ/0nl+jkWU._& BIjQeeKԯAJJJVTaDI!VQQB?^*du*Dv ՂURWIU%iaVq%%# (-qV8 P\I*w{=W⪩JKWs5j%T9P)-ǠA^U⮯ʜ쥬藉.WQR7[^ZNYdyuE.Hyѯ[e%ŔT,be!/5(RЭ.]호\@.+TY1*2GU{#ex/bݘEUeVa̵QY 8 8GNJȷYK.ʝ+w,Wz5(a2 @7WZVE,uRP CpZpq Uc-]˭YcMcqԁx8D̑Ҥ$AMAKJ*PYaڵk(*Vn|0d ̟SpsI fk^Kʠ Y^, kj55- ,aTheU"ԱUntPQ J ñ D7! 訮@M-ڪ2Ǹh@q V1«A85jKW8krlt XBXuVV194rh{k8{ rVc4puhPpW.rB`eP4ahPb0zd`8':/Yq9@H@%\ekP"TRP$`k܂mP(Xb5XJJ#Րu0MYU`\$nu):-X]DjAԠ5(6Py3,V2W_`%44Y@Qvlm I b. rA# PI#\-+LSl@X^hVO}qҒ6xH{(OQRV΀Ub%~)UufMe sCCV n=`%Gm^)󝖯GZFDՉuF\UpMu/Y*bW@gVTWZuhרH8w':Kд4Y@F*ʌE1˱=9Jv 0 a7{%AksWY%ZӁG,D8rU*?ĊڒXM| x5&J[!5'1Ir Q5@'iȅ |3Qcqt%辫!X*Gm(蠳?]:zj vy-5B 5eJN&'8MX3%eWqTUYNUBG-d4Eh.5"̰»Ցm5X+H!zہH -) V+HO>dEUrsʪ"Q9WU,MI:ɩIFD 2痤JQE郦n:iK*s:.yɺ;aUX ZROz! bn=B%kB 8wZV#BfJ*KVv7L'٢k Ւ *y%SN'TYf毒 $3er_Ⱥ:K({{^%֓ػ"஥-BA4 M&԰0ե$!G>4t|Q8eN">3Z5`P+!*jNOB`€XIrU^nE9vPlDL\ZdGY%5x]u.wL~? Y,̟ (2oG96/wKMzhPK7}I@PC/GO32BP/BP.BATm̱ 0ཐw_S&K6AD_  JbG8fwrU=h9$|ͅ4A֜{aq^#.hVEtEuC+ PK4}I3s筘{ PC/GO32BP/GO32.EXE{xE0\3sLj"@ ` *#A "`2ȤC.!誠.م@0#\\TMI a;zf2y?=NթSUNtuޜpxGcلDȜɄ|7%%xO= +0 ϩB >Kzx,g|B=LX7eS}1Ԧkj~f}筴q{TDzⵖulj4ڸGϺUlFՊB7ӻUa9*${F@v*č _BC5J| 2m mw?zR`3 NBBM;$t Ŏ7*6(bޓto~nH?Y>|VHF [xs0c|1X'f:b,R1~J0*8Xn]}7\hNݩǴ:&tT1V M*)m Sy)P7|?e  @eр'ЈOBmJmjb33١qLY=a)mj4NE[" AP~*5qh ?2ņ6b3 ` Ll:1nJ;eu:zY&@Ȅy I$)hX6WX^`U5Oނ7"h:9~hanjױNqAו99H_O]+e+wصԴ[:jԓ|3oaUgK% s7sb#sBQϗz[c`'d¡R8T68E8ȓ%610-8vG$* .I3vGoki*h0tJ`Y 4fY&nY@c*bFwS ۦy &zVPK6[Eˮp% {[3=E3QJsmٖjSi}݊lZwt0Æ1r'ŀLg:${l"ESԅ7kȈ?,?N.:;a'oGϫ~+xRy |X;f}Jհ>óbDt1ӯ B8@.rZ)Yo~Z) bem bUmc=kVq'GYyOSꩆ<6j^o/R%Q׺X ɭHtơPzT-ez Vh+k=!qiCA0͒*VY#<ِ*ƲUUe=v'_sa`1W2 R &OA}Ythfѕ7/b!AWۨ?!Tk#Wjjcãokv,hP};+PlNvxHI^}}]3t%).P]{c$(IkNؗ;A嗀]i)q1]z ;|qjhyTű̮采<莛epM3r wb L/R@yTE Yl̖&(%g Wr][4H* txE\"E"`L<+.VN[4nܺf=Xd(] WJBϭ3quq]ntGv窋 }P> =|Z{?%xt)D=j=6Q繇!72p:?c@DZ~FѨ/qח~)r21'֪ţtI9wn˩zjȲ?Ԃ@#C_! ! !0  0 E`v ^E! R؈ JG- %Ao8["C G_a B&An #, & u-A0ÅSF$ D0R(ad}o C؊ ETEcu HV!HV"'<.xQ\&\l]& )& IC"*"`(4AnppEӅo  #O8"Dp a7.< * A l96A\` ACl 3<"܋Q!aB"a4E0! <&#X*h<.4  Og_ (>E`#pʄ;DЈw*#xZCP)EJp"p O"J<#<%,@0j`p4$na<!'DP+$ X'!"X/D#<'J"aG&d 8.E0 D |.CpBApR0"8%h|!t_ ?!Ji;_ mڄ!8#BpV8 !8/w0 QEpQX?zߋ+ >XGQŹ *#IE.f#B) YLB%EpMA'HBME3<+:wjs.]|n "7n00`h ϰQ(.-⦆s#f}ܹТEީCYTקh^!H tx9;ǽh\ih*Rûۃ68]퉺B+Q~Ã$֤~0OH(=˱ƚ6hv7AE"nhv?<9nfh\EKCU'ygp=\J|25e3tX 3-/0 ϱ=8Y|3Cɒx1Y|9>YJCB[_N6){h(!thOTh]XʌIiY0w*@TisqO6w]PC;v|i<',#_qr K\nxFk+3ZW'h `:V,<)-;l$3!3IlL$?ĈDʜD^dNz dNAN:XOV#A{`5 %]\pSs5K:37W33LJ/Jj7R.22 C5QGVUꪧkXCT>S螪O>~GYvD[ax!`*ñ9pU^djAjk=$pl-%W^zArT c}]+C'ݳ𠄼* Ğ|8 0I-W-IiNrWd?>V5?$Ӛ=}H$Ok: :?a5ViP Gd@FHY@&, 9KP,|JqS<[<- {YQ*mub&ſgswي͞ K/AYMPQZ=[)hoٲ:*©V nG/:>Y9fsewH@MO!*$(E0%8zUeMO$;X]֮!hDжގ µ6Ez~ʔ3$YZ4@O $Dҋ!Xҗ CH*6fG[{^/_U-YεlvȢ{[Bg;ľ߉؋EE #1vLkʝVJ.Q:RJбgv=ǹl1x2m#/Βhc;B/! /xFl-t.wX& ć?=\L|Y_g*NUd dchѼXxan:7+E>_, YL` ${r%"B`:bgΫH$0!jbF"#\A";4BE>&]D!]ϵu=Lc4>"B9Ëᑔ)b:R3 y)DX.7GH130vmn>+E p;%J> |AL iiJD]< mq'xIǧ_Ϻ5{go\؉?Ǥr. `%ZHO1CFñ% k[G@ä +&EyOU#/B^F&97TJ%_*%3uUUJ_KHG1P@iVH+|A2XtQche(ckqۯYm0+^*[z4(RܯOdNk& nc0EpN(\P(`<@|Qf͠Qa61Dǝ%t=ΉvD%(Fu`a\.9ٝ儣ur9(NA/5_VSVgNjr{CMpf С닸#aEOÊ ! 9}EVObz0/CA_2Uw&Le>R7%4k)j4liseէi[_rn_=>;!&D'O+d9rTE * 򩾁OHJw"0[jڶ|dQMgKd0b&&Mߗ_(8ZpXvױM)RLV{:?ɴ5^ i׆G0?'ʺ =ҫa?V٭,(jkG el/]2c.iH% 4~DHeKR0+Tn+5VzʲL)~@Xx.qzw)σmedn 4Y_}0`\չS~+qG8\f]yTvUw)LʺH/#ȍv[鸺`=aP`F-g${_sL@1Q1W9 /q9ո8bf7KOfe.v[/ /u^raBƺe諉wsl{#t]tc;]P^b~0ά\xg/mY75#{u_{ץ#5əZXpݟP@b4 {^(WW&m;}tR+#' eG{C*pp{O+Ǻnkt`}|qv KҧXЃ ZZ^)j4JO&p EC)WɔGLL ti iv0\g s-$Xqz'wn?w*`!}5.oF׹ %au5bLxjC-#듷&Dxza˘;RRޙ>ILeHDp !oTqWx\sP3bgxs.T7sχ1 y$_ 1faUV4zM4&>n c d b0?K#m'DȹۺzUg|yv4\V_JJM}=dQ!g弹WR.nWHqr|Ϧ< 2_Nw{s?G0Ul{ J߈-WIy#wK|!ZOK k0QZE 9T*ycSkuOO^~H_RZn|Yr{ڭ,u}HQ:Fk5~xrzm6wCt:_ :ϕhAiw"_ߣeR +kΰݾnX> };(O_G~olm?wj|G\]r+tb+O9%B,?|׆<' R>v[(5>7ZE_CߢyqEX׸4ϫ[w6Y( sزF;G< w6&o0 (?˞',-y =.K$G|fY&}?@!m<um:A'osq7bkIԂaۏ`_ Nz#ϡًB2ۏ5dvf6u7L|n+UWbN=A=ϓ(/[QǵM=)z.^F@avFPTo4i64.Sidg qb`sV{d)oG.NC&!~!i85d}Ax FyOw9<B.A-NPȱx ȞqRu@n*e$pizkTo\3%ݘTUy7Db:M}6ޑCdg=ϱ 7}`+Axк5)m(5s%Z+׭YJ& U }ΦR0']ZMKR8r @ݱ]; >7&V5<B:kXX*əT+I4HŕNJnqƤSs:vA(T ~%a`!{$|uLeGCV{:[U?< G[).:o hjզΣvF/ApP-I`i֓bLR!Xd l+8 Fx;BS3]V~sw?$n8D d;˥ez[u7(]NLpeC Ӧ $L_tA8թ8 pѧRG.D4!k#pq{$ZL͞^4[\bm`:v?gJ#?m%=aΔju5@vkh^vjw\@Ja(P kض33,7yP~Жqr&DYIl@tCzZXKsL“,٣j I ˔U^(sLOQUӀ5`J\a&}@?k~SkJ(qA_<t1_Ɛ:~#F}]{yK`h#UV#GyZ sLKe1ƃ6͉/ fALwLJzW ; #HHD#\d͋&E.d7ΓJ7MuZ0ZNmwNsvwA*㥲OKrC}.9zPpER]L@l|UpI*lֿovzg6;=bT9(okߔ)D{{Qͱ_4Ťe쥆jԢH#+|NB'ā-ǀnbouUu193f h83д$}^{zuZT7CD0;q36KB Bk5ko~N*W*VAVzS~ބ.zfltՃ6 .wa+Y#q<ZǢy_<9p'l،}F T|㹇j ʔmDB#8жoSw\E㽷md_K4T644~blh=9 bWWm4;1BK nW|P`_*yJU^ݳF04|BDv&HrjYO$N[sS7 M¾`宧Je~ dhv{f7^l*YZ)ϔ-7()N 1◥f7vp A-5I_Ha* F $}{<ٺw/4Җm ?Жo,1qAQJ[GStAnv?3v$,U"Hg_-_Ǣ]r+K\A:y:8F/N-lHM^$Imv4ÂƏ _51DY,;3ث,p.ĶLp-+ }pMq"_OBt5N xJR1/yxi6[U"mL挐w/S[/Wa Bma/~5%Yb 3<rk}{K:wEW>n%3|P}=޷G!/Z;\L1e,tY"w8<ץ"GQΨXO `VLWT& %dW^fC}7ՕJ]nuN`83h]%an= X从cW@*Ob2 FJʘM+co|{x3Kqbp1ȿV^į_f$S ZY \ V˿4yC w>y]b{A[GC?e7r :-_#v}]Y/U/'6 d%.q Wl/@mhXi$FPWok?lZ&T+>JAG UM^!2?:~$<Tc/ZowዋxV"@KoY@C?=/i{aяe]*.[(}Mn2NĚQ#y&ʸ߈+EeS MQc=H}/xC&J% ژFÌYM&M!7,ؗEd&'o=MIMx?=}D?/S45LYAsn gmLo@c55Mh=_ob-iܐX0@e[p9>  fG02t4t%M+nZqό+ؗtMKs]>^>Bo;Düǵ|FSu 9QcX; qEXT>,X"ZMR6fTP C~G~]"clt+ƥc1dL<J•Ʉ:rACj}"p>(QoGV/ _g}Xco)o jMF~b6~n ?H_GFvsDiPՐI%}}Dkl.ކ~J \ r' %Y>ΣIJ+ٙcËa5Yv1?㔣n5Eb;9+kE4\T \hѾ ~p3~]W_|B޷2E΄{Z * SZ.7b-!}uMCK]ҼmS'( \R b>Txul9DTt 8t㙄(X3F]3Qi hP4Ky xqU;$^w ^2^h8ux&I+eaN欻q.%*lmK 8=e:o٥Q*QPWXH^ "SF[l2DT]]]xJ"R*V$հ[nm|ZG^bF7nD%N_v>,ϮpTM\Knq$9!޲syϥq巨.9k= kY"9+>.2͞NQ쀈MĈ.m~ĵ6ۯ'E#Wq2BND)!Ŗ2 6C$ySɵqՓ=Nٵ.ZM*>O4%1uZ0Y|eW.4-} >N,yD푺ᄇ-ͺ^^{kLr}I6ߋi2#LfOiᛱ46;TSִ4|wG1szgfCnS{֦88v=KhrĒܷ5l>T06u/ %Rbߧr?5ۇjIj{mNVG*5wBXMZDWnXeY7_ ^[ #UeH% |w4ex`/hظMr~st=ߵOrwj:pvf71Νfh|Jۡ!" R6Ͱ?<R_gf0AHp|;&$G0lZt p^ j{o7YMrc]e/ + QC9&[iI9."9>)o%źQe/7B SN rOWpIjQtagn-2v?a>6CM+q}\uv`H l2KƽAF;+rG^&𜏞a!fa5yBx=ƙHݮGۡ$7[`׉Iۭ!HU}BngU~w64J ͦNqڵ׫+ؼ).)g\ʅ~e@'̺-8%H gCM>^4-tDk#uhܚ-.hCԖVۃg ࿕/кP[8 [S @d{"+\5z)c:jȩLHH1_z"H|ˉhFToT|A*ު0!q[y>] v`xE!t0X^COf4;a`xu:p jkXNMP g'Wm8` S|>cX ΟϠŬ%KHG-%4x#WSa/j my01d ;} 0 rn5 'vʋ>:\ >~[TConN~}*lk*v ا&Nu>8; \B/0 ΐTu2+B\+.2lBgׅ:9|k>P@ k{HEtWQveJKVCC>\,r V u[$Q%*#gs+$!ŝrCw?YKf@+ 6s'gIjxTr'xoݬ7N DZ٠q ~L#Id-rޏaKaZi~-ϷG$&B8CtO\r-Y7"R1rs5."|J$BD@BLI\:bm*!ly^kq<}qr C-+]5-~ Al $R;Q/10zLj E59`1a7V2C&C-V|<[~(?" @F`801rk)f7i2sg(,=[(0P^1(r2^Шe1LѪCJi0]uD+H'(+LKlcτKŸR01ECh E%_m"lN:#fLM2G?:%EKLlx_eC9# ;hJ':Q`)\v G;ka%Mqx)P oiL #-%6BL 2{U][X.OQXLvtDJ\#o41QkZY!Nz.nze7C&@GŎw?RoLχcw$u "YhcdU*wWZtr)8|t;2rb~wJqW&퀀8.Kuw2z U;RqGNpin͟Gs-Co[_[_QhgG3'*D6p@FUgt':'rN:Zɸ7إhNn}z.\MKC@,zFel^*RU낥Ch4Nuͧ_NZ? 4A Q`.|Kalk&W!Сޱ:Iطvݞ9Ϟ9>_99c~#G>t}Noe+,Vܷ; |:m^ B FQFxSܧ6rrO7 =!9Ux95$Vw6>&M:h3aqwgLucI_bJ?Xp8?4=#S[|/3c؄$ybtcJns^ +6\WoG'K <meɻt[!=Jh -N]rAx03ɮWA||CG;VX9ڱS{3Wgdζzz3؝Լ‹$s56L㇞4@ !&sc eB/lDㆎ"R.H9'&BW l\qMG}{}昆h_B>଼NǩS Ur8ߪc=*5{)nCD<8zIϝ[`I ?(Ye󲅟spAVE̞Pk`g`6ںf-Bג:Qf*:U5MK؋hXSG;<O9 AƔ~Wyృ]e@]I9 ADK;O`uNWT5:?7tbG1D܄G}άf0AêeߓDƾxPiuqWTR&<[̯?bPO"=W,I 60C2˝fYdx+:tі^|})SQJ۴AB_64$peЕX_ Q2ˊUom[*߬ECR:E"SI^~vn;:3n䨰p>L5YO1S BܾQ^s : Og=;eщ.Bz1)~N̎oloFg5ޱW֌b ?u%uS%=ё9ZwJRڏ䋲׽?ãwuӃT?+^ONtǪI;r$IVCB/<采\pk\C&PUÄɵ:wCbHft;L=XѤ+LmO|˫ܾ+kNd`ilWp#eL~]װvA7r9ik˄GQzˮ,8Ozfv傽zG ,W&5Z?m;k \{q2W>RBtzQS O{`?s{y]ewK^2z0k %f&oe;Ҽlz;u0M@ j0uq0pc +xe⇕=OccS{jX?5|HGoJL=(F4pICڼ̱FFrѦ} B܌u 2{7]v I`8L RvTG?;yS9qDte3=тVbG 3@:tx@W!v(2džG(IS_qޟgACB5T8'Y8z-Z;EF Ӆ5;S9x+ڬ|/ֳhgO:EM9hACr rYS bGgy5 ʫ3:4eW]]cO1樓l$"DB*GeVvUh`j HJ ]d>@+90MSY x+."XjTQs*?瀞Sv*;T,94³R" ]*uO)2C KZsM{j}u(q7H2n8ܤjjQgՑL47F֑jlU1kHc$[uCKtOG*t̙t8ΕE a#3Z+j _h8>!\Zݤm,. ջjH%? sFmga㥞.IFo: x$ހgwt*%ޢ`}*b|@@!P{Z _Ѕ_v`4eAG?e*"b(F7$K}R]E2q|O zZ<;0e޵ 'ZT{{4e8L4@aFOh8̂0Uwin&"! ^&5P&W/l:$pn(9F]>ahpL~ZXf{/^vUCssskOlۯ\[oY?|AS[> 9IЬ}e\{;UC>rycq4s^0S'@ƽ. D.LЪ2s$0{IK;q^Vs]-lɺcZgܕݵ,:T'iZEw<ی&;\q /ՓCMҒ yQl߿$o Lx́;mn d2x^)X*W̮C({@qO{*MCu0+?g|[H7揝pU:7]3v.Ӂcn FquOw k<%\cg;Tq|v UhiH_4a_sbf"kO7h#r\N$!KEN<4)bi#Fϻj=?(Rj[=ގ)/[8thP~'Ow*}5$6 hZ{С;@י[$O=4B덧5=5Gͭ0 z>}8ԌD?d)Ƿؿ =fG#&FN_eWH;a`+xuʝCerj NzU8c-?*zh4eOmBAx8K#@*Q9(hZVw\_|&`76#Oo34OkkUR՚ɵ<ڹi~sp$?*+Z5AC67}LeV!\&Rhȯyvh&M}U4MӉSUu%kCs3k Tԥ>yΌ~]RM͇ R> 㑑OBLsC ײYmRU-OGi]>Y,ߪk3x0ZR=Us_,t1W7x~MiwrG슬UJ_vg2B0¸^Vz ZÙ/˖|_FYZv|CeՑ(/WOUwG 7Aڝ:+KQCN`Ӛg0UFC BZdh%uc.-E-GLU용 |Z3~5S55LJzGfT&f"W$?z L'<"2=&x.8z<.R@7T.\ n2@?[c} 1?3$d4tMOI༚V ?Tϝ| 6#{ PI7E'?/K4]{Kda\Ui( OD *pkdxˮ]>M)HWP)Yi׻|'Z<2 e'ǸEm=~L w-n@v$Q1-`t\I ;"3⢗Q][ WbpS,6>DOX6קl,"Sa%ޙk+1K{TDJTD%U:%W%DJԤDÕhTQJ4Z(^JDoQJD+JtDoUqJt5+!J4^ަD*%DoWÔp%:B&)ёJtMV%zMQJtS)t%:NޥD+ %D'(,%:Qf+IJtDsT%*\%:MޭDQ*J4O+EޯDg(љJt}@ZhDmJt}PUh}H>D+GJt]D"%X.QJ1%T>D)Jt}B(R%jW%ZD˕J%}JNV(ѧh]DJJ>D]JY%ZQkhu+%)Z%N)J^>DW/(%QnRKJJe%G%ݢDV%ڨD)WkJJu%}SnW;[Jm%%SDUUߔ{J}%QMJ%[]CQ{hݧD+%z@~D[W~D*я!%O%zXK~D(ѣJ=D?UV)ϕ %zRR_(/WJZ)o%zVS*J;%+QA^PDDW?(KJG%zY^QWOJ]v(N%RהhD}JT,G#GM12OYɒ%nq̓,le$߱ty% KKK,ZecΒ% ,/0NzdiE%7Kͷ/Y,?=Bg??U3.!$$0)$Af1ST3/33 ×ꇙ--RG4YX,|ıL.Y81}e K./';-(5OY/]|ߊG/XH@e,taivKdBw,+ȖC%ef͜If.\ĜIXJ̴1܅B,/|?2Bs/򘊊<ԱbfK>XXj'BR j97H_Q[@&!a$a%byn~dy9u\پ 2/) hdn2󌩓3B<Ć,|}rPM I ry~BtɲESf>X:߾d-4:x.)]vݼ`I)6˂F{_j I(MXF/+]B_l9I)QqEK?B-`Ah2b/'dQ9Y,{@$u\:6([|}.y|3(EO {cdyKݳ͘*Uv/Y_䉜'`ęYe_xɣ2POəQ[G|$m)w{6, phRCOC:NaE4 rV`0E[ƨ6V{U%ݦ-Ij6J-;IG-Ó!gş*[=?&rx?g{0uHCYV5A]'{&<#W n܀_WG)^77)7og܀?r^r 7[oߍ"ٲ=DСC YQ\)XE"Ws{)՗.Y0! Öe0#%ui4yJTs 0}´>=Q} }b^=ƨ(O]^>}bƥTG4P[S1Q?s}"|zz{̜9s90L})`&?aϼ k9orbC:b;MXKsP7쑠&p ']G޳a3nKfg\?HLq476|ڦFK'7z\Qn6,3,ȃIar:D# b'؅QePY$ !WuCe-"Wܸ+j*jj]LS3mi+ OHjj7653;T7y\XPJ/%u8Sӣiv~%BIPFF ]$6 IwI;)5mi*VIbZ׍PC *A!T^t!ŻA;I.B?+()1>+Ao' :BF$h.Ft"E* jjf }WKl @P jCM~)B (m#AQ09qJ{ GqEHyr6>I(h+VjoxL@8,Z.B%3 0]Ϧ'76=誮2i]Ke465V6djNVf8g"|GvYBϒ^^x9ƽeiPbְNC94sF{3zu~/@/pTұh-BDhXmWÕ9x(voȣ/y-Bb^ hlg+j \6& Q\?cp+Zl 3jdg3XmVff|f\bdIbn/~V̗l/íIJ1^e"xWjzEcD0DgDa[Y3|BԀC,уծүi5V39\!TH0Yqzv`QQ( .zy p>+r)YAucBt0f^2;\F(&E8_5B{}=Qk{DSN+(D0 L!@U>T)#eۢn@Efq̳tHQ}'Oe$7J몿M$a4#yK9M"OhmQuQeQmѭELPِɬTidb{ӲjR5<+)dBj-.;׶i]0{nX>߶t ="K^-l%l屔--)]^%%mtueBx?{qɒ9NL1x<{ZY-,,_0hzmydKO n2I}0YvQVML?PNݛM? x %l\Am@Pm݀l"|i{38 Db(8h]KŶv6ڣ (m?2'Iڞko{RlAھvZ|wŶmM[qmrQR6--j ;€R2t,3Lc&cOL[ W0*OʣێĵSLGm270^D &; ??yx#H: y7M f $ίYp.[:@Nn\=8QTOYI ro3\+J[[j׹qG޲glN SK"RUjp5zjk|XVy*S$;b)ml&NuU[ iojtKalXrR ։?ϑ oK^1/D.Eb(hpnQ{Aʵ_ q\g2F 9#Gw1E%1Jd@m0 "fI3z2d4/ē5+@jեU$*(ZX!ڠ2oWKmZZ|ͮjkq[Hfv`pqu裆HqfaE b"q@?<;K`K N9>k>.t\GZAokb8?1Vs?HN~&TR1WLyPs)=%{zå+c0<IS)*qDZ(Dٗ;No/'c-inz3KH8glim7)xZcBڰ3&ѣ- }+=n&w Th%]fqGnLkxJ]2?\ܜ_kcrbCClx3ٳ=T՜(7>K7z޻ )3F;[6&+06h+=ҷ? w[ $Pգm DǑ=n=*SեŢ61; O#Tj5ǬdD77K:643}i^*GhalpՔ!Δiv=BȥQ)d0N]Q{(iz6ۣҍjj!XrUHq{ݤDz4լ#@m+:NUײrRqv 8.Zgk˞ 熲?Ռ {~;{t2l[tDP0 YLϖ8;f*N>!Lf`Clnt|">38ň~{cUSXKkpg 7 ,؞Xb>1Ej@~ O ;Q"E\9ֹZ,t6ZpP<Sgܲ(]!X!WuX((74 w=H hW\ӊ#FXp#[T[Dn`M:w<$E>=L\!yֶv8{̆/p_ky8}\Go߇@._?iDFWo.AuZnuS3ݧˍl%]f6DPo?`Tm?LaDagiaP5lD@O&QVOW&R+ 4@7}YcǗ}Fm&ۉņQr^:JO~BX E/Lv da<25R=OA]b#gC $ Z!2WvF/Z1haΰcD| ZE=4,BC6Ky2=y! h!)XM8`88O(,vߩ㲊Q>{ăL(@޿?<r1ck =cX/WGHM@rI8ʘbAÈ3rm&Lׯqid5373]~M)3#r&|lplFg77Fɽ3h:p2=ӏs!Qyo38QH: D{1@HuaV,h$g˄^8Aa1}L (}32>W iNSpbـ2 *#kdoxEX^cW2^#(Ie`S/^!p3#TT"Mtu#Uo}>E=# f1opxllp(mmvyH0Xτ/imGDd^cHkX\a(|ECvoC7#['ߕ^g#]3qq ò~G+꣓`eUЉȿ2,ic 4!MEjɩ&ֱToW Ϋ )8C=&b "G4ޣJ?Zb$ `cg&c?ƙyaQ/-H1* `SF!mIU6]O>$2]TKqs@@v4#nFKEIk ym#ޝZ}wz0ecl%++ 2"ŋT-^4Ƕ-SQZQ:|htAmYNA "a UA6Rb3joʖuW_s27@Hh!X{yy$z"jJ~[+0׮xT.I2leՋ-M-Dʗk+n!%TV5N1jtYgkY_7gAgcߓUʟGR$X'0^(A C6情0BYϻ@= <^@D d)1`@ n(y3[4i ss:y]0f鰾}׳V |p]Q0)?9a0SkryBl(sM=sf'&e>ØL PA Aټ_0oFa`~F@y Z0+@Y 3rÜrJYxV11(`@J7ak`ʲ 7ʲJB dT }{u bPvBY,Pp Ⱦa2wLt; }P6p*- _(slσ2 n()()BK&Oa ހ2ƣT-yPBn(`#'<7(֣u]m o}zvz>8Mlb2ޙdLN"jv}@/#YD#irY+JAMSE!i~3i c=:C1 cr3du8{? oH; ˢuMdlpO1`rrTg z9!FusߢP?̚ aF [$q't(}@GFIv2m#R fg*uJR)8ʾbQzӜa2k'1IWfM1/i2"6t,Gx&V0%nd7}698'TUJDǙ,wGxNzI\xGW 4W0-0~-ZA=U2 zu0$'fb0Gѧ/ց(55"K{j;'wQDt$YF7@ XWXgW kXO\"pQ7PrnsBG0EÁR%h/D Jq6+nЉ&.1 Y!T_X|QWMŔm!Ӊf`nެB+ak&9͹$[Km8cER:R.8TՖa{]pLz nV/[]'Z^s 3t?N*Ry=3윩Tʂ^4-]/U3Q"DpZP70CV;Z( m1 .zdW|!mF/k8fiF,w-1p]3 7œZBttnynAV#A@-3dm!#8N0BIh@E2/ "/#blb-ϑӰ,/R﷽FyOBge\&SޯNBTؕ-↖5 c]eAOWG }}:iQ {)O7cOJޞt`zmе/k^.JCH-CaZM$Ok4 AF%720貎qxqvy)b(y2OZ/B &4 *ƿ}ӨBy|bZO?Fnjeqtё}RUsS̙FNrD˯9!M2QiQ;(sQ&k P~)5.T{(tt[&x)0_:]_;^q0_\=R@W' /߹&aE#)\HJGËSm?D4vO 8;C(|?vm`N _?S3Ԯ#aھ;2䣻l'۠` ŃQ   9ޢwkxn25%C| ln nI ky32oTH=8$LL&3CX_(/tF/Ҕ2GJnƖwmCVH!v_djZ<\겑0p#xc_8!$Z`ܼ AF1 ? `RP&,oiʒ5tJ0]b&gblBgQ yDp|Nu$f@:>ҒY " Y~2K(9HliAcq.šRxTy,1pe_+_gN"sO"c6]28$CȎΓų@zHE8cn"ղ` BZ-iw*UpGxk]B"lC\'QO |#Bg\I aJK'łûVL MA2R̊0qBo\OE^xϟ؍WnOd4t|9!zm (n&A; փDjIXDAzREo3@嚮o"Rs/_MA'Xe}1E\:fGWĻ["Cx `ĨqdM'JR~EXwU &sLK%LFSI<&P24 C,kgyaD=zC_ʍaR\zb?ҼJ#B~`@؟ӳD'6Y+آ:MU02e_\iDzcd_{$2*dliOfQd]8 t*T!^=t^E{8@a8΄WU~]U$.b܇[_*A u+/+$B 70H{qRQP-TE4[~klUij9Q}(!N{6Yt? ?C.0wFE9JsXkbnіUWץ{WHg0mejl|nxrSȑ"͟=k)QBDn+]\IFSGW$KW(%5"%uu5IzE"I-Iv5I}=J{]MR{$ԯ(%J'y Dyro%c>ۈ;KQD!B^T^>_Pт!r<4O6@UN'/-Tn%J#0p ~*DG?i~5/Q^UђP_J$++jPꭣ <!ϣ IL$l( *7F%DpdO{1'#:>J_ˑHJޅPLTW4q7<-it2n{;kSゑ|3LM ߟv9T'f &p&5.CE*PKzЋBs8&HwZ:t%pT;Ϸf߯pIz?}q!5͗QnF'r_劉$!!p|/>wdpB558ߓ/_P8197%!|Ε:\!`7! % c tś/+/#4u x  čF TMqaHӔCTP<"^|V07%v'=N-U_Hµ[M %Uaa4 ۉ1' 3hv*i/NϳDϨeo'gce?A?ʳ:5hڽOދ U~?MN+#[}7FiSrBLVx3R?KHDݚ>Ri5[Sw+V9:q/هyjY;PQ7j5IRp}Z/LJ-IrfEJ|ߜȂ_Km^6O8"K0g?ѓSa<=䖆1;}LFs2ߏkQ=)5?ޥM/Њ<]dZq Gjbܛ}9'}YcGxGꆻ^vn]Qgr 8`,)Vң0vHalg\vC\#hߞɉsx$:zlLha;=lTe3Y$fS[h̗ebRVM9j>}I*F5Iy)56lty$ R|,,h\{x7hj}p1|1-xfbf{(K-r jȶ] wu> }p)< œҧ]*S"_3+.]?kDnJ:[B,u- 32,4Ab]!<}fT+z'h] f o v(km#=P{bcSJm !$N \0GO=Xu z$>A`êMMUb51rNr*CVU( fFٸY]_%y=yڍ ͱɚ=k6x=&*疢eĜV@*㥞r]HA8< ks/Ruwc~V1mwqwrXuoEϸmG,E:` ے+ @ׁ<߭SP[։7sv_o11Nq4q%ǹ^ee#hw>ly/lPf]}q>QӮ }lTyn|3$FvqLз=k~lroDV,Nl3ٿac5w!:5 ] b,,˄S=x ͺ1jK7$򦚧y* cgʳݎ1*<Ƅ^Dk,5(o=ӊt2Z3:MXasHfg&bb;,iǍ2휺vcX 3z i[Wl%g}%)l|lO^(fz&WtcF̀ŕli|Pn&sׂ-j6`3= BtQY|Cd#xNW+'^,G|,Kr~eҮ^H/h7]mNG$-i='_ =(G~zr,!xS2GoLjcY/Hw'+55tC3=~T?"/bİ4&3s$8}{UZ?3L#O' 25ٮ'cQhʡC(^M1HEPӖzZwa'uUSj';Z<:|2dP&ǐ679x15 j#:j5p-2~">i)fG/[2&߷čqhGjX"qP,T%wStj/xO|/ZӕvZ1|}O%[zɅjܽ,S% S| '*9+*^S*_lЩ/ZӒ/Fph>ЮzqPhR c[.1[J?"=c v7h.zRc(BXI)k~bBqTԊ"bL?[mD} ܋hCBeBOI+Vڵ?[ŗC4Џ`=q{x8\Ka] L.BiHIR*tاd7ߨZ>`&HH]3[cV8 N<^MAUjKstv3T:17i?ӆ-U{fg䩩|鸛Ԃ#쿋RzO wGk ( {Z[]~Hd_A9Y&f4x =N=9T__F'!_XDb!Y `eNǼWHi(X-D&99_30-y=7|'s j Nph'zOΑ{OM—u-6bsSUKx)Oo iT Qg: =^}UC!RL+Qa @ VUET.]v|kIGӢ[{ؖ[q#y?k|{8_Vix$W9Wa9FjGO=K[ $@") ["cr:cӹZ&&U R&^ pؔ0sMtHSә8;wWPs=|8.$vJu\w;I+⒣ſj-@XZD7vr5lY A^B^aLyX79ϻ+z6sӌ܅K:NʅAO( Yj Է Ú.@zqBMO\a6_1N#dw&vHYftC>2!~*kj޸7B檆(TwD#pr(iahx@~uݕ{4o_._ʄ@}?QJ7zDOC2Ԫm7s#,"` <|VNRn}ީkGvs 82+o,^Oc<mKX<@~:<c7QzpJ|skh-o/ 2IZo" _Ug|GQޗ~Ǚ@ބm~ڜʴw@9FD= Cz`T-R(|g̦HUigy/ #MBn=0TX /2>di|ˆ"%1R:t; f W>4}s8K#uSg Y8bpm4Dp| ~2p}ԦYe w>KFOՐ#*>,d|&58钠j'Ji'6V%;e*`rt#o*mJ.hѢru$,}V _< B F~. $=YfYO6@DzDVfF!'x67e4|!"rsSC=p" )Σ**0[JSXf-905=GFu ɽfQJvx՝{܊h].` ƟU T* UjZ:.KBAMZA(|P6ze.P5$E\逶:S<LtZ)}MBbt_+Q ._nvށN: (rx"#xH;q`PQ0(#Ch6,Gu{vZgB&єfrNB^h5ZR_TL=7qc8}2>~ݒ9X=Y ,q2芀diAև㖟ٌ $j:7wr6l9h!}43zԹ^Z4*SSi0 1q]\ִbi?hiֶ"E d 5w96B?{r7vü3`]1Yt4JyzL9)rT% IZ.ZT ,CEUJEģ(ӹ7h,͒^B'VM-4/\E[ $wBvw;}1E.4O-07,E~3O:_Lygti$9I -Gٙ-L'Lem3]M6IK"FYI829IbynүIR?Y>וUD.j[K3cdJT*2g{ 截ә܇ T93GsASiE|D6. @*mlb_5_t.θ/=TK}slӨT;LrW1k(iojm [Awсsx~Yo>V 4C.iFwI6m=)ڜ|%g!.d.l%wҋwd}tc?m |KLKniV2ƾmc<3z{ڭYJ.d˖b1¦IqGYM /W2XN#T RSm1O_OܤDY/tYjCؽ*v:m־٣~G|.@klX\O.nHz}NSy OKNYj#*CS kX?5geJyJUUQV:cJyBDa0oSdovE +Ҫ5t?SNESg[*`trh(]t2voVMk&ʚI&q_^We&A gZg<&iXFSz ".;-txة.@ݷtoeM2,Os.6 ~jLϼ6ʡHa=YJAV+g(H'a2O6k|߮l(1eZM D^l-Di-2,ũs)K*,KwQڔrQ:bWz^oocS3>kQ*Vpח`.7鶋ȧF&"G) MĊz\NZ~J6&(j55ȦMR8wfI(1]]v %[o&{j aYaO{VVkbUjcrcujRP&е) }=1174c =Ck)#lGh1%T0im@1N}>Y=:dIe5Ϝk:CFh3Bc*Ɛ,Ӂ4)*RUsXBL!N6.YlWF+Wt.ѭS`]~NtIQhDG)JlʳOj?,WA9;G7靕lX%z}[#ir1pRqrŐez=!3^5ch}ƇEI Mޣjnib?7\tS| [heK\(KcykX([f˚f,)tI "e~py0-E@N0U Iש5Vƒڞne16t{~2bPC+)O['U+.aų?c;M^ð71հ}m:'WˋfN[n{4٦iab}lӣIkY$)"17\>UhUA{M-D; .i7Cވ~uFEsl[*Mt8=rۖŸPS^NkjW-QَG1f}] ]51A> /d!xfx<:RzF)KuxʒbqȒD?SKjp_&2SO8l17Hȴk&ݧF]KZt~`b?:OH0>UVQt&:Q1xH^?61uX.S n=_! 5FBM>WO6J5yO^5~zhJ6OgQ,A_ (9k0~,r6_L*wQi?o6VyZk(oSTTaUK/hEiʋȮ4ц'um507S5)oIg Wl'<ݽ~ME0,3ɥaYOjOL&F1It$iz'a6oڂW4ȺqޑbǻB4ΦxAkBCPO%8oKC>')CZBcTo9j،0#Yã>XO|@gѕWwyH"_r l7vpURϞ+6!:}wq\k|GƊHB]KP'ؗl{b(뒗㫿W-eGĿy\仚|,ELNU4< ~#C"W74ϐO\̞& LP>:ג\b4m1$YKt\ג҂dy-^ZoP d{]P.p \)2) Lִw >;St}h~<3̛6KИxZD!|*% q^KKmH]*RJKu]KKmH]*RJKu7 9*Jo2mzW|2/h~uuMj ;catS~4mt?Wo}+ J fɛӹ6˩J.N2ڏ&~/@V}:u_㬈j[ɭe`"hɚ;on 6xB=8ɉY$1i4.Z,䆒KF%S%%˒Kn(d\2\|L鏍[Z >A4*YNwnŷ|ZjiAVGjh.)N-MF6dIGxKZ%rm,Ѿa\$aiһ7'Qp\Кw vGQq8I#Ku ?k%?хu%-:$EԴ7CsV*֎hQG(kOy3|?X?r F~.9cxF .w0hIo@٤$ ٲyѰ"0ȡZV׻zLKeۃ~t ͛nzR߬}h1H2Sk|%MQ!N-;Fw9w㫣'a ~{·!gX۹zA'P)uU;ˮ,ܥ/.M!~|~@!lLgSWXcϽMw-;m"s}q ewgGth`~WBzF=m;b?s uz5KOwZkE^tP;:BZEʗ*kO~f J蟂yC w Ϡ?_7kfo}gB ~gB? \ .K`Y^p .3X#Z`똭: b\ kWes3ۃPA܏|ɲ'W[ہ1-}lo e-8<wN{YԳ> p/`O\Up <~ Zg2 l yd3\ ph׀/WV]p  ?4|BBmm~bVl!0 0/y+`a7Y 0״f.|Pk6Oia>*̟0 0?0al.a<w x`m0N90l NM<,|LϦp-{\sB>G 5"8|GW=0m8dK7i_,a %-X.1X"Fȃ"ݘHP${ S;Frx'a&w.-Wo i Ok++g+.;¼e;fT; حWvl_;7{cqgkaS7pW מlҷ= 8ў=r{!ܞ/JY!,e}`\(w0ǃa#:ǐuwƁXA_ YSɃ<~h?]]zќ S#;A3xG7.l(w7w0߉93想`X.ݺ03_S·0nW,8LK~0A9.Pӕ:Pa`$F0`8 qxp Mlp>hpXmEp=* w{a3X/@;X ցtn(PP0 h3Ƃ=`?0LC`:8Ns Bp1X.+ |\_7[w.#p/x< ~khk:t.Ps/ԁz0 #(0 ƀ`7Pp$ǃ\phgA3\ ph׀/WVpO,(S[c}S;<gDiýX_.A%o+_ ^"Y~ꌈ_ċ] d}SO!;%>1} <1d\}`vגm f{B^nw g`2)B|않|Jem(~$G[CCPx톱|07 ~0A+YcG=FQᣙL^1\_CcSY 2o`,'`{`8f4+U/2*hB=g3~"&qӐrD!xuq;La8%58u*s4i40\  .c^o0M>13=g~2w8Y̝OL 9v#Hl/`9a`-SqA˜>환Z E\Գ ׁxMKb 0<.BVgY[,\3-x?u#xvG~A? / +E"# 8e F.dfNB:c"G.nx?|Tp88  fi`>8 E"p X .+*p5| n;=> x<πw*#x gA` ہn`O?8LS(p,>N,p.X%`)WZ%p#|?'Qx </߁W5:x _;ww`p QX0 | NY\,KRp9X WKF5p 6 ~O x</~Y)ƹlkÊ!`^y%x[Œ;.Ay3@? 㟀('p_ &B~`~ y}=0wC@ gK=m\T.,y<^3wNpr^0I <V0WG0< vdVkP+s<8p3 ;dN+Vr||-Ά|xtg,i_ /MßtSA .Xp*N;t7^ w> z2.YG {YCyQs!A,>+9{@ _Ƹj`\Xg C Ԟ>ay?HKZw@g-Zv7r S;lța6=kyP}1K_`ya/>L+_"G$,xZMl/4Eu\/*!`fGnu|'[73 |,_F r9}^NB_}~ ySmajo`{8p:84ßona =߀8;]`Fv?X9υE0/ B  z+C7"}{'`,_ ^{ C4pn"9`!!Wku7_~?W_g&f30o}N8b^O|oِNOC^lv>Я4Z~y733]x3?{`ƽ 7 O"op<̐-[lA| y1L>IB yG*?e@ww`K?xHvV*_ 2C|e2߅rϑ/')ï(%[}wY_\ :vA q݇Jko{Z)0jĵ_'y뤜;E<؋`׀ ҿAr3/.+H/WrKH^R%2v Gwa7xkW!qOQ[ [m6Hn}x?8E`18|R tWa;iQ)VV)?C_%qW?\%:UUNfUIsUR@H?MxRX-qww5C%nXwRO $8F3#[`]k=j$_= 5Rf7jߣVsj8qiχ]^+ 6jsxŸW]Py7 |#`8|q.w !?WlE+} ya` _I(gYU;G0Un;8s-d|Gm{%nv~v<_9I:O 3+:y+qu`xY|f;wuz<0Z`,ǣPD; nDZmGzw< )~]\p 8LEJp-  ޅ!`'.^)0> + ܷ mρ1`ze?[wXR#=bO=vɿ^CH?Oy>+`G X^ {?c>>|_jvyEG}tۥAӀ <ЀqA,ǃσIp8  r,Jց^x< _oe~a+-vo{`Mȿ&~/}~e2_F|/Q(nwa&6|C`FoZAlI5$\|_c߯nklCR/ }^KYJ=ݽN/z)ApRC/ vJGnů[D9!_s K>AO.uOCam==ZDg}OIRgйoo@z0tҏn(5`R1_TkJ.do*5z雙6\Ĝ"( :Jz4}:еZamFL# GOf^𢟦ЧH_Kk'o.?BT'lCVKЫ>ZgA:nq!gaoκJF3wbG U*eRO}zi'5߭ z\ou4^ZfO0H9մ^|W={k_?)31i?n7O_@]K>Fgy ߡ}\}=g#=i߁οti3B>s_oVAuEk:znB! P*{ڟ|V~.>)2Ez6`_2놞'嫔Z=#/CDs zJRfzlvC?[J ]Է㨍Zc͡ZΟKz);Ѓ=@T!3ԇ};.}e tJBϡgЗa:Ff/CI>I3\x,A }.k~?F2륇=I~}%J=|*=cy߆1(C ~?ڵSi͆iCrkQzg`z!ds3mRw@A3z*mA۔iNB4''/C/'=(s^fRC1t n@}?js0ʳC'fseYt )Ou䍿0xJYE S1:8ZA }H| Ö/t'`Z|ERV؎5^Νr5:X(XDXҸ K9t襴 ;9 GV۱,e0Gʈ` E3n>|Uˎ|$9@N^a:"Ty߼jٮvAEA'.UA %)?QiNa9eE4Rڂe C⡤h0FbtЍ뼑`*'2} X2q˵C|+Z4q{MP>u/*./hfkGz EkXQ"N]U/?N3+*Fe:K6kZ!R|3lSDIqm\7'(BY^ v,G"[Z-~wdS q/ҞAܮP"͋$SyRX[|~o&[Zt܉ EƘ'oכGh8bB=YFLʦ729TǧgSDUKֈě]$J{uɔGr"#;zˠnULBF)M;jAuu@1OZ9 Y|-ݏ|l OԎo6u8ŎLCIQz*@Y\ t6ShI$s6)kt57'?KE'0\T@z֐y<1hmyھѴS IώF0=F( 1 f2w ;KsqM$21i|Rir+Bg>]gt2kj_P4츈ّ9Z⧂ixhD0p%<oyMH/_J2 -*;BE{ YvY!z &u;P$i[RZ+D BM&F.ԍH '{AK߫c2>PK6}Idt!vEPC/GO32BP/EMU387} |U$iQ-*(UXJB 4uݍJcaQ  Rw'..u)mb[ J( ޚU*-X{'$K%3uys}䒤YʭLWqܪtrN&W.M -,ɗΒAG.p\`<٬wlZUJ,Sя9BJ^A}/YeA/ un \T 8+hW45TMj * ̄}X[tus_́70PAclZ@H (W\1nnr8 6RMr6lę viv?k[1;ilzwF#K4i[X6fx⡝C,rVrɄe]5ʳ:%:X:giU㪥R0@?[/$ʳyAX+NB zK}TNDo_>` 6Mx+_o4șR|߶͕8D%_ ά2x&)"&xY*6OI+@hJ*J[ǝK3L}W=riagFU&;q;3Nm=~:v)1!pR|Y_)g+&X1#]TKQ=rщIvZ_/e3e3:bwo% DiL, h𖼡cödŲ܃WrU,[3?a-3 >#ùrմK3ydR2 UI8ot\Fjcɸe"eVp ?_]jwyTP(19[Xs&TLViTcU6ASqO.osy?1ΠaBXG!d+s5ʤ0Rab%^I2>3 H.PCk8<򛌕k W;V\DZR5b5+VzYq.\jte0\~DT\P+W^RnkQXډP3paxru.0(a6*#Q~C2XO"oً L}N8/NUHSG0^Fx#Yʭ+91;hW(Xn6%'`2裶Q%9^ *$?c]Z-S&]@}г3/BΐW!y$nXF|$||N§ >]nJٶ_"{gҶ4tvm[Y>-I44~%1hR^TA'~ re^]X-;yOFܓ>QT4%ɥsd`)OExˠWr\wu$4=/0}WJҺnSHb 2v50CMOG'>7g|+Du8gJ^/7_;`XgPʾWil[..5 @/xAj)_pyk67Z^]H~47< Ҩ Ca\> !7詷\!Ûl|%DHi(3iJL$ (%i,1 t/cNEIfJ_d Md M8*L@ س)+Gwhs8|ܳ&ȜxjeƼv r{fj` qd`E0;,@Ȳpf e(Xa\ؕc|ђ {C1_wi} 7&$W{Jū=:9ݸNMRhn[MJ/s2R6Do!kU&2Ci!t!֧4Gl5-^%n5Szy _K~)l=U E!!Rɉ6Ɖ )/ڂ)Xu6dq !&iMJ^jJNCk],^ਛd2o^M't oMt%83pLw0(/ .+A ˳e0ʭ:ceY ~f{v8o!܅ peFrKJ&hW6s +hl- l$ F{ ; \H2BQ5Z 1?uF })UϪ (18? p{rJK.ezV@3-ZrQZWд&Dկ9l|^4x' +5eմ42`g ǴT'[qJ  `XK±,vu3]h٢Tܖx{P/}P܀nB;&~qY8`ܓhtEq4ަikNHy=eak;YXO9ޡSEbn] ٧LteYC9HڠC3 E-K@!yHufi:N%%w6̱Xkm> E=ha E MOj!E*>Ipְ5'¡ܧr9uƧ_ &}VHZ^s%iVKs2,e F\p3Ssl*DNjà$ lL'A^k[ Tߜ-K~2$y:87q%KHD) IBD"X2&u8G  usؿ;=L lEW'Ӆ0b^ kMDw\Fs 1#ty^¼\r~-_-K`a xX콌X(fX vH!ԣuVyk_ۘj|sK}t}tZ`I>[-|xquM;܇ئ>Pi.@kK6n:s`i]082YQN`2 iTLr50/0t.i%8,\{]ùK.I\ y2;vjE.57nnF`N)$ ز\>S}yujYO9-䆈 =kO)>ϻs,nÅqgx/lL9 y\0v Ds4 Asyhs:geJѡpy^Z%u]]%S/ A(DD*TA'fU syfr'87pLu4@N_# l${{RgnIf1 9%o!+B{7:Id&, [4'f)NPIsjX֝ t[a6rX6D!O lp?^\G^Yabȓ_+=ELd#Ю73et? \}3I _!}]!]C_U(}0ٚH $ iRL+0/LX/5- 9N8J!%stIx ɍ]9pjh`> 7Hf5!"@1Ѻ6N6n {7aߎqT !PVmU}5zo7mGϨE)%NPɞ՜%~a6a/fx`cyXkϱA+Dz=& ]t[5g(D'~'}oؿN_wkoH;]|ibW{tok/Ɨߘ87=鳒{Z&1%$͗GR>O-*I=EjJ$m2cn!A7A{! \O?[~ B )c kJAq %,ZZF7̗fn ƄEAsj6! 3?cę ;HZ,8m0cxO 9CadDM$ AwOCWׯe=rWUbgxzz +N:L79[>l8`B*\t.B_C)一-.8 PRNQG)pVrMeazYM)HؒT ֿѹ4h*}RD3] ϙ0ؠ\D5 w -xfT5TeƤ|WuuZws]sh`!&&UP4>ܗv;{<-`go>N᡿$wA1='7RM-BM؉զƺ$ {J:YgLvȴwoP)n&Kr+y3س,jUV<9f FyVtmVGa$* SY+brs{(BIep @oc=L@9a,h 9}_!W5@?=-אAX ylT>:˝3Zv{Dʛ(1T.h"D뽨 zhKKa 2etT(ذ{Tpq:4dR{i-^Z7OCg%TD=avDMgcqJ:j鷤W15 ӡl%_Q}Ի G:NOI)B5/`SZF,%P)MV¸|{*h(u`Zfޟ;G lTdEsC2VPso]*'&62%`O˃>E."7R\y罥Km}Xen&9C\ghu˹jN)ݘ5H~"0!/W}-0.WS~_ /|,$kg1l _9g!e},];i,(*'CrWN-zA0leO- u O@q3Ac,0_= -ck1ǔGcbX!~ zs7 wH/YC*(§AlD>=“e!rqHE_QWEm`#d~r? @WUM'cΚI9哞LTAp~95[? 4#a uLXJqs=N1l]P@ljxhG%~re3@h[6׈ Yƪtyp%zazK$!Oh䵃nyZ9$\$a|8,]ځ|ɂZ|=^<"یy${T/}"4Q.ҺEut?̉5 d'5ʧv)XQx?Q}I1;jytܧ|6xZ!ooK;s ExZ(fOTf5 ey2LFSOj=::G8`俨f7o4YI3Cq)"XdhPMf7>&hM52P'Un qհ_tnU`.oLyeE}RujkydfK~ ;BFqʊ`t =٨#AۚE7g.9;z34p4AOB5"xL!f\5'mΆЀXk@KYdu@ H9kL@F'LkԪ5 T]j?jԛ]y jvIy垼RSݵhE. ?̴:x\U4|SU!i[QN<1, 7rR 폣qtz o؛V~H}#xxD_A>RY&Dh9}c_ш>mx?!z'x|0(6O{_kưbǡq#(CC2wI"+ =BFf4V'|K69}p{>8]?[O8R?oI!unb !Ck[>{(p7k/~q_p"6k݃|vU4_w"HϦmt}|,>~0Ӽ^EXM#KX<po-Ȟ >~?g3۫D̂G]|K><^h%}gczCt_őwZb/?ӿU utu%~-RADfG:r:$V$)+ry"փ1v*6cn c,EÕut XsV[O:{-.Ofk3n&KugjFg'o</CH[ߡ˜HODVdAǠzaYXQCϽd䝺0}>jPY~`yOµ~g"~. oR㤳UsCIǩ@hU4#44.ho4nz?z,DMXbed,;{QbkE~Q=y:v,222qp߶"5)GEZѹ5 ҹ >}/MEjzp|qo]lǽ1C5q~x܏49_|(:ӪCuW9?]=lwl9.9ؓFWR|U#:!6ֽu춼>wHkU ߾h}>Ǐq!\ X4g:#/.`Ett#d>K!(_M5hϥc>v|WwkN"y黼/Dߩ^A߱} V}v_umoif$d-j~ Tv' ѿM.-Eأ 4LG$r;q;pWܲ>Mm^?&Aޫx˃=Diy\iUXΊV  s&Z&epȳMƩw7iݏ.m l-8p8ם:GhRk]/`,pϝ+gMPژHIǙ-x/E|AZ [ >ߺpzU/-6lR+ }=݀ok&<0 / t]`jc}R_q5Ҧf6 i1+f}x뙣YG/Jl1H=l`S!͉m+'a_wWa3)%(6z3V8I6# a1('c|Rg2'uX9FVARBV[9_kjfĺ陋9NLٝYMx|`L+ʴVVsԙf׭_:0J PC 9E2ЌZ7[xf#;/mr&9|-1~?[eRG3W}ɸ8AzftK:- k7UtK.DAp7sl6dJk14.Cyʃsty`g+| 9GYLoxV v}\tYyo^ޝV]>j_]6р{L~ \`>W]w7fClet)([EwTp3i Z: Og54si4Q""2%Ds>^o՞i,rTPTw}ǪswL*F~tRaǑFHFxqNG}tG9W8>%o@hF=W8'kF̸W\=)MPOuJGGU nvl&6H"`F*B16$`P X,]R沞'ѢBWo[T @K|@"]7OEqɾw{ >w~gwf4Bmһ~yyrŸhA{YuJr(ySIԟ_J!B.^S2lfLw_mސwz*;UT=ꋺ:񍙹lQkԕҋLj NRciY]h[rAp\Э{<_4/.VpP3r)O.iK.2R)@PjtuU) (JI+n:`!T2^0hM8=%HK=-9W+~ D qƄӶMӕvR"Y-\Z4Ip%!`kg\R7(1+y.c:{ VCo0 N%IAp.DVa:8dAAWEHE˴ű`FdVa4TJ }ч׷X4N{{,} R+t(ã&e+RJs]'oCRkwf++ }^XXavWmz\SD׍L6N-0,Ywaaz,(KKY`x\% IaBW@M픑暺چQçƉ2JE˵fSCik$%e(䴲7 ܖྚ =q]o~Bk)׎#A~O{ ]E$8NR yMgpDYE{ߨ7 >Z#xEYZh$Fy)cqrxrCs[]kbQS5Fń~2.<=͋x}{XG}sIOch'nղG:]Gdp&Q?E‰#`G'qLoY 7P5;Z i4q%tr0#0}^G?SrˇU}2NY3etEEc.1AN$gf㿶&%$Es aIYZ0otnRG2( ^B.1b¢G||A$}&zy`=ncY#XB!8s әKsͤB0c\9ʑ#3XZ5icVuä0>f\< -إMg{|*CԎؼH}qQařp5=DYuWt,ΙWU֐r 擫ʹ؁v$<[)}PP~0_ڽ]I{rۜSapnzA^7MgIԞҔ{_[WGuF?zA`@6vt$6+ݡI!/Hi[s46--)>?j;m)IwA_с$ų* (aДK0n^^LS$_D|}=utV IMDL%s\=.ərlq ݳ3_g-gb^bqSwha@Ycٖݶoc n٘ El;xhh-tۃgn? k/e[f= ռ?曶 U#v#W R}ӴV]rIxָfFc:' 5gc֡3.70rT{ݒSyeUJSjKRy&`ݞX>Pt@Ʀz|HQQ Qڇqrl A<&wC׻U 꺾)7:c!ؚbOsgOwp`N[D ~=;K[Jmś[Xi 4M5M͕Þ*hd>ܼ(4{rV(xD-q<)Mk oNB_g4~q2]Ux]0md*xZ:ӫeq[e\s$́V@m^PJzR;v3qOAO]1_-IgZ6ܽS|*dp=YL z qu|`= ϟe?ϿtGgZ0 1eW7T&FϾj+#NX{-C? 沏>}bA״B$,&I,QO *]ę \,RYI7[ȏ;Onr'pђ+0n=bnx13%q~cOcIbwc?[7[8I6-oSb/ cW)W[nx%O/x7O\Mcsu8&k1G>IcoAbs?z "16Eɚ"F{bhG,A:LVh/<+^b~%h4 |m"F[$F(*p3>V'͓!p61:. FgѶY#p91so'F;_&F5!F&F{};NX/JXJ 2C$K,x1ڜHf^b1Eb-_hS Lv{|^ψn8.6IhM8;]/hqF 9ˠ2A7>@}Imb'Y?2/׼Wqjy+8x3\yce9jk"^\M\ /~CZH| /DlX q%k㌜_N&V <ꀾ |v 6mbf׈MUrOyO xK;p,0e590q]qh#}LeAq]>qDsVbE`\#n~\#ZXhMfЉ&5/p1 <}ӟIi-krqNۡ8m!q|1Ӊіe'yg&G;8l]1 q_mgq,~E!&F{]bEDZ%9#F1Y|EmJA(;1ړq b:1N6b[.!Fu1o P_ 8f'bU_ӧאD 1h M!F;0[h vW>1b\-!?(_ARH 9ڊn-,?#5ڗ?&Tm|Bٛkm!|)$Ǘ[$Βxvz~|hwGq9\7rsA<+7LGvi!1ˈS!ĸ"F6{%9j 3 Do( rWpEQ%f4]q󅤹s@@ 8!HHx5n^;GגSK9p~k珁 ~zo[50wK߀ڿ#h` z `-u9'9C{ȧCm miٜ౗2r=Y(cYSp^tgbjFea5/d3D앳]"h?8֓FEh;vm-Y\t; 7 r砜ݎإ19g,8c+X3ƔL9ΔL9ΔLNCO9C8C8CϸggqgqgqgqgqgqgqgqgqgqgqgqgqVgqVgqVgqVgqgqgqgqgpNu;L'B~X!ר~ ,+f{U.::E`j<23zQsM; DSfOēn{mí{ oBtn^|!\ȡH̓\?r;mt SS20֣0SK l_ȊbvhY/Mn^Tx0 w>wA? qID8>ý n`鏀X ދ u`~#DcxNI``NTf ʋQw=H̃M- o l7ԳuKX*%,’SVo}s{i1Di-0aEaFX(zr(aPSp@3"]=@Fpl!)ψ|a4!O|Fs޺x0|NxRf7%DGs>F\xA a':~u:~UEU=ZY__e~ kEXKZ|moDtjR)vN7T[ݡ[$l[fIIH*J݇&|1Osȅ}v${k/"֛ ⠼ APӝ6^Op2sx@%X#֩sb R=*fa16ƺ&[`Ո% qX6T XorbX碞k{Ya]|VQ *QT`Ne>7`Qq1-\J}5G;Qw|S2 V(- PK PC/PK  !PC/DOS32/PKp"ڵqtHPC/DOS32/MAKEFILEPKY_PC/DOS32/DOSBP.LK1PKP:EwPC/DOS32/DOSBP.MKPK+ PC/DOS32/DOSBP.MK1PK8T*6 'PC/DOS32/DOSBP.TGTPK~WuPC/DOS32/DOSBP.WPJPK  )PC/WINDOWS/PK Hp,#cnnRPC/WINDOWS/MAKEFILEPK؝,^%PC/WINDOWS/BP.CBRPKH!0c~ PC/WINDOWS/BP.DBRPKh\d:PC/WINDOWS/BP.LK1PKr ^8A:PC/WINDOWS/BP.MKPK5W U;PC/WINDOWS/BP.MK1PK-P_B=PC/WINDOWS/BP.REXPK3 ;PC/WINDOWS/BP.TGTPKiΉ5'?PC/WINDOWS/BP.WPJPKMoC{ ?PC/REFRESHPKCϰ }@PC/READMEPK-R BPC/DOSBP.EXEPKnB*7H} PC/BP.EXEPK  PC/GO32BP/PKBn'b]uD*PC/GO32BP/RU.386PK7}I@PC/GO32BP/BP.BATPK4}I3s筘{ lPC/GO32BP/GO32.EXEPKIn {/4%PC/GO32BP/BP.OPK6}Idt!vEkPC/GO32BP/EMU387PKBinProlog3.45/bin/bp.o.68k.next100644 764 764 205764 5764363156 15310 0ustar javierjavier__text__TEXT__const__TEXT۠__cstring__TEXT|__data__DATAt4__bss__DATA0PXNV/Hna .ЀЮЮ @A tHxHyN#BHxHyN#FHxHyN#J BHyN#NBHyN#RBHyN#VBHy N#Z BHy,N#^BHy3N#"BHy7N#&BHy;N#* BHy?N#BHyBN#BHyEN#BHyHN# BHyKN#.BHyTN#2BHy\N#6BHyfNKb*#r#nG## BHykN#fIBA///9RGsNBA/9//9VN(HxHywN#jB##L< N^NuNVH BHy~HyHyEjN Jg mP XP`"fdprf rg"C"`"C""nd"-P\e$Hy/ Hx/-PaHx a mP XP`gB`prfrge"Hy/ Hx/ aHx a"ndD"-P\e$Hy/ Hx/-PaHxaH mP mPC!IPP&XJ C$Ћ$` XJ$,$,Sfb6pL< N^NuNV n"/HyHy(aHxaN^NuNVH0&.//9Na_$POf/. Hy/a L N^NuNVH8&n k|'kXP(k4E C"%IXI%y>p!Yf!I!kP / //./ / aJWIDLN^NuNV/.a/azN^NuNVH 8&n $.$n(n'n'y>/9:/9Na^*rPO%Yf%B%lP$/ / /// a8LN^NuNVH88(n&. / aPXOJfHyavB`$l|)lXP"l4G $ 'C'y>/9:/9Na]r%Yf%B%lP$ lx l!C l!n)B,)Jt l!@ LN^NuNV n/(/( hSH/a*N^NuNV/ $n/ axXOJg" j/ /*t/(/*,r Ҫ4/a`B$nN^NuNV/ $n j rfr ` / aJg j ($nN^NuNVH8"n". $.&. i xbH |4 p N ix ` ix `F ix ` ix `2#A,#Bt i!C ` / Hy i/aHxaBLN^NuNV/"n". i tg$// HyHy(aHxaXB` it #A,#nt i!n $.N^NuNVH00$.n$<@"9ʲbB`&yXKb$C$S j rf jr XKc&yXKBSrgV$S j rgrf / aXOJf j rfr! f JgB&yXKQBBSdpL N^NuNVH?<(n&n*.B-K(  b' |T p NJg ~)`:"n " ~)`Jg(/.// ~/4aJg&XXK` ~"n XI-I Y"` ~$t. g$ `$B$fffvB"nd< E*hP\e$Hy/Hx/(PaHx aX"E iP XP$ ". P cY-A *n XM-M Y*PK`شf%`< n  ~)X `"~)` "n ""~))` /.//4 ~/4aJg%\`"~)(+")`VJg ~)"FXI)` ~) "n "$IXJ)$`Jg2/.// ~/4a$Jg$ FXH)` ~$n $)$`JgH/.// ~/4aJg$x/./ FHh/4aJg#2`B ~"n "`JJg4 ~)/./"FHi/4ajJg#P`v ~) "n "#tP `RJg FX$P. g$ `$B$fZffP$"nd E*hP\e$Hy/Hx/(PaHx a"E iP XP`f"@`"n XI-I Y`2 ~$t$ "n XI-I Y`HyB`" ~$t. g$ `$B$fZffP$"nd E*hP\e$Hy/Hx/(Pa@Hx a"E iP XP`дf!` ~)` nRH"n XI-I Y"`-n`$l. g$ `$B$ff"BSI-I`&k. g// a&@POJg B-n n "E8e` / /./. /a-@ g . `"&k-n n "E8d $l. g$ `$B$f fg//+aUF&@POJg!, X`&k-n*n E8d b$l. g$ `$B$f fgp"+"Ag`8 A(( ~C)A)| ܊*AG ` ~$t. g$ `$B$fffB"nd< E*hP\e$Hy/Hx/(Pa$Hx a"E iP XP$ ". P cY-A *A*(+ ~+t$APJ)$`f L, (+/./Hj ~/4a|Jg " FPH)` ~$t. g$ `$B$fffB"nd< E*hP\e$Hy/Hx/(Pa,Hx a"E iP XP$ ". P cY-A *A*(+ ~+t+t`ȴfX, (+/./Hj ~/4aJg././ FHh/4adJg` ~$t. g$ `$B$fffB"nd< E*hP\e$Hy/Hx/(Pa Hx a"E iP XP$ ". P cY-A $A$(+ ~)$$APJ)$`fH(+ ~C)A)| ܊ ` ~$t. g$ `$B$fffB"nd< E*hP\e$Hy/Hx/(Pa8Hx a"E iP XP$ ". P cY-A $A$(+ ~)$"A`Ҵfh, (+ ~C)/./Hj/4aJg~ ܇ `&"n " ~)(+$IXJ )$$IPJ)$`X"n " ~)(+ #t$IPJ)$`&"n " ~)(+ #t`"n " ~)(+$IXJ )$` ~$t$ $n $(+ ~)$$n PJ)$` ~$t$ "n "(+ ~#t$IPJ)$`` ~$t$ "n "(+ ~#t`. ~$t$ $n $(+ ~)$"n #t~ ߮ `&k-n n "E8dd($~ n"EeHye/Hx/.`L g*n+Yf"nC, -I#n E#hP"`:$~"n"/) E/(Pa*E+@P"n-i ~ Ї POg"n)Yf-n nA, -H`$~"n/) E/(Pa*E+@P"n-i ~ Ї POg"n)Yf-n`~Hyq`Hy`Jg$~"FC,, `$~$n "JC,-I S~g~C,%,QBBSd`h$~ D) ` $~)B$t. f"`$B$ffp~f ~g)J`)B`$t. f"`$B$ffp~f ~g)J`)B ~$t. f"`$B$ffp~f ~g)J`)B`&~$t. g D) `f$B$ff"Dp~f ~g)`:)`2&~"n ""D))X `$l. g$ `$B$ff//9NaL &@(~POJf /9J`Jg2 Sg )Yf$2Lp~f ~gEL$ )L-n n "E8e`$l. g$ `$B$ff(~"R 拓//9NaKx&@POJf /9F`)LSg2 Sg )Yf$2Lp~f ~gEL$ )L-n n "E8el`X$+//9NEu6N&@POJf(/// /. aD4-@ /9F/9NN&@-n"n *E8eHy[/Hx/. ara:` /ad` E*h g(!n ,!nt"h#K-h~!"n"B`HxaKav&@-K E-h|!hXP*h4I C-I ")IX )y>pXO n!Yf~߮"n#n E#hP"`8$+//./.Hk/ /. *BN-@ "E-itJg*E&mx`HyaJ`// /. aA-@ fHy`h/.// /. aBL-@ gt)l` /./Hl HlHl/. a80-@ gV`\/./HlHl/. a:@-@ gR)l `/ a5)l`&/.// /. a.Jg)l`|*E+m`p//./ /. / ad-@ g/9:/9NaH|&@PO`/9//a\`Hy/9a/9aXK `$T. g$ `$B$fvffj`$T. g$ `$B$ffg@`$T. g$ `$B$ffp~g`$T. g$ `$B$f fgp~gL ~gB`$T. g$ `$B$ff" //9NaG:PO`&,$,rƒp刂~gP$n //.// a]\-@ gJg/./ ~/4/ ` ~)` ր~g/./ ~/4/` ~)`T&,$,rƒp刂~gP$n //.// a\-@ gg/./ ~/4/ `| ~)` 䀖~g/./ ~/4/`D ~)`&,$,rƒp刂~gP$n //.// a\-@ gg/./ ~/4/ ` ~)`H L8~g/./ ~/4/` ~)`&,$,rƒp刂~gP$n //.// a[t-@ gbg/./ ~/4/ `6 ~)` L@8&~g/./ ~/4/` ~)`hp~f ,f/Hy/,`&,$,rƒp刂~gP$n //.// aZ-@ gg/./ ~/4/ `l ~)` L@8 ~g/./ ~/4/`0 ~)`$n /,/,.// aZ-@ gg/./ ~/4/ ` ~)`Jg$/./ ~/4a6~~/`a""~~~)`$y*g jB`,E RSk R"hBR`/9aXO&g/./ ~/4 ~/` "~ ~)`$,p~g /Hy` ySk y"h R`J$yJ*lH D l> j  g yR`/9 y-h"nBG` /9%/aPO`&,$,rƒp刂~g$////. aXHJg8`破o `&,$,rƒp刂~g$////. aXJg `Xl `N&,$,rƒp刂~g$////. aWJg `m h`&,$,rƒp刂~g$////. aWpJg ``ȴn `&,$,rƒp刂~g$////. aW(Jg `怴f `v&,$,rƒp刂~g$////. aVJg `8g `.r¬p刂~f ,& ,~g/./ ~/4/` h ~)`r¬p刂~f R ,& ,~g/./ ~/4/`  ~)`~r¬p刂~f ,& ,ƀ~g/./ ~/4/` ~)`&r¬p刂~f ,vƀ~g/./ ~/4/` f ~)`r¬p刂~f P ,.,vƀ~g/./ ~/4/`  ~)`r¬p刂~f $,F vƀ~g/./ ~/4/` ~)`*HlHla,A$0 POf z ~)`$,p~g /Hy`d&$l. g ~~g X ~g N$f/Hy'/a n&P `(Jo ~d/HyF/aɪ"n&Q `E<g/./ ~/4/ ` ~)`:/.// a9& Jg `/.// a: Jg d`Hx// aD Jg\`)yHx// aF Jg Z`gp~gJ,g l)Pgp~gJ,g l)P/,/,a<$POggf ~)`HHx// aB$ gf ~)`// a#$POgfr ~)`/.// /. a7"-@ ghg/./ ~/4/`< ~)`$n // /. a.-@ g g/./ ~/4/ ` ~)`b$n // /. a/-@ gg/./ ~/4/ ` ~)`"~fz ~)`// a(JPOJg|`// a#tPOJg0` ,f$9n`$9rf" ~)`// a#POJg$` ,/a&ZXKXO` // a%~POJg``/ a%$XOf ~)`> ,f8$,p~f ~f//. aJ$POgf*BXM-M `//,aN$POfX ~)`// a?POJgZ`$n // /. a,4-@ gg/./ ~/4/ ` ~)`z// /. a1-@ g`\$,gp~gt ~gl ,f6/"E/)8/. //. a/$@Jf Hyj`@$. -J `./ E/(/(//(a.$@JgP"E$)#Jf> ~)`޾$n // /. a--@ g4g/./ ~/4/ ` ~)`v$n // /. a2D-@ gg/./ ~/4/ ` ~)`. y P$f ~)`"y$Q$ E*hP\e$Hy/Hx/(PaHx aì"E iP XP`/.// a2( Jg`ݦ-y"n$~ć~f ~)`t$n / /. aQ-@ POgg/./ ~/4/ ` ~)`0$n / /. aO|-@ POgg/./ ~/4/ `~ ~)`$n // /. aS -@ gbg/./ ~/4/ `6 ~)`ܤ// /. aS Jg `܈$n // /. a8-@ f Hy`g/./ ~/4/ ` ~)`8 9$~f ~)`// a$POgfl ~)`// a$POgnfD ~)`// a6POJgF`ۮ// aPOJg`ۘ// aPOJg`ۂa$f ~)`d$l. f$ ndH*E.-P\e$Hy/Hx/-Pa2Hxa"E iP A*iP+HPP$` ,/ ,/ ,//a$gBRf: ~)`ں"lSI/ abXOJg`ڠ/ aצXOJfڐ*n&U`.,S/a$@XOJgg/./ ~/4/ ` ~)`Dp~f ,&/aXOJg|` ,$// /./. /aFJg*E-m, -mt"m&i`Hy`HyaXO`t// /./ /. a-@ f n&P`.$,g,/./ ~/4/a\Jfn"n&Q` ~)`V/ /. a`/ a"XO`L0$n&n B -WIDgRJJfB`:|I/aXOJg Ѐ"@AN(؃RJ`&JgDJWIDL |N^NuNV/$.Hn/a|POJg .r` /. /aΎ$.N^NuNV/ "n i rf. (rfJ g @r"E#J `B$nN^NuNVH?<$n(n d*<|@KNB  yB0 ~ge ~g `~gr~?f 9fJg`R <gp<~g <g~/ HyHr<at `zp,~f2 2,"~/ y/0 HyHy(a`:p,~f 2,/Hy`.β,/HyHy(a R Xl~HyHy(aPO`$*//a/&@POJf< @~A$/ Hy" /a `v ~ge~g~g` gb ~g` g8` @@$~p y( 2L@@%LB(`4 @@$~p yB("2 AA% B(.2 % ` @~1$ yB(G %K` @~1`, @~`"B/ aPOJg @~` @~$`Hx/ aPO`B/*/a.\&@ yB(Hs /*/a- @~&`JfvE<epL0*.&. &n(.$n|#~ j @ b 0 | p\N// a$9BF/*//9Na+,9>g y!jJgB,9>g jg y |g|g<`N yQHpЪer XH Ъd jh jh`, y @| `|#HyEa` Jf # j @| jX j X j @|`f2Jf < j @| j" | `.|#// Hy^Hy(aHyha` #X` Jf cHya` // aPO _g(9BF/*//9a*Jf/9/9Na+ @ @| PO`Jf J`Jf < j" | j" | `Jf |f j (|f^ (@|+!@Y j" || 쨂 |fd j (|fN (@|*`|f j (f (@|!@Y j" || 쨂 |f j (|f (@|`Jf|f j (|f^ (@|#!@Y j" || 쨂 |f^ j (|fH (@|"`|f j (f (@|'!@Y j" || 쨂 |f j (|f (@|&`Jfz j @ Jf|fv j (|f (@|-!@Y j" || 쨂 |f< j (| f (@|,`|f j (|3f (@|7`|f j (|f (@|8`|f j (|f (@|!!@Y j" || 쨂 |f` j (| f (@| `|f2 j (|3f (@|5`|f j (|f (@|6`Jf|f j (|f (@|%!@Y j" || 쨂 |fz j (| f (@|$`4|fL j (|3f (@|9`|f j (|f (@|:`|f j (|f (@|)!@Y j" || 쨂 |f j (| f (@|(`X|fr j (|3f (@|;`,|fF j (|f0 (@|#r#r## j @r 9BA/*//9Na X j XL N^NuNVH $nSk jBR` / aDXOr#g / /a2`B$Sk jBR` / aXOrgr$fr0fSkR`/ aLN^NuNV\H<0xA* 9fB&`/tԎ/Hn\Hy/.aGBA .\r/B/ECdNPO/B/NPO/a%B$Jf6///.\BA/9HyHy(a8HyaB# L <$.,. Hy/a$@POJf$/ELNHyNHy aB`/Hya/ at KIvSk jBR` / aTXO*rgSk jBR` / a.XO(rg~Sk jBR` / a XO&rgZBl4&TSk jR` / aXO( g TJ0(gRm TB0(/////a$f:/ aXOJgHy0`HyDHy(a L<|N^NuNVH?8(n &nnr#B.gBB/ /3>>3>/3>/3>BAaJg4| ?f Њ 3@g0B Њ43//3aN l XPORJ Њ 3@f Њ03gv/ Њ?3Bg/Hy_Hy(aBm>BB Ђ/3:3/3/3B@HyHy(a`RlHyaNXO֊3>.f//.HyEv/a /adpLN^NuNVH0 &.BBHy/HyEVNJgHxHy/HyfNJVID L N^NuNVH0&.$. /aXOJgJg //a`/avL N^NuNV n "nA .rN^NuNV/ n"n "(ptg / Hy` km/ Hy/a<`B y/0 a$.N^NuNV/ n"(ptf tg/. Hy4/a`( y/0 aXOJg B/a`B$.N^NuNVH0 n"n "(pvg / Hy[`"$"(pvf vg/ Hy/aj`/ y/0 a&JWIDL N^NuNVH0 n&. $(prf rg /Hy`& y/0 aXOJfp`/Hy/aL N^NuNVpN^NuNV n "nA 1rN^NuNVH>0*.&n $n(.$+ f&"B`$"A"ffp|f |g'B`'Ap|gB`| +|b | p Na&A$ ` / Hx/ap&/ Hx/`/ Hx/aT&/ Hx/`/ Hx/*Pa6&/ Hx/*P`/ B/*a&/ B/*`&9 9$Թ`r 9&$9`X&9R"CC: &$9S"BC* $`(/ Hx/*a&/ Hx/*aL$// /+ |/aJg // /+ |/aJVIDL |N^NuNVH0 n"n $("(pvf vgHyaJB`pvf& vf y/0 /0 Hy`@f 4/ y/0 Hy ` / y/0 Hy/9vaB/9vaL N^NuNVHn/. aPOrfHyaB`&Hn/.arg".ಮ]ID`pN^NuNVH0 $n$. "*g pvf /HyB`* y"p "*g pvf/Hyd/a>` y/0 / a8L N^NuNVH< n ("&(g pzf/. Hy/a` y(0 Jfʶbf#`//9Ra$POff@Hy/a`$POf Hy`B///9Ra JfRHy` JfDHy/a$POg9BE///9RaJf Hy`##n` fbf#`//9Va$POff6Hy/a$POg///9Va JfLHy`XJf@Hy/aV$POgL9BE///9VaJfHy`##r`HyaB`pL8&n"n n$n*.(.`"B$f fglp|g&|f&////aRJg//Hx/ `////a&Jg// |// ` B$ff`$A"ffp|fJ&p|f Jf8///`bg* K c$/HyHy(aHyaB`< "|&S|g&XKQBCSd//// a\Jg L|N^NuNVH ".ptf /HyEv/a@ ` tgB` y 0 LN^NuNVH 0 n". "yvfJEXH"fg &A"ffptf* XH` A"ffgfBp`BL N^NuNVH><$n&n (n(.*.`&C&ff`(B$f fg*// a6POJg//B/9vaܖPO// `DgP/a @XOJg:$ JgCB$ |$Jf$/// /aJfH`HffHyaB`,g/Hy/a`/Hy/a` L<|N^NuNVH0<"n(n $n" &IXI l&fh"$g^ vvg*/ Hy/ad`HHyM/ Hx/ a$B`08d"K#MPIPH` A"ffg"& L< N^NuNVH<8"n n $n h*f &IXI(XB& zzg/ HyZ/a` PH` A"f2f`,R8dI"PH*g"` A"ffg oHya$B`gpzg zg / Hy`6 Dg"` A"f fgpzfJg/ Hy/a`Hpzf z먂&`*/ Hy/a`Hy/ Hx/ aB` L lP lPRK!KPP $$( XJ$& XJ/ / //aJg y&P&"n " `BL<N^NuNVH08(n&n n$,pvg / HyI``"$l& g( vvg vf/ Hyl/ a`$f / Hy`Jo v樰d/ Hy/a`^E$dLfd@"kP\e Hy/ Hx/+PaFHxa kP kPC!IPP$pL N^NuNVH00$n"n &n"*pvg / Hy`$ j&g& vvg vf/ Hy/a`d"f / Hy+`DJo v樰d / HyT`,c / Hy`A,"*fc/ Hy/a~` pL N^NuNV/ .". y !@!At չ $.N^NuNqNV/. 9Ѐй/HyHy(aHyaHxaN^NuNVH E/a#/a"#t#BJgJVIDLN^NuNVH<0&.(. $C 9S* ʀ$E$ ԹĀgJ"yAJg:"yGAf Ag" R S€$Ag AJf"yAJfX 9"Ҁl Hya"yA#A#A#R yp`BL AB1b.&yN`V"yA&q( g" `&A"ffpxfJn x訴bⲹgg*n8e$Hy//.Hx/ aHx aj"yA 1r€xf$$$$`"$($$xx$"yA 1r€xf$$$$`"$($$xx$$$RLe$ L<N^NuNV ."g&g*f 92`2gf 9.`gf 96`BN^NuNVH0".$.pvf, vf$pvf k n /. ab`BL N^NuNVH?0*.&n $..// /a& gHn//a ~fB`~f" n"yA#/ //a6` 9(~ 9"ҀlHya~XO"n$yA%A%A%R yB// //EsN//G^//N Jg////NRpL N^NuNV"ngprgJ)g i#PgprgJ)g i#PgprgJ)g i#P9BA/)/)/)aXN^NuNVH8<&n&. .gpxgJ+g k'PgpxgJ+g k'PHn/+/+a xfR(y$n2gB"yA"qg,2BDBBHy9Hy(a/HyV`xf/Hyr/+a`~Jfh 9"Ҁl Hyal"n$yA%A%AK йP%R y n"yA 1L<N^NuNVH8<&n*n .$+gpxgJ+g k'PgpxgJ+g k'PfHy`fHyaxB`^Hn/+/+aL" xfR(y$n2gB"yA"qg,2BDBCHy9Hy(a&/ HyV`xf/ Hyr/+a0`xf n"yA"qgB`gpxg& xgee/ Hy/a`txf n"yA#`X 9"Ҁl Hya`"n$yA%A%A%R ypL<N^NuNVH00$n&n .$*gprgJ*g j%PgprgJ*g j%PHn/*/*a rg/ Hy/*a`t y$n2f"yA"qfB`Jgprg& rgee/ Hy/ah` n"yA#pL N^NuNVH ".$n .B//a^LN^NuNVH0$.&9//. /.a y Xչ L N^NuNVH0$n&n $ yIA0gCR yI1f"yIA0f $f2Rg*C<_ yICffBRf`8"yIA0g* $g$ ,g (g )gRg &p`#BL N^NuNVH0$n&n $ yIA0gCR yI1f"yIA0f _f:Rg2C<_ yICffRf&p`#BL N^NuNVH0$n&n $ yIA0gCR yI1f yIC1g,Rg$ yI1gRf&p`#BL N^NuNV. yIA0gCR yI1f yԲf Rp`BN^NuNVH00&n&. tHx)ENXOJf.Hx,NXOJg /Xa$XOgR// a$`B L N^NuNVH 0&nt&Hx]ENXOJfHx|NXOJg,BHnaXOJgHx]NJVIDJgV&`PHx,aXOJg>BHnaDXOJgHnaxXOJVIDJg/./.a&`B L N^NuNVH 0&ntHx[ENXOJgXHx]NXOJg &`BHnaXOJgHnaXOJVIDJg/./.a@&`HnHnaPOJfHnHnaTPOJfHnHnaPOJgHx(aXOJgdHna0$XOgj4|-J-nHnHna$POgH/././.a"@& n*A # Ro`B/./.a&`B L N^NuNV .# #HnaJg y 9`BN^NuNV y/0 /.aN^NuNVH88(n $n( g$ `$B$ff"9zvpйlHy az`f4eLAz"P_R 4/HyHyayCEz RRJfSz`deVAz"P_R"PaR /HyHyayZCEz RRJfSz`eAz"P_R"PbR /HyHyaxCEz RRJfSz`pxf: /HyHyaxCEz RRJfSz`f xf* y"p Ez RRJfSz`4fAz"P[R/ XJ/ aXJPO( g$ `$B$fff@Gz S,R/ XJ/ aXJPO( g$ `$B$ffgƴgAz"P|R/ / a~Az"P]`x y"p Gz SRJfAzS"P(Rv x訰c$Gz/ /2<a S,RPORb/ Hr<aAz"P)RLN^NuNVH0". . EzGv$//a RBR L N^NuNVH0". . EzGv$//a RBRB/aL N^NuNVH 0". . $.EzGv$//aD RBR/HyA/avlL N^NuNqNVH8 n"n$n".$. vƁp刀x„ĄR R"R$LN^NuNVH0".S$. S&.Sp䉄-B-C .".L N^NuNV/ $nHnHnHn/./. aZ$j%n%n%n pЊ$nN^NuNV'/ n ttf `$fL"ptf A#rN$ $8''&(B`%&%4%`%n%%%%'J'`+X+*&AX,,--*-T--../J/01^112v33f334>445&5~56(6|67777888:889 9R99:;;:;>t::.:Z:p:::;$<>==>>X<<<=:=VA A A A A A A A A A(A(A(?>>??8?N?d?z@@B@\@v@@A:A()**+++,,H,Z,v,,QILJMQ8Q8Q8Q8Q8Q8OIIRRRIRRRRRRRRRRPPRRRRRRRRRRRRRRRRRRRRIQ8KRRRRRRRRRRQrRRRfRRRRRRRQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRfRRRRRRRRRRRRRRGtI&Z[[2[N[n[[[[ Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatediteditor_programbp_statenoname.pleditor_fileversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u [wam.bp][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS]usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD]%s %s%s BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationexpected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s......finished loadingunable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directorysymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2string buffer (-i option) exceeded or infinite term%sbad arg in arithmetic operation%ld%-se%-ld %f@ D~vlbN2zrb(5 5  2 HW W W W `W *W W W W LU Q    HB   z ` : * 0 BtdFFlBVB@B*B\R222$2265j2 .X4PH1PB@,@$_P@@@tt4P4P4P@h4P\4PX1PR4PN1PH@.@"@@@@@ @ [P @ @ @ @ XP 1P @ @ |@ v@ Xt BVP <@ 0t VP @ t VP @ t VP @ |t ZVP T@ Ft $VP @ t VP @ t VP @ @ VP |@ l@ B@ OP @ 4P 4P 4P 4P 4P 4P @ @ Vt L@ "@@@@V4PP4P*@4P4P4P4Pt@4P4Pt\tR@@@@@@@@@@4P4P4P4P@p4Ph4PX@R4P@4P:4P2@&4P"4P4P4P4P 4P4P@4P@4P@4P@4P@4P@4P@4P@z4Pr@j4Pb@Z4PR@J4PB@64P.@&4P@4P@4P@4P@4P@4P@4P@4P@4P@4P~@v4Pn@b4PZ@R4PJ@@4P8@.4P&@ @@4P@|4PL1PF@"t4P1P@;P1Pz@b@X@<t1P@1P@@@@4Pd1PTt>tfXL2zj2d<hR@F1P@@ePt;PdPt@@ePt4PdPeP;Pl;P^4PT4PH;P<;P,t;P;PePt@1P@ePtfPjfP^@RgPHtBfP4fPgPfPtePdPt;PtAAAAJA0@@@@`@L@???|?j?T?>?>>>b>===D="=<4A*@A"@?@>4P>@=f4P=X4P=@<4P<4P;@:@4P:84P84P84P7z@7N@7@64P34P24P24P24P24P24P24P2@2.4P24P14P0@-4P,4P,4P,@,4P,4P,4P+@+@+ 4P*@*^4P*X4P*4@*.4P)4P)4P)*4P)4P'B@'8@&2@#@"@!@ @@b@@\@@X4PJ4P4P4P4P4P4P4Pf1P`@@@4P4P4Pj@4P4P4Pv4P2@4P1P@l@6@@v@@@p4Pj4PF@*fP&4P @4P4P4PnP4PeP4PfP4P@XXxXdWW5WW2Wb2WVVVbVPV UUUUUxUdU>UUTT2TT^WTSSSS~RQQ^PIItINI@II2H`GGzFFFFEEXED2E"2D2DCCvC*AX4@X,PX@X@X PW4PW@W@W1PW@W\1PWV@V4PV|@Vv@Vn@U4PUtUr@U^@UV@UN@U6@T4PT@T1PT@T@T@Td4PTT@T64PT,4PSx4PSf4PSP@SJ@SB@S:@S44PS$PS@R@RR@RPR@R@R@Rh@R,@Q@Q4PQ@Q@Qt@Q:@P@P,@P @O@O@O@Oh@O<@O@N@N@Nb@N4@M@M@M@M|@MN@L@L@L@Lr@L"@L@K@K@K@KP@K@J@J@Jz@JJ@I@I@I@I@I4PI@In@I\4PI:@I(@I@I@H1PH@H@H@H@Ht@Hj@HZ@HT@H>@H@G@G4PG@G@G@G4PG@G4PG4PGj@GL4PFPFpPF0PEPEt@E>1PE8@E1PE@E@D1PD@D;PD@Dh4PD^4PD"PD4PBNPAPAPAPrrNqqqqNppppooo"njnmmmlk.jiliVi(hhfgggjgXg>g fffe5eeFe:2dddcccRjbb5bFb>aaaaavafa<a ```v`b`:_____p_V_^^^^^J^]]r]`]L]0]5\\T\4\\[x[Z[<[ [ZJZ0YYYdYTY>YXr@r4Pr@r@r@rx@r`@rF@r@q@qz@qb@qF@q@p4Pp4Ppv@pP4Pp 4Pp4Po@o4Po@o04Po@n@n@mt@m @l@k @j@i^@iN@i @h@h@h^@g@g@g4Pgb@gP@g8@g4Pf4Pf4PfV4Pf 4Pf4Pe4Pe;Pe4Pe@e@@e41Pe.@c4Pc4Pc@;Pb;Pbz@bl4Pb64Pb,;Pa@a4Pa4Pa4Pa4Pa4Pa4Pa4Pa4Pa4Pa4Pa4Pa4Pa4Pa|4Pap4Pa`4PaZ4PaT4PaH4Pa&4Pa4Pa4Pa4Pa4P`4P`@`4P`p4P`\@`N4P`2@_@_4P_4P_@_4P_4P_@_@_4P_h@_`4P_P4P_D4P_@4P_84P_&4P_ 4P_@_4P^4P^@^@^4P^@^@^4P^4P^t4P^p4P^h4P^X;P^B@];P]@];P]@]Z@]*4P]4P]@];P\@\;P\@\;P\@[nP[t[nP[eP[t[eP[fP[gP[t[gP[fP[4PZ@ZB@Z&;PZ@Y;PY@Y@YJ;PY6@X4PX@X4PX@dH~~Z}}2}}n||d|B2{{zzzFzyyxdxZvu&t6s^sPs6s,s 2P@4P|PlPZ@~P~nP~P~@~nP~|t~lP~R@~4P~P}@}@}1P}@}4P}P}P}h@}X@|P|P|nP|P|P|@|~nP|pt|Z@|J@|<1P|6@|4P|P|P{j4Pz@z4Pz@zPznPzPzt@zlnPz^tzP@z2Py|4Pyt4Pyl4Pyd4Py\4PyT4PyL4PyD4Py<4Py44Py4Pyty4Px4Px4Px4Px4PxPx4Px4Px4Px4PxnPxJ@x.4PwPw4Pw4PwPwPwtw"nPw twPwPvtvPvtvPvPvtv~@v>Pv6tv,tv&nPvPuPutuPututunPuZPuLtu @tPtttPtPtnPtttbPt\nPt<Pt0@t(nPttt PstsPsPsnPstsvPsnnPsfPsVPsHts&@s1Ps@s nPsnP2~H8DF555H5 NbRB04@r4Pl4P,4P&4P4P4P4P4Px4Pf4P\;PJ4P24P*4P"4P4P4P4P4P4P4Pz;Pd4PR4PL@@@:@ 4P4P@@@4P4P4P@@@Px4PpPf4PT4PN@B@<@$4P@t4P4P;P@@v@p@B4P(@r@h4P@@@@@PP@@@@n@f@XPN@<@6@0P"P@@@@@@P@P@@@zPlPb@\@:@0@(@P@@@P@P@@@P|Pr@l@J@B@:@$@2z5n $|bZDJ4P@`4P$4P4P@;P4P@@4Pv;P4PP@Z4P4P;P*4P@v@N4P4PT@04P4PP4PL@H@D@@@<@8@4@0@,@(@$@ @@@@@ @@@@$@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|@x@t@p@l@h@d@`@\@X@T@P@L@H@D@@@<@8@4@0@,@(@$@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|@x@t@p@l@h@d@`@\@X@T@P@L@H@D@@@<@8@4@0@,@(@$@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|@x@t@p@l@h@d@`@\@X@T@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@|@x@t@p@l@h@d@`@\@X@T@P@L@H@D@@@<@8@4@0@,@(@$@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|@x@t@p@l@h@d@`@\@X@T@P@L@H@D@@@<@8@4@0@,@(@$@ @@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|@x@t@p@l@h@d@`@\@X@T@P@L@H@D@@@<@8@4@0@,@(@ @@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|@x@t@p@l@h@d@`@\@X@T@P@L@H@D@@@<@8@4@0@,@(@$@ @@@@@0@j =tUe@ {&B3C@CS T +T /U$ XV W Ob e e   Z  J +Xfnt8L r"(1:G,T_jw"s2H^@As>+ 6 &E U[ ho   "  6XP  (0?JS[emt|v`bu6 J tJ,:(GlS[>k~nmRn"d8fnaZVcpq#|(~-{3\j;p:Hh Si^bRi]u^` `zg|ljjnol& T*$H1wN8XCYPYt]YfZXq~Cdt|G,SyX Zb]>$*18@HrWlFivrruy*yd* #(.4:BH_max_cputime_times_quiet_quietmes__iob_fprintf_bp_exit_g_sprintf_exit_bp_halt_warnmes_fatal_error_local_error_atomtable_link_halt_can_recover_overflow_by_hdef_string_new_func_hdef_hdef_int_make_constants_hdefaults_make_byte_array_calloc_make_char_array_make_hentry_make_atomtable_make_var_array_malloc_var_array_init_make_stack_init_common_mem_make_symtable_init_instr_len_hinit_add_engine_heap_safe_margin_init_engine_mem_is_engine_del_engine_create_engine_destroy_engine_free_init_random_srand_start_profiler_end_profiler_get_cmd_line_options_getopt_optarg_sscanf_optind_mes.0_bp_version_mes.1_startup_mes_c_interface_init_bp_root_wam_load_kernel_start_wam_signal_restart_orig_interp_run_bp_init_orig_wam_make_symtable_max_make_atomtable_atomtable_make_byte_array_atomstamp_newatom_make_char_array_newlex_lextable_insert_lex_strlen_fatal_error_sfull__iob_fprintf_warnmes_bp_halt_atomno_strcmp_g_atombak_new_func_unwind_trail_init_orig_wam_opcount_g_newlex_newatom_hcount_cputime_restart_orig_hbak_atombak_seen_told_default_start_point_hget_fatal_error_heap_or_bp_halt_warnmes_bp_halt_unify_overflow_by_bad_instr__iob_fprintf_exec_link_local_error_interp_from_bp_interp_bp_prolog_call_load_engine_is_engine_load_engine0_call_engine_ask_engine_answer_suspend_engine_multitask_engines_apply_link_halt_findall_store_heap_findall_load_heap_functor_name2list_shell_1_stats0_if0_fout_fflush_float_op_rand__filbuf__flsbuf_compare_setarg_change_arg_def_set_lval_symcat_dcg_connect_list2term_term2list_add_instr_older_file_see_tell_see_tell_at_seeing_telling_at_sread_sout_op0_det_append0_findall_lift_heap_copy_term_term_append_strip_cont0_dcg_tell_float_fun_float_fun2_input_float_write_float_hlist_unix_argv_unix_getenv_unix_access_unix_cd_unix_kill_quiet_create_engine_destroy_engine_can_recover_new_builtin_init_instr_len_make_byte_array_instr_len_get_one_int_isdigit_input_fun_new_func_link_switch_link_code_g_local_error_atomtable__iob_fprintf_hget_hset_insert_op_hdef_currpred_last_badcode_warnmes_prev_len_prev_prev_len_overflow_by_init_code_opcount_skip_header__filbuf_ungetc_loadoperator_sscanf_make_op_ii_load_file_fopen_quietmes_max_fclose_load_instr_array_fatal_error_sprintf_load_self_wam_bp_user_bp_load_kernel_stat_used_unix_argv_g_local_error_new_func_unix_getenv_atomtable_getenv_unix_access_access_unix_cd_chdir_unix_kill_stat_left_stats0_cputime_newlex_lextable_max_newatom_hcount_unify_symcat_warnmes_sprintf_older_file0_stat_older_file_see_tell_hget_fopen_hset_hdef_see_tell_at_fseek_seeing_telling_at_ftell_seen_told_fclose_fflush_shell_1_strcpy_system_add_instr_insert_op_ocompare_strcmp_compare_float_compare_functor__iob_fprintf_name2buf_list2buf_name2list_input_fun_det_append0_overflow_by_list2term_term2list_term_append_copy_term_copy_from_engine_findall_lift_heap_findall_store_heap_findall_load_heap_apply_strip_cont0_dcg_tell_bp_halt_dcg_connect_setarg_change_arg_bp_heap_top_bp_cons_hfull_hcount__iob_fprintf_warnmes_bp_halt_hinit_max_make_hentry_htable_make_byte_array_hstamp_hdef_hset_hget_hindex_hbak_hlist_g_overflow_by_op_class_valid_op_opcount_make_op_op0_lval_local_error_def_set_make_funcell_input_fun_make_term_bp_heap_top_match_sym_cursor__ctype__match_var_match_int_match_char_match_args_match_term_match_list_elements_g_bp_cons_sread0_sread_atomtable_ibuf.0_out_max_warnmes_sprintf_htable_swrite_sout_new_func_fout_fprintf_double_to_ints_ints_to_double_arith_err_mes_make_float_g_float_compare_warnmes_float_op_float_fun2_atomtable_pow_log_float_fun_floor_exp_sin_cos_tan_atan_asin_acos_input_float_sprintf_strtod_write_float_fprintf_main_init_bp_init_c_run_bp_max_cputime_times_quiet_quietmes__iob_fprintf_bp_exit_g_sprintf_exit_bp_halt_warnmes_fatal_error_local_error_atomtable_link_halt_can_recover_overflow_by_new_func_hdef_make_byte_array_calloc_make_char_array_make_hentry_make_atomtable_malloc_init_common_mem_make_symtable_init_instr_len_hinit_init_engine_mem_is_engine_create_engine_destroy_engine_free_init_random_srand_start_profiler_end_profiler_get_cmd_line_options_getopt_optarg_sscanf_optind_bp_version_startup_mes_c_interface_init_bp_load_kernel_start_wam_signal_restart_orig_interp_run_bp_init_orig_wam_atomstamp_newatom_newlex_lextable_strlen_sfull_strcmp_atombak_unwind_trail_opcount_hcount_hbak_seen_told_default_start_point_hget_heap_or_bp_halt_unify_bad_instr_exec_link_interp_from_bp_bp_prolog_call_load_engine_load_engine0_call_engine_ask_engine_answer_suspend_engine_multitask_engines_apply_findall_store_heap_findall_load_heap_functor_name2list_shell_1_stats0_if0_fout_fflush_float_op_rand__filbuf__flsbuf_compare_setarg_change_arg_def_set_lval_symcat_dcg_connect_list2term_term2list_add_instr_older_file_see_tell_see_tell_at_seeing_telling_at_sread_sout_op0_det_append0_findall_lift_heap_copy_term_term_append_strip_cont0_dcg_tell_float_fun_float_fun2_input_float_write_float_hlist_unix_argv_unix_getenv_unix_access_unix_cd_unix_kill_new_builtin_instr_len_isdigit_input_fun_hset_insert_op_init_code_ungetc_make_op_fopen_fclose_wam_bp_user_bp_stat_used_getenv_access_chdir_stat_left_older_file0_stat_fseek_ftell_strcpy_system_float_compare_copy_from_engine_bp_heap_top_bp_cons_hfull_htable_hstamp_hindex_op_class_valid_op__ctype__match_term_sread0_swrite_double_to_ints_ints_to_double_make_float_pow_log_floor_exp_sin_cos_tan_atan_asin_acos_strtod_main_init_cBinProlog3.45/bin/bp.68k.sun3100755 764 764 1060000 5764342376 14770 0ustar javierjavier  M$G"I#J"ga*HTHS/N"NP /NhX/NpNVH0HzHxHzN6-@Hx Hn/N< gAv`4 n f$<Ԯ ЮЮHzbHx/./:/:/HxN-@/././:x/:x/. Ю/N&/ .Ю/N Hz"HxHzNfP-@JfX`"Hx//:/:/.֮/NDA-H-y-zlHnHx nNPL N^Nu o Hx` oHxG` o HxI` oHxN@eNu/HPHxHxHxN@/|HxN@/usr/lib/ld.so/dev/zerocrt0: no /usr/lib/ld.so %crt0: /usr/lib/ld.so mapping failure crt0: no /dev/zero NxNV//HnN ."끒 @A"$L<,Ёv桐XO$.&.N^Nu 9rNuNqrm////Hy`NPOXONuNq Prolog execution %s(%ld). CPU time = %ld.%lds %s H< &/(/ N"n"L<bM"zꡔ"끒 BA"灐////HzE(/ N/ HzN".NhNqhalted//HzN#RPONuNqwarning: *** %s *** //HzHy`NPOXONuNqfatal error: *** %s *** //HzHy`NHxN#POPONuNq_%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? /"/ oJnxpf 4k/Hz`/Hz`tf /HzHy`NPOXO`* t/ y/0 HzHy`NPOPO// N#XOB$NuJNg HxN#XONuNq//N#N%XONuNq*** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s / o "oA " otm(// 1倐///1 HzHy`NN%$NuH0 &/$/B9/B// E7NXO.B/NXO.B/NXO.NPOPOL NuH0 $/"/B9/v/B// E7NXO.B/NXO.NPOPOL Nu[].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatH0>$/ &/$BHzBE7N#HxHz/N#HxHz!N#BHzN#BHz N#RBHzN#VBHzN#ZHxHzN# BHzN#HxHzN#HxHzN#HxHzN#BHzN#BHzN#"BHzN#&BHzN#*BHzN#.BHzN#BHzN#BHzN#BHzrN#BHzgN#BHz\N#BHzQN#BHzBN#BHz=N#BHz7N#BHz3NK2*#B#>Gdž#~MNJ#ǂBHzN#6IB////9"GNB////9&N$.HzN#:Bz#ǎ#ǒPOL| Nuediteditor_programbp_statenoname.pleditor_fileversion/ /BHzHzHzENPOXOJg6HzHzHzNPOXOJg HxYHzHzN&(POXOJVI$D $$_NuHx//NPONuNqHx//NPONuNqHx //NPONuNqHx//NPONuNq/$/ /NBXOo @ XHRn$Nu//N*` @C XONuNqH0 $o$/&/ / $%CoB`NJf /NXO%@ Ъ"偐%@%j%j %jB%o JVIDL Nucodeboardnot enough common memoryH00&oBHzHx/9/ EJNJWI$DN5(JfRNj /9N*$#F#JfRBHzHx/9HkNJfRHx/9vN*POJfRHxHx@NPOAǖ fR PYH#ǚXOBNJg N)JfvԃgHz N#BXO`pL Nuadd_engine: engine table full/"o"/ Aǚ 9ǖbHzN#BXO`(X yǚ i t i$/R!Bp$Nu /"<0|?쀲o l NuNqchoicetrailheapmessagesadd_engine failednot enough engine memoryH80&o(/$/$BHzHx//,HklErNJWI&DBHzHx/HkHNJfRBHzq/N,./Hk$NJfRBHzTHx/9HkNJfR//,//,/ N,JPOXOJfHz'`JgHz/N#BXO`pL Nu / yǖCǚbfpNuXHcBNuNqdel_engine: engine notfound/ /"yǖEǚb gXIcHzN#BXO` yǚ"Yp$_NuH> ,/*/ (/$&/(Hx$HxN$POfB`PBChA( $Rrl/Hx////N- JVIL|Nu/ / &o / N.XOJg*/+|EN/+XN/+4N/+N/ Np`B$_&_Nu /fN"r Ёfp /NXONuNqNuNuh:s:t:c:b:d:a:i:q:%u [wam.bp][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS]usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD]%s %s%s NVH08&n(n BEvgHz2/ / NPOXO gIve0; NL(VHnHz/9NPOXOJg .#`HnHz/9NPOXOJgh .#`ZHnHz/9NPOXOJg: .#`,HnHz_/9NPOXOJg .#`HnHz1/9NPOXOJg .#`HnHz/9NPOXOJgpЮv ep&.#`HnHz/9NPOXOJgrpЮv efp&.#`XHnHz/9NPOXOJg: .v #`,HnHza/9NPOXOJg#`JgRSfJg*Hz,Hz2HznHzHy`NHxN# 9ƸBo"4 L N^NuBinProlog %d.%02dHx-HxHzHyN <POPONuNqCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s <3*///90HzHzHzjHzBN2/HzHyN <(NuNqH< */(/$<#8dž#LNJN"#n//N/&N3T/HzlN"EB/N+<Jg //N' //N\POPOJfB`6BN/(/B/9/9/9/N- JVIL*o,,o0E$$$(d&JYJ(JYJ`g(B$g`g &C&ggpfdfetprf rg"B"`"B"d"-P\e HzP/ Hx/N%Hx N# mP XP`fxȃfXrf rg"C"`"C"d@"-P\e Hz/ Hx/N%Hx N# mP XP`gB`rfrge Hz/ Hx/ N%Hx N#d>"mP\eHz/ // N%HxN# mP mPC!IPP&XJ C$Ћ$Sgl GAXJ$$YKYHSf`NpL|Nu*** bad instruction: [%lu] *** o"/HzHy`NHxN#POPONuNqundefined in EXEC//&/ //9N$POf//Hz/N$POXO $&NuH8&o k|'kXP(k4E C"%IXI%yp!Yf!I!kP / //// / NB0JWIDLNu//N9,/N*XOJfB` r j ($_Nuanswer: bad engine typeH8"o"/$/&/ i xeT0; N8L$l.8 ix ` ix `H ix ` ix `4#A,#Bt i!C `"/ Hzn i/N$HxN#POPOBLNu*** suspend_engine: %ld bad engine type %d /"o"/ i tg&// HzHy`NHxN#B`t #A,#ot i!o $NuH00$/n$<@AǚCǖ"bB`&QXKb"H$S j rfr XKc&yǖXKBSrgV$S j rgrf / N>*XOJf j rfr! ǚf JgB&yǖXKQBBSdpL Nuunexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationH<>(ot*ox&o|,oBh/Kd(  b'0; N\p4l f F N2F |  $* X  x"B *n P   $ V rN , R~DdVBZXP">Zx dL!, !J#  6  l "#z#N##"2""d"#''''''''''"'"'"%X$,$b$$$%%&%&2&L&`&&'2'~:Lfp~Jhg z)h`:* z)` lJhg./////p z/4N9POPOJgXhXK`2 z*` z$t* g$ `$fg $B$gflBhdN o"hP o\e(Hz4//Hx o/(PN%Hx N#"o/iPT oT XP$" PcY*A`f`* z)XMPK`d"z)`*"z))` >////4 z/4N9POPOJgX`"z)(+")`~Jhg z)h ohXH)` z)*E)$`Jhg&/////p z/4N9POPOJg` z$M$)$`Jhg>/////p z/4ENPOPOJg|/// opXH//4N`: z*`LJhg: z)h/// opXH//4N9POPOJgPh` z)*+tPM`|Jhg ohXh$P* g$ `$frg $B$gf^$d o"hP o\e(Hz//Hx o/(PN%Hx N#"o/iPP oP XP`fZ` z$t$*`Hz@`"4 z$t* g$ `$frg $B$gf^$dL o"hP o\e(Hz//Hx o/(PN%Hx N#"o/iPL oL XP`f` z)` odRH*`,od`$l* g $ `g $B$g,BSN`&k* g/// N<&@POJg /Nd o8e` d/ // //N>*@POPOJf!&V`&k/Nd"o8d .$l* g$ `$fg $B$gg //+N&@POJgXJ/Jh`&k/Nd o8d $l* g$ `$fg $B$gg/kX oXgPKPK`"oX() zA)C)PJXJ/Jh oXG ` z$t* g$ `$fg $B$gfBhdN o"hP o\e(Hz//Hx o/(PN%Hx N#"o/iPH oH XP$" PcY*A*(+ z+tE)$``f@/Jh(+///Hj z/4N9POPOJgA)` z$t* g$ `$fg $B$gfBhdN o"hP o\e(Hz//Hx o/(PN%Hx N#"o/iPD oD XP$" PcY*A*(+ z+t`\fF/Jh(+///Hj z/4N9POPOJg` z$t* g$ `$fg $B$gfBhdN o"hP o\e(Hz//Hx o/(PN%Hx N#"o/iP@ o@ XP$" PcY*A$M$(+ z)$E)$`hfH(+ zA)C)` z$t* g$ `$fg $B$gflBhdN o"hP o\e(Hz//Hx o/(PN%Hx N#"o/iP< o< XP$" PcY*A`~f~/Jh(+ zA)///Hj/4N9POPOJgFPJXJ/JhPKXK`* z)(+E )$E)$`* z)(+ +tE)$`* z)(+ +t`* z)(+E ` z$t$$M$(+ z)$E)$`~ z$t$*(+ z+tE)$`N z$t$*(+ z+t`" z$t$$M$(+ z)$+tPMXMPKXK`&k/Nd o8d($z oeHz//Hx/` g -YfM, -M"o-iP,`$z,/. o/(PN8H"o#@P*n"p ЁPOJg )Yf/NdM, `~$z/. o/(PN8H"o#@P*n"p ЁPOJg )Yf/Nd`8Hz`Hz$`Jhg$z ohA,/Hh`>$z$M K,SJg(E, $YJSJf`$z D) `$z)B$t* f"`g $B$gpzf zg)J`)B`$t* f"`g $B$gpzf zg)J`)B z$t* f"`g $B$gpzf zg)J`<)B`4&z$t* g D) `g $B$g"Dpzf zg)`)`&z*"D))XM`$l* g $ `g $B$g//9N&@(zPOJf /9`pJg2 Sg )Yf$2Lpzf zgEL$ )L/Nd o8el`$l* g $ `g $B$g(z"R 렂//9N&@POJf /9`)LSg2 Sg )Yf$2Lpzf zgEL$ )L/Nd o8e`R$+//9EN&@POJf&//// / ND*@/9/9N&@/Nd"o8etHz//Hx/ N%N%POPO`//N8`x o/h8"o8 g.!M,!Nt/h4 o4!K"o/iXz! oX B`HxNN9,&@/Kh"o,i|#iXP o h4I K*)MXM)ypXO-Yf-M"o-iP,`$+/////lHk/ / BN*@"o,itJg o&hx`^HzN#`/// / N**@POXOJf~Hz`p//// / N*@POPOJgZ)l`///Hl HlE/ / ND*@Jg($`///HlE/ / N*@Jg$ `v/ N )l` //// / N@POPOJg)l`@"o#i`2//// / / N*@Jg/9 /9N&@PO`0/9ǂ///N`HzEǂ/N/NXKPOXO`$T* g$ `$f(g $B$gf`$T* g$ `$fxg $B$gg`^$T* g $ `g $B$gpzg6`$T* g $ `g $B$gpgzg zg`v$T* g $ `g $B$g" //9NPOJf`(&,$,rƒp倂zg^$M//*// N*@POPOJgg&/// z/4/ N9POPOJfD` z)`2 "Ёvg/// z/4/` z)`&,$,rƒp倂zg:$M//*// N*@POPOJg:fP z)` "䁐vg/// z/4/`( z)`l&,$,rƒp倂zg:$M//*// N*@POPOJgf z)` "Lvg/// z/4/` z)`&,$,rƒp倂zg:$M//*// N*@POPOJgf2 z)` "LAvg/// z/4/` z)`Lpzf ,f//HzN/,`r&,$,rƒp倂zg:$M//*// N*@POPOJghf~ z)` "LAvg/// z/4/`T z)`$M/,/,*// N*@POPOJgf z)`Zg$/// z/4Nzz/`N"zzz)`$y~*g jB`(Sk y~"hBR`/9~NXO&g/// z/4 z/`^"z z)`$,pzg //Hz` yǂSk yǂ"h R`^$yǂJ*l@ D l6 j  g yǂR`*/9ǂ yǂ hB/` /9ǂ%/NPO`&,$,rƒp倂zg"//// NPOPOJg@`辴o6`&,$,rƒp倂zg"//// NPOPOJg`xl`n&,$,rƒp倂zg"//// NPOPOJg`2m`(&,$,rƒp倂zg"//// NPOPOJgn`촃nd`&,$,rƒp倂zg"//// NPOPOJg(`禴f`&,$,rƒp倂zg"//// NPOPOJg``g`V&,$,rƒp倂zf "vg/// z/4/` z)`&,$,rƒp倂zfb "vg/// z/4/`f z)`&,$,rƒp倂zf zvg/// z/4/` z)`X&,$,rƒp倂zf zvg/// z/4/` z)`&,$,rƒp倂zfh zvg/// z/4/`p z)`&,$,rƒp倂zf Fzvg/// z/4/` z)``HlHlNrAV$0 POg/// z/4/` z)`$,pzg //HzK`J&$l zgzgj zg`$f //Hz7`Jo zꨰd//Hz>/N$&VPOXO`E<f8 z)`//// NPOXOJg`r//// NTPOXOJg`VHx/// NPOXOJg`8)yHx/// NPOXOJg`pg zgJ,g l)Ppg zgJ,g l)P/,/,N$POgBg8g/// z/4/`L z)`Hx/// N$POXOgg/// z/4/` z)`L/// Nd$POgg/// z/4/` z)`//// / N@*@POPOJgpg/// z/4/` z)`$M/// / Nz*@POXOJg*f@ z)`$M/// / N*@POXOJgf z)`d tJg/// z/4/` z)`0/// NdPOJg`/// NPOJg` ,f$9>`$9Bg/// z/4/`| z)`/// NPOJg*` ,/NXKXO`/// NPOJg`z/ N$XOg/// z/4/` z)`D ,f2$,pzf zf// N$POg*BXM`///,Nv$POg/// z/4/` z)`/// NPOJg8`$M/// / N*@POXOJgf. z)`/// / N**@POXOJg`f$,pgzg| zgt ,f0// o/(8/ // NF$@JfHz`$ *J``ݼ$M/// / N*@POXOJfHzc`f. z)`݄ 9ǎtg/// z/4/` z)`N/// N$POgg/// z/4/` z)`/// N$POgzg/// z/4/` z)`/// N2POJg<`ܺ/// NPOJg$`ܢ/// NPOJg `܊N"$g/// z/4/` z)`X$l* f$dd o"hP o\e(Hz//Hx o/(PN%HxN#"o/iP, o, /iP(A"o(#H"oPP$` ,/ ,/ ,///N.^$POPOg(Rg/// z/4/`: z)`~ lSH/N.XOJg`d/ N>XOJg`P"lSI/ N>j$@XOJg߶g&/// z/4/ N9POPOJf`ߊ z)`$,pzfl&/N?XOJgX` ,$// // //N?Jg o*h,,ht/h$"o$&i`ڔHzh`HzN%*XO`p/// // / N*@Jg$,g&/// z/4/N9POPOJf4`ޮ z)`"/ / N9tPO`/ N;XO`&o0,o4d,<*<(<B  yǴB0*G~ge ~g`~gt~?f 9fJzg 3~@g"<Ap~fXHRM ~@f 3~@gn/HzHsN$tPOXOAmxEp~f. "~/ y/0 HzHy`NPOPO`0~f /Hz`./HzHy`NPOXOXJRAlHzHy`NPO`$+//9N(@POJf: @~A&/HzG" /N$POXO`n"†~ge~g~g`p_Fge ~g` g:` && yǴ( 3<@'<B(ɳ ` && yǴB("3 …A' B(ɳ ` @~1& yǴB(I 'L` @~1`, @~`"B/ NlPOJg @~` @~&`Hx/ NlPO`J/+E/N(@ yǴB(Ht /+/N @~(`Jf:|GepL|Nubad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_opH>0*/ &/$&o((/,$o0|#N j @ b ,0;ZN . , " " " " " " " " " " " " " 8 " " " " " " " " " " " " " " " " " " " "  " " " " " " " " " " . " " " " " " " " x " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "b// Nl&B9//*//9NC,9༑g y!jJgB,9༑gx j <gf y|g|g4`@ yQH` XHpЪd j < j` @| `|#Hz`Jf# j$< | j"<ÐX j X j | j`.f2Jf j @| j" | `0|#// HzHy`NHzN#B`#X`@Jf cHzN#BXO``// Nl"PO _g&B9//*//9NPOPOJf\/9/9N @ @| PO`6Jf`PJf j" | j" | `rJfR|fJ j$< (|f\(< (|+!FY j" || 쨂 |f j (|f (|*`|f(< (|!FY j" || 쨂 |f j (|f (|`hJff|f^ j$< (|f\(< (|#!FY j" || 쨂 |f j (|f (|"`|f(< (|'!FY j" || 쨂 |f j (|f (|&`|Jfzz jQJfd|f\ j(< (|f$< (|-!FY j" || 쨂 |f j (| f (|,`|3f (|7`|f (|8`|f$< (|!!FY j" || 쨂 |f j (| f (| `V|3f (|5`D|f^ (|6`0Jf.|f& j(< (|f$< (|%!FY j" || 쨂 |f j (| f (|$`|3f (|9`|f (|:`|f$< (|)!FY j" || 쨂 |f^ j (| f (|(` |3f (|;`|f, (|3^/3^/B3^/NJgv ?f Ѓ 3@g,B43//3Nl l XPOR Ѓ 3@f Ѓ03gj///HzHy`Nm>BB Њ/383/3/3/HzHy`NRJlHzN$.XOڃ3^/'f ///4HzEF/N/N"p`BLNusystemuserH0 &/BBHy8/HzENPOPOJg HxHy/HzNPOPOJVI$D L Nu//&/ $//N|XOJfB`Jf /NXO` //NPO$&Nu o"o A /rNuNqunix_argv's 1st arg must be integerunix_argv's 1st arg not in range/ o"o "(ptg/ Hz` kǎm/ Hz/N$POXO`B yǒ/0 N7PO$Nuunix_getenv's 1st arg must be a symbol/ o"(ptf tg// Hz/N$POXO`* y/0 NXOJgB/N7PO`B$Nuunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbol// o "o"(pvg/ Hz` $"(pvf vg/ Hz/N$POXO` / y/0 N POJWID$&Nuunix_cd's 1st arg must be a symbolunix_cd/1: bad directory// o &/$(prf rg/Hz`  y/0 N(XOJg/Hz/N$POXO`p$&Nuunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processH8 o(/$(prg/Hzn`4 (vƀrg /Hz/`/ /N0POJg/Hz/N$POXO` LNu o"o A 1rNuNqH<8$/ (o$$o((/, l *f"`g A"gpzf zg)H`)Apzfh ,zeZ0; N*FbN"&Ar$ `/ Hx/N&/ Hx/`/ Hx/N&/ Hx/`/ Hx/*PN&/ Hx/*P`/ B/*N&/ B/*`&9ǠǤ 9йǤ$Ǡ`l 9Ǩ& 9ؐǨ`& yǰRHA & ySHǰA $`(/ Hx/*N&/ Hx/*N$$// /, z/G9NPOPOJfB` // /, z/NPOPOJVIDL` f2f#NJǂ`/E&/N$PO6f,Hz/N$POg0///NPOXOJfDHz^`PJf:HzQ/N$POfB`DB9////NPOPOJfHz-`#ǂ#B`Hz&N#BXO`pL/G"/NA6POg>Jg///NPOXO`B9////NPOPO/9~NXO#dž~#2>`^EǂGNJ"g$/96/9B/9&N/NPOPO$#2B`/9ǂN` HzN#XO$_&_Nu/ o"(g `"A`g ""@ g y/0 EF/NP/NXPOXO$_Nu%ld/ /$o prf $9F */Hz/NPOXO` y$0 // *// */ */Nq.JVID$$_NuH<&/(/rƒVtĀzgr„VzzgfLpf$`@zf " `, y/0 /0 N$POf"z $Jop`JVIL0&o $o$`g&C&g`g $B$gp|g:f p|g:f/ / NPO`L//N"POf:p|f0 |g($v* X( Xe//Nr"POXXRJg L |Nuarity=%ld functor has bad arityH><&o("o, o0$o4*/8(/<`g "B$gpgt|g&|f*////I9NPOPOJg//Hx/ N`////I9NPOPOJg// |// N`g B$g`g $A"gp|f&p|f Jfp///`XJgd K c$/HzHy`NHzN#BPOPO`< "|&`&XK SJf//// N9POPOJfB` L<|Nu/ /"/ ptf /HzEF/N POXO` tgB` y 0 $$_NuH 0 o"/"yFEֲf@XH "fg &A"gptf( XH`g A"g`fBp`BL Nuboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2H><$o((o,&o0(/4*/8`g (C&g$fg &B$gg*// NPOJg//B/9FNlXO./ `DgP/N @XOJgV$ JgCB$ |$Jf$/// /N9POPOJf8B`6fHzN#BXO` /Hz/`/Hz/N$POXO` L<|Nubad constructor starts 1st arg of det_append/3det_append/3H0<"o(o $o$"&IXI l&fl"$gb vvg./ Hz/N$POXO`JHz/ Hx/ N%BPOPO`08d"K#MPIPH`g A"gg"& L< Nubad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2H0<"o o $o$ h&f(IXIGB  g / Hz/`PH`g8 A"g`,R8dK"PH&g "`g A"gg oHzN#BXO`pgvg vg / Hz/`Z K&g "`g A"gpg vfJg / Hz/`$pvf v砂(`./ Hz/N$POXO`Hz4/ Hx/ N%BPOPO` L< NuH< "o o"(((pzf&&< " h*fD$H fB`B$z"#@PIpoXH"#XPIRnJg"E #J`"#HPI" L$o$,o((o,*o0 yv&P$dJfd>",P\e Hz/ Hx/N%HxN# lP lPRK!KPP $$( XJ$& XJ/ / //N9POPOJg yv&P&, `BL|Nusetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityH08(o&o o $,pvg/ HzJ`L"$l vgvg vf / HzG/ `&$f/ HzY`Jo v樰d/ Hzh/N$POXO`^E$dLfd@"kP\e HzB/ Hx/ N%HxN# kP kPC!IPP$pL Nuchange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafeH00$o"o&o"*pvg/ Hz`v$ j vgvg vf / Hz/`P"f/ Hz `>Jo v樰d/ Hz`(c/ Hz9`A,"*fc/ HzA/N$POXO` pL Nu y !o!or ӹ NuNq%ld bytes, %s!!! hashing table (almost) full// yǰA /HzHy`NHzN#HxN#NuNq/ /E/N*8#Ǽ/N*"#Ǹt#ǰBPOJǼgJVID$$_Nu(75%)H< (/*/ ЅC"S$ā йǰ&ƁgD yǼ"ҁ ЂJ gD Ђ倸fg"R S$Āg"ҁ ЂJ f yǼ$BE* J fX 9"Ҁǰl Hz\N^XO"yǼ$BE* @### Rǰ yǸ'(p`BLhindexH88(/&/ &o$ Ѓ"9S"@ yǼI 倸fgj yǼI J f&B`\" ҹǰ 9S$Ā"$H R"@I @fggJf`HzZN^pXO` &p`&BLNuH>/ fHAԵd*yǸ(yǼ,H&Lɰ2dJg IǼPH)PKXKPIXIRJe`HAԵd<(yǸ"yǼ*H&IȰ2dJgSǰBBBPKXKPHXHRJeL|NuCOPY_KEYSH<>$o( o,pzf (("(pzgB`b&䃛ͻdJM֙&yǸ5b$ yǼJg 5b"yfB0b&I`J&p* g " `g &A"gtāzfJn zꨶbgJg"o08e"Hz//4Hx/ N%Hx N# yǼ 0r€zf $$$$`$*$$zz$ yǼ 0r€zf $$$$`$*$$zz$$$PLXLRMe$ L|:f /( /(/(N8//TPOXO`/9N#BXO`\B8p8R$ NuNV'H8 $n$.. n xxf `Jf"pxf @]"`&:fz/( /(/(N8//UPOXO B xxf `JfF"pxf @\"`<:f /( /(/(N8//TPOXO`/9N#BXO`BxЄxe0; N$.4>LZhv"`p(`f#`` `VB8 `~B8v `pB8h `bB8Z `T8@`8@I( `:B`6HnHnHn'tN$:%n%n%n pЊL. N^NuNV' H08&n n "("h$hpgvg vg(A"pvf@ vf6 y p  I vvf `Jf"pvf @]`&:fz/( /(/(N8//UPOXO J vvf `JfF"pvf @\"`<:f /( /(/(N8//TPOXO`/9N#BXO`Bvlg"vpfH't'uN&x//UPOPO`0'tEN//U'uN//T POPO`B`6HnHnHn'uN&:'n'n'n pЋL .0N^NuNV'H00$n n "("hpgvg vg&A"pvf vf y p  vvf `JfF"pvf @]"`<:f /) /)/)N8//TPOXO`/9N#BXO`BvЃv1e:0; N"000000000000000000000000000000000d00000000'tN0//TPO: prolog:tr_callExit: Redo: prolog:tr_if2prolog:tr_disj2prolog:tr_if1prolog:tr_goalprolog:tr_disj1prolog:tr_bodyCUTprolog:do_disj0prolog:do_if_then_elseprolog:do_disjprolog:do_conjundefined_predicateprolog:do_undefprolog:do_applyprolog:do_goalprolog:do_compiledprolog:do_bodyunbound_goal ; for more, otherwise prolog:user_actionprolog:another_solprolog:report_top_varsprolog:report_one_vargoaltopprolog:savetopprolog:nothingprolog:topcallprolog:report_answersprolog:topinterp?- prolog:topstepinit_io$endprolog:exec_run_time_commandsprolog:binpro_startprolog:l_magic2:- ->; ( , :- prolog:l_magic_nlprolog:l_magicprolog:l_clausesprolog:pp_clause0prolog:classify_other_tailprolog:classify_alpha_tailprolog:classify_name700prolog:w_operprolog:w_tailprolog:w_argsprolog:w_atomotherprolog:w_VARprolog:w_variableprolog:put_stringalphaquoteprolog:maybe_spaceprolog:maybe_parenpunctprolog:w_out126969492255248246223222216214192prolog:is_latin1_majprolog:is_latin1_min90122prolog:r_varcountprolog:r_digsprolog:r_digitsprolog:r_int! end_of_file just after full_stopprolog:is_specprolog:is_alpha_num! end_of_file in /*.. commentprolog:patch_slashprolog:more_string! end of file in: tokenprolog:r_symbolprolog:is_minprolog:is_numprolog:r_integerprolog:is_majprolog:r_lookup95prolog:r_nameprolog:r_stringprolog:r_fullstop1251241239391prolog:r_after_atomprolog:r_solidusprolog:is_terminator-1end_of_fileprolog:r_toks 99999prolog:display_tokenprolog:finish_syntax_error** SYNTAX ERROR: byte=syntax_errorprolog:display_listprolog:start_syntax_errorbracketvariableprolog:cant_follow_exprfollows10001100prolog:peepopprolog:exprtlprolog:prefix_is_atomprecedencewithcontextprefixlist|]|argumentsin,)anstartcannotstring}{(()prolog:r_list][prolog:after_prefix_op999applyprolog:exprtl0prolog:r_args(prolog:rtsprolog:ambigopprolog:infixopprolog:postfixopprolog:prefixopprolog:expectexpressionafterexpectedoperatorprolog:syntax_errorprolog:rtprolog:all_readprolog:r_and_checkprolog:portable_writeqprolog:portable_writeprolog:portable_printprolog:r_vars** warning singleton_variables, byte=>=> :-...prolog:melt_varnamesprolog:warn_singletons1prolog:r_termprolog:singletonsfile_not_foundprolog:see_a_fileprolog:find_file2bad file namelibraryprolog:find_file1unable_to_tell_atunable_to_see_atunable_to_tellunable_to_seeprolog:peval_iobinprologprolog:default_prologexpected_to_expandtry_edcg_expansion-->>prolog:dcg_CONJprolog:dcg_disj0prolog:dcg_term{}prolog:dcg_disjprolog:dcg_goal@@prolog:dcg_head:-prolog:dcg_conjprolog:dcg_bodydcg expansion error->prolog:dcg_rule-->prolog:try_dcg_expansionkillcdaccessno such environment variablegetenvargvargcprolog:unix_argvHOMEprolog:unix_cdprolog:append3prolog:near_matchpredmarkprolog:predicate_key0compiledbuilt_ininterpretedprolog:generate_a_predicateprolog:predicate_property0prolog:is_predicateST267911168prolog:float_minus101prolog:try_float_exp1eprolog:try_float_expboxprolog:try_floatculpritblackboard overflow, left onlyprolog:bb_put_1prolog:bb_put_backprolog:rmprolog:letprolog:valprolog:setprolog:defprolog:bb_failprolog:bb_gcprolog:bb_default_valprolog:$gteqprolog:$lesseqprolog:$noteqvariable_in_iserror_in_isin tab/1: should evaluate to an integerprolog:tab0prolog:make_lengthprolog:get_lengthprolog:general_appendprolog:append_bodyprolog:appendNprolog:det_appendprolog:term2dlistprolog:term2list$floatBP_PATH9798105108prolog:getenv_path99115103111114112121109prolog:compile_memprolog:see_or_failprolog:save_termprolog:numbervars$VARvarsprolog:are_sharedprolog:share_varssprolog:call_ifdefno meta_interpreter for undefined goalcall_ifdefprolog:std_expand_termprolog:portable_expand_term1200?-1199prolog:interactive0prolog:is_interactivenoprolog:is_builtin_varprolog:bucontprolog:is_builtin_nonvarunable_to_spy_onyes$assumed$firstyfpostfixopxffyprefixopfxyfxxfxinfixopxfyprolog:op_typeprolog:get_op010000opmarkprolog:get_opprolog:gensym_noprolog:is_publicbad or repeated declarationprolog:hide_atom0prolog:hide_atomprolog:public0currentshould_be_nonvar[]*** : >>> userprolog:portray_errorprettyprolog:error_messagebasicbboardhtablesymbolsstringscodetraillocal_stackglobal_stackruntime:Cset_c_traceset_c_thresholdstat_dictsavedmember_inth_memberphrasefalseotherwisenospyspyingspyspy_goalinit_gensymgensymis_publicpublicmodule_namemodule_predicatecurrent_modulemodulesis_modulemodulemodule_calllwritepatch_itshow_code0char_in_cmdith_clausetr_bodydo_bodygc_read_clausegc_readadd_truebootctracetmakekcmakekmakecmakemake0makemake_executable_unix_applmake_appldirlscurrent_user_filecovinotepadpicoemacstexteditedmy_editeditis_builtinopcurrent_opswritesreadflushsee_or_failexists_filefind_filemake_file_namefile_libraryfile_extension_listfile_search_pathtelling_attell_atseeing_atsee_attoldtellingtellseenseeingseettycwritelnttycwritettyprintttyprinttynlttyputttyoutttyinfast_writepp_termpp_clauseportray_clauseportraydisplayportable_displaywriteqprintwriteread_tokensread_clauseread_with_singletonswarn_singletonstop_read_termread_termreadnlput_codeget_codeis_prologtoplevelmainquietmeserrmesuser_errorvars_ofterm_charsnotfree_variables^setofbagofkeysortsortbb_elementbb_listbbis_dynamicis_assumed-:assumed_clauseassumedassumelassumei=>listingreconsultconsultdebugabolishclauseeraseinstanceretractallretractassertassertzassertadynamictracemeta_interpretersystemunixaproposhelpctimecurrent_predicatepredicate_propertyacosatanasintancossinexpsqrtlogpow:=:dcg_phraseletbb_change_argbb_letbb_rmbb_valbb_setbb_def=\==:=>==<><@>=@=<@>@<\====compareexprisgettabappend_disjappend_conjappendNcompoundnumberfloatatomgroundgc_callnumbervarsmake_cmdlength++det_appendmemberappendargnforall_but_at_leastfind_at_mosthas_fueldrop_at_leasttake_at_mostnth_answerfind_whileskip_whenskip_untilwhileallfindall_disjfindall_conjfindallfindall_workhorse\=\+repeat,;->=expand_termmetatruemetacallinteractivestatistics::-=..asmadd_conttermcatstrip_contiforincludecompile.!bu1174n_nop160n_builtinn_arithn_inlinebu_ctrin_head8584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111098arith765432in_bodybu0700 xfx :=700 xfx =:600 xfx <=950 xfy =>950 xfy -:600 xfx :=:900 yfx :1200 xfx ::-1150 fx module1150 fx public1150 fx dynamic1050 xfx @@1050 xfy ->900 fx nospy900 fx spy900 fy \+900 fy not700 xfx \=700 xfx =..700 xfx ==700 xfx \==700 xfx @<700 xfx @>700 xfx @=<700 xfx @>=500 fx \500 yfx \500 yfx /\500 yfx \/500 fx #500 yfx #400 yfx //400 yfx <<400 yfx >>300 xfx mod200 xfy ^300 fy ~700 xfx =:=700 xfx =\=700 xfx <700 xfx =<700 xfx >700 xfx >=660 xfy ++650 xfy .400 yfx *400 yfx /500 fx +500 yfx +500 fx -500 yfx -700 xfx =700 xfx is1200 fx :-1200 xfx :-1200 xfx -->1100 xfy ;1000 xfy ,if0profilebb_resetlist_asmstat0shellnamefunctorfindall_load_heapfindall_store_heaprestartabortcallhaltnew_builtinsuspend_enginemultitask_enginesask_engineload_enginedestroy_enginecreate_enginequietunix_killunix_cdunix_accessunix_getenvunix_argvunix_argcsetrefbb_opbb_getbb_putiso_lseekiso_eofiso_peek_byteiso_get_byteiso_put_byteiso_read_termiso_write_termiso_close_streamiso_open_streamdcg_tellingdcg_telldcg_valdcg_defstrip_cont0write_floatinput_floatfloat_funfloat_fun2term_appendop0string_opsee_tell_atseeing_telling_atseen_toldsee_tellseeing_tellingolder_filebb_list0copy_termdet_append0lift_heapadd_instrself_infoterm2listlist2termdcg_connectsymcatlvalvalsetrmdefchange_argsetargargcompare0\#\//\>><<arith_difarith_eqgreater_eqless_eqgreaterless0putget0random///mod*-1+is_compiledatomicintegernonvarvarcnlcwrite_failtrue?$cut$bin_cutNV.!.W'w /T. &֕ 0l"9T.T"'ta.WPO`p.T.T ?l .U#9U#.U" `8.U9W 9W.U` .V.V.T#9T@9T89T09T(9T 9T#.T"` @ m* @P@l9U.U  9V#@9V"8#9V"0#9V"(#9V" #9V"#9V" #.v.V9Vh.v` A lV9T.T 9U#X9U"P#9U"H#9U"#9U(h.u`j C`l9U.U9Uh.u`D m& n 0lg.V.V(`P 9h-yl@-@Jf9V`.V` .T9T(`` r**@)HBl, ?Jf*.U.U#.T9U".T`(.V.V#.U9V".U#f9W#H9W"`09TX9TP9TH9TJfA 0WhA0Wh`A 0WhA0Wh'w.? L0"N^NuNVpN^Nu?պ/n??7&?ܽ?bl?ЇO?Ɂ>j?ԉ3?ǹ{K[?Ȱn⇜(?ɦl&?ʜ#@2y?ːR`?̄t.n?w W6?jM?[u,?Нŗcb?ы x?x7 WF?bw7?J6¯ ?0QJ? ?A?`Kc?زM9J%?ٌEMk?d#?:\l? N?SC,P?ݬgaO?@ T?e~0?%]ҩ? ?╎Y01?E7???䗏&?8{?Չ?mf9#?xF4?k]1^?зM?W?!TD-?%%?O8d?pC?|Wo?nWO ?$DU?|A?s ҁ?.4?Ng'z?GS?ӏ,[?9?K ?_@0?D?b6?pU:%?Am? myjM?O ?jl3S?PG?kz`?-pA?[TsQ?L?e?x ?g&?D?6?oo3?PRN`?ڽ?s%HW?Ʃ+?AMD L|?`,sj?}c?!:PS?0p?nj~ޱ?{e?C_? @1?^ ?$j!Lvv mq <|d'UlzcA<46WoG};Nh73XNI\*t&3'jÿTʥc ȥ*Iſ>0緍D5#2Xט3EԱ.B92.&xW=#ſP(ib4ے@j"8ؿRw31ib4ے'|ϙly7e^{ʓ<#eQ¿ſ@kT=e'|'cF3^]YI] ~:CA]DD VXXG?x3? 0b?ҊkL?'n*?•R#?0p?RZV?̏ǚ"?Ϲm^>+?g\?1?a^?ѽX ?9?ؚ3B[?#쿘L?D{̏c?܏ǚ"?jġ?_?%R?r%*?T?_^p@?y^?3O?V*?Fr?]>?*-&[ū?@L5-?.B9?*Wm? P? ]PVY?#쿘L?ӗ78?$?٦7O?R@x?Qz?T ?\jȈ?/p4?Sj?},?=a-m?z ?_^p@?;qcÀ?< ?Wh޳?)Pw?vZ9?h? Q.=`?SЈ? $W?(2?%sVO?iU%t@ӿ@Ӟ}@ Q.=`@48.@]?@+1Q@@ND@3@׻@A @d o@t5@9MH@V"@=Ҝ@RI?@.B9@mH5*U@kz@ɓQeJ@{:k@W.|9A@6,@hZ@B{s@)ԅ@[.o@_VV]@tw=@z;(@ }ѳ@ Aob;<7eN<>1E;־񫼍w\<<< wx;.`< :^}+9}iмAW;9?"CƼCjW?#7x͹^<B\Xּ-yBa $XOJfr"`-|Hnr-A-y>-yBa XOJfr"`-|r-A/:/:HxaO Hn-A-@a XOJfr"`-| r-A/:/:HxaO Hn-A-@a jXOJfNr"`B-|r-A/:T/:LBaVO Hn-A-@a *XOJfHxHy`-|#r-A/:/:Hxa O Hn-A-@a XOJfHxHy&`-|8r-A/:/:BaO Hn-A-@a XOJf|HxHy;`\-|Kr-A/:r/:jHxazO Hn-A-@a NXOJf2HxHyN`-|`r-A/:0/:(Ba2O Hn-A-@a XOJfHxHyc`-|sr-A/:/:HxaO Hn-A-@aXOJfHxHyv`-|Hnr-A-y>-yBa~XOJfbr"`V-|r-A/:`/:XBajO Hn-A-@a>XOJf"HxHy`-|r-A/: /:Ba"O Hn-A-@aXOJfHxHy`-|r-A/:/:HxaO Hn-A-@aXOJfHxHy`p-|r-A/:/:BaO Hn-A-@adXOJfHHxHy`(-|r-A/:>/:6HxaFO Hn-A-@aXOJfHxHy`-|Hnr-A-z-zaXOJfHxHy `-|#r-A-y>-yB'w "g>8484-yB'w "gx8n -yB@-@HnaXOJfHxHy/`-|Gr-A/:/:HxaO Hn-A-@aXOJfHx HyK`-|lr-A'w"9B 9>Jj _-@-AHnatXOJfXr"`N-|qr-A/:Z/:RHxabO Hn-A-@a8XOJfHxHyvHxa†r!#. .".N^Nu?NVH. r~ gA gA ŕ.g4""G~ gA gA ŕ. p Bt̂$r#鉀Jg B"# π t$`f~ Br#  t"#  'wt"9B$ 9>Jj _//W`z'w"9z 9vJj _//TJj _//W`'w"9z 9vJj _//V9V#v`f| Br#  t"#  'wt"92$ 9.Jj _//W`69V>9V>` .W .rb0; N P'w. L"N^NuNVpN^NuNVB/. /.az-@-AN^NuNVHx/. /.a\-@-AN^NuNVHx/. /.a>-@-AN^NuNVHx/. /.a n !A n  !y$N^NuNVH.?.W'w"  ]f9w ` (.'w."'w| Ά/VAXJ0W#xAP0W"xAH#0W"xA@#0W"xA8#0W"xA0#0W"x#9Vg.T.T#(9W 9V9U( `>9W 9V9T`9T(gD`<A0V#xA0V"xA#0V"xA##0V"xA#0V"xA#0V"xAX0TxAP0TxAH0TxA@0TxA80TxA00Tx~#9VfB#9W$9T9U( `F9W$9T((9T`(9T(f^Jf .V.V`.T.U.T.U.U ( `Jf .T .U( `^.U#.T.U" #.U( `"Jg.T.T#(9W$9T9U( `F9W$9T((9T`(9T(.WJf.U( `V.V.T.T(`.9w `H9t `69u `$~g~g~g9w 'w.? L"N^NuNVpN^NuNVH<.?:| ?If*. ./. /W " @B@H@H~ʇ@g  @f //N[~L|.n~` D"ҁЁC.wI*||͔-n-n.W.T-n-n.T(.w-y8-y< f*|-y@-yD f*|-yH-yL|m",5Ahro5@h9T#9V K|@9V -@9T# .t.T-@.T9T# .t-@ .T.T.t9T# .t-@.T.T.t9T89W8T.T.T#.T.t@.T.T#.T.T.tP`Jo.T# "` .T#.T.t@.T#.T#.T.T.tP.T.T`H|m~o2.T #.t.T.T`.T# ".T#".t.T #.T"`$.T.T#".t@.T#".T.T.t.T#.T"#.T.T#.t.T.T.tP.T".t.T#.T"9V2i@sBgCDEFkGHeIoJKMPQRSTpUWXZ\}]`bycdefghijkl~mopqrsuvwxyz}~ ( 9)~P/b";BrK@S"_>"ft#Roy5(~#*L  Ƹ/L/J j +<8  3T%&y,28G.H.^Wz-bI"kZ4s!7}%*F(k*8#4+*$j3/("\R %% #2<"*26#;B/X.8^"h/*y$f$.0M8z-  dǠ Ǥ687 iǨ$ Ǭ&d@ vǰ#*7<^;GQ\gmj>ftz>j<zDZ> L8H!E*4B08ED?LQ([?n{B}pXFdkT v+*=VD{lzM9q. >ǴM| l+83A;tBKQHZbc0k|r}"*PN|D$!I`e|8 HǸl^4' Ǽ/90BPNV]F^nd%tf7ZC C<e8CZ &xp0bI(A2x6(/= $h1h>E[L/S1hY1$`1:fN/Pl<0lr \vI C Cx0\>$^8J\[\Z [Z }\r D_ '[ .t 7 q F  U fybp ybP ( cx "c c d  |cH c` c "c c c b c Ƽ_etext_edata_endstart_exit__DYNAMIC_mainstart_float__exit_environMswitchf68881_used_quiet_bp_exit_make_symtable_make_atomtable_atomtable_max_optind_end_profiler_start_profiler_optarg_init_instr_len_init_common_mem_restart_orig_sscanf_fprintf_startup_mes_overflow_by_free_bp_version_destroy_engine_create_engine_is_engine_cputime_run_bp_new_func_can_recover_sprintf_srand_calloc_make_hentry_start_wam_make_char_array_hinit_init_bp_init_random_load_kernel_hdef_g_link_halt_warnmes_signal_interp_malloc_getopt_bp_halt_times_get_cmd_line_options__iob_quietmes_make_byte_array_local_error_fatal_error_c_interface_init_orig_wam_init_engine_mem_newlex_lextable_sfull_atombak_newatom_strcmp_strlen_atomstamp_symcat_dcg_connect_hcount_findall_store_heap_op0_bad_instr_see_tell_term2list_unix_argv_lval_findall_load_heap_unix_cd_seeing_telling_at_load_engine0__flsbuf_dcg_tell_if0_ask_engine_bp_prolog_call_list2term_strip_cont0_det_append0_answer_fflush_unwind_trail_findall_lift_heap_bp_apply_new_builtin_set_float_op_multitask_engines_write_float_opcount_def_older_file_sread_term_append_copy_term_add_instr_change_arg_shell_1_seen_told_sout_float_fun_see_tell_at_interp_from_exec_link_unix_access_compare_hbak__filbuf_hlist_input_float_default_start_point_heap_or_bp_halt_fout_unix_getenv_stats0_suspend_engine_call_engine_load_engine_setarg_unix_kill_functor_float_fun2_hget_rand_name2list_unify_insert_op_instr_len_init_code_input_fun_wam_bp_ungetc_fopen_make_op_hset_user_bp_fclose_isdigit_ftell_stat_used_bp_heap_top_system_older_file0_copy_from_engine_chdir_stat_left_kill_float_compare_access_strcpy_stat_bp_cons_getenv_fseek_hindex_hstamp_hfull_op_class_htable_valid_op__ctype__match_term_sread0_swrite_atof_double_to_ints_make_float_log_asin_acos_atan_sin_cos_ints_to_double_tan_pow_exp_floor___main_init_c_user_bp_size_wam_bp_size_atan2_SVID_libm_err__tbl_atan_hi__tbl_atan_lo__tbl_log_hi__tbl_log_loMnintd_ilogb_anint_rint_irint_nint_aint_ceil_fp_precisionManintd_fp_pi_write_fp_direction_matherr_fp_accrued_exceptions_errno_sincos_isnormal_scalbn_nextafter_isnan_iszero_copysign_finite_issubnormal_signbit_isinf_on_exit___CTOR_LIST_____DTOR_LIST____exit_dummy_ref___do_global_ctors___do_global_dtors__exit_dummy_decl_ispunct_isgraph_isascii_toascii__mb_cur_max_isxdigit_isspace_isalnum_isupper_iscntrl_isprint_isalpha_islower_opterr/usr/local/gnu/lib/gcc-lib/m68k-sun-sunos4.1.1/2.6.2:/usr/local/gnu/lib:/usr/lib/f68881c̀cc΀cdl $ccT\`DE8M@?Y4 (Naaaaaaaaaa a a a a aa~avanafa^aVaNaFa>a6a.a&aaaaaa a!a"a#@(#)Mcrt1.s 1.6 88/02/08 Copyr 1985 Sun Micro@ xıįĪĨĠ(ǯ B B B B  B w B p B d B bJ` ^J` \J` XJ` UJ` SJ` LJ` GJ` CJA <J A 4J A ,J A !J A J A JA  J` J` J` J` J` J` J` J` JA ߰JA ۰JA ذJA ԰JA аJ` ˰J` İJ` J` J ` J!` J"` J#A J$A zJ%` pJ&` gJ'` \J(A MJ)` DJ*A :J+A (J,` J-A J.` J/A J0` J1` J2` J3` հJ4A ɰJ5` J6A J7` J8A J9` J:` J;A tJ<A fJ=` YJ>A LJ?` >J@` 6JAA ,JB` %JCA JD` JE` JFA JG` JH` JI` JJA ݰJKA ӰJLA ͰJM` JN` JOA JPA JQ` JRA xJSA lJT` gJUA b\TA/'"      ձɱyoeZOE:0$رαűynbWK@5+ ܱͱ~soAg o=`g oeg o=cg o=ag oww=_g opp=]g odd=[g obb=g UA`o^^=g U``o\\=g Ue`oXX=g Uc`oUU=g Ua`oSS=g U_`oLL=g U]`oGG=g U[`oCC=g USAo<<=g UQAo44=g UNAo,,=g UKAo!!=g UHAo=g UEAo=g UBAo  =g U?`o=g U<`o=g U9`o=g U6`o=g U3`o=g U0`o=g U-`o=g U*`o=g U'Ao=g U$Ao=g U!Ao=g UAo=g UAo=g U`o=g U`o=g U`o=g U`o=g U `o=g U `o=g U`o=g UAo=g UAozz=g U`opp=g U`ogg=g U`o\\=g UAoMM=g U`oDD=g UAo::=g UAo((=g U`o=g UAo=g U`o=g UAo=g U`o=g U`o=g U`o=g U`o=g UAo=g U`o=g UAo=g U`o=g UAo=g U`o=g U`o=g UAott=g UAoff=g U`oYY=g UAoLL=g U`o>>=g U`o66=g UAo,,=g U`o%%=g UAo=g U`o=g U`o=g UAo=g U`o=g U`o=g U`o=g UAo=g UAo=g UAo=g U`o=g U`o=g UAo=g U|Ao=g Uy`o=g UvAoxx=g UsAoll=g Up`ogg=g UmAoAe obb=`e o\\ee oTTce oAA=ae o//=_e o''=]e o""=[e o=Se o=Qe o  =Ne oKe oHe o=Ee ^UU ^MM ^CC? ^995 1// 1--= 1%% 1 1= 1= 1  = 1= 1= 1 1 1= 1= 1 1 1 1 1= 1= 1= 1= 1= 1 1 1= 1= 1= 1= 1}}= 1}}= 1pp= 1pp= 1ll= 1ff= 1[[= 1QQ= 1FF= 1;;= 1..= 1  = 1 1  = 1= 1= 1= 1= 1= 1= 1--= 1= 1= 1= 1= 1 1 1 1 1 1 1= 1{{= 1oo= 1kk 1gg 1dd= 1__= 1WW= 1TT= 1PP= 1MM= 1JJ= 1FF= 1BB= 1@@= 1>>= 1;;= 188= 144= 100= 1bb= 1^^= 1= 1))= 1""= 1= 1= 1= 1= 1= 1))= 1""= 1= 1 1= 1= 1= 1= 1 1= 1= 1= 1= 1= 1= 1= 1= 1= 1= 1= 1ww= 1= 1= 1= 1= 1 1 1 1 1= 1 1}} 1ll 1ff 1^^ 1VV 1NN 1GG 1?? 144 1++= 1%% 1= 1= 1 1 1 1 1 1= 1= 1 1 1 1= 1= 1= 1 1 1 1 1 1= 1= 1= 1= 1= 1= 1ss= 1oo 1dd= 1\\= 1QQ= 1JJ= 1AA 1<< 1<< 133 1)) 1   1 1 1 1= 1= 1= 1= 1 1= 1 1 1 1 1 1 1ww 1mm 1ee 1ZZ 1TT 1MM 1FF 1@@ 188 1// 1%% 1 1 1 1  1 1 1 1 1 1 1 1 1 1= 1= 1= 1|| 1pp= 1jj 1dd= 1]]= 1oo= 111 1RR= 1OO= 1DD 1??= 177 1?? 144 1++ 1%% 1  1 1 1 1 1 1 1 1= 1 1 1= 1= 1= 1= 1 1 1= 1 1 1 1 1= 1 1 1= 1 1 1}} 1uu= 1jj= 1^^= 1SS= 1^^= 1JJ= 1CC 177= 100 100= 1&& 1 1 1= 1= 1 1 1= 1 1 1 1 1 1 1 1pp= 1= 1= 1= 1= 1= 1yy= 1ii 1ii= 1]] 1[[= 1gg 1YY= yQQA yDD` y88e y22c y--a y%%_ y] y[ yS Q      J       JMA_J A`J)A   AJMAaJ A/A ذ   B B B BBذ w  - -   `  - -`JAY77  b7 b   -  4 3 -      B B -  - " 4   " 3 - "  --  Q0    0  00     &   B   & 434>3b4SA3SA     &  x  x  x x    SS ) '   \J    KK     K Dΰ     Aڰ   ::JA`J`JA : `JA R   B ,R  444 3%3,3 4 3   A  OJ/A ,    J`J`AJ A        JA JA B Űf J`  SS 43D '    QSS  ' 1   ϯ > > k 1 ϯk  >   D BDkذ  B  h Rذ B>R  R96>  1  6O>hh  9  6O  ^J5` ư  ϰ  l Q B  Bb  b   b b     b  b b  b b b  b b b  b   B gAJUA J$A A  b  /  - - A  }  }}    Ap  pp    Af 443b343  b[ 443b3  bQ 43b  b;`JA   [.   f    Q`JAAJ A`JA`JA F f      .          l  44    3^ 3b     s  s --^ -    -    -  b   J A J A`JA BJ`   `    '  `J` B   --    xA   'x    x `JAJA x    4A A pAJ&` g`J&` jeJ+ATAJ*A |   TdAJ.` ]`J.` } }-- -  "} B- %%% A\ °------=-9-5-1---)-%- ----%-1-" 43-5-1---)-% ------5-1----5-  -----5-  ---- ---1--1-9    -  4    3 "               "         "   --  y   BB  B  B  =  B  B p  BJ ` -J!` -J!` ϰ-J!` װ ^>J%` ー ^J%`   ﮯﮰ  ﮰ -- ^>2J%`ﮯ    z4  4 4 4 3  3 3 - -  -3 ^   e '{        o        -- ԰ ^J%`  ^2J%`   ---Ͱ   B A sͰ   A `s  s--`JAs`  `--J A`JA`k wT _k   , QT  C   `T g  G4434 3<A d    _d d  J_ B   _  _  B  Q_  `e__4  b3 - ---   e'_  `_4 b3---  `'WJ` b  ^AJ` AJ` T J` PJA M @ J` J > J` FJA BJA @ _< _> _4 _; _, _8 _! _4 _ _0 _ _@@  >>  @@ >> )   "   JA  pJA      JA"))      )"      "                Ѱ  Ѱ    g g į  Se \TJA JA JA JA J`       JA J`     `   J9AJ8AJ6A   b J`J` İc`J'A l pl l ------  ' \ l  '\   g\ b    ->- Q443=35  $ --w -- "   $-w   --   --  -  - - "w "  A  ---w ^  AJ` ---w b   ܰ AAAJ` J1` J1`  AAJ1` ܰJ2` J2` ذJ2` ԰J2` аJ2` ưJ2` ˰J2` [J2` wwJ2`  AAAJ`   --> Q B    Bퟯ  '   탯ퟰ 443^3w ퟰ 4433w ퟰn Dퟰe B  B '>   ' 탯SS B B  'SS  탯OSSA   BO  SAO SSFAF SSAJ A`J`탰 AAJ'A 43b  O 43S          ^S  ' "4 "4  4    %4   %4 3-> %%   JIAJKA   JGA`JA 43` JG`   J  JJA JKA  JLA쪰     얯쪰    J얰  p `  4 3 ]  MM JJ J  p   pM   :M  p    :M   :: bJ0` p B   p  p  `      pp  p   pp  *  *p''   p///  p  p -- p  `      p:[ *    p  J`     `   `  `   [--        b  p    쪯   J  뵰 뛰   G뛰 C뛰 뛰 MA뛰 M`뛰 (A뛰 (`뛰ZZ Z B  J` JA BAJ*A     QAJ)` `J)` `J*A    ~ Q AJ+A`J+AAJ-A    m Qް`J-A ް   [ QAJ,` Ӱ`J,`   I  AA I   3 QI      AJ)A       !!       !  4    4  J4433b4 3b 3 4  "  3  3 4  "  3     T  ư  үҰ   --  J MA `J A -   ȯ Ȱ]] Ȱ ]> (A   M4  3 4  4   4  4 433 3 3   3   곰 곰--곯   t  t t---t    43>A  ^H1TAJ)A b  M`J)A bj  8  M/ 43 M%  M 43 M@  MF C M  M     1      ---- 鿰- 鿰  ---- 鯰      鯰  ^`   鞰      鞰  ^`   鏰     ^`    鏰     ^`    鏰    ^`    逰      鞯  --  --           uu-s e     V 4 3 P-  L    u   Vu ^-w  AJAVu ^-    V u-s e     4V  3--  L    u   5       鯯u   Vu ww   Vu33-1 Vu 33  #     V 4 3 -  L   u ss  !    V   1     u   !    V   1     u- 'Vu       V 4 3 ' 1   u   Vu   - -  - - - e ---  e  L   e--!  e   ---- # ---  #  L   # --  1 L  #--1  #   ---- 5  J A - - - - - - - -   5        蘯5  4     3 - -         蘰 ---s --s蘰 -- -鏯蘰-- -鞯蘰  贰--贯贰= J A贰 J A贰!! 贰11 贰 贰 J A贰 J A贰 V--   4 4 3 4 A3 -4  3    3 4 A3 -4  3       逯V --  4 A3 -4 3   鏯V --  4 A3 -4 3   鞯V --J A   4 3     V --J A   4 3     V --  4 4 3 - - -3 -nV   n n=e nwww n n] nss] n33] n] 覰--    J A J A  4  3---     覰--    J A J A --     覰 --J AJ A   4 3      覰 --J AJ A   4 3      覰    AJ)AAJ,A C  C B /"  C AJ)A   "JA ^/ ͯ/-- /  F/ @/A / / -- F ^`/ ۯ/ @۰  ۰۰۰ww ۰  -  - - - " ׯ۰    罯-- 罰 B罰 J AJA罯罰 GG罰JA爯罰  -/JAt罰-JA罯罰-!JA罯罰-JA罯罰-JA罯罰qq-3JA罯罰nn-1JA罯罰jj-JA罯罰ff-JA罯罰bb-JA罯罰JAP罰-   @罰 - "t  @罰-  2   4 4  3 4 3   -/3 4  4 3 " 3   ->  罰     $  罰 -  2   "  t  罰 -JA "4 t3-   ԯt-sJA罯t罯@     JA    @@ FF@ @    JA  樯@-   @樰  -   @樰  数-- -s数  爰JA   爯爰 - "4    3- ԯ爰 @ w爰JAJA爯爰 爰JA爯2 - G2c2  ԰ - GT԰  P @ 1P J A P - "4 3- ԯ   JAJ A -    - 4 3 -  -     $$  B$ A --J`JAJ`$   A $      N            JAJA          - J AJ AJ A J A JA           --   -- -  -/  `  B   ` cJ AJ A cJ AJ A cJ AJ A c// cدcïJ AJ A // ïJ AJ A دJ AJ A ðJ AJ A ðJ AJ A ذJ AJ A ذJ AJ A 癰NN 癰EE 癰 T T T T T T T T T T T T T T T T T T   副^  副H  副1  副剰  1  副剰 p J AJA p  ] ]   JA]WWQ  JA] ? ?--JA?? JA?-- JAJA ??--JA?- B 剰 Q B -  Q]剰    剰 Q B 4  ]3 <A ]Q   剰Q 剰  R > 4   C 4 4   C3 4   >3 3  剰     剰   > A '剰 ''jJA Cb 1   副剰 --qJ A  L    副剰  L> C  p      p剰 Q 44   34 ]3<A3 ]Q剰         '剰`` 4  ^ ` 3 R  4   3 R  p  `  p     剰`` 4  ^ ` 3 R  4   3 R  p `    p     剰ee 4  4    3 ^ ` 3 R  444  3^ ` 3R 344  3^ ` 3R  p `    e    p    剰  A      J A        JA C     Q BAJ A X b C44  3<3 4 3 U  Q ]     A`43     //  JA  JA  qJAnJA '' jJAbJA --W  ---?  44  34 4  ? 3 ]3 3 4 4 ? 3Q3 4 4 4  4  ? 3 C3 ]3W3    "ɰ--Q ɰ-- T䮰 䮰--  c䓰 䓰--  T   JA JA`JAJA   L    副 BfJA Cn- nJA --J A  L  副 fJA Cn L  副e  A e mww  䁯w 䁰]]B pAeS A 䁰]] b 1pAeS A 䁰 ] 䁯p   p` ` pp e  -  -JABp  a4 Ae O-3     ap   p_ _ pp  1O-  aa//A  JBa//`  FBaA   JBBka`   -  -JABkac  ABaa  -                     q// h ï‰//  ‰  }q            ZqJZ    }Z    J   J    f  Auu  B  Qu  4434 4  4  4   u3 F3 k3 33h77            77// 7            '7h 7h '               '    7'     7  } 7 7       7//  7    77              7     77  7                         7       7  } 7 7       bbu  u  444 4   4  4  4  3 3 3 k3 4  4  4  3 3 3 k344  4   3 b` 34  3N3 3R4 4 3  34 4  G>3 N3G3443R433444333k 44 4  3 33k  ϰ   u  ϰ   u  ϰ   u  ϰ k'4    7    4 4 3 4  4 44u 3F3k3 3  3  h3S ϰ k'4    7    4 4 3 4  4 44u 3F3k3 3  3  h3S ϰ  B '4  b3S  kϰ  b 'ϰ⣯^  k^ k k kk SS V4@3S 'V B   V J V @ )A  A)ð  ð k43S'౰  ౰    ï౰ ]  J JAJAJA ]   )JA ]   )V ]  N ] ` GNu uN?  4f  X 3] 4  ]>    >X   4 DJ`JAJ A`JAJA D +==JAp%==  XX D   f/=ff JAJA j  4 3^]      j^J` jJ A`JAj      ' S  J 4 ' JAJA@  A ߱  ߚ߱ ߱  A4߂ ^A43xs3h  PAJ)A ߱ ߂]]=߂ u =--P=P=P=ϯ    :4 Y  *3S  '    4 Y  3S  '* w43]* B w43]̯ B  A  B  444   34 3b 34   S3SA34  SA3S           ǯɰ   >   ǯޭ   ]      > ǯ   > ǯǰ B ޢ ޒ Jǰރރ-pރ__   D ޭD   B 3D--  ۰ b ̯̰  ̯̰    JA B       -     -  ] B B    B ] p3  -e -JA 3-3p  MA       հ հ  ïð]]-  pð]]  =  ð   _ bSS ----------cAJ'`   ݺ  444 4  4  4  4  3  3 ݫ  3   3 4 4    3 Pݤ3 4    3  4  3   3 3^3  ݫ bSS   b   S S ' 44 3  3    '  ݖ @  ݄ݖ ݖ --- J` -ݖݖ---ݖ݄ q   ͯqAA  q `` --q `JAJ A q    b         qb  b --- -J` - bb  -- bU    FU  4 QF -- B    ^=   - F`        #F  F--J A B    ^=   - F `    bF          #F    #-- B    ^     -   ^    4  # 3 ->  F# -- B    ^     -   ^   @   J ` -  ##    -    --  - ^    ^   4  3 -   F-  -    b       P   4  ' -  4 4          3 ^ 3 b3 --   s - b -   b  --^ -   ^   ůŰAA ŰJA B`JAůŰJAJ``JAů --^  4 3 -    --^- J`           s   - B ܮ   ܗs  B s  s     s  i   'iAA  i JA ^`   i         s  oo     b  ^b  ^bܗ BPܗ ܗ  'ܗAA ܗ JA ^`  ܗ   ܗܮ ܮ-- ܮ PUo b   o  o  QXo   \d B "  ]d d  "\    sB0  ȯ ۵0  0۱۱  w0 w ۩ 0 ېہ r0 X J۵]]L۵ =  =ee ]   '=gg ]ې ---,`JA B  SA  B  SA  S',--  -     ] 44gC  b`'ڸڣ`ڎ443^43S3^4>3S 3S 3S    S  S   S   ^4 3 S  ^43S ڂ4443S  3^43S3^43S   vc   [>43W E4  3 b   9(   [>43W E4  3 b   99^-^    ^S  ^S^S E   ^S vڂ  (   S  '94  c 3 e   S 4A  '     '    ٷ J̰    ٥``    c  ِe    ٥e    ` `        ِ B    SA  C>4 3 ى`     9      |  j  g  S 4A  '  P   '    ; JP      ِ`   `       ٥|    B B -|--  94    94   g  4  C 33 g>4 3 A3 C>4 3 A       AAA  ``  jUU     ^ `   ^  ' 4` 94  3U>3    'j ^ `     `      94      3 >>     'AA   ``   B    `` B  C>4 3 A 94 3g>43A     9 ``    ج   B   ج أ  B   ج      ǰAA  ǰ ``  94  3 C>4 3 A    ذ  J A ذJ A`J AJ AJ A 94  3 ؞         جذ J AJ AJ A    b`        ِ  J A ِJ AJ AJ A    94  b`ِ 3 4  3       ؋٥  J A ٥ J AJ AJ A`J A    ٥        B      B    4A  '   q   b     'q 94   Q 3  G4 3 S       9  J A 9 J AJ AJ A`J A    9    --    B  -    B  -  4A  '      b     'b `J A`JAJ AJ A    9`   -b       `         9    94 Q3  G4 3 S      Q       `           J A J AJ AJ A    94    b` 3        ؋ܰgg ܰCC   ïð׾ ð ggg CC׾ ؋ B   ؋أ B   ؋ ڰJ A   ڰ  ]] ]] ΰ b  צצ  צ -- -     צ      הה   B ה      B    ׏  `   ׁה׏׏  sה    p4 l3 ] JsS  `J``JA ׁ       S ڸ  A M? `J` M  M -- /  M    B  SS`` SS`` SS`e SS J A/ أ 434S``3^>S    ?/أ=    ?/      ?/ =   4 3 ? gg  ^4  S>3 \>J` CC  ^4  S>3 \>J`۰S``^S ۰S`^S`J A ۰S^S`J A ۰ S=^S=ڣ J Aڣ J AJA b` ڣ   ƯַSS ֩ A ֩֩  ֩ ư ^\^ ^  ַ ַ ֒4 4 4 3 ^ 3 ^3 ^  ַ֒^^^^ }hh֒^^^ h֒^^ h֒ }SS SJ A}SS SJ Ah SS SJ AJ Aڎ  ڎ-- ڎ  WW =^       CW  C S`` B 3   $C S` B`J A   $CS`J A   33 ^S^   - SJ A 3  $ ^-S^  S $ ^S^S`J` ]]]  ]]] b b B      ͯ   ) 4/433 )  d ռ)뵯L  --"-ո-մ"// L B բ B բpp B pբ B բpp B pբ    Ց    Հ  WW TT MM @JJ > o YY 7llbboooՑ  B _ ͯՑ  Հ  B        Հ  o   o   բ bբ Ͱdd    KͰ @@   <  :Ͱ >>   4  :Ͱ ;;   ,  :Ͱ 88   !  :Ͱ 44     :Ͱ 00     :K-_ B K-bA B K-bA   K -bA _  )K  *_  _--_ݰ--  ݰ--ݯ:   *     4   3 - - -     **  B   *  B   *     * - -  -   *    *      4  3--  -  -    * - -  *     4   3 --  -    - ]]         JJ] B  ]  ˰  B    ˰  43      43  J0`  J0` Ժ  S   4     Ԩ  3 Ԕ4   3 ԏ   Ժ B sԏ _ Ԩ  ԺB Sԏ C  Ժ BS  /  /ge^ B/C^ B/ Ԩ    - - -   CC gg    ^ 4CQCQCQ:3 -    -   444 3w33P 443w3  ˰  ˰  ˰       A ӴӴ   Ӵ--                 ӞӞ      Ӎ  4  3 W  Ӵ    [Ӟ        4  3 W ^ Ӵ>A    [Ӟ B        ^[4[Ӵ4>A3-43Ӎ>A34A3W        nӞ   `J A Ӵ     [C  [h   _C KGG 8  '     [           [h _         Ѱ   J `ҿ  ҿ    8ىىҿ       ^  Ұ CCأ  Ұ׾ҬL     Ұҿ geң ^ ҿ Cң ^ ҿ       ^  Ұҿ ``أ   ҰҬ Lҿ   أ  أ ҰҰ ҕ҅tt - d  'dңң    td   ҕ  Y  ҅Y  N    N ׾׾e    C 4N [[e   C $N    `  N    C4    ׾G         ҅4   $   [  ҅  ҅$      >  b`      ҅          Y  ҅  ί``  C  C   Y   ҅=        Sa Jΰ`` eΰ  ׾e ׾G׾أ ѿѿg   `  AѲ ѣѣC   e  AѲ їїg   c  AѲ ыыC   a  AѲ ||g    _ A   AѲ mmC    ] A   AѲ __  S ]Ѳ RR    [   AѲ DD  S SѲ 77    Q   AѲ ))  S NѲ      K     Ѳ     K   Ѳ      H     Ѳ      E     Ѳ    B A  AѲ    ? A  AѲ    < A  AѲ      9 A    Ѳ           AѲ мм          Ѳ бб          Ѳ ТТ  S Ѳ ДДC     AѲ ЉЉ     AѲ ~~     AѲ ӍӍ       i        i `` b`  Ѳ A S HHS  be  Ѳ    S BB     A     AѲ 22 Ѳ "  ѲA   Ѳ`   Ѳ ݯ̰ O b c  4   Ѳ A A3 - -4  - -4  -3 - 3 -    S" ^U ϯ ^M ϯݰ ^C ϯS ^9 ϯ o  ϯi  i  iW  !   <    ϶       ϣi  ϶   Ѳ Ϝ ϒ   ϶       Aσ϶ Ϝϒ    ρ Ѳ4 3 b       ϶  Ѳ  J #AѲ  J AJ AJ A CAѲ       rѲ       aa  - - - -   CQ CQ   I   [ ?Ȱ   [ ?r  ] /r /  %"%%b`"%%A '/ %"%%`%A ' ^^SS %%% % "A   43 ߚ  4  οι` ^A43ά3   AA T Θ /ߚ T"Έ " --> %4 4  4  s -4  ^  %4 ^4^4^bbbA43h4444b3-3%333-->3-->3 -->3 -  ->3 -->3 -->3--> -  R- -BR - BB  2 ^4 3 Έ2   A4      ^    A4  3 ά 343  2    A ο2   ί  ο  ہ4ʹ3-43-43Ͱ ͚͚  ȯ͚կʹ ͅʹ ہ Cہ Cہ Cہ Ժ ---۱- s  soR   4=44  "3\3  3ռ  )Ro=  ---     4 "   4   " 3 - 3--5-     "  `J)A o  "AJ)A G   JAB o AJ)A    ]]  ԯ  ]  B 43G ̻     կ̻]]̻հ   B   ̩԰--̕԰%%̕԰̇̇̕԰̕԰̕԰^^ ^԰ د԰ ԰ OO 44 3--3   O԰ww  eUCC Έ 1 U1  "A   1 e ] AA443SA3] U  Uݰ   44 3d343b `̕ AJ)A A4R MA  A4 3 Ͱ4   3 34 3  ̩  ˼    ˼]] ]˼]] ]˼] İ " ˫˫   ^  ^  ˜  ˜-- -˜"  --˔-ˌ-˅-}-t-m  bRհ 4 }3-4-4 -4  - -4  -4  - -4  -3 -  - -  -" -^ -= -- -Z -  - -V - 3 -  - -  -" - -մ -  -R - -N - -5 -5 -  - - -5 - -  - - 3 -  - - -3 - -  - -" -^ -- -  - - -V - -" - 3-- --"-^--- ---|-/--v--s----- --V-5---1-մ- --|-/--v--s-3---"-^--- --- - ----R--%-^- -  ?  d ռ ')  ?  ?  H     iİ  įİ  įİ   $Яа  Яа  Яа    Яа     Яа  0 4 4  0 3 3  J -4  -4  -4 3 3 3 ԏ   ʰ   4    R   ^   4  3  s3 - -    --43--^ I į         Я   ռЯ   Я  ʹ}  }?  4}%3--4-3-    ʧ ʠ ʙ   ʧ  7  ?  ʇ  x  x ?  ʧ4  %ʇ?  ?ʇ+  +7%  %7  7    7  7  %  oa^^ i  Wii  ϜG Ϝ 7 ]   Ϝ fϣ  ϜG Ϝ 7 ϣ``A  ȯϣ__3 r!!      !   e ѯ   B B B B B B B ɴɠ  ^4S3S  4  ˫4 3 -  -4  --4 --4 --4 --43-n- --3- -- 3- -q3- -- 3 -  - - - 3 -N   σ  ɠ ͅ4    C `  ɝ      ɓ  ɐ 3 4 3 C  ɂσ   `     pC  C C ɴ B   ɴ  4   " 3 4  J 3   "J     J     J  ͅ M`b  ȯ 43Z ͅΰ XQ  ȯΰ  IXX #ȕȎ aX ȉȃur g X  HH  w [ 6  b`"% % $   %   B w J       A  `J` m]A [   "ݰ a [  ʰ  [  hǾ  w [   ǭ 6 Xǜ $ XNj 6 Ǿz $ Ǿk 434436>3>e  ǭQD B XQ    Ǿ+ B X+7    Ǿ B XR    Ǿ߰  B ǭ߰ mNjƶ ƨ B ǜƶ |zѰ  !ͅ4344 4 3 Ƥ33ƙ Ϝ f Ѱ ɂӍӍ  ӍݯƋee p   H  b    $  A   Ƌ ))   )   Nj 77     + ДД{ ǭ ТТ  Т       Nj ыы ыǭ ѣѣ ѣǭ mm    ߯ __    ߯  rX  rX  ǭ ~~  ~k  ǭ h X ^ X      Q мм мǭ бб бX  X RR      DD   D   z ѿѿ ѿǜ її їǜ ||    ƶ ЉЉ Љǜ 22 LX    <*    <**AA!b ǜ*``!^ ǜ*ee!\ ǜ*cc! ǜ*aa *__ ǜ*]]  *[[ *SS *QQ @*NN >*KK *HH 8*EE T*BB *??  *<< *99 *66 *33 *00 *-- *** *''ź *$$ū *!!ţ *Ŝ *Ŕ * Ŏ* Ň* ~n J An J An AJ A< b XLAAu L``j Leeb LccZ LaaO L__C L]]8 L[[( QH@(#)acos.c 1.4 88/02/08 SMI?.B9?.B=95yY9???;s?.B9?.B9?.B=95y>0<?UUUUU>fl?Vj%,Ak>f7ir?UUUU)ffJ7 ??Yt?Xl?[Q?r<}Q{?ԇ1h?8znub8?? 1?q7:?ަL4"?N`a-?6*'?4+VO?HT)?$~:U?f;?u_t?s?%L?B*?77?đ?U>%]?蟙Zӭ?v^G?݅R? i?X?3{_??Pv[nE@%]@ 蟙Zӭ@ v^G@ ݅R@ i@ X@ 3{_@@Pv[nE@?UUUUUU??@C0?.B=95y+?g\?1?a^?ѽX ?9?ؚ3B[?#쿘L?D{̏c?܏ǚ"?jġ?_?%R?r%*?T?_^p@?y^?3O?V*?Fr?]>?*-&[ū?@L5-@(#)pow.c 1.9 88/02/08 SMI?.B9?.B=95yq~O+I[>!ŐK?UUUUULVlR>q~O+I[>!ŐK?UUUUU>VlA>q뾒~O>!;`܌Y.?UUUUUZ ?*䩬rb>Z3V#$?UUUUUZ ?*䩬rb>Z3V#$?UUUUU a?*tcE >Zag+A9!=|׽B_ ??????nNDi1`ט*1{u`?a*qOڊYH#Z7QczGJR\9':EN-d'J[Je("Gq?5$Bh%i*hJBWuΙEG5?1Ar+}u%)i,- 1/ &e?o z_nND*+ v\պv|`S:p|*h{z8Ks^4['>9X>]U[J.5X #GE iR8 g5}MB~aPRwn`}hinU}%>JG-vw@ҐEaؐ!D)(n]nND)'W4b<CAQc޻a$n:BMI. ђ)>5.Dp&_~A99S9_(;/Z mm6~' OF?f_-u'{=9Rk_]V0F{kϼ 6a^e_h@؀Ms'1Vs`{kAp>p?!@>tD-  @ @ 0@.dynamic0 0 0 .liblist  0.rel.dyn   .conflic     .dynstr@ @  @.dynsym  P@.hash`) `)  `).text: : 0: .init6 6 P6.fini`6 `6 @`6.rdata@@@@m@.pdata5 5 `5.got@a@@a@3@.data@@[@`@.xdata[@[@p@.lit80a@0a@0.sbss@@`.bss@@.commentp   pp`) @    @a@pp  ppp  p p  6  `6 pp 0,'A" 1,7]T[@ libm.soosf.1libc.soosf.1.pdata.text.init.fini.data.xdata.lit8.sdata.lit4.rdata.sbss.bsstruncrintcopysign__startfabsmoncontrol_mcounteprolcputimequietquietmesbp_exitbp_haltwarnmesfatal_errorlocal_errorlink_haltcan_recoveroverflow_bymake_byte_arraymake_char_arraymake_hentrymake_atomtableinit_common_meminit_engine_memis_enginecreate_enginedestroy_engineinit_randomstart_profilerend_profilerget_cmd_line_optionsbp_versionstartup_mesinit_bpstart_wamrun_bpmake_symtablesfullatombaknew_funcunwind_trailinit_orig_wamrestart_origdefault_start_pointheap_or_bp_haltunifybad_instrexec_linkinterp_frominterpbp_prolog_callload_engineload_engine0call_engineask_engineanswersuspend_enginemultitask_enginesbpinit_instr_leninput_funinsert_opinit_codeload_kernelstat_usedunix_argvunix_getenvunix_accessunix_cdunix_killstat_leftstats0symcatolder_file0older_filesee_tellsee_tell_atseeing_telling_atseen_toldshell_1add_instrcomparefunctorname2listdet_append0list2termterm2listterm_appendcopy_termcopy_from_enginefindall_lift_heapfindall_store_heapfindall_load_heapapplystrip_cont0dcg_telldcg_connectsetargchange_argbp_conshfullhinithdefhsethgethindexhbakhlistop_classvalid_opmake_opop0lvaldefsetmatch_termsread0sreadswritesoutfoutdouble_to_intsints_to_doublemake_floatfloat_comparefloat_opfloat_fun2float_funinput_floatwrite_floatetext__ldr_datamaxbp_heap_topopcountuser_bp_sizewam_bp_size_exit_dummy_refedata_edata_fbssalpha_arg_offsetalpha_auto_offsetend_end_ioboptargoptinderrnoenviron_fpdata_size_fpdatafreesrandgetoptsscanfungetcsignalfopenfclose_flsbuf_filbufrandgetenvaccesschdirkillfflushstrlenstatfseekstrcmpftellatexitstrcpysystematofacosasinatantancossintimesfprintfsprintfisspaceislowerisalnumispunctisupperexitcalloc__remq__divqmallocisdigitpowlogfloorexp_ftextmaininit_cif0new_builtin__do_global_dtors__do_global_ctors__main_call_add_pc_range_table_call_remove_pc_range_table_call_add_gp_range_call_remove_gp_range__istart_etext_fdatauser_bpc_interfacewam_bp_exit_dummy_decl_gpinfo_gp__Argc__Argv_auxv_ldr_presentmach_init_routine_pthread_init_routine_pthread_exit_routineatomtableatomstampnewatomlextablenewlexhcountinstr_lenhtablehstampg__DTOR_LIST____CTOR_LIST____exc_add_pc_range_table__exc_add_gp_range__exc_remove_pc_range_table__exc_remove_gp_range5 $: *6 0`6 6@<[@C@a@I@a@P@a@V@@]@c@h: n: s; |p> ; ? ? ? ? @ 8@ @ PA A A  B XC C C  J J +J 7(K FL VN f P p Q ~`R S XS `S hS @W W 0X Y Z [ \ _  ` ` ,a :a G8b [b k c qf {f hg h `h Pi j j hk k l hm n @ X  % /0 ; E O [0 g o yx     8 ` 0  X   P x   P %( 1 ; L ^ q    8   H    8 (  ( 8 `  P  X      (  ' . 4# ;X# @# E@$ T$ c$ nH% |& ) , . p0 pA @@`@p@@[@[@@ @@@(@:p@>p@CHOV\dq5 y ; ~0; @; P; `; p; ; ; ; ; ; ; ; ; < <  < 0< @< P< `< p< < < < <  < %< *< .< 2= 6= < = D0= L@= TP= \`= dp= l= t= y= = = = = = > >  > : 1 p1 1 82 2  3 3  4 `4 24 E`5 [6 dpA k@r@z@@[@a@0@0@8@@@H@P@X@`@ h@ p@ x@% @. @5 @< @F @M @T @V P@d `@r    p|(4bGag"3Kq-W ]idj 8xS#om?9'y=+O<wB:&Z_@f`5F*N%k.UC7TV!c1\>{  [6Ez$h;0/RAI2)s nMDu,X^QLrYHJ}Pt~elv<&  0 ,& $& ,&  ,& ,&  ,& H ,& ,& ,& ,& X,& ,& ,& ,& ,& ,& H,& x,& ,& ,& X,& ,& P,& ,& 8X$& \% $& $& $& $& & !& "& "& @$& 0%& %& H&& `'& '& *% *& @++ & , & , & - & - & 1 & `1 & 1 & 2 & 2 & 3 & (5 & h5 & 5 & `6 & H7 & 7 & h9 & s & w & x & Pyy& & H& @& & & 8& & @& & 0H& & & & 8& % % h% % % % % @% ة% % H% P% Э% P% ذd% % @% p% з% % % 0% 8% % % x% % % % $ % % % % % % % % % h% % % % % % P% % (% (% % % % @% P% % x% % % % @% & & X& & `& & & p& & & & & & P& & P& $& $& $& $& } #G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k}#G{k# >" 'RBAB#RF3aB?GG!G!=\G!} !}`@[k '\#/(!}`@[k 'D#}`@[k '0#G/G]}!R!=!}r<@ '#G!= G0!}`@[k 'С#X}x[k#kkGGG#GkGGGGG '##^C}}[k 'd#> $A!@A!@A!@A @?@@LHCH@H @^Ck '#P=@@@4DkG '##^P=@!F @1F p"BD }gt[k '#^Ck '##^>^ F 1F}_ '#%= /H] @a" @LJEH)EAD4BJC4BUBUB/="UBUB5@(}j{[k '#/@"C(}_ '#?AX}fx[k '蟽# '##^F/P"0}_ '#^Ck '##^Fp"/X=" }t[k '|#^Ck 'h##^Fp"/p=" }t[k '<#4G8}_ '(#^CkG '##^>P=@!F @ 1F= `F h2!aBw H @p"/=" }s[k '#)G/p"/="sF }s[k '#G/!5 @ p"/="w`J }s[k 'L#8!= "oJ!@Dp"A@/="BgJ }s[k ' #)E@}_ '#G^>CkG '؝##^%= ! tG8}t_ '#^CkG '##^@}v_ '#X}_ 'p#^CkG 'X##^P=Q1BC2B@!(CsF @3B p"/г="@CtB }xs[k '#X}_ '#^CkG '؜##^>^~ 1FG RF}@ '#)EG D}@ '#JEG D}@ 'p#%}"3,kE)E3HD}(.@ 'H#^>^~Ck '(##^>^ 1FG RF}@ '#)EG D}@ '#%= J@Aa.)E4@EaJD}.@ '#^>^Ck '##^>^~ F/" 1FG%=!}@ '\#/ "TG }@ '<#/("TG }@ '#/0"G }{@ '#/8"G }s@ 'ܚ#/@"G }k@ '#/H"G }c@ '#/P"TG }[@ '|#/X"Gx }S@ '\#/`"TG }K@ '<#/h"TG }C@ '#/x"4G };@ '#/"G }3@ 'ܙ#/"G }+@ '#/"G }#@ '#/"G }@ '|#/"G }@ '\#/ȴ"G } @ '<#/д"GH }@ '#/ش"GP }@ '#/"GX }@ 'ܘ#/"G( }@ '#/"G0 }@ '#/"G8 }@ '|#/"G@ }@ '\#/"G` }@ '<#/"Gh }@ '#/("Gp }@ '#/0" p)xI `)GhI}@ 'ė# i.)pIiJ},@ '# i.)xIiJ},@ 'x#/@"tG}@ '\# X鷀Ii^>^~CkG '(##^>^/H]!/X="/h]"JE G_ /p="/]"JE_G="JEY_"_өC)E^>^CkG '##^4G`}D[k '|#^Ck 'h##^4G`}{D[k 'L#^Ck '8##^G`}oD[k '#^Ck '##^G`}cD[k '약#^Ck 'ؕ##^> FP Ax}E[k '# CG D/G/G/G/4`@ i@BA@?^>CkG 'X##^1F_@ ^CkG '(##^>^~ F 1F RF sFFi KAI GG/GP@Ax}TE[k '# A@A8B`A@!"@0) ) I 0i)IC(i^>^~ Ck '`##^>^~P= F/}"G)G_ӫ@}~@ '#4`AD}@ '#8 x}a_ '쓽#  "%]! )_"/}"@ G aA_P ?"4`AD_GG4`AD`}C[k '# G4`A !@*D}+@ '`# _ 4G iA`4G G//"@}_ ' #G^>^~CkG '##^%} #C! A@ A@#PA B4 D"P4G4@B"/ȵ"@}_ '#G^CkJ_ P@"D? B0Dk 'X##^>^~ (0޵ F 1FRF_" sF F/}"G[A F8_RA)E/}"_"G@0_kE IA4AD_)E/}"kEGD$_P=h "/}"GH!G4AD_JEE4AED_G"4GG/("@}f_ '@#G^>^~ (0ޥCk '#%= AaC@ G/G/G"!0@ 4GkG/GA@C@?GkG '##^%] b"a@ BD#!0@ $!#$4G!!@$ G%] "a@a@?GH"@}!_ ',#G^CkG '##^>^~ ( F 1F RFGG sF`}B[k '̏# D G0G*@I+`I,IG)EEG/G/G/"#"#"#"# " #("(#0"0#8"8#@"4@@I@@#i@?)EJEkEE4GE}+_ '#D)E^>^~ (CkG 'Ў##^> F_ }D[k '# }D[k '#h }D[k '|# }D[k 'h#)E }D[k 'T#4GGG^>CkG '(##^}#_ ' #@FB(}u[k '#^CkGkGkG 'ȍ#p#^>^~ (0޵8 F1F GE,5@@@}4GP]G/G/G//h]"EE0}b_[k 'H# HH4@ !5 @!'H'H"!HwB@ 0= AA@!=@kG G="C8}*i[k '茽#@>! H*G/G G="C8}i[k '#{H>! H*}G/G G="C8} i[k 'h#kP>! H*mG/G G="C8}h[k '(#[X>! H*]G/G G="C8}h[k '苽#K`>! H *MG/G G="C8}h[k '#;h>!u!@!@7 h>!I?@(*8G/ G="C8}h[k 'X#'p>!u!@!@# p>!I?@0*$G/ G="C8}h[k '#x>!W!H8*G/G G="C8}h[k 'Ȋ#>@* 4 AG/4 AE,5A4AK? p"/="/]"/}"/ " }n[k 'X#4G8}_ 'D#=A M@ AN@G^>^~ (0ޥ8CkG '##^>!=!/="tGG)E(}u[k '#)E^>Ck '## ^(>؀}_ '#/(= / ] !=!/@="/}">(=/"/"!^D^)E>(}u[k ' #)E ^(>CkG '##^>^~ (%=!= F 1Fp)'@x)}_ '#kEE@ Ѐ}_ '# D}_ '#/@"D#]!(}_ 'h#),JEA)H)<}_ 'H#kEE(_I,4GEa)HBIHJE"D)<Ё}@ '#GG),TGbIHA)HGADI<}i_ '̇#P=!AJEaGJE}R_ '#DJE^>^~ (Ck 'p##^>^= FtG)EH}t[k '@#TG)E#=!H}t[k '$# @p"/X="JE }m[k '#%= ! )E0}@ '܆#)Eh}j@ 'Ȇ#)E DȀ}8_ '#JE8}_ '#^>^Ck '##^> F}"_ '`#)E(}@ 'L#G}_ '8#^>Ck ' ##^>^P]0 }_ '#8!= 0 D! Ap}_ 'ԅ#0 @!= H!] 0J4 AⷉDx}_ '#P!} X!] 4 AD A^>^CkG 'h##^>^~X!]! Fj}L[k '8#P=P!] 0!jB! H@!5 @"@@G"H}c_ '#4@*i,D,iHBDHadH 4 A"D$<`JEG/G/G/4@%i,D,iHBDHadH 4 A"D$<kE^>^~CkG 'P##^H!= Fp"/="A }?m[k '#/"@}_ '#G8}_ '#^CkG '؃##^>^~ ( F*,*H GJE G/G/G/G$,$H4@d,!'H" I'HdHA@ "AP}H!= 0C!"5@@ "E!A!5 @ "D!+A 8!] "A!A! BD cD/G/,A!A!JE}vK[k '肽# 0-4 A!5 @ AD!+A ,A!A!?8!= !A!A!0 %] ","H`X" !5`@ 8!= !A!AA G/GJE>_8!= !A!AH!= @!] 4@% b$,i@$HC,a#HBCH"D#^~ (CkG '#P]0"G @! 8! BDH! G/G/GC@","H0@ &Ba@" $!5 @$0%4`@a@?kG '##^>^ 1F? !A F p"/="JE)E }il[k 'Ā#/" G@}@_ '#JE2_ wHH!'ITDD^>^CkF B G/G/G @`0`D!CA @#b@!B@@ @ B#?kG '##^>0`=0%=!!H!] X!= 0)`!} !Bc )(I8i}_ '#H ^>CkG '##^> F)%= )`]X!} 0! A"4GC }(@ 'X#4G}k_ 'D#GH}@ '0#4GH}@ '#@)0)^>CkG '~##^>%= !}r'@ '~# D /"H}_ '~#)E^>CkG '~##^> FF!5 @ /0"@}_ 'X~#4GG/wJ8}_ '0~#)E^>CkG '~##^>^~ (0޵8sF RF A/oA G/G/G/ kE+aAkE. E+aA G!A )E) E?G!A JEM@E?!A  E&@*A@E@D* !U@@ GI I/!A ,B /P}"TGEh}_ '|#G8}=_ '|#LA@,"tG/@E" !U@@ 'I ʵ*/AAf ,B /P}"TGEh}_ 'X|#G8}_ 'D|#LA@,BPG/!*A GM!U@@H 'IF ,aA Gh}"kEtGEh}_ '{#TG8}_ '{#/A ,B /p}"TGEh}_ '{#G8}_ 't{#,AL4A","@, aAB A͵A+ aA)5 AAK A A-@.@G/! aA+!!@" aA)5 A"A@+?oAL?4G^>^~ (0ޥ8CkG 'z##^0p"_&/="BJ2D }j[k 'xz#G8}_ 'dz#^Ck 'Pz##^>^~%= F 1FJE}D&@ 'z# D /="JEkEP}_ 'y#)E^>^~CkG 'y##^1F4h4%] t48@!"8@!H!FG(@"@@!"*@bBP!G##a@$@""A@eB343 43}@ '8y#@^Ck ' y##^> F8}_ 'y#)ED`}_ 'x#^>Ck 'x##^>^~ 1F%=  !*x! RF F F}%@ 'x#G"ABA/G/G/G/!!!@#a@""A@ %A+)JEE +)EDkE3}o@ 'x#^>^~ Ck 'w##^>^~ (0޵ F 1FRF}_ 'w# /"@}_ 'w#G2G/*h*j%= *H!P)x!8@!}%@ '^~ (0ޥCkG 'v##^00P05 @p}_ '`v#^CkG 'Hv##^> F}F_ '(v#)h X)iA)EB}@ 'u#G/GG^>CkG 'u##^> FI"w H! @ )E}_ 'u#GG/G4G") ^>Ck 'Pu##^F#!w H@@1F = AA@!=@kC4G" ÈC4G"È#4GAÈC4G"È#XCaG/G#Gй="cDP}a_ 't#G8}(_ 't#G^Ck 'ht##^Fb#sFw H!`B1F p"/="BD }?i[k 't#4G8} _ 't#GG/4G#"XB^CkG 's##^>^~ (0޵% @_$ C BD@0D`GBG @EA 4GD/G/* 0w H!U@@?# AAAA?%} +5`AC G4`A A@& 4G cDG/G/*)!w H@@@@"D )E}_ 'r# 0w H! @ е-!AA - G !@ AA+5`A4`A?4G^>^~ (0ޥCk 'Hr##^>^~ (0޵8 F@1FH RFPsFG/G/l?$"HaEU@f = AA@!=@)kGH䁶fIA AGfIAε AdG/GH䁶fIH>A@^EH}_ 'Xq#H A@HG/fIA! AMG/GfIAA@E JEG* E1 G/G/G!IA )E) E? E$ /AAH @'B GP}"@^TGh}_ 'tp#G8} _ '`p#@GA@'BʵBA.@"A,"DG/,!!A ,fIA. AA!waI&HAfI!A A"wG/G!waI&HfIAεAG!waIfI&HA@^A!EH}Y_ 'to#d6G!waI&HAfI!A"l!waI&HAfI!A A"KG/GH!waIfI&HA@A@H Aa:G/fI"waIAFHAεH䁶fIH>A@^EH}_ 'n#)H!waI&H@A@H AAGfI"waIAFH!A. AB ANA G/GH䁶fIH>A@^EH}_ 'm#!waI&HHA@^E@G/fIA!!waI&H.A!#G/GH䁶fI"waIAFHA@^@EH}_ 'Hm#H A@HG/fI"waIAFHεA" A.AH>G@@EH JE G/G* E) G!IA )E) E? E ,*/AA @'B /P}"@^TGh}_ 'Pl#G8}_ 'EX}_ 'j# D@EEE}&_ 'i#Dn @p'AP M@E JE G* E G!IA )E) E? E  )E}"@ '`i# D AAH^ A@p'AP M@E JEG* E G/G/G!IA )E) E? E?L"!!A AG/bCA C@ÁfIAA@E JE G* E- G!IA )E) E? E$ /AAH @'B GP}"@^TGh}_ 'h#G8}_ 'h#@GA@'BʵBAN@!A,ADkG/,!!Aw?lfIA@^AAEH^H}__ 'g#j"waIFHCAA AHBA"[G/GfIAA@E JEG* E9 G/G/G!IA )E) E? E, /AAH @'B GP}"@^TGh}W_ 'f#G8}_ 'f#@GA@'BʵBAN@!A,AD.lfIA!!waI&H.A!8,!!A?lfIA@^AAEH^H}_ ' f# !waI&HA@^BAEÁfIAA@E JE G* E5 G!IA )E) E? E, /AAH @'B GP}"@^TGh}_ 'Te#G8}X_ '@e#@GA@'BʵBAN@!A,AD.lfI"waIAFH AAAN,!!A?lCA A#waIfIfHAAHAA"BA#G/GfIAA@E JEG* E1 G/G/G!IA )E) E? E$ /AAH @'B GP}"@^TGh}_ 'c#G8}_ 'c#@GA@'BʵBAN@!A,ADG/,!!Ao?lfI"waIAFHAA#A@^BAEH^H}R_ 'Xc#] CAH^ ASG/G,fIA.lfI"waIAFH AAAN?G,fIA.0G/,fIA.lfIA!!waI&H.A!MG,fIA.<G/fIAAʵ,.lfI"waIAFH AAANÁfIAAʵ,.lfI"waIAFH!A. AB ANAÁfIAAʵ,.lfIA!!waI&H.A!ÁfIAAʵ,.lfI"waIA AFHANA" A.A@p'AP l@'AgI /h}"@^EtGG/A A /@-@""A@!!@##a@?A#AAϵ@'/, A/,/@/ } _ '`#@gIA A!DC@ϥ/A @M@O@G/G/!!!@"A@##a@_ AA#APAG@/ }_ ' `#@gIA A!DC@ϥ/A @M@O@G/!!!@"A@##a@_P/x"`}_ '_#}G/"`}z_ '_#uGHgI AG'AHYGgI EN.A)5 A4 A+?@*A/)5 A4 A @?#G/gI,!CA-@ A!AG!waI&HgI-AA@E * E G/G/G!IA )E) E? E!U @ 'I MG/G-G/!waI&HAA@E * E G/G!IA )E) E? E!U @ 'I MG/G-fIAA@E * E G/G/G/G!IA )E) E? E!U @ 'I MG/G-G/!waI&HAA@EgI !CA-@AG* E G/G/G!IA )E) E? E"C!U @BM@ 'I BG"G/!waIgI&H"CAεBM@ AµAM@E JEG/G* E G/G/G!IA )E) E?% )E}@ '$\# D'I% 'Zz`!5`AA @N -@*@G/G/G/""A@!!@##a@??GM@E JEG/G* E G/G/G!IA )E) E?'I% !/I 4`A1gI1D}@ '4[# D% 'G-AmA+5`A!:`!5`AA @ -@*@G/G/G/""A@!!@##a@?B`AJ@  E!U @ 'I DM@!G/G% ,)E}X@ 'hZ# D@~EE)E}@ '@Z#% 'D}F@ ' Z# D@p'AP?/X}"@^E4Gh}#_ 'Y#X}_ 'Y# G/@0}_ 'Y#G/@'!w H 'XǵGG4G"RG/tG }@ 'TY#8}_ 'DY#@'h'祠'8@!8@H DP% G (@'@@!A*@P!G""A@$@##a@Aϵ@'/ '/G/lP~E@EAE@[k 'X#@D票@G/G/"@}*_ 'PX#nG@^EE}@ ',X#DGк"`}_ ' X#@^EEE}@ 'W#D-<EA@AAEh}t@ 'W#Dr -.G/E@~AAEp}o@ 'tW#Dc-G/GEP}[@ 'DW#-G@^EEE}^@ 'W#M - G -G/@@'0'- A-9GE@EEE})@ 'V#D3% x'}b@ 'V# D$À% @>hG}>&@ 'hV#G/G% /="h }a[k '8V#% h}\U[k ' V#GM@E JEG/G* E?G/G/G!IA )E) E? E?G/GM@E JE G/G* E?G!IA )E) E? E?G/GM@E JE G/G* E G!IA )E) E? E!5 @?G/M@E JE G/G* E G!IA )E) E? E?!5 @?'I}?G/GM@E JEG/G* E G/G/G!IA )E) E?'I% !/I4 B1'J1D}@ 'S#WG-  EDB@@"D!5!@ ?&ED"J)EqE}T&@ 'S# EDm!waI'H 䁶fIA@^!JEEH}T_ '`S#2^ÁfIAA-ÁwHw I"waI#@GHA @4 D@䁶fIA@^!DG/fIA-  EDB@@"D!5!@ ?&ED"J)EqE}&@ 'R# ED1!waI'H?fIAAÁwHw I"waI!#@GHA @4 D@䁶fIA@^!DG/fIA-  EDB@@"D!5!@ ?&ED"J)EqE}%@ 'Q# ED!waI'H?fIAAÁwHw I"L"waIGHA @4 D@䁶fIA@^!DG/fIA-  EDB@@"D!5!@ ?&ED"J)EqE}%@ '0Q# ED!waI'Hd?fIAAØwH!waIw I'Hh}@j 'P#[`C4`G 䁶fIA@^!DTG/GfIAM@D!5 @ w@H G="@^%G-  EDB@@"D!5!@ ?&ED"J)EqE}x%@ '0P# ED!waI'H$?fIAA]ØwH!waIw I'Hp}@j 'O#[`C4`G 䁶fIA@^!DG/GfIAEM?&m"JEqE}L%@ 'O# EDe!waI'H?fIAA1!waI'H p}e[k 'G-  EDB@@"D!5!@ ?&ED"J)EqE}<$@ '@K#W)! @T?&G-  EDB@@"D!5!@J?v IwH#waI"AHgHB@@4@D`䁶fIA@^!DG/fIA -  EDB@@"D!5!@.?v IwH#waIAHgHB@@4@D`䁶fIA@^!DG/fIA-  EDB@@"D!5!@?"waI EGH D4 D@䁶fIA@^!DÁfIA-  EDB@@"D!5!@?"waI EGH D4 D@䁶fIA@^!DÁfIA-  EDB@@"D!5!@?"waI EGH D4 D@䁶fIA@^!DqÁfIA-  EDB@@"D!5!@?"waI DGH D4 D@䁶fIA@^!DYÁfIA0A1A`}T@ 'H#/&= "waI@@GH @䁶fIA@^!)EBGfIA!u- E!5 @ /(="GM@Ew I !5 @?GI?* E GH="G/'I@ /h="@^)EP}2_ 'G#}G/G!waI'HJ @ ?fIAAE@>EE؂}@ 'G#j<G/G@>EE}S@ '\G#^0G/G@>EtGX}@ ',G#R$G/G% '-@>EtG`}:@ 'F#CM@D !5 @ GH "-M@D !5 @ GH "- -}`@ 'F# D(?% '!)@$?!waI'H 䁶fIA@^!)EGfIA!@>EGP}@ 'F# D ?!waI'H 䁶fIA@^!)EG/fIA!@>E}@ 'E# D?!waI'H 䁶fIA@^!)EG/GfIA!@^EEEЂ}@ 'XE#D!waI'H 䁶fI A@^!nGfI-A!G/G@^EE}@ 'D# ED!waI'HS?fIAAG/G@^EE}/@ 'D# ED!waI'H??fIAAxG/G"waIGHA@@ 4 D@䁶fIA@^!)E2GfIA!e@>EX}@ 'D#]@>E(}@ 'C#U-w H % 'G/% '!waI'H 䁶fIA@^!)E GfIA!=@>E0}@ 'pC#c5 wJH}@ 'PC#.G@>E8}@ '0C#S%E@}@ 'C#!waI'H D 䁶fIA@^!)EGfIA!-w H - E!U @7?'I5?E)Ex}@ 'B# D-?!AG @>}&!@ 'pB# D!waI'H 䁶fIA@^!)EÁfIA!@>EH}@ ' B#@^EEx}@ 'A# ED!waI'H?fIAAG/G@^EE}@ 'A#DG/- E !5 @. 'I, -w H @@Epg)EE}@ 'HA# D @/"`}_ '(A#G/G EJEG@@0@GHg)E}@ '@# D_@0'0G!waI'H 䁶fIA@^!)EMÁfIA!@^EE}]@ '|@# ED!waI'H7?fIAApG/G@^EE}A@ ',@# ED!waI'H#?fIAA\G/G% P'"waI!GH! @䁶fIA@^!)EG/GfIA!EÀ% P'-A*@'B /P}"@^TGh}_ '`?#G8}_ 'L?#@GA@' ABNG/@>EEȂ}5@ ' ?#JG/G% P'"waIAGH!AA D 4 D@䁶fIA@^!)EGfIA!EE}Z"@ '># ED)!waI'H?fIAAEE}!@ 'P># ED!waI'H?fIAA@^EE}"@ ' ># ED!waI'H?fIAAG/G@^EEȃ}?#@ '=#G/G@^EE(}@ '=# ED /"`}_ 'h=#G/G!waI'Hq?fIAAG% "waI'GHA @ 4 D @䁶fIA@^!)EdG/GfIA!@>E} @ '<# D?!waI'H 䁶fIA@^!)ELG/GfIA!}@>E} @ 'p<# D?!waI'H 䁶fIA@^!)E4G/GfIA!e@>E} @ '<#]@>E}0 @ ';#U@>E}V @ ';#{M }_ ';#!waI'H D 䁶fIA@^!)EG/fIA!9M@Ec?/AA* @'B /p}"@^TGh}t_ '(;#G8}_ ';#@'!G4@A"'"@'- A*:G/-Mmw J@w@Jw`J}_ ':# D1?!waI'H 4 A 䁶fIA@^!)EGfIA! 05B}_ 'P:#Ex}_ '4:#G 05B}_ ':# D _!waI'H 䁶fIA@^!JEEH}_ '9#GfIAA- E!5 @?w I}s_ '9#GE@EwJE}>_ '`9#GKG/G@'Xǥ祧G//Ȼ"`}_ '9#G/"`}_ '8#GE@EEEȱ}s"@ '8#D!waI'H- 䁶fIA@^!)EEH}_ '8#{GfIA!uEE@}p_ 'P8# GEP}a_ '48#G/^>^~ (0ޥ8CkG/ '7##^"p}O_ '7#h!= G4G!DG/ED@",cHA"H4@aD@b^~ ( F),)H!'H'H 1FEA G 4 A),)H!'H'H@GG/G/JE}[[k 'D3# 4 A),kA#FA)HBbA!'H C@'Hm!C-@A^>^~ (CkG '2##^>^ F 1FC_ >A @4 D G/G)EJE}\_ '2#^>^CkG_$ BH"D!"@  "D!#@  P? !W%HAD@0tCDPkG/GGk '1##^>^~ (0޵81F/ FAA[ %vH@I/G/G/h! J%ND$@A,#@AH'`@ !5@o >G/!5@ !@8 % %,%H!5 @4 X%2 BA".D!(@ $bHG/G/G/" D!U @ A@"#D!(@ 4A?PA_$0BH"D!(@ Gо="E TGP}a_ '0#A bA/ BD BAG/i`F!U@@ 8! !oJE D/=""@诽AgJ@ }CX[k ',0#!5@@ 诽G="w`J@诽@$/="֢HeF }/X[k '/# 0`A mA !A?诽/="@ }#X[k '/#À% *)E}@ '/# D`_ E'I#/I*"WEH05B0J/ =""D4(DpD*P} _ '8/#G/G+.D!5C@t 7C@ !uB@h !B@V G!T@ T@ !uC@j yG!5T@& uG *4G#WeH@"GH#D4D%Dh! "D*%A,4@AHAJ@!BJ@#D5D"%A,4@AHAJ@@!BJ@%D"xG/G 4G*#WeHvH"GH#D44D$Dh! "D*%A,44@AHAJ@!BJ@#D5D"%A,44@AHAJ@!BJ@$D"TG/G*_ "WEH"Dh! 4&D*%A,"@AHBK@JCG/J? !W%HADj4FDJ9kEG_J? !W%HADjTCDJ-J? !W%HADjCDJ%j#G/JE4G_À% *}@ ',#h! %% A.*"@AJ DRKB}@ ',#_ +"WEH"D"D+Ì4E/JAAA?4G^>^~ (0ޥ8Ck ' ,##^>^~ (0޵%] 4G" FFi 1F RF? C!W%H sFADANDC ؿ= AA!=@k%]!kEE}-_ '+#j.I D jJE}@ 'd+# } J#!"@ = )!!e#J } !"@; _$%BH"D5 = aD!uB@ !B@ "b@!@A@ "")A@!$@A@?i_ #"WEH"D#i#"D#G/? !W%HD"D#G/ ] /P"4G"@}_ 'D*#jG/ = !e = I "#WeH#D4#D"I "vH$D"IA@)IA@)"#Dt"D"i#"I$D"D#*#!-@ p" ] kE/p="E4G" }V[k 'h)#/"@}j_ 'P)#-G = !) i_ #"WEH"D"D#_ $vAH#I"D#D$) } !@I# = ! ? AA /"@}D_ '(#G/GkEE}n_ '(#+,+H!'H'H!+@ %}" = S,ISHD})@ 'L(#%= ] "}@ '((#_ "WEH"D"D )) = ! kEE3G/ = ! _ $vAH#GI"D#D$"I? d!W%HvAHaD"D = ! = !!5 @ $dHfD!u@@ %WHeDt%D$i!a@)"GI? !W%HvAHD"D# = !!U @ iCFD!!@| EDT%D#xG!5@@m %WHeD#D$i!a@)"GI? !W%HvAHD"D# = !!U @a iCFD!!@\ ED#D#XG = !q = !!5 @H $dHfD!u@@ %WHeDt$D$i!a@)"GI? !W%HvAHD"D# = !!U @5 iCFD!!@0 EDT$D#,G!5@@! %WHeD$D$i!a@)"GI? !W%HvAHD"D# = !!U @ iCFD!!@ ED$D# G = !% i_ #"WEHTG"DT D# = ! = !!5 @ $dHfD!@@/ %WHeD%D$i!a@)"GI? !W%HvAHD"D# = !!U @ dfD!UA@ eD%D$G/!uF@ eD&D$G/!@@ eD'D$G/!U@@ %WHeD4$D$i!a@)"GI? !W%HvAHD"D# = !!U @ dfD!UA@ eD$D$G!uF@ eD&D$G/!@@ eD&D$G/ = ! = !!5 @ $dHfD!@@. %WHeD$D$i!a@)"GI? !W%HvAHD"D# = !!U @q dfD!UA@ eD$D$hG!uF@ eD4'D$aG/!@@] eDT'D$YG/!U@@M %WHeD4%D$i!a@)"GI? !W%HvAHD"D# = !!U @A dfD!UA@ eD%D$8G!uF@ eDt'D$1G/!@@- eD'D$)G/ = !A = !!5 @ i_$BHD!u!@ = !!5 @ #"D!%@ ? !W%HD%D#_ $vAH#GI"D#D$"I? d!W%HvAHaD"D = ! = !!5 @ ?$d"HaD!#@ gHU@A5 @"D ? !W%HaD%D$_ $vAH#I"D#D$)CG/_ $vAH#GI"D#D$"I? d!W%HvAHaD"DG/G = !!5 @/ I?$B"HAD!#@( GHU@A5 @"D# kEE}:_ '#D!5 @ wH#@ i_ #"WEH"D&D#_ $vAH#H"D#D$)G!!@) = ! _ kEE$vAH#GI"D#D$}_ '#IA@)}G/ = ! _ $vAH#GI"D#D$IA@)bk % _ $vAH#GI"D#D$)!@)4G% )E_t%= TG = !m )_ a"WEHAbDqDaG@? Dv!H#GIAD!-BCDD = AGH? "5@@d"GH!W%HvAHaD"D/GK,KH"GHGH? "F@d"GH!W%HvAHaD"D G/ = !9 _ $vAH#GI"D#D$i? C!W%HADAADC = !% _ $vAH#GI"D#D$ ()B h!= } $A#N@","H$)4G!@) G//ȿ}"G)Eh}_ '#G^>^~ (0ޥCk 'h##^>^`= FI "$WH$D"h!= A",i "H ] %]!A#@)4G" ] } *TG"#%I"$DT"D"j. *IjJ}@ '#IA@)*")!@)^>^CkG 'p##^>^ F)!5 @#H)@h}P[k '8#G/G)4 @IA,AH@!uB )E@}%\[k '#-G/G/G/)!5 @#H F)@)Eh}P[k '#)4 @IA,AH@4B 䡕DAB"D?)!5 @#H)@)Eh}P[k 'P#G)4 @)^>^Ck ' ##^> ^(~08^%]!*,*H 4G!5 @XJ XC/=" CCkE8}_L[k '#kEG}_ '#GC D}_ '#j.)E^DjJR@B4@F@}@ '\#`=j.p"/="AjJC~ }R[k '#/" G@}V_ '#XJE^> ^(~08^Ck '##^RF!5BsF BD}!_ '#G/RF_^CkG 'x##^>^~ (0޵8@>/=" FP}P[k '4# D@)E(}_ '#/"(}_ '#/"@}_ '#GG//")E(}_ '#JE%! 4G_G/G/G*!5 @#H*@JEh}O[k 'p#G*4 @JA,AH@4Ah *!5 @#H*@JEh}O[k ' #G*4 @JA,AH @4AT *!5 @#H*@JEh}O[k '#G*4 @JA,AH @4A@ P]8" C G. BDG/G/G/*n!5 @#H k@* @JEHh}O[k 'D#HG*4 @JA,AH),"Hc HGHA)H4@@aDi< @NK@","H 8$ 4`A aA?NK@",A"H"<nE@EE8_ D?JEX}D[k '# /0"/8="G/0"/P="(}_ 'X#)E^>^~ (0ޥ8CkG ' ##^>^~ (0޵8%] @4GX" RF+, 1FsF+H G"A)6 Hz@G/G!I+@T @@F.4 @a,1@FBJaqHRHE_GtG/!'A 4GW 4A"`HK@","H!(@ cD/" IK@T@@ F!1 F1H}L_ '#m 4 A" Ia@-K@","H!(@ 4@A?A! H+@T @ DB1 DAH!J@, A/p="EBDJE }Q[k '# C G GA! H+@T @рFA.4 @a,1FBAJG="sHTHA 4 A }Q[k ' # *A?/"H}_ '# A!I+@A,AH!A)6@H?%=!/="@^ E(}X[k '# (}k_ '#4G^>^~ (0ޥ8Ck 'p##^>^ F/"0]GJE GH_G" ]JEGA_өC)E^>^Ck '##^>^ 1F F)Eȁ}[_ '#G @JE)EP_G/G)E_^>^CkGQ1BQ2B 1 BDk 'h##^F!5 @1F G="P}_ '4#G/wJ@%} # A@ /8="P}z_ '# G/G#AA@G}_ '#^CkG '##^F!U @1F J G`="P}Y_ 't#G/8!= "J!@DA@x}`Q[k '@# DG}_ '$#G/G^Ck '##^FF!5 @1F /="P}._ '#G/GwJF!U @ J G="P}_ '#G/8!= "J!@DA@?B}o[k 'L#@^CkG '0##^>^0 E!U @ 1F 'I G="8!= "/I!@DA@}o[k '#4G G/G/=")EJEP}_ '#^>^CkG 'x##^>^0 E!5 @ 1F G ="P@D!5 @ /H="BDÐv Iv@HB?B}Jr[k '#4G G/p=")EJEP}_ ' #^>^CkGQ1BQ2B0 @Dk ' ##^>^~ ( 1Fl F RF`D sF C@D G/G/G!b@ BDB@D?@D!U @ GH lG/GLL@D!5 @ w@HA@~ = AA@!=@kG/G}_ ' #%= HA DHA)BAbG/)E4GkE؁}_ '| #)E4GOG/EtGkE؁}_ 'L #EtGCG/ TGkE؁}_ ' # TG7G/ GkE؁}_ ' # G+G/X!= P]P!} 0"C! H*@"@)$@%GH!= P]a0"!#@J`@I @P]`!= (Ba"5@@4`@"C@a!@bB@J @I@@0 GkE؁}o_ '< #0 GkE D}Y_ ' # DkE,P@AE4FH}9_ ' #G kE,P AE4FH}-_ ' #C^>^~ (Ck ' ##^D!U @1F H /"@}_ 'X #G<G/D!U @ H 8!= "H!H%} @D D/="D@$@BaD 8!= a!H%] hf D/="#@3@Aw`J 8!] !HB%}  D/=""@AwH(}U[k '| #%= G}_ '` #^CkG 'H #P#^> F1FC}t[k ' #4@/"@}V_ ' #G )EC}t[k '#4@@> @4G^>CkG '##^FF7 @1F /0="G8!= "J@DD@F7 @B !J D$@!BD }_ ',#/X="P}@_ '#^CkG '##^>^~ pP1F`Ev@H7 @#6@H /="kEP}%_ '#G/8!= "oI!@DA@M`%]!*!aA p*`*@G/ kE} @ '@#* D!!A /="EP}L[k '# D G"|G/ kE)E}9 @ '#/"oG G="EP}nL[k '# Dh j. kEjJ)E}@ '|#/"WG%= `!%= aWG/G!5`@J %]!*!aA x*h*=G/G kE}> @ '#* D!!A /="EP}9L[k '# D3 kE)E}@ '#G"$G/ G="EP}"L[k 'x# D j. kEjJ)E}i@ 'L#/" G%= h!%= a G/G/"@}V_ '#G4G^>^~ Ck '##^P1FFv@H!5 @"6@H /8="P}`_ '#GwJ@%= `G/G!5@@ /h"@}(_ 'H#G G/%= hG}7c[k '#4@C^Ck '##^0v H!6 H %= `G!5 @ /h"@}_ '#G G/%= h}c[k '#@@4D^CkG 'p##^>!5B5 =B QG!UBF MG%=!`)pI!"@! )}@ ' #I!@ )};@ '# G/i. )iJ}@ '#%= `X}<@[k '#%= p!A`!A&À%=!h)xI!"@ )I}@ 'X#h X}%@[k 'D#x)Ih)IG/%= h}X@[k '#G/"@}_ '#^>Ck '##^>P@D BD b`D G!C@ cDc`D?8!] !oHB%=! D"@ !а}pk[k '`# ذ}sh[k 'L#^>CkG '0##^>^~ FJ@D!5 @ 1F %= !G="w@H)E(}S[k '#8!= "OH!@DA@" *j)EwJw Jw`JkE}_ '#C^>^~CkG 'h##^>^ F 1F E@E5@5 @CC8`D8DB@!@CD$D @ *AG!5@ w Iw@IG/G8!} !/I"OIc D@D#@C@"}j[k '#'IGI A@4GG/GC C^>^CkG '`##^>^~ FK@E 1F G/G!jA JEJ@E?, E G/G/G/G!A )E) E?@E!5 @ %= !!*@  E!5 @ %= !!)@ kEE}@ '#GJE)E_@E!U @ GI 1F 4G A aAG/G/G/kEE 4@A_ӡIAD A aA?^>^~ Ck '##^>^~ (1F FRF$ sF F F F G/G/G/!@ 1F$ F? F !5 @ 'J EEH}_ '@#PJE4GaG/1/JEEH}_ ' #CJEEQ AE4 FSG/0 F G/G/G!B 1F1 F?J@D G/G/G/G!BA BDB@D?@D!5 @  F!5`@w@H  D'`?AkE p"/=")E }=K[k '#/"@}_ '#GG/G!/J"'I)5 A"D4 A+ aA@)5 A4 Ak aA?DcDEEH}a_ '#kE^>^~ (CkG '`##^>F@D!5 @ %=!/=" w@H(},R[k ' # ÁGH G8!= "OH!@DA@^>Ck '#%] "!1@b0 BDG/G/G/B0 FF G/G!Q@ 1F1 F? F!5 @# #,v JbCHA#HADC<B0 F4`@ G/G/!B 1F1 F?$!1@?%= !!1@ #,4GA#H#<kG/GkG/Gk '##^>^~ (0޵8 1F FL RFsF@EF G/G!A JEJ@E?- E G/G/G/G!A )E) E? E E)E_ %= G}_ '#EEED$@E* JEV_3 , HkE %] G/G/G/"+ , H aAA @4 D+4@ , H aA?%= !EEE+ aAH}_ '(#GG E /"@}_ '#GG//="JE/8=")EEP}*_ '#G/GkE^>^~ (0ޥ8CkG 'p##^%= !F Q@D@D@6 FF2 J!U @ GX="P}_ ' #,/}"D4Gh}d_ '#G"G/G/G/p2@?`A@ B@F@ G/G/G!P@ FF?!p@?1 @D^CkG '@##^q`DF| D@HG!U @a@ /="DP}_ '#}b@ G/G/G/!p@ FF?Gp2@0@` a@b@`D @ @cD G/G/!p@ FF?!@?@ /"@}`_ '(#KG/GF !5 @ J /="P}v_ '#<G/GD`D cD G/GG/G/!p@ FF?F`5`@CAD@/8="P}T_ '`#G!U`@ "J!HADG/`="cDP}C_ '# /}"D4Gh}_ '#G^CkD!U @Q GkG14G"H!7'H FAD!`Q@D1F?4GGH!OH @0B @!BG/G/#0@ @a@0B? A@0G/G0BPBk '##^DF DG/Ge`D!U @G D DG@D!U @? GHgH@_@: !oH"GH"D !5@A @  @%@/""A@!!@##a@?A@ @@"@@!5@A @  @'@/G/G/G/""A@!!@##a@?A@ @@"p2B@@@ G}"D4Gh}_ '#G^CkG '##^RFFFD@F GG//}"TGh}_ '<#GG/GGoG/ @G/f`DD G/G/!@ cDc`D?!@V `D !5 @ gH fNá@@"D HG/`D 2B?pƴBŴ;GG/G2B?pB@`gH?!5@@A @  @%@##a@!!@$$@?A@@@e`D@ @G/G/!@ cDc`D?`D!U @ gH @@"D?G/`@@@?A G/G/G0B00B0A!_^Ck '##^>^ RFXI FpiJE !5 @ 'J * DJE)E}K_ '#GG/X JE^>^CkG '##^2"$@RF1 D!D@F!U @ /="P}_ '(#&G/G4G"Jr!7'HADF!5 @ /="P}_ '#G/GwJrAB(@G/x2C!"@ HA(@"@^Ck 'x##^>^ RFJ"!(@@ G}"D4Gh}_ ',#G:G/G" 1 E@ )E G/G/!"A BDI@D? @@@D !D`!5`@ GH @@G*aD1JEF3hB}_ 'l#/8"@}*_ 'P#G *^>^Ck ' ##^>2AB2!B"2 B@! !A)2$@2A@H}l_ '# !AD)E^>CkGGJ"OJF 5 @!HC@ADPB `d@q@G/!!!@#a@""A@@@@!B1kG '(##^ѤD Gh="F@D!U @ GH `/="DP}_ '#!G/%= cD!"OHC@%5@0BD@!HpBADFPB @@/G/G/!!!@$@""A@@@^Ck '8##^>^~ (0w I E!5A?@5@@!C aE 1F `G=")EJEP}_ '#*G/%!RP-2@!@ E 2A *B /}"TGJEh}_ 'p#G8}__ '\#*!P-J4 @"*"@*%= PAAA"kE^>^~ (CkG '##^>^~ (0޵%= sFP!M Fa1F RFbA E A *B G}"TGJEh}_ 'l#G8}_ 'X#*J4`A"*"@*%}!+EJE)E) !A )E) !A)E )E !AH}x_ '# P+aK)EG/GG^>^~ (0ޥCk '##^>^~ F, E!5 @ 1F /="GL@Ew I !5 @ GI /="JE* E G ="G/@'IA@ /H=")EkEP}_ '#(G/GRJJ@RA*  E 2A +B G}"TGkEh}G_ 't#G8}_ '`#+!K4@A"+"@+,4G*^>^~ Ck '##^FF!5 @1F /p="/G/GD@DwJ !5 @ GH /="BD F G="G/`Ja@ /="GRR@ G =" G/FBb@ B /H="DP}_ '#G/4G^CkG '#X]%= !  "#@"kG '##^`!= AFp"/p="rRBR@B }UE[k 't#/"@}-_ '\#G8}_ 'H#^CkG '0##^>^P=( p!]!}s_ '#( p}U_ '#x!= `!} JG? #@CD^>^Ck '##^>^~ (0޵P F`!] 1F(% RFlAB!5 @ aD"AAD!$AsF p!= aB A!I@A#@! G/G/G/!I@B#@"!+@ "!,@ (%4 A!5 @ AD!$A B A!I@A#@!?p!= Aa)AA"@!# P=(!`!]!7 HjW HA@ b@`/"}r_ 'x#p!= Aa)AA"@ax!] *b4 @*i@#,bIA#H4GADC<G^>^~ (0ޥCk '##^Pݤ`!] (&BB!5 @aDb@AD!e@ p!= !C@B$@"!0@ "!1@ (&4`@!5 @AD!e@ B`@!C@A$@!?p!= Aac@B"@"!0@ "!1@ B4G/"@}^_ ' #G^Ck '#P=p!] (!BB!5 @aDa@B"@"!0@ "!1@ kG/GkG/`!= P}A(#p! @!5 @AD!DG/4@'Da@E @@#!0@ #!1@?!@ &@!?GkG ' ##^P=p!] (!BB!5 @aDa@B"@"!0@ "!1@% p! a@A%@! `!= P}AD(#D@!5 @AD!D/4@&Da@E @@#!0@ #!1@ !@ (@!?G 4GG/"}_ ' ߽# ^Ck '߽#!uB P]("G; x! BDp! GG/GC@","H0@ %@" B@"(&4`@a@@?kG/P]("G x!!BDp! G`! G/GHC@","H0@ &@" %!5 @%('4`@a@@?k 'ݽ##^>^~ (0޵8Q F@D!5 @RF 1v@H"6@H F!5 @@^ GP=(! Gw J %}! G/x!= !-@A,@AHE@ p! %AW@@ K#!A@ #'H.@| BD!G/G D@E JE G/GG/G/!QA 1F* F? F C5`@"D` 'J.@] +!!BZ Y`p/!A G}")E4GEh}_ '`ܽ#4G8}_ 'Lܽ#p! %AA@D!5 @ +) !AI+ !A) !A4GG/G+) !A!OH)+ !AGH) !AA @4 D) !Ap! %AA@D!5 @ +) !AI+ !A) !A4G +) !A!OH)+ !AGH) !AA @4 D) !A+) !AI !AP=(! 4AA Ag?%= !!A)^>^~ (0ޥ8CkG 'ڽ#%] H"!B P"!B X"!B %= hkG("!B 0"!B `k8"!B @"!B pkGk 'Hڽ##^F!U @ J @F!5 @ w@J P!  1F0}_ 'ٽ#G^Ck 'ٽ##^>^~ (0޵8 F 1F RFH~8}_ 'ٽ# D JE)EC}V_ 'xٽ#4@ GX!5@ p!= @^!)EbB@BA@JEEb}_ ',ٽ#GP=`(A`!!7@H,W@HD@b@ #@4D G"} _ 'ؽ#p!= @Aa@A"@A!ax!] ,b4 @,d@)EHJEC,EHH>BCHDa#H%}!)E"D#<}-_ '\ؽ#+JEE)E}%_ '<ؽ# EJE)E}_ 'ؽ#/4 @/4G^>^~ (0ޥ8Ck '׽##^FC@D !5 @ GH "#C@D !5 @ GH "#C@D !5 @ GH "#%}"3,#C3H@}V_ '8׽#^CkG ' ׽##^>^~ FI 1F@D RF !5 @ GH ")I@D !5 @ GH ") )C}_ 'ֽ#!5@ x!= ~!#@A,AH!kB p!= Aac@A"@%] ! B!"@ p"/="kE }A[k ',ֽ# /="G4@ G8="JEP}_ 'ս#.G&P=(!`!]!7 HjW HA@ b@`/"}>_ 'ս#p!= A)a@A"@!)"@A!x!] *b4 @*d@C,kEa#HBCH"D#^~CkG 'ս##^>^~ FI 1F RF@DI !5 @ GH ")I@D !5 @ GH ") F GP") F Gx"@}/_ 'dԽ#GGC} _ 'DԽ#!5@! x!= 0~!#@A,AH!lB p!= Aac@A"@%] ! B!"@ p"/="E }-A[k 'ӽ# /="*G/G4@ G8="!G/!5@ p!] 0>Ba!@A"@%] ! B!"@ GLG/@E !5 @ GI @+AA 0+AA /="JEkEP}_ 'ӽ#5G/G!5@ p!= 0^!bB@BA@B(G/GP=(!`!}!7 HkW HA@ b@`G"}w_ 'ҽ#p!= 0A)a@A"@!)A!x!] +b4 @+d@C,Ea#HBCH"D#<4G^>^~ CkG 'ҽ##^>^~ FI 1F RF@DI !5 @ GH ")I@D !5 @ GH ") )C}W_ '|ѽ# 5@ /="&G/Gx!= 0~AC@","H!,@ p!= Aac@A"@%] ! B!"@ G G@E !5 @ GI @+AA 0+AA /="JEkEP}j_ 'н# G/Gp!= 0^!bB@BA@4GB^>^~ CkG/ '`н##^>^ 1F*,*HRF)'IA*H*<'I}R_ ' н#*,i*IA*H !E*=^>^Ck 'Ͻ##^>^~X= RFi_IA@))kEJAAI^>^~CkG 'Ͻ##^>^~ = ! F 1F !D*G/G/G).J0JJ0}C[k '$Ͻ#)4 @)G/).J0JJ8}B[k 'ν#I","H!'H'H!$@# )4 @) =!G/).J0JJ@}UB[k 'ν#I","H!'H'H!+@ )4 @)? = !4G+&G/ =!).J0JJH}B[k 'ν#i#,#H!H'H$@%@8@D8 DAD @!@7 @ 4`@) +4GG = *G!^>^~Ck 'ͽ##^>^~ = ! F 1F !D*G/G/G).J0JJ0}B[k '$ͽ#)4 @)G/).J0JJP}B[k '̽#I","H!'H'H!+@# )4 @) =!G/).J0JJ@}A[k '̽#I","H!'H'H!+@ )4 @)? = !4G+G/ = *G!^>^~Ck '̽##^>^~ = ! F 1F !D*G/G/G).J0JJ0}=B[k '˽#)4 @)G/).J0JJ}A[k 'd˽#)4 @) =!G).J0JJ}A[k '$˽#)4 @)?)4G+G/ = *G!^>^~Ck 'ʽ##^>^ =! FG/).J0JJ0}A[k 'ʽ#)4 @)G/I","H!'H'H!AA 4@@)4GGG^>^Ck 'ʽ##^>^~ F 1F4G 4G_G_JEh}[@ 'ɽ# D AA +kE4 @JE0_ DG/ G)E^>^~Ck 'pɽ##^>^%= ! F 4GG*_/G_C Gh}/@ 'ɽ#G_ӠC D ?A >*G/GG_C Gh}@ 'Ƚ#C_ӠC D ?A (>}_ 'Ƚ#  G)E^>^CkG '`Ƚ##^>^~ FtG 4G\_GY_%= !,QC G_C_ӠC D ?AG`08>}_ 'ǽ# ?G/ C CJE)E_.JE)E_*JE)E_.G0_#C_ D(`P>X"4GX>CX>P_ D`@H>X^_ X>4G @/A^@&@ ! X>0@@ A@@? G/@H>G_ G/ GkE^>^~ `#kG 'ƽ##^>X= = C!h}_ 'xƽ#)>! G/G^>CkG '8ƽ##^8!= 1/J! F!B1p}_ 'ƽ#^CkG 'Ž##^>^~ (0޵8 F E1F )E G/G!%A DD?%]!P=J8!"@!$@ A@ @G"@}k_ 'TŽ#G/D h.@3 4@*D,Ga$HBDH"D$^~ (0ޥ8Ck '(##^>%=!))_I4@@)",A"H"< ^>Ck 'ؽ##^>%=!))_I4@@)",A"H"< G}_ '#^>CkG 'p##^>^%=!) RF)_I4@@)",A"H"<G0="IJE }}{[k '#^>^CkG/#^>"AH!!H@D D D@DA @"DA @4 D14`Dr4DCkG#? 0@1@0JvJ2@vJF0FAD>^Ck 'X##^>1^CCC F}_ '(#%= !)>^ ~)I$Ai^>Ck '軽##^>^F`D!5@@ 1F w`H ~@C@D!5 @ w@H ^ >[?XG%= !!"@, #C}_ '\#\G/G_)E`D!5@@ w`H ~#@C@D!5 @ w@H ^ >[?XG%= !!"@ #C}_ '̺# =$P! @}_ '#G G/G_@XG ? X4G G@^>^CkG 'P##^>^~ ^ F@F 1F!5@@ sF w@JH^ G/G7@R@D!5 @ w@HH^H>[?X G%= !!"@( 2R}E_ '#\JE@F!5@@ w@JH^G@R@D!5 @ w@HH^H>[?XG%= !!"@ 2R}%_ ',# =$P! @}Y_ ' #GPG/G!UiA"!HA@?`= AA@!=@?kG/G@X.G/0@X*G/P@X&G/p@X"G/@XG. )E,G/GXG/@XG/XG/@XG/@XG )EG/GCCC}_ '췽#%= !)0>8^@~)I$Ai^>^~ ^Ck '##^>^~ ^q F`DQ !5 @ gH c`D!U @Q gHO 8!] !oHB D"@aC,D!5@CH wHH G/7d`D!5 @ w`HH~H>[?X G%= !!#@( $D}_ '#\JED!5@@ wHHG@d`D!5 @ w`HH~H>[?XG%= !!#@ $D}e_ ',# =$P! @}_ ' #G-G/GkE!M@ !N@?B\\}r[k '̵# \}b[k '#B\\}b[k '#`@X\CCC}"_ 'x#%= !)0>8^@~)I$Ai^>^~ ^CkG '(##^>^q`D F !5 @ gH c`D!U @2 gH0 8!] !oHB D"@Ab,D!5@bH wH8 G/Ge`D!5 @ w`H8~8>[?XG%= !!#@ %E}_ '<# =$P! @}_ '#GnG/G!uHA"!H7F@?= AA@!=@?kG/G\}@[k 'ij#[88ޤ!AA@ 4 D)QG/\}I[k '#7G/\}Ub[k 'd#/G/\}e[k 'D#'G/\}p[k '$#G/\}z[k '#G/\} Y[k '䲽#G/\}5L[k 'IJ#G/\}Q[k '#\CCC}e_ '#%= !) >(^0~)I$Ai^>^Ck '@##^>^Q@D F !5 @ GH "1Q@D !5 @ GH "1Q@D !5 @ GH "1Q@F!5 @ Q@D!U @ GH F!5 @ G(G/8!= "OH!%=!@D/h="A@ w@JbwJ(}[k '8# }p[k '$#\CCC}_ '#)* >(^0~*JDAj^>^CkG '##^>q`D %=!C)!"@ GG#C}_ 'l#\h Gx=" }Kx[k 'L#4G^>Ck '0##^>}_ '# DG 帱}@ '#C)E}W_ 'ܯ#G^>Ck#^G4GE^CkG '##^>^~ (0G F 1F RF sF F]N@]$B !D" }x[k '0#GE^>^~ (0Ck '##^>^~ (0G F 1F RF sF F]N@]$B !D" }w[k '#GE^>^~ (0Ck '`##^> '= A !@@i !A@[k '0#)?^>Ck '##^>^~0'] b4`@ "G A@A@"4`@? @)E 0'}!_!!!HA+@a *A@[k '#)E?бȰ}{[k '#^>^~Ck '`##^]$xzB " 4G"ر}_ '0#^CkG/G# '#^=} Bq[k '^쬽##kGG# 'Ь#^}5r[k '^##k# '^#> ^~@G D"<@ @䨱}}EH]1l@Jr[k 'H#@=)!I4@A䨱}LA})@:r[k #A 'I#4@A^^>~ 0#kG# 'Ы#^~>^@G D"<@@}Cr[k '#@]J!*4 A `䨱}}+A7r[k CA '*\#4 A^^>~0#kGGG#~^~{'{#@[k~{'{#@[k~{'{#@[k^#k#~^~{'{#@[k~{'{#@[k^#k@ p@а@Ȱ@@@@P@@@@@ @@@@B@@@@ @B@ @@@@B@@@@ @B@ @@@@ @B@ @@@@ @B@ @@@@ @B@ @@p@@ @B@ @@h@@@@J`@ @@X@@@@J`@ @@P@@@@J`@ @@H@@@@J`@ @@@@@@@J`@ @@8@@@@J`@ @@0@@J`@ @@(@@J`@ @@ @@@J@ @@@@@@J @ @@@@@@J @ @@@@@@J @ @@@@@@J @ @@@@@@J @ @@@@@@J@ @@@@@@J`@ @@@@@@J`@ @@@@@@J`@ @@@@@@J`@ @@@@@@J`@ @@@@@@J`@ @@@@@@J`@ @@@@@@J`@ @@@@@@@J@ @@p@@@@@J@ @@h@@@@@J@ @@`@@@@J@ @@X@@@@@J@ @@P@@@@J`@ @@H@@@@J`@ @@@@@@@J`@ @@0@@J`@ @@ @@@J `@ @@@@@@@J!`@ @@@@J"`@ @@@@@@@@J#@ @@@@@@J$@ @@@@@@J%`@ @@@@@@J&`@ @@@@@@J'`@ @@@@@@J(@ @@@@@J)`@ @@@@@@J*@ @@p@@@J+@ @@X@@@J,`@ @@H@@@@J-@ @@8@@@@J.`@ @@0@@@@@J/@ @@ @@@@J0`@ @@@@@@@J1`@ @@@@@@J2`@ @@@@@@@J3`@ @@@@@J4@ @@@@@J5`@ @@@@@J6@ @@@@J7`@ @@@@@J8@ @@@@J9`@ @@@@@@J:`@ @@x@@@@J;@ @@h@@@@@J<@ @@X@@@@J=`@ @@H@@@@J>@ @@8@@@J?`@ @@(@@@J@`@ @@ @@@JA@ @@@@@@@JB`@ @@@@@@JC@ @@@@@@@JD`@ @@@@@@JE`@ @@@@@@JF@ @@@@JG`@ @@@@@JH`@ @@@@@JI`@ @@@@@@JJ@ @@@@@JK@ @@@@@@JL@ @@@@JM`@ @@@@@@@JN`@ @@p@@@JO@ @@`@@@@@JP@ @@P@@@JQ`@ @@8@@@JR@ @@(@@@JS@ @@@@@@JT`@ @@@@@JU@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@@@ @@@@ @@x@@ @@h@X@H@8@(@@@@@@@@@@@x@h@X@H@8@(@@@@@@@@@@@x@h@X@H@8@(@@@@@@@@@@@x@h@X@H@8@(@@@@@@@@@@@@ @@@@@=@`@@ @@@@@@@@ @@@@@=@@@ @@@@@=@@@ @@@@@=@@@ @@@@@=@@@ @@@p@p@=@@@ @@@h@h@=@@ @@@`@@@X@X@=@@ @@`@`@@@P@P@=@@ @@@`@@@H@H@=@@ @@@`@@@@@@@=@@ @@@`@@@8@8@=@@ @@@`@@@0@0@=@@ @@@`@@@(@(@=@@ @@@`@@@ @ @=@@ @@@@@@@@=@@ @@@@@@@@=@@ @@x@@@@@@=@@ @@p@@@@@@=@@ @@h@@@@@@=@@ @@`@@@@@@=@@ @@X@@@@@@=@@ @@P@`@@@@@=@@ @@H@`@@@@@=@@ @@@@`@@@@@=@@ @@8@`@@@@@=@@ @@0@`@@@@@=@@ @@(@`@@@@@=@@ @@ @`@@@@@=@@ @@@`@@@@@=@@ @@@@@@p@p@=@@ @@@@@@h@h@=@@ @@@@@@`@`@=@@ @@@@@@X@X@=@@ @@@@@@P@P@=@@ @@@`@@@H@H@=@@ @@@`@@@@@@@=@@ @@@`@@@0@0@=@@ @@@`@@@ @ @=@@ @@@`@@@@@=@@ @@@`@@@@@=@@ @@@`@@@@@=@@ @@@@@@@@=@@ @@@@@@@@=@@ @@@`@@@@@=@@ @@@`@@@@@=@@ @@@`@@@@@=@@ @@@@@@@@=@@ @@@`@@@@@=@@ @@x@@@@p@p@=@@ @@p@@@@X@X@=@@ @@h@`@@@H@H@=@@ @@`@@@@8@8@=@@ @@X@`@@@0@0@=@@ @@P@@@@ @ @=@@ @@H@`@@@@@=@@ @@@@`@@@@@=@@ @@8@`@@@@@=@@ @@0@`@@@@@=@@ @@(@@@@@@=@@ @@ @`@@@@@=@@ @@@@@@@@=@@ @@@`@@@@@=@@ @@@@@@@@=@@ @@@`@@@@@=@@ @@@`@@@x@x@=@@ @@@@@@h@h@=@@ @@@@@@X@X@=@@ @@@`@@@H@H@=@@ @@@@@@8@8@=@@ @@@`@@@(@(@=@@ @@@`@@@ @ @=@@ @@@@@@@@=@@ @@@`@@@@@=@@ @@@@@@@@=@@ @@@`@@@@@=@@ @@@`@@@@@=@@ @@@@@@@@=@@ @@@`@@@@@=@@ @@@`@@@@@=@@ @@@`@@@@@=@@ @@x@@@@@@=@@ @@p@@@@@@=@@ @@h@@@@@@=@@ @@`@`@@@@@=@@ @@X@`@@@p@p@=@@ @@P@@@@`@`@=@@ @@H@@@@P@P@=@@ @@@@`@@@8@8@=@@ @@8@@@@(@(@=@@ @@0@@@@@@=@@ @@(@`@@@@@=@@ @@ @@@@@@@@@ @@@@@=@`@@ @@@@@@@@ @@@@@@@@ @@@@@=@@@ @@@@@=@@@ @@@@@=@@@ @@@@@=@@@ @@@@@=@@@ @@@@@=@@@ @@@@@=@x@@ @@@@@@p@@ @@@@@@h@@ @@@x@x@=@`@@ @@@@@@ @@@@@x@ @@@@@@ @@@@@@ @@@@@ @@@@@=@ @@@@@@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@p@p@=@ @@@h@h@ @@@h@h@@ @@@`@`@=@ @@@X@X@=@ @@@H@H@ @@@8@8@@ @@@(@(@@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@p@p@=@ @@@`@`@=@ @@@P@P@=@ @@@@@@@=@ @@@0@0@=@ @@@ @ @=@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@@ @@@x@x@@ @@@p@p@@ @@@h@h@@ @@@`@`@@ @@@P@P@@ @@@H@H@=@ @@@8@8@=@ @@@(@(@=@ @@@ @ @@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@h@h@=@ @@@X@X@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@x@x@=@ @@@h@h@=@ @@@`@`@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@@ @@@x@x@=@ @@@P@P@=@ @@@P@P@=@ @@@H@H@=@ @@@@@@ @@@@@@@=@ @@@8@8@=@ @@@0@0@=@ @@@(@(@=@ @@@8@8@=@ @@@ @ @=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@h@h@=@ @@@H@H@=@ @@@@@=@ @@@@@=@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@=@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@x@x@@ @@@p@p@@ @@@h@h@@ @@@`@`@@ @@@X@X@@ @@@H@H@@ @@@8@8@=@ @@@0@0@@ @@@(@(@=@ @@@ @ @=@ @@@@@@ @@@@@@ @@@@@@ @@@@@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@@ @@@@@@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@@ @@@@@@ @@@@@ @@@@@@ @@@@@@ @@@@@=@ @@@x@x@=@ @@@p@p@=@ @@@h@h@=@ @@@`@`@=@ @@@X@X@=@ @@@H@H@=@ @@@@@@@@ @@@0@0@=@ @@@(@(@=@ @@@@@=@ @@@@@=@ @@@@@@ @@@@@ @@@@@@ @@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@ @@@@@@ @@@@@=@ @@@@@=@ @@@x@x@=@ @@@`@`@=@ @@@P@P@@ @@@@@@@=@ @@@8@8@@ @@@0@0@@ @@@(@(@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@ @@@@@@ @@@@@@ @@@@@@ @@@p@p@@ @@@h@h@@ @@@`@`@@ @@@X@X@ @@@P@P@@ @@@H@H@@ @@@@@@@ @@@8@8@@ @@@(@(@@ @@@ @ @@ @@@@@@ @@@@@@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@@ @@@@@=@ @@@@@ @@@@@=@ @@@x@x@=@ @@@@@=@ @@@@@@ @@@h@h@=@ @@@`@`@=@ @@@P@P@@ @@@H@H@=@ @@@@@@@@ @@@H@H@ @@@8@8@ @@@(@(@ @@@ @ @ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@@ @@@@@ @@@@@ @@@@@@ @@@@@=@ @@@@@ @@@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@ @@@@@@ @@@@@=@ @@@@@ @@@@@ @@@x@x@ @@@x@x@@ @@@x@x@=@ @@@p@p@ @@@h@h@ @@@X@X@=@ @@@P@P@@ @@@@@@@@ @@@8@8@@ @@@0@0@=@ @@@ @ @=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@@ @@@@@=@ @@@@@@ @@@@@=@ @@@@@@ @@@@@@ @@@@@@ @@@@@=@ @@@@@=@ @@@x@x@@ @@@h@h@@ @@@`@`@=@ @@@P@P@@ @@@@@@@@ @@@8@8@@ @@@0@0@@ @@@(@(@@ @@@@@ @@@@@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@=@ @@@@@@ @@@@@=@ @@@@@@ @@@@@=@ @@@@@ @@@@@=@ @@@@@@ @@@@@`@ @@@x@x@@ @@@p@p@@ @@@h@h@@ @@@`@`@@ @@@X@X@@ @@@P@P@@ @@@H@H@@ @@@@ @ @ @ @@ @ @(@@@ @ @ @  @ @ @(@(@ @JM@@@J @`@J)@ @@@@@@P@@@@ @ @P@@@JM@@@J @@@@@ @@@@@@@ @ @B@ @B@ @B@ @B@B@@@ @ @ 8@@8@@@@@@ @ @8@@@@@@ @@@@@@@@@@ @ @ `@ @@@@ @@@@ @@@@@@@@`@J@@@@@@@ @ @@@@@h@@@ @@@ @@@ @ @@@ @@@@ `@@4 @@3 @@@ @ @  @`@@ @ @B@ @B@@ @@@ @ @@@@ @@@ @@4 @ @ @@ @@3 @@@ @@@@ @ @@@@@ @ @@@@ @ x@@@@@ @ @x@@@ @@@@@@@ @@@@ @@@@ @@@@@@ @ @@@@@ @@@@ @ @ @B@@ @ @ @@@@ @4@@@3@4@>@3h@4@8@@@38@@@ @ @@@@ @ @ @@@@@ @@@ @@@@ @ @@@@ @@@@ @@@@ @@@@h@@@ @@@@@ @ @@@ 8@8@@@ @@@x@@@@@@ @@@@ @ x@@ `@@x@@@@@@ x@@@ @x@x@@@h@@ @ @H@H@@ @ @@@@@@ x@ @ @@H@@ @P@P@@ @ @ `@ @ @x@`@@ @@@@@@ @ @0@0@@`@@J@@@`@J`@`@@@J@ @@0@@ @`@`@@@J@ @@h@@ @ @ @B@@ @ @h@ @ @4@4@4 @@3P@@@@3 @@@@3 @4 @@3 @@ @ @ @ @@`@@@@@J/@ @@ @@ @@@@@@ @ @ @@@@@@J`@@@J`@@@J @ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@J@ @@@@x@@J@ @B@ @@@@@@0@@ p@ @0@@J`@ @@8@ 8@8@@@ @4@@@x@0@@p@@3P@@ @@8@@ @ @ X@ @@(@8@8@@@@ @0@@@ @@8@@ @@ @@@ @ @(@8@@ 0@>@  @@>@@ @@@@ @@ @(@@@ @@@>@@ @ @ @ @P@@ @B@@8@P@@@8@@ @ @B@@ @@p@ @@@ @@8@@ @B@@@@ @ h@@@@@@p@p@ @ @ @ @`@@@@ @ @ @ @`@@@@@@@@@ X@@@@J5`@ @@@@ (@@@@(@@ @ @@ p@@@H@@ @0@@@@@@B@@0@@ @ @B@@@0@@ @ @@@@ @ @@@@ @@@@@ @@@@@@@ @ @@ @ @@@@ @@@@ @ @@@@ @@@@ @ @@@@ @@@@@ @@@@ @ @@@@ @@@ @@@@ @@@@ @@@@ @@@@ @ @@B@@@@ @@@@@JU@@@@@@@@@ @@@J$@ @@@ @ @@@@ @ @@@@ @ @@@ @ @@@@ @ @@@@ @ @@@@ @ @@@ @ @@@@ @ @@@@ @ @@@ @ @@@@ @4@@4@@3@@3@4@@3@@ @ @@p@@ @4@@4@@3@@3@@ @ @@`@@ @4@@@@3@@ @ @@@@@@`@J@ @ @(@@ @@p@0@@ @ @(@@ @@@ @@ @ @(@@ @@`@@@`@@J@@@J @@`@J@`@@@J@ @@P@@ @@@ @ @ @ @@@@ 0@@@ @ @ @ @@@@  @@@ @ @ @ @@@ @ @4@4@ @ @ @ @@@3X@@ @3@@  @ @@@ @@@@ H@@@@@@ @ @H@@@@@ @@@@@@@X@@@ @@@@ @@P@@ @ @@ @@@ @@@@@ @ P@@ @@@ @@@@ @@ @@@@ @@@@ @@@J @ @@@@@@J @@`@J@@@@ @B@@@@J`@ @@@ @ @@`@@@@@@@ @ @ @ @@@@@@ @ @@@`@J`@@@@ @B@@ @ @ @@@@@@@@ @@@@@ @ @@@@ @@@@@@@ @ @ @@@@ @ @@ @ @@@ @@`@J@@@J@ @@@@@@@ @  @@x@@ @@@@@@@ @@x@@ @@@@@@J&`@ @@@@`@@J&`@ @@@@@J+@@@@@@J*@ @@@@ X@@ @@@@@@J.`@ @@x@@`@@J.`@ @@@@@ @@@@@@@@@ @@@ @@@ @@@@ @B@@@@@ @@@@@@@ @@@@ @@@@@@@@@@@@@@@@@@@@x@@@p@@@h@@@`@@@X@@@P@@@P@@ @X@@X@@P@@P@@h@@H@@ 0@4@@@3@p@@h@@`@@X@@P@@ @0@@@@@@@@@@@@@X@@@p@@@h@@@`@@@X@@@p@@@(@@ @@@@@@@@@@@X@@@p@@@(@@ @X@@X@@P@@(@@ @@@@h@@@@h@@x@@ @0@0@ @ @ @@P@@ @@@ @4 @ @ @@ @3 @@ @ @ @@ @@@@@ @@@@ @  @  @@@ @ @ @ @@ @@ @ @ @ @ @ @@ @ @ @@ @@ @ @@H@@@@@@@@ @@@@@ @@H@@ @@@@@@@@@ @H@H@@@p@@ @B@@B@ @@p@@ @B@ @@h@@ @B@ @ @@=@ @@`@@ @B@@ @@`@@h@P@@ @B@ @@ @@`@@ @B@@@J `@ @@`@@@@@J!`@ @@@@@@@J!`@ @@@@@@@J!`@ @@@@ X@>@@@@J%`@ @@@@ X@@@@@J%`@ @@H@@ @ @@@@@ @ @@@ @@@@ X@>@@@2@J%`@@@@ @ @@@ @ @@@4 @ @4 @4 @4 @@3 @ @@@3 @@@3 `@@@@ @ @ @@@3 X@ @@ @ @ @@8@ @ @ @@@ @@@ @  @ @@(@ @ @ @@@ @@@ @  @ @@@@@@@ @@@@ X@@@@@J%`@ @@@@ X@@@@2@J%`@ @x@x@@@ @ @@x@@@@@@@@x@@@ @ @ @B@@ @ @`@@@ @ @ @ @H@`@@@ @ @@`@@@@@@`@J@`@H@@@ @ @@@H@@@@@@@J @@`@J@H@ @@ @@@@8@@@ @@ @@ @ @ @ @@8@@ @  @@@@ @ `@@8@@ @@@ @ (@@@4@4@@@@@@@3@@@3@@@ @@@@ @@@@@@ @ @ @@@@ @@@ @ @@@@ @B@@ @ @ @@@@ @@@@@@ @h@@@ @ @B@@ @ @@@ @ @@@`@@@@@@@@@@@@@`@@4 @ @@@@@3 @ @@@@@@@@  @ @@@ @ @`@@@@@@`@@4@ @@@@@3@@@@@@@ @ `@@@@@@J`@ @@h@@ @ @@X@@@@J`@ @@@@@@J`@ @@@@ @ @@@J`@ @@@@@@J@ @@@@ @ @@@J`@ @@@@ @ @@@J`@ @@@@@@J@ @@@@@@J@ @@@@ @@@@@@@ @@@@ @@@@@@@ @@@@ @@@@@@@ @@@@ @@@@@@@ @@@@ @@@@@@@ @@@@ @@@@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@ h@@@@@ @ @@@@ X@@@@@ @ @@@@@@J@ @ @@@@@@J@ @@h@ @ `@@@@p@@@@@ @ @ @@x@@@@J@@@x@@@@@ @ @ @ @ @ @@@@ @ @ @ @ @ @@@@ @ @ @ @ @ @@@@ @ @ @ @@x@@ @ @ @ @ @ @x@@@ @ @@@@@@ @ @@@@ @@@@@@ @@@@ @@@@@@@@@ @@@@ @ 8@@@@@@ @@@`@@@@@J@@ @@`@@@@@J@ @@x@@@@@J@ @@h@@@@@J@ @@X@@@@J`@ @@H@@ @ @ @ @ @ @`@8@@@@J@ @@@@J`@ @@P@@ @ @ @ `@ @ @P@P@ @J9@@J8@@J6@ @@@@@ @ @@H@@@@@ @@@@J`@@H@@@@J`@ @@@@@`@J'@ @ @@@ @@ @@@ @@ @ @@@@@@@@@@@@@@@ @ @ @@@@@ @@ @ @@ @@@@ X@@@@@@@@@@ @ @@@@ h@@@ @ @@@ @ @>@@@@ @4@4@@3@@3@@ H@ @H@@ @@@@@@@@@@@@p@@@@@p@@@ @ @@@@ @@@@@@@@@@@@@@@ @@@@@@@p@@ @@@ @@@@@@@p@@ @ @@@ @ @@@@ @@@ @@@@@@@@ @@@@ @@ @@@ @@@@@@@@@@@@p@X@ @ @@@@J`@@@ @@@@@@@@@@@@p@h@ @ @ @@p@@ @@@@@@J`@ @@@@@@@@@J1`@ @@8@@8@@@J1`@ @@0@@@@@ @@@`@@J1`@ @@(@@(@@J2`@ @@8@@8@@J2`@ @@ @@ @@J2`@ @@@@@@J2`@ @@@@@@J2`@ @@@@X@@J2`@ @@@@P@@J2`@ @@@@@@J2`@ @@@@@@J2`@ @@h@@ @@@@@@J`@ @@@@ @ @@@>@@ @H@8@@ @B@@ @@8@@ @@@ @@8@@@@@ @B@@@@ @ @@@@@@@@ @ @ @@@@ @@@4@4@@3@@x@3@@@ @@@@ @@@4@4@@3@@@3@@@ @@@@@ @@@P@@@@ @B@ @@@@ @B@@ @@@>@@ @ @8@@@ @@@@@ @@@8@8@@@ @B@ @B@@ 8@@@@@ @@@8@8@@@ @ @@@8@8@x@@ @ @ @B@@@@ @ @8@@@@@ 8@8@@@@ @8@@@8@@@@@J @@`@J`@@@ @@@J'@ @4@@3h@@ @ @@ @@4@@38@@@ @ @  @@@@@@ @ @@@ x@@@@@@8@@@@@ @@@@ @@@ @X@@@8@@@ @ @@@ @@@@@@@@@@ @@@@ @ @@@@@ @ @@@ @ @x@@ @ @ x@@4@@@ @@@3@>@@ @x@x@@ @@@@@ @ @@h@@`@JI@@JK@@H@ @ @ @JG@@`@J@ @4@@@@3@@`@@@@@@@@@ @JG`@@@8@8@@H@@0@0@@@ @ @@@ @@@ @@@@@@@ @@@JJ@@@@@@ @@JK@@@@@ @h@@@@@@ @@@JL@@@@ @@@ @@@ @ @ @@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@ @@4 @@3 @@@  @p@p@ h@h@@@@ @h@@ @@ @@ @@@@  @@p@@@ @ @ @X@p@ @@@@@ @@@@@@ @ @  @X@p@@@ @ @ @X@X@@@ h@@@@J0`@ @@@@ @B@@ @ @@@@@ @@@ @@@@@ @@@ @@ @ @@@@  @  @ @@@ @@@@@@@@ @@@@@@ @  @@@ @@@@@@@@ H@@@@@@  @H@@@@@@@ @ @ @@@@@@@ @ @@@@@@@ @ @@@@ @@@@@ @@@ @@ @ @@@@  @  @ @0@@@X@0@@@@@@ @@H@ @ @@@@@@@ @ @@@ @ @ @@@J`@@ @@@ @ @ @ @@@@ @ @ @@@@@ @ @@@@@@@@@ @ @@@@@@@@@@@@@@@@@@ @@@@@@@ @ @ @@@@ @ @@@ @ @@@@@@ @@@ @ @@@@@@@ @ @@ @ @@@@@@@@ @ @@@@@ @@@0@@@ @ @@@@@ @@@@@@ @(@@@@@@@ @ @@@@@@@ @@@`@`@@ @@@@@@H@H@@ @@`@@@@(@(@@ @X@@@@@@@@ @X@`@@@@@@@ @@@@@@ @B@ @@@@J`@ @@@@@J@ @@@@B@@h@@@@J*@@ @@h@@ @ @ @ @@`@@@J)`@ @@H@@`@J)`@ @@P@@`@@J*@@ @@P@@ @ @ x@ @@X@@@J+@@@@@`@J+@@8@@@@J-@@ @@8@@ @ @ `@ @@ @@`@@J-@@ @@ @@ @ @ H@ @@(@@@J,`@ @@@@`@J,`@ @@@ @ @@@@@@0@@@@@@ @p@@ (@(@@ @@@@@0@@@@@@ @p@@@ @ @ @@0@ @ @ @ @ @ @@J)@ @  @  @  @@@ @ @@ h@@@ @ @ @ @@@@ @ @4 @ @ @ @4 @ @@4@4@@3@@3h@4@ @3h@ @@3 @4 @ @ @ @3 @ @@3 @4 @ @ @ @3 @ @@ @h@@ @ @@X@@ @@P@@ x@@@@@ @`@`@@ @@@@ @@x@ @@@@ @ @J M@ @`@J @ @@@ @@ @ @@x@@ @@@@@@ @@@@@ @@>@ X@@ @ @@ @4 @ @@@3 @4 @ @4 @ @@ @4 @ @4 @@4@@@@3@x@3 0@@3 0@p@3 0@ H@ @3 0@@ @ @X@@@@ @@@@@@@@@@@@@@ @ @@@@@@@ 8@@@@ @ @@8@@@@ @@8@@@@@@@@@@@@@@@8@@ @ @ @ @4@@3@@>@(@@ @ @@0@@ @8@@@(@@@@@@J)@ @@h@@@ @ @h@@@`@J)@ @@@P@@@ @ @P@@@ 8@@ @@@@ @4@@38@@ @@@@ @@ @@p@@ @4@@3@@ @@@@ @ @@@@  @@ @@@@ @@ @@@@ @@@@@@@@@@@@@ @@@@ @ @@@ @ @@@@ @@@@@ @@@@@ @ @ @@@@@x@@h@@ @@X@@@@@@ @@X@@ @ @@@@@@@@@ @@H@@ @ @ @@@ @ @ @@H@@ @ X@@`@@@ @ @ @@0@@ @ @ @@@ @ @ @@0@@ @ X@@`@@@ @ @ @@ @ @ @ @ @@ X@@`@@@ @ @ @ @@ @ @ @ @ @@ X@@`@@@ @ @ @ @@ @ @ @ @ X@@`@@@ @ @ @ @@@ @  @@@@@@ @ @  @0@@@@ @ @h@@@@ @@@ @@@@ @ @ @ @ @  @  @  @@@@@@@@@@@ @ @ @ @ @@ @ @4 @@@@@3 @@@@ @ @  @  @@@ @@@@ @@ @@@ p@p@X@@@@@@@@ @@@J@@@@ p@p@X@@@ @p@@ p@@@ @@ @ @@@@@@h@@p@p@@@@@@ @ @ @ @ `@ @4@@@@ @ @@@@@3@@@@ @ @  @  @@@ p@p@@ @@ @@ @ @@@@@@  @  @ @H@@ p@p@@ @@ @@@ @@@@@@ @@ @@@@@@@@@ @@@ @@ @@ @ @ @ @ @@ @ @4 @@@@@3 @@ @ @  @ @@@ @@ @@ X@@ @ @ @@ @ @ @@@@@ @  @  @ @@@ @@ @@ X@@ @ @ @@ @ @ @@@@@ @  @  @ @@@x@x@@p@@@ @@@@ x@x@ @@ X@p@ @ @ @@ @ @4 @@@@@3 @@@ @  @ @@@ h@h@@ @@ @@@ @ @ @@ @`@ @X@ @P@ @h@@ @@@ @@@@@@@@ @@ @ @@@@ @ @  @@@@@@@@ @ @@@@@ @ @ @H@@@@@@@0@@ @@@ @@@@@@@@ @@ @ @@@@ @ @  @@@ @@(@@ @@ @@X@@@@@ @ @ @@@@@@@@ @ @@@@@ @ @ @ @@@@@@@@@ @@@ @ @@@J @@ @@ @@ @@ @@@ @@ @@ @@ @@@  @ @@@ @ @ @@ @ @@@@@@@ @  @@@@ `@ @4 @ @@ @ @@ @@@@@3 @@ @ @@ @ @  @  @  @@@ @@@@@@@p@@ @@@@@@@p@@@@@ @@@@p@@ @@@@@@@@@ @@@@@@p@@ @@@@@@@@0@@@ @ @@@@@@@@@@@@@=@ @@@J @@@@@@@@ @@@J @@@@@ @@@@@ @@@p@p@ @@@(@(@ @@@J @@@@@ @@@J @@@@@ @@@@@@ @p@@ @@ @4 @4 @@3 @4 @@@@@@3 @4 @ @3 @@ @ @ @3 @4 @@@@@@3 @4 @ @3 @@@@  @  @  @@@ @@@@p@@ @@ @4 @@@@@@@3 @4 @@3 @@@@@  @ @@ @@@@p@@ @@ @4 @@@@@@@3 @4 @@3 @@@@  @0@@ @@@@@@J @@ @@ @ @@4 @@@@@3 @@@ @  @ @@@ @@(@@@@J @@ @@ @ @@4 @@@@@3 @@@ @  @ @@@ @@@@ @@ @4 @4 @@3 @@ @@ @h@@3 @@@@@@ @ @ @@@p@p@@p@ @@@@@=@x@ @@@@@@@ @@@h@h@@h@ @@@@@p@ @@@@@p@ @@@@@p@ @@@x@x@p@ @@@@@@@@@ @ @ @@ @J @@ @J @@ `@ @4@@@ @ @@@@@3@@@@@@@  @ @  @@@@@@ @@@ @ @@ @J @@ @J @@ @@@@@ @ @ @@ @ @@@@@@`@@ @@@@@@J @@@J @@ @@ @ @@4 @@@@@3 @@@ @  @  @@@ @@(@@@@J @@@J @@ @@ @ @@4 @@@@@3 @@@ @  @  @@@ @ @ @ @@@@@J)@@J,@ P@@@@h@@@@ @ @h@P@ @B@ @@8@@@@@x@(@@@@@@ @ @@P@@ @@@@@J)@ @@h@@@@ @ @h@@@(@@J@ X@@@@8@@@@@@ @@8@@@@@ @@@@8@@@ @ @@8@@@ @@8@@@ @@8@@@@ @@8@ @@@@ @@X@@`@@@@8@@@@ @@8@@@ @@@p@p@@ @@@@@ @h@@p@p@@@@@@@@@@@@@@@@@@@@@ h@h@@@ @@@ @ @@@@ @@@ @@@ @@@@@@ @@@@@@@@ @@@@@@@@@@@@@ @ @ @@@@@@@@p@@@ @@@@@ @@B@@@@@@J @@J@@@@@@ (@@@@@@@@@(@@@@@@@@@P@P@@J@h@@@@@@@p@@@J@P@@@@@@@@J@@@@@@@@@J@@@h@h@@@@@J@@@@@@@@p@@@J@@@H@H@@@@@J@@@@@@@@@@@J@@@8@8@@x@@@J@@@0@0@@(@@@J@@@(@(@@p@@@J@@@X@X@@J@@@@@@@@h@@@ @@@@@ @ @@@ @@@@@p@@@ @@@P@@@@@ @ @@@@@@@@@@ @@ @@ @ @ @4 @4 @@@@ @@@@3 @4 @@@@3 @ @ @@@3 @4 @ @4 @@@@@@3 @@ @3 @ @ @@>@  @@@ @ @@@@@@ @ @@@@ @ @@@@@ @@@ @@@@p@@ @@ @@ @ @ @@ @ P@ @@@@ @@@ @@@@p@@J@ @@4@ P@@@@@3@@@ @  @@P@@@@@@@J@@P@@@@ @ @ @ @ @J@ @ @  @@@@@@ @@@x@@@@@@@@ `@@@ @ @ @ @@J@ @ @H@@@@@@ @ @ @@H@@ @ @@@@@ @ @ @@H@@@ @ @@0@@@@@ @@@@@@0@@ @ @@h@x@x@@J@ @@@@@ @ @h@h@ @@@@p@@ @@4@ @@@ @ 0@ @@@3@P@@ @@h@@@@@ @@ @@h@x@x@J@@P@J@@h@h@x@x@@ @@@h@@J@h@@ @@@@ @@(@@@@@@@@@@@ @ @@@ @@@@ (@@@@@@@@@@@ @ @@@@@@ @@@ @@@@@@@J @@ @@@ @@@@p@@ @@4@ @@@@@3@X@@ @@@ @ @ @@H@J@J @ @ @@ @ @ @X@@ @@4 @@3 @ @ @@@  @ @  @@@ @@ @@B@@@ @@@ @@@@@@@@J`@@@J@J`@@@ @@ @@@ @ @@@ @ @ @ @ @ x@  @  @  @@@@ @ @ @ @ @ @J@@@J@ @  @  @  @  @@@ @@@ @@H@J @@@J @@@@J @ @H@J @ @@J@ @ @ @  @ @@@ @ @ @@ @@@ @@@@@@@@ @ @ @@x@@@@@@@x@@ @@@ @ @@@@@ @ @(@`@ @@x@@ @B@@ @ @(@@ @@x@(@(@`@ @@@@@@J @@p@J @ @@@@@@J @@h@J @ @@@@@H@J @@@J @ @@@@@ @@@@P@@@8@@@@@J @@h@J @ @@@@@ @@@@8@@@@@J @@p@J @ @@@@P@@@@H@J @@@J @ @@8@@@0@J @@(@J @ @@8@@@ @J @@@J @ @@P@@@@J @@@J @ @@P@@@@J @@@J @ @@@x@x@ @@@`@`@ @@@@@ @@@@@ @@@@@ @@@@@ @@@x@x@ @@@p@p@ @@@`@`@ @@@X@X@ @@@P@P@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@ @ @@ @@ @ 0@@@@ @ 8@@@@ @ (@@@@ @@ @ @ @@@@ @@@ @@@@J @@@J@ @@@@ @ @@@@@ @@@@@ @ @@@J@@@@@@ @@@J@@@@ @@h@@@ @@h@@@@@@J@h@h@@@ @@J@@h@@@@@ @@@J@@J@ @h@h@@@@@@J@h@P@@ @B@ @@@@8@@ @@ @B@@ P@@@ @ @@@@@@ @ @ @@@@@ @@ @B@ @4 @ @@8@3 @@@ @@@ @@ @@@ @@@@0@@ @@@@@ @@ h@ @>@@ @ @@ @@  @@ @4 @4 @ @@  @@@3 @4 @ (@@@@>@3 @@(@3 @@ @p@@ @ @@ (@@@@@@ @p@@ @@@@ (@@@@>@ @@@@@@@ @@@ @@@@@@@8@J@  @(@@ @ @ @ @@@ @@@@@@H@J @ @@@@ @ @ @  @@@ @@@@@ @@@@@>@  @h@ @@@@@@ @@@@@@@ @ @ @ @  @@@ @@ @4@4 @ @@ @@@3@4@ @@8@3@@@3 @@@h@@ @ @ @ @@@@@@@  @  @ @@@`@`@ @4 @ X@ @`@ @3 h@ @@@ @4 @@ @ @3 h@ @@@ @@@ @@@@@(@@@@@@`@@@@@@ @@@ @ @@@@@@  @  @@@`@`@ @4 @ X@ @`@ @3 h@ @@@ @4 @@ @ @3 h@ @@@ @@@ @@@@@@`@@@@@@ @@@ (@@@@@ @ @@@@@@  @  @@@@@ @4 @ @4 @ @ @ @3 X@ @`@ @3 h@ @@@ @4@@4@@4@@ @ @3X@ @`@ @3h@ @@@3@4@@4@@ @ @3X@ @`@ @3h@ @@@ @@@ @@@@@@`@@@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@ @ @@@@@@  @ @@@ @@ @@@@@@@ @ @ @ @(@@ @@@J @@ @ @ @ @(@@ @ @@@J@  @@@ @ @(@@@ @@ @B@@@J @@ H@@@@ h@@@@  @@@4@4 @ @@@3@@@3 @4 @@@3 @@@@@ @ @ @@@@@ @@(@@8@@@@p@@@ @@ @@`@4@@@@3@@ @ @ @(@(@@@@ @@@J@@(@@@@ @@@J@@(@@@@ @@H@J@@@J@@(@@@@@@ @@8@J@(@J@@(@@@(@@ @@ @@@X@@@@h@(@@ @4@4 @ @@@3@4@ @4 @ h@ @3 @@@3@ @@3 @4 @@4@ h@ @3@@@3 @4 @@4@ @4 @ @4 @ h@ @@3  @@3 @@@3@@@3 @@(@  @ @@@@@@@@ @@@@@@@@@@@8@ @@@@@@@ @@@@@@@ @@@ @@@@@ @@@@@@@ @@@ @@@ @ @ @@@J@@@ @@J@@`@J@@@J@ @@@@h@@@ @ @ @ @  @@@@ @B@@0@J@  @@@@P@@@@ @@@@J@@@ @@@@@h@J @ @@@@ @ @ @@@ @0@J@  @@@@ @ @ @@@@ 8@@@@@ @ @@@@ @@@@@@@ @@ @@@@ @@@@@@@B@ h@@@@@@ @ @@@@@@@ h@@@ @@h@@@@@@@@ @ @@@@ @@@ @@h@ @@@@@ @@ h@@`@@@@ `@ @h@h@ @@@ @@ @@@ @ @@X@@@J@B@@h@ @@@@@ X@4 @@@@ @@@@@3 @@@ @ @  @X@h@ @@@@@ @@ h@@@@@@ @ @h@h@ @ @@@@@@@ @ @X@X@@@@ @@ 8@B@@X@@@`@ @@ 0@B@@X@@@ @ @@ 8@B@B@ @X@@`@ @ @@ @@@ @ @@h@@@J@B@ @X@@@ @@ (@B@@X@@@ @@ @B@@X@@@ @ @@ @B@B@ @X@@ @ @@@@@ @@@p@@@@@ @@ @B@B@@@@@ @@X@ @@@@@ @@ X@@`@@@@ `@ @X@X@ @@@J@@@J@ @  @@ @@@@ `@ @ @h@@@@ @@ @B@@@@ @@@@@@@ @0@@@@@@@ @ @0@@@ @@@@@ @@@@ @@4@@@@@3@@@ @@@@ @ @@@J`@@ @@@@ @ @ @@ @ @p@`@@ P@@ @(@@@@8@0@J`@ @@P@@@p@@@ @ @@@p@@`@p@@@@@ @ @@@@@@@4@4@@@3@@@3@4@@p@3@@`@p@@ @ @@@@ @ @@@@@@ @@@@ @@@@@@@ @@@4@@3(@@ @@@@ @@@4@@@@@@3@@ @@@p@p@ @@ @ @@@x@x@@ @@@@@@p@ @@ @x@@@ @ @4@@4@@@@@3@@3@x@ @ @@@@8@8@@ @ @ @B@@ @ @@8@ @ @4@4@@3@4@@4@ 8@@3@@3@@p@3@@@@p@@@@@ @B@8@p@@@@ @@@@ @8@p@@@@ @@@p@h@h@@@@ @@ 8@@h@p@`@`@@@@ @@ 8@@`@p@@@@@@ @@ 8@@@p@@@`@@ @@@@@@ @0@`@ @ @@@@@@@@@@4@4@@3@4@ @4 @ 8@@3 @@3@@p@3@@@ @@`@ @ @@(@@@@@@@@4@4@@3@4@ @4 @ 8@@3 @@3@@p@3@@@ @@`@@ @B@@p@`@@ @@P@@@`@@@ @ @@`@@@@@@@ @4@4@@3@(@8@@@3@@@@P@ @ @>@@@@ `@@@ @@@@`@@@@ @ @`@@ @@@@ @ @ @@ @ @  @@@ @@@@ @ @ @@ @ @  @@@@@@p@ @@@@@@ @`@@@@ @p@ @@@@@ @@@@@ @8@@ @@@@ @ @ @ @@ @  @  @  @@@@@@ @ @@ @@@@@ @8@@@ @ @ @ @@@@ @ @ @@@@ @ @ @ @@@@ @ @0@0@@ @ @B@@ @ @@0@ @ @4@4@@3@4@ @4 @ @4 @ @4 @ @@ 0@@@3 8@@3  @@3 @@3@@p@3@@@@@ @@@@ @ @ @ @@ @  @  @  @@@@@@p@ @@@@ @@@@ @ @ @ @@ @  @  @  @@@@@@@ @@@@@@@ @@@@@@@ @ @ @ @ @@ @  @  @  @  @@@@ @ @ @ @@@@ @ @ @ @ @@@ @ 8@@ @@@@@ @@@@@  @  @  @ @@@@@ @p@ @@@@ @@@@@ @@@  @@@@@@@ @ @ @ @ @@ @  @  @  @  @@@@@ @ @ @ @ @@@@ @ @@@@@@ @ @@@@@@ @ @ @ @ @ @ @@  @  @  @  @ @ @x@@ @ @ @ @ @ @@@ @ @ @ @ @ @ @@x@ @ 8@@ @@@@@@ @@@@@@  @  @  @ @@@@@@@0@@@@@ @@@@ @0@@@@@ @@@@@ @4@@4@@4@ @4 @ @@ @4 @ @4 @ @4 @ @@@3 0@@3 8@p@3  @@3 @4 @ @4 @ @4 @ @@@3 0@@3 8@h@3  @@3@4@4 @ @4 @ X@@ @3 h@`@@ @3@4@ @ 0@@3@@x@3 (@@3@@4@ @4 @@3 @@@3@4@ @4 @@ (@>@3 @@x@3(@@3@4@@4@@3@@@4@@38@8@3@4@@4@@4@@30@@38@0@3 @@ @4@@4@ @4 @ @@@3 0@@38@(@3 @@ @ @@X@ h@h@@@@ @@ 0@@@ @ @h@X@ `@`@@@@ @@ 0@@@ @ @`@X@ @@@@@ @@ 0@@@ @ @@X@@ @@ @@@@@@8@4@ @ @@ @ @ @@ @ @ @4 @4 @@3 @4 @ @4 @@4@@4@@@0@ @@38@@3 @@3 @@3 @ @p@3 @ @@3@8@@@ @@X@@ @@ @@@@@@8@4@ @ (@@ @ @ @@ @ @ @4 @4 @@3 @4 @ @4 @@4@@4@@@0@ @@38@@3 @@3 @@3 @ @p@3 @ @@3@8@@@ @@X@ @ @B@@ @@@@8@4@ @ @@@3@8@@@ @ @ @X@@ @@P@@@X@@@@ @ @@X@@@@x@@ @@ @@x@@ @@@@@@@@ @@@ @@@ 8@8@@@ @@4@@@@38@@@ @@@@ @B@@ x@@ @@8@@@ @@@H@@@ @@@@ @@@@ @@@@@@ @ @@(@@ @@@ @@(@@ @4@@38@@@@@@ @@@ @@@ @ @@@@@@@@ @ @(@@@ @@@ @ @@@ @@@J@@@J@@@@J@ @@@ X@@@@@ @ @@@@@@J@ @@@ @ @ @@p@@ @@@ @@@@@@ @X@h@@ @@@ @@@`@@@@ @X@`@@h@@@@ @@@@@h@X@ @ @@4@@@@ @ @@ @@3@@@ @X@H@ @ @@>@ P@@@@P@@@@@ @ @@@P@@ @>@@@ @ @@ @X@H@@ @@@@@@J`@@@@J@@@J @@@`@J@@@@J@ @@@@ @@8@@@@@@@J@@0@@@@@ @ @@@@ @@@@ @@(@@ @ @@x@@@@@@@ @@@J@@@@J@  @@ @@@ @4@ @@3X@@@@@  @ @  @ @@ @@X@@@@@J`@ @@ @@@@J @@`@J@ @ @ @ @ @ @@@@h@@@@@ @ @@ @@ `@8@@@ @@ @@h@@ H@@@@ @@h@@ @@@J@@@@J@@@@@(@@ @ @@@@ (@@@@ @@@@ (@@@@@@@ @@@ @ @4@h@@@P@@@@@@@@@X@@@X@@@@@4@@3@@@@3@@ @ @@@@@J)@ @@h@@@ @@@@@@@h@@@ @@@ @@h@@@@@@@h@@@@@@h@@@@@@h@@(@@ @ @ @ @@@@8@`@8@4@ 8@@ @ P@@@38@@@ @ @@@ @ @ @ @@@@8@@@8@4@ 8@@ @ 0@@@38@@@ @ @@P@@ @4@@@3@@@(@P@@ @B@@0@@ @4@@@3@@@@0@@ @B@@@@ @@@@@ @ @@@@ @B@@@ @ @4@4@@4@ @ @ @@3@4@ @3h@@ @3@4@ @ @ 8@@@3@@8@x@@3@4@@ @ 8@@@3@@8@@@  @ @@@@ @@@@@ @@@@@@ @ @ @@ (@@@@@@ @ @@@ @ @ @@>@ (@@@@@@ @ @@@ @(@@@ @ @@@@ @ @ @X@@@ @ @ @>@ @@@@ @ @ @>@ @@@@ @B@@ @@ @ @@@@@@@@@@@x@@@`@`@ @ H@x@@@ @@@@@ @@@@@ @ @ @B@@ @(@@@@@@@ @ @@@@ @@@ @@@@ @ @@@ @ @ @ @x@@J@ @B @ @ @@@ @ @ @ @@ @ @ (@@@ @ @@@@@@@@@ @@@@ @@@@ @B@ @B@ @@@@@@@ @ @ @B@ @@@ @@(@@ @ @@@@@@@ @@@@J@ @@(@@@@@(@x@ @ @@@h@@@@X@h@@@ @ @ @@@@ @@@@ @ @@@@@@ @@@@@ @@@@@@@ @@@@@@@@@ @@ @x@@@@@ @@ h@@ @ @@@@ @ @ @`@@ @@@@h@@@8@@@8@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@J'`@ @@@@ @ @@@@ @ @4@@4@@@@4@ @4 @ @4 @ @4 @ @4 @ @@@3 8@ @3 x@ @ @3 @ @ @3 @4 @4 @ @ @ @3 @@p@3 @4 @ x@ @ @3 @ @4 @ @3 @ @ @3@ @38@X@H@@3H@H@@ @ @@x@ @@@@h@@@8@@@8@@@@ @ @ h@ @ @ 8@@@ 8@@@ @ @@@@4@4@ @@@3P@@ @ @3H@@ @ @ @ @@x@@ @ `@@@@ @ @ @H@`@@@@ @@`@ @@@@@@@ @ @@@J`@@ @@@`@`@@@@@@@@`@H@@ 0@@@@@@@ @ @ @@0@@@@ @ @@@0@ `@`@ @@@@@@@@@0@ @@`@J@@@J @ 0@ @@ @ @@  @ @@ @@@ @  @  @  @0@ @@@ @ @@@ @ @@@@@@ @@@@@@J`@@ @@ @ @ @ @ @@@@@@@ @ @@@ @@@@@@ @ @ @@@@ p@@@ @ @@@ @@@@@ @B @ @ @ X@=@ @ @ @@@ @@`@@ @@@@  @  @  @ @@@@@ @ @@@@@@@@@J @@ @B @ @ @ X@=@ @ @ @@@ @ @`@@ @ @@@@ @ @h@@@@@@@@ @@@@  @  @  @  @ @@@ @ @ @ @@@@@@@ @B @ @ @ X@ @ @ @ @ @ @ @ X@@ @ @@ @ @4 @ @@@ @@@@3 @@>@  @@@ @@@@ @B @ @ @ X@ @ @ @ @ @ @ @ X@ @ @ @ @ @ @J `@@ @@@  @@@ @ @ @ @@@@@@@@ @@ @ @@@ @@@@ @ @@@ @X@@ @ @ @ X@@ @ @@ @@4 @ @@@@@3 @@@ @  @@@@@@@@ @ @@@@@@@ @ @@`@ @ @@ x@@@@ @ @ @h@h@@ @ @ @@@ @@ `@ @4 @ @ @@ @ @4 @4 @@@@ @ @ @p@ @ @@@@ @ @ @@@ @@3 X@ @@3 @@3 @@@ @ @ @H@h@ @@@@ @@ @@@ @@X@@ @ @@@@@@ @@@@ @@@@X@@@ @@ @ @ X@@@ @@@@@@ @@ @h@h@@@ @@@h@@@@J@ @B@@@`@J@h@h@@@@J@@@J`@@`@J@h@@ @@@@X@@@ @ @@4 @@@@3 @@@ @  @@@ @@@@X@@@@@@ @ @@@J`@@@@@@ @ @@@@@ @ @ @@@@@ @ @ @@@@ @ @ @@H@ @ @ @@@@ @B@ P@@@ @@@ @ @8@H@@ @ @B@@ @@H@ @ @@H@@ @@@@ @  @ @ @H@ @ @@@@@@@ @ @ @@@@@ @ @@@@ @@@J@ X@@`@ @ @@ @ @@@ @@@ @ @ @  @  @H@ @@@@@ @ @@ @@@@@@@ @ @@ @ X@X@@@ @ @h@@@@ @ `@`@@@@ @X@@@h@@@@ @ h@h@@@@ @X@@@h@@@@8@@ @B@@@8@@ 8@@@@@ @ @@8@@@ @@@8@ @@@J@ X@@`@@ @@ 8@@@@@ @ @ @8@P@@@ @@P@@@@@ P@@@@ @@p@@@@@@ @@ @@@ @ @@@@@ @@@@ @x@@@@ @ @@@@@ @ @ @@0@@ @B@@ @@@@ @ @x@0@@ @@@@ @ @@(@@ @ @ @ @H@@@@@@@p@h@h@ @@p@`@`@ X@@@@@ (@@@@@@@ @p@@@ @@@ @ @ @@ @@@@h@h@ @@@@@@ @ @8@@@ @@@@@@@@@ @@@@ @@ @@(@@@@@@@@@@@(@@ @@@@@ @ @ @@@@ @@@@@@ @@@@@ @ @@@@@ @@@@@@@ @@@@@@@@@@@p@@`@@J@X@X@@ @B@@ @ @8@@@ @@X@@ @B@@ @ @8@@@ @@X@@ @8@@@@@@@@@@@@P@@@@@ @P@(@@@ @@ @@ P@8@@ @ @ @@@ p@@@(@@4@@4@@ @@@ @ @@h@@`@@@@@@@@@@@@@@`@@@@4@4@@3X@4@@38@@@3X@4@>@38@@ @38@@ @38@ @ @  @X@(@@8@ @ @8@ @ @ 8@ @ @ X@4 @@3 8@@ @ X@4@@38@@@ @@4@4@4@@@@38@ @ @3X@4@@38@@@3X@4@@38@@ @  @@@ @ @ P@x@>@4@@3p@@ X@4 @ @@@3 h@@@ @  @H@0@ @ @ P@x@>@4@@3p@@ X@4 @ @@@3 h@@@ @  @H@H@@X@@@@@@X@@@ @@ @@ @ @ @X@@@8@@@ @@@ @X@@@8@@@X@@@8@@@ @@X@@ @ @ @X@@@8@@@ @@@@@@ @ 0@@@@ @ @@@ @8@@@ @@ @@@@@@@@H@4@@ @ @ @@@3P@@@@@ @  @ @@ @8@@@ @@@ @@ @ @@@ @@@ @@@@ @ @@@@ @ @ @ @ @@@@ @ @ @ @`@`@ @ @ @ @@ @ @@@@ @ @ @ @@@@ @ @ @@@ `@ `@  @  @  @  @@@@ @B@@ @@ @@@@@ @ @8@@@@@@ @@@@@ P@ @>@4 @@3 x@`@ @@@@@@ @ @  @H@@ @@@@@@ @@@@@@ @ @  @h@@ @ @@P@@@@@@@ @ @ @ @@ @8@@@ @@@ @@ @ @@@ 0@@@ @@@@ @ @@@@ @ @ @ @ @@0@ @ @ @ @ @@ @`@@ @@ @@@ `@ @  @  @  @@h@ @ @ @ @B@ @B@@ @@h@@@@@ @@@ H@4 @ @ @ H@4 @ @ @@@ @ @@4@ @ @@ @ @@@3@@@3 P@@>@4 @@3 @@3 P@ @>@4 @@3 @@ @ @  @  @@@@@@ @@@`@`@ @ @@P@@@@@ @@ @ @@ @ X@ @`@ @@ @@@@@@@X@ @@ @@@@ @@@4@@@@`@ @@@@@H@4@@@ @ @@@@@3P@@>@@@3@@@  @  @@P@@ X@ @`@ @ @ @@ @ @`@@ @ @ @ @@ @ H@4 @ @ @ @ @@ @@@3 P@@>@@>@ @ @  @ @@@@@ @ @@@@ `@`@ @ @@@@ @B @@ @ @@@ `@`@@@@ @B @@ P@ @>@4 @@3 @@ H@4@ @@@3P@@>@4@@3@@ @  @  @H@@ `@`@@@@@ @@@ @ @ @@p@ @ @ @B@@ @ @ @@p@ @`@ @ @B@@ @ @ @@p@ @ @ @@@ @ @ @@@@@ @ @@@ `@`@ @@@ H@4 @ @@@3 P@ @>@4 @@3 @@ @  @ @@@ @ @@@J @@ @@@@@@J @@`@J @@@J @@@J @ H@4 @@@@ @@@@@@@3 P@X@@@ @  @  @ @ @  @p@@ @@@J @@@J @@@J @@ @ @ @ h@@`@ @ @ @@@@@@@  @ @  @@@ @ @@@J @@ @@@@@@J @@@J @@@J @ @@  @ @@ @H@4@ @ @h@@`@@@@@@@ @@@3P@ @@4 @ @3 @@  @  @  @@@@ @ @@@J @@ @@@ @@@J @@@J @@@J @@`@J @@ @ @ @ @ @@@@@@@ @  @@@ @@@@ @ @ @B@@ @ @@@ @@@@ @ @ @B@@ @ @@@ @@@@ @@@ @@ @ @ @@  @@ @@@ @@@ @@ @@@@@  @ @ @@ @@ H@4 @ @ @@@@@ @@@3 P@ @@4 @@3 8@@@  @ @  @  @ @@ @ @@@J @@ @@@ @@@J @@@J @@@J @@`@J @@ @ @ @ @ @@@@@@@ @  @@@ @@@@ @ @ @B@@ @ @@@ @@@@ @ @ @B@@ @ @@@ @@@@ @@@ @@ @ @ @@ @@ @@@ @@@ @@ @@@@@  @ @ @@@ @@`@J @@@`@J@@@J @@@J @ @ @ @ @`@@@@@@@ @  @@@@ @ @ @ @ @ @ `@ @  @  @  @  @@@@ @ @ @ H@4 @@@@@@@@@@3 P@ @@4 @@3 8@@@  @ @ @  @ @@@ @ @ @ @ @ @ `@ @  @  @  @  @x@x@ @ @@@J @@ @@x@@@@J @@@J @@@J @ @@  @ @@ @H@4@ @ @h@ @ @@h@@`@@x@@@@@ @@@3P@@@ @ @  @  @  @@@h@@@`@ @@h@ @ @ @ @ @H@H@@@@ @@@P@H@@8@ @@@@@@ @@@ @ @@@ @@@@@ @B@@ @ @ @@@@@`@ @B@@ @ @ @@@@@ @@@@@@J @@ @ @ @@@@ @ @@X@@@@@ @@@@@@X@@@@@ @@@@ @@@ @ @(@(@@@@ @ @@(@ @@@@P@@@ @@@ @ @ P@@@ @@ (@@ @ @@@  @  @@@@ @ @ @B@@ @@@ @ @ @ @@ @@ @B @@ @ @ @ @@ `@ @  @@@@@@@ @ @@@@@@@ @ @ @ @4@ @@@3@@@ @ @@@@8@@@ @ @@@@@`@J`@`@@@J@ @@@ @@@@ @ @ @@@ @ @ 8@@@ @@@@ @ @ @@@@ @@`@J`@ @@@@@ @ @@@ @@@@ @@@@ @ @@@ @@@ @@@P@P@@@@@@@@ @ @B@@ @h@@@ @@h@8@8@`@`@`@`@ @@@h@8@8@`@`@8@`@ @@@h@8@8@`@@x@ @@@h@8@8@@@X@ @@@J @@@@ P@P@@`@@@@@@ H@@@@4@@@3@4@8@`@`@3X@>@8@@@ @ @  @@@P@P@@`@=@ @ @ @@ @@@ P@P@@@@@@@@ H@@@@@@8@@@@ @ @  @@@ P@P@=@@@@@ @ @@ 8@@4 @@3 @@@@H@ @@ @ X@4 @ 8@@>@3 P@@>@@@J`@@H@ @ @ @ X@4 @ 8@>@@3 P@>@@@@J`@@8@@@@@8@`@`@X@@@8@@@@ @@8@@@@@8@`@@X@@@8@@@`@@J @@ @@8@@@@@8@@@X@@@8@@@`@@J @@ @@8@@ @@@@8@=@X@@@8@=@@@@ @@@J @@@@ @@@J @@@J@ h@@`@@ @@@@@ @ @ @ @@8@8@@@ @@@@ @ @@@@ @ @@@@@ @@ @ @X@@@P@@@@@@X@@@@@ @X@@ @ @@ @@ @4 @4 @4 @@3 X@@ @3 X@@@3 X@@@  @@@X@X@@@X@@@X@@@ @@@@@@@@@@@X@X@@@X@@@ @@@@@@X@@@X@@@ @@@@@@ @@@8@8@@@ @8@@@@@J @@@@8@8@@@ @8@@@@@J @@@ 8@8@@@ @8@@@@@J @@@J @@@@@ @ @@@@@@@@ @@@@@ @ @@@ P@P@=@@@@@X@@@ @ @ @@@ @ @  @@@@ @ @@@ @8@`@`@ @B@@ x@@@@@ @ @ @h@@ @8@`@@ @B@`@@J @@ @ @ @h@@@8@@@`@@J @@ @ @ @x@x@ @X@@@8@@@X@ @ @ @@@ 8@@@@@J @@ @@x@@ @ @@h@ @X@@@@@@8@@@X@ @@ 8@@@@ @@h@ @X@@@8@@@X@@@8@@@@`@J`@ @@P@@@@@@@@ 8@@@@ @@P@@@@@@ @@@@@@ @8@8@@@@ @B@@ @@8@@ @@@ @ @8@@ @@@@@@ @ @@8@@ @@@@@@ @ @@8@@ @@@@4@@4@@3@@3@@@ @0@8@@@@@ @@@@@@ @ @@@@@@@ @ @@@H@@@@@@@ @@@@@ @@ @@@@ @B@ @@@ @@@@ @B@ @@@ @@@@ @B@ @@@ @h@h@@ @B@ h@@@ @@@@ @B@ @@@ @@@@@ @ @ @ @@ @@@@@ @ @ @ @@ @@@@@@@@ 8@@@@ @8@ @@@@@@ @@@@@@ @@@@@ @@@@@@ @@@@@ @@@@@@ @@@@@ @@@@@@ @H@H@@@ @H@@@@p@ @@@@ @0@@@ @@@@@ @@@@@ @@@@@@@@@@8@ @h@h@@@@h@@@@8@ @`@`@@@@`@@@@8@ @@@@@@`@@@@8@ @X@X@@@X@@@8@ @@@@8@ @@@@@@8@ @@@@@@@@@8@@ @ @B@ @@8@@@`@@@@@ @@@@@@@ 8@@@@ @8@@ @@@@@ @B @ @ @ @@ @@ 8@ @@8@@@@ @8@@@@@@ 8@@@@ @8@p@@@@@ @ @ @@@p@@ @ @ @@@@@ @@@@@@@ @@@@@@@ @ @ @ @H@@ @@@@ @ @ @ @ @0@@ @@@@ @ @ @ @ @0@@ @@@@ @ @ @ @ @0@@ @@@@ @ @ @ @ @0@@ @@@@ @ @ @ @ @0@@ @@@@ @ @ @ @ @0@H@@@@@@@@ @B@@ @@H@@@@@h@@@@ @B@@ @@H@@@@@h@@@@ @@@ @ @h@H@ @@@@h@@@@ x@@@@@@@@ @ @@H@@ @ @ @`@@@ @ @@@`@@@@@@@@`@@@@@@ @ @@@@@@@@@@@@0@@ @ @@@@  @ @@ @ @ `@ @4 @@ @ @@@3 @@ @@ @ @@ @  @ @ @ @@ @ @B@@ @ @ @@ @@ @ @B@@ @ @ @@ @ @ @ @@@@@@ @ @h@ @@ @@ @ @ @ @@ @@  @ @ @@ @  @ @ @ @ @ `@ @4@@ @ @@@3@@@ @ @ @ @@@ @ @  @`@ @@ @@ @ @@  @ @ @@ @ `@ @4 @@ @ @@@3 @@@ @ @@@ @ @  @`@@@@@@ @@@@@@@ @ @@ @ @@@@ @ @ @ @@@ h@h@@@@@@ @B@@ @@@@@@ @@@@@@@ p@@@@@ @@@ @ @B@@ p@@@@@ @ @ @p@@ @ @4@@3@@@@ @ @ @p@p@@@@@@p@p@@@@@ @@@@@p@@@@@@  @@4@@@30@@ @p@p@@@ 0@@@J0`@ @@@@@ 0@@@J0`@ @@@ @ @@@ @@ @ 8@4 @ @ @@@ @ @ @@ @@3 h@4 @ @@ @3 @`@@ @ @ @@@ @B@ @@@`@@ @(@@@@@@@ @@@@@ @ @8@@@B@ @@`@@ @@@@@@ @ @8@@@ @B@@@@ @ @@@@@@ @ @@@P@P@@x@@@@@@X@@@@@ @@B@@@P@P@ @X@@@@@@X@@@@@ @@B@@@@ @@@ @ @ @P@@@@@ @@@ 8@@ 8@@8@@8@@8@@@@@@@@  @8@@ @ @ @@@@@@ @@@@@8@@@ @ @@@@X@@@@ 8@4@ @@ @@ @@8@`@8@@@3@@ @ @8@@@ 8@@@ @ @8@@ h@h@ @@@4@@4@@@@4@ @@@3@@38@@3@@@ @4@@@@4@@@@3@@38@@ @@@@ @@h@h@h@ @ @@@h@`@`@ @ @@@h@ @ @ @ @ @ @ @ @H@H@ @@ @ @@H@@@@ @ @ @ @ @ @ @  @  @  @  @ @ @0@0@ P@P@ @ @ @ @ @@@ P@ @4 @ @3 p@@ @@@ H@@@@@@@@  @  @@0@ P@P@ @ @ @ @ @@@ P@ @4 @ @3 p@@ X@@@@ H@@>@@@@@  @  @@0@@ @B @ @ @ P@ @ @ @ @@X@@@@@@4@@@@@@H@4@>@@@@@3@4@@3P@@>@@3P@@4@@3p@@  @  @  @  @@0@ @ @ @@`@J @ H@@@@ @@@@  @  @@@ @ h@@@@@@@@@@@@@@@@@@ @ @ @(@@@ @@@@@ @@@@ @ @@@ P@P@@@@@ @ @@@ @ @@@ P@P@@@ @ @ @@ @@p@@ @ @ @  @x@@@@ @@(@@ @ @ `@@@ @@`@ @ @ H@@@0@@@@ @ @@0@ P@P@@@@@ @P@ @@@@@J `@@@@@@@@@ @@@@ @ @@@@@@  @ @@@x@x@@@@@ @ @ @ @@ @ @ X@@ @@ @@@ @ @8@`@ @ @@@@@@@@@@@@ @ @ @ @ @@@ @@x@@@@ @X@@@@ @@@ @ @X@@@@ @X@@@@ @@@ @ @ @ @@ @ @ X@@ @@ @@@ `@`@`@ @ @@ @@@@@@@ @@@ @ @ @`@ @ `@ @@@@P@@@@@ @@H@@@@@@@ @@@@ @@@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @@@@ @ @@@@@ @ @@@ @ @@@@@@@ @ @ @ @@@ @@@@x@ @ @ @@ x@@@@@ @h@@ x@x@x@ @ @@ x@@@@@ @X@@ @`@ @@ H@@@@@@ `@ @8@@@ @ @ @ @x@h@ @ @ @ @@@@@ @@@ @ @@ @@ @@ @ @  @@h@@ @ @ @@X@ @ @ @@x@X@ @@ @@@@@ @ @@X@@ @ @ @@8@ @ @ @@>@`@ @@ h@@`@ @ 8@@@ @@@ @ @@8@@ @ @ @@H@@ @ @ @@H@ @ @ @@@@@ @ @@@@ @@@ @@@`@`@ @ @@x@@ @ @@x@ @ @ @@@@@ @ @ @@@P@P@@@=@ @@ @ @ @ @@@@ @ @ @8@P@@ @@@`@`@ @P@`@`@@@P@`@x@@@@@@ @P@@`@@@P@@`@@@ @@@P@P@@@x@@@ @P@@@@@@P@@@`@@@@x@ @@@ @ @ `@ @ @@x@ @@ @ @ @ @ @ @@x@ @@@ @ @ @ @ @@x@ @@ @ @ @ @ @ @@x@ @@@ @ @ @ @ @  @ @@x@ x@x@ @ @ @ @ @ @  @ @@x@ h@h@ @ @8@@@ @@x@ X@X@ @ @ @ @  @ @@x@ H@H@ @ @8@@@ @@x@ 8@8@ @ @ @ @  @ @@x@ (@(@ @ @8@@@ x@@x@ @@ @ @ @ @ p@  @ @  @@x@ @@ @ @ @ p@ @  @@x@ @@ @ @ @ @ h@  @ @  @@x@ @@ @ @ @ @ `@  @ @  @@x@ ؿ@ؿ@@@ @ @ X@ @ @ @@x@ п@п@@@ @ @ P@ @ @ @@x@ ȿ@ȿ@@@ @ @ H@ @ @ @@x@ @@ @ @ @ @ @@ @  @  @@x@ @@ @ @ @ @ @  @  @ @@x@ @@ @ @ @ @ 8@  @ @  @@x@ @@ @ @ @ @ @  @ @  @@x@ x@x@ @ @8@@@ 0@@x@ h@h@ @ @ @ (@ @ @@x@ X@X@ @ @ @ @ @@x@ H@H@ @ @ @ @ @@x@ @@ @ @ @ @ @  @0@x@ @@ @ @ @ @ @  @0@x@ @ @ h@@`@ @ @@@ @@@@@ @@x@ @@8@@ @ h@@@ @ @@@ @@@ @@  @@x@ @@ @ @ @ @ @  @  @ @@x@ @@ @@@@@@@@ @ؾ@x@ Ⱦ@Ⱦ@ @@@@@@@@ @@x@ @@ @@@@@`@@@ @@x@ @@ @@@@@@@@ @@h@@ @`@ h@ @@ @ @4 @ @ @@@ @@ @@@3 @@ @4 @ @@ @4 @ @@@3 @@@3 @@@  @ @@ؾ@@ @@@ @(@@@ @@@ @(@@@ @@@ @(@@@ @@@ @(@ @@ @@@@ @ @(@0@ h@h@ @@@0@ `@`@ @@@0@@p@ @ @ @ @ @ @ @ @@ P@@@@@@ @@  @  @  @8@0@ @ @@P@ h@h@ @@ @h@@@@@@@ 0@  @ p@  @@P@ `@`@ @ @ @ @ @@ @@P@h@h@@ @0@ @p@ @ @`@ @ @@ @h@@4 @@@@@3 h@@ @  @  @  @@P@ @ @@@ `@`@ @@@@@J #@@@ h@h@ @@J @@J @@J @  @@@8@@ `@`@ @ @ @ @ @ @@@ h@h@ @ @ @ @ @ @@@ @ @@ @@ @@ @@@ 8@@ 8@@  @@  @@ 8@@ @@ @`@Ƚ@@ @ @ x@ @x@@@@ @ @ x@ @@@`@`@@ @ @@@@ @@@@ @@@ @ @@@@@@@@@@@@(@@h@@`@@@@(@@x@@@@@ @@@@ x@@@@x@@@@x@@(@`@x@@@@@ @@x@ X@X@@@8@@@8@@@ @@@@@@(@@@@@@@ @ @@@ @ @`@ h@4@@`@3X@@ @@@@@ @@@@ 0@@4 @ @@@`@@@@@ X@@@@@4@@3@@3 @@ @ @@@@ @@ @ @@@@ @0@@@@@@ؼ@@ @@@@@ @@@>@@ H@`@4@ H@X@4 @ H@P@4 @ @@@ H@h@4 @ X@ @@@ H@`@4 @X@@@@H@X@4@X@@@@H@P@4@X@@@@h@@@@h@@@@h@@@@@4@@3@4@4@4@4@@@3h@@3`@@3X@@3P@@3@@@>@@3@@@>@@3 @@@>@@3 @ @ @>@@3 @@@>@@3 @@@>@@3@@@>@@ h@ @ @H@@@@@@@ @@@@@@ @@@ @@@ @@ @@x@@@@@@ X@@@@8@4@ @@3`@@ @ؼ@x@ @ H@@@@@@@@@@4@ @ @ (@@@ @ @ X@ @ @ @ @4 @ @@3 @ @3h@4@@`@3X@@ @ @P@x@@ H@ @@@@ @ @ @@x@@ @@@H@@`@ @@@H@@ @@@ @ @@4@@@@3@4@@3@4@@3P@ػ@@@@ @@@`@`@ @@@ X@@@@@0@@`@`@@ @@@@@ @@@`@`@ `@@@h@h@ h@@@`@`@ `@@@h@h@ h@@(@@ @h@@h@@ @@`@@ @@@@@@ @ @@@@@p@ @ @h@ @4@X@@@@@@@4@@4 @ 8@@@3@@@@3  @@@@3@@ @ @@p@@@X@@ @ @@@@@@@@@@ @ @@ @ @@ @@4@ @@ @ @ @4 @ @ @@ @@3 @@ @3@X@@p@@(@@ @  @ @@ @ @ @h@`@J)@ @@@@@P@@@ @ @P@8@@@J)@ @(@@@@@@X@h@@@ @h@@@@ @@@@@@J@B@ @@@ @@J)@ @P@@@@@@@X@h@@@ @h@@@@ @@@@@@@@ @@ @غ@@X@X@@@ @@ @@@ @@ @@@@ @@غ@4@@@@3`@@ @@@@ @ @ @@ @ @0@@@@@@@@@@@0@ @ @@@@ @@@@ @ @ @@غ@@@@@@@غ@@@@@@غ@x@x@@@@غ@@@@@@غ@@@@@@غ@x@x@@ @@x@غ@8@8@@ @@8@غ@8@8@@ @@8@غ@ `@`@@@@@ @4@4 @@@3@@@h@@`@@3 h@@@@@ @ @`@غ@@h@h@@ 0@@@@@ @P@@@(@(@ @@ؼ@@ @@@ @@@@@ @ @`@@@@@@ `@ @ @@@@ @@P@ @@@@ `@@@@ع@@4@@4@@@@3x@8@@@3@@ @@@@@ @@@@ @@@@@@@ @ @@ @@@@@@4@4@@ @@@3p@@3@4@@3@@ `@@@ @@J)@ @4@p@@@ @@ @ @4 @@3 ػ@4 @ @@ @3 @@3@4@ @@@3@@ @ @@@ @ @@@ P@@@ @@@@ @ @@@@@@ @@@@@@@@@@ @@@@@@@@@@@ @@@@ @@@@ @p@p@@ @ @ @@@ @ @@@ @ `@@@@@@@ @ @@`@@@@@ @@@@@@`@@@@@ @ @@@X@@P@@H@@@@@0@@(@@ h@ @@@@ @4@@ @@@3@4@@4@ @4 @ @@ @4 @ @4 @ @@ @4 @ @@@3 @@ @@ @@ @H@ @@ @@ @`@ @@ @@ @p@ @@ @@@3 @@ @@ @@ @H@ @@ @@ @@ @@ @@ @@ @@ @p@ @p@ @(@ @X@ @@ @p@ @@ @@ @@ @@@3 @@ @@ @H@ @@@3 @@ @@ @@ @H@ @@ @`@ @@ @@ @@ @@ @@ @H@ @@@3@@@@@@@H@@@@`@@@@@@@@H@@@@@@8@@@@0@@@@@@x@@@@@@@@@@p@@`@@h@@@@@@@@H@@@@@@8@@@@0@@@@3@@@@@H@@@@`@@@@@@@@@@@@P@@@@ @@@@P@@P@@@@@@@@ @ @@@@ @ @ @ ȸ@@@@ @h@@ @@@@ @h@@ @@x@@ @ h@ @x@x@@ @ @x@x@@ @@ @@@@ @ h@@@@ @ @@@@ @ `@ @@@@ @ h@@@@ @ @@@@ @ h@ @@@ @ @ @ @ @@@ @ @@ @4 @@4 @ @ @@3 @@@@@3 @ @@ @4 @ @4 @ @4 @@3 @@3 @@@3 `@@  @ @@@ @ @@@ @4 @ @ x@@@ @@@ @ @ @X@ @ @@ 8@4 @ @@3 @@ @@3 @@ @@@  @ @@x@`@`@@ @@@4@@3@X@@@@ Ƚ@@@ @@x@@ @@h@@ @ h@ @(@h@@ @ @ h@ p@ P@@h@@ @ h@ @@@@@ @ h@ @@@@ @ 8@@@@ @ @@H@ @ @4@@@@@@@3@@@4@@@@3@@@ @ @ @@ @@ @@@ @@@ @@@ @ @@ @@ @ @@@@@ @@ H@@@@ @ @0@@@ @@ @@@@ @ @0@@@ H@@@@ @ @ @8@@ @  @@H@@ @ H@@(@@ @ (@@@ @@ @  @@@@@ @ @@@@@ @ @@@@@ @ @@@@@ @@ @@@ @ @0@ط@@H@ȷ@@@ @@@@ @ @@@@ @ x@0@@@@ 0@ @ @x@@@ @ @ 0@ @x@8@@ @ @0@@@@@@ 0@ @ @@8@`@`@@ @@@ X@@@8@@@@ @@@@x@x@ @ @@ `@ @@  @P@x@@8@`@@ @ (@@@ @ @@8@ @ @ x@B@ @B@ @B@ @B@ @B@ @B@ @B@ @@@@@@@ض@ @ X@4@8@@@38@@@ @ @4 @ p@4 @@@3 @ @ @4 @ @@@4@ @@@4@ @@@4@ @@@4@@3@@@@@@x@@P@@3@@@P@@@@3@@@H@@3@@@P@@@@3 @@ @P@ @x@ @@@3 @x@@ @  @x@@ @ @@ض@@ @4 @ (@ @ @@ @`@ @ @ж@ 8@@ @@ @@ @@ @@ @@ 8@@ @@ @@3 @4 @@3 @@  @@@ @ @@ @`@ @ (@ @@  @@@@ @  @@@@ @@@@ @@@@ @B@@ @ @ @@@ @ @@@@@@@@4 @ @ @@ @@3 @4 @ @ @@@@3 @ @@ @@@@ @ @@ @@@ @@@ @@@@ @ @@ @@@ @@@ @@@@ @ @@@@@ @`@@P@@@@P@@@ @ @@@(@@ @4@@3@@ @@@@ @@x@@p@@ X@ @@@@@ @ h@x@x@@@@@@ P@@(@@@8@ @@8@@@@@@8@@8@@8@@@@8@@8@@8@@@@ @ȷ@x@ @ @ 8@@8@@@@8@@8@@8@p@8@@8@h@@@ X@ @8@H@@ @ @8@8@@ @ @@@ x@ @@@ @@ @ h@@`@@@@@@@ @ @@@@ @ @ @ @@@@ @ @B@@ @@ @@@ @ @д@@@ @@@@ @@ @@@@ @ @ @@@ @@`@J`@ x@д@@@x@@@@8@x@@@@@@ x@ @@ @ @@@@ ȷ@@`@@@@ x@ @@ @x@@@ @ x@ @@ @x@@ @ @@@@@@@@ x@ @@ @ @@h@@  @@@ @H@P@@ @@@ @H@8@@  @@@ @@ @@ @@@ @@@@ @4@@@3@4@@4@@3 @>@3@>@@@ @ @h@@@@@@ @B@@ @H@@@@@@ @ @ @ @@@@@@@ @B@@ @H@@@8@@@ @ @ @ @@@@@@@ @B@@ @H@@@X@@@ @ @ @ @@`@@ @P@@@ @B@@ @h@`@@ @x@@@8@0@@ @ @@@ @B@@ @P@0@@ @@@@ @@ @ @@@@@@4@@3@4@@4@ @4 @@3 8@@38@@38@@ 0@ @ @@@@ @@@@@ @ @@@@@@@ @@@@@@ @ @ 8@ @ h@ @@ @ @ @ @ 8@@@@@ @@  @@P@ (@(@ @ @ @(@@ @@  @8@P@ 8@8@ @ @ @ @ @@P@ h@h@@ h@@@@@h@P@ x@x@ @ @x@@ @ @ P@@@ @ `@@@@  @8@P@ @@ @@@@h@P@ @@ @@@@h@P@ x@x@ @ @ @ @`@P@ h@h@ @ @ @ @`@P@ @@ @ز@@@H@P@ @@ @ز@@@H@P@ @@ @@@@@h@P@ H@H@ @ @H@@@@P@ ؿ@ؿ@ @ؿ@@h@P@ п@п@Ȳ@ @H@P@ ȿ@ȿ@@ @H@P@ @@ @ @ @ @ @@P@ @@ @@@@@h@P@ @@ @@@@H@P@ @@ @@@@H@P@ X@X@ @ @ @ @ @@P@ H@H@ @ @ @H@@ @@  @ @P@ @@ @@@@P@P@ @@ @@@@P@P@ @@ @ @ @ @0@P@ X@X@ @X@@@P@P@ @@ @@@@H@P@ Ⱦ@Ⱦ@ @ @ @@@@@x@P@ @@ @ @ @@@@@x@x@@@h@h@@@@@ @P@x@`@`@h@X@@@@@ @P@x@@@h@P@@@@@ @P@x@@@h@`@@@@@ @P@x@@@ @X@@@@@x@@@P@@@@@ @P@x@@@ @@@@@@x@@@ @8@@@@x@@@(@ @@x@@@ @ @@@@x@x@x@ @ @@@@x@p@p@ @ @@@@x@h@h@ @ @@@@x@`@`@ @ @@@@x@X@X@ @ @@@@x@P@P@ @@@@@@x@H@H@ @@@@@@x@@@@@ @@@@@@x@8@8@ @@(@@@@x@0@0@ @@X@@@@x@(@(@ @@@@@x@ @ @ @@@@@x@@@ @ر@@@@x@@@ȱ@ @@x@@@@ @@x@@@@ @@x@@@@ @@x@@@@ @@x@@@ @@@@@x@@@ @@@@@x@@@ @@@@@@Ⱦ@Ⱦ@ @@@J @@@@@ @@@J @@@@@ @@@J @@@@ h@@@@@ @H@@@@p@ @@@`@`@`@ @@@@@X@ @@@@@P@ @@@@@@@ @@@@@0@ @@@@@ @ @@@@@@ @@`@p@Z[@B$~ >  > >  ~ ~   >   ~      > > V > ~ ~           ۺ 00ۺ ? @ 8@ @ PA A A  B XC C C J J J (K L N  P  Q `R S XS `S hS @W W 0X Y Z [ \ _  ` ` a a 8b b  c f f hg h Pi j j hk k l hm n @ X   0    0   x     8 ` 0  X   P x   P (        8   H    8 (  ( 8 `  P X      (    X# # @$ $ H% & ) , . p0 `@@@@@Ȧ@p@@Я@@@@@@ @@%@-@ /@p/@@`@p@@@@@@@ @@@@@@@@Ȱ@а@@@@@ @0@@@P@X@`@p@@@@@@@@ȱ@ر@@@@@@@ @(@8@@@P@X@`@h@x@@@@Ȳ@ز@@@@@ @0@P@`@@@@@@@@ @8@P@h@@@@@д@@@@ @8@H@X@h@p@@@@@@@@ @@@h@p@x@@@@@ж@ض@@@@@(@8@P@`@x@@@@@@ȷ@ط@@@@@ @8@@@P@p@x@@@@@@ȸ@@@@@@@@(@0@@@H@P@X@`@p@@@@@ع@@(@@@P@h@x@@@@غ@@@ @8@X@p@@@@ػ@@@@ @(@@@H@`@x@@@@@@ؼ@@@@@0@@@X@`@h@x@@@@@@Ƚ@@@@@ @0@8@P@h@@@@@Ⱦ@ؾ@@@@@ @0@H@X@h@x@@@@@ȿ@п@ؿ@@@@@(@8@H@X@h@x@@@@@@@@@@8@H@X@h@x@@@@@@@@@@@0@H@`@x@@@@@@@@@@0@H@`@h@@@@@@@@@@(@@@`@h@@@@@@@@ @0@H@`@p@@@@@@@@@@ @8@P@h@x@@@@@@@@ @8@H@X@`@h@@@@@@@@@@@@(@@@H@`@h@x@@@@@@@@ @@@X@`@p@@@@@@@@@@0@P@h@x@@@@@@@@@ @0@H@X@p@x@@@@@@@@@@(@8@@@P@X@p@@@@@@@@@ @(@@@X@`@h@p@@@@@@@ @8@P@h@@@@@@@@ @0@H@`@p@x@@@@@@@@(@@@`@x@@@@@@@@@@0@@@P@`@h@@@@@@@@@(@@@`@h@x@@@@@@@@@(@@@H@x@@@@@@@(@0@8@X@h@p@x@@@@@@@@@@@(@@@P@`@p@@@@@@@@0@8@@@P@`@p@@@@@@@@@@@ @(@0@8@@@X@h@@@@@@@@@(@8@@@P@h@@@@@@@@@@@@@@@@ @(@0@8@P@h@p@x@@@@@@@@0@H@`@x@@@@@@@@@@@(@0@8@@@H@P@h@@@@@@@@@@(@8@P@p@x@@@@@@@@@@@@@ @(@0@@@H@P@X@`@h@p@x@@@@@@@@@@@@@@ @0@H@X@h@x@@@@@@@@@ @8@H@p@x@@@@@@@@@(@0@H@`@x@@@@@@@@@@0@@@H@X@h@p@@@@@@@@@@@@0@8@@@H@`@h@x@@@@@@@@@8@P@X@`@p@@@@@@@@@@ @8@H@X@h@x@@@@@@@@@@8@H@`@x@@@@@@@@@@ @(@0@H@P@X@`@h@p@x@@@@@@@@@@(@0@H@p@@@@@@@@@@ @0@8@X@p@x@@@@@@@@@@@@@@@@ @0@H@`@@@@@@@@@@@@ @(@@@H@P@X@`@h@p@x@@@@@@@@@@@@@@(@0@8@@@P@`@h@x@@@@@@@@@@@@ @0@8@@@P@X@h@p@x@@@@@@@@@@@@@@@ @(@8@@@H@P@`@h@x@@@@@@@@@@@ @(@8@@@H@P@X@`@h@p@@@@@@@@@@@@@@@(@0@8@@@P@`@x@@@@@@@@@@@@@(@0@@@H@X@`@h@p@x@@@@@@@@@@@@@@@@ @(@0@8@H@X@`@h@p@x@@@@@@@@@@@@@@@ @(@0@8@@@H@P@`@h@x@@@@@@@@@@@@@@@@@@@@@ @(@8@H@P@`@h@p@x@@@@@@@@@@@@@@ @0@@@P@`@p@@@@@@@@@@@@@@@@(@8@H@X@`@h@p@@@@@@@@@@@@@@@@@@ @(@0@8@@@H@P@X@`@h@p@x@@@@@@@@@@@@@@@@@@@@@ @(@0@8@@@H@P@X@`@h@p@x@@@@@@@@@@@@@@@@@@@@@ @(@0@8@@@H@P@X@`@h@p@x@@@@@@@@@@@@@@@@@(@8@H@X@h@x@@@@@@@@@@@(@8@H@X@h@x@@@@@@@@@@@(@8@H@X@h@x@@@@@@@@@@@(@8@H@X@h@x@@@@@@@@@@@@@@@(@8@P@`@p@@@@@@@@@@@@@@ @(@8@H@X@h@x@@@@@@@@@@@ @0@8@H@X@p@@@@@@@@@@@ @0@@@H@P@X@`@h@p@@@@@@@@@@@@@@@@@ @(@0@8@@@H@P@X@`@h@p@@@@@@@@@@@@@@0a@ W `W  5 0e) p  6 - @   ` ) p   P    i  m "    v}@_}p}}P|@|3  .    @  "\  0 a0 ~ ~0Q|: 1 p1 1 82 2  3 3  4 `4 4 `5 6 pA @@@@[@a@0@0@8@@@H@P@X@`@h@p@x@@@@@@@@P@`@P Prolog execution %s(%ld). CPU time = %ld.%lds %s S㥛 haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programediteditor_filenoname.plversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]tts@t`u`u`ust`u`u`u`u`u`u`u u`u@s߀sBinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type0P߈ 0*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operation@`߀ЎP@@`Pp߀Е̞PPp0Hؖߠ М0߰0Pp߀p`P߰ߠߠ߰@0ߐߠН 0`pߐ߰Pߠ߀(߀߰` ߐ Эߐ``߰0ߠ` ߀P ߀@ߠ`ߐ й0ߐPߠ@p` ߀ߠ0нpߠ`0`ߐ ߀ @0ߠP߀ ߠpP`@0p߰Ш0expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_opPpߠ߰߰߰߰߰߰߰`  ߰߀߰߀` %ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loadingunable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this process@pߠ0`߀߰symcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2string buffer (-i option) exceeded or infinite term%ld%sbad arg in arithmetic operation@GPG`GFFpGFFF߀GߠG߰GGGGPMKKKKKKKKKKKKKKK0MMKKKKKKKKKKKKKKLKpLKKK0LKKߐLKKKKKK߰LL%ld%-se%-ld %fuser_bpctrue_prolog:$end0c.c not compiled with -D C_INTERFACE is_compiled_1()atomic_1()integer_1()nonvar_1()var_1()cnl_1()cwrite_1()fail_0()symcat_3lval_3val_3set_3()rm_2()def_3()change_arg_3()setarg_3()arg_3compare0_3l_neg_3&int_only_op!=<=rel_opput0_1()get0_1random_1fdiv_3div_3%arith_opprolog:c_check_avprolog:c_opcodeprolog:c_check_ivget_cut()put_cut()move_regpush_variable()prolog:c_skipc_trace(" ")unify_integerprolog:c_aux_unify_integerwrite_integerprolog:c_aux_write_integerget_integerprolog:c_aux_get_integerput_integerprolog:c_aux_put_integerload_integerprolog:c_aux_load_integerprolog:c_wvoidprolog:oldH_newPprolog:newH_newPprolog:oldH_oldPprolog:newH_oldPprolog:newPprolog:c_chunk_endprolog:c_chunk_beginfun_arityfun_symbolunexpectedprolog:c_find_funprolog:get_offsetprolog:new_offsetprolog:c_check0prolog:c_check{255,0,0,");_size=sizeof(long "}};[] = {struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} "#include "#include "../src/c_defs.h"#include "../src/global.h"/* do not edit: generated by co.pl */user_bpwam_bpprolog:c_decorate_file0prolog:c_spec_endprolog:c_spec},,(void *) {prolog:make_commentprolog:patch_specials"},,"prolog:c_traceprolog:wchunkprolog:make_bcodeprolog:c_instrprolog:make_hcodeprolog:make_ccode500c_threshold_minc_threshold_max100000xxprolog:c_rootprolog:sprolog:defeditprolog:my_defeditVISUALEDITORprolog:get_editorls -tFprolog:ubootBinWAM intermediate code.asmprolog:make_includeprojectin_moduleunable_to_make.bp.cbin_prolog_with_cparserprolog:cparser119110120100104newappl.bpdcg.plwrite.plread.pllib.ploper.plinit.plprolog:listifyprolog:make_cmd0prolog:fact2rulebeginincludingprolog:exec_run_time_commands0% !!! action delayed after compilation, for command:prolog:get_cmd_no$run_time_commandprolog:cmd_rootprolog:cmd2clauseprolog:exec_cmdensure_loadedprolog:include_fileprolog:preprocessprolog:is_dynamic_clauseprolog:translate_cmdprolog:translateprolog:put_to_eofprolog:make_memo_fileprolog:include_memoed_fileprolog:memoable_fileprolog:memoing_translate_allprolog:translate_all0prolog:write_c_chunkprolog:make_dummy_endendprolog:close_c_chunk_fileprolog:c_decorate_file$end0footerprolog:comp_fileheaderprolog:decorate_filetotal_compile_timeprolog:xcompileprolog:compile1prolog:compile0totalbytes_usedprolog:translate_allprolog:init_cmdcompilation abortedcompile_time$end1prolog:terminate_fileprolog:maincompprolog:mcomp_fileto...compilingprolog:currpredoffsetaritypredicateprolog:newpred0file_nameprolog:let_c_chunk_fileprolog:wcode_asmprolog:wcode_cnprolog:wspec_cbegin_endc_flagprolog:c_thresholdprolog:write_or_skip0prolog:encode_opprolog:n_builtinbuiltin_?arith_valueprolog:n_aritharith_variableprolog:n_inlineinline_variableend_?firstarg_?prolog:n_nopclause_?prolog:write_or_skipwrite_voidunify_voidpush_variablepush_structureload_valueload_variableload_constantexecute_?get_cutput_cutpush_cutget_valueput_variableput_valueget_variableput_structureput_constantget_structureget_constantpush_constantwrite_constantunify_constantwrite_valueunify_valuewrite_variableprolog:wcodeunify_variableprolog:mc_transform_voidprolog:mc4prolog:mc_transform_pushprolog:mc_selprolog:mc3prolog:mc_chunkprolog:mc_pushprolog:mc5prolog:mc1prolog:mc0prolog:mc_emptyprolog:mc_input0prolog:mc_inputprolog:mc_topempty_opcutprolog:encode2prolog:encode_argprolog:instr_catprolog:mc_peepholeprolog:mc_one_instrprolog:encodeprolog:beautifyprolog:gen_instrprolog:temparg256prolog:maxarityprolog:write_instrprolog:antigenicc_chunk_valuec_chunk_variableprolog:make_anti_callprolog:bind_lengthmemprolog:bind_c_chunk_lengthDEFINITE:EXPANDED:prolog:show_stepsprolog:show_infoprolog:show_fun prolog:show_or_skipprolog:gen_codeFINAL CODE:prolog:mc_all_instrPOST TERM-COMPRESSION CODE:modeBRUT WAM-ASSEMBLER:prolog:show_instrprolog:show_codeprolog:add_upper_contprolog:def_to_mbin0prolog:def_to_mbinprolog:emit_isprolog:split_rel_1prolog:split_isprolog:split_relprolog:split_is_relprolog:app_bodyprolog:repl_lvalprolog:repl_disjprolog:repl_conjprolog:repl_known116117prologspying_onprolog:split_opprolog:strip_nilprolog:repl_macroprolog:repl_bodyprolog:mdef_to_defprolog:get_regprolog:free_regprolog:allocate_regprolog:allocate1prolog:check_var_argprolog:check_var_varprolog:check_lifetimesprolog:set_toprolog:defaultprolog:collapse_themprolog:mark_varprolog:mark_argvaluevoidprolog:get_var_typeprolog:fill_var_typeprolog:fill_oneprolog:tpointprolog:fill_allbad_occurrenceoccatprolog:oldvarprolog:newvar$OCCprolog:occurrenceprolog:find_occurrencespushprolog:deep_var_opunifyprolog:unify_opprolog:emit_args0prolog:deep_structure_opprolog:emit_structureprolog:cc_tprolog:cc_argstructureprolog:emit_argsprolog:cc_argsprolog:emit_top_structureprolog:classif_argloadconstantprolog:classif_loadinlineprolog:cc_b_argsprolog:emit_top_bargsprolog:handle_constant_resprolog:out_regtempprolog:cc_top_tprolog:cc_eq1unexpected_body_atomprolog:emit_body_top_termprolog:cc_builtinprolog:cc_eqcutargprolog:emit_top_argsprolog:cc_top_argunexpected_head_atomprolog:emit_head_top_termbuiltinprolog:cc_b0prolog:cc_h0prolog:set_modeprolog:get_modeprolog:end_chunkprolog:emitprolog:hidden_varlenc_chunkprolog:begin_chunkprolog:cc_hprolog:cc_bprolog:allocate_regsprolog:collapse_argsprolog:fill_infodictprolog:varsprolog:maxprolog:cc_h_bexecutefirstargiiprolog:classif_firstprolog:firstargprolog:cc_clauseprolog:bu_bodyprolog:cutpfailing_to_compile_clauseprolog:newpredprolog:gg_emitprolog:cc_compile_clauseBINARY:binprolog:bin_builtinprolog:c_chunk_filewam.hcwamprolog:cc_must_have_builtinsprolog:cc_builtinsprolog:compile_builtinsprolog:cc_bincompprolog:compile_binaryshould be groundprolog:free_variablesprolog:explicit_bindingprolog:term_is_free_ofprolog:list_is_free_ofprolog:replace_key_variablesprolog:concordant_subsetprolog:replace_instanceprolog:keymergeprolog:samkeyrunillegal_argumentsprolog:keysortprolog:ksortprolog:merge_2prolog:merge_sort1prolog:merge_sortprolog:remdupsortedprolog:bb_origunsortedprolog:assume_oneprolog:assume_all0prolog:assume_all$usedprolog:copy_or_delete_llprolog:get_assumed_clauseprolog:insert_llprolog:assume_with_hint_llprolog:assume_llprolog:assume_fileprolog:assume1error_in_assumebad_clauseprolog:add_hint_lllinearprolog:assume$closedintuitionisticprolog:generate_run_time_predicateprolog:listing1% assumed prolog:listing0% prolog:consult_cmdprolog:consult_includedconsultingtimeconsultedprolog:consult_embeddedprolog:survive_cleanupprolog:consult0% using compile/1 is MUCH fasterprolog:consult_warningabolish_expects_dynamic_clausesfoundprolog:abolish0prolog:clause$dbrefprolog:collect_slotprolog:erase0prolog:clause0prolog:assert_itunable to assert clauseprolog:add_clause0prolog:add_clauseprolog:ensure_dynamic$lastdynamic code would shadow assumed predicateWARNING: dynamic code will shadow compiled predicateprolog:define_dynamicprolog:check_dynamicprolog:make_dynamic!!! compiled!!! dynamic!!! assumedFail: Call: : prolog:tr_callExit: Redo: prolog:tr_if2prolog:tr_disj2prolog:tr_if1prolog:tr_goalprolog:tr_disj1prolog:tr_bodyCUTprolog:do_disj0prolog:do_if_then_elseprolog:do_disjprolog:do_conjundefined_predicateprolog:do_undefprolog:do_applyprolog:do_goalprolog:do_compiledprolog:do_bodyunbound_goal ; for more, otherwise prolog:user_actionprolog:another_solprolog:report_top_varsprolog:report_one_vargoaltopprolog:savetopprolog:nothingprolog:topcallprolog:report_answersprolog:topinterp?- prolog:topstepinit_io$endprolog:exec_run_time_commandsprolog:binpro_startprolog:l_magic2:- ->; ( , :- prolog:l_magic_nlprolog:l_magicprolog:l_clausesprolog:pp_clause0prolog:classify_other_tailprolog:classify_alpha_tailprolog:classify_name700prolog:w_operprolog:w_tailprolog:w_argsprolog:w_atomotherprolog:w_VARprolog:w_variableprolog:put_stringalphaquoteprolog:maybe_spaceprolog:maybe_parenpunctprolog:w_out126969492255248246223222216214192prolog:is_latin1_majprolog:is_latin1_min90122prolog:r_varcountprolog:r_digsprolog:r_digitsprolog:r_int! end_of_file just after full_stopprolog:is_specprolog:is_alpha_num! end_of_file in /*.. commentprolog:patch_slashprolog:more_string! end of file in: tokenprolog:r_symbolprolog:is_minprolog:is_numprolog:r_integerprolog:is_majprolog:r_lookup95prolog:r_nameprolog:r_stringprolog:r_fullstop1251241239391prolog:r_after_atomprolog:r_solidusprolog:is_terminator-1end_of_fileprolog:r_toks 99999prolog:display_tokenprolog:finish_syntax_error** SYNTAX ERROR: byte=syntax_errorprolog:display_listprolog:start_syntax_errorbracketvariableprolog:cant_follow_exprfollows10001100prolog:peepopprolog:exprtlprolog:prefix_is_atomprecedencewithcontextprefixlist|]|argumentsin,)anstartcannotstring}{(()prolog:r_list][prolog:after_prefix_op999applyprolog:exprtl0prolog:r_args(prolog:rtsprolog:ambigopprolog:infixopprolog:postfixopprolog:prefixopprolog:expectexpressionafterexpectedoperatorprolog:syntax_errorprolog:rtprolog:all_readprolog:r_and_checkprolog:portable_writeqprolog:portable_writeprolog:portable_printprolog:r_vars** warning singleton_variables, byte=>=> :-...prolog:melt_varnamesprolog:warn_singletons1prolog:r_termprolog:singletonsfile_not_foundprolog:see_a_fileprolog:find_file2bad file namelibraryprolog:find_file1unable_to_tell_atunable_to_see_atunable_to_tellunable_to_seeprolog:peval_iobinprologprolog:default_prologexpected_to_expandtry_edcg_expansion-->>prolog:dcg_CONJprolog:dcg_disj0prolog:dcg_term{}prolog:dcg_disjprolog:dcg_goal@@prolog:dcg_head:-prolog:dcg_conjprolog:dcg_bodydcg expansion error->prolog:dcg_rule-->prolog:try_dcg_expansionkillcdaccessno such environment variablegetenvargvargcprolog:unix_argvHOMEprolog:unix_cdprolog:append3prolog:near_matchpredmarkprolog:predicate_key0compiledbuilt_ininterpretedprolog:generate_a_predicateprolog:predicate_property0prolog:is_predicateST133955584prolog:float_minus101prolog:try_float_exp1eprolog:try_float_expboxprolog:try_floatculpritblackboard overflow, left onlyprolog:bb_put_1prolog:bb_put_backprolog:rmprolog:letprolog:valprolog:setprolog:defprolog:bb_failprolog:bb_gcprolog:bb_default_valprolog:$gteqprolog:$lesseqprolog:$noteqvariable_in_iserror_in_isin tab/1: should evaluate to an integerprolog:tab0prolog:make_lengthprolog:get_lengthprolog:general_appendprolog:append_bodyprolog:appendNprolog:det_appendprolog:term2dlistprolog:term2list$floatBP_PATH9798105108prolog:getenv_path99115103111114112121109prolog:compile_memprolog:see_or_failprolog:save_termprolog:numbervars$VARvarsprolog:are_sharedprolog:share_varssprolog:call_ifdefno meta_interpreter for undefined goalcall_ifdefprolog:std_expand_termprolog:portable_expand_term1200?-1199prolog:interactive0prolog:is_interactivenoprolog:is_builtin_varprolog:bucontprolog:is_builtin_nonvarunable_to_spy_onyes$assumed$firstyfpostfixopxffyprefixopfxyfxxfxinfixopxfyprolog:op_typeprolog:get_op010000opmarkprolog:get_opprolog:gensym_noprolog:is_publicbad or repeated declarationprolog:hide_atom0prolog:hide_atomprolog:public0currentshould_be_nonvar[]*** : >>> userprolog:portray_errorprettyprolog:error_messagebasicbboardhtablesymbolsstringscodetraillocal_stackglobal_stackruntime:Cset_c_traceset_c_thresholdstat_dictsavedmember_inth_memberphrasefalseotherwisenospyspyingspyspy_goalinit_gensymgensymis_publicpublicmodule_namemodule_predicatecurrent_modulemodulesis_modulemodulemodule_calllwritepatch_itshow_code0char_in_cmdith_clausetr_bodydo_bodygc_read_clausegc_readadd_truebootctracetmakekcmakekmakecmakemake0makemake_executable_unix_applmake_appldirlscurrent_user_filecovinotepadpicoemacstexteditedmy_editeditis_builtinopcurrent_opswritesreadflushsee_or_failexists_filefind_filemake_file_namefile_libraryfile_extension_listfile_search_pathtelling_attell_atseeing_atsee_attoldtellingtellseenseeingseettycwritelnttycwritettyprintttyprinttynlttyputttyoutttyinfast_writepp_termpp_clauseportray_clauseportraydisplayportable_displaywriteqprintwriteread_tokensread_clauseread_with_singletonswarn_singletonstop_read_termread_termreadnlput_codeget_codeis_prologtoplevelmainquietmeserrmesuser_errorvars_ofterm_charsnotfree_variables^setofbagofkeysortsortbb_elementbb_listbbis_dynamicis_assumed-:assumed_clauseassumedassumelassumei=>listingreconsultconsultdebugabolishclauseeraseinstanceretractallretractassertassertzassertadynamictracemeta_interpretersystemunixaproposhelpctimecurrent_predicatepredicate_propertyacosatanasintancossinexpsqrtlogpow:=:dcg_phraseletbb_change_argbb_letbb_rmbb_valbb_setbb_def=\==:=>==<><@>=@=<@>@<\====compareexprisgettabappend_disjappend_conjappendNcompoundnumberfloatatomgroundgc_callnumbervarsmake_cmdlength++det_appendmemberappendargnforall_but_at_leastfind_at_mosthas_fueldrop_at_leasttake_at_mostnth_answerfind_whileskip_whenskip_untilwhileallfindall_disjfindall_conjfindallfindall_workhorse\=\+repeat,;->=expand_termmetatruemetacallinteractivestatistics::-=..asmadd_conttermcatstrip_contiforincludecompile.!bu1174n_nop160n_builtinn_arithn_inlinebu_ctrin_head8584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111098arith765432in_bodybu0700 xfx :=700 xfx =:600 xfx <=950 xfy =>950 xfy -:600 xfx :=:900 yfx :1200 xfx ::-1150 fx module1150 fx public1150 fx dynamic1050 xfx @@1050 xfy ->900 fx nospy900 fx spy900 fy \+900 fy not700 xfx \=700 xfx =..700 xfx ==700 xfx \==700 xfx @<700 xfx @>700 xfx @=<700 xfx @>=500 fx \500 yfx \500 yfx /\500 yfx \/500 fx #500 yfx #400 yfx //400 yfx <<400 yfx >>300 xfx mod200 xfy ^300 fy ~700 xfx =:=700 xfx =\=700 xfx <700 xfx =<700 xfx >700 xfx >=660 xfy ++650 xfy .400 yfx *400 yfx /500 fx +500 yfx +500 fx -500 yfx -700 xfx =700 xfx is1200 fx :-1200 xfx :-1200 xfx -->1100 xfy ;1000 xfy ,if0profilebb_resetlist_asmstat0shellnamefunctorfindall_load_heapfindall_store_heaprestartabortcallhaltnew_builtinsuspend_enginemultitask_enginesask_engineload_enginedestroy_enginecreate_enginequietunix_killunix_cdunix_accessunix_getenvunix_argvunix_argcsetrefbb_opbb_getbb_putiso_lseekiso_eofiso_peek_byteiso_get_byteiso_put_byteiso_read_termiso_write_termiso_close_streamiso_open_streamdcg_tellingdcg_telldcg_valdcg_defstrip_cont0write_floatinput_floatfloat_funfloat_fun2term_appendop0string_opsee_tell_atseeing_telling_atseen_toldsee_tellseeing_tellingolder_filebb_list0copy_termdet_append0lift_heapadd_instrself_infoterm2listlist2termdcg_connectsymcatlvalvalsetrmdefchange_argsetargargcompare0\#\//\>><<arith_difarith_eqgreater_eqless_eqgreaterless0putget0random///mod*-1+is_compiledatomicintegernonvarvarcnlcwrite_failtrue?$cut$bin_cutBinProlog3.45/bin/bp.o.mips.dec100644 764 764 314350 5764217266 15415 0ustar javierjavierb/@F`8 P?p0Pd.textpx .rdatap0P.data000@.lit8``.sdatapppEE .sbss0F.bss ' '<@#b!b4d ('!CC#C] ! '!<B'@T $''] '!E!0F<'PBÌ!@B( @#8Œ#G ƌ<&bs&B!Uf &B!cs& BB!UB+!B!DB!E!0 !86@s&f B!BB!brs&B!BB!f b B!^''s& BB!UB!&Q &B!D!(!0 !8@B!'Z CB!B&B!Qs&f &!(B!D!0 !8@B!D'V !0B!BBc !'B!^B!D!0 !8@ 'B!UB!Bs&f &9я"2@'~ ! 02'@02!2@2@b"Ž+"@P\+@s&&f s&8s+j@! "2@! 02 @02!2@2@cbs&r >&U  s$B!Q"2@! 02,@02!2@2!@Ž+"@!P\+@$& s&B!#&CB!#&f CB!Q"2@! 02,@02!2@2!@Ž+"@!P\+@$&f  s&b&B!Ur s&B!Q &bB! UbB!UrB!BB# !bB! UB!Q5b&r s&B!Q &B!Q5br&B!B s&B!Qf  &B!Q5brB!BB# !B!Q5br&B!QB!B s&f  &8s+@! r+@…<4$! $!0 @!V! T!(c$be$ B$!ծPs&®bf ®bŎ®PP …P⮀Վ b$ `#! t!v!(b$c$ B$I !PŎP …P⮀Վ b$ `#! t!v!(b$c$I < @Є$< XЄ$… !…!!!@&!Qcc$!@&f s&…c#s&f CB…!Q"2@02 @202!2@2$b@  B!Q"2@02 @202!2@2$b@ B!Q"2@02 @202!2@2$b@  B!Q"2@5# Q02 @0!2@# $2b@  B!U5#U &"2@! 02 @0!2@1&H0<<ԥ$($0<<ԥ$($ 1&*@&<($ ' F0>4F02 F02 FE!0!' ''/  "F E<BDBDA4!8D$ FD1$FDDDD4!8D FDD%C&c42  F2 F  F2 F  F2 F  F2 F  F2 F  F2 F  F2 F  F F' ''/ %s metacallmetatruepredmarktellmarkend_of_fileprefixoppostfixopclosed_filebp_stateeditor_programeditor_filenoname.plnot enough common memoryadd_engine: engine table fullmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting ` Pstring table overflow%ld symbols, %s!!! symbol hashing table (almost) fullunexpected!!!arity limit exceededno definition for: main/1integer expected in halt/1trailing in unifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heapdivised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operation"""""#""T%%% &)**8&+,'L'h''+++<,l,4@5556,,,-D-x67<0(2,(.(3 )|10)H3p)-\(2('7648**d3x33334H4\4$686; <|:,===T>>?|??@DAAB|CCDD@EEEhindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2string buffer (-i option) exceeded or infinite termbad arg in arithmetic operation%ld%-se%-ld ttttt@ A%s halted[].-$empty<=>calltruemainseemarkopmarkxfxxfyyfxfxfyxfyfinfixopuser$floateditversioncodeboardchoicetrailheap%u(%75)%s/%ldunify %s/%ld %ld%s%srb??? %s systemuserrbwb%ld(75%)%ld%s%fPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx048<@DHLP $(,048<@DHLPTX`dhlptx|  $$T X(l p(##% ( &(0,4'`0\|## (%## (% ( #0#$ ((,%4<#H#@ D(L%Td#p#h l(t%|## ("%0 8(l#|#p t(x%$4<@P00000000,0$(0@08<DL X(PT\d p(hlt| (0 ( (000 0 00(,4D0<@HX0PT\l0dhpx (|0 (0 ( ,( $4<8@TDPHL\d0h ( (0 ( (0 *@*`**+L \ +  ( 0      ( $  0 (D 0  ( 8 H \ ` h | *        (     ( , P X  ` (\  0  0   0 4  < (8  @ (H h x  (|   (        $ L P p   (  * x///// 80 (1 (!02  ( !$0(2< D(HP!T0X2l t(x!02 (!02 (!02 ( !$0(2P T(X`!d0h2| (!02 ( (## ( ( (%  0h l(p t(& ( ( (0 ( ( (&$#(#,08DX`dlt|0 ( ( ( (D P(X4d h(l4|## (%( ,(<H"LX<d=hp;t:;>; (: (;;0#H#8=< @(D%L T(PX (=""?  $(<"X"tx""==< (=0$ ((,P T(l"p<==##0% (0;=P 0; (08\l`ht ( (( ,(08Pp (0 T X(\d8#D#< @(H%Pt (Lp|, x   (         !!!"$"" "("""""" "(##P##\##T# X#(`#%h#p######T$X$$%% %(%%&&0&& &(&& '$'D'`'''''$(T(t(((()()X)h)))<* @*(H*P*h***** *(**d+ h+(p+x++++++4,P,d,x,, -$--H. L.(P.X....p/ t/(x///0400 0(0001t12 2( 22P22222@3\333@444 4(485T55555 6(666 6(6606p667 7|777$8|88899 9 9,9$9(909h999999999t:|:::::::::: :(:;;;;T;\;d;;;;< < $<((<0<@<T< \<(X<`<t<<<<<<<==0=@=\=t=\=============0=%=^=L>>?t?????(@\@l@x@@@A0 | 0@ .0@ 8 a8  K0F THTF@H0lF`@HPFHp%PF%$H-tF-0H5F58HAFAHMF M,HWF@W(H0c F`cxHPoNotHp{ N{`HlN,HNHF H8F  HXF@ H0xF` HPNPHpN(H NH F0H NHx N ,H- F@-H0= F`=THPG NGHpR FRH`F`hHoFo<H{PF{HXF H`F@H0`F`@HPFHp FH8FHF4H00HK F |HN@H0 (F` HHP&pN&Hp-PF-xH5F5xHHK @F XHF@XH0%F`%lHP2\F2LHpFFF`HVFV$H\,F\<HfhFfhHpF pH|dF@|0H0F`HPP F$Hpt!F0H!FLH!FdHT"FH$#F |H#F@H0P%F`h0HPHK0UF  HWN@H0#XF`#XHP-XN-dHp9`YN9HCT^FCHMlFMHWmNW(HcnN cHpoN@pHH0stF@>hH0GܦF`GHPOpFOHpS8FSHX$FXH\F\HHK N <H̯N@TH0 N`HP'N'Hp1N1(H;N;HFpNFHQNQHeصF eHpF@pHH0wзF`w8HP}N}HpĽFPHFXHlFdHHKP оF TH$F@<H0'`F`'hHP2ȿF2Hp@LF@<HIFI8HTFTH^TF^HjF jtHvBHK HK@PF lHHh !#%')+-/13579;=?ACEGIKMOh h !#%'h h !#%')+-/13579;=?ACEGIKMOh h h hhru.ccputimequietquietmesbp_exitbp_haltwarnmesfatal_errorlocal_errorlink_haltcan_recoveroverflow_byhdef_stringhdef_intmake_constantshdefaultsmake_byte_arraymake_char_arraymake_hentrymake_atomtablemake_var_arrayvar_array_initmake_stackinit_common_memadd_engineheap_safe_margininit_engine_memis_enginedel_enginecreate_enginedestroy_engineinit_randomstart_profilerend_profilerget_cmd_line_optionsbp_versionstartup_mesinit_bpstart_wamrun_bpmes.70mes.73root_wamsym.cmake_symtableinsert_lexsfullatomnoatombaknew_funcengine.cunwind_trailinit_orig_wamrestart_origdefault_start_pointheap_or_bp_haltunifybad_instrexec_linkinterp_frominterpbp_prolog_callload_engineload_engine0call_engineask_engineanswersuspend_enginemultitask_enginesbpload.cinit_instr_lenget_one_intinput_funlink_switchlink_codeinsert_opinit_codeskip_headerloadoperatoriiload_fileload_instr_arrayload_selfload_kernelcurrpredbadcodelastprev_prev_lenprev_lenbuiltins.cstat_usedunix_argvunix_getenvunix_accessunix_cdunix_killstat_leftstats0symcatolder_file0older_filesee_tellsee_tell_atseeing_telling_atseen_toldshell_1add_instrocomparecomparefunctorname2buflist2bufname2listdet_append0list2termterm2listterm_appendcopy_termcopy_from_enginefindall_lift_heapfindall_store_heapfindall_load_heapapplystrip_cont0dcg_telldcg_connectsetargchange_argbp_consdict.chfullhinithdefhsethgethindexhbakhlistop_classvalid_opmake_opop0lvaldefsetio.cmake_funcellmake_termmatch_symmatch_varmatch_intmatch_charmatch_argsmatch_list_elementsmatch_termsread0sreadoutswritesoutfoutibuf.24cursorfloat.cdouble_to_intsints_to_doublemake_floatfloat_comparefloat_opfloat_fun2float_funinput_floatwrite_floatarith_err_mesdebug.cmain.cmainmaxcputimequietquietmesbp_exitbp_haltwarnmesfatal_errorlocal_errorlink_haltcan_recoveroverflow_bymake_byte_arraymake_char_arraymake_hentrymake_atomtableinit_common_meminit_engine_memis_enginecreate_enginedestroy_engineinit_randomstart_profilerend_profilerget_cmd_line_optionsbp_versionstartup_mesinit_bpstart_wamrun_bpgc_interfaceoptindoptargatomtable_iobtimesfprintfsprintfexitnew_funchdefcallocmallocmake_symtableinit_instr_lenhinitfreesrandgetoptsscanfload_kernelsignalrestart_originterpinit_orig_wamsfullatombaklextablenewlexatomstampnewatomstrlenstrcmpunwind_traildefault_start_pointheap_or_bp_haltunifybad_instrexec_linkinterp_frombp_prolog_callload_engineload_engine0call_engineask_engineanswersuspend_enginemultitask_enginesbphcountopcounthbakseen_toldhgetapplyfindall_store_heapfindall_load_heapfunctorname2listshell_1stats0if0foutfflushfloat_oprandclearerr_filbuf_flsbufcomparesetargchange_argdefsetlvalsymcatdcg_connectlist2termterm2listadd_instrolder_filesee_tellsee_tell_atseeing_telling_atsreadsoutop0det_append0findall_lift_heapcopy_termterm_appendstrip_cont0dcg_tellfloat_funfloat_fun2input_floatwrite_floathlistunix_argvunix_getenvunix_accessunix_cdunix_killnew_builtininput_funinsert_opinit_codeinstr_lenisdigithsetungetcmake_opfopenfclosewam_bpuser_bpstat_usedstat_leftolder_file0copy_from_enginebp_heap_topbp_consgetenvaccesschdirkillstatfseekftellstrcpysystemfloat_comparehfullhindexop_classvalid_ophtablehstampmatch_termsread0swrite_pctype_ctype__double_to_intsints_to_doublemake_floatpowlogfloorexpsincostanatanasinacosatofmain__maininit_cS'P >S'P@1a(-^(U#@uPN'P` u " о> 4P$ SHP- UJ  0F TFlFF#PF+tF3F?FKFUFa FmF}8FXFxF F F F FFFPF XF`F,`F7FC FK8FUF\A^AjAqAxF4F FUFԜFDuF FdF!F/(F5PF=FMW_fm@Fz\FFF,FhFFFP Ft!F!F!FT"F $#F#F+P%F.5A=FB8FLFQFW`FjF|tFȉFFxFlFLFFܙFDF$FF8F4{FFFF"|F,|F7t}F@FLF^зFdFipFmFy`FFlF|FdFFFTFFFuF`vFvF |wF xF)XF3T^F=lFGQYF^eܦFmszuFxFX|FFAPFȿFFF!F*tF3:AصFLFSĽFZAbkоFz$F`F PF  BinProlog3.45/bin/bp.o.parisc.hp100644 764 764 330000 5764215057 15564 0ustar javierjavier1(@HHlHLh &=G!Lр 92453-07A09.74// X M  dX!MGp Gp "RX!W "SX!<W "S>(?@,"jN>( "@,#R>(- @h ,% >(w@%p,&>(@%,&>((@%T&>(,@&T&>(0@&T&>(P@&D&>(P@&(D&>(R@&08&$TEXT$ $PRIVATE$$CODE$$DATA$$BSS$ $SHORTBSS$ $SHORTDATA$$LIT$  0@&00 @(0 0#< H 0 To0 @`p | 0 @ <@(    0 0 0 0 Q30  g0 0 T, QH QX# @h |+0 Xl 0 x0 /0 [   A UG0 ? Q? 0 U O0 ! "C0 U(" < 0 L#` 0 l$| 0 $0 $0 A$    0 )0  *  0 A,*0 H,' @X 0 ,    0 -7 . -4 @0 . /O$-40 010 A<2'0 AP20 3/p0 d30 4C D@P0 A40 U50 90 A:70 A:0 U B0 x;[0 U;0 Q(<{0 8=0 L>0 \>w0 Ul>0 Ux@W0 A 2$282T2`2p2 x2 2 @& @ 0   A  P0 A \ A 7 A  D@0 U xk0   3   У U  A _   U Ջ  0  0 A8K0 Q ٳ0 A , D@h0 A <ڻ (ٰ0 A Lo 4ٰ0 A \O @ٰ0 A h Lٰ0 Q X0 U#0 A0 A h xٰ0 A0 A 0 A0K ٰ0 @G ٰ0 0   ٰ ٰ0 A; A 0 A0 U  7 A 0 U0 Qx0 Q0 Q0 Q0 U0 Q k0 Q;0 Q0 UO0 U+0 Q0 Q0 U _0 Q 0 Q 0 @%0 A G    0 ( @#0 0 UL0 Q l0 A?0 Q 4s0 |0 Q 0  @70 Q P0d @&0 U [0 Ap {0 Q!0 Q$k0 Q(/ h@)( t @&( Q *# Q * A * *  ,*  8*  A . A 1  3W A 40  H5  40 A X8#0 AX8 @ 8 @%p0 A d@0 Ad@0 P,AO x @&0 A0 S BW0 -C0 A C 0 UDF 0 AK AA0 AO $A0A8A@AHAPA\AhA0 Q T @%tA0 Q V0 AWWF@RRRRYYH (ESS@@\\I \\BA\\B YY\\H YY\\H ARRYY\\H YY\\YY\\YY\\eeI ASSAA@RR YY\\ I @GMSSIGMSSI\\GMSS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SS\\SSSSSSSSSSSSSS\\SSSSSSSSSSISSSSSSSS\\SSSSSSSS\\\\\\H\\\\\\\\\\HGGGGF#F" F#&RR\\I%EEEmRRFSSSSSSRR\\SSG$GSSSSSSEE \\ASSSS\\ASSSSSS \\I% \\F(\\RR\\ H'\\A\\SSSSSSSSSSSSSSSSSS\\AG@-I)F+A/EA1\\H5 'p6\\H7RR\\RR\\RR\\RR\\RR\\ RR\\ RR\\RR\\RR\\YY\\\\\\\\I Ap8 QQ\\I QQ\\\\\\\\\\\\E9QQ\\p;I QQQQYYSSYYSSESSG4E:\\BSSF&BSSGSSA0RRRRRRI)QQp>G?YY\\H SSFQFZA3AA2AOA=RRF!eeRRFpCpDRRFpBpA pBFGRRpApHFYYpHpDI FFRRpDRReeeeeeGKRReeeeeeeeSSSSSSeeFFeeSSpCRRRRpHAIRRpCeeeepDRRYYpHI FFJ pSSpBSSpDSSpPSSESSSSpSSpBFFLASSSSGpSF pSA ATpSDA)- 4YYpSH ASSGpSHSSIYERGX SSSSSSG IYF*pSASSSSSSG* H\F*IYF^ LpSHAYYpSI ASSSSSSSSSSSSF^SSSS[!IU=pSDAdIUO- HpSDA,A*DAOGW pSD@I`GpSD@bA>IU7pSDA>IU 1pSDAnDIU"pSD@ 2GN+!pSASSGSSSS'pSD@SSGSSSS/pSD@SSGISSSS pSD@AQFERSS,IcpSAHA IIIF I/IdSSSSG SSHSSpSG SSFeSSGIIU "@j@pSHIIU@Ef  SSSSSSSSFgSSpSHSS SSGhSSI%#@#### #,#)# D0#J>#6#D#&#"#&$. #E!## ## #$,)#!#I.# #-#! #-(#T#*"H#&P#*#!=#2##!#2##!F##,##%HPC HP92453-01A.09.19BS$sruM$22 hdef_stringhdef_intmake_constants hdefaultsmake_var_arrayvar_array_init make_stack add_engineheap_safe_margin del_engine L$plab_start$global$maxgcputimetimes$$divUquietquietmes__iobfprintfbp_exitsprintfexit$$divI$$remIbp_haltwarnmes fatal_error local_error atomtable link_halt can_recover overflow_bynew_funchdefmake_byte_arraycallocmake_char_array make_hentrymake_atomtablemallocinit_common_mem make_symtableinit_instr_lenhinitinit_engine_mem is_engine create_engine $$lr_wa_9destroy_enginefree init_randomsrandstart_profiler end_profilerget_cmd_line_optionsgetoptoptargsscanfoptind bp_version startup_mes c_interfaceinit_bp load_kernel start_wamsignal restart_originterprun_bp init_orig_wam insert_lexM$17atomnolextablenewlex atomstampnewatomstrlensfullstrcmpatombakM$18 unwind_trailopcounthcounthbak seen_tolddefault_start_pointhgetheap_or_bp_haltunify bad_instr exec_link interp_frombpbp_prolog_call load_engine load_engine0 call_engine ask_engineanswersuspend_enginemultitask_enginesapply $$dyncallfindall_store_heapfindall_load_heapfunctor name2listshell_1stats0if0foutfflushfloat_oprand__filbuf__flsbufcomparesetarg change_argdefsetlvalsymcat dcg_connect list2term term2list add_instr older_filesee_tell see_tell_atseeing_telling_atsreadsoutop0 det_append0findall_lift_heap copy_term term_append strip_cont0dcg_tell float_fun float_fun2 input_float write_floathlist unix_argv unix_getenv unix_accessunix_cd unix_kill new_builtin$$mulISB$sload get_one_int link_switch link_code skip_header loadoperatorii load_fileload_instr_array load_self instr_lenisdigit input_funhset insert_op init_codeungetcmake_opfopenfclosewam_bpuser_bpocomparename2buflist2buf stat_usedgetenvaccesschdirkill stat_left older_file0statfseekftellstrcpysystem float_comparecopy_from_engine bp_heap_topbp_consM$15htablehstamphfullhindexop_classvalid_opBS$ioSB$io make_funcell make_term match_sym match_var match_int match_char match_argsmatch_list_elementsoutM$35__ctype__alnum__ctype2 match_termsread0swriteSD$floatS$18$float_compare S$19$float_opS$20$float_fun2S$21$float_fundouble_to_intsints_to_double make_floatpowlogfloorexpsincostanatanasinacosatofmaininit_c $// $//z< $// $/"/ж $/%/ж $/)/5 ` $/*/ж p $/,/ж $/-/жk?77?# BK?!  s4# @\K?Y@7?+hH5@B46\@@k?7k?9k?1+hH?@`2+h4:@K?9K?1# BK?Y@7?k?7k=9k=1# B+h@H3@ |k=K=4# @SK=4# @7=+`49K=9K=1k?k?# B+l4:`7=# BK=1# BK=Y@7=k?7k?9+m4:hK?9# BK?Y@7?k?7k?9+h4:@+o49xK?9# BK?Y@7?k?7k?9+h4:@+u49K?9# B4# BK?Y@7?k?7k?9k?1k?)+hH5@bK?946 K?9K?)Jh RA4!?k?K?``B+h4:@+|49K?# B:+h4:@+49K?9# BK?94  J+h4:@+c@49K?98# Br+h4:@+f@490K?9 t+`H5 K?9# BK?1# B\K?Y@7?k?7+`@H! 4# BK?Y@7?k?7k?9K?9# B# BK?Y@7?k?7k?9k?1k?)k?!K?9K?1K?) s H3( k?+hH5@`K?1K?)  aJK?6+h4:@+i@49HK?1K?) s H8@K?k?K?!k?# B# BK?Y@7?k?ok?k?9k?1k?)K?9Y# BCK?1Y# BDK?)Y# BX+`@3wZY# BK?YK?@O?k?ok?9k?1k?)K?9Y# BCK?1Y# BYK?)ִB4 X+`@!7Z# BK?Y@O?k?7k?9k?1+z@4:Y# B+ah<+{@4:4# B+bh<+|@4:4# B+ch<+}@4:Y# B+dh< +@4:Y# B+a@h<+`4:Y# B+b@h<+a4:Y# B+c@h<+b4:4# B+oh<x+d4: Y# B+ph<+f4:04# B+qh<+h4:@4# B+rh<+k4:X4# B+sh<+n4:pY# B+th<+q4:Y# B+uh<+s4:Y# B+vh<+v4:Y# B+wh<+y4:Y# B+xh<+{4:Y# B+ih<H+|4:Y# B+jh<P+}4:Y# B+kh<X+~4:Y# B+eh<(+4:Y# B+fh<0+`4:Y# B+gh<8+a4:Y# B+hh<@+b4:Y# B+lh<`+e4:(Y# B+mh<h+g4:8Y# B+nh<p+j4:PY# B+yh<+}h<+|h<+n@H?p+l@h?`+o@H3x+m@h3h+l4:`Y# B+zh<+uH:+yH9+n@H8p+`@4җ# B+vH:+yH9+o@H8x+`@5ҷ# B+o4:x4# B+{h<+k@h XK?9+p@h6K?1+q@h?K?Y@7?k?o+q4:+t49+x48# B 4R+z4:+}49+`48# B 4cc 4J+c4:+f4904# B 4׃K?Y@O?k?7k?9K?94# BK?Y@7?k?7k?9K?94# BK?Y@7?k?7k?9K?94# BK?Y@7?k?7k?9K?94# BK?Y@7?k?7k?9K?9# Bk?k?K?K?9@jK?K? K?K? K?4?k?K?K?9_@K?K?Y@7?k?7k?9k?1K?1# Bk?9K?96K?9 6K?9K?Y@7?k?7k?9k?1k?)k?!K?9K?1K?9K?)K?1K?)6@ P\K? *K?1# Bk?K?9K?j K?9J K?1?K?)  uK?9h60K?9K K?9K?9J K?9 6K?9K0K?9j(K?9j8K?9K?!j@K?9K t 4הK?Y@7?k?ok>k?K>+cH94+h47@k?# B04K? k?# B04֓K? k?# B+gH:8# B+~h<+h<+~H!?04K? tk?K>6 +dH9 4+j47Pk?# B04K? k?+j@H:P4# B04K? k?44# B+r@h<04֓K? k?+r@H!4??+s@h?# B 4"# B 4ct04ִK? k?K? 2+l4:`# B\4K>@O?k?7k?9k?1k?)4~k?+s@H4K?+r@H6 42+s4:# B\+s@H?7+s@h3+s@H4K?9K?16B4 SK?9JK?)6K?9Ka4K?Y@7?7k?94k?ֿuk?K?9&k?K?K?@ K?k?K?K?` K?k?K?@7?k?7k?9k?1k?)k?!k?K?97K?)4+{47k?# B04֓K? k?K?94:K?!4+}47k?# B04K? tk?K?1# BXK?96HK?1+47k?# B04K? k?K?96h+iH9H4+a@47k?# B046K??k?K?9K?K?# B 2+d@4: # BX\K? 2+i@4:H# B\4K?Y@7?k?+r@H5+s@H6ՠZJK? @46TU+s@H6տ@\@@k?7k?9+r@H?+s@H3KK?9 R+s@H6J+s@H36t?+s@h4h47V_+s@H!?]@+p@4:# B\K?Y@7?k?ok>k>k>k>4 4H# BC` _\K>֓ k>K> k>K> k>k?K?l`K?  K?K>  49H6HKW?]# @K?4?k?K?lU@K>K>K>4k?K>k?Z# B \\K>@O?k?7k?9K?9# B \K?9J# BK?9H:# BK?9Kh# BK?9Jz# BK?9# B4K?Y@7?k?7k?9K?9 "# B7k?9K?9 4k?9K?9# BK?Y@7?k?@@k?@@k?7k>k>k?1K>k?)K>k?!K?)6?k?)(*K>K>+w@48# BӖc?9'C?9??H`P& @@@@@@@@@@X@`@P@@@0@ @@@h@@@0@+`H:+|@497?I# B *K?Iִ JҶ+`h6K?14?k?1J+`H:+}@497?Q# B *K?Q֓ Jҕ+ah5K?16k?1+`H:+~@497?Y# B *K?Y Jt+bh4K?16k?1+`H:+@497?a# B *K?a J+ch3K?16k?1+`H:+`497?i# B *K?i6 J?+dh? K?16tk?1+`H:+a497?q# B jK?q`ZK?q426@B4K?qt>t@>ֿ+eh5(K?16k?1+`H:+b497?y# B jK?y`ZK?y42@B4K?y>a@?>+fh?0K?16tk?1:+`H:+c497?# B "K? J+gh68K?14?k?1+`H:+d49 7?# B K?+hh3@K?16k?1"K?) K?14?k?1K?)6t?k?)` RK>K>+w@48# Bӕc?98%@K?1 +h4:@+e49(+h48@+y47+i4!Hk?# B4# B+`H?k?!K?!K>@"K>K?! k?Ak?AK?AK>@7?k?7+`4:+l49`44Z# B+`4<K?Y@7?k?7+q4?k?1+z43k?9+e44(k?A+p45k?Y+q46k?I+r4!k?Q# BX+h4:@+x49K?1K?9k?K?Ak?K?Qk?+`H5k?K?Ik?yK?Yk?q# B+h4<@K>@7?k?ok>k>+h4#@+`4?+n@h?p+d43 +o@h3x# B+h@h<@K>K># Bk?# BY+}4:# B+`` Z# B 8\K>K># B4+``4K?Y# B \4+``5Z# B+`H9+aH8+bH7k?k?Z# B \\K>@O?k?ok?9+h4#@4+`H9# B4+`H9# BK?9 :+h4:@+~49K?9# B+`@H! Z# BZ# Bk?9Z# BK?9# BK?Y@O?k?7k?9K?9# BK?9# BZ# BK?Y@7?k?7k?+fH:0# B+`h<04K? k?+fH:0# B+`h<04K? k?+`h +fH30S# B+`h<+`h<04ִK? k?K?04דK?Y@7?k?7k?9+`H4k?K?9# B+`H5 +fH!07?+`H4 t"+`4:# BK?96k?9B+`H46+`h5` bK?96k?9B+`H46+`h5`?@K?K?Y@7?k?7k?9+h4:@+f490+`H8K?9# B+k4:X# B4 # BK?Y@7?k?ok?k?9K?9_Bt Zֿ6SVBtҁ5 Bҕ?@+fH606??+`H? 6t?+fH506? !:+`H! # !+`H3c :K?9+`H5 # B 4v+fH!04??  +`H3c j+`H5 ?@K?9+`H! # # B?E@+`H? `!+`@4ҕ 2+k@H6X J+`@!? *K?9+`H4 @K?9# B+`H6  <+`H?7+`h3+`@4+`H5u+`H?+fH30t+fH50Ҷ ?`"+t4:# B8\ "+v4:# B\K?YK?@O?7c??k?+fH?0K?+`H4K? C??ar+`H4K? JK?+`H3 +`H56?+`h6K?4?k?+fH30K?t @@7?k?7k?9k?1K?14ՠr+h4:@+z49K?9K?1# B+|4:# Bk?1K?9# B< J?4 Tֿ K?1  \K?Y@7?k?k?K?K?ယK?6t?k?K?J46  K? vK? k?K?K?e@K?@@k?7k?9K?9JK?9+`H3+f@h30+`H4+d@h4 +`H5+e@h5(+`H6+g@h68# B+i@h<HK?Y@7?k?7k?9K?9H?K?9+f@H40+`h4+d@H5 +`h54# B4# BZ# B4# BK?9J@K?9k0K?Y@7?k?7+tH:+qH9# Bk?K?` "+`4:# BK?K?Y@7?k?7k?9k?1K?1J?k?K?46 :+g4:8# B4k?K?ҕk?K? K?# BK?9K?Y@7?k?ok?k?k?9k?1k?)k?!K?!4?SK?96cDK?1 uK?!Ĩ4?CD4?EDHk?94  RK?9 BK?9Hk?94 ` K?9?@Huk?14  RK?1 BK?1Hsk?14  K?1?@e'zK?94 `"K?14 !K?1K?9K?1K?9tK?1K?!J?5K?)KK?)JbK?)J4K?)+n47p# B4# BK?1K?)7Jt6uK?14604֓ 4K?15 4 SK?1K?9K?9K?!J?5K?)KK?)JbK?)J4K?)+s47# B4# BK?9K?)7Jt6uK?146!K?94 046? 4K?9t 4ֿ VK?9K?1 6K?1K?!Jt?񊟀K?)JK?)H?bK?)Jz4K?)+x47# B4# BK?1K?)6J4? 4K?9K?1 \K?94 $"K?9k?9`"rK?)JZ4K?)+}47Z# B4# BK?!J?#K?)KK?)JbK?)J4K?)+47# B4# BK?1K?)Ka4tK?)JK?)4?K6t eK?94D 6K?94DK?96?k?9 rK?9 4DK?9 t 4DK?94??k?9?@K?!d5@4K?YK?K?@O?k?7k?9+h4:@+c@49K?9J4 # B4# BK?Y@7?k?7k?9k?1+tH:K?9# Bk? 2K?9+k@49XK?1# BK?K?Y@7?k?7k?9k?1K?1H?K?1JtK?1jK?1Jh4:@7S?s6tYS+pH5U4 2 H3 6??@7(K?1JK?1H? K?9K?1k?# B04הK?Y@7?k?7k?9# BZK?9# BK?Y@7?k?7k?9k?1k?)k?!K?9K?1K?1+pH3+tH:+oH9x# Bk?!4 BK?1 JK? a6??@K?6(k?K?K?)K?KK?K?J K? 6K?1K?)K?!K?K?k?# BK?Y@7?k?ok?k?k?9k?1k?)K?9# B 2+p@4:# B\K?9JcK?9JK?9jK?9H?h7@4?K?1 +pH4 +tH:+oH9x# B4 2 J 6??@4s(eK?9JuK?9J a4K?9JK?1K?9H?K?)K?9Jj K?9h%XK?9kK?9Jt\K?YK?K?@O?k?7k?9K?9J?6?K?9H9?K?9K?# BK?Y@7?k?7k?9K?9# B x\K?9JyXK?9JK?9JJK?9H?h7@K?9k?# BK?Y@7?k?7k?9K?9JJ* :42K?9JtK?9JPJ K?9# B K?9H?K \K?Y@7?k?7k?9k?1k?)k?!K?9JtJҶA!AZ!J@† "4K?9KaK?1K?9jXK?9K?)jK?9KK?!tK?14K?9Jx 54*K?9JtK?1K?9jXK?9K?)h?K?9JtK?!K?14"K?9H?K?1K?9jXK?9K?)jK?9H?K?!pK?1K?9JJ+v@49K?9# B4 # B\K?Y@7?k?7k?9k?1k?)k?!K?9JH?h z4:K?9JK?1K?9kXK?9K?)jtK?9JK?!K?1+h4:@+|@49K?9K?9KJtҗ# B4"# B\K?Y@7?k?ok?k?9K?9@ k?9+s@H?+r@H3 P\+r@H46+s@H6ՠJH?Ktk?K? 4"H3\6VU+s@H!5e@+r@H?7k?K?96t?k?9`!2HdHJk?K? K?l ZZ# B 2HJҶ 4BH+s@H3c 2K? bk?+r@H564vACK?97?k?9>@4K?YK?@O?k?ok? k?k?k?!k>k>k>k>CK>K>JF4 HQZ@@ @ @ @ p@ @@@@ (@@@@@@ @@P@h@0@(@T@@@@@H@@4@@@(@ @x@l@@4@@<@@@x@@0@@@@@@P@@@@@@<@\@,@L@@<@ @,@@@@@ @8@H@@@@@@@(@@@@ @ @l@@@d@@@@$@T@@L@@@p@ @@(@ @ h@ @ 8@ H@ @ (@P@p@@@@@@x@(@ @(@@@@@(@@h@(@@D@@@@D@<@4@@@@@@t@d@T@D@4@T@D@4@,@t@ d@ @ @ @ d@ @<@@@\@@D@t@@X@@@p@ @ @ @@8@@@H@@@,\` BK>U c4cK>6k>K>K> 6K>7k>K>U K>4?dk>` K>U JK>K>Y# B K>Jk>4cK>7k>K>U JK>7k>K>6\k>K>U6K4 e pGHG4  B :EHG4  ?@4 !CK>H??债K>JtK>JԀbK>H:4K>+g478# B4# BK>7Jt6uK> K>4 ᘓ4K>ֳ k>K>KK>K>6k>K>4?k>K>Jt K>Jk>C4cK>4?k>K>JtK>K>K>U vK>6k>K>6k>K>f ktU JK>U vK>6k>K>K> 6K>7k>K>֦ kҶU  ?K>U K>6k>K>U JK> kU5KK>K># B K>Jt|k>K>6\k>K> kU aJK>U6K>JfK>֦ kҶU H?K>U K>6 k>` z4K>U 4vK> kU a4cK>6 k>K>K>U  !K>6K> kU aK>6k>K>4? lk>` K>U J4yK>K># B K>J k>4K>ֆ kҕU 4cK>4? k>K>U JK> 6K>7K>֦ kҶU  3sK>7k>K>6 k>`!K>U6K4yK>K># B K>Jt lk>K> kU5K4yK>K># B K>Jt k>4cK>6 k>K>U JtK>K>& k?U JtK>6K>4?k>K>6t k>` 4uK>U6K>ֆ kҕU J4yK>K># B K>H?lk>4cK>6tDk>K>K>U6K>ֆ kҕU JK>7aK>6k>K>6k>`"H4cE4 e pGHG4  B :EHG4  ?@4  K>H? K>Jt?񊅀K>JK>H?bK>Jz4K>+l47`# B4# BK>6J62K>Kg K>Jk>K>6|k>K>KK>6k>K>6,k>K>U JK>K>H?K>6tk>K>6k>+q4:# BVK>U Je4  pGHG46 B :EHG4  ?@4  K>K K>J?񊥀K>JK>KabK>J4K>+x47# B4# BK>6J4? %2K>Jt K>J|k>K>4?\k>K>JtK>U  4K>7 k>4K>6k>K>4?k>k>K>6tk>K>J46 pSJS4  Bv :_KS4  ?@6a?k>K>7k>K>6Jk>K>4 ` 2K>K># Bk>3&K>K>K>JpԀZK>4K>+}47# B# BK>K>K>K># Bk>K> `K>K>K8k>K>6Jk>K>K>K>KpaZK>4K>+`47# B# BnK>J4  pYHY4 ` B% :EHY4  %?@49 K>6tk>K>J# Bk> K>JXk>4K>70k>K>6Jk>K>K>K>KpaZK>4K>+c47# B# BfK>J4  p_J_4  B :UJ_4 a ?@4  K>6tk>K>6H3k?YK?YJ K>4? Pk>CK?YJf4tK>U  44K>ֆ kҕU 4cK?Y4?k>K>U J4  pGHG4  B :EHG4  ?@4 `"CK>J?񊥀K>JK>KabK>J4K>+f470# B4# BK>6J4? %K> K>4 4K> ak>K>JK> 6K>KK>U JK>4?K>6eK>֦ kҶU  % K>7k>K>6k>K>J' K>Kk>CK>JK>U H:4yK>K># B K>Kk>4tK> kU54cK>6tk>K>U H%4 ` pGHG4  B :EHG4 ` ?@4 "CK>J?%K>KK>JbK>J4K>+k47X# B4# BK>4?K6teK> K>464K>֟ k>K>H?K>K>JK>U H?K>6tK> kU5KK>6K>6k>K>7k>K>J K>Jk>CK>KK>U J4yK>K># B K>Jk>K>f ktU J4yK>K># B K>Jk>4cK>7Xk>K>U J4% pGHG4  B :EHG46 ?@4 g"CK>J?ŀK>H?K>JtbK>J4K>+p47# B4# BK>6H?7 3K> K>4 ՘4K>a k>K>JK>K>JfK>6K>U  % K>7K>ֆ kҕU  K>4?k>K>6tpk>K>J K>H?8k>CK>Jf4tK>U  44K>ֆ kҕU 4cK>4?k>K>U J4  pGHG4  B :EHG4  ?@4 `"CK>J?񊥀K>JK>KabK>J4K>+u47# B4# BK>6J4? %K> K>4 4K> ak>K>JK> 6K>KK>6eK>U  K> kU aJK>6 5K>7k>K>6 k>K>J' K>K k>CK>J4uK>U6K>ֆ kҕU J4yK>K># B K>H? k>4cK>6t k>K>JK> 6K>K>U K>JK>4?K>U K>6K>f ktU  !K>6k>K>7 k>K>JK>K>K>U K>JK>U6KK>6K>6K>f ktU  !K>6k>K>7k>K>JK>K>K>U K>JK>U6KK>6K>& k?U JtK>6K>4?k>K>6tk>K>JK> 6K>K>U K>JK>4?K>U K>& k?U JtK>6K>4?k>K>6txk>K>U H?K>K>JK>K>H&K>7K>U sK>4?K>ֆ kҕU K>4?k>K>6thk>K>U H?K>K>JK>K>H&K>U JK>6 5K>7K>֦ kҶU  3sK>7k>K>6Xk>K>U6KK>tK>JK> 6K>KK>U JK>4?K>ֆ kҕU JK>7aK>6k>K>6Hk>K>U JK>K>H?K>K>JK>6K>U vK>֦ kҶU H?K>6tK>6k>K>4?8k>K>6tJk>K>K>K>H?pZK>4K>+z47# B# BjK>JfK>K>JԀZK>4K>+}47# B# B%Bk?aK?a jK>K?a JK>K?a vK?a6?k?aK?a?@4K> k>K>K>K>H?K>K>6JK> 6K>7k>K>6JK> 6K>K?K>Jz# BK>jK>J?k>4K> k>֥Bk?iK?i jK>K?i JtK>K?i  4K?i7?k?iK?i?@K>4K>6k>K>6t,k>K>J?K>J# BK>h<K>K?k>4K> k>Bk?qK?q` jK>K?q JK>K?q K?q6?k?qK?q ?@K>K>7k>+`4:# B+f4:0# BZ` 2 K>6Dk>K>K> k>7? : a a45?VA?@K>4?k>K>J `K>6K>6tLk>K>K> kU aJ4  K>JT4  B :UJT4  ?@4404 4ҟ 4a` UK>K>6k>K> kU aJ4  K>JT4  B :UJT4  ?@4404 4ҟ 4a` UK>K>U H?4  K>KA4 v B? :_KA4 ` ??@4 04vt 45 4 _K> ?K>7 k>k?QK> kU5K4  *K?Q K> JuV45 B :SJtV4  ?@4 045? 4 4ֿ SK?Q K> K>6\k>k?QK>K>K>6k>K>& k?U tK?Q K>6K>6tk>K>J4  pGHG4  B :EHG4  ?@+tH:Y# Bk>K> B+tH:+sH9# Blk> 4?֓Bk?yK?y bK?y H?K>K?y K?y6?k?yK?y?@ 4  v K>&K>K>K>JpZK>4K>+k47X# B# BK>J4% pSHS4  Be :EHS4  e?@f+tH:ֿ 4F  Y# Bk>K>` B+tH:+rH9# Bk>K>J4?AFK> u 4?ִBk?K? bK?%KK>K? K?4??k?K?`?@ 4  ҁ K> tK>K>K>JpԀZK>4K>+n47p# B# BK>H%GY+tH:# Bk>K> zK>K>K>X# Bk>+tH:+rH9# Bk>K>K>K>JpZK>4K>+q47# B# BB ^K># BK>6 $k>K>KJtҕ zK>K>h6XK>K>kK>JK>4BK>Ka \4# B# Bk>DK>Jk>K>JK>kK>Jth6@k>K>6?k>K>K>K>6k>K>K>+pH34k?K? jK>K?6KK>K? K?4??k?K?`?@K>6(k>K>K>K>KK>K>J K> \ 6K>KK>6xK>K>K>k?K>k?W# Bk>K>Jk>K> K>Jt k>K>J |k>+t4:# BK>4? 4k>K>K>K>K># Bk> *+~4:# BK>Jk>K>K>K>K># Bk> K>J4k>K>KK>K>6k>K>49K>7K>6wK>K>k?K>k?# Bk> K>JTk>K>K K>K>6k>K>49K>7K>K>K>k?# Bk> K>Jk>K>JK>K>6tLk>K># BK>JK> 6K>7k>K>K>K>K># B K>Jk>K>J K>K>6tLk>K>J K> 6K>7 k>K>J@K>j0K>H?K>K>6k>K>JK>K>6tlk>K>K>K>K>K>k?# Bk> K>Jk>+tH:+oH9x# Bk>K>Kk>K>JK>+m@H8h# BK>6,k>+m@H:h+f@490# B+m@H:h# BK>4?k>K>Jt4  pAJA4  B4 :VJA4  6?@4  K>H?k>K>6tk>K>J46 pSJS4  Bv :_KS4  ?@43 K>Jtk>K>6k>K>H?4  pUKU46` B :TJU46 ?@4 u K>6k>K>H?k>K>Jt4  pAJA4  B4 :VJA4  6?@4  B4 b 4 K>6k>K>H?k>K>Jt4  pAJA4  B4 :VJA4  6?@ֿ !4?  vY+tH:# B K>6Xk>K>J8k>K>K?k?QK>J?K?Q4 4 ֓B U!RK>K>4 K?QW# Bk>K> K>KPk>ֆ kҕ zK>U6KK>K>Z# B K>Jtk>K>U  'K>7xk>K?Qҕж B4 Tk?Q֦ kҶ zK?QK>U JyK>K># B K>Jk>"K?QK>U vK>6Xk>K>J?k?QK>K?K?Q4 4 B Sj!RK>K>4 K?QW# Bk>K> K>Jpk> k` zK>U JK>K>Z# B K>H?k>K>U K>6k>K?Qд B46_k?Qf kt zK?QK>U H9K>K># B K>Kk>"K?QK>U  4K>7xk>K>J?k?QK>J?K?Q4 4 B A*!RK>K>4 K?QW# Bk>K>` K>Jk> k zK>U JK>K>Z# B K>Jk>K>U gK>6k>K?Qй# @=B4 Sk?Qֆ kҕ zK?QK>U6KK>K># B K>Jtk>"K?QK>U6K>6tk>K>J?k?QK>H%?K?Q4 4 6B4_!RK>K>4 fK?QW# Bk>K> K>Jk>& k? zK>U JK>K>Z# B K>Jk>K>U K>6k>K?Q:й# @B4 Tk?Q֦ kҶ zK?QK>U JyK>K># B K>Jk>"K?QK>U vK>6k>K>J?4 b zK>J?Ҷ ZK>H:?+g@498K># BK>Kk>K>J?k?QK>J?K?Q4 4 B A*!RK>K>4 K?QW# Bk>K>` K>Jk> k zK>U JK>K>Z# B K>Jxk>K>U gK>60k>K?Qй# @=B4 Sk?Qֆ kҕ zK?QK>U6KK>K># B K>JtPk>"K?QK>U6K>6tk>K>K>4 K>J?K>H7?# Bk>K> K>Jt pk>֦ kҶ zK>U JyK>K>Z# B K>J k>K>U6K>6t k>֦ kҶ # BӁB4 ZK>U JK>K># B K>H? k>R# Bӓ֓B4 VK>U vK>6 Xk>+l@H6`F?4  R+l@H5`6F?4? ҕ@k?Q+l@H6`J4??`4֓ 2+l@H:`# BHk?Q+l@H5`6J4?@3tk?Q֦ kҶ K?QB4 ZK>U JK>K># B K>H? Xk>:K?Q֓B4 VK>U vK>6k>K>J?4% R+k@49XK>Z# BK>Jtpk>+m@H5hJ6??`4` BдҕҺ+m@H9h# BJж+m@H3h6tJ6K>7pk>K>J?k?QK>J?K?Q4 4 B A* K>4 K?QW# B K>Jtk>K>6k>K?Q@K>KPk>K>60k>K>J?k?QK>K?K?Q4 4 B Sj K>4 K?QW# B K>J`k>K>4?@k>K?Q`K>Jk>K>6k>K>K?k?QK>J?K?Q4 4 ֓B U K>4 K?QW# B K>H? k>K>6tk>K?Q`K>Jk>K>7k>K>J?k?QK>J?K?Q4 4 B A* K>4 K?QW# B K>Jtk>K>6k>K?Q@K>Kk>K>6pk>K>J?k?QK>K?K?Q4 4 B Sj K>4 K?QW# B K>Jk>K>4?k>K?Q K>JPk>K>60k>K>K?k?QK>J?K?Q4 4 ֓B U K>4 K?QW# B K>H?`k>K>6t@k>K?Q K>Jk>K>7k>K>J?k?QK>J?K?Q4 4 6B4_ K>Jtlk>K>J?K>K?t5>u@>6B4 Sk?Qֆ kҕ zK?QK>U6KK>K># B K>Jtlk>"K?QK>U6K>6tk>K>J?k?QK>H??K?Q4 4 B Sj K>Jk>K>J??K>Jt?ҕ>Vv@ҡB4 Tk?Q֦ kҶ zK?QK>U JyK>K># B K>Jk>"K?QK>U vK>6Dk>K>J?k?QK>K?K?Q4 43B vT K>Jk>K>H??K>J?Ҷ B4 Tk?Q֦ kҶ zK?QK>U JyK>K># B K>Jk>"K?QK>U vK>6k>K>J?k?QK>K?K?Q4 43B vT K>Jk>K>H??K>J?Ҷ AB4 Tk?Q֦ kҶ zK?QK>U JyK>K># B K>Jk>"K?QK>U vK>6k>K>J?k?QK>K?K?Q4 43B vT K>JK>H??K>J?Ҷ B4 Tk?Q֦ kҶ zK?QK>U JyK>K># B K>JTk>"K?QK>U vK>6k>K>J?k?QK>K?K?Q4 43B vT K>J|k>K>H?? ` ִB4 AK>K?t5 V6B4 Sk?Qֆ kҕ zK?QK>U6KK>K># B K>Jtlk>"K?QK>U6K>6tk>K>6?K>6?# Bk?QK?Q4?+a@43 ֆ kҕ zK>U6KK>K>Z# B K>Jt$k>K>U  %K>7k>K>J?4  R+r@49K>Z# BK>H?\k>гk?QK>J?4  B4% г` K>Jk>H4  R+z@49K>Z# BK>Kdk>K?Q@K?QՠR+b49K>Z# BK>H?k>K?Q ֦ kҶ zK>U JyK>K>Z# B K>JK>U6K>6tk>K>K>K># B K>Jk>K>4?|k>K>K>K># B K>Jt$k>K>6k>K>K>4# B K>H?k>K>6tk>K>+dH6 K>K>4# B K>H?k>K>6tk>K>J?46 BK>Jt?4  BK>H??` "K>J?JK> 6K>K?4  BK>J?4 b BK>J?Ҷ "K>H??KK>K>J?K>J?# BE +dH! K>K Dk>ֆ kҕ zK>U6KK>K>Z# B K>Jt k>K>U  %K>7 lk>K>K>4# BE K>J k> k zK>U JK>K>Z# B K>J |k>K>U eK>6 4k>K>K># BE K>J k> k` zK>U JK>K>Z# B K>H? Lk>K>U K>6 k>K>K>K>K># Bk> K>K k>ֆ kҕ K>JK>U JyK>K># B K>J k>*K>JK>U K>6k>K>K>K>K># Bk> K>H?Dk>f kt zK>U H9K>K>Z# B K>Kk>K>U K>4?lk>K>K>K>K># Bk> K>Jtk>֦ kҶ zK>U JyK>K>Z# B K>Jtk>K>U6K>6t,k>֦ kҶ6B4 Ef kt zK>U H9K>K>Z# B K>Ktk>K>U K>4?,k>K>K># B K>Jtk>K>6k>K>K># B K>H?lk>K>6tLk>K>J? +|H%+}H% k` zK>U JK>K>Z# B K>H?tk>K>U K>6,k>K>K># B K>Kk>K>6k>K>J?:# BK>7lk>K>K># B K>Jk>K>6k>K># BE k` zK>U JK>K>Z# B K>H?Dk>K>U K>6k>K>K?t K>J?4 $ ? K>Jtk>K># BE K>J4k>48k>K>K?K># BEf kt zK>U H9K>K>Z# B K>KPk>K>U K>4?k>K>K># B K>Jtk>K>6k>K>K>K>K># Bk> K>H?0k>f kt zK>U H9K>K>Z# B K>Kk>K>U K>4?Xk>K>K>K># Bk> K>Jtk>K>6k>K>H%?4 ` "4 !ж!rK>H??` K>K>K>JpK>k?Y# BG *+k4:X# BK>k>K>J0K>H8@K>KHK>k?Y# BT K>J0k>K>H%0K>k0f kt zK>U H9K>K>Z# B K>Kk>K>U K>4?8k>K>K>K>K># Bk> K>Jtk>֦ kҶ zK>U JyK>K>Z# B K>J@k>K>U6K>6tk>K>K>K>K># Bk> K>Jk>& k? zK>U JK>K>Z# B K>Jk>K>U K>6k>+j@H!PH?Kf kt zK>U H9K>K>Z# B K>Kk>K>U K>4?k>+j@H3PJeK>J? K>JK>KabK>J4K>+s47# B4# BK>6J4? %K>6tk>K>K>K># B K>JXk>K>4?8k>+j@H3PJt+j@H5P RA4!?B4 E֦ kҶ zK>U JyK>K>Z# B K>JHk>K>U6K>6tk>K>K>K># Bk> K>Jk>& k? zK>U JK>K>Z# B K>Jk>K>U K>6k>K>K>K># Bk> K>H?hk>f kt zK>U H9K>K>Z# B K>Kk>K>U K>4?k>K>K>K>K># Bk> K>Jt(k>֦ kҶ zK>U JyK>K>Z# B K>Jk>K>U6K>6tPk>K>K>K># B K>Jk>K>4?k>K>K>K>K># Bk>K>` *+x4:# B7ֆ kҕ zK>U6KK>K>Z# B K>Jtk>K>U  %K>7k>+p@H4ִB4 E& k? zK>U JK>K>Z# B K>J k>K>U K>6 k>K>K># BE K>H? (k>f kt zK>U H9K>K>Z# B K>K k>K>U K>4? Pk>K>K># BE K>Jt k>֦ kҶ zK>U JyK>K>Z# B K>J hk>K>U6K>6t k>K>K># B K>J k>K>4? k>K>K># B K>Jt `k>K>6 @k>K>K># B K>H? k>K>6t k># BE֦ kҶ zK>U JyK>K>Z# B K>J k>K>U6K>6tk>K>J?4  K>Kk>HK>J?񊥀K>JK>KabK>J4K>+}47# B4# BK>J4K>KaK>6J6K>K? K>6Hk>K>K>J?9K>K?xK>J?ҷ# B K>Jk>7 k` zK>U JK>K>Z# B K>H? k>K>U K>6k>K>K?6z?# B K>Jk>K>6`k>K># B K>Kk>K>6k>K>J?4:?# BE K>Kk>ֆ kҕ zK>U6KK>K>Z# B K>Jtk>K>U  %K>7k>K>J?4 " K>Kxk>K>J?Ҷk?QK?Q# B K>H?k>K>6tk>K>J?K>K>K>K>k?# B \K>KXk>K>Jk>K>JH?k>K>6tk>+a4:# B+i4:H# BK>K>K>K>K>k?# Bk> K>J8k>K>K?f kt zK>U H9K>K>Z# B K>Kk>K>U K>4?Pk>K>K># B"K># BK>K?!K?K?K? @O?k?74# B+`h<k?K?4@b4K?+`H5 K?4?k?K?4_@+`H54b~+`H!4 ?+`H34t+`H54bf+`H!4 ? +`H34t +`H54+`H!4 ?+`H34bt8+`H54b"+`H!4`?+`H34bt$+`H54+`H!4`?&+`H34bt(+`H54b*+`H!4`?,+`H34bt2+`H54b6+`H!4`?.+`H34btb+`H54b0+`H!4`?4+`H34bt<+`H54bD+`H!4`?L+`H34btT+`H54b@+`H!4`?H+`H34btP+`H54bX+`H!4`?j+`H34btl+`H54bn+`H!4`?p+`H34btr+`H54bt+`H!4`?v+`H34btxK?Y@7?k?ok?k?9k?1CK?9B0Z4k? "K?96tk?9BҤ \Z# B zc#!64? K?96k?9BZ# B?@K? `_K?104הK?YK?@O?k?7k?9k?1K?97?# B *K?B46_0k?K?9K?1# Bk?K?K?Y@7?7k?9k?1K?96t6Jk?K?k?K?K4 4* K?H?4 4< K?1 rK?9H?48 46 VK?9 6K?7k?K?96K?K?\@7?k?ok? k?k>k>4K>K>JtzK>J46+`H3 ҃K>J464~ 242*4.*4"# z+`@!?#+k@H3X`#K> 4 4 K>c 4  r4a_CK>c 4 46 *K> 4 ?@K> 4 4"K> +`49K># B4k?4aK??aK>K?t 4 $ +h4:@+f490K>K? ִ Ҷ+`H! 6 K>K? җ# BK>K? 4 b Z+h4:@+h49@K>K? # BZK>K? ? 4 +h4:@+n49p# BK?6k?4aK??~ @+h4:@+r49# BK>Jd+tH:Y# BE K>J48 4 SK>ֿ Ё4??  vZ+s49K># BH4 4B!4@ B46#42$B4."4&#b K>K48 4@ AK>K>Jtֿ "6_K>+`H4B@K> 48 4\ U+`H6B@K> u+`H4B@K>  T+`H5B@K>6K>Jt48 4B6_K>K>J  SK>+`H5BBK> 6 48 4\ V+`H!@?BK> +`H5BBK> 6  U+`H6BBK> HuK>J48 4b SK>+`H5B.K>7aK>J48 4b SK>K>6hK>H?48 44 VK> 6K>7eZY# B ZK>J48 44 SK>K>6XK>H?48 40 VK> 6K>7eK>6 K>4# BK>J+tH:# BDK>H9+`H?C.+tH:# BH48 4,6_ ` 4K> k>K>K>H?@4K>K?K? @O?k?7k>k>k>k>4+`@h3K>JJ486K> TK>JK>H Q`@@t@@,@@t@$@@@p@@P@l@@@0@@@@h@@@t@d@T@D@4@$@@@@D@@@@@@@t@d@T@D@4@$@@@@@@@@@@@@d@T@D@4@$@@@@@@d@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@K>K># Bk?a+tH:K?aK>K+`@3w# Bk?i+dH4 +pH5 *K>J+bH36tK>6k>K?i $+ch +dH? +pH3"K>J6?J4 `"Z+bH4J4 4(?!z4&3 +bH46?k?qK?qK>H?7?vbK?qJ K?qK?q4?k?qK?qK>J6?ӿ@K>H?7?Jt48 AK>K6t?K>J6?H?48 UK>J4??+bH3Jt48 4*6_+bH3P4+ch4+~4:# B\\+cH5 4\K?a+dh6 K>H?K48 42 AK>KaK>JJ? 6SK>JK>6H?7 3K?atK>6J4?K>JtJ48 4& SK>JK>JH? K> AK>Ka+dH4 K?a +cH6 ,\K>H?K48 4( AK>KaK>JJ? 6K>֓ UK>J 54+ch?+h4:@+e@49(K>K># B+h@4:@# B \K>6tJ6+b h5+cH! |\K>42+t@4:# B ,\K>K># Bk?yK>BҶ46 Z+dH: K?yK>K+`@3w# B z+tH:+dH9 # Bk?K?J48 4. SK?K>6J4??+cH3` \K>K># BK>6J64 <+cH? \K>JtJ K> aTK>JK>H?K"6 K>  vTK>JD+cH! $\K>KJtֿ K> SK>JK>K># BK>6H?7 3d|+cH4 D\+`H5!K>J4??K4 !K>J4??K48 4V AK>K6t?K>6J4??K>JtJ"65K>֓ ҕ VK>H?+aH3d K>J6?J4 p ZK>J6?J48 4T UK>J4??>+`H3b!K>J6?J4 b!K>J6?J48 4> UK>J4??K>6tJ6?K>H?K"6 K>  vTK>J+aH!$ K>K6t?J4 0 ZK>K6t?J48 4< SK>J6?FK>H?K֟ K>6 5_K>Jt+cH5 \+`H6!K>H?7?Jt4 !K>H?7?Jt48 4F6_K>Jt6?K>6H?7? 3K>JJ 4? K>ִ Ҷ AK>Ka+aH4 K>J6?H?4  ZK>J6?H?48 4D VK>H?7?v+`H4!K>J6?H?4 !K>J6?H?48 4N VK>H?7?vK>6J6?K>KJt"6 K> t UK>J 5+aH? K>Jt6?J46 ZK>Jt6?J4864L TK>J6? 4K>KJtֿ K> SK>Jp+cH6 P\4k>K>KJt48 K>6_K>Jt+cH5 \+`H6#RK>H?7?Jt4 #K>H?7?Jt48 4Z6_K>Jt6?K>6H?7? 3K>JJ 4? K>ִ Ҷ AK>Ka+aH4 K>J6?H?4  bK>J6?H?48 4X VK>H?7?pv+aH4 K>J6?H?4 4f bK>J4??K48 4n AK>K6t?+aH5 K>J4??K4  ZK>J4??K48 4p AK>K6t?J+`H5#RK>J4??K4 #K>J4??K48 4B AK>K6t?K>6J4??K>JtJ"65K>֓ ҕ VK>H?+aH3d K>J6?J4 t bK>J6?J48 4@ UK>J4??p+aH3d K>J6?J4 4f bK>J6?H?48 4j VK>H?7?v+aH4 K>J6?H?4  ZK>J6?H?48 4l VK>H?7?vK>JJ? 6K>֓ UK>J 5+cH? `\+`H3b#RK>J6?J4 h#K>J6?J48 4J UK>J4??K>6tJ6?K>H?K"6 K>  vTK>J+aH!$ K>K6t?J4 4 bK>K6t?J48 4H SK>J6?p+aH!$ K>K6t?J4 4f bK>Jt6?J4864r TK>J6? 4+aH? K>Jt6?J46 ZK>Jt6?J4864t TK>J6? 4+`H?#RK>Jt6?J46#K>Jt6?J4864R TK>J6? 4K>7Jt6?uK>JH?"`6t K>6 ? SK>J+aH6 K>H?7?Jt4  bK>H?7?Jt48 4P6_K>Jt6?p+aH6 K>H?7?Jt4 4f6 bK>K6t?J48 4v SK>J6?+aH!$ K>K6t?J4 , ZK>K6t?J48 4x SK>J6?rK>H?K֟ K>6 5_K>Jt+cH5 \+`H6 K>H?7?Jt4  +aH!" :K>K6t?J4 4\ ZK>Jt6?J4864\ TK>J6? 4K>KJtֿ K> SK>JK>JH?"`6t K>6 ? SK>J +cH6 \+`H!"!rK>K6t?J4 4:!2K>Jt6?J"!K> K>Jt6?J4864^ TK>J6? 4K>K6t?J K> aTK>J6? 4K>7Jt6? huK>JH? K> AK>KaK>JJ 4? K>ִ Ҷ AK>K a+`H4" K>J6?H?4 4:!K>J4??Kt!K>!K>K># Bk?K?4604֓!"K?Ҷ46K>K6t?J48 4`k>4` aTK>J6? 4K>K6t?J K? aTK>J6? 4K>7Jt6?xuK>JH? K> AK>KaK>K># BK>6J6 <+cH? \K>JtJ K> aTK>JK>K># BK>4?K6t+cH5 \K>JH? K> AK>KaK>K>6J4? K>JtJ K> aTK>J+cH! \K>KJtֿ K> SK>JK>6H?7 34+ch4K>JK># B \+`@h +cH6 \K>H?K48 K>K>6 SK>JK>!K>H?K֟ K>6 5_K>JtK>K> 4؋ +dH3 t6?k?K>JH?"`6t K?6 ? SK>JK>JH?"`6t K>B?7?֓ Җ AK>Kab+cH4 H\K>JJ K>ִ VK>H?K>JtJ48 K>K>  UK>J 5+cH? `\K>JtJ K> aTK>JK>H?K>Jt(RK>JK>+z@47Y# B\+`H6+ah6+`H!K> ? t+`h4K>6J4?4K>@7?k?7k?9+`h K?9JtJ48 _K?9Jt+`H5BK?94?K +pH?+dh? 4+ch34+`h44+ah5K?9JH?48 4$ VK?9H?+tH:+pH9K?9Jx+`@4җ# Bk?K?96J4?+pH3K?96J6K?K?Y@7?k?7k?9K?9K6t?`4 "K?9# B2K?94?K6tBuҼk?K?4F6 *K?K?9# BK?k?K?k?K?9J6?`4 "K?9# B2K?96tJ6B<k? K?4H K?4` K?9J4??`4֓ "K?9# B2K?96J4?@3|k? OK?Y@7?k?ok=4k?i+k@H5Xk?q+`@6" +k@h XK=+}@497?a7>!7>k?# B7>Y# BC7>!Y# BYK?a֓B4 X+`@6Z# B +h4:@+@49+`H8+`@!7K?ak?7>!k?7>k?# B+j4:P# Bk?iK?q+k@h5XK?iK=@O>k?ok?9k?1k?)k?!K?91b4 *K?!# BPCK?9K?1K?!K?)K?k?# BCT\K?Y@O?k?ok? k?k?k>k>K>+r49# Bk?K? zK># B+s4:# B+u4:# B(\+y4:K># BK?# B4k?K? $K?K6t?`4 *K?# B8CK?4?K6tBuңD#JK?J4??`4֓ *K?# B8CK?6J4?@3cE"K?J6?`4 *K?# B8CK?6tJ6B#F!C+gH?8A*K?Jt6?u`46 "K?# B2K?7Jt6uBӟ+~H3s Z+~H5  24SC+gH48^@+~H5u+~H7K>k?ZYX# Bk?K?;@K?# BK?` :+~4:+49# B2+d4: +e49(# BK?K>K?K?K? @O?k?7k>k>k>c>4+k@h4Xk?a4k?iC>K>K?ac?yҶ%RK>K?a 3ҚK?aK> @?K?aK> FK?aK> JwK>k?# Bk?qK?q \4k?iC?y?4~#K?aK?i K> ?t4!K?aK?i6K> JK?aK?i K> Ftҙ# BK>6J4? <K?i6tk?iK?aK?i K>ҕ4>@K?aK?i K> FK?i""+h4:@+l49`K?aK?aK?i K> D?K?ik?# Bk?K?K?iaR+h4:@+x49K?aK?6K>tҸK?aK?6K> BҷK?aK?6K> FҶk?K?aK? K> Jk?# BK?4?k?K?K?i~@+|4:# BK?aK?i k?aC>K>K?ac?y?:@+~H:+c49K>K?a# B+~H:# B4K>@7?k?ok?9+o4:xK?9+`48W# B 4R+q4:K?9+`484# B 4׃K?Y@O?k?7k?9k?1K?1# B `\K?9` "K?1# B"K?9K?1# BK?Y@7?k?k?k?K?K?K?  J RT6ҕ@@k?7k?9k?1K?9J?k?K?4  :K?+`49K?1# BK?Ҷk?K? `K?+p@H3@:K?+i49HK?1# BJ+q@H4K? Y# Bk?K?K?Y@7?k?7k?9k?1K?9J?k?K?4  K?Ҷ :K?+r49K?1# BK? +`H4 k?K?# Bk? (\K?Y# BK?Y@7?k?7k?9k?1K?9J?k?K?4  :K?+|49K?1# B K?Ҷk?K?9H??k?K?4  K? :K?+f@490K?1# BbK? t+`H5 K?# B04זK?Y@7?k?7k?9k?1K?9H??k?K?4  K? :K?+p@49K?1# BK? t+`H5 # B :K?+y@49K?1# B4K?Y@7?k?7k?9k?1K?9J?k?K?4  :K?+`49K?1# B K?9J?k?K?4 b :K?+j49PK?1# BK?9J?ҺK?9J?9# B :K?+t49K?1# B4K?Y@7?k?k?k?K?K?  J0K? RT6ҕ@@k?7k?9k?1k?)k?!K?1J4 ` K?1H5V4 ` B :AH4V4  ?@4 v04 4 4ֳ AK?1K?1H??4  \K?1J?k?K?D$"C#2B"A!@ b# Bk?K?k?K?+i@H5H k?K?+i@h?HK?94K?)# Bk?K?94K?)# Bk?K?!4K?)# Bk?K?!4K?)# Bk?K?)Jz4K?)# Bk?K?)J4K?)# Bk?K?)JK?)Y# Bk?K?)JK?)Y# Bk?+`H?+`H3 k?+fH50+`H! +`H3 xk?+`H5k?+fH?0+`H3 k?+`H66!_k?+eH4(+`H56 !_k?K?)J04K?)# Bk?K?)J04K?)# Bk?\K?6B4 ZK?1JyK?)K?!# B x\K?ִB4 ZK?1H9K?)K?!# B \4K?Y@7?k?7k?9k?1K?9K?k?K?9J?k?K?46 K?t 2+~4:# BH\K?4 $ K?` +~H:+d49 K?ִ Ҷ+`H! 6 K? t+`H5 # B:K?46 K?K?1Jh RA4!7+~H:+g498K? t+`H5 # Br+~H:+j49PK?6 ?+`H3 K?җ# B+~H:Y# BK?Y@7?k?7k=k=K=7># B 2+m4:h# Bh\K=7># B (4K>AK? X4ׁK=@7>k?ok?9k?1K?9K?4 c 4  :+v49K?1Z# B# ?+`H3 k?K?9J?4  4 b :+49K?1Z# BRփ ҕ+`H6 k?K?K?# BK?Y@O?k?ok>k>K>K?tc?K>J?4  4 b :+h49@K>Z# Bփ ҕ+`H6 k?C?`"+yH4Ȋ "+n@H5p+l@hh5`+uH:Y# Bk?K?+zH!Ј6 K?+p49# Bk?K? 2+q4:# B\+uH:K?Y# B 2+y4:# B \K?` K?+}49# Bk?K? \+uH:K?+`@5ҷY# B 2+~4:# B \K?+l@h6`+|h#C??"+yH3Ȋc "+o@H4x+m@@h4h+vH:Y# Bk?K?+zH6Њ K?+a@49# Bk?K? \+vH:K?Y# B 2+b@4:# Bp\K? K?+f@490# Bk?K?` \+vH:K?+`@4җY# B 2+g@4:8# Bp\K?+m@h5h+}8h#+k@4:X# B\4K>@O?k?ok>k>K>J??c?K>Jc?4k?4  :+u@49K>Z# B"ak?C?` J+l@H:`K?X# B k?C?ҕ J+m@H:hK?X# B k?:k?+a4:# B\K?K>@O?k?7k?9K?9J??c?C?t 2+l@H:`# Bk?C?Ҷ 2+m@H:h# B8k?+l4:`# B \K?B4 \K?Y@7?k?7c??C??Bↄ"A† +l@H5`+n@H6p!B+uH:+|H9# Bk?K?+zH3Ђ K? J+uH:+|H9+zH8# BZ+uH:+|H9+zH8+`@5ҷ# B+l@H:`# B+n@H6p+l@h6`+yH?+|8h?+m@H3h+o@H4x j+vH:+}H9+zH8# B+m@H:h# B+o@H5x+m@h5h+yH6+}Xh6+m@H:h# B"+w4:# BK?Y@7?k?7k?9K?9H?4  pUKU46` B :TJU46 ?@+~H:u t+`H5 # B+~H:# BK?Y@7?k?7k?9k?1K?9J?4 b b+~H4k?K?+`49K?9J?# B:K?9H?? t+`H5 k?K?9H??K?9Jt?ҙK?K?9J?K?1k?# B \4K?Y@7?k?ok?9k?1K?94  46!K?94 0404 aTK?14 ? 4ֳ!K?1460404 S t`!:K?94  K?9K?1 K?94  *K?9K?1 aK?9ִ Ҷ+`H! 6 K?1 t+`H5 # BC` "K?9K?1 atP4ִ v 4 6 4 `\K?Y@O?k?ok?k?k?9k?1K?9JD4  ZK?9 Jk?9K?9KD4  K?9?@K?1H#E4 ` ZK?1 Jk?1K?1JE46 K?1?@4  +{H6؈ Z4% +{H3؈ *K?9K?1# BZY# BC` 4  Ж Є4` jbK?9%K?1 _u@C4TE` @U\K?YK?K?@O?k?ok?k?k?9k?1k?)k?!K?1JD4# ZK?1 Jk?1K?1JD4  K?1?@4 d!4  ЃE` K?)K?K?Y# B \K?!4K?K?# B p\K?)?$YK?K?# B \K?!eB4 YK?K?# B \K?)JD4  ZK?) Jk?)K?)JtD4  K?)?@K?!KT4  ZK?! Jk?!K?!KT4  K?!?@4 b X\҃4  j`  \K?1K?K?Y# B \4  !K?94r+h4:@+a49X# B+d4: # B \ d֣  VK?94?k?9 64s?T RK?9K?9K?94?k?96t?US?@K?1K?K?Y# B \ \K?9K?YK?K?@O?k?7k?9K?946 Z+~H:+j49PK?9x# B+~`H<K?9ҕ 2K?96 ?+`H3 \K?Y@7?k?k?+~H4+bH5K?!K?4?k?Kk?4  RK?? BK?Kk?4  K???@K?4  :K??6UT(\K?6k?K?Kk?4  rK?K? ZK?k?K?Jk?46 K?K??@+bH6K?6>@+aH?K? \4@@k?ok? k?k>k>k>k>K>JD4  ZK> Jk>K>KD4  K>?@K>H#E4 ` ZK> Jk>K>JE46 K>?@4  K>Y# B +~H:Y# BYK>K>K># B \4  !Z# B_!jK>k?Cҕ K>6k>+bH37U_B3tִB4 AK>6tk>aCҶ?E@K>7k>+aH4K?K>K>K># B \4  J4% 2+k4:X# B\4 d :+u49K>Z# BB+}49K>Z# BK>K>K?K? @O?k?ok?k?9k?1k?)K?96k?9+cH!K?97k?9k?K?1J?4 !Ha_D4 !Е :+e49(K?)Z# BzK?9K?)H?pJK?94K?)+q47# B\K?9d4tK?9K?96k?94cHS4  Bc :CHvS46 c?@d>@K?1Jt?K?96k?9K? #K?9K?YK?@O?k?ok? k?k?k>k>k>K>K?4 c$K>6k>k?4ak?k?HdП :+u49K>Z# Bj4cHeF4 e B :CHuF4  ?@!ZK?7k?K>K>JpԀJK>4K>+a@47 # Bh\4aK>7k>4c4  pFHvF46 B :CHsF4  ?@>@K?46@2+d@4: # B@\4 ` "4  J :+m@49 hK>Z# BK?4# pDHsD4  B :CHvD46 ?@4 d "4  JK? :+z@49 K>Z# B4 d "֟ K?6 5DK?@+d49 K>Z# BK>K>K?K?K? @O?7k?9k?1k?)K?1Jt?K?1J?k?44 \ t֢? VK?1H??4 !RUK4 a \3K?9֟ TK?9 4K?96k?94t@bK?9 6 K?9K?94!k?96\Tt_@` :K?9v K?9K?943k?92K?9K?9K?96k?9K?97k?9K?K?9@7?k?7k?9k?1k?)K?1J?K?1H??4 v UJ45d \4  SK4 $ \sҴ 4 `\ן ! 5UK?9 5 6?5Bk?K? bK?6JK?9K? K?45?k?K? ?@ K?9  5K?9 k?9` 6t?ִBk?K? bK??JK?9K?6K?6?k?K? ?@ K?9 6vK?9 k?9K?9K?)JpԀJK?94K?)+m47 h# B\K?9K?Y@7?k?ok? k>k>k>k>K>K>H$k?K>K> \K>K>6k>k?K?H?k?4  rK?K? ZK?k?K?Kk?4  K?K?6?@K?$K?4  JK?46 K?t K? uK>K?6*K?K>K?H tK?4  K>KdJ4K>+q47 Z# Bh\K? K? 4 cK?xK> aK>KdJ4K>+u47 Z# B\K? K? 4K>K?K>K?K?ҕk?K>K>6 k>K?7?֓B BK? JK> a6??@K>K? k>K?K? k?K?Jk?4 ` rK?K? ZK?k?K?H?k?4  K?K??@K?4 d RK?ҕ :K>K?6M@K?K>-@K?4  BK?? *K?K>6k>(K>6k>K?4sTCK>@K?Z4?_DH4?UDHK?@K>K>K? @O?k?7k>k>k>K>KXk?qK?qk?yK>Jpk?K>4 ` jK>4  K>? 2K>K?qK?q6k?qK?qK>K?yK?K>k?# Bk?qK?q \K?qK>jXK?yK>@7?k?ok?9k?1k?)K?)6J4??K?)JtK?9K?)JK?9 ?K?1Jt?k?K?4  K?KK?4 c :+y49 K?)Z# Bjֿ "?6_K?)JtK?1J?4 " :+e49 (K?)Z# B K?9 x6@K?)JH?7@K?)JxK?)H?K RA4!? tk?9K?)J 5K?9K?Y@O?k?ok?9k?1k?)K?)KJtk?9K?9K?)JH?7?uJK?94K?)+p47 # B\K?)J6JK?97k?9K?1J4  p_J_4  B :AH3_4  ?@K?96K?9aK?96K?96k?94?` J4   "K?943k?9 ?K?)JJ6?K?9K?1H9K?9K?)k?# Bk?9 2+{4: # B8\K?9 sK?)JK?9K?9K?Y@O?k?7k?9k?1k?)k?!K?)H?KTk?9K?96k?9K?)H?7JuK?96k?96YK?96uk?9tK?)JH?K?96tk?9K?)6J4? K?1JzK?)K?!# B \K?9K?Y@7?k?k?k?k?K?ҕ6?K? ֖  Uk?K?K?7k?K?ֶB :K? Jt 6??@6K? K?K?aK? @@k?ok?k?9k?1k?)K?1J?4  :+f49 0K?)Z# BrHd4 d Д :+k49 XK?)Z# BЕK?96k?9+cH?6?uK?96k?9?$֓  UK?9K?94?k?9 5֓B 2 J 6??@K?9 K?YK?@O?k?7k?9k?1k?)4k?K?9J?k?K?4  k?K?Ҷk?K? @K?4@k?K? :K?+s49 K?1# B+j@H5PJk?+j@H!PK?)K?aBK?4  K?)H??K?K?1JK?1J5bK?1K4K?1+z47 # B4# BK?K?1J+j@H6P6K?1KaK?16J6K?+j@H3P +j@H5PK?K?Y@7?k?7k>k>k>k>+j@H6PJk?K?Kk?qK?K>J?ԁ:K?q4 ` K>J?K?qK>H?K>JtbK>J4K>+~47 # B4# BK?qK>H?K?6tK>JK>4?K6tK>k?K>6k>+bH?K>K>K>6k>k?yK>K>K>6tk>k?K?K?qK>K># B X\+j@H5PJk?K?K? ?K>K?ytK>K>@7?k?ok?k?k?9k?1k?)K?9J?4 " :+b@49 K?1Z# BcK?9K?4 d b4  Ё :+k@49 XK?1Z# B"H4 ` :+t@49 K?1Z# BŒ`@ д:+~@49 K?1Z# Bj HdK?)J?#4 ` K?)J?񊤀K?1JK?1KabK?1J4K?1+h47@# B4# BK?1J4aK?1KaK?16J6K?9K? s4K?YK?K?@O?k?ok?k?k?9k?1k?)K?9J?4  :+l49`K?1Z# BBcK?9H$?4 ` b4  Ж :+v49K?1Z# BH4% :+`49K?1Z# BJ`@ гc:+k49XK?1Z# BK?)J?񂤠:+v49K?1Z# B K?9H$?4 ` RK?)J?񂤠:+49K?1Z# B d4K?YK?K?@O?k?k?+`H6+bH!K?6K?6+`H!4?+`h?\@@k?7k?9+`H!!_+h4:@+`49K?9# B+e4:(# B4 # BK?Y@7?k?7+eH:(# B+`h<+eH:(# B+`h<4?+`h3+`H4 4+`H6 4וK?Y@7?k?ok?9k?1k?)k?!K?9K?1 +eH4(6? +`H6 +eH3(6t? !+`H6cA Jt!b+`H6cAK?9 :+`H6cA JtK?1 4+eH3(6t?  +`H6cA Jt +`H6cAK?9?]@+`H6cA JtK?1?@+`H!c_ aJ!+`H6+eH!(?+eH3(t `"+l4:`# BK?9+`H!c_ a+`H5cV5K?1+`H4cU K?) ?+`H36t+`h4K?!Ҷ+`H!a4\K?Y@O?k?7k?9k?1k?)K?9K?1 +eH6(6?5+`H3 +eH5(6? !+`H4 U H4!b+`H5 VK?9 :+`H6 A JK?16 7+eH5(6?  +`H! T J +`H4 UK?9?]@+`H5 V5JK?1?@+`H! S 4K?9 +`H! S JK?16 B+`H3 T K?)04+n4:p# B\K?Y@7?k?k?K?K? +eH5(6? +`H3 TuK?6 r+`H3 T JK?a 2+`H4 U `H<+`H3 +eH5(6? 7+eH5(6? +`H! T 5K?6 r+`H4 U H4K? 2+`H6 A PJ :+`H6 A J>@\@@k?ok?9k?1k?)K?9K?1 +eH4(6? +`H6cAK?9 Z+`H5cV5KK?1 K?)4+`H6cA Jt K?)\+`H6 +eH3(6t? 4v+eH!(4?? +`H3cTvK?9 Z+`H3cT H?K?1 K?)4 :+`H6cA Jt>@ 2+w4:# B 4?K?)\K?Y@O?7c??C??&!Rk?+eH?(K?"+`H4K? C??a+`H4K? V jK?+`H4 sU 4?K?+`H4 sU  ?K?7k?+eH4(K?@k?+eH6(K?+`H?K? ҕC??5+`H?K? sT +`H!4??+`h?K?+`H4 sU  K?+`H3 T K?+`H3 T K?4?k?+eH3(K?t}@@7?k?7k>k>k>K>J?46 \K>Jt?ҕc?K>J?k?yK?y4  `\K?yҶk?k?q+eH!(K?q?+`H3K?qt ҶC??bK?q+`H4 sU H?'"+`H3K?qt ҶĀ+tH?+`H3K?q Uv? JK?q+`H3 T J?K?R+tH4k?K?q+`H6 A Jtk?K?4  K?k?yK?Jtk?y4  rK?K?y ZK?yk?K?Jk?y4  K?K?y?@K?y4  K? @ZK?yK?:K?y+dH6 K?y4 ` zK>K>JpԀZK>4K>+{47# B4# B+`H!K?q S 44 " K>7k>+bH4K>6k>K>7k>+bH4K>6k>4K>6tk>+bH6v?5SK>6k>K>7k>+bH4ҵB46_K>6tk>K?q+`H6 A Jt4  K>7k>+bH5K>6k>K>7k>+bH5K>6k>4K>6uk>+bH6v?4SK>6k>K>7k>+bH5Җ6B4 SK>6k>K>6k>+bH?K?K>6k>K?q6k?q+eH?(K?q@K>6k>+aH6K>K>@7?k?K?+iH3H :K?+jH5P K?+kH!X6 +mH<hK?+eH3( K?+fH50 +l`H<`K?+gH!86 K?+hH3@ +nH<p\@@k?7k?9k?1k?)K?94  K?9? zK?)4  ZK?)k? `:K?4 ``"K?1# B\K?Y@7?k?7k?9k?1k?)c?'K?9K?1K?)# Bk? \K?9K?7?# Bk?K? P\K? rK?+`H! _ aK?)K?K?9K?1# B+`H66B4 Sk?+`H4+eH5(Ҷ+eH!(? t`"+~4:# BK?9K?+`H6 A tK?+`H5 V5K?K?+`H5 V5K?)+`H46+`h5C?'K?+`H3 K?K?9K?1C?'ҷ# BK?9+xH9K?C?'# B j+xH:K?K?9C?'7# B+`H?7+`h34K?Y@7?k?7k?9k?1K?9J?4  BK?9K?4  BK?9J?? "K?9Jt?JK?9K?9H??4  BK?9J?46 BK?9Jt?ҕ "K?9J?H?K?9K?9J?4  BK?9K?4  BK?9J?? "K?9Jt?JK?9K?9H:?K?9K?K?9Jx?+`@4җ# BK?Y@7?k?7k?9k?1c?/K?9J?46 BK?9Jt?4  BK?9H??` "K?9J?JK?9 6K?9K?4  BK?9J?4 b BK?9J?Ҷ "K?9H??KK?9K?9J?K?9J?7?# Bk?K?"!B+`H?K? ҕC?/5!K?+`H3 T J+dH3  +h4:@+`@49C?/Ҙ+`H5K? 7# BK?9K?+h@49@K?1# BjK? BK?9J?+o@49xK?1# BK?!+`H6+eH!(?+eH3(t `"+u@4:# BK?9J?K?+`H4 sU  ?K?9K?K?+`H5 V5K?+`H4 sU 4?K?+`H4 sU  ?+`H?7+`h3C?/K?+`H6  4K?+`H3 T JK?Y@7?k?7k?9k?1c?/K?9H??k?K?9Jt?4  BK?9H??4  BK?9J? "K?9K?JtK?9K?9J?4 ` BK?9J?4 " BK?9K?t "K?9J?JK?9K?9Jt?4  2+w@4:# B\K?9H??4  2+`4:# B@\K?9J?K?9J?7?# Bk?K?"!B+`H?K? ҕC?/5!K?+`H3 T J+dH3  +h4:@+i49HC?/Ҙ+`H5K? 7# BK?9K?+q49K?1# BK? BK?9J?+x49K?1# BBK? ZK?+`H! _ aJ+dH6 \K?4 ` 2K?4  K?? zK?K?1J@K?K?1H?0:K?+~49K?1# BK?b BK?+`H5 V5K?+`H4+eH5(Ҷ+eH!(? t`"+f4:0# BK?9J?K?+`H! _ aK?9J?K?+`H3 T  6K?+`H3 T K?+`H?7+`h3C?/K?+`H6  44K?Y@7?k?7k?9k?1c?/K?9K?k?K?9J?4  BK?9K?4  BK?9J?? "K?9Jt?JK?9K?9H??4  BK?9J?46 BK?9Jt?ҕ "K?9J?H?K?9K?9J?K?9J?7?# Bk?K? BK?9H:?+h49@K?1# B+`H?K? ҕC?/5 JK?+`H3 T J+dH3   \K?4  2K?4 b K?ҕ zK?K?1H?@K?K?1J0:K?+q49K?1# BBK?+`H! _ aK?4K?Y@7?k?7k?9k?1k?)K?1@?c?K?1`K?9K?)# Bk?K?1C?K?K?Y@7?k?7k?9k?1k?)+`H6k?K?9K?1K?)# B+`H?7+`h3+`H4K?) +`h?K?K?Y@7?k?k?K?+`H4t+`H5B+`H3 ҕ4  +`H?7+`h3+`H4BҶ+`H! 6 4 ?}@+`H6B?+`H3 ҕ4 ? 4@B+`H3Btҕ0H46? 4 2+`H36tU+`h4U#+`H6B?+`h?+`H3+`H4t Ҷ46+`H3+`H4t Ҷ46 T 4@B+`H6B?04֓ 4ֵ 2+`H66S+`h?S`!r+`H4BҶ+`h6+`H?+`H3 ҕ4 +`H3+`H4t Ҷ46 T 4@B+`H6B?04֓ 4ֵ 2+`H66S+`h?S`>@K?+`H54+`H6B?+`H3 ҕ4 ? 4B+`H3Btҕ H46? 4 4B+`H4BҶ X4 4st 4B+`H5B? P4t 4֔ 4B+`H6B? R4֓ 4ֵ 2+`H66S+`h?S` *K?+`H504K?J+`h?\@@k?k?K?+`H4t+`H5B+`H3 ҕ4  +`H?7+`h3+`H4BҶ+`H! 6 4 ?}@+`H6B?+`H3 ҕ4 ? 4@B+`H3Btҕ046? 4 2+`H36tU+`h4U#+`H6B?+`h?+`H3+`H4t Ҷ46+`H3+`H4t Ҷ46 T 4@B+`H6B?04֓ 4ֵ 2+`H66S+`h?S`!r+`H4BҶ+`h6+`H?+`H3 ҕ4 +`H3+`H4t Ҷ46 T 4@B+`H6B?04֓ 4ֵ 2+`H66S+`h?S`>@K?+`H504K?J+`h?\@@k?k?K?+`H4t+`H5B+`H3 ҕ4  +`H?7+`h3+`H4BҶ+`H! 6 4 ?}@+`H6B?+`H3 ҕ4  2+`H?7T+`h3T!r+`H5B+`H3 ҕ4  2+`H?7T+`h3T +`H5B+`H3 ҕ4  2+`H?7T+`h3T?]@K?+`H604K?H?+`h?\@@c?+`H3Btҕ+`H6 ?4  +`H56+`h6+`H!@?+`H4 Ҷ46?}@C?t+`H5B4 0\+`H?7+`h34@@k?7k?9k?14k?4R# B 4X# B K?17Uk?1# Bk?K? BK?9H?7 3K?9K?1_@k?k?K?K?Y@7?k?ok>4k?K>+aH64# B!4# B 7?# B 4*4# B 4#k?K? K>K?t4X# B 7?# B 4"7?_M@ 4֣k?K? 2K?K?# BK> <k?K?K>@O?k?o k64k7Q4# B! 4# B "K6+aH4t77i_M@ 4*77q# B 4֣k7QK7Q 2K7iK7q# BK6 <77Y77a# B BK7YK7aX# BK677Y77a# B BK7YK7aX# BK6(|77Y77a# B!4P# B!z77y_E@k7QK7Q!B4k7K7yk77777# Bk7QK7Q K7YK7aK7# Bk?K?K64k?K?K7`j77K? ? K?K? K?4?k?K?K7@:K7YK7aX# BK6k7QK7QK6@O7k?7k?9k?1K?1+`h6K?9+`h?7?# B 0\+`H3K?t+`H<K?Y@7?k?7k?9k?1K?9K?1 +`H3 # BK?Y@7?k?ok?k?9k?1K?94  k?9Hvk?946 RK?9c BK?9Htk?94  K?9#?@+H?+~H3 +gH586?`*+`4:# B K?94 `%zK?9K?1Jhԁ+H?7+h34K?9K?1Jh5+`4:+m49h# B+`436tBuҶ+H?7+h3 b6VTB?+H36u+h5?@+H66?+h?K?9+`H4+H56+h64+H?7+h34K?9+`H6 8+`4:+n49p# B+`4?7Cҕ+H66+h? b6tUSB+H46+h5?@+H66?+h?K?9K?1J@+H66+h?4+H46+h54K?9K?1K@ aҘ+`4:+o49x# B+`456B?+H36t+h4 b6AV@?+H46+h5`?@+H66?+h?JK?94 !:+`4:+p49K?9# B+`4!4?@3t+H56+h6 b7S_Btҕ+H66+h3?@+H46?+h5K?9 !K?9 t+`H5 6_Bt+H56+h6 b7S_Btҕ+H66+h3?@+H46?+h5+bH6K?96#:+H?7+h344zCK?1_@4uCC4  k?9Hk?94  RK?9 BK?9Hvk?946 K?9c?@+bH4K?9!B+H66+h?4X4zCK?1_@4tCC4  k?9Hak?94 ` RK?9 BK?9Huk?94  K?9?@+bH3K?9>@+aH5K?9 R+H?7+h34K?1Z_]@+H56+h64XK?9 t+`H5 6_Bt+H56+h6 b7S_Btҕ+H66+h3?@+H46?+h5+H66+h?4P4K?9ҕ d K?1_@+H66+h?4X4UDK?9$u@dK?1_@+H?7+h34RK?YK?@O?k?7k?9k?1+~H5+h5K?9K?1# B+H66+h?+~H<K?Y@7?k?7k?9k?1+~H3+h3K?9K?1# B+H46+h5+~H:Y# BK?Y@7?k?7k?9k?1k?)+~H6+h6K?9K?1# B+H?7+h3K?)+q49+~H8# BK?Y@7?77?!,0k?)k?!7?1k?K?JtK?J4 ?>k?v u>5BK? SֳBҁB֓B676K?)K?!vK?@7?7k?9k?1k?)7?k?K?96?k?9K?17?k?1K?)6?k?)K?9k?9K?9 t>k?K?9Ҷk?9K?1K? Sk?1K?)K?9 Vk?)K?K?1 ?K?K?)t7?.@7?k?7k>7>.7>, 7?q7?y7?k?# BK>+{H4tK>K?qK>K?y ?K>K?tK>6 k>K>K>@7?k?7k>k>K>k?qK?q4  RK?qk?i7?a'88H87?.aK?q4  !bK?qKk?yK?y4 " RK?yk?i7?a&D88H9 7?. +{H!K?y ZK?qJzK?qJK?qJ# B7?P,!8H 7?/ +`H:# B\8H 7?.a K>k?qK?q46 RK?quk?i7?a&88H:7?,1K?q4 !bK?qJk?yK?y4  RK?yk?i7?a'E88H;Y7?.q+{H5K?y ZK?qH:K?qKK?qJx# B7?P.8H7?.+`H:# B\8H7?,17?/7?.q4; 0$ U7?/7?.a48 0$ U K>@7?k?7k>c>k>k>K>k?1K?14  RK?1k?)7?!'88H87?a.aK?14  !bK?1Kk?9K?94 " RK?9k?)7?!&F88H 9I 7?a. +{H!K?9 ZK?1JzK?1JK?1J# B7?aP,!8H7?a/+`H:# Bp\:k?9+`H:# B(\K>k?1K?14 " RK?1k?)7?!&88H;7?a.K?14 `!bK?1Jk?9K?94 b RK?9Ҷk?)7?!$(G8࢚8H;z7?a/+{H3K?9 ZK?1JK?1H9K?1K# B7?aP.q8H7?a.+`H:# B \:k?9+`H:# B\C>mH P@@@@@@@p@P@P@@@0@P@@ @@@X@7?a/7?a.q;7?a.7?a.7?a,18.7?a`/7?a.a7?a. 9 N 7?a . 7?a,! 7?a/9vn7?a.`7?a.7?a.4; 0$ A K>S8\7?a.7?a.4;[ 0$ A K>S\7?a.7?a.4; 0$ A K>SH\7?a.7?a.4; 0$ A K>S\7?a.7?a.48 0$ A K>SX\7?a.7?a.48 0$ A K>S\\7?a.7?q7?y7?k?# BK>+{H3K>K?qK>K?y ?K>K?uK>6 k>K>K>@7?k?/,7k>k>K>K?k?!K>J?k?1K>H??k?9K?!4  2K?!4 b *K?!Ҷ K?!H?k?!K?!4  K?!? \K?!ֳ Ҷ+`H! 6 Cuc?K?1k?)K?)4 b RK?)Ҷk?7?!$998H 9( 7?a/ K?)4 !bK?)H?k?!K?!4  RK?!?k?7?!&yH98H:7?a.+{H6K?!6 ZK?)KK?)JyK?)J# B7?aP.8H7?a,!+`H:# Bp\:k?!+`H:# B(\K?9k?)K?)4  RK?)?k?7?!&y 9 8H;Y7?a.K?)46!bK?)Juk?!K?!46 RK?!uk?7?!&I9 8H;7?a,1+{H?K?! ZK?)JK?)JK?)H8# B7?aP/8H7?a.q+`H:# B \:k?!+`H:# B\C?4 4؂ R7?a/7?a.q# B7?a.7?a.# B8H 7?a,!# B9n7?a/\7?a.`7?q7?y7?k?# BK>+{H!K>K?qK>K?yK>K? ?K>6u k>K>K>7?@/0,k?7k>k>K>J?k?1K>K?k?9K?14  2K?14  *K?1 K?1Kk?1K?14 $ K?1` x\K?1 +`H3 Bc?K?9k?AK?A4  RK?A?k?)7?!&h 9@8H87?a.K?A46!bK?AJuk?1K?146 RK?1uk?)7?!&J9@8H 9( 7?a,1 +{H?K?1 ZK?AJK?AJK?AH8# B7?aP/8H 7?a.q +`H:# B(\:k?1+`H:# B\C?{HPb@@x@@@@x@h@X@H@8@(@@@@@@@8@@@@x@h@X@H@8@(@@@@@@@x@@@@x@h@@H@8@h@@@@@@@8@@7?a,1# B87?!/K?!K?)k?qK?q6B4 SK>6k>K>7?a,1# B7?a/7?a.q# B7?a.7?a.# B7?aP, 7?a/# B7?a.`7?a.# B7?a.7?a,1# B7?a/7?a.q# B7?aP.7?a.# B7?a, \7?a/7?q7?y7?k?# BK>+{H6K>K?q ?K>K?yuK>K?K>7 k>K>K>@7?k?7k>k>k>K>J?4  BK>K?4  BK>J?? "K>Jt?JK>K>H??4  BK>J?46 BK>Jt?ҕ "K>J?H?K>K>J?4  BK>K?4  BK>J?? "K>Jt?JK>K>H??4  jK>J?46 BK>Jt?ҕ "K>J?4 b \+~H:+h49@K>J?ҸK>J? +`H4 K>J?k?# B+~H:# B7?/7?.a7?a7?i7?qk?# BK>+{H6K>K?a ?K>K?itK>K?qK>4? k>K>K>@7?k?7k?9k?1k?)K?1Jt?4  +{H!J \JJJ# B7?.q+m@H:h+l49`7?.# B4K?Y@7?k?ok?9k?1K?9K?1# Bk?K?? 4k?K? 4"# B 4֣k?K? K?# B\K?Y@O?@  Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programeditbp_stateeditor_filenoname.plbp_stateversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%u%u%u%u%u%u%u%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifytrailing in unifytrailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d trailing in unifytrailing in unifyunexpected push_variabletrailing in unifyexecutionexecutionexecutiontrailing in unifytrailing in unifytrailing in unifytrailing in unifyexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETexecutionexecutionexecutionEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2trailing in unifyerror in bb_list/2value trailingUnexpected: ISO I/O oprationUnexpected: blackboard operationexpected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loading%s unable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1rbhdef in seewbhset in tellwbhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arity%ldboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingvalue_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityvalue trailingchange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYS(75%)Stamp found %d, expected %d hash op on protected objecthtable full in hash op(75%)arg 1 of hash op should be nonvararg 2 of hash op should be nonvarStamp found %d, expected %d hash op on protected objecthtable full in hash opunsafe data in def/3 or set/3(75%)def/3 expected before set/3, rm/2unsafe data in def/3 or set/3string buffer (-i option) exceeded or infinite term%ld%ld%ld%ld%sbad arg in arithmetic operation%ld%-se%-ld %fBinProlog3.45/bin/bp.o.parisc.hp1100644 764 764 250000 5764353600 15643 0ustar javierjavier 1(P@HHlHHL 064PG:f 92453-07A09.74.10/C X I  dX!I  X!  X!-T T >(.?@,N>(2S"@,7U>(8u @h ,>(Aw@%p|,>(@%,,>(Bp@%T,>(Bt@%T->(Bx@&T.>(P@&D0>(P@& D0>(R@&(80$TEXT$ $PRIVATE$$CODE$$DATA$$BSS$ $SHORTBSS$ $SHORTDATA$$LIT$p  @&(0@0 #  0 _0 @s  0 @ @(     0 $+0 0O0 <{0 QL\0 l0 |0 T QG Q @ _0  0 0  0 ' C  A{ U0 C Q$k 40 Ud0 x# LW0 U0  0  0 0 0 A ( 4 @ 0 L 0 \ l 0 A|!_0 "c \@ 0 "|    0 0## T##  d@0 $_ p$# 0 &_0 A&0 AP'30 'gp0 '0 (+ D@P0 A(s0 U(0 -W0 A-0 A-0 U 3?0 .{0 U.0 Q(/'0 80#0 L0K0 \00 Ul00 Ux10 2/ '0$'08'0T'0`'0p'0 x'0 '0 @& 0 D_ A  \0 A  A  A $? D@0 U W0  k 43 \  DK U X; A ` \ \ U p   \ ,\0 A 0 Q c0 A , D@h0 A < `0 A Lc `0 A \ `0 A hg `0 Q 0 U#0 A0 A  ,`0 A 0 A 0 A 0 8`0  @ D`0 0   P` \`0 A g A 0 A0 U   A 0 U30 Q x0 Q0 Q0 Q 70 U G0 Q |0 Q 0 QO0 U_0 U0 Q 0 Q 0 U0 QC0 Qǻ0 @%0 A  $ 0 0 @#0 XW0 U0 Q +0 A 0 Q<̧0 |͏0 Q ΃0 Hk0 QX0d @%0 U 0 A p0 QW0 Q0 Qأ @)   @&  Q Q A[| A A 3 0 A@c0 ߫ P0 Ag0 A X @h p@%p0 A0 A d0 P,C , @&00 S0 -30 A h <0 UD T0 A  h0 A  |(0 Q  @%40 Q 0 A  60SSSSYY8 05RR00\\9 \\21\2 \YY\8 \YY\8 \1SSYY\8 \YY\\Y\\eeYY\\9 1RR110SSYY\\9 07LRR97LRR9\\7LRR\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\R\RRR\RRRRRRRR9RRRRR\RRRR\\\8\\\\\\\\877776# 6"6#SS\9%\5D5lS6SSSRRR\\RR7$7RR5R5 \1\RRRR \1\\\9%\\6(\\SS\\8'\1\\\RRRRRR\1\RR79)6+1.510 \\84p5SӼ\86S\S\S\S\S\ S\ S\S\S\\\\Y9 Y1p784\QQ\\9 \\\\\\\58p:\QQ9 YYYRRQQR5RR73R59\\2R6&R2RR7R1/RSSSS9)p=QQ7>YY\8 \RR6P6Y121111N1<S6!SSSe6eSSpBpC6pAp@pA6FSSp@pG6յpCYYpG9 66SSpCee7JSeSeepG1HRRRR6EeepCpBRRS1HSSpBepCeSYYpG9 66I pOppCpARRRR5RRRpARRRp66K1RR7RpR61pR12pR4 1    VYYpR8 1R7RpR8 RR 9X5Q7WRRR7R9X6*pR1RRRR7"8[6*9X6] pR81YYpR9 1RRRRR 6]RR ,pR8RR$R6RRRR7 9T4pR41V9TF* )?pR41+1!41C7V409_740S189T.pR4189T (pR41`=9TpR40 )7M#1pRR RR7RRR40RR7RRR$40RR79RRR401P65QRR&9b1pR81999 6 9%9cRR7RR8RRpR7 6dRRR799T0i 0 pR890 5e  RRRRRRR6fR pR8RRRRRR7g939T-*.7RRpR8 8 8 8 R8*7RR 9T8 7988 7 7 RRR 7 17 6 9T7 7 7 889pR1 9T88 R RpR41 8 R9T7788 8pR1 9T R 7 7 7 7 7 5 9TpR419,9T6- 6\ 6^6a9`pR19h9T 7S1U 6pk6n 7m7L  pkRprYe RR8eY9 Y8 7p7RpkR8pr8R7pk  7pY8 prY7 RR pjӼ 7oRR9RRpr6YY9 67o9RR7 pr67o*'6% 7o 7qR pkpr9 ppkpjRRRRRR9RR7v6f  RRRRRpr967oRR9pprRRYY9 6RR6w9s  pr7z1626f1uSRS RRSR9xR6{pr26fR  RRpr 9x 7o YY9 6RR9 R1R p~pr9|p6t6}7yRRR7Lp8ee67Lp8 ee7p8ee6p8p87*5RRR88pAp@SSpOSS88pCSS9T  eeRRp9 eeRR6eeRR7LR(7p6 ee7p8 eeRRRRp8RRRR7zRR9RRR7RR8R6RR9R7R7zR8RR RR8RRp86R6RRRp6p6RRRR7RRR8RR9R6{RRRRRRRRRRRRRRRRR6dReeRR7R6Reeeeee 9sRRp8 %ee7J RRRR779T $YYp8 6RRp8 RReeRRRRR#7RR7o9Tp8 6RRRRR68RR#p98p89 6& 0p9  p9=9p89p699T RRp8 RR RRp896RRRR9TRRp9 6,p896 p8pRRӶpOYYp9 66S6 SSSp6pOpSSpOp p1ppOSSpOpp6SSppOSSp pOp1SSppSSpOSSSppRRSp96RRRRRRRRRRSRRRRRRRRRRRRR 688p8SSppOp1pppO9RRRRpRR98ppRRp8SSpO1pppOYY9 88ppRRRRp86YY9 SSpO1pppO8ppRRp87op8pp Ӷpppp ӶppppӶpp66RR66 76RR78776 788 67pp6ee7 RRRSSp6RRRRRp8 RRRRRRpRRRRRRRRRRRRRRRRRRRRRRRReeRRRRRRR ReeRRRRRRRRRR R RRRRRRRRRRRR2RRRRRRR2RRRR7LRRR2RRRRpR8 R;xRR !RR:RRp6"ӼRR:p6 RR";xRR Bee;kRR:p6 RR;;xRR  eeRR:cp6;k ;k;k;k;k;k;k;k;k;xRR %eeRRp9 R:{R;xRR RR:RRp: 7;51?b!! ! !N!!!!!!!! !!!!.!!!L!(!!'<!6! !#!!!1m! "! $!!! !>!@!!!! #!,!)! D0!J>!6#D!&!"!&$. !E!!! !! !$,)!!!I.! !-!! !-(!T!*"H!&P!*!!=!2!!!!2!!!#F#,!#%Wsru ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -AcHPC HP92453-01 A.09.73BS$sruM$22 hdef_stringhdef_intmake_constants hdefaultsmake_var_arrayvar_array_init make_stack add_engineheap_safe_margin del_engine L$plab_start$global$gmaxcputimetimes$$divUquietquietmes__iobfprintfbp_exitsprintfexit$$remI$$divIbp_haltwarnmes fatal_error local_error atomtable link_halt can_recover overflow_bynew_funchdefmake_byte_arraycallocmake_char_array make_hentrymake_atomtablemallocinit_common_mem make_symtableinit_instr_lenhinitinit_engine_mem is_engine create_enginedestroy_enginefree init_randomsrandstart_profiler end_profilerget_cmd_line_optionsgetoptoptargsscanfoptind bp_version startup_mes c_interfaceinit_bp load_kernel start_wamsignal restart_originterprun_bp init_orig_wamXssym ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -Ac insert_lexM$17atomnolextablenewlex atomstampnewatomstrlensfullstrcmpatombak[sengine ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -AcM$18 unwind_trailopcounthcounthbak seen_tolddefault_start_pointhgetheap_or_bp_haltunify bad_instr exec_link interp_frombpbp_prolog_call load_engine load_engine0 call_engine ask_engineanswersuspend_enginemultitask_enginesapply $$dyncallfindall_store_heapfindall_load_heapfunctor name2listshell_1stats0if0foutfflushfloat_oprand__filbuf__flsbufcomparesetarg change_argdefsetlvalsymcat dcg_connect list2term term2list add_instr older_filesee_tell see_tell_atseeing_telling_atsreadsoutop0 det_append0findall_lift_heap copy_term term_append strip_cont0dcg_tell float_fun float_fun2 input_float write_floathlist unix_argv unix_getenv unix_accessunix_cd unix_kill new_builtin$$mulIYsload ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -AcSB$sload get_one_int link_switch link_code skip_header loadoperatorii load_fileload_instr_array load_self instr_lenisdigit input_funhset insert_op init_codeungetcmake_opfopenfclosewam_bpuser_bp\builtins ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -Acocomparename2buflist2buf stat_usedgetenvaccesschdirkill stat_left older_file0statfseekftellstrcpysystem float_comparecopy_from_engine bp_heap_topbp_consXdict ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -AcM$2htablehstamphfullhindexop_classvalid_opVio ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -AcBS$ioSB$io make_funcell make_term match_sym match_var match_int match_char match_argsmatch_list_elementsoutM$35__ctype__alnum__ctype2 match_termsread0swriteYfloat ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -AcSD$floatS$18$float_compare S$19$float_opS$20$float_fun2S$21$float_funM$15double_to_intsints_to_double make_floatpowlogfloorexpsincostanatanasinacosatofYdebug ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -AcXmain ccom options = -Oq02,al,ag,cn,Lm,sz,Ic,vo,lc,Mf,Po,es,rs,sp,in,Pi,fa,pe,Rr,Fl! -Acmaininit_c`p/&/:`p/,/:`p/./: `p/:/: 8`p/Z/: `p/d/:h`p/i/:`p/m/:@`p/p/:`p/q/:k?7@7?K?4  Z ZK?Y\@7?+`H?@ןB@ןk?7+`H7@_` X+`4:@@YK?Y@7?k?7k=@k= +`H?@4 ZK=K= Tk?4Zk?+`49@7=+`4:`@7=@K= K<@7=k?7+`Y@4:hK?Y@7?k?7+`X4:@+`@49xK?Y@7?k?7+`X4:@+`@49@4K?Y@7?k?7+`k?_H9@"aZ bKh RX7`x+`4:@+`@49K? r+`4:@+`49@K?4:@+`49@XXK?+`H7+`4:@ +`490@K?@@K?Y\@7?k?7+`H? K?Y@7?@4K?Yk?7@@@@K?Y@7?k?7+` 9H5@ K(_`X KK@+`4:@+`49Hk? @k?@@K?Y@7?k?7k?Y@k?K?k?@YK?k?@Y+`@7K?K?@XK?Y@7?k?7k?Y@k?K?k?@YK?+`B@7K?@YK?Y@7?k?ok?+`Dk?4:k?@Y+`h<C4@4h|4@4h|Y@4h| Y@4h|Y@4h|Y@4h|4@4h|xY@4 h|40@4h|4@@4h|4X@4h|Y@4ph|Y@4h|Y@4h|Y@4h|Y@4h|Y@4h|HY@4h|PY@4h|XY@4h|(Y@4h|0Y@4h|8Y@4h|@Y@4h|`Y@4(h|hY@48h|pY@4PHpHwxh|Y4`h|h|h`@hwhHzHyHxp@w@h|HzHyHxx@@w4x@4K?K?h|hxhyh`XK?YK?@O?k?7+`4:49@48 42+`4:49@48 42+`4:490@4 4K?Y@7?k?7@4K?Y@7?k?7@4K?Y@7?k?7@4K?Y@7?k?7@4K?Y@7?k?oC@`@ _ 7_K?Y@O?k?7@Z7K?Y@7?k?7_K>k?1k?9k?AY@XˀK>ُ *K?1k?)@@K?)K?1K?9K?Ak K K K  < 4k0K0k(k@k8K>@7?k?ok? +`CH9+`k?4@47@04@k?0@@+`@H:8+`H9 +`h<04h<+`4z 447P@ +`0cH:P@40c4@4+`h<7?0c@h7 4@@ 4 ҕ  "4K>K? @O?+`@4:`ˀK>k?7+`H=H?4~ j7h4B74KVKA 3K?Y@7?+`@4:ˀK?Y\&4 X\u h\@k?ok? +`Ck?Y7Zk?474@k?k?+`04K?4z4@47蓜04K? @k?!k?+`XK?4zH@47k?+`04K?!H9H k?)+`4zh4@47K?)04K>K> k?1@Z :+`@4: \K>K? @O?K?1@ ςK>+`@4:HˀK>+`H?H7"JX "6J@\@4k?7+`H?H7"KX J7K+`@4:\K?Y@7?J4H:7]?h=k?ok? D4 k?4Hk?@k?! (C\K>K? @O?K?K?K?!7   44  42pJv?pJ|k7H k?4Z@k?0׀\K>k?7@k? \K?Y@7?K?@KK?@JK?@KhK?@K:@K?ςuK?Yk?7@ @@7@04@@K?Y@7?@@k?ok>k>k>k>k>k>k>CD7E?@%k>+`K>48k>F@Zӟ%r+`G+`H4 24 6??@8H`HHHp@`@P@H0H @@@@@@@H@`HH4@7?I K?I PiH_4@7?Q K?QV i_4@7?Y K?Y| i_4@7?a K?a֡ `iX_4@7?i K?iׂ i _4@7?q BK?q`2?@*>y@8> i(_4@7?y BK?y`2?@*>}@>J i0_4@7? K?? Ji8_4 @7? K?i@_4"H49(48@47+`k?@4:@@4+` 4_ 84?K>K>@Zӟ:?/+`+`H?@K>  @\K>YK>K>K>K>K>K>K>@O>k?7+`4:k?+`49`4@4ZK?YK?@7?k?o+`4<k>C4!k>4b(4k>4w4xk>k>@k>K>K>k?+`4yH?K>K>K>K>k?+`4:@k>Xk?k?k?y@k?qK>YK>@O>k?7+`k? 4?47 k?+`h7x+`4:@k?+`@h?pK? K?+`@h<@@k?+`4:@YK?+`@` \K>@7?K? @K?+`4K?`9@K? ˀK>k?+`4Z@`8K?+`H7H8H9@k?0׀K?K>k?7+`H9k?+`4?@k?@4+`H9@4K? *+`4:@+`K?@49+`H7 @K?@K?K?@k?@K?K?Y@7?k?7@k?@K?@ZK?Y@7?k?o+`@H:0+`H:0+`04@h<+`H80+`h<04+`h X@k?K?K?Y+`h<04_ S+`<04h?@O?k?ok?+`CH?D@k?+`H80+`H?H87=?  BH b66h 0H b46|h?tK?K?YK?@O?+`@4:]Hk?7+`H8+`W4:@+`@490+`@4:X@4 K?Y@7?k?ok? k?k?k?!_WCBk?1@ :6=? ? ?+`H:0D+`H<7W?  6t?  +`H?F K?1@Y rH0H6?4s  B 2?4sK?1@Y?H0+`H? Z +`@4:\K>K?!K?K?K? @O?+`@7 +`H%X " K?1 0@K?1+`H= +`H"+`H9+`@:+`4Xh8yH0H5ЇМ `+`@4:˃K>+`H40_WX+`Y+`Z+`K5 :K] ` " H<7?h37J0K5@k?o4CXk?+`4:@+`K?W@49+`@4:C@K?J?# K?Y ?\@O?YP\7?KӸ  W@k?7+`K]]H?+`H7+`H8+`H9+`h?8h70h8(@h9 K?Y+`h<H@7?k?oC+`KY_ y+`4H8 H70k+`@h7@4@Z@4Hz@hz0K?Y@O?k?7+`H9@H: _K>\@7?+`k?)@4:K?)k?7K??k? :@ @@K?YK?@7?+`@4:8B@k?7T2_]276?KVX7? 84\ *\HBZ@ \?\JҺ@ 2 *VJҡ ?V'W'Rҷ%zUrK?ՇKK:"Jz7XxpUk?9+`4k?Y47pXk?)k?A@k?1K?1K?AK?)K?YK?9k?Y4k?9k?)k?A@k?1K?1K?AK?)K?YK?9+`4k?I47Xk?Yk?)k?Qk?Ak?1k?a@@K?aK?1K?AK?QK?)K?YK?IK?9k?I4k?9k?Yk?)k?Qk?Ak?1k?a@@K?aK?1K?AK?QK?)K?YK?IK?9+`47k?IZXk?Yk?)k?Qk?Ak?1k?a@@K?aK?1K?AK?QK?)K?YK?IK?9k?I4k?9k?Yk?)k?Qk?Ak?1k?a@@K?aK?1K?AK?QK?)K?YK?IxK?9+`4k?Y47Xk?)k?A@k?1K?1K?AK?)K?YK?9k?Y4k?9k?)k?A@k?1K?1K?AK?)K?YK?9+`4k?Y47Xk?)k?a@k?1K?1K?aK?)K?YK?9k?Y4k?9k?)k?a@k?1K?1K?aK?)K?YPK?9 Ҽ8U UK?BKKk?9Jy77w"ˀK>ي?@!B@!KGk?9K?ZKK:k?9K6KJu6w 4W? 2 2<666U9?VҸ>@ A8BK?5:KKڜ'k?9Jx7bG6?4K>@7?k?7+`KW4?@+`49@Z@4K?Y@7?k?7+`k?1k?9Y@H: _K>\@7?K?1K?9+`k?)@49XK?)k?7_K9KhKkX4Z@7V?+`6VH3S7Y649?uk?6(YKK @04K?Y@7?k?7@k?K?@ZK?Y@7?k?o+`C:H6k?6H:@H9xXK>4w74Y?3K?K>7(ZKk?K @K>@O?k?oCk?@k? "+`@4:ˀK>HaHbhK?Hvha4Z@+`T7\?H3k?)SH:H9xk?!@k?1_K?)K?!7649?K?!K?1K?K?6(4\H}Hs HtHuHvj H}hwhxXK>@O?k?7K_?KY?KX?@7?K?Y@7?k?7@k? \K?Y@7?K?K]K_hKYXKWKk?@7@K?Yk?7K_k?K :42K?J}K K?Y@7?@K? K?JK\ @\K?Yk?7_K]KSn@2n!j@j Jf@f d R` Z+`49@X@4 \K?Y@7?4KkXk˙W44*KkXk˙ew4"EKkXk˙%k?7_KZKw 24:KkXk˙H+`4:@+`49@X@4"\K?Y@7?k?ok? k?k?k?!+`@@BH7H?CZ7z4"KKKӳd ˀ(K>ˀK>Hu7KHaD7_?@ 4&7HHK  B@Z *HK( 4BHv  "HbF4?WH4K>K?!K?K?K? @O?k?ok? k?k?k?!Ck>K>k>k>k>K>H%пF@ @ @ K> p@ K>@K>K> K>K>PK>K>K>hK>K>K>K>K>XK>K>DK>K>+`+`XK>K>K>pK>K>,K>K>p@ K>K> K>@DK>K> K>@K>K>K>@ K>pK> K>DK>,K>dK> K>K>(+`$K>DK>K>$K>K>K>K>K>T@K>K>+`PK> K> (K> `+` K> pK> 8K>K>K>K> K>XK>K>K>K>w+`@K>LK>,K>K> K>K>K>TK>K> K> \K> K>K>K>\K>K>K>L+`\4K>K>K>K>K>K>|w4K>K>lK>K> PK>K>dK>K>,@K>K>tK>@K>HK>8K> (K> K>K>+`+`xK>+`p+``+`P+`@+`0+` +`+`+`+`+`+`+`K> `+` (K> K> K> @K> K> @K>K>H@K>K>K>K>0K>K>K>K>D@K>K>K>0K>@K>hK>K>K>K>bx׀ ` BK>K>U 64ck>K>K>K>U66uK>k>6tk>` K>U H:K>K>@Y K>Kk>K>4c6k>K>K>U6KK>64?k>%k>U Jж hH? @G 2EHt G?E!BK>CJ?%K>KK:K>+`K4@478@4K>6J4? %4K>K> 4 4K>K>Jtk>K>64?k>5k>K>Jt K>Jk>K>C4?4k>K>JtK>K>U K>v6K>k>6Uk> JU?K>6tk>K>K>4?k> UK>K> 6k>U  JzJK>@K> K>H?k>K>6tk>5KU K>K>K>J aJU  57]k>` jK>UK>  #4K> 4c4? k>K>K>UK> 4?K>sK> K>6t4?k> Ek>` K>U H:K>K>@Y K>K k>K>K>4t54c6t k>K>K>K>U H?K>6K> K>u66k> k>` K>U JK>K>@Y K>J uk>K> aJK>K>@4y K>J k>K>4c4? k>K>K>K>U JK> 6 JK>K>6tk>4?6 Ek>` K>UK> K>K>5K@4y K>Jt k>K>4c6 k>K>K>K>K>U K> !5KK>6k>67k>`!Ht4cҕ EhH @G 2EH` G?E K>K>J H??K>JtJu:K>+`K4@47`@4K>6H?7 38K>J K>J=k>K>7k>K>K>JK>66tk>k>U H?K>K>K>JK>66tk>Uk>@4:$K>U H%п hHt @G 2EHҶ G?E K>K>K J?񊥀K>JJ:K>+`K4@47@4K>6tJ68K>H? K>Jtk>K>6mk>K>H?U K>6%k>K>46u6k>k>k>7k>JҶ 5h4!?J` @A5 2TH5Ҷ A4?T4!?K>k>7 k>JҶk> "K>@K>*k>K>K>KpK>aK>+`K>K>4@47@@ 4K>K>K>@K> k>K>K>Jk>K>K>JtpJK>Pk>+`K>K>4@47@@ LK>K>Jж %h5H? @Y% 2EK3t Y%?E5 K>6k>K>@K k>K>JUk>K>46-k>K>K>JpKK>ԀPk>+`K>K>4@47@@K>K>H?` ʟhҕKҶ @T 2_J3` T?_ҕ K>6k>K>JuJk?Y K>43 k>K?YK>JC7UK>64sK?Y 4c 37 k>U JС hH` @G 2EHҕ G?E!K>CH??倊K>JtJu:K>+`K4@470@4K>6H?7 34K>K>  ՘4K>K>K> Jk>uJK>U JtK>K>6 K>K>4%67 k>k>K>J K>Jak>K>K>KK>U JK>@4 CK>Jk>K>K>4 4c4?k>U Jж hH? @G 2EHt G?E!K>CJ?%K>KK:K>+`K4@47X@4K>6J4? %4K>K>  4K>K>K>4Jtk>JK>U6KK>K>6 JtK>K>4?k>66t!k>K>J K>H?k>K>K>JfK>U JK>@4 CK>H?ik>K> JK>K>@4y K>H?k>K>4c6tk>U H%п hHt @G 2EHҶ G?E !K>CK?eK>JJՀ:K>+`K4@47@4K>4?K6te4K>K> 64K>K> vJK>H&K>k>U K>K>7 aK>K> 664? k>ik>K>Jt K>J1k>K>K>H&4UK> 4 aK>C46k>U Jeд hHҶ @G 2EH? G?E`!K>CJ?񊥀K>JJ:K>+`K4@47@4K>6tJ64K>K>  4K>K> H?K>JfK>k>U K>K>6 % K> 6t4?JK>k>61k>K>H? K>Jtk>K>K>J4U K>v H:K>K>@4 CK>KQk>K>4c6)k>K>JK>K>U K>K>K>7H&K>U 4?K>sK> K>6t4?k>1k>K>JK>K> 6U K>K>JK>U JtK>K>64?K> K>6t4?k>9k>K>JK>K>U 6 K>K>JK>U JtK>K>6 aJK>K>7k>6 56 Ak>K>JK>K>U K>K>K>7H&K>K>U K>s aJK>7k>6 56 Ik>U6KK>tK>K>JK>K>K> 66tKK>U  47K>K> K> 36s7k> Ik>U6KK>tK>K>JK>K> 6KK>U JK>K>4?6tK>5K>66tk> Ik>U JtK>K>K>JK>K>JfK>U JK>K>7a H?K>K>6k>6t4? Ik>U JK>K>K>KK>K>K>6JK>K>U K> !5KK>6k>67Ik>K>K>H?pJK>Pk>+`K>K>4@47@@K>K>JfK>K>JԀJ+`K>K>4@47@@(K>%Bk?a RK?aK>K> JK?a v 57?`?k?aK>K>K>K>4 k>K> ?JtK>K>6tJk>9K>JK>K> 6K?@JK>K>K>j4J? k>Bk> Xk?iK?iK>K> JtK?i 4???k?iK>4 tK>k>4?ԓ k>K>Jy?@JK>K>K>j4H??k> %Bk> Xk?qK?qK>K> JK?q v 57?`?k?qK>K>6k>@4: K>@4:0 K>` *K>7vak>K> k>V` (6t?A 6? ?K>7k>K>J K>v6k>K> 6 J K>Ju @T 2VJ? T?Vғ`0ҕVK> 6K>7k> H?` K>Kҡ @V 2_Jt V?_0_K>UK> J? K>aH4Җ @U 2AJ` U?AҴ0ҶAK>K>6tk> Jtk?Qҕ *K?QK> tJҡ @V 2TJ` V?T0TK?QK> K>4?k>K>K>6k?Q K>k>K?Q? K>6k>H%п h+`Ht @G 2EHҶ G?E+`H:@Y 0k>+`H:@H9 k> 4?Bk?y` JK?yK> JK?y 6t??k?y Ҷ ҡ8K> uK>K>JpK> Ԙ+`K>K>4@47X@@K>H%п ehfHҕ @Se 2EJv Se?Ef4+`֓ H:F@ Y 0k>+`H:@H9k>K>K>JA  v4?ִBk? JK?K> H?K? 6??k? ? 38K> K>K>H?pK> +`K>K>4@47p@@HK>+`JyH:@Gk> RK>K>K>@Xk>+`H:@H9k>K>K>JpK> Ԙ+`K>K>4@47@@8K>@K>K>4?k>K>JtJҶ zK>K>K>K>K>h?X4B׀ K>jtJK>Jt@4@@K>K>H?JK>h?DJthk>6@6?k>K>K>k>K>43+`H6k>4k>k?K?K>K> JK? v 57?`?k?K>K>K>6(K>k>K>H?K>J K>K>H6K>K>k?48Wk?BK>k>K>J k>K>Kk>K>Jk>@4:K>6k>K>@K> (k>+`@4:eK>K>KUk>K>K>@K> k>K>Jk>K>K>J7k>K>K>k?66K>k?@6 k>K>JUk>K>K>J 7k>K>K>K>k?6@6k> K>Kk>K>K>J6}k>@K>K>K>K65k>K>K>@K> K>Jk>K>K>K 6k>K>J 7k>K>J@K>j07Jk>=K>J6 k>K>K>K>K>@k? k>K>Jtk>+`H:@H9x}k>Jek>K>H:+`@H8hK>7k>H:hE+`@490@HhK>6k>J? ahsH4ҕ @Sa 2VJa? Sv?Vs` K>J k>K>6k>Kt ʳhҵJv @U 2_Jt U?_ҵ K>J5k>K>7k>JҶ 5h!J` @A5 2TH5Ҷ A4?T!" K>7 ]k>K>J =k>J? ahtH4ҕ @Sa 2VJa? Sv?Vt :u v K>4? ek>K>Jt Ek>J hJt @_ 2UK _?U6+` H:@ Y K>6t Uk>K>J 5k>K>H??Je?^ Ak?Q*!K>K?QG@Wk> K>K k>w bK>U6KK>K>@Z :K>Jt k>K>U  'K>7 k>K?Qжҕ Bwk?Q `K>U K?QH9K>@K> :K>K -k>K?QU  4K>7k>K>J?J?ҡe^ aTk?Q!K>K?QG@Wk> K>JMk>w bK>U JK>K>@Z :K>Jk>K>U K>6k>K?Qг? ִBwֿk?Q `K>U K?QJK>@K> :K>Jk>K?QU K>6k>K>H??Je?^ Ak?Q*!K>K?QG@Wk> K>Kk>w bK>U6KK>K>@Z :K>Jtk>K>U  'K>7Mk>K?QйҚֽBwֿk?Q `K>U K?QJK>@K> :K>Jk>K?QU K>6]k>K>H??Je?^ Ak?Q*!K>K?QG@Wk> K>Kk>w bK>U6KK>K>@Z :K>JtEk>K>U  'K>7k>K?QйҚֽBwֿk?Q `K>U K?QJK>@K> :K>JUk>K?QU K>6k>H??b pK>J?Ҷ JK>K>H:?+`@498K>Kk>K>K>J?J?ҡe^ aTk?Q!K>K?QG@Wk> K>Jk>w bK>U JK>K>@Z :K>Jmk>K>U K>6-k>K?Qй:Bwk?Q `K>U K?QH9K>@K> :K>Kyk>K?QU  4K>79k>K>J?J?E@k> K>Jk>w bK>U JK>K>@Z :K>Jak>K>U K>6!k> @@K>ӓ֓BU֟ H9K>K>@Z bK>Kk>@@K>ӔִBUֿ6K>6t!k>H5`4 Fv8+`H?`7Ftրt@k?QH6`J4??`H+`H3`6tJ6B k?Q+`@H:`k?Qw` pK?QK>UTB H9K>K>@_ JK>Kk>K>ִBUֿ6K>6tYk>J?ж B+`K>Z@49XK>H?k>+`H3hJt6?`Hu+`H!hж4?K6t v+`H9h@кK>6Ak>K>H??Je?^ Ak?Q* jK>K?Q@W K>Kk>K>6k>K?Q@K>H?ak>K>6tAk>K>J?H%?օ^ Uk?Q jK>K?Q@W K>Jk>K>7k>K?Q`K>Jak>K>4?Ak>K>Jt?J?Җ^ Sk?Qj jK>K?Q@W K>Jk>K>6k>K?Q`K>Jtak>K>6Ak>K>H??Je?^ Ak?Q* jK>K?Q@W K>Kk>K>6k>K?Q@K>H?ak>K>6tAk>K>J?H%?օ^ Uk?Q jK>K?Q@W K>Jk>K>7k>K?Q K>Jak>K>4?Ak>K>Jt?J?Җ^ Sk?Qj jK>K?Q@W K>Jk>K>6k>K?Q K>Jtak>K>6Ak>K>H??Jt?k?Q4^5_ K>Jtk>K>J?J?4>t@>ֳBwk?Q `K>U K?QJK>@K> :K>J k>K?QU K>6k>K>K?J?k?Qv^ Sj K>Jik>K>J?J??>Utu@Җ6Bw?k?Q` `K>U K?QJK>@K> :K>H?k>K?QU K>4?Qk>K>Jt?J?k?Qҁv^ aT K>Jk>K>H??H4?ҕ 6Bw?k?Q` `K>U K?QJK>@K> :K>H?1k>K?QU K>4?k>K>Jt?J?k?Qҁv^ aT K>Jk>K>H??H4?ҕ V6Bw?k?Q` `K>U K?QJK>@K> :K>H?k>K?QU K>4?k>K>Jt?J?k?Qҁv^ aT K>J1k>K>H??H4?ҕ 6Bw?k?Q` `K>U K?QJK>@K> :K>H? qk>K?QU K>4? 1k>K>Jt?J?k?Qҁv^ aT K>J k>K>H??H6? ` ִBֿҿ S֓Bw֟k?Q `K>U K?QJyK>@K> :K>J k>K?QU vK>6 k>6?@6?7+`w43 k?Q bK>U6KK>K>@Z :K>Jt k>K>U  %K>7 k>J?е B+`K>Z@49K>J Yk>K>пJe?k?Qд :е ж K>H? k>H` B+`K>Z@49K>J k>K?Q@K?QB+`K>Z@49K>Jt k>K?Qw hK>U JK>K>@Z :K>Jk>K>U K>6Qk>K>@K> K>H?k>K>6tk>K>@K> K>Jk>K>4?k>K>@4 K>JtQk>K>61k>K>H3 4K>@K> K>Jk>K>6k>K?t @K>J?" @K>K?t K>J?JK>K?t @K>J?" @K>K?t K>J?JK>K?@K? E+`H3 K>JQk>w bK>U JK>K>@Z :K>Jk>K>U eK>6k>K>@4 EK>JQk>w` bK>U JK>K>@Z :K>H?k>K>U K>6k>@K> EK>KYk>w bK>U6KK>K>@Z :K>Jtk>K>U  %K>7k>K>K>@K> k>K>JQk>w bK>U KJK>@K> BK>Jk>K>UH? aK>6k>K>K>@Ek> K>H?Ak>w bK>U H9K>K>@Z :K>Kk>K>U K>4?k>K>K>@Ek> K>Jt9k>w bK>U JyK>K>@Z :K>Jk>K>U6K>6tk>6B? hEK>U JK>K>@Z :K>Jk>K>U eK>6k>@K> K>Jk>K>7ek>@K> K>J-k>K>6 k>K?t +`H%H%w bK>U JyK>K>@Z :K>J]k>K>U6K>6tk>@K> K>Jk>K>4?k>Jt?@ҚK>6k>@K> K>H?Uk>K>6t5k>@K>w hEK>U JyK>K>@Z :K>Jk>K>U6K>6tek>J? K>K?t u K>Jk>K>@Y EK>Kk>4(k>K>K>@J?Ew bK>U JK>K>@Z :K>Jk>K>U eK>6k>@K> K>Jk>K>7ek>K>K>@Ek> K>Jk>w bK>U JK>K>@Z :K>Jk>K>U eK>6]k>K>@K> k>K>Jk>K>7k>J?е ж!2С !"K>K?t K>K>Jpk?Z@Y (G+`@4:XK>K>k>K>YJ0J@JH@k? AK>Kk>K>J0j0w bK>U JyK>K>@Z :K>Jk>K>U6K>6tk>K>K>@Ek> K>Jk>w bK>U JK>K>@Z :K>Jk>K>U K>6k>K>K>@Ek> K>H?k>w bK>U H9K>K>@Z :K>K k>K>U K>4?k>H3PwJt hJK>U JyK>K>@Z :K>J=k>K>U6K>6tk>H5PK>JJ?K> KK:K>+`K4@47@4K>K>6J6t4? %%k>K>@K> K>Jk>K>4?k>H3PJt tRV6Bw hEK>U H9K>K>@Z :K>Kk>K>U K>4?k>K>@Ek> K>Jt}k>w bK>U JyK>K>@Z :K>Jk>K>U6K>6tk>K>@Ek> K>J}k>w bK>U JK>K>@Z :K>Jk>K>U K>6k>K>K>@Ek> K>H?uk>w bK>U H9K>K>@Z :K>K k>K>U K>4? k>K>@K> K>Jt }k>K>6 ]k>K>K>@E (k>+`@4:K>w bK>U JK>K>@Z :K>J k>K>U K>6 Mk>H!wB hEK>U H9K>K>@Z :K>K k>K>U K>4? uk>@K> EK>Jt 5k>w bK>U JyK>K>@Z :K>J k>K>U6K>6t }k>@K> EK>J =k>w bK>U JK>K>@Z :K>J k>K>U K>6 k>@K> K>H? Mk>K>6t -k>@K> K>Jk>K>4?k>@K> K>Jtk>K>6}k>@@w hEK>U JK>K>@Z :K>Jk>K>U K>6k>H%?п K>Jtuk>K>HJ?ŀK>H?H3:K>+`K4@47@4K>K>J4H?K>6tJ6K>K>H??6t ]k>K>J?J?J?8@ K>Jtk>w h7K>U JyK>K>@Z :K>Juk>K>U6K>6t5k>J?@6? K>H?k>K>6tk>@K> K>Jk>K>4?}k>Jt?@6? EK>J5k>w bK>U JK>K>@Z :K>Jk>K>U K>6}k>H??b K>JEk>K>J?:@k?Q K>Kk>K>6k>K>J?K>K>K>?@k? ˀ(K>K>K>K>H?JtXKJk>k>k>6tk>+`@4: K>+`@4:H K>K>K>K>K>@k? k>K>Jek>K>w hK?K>U H9K>K>@Z :K>Kk>K>U K>4?k>@K>(K>@K>eK>K>K?!K?K?K? @O?k?o4@Z+`h<_4H9 7_H9H:4c_~H6H5H4bfH3 H= H:_H9?H8c8H7b"H#`H"`_$H<H6b&H5b(H4b*H3b,H=c2H:c_6H9c?.H8cbH7b0H#`4H"`_k?I@Z `K?I7 ?4?cD! X @Z? ?K?Q` 04K>K?K?K? @O?k?7k?7?@k? *K?ןBןK?Y@7?K?@K?K?YK\4*K_Ӵ K4K?aK?YK?QK?IK?AK?9K?1K?)K?!K?K?K? @O?k?ok? k?k?k?!+`4h3EDK>k?1FGHK  YU@@+`+` (+`+`P+`+`+`+`+`+`+`+` +`+`,+`+` +`h+`+`+`+`+`+`+`+`|+`l+`\+`+`+`,+`+` +`+`+`+`+`+`+`+`+`|+`l+`\+`L+`<+`,+`+` +`+`+`@+`+`+`+`+`+`|+`l+`\+`L+`<+`,+`+`PHb+`d+`+`+`+`+`+`+`|+`+`\+`L+`<+`,+`+` +`+`+`+`+`+`+`+`+`|+`l+`\+`L+`<+`,+`+` +`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`+`+`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`+`+`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`+`+`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`+`+`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`K?1H+`H<-zHt4Jֿ֠?+`H<-BH7-BHv6?KH-4Z Gօ p4? vH|K@U VH? JH|7?J "4X ] RHu4f6?Jt "4n S9Hx7?K9Z}@@YHHx@E@Y+`H5 _H5 HvK V"zK Hk\!JHw!*K4(K:\ 4&G 24+`k@4:ˀK>7?6?*K Hg4?K Jր VHg4?J` `\  4* 5AK !k 424&Hy K4ր V6HvJa B p4 y%Hg4 yHyK=נ Z:HuJ% ]K K He4(HF ` x] HtJ BZ p7Y ykˀhK>ˀXK>+`4:@K?14k+`49(@W+`@4:@ˀK>H! 4EK?1@YK?14CY 0+`H: Hx@@ B+`H@H9 K4.@W_ p6? bˀK>+`@4:ˀK>H8 :K?1@Y p4 e ˀXK>+`H4 bHs Jtҁ Xx& HtJU?WˀK>+`H' jHu JYЦK?1 V@ p4 bX \ˀ0K>H"@"H7 Hb4_?Kf 4V \E p7? fHgHU_F H&1Hs6?K01Z4T X8 Hy7??K ׅ p6? eHfHU E H%0H}7?K0j<PHae H5ҵ uE %ˀK>H6"*H7 H|7?K 4F B p7? bHeHU B H"D/HHz7_?K/4D Y Hx7?KB 4N F֥ p4? |HbHEԠU \ \H!$.JHy7??K."4L ZH|ץ KҔ B ˀK>ˀK>ˀK>َ!Hw6?K$!r4B We p4? uHvJ׀U |UH? BHv6?Jt   RHt4f6?J "4j T H,:Hw6?KL,4l U HvE Js SA H5!H7!Hu6?K(!4J Xץ p4T? tHuJU TH? JHu6?J "4H V  RHs4f6w?J] "4r \ H*:H7?K,*4t A ˀK>َ!H7?K!r4R YE p7? sHtJ֠U USH? JHt6?JT "4P B RH}4f7?J: "4v E(zHg4?K(R\8Hu% Jӽ =\H= H4 rHx7?6 JH= 04\4 4\ Z% H}K <WHsJgU _ˀK>H:@'H' H|4:7?Kg  z r4^ EF Hs6v?Jӧ GF p6? aH} K׆ v_H}KU GH7!Hu4:0 B ڌ K?1@YӘ Ӂ4AHgK> 0H2 4`H}7?J& G p6? |Ht JK?1E U@Y p4A a <+`H? jHs JaK?1"Tt@Y p46 vˀ`K>H7 ZH} KK?1 Y p6 uˀK>օ HV F FH3` HvE J4 \_Y p4 h3@Hz 0hˀK>ˀK>H? HbHX F F!H} K4 V ZHwH& J7?@U X8ˀK>K?1Hx@K4?U! ?Y+`H3`!JHzԥ K]ӵGGHzKEԠ %_P_+`H:@ Ht JZ VHzH}(+`H%Th%+`4bH:4D jHC4dX DˀPK>ˀ@K>+`Y47@X׀\K>K?!K?K?K? @O?k?o+`Ch +`4KS4Jv4$ ]}H<PC+`Y ] z+`H5k8+`k7k7k5 HsJtր \|H:H9@7@HxHv+`6 bH5 UHa4" bK?Y@O?k?ok? k?k?k?!CKTk>6?`U7ZK]7SC4F: @YK>K?!K?K?K? @O?@Z\4F@K>K>K>4H4D4`HwG6? y `H7 C_?K>و?Hw?HwHe4?- dK>4J7C@K>\]@k?o+`4@=H5X k>+`h X7>+`k?497?a@7>!Y@7>k>Y@7>!K?a+`B@7K>@Y +`ZK?aKX+`k?49+`@77>!7>+`k?4:@C@k?+`@4:PK>K=+`\h4X@O>k?74b_z X@Z(K?YK?W@k?K?Y@7?k?ok? k?k?k?!k?)k?1k?9k?Ak?Ik?Qk?Y+`CE@49D!(k?@Z+`@4:+`@4:ˀ(K>4: @49( \K>K?YK?QK?IK?AK?9K?1K?)K?!K?K?K? @O?@K?܁@K?ɼ2@K?|+`4:@Y@Z4 +`K?K?K?K?I+`7675JH5?`5 I6 B!H4L@Z<+`4:@49 \@K?IWk?ok>k>k>k>k>k>k>k>k>k>+`4h=XD k>E"C+`G4~4 4k? CG@K"Z !h4 4l  ? b7, @ YIS5k6t T| 55?  cFw k?+`4:@k>4`@X``j4,m Y   K>k?4@k? Y@4 c >'k?+`WH:+`K>@49+`@H:4K>YK>K>K>K>K>K>K>K>K>K>@O>ˀK>Yk?7+`48k?+`YW@4:x 4B+`48+`K?4:@4 4K?Y@7?k?7k?Z@k? \K?Y@7?K? @K?K?YK?@K?K?Y 9 J RY799@k?7XKZ?Y" _`J+`H7@2H8Y@ K?Y@7?+`@49HK?Y+`@49K?Yk?7XKZ?W rY b+`H?]@ Zˀ@K?Y@Y K?Y+`@49K?Y@7?k?7_KZ?X] K?YD Z` J+`H7@ 04K?Y@7?+`490@ZK?Y+`@49K?Yk?oKC?k?y$ z@ r+`H?x@ ςhK?Y+`K?49@Z0K?Y+`K?49@ZK?Y@O?k?7K_?k?" @k?+`K?K?@49K?Y@7?KW? 0Z+`K?@49PK?Y@ ςuK?Y+`K?K?@49=K?Y 9 J0 XRY799@k?ok? k?k?DCK?k?) k?!x K 2 *_J ?_D 8W H? C‡"B2"ڇAʇ!jA @:#z@@+`H6Hh<Hȼ K?!4@XK?!E4@X܂`EBˀK>K?)4@XK?)E4@X܁EBHz4@XHzE4@X܁EBHzY@XHzEY@X܁HEB+`H?+`H7+`H=0 } w +`H:+`H9(7T  E ZFHz04@XHz0E4@X܀@EB+`H8+`H<0 EBHK?)_@X ˀ`K>FBHK?)_@X0׀4@\K>K?K?K? @O?k?oKX?K_?D!*`! z j+`H7+`H:C +` @49 Y K9h+` ?RW6H:U +`H:C+`@498Y+`@4:ˀxK?Y+`H9+`H:C4 +`49P@Y@HzK?Y@O?k?7_7>k=@Z 2+`@4:h\K=Y@7=K=@7> ςK=YK>AK? X4K=Yk?7_KZ?XW r jK?+`H7Z ` " R@ K?Y@7?+`@49K?Y+`49@ZK?Yk?ok? k?XKC?KY?w p? b+`H7u hk?!+`H<D!Hph`+`49@@ZPK>ُ"+`H6D"Hx`hh Z+`K?!@49臀 HEH@Y@X! h`hˀK>H@YHE?=@+`K?!@49 XEHY@X?Oh`+`@4:ˀK>+`@4:ˀK>+`@4:ˀpK>ˀ`K>@4:ˀ@K>ˀ0K>+`@4:X׀4K>K?K? @O?!+`K?!@490?=EH@Y@X +`@4:8ˀUK>H@YHE\?=@+`K?!@49>EHY@X>_+`hhhk?oWXKZ?J?_4 7 8Y+`H:`@X `\ Z+`H:h@X R`P\+`@490K?Y+`@4:׀\K?Y@O?k?7K_? :+`@H:`לBןK?Y@7? "+`@H:hלB+`@4:`ˀK?Yk?o_@!@ *+`@4:K?Y@O?+`H7`H3pCw rHz@HyHxЃ J Hz@HyHy@@w@Hz`HpHyh`%hy+`H=hH4xC *HzHy@Hx@HzhHzxHxhzhhx+`@H:hK?Yk?7KW j_+`H7+`H:@ +`@H:K?Y@7?J@?+`?w+`WK ?O+`?W-+`k?7_KW?k?a +`H:V K?K?K?:K?ak?@X0׀4K>@7?k?)+`H=+`k?Y49@ZK?)%K?Yk?7_k?7 4 4k? 4 4!3! XT W  K?K?  JK?K?ӓ x@ 4\K?K?+`H?AҶ @ "K?K?4 _]@ 4K?Y@7?k?ok? k?CDKEТ@ 2 *CHм ?CH4 2$ *DK9? $?Dз k?!+`H=؈ "3b +`H:؃: @Z K?! С k?) x4K?)Šbe_e @4K?)e K>Z@YK>K?K? @O?k?o_CK>K>K9k?=Zk?! 8k?? *_K9! ??_7!J 4k?) K?@K? :K?!K?K?@4 "ˀ(K>ˀK>׀\K>@O?6K?K?@ Y RK?)K?!<BK?K?@??w\ˀmK>ˀ]K>KY7 2: *WK9"@ 7?WK?!J :K?! *XJ@ ?XB!b:B H!RK?K?@Z>G\ˀ=K>ه@>@4W3  U7?  u78? cYK?K?@Z=\ˀK>+`4:@+`@49+`@4: ˀ5K>ˀ%K>ˀK>k?7X X_+`H:+`@49P+`H<K?Y@7? "+`H7 @\K?Y+`H=H?= W7XKZ3` 2: *ZK9= :?Z6 9"77KY< 2: *ZK94 :?ZH55?7XH33 ˀ4@\@k?ok? k?k?k?!FCK%K>k?9ЧD 8k?1 *FHС ?FH 2 *DH ?D k?AZ@Y +`H:@YK?9K?1Y@Z 2ˀ8K>K?949@Z@\K>K?!K?K?K? @O?Ц @Z CZ h+`47H84c4B?3`?H8+`H"K?9K?1Y b@4c>\ˀK>ٌ 2K?A "+`@4:XˀK>ل>E+`K?949@ZMK>k?7+`H77_W7K7?@ JA BD Kp܀667JӴ 2 *WKӳ` ?W?wKpK=?K?Y@7?+`474@ZˀK?Y+`@49(K?Yk?7_K=?Ӷ 2+`49 @ZK?Y@7?KWV7!7+`@49K?Y@ B ӳ` +`49 h@ZMK?Y$ U7 5ZB@ bY ZYKZA :Y?Y(Y4?K:ZY "?=@?-@+`@49 MK?Y47 4@ZˀK?YӶ! SKӵ ڋ?S7J}ӵ 2 *SKӴ ?S rTKp6\+`6}6sa7 >J}]?Kp4W]GӺ+`@4: ˀK?YK8?K?? K7? ?J= X3=4 `T7\T@* 79_7 J 0ˀ"ˀX7\W@k?7K=?K??ӳ;}KbD \K?Y@7?;K ˀK?Yy 744 ˀK?Y|t  |V XV7K?@k??@h|XK?K>@O?k?7_7KT6?UKK_K:?VKZ\ *+`@49 K?Y@7?K]׿?K:?] "+`@49 (K?YW  H4?@KKxJ"RT643@Ҝd |K\k?ok?CKKK6?ā0 K7!2_4 `   B \Hb XK?YK?@O?HsK9Jtk?6?@Z?}X+`@4: ˀ}K?Y+`47 4Z@Xˀ=K?YJ@>4>4WK>4?We4k?o]7K_HsC s6yK0 u sKJ |KA4" B@K0׀\K?Y@O?7?? B<UW ( 8 ?t78 : @6k?7WK:?B@!KY< = +`H46 ]7?67 7B6]X ( : ?Y9? K?Y@7?+`@49 XK?Y+`@49 0K?Yk?o4SKZ?_ C_@ 4?HC` +`H9PK?K4]Җ bJzJ|Jz6wTKPJu6J7KP _]K>\@O?+`49 @XK>k?A+`47 k?94Xk?i@k?IK?IK?iK?9K?Ak?94k?Ak?i@k?IK?IK?iK?9K?Ak?ok? +`_H:P]KUJ?JSxk?q҃` ZJzJw"Jb6 T6vJd J7+`7H54d4Z cYXk?yW@  ˀ@K>+`H=PK?qKK?ydK>K? @O?k?9+`47 k?A4Xk?ik?Q@k?IK?IK?QK?iK?AK?9k?A4k?9k?ik?Q@k?IK?IK?QK?iK?AK?9k?7]KZ?_BB!bK?Y@ B! JS`!B AjTZK? JtrҖ ZKK::K6x7KXJ64K?vK>@7?+`49 XZ@XK>+`49 @XK>+`49 @X]K>+`49 @X-K>k?Y+`47@k?)4Xk?9@k?1K?1K?9K?)K?Yk?)4k?Yk?9@k?1K?1K?9K?)K?Yk?7]KZ?_\!K?Y@ B  JS` A TK?K?Y  4K?Y@7?+`49Z@XK?Y+`49`@XK?Y+`49@X]K?Y+`49X@X-K?Y+`49@XK?Y+`49@XK?Y+`_K+`H8\K7:@kk?7+`H?+`W4:@+` X49@+`@4:(@4 K?Y@7?k?7+`@H:(+`H:(+`@h<+`H9+`7 44?_h8 4K?Y+`h?@7?k?7+`k?a] :H8(k?i+`7?H7 V  S +`H4 \ J \ J" j7 A R U J 2 \ ?7J"?7+`H: S zJ!2 7`Rk?Y+`4:`k? k?)@k?1K?1K?)K? K?Y+`H4+` tW+`H"K?a b4H"+` bK?iH6J6h9 @\K>@7?k?7+`H7(+`H" :6? _  +`H3 T tJ@ Uu V J< j7  R A aJ 2 Vv \?7J!?7+`H7 \ A  B K7 2+`@4:p\K?Y@7?4+`H=(+` :7?H7  S T  A Jv6 +`H5  7  \ A  V Jt4 J " U Jt?7@\@J|@J|k?7+`H"(+` :4_?H7  T U  \ K!!" V J@ ˀ+`H3 } 7  V \  U HT4 J} " T H5?7} *\P48+`@4:ϟK?Y4K?Y@7?_ +`H<(WX+`Y+`4K4 2H= T  ]667ZK(wK4@H6(WX+`Y+`Z+`4K4 rKS Uu RH4 6?h<`KS K\ 67K(wWK4@k?ok? k?k?k?!k?)_HK8? B\K>K?)K?!K?K?K? @O?K7?B ˀK>+`TH!(S +`V+`B+`C454J HXJ#$z sZ Hg#J7J(+`47k?YZYk?qXk?ik?yk?@k?aK?aK?K?yK?iK?qK?YK?k?Y4k?k?qk?ik?yk?@k?aK?aK?K?yK?iK?qK?YK?  X BHa l 5 HYK"!Hy 6 Hx l  b ZGJ :?G(?HW A:*Ha 7!@! Kp(Ok?HZ sYY >?HxHz 5 Hy Ul Ha  @Y BH|6 l H| 6 4J(6s4+`H%5 +`H?H jH7P ZH8X JH9(: JH=0 :H38z :H4@ *@\@H<h@H<`@H<pk?7_ XZ B 2`"4 ``@@@\K?Y@7?k?7k?9k?Ak?I@k?1 k?Q\K>@7?K?9K?Q@7? ˀK>ُ ZK?+`H"K?I __K?9K?A@K?Q2+`H8(+`H?+`H7 Bw`(+`k?)@4:K?)K?+`H9 ZT 4K?9K?IS+`K?Jz V VK?Q] ZK?Js A a+`H<KK?K?1K?A7h" @k?)K?)K?9K?1k?)+`X@H9 PK?)+`H:K?9K?1@Y+`H87h9ς K>k?7_KW?   JK?   JK?  @ J+`@7K?K?@K?K?Y@7?k?oCK_?k? k?  K wH?   K x7?Hz?@Hy? j+`H7K?K? 7 :+`H6 Z+` H? K!ʏ 2+`Hz?K?@49xK>ُ!J+`H"(+`H4U] T`+`@4:K?+`H5Hx? sY W+`X_+`K?JHz? X 8:K?J TT6H3KK?6sh3 K?]+`K?H6 Y XJ+`4:@+`K?@49+`Hz?K?@49@K>@O?k?ok? DK_?KC?k? k?  K H?  @ K H?X!H?4!@7? j+`H8K?K? W :+`H6+` TH8 K!r!ҏ BK?+`H9+` WH5 7J!  :} *K?HS@cRK?H40:!j+`K?H7 sD #+`K?49@ZXK>+`@4:ˀ0K>+`@4:ˀK>+`4:@+`K?@49H+`H?K?@49K>+`H?K?@49hK>ˀXK>+`H"(+`VH4BV`+`@4:0K?H?+`H5 sS _+`WK?KH? ] =+`K?K _K?H:J7VK?h6 ?]4K>K? @O?k?ok? DH?H?k? k?  K H?  @ K 7?H?@H?!+`H5K?K?  +`H7 V+` H8 K w  :b@ *K?K$@K?K0r4K>K? @O?ˀK>+`H?K?@49@K>+`K?49@ZmK>k?oCY@ `@k?K? wK?Y@O?k?7+`H=k?@k?+`H8_K?7K?h9H:K?Y Sh4@7?+`_K+`UKH7CӴ Ǔ27kCӼ Ǔ_7@ 4H 7k@X KCӳ |R4H= B4X 24P} "4R 7k@W K4@6KW\@kK+`BXSk+`4H=   ҳ3U 4K4Bt K6k@S` 4KBҡk  ҕ  V K@4t K6k@T?oKK@!+`_K+`WKH7CӼ Ǔ27kCӵ Ǔ_7@44= 7k@X KY\@kK+`BXk+`4H:S   } aS` K4B K6k@S` 4KBҡkA  ҕ  V K@4t K6k@T?oKK@8+`_K+`WKH7Cҕ ǝ27kCӳ ǝ_7ǽ7k@X KC] dz7k@X RKC ǡ7k@X?KK4@4KU\@k+`_K+`BH8ҹ Ǔ26kBҙ ǝ_6V6 ˀ6k4@k?o4k?4R@k? @4X bK?7Y@k?! @CK?K?!KW6_MXCCK>\@O?k?o+`4H?k?_@4!2@4 r@7? 4@4 4K?K?@4X @7? 4_7? 48K?@K?K?<@CK>\@O?k?o k7 4Ck7A@4 :@4"j+`H4K7A77Y@77a 2K7YK7a@XK7Ap <77Y@77a 2K7YK7a@XK7A \77Y@77a!Z@4P! _77y!CK7yk77777k7Z@k79K79!hCK7YK7aK7@k79K7AK79K7Da7 4K7$ \K7YK7aX@K7A @C\_%77i 4@77q 4(K7i@K7qK7A\K6K7 @O7k?7+`h9+`_h?@7? ˀ0K?Y+`H7K?H<K?Y@7?k?7+`H?8@ K?Y@7?k?ok? k?k?k?!k?)_E D_+`H7H3C+`H48 w6?`+`@4:K>K?)K?!K?K?K? @O?H ?O+`??+`EK?+`?E+`#BHh6hx4+`Hh4$ +`X49h@ZHu 66hh 0Hh ?5hy? Ha4'?Ehg+`H4 6hg44Hd4hb H(+`4$+` Ӹ49p@ZHt <6hf 0Hg 74hx? H|7?hfH@_K>6he44Hb4\h| A+`H@4$+` x49x@ZHs !6bhb 0aHf 84hw? Hv6?he +`4$+`49@ZH} "7h|@ 0He 94h ? Hu6?5hd +`H% 6$hz 0Hd:4hh@? Ht6?hbHu j6hv44k?1Y_}K?17:\!H}+`H:A 6"hy@ 0Ht56hw?H47?hv64PhxǀP4XY_m Hs46hǟh_%YH}4R7hb!! ZK ?ZHfK_ 2 *ZK ?ZH} 4XH}7F7hhZY_4F>K__Hf?H}Hs 2H}47hvY_mHs46dhdtk?7+`H?@h?+`H76h8K?YH<@7?k?7+`H7@h7+`H?Y7h8@H:K?Y@7?k?7+`H7k?@h7+`H?K?7h8+`49+`@H8K?Y@7?7?7?.pJJ^k?: SZk?B65BK?6B7K?@ <77A?779?7?:d7? U _V/@7?k?o7?0Hk?C7?q@7?y+`H74| wK?q xK?y yK? zK>@O?k?/,oW_ @C7?A0H&00 K" :7?A0H&0P0 +`H8؊!BKK@K0H @0H  2c7?A&00 H 27?A'00+`H6؋ *HzHy@Hx`4+`@H:ˀK>+`@H:ˀ`K>0H441 0$ A0 "0$ Z BK>O?@/0,k?/,opk>C:D!k>7>0H&00 П"RЁ7> $00K>6?m@@@@@@1n@x@h@1 1 1 1 1 1 ˀXK>Y K" :7>0H&050 +`H7؋ *KK@K0H +`@H:ˀK>Y+`@H:ˀ`K>Y H 27>'00+`H6؋ *HH@HEK>+`@H:ˀK>Y+`@H:ˀpK>Y11.1N0$ C˃ K>Y0$ C˃K>Y0$ C˃K>Y0$ C˃K>Y0$ C˃K>Y0$ C˃K>Y7?k?7?q@7?y+`H74| wK?q xK?y yK? zK>YK>O>@/0,k?/,/-o`k>CK7?K?? K$? 8Jd!*!+`H8 C" k>7>0H'00 П!Г7>&00K>4W"RK>4؋8"*@0H0H @1H 1nˀK>Y K :7>70H'!00 +`H:؊ *KK@K0H +`@H:ˀK>Y+`@H:ˀK>Y H 27>&0=0+`H:؋ *HH@H0H+`@H:ˀK>Y+`@H:ˀK>YˀK>Y@1H0H7?k?7?q@7?y+`H!4| aK?q bK?y dK? K>YK>O>/0-@/0,k?oCK7?K??  8Jd  r+`H8 C" Hk>7>7'!00ˀ(K>Y$K 27>X'A0@0+`H:؊#KK@K0HK>7?{@@@@@@@@@@@x@h@X@H@8@(@@P@@@@@@@@@x@h@X@H@8@(@ @@@@@@@@@p@x@h@X@H@8@(@@0@ˀ0K>Y+`@H:ˀK>Y+`@H:ˀK>Y@@07?!,@K?!K?)k?qB ˃xK>Y@@7?@@7?@@7?@@x7?@@X7?@@87?@@7?@@7?k?0H7?q@7?y+`H=4| }K?q tK?y uK? vK>Y@O>k?oCK??  @ K4K??   K5K??   K6K??"!JK7?!2!"K8?! +`H9+`H:= k?+`@49@+`@H:7?qk?0H7?a@7?i+`H94| yK?a zK?i }K?q sK>@O?ˀK>k?7K?? +`H7K jKK@K+`H:h+`0H@49`4K?Y@7?ˀK?Yk?7@@ 4 4 k?@@ 4 @K?K?Y\@7?@  Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programeditbp_stateeditor_filenoname.plbp_stateversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%u%u%u%u%u%u%u%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifytrailing in unifytrailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d trailing in unifytrailing in unifyunexpected push_variabletrailing in unifyexecutionexecutionexecutiontrailing in unifytrailing in unifytrailing in unifytrailing in unifyexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETexecutionexecutionexecutionEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2trailing in unifyerror in bb_list/2value trailingUnexpected: ISO I/O oprationUnexpected: blackboard operationexpected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loading%s unable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1rbhdef in seewbhset in tellwbhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arity%ldboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingvalue_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityvalue trailingchange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYS(75%)Stamp found %d, expected %d hash op on protected objecthtable full in hash op(75%)arg 1 of hash op should be nonvararg 2 of hash op should be nonvarStamp found %d, expected %d hash op on protected objecthtable full in hash opunsafe data in def/3 or set/3(75%)def/3 expected before set/3, rm/2unsafe data in def/3 or set/3string buffer (-i option) exceeded or infinite term%ld%ld%ld%ld%sbad arg in arithmetic operation%ld%-se%-ld %fBinProlog3.45/bin/bp.o.pc.linux100644 764 764 226200 5764335717 15451 0ustar javierjavierd80x :PD$Ð Ã=T$RT$Rh Prolog execution %s(%ld). CPU time = %ld.%lds %s VS$ $U+RPVShQ\$S4ShY V haltedD$Phwarning: *** %s *** T$Rhh fatal error: *** %s *** T$Rh8hju_%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? T$D$ =u&+H4x Ph'RhЃu&Phh 6P PhhL$Q1Ð=t jÐD$P*** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s VSD$\$L$ +L=+t$Vt)PQT Rhh+[^ÐVSt$ \$PjT$RPjSvPjVjPU[^ÐS\$PT$ PjT$R)PjSP[[].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatVS\$ t$jhJjh9jh( jh jhjhjhjh< jh@jhDjhHjhL jhuPjhdTjhSXjh B\ jh,.`jh3$jh7 (jh;, jh?jhBjhEjhH jhK0jhT4jh\~8jhfmdtp jhk7hPRdRTRPRdRXR(jhwl5[^editeditor_programbp_statenoname.pleditor_fileversionS1h"h'h6 t:h?hIh6 thYhUh6 ؉[ÐjD$uP+ÐjD$uP Ðj D$uPÐjD$uPÐS\$uP19}A9|[ÐT$RPÐWVS\$t$|$D$ 3{9}1[^_ÐuuPCC)ЉCKKKK KKCL$K {%[^_codeboardnot enough common memoryVSt$ jh6 jRV$D uCbR>x|uCjh; hRPuChRuCjj@uC1dt 7uthA 1[^Ð[^add_engine: engine table fullSL$9rhX 1[Ð\$  \$CX[ÐD$=}=?~?choicetrailheapmessagesadd_engine failednot enough engine memoryWVSt$|$1jh hT$$RFlPujh hT$(RFHPuCjh W.PWF$PuCjh" jRPuCT$$RT$$RVt uh+ 1[^_Ðt h= ݐ[^_ÐT$9r9uÐ9s1del_engine: engine notfoundD$9r9t(9sh~ S1ÐÐUWVSl$ j$jÃu1[^_]Ðd$d$1ߋt$ $=~T$RjUT$(RT$(RSt[^_]Ð1[^_]ÐS\$St>S|RESXRuJ!ӉH!9t?<tCtPWXtSH!9t <uΡ<=t=t=u <WZ 9~ h0[^_Ð9u h6[^_ÐS\$19v/ 8 v8t B9w[%s/%ldarity limit exceededVSt$ \$v SVhhh1ۃV8   Ѓ[^ÐVS\$ t$9s )ȉڋ)9r[^ÐD$PP QÐS\$S Sjzjj(j![no definition for: main/1SDRPRpÃu h [integer expected in halt/1D$PЃth^t P1D$trailing in unifyunifyvalue trailingUWVSL$T$$J׃L$J9|$T$u#9t\$u9\$u uu9u9l$0uT9vPL$$9q T$ BP9B\whL$$QjP3j <T$ BP0BPut+ 3L$$9YT$ BP9B\whL$$QjPj T$ BPBPbux؃utL$T$$9rL$ AP9A\whT$$RjPCj LL$ AP0AP9t 1[^_]Ð؃T$ 9whL$$QjWj T$$9jv>L$ AP9A\whT$$RjPjL$ AP0APUPAPL$MKt&D$Ku9|$$s[^_]*** bad instruction: [%lu] *** D$%Phhjundefined in EXECVSt$ VPR聗ÃuT$RhVd [^ÐWVSt$N|~X~PV4 Z =@z<<uY~Py~9VQ|$WSRZ%[^_ÐT$RFPpÐUWVSt$l$\$$|$(L$N @N <Q PQ} 2 ukOPKO WSPUV[^_]load_engine: bad engineUWVS|$Wuhnq1[^_]Ð_|OXOPw4 L$N @N <Q PQ輕¸ 0 ukOPKO L$H L$Ho,_tP[^_]ÐD$PRPR@HP ÐS\$St.S4 SKtQ@P[,SRo[Ð1[ÐS\$u@[ÐSzu1[Ð@[answer: bad engine typeVST$ L$\$t$w~$ ! J,Ztp[^Ë @ΐ Rh+ Pj1[^*** suspend_engine: %ld bad engine type %d VSL$ \$t&PQh!hj~1[^ÐY,t$qtt$p[^ÐUWVS|$@9r1[^_]Ð5 u95s݋51Qtu#SCuu!95u t15Ou[^_]unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationXUWVSl$tD$dl$`}H$`$,@ 'P'p'' ,-@-'-(()@). .0...990::: /`///@;<3)6*1*6@+4+7+0P*`6*);`;8@=-0-P7d77788`8t8:;ApAP?kCCDPDDD`EE0GHI@KLpMMO`OO`PP`QQ`RSSPTTU0VVW XPXXXXYYZ [[0\\_`_`e\]`]]]]`^0_Papdcdpeab`b0c`c@k@k@k@k@k@k@k@k@kPkPkPkh@ffgggg hiij jjjpk0l=@>??AAA`BBB C0CPC`C|$dt)|$\L$dT$l L$dT$pD$p|$\L$l|$dtID$xP$RL$lQ|$hD$xT$hPOD$l|$\CD$d놐|$\L$lL$p|$\T$l4t 'ދ9uD$dL$x9qvCMT$p |$\D$lT$p뽉 D$l  DT$pD$pL$ L$lD$:T$xR$Q D$dl$dT$tL$dR|$hL$xD$h QqD$l|$\fB D$l  } L$l |$dt)T$dD$l L$pT$l D$pƃ L$l4 p-|$dtYD$xP$RL$lQD$hT$xL$hRmD$l|$\? L$dT$l 3T$l T$p փ T$l4L$pqL$pW|$dtID$xP$RL$lQD$hT$xL$hRD$l|$\?`T$l T$p T$l T$pJT$p|$dtiL$dT$l D$xP$RL$lL$dD$dP |$hl$hT$xL$hRD$l|$\X>D$dSL$pT$l D$p L$l HR|$dD$d0D$dt)ދug9uu^UL$x9qD$|XP9X\wh$RjS;j DL$|IP1D$|@P9]>EL$pL$p|$\T$l4L$pUD$pD$pth">|$\L$l4t #ދug9uu^ET$x9r L$|YP9Y\wh$PjS+j 4T$|RP2L$|AP9]>|$\MT$l T$`BD$pOL$`L$xD$lpt*ދu9uK\$xmtT$|RUŃML$xL$`T$pD$|9P8|h"$QjD$|PUT$|RL$xQ$PX$|$p<D$p[^_]XÐmL$xL$`T$pD$|9P8w(h"$QjD$|PxT$lrt*ދu 9uSmUŃ~:t$dmD$xD$`L$pT$|9J8L$lqtދu 9uwED$9XtT$zVD$l V t$dl$ |$\L$l4t 'ދ9uD$dD$x9pvT$xR$Q|$dD$tT$dPVxD$l|$\%|$\L$l4D$X D$XtAD$xP$R|$dL$tD$d QD$dPD$l|$\5$|$\D$XL$lT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQV$|$p]$t>T$xR$Q|$dD$tT$dPV(D$l|$\f#|$\L$l4MD$X) D$XtAD$xP$R|$dL$tD$d QD$dPD$l|$\A#|$\D$XL$lT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVdž$|$p #t>T$xR$Q|$dD$tT$dPVD$l|$\r"|$\L$l4D$X D$XtPD$xP$R|$dL$tD$d QD$dPVD$l|$\!|$\D$XL$liT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVg$|$p!t>T$xR$Q|$dD$tT$dPVxD$l|$\!|$\L$l4t$X\$\L$XtGD$xP$R|$dL$tD$d QD$dPD$l|$\+ |$\D$XL$l T$lJu1Bu)T$|Rh#L$tIQB$( T$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVǃ$|$p t>T$xR$Q|$dD$tT$dPVD$l|$\r|$\L$l4t$X\$\ـL$XtGD$xP$R|$dL$tD$d QD$dPMD$l|$\|$\D$XL$lit$pT$lRRL$pIQ%D$dT$dRV蒂$|$pt)D$xP$R|$dL$tD$d QV|$\T$l4tHL$xQ$P|$dT$tL$dRcD$hd$hL$hL$hQ+;D$\|$€L$l\PD$`|$\t'RD$\FC9CwS輱tPT$X@D$Xt`L$xQ$P|$dT$tL$dRL$dL$hL$hD$hPFD$l|$\|$L$XL$\D$l OT$lZكtD$|Ph,#L=w9ww"%PWGL$lIL$XD$lXL$ڃ D$ ȃt@ST$\R|$dL$dQD$|PD$l|$\z9\$XaaD$l@D$XT$lZD$كT$ ƒt@SL$\Q|$dD$dPT$|RmD$l|$\9\$XT$lRT$XL$lYT$؃L$ уt@SD$\P|$dT$dRL$|Q~D$l|$\6z9\$XaL$lIL$XD$lXL$ڃ D$ ȃt@ST$\R|$dL$dQD$|Pm~D$l|$\`9\$XD$l@D$XT$lZD$كT$ ƒt@SL$\Q|$dD$dPT$|R}D$l|$\zz9\$XaT$lRT$XL$lYT$؃L$ уt@SD$\P|$dT$dRL$|Qm}D$l|$\9\$XGL$lAQ ȃuT$lJL$\ZD$\T$Xt,L$xQ$P|$dT$tL$dRL$dQ|$\L$XT$l ID$lPH ƒL$lAYD$\ D$XtET$xR$Q|$dD$tT$dPT$dR{D$l|$\|$\T$XD$lL$lAQ ȃ%T$lJ#JL$XtBD$xP$R|$dL$tD$d QD$dPD$l|$\r|$\D$XL$lT$lJB уD$lP PT$Xt2L$xQ$P|$dT$tL$dRL$dQ(|$\L$XT$l iD$lPH ƒL$lA3A$ D$XtDT$xR$Q|$dD$tT$dPT$dRD$l|$\|$\T$XD$lL$lAQ ȃUT$lJ JL$XtPD$xP$R|$dL$tD$d QD$dPD$l|$\D|$\D$XL$lT$lT$\RL$pL$`D$`PDD$`T$`tEL$xQ$P|$dT$tL$dRS_D$l|$\|$\D$l}T$lZكtD$|PhF#\$XL$lqtu*T$|Rhf#Sz$) |$X~ 9D$Xv.D$|Ph#S>$* L$X4t1D$xP$R|$dL$tD$d QV|$\T$l4]L$xQ$PT$tR)WD$h |$\""D$xP$RL$tQXD$h |$\j$RL$tQ0fD$h |$\ T$lJj$PT$tRhD$h |$\D$l@tPtxtL$lID$lPL$lAtAtytT$lRL$lAT$lRRL$pIQ[Ã9tDT$xR$Q|$dD$tT$dPS~D$l|$\|$\L$lj$PT$tRbà j|$\T$lPL$|QD$pP17ÃtLL$xQ$P|$dT$tL$dRS趿D$l|$\|$\D$lT$xR$QD$tPT$|R4S$|$ptGD$xP$R|$dL$tD$d QD$xP D$l|$\I|$\L$l+t$pT$|RL$pQVGD$| |$ptBT$xR$Q|$dD$tT$dPV|D$l|$\|$\L$l4t$pD$|PT$pRVHD$| |$pet2D$xP$R|$dL$tD$d QV|$\T$l4 ÀtHL$xQ$P|$dT$tL$dRS肽D$l|$\ |$\D$lT$|RL$pQ=D$d|$\&jT$|RL$pQ16D$d|$\:T$lJupt}|$\T$lL$|QD$pP6D$d|$\ L$lAD$\P|:T$|RL$pQA9D$d|$\&jT$lR9ÃtIL$xQ$P|$dT$tL$dRSӻD$l|$\ |$\D$lT$lJuDZ؃$  SL$tQiÃW ST$pL$|QD$p@PmÃtAT$xR$Q|$dD$tT$dPSD$l|$\9 |$\L$lD$|PT$pR\D$d|$\ t$pD$|PT$pRVAD$| |$p t2D$xP$R|$dL$tD$d QV, |$\T$l4mL$|QD$pPT$xRLID$| |$p5 5D$lXt؃T$lJuOD$|P$R8RL$xQS$P,Fƃuh# \$pt$pXT$|R$Q$PS$REƃi D$|tFT$xR$Q|$dD$tT$dPSD$l|$\z |$\L$lt$pD$|PT$pRVCD$| |$pt2D$xP$R|$dL$tD$d QV< |$\T$l4}t$pL$|QD$pPV\JD$| |$p tBL$xQ$P|$dT$tL$dRV̷D$l|$\ |$\D$l4t?T$xR$Q|$dD$tT$dPSYD$l|$\|$\L$l}0T$lRL$|YP9Y\wh$PjSߟj T$|RP2L$|APD$xP$RL$tQID$h |$\+$ÀtDT$xR$Q|$dD$tT$dPSND$l|$\|$\L$lmt$pD$lPV}pD$x|$ptGL$xQ$P|$dT$tL$dRVD$l|$\|$\D$l4t$pT$lRVmD$x|$pt'D$xP$R|$dL$tD$d QV!|$\T$l4mt$pL$|QD$pPVrD$| |$ptBL$xQ$P|$dT$tL$dRV輴D$l|$\|$\D$l4T$|RL$pQD$xPXsD$h |$\ t$pL$|QD$pPVQD$| |$puh#tHT$xR$Q|$dD$tT$dPVD$l|$\0|$\L$l4 ÀtKT$xR$Q|$dD$tT$dPSuD$l|$\|$\L$lD$|PT$pR$Ã_|$\T$lEL$|QD$pPa$ÃtLL$xQ$P|$dT$tL$dRS覲D$l|$\|$\D$l齿T$|RL$pQ$D$d|$\F銿T$|RL$pQ1%D$d|$\ZT$|RL$pQ%D$d|$\*tAT$xR$Q|$dD$tT$dPS蛱D$l|$\پ5|$\L$l齾D$lpL$x9qvID$|xP9x\wh$RjWjL$|IPD$|@PVPL$|APD$l@;T$lJL$\QD$pPT$`L$`QD$tPT$dL$dQ$P讣ÃBCtHL$xQ$P|$dT$tL$dRSbD$l|$\|$\D$l}T$lJIL$\Q辣D$`|$\GT$lRVD$`|$\t##D$lPJT$\R螵ƃuL$x)t(D$xP$R|$dL$tD$d QVb|$\T$l4魼L$lAL$lAD$XPD$`|$\bL$lYSU$PT$|R$Q:D$p|$\D$|@,D$pT$|RtT$xL$|ih#h#&D$|PU$RL$xQ$Pp$|$puT$x*錸L$lYtQD$xP$R|$dL$tD$d QS D$l|$\ID$x(6|$\T$lL$lQD$tPAD$dD$d[^_]XÐUzʷhF1҃B~@?@@ @3@@@@ @@@A@@@@@@@@@1@@@@"@&@*@ @$@(@,@5@6@7@8@9@:@;@<ÐUWVSt$1-%D$tFu1[^_]ÐW跑t DЉFߐT$*|$t%[^_]ÐS\$ D$PSMtT$ [ÐT$RS[ÐSL$Q %u,B%u|$ t% ZY[Ð1[expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedUWVSt$,6wKf?N=J==%@,u"E%@ t%@L$Qh4oP2 E9^u2P PhJoh;@uPhRo%Phjoh GE9{hwoh؎)~W PQtCÃuG% AL$Qhyo% R6 %0wB=t)w$=tY% %  % $%% %  % $% 1@F% 1>% .jSt% % ^YjVLNQ PQAá@PNQ PQ@%  u4L$9qW[^_]bad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_opUWVS|$l$$\$(S% D$|$5t$$@t@z3|{}yy```y`````````` ````````````````````y|``````````m` ```````````````````````````````````````````````````````````````````````````````````````````` ``````````````w yUt$$VPsVW5PV;ƒ9@t sp%9@C@%ttCQ r2C9vC`C`H% 3hss1[^_]Ð=t1[^_]Ð=S% C CC8CS% %9=u8=uS% S  KUt$$Vhsh!hs71[^_]Ðs5Co =v hsUt$$VUƒt$ >_t$PsVR5Vb925V5PV$; =l=LS  S  I= =CSB%ufB% +BCS  =SB%B% *BB% BCS  =SB%B% B}= =CSB%ufB% #BCS  =SB%B% "BB% 'BCS  =SB%B% &B}= D$S% == SB%B% -BCS  =SB% uB% ,B3uB% 7BB% 8BdB% !BCS  =CSB% uB% B!3uB% 5B B% 6B=|=SB%B% %BCS  =~SB% uB% $B\3uB% 9B:(B% :BB% )BCS  =SB% uB% (B3uB% ;BB% a1[^_]Ð|$ 9_8v׋t$3y{ыu9u9T$t͋t$v3M[^_]bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2UWVSL$D$ |$$@RL$h1ۋ0t$xt*Wht$V^ [^_]Ð Ћu49u.C9O8p1t Ћu9u9T$t́~%h6{]1[^_]ÐtЃt!tWhZR?t Ћu 9utЃutWhRЃu  ‹t$1WhPh*WjQr^1[^_]Ð[^_]ÐUWVST$L$Yi؃t1[^_]Ð%ÁIuYL$tΉ%B9}9z@9|t"|$BJ*[^_]term_append/3UWVS\$D$xht|$T$D$t1[^_]ÐtMȃuՉL$=wT$ ‰tt 8utt (uD\T$ 9Z8w)hGT$$RjS\1[^_]Ð[^_]value_trailing UWVS\$ l$0\$uPt$t$9\$,sL1[^_] ÐhzUj|$W\1[^_] ÐhzUjt$Vސ1]|$$;L$ыu9u9L$t$Ѓtut$9L$(w9s|$u+t$9u\.Vt$t$|$71|$t$9u\Vt$9\$, t < <uыu9uЃut9L$(w9st D$9\$t$9t$sD$|$|$9|$r[^_] ÐWVSL$t$^,ڋ~8tȃtu &VWSQRƒu 1[^_ÐV,[^_bad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integerVSL$ \$t$F`F`HCuЃtVhR2X [^Ð%V` BSЃtVh^`tL F<+C KK [^answer space overflow in findall_store_heapcopy_term overflow in findall_store_heapWVS|$t$V` B 9r&hVjQhX1[^_ÐR_tӋu9uAYt$ЃtuLVF`@ PQWQu!hV1[^_Ð F`[^_ÐWVS\$L$A`Q`RPp@Q`RA`|$WQP[Sjnt[^_Ð1[^_ÐWVSt$|$D$Z% Љt8uTWO[^_bad continuationcompound continuation expectedUWVSL$D$t$XtVhSLU [^_]ÐЃuu VhӐƋ= 9N ‰t<<(u[^_]bad argument for dcg_streamvalue trailingUWVSD$t$T$X؃E=v1uVh۬S^T f9Bv@u9Zv6FP9F\whVjPTUj]SFPFP AHFPЉ[^_]ÐUWVS\$|$$0.L$(9qv=u9iv0GP9G\whWjPTjRGP(GPFpGP؋\$\$L$(QWUPkt/0T$T$L$ [^_]Ð1[^_]setarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityUWVSl$|$]؃tWhS[R [^_]Ðut tuWhVƐu Wh밐~ 9vWh뚐4L$9qv<u9Yv2GP9G\whWjPRjPGPGPNHGPm.[^_]change_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafeUWVS|$t$l$WЃt#VhRwP [^_]ÐOt#ȃtuVh@Q뽐u Vhh뤐~ 9vVh뎐9Ms Vhs Wu9UsVhX[^_]ÐT$PT$P Ð%ld bytes, %s!!! hashing table (almost) fullT$R@PhhMh&Nj{NÐ QpU QU‰1=t %(75%)UWVS|$l$ IL$!É!9t>[|t.L$[9<u9ltC\$!9t [|u؋[4|2ui9~ h̲<0l0L$ L0L$$ [^_]Ð1[^_]hdef/3 required before using hset/3UWVS|$l$K!ډ!؉D$9t8 &R9<u9ltB!9T$t R|u؋ R9<u'9lu!t$ t[^_]ÐhγL1[^_]ÐUWVSl$|$H!Ë[9,u%9|uD[^_]ÐD[^_]ÐH!Ɖ‹ C!Ӎ[9,u9|t9t|u1[^_]culprit->hindexUWVSl$T$ꡔH!I\$9u 9lu\$ [^_]Ð\$I|u\$ 1[^_]ÐH!ljƋT$A!I\$9u9lt9u(hJ[^_]Ð|u\$ 1[^_]ÐWVS\$\$ u]19 5=1Ґ\$ 81v<tD A9 w[^_Ð19 vF51\$ 81v#<t DD A9 w[^_COPY_KEYS UWVS\$ T$$Bt1[^_] ÐJL$RЃuT$19-1L$8L|8|w%P98D89D$w]t8t ֋u9uуL$u |$<9D$-9!|$L$(9Y8wh+L$,QjSuJj ~H8Ѓu-    9  с    T8Ѓu+    7  с      3 E9-.  [^_] ÐD$9$t9(t9,u4Ð9t9u0Ð9t9 u8Ð1ÐST$L$Ѓu=u6ȃu,x%=\$ SD[Ð1[Ð UWVS|$ \$(L$,L$St$(VW}D$ |$u1[^_] ÐD$PL$QW tكu3D$@\t$$VWL$Q 5Ń9~ h̲ L$I<t$t\L$t$ SL$(QWt$VNSU `QW? tSWU5`V)[^_] ÐT$BtBtztBBBtBtztBBBtBtztBBPJQJQRR6Stamp found %d, expected %d hash op on protected objecthtable full in hash opUWVSt$$l$(\$,\$FtFt~tFFFtFt~tFFD$P~W^SiD$ |$uk=|$L$\$89tTID9t@9PD$PhBhBUh_vVSD[^_]Ð|$u)Uh{vV&D [^_]Ð|$ue9~ h̲u |$^vtT\$D$@D[^_]arg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3UWVS\$(L$0L${|$CtCt{tCCCtCt{tCCCu"h,$B1[^_]ÐCu hN֐D$ PsVKQ.Ń ut=|$t$ t$L$8 >tYvD9tE>PD$ PhBhw@|$[^_Ð P@t9$t9,t<vu1[^_ÐWVS\$t$=;BtBu Au:_u:t2A u:_uu=>[^_Ð1[^_ÐVSL$ \$51BtBuBt0t(Btu53[^Ð 1[^ÐL$BtBu8uÐ1ÐWVS|$t$j)u4j,{t$VÃtVWÃ1ۉ[^_ÐVSt$j]#j|t:1ۍD$ Ptj]؅tcT$ [j,tB1ۍD$ PFtD$Pe؅tT$RT$R1ۉ[^ÐUWVS$,j[St|j]Et Mb1$$Pt$ P,$ Q$(Q!E $V$ SVSVSj($PǃD$$L$D$PD$PǃtgL$Q$Q$$QE 9T$|<LB9T$}$j$Q$$QiE 1[^_]ÐT$ T$P1t$Ð1ÐD$ PL$Qstring buffer (-i option) exceeded or infinite term%ldUWVS\$tˋ u9u|+x9~hf-8[^_]ÐW|$9O4w^|_|+G4Phh6 |A|u |[^_]Ð9 wh|_||a|+PhhM6 |A|u |[^_]Ð|$9m|_||b|+Phh5 |A|u |[^_]ÐȃuFPhh}5 |A|u |[^_]Ðu9  |A|u |[^_]Ð9 |[||$WStVˋ uD9u>|,||$WSDt ˋ u9u9 t9 t||||$WS|]|[^_]Ð 4|F|u ||(|9s4ōS|$W:WT$|,|T$F9rҋ|$WPT|)|[^_]Ðx|T$RT$R||xÐx|T$RT$R||jxRJ%sS\$x|T$ RT$ R||xRhS2[ÐUWVSt$|$ l$$L$\$ȃڃ ЍBA][^_]ÐSD$HT$JL$Ià ډT$ L$D$[bad arg in arithmetic operation S\$D$PD$ PD$Pt$(t$(,lT$ ST$ST$S ؃[ Ð SL$ȃuulЃu <P$N9luY SYSIQ $؋SV21[ ÐL$ȃuu\Ѓu <P$N9luY SYSIQ|$C l$1EuEuB[ ÐVS\$(L$,L$t$0uuNЃu P$L9luN QNQvVw "؋ Q01[^Ðt$4u uЃu P$29luN QNQvV|$ l$D$$ ,<Ll|1Euډ[^Ð1Eu1uΐ1È@s빐E@%![^ÐD@ސ1[^ÐD$PD$ PD$(P$6 l L$4KL$0KL$,K ؃[^Ð WVS\$0D$4PHptЃt tЃut 1[^_ Ð D$ȃuu\Ѓu <P$\$X9lu(y WyWIQg\$$ .=W-1[^_ ÐȃuűЃu <P$(9luy WyWIQ D$lt*p$t$$t$$",/$ ,\$ t$t$+|$ D$ PD$(PD$0P$=l;|$<{|$8{|$4{ ؃[^_ ÐVS\$$D$(PHtЃt tЃu t1[^Ð D$ȃuuLЃu \P$L9luq VqVIQW "5V+1[^ÐD$1?$|, L$)|$L$ L$l$<$XZl$D$ [^Ð$Y)$I)~E@tp؃$')\E@tP؃$)<$(.$($($(ٍD$ PD$PD$P$5l3t$(st$$st$ s ؃[^Ð%ld%-se%-ld VS\$L$AtAtytAAAtAtytAAAtAtytAAAuAuyu At1[^ ÐAPA PAPh5xV'j5xV'D$$PD$,PD$4P$5l3t$@st$ C bo $ ) Mo Zfr{o o o o o o o o  o  %o ,16o =BGo NSXo bglo sx}o o o o o o o o  o o #(-o 7<Ao HMRo Y^co joto yo ~o o o o o o o o o o o o o o o o o o din[ [ [ 1[ W  i q     o o   o [ o o  o  7  o o  o o p      5 U o [ o u o o o o  o o [ d _ 8@DHLPTX\`dhlptx|  x   x   "x :V\  bx z  x   x &,  2x Zfl  rx   x   R 5:?q Dc  !&q +Mo Qw Wo [v eo yo o o FM RY fk p yo    % * i       !(t   f   o o o     o '/: Ae      |o  o  o  o o o o  3o :o @NS  %29  )o /BHo o &o -o 3o o o u          !!]!b! g! n!!o !o !o "o "o \"o j"o R$`$d$h$l$p$t$x$|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %%%%% %$%(%,%0%4%8%<%@%D%H%L%P%T%X%\%`%d%h%l%p%t%x%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&& &&&&& &$&(&,&0&4&8&<&@&D&H&L&P&T&X&\&`&d&h&l&p&t&x&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''' '''H(X(_(,,,1----.9//000H2X2_233355589::=o ==o >o >>o >o /?U?o [?y??o ?o ????C@@o qAvAAAA6BBBBvC Co Co CCo CCCo C Co C Eo E1FGH1J]KjKKMM M Mo MP No N 2No @N{ MNo O"Oo ;O O+PP+QQ+RMV\Vo V,W2WhWnWX3X`XXo X'Y:Yo YYZ0[[\\]o 2]o k]]]]^^;_p__``n```aaabo bo bbcCcaco ico c{ddeeeAfo f gggg!hhhhNiiAkQkVkkX vl{l l l l l l l l l l l l l l m m m m &m /m 8m Am Jm Sm \m em nm wm m m m m m m m m m m m m m Ena no po po qpzpp pp p ppp q qq $q 6qo Io  !&+05RWv{ { { 2:o H{ jo w~o o чևۇo 27 < hm r o q o   o !3o < \ ‹IO{ Z &: C P? L $(,048<@Q[o ao   " .A QX ΐRW ȑ ё o q o b ot :@Z p`f o o o Ôo ɔԔo ۔ o &5; So \o bno o o o o ӕo ٕo  o 5; Oo Xo ^jo o $*No fko o ŗʗo Qo Wo _o fo luo o o o o o o o ǘo ͘ ֘o ܘo o o o o o o o o  (o .o 4o :o Bo H QV o j o } әo ߙq  f o o  EKo Qq Vo z o o o o Ro po ֠=o z"أ"RajHUΦtzktZ`o HNao o o o 2o Vbo KQ/5pұo J V[ ` ejqV  V  V FV \do vV   &V ^V ŴдV  V vV V { V V ض V  V ѷo ;o ZgnvV o o o θo V o o &o >o Xo lxo o o o o ƹo ιo չo o o o ׺V * 1?V ^ c o o (o  !V .o @E J PY} ƽԽV V  V B \V io { ȿV o LoV  V   V o *V Y|  *2FN lv  07@ NSaj v} o )xo %P o o o o .38q =Eo Po Zo vV }o o o o V q o o o o o o o "'q ,5o @o Jo uzq o o o o o o o o o Eo No o o o o o o o o o o o &o /o Qo Zo vo |o o o o o o o o o o o o o $o *0 o o .o o &so o o >Do J J .o o >Dp|  $(,048<@SU  J    # 3 Zo N ^do jq ro xb o o o G N^ r0 +@8BR`]@m}   `P 00"04pl<plKpl]njnwo`'P10;EL[mDrDDDt$t <<'<9H<P<_<q<x<<` `  "D.6>FS\dP lu}`0t@  (@1>KW_pxL@ tp`!2?0GT $Xk@tP ` Ps@!l `'7<G!Z@ewP d @Dn@&6?JW^k|p00`pl 0  #  2 : C I P DW _ Df p w   `       $  L    Ļ  @$ 01 Բ7 B G dM S ^ i u { <  p 0        0 @  @  Э   02 : @ E P X sru.ogcc2_compiled.___gnu_compiled_c_hdef_string_hdef_int_make_constants_hdefaults_make_var_array_var_array_init_make_stack_add_engine_heap_safe_margin_del_engine_mes.74_mes.77_root_wamssym.ogcc2_compiled.___gnu_compiled_c_insert_lex_atomnosengine.ogcc2_compiled.___gnu_compiled_csload.ogcc2_compiled.___gnu_compiled_c_get_one_int_link_switch_link_code_currpred_last_badcode_prev_len_prev_prev_len_skip_header_loadoperator_ii_load_file_load_instr_array_load_selfbuiltins.ogcc2_compiled.___gnu_compiled_c_ocompare_name2buf_list2bufdict.ogcc2_compiled.___gnu_compiled_cio.ogcc2_compiled.___gnu_compiled_c_make_funcell_make_term_match_sym_cursor_match_var_match_int_match_char_match_args_match_list_elements_ibuf.32_outfloat.ogcc2_compiled.___gnu_compiled_c_arith_err_mesdebug.ogcc2_compiled.___gnu_compiled_cmain.ogcc2_compiled.___gnu_compiled_c_log_fout_op_class_lval_max_interp_from_feof_can_recover_optind_warnmes_init_common_mem_floor_htable_add_instr_new_builtin_match_term_access_calloc_getenv_call_engine_unix_cd_getopt_answer_isdigit_strtod_c_interface___srandom_make_float_strcmp_input_float_link_halt_symcat_strcpy_run_bp_swrite_see_tell_destroy_engine_g_new_func_sprintf_seen_told_change_arg_functor_overflow_by__IO_stdout___IO_stdin__sscanf_make_char_array_sread0___underflow_float_compare_system_make_hentry__IO_stderr__stats0_strip_cont0_term2list_user_bp_older_file_signal_make_op_cputime_init_orig_wam_term_append_make_byte_array_write_float_setarg_see_tell_at_bp_seeing_telling_at_init_bp_is_engine_init_engine_mem_older_file0___random_insert_op_wam_bp_local_error___ctype_b_ungetc_suspend_engine_list2term_float_fun_make_atomtable_load_engine0_fprintf_bp_prolog_call_double_to_ints_multitask_engines_start_wam_copy_from_engine_findall_store_heap_valid_op_exec_link_hindex_quiet_clearerr_malloc_end_profiler_newatom_sread_sfull_init_c_make_symtable_input_fun_findall_lift_heap_name2list_ints_to_double_atombak_atomtable_init_random_unify_load_engine_heap_or_bp_halt_stat_left_interp_lextable_get_cmd_line_options_start_profiler_times_unwind_trail_stat_shell_1_ftell_dcg_tell_init_instr_len_det_append0_apply_instr_len_create_engine_newlex_opcount_sout_fseek_hfull_hcount_hlist_float_op_hinit_unix_argv_restart_orig_fatal_error_bp_halt_bp_heap_top_bp_exit_stat_used_tan_sin_set___overflow_float_fun2_pow_startup_mes_atan_op0_asin_findall_load_heap_unix_access_hdef_unix_kill_if0_hbak_hget_atomstamp_bad_instr_ask_engine_exit_main_free_unix_getenv_bp_version_fflush_def_kill_fopen_chdir_copy_term_hset_quietmes_compare_fclose_load_kernel_cos_dcg_connect___main_bp_cons_default_start_point_hstamp_acos_exp_init_code_optargBinProlog3.45/bin/bp.o.r6000.ibm100644 764 764 337700 5764223131 15220 0ustar javierjavier/&W`~ZH `1L.pad.text, .pad.data`Pf@.bss``.pad L.loader R L!|0a8XKA8<`Q0c||.pT|`X0!P}N AHcputimeb T:`N @quiet!a8e |,bH80c@@ 8KAAH0!@}N 0!@N APquietmes|!a8Tc:|.08gKAa8Ky8`H0!@}N A local_error8`,M KN @ link_halt|!HKKH0!@}N A$ can_recover|! HT8|T:,||@00e@9 T:00|8KAKH0!@}N Ax overflow_by!|8X<8H5Oa@a88H!OaDa<8H O8a@DHOX0!P}N At hdef_string|!8;8HOa1T"X\3B321 33f:`330(T:A|0.|ƈ|N t808K݀A,8, /A(~f00L@BA,398u8Hx2H`t80K , 0g@A$000 0dKA8`K둀`|T:@~0.\a\Htt80TK驀A,0TAXTP*TKLt80XKuA,0XA$TP*TKa\0!}N AXget_cmd_line_options|d !8088-KA8XL}0!PN AH bp_versionb |d!3#`3 3333c@3CD3HKeh8DA8a<8889988|K=A8|h0!`}N A startup_mes|!a8bd0 <3 Kɐ~a8(88L g9 |c b0@8@(k|H.,A|I.l 0cl|@@1)gL |c 00@KN @atombak|;(!a8$@,0`@80h8KཀA0~pKO;a8K T`P*T>`SX0!P}N A|new_func|8b(,0`@T<|!T:8K!A0KO8`KOXL}0!PN Alhfull|!KO0~K)O4,(8,e8`A A8`X0!P}N Axhinit|;;bB(cZ|1c|X8|}g 8|8@!;;A0W$<>| T:}/A|.0|@0@|@A1}y`8|8@W,<}`U:A}.1/ A}.|@A}y@8W,<}`|8@U:K}.|@AX1}y`8|8@W,<}`K0W$<>| T:|/HW$<| T:|/@t|dp|cp|c | @b,0c0K>.~4|{8`|00ɮh0!`}N @0!`8`N Ahdef|(| 1G}K8|X}_08|@!A0U`<|T:|8,A| 8.1 @1,@| @A0}K08|@Uf<|0T:A|8.0 ,Al|8.@A}K8Uf<|0|@T:K|8.| @A\0}K08|@Uf<|0K0U`<| T:|8.@H$|8.@HUf<|0T:|8.@@,|8| @@L|`0!P8`N ,0f8KO8`XL}0!PN Ahset01e| }`(8T<|(T:|(.|@(|(@$| @@eN |0eN |1 }`H8}j(8T <|H0T:} 0.|P@@}`(800T <@}0.| @A}H1 A,|0.|P@,}`H8U:T (;( @h48@f0|8`X@@ |.}(,A }).|`@0 3 @|0cX@K49@f8|c9_|X@0"(8@8g|P.,A( 0 Q.g).gA.`@0 1 1J f@|c 0|X@KN @hbak!Ā|}&T(;#;E!|p8`@|T>T(|p@t: (@$,.2Elb4:;;q0:||@*AĀ.,AWA8P|.|(@@|.TF>~@A88|(@8yH9]@D]UE~P@LBA0;]UE|P@H@;]UE|P@@UF*UEF>|@@A.A|(@NƳA88|(@8y88AKO8` KaO}.U(UU`8U>@  0H0Y ~}.9KU(UU`U>@ e 0HE0 3'21~@@3 2 3{ @|K0y0!} |!N Ah!d0!N X`0!N Chlist$(|@|(@A,|@A|@@ d4N |@A|@@ d0N  |@A 8`L d8N N @xop_classT`(TcF?8`L T+|pL ,,L LD M 8dK,N @Dvalid_op|T>!;<;;&Ky,;8`Ax088}8KY,,8`AXb(@880U <}HU:|@8x8<KaH|p|p|HB8|8,U:a@ 0gxK18B0T<|@T:"4A.8jU<|8T:|88JT<|@T:|8188x'A<88KŃ8}`88K,|`88A8K08`h0!`}N h0!`}N Amake_opT+TT(+TF>A, OA ,TF>/TF>A LA ,,A OZ3AcK @op0|;}!T>;Tf<+T(08TfF>A,OZA c},TF>/A LӂA}K/4,/8@p|8T<| 0@T:|8AH|8@A88,0d@0K݀A}0;Tf;+T(!TeF>A,OZA c,TF>/,A LӂATeT,@0fKO8`hHP08@(0fKеO8`h0!`}aN K/4,8@p|8|@Ad0T<|@T:|8(@A8,80g@0$KMA0D8KOH@0,80`KеOh0!`}aN @880T<|8T:|88`|0@@0W(WF>A,LA8|(@A|(@A ,8}80xKOH@080T<|8T:|08`hH(|p|p|0|(@,0eK80T<|HT:}).8T08TfF>A,OZA c,TF>/A LӂAK5,4,088AKaOH|0T<|@|8T:08`@t|8W8@A\/(WF>A/LӂA80@A|0@A ,8|0KOXH8`X0!P}N A\set|!H8`KeO<8d| 8`8|0cBd8?dd d3dddd dddAdddddddddd1dddd"d&d*d d$d(d,d5d6d7d8d9d:d;<H0!@}N Ainit_instr_lena|}&;;4Ӑ!;Nb8}@ 3,4T~A|8KA,30AP8W<|@038KȽA,0W8AW<|@K4T~@Г8{hd0!`} |aN C get_one_int!|<Xa@08K,8a@T:A`XH@8u|@.K̀AHD|p8@ 8uKŭA21|A@'1UU)U}(Cx~KT1Ё'UU)U}(Cx~K(<1#|Ю>8`h0!`}N A< insert_op|;b88b<T*cb@T:| 88|!@x|e .Tc*`c|e!.~P@KO0@0X0!P}N A init_code;|4!@KՀA(#H0d(#;A$8KAX0!P}N ;0H A084@K]A|@+$Hd|@+$;@AT0(0A;0K4@8KAX0!PH0X0!P}N A8 skip_header|@(!0080<0;8@KYA0a8K a0a<8K88T:`a܈KO,80`@@4081<1!KA0~|@99;Al@22h@2W233W3;`3%2|خ|.|.8Ku,(?;3ATW8@}((@AH|*.|v(.K䑀31e(@W8A|*.|v(.K]KW8|*.8|@88sAp8KqA,{;AH8s8KAA3|8s8AK8pKIO9U8|wخ|@;A|خ|.|.8K܁@88tx0 KɀAtxKMO8`0!}N 8`K Aload_instr_array|@!88;0~PL8K,80~XP8AK,A;8X0!P}N Ap load_self|!;88dK,,8`A$88d@K5XH8KMXL}0!PN Ad load_kernel|@0L TAHX#U(H@LBA48i#U(|H@8i@A#|H@U#8iKU#(U#F>A,A,21@K$tThA8TF>0cPdpPHXT @LBA48dT| @8d@A| @T8dKTF>0cPdpPK5O,21A4K攀9TPh:(|p|pA`8u;HK O:,WX(TcMA,W]~A(|.888K,@2K.KWX(U)M|hTc:`cW]~A\|@.88K},@2K؀9TPh:(|p|pAD8u;HJQO:,WX(TcMA,,W]~Al|.88KDWX(U)M|c@Tc:`cW]~AK`9TPh:(|p|pA08u;HIO:,WX(TcM@2K}AWX(TcMU:`cW]~AL|@.K9TPh:(|p|pA08u;HIYO:,WX(TcM@ 2K|cBWX(TcM|`Tc:`cW]~AKxT|q(LFA tT8K)O2K89#8eQ:(|pA08u;HHO:,WX(TcM@l2K}JWX(TcMU:`cW]~A8|@.K8u;HHaO:,WX(TcM@2KWX(TcMW]~A4K}̀ATc:`c|.88K,@42KXK}ATc:`c|t.KpU >}  U2@8`WX(UMHH5@pK}EAWX(UMH h1#(cWX(UMTc:W]~`cA$|@.KȀtTh(AP8KO2K␁|cp(5)(@K|A21Kd0 1HIhK 9TPh:(|00qA 8uHFO,21AK A2K9TPh:(|00q@A輂2KЀ9TPh:(|00q@@茂2K᠀9TPh:(|00q@X@\2Kp9TPh:(|00q@(A,2K@9TPh:(|00q@@2K4}*pUPi:(}p@WX(TcM}C@0Tc:`cW]~A8K܁4}*pUPi:(}p@LWX(TcM}CF0Tc:`cW]~AK4}*pUPi:(}p@ WX(TcM}P8Tc:`cW]~AK\4}*pUPi:(}p@WX(TcM}SxTc:`cW]~AxK4}*pUPi:(}p@WX(TcM}RxTc:`cW]~A8K܁T8jU Q#:(}p@L cTc:`c|ipWX(TcM}Hp}#CxTc:`cW]~AK8{8H"OWX(UMTc:1|h.W]~AKXtTh(|kpA@8K|O2K U (U F>A, AߠAߜ(,U*U*F>@ 8iD8K{O2K| P@@ Tc:@ 8iH8K{O2KޤWX(U)M|hW]~A|@.8K8t88H<9O,21AK`8t88H=O,21AK<8t88KO,21A޸Kpt8t88KO,21AތKtTh(ThF>A,LA ctT(TF>A,LAtK!O,A$WX(|@U(MA,W]~A|@.88Kp8t88KO,WX(UM@Ă2K,8t8HO,WX(UM@2K8u888H9O,WX(UM:At,W]~A(|.t88KM,@儂2Kܨ}.Kp8u;88H)O,WX(UM:A ,W]~AL|.88K$8u;88H,UO,WX(UM:@2K WX(TcMWõzW]~`cAl|@.K8t8HMO,21A܀K8u88H2IO,21:AXK۸8u;88H'O,WX(UM:@ 2KۄT(TF>A,LAt|cq@L888u8H-O,@ aKyUOmĀc|cqH 8:H,m8H-O,AیmWX(TcMW]~A,}.8d888KU,@㌂2Kڰ|.K|8u;88KO:,WX(TcM@aKxOmH 8t8H%O,21AKHt|cq@ppWX(UMW]~AK0ptWX(UMW]~AtK8t8HO,21AڌKt|cpH1O21K8tHiOWX(UMW]~A|@.88K8t8H=O,21A(Kوt|cq@HT(TF?@@8uHRO,1A:WX(UMW]~K(t8HYIOK8t8KO,21A٤K8u;88H)O,WX(UM:@l2K8u;8H@AO,WX(UM:@<2Kؠ8u;8HC O,WX(UM:@ 2Kp8u;88HEyO,WX(UM:@؂2K<8u88HFO,21AظK8u;88H2YO,WX(UM:@2KpmP \|@@A(<88Kv!O8` KsOmP1 P21K׌WX(ThMpW]~ccAKx8t88H2O,21AKHpWX(CU)M|cP|cp|cTc:W]~`cA߀K$aKu5OHaKu%OHW@׈9h|@@TmP \|@@A(888Ku%O8`KrOmPmP1mP0cmPt21~KxWX(TcMpW]~Tc:`cAKd8t8HO,WX(UM@Ȃ2K08t8H!O,WX(UM@2K8t8HO,21AֈK8t8H YO,21AhK8t8H O,21AHKըKpQOWX(UMW]~A|@.88Kt}p|ep8m}pKO,0c@42KHt0cKO,21AK(8tKY,21AհKt0cK,WX(UM@2KtTh(|cp@tK,21AdKā8888m}pK=,AЀmĂ,cMt2#KԈ8u8888KnA,:AWX(TcMW]~tAܰ|@.8KT8u8K=HWA;pP8KOHTW@LBA0;W|@H@;W|@@pP8KMO,WF?1 :#@pPLK)O:#KӐU:A`,WU0i}A,1i|~H, C1kHA, CK}H.U(UF?@ A}H}I.m89|@A8u88KquOKpOHWA;WF>38SHTW@LBA0;W|@H@;W|@@WF>38SpPK O,:#@pPHKO:#KT0~,W:}I.Tc:A`,WU0h}#A,1h|}@, C1kIA, CK}=@.U#(U#F?@ A}=@}4A.m89|@À8u88Kp%OKoOH@8mK21Kј8u88H)O,:@؀aKoOmĀc|cq@8`K-OK Xm4 P1K  |9:#K$K P@1+,K(2 9@2 0h , i1JcA, iK8h -P8h#m2HhKЬ,mĒMt#-9!8` H|2KЀ8u888H)O,:A؀t21t3TKL8u800 89HO,:At21t3TK 8u8088HO,:A\t 21t3TK8tHqOt21tKϰ8u888H O,@x2Kψm21mttKpt21tK`888t88KiA,:ApPA$0hxKcOX0!P}8`N ,/bLA0cT:T:|(.| .8x0KaŀAHXT:@04||p||.0xKaAH 0|.|pxKamAx8KiOXL}0!PN Asymcat!|a 8d808Ka A,a p0@0`KbO8`H,K`݀A,Ԁ`8`| A A8`80!0}N A older_file0|!HpT(08AT:@0`8KbOHHc|@.Te(8pA Td:@0KbOH0!@| .0`KЁH0!@}N A older_filea|W(|p!T>A/@0p880 KbOh\}0!`N (dW:|@@8.@}T8@ HKiOh;c|0@,p8~@t0@K^A,;c0|D@K`O8`h0!`H}T88KaO,0|d@K`O8`h0!`}H0t@\K^A,;c8`A}T88K!O,0|x@ K`-O8`h0!`}Hd}pHH;}p@{XL8@tHK=Oh;|0@,@dp8~0K]рA,;8`A{X88KMO,0}@K_yO8`h0!`}H@hp8~0K]mA,;8`A|{X88K~O,0}@ K_O8`h0!`}HHtH,0gK^OhaL0!`}8`N 8`h0!`}aN Asee_tell|c|pTg(T?!;|`pAp80K_OH|b(0c8@,K\EA,@P;8XL}HHbcAЀp0`K]O8`XL}0!PN 8XL}0!PN A see_tell_at|!Hb|pT?(c@K[ATc:`cHDbp0c0@(dK[]ATc:`cH0!@}HK]O8`H0!@}N Aseeing_telling_atTd?|/,@!A(Ap80`\AK\OHTpATK~Oh/|(@A8TpAK} OH K{!OKZUAdpHPX|@thAK|OKZAdtHdKYAXL}0!PN A seen_told|T!xA 8HHT|8@8OFBA0T|8@8@A|8@T8KT:| .KY9AxKY-AXL}0!PN Ashell_1|;!T(8bx@ |pp8~0KXAHcT: .|p88|p|pK5O,8`A8`X0!P}N A add_instr|;W0|4T~|4|4;0TWF>@||4T~|4T~A|cЁX0!P}N A ocompare|;W@;!LBlA,;WH@;W|@@T @W|@+OBA0;T @H@;T @@T+8A@4lA | @@ 8HOX0!P}Hx8}K/WF?(@T@P(;AD8|0A8|0H@,|0|0K/3|@W:@@|0X0!P}N Ahcompare|W@!;8A,8e8A 8@T88K5O,8`A 8~8<8KO,8`@X0!P}HW>8KO,8`AWU`8~8(A9FA<p8i0KPqOHp8g80DKQO8`He80|@8h1@̑* c0T`|@OFBA09hT`|@H@9hT`|@@ @@e80|@8h1K0!@0gN H0!@}N A0 det_append0|!HT@L8UF>(1#1D9`1A<p8h0TKO-OH$p8i80KPO8`HT|@OFBA01 T|@H@1 T|@@@@80 | @81k1@U1)8 @DT @LBA01 T|@H@1 T|@@@@80 | @81kK,TA p0dKMYO8`HH,+TF>A,OZ3A p0`0KMOHHUDA8jTd(/ AhHXjTd @LBA48dT`|@8@Ad|@Td8KTd(/ A(L3BA p0KMAOH0!@H8@Qcg0!@8iN p8d0KM OH0!@}N A list2termT(T>A 8`N dT0@xUUF>,/AU>9 @011'U#8|})8d9'BU':|8A0H 0fN @ term2list|DU@dU`,!A 8HT(AL0!P8`N TF>9@U(UF>|(@0,T:@80,PT:TUAT,9$||A0000,0A,K| H|I.|HH| 0T;|d@AHUU|} A0011 , 1)A, K| 8|9.8p| @048A$KLO8`XL}0!PN L0!PN A term_append|a|0@P!;@X0!`8`N 33;cU|@@OFBA0;hU|@@H@;hU|@@@|@UA(UF>A$/A@0c|@@H|@@LBA|0c|@@H@L\| @@|{3Htp8880DKJO8`H81_H @4A0\0@| @U U0@j 3T:A,9A00 }X|X,$0(A,$K}X.{XU@@8XLBA0;hU|@@H@;hU|@@@U(UF?@A0@`A\|@A 1_K AHlY.30c|@@`HD;HTp8880TKIiO8`Ht}Y.30c|@@;cU|@@OFBK@@083|@8@3K8}aL0!`N h0!`}aN A copy_term|;T,(!888~8TF>A$,A@8~X0!PH8K,@8`X0!P}H,8~X0!P}N Acopy_from_engine`|0`g`!fHTp@T(T>dA0d8fKFOHH`0T(|qT:A8fKEOHHP`|A0` 0!@d N 8d<0` |(|p|T:|c(0!@d N 0!@}N Afindall_lift_heap|;`8 pg0|@0!0 9A(8KFOXL}0!P8`N ;0T9F89c@HFUI|P@8OFBA0FUI|P@8@AF|P@UF8KUF(0`U@F>A$/A@H 0k~`HH` 0K,p@ 0`KCiO8`X0!PH~`dX0!P}N Adfindall_store_heape`|e`8`0(3# e`!0ce`d8KO,8`A8XL}0!PN Afindall_load_heapTF>0T;P80c}8| A01H01&, 1) A, K|c0T:|0.N @lapply|!HTp0A8fKBmOHHpT(0,TF?@1TU@8fKB1OHHh|U;Q0  |fA0| 0c1,1A,K0!@|dN 0!@}N A strip_cont0c|aTf(|fq/!;;A;,;@A ;H@,p80LKA)O8h0!`}Hf8@|8@We@h@@`~P\p|(@0h88AKBUO8`K?O~PcP0P0PW:|(8h0!`}aN A dcg_tellA|!8G|8@;;d;W@d,|8@@@TP\p|@@0x8AKAiO8`K>OPP1P0P83\838|8\3 K1O,8`A8~[h0!`}AN A dcg_connectA|;}Tf(!;d|hppA,08K>OhaL0!`}N ]/WF(WFF>/A8p0A@(8z8K>Oh0!`}AN "pTTF>|8@0@(8f8K>UOh0!`}AN 8T:0@@(8f8K>Oh0!`}AN |0@.W@d|0@@@X{P\|0@A,880 8K?EO8`K/A,p0XA@88j0K|8@@80`8K00T|e+x|x!N "@,ints_to_double!|!H9h080<0@aHLK0hl8<@ h0!`}N "A`d make_float|!HT`(<C088|`p@(lb|<!8C(b*H|@T(l|p| @l@$|p@(l|L!HE(b*Hbc@|bT(l|p| @l`@$L|!HE(b*HHbc@,e K`T(|plH$K6O8`HT(|pl@$L|!HF("*He@fT`(l|`p|@@(lL|!HF("*HD@( fK0(8`A H,hK5O8`H0(8`A|T:|0||N #*H#(H#rHx#$HpA98hH@8hHL@8hH|L@8hHh@8hHXA8hHH!P080<0@aPTK]0hl8<@ h0!`}N "Afloat_op|T(!A/LӂA T+TF?8`@pT@`T:(|(.,|p@(l|L$AHd"(*H̀e@U+l}p|@@@(l|L$AHd"(*H|@, dKqT(|p@H`dK3qOlp}0!8`N K3MOl}0!8`N T(|p@(l|L$AHd"(#*H`@T(|p@(lL|AH$d"(#*H$l|@@8 gK},l/pA @@@ K0A!PHDK0A K0A?$!PH lp}0!8`N 080<0@aPTKy0l8<@ lxp}0!N l0!N "A float_fun2|T(!<C0H;TF>A/LӂA T+TF?8`@ T@T:(|(.,|p@(l|L!HD("*H@|T(|p@(l|L!HD("*HXl|@@ dK,eH4dK0O8`HA,OA , TF>/A LA ,T(TF>A/OZA 8`@TT(TF?@(@@T:|0.0$|p|pxK,9AxK,-A!H080<0@aHLKEl0~8<@ x0!p}N h0!pN h0!pN "At input_float|T!Xl8`@T|(@@H dK!8f048!cK%A,0A8cK%mA,0AcK%MAK0|(@8`@ 8`X0!P}N A match_char|;!;;8`)K!,8`,@HK,8~3;A0H;,88}A0K;8X0!P}N A match_args|;b!;8`]Km,8`|@K],0a8;AHH,8`]AK9,A;;,a8A|~8X0!PHt8`,K,0a8APH,0a@܀4|0@A0|8_4|T088KA|,0|A,|/0|A|K䀺|h0|0!`}!N 0|8@A0|8_|0<0|8a|T8K̀A|,0|Ap|/0|AT|K|0@A0|8_|0@0|8b|T8K5A|,0|A،|/0|A|K,@d|ep0D8K̀A|,0|Ap|/0|AT|K@\Tg:1|8.|,A|0|/|A0|K|@@x0|8[0{K3WA8;,|0@@HTT0@LBA0;T|0@H@;T|0@@쀺;,|0@@|00|8K83W8@DT0@LBA0;T|0@H@;T|0@@0@@|00|K|0@A$|8|0|88KU|h0|0!`8]}!N Tg:1|8.|,A4|0|/|A0|K䀺|(|8(;@@;;,~8K3||@0|@~8KW:|{(8Km|8)0|h0!`}!N !D0!`N Aout|x!|K|80|xXL}0!PN ALswrite|x!|K|80|xK9OXL}0!PN ATsout|!8x|K!|80|0Ha8xKuAKiAXL}0!PN Apfout|!K1%O,a8;AK A,A;,a8A K2O8`XL}0!PN Ahmain  xxx T,ll(\L8X|DY 4DXl| H l $ 08@`x L`l4# hHXh<T,L<h`,L !,!!t!"##$$($8$D$$$$%%(%h%%%&&&&'T'(\()x*4*+,+,@,t,-T-. .<.l.../</|//0<00111112 2233p334 4,4T45d5566 686d6677<7l7778(8888888888889999999::$:D:d::::; ;H;;;=>>d>t?p??@$@@?@h@@@  Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programeditbp_stateeditor_filenoname.plbp_stateversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%u%u%u%u%u%u%u%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceeded%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYS(75%)Stamp found %d, expected %d hash op on protected objecthtable full in hash op(75%)arg 1 of hash op should be nonvararg 2 of hash op should be nonvarStamp found %d, expected %d hash op on protected objecthtable full in hash opunsafe data in def/3 or set/3(75%)def/3 expected before set/3, rm/2unsafe data in def/3 or set/3expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loading%s unable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1rbhdef in seewbhset in tellwbhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arity%ldboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingvalue_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityvalue trailingchange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafebad arg in arithmetic operation%ld%-se%-ld %fno definition for: main/1integer expected in halt/1trailing in unifytrailing in unifytrailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d trailing in unifytrailing in unifyunexpected push_variabletrailing in unifyexecutionexecutionexecutiontrailing in unifytrailing in unifytrailing in unifytrailing in unifyexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETexecutionexecutionexecutionEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2trailing in unifyerror in bb_list/2value trailingUnexpected: ISO I/O oprationUnexpected: blackboard operationstring buffer (-i option) exceeded or infinite term%ld%ld%ld%ld%s0d8$   $ p `,($Lt\Pd UVVWLWXL[\8\]]^_`(`aDbLbdx57=LU$h4@XTHL(`p0L P|P 0 "$D%H&'*+H+-.<0x3TlD8Ǽ Ȑ`84l`(048<@DHHL,P0X5hX 8(U"P(4@LXdp| $0<HT`lx ,8DP\ht(4@LXdp| $0<HT`lx ,8DP\ht98 * (.sscanf.getopt.srand.free_iob.malloc.calloc.exit.sprintf.fprintf.timesoptindoptarg.signal.strlen.strcmp.isdigit._filbuf.ungetc.fopen.fclosewam_bpuser_bp.getenv.access.chdir.kill.stat.fseek.ftell.fflush.strcpy.system.pow.log.floor.exp.sin.cos.tan.atan.asin.acos.atof._ptrgl.isspace.islower.isalnum.ispunct.isupper.rand._flsbuf.if0.init_c  \ t  X   4 \     4      T P\ht$x4h X  Xh 4 DD  /$ 1 77D:4 :T :x : J M,M\MN NO OPxPQQXRS S T8 [ b {1|h |t"47d7H8H9T:`< t  $x0 |!! "#$T   \%l&|&'()& *+$,0-<.H/ 0 242T2h3֘4445222(6\4،4ؼ482X2x2ٌٴt2ڔ2ڴ2x 4  4  "; (,48@DLPX\dhpt| $(04<@HLTX`dlpx|  $,08<DHPT\`hltx (,48@DLPX\dhpt| $(04<@HLTX`dlpx|  $,08<DHPT\`hltx  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\/usr/lib:/lib c_interface .__uitrunc .new_builtinfnnv~"^\t^v^JvN^Xnv^4\~*nRvn^ ~:t~:^~ 4H\p$8L`t(Tp::^   4    jn n^  ޙ ~  @8 ~ ^^>n~v~^TP\ht^^VZԏn$x4hv^&؏Xb ^ ^^fbv~"bN^n>bBXhvv~^~N\LZnh*r$&*&.2.4@>nJ2bh*v(4n*BDB~&&fn~&**v.DPvV :n H( Rd \$ jh r n !d!d"V"2h"n""d#d$V$$Fn$Jd$v%Nn%fd%&RV&n&h&d'h'6d':(n(*V(6h(Fd(J~)D)P*J~*~,n, ,d,Z,fV,d,h-~-~.h.d.~/v/V/$/8/JV/X/zn/~/V/d0h0*d0V1 1,1Vh1vd1~1v1V111V12d2"~2rV22d2n22V2d36h4h4"V4<4^d4b~4V45 $5* 7$7D$888v8 8~89:4:T:x::>:<;4>;p=~>>">2>?@BBCCDDEfEG>GGHHH4Hl:H>H:HIPJvJJJKK L*L: LB~LZL:M,ЙM\&MЙN ЙNn~NzNNJNvNOO$OO(O P PP8 PVnPZ~PxЙPЙQЙQXЙR*R$ R< R~RRvSSST&T8TD TTTV&V*.V.*V6~VBV`V~V.VVBVVNWNWN~Wd>WvxW|WxWWXXzxY|YYYZXZdZZZZ[v[x[\\B~\X>\nx\|\~]~^>^:^~^x^_4>`<:aZpaftaxbbbbvbrxbbc~dxd~epetg$g0hh hhjjkl l>llmmo,o8q$q0stsuuydylyyy{ʙ{{>{r|>|0|8|P™|h|t̙>Tt4ΙdΙЙHҙHVDzh|PR$>pNBx0bxdRl`thh$DD\FHNLJ\Lf(\t\v l468:<X>|@Hԙ>>><>X>0nHdB0ppX^P@T֙p>&4B~h|, Zb|"  >P`$v~2n.*nn8T`T~<Nt&$&n~~>(@<Tx(:>&0(T<h(:~(~f~|*~*~BPh><:*<* ̙Z~^,.6~:JT^B"~~T<ThTTTv0T~"~~4T~T J\~",:Hfp~V\fx^jnx0T"0Fl~^~jtZ~ª¼Tæô*HĀjńŮ (F`rƌ~:~Ⱦ~*`Ɏɪɶ~ʒʲ~4^zˊ~ˮ* ~͞~jpΔ &~\4l6|6~Ўо~FL`8:<6 >@$B0D<FHHn~ӞӢ~ӦJ~~Զ4ՂƏ4Th֘׶Ə(\،ؼƏ8Xxٌ$ٴ$$$^Ətڔڴ~ܘ~>~݄~ƏVn~ƏbʏfƏxdƏ&ʏ4Əʏ"ʏ&Ə4^v~~ R~zƏ̙NXR PTT T( ,T4 8T@DTLPTX\TdhTptT|TT$T&T(T*T2T8T:T>T@TBT DTFT$H(T0J4T<L@THNLTTRXT`dTlpTx|TTJTLTNTPTRTTTVTXTZT\T^ T`T b$T,d0T8f<TDhHTPjTT\l`ThnlTtxTTTTT2T4T6T8T:T<T>T@TBTD T(F,T4H8T@JDTLLPTXN\TdPhTpRtT|VTXT^T`TbTdTfThTjTlTnTpT rTtT$v(T0x4T<z@TH|LTT~XT`6dTl8pTx:|T<T>T@TBTDTFTHTJTLTNTPTR TT $T,0T8<TDHTPTT\`ThlTtxTTTTTTTRTlt|\"$(,0\Tbf  $(X,048`<@DHL0PT X\`vdrhHlptdxh|px48<z~  $(,048<@D HLP TX\`dhlptx| X^jnrvz~  $(,048<@DH L$P(T,X0\T.filegru.c.cputimekP.cputime .quietd E .bp_exit .bp_halt .warnmes O8 \ i t $  kX k k k     $  p   k < k  k+ ` <  kH\ kZ k vt k, (  $ L t  \ .init_bp 0 .run_bp TOCk(khkP,k_ru$c$(k_ru$c$k_ru@c@Xk_ru@c@8kcputime  cputimetkquiet  quietxkmax(maxkquietmes(  quietmes|k_iob_iobkbp_exit4  bp_exitkg`gkbp_halt@  bp_haltkwarnmesL  warnmeskX  kd  *k6k@p  JkT|  `kl  xk  k  k  k  k   k  *k:  DkN  \kj  yk  k   k  k$  koptargoptarg0koptindoptind4k0   k<  $k0<<kinit_bpH  init_bpkH  R@krun_bpT  run_bpk.times.fprintf.sprintf.exit.calloc.malloc.free.srand.getopt.sscanf.signal.fileDgsym.c\nPkXP   k .sfull  .atomnol k .atombakd     _sym$c$k_sym$c$k`  k04knewatom8newatomknewlex<newlexklextable@lextableksfulll  sfullkatombakx  atombakknew_func  new_funck.strlen.strcmp.filegengine.c LUkAZU HhV HwV HWL HW H.unifyXL H[ H\8 H\ H.interp] H] H^ H_ H`( H` H.answeraD HbL H"b H.bpdx Hdk(khk5k@`kK  Xke  skopcount khcountk  k  k  kunify  unifyk   k  k   kinterp  interpk#  2kA  M kY   f$ks,  (k8  ,kanswerD  answer0kP  4k\  8kbph  bp<k._ptrgl.fflush.rand._filbuf._flsbuf.if0.file,gload.c15k A5 Q6 k^7 i8< kv8 k= L M kNd k.iiOp kO kR| kT kU$ kXk k_load$c$0k]_load$c$kt  @k P k   #Dk -  7Hk A  KLkwam_bpwam_bp kuser_bpuser_bp$k U  aPk.isdigit.ungetc.fopen.fclose.file0gbuiltins.c m  k0x  0  0  0 h 0.unix_cd4 0  0  0.stats0 0.symcat 0  0  0 @ 0 "X 0 /T 0 B 0.shell_1H 0 M 0 X k0.compare 0.functor 0 b| k0 l  k0 vL 0  0 ( 0  0  0 ` 0 p 0 0 0 L 0  0.apply 0   0  0 P 0.setarg| 0 ,P 0.bp_cons 0Hkk$Lk 8 k  EDk R  \Tk f  pXk z  \k   `kunix_cd  unix_cddk   hk   lkstats0  stats0pksymcat  symcattk   xk (  |ksee_tell4  see_tellk @  k L  *k <X  Fkshell_1d  shell_1k Pp  Zkcompare|  comparekfunctor  functork d  nk x  k   k   k   k   k   k   k *  =k P  bkapply   applyk t  kdcg_tell$  dcg_tellk 0  ksetarg<  setargk H  kbp_consT  bp_consk  \k.getenv.access.chdir.kill.stat.fseek.ftell.strcpy.system.filegdict.c  .hfullkh.hfull 4.hinit 0 4.hdef  4.hset" 4.hget$D 4.hindex%H 4.hbak& 4.hlist' 4* 4+H 4.make_op+ 4.op0- 4.lval.< 4.def0x 4.set3 4_dict$c$Hk_dict$c$khfull`  hfullkhcountDhinitl  hinitkhtableHhtablekhstampLhstampkhdefx  hdefkhset  hsetkhget  hgetkhindex  hindexkhbak  hbakkhlist  hlistkop_class  op_classkvalid_op  valid_opkmake_op  make_op kopcount,op0  op0klval  lvalkdef  defkset  setk.filegio.c'9hkv kx k k׬ k kT k k k .sread0 .sreadT .out߄ k.swritel .sout .foutD _io$c$kK_io$c$lk_io@c@"Pk _io@c@pk   ksread0   sread0$ksread,  sread(kswrite8  swrite,ksoutD  sout0kfoutP  fout4k.isspace.islower.isalnum.ispunct.isupper.fileLgfloat.c@8k P8 `Ǽ p  |Ȑ ` 8 4  l PkkDXkk7Tk\  8kh  <kt  !@k,  :Dkfloat_op  float_opHkH  SLk^  hPkr  ~Tk  Xk.pow.log.floor.exp.sin.cos.tan.atan.asin.acos.atof.filegmain.c.maink.main Pmain  main\k.init_c06/04/95 05:16:23IBM AIX XL C Compiler Version 01.03.0000.0024.quietmes.fatal_error.local_error.link_halt.can_recover.overflow_by.hdef_string.hdef_int.make_constants.hdefaults.make_byte_array.make_char_array.make_hentry.make_atomtable.make_var_array.var_array_init.make_stack.init_common_mem.add_engine.heap_safe_margin.init_engine_mem.is_engine.del_engine.create_engine.destroy_engine.init_random.start_profiler.end_profiler.get_cmd_line_options.bp_version.startup_mes.start_wamfatal_errorfatal_errorlocal_errorlocal_erroratomtablelink_haltlink_haltcan_recovercan_recoveroverflow_byoverflow_bymake_byte_arraymake_byte_arraymake_char_arraymake_char_arraymake_hentrymake_hentrymake_atomtablemake_atomtableinit_common_meminit_common_meminit_engine_meminit_engine_memis_engineis_enginecreate_enginecreate_enginedestroy_enginedestroy_engineinit_randominit_randomstart_profilerstart_profilerend_profilerend_profilerget_cmd_line_optionsget_cmd_line_optionsbp_versionbp_versionstartup_messtartup_mesc_interfacec_interfacestart_wamstart_wam06/04/95 05:16:44IBM AIX XL C Compiler Version 01.03.0000.0024.make_symtable.make_symtable.insert_lex.new_funcmake_symtablemake_symtableatomtableatomstampatomstamp06/04/95 05:16:49IBM AIX XL C Compiler Version 01.03.0000.0024.unwind_trail.unwind_trail.init_orig_wam.restart_orig.default_start_point.heap_or_bp_halt.bad_instr.exec_link.interp_from.bp_prolog_call.load_engine.load_engine0.call_engine.ask_engine.suspend_engine.multitask_engines_engine$c$_engine$c$unwind_trailunwind_trailinit_orig_waminit_orig_wamrestart_origrestart_origdefault_start_pointdefault_start_pointheap_or_bp_haltheap_or_bp_haltbad_instrbad_instrexec_linkexec_linkinterp_frominterp_frombp_prolog_callbp_prolog_callload_engineload_engineload_engine0load_engine0call_enginecall_engineask_engineask_enginesuspend_enginesuspend_enginemultitask_enginesmultitask_engines.new_builtin06/04/95 05:18:17IBM AIX XL C Compiler Version 01.03.0000.0024.init_instr_len.init_instr_len.get_one_int.input_fun.link_switch.link_code.insert_op.init_code.skip_header.loadoperator.load_file.load_instr_array.load_self.load_kernelinit_instr_leninit_instr_leninstr_leninstr_leninput_funinput_funinsert_opinsert_opinit_codeinit_codeload_kernelload_kernel06/04/95 05:18:41IBM AIX XL C Compiler Version 01.03.0000.0024.stat_used.stat_used.unix_argv.unix_getenv.unix_access.unix_kill.stat_left.older_file0.older_file.see_tell.see_tell_at.seeing_telling_at.seen_told.add_instr.ocompare.name2buf.list2buf.name2list.det_append0.list2term.term2list.term_append.copy_term.copy_from_engine.findall_lift_heap.findall_store_heap.findall_load_heap.strip_cont0.dcg_tell.dcg_connect.change_arg_builtins$c$_builtins$c$stat_usedstat_usedunix_argvunix_argvunix_getenvunix_getenvunix_accessunix_accessunix_killunix_killstat_leftstat_leftolder_file0older_file0older_fileolder_filesee_tell_atsee_tell_atseeing_telling_atseeing_telling_atseen_toldseen_toldadd_instradd_instrname2listname2listdet_append0det_append0list2termlist2termterm2listterm2listterm_appendterm_appendcopy_termcopy_termcopy_from_enginecopy_from_enginefindall_lift_heapfindall_lift_heapfindall_store_heapfindall_store_heapfindall_load_heapfindall_load_heapstrip_cont0strip_cont0dcg_connectdcg_connectchange_argchange_argbp_heap_topbp_heap_top06/04/95 05:19:15IBM AIX XL C Compiler Version 01.03.0000.0024.op_class.valid_op06/04/95 05:19:28IBM AIX XL C Compiler Version 01.03.0000.0024.make_funcell.make_funcell.make_term.match_sym.match_var.match_int.match_char.match_args.match_list_elements.match_termmatch_termmatch_term06/04/95 05:19:39IBM AIX XL C Compiler Version 01.03.0000.0024.double_to_ints.double_to_ints.ints_to_double.make_float.float_compare.float_op.float_fun2.float_fun.input_float.write_float_float$c$_float$c$double_to_intsdouble_to_intsints_to_doubleints_to_doublemake_floatmake_floatfloat_comparefloat_comparefloat_fun2float_fun2float_funfloat_funinput_floatinput_floatwrite_floatwrite_float.__uitrunc06/04/95 05:19:49IBM AIX XL C Compiler Version 01.03.0000.0024BinProlog3.45/bin/bp.o.sparc.solaris100644 764 764 264770 5764214502 16476 0ustar javierjavierELFh@4( 㿀@@ *`& .  . >  ~*  㿐  @ 㾐@`!ӄ" X @; 8#+ #@ +`@ `+`@  @@㿐 @㿐 `@㿐 `@@ 㿐 4-  4&:  @`0 `@0 .  `@> 0 2`  *`6   @`@ 㿐 @ 㿐@@㿐.`* `  &   `+ @# @㿐@ @ @  `@㿐@ @  .@㿐 #`@  $ @ $  @ $  @ $  @ $  @ $  @ $  @ $ < @ $ @ @ $ D @ $ H @ $ L @ $ P @ $ T @ $ X @ $ \ @ $ ` @ $ $ @ $ ( @ $ , @ $  @ $  @ $  @ $  @ $ 0 @ $ 4 @ $ 8 @ $ d$ t$ p  $  $ @ $ h T d @ ` X d @ ` @ $ l$ $ $ ā㿐  `# ` `)!Y@ 㿐@ 㿐@ 㿐@ 㿐@ 㿐@.  6 "@`㿐 "㿐$ @$ 2$ @.`$ .`." $ $ $   $  $  $ @ 㿐 ` פ`@`? " @@ d?! $`x  $`| " `! "  @@  $`Ƞ  ?@$`̀ " U 2   @  㿐? @`""` đ.` "@ Đ "`@  : //4㿐! j l`?! a H " U $ "   J "    @ @ @` @(@ 㿐  `  " ? "`(@  㿐 @ $.`(  .."@"`"` "` "`"`"`"` $"` `$ @` 㿐 "  @ |@ X@ 4@ @ 㿐@ " @h??  %#+`@*`: ?* :  z* `@쀢 _* ]%``@耢 U* S$`@䀢 K* I$`@ A* ?$ `@܀ 7ܑ* 5$`@؀ -ؐ ) * '$`@Ԁ Ԑ  * $`@Ѐ Б* $`@̀ $ "? ??s  `@ @   * @㿐1 ` @ -㿀) '%#`!@ #\#d1 #h`#`@`㿐% $  $ @ $ @!@ @@,   @,    @,   @` 㿐 ! @ @  `@ @@@@㿐@@@ 㿐!@  `?@" "`  !"`@* $ "` `?㿐! @ ` *`@ @   $  ` * " `*㿐 `@@ @ 㿐L   J. J@   ? .    ` `@   ? @`.  ` .  ) `  `" }`. "  "` *@ : : @    @`     @` "` `㿐a  `@@  f* .`2  @    ("("@ " 㿐 & ! `$ `$ `$ `@$ $ 㿐 &   "? @"@ @ @  & 㿐  @@ 㿐 ` @  :` @㿐&&'? ?" @ @@`@ $```@8(&@ 2&6` "&&rP\@   @@ P`&Pa"@ 2&@6  "&@&@@TP\@   @@ P`&PC"@`C >6  :  @@ @:$@P\@   @@ P"P`"`P &P$@ .  $ ?@  $.  @$ @?$8a 㿐 `@ @ 㿐 @2`@㿐 X 4# P#`  | "`$  "`( " 2 " P" "@`?㿐@@㿐&```&``@ @ ' 2@  '?`P'?`' @㿐@ 2 |@ *  X 4& P"$``"(` @   $@ 2 `$ P$ $@ Đ "@ "  " & , & t" 㿐???@?㿐@    4 , t@  㿐 @:    "@@ 2    㿐: `% *`@Đ "@Đ "@Ē "Đ "@","t " @`@  㿐@:   @`@   "@","t" 㿐 $1?@ ? @  @ @:  `"@@(@  ??'  !'@ :   @   @:  ""@@2`"  ?  ??2@ 㿐 +` `  *`@4&C4&@&=`4@ "2/44`@ 2)@  @ 2@  P \@   @@  P`' P"@`@$@ 2E`4&@ʹ, 2 4& , 2 &@4, 42` @ ", 2 4& , 2 4 4, &2`& 4, & 2 &@`&4@ H, 2 &4, 2`&@`& &`` 4@ ,,  2 4, &@4, & 2 @ "}L4&, &@2 &`q`"6`@ 2#@  @ $@@T P \@   @@  P`' P"@2@>4$@&@6`@  đ4`@ 2#@  @ $@@ P \@   @@  P`' PX"@24&  &@ʲ`ȶ ` @ ?@ @?3@"B - 8@" ְ 8@! `@  @  @ "@"` 8@ `@  @  @ "` , δ 4`@ 2)@  @ 2@  P \@   @@  P`' P"@`@$@ 2Z4@` , ` 2` 4`@ 20@  @ 2%@  P \@   @@  P`' P"@`@$@ &@4, &`24@` , 2 4`@ 22@  @ 2'@  P \@   @@  P`' P"@`@$@ &@4, `& 2 &`2` ,  4`2`& `& 4`@ 2)@  @ 2@  P \@   @@  P`' P"@`@$@b 24, `& 2` @`  v` 4&@& 4, `& 2 .&`4&@#& 4&@& 4, ;&`4&@0& 4$@&@4, `& 2  &`4$@&@4,  2 &``& &`8` 4$@&@4,  &`4$@&@4`&, &`2  &``  8@l  4 f, `,  & 2 ,  & P&&& P@4' P, ` `& & 2 ,  1 P@4' P, ` `& & 2 @ . @ ) Ā4, 4,  @ ?, "@ ?}4 * &, 4&?2 `2m&?@  @  @  2]&?4  "Y&?W&?, 2 `2&?@  @  @  2&?4  "&?&?4`27&?@  @  @  2'&?4  "#&?!&?, 2 `4 * &@  @  @  *`4  "& & & , 4 2 &@*`&& "` `@  @ @`@2``W* `"6,@ & 2@ /, `@  4 @4  @4 ?`, ,@@ ,` *& * `",@ & 2@ ,@  ,4  2@ ,&`@2  8@`@ 8@  @@ @p :    ' , ' t"  Đ !"@@ @ 4 | Xc ' P & "$`` "( & 2 & P& o& tb x@ /@2V@  Đ@"I,   @ "=   @ "2 @ @ "$   '  & @`@ `@! @` @`@ 2@  @ 2`@  @  @ "`@  @  @  `@  @  @ A v4  t` @  4 @ @4 ?`, *@@  ??  * @` @ , 2  44 @ :f5&; , < 2``*4 4&&??  * @` @ ޑ, 2  ѓ44&; , < "2``*4Ð 4&??  * @` @ , 2  44&; < Z@, 2  *``4 4&??  * @` @ , 2  44&; < : z Z , "2``*4n 4&? ` 2 ?:` 2??ڒ`?  * @` @ V, 2  I44&; , < : z2``*46 4r&??@ 2, 2  %44b&, 2   @4  ? @4 ? N&  `  Ϙ *` @? "@@ "  , 2  4+  4+  && ?  [`@? "@4 @ < " *??  * @`  @ ")6$??  * @`  @ "$ ݴ??  * @`  @ "˴4ƴ??  * @`  @ "&??  * @`  @ "2??  * @`  @ ""??  * @`2; < , * 2``*  4, 4h&??  * @`2; < , : 2``*  4 4P&??  * @`2v , ?2`` 4 4:&??  * @`2` , ?2`` 4 4$&??  * @`2J , ?2`` 4Ґ 4&??  * @`243, ?2`` 4 4&?@?* `, 2 44&?  `?`<  4` "@   `4 (, `@+ 2``{@4&@ "@ "@  " &?@  "?` 2` "?@&??` 2` "?@&??@?? ;, 2  4-4i&@ +, 2  44Y&@, 2  44J&@ , 2  49& @, 2  44*&@, 2  ޓ44&, 2  *  4Ӑ4&@ "8@ "0?:    , 2  44&@ "?@: @ "״@, 2``44&?:  2??  24  2@" @, 2  4k4&@ "@`, 2  S44&@"?  $4  ", ?:  2  8@@     @" ' , 2  44U&@, 2   44F&@, 2  447& , 2  @44)& ?$@ P \@   @@  P`' PA"@@ ":  , @2 $@ `44&@, 2  44&@, 2  44&@, 2  44&@ "ƴ@, @ L đ2  t44&,  2``*  4g4&@f, 2  4X4&@W, 2  4I4&@ "~@ "v@ "n@, 2``%44a&?`2@@ P \@   @@  P" P`"` P ' P?p$@???:`:@:, 2   44,&?@? "U%@ "N?@?, 2  ӓ44&?  2:@<  "5?@;  2 ,  ,  t@  @ ~ Đ@, 2  ?44&@@㿐@!  "``* `` *?`*`* `*3`*`*`*`* `*`*`*A`*`*`*`*`*`*`*`*`*`*1`*`*`*`*"`*&`**`* `*$`*(`*,`*5`*6`*7`*8`*9`*:`*;`*`<㿐N  -`?  ,  , : @  ,` ,`@@&@ &@`?㿈ג쀢 *  @ 2 2  `" " 㿐`: -+5/ #  @  Z〤 ʀ ?ހ ` ے`` "`, # @,@@   ,`@ # @, # @"``@  @#`)'    *2` *` `2@ `` : @`@ `@``  @2@ < A&`4 ??, * @y` # "M C "8l&  "  "Cc&  "^&  <   & *` < &   <   & *` < & *` 8& < 1& * @/& &  < 1)& &  < &&  < & `! @  `  *@@ @ < $@" `, *  㿐  "` < 8" . @@ ``@   "`X 1" #,  #`` <@8  `"@ `?@(`  <"  < "  "  @"`Y  2T  " @ < "@ @ "@ `' "` `' ` < "` .  2/  @ < "@ ?*@. " ` @#`@    ' " 2  g@  @N`_   ` @ 2U  @` |`"J  2 S 2ڰ   2Ӱ  $  c  | +" ' .`2` * " 2   c 2  | *"   c 2 | " ' .`2` * " 2z   c 2t  | o" 2  $  c  | #" ' .`2` * " 2N   c 2H  | "C" 9  c 25 | '" ' .`2` * " 2)   c 2#  | &" 1  @ <  "@ 2&  @  c : | -" ' .`2` * "    c  | ,"    c 3 | 7" 2   c 2  | 8"   c 2 | !" ' .`2` * "    c  | "    c 3 | 5" 2   c 2  | 6" 2  @  c : | %" ' .`2` * "    c  | $^"    c 3 | 9P" 2M   c 2G  | :B" 8  c 24 | )" ' .`2` * "    c  | ("    c 3 | ;" 2    c 2  | <" 2  28   22    # .'  .$" 2    c 22` 2`2 | /" ?*@. ">  ?*@.` " .2` * " 22  ? c 2, 2` 2( `2% @  2 : 8   < 0" ?*@* "  0?'  2  ?.`* @ "@ ' o" 2  ?*@.` " `' ^"` 2q  ?*@.` " "  '  ^E"  2X  @ <` 8"@ ?*@.`l "  ?N ?* * 2 @" 22  ?*@.` "  < 2!  ?*@.` "  @`"   @"   '   @ 㿐 " @ <"@   " " *  & !"  "  <  "  @  &  " `& 㿐? &@ `&  @`#" @0  ? &@ `&  @ $`0? &@0  & ) T  % `P@L@ @ L T*@  T L` @#\@ % 㿐 @ 㿐@` @@ @ u  @n +? $@ `$  @?P? $@ `$  @@? $@ `$  @0` !` `? $@ `$  @*`: ? ,@`J ` &`*`}2@  ` `@㿐 " R '), W  ?M : *` @ ,  `@`` &`",  @`*  "`@ *  ``` @ $@ ,2,!` @@  㿐      @ 㿐@    ې*` (" ?㿐?   @`:  `` @``+ @@ 㿐? ` 2` *` @`2 `* @@  @ 㿐? `  `:`? `  2`  `@ *`2 `* @@ `?㿐?  6  . `2 `* @@  `@㿐?  `? `   `< @:`  `@*` ( 㿐` 2&` `  ` @` ` 2&2` "&& ` 2w :``j *`@@$ K" @@  @8 P @P0  @(  `" *   "  ` "  ` "@* *` * *  @ @`, @    `. @ @ 㿐? ` ?2`  @ 8  3   *`+ 2` 2  *`*  `*` 2` `4*`#  :  `2`  *` ; `@ @ 㾀@?@  @h? @&  0 㿐? `  `*`2 `* ? `  *`2 * @  `@㿐??  2`@`, 2 `* @ `<````T1&`L@`  @`2\ @ 2S @`L@ 2@ " @" 9```X.&`P@`  @`%@ 2 @`@ 2 " "  @  㿐??   2` @` ``:  `@     @ ?" 㿐?2     @   @*  㿐 -!  ":"56   @?@??  ?@??@?P@   "  d" p   @" $ ??@?@  $ ?&?@ 0@ 㿐  `2 *` "*` @` *`2` ! *` @ @ 㿐?   * `:@?2 `* @???: :`@:@ 㿐 `  @ ``   `@  "@"@ `  &. > >`.`2 2` * *`@ 6`6 "@`  ` 㿐`2 @"@@`@  `@ ` @ `     @2 ` 2 4``   `@ @` ` 㿐@  @   @ @ `3    @ [R ?@+ S, I` 2  "   `2 ` " ` @` ` 23  :` 2, ! %   `@@  ?+,  &&  ? @  㿐   6 ! `@>   .  2 `* @ % `   @` `2` *`   @` "    * 㿐@`2 @"@`@        @ @% `&!`J@ & @ `*  &J@   @&    ` `@   ``@㿐 & , `( 2` "8 @`" @ && `     ` "8& #@㿐 c  3`   Z` @   @ P`   &   @   @ "8`@ =   2  '`       `  ` 2 ?**`   `@ @  ? `@2"  0 "    "  "    *"@" ""  " 㿐` @  2@  ` 28 2`3  `1?+*` &* `"*@ & 2@ *@ & ** `"( & 2 ( & (8   @ 㿐P     @y m & `   @` X` 2`  O `H `2 \@Ґ #@#` `;"\@ǀ#@#`&`"Ǚ2`?* `+  & 2 + `  " ` @` `  2`  8\:\ ` 2&2` "&& *  @@ "㿐,8`  2`   & @2&, 㿐`?&`"?"? @ `  ``?*@ " `  `@:```*`  <" : *   " 㿐`` @?  @2 `&`   `  & ` 2` 2`& ` `@ఒ2$@  $`"㿐`"@` "`"```  $` "```@ ` 2?* **  # @ 2@ *  "`"`㿐   ` `  3``2`@  . ?". . "?+@  " "@ 2 . 㿐?  `?<  8 %`@0& 2`P`P`\@   @@ `P"`P "``P &`P ,` "@㿐 `2P@P\@   @@ P"P "`P &P  & & @&   $&@ 㿐?   `?` <  4` 2@`@ ` `4 @ *``@$@@@ 2`P:?`P`\@   @@ `P"`P`"``P &`P? $@㿐? `  1`? :` 2 2 #``  `2`( `  `?+ ` @ `@ "   "㿐 *`  `@*@ @ 㿐!#@ $`@  `"`?" @ 㿐 ?`  ",  *` `  * @  @     ', * @  ', * @` 2  %: : @ @  $@"@" " *㿐 ?`  "*  *`@ `   * @ @    * * @   *@  *`   ` "`@  @ * (  "    * ( 逢 㿐 ? @* `*    -*@  *` ` !  `? @  * *           & &@ ?   4   @    0`   @  @  "  #  ` ` 㿐 ` ` 2`   >`+%?#   @ {` v` @o  j 8  `````6` 4V R @N`M8  @@ ` ` $ $ $ $$  $ 2$ *  $`  `  $ $ $ $$  $ 2$ *  $ $ $   |`   $ 2" 2 " 㿐  2 6  2  2  > $ @ 㿈@@쀢? H *` * @"8 ' #:``:` *@  + `@  *`$` " "`"!@+@  @   @ $ 㿐?` 2` "?@&??` 2` "?@&??` 2` "?@&????@ 㿈?` 2` "?@&??` 2` "?@&???@`  +  `* @` @  @`?` `?`@+" 3: `: @ @ ?+ @  *``"  &` ?`""*@ *` * @`㿈?`? 2` "?@&??` 2` "?@&?? 2? ` @ 0y@`  +  `* @` @  @`?+``?$` *` * @` @ A  4  `` ` ``@,` *` * @"` 3: `: @ @ ?+ @  *``"  &` ?"`"*  㿈?`? 2` "?@&??` 2` "?@&???@쀢 ?'` @, * `* @` @  4  ` `* `@ *` * @ "`㿐@@.@.@㿐!  $ " .$ "H " "H J $2"  J  _2"J$, ؄" "@ "H " "H J _"  J  _2" "@ "H " "H J" J " "@ `H " `"`H `* J@8  `"㿐 ߐ ) ڐ ,  @ ``"㿈   ]$ ) |  @쀢   ]@ $ ,  @쀢  ؐ耠@ @$p  [  ]  Q$ @쀢  耠@ D@@$ 57 / "- _ ( $@ܰ# 'Ԑܒo'ذ{Ԙ$Ԁ  *   " 0] $㿈!" @$  "@  㿐.`6`  .`@㿐  %%  % # ?@@ 07v `4 ! $ _+`4! " `@2 $``* " @``* & $ _+`$ a*@! " `@2 $``j* " @``*``  $ _+`$ b*@`! " `@2 $``B* " @``*82! `@: $``&* " @``* 2*2 `* @ $   + " `*``|?"`| K*  $ [*+     ` 2! ,   $   *  ``  `  `  ` x$ x |* x $ x ]:*2 `* @ $   +  # `*  | 2" |@  (*% ,  Ò``$@  *@,``"` )*㿐!  x$ | |`$ |*@ x㿐!  x$ | |`$ |*@ x@ 㿐!  x$ | |`$ |*@ x@`;`d `(@ ?(`"" ##?2  @#`2 #d`#㿀@ && & &  㿀    >  `  :`'쉠B +  @ !    >  ` 2 :`'쉠B 2    @?@   ? )  x  > : `  :`'` B )@ !   > `  :`'`B   @?@ a `?`\  *`@5@31@/: 83 1 , *% #@3   @#   ?@ $$ $  $ x` 2`  `@ ` 2w 2` 2s *`2 `* @    :: `  :`'`B ? (@ ?   :  `  :`'`B @  @ ( l p2" ?@ ??@@?؁?@ $$ $  $ 㿀` 2`  `@ `  2` *`2 `* @    : `  :`'`B?  @ ?@  ?`18  *`@ @ ` 7…@'셠B'  ' *  8$ @ $? @ ? @ ? @ ? @ ? @  ? @ ? @ ?@ $$ $  $ 㿀` 2` "@&` 2` "@&` 2` "@&  -  ` (2` %   *`2`  *`!: ;  @`@ ? @?$@$`$``$` 㿈2 @  @ ? H`@ 㿐@ @@ `" @  Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programediteditor_filenoname.plversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationexpected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loadingunable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2string buffer (-i option) exceeded or infinite term%ld%sbad arg in arithmetic operationA%ld%-se%-ld %f@    ,Pt& / 6 =H @hS ^mt |4@TPHxTi R|jD!l2j<n\FOU]kpQH|R$Xho,d{,,DDp\ (xl"1 9,@ T(aLem|0`(td$4H4 $y``/3: ?CKr XRd^`Hj `Lyq$(<< Pox$hLd|d <X$0\=}Ep|MTDRV]gnv(|(PqhLtL `D,$|4,O|;LG<8V8@`lLyh Ll0|zxpTxuh|0 80$. 8:vxLC RX$\b{Xl sLyT\hh(`nL  l0003=`GT(Q ^cy mry, d0x,T  h!u,x7>VHQ@RYdhmuLx$\,L\XhX0Ho,$ ( x |  & * 14 E8$ MoP W _\H d$ o u@ {| bp.oru.cheap_safe_marginhdefaultsroot_wammes.70mes.73make_stackadd_enginedel_enginemake_constantsvar_array_initmake_var_arraygcc2_compiled.hdef_stringhdef_intsym.cgcc2_compiled.insert_lexatomnoengine.cgcc2_compiled.load.cprev_lenloadoperatorlink_codecurrprediiload_instr_arrayload_fileload_selfgcc2_compiled.badcodeprev_prev_lenlastget_one_intlink_switchskip_headerbuiltins.cgcc2_compiled.name2bufocomparelist2bufdict.cgcc2_compiled.io.cmatch_symmake_termmatch_varmatch_intmatch_charmatch_argsgcc2_compiled.ibuf.24cursormatch_list_elementsmake_funcelloutfloat.cgcc2_compiled.arith_err_mesdebug.cgcc2_compiled.main.cgcc2_compiled.htabledcg_telllvalgetoptsymcatterm_appendcall_engineanswerhgetnew_builtincallocrun_bpatofseeing_telling_atdefwam_bphsettanisdigitstats0overflow_bygstart_wamdestroy_enginestat_leftbp_haltlextableop_classsetarg__flsbufis_engineunix_getenv__ctypeapplyfoutinit_bpuser_bpcopy_from_enginefloat_opfseeksignalswriteexitrandunifydet_append0restart_origfunctorunix_cdhdeflogaccessatomtablemallocsprintfmake_symtablemake_char_arraypowmake_atomtablelocal_errorif0bp_prolog_callmaxask_engineunix_killdouble_to_intsfindall_lift_heapmake_floatinit_csread0bp_versionbp_consinit_instr_lendcg_connectints_to_doubleexec_linkload_engineunwind_trailftellinit_codecputimesscanfmultitask_enginescan_recovershell_1unix_accessc_interfacesee_tell_atolder_file0compareungetcfclosegetenv_sysconffloat_funsreadname2listinit_randomsee_tellstart_profilercopy_termflooradd_instrinterphfulllist2termchdirhcount__iobinput_floatnew_funcwrite_floatmake_byte_arrayinit_common_memnewatommake_opload_kernelexpsrandcreate_enginefindall_store_heapfindall_load_heapbpinstr_lenterm2listlink_haltend_profilerfreeseen_toldhbakoptindopcountinit_engine_memstrip_cont0asinhindexoptargquietmesstartup_messtrcmpsysteminit_orig_wamget_cmd_line_optionsmake_hentryacosfopenvalid_opmatch_termolder_filechange_argstrcpyinsert_opinput_funnewlexsuspend_enginekillbp_exitatomstampfflushquietatanload_engine0fatal_errormainfloat_comparehinit__filbufsetbad_instrstrlenheap_or_bp_haltstat_usedstatbp_heap_topinterp_fromatombakhlistsinhstampdefault_start_pointwarnmesunix_argvfprintfsoutfloat_fun2timessfullop0cosas: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2as: SC3.0 early access 01 Sep 1993 GCC: (GNU) 2.6.2.text.rodata.data.bss.symtab.strtab.comment.shstrtab.rela.text.rela.data L P h l  a a    0 0 v  8$ 8(< @ D @H @L` d h Xl Xpxe     x x         , 0 4 8< @Xa \a le      $,a 0a <}Xhpa xa }  a a            (  ( 0  0$0 84 88D @H @LX H\ H`l Pp Pt ` ` p p               $ (4 8 <H L P\ ` dp t x           }a  }$a ( (, (0X 0\ 0d @h @l Pt P X X h h x xVVV V8 ( , 0 < DX`xa |a   V   , 0  Da Ha Pa `  ha            4  8  T $ \  `  d $          a a a a a a $a (a 8a La Pa \a la pa  0   0 V D x        l  l   h   ( P ,O 0 P l p\ t4 x |@ @ @   @ @ @ @ @ @ @  @    h   h   h4 8 h<\ ` hd  h  h  h   h$h l p pt px |     e       0 0 X X        , 0 @ P TX ha la p t    0 0a a  a    ,Pb Tb \ `td lt|    a a zeb     $ 0 8 < @f D HP Tf ` |     f f          $ (( , (08 @<@ @De           0 4 8 Pa Ta `a       a  a     h h p p   $ ( , 8 X \ h l       4 <a @a D H P T \ ` h la  a a    a Pa Pa PT  $ (, Hep P`T Xe` e, 0`4 8el p`t xe     (e<a P@a PDT\ 0` 0da @a @ ,a @4a @8a @DTj H Ha @a @a @TjRT lX llptx| ` `e( , 0 x48 x<e|a a a a a a a a a (a ,R<a Xa a Pa P  O"""#%&&#' # # $ $( ' ' ' ( (L $/` (/ ,04 00 40 8(t <( @( D) H1 L2x P+ T$ X- \$ `* d%D h.$ l%x p, t% x.L |% ) $ . % $\ 1 1( /H 3 & & .` .l . . . . / / 0 0 5 60 4 : 7 7 7 8$ 8x 8 98!9!:d!;! ;!d!$>!(?0!,?!0?!4@D!8@!<@!@A\!DA!HB!LBl!PB!TC!XC`!\D!`D<!dD`!hD!lD!pD!tEX!xE!|E!F!FT!F!F!H!H!H!K!F!G!GL!Gl!G!G!G!H`!I!KP!K!K!K!I!JX!J !J!J!O,!O,!O,!O,!O,!O,"O,"O,"O," O@"O@"O@"Mx"L8" Lp"$L"(L",M"0M("4MH"8M"<NL"@Nl"DN"HN"LN"POT"TO"X30"\3"`5@"d50"h6D"l6t"p6"t6"x6"|7"70"78"7@"7P"x# #`# #e$@x$x%\x%x& &`& &e& && 't 'x`'| 'e(0(XS(T* *`* * e*hx+ + `+ +e+x,0 ,4`,8 ,<e-L -P`-T -Xe-x/| / /0<0 00 0 00 3ta P3xT3a P4a P4$T48a P4a P4T4m4a P4T5 5 5`5 50z5x55a @5a @60 6468 6L6` @6d6h @66{667_7`7pa P7xT7a 7a 7n7a 7a 7 `77 `7a 79a P9T9r:x:r;0r;r>a >a >x x> x>a >a >a >i>a ?r?\r?r@r@pr@rC C,a C0a Ct C| C C C C CD hDDDhZDa Da DETE a E$a E`NEPEF$F`FFGa tGa pGa pG a tGPGtGGYHH,HdHyHI(I< I@ID IdIQIJ a J$a JXa J\a J J`J JeJMJa Ja K KXKKKL  L L  L8a L@a LtLkLM |M,MHM M`M MeNNPcNlNNOO, 8O0O4 8O@ XODOH XOdUOOOO O O O P P P P P P( P0 P8 P@ PH PP PX P` Ph Pp Px P P P P P P P P P P P P P P P P Q Q Q Q Q Q( Q0 Q8 Q^RR R R R R Ra PRa Ra Ra Sl Sp SxS S S S S SS S S S ST T TT  T0a PT4TTP T\ TxU UT U Va PVTV a PV$ V0a PV<\Va Va V VV VVfHV\V_tV^VaVeVeVeVeVeVeVcV\V\WgWgWgW \WgWgWgWgW gW$gW(gW,gW0gW4gW8dW<d0W@gWDgWHgWLgWPgWTgWXgW\gW`gWdgWhgWlgWpgWtgWxgW|gWgWgWgWgW\WeW_HWgWgWgWgWgWgWgWgWgWgWfWgWgWgDWgWgWgWgWgWgWgWfWgWgWgXgXgXgX gXgXgXgXgX gX$gX(gX,gX0gX4gX8gX<gX@gXDgXHgXLgXPgXTgXXgX\gX`gXdgXhgXlgXpgXtgXxgX|gXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgYgYgYgY gYgYgYgYgY gY$gY(gY,gY0gY4gY8gY<gY@gYDgYHgDYLgYPgYTgYXgY\gY`gYdgYhgYlgYpgYtgYxgY|gYgYYY[YYa PYa PYa PY}Y% Y% Y- Y- Y% Y+ Y+ Z- Z- Z8+ Z Z ZZ+ Z+ Z+ Z% Z% [L [P+ [T+ [ [ [ [+ [[+ [ 0[[ 0[- [- [+ [+ \ `\\  `\\4a \<% \@a \D% \H}\\a P\`% \da P\hT\l% \+ \+ \+ \+ \+ \+ \" \" \" \" ]4, ]8, ]p" ], ], ^+ ^+ ^" ^" ^(" ^@" ^x, ^|, ^" _ , _, _H+ _L+ _t+ _x+ _" _" _" _" _, _, _, `, `$, `0, `H, `\, `" `, `, `, a, a(, a4, aL, a`, a+ a+ a" a" a" a" b , b, b, b4, bH, bT, bl, b, b" c, c, c , c8, cL, cX, cp, c, c+ c+ c" c" c, d, d0+ d4+ dD" dH" d" d" eDe+ e+ ef+ f+ fH+ fL+ f|+ fa fa f+ f+ g% g % gD+ gH+ g+ g+ g, g" g g" g g, g" h xh `h xh$ h, h< h@ hD+ hL" hT+ h\" hh, hta @hx, h|a @h% h% ha @ha @h}ha @hi(iHiia ia ia ia i i ijjj0jD jL jP jX j\ j` jljt jxj| ja jj jj j jj kk k k k k k k4a xkLkkk k la xla xl(l\a xlla xlp la xla xll l l l l l 8l 8lla la m m mm m Xm Xmm n nn n, n0n4 nTa xnX n\ n`a xnhnpnta xn n n[ n[ n n np np nol opot oa oa oa o oo op Hp p Hp p$ p,p@pp ppx pp p pp p pq q q q( q0qL qP qTq q q 0q 0qq Xq Xqr rr rrrrrrsrs0rsPrsprsrsrsrra ra ra rss8sXsp st sx s|f s sf s s s s s s s s stdt$xtLxt tt t ta xt ta xt t u u ua xu$a xu( u0 u4 u<a xu@ uHa xuT uX u\uda xuha xuluu uu uv v  v v vHv\ v` vdv @vv @v v va dva dva dvTw `w w$ `w4 hw< hwD\wTa wX w` wha wp `wtwx `w}wa w w wa wa pwa pw wa dwa dwa dwTx  xx x(\x8a x< xD xLa xT xXx\ xt}xa x x xa xa txa tx xx xx ya ya y$ (y(y, (y8a y<a yDsy|a ya y (yy (ya ya yya ya y Xya y Xza za za zTz<\zHa zP}zXa z\z`a zda zha za za za z\zza za zza zz X{( {0a x{4 {<a x{@{H{La x{pa x{t {xa x{| {{ { {|d |p |}(a l},a l}Ha l}La l}`}~Dx~dx8 < @ D HP TX xa x a x a x  ,a x0a x@a xDa a a a a |a xa xxa a  a a $xX \` t |   a a     H` H X XX \`     (  ,  0H L`P < HD`H H X` X h$ hT X \ ` |  x ( (a  @ @a a  ` `a a  ` ea 0a 4a Pa Ta a  ` ea a a xT \       0 4`8 <e 0 0 X X    ( 0 T X \| a  a   0 0 H He L  L   $L , 0 @ X \ ` l L L L L L 0 4 8 @ T hX\ h` dL l x   L L (L LL XL l p p p  L L L L  L     L L L L L   p      L L   , 0 4L 8 DL d t   L a  L 0a P4a PD  a a   ` eL a $a La hL a a a a a   a a (a $,a $8a $Ha 4\a 4da 4g(@` hL tL \   h hL L   $a `,}8a `@}Ta `\}d l a a  L L a a        $ (@ D H P d hhl hxL L L L T \ l 8p 8t L L a a        ,L 8L Da La  ` ` L L   h  hL (L 0 < H P    L L (a 0a h ` `L L    ,A 0A 8A @l Dl TA XA `A tA xA |A l l A A A A A A A A A l l HA XA dA pA tA |A l l A A A A A A l l A A A A ,A 0A 4A DA PA \A `A hA pl tl A A A A A A l l A A A A A A (A ,A 4l 8l HA LA TA hA lA pA A a a L a a  PdA h lA tx a |a |a | a |a |  0 48 \a |l@ p@ |  a |@ a |a |a |a L L a |a |a | L @ @  $ (0a |4@ <a |Ta |\a |xa a |a |a |@ @   a |@ a |a |a |a $@ (@ 0 4 8@a |D@ La |da |la |a a |a |a |a a a |Ha Pa ha la xa |a |a |a |a a a a |a a a 8 @ Pa |la |ta |a a a |a |a |a |a | a |$a (a `a da a a   a la l a l   a l$ 00D h |a l  a l 0 0 @ 0Ta lh l xa l 0 0a l  a l 0$( 0H `L ``dhl,p,tx,|,,,La la l  H 0\a lp  t  a l 0 0a l    a l 0,0 0`t~~a la l0 8 d 0xa l ( (a l 0 0    $(,048<@DHLPTX\`dhlptx|p4H\ 0 08L~`t]a la l a xa x  8 8Xa x$a x4|a la la l H HoW04PKќ40L"` *3S=Ty Hh4  BinProlog3.45/bin/bp.parisc.hp100755 764 764 1610000 5764215243 15351 0ustar javierjavier@i@h  G;( @i 92453-07A09.74/ 92453-07A08.56.05*v 82$Header: crt0.s,v 70.8 92/05/19 15:52:46 ssa Exp $ 92453-07A09.74//@  X"LX T<T<tX iiX iiX i~i~X 8@P@PX HXXX IX X8>(@`>(@L>( @`>(@,>(@x>(8@8>(\@\>((P@(P>(&x@x >((@>(P@>(R@Y ?  @ $PRIVATE$$DLT$$PLT$ $SHLIB_DATA$$TEXT$ $SHLIB_INFO$ $DATA_START$ $MILLICODE$$LIT$ $LITSTATIC$$CODE$$UNWIND_START$$UNWIND$MILLICODE$$UNWIND$ $UNWIND_END$$RECOVER_START$$RECOVER$MILLICODE$ $RECOVER$ $RECOVER_END$ $PFA_COUNTER$$PFA_COUNTER_END$$DATA$ $STATICDATA$ $SHORTDATA$$SHORTSTATICDATA$$GLOBAL$ $SHORTBSS$$BSS$N0p"Ux"   @@U%@U,@U4@U9@UB@UJ@UR@UY@Ua@Uf@UFUKp(U K@U lqv} &-49@K binpro/lib/libc.slerrno_SYSTEM_IDoptind_optarg_iob__ctype2__ctype__alnumoptarg_optind_end__iobkillmodffflush__filbuf_startchdirsprintfaccesstimessignalfopen__flsbufmallocsscanffreeftellisdigitrandfseeksystematofgetenvexitfprintfstrcmpcallocstrlenfclosegetoptstrcpystatungetcsrandmainstart_wam4?.2* 12.֠ 6.? 6F9p1^.1^N 3 3 n.=.?.+.>3N 9 51]N/0<1_N/0&J_H ^B0.0.3N3101@H=4/ 6@43n 2@0H#0 4?.2+. @P#  0 1Kn #81`H#"0H֢2 01Kn @XT/@֠ 6@.>.?333@֠ 6 .>.?333"1`H"֠ 6 @.0.ҵ 01jn @XT@֠ 6 .>.?3.3.3@֠ 6 @.>.?3.3.3 1@H  0r@2֠ 6 .>.?3֠ 6 .>.?3 (1`H  "0n 0֠ 6 .(7B??/b{t?du@s5=*Ŀ ;?3\0B?f>[Sr?>\no ?_@ԓ? VHe?Nu up?PmL?R>[}b?>dTߖ?iζ ?c?<Ay?gp3^?>\qȮ?|>W2s?ٌ>@{?Y:F?ܾcA3?Јel:. ?>q1&{Z?Ȱn>|Ps?ʜ$|׋?̄mbd?j>q݉3Y?Нz 'iѹ?x8H;?J>kaWT8?>(N ?`>r֜?ٌVR ?:K4rrL#7?@ZB:?8<(ݺ?mf>|Ci?lk_? /?&Zo1i?p>su*?nXxXz.s?m&*?9e=e?> 4?(?`ʒ?b>[D;?>up+-?O 9=C?>,ֶ;?-p>GIXG?`V}?x>33A7?>B6?op+#?@?>%q ?`>9K?"U?nj>eY#?U?^>p?BNv,Nt?th| o? \m6?NK?sd? >>q?>q)E?>!P|?1RS@?J=yJ?_>7?pSk6Q?~:>e'?X>?J ?>VnS?3V?!wz\,!>wz\,@ !> F& ! F&@ !TD-UU4?44?4.2*֠ 6. aB1)N.(.72.82.92.&2.'2.:2.;3YN.<ݗ37N.+3N.90N.83fN.:2N2n17N`2 P0.@0.1h3(.0+.0&.08`0. 1iN2 e3 N  "1h3(P0.@ 0.33H 0B֠ 6=97.(0n@V@f@Lc??=YkjmcVeb-NcxQSJUƃmNF(Oͻ?x Rx0j{"|> F&3?!T>! F&3@ !TA U@A -@j@4! A @2A @@4! ֠ 6>1. 3N4?4A @@4! ֠ 6=`8.2.3N3(P0.  3N4?A4M@@@4! ֠ 6<`@.@ 3N2.3N 3(2.3N@0. 3(4044@4@4?ր 6.2*.?#  0bV t1_N.8 R0.33.<&X3.)3N .: W 91I. 8.;1kN.=.>3N.?3N@3N.7ן 4 7H^6/=3/0(}ߝ/0&3N/62[/07zM/?w/0'/&_X :J3./0=3/(}ߝ/&3N/062[/7zM/0?w/'/0&_X :J0.6/0=3/(}ߝ/&3N/062[/7zM/0?w/'/0&_X :J3./=3/0(}ߝ/0&3N/62[/07zM/?w/0'/&_X :J0. d27DV d8 0H1_N.8 R0.33.<&X3.>3N .7.=. W3N3N3 N 1^. 1K.3.3. 1j 1j. 1w. 1|3. 1K 1K. 1]. 1\3. 1j 1j. 1+. 1|. 9.:E1I.  @B 62@ 1@1@N 79 7/0(4?U4 @7R6"1;. 1F. 1:. 1I. 3i1F 3.3 . 6"3i1F 3.1X. 1;. 1F. 1:. 1*. 6#   '1H 4?U}4@4B7b6*1;. 1F. 1:. 1K. 1 n3i1F 3.3 . 1 n6*3i1F 3.1X. 1 n1;. 1F. 1:. 1j. 1 n6#   @:!p% =Uwz@4_0mȃ??!Uwz\,?EUUU?K?UUUUUQ*²?VMFJZݿn "O2%z?e ?f (z{>g6|;?),?M\g>kN?na:?}>^4[%?gjςZ?Ҕ.՟?Ҕ82*p>}j? ?Տu?ՏO>,Z4?}⦮c?}QwQ>C¹V͋?] \?]Qc⾈!8>O?+]8;?+^ͺ%@Z?s"?sq.o2m?;9h?<=8~X1?p5?fT^E<?L% ?L-&nbl ?}i4?}jҾ3g>$"?栞f;?栞ДA* $=N?"j? S>E-:?輀kA?輀0~1>,?GA?Œg[yt>tPсc?f)?f5G \8MP?rEn>?r:hsy>0G?8񀽱?8(^h>^I?zrFK? ~0? ~ixQ?b\?b*=ֺX]+T?U?Vs.mm1 }?؍%&?؎S9 %9lW?!ym~?"???FR9UUUUUUր 6?.? 1_N ր 6?.? 1_N ր 6?q.?1_N ր 6?A.?1_N Zր 6? .?.2*4Ju!B 1_N Zր 6>.?.2*4Ju  M1_N Zր 6>9.?.2*4Ju rM1_N Zր 6=.?.2*4Ju  1_N W4?.2*uc4%ڀ&b4 ..2+&"u4FJ.3?. 9֠ 6 /9.07.0(1YN.0?2.0>3N.0=.0;3N.08G/73[91V.337.F36N6?_9&^W֠ 61N2/9.0:[/(.0?1V_.082.0>3\3j 32N3Nj.06@ R0.3.0?_^3&X33N.0?.0:י:E V֠ 6. R.:3.6 3 6@ 4?u4OŠ/j 2@J00  Z.2+Җu! J!Ҁ# "*.2+Җu Ҁ 2Ҁ 2KR0HK:/B0n֠ 6).(7B ֠ 6).(1h.3.3K 0$ =0 . A%@ 0.!rҀ!Zb .:0 .2+Җu *Ҁ .R0 L r09@֠ 6( .(4 Ҁ W@2֠ 6'.( 1N0H7B P "@ b z1@@ 1@H4`J֠ 6&.?3n4 ` 1JN_4?.2*ua4'!4 . 22.1_. 9֠ 6p /9.0(1YN.0?.0>3N.0=3N.0;3N.08G/73[933H6X9&3.063^N/<1N.0:/(YE33(3H&"& 2@T֠ 6$.?3N ֠ 6$h.?1.4?.2*ua4%R!4 . 22.1_. 9֠ 6 /9.0(1YN.0?.0>3N.0=3N.0;3N.08G/73[933H6X9&3.063^N/<1N.0:/(.072N2N2NYE33(3H#R 2@T֠ 6!.?3N ֠ 6!.?1.4?.2*ua4"!4 . 22.1_. 9֠ 60 /9.0(1YN.0?.0>3N.0=3N.0;3N.08G/73[933H6X9&33^N/<1N37./(3x.072N2N2NYG3(3H  2@bT֠ 6@.?3N ֠ 6@.?1. 2֠ 6.(7B#0n 2@1@H#0 4?.2*֠ 6 6AB.(.? R0.1HN.>2.83A&_33N.:xU.61X. .=VҖ.8Z&] 83N 1ZN.1Z.;.83zN33[@*3N6@b4?.#ua4`r.u4@ 2 2@!J0 ֠ 6.( @7D  2@j 0 phB.֠ 6`.?3N0H7DB7֠ 6p.(7.2*J 6 2V"_jB.7.2+4?.2*. u PAV֠ 66@. ֠ 6$ .0<3N3z.0*2n3\3hV0. 1HN6@. 4?u4 z 2@Z9 4`2.V0. ֠ 6V. 1N4! D֠ 6"x.:1JN.?1N.61N.=.7.;.> X3^3vN3N24?.2*֠ 6(AR8@AV6@z}. ֠ 6.83N.63N.*3n33[ 1HN.AV. ֠ 6.83N.63N.*3v.Ⱦ2n1[2.3w. 1HNAV5. ֠ 6p.83N.63N.*3x.3[2n2.3w.2 1HN4?.2*. ֠ 6AA*.=P. 3N . AV֠ 6@@@@.=3N.83N.*3}..>33W3[2n1HN3V0. u4 " 2@.V0. .>1JN.:.;.83N.?3N.73N.6Ǜ3_33w_3N2N3n1H+\a ?0?@@B?@WGe+?.B9?Ge+?{&/e{0g?H+\a ?0Ǵ O`k?m]q? \F?H҅$%y?I<͡A@? ߁ >|y??||>a` ??1g)ʁ>=??t?>>`S0? ?`v?`v4?B?AA__>Q\is}??V ?@´H>NXC??qq qq:B?(?>0e4-???/"7Y*[?–?NO? 6i7f\3?N?򆼡(? ה5 y ??`jc?- Lw5{ɽ?Ǭ?AAoo>=?R?쎕3?!Ң{#X??p˼?̐?H?&< :B?(?818T8:U?Ϻ?k?'!~u4o c?Ф?aayy瞿j>??h?>K?*?_A}?_A}? W\#??Lx? ^)2>ZQzq?Ӧ?Et]FEt]FxO`?b?\ p?, p.?9??ll"}'}'Ҿ)k??hh"//? b؈?ֆ?BY !d?) !d,?:?`X~?pUl??Ɉ+W;6x>`-Z?ؚ?0X?*F+aAQm?H?UUUUUU%UUUUUU h ??/\_? SA 1?ڜ?/9XƇ?yQ?D?֠R[֠R[LK??zG{?,(\)p˼?ܐ?Feb?/ [?]?z>0q(/??,?^rT>#>u?t?;;(؝?ݖl??88(ٿ$?߰?R+x>+x5"KE',?&?#J+@>.o',?r?/h? % {? J??M,M,åf8? ?A)?JyJ?z^52?T?sP'5%^?֌-ٌ??I$I$+mm?ל4{??!x!x(?2?}p/pG=ܢ?z?/*Ka?=w/??a{a{fXw%??,>Npv?N?[_u' ,4[_u,V-wI ??UUUUUU?C8CP@B# @0ApL@K<???@??@P@?@>e*{y1a@WrK)A,/ ؿVnI@َe)@waqS[]?Yt%]/nۍA?kUy<1?蟙Zӭ<4]́?3Ob^0?v^GuXO~T;?K<=z-?݅R<ePH?g.WK*@j@-gqXZ]XZ]XZ]XZ]d@"Z]> ZZ]> ZZ]9 Z8 =@Y :Z @Z@ ZZZ] ZZ @"ZY :ZZ@= ZZZ@= Z ZY :Z]ya: =]: =]  : =@]ZBu ZZZZ ZZ]ya: =]: =]  : = @]ZB ZZZM ZZY :}@]Be]yZZ5@*Z@ya AZ@ya AZ]ya A @Z@] Z]: =] y a: =]Y(ZYY8Z@] Z]: =] y a: =]Y(Z YY8Z]Y Z @*Z@YA AZ@YA AZ]YA A @ ZZmZY] : : :@`898 t:` @A =Z 98@9?Z @? ]@? ]@?m ZA=?U @?- Z= ZA? ] ZA> > @> Z= Z> ] ZA>e z ZA>M  Z>% : ZA AA0 ] Z=!A:== Z=: Z= ] Z=e AAz Z=M  Z=% A: Z AA0 ] Z AA AA ZA<  Z<! ZA A ] ZA ]>!A=> > A=:A>q >Q!=>9 > A=?#Z>B @V   @  A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  :R @@@ @]+@@+@@{@@ @@S@ @V@ @V+@#@ @ :>B  @ Z A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  a@@@ @]]@]@{@k@]@k@ @@ @@@ : @V   @A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A ˡF ! !V @JJ k?=@A @*  XB77"= @ =TH!ca@H@˷!(?!(`! XHӷ 8!3 (:!8H 7( Ǹ@0=tH!ca@]0HH!ca@]XHӡ!A@נ [H!(9з!(@@@H!(9HH!(9H!(9H!(9 pH!(9((H!(90H!(98H!(9@PH!(9HH!(9PH!(9XxH!(9`0H!(9hH!(9pH!(9xXH!(9H!(9H!(9H!(98H!(9H!(9H!(9`H!(9H!(9H!(9H!(9@H!(9H!(9H!(9hH!(9 Hk!? Hk!?Hk!?Hk!?!Hk!?)Hk!?1Hk!?9Hk!?AHk!?IHk!?QHk!?YHk!?aHk!?iHk!?qHk!?yHk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?Hk!?@k!?@:`! XH =!3HHo!=A;`r@H_7 H 873OWo7HKW? ]A !נ [!>@XKX?k7? KW?k8?KX?!k7?KW?)k8?!KX?1k7?)KW?9k8?1KX?Ak7?9KW?Ik8?AKX?Qk7?IKW?Yk8?QKX?ak7?YKW?ik8?aKX?qk7?iKW?yk8?qKX?k7?yKW?k8?KX?k7?KW?k8?KX?k7?KW?k8?KX?k7?KW?k8?KX?k7?KW?k8?KX?k7?KW?k8?KX?k7?KW?k8?KX?k7?KW?k8?@k7?H@ =73o7OW???!TD-@?@Ku>Ks>  k?#hh7{ 07K#+wh#'y 4Kd?Eke?(43 `'y H? zG+4>DEFYXZ#%BZYX^k?##@B@@@@ BK?@ @@k?ok= k=k=k=!k=)k=1k=9k=Ak=Ik=Qk=Y+wDCGE4: Y#.BF 04 ?484Y#+B7>I4ZX#/ B *4p4Y#+BG>M4] BG>I4t *4YX#+BK>ZX#/B7=4`ZX#/ B G= *4YX#+BK=K> K>K>)k?k?4 4 Z Y W#/BL 2+4: 4@ X#+BK>!k?k?4ZY4#/BH 2+4: 4P X#+B@ k?k?44,Z Y#/B 2+4`4:  X#+BZ N#.BK>1K> lk=k=k?k=k=  +w4<+`h(( 4"(04$ +`k?4?Wk=Xk?k?4%hk?y7=k?q##BKK?K?K? @O?@ \@\B7 B??7@TS 44Z#!@7` Z##@_S@  4 "@@@@  4 "@R@@@  4 "@@@@  4 "@@@@  4 "@@@@  4& "@R@@@  4 "@@@@+`4!ph<4?@@@\@K?@ @Ku>AKs>I k?Ku?1Ks?9 k?Ku>!Ks>) k?Ku?!Ks?) k?Ku?QKs?Y k?Ku>Ks> k?Ku>Ks> k?Ku?Ks? k?Ku?Ks? k?Ku>Ks> k?Ku>QKs>Y k?Ku?aKs?i k?Ku?AKs?I k?Ku=Ks= k?Ku>Ks> k?Ku=Ks= k?Ku>qKs>y k?Ku>Ks> k?Ku?Ks? k?Ku>aKs>i k?Ku?qKs?y k?Ku?Ks? k?Ku>1Ks>9 k?Ku>Ks> k?Ku=Ks= k?Ku?Ks? k?Ku>Ks> k?Ku>Ks> k?Ku?Ks? k?Ku>Ks> k?Ku?Ks?  k?k?_@/0$K?@/'0k?77?# BK?!  s4#0-@\K?Y@7?+wH5B46\@@k?7k?9k?1+wH?`2+w4: K?9K?1# BK?Y@7?k?7k=9k=1# &B+`H3 |k=K=4#0*8@SK=4#!@7=+w49K=9K=1k?k?# B+w4:P7=# 'BK=1# !BK=Y@7=k?7k?9+w4:XK?9# (BK?Y@7?k?7k?9+w4: +w49hK?9# BK?Y@7?k?7k?9+w4: +w49K?9# B4# )pBK?Y@7?k?7k?9k?1k?)+wH5bK?946 K?9K?)Jh RA4!?k?K?``B+w4: +w49K?# B:+w4: +w49K?9# BK?94  J+w4: +w49K?98# Br+w4: +w49 K?9 t+`H5` K?9# BK?1# )B\K?Y@7?k?7+`H! 4# )pBK?Y@7?k?7k?9K?9# )B# -8BK?Y@7?k?7k?9k?1k?)k?!K?9K?1K?) s H3( k?+wH5`K?1K?)  aJK?6+w4: +w498K?1K?) s H8@K?k?K?!k?# B# -8BK?Y@7?k?ok?k?9k?1k?)K?9Y# *BCK?1Y# *BDK?)Y# *BX+`@3wZY# 'xBK?YK?@O?k?ok?9k?1k?)K?9Y# *BCK?1Y# *BYK?)ִB4 X+`@!7Z# 'xBK?Y@O?k?7k?9k?1+w4:Y# *B+`h<+w4:4# *B+`h<+w4:4# *B+`h<+w4:Y# *B+`h<+w4:Y# *B+`h<+w4:Y# *B+`h<+w4:Y# *B+`h<+w4:4# *B+`h<+w4:Y# *B+`h< +w4: 4# *B+`h<(+w4:04# *B+`h<0+w4:H4# *B+`h<8+w4:`Y# *B+`h<@+w4:xY# *B+`h<H+w4:Y# *B+`h<P+w4:Y# *B+`h<X+w4:Y# *B+`h<`+w4:Y# *B+`h<+w4:Y# *B+`h<+w4:Y# *B+`h<+w4:Y# *B+`h<+w4:Y# *B+`h<+w4:Y# *B+`h<+w4:Y# *B+`h<+w4: Y# *B+`h<+w4: Y# *B+`h<+w4: (Y# *B+`h<+w4: @Y# *B+`h<h+`h<+`h<+`H?+`h?+`H3+`h3+w4: PY# *B+`h<p+`H:H+`H9h+`H8+`@4җ# 'xB+`H:P+`H9h+`H8+`@5ҷ# 'xB+w4: h4# *B+`h<x+`h K?9+`h6 K?1+`h?(K?Y@7?k?o+w4: x+w49 +w48 # /B 4R+w4: +w49 +w48 # /B 4cc 4J+w4: +w49 4#0 B 4׃K?Y@O?k?7k?9K?94# !@BK?Y@7?k?7k?9K?94# !@BK?Y@7?k?7k?9K?94# !@BK?Y@7?k?7k?9K?94# !@BK?Y@7?k?7k?9K?9# !pBk?k?K?K?9@jK?K? K?K? K?4?k?K?K?9_@K?K?Y@7?k?7k?9k?1K?1#0-xBk?9K?96K?9 6K?9K?Y@7?k?7k?9k?1k?)k?!K?9K?1K?9K?)K?1K?)6@ P\K? *K?1# !pBk?K?9K?j K?9J K?1?K?)  uK?9h60K?9K K?9K?9J K?9 6K?9K0K?9j(K?9j8K?9K?!j@K?9K t 4הK?Y@7?k?ok>k?K>+wH94+w47 0k?#0.B04K? k?# B04֓K? k?#,B+wH:#0,pB+`h<+`h<+`H!?04K? tk?K>6 +wH94+w47 @k?#0.B04K? k?+`H:4#0.pB04K? k?44# !@B+`h<004֓K? k?+`H!04??+`h?8# &xB 4"#0*B 4ct04ִK? k?K? 2+w4: P# )B\4K>@O?k?7k?9k?1k?)4~k?+`H48K?+`H60 42+w4: # )B\+`H?87+`h38+`H48K?9K?16B4 SK?9JK?)6K?9Ka4K?Y@7?7k?94k?ֿuk?K?9&k?K?K?@ K?k?K?K?` K?k?K?@7?k?7k?9k?1k?)k?!k?K?97K?)4+w47 k?#0.B04֓K? k?K?94:K?!4+w47 k?#0.B04K? tk?K?1#&XBXK?96HK?1+w47 k?#0.B04K? k?K?96h+wH94+w47 k?#0.B046K??k?K?9K?K?#$B 2+w4: # )BX\K? 2+w4: 8# )B\4K?Y@7?k?+`H50+`H68ՠZJK? @46TU+`H68տ@\@@k?7k?9+`H?0+`H38KK?9 R+`H68J+`H386t?+`h48h47V_+`H!8?]@+w4: p# )B\K?Y@7?k?ok>k>k>k>4 4H# !@BC` _\K>֓ k>K> k>K> k>k?K?l`K?  K?K>  49H6HKW?]#!H@K?4?k?K?lU@K>K>K>4k?K>k?Z#'B \\K>@O?k?7k?9K?9#*B \K?9J# !BK?9H:# !BK?9Kh# !BK?9Jz# !BK?9# !B4K?Y@7?k?7k?9K?9 "# &B7k?9K?9 4k?9K?9# !BK?Y@7?k?@@k?@@k?7k>k>k?1K>k?)K>k?!K?)6?k?)(*K>K>+w48 # "BӖc?9'C?9??H`P& @@@@@@@@@@X@`@P@@@0@ @@@h@@@0@+wH:+w49 7?I# "0B *K?Iִ JҶ+wh6K?14?k?1J+wH:+w49 7?Q# "0B *K?Q֓ Jҕ+wh5K?16k?1+wH:+w49 7?Y# "0B *K?Y Jt+wh4K?16k?1+wH:+w49 7?a# "0B *K?a J+wh3K?16k?1+wH:+w49 7?i# "0B *K?i6 J?+wh?K?16tk?1+wH:+w49 7?q# "0B jK?q`ZK?q426@B4K?qt>t@>ֿ+wh5K?16k?1+wH:+w49 7?y# "0B jK?y`ZK?y42@B4K?y>a@?>+wh?K?16tk?1:+wH:+w49 7?# "0B "K? J+wh6K?14?k?1+wH:+w49 7?# "0B K?+wh3K?16k?1"K?) K?14?k?1K?)6t?k?)` RK>K>+w48 # "Bӕc?98%@K?1 +w4: +w49 +w48 0+w47 +w4! 8k?# B4# )pB+wH?k?!K?!K>@"K>K?! k?Ak?AK?AK>@7?k?7+`4:@+w49 P44Z# B+`4<@K?Y@7?k?7+w4? xk?1+w43 k?9+w44k?A+w45pk?Y+w46xk?I+w4!k?Q#*BX+`4:+w49K?1K?9k?K?Ak?K?Qk?+H5 k?K?Ik?yK?Yk?q# B+`4<K>@7?k?ok>k>+`4#+w4?+`h?+w43+`h3# &B+`h<K>K># HBk?#*BY+w4:# 'B+`` Z# B 8\K>K>#0!B4+``4K?Y#0)B \4+``5Z#/pB+wH9+wH8+wH7k?k?Z#'B \\K>@O?k?ok?9+`4#4+wH9 # "`B4+wH9 # "`BK?9 :+w4: +w49K?9# B+`H! Z# -BZ#0- Bk?9Z# 0BK?9# )pBK?Y@O?k?7k?9K?9# BK?9# ,BZ#.BK?Y@7?k?7k?+wH:#0- B+`h<`04K? k?+wH:#0,B+`h<04K? k?+`h +wH3S#0,pB+`h<P+`h<@04ִK? k?K?04דK?Y@7?k?7k?9+`H4Pk?K?9# "B+`H5P +wH!7?+`H4@ t"+w4:0# *@BK?96k?9B+`H4P6+`h5P` bK?96k?9B+`H4P6+`h5P`?@K?K?Y@7?k?7k?9+w4: +w49`+`H8K?9# B+w4:# )B4 # )pBK?Y@7?k?ok?k?9K?9_Bt Zֿ6SVBtҁ5 Bҕ?@+wH66??+`H? 6t?+wH56? !:+`H!` # !+`H3`c :K?9+`H5` # "B 4v+wH!4??  +`H3`c j+`H5` ?@K?9+`H!` # # "B?E@+`H?` `!+`@4ҕ 2+`H6 J+`@!? *K?9+`H4` @K?9# "B+`H6`  <+`H?7+`h3+`@4+`H5u+`H?+wH3t+wH5Ҷ ?`"+w4:# $@B8\ "+w4:# $@B\K?YK?@O?7c??k?+wH?K?+`H4K? C??ar+`H4`K? JK?+`H3` +`H56?+`h6K?4?k?+wH3K?t @@7?k?7k?9k?1K?14ՠr+w4: +w49K?9K?1# B+w4:# )Bk?1K?9# %B< J?4 Tֿ K?1  \K?Y@7?k?k?K?K?ယK?6t?k?K?J46  K? vK? k?K?K?e@K?@@k?7k?9K?9JK?9+H3 p+`h3+`H4P+`h4+`H5+`h5+`H6H+`h6# &B+`h<K?Y@7?k?7k?9K?9H?K?9+`H4+h4 p+`H5+`h5P4#0$XB4# )xBZ#*@B4#*@BK?9J@K?9k0K?Y@7?k?7+`H:@+`H9(# .Bk?K?` "+x4:@# *@BK?K?Y@7?k?7k?9k?1K?1J?k?K?46 :+x4:x# )B4k?K?ҕk?K? K?# )pBK?9K?Y@7?k?ok?k?k?9k?1k?)k?!K?!4?SK?96cDK?1 uK?!Ĩ4?CD4?EDHk?94  RK?9 BK?9Hk?94 ` K?9?@Huk?14  RK?1 BK?1Hsk?14  K?1?@e'zK?94 `"K?14 !K?1K?9K?1K?9tK?1K?!J?5K?)KK?)JbK?)J4K?)+x47# .B4# )pBK?1K?)7Jt6uK?14604֓ 4K?15 4 SK?1K?9K?9K?!J?5K?)KK?)JbK?)J4K?)+x47# .B4# )pBK?9K?)7Jt6uK?146!K?94 046? 4K?9t 4ֿ VK?9K?1 6K?1K?!Jt?񊟀K?)JK?)H?bK?)Jz4K?)+x47# .B4# )pBK?1K?)6J4? 4K?9K?1 \K?94 $"K?9k?9`"rK?)JZ4K?)+x47(Z# .B4# )pBK?!J?#K?)KK?)JbK?)J4K?)+x478# .B4# )pBK?1K?)Ka4tK?)JK?)4?K6t eK?94D 6K?94DK?96?k?9 rK?9 4DK?9 t 4DK?94??k?9?@K?!d5@4K?YK?K?@O?k?7k?9+w4: +x49XK?9J4 # B4# )pBK?Y@7?k?7k?9k?1+`H:@K?9# .Bk? 2K?9+x49K?1# *BK?K?Y@7?k?7k?9k?1K?1H?K?1JtK?1jK?1Jh4:@7S?s6tYS+`H5 U4 2 H3 6??@7(K?1JK?1H? K?9K?1k?#+B04הK?Y@7?k?7k?9# .BZK?9#0+BK?Y@7?k?7k?9k?1k?)k?!K?9K?1K?1+`H3 +`H:@+`H9# .Bk?!4 BK?1 JK? a6??@K?6(k?K?K?)K?KK?K?J K? 6K?1K?)K?!K?K?k?#+BK?Y@7?k?ok?k?k?9k?1k?)K?9#*HB 2+x4:# )B\K?9JcK?9JK?9jK?9H?h7@4?K?1 +`H4 +`H:@+`H9# .B4 2 J 6??@4s(eK?9JuK?9J a4K?9JK?1K?9H?K?)K?9Jj K?9h%XK?9kK?9Jt\K?YK?K?@O?k?7k?9K?9J?6?K?9H9?K?9K?#0/`BK?Y@7?k?7k?9K?9#*HB x\K?9JyXK?9JK?9JJK?9H?h7@K?9k?#+BK?Y@7?k?7k?9K?9JJ* :42K?9JtK?9JPJ K?9#"xB K?9H?K \K?Y@7?k?7k?9k?1k?)k?!K?9JtJҶA!AZ!J@† "4K?9KaK?1K?9jXK?9K?)jK?9KK?!tK?14K?9Jx 54*K?9JtK?1K?9jXK?9K?)h?K?9JtK?!K?14"K?9H?K?1K?9jXK?9K?)jK?9H?K?!pK?1K?9JJ+x49K?9# *B4 # )pB\K?Y@7?k?7k?9k?1k?)k?!K?9JH?h z4:K?9JK?1K?9kXK?9K?)jtK?9JK?!K?1+w4: +x49 K?9K?9KJtҗ# B4"# )pB\K?Y@7?k?ok?k?9K?9@ k?9+`H?8+`H30 P\+`H406+`H68ՠJH?Ktk?K? 4"H3\6VU+`H!85e@+`H?07k?K?96t?k?9`!2HdHJk?K? K?l ZZ#"xB 2HJҶ 4BH+`H38c 2K? bk?+`H5064vACK?97?k?9>@4K?YK?@O?k?ok? k?k?k?!k>k>k>k>CK>K>JF4 HQZ@@ @ @ @ p@ @@@@ (@@@@@@ @@P@h@0@(@T@@@@@H@@4@@@(@ @x@l@@4@@<@@@x@@0@@@@@@P@@@@@@<@\@,@L@@<@ @,@@@@@ @8@H@@@@@@@(@@@@ @ @l@@@d@@@@$@T@@L@@@p@ @@(@ @ h@ @ 8@ H@ @ (@P@p@@@@@@x@(@ @(@@@@@(@@h@(@@D@@@@D@<@4@@@@@@t@d@T@D@4@T@D@4@,@t@ d@ @ @ @ d@ @<@@@\@@D@t@@X@@@p@ @ @ @@8@@@H@@@,\` BK>U c4cK>6k>K>K> 6K>7k>K>U K>4?dk>` K>U JK>K>Y#0 B K>Jk>4cK>7k>K>U JK>7k>K>6\k>K>U6K4 e pGHG4  B :EHG4  ?@4 !CK>H??债K>JtK>JԀbK>H:4K>+x47x# .B4# )pBK>7Jt6uK> K>4 ᘓ4K>ֳ k>K>KK>K>6k>K>4?k>K>Jt K>Jk>C4cK>4?k>K>JtK>K>K>U vK>6k>K>6k>K>f ktU JK>U vK>6k>K>K> 6K>7k>K>֦ kҶU  ?K>U K>6k>K>U JK> kU5KK>K>#0 B K>Jt|k>K>6\k>K> kU aJK>U6K>JfK>֦ kҶU H?K>U K>6 k>` z4K>U 4vK> kU a4cK>6 k>K>K>U  !K>6K> kU aK>6k>K>4? lk>` K>U J4yK>K>#0 B K>J k>4K>ֆ kҕU 4cK>4? k>K>U JK> 6K>7K>֦ kҶU  3sK>7k>K>6 k>`!K>U6K4yK>K>#0 B K>Jt lk>K> kU5K4yK>K>#0 B K>Jt k>4cK>6 k>K>U JtK>K>& k?U JtK>6K>4?k>K>6t k>` 4uK>U6K>ֆ kҕU J4yK>K>#0 B K>H?lk>4cK>6tDk>K>K>U6K>ֆ kҕU JK>7aK>6k>K>6k>`"H4cE4 e pGHG4  B :EHG4  ?@4  K>H? K>Jt?񊅀K>JK>H?bK>Jz4K>+x47# .B4# )pBK>6J62K>Kg K>Jk>K>6|k>K>KK>6k>K>6,k>K>U JK>K>H?K>6tk>K>6k>+x4:# -BVK>U Je4  pGHG46 B :EHG4  ?@4  K>K K>J?񊥀K>JK>KabK>J4K>+x47# .B4# )pBK>6J4? %2K>Jt K>J|k>K>4?\k>K>JtK>U  4K>7 k>4K>6k>K>4?k>k>K>6tk>K>J46 pSJS4  Bv :_KS4  ?@6a?k>K>7k>K>6Jk>K>4 ` 2K>K>#0*Bk>3&K>K>K>JpԀZK>4K>+x47(# .B# -8BK>K>K>K>#$@Bk>K> `K>K>K8k>K>6Jk>K>K>K>KpaZK>4K>+x47@# .B# -8BnK>J4  pYHY4 ` B% :EHY4  %?@49 K>6tk>K>J# .Bk> K>JXk>4K>70k>K>6Jk>K>K>K>KpaZK>4K>+x47X# .B# -8BfK>J4  p_J_4  B :UJ_4 a ?@4  K>6tk>K>6H3k?YK?YJ K>4? Pk>CK?YJf4tK>U  44K>ֆ kҕU 4cK?Y4?k>K>U J4  pGHG4  B :EHG4  ?@4 `"CK>J?񊥀K>JK>KabK>J4K>+x47p# .B4# )pBK>6J4? %K> K>4 4K> ak>K>JK> 6K>KK>U JK>4?K>6eK>֦ kҶU  % K>7k>K>6k>K>J' K>Kk>CK>JK>U H:4yK>K>#0 B K>Kk>4tK> kU54cK>6tk>K>U H%4 ` pGHG4  B :EHG4 ` ?@4 "CK>J?%K>KK>JbK>J4K>+x47# .B4# )pBK>4?K6teK> K>464K>֟ k>K>H?K>K>JK>U H?K>6tK> kU5KK>6K>6k>K>7k>K>J K>Jk>CK>KK>U J4yK>K>#0 B K>Jk>K>f ktU J4yK>K>#0 B K>Jk>4cK>7Xk>K>U J4% pGHG4  B :EHG46 ?@4 g"CK>J?ŀK>H?K>JtbK>J4K>+x47# .B4# )pBK>6H?7 3K> K>4 ՘4K>a k>K>JK>K>JfK>6K>U  % K>7K>ֆ kҕU  K>4?k>K>6tpk>K>J K>H?8k>CK>Jf4tK>U  44K>ֆ kҕU 4cK>4?k>K>U J4  pGHG4  B :EHG4  ?@4 `"CK>J?񊥀K>JK>KabK>J4K>+x47# .B4# )pBK>6J4? %K> K>4 4K> ak>K>JK> 6K>KK>6eK>U  K> kU aJK>6 5K>7k>K>6 k>K>J' K>K k>CK>J4uK>U6K>ֆ kҕU J4yK>K>#0 B K>H? k>4cK>6t k>K>JK> 6K>K>U K>JK>4?K>U K>6K>f ktU  !K>6k>K>7 k>K>JK>K>K>U K>JK>U6KK>6K>6K>f ktU  !K>6k>K>7k>K>JK>K>K>U K>JK>U6KK>6K>& k?U JtK>6K>4?k>K>6tk>K>JK> 6K>K>U K>JK>4?K>U K>& k?U JtK>6K>4?k>K>6txk>K>U H?K>K>JK>K>H&K>7K>U sK>4?K>ֆ kҕU K>4?k>K>6thk>K>U H?K>K>JK>K>H&K>U JK>6 5K>7K>֦ kҶU  3sK>7k>K>6Xk>K>U6KK>tK>JK> 6K>KK>U JK>4?K>ֆ kҕU JK>7aK>6k>K>6Hk>K>U JK>K>H?K>K>JK>6K>U vK>֦ kҶU H?K>6tK>6k>K>4?8k>K>6tJk>K>K>K>H?pZK>4K>+x47# .B# -8BjK>JfK>K>JԀZK>4K>+x47(# .B# -8B%Bk?aK?a jK>K?a JK>K?a vK?a6?k?aK?a?@4K> k>K>K>K>H?K>K>6JK> 6K>7k>K>6JK> 6K>K?K>Jz# +BK>jK>J?k>4K> k>֥Bk?iK?i jK>K?i JtK>K?i  4K?i7?k?iK?i?@K>4K>6k>K>6t,k>K>J?K>J# +BK>h<K>K?k>4K> k>Bk?qK?q` jK>K?q JK>K?q K?q6?k?qK?q ?@K>K>7k>+x4:@# -B+x4:p# -BZ` 2 K>6Dk>K>K> k>7? : a a45?VA?@K>4?k>K>J `K>6K>6tLk>K>K> kU aJ4  K>JT4  B :UJT4  ?@4404 4ҟ 4a` UK>K>6k>K> kU aJ4  K>JT4  B :UJT4  ?@4404 4ҟ 4a` UK>K>U H?4  K>KA4 v B? :_KA4 ` ??@4 04vt 45 4 _K> ?K>7 k>k?QK> kU5K4  *K?Q K> JuV45 B :SJtV4  ?@4 045? 4 4ֿ SK?Q K> K>6\k>k?QK>K>K>6k>K>& k?U tK?Q K>6K>6tk>K>J4  pGHG4  B :EHG4  ?@+`H:@Y# .Bk>K> B+`H:@+`H98# .Blk> 4?֓Bk?yK?y bK?y H?K>K?y K?y6?k?yK?y?@ 4  v K>&K>K>K>JpZK>4K>+x47# .B# -8BK>J4% pSHS4  Be :EHS4  e?@f+`H:@ֿ 4F  Y# .Bk>K>` B+`H:@+`H90# .Bk>K>J4?AFK> u 4?ִBk?K? bK?%KK>K? K?4??k?K?`?@ 4  ҁ K> tK>K>K>JpԀZK>4K>+x47# .B# -8BK>H%GY+`H:@# .Bk>K> zK>K>K>X#$Bk>+`H:@+`H90# .Bk>K>K>K>JpZK>4K>+x47# .B# -8BB ^K># -BK>6 $k>K>KJtҕ zK>K>h6XK>K>kK>JK>4BK>Ka \4#0$XB# .Bk>DK>Jk>K>JK>kK>Jth6@k>K>6?k>K>K>K>6k>K>K>+`H3 4k?K? jK>K?6KK>K? K?4??k?K?`?@K>6(k>K>K>K>KK>K>J K> \ 6K>KK>6xK>K>K>k?K>k?W##Bk>K>Jk>K> K>Jt k>K>J |k>+x4:# )BK>4? 4k>K>K>K>K>#/Bk> *+x4:0# -BK>Jk>K>K>K>K>##Bk> K>J4k>K>KK>K>6k>K>49K>7K>6wK>K>k?K>k?# &Bk> K>JTk>K>K K>K>6k>K>49K>7K>K>K>k?#0 hBk> K>Jk>K>JK>K>6tLk>K>#-BK>JK> 6K>7k>K>K>K>K>#"B K>Jk>K>J K>K>6tLk>K>J K> 6K>7 k>K>J@K>j0K>H?K>K>6k>K>JK>K>6tlk>K>K>K>K>K>k?#0&Bk> K>Jk>+`H:@+`H9# .Bk>K>Kk>K>JK>+`H8#)BK>6,k>+`H:+x49p# B+`H:# "BK>4?k>K>Jt4  pAJA4  B4 :VJA4  6?@4  K>H?k>K>6tk>K>J46 pSJS4  Bv :_KS4  ?@43 K>Jtk>K>6k>K>H?4  pUKU46` B :TJU46 ?@4 u K>6k>K>H?k>K>Jt4  pAJA4  B4 :VJA4  6?@4  B4 b 4 K>6k>K>H?k>K>Jt4  pAJA4  B4 :VJA4  6?@ֿ !4?  vY+`H:@# .B K>6Xk>K>J8k>K>K?k?QK>J?K?Q4 4 ֓B U!RK>K>4 K?QW#"Bk>K> K>KPk>ֆ kҕ zK>U6KK>K>Z#0 B K>Jtk>K>U  'K>7xk>K?Qҕж B4 Tk?Q֦ kҶ zK?QK>U JyK>K>#0 B K>Jk>"K?QK>U vK>6Xk>K>J?k?QK>K?K?Q4 4 B Sj!RK>K>4 K?QW#"Bk>K> K>Jpk> k` zK>U JK>K>Z#0 B K>H?k>K>U K>6k>K?Qд B46_k?Qf kt zK?QK>U H9K>K>#0 B K>Kk>"K?QK>U  4K>7xk>K>J?k?QK>J?K?Q4 4 B A*!RK>K>4 K?QW#"Bk>K>` K>Jk> k zK>U JK>K>Z#0 B K>Jk>K>U gK>6k>K?Qй#'@=B4 Sk?Qֆ kҕ zK?QK>U6KK>K>#0 B K>Jtk>"K?QK>U6K>6tk>K>J?k?QK>H%?K?Q4 4 6B4_!RK>K>4 fK?QW#"Bk>K> K>Jk>& k? zK>U JK>K>Z#0 B K>Jk>K>U K>6k>K?Q:й#!@B4 Tk?Q֦ kҶ zK?QK>U JyK>K>#0 B K>Jk>"K?QK>U vK>6k>K>J?4 b zK>J?Ҷ ZK>H:?+x49xK># *BK>Kk>K>J?k?QK>J?K?Q4 4 B A*!RK>K>4 K?QW#"Bk>K>` K>Jk> k zK>U JK>K>Z#0 B K>Jxk>K>U gK>60k>K?Qй#0*8@=B4 Sk?Qֆ kҕ zK?QK>U6KK>K>#0 B K>JtPk>"K?QK>U6K>6tk>K>K>4 K>J?K>H7?#"Bk>K> K>Jt pk>֦ kҶ zK>U JyK>K>Z#0 B K>J k>K>U6K>6t k>֦ kҶ # # BӁB4 ZK>U JK>K>#0 B K>H? k>R# # Bӓ֓B4 VK>U vK>6 Xk>+`H6F?4  R+`H56F?4? ҕ@k?Q+`H6J4??`4֓ 2+`H:# #PBHk?Q+`H56J4?@3tk?Q֦ kҶ K?QB4 ZK>U JK>K>#0 B K>H? Xk>:K?Q֓B4 VK>U vK>6k>K>J?4% R+x49K>Z# *BK>Jtpk>+`H5J6??`4` BдҕҺ+`H9# #BJж+`H36tJ6K>7pk>K>J?k?QK>J?K?Q4 4 B A* K>4 K?QW#"B K>Jtk>K>6k>K?Q@K>KPk>K>60k>K>J?k?QK>K?K?Q4 4 B Sj K>4 K?QW#"B K>J`k>K>4?@k>K?Q`K>Jk>K>6k>K>K?k?QK>J?K?Q4 4 ֓B U K>4 K?QW#"B K>H? k>K>6tk>K?Q`K>Jk>K>7k>K>J?k?QK>J?K?Q4 4 B A* K>4 K?QW#"B K>Jtk>K>6k>K?Q@K>Kk>K>6pk>K>J?k?QK>K?K?Q4 4 B Sj K>4 K?QW#"B K>Jk>K>4?k>K?Q K>JPk>K>60k>K>K?k?QK>J?K?Q4 4 ֓B U K>4 K?QW#"B K>H?`k>K>6t@k>K?Q K>Jk>K>7k>K>J?k?QK>J?K?Q4 4 6B4_ K>Jtlk>K>J?K>K?t5>u@>6B4 Sk?Qֆ kҕ zK?QK>U6KK>K>#0 B K>Jtlk>"K?QK>U6K>6tk>K>J?k?QK>H??K?Q4 4 B Sj K>Jk>K>J??K>Jt?ҕ>Vv@ҡB4 Tk?Q֦ kҶ zK?QK>U JyK>K>#0 B K>Jk>"K?QK>U vK>6Dk>K>J?k?QK>K?K?Q4 43B vT K>Jk>K>H??K>J?Ҷ B4 Tk?Q֦ kҶ zK?QK>U JyK>K>#0 B K>Jk>"K?QK>U vK>6k>K>J?k?QK>K?K?Q4 43B vT K>Jk>K>H??K>J?Ҷ AB4 Tk?Q֦ kҶ zK?QK>U JyK>K>#0 B K>Jk>"K?QK>U vK>6k>K>J?k?QK>K?K?Q4 43B vT K>JK>H??K>J?Ҷ B4 Tk?Q֦ kҶ zK?QK>U JyK>K>#0 B K>JTk>"K?QK>U vK>6k>K>J?k?QK>K?K?Q4 43B vT K>J|k>K>H?? ` ִB4 AK>K?t5 V6B4 Sk?Qֆ kҕ zK?QK>U6KK>K>#0 B K>Jtlk>"K?QK>U6K>6tk>K>6?K>6?# #Bk?QK?Q4?+`43 ֆ kҕ zK>U6KK>K>Z#0 B K>Jt$k>K>U  %K>7k>K>J?4  R+x49K>Z# *BK>H?\k>гk?QK>J?4  B4% г` K>Jk>H4  R+x49K>Z# *BK>Kdk>K?Q@K?QՠR+x49PK>Z# *BK>H?k>K?Q ֦ kҶ zK>U JyK>K>Z#0 B K>JK>U6K>6tk>K>K>K>#.`B K>Jk>K>4?|k>K>K>K># !B K>Jt$k>K>6k>K>K>4#/@B K>H?k>K>6tk>K>+`H6K>K>4#&B K>H?k>K>6tk>K>J?46 BK>Jt?4  BK>H??` "K>J?JK> 6K>K?4  BK>J?4 b BK>J?Ҷ "K>H??KK>K>J?K>J?# .BE +`H! K>K Dk>ֆ kҕ zK>U6KK>K>Z#0 B K>Jt k>K>U  %K>7 lk>K>K>4#)BE K>J k> k zK>U JK>K>Z#0 B K>J |k>K>U eK>6 4k>K>K>#*HBE K>J k> k` zK>U JK>K>Z#0 B K>H? Lk>K>U K>6 k>K>K>K>K>#+(Bk> K>K k>ֆ kҕ K>JK>U JyK>K>#0 B K>J k>*K>JK>U K>6k>K>K>K>K>#0(HBk> K>H?Dk>f kt zK>U H9K>K>Z#0 B K>Kk>K>U K>4?lk>K>K>K>K>#0-Bk> K>Jtk>֦ kҶ zK>U JyK>K>Z#0 B K>Jtk>K>U6K>6t,k>֦ kҶ6B4 Ef kt zK>U H9K>K>Z#0 B K>Ktk>K>U K>4?,k>K>K>#.B K>Jtk>K>6k>K>K>#.pB K>H?lk>K>6tLk>K>J? +`H%+`H% k` zK>U JK>K>Z#0 B K>H?tk>K>U K>6,k>K>K># 0B K>Kk>K>6k>K>J?:#*@BK>7lk>K>K>#'B K>Jk>K>6k>K>#(BE k` zK>U JK>K>Z#0 B K>H?Dk>K>U K>6k>K>K?t K>J?4 $ ? K>Jtk>K>#0'BE K>J4k>48k>K>K?K>#((BEf kt zK>U H9K>K>Z#0 B K>KPk>K>U K>4?k>K>K>#'`B K>Jtk>K>6k>K>K>K>K>#0%Bk> K>H?0k>f kt zK>U H9K>K>Z#0 B K>Kk>K>U K>4?Xk>K>K>K>#,Bk> K>Jtk>K>6k>K>H%?4 ` "4 !ж!rK>H??` K>K>K>JpK>k?Y#$BG *+x4:# -BK>k>K>J0K>H8@K>KHK>k?Y#$BT K>J0k>K>H%0K>k0f kt zK>U H9K>K>Z#0 B K>Kk>K>U K>4?8k>K>K>K>K># hBk> K>Jtk>֦ kҶ zK>U JyK>K>Z#0 B K>J@k>K>U6K>6tk>K>K>K>K>#&Bk> K>Jk>& k? zK>U JK>K>Z#0 B K>Jk>K>U K>6k>+`H!H?Kf kt zK>U H9K>K>Z#0 B K>Kk>K>U K>4?k>+`H3JeK>J? K>JK>KabK>J4K>+x47# .B4# )pBK>6J4? %K>6tk>K>K>K>#(0B K>JXk>K>4?8k>+`H3Jt+`H5 RA4!?B4 E֦ kҶ zK>U JyK>K>Z#0 B K>JHk>K>U6K>6tk>K>K>K># %pBk> K>Jk>& k? zK>U JK>K>Z#0 B K>Jk>K>U K>6k>K>K>K>#-hBk> K>H?hk>f kt zK>U H9K>K>Z#0 B K>Kk>K>U K>4?k>K>K>K>K>#0 Bk> K>Jt(k>֦ kҶ zK>U JyK>K>Z#0 B K>Jk>K>U6K>6tPk>K>K>K>#0$hB K>Jk>K>4?k>K>K>K>K>#0'Bk>K>` *+x4:# -B7ֆ kҕ zK>U6KK>K>Z#0 B K>Jtk>K>U  %K>7k>+`H4 ִB4 E& k? zK>U JK>K>Z#0 B K>J k>K>U K>6 k>K>K>#0*XBE K>H? (k>f kt zK>U H9K>K>Z#0 B K>K k>K>U K>4? Pk>K>K>#0+BE K>Jt k>֦ kҶ zK>U JyK>K>Z#0 B K>J hk>K>U6K>6t k>K>K>#0-HB K>J k>K>4? k>K>K>#0/B K>Jt `k>K>6 @k>K>K># hB K>H? k>K>6t k># 'HBE֦ kҶ zK>U JyK>K>Z#0 B K>J k>K>U6K>6tk>K>J?4  K>Kk>HK>J?񊥀K>JK>KabK>J4K>+x47(# .B4# )pBK>J4K>KaK>6J6K>K? K>6Hk>K>K>J?9K>K?xK>J?ҷ#, B K>Jk>7 k` zK>U JK>K>Z#0 B K>H? k>K>U K>6k>K>K?6z?#.@B K>Jk>K>6`k>K>#!B K>Kk>K>6k>K>J?4:?##XBE K>Kk>ֆ kҕ zK>U6KK>K>Z#0 B K>Jtk>K>U  %K>7k>K>J?4 " K>Kxk>K>J?Ҷk?QK?Q#(B K>H?k>K>6tk>K>J?K>K>K>K>k?#'B \K>KXk>K>Jk>K>JH?k>K>6tk>+x4:H# -B+x4:# -BK>K>K>K>K>k?#0'Bk> K>J8k>K>K?f kt zK>U H9K>K>Z#0 B K>Kk>K>U K>4?Pk>K>K># /B"K>#0*0BK>K?!K?K?K? @O?k?74#0,B+`h<xk?K?4@b4K?+`H5x K?4?k?K?4_@+`H5x4b~+`H!x4 ?+`H3x4t+`H5x4bf+`H!x4 ? +`H3x4t +`H5x4+`H!x4 ?+`H3x4bt8+`H5x4b"+`H!x4`?+`H3x4bt$+`H5x4+`H!x4`?&+`H3x4bt(+`H5x4b*+`H!x4`?,+`H3x4bt2+`H5x4b6+`H!x4`?.+`H3x4btb+`H5x4b0+`H!x4`?4+`H3x4bt<+`H5x4bD+`H!x4`?L+`H3x4btT+`H5x4b@+`H!x4`?H+`H3x4btP+`H5x4bX+`H!x4`?j+`H3x4btl+`H5x4bn+`H!x4`?p+`H3x4btr+`H5x4bt+`H!x4`?v+`H3x4btxK?Y@7?k?ok?k?9k?1CK?9B0Z4k? "K?96tk?9BҤ \Z# #B zc#!64? K?96k?9BZ# #B?@K? `_K?104הK?YK?@O?k?7k?9k?1K?97?#"@B *K?B46_0k?K?9K?1# *Bk?K?K?Y@7?7k?9k?1K?96t6Jk?K?k?K?K4 4* K?H?4 4< K?1 rK?9H?48 46 VK?9 6K?7k?K?96K?K?\@7?k?ok? k?k>k>4K>K>JtzK>J46+`H3x ҃K>J464~ 242*4.*4"# z+`@!?#+`H3`#K> 4 4 K>c 4  r4a_CK>c 4 46 *K> 4 ?@K> 4 4"K> +x49K># *B4k?4aK??aK>K?t 4 $ +w4: +x49K>K? ִ Ҷ+`H!` 6 K>K? җ# BK>K? 4 b Z+w4: +x49K>K? # BZK>K? ? 4 +w4: +x49@# BK?6k?4aK??~ @+w4: +x49`# BK>Jd+`H:@Y# .BE K>J48 4 SK>ֿ Ё4??  vZ+x49hK># *BH4 4B!4@ B46#42$B4."4&#b K>K48 4@ AK>K>Jtֿ "6_K>+`H4xB@K> 48 4\ U+`H6xB@K> u+`H4xB@K>  T+`H5xB@K>6K>Jt48 4B6_K>K>J  SK>+`H5xBBK> 6 48 4\ V+`H!x@?BK> +`H5xBBK> 6  U+`H6xBBK> HuK>J48 4b SK>+`H5xB.K>7aK>J48 4b SK>K>6hK>H?48 44 VK> 6K>7eZY#$B ZK>J48 44 SK>K>6XK>H?48 40 VK> 6K>7eK>6 K>4#$BK>J+`H:@# .BDK>H9+`H?xC.+`H:@# +BH48 4,6_ ` 4K> k>K>K>H?@4K>K?K? @O?k?7k>k>k>k>4+`h3K>JJ486K> TK>JK>H Q`@@t@@,@@t@$@@@p@@P@l@@@0@@@@h@@@t@d@T@D@4@$@@@@D@@@@@@@t@d@T@D@4@$@@@@@@@@@@@@d@T@D@4@$@@@@@@d@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@@@@t@d@T@D@4@$@@@@@@@@K>K>#$Bk?a+`H:@K?aK>K+`@3w# 'xBk?i+`H4 +`H5 *K>J+`H36tK>6k>K?i $+`h +`H? +`H3 "K>J6?J4 `"Z+`H4J4 4(?!z4&3 +`H46?k?qK?qK>H?7?vbK?qJ K?qK?q4?k?qK?qK>J6?ӿ@K>H?7?Jt48 AK>K6t?K>J6?H?48 UK>J4??+`H3Jt48 4*6_+`H3P4+`h4+x4:# )B\\+`H5 4\K?a+`h6 K>H?K48 42 AK>KaK>JJ? 6SK>JK>6H?7 3K?atK>6J4?K>JtJ48 4& SK>JK>JH? K> AK>Ka+`H4 K?a +`H6 ,\K>H?K48 4( AK>KaK>JJ? 6K>֓ UK>J 54+`h?+w4: +x49K>K># B+x4: # )B \K>6tJ6+` h5+`H! |\K>42+x4: p# )B ,\K>K>#$Bk?yK>BҶ46 Z+`H: K?yK>K+`@3w# 'xB z+`H:@+`H9 # .Bk?K?J48 4. SK?K>6J4??+`H3` \K>K>#$BK>6J64 <+`H? \K>JtJ K> aTK>JK>H?K"6 K>  vTK>JD+`H! $\K>KJtֿ K> SK>JK>K>#$BK>6H?7 3d|+`H4 D\+`H5!K>J4??K4 !K>J4??K48 4V AK>K6t?K>6J4??K>JtJ"65K>֓ ҕ VK>H?+`H3d K>J6?J4 p ZK>J6?J48 4T UK>J4??>+`H3b!K>J6?J4 b!K>J6?J48 4> UK>J4??K>6tJ6?K>H?K"6 K>  vTK>J+`H!$ K>K6t?J4 0 ZK>K6t?J48 4< SK>J6?FK>H?K֟ K>6 5_K>Jt+`H5 \+`H6!K>H?7?Jt4 !K>H?7?Jt48 4F6_K>Jt6?K>6H?7? 3K>JJ 4? K>ִ Ҷ AK>Ka+`H4 K>J6?H?4  ZK>J6?H?48 4D VK>H?7?v+`H4!K>J6?H?4 !K>J6?H?48 4N VK>H?7?vK>6J6?K>KJt"6 K> t UK>J 5+`H? K>Jt6?J46 ZK>Jt6?J4864L TK>J6? 4K>KJtֿ K> SK>Jp+`H6 P\4k>K>KJt48 K>6_K>Jt+`H5 \+`H6#RK>H?7?Jt4 #K>H?7?Jt48 4Z6_K>Jt6?K>6H?7? 3K>JJ 4? K>ִ Ҷ AK>Ka+`H4 K>J6?H?4  bK>J6?H?48 4X VK>H?7?pv+`H4 K>J6?H?4 4f bK>J4??K48 4n AK>K6t?+`H5 K>J4??K4  ZK>J4??K48 4p AK>K6t?J+`H5#RK>J4??K4 #K>J4??K48 4B AK>K6t?K>6J4??K>JtJ"65K>֓ ҕ VK>H?+`H3d K>J6?J4 t bK>J6?J48 4@ UK>J4??p+`H3d K>J6?J4 4f bK>J6?H?48 4j VK>H?7?v+`H4 K>J6?H?4  ZK>J6?H?48 4l VK>H?7?vK>JJ? 6K>֓ UK>J 5+`H? `\+`H3b#RK>J6?J4 h#K>J6?J48 4J UK>J4??K>6tJ6?K>H?K"6 K>  vTK>J+`H!$ K>K6t?J4 4 bK>K6t?J48 4H SK>J6?p+`H!$ K>K6t?J4 4f bK>Jt6?J4864r TK>J6? 4+`H? K>Jt6?J46 ZK>Jt6?J4864t TK>J6? 4+`H?#RK>Jt6?J46#K>Jt6?J4864R TK>J6? 4K>7Jt6?uK>JH?"`6t K>6 ? SK>J+`H6 K>H?7?Jt4  bK>H?7?Jt48 4P6_K>Jt6?p+`H6 K>H?7?Jt4 4f6 bK>K6t?J48 4v SK>J6?+`H!$ K>K6t?J4 , ZK>K6t?J48 4x SK>J6?rK>H?K֟ K>6 5_K>Jt+`H5 \+`H6 K>H?7?Jt4  +`H!" :K>K6t?J4 4\ ZK>Jt6?J4864\ TK>J6? 4K>KJtֿ K> SK>JK>JH?"`6t K>6 ? SK>J +`H6 \+`H!"!rK>K6t?J4 4:!2K>Jt6?J"!K> K>Jt6?J4864^ TK>J6? 4K>K6t?J K> aTK>J6? 4K>7Jt6? huK>JH? K> AK>KaK>JJ 4? K>ִ Ҷ AK>K a+`H4" K>J6?H?4 4:!K>J4??Kt!K>!K>K>#$Bk?K?4604֓!"K?Ҷ46K>K6t?J48 4`k>4` aTK>J6? 4K>K6t?J K? aTK>J6? 4K>7Jt6?xuK>JH? K> AK>KaK>K>#$BK>6J6 <+`H? \K>JtJ K> aTK>JK>K>#$BK>4?K6t+`H5 \K>JH? K> AK>KaK>K>6J4? K>JtJ K> aTK>J+`H! \K>KJtֿ K> SK>JK>6H?7 34+`h4K>JK>#&8B \+`h +`H6 \K>H?K48 K>K>6 SK>JK>!K>H?K֟ K>6 5_K>JtK>K> 4؋ +`H3 t6?k?K>JH?"`6t K?6 ? SK>JK>JH?"`6t K>B?7?֓ Җ AK>Kab+`H4 H\K>JJ K>ִ VK>H?K>JtJ48 K>K>  UK>J 5+`H? `\K>JtJ K> aTK>JK>H?K>Jt(RK>JK>+x47 Y# .B\+`H6+`h6+`H!xK> ? t+`h4K>6J4?4K>@7?k?7k?9+h pK?9JtJ48 _K?9Jt+`H5xBK?94?K +`H? +`h? 4+`h34+`h44+`h5K?9JH?48 4$ VK?9H?+`H:@+`H9 K?9Jx+`@4җ# 'xBk?K?96J4?+`H3 K?96J6K?K?Y@7?k?7k?9K?9K6t?`4 "K?9# #PB2K?94?K6tBuҼk?K?4F6 *K?K?9# #BK?k?K?k?K?9J6?`4 "K?9# #PB2K?96tJ6B<k? K?4H K?4` K?9J4??`4֓ "K?9# #PB2K?96J4?@3|k? OK?Y@7?k?ok=4k?i+`H5k?q+`@6" +`h K=+x49 7?a7>!7>k?# "0B7>Y#$BC7>!Y#$BYK?a֓B4 X+`@6Z## B +w4: +x49 +H8 p+`@!7K?ak?7>!k?7>k?# B+x4: # )Bk?iK?q+`h5K?iK=@O>k?ok?9k?1k?)k?!K?91b4 *K?!# 'BPCK?9K?1K?!K?)K?k?# #@BCT\K?Y@O?k?ok? k?k?k>k>K>+x49 `# $Bk?K? zK># 'B+x4: h# 'B+x4: x# )B(\+x4: K># 'BK?# $B4k?K? $K?K6t?`4 *K?# #PB8CK?4?K6tBuңD#JK?J4??`4֓ *K?# #PB8CK?6J4?@3cE"K?J6?`4 *K?# #PB8CK?6tJ6B#F!C+wH?؋A*K?Jt6?u`46 "K?# #PB2K?7Jt6uBӟ+`H3s Z+`H5  24SC+wH4؂^@+`H5u+`H7K>k?ZYX# *(Bk?K?;@K?# $@BK?` :+x4: +x49 # 'B2+x4: +x49 # 'BK?K>K?K?K? @O?k?7k>k>k>c>4+`h4k?a4k?iC>K>K?ac?yҶ%RK>K?a 3ҚK?aK> @?K?aK> FK?aK> JwK>k?# *(Bk?qK?q \4k?iC?y?4~#K?aK?i K> ?t4!K?aK?i6K> JK?aK?i K> Ftҙ#$BK>6J4? <K?i6tk?iK?aK?i K>ҕ4>@K?aK?i K> FK?i""+w4: +x49 0K?aK?aK?i K> D?K?ik?# Bk?K?K?iaR+w4: +x49 K?aK?6K>tҸK?aK?6K> BҷK?aK?6K> FҶk?K?aK? K> Jk?# BK?4?k?K?K?i~@+x4: # *@BK?aK?i k?aC>K>K?ac?y?:@+`H:+x49 K>K?a# B+`H:# 'B4K>@7?k?ok?9+x4: HK?9+x48W#0!B 4R+x4: XK?9+x484#0!B 4׃K?Y@O?k?7k?9k?1K?1# "hB `\K?9` "K?1#0(B"K?9K?1# +(BK?Y@7?k?k?k?K?K?K?  J RT6ҕ@@k?7k?9k?1K?9J?k?K?4  :K?+x49 pK?1# *BK?Ҷk?K? `K?+`H3 @:K?+x49 K?1# *BJ+`H4(K? Y# *Bk?K?K?Y@7?k?7k?9k?1K?9J?k?K?4  K?Ҷ :K?+x49 K?1# *BK? +`H4` k?K?# $pBk? (\K?Y# *BK?Y@7?k?7k?9k?1K?9J?k?K?4  :K?+x49 PK?1# *B K?Ҷk?K?9H??k?K?4  K? :K?+x49 K?1# *BbK? t+`H5` K?# $B04זK?Y@7?k?7k?9k?1K?9H??k?K?4  K? :K?+x49 K?1# *BK? t+`H5` # $B :K?+x498K?1# *B4K?Y@7?k?7k?9k?1K?9J?k?K?4  :K?+x49pK?1# *B K?9J?k?K?4 b :K?+x49K?1# *BK?9J?ҺK?9J?9# %B :K?+x49K?1# *B4K?Y@7?k?k?k?K?K?  J0K? RT6ҕ@@k?7k?9k?1k?)k?!K?1J4 ` K?1H5V4 ` B :AH4V4  ?@4 v04 4 4ֳ AK?1K?1H??4  \K?1J?k?K?D$"C#2B"A!@ b# &Bk?K?k?K?+`H5 k?K?+`h?K?94K?)#0)Bk?K?94K?)#"(Bk?K?!4K?)#0)Bk?K?!4K?)#"(Bk?K?)Jz4K?)#0)Bk?K?)J4K?)#"(Bk?K?)JK?)Y#0)Bk?K?)JK?)Y#"(Bk?+`H?P+`H3@ k?+wH5+`H!@ +`H3P xk?+`H5k?+wH?+`H3 k?+`H6H6!_k?+wH4+`H5H6 !_k?K?)J04K?)#0)Bk?K?)J04K?)#"(Bk?\K?6B4 ZK?1JyK?)K?!#0 B x\K?ִB4 ZK?1H9K?)K?!#0 B \4K?Y@7?k?7k?9k?1K?9K?k?K?9J?k?K?46 K?t 2+x4:`# )BH\K?4 $ K?` +`H:+x49K?ִ Ҷ+`H!` 6 K? t+`H5` # B:K?46 K?K?1Jh RA4!7+`H:+x49K? t+`H5` # Br+`H:+x49K?6 ?+`H3` K?җ# B+`H:Y# *BK?Y@7?k?7k=k=K=7># %0B 2+x4:# )Bh\K=7># %0B (4K>AK? X4ׁK=@7>k?ok?9k?1K?9K?4 c 4  :+x49 K?1Z# *B# ?+`H3` k?K?9J?4  4 b :+x49hK?1Z# *BRփ ҕ+`H6` k?K?K?#-hBK?Y@O?k?ok>k>K>K?tc?K>J?4  4 b :+x49K>Z# *Bփ ҕ+`H6` k?C?`"+`H4h "+`H5+`hh5+`H:HY# .Bk?K?+`H!p6 K?+x49# $Bk?K? 2+x4:# )B\+`H:HK?Y# +B 2+x4:8# )B \K?` K?+x49X# $Bk?K? \+`H:HK?+`@5ҷY# 'xB 2+x4:`# )B \K?+`h6+`h#C??"+`H3hc "+`H4+`@h4+`H:PY# .Bk?K?+`H6p K?+x49x# $Bk?K? \+`H:PK?Y# +B 2+x4:# )Bp\K? K?+x49# $Bk?K?` \+`H:PK?+`@4җY# 'xB 2+x4:# )Bp\K?+`h5+`8h#+x4:# )B\4K>@O?k?ok>k>K>J??c?K>Jc?4k?4  :+x49K>Z# *B"ak?C?` J+`H:K?X# %`B k?C?ҕ J+`H:K?X# %`B k?:k?+x4:x# )B\K?K>@O?k?7k?9K?9J??c?C?t 2+`H:# %Bk?C?Ҷ 2+`H:# %B8k?+x4:# )B \K?B4 \K?Y@7?k?7c??C??Bↄ"A† +`H5+`H6!B+`H:H+`H9# .Bk?K?+`H3p K? J+`H:H+`H9+`H8p# +BZ+`H:H+`H9+`H8p+`@5ҷ# 'xB+`H:# $@B+`H6+`h6+`H?h+`8h?+`H3+`H4 j+`H:P+`H9+`H8p# +B+`H:# $@B+`H5+`h5+`H6h+`Xh6+`H:# "B"+x4:(# )BK?Y@7?k?7k?9K?9H?4  pUKU46` B :TJU46 ?@+`H:u t+`H5` # %B+`H:# %BK?Y@7?k?7k?9k?1K?9J?4 b b+`H4k?K?+x49pK?9J?# B:K?9H?? t+`H5` k?K?9H??K?9Jt?ҙK?K?9J?K?1k?# #@B \4K?Y@7?k?ok?9k?1K?94  46!K?94 0404 aTK?14 ? 4ֳ!K?1460404 S t`!:K?94  K?9K?1 K?94  *K?9K?1 aK?9ִ Ҷ+`H!` 6 K?1 t+`H5` # "BC` "K?9K?1 atP4ִ v 4 6 4 `\K?Y@O?k?ok?k?k?9k?1K?9JD4  ZK?9 Jk?9K?9KD4  K?9?@K?1H#E4 ` ZK?1 Jk?1K?1JE46 K?1?@4  +`H6x Z4% +`H3x *K?9K?1#-BZY# BC` 4  Ж Є4` jbK?9%K?1 _u@C4TE` @U\K?YK?K?@O?k?ok?k?k?9k?1k?)k?!K?1JD4# ZK?1 Jk?1K?1JD4  K?1?@4 d!4  ЃE` K?)K?K?Y#0 B \K?!4K?K?#0 B p\K?)?$YK?K?#0 B \K?!eB4 YK?K?#0 B \K?)JD4  ZK?) Jk?)K?)JtD4  K?)?@K?!KT4  ZK?! Jk?!K?!KT4  K?!?@4 b X\҃4  j`  \K?1K?K?Y#0 B \4  !K?94r+w4: +x49xX# B+x4:# )B \ d֣  VK?94?k?9 64s?T RK?9K?9K?94?k?96t?US?@K?1K?K?Y#0 B \ \K?9K?YK?K?@O?k?7k?9K?946 Z+`H:+x49K?9x# B+``H<K?9ҕ 2K?96 ?+`H3` \K?Y@7?k?k?+`H4+`H5K?!K?4?k?Kk?4  RK?? BK?Kk?4  K???@K?4  :K??6UT(\K?6k?K?Kk?4  rK?K? ZK?k?K?Jk?46 K?K??@+`H6K?6>@+`H?K? \4@@k?ok? k?k>k>k>k>K>JD4  ZK> Jk>K>KD4  K>?@K>H#E4 ` ZK> Jk>K>JE46 K>?@4  K>Y# -B +`H:Y#$BYK>K>K>#0 B \4  !Z# ,B_!jK>k?Cҕ K>6k>+`H37U_B3tִB4 AK>6tk>aCҶ?E@K>7k>+`H4K?K>K>K>#0 B \4  J4% 2+x4:# )B\4 d :+x49K>Z# *BB+x49XK>Z# *BK>K>K?K? @O?k?ok?k?9k?1k?)K?96k?9+`H!K?97k?9k?K?1J?4 !Ha_D4 !Е :+x49K?)Z# *BzK?9K?)H?pJK?94K?)+x47# .B\K?9d4tK?9K?96k?94cHS4  Bc :CHvS46 c?@d>@K?1Jt?K?96k?9K? #K?9K?YK?@O?k?ok? k?k?k>k>k>K>K?4 c$K>6k>k?4ak?k?HdП :+x49K>Z# *Bj4cHeF4 e B :CHuF4  ?@!ZK?7k?K>K>JpԀJK>4K>+x47x# .Bh\4aK>7k>4c4  pFHvF46 B :CHsF4  ?@>@K?46@2+x4:# )B@\4 ` "4  J :+x49K>Z# *BK?4# pDHsD4  B :CHvD46 ?@4 d "4  JK? :+x49@K>Z# *B4 d "֟ K?6 5DK?@+x49K>Z# *BK>K>K?K?K? @O?7k?9k?1k?)K?1Jt?K?1J?k?44 \ t֢? VK?1H??4 !RUK4 a \3K?9֟ TK?9 4K?96k?94t@bK?9 6 K?9K?94!k?96\Tt_@` :K?9v K?9K?943k?92K?9K?9K?96k?9K?97k?9K?K?9@7?k?7k?9k?1k?)K?1J?K?1H??4 v UJ45d \4  SK4 $ \sҴ 4 `\ן ! 5UK?9 5 6?5Bk?K? bK?6JK?9K? K?45?k?K? ?@ K?9  5K?9 k?9` 6t?ִBk?K? bK??JK?9K?6K?6?k?K? ?@ K?9 6vK?9 k?9K?9K?)JpԀJK?94K?)+x47# .B\K?9K?Y@7?k?ok? k>k>k>k>K>K>H$k?K>K> \K>K>6k>k?K?H?k?4  rK?K? ZK?k?K?Kk?4  K?K?6?@K?$K?4  JK?46 K?t K? uK>K?6*K?K>K?H tK?4  K>KdJ4K>+x47Z# .Bh\K? K? 4 cK?xK> aK>KdJ4K>+x47Z# .B\K? K? 4K>K?K>K?K?ҕk?K>K>6 k>K?7?֓B BK? JK> a6??@K>K? k>K?K? k?K?Jk?4 ` rK?K? ZK?k?K?H?k?4  K?K??@K?4 d RK?ҕ :K>K?6M@K?K>-@K?4  BK?? *K?K>6k>(K>6k>K?4sTCK>@K?Z4?_DH4?UDHK?@K>K>K? @O?k?7k>k>k>K>KXk?qK?qk?yK>Jpk?K>4 ` jK>4  K>? 2K>K?qK?q6k?qK?qK>K?yK?K>k?#$Bk?qK?q \K?qK>jXK?yK>@7?k?ok?9k?1k?)K?)6J4??K?)JtK?9K?)JK?9 ?K?1Jt?k?K?4  K?KK?4 c :+x498K?)Z# *Bjֿ "?6_K?)JtK?1J?4 " :+x49K?)Z# *B K?9 x6@K?)JH?7@K?)JxK?)H?K RA4!? tk?9K?)J 5K?9K?Y@O?k?ok?9k?1k?)K?)KJtk?9K?9K?)JH?7?uJK?94K?)+x47# .B\K?)J6JK?97k?9K?1J4  p_J_4  B :AH3_4  ?@K?96K?9aK?96K?96k?94?` J4   "K?943k?9 ?K?)JJ6?K?9K?1H9K?9K?)k?#$Bk?9 2+x4:H# )B8\K?9 sK?)JK?9K?9K?Y@O?k?7k?9k?1k?)k?!K?)H?KTk?9K?96k?9K?)H?7JuK?96k?96YK?96uk?9tK?)JH?K?96tk?9K?)6J4? K?1JzK?)K?!#0 B \K?9K?Y@7?k?k?k?k?K?ҕ6?K? ֖  Uk?K?K?7k?K?ֶB :K? Jt 6??@6K? K?K?aK? @@k?ok?k?9k?1k?)K?1J?4  :+x49K?)Z# *BrHd4 d Д :+x49K?)Z# *BЕK?96k?9+`H?6?uK?96k?9?$֓  UK?9K?94?k?9 5֓B 2 J 6??@K?9 K?YK?@O?k?7k?9k?1k?)4k?K?9J?k?K?4  k?K?Ҷk?K? @K?4@k?K? :K?+x49K?1# *B+`H5Jk?+`H!K?)K?aBK?4  K?)H??K?K?1JK?1J5bK?1K4K?1+x47@# .B4# )pBK?K?1J+`H66K?1KaK?16J6K?+`H3 +`H5K?K?Y@7?k?7k>k>k>k>+`H6Jk?K?Kk?qK?K>J?ԁ:K?q4 ` K>J?K?qK>H?K>JtbK>J4K>+x47`# .B4# )pBK?qK>H?K?6tK>JK>4?K6tK>k?K>6k>+`H?K>K>K>6k>k?yK>K>K>6tk>k?K?K?qK>K>#0 B X\+`H5Jk?K?K? ?K>K?ytK>K>@7?k?ok?k?k?9k?1k?)K?9J?4 " :+x49K?1Z# *BcK?9K?4 d b4  Ё :+x49K?1Z# *B"H4 ` :+x49K?1Z# *BŒ`@ д:+x49`K?1Z# *Bj HdK?)J?#4 ` K?)J?񊤀K?1JK?1KabK?1J4K?1+x47# .B4# )pBK?1J4aK?1KaK?16J6K?9K? s4K?YK?K?@O?k?ok?k?k?9k?1k?)K?9J?4  :+x49K?1Z# *BBcK?9H$?4 ` b4  Ж :+x49 K?1Z# *BH4% :+x49pK?1Z# *BJ`@ гc:+x49K?1Z# *BK?)J?񂤠:+x49 K?1Z# *B K?9H$?4 ` RK?)J?񂤠:+x49hK?1Z# *B d4K?YK?K?@O?k?k?+H6 `+`H!K?6K?6+H! `4?+h? `\@@k?7k?9+`H!H!_+w4: +x49 K?9# B+x4: # )B4 # )pBK?Y@7?k?7+wH:#0,B+`h<+wH:#0,B+`h<X4?+`h3H+`H4 4+`H6X 4וK?Y@7?k?ok?9k?1k?)k?!K?9K?1 +wH46? +`H6H +wH36t? !+`H6cA Jt!b+`H6cAK?9 :+`H6cA JtK?1 4+wH36t?  +`H6cA Jt +`H6cAK?9?]@+`H6cA JtK?1?@+`H!c_ aJ!+`H6H+wH!?+wH3t `"+x4: # %BK?9+`H!c_ a+`H5cV5K?1+`H4cU K?) ?+`H3H6t+`h4HK?!Ҷ+`H!Xa4\K?Y@O?k?7k?9k?1k?)K?9K?1 +wH66?5+`H3H +wH56? !+`H4 U H4!b+`H5 VK?9 :+`H6 A JK?16 7+wH56?  +`H! T J +`H4 UK?9?]@+`H5 V5JK?1?@+`H! S 4K?9 +`H! S JK?16 B+`H3 T K?)04+x4: # )B\K?Y@7?k?k?K?K? +wH56? +`H3 TuK?6 r+`H3 T JK?a 2+`H4 U `H<+`H3H +wH56? 7+wH56? +`H! T 5K?6 r+`H4 U H4K? 2+`H6 A PJ :+`H6 A J>@\@@k?ok?9k?1k?)K?9K?1 +wH46? +`H6cAK?9 Z+`H5cV5KK?1 K?)4+`H6cA Jt K?)\+`H6H +wH36t? 4v+wH!4?? +`H3cTvK?9 Z+`H3cT H?K?1 K?)4 :+`H6cA Jt>@ 2+x4: h# %B 4?K?)\K?Y@O?7c??C??&!Rk?+wH?K?"+`H4XK? C??a+`H4K? V jK?+`H4 sU 4?K?+`H4 sU  ?K?7k?+wH4K?@k?+wH6K?+`H?XK? ҕC??5+`H?K? sT +`H!H4??+`h?HK?+`H4 sU  K?+`H3 T K?+`H3 T K?4?k?+wH3K?t}@@7?k?7k>k>k>K>J?46 \K>Jt?ҕc?K>J?k?yK?y4  `\K?yҶk?k?q+wH!K?q?+`H3XK?qt ҶC??bK?q+`H4 sU H?'"+`H3XK?qt ҶĀ+`H?@+`H3K?q Uv? JK?q+`H3 T J?K?R+`H4@k?K?q+`H6 A Jtk?K?4  K?k?yK?Jtk?y4  rK?K?y ZK?yk?K?Jk?y4  K?K?y?@K?y4  K? @ZK?yK?:K?y+`H6 K?y4 ` zK>K>JpԀZK>4K>+x47 # .B4# )pB+`H!K?q S 44 " K>7k>+`H4K>6k>K>7k>+`H4K>6k>4K>6tk>+`H6v?5SK>6k>K>7k>+`H4ҵB46_K>6tk>K?q+`H6 A Jt4  K>7k>+`H5K>6k>K>7k>+`H5K>6k>4K>6uk>+`H6v?4SK>6k>K>7k>+`H5Җ6B4 SK>6k>K>6k>+`H?K?K>6k>K?q6k?q+wH?K?q@K>6k>+`H6K>K>@7?k?K?+`H3 :K?+`H5 K?+`H!6 +`H<K?+`H3Ȃ K?+`H5Њ +``H<K?+`H!؀6 K?+`H3 +`H<\@@k?7k?9k?1k?)K?94  K?9? zK?)4  ZK?)k? `:K?4 ``"K?1# B\K?Y@7?k?7k?9k?1k?)c?'K?9K?1K?)#" Bk? \K?9K?7?#0!PBk?K? P\K? rK?+`H! _ aK?)K?K?9K?1# +B+H6 p6B4 Sk?+`H4H+wH5Ҷ+wH!? t`"+x4: # %BK?9K?+`H6 A tK?+`H5 V5K?K?+`H5 V5K?)+`H4H6+`h5HC?'K?+`H3X K?K?9K?1C?'ҷ# 'xBK?9+`H9`K?C?'# 'xB j+`H:`K?K?9C?'7# 'xB+H? p7+h3 p4K?Y@7?k?7k?9k?1K?9J?4  BK?9K?4  BK?9J?? "K?9Jt?JK?9K?9H??4  BK?9J?46 BK?9Jt?ҕ "K?9J?H?K?9K?9J?4  BK?9K?4  BK?9J?? "K?9Jt?JK?9K?9H:?K?9K?K?9Jx?+`@4җ## BK?Y@7?k?7k?9k?1c?/K?9J?46 BK?9Jt?4  BK?9H??` "K?9J?JK?9 6K?9K?4  BK?9J?4 b BK?9J?Ҷ "K?9H??KK?9K?9J?K?9J?7?#0!PBk?K?"!B+`H?XK? ҕC?/5!K?+`H3 T J+`H3 +w4: +x49 C?/Ҙ+`H5XK? 7# BK?9K?+x49 K?1# *BjK? BK?9J?+x49(K?1# *BK?!+`H6H+wH!?+wH3t `"+x4:X# %BK?9J?K?+`H4 sU  ?K?9K?K?+`H5 V5K?+`H4 sU 4?K?+`H4 sU  ?+`H?H7+`h3HC?/K?+`H6X  4K?+`H3 T JK?Y@7?k?7k?9k?1c?/K?9H??k?K?9Jt?4  BK?9H??4  BK?9J? "K?9K?JtK?9K?9J?4 ` BK?9J?4 " BK?9K?t "K?9J?JK?9K?9Jt?4  2+x4:h# )B\K?9H??4  2+x4:# )B@\K?9J?K?9J?7?#0!PBk?K?"!B+`H?XK? ҕC?/5!K?+`H3 T J+`H3 +w4: +x49C?/Ҙ+`H5XK? 7# BK?9K?+x498K?1# *BK? BK?9J?+x49pK?1# *BBK? ZK?+`H! _ aJ+`H6 \K?4 ` 2K?4  K?? zK?K?1J@K?K?1H?0:K?+x49K?1# *BK?b BK?+`H5 V5K?+`H4H+wH5Ҷ+wH!? t`"+x4:# %BK?9J?K?+`H! _ aK?9J?K?+`H3 T  6K?+`H3 T K?+`H?H7+`h3HC?/K?+`H6X  44K?Y@7?k?7k?9k?1c?/K?9K?k?K?9J?4  BK?9K?4  BK?9J?? "K?9Jt?JK?9K?9H??4  BK?9J?46 BK?9Jt?ҕ "K?9J?H?K?9K?9J?K?9J?7?#0!PBk?K? BK?9H:?+x49K?1# *B+`H?XK? ҕC?/5 JK?+`H3 T J+`H3  \K?4  2K?4 b K?ҕ zK?K?1H?@K?K?1J0:K?+x498K?1# *BBK?+`H! _ aK?4K?Y@7?k?7k?9k?1k?)K?1@?c?K?1`K?9K?)#$Bk?K?1C?K?K?Y@7?k?7k?9k?1k?)+H6 `k?K?9K?1K?)#*B+H? `7+h3 `+H4 `K?) +h? `K?K?Y@7?k?k?K?+`H40t+`H50B+wH3 ҕ4  +`H?07+`h30+`H40BҶ+wH! 6 4 ?}@+`H60B?+wH3 ҕ4 ? 4@B+`H30Btҕ0H46? 4 2+`H306tU+`h40U#+`H60B?+wh?+wH3+wH4t Ҷ46+wH3+wH4t Ҷ46 T 4@B+`H60B?04֓ 4ֵ 2+`H606S+`h?0S`!r+`H40BҶ+wh6+wH?+wH3 ҕ4 +wH3+wH4t Ҷ46 T 4@B+`H60B?04֓ 4ֵ 2+`H606S+`h?0S`>@K?+`H504+`H60B?+wH3 ҕ4 ? 4B+`H30Btҕ H46? 4 4B+`H40BҶ X4 4st 4B+`H50B? P4t 4֔ 4B+`H60B? R4֓ 4ֵ 2+`H606S+`h?0S` *K?+`H5004K?J+`h?0\@@k?k?K?+`H40t+`H50B+wH3 ҕ4  +`H?07+`h30+`H40BҶ+wH! 6 4 ?}@+`H60B?+wH3 ҕ4 ? 4@B+`H30Btҕ046? 4 2+`H306tU+`h40U#+`H60B?+wh?+wH3+wH4t Ҷ46+wH3+wH4t Ҷ46 T 4@B+`H60B?04֓ 4ֵ 2+`H606S+`h?0S`!r+`H40BҶ+wh6+wH?+wH3 ҕ4 +wH3+wH4t Ҷ46 T 4@B+`H60B?04֓ 4ֵ 2+`H606S+`h?0S`>@K?+`H5004K?J+`h?0\@@k?k?K?+`H40t+`H50B+wH3 ҕ4  +`H?07+`h30+`H40BҶ+wH! 6 4 ?}@+`H60B?+wH3 ҕ4  2+`H?07T+`h30T!r+`H50B+wH3 ҕ4  2+`H?07T+`h30T +`H50B+wH3 ҕ4  2+`H?07T+`h30T?]@K?+`H6004K?H?+`h?0\@@c?+`H30Btҕ+wH6 ?4  +`H506+`h60+`H!0@?+wH4 Ҷ46?}@C?t+`H50B4 0\+`H?07+`h304@@k?7k?9k?14k?4R# -B 4X# -B K?17Uk?1#0"Bk?K? BK?9H?7 3K?9K?1_@k?k?K?K?Y@7?k?ok>4k?K>+`H64# -B!4# -B 7?#0"B 4*4# -B 4#k?K? K>K?t4X# -B 7?#0"B 4"7?_M@ 4֣k?K? 2K?K?# $BK> <k?K?K>@O?k?o k64k7Q4# -B! 4# -B "K6+`H4t77i_M@ 4*77q# /B 4֣k7QK7Q 2K7iK7q# $BK6 <77Y77a# $@B BK7YK7aX#*BK677Y77a# )B BK7YK7aX#*BK6(|77Y77a#,`B!4P# -B!z77y_E@k7QK7Q!B4k7K7yk77777# .Bk7QK7Q K7YK7aK7#+hBk?K?K64k?K?K7`j77K? ? K?K? K?4?k?K?K7@:K7YK7aX#*BK6k7QK7QK6@O7k?7k?9k?1K?1+`h60K?9+h? `7?#0"B 0\+H3 `K?t+H< `K?Y@7?k?7k?9k?1K?9K?1 +`H3` #0&BK?Y@7?k?ok?k?9k?1K?94  k?9Hvk?946 RK?9c BK?9Htk?94  K?9#?@+`H?+`H3 +wH56?`*+x4:# )B K?94 `%zK?9K?1Jhԁ+`H?7+`h34K?9K?1Jh5+`4:0+x49# B+`4306tBuҶ+`H?7+`h3 b6VTB?+`H36u+`h5?@+`H66?+`h?K?9+`H4+`H56+`h64+`H?7+`h34K?9+`H6 8+`4:0+x49# B+`4?07Cҕ+`H66+`h? b6tUSB+`H46+`h5?@+`H66?+`h?K?9K?1J@+`H66+`h?4+`H46+`h54K?9K?1K@ aҘ+`4:0+x49# B+`4506B?+`H36t+`h4 b6AV@?+`H46+`h5`?@+`H66?+`h?JK?94 !:+`4:0+x49K?9# B+`4!04?@3t+`H56+`h6 b7S_Btҕ+`H66+`h3?@+`H46?+`h5K?9 !K?9 t+`H5` 6_Bt+`H56+`h6 b7S_Btҕ+`H66+`h3?@+`H46?+`h5+`H6K?96#:+`H?7+`h344zCK?1_@4uCC4  k?9Hk?94  RK?9 BK?9Hvk?946 K?9c?@+`H4K?9!B+`H66+`h?4X4zCK?1_@4tCC4  k?9Hak?94 ` RK?9 BK?9Huk?94  K?9?@+`H3K?9>@+`H5K?9 R+`H?7+`h34K?1Z_]@+`H56+`h64XK?9 t+`H5` 6_Bt+`H56+`h6 b7S_Btҕ+`H66+`h3?@+`H46?+`h5+`H66+`h?4P4K?9ҕ d K?1_@+`H66+`h?4X4UDK?9$u@dK?1_@+`H?7+`h34RK?YK?@O?k?7k?9k?1+`H5+`h5K?9K?1#0(B+`H66+`h?+`H<K?Y@7?k?7k?9k?1+`H3+`h3K?9K?1#0(B+`H46+`h5+`H:Y# *BK?Y@7?k?7k?9k?1k?)+`H6+`h6K?9K?1#0(B+`H?7+`h3K?)+x49+`H8# BK?Y@7?77?!,0k?)k?!7?1k?K?JtK?J4 ?>k?v u>5BK? SֳBҁB֓B676K?)K?!vK?@7?7k?9k?1k?)7?k?K?96?k?9K?17?k?1K?)6?k?)K?9k?9K?9 t>k?K?9Ҷk?9K?1K? Sk?1K?)K?9 Vk?)K?K?1 ?K?K?)t7?.@7?k?7k>7>.7>, 7?q7?y7?k?#*BK>+`H4xtK>K?qK>K?y ?K>K?tK>6 k>K>K>@7?k?7k>k>K>k?qK?q4  RK?qk?i7?a'88H87?.aK?q4  !bK?qKk?yK?y4 " RK?yk?i7?a&D88H9 7?. +`H!xK?y ZK?qJzK?qJK?qJ#+B7?P,!8H 7?/ +H: # )B\8H 7?.a K>k?qK?q46 RK?quk?i7?a&88H:7?,1K?q4 !bK?qJk?yK?y4  RK?yk?i7?a'E88H;Y7?.q+`H5xK?y ZK?qH:K?qKK?qJx#+B7?P.8H7?.+H: # )B\8H7?,17?/7?.q4; 0$ U7?/7?.a48 0$ U K>@7?k?7k>c>k>k>K>k?1K?14  RK?1k?)7?!'88H87?a.aK?14  !bK?1Kk?9K?94 " RK?9k?)7?!&F88H 9I 7?a. +`H!xK?9 ZK?1JzK?1JK?1J#+B7?aP,!8H7?a/+H: # )Bp\:k?9+H: # )B(\K>k?1K?14 " RK?1k?)7?!&88H;7?a.K?14 `!bK?1Jk?9K?94 b RK?9Ҷk?)7?!$(G8࢚8H;z7?a/+`H3xK?9 ZK?1JK?1H9K?1K#+B7?aP.q8H7?a.+H: # )B \:k?9+H: # )B\C>mH P@@@@@@@p@P@P@@@0@P@@ @@@X@7?a/7?a.q;7?a.7?a.7?a,18.7?a`/7?a.a7?a. 9 N 7?a . 7?a,! 7?a/9vn7?a.`7?a.7?a.4; 0$ A K>S8\7?a.7?a.4;[ 0$ A K>S\7?a.7?a.4; 0$ A K>SH\7?a.7?a.4; 0$ A K>S\7?a.7?a.48 0$ A K>SX\7?a.7?a.48 0$ A K>S\\7?a.7?q7?y7?k?#*BK>+`H3xK>K?qK>K?y ?K>K?uK>6 k>K>K>@7?k?/,7k>k>K>K?k?!K>J?k?1K>H??k?9K?!4  2K?!4 b *K?!Ҷ K?!H?k?!K?!4  K?!? \K?!ֳ Ҷ+`H!` 6 Cuc?K?1k?)K?)4 b RK?)Ҷk?7?!$998H 9( 7?a/ K?)4 !bK?)H?k?!K?!4  RK?!?k?7?!&yH98H:7?a.+`H6xK?!6 ZK?)KK?)JyK?)J#+B7?aP.8H7?a,!+H: # )Bp\:k?!+H: # )B(\K?9k?)K?)4  RK?)?k?7?!&y 9 8H;Y7?a.K?)46!bK?)Juk?!K?!46 RK?!uk?7?!&I9 8H;7?a,1+`H?xK?! ZK?)JK?)JK?)H8#+B7?aP/8H7?a.q+H: # )B \:k?!+H: # )B\C?4 4؂ R7?a/7?a.q# B7?a.7?a.#0/@B8H 7?a,!#0/@B9n7?a/\7?a.`7?q7?y7?k?#*BK>+`H!xK>K?qK>K?yK>K? ?K>6u k>K>K>7?@/0,k?7k>k>K>J?k?1K>K?k?9K?14  2K?14  *K?1 K?1Kk?1K?14 $ K?1` x\K?1 +`H3` Bc?K?9k?AK?A4  RK?A?k?)7?!&h 9@8H87?a.K?A46!bK?AJuk?1K?146 RK?1uk?)7?!&J9@8H 9( 7?a,1 +`H?xK?1 ZK?AJK?AJK?AH8#+B7?aP/8H 7?a.q +H: # )B(\:k?1+H: # )B\C?{HPb@@x@@@@x@h@X@H@8@(@@@@@@@8@@@@x@h@X@H@8@(@@@@@@@x@@@@x@h@@H@8@h@@@@@@@8@@7?a,1#0(XB87?!/K?!K?)k?qK?q6B4 SK>6k>K>7?a,1#0.`B7?a/7?a.q#0/@B7?a.7?a.# B7?aP, 7?a/#!B7?a.`7?a.#"B7?a.7?a,1#0-PB7?a/7?a.q#0, B7?aP.7?a.#0,HB7?a, \7?a/7?q7?y7?k?#*BK>+`H6xK>K?q ?K>K?yuK>K?K>7 k>K>K>@7?k?7k>k>k>K>J?4  BK>K?4  BK>J?? "K>Jt?JK>K>H??4  BK>J?46 BK>Jt?ҕ "K>J?H?K>K>J?4  BK>K?4  BK>J?? "K>Jt?JK>K>H??4  jK>J?46 BK>Jt?ҕ "K>J?4 b \+`H:+x49`K>J?ҸK>J? +`H4` K>J?k?# B+`H:# &PB7?/7?.a7?a7?i7?qk?#*BK>+`H6xK>K?a ?K>K?itK>K?qK>4? k>K>K>@7?k?7k?9k?1k?)K?1Jt?4  +`H!xJ \JJJ#+B7?.q+`H:+x497?.# &B4K?Y@7?@ @K?@ @k?ok?9k?1K?9K?1#,Bk?K?? 4k?K? 4"#0&B 4֣k?K? K?# HB\K?Y@O?4@@k?7k?9k?1k?)k?!+w4: +H9 # B\K?Y@7?k?7k?9k?1k?)k?!+w4: +H9 # B\K?Y@7?Ku=Ks= k?/%0k?o7>,`k>k> `  J h :] *@@'0,`_-7?7?',`0 .`00$ 20 0$ "6.0.K>@O?k?o7>,`k>k> `  J h :] *@@@'0,`_7?7?',`0 .`00$ 20 0$ "6.0K>@O?k?77?7>/k>k>/ 7?q.k?y"fk?q_  P. v\ *@ h@'(0/0 0$ 0.0.K>@7?%0H @1Hr0H @1H0H @1H"I0H @1Hk?77?1H@ djK?Y@7?k?77?1H@ jK?Y@7? U0H @1H"0H @1Hk?71H7?@|jK?Y@7?$Header: cd_exp.s,v 1.10 92/05/14 15:14:44 esler Exp $ 0H @1Hk?71H7?@k:K?Y@7?$Header: cd_log.s,v 1.10 92/05/14 15:14:46 esler Exp $0H @1Hk?71H7?@0k:K?Y@7?$Header: cd_pow.s,v 1.12 92/06/09 10:56:15 mills Exp $0H i0H @1Hk?77?1H /  7?@k:K>@7?0H 0H @1H@1H0H @1H0H @1H10H 1H@1 Hy0H @1HJ0H @1Hb0H 1Hzk?71H@VK?Y@7?k?71H@ȷVK?Y@7?k?71H@\V0HK?Y@7?0H @1H"A0H @1Hk?71HV7?@@jK?Y@7?@0n+47 &+`4@h?pk?ok? K>+487?q.k?i7?4B P,`4A (k?a,`A 7?a +`h$p0 0$ b4k?a7?a#7.aA `,` j+`4DPh5p0H4k?a,`A 7?a +`4Dh4p,`K>K? @O?k?/,/-ok?)0H +D0H 7?q/@ 1H/P 43A`k?i AH1H A01H A 01H0HA 1H0H7?,`A 7?a +`44Bh?p+wU4: p,`7?4k?a7?a"6/A ,` +`4Dh9p,`K>K?)O?!/0-@/0,k?oAC +`4Bh?pK?Y4w0.@O?k?@*@/$0K?@k?7+7?q/47HAk?i7?/_7?aK>@7?k?@*@/$0K?@k?7+7?q/47XAXk?i7?/_E7?aK>@7?k?@*@/$0K?@k?7+7?q/47hAk?i7?/_7?aK>@7?k?7+7?q/47xA(k?i7?/_7?aK>@7?k?7+7?q/47Ak?i7?/_7?aK>@7?k?/,o0H +481H7?q. Ak?i Z1HA7?,`A7?a +`4Bh?p,`@1HK>O?@/0,k?/,o0H +491H7?q/ A k?i Z1HA7?,`A7?a +`4Bh7p,`#C7]/1 0$ b+43 .`7?,`A07?a +`4Bh?p,`@1HK>O?@/0,k?/,o0H +491H7?q/ @k?i Z1HA7?,`AH7?a +`4Bh7p,`A 1H#C7]/0 0$ b+43 .`7?,`A7?a +`4Bh?p,`@1HK>O?@/0,k?/,ok?0H +D1H7?q,@ 4#k?i7?@,` 1H4@k?a,`A7?a 2+`44Bh8p+wU4: P,`1 0$ 4k?a7?a"c6u. @,` +`,` 44Bh7p+wUI4: ,`1 0$ z4k?a@\7?a R+`44Bh?p+w4: #7.U,`,`K>K?O?@/0,k?/,ok?0H +D1H7?q,@ 4#@k?i7?@t,` 1H4@dk?a,`@7?a 2+`4P4Bh8p+wUy4: P,`1 0$ 4k?a7?a"c6u. @l,` +`,` 44Bh7p+wU 4: ,`1 0$ z4k?a@7?a R+`44Bh?p+w4: #7.U !,`,`K>K?O?@/0,k?/,ok?0H +D1H7?q,@ 4#k?i7?@,` 1H4@k?a,`@7?a 2+`44Bh8p+wU 4: P,`1 0$ 4k?a7?a"c6u. @,` +`,` 44Bh7p+wU I4: ,`1 0$ z4k?a@\7?a R+`484Bh?p+w4: #7.U ,`,`K>K?O?@/0,k?/,ok?0H +D1H7?q/ 49`k?i4@tk?a z1H@l7?,`@7?a 2+`4p4Bh7p+wU 4: ,`1 0$ 7?/ p1H0H7?7?a@l,` 2+`44Bh?p+wU4: ,`K>K?O?@/0,k?ok? k?+7>7>,,`7?q.D.47@k?i @,` @l, @l,7?@L,`7?,`4k?a@7?a 2+`44Bh=p+wUI4: ,`   T ` htTU4 k?a0H7?8/,`0 0$ 0H7?,@7?a 2+`44Bh"p+wU14: 7?."Z@Y ׿  0H7?4,`k?a@7?a 2+`44Bh:p+wUa4: ,` `Ҷ h @,##7=/0 0$ :,`0 0$ (0H K>,`0 0$ 0.0H8 ,0 0$ :,`0 0$ p0HhK>,`"6_5/P7? .`,#7/0 0$ ,`0 0$ 20 0$ J,`0 0$ */4k?a7?(,`0H4k?a7?,`@ 7?a +`4Dh$p,`K>K?K? @O?k?o+43@k?i7?,a,q4k?a7?a#7.@<,` +`4Dh8pK>,`@O?k?ok?C@ /P ,p4@ v4d0,@Z * h+w4: +U49H+`4Bh3p,@,,p#7,!0 0$ 247 @ 0H4d04 , t@tZ +`4Dh=p h+w4: +T49p,0H4d04 , u@Z B+`4Dh:p h+w4: +T549,K?YK?@O?k?7+477?/k?i/_7?aK>@7?k?7+477?/k?i/_7?aK>@7?k?7+477?/k?i/_M7?aK>@7?k?7+477?/k?i/_7?aK>@7?k?ok? +7?q/@D48@ k?i7?,`K?k?@ <7?a +w4T4: ,`+`4Bh9pK>K? @O?k?ok? k?k?7>,7>,,7?q, +E7?.45 k?i4k?a7?@<,` @$, @ , @ ,,`@ ,,`@ 7?a +`4Bh<p+w4: T40`,`   ]ዿ ` ,0 4/,`0$ /0N,`,0 0$ ,`0.,`h,`0H7?a@ 4,` 2+w4`T4: +`4Bh$p,`K>K?K?K? @O?k?ok? +7>/7>,7?q.C4=k?i4@\k?a *@\,0H7?x,  :  *+46 .7?,0H7?,@|7?a 2+`4y4Bh:p+wT4: ,K>K? @O?k?ok? +7>/7>,7?q.C4=k?i4@k?a *@,0H7?x,  :  *+46 .7?,0H7?,@7?a 2+`4y4Bh:p+wT=4: ,K>K? @O?k?ok? +7>7>,.`7?q.45k?i7?@,` Z,4@k?a,`@7?a!+`4Bh9p  " @ ,,`,0 4k?a0$  C4_/ #4$,,`@7?a +`4Dh=p,`K>K? @O?k?ok? +7>7>,.7?q.4<k?i7?@$,` Z,4@k?a,`@7?a +`4Bh9p  : @ *,,`K?D`k?4k?a7?a#7.a@,` +`4Dh4p,`K>K? @O?k?o+7?q/49 @k?i7?,`4k?a@D7?a +`4Bh?pK>,`@O?k?o7?q/ 4@k?a7?,`K?k?@7?a +`4Bh?pK>,`@O?k?/,o0H 7>,`@01H @,` @1H @1H7?@,`7?,`@7?a +`4Bh8p,` ` h: ] 7?.` 1H@1H @,` @1H Z+44 .7?,`@7?a *+`4Bh7p7?,` ,`K>O?@/0,k?ok? +7>,k>k>C430k?i7?q@. ,4@k?a7?,@x7?a 2+`4y@4Bh7p+wT 4: (,   7?4k?a7?a##7=/@, 2+`4yx4Bh?p+wT -4: p,"6/7?,`4k?a@(7?a +`4Dh"p,`K>K? @O?k?o+C47k?i4k?a@7?a +`4Dh?p "b R` zd K>+4= /0.7?/+4: /@7?P.0H7?0.0H+`4B7?h9p.K>7?.`@O?k?/,ok?0H +D1H49k?i7?q@/@ 1H7?4@k?a,`@7?a +`44Bh?p+wT 4: ,`0H7?4 k?a,`@(7?a 2+`44Dh7p+wT 4: ,`K>K?O?@/0,k?/,ok?0H +D1H44 k?i7?q@p. 1H7?4@Xk?a,`@7?a!j+`4 4Bh7p+wTu4: 0,`1 0$ 7?4k?a7?a#7/ @X,` +`4 84Bh?p+wT4: ,`0H7?4 k?a,`@7?a 2+`4 `4Dh:p+wT=4: ,`K>K?O?@/0,k?/,ok?0H +D1H49 k?i7?q@/@ 1H7?4@k?a,`@7?a +`4 4Bh?p+wT4: ,`0H7?4 k?a,`@(7?a 2+`4 4Dh7p+wT4: ,`K>K?O?@/0,k?/,ok?0H +D1H44 k?i7?q@p. 1H7?4@Xk?a,`@7?a!j+`4 4Bh7p+wTu4: 0,`1 0$ 7?4k?a7?a#7/ @X,` +`4 4Bh?p+wT4: ,`0H7?4 k?a,`@7?a 2+`4 84Dh:p+wT=4: ,`K>K?O?@/0,k?/,ok?0H+D0H 49 `k?i1H7?q/@@/P 1H7?4@k?a,`@7?a +`4 h4Bh?p+wT 4: ,`0H7?4 k?a,`@7?a 2+`4 4Dh7p+wT4: ,`K>K?O?@/0,k?/,ok?0H+D0H 44 k?i1H7?q.@ P. 1H7?4@8k?a,`@7?a!j+`4 4Bh7p+wTU4: 0,`1 0$ 7?4k?a7?a#7/ @8,` +`4 4Bh?p+wT4: ,`0H7?4 k?a,`@7?a 2+`4 4Dh:p+wT4: ,`K>K?O?@/0,k?/,opk?7?1,`0H +43 k?)k?!.`1 D_0$ 1HWD t "bK?)4/T`4 .80N4hU@4 /0 zD |"60._Ә1NK?),`D |d_mk?)K?YD 93>s@Ӣ B@@ry@@2 !>a@Z VA@4 ,@0,`D |z` "60.<>|@7X?4ԂЙ 7]@_,` 1N ,`4 /0N@,`K?YK?O?@/0,+D7 p7?/7?/XZ   yT@@/+D: p7?' 7?'k?k? ST T S V@@'7+D: t7?1/k?)k?!Uҹ Yҗҝ]!X jD6 D3 ?>@ӷz W'0@7?/44 .0 0$ ""60,1@7?"60/0n0.@7?/0 0$ @7?D< p @/@7?77?/    (4@7?77?'    (4@7?k?/,ok?+D8 p7>7?q,7>,` WS  @ `BD= t7?a WY (Z,`,0.0.,46 .0 0$ `0n`S  20 0$ (K>,`D4 ҕ>v@t@D5 |#70.a_}Ҹ0H ,,`0N_,,`0N,_,`H0n4< /"60. 0n0 0$ :0n,`0n,_U,`0N0D3 p/T t t@,`/0 0n0$ \ VD4 t/@S  UӂSS@,`/0 0$ b4S?S@,`/0./0 ,`0$ '0 0$ :,0.0 ,`0$ 0.,`ZӴ @,`K>K?O?@/0,77?. 8 \ ]"S4@7?77?'@@  \;4@7?77?/7 R@ B0 0$ 4?@7?4@7?\@7?77?'   J0"0 0$ 4?@7?4@7?\@7?77?/K?ŗk?_k?/@7?70@7?'K?7k?k?'@7?@\0 0$ @0hk?7_@K?Y@7?XX $4X$8$X$%pX**,X*0*DX*H*\X*`*tX*x*X**X*+X++HX+P/X/0X02 X2$3X35X57TX7X8X89XHxKXK]X]^X^`X`aHaaaeHeeHeeHeeHeeHffHf fHff Hf$f,Hf0f8Hf<fDHfHfPHfTf\Hf`fhHflftHfxfHffHffHffHffHffHffHffHffHffHffHfgHggHggHg g(Hg,g4Hg8gHggHggHggHggHghHhhHh hHhhHhh Hh$h(Hh,h0Hh4h8Hh<h@HhDhHHhLhPHhThXHh\h`HhdhhHhlhpHhthxHh|hHhhHhhHhhHhhHhhHhhHhhHhhHhhHhhHhhHhhHhiHijTjXj\j`jdjhjjm 0mnnnno,o0oLoPolopoooooooop pp$sXssssttt(tttuu uduhvvvvvwwwxTxXxx}\}`~~ ~4~8~`~d~~~~48x|ptpt(, $tx    $<@X\ $hl@D X\`dtxHLhl8< HL<@     h l  10142d2h335 55588<<<|<<<=(=,==>>??@0@4AAATAXE E$FFG4 G8HHK|KLxL|MM NNOlOpP@PDQQS@SDVhVlVVX0X4ZZ\ \$^^`0`4bbeeflfpggiij\j`jkllmmo,o0pprxr|rrs8s<ssuuwpwtxxz(z,{{hl `dTX,0 @D TX48PT 04lpx|,x| $48HL\`0<@` $LPhp ,0PXhl| ¤àBä0TČİ$(`d!Ɣ!Ƙ\!`Ȝ"Ƞ"" "$(τψ8<lpѠѤӤӨx|LPDH(,׀ׄ!ۤ"ۨ"ݤ"ݨ"߬"߰""<@"LP $<i p( p@ s(sH  4Đ@a@a@q@u%/lib/dld.slERROR couldn't open dld.slERROR reading dld.slERROR bad magic number/system id for dld.slERROR bad dld.sl hpux aux header (text) (data) (bss)crt0: errno: @  Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programeditbp_stateeditor_filenoname.plbp_stateversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%u%u%u%u%u%u%u%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s%s interruped(%ld)...restarting @string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifytrailing in unifytrailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d trailing in unifytrailing in unifyunexpected push_variabletrailing in unifyexecutionexecutionexecutiontrailing in unifytrailing in unifytrailing in unifytrailing in unifyexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETexecutionexecutionexecutionEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2trailing in unifyerror in bb_list/2value trailingUnexpected: ISO I/O oprationUnexpected: blackboard operationexpected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loading%s unable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1rbhdef in seewbhset in tellwbhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arity%ldboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingvalue_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityvalue trailingchange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYS(75%)Stamp found %d, expected %d hash op on protected objecthtable full in hash op(75%)arg 1 of hash op should be nonvararg 2 of hash op should be nonvarStamp found %d, expected %d hash op on protected objecthtable full in hash opunsafe data in def/3 or set/3(75%)def/3 expected before set/3, rm/2unsafe data in def/3 or set/3string buffer (-i option) exceeded or infinite term%ld%ld%ld%ld%sbad arg in arithmetic operation%ld%-se%-ld %f@'@'@'@'@'prolog:$end0_truecuser_bpc.c not compiled with -D C_INTERFACE @(@4@< @@@D@L@TB@X@\@d@l @pB@t @x@|@Մ@ՈB@Ռ@Ր@՘@՜ @ՠB@դ @ը@լ@մ@ռ @B@ @@̯@԰@ @B@ @@@@ @B@ @@ @@ @$B@( @,@0@8@<@@@DJ@H @L@P@X@\@`@dJ@h @l@p@x@|@ր@քJ@ֈ @֌@֐@֘@֜@֠@֤J@֨ @֬@ְ@ָ@ּ@@J@ @@Я@ذ@@@J@ @@@@J@ @@ @@J@ @$@(@0@4@8J@< @@@D@L@T@X@\J @` @d@h@p@x@|@׀J @ׄ @׈@׌@ה@ל@נ@פJ @ר @׬@װ@׸@@@J @ @@د@@@@J @ @@@@@@J@ @$@(@0@4@8@@< @@@D@L@\@`J?@d @h@l@t@߄@߈J@@ߌ @ߐ@ߔ@ߜ@ߤ@ߨJA@߬ @߰@ߴ@߼@@@@JB@ @@@@@@JC@ @@@ @@@@ JD@$ @(@,@4@<@@@DJE@H @L@P@X@`@d@hJF@l @p@t@|@JG@ @@@@@JH@ @@ฯ@@@JI@ @@ܯ@@@@JJ@ @@@ @@JK@ @ @$@,@8@<@@JL@D @H@L@T@\JM@` @d@h@p@@@@JN@ @@ᘯ@ᠰ@@JO@ @@@Ȱ@@@@JP@ @@@@@JQ@ @ @@@,@0JR@4 @8@<@D@T@XJS@\ @`@d@l@x@|@JT@ @@⌯@┰@@JU@ @@⬯@ⴰ@⼠@@į@̰@Ԡ@@ܯ@@@@@@@@ @@(@,@0@8@L@P@T@\@d@h@l@t@|@@ㄯ@㌰@㔠@@㜯@㤰@㬠 @@㴯@㼰@Ƞ @@Я@ذ@ @@@@ @@@ @ @@@ @,@8@H@T@`@l@x@䄱@䐱@䜱@䨱@䴱@@̱@ر@@@@@@ @,@8@D@P@\@h@t@倱@匱@嘱@失@就@弱@ȱ@Ա@@@@@@@(@4@D@P@\@l@|@挱@朱@樱@洱@@̱@ر@@@@@@@ @@@ @$@,=@4@8@< @D@H@P@T@X@\@`@d @l@p@x@|@=@@@ @@瘯@砰@@=@@@ @@ȯ@а@@=@@@ @@@@@ =@@@ @$@(@0@4@@=@L@P@T @\@`@h@l@p=@t@x @@@@@蔯@蜰@@=@@ @@@@@ȯ@а@@=@@ @@@@@@@@ =@@ @@ @(@,@0@8@<@@=@D@H @P@T@\@`@d@l@p@t=@x@| @@@@@阯@頰@@=@@ @@@@@ԯ@ܰ@@=@@ @@@@ @@@@ =@$@( @0@4@<@@@D@L@P@X=@`@d @l@p@x@|@ꀯ@ꈰ@@=@@ @@@@@꼯@İ@@=@@ @@@@@@@@=@@ @(@,@4@8@<@D@H@T=@`@d @l@p@x@|@뀯@눰@@=@@ @@@@@į@̰@@=@@ @@@@@@@@=@ @ @@@$@(@,@4@8@<=@@@D @L@P@X@\@`@h@l@p=@t@x @@@@@씯@윰@@=@@ @@@@@ȯ@а@@=@@ @@@@@@@@=@ @$ @,@0@8@<@@@H@L@P=@T@X @`@d@l@p@t@|@@=@@ @@@@@@@@=@@ @@@@@@@@=@@ @@@ @$@(@0@4@8=@<@@ @H@L@T@X@\@d@h@l=@p@t @|@@@@@@@=@@ @@@@@į@̰@@=@@ @@@@@@@ @=@@ @(@,@4@8@<@D@H@T=@`@d @l@p@x@|@@@@=@@ @@@@@į@̰@@=@@ @@@@@@@@ =@,@0 @8@<@D@H@L@T@X@d=@p@t @|@@@@@@@=@@ @@@@@ԯ@ܰ@@=@@ @@@@@@ @$@0=@<@@ @H@L@T@X@\@d@h@t=@@ @@@@@@@@=@@ @@@@@@@@=@@ @@ @(@,@0@8@<@H=@T@X @`@d@l@p@t@|@@=@@ @@@@@@@@=@@ @@@@@ @@@$=@0@4 @<@@@H@L@P@X@\@h=@t@x @@@@@@@@=@@ @@@@@ȯ@а@@=@@ @@@@@ @@@$=@0@4 @<@@@H@L@P@X@\@h=@t@x @@@@@@@@=@@ @@@@@د@@@=@@ @@ @@@@$@(@4=@@@D @L@P@X@\@`@h@l@t=@|@ @@@@@@@@=@@ @@@@@د@@@=@@ @@ @@@@$@(@4=@@@D @L@P@X@\@`@h@l@|=@@ @@@@@@@@=@@ @@@@@@@ @=@,@0 @8@<@D@H@L@T@X@h=@x@| @@@@@@@@=@@ @@@@@@@@=@@ @@ @(@,@0@8@<@L=@\@` @h@l@t@x@|@@@=@@ @@@@@@@@=@@ @@@@@@@@=@@ @$@(@0@4@8@@@D@L=@T@X @`@d@l@p@t@|@@=@@ @@@@@@@@=@@ @@@@@@@@=@@ @@ @(@,@0@8@<@H=@T@X @`@d@l@p@t@|@@=@@ @@@@@@@@=@@ @@@@@@@@=@@ @$@(@0@4@8@@@D@P=@\@` @h@l@t@x@|@@@=@@ @@@@@@@@=@@ @@@@@@ @@ =@0@4 @<@@@H@L@P@X@\@h=@t@x @@@@@@@@=@@ @@@@@د@@@=@ @ @@@$@(@,@4@8@H=@X@\ @d@h@p@t@x@@@=@@ @@@@@@İ@@=@@ @@@@@@@@ @@@ @$@(@0@4@<=@D@H@L @T@X@`@d@l@t@x@| @@@@@@@@ @@@@@=@@@ @@@@ @ =@4@8@< @D@H@P@T@\=@d@h@l @t@x@@@=@@@ @@@@@=@@@ @@د@@@=@@@ @@@@@ =@,@0@4 @<@@@H@L@X@d@h@l @t@x@@@@@@ @@@@@=@@@ @@Я@ذ@@@ @@@@@@ @$@(@0@8@D@P @T@X@`@h@p@x @|@@@@ @@@@@=@ @@@@@@ @@د@@@@ @@@@@ =@ @@@ @$@(=@, @0@4@<@@@L=@X @\@`@h@l@t=@| @@@@@=@ @@@@@ @@ȯ@а@@@ @@@@@=@ @@@@ @=@ @@@$@(@4 @@@D@L@P@\@h @l@p@x@|@@ @@@@@@ @@ȯ@а@@=@ @@@@@=@ @ @@@@ =@$ @(@,@4@8@<=@@ @D@H@P@T@X=@\ @`@d@l@p@x @@@@@@ @@@@@=@ @@@İ@@=@ @@@@@ =@ @@@$@(@0=@8 @<@@@H@L@\=@l @p@t@|@@=@ @@@@@=@ @@ܯ@@@=@ @ @@@@ =@$ @(@,@4@8@@=@H @L@P@X@\@h=@t @x@|@@@=@ @@@@@=@ @@ԯ@ܰ@@=@ @@@@ @=@, @0@4@<@@@P=@` @d@h@p@t@@ @@@@@=@ @@ȯ@а@@=@ @@@ @@=@ @@ @(@,@4=@< @@@D@L@P@X=@` @d@h@p@t@|=@ @@@@@=@ @@@@@=@ @@ԯ@ܰ@@=@ @@@@@ =@ @ @ @ @ @ ,=@ 8 @ <@ @@ H@ L@ X=@ d @ h@ l@ t@ x@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ د@ @ @ @ @ @ @ @ @ @  @ @ @ (@ ,@ 8@ D @ H@ L@ T@ X@ `=@ h @ l@ p@ x@ |@ =@ @ @ @ @ @ =@ @ @ ȯ@ а@ @ @ @ @ @ @ @ @ @ @ @ @ @ =@  @ @ @ $@ (@ 0=@ 8 @ <@ @@ H@ L@ T=@ \ @ `@ d@ l@ p@ t=@ x @ |@ @ @ @ =@ @ @ @ @ @ =@ @ @ @ @ @ =@ @ @ ԯ@ ܰ@ @ =@ @ @ @ @ @ =@  @ @ @ @ @ =@ @ $@ (@ 0@ 4@ 8=@ < @ @@ D@ L@ P@ T=@ X @ \@ `@ h@ l@ p=@ t @ x@ |@ @ @ =@ @ @ @ @ @ =@ @ @ @ @ @ =@ @ @ Я@ ذ@ @ =@ @ @ @ @ @ =@ @ @ @ @ @ =@ $ @ (@ ,@ 4@ 8@ @=@ H @ L@ P@ X@ \@ d=@ l @ p@ t@ |@ @ =@ @ @ @ @ @ =@ @ @ @ İ@ @ =@ @ @ @ @ @=@ @@ @@@ =@( @,@0@8@<@D=@L @P@T@\@`@h=@p @t@x@@@@ @@@@@=@ @@@Ȱ@@=@ @@@@@=@ @@@ @$@(=@, @0@4@<@@@D@H @L@P@X@\@`=@d @h@l@t@x@|=@ @@@@@=@ @@@@@=@ @@ȯ@а@@=@ @@@@@=@ @@@@ @=@ @@@$@(@,=@0 @4@8@@@D@L=@T @X@\@d@h@p=@x @|@@@@=@ @@@@@=@ @@ȯ@а@@=@ @@@@@=@ @@@ @$@8=@L @P@T@\@`@t=@ @@@@@@ @@̯@԰@@@ @@@@@@ @@@@ @(@0 @4@8@@@D@L=@T @X@\@d@h@p@x @|@@@@@ @@@@@@ @@@@@@ @@@ @@@ @$@(@0@4@<@D @H@L@T@X@`@h @l@p@x@|@@ @@@@@@ @@@@@@ @@@@@=@ @ @@@@$@, @0@4@<@@@H=@P @T@X@`@d@l=@t @x@|@@@@ @@@@@@ @@į@̰@@@ @@@@@ @ @@@@$@, @0@4@<@@@H=@P @T@X@`@d@h=@l @p@t@|@@@ @@@@@@ @@@İ@@@ @@@@@=@ @@@@ @0=@@ @D@H@P@T@X=@\ @`@d@l@p@|@ @@@@@@ @@@İ@@ @@ԯ@ܰ@@@ @@@@@@ @@@@ @,=@8 @<@@@H@L@T=@\ @`@d@l@p@x=@ @@@@@=@ @@@@@=@ @@Я@ذ@@=@ @@@@@=@ @@ @(@,@0@4 @8@<@D@H@T=@` @d@h@p@t@|=@ @@@@@=@ @@@@@=@ @@ܯ@@@@ @@@@@ @$@(@0@4@<@D @H@L@T@X@d @p@t@|@@@ @@@@@@ @@̯@԰@@@ @@@@@ @ @@@@$@, @0@4@<@@@L=@X @\@`@h@l@|=@ @@@@@=@ @@ȯ@а@@=@ @@ @@@$@0 @4@8@@@D@P=@\ @`@d@l@p@x@ @@@@@@ @@@@@@ @@Я@ذ@@@ @@ @@@ @( @,@0@8@<@D@L @P@T@\@`@p@ @@@@@@ @@@@@@ @@د@@@@ @@@ @@@ @$@(@0@4@<@D @H@L@T@X@`@h @l@p@x@|@ @@@@@@ @@@@@@ @@@@@@ @@ @@@$@0 @4@8@@@D@H@L @P@T@\@`@h@p @t@x@@@ @@@@@@ @@@İ@@@ @@@@@ @@@@ @@ @ @$@,@0@<@H @L@P@X@\@d@l @p@t@|@@@ @@@@@@ @@ܯ@@@@  @ @ @ @ $@ 4=@ D @ H@ L@ T@ X@ h=@ x @ |@ @ @ @ =@ @ @ @ @ @ @ @ @ د@ @ @ =@ @!@!@! @!@! @! @!$@!,@!0@!8=@!@ @!D@!H@!P@!T@!\=@!d @!h@!l@!t@!x@!|=@! @!@!@!@!@!@! @!@!@!@!@!=@! @!@!Я@!ذ@!@!=@! @!@!@!@!@"@" @"@"@" @"$@",=@"4 @"8@"<@"D@"H@"P@"X @"\@"`@"h@"l@"t @"|@"@"@"@" @"@"@"@"@" @"@"@"Ȱ@"@" @"@"@"@"@" @"@#@#@# @# @#@# @#(@#,@#0 @#4@#8@#@@#D@#H @#L@#P@#X@#\@#p@# @#@#@#@#@# @#@#@#@#@# @#@#@#İ@#@#@# @#@#@#@#@$=@$, @$0@$4@$<@$@@$H @$P@$T@$\@$`@$h@$p @$t@$x@$@$@$=@$ @$@$@$@$@$=@$ @$@$@$Ȱ@$@$=@$ @$@$@$@$@$=@% @%@%@%@%@% @%$@%(@%0@%4@%<@%D @%H@%L@%T@%X@%`=@%h @%l@%p@%x@%|@% @%@%@%@%@% @%@%@%@%@% @%@%Я@%ذ@%@%@% @%@%@%@&@&=@& @&@&@& @&$@&, @&4@&8@&@@&D@&L @&T@&X@&`@&d@&p=@&| @&@&@&@&@&@& @&@&@&@&@&@& @&@&ܯ@&@&@&@& @&@'@'@' @'=@' @' @'$@',@'0@'<=@'H @'L@'P@'X@'\@'h=@'t @'x@'|@'@'@'=@' @'@'@'@'@'=@' @'@'̯@'԰@'@'=@' @'@'@(@(@( @( @(@(@($@((@(4=@(@ @(D@(H@(P@(T@(\@(d @(h@(l@(t@(x@(=@( @(@(@(@(@(@( @(@(@(İ@(@(@( @(@(@(@(@(@) @)@)@)@) @)4=@)H @)L@)P@)X@)\@)h=@)t @)x@)|@)@)@)@) @)@)@)@)@)@) @)@)̯@)԰@)@)=@) @)@)@)@)@*@* @*@*@*$@*(@*4@*@ @*D@*H@*P@*T@*X@*\ @*`@*d@*l@*p@*x@* @*@*@*@*@*@* @*@*@*@*@* @*@*ԯ@*ܰ@*@* @*@*@*@+@+ =@+ @+@+ @+(@+,@+4=@+< @+@@+D@+L@+P@+X=@+` @+d@+h@+p@+t@+=@+ @+@+@+@+@+=@+ @+@+@+Ȱ@+@+=@+ @+@+@+@+@+=@, @, @,@,@,@,,@,< @,@@,D@,L@,P@,`=@,p @,t@,x@,@,@,@, @,@,@,@,@,=@, @,@,@,Ȱ@,@, @,@,@,@,@,=@, @,@,@-@-@-@- @-$@-(@-0@-<@-L@-\ @-`@-d@-l@-x@-@- @-@-@-@-@-@- @-@-į@-̰@-@-@- @-@-@-@.@. @. @.@.@.$@.0@.8@.@ @.D@.H@.P@.\@.d@.l @.p@.t@.|@.@.@. @.@.@.@. @. @. @. @. @. @.@.ԯ@.@. @. @. @/ @/ @/ @/@/@/, @/DJM@/H@/L@/PJ @/T@/XJ)@/\ @/`@/x@/|@/@/@/@/@/@/@/ @/ @/@/@/@/JM@/@/@/J @/@/@/@/@/ @0@0@0 @0$@0, @04 @08B@0@ @0DB@0H @0LB@0P @0TB@0XB@0\@0`@0h@0@0 @0@0@0@0@0@0@0@0 @0 @0@0Я@0ذ@0@0@0@0 @0@0@0@1@1@1 @1@1@1@1( @1, @10 @14 @18@1<@1H@1T @1X@1\@1`@1d @1h@1l@1t@1@1@1@1@1@1J@1@1@1@1@1@1@1 @1 @1@1@1@1@1@1@1@2 @2 @2@2 @2@2 @24 @2H @2L@2P@2T @2X@2d@2h@2l @2p@2t4 @2x@2|3 @2@2@2 @2 @2  @2@2@2 @2 @2B@2 @2B@2@2 @2@2@2 @2 @2@2@2@2 @2@2@2 @2@24 @3 @3 @3@3 @3@33 @3@3 @3$ @3(@3,@34@3@ @3D @3H@3L@3P@3T@3X @3\ @3p@3t@3@3 @3 @3@3@3@3@3 @3 @3@3į@3̰@3 @3@3@3@3@3@3@4 @4@4 @4@4 @4 @4$@4,@4< @4@@4L@4P@4T@4X@4\ @4` @4h@4t@4|@4@4 @4@4@4@4 @4 @4 @4B@4@4 @4 @4 @4@4@4@4 @44@5@5@5 3@54@5>@53@54@5 @5$@5(@5,3@50@54@5@ @5D @5H@5L@5T@5\ @5` @5d @5h@5t@5x@5@5 @5@5@5 @5@5@5İ@5 @5 @5@5@5@6 @6@6@6@6 @6 @6(@68@6L @6P@6\@6`@6h@6l@6x@6 @6@6@6@6@6 @6 @6@6@6̰ @6@6@6@6 @6@6@7@7@7@7@7@7$@7( @7,@70@78@7H @7L @7P@7X @7\@7x@7@7@7@7@7@7 @7@7@7 @7@7@7@7@7į@7԰@7 @7 @7@7@8@8 @8 @8@8(@8,@80@84@88 @8< @8D @8H@8L@8T@8h @8l@8p@8|@8 @8 @8 @8 @8 @8@8@8@8 @8@8@8@8@8 @8 @8@8د@8@9@9@9 J@9@9@9@9J@9 @9$@9,@90J@94 @98@9<@9D@9X @9\@9`@9d@9l@9pJ@9t @9x@9|@9@9 @9 @9 @9B@9@9 @9@9@9 @9 @94@94@94 @9@93@9@9@9@93@9@:@:@: 3 @:4 @:@:3 @: @:, @:0 @:4 @:8 @:@@:D@:H@:L@:P@:T@:XJ/@:\ @:`@:d@:l@:| @:@:@:@:@:@: @: @: @:@:@:@:@:@:J@:@:@:J@:@:@:J @: @:@:@;@;@;@; @;$@;(@;0@;@@;D@;H @;P@;T@;\@;l@;p@;t @;|@;@;@;@;@; @;@;@;@;@;@; @;@;@;@;@;@< @< @<@<@<(@<,@<0 @<<@<@@@> @> @> @>@>@>8 @><>@>D @>H@>T>@>X@>\ @>`@>d@>l@> @>@> @>@>@>@> @>@>@>>@>@> @> @> @>@>@>@> @?B@?@?@? @?(@?4@?8@?P@?\ @?` @?dB@?h@?l @?p@?t@?x @?|@?@? @?@?@?@? @?B@?@?@?а@? @? @?@?@@@@@@ @@@@$@@( @@, @@0 @@8 @@<@@@@@D@@X@@\ @@` @@d @@l @@p@@t@@x@@@@@@@@@@@@ܰ@@ @@@@@@@@J5@@ @A@A@A @A @A@A(@A,@A0@A<@AH @AL @AP@Ad @Ah@At@Ax@A@A @A@A@AȰ@A@Aد@A@AB@A@A@A@B @B @BB@B@B@B @B(@B< @B@ @BD@BH@BP@BT @BX @B\@B`@Bh@Bl @Bp@B|@B@B@B @B@B@B@B@B@B@B @B @B@B @B @B@Bį@BȰ@B @B@Bԯ@Bܰ@B @B @B@B@B@B @B@C@C@C @C @C@C@C @C$ @C(@C4@C8@C@@CD @CH@CL@CT@CX @C\ @C`@Cd@Cl@Cp @Ct@C|@C @C@C@C@C @C@C@C@C @C@C@C@C @C@C̯@C԰@C @C @C@CB@C@C@C@C @C@D@D@D@DJU@D@D@D$@D,@D0@D8@D@@DD@DL @D`@Dd@DhJ$@Dl @Dp@D@D @D @D@D@D@D @D @D@D@Dа@D @D @D@D@D @D @D@D@E@E @E @E@E@E$@E4 @E8 @E<@ED@ET@Ed @Eh @El@Ep@Et @Ex @E|@E@E@E @E @E@E@Eİ@E @E @E@E@E @E @E@E@F@F @F4@F@F4@F @F$3@F(@F03@F44@F8@F<3@FD@FP @FT @FX@F\@Fd@Fp @Ft4@Fx@F|4@F@F3@F@F3@F@F @F @F@F@F@F @F4@F@F@F@F3@F@F @F @F@F@G@G @G@GJ@G @G @G @G$@G( @G,@G8@G<@GH@GX @G\ @G`@Gd@Gh @Gl@Gx@G|@G@G @G @G@G@G @G@G@G@Gİ@G@G@GJ@G@G@GJ @G@G@GJ@G@G@G@HJ@H @H@H @H@H @H$@H,@H0 @H4 @H8 @H< @H@@HD@HL@H\ @H`@Hp@Ht @Hx @H| @H @H@H@H@H @H@H@H @H @H @H @H@HЯ@Hذ @H @H4@H4@H @H @H @I @I @I@I3@I@I @I 3@I$@I,  @I0 @I4@I8@IL @I`@Id@Il@Ip @It@I@I@I@I@I @I @I@I@I@I@I@I @I@Iԯ@Iܰ@I@I@I@I@J@J@J @J @J@J@J @J@J @J4@J< @J@ @JD@JL @JP@JT@JX @J\@J`@Jh@Jx @J| @J@J @J@J@J @J@J@J@J @J@J @J@J@J@J @J@Jد@J@J @J@J@JJ @J @J@J@K@K@K @KJ @K@K@KJ@K @K$@K(@K0 @K4B@K8@K<@K@@KDJ@KH @KL@KP@KX @K` @Kd@Kh@Kl@Kp@Kt@Kx@K|@K@K @K @K @K @K@K@K@K@K@K @K @K@K@K@KJ@K@Kد@K@K @KB@K@K @K @L @L@L@L@L@L @L$@L(@L, @L0@L<@L@@LD@LH @LL @LP@LT@L`@Ll @Lp@L@L@L@L@L@L @L @L @L@L@L@L @L @L@L @L @L@Lܯ@L @L@L@MJ@M@M@M J@M @M@M(@M,@M0@M4@M8@M< @M@  @MD@MH@MT@M\ @M`@Mh@Ml@Mp@M|@M@M @M@M@M@M @M@M@M@M@M@MJ&@M @M@Mԯ@Mܰ@M@M@MJ&@M @N@N@N @N@NJ+@N@N @N(@N<@N@@NDJ*@NH @NL@NP@NX@Nd @Nh@Np @Nt@Nx@N@N@N@NJ.@N @N@N@N@N@N@NJ.@N @N@N̯@N԰@N@N @N@N@N@N@N@O@O@O@O @O@O@O @O@O$@O( @O,@O0@O8@O@ @ODB@OH@OL@OT@OX@O\ @O`@Od@Ol@Ot@Ox@O@O @O@O@O@O @O@O@O@O@O@O@O@O@O@O@O@O@O@O@P@P@P@P @P@P@P@P@P @P$@P(@P,@P0@P4@P8@P<@P@@PD@PH@PL@PP@PT@PX@P\@P`@Pd @Ph@Pl@Pp@Pt@Px@P|@P@P@P@P@P@P@P @P4@P@P@P3@P@P@P@P@P@P@P@P@P@P@P @P@P@Q@Q@Q@Q@Q @Q$@Q(@Q,@Q0@Q4@Q8@Q<@Q@@QD@QH@QL@QP@QT@QX@Q\@Q`@Qd@Qh@Ql@Qp@Qt@Qx@Q|@Q@Q@Q@Q @Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q @Q@Q@Q@Q@Q@R@R@R@R @R@R@R@R@R @R$@R(@R,@R0@R4@R8@R< @R@@RD@RX @Rl @Rp @Rt@Rx@R|@R @R@R@R @R4 @R @R @R@R @R3 @R@R @R @R @R@R @R@R@R@R@R @R@S@S@S @S  @S  @S@S@S @S, @S0 @S4 @S<@S@ @SD@SL @SP @ST @S` @Sd @Sh @Sl@Sx @S| @S @S@S @S@S @S @S@S@S@S@S@S@S@S@S@S @S@S@S@S@S @S@S@S@T @T@T@T@T@T @T(@T,@T0@T8 @T<@T@@TL@TX@T\@Td@Tl @TpB@Tt@TxB@T| @T@T@T@T @TB@T @T@T@T@T @TB@T @T @T@T=@T @T@Tد@T@T @TB@T@T @T@T@U@U @U@U@U$ @U(B@U, @U0@U8 @U<@U@@UD@UH @ULB@UP@UT@UXJ @U\ @U`@Ud@Ul@Up@Ut@Ux@U|J!@U @U@U@U@U@U@U@UJ!@U @U@U@Uİ@U@U@U@UJ!@U @U@U@U@V @V>@V @V@V@VJ%@V @V @V$@V,@V@ @VD@VH@VL@VP@VTJ%@VX @V\@V`@Vh@Vp @Vt @Vx@V|@V@V@V @V @V@V@V @V@V@V@V @V>@V@V@V2@VJ%@V@V@V@W @W @W@W@W0 @WD @WH@WT@WX4 @W\ @W`4 @Wd4 @Wh4 @Wl@Wp3 @Wt @W@W@W3 @W@W@W3 @W@W@W@W @W @W @W@W@W3 @W @W@W @W @W @W@Wԯ@Wܰ @W @W @W@W@W @W@X@X @X  @X @X@X@X, @X8 @X< @X@@XD@XH @XL@XP@XT @XX  @X\ @X`@Xh@X|@X@X@X@X @X@X@X@X @X@X@X@X@XJ%@X @X@X@XȰ@X @X@X@X@X2@XJ%@X @X@X@Y@Y @Y$ @Y( @Y,@Y0@Y8@YP@YT@YX@Y\@Y`@Yd@Yh@Yl@Y@Y @Y @Y @YB@Y@Y @Y @Y@Y@Y@Y @Y @Y @Y @Y@Yܯ@Y@Z@Z @Z @Z@Z@Z@Z0@Z4@Z8@Z<@Z@@ZDJ@ZH@ZL@Z`@Zt@Zx @Z| @Z@Z@Z@Z@Z@Z@Z@Z@Z@ZJ @Z@Z@ZJ@Z@Z̯@Z@Z @Z@Z@Z@[@[@[@[ @[@[@[$@[( @[, @[0 @[4 @[\@[`@[l@[x @[| @[@[@[@[ @[ @[@[@[@[ @[@[@[ @[ @[@[@[4@[4@[@[@[@[@[@[@[3@[@\@\3@\ @\@\ @\@\ @\(@\, @\0@\<@\@@\D@\H@\L @\P @\T @\X@\\@\d@\h @\l@\p@\t @\x @\@\@\@\ @\B@\@\ @\ @\ @\@\@\@\ @\@\@\@\@\@\ @\@\@\@\ @] @]B@]@] @] @] @]$@]0 @]8 @]<@]H@]L@]P@]T@]X@]\@]`@]d@]h@]l@]t@]x@]|@]@]@]@]4 @] @]@]@]@]@]3 @] @]@]@]@]@]@]@]@]  @] @]@]@] @] @]@]@^@^@^@^@^@^@^4@^  @^$@^,@^0@^<@^@3@^D@^H@^L@^P@^T@^X@^\ @^` @^d@^h@^p@^x@^|@^J@^ @^@^@^@^ @^ @^@^@^@^@^@^J@^ @^@^į@^̰@^@^@^J@^ @^@^@^@^ @^ @^@^@_J@_ @_@_ @_@_@_@_ J@_$ @_(@_,@_<@_@ @_D @_H@_L@_PJ@_T @_X@_\@_d@_h @_l @_p@_t@_xJ@_| @_@_@_@_@_@_J@_ @_@_@_@_@_@_J@_ @_@_̯@_ܰ@_ @_@_@_@_@_@`@` @`@` @`@` @`@`$@`(@`,@`4@`8@`< @`@@`D@`L@`P @`T@`\@``@`d@`l@`p@`t @`x@`|@`@` @`@`@`@`@`@`@` @`@`@`@` @`@`@`@`@`@`@` @`@`@`@a @a@a @a@a@a @a$@a( @a,@a0@a8@aH@aL @aP@aT@a\@al@ap @at@ax@a@a@a @a@a@a@a@a @a@a@aȰ@a@a @a@a@a@a@b @b@b@b@b @b@b @b$@b(@b, @b0 @b4@b8@b@@bH @bL@bP@bT@bX@b\ @b` @bd@bh@bp@bx@b|@bJ@b @b @b@b@b@b@b@bJ@b @b@b@b @b @b@b@b@b@b@b@b@b@b @c @c @c@c @c@c@c @c$J@c(@c,@c0@c8@c@@cD@cL@cT @cX @c\ @c` @cd @ch @cl@cp@cx@c @c @c @c @c @c @c@c@c@c @c @c @c @c @c @c@cȯ@cа@c @c @c @c @c@c@c@c @d @d @d @d @d @d@d@d @d8 @d< @d@@dL@dP@dT@d\@dt @dx @d|@d@d@d @d@d@d@d@d@d @d@d@d̰@d @d@d@d@d@e@e@e@e @e @e@e@e(@e0 @e4 @e8@e<@eD@eH@eX@e` @ed@el@ep@ex@e|@e@e@eJ@e@e @e@e@e@e@e@e@eJ@e @e@e@eİ@e@e@e@eJ@e @e@e@e@e@f@f@fJ@f @f@f@f@f(@f,@f0J@f4 @f8@f<@fD@fP @fT @fX @f\ @f` @fd @fh@fl@fp@f|@f@fJ@f @f@f@f@fJ@f @f@f@f@f @f @f @f @f @f @f@fد@f @fJ9@f@fJ8@f@gJ6@g @g@g@g@g @g$ @g( @g,@g0@g8@g<@g@@gD@gH @gL@gP@gT@gXJ@g\@g`@gh@gl@gp@gtJ@gx @g|@g@g@g@g@gJ'@g @g@g@g@g @g@gԯ@g@g@g @g@h@h @h@h @h$@h(@h,@h0@h4@h8@h<@h@@hD@hH@hL@hP@hT @hX @h\ @hd@hh@hl@hp@h @h@h@h @h@h @h@h@h@h @h@h@h@h@h@h@h@h@h@h @h @h@i@i@i$ @i(@i,@i0 @i4 @i8@i<@iL @i\ @i`>@id@ih@il@ip @it4@i4@i@i3@i@i3@i@i @i @i@iȯ@i԰ @i@i@i@i@i@i@j@j@j @j@j@j@j@j$@j(@j,@j0@j4@j<@j@ @jD @jL@jP@jT@j` @jd@jh@jl@jp@jt@j@j@j@j@j@j@j@j@j@j @j@j̯@j԰@j@j@j@j@j@k @k@k@k @k@k @k8@kP@kT@kX@k\@k`@kh @kl @kp@kt@kx @k| @k@k@k@k @k@k@k @k@k@k@k@k@k@k@k @k@kЯ@kذ@k @k@k @k@l@l @l @l$@l(@l,@l0@l4@l8@l<@lD@lH@lL@lP@lT@l\ @l` @ld@lh@ll@lpJ@lt@lx@l @l@l@l@l@l@l@l@l@l@l@l@l@l@l @l @l @l@l@l@m @m@m @m@m@m@mJ@m @m$@m(@m0@m4@m8@m<@m@J1@mD @mH@mL@mT@mX@m\@m`@mdJ1@mh @ml@mp@mx@m@m@m @m@m@m@m@mJ1@m @m@m@m@m@m@mJ2@m @m@mԯ@mܰ@m@m@mJ2@m @m@m@m@n@n@nJ2@n @n@n@n@n @n$@n(J2@n, @n0@n4@n<@n@@nD@nHJ2@nL @nP@nT@n\@nd@nh@nlJ2@np @nt@nx@n@n@n@nJ2@n @n@n@n@n@n@nJ2@n @n@n@nȰ@n@n@nJ2@n @n@n@n@n @n@o@o@o @o@oJ@o @o@o @o(@o0 @o4 @o8@o<@o@>@oD@oH @oL@oT@o`@ot @oxB@o|@o @o@o@o@o @o@o@o @o@o@o̰@o@o@o@p @pB@p @p@p@p0 @pD @pH@pP@pT@pX@p\@px@p|@p @p @p @p@p@p@p @p@p@p4@p4@p@p3@p@p@p3@p@q@q @q@q@q @q< @q@@qL@qP4@qT4@qX@q\3@q`@qd@qh3@qp@qt@qx @q@q@q@q@q @q@q@q@qԯ@q@q@r @r B@r @r@r@r @r4 @r8B@r<@r@ @rD@rL@rP>@rT@rX @r\ @r`@rd@rx@r @r@r@r@r@r @r@r@rȰ@r@r@r@r @rB@r @rB@r@r @s@s@s@s$@s( @s,@s0@s8@sL@sP@sT@sX @s\ @s`@sd@s@s@s@s@s @s @s @sB@s@s@sȰ@s @s @s@s@s@s@s@t @t@t @t$@t0@t4 @t@@tD@tH@tL@tP@tT@tX@t\@t`J @td@th@tlJ@tp@tt@t| @t@t@tJ'@t @t4@t@t3@t@t @t @t@t @t@t4@t@t3@t@t@t @t @t  @u@u@u@u@u@u$ @u, @u0@u8@u< @u@@uH@uL@uP@uX@u\@u`@uh@ul@up@ux @u|@u@u@u @u@u@u @u@u@u@u@u@u@u @u @u@u@u @u@u@u@u@u@v@v@v@v@v @v$@v(@v0@vD @vH @vL@vP@vT@v\@vp @vt @vx@v@v @v @v@v@v @v @v @v@v4@v@v@v @v@v@v3@v>@v@v @w@w@w@w$ @w(@w0@w4@w8@w< @w@ @wD@wH@wP@w`@wdJI@wl@wpJK@wt@wx@w @w @w @wJG@w@w@wJ@w @w4@w@w@w@w3@w@w@w@w@wܯ@w@w@w@w @xJG@x@x@x@x@x @x(@x,@x@@xH@xP@xX@x\ @x` @xd@xp@xt @xx@x@x @x@x@x@x@x@x@x @x@x@xJJ@x@x@x@x@x@x @x@yJK@y@y@y@y@y @y @y$@y4@y<@yD@yL@yP @yT@yX@y\JL@y`@yd@yl@y @y@y@y @y@y@y @y @y @y@y@yȰ@y @y @y @y @z@z @z @z$@z(@z,@z0 @z4@zD@zH@zL@zP @zT @zd@zh@zl @zp@zt4 @zx@z|3 @z@z@z  @z@z@z @z@z@z@z@z @z@z@z @z@z @z@z @z@z@z@z  @{@{@{@{$@{( @{0 @{4 @{8@{<@{L @{\@{`@{d@{h@{l @{p@{@{@{@{@{ @{ @{  @{@{@{@{@{ @{ @{ @{@{د@{@{@{ @|@|@|@| J0@| @|@|@| @|0 @|4B@|8@|< @|@ @|D@|H@|P@|T@|X @|\@|`@|h @|x@||@|@|@| @|@|@| @|@| @| @|@|@|@|  @|  @| @|@|د@| @|@|@}@}@}@} @}@} @}@}(@},@}0@}4@}8 @}<  @}@@}D@}T @}d@}h@}l@}p@}t@}x@}|@} @}@}@}@}@}@}  @}@}@}@}@}@} @} @} @}@}@}@}@~@~@~ @~ @~@~@~@~ @~0@~4@~8 @~@ @~D@~H@~L@~T @~d@~h@~l@~p@~t @~x@~@~ @~@~ @~ @~@~@~@~  @~  @~ @~@~į@~԰@~@~@~@@ @@@ @@ @( @8 @<@P@T@X@\@`@d @h @l@p@ @ @ @@@J@@ @@@ @ @ @ @@̯@ܰ@ @ @ @@@@@ @$ @(@,@0@8@H@L@\@l@t @| @@@@@@@@@@@@@@а@@@@ @@@@@@@ @ @ @@@$@, @0 @4@8@@ @H @L@P@T@X@\@` @d@l@p @t @x@|@@@@@ @ @@ @ @@̯@@@ @@@ @ @$@(@<@@@D @H@P@d@h@|@ @ @@@@@ @@@@@@ @@@ @$@,@<@H@T @X@\@`@d@l@|@@ @@@@@@ @@@@@ԯ@ܰ@@@ @@@@@@$@4@@@L @P@T@h@l@p@x@@@ @@@@@į@̰@@@ @@@@@@ @ B@$ @(@,@4@@J@D @H@L@T@`@dJ@h @l@p@x@|B@@@@@@J*@@ @@@@ @ @ @ @@ԯ@@@J)@ @@@@@ J)@ @@@ @(@,@0J*@4@8 @<@@@H@P @T @X @\ @l@p@|@@J+@@@@@J+@@@@@@J-@@ @@ԯ@ܰ@ @ @ @ @@@@@ @$J-@(@, @0@4@<@D @H @L @P @d@h@t@@J,@ @@@@@J,@ @@@ @ @@@@@@@ @ @$@(@,@0 @4@8@@ @L@T@\ @`@l@p@@@@@@@@ @@@@ @ @ @@@ @ @ @ @ @ @@J)@ @$  @(  @,  @0@4@H @\ @`@l @p@t@x @| @ @ @@@@ @ @4 @ @ @ @4 @ @@4@4@@3@@3@4@  @3@ @@3 @ 4 @$ @( @0 @43 @8 @@@D3 @H4 @L @P @X @\3 @` @h@l @p@t@x @ @@@@ @@@Ȱ@ @@@@@ @@@@, @0@D@H@L @P@T@d @t@x@|@ @ @J M@ @@J @ @@@ @@ @ @@@԰@ @@@@ @@ @@@ @(@@ @D@H>@L @P@d @h @l@ @4 @ @@@3 @4 @ @4 @ @@ @4 @ @4 @@4@@@@3@@3 @@3 @@3 @  @ @<3 @@@H @L @P@T@`@x@| @@@@@@@@@@@@į@ܰ@ @ @@@@@@ @, @0@@@D@H @L @P@T@d@t@x@| @@@@@@@@@@@@@@@@@@ԯ@ @ @ @ @4@ @3@@>@@ @$ @( @,@0@8@@@D@\@d@h@@@@@@J)@ @@@@@ @ @@ܯ@@@J)@ @@@@@@ @ @ @$@,@4 @8@@ @D@H@P@\ @`4@d@h3@l@t @x@|@@ @@ @@@@ @4@@3@@ @@د@@ @ @@@@ @@ @@@@$ @(@< @@@D@L@\ @`@l@p@t@@@@@@@@ @@@@ @ @@@ @ @@@@ @ @$@8@H@L @P@T@X@`@p @t @x @|@@@@@@@@ @@@԰@@@@@ @@@@ @ @@ @$@(@,@0@<@@@L @P@T@h@x @| @ @@@ @ @ @@@@ @ @@@@@ @ @ @@@ @ @$ @( @,@8@< @@ @L @P@T@d@x @| @@@@@ @ @ @@@ @ @ @ @@ @@@@@ @ @ @ @@ @ @, @0 @4 @8@D @H@L@P@T@X @\ @d @h @l@p@ @ @ @ @@@@@ @ @ @ @@į@԰ @ @@@@@@ @ @  @@@,@8@< @@ @D@H@T@X@d @h@l@ @@@@ @ @ @ @ @  @  @  @@@Ȱ@@@@@@@@ @ @ @ @  @@ @  @04 @4@8@<@@@D3 @H@P@T@X @\ @`  @d  @h@l@x @@@@ @@ @@@ @@@@@@@@@@ @@@J@@@@ @ @(@0@4@8 @<@@@H @L@`@d @h@t @x @@@@@@@@@@@@@@@ @ @ @ @ @ @4@@@ @ @  @$@(@,@0@43@8@<@@@D @H @L  @P  @T@X@d @p@x@ @@ @@ @ @@@@@@  @  @ @@د@ @@@ @@ @@@$ @0@8@@@D@H@L @P@T @X@\@l@x@|@@@@ @@@ @@ @@ @ @ @ @ @@ @ @4 @@@@ @3 @@ @ @  @$ @(@,@8 @D@H @L@P @T@d @h @l @p@| @ @ @@@@@ @  @  @ @@@Ȱ @@ @@ @@ @ @ @@  @ @  @$@(@,@0@4 @8  @@  @D @H@L@X@d@h@l@p@t@x @|@@ @@ @@ @@ @ @ @@ @ @4 @@@@@3 @@ @  @ @@@$ @0@8@@ @D@H @L@P@` @l @p @t@x @|@ @@ @@ @@@ @@@Ȱ @@@@@@@@ @@ @ @@@ @$ @( @,  @0@4@@@P@T@X@\@` @d @h@l@p@x@ @ @ @@@@@@@@@ @@̯@ @@@@@@@@ @@ @  @0@4@8@< @@ @D  @H@L@X @h@l@p@t @x@| @@@@@@@ @ @ @@@Ȱ@@@@@ @ @@@@@ @ @ @@ @$@(@4@8@<@@@H @L@P@d @| @@@J @@ @@ @@ @@ @@ @@ @@ @@ @@@  @ @@@ @( @, @D@H @L @\@`@d@h@l@p@t @x  @|@@@ @ @4 @ @@ @ @@ @@@@@3 @@ @ @@ @ @  @  @  @@@( @8@<@@@D@H@L@P@T@\ @`@d@h@l@p@t@x@|@@@@ @@@@@@ @@@@@@@@@@@@@ @@@@ @$@(@,@0@4@@@D@H@L@`@p @t @x@|@@@@@@@İ@@@@=@ @@@J @@@@(@4@@@D@H @L@P@TJ @X@\@d@|@ @@@@@ @@@@@ @@@@@ @@ @J @@@$@<@@ @D@H@PJ @T@X@`@x@| @@@@@@ @@@ @@ @4 @4 @@3 @4 @@@@@@3 @4 @ @3 @ @ @ @ @ 3 @$4 @4@8@<@@@D@H3 @L4 @P @T3 @X@d@h@l  @p  @t  @x@|@ @@@@@@ @@ @4 @@@@@@@3 @4 @@3 @@@ @@  @@@, @<@@@D@H@L@T @X@d @h4 @x@|@@@@@3 @4 @@3 @@@@  @@@а @@@@@@J @@ @@ @ @$@(4 @0@4@8@<@@3 @D@H@L @P  @X @\@`@l @|@@@@@J @@ @@ @ @@4 @@@@@3 @@@ @  @ @@@ @@@ @$ @(@4 @84 @L4 @P@T3 @X@\ @`@d @l@p@|3 @@@@@@ @ @ @@į@̰@@@@ @@@ @$@(=@,@0 @<@@@H@`@h@p@t @|@@@@@@ @@@Ȱ@@@ @@@@@@ @$@(@0@H@L@P @X@\@d@|@@ @@@@@@@@@ @ @ @@ @J @@ @J @@ @ @4@@@ @  @@@@@ 3@$@(@,@0@4@8@<  @@ @D  @H@L@X@h@l@p @t@x@ @ @@ @J @@ @J @@ @@@@@ @ @ @@ @ @@@@@@@@ @@@ @$@(@,J @4@8@@  @@ԯ@ @ @@@@@ @$ @( @,@<@@@D @H @\@`@d@h@l @p@t@ @@@@@@ @@ @@ @ @ @@ @ @ @@@@ @@@$ @4@8@<@@@D@LJ@P @T@\4@` @d@x@|@@3@@@ @  @@@@@@@@@J@@ܯ@@@@ @$ @( @, @0 @4J@8 @< @@  @D@H@X@h@l@p @t@|@@@@@@@@@ @@ԯ@ܰ @ @ @ @@J@ @ @@ @ @0@4@8@< @@ @D @H@L@\@p @t @x@|@@@ @ @ @@@@@ @ @@̯@԰@@@@ @@@@@@ @@( @, @0@4@<@P@T@XJ@\ @`@p@t@x@| @ @@@ @@@@@@ @@4@ @@@ @ @ @ @@3@@@ @$@(@8@L@P@T@X @\@d @h@@@@J@@@J@@@@԰@@@ @@@@@J@@ @4 @D@H@L@P @T@`@d@l@p@@@@@@@@ @ @@į@̰ @@@@ @@@@@ @@@@(@8@< @@ @D@H@P@d@h@l @p@x@€ @„@¨@°@@@@J @@ @@@ @@@@@ @ @@ 4@$ @(@8@<@@@D3@H@L@P @T@X@h @| @À @Ä@È@ÌJ@ÐJ @Ô @Ø @Ü@à @ä @è @ì@ð@ô @ø@ü4 @@3 @ @ @@@  @ @  @@@ @@ @@B@@@$ @4@8@< @@@D@H@L@P@T@X@\J@`@d@hJ@lJ@p@t@| @Č@Đ @Ĕ@Ġ@Ĥ @Ĩ @Ĭ@İ@ @ @ @ @ @ @  @  @  @@@@ @ @ @ @$ @( @,J@0@4@8J@< @@  @D  @H  @L  @P@T@d @t@x@| @ŀ@ń@ňJ @Ō@Ő@ŔJ @Ř@Ŝ@Š@ŤJ @Ũ @Ŭ@ŰJ @Ŵ @Ÿ@żJ@ @ @ @  @ @@د@ @ @ @@ @@ @ @$@(@,@0@4@8@<@@ @D @H @L@P@T@h@x@|@ƀ@Ƅ@ƈ@Ƙ@Ƭ @ư@ƴ@Ƹ @Ƽ @@@@@ @ @@@ @@@@ @B@ @ @ @@@ @$@(@0@D@H@L @P@T@\@p@t@xJ @|@ǀ@DŽJ @Lj @nj@ǐ@ǘ@Ǭ@ǰ@ǴJ @Ǹ@Ǽ@J @ @@̯@԰@@@J @@@J @ @@@@$@( @,@0@8@L@P@h@|@Ȁ@Ș@Ȩ@Ȭ@ȰJ @ȴ@ȸ@ȼJ @ @@ȯ@а@@ @@@@@@ @0@4@8J @<@@@DJ @H @L@P@X@h@l@Ʉ@ɔ@ɘ@ɜJ @ɠ@ɤ@ɨJ @ɬ @ɰ@ɴ@ɼ@@@J @@@J @ @@@@@@J @ @$@(J @, @0@4@<@T@X@\J @`@d@hJ @l @p@t@|@ʔ@ʘ@ʜJ @ʠ@ʤ@ʨJ @ʬ @ʰ@ʴ@ʼ@@ @@@@@ @@ @@,@0 @4@8@@@P@T @X@\@d@t@x @|@ˀ@ˈ@˘@˜ @ˠ@ˤ@ˬ@˼@ @@ȯ@а@@ @@@@@ @ @@@(@, @0@4@<@L@P @T@X@`@p@t @x@|@̄@̔@̘ @̜@̠@̨@̸@̼ @@į@̰@@ @@@@@ @@ @@$@( @,@0@8@H@L @P@T@\@l@p @t@x@̀@͐@͔ @͘@͜@ͤ@ʹ@͸ @ͼ@@Ȱ@ @ @@@@ @ @@$@4@L @P @T@\@l@΄ @Έ @Ό@Δ@Τ@δ @θ@ @ @ @@د@@ @@@ @@ @(@,J @0@4@8J@< @@@D@L@` @d @h@l@t@ψ@ϐ @Ϙ@Ϝ@Ϡ@Ϩ@ϼ @ @@@J@@ԯ@ܰ@@@ @@ @J@@@ @4 @8@<@D@X@\ @`@d@l@Ѐ@Є@Ј@Ќ@АJ@Д@И@Ь@@ @@J@@ԯ@ܰ@@@@ @@@J@ @J@ @@@0@D@H@L@P@TJ@X@\@p@ф @шB@ь @ѐ@є@ќ@Ѥ@Ѩ@Ѱ @@ @B@@ @@@ @ @@@@$@,@4 @8 @< @@@D@H@X @h@l @tB@x @|4 @Ҁ @҄@Ҙ@Ҝ3 @Ҥ@Ҭ@Ұ @Ҵ@@ @@ @@@ @@@@ @@ @ @,@0@4@< @L@P @X @d>@h@l @p @x@| @Ӏ@ӌ @Ӑ@Ӕ @Ә4 @Ӝ4 @Ӡ @Ӥ@Ӱ @Ӵ@Ӹ@Ӽ3 @4 @ @@@@>@3 @@@3 @@ @@ @ @$ @(@4 @8@H@L@P@T@X @\@`@h @x@|@Ԅ@Ԍ @Ԑ@Ԡ@Ԥ@Ԭ>@԰ @Դ@@@@@@ @@@ @@@@@@J@ @@ @$ @( @0 @8 @<@@@P @`@d@h@l@p@x@|J @Հ @Մ@Ք@՘@՜ @ՠ @դ @լ  @հ@մ@İ @@@@@ @@@@@>@ @ @ @@$@(@,@4@< @@@T@\@`@d@h@l @p @x @| @ր  @ք@ֈ@֜ @֬@ְ @ָ4@ּ4 @ @@ @@@3@4@ @@@3@@@3 @ @4@8@@@H @X @\ @l @p@t@x@|@׀@ׄ@׈  @׌  @א @ה@ט@נ@װ@״ @׸4 @׼ @ @@ @3 @ @@@ @4 @@ @ @3 @ @@ @ @@ @$ @8@<@@@D@H@L@\@`@d@h@l@p@t@x@|@،@ؐ @ؔ@ؘ@؜ @ؠ @ش@ظ@ؼ@@@  @  @@ԯ@ذ@@ @4 @ @ @@ @3 @ @@@ @ 4 @$@( @, @03 @4 @@@D@H @L@X@\ @p@t@x@|@ـ@ل@و@ٌ@ِ@ٔ@٤@٨ @٬@ٰ@ٴ @ٸ@@@@ @ @@@@@@  @  @@ @@ @$ @(4 @, @04 @4 @8 @< @@3 @D @H@L @P3 @T @`@d@h @l4@p@t4@x@|4@ڀ@ڄ @ڈ @ڌ3@ڐ @ڔ@ژ @ڜ3@ڠ @ڬ@ڰ@ڴ3@ڸ4@ڼ@4@@ @ @3@ @@ @3@ @@@ @@@  @ @$@(@,@0@4@8@<@@@D@T@X @\@`@d @h@x @|@ۀ@ۄ@ۈ @ی@ې@۔ @ۘ@ۜ @۬@۰ @۴@۸@ۼ @ @@@@@@  @ @@@ @@ @@$@(@,@0@4@8 @< @@ @D @H@L@\ @l@p@tJ @x@| @܀ @܄ @܈ @܌@ܐ@ܠ @ܰ @ܴ@ܸ@J@ @@@ @ @@@ @@ @ B@@@J @@ @$@(@,@0 @4@8@<@@ @D@H@L4@P4 @T @X@d@h3@l@t@x3 @|4 @݀@݄@݌3 @ݐ@ݔ@ݘ@ݜ @ݠ @ݤ @ݬ@ݰ@İ@ @@@@@@@@ @@ @(@, @4@D@H4@L@P@T@X3@\@d @h @p @t@x@ވ@ޘ@ޜ@ޠ @ި@ެ@ްJ@޴@޸@@@@ @@@J@@@@@ @ @@@ J@$@(J@,@0@8@H@L@P @X@\@`J@d@hJ@l@p@x@߈@ߌ@ߐ@ߘ @ߠ@ߤ @ߨ@߬@߰@ߴ@߸@߼@@į@ذ@ @4@4 @ @@@3@ 4@ @4 @ @ @03 @4@H@L3@P @h@l3 @p4 @t@x4@| @ @3@@@3 @4 @@4@ @4 @ @4 @ @ @@3 @@3 @@@3@@ @3 @@@  @( @,@0@8@P@T@X@\@` @h@t@x@@@ᜯ@ᬰ@@@@@ @@@@@@,@0 @4@8@@@\@`@d@h @l@@ @@┯@⨰@@ @@Я@ذ@@@@ @@ @$ @(@,@< @L @P @T@X@\J@`@d@l @|@J@@@J@@@J@ @@@@@@@ @ @ @ @  @@@@ @B@@ @J@ @@@ @$@8@H@L @P@T@XJ@\@`@h @x@|@@@@J @ @@@@ @ @ @@@а @@J@ @@@ @ @ @@@@ @$@,@0@4@< @@ @D@H@T@\ @`@d@l@x@|@匰@ @@ @@尯@İ@ @@ܯ@@@@@B@ @ @ @$@(@,@0 @4 @8@<@H@\@`@d@h @l@p@t @x@@@@@@@@@ @ @@ԯ@@ @@@ @@ @ @4@8@<@@@D @H@T @X@l@p@t@x@| @ @@爯@眰 @@@ @@ @@@ @ @@@@@J@B@@@ @@@@ @$ @(4 @8@<@@@D @H@\@`@d3 @h@l@p @t @|  @@脯@蔰 @@@@@ @@ @@@@@@ @ @@@ @$ @(@@@D@X@\@` @d @h@l@|@@@ @@ @B@@鬯@鴰@@@ @@ @B@@@@@ @ @@ @ B@B@@@ @0@4 @8 @<@@ @D@H@L @P @T@X@\@`@dJ@hB@l@p@t@@ @@ @B@@꠯@ꨰ@@ @@ @B@@ԯ@ܰ@@ @ @@ @B@B@@ @@ @$ @(@0@4@<@@@D@H@L@P@X@l@p @t@x @|B@B@@눯@됰@ @@묯@봰 @@@@@ @@ @@@@@@ @ @@@$ @4@8@@@@@ @@ @ @@ @$@(@,@0@4@8 @< @@@D@H @X@\@`@d @h @l @p@t @x @|  @@@ @@@@ @ @ @@ @ @  @@Я@@@@@ @@@@ @$@, @0@4@D@T@X @\@` @d@h@l@t@ @@@@@ @@@ @@@@ @ @ @ @@ @  @  @  @@@@ @$@4 @L @P@\ @`@p@t@x@| @@@@ @ @ @ @@@Ȱ@ @ @ @@@@ @ @ @ @@@,@4 @8 @<@@@H@P @T @XB@\@` @d @t@x@ @ @4@4@@3@4@ @4 @ @4 @ @4 @ @@ @@@3 @@3 @@3 @@3@@@3@@ @@@$ @4@8@<@@ @D @H @L @P@T @X  @\  @`  @d@h@x@@@@ @@@@ @@@@ @ @ @ @@ @  @  @  @@@@@@ @( @,@0@4@<@L@P@X @\@`@p@@@@ @ @ @ @ @@ @  @  @  @  @@@̰@ @ @ @ @@@@ @ @ @ @ @$@(@8 @H @L@T @X@h@l@p@t @x@@@@  @  @  @ @@@@@ @@ @@@ԯ@ܰ @@@@@ @@@  @ @@ @0@4@8@< @@ @D @H @L @P@T @X  @\  @`  @d  @h@l@|@@ @ @ @ @ @@@@İ @ @@@@@@ @ @@@@$@(@, @0 @4 @8 @< @@ @D @H@L  @P  @T  @X  @\ @` @d@h@x @ @ @ @ @ @@@ @ @ @ @ @ @ @@ܯ@ @ @@ @ @@ @$@(@, @0@@@D@H@L@P  @T  @X  @\ @`@d@h@x@@@@@@@@ @@@@ @@ԯ@ܰ@@@ @@@@@ @4@ @$4@(@,4@0 @44 @8 @<@@ @H4 @L @P4 @T @X4 @\ @`@d@h3 @p@x3 @|@3 @@3 @4 @ @4 @ @4 @ @@@3 @@3 @@3 @@3@4@4 @ @4 @ @@ @3 @ @@ @3@4@  @$ @(@03@4@@@D3 @H@T3@X@\4@t @x4 @|@3 @@@3@4@ @4 @@ @>@3 @@@3@@3@4@@4@@3@@@4@ @3@@ 3@@4@D@H4@L@P4@T@X3@`@h3@l@t3@|@ @4@@4@ @4 @ @@@3 @@3@@3@@ @ @@د@ܰ @@@@@ @@ @@@ @ @$@(@0 @@@H@P@T@X @\@` @d@l@p @t @x@|@ @@@@@ @@ @@@ @ @@Я@ذ@ @@@@@@ @@@4@  @$ @(@8 @< @@ @P@T @X @\ @`4 @d4 @h@l3 @p4 @t @x4 @|@4@@4@@@@ @@3@@3@@3 @@3 @ @@3 @ @@3@@@@ @@@ @ @ @,@0@4@8@@@D@H@L4@T @X @\@d @h @l @|@ @ @ @4 @4 @@3 @4 @ @4 @@4@@4@@@@ @@3@@3@@3 @@3 @ @@ 3 @  @ @ 3@ @ @ @ $ @ (@ ,@ 8 @ H @ LB@ P@ T @ X@ `@ d@ h@ l4@ t @ x @ |@ @ 3@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @ @ @ @ @ 0@ 4@ D@ L @ P@ X @ \@ `@ t@ | @ @ @ @ @ @ @ @ @ @ @ @ @ ԯ@ @ @ @ @  @ @ $4@ (@ ,@ D@ H3@ L@ P@ T @ X@ \@ d@ | @ B@ @ @ @ @ @ @ Я@ ذ@ @ @ @ @ @ 8@ < @ @@ D@ P@ h @ l@ p@ x@ @ @ @ @ @ @ @ @ @ İ@ @ @ @ @ @ @ @  @ 4@ 4@ 83@ <@ @@ D@ H@ P@ d @ h@ t@ x @ |@ @ @ @ @ @ @ @ @ @ @ @ @ @ @@ @@ @$ @( @@@D@L @`@d@hJ@l@p@tJ@x@|@@J@ @@@ @@@@@ @ @@@@@@J@ @@@ @ @ @@@@ @ @@ @@,@4@8@<@@ @D@H@T@\ @`@d@h @l@@@@@ @@@@@@@@ @@@@@ @@ @ @$@(4@,@0@@@D @H @L@\ @`@d3@h@l@p @t@x@ @ @@>@ @@@@@@@@ @ @@@@@ @>@@@ @ @@ @ @@@( @,@0@8@L@P@TJ@\@`@dJ@l@p@tJ @x@|@@J@@@@J@ @@@@ @@ȯ@а@@@@@@J@@@ @@@$@( @, @0@4@D@T @X@l@p@t @x@|@@ @ @@@@@@@@̯@ܰ @@@J@@@J@ @@ @ @$@( @,4@4 @8@<3@@@D@H@L@P  @T @X  @\ @`@d@l@x@|@@@@J@ @@@@@@J @@@J@@ȯ@԰ @ @ @ @@@@@@@@ @$ @( @,@0@8@@ @D@L@P@T @X @x@|@@ @@@@ @@@@ @@@J@@@J@@@@@@(@@ @D @H@l@x@ @@@@ @@@İ@ @@@@@ @@ @$@(@4 @D @H4@T@X@\@`@h@t@x@@@@@@@@@@@@@@4@@3@@@@3@ @ @ @ @$@,@D@HJ)@L @P@`@d@h@l @p@t@@@@@@@@ @@@ @@@@@@ @$@(@,@D@X@`@h@l@p@@@@@@@԰@@@ @ @ @ @ @@@(@,@4@84@@ @D@L @P @T@d@h3@l@p@t @x @|@@ @ @ @ @@@@@@@4@ @@ @ @@@3@@@ @ @@@ @0 @44@D@H@P3@T@X@\@`@h@x @|B@@@@ @4@@@3@@@@̯@ܰ@ @B@@@@ @ @@@@$ @( @,@0@4@< @@B@D@H@P @t @x4@|4@@4@ @ @ @@3@4@ @3@@ @3@4@ @ @ @@@3@@@@@3@4@@ @ @@ @3@@@ @$@(  @, @0@4@<@D @H@P@T@X@` @d@h@@@@ @ @ @@ @@@@@@ @ @@@ @ @ @@>@ @@$@(@,@0@8 @< @@@D@T @h@l@t@x @| @@@@ @ @ @@@@ @ @ @>@ @@̯@ܰ@ @ @ @>@ @@@@( @,B@0@4 @8@D @H @X@\@d@t@x@@@@@@@@@@ԯ@ @ @@@@ @@8@<@@ @D@H@\@x @| @ @B@@ @@@@@@@ @ @@ܯ@@ @@@ @ @ @ @ $ @ ( @ ,@ 0@ @ @ P @ T @ X @ \@ `@ lJ@ p @ tB @ x @ | @ @ @ @ @ @ @ @  @  @  @ @ @ @ @ @ @! @!(@!,@!0@!4@!8@!T @!p@!x@!@! @!@!@!@! @!B@! @!B@! @!@!@!@!@!@!@! @! @" @"B@" @" @"@" @"@"@"(@"< @"@ @"D@"H@"L@"P@"T@"X@"\ @"`@"d@"h@"lJ@"p @"t@"x@"@"@"@"@"@"@" @" @"@"@"@"@"@"@#@#@#@#@# @# @# @#$@#(@#4@#H @#L@#`@#d@#h @#l @#p@#t@#@#@# @#@#@#@#@# @#@#@#@$@$@$ @$ @$@$$@$8@$<@$@@$D@$H@$L @$P@$T @$X@$\@$p@$@$@$ @$@$ @$@$ @$ @$@$@$İ@$ @$ @$ @$@$@$ @%@% @%@%@%@%@% @%$@%(@%,@%0@%4@%8 @%<@%@@%D@%H@%L@%P@%T@%X@%\@%`@%d@%h@%l@%p@%t@%x@%|@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%Я@%ܰ@%@%@%J'@% @%@%@&@& @& @& @&@&@& @&$ @&(4@&,@&04@&4@&8@&<@&@4@&D @&H4 @&L @&P4 @&T @&X4 @&\ @&`4 @&d @&h@&l@&p3 @&x @&3 @& @& @&3 @& @& @&3 @&4 @&4 @& @& @& @&3 @&@&@&3 @&4 @& @& @& @&3 @& @&4 @& @&3 @' @'  @'3@' @'3@' @'(@',@'43@'8@'D@'L @'P @'T@'X@'\ @'l@'p@'t@'x@'|@'@'@'@'@'@'@'@'@' @' @' @' @' @' @'@'@' @'@'@' @' @'@'@'@'4@'4@' @'@'@(3@(@( @(  @(3@(@( @(  @($ @(( @(,@(0@(8@(@ @(D @(H@(X@(\@(` @(d @(h @(l@(p@(@(@(@( @(@(@( @(@(@(@(@(@(@( @( @(@(@(J@(@( @(@(@(@(@) @)@) @)$@)(@),@)0@)4@)8@)H@)\ @)`@)t@)x@)|@)@)@) @) @) @)@)@)@)@)@) @) @)@)@)̯@)԰ @)@) @)@)@)@)@*@*@*@* @*@* @*,@*0@*4J@*8@*<@*@J @*D @*H @*\@*` @*d @*h@*l @*p @*@* @*@*@* @*  @*  @*  @*@*@*@*@* @* @*@*@*ܯ@* @*@*@*@+@+@+ @+ @+@+@+@+@+ J@+$@+( @+,@+0 @+4@+8@+H @+X @+\@+`@+d@+h@+l@+p@+t @+x@+|@+@+ @+@+@+@+@+@+ @+ @+ @+@+̯@+ܰ@+ @+@+@+ @, @,@,@,$ @,4@,8@,<@,@@,D @,HB @,L @,P @,T @,X=@,\ @,` @,d @,h@,l@,p @,t@,@,@, @,@,@,@,  @,  @,  @, @,@,@,İ@,@, @, @,@,@,@,@-@-@-@- @-J @-@- @-B @- @-$ @-( @-,=@-0 @-4 @-8 @-<@-@@-D @-H @-X@-\@-` @-d @-h@-l@-p@- @- @-@-@-@-@-@-@-@-@- @-@-@-@-  @-  @-  @-  @- @-@-ܯ@- @. @. @. @. @.@.@.,@.0@.4@.8 @.@.  @.@.Я@.԰ @.@.@.@. @.B @. @/ @/ @/ @/  @/ @/ @/ @/ @/  @/$ @/( @/, @/0 @/4 @/8 @/< @/@J @/D@/H @/L@/P@/T  @/X@/\@/p @/ @/ @/ @/@/@/@/@/@/@/@/ @/@/ @/ @/@/Я@/ذ @/@/@/@/ @/ @/@0@0 @0@0 @0 @0 @0 @0 @0 @0$ @0( @0,@08 @0<@0@4 @0D @0H@0X@0\@0`@0d3 @0h@0l@0p @0t  @0x@0|@0@0@0@0@0@0 @0 @0@0@0@0@0@0Ȱ@0 @0 @0@0@0 @0 @0@1 @1@1 @1@1 @1 @1 @1 @1$@1,@14 @18 @1< @1@@1D@1H @1L@1X @1\ @1`4 @1d @1h @1p@1t @1x @1|4 @14 @1@1@1@1 @1 @1 @1@1 @1 @1@1@1@1 @1 @1 @1@2@2 @2@2 3 @2 @2@23 @2@2$3 @2(@2,@20 @24 @28 @2<@2@@2P @2X@2\@2`@2d @2h@2p @2t@2x@2| @2@2@2@2 @2 @2@2@2@2@2@2 @2@2@2Я@2ذ @2@2@2@2@3@3@3 @3 @3 @3 @3 @3@3 @3$ @3(@34@38@3P@3T@3X @3\@3` @3d@3h@3@3@3 @3@3@3@3@3@3@3J@3 @3B@3@3@3@4J@4@4@4(@4H@4L@4PJ@4T@4X@4\J@4`@4d@4hJ@4l@4p@4 @4@4@4@4@4@4@4 @4 @4@44 @4@4@4@43 @4@5@5 @5  @5 @5@5, @5H@5L@5P@5T@5X@5\@5`@5d@5h@5l @5p @5t@5x@5|J@5@5@5@5@5@5 @5 @5@5Я@5ذ@5@5 @5 @6 @6@6@6 @6@60 @64 @68 @6<@6@@6H@6d @6h @6l @6p@6t@6 @6 @6 @6@6@6@6 @6B@6 @6@6@6 @6@6@6 @6 @6@6@7@7$ @7( @7,B@70@74 @78@7<@7D @7T @7X@7d@7h@7x @7|@7@7@7 @7  @7 @7@7@7 @7 @7@7@7@7@7@7@7 @7 @7 @7@8@8@8 @8$ @8( @8,@80@84@8< @8T@8X@8\J@8` @8d@8h@8l @8p @8t@8 @8 @8@8@8 @8@8@8 @8 @8 @8  @8  @8@8ȯ@8ذ@8@8@8@8 @9 @9@9 @9@9,@90@94@98 @9@ @9D@9H@9P @9h@9l@9p@9t @9x @9|@9@9@9@9@9 @9@9@9@9@9 @9@9@9@9@9@9@9@9@9 @:@: @:@:@: @: @:$@:(@:,@:0@:4@:8@:<@:D@:\ @:`B@:d@:h@:l@:p@: @:@:@:@:@: @: @:@:@:İ@:@: @:@:@:@: @; @;@;J@; @;@; @;$@;( @;,@;8 @;<@;T@;X@;\@;` @;d @;h @;l@;p@;@;@; @;@;@;@;@;@;@; @;@;@;@; @<@<@<@<@<@<$@<( @<,@<4 @<8@@>@>(@>, @>0@>8@>L@>` @>d@>x@>|@>@>@>@> @>@>@>Ȱ@> @>@>@>@?@? @?@? @?@?@?@?,@?@@?D @?H@?L@?\@?`@?d@?l @?p @?x@?|@?@? @?@?@?@?@?@?@?@?@? @?@?@@@@ @@@@4 @@8@@<@@D@@X@@\@@`@@d@@h@@p@@t@@@@@@@@@@ @@@@@@@@@@ @@ @@@@ԯ@@@@@@ @A@A@A@A @A@A @A@A @A$@A(@A, @A0 @A4@A8@A@@AP@AX @A`@Ad@Ah@Al@Ap@Ax@A @A@A@A@A@A@A@A@A@A@A@A@A԰@A@A@AJ@A@A@B @B$ @B(B@B,@B0 @B4 @B8@B<@B@@BD @BH@BL@BT@Bl @BpB@Bt@Bx @B| @B@B@B@B @B@B@B@B @B@B@B@B@Bȯ@Bа@B@B@B@B@B@B@B@C@C@C@C @C@C@C @C(@C, @C0@C4 @C8@C< @C@@CD@CL @CP @CT @CX@C\@C` @Cd@Ct@Cx@C|@C4@C@C4@C@C@C@C@C @C @C@C@C@C@C@C@C@C@C@C@C@C@C@C@D@D@D@D0@D4@D8@D<@DT4@DX4@D\@D`3@Dd4@Dh@Dl3@Dp@Dt@Dx3@D|4@D>@D3@D@D @D3@D@D @D3@D @D @D  @D@D@D@D@D @D @D@D @D @D @D @D @D @D4 @D@D3 @E@E @E @E 4@E@E3@E@E@E @E$@E04@E44@E84@E<@E@@EL@EP3@ET @EX @E\3@E`4@Ed@Eh3@El@Ep@Et3@Ex4@E|@E3@E@E @E  @E@E@E @E @E @E@E>@E4@E@E3@E@E @E4 @E @E@E@E3 @F@F@F @F  @F@F@F @F4 @F8 @F<@F@>@FH4@FL@FP3@FT@FX @F\4 @Fp @Ft@Fx@F|3 @F@F@F @F  @F@F@F@F@F@F@F@F@F@F@F@F@F @F@Fد@F@F @F @F @F@G@G@G@G @G@G @G@G@G$ @G4@G8@G<@G@@GD@GH@GL@GP@GT@GX@G\@G`@Gd @Gh@Gl@Gt@G @G @G @G@G@G@G@G@G@G @G@G@G@G@G̯@Gܰ @G @G@H@H@H @H @H@H@H$ @H4@H8@H<@H@ @HD@HP @HT@H\@H`@Hd@Hh@Hl@Hp@Ht@Hx4@H@H @H @H @H@H@H3@H@H@H@H@H @H  @H@Hԯ@H @H@H@H@H @I@I@I  @I@I @I  @I(@I,@I0 @I4@IP@IT @IX@I\@I`@Id @Ih @Il@Ip@Ix@I @I @I @I @I @I@I@I@I @I @I @I @I@I@J @J @J @J  @J@J @J( @J,@J0@JH@JL @JP @JT @JX @J\@J`@Jt@Jx @J| @J @J@J@J @J @J  @J  @J  @J  @J@J@J@J @JB@J@J @J@J @J@J@K@K@K @K @K$@K(@K,@K4@K8@K<@KD @KT@K`@Kl@Kp@Kt @Kx@K|>@K4 @K@K3 @K@K @K@K@K@K@K@K @K @K  @K@Kȯ@K԰ @K@K@K@K@K@K @K@L @L@L@L@L @L @L$  @L(@L,@L< @LL @LP@L\@L`@Lt@Lx@L|@L@L@L @L @L @L@L@L @L@L@L@L @L@L@L @L@L @L @L@L@L @L@M@M @M @M$@M(@M, @M0 @M4@M8@M@@MP @MT @MX @M\ @M` @Mx@M|@M @M @M @M @M @M@M @M@M@M @M@M @M@M@M @M @M  @M  @N  @N@N@N @N, @N0 @N4 @N8B@N< @N@B@ND@NH @NL@NP@N`@Np@Nt@N@N @N@N@N @N4 @N @N @N @N4 @N @N @N@N@N @N @N@N4@O @O @O@O @O @O @O$@O(3@O,@O0@O43 @O8@O<>@O@4 @OD@OH3 @OL@OT3 @OX@O\>@O`4 @Od@Oh3 @Ol@Ot @Ox @O|  @O  @O@O@O@O@O@O @O@O@O@O@O @O @O@O@O@O@P@P @P @P@P @P @P @P$ @P( @P, @P0@P4 @P8@P< @P@@PD@PH@PL@P\@P`@Pd@Ph @Pl@Pp @Pt@Px@P@P @P@P@P4@P@P@P@P@P @P@P@P@P@P@P4@P@P@P @Q @Q@Q@Q@Q@Q 3@Q$@Q(>@Q0@Q4@Q83@Q<@Q@@QD  @QH  @QL@QP@QX@Ql @Qp @Qt@Qx @Q| @Q @Q@Q @Q @Q@Q@Q @Q @Q @Q @Q@Q @Q @Q4 @Q @Q @Q @Q @Q@Q @Q@Q@Q3 @R@R>@R @R>@R @R @R  @R @R$@R(@R0@RL@RP @RT @RX@R\@R`@Rh @R@R @R @R@R@R@R @RB @R@R @R @R@R@R @R@R@R@R@R @RB @R@R @R@R>@S4 @S@S3 @S @S @S4@S$ @S(@S,@S03@S4@S8>@S<4@S@@SD3@SH@SP @ST  @SX  @S\@S`@Sl @S@S@S@S@S@S @S@S@S @S @S @S@S@SȰ @S @S @SB@S@S @S @S @S@S@T @T@T @T( @T,B@T0@T4 @T8 @T< @T@@TD@TL @T` @Td @Th@Tl@Tp @Tt @Tx @T|@T@T@T@T @T @T@T@T @T@T @T@T@T @T4 @T @T@T@T3 @U@U>@U4 @U @U3 @U@U @U  @U$ @U(@U,@U< @UT @UX@U\@U`J @Ud@Uh @Ul@Up@Ux@U@U@UJ @U@U@UJ @U@U@UJ @U@U@UJ @U @U4 @U@U@U@U @U@U@U@V@V@V@V 3 @V@V@V@V  @V$  @V(  @V, @V0 @V4  @V8@V<@VP @Vh@Vl@VpJ @Vt@Vx@V|J @V@V@VJ @V@V @V @V @V @V@V@V @V @V @V@V@V@V@V@V@V  @V @V  @V@V@W @W @W@W @W$J @W(@W, @W0@W4@W<@WT@WX@W\J @W`@Wd@WhJ @Wl@Wp@WtJ @Wx @W|@W @W @W@W @W@W4@W @W @W@W@W@W@W@W@W@W@W@W @W@W@X3@X @X@X 4 @X @X3 @X@X  @X  @X$  @X(@X,@X@ @XT @XX@X\@X`J @Xd@Xh @Xl@Xp@Xx @X@X@XJ @X@X@XJ @X@X@XJ @X@X@XJ @X@X @X @X @X @X @X@X@X@X@X@X@X @Y  @Y@Y@Y @Y(@Y,@Y0@Y4 @Y8 @Y< @Y@B@YD@YH @YL @YP@YT@Y\ @Yl@Yp@Yt@Yx @Y| @Y @YB@Y@Y @Y @Y@Y@Y @Y@Y@Y@Y @Y@Y@Y @Y@Y @Y @Y @Y@Y @Y@Z @Z@Z@Z @Z @Z$@Z( @Z,@Z< @Z@@ZD@ZH@ZL@ZP  @ZT @ZX @Z\@Z`@Zh@Z @Z4 @Z @Z @Z@Z@Z@Z@Z @Z@Z@Z3 @Z @Z@Z4 @Z@Z3 @Z@Z@Z  @Z @Z  @Z  @[@[@[ @[$ @[(@[,@[0J @[4@[8 @[<@[@@[H @[X@[\@[`J @[d@[h@[lJ @[p@[t@[xJ @[|@[@[J @[@[ @[ @[ @[ @[ @[@[@[@[@[@[@[ @[  @[@[Я@[ܰ @[@[@[@[ @[ @[ @\B@\@\ @\ @\@\@\ @\(@\,@\0@\4 @\8 @\< @\@B@\D@\H @\L @\P@\T@\\ @\h@\l@\p@\t @\x@\@\ @\@\ @\ @\ @\@\ @\@\ @\@\@\ @\@\@\ @\@\ @\@\@\@]@]  @] @] @]@]@] @],@]0@]4J @]8@]<@]@@]DJ@]H@]L@]PJ @]T@]X@]\J @]` @]d @]h @]l @]p@]@]@]@]@]@]@] @]  @]@]@]@] @] @] @] @] @] @] @] @]  @]  @]  @]  @]@]@^@^ @^  @^< @^@ @^D4 @^P@^T@^X@^\@^p@^t@^x@^|@^@^3 @^ @^@^4 @^@^3 @^@^@^  @^ @^ @^  @^@^@^а@^ @^ @^ @^ @^ @^ @^ @_ @_  @_  @_  @_  @_@_@_, @_@ @_D@_H@_LJ @_P@_T @_X@_\@_d@_x@_|@_J @_@_@_J @_@_@_J @_ @_@_ @_ @_@_ @_@_4@_ @_ @_@_ @_ @_@_@`@`@`@` @`@`$@`(@`,@`0 @`4@`8@`<3@`@@`D@`H @`L @`P  @`T  @`X  @`\@``@`t@`@`@` @`@`@`@`@` @` @` @`@`į@`ذ@`@` @`@a@a@a @a@a,@a0 @a8@a<@aD@a`@ad@ah @al@ap@ax@a@a@a @a@a@a@a @aB@a@a @a @a @a@a@a@a@b @b B@b@b @b @b @b @b$@b,@b@ @bD@bH@bP@b\@b`@bdJ @bh@bl @bp @bt @bx@b|@b@b @b @b@b@b@b@b@b@b @b@b@b@b@b@bԯ@bܰ@b@b@b@b @b@c@c@c @c@c @c$ @c( @c,@c4@cL@cd@ch@cl @cp @ct@cx@c @c@c@c@c@c@c@c @c@c@c @c @c @c@c@c @c@c @c@c @c @c@d@d  @d  @d @d@d$@d8 @d< @d@ @dDB@dH@dL @dP@dT@d\ @dp @dt @dx @d|@d @d@d @dB @d@d @d @d @d @d@d @d @d  @d@d@d̰@d@d@d@d @d @d@e@e@e@e @e@e @e4 @e8 @e< @e@4@eD @eH@eL@eP3@eT@eX@e\ @e` @ep@et@e|@e@e@e@e @e @e@e@e@e@e@eJ@e@e@e@eJ@e @e@eЯ@eذ @e@e@e@e @e @e @f@f@f @f @f @f@f@f @f @f$@f,@f@ @fD @fH @fL@fP@f`@fp @ft@fx@f|J@f @f@f@f@f@f @f @f@f@f @f@f@f@f @f@f@f@f @f @f@g@g  @g@g@g @g@g @g8@gP@gT@gX@g\@g`@gd@gh@gl@gp @gt @gxB@g|@g @g@g@g@g @g@g@gİ@g@g@g@g@g@g @g@g@h@h@h@h @h$@h(@h,@h4 @h<@h@@hD@hL@h`@hd@hh@hl@hp @h|@h@h@h@h@h@h@h@h @h@h@hJ @h@h@h̯@h԰ @h@h@h@h@h@i@i@i@i @i@i @i$@i(4@i,@i0@i43@i84@i<@i@@iD@iH3@iL>@iP@iT@iX@i\ @i` @id  @ih@il@i|@i@i@i@i=@i @i @i @i@i @i@i@ḭ @i@i@i@i@i@i@i@i@i @j@j@j@j@j@j @j$@j4@j8@j< @j@ @jD  @jH@jL@j\ @jl@jp=@jt@jx@j|@j@j @j @j@j @j@j4 @j@j3 @j@j@j@j@j̰ @j@j @j @j4 @j @j@j>@j3 @j@k>@k@k@k J@k@k@k @k,@k0 @k4 @k84 @k< @k@>@kD@kH3 @kL>@kP@kT@kX@k\J@k`@kd@kl@k|@k@k@k@k@k@k@k@k@k@k@k@k@k @k@k@k@k@k@k@k@k@k@k@k@k@k@k@k@l@l@lJ @l @l @l@l@l @l0@l4@l8@l<@l@@lD@lH@lL@lP@lT@lX@l\@l`@ld@lhJ @ll@lp @lt@lx@l@l @l@l@l@l@l=@l@l@l@l@l=@l@l@lȰ@l @l@l@lJ @l@l@l@m @m@m@m J @m$@m(@m,J@m0 @m4@m8@m<@m@ @mD@m\@m`@md@mh @ml @mp @mt@mx@m@m@m@m@m @m@m@m@m @m @m@mد@m@m @m @n@n@n@n@n @n$@n(@n0 @nH@nL@nP@nT@nX@n\@n`@nd@nh@nl@np@nt@nx@n|@n @n@n@n @n @n@n @n@n @n4 @n4 @n4 @n@n3 @n@n @n3 @n@n@n3 @n@o@o  @o@o @o@o4@o8@o<@o@@oD@oH@oL@oP@oT@oX @o\@ot@ox@o|@o@o@o@o@o@o@oȰ@o@o@o@o@o@o@o @o@p@p @p@p(@p@@pD@pH@pL@pP@pT@pX @p\@ph@pl@pp@p@p @p@p@p@p@p@p@p @p@p@p@p@p@pJ @p@p@p@q@q@q@q @q$ @q(@q,@q0@q4@q8@q@,@0@4@8@<  @@  @D@H@L@d @hB @l @p @t @x @| @ @ @@@@@@@@4@@@@@@@4@>@@@@@3@4@@3@@>@@3@ @$4@4@83@<@@  @D  @H  @L  @P@T@h @ @ @@@J @ @@@@ @@@@  @  @@Я@԰ @ @@@@ @@@@ @4@8@<@@@D@H@L@X@\@d @h @l @p@t@@ @@@@@ @@į@̰@ @ @@@ @@@ @@@ @ @ @,@0 @4 @8@<@L @`@d@h@l @p @t @x@ @@@@ @ @ @  @@@@@ @@د@@ @ @ @@@ @@ @( @< @@ @D@X@\@`@t@x@| @ @@@ @@@@@@ @@ @@@@@J @@ܯ@@@@@@@ @(@0@8@< @@ @T@X@\@`@d@h  @l @p@t@@@@@@@ @ @ @ @@ @ @ @@ @@ @@@ @ @$@(@0 @< @@@L@P@`@h@l@p@t@x@|@ @ @ @ @ @@@ @@@@@@ @@@@@ @ @@ @,@0@4@<@H@L @P@T@X@\@` @d@h@p @ @ @ @@ @ @ @@ @@ @@@İ @@@ @ @@ @@@@@@ @$ @(@,@8 @L @P @T@X @d @h @t@x@@@@@@@ @@@@@ԯ@@@@ @ @$@(@, @0@@@D@H@L@P @T @X@\@p@@ @ @ @ @@@@@ @ @ @@@@ @ @@ @@@ @ @ @$@4 @@ @D@P@T@X@\@`@d @h @l @p @t@x@ @@@ @ @ @@ @@@@@ @@@ @@ @ @ @$@( @,@8@<@@@D @H@L@\ @h@l @t@x @|@@@@@ @ @@@@ @ @ @ @@ԯ@ @ @ @ @@ @@ @$@@@D @H @L@X @\@` @d@h @l @p  @t@x@@ @ @ @@@ @ @ @@@@ @@ @@ @@@ @ @ @$@4@D @H @L @P@T@\ @l @p @t@>@@ @@ @@@ @ @@@ @@@ @ @@@@ @ @ @ @@@$ @( @, @0@4@@ @L @P @T@`@d@h@l @p @t@x@@ @@@ @@@̰@@ @ @@@@ @ @@@ @ @ @$@0@4@8@< @@ @D @H@L@\@l@p@t@x=@| @@ @ @ @ @@@@ @ @ @@@@ @@د@@@ @@@ @@@ @$@(@0@<@@@D@H@P @l@p@t@x@@@@@@@ @@@@@@@@@ @@@@@@ @@@@(@,@0@8 @H@X@h @l @p @t @x @|@@ @@@ @ @ @ @ @@د@ @@@ @ @ @ @ @$@(@8 @H@T@` @d @h @l @p @t@x@ @@@ @ @ @ @ @  @ @@د@ @@@ @ @ @$ @( @,  @0 @4@8@H @X@h @x @|@@@ @@@ @@ @ @ @ @  @ @@@ @@ @( @,@0@4@8 @<@@@P @`@p @ @ @ @  @ @@@ @@ @ @@@@ @@@ @@ @0 @4 @8 @< @@  @D @H  @L@P@` @p@| @ @ @ @ @  @@@ @@ @ @ @ @ @  @ @  @@@ @ @, @8 @< @@ @D @H  @L @P  @T@X@h @x@@@ @ @ @ @ @ @@@ @@@@ @ @ @ @ @ @@@ @ @(@0@4 @8 @< @@ @D @H @L@P@` @p@| @ @ @ @ @ @  @  @@@ @@ @ @ @ @ @  @  @ @@@ @(@8 @H @L @P @T @X  @\ @`  @d@h@x @@ @ @ @ @ @  @ @  @@@а @@ @ @@@ @ @@@( @8@H@X @\ @` @d @h @l@p@ @@ @ @ @ @ @@@̰ @@ @ @ @ @ @@@ @(@< @P @T @X @\ @`  @d@h@ @@ @ @ @ @ @  @@ȯ@ @@ @@ @ @ @@(@, @0@4@8@<@@ @D@H@X @h@t@@ @ @@@ @ @@@ @@@ @@  @@̯@ܰ @@ @ @ @ @ @  @  @ @@@, @<@L @\@l@p@t@x@|@@ @@@ @@ @@@@@@@@ @@@ @@( @4@D@H@L@P@T@X@\ @`@d@t @@ @@@@@@@@ @@̯@@ @@ @ @@ @  @4 @ @  @$@4@8 @<@@ @D@H@L3 @P@T @X4 @\ @`@d @h4 @l @p@t@x3 @|@@3 @@@  @ @@@@ @@@ @@ܯ@@ @@@ @@@ @4 @8@@@L @P@T@`@p @t@|@ @@@@ @@@@ @ @@@̰ @@ @@@@ @@ @@ @$@,@D@H @L @P @\ @` @d @l @p @t@ @@@@@@ @@  @  @  @@į@ذ @ @@@ @@ @ @, @0@@@D@H@L@P@T@X @\ @d @p  @t@x@ @@ @ @ @ @ @@ @@@̰@@@ @@@@ @ @@ @ @ @$ @(@8@<4 @@@D@H@L@P3 @T@X @\  @`  @d  @h@l@p @ @@@ @@ @@@@@J #@@ȯ@а @@ @@J @@J @@J @ @@@ @@ @(@, @0 @4 @8 @< @@ @D@H@X @h@l @p @t @x @| @ @@@ @ @@ @@ @@ @@@ @@ @@ @@ @@ @@ @ @ @@@@4 @8 @< @@ @H@T@\@p @t @x @| @@@@@@ @ @@@@ @@̯@ܰ@ @@@ @ @@@$@,@0@8@D@L@P@\@`@h@t@|@@@@@@@@@@@@@ @@د@@ @@@@@@@(@0@4@<@H@P@T@\@h@p@t @x@|@ @@@@@@@@@@ @@@@@@@@@@@@@ @ @,@4@< @P @T@X @\4@h@l@p3@t@x @|@@@@ @@@ @@4 @ @@@@@@@@ @ @$@(@,@04@<@@3@D@T3 @X@l @p @t@x@@ @@ @ @@@̰@ @@@@ @@@ @$@4 @8@<@D@X @\@`@d>@h@l @p@|4@ @@4 @ @@4 @ @@@ @@4 @ @ @@@ @@ 4 @@@@ @$@(@44@<@@@D@H@L@P@\4@d@h@l@p@t@x@|@@@@@@@@@@@4@@3@4@4@4@4@@@3@@3@@3@@3@@3@@@>@ @$3@(@,@0>@4@83 @<@@@D>@H@L3 @P @T @X>@\@`3 @d@h@l>@p@t3 @x@|@>@@3@@@>@@ @ @ @@@@@@@@ @@@@@@ @@@ @@ @0 @@@D @H@P@T@d@h@l@p@x @|@€@„@ˆ@Œ4@” @˜@œ3@ @´ @¸@¼@̰ @ @@@@@@ @(@,@04@< @@ @H @L@`@d @h @p @t @x @| @À @Ä4 @Ð @Ô@Ü3 @à @ð3@ô4@@@3@@ @ @@ܯ@@ @@@@@$ @( @0 @4@8@P@` @d@h@p@Ĉ@Č @Đ@Ĕ@Ę@İ@ @@Я@ذ @ @@4@@ @(@,3@04@4@83@<4@@@D3@H@L@P@T@X @\@`@x@Ő@Ŕ @Ř@Ť@Ũ @Ŭ@Ŵ@Ȱ@@@@@@ @@$@<@X @\@`@h@x@| @ƀ@Ƅ@Ɣ@Ƥ@ƨ @Ƭ@ư@@@ @@ܯ@@@ @@@@0 @4@8@<@@@D@H@L@P@T @X@d@h@ǀ@DŽ@Lj @nj @ǐ@ǔ@ǜ@Ǵ@Ǹ@а @ @@ @4@@@@ @$@(@4@84@<@@4 @H @L@h@l3@p@t@Ȁ@Ȅ3 @Ȉ@Ƞ@Ȥ@Ȩ3@Ȭ@ȼ @ @@ԯ@@@@@4 @8 @<@@@D@H@L@P@T@X@\@` @d @l@p @t @x@Ʉ @Ɉ@Ɍ4@ɐ @ɔ@ɜ @ɠ @ɤ @ɬ4 @ɰ @ɴ @ɸ@ @@3 @@ @3@@@@@@@ @  @ @@@ @ @$@(@,J)@0 @4@L@P@T@\@d@h @l @p@t@|@ʘ@ʜJ)@ʠ @ʤ@ʬ@ʴ@ʸ@@@@@@@ @@@@@ @@@ @(@<@@J@DB@H @L@P@X @p@tJ)@x @|@˄@ː@˔@˨@ˬ@˰@˼@@@@ @@د@ܰ@@ @@ @@@,@0@4@8 @<@D @H@L@d@x@|@̀@̄ @̈@̌ @̐@̔@̘ @̜@̤ @̨@̬@İ@ @@@4@@@ @3@@ @$@(@D@X @\ @` @d@l @p @t@x@͈@ͤ@ͨ@ͬ@Ͱ@ʹ@͸@İ@@@ @ @@@@  @$@<@@@D @H @L @P@T@h@΀@΄@Έ@Ό@ΐ@Δ@Ψ@@@@@د@@@@$@(@,@@@X@`@h@l@p@τ@Ϝ@Ϩ@ϴ@ϸ@ϼ@а@@@ @@@@ @$@0@< @@@D@H@T@l@p@t @x@|@Ѐ@Є @М@Р@Ф@Ш@Ь@а @д4@и4 @м@@3@@@@@@@3 @@@@@ @ @@@@4@8@H@X @\@l@p@t@| @р@ф@ј@Ѩ@Ѽ @@ԯ@ܰ@ @@@ @ @@ @4 @8 @<@D@L@P@T@`@d @h @p @t@x@Ҁ@Ҕ @Ҙ@Ҝ@Ҥ @Ҹ@Ҽ@@ @@@@@@4@(@,4@0@4@<@D3@H@P@T@X3@\@` @d@h@x@Ә @Ӝ@Ӽ@@ @@Я@@@@ @, @0@4 @<@D@H@L@P4@T4@X@\ @d@p@t3@x@Ԅ3@Ԉ4@Ԍ@Ԑ3@Ԙ@Ԡ @Ԥ@Ԩ@Ԭ @@J)@ @4@@@@ @@ @ @4 @(@,3 @04 @4 @8 @<3 @@@L3@P4@X @\@`3@d@p @t @x@|@Ո @՜ @ՠ@մ@ո @ռ@@ @@@@ @ @@@@,@0@4 @8@<@@@D@H@P@d@h@l@p @t@x@|@ր@ք@ֈ@֐@֤@֨@֬@ְ @ָ@ּ@İ@ @@@@ @@@@ @ @ @ @,@0 @4 @8@<@D @P @T@d@h@l@t@x@| @׀ @ׄ@׈@א@נ@פ@ר@׬ @װ@״@׸@׼@@į@̰@@@@ @ @@@@@@@@ @(@,@4@8@D@H@P @T @X@d@t@ؐ @ؔ4@ؠ@ؤ @ب@ذ@ش3@ظ4@ؼ@4@ @4 @ @@ @4 @ @4 @ @@ @4 @ @@@3 @@ @ @ @@ @@  @$@( @,@0 @4@8 @<@@ @D@H @L@P @T@X @\@`@d3 @h@l @p@t @x@| @ـ@ل @و@ٌ @ِ@ٔ @٘@ٜ @٠@٤ @٨@٬ @ٰ@ٴ @ٸ@ټ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @3 @@ @@  @$@( @,@0@43 @8@< @@@D @H@L @P@T @X@\ @`@d @h@l @p@t @x@| @ڀ@ڄ @ڈ@ڌ @ڐ@ڔ @ژ@ڜ@ڠ3@ڤ@ڨ@ڬ@ڰ@ڴ@ڸ@ڼ@@@@@@@@@@@@@@@@@@@@ @@@@@ @$@(@,@0@4@8@<@@@D@H@L@P@T@X@\@`@d@h@l@p@t@x@|@ۀ@ۄ@ۈ@ی@ې@۔@ۘ@ۜ@۠@ۤ@ۨ@۬@۰@۴@۸@ۼ3@@@@@@@@@@@@@@@@@@@@ @@@@@ @$@(@,@0@4@8@<@@@D@H@L@P@T@X @\ @`@d@p@܀ @܄ @܈ @܌ @ܔ@ܬ@ܴ@ܼ @@@ @@ԯ@@ @@@ @@@@ @ @$ @(@,@4@< @@ @D@L@T@\ @`@h @l@p@݀@݈ @݌ @ݐ@ݔ@ݜ@ݤ @ݨ @ݬ@ݴ@ݼ@ @ @ @@ԯ@ܰ@ @ @@@@ @ @@@@ @$ @( @,@0@8 @@ @D @H @L @P@T@\ @d @h@p @t4 @x@|4 @ބ @ވ @ސ@ޔ3 @ޘ@ޠ@ޤ@ި@ެ3 @ް @޴@޼ @4 @ @4 @ @4 @@3 @@3 @@@3 @@  @ @@@, @4 @8@D@H @L4 @X @\ @`@t@x @|@ߌ@ߐ @ߔ @ߘ @ߠ@ߤ @ߨ @߬@߰ @ߴ4 @߼ @@3 @@ @@3 @@ @@@  @ @@@@@@ @ @$@(4@,@03@4@8@<@@@D @H@`@d @h@l@x@ @@@@ @ @ @@യ@Ȱ@ @ @ @ @ @@@ @ @ @ @ @(@0@@ @D @H @L@T@\@` @d @h@p@x@| @ @@ሯ@ᐰ @ @4@@@@@@@3@@@4@@@@3@@@ @ @ @@@ @ @$@0@8 @<@H@P @T@`@d @h @l@p@t@ @ @@┯@✰@ @@ @@@@ @ @@@@ @ @ @$@4@8@< @@ @D@L@`@p @t@|@@ @ @@㐯@㤰@ @ @@㸯@̰@ @ @@@@ @ @ @@ @( @, @0@8@@@H @L @P@X@`@h @l @p@x@䀰@ @ @@䐯@䘰@ @@ @@@ @ @@ԯ@@@@@@ @@ @(@8 @< @@@H@X@h @l @p@x@@@ @ @ @@崯@弰@ @ @ @ @@@@ @ @@@@(@,@8@< @@ @H @X@\@d@x@|@ @@@ @@栯@洰@@@ @@د@@@@ @ @ @, @0 @D@H  @L@P@`@t@x@猰@ @ @@@ @ @@ȯ@ذ @ @ @B@ @B@ @B@ @ B@ @B@ @B@ @$B@( @,@4@8@@@D@H@L@d @x @|4@@@@3@@@ @ @4 @ @4 @@@3 @ @ @4 @ @@@4@ @@@4@ @@@4@ @@ @4@@3@@ @$@(@,@0@4@8@<3@@@D@H@L@P@T@X3@\@`@d@h@l3@p@t@x@|@@@3 @@ @@ @@ @@@3 @@@ @  @@į@԰ @ @@@@  @4 @( @, @< @@@H @L@\ @` @d@l @p@x @|@ @@ @@ @@ @@ @@ @@ @@3 @4 @@3 @@  @@@ @ @ @, @0@@ @D @H @X@\  @`@d@x@ @ @@@@ @@렯@먰@ @@븯@@ @B@@ @ @ @@@ @ @@@ @$@(@,@0@84 @< @@ @D@L @P@T3 @X4 @\ @` @l@p@t@x3 @| @@ @@쐯@옰@ @ @@ @@@ @@@ @@Я@԰@ @ @@ @@@ @@@ @@ @@ @ @$@(@0@H@L @P@`@d@h@p@t@|@@@ @ @@혯@@ @4@@3@@ @@@@ @@ @$@<@@@H @L @T@X@l@ @ @@@@@@ @@@@@ @(@D@H@P@l@p@@@@@@@@@@@@@@@$@,@0 @4@8@H@`@h @p@x@|@@@@@@@@@@@@@@@ @ @@@@ @ @@@,@< @@ @D@L@P @T @\@`@h@| @ @@@@@@@@@ @ @@̯@԰@ @ @ @ @@@@$ @( @,B@0@4 @8@@ @D@P@X @l @p@x@@ @@@@ @@ @@@@ @ @ @@ԯ@ذ @@@J@ @@@@@@ @,@0@4@H@X@\@`@d@h @l @t @x @|@@@ @@@@@@ @ @ @@ܯ@@ @ @ @ @ @@ @$ @(@0@4@H@L@P@T@X @\ @d @h @l@p@x@ @@@ @@@@ @@@ @@@@ @ @4@8 @<@@@L@` @d@x@| @@@@ @4@@@3@4@@4@@3@>@3@>@@@ @ @@@@0@4@D@H @LB@P@T @X@\@l@@@@ @ @ @ @@@@@@@ @B@@ @@@@0@4@D@H @L @P @T @X@\@h@@@@ @B@@ @@@@@@@ @ @ @ @@@@, @0@4@D@H @LB@P@T @X@\@p@ @@@@@@@ @@@@ @B@@ @@ @ @< @@@D@T@X@\@p @ @@@@@@4@@3@4@@4@ @4 @@3 @@3@@3@@ @ @ @ @$@,@< @@@D@L@\@p @ @@@@@@@ @@د@@@@ @$ @( @, @< @@ @D@H @L @P @d @x @|@@@@ @@  @@@Ȱ @@ @ @ @@@ @@  @ @$@8 @H@X @h @l @p @t @x@|@ @@@ @@@@@@@ @@$ @4 @8@<@L @P @T @X@\@d @h @l@p@x@|  @@@ @@ @@@@@د@ @@ @@ @0@4@8@L @\@l @| @ @ @@@ @@ @ @ @ @@@ @@$ @4@8@D@H@L@\ @l@x @@@@@@ @@ @@@@@@@ @ @, @8 @<@@@L@P@T@d @t@ @@@@@ @@@ @@@ @@ @ @ @$@4 @D@T @d @h @l @p @t@x@ @@ @@@@@@@ @@ @ @$@0@4@8@H @X@d @p@t@@@@ @@ @ @ @ @ @@ܯ@ @@ @( @, @0@4@D @H@L  @P@T@h @x@ @@@@@@Ȱ @@ @@@@@@ @,@< @L @P @T @X@\@x @@ @@@@@@̰ @@ @@@@@@, @<@L @\ @` @d@t@x@|@@@ @@ @ @ @@@@@@@@@@@$@(@,@0@4 @8@<@P@d@h@l@x@|@@@ @@@@@@@@@@@ @@@@ @@@ @$@(@,@0 @4@8@L@`@d @h@l@t@x@|@@@@@@@@@ @@@԰@@ @@@@@@@$@( @,@0@8@<@@@H@\@`@d @p@t@|@@ @@@@@@@@ @@@@@@@ @  @ @ @ @ @ @ $@ 8@ < @ @@ D@ L@ P@ T@ \@ p@ t @ x@ |@ @ @ @ @ @ @ @ @ @ @ į@ ̰@ @ @ @ @ @ @ @ @ @ @ $ @ (@ ,@ 8@ <@ @@ D@ L@ `@ d @ h@ l@ x@ |@ @ @ @ @ @ @ @ @ @ @ į@ ̰@ @ @ @ @ @ @ @ @ @ @ $ @ (@ ,@ 4@ 8@ <@ D@ X@ \ @ `@ d@ p@ t@ x@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @ @ @ $@ 8@ <@ @ @ H@ L@ T@ h@ l@ p @ x@ |@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @ @ @ @ @ @ $@ 8@ < @ @@ D@ P@ T@ X@ `@ t@ @ @ @ J @ @ @ @ @ @ @ @ J @ @ @ @@ @@ @$J @(@,@4@D @H@L@P@T@X @\@`@p@@@ @@@@@@ @@Я@ذ@@@ @@@@@ @$ @,@0@8@L@P@T @`@d@l@@@ @@@@@@ @@̯@԰@@@ @@@ @$bin_cut$cut??truefail_?truecwrite_???truecnl_?truevar_???truenonvar_???trueinteger_???trueatomic_???trueis_compiled_???true+_??1?true-_??1?true*_??1?truemod_??1?true//_??1?true/_??1?truerandom_1?trueget0_1?trueput_?0?trueless_??0?truegreater_??0?trueless_eq_??0?truegreater_eq_??0?truearith_eq_??0?truearith_dif_??0?true<<_??1?true>>_??1?true/\_??1?true\/_??1?true#_??1?true\_??1?truecompare0_??1?truearg_??1?truesetarg_???0?truechange_arg_???0?truedef_???0?truerm_??0?trueset_???0?trueval_??1?truelval_??1?truesymcat_??1?truedcg_connect_1?truelist2term_?1?trueterm2list_???1?trueself_info_1?trueadd_instr_????0?truelift_heap_??0?truedet_append0_??1?truecopy_term_??1?truebb_list0_??1?trueolder_file_??0?trueseeing_telling_?1?truesee_tell_??0?trueseen_told_?0?trueseeing_telling_at_?1?truesee_tell_at_??0?truestring_op_??1?trueop0_???0?trueterm_append_??1?truefloat_fun2_???1?truefloat_fun_??1?trueinput_float_???1?truewrite_float_?0?truestrip_cont0_?1?truedcg_def_?0?truedcg_val_1?truedcg_tell_?0?truedcg_telling_1?trueiso_open_stream_??1?trueiso_close_stream_??0?trueiso_write_term_???0?trueiso_read_term_??1?trueiso_put_byte_??0?trueiso_get_byte_?1?trueiso_peek_byte_?1?trueiso_eof_?0?trueiso_lseek_???1?truebb_put_??0?truebb_get_???1?truebb_op_??1?truesetref_??0?trueunix_argc_1?trueunix_argv_?1?trueunix_getenv_?1?trueunix_access_??0?trueunix_cd_?0?trueunix_kill_??0?truequiet_1?truecreate_engine_???1?truedestroy_engine_?0?trueload_engine_???0?trueask_engine_?1?truemultitask_engines_?0?truesuspend_engine_?0?truenew_builtin_??1?truehalt_?0?truetrue_?truecall_?trueabort_?truerestart_?truefindall_store_heap_?truefindall_load_heap_?truefunctor_?truename_?trueshell_?truestat0_?truelist_asm_?truebb_reset_?trueprofile_?trueif0_?true1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=bu0failfail?0in_body?truebu0cwritecwrite?1in_body?truebu0cnlcnl?2in_body?truebu0varvar?3in_body?truebu0nonvarnonvar?4in_body?truebu0integerinteger?5in_body?truebu0atomicatomic?6in_body?truebu0is_compiledis_compiled?7in_body?truebu0++?in_body?arith01truebu0--?in_body?arith11truebu0**?in_body?arith21truebu0modmod?in_body?arith31truebu0////?in_body?arith41truebu0//?in_body?arith51truebu0randomrandom?in_body?arith61truebu0get0get0?in_body?arith71truebu0putput?in_body?arith80truebu0lessless?in_body?arith90truebu0greatergreater?in_body?arith100truebu0less_eqless_eq?in_body?arith110truebu0greater_eqgreater_eq?in_body?arith120truebu0arith_eqarith_eq?in_body?arith130truebu0arith_difarith_dif?in_body?arith140truebu0<<<<?in_body?arith151truebu0>>>>?in_body?arith161truebu0/\/\?in_body?arith171truebu0\/\/?in_body?arith181truebu0##?in_body?arith191truebu0\\?in_body?arith201truebu0compare0compare0?in_body?arith211truebu0argarg?in_body?arith221truebu0setargsetarg?in_body?arith230truebu0change_argchange_arg?in_body?arith240truebu0defdef?in_body?arith250truebu0rmrm?in_body?arith260truebu0setset?in_body?arith270truebu0valval?in_body?arith281truebu0lvallval?in_body?arith291truebu0symcatsymcat?in_body?arith301truebu0dcg_connectdcg_connect?in_body?arith311truebu0list2termlist2term?in_body?arith321truebu0term2listterm2list?in_body?arith331truebu0self_infoself_info?in_body?arith341truebu0add_instradd_instr?in_body?arith350truebu0lift_heaplift_heap?in_body?arith360truebu0det_append0det_append0?in_body?arith371truebu0copy_termcopy_term?in_body?arith381truebu0bb_list0bb_list0?in_body?arith391truebu0older_fileolder_file?in_body?arith400truebu0seeing_tellingseeing_telling?in_body?arith411truebu0see_tellsee_tell?in_body?arith420truebu0seen_toldseen_told?in_body?arith430truebu0seeing_telling_atseeing_telling_at?in_body?arith441truebu0see_tell_atsee_tell_at?in_body?arith450truebu0string_opstring_op?in_body?arith461truebu0op0op0?in_body?arith470truebu0term_appendterm_append?in_body?arith481truebu0float_fun2float_fun2?in_body?arith491truebu0float_funfloat_fun?in_body?arith501truebu0input_floatinput_float?in_body?arith511truebu0write_floatwrite_float?in_body?arith520truebu0strip_cont0strip_cont0?in_body?arith531truebu0dcg_defdcg_def?in_body?arith540truebu0dcg_valdcg_val?in_body?arith551truebu0dcg_telldcg_tell?in_body?arith560truebu0dcg_tellingdcg_telling?in_body?arith571truebu0iso_open_streamiso_open_stream?in_body?arith581truebu0iso_close_streamiso_close_stream?in_body?arith590truebu0iso_write_termiso_write_term?in_body?arith600truebu0iso_read_termiso_read_term?in_body?arith611truebu0iso_put_byteiso_put_byte?in_body?arith620truebu0iso_get_byteiso_get_byte?in_body?arith631truebu0iso_peek_byteiso_peek_byte?in_body?arith641truebu0iso_eofiso_eof?in_body?arith650truebu0iso_lseekiso_lseek?in_body?arith661truebu0bb_putbb_put?in_body?arith670truebu0bb_getbb_get?in_body?arith681truebu0bb_opbb_op?in_body?arith691truebu0setrefsetref?in_body?arith700truebu0unix_argcunix_argc?in_body?arith711truebu0unix_argvunix_argv?in_body?arith721truebu0unix_getenvunix_getenv?in_body?arith731truebu0unix_accessunix_access?in_body?arith740truebu0unix_cdunix_cd?in_body?arith750truebu0unix_killunix_kill?in_body?arith760truebu0quietquiet?in_body?arith771truebu0create_enginecreate_engine?in_body?arith781truebu0destroy_enginedestroy_engine?in_body?arith790truebu0load_engineload_engine?in_body?arith800truebu0ask_engineask_engine?in_body?arith811truebu0multitask_enginesmultitask_engines?in_body?arith820truebu0suspend_enginesuspend_engine?in_body?arith830truebu0new_builtinnew_builtin?in_body?arith841truebu0halthalt?in_body?arith850truebu0truetrue?0in_head?truebu0callcall?1in_head?truebu0abortabort?2in_head?truebu0restartrestart?3in_head?truebu0findall_store_heapfindall_store_heap?4in_head?truebu0findall_load_heapfindall_load_heap?5in_head?truebu0functorfunctor?6in_head?truebu0namename?7in_head?truebu0shellshell?8in_head?truebu0stat0stat0?9in_head?truebu0list_asmlist_asm?10in_head?truebu0bb_resetbb_reset?11in_head?truebu0profileprofile?12in_head?truebu0if0if0?13in_head?truebu_ctrn_inlinen_inline66?truebu_ctrn_arithn_arith74?truebu_ctrn_builtinn_builtin160?truebu_ctrn_nopn_nop174?truebu1!!?truebu1..??truebu1compilecompile??truebu1includeinclude??truebu1oror??truebu1ifif??truebu1strip_contstrip_cont??truebu1termcattermcat??truebu1add_contadd_cont??truebu1asmasm?truebu1asmasm??truebu1=..=..??truebu1::-::-??truebu1statisticsstatistics?truebu1interactiveinteractive??truebu1metacallmetacall??truebu1metatruemetatrue??truebu1expand_termexpand_term??truebu1==??truebu1->->??truebu1;;??truebu1,,??truebu1repeatrepeat?truebu1\+\+??truebu1\=\=??truebu1findall_workhorsefindall_workhorse??truebu1findallfindall??truebu1findallfindall??truebu1findall_conjfindall_conj??truebu1findall_conjfindall_conj??truebu1findall_disjfindall_disj??truebu1findall_disjfindall_disj??truebu1allall??truebu1whilewhile??truebu1skip_untilskip_until??truebu1skip_whenskip_when??truebu1find_whilefind_while??truebu1nth_answernth_answer??truebu1take_at_mosttake_at_most??truebu1drop_at_leastdrop_at_least??truebu1has_fuelhas_fuel??truebu1find_at_mostfind_at_most??truebu1all_but_at_leastall_but_at_least??truebu1forfor??truebu1argnargn??truebu1appendappend??truebu1membermember??truebu1det_appenddet_append??truebu1..??truebu1++++??truebu1lengthlength??truebu1make_cmdmake_cmd??truebu1numbervarsnumbervars??truebu1gc_callgc_call??truebu1groundground??truebu1atomatom??truebu1floatfloat??truebu1numbernumber??truebu1compoundcompound??truebu1appendNappendN??truebu1append_conjappend_conj??truebu1append_disjappend_disj??truebu1tabtab??truebu1getget??truebu1isis??truebu1exprexpr??truebu1comparecompare??truebu1====??truebu1\==\==??truebu1@<@<??truebu1@>@>??truebu1@=<@=<??truebu1@>=@>=??truebu1<<??truebu1>>??truebu1=<=<??truebu1>=>=??truebu1=:==:=??truebu1=\==\=??truebu1++??truebu1--??truebu1\\??truebu1bb_defbb_def??truebu1bb_setbb_set??truebu1bb_valbb_val??truebu1bb_rmbb_rm??truebu1bb_letbb_let??truebu1bb_change_argbb_change_arg??truebu1letlet??truebu1bb_defbb_def??truebu1bb_setbb_set??truebu1bb_valbb_val??truebu1bb_rmbb_rm??truebu1bb_letbb_let??truebu1dcg_phrasedcg_phrase??truebu1dcg_phrasedcg_phrase??truebu1:=::=:??truebu1##??truebu1powpow??truebu1loglog??truebu1sqrtsqrt??truebu1expexp??truebu1loglog??truebu1sinsin??truebu1coscos??truebu1tantan??truebu1asinasin??truebu1atanatan??truebu1acosacos??truebu1integerinteger??truebu1floatfloat??truebu1statisticsstatistics??truebu1predicate_propertypredicate_property??truebu1current_predicatecurrent_predicate??truebu1current_predicatecurrent_predicate??truebu1ctimectime??truebu1helphelp??truebu1aproposapropos??truebu1aproposapropos??truebu1unixunix??truebu1systemsystem??truebu1meta_interpretermeta_interpreter??truebu1tracetrace??truebu1dynamicdynamic??truebu1assertaasserta??truebu1assertzassertz??truebu1assertassert??truebu1retractretract??truebu1retractallretractall??truebu1instanceinstance??truebu1eraseerase??truebu1clauseclause??truebu1abolishabolish??truebu1debugdebug??truebu1consultconsult??truebu1reconsultreconsult??truebu1listinglisting?truebu1listinglisting??truebu1listinglisting??truebu1=>=>??truebu1assumeiassumei??truebu1assumelassumel??truebu1assumedassumed??truebu1assumed_clauseassumed_clause??truebu1assumed_clauseassumed_clause??truebu1-:-:??truebu1is_assumedis_assumed??truebu1is_dynamicis_dynamic??truebu1bbbb?truebu1bbbb??truebu1bb_listbb_list??truebu1bb_elementbb_element??truebu1sortsort??truebu1keysortkeysort??truebu1bagofbagof??truebu1setofsetof??truebu1^^??truebu1free_variablesfree_variables??truebu1notnot??truebu1term_charsterm_chars??truebu1vars_ofvars_of??truebu1user_erroruser_error??truebu1errmeserrmes??truebu1quietmesquietmes??truebu1mainmain?truebu1mainmain??truebu1topleveltoplevel?truebu1is_prologis_prolog??truebu1get_codeget_code??truebu1put_codeput_code??truebu1nlnl?truebu1readread??truebu1read_termread_term??truebu1top_read_termtop_read_term??truebu1warn_singletonswarn_singletons??truebu1read_with_singletonsread_with_singletons??truebu1read_clauseread_clause??truebu1read_tokensread_tokens??truebu1writewrite??truebu1printprint??truebu1writeqwriteq??truebu1portable_displayportable_display??truebu1displaydisplay??truebu1portrayportray??truebu1portray_clauseportray_clause??truebu1pp_clausepp_clause??truebu1pp_termpp_term??truebu1fast_writefast_write??truebu1ttyinttyin??truebu1ttyoutttyout??truebu1ttyputttyput??truebu1ttynlttynl?truebu1ttyprinttyprin??truebu1ttyprintttyprint??truebu1ttycwritettycwrite??truebu1ttycwritelnttycwriteln??truebu1seesee??truebu1seeingseeing??truebu1seenseen?truebu1telltell??truebu1tellingtelling??truebu1toldtold?truebu1see_atsee_at??truebu1seeing_atseeing_at??truebu1tell_attell_at??truebu1telling_attelling_at??truebu1file_search_pathfile_search_path??truebu1file_extension_listfile_extension_list??truebu1file_libraryfile_library??truebu1make_file_namemake_file_name??truebu1find_filefind_file??truebu1exists_fileexists_file??truebu1see_or_failsee_or_fail??truebu1flushflush?truebu1sreadsread??truebu1swriteswrite??truebu1bu0bu0??truebu1bu1bu1??truebu1current_opcurrent_op??truebu1opop??truebu1is_builtinis_builtin??truebu1editedit??truebu1my_editmy_edit??truebu1editedit?truebu1eded?truebu1textedittextedit?truebu1emacsemacs?truebu1picopico?truebu1notepadnotepad?truebu1vivi?truebu1coco?truebu1current_user_filecurrent_user_file??truebu1lsls?truebu1dirdir?truebu1make_applmake_appl??truebu1make_executable_unix_applmake_executable_unix_appl??truebu1makemake?truebu1makemake??truebu1makemake??truebu1makemake??truebu1makemake??truebu1make0make0??truebu1cmakecmake?truebu1cmakecmake??truebu1cmakecmake??truebu1kmakekmake?truebu1kcmakekcmake?truebu1tmaketmake?truebu1tmaketmake??truebu1tmaketmake??truebu1ctracectrace?truebu1bootboot?truebu1add_trueadd_true??truebu1gc_readgc_read??truebu1gc_read_clausegc_read_clause??truebu1do_bodydo_body??truebu1tr_bodytr_body??truebu1ith_clauseith_clause??truebu1char_in_cmdchar_in_cmd??truebu1show_code0show_code0??truebu1bu_ctrbu_ctr??truebu1patch_itpatch_it??truebu1lwritelwrite??truebu1module_callmodule_call??truebu1modulemodule??truebu1modulemodule??truebu1is_moduleis_module??truebu1modulesmodules??truebu1current_modulecurrent_module??truebu1module_predicatemodule_predicate??truebu1module_namemodule_name??truebu1publicpublic??truebu1is_publicis_public??truebu1gensymgensym??truebu1init_gensyminit_gensym??truebu1spy_goalspy_goal??truebu1spyspy??truebu1spyingspying??truebu1nospynospy??truebu1otherwiseotherwise?truebu1falsefalse?truebu1copy_termcopy_term??truebu1phrasephrase??truebu1phrasephrase??truebu1nth_membernth_member??truebu1member_imember_i??truebu1savedsaved??truebu1stat_dictstat_dict??truebu1set_c_thresholdset_c_threshold??truebu1set_c_thresholdset_c_threshold??truebu1set_c_traceset_c_trace??truebu1CC??truebu1halthalt?truebu1::??truestat_dictruntimeruntime0?truestat_dictglobal_stackglobal_stack1?truestat_dictlocal_stacklocal_stack2?truestat_dicttrailtrail3?truestat_dictcodecode4?truestat_dictstringsstrings5?truestat_dictsymbolssymbols6?truestat_dicthtablehtable7?truestat_dictbboardbboard8?trueuser_error_???basic??prolog:error_messageerrmes_???pretty??prolog:error_messageprolog:error_message_0?5010prolog:portray_error???$bin_cut?tell?fail?user?tellquietmes_0?40?ttyprintquietmes_?trueprolog:portray_errorbasicbasic?>>> ???: ????trueprolog:portray_errorprettyprettywrite?write: cnlportray_clause??*** ?writemember_.???truemember_.??membernth_member_??1?member_imember_i_?.???truemember_i_.???10member_i:_module_callmodule_call_?$bin_cut?call??is_publicmodule_call_call???module_predicatemodule_predicate_.??module_name???=..???.?????=..module_name_?????.?[]??.58[]name??det_append???name???.???namemodule_name_?.?.?[]should_be_nonvar?user_errormodule_?bb_letmodule_name???currentmodule_namebb_letmodule_member??prolog:public0?fail??modulemodule_?truecurrent_module_$bin_cut?=???currentmodule_namebb_valcurrent_moduleuseruser?trueis_module_?????module_name??bb_valis_module_bb_element???=??+?/?0/module_name0??bb_listmodules_??is_module?findallprolog:hide_atom_$bin_cut???prolog:hide_atom0prolog:hide_atom_??trueprolog:hide_atom0_$bin_cut?fail?usercurrent_moduleprolog:hide_atom0_$bin_cut?fail?is_publicprolog:hide_atom0_module_predicate??????current_moduleprolog:public0//??current_module?bb_defpublic??$bin_cut???functorprolog:public0_?public?bad or repeated declarationerrmespublic,,???public???publicpublic_prolog:public0is_public_??prolog:is_publicprolog:is_public_?$bin_cut?=???public??bb_valprolog:is_public_?is_builtininit_gensym_??gensym?0bb_letgensym_symcat??????prolog:gensym_noprolog:gensym_no_gensym?0??11gensym??0?trueprolog:gensym_no_?1gensym??0?truecurrent_op_??????prolog:get_opcurrent_op_if????valopmark??prolog:get_op???,?fail$bin_cut??010000?forop_???0?trueprolog:get_op_prolog:get_op0????????prolog:op_typeprolog:get_op0_??1??1?00?trueprolog:op_typexfyxfyinfixop?trueprolog:op_typexfxxfxinfixop?trueprolog:op_typeyfxyfxinfixop?trueprolog:op_typefxfxprefixop?trueprolog:op_typefyfyprefixop?trueprolog:op_typexfxfpostfixop?trueprolog:op_typeyfyfpostfixop?trueis_dynamic_?$first0?trueis_assumed_$assumed?0???truespy_goal_tracespying_yes?spying?1?truespy//??\+?$bin_cut?bb_letspying?yes?is_builtin??functorspy_??unable_to_spy_on?user_errornospy//???bb_rmspying???functorprolog:is_builtin_nonvar_bu1?$bin_cut????metacallprolog:is_builtin_nonvar_cont?prolog:bu????termcatprolog:is_builtin_var_bu1??metacallprolog:is_builtin_var_strip_cont???????prolog:buis_builtin_???prolog:is_builtin_nonvaris_builtin_prolog:is_builtin_varinteractive_????=?yes=?noprolog:is_interactiveifinteractive_??prolog:interactive0prolog:is_interactive_?current_op1199fx?-\+prolog:interactive0yesyes?1200fx?-opprolog:interactive0nono?1199fx?-opexpand_term_prolog:portable_expand_termprolog:std_expand_term_prolog:portable_expand_termstrip_cont_-???1?truemetatrue_metacall??strip_contmetacall_?meta_interpreter?call_ifdef?user_errorno meta_interpreter for undefined goal??prolog:call_ifdefotherwise_truefalse_?trueprolog:call_ifdef_????callprolog:call_ifdef_??call=_??true->_$bin_cut?call???call;->->???????if;_?call;_??callor_?callor_??callif_$bin_cut?call???callif_??call,_call???call\+_$bin_cut?fail??call\+_?true\=_????true\=_?truehalt_00truerepeat_truerepeat_repeatfindall_workhorse_??0findall_store_heap????callfindall_workhorse_??findall_load_heapfindall_?.??.0findall_workhorsefindall_?[]findallfindall_conj_?truefindall_conjfindall_conj_?,??,0findall_workhorsefindall_disj_?failfindall_disjfindall_disj_?;??;0findall_workhorsewhile_if?true??call?,?fail$bin_cut???callskip_until_if?fail??call?$bin_cut???callskip_when_if?failtrue?call???callnth_answer_?10??s?has_fuel?skip_untiltake_at_most_??s?has_fuel?whiledrop_at_least_??s?has_fuel?skip_whenhas_fuel_1?0?00?101??0?truefind_while_while??????findallfind_at_most_take_at_most??????findallall_but_at_least_drop_at_least??????findallall_findall???prolog:share_vars????-??call???prolog:are_sharedprolog:are_shared_vars??free_variables??[]??[]?free_variablesprolog:share_vars[][][]?trueprolog:share_vars..??-???.???prolog:share_varsgc_read_?read?.?[]?findallgc_read_clause_?read_clause?.?[]?findallgc_call_call?member????findallfor_???0?truefor_??0?10forargn_?????1?trueargn_for?1?arg????????functornumbervars$VAR$VAR?????11truenumbervars_??????truenumbervars..???numbervars??????numbervarsnumbervars_prolog:numbervars0????????functorprolog:numbervars_?????trueprolog:numbervars_?10??0prolog:numbervars????????numbervarsground_greater?0$bin_cut?fail?0numbervarsground_?truecopy_term_0?1?trueprolog:save_term_1?1?trueflush_20trueprolog:see_or_fail_0?0?trueexists_file_seen??prolog:see_or_failsread_0?1?trueswrite_1?1?truesystem[][]??truesystem..???.??shell???namesystem_??shell._[]?compileinclude_compilecompile_prolog:compile_mem?abort??find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[].46.46.47.115.114.99[]prolog:getenv_path???.112.114.111.103.115[]?prolog:getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[]?truefile_library..?[].?[].46?.112?.108[].46.46.47.108.105.98.114.97.114.121[]?prolog:getenv_pathprolog:getenv_path_??.47[]unix_getenvBP_PATH?,?det_append???name??=?[]det_append???det_append???????ifmake_file_name_?member??name??det_append???det_append???name?????memberstatistics_.??.?[]stat0?????stat_dictstatistics_cwrite?cwrite=cwrite?cnlfail??statisticsstatistics_trueatom_?????trueatom_???truefloat_????$float??truenumber_????truenumber_floatcompound_??atomic??\+=.._????1?true=.._?.[]1?trueprolog:term2list_?.[]1?trueprolog:term2dlist_?.?1?truedet_append_-????1?trueprolog:det_append_-????1?trueappendN_?[]prolog:appendNprolog:appendN[][]??trueprolog:appendN..??-????1prolog:appendNprolog:append_body_??prolog:append_bodyprolog:append_body_det_append0???if????compare0??==??=..?.?.?.?[]-???2?functorappend_conj_?,??,????trueprolog:append_bodyappend_disj_?;??;????failprolog:append_body._.???true++_-[]???1?trueappend_-????1?prolog:general_appendprolog:general_append[][]??trueprolog:general_append..??.??prolog:general_appendlength_?????0?prolog:get_lengthlength_??0?prolog:make_lengthprolog:get_length[][]??trueprolog:get_length..???10prolog:get_lengthprolog:make_length[][]???trueprolog:make_length..????0?10prolog:make_lengthtab_integer?$bin_cut?prolog:tab0???exprtab_??in tab/1: should evaluate to an integer?user_errorprolog:tab0_?put32fail??1forprolog:tab0_?trueget_get0?or??$bin_cut?=???greater?32less?0?repeatis_$bin_cut?=??????expris_is??error_in_is?errmesexpr_??????trueexpr_$bin_cut?=????floatexpr_????variable_in_is?user_errorexpr_$bin_cut?arg1??arg2??expr??expr??=..??call?$bin_cut??.?.?.?.?[]?2functorexpr_arg1??expr??=..??call?$bin_cut??.?.?.?[]?1functorcompare_??1?true+_??true-_0?1?true\_0?1?true==_=???1?true\==_??0?prolog:$noteq@<_<???1?true@>_>???1?true@=<_??0?prolog:$lesseq@>=_??0?prolog:$gteq<_expr??less????expr>_expr??greater????expr=<_expr??less_eq????expr>=_expr??greater_eq????expr=:=_expr??arith_eq????expr=\=_expr??arith_dif????exprprolog:$lesseq<<?trueprolog:$lesseq==?trueprolog:$gteq>>?trueprolog:$gteq==?trueprolog:$noteq<<?trueprolog:$noteq>>?truebb_def_def??????savedbb_set_set??????savedbb_val_??0??copy_termbb_rm_??0?truebb_change_arg_let???change_arg???????savedbb_let_??0?bb_setbb_let_bb_defbb_def_??????bb_defbb_set_??????bb_setbb_val_??????bb_valbb_rm_????bb_rmbb_let_??????bb_letprolog:bb_default_val_?$bin_cut??bb_valprolog:bb_default_val_??truesaved_$bin_cut?=????prolog:save_termsaved_prolog:save_term??$bin_cut?=????prolog:bb_gcsaved_?/saved2prolog:bb_failsaved_abort?restartlet_???0??truelet_???0?trueprolog:def_???0?trueprolog:set_???0?trueprolog:val_??1?trueprolog:let_??????letprolog:rm_??0?true#_1?truedcg_phrase_???1??dcg_phrasedcg_phrase_0?0?0dcg_val[]dcg_tell????call:=:##??????1true:=:_??1?trueprolog:bb_gc_310bb_resetprolog:bb_put_back???copy_termprolog:bb_put_back[][]?trueprolog:bb_put_back..??.??.??.??.??functor???prolog:bb_put_1???prolog:bb_put_back???functorprolog:bb_put_1_set???$bin_cut?=?????prolog:save_termprolog:bb_put_1_+????prolog:bb_failprolog:bb_fail_.?.?[]user_error???blackboard overflow, left only?culprit?bboard?statisticsprolog:try_float_.??.??integer?box??atom..??atom??name??input_float?????prolog:try_float_expprolog:try_float_.??integer?box???trueprolog:try_float_exp..??atome$bin_cut???prolog:try_float_exp1prolog:try_float_exp..??atom??.?[]??.101[].??name??integer?$bin_cut???nameprolog:try_float_exp_?0?trueprolog:try_float_exp1..??.??integer?box??atom-???0?1trueprolog:try_float_exp1..??.??integer?box??atom+???trueprolog:float_minus_$float000??1?truepow_pow??1?truelog_log??1?truesqrt_pow?$float02679111680?1?trueexp_exp?1?truelog_log?1?truesin_sin?1?truecos_cos?1?truetan_tan?1?trueatan_T?1?trueasin_S?1?trueacos_C?1?trueinteger_integer?1?truefloat_$float000??1?truectime_?.?.?[]runtimestatisticsprolog:is_predicate_????trueprolog:is_predicate_$bin_cut???is_dynamicprolog:is_predicate_is_assumedpredicate_property_???prolog:predicate_property0predicate_property_functor???prolog:predicate_property0??????prolog:generate_a_predicateprolog:predicate_property0_$bin_cut?or???=?dynamic=?interpreted?is_dynamicprolog:predicate_property0_$bin_cut?or???=?assumed=?interpreted?is_assumedprolog:predicate_property0_built_in$bin_cut??is_builtinprolog:predicate_property0_compiled???truecurrent_predicate_???functor??????prolog:is_predicatecurrent_predicate_functor?????prolog:generate_a_predicatecurrent_predicate//???????prolog:is_predicate?$bin_cut???functorcurrent_predicate//????prolog:generate_a_predicateprolog:predicate_key0//$assumed0????trueprolog:predicate_key0_??/$first0trueprolog:predicate_key0//predmark0predmark?/??/???00?11trueprolog:generate_a_predicate_000=??+??prolog:predicate_key0?????/?????bb_elementhelp_aproposapropos_apropos??sort??member??write?cnlfail??findallapropos_?trueapropos_-??/??predicate_property??functor???name??prolog:near_match????nameprolog:near_match_???trueprolog:near_match_?$bin_cut????prolog:append3prolog:near_match_?prolog:append3????$bin_cut??.???prolog:append3prolog:append3_append??????appendprolog:unix_cd_HOME0?0trueprolog:unix_argv_??0?10,?unix_argv??for?1?findallunixargcargc??1trueunixargvargv?prolog:unix_argvunixgetenvgetenv???unix_getenv??errmesno such environment variable?trueifunixaccessaccess?????0trueunixcdcd???0trueunixcdcd?prolog:unix_cdunixkillkill?????0trueprolog:try_dcg_expansion_-->??$bin_cut?????prolog:dcg_ruleprolog:try_dcg_expansion_??dcg expansion error->?errmesprolog:dcg_rule-->-->??prolog:dcg_body????prolog:dcg_conj???=???:-???prolog:dcg_headprolog:dcg_head@@@@??true?@@???prolog:dcg_body??????prolog:dcg_bodyprolog:dcg_head_true???prolog:dcg_goalprolog:dcg_head,,???prolog:dcg_body????????prolog:dcg_goalprolog:dcg_head_true???prolog:dcg_goalprolog:dcg_goal_?+???1?trueprolog:dcg_body_?????phrase????trueprolog:dcg_body,,???prolog:dcg_body????prolog:dcg_conj???????prolog:dcg_bodyprolog:dcg_body->->??->???prolog:dcg_body???????prolog:dcg_bodyprolog:dcg_body;;??;???prolog:dcg_disj??????prolog:dcg_disjprolog:dcg_body{}{}?????trueprolog:dcg_body!!!???trueprolog:dcg_body[][]true???trueprolog:dcg_body..???prolog:dcg_body????prolog:dcg_conj???????prolog:dcg_termprolog:dcg_body_prolog:dcg_goalprolog:dcg_term_C????trueprolog:dcg_disj_prolog:dcg_disj0????????prolog:dcg_bodyprolog:dcg_disj0_=???1?=??????prolog:dcg_conjprolog:dcg_disj0_???trueprolog:dcg_conj_true???trueprolog:dcg_conj_prolog:dcg_CONJprolog:dcg_CONJtruetrue???trueprolog:dcg_CONJ,,??,???prolog:dcg_CONJprolog:dcg_CONJ_,???trueC..?????truephrase_?[]phrasephrase_=??=??call????prolog:dcg_bodyprolog:portable_expand_term-->-->???????prolog:try_dcg_expansionprolog:portable_expand_term-->>-->>?????try_edcg_expansion???errmesexpected_to_expand?prolog:call_ifdefprolog:portable_expand_term_??trueprolog:default_prologbinprologbinprolog?trueprolog:peval_ioget_codeget_code??get0?trueprolog:peval_ioput_codeput_code??put?trueprolog:peval_ionlnlcnl?trueprolog:peval_ioseeingseeing??seeing_telling0?trueprolog:peval_iotellingtelling??seeing_telling1?trueprolog:peval_ioseeing_atseeing_at??seeing_telling_at0?trueprolog:peval_iotelling_attelling_at??seeing_telling_at1?trueprolog:peval_iofast_writefast_write??cwrite?truefast_write_???trueget_code_1?trueput_code_?0?truenl_?truesee_0?0??truesee_??unable_to_see?user_errorseeing_01?truetelling_11?truetell_1?0??truetell_??unable_to_tell?user_errorseen_00truetold_10truesee_at_0?0??truesee_at_??unable_to_see_at?user_errortell_at_1?0??truetell_at_??unable_to_tell_at?user_errorseeing_at_01?truetelling_at_11?truefind_file_$bin_cut?file_search_path?file_extension_list?prolog:find_file1??????atomfind_filelibrarylibrary?$bin_cut?file_library??prolog:find_file1??????atomfind_file_?bad file name?user_errorprolog:find_file1_?????00????prolog:find_file2prolog:find_file2_$bin_cut?see??????prolog:see_a_fileprolog:find_file2_findall???findall???errmes???file_not_found?+??+??,?name??member??,?name??member???seeprolog:see_a_file_prolog:see_or_fail?seen??make_file_nameread_clause_warn_singletons?????read_with_singletonsread_with_singletons_prolog:singletons????prolog:r_termwarn_singletons..????0?10.??fail???prolog:warn_singletons1warn_singletons_?trueprolog:warn_singletons1:-:-???trueprolog:warn_singletons1_:-??seeing_telling_at0?prolog:melt_varnames?ttyout?$bin_cut??,?,?,nl,?,?,?,nlnlcwrite:-...print?print=> print** warning singleton_variables, byte=>?print???add_trueprolog:melt_varnames[][]?trueprolog:melt_varnames..??var???prolog:melt_varnamesread_??prolog:r_termtop_read_term_read_termread_term_prolog:r_vars?????prolog:r_termprolog:r_vars[][][]?trueprolog:r_vars..??var???.??=??prolog:r_varsprolog:singletons_??member??var??s0??findallprint_prolog:portable_printwrite_prolog:portable_writewriteq_prolog:portable_writeqttyin_00call?see??user?seettyout_10call?flushtell??user?tellttyprin_write??ttyoutttyprint_,?nlwrite??ttyoutttycwrite_cwrite??ttyoutttycwriteln_,?nlcwrite??ttyoutttynl_?nlttyoutttyput_put??ttyoutdisplay_portable_display??ttyoutprolog:r_term_read_tokens??prolog:r_and_check??$bin_cut?=????repeatprolog:r_and_check_?prolog:all_read??1200?prolog:rtprolog:r_and_check_?prolog:syntax_errorprolog:all_read[][]??trueprolog:all_read_??.operator.expected.after.expression[]?prolog:syntax_errorprolog:expect_.????trueprolog:expect_?.?.or.operator.expected[]?prolog:syntax_errorprolog:prefixop_??$bin_cut??prefixopfy?prolog:get_op0prolog:prefixop_?-?1??prefixopfx?prolog:get_op0prolog:postfixop_??$bin_cut??postfixopyf?prolog:get_op0prolog:postfixop_?-?1??postfixopxf?prolog:get_op0prolog:infixop_??$bin_cut?-?1??infixopxfx??prolog:get_op0prolog:infixop_??$bin_cut?-?1??infixopxfy??prolog:get_op0prolog:infixop_??-?1??infixopyfx??prolog:get_op0prolog:ambigop_prolog:infixop????????prolog:postfixopprolog:rt[][]?.expression.expected[][]prolog:syntax_errorprolog:rt..??????????prolog:rtsprolog:rtsvarvar??.(??prolog:r_args???$bin_cut?prolog:exprtl0??????apply?.??999??prolog:rtprolog:rtsvarvar?????prolog:exprtl0prolog:rtsatomatom-.??integer?box??0?0?prolog:exprtl0prolog:rtsatomatom-.??atom?prolog:float_minus??$bin_cut?prolog:exprtl0??????floatprolog:rtsatomatom?.(??prolog:r_args???=..??$bin_cut?prolog:exprtl0??????.?.??999??prolog:rtprolog:rtsatomatom?$bin_cut?prolog:after_prefix_op???????????prolog:prefixopprolog:rtsatomatom????prolog:exprtl0prolog:rtsintegerinteger?box?????prolog:exprtl0prolog:rts[[.]??[]prolog:exprtl0prolog:rts[[??prolog:r_list???$bin_cut?prolog:exprtl0??????.??999??prolog:rtprolog:rts((??prolog:expect)??$bin_cut?prolog:exprtl0??????1200???prolog:rtprolog:rts((((??prolog:expect)??$bin_cut?prolog:exprtl0??????1200???prolog:rtprolog:rts{{.}??{}prolog:exprtl0prolog:rts{{??prolog:expect}??$bin_cut?prolog:exprtl0??????{}?1200??prolog:rtprolog:rtsstringstring????prolog:exprtl0prolog:rts_?.?.cannot.start.an.expression[]?prolog:syntax_errorprolog:r_args..,?.???$bin_cut?prolog:r_args????999??prolog:rtprolog:r_args..)?[]???trueprolog:r_args_??.,).expected.in.arguments[]?prolog:syntax_errorprolog:r_list..,?.???$bin_cut?prolog:r_list????999??prolog:rtprolog:r_list..|???$bin_cut?prolog:expect]???999??prolog:rtprolog:r_list..]?[]???trueprolog:r_list_??.|].expected.in.list[]?prolog:syntax_errorprolog:after_prefix_op_???0?.prefix.operator.?.in.context.with.precedence.?[]??prolog:syntax_errorprolog:after_prefix_op_prolog:prefix_is_atom??prolog:exprtl?????????prolog:peepopprolog:after_prefix_op_=..??$bin_cut?prolog:exprtl???????.?.?[]?????prolog:rtprolog:peepop..??.(?atom??.??.(?atom??trueprolog:peepop..??atom??.??infixop????prolog:infixopprolog:peepop..??atom??.??postfixop???prolog:postfixopprolog:peepop_??trueprolog:prefix_is_atom..??prolog:prefix_is_atomprolog:prefix_is_atominfixopinfixop??????0trueprolog:prefix_is_atompostfixoppostfixop??????0trueprolog:prefix_is_atom))?trueprolog:prefix_is_atom]]?trueprolog:prefix_is_atom}}?trueprolog:prefix_is_atom||?1100?0trueprolog:prefix_is_atom,,?1000?0trueprolog:prefix_is_atom[][]?trueprolog:exprtl0..??atom?$bin_cut?or???prolog:exprtl?0????.??infixop????prolog:exprtl?0????.??postfixop??????prolog:ambigopprolog:exprtl0..??atom?$bin_cut?prolog:exprtl?0?????.??infixop?????prolog:infixopprolog:exprtl0..??atom?$bin_cut?prolog:exprtl?0?????.??postfixop????prolog:postfixopprolog:exprtl0..,??10000?$bin_cut?prolog:exprtl?1000?????,??1000??prolog:rtprolog:exprtl0..|??11000?$bin_cut?prolog:exprtl?1100?????;??1100??prolog:rtprolog:exprtl0..??$bin_cut?prolog:syntax_error???.?.follows.expression[].??prolog:cant_follow_exprprolog:exprtl0_???trueprolog:cant_follow_expratomatom?atom?trueprolog:cant_follow_exprvarvar?variable?trueprolog:cant_follow_exprintegerinteger?integer?trueprolog:cant_follow_exprstringstring?string?trueprolog:cant_follow_expr((((bracket?trueprolog:cant_follow_expr((bracket?trueprolog:cant_follow_expr[[bracket?trueprolog:cant_follow_expr{{bracket?trueprolog:exprtl..??infixop??????0??0?=..??prolog:exprtl???????.?.?.?[]???prolog:rtprolog:exprtl..??postfixop?????0??0?.?.?[]prolog:peepop??prolog:exprtl???????=..prolog:exprtl..,??10000?10000?$bin_cut?prolog:exprtl?1000?????,??1000??prolog:rtprolog:exprtl..|??11000?11000?$bin_cut?prolog:exprtl?1100?????;??1100??prolog:rtprolog:exprtl_???trueprolog:syntax_error_0000prolog:start_syntax_error???see?fail?user?seeprolog:start_syntax_error_?display?prolog:display_list?length??bb_letsyntax_errorlength?$bin_cut??** SYNTAX ERROR: byte=?displayprolog:start_syntax_error_?trueprolog:syntax_error_00prolog:finish_syntax_error?see?fail?user?seeprolog:finish_syntax_error_syntax_errorlength0-???prolog:display_list??$bin_cut???lengthprolog:display_list..??prolog:display_token?$bin_cut?prolog:display_list??32?ttyputprolog:display_list[][]?ttynlprolog:display_list_0$bin_cut?prolog:display_list?99999? displayprolog:display_list..??ttyput32-?1?$bin_cut?prolog:display_list????prolog:display_tokenprolog:display_list[][]?ttynlprolog:display_tokenatomatom?$bin_cut?write_float???floatprolog:display_tokenatomatom??displayprolog:display_tokenvarvar???displayprolog:display_tokenintegerinteger?box???displayprolog:display_tokenstringstring??.?[]??.34[].??.?[]name??display???det_appendprolog:display_token_displayread_tokens_append?[]?$bin_cut?=??=???32??prolog:r_toksread_tokens..?[]atomend_of_file[]?trueprolog:r_toks-1-1???trueprolog:r_toks_?320?0prolog:r_toksprolog:r_toks3737?get0?prolog:is_terminator?$bin_cut?arith_dif?-1get0?prolog:r_toks????repeatprolog:r_toks4747?0prolog:r_solidusprolog:r_toks3333.??atom!?0prolog:r_after_atomprolog:r_toks4040.((??0prolog:r_toksprolog:r_toks4141.)??0prolog:r_toksprolog:r_toks4444.,??0prolog:r_toksprolog:r_toks5959.??atom;?0prolog:r_toksprolog:r_toks9191.[??0prolog:r_toksprolog:r_toks9393.]??0prolog:r_toksprolog:r_toks123123.{??0prolog:r_toksprolog:r_toks124124.|??0prolog:r_toksprolog:r_toks125125.}??0prolog:r_toksprolog:r_toks4646?0prolog:r_fullstopprolog:r_toks3434.??string??prolog:r_toks????34?prolog:r_stringprolog:r_toks3939.??atom??name??prolog:r_after_atom????39?prolog:r_stringprolog:r_toks_.??var??$bin_cut?prolog:r_name???or??$bin_cut?prolog:r_toks????,?=?_=?.95[],?,?prolog:r_lookup????name??=?.???prolog:is_majprolog:r_toks_$bin_cut?prolog:r_integer????prolog:r_toks???prolog:try_float??????prolog:is_numprolog:r_toks_.??atom?$bin_cut?prolog:r_name???name??prolog:r_after_atom?????prolog:is_minprolog:r_toks_.??atom?0name??prolog:r_after_atom????.????prolog:r_symbolprolog:r_after_atom4040.(??0prolog:r_toksprolog:r_after_atom_prolog:r_toksprolog:r_string_????0???prolog:r_stringprolog:r_string-1-1-1ttyput?displaytokenttyput?ttynl$bin_cut?fail?! end of file in: displayprolog:r_string_????0??prolog:more_stringprolog:r_string_.?????prolog:r_stringprolog:more_string_??.??????prolog:r_stringprolog:more_string_[]??trueprolog:patch_slash..((??.(??trueprolog:patch_slash_??trueprolog:r_solidus4242?0prolog:r_toks??????prolog:r_solidusprolog:r_solidus_.??atom?name??prolog:r_toks???prolog:patch_slash???.47??prolog:r_symbolprolog:r_solidus-1-1-1?ttynl?! end_of_file in /*.. commentdisplayprolog:r_solidus42420?470?prolog:r_solidusprolog:r_solidus424232??trueprolog:r_solidus_0prolog:r_solidusprolog:r_name_.??$bin_cut?get0?prolog:r_name????prolog:is_alpha_numprolog:r_name_[]??trueprolog:r_symbol_.??get0?prolog:r_symbol????prolog:is_specprolog:r_symbol_[]??trueprolog:r_fullstop-1-1?ttynlfail?! end_of_file just after full_stopdisplayprolog:r_fullstop_[]?320??trueprolog:r_fullstop_.??atom?name??prolog:r_toks????.46??prolog:r_symbolprolog:r_integer_???4800.?[]??.46[]=???.?.?????prolog:r_intprolog:r_int-1-1???trueprolog:r_int39390?.39?.?[]?1?-101trueprolog:r_int3939$bin_cut??0?prolog:r_digitsprolog:r_int_????10???prolog:r_digsprolog:r_digits_??????0?-10?????prolog:r_digsprolog:r_digs_.???480?570???0?480??0?????prolog:r_digitsprolog:r_digs_??[]?trueprolog:r_lookup..??var???????prolog:r_varcountprolog:r_lookup..??prolog:r_lookupprolog:r_varcount_.?[]??.95[]???s1?trueprolog:r_varcount_?????s??trueprolog:r_varcountss1?trueprolog:is_alpha_num_?970?1220?trueprolog:is_alpha_num_?650?900?trueprolog:is_alpha_num_?480?570?trueprolog:is_alpha_num9595?trueprolog:is_alpha_num_prolog:is_latin1_minprolog:is_alpha_num_prolog:is_latin1_majprolog:is_maj_?650?900?trueprolog:is_maj9595?trueprolog:is_maj_prolog:is_latin1_majprolog:is_min_?970?1220?trueprolog:is_min_prolog:is_latin1_minprolog:is_num_?480?570?trueprolog:is_latin1_maj_?1920?2140?trueprolog:is_latin1_maj_?2160?2220?trueprolog:is_latin1_min_?2230?2460?trueprolog:is_latin1_min_?2480?2550?trueprolog:is_terminator1010?trueprolog:is_terminator1313?trueprolog:is_terminator-1-1?trueprolog:is_spec3535?trueprolog:is_spec3636?trueprolog:is_spec3838?trueprolog:is_spec4242?trueprolog:is_spec4343?trueprolog:is_spec4545?trueprolog:is_spec4646?trueprolog:is_spec4747?trueprolog:is_spec5858?trueprolog:is_spec6060?trueprolog:is_spec6161?trueprolog:is_spec6262?trueprolog:is_spec6363?trueprolog:is_spec6464?trueprolog:is_spec9292?trueprolog:is_spec9494?trueprolog:is_spec9696?trueprolog:is_spec126126?trueportable_display_?displayprolog:w_outprolog:portable_print_?printprolog:w_outprolog:portable_write_?writeprolog:w_outprolog:portable_writeq_?writeqprolog:w_outprolog:w_out_fail?1200punct?prolog:w_outprolog:w_out_?trueprolog:maybe_paren_punct??0??0?trueprolog:maybe_paren_??trueprolog:maybe_spacepunctpunct??trueprolog:maybe_space_???320trueprolog:maybe_spacequotequotealpha??320trueprolog:maybe_space_?trueprolog:put_string[][]?trueprolog:put_string..???0prolog:put_stringprolog:put_string[][]??0trueprolog:put_string..?????0?0?prolog:put_stringprolog:put_string..???0prolog:put_stringprolog:w_variable_???trueportray_writeprolog:w_out_alpha???prolog:w_variable???alphaprolog:maybe_spaceprolog:w_out$VAR$VAR?????prolog:w_VARprolog:w_out_alpha??,?prolog:maybe_space?otherless?0prolog:maybe_space?alpha$bin_cut?cwrite???orprolog:w_out_printalpha$bin_cut??portrayprolog:w_out_punctcurrent_op???greater??$bin_cut?put40or??$bin_cut?put41?,?prolog:w_atom??punct?=?writeqcwrite??atomprolog:w_out_$bin_cut?prolog:w_atom??????atomprolog:w_out_displaypunct?prolog:w_atom?display??prolog:w_args0??40display??functorprolog:w_out{}{}?punct?1230put125?1200punct??prolog:w_outprolog:w_out..??punct?910prolog:w_tail???999punct??prolog:w_outprolog:w_out,,???prolog:w_out??999??put44prolog:w_out??1000punct?prolog:maybe_paren1000?41???1000?40??prolog:maybe_parenprolog:w_out_alphaor??$bin_cut?write_float??,?prolog:maybe_space?otherless?0prolog:maybe_space?alphafloatprolog:w_out_prolog:w_out???????????functorprolog:w_out11,?-?1?current_op?fx?,?=??current_op?fy?$bin_cut?prolog:maybe_paren??40??prolog:w_atom????arg1??prolog:w_out?????prolog:maybe_paren??41?????orprolog:w_out11,?-?1?current_op?xf?,?=??current_op?yf?$bin_cut?prolog:maybe_paren??40??arg1??prolog:w_out?????prolog:w_atom????prolog:maybe_paren??41?????orprolog:w_out22,?,?=??-?1?current_op?xfy?or?,?,?=??-?1?current_op?yfx?,?,?=??-?1?current_op?xfx?$bin_cut?prolog:maybe_paren??40??arg1??prolog:w_out?????prolog:w_oper?????arg2??prolog:w_out?????prolog:maybe_paren??41?????orprolog:w_out_punctprolog:w_args0??40??????prolog:w_atomprolog:w_oper_?7000?????prolog:w_atomprolog:w_oper_?punct320put32?punct?prolog:w_atomprolog:w_VAR_alpha???00?mod?26?+?65?put?or??$bin_cut??less?26,?cwrite?//?26??alpha?prolog:maybe_spaceprolog:w_VAR_$bin_cut?prolog:w_atom?write???atomprolog:w_VAR_punctprolog:w_args01?40??$VAR?$VAR??prolog:w_atomprolog:w_atom!!punct??330trueprolog:w_atom;;punct??590trueprolog:w_atom[][]punct??910930trueprolog:w_atom{}{}punct??12301250trueprolog:w_atom..writeqquote??.39.46.39[]prolog:put_stringprolog:w_atom_or??$bin_cut??,?,?prolog:put_string?prolog:maybe_space??prolog:classify_name??or?,?prolog:put_string?=?alpha,?,?,?,?prolog:put_string?39put39prolog:maybe_space??=?quote=?writeq??nameprolog:classify_name..??alpha$bin_cut?prolog:classify_alpha_tail??prolog:is_minprolog:classify_name..??otherprolog:classify_other_tail??prolog:is_specprolog:classify_alpha_tail[][]?trueprolog:classify_alpha_tail..??prolog:classify_alpha_tail???prolog:is_alpha_numprolog:classify_other_tail[][]?trueprolog:classify_other_tail..??prolog:classify_other_tail???prolog:is_specprolog:w_args_???410trueprolog:w_args_?0?10??0prolog:w_args???44???999punct??prolog:w_outprolog:w_tail_???1240put93?prolog:w_variableprolog:w_tail[][]??930trueprolog:w_tail..???440prolog:w_tail???999punct?prolog:w_outprolog:w_tail_1240put93?999punct?prolog:w_outpp_term_write?cnlfail?0?numbervarspp_term_?truepp_clause_portray_clauseportray_clause_fail??prolog:pp_clause0portray_clause_?trueprolog:pp_clause0:-:-???prolog:l_clauses?028?0?numbervarsprolog:pp_clause0:-:-??+??prolog:portable_writeq?prolog:l_clauses?028$bin_cut??0?numbervarsprolog:pp_clause0_:-?true?prolog:pp_clause0prolog:l_clauses,,???$bin_cut?prolog:l_clauses?1???1?prolog:l_clausesprolog:l_clausestruetrue2??.?[]??.46[]?0?trueprolog:l_clauses;;???prolog:l_magic?02?prolog:l_magic_nl?.?;??fail??prolog:l_magicprolog:l_clauses->->???$bin_cut?prolog:l_clauses?5???5?prolog:l_clausesprolog:l_clauses_prolog:portable_writeq?prolog:l_magic_nl?.???prolog:l_magicprolog:l_magic!!0?? :- ?trueprolog:l_magic!!1??, ?trueprolog:l_magic_0??? :- ??tabprolog:l_magic_1???.?[]??.44[]?0?tabprolog:l_magic_3??( ?trueprolog:l_magic_4??; ?trueprolog:l_magic_5??? ->??tabprolog:l_magic_?cwrite:- cwrite?cnltab??atomprolog:l_magic_nl22?????trueprolog:l_magic_nl_?trueprolog:l_magic;;???$bin_cut?prolog:l_magic?1???1?prolog:l_magicprolog:l_magic_?80?30cnltab?prolog:l_magic2?)?1??prolog:l_clausesprolog:l_magic222????trueprolog:l_magic2_?truemain_prolog:binpro_startprolog:binpro_start_prolog:exec_run_time_commandsprolog:call_ifdefmaintoplevel=?$end?init_iotrueprolog:call_ifdeftoplevel_prolog:topstep?- $bin_cut???repeatprolog:topstep_flushttyin?prolog:topinterp???top_read_term???ttyprinprolog:topinterp_=?end_of_file?1??trueprolog:topinterp_??fail???prolog:report_answersprolog:topcall_prolog:nothing??metacallprolog:savetop_topgoal1?trueprolog:nothing_trueprolog:report_answers[][]?$bin_cut?ttyprintyes?prolog:topcallprolog:report_answers..???prolog:report_one_var?prolog:report_top_vars?prolog:another_sol?if??fail?=?no,?ttyprintyes$bin_cut?prolog:topcallprolog:report_answers_?nottyprintprolog:report_top_vars_?ttyprint,prolog:report_one_var?fail??memberprolog:report_top_vars_?trueprolog:report_one_var==??ttyprin=ttyout??writeq??ttyprinprolog:another_sol_$bin_cut?ttyin?prolog:user_action??ttynl?get_code??prolog:is_interactiveprolog:another_solyesyesttynl?;?ttyprintprolog:user_action1010no??trueprolog:user_action5959yes??get_code10ttyinprolog:user_action_ttyin?ttyin?prolog:user_action???get_code?get_code10 ; for more, otherwise ?ttyprinmeta_interpreter_do_bodydo_body_?????unbound_goal?user_errordo_body_or???,?,?do_body?$bin_cut?=?yes=?noprolog:do_bodyprolog:do_compiledcallcall????do_bodyprolog:do_compiled\+\+?$bin_cut?fail??do_bodyprolog:do_compiled\+\+???trueprolog:do_compiledbagofbagof?????do_body?bagofprolog:do_compiledsetofsetof?????do_body?setofprolog:do_compiledfindallfindall?????do_body?findallprolog:do_compiled_callprolog:do_goal_$bin_cut?spy_goal???spyingprolog:do_goal_$bin_cut?assumed_clause??prolog:do_body???or???,?,?do_body?$bin_cut?=?yes=?no?is_assumedprolog:do_goal_$bin_cut?clause??prolog:do_body???or???,?,?do_body?$bin_cut?=?yes=?no?is_dynamicprolog:do_goal_???prolog:do_compiledprolog:do_goal_$bin_cut?prolog:do_apply??prolog:do_goal??call?functorprolog:do_goal_prolog:do_undefprolog:do_undef_errmes???=undefined_predicate/??=culprit?functorprolog:do_apply_.?.??=..??det_append???=..?????=..prolog:do_body,,?????????prolog:do_conjprolog:do_body;;?????????prolog:do_disjprolog:do_body!!trueyes?trueprolog:do_body_trueno?prolog:do_goalprolog:do_conj!!?yes??trueprolog:do_conj_prolog:do_body?????do_bodyprolog:do_disj->->???????????prolog:do_if_then_elseprolog:do_disj_prolog:do_disj0prolog:do_if_then_else_$bin_cut?prolog:do_body?????do_bodyprolog:do_if_then_else_????prolog:do_bodyprolog:do_disj0_???prolog:do_bodyprolog:do_disj0_????prolog:do_bodytrace_?0tr_bodytr_body_????unbound_goal?user_errortr_body_or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?noprolog:tr_bodyprolog:tr_body,,???????????prolog:tr_bodyprolog:tr_body!!trueyes??trueprolog:tr_body;;???????????prolog:tr_disj1prolog:tr_bodytruetruetrueno??trueprolog:tr_body_trueno?prolog:tr_goalprolog:tr_disj1->->?????????????prolog:tr_if1prolog:tr_disj1_????prolog:tr_bodyprolog:tr_disj1_?????prolog:tr_bodyprolog:tr_if1_do_body?prolog:tr_body????prolog:tr_body????????ifprolog:tr_body!!?yes??trueprolog:tr_body,,???,???prolog:tr_bodyprolog:tr_body;;?????????????prolog:tr_disj2prolog:tr_bodytruetrue??????prolog:tr_bodyprolog:tr_body_prolog:tr_body???????prolog:tr_goalprolog:tr_disj2->->???????????????prolog:tr_if2prolog:tr_disj2_?????prolog:tr_bodyprolog:tr_disj2_??????prolog:tr_bodyprolog:tr_if2_do_body?prolog:tr_body?????prolog:tr_body?????????ifprolog:tr_goalcallcall??tr_bodyprolog:tr_goal\+\+?$bin_cut?fail??tr_bodyprolog:tr_goal\+\+???trueprolog:tr_goal_,?,?,?or?ortrue,?,?,?,cnlfailprint?writeRedo: tab?,?,?,?,cnlfailprint?writeExit: tab?if??,?prolog:tr_call??+1??,?\+spying?arith_eq?10metacall?ifprolog:is_interactive?,?cnl=?32,?if?trueget0?arith_eq?10get0?or?or?true,prolog:is_interactive,?failwrite : ,?,?,?failprint?writeCall: tab?,?,?,?,cnlfailprint?writeFail: tab???orprolog:tr_callbagofbagof?????tr_body????bagofprolog:tr_callsetofsetof?????tr_body????setofprolog:tr_callfindallfindall?????tr_body????findallprolog:tr_call_$bin_cut?tab?functor???write?cnlassumed_clause??prolog:tr_body????or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?no!!! assumed/???is_assumedprolog:tr_call_$bin_cut?tab?functor???write?cnlclause??prolog:tr_body????or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?no!!! dynamic/???is_dynamicprolog:tr_call_???functor???write?cnlcall??!!! compiled/????tabprolog:tr_call_$bin_cut?prolog:do_apply??prolog:tr_call???call?functorprolog:tr_call_prolog:do_undefdynamic_fail??prolog:make_dynamicdynamic_?trueprolog:make_dynamic,,???prolog:make_dynamic???prolog:make_dynamicprolog:make_dynamic//??prolog:check_dynamic??prolog:define_dynamic??/???functorprolog:check_dynamic_???WARNING: dynamic code will shadow compiled predicate?cnl?writeprolog:check_dynamic_$bin_cut?errmesdynamic code would shadow assumed predicate???is_assumedprolog:check_dynamic_?trueprolog:define_dynamic_bb_def?$last0?$first0bb_defprolog:ensure_dynamic_$bin_cut???is_dynamicprolog:ensure_dynamic_prolog:make_dynamic??/??functorprolog:add_clause_$bin_cut???prolog:add_clause0prolog:add_clause_prolog:add_clause0????$bin_cut????prolog:ensure_dynamicprolog:add_clause_:-??unable to assert clause?errmesprolog:add_clause0_??0??0???0:-??set??????bb_defprolog:add_clause0_??0:-?????bb_defasserta_:-??prolog:add_clause$first-1????add_trueassertz_:-??prolog:add_clause$last1????add_trueassert_assertzprolog:assert_itend_of_fileend_of_file??trueprolog:assert_it_assertzretract_=??prolog:clause0???prolog:erase0???:-???add_trueretractall_:-??val?$first?val?$last?for???val???prolog:erase0??fail??add_trueretractall_?trueprolog:collect_slot_?$first1?$last0??0??10?$first?0?trueprolog:collect_slot_?trueinstance$dbref$dbref????0copy_termerase$dbref$dbref????prolog:erase0prolog:erase0_prolog:collect_slot????bb_rmclause_??prolog:clause0prolog:clause_$dbref??prolog:clause0prolog:clause0_?$first0?$last0ith_clause????member???-?:-??????findallith_clause_-????1?trueith_clause_??0?10ith_clauseabolish_??is_dynamic?$bin_cut?prolog:abolish0??????functorabolish_found/??abolish_expects_dynamic_clauses?errmesprolog:abolish0_retractall?fail??functorprolog:abolish0_??$first0?$last0prolog:define_dynamicdebug_reconsultprolog:consult_warning_?% using compile/1 is MUCH fasterquietmesconsult_prolog:consult_warningprolog:consult0???find_filereconsult_prolog:consult_warningprolog:survive_cleanup??prolog:consult0???find_fileprolog:consult0_quietmes?see?repeatread_clause?prolog:consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes??consulted?time?consulting???ctimeprolog:consult_included_00prolog:consult0?see???find_fileprolog:consult_embedded:-:-??prolog:consult_cmdprolog:consult_embedded_prolog:assert_it???expand_termprolog:consult_cmd..?[]?prolog:consult_includedprolog:consult_cmdconsultconsult??prolog:consult_includedprolog:consult_cmdreconsultreconsult??prolog:consult_includedprolog:consult_cmd_metacalllisting_??is_dynamic?$bin_cut?write% write?write:cnlprolog:listing0??/????functorlisting_??is_assumed?$bin_cut?write% assumed write?write:cnlprolog:listing1??/????functorprolog:listing0_portray_clause?fail?:-??clauseprolog:listing0_??trueprolog:listing1_portray_clause?fail?:-??assumed_clauseprolog:listing1_??truelisting_listing??fail?0255forlisting_??trueprolog:generate_run_time_predicate_or??bb_element??nonvar??=??+??,?=?/??=?/$assumed0,?=?/$first0=?/????bb_listlisting_listing??fail??prolog:generate_run_time_predicatelisting_true=>_?intuitionistic?metacall?=?$closed???prolog:assume-:_?linear??metacall?=?$closed???prolog:assumeprolog:add_hint_ll_clause????:-?????add_trueassumel_??linear??prolog:assumeassumei_??intuitionistic??prolog:assumeprolog:assume_???bad_clause?error_in_assume?errmesprolog:assume_prolog:assume1prolog:assume1_.?[]?prolog:assume_fileprolog:assume1_prolog:assume_llprolog:assume_ll_lval$assumed??prolog:assume_with_hint_ll????prolog:add_hint_llprolog:assume_with_hint_ll_??????prolog:insert_llprolog:assume_with_hint_ll..?[]??trueassumed_call???assumed_clauseassumed_clause_??assumed_clauseassumed_clause_???$assumed?0????prolog:get_assumed_clauseprolog:get_assumed_clause_???.??clause????prolog:copy_or_delete_llprolog:get_assumed_clause_.??prolog:get_assumed_clauseprolog:copy_or_delete_lllinearlinear???:-???????$usedtrueprolog:copy_or_delete_llintuitionisticintuitionistic?????:-???copy_termprolog:insert_ll_??.?[]?2?.?[]?0?trueprolog:insert_ll_.??prolog:insert_llprolog:assume_file_seeing_telling0?see?prolog:assume_all?seensee?????find_fileprolog:assume_all_prolog:assume_all0?????gc_read_clauseprolog:assume_all0end_of_fileend_of_file??trueprolog:assume_all0_gc_read_clause?prolog:assume_all0????prolog:assume_oneprolog:assume_one:-:-?.?[]???prolog:assume_fileprolog:assume_one:-:-???prolog:consult_cmd?truetrueifprolog:assume_one_???prolog:assume_llbb_element==??+??/??/???.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_301?truebb_?unsortedbbbb_?,?,?,cnl,?,?,?,?,?,cnlfailwrite?prolog:bb_orig??member??if??=??\==?sorted,?sort??findall???bb_element??bb_list?write-bboard?statisticsbboard??cnlorprolog:bb_orig==??+??/??/??=??+??/??/??functor???or??$bin_cut??val???lval?????functorsort_?prolog:remdup???<??prolog:merge_sortprolog:remdup[][][]?trueprolog:remdup..??.??=???1?.??prolog:remdupprolog:remdup..??.??prolog:remdupprolog:merge_sort_prolog:merge_sort1????[]????lengthprolog:merge_sort100[]???trueprolog:merge_sort111?.??.?[]?trueprolog:merge_sort1_?10??0prolog:merge_sort1?????prolog:merge_2?????????prolog:merge_sort1prolog:merge_2[][]???trueprolog:merge_2..??.??.????1?.??prolog:merge_2prolog:merge_2_?.??.???prolog:merge_2prolog:ksort_$bin_cut?=???-1?[]prolog:keysortprolog:ksort_keysort??illegal_arguments?user_errorprolog:keysort..???????-???.??prolog:keysort?1?????????prolog:samkeyrunprolog:keysort_[]??trueprolog:keysort..????0?????-???.??prolog:keysort?1????prolog:keymerge???+???prolog:keysort????????????prolog:samkeyrunprolog:keysort_???trueprolog:samkeyrun..??????-????.??-??$bin_cut?=??prolog:samkeyrun??????.???@=<prolog:samkeyrun..??????-????.??-??<???1?.???prolog:samkeyrunprolog:samkeyrun_???.?[]trueprolog:keymerge[][]????trueprolog:keymerge..????.??-????-??$bin_cut?=??prolog:keymerge????.????@=<prolog:keymerge_.?????.??prolog:keymergeprolog:keymerge_??truesetof_call?sort??????bagofbagof_??\==?[]$bin_cut?=..??functor?.?findall???prolog:replace_instance????keysort??$bin_cut?prolog:concordant_subset???=???-??call?..??[]?free_variablesbagof_.??call?.???findall^_??callprolog:replace_instance[][][]??trueprolog:replace_instance..??-???.??-??$bin_cut?prolog:replace_instance??????prolog:replace_key_variablesprolog:replace_key_variables00??trueprolog:replace_key_variables_??0????10prolog:replace_key_variablesprolog:replace_key_variables_??0??1?10prolog:replace_key_variablesprolog:concordant_subset..??-??prolog:concordant_subset??????.????prolog:concordant_subsetprolog:concordant_subset..??-??.??=???1?prolog:concordant_subsetprolog:concordant_subset_[]??trueprolog:concordant_subset[][]????trueprolog:concordant_subset_???trueprolog:concordant_subset_???prolog:concordant_subsetfree_variables_??.????prolog:list_is_free_of??$bin_cut????prolog:term_is_free_offree_variables_?????truefree_variables_$bin_cut?free_variables????????prolog:explicit_bindingfree_variables_prolog:free_variables?????????functorprolog:free_variables00???trueprolog:free_variables_??0-?1?$bin_cut?prolog:free_variables???????????free_variablesprolog:explicit_binding\+\+?fail??trueprolog:explicit_bindingnotnot?fail??trueprolog:explicit_binding^^????+??trueprolog:explicit_bindingsetofsetof????-??+??trueprolog:explicit_bindingbagofbagof????-??+??trueprolog:term_is_free_of_???\==prolog:term_is_free_of_prolog:term_is_free_of??????functorprolog:term_is_free_of00??trueprolog:term_is_free_of_??0-?1?$bin_cut?prolog:term_is_free_of???????prolog:term_is_free_ofprolog:list_is_free_of[][]?trueprolog:list_is_free_of..??prolog:list_is_free_of????\==keysort_prolog:ksortnot_call?$bin_cut????\+not_$bin_cut?fail??groundnot_?user_errorshould be groundnot??failabortifterm_chars_???name?????swriteterm_chars_sread?????namevars_of_??[][]free_variablesprolog:compile_binary_prolog:cc_bincompprolog:compile_builtins_prolog:cc_builtinsprolog:cc_must_have_builtinswamwam?trueprolog:cc_must_have_builtinsccwam.hprolog:c_chunk_fileprolog:cc_builtins_prolog:bin_builtin?prolog:cc_bincomp??fail??prolog:cc_must_have_builtinsprolog:cc_builtins_?trueprolog:cc_bincompbinbin??fail?portray_clauseprolog:cc_bincompasmasmcnlportray_clause?cnlfail?BINARY:?writeprolog:cc_bincomp_prolog:cc_compile_clause??prolog:gg_emit??$bin_cut???prolog:newpredprolog:cc_bincomp_failing_to_compile_clause??errmesprolog:bin_builtin:-:-??true?$bin_cut??prolog:cutpprolog:bin_builtin_prolog:bu_body??????prolog:buprolog:bu_bodyin_headin_head?:-??true?arg??????functorprolog:bu_bodyin_bodyin_body?:-??trueprolog:cc_compile_clause_?.??.??.?[]prolog:cc_clauseprolog:firstarg_1?0prolog:classif_firstprolog:classif_first_?????/?0?trueprolog:classif_first_?????/_0?trueprolog:classif_first_?/??functorprolog:cc_clause_.??.?[]iifirstarg???iiclause???.?[]iiexecute???:-??prolog:firstarg??prolog:cc_h_b????getput?prolog:max???+?1?prolog:vars??functor?dict?prolog:fill_info??prolog:collapse_args?1?prolog:allocate_regs????-?[]/??-??/??/??/???add_trueprolog:cc_h_b_/??/??/??-??/??-??/??prolog:cc_b????$bin_cut??/??-??/??-?[]/???prolog:cc_hprolog:begin_chunk_?iic_chunk???len?prolog:hidden_var????+????prolog:emitprolog:end_chunk_?iic_chunk???len?prolog:hidden_var????+????prolog:emitprolog:emit_-??.??-???trueprolog:get_mode_???-??/???trueprolog:set_mode_-??/??-??/???trueprolog:hidden_var_???-??/???trueprolog:cc_h_prolog:cc_h0prolog:cc_b_prolog:end_chunk?????prolog:cc_b0prolog:cc_h0_/??$bin_cut?functor???arg???prolog:emit???prolog:begin_chunk???iibuiltin???in_head?prolog:buprolog:cc_h0_/??greater?0$bin_cut?functor???prolog:emit_head_top_term????????functorprolog:cc_h0_???unexpected_head_atom?errmesprolog:emit_head_top_term_???prolog:cc_top_arg11????prolog:begin_chunk??prolog:emit_top_args2?????prolog:cc_top_arg2??????11????prolog:emit_top_argsprolog:cc_b0_???true??prolog:cc_b0prolog:cc_b0truetrue??/true0?trueprolog:cc_b0$bin_cut$bin_cut???iiput???cutarg1prolog:cc_b0????????prolog:emitprolog:cc_b0==????prolog:cc_b0????????prolog:cc_eqprolog:cc_b0_$bin_cut?prolog:cc_builtin???????in_body?prolog:buprolog:cc_b0_/??greater?0$bin_cut?functor???prolog:emit_body_top_term????????functorprolog:cc_b0_???unexpected_body_atom?errmesprolog:emit_body_top_term_???$bin_cut?prolog:emit_top_args1??????1????prolog:cc_top_argprolog:cc_eq_????????prolog:cc_eq1prolog:cc_eq_prolog:cc_eq1prolog:cc_eq1_=??prolog:emit???prolog:emit???prolog:set_modeget??prolog:cc_top_t???prolog:set_modeput???=??iiget???temp0iiput???temp0????prolog:cc_top_tprolog:out_reg000?trueprolog:out_reg11??trueprolog:cc_builtinaritharith????arg???-?1?arg???prolog:out_reg???-???functor???prolog:handle_constant_res????prolog:emit_top_bargs1?????prolog:emit???prolog:cc_b0?????iiarith???=????functorprolog:cc_builtin_-?1?arg???arg1??prolog:cc_b_args????prolog:emit???prolog:cc_b0?????iiinline???????functorprolog:handle_constant_res00???trueprolog:handle_constant_res11??=???????trueprolog:handle_constant_res11=?????iiput???temp0prolog:emit????iiget???temp0???prolog:emitprolog:handle_constant_res11=???=?????prolog:cc_top_tprolog:classif_load_???????trueprolog:classif_load_constant???????trueprolog:classif_load_?=?????prolog:cc_top_tprolog:cc_b_args00??trueprolog:cc_b_args11=??prolog:emit????iiput???temp0???prolog:cc_top_tprolog:emit_top_bargs_???0??trueprolog:emit_top_bargs_??0?10??0??0prolog:emit???prolog:emit_top_bargs???????iiload????????prolog:classif_loadprolog:emit_top_bargs_??0??0??0?=??+?1?prolog:emit_top_bargs??????????prolog:cc_top_tprolog:emit_top_args_???0??trueprolog:emit_top_args_??0??0??0$bin_cut?prolog:get_mode???prolog:emit???+?1?prolog:emit_top_args???????ii????arg????prolog:classif_argprolog:cc_top_arg_???0??trueprolog:cc_top_arg_??0??0??0?10?=??prolog:cc_top_arg?????????prolog:cc_top_tprolog:cc_top_t==?????????trueprolog:cc_top_t==?????????trueprolog:cc_top_t==??greater?0$bin_cut?functor???prolog:emit_top_structure???????prolog:cc_args?????????functorprolog:emit_top_structure_prolog:emit???prolog:emit_args??????ii?structure??/??????prolog:get_modeprolog:cc_arg_???0??trueprolog:cc_arg_??0??0??0?10?=??prolog:cc_arg?????????prolog:cc_tprolog:cc_t==?????????trueprolog:cc_t==?????????trueprolog:cc_t==??greater?0$bin_cut?functor???prolog:emit_structure???????prolog:cc_args?????????functorprolog:cc_args_?10??10??0??0=??prolog:cc_arg1????????prolog:cc_tprolog:cc_args_??????1?????prolog:cc_argprolog:emit_structure_prolog:deep_structure_op??prolog:emit???prolog:emit_args??????ii?structure??/??????prolog:get_modeprolog:emit_args_??????1?????prolog:emit_args0prolog:emit_args0_???0??trueprolog:emit_args0_??0??0??0$bin_cut?prolog:get_mode???prolog:emit???prolog:unify_op???+?1?prolog:emit_args0???????ii???????prolog:classif_argprolog:unify_opgetgetunify?trueprolog:unify_opputput???prolog:deep_var_opprolog:deep_var_op_push$bin_cut??compoundprolog:deep_var_op_write?trueprolog:deep_structure_opgetgetget?trueprolog:deep_structure_opputputpush?trueprolog:classif_arg_??????trueprolog:classif_arg_constant??????trueprolog:classif_arg_?trueprolog:max_??0????trueprolog:max_??trueadd_true:-:-???:-???trueadd_true_:-?true?trueprolog:vars_call???trueprolog:find_occurrencesprolog:find_occurrences[][][]??trueprolog:find_occurrences..??ii????.??ii????prolog:find_occurrences???????prolog:occurrenceprolog:occurrence_??????trueprolog:occurrence_???var???????$OCC??1??prolog:newvarprolog:occurrence$OCC$OCC????var???prolog:oldvarprolog:occurrence_??at?=occ?=var?bad_occurrence?errmesprolog:oldvar_/????=???111??0?trueprolog:newvar_,????=????/???trueprolog:fill_info_?0?prolog:fill_allprolog:tpoint_??11?trueprolog:fill_all[][]??trueprolog:fill_all..??prolog:fill_one????prolog:fill_all??????prolog:fill_var_typeprolog:fill_var_typeiiii????var???????prolog:get_var_typeprolog:fill_var_type_?trueprolog:get_var_type//11unifyvoid??trueprolog:get_var_type//11writevoid??trueprolog:get_var_type//1?variable??trueprolog:get_var_type//??value???0?trueprolog:fill_oneiiii?constant??arg??prolog:mark_arg??????var?/11-?/?????prolog:tpointprolog:fill_oneiiii?constant??????prolog:tpointprolog:fill_oneiiii????arg??prolog:mark_arg?????prolog:mark_var??????prolog:tpointprolog:fill_oneiiii??var?????prolog:mark_var???var??prolog:tpointprolog:mark_arggetget?-?/??*????1trueprolog:mark_argputput?-?/??*????1trueprolog:mark_var_var??/11-??/????trueprolog:mark_var_var??/1?-??/??1?0??trueprolog:mark_var_var??/??-??/??1?0??trueprolog:mark_var_?var??/?-??/?trueprolog:collapse_args_???0?trueprolog:collapse_args_??0??0+?1?prolog:collapse_args???????prolog:collapse_themprolog:default//??prolog:set_to99999??0?prolog:set_toprolog:set_to_???trueprolog:set_to_?trueprolog:collapse_them_-??*??var??-??var??-??prolog:default?prolog:default?prolog:check_lifetimes????-??-??-???prolog:defaultprolog:check_lifetimes--??-??-??prolog:check_var_var??prolog:check_var_arg??$bin_cut??prolog:check_var_argprolog:check_lifetimes--??-??$bin_cut??prolog:check_var_argprolog:check_lifetimes_-??-??$bin_cut??prolog:check_var_argprolog:check_lifetimes_?trueprolog:check_var_var//???/????0?trueprolog:check_var_var//???/????0trueprolog:check_var_arg//???/????0??0trueprolog:allocate_regs[][]???trueprolog:allocate_regs..??prolog:allocate_regs??????prolog:allocate1prolog:allocate1iiii??var??-????$bin_cut?????prolog:allocate_regprolog:allocate1_??trueprolog:allocate_reg_/11???prolog:free_reg???????prolog:get_regprolog:allocate_reg_/1???1?0????prolog:get_regprolog:allocate_reg_/??1?0????prolog:free_regprolog:free_reg_-??/??-??.??/????0??trueprolog:free_reg_??trueprolog:get_reg_-??.??/??-??/????trueprolog:get_reg_-??/??-??/???11?trueprolog:mdef_to_def:-:-??:-??prolog:repl_body????prolog:hide_atomprolog:mdef_to_def:-:-?:-?$bin_cut?call?fail??prolog:repl_bodyprolog:repl_body_call?????trueprolog:repl_body_$bin_cut???prolog:repl_macroprolog:repl_body_$bin_cut?prolog:strip_nil?????prolog:split_opprolog:repl_body_prolog:peval_io??$bin_cut??binprolog?is_prologprolog:repl_body_$bin_cut?=??ttyprint??spying_on?spy_goal??spyingprolog:repl_body_prolog:hide_atomis_prolog_$bin_cut?=???isprologbb_valis_prolog_prolog:default_prologprolog:cutp_?.36.99.117.116[]nameprolog:repl_macro!!$bin_cut??prolog:cutpprolog:repl_macrovarvar???var?prolog:repl_knownprolog:repl_macrononvarnonvar???nonvar?prolog:repl_knownprolog:repl_macroatomicatomic???atomic?prolog:repl_knownprolog:repl_macrofloatfloat???float?prolog:repl_knownprolog:repl_macroatomicatomic???atomic?prolog:repl_knownprolog:repl_macro,,??????prolog:repl_conjprolog:repl_macro;;??????prolog:repl_disjprolog:repl_macro->->??->??prolog:repl_body????prolog:repl_bodyprolog:repl_macrocomparecompare????compare0???trueprolog:repl_macro====???compare0??=trueprolog:repl_macro@<@<???compare0??<trueprolog:repl_macro@>@>???compare0??>trueprolog:repl_macro:=::=:???lval???prolog:repl_lvalprolog:repl_macro##??dcg_connect?trueprolog:repl_macro::???module_call??trueprolog:repl_macrofindallfindall???findall???prolog:repl_bodyprolog:repl_macrobagofbagof???bagof???prolog:repl_bodyprolog:repl_macrosetofsetof???setof???prolog:repl_bodyprolog:repl_macroallall???setof???prolog:repl_bodyprolog:repl_macro^^??^??prolog:repl_bodyprolog:repl_macrocallcall?prolog:repl_bodyprolog:repl_macro\+\+?\+?prolog:repl_bodyprolog:repl_macronotnot?not?prolog:repl_bodyprolog:repl_conj_??$bin_cut?prolog:repl_body??prolog:app_body?????prolog:split_opprolog:repl_conj_,??prolog:repl_body????prolog:repl_bodyprolog:repl_disj_if???????->???prolog:repl_body??prolog:repl_body????prolog:repl_bodyprolog:repl_disj_or??prolog:repl_body????prolog:repl_bodyprolog:repl_lval##??????trueprolog:repl_lval_???trueprolog:repl_known_true$bin_cut??callprolog:repl_known_fail?trueprolog:split_opisis??????prolog:split_is_relprolog:split_op<<????less??prolog:split_relprolog:split_op>>????greater??prolog:split_relprolog:split_op=<=<????less_eq??prolog:split_relprolog:split_op>=>=????greater_eq??prolog:split_relprolog:split_op=:==:=????arith_eq??prolog:split_relprolog:split_op=\==\=????arith_dif??prolog:split_relprolog:split_is_rel_.?[]expr??????trueprolog:split_is_rel_.?[]+?0?????trueprolog:split_is_rel_.?[]+?0?$bin_cut????floatprolog:split_is_rel_.?[]+?0?ground?$bin_cut?expr???binprolog?is_prologprolog:split_is_rel_?[]prolog:split_isprolog:app_body[][]???trueprolog:app_body..??,??prolog:app_bodyprolog:strip_nil..?[]???trueprolog:strip_nil..??,??prolog:strip_nilprolog:split_rel_?[]prolog:split_rel_1prolog:split_rel_1_prolog:split_is????=..??prolog:emit_is????.?.?.?[]???prolog:split_isprolog:split_is_???????trueprolog:split_is_???????trueprolog:split_is_?$bin_cut?=?????floatprolog:split_is_.?.?.?[]$bin_cut?prolog:split_is????prolog:split_is????=..??prolog:emit_is????.?.?.?.?[]???=..prolog:split_is_.?.?[]prolog:split_is????=..??prolog:emit_is????.?.?.?[]???=..prolog:emit_is_.???trueprolog:def_to_mbin:-:-???????prolog:def_to_mbin0prolog:def_to_mbin_??true?prolog:def_to_mbin0prolog:def_to_mbin0@@@@??:-?????prolog:add_upper_cont??????termcatprolog:def_to_mbin0_:-??add_cont?????termcatprolog:add_upper_cont_???add_cont???????add_contprolog:add_upper_cont_,??strip_cont??????add_contadd_cont,,true??add_contadd_cont,,fail??fail??trueadd_cont,,???term_append????cont??add_contadd_cont_?cont??1?truetermcat_?cont??1?trueprolog:show_code_show_code0??length??write?cnlnth_member???prolog:show_instr??fail?BRUT WAM-ASSEMBLER:?=length?=mode????findallprolog:show_code_?POST TERM-COMPRESSION CODE:=mode?cnlprolog:mc_all_instr??nth_member???prolog:show_instr??fail???writeprolog:show_code_?FINAL CODE:=mode?cnlprolog:gen_code??fail???writeprolog:show_code_??trueshow_code0_?member??prolog:show_or_skip????memberprolog:show_or_skipiiiigetvariable??var??-??arg????trueprolog:show_or_skipiiiiputvalue??var??-??arg????trueprolog:show_or_skip_?trueprolog:show_instr_??ii????.?[]write write?write_write?write prolog:show_fun?prolog:show_info?cnl??writeprolog:show_funputput??trueprolog:show_fungetget??trueprolog:show_fun_writeprolog:show_info_??var??-???write?put9put9put9write% write??var? ?writeprolog:show_info_write?? ?writeprolog:show_stepsasmasm,cnl,?,?,cnl,?,cnlfailportray_clause?writeEXPANDED:\==??,?,cnl,?,cnlfailportray_clause?writeDEFINITE:?orprolog:show_steps_?trueprolog:bind_c_chunk_lengthwamwam???trueprolog:bind_c_chunk_lengthmemmem???trueprolog:bind_c_chunk_length_?????0[]prolog:bind_lengthprolog:bind_length[][]??trueprolog:bind_length..??????????????prolog:make_anti_callprolog:make_anti_calliiii?????c_chunk_variable?ii???len?=??prolog:bind_length?????????Cprolog:make_anti_calliiii?????c_chunk_value?ii???len?-???prolog:bind_length??0?????Cprolog:make_anti_call_????ii???$bin_cut?-???C???C???prolog:bind_length??0???.??iic_chunk_variable?0iic_chunk_value?0len?????prolog:antigenicprolog:make_anti_call_???10prolog:bind_length?????????Cprolog:gen_code_prolog:bind_c_chunk_length???member??prolog:write_instr???=?no$bin_cut?fail????prolog:mc_all_instrprolog:gen_code_?trueprolog:maxarity256256?trueprolog:temparg_??trueprolog:gen_instriiii?????$bin_cut????prolog:beautifyprolog:write_instriiii????$bin_cut?=?yes?????prolog:encodeprolog:write_instr_no?trueprolog:mc_all_instr_??prolog:mc_one_instr???findallprolog:mc_one_instr_?prolog:mc_peephole??prolog:instr_cat?????memberprolog:instr_catiiii?????ii?????1trueprolog:beautifyargarg??prolog:encode_argprolog:beautifytemptemp??prolog:encode_arg????????prolog:tempargprolog:beautifycutargcutarg??prolog:encode_argprolog:beautify_???var??-????prolog:encode2prolog:beautifyputputwriteconstant?$bin_cut?prolog:encode2pushcut????prolog:cutpprolog:beautify_????prolog:encode2prolog:encode_arg_getvariableempty_opvar??-????trueprolog:encode_arg_putvalueempty_opvar??-????trueprolog:encode_arg_???var??-????prolog:encode2prolog:encode_arg11constant?$bin_cut?prolog:encode2?cut?????prolog:cutpprolog:encode_arg_??constant?constant?prolog:encode2prolog:encode2_ii?????trueprolog:mc_peephole_prolog:mc_topprolog:mc_input_prolog:mc_input0prolog:mc_input0_.??prolog:mc_empty???????prolog:gen_instrprolog:mc_emptyempty_opempty_op?????prolog:mc_input0prolog:mc_empty_???trueprolog:mc_top_?prolog:mc0??????prolog:mc_inputprolog:mc0_prolog:mc1??????????prolog:op_typeprolog:mc1pushpushvariable??$bin_cut?prolog:mc5?????prolog:mc_pushprolog:mc1c_chunkc_chunkvariable???prolog:mc5?????prolog:mc_chunkprolog:mc1_void??prolog:mc3?????1?prolog:mc_selprolog:mc1_????prolog:mc5prolog:mc_push_??prolog:op_type?pushstructureprolog:mc_transform_push???$bin_cut?=??????prolog:mc_inputprolog:mc_push_???trueprolog:mc_chunk_?prolog:op_type?c_chunkvalue$bin_cut?prolog:mc_input??????prolog:mc_inputprolog:mc_chunk_???trueprolog:mc_sel_?prolog:op_type??void$bin_cut?+?1?prolog:mc_sel???????prolog:mc_inputprolog:mc_sel_???trueprolog:mc3_???prolog:mc4prolog:mc3_?prolog:mc0??????prolog:mc_inputprolog:mc4_$bin_cut???prolog:mc_transform_voidprolog:mc411??trueprolog:mc5_??trueprolog:mc5_?prolog:mc0???????prolog:mc_inputprolog:op_typeiiii?????????trueprolog:op_type_??expected/ii4?errmesprolog:mc_transform_void11?iiunifyvoid??iiunifyvariable???trueprolog:mc_transform_void_ii?void??ii?void???trueprolog:mc_transform_pushiiiipushvariable???iipushstructure??iipushconstant??trueprolog:encodeunify_variableunify_variableget??1?0prolog:wcodeprolog:encodewrite_variablewrite_variableput??2?0prolog:wcodeprolog:encodeunify_valueunify_valueget??3?0prolog:wcodeprolog:encodewrite_valuewrite_valueput??4?0prolog:wcodeprolog:encodeunify_constantunify_constantget???50?0prolog:wcodeprolog:encodewrite_constantwrite_constantput???60?0prolog:wcodeprolog:encodepush_constantpush_constant??/??6prolog:wcodeprolog:encodeget_constantget_constant???7?0prolog:wcodeprolog:encodeget_structureget_structure??/??8prolog:wcodeprolog:encodeput_constantput_constant???9?0prolog:wcodeprolog:encodeput_structureput_structure??/??10prolog:wcodeprolog:encodeget_variableget_variable????11???prolog:wcodeprolog:encodeput_valueput_value???11??prolog:wcodeprolog:encodeput_variableput_variable????12???prolog:wcodeprolog:encodeget_valueget_value????13???prolog:wcodeprolog:encodepush_cutpush_cut????140?0prolog:wcodeprolog:encodeput_cutput_cut????150?0prolog:wcodeprolog:encodeget_cutget_cut????160?0prolog:wcodeprolog:encodeexecute_?execute_?????170??prolog:wcodeprolog:encodeload_constantload_constant????28??0prolog:wcodeprolog:encodeload_variableload_variable????50???prolog:wcodeprolog:encodeload_valueload_value????29???prolog:wcodeprolog:encodepush_structurepush_structure??/??51prolog:wcodeprolog:encodepush_variablepush_variableput??52?0prolog:wcodeprolog:encodeunify_voidunify_void??61?0prolog:wcodeprolog:encodewrite_voidwrite_void??62?0prolog:wcodeprolog:encodec_chunk_variablec_chunk_variable???63??prolog:write_or_skipprolog:encodec_chunk_valuec_chunk_value???64??prolog:write_or_skipprolog:encodeclause_?clause_?+?1?prolog:wcode???0????prolog:n_nopprolog:encodefirstarg_?firstarg_?/??+?2?prolog:wcode????????prolog:n_nopprolog:encodeend_?end_?????0??0prolog:wcodeprolog:encodeinline_variableinline_variableprolog:wcode????????prolog:n_inlineprolog:encodearith_variablearith_variableprolog:wcode????0???prolog:n_arithprolog:encodearith_valuearith_valueprolog:wcode????1???prolog:n_arithprolog:encodebuiltin_?builtin_?prolog:wcode????????prolog:n_builtinprolog:encode_op_?op+?3?make_cmd??prolog:wcode???0?0?.?.?.?.?.?[].32[].32[]??prolog:n_nopprolog:n_inline_bu_ctrn_inline??metacallprolog:n_arith_bu_ctrn_arith??metacallprolog:n_builtin_bu_ctrn_builtin??metacallprolog:n_nop_bu_ctrn_nop??metacallprolog:bu_bu0?????metacallprolog:write_or_skipwamwam??trueprolog:write_or_skipmemmem??trueprolog:write_or_skip_len?greater_eq??less??$bin_cut?prolog:write_or_skip0??????????prolog:c_thresholdprolog:write_or_skip_?trueprolog:write_or_skip0wamwam$bin_cut?prolog:wcodewam??????c_flagbegin_endyes?bb_valprolog:write_or_skip0cc??????0prolog:wspec_cprolog:write_or_skip0asmasm?bb_valc_flagbegin_endyes=?c=?nprolog:wcodeasm??????+?????ifprolog:write_or_skip0_?trueprolog:wcodememmem?????0trueprolog:wcodewamwam??0?0?0put0?writeprolog:wcodecc??????prolog:wcode_cprolog:wcodeasmasm??????prolog:wcode_asmprolog:wcode_asm_.?.?.?.?[]write?write-->put9put9write?cnl??=..prolog:let_c_chunk_file_??c_chunkfile_namebb_letprolog:c_chunk_file_??c_chunkfile_namebb_valprolog:newpredcc???:-???prolog:newpred0prolog:newpred_?trueprolog:newpred0_bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0??functorprolog:newpred0_bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0??functorprolog:currpred--??/??/??bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset??predicatenamebb_valprolog:compile_mem_?memcompiling??...to?ctime?prolog:survive_cleanup??prolog:mcomp_file??prolog:maincomp??prolog:terminate_file?$end11$bin_cut?ctime?-???quietmes??compile_time?current_user_file???quietmesprolog:compile_mem_restart?compilation aborted?ttyprintprolog:survive_cleanup_restartprolog:call_ifdefinit_iotruename??prolog:init_cmd??nameprolog:mcomp_file_.?.?[]statisticsstrings?statisticssymbols?statisticshtable?prolog:translate_all??statisticscode?-???statisticsstrings?-???statisticssymbols?-???statisticshtable?-???+???+???+???quietmes??bytes_used????total?code?strings?symbols?htable?.?.?[].?.?[].?.?[].?.?[].?.?[].?.?[].?.?[]code??statisticsprolog:compile0_.???.??prolog:compile1prolog:compile0_.?[]?prolog:compile1prolog:compile1_?ctime?prolog:xcompile???ctime?-???write?cnl?total_compile_time??prolog:init_cmdprolog:xcompile_prolog:decorate_fileheader?prolog:compile_builtins?member??quietmes?ctime?prolog:comp_file??ctime?-???quietmes?fail?compile_time?compiling??...to???tellprolog:xcompile_prolog:decorate_filefooter?fail?$end00?prolog:terminate_fileprolog:xcompile_?toldprolog:decorate_file_c??prolog:c_decorate_fileprolog:decorate_file_?trueprolog:terminate_file_prolog:gg_emit??prolog:close_c_chunk_file??.?[].?[]iiend????prolog:make_dummy_endprolog:make_dummy_endcc$bin_cut??wam.hprolog:c_chunk_fileprolog:make_dummy_end_prolog:maincompprolog:close_c_chunk_filecc?toldprolog:write_c_chunkprolog:close_c_chunk_file_?trueprolog:gg_emitmemmemmemprolog:gen_codeprolog:gg_emitwamwamwamprolog:gen_codeprolog:gg_emitcccprolog:gen_codeprolog:gg_emitasmasmasmprolog:show_codeprolog:comp_file_.wam.asm.bin.c[]$bin_cut?prolog:translate_all?????memberprolog:translate_all_prolog:translate_all0prolog:memoing_translate_all_?wam\+?prolog:memoable_file???$bin_cut?if?true?prolog:include_memoed_file??\+older_file??prolog:make_memo_file???current_moduleprologbinprolog?is_prologprolog:memoing_translate_all_prolog:translate_all0prolog:memoable_file_??.??.??.?[]append???$bin_cut?=??name??append???name???.??.46.112.108[]???nameprolog:make_memo_file_?wam10prolog:translate_all0??toldtell????tellprolog:include_memoed_file_00repeatget0?prolog:put_to_eof?$bin_cut?seensee???seeprolog:put_to_eof-1-1??trueprolog:put_to_eof_?0??trueprolog:translate_all0_00repeatread_clause?prolog:translate??$bin_cut?seensee???seeprolog:translateend_of_fileend_of_file??trueprolog:translate:-:-??fail??prolog:translate_cmdprolog:translate::-::-????:-??fail??prolog:compile_binaryprolog:translate_$bin_cut?prolog:translate_cmd??fail?assert??prolog:is_dynamic_clauseprolog:translate_??fail???prolog:maincompprolog:is_dynamic_clause:-:-???is_dynamicprolog:is_dynamic_clause_is_dynamicprolog:maincomp_prolog:show_steps???prolog:compile_binary??????prolog:preprocessprolog:translate_cmd..?[]?prolog:include_fileprolog:translate_cmdcompilecompile??prolog:include_fileprolog:translate_cmdensure_loadedensure_loaded??prolog:include_fileprolog:translate_cmdconsultconsult??prolog:include_fileprolog:translate_cmdreconsultreconsult??prolog:include_fileprolog:translate_cmddynamicdynamic???dynamicprolog:translate_cmdinteractiveinteractive???interactiveprolog:translate_cmdspyspy???spyprolog:translate_cmdopop????if??true?member?.wam.c[]prolog:encode_op??????opprolog:translate_cmd_prolog:exec_cmdprolog:exec_cmd_prolog:maincomp??fail??prolog:cmd2clauseprolog:cmd_root$run_time_command$run_time_command?trueprolog:init_cmd_prolog:get_cmd_no???prolog:cmd_rootprolog:get_cmd_no_?bb_setgensym?0$bin_cut??gensym??bb_valprolog:get_cmd_no_?trueprolog:cmd2clause_:-??gensym??quietmes% !!! action delayed after compilation, for command:quietmes?if?truetrue?public/?0:-??prolog:cmd_rootprolog:exec_run_time_commands_prolog:exec_run_time_commands0?fail??prolog:cmd_rootprolog:exec_run_time_commands_trueprolog:exec_run_time_commands0_?10000symcat???if??true$bin_cut??is_compiled?,?failcall?1forprolog:include_file_00quietmes?prolog:memoing_translate_all??seeing_telling0?quietmes??end?in?including?begin?in?including???find_fileprolog:preprocess_prolog:fact2rule??prolog:mdef_to_def??prolog:def_to_mbin?????prolog:std_expand_termprolog:fact2rule:-:-??:-??trueprolog:fact2rule:-:-???:-???trueprolog:fact2rule_:-?true?truemake_cmd_name????prolog:make_cmd0prolog:make_cmd0_??char_in_cmd????findallchar_in_cmd_prolog:listify??member?????memberprolog:listify..???.???trueprolog:listify_namemake_appl_?.?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[]wamnewappl.bpprolog:compile0make_executable_unix_appl_make_cmd??system??.?.?.?.?.?.?.?.?.?[].32.59.32.99.104.109.111.100.32.43.120.32[].32.59.32.99.97.116.32.110.101.119.97.112.112.108.46.98.112.41.32.62.32[].32.36.48.39[].59.32.101.99.104.111.32.39.101.120.101.99.32[].59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[].40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[]??make_applprolog:cparser_?isprologbin_prolog_with_cparserbb_defkmake_makewam??prolog:cparserkcmake_cmakewam??prolog:cparsertmake_?1260tmaketmake_?10000tmaketmake_cmake??set_c_thresholdcmake_?wamcmakecmake_?usercmakecmake_?c.cmakemake_?wammakemake_?usermakemake_?wam.bpmakemake_????makemake_module?if?true?module??make0????\+errmesunable_to_make.?.?.?[]in_module?project??mode???current_modulemake0_find_file??make_cmd??prolog:make_include??prolog:compile0???ctime?-???write?cnl?=?time?.?.?[]??ctimeprolog:make_includecc?.?.?[].46.104[]prolog:let_c_chunk_file???make_cmdprolog:make_include_?trueasm_?asmuserprolog:comp_fileasm_?userasm.asmBinWAM intermediate codemakeboot_?wamprologmakeprolog:uboot_?wamusermakels_?ls -tFsystemdir_?dirsystemedit_make_cmd??system?compile??.?.?.?[].32[]???find_fileprolog:get_editor_unix_getenvEDITOR?unix_getenvVISUAL?$bin_cut????orprolog:get_editor_??truemy_edit_current_user_file?edit????failprolog:call_ifdefprolog:my_defedit_current_user_file?prolog:defedit????failprolog:call_ifdefprolog:defedit_edit?????prolog:get_editored_?emacsprolog:my_defeditedit_?editprolog:my_defedittextedit_?texteditmy_editemacs_?emacsmy_editnotepad_?notepadmy_editpico_?picomy_editvi_?vimy_editco_current_user_file?compile???failprolog:call_ifdefprolog:s_statisticsprolog:c_rootxxxx?trueset_c_threshold_?100000set_c_thresholdset_c_threshold_?bb_letc_flagc_threshold_max??c_flagc_threshold_min?bb_letset_c_trace_??c_flagtracebb_letprolog:c_threshold_?bb_valc_flagc_threshold_max?$bin_cut??c_flagc_threshold_min?bb_valprolog:c_threshold110$bin_cut??wam.hprolog:c_chunk_fileprolog:c_threshold55500?trueprolog:wcode_c_prolog:make_ccodeprolog:make_ccode_$bin_cut?prolog:make_hcode???prolog:c_instrprolog:make_ccode_prolog:make_bcodeprolog:make_hcode_?prolog:wchunk??2?prolog:c_traceprolog:make_bcode_?{???,???,???,"?cwrite?cwrite"},cnl?prolog:patch_specialsprolog:make_comment_-?/??/??=??prolog:make_cmd0???.?.?.?.?.?.?.?.?.?.?[].93.32.42.47[].32.47.32[].32.91[].32.47.32[].32.47.42.32[].10[]??prolog:currpredprolog:wspec_c_$bin_cut?prolog:make_comment?prolog:write_c_chunk?prolog:wchunk?lwrite?prolog:c_trace1?cwrite {write?cwrite,cwrite?cwrite,cwrite?cwrite,(void *)write?cwrite},cnl?,?nllwrite??prolog:c_specprolog:wspec_c_$bin_cut?prolog:c_trace1?prolog:wchunk???prolog:c_spec_endlwrite_?put?fail??memberlwrite_?trueprolog:patch_specials_??????trueprolog:patch_specials_=?92=?34findall???name???,?patch_it????member???namepatch_it_???=??=???orpatch_it_???=??=???orpatch_it_??trueprolog:write_c_chunk_?seeing_telling1?tell?call?tell????prolog:c_chunk_fileprolog:wchunk_,?nlfast_write??prolog:write_c_chunkprolog:c_decorate_file_$bin_cut?prolog:c_decorate_file0?wam_bp?wam.h?prolog:c_chunk_fileprolog:c_decorate_file_?user_bpprolog:c_decorate_file0prolog:c_decorate_file0headerheader?init_gensym?prolog:wchunk/* do not edit: generated by co.pl */write#include "../src/global.h"cnlwrite#include "../src/c_defs.h"cnlprolog:c_chunk_file?write#include "write?write"cnlcnlwritestruct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} write?write[] = {cnl??prolog:c_rootprolog:c_decorate_file0footerfooterwrite?write"}};cnlcnlwritelong write?write_size=sizeof(write?write);cnl?{255,0,0,"?writeprolog:c_check_??prolog:c_check0prolog:c_check0_?integer??c_chunkinbb_valprolog:new_offset_?+?1?bb_setpredicateoffset??predicateoffsetbb_valprolog:get_offset_??predicateoffsetbb_valprolog:c_find_fun_????integer?unexpectederrmesprolog:c_find_fun_bb_valfun_symbol??bb_valfun_arity??$bin_cut?=????0?forprolog:c_find_fun_?11bb_letfun_symbol??bb_letfun_arity??prolog:make_bcodewrite_constant60???c_chunkin??bb_setprolog:c_chunk_begin_prolog:c_root?gensym???c_chunkin-1bb_letprolog:c_chunk_end_?c_chunkinnobb_letprolog:newP_integer?prolog:c_find_fun?????c_chunkin??bb_valprolog:newH_oldP_prolog:new_offset???prolog:c_checkprolog:oldH_oldP_prolog:get_offset???prolog:c_checkprolog:newH_newP_prolog:new_offset???prolog:newPprolog:oldH_newP_prolog:get_offset???prolog:newPprolog:c_wvoid_or?true?,?,?failprolog:new_offset?for?2???prolog:newH_oldPprolog:c_aux_load_integer_load_integer??????prolog:c_checkprolog:c_aux_load_integer_load_constant??????prolog:newPprolog:c_aux_put_integer_put_integer??????prolog:c_checkprolog:c_aux_put_integer_put_constant??????prolog:newPprolog:c_aux_get_integer_get_integer??????prolog:c_checkprolog:c_aux_get_integer_get_constant??????prolog:newPprolog:c_aux_write_integer_?write_integer??????prolog:newH_oldPprolog:c_aux_write_integer_?write_constant??prolog:newH_newPprolog:c_aux_unify_integer_?unify_integer??????prolog:oldH_oldPprolog:c_aux_unify_integer_?unify_constant??prolog:oldH_newPprolog:c_trace_greater_eq??$bin_cut?prolog:write_c_chunk??,?,?,?nlwrite ")write?writec_trace(" c_flagtrace?bb_valprolog:c_trace_?trueprolog:c_specc_chunk_variablec_chunk_variable??c_chunk_variable?prolog:c_chunk_beginprolog:c_skip22?trueprolog:c_spec_endc_chunk_valuec_chunk_valuec_chunk_value??prolog:c_check0?+???prolog:c_chunk_endprolog:get_offset?prolog:make_bcodec_chunk_value?0????prolog:c_skipprolog:c_instrput_structureput_structure???put_structure????prolog:newH_newPprolog:c_instrput_constantput_constant?????prolog:c_aux_put_integerprolog:c_instrpush_variablepush_variablepush_variable()defoffset???prolog:newH_oldPprolog:c_instrpush_structurepush_structure??push_structure???valoffset??rmoffset???prolog:newH_newPprolog:c_instrwrite_valuewrite_value?write_value??prolog:newH_oldPprolog:c_instrwrite_variablewrite_variable?write_variable??prolog:newH_oldPprolog:c_instrwrite_constantwrite_constant????prolog:c_aux_write_integerprolog:c_instrpush_constantpush_constant????prolog:c_aux_write_integerprolog:c_instrget_variableget_variable?move_reg??prolog:c_checkprolog:c_instrput_valueput_value?move_reg??prolog:c_checkprolog:c_instrput_variableput_variable?put_variable???prolog:newH_oldPprolog:c_instrwrite_voidwrite_void??write_void??prolog:c_wvoidprolog:c_instrpush_cutpush_cut?push_cut?prolog:newH_oldPprolog:c_instrput_cutput_cutput_cut()?prolog:c_checkprolog:c_instrget_cutget_cutget_cut()?prolog:c_checkprolog:c_instrload_constantload_constant?????prolog:c_aux_load_integerprolog:c_instrload_variableload_variable?load_variable???prolog:newH_oldPprolog:c_instrload_valueload_value?load_value??prolog:c_checkprolog:c_instrget_valueget_value?get_value??prolog:c_checkprolog:c_instrget_constantget_constant?????prolog:c_aux_get_integerprolog:c_instrget_structureget_structure???get_structure????prolog:oldH_newPprolog:c_instrunify_variableunify_variable?unify_variable??prolog:oldH_oldPprolog:c_instrunify_valueunify_value?unify_value??prolog:oldH_oldPprolog:c_instrunify_constantunify_constant????prolog:c_aux_unify_integerprolog:c_instrunify_voidunify_void?unify_void??prolog:oldH_oldPprolog:c_instrinline_variableinline_variableprolog:c_check_iv???prolog:c_checkprolog:c_instrarith_variablearith_variable??prolog:c_opcode????prolog:c_check_avprolog:c_instrarith_valuearith_value??prolog:c_opcode????prolog:c_check_avprolog:c_check_av00arith_op+?????prolog:oldH_oldPprolog:c_check_av11arith_op-?????prolog:oldH_oldPprolog:c_check_av22arith_op*?????prolog:oldH_oldPprolog:c_check_av33arith_op%?????prolog:oldH_oldPprolog:c_check_av44?div_3???trueprolog:c_check_av55fdiv_3?????prolog:oldH_oldPprolog:c_check_av66?random_1??trueprolog:c_check_av77?get0_1??trueprolog:c_check_av88put0_1()?trueprolog:c_check_av99?rel_op<?trueprolog:c_check_av1010?rel_op>?trueprolog:c_check_av1111?rel_op<=?trueprolog:c_check_av1212?rel_op>=?trueprolog:c_check_av1313?rel_op==?trueprolog:c_check_av1414?rel_op!=?trueprolog:c_check_av1515?int_only_op<<??trueprolog:c_check_av1616?int_only_op>>??trueprolog:c_check_av1717?int_only_op&??trueprolog:c_check_av1818?int_only_op|??trueprolog:c_check_av1919?int_only_op^??trueprolog:c_check_av2020?l_neg_3??trueprolog:c_check_av2121?compare0_3??trueprolog:c_check_av2222?arg_3??trueprolog:c_check_av2323setarg_3()?trueprolog:c_check_av2424change_arg_3()?trueprolog:c_check_av2525def_3()?trueprolog:c_check_av2626rm_2()?trueprolog:c_check_av2727set_3()?trueprolog:c_check_av2828?val_3??trueprolog:c_check_av2929?lval_3??trueprolog:c_check_av3030?symcat_3??trueprolog:antigenicarith_variablearith_variable??300trueprolog:antigenicarith_valuearith_value??300trueprolog:antigenicbuiltin_?builtin_???00trueprolog:c_opcode_+?????prolog:c_checkprolog:c_check_iv00fail_0()?trueprolog:c_check_iv11cwrite_1()?trueprolog:c_check_iv22cnl_1()?trueprolog:c_check_iv33var_1()?trueprolog:c_check_iv44nonvar_1()?trueprolog:c_check_iv55integer_1()?trueprolog:c_check_iv66atomic_1()?trueprolog:c_check_iv77is_compiled_1()?truecwam_bpexphypothypot: DOMAIN error floorceilrinterferfcasinhacoshatanhloglog: DOMAIN error log: SING error log: DOMAIN error log10log10: DOMAIN error log10: SING error log10: DOMAIN error log2log2: DOMAIN error log2: SING error log2: DOMAIN error sqrtsqrt: DOMAIN error sqrt: DOMAIN error powpow: DOMAIN error pow: DOMAIN error pow: DOMAIN error pow%s: DOMAIN error %s: TLOSS error %s: PLOSS error sincostancossinatanatan: DOMAIN error atan2atan2: DOMAIN error atan2: DOMAIN error asinasin: DOMAIN error acosacos: DOMAIN error sinhcoshtanhgammagamma: DOMAIN error - NaN gamma: SING error ldexpj0j0: DOMAIN error j0: TLOSS error y0y0: DOMAIN error y0: DOMAIN error y0: TLOSS error j1j1: DOMAIN error j1: TLOSS error y1y1: DOMAIN error y1: DOMAIN error y1: TLOSS error jnjn: DOMAIN error jn: TLOSS error ynyn: DOMAIN error yn: DOMAIN error yn: TLOSS error $Header: mapdld.c,v 70.3 92/02/05 16:07:02 ssa Exp $ERROR: mmap failed for dld$Header: c_ieee.c,v 1.6 92/03/14 14:33:28 mills Exp $@'((@'@'H??@6B0w;vhMwrqxqirhpprPp@q0rqpqprqqrrsr8ppXq`pqHr qrrqpp(BinProlog3.45/bin/bp.parisc.hp1100755 764 764 1440000 5764353570 15441 0ustar javierjavier @/@@h  @Gy(<@0/ 92453-07A09.74.10/ 92453-07A08.56.05,' 82$Header: crt0.s,v 70.8 92/05/19 15:52:46 ssa Exp $ 92453-07A09.74.10/C@  X"NNLX PtPttX . . X ..X .,.,X 8  X H//X I//X X//8>(0@`>(0@L>( 0@`>(0@,>(0p@px>(0T@T>(0h4@h4>(0@>(&0X@X >((1@>(P@>(R@(Y ? 0<@ $PRIVATE$$DLT$$PLT$ $SHLIB_DATA$$TEXT$ $SHLIB_INFO$ $DATA_START$ $MILLICODE$$LIT$ $LITSTATIC$$CODE$$UNWIND_START$$UNWIND$MILLICODE$$UNWIND$ $UNWIND_END$$RECOVER_START$$RECOVER$MILLICODE$ $RECOVER$ $RECOVER_END$ $PFA_COUNTER$$PFA_COUNTER_END$$DATA$ $STATICDATA$ $SHORTDATA$$SHORTSTATICDATA$$GLOBAL$ $SHORTBSS$$BSS$N0p+~X+   !@@'@U2@U9@UA@UF@UO@UW@U_@Uf@Un@<Us@Uo@Ut5pU t@U y~  '.5<AHNRSW]aefjkt binpro/lib/libm.sl/lib/libc.slerrno_SYSTEM_IDoptind_optarg_iob__ctype2__ctype__alnumoptarg_optind_end__iobkillfflush__filbuf_startchdirsprintfaccesstimessignalfopen__flsbufmallocsscanffreeftellisdigitrandfseeksystematofgetenvexitfprintfstrcmpcallocstrlenfclosegetoptstrcpystatungetcsrandpowatanfloorexplogacosasinmainstart_wamXZ]XZ]XZ]XZ]d@"Z]> ZZ]> ZZ]9 Z8 =@Y :Z @Z@ ZZZ] ZZ @"ZY :ZZ@= ZZZ@= Z ZY :Z]ya: =]: =]  : =@]ZBu ZZZZ ZZ]ya: =]: =]  : = @]ZB ZZZM ZZY :}@]Be]yZZ5@*Z@ya AZ@ya AZ]ya A @Z@] Z]: =] y a: =]Y(ZYY8Z@] Z]: =] y a: =]Y(Z YY8Z]Y Z @*Z@YA AZ@YA AZ]YA A @ ZZmZY] : : :@`898 t:` @A =Z 98@9?Z @? ]@? ]@?m ZA=?U @?- Z= ZA? ] ZA> > @> Z= Z> ] ZA>e z ZA>M  Z>% : ZA AA0 ] Z=!A:== Z=: Z= ] Z=e AAz Z=M  Z=% A: Z AA0 ] Z AA AA ZA<  Z<! ZA A ] ZA ]>!A=> > A=:A>q >Q!=>9 > A=?#Z>B @V   @  A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  :R @@@ @]@@@@k@{@@@C@ @V@ @V@@ @ :>B  @ Z A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  a@@@ @]]@]@k@[@]@[@ @@ @@@ : @V   @A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A  !A ˡF ! !V @JJ k?Ku=aKs=i k?#hh7{7K#+wh# 'y 4Kd?Eke?(43 `'y H? zG+4>DEFYXZ#/BZYX^k?#-B@@@@ BK?@ @@k?ok= k=k=k=!k=)k=1k=9k=Ak=Ik=Qk=Y+wDCGE4: @Y# )0BF 04 ?4 X4Y# %B7>I4ZX# )B *4 4Y# %BG>M4] BG>I4t *4 YX# %BK>ZX# *0B7=4`ZX# )B G= *4YX# %BK=K> K>K>)k?k?4 4 Z Y W# *pBL 2+4: 4` X# %BK>!k?k?4ZY4# *pBH 2+4: 4p X# %B@ k?k?44,Z Y# *pB 2+44:  X# %BZ N# )pBK>1K> lk=k=k?k=k=  +w4< +`h(( 4"( 4$+`k?4?Wk=Xk?k?4%hk?y7=k?q#-HBKK?K?K? @O?@ \@\B7 B??7@TS 44Z#*@7` Z# -H@_S@  4 "@@@@  4 "@R@@@  4 "@@@@  4 "@@@@  4 "@@@@  4& "@R@@@  4 "@@@@+`4!ph<4?@@@<@K?@ @Ku=Ks= k?Ku>Ks> k?Ku=Ks= k?Ku>Ks> k?Ku>Ks> k?Ku=Ks= k?Ku>Ks>  k?Ku?!Ks?) k?Ku>Ks> k?Ku=Ks= k?Ku=Ks= k?Ku>Ks> k?Ku>Ks> k?Ku=AKs=I k?Ku>1Ks>9 k?Ku=QKs=Y k?Ku=Ks= k?Ku>!Ks>) k?Ku?Ks? k?Ku=Ks= k?Ku>Ks> k?Ku>qKs>y k?Ku=Ks= k?Ku=qKs=y k?Ku=1Ks=9 k?Ku?Ks?  k?Ku>AKs>I k?Ku>Ks> k?Ku>Ks> k?Ku>QKs>Y k?Ku?Ks? k?/%0k?_@/0$K?@Ku?1Ks?9 k?/%/0k?_@/0$K?@Ku?aKs?i k?/%0k?_@/0$K?@Ku?qKs?y k?/%0k?_@/0$K?@Ku?Ks? k?/%0k?_@/0$K?@Ku?QKs?Y k?/%0k?_@/0$K?@Ku?AKs?I k?/%0k?_@/0$K?@Ku?Ks? k?/%0k?_@/0$K?@Ku?Ks? k?/%0k?_@/0$K?@Ku?Ks? k?/%0k?_@/0$K?@Ku>aKs>i k?k?_@/0$K?@/'0k?7_M7?K?4  Z ZuK?Y\@7?+wH?ןB@ןk?7+wH7_` X+w4: @_YK?Y@7?k?7k=_k= +`H?4 ZK=K= Tk?4Zk?+w49_7=+w4:p_7=_K= K<@7=k?7+wY_4:xK?Y@7?k?7+wX4: @+w_49K?Y@7?k?7+wX4: @+w_49_4K?Y@7?k?7+wk?_H9"aZ bKh RX7`x+w4: @+w_49K? r+w4: @+w49(_K?4: @+w49_eXXK?+`H7`+w4: @ +w49@_K?_@K?Y\@7?k?7+`H? K?Y@7?_4K?Yk?7_ @_u@K?Y@7?k?7+w 9H5 K(_`X KK@+w4: @+w49Xk? _}k?_@K?Y@7?k?7k?Y@k?K?k?@YK?k?@Y+`@7K?K?E \XK?Y@7?k?7k?Y@$k?K?k?@YK?+`B@7K?E YK?Y@7?k?ok?+wDk?4:k?@\Y+`h<C4@,4h|4@ 4h|Y@4h|Y@4h|Y@4h|Y@4h|4 @l4h|Y@L40h| 4@@,4h|(4P@ 4h|04h@4h|8Y@4h|@Y@4h|HY@4h|PY@l4h|XY@L4h|`Y@,4h|Y@ 4h|Y@4h|Y@4h|Y@4h|Y@4h|Y@l4h|Y@L4 h|Y@,48h|Y@ 4Hh|Y@4`HHwh|hY4ph|h|h@hwHzHHyhHx@wE\h|pHzPHyhHxE4@w4@,4K?K?h|xhx hy(h`K?YK?@O?k?7+w4:49_48Г 42+w4:49_]48 42+w4:(49@_4 4K?Y@7?k?7_4K?Y@7?k?7_u4K?Y@7?k?7_=4K?Y@7?k?7_4K?Y@7?k?oC_`@ _ 7_K?Y@O?k?7_uZ7K?Y@7?k?7_K>k?1k?9k?AY@XˀK>ُ *K?1k?)_@K?)K?1K?9K?Ak K K K  < 4k0K0k(k@k8K>@7?k?ok? +wCH9+wk?4_e47P04@Hk?0C@+w_H:+wH9+`h<04h<+w4z 447`_ +`0cH:_-40c4_}4+`h<07?0cEh78 4_m@ 4 ҕ  "4K>K? @O?+w_4:pˀK>k?7+`H=0H?84~ j7h48B74KVKA 3K?Y@7?+w_4:ˀK?Y\&4 X\u h\@k?ok? +wCk?Y7Zk?474_k?k?+w04K?4z4_4704K? _k?!k?+wXK?4zH_=47k?+w04K?!H9 k?)+w4zh4_47K?)04K>K> k?1_%Z :+w_ 4:0\K>K? @O?K?1@ ςK>+w_ m4:XˀK>+`H?8H70"JX "6J@\@4k?7+`H?0H78"KX J7K+w_ 4:\K?Y@7?J4H:87]?h=8k?ok? D4 k?4Hk?_k?! (C\K>K? @O?K?K?K?!7   44  42pJv?pJ|k7H k?4Z_k?0׀\K>k?7_k? \K?Y@7?K?_qKK?_YJK?_AKhK?_)K:_K?ςuK?Yk?7@ _]@7@04_@K?Y@7?@@k?ok>k>k>k>k>k>k>CD7E?@%k>+wK>48k>F_IZӟ%r+wG+wH4 24 6??@8H `H H H p@`@P@H 0H  @@@@@@@H @`H H 4_7?I K?I PiH_4_i7?Q K?QV iȬ_4_7?Y K?Y| iЬ_4_7?a K?a֡ `iجX_4_y7?i K?iׂ iଂ_4_)7?q BK?q`2?@*>y@8> i謂_4 _7?y BK?y`2?@*>}@>J i_4(_97? K?? Ji_40_7? K?i_4"X49848P47+wk?_4: @_e4+w 4_ 84?K>K>_Zӟ:?/+w+wH? @K>  @\K>YK>K>K>K>K>K>K>@O>k?7+`4:@k?+w49p4_4ZK?YK?@7?k?o+w4<k>C4!k>4b84k>4w4xk>k>_ k>K>K>k?+4yH? K>K>K>K>k?+`4:k>Xk?k?k?y_qk?qK>YK>@O>k?7+wk? 4? 47 k?+`h7+`4:k?+`_h?K? K?+`_h<_ k?+w4:_YYK?+`_ `  \K>@7?K? _K?+`4K?`9DK? ˀK>k?+`4Z_e`8K?+wH7H8H9_Uk?0׀K?K>k?7+xH9@k?+`4?k?_y4+xH9@_Y4K? *+w4: @+wK?_i49+`H7 @ K?@HK?K?_uk?_K?K?Y@7?k?7_%k?@K?_ZK?Y@7?k?o+w_H:+wH:+`04_h<`+wH8+`h<04+`h  X_k?K?K?Y+`h<P04_ S+`<04h?@@O?k?ok?+`CH?PD_k?+wH8+`H?@HP87=?  BHP b66hP 0HP b46|hP?tK?K?YK?@O?+x_I4:P]HPk?7+`H8+wW4: @+x_ 49+x_y4:_!4 K?Y@7?k?ok? k?k?k?!_WCBk?1@ :6=? ? ?+wH:D+`H<7W?  6t?  +`H?`F K?1_ iY rHH`6?4s  B 2?4sK?1_ Y?H+`H?` Z +x_}4: \K>K?!K?K?K? @O?+`@7 +`H% " K?1 0_K?1+`H=` +`H"+`H9+`@:+`4Xh8yHH5ЇМ `+x_4:˃K>+wH4_WX+`Y+`Z+`K5 :K]` ` " H<7?h37JK5@k?o4CXk?+w4: @+xK?W_49 +x_4: 0C_%K?J?# K?Y ?\@O?YP\7?KӸ  W@k?7+`K]]H?H+H7 +`H8+`H9P+`h?h7h8_h9K?Y+`h<@7?k?oC+`KY_ y+`4H8H7kP+E h7 _4DZD4Hz@hz0K?Y@O?k?7+`H9(EH:@ _K>\@7?+xk?)_!4: `K?)k?7K??k? :@ _!@K?YK?@7?+x_14: B@k?7T2_]276?KVX7? 84\ *\HBZ@ \?\JҺ@ 2 *VJҡ ?V'W'Rҷ%zUrK?ՇKK:"Jz7XxpUk?9+x4k?Y47 Xk?)k?A_ak?1K?1K?AK?)K?YK?9k?Y4k?9k?)k?A_k?1K?1K?AK?)K?YK?9+x4k?I47 XXk?Yk?)k?Qk?Ak?1k?a_i@K?aK?1K?AK?QK?)K?YK?IK?9k?I4k?9k?Yk?)k?Qk?Ak?1k?a_ i@K?aK?1K?AK?QK?)K?YK?IK?9+x47 Hk?IZXk?Yk?)k?Qk?Ak?1k?a_!@K?aK?1K?AK?QK?)K?YK?IK?9k?I4k?9k?Yk?)k?Qk?Ak?1k?a_ !@K?aK?1K?AK?QK?)K?YK?IxK?9+x4k?Y47 Xk?)k?A_k?1K?1K?AK?)K?YK?9k?Y4k?9k?)k?A_ 1k?1K?1K?AK?)K?YK?9+x4k?Y47 Xk?)k?a_!k?1K?1K?aK?)K?YK?9k?Y4k?9k?)k?a_ Yk?1K?1K?aK?)K?YPK?9 Ҽ8U UK?BKKk?9Jy77w"ˀK>ي?@!B@!KGk?9K?ZKK:k?9K6KJu6w 4W? 2 2<666U9?VҸ>@ A8BK?5:KKڜ'k?9Jx7bG6?4K>@7?k?7+wKW4? @+x49 x^Z_I4K?Y@7?k?7+`k?1k?9YDH:@ _K>\@7?K?1K?9+xk?)_49 K?)k?7_K9KhKkX4Z@7V?+`6VH3 S7Y649?uk?6(YKK @ 04K?Y@7?k?7_Ek?K?_ZK?Y@7?k?o+`C:H6 k?6H:@D|H9XK>4w74Y?3K?K>7(ZKk?K @HK>@O?k?oCk?_k? "+x_4: ˀK>HaHbhK?Hvha4Z@+`T7\?H3 k?)SH:@H9k?!Dk?1_K?)K?!7649?K?!K?1K?K?6(4\H}Hs HtHuHvj H}hwhxXK>@O?k?7K_?KY?KX?_7?K?Y@7?k?7_k? \K?Y@7?K?K]K_hKYXKWKk?@X7@K?Yk?7K_k?K :42K?J}K K?Y@7?_K? K?JK\ @\K?Yk?7_K]KSn@2n!j@j Jf@f d R` Z+x49 _X^4 \K?Y@7?4KkXk˙W44*KkXk˙ew4"EKkXk˙%k?7_KZKw 24:KkXk˙H+w4: @+x49 @^X^4"\K?Y@7?k?ok? k?k?k?!+`@@BH78H?0CZ7z4"KKKӳd ˀ(K>ˀK>Hu87KHa0D7_?@ 4&7HHK  B_Z *HK( 4BHv8  "Hb0F4?WH4K>K?!K?K?K? @O?k?ok? k?k?k?!Ck>K>k>k>k>K>H%пF@ @ @ K> p@ K>@K>K> K>K>PK>K>K>hK>K>K>K>K>XK>K>DK>K>+x+xXK>K>K>pK>K>,K>K>p@ K>K> K>@DK>K> K>@K>K>K>@ K>pK> K>DK>,K>dK> K>K>(+x$K>DK>K>$K>K>K>K>K>T@K>K>+xPK> K> (K> `+` K> pK> 8K>K>K>K> K>XK>K>K>K>w+`@K>LK>,K>K> K>K>K>TK>K> K> \K> K>K>K>\K>K>K>L+`\4K>K>K>K>K>K>|w4K>K>lK>K> PK>K>dK>K>,@K>K>tK>@K>HK>8K> (K> K>K>+`+`xK>+`p+x`+xP+x@+x0+x +x+x+x+x+x+x+xK> `+` (K> K> K> @K> K> @K>K>H@K>K>K>K>0K>K>K>K>D@K>K>K>0K>@K>hK>K>K>K>bx׀ ` BK>K>U 64ck>K>K>K>U66uK>k>6tk>` K>U H:K>K>_qY K>Kk>K>4c6k>K>K>U6KK>64?k>%k>U Jж hH? @G 2EHt G?E!BK>CJ?%K>KK:K>+xK4^47 ^ u4K>6J4? %4K>K> 4 4K>K>Jtk>K>64?k>5k>K>Jt K>Jk>K>C4?4k>K>JtK>K>U K>v6K>k>6Uk> JU?K>6tk>K>K>4?k> UK>K> 6k>U  JzJK>_K> K>H?k>K>6tk>5KU K>K>K>J aJU  57]k>` jK>UK>  #4K> 4c4? k>K>K>UK> 4?K>sK> K>6t4?k> Ek>` K>U H:K>K>_Y K>K k>K>K>4t54c6t k>K>K>K>U H?K>6K> K>u66k> k>` K>U JK>K>_9Y K>J uk>K> aJK>K>_4y K>J k>K>4c4? k>K>K>K>U JK> 6 JK>K>6tk>4?6 Ek>` K>UK> K>K>5K_y4y K>Jt k>K>4c6 k>K>K>K>K>U K> !5KK>6k>67k>`!Ht4cҕ EhH @G 2EH` G?E K>K>J H??K>JtJu:K>+xK4^47 ^%4K>6H?7 38K>J K>J=k>K>7k>K>K>JK>66tk>k>U H?K>K>K>JK>66tk>Uk>^4: $K>U H%п hHt @G 2EHҶ G?E K>K>K J?񊥀K>JJ:K>+xK4^47 ^u4K>6tJ68K>H? K>Jtk>K>6mk>K>H?U K>6%k>K>46u6k>k>k>7k>JҶ 5h4!?J` @A5 2TH5Ҷ A4?T4!?K>k>7 k>JҶk> "K>_K>*k>K>K>KpK>aK>+xK>K>4^E47 H^@ 4K>K>K>_AK> k>K>K>Jk>K>K>JtpJK>Pk>+xK>K>4^]47 `^@ LK>K>Jж %h5H? @Y% 2EK3t Y%?E5 K>6k>K>DK k>K>JUk>K>46-k>K>K>JpKK>ԀPk>+xK>K>4^47 x^@K>K>H?` ʟhҕKҶ @T 2_J3` T?_ҕ K>6k>K>JuJk?Y K>43 k>K?YK>JC7UK>64sK?Y 4c 37 k>U JС hH` @G 2EHҕ G?E!K>CH??倊K>JtJu:K>+xK4^47 ^Y4K>6H?7 34K>K>  ՘4K>K>K> Jk>uJK>U JtK>K>6 K>K>4%67 k>k>K>J K>Jak>K>K>KK>U JK>_4 CK>Jk>K>K>4 4c4?k>U Jж hH? @G 2EHt G?E!K>CJ?%K>KK:K>+xK4^Y47 ^4K>6J4? %4K>K>  4K>K>K>4Jtk>JK>U6KK>K>6 JtK>K>4?k>66t!k>K>J K>H?k>K>K>JfK>U JK>_94 CK>H?ik>K> JK>K>_4y K>H?k>K>4c6tk>U H%п hHt @G 2EHҶ G?E !K>CK?eK>JJՀ:K>+xK4^47 ^)4K>4?K6te4K>K> 64K>K> vJK>H&K>k>U K>K>7 aK>K> 664? k>ik>K>Jt K>J1k>K>K>H&4UK> 4 aK>C46k>U Jeд hHҶ @G 2EH? G?E`!K>CJ?񊥀K>JJ:K>+xK4^i47 ^ 4K>6tJ64K>K>  4K>K> H?K>JfK>k>U K>K>6 % K> 6t4?JK>k>61k>K>H? K>Jtk>K>K>J4U K>v H:K>K>^%4 CK>KQk>K>4c6)k>K>JK>K>U K>K>K>7H&K>U 4?K>sK> K>6t4?k>1k>K>JK>K> 6U K>K>JK>U JtK>K>64?K> K>6t4?k>9k>K>JK>K>U 6 K>K>JK>U JtK>K>6 aJK>K>7k>6 56 Ak>K>JK>K>U K>K>K>7H&K>K>U K>s aJK>7k>6 56 Ik>U6KK>tK>K>JK>K>K> 66tKK>U  47K>K> K> 36s7k> Ik>U6KK>tK>K>JK>K> 6KK>U JK>K>4?6tK>5K>66tk> Ik>U JtK>K>K>JK>K>JfK>U JK>K>7a H?K>K>6k>6t4? Ik>U JK>K>K>KK>K>K>6JK>K>U K> !5KK>6k>67Ik>K>K>H?pJK>Pk>+xK>K>4^47 0^ @K>K>JfK>K>JԀJ+xK>K>4^947 H^@(K>%Bk?a RK?aK>K> JK?a v 57?`?k?aK>K>K>K>4 k>K> ?JtK>K>6tJk>9K>JK>K> 6K?^ }JK>K>K>j4J? k>Bk> Xk?iK?iK>K> JtK?i 4???k?iK>4 tK>k>4?ԓ k>K>Jy?^ UJK>K>K>j4H??k> %Bk> Xk?qK?qK>K> JK?q v 57?`?k?qK>K>6k>^a4: ` K>^A4: K>` *K>7vak>K> k>V` (6t?A 6? ?K>7k>K>J K>v6k>K> 6 J K>Ju @T 2VJ? T?Vғ`0ҕVK> 6K>7k> H?` K>Kҡ @V 2_Jt V?_0_K>UK> J? K>aH4Җ @U 2AJ` U?AҴ0ҶAK>K>6tk> Jtk?Qҕ *K?QK> tJҡ @V 2TJ` V?T0TK?QK> K>4?k>K>K>6k?Q K>k>K?Q? K>6k>H%п h+`Ht @G 2EHҶ G?E+`H:@CY 0k>+`H:@CTH98 k> 4?Bk?y` JK?yK> JK?y 6t??k?y Ҷ ҡ8K> uK>K>JpK> Ԙ+xK>K>4]47 ]@K>H%п ehfHҕ @Se 2EJv Se?Ef4+`֓ H:@FC < Y 0k>+`H:@C H90k>K>K>JA  v4?ִBk? JK?K> H?K? 6??k? ? 38K> K>K>H?pK> +xK>K>4]]47 ]@HK>+`JyH:@C lGk> RK>K>K>CXk>+`H:@C H90k>K>K>JpK> Ԙ+xK>K>4]M47 ]@8K>^K>K>4?k>K>JtJҶ zK>K>K>K>K>h?X4B׀ K>jtJK>JtC 4^@K>K>H?JK>h?DJthk>6@6?k>K>K>k>K>43+`H6 k>4k>k?K?K>K> JK? v 57?`?k?K>K>K>6(K>k>K>H?K>J K>K>H6K>K>k?48Wk?iBK>k>K>J k>K>Kk>K>Jk>]4:K>6k>K>ChK> (k>+x]4:PeK>K>KUk>K>K>CK> k>K>Jk>K>K>J7k>K>K>k?66K>k?B6 k>K>JUk>K>K>J 7k>K>K>K>k?6Bl6k> K>Kk>K>K>J6}k>BLK>K>K>K65k>K>K>BxK> K>Jk>K>K>K 6k>K>J 7k>K>J@K>j07Jk>=K>J6 k>K>K>K>K>Dk? k>K>Jtk>+`H:@CH9}k>Jek>K>H:+`DH8K>7k>H:E+x]49]%HK>6k>J? ahsH4ҕ @Sa 2VJa? Sv?Vs` K>J k>K>6k>Kt ʳhҵJv @U 2_Jt U?_ҵ K>J5k>K>7k>JҶ 5h!J` @A5 2TH5Ҷ A4?T!" K>7 ]k>K>J =k>J? ahtH4ҕ @Sa 2VJa? Sv?Vt :u v K>4? ek>K>Jt Ek>J hJt @_ 2UK _?U6+` H:@C Y K>6t Uk>K>J 5k>K>H??Je?^ Ak?Q*!K>K?QGDWk> K>K k>w bK>U6KK>K>^Z :K>Jt k>K>U  'K>7 k>K?Qжҕ Bwk?Q `K>U K?QH9K>^K> :K>K -k>K?QU  4K>7k>K>J?J?ҡe^ aTk?Q!K>K?QGDWk> K>JMk>w bK>U JK>K>^Z :K>Jk>K>U K>6k>K?Qг? ִBwֿk?Q `K>U K?QJK>^K> :K>Jk>K?QU K>6k>K>H??Je?^ Ak?Q*!K>K?QGD@Wk> K>Kk>w bK>U6KK>K>^QZ :K>Jtk>K>U  'K>7Mk>K?QйҚֽBwֿk?Q `K>U K?QJK>^aK> :K>Jk>K?QU K>6]k>K>H??Je?^ Ak?Q*!K>K?QGDWk> K>Kk>w bK>U6KK>K>^ Z :K>JtEk>K>U  'K>7k>K?QйqҚֽBwֿk?Q `K>U K?QJK>^ K> :K>JUk>K?QU K>6k>H??b pK>J?Ҷ JK>K>H:?+x])49K>Kk>K>K>J?J?ҡe^ aTk?Q!K>K?QGD Wk> K>Jk>w bK>U JK>K>^ 1Z :K>Jmk>K>U K>6-k>K?Qй:Bwk?Q `K>U K?QH9K>^ AK> :K>Kyk>K?QU  4K>79k>K>J?J?ED k> K>Jk>w bK>U JK>K>^ )Z :K>Jak>K>U K>6!k> ]y@K>ӓ֓BU֟ H9K>K>^QZ bK>Kk>] @K>ӔִBUֿ6K>6t!k>H54 Fv8+`H?7Ftրt@k?QH6J4??`H+`H36tJ6B k?Q+`] H:k?Qw` pK?QK>UTB H9K>K>^q_ JK>Kk>K>ִBUֿ6K>6tYk>J?ж B+xK>Z]49K>H?k>+`H3Jt6?`Hu+`H!ж4?K6t v+`H9] 1кK>6Ak>K>H??Je?^ Ak?Q* jK>K?QDW K>Kk>K>6k>K?Q@K>H?ak>K>6tAk>K>J?H%?օ^ Uk?Q jK>K?QDW K>Jk>K>7k>K?Q`K>Jak>K>4?Ak>K>Jt?J?Җ^ Sk?Qj jK>K?QDW K>Jk>K>6k>K?Q`K>Jtak>K>6Ak>K>H??Je?^ Ak?Q* jK>K?QDW K>Kk>K>6k>K?Q@K>H?ak>K>6tAk>K>J?H%?օ^ Uk?Q jK>K?QDW K>Jk>K>7k>K?Q K>Jak>K>4?Ak>K>Jt?J?Җ^ Sk?Qj jK>K?QDW K>Jk>K>6k>K?Q K>Jtak>K>6Ak>K>H??Jt?k?Q4^5_ K>Jtk>K>J?J?4>t@>ֳBwk?Q `K>U K?QJK>]K> :K>J k>K?QU K>6k>K>K?J?k?Qv^ Sj K>Jik>K>J?J??>Utu@Җ6Bw?k?Q` `K>U K?QJK>]]K> :K>H?k>K?QU K>4?Qk>K>Jt?J?k?Qҁv^ aT K>Jk>K>H??H4?ҕ 6Bw?k?Q` `K>U K?QJK>]K> :K>H?1k>K?QU K>4?k>K>Jt?J?k?Qҁv^ aT K>Jk>K>H??H4?ҕ V6Bw?k?Q` `K>U K?QJK>]K> :K>H?k>K?QU K>4?k>K>Jt?J?k?Qҁv^ aT K>J1k>K>H??H4?ҕ 6Bw?k?Q` `K>U K?QJK>]=K> :K>H? qk>K?QU K>4? 1k>K>Jt?J?k?Qҁv^ aT K>J k>K>H??H6? ` ִBֿҿ S֓Bw֟k?Q `K>U K?QJyK>]K> :K>J k>K?QU vK>6 k>6?B 6?7+`w43 k?Q bK>U6KK>K>]Z :K>Jt k>K>U  %K>7 k>J?е B+xK>Z]49K>J Yk>K>пJe?k?Qд :е ж K>H? k>H` B+xK>Z])490K>J k>K?Q@K?QB+xK>Z]49pK>Jt k>K?Qw hK>U JK>K>]]Z :K>Jk>K>U K>6Qk>K>B K> K>H?k>K>6tk>K>BtK> K>Jk>K>4?k>K>C 4 K>JtQk>K>61k>K>H34K>C`K> K>Jk>K>6k>K?t @K>J?" @K>K?t K>J?JK>K?t @K>J?" @K>K?t K>J?JK>K?BK? E+`H3 K>JQk>w bK>U JK>K>]Z :K>Jk>K>U eK>6k>K>CP4 EK>JQk>w` bK>U JK>K>]Z :K>H?k>K>U K>6k>AK> EK>KYk>w bK>U6KK>K>] Z :K>Jtk>K>U  %K>7k>K>K>BK> k>K>JQk>w bK>U KJK>] K> BK>Jk>K>UH? aK>6k>K>K>B Ek> K>H?Ak>w bK>U H9K>K>] Z :K>Kk>K>U K>4?k>K>K>BEk> K>Jt9k>w bK>U JyK>K>] Z :K>Jk>K>U6K>6tk>6B? hEK>U JK>K>] Z :K>Jk>K>U eK>6k>AK> K>Jk>K>7ek>AK> K>J-k>K>6 k>K?t +`H%H%w bK>U JyK>K>]%Z :K>J]k>K>U6K>6tk>AtK> K>Jk>K>4?k>Jt?AҚK>6k>AK> K>H?Uk>K>6t5k>AlK>w hEK>U JyK>K>]mZ :K>Jk>K>U6K>6tek>J? K>K?t u K>Jk>K>CpY EK>Kk>4(k>K>K>CJ?Ew bK>U JK>K>]Z :K>Jk>K>U eK>6k>B\K> K>Jk>K>7ek>K>K>BPEk> K>Jk>w bK>U JK>K>]eZ :K>Jk>K>U eK>6]k>K>B`K> k>K>Jk>K>7k>J?е ж!2С !"K>K?t K>K>Jpk?ZB Y (G+x\4:K>K>k>K>YJ0J@JHB k? AK>Kk>K>J0j0w bK>U JyK>K>]Z :K>Jk>K>U6K>6tk>K>K>B HEk> K>Jk>w bK>U JK>K>]Z :K>Jk>K>U K>6k>K>K>BEk> K>H?k>w bK>U H9K>K>]Z :K>K k>K>U K>4?k>H3wJt hJK>U JyK>K>]Z :K>J=k>K>U6K>6tk>H5K>JJ?K> KK:K>+xK4\e47\ 4K>K>6J6t4? %%k>K>BK> K>Jk>K>4?k>H3Jt tRV6Bw hEK>U H9K>K>]Z :K>Kk>K>U K>4?k>K>CEk> K>Jt}k>w bK>U JyK>K>]Z :K>Jk>K>U6K>6tk>K>C,Ek> K>J}k>w bK>U JK>K>]Z :K>Jk>K>U K>6k>K>K>C Ek> K>H?uk>w bK>U H9K>K>]Z :K>K k>K>U K>4? k>K>CK> K>Jt }k>K>6 ]k>K>K>BdE (k>+x\ 4: K>w bK>U JK>K>]QZ :K>J k>K>U K>6 Mk>H! wB hEK>U H9K>K>]yZ :K>K k>K>U K>4? uk>AK> EK>Jt 5k>w bK>U JyK>K>]Z :K>J k>K>U6K>6t }k>AxK> EK>J =k>w bK>U JK>K>]Z :K>J k>K>U K>6 k>AXK> K>H? Mk>K>6t -k>AK> K>Jk>K>4?k>AK> K>Jtk>K>6}k>\M@w hEK>U JK>K>]Z :K>Jk>K>U K>6k>H%?п K>Jtuk>K>HJ?ŀK>H?H3:K>+xK4\47H\m4K>K>J4H?K>6tJ6K>K>H??6t ]k>K>J?J?J?8\ K>Jtk>w h7K>U JyK>K>]9Z :K>Juk>K>U6K>6t5k>J?\=6? K>H?k>K>6tk>])K> K>Jk>K>4?}k>Jt?]6? EK>J5k>w bK>U JK>K>]Z :K>Jk>K>U K>6}k>H??b K>JEk>K>J?:]k?Q K>Kk>K>6k>K>J?K>K>K>?]9k? ˀ(K>K>K>K>H?JtXKJk>k>k>6tk>+x\4:h K>+x\m4: K>K>K>K>K>Ck? k>K>Jek>K>w hK?K>U H9K>K>] Z :K>Kk>K>U K>4?k>] K>(K>]9K>eK>K>K?!K?K?K? @O?k?o4\Z+`h<x_4H9x 7_H9xH:x4c_~H6xH5xH4xbfH3x H=x H:x_H9x?H8xc8H7xb"H#x`H"x`_$H<xH6xb&H5xb(H4xb*H3xb,H=xc2H:xc_6H9xc?.H8xcbH7xb0H#x`4H"x`_k?I\ qZ `K?I7 ?4?cD! X \ Z? ?K?Q` 04K>K?K?K? @O?k?7k?7?_]k? *K?ןBןK?Y@7?K?]K?K?YK\4*K_Ӵ K4K?aK?YK?QK?IK?AK?9K?1K?)K?!K?K?K? @O?k?ok? k?k?k?!+`4h3EDK>k?1FGHK  YU@@+`+` (+`+`P+`+`+`+`+`+`+`+` +`+`,+`+` +`h+`+`+`+`+`+`+`+`|+`l+`\+`+`+`,+`+` +`+`+`+`+`+`+`+`+`|+`l+`\+`L+`<+`,+`+` +`+`+`@+`+`+`+`+`+`|+`l+`\+`L+`<+`,+`+`PHb+`d+`+`+`+`+`+`+`|+`+`\+`L+`<+`,+`+` +`+`+`+`+`+`+`+`+`|+`l+`\+`L+`<+`,+`+` +`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`+`+`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`+`+`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`+`+`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`+`+`+`+`+`+`+`+`+`+`x+`h+`X+`H+`8+`(+`K?1H+`H<-zHt4Jֿ֠?+`H<-BH7-BHv6?KH-4Z Gօ p4? vH|K@U VH? JH|7?J "4X ] RHu4f6?Jt "4n S9Hx7?K9Z}@_YH@Hx@EAY+`H5 _H 5 HvK V"zK H k\!JHw!*K4(K:\ 4&G 24+xk[4:ˀK>7?6?*K Hg4?K Jր VHg4?J` `\  4* 5AK !k 424&Hy K4ր V6HvJa B p4 y%Hg4 yHyK=נ Z:HuJ% ]K K He4(HF ` x] HtJ BZ p7Y ykˀhK>ˀXK>+w4: @K?14k+x49[MW+x[4:0ˀK>H! 4EK?1_MYK?14CY 0+`H: HxA D@ B+`H@AH9 K4.@W_ p6? bˀK>+x[4:ˀK>H8 :K?1_-Y p4 e ˀXK>+`H4 bHs Jtҁ Xx& HtJU?WˀK>+`H' jHu JYЦK?1 V_ p4 bX \ˀ0K>H"@"H7 Hb4_?Kf 4V \E p7? fHgHU_F H&1Hs6?K01Z4T X8 Hy7??K ׅ p6? eHfHU E H%0H}7?K0j<PHae H5ҵ uE %ˀK>H6"*H7 H|7?K 4F B p7? bHeHU B H"D/HHz7_?K/4D Y Hx7?KB 4N F֥ p4? |HbHEԠU \ \H!$.JHy7??K."4L ZH|ץ KҔ B ˀK>ˀK>ˀK>َ!Hw6?K$!r4B We p4? uHvJ׀U |UH? BHv6?Jt   RHt4f6?J "4j T H,:Hw6?KL,4l U HvE Js SA H5!H7!Hu6?K(!4J Xץ p4T? tHuJU TH? JHu6?J "4H V  RHs4f6w?J] "4r \ H*:H7?K,*4t A ˀK>َ!H7?K!r4R YE p7? sHtJ֠U USH? JHt6?JT "4P B RH}4f7?J: "4v E(zHg4?K(R\8Hu% Jӽ =\H= H4 rHx7?6 JH= 04\4 4\ Z% H}K <WHsJgU _ˀK>H:@'H' H|4:7?Kg  z r4^ EF Hs6v?Jӧ GF p6? aH} K׆ v_H}KU GH7!Hu4:0 B ڌ K?1_YӘ Ӂ4AHgK> 0H2 4`H}7?J& G p6? |Ht JK?1E U_Y p4A a <+`H? jHs JaK?1"Tt_1Y p46 vˀ`K>H7 ZH} KK?1 Y p6 uˀK>օ HV F FH3` HvE J4 \_Y p4 h3_ Hz 0hˀK>ˀK>H? HbHX F F!H} K4 V ZHwH& J7?@U X8ˀK>K?1Hx@K4?U! ?Y+`H3`!JHzԥ K]ӵGGHzKEԠ %_P_+`H:@ Ht JZ VHzH}(+`H%Th%+`4bH:x4D jHC4dX DˀPK>ˀ@K>+xY47[ 5X׀\K>K?!K?K?K? @O?k?o+Ch +`4KS4Jv4$ ]}H<xPC+`Y ] z+`H5 k8+`k7k7k5 HsJtր \|H:@H9 @7AHxHv+`6 bH5 UHa4" bK?Y@O?k?ok? k?k?k?!CKTk>6?`U7ZK]7SC4F: [YK>K?!K?K?K? @O?[)Z\4F[ K>K>K>4H4D4`HwG6? y `H7 C_?K>و?Hw?HwHe4?- dK>4J7C[K>\]@k?o+`4@=H5 k>+`h 7>+xk?497?a[A7>!Y_ 7>k>Y_ 7>!K?a+`B@7K>AY +ZK?aKX +xk?49+`@77>!7>+wk?4: @C[k?+x[e4:@K>K=+`\h4@O>k?74b_z X_Z(K?YK?W_k?K?Y@7?k?ok? k?k?k?!k?)k?1k?9k?Ak?Ik?Qk?Y+xCE[49D!(k?[1Z+x[4:+x[4:ˀ(K>4:[49 \K>K?YK?QK?IK?AK?9K?1K?)K?!K?K?K? @O?[K?܁[K?ɼ2[K?|+x4:[Y_mZ4 +wK?K?K?K?I+`7675JH5?`5 I6 B!H4L[Z<+x4:[a49 \[K?IWk?ok>k>k>k>k>k>k>k>k>k>+`4h=D k>E"C+xG4~4 4k? CG_K"Z !h4 4l  ? b7, _ YIS5k6t T| 55?  cFw k?+w4: @k>4P[ X``j4,m Y   K>k?4[ k? Y[4 c >'k?+`WH:+xK>[ a49+`[!H:4K>YK>K>K>K>K>K>K>K>K>K>@O>ˀK>Yk?7+x48 k?+xYW_%4:h 4B+x48 +xK?4:x_4 4K?Y@7?k?7k?Z_k? \K?Y@7?K? _K?K?YK?_MK?K?Y 9 J RY799@k?7XKZ?Y" _`J+`H7 @2H8(Y\ K?Y@7?+x[49K?Y+x[49K?Yk?7XKZ?W rY b+`H?`][ I Zˀ@K?Y[Y K?Y+x[49 K?Y@7?k?7_KZ?X] K?YD Z` J+`H7`[ y 04K?Y@7?+x49[ZK?Y+x[49pK?Yk?oKC?k?y$ z@ r+`H?`x[ ςhK?Y+xK?49X[Z0K?Y+xK?49[ZK?Y@O?k?7K_?k?" @k?+xK?K?[149K?Y@7?KW? 0Z+xK?[49K?Y[ ςuK?Y+xK?K?[q490=K?Y 9 J0 XRY799@k?ok? k?k?DCK?k?) k?!x K 2 *_J ?_D 8W H? C‡"B2"ڇAʇ!jA @:#z[ @+`H6h<ȼ K?!4_XK?!E4_X܂`EBˀK>K?)4_mXK?)E4_}X܁EBHz4_XHzE4_%X܁EBHzY_XHzEY_X܁HEB+`H?P+`H7@+wH= } w +`H:H+wH97T  E ZFHz04_XHz0E4_X܀@EB+`H8+wH< EBHK?)_[X ˀ`K>FBHK?)_[X0׀4@\K>K?K?K? @O?k?oKX?K_?D!*`! z j+`H7`+`H:C +x Z49Y K9h+` ?RW6H:`U +`H:C+xZm49Y+x[ 4:ˀxK?Y+`H9`+`H:C4 +x49ZY[MHzK?Y@O?k?7_7>k=ZZ 2+x[4:\K=Y@7=K=Zm7> ςK=YK>AK? X4K=Yk?7_KZ?XW r jK?+`H7`Z ` " R_ K?Y@7?+x[Y49 @K?Y+x49 [)ZK?Yk?ok? k?XKC?KY?w p? b+`H7`u hk?!+`H<hD!Hh+x49 [9ZPK>ُ"+`H6hD"H`h Z+xK?!Z49 x HEHH@Y@X! hhˀK>HH@YHpE?=@+xK?!Z49  XEHHY@X?Oh+x[4: XˀK>+x[4: ˀK>+x[4: ˀpK>ˀ`K>[i4: ˀ@K>ˀ0K>+x[14: ׀4K>K?K? @O?!+xK?!Zu49 ?=EHP@Y@X +x[y4: ˀUK>HP@YHpE\?=@+xK?!Z49 >EHPY@X>_+xhhk?oWXKZ?J?_4 7 8Y+`H:Z-X `\ Z+`H:ZX R`P\+x[49 80K?Y+x[4: ׀\K?Y@O?k?7K_? :+`Z]H:לBןK?Y@7? "+`ZH:לB+x[4: ˀK?Yk?o_@!@ *+x[i4: HK?Y@O?+`H7H3Cw rHzH@HyHxp J HzH@HyHy@@wZHzHHyhh%hy+`H=H4C *HzPHy@HxpZHzHzHxhhzhx+`ZuH:K?Yk?7KW j_+`H7`+`H:Z +`ZH:K?Y@7?J@?+`?w+`WK ?O+`?W-+`k?7_KW?k?a +`H:`V K?K?K?:K?ak?^=X0׀4K>@7?k?)+`H=+xk?Y49 Z%ZK?)%K?Yk?7_k?7 4 4k? 4 4!3! XT W  K?K?  JK?K?ӓ x@ 4\K?K?+`H?`AҶ Z "K?K?4 _]@ 4K?Y@7?k?ok? k?CDKEТ@ 2 *CHм ?CH4 2$ *DK9? $?Dз k?!+`H=x "3b +`H:x: _Z K?! С k?) x4K?)Šbe_e @4K?)e K>ZATYK>K?K? @O?k?o_CK>K>K9k?=Zk?! 8k?? *_K9! ??_7!J 4k?) K?[K? :K?!K?K?[}4 "ˀ(K>ˀK>׀\K>@O?6K?K?[ Y RK?)K?!<BK?K?[??w\ˀmK>ˀ]K>KY7 2: *WK9"@ 7?WK?!J :K?! *XJ@ ?XB!b:B H!RK?K?[Z>G\ˀ=K>ه@>@4W3  U7?  u78? cYK?K?[Z=\ˀK>+w4: @+xZ49 +xZ4: ˀ5K>ˀ%K>ˀK>k?7X X_+`H:+xZ49 +`H<K?Y@7? "+`H7` @\K?Y+`H=H?= W7XKZ3` 2: *ZK9= :?Z6 9"77KY< 2: *ZK94 :?ZH55?7XH33 ˀ4@\@k?ok? k?k?k?!FCK%K>k?9ЧD 8k?1 *FHС ?FH 2 *DH ?D k?AZ_uY +`H:^YK?9K?1Y[Z 2ˀ8K>K?949 xZEZ@\K>K?!K?K?K? @O?Ц _Z CZ h+`47H84c4B?3`?H8+`H"K?9K?1Y b[14c>\ˀK>ٌ 2K?A "+xZ4: ˀK>ل>E+xK?949 8ZZMK>k?7+`H77_W7K7?@ JA BD Kp܀667JӴ 2 *WKӳ` ?W?wKpK=?K?Y@7?+x474ZmZˀK?Y+xZ 49 K?Yk?7_K=?Ӷ 2+x49Z ZK?Y@7?KWV7!7+xZ %498K?Y@ B ӳ` +x49Z ZMK?Y$ U7 5ZB@ bY ZYKZA :Y?Y(Y4?K:ZY "?=@?-@+xZ 49`MK?Y474ZZˀK?YӶ! SKӵ ڋ?S7J}ӵ 2 *SKӴ ?S rTKp6\+x6}6sa7 >J}]?Kp4W]GӺ+xZ }4:ˀK?YK8?K?? K7? ?J= X3=4 `T7\T@* 79_7 J 0ˀ"ˀX7\W@k?7K=?K??ӳ;}KbD \K?Y@7?;K ˀK?Yy 744 ˀK?Y|t  |V XV7K?_k??@h|XK?K>@O?k?7_7KT6?UKK_K:?VKZ\ *+xZ49XK?Y@7?K]׿?K:?] "+xZe49K?YW  H4?@KKxJ"RT643@Ҝd |K\k?ok?CKKK6?ā0 K7!2_4 `   B \Hb XK?YK?@O?HsK9Jtk?6?_Z?}X+xZ4:hˀ}K?Y+x474ZZXˀ=K?YJ@>4>4WK>4?We4k?o]7K_HsC s6yK0 u sKJ |KA4" B[ K0׀\K?Y@O?7?? B<UW ( 8 ?t78 : @6k?7WK:?B@!KY< = +`H46 ]7?67 7B6]X ( : ?Y9? K?Y@7?+xZ49K?Y+xZ49K?Yk?o4SKZ?_ C_@ 4?HC` +`H9K?K4]Җ bJzJ|Jz6wTKJu6J7K _]K>\@O?+x49(ZIXK>k?A+x47`k?94Xk?iZQk?IK?IK?iK?9K?Ak?94k?Ak?iZk?IK?IK?iK?9K?Ak?ok? +`_H:]KUJ?JSxk?q҃` ZJzJw"Jb6 T6vJd J7+`7H54d4Z cYXk?yW[I  ˀ@K>+`H=K?qKK?ydK>K? @O?k?9+x47k?A4Xk?ik?QZk?IK?IK?QK?iK?AK?9k?A4k?9k?ik?QZk?IK?IK?QK?iK?AK?9k?7]KZ?_BB!bK?Y@ B! JS`!B AjTZK? JtrҖ ZKK::K6x7KXJ64K?vK>@7?+x49ZZIXK>+x49ZXK>+x490ZX]K>+x49ZX-K>k?Y+x47k?)4Xk?9Zk?1K?1K?9K?)K?Yk?)4k?Yk?9Z k?1K?1K?9K?)K?Yk?7]KZ?_\!K?Y@ B  JS` A TK?K?Y  4K?Y@7?+x49@ZZXK?Y+x49ZXK?Y+x49ZYX]K?Y+x49Z)X-K?Y+x49@ZXK?Y+x49ZXK?Y+_K +`H8\K 7:@k k?7+`H?H+wW4: @+x X49Zq+xZ4:Z4 K?Y@7?k?7+wZAH:+wH:+`Zh<+`H9+`7 44?_h8H 4K?Y+`h?X@7?k?7+wk?a] :H8k?i+`7?H7H V  S +`H4 \ J \ J" j7 A R U J 2 \ ?7J"?7+`H: S zJ!2 7`Rk?Y+x4:0k? k?)_k?1K?1K?)K? K?Y+`H4+` tW+`H"K?a b4H"+` bK?iH6HJX6h9H @\K>@7?k?7+wH7+`H"H :6? _  +`H3 T tJ@ Uu V J< j7  R A aJ 2 Vv \?7J!?7+`H7 \ A  B K7 2+xZ 4:@\K?Y@7?4+wH=+` :7?H7  S T  A Jv6 +`H5H  7  \ A  V Jt4 J " U Jt?7@\@J|@J|k?7+wH"+` :4_?H7  T U  \ K!!" V J@ ˀ+`H3H } 7  V \  U HT4 J} " T H5?7} *\P48+x_-4:ϟK?Y4K?Y@7?_ +wH<WX+`Y+`4K4X 2H= T  ]667ZKwK4X@H6WX+`Y+`Z+`4K4X rKS Uu RH4H 6?h<H`KS K\ 67KwWK4X@k?ok? k?k?k?!k?)_HK8? B\K>K?)K?!K?K?K? @O?K7?B ˀK>+wTH!S +`V+`B+`C454JX HXJ#$z sZ Hg@#J7J+x47k?YZYk?qXk?ik?yk?Zk?aK?aK?K?yK?iK?qK?YK?k?Y4k?k?qk?ik?yk?Zk?aK?aK?K?yK?iK?qK?YK?  X BHa l 5 HYK"!Hy 6 Hx l  b ZGJ :?G(?HW A:*Ha7!@! Kp(Ok?HZ sYY >?HxHz 5 Hy Ul Ha  @Y BH|6 l H| 6 4J6s4+`H%5 +`H? jH7 ZH8 JH9ȃ: JH=Ѓ :H3؂z :H4 *@\@H<@H<@H<k?7_ XZ B 2`"4 ``_@@\K?Y@7?k?7k?9k?Ak?I_k?1 k?Q\K>@7?K?9K?Q_7? ˀK>ُ ZK?+`H"K?I __K?9K?A_K?Q2+wH8+H? +`H7H Bw`(+xk?)_ M4:K?)K?+`H9 ZT 4K?9K?IS+`K?Jz V VK?Q] ZK?Js A a+`H<HKXK?K?1K?A7h"H _ k?)K?)K?9K?1k?)+`X_ mH9` PK?)+`H:`K?9K?1_ -Y+H8 7h9 ς K>k?7_KW?   JK?   JK?  @ J+`@7K?K?_K?K?Y@7?k?oCK_?k? k?  K wH?   K x7?Hz?_Hy? j+`H7XK?K? 7 :+`H6 Z+` H?K!ʏ 2+xHz?K?Y=49HK>ُ!J+wH"+`H4HU] T`+x_}4:xK?+`H5Hx? sY W+`X_+`K?JHz? X 8:K?J TT6H3HKXK?6sh3H K?]+`K?H6 Y XJ+w4: @+xK?Y49+xHz?K?YE49K>@O?k?ok? DK_?KC?k? k?  K H?  @ K H?X!H?4!_ 7? j+`H8XK?K? W :+`H6+` TH8 K!r!ҏ BK?+`H9+` WH5 7J!  :} *K?HS@cRK?H40:!j+`K?H7 sD #+xK?49YZXK>+xY4:ˀ0K>+xY4:ˀK>+w4: @+xK?Y49+xH?K?Y49XK>+xH?K?Y49hK>ˀXK>+wH"+`VH4HBV`+x_4: K?H?+`H5 sS _+`WK?KH? ] =+`K?K _K?H:HJX7VK?h6H ?]4K>K? @O?k?ok? DH?H?k? k?  K H?  @ K 7?H?_-H?!+`H5XK?K?  +`H7 V+` H8K w  :b@ *K?K$@K?K0r4K>K? @O?ˀK>+xH?K?Y49 K>+xK?49 XYZmK>k?oCY@ `]Yk?K? wK?Y@O?k?7+H= k?_ek?+H8 _K?7K?h9 H: K?Y Sh4 @7?+`_K0+wUK0H7 CӴ Ǔ27k0CӼ Ǔ_7@ 4H 7k0@X K0Cӳ |R4H= B4X 24P} "4R 7k0@W K04@6KW\@k0K0+wBXSk +w4H=    ҳ3U 4K04Bt K06k0@S` 4K0Bҡk   ҕ  V K0@4t K06k0@T?oK0K0@!+`_K0+wWK0H7 CӼ Ǔ27k0Cӵ Ǔ_7@44= 7k0@X KY\@k0K0+wBXk +w4H: S   } aS` K04B K06k0@S` 4K0Bҡk A  ҕ  V K0@4t K06k0@T?oK0K0@8+`_K0+wWK0H7 Cҕ ǝ27k0Cӳ ǝ_7ǽ7k0@X K0C] dz7k0@X RK0C ǡ7k0@X?K0K04@4KU\@k0+`_K0+wBH8 ҹ Ǔ26k0Bҙ ǝ_6V6 ˀ6k04@k?o4k?4R_k? _4X bK?7Y@k?! @CK?K?!KW6_MXCCK>\@O?k?o+`4H?k?__4!2_4 r@07? 4_4 4K?K?_u4X @7? 4_7? 48K?_K?K?<@CK>\@O?k?o k7 4Ck7A_}4 :_e4"j+`H4K7A77Y_77a 2K7YK7a_XK7Ap <77Y_77a 2K7YK7a_5XK7A \77Y_77a!Z_U4P! _77y!CK7yk77777k7Z_k79K79!hCK7YK7aK7_k79K7AK79K7Da7 4K7$ \K7YK7aX_K7A @C\_%77i 4_U77q 4(K7i_K7qK7A\K6K7 @O7k?7+`h90+_h? _E7? ˀ0K?Y+H7 K?H< K?Y@7?k?7+`H?`8_- K?Y@7?k?ok? k?k?k?!k?)_E D_+`H7H3C+wH4 w6?`+xY!4: K>K?)K?!K?K?K? @O?H ?O+`??+`EK?+`?E+`#BHh6hx4+`Hh4$0 +xX49 YQZHu 66hh 0Hh ?5hy? Ha4'?Ehg+`H4 6hg44Hd4hb H(+`4$0+x Ӹ49 Y)ZHt <6hf 0Hg 74hx? H|7?hfH@_K>6he44Hb4\h| A+`H@4$0+x x49 Y ZHs !6bhb 0aHf 84hw? Hv6?he +`4$0+x49 Y AZH} "7h|@ 0He 94h ? Hu6?5hd +`H%` 6$hz 0Hd:4hh@? Ht6?hbHu j6hv44k?1Y_}K?17:\!H}+`H:`A 6"hy@ 0Ht56hw?H47?hv64PhxǀP4XY_m Hs46hǟh_%YH}4R7hb!! ZK ?ZHfK_ 2 *ZK ?ZH} 4XH}7F7hhZY_4F>K__Hf?H}Hs 2H}47hvY_mHs46dhdtk?7+`H?_ h?+`H76h8K?YH<@7?k?7+`H7_h7+`H?Y7h8Y-H:K?Y@7?k?7+`H7k?_h7+`H?K?7h8+x49 (+`YH8K?Y@7?7?7?.pJJ^k?: SZk?B65BK?6B7K?@ <77A?779?7?:d7? U _V/@7?k?o7?0Hk?C7?q_7?y+`H7x4| wK?q xK?y yK? zK>@O?k?/,oW_ @C7?A0H&00 K" :7?A0H&0P0 +`H8x!BKK_K0H @0H  2c7?A&00 H 27?A'00+`H6x *HzHy_Hx`4+YaH: ˀK>+Y9H: ˀ`K>0H441 0$ A0 "0$ Z BK>O?@/0,k?/,opk>C:D!k>7>0H&00 П"RЁ7> $00K>6?m@@@@@@1n@x@h@1 1 1 1 1 1 ˀXK>Y K" :7>0H&050 +`H7x *KK_uK0H +Y H: ˀK>Y+Y H: ˀ`K>Y H 27>'00+`H6x *HH_HEK>+Y H: ˀK>Y+Y H: ˀpK>Y11.1N0$ C˃ K>Y0$ C˃K>Y0$ C˃K>Y0$ C˃K>Y0$ C˃K>Y0$ C˃K>Y7?k?7?q_M7?y+`H7x4| wK?q xK?y yK? zK>YK>O>@/0,k?/,/-o`k>CK7?K?? K$? 8Jd!*!+`H8` C" k>7>0H'00 П!Г7>&00K>4W"RK>4؋8"*X0H0H X1H 1nˀK>Y K :7>70H'!00 +`H:x *KK_=K0H +YH: ˀK>Y+YH: ˀK>Y H 27>&0=0+`H:x *HH_MH0H+YH: ˀK>Y+YH: ˀK>YˀK>YX1H0H7?k?7?q_7?y+`H!x4| aK?q bK?y dK? K>YK>O>/0-@/0,k?oCK7?K??  8Jd  r+`H8` C" Hk>7>7'!00ˀ(K>Y$K 27>X'A0@0+`H:x#KK_K0HK>7?{@@@@@@@@@@@x@h@X@H@8@(@@P@@@@@@@@@x@h@X@H@8@(@ @@@@@@@@@p@x@h@X@H@8@(@@0@ˀ0K>Y+XH: ˀK>Y+XH: ˀK>YX@07?!,@K?!K?)k?qB ˃xK>YX@7?X@7?X@7?XU@x7?X@X7?X%@87?X@7?X@7?k?0H7?q_ 7?y+`H=x4| }K?q tK?y uK? vK>Y@O>k?oCK??  @ K4K??   K5K??   K6K??"!JK7?!2!"K8?! +`H9`+`H:= k?+xX}49 p+`X=H:7?qk?0H7?a_U7?i+`H9x4| yK?a zK?i }K?q sK>@O?ˀK>k?7K?? +`H7xK jKK_5K+`H:+x0HX=49 4K?Y@7?ˀK?Y@ @K?@ @k?7YQ@ 4 4 k?@H@ 4 YK?K?Y\@7?@4k?7+w_+H9 X 7 @K?Y\@7?k?7+w_+H9 X =7 @K?Y\@7?PX)X)+X+-dX-h.H../////////2 02444(4,4t4x444444445554585T5X5l;T;;;;;; >>t>x>>?$?(AABBBB B8B<BTBXBpBtBBBBCpCtDDDDDDEEE$E(F,F0FPFTF|FFFFFFFG,G0GGGGHHHDHHHHHLHLHPKKKKLLMMMMN$N(NPNTNNOxO|OOOOPPQQQQR`RdRRRRSXS\SSSSSSSSXXXXXXYYYYYYZTZX[P[T[x[|[[[[\\\,\0\\\\]\]`^l^pDHlp ɘɜ`dx|h l̬̰p t   8<dhѐєѴѸ$(ҐҔӔӘ,0PT( L(Pؤبڀڄ $ $TX X\ݔݘ04$(HL`d`d$((,dhtxHL|LP $pt$(lp48X\,08<HLHL48X\ $`d 4 8              ,0pt$(`d$!("B48<X . 5p 5 8p 8 88 9 90 9H 9t 9 9 9 9 : :@ :X : : : : ; ;$;D@ @@@q@u /lib/dld.slERROR couldn't open dld.slERROR reading dld.slERROR bad magic number/system id for dld.slERROR bad dld.sl hpux aux header (text) (data) (bss)crt0: errno: @  Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programeditbp_stateeditor_filenoname.plbp_stateversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%u%u%u%u%u%u%u%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s%s interruped(%ld)...restarting @string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifytrailing in unifytrailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d trailing in unifytrailing in unifyunexpected push_variabletrailing in unifyexecutionexecutionexecutiontrailing in unifytrailing in unifytrailing in unifytrailing in unifyexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETexecutionexecutionexecutionEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2trailing in unifyerror in bb_list/2value trailingUnexpected: ISO I/O oprationUnexpected: blackboard operationexpected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loading%s unable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1rbhdef in seewbhset in tellwbhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arity%ldboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingvalue_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityvalue trailingchange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYS(75%)Stamp found %d, expected %d hash op on protected objecthtable full in hash op(75%)arg 1 of hash op should be nonvararg 2 of hash op should be nonvarStamp found %d, expected %d hash op on protected objecthtable full in hash opunsafe data in def/3 or set/3(75%)def/3 expected before set/3, rm/2unsafe data in def/3 or set/3string buffer (-i option) exceeded or infinite term%ld%ld%ld%ld%sbad arg in arithmetic operation%ld%-se%-ld %f@'@'@'@'@'prolog:$end0_truecuser_bpc.c not compiled with -D C_INTERFACE @ @,@4 @8@<@D@LB@P@T@\@d @hB@l @p@t@|@ՀB@Մ@Ո@Ր@Ք @՘B@՜ @ՠ@դ@լ@մ @ոB@ռ @@į@̰@ @B@ @@@@ @B@ @@@ @ @B@ @$@(@0@4@8@@4 @8@<@D@T@XJ?@\ @`@d@l@|@߀J@@߄ @߈@ߌ@ߔ@ߜ@ߠJA@ߤ @ߨ@߬@ߴ@@@@JB@ @@د@@@@JC@ @@@@ @@@JD@ @ @$@,@4@8@@53@54@5@5@5 @5$3@5(@5,@58 @5< @5@@5D@5L@5T @5X @5\ @5`@5l@5p@5x@5 @5@5@5 @5@5@5@5 @5 @5@5ܯ@5@5 @5@6@6 @6 @6@6 @60@6D @6H@6T@6X@6`@6d@6p@6 @6@6@6@6@6 @6 @6@6@6İ @6@6@6@6 @6@6@6@7@7@7 @7@7@7 @7$@7(@70@7@ @7D @7H@7P @7T@7p@7x@7@7@7@7@7 @7@7@7 @7@7@7@7@7@7̰@7 @7 @7@7@7@8 @8 @8@8 @8$@8(@8,@80 @84 @8< @8@@8D@8L@8` @8d@8h@8t@8 @8 @8 @8 @8 @8@8@8@8 @8@8@8@8@8 @8 @8@8Я@8@8@8@9J@9@9 @9@9J@9@9@9$@9(J@9, @90@94@9<@9P @9T@9X@9\@9d@9hJ@9l @9p@9t@9|@9 @9 @9 @9B@9@9 @9@9@9 @9 @94@94@94 @9@93@9@9@9@93@9@9@:@:3 @:4 @: @:3 @:@:$ @:( @:, @:0 @:8@:<@:@@:D@:H@:L@:PJ/@:T @:X@:\@:d@:t @:x@:@:@:@:@: @: @: @:@:@:@:@:@:J@:@:@:J@:@:@:J @: @:@:@:@; @;@; @;@; @;(@;8@;<@;@ @;H@;L@;T@;d@;h@;l @;t@;x@;@;@;@; @;@;@;@;@;@; @;@;د@;@;@;@; @<@<@<@< @<$@<( @<4@<8@<@@ @>@>@>@>0 @>4>@>< @>@@>L>@>P@>T @>X@>\@>d@>| @>@> @>@>@>@> @>@>@>>@>@> @> @> @>@>ܯ@>@> @>B@>@?@?@? @?,@?0@?H@?T @?X @?\B@?`@?d @?h@?l@?p @?t@?x@?| @?@?@?@? @?B@?@?@?Ȱ@? @? @?@?@?@@@@@@@@@@ @@$ @@( @@0 @@4@@8@@<@@P@@T @@X @@\ @@d @@h@@l@@p@@|@@@@@@@@@@԰@@ @@@@@@@@J5@@ @@@@@A@A @A@A @A$@A(@A4@A@ @AD @AH@A\ @A`@Al@Ap@A|@A @A@A@A@A@AЯ@Aذ@AB@A@A@A@B @B @B B@B@B@B@B @B4 @B8 @B<@B@@BH@BL @BP @BT@BX@B`@Bd @Bh@Bt@Bx@B@B @B@B@B@B@B@B@B @B @B@B @B @B@B@B@B @B@B̯@B԰@B @B @B@B@B@B @B@B@C@C @C @C @C@C@C @C @C,@C0@C8@C< @C@@CD@CL@CP @CT @CX@C\@Cd@Ch @Cl@Ct@Cx @C|@C@C@C @C@C@C@C @C@C@C@C @C@Cį@C̰@C @C @C@CB@C@C@C@C @C@C@D@D@D JU@D@D@D@D$@D(@D0@D8@D<@DD @DX@D\@D`J$@Dd @Dh@D|@D @D @D@D@D@D @D @D@D@DȰ@D @D @D@D@D @D @D@D@E@E @E @E@E@E@E, @E0 @E4@E<@EL@E\ @E` @Ed@Eh@El @Ep @Et@Ex@E@E @E @E@E@E@E @E @E@E@E @E @E@E@E@F @F4@F @F4@F@F3@F @F(3@F,4@F0@F43@F<@FH @FL @FP@FT@F\@Fh @Fl4@Fp@Ft4@F|@F3@F@F3@F@F @F @F@F@F@F @F4@F@F@F@F3@F@F @F @F@F@F@G@G@G J@G @G @G@G@G @G$@G0@G4@G@@GP @GT @GX@G\@G` @Gd@Gp@Gt@G|@G @G @G@G@G @G@G@G@G@G@G@GJ@G@G@GJ @G@G@GJ@G@G@G@GJ@G @H@H@H @H @H@H$@H( @H, @H0 @H4 @H8@H<@HD@HT @HX@Hh@Hl @Hp @Ht @Hx @H|@H@H@H @H@H@H @H @H @H @H@Hȯ@Hа @H @H4@H4@H @H @H @I @I@I@I 3@I@I @I3@I@I$  @I( @I,@I0@ID @IX@I\@Id@Ih @Il@I|@I@I@I@I @I @I@I@I@I@I@I @I@I̯@I԰@I@I@I@I@I@I@J @J@J@J @J @J@J@J,@J4 @J8 @J<@JD @JH@JL@JP @JT@JX@J`@Jp @Jt @Jx@J @J@J@J @J@J@J@J @J@J @J@J@J@J @J@JЯ@Jذ@J @J@J@JJ @J @J@J@J@K@K@KJ @K @K@KJ@K@K@K @K( @K,B@K0@K4@K8@K@V@V@V @VJ%@V @V@V@V$@V8 @V<@V@@VD@VH@VLJ%@VP @VT@VX@V`@Vh @Vl @Vp@Vt@V@V@V @V @V@V@V @V@V@V@V @V>@V@V@V2@VJ%@V@V@V@W @W @W@W@W( @W< @W@@WL@WP4 @WT @WX4 @W\4 @W`4 @Wd@Wh3 @Wl @Wx@W|@W3 @W@W@W3 @W@W@W@W @W @W @W@W@W3 @W @W@W @W @W @W@W̯@W԰ @W @W @W@W@W @W@W@W @X  @X @X@X@X$ @X0 @X4 @X8@X<@X@ @XD@XH@XL @XP  @XT @XX@X`@Xt@Xx@X|@X@X @X@X@X@X @X@X@X@X@XJ%@X @X@X@X@X @X@X@X@X2@XJ%@X @X@X@Y@Y@Y @Y @Y$@Y(@Y0@YH@YL@YP@YT@YX@Y\@Y`@Yd@Y|@Y @Y @Y @YB@Y@Y @Y @Y@Y@Y@Y @Y @Y @Y @Y@Yԯ@Y@Y@Z @Z @Z@Z @Z@Z(@Z,@Z0@Z4@Z8@Z@i\@i`@id@ih @il4@ix4@i|@i3@i@i3@i@i @i @i@i@ḭ @i@i@i@i@i@i@i@i@j@j@j @j@j@j@j @j$@j(@j,@j4@j8 @j< @jD@jH@jL@jX @j\@j`@jd@jh@jl@j@j@j@j@j@j@j@j@j@j @j@jį@j̰@j@j@j@j@j@j @k@k @k @k@k@k0@kH@kL@kP@kT@kX@k` @kd @kh@kl@kp @kt @kx@k|@k@k @k@k@k @k@k@k@k@k@k@k@k @k@kȯ@kа@k @k@k @k@k@l @l@l@l @l$@l(@l,@l0@l4@l<@l@@lD@lH@lL@lT @lX @l\@l`@ld@lhJ@ll@lp@lx @l@l@l@l@l@l@l@l@l@l@l@l@l@l @l @l @l@lܯ@l@l @l@m@m@m @m@mJ@m @m@m @m(@m,@m0@m4@m8J1@m< @m@@mD@mL@mP@mT@mX@m\J1@m` @md@mh@mp@mx@m|@m @m@m@m@m@mJ1@m @m@m@m@m@m@mJ2@m @m@m̯@m԰@m@m@mJ2@m @m@m@m@m@m@nJ2@n @n@n @n@n@n@n J2@n$ @n(@n,@n4@n8@n<@n@J2@nD @nH@nL@nT@n\@n`@ndJ2@nh @nl@np@nx@n@n@nJ2@n @n@n@n@n@n@nJ2@n @n@n@n@n@n@nJ2@n @n@n@n@n @n@n@o@o@o@o J@o @o@o@o @o( @o, @o0@o4@o8>@o<@o@ @oD@oL@oX@ol @opB@ot@ox @o|@o@o@o @o@o@o @o@o@oİ@o@oܯ@o@o @pB@p@p@p @p( @p< @p@@pH@pL@pP@pT@pp@pt@px @p| @p @p@p@p@p @p@p@p4@p4@p@p3@p@p@p3@p@p@p @q@q @q@q4 @q8@qD@qH4@qL4@qP@qT3@qX@q\@q`3@qh@ql@qp @q|@q@q@q@q @q@q@q@q̯@qذ@q@q @rB@r @r @r@r@r, @r0B@r4@r8 @r<@rD@rH>@rL@rP @rT @rX@r\@rp@r @r@r@r@r@r @r@r@r@r@r@r@r @rB@r @rB@r@r @r@s @s@s@s @s$@s(@s0@sD@sH@sL@sP @sT @sX@s\@sx@s@s@s@s @s @s @sB@s@s@s@s @s @s@s@s@s@s@s @t@t@t@t(@t, @t8@t<@t@@tD@tH@tL@tP@tT@tXJ @t\@t`@tdJ@th@tl@tt @t@t@tJ'@t @t4@t@t3@t@t @t @t@t @t@t4@t@t3@t@t@t @t @t  @t@t@u@u@u@u @u$ @u(@u0@u4 @u8@u@@uD@uH@uP@uT@uX@u`@ud@uh@up @ut@ux@u@u @u@u@u @u@u@u@u@u@u@u @u @u@u@u @u@u@u@u@u@u@u@v@v@v @v@v @v(@v< @v@ @vD@vH@vL@vT@vh @vl @vp@v|@v @v @v@v@v @v @v @v@v4@v@v@v @v@v@v3@v>@v@v @v@v@w @w @w @w(@w,@w0@w4 @w8 @w<@w@@wH@wX@w\JI@wd@whJK@wl@wp@wx @w @w @wJG@w@w@wJ@w @w4@w@w@w@w3@w@w@w@w@wԯ@wܰ@w@w@w @wJG@w@x@x@x@x@x @x$@x8@x@@xH@xP@xT @xX @x\@xh@xl @xp@xx@x @x@x@x@x@x@x@x @x@x@xJJ@x@xد@x@x@x@x @x@xJK@x@y@y@y@y @y@y@y,@y4@y<@yD@yH @yL@yP@yTJL@yX@y\@yd@y @y@y@y @y@y@y @y @y @y@y@y@y @y @y @y @z@z@z @z@z @z$@z( @z,@z<@z@@zD@zH @zL @z\@z`@zd @zh@zl4 @zp@zt3 @zx@z|@z  @z@z@z @z@z@z@z@z @z@z@z @z@z @z@z @z@z@z@z  @z@z@{ @{@{ @{( @{, @{0@{4@{D @{T@{X@{\@{`@{d @{h@{x@{|@{@{@{ @{ @{  @{@{@{@{@{ @{ @{ @{@{Я@{@{@{ @{@{@|@|J0@| @| @|@|@|( @|,B@|0@|4 @|8 @|<@|@@|H@|L@|P @|T@|X@|` @|p@|t@|x@||@| @|@|@| @|@| @| @|@|@|@|  @|  @| @|@|Я@| @|@|@|@|@}@}@}@} @}@} @}$@}(@},@}0 @}4  @}8@}<@}L @}\@}`@}d@}h@}l@}p@}t@}x @}|@}@}@}@}@}  @}@}@}@}@}@} @} @} @}@}@}@}@}@}@~ @~ @~@~ @~@~@~(@~,@~0 @~8 @~<@~@@~D@~L @~\@~`@~d@~h@~l @~p@~@~ @~@~ @~ @~@~@~@~  @~  @~ @~@~@~̰@~@~@~@@@@ @ @@@ @0 @4@H@L@P@T@X@\ @` @d@h@x @ @ @@@J@@ @@@ @ @ @ @@į@԰@ @ @ @@@@@ @ @ @$@(@0@@@D@T@d@l @t @x@|@@@@@@@@@@@@Ȱ@@@@ @@@@@@@ @ @ @@@@$ @( @,@0@8 @@ @D@H@L@P@T@X @\@d@h @l @p@t@@@@@ @ @@ @ @@į@@@@ @@ @ @@ @4@8@< @@@H@\@`@t@ @ @@@@@ @@د@@@@ @ @@@@$@4@@@L @P@T@X@\@d@t@x@| @@@@@@ @@@@@̯@԰@@@ @@@ @@@@,@8@D @H@L@`@d@h@p@@@ @@@@@@İ@@@ @@@@@@ @B@ @ @$@,@8J@< @@@D@L@X@\J@` @d@h@p@tB@x@|@@@@J*@@ @@@@ @ @ @ @@̯@ذ@@J)@ @@@@@J)@ @ @@@ @$@(J*@,@0 @4@8@@@H @L @P @T @d@h@t@|@J+@@@@@J+@@@@@@J-@@ @@̯@԰@ @ @ @ @@@ @@@J-@ @$ @(@,@4@< @@ @D @H @\@`@l@x@|J,@ @@@@@J,@ @@@ @ @@@@@@@@@@ @$@( @,@0@8 @D@L@T @X@d@h@x@|@@@@@@ @@@@ @ @ @@ܯ@ @ @ @ @ @ @@J)@ @  @  @$  @(@,@@ @T @X@d @h@l@p @t @x @| @@@@ @ @4 @ @ @ @4 @ @@4@4@@3@@3@4@ @3@  @@3 @4 @ @  @( @,3 @0 @8@<3 @@4 @D @H @P @T3 @X @`@d @h@l@p @ @@@@ @@@@ @@@@@ @@@ @$ @(@<@@@D @H@L@\ @l@p@t@x @| @J M@ @@J @ @@@ @@ @ @@@̰@ @@@@@@ @@@@ @8 @<@@>@D @H@\ @` @d@| @4 @ @@@3 @4 @ @4 @ @@ @4 @ @4 @@4@@@@3@@3 @@3 @@3 @ @  @43 @8@@ @D @H@L@X@p@t @x@|@@@@@@@@@@@԰@ @ @@@@@ @@$ @(@8@<@@ @D @H@L@\@l@p@t @x@|@@@@@@@@@@@@@@@@̯@ܰ @ @ @ @4@@3@ @>@@@ @ @$@(@0@8@<@T@\@`@x@@@@@J)@ @@@@@ @ @@ԯ@ذ@@J)@ @@@@@@ @ @@@$@, @0@8 @<@@@H@T @X4@\@`3@d@l @p@t@|@ @@ @@@@ @4@@3@@ @@Я@ذ@ @ @@@@ @@ @@ @@ @ @4 @8@<@D@T @X@d@h@l@@@@@@@@ @@@@ @ @@@ @ @@@@ @@@0@@@D @H@L@P@X@h @l @p @t@x@@@@@@@ @@@̰@@@@@ @@@@ @ @@@@ @$@(@4@8@D @H@L@`@p @t @x @|@@ @ @ @@@@ @ @@@@@ @ @ @@@@ @ @ @$@0@4 @8 @D @H@L@\@p @t @x@|@@@ @ @ @@@ @ @ @ @@ @@@@@ @ @ @ @@@ @$ @( @, @0@< @@@D@H@L@P @T @\ @` @d@h@x @ @ @ @@@@@ @ @ @ @@@̰ @ @@@@@@ @ @  @ @@$@0@4 @8 @<@@@L@P@\ @`@d@x @@@@ @ @ @ @ @  @  @  @@@@@@@@@@@ @ @ @ @ @@ @ @(4 @,@0@4@8@<3 @@@H@L@P @T @X  @\  @`@d@p @|@@@ @@ @@@ @@@@@@@@@@ @@@J@@@@ @@ @(@,@0 @4@8@@ @D@X@\ @`@l @p @@@@@@@@@@@@@@@ @ @ @ @ @ @4@@@@ @ @@ @$@(@,3@0@4@8@< @@ @D  @H  @L@P@\ @h@p@x @|@ @@ @ @@@@@@  @  @ @@Я@ @@@ @@ @@ @ @(@0@8@<@@@D @H@L @P@T@d@p@t@x@|@@ @@@ @@ @@ @ @ @ @ @@ @ @4 @@@@@3 @ @ @ @  @ @ @$@0 @<@@ @D@H @L@\ @` @d @h@t @x @ @@@@@ @  @  @ @@@ @@ @@ @@ @ @ @@ @ @ @@ @$@(@, @0  @8  @< @@@D@P@\@`@d@h@l@p @t@x@ @@ @@ @@ @ @ @@ @ @4 @@@@@3 @@ @  @ @ @@ @(@0@8 @<@@ @D@H@X @d @h @l@p @t@x @@ @@ @@@ @@@ @@@@@@@@ @@ @ @@@@ @ @$  @(@,@8@H@L@P@T@X @\ @`@d@h@p@ @ @ @@@@@@@@@ @@į@ذ @@@@@@@@ @@ @ @(@,@0@4 @8 @<  @@@D@P @`@d@h@l @p@t @x@@@@@@ @ @ @@@@@@@@ @ @@@@@ @ @ @@@@ @,@0@4@8@@ @D@H@\ @t @x@|@J @@ @@ @@ @@ @@ @@ @@ @@ @@@  @ @@@ @ @$ @<@@ @D @T@X@\@`@d@h@l @p  @t@x@@ @ @4 @ @@ @ @@ @@@@@3 @@ @ @@ @ @  @  @  @@@ @0@4@8@<@@@D@H@L@T @X@\@`@d@h@l@p@t@|@@@ @@@@@@ @@@@@@@@@@@@@@@ @@ @@ @$@(@,@8@<@@@D@X@h @l @p@t@|@@@@@@@@@@=@ @@@J @@@@ @,@8@<@@ @D@H@LJ @P@T@\@t@x @|@@@@ @@@@@ @@د@@@ @@@ J @@@@4@8 @<@@@HJ @L@P@X@p@t @x@|@@@@ @@@ @@ @4 @4 @@3 @4 @@@@@@3 @4 @ @3 @@  @ @ @3 @4 @,@0@4@8@<@@3 @D4 @H @L3 @P@\@`@d  @h  @l  @p@t@ @@@@@@ @@ @4 @@@@@@@3 @4 @@3 @@@@@  @@@$ @4@8@<@@@D@L @P@\ @`4 @p@t@x@|@@@3 @4 @@3 @@@@  @@@Ȱ @@@@@@J @@ @@ @  @@ 4 @(@,@0@4@83 @<@@@D @H  @P @T@X@d @t@x@|@@@J @@ @@ @ @@4 @@@@@3 @@@ @  @ @@@ @@@@ @ @, @04 @D4 @H@L3 @P@T @X@\ @d@h@t3 @x@|@@@@ @ @ @@@İ@@@@ @@@@@ =@$@( @4@8@@@X@`@h@l @t@x@@@@@ @@@@@@ @@@@ @@ @@ @(@@@D@H @P@T@\@t@x@| @@@@@@@@@ @ @ @@ @J @@ @J @@ @ @4@@@ @ @@ @@@3@@ @$@(@,@0@4  @8 @<  @@@D@P@`@d@h @l@p@| @ @@ @J @@ @J @@ @@@@@ @ @ @@ @ @@@@@@@@ @@@@@ @$J @,@0@4J @<@@ @D@P @T @d@h4 @p@t@x@|@3 @@@ @  @  @@@ @@@@@@J @@@J @@ @@ @ @@4 @@ @$@(@,3 @0@4@8 @<  @D  @H@L@X @h @l @p @t@x@@@J)@@J,@ @@@@@@@@ @ @@@ @B@ @@ @$@8@<@D@H@L@T@d@l@p@|@ @ @@@@ @@̯@԰@@J)@ @@@@@@$ @( @0@4@8@T@X@hJ@p @t@x@|@@@@@@@ @@@@@@@ @@@@ @@$@( @, @0@4@<@P@T @X@\@d@x@| @@@@@@ @@@Ȱ @@@@ @@@@@@@@@@,@0@4 @8@<@T@h@l @p@t@|@@@ @@@@@ @@Я@ذ@@@@@@@(@,@0@4@8@<@D@\@d@l@p@t@x@|@@ @@@@ @@@ @ @@@@ @@@ @@@ @@@@@@ @@@ @8@<@D@P @T@\@`@d@h@t@x@|@@@@@ @ @ @@@@@@@@@@ @@@@@ @@ B@@@@,@0@4J @8@@  @@̯@ܰ @ @@@@@@ @  @$@4@8@< @@ @T@X@\@`@d @h@l@| @@@@@@ @@ @@ @ @ @@ @ @ @@@@ @@ @ @,@0@4@8@<@DJ@H @L@T4@X @\@p@t@x@|3@@@ @  @@@@@@@@@J@@ԯ@@@@ @ @ @$ @( @,J@0 @4 @8  @<@@@P@`@d@h @l@t@x@@@@@@@@ @@̯@԰ @ @ @ @@J@ @ @@@@(@,@0@4 @8 @< @@@D@T@h @l @p@t@x@|@ @ @ @@@@@ @ @@į@̰@@@@ @@@@@@@ @ @$ @(@,@4@H@L@PJ@T @X@h@l@p@t @x @|@@ @@@@@@ @@4@ @@@ @ @ @@@ 3@@@ @@ @0@D@H@L@P @T@\ @`@@@@J@@@J@@@@̰@@@ @@@@@J@@@, @<@@@D@H @L@X@\@d@h@x@|@@@@@@ @ @@@İ @@@@ @@@@@@@ @@ @0@4 @8 @<@@@H@\@`@d @h@p@x @|@ @¨@¼@@@J @@ @@د@ @@@@@@ @@4@ @ @0@4@8@<3@@@D@H @L@P@` @t @x @|@À@ÄJ@ÈJ @Ì @Ð @Ô@Ø @Ü @à @ä@è@ì @ð@ô4 @ø@ü3 @ @ @@@  @ @  @@@ @@ @@ B@@@ @,@0@4 @8@<@@@D@H@L@P@TJ@X@\@`J@dJ@h@l@t @Ą@Ĉ @Č@Ę@Ĝ @Ġ @Ĥ@Ĩ@ĸ @ @ @ @ @ @  @  @  @@@@ @ @ @ @ @ @$J@(@,@0J@4 @8  @<  @@  @D  @H@L@\ @l@p@t @x@|@ŀJ @ń@ň@ŌJ @Ő@Ŕ@Ř@ŜJ @Š @Ť@ŨJ @Ŭ @Ű@ŴJ@Ÿ @ż @ @  @ @@Я@ @ @ @@ @@@ @@ @$@(@,@0@4@8 @< @@ @D@H@L@`@p@t@x@|@ƀ@Ɛ@Ƥ @ƨ@Ƭ@ư @ƴ @Ƹ@Ƽ@@@ @ @@@ @@@@ @B@@ @ @@@ @@ @(@<@@@D @H@L@T@h@l@pJ @t@x@|J @ǀ @DŽ@Lj@ǐ@Ǥ@Ǩ@ǬJ @ǰ@Ǵ@ǸJ @Ǽ @@į@̰@@@J @@@J @ @@@@@ @$@(@0@D@H@`@t@x@Ȑ@Ƞ@Ȥ@ȨJ @Ȭ@Ȱ@ȴJ @ȸ @ȼ@@Ȱ@@ @@@@@@@(@,@0J @4@8@@`@d @h @p@t @x@ӄ @ӈ@ӌ @Ӑ4 @Ӕ4 @Ә @Ӝ@Ө @Ӭ@Ӱ@Ӵ3 @Ӹ4 @Ӽ @@@@>@3 @@@3 @@ @@@ @ @ @, @0@@@D@H@L@P @T@X@` @p@t@|@Ԅ @Ԉ@Ԙ@Ԝ@Ԥ>@Ԩ @Ԭ@Լ@@@@@ @@ܯ@ @@@@@@ J@ @@@ @ @( @0 @4@8@H @X@\@`@d@h@p@tJ @x @|@Ռ@Ր@Ք @՘ @՜ @դ  @ը@լ@ռ @@@@@ @@@@@>@ @@ @ @@ @$@,@4 @8@L@T@X@\@`@d @h @p @t @x  @|@ր@֔ @֤@֨ @ְ4@ִ4 @ָ @ּ@ @@@3@4@ @@@3@@@3 @@,@0@8@@ @P @T @d @h@l@p@t@x@|@׀  @ׄ  @׈ @׌@א@ט@ר@׬ @װ4 @״ @׸ @׼@ @3 @ @@@ @4 @@ @ @3 @ @@@ @ @@ @0@4@8@<@@@D@T@X@\@`@d@h@l@p@t@؄@؈ @،@ؐ@ؔ @ؘ @ج@ذ@ش@ظ@ؼ@  @  @@̯@а@@ @4 @ @ @@ @3 @ @ @@ @4 @@  @$ @(3 @, @8@<@@ @D@P@T @h@l@p@t@x@|@ـ@ل@و@ٌ@ٜ@٠ @٤@٨@٬ @ٰ@@@@ @ @@@@@@  @  @@@@@ @ 4 @$ @(4 @, @0 @4 @83 @< @@@D @H3 @L @X@\@` @d4@h@l4@p@t4@x@| @ڀ @ڄ3@ڈ @ڌ@ڐ @ڔ3@ژ @ڤ@ڨ@ڬ3@ڰ4@ڴ@ڸ4@ڼ@ @ @3@ @@ @3@ @@@ @@@ @@@ @$@(@,@0@4@8@<@L@P @T@X@\ @`@p @t@x@|@ۀ @ۄ@ۈ@ی @ې@۔ @ۤ@ۨ @۬@۰@۴ @۸ @@@@@@  @ @@@ @@ @ @@ @$@(@,@0 @4 @8 @< @@@D@T @d@h@lJ @p@t @x @| @܀ @܄@܈@ܘ @ܨ @ܬ@ܰ@ܸJ@ܼ @@@ @ @@د@ @@ @B@@ @J @@ @@ @$@( @,@0@4@8 @<@@@D4@H4 @L @P@\@`3@d@l@p3 @t4 @x@|@݄3 @݈@݌@ݐ@ݔ @ݘ @ݜ @ݤ@ݨ@ݼ@ @@@@@@@@@@ @ @$ @,@<@@4@D@H@L@P3@T@\ @` @h @l@p@ހ@ސ@ޔ@ޘ @ޠ@ޤ@ިJ@ެ@ް@޸@@@ @@@J@@@@@@ @@@J@@ J@$@(@0@@@D@H @P@T@XJ@\@`J@d@h@p@߀@߄@߈@ߐ @ߘ@ߜ @ߠ@ߤ@ߨ@߬@߰@ߴ@߸@߼@а@ @4@4 @ @@@3@4@ @ 4 @ @ @(3 @,@@@D3@H @`@d3 @h4 @l@p4@t @x @3@@@3 @4 @@4@ @4 @ @4 @ @ @@3 @@3 @@@3@@@3 @@@  @ @$@(@0@H@L@P@T@X @`@l@p@@@ᔯ@ᤰ@@@@@ @@@@@@$@( @,@0@8@T@X@\@` @d@@ @@⌯@⠰@@ @@ȯ@а@@@@ @@@ @ @$@4 @D @H @L@P@TJ@X@\@d @t@xJ@|@@J@@@J@ @@@@@@@ @ @ @ @  @@د@@ @B@@@J@ @@@@@0@@@D @H@L@PJ@T@X@` @p@t@x@|@@J @ @@@@ @ @ @@丯@Ȱ @@J@ @@@ @ @ @@@@ @@$@(@,@4 @8 @<@@@L@T @X@\@d@p@t@儰@ @@ @@娯@弰@ @@ԯ@ܰ@@@@B@ @@@@ @$@( @, @0@4@@@T@X@\@` @d@h@l @p@@@@@@@@@ @ @@̯@ذ@ @@@ @@@ @,@0@4@8@< @@@L @P@d@h@l@p@t @x @|@瀯@田 @@@ @@ @@@ @ @@@@@J@B@@@ @ @@@@ @ 4 @0@4@8@< @@@T@X@\3 @`@d@h @l @t  @x@|@茰 @@@@@ @@ @@@@@@ @ @@@ @ @ @8@<@P@T@X @\ @`@d@t@@@ @@ @B@@餯@鬰@@@ @@ @B@@د@@@ @ @@ @B@ B@@@@(@, @0 @4@8 @<@@@D @H @L@P@T@X@\J@`B@d@h@l@|@ @@ @B@@꘯@꠰@@ @@ @B@@̯@԰@@ @ @@ @B@B@@@@ @ @ @(@,@4@8@<@@@D@H@P@d@h @l@p @tB@xB@|@뀯@눰@ @@뤯@묰 @@@@@ @@ @@@@@@ @ @@ @ @,@0@4J@8@<@@J@D @H @L@P @T@d@h@l @p @t @x@|@쐰@@ @@ @B@@츯@@ @@د@@@@@ @@8@L@T@`@d@h@p @t @|@턯@혰@ @@@@@ @@ԯ@ܰ@ @@4@@@@@ 3@$@4@8 @<@@@H@\ @` @d@h@tJ@x@| @@@@ @ @ @@ @ @@@ذ@ @@ @@@@ @$@(J@0 @4@8@@@P@T@\@t@x @| @@@@@@勞@ﴰ@@@@ @ @@@@@@,@04@44@8@<@D3@H@L@P3@T4@X@\@h3@l@x@|@@ @ @@@@ @ @@@@@@ @@@ @8 @<@@@H@`@d@h@l @p@x@|4@@3@@ @@@@ @@@4@@@@@@3@@ @@@,@@@D @H@P @T @X@\@h@|@@ @@@@@@@ @@ @@@Я@ذ @ @4@@4@@@@ @$3@(@43@8@D @H @l@p@x@@@@ @ @ @B@@ @ @@̯@ذ @ @4@4@@3@4@@4@ @@ 3@@3@ @$@(3@,@0@4@8@H@\@d@l@p @tB@x@|@@@@ @@@@ @@į@̰@@@ @@@@@@@ @$@( @,@0 @4@<@@@H@\@d@l@p@t @x@| @@@@@@@@@ @@ @@@د@@@@@ @@ @$@0@4 @8@<@D @T @X@d@h@x@|@@@@@4@4@@3@4@ @4 @ @@3 @@3@@@3@@@ @@@ @ @@ @$@,@0@4@D@H@L@P4@T4@X@\3@`4@d @h4 @l @p@x3 @|@3@@@3@@@ @@@@ @B@@@ԯ@@ @@@ @@ @$@4@8 @< @D@H@P@`@d@t@ @4@4@@3@@@@@3@@@@Я@ذ @ @>@@@@ @@@ @ @@@ @$@(@,@0 @4 @8@<@@ @P@T@X@\ @` @d @h@l @p @t  @x@|@ @@@@ @ @ @@ @ @  @@ȯ@ذ@@@@ @@@@@@$ @(@,@<@L@P @T@X @\@`@d@l@| @@@@@ @@@ @@@@ @ @ @ @@ @  @  @  @@@@@@, @D @H@T @X@h@l@p@t @x@|@@ @ @ @ @@@@ @ @ @@@@ @ @ @ @@@$@, @0 @4@8@@@H @L @PB@T@X @\ @l@p@| @ @4@4@@3@4@ @4 @ @4 @ @4 @ @@ @@@3 @@3 @@3 @@3@@@3@@@@ @ @,@0@4@8 @< @@ @D @H@L @P  @T  @X  @\@`@p@@@@ @@@@ @@@@ @ @ @ @@ @  @  @  @@@@@@@ @$@(@,@4@D@H@P @T@X@h@x@|@@ @ @ @ @ @@ @  @  @  @  @@@İ@ @ @ @ @@@@ @ @ @ @ @@ @0 @@ @D@L @P@`@d@h@l @p@@@@  @  @  @ @@@@@ @@ @@@̯@԰ @@@@@ @@@  @@@@(@,@0@4 @8 @< @@ @D @H@L @P  @T  @X  @\  @`@d@t@@ @ @ @ @ @@@@ @ @@@@@@ @ @@@ @@ @$ @( @, @0 @4 @8 @< @@@D  @H  @L  @P  @T @X @\@`@p @ @ @ @ @ @@@ @ @ @ @ @ @ @@ԯ@ @ @@ @@@@@ @$ @(@8@<@@@D@H  @L  @P  @T @X@\@`@p@x@@@@@@@ @@@@ @@̯@԰@@@ @@@@@ @4@@4@ @$4@( @,4 @0 @4@8 @@4 @D @H4 @L @P4 @T @X@\@`3 @h@p3 @t@|3 @@3 @4 @ @4 @ @4 @ @@@3 @@3 @@3 @@3@4@4 @ @4 @ @@ @3 @@@  @3@4@ @ @ @(3@,@8@<3 @@@L3@P@T4@l @p4 @t@x3 @|@@3@4@ @4 @@ @>@3 @@@3@@3@4@@4@@3@@@4@@3@@3@84@<@@4@D@H4@L@P3@X@`3@d@l3@t@x @|4@@4@ @4 @ @@@3 @@3@@3@@ @ @@Я@԰ @@@@@ @@ @@@ @ @@ @( @8@@@H@L@P @T@X @\@d@h @l @p@t@| @@@@@ @@ @@@ @ @@ȯ@а@ @@@@@@@@ @4@ @ @ @0 @4 @8 @H@L @P @T @X4 @\4 @`@d3 @h4 @l @p4 @t@x4@|@4@@@@ @@3@@3@@3 @@3 @ @@3 @ @@3@@@@ @@@@ @@$@(@,@0@8@<@@@D4@L @P @T@\ @` @d @t@x @| @ @4 @4 @@3 @4 @ @4 @@4@@4@@@@ @@3@@3@@3 @@3 @ @@3 @ @ @ 3@ @ @ @  @ @ $@ 0 @ @ @ DB@ H@ L @ P@ X@ \@ `@ d4@ l @ p @ t@ |@ 3@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @ @ @ @ (@ ,@ <@ D @ H@ P @ T@ X@ l@ t @ x@ |@ @ @ @ @ @ @ @ @ @ @ ̯@ @ @ @ @ @ @ 4@ @ $@ <@ @3@ D@ H@ L @ P@ T@ \@ t @ xB@ |@ @ @ @ @ @ ȯ@ а@ @ @ @ @ @ 0@ 4 @ 8@ <@ H@ ` @ d@ h@ p@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @  @ 4@ ,@ 03@ 4@ 8@ <@ @@ H@ \ @ `@ l@ p @ t@ x@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@@ @ @8@<@D @X@\@`J@d@h@lJ@p@t@x@|J@ @@@ @@@@@ @ @@@@@@J@ @@@ @ @ @@@@ @@@ @@$@,@0@4@8 @<@@@L@T @X@\@` @d@x@@@@ @@@@@@@@ @@@@@@@ @ @@ 4@$@(@8@< @@ @D@T @X@\3@`@d@h @l@p@| @ @@>@ @@@@@@@@ @ @@@@@ @>@@@ @ @@ @@@@ @$@(@0@D@H@LJ@T@X@\J@d@h@lJ @p@t@x@|J@@@@J@ @@@@ @@@Ȱ@@@@@@J@@@@ @@@ @$ @(@,@<@L @P@d@h@l @p@t@|@ @ @@@@@@@@į@԰ @@@J@@@J@ @@ @@@ @$4@, @0@43@8@<@@@D@H  @L @P  @T @X@\@d@p@t@x@|@@J@ @@@@@@J @@@J@@@̰ @ @ @ @@@@@@@@@ @ @$@(@0@8 @<@D@H@L @P @p@t@|@ @@@@ @@@@ @@@J@@@J@@@@@@ @8 @< @@@d@p@x @|@@@ @@@@ @@@@@@@ @@ @, @< @@4@L@P@T@X@`@l@p@@@@@@@@@@@@@@4@@3@@@@3@@ @ @@@$@<@@J)@D @H@X@\@`@d @h@l@x@@@@@@@ @@@ @@@@@@@@ @$@<@P@X@`@d@h@@@@@@@̰@@@ @ @ @ @@@@ @$@,@04@8 @<@D @H @L@\@`3@d@h@l @p @t@x@ @ @ @ @@@@@@@4@ @@ @ @@@3@@@ @ @ @@@( @,4@<@@@H3@L@P@T@X@`@p @tB@x@|@@ @4@@@3@@@@į@԰@ @B@@@@ @@ @@@ @ @$@(@,@4 @8B@<@@@H @l @p4@t4@x@|4@ @ @ @@3@4@ @3@@ @3@4@ @ @ @@@3@@@@@3@4@@ @ @@@ 3@@@@@  @$ @(@,@4@< @@@H@L@P@X @\@`@@@@ @ @ @@ @@@@@@ @ @@@ @ @ @@>@ @@@ @$@(@0 @4 @8@<@L @`@d@l@p @t @x@|@@ @ @ @@@@ @ @ @>@ @@į@԰@ @ @ @>@ @@@@ @$B@(@, @0@< @@ @P@T@\@l@p@@@@@@@@@@̯@ @ @@@ @ @@0@4@8 @<@@@T@p @t @x @|B@@ @@@@@@@ @ @@ԯ@ܰ@ @@@ @@@ @  @ @ $@ (@ 8 @ H @ L @ P @ T@ X@ dJ@ h @ lB @ p @ t @ x@ |@ @ @ @ @ @  @  @  @ @ @ @ @ @ @!@! @!$@!(@!,@!0@!L @!h@!p@!x@!| @!@!@!@! @!B@! @!B@! @!@!@!@!@!@!@! @! @! @!B@" @"@"@" @"@"@" @"4 @"8 @"<@"@@"D@"H@"L@"P@"T @"X@"\@"`@"dJ@"h @"l@"p@"x@"@"@"@"@"@" @" @"@"@"@"@"@"@"@#@#@# @# @# @# @#@# @#,@#@ @#D@#X@#\@#` @#d @#h@#l@#|@#@# @#@#@#@#@# @#@#@#@#@#@$ @$@$@$@$0@$4@$8@$<@$@@$D @$H@$L @$P@$T@$h@$|@$@$ @$@$ @$@$ @$ @$@$@$@$ @$ @$ @$@$@$ @%@%@%@% @%@%@%@%@% @%$@%(@%,@%0 @%4@%8@%<@%@@%D@%H@%L@%P@%T@%X@%\@%`@%d@%h@%l@%p@%t@%|@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%ȯ@%԰@%@%@%J'@% @%@%@%@% @& @&@&@&@& @& @& 4@&$@&(4@&,@&0@&4@&84@&< @&@4 @&D @&H4 @&L @&P4 @&T @&X4 @&\ @&`@&d@&h3 @&p @&x3 @&| @& @&3 @& @& @&3 @&4 @&4 @& @& @& @&3 @&@&@&3 @&4 @& @& @& @&3 @& @&4 @& @&3 @& @' @'3@'  @'3@'@' @'$@',3@'0@'<@'D @'H @'L@'P@'T @'d@'h@'l@'p@'t@'x@'|@'@'@'@'@'@'@' @' @' @' @' @' @'@'@' @'@'@' @' @'@'@'@'4@'4@' @'@'@'3@'@( @( @(3@( @( @( @( @( @($@((@(0@(8 @(< @(@@(P@(T@(X @(\ @(` @(d@(h@(|@(@(@( @(@(@( @(@(@(@(@(@(@( @( @(@(@(J@(@( @(@(@(@(@)@)@)@)@) @)$@)(@),@)0@)@@)T @)X@)l@)p@)t@)x@)|@) @) @) @)@)@)@)@)@) @) @)@)@)į@)̰ @)@) @)@)@)@)@)@)@*@*@*@* @*$@*(@*,J@*0@*4@*8J @*< @*@ @*T@*X @*\ @*`@*d @*h @*x@*| @*@*@* @*  @*  @*  @*@*@*@*@* @* @*@*@*ԯ@*ܰ @*@*@*@*@*@+ @+@+@+ @+@+@+J@+@+ @+$@+( @+,@+0@+@ @+P @+T@+X@+\@+`@+d@+h@+l @+p@+t@+@+ @+@+@+@+@+@+ @+ @+ @+@+į@+԰@+ @+@+@+ @+ @, @,@, @,,@,0@,4@,8@,< @,@B @,D @,H @,L @,P=@,T @,X @,\ @,`@,d@,h @,l@,|@,@, @,@,@,@,  @,  @,  @, @,@,@,@,@, @, @,@,ܯ@,@,@,@,@-@-@-J @- @- @-B @- @- @-  @-$=@-( @-, @-0 @-4@-8@-< @-@ @-P@-T@-X @-\ @-`@-d@-h@-x @-| @-@-@-@-@-@-@-@-@- @-@-@-@-  @-  @-  @-  @- @-@-ԯ@- @- @- @. @.@.@.@.$@.(@.,@.0 @.4B @.8 @.< @.@ @.D @.H @.L @.P @.T @.X @.\ @.` @.d@.h @.l @.p@.| @. @.4 @. @.@.@. @.@.@.@.3 @.@.>@.  @.@.ȯ@.̰ @.@.@.@. @.B @. @. @. @/ @/ @/ @/ @/ @/ @/ @/ @/  @/$ @/( @/, @/0 @/4 @/8J @/<@/@ @/D@/H@/L  @/P@/T@/h @/| @/ @/ @/@/@/@/@/@/@/@/ @/@/ @/ @/@/ȯ@/а @/@/@/@/ @/ @/@/@/ @0@0@0 @0 @0 @0 @0@0 @0 @0$@00 @04@084 @0< @0@@0P@0T@0X@0\3 @0`@0d@0h @0l  @0p@0t@0x@0@0@0@0@0 @0 @0@0@0@0@0@0@0 @0 @0@0ܯ@0 @0 @0@0 @0@1@1@1 @1 @1 @1@1@1$@1, @10 @14 @18@1<@1@ @1D@1P @1T @1X4 @1\ @1` @1h@1l @1p @1t4 @1|4 @1@1@1@1 @1 @1 @1@1 @1 @1@1@1@1 @1 @1 @1@1@1 @2@23 @2 @2 @23 @2@23 @2 @2$@2( @2, @20 @24@28@2H @2P@2T@2X@2\ @2`@2h @2l@2p@2t @2x@2|@2@2 @2 @2@2@2@2@2@2 @2@2@2ȯ@2а @2@2@2@2@2@2@3 @3@3 @3  @3 @3@3@3 @3 @3,@30@3H@3L@3P @3T@3X @3\@3`@3@3@3 @3@3@3@3@3@3@3J@3 @3B@3@3@3@3J@3@4@4 @4@@4D@4HJ@4L@4P@4TJ@4X@4\@4`J@4d@4h@4 @4@4@4@4@4@4@4 @4 @4@44 @4@4@4@43 @4@4@4 @5  @5@5@5$ @5@@5D@5H@5L@5P@5T@5X@5\@5`@5d @5h @5l@5p@5tJ@5x@5|@5@5@5@5 @5 @5@5ȯ@5а@5@5 @5 @5 @5@6@6@6 @6( @6, @60 @64@68@6@@6\ @6` @6d @6h@6l@6 @6 @6 @6@6@6@6 @6B@6 @6@6@6 @6@6@6 @6 @6@6@7 @7 @7 @7$B@7(@7, @70@74@7< @7L @7P@7\@7`@7p @7t@7x@7|@7 @7  @7 @7@7@7 @7 @7@7@7@7@7@7@7 @7 @7 @7@7@8@8@8 @8 @8$@8(@8,@84 @8L@8P@8TJ@8X @8\@8`@8d @8h @8l@8x @8| @8@8@8 @8@8@8 @8 @8 @8  @8  @8@8@8а@8@8@8@8 @8 @9@9@9 @9$@9(@9,@90 @98 @9<@9@@9H @9`@9d@9h@9l @9p @9t@9x@9|@9@9@9 @9@9@9@9@9 @9@9@9@9@9@9@9@9ܯ@9 @9@:@: @:@: @:@:@: @:$@:(@:,@:0@:4@:<@:T @:XB@:\@:`@:d@:h@: @:@:@:@:@: @: @:@:@:@:@: @:@:@:@: @;@;@; J@; @;@;@;@;  @;$@;0 @;4@;L@;P@;T@;X @;\ @;` @;d@;h@;@;@; @;@;@;@;@;@;@; @;@;@;@; @;@;@<@<@< @<@< @<$@<, @<0@<<@<@ @@> @>$ @>(@>0@>D@>X @>\@>p@>t@>@>@>@> @>@>@>@> @>@>ܯ@>@>@> @?@? @?@?@?@?$@?8@?< @?@@?D@?T@?X@?\@?d @?h @?p@?t@?|@? @?@?@?@?@?@?@?@?@? @?@?@?@@ @@@@, @@0@@4@@<@@P@@T@@X@@\@@`@@h@@l@@x@@|@@@@@@ @@@@@@@@@@ @@ @@@@̯@@ذ@@@@ @@@@@A@A@A@A @A@A@A@A @A$ @A( @A,@A0@A8@AH@AP @AX@A\@A`@Ad@Ah@Ap@A @A@A@A@A@A@A@A@A@A@A@A@A̰@A@A@AJ@A@A@B@B @B B@B$@B( @B, @B0@B4@B8@B< @B@@BD@BL@Bd @BhB@Bl@Bp @Bt @Bx@B|@B@B @B@B@B@B @B@B@B@B@B@BȰ@B@B@B@B@B@B@B@B@B@C@C  @C@C@C@C @C$ @C(@C, @C0@C4 @C8@C<@CD @CH @CL @CP@CT@CX @C\@Cl@Cp@Ct@C4@C@C4@C@C@C@C@C @C @C@C@C@C@C@C@C@C@C@C@C@C@C@C@D@D @D@D(@D,@D0@D4@DL4@DP4@DT@DX3@D\4@D`@Dd3@Dh@Dl@Dp3@Dt4@Dx>@D|3@D@D @D3@D@D @D3@D @D @D  @D@D@D@D@D @D @D@D @D @D @D @D @D @D4 @D@D3 @D@D @E @E4@E@E 3@E@E@E @E@E(4@E,4@E04@E4@E8@ED@EH3@EL @EP @ET3@EX4@E\@E`3@Ed@Eh@El3@Ep4@Et@Ex3@E|@E @E  @E@E@E @E @E @E@E>@E4@E@E3@E@E @E4 @E @E@E@E3 @E@E@F @F  @F@F @F @F, @F0 @F4@F8>@F@4@FD@FH3@FL@FP @FT4 @Fh @Fl@Fp@Ft3 @Fx@F|@F @F  @F@F@F@F@F@F@F@F@F@F@F@F@F @F@FЯ@Fذ@F @F @F @F@F@F@G@G@G@G @G@G@G @G,@G0@G4@G8@G<@G@@GD@GH@GL@GP@GT@GX@G\ @G`@Gd@Gl@G @G @G @G@G@G@G@G@G@G @G@G@G@G@Gį@G԰ @G @G@G@G@H @H @H@H @H @H,@H0@H4@H8 @H<@HH @HL@HT@HX@H\@H`@Hd@Hh@Hl@Hp4@H|@H @H @H @H@H@H3@H@H@H@H@H @H  @H@H̯@Hذ @H@H@H@H @H@I@I @I@I @I @I @I$@I( @I,@IH@IL @IP@IT@IX@I\ @I` @Id@Ih@Ip@I @I @I @I @I @I@I@I@I @I @I @I @I@I@I @I @J @J @J@J  @J  @J$@J(@J@@JD @JH @JL @JP @JT@JX@Jl@Jp @Jt @Jx @J|@J@J @J @J  @J  @J  @J  @J@J@J@J @JB@J@J @J@J @J@J@J@K@K @K @K@K @K$@K,@K0@K4@K< @KL@KX@Kd@Kh@Kl @Kp@Kt>@Kx4 @K|@K3 @K@K @K@K@K@K@K@K @K @K  @K@K@K̰ @K@K@K@K@K@K @K@L@L@L @L@L @L @L  @L @L$@L4 @LD @LH@LT@LX@Ll@Lp@Lt@Lx@L|@L @L @L @L@L@L @L@L@L@L @L@L@L @L@L @L @L@L@L @L@M@M @M@M@M @M$ @M( @M,@M0@M8@MH @ML @MP @MT @MX @Mp@Mt@M| @M @M @M @M @M@M @M@M@M @M@M @M@M@M @M @M  @M  @M  @M@N@N @N$ @N( @N, @N0B@N4 @N8B@N<@N@ @ND@NH@NX@Nh@Nl@N|@N @N@N@N @N4 @N @N @N @N4 @N @N @N@N@N @N @N@N4@N @N @O@O@O @O@O@O 3@O$@O(@O,3 @O0@O4>@O84 @O<@O@3 @OD@OL3 @OP@OT>@OX4 @O\@O`3 @Od@Ol @Op @Ot  @Ox  @O|@O@O@O@O@O @O@O@O@O@O @O @O@Oد@O@O@O@P@P @P @P @P @P@P @P  @P$ @P(@P, @P0@P4 @P8@P<@P@@PD@PT@PX@P\@P` @Pd@Ph @Pl@Pp@Px@P| @P@P@P4@P@P@P@P@P @P@P@P@P@P@P4@P@P@P @P @Q@Q @Q@Q@Q3@Q@Q >@Q(@Q,@Q03@Q4@Q8@Q<  @Q@  @QD@QH@QP@Qd @Qh @Ql@Qp @Qt @Qx @Q|@Q @Q @Q@Q@Q @Q @Q @Q @Q@Q @Q @Q4 @Q @Q @Q @Q @Q@Q @Q@Q@Q3 @Q@Q>@R@R>@R @R @R  @R @R@R @R(@RD@RH @RL @RP@RT@RX@R` @R|@R @R @R@R@R@R @RB @R@R @R @R@R@R @R@R@R@R@R @RB @R@R @R@R>@R4 @R@S3 @S@S @S4@S @S @S$@S(3@S,@S0>@S44@S8@S<3@S@@SH @SL  @SP  @ST@SX@Sd @S@S@S@S@S@S @S@S@S @S @S @S@S@S @S @S @SB@S@S @S @S @S@S@S @T@T @T @T$B@T(@T, @T0 @T4 @T8@T<@TD @TX @T\ @T`@Td@Th @Tl @Tp @Tt@Tx@T@T@T @T @T@T@T @T@T @T@T@T @T4 @T @T@T@T3 @T@T>@U4 @U@U3 @U @U @U  @U @U @U$@U4 @UL @UP@UT@UXJ @U\@U` @Ud@Uh@Up@U@U@UJ @U@U@UJ @U@U@UJ @U@U@UJ @U @U4 @U@U@U@U @U@U@U@U@U@V@V3 @V@V @V@V @V  @V  @V$ @V( @V,  @V0@V4@VH @V`@Vd@VhJ @Vl@Vp@VtJ @Vx@V|@VJ @V@V @V @V @V @V@V@V @V @V @V@V@V@V@V@V@V  @V @V  @V@V@V @W @W@W@WJ @W @W$ @W(@W,@W4@WL@WP@WTJ @WX@W\@W`J @Wd@Wh@WlJ @Wp @Wt@W @W @W@W @W@W4@W @W @W@W@W@W@W@W@W@W@W@W @W@W@W3@W @X@X4 @X @X 3 @X@X  @X  @X  @X @X$@X8 @XL @XP@XT@XXJ @X\@X` @Xd@Xh@Xp @X@X@XJ @X@X@XJ @X@X@XJ @X@X@XJ @X@X @X @X @X @X @X@X@X@X@X@X@X @X  @X@Y@Y @Y @Y$@Y(@Y, @Y0 @Y4 @Y8B@Y<@Y@ @YD @YH@YL@YT @Yd@Yh@Yl@Yp @Yt @Yx @Y|B@Y@Y @Y @Y@Y@Y @Y@Y@Y@Y @Y@Y@Y @Y@Y @Y @Y @Y@Y @Y@Z @Z @Z@Z @Z@Z@Z  @Z$@Z4 @Z8@Z<@Z@@ZD@ZH  @ZL @ZP @ZT@ZX@Z`@Z| @Z4 @Z @Z @Z@Z@Z@Z@Z @Z@Z@Z3 @Z @Z@Z4 @Z@Z3 @Z@Z@Z  @Z @Z  @Z  @Z@Z@[ @[ @[ @[$@[(J @[,@[0 @[4@[8@[@ @[P@[T@[XJ @[\@[`@[dJ @[h@[l@[pJ @[t@[x@[|J @[@[ @[ @[ @[ @[ @[@[@[@[@[@[@[ @[  @[@[ȯ@[԰ @[@[@[@[ @[ @[ @[B@[@\ @\ @\@\ @\ @\ @\$@\(@\, @\0 @\4 @\8B@\<@\@ @\D @\H@\L@\T @\`@\d@\h@\l @\p@\x@\| @\@\ @\ @\ @\@\ @\@\ @\@\@\ @\@\@\ @\@\ @\@\@\@\@\  @] @] @]@] @] @]$@](@],J @]0@]4@]8@]@iH@iL@iP@iT @iX @i\  @i`@id@it@i@i@i@i=@i @i @i @i@i @i@i@iİ @i@i@i@i@i@i@i@i@i @i@j@j @j@j@j@j@j,@j0@j4 @j8 @j<  @j@@jD@jT @jd@jh=@jl@jp@jt@jx@j| @j @j@j @j@j4 @j@j3 @j@j@j@j@jİ @j@j @j @j4 @j @j@j>@j3 @j@j>@j@k@kJ@k@k @k @k$@k( @k, @k04 @k4 @k8>@k<@k@3 @kD>@kH@kL@kP@kTJ@kX@k\@kd@kt@kx@k|@k@k@k@k@k@k@k@k@k@k@k @k@k@k@k@k@k@k@k@k@k@k@k@k@k@k@k@k@lJ @l@l @l @l@l@l(@l,@l0@l4@l8@l<@l@@lD@lH@lL@lP@lT@lX@l\@l`J @ld@lh @ll@lp@lx@l @l@l@l@l@l=@l@l@l@l@l=@l@l@l@l @l@l@lJ @l@l@l@l @m@m@mJ @m@m @m$J@m( @m,@m0@m4@m8 @m<@mT@mX@m\@m` @md @mh @ml@mp@m@m@m@m@m @m@m@m@m @m @m@mЯ@m@m @m @m@m@n@n@n @n@n @n( @n@@nD@nH@nL@nP@nT@nX@n\@n`@nd@nh@nl@np@nt@nx @n|@n@n @n @n@n @n@n @n4 @n4 @n4 @n@n3 @n@n @n3 @n@n@n3 @n@n@n  @o@o@o@o,@o0@o4@o8@o<@o@@oD@oH@oL@oP @oT@ol@op@ot@o@o@o@o@o@o@o@o@o@o@o@o@o@o @o@p@p@p@p @p8@p<@p@@pD@pH@pL@pP @pT@p`@pd@ph@p@p @p@p@p@p@p@p@p @p@p@p@p@p@pJ @p@p@p@p@q@q@q@q @q @q$@q(@q,@q0@q4J @q8@q<@qD @q\@q`@qd@qh @ql@qp@qt@qx@q|@qJ @q@q@qJ @q@q@q@q@q @q @q@q@qȯ@qа@q@q@q@q @q@r@r@r@r @r @r$@r(@r< @rP@rT=@rX@r\@r`@rd@rh@rl@rp@rt @rx @r| @r@r@r @r @r  @r@r@r@r @r @r@rԯ@rܰ @r@r@r@r @sB@s@s @s @s@s @s$@s( @s, @s0 @s4@s8@sH @s\@s`@sd@sh @slB@sp@st@sxJ @s|@s @s @s @s@s@s@s@s@s@s@s@sJ @s@s @s @s @s@s@s @t@t@t@t @t@t@t@t @t  @t$ @t(@t,@t0 @t4@t8@t<@t@@tDJ @tH@tL @tP@tT@t\@tl @tp @tt@tx@t @t@t@t@t@t@t@t@t@t@t@t @t@t @t@t@t@t @t@tد@t @t@t@t@t@u@u@u@u @u@u@u@u@u @u$@u(J@u, @u0@u4@u<@uP@uT@uX@u\@u`@ud@uh @ul@u@u@u @u@u@u@u@u@u@u@u @u@u@u@u@u@u @u@u@v @v @v$@v, @v0B@v4@v8 @v<@v@@vH@v\ @v`@vl@vp @vt@vx@v@v @v@v@v@v@v@v @v @v@vܯ@v@w @w@w@w@w@w(@w, @w0 @w<@w@@wL@w` @wd@wp@wt@wx4@w|@w4@w@w3@w@w3@w@w @w@w@w@w@wد@w@w @w@x@x @x@x@x @x @x @x(@x0@x<@x@@xX@xd @xh @xl@xp@xt@xx@x|@x@x@x@x@x@x@x@x@x@x @x@xȯ@x԰@x@x@x @xB@x @x@y@y@y@y,@y4@y< @y@B@yD @yH@yP@yT@yh@y|@y@y @yB@y @y@y@y@y@y@y@y @yB@y @y@y@y@z@z@z$@z, @z0B@z4 @z8@z@@zD@zX@zl@zp@zt@zx @z| @z @z @z@z@z@z@z@z@z @z @z @z @z@zԯ@z@z@{@{@{@{ @{@{ @{@{,@{0@{4 @{8@{<@{P@{d@{l@{t@{x@{| @{@{@{@{@{@{@{@{@{@{@{ @{@{@{@{@{@{@{@|@|@|@| @|@|@| @|$@|(@|,@|4@|H@|L@|P@|T @|X@|\@|h@|l@|p@|t@||@|@|@|@| @|@|@|@|@|@|@|̰@|@|@| @|@|@|@}@}@}@} @}$@}( @},@}0@}<@}@@}D@}L@}`@}h@}p@}t@}x@}|@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@~@~@~ @~$@~(@~,@~4@~8@~<@~@@~T@~h@~l@~p@~t@~x@~|@~@~@~@~@~@~@~@~@~@~@~@~@~ԯ@~@~@@ @@$@8@<@@@D@H@L@`@t@x@|@@@@ @ @B@ @@@@@@@@@@ @@ @@0@4@8@< @@@T@X@\ @`@d@x @@@@@ @B @ @ @ @@ @@ @ @@@@@@ @@@@(@,@0@4 @8@L@P@T @X@\@p@@@@ @ @ @@@@@ @ @ @@Я@ذ@@ @@@@ @@(@, @4@8@@@P@T@X@\ @` @d @h @l@p@ @@@@ @ @ @ @ @@@а @@@@ @ @ @ @ @@@ @,@0@4@8 @< @@ @D @L @P@T@h @x@|@@ @ @ @ @ @@@ @@@@ @ @ @ @ @@@ @@@ @$ @( @, @0 @< @@@D@X@l@p@t@x@|@@ @B@@ @@@@@@@@@@@ @B@@ @@@@@@ @@@@@ @$@0@4 @8 @<@@@H @\@`@d@h@l@p@t@x @|@@@@@@@ @ @@@Ȱ@ @ @@@@@ @ @@@@$@4@8@<@@@D@H@L@P@`@t@x@|@ @ @@@@@@@@@@@@ȯ@ܰ@ @ @@@@$ @( @8@< @@ @D @H @L4 @P@T @d @h@l@p3 @t@x @|@ @ @@ @  @ @@@@ @ @B@@ @ @ @@ܯ@@ @ @B@@ @ @ @@@ @, @0 @4@@@D@H@L@P @T @X@\@d@t @x@| @ @ @ @@ @@ @ @ @@ @ @ @ @ @ @ @ @4@@ @ @@@ 3@@@ @ @  @$ @(@,@0 @4 @8  @<@@@D@T @X@\ @` @d@h @l @| @@ @ @ @4 @@ @ @@@3 @@@ @ @@@ @ @  @@@@@@@ @@@@$@(@,@0 @4 @8@< @@ @D@H@\@p @t @x @| @@@ @@@@@@@ @B@@ @@@@@@ @@@@$@(@,@0 @4@@@D@H@L @P@T@\ @t @xB@|@ @@@@@ @ @ @@@ @ @4@@3@@@@ @ @ @@@@@ @$@,@0@4@@@L@P@T@\ @`@d@l@p@t@|@@@@@ @@4@@@3@@ @@ȯ@԰@@ @@@J0@ @@@@@ @@ @$J0@( @,@0@8 @L @P@\@` @d@l @p @t4 @| @ @@@ @ @ @@ @@3 @4 @ @@ @3 @@@ @ @ @@@ @$B@( @,@H@L@T @X@\@p@t@x@@@ @@@@@ @ @@@Ȱ@B@ @@@@ @@@@@@$ @( @,@0@8@L @PB@T@X@`@l @p @t@|@@@@ @ @@@@@@@@@@@@@@@@@ @@B@ @@@,@0@4@8@@@D@H@L@P@T@X@\@`@d @h@lB@p@t@|@ @@@ @ @ @@@@@@ @@@ @@ @@@@@@ @@@@,@0@D@H@L  @P@T@\@l@p @t@x@|@@@ @@@@@@@Ȱ@ @ @@@@@@@@ @4@ @@@@@ @$@(@0@4@<@@3@D@H @L @P@T@\@p @t@|@ @ @@@ @@ @@@4@@4@@@@4@ @@@3@@3@@3@@@ @4@ @$@(@,4@0@4@8@<3@D@T3@X@` @l@p@t@ @@@@@ @ @@@ȯ@а@@ @ @@@@ @$ @( @, @0 @4 @8 @< @@@D@X @l@p @t @x@|@@@@ @ @ @ @ @ @ @  @  @  @  @ @ @@د@ @@  @ @ @ @ @ @$@8 @< @@4 @D @H3 @L@P @T@X@\ @`@t@x@|@@@@  @  @@@ @@ @ @ @ @ @@@ @ @4 @ @3 @@ @@@@ @ @ >@$@(@,@0@4  @8  @<@@@D@\ @`B @d @h @l @p @t @x @| @@@@@@@@4@@@@@@@4@>@@@@@3@4@@3@@>@@3@@4@,@03@4@8  @<  @@  @D  @H@L@` @x @| @@@J @ @@@@ @@@@  @  @@ȯ@̰ @ @@@@@@@@@,@0@4@8@<@@@D@P@T@\ @` @d @h@l@@ @@@@@ @@@İ@ @ @@@ @@@@@ @ @ @@$@( @, @0@4@D @X@\@`@d @h @l @p@| @@@@ @ @ @  @@@@@ @@Я@ذ@ @ @ @@ @ @@@ @4 @8 @<@P@T@X@l@p@t @x @|@@ @@@@@@ @@ @@@@@J @@ԯ@ܰ@@@@@@ @ @(@0@4 @8 @L@P@T@X@\@`  @d @h@l@|@@@@@@ @ @ @ @@ @ @ @@ @@ @@@ @@@ @( @4 @8@D@H@X@`@d@h@l@p@t@ @ @ @ @ @@@ @@@@@@ @@@@@ @@@ @$@(@,@4@@@D @H@L@P@T@X @\@`@h @| @ @ @@ @ @ @@ @@ @@@ @@@ @ @@ @@@ @@@@ @ @$@0 @D @H @L@P @\ @` @l@p@@@@@@@ @@@@@̯@ܰ@@@ @@@ @$ @(@8@<@@@D@H @L @P@T@h@x@ @ @ @ @@@@@ @ @ @@د@@ @ @@@@ @ @ @@@, @8 @<@H@L@P@T@X@\ @` @d @h @l@p@ @@@ @ @ @@ @@@@@ @@@ @@@ @ @@ @$@0@4@8@< @@@D@T @`@d @l@p @t@@@@@ @ @@@@ @ @ @ @@̯@ذ @ @ @ @@@@ @@8@< @@ @D@P @T@X @\@` @d @h  @l@p@@ @ @ @@@ @ @ @@@@ @@ @@@@ @ @ @@@,@< @@ @D @H@L@T @d @h @l@|>@@ @@ @@@ @ @@@ @@@ @ @@د@@ @ @ @@@@ @ @$ @(@,@8 @D @H @L@X@\@`@d @h @l@p@@ @@@ @@@İ@@ @ @@@@ @ @@@ @ @ @@(@,@0@4 @8 @< @@@D@T@d@h@l@p=@t @x@| @ @ @ @@@@ @ @ @@@@ @@Я@ذ@@ @@@@ @@@@ @(@4@8@<@@@H @d@h@l@p@x@|@@@@@ @@@@@@@@@ @@@@@@@@ @@ @$@(@0 @@@P@` @d @h @l @p @t@x@ @@@ @ @ @ @ @@Я@ @@@ @ @ @ @ @@ @0 @@@L@X @\ @` @d @h @l@p@ @@@ @ @ @ @ @  @ @@Я@ @@@ @ @ @ @ @$  @( @,@0@@ @P@` @p @t@x@|@ @@@ @@ @ @ @ @  @ @@@ @@ @ @$@(@,@0 @4@8@H @X@h @x @| @ @  @ @@@ @@ @ @@@@ @@@ @@ @( @, @0 @4 @8  @< @@  @D@H@X @h@t @ @ @ @ @  @@@ @@ @ @ @ @ @  @ @  @@@ @@$ @0 @4 @8 @< @@  @D @H  @L@P@` @p@|@@ @ @ @ @ @ @@@ @@@@ @ @ @ @ @ @@@ @@ @(@, @0 @4 @8 @< @@ @D@H@X @h@t @ @ @ @ @ @  @  @@@ @@ @ @ @ @ @  @  @ @@@ @ @0 @@ @D @H @L @P  @T @X  @\@`@p @@ @ @ @ @ @  @ @  @@@Ȱ @@ @ @@@@ @ @@ @0@@@P @T @X @\ @` @d@h@x @@ @ @ @ @ @@@İ @@ @ @ @ @ @@@ @ @4 @H @L @P @T @X  @\@`@x @@ @ @ @ @ @  @@@ذ @@ @@@ @  @@ @$ @(@,@0@4@8 @<@@@P @`@l@x@| @ @@@ @ @@@ @@@ @@  @@į@԰ @@ @ @ @ @ @  @  @ @@@$ @4@D @T@d@h@l@p@t@x@| @@@ @@ @@@@@@@@ @@@ @@ @,@<@@@D@H@L@P@T @X@\@l @|@ @@@@@@@@ @@į@ذ@ @@ @ @@ @ @4 @ @ @@,@0 @4@8 @<@@@D3 @H@L @P4 @T @X@\ @`4 @d @h@l@p3 @t@x@|3 @@@  @ @@@@ @@@ @@ԯ@@ @@@ @@ @@, @0@8@D @H@L@X@h @l@t@| @@@@ @@@@ @ @@@İ @@ @@@@ @ @ @@@@$@<@@ @D @H @T @X @\ @d @h @l@x @|@@@@@ @@  @  @  @@@а @ @@@ @@ @@$ @(@8@<@@@D@H@L@P @T @\ @h  @l@p@x @@ @ @ @ @ @@ @@@İ@@@ @@@@ @ @ @ @ @@ @ @0@44 @8@<@@@D@H3 @L@P @T  @X  @\  @`@d@h @ @@@ @@ @@@@@J #@@@Ȱ @@ @@J @@J @@J @ @@@@@ @ @$ @( @, @0 @4 @8 @<@@@P @`@d @h @l @p @t @x @|@@ @ @@ @@ @@ @@@ @@ @@ @@ @@ @@ @@ @ @@@, @0 @4 @8 @@@L@T@h @l @p @t @|@@@@@ @ @@@@ @@į@԰@ @@@ @ @@@@$@(@0@<@D@H@T@X@`@l@t@x@|@@@@@@@@@@@ @@Я@ذ@ @@@@@ @@ @(@,@4@@@H@L@T@`@h@l @p@t@| @@@@@@@@@@ @@@@@@@@@@@@@ @ @$@,@4 @H @L@P @T4@`@d@h3@l@p @t@|@@@ @@@ @@4 @ @@@@@@@ @ @@@ @$@(4@4@83@<@L3 @P@d @h @l@p@|@ @@ @ @@@İ@ @@@@@ @@@@, @0@4@<@P @T@X@\>@`@d @h@t4@| @@4 @ @@4 @ @@@ @@4 @ @ @@@ @@4 @ @@@@@ @,4@4@8@<@@@D@H@T4@\@`@d@h@l@p@t@x@|@@@@@@@@@4@@3@4@4@4@4@@@3@@3@@3@@3@@3@ @@>@@3@ @$@(>@,@03 @4@8@<>@@@D3 @H @L @P>@T@X3 @\@`@d>@h@l3 @p@t@x>@|@3@@@>@@ @ @ @@@@@@@@ @@@@@@ @@ @ @@@( @8@< @@@H@L@\@`@d@h@p @t@x@|@€@„4@Œ @@”3@˜@¬ @°@´@İ @ @@@@@@@ @$@(4@4 @8 @@ @D@X@\ @` @h @l @p @t @x @|4 @È @Ì@Ô3 @Ø @è3@ì4@ø@ü@3@@ @ @@ԯ@ܰ@ @@@@@ @ @( @,@0@H@X @\@`@h@Ā@Ą @Ĉ@Č@Đ@Ĩ@ @@ȯ@а @ @@4@@@ @$3@(4@,@03@44@8@<3@@@D@H@L@P @T@X@p@ň@Ō @Ő@Ŝ@Š @Ť@Ŭ@@@ܯ@@@ @ @@@4@P @T@X@`@p@t @x@|@ƌ@Ɯ@Ơ @Ƥ@ƨ@Ƹ@@ @@ԯ@@@ @@@@( @,@0@4@8@<@@@D@H@L @P@\@`@x@|@ǀ @DŽ @Lj@nj@ǔ@Ǭ@ǰ@Ȱ @ @@ @4@@@@@@ @,@04@4@84 @@ @D@`@d3@h@l@x@|3 @Ȁ@Ș@Ȝ@Ƞ3@Ȥ@ȴ @ȼ @@̯@ذ@@@@, @0 @4@8@<@@@D@H@L@P@T@X @\ @d@h @l @p@| @ɀ@Ʉ4@Ɉ @Ɍ@ɔ @ɘ @ɜ @ɤ4 @ɨ @ɬ @ɰ@ɸ @ɼ@3 @@ @3@@@@@@@ @  @ @@@ @ @@ @$J)@( @,@D@H@L@T@\@` @d @h@l@t@ʐ@ʔJ)@ʘ @ʜ@ʤ@ʬ@ʰ@@@@@@@ @@@@@ @@@@ @4@8J@@3@>@@@ @ @@@ @(@,@<@@ @DB@H@L @P@T@d@@@@ @ @ @ @@@@@@@ @B@@ @@@ @(@,@<@@ @D @H @L @P@T@`@|@@@ @B@@ @@@@@@@ @ @ @ @@@@$ @(@,@<@@ @DB@H@L @P@T@h@ @@@@@@@ @@@@ @B@@ @@@@4 @8@<@L@P@T@h @x @|@@@@@4@@3@4@@4@ @4 @@3 @@3@@3@@ @ @ @@@$@4 @8@<@D@T@h @| @@@@@@@ @@Я@ذ@@@  @ @ @$ @4 @8 @<@@ @D @H @\ @p @t@@@@ @@  @@@ @@ @ @ @@@  @@  @@@0 @@@P @` @d @h @l @p@t@ @@@ @@@@@@@ @ @ @, @0@4@D @H @L @P@T@\ @` @d@h@p@t  @x@|@ @@ @@@@@Я@ @@ @@@(@,@0@D @T@d @t @x @| @@@ @@ @ @ @ @@@ @ @ @,@0@<@@@D@T @d@p @|@@@@@ @@ @@@@@@@ @@$ @0 @4@8@D@H@L@\ @l@x @@@@@ @@@ @@ܯ@ @@@ @@@, @<@L @\ @` @d @h @l@p@ @@ @@@@@@ܯ@ @@ @@@(@,@0@@ @P@\ @h@l@x@|@@ @@ @ @ @ @ @@ԯ@ @@ @ @$ @(@,@< @@@D  @H@L@` @p@ @@@@@@ @@ @@@@@@ @$@4 @D @H @L @P@T@p @@ @@@@@@İ @@ @@@ @@@$ @4@D @T @X @\@l@p@t@x@|@ @@ @ @ @@@@@@@@@ @@@ @$@(@, @0@4@H@\@`@d@p@t@x@|@ @@@@@@@@@@@ @@ܯ@@@@ @@@ @$@( @,@0@D@X@\ @`@d@l@p@t@x@@@@@@@@ @@@̰@@ @@@@@@@@ @$@(@0@4@8@@@T@X@\ @h@l@t@@ @@@@@@@@ @@@@@ܯ@@@ @ @ @ @ @ @ @ 0@ 4 @ 8@ <@ D@ H@ L@ T@ h@ l @ p@ t@ |@ @ @ @ @ @ @ @ @ @ @ İ@ @ @ @ @ @ @ @ @ @ @  @ @ $@ 0@ 4@ 8@ <@ D@ X@ \ @ `@ d@ p@ t@ x@ |@ @ @ @ @ @ @ @ @ @ İ@ @ @ @ @ @ @ @ @ @ @  @ @ $@ ,@ 0@ 4@ <@ P@ T @ X@ \@ h@ l@ p@ x@ @ @ @ @ @ @ @ @ @ @ @ @ ܯ@ @ @ @ @ @ @ @ 0@ 4@ 8 @ @@ D@ L@ `@ d@ h @ p@ t@ |@ @ @ @ @ @ @ @ @ @ @ @ @ ܯ@ @ @ @ @ @ @ @ @ @ 0@ 4 @ 8@ <@ H@ L@ P@ X@ l@ | @ @ @ J @ @ @ @ @ @ @ @ J @ @ @ @ @ @@@J @ @$@,@< @@@D@H@L@P @T@X@h@|@@ @@@@@@ @@ȯ@а@@@ @@@@@@ @$@(@0@D@H@L @X@\@d@x@|@ @@@@@@ @@į@̰@@@ @@@@$bin_cut$cut??truefail_?truecwrite_???truecnl_?truevar_???truenonvar_???trueinteger_???trueatomic_???trueis_compiled_???true+_??1?true-_??1?true*_??1?truemod_??1?true//_??1?true/_??1?truerandom_1?trueget0_1?trueput_?0?trueless_??0?truegreater_??0?trueless_eq_??0?truegreater_eq_??0?truearith_eq_??0?truearith_dif_??0?true<<_??1?true>>_??1?true/\_??1?true\/_??1?true#_??1?true\_??1?truecompare0_??1?truearg_??1?truesetarg_???0?truechange_arg_???0?truedef_???0?truerm_??0?trueset_???0?trueval_??1?truelval_??1?truesymcat_??1?truedcg_connect_1?truelist2term_?1?trueterm2list_???1?trueself_info_1?trueadd_instr_????0?truelift_heap_??0?truedet_append0_??1?truecopy_term_??1?truebb_list0_??1?trueolder_file_??0?trueseeing_telling_?1?truesee_tell_??0?trueseen_told_?0?trueseeing_telling_at_?1?truesee_tell_at_??0?truestring_op_??1?trueop0_???0?trueterm_append_??1?truefloat_fun2_???1?truefloat_fun_??1?trueinput_float_???1?truewrite_float_?0?truestrip_cont0_?1?truedcg_def_?0?truedcg_val_1?truedcg_tell_?0?truedcg_telling_1?trueiso_open_stream_??1?trueiso_close_stream_??0?trueiso_write_term_???0?trueiso_read_term_??1?trueiso_put_byte_??0?trueiso_get_byte_?1?trueiso_peek_byte_?1?trueiso_eof_?0?trueiso_lseek_???1?truebb_put_??0?truebb_get_???1?truebb_op_??1?truesetref_??0?trueunix_argc_1?trueunix_argv_?1?trueunix_getenv_?1?trueunix_access_??0?trueunix_cd_?0?trueunix_kill_??0?truequiet_1?truecreate_engine_???1?truedestroy_engine_?0?trueload_engine_???0?trueask_engine_?1?truemultitask_engines_?0?truesuspend_engine_?0?truenew_builtin_??1?truehalt_?0?truetrue_?truecall_?trueabort_?truerestart_?truefindall_store_heap_?truefindall_load_heap_?truefunctor_?truename_?trueshell_?truestat0_?truelist_asm_?truebb_reset_?trueprofile_?trueif0_?true1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=bu0failfail?0in_body?truebu0cwritecwrite?1in_body?truebu0cnlcnl?2in_body?truebu0varvar?3in_body?truebu0nonvarnonvar?4in_body?truebu0integerinteger?5in_body?truebu0atomicatomic?6in_body?truebu0is_compiledis_compiled?7in_body?truebu0++?in_body?arith01truebu0--?in_body?arith11truebu0**?in_body?arith21truebu0modmod?in_body?arith31truebu0////?in_body?arith41truebu0//?in_body?arith51truebu0randomrandom?in_body?arith61truebu0get0get0?in_body?arith71truebu0putput?in_body?arith80truebu0lessless?in_body?arith90truebu0greatergreater?in_body?arith100truebu0less_eqless_eq?in_body?arith110truebu0greater_eqgreater_eq?in_body?arith120truebu0arith_eqarith_eq?in_body?arith130truebu0arith_difarith_dif?in_body?arith140truebu0<<<<?in_body?arith151truebu0>>>>?in_body?arith161truebu0/\/\?in_body?arith171truebu0\/\/?in_body?arith181truebu0##?in_body?arith191truebu0\\?in_body?arith201truebu0compare0compare0?in_body?arith211truebu0argarg?in_body?arith221truebu0setargsetarg?in_body?arith230truebu0change_argchange_arg?in_body?arith240truebu0defdef?in_body?arith250truebu0rmrm?in_body?arith260truebu0setset?in_body?arith270truebu0valval?in_body?arith281truebu0lvallval?in_body?arith291truebu0symcatsymcat?in_body?arith301truebu0dcg_connectdcg_connect?in_body?arith311truebu0list2termlist2term?in_body?arith321truebu0term2listterm2list?in_body?arith331truebu0self_infoself_info?in_body?arith341truebu0add_instradd_instr?in_body?arith350truebu0lift_heaplift_heap?in_body?arith360truebu0det_append0det_append0?in_body?arith371truebu0copy_termcopy_term?in_body?arith381truebu0bb_list0bb_list0?in_body?arith391truebu0older_fileolder_file?in_body?arith400truebu0seeing_tellingseeing_telling?in_body?arith411truebu0see_tellsee_tell?in_body?arith420truebu0seen_toldseen_told?in_body?arith430truebu0seeing_telling_atseeing_telling_at?in_body?arith441truebu0see_tell_atsee_tell_at?in_body?arith450truebu0string_opstring_op?in_body?arith461truebu0op0op0?in_body?arith470truebu0term_appendterm_append?in_body?arith481truebu0float_fun2float_fun2?in_body?arith491truebu0float_funfloat_fun?in_body?arith501truebu0input_floatinput_float?in_body?arith511truebu0write_floatwrite_float?in_body?arith520truebu0strip_cont0strip_cont0?in_body?arith531truebu0dcg_defdcg_def?in_body?arith540truebu0dcg_valdcg_val?in_body?arith551truebu0dcg_telldcg_tell?in_body?arith560truebu0dcg_tellingdcg_telling?in_body?arith571truebu0iso_open_streamiso_open_stream?in_body?arith581truebu0iso_close_streamiso_close_stream?in_body?arith590truebu0iso_write_termiso_write_term?in_body?arith600truebu0iso_read_termiso_read_term?in_body?arith611truebu0iso_put_byteiso_put_byte?in_body?arith620truebu0iso_get_byteiso_get_byte?in_body?arith631truebu0iso_peek_byteiso_peek_byte?in_body?arith641truebu0iso_eofiso_eof?in_body?arith650truebu0iso_lseekiso_lseek?in_body?arith661truebu0bb_putbb_put?in_body?arith670truebu0bb_getbb_get?in_body?arith681truebu0bb_opbb_op?in_body?arith691truebu0setrefsetref?in_body?arith700truebu0unix_argcunix_argc?in_body?arith711truebu0unix_argvunix_argv?in_body?arith721truebu0unix_getenvunix_getenv?in_body?arith731truebu0unix_accessunix_access?in_body?arith740truebu0unix_cdunix_cd?in_body?arith750truebu0unix_killunix_kill?in_body?arith760truebu0quietquiet?in_body?arith771truebu0create_enginecreate_engine?in_body?arith781truebu0destroy_enginedestroy_engine?in_body?arith790truebu0load_engineload_engine?in_body?arith800truebu0ask_engineask_engine?in_body?arith811truebu0multitask_enginesmultitask_engines?in_body?arith820truebu0suspend_enginesuspend_engine?in_body?arith830truebu0new_builtinnew_builtin?in_body?arith841truebu0halthalt?in_body?arith850truebu0truetrue?0in_head?truebu0callcall?1in_head?truebu0abortabort?2in_head?truebu0restartrestart?3in_head?truebu0findall_store_heapfindall_store_heap?4in_head?truebu0findall_load_heapfindall_load_heap?5in_head?truebu0functorfunctor?6in_head?truebu0namename?7in_head?truebu0shellshell?8in_head?truebu0stat0stat0?9in_head?truebu0list_asmlist_asm?10in_head?truebu0bb_resetbb_reset?11in_head?truebu0profileprofile?12in_head?truebu0if0if0?13in_head?truebu_ctrn_inlinen_inline66?truebu_ctrn_arithn_arith74?truebu_ctrn_builtinn_builtin160?truebu_ctrn_nopn_nop174?truebu1!!?truebu1..??truebu1compilecompile??truebu1includeinclude??truebu1oror??truebu1ifif??truebu1strip_contstrip_cont??truebu1termcattermcat??truebu1add_contadd_cont??truebu1asmasm?truebu1asmasm??truebu1=..=..??truebu1::-::-??truebu1statisticsstatistics?truebu1interactiveinteractive??truebu1metacallmetacall??truebu1metatruemetatrue??truebu1expand_termexpand_term??truebu1==??truebu1->->??truebu1;;??truebu1,,??truebu1repeatrepeat?truebu1\+\+??truebu1\=\=??truebu1findall_workhorsefindall_workhorse??truebu1findallfindall??truebu1findallfindall??truebu1findall_conjfindall_conj??truebu1findall_conjfindall_conj??truebu1findall_disjfindall_disj??truebu1findall_disjfindall_disj??truebu1allall??truebu1whilewhile??truebu1skip_untilskip_until??truebu1skip_whenskip_when??truebu1find_whilefind_while??truebu1nth_answernth_answer??truebu1take_at_mosttake_at_most??truebu1drop_at_leastdrop_at_least??truebu1has_fuelhas_fuel??truebu1find_at_mostfind_at_most??truebu1all_but_at_leastall_but_at_least??truebu1forfor??truebu1argnargn??truebu1appendappend??truebu1membermember??truebu1det_appenddet_append??truebu1..??truebu1++++??truebu1lengthlength??truebu1make_cmdmake_cmd??truebu1numbervarsnumbervars??truebu1gc_callgc_call??truebu1groundground??truebu1atomatom??truebu1floatfloat??truebu1numbernumber??truebu1compoundcompound??truebu1appendNappendN??truebu1append_conjappend_conj??truebu1append_disjappend_disj??truebu1tabtab??truebu1getget??truebu1isis??truebu1exprexpr??truebu1comparecompare??truebu1====??truebu1\==\==??truebu1@<@<??truebu1@>@>??truebu1@=<@=<??truebu1@>=@>=??truebu1<<??truebu1>>??truebu1=<=<??truebu1>=>=??truebu1=:==:=??truebu1=\==\=??truebu1++??truebu1--??truebu1\\??truebu1bb_defbb_def??truebu1bb_setbb_set??truebu1bb_valbb_val??truebu1bb_rmbb_rm??truebu1bb_letbb_let??truebu1bb_change_argbb_change_arg??truebu1letlet??truebu1bb_defbb_def??truebu1bb_setbb_set??truebu1bb_valbb_val??truebu1bb_rmbb_rm??truebu1bb_letbb_let??truebu1dcg_phrasedcg_phrase??truebu1dcg_phrasedcg_phrase??truebu1:=::=:??truebu1##??truebu1powpow??truebu1loglog??truebu1sqrtsqrt??truebu1expexp??truebu1loglog??truebu1sinsin??truebu1coscos??truebu1tantan??truebu1asinasin??truebu1atanatan??truebu1acosacos??truebu1integerinteger??truebu1floatfloat??truebu1statisticsstatistics??truebu1predicate_propertypredicate_property??truebu1current_predicatecurrent_predicate??truebu1current_predicatecurrent_predicate??truebu1ctimectime??truebu1helphelp??truebu1aproposapropos??truebu1aproposapropos??truebu1unixunix??truebu1systemsystem??truebu1meta_interpretermeta_interpreter??truebu1tracetrace??truebu1dynamicdynamic??truebu1assertaasserta??truebu1assertzassertz??truebu1assertassert??truebu1retractretract??truebu1retractallretractall??truebu1instanceinstance??truebu1eraseerase??truebu1clauseclause??truebu1abolishabolish??truebu1debugdebug??truebu1consultconsult??truebu1reconsultreconsult??truebu1listinglisting?truebu1listinglisting??truebu1listinglisting??truebu1=>=>??truebu1assumeiassumei??truebu1assumelassumel??truebu1assumedassumed??truebu1assumed_clauseassumed_clause??truebu1assumed_clauseassumed_clause??truebu1-:-:??truebu1is_assumedis_assumed??truebu1is_dynamicis_dynamic??truebu1bbbb?truebu1bbbb??truebu1bb_listbb_list??truebu1bb_elementbb_element??truebu1sortsort??truebu1keysortkeysort??truebu1bagofbagof??truebu1setofsetof??truebu1^^??truebu1free_variablesfree_variables??truebu1notnot??truebu1term_charsterm_chars??truebu1vars_ofvars_of??truebu1user_erroruser_error??truebu1errmeserrmes??truebu1quietmesquietmes??truebu1mainmain?truebu1mainmain??truebu1topleveltoplevel?truebu1is_prologis_prolog??truebu1get_codeget_code??truebu1put_codeput_code??truebu1nlnl?truebu1readread??truebu1read_termread_term??truebu1top_read_termtop_read_term??truebu1warn_singletonswarn_singletons??truebu1read_with_singletonsread_with_singletons??truebu1read_clauseread_clause??truebu1read_tokensread_tokens??truebu1writewrite??truebu1printprint??truebu1writeqwriteq??truebu1portable_displayportable_display??truebu1displaydisplay??truebu1portrayportray??truebu1portray_clauseportray_clause??truebu1pp_clausepp_clause??truebu1pp_termpp_term??truebu1fast_writefast_write??truebu1ttyinttyin??truebu1ttyoutttyout??truebu1ttyputttyput??truebu1ttynlttynl?truebu1ttyprinttyprin??truebu1ttyprintttyprint??truebu1ttycwritettycwrite??truebu1ttycwritelnttycwriteln??truebu1seesee??truebu1seeingseeing??truebu1seenseen?truebu1telltell??truebu1tellingtelling??truebu1toldtold?truebu1see_atsee_at??truebu1seeing_atseeing_at??truebu1tell_attell_at??truebu1telling_attelling_at??truebu1file_search_pathfile_search_path??truebu1file_extension_listfile_extension_list??truebu1file_libraryfile_library??truebu1make_file_namemake_file_name??truebu1find_filefind_file??truebu1exists_fileexists_file??truebu1see_or_failsee_or_fail??truebu1flushflush?truebu1sreadsread??truebu1swriteswrite??truebu1bu0bu0??truebu1bu1bu1??truebu1current_opcurrent_op??truebu1opop??truebu1is_builtinis_builtin??truebu1editedit??truebu1my_editmy_edit??truebu1editedit?truebu1eded?truebu1textedittextedit?truebu1emacsemacs?truebu1picopico?truebu1notepadnotepad?truebu1vivi?truebu1coco?truebu1current_user_filecurrent_user_file??truebu1lsls?truebu1dirdir?truebu1make_applmake_appl??truebu1make_executable_unix_applmake_executable_unix_appl??truebu1makemake?truebu1makemake??truebu1makemake??truebu1makemake??truebu1makemake??truebu1make0make0??truebu1cmakecmake?truebu1cmakecmake??truebu1cmakecmake??truebu1kmakekmake?truebu1kcmakekcmake?truebu1tmaketmake?truebu1tmaketmake??truebu1tmaketmake??truebu1ctracectrace?truebu1bootboot?truebu1add_trueadd_true??truebu1gc_readgc_read??truebu1gc_read_clausegc_read_clause??truebu1do_bodydo_body??truebu1tr_bodytr_body??truebu1ith_clauseith_clause??truebu1char_in_cmdchar_in_cmd??truebu1show_code0show_code0??truebu1bu_ctrbu_ctr??truebu1patch_itpatch_it??truebu1lwritelwrite??truebu1module_callmodule_call??truebu1modulemodule??truebu1modulemodule??truebu1is_moduleis_module??truebu1modulesmodules??truebu1current_modulecurrent_module??truebu1module_predicatemodule_predicate??truebu1module_namemodule_name??truebu1publicpublic??truebu1is_publicis_public??truebu1gensymgensym??truebu1init_gensyminit_gensym??truebu1spy_goalspy_goal??truebu1spyspy??truebu1spyingspying??truebu1nospynospy??truebu1otherwiseotherwise?truebu1falsefalse?truebu1copy_termcopy_term??truebu1phrasephrase??truebu1phrasephrase??truebu1nth_membernth_member??truebu1member_imember_i??truebu1savedsaved??truebu1stat_dictstat_dict??truebu1set_c_thresholdset_c_threshold??truebu1set_c_thresholdset_c_threshold??truebu1set_c_traceset_c_trace??truebu1CC??truebu1halthalt?truebu1::??truestat_dictruntimeruntime0?truestat_dictglobal_stackglobal_stack1?truestat_dictlocal_stacklocal_stack2?truestat_dicttrailtrail3?truestat_dictcodecode4?truestat_dictstringsstrings5?truestat_dictsymbolssymbols6?truestat_dicthtablehtable7?truestat_dictbboardbboard8?trueuser_error_???basic??prolog:error_messageerrmes_???pretty??prolog:error_messageprolog:error_message_0?5010prolog:portray_error???$bin_cut?tell?fail?user?tellquietmes_0?40?ttyprintquietmes_?trueprolog:portray_errorbasicbasic?>>> ???: ????trueprolog:portray_errorprettyprettywrite?write: cnlportray_clause??*** ?writemember_.???truemember_.??membernth_member_??1?member_imember_i_?.???truemember_i_.???10member_i:_module_callmodule_call_?$bin_cut?call??is_publicmodule_call_call???module_predicatemodule_predicate_.??module_name???=..???.?????=..module_name_?????.?[]??.58[]name??det_append???name???.???namemodule_name_?.?.?[]should_be_nonvar?user_errormodule_?bb_letmodule_name???currentmodule_namebb_letmodule_member??prolog:public0?fail??modulemodule_?truecurrent_module_$bin_cut?=???currentmodule_namebb_valcurrent_moduleuseruser?trueis_module_?????module_name??bb_valis_module_bb_element???=??+?/?0/module_name0??bb_listmodules_??is_module?findallprolog:hide_atom_$bin_cut???prolog:hide_atom0prolog:hide_atom_??trueprolog:hide_atom0_$bin_cut?fail?usercurrent_moduleprolog:hide_atom0_$bin_cut?fail?is_publicprolog:hide_atom0_module_predicate??????current_moduleprolog:public0//??current_module?bb_defpublic??$bin_cut???functorprolog:public0_?public?bad or repeated declarationerrmespublic,,???public???publicpublic_prolog:public0is_public_??prolog:is_publicprolog:is_public_?$bin_cut?=???public??bb_valprolog:is_public_?is_builtininit_gensym_??gensym?0bb_letgensym_symcat??????prolog:gensym_noprolog:gensym_no_gensym?0??11gensym??0?trueprolog:gensym_no_?1gensym??0?truecurrent_op_??????prolog:get_opcurrent_op_if????valopmark??prolog:get_op???,?fail$bin_cut??010000?forop_???0?trueprolog:get_op_prolog:get_op0????????prolog:op_typeprolog:get_op0_??1??1?00?trueprolog:op_typexfyxfyinfixop?trueprolog:op_typexfxxfxinfixop?trueprolog:op_typeyfxyfxinfixop?trueprolog:op_typefxfxprefixop?trueprolog:op_typefyfyprefixop?trueprolog:op_typexfxfpostfixop?trueprolog:op_typeyfyfpostfixop?trueis_dynamic_?$first0?trueis_assumed_$assumed?0???truespy_goal_tracespying_yes?spying?1?truespy//??\+?$bin_cut?bb_letspying?yes?is_builtin??functorspy_??unable_to_spy_on?user_errornospy//???bb_rmspying???functorprolog:is_builtin_nonvar_bu1?$bin_cut????metacallprolog:is_builtin_nonvar_cont?prolog:bu????termcatprolog:is_builtin_var_bu1??metacallprolog:is_builtin_var_strip_cont???????prolog:buis_builtin_???prolog:is_builtin_nonvaris_builtin_prolog:is_builtin_varinteractive_????=?yes=?noprolog:is_interactiveifinteractive_??prolog:interactive0prolog:is_interactive_?current_op1199fx?-\+prolog:interactive0yesyes?1200fx?-opprolog:interactive0nono?1199fx?-opexpand_term_prolog:portable_expand_termprolog:std_expand_term_prolog:portable_expand_termstrip_cont_-???1?truemetatrue_metacall??strip_contmetacall_?meta_interpreter?call_ifdef?user_errorno meta_interpreter for undefined goal??prolog:call_ifdefotherwise_truefalse_?trueprolog:call_ifdef_????callprolog:call_ifdef_??call=_??true->_$bin_cut?call???call;->->???????if;_?call;_??callor_?callor_??callif_$bin_cut?call???callif_??call,_call???call\+_$bin_cut?fail??call\+_?true\=_????true\=_?truehalt_00truerepeat_truerepeat_repeatfindall_workhorse_??0findall_store_heap????callfindall_workhorse_??findall_load_heapfindall_?.??.0findall_workhorsefindall_?[]findallfindall_conj_?truefindall_conjfindall_conj_?,??,0findall_workhorsefindall_disj_?failfindall_disjfindall_disj_?;??;0findall_workhorsewhile_if?true??call?,?fail$bin_cut???callskip_until_if?fail??call?$bin_cut???callskip_when_if?failtrue?call???callnth_answer_?10??s?has_fuel?skip_untiltake_at_most_??s?has_fuel?whiledrop_at_least_??s?has_fuel?skip_whenhas_fuel_1?0?00?101??0?truefind_while_while??????findallfind_at_most_take_at_most??????findallall_but_at_least_drop_at_least??????findallall_findall???prolog:share_vars????-??call???prolog:are_sharedprolog:are_shared_vars??free_variables??[]??[]?free_variablesprolog:share_vars[][][]?trueprolog:share_vars..??-???.???prolog:share_varsgc_read_?read?.?[]?findallgc_read_clause_?read_clause?.?[]?findallgc_call_call?member????findallfor_???0?truefor_??0?10forargn_?????1?trueargn_for?1?arg????????functornumbervars$VAR$VAR?????11truenumbervars_??????truenumbervars..???numbervars??????numbervarsnumbervars_prolog:numbervars0????????functorprolog:numbervars_?????trueprolog:numbervars_?10??0prolog:numbervars????????numbervarsground_greater?0$bin_cut?fail?0numbervarsground_?truecopy_term_0?1?trueprolog:save_term_1?1?trueflush_20trueprolog:see_or_fail_0?0?trueexists_file_seen??prolog:see_or_failsread_0?1?trueswrite_1?1?truesystem[][]??truesystem..???.??shell???namesystem_??shell._[]?compileinclude_compilecompile_prolog:compile_mem?abort??find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[].46.46.47.115.114.99[]prolog:getenv_path???.112.114.111.103.115[]?prolog:getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[]?truefile_library..?[].?[].46?.112?.108[].46.46.47.108.105.98.114.97.114.121[]?prolog:getenv_pathprolog:getenv_path_??.47[]unix_getenvBP_PATH?,?det_append???name??=?[]det_append???det_append???????ifmake_file_name_?member??name??det_append???det_append???name?????memberstatistics_.??.?[]stat0?????stat_dictstatistics_cwrite?cwrite=cwrite?cnlfail??statisticsstatistics_trueatom_?????trueatom_???truefloat_????$float??truenumber_????truenumber_floatcompound_??atomic??\+=.._????1?true=.._?.[]1?trueprolog:term2list_?.[]1?trueprolog:term2dlist_?.?1?truedet_append_-????1?trueprolog:det_append_-????1?trueappendN_?[]prolog:appendNprolog:appendN[][]??trueprolog:appendN..??-????1prolog:appendNprolog:append_body_??prolog:append_bodyprolog:append_body_det_append0???if????compare0??==??=..?.?.?.?[]-???2?functorappend_conj_?,??,????trueprolog:append_bodyappend_disj_?;??;????failprolog:append_body._.???true++_-[]???1?trueappend_-????1?prolog:general_appendprolog:general_append[][]??trueprolog:general_append..??.??prolog:general_appendlength_?????0?prolog:get_lengthlength_??0?prolog:make_lengthprolog:get_length[][]??trueprolog:get_length..???10prolog:get_lengthprolog:make_length[][]???trueprolog:make_length..????0?10prolog:make_lengthtab_integer?$bin_cut?prolog:tab0???exprtab_??in tab/1: should evaluate to an integer?user_errorprolog:tab0_?put32fail??1forprolog:tab0_?trueget_get0?or??$bin_cut?=???greater?32less?0?repeatis_$bin_cut?=??????expris_is??error_in_is?errmesexpr_??????trueexpr_$bin_cut?=????floatexpr_????variable_in_is?user_errorexpr_$bin_cut?arg1??arg2??expr??expr??=..??call?$bin_cut??.?.?.?.?[]?2functorexpr_arg1??expr??=..??call?$bin_cut??.?.?.?[]?1functorcompare_??1?true+_??true-_0?1?true\_0?1?true==_=???1?true\==_??0?prolog:$noteq@<_<???1?true@>_>???1?true@=<_??0?prolog:$lesseq@>=_??0?prolog:$gteq<_expr??less????expr>_expr??greater????expr=<_expr??less_eq????expr>=_expr??greater_eq????expr=:=_expr??arith_eq????expr=\=_expr??arith_dif????exprprolog:$lesseq<<?trueprolog:$lesseq==?trueprolog:$gteq>>?trueprolog:$gteq==?trueprolog:$noteq<<?trueprolog:$noteq>>?truebb_def_def??????savedbb_set_set??????savedbb_val_??0??copy_termbb_rm_??0?truebb_change_arg_let???change_arg???????savedbb_let_??0?bb_setbb_let_bb_defbb_def_??????bb_defbb_set_??????bb_setbb_val_??????bb_valbb_rm_????bb_rmbb_let_??????bb_letprolog:bb_default_val_?$bin_cut??bb_valprolog:bb_default_val_??truesaved_$bin_cut?=????prolog:save_termsaved_prolog:save_term??$bin_cut?=????prolog:bb_gcsaved_?/saved2prolog:bb_failsaved_abort?restartlet_???0??truelet_???0?trueprolog:def_???0?trueprolog:set_???0?trueprolog:val_??1?trueprolog:let_??????letprolog:rm_??0?true#_1?truedcg_phrase_???1??dcg_phrasedcg_phrase_0?0?0dcg_val[]dcg_tell????call:=:##??????1true:=:_??1?trueprolog:bb_gc_310bb_resetprolog:bb_put_back???copy_termprolog:bb_put_back[][]?trueprolog:bb_put_back..??.??.??.??.??functor???prolog:bb_put_1???prolog:bb_put_back???functorprolog:bb_put_1_set???$bin_cut?=?????prolog:save_termprolog:bb_put_1_+????prolog:bb_failprolog:bb_fail_.?.?[]user_error???blackboard overflow, left only?culprit?bboard?statisticsprolog:try_float_.??.??integer?box??atom..??atom??name??input_float?????prolog:try_float_expprolog:try_float_.??integer?box???trueprolog:try_float_exp..??atome$bin_cut???prolog:try_float_exp1prolog:try_float_exp..??atom??.?[]??.101[].??name??integer?$bin_cut???nameprolog:try_float_exp_?0?trueprolog:try_float_exp1..??.??integer?box??atom-???0?1trueprolog:try_float_exp1..??.??integer?box??atom+???trueprolog:float_minus_$float000??1?truepow_pow??1?truelog_log??1?truesqrt_pow?$float02679111680?1?trueexp_exp?1?truelog_log?1?truesin_sin?1?truecos_cos?1?truetan_tan?1?trueatan_T?1?trueasin_S?1?trueacos_C?1?trueinteger_integer?1?truefloat_$float000??1?truectime_?.?.?[]runtimestatisticsprolog:is_predicate_????trueprolog:is_predicate_$bin_cut???is_dynamicprolog:is_predicate_is_assumedpredicate_property_???prolog:predicate_property0predicate_property_functor???prolog:predicate_property0??????prolog:generate_a_predicateprolog:predicate_property0_$bin_cut?or???=?dynamic=?interpreted?is_dynamicprolog:predicate_property0_$bin_cut?or???=?assumed=?interpreted?is_assumedprolog:predicate_property0_built_in$bin_cut??is_builtinprolog:predicate_property0_compiled???truecurrent_predicate_???functor??????prolog:is_predicatecurrent_predicate_functor?????prolog:generate_a_predicatecurrent_predicate//???????prolog:is_predicate?$bin_cut???functorcurrent_predicate//????prolog:generate_a_predicateprolog:predicate_key0//$assumed0????trueprolog:predicate_key0_??/$first0trueprolog:predicate_key0//predmark0predmark?/??/???00?11trueprolog:generate_a_predicate_000=??+??prolog:predicate_key0?????/?????bb_elementhelp_aproposapropos_apropos??sort??member??write?cnlfail??findallapropos_?trueapropos_-??/??predicate_property??functor???name??prolog:near_match????nameprolog:near_match_???trueprolog:near_match_?$bin_cut????prolog:append3prolog:near_match_?prolog:append3????$bin_cut??.???prolog:append3prolog:append3_append??????appendprolog:unix_cd_HOME0?0trueprolog:unix_argv_??0?10,?unix_argv??for?1?findallunixargcargc??1trueunixargvargv?prolog:unix_argvunixgetenvgetenv???unix_getenv??errmesno such environment variable?trueifunixaccessaccess?????0trueunixcdcd???0trueunixcdcd?prolog:unix_cdunixkillkill?????0trueprolog:try_dcg_expansion_-->??$bin_cut?????prolog:dcg_ruleprolog:try_dcg_expansion_??dcg expansion error->?errmesprolog:dcg_rule-->-->??prolog:dcg_body????prolog:dcg_conj???=???:-???prolog:dcg_headprolog:dcg_head@@@@??true?@@???prolog:dcg_body??????prolog:dcg_bodyprolog:dcg_head_true???prolog:dcg_goalprolog:dcg_head,,???prolog:dcg_body????????prolog:dcg_goalprolog:dcg_head_true???prolog:dcg_goalprolog:dcg_goal_?+???1?trueprolog:dcg_body_?????phrase????trueprolog:dcg_body,,???prolog:dcg_body????prolog:dcg_conj???????prolog:dcg_bodyprolog:dcg_body->->??->???prolog:dcg_body???????prolog:dcg_bodyprolog:dcg_body;;??;???prolog:dcg_disj??????prolog:dcg_disjprolog:dcg_body{}{}?????trueprolog:dcg_body!!!???trueprolog:dcg_body[][]true???trueprolog:dcg_body..???prolog:dcg_body????prolog:dcg_conj???????prolog:dcg_termprolog:dcg_body_prolog:dcg_goalprolog:dcg_term_C????trueprolog:dcg_disj_prolog:dcg_disj0????????prolog:dcg_bodyprolog:dcg_disj0_=???1?=??????prolog:dcg_conjprolog:dcg_disj0_???trueprolog:dcg_conj_true???trueprolog:dcg_conj_prolog:dcg_CONJprolog:dcg_CONJtruetrue???trueprolog:dcg_CONJ,,??,???prolog:dcg_CONJprolog:dcg_CONJ_,???trueC..?????truephrase_?[]phrasephrase_=??=??call????prolog:dcg_bodyprolog:portable_expand_term-->-->???????prolog:try_dcg_expansionprolog:portable_expand_term-->>-->>?????try_edcg_expansion???errmesexpected_to_expand?prolog:call_ifdefprolog:portable_expand_term_??trueprolog:default_prologbinprologbinprolog?trueprolog:peval_ioget_codeget_code??get0?trueprolog:peval_ioput_codeput_code??put?trueprolog:peval_ionlnlcnl?trueprolog:peval_ioseeingseeing??seeing_telling0?trueprolog:peval_iotellingtelling??seeing_telling1?trueprolog:peval_ioseeing_atseeing_at??seeing_telling_at0?trueprolog:peval_iotelling_attelling_at??seeing_telling_at1?trueprolog:peval_iofast_writefast_write??cwrite?truefast_write_???trueget_code_1?trueput_code_?0?truenl_?truesee_0?0??truesee_??unable_to_see?user_errorseeing_01?truetelling_11?truetell_1?0??truetell_??unable_to_tell?user_errorseen_00truetold_10truesee_at_0?0??truesee_at_??unable_to_see_at?user_errortell_at_1?0??truetell_at_??unable_to_tell_at?user_errorseeing_at_01?truetelling_at_11?truefind_file_$bin_cut?file_search_path?file_extension_list?prolog:find_file1??????atomfind_filelibrarylibrary?$bin_cut?file_library??prolog:find_file1??????atomfind_file_?bad file name?user_errorprolog:find_file1_?????00????prolog:find_file2prolog:find_file2_$bin_cut?see??????prolog:see_a_fileprolog:find_file2_findall???findall???errmes???file_not_found?+??+??,?name??member??,?name??member???seeprolog:see_a_file_prolog:see_or_fail?seen??make_file_nameread_clause_warn_singletons?????read_with_singletonsread_with_singletons_prolog:singletons????prolog:r_termwarn_singletons..????0?10.??fail???prolog:warn_singletons1warn_singletons_?trueprolog:warn_singletons1:-:-???trueprolog:warn_singletons1_:-??seeing_telling_at0?prolog:melt_varnames?ttyout?$bin_cut??,?,?,nl,?,?,?,nlnlcwrite:-...print?print=> print** warning singleton_variables, byte=>?print???add_trueprolog:melt_varnames[][]?trueprolog:melt_varnames..??var???prolog:melt_varnamesread_??prolog:r_termtop_read_term_read_termread_term_prolog:r_vars?????prolog:r_termprolog:r_vars[][][]?trueprolog:r_vars..??var???.??=??prolog:r_varsprolog:singletons_??member??var??s0??findallprint_prolog:portable_printwrite_prolog:portable_writewriteq_prolog:portable_writeqttyin_00call?see??user?seettyout_10call?flushtell??user?tellttyprin_write??ttyoutttyprint_,?nlwrite??ttyoutttycwrite_cwrite??ttyoutttycwriteln_,?nlcwrite??ttyoutttynl_?nlttyoutttyput_put??ttyoutdisplay_portable_display??ttyoutprolog:r_term_read_tokens??prolog:r_and_check??$bin_cut?=????repeatprolog:r_and_check_?prolog:all_read??1200?prolog:rtprolog:r_and_check_?prolog:syntax_errorprolog:all_read[][]??trueprolog:all_read_??.operator.expected.after.expression[]?prolog:syntax_errorprolog:expect_.????trueprolog:expect_?.?.or.operator.expected[]?prolog:syntax_errorprolog:prefixop_??$bin_cut??prefixopfy?prolog:get_op0prolog:prefixop_?-?1??prefixopfx?prolog:get_op0prolog:postfixop_??$bin_cut??postfixopyf?prolog:get_op0prolog:postfixop_?-?1??postfixopxf?prolog:get_op0prolog:infixop_??$bin_cut?-?1??infixopxfx??prolog:get_op0prolog:infixop_??$bin_cut?-?1??infixopxfy??prolog:get_op0prolog:infixop_??-?1??infixopyfx??prolog:get_op0prolog:ambigop_prolog:infixop????????prolog:postfixopprolog:rt[][]?.expression.expected[][]prolog:syntax_errorprolog:rt..??????????prolog:rtsprolog:rtsvarvar??.(??prolog:r_args???$bin_cut?prolog:exprtl0??????apply?.??999??prolog:rtprolog:rtsvarvar?????prolog:exprtl0prolog:rtsatomatom-.??integer?box??0?0?prolog:exprtl0prolog:rtsatomatom-.??atom?prolog:float_minus??$bin_cut?prolog:exprtl0??????floatprolog:rtsatomatom?.(??prolog:r_args???=..??$bin_cut?prolog:exprtl0??????.?.??999??prolog:rtprolog:rtsatomatom?$bin_cut?prolog:after_prefix_op???????????prolog:prefixopprolog:rtsatomatom????prolog:exprtl0prolog:rtsintegerinteger?box?????prolog:exprtl0prolog:rts[[.]??[]prolog:exprtl0prolog:rts[[??prolog:r_list???$bin_cut?prolog:exprtl0??????.??999??prolog:rtprolog:rts((??prolog:expect)??$bin_cut?prolog:exprtl0??????1200???prolog:rtprolog:rts((((??prolog:expect)??$bin_cut?prolog:exprtl0??????1200???prolog:rtprolog:rts{{.}??{}prolog:exprtl0prolog:rts{{??prolog:expect}??$bin_cut?prolog:exprtl0??????{}?1200??prolog:rtprolog:rtsstringstring????prolog:exprtl0prolog:rts_?.?.cannot.start.an.expression[]?prolog:syntax_errorprolog:r_args..,?.???$bin_cut?prolog:r_args????999??prolog:rtprolog:r_args..)?[]???trueprolog:r_args_??.,).expected.in.arguments[]?prolog:syntax_errorprolog:r_list..,?.???$bin_cut?prolog:r_list????999??prolog:rtprolog:r_list..|???$bin_cut?prolog:expect]???999??prolog:rtprolog:r_list..]?[]???trueprolog:r_list_??.|].expected.in.list[]?prolog:syntax_errorprolog:after_prefix_op_???0?.prefix.operator.?.in.context.with.precedence.?[]??prolog:syntax_errorprolog:after_prefix_op_prolog:prefix_is_atom??prolog:exprtl?????????prolog:peepopprolog:after_prefix_op_=..??$bin_cut?prolog:exprtl???????.?.?[]?????prolog:rtprolog:peepop..??.(?atom??.??.(?atom??trueprolog:peepop..??atom??.??infixop????prolog:infixopprolog:peepop..??atom??.??postfixop???prolog:postfixopprolog:peepop_??trueprolog:prefix_is_atom..??prolog:prefix_is_atomprolog:prefix_is_atominfixopinfixop??????0trueprolog:prefix_is_atompostfixoppostfixop??????0trueprolog:prefix_is_atom))?trueprolog:prefix_is_atom]]?trueprolog:prefix_is_atom}}?trueprolog:prefix_is_atom||?1100?0trueprolog:prefix_is_atom,,?1000?0trueprolog:prefix_is_atom[][]?trueprolog:exprtl0..??atom?$bin_cut?or???prolog:exprtl?0????.??infixop????prolog:exprtl?0????.??postfixop??????prolog:ambigopprolog:exprtl0..??atom?$bin_cut?prolog:exprtl?0?????.??infixop?????prolog:infixopprolog:exprtl0..??atom?$bin_cut?prolog:exprtl?0?????.??postfixop????prolog:postfixopprolog:exprtl0..,??10000?$bin_cut?prolog:exprtl?1000?????,??1000??prolog:rtprolog:exprtl0..|??11000?$bin_cut?prolog:exprtl?1100?????;??1100??prolog:rtprolog:exprtl0..??$bin_cut?prolog:syntax_error???.?.follows.expression[].??prolog:cant_follow_exprprolog:exprtl0_???trueprolog:cant_follow_expratomatom?atom?trueprolog:cant_follow_exprvarvar?variable?trueprolog:cant_follow_exprintegerinteger?integer?trueprolog:cant_follow_exprstringstring?string?trueprolog:cant_follow_expr((((bracket?trueprolog:cant_follow_expr((bracket?trueprolog:cant_follow_expr[[bracket?trueprolog:cant_follow_expr{{bracket?trueprolog:exprtl..??infixop??????0??0?=..??prolog:exprtl???????.?.?.?[]???prolog:rtprolog:exprtl..??postfixop?????0??0?.?.?[]prolog:peepop??prolog:exprtl???????=..prolog:exprtl..,??10000?10000?$bin_cut?prolog:exprtl?1000?????,??1000??prolog:rtprolog:exprtl..|??11000?11000?$bin_cut?prolog:exprtl?1100?????;??1100??prolog:rtprolog:exprtl_???trueprolog:syntax_error_0000prolog:start_syntax_error???see?fail?user?seeprolog:start_syntax_error_?display?prolog:display_list?length??bb_letsyntax_errorlength?$bin_cut??** SYNTAX ERROR: byte=?displayprolog:start_syntax_error_?trueprolog:syntax_error_00prolog:finish_syntax_error?see?fail?user?seeprolog:finish_syntax_error_syntax_errorlength0-???prolog:display_list??$bin_cut???lengthprolog:display_list..??prolog:display_token?$bin_cut?prolog:display_list??32?ttyputprolog:display_list[][]?ttynlprolog:display_list_0$bin_cut?prolog:display_list?99999? displayprolog:display_list..??ttyput32-?1?$bin_cut?prolog:display_list????prolog:display_tokenprolog:display_list[][]?ttynlprolog:display_tokenatomatom?$bin_cut?write_float???floatprolog:display_tokenatomatom??displayprolog:display_tokenvarvar???displayprolog:display_tokenintegerinteger?box???displayprolog:display_tokenstringstring??.?[]??.34[].??.?[]name??display???det_appendprolog:display_token_displayread_tokens_append?[]?$bin_cut?=??=???32??prolog:r_toksread_tokens..?[]atomend_of_file[]?trueprolog:r_toks-1-1???trueprolog:r_toks_?320?0prolog:r_toksprolog:r_toks3737?get0?prolog:is_terminator?$bin_cut?arith_dif?-1get0?prolog:r_toks????repeatprolog:r_toks4747?0prolog:r_solidusprolog:r_toks3333.??atom!?0prolog:r_after_atomprolog:r_toks4040.((??0prolog:r_toksprolog:r_toks4141.)??0prolog:r_toksprolog:r_toks4444.,??0prolog:r_toksprolog:r_toks5959.??atom;?0prolog:r_toksprolog:r_toks9191.[??0prolog:r_toksprolog:r_toks9393.]??0prolog:r_toksprolog:r_toks123123.{??0prolog:r_toksprolog:r_toks124124.|??0prolog:r_toksprolog:r_toks125125.}??0prolog:r_toksprolog:r_toks4646?0prolog:r_fullstopprolog:r_toks3434.??string??prolog:r_toks????34?prolog:r_stringprolog:r_toks3939.??atom??name??prolog:r_after_atom????39?prolog:r_stringprolog:r_toks_.??var??$bin_cut?prolog:r_name???or??$bin_cut?prolog:r_toks????,?=?_=?.95[],?,?prolog:r_lookup????name??=?.???prolog:is_majprolog:r_toks_$bin_cut?prolog:r_integer????prolog:r_toks???prolog:try_float??????prolog:is_numprolog:r_toks_.??atom?$bin_cut?prolog:r_name???name??prolog:r_after_atom?????prolog:is_minprolog:r_toks_.??atom?0name??prolog:r_after_atom????.????prolog:r_symbolprolog:r_after_atom4040.(??0prolog:r_toksprolog:r_after_atom_prolog:r_toksprolog:r_string_????0???prolog:r_stringprolog:r_string-1-1-1ttyput?displaytokenttyput?ttynl$bin_cut?fail?! end of file in: displayprolog:r_string_????0??prolog:more_stringprolog:r_string_.?????prolog:r_stringprolog:more_string_??.??????prolog:r_stringprolog:more_string_[]??trueprolog:patch_slash..((??.(??trueprolog:patch_slash_??trueprolog:r_solidus4242?0prolog:r_toks??????prolog:r_solidusprolog:r_solidus_.??atom?name??prolog:r_toks???prolog:patch_slash???.47??prolog:r_symbolprolog:r_solidus-1-1-1?ttynl?! end_of_file in /*.. commentdisplayprolog:r_solidus42420?470?prolog:r_solidusprolog:r_solidus424232??trueprolog:r_solidus_0prolog:r_solidusprolog:r_name_.??$bin_cut?get0?prolog:r_name????prolog:is_alpha_numprolog:r_name_[]??trueprolog:r_symbol_.??get0?prolog:r_symbol????prolog:is_specprolog:r_symbol_[]??trueprolog:r_fullstop-1-1?ttynlfail?! end_of_file just after full_stopdisplayprolog:r_fullstop_[]?320??trueprolog:r_fullstop_.??atom?name??prolog:r_toks????.46??prolog:r_symbolprolog:r_integer_???4800.?[]??.46[]=???.?.?????prolog:r_intprolog:r_int-1-1???trueprolog:r_int39390?.39?.?[]?1?-101trueprolog:r_int3939$bin_cut??0?prolog:r_digitsprolog:r_int_????10???prolog:r_digsprolog:r_digits_??????0?-10?????prolog:r_digsprolog:r_digs_.???480?570???0?480??0?????prolog:r_digitsprolog:r_digs_??[]?trueprolog:r_lookup..??var???????prolog:r_varcountprolog:r_lookup..??prolog:r_lookupprolog:r_varcount_.?[]??.95[]???s1?trueprolog:r_varcount_?????s??trueprolog:r_varcountss1?trueprolog:is_alpha_num_?970?1220?trueprolog:is_alpha_num_?650?900?trueprolog:is_alpha_num_?480?570?trueprolog:is_alpha_num9595?trueprolog:is_alpha_num_prolog:is_latin1_minprolog:is_alpha_num_prolog:is_latin1_majprolog:is_maj_?650?900?trueprolog:is_maj9595?trueprolog:is_maj_prolog:is_latin1_majprolog:is_min_?970?1220?trueprolog:is_min_prolog:is_latin1_minprolog:is_num_?480?570?trueprolog:is_latin1_maj_?1920?2140?trueprolog:is_latin1_maj_?2160?2220?trueprolog:is_latin1_min_?2230?2460?trueprolog:is_latin1_min_?2480?2550?trueprolog:is_terminator1010?trueprolog:is_terminator1313?trueprolog:is_terminator-1-1?trueprolog:is_spec3535?trueprolog:is_spec3636?trueprolog:is_spec3838?trueprolog:is_spec4242?trueprolog:is_spec4343?trueprolog:is_spec4545?trueprolog:is_spec4646?trueprolog:is_spec4747?trueprolog:is_spec5858?trueprolog:is_spec6060?trueprolog:is_spec6161?trueprolog:is_spec6262?trueprolog:is_spec6363?trueprolog:is_spec6464?trueprolog:is_spec9292?trueprolog:is_spec9494?trueprolog:is_spec9696?trueprolog:is_spec126126?trueportable_display_?displayprolog:w_outprolog:portable_print_?printprolog:w_outprolog:portable_write_?writeprolog:w_outprolog:portable_writeq_?writeqprolog:w_outprolog:w_out_fail?1200punct?prolog:w_outprolog:w_out_?trueprolog:maybe_paren_punct??0??0?trueprolog:maybe_paren_??trueprolog:maybe_spacepunctpunct??trueprolog:maybe_space_???320trueprolog:maybe_spacequotequotealpha??320trueprolog:maybe_space_?trueprolog:put_string[][]?trueprolog:put_string..???0prolog:put_stringprolog:put_string[][]??0trueprolog:put_string..?????0?0?prolog:put_stringprolog:put_string..???0prolog:put_stringprolog:w_variable_???trueportray_writeprolog:w_out_alpha???prolog:w_variable???alphaprolog:maybe_spaceprolog:w_out$VAR$VAR?????prolog:w_VARprolog:w_out_alpha??,?prolog:maybe_space?otherless?0prolog:maybe_space?alpha$bin_cut?cwrite???orprolog:w_out_printalpha$bin_cut??portrayprolog:w_out_punctcurrent_op???greater??$bin_cut?put40or??$bin_cut?put41?,?prolog:w_atom??punct?=?writeqcwrite??atomprolog:w_out_$bin_cut?prolog:w_atom??????atomprolog:w_out_displaypunct?prolog:w_atom?display??prolog:w_args0??40display??functorprolog:w_out{}{}?punct?1230put125?1200punct??prolog:w_outprolog:w_out..??punct?910prolog:w_tail???999punct??prolog:w_outprolog:w_out,,???prolog:w_out??999??put44prolog:w_out??1000punct?prolog:maybe_paren1000?41???1000?40??prolog:maybe_parenprolog:w_out_alphaor??$bin_cut?write_float??,?prolog:maybe_space?otherless?0prolog:maybe_space?alphafloatprolog:w_out_prolog:w_out???????????functorprolog:w_out11,?-?1?current_op?fx?,?=??current_op?fy?$bin_cut?prolog:maybe_paren??40??prolog:w_atom????arg1??prolog:w_out?????prolog:maybe_paren??41?????orprolog:w_out11,?-?1?current_op?xf?,?=??current_op?yf?$bin_cut?prolog:maybe_paren??40??arg1??prolog:w_out?????prolog:w_atom????prolog:maybe_paren??41?????orprolog:w_out22,?,?=??-?1?current_op?xfy?or?,?,?=??-?1?current_op?yfx?,?,?=??-?1?current_op?xfx?$bin_cut?prolog:maybe_paren??40??arg1??prolog:w_out?????prolog:w_oper?????arg2??prolog:w_out?????prolog:maybe_paren??41?????orprolog:w_out_punctprolog:w_args0??40??????prolog:w_atomprolog:w_oper_?7000?????prolog:w_atomprolog:w_oper_?punct320put32?punct?prolog:w_atomprolog:w_VAR_alpha???00?mod?26?+?65?put?or??$bin_cut??less?26,?cwrite?//?26??alpha?prolog:maybe_spaceprolog:w_VAR_$bin_cut?prolog:w_atom?write???atomprolog:w_VAR_punctprolog:w_args01?40??$VAR?$VAR??prolog:w_atomprolog:w_atom!!punct??330trueprolog:w_atom;;punct??590trueprolog:w_atom[][]punct??910930trueprolog:w_atom{}{}punct??12301250trueprolog:w_atom..writeqquote??.39.46.39[]prolog:put_stringprolog:w_atom_or??$bin_cut??,?,?prolog:put_string?prolog:maybe_space??prolog:classify_name??or?,?prolog:put_string?=?alpha,?,?,?,?prolog:put_string?39put39prolog:maybe_space??=?quote=?writeq??nameprolog:classify_name..??alpha$bin_cut?prolog:classify_alpha_tail??prolog:is_minprolog:classify_name..??otherprolog:classify_other_tail??prolog:is_specprolog:classify_alpha_tail[][]?trueprolog:classify_alpha_tail..??prolog:classify_alpha_tail???prolog:is_alpha_numprolog:classify_other_tail[][]?trueprolog:classify_other_tail..??prolog:classify_other_tail???prolog:is_specprolog:w_args_???410trueprolog:w_args_?0?10??0prolog:w_args???44???999punct??prolog:w_outprolog:w_tail_???1240put93?prolog:w_variableprolog:w_tail[][]??930trueprolog:w_tail..???440prolog:w_tail???999punct?prolog:w_outprolog:w_tail_1240put93?999punct?prolog:w_outpp_term_write?cnlfail?0?numbervarspp_term_?truepp_clause_portray_clauseportray_clause_fail??prolog:pp_clause0portray_clause_?trueprolog:pp_clause0:-:-???prolog:l_clauses?028?0?numbervarsprolog:pp_clause0:-:-??+??prolog:portable_writeq?prolog:l_clauses?028$bin_cut??0?numbervarsprolog:pp_clause0_:-?true?prolog:pp_clause0prolog:l_clauses,,???$bin_cut?prolog:l_clauses?1???1?prolog:l_clausesprolog:l_clausestruetrue2??.?[]??.46[]?0?trueprolog:l_clauses;;???prolog:l_magic?02?prolog:l_magic_nl?.?;??fail??prolog:l_magicprolog:l_clauses->->???$bin_cut?prolog:l_clauses?5???5?prolog:l_clausesprolog:l_clauses_prolog:portable_writeq?prolog:l_magic_nl?.???prolog:l_magicprolog:l_magic!!0?? :- ?trueprolog:l_magic!!1??, ?trueprolog:l_magic_0??? :- ??tabprolog:l_magic_1???.?[]??.44[]?0?tabprolog:l_magic_3??( ?trueprolog:l_magic_4??; ?trueprolog:l_magic_5??? ->??tabprolog:l_magic_?cwrite:- cwrite?cnltab??atomprolog:l_magic_nl22?????trueprolog:l_magic_nl_?trueprolog:l_magic;;???$bin_cut?prolog:l_magic?1???1?prolog:l_magicprolog:l_magic_?80?30cnltab?prolog:l_magic2?)?1??prolog:l_clausesprolog:l_magic222????trueprolog:l_magic2_?truemain_prolog:binpro_startprolog:binpro_start_prolog:exec_run_time_commandsprolog:call_ifdefmaintoplevel=?$end?init_iotrueprolog:call_ifdeftoplevel_prolog:topstep?- $bin_cut???repeatprolog:topstep_flushttyin?prolog:topinterp???top_read_term???ttyprinprolog:topinterp_=?end_of_file?1??trueprolog:topinterp_??fail???prolog:report_answersprolog:topcall_prolog:nothing??metacallprolog:savetop_topgoal1?trueprolog:nothing_trueprolog:report_answers[][]?$bin_cut?ttyprintyes?prolog:topcallprolog:report_answers..???prolog:report_one_var?prolog:report_top_vars?prolog:another_sol?if??fail?=?no,?ttyprintyes$bin_cut?prolog:topcallprolog:report_answers_?nottyprintprolog:report_top_vars_?ttyprint,prolog:report_one_var?fail??memberprolog:report_top_vars_?trueprolog:report_one_var==??ttyprin=ttyout??writeq??ttyprinprolog:another_sol_$bin_cut?ttyin?prolog:user_action??ttynl?get_code??prolog:is_interactiveprolog:another_solyesyesttynl?;?ttyprintprolog:user_action1010no??trueprolog:user_action5959yes??get_code10ttyinprolog:user_action_ttyin?ttyin?prolog:user_action???get_code?get_code10 ; for more, otherwise ?ttyprinmeta_interpreter_do_bodydo_body_?????unbound_goal?user_errordo_body_or???,?,?do_body?$bin_cut?=?yes=?noprolog:do_bodyprolog:do_compiledcallcall????do_bodyprolog:do_compiled\+\+?$bin_cut?fail??do_bodyprolog:do_compiled\+\+???trueprolog:do_compiledbagofbagof?????do_body?bagofprolog:do_compiledsetofsetof?????do_body?setofprolog:do_compiledfindallfindall?????do_body?findallprolog:do_compiled_callprolog:do_goal_$bin_cut?spy_goal???spyingprolog:do_goal_$bin_cut?assumed_clause??prolog:do_body???or???,?,?do_body?$bin_cut?=?yes=?no?is_assumedprolog:do_goal_$bin_cut?clause??prolog:do_body???or???,?,?do_body?$bin_cut?=?yes=?no?is_dynamicprolog:do_goal_???prolog:do_compiledprolog:do_goal_$bin_cut?prolog:do_apply??prolog:do_goal??call?functorprolog:do_goal_prolog:do_undefprolog:do_undef_errmes???=undefined_predicate/??=culprit?functorprolog:do_apply_.?.??=..??det_append???=..?????=..prolog:do_body,,?????????prolog:do_conjprolog:do_body;;?????????prolog:do_disjprolog:do_body!!trueyes?trueprolog:do_body_trueno?prolog:do_goalprolog:do_conj!!?yes??trueprolog:do_conj_prolog:do_body?????do_bodyprolog:do_disj->->???????????prolog:do_if_then_elseprolog:do_disj_prolog:do_disj0prolog:do_if_then_else_$bin_cut?prolog:do_body?????do_bodyprolog:do_if_then_else_????prolog:do_bodyprolog:do_disj0_???prolog:do_bodyprolog:do_disj0_????prolog:do_bodytrace_?0tr_bodytr_body_????unbound_goal?user_errortr_body_or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?noprolog:tr_bodyprolog:tr_body,,???????????prolog:tr_bodyprolog:tr_body!!trueyes??trueprolog:tr_body;;???????????prolog:tr_disj1prolog:tr_bodytruetruetrueno??trueprolog:tr_body_trueno?prolog:tr_goalprolog:tr_disj1->->?????????????prolog:tr_if1prolog:tr_disj1_????prolog:tr_bodyprolog:tr_disj1_?????prolog:tr_bodyprolog:tr_if1_do_body?prolog:tr_body????prolog:tr_body????????ifprolog:tr_body!!?yes??trueprolog:tr_body,,???,???prolog:tr_bodyprolog:tr_body;;?????????????prolog:tr_disj2prolog:tr_bodytruetrue??????prolog:tr_bodyprolog:tr_body_prolog:tr_body???????prolog:tr_goalprolog:tr_disj2->->???????????????prolog:tr_if2prolog:tr_disj2_?????prolog:tr_bodyprolog:tr_disj2_??????prolog:tr_bodyprolog:tr_if2_do_body?prolog:tr_body?????prolog:tr_body?????????ifprolog:tr_goalcallcall??tr_bodyprolog:tr_goal\+\+?$bin_cut?fail??tr_bodyprolog:tr_goal\+\+???trueprolog:tr_goal_,?,?,?or?ortrue,?,?,?,cnlfailprint?writeRedo: tab?,?,?,?,cnlfailprint?writeExit: tab?if??,?prolog:tr_call??+1??,?\+spying?arith_eq?10metacall?ifprolog:is_interactive?,?cnl=?32,?if?trueget0?arith_eq?10get0?or?or?true,prolog:is_interactive,?failwrite : ,?,?,?failprint?writeCall: tab?,?,?,?,cnlfailprint?writeFail: tab???orprolog:tr_callbagofbagof?????tr_body????bagofprolog:tr_callsetofsetof?????tr_body????setofprolog:tr_callfindallfindall?????tr_body????findallprolog:tr_call_$bin_cut?tab?functor???write?cnlassumed_clause??prolog:tr_body????or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?no!!! assumed/???is_assumedprolog:tr_call_$bin_cut?tab?functor???write?cnlclause??prolog:tr_body????or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?no!!! dynamic/???is_dynamicprolog:tr_call_???functor???write?cnlcall??!!! compiled/????tabprolog:tr_call_$bin_cut?prolog:do_apply??prolog:tr_call???call?functorprolog:tr_call_prolog:do_undefdynamic_fail??prolog:make_dynamicdynamic_?trueprolog:make_dynamic,,???prolog:make_dynamic???prolog:make_dynamicprolog:make_dynamic//??prolog:check_dynamic??prolog:define_dynamic??/???functorprolog:check_dynamic_???WARNING: dynamic code will shadow compiled predicate?cnl?writeprolog:check_dynamic_$bin_cut?errmesdynamic code would shadow assumed predicate???is_assumedprolog:check_dynamic_?trueprolog:define_dynamic_bb_def?$last0?$first0bb_defprolog:ensure_dynamic_$bin_cut???is_dynamicprolog:ensure_dynamic_prolog:make_dynamic??/??functorprolog:add_clause_$bin_cut???prolog:add_clause0prolog:add_clause_prolog:add_clause0????$bin_cut????prolog:ensure_dynamicprolog:add_clause_:-??unable to assert clause?errmesprolog:add_clause0_??0??0???0:-??set??????bb_defprolog:add_clause0_??0:-?????bb_defasserta_:-??prolog:add_clause$first-1????add_trueassertz_:-??prolog:add_clause$last1????add_trueassert_assertzprolog:assert_itend_of_fileend_of_file??trueprolog:assert_it_assertzretract_=??prolog:clause0???prolog:erase0???:-???add_trueretractall_:-??val?$first?val?$last?for???val???prolog:erase0??fail??add_trueretractall_?trueprolog:collect_slot_?$first1?$last0??0??10?$first?0?trueprolog:collect_slot_?trueinstance$dbref$dbref????0copy_termerase$dbref$dbref????prolog:erase0prolog:erase0_prolog:collect_slot????bb_rmclause_??prolog:clause0prolog:clause_$dbref??prolog:clause0prolog:clause0_?$first0?$last0ith_clause????member???-?:-??????findallith_clause_-????1?trueith_clause_??0?10ith_clauseabolish_??is_dynamic?$bin_cut?prolog:abolish0??????functorabolish_found/??abolish_expects_dynamic_clauses?errmesprolog:abolish0_retractall?fail??functorprolog:abolish0_??$first0?$last0prolog:define_dynamicdebug_reconsultprolog:consult_warning_?% using compile/1 is MUCH fasterquietmesconsult_prolog:consult_warningprolog:consult0???find_filereconsult_prolog:consult_warningprolog:survive_cleanup??prolog:consult0???find_fileprolog:consult0_quietmes?see?repeatread_clause?prolog:consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes??consulted?time?consulting???ctimeprolog:consult_included_00prolog:consult0?see???find_fileprolog:consult_embedded:-:-??prolog:consult_cmdprolog:consult_embedded_prolog:assert_it???expand_termprolog:consult_cmd..?[]?prolog:consult_includedprolog:consult_cmdconsultconsult??prolog:consult_includedprolog:consult_cmdreconsultreconsult??prolog:consult_includedprolog:consult_cmd_metacalllisting_??is_dynamic?$bin_cut?write% write?write:cnlprolog:listing0??/????functorlisting_??is_assumed?$bin_cut?write% assumed write?write:cnlprolog:listing1??/????functorprolog:listing0_portray_clause?fail?:-??clauseprolog:listing0_??trueprolog:listing1_portray_clause?fail?:-??assumed_clauseprolog:listing1_??truelisting_listing??fail?0255forlisting_??trueprolog:generate_run_time_predicate_or??bb_element??nonvar??=??+??,?=?/??=?/$assumed0,?=?/$first0=?/????bb_listlisting_listing??fail??prolog:generate_run_time_predicatelisting_true=>_?intuitionistic?metacall?=?$closed???prolog:assume-:_?linear??metacall?=?$closed???prolog:assumeprolog:add_hint_ll_clause????:-?????add_trueassumel_??linear??prolog:assumeassumei_??intuitionistic??prolog:assumeprolog:assume_???bad_clause?error_in_assume?errmesprolog:assume_prolog:assume1prolog:assume1_.?[]?prolog:assume_fileprolog:assume1_prolog:assume_llprolog:assume_ll_lval$assumed??prolog:assume_with_hint_ll????prolog:add_hint_llprolog:assume_with_hint_ll_??????prolog:insert_llprolog:assume_with_hint_ll..?[]??trueassumed_call???assumed_clauseassumed_clause_??assumed_clauseassumed_clause_???$assumed?0????prolog:get_assumed_clauseprolog:get_assumed_clause_???.??clause????prolog:copy_or_delete_llprolog:get_assumed_clause_.??prolog:get_assumed_clauseprolog:copy_or_delete_lllinearlinear???:-???????$usedtrueprolog:copy_or_delete_llintuitionisticintuitionistic?????:-???copy_termprolog:insert_ll_??.?[]?2?.?[]?0?trueprolog:insert_ll_.??prolog:insert_llprolog:assume_file_seeing_telling0?see?prolog:assume_all?seensee?????find_fileprolog:assume_all_prolog:assume_all0?????gc_read_clauseprolog:assume_all0end_of_fileend_of_file??trueprolog:assume_all0_gc_read_clause?prolog:assume_all0????prolog:assume_oneprolog:assume_one:-:-?.?[]???prolog:assume_fileprolog:assume_one:-:-???prolog:consult_cmd?truetrueifprolog:assume_one_???prolog:assume_llbb_element==??+??/??/???.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_301?truebb_?unsortedbbbb_?,?,?,cnl,?,?,?,?,?,cnlfailwrite?prolog:bb_orig??member??if??=??\==?sorted,?sort??findall???bb_element??bb_list?write-bboard?statisticsbboard??cnlorprolog:bb_orig==??+??/??/??=??+??/??/??functor???or??$bin_cut??val???lval?????functorsort_?prolog:remdup???<??prolog:merge_sortprolog:remdup[][][]?trueprolog:remdup..??.??=???1?.??prolog:remdupprolog:remdup..??.??prolog:remdupprolog:merge_sort_prolog:merge_sort1????[]????lengthprolog:merge_sort100[]???trueprolog:merge_sort111?.??.?[]?trueprolog:merge_sort1_?10??0prolog:merge_sort1?????prolog:merge_2?????????prolog:merge_sort1prolog:merge_2[][]???trueprolog:merge_2..??.??.????1?.??prolog:merge_2prolog:merge_2_?.??.???prolog:merge_2prolog:ksort_$bin_cut?=???-1?[]prolog:keysortprolog:ksort_keysort??illegal_arguments?user_errorprolog:keysort..???????-???.??prolog:keysort?1?????????prolog:samkeyrunprolog:keysort_[]??trueprolog:keysort..????0?????-???.??prolog:keysort?1????prolog:keymerge???+???prolog:keysort????????????prolog:samkeyrunprolog:keysort_???trueprolog:samkeyrun..??????-????.??-??$bin_cut?=??prolog:samkeyrun??????.???@=<prolog:samkeyrun..??????-????.??-??<???1?.???prolog:samkeyrunprolog:samkeyrun_???.?[]trueprolog:keymerge[][]????trueprolog:keymerge..????.??-????-??$bin_cut?=??prolog:keymerge????.????@=<prolog:keymerge_.?????.??prolog:keymergeprolog:keymerge_??truesetof_call?sort??????bagofbagof_??\==?[]$bin_cut?=..??functor?.?findall???prolog:replace_instance????keysort??$bin_cut?prolog:concordant_subset???=???-??call?..??[]?free_variablesbagof_.??call?.???findall^_??callprolog:replace_instance[][][]??trueprolog:replace_instance..??-???.??-??$bin_cut?prolog:replace_instance??????prolog:replace_key_variablesprolog:replace_key_variables00??trueprolog:replace_key_variables_??0????10prolog:replace_key_variablesprolog:replace_key_variables_??0??1?10prolog:replace_key_variablesprolog:concordant_subset..??-??prolog:concordant_subset??????.????prolog:concordant_subsetprolog:concordant_subset..??-??.??=???1?prolog:concordant_subsetprolog:concordant_subset_[]??trueprolog:concordant_subset[][]????trueprolog:concordant_subset_???trueprolog:concordant_subset_???prolog:concordant_subsetfree_variables_??.????prolog:list_is_free_of??$bin_cut????prolog:term_is_free_offree_variables_?????truefree_variables_$bin_cut?free_variables????????prolog:explicit_bindingfree_variables_prolog:free_variables?????????functorprolog:free_variables00???trueprolog:free_variables_??0-?1?$bin_cut?prolog:free_variables???????????free_variablesprolog:explicit_binding\+\+?fail??trueprolog:explicit_bindingnotnot?fail??trueprolog:explicit_binding^^????+??trueprolog:explicit_bindingsetofsetof????-??+??trueprolog:explicit_bindingbagofbagof????-??+??trueprolog:term_is_free_of_???\==prolog:term_is_free_of_prolog:term_is_free_of??????functorprolog:term_is_free_of00??trueprolog:term_is_free_of_??0-?1?$bin_cut?prolog:term_is_free_of???????prolog:term_is_free_ofprolog:list_is_free_of[][]?trueprolog:list_is_free_of..??prolog:list_is_free_of????\==keysort_prolog:ksortnot_call?$bin_cut????\+not_$bin_cut?fail??groundnot_?user_errorshould be groundnot??failabortifterm_chars_???name?????swriteterm_chars_sread?????namevars_of_??[][]free_variablesprolog:compile_binary_prolog:cc_bincompprolog:compile_builtins_prolog:cc_builtinsprolog:cc_must_have_builtinswamwam?trueprolog:cc_must_have_builtinsccwam.hprolog:c_chunk_fileprolog:cc_builtins_prolog:bin_builtin?prolog:cc_bincomp??fail??prolog:cc_must_have_builtinsprolog:cc_builtins_?trueprolog:cc_bincompbinbin??fail?portray_clauseprolog:cc_bincompasmasmcnlportray_clause?cnlfail?BINARY:?writeprolog:cc_bincomp_prolog:cc_compile_clause??prolog:gg_emit??$bin_cut???prolog:newpredprolog:cc_bincomp_failing_to_compile_clause??errmesprolog:bin_builtin:-:-??true?$bin_cut??prolog:cutpprolog:bin_builtin_prolog:bu_body??????prolog:buprolog:bu_bodyin_headin_head?:-??true?arg??????functorprolog:bu_bodyin_bodyin_body?:-??trueprolog:cc_compile_clause_?.??.??.?[]prolog:cc_clauseprolog:firstarg_1?0prolog:classif_firstprolog:classif_first_?????/?0?trueprolog:classif_first_?????/_0?trueprolog:classif_first_?/??functorprolog:cc_clause_.??.?[]iifirstarg???iiclause???.?[]iiexecute???:-??prolog:firstarg??prolog:cc_h_b????getput?prolog:max???+?1?prolog:vars??functor?dict?prolog:fill_info??prolog:collapse_args?1?prolog:allocate_regs????-?[]/??-??/??/??/???add_trueprolog:cc_h_b_/??/??/??-??/??-??/??prolog:cc_b????$bin_cut??/??-??/??-?[]/???prolog:cc_hprolog:begin_chunk_?iic_chunk???len?prolog:hidden_var????+????prolog:emitprolog:end_chunk_?iic_chunk???len?prolog:hidden_var????+????prolog:emitprolog:emit_-??.??-???trueprolog:get_mode_???-??/???trueprolog:set_mode_-??/??-??/???trueprolog:hidden_var_???-??/???trueprolog:cc_h_prolog:cc_h0prolog:cc_b_prolog:end_chunk?????prolog:cc_b0prolog:cc_h0_/??$bin_cut?functor???arg???prolog:emit???prolog:begin_chunk???iibuiltin???in_head?prolog:buprolog:cc_h0_/??greater?0$bin_cut?functor???prolog:emit_head_top_term????????functorprolog:cc_h0_???unexpected_head_atom?errmesprolog:emit_head_top_term_???prolog:cc_top_arg11????prolog:begin_chunk??prolog:emit_top_args2?????prolog:cc_top_arg2??????11????prolog:emit_top_argsprolog:cc_b0_???true??prolog:cc_b0prolog:cc_b0truetrue??/true0?trueprolog:cc_b0$bin_cut$bin_cut???iiput???cutarg1prolog:cc_b0????????prolog:emitprolog:cc_b0==????prolog:cc_b0????????prolog:cc_eqprolog:cc_b0_$bin_cut?prolog:cc_builtin???????in_body?prolog:buprolog:cc_b0_/??greater?0$bin_cut?functor???prolog:emit_body_top_term????????functorprolog:cc_b0_???unexpected_body_atom?errmesprolog:emit_body_top_term_???$bin_cut?prolog:emit_top_args1??????1????prolog:cc_top_argprolog:cc_eq_????????prolog:cc_eq1prolog:cc_eq_prolog:cc_eq1prolog:cc_eq1_=??prolog:emit???prolog:emit???prolog:set_modeget??prolog:cc_top_t???prolog:set_modeput???=??iiget???temp0iiput???temp0????prolog:cc_top_tprolog:out_reg000?trueprolog:out_reg11??trueprolog:cc_builtinaritharith????arg???-?1?arg???prolog:out_reg???-???functor???prolog:handle_constant_res????prolog:emit_top_bargs1?????prolog:emit???prolog:cc_b0?????iiarith???=????functorprolog:cc_builtin_-?1?arg???arg1??prolog:cc_b_args????prolog:emit???prolog:cc_b0?????iiinline???????functorprolog:handle_constant_res00???trueprolog:handle_constant_res11??=???????trueprolog:handle_constant_res11=?????iiput???temp0prolog:emit????iiget???temp0???prolog:emitprolog:handle_constant_res11=???=?????prolog:cc_top_tprolog:classif_load_???????trueprolog:classif_load_constant???????trueprolog:classif_load_?=?????prolog:cc_top_tprolog:cc_b_args00??trueprolog:cc_b_args11=??prolog:emit????iiput???temp0???prolog:cc_top_tprolog:emit_top_bargs_???0??trueprolog:emit_top_bargs_??0?10??0??0prolog:emit???prolog:emit_top_bargs???????iiload????????prolog:classif_loadprolog:emit_top_bargs_??0??0??0?=??+?1?prolog:emit_top_bargs??????????prolog:cc_top_tprolog:emit_top_args_???0??trueprolog:emit_top_args_??0??0??0$bin_cut?prolog:get_mode???prolog:emit???+?1?prolog:emit_top_args???????ii????arg????prolog:classif_argprolog:cc_top_arg_???0??trueprolog:cc_top_arg_??0??0??0?10?=??prolog:cc_top_arg?????????prolog:cc_top_tprolog:cc_top_t==?????????trueprolog:cc_top_t==?????????trueprolog:cc_top_t==??greater?0$bin_cut?functor???prolog:emit_top_structure???????prolog:cc_args?????????functorprolog:emit_top_structure_prolog:emit???prolog:emit_args??????ii?structure??/??????prolog:get_modeprolog:cc_arg_???0??trueprolog:cc_arg_??0??0??0?10?=??prolog:cc_arg?????????prolog:cc_tprolog:cc_t==?????????trueprolog:cc_t==?????????trueprolog:cc_t==??greater?0$bin_cut?functor???prolog:emit_structure???????prolog:cc_args?????????functorprolog:cc_args_?10??10??0??0=??prolog:cc_arg1????????prolog:cc_tprolog:cc_args_??????1?????prolog:cc_argprolog:emit_structure_prolog:deep_structure_op??prolog:emit???prolog:emit_args??????ii?structure??/??????prolog:get_modeprolog:emit_args_??????1?????prolog:emit_args0prolog:emit_args0_???0??trueprolog:emit_args0_??0??0??0$bin_cut?prolog:get_mode???prolog:emit???prolog:unify_op???+?1?prolog:emit_args0???????ii???????prolog:classif_argprolog:unify_opgetgetunify?trueprolog:unify_opputput???prolog:deep_var_opprolog:deep_var_op_push$bin_cut??compoundprolog:deep_var_op_write?trueprolog:deep_structure_opgetgetget?trueprolog:deep_structure_opputputpush?trueprolog:classif_arg_??????trueprolog:classif_arg_constant??????trueprolog:classif_arg_?trueprolog:max_??0????trueprolog:max_??trueadd_true:-:-???:-???trueadd_true_:-?true?trueprolog:vars_call???trueprolog:find_occurrencesprolog:find_occurrences[][][]??trueprolog:find_occurrences..??ii????.??ii????prolog:find_occurrences???????prolog:occurrenceprolog:occurrence_??????trueprolog:occurrence_???var???????$OCC??1??prolog:newvarprolog:occurrence$OCC$OCC????var???prolog:oldvarprolog:occurrence_??at?=occ?=var?bad_occurrence?errmesprolog:oldvar_/????=???111??0?trueprolog:newvar_,????=????/???trueprolog:fill_info_?0?prolog:fill_allprolog:tpoint_??11?trueprolog:fill_all[][]??trueprolog:fill_all..??prolog:fill_one????prolog:fill_all??????prolog:fill_var_typeprolog:fill_var_typeiiii????var???????prolog:get_var_typeprolog:fill_var_type_?trueprolog:get_var_type//11unifyvoid??trueprolog:get_var_type//11writevoid??trueprolog:get_var_type//1?variable??trueprolog:get_var_type//??value???0?trueprolog:fill_oneiiii?constant??arg??prolog:mark_arg??????var?/11-?/?????prolog:tpointprolog:fill_oneiiii?constant??????prolog:tpointprolog:fill_oneiiii????arg??prolog:mark_arg?????prolog:mark_var??????prolog:tpointprolog:fill_oneiiii??var?????prolog:mark_var???var??prolog:tpointprolog:mark_arggetget?-?/??*????1trueprolog:mark_argputput?-?/??*????1trueprolog:mark_var_var??/11-??/????trueprolog:mark_var_var??/1?-??/??1?0??trueprolog:mark_var_var??/??-??/??1?0??trueprolog:mark_var_?var??/?-??/?trueprolog:collapse_args_???0?trueprolog:collapse_args_??0??0+?1?prolog:collapse_args???????prolog:collapse_themprolog:default//??prolog:set_to99999??0?prolog:set_toprolog:set_to_???trueprolog:set_to_?trueprolog:collapse_them_-??*??var??-??var??-??prolog:default?prolog:default?prolog:check_lifetimes????-??-??-???prolog:defaultprolog:check_lifetimes--??-??-??prolog:check_var_var??prolog:check_var_arg??$bin_cut??prolog:check_var_argprolog:check_lifetimes--??-??$bin_cut??prolog:check_var_argprolog:check_lifetimes_-??-??$bin_cut??prolog:check_var_argprolog:check_lifetimes_?trueprolog:check_var_var//???/????0?trueprolog:check_var_var//???/????0trueprolog:check_var_arg//???/????0??0trueprolog:allocate_regs[][]???trueprolog:allocate_regs..??prolog:allocate_regs??????prolog:allocate1prolog:allocate1iiii??var??-????$bin_cut?????prolog:allocate_regprolog:allocate1_??trueprolog:allocate_reg_/11???prolog:free_reg???????prolog:get_regprolog:allocate_reg_/1???1?0????prolog:get_regprolog:allocate_reg_/??1?0????prolog:free_regprolog:free_reg_-??/??-??.??/????0??trueprolog:free_reg_??trueprolog:get_reg_-??.??/??-??/????trueprolog:get_reg_-??/??-??/???11?trueprolog:mdef_to_def:-:-??:-??prolog:repl_body????prolog:hide_atomprolog:mdef_to_def:-:-?:-?$bin_cut?call?fail??prolog:repl_bodyprolog:repl_body_call?????trueprolog:repl_body_$bin_cut???prolog:repl_macroprolog:repl_body_$bin_cut?prolog:strip_nil?????prolog:split_opprolog:repl_body_prolog:peval_io??$bin_cut??binprolog?is_prologprolog:repl_body_$bin_cut?=??ttyprint??spying_on?spy_goal??spyingprolog:repl_body_prolog:hide_atomis_prolog_$bin_cut?=???isprologbb_valis_prolog_prolog:default_prologprolog:cutp_?.36.99.117.116[]nameprolog:repl_macro!!$bin_cut??prolog:cutpprolog:repl_macrovarvar???var?prolog:repl_knownprolog:repl_macrononvarnonvar???nonvar?prolog:repl_knownprolog:repl_macroatomicatomic???atomic?prolog:repl_knownprolog:repl_macrofloatfloat???float?prolog:repl_knownprolog:repl_macroatomicatomic???atomic?prolog:repl_knownprolog:repl_macro,,??????prolog:repl_conjprolog:repl_macro;;??????prolog:repl_disjprolog:repl_macro->->??->??prolog:repl_body????prolog:repl_bodyprolog:repl_macrocomparecompare????compare0???trueprolog:repl_macro====???compare0??=trueprolog:repl_macro@<@<???compare0??<trueprolog:repl_macro@>@>???compare0??>trueprolog:repl_macro:=::=:???lval???prolog:repl_lvalprolog:repl_macro##??dcg_connect?trueprolog:repl_macro::???module_call??trueprolog:repl_macrofindallfindall???findall???prolog:repl_bodyprolog:repl_macrobagofbagof???bagof???prolog:repl_bodyprolog:repl_macrosetofsetof???setof???prolog:repl_bodyprolog:repl_macroallall???setof???prolog:repl_bodyprolog:repl_macro^^??^??prolog:repl_bodyprolog:repl_macrocallcall?prolog:repl_bodyprolog:repl_macro\+\+?\+?prolog:repl_bodyprolog:repl_macronotnot?not?prolog:repl_bodyprolog:repl_conj_??$bin_cut?prolog:repl_body??prolog:app_body?????prolog:split_opprolog:repl_conj_,??prolog:repl_body????prolog:repl_bodyprolog:repl_disj_if???????->???prolog:repl_body??prolog:repl_body????prolog:repl_bodyprolog:repl_disj_or??prolog:repl_body????prolog:repl_bodyprolog:repl_lval##??????trueprolog:repl_lval_???trueprolog:repl_known_true$bin_cut??callprolog:repl_known_fail?trueprolog:split_opisis??????prolog:split_is_relprolog:split_op<<????less??prolog:split_relprolog:split_op>>????greater??prolog:split_relprolog:split_op=<=<????less_eq??prolog:split_relprolog:split_op>=>=????greater_eq??prolog:split_relprolog:split_op=:==:=????arith_eq??prolog:split_relprolog:split_op=\==\=????arith_dif??prolog:split_relprolog:split_is_rel_.?[]expr??????trueprolog:split_is_rel_.?[]+?0?????trueprolog:split_is_rel_.?[]+?0?$bin_cut????floatprolog:split_is_rel_.?[]+?0?ground?$bin_cut?expr???binprolog?is_prologprolog:split_is_rel_?[]prolog:split_isprolog:app_body[][]???trueprolog:app_body..??,??prolog:app_bodyprolog:strip_nil..?[]???trueprolog:strip_nil..??,??prolog:strip_nilprolog:split_rel_?[]prolog:split_rel_1prolog:split_rel_1_prolog:split_is????=..??prolog:emit_is????.?.?.?[]???prolog:split_isprolog:split_is_???????trueprolog:split_is_???????trueprolog:split_is_?$bin_cut?=?????floatprolog:split_is_.?.?.?[]$bin_cut?prolog:split_is????prolog:split_is????=..??prolog:emit_is????.?.?.?.?[]???=..prolog:split_is_.?.?[]prolog:split_is????=..??prolog:emit_is????.?.?.?[]???=..prolog:emit_is_.???trueprolog:def_to_mbin:-:-???????prolog:def_to_mbin0prolog:def_to_mbin_??true?prolog:def_to_mbin0prolog:def_to_mbin0@@@@??:-?????prolog:add_upper_cont??????termcatprolog:def_to_mbin0_:-??add_cont?????termcatprolog:add_upper_cont_???add_cont???????add_contprolog:add_upper_cont_,??strip_cont??????add_contadd_cont,,true??add_contadd_cont,,fail??fail??trueadd_cont,,???term_append????cont??add_contadd_cont_?cont??1?truetermcat_?cont??1?trueprolog:show_code_show_code0??length??write?cnlnth_member???prolog:show_instr??fail?BRUT WAM-ASSEMBLER:?=length?=mode????findallprolog:show_code_?POST TERM-COMPRESSION CODE:=mode?cnlprolog:mc_all_instr??nth_member???prolog:show_instr??fail???writeprolog:show_code_?FINAL CODE:=mode?cnlprolog:gen_code??fail???writeprolog:show_code_??trueshow_code0_?member??prolog:show_or_skip????memberprolog:show_or_skipiiiigetvariable??var??-??arg????trueprolog:show_or_skipiiiiputvalue??var??-??arg????trueprolog:show_or_skip_?trueprolog:show_instr_??ii????.?[]write write?write_write?write prolog:show_fun?prolog:show_info?cnl??writeprolog:show_funputput??trueprolog:show_fungetget??trueprolog:show_fun_writeprolog:show_info_??var??-???write?put9put9put9write% write??var? ?writeprolog:show_info_write?? ?writeprolog:show_stepsasmasm,cnl,?,?,cnl,?,cnlfailportray_clause?writeEXPANDED:\==??,?,cnl,?,cnlfailportray_clause?writeDEFINITE:?orprolog:show_steps_?trueprolog:bind_c_chunk_lengthwamwam???trueprolog:bind_c_chunk_lengthmemmem???trueprolog:bind_c_chunk_length_?????0[]prolog:bind_lengthprolog:bind_length[][]??trueprolog:bind_length..??????????????prolog:make_anti_callprolog:make_anti_calliiii?????c_chunk_variable?ii???len?=??prolog:bind_length?????????Cprolog:make_anti_calliiii?????c_chunk_value?ii???len?-???prolog:bind_length??0?????Cprolog:make_anti_call_????ii???$bin_cut?-???C???C???prolog:bind_length??0???.??iic_chunk_variable?0iic_chunk_value?0len?????prolog:antigenicprolog:make_anti_call_???10prolog:bind_length?????????Cprolog:gen_code_prolog:bind_c_chunk_length???member??prolog:write_instr???=?no$bin_cut?fail????prolog:mc_all_instrprolog:gen_code_?trueprolog:maxarity256256?trueprolog:temparg_??trueprolog:gen_instriiii?????$bin_cut????prolog:beautifyprolog:write_instriiii????$bin_cut?=?yes?????prolog:encodeprolog:write_instr_no?trueprolog:mc_all_instr_??prolog:mc_one_instr???findallprolog:mc_one_instr_?prolog:mc_peephole??prolog:instr_cat?????memberprolog:instr_catiiii?????ii?????1trueprolog:beautifyargarg??prolog:encode_argprolog:beautifytemptemp??prolog:encode_arg????????prolog:tempargprolog:beautifycutargcutarg??prolog:encode_argprolog:beautify_???var??-????prolog:encode2prolog:beautifyputputwriteconstant?$bin_cut?prolog:encode2pushcut????prolog:cutpprolog:beautify_????prolog:encode2prolog:encode_arg_getvariableempty_opvar??-????trueprolog:encode_arg_putvalueempty_opvar??-????trueprolog:encode_arg_???var??-????prolog:encode2prolog:encode_arg11constant?$bin_cut?prolog:encode2?cut?????prolog:cutpprolog:encode_arg_??constant?constant?prolog:encode2prolog:encode2_ii?????trueprolog:mc_peephole_prolog:mc_topprolog:mc_input_prolog:mc_input0prolog:mc_input0_.??prolog:mc_empty???????prolog:gen_instrprolog:mc_emptyempty_opempty_op?????prolog:mc_input0prolog:mc_empty_???trueprolog:mc_top_?prolog:mc0??????prolog:mc_inputprolog:mc0_prolog:mc1??????????prolog:op_typeprolog:mc1pushpushvariable??$bin_cut?prolog:mc5?????prolog:mc_pushprolog:mc1c_chunkc_chunkvariable???prolog:mc5?????prolog:mc_chunkprolog:mc1_void??prolog:mc3?????1?prolog:mc_selprolog:mc1_????prolog:mc5prolog:mc_push_??prolog:op_type?pushstructureprolog:mc_transform_push???$bin_cut?=??????prolog:mc_inputprolog:mc_push_???trueprolog:mc_chunk_?prolog:op_type?c_chunkvalue$bin_cut?prolog:mc_input??????prolog:mc_inputprolog:mc_chunk_???trueprolog:mc_sel_?prolog:op_type??void$bin_cut?+?1?prolog:mc_sel???????prolog:mc_inputprolog:mc_sel_???trueprolog:mc3_???prolog:mc4prolog:mc3_?prolog:mc0??????prolog:mc_inputprolog:mc4_$bin_cut???prolog:mc_transform_voidprolog:mc411??trueprolog:mc5_??trueprolog:mc5_?prolog:mc0???????prolog:mc_inputprolog:op_typeiiii?????????trueprolog:op_type_??expected/ii4?errmesprolog:mc_transform_void11?iiunifyvoid??iiunifyvariable???trueprolog:mc_transform_void_ii?void??ii?void???trueprolog:mc_transform_pushiiiipushvariable???iipushstructure??iipushconstant??trueprolog:encodeunify_variableunify_variableget??1?0prolog:wcodeprolog:encodewrite_variablewrite_variableput??2?0prolog:wcodeprolog:encodeunify_valueunify_valueget??3?0prolog:wcodeprolog:encodewrite_valuewrite_valueput??4?0prolog:wcodeprolog:encodeunify_constantunify_constantget???50?0prolog:wcodeprolog:encodewrite_constantwrite_constantput???60?0prolog:wcodeprolog:encodepush_constantpush_constant??/??6prolog:wcodeprolog:encodeget_constantget_constant???7?0prolog:wcodeprolog:encodeget_structureget_structure??/??8prolog:wcodeprolog:encodeput_constantput_constant???9?0prolog:wcodeprolog:encodeput_structureput_structure??/??10prolog:wcodeprolog:encodeget_variableget_variable????11???prolog:wcodeprolog:encodeput_valueput_value???11??prolog:wcodeprolog:encodeput_variableput_variable????12???prolog:wcodeprolog:encodeget_valueget_value????13???prolog:wcodeprolog:encodepush_cutpush_cut????140?0prolog:wcodeprolog:encodeput_cutput_cut????150?0prolog:wcodeprolog:encodeget_cutget_cut????160?0prolog:wcodeprolog:encodeexecute_?execute_?????170??prolog:wcodeprolog:encodeload_constantload_constant????28??0prolog:wcodeprolog:encodeload_variableload_variable????50???prolog:wcodeprolog:encodeload_valueload_value????29???prolog:wcodeprolog:encodepush_structurepush_structure??/??51prolog:wcodeprolog:encodepush_variablepush_variableput??52?0prolog:wcodeprolog:encodeunify_voidunify_void??61?0prolog:wcodeprolog:encodewrite_voidwrite_void??62?0prolog:wcodeprolog:encodec_chunk_variablec_chunk_variable???63??prolog:write_or_skipprolog:encodec_chunk_valuec_chunk_value???64??prolog:write_or_skipprolog:encodeclause_?clause_?+?1?prolog:wcode???0????prolog:n_nopprolog:encodefirstarg_?firstarg_?/??+?2?prolog:wcode????????prolog:n_nopprolog:encodeend_?end_?????0??0prolog:wcodeprolog:encodeinline_variableinline_variableprolog:wcode????????prolog:n_inlineprolog:encodearith_variablearith_variableprolog:wcode????0???prolog:n_arithprolog:encodearith_valuearith_valueprolog:wcode????1???prolog:n_arithprolog:encodebuiltin_?builtin_?prolog:wcode????????prolog:n_builtinprolog:encode_op_?op+?3?make_cmd??prolog:wcode???0?0?.?.?.?.?.?[].32[].32[]??prolog:n_nopprolog:n_inline_bu_ctrn_inline??metacallprolog:n_arith_bu_ctrn_arith??metacallprolog:n_builtin_bu_ctrn_builtin??metacallprolog:n_nop_bu_ctrn_nop??metacallprolog:bu_bu0?????metacallprolog:write_or_skipwamwam??trueprolog:write_or_skipmemmem??trueprolog:write_or_skip_len?greater_eq??less??$bin_cut?prolog:write_or_skip0??????????prolog:c_thresholdprolog:write_or_skip_?trueprolog:write_or_skip0wamwam$bin_cut?prolog:wcodewam??????c_flagbegin_endyes?bb_valprolog:write_or_skip0cc??????0prolog:wspec_cprolog:write_or_skip0asmasm?bb_valc_flagbegin_endyes=?c=?nprolog:wcodeasm??????+?????ifprolog:write_or_skip0_?trueprolog:wcodememmem?????0trueprolog:wcodewamwam??0?0?0put0?writeprolog:wcodecc??????prolog:wcode_cprolog:wcodeasmasm??????prolog:wcode_asmprolog:wcode_asm_.?.?.?.?[]write?write-->put9put9write?cnl??=..prolog:let_c_chunk_file_??c_chunkfile_namebb_letprolog:c_chunk_file_??c_chunkfile_namebb_valprolog:newpredcc???:-???prolog:newpred0prolog:newpred_?trueprolog:newpred0_bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0??functorprolog:newpred0_bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0??functorprolog:currpred--??/??/??bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset??predicatenamebb_valprolog:compile_mem_?memcompiling??...to?ctime?prolog:survive_cleanup??prolog:mcomp_file??prolog:maincomp??prolog:terminate_file?$end11$bin_cut?ctime?-???quietmes??compile_time?current_user_file???quietmesprolog:compile_mem_restart?compilation aborted?ttyprintprolog:survive_cleanup_restartprolog:call_ifdefinit_iotruename??prolog:init_cmd??nameprolog:mcomp_file_.?.?[]statisticsstrings?statisticssymbols?statisticshtable?prolog:translate_all??statisticscode?-???statisticsstrings?-???statisticssymbols?-???statisticshtable?-???+???+???+???quietmes??bytes_used????total?code?strings?symbols?htable?.?.?[].?.?[].?.?[].?.?[].?.?[].?.?[].?.?[]code??statisticsprolog:compile0_.???.??prolog:compile1prolog:compile0_.?[]?prolog:compile1prolog:compile1_?ctime?prolog:xcompile???ctime?-???write?cnl?total_compile_time??prolog:init_cmdprolog:xcompile_prolog:decorate_fileheader?prolog:compile_builtins?member??quietmes?ctime?prolog:comp_file??ctime?-???quietmes?fail?compile_time?compiling??...to???tellprolog:xcompile_prolog:decorate_filefooter?fail?$end00?prolog:terminate_fileprolog:xcompile_?toldprolog:decorate_file_c??prolog:c_decorate_fileprolog:decorate_file_?trueprolog:terminate_file_prolog:gg_emit??prolog:close_c_chunk_file??.?[].?[]iiend????prolog:make_dummy_endprolog:make_dummy_endcc$bin_cut??wam.hprolog:c_chunk_fileprolog:make_dummy_end_prolog:maincompprolog:close_c_chunk_filecc?toldprolog:write_c_chunkprolog:close_c_chunk_file_?trueprolog:gg_emitmemmemmemprolog:gen_codeprolog:gg_emitwamwamwamprolog:gen_codeprolog:gg_emitcccprolog:gen_codeprolog:gg_emitasmasmasmprolog:show_codeprolog:comp_file_.wam.asm.bin.c[]$bin_cut?prolog:translate_all?????memberprolog:translate_all_prolog:translate_all0prolog:memoing_translate_all_?wam\+?prolog:memoable_file???$bin_cut?if?true?prolog:include_memoed_file??\+older_file??prolog:make_memo_file???current_moduleprologbinprolog?is_prologprolog:memoing_translate_all_prolog:translate_all0prolog:memoable_file_??.??.??.?[]append???$bin_cut?=??name??append???name???.??.46.112.108[]???nameprolog:make_memo_file_?wam10prolog:translate_all0??toldtell????tellprolog:include_memoed_file_00repeatget0?prolog:put_to_eof?$bin_cut?seensee???seeprolog:put_to_eof-1-1??trueprolog:put_to_eof_?0??trueprolog:translate_all0_00repeatread_clause?prolog:translate??$bin_cut?seensee???seeprolog:translateend_of_fileend_of_file??trueprolog:translate:-:-??fail??prolog:translate_cmdprolog:translate::-::-????:-??fail??prolog:compile_binaryprolog:translate_$bin_cut?prolog:translate_cmd??fail?assert??prolog:is_dynamic_clauseprolog:translate_??fail???prolog:maincompprolog:is_dynamic_clause:-:-???is_dynamicprolog:is_dynamic_clause_is_dynamicprolog:maincomp_prolog:show_steps???prolog:compile_binary??????prolog:preprocessprolog:translate_cmd..?[]?prolog:include_fileprolog:translate_cmdcompilecompile??prolog:include_fileprolog:translate_cmdensure_loadedensure_loaded??prolog:include_fileprolog:translate_cmdconsultconsult??prolog:include_fileprolog:translate_cmdreconsultreconsult??prolog:include_fileprolog:translate_cmddynamicdynamic???dynamicprolog:translate_cmdinteractiveinteractive???interactiveprolog:translate_cmdspyspy???spyprolog:translate_cmdopop????if??true?member?.wam.c[]prolog:encode_op??????opprolog:translate_cmd_prolog:exec_cmdprolog:exec_cmd_prolog:maincomp??fail??prolog:cmd2clauseprolog:cmd_root$run_time_command$run_time_command?trueprolog:init_cmd_prolog:get_cmd_no???prolog:cmd_rootprolog:get_cmd_no_?bb_setgensym?0$bin_cut??gensym??bb_valprolog:get_cmd_no_?trueprolog:cmd2clause_:-??gensym??quietmes% !!! action delayed after compilation, for command:quietmes?if?truetrue?public/?0:-??prolog:cmd_rootprolog:exec_run_time_commands_prolog:exec_run_time_commands0?fail??prolog:cmd_rootprolog:exec_run_time_commands_trueprolog:exec_run_time_commands0_?10000symcat???if??true$bin_cut??is_compiled?,?failcall?1forprolog:include_file_00quietmes?prolog:memoing_translate_all??seeing_telling0?quietmes??end?in?including?begin?in?including???find_fileprolog:preprocess_prolog:fact2rule??prolog:mdef_to_def??prolog:def_to_mbin?????prolog:std_expand_termprolog:fact2rule:-:-??:-??trueprolog:fact2rule:-:-???:-???trueprolog:fact2rule_:-?true?truemake_cmd_name????prolog:make_cmd0prolog:make_cmd0_??char_in_cmd????findallchar_in_cmd_prolog:listify??member?????memberprolog:listify..???.???trueprolog:listify_namemake_appl_?.?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[]wamnewappl.bpprolog:compile0make_executable_unix_appl_make_cmd??system??.?.?.?.?.?.?.?.?.?[].32.59.32.99.104.109.111.100.32.43.120.32[].32.59.32.99.97.116.32.110.101.119.97.112.112.108.46.98.112.41.32.62.32[].32.36.48.39[].59.32.101.99.104.111.32.39.101.120.101.99.32[].59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[].40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[]??make_applprolog:cparser_?isprologbin_prolog_with_cparserbb_defkmake_makewam??prolog:cparserkcmake_cmakewam??prolog:cparsertmake_?1260tmaketmake_?10000tmaketmake_cmake??set_c_thresholdcmake_?wamcmakecmake_?usercmakecmake_?c.cmakemake_?wammakemake_?usermakemake_?wam.bpmakemake_????makemake_module?if?true?module??make0????\+errmesunable_to_make.?.?.?[]in_module?project??mode???current_modulemake0_find_file??make_cmd??prolog:make_include??prolog:compile0???ctime?-???write?cnl?=?time?.?.?[]??ctimeprolog:make_includecc?.?.?[].46.104[]prolog:let_c_chunk_file???make_cmdprolog:make_include_?trueasm_?asmuserprolog:comp_fileasm_?userasm.asmBinWAM intermediate codemakeboot_?wamprologmakeprolog:uboot_?wamusermakels_?ls -tFsystemdir_?dirsystemedit_make_cmd??system?compile??.?.?.?[].32[]???find_fileprolog:get_editor_unix_getenvEDITOR?unix_getenvVISUAL?$bin_cut????orprolog:get_editor_??truemy_edit_current_user_file?edit????failprolog:call_ifdefprolog:my_defedit_current_user_file?prolog:defedit????failprolog:call_ifdefprolog:defedit_edit?????prolog:get_editored_?emacsprolog:my_defeditedit_?editprolog:my_defedittextedit_?texteditmy_editemacs_?emacsmy_editnotepad_?notepadmy_editpico_?picomy_editvi_?vimy_editco_current_user_file?compile???failprolog:call_ifdefprolog:s_statisticsprolog:c_rootxxxx?trueset_c_threshold_?100000set_c_thresholdset_c_threshold_?bb_letc_flagc_threshold_max??c_flagc_threshold_min?bb_letset_c_trace_??c_flagtracebb_letprolog:c_threshold_?bb_valc_flagc_threshold_max?$bin_cut??c_flagc_threshold_min?bb_valprolog:c_threshold110$bin_cut??wam.hprolog:c_chunk_fileprolog:c_threshold55500?trueprolog:wcode_c_prolog:make_ccodeprolog:make_ccode_$bin_cut?prolog:make_hcode???prolog:c_instrprolog:make_ccode_prolog:make_bcodeprolog:make_hcode_?prolog:wchunk??2?prolog:c_traceprolog:make_bcode_?{???,???,???,"?cwrite?cwrite"},cnl?prolog:patch_specialsprolog:make_comment_-?/??/??=??prolog:make_cmd0???.?.?.?.?.?.?.?.?.?.?[].93.32.42.47[].32.47.32[].32.91[].32.47.32[].32.47.42.32[].10[]??prolog:currpredprolog:wspec_c_$bin_cut?prolog:make_comment?prolog:write_c_chunk?prolog:wchunk?lwrite?prolog:c_trace1?cwrite {write?cwrite,cwrite?cwrite,cwrite?cwrite,(void *)write?cwrite},cnl?,?nllwrite??prolog:c_specprolog:wspec_c_$bin_cut?prolog:c_trace1?prolog:wchunk???prolog:c_spec_endlwrite_?put?fail??memberlwrite_?trueprolog:patch_specials_??????trueprolog:patch_specials_=?92=?34findall???name???,?patch_it????member???namepatch_it_???=??=???orpatch_it_???=??=???orpatch_it_??trueprolog:write_c_chunk_?seeing_telling1?tell?call?tell????prolog:c_chunk_fileprolog:wchunk_,?nlfast_write??prolog:write_c_chunkprolog:c_decorate_file_$bin_cut?prolog:c_decorate_file0?wam_bp?wam.h?prolog:c_chunk_fileprolog:c_decorate_file_?user_bpprolog:c_decorate_file0prolog:c_decorate_file0headerheader?init_gensym?prolog:wchunk/* do not edit: generated by co.pl */write#include "../src/global.h"cnlwrite#include "../src/c_defs.h"cnlprolog:c_chunk_file?write#include "write?write"cnlcnlwritestruct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} write?write[] = {cnl??prolog:c_rootprolog:c_decorate_file0footerfooterwrite?write"}};cnlcnlwritelong write?write_size=sizeof(write?write);cnl?{255,0,0,"?writeprolog:c_check_??prolog:c_check0prolog:c_check0_?integer??c_chunkinbb_valprolog:new_offset_?+?1?bb_setpredicateoffset??predicateoffsetbb_valprolog:get_offset_??predicateoffsetbb_valprolog:c_find_fun_????integer?unexpectederrmesprolog:c_find_fun_bb_valfun_symbol??bb_valfun_arity??$bin_cut?=????0?forprolog:c_find_fun_?11bb_letfun_symbol??bb_letfun_arity??prolog:make_bcodewrite_constant60???c_chunkin??bb_setprolog:c_chunk_begin_prolog:c_root?gensym???c_chunkin-1bb_letprolog:c_chunk_end_?c_chunkinnobb_letprolog:newP_integer?prolog:c_find_fun?????c_chunkin??bb_valprolog:newH_oldP_prolog:new_offset???prolog:c_checkprolog:oldH_oldP_prolog:get_offset???prolog:c_checkprolog:newH_newP_prolog:new_offset???prolog:newPprolog:oldH_newP_prolog:get_offset???prolog:newPprolog:c_wvoid_or?true?,?,?failprolog:new_offset?for?2???prolog:newH_oldPprolog:c_aux_load_integer_load_integer??????prolog:c_checkprolog:c_aux_load_integer_load_constant??????prolog:newPprolog:c_aux_put_integer_put_integer??????prolog:c_checkprolog:c_aux_put_integer_put_constant??????prolog:newPprolog:c_aux_get_integer_get_integer??????prolog:c_checkprolog:c_aux_get_integer_get_constant??????prolog:newPprolog:c_aux_write_integer_?write_integer??????prolog:newH_oldPprolog:c_aux_write_integer_?write_constant??prolog:newH_newPprolog:c_aux_unify_integer_?unify_integer??????prolog:oldH_oldPprolog:c_aux_unify_integer_?unify_constant??prolog:oldH_newPprolog:c_trace_greater_eq??$bin_cut?prolog:write_c_chunk??,?,?,?nlwrite ")write?writec_trace(" c_flagtrace?bb_valprolog:c_trace_?trueprolog:c_specc_chunk_variablec_chunk_variable??c_chunk_variable?prolog:c_chunk_beginprolog:c_skip22?trueprolog:c_spec_endc_chunk_valuec_chunk_valuec_chunk_value??prolog:c_check0?+???prolog:c_chunk_endprolog:get_offset?prolog:make_bcodec_chunk_value?0????prolog:c_skipprolog:c_instrput_structureput_structure???put_structure????prolog:newH_newPprolog:c_instrput_constantput_constant?????prolog:c_aux_put_integerprolog:c_instrpush_variablepush_variablepush_variable()defoffset???prolog:newH_oldPprolog:c_instrpush_structurepush_structure??push_structure???valoffset??rmoffset???prolog:newH_newPprolog:c_instrwrite_valuewrite_value?write_value??prolog:newH_oldPprolog:c_instrwrite_variablewrite_variable?write_variable??prolog:newH_oldPprolog:c_instrwrite_constantwrite_constant????prolog:c_aux_write_integerprolog:c_instrpush_constantpush_constant????prolog:c_aux_write_integerprolog:c_instrget_variableget_variable?move_reg??prolog:c_checkprolog:c_instrput_valueput_value?move_reg??prolog:c_checkprolog:c_instrput_variableput_variable?put_variable???prolog:newH_oldPprolog:c_instrwrite_voidwrite_void??write_void??prolog:c_wvoidprolog:c_instrpush_cutpush_cut?push_cut?prolog:newH_oldPprolog:c_instrput_cutput_cutput_cut()?prolog:c_checkprolog:c_instrget_cutget_cutget_cut()?prolog:c_checkprolog:c_instrload_constantload_constant?????prolog:c_aux_load_integerprolog:c_instrload_variableload_variable?load_variable???prolog:newH_oldPprolog:c_instrload_valueload_value?load_value??prolog:c_checkprolog:c_instrget_valueget_value?get_value??prolog:c_checkprolog:c_instrget_constantget_constant?????prolog:c_aux_get_integerprolog:c_instrget_structureget_structure???get_structure????prolog:oldH_newPprolog:c_instrunify_variableunify_variable?unify_variable??prolog:oldH_oldPprolog:c_instrunify_valueunify_value?unify_value??prolog:oldH_oldPprolog:c_instrunify_constantunify_constant????prolog:c_aux_unify_integerprolog:c_instrunify_voidunify_void?unify_void??prolog:oldH_oldPprolog:c_instrinline_variableinline_variableprolog:c_check_iv???prolog:c_checkprolog:c_instrarith_variablearith_variable??prolog:c_opcode????prolog:c_check_avprolog:c_instrarith_valuearith_value??prolog:c_opcode????prolog:c_check_avprolog:c_check_av00arith_op+?????prolog:oldH_oldPprolog:c_check_av11arith_op-?????prolog:oldH_oldPprolog:c_check_av22arith_op*?????prolog:oldH_oldPprolog:c_check_av33arith_op%?????prolog:oldH_oldPprolog:c_check_av44?div_3???trueprolog:c_check_av55fdiv_3?????prolog:oldH_oldPprolog:c_check_av66?random_1??trueprolog:c_check_av77?get0_1??trueprolog:c_check_av88put0_1()?trueprolog:c_check_av99?rel_op<?trueprolog:c_check_av1010?rel_op>?trueprolog:c_check_av1111?rel_op<=?trueprolog:c_check_av1212?rel_op>=?trueprolog:c_check_av1313?rel_op==?trueprolog:c_check_av1414?rel_op!=?trueprolog:c_check_av1515?int_only_op<<??trueprolog:c_check_av1616?int_only_op>>??trueprolog:c_check_av1717?int_only_op&??trueprolog:c_check_av1818?int_only_op|??trueprolog:c_check_av1919?int_only_op^??trueprolog:c_check_av2020?l_neg_3??trueprolog:c_check_av2121?compare0_3??trueprolog:c_check_av2222?arg_3??trueprolog:c_check_av2323setarg_3()?trueprolog:c_check_av2424change_arg_3()?trueprolog:c_check_av2525def_3()?trueprolog:c_check_av2626rm_2()?trueprolog:c_check_av2727set_3()?trueprolog:c_check_av2828?val_3??trueprolog:c_check_av2929?lval_3??trueprolog:c_check_av3030?symcat_3??trueprolog:antigenicarith_variablearith_variable??300trueprolog:antigenicarith_valuearith_value??300trueprolog:antigenicbuiltin_?builtin_???00trueprolog:c_opcode_+?????prolog:c_checkprolog:c_check_iv00fail_0()?trueprolog:c_check_iv11cwrite_1()?trueprolog:c_check_iv22cnl_1()?trueprolog:c_check_iv33var_1()?trueprolog:c_check_iv44nonvar_1()?trueprolog:c_check_iv55integer_1()?trueprolog:c_check_iv66atomic_1()?trueprolog:c_check_iv77is_compiled_1()?truecwam_bp$Header: mapdld.c,v 70.3 92/02/05 16:07:02 ssa Exp $ERROR: mmap failed for dld@' (@'@'H766.75756x7P766`687 678@; 7556567h6H8(778608998908X:9t:@:5pBinProlog3.45/bin/bp.pc.linux100755 764 764 752004 5764336364 15224 0ustar javierjavier d -̀\ `D$4 `PWP`[̀P!`D$Ð$  Ã=$ T$RT$Rh `` Prolog execution %s(%ld). CPU time = %ld.%lds %s VS$ $U+@RPVSh\$S `ShY V`haltedD$Ph4warning: *** %s *** T$RhWh `` fatal error: *** %s *** T$Rhh ``ju_%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? T$D$ =$ u&+H4x Ph'RhЃu&Phh `%` 6P xPhh ``L$Q1Ð= t jÐD$P*** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s VSD$\$L$ +L=$ +t$Vt)PQT Rhh ``+[^ÐVSt$ \$PjT$RPjSvPjVjPU[^ÐS\$PT$ PjT$R)PjSP[[].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatVS\$ t$jh%Jjh(9jh*(jh, jh3$jh5(jh7,jh9 jh>jhCjhHjhQ jhZujhcdjhkSjhtB jh.jhjh jh jhjhjhjh jhjhjh~jhmXP\T jh7PXRRRP\RRR(jh L`5d[^editeditor_programbp_statenoname.pleditor_fileversionS1hvh{h t:hhh thYhh ؉[ÐjD$uP_ÐjD$uP_Ðj D$uP_ÐjD$uPg_ÐS\$uP_19}A9|[ÐT$RPÐWVS\$t$|$D$ 3{9}1[^_ÐuuPZ_CC)ЉCKKKK KKCL$K {%[^_codeboardnot enough common memoryVSt$ jh j RV$D uCb R>uCjh h RPuChHRuCjj@_huChl1dt 7uth 1[^Ð[^add_engine: engine table fullSL$h9lrh 1[Ðll\$  \$CX[ÐD$=}=?~?choicetrailheapmessagesadd_engine failednot enough engine memoryWVSt$|$1jhd hT$$RFlPujhk hT$(RFHPuCjhq W.PWF$PuCjhv j( RPuCT$$RT$$RVt uh 1[^_Ðt h ݐ[^_ÐT$h9lr9uÐ9ls1del_engine: engine notfoundD$h9lr9t(9lsh S1ÐllÐUWVSl$ j$j_Ãu1[^_]Ðd$d$1ߋt$ $=~T$RjUT$(RT$(RSt[^_]Ð1[^_]ÐS\$St>S|R_SXR_S4R_R{_Su_[Ð1[ÐD$u u Po_ÐÐh:s:t:c:b:d:a:i:q:%u [wam.bp][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS]usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD]%s %s%s $UWVS|$8l$<1ۍwhUW_ <$t$$dD$0PhD `R_ T$0 D$,PhD `R_ T$, D$(PhD `RV_ T$( D$$PhD `R_ ST$$ BD$ PhD `R_ T$  D$PhD `R_ D$ L$ D$PhD `RF_ D$ wwL$ eD$PhD `R_ tGT$  9D$PhD `R_ tT$$  tCNAt(hhhh9h `C_jH `19}L[^_]$BinProlog %d.%02dj-jhhh`_`Copyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%shhh RhhhhPh-h2_(ÐWVS|$t$X< `\ `@VWyPhhu1[^_VWhSvtj2hj R R Rhlt[^_Ð1[^_ interruped(%ld)...restarting S\$hj_hj_tShjh `_ = t h6hI hSG [ÐS\$SuSjx [ÐS1ۋ RAxu RuCp P|uC%[string table overflowWVS\$50҃ H|9rhCu[^_%ld symbols, %s!!! symbol hashing table (almost) fullT$RpRhh `_h&j(%75)unexpected!!!WVS|$1ۀ?tF>u J!ӉpH!9t?x<tCtxPW_tS H!9t x<uΡx<=t=Lt=u x<WZxp    9p~ h[^_Ð9u h[^_ÐS\$19 v/ x8 v8t pB9 w[%s/%ldarity limit exceededVSt$ \$v SVhh `1_h1ۃV8   Ѓ[^ÐVS\$ t$9s )ȉڋ)9r[^ÐD$PP 0 80p4<QDÐS\$S S80 0jzjj(j![no definition for: main/1SRRpÃu hd [integer expected in halt/1D$PЃtht P1D$trailing in unifyunifyvalue trailingUWVSL$T$$J׃L$J9|$T$u#9t\$u9\$u uu9u9l$0uT9vPL$$9q T$ BP9B\whL$$QjP3j <T$ BP0BPut+ 3L$$9YT$ BP9B\whL$$QjPj T$ BPBPbux؃utL$T$$9rL$ AP9A\whT$$RjPCj LL$ AP0AP9t 1[^_]Ð؃T$ 9wh-L$$QjWj T$$9jv>L$ AP9A\wh3T$$RjPjL$ AP0APUPAPL$MKt&D$Ku9|$$s[^_]*** bad instruction: [%lu] *** D$%Phh `9_jundefined in EXECVSt$ VR聗ÃuT$RhZVd [^ÐWVSt$N|~X~PV4 Z =z<<uY~Py~9VQ|$WSRZ%[^_ÐT$RFPpÐUWVSt$l$\$$|$(L$N N Q Q} 2 ukOPKO WSPUV[^_]load_engine: bad engineUWVS|$Wuhq1[^_]Ð_|OXOPw4 L$N N Q Q輕¸ 0 ukOPKO L$H L$Ho,_tP[^_]ÐD$PRPR@HP ÐS\$St.S4 SKtQ@P[,SRo[Ð1[ÐS\$u@[ÐSzu1[Ð@[answer: bad engine typeVST$ L$\$t$w~$ !D! !$!b!4!! J,Ztp[^Ë @ΐ Rh Pj1[^*** suspend_engine: %ld bad engine type %d VSL$ \$t&PQhg!h `_j~1[^ÐY,t$qtt$p[^ÐUWVS|$@l9hr1[^_]Ð5h u95ls݋5h1Qtu#SCuu!95lu t15hOu[^_]unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationXUWVSl$tD$dl$`}H$$@t'''(t,h--4(D.)4)T))d.t...4/W99:;$;t//$0@0;=34*d6d*42D+7+4+T7D,0*6+)4<;9=T--7788T8h8884;T;dAA?KlD$DTDDDDEE4FGH4JK4MMDNTOO4PP4QQ4RRTSTT4UUV$WDXtXXXXYZDZZt[\\]4`_d`e4]d]]]4^^^_ad4d4ee$b$cbcckkkkkkkkkkkkhfgTgghDhthdi$jTjtjj4kkl=>D@4@ABDBBC4CtCCCC|$dt)|$\L$dT$l L$dT$pD$p|$\L$l|$dtID$xP$RL$lQ|$hD$xT$hPOD$l|$\CD$d놐|$\L$lL$p|$\T$l4t 'ދ9uD$dL$x9qvCMT$p |$\D$lT$p뽉 D$l  DT$pD$pL$ L$lD$:T$xR$Q D$dl$dT$tL$dR|$hL$xD$h QqD$l|$\fB D$l  } L$l |$dt)T$dD$l L$pT$l D$pƃ L$l4 p-|$dtYD$xP$RL$lQD$hT$xL$hRmD$l|$\? L$dT$l 3T$l T$p փ T$l4L$pqL$pW|$dtID$xP$RL$lQD$hT$xL$hRD$l|$\?`T$l T$p T$l T$pJT$p|$dtiL$dT$l D$xP$RL$lL$dD$dP |$hl$hT$xL$hRD$l|$\X>D$dSL$pT$l D$p L$l HR|$dD$d0D$dt)ދug9uu^UL$x9qD$|XP9X\wh$RjS;j DL$|IP1D$|@P9]>EL$pL$p|$\T$l4L$pUD$pD$pth">|$\L$l4t #ދug9uu^ET$x9r L$|YP9Y\wh$PjS+j 4T$|RP2L$|AP9]>|$\MT$l T$`BD$pOL$`L$xD$lpt*ދu9uK\$xmtT$|RUŃML$xL$`T$pD$|9P8|h"$QjD$|PUT$|RL$xQ$PX$|$p<D$p[^_]XÐmL$xL$`T$pD$|9P8w(h"$QjD$|PxT$lrt*ދu 9uSmUŃ~:t$dmD$xD$`L$pT$|9J8L$lqtދu 9uwED$9XtT$zVD$l V t$dl$ |$\L$l4t 'ދ9uD$dD$x9pvT$xR$Q|$dD$tT$dPVxD$l|$\%|$\L$l4D$X D$XtAD$xP$R|$dL$tD$d QD$dPD$l|$\5$|$\D$XL$lT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQV$|$p]$t>T$xR$Q|$dD$tT$dPV(D$l|$\f#|$\L$l4MD$X) D$XtAD$xP$R|$dL$tD$d QD$dPD$l|$\A#|$\D$XL$lT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVdž$|$p #t>T$xR$Q|$dD$tT$dPVD$l|$\r"|$\L$l4D$X D$XtPD$xP$R|$dL$tD$d QD$dPVD$l|$\!|$\D$XL$liT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVg$|$p!t>T$xR$Q|$dD$tT$dPVxD$l|$\!|$\L$l4t$X\$\L$XtGD$xP$R|$dL$tD$d QD$dPD$l|$\+ |$\D$XL$l T$lJu1Bu)T$|Rhs#L$tIQB$( T$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVǃ$|$p t>T$xR$Q|$dD$tT$dPVD$l|$\r|$\L$l4t$X\$\ـL$XtGD$xP$R|$dL$tD$d QD$dPMD$l|$\|$\D$XL$lit$pT$lRRL$pIQ%D$dT$dRV蒂$|$pt)D$xP$R|$dL$tD$d QV|$\T$l4tHL$xQ$P|$dT$tL$dR迲_D$hd$hL$hL$hQ+藲_D$\|$€L$l\PP蹵_D$`|$\t'PR׳_D$\FPC9CwSP_tPPT$X@D$Xt`L$xQ$P|$dT$tL$dRL$dL$hL$hD$hPFD$l|$\|$L$XL$\D$l OT$lZكtD$|Ph#L=Tw9ww"%PW_GL$lIL$XD$lXL$ڃ D$ ȃt@ST$\R|$dL$dQD$|PD$l|$\z9\$XaaD$l@D$XT$lZD$كT$ ƒt@SL$\Q|$dD$dPT$|RmD$l|$\9\$XT$lRT$XL$lYT$؃L$ уt@SD$\P|$dT$dRL$|Q~D$l|$\6z9\$XaL$lIL$XD$lXL$ڃ D$ ȃt@ST$\R|$dL$dQD$|Pm~D$l|$\`9\$XD$l@D$XT$lZD$كT$ ƒt@SL$\Q|$dD$dPT$|R}D$l|$\zz9\$XaT$lRT$XL$lYT$؃L$ уt@SD$\P|$dT$dRL$|Qm}D$l|$\9\$XGL$lAQ ȃuT$lJL$\ZD$\T$Xt,L$xQ$P|$dT$tL$dRL$dQ|$\L$XT$l ID$lPH ƒL$lAYD$\ D$XtET$xR$Q|$dD$tT$dPT$dR{D$l|$\|$\T$XD$lL$lAQ ȃ%T$lJ#JL$XtBD$xP$R|$dL$tD$d QD$dPD$l|$\r|$\D$XL$lT$lJB уD$lP PT$Xt2L$xQ$P|$dT$tL$dRL$dQ(|$\L$XT$l iD$lPH ƒL$lA3A$ D$XtDT$xR$Q|$dD$tT$dPT$dRD$l|$\|$\T$XD$lL$lAQ ȃUT$lJ JL$XtPD$xP$R|$dL$tD$d QD$dPD$l|$\D|$\D$XL$lT$lT$\RL$pL$`D$`PDD$`T$`(tEL$xQ$P|$dT$tL$dRS_D$l|$\|$\D$l}T$lZكtD$|Ph#\$XL$lqtu*T$|Rh#Sz$) |$X~ 9D$Xv.D$|Ph#S>$* L$X4t1D$xP$R|$dL$tD$d QV|$\T$l4]L$xQ$PT$tR)WD$h |$\""D$xP$RL$tQXD$h |$\j$RL$tQ0fD$h |$\ T$lJj$PT$tRhD$h |$\D$l@tPtxtL$lID$lPL$lAtAtytT$lRL$lAT$lRRL$pIQ[Ã9tDT$xR$Q|$dD$tT$dPS~D$l|$\|$\L$lj$PT$tRbà j|$\T$lPL$|QD$pP17ÃtLL$xQ$P|$dT$tL$dRS趿D$l|$\|$\D$lT$xR$QD$tPT$|R4S$|$ptGD$xP$R|$dL$tD$d QD$xP D$l|$\I|$\L$l+t$pT$|RL$pQVGD$| |$ptBT$xR$Q|$dD$tT$dPV|D$l|$\|$\L$l4t$pD$|PT$pRVHD$| |$pet2D$xP$R|$dL$tD$d QV|$\T$l4 ÀtHL$xQ$P|$dT$tL$dRS肽D$l|$\ |$\D$lT$|RL$pQ=D$d|$\&jT$|RL$pQ16D$d|$\:T$lJu}|$\T$lL$|QD$pP6D$d|$\ L$lAD$\P|:T$|RL$pQA9D$d|$\&jT$lR9ÃtIL$xQ$P|$dT$tL$dRSӻD$l|$\ |$\D$lT$lJuDZ؃$  SL$tQiÃW ST$pL$|QD$p@PmÃtAT$xR$Q|$dD$tT$dPSD$l|$\9 |$\L$lD$|PT$pR\D$d|$\ t$pD$|PT$pRVAD$| |$p t2D$xP$R|$dL$tD$d QV, |$\T$l4mL$|QD$pPT$xRLID$| |$p5 5D$lXt؃T$lJuOD$|P$R8RL$xQS$P,Fƃuh# \$pt$pXT$|R$Q$PS$REƃi D$|tFT$xR$Q|$dD$tT$dPSD$l|$\z |$\L$lt$pD$|PT$pRVCD$| |$pt2D$xP$R|$dL$tD$d QV< |$\T$l4}t$pL$|QD$pPV\JD$| |$p tBL$xQ$P|$dT$tL$dRV̷D$l|$\ |$\D$l4Ht?T$xR$Q|$dD$tT$dPSYD$l|$\|$\L$l}H0T$lRL$|YP9Y\wh$PjSߟj T$|RP2L$|APD$xP$RL$tQID$h |$\H+H$ÀtDT$xR$Q|$dD$tT$dPSND$l|$\|$\L$lmt$pD$lPV}pD$x|$ptGL$xQ$P|$dT$tL$dRVD$l|$\|$\D$l4t$pT$lRVmD$x|$pt'D$xP$R|$dL$tD$d QV!|$\T$l4mt$pL$|QD$pPVrD$| |$ptBL$xQ$P|$dT$tL$dRV輴D$l|$\|$\D$l4T$|RL$pQD$xPXsD$h |$\ t$pL$|QD$pPVQD$| |$puh$tHT$xR$Q|$dD$tT$dPVD$l|$\0|$\L$l4 `ÀtKT$xR$Q|$dD$tT$dPSuD$l|$\|$\L$lD$|PT$pR$Ã_|$\T$lEL$|QD$pPa$ÃtLL$xQ$P|$dT$tL$dRS覲D$l|$\|$\D$l齿T$|RL$pQ$D$d|$\F銿T$|RL$pQ1%D$d|$\ZT$|RL$pQ%D$d|$\*tAT$xR$Q|$dD$tT$dPS蛱D$l|$\پ5|$\L$l齾D$lpL$x9qvID$|xP9x\wh3$RjWjL$|IPD$|@PVPL$|APD$l@;T$lJL$\QD$pPT$`L$`QD$tPT$dL$dQ$P讣ÃBCtHL$xQ$P|$dT$tL$dRSbD$l|$\|$\D$l}T$lJIL$\Q辣D$`|$\GT$lRVD$`|$\t##D$lPJT$\R螵ƃuL$x)t(D$xP$R|$dL$tD$d QVb|$\T$l4魼L$lAL$lAD$XPD$`|$\bL$lYSU$PT$|R$Q:D$p|$\D$|@,D$pT$|RtT$xL$|ih-$hJ$&D$|PU$RL$xQ$P`n$|$puT$x*錸L$lYtQD$xP$R|$dL$tD$d QS D$l|$\ID$x(6|$\T$lL$lQD$tPAD$dD$d[^_]XÐUzʷhF1҃B~@?@@ @3@@@@ @@@A@@@@@@@@@1@@@@"@&@*@ @$@(@,@5@6@7@8@9@:@;@<ÐUWVSt$1-%D$tFu1[^_]ÐWC_t DЉFߐT$*|$t%[^_]ÐS\$ D$PSMtT$ [ÐT$RS[ÐSL$Q %u,B%u|$ t% ZY[Ð1[expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedUWVSt$,6wKf?N=J=L=%@,u"E%@ t%@L$QhoP2 E9^u2P xPhoh `o_@uPho%Phoh `-_ GE9{hoh ` _)~W QtCÃuG% AL$Qho% R6 %0wB=t)w$=tY% %  % $%% %  % $% 1@F% 1>% .jSt% % ^YjVLNQ QAá@PNQ Q@%  u4L$9qW[^_]bad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_opUWVS|$l$$\$( S% D$|$5t$$tdz|d{}d$z$zzt$zd|TttdwtyUt$$VPsVW5V;ƒX9t `sp%\X9C@`%ttCQ` r2C9vC`C`H% 3\hs1[^_]Ð=\t1[^_]Ð=XS% C CC8CS% %9=Xu8=\uS% S  K\Ut$$Vhsh `U_hs71[^_]Ðs5`Co =\v htUt$$VUƒt$ >_t$PsVR5XVb925XV5V$; =\l=\LS  S  I=\ =hCSB%ufB% +BCS  =dSB%B% *BB% BCS  =dSB%B% B}=\ =hCSB%ufB% #BCS  =dSB%B% "BB% 'BCS  =dSB%B% &B}=\ D$S% =\=h SB%B% -BCS  =dSB% uB% ,B3uB% 7BB% 8BdB% !BCS  =dCSB% uB% B!3uB% 5B B% 6B=\|=hSB%B% %BCS  =d~SB% uB% $B\3uB% 9B:(B% :BB% )BCS  =dSB% uB% (B3uB% ;BB% a1[^_]Ð|$ 9_8v׋t$3y{ыu9u9T$t͋t$v3M[^_]bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2UWVSL$D$ |$$@RL$h1ۋ0t$xt*WhPt$V^ [^_]Ð Ћu49u.C9O8p1t Ћu9u9T$t́~%h{]1[^_]ÐtЃt!tWhR?t Ћu 9utЃutWhRЃu  ‹t$1WhPh~WjQr^1[^_]Ð[^_]ÐUWVST$L$Yi؃t1[^_]Ð%ÁIuYL$tΉ%B9}9z@9|t"|$BJ*[^_]term_append/3UWVS\$D$xht|$T$D$t1[^_]ÐtMȃuՉL$=wT$ ‰tt 8utt (uD\T$ 9Z8w)hT$$RjS\1[^_]Ð[^_]value_trailing UWVS\$ l$0\$uPt$t$9\$,sL1[^_] ÐhΦUj|$W\1[^_] ÐhΦUjt$Vސ1]|$$;L$ыu9u9L$t$Ѓtut$9L$(w9s|$u+t$9u\.Vt$t$|$71|$t$9u\Vt$9\$, t < <uыu9uЃut9L$(w9st D$9\$t$9t$sD$|$|$9|$r[^_] ÐWVSL$t$^,ڋ~8tȃtu &VWSQRƒu 1[^_ÐV,[^_bad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integerVSL$ \$t$F`F`HCuЃtVh=R2X [^Ð%V` BSЃtVhk^`tL F<+C KK [^answer space overflow in findall_store_heapcopy_term overflow in findall_store_heapWVS|$t$V` B 9r&hAVjQhX1[^_ÐR_tӋu9uAYt$ЃtuLVF`@ PQWQu!hmV1[^_Ð F`[^_ÐWVS\$L$A`Q`RPp@Q`RA`|$WQP[Sjnt[^_Ð1[^_ÐWVSt$|$D$Z% Љt8uTWO[^_bad continuationcompound continuation expectedUWVSL$D$t$XtVhXSLU [^_]ÐЃuu VhiӐƋ=9N ‰t<<(u[^_]bad argument for dcg_streamvalue trailingUWVSD$t$T$X؃E=v1uVh/S^T fH9Bv@u9Zv6FP9F\whKVjPTUj]SFPFP HAHFPHЉ[^_]ÐUWVS\$|$$H0.L$(9qv=u9iv0GP9G\whKWjPTjRGP(GPFpGP؋\$\$L$(QWUPkt/H0T$T$L$ [^_]Ð1[^_]setarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityUWVSl$|$]؃tWhS[R [^_]Ðut tuWhVƐu Wh5밐~ 9vWhZ뚐4L$9qv<u9Yv2GP9G\whKWjPRjPGPGPNHGPm.[^_]change_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafeUWVS|$t$l$WЃt#VhmRwP [^_]ÐOt#ȃtuVhQ뽐u Vh뤐~ 9vVh뎐9Ms Vhs Wu9UsVh4X[^_]Ð, T$PT$P,  Ð%ld bytes, %s!!! hashing table (almost) fullT$R@Phhh `Q_hzNj{NÐ  QpU  QU‰1=t %(75%)UWVS|$l$  IL$!É!9t>[|t.L$[9<u9ltC\$!9t [|u؋[4|2ui  9~ h <0l0L$ L0L$$ [^_]Ð1[^_]hdef/3 required before using hset/3UWVS|$l$ K!ډ!؉D$9t8 &R9<u9ltB!9T$t R|u؋ R9<u'9lu!t$ t[^_]Ðh"L1[^_]ÐUWVSl$|$ H!Ë[9,u%9|uD[^_]ÐD[^_]Ð H!Ɖ‹ C!Ӎ[9,u9|t9t|u1[^_]culprit->hindexUWVSl$T$ H!I\$9u 9lu\$ [^_]Ð\$I|u\$ 1[^_]Ð H!ljƋT$A!I\$9u9lt9u(h[^_]Ð|u\$ 1[^_]ÐWVS\$\$ u]19  5=1Ґ\$ 81v<tD A9  w[^_Ð19  vF51\$ 81v#<t DD A9  w[^_COPY_KEYS UWVS\$ T$$Bt1[^_] ÐJL$RЃuT$19- 1L$8L|8|w%98D89D$w]t8t ֋u9uуL$u |$<9D$-9!|$L$(9Y8whL$,QjSuJj ~H8Ѓu-    9  с    T8Ѓu+    7  с      3 E9- .  [^_] ÐD$9t9t9uÐ9t9uÐ9t9uÐ1ÐST$L$Ѓu=u6ȃu,x%=\$ SD[Ð1[Ð UWVS|$ \$(L$,L$St$(VW}D$ |$u1[^_] ÐD$PL$QW tكu3D$@\t$$VWL$Q 50 Ń  9~ h L$I<t$t\L$t$ SL$(QWt$VNSU QW? tSWU5V)0 [^_] ÐT$BtBtztBBBtBtztBBBtBtztBBPJQJQRR6Stamp found %d, expected %d hash op on protected objecthtable full in hash opUWVSt$$l$(\$,\$FtFt~tFFFtFt~tFFD$P~W^SiD$ |$uk=|$L$\$89tTID9t@9PD$Phh `F_UhvVSD[^_]Ð|$u)UhϼvV&D [^_]Ð|$ue  9~ h u |$^vtT\$D$@D[^_]arg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3UWVS\$(L$0L${|$CtCt{tCCCtCt{tCCCu"h$B1[^_]ÐCu h֐D$ PsVKQ.Ń ut=|$t$ t$L$8 >tYvD9tE>PD$ Phh `D_|$[^_Ð  `P@t9$t9,t<vu1[^_ÐWVS\$t$=; `BtBu  `Au:_u:t2A u:_uu=>[^_Ð1[^_ÐVSL$ \$51 `BtBu졌 `Bt0t(Btu53[^Ð 1[^ÐL$ `BtBu졌8uÐ1ÐWVS|$t$j)u4j,{t$VÃtVWÃ1ۉ[^_ÐVSt$j]#j|t:1ۍD$ Ptj]؅tcT$ [j,tB1ۍD$ PFtD$Pe؅tT$RT$R1ۉ[^ÐUWVS$,j[St|j]Et Mb1$$Pt$ P,$ Q$(Q!E $V$ SVSVSj($PǃD$$L$D$PD$PǃtgL$Q$Q$$QE 9T$|<LB9T$}$j$Q$$QiE 1[^_]ÐT$ T$, P1t, $, Ð1ÐD$ xPL$Qstring buffer (-i option) exceeded or infinite term%ldUWVS\$tˋ u9u+ 9~h-8[^_]ÐW|$9O4w^_+G4Phhl D_l Au [^_]Ð9 wh_a+PhhlC_l Au [^_]Ð|$9m_b+Phhl1C_l Au [^_]ÐȃuFPhhlB_l Au [^_]Ðu9 x Au [^_]Ð9 [|$WStVˋ uD9u>,|$WSDt ˋ u9u9 t9 t||$WS][^_]Ð x4Fu (9s4ōS|$W:WT$,T$F9rҋ|$WPT)[^_]ÐT$RT$RÐT$RT$RjRJ%sS\$T$ RT$ RRhCS7_[ÐUWVSt$|$ l$$L$\$ȃڃ ЍBA][^_]ÐSD$HT$JL$Ià ډT$ L$D$[bad arg in arithmetic operation S\$D$PD$ PD$Pt$(t$(, T$ ST$ST$S ؃[ Ð SL$ȃuulЃu P$N9 uY SYSIQ $؋4 SV21[ ÐL$ȃuu\Ѓu P$N9 uY SYSIQ|$C l$1EuEuB[ ÐVS\$(L$,L$t$0uuNЃu P$L9 uN QNQvVw "؋ 4 Q01[^Ðt$4u uЃu P$29 uN QNQvV|$ l$D$$ `p00000 1Euډ[^Ð1Eu1uΐ1È@s빐E@%![^ÐD@ސ1[^ÐD$PD$ PD$(P$6  L$4KL$0KL$,K ؃[^Ð WVS\$0D$4PHptЃt tЃut 1[^_ Ð xD$ȃuu\Ѓu P$\$X9 u(y WyWIQg\$$ .=4 W-1[^_ ÐȃuűЃu P$(9 uy WyWIQ D$lt*p$t$$t$$, `/$u, `\$ t$t$a, `|$ D$ PD$(PD$0P$= ;|$<{|$8{|$4{ ؃[^_ ÐVS\$$D$(PHtЃt tЃu t1[^Ð xD$ȃuuLЃu P$L9 uq VqVIQW "54 V+1[^ÐD$1?$p`0P$) `|$L$ L$l$<$XZl$D$ [^Ð$u) `$) `~E@tp؃$) `\E@tP؃$( `<$) `.$( `$( `$}( `ٍD$ PD$PD$P$5 3t$(st$$st$ s ؃[^Ð%ld%-se%-ld VS\$L$AtAtytAAAtAtytAAAtAtytAAAuAuyu At1[^ ÐAPA xPAPh5V4_j5V5_D$$PD$,PD$4P$5 3t$@st$SV9Ã1t>%t S:;1[^Ðuser_bpctrue_prolog:$end0c.c not compiled with -D C_INTERFACE l Rh `S*_1Ðl Rh `3*_1Ðis_compiled_1()atomic_1()integer_1()nonvar_1()var_1()cnl_1()cwrite_1()fail_0()symcat_3lval_3val_3set_3()rm_2()def_3()change_arg_3()setarg_3()arg_3compare0_3l_neg_3&int_only_op!=<=rel_opput0_1()get0_1random_1fdiv_3div_3%arith_opprolog:c_check_avprolog:c_opcodeprolog:c_check_ivget_cut()put_cut()move_regpush_variable()prolog:c_skipc_trace(" ")unify_integerprolog:c_aux_unify_integerwrite_integerprolog:c_aux_write_integerget_integerprolog:c_aux_get_integerput_integerprolog:c_aux_put_integerload_integerprolog:c_aux_load_integerprolog:c_wvoidprolog:oldH_newPprolog:newH_newPprolog:oldH_oldPprolog:newH_oldPprolog:newPprolog:c_chunk_endprolog:c_chunk_beginfun_arityfun_symbolunexpectedprolog:c_find_funprolog:get_offsetprolog:new_offsetprolog:c_check0prolog:c_check{255,0,0,");_size=sizeof(long "}};[] = {struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} "#include "#include "../src/c_defs.h"#include "../src/global.h"/* do not edit: generated by co.pl */user_bpwam_bpprolog:c_decorate_file0prolog:c_spec_endprolog:c_spec},,(void *) {prolog:make_commentprolog:patch_specials"},,"prolog:c_traceprolog:wchunkprolog:make_bcodeprolog:c_instrprolog:make_hcodeprolog:make_ccode500c_threshold_minc_threshold_max100000xxprolog:c_rootprolog:sprolog:defeditprolog:my_defeditVISUALEDITORprolog:get_editorls -tFprolog:ubootBinWAM intermediate code.asmprolog:make_includeprojectin_moduleunable_to_make.bp.cbin_prolog_with_cparserprolog:cparser119110120100104newappl.bpdcg.plwrite.plread.pllib.ploper.plinit.plprolog:listifyprolog:make_cmd0prolog:fact2rulebeginincludingprolog:exec_run_time_commands0% !!! action delayed after compilation, for command:prolog:get_cmd_no$run_time_commandprolog:cmd_rootprolog:cmd2clauseprolog:exec_cmdensure_loadedprolog:include_fileprolog:preprocessprolog:is_dynamic_clauseprolog:translate_cmdprolog:translateprolog:put_to_eofprolog:make_memo_fileprolog:include_memoed_fileprolog:memoable_fileprolog:memoing_translate_allprolog:translate_all0prolog:write_c_chunkprolog:make_dummy_endendprolog:close_c_chunk_fileprolog:c_decorate_file$end0footerprolog:comp_fileheaderprolog:decorate_filetotal_compile_timeprolog:xcompileprolog:compile1prolog:compile0totalbytes_usedprolog:translate_allprolog:init_cmdcompilation abortedcompile_time$end1prolog:terminate_fileprolog:maincompprolog:mcomp_fileto...compilingprolog:currpredoffsetaritypredicateprolog:newpred0file_nameprolog:let_c_chunk_fileprolog:wcode_asmprolog:wcode_cnprolog:wspec_cbegin_endc_flagprolog:c_thresholdprolog:write_or_skip0prolog:encode_opprolog:n_builtinbuiltin_?arith_valueprolog:n_aritharith_variableprolog:n_inlineinline_variableend_?firstarg_?prolog:n_nopclause_?prolog:write_or_skipwrite_voidunify_voidpush_variablepush_structureload_valueload_variableload_constantexecute_?get_cutput_cutpush_cutget_valueput_variableput_valueget_variableput_structureput_constantget_structureget_constantpush_constantwrite_constantunify_constantwrite_valueunify_valuewrite_variableprolog:wcodeunify_variableprolog:mc_transform_voidprolog:mc4prolog:mc_transform_pushprolog:mc_selprolog:mc3prolog:mc_chunkprolog:mc_pushprolog:mc5prolog:mc1prolog:mc0prolog:mc_emptyprolog:mc_input0prolog:mc_inputprolog:mc_topempty_opcutprolog:encode2prolog:encode_argprolog:instr_catprolog:mc_peepholeprolog:mc_one_instrprolog:encodeprolog:beautifyprolog:gen_instrprolog:temparg256prolog:maxarityprolog:write_instrprolog:antigenicc_chunk_valuec_chunk_variableprolog:make_anti_callprolog:bind_lengthmemprolog:bind_c_chunk_lengthDEFINITE:EXPANDED:prolog:show_stepsprolog:show_infoprolog:show_fun prolog:show_or_skipprolog:gen_codeFINAL CODE:prolog:mc_all_instrPOST TERM-COMPRESSION CODE:modeBRUT WAM-ASSEMBLER:prolog:show_instrprolog:show_codeprolog:add_upper_contprolog:def_to_mbin0prolog:def_to_mbinprolog:emit_isprolog:split_rel_1prolog:split_isprolog:split_relprolog:split_is_relprolog:app_bodyprolog:repl_lvalprolog:repl_disjprolog:repl_conjprolog:repl_known116117prologspying_onprolog:split_opprolog:strip_nilprolog:repl_macroprolog:repl_bodyprolog:mdef_to_defprolog:get_regprolog:free_regprolog:allocate_regprolog:allocate1prolog:check_var_argprolog:check_var_varprolog:check_lifetimesprolog:set_toprolog:defaultprolog:collapse_themprolog:mark_varprolog:mark_argvaluevoidprolog:get_var_typeprolog:fill_var_typeprolog:fill_oneprolog:tpointprolog:fill_allbad_occurrenceoccatprolog:oldvarprolog:newvar$OCCprolog:occurrenceprolog:find_occurrencespushprolog:deep_var_opunifyprolog:unify_opprolog:emit_args0prolog:deep_structure_opprolog:emit_structureprolog:cc_tprolog:cc_argstructureprolog:emit_argsprolog:cc_argsprolog:emit_top_structureprolog:classif_argloadconstantprolog:classif_loadinlineprolog:cc_b_argsprolog:emit_top_bargsprolog:handle_constant_resprolog:out_regtempprolog:cc_top_tprolog:cc_eq1unexpected_body_atomprolog:emit_body_top_termprolog:cc_builtinprolog:cc_eqcutargprolog:emit_top_argsprolog:cc_top_argunexpected_head_atomprolog:emit_head_top_termbuiltinprolog:cc_b0prolog:cc_h0prolog:set_modeprolog:get_modeprolog:end_chunkprolog:emitprolog:hidden_varlenc_chunkprolog:begin_chunkprolog:cc_hprolog:cc_bprolog:allocate_regsprolog:collapse_argsprolog:fill_infodictprolog:varsprolog:maxprolog:cc_h_bexecutefirstargiiprolog:classif_firstprolog:firstargprolog:cc_clauseprolog:bu_bodyprolog:cutpfailing_to_compile_clauseprolog:newpredprolog:gg_emitprolog:cc_compile_clauseBINARY:binprolog:bin_builtinprolog:c_chunk_filewam.hcwamprolog:cc_must_have_builtinsprolog:cc_builtinsprolog:compile_builtinsprolog:cc_bincompprolog:compile_binaryshould be groundprolog:free_variablesprolog:explicit_bindingprolog:term_is_free_ofprolog:list_is_free_ofprolog:replace_key_variablesprolog:concordant_subsetprolog:replace_instanceprolog:keymergeprolog:samkeyrunillegal_argumentsprolog:keysortprolog:ksortprolog:merge_2prolog:merge_sort1prolog:merge_sortprolog:remdupsortedprolog:bb_origunsortedprolog:assume_oneprolog:assume_all0prolog:assume_all$usedprolog:copy_or_delete_llprolog:get_assumed_clauseprolog:insert_llprolog:assume_with_hint_llprolog:assume_llprolog:assume_fileprolog:assume1error_in_assumebad_clauseprolog:add_hint_lllinearprolog:assume$closedintuitionisticprolog:generate_run_time_predicateprolog:listing1% assumed prolog:listing0% prolog:consult_cmdprolog:consult_includedconsultingtimeconsultedprolog:consult_embeddedprolog:survive_cleanupprolog:consult0% using compile/1 is MUCH fasterprolog:consult_warningabolish_expects_dynamic_clausesfoundprolog:abolish0prolog:clause$dbrefprolog:collect_slotprolog:erase0prolog:clause0prolog:assert_itunable to assert clauseprolog:add_clause0prolog:add_clauseprolog:ensure_dynamic$lastdynamic code would shadow assumed predicateWARNING: dynamic code will shadow compiled predicateprolog:define_dynamicprolog:check_dynamicprolog:make_dynamic!!! compiled!!! dynamic!!! assumedFail: Call: : prolog:tr_callExit: Redo: prolog:tr_if2prolog:tr_disj2prolog:tr_if1prolog:tr_goalprolog:tr_disj1prolog:tr_bodyCUTprolog:do_disj0prolog:do_if_then_elseprolog:do_disjprolog:do_conjundefined_predicateprolog:do_undefprolog:do_applyprolog:do_goalprolog:do_compiledprolog:do_bodyunbound_goal ; for more, otherwise prolog:user_actionprolog:another_solprolog:report_top_varsprolog:report_one_vargoaltopprolog:savetopprolog:nothingprolog:topcallprolog:report_answersprolog:topinterp?- prolog:topstepinit_io$endprolog:exec_run_time_commandsprolog:binpro_startprolog:l_magic2:- ->; ( , :- prolog:l_magic_nlprolog:l_magicprolog:l_clausesprolog:pp_clause0prolog:classify_other_tailprolog:classify_alpha_tailprolog:classify_name700prolog:w_operprolog:w_tailprolog:w_argsprolog:w_atomotherprolog:w_VARprolog:w_variableprolog:put_stringalphaquoteprolog:maybe_spaceprolog:maybe_parenpunctprolog:w_out126969492255248246223222216214192prolog:is_latin1_majprolog:is_latin1_min90122prolog:r_varcountprolog:r_digsprolog:r_digitsprolog:r_int! end_of_file just after full_stopprolog:is_specprolog:is_alpha_num! end_of_file in /*.. commentprolog:patch_slashprolog:more_string! end of file in: tokenprolog:r_symbolprolog:is_minprolog:is_numprolog:r_integerprolog:is_majprolog:r_lookup95prolog:r_nameprolog:r_stringprolog:r_fullstop1251241239391prolog:r_after_atomprolog:r_solidusprolog:is_terminator-1end_of_fileprolog:r_toks 99999prolog:display_tokenprolog:finish_syntax_error** SYNTAX ERROR: byte=syntax_errorprolog:display_listprolog:start_syntax_errorbracketvariableprolog:cant_follow_exprfollows10001100prolog:peepopprolog:exprtlprolog:prefix_is_atomprecedencewithcontextprefixlist|]|argumentsin,)anstartcannotstring}{(()prolog:r_list][prolog:after_prefix_op999applyprolog:exprtl0prolog:r_args(prolog:rtsprolog:ambigopprolog:infixopprolog:postfixopprolog:prefixopprolog:expectexpressionafterexpectedoperatorprolog:syntax_errorprolog:rtprolog:all_readprolog:r_and_checkprolog:portable_writeqprolog:portable_writeprolog:portable_printprolog:r_vars** warning singleton_variables, byte=>=> :-...prolog:melt_varnamesprolog:warn_singletons1prolog:r_termprolog:singletonsfile_not_foundprolog:see_a_fileprolog:find_file2bad file namelibraryprolog:find_file1unable_to_tell_atunable_to_see_atunable_to_tellunable_to_seeprolog:peval_iobinprologprolog:default_prologexpected_to_expandtry_edcg_expansion-->>prolog:dcg_CONJprolog:dcg_disj0prolog:dcg_term{}prolog:dcg_disjprolog:dcg_goal@@prolog:dcg_head:-prolog:dcg_conjprolog:dcg_bodydcg expansion error->prolog:dcg_rule-->prolog:try_dcg_expansionkillcdaccessno such environment variablegetenvargvargcprolog:unix_argvHOMEprolog:unix_cdprolog:append3prolog:near_matchpredmarkprolog:predicate_key0compiledbuilt_ininterpretedprolog:generate_a_predicateprolog:predicate_property0prolog:is_predicateST267911168prolog:float_minus101prolog:try_float_exp1eprolog:try_float_expboxprolog:try_floatculpritblackboard overflow, left onlyprolog:bb_put_1prolog:bb_put_backprolog:rmprolog:letprolog:valprolog:setprolog:defprolog:bb_failprolog:bb_gcprolog:bb_default_valprolog:$gteqprolog:$lesseqprolog:$noteqvariable_in_iserror_in_isin tab/1: should evaluate to an integerprolog:tab0prolog:make_lengthprolog:get_lengthprolog:general_appendprolog:append_bodyprolog:appendNprolog:det_appendprolog:term2dlistprolog:term2list$floatBP_PATH9798105108prolog:getenv_path99115103111114112121109prolog:compile_memprolog:see_or_failprolog:save_termprolog:numbervars$VARvarsprolog:are_sharedprolog:share_varssprolog:call_ifdefno meta_interpreter for undefined goalcall_ifdefprolog:std_expand_termprolog:portable_expand_term1200?-1199prolog:interactive0prolog:is_interactivenoprolog:is_builtin_varprolog:bucontprolog:is_builtin_nonvarunable_to_spy_onyes$assumed$firstyfpostfixopxffyprefixopfxyfxxfxinfixopxfyprolog:op_typeprolog:get_op010000opmarkprolog:get_opprolog:gensym_noprolog:is_publicbad or repeated declarationprolog:hide_atom0prolog:hide_atomprolog:public0currentshould_be_nonvar[]*** : >>> userprolog:portray_errorprettyprolog:error_messagebasicbboardhtablesymbolsstringscodetraillocal_stackglobal_stackruntime:Cset_c_traceset_c_thresholdstat_dictsavedmember_inth_memberphrasefalseotherwisenospyspyingspyspy_goalinit_gensymgensymis_publicpublicmodule_namemodule_predicatecurrent_modulemodulesis_modulemodulemodule_calllwritepatch_itshow_code0char_in_cmdith_clausetr_bodydo_bodygc_read_clausegc_readadd_truebootctracetmakekcmakekmakecmakemake0makemake_executable_unix_applmake_appldirlscurrent_user_filecovinotepadpicoemacstexteditedmy_editeditis_builtinopcurrent_opswritesreadflushsee_or_failexists_filefind_filemake_file_namefile_libraryfile_extension_listfile_search_pathtelling_attell_atseeing_atsee_attoldtellingtellseenseeingseettycwritelnttycwritettyprintttyprinttynlttyputttyoutttyinfast_writepp_termpp_clauseportray_clauseportraydisplayportable_displaywriteqprintwriteread_tokensread_clauseread_with_singletonswarn_singletonstop_read_termread_termreadnlput_codeget_codeis_prologtoplevelmainquietmeserrmesuser_errorvars_ofterm_charsnotfree_variables^setofbagofkeysortsortbb_elementbb_listbbis_dynamicis_assumed-:assumed_clauseassumedassumelassumei=>listingreconsultconsultdebugabolishclauseeraseinstanceretractallretractassertassertzassertadynamictracemeta_interpretersystemunixaproposhelpctimecurrent_predicatepredicate_propertyacosatanasintancossinexpsqrtlogpow:=:dcg_phraseletbb_change_argbb_letbb_rmbb_valbb_setbb_def=\==:=>==<><@>=@=<@>@<\====compareexprisgettabappend_disjappend_conjappendNcompoundnumberfloatatomgroundgc_callnumbervarsmake_cmdlength++det_appendmemberappendargnforall_but_at_leastfind_at_mosthas_fueldrop_at_leasttake_at_mostnth_answerfind_whileskip_whenskip_untilwhileallfindall_disjfindall_conjfindallfindall_workhorse\=\+repeat,;->=expand_termmetatruemetacallinteractivestatistics::-=..asmadd_conttermcatstrip_contiforincludecompile.!bu1174n_nop160n_builtinn_arithn_inlinebu_ctrin_head8584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111098arith765432in_bodybu0700 xfx :=700 xfx =:600 xfx <=950 xfy =>950 xfy -:600 xfx :=:900 yfx :1200 xfx ::-1150 fx module1150 fx public1150 fx dynamic1050 xfx @@1050 xfy ->900 fx nospy900 fx spy900 fy \+900 fy not700 xfx \=700 xfx =..700 xfx ==700 xfx \==700 xfx @<700 xfx @>700 xfx @=<700 xfx @>=500 fx \500 yfx \500 yfx /\500 yfx \/500 fx #500 yfx #400 yfx //400 yfx <<400 yfx >>300 xfx mod200 xfy ^300 fy ~700 xfx =:=700 xfx =\=700 xfx <700 xfx =<700 xfx >700 xfx >=660 xfy ++650 xfy .400 yfx *400 yfx /500 fx +500 yfx +500 fx -500 yfx -700 xfx =700 xfx is1200 fx :-1200 xfx :-1200 xfx -->1100 xfy ;1000 xfy ,if0profilebb_resetlist_asmstat0shellnamefunctorfindall_load_heapfindall_store_heaprestartabortcallhaltnew_builtinsuspend_enginemultitask_enginesask_engineload_enginedestroy_enginecreate_enginequietunix_killunix_cdunix_accessunix_getenvunix_argvunix_argcsetrefbb_opbb_getbb_putiso_lseekiso_eofiso_peek_byteiso_get_byteiso_put_byteiso_read_termiso_write_termiso_close_streamiso_open_streamdcg_tellingdcg_telldcg_valdcg_defstrip_cont0write_floatinput_floatfloat_funfloat_fun2term_appendop0string_opsee_tell_atseeing_telling_atseen_toldsee_tellseeing_tellingolder_filebb_list0copy_termdet_append0lift_heapadd_instrself_infoterm2listlist2termdcg_connectsymcatlvalvalsetrmdefchange_argsetargargcompare0\#\//\>><<arith_difarith_eqgreater_eqless_eqgreaterless0putget0random///mod*-1+is_compiledatomicintegernonvarvarcnlcwrite_failtrue?$cut$bin_cutlibm.so.4DLL Jump 4.5pl26USu1=t@<uÅtKu]]ÐUS=tЃ;uh_]]ÐU=u]Ðlibc.so.4DLL Jump 4.5pl26S\$̀}أ[Ð[ÐSV\$̀}أ[Ð[ÐS\$L$ T$̀}أ[Ð[ÐS[\$L$ ̀}أ[Ð[/lib/ld.so: can't load dynamic linker '/lib/ld.so' statically linked 8UWVSl$L\$P=D$D bht[|$ ft8t@8u+PSj j*D$Pj hZ񐐐h$hT$\RSD$ PPD$\ЋT$,RT$,R &|$+jD$PjM j[^_]8ÃfT$fur|$fD$f%fD$f%?fT$f fD$l$ÐUWVSl$|$19tv xWUT$RЃ C9tw[^_]Ð@ ( B B B B  B  B  B  B J J J J J J J {J wJu pJ u hJ u `J u UJ u LJ u BJu ?J <J 9J 6J 4J 2J )J %J Ju Ju Ju  Ju Ju J J J J J  J! J" J#u J$u J% J& J' J(u J) xJ*u nJ+u \J, PJ-u FJ. BJ/u 6J0 +J1 !J2 J3  J4u J5 J6u J7 J8u J9 J: J;u J<u J= J>u J? rJ@ jJAu `JB YJCu RJD LJE EJFu ;JG 1JH %JI JJu JKu JLu JM JN JOu JPu JQ JRu JSu JT JUu uc[VPJ A 8 0 , ! yndXLC9-" ti_TG;/u =  = = = = = = u= = = = = = {{= ww= upp= uhh= u``= uUU= |uLL= yuBB= vu??= s<<= p99= m66= j44= g22= d))= a%%= ^= [u= Xu= Uu  = Ru= Ou= L= I= F= C= @= == := 7u= 4u= 1= .= += (u= %xx= "unn= u\\= PP= uFF= BB= u66= ++=  !!=  =   = u= = u= = u= = = u= u= = u= rr= jj= u``= YY= uRR= LL= EE= u;;= 11= %%= = u= u= u= = = u= u= = u= u= = uu =   uu= cc= [[= VV= PP= JJ= AA= 88 00| ,,=y   wws mmi ecc eaa= eYY eQQ eNN= eKK= e@@= e88= e//= e++ e++ e''= e##= e e   e e e= e= e= e= e= e e e= e= e= e= e= e= e= e= e= e= e= e= ezz= eoo= ebb= eTT= eKK e>>= e--= e))= e$$= e= e= e  = eaa= e= e= e= e= e e e e e e e= e= e= e e e= e= e= e= e= e= e~~= ezz= evv= ett= err= eoo= ell= ehh= edd= e= e= e22= e]]= eVV= eOO= eII= eBB= e44= e00= e]]= eVV= eOO= eII eBB= e%%= e%%= e!!= e44 e= e= e= e= e= e  = e= e= e  = e  = e  = e= e= e= e  = e  = e   e   e   e   e  = e   e   e   e   e   e   e   e{ {  es s  eh h  e_ _ = eY Y  eR R = eJ J = eD D  e< <  e2 2  e* *  e* *  e* * = e' ' = e   e   e   e  = e  = e  = e   e   e   e   e   e  = e  = e  = e  = e  = e  = e  = e   e  = e  = e  = e~ ~ = eu u  ep p  ep p  eg g  e] ]  eT T  eK K  eH H  eC C  e9 9 = e+ + = e  = e  = e   e  = e   e   e   e   e   e   e   e   e   e   e   e   ez z  et t  el l  ec c  eY Y  eM M  eI I  eB B  e= =  e8 8  e0 0  e+ +  e$ $  e   e   e   e   e   e  = e  = e  = e   e  = e   e  = e  = e= eee e  = e  = ex x  es s = ek k  es s  eh h  e_ _  eY Y  eT T  eL L  eI I  eF F  e4 4  e1 1  e- -  e# #  e  = e   e   e  = e  = e  = e  = e   e   e  = e   e   e   e   e  = e   e   e  = e   e   e   e  = e  = e  = e  = e= e~ ~ = ew w  ek k = ed d  ed d = eZ Z  eR R  eC C  e2 2 = e& & = e   e   e  = e   e e e e e e e= e= e= e= e= e= e= e e= e e= e e= u xx ll ff aa YY QQ JJ CC      =  (~     !  (( JMuJ uJ)u  8   8 u JMuJ uc u   ==  B B B BB !!       a a     a aJuk k    k   2 2   a &  '4 3 a    '&   B B a  a V  4   V 3 a V&   aa   d   B&   & Bd   d d  C    & OC  Z    B &   OZ   434>34u3& u   R    Z       C    2   C   C ]  [    ~                O x        uB    nn JuJ Ju n  Ju     B `   K444 3Y3`3 4 3   u S ) J/u ` D   5DJJuJ u 511) 5%%) 5!!) 5 5 5 5  Ju  Ju B    J   4B3x  [      I [ e    > > 8 e  @>   x  Bx    B   K  Br   mjr  e  j r  m  j I2I@ J5  @    '  B  B          K   N N  K  K         B uJUu J$u u    c  a a u        u      u K443343   K4433   K43  oJu   Kb   KT   KKJuuJ uJuJu z     > b    - T      44    3 3          aa a    C  a      a    ) J u )J uJu)$ BJ $  )%    [  J B   aa    u   [     JuJu     hu u uJ& J&  J+uuJ*u   =   uJ.  J.    aa a P V  BPa YQYY u   aaaaaaqamaiaeaaa]aYa aaaaYaeaV C43aiaeaaa]aY C aaaaaaiaeaaaaia?  aaaaaia? aaaa?a;a8aea5aeam CC   a %- 4     3 V            K      V           V   aa J    BB  B  B  &=  B  B  ' BJ  'aJ! aJ! aJ!   >J%  J%      aa >2J%    4  K4 4 4 3 ) 3 3 'a a  a3     [                aa  J%  2J%   aaa   B u    u   aaJu  aaJ uJu     `    w@  )   {N443h@3pu       T ~  B       B E    %%'4  3 a aaa   [  %'4 3aaa  [J   uJ 2uJ   J Ju 7 t J ~ r J zJu (vJu t p r h o ` l U h L d B (tt ( rr  7tt 7rr ]   V   OJu  IJu 4  0   BJuVB]]      ]V      VO      OI    IB      B  O         0Ju 0Ju Ju Ju J       0Ju 4J %      %% J9uJ8uJ6u   !44 J!J J'u 8   aaaaaa  [    [        a>a  443q3i C X aaTaa V  ?XaT ?aa=  '?aa  a  a# a V V? u ' aaaT  uJ' aaaT    &uuuJ J1 J1  &uuJ1 J2 J2   J2 J2 J2  J2  J2  J2 J2  &uuuJ    aa>  B       B   [    N443 3   N443 3   x  B   B [>    [   B B  [   u   B  u zuz uJ uJ uuJ'u 43   43                      [ Vh Vh  h    Yh   Y4 3a> YY   JEJIuJKu4   JGuJu 413) // JG **4 ##  % ~  K  JJu  JKu  J  JLu         ~      4 3    ~~ ~        n      n   nn J0  B                    ^  ^[[   ccc     aa         KnK ^  :  :   J     :     **  *** aa          I    I%%   ~ I   T T  {K K  wH H  B B  u0 0     \u   \     B T J K Ju H BI uJ*u I      B uJ) 0 J) 8 J*u 8      = uJ+u+ J+u$ uJ-u $       J-u        uJ,  J,      }   uu  }    g  }      uJ)u       UU   I     CU  4    4  ~ 443434 3 3 4  V  3  3 4  V  3   I C  =          "   aa  J Mu J u a       > \u    4  3 4  4  H  4  4 4H H 33  3  3    3      aaC   + 9 9     aaa"    43>u    | e uJ)u I   I  J)u  8   8 l     c  4H 3   Y    M  4H 3  t   H  z  w         R R  B e 8R $B B   aaa a $a   aaNaa $      D     D      D     D      ) %  D      ) 1  D     ) !  D      8  aa $8 aa           a       4 3 a      8    aT uJu a     a     ' 4  3aa      8   i           T  ggae  gg  W      4 3 a     8   U       e     8 RR  U       e     8PPaN [ PP  N     4 3 [ e   8 GG     a a@ a: a7 a $ aaa       8aaU     a4aa1a' $W aaa  W     8W aa%  e   8Waae  W   a"aa1a $i  J u a a a a1 a a  a a   $i        i ' 4     3 a a         8 aaa aa aa a)aa a  aa))= J u J uUU ee NN %% J u J u aa   N4 4 3 4 u3 a4  3 )   3 4 u3 a4  3        aa  4 u3 a4 3 )   aa  4 u3 a4 3    aaJ u   4 3     8 aa%J u   4 3     8 aa  $4 4 3 a a a3 a    =  GGG RR  gg PP aa)    J u J u ' 4  3aaa     8aa    J u J u aa     ' aaJ uJ u   4 3      8 aa%J uJ u   4 3      8    $uJ)uuJ,u wI   I w B  cBV ?  w $uJ)u $I   I $VJu c caa c @ z c t cu c   c aa z @c c t      T  GG a  a: a a V       @   aa  B@J uJu11 {B{Ju==acJu((aRJu%%aUJuaJuaJuagJuaeJuaPJua%JuaNJuJu::aG  : t ++a V + ta  f   N4 4  3 4 3   ac3 4  4 S3 V 3   a>  E  4   X  & a  f   V     aJu V4 3a   ((aJut     Ju    tt z  z t   t    Ju  ta   t  a   t  aaR a  ""Ju    a V4    3a  t   ""JuJu""@ Juf a {ff   a {   t  e @J u  a V4 3a 4   JuJ u a    a 4 3 a  a     XX  BX ++u a+aJJuJX ++  u HX            :H      JuJu         :: a J uJ uJ u J u Ju      H:    S aa   (SaaS( a  ac   ( B   ( 5J u$J u J u!J u J uJ u cc  EJ u!J u Ecc E5J u$J u  &J uJ u J uJ u J uJ u  J uJ u  J uJ u  yy  77 44 .. ""                      |   e     e    J uJu      @Ju @Ju s saaJuss Jusaa JuJu ssaaJusa B     B a     T  B 4  N3 pu    N       > h   w( N4 4   w%3 4  @>3  3     @    @ > 2u(  [ [[Ju w e    aaJ u $       > w  %   (     N44    34 N3pu3          [ 4    3    4   3     (@%   %    N 4    3    4   3     (%  @  %    N 4  4    3   3   1 N444  3  3  !344  3  3  %  (%    %     %   N  2u(    @ J u    @  @Ju w@  @T  BuJ u R  wN44  3pR3 4 3 R   T @ T  2u4(3   @@cc =Ju@ Ju@ JuJu@[[ JuJu@aa   a+aa+s@ N44  34 4  s 3 3 3 N4 4 s 33 4 4 4  4  s +3 w+3 33     Vaa aaN  aa   aa  2   %Ju2 JuJuJu 2      $ BJu wa$ Ju$ aaJ u $   $ Ju w       u          B u u   eu u           a  aJuB  4 u a3            ea  ccu  ~Bcc  zBu   ~BB   a  aJuB  uB  pB   lBB  h  BB       JuJu   XU   X  BX p DD &p g !  g        43+  l   J        J   c aa  |iK44334c 3  c |  c  |  l  43  l i  4Vt 3T  i t   c V V  T  V   4 4V3T 3T  5 l       B (     N44344  333 B                         N4434 4   3 33    R N4434 4   3 33   B   [ ~ 4433i[  a>a '  '  '                cc  cc                 ~         ~   ~       u    B (     N4434 4  4  4    3  z3 3 33kk            kkcc k            [k k L[              >[    k[     k>    k k       Kkcc  k    kk              .k     kk  k  L.                  .      k.       k    k k       KL L   L L 444 N4  N 4  4  4  3  3  3 3 4  4  4  3  3  3 3K44  4   3  34  3L3 3K4 4 3 @34 K4  {>3 L3{3N4N4343 34443 3 3 44 4  3  3 3  N                         [ 4     k    N4 4 3 4  4 44  3 z33 3  3  3   [ 4  R   k    N4 4 3 4  4 44  3 z33 3  3  3    B [ 4  3     [         4t3 [ B ?   ~    t ] u  u]    43[         ~  JuJuJu    ]Ju    ]           {    s   4   3  h   >   )  >    h  xJ JuJ uJuJu x _ qqJuY qq   x IR   cq Ju Ju    4 3       J  J uJu J      S  [J  M - ~ S h  [S Ju JutD 2   u <    2      u 4I  =  u 433   uJ)u I   q  qaaq< < q2 2 q*       n 4    ^3  [*       S 4    C3  [^  43R ^ BC  43 C B*  *  u )*  B  N44 4   34 3 34   3u34  u3    *  *   * '            >     R           >     >  B   ~ a   x x   B gxaa               Ju B   MM    a   R   4MaM4   B B .4   B  g  a aJu gag  uI = I                 a    q  K      aaaaa aaaaa  uJ'        444 4  4  4  4  3   3   3   3 K4 4    3 3 4     3  4  3    3  3 C3C  N         [ N44 3  3    [    t    aaa  J aaaa    uu    aa JuJ u                 aaa aJ a   aa     z   h  z aa B    =   a z        Wz  zaaJ u B    =   a z   G  z          Wz    Waa B         a       4  W 3 a>  zW aa B         a      t   J  a  WW    aG   G aa  a        4  G3 a   zGa  aGG                 ' 4  [ a  4 4 /          3  3 3 aa      a  a    / / aa a    /  uu Ju BJuJuJJu aa  4 3 a    aaa  J               a B       B                [uu   Ju                                  B   [uu  Ju       aa                   K  B V        V      vdL9  9 d 9 d   d++     d  d  ~  q  q  %  [q  aaa`PJu;; B  u ; B  u ; [`aa8/ 8R  a  8'    P44w  [4434334>3 3 3             4 3   43 4443  343343      8>43 y4  3    m\   8>43 y4  3    mma L    <  y    /  \  "/   [%m4   38   /  hu  [     [/     ~                            " B  ""  u"  8w>4 3  "    m"  "    "     "  hu  [     ["    o ~                     B B aaa  m4    m4   <  Q4  <w 33 8>4 3 Lu3 8w>4 3 Lu      Q=uuu =    %     % =  [ "4  m4 " 38>3    [    %   %      m4    "  3 8>>     ["uu  "    B   "  B  8w>4 3 Lu m4 38>43Lu     m"     Q   B      B         Quu     m4  3 8w>4 3 Lu    Q  J u  J uJ uJ uJ u m4   3 8          J uJ uJ u             Q  J u J uJ uJ u  L  m4   38 4  3 %        J u  J uJ uJ uJ u        QQ    B  Q    B  Q  hu  [           [ m4    3 8 {4 3        Lm  J u m J uJ uJ uJ u    m    aa    B  a    B  a  hu  [   K        [ J uJuJ uJ u    m   a                mK 2   m4 3 8 {4 3       L                   J u  J uJ uJ u  L  m4      38         ww      2 2ww  B    B    J u               aa8 a   8           B       B               4 3  ~   JJu           u s J    aa c    NN88  B :N : 5 : 5 : :/ J uc 88% 4343>    sc88=    sc 88%     sc 88=   4 3 s   4  >3 >J ww  4  >3 >J J u J u  == J u J uJu        u          4 4 4 3  3 3        J u J u  J uJ u  aa    88=       w  w  B g   Xw  BJ u   XwJ u   gg    a J u g  X a   X J E 4 E  44 B 4  "4   4   ] 4 4c 433 4]    O]   a4aVaaV"cc " B " B " B " B " B "    "    " 4 4" )" )" )t"~~ )r"!! "44 " k "4"   4"   4" 4"   4"4"4"   4  B 4  4 4 K B      4 4 4N 4 444             tt   p  n rr   h  n oo   `  n ll   U  n hh   L  n dd   B  na B au B au    au   ]   ^  aaaa  aan  KK ^    ' 4 <  3 a a a     ^^  B   ^  B   ^     ^ a a  a   ^    ^     ' 4<  3aa  a  a    '^ a a  ^    ' 4 <  3 aa  a    '<a )    )     ~~ B  8 / 8  B /   /  43@   //// / 643 // J0 8 J0        4       3 4   3     B      B  w    B   c  c88% Bc88w/% Bc    8 a  a     aQ@   Qww Q Q @    4www n 3 a  @   a  . ++ 444 3 3 $3 443 3  N.            u    aa                  88      8 4  3        88      8 4  3   >u     B    8    44>u3a438>u384u3           J u      w     w {{ l  [ 88    K 88         =    ) )      88 8 J K%%K LL     lKK         K ww   K         w/                      8  a   [                 5     w h    w X 5  M  ?    wh    5{ &        h   X   5/    X   ?   5>5    ?   ?   M   M         w  w      588=     5   8 ~  8 58  8585 &88 8{8=      u= w     u=      u= w     u=      u   u= w     u   u=    =        u= xx   = kk       u= ]]   = PP          = FF       = 99     |     = //     y     = &&   v u  u=    s u  u=    p u  u=      m u    =      L     u=            =      I     =    = w     u=      u=      u=        =        =     u = ||        = vv     u     u= ff  V= GG u 8= ,,  8= ""        4    u u3 a a4  a a4  a3 a@3 a@   V  8   w  m          U   p                     O       u++ O     +4 3        K    J #u  J uJ uJ u wu         ++        a a a a     w w    '}    sB    sO   c c  OYVOYSOYR VYR BYLu [c BYVBYSBYR BYLu [<  OYSOYR OYL Y VOu   24.3+     4    u 433 4   u u   c  V V aa> Y4 Q4  J4   a4    Y4 Q4J4u 4344443a3Y3Q3J3aa>3aa>3 aa>3 a  a>3 aa>3 aa>3aa> a  a av a vv   f   4 3S f  >7Lu 4    &        u 4  3  324.3+  8 f >  u f + > >   43a43a438     +   w w w++ +& aa+aa      4qK44  V33 @3C   ] q  aaa     4 V   4   V 3 a 3aaia?    V@  J)u + 8   8 VuJ)u {.= I  I . .JuB  uJ)u  = I  I    ##    v 43{            . v   aaYY< < 2 2              K44 3aa3       ww  e e  V u    Oe    u 0u 4K43 u3 &  &  S K44 3343 ) uJ)u u 4 u  u 4 3 4  1 3 34 13      E )  2    V            aa aV#   aaaaaaa    4  3a4a4 a4  a a4  a4  a a4  a3 a@ a a@ aV a aq aa a a@ a a a@3 a@ a a@ aV a5 a a@ a a# a a5 ai ai a? a a8 ai a% a@ a a@3 a@ a4 a a+3 a a@ a# aV a aa a@ a+ a# a a# aV a@3aa@a#aVaaaa@a+aaacaaaaaa4a"aa@a#aaiaaaeaa@aaacaaaaa+3a(a#aVaaaa@a+a7a=a@aa8a;aaaYaa@a+  # s    []    s    s   |     S                 X             T           d  K4 4  d  3  3  ~ E a4  a4  a4 3 ;3 33    C      4            4  3  3 a a     aa43aa }  +  + &+   +            1    -   -  s   4 Y3aa4a3a@     % %   N  k  4  s    4     s   h   Y s   s _   _ k Y   Y k L   L k T   T k I   I k F  4  Y       B{  k B     B  O{  k Ou  g UU   C   4U"C    "   PB B B B B B B   43  4  4 3 a  a4  aa4 aa4 aa4 aa43aa@a"a3a@aa@3a@a3a@aa@3 a@ a a" a@3 a   <   4    w               3 4 H 3 w           w   w w   B     :4   V 3 4  ~  3   V~      N~      N~    8 8    4H 3       }77  W < !                    ||    1Oj  VYL Y LOX   Y LOF  B  ;~ F  O0 O&    u )F J B0B&"u  1  V    1 B   1 B  F  1  O j  X  j  X  N43443j>3)>  x B     _S B _k    :. B :      B    B    U4344 4 H 3  3 3     O       |      X  "u   4 ]]   ]   4 kk     _4  L4      L   L  4  4  4     4     4 PP 4 FF 4 99 94   4 && &4  4  4      4  4  4 // /4      :4 xx   x   4  4  4     4  4 ff 4 GG   p^4 ,,   p^^uuU ^U ^U ^US ^ M^F ^ =^ 6^- ^ &t^ &r^ &#^|| &l^yy &^vv & ^ss ?^pp <^mm ^jj %^gg  ^dd  ^aa ^^^ ^[[ ^XX ^UU ^RR ^OO ^LL ^II ^FF GG FJ u,, FJ u"" uJ up  uu     w l \ H`````?` Tibc_4_526BinProlog3.45/bin/bp.r6000.ibm100755 764 764 2513661 5764223576 15027 0ustar javierjavier/'uH k$j,j@1L.pad.text .pad.datak@.bsskk$.pad.loader B92i2HQO,A  hHuA| |!H}O,a8;AHO,A;,a8A HEO8`XL}0!PN Ahmain!|0a8XHAA8<`Q0c||.pT|`X0!P}N AHcputimeb  T:`N @quiet! a8e |,bH80c@@ 8HAH0!@}N 0!@N APquietmes|!a8Tc:|.08gHAa8Ky8`H0!@}N A local_error8`,M KN @ link_halt|!HKKH0!@}N A$ can_recover| ! HT8|T:,||@00e@9 T:00|8HAKH0!@}N Ax overflow_by!|8X<8HOa@a88HOaDa<8HO8a@DH1OX0!P}N At hdef_string|!8;8H)Oa1"3B 321 33f:`330(T:A|0.|ƈ|N t808HC̀A,8, /A(~f00L@BA,398u8Hx2H`t80K ,0g@A$000 0dHaA8`K둀|T:@~0.\a\Htt80THAA,0TAXTP*TKLt80XHAeA,0XA$TP*TKa\0!}N AXget_cmd_line_options|!8088-HyA8XL}0!PN AH bp_versionb|!3#`3 3333c@3CD3HKe8DA8a<8889988|HՀA8|h0!`}N A startup_mes|!a8b0 <3 Kɐ~a8MO,8`8A<Kb 988K,8`A8h0!`}N A init_bp|!ah3 8`8H?qA88`H?aAh,0d@0xA HA8,A H@9O8HGOa88Ka8K偁X0!P}N A start_wam|!HKH?=O8`KH0!@}N A0run_bpA L| N A L| N A L| N $A L| N | !KyO(|`4dT~KqO,0d|f4T~8T 6KO|`448T~|d|4eT~X0!P}N A make_symtable|4!;;HuA |~(8U) 61)} @|@@b@AKAO,81A,<(,1A<(K䁁X0!P}N A insert_lex|80b@!0c@0KɀA0,K)O8`KOXL}0!PN A`sfull|}&;C ,("03!88A4| 8|0,T 6|0A|0,K|8|0 8}@W:Ah|..AxHO,08zA\ 8}@W:A@|..ADHO,08zA( 8}@K|..HW:|..@,,*A8zLFBAW.,H KQ|d.,0|ٮ|p|p|(| @0dPA8{H@0dX@K8{xt0!p} |N C atomnoB Tf>(88,L g9 |c b(0@08@(k|H.,A|I.l 0cl|@@1)gL |c 00@KN @atombak|;(!a8@@,0`@80h8KA0~pKO;a8K T`P*T>`SX0!P}N A|new_func| T:}/A|.0|@0@|@A1}y`8|8@W,<}`U:A}.1/ A}.|@A}y@8W,<}`|8@U:K}.|@AX1}y`8|8@W,<}`KLW$<>| T:|/HW$<| T:|/@t|dp|cp|c | @bH0c0K>.~P|{8`|00ɮh0!`}N @0!`8`N Ahdef |D| 1G}K8|X}_08|@!ALU`<|T:|8,A| 8.1 @1,@| @A0}K08|@Uf<|0T:A|8.0 ,Al|8.@A}K8Uf<|0|@T:K|8.| @A\0}K08|@Uf<|0KLU`<| T:|8.@H$|8.@HUf<|0T:|8.@@,|8| @@L|`0!P8`N H0f8KMO8`XL}0!PN Ahset L1e| }`(8T<|(T:|(.|@D|(@$| @@eN |0eN |1 }`H8}j(8T <|H0T:} 0.|P@@}`(800T <@}0.| @A}H1 A,|0.|P@,}`H8U:T  (;( @hP8@fL|8`X@@ |.}(,A }).|`@0 3 @|0cX@KP9@f8|c9_|X@L"D8@8g|P.,A( 0 Q.g).gA.`@0 1 1J f@|c 0|X@KN @hbak!Ā|}&T(;#;E!|p8`@|T>T(|p@t : (@$H.2ElbP:;;qL:||@*AĀ.,AWA8P|.|(@@|.TF>~@A88|(@8yH9]@D]UE~P@LBA0;]UE|P@H@;]UE|P@@UF*UEF>|@@A.A|(@NƳA88|(@8y88AKUO8` KO}.U(UU`8U>@  0H0Y ~}.9KU(UU`U>@ e 0HE0 3'21~@@3 2 3{ @|K0y0!} |!N Ah!d0!N X`0!N Chlist$(|@|(@A,|@A|@@ d4N |@A|@@ d0N  |@A 8`L d8N N @xop_classT`(TcF?8`L T+|pL ,,L LD M 8dK,N @Dvalid_op|T>!;<;;&Ky,;8`Ax088}8KY,,8`AX bD@88LU <}HU:|@8x8<KaH|p|p|HBT|8HU:a@ 0gxK18BLT<|@T:"PA.8jU<|8T:|88JT<|@T:|8188x'A<88KŃ8}`88K,|`88A8K08`h0!`}N h0!`}N Amake_opT+TT(+TF>A, OA ,TF>/TF>A LA ,,A OZ3AcK @op0|;}!T>;Tf<+T(08TfF>A,OZA c},TF>/A LӂA}K/P,/8@p|8T<| L@T:|8AH|8@A88H0d@0KŀA}0;Tf;+T(!TeF>A,OZA c,TF>/HA LӂATeT,@0fKIO8`hHP08@(0fK)O8`h0!`}aN K/P,8@p|8|@AdLT<|@T:|8(@A8H80g@0$K5A0D8KIOH@0H80`K)Oh0!`}aN @88LT<|8T:|88`|0@@0W(WF>A,LA8|(@A|(@A H8}80xKΑOH@08LT<|8T:|08`hH D|p|p|0|(@H0eK8LT<|HT:}).8T08TfF>A,OZA c,TF>/A LӂAK5,PH088AKOH|0T<|@|8T:L8`@t|8W8@A\/(WF>A/LӂA80@A|0@A H8|0KIOXH8`X0!P}N A\setXA L| N \A L| N |!H8`KґO`8d| 8`8|0cBd8?dd d3dddd dddAdddddddddd1dddd"d&d*d d$d(d,d5d6d7d8d9d:d;<H0!@}N Ainit_instr_lena|}&;;4Ӑ!;Nb8}@ 3,4T~A|8HA,30AP8W<|@038HmA,0W8AW<|@K4T~@Г8{hd0!`} |aN C get_one_int!|<Xa@08K,8a@T:A`XH@8u|@.KmAHD|p8@ 8uKMA21|A@'1UU)U}(Cx~KT1Ё'UU)U}(Cx~K(`1#|Ю>8`h0!`}N A< insert_op|;bT8b`T*cbhT:| 88|!@x|e .Tc*`c|e!.~P@KO0@0X0!P}N A init_code;|4!@HA(#H0d(#;A$8HAX0!P}N ;0H A084@H1A|@+$Hd|@+$;@AT0(0A;0K4@8HɀAX0!PH0X0!P}N A8 skip_header|h(!0080<0;8@HuA0a8K a0a<8K88T:`a܈K܁O,T0`@@4081<1!KɉA0~|@99;Alh22h@2W233W3;`3%2|خ|.|.8Ku,(?;3ATW8@}((@AH|*.|v(.K䑀31e(@W8A|*.|v(.K]KW8|*.8|@88sAp8KA,{;AH8s8KA3|8s8AK8pKuO9U8|wخ|@;A|خ|.|.8K܁h88tx0 KčAtxKyO8`0!}N 8`K Aload_instr_array|h!88;0~P8K,80~X8AK,A;8X0!P}N Ap load_self|!;88dK,,8`A$88d@K5XH8KMXL}0!PN Ad load_kerneldA L| N tA L| N xA L| N |A L| N A L| N A L| N A L| N A L| N A L| N A L| N |@0L TAHX#U(H@LBA48i#U(|H@8i@A#|H@U#8iKU#(U#F>A,A,21@K$tThA8TF>0cPdpPHXT @LBA48dT| @8d@A| @T8dKTF>0cPdpPKO,21A4K攀9TPh:(|p|pA`8u;HLO:,WX(TcMA,W]~A(|.888K,@2K.KWX(U)M|hTc:`cW]~A\|@.88K},@2K؀9TPh:(|p|pAD8u;HKO:,WX(TcMA,,W]~Al|.88KDWX(U)M|c@Tc:`cW]~AK`9TPh:(|p|pA08u;HKaO:,WX(TcM@2K}AWX(TcMU:`cW]~AL|@.K9TPh:(|p|pA08u;HJO:,WX(TcM@ 2K|cBWX(TcM|`Tc:`cW]~AKxT|q(LFA tT8K}O2K89#8eQ:(|pA08u;HJMO:,WX(TcM@l2K}JWX(TcMU:`cW]~A8|@.K8u;HIO:,WX(TcM@2KWX(TcMW]~A4H̀ATc:`c|.88K,@42KXHATc:`c|t.KpU >}  U2@8`WX(UMHH5@pKѱAWX(UMH h1#(cWX(UMTc:W]~`cA$|@.KȀtTh(AP8K|EO2K␁|cp(5)(@H݀A21Kd0 1HIhK 9TPh:(|00qA 8uHH]O,21AK A2K9TPh:(|00q@A輂2KЀ9TPh:(|00q@@茂2K᠀9TPh:(|00q@X@\2Kp9TPh:(|00q@(A,2K@9TPh:(|00q@@2K4}*pUPi:(}p@WX(TcM}C@0Tc:`cW]~A8K܁4}*pUPi:(}p@LWX(TcM}CF0Tc:`cW]~AK4}*pUPi:(}p@ WX(TcM}P8Tc:`cW]~AK\4}*pUPi:(}p@WX(TcM}SxTc:`cW]~AxK4}*pUPi:(}p@WX(TcM}RxTc:`cW]~A8K܁T8jU Q#:(}p@L cTc:`c|ipWX(TcM}Hp}#CxTc:`cW]~AK8{8H"OWX(UMTc:1|h.W]~AKXtTh(|kpA@8KxO2K U (U F>A, AߠAߜ(,U*U*F>@ 8iD8KxO2K| P@@ Tc:@ 8iH8KxYO2KޤWX(U)M|hW]~A|@.8K8t88H<9O,21AK`8t88H=O,21AK<8t88K=O,21A޸Kpt8t88K1O,21AތKtTh(ThF>A,LA ctT(TF>A,LAtKqO,A$WX(|@U(MA,W]~A|@.88Kp8t88KO,WX(UM@Ă2K,8t8HO,WX(UM@2K8u888H9O,WX(UM:At,W]~A(|.t88KM,@儂2Kܨ}.Kp8u;88H)O,WX(UM:A ,W]~AL|.88K$8u;88H,UO,WX(UM:@2K WX(TcMWõzW]~`cAl|@.K8t8HMO,21A܀K8u88H2IO,21:AXK۸8u;88H'O,WX(UM:@ 2KۄT(TF>A,LAt|cq@L888u8H-O,@ aKvOmĀc|cqH 8:H,m8H-O,AیmWX(TcMW]~A,}.8d888KU,@㌂2Kڰ|.K|8u;88KO:,WX(TcM@aKu]OmH 8t8H%O,21AKHt|cq@ppWX(UMW]~AK0ptWX(UMW]~AtK8t8HO,21AڌKt|cpH1O21K8tHiOWX(UMW]~A|@.88K8t8H=O,21A(Kوt|cq@HT(TF?@@8uH{uO,1A:WX(UMW]~K(t8HOK8t8K=O,21A٤K8u;88H)O,WX(UM:@l2K8u;8HAO,WX(UM:@<2Kؠ8u;8HDO,WX(UM:@ 2Kp8u;88HG O,WX(UM:@؂2K<8u88HHuO,21AظK8u;88H2YO,WX(UM:@2KpmP \|@@A(<88KrO8` KpeOmP1 P21K׌WX(ThMpW]~ccAKx8t88H2O,21AKHpWX(CU)M|cP|cp|cTc:W]~`cA߀K$aKqOHaKqOHW@׈9h|@@TmP \|@@A(888KqO8`KoiOmPmP1mP0cmPt21~KxWX(TcMpW]~Tc:`cAKd8t8HO,WX(UM@Ȃ2K08t8H!O,WX(UM@2K8t8HO,21AֈK8t8H YO,21AhK8t8H O,21AHKըKmOWX(UMW]~A|@.88Kt}p|ep8m}pK}O,0c@42KHt0cK~qO,21AK(8tKY,21AհKt0cK,WX(UM@2KtTh(|cp@tK,21AdKā8888m}pK=,AЀmĂ,cMt2#KԈ8u8888HuO,:AWX(TcMW]~tAܰ|@.8KT8u8K=HWA;pP8KOHTW@LBA0;W|@H@;W|@@pP8KO,WF?1 :#@pPLKyO:#KӐU:A`,WU0i}A,1i|~H, C1kHA, CK}H.U(UF?@ A}H}I.m89|@A8u88Kn9OKmOHWA;WF>38SHTW@LBA0;W|@H@;W|@@WF>38SpPKYO,:#@pPHK=O:#KT0~,W:}I.Tc:A`,WU0h}#A,1h|}@, C1kIA, CK}=@.U#(U#F?@ A}=@}4A.m89|@À8u88KlOKlaOH@8mK21Kј8u88H)O,:@؀aKlYOmĀc|cq@8`K}OK Xm4 P1K  |9:#K$K P@1+,K(2 9@2 0h , i1JcA, iK8h -P8h#m2HhKЬ,mĒMt#-9!8` H|2KЀ8u888H)O,:A؀t21t3TKL8u800 89HO,:At21t3TK 8u8088HO,:A\t 21t3TK8tHqOt21tKϰ8u888H O,@x2Kψm21mttKpt21tK`888t88HzO,:ApPA$0hxK`OX0!P}8`N ,/b(LA0cT:T:|(.| .8x0Ky!AHXT:(@04||p||.0xKxAH 0|.|pxKxɀAx8K}OXL}0!PN Asymcat!|a 8d808H(ՀA,a 0@0`K_O8`H,H(A,Ԁ`8`| A A8`80!0}N A older_file0|!HT(08A(T:@0`8K_OHHc|@.Te(8A Td:@0K_mOH0!@| .0`KЁH0!@}N A older_filea|W(|p!T>A(/@0880 K^Oh\}0!`N (dW:|@@8.@}T8@ HKOh;c|0@,8~@t0@KՀA,;c0|D@K]O8`h0!`H}T88KO,0|d@K]QO8`h0!`}H0t@\KaA,;c8`A}T88K}qO,0|x@ K\O8`h0!`}Hd}pHH;}@{XL8@tHKOh;|0@,@d8~0KA,;8`A{X88K~O,0}@K\=O8`h0!`}H@h8~0KEA,;8`A|{X88K|UO,0}@ K[O8`h0!`}HHtH,0gK[OhaL0!`}8`N 8`h0!`}aN Asee_tell|c|pTg(T?!;|`pA80K[OH|b(0c8@,H$1A,@P;8XL}HHbcAЀ0`KZO8`XL}0!PN 8XL}0!PN A see_tell_at|!Hb|pT?(c@H#ATc:`cHDb0c0@(dH#mATc:`cH0!@}HKYO8`H0!@}N Aseeing_telling_atTd?|/,@!A(A80`\AKYUOHTpATK}-Oh/|(@A8TpAK{]OH KyqOKQAdpHPX|@thAK{OKAdtHdH")AXL}0!PN A seen_told|T(!xA 8HHT|8@8OFBA0T|8@8@A|8@T8KT:| .H!OxH!ՀAXL}0!PN Ashell_1|;!T(8b(x@ |p8~0Kp AHcT: .|p88|p|pKO,8`A8`X0!P}N A add_instr|;W0|4T~|4|4;0TWF>@||4T~|4T~A|cЁX0!P}N A ocompare|;W@;!LBlA,;WH@;W|@@T @W|@+OBA0;T @H@;T @@T+8A@4lA | @@ 8H MOX0!P}Hx8}K/WF?(@T@P(;AD8|0A8|0H@,|0|0K/3|@W:@@|0X0!P}N Ahcompare|W@!;8A,8e8A 8@T88K5O,8`A 8~8<8KO,8`@X0!P}HW>8KO,8`AWU`8~8(A9FA<8i0KM5OH8g80DKNO8`He80|@8h1@̑* c0T`|@OFBA09hT`|@H@9hT`|@@ @@e80|@8h1K0!@0gN H0!@}N A0 det_append0|!HT@L8UF>(1#1D9`1A<8h0TKKOH$8i80KM]O8`HT|@OFBA01 T|@H@1 T|@@@@80 | @81k1@U1)8 @DT @LBA01 T|@H@1 T|@@@@80 | @81kK,TA 0dKJO8`HH,+TF>A,OZ3A 0`0KJOHHUDA8jTd(/ AhHXjTd @LBA48dT`|@8@Ad|@Td8KTd(/ A(L3BA 0KJOH0!@H8@Qcg0!@8iN 8d0KIOH0!@}N A list2termT(T>A 8`N dT0@xUUF>,/AU>9 @011'U#8|})8d9'BU':|8A0H 0fN @ term2list|DU@dU`,!A 8HT(AL0!P8`N TF>9@U(UF>|(@0,T:@80,PT:TUAT,9$||A0000,0A,K| H|I.|HH| 0T;|d@AHUU|} A0011 , 1)A, K| 8|9.8| @048A$KHO8`XL}0!PN L0!PN A term_append|a|0@P!;@X0!`8`N 33;cU|@@OFBA0;hU|@@H@;hU|@@@|@UA(UF>A$/A@0c|@@H|@@LBA|0c|@@H@L\| @@|{3Ht8880DKGqO8`H81_H @4A0\0@| @U U0@j 3T:A,9A00 }X|X,$0(A,$K}X.{XU@@8XLBA0;hU|@@H@;hU|@@@U(UF?@A0@`A\|@A 1_K AHlY.30c|@@`HD;HT8880TKF-O8`Ht}Y.30c|@@;cU|@@OFBK@@083|@8@3K8}aL0!`N h0!`}aN A copy_term|;T,(!888~8TF>A$,A@8~X0!PH8K,@8`X0!P}H,8~X0!P}N Acopy_from_engine`|0`g`!fHT@T(T>dA0d8fKBOHH`0T(|qT:A8fKBOHHP`|A0` 0!@d N 8d<0` |(|p|T:|c(0!@d N 0!@}N Afindall_lift_heap|;`8 g0|@0!0 9A(8KCYOXL}0!P8`N ;0T9F89c@HFUI|P@8OFBA0FUI|P@8@AF|P@UF8KUF(0`U@F>A$/A@H 0k~`HH` 0K,@ 0`K@-O8`X0!PH~`dX0!P}N Adfindall_store_heape`|e`8`0(3# e`!0ce`d8KO,8`A8XL}0!PN Afindall_load_heapTF>0T;P80c}8| A01H01&, 1) A, K|c0T:|0.N @lapply|!HT0A8fK?1OHHT(0,TF?@1TU@8fK>OHHh|U;Q0  |fA0| 0c1,1A,K0!@|dN 0!@}N A strip_cont0c|aTf(|fq/!;;A;,;@A ;H@,80LK=O8h0!`}Hf8@|8@We@h@@`~P\|(@0h88AK?O8`K-O8`K;OPP1P0P83\838|8\3 K1O,8`A8~[h0!`}AN A dcg_connectA|;}Tf(!;d|hpA,08K;OhaL0!`}N ]/WF(WFF>/A80A@(8z8K;YOh0!`}AN "TTF>|8@0@(8f8K;Oh0!`}AN 8T:0@@(8f8K:Oh0!`}AN |0@.W@d|0@@@X{P\|0@A,880 8K< O8`K9O{PP0P0P8`|.h0!`}AN Asetarg|!U(H} p00A88h0K9OH$C/U@(U@F>/A,0XA@88j0K9OH T0TF>|8@@80`8K9eOH0@ U:@(80`8K99OH0!@}H|@@08@0`8K9OHHcT`|@@LB)A 00K8OH0!@H|j9.0!@8`N H0!@}N Ap change_argl8f8g8g0 N @8bp_consA L| N ĐA L| N ȐA L| N ̐A L| N ؐA L| N ܐA L| N A L| N A L| N 8 ||"+|*M |+|*0 M KN A L| N !$(,!0A48a cT:Tf:PT:0$0T`:a(0N "@`double_to_ints0T>00T|e+x|x!N "@,ints_to_double!|!H9h080<0@aHLK0hl8<@ h0!`}N "A`d make_float|!HT`(<C088|`p@(lb<!8C(b*H@T(l|p| @l@$|p@(lL!HE(b*Hbc@|bT(l|p| @l`@$L!HE(b*HHbc@,e K`T(|plH$K1O8`HT(|pl@$L!HF("*He@fT`(l|`p|@@(lL!HF("*HD@( fK0(8`A H,hK1O8`H0(8`AT:|0||N #*H#(H#rHx#$HpA98hH@8hHL@8hH|L@8hHh@8hHXA8hHH!P080<0@aPTK]0hl8<@ h0!`}N "Afloat_op|T(!A/LӂA T+TF?8`@p(T@`T:(|(.,|p@(lL$AHd"(*H̀e@U+l}p|@@@(lL$AHd"(*H|@, dKqT(|p@H`dK.Olp}0!8`N K.}Ol}0!8`N T(|p@(lL$AHd"(#*H`@T(|p@(lLAH$d"(#*H$l|@@8 gK},l/pA @@@ HO!PHDHuO HeO?$!PH lp}0!8`N 080<0@aPTKy0l8<@ lxp}0!N l0!N "A float_fun2|T(!<C0H;TF>A/LӂA T+TF?8`@ (T@T:(|(.,|p@(lL!HD("*H@|T(|p@(lL!HD("*HXl|@@ dK,eH4dK+O8`HA,OA , TF>/A LA ,T(TF>A/OZA 8`@TT(TF?@(@(@T:|0.0$|p|pxKBAxH'A!H080<0@aHLKEl0~8<@ x0!p}N h0!pN h0!pN "At input_float|T!Xl8`@T|(@@H dK!8f048d?LiaH|@˃@HT>d?HPA А0!}H M{A`c@@?$0!}H M{@8@ А0!}H |M{ 0!}H dM{@ 0!}H HM{ P0!}H 0M{h@,hHT>d?LiaHp`?$b8!}0!HM{@䀂ȃ8x1:0(c<|! x؁x@#0}0!HM{@@ @0!}HdM{ȃ0 A @ @0!}H4M{|! x!xx,@ 0!}HM{ @0!}HM{@8!@$c@#$}0!HM{ȃ0 @4!xx,@c@#$}0!H|M{ c@c$@ }0!HPM{|! x!xax,@ }0!H M{ }0!HM{:*0!}HM{`@#0}0!HM{!*0!}HM{T>d?Lia0!Hya`*Ȉ ȉ(a8ȁ0*! *F *#&cD*A(H`<r0!}HM{`@ h0!}HM{b@<8"H0@8"h<H:*8!0!}HM{0!}HM{"Apowb` $!H0 XȃH":cPȣ`hcx@ (ȃ% <ȣzCTaa!Tc 6|d)|e!(f <(!(Qz& <z* :)z2: 2 :)*N ȃ Ȇ P 8@b8"&N ȃ @ Hb8"N HL3OYӂ@b8"&N @:؁0T( <#pF2#zȁaTc 6|d|(P(r((!I9P(%8z*(zz*:2(2N @$:؁0TKhL@@ Hb8"N M 0!*N "@< expinner2!PbdpLE3@8!2Tf0HT~0@f||0T8|d?apalxa|TVatG L3OXӂL<`?Aȁp2b!xhAg !g8THg(8T>0@|| T8|c,!(|(Dr,# |pT~T0d?lx(!xA |npg !g8*TK|fpT~0?KN "@log`@?@?C0b ȃD2cD(@LL(*a((@@ ((N %*N b@!*N "@hfloorb ȃD2cD(@L(*a((@@ ((N %*N b@ *N "@hceilb ȃD2cD(@(*a((@@ ((N %*N b@ *N "@hnearestb ȃD2cD(@L(*a((@@ ((N %*N b@ *N "@htrunc!T~!N "@fabs@ FfLA*%@aN %8`H8`A8`HN %|!|xfHEAxD0!<|N $A L| N b( ,#!p0ȄHDP`MȤX0 d`p@@!D!h (DxN T8|4D|0Ȥ0#((ȣrce:dr*C"A:(" :A, PH$8:@8(|! xf|p|||0"c (`8:BC<?|pT˃ # :L| H# :\# :|"# :T#&| HTc&#,:AHX<| | PP## :P:G8*c,zi|EY|ȃ,z:,@zb(:@*0zh#X!zK"z!:KaX|`r@2!zHpxc(x!/|-|$=|HP@$8>((} 0!0N %($8b8!}( 0!0N 80!0}K\M{"Aacos??@hA L| N A| KkN N |;8!8K8OX0!P}N AD make_funcell|l!;K}W:d80|(X0!P}N AT make_term||;!;gHA,0A8dHA,0AdH}AKdHA,@d($@4dA|HA,@(_@P4ADdHQA,@(_@ 4AdH!AKА8`HlH-A,8`AL(,+$()*(A40A,A(,A A8`X0!PHX0!P}N A match_sym||;!;gHA,0A8dH݀A,0AdHAKdH9A,8`@(_@4AdHA,@(_@P4ADdHA,@(_@ 4AdH]AKА8`H X0!P}N AD match_var||;!;gH A,0A8dH yA,0AdH YAKdKRAA,8`4AtAldKRA,4A@A!cH ]A,0A8cH =A,0AcH AK0|(@8`@ 8`X0!P}N A match_char|;!;;8`)K!,8`,@HK,8~3;A0H;,88}A0K;8X0!P}N A match_args|;b!;8`]Km,8`|@K],0a8;AHH,8`]AK9,A;;,a8A|~8X0!PHt8`,K,0a8APH,0a@܀4|0@A0|8_4||T088KiA|,0|A,|/0|A|K䀺|h0|0!`}!N L|8@A0|8_||0<0|8a|T8K A|,0|Ap|/0|AT|K|0@A0|8_||0@0|8b|T8K A|,0|A،|/0|A|K,@d||ep0D8K A|,0|Ap|/0|AT|K@\(Tg:1|8.|,A|0|/|A0|K|@@x0|8[0{K3WA8;,|0@@HTT0@LBA0;T|0@H@;T|0@@쀺;,|0@@|00|8K83W8@DT0@LBA0;T|0@H@;T|0@@0@@|00|K|0@A$|8|0|88KU|h0|0!`8]}!N (Tg:1|8.|,A4|0|/|A0|K䀺|(|8(;@@;;,~8K3||@0|@~8KW:|{(8Km|8)0|h0!`}!N !D0!`N Aout|x!|K|80|xXL}0!PN ALswrite|x!|K|80|xK OXL}0!PN ATsout|!8x|K!|80||0Ha8xK1AK!AXL}0!PN ApfoutA L| N A L| N A L| N A L| N A L| N A L| N A L| N 8`N @init_cb|!H0c@KA8`H0!@}N A8if0b|!H0c@KaA8`H0!@}N A8 new_builtin  xxx T,ll(\L8X|DY 4DXl|C0A H l $ 08@`x L`l4# hHXh<T,L<h`,L !,!!t!"##$$($8$D$$$$%%(%h%%%&&&&'T'(\()x*4*+,+,@,t,-T-. .<.l.../</|//0<00111112 2233p334 4,4T45d5566 686d6677<7l7778(8888888888889999999::$:D:d::::; ;H;;;=>>d>t?p??@$@@?@h@@kkkk@  Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programeditbp_stateeditor_filenoname.plbp_stateversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%u%u%u%u%u%u%u%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceeded%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYS(75%)Stamp found %d, expected %d hash op on protected objecthtable full in hash op(75%)arg 1 of hash op should be nonvararg 2 of hash op should be nonvarStamp found %d, expected %d hash op on protected objecthtable full in hash opunsafe data in def/3 or set/3(75%)def/3 expected before set/3, rm/2unsafe data in def/3 or set/3expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loading%s unable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuser  B$, 0B4 8<DHBLPX\ `Bd hlt| B  B  B ̯԰ B J   $J( ,08<@DJH LPX\`dJh lpx|J J J ̯԰J J  J  $(08<@J D HLT\`dJ h lpxJ  J  ȰJ J J $(048   J?$ (,4DHJ@L PT\dhJAl pt|JB JC į̰JD JE   $(JF, 04<HJGL PT\hlJHp tx€ŒJI” ˜œ¤°´¸JJ¼ į̰JK JL  JM $(0@DHLJNP TX`ptJOx |ÀÈÔØÜàJPä èìôJQ ЯذJR JS  $,8<@JTD HLT\`JUd hlt|ĀĄČĔĘĜĤĬİĴļĠ̯԰ $(,4<@DLTX\dl pt|ň ŌŐŘŤ ŨŬŴż į̰Р ر ,8DP\htƀƌƘƤưƼȱԱ(4@LXdp|LjǔǠǬǸıбܱ,<L\htȀȌȘȤȰȴȼ د=  $ ,08<@=DHL TX`dl=tx| ɄɈɐɔɜ=ɤɨɬ ɴɸ= =   (,0=48 @DLPT\`d=hl txʀʄʈʐʔʘ=ʜʠ ʨʬʴʸʼİ= =  $,04=8< DHPTX`dl=tx ˀ˄ˌː˔˜ˠ˨=˰˴ ˼Яذ=  = $ ,08<@HLT=\` hltx|̄̈̐=̘̜ ̴̸̨̤̰= = $ ,08<@HLX=dh pt|͔̀̈́͌͐=͘͜ ͤͨͰʹ͸= =   (,0=48 @DLPT\`d=hl tx΀΄ΈΐΔΘ=ΜΠ Ψάδθμİ=  =  $,04<@H=PT \`hlpx|ψ=ϔϘ ϠϤϬϰϴϼ= =  $(,=04 <@HLPX\`=dh pt|ЀЄЌАИ=РФ ЬаимȰ= = $ ,08<@HLX=dh pt|рфьѐќ=ѨѬ ѴѸȯа=  $=04 <@HLPX\h=tx Ҁ҄ҌҐҔҜҠҬ=ҸҼ د=  $(4=@D LPX\`hlx=ӄӈ ӐӔӜӠӤӬӰ= =  $,04<@L=X\ dhptxԀԄԘ=Ԭ԰ ԸԼ̯԰=  (=48 @DLPT\`d=hl txՀՄՈՐՔՠ=լհ ոռ̯԰=  (=48 @DLPT\`l=x| քֈ֐ְ֤֔֘֠=ּ ܯ=   (,4=<@ HLTX\dhp=x| ׄ׈אהטנפװ=׼ ܯ=   (,<=LP X\dhltx،=ؠؤ جذظؼȰ=  (=8< DHPTX`dt=لو ِٜٔ٠٤٬ٰ=  = (,48<DHP=X\ dhptxڀڄڐ=ڜڠ ڨڬڴڸڼİ=  =  $,04<@H=PT \`hlpx|ۄ=یې ۘۜۤۨ۬۴۸= =  $,04<@L=X\ dhptx܀܄ܐ=ܜܠ ܨܬܴܸܼİ= = (,48<DHP=X\ dhptx݄݀ݔ=ݤݨ ݰݴݼį̰=  (=48 @DLPT\`l=x| ބވސޔޘޠޤ޸= = $(048@DP=\` hltx|߄߈ߐ=ߘߜ ߤߨ߰ߴ߸ =  $,48< DHPT\dhl tx= Ȱ= =$(, 48@DL=TX\ dhpt|= ᘯᠰ= ȯа=  $(, 48@DLTX\ dhptx=| ␯☰ Ȱ   (08 <@HLP TX`dh=l pt| 㘯㠰 㼯İ= د=  =  (,4=< @DLP\=h lpx| 䈯䐰 䤯䬰= Ȱ= ܯ  ( ,08<HT X\dht 刯吰= 崯弰= Яذ= = =  $,08 @DLPTX \`hlp=t x|愰= 港= ܯ=  =, 04<@P=` dhpt= 眯礰= Яذ= =  (=4 8<DHT=` dhpt= 蔯蜰= Ȱ= = $(04@L PT\`p= 鈯鐰= į̰= =  = $(04<=D HLTXd=p txꀰ= ꔯꜰ= 갯기= ԯܰ=  =$ (,48@H LPX\dl pt| 똯렰 뼯İ    =( ,08<H=T X\dht= 숯쐰 줯쬰 Ȱ= ܯ=  =  $,04=8 <@HLP=T X\dhl=p tx퀰= 픯휰= = ̯԰= =  =  (,0=4 8<DHL=P TX`dh=l pt|= = = ȯа= =  $=, 04<@H=P TX`dl=t x|= ﰯ︰= ̯԰= =  (=0 48@DLT X\dhp=x |= = د=    =$ (,48<=@ DHPT\=d hltx|= = = Ȱ= ܯ=  = $(0=8 <@HLT=\ `dlpx= = = د=  4=H LPX\p   ԯܰ  = $(08 <@HLT\ `dlp  į̰    ( ,08<DL PT\`hp tx = Яذ =  $,=4 8<DHPX \`hlt|   Яذ =  $(=, 04<@HP TX`dlt x| = ԯܰ= =  $,0<H LPX\ht x|   ԯܰ=  =  $,08=@ DHPT\=d hltx= = =  = $(04<=D HLTXd=p tx=  ȯа   $ 04<@LX \`hlx   Яذ  =  (,<=L PT\`p= = ̯԰ =  $,08@ DHPT\d hltx  ̯԰   0@ DHPT`l pt|  į̰    ( ,08<D LPX\dl pt|  ̯԰   (0 48@DL TX`dlt x|  Ȱ   $, 04<@LX \`hl  د=  (=8 <@HLX=d hltx = į̰ = =$ (,48<=@ DHPTX\ `dlp|= =  د=   (,4 <@HLP TX`dp |  Ȱ    0D HLTX\ `dlpt x| =   (0 48@DL=T X\dhp=x |= = ȯа    =( ,08<D LPX\d lpx|  = د   $0=< @DLPX` dhpt  Ȱ= =       (= 4  8 < D H T= `  d h p t |=      =         ܯ   =       $  ( , 4 8 @= H  L P X \ h t  x |            ԯ ܰ  =       (= 4  8 < D H P X  \ ` h l x      =         ܯ             $ , 0 8 @  D H P T \ d  h l t x           =      =      =  $ ( 0 4 @= L  P T \ ` l= x  |    =      =   Я ذ     =0 48@DP\ `dlpt=x | = İ    $,8DP TX`lt|   ܯ $, 04<HPX \`ht x |          ԯ JM J J)  8<@DPT\`h l txJMJ  į̰  B B  B BB (@H PX\dhl|   ԯܰ      $ (,4@DHLPTJX\hlp|        $(, 044 8<3 @DH L P  TX\ h lBp tBx|     4    3       04@H L PXdhl p x  ̯԰     (4<LT \`ht x | B    434>343     $ (48@T Xdh lp      (,8L Pdhlp t x|      8@HLPTX \dh lpx        ( ,0<H L P T \ `dlt x  JJJ   $,0J4 8<DP T X \B`d hl|  444 333 4 3      J/  $,< @PTX\` d h lpJJJ  İ  ,04 <@HX\` lpx  Яذ J$ (,4@DPJT XB\ `dlx|  J   43    $ ( <@LTX\`d hpx|     Яܰ >    >     $ , D  H L  P T ` x  |  >         B   ̯   !! ! !$B!(!, !0!4!8 !<!@!D !H!`!d!p !tB!x!|!! ! !!!!!̯!а!! ! ! ! !"""" " "$ ", "0"4"8"D"H"d"|""" """"J5" ""į"̰" """""# # ##$ #(#4#8#D#l #p#t#####B#### # #B##### $ $$$$ $ $$ $($, $0$<$@$H$L $P$T$\$`$d$h$l $p $t$x $| $$$$ $$$$ $ $$$$ $$$Ȱ$ $ $$د$$ $$$%% %% %% % % %$%,%0 %4%<%@ %D%H%P%T %X%d%h%p %t%x%% %%%% % %%B%%%% %%%Ȱ%%JU%%ܯ%%%%&&& & &$&(J$&, &0&D&H &L &P&T&\&p &t &x&|&& & &&& & &&&Ȱ& & &&ܯ&& & &'''$ '( ','0'4 '8 '<'@'T'd 'h 'l't'' ' ''' ' '''İ' '4''4''3''3'4''3(( ( ((($(0 (44(8(<4(D(H3(L(T3(X(d (h (l(p(x( (4((((3(( ( ((((((J( ( ((( ((()) ) ) )$)( ),)8)<)D)T )X )\)`)d )h)t)x))))J)))J )))J))))J) ))̯)԰) ))) ) ) ) *** * * *0*4 *8 *< *@ *D*H*P*d *h*x*| * * * *** * *4*4* * * * ***3** *3**  * **+ + +$+,+0 +4+D+H+L+P+T +X +\+`+p+++ ++++++++++ ++++ ++++ , ,, ,,, ,, ,(,8 ,< ,@,L ,P,T,X ,\,`,h,p ,t,| ,,,, ,,,, ,,,J , ,,,İ,,,J ,,,J,,,, ,B,,--J- - -- - -$-(-,-0-4-8-<-@-D -H -L -P -T-X-`-l-t-| - ----J---- -B-- - - --ȯ-а----- --... . ... ., .0.D.H.L.P.T.X .\ .` .d.h.p. . .. . ... ...J...J. ....... /  //// / /(/,/0/</@/H /L/P/\/d /h/l/t///J&/ //////J&/ //į/̰//J+////00J*0 0 000$ 0(00 04080L0T0X0\J.0` 0d0h0p0x0|0J.0 00000 000000000 000 000 0001 1B11 111 1 1$1,14181@1H 1L1`1d1l 1p1t11111111111111111111111111112222 22222 2$ 2(2,2024282<2@2D2H2L2P2T2X 2\42p2t2x32|2222222222 222222222222223333 33333 3$3(3,3034383<3@3D3H3L 3P3T3\3l3p3t3x3|33333333333 333333333333333333333 444 4, 40 44484<4@ 4D4P4X 4\4 4` 4d 4p4t 4x3 4|4 4 4 44 44444 4444 4  4  44د4ܰ 4 4 4 45 55  5 5 5  5$ 5( 5,58 5< 5@ 5D5L 5P5T 5X 5\5`5h5t5x5|5555 55555 5555 555555555 566 666$6, 60B6468B6< 6@6D6L6T 6XB6\ 6`6d6l6t 6xB6| 6 66=6 6666 6B66 666İ66Я6ذ6 6B6 66 6777 7 B777J 7 7 7$7,70747877777J%7 7778 888 88J%8 88 8(80 84 888<8L8\8` 8d 8h8l8t 8888 8>88828J%8888 8 88ܯ8 9 9994 9 9 4 9$4 9(4 9,903 94 9@9D9H3 9L9P9T3 9X9\9`9d 9h 9l 9p9t9x3 9| 99 9 9 999 9 9 999 999 9  9 99د9 9 9 ::: : :: :  : : :(:<:@:D:H:L :P:T:\:` :d:h:l:p:tJ%:x :|::: ::::2:J%: :::Ȱ:: : :::;;;;; ;$;(;,;D;L ;P ;T ;XB;\;` ;d ;h;l;; ; ; ; ;;;;; ; ;;ԯ;ܰ;;;;<<J<< < <4<8 << <@>>> > > >>>$>( >,>0>4 >8 >D>H>P>X >\B>`>d >h >l >p>t>|> >>>>>> >>>> > >B>> > >>> > >?? ????? ?$?(?,?4?8?<?D?H?L?P4 ?T ?X?`?d?p?t3 ?x ?|???????  ? ??? ? ?????????4? ????@3@@@ @@@@ @ @$@(@0@8@<@@J@D @H@L@T@X @\ @`@d@l@p@t@xJ@| @@@@@@J@ @@@@ @ @@@J@ @@̯@԰@@@J@ @@@A A AA AJA AAA$A( A, A0A4A8JA< A@ADALAPATAXJA\ A`AdAtAxA|AJA AAAA AAAAAAA AA̯A԰A AAAAAAA BBB B BBB B$B,B0B4 B8B<BDBH BLBTBXB\BhBlBp BtBxBB BBBBBBB BBBB BBBBBBB BBBCC CCCC,C0 C4C8C@CPCT CXC\CdCtCx C|CCCC CCCCC CCȯCаC CCCCC C CCDD D DDDD D D$D(D0D8D<D@JDD DH DLDPD\DdDhDlJDp DtDxD D DDDDDDDDD D D DD̯D԰DDDJDDDDEEE E E E E E$ E( E,E0E8E@ ED EH EL EP ET EXE\EdEl Ep Et Ex E| E EEEE E E E EEEE E E E E E EEدEE E FF FFFF4 F8 F<F@FHFP FTF`FdFhFlFp FtFxFF FFFFFFFFF FFدFF F FFGGGG G$G,G0G8G<G@GDGHJGLGP GTGXG`GdGhGlGpJGt GxG|GGGGGJG GGGGGGGJG GGԯGܰGGGJG GGHH H H H H H$ H(H,H0H<H@HDJHH HLHPHXH\JH` HdHhHpH| H H H H H HHH HJ9HHJ8HHJ6H HHHHH H HHHHIII I IIIJII I(I,I0I4JI8 I<I@IHIXI\I`J'Id IhItII IIIII IIIȰ IIIIIIIIIJJJJ JJ J J J$J(J,J0J@ JDJHJL J`Jd JhJlJtJ JJJJJJJJJJ J JJJ԰J JJJ J JJK K K >K$K(K,K0 K44K@4KDKH3KLKl3KpKx K| KKK KKKKKKKKKKKKKKKKKKKL L L LLL  L$L(L,L0L4LLL`LdLhLlLpLxL|LL LLLLLLLLL LLL LLLMMMMM M( M, M0M4M8 M< M@MDMHML MPMTMX M\MdMhMlMtMxMM MMMM MM MMMȰ MMMMMMMMNNN NNN N N$N(N,N0JN4N8N@ NXN\N`NdNhNlNpNtN|NNNNN N N NNNN NNNNNNJN NNNNNNOJ1O OO OOOO O$J1O( O,O0O8O@ODOH OLOTOXOdOhJ1Ol OpOtO|OOOJ2O OOOOOOJ2O OOOOOOJ2O OOԯOܰOOOJ2O OOOPPPJ2P PPPP$P(P,J2P0 P4P8P@PHPLPPJ2PT PXP\PdPlPpPtJ2Px P|PPPPPJ2P PPPP PPPPPPJP PPPP P PPQ>QQ Q QQ Q4 Q8BQ<Q@ QDQHQPQd QhQtQx Q|QQQQQQ QBQQQԯQ R RRRRRR8R<R@ RD RH RLRPRlR RRR4R4RR3RRR3RRR RRԯRR SS S4S4SS3S S$S(3S0S4S8 SDSHSTSpSt SSSSSSS SBS SSدSS SBST TT T>TT T T T$T8TL TPTXT\T`Td ThTlTTTTT TBT TBTT TTTTT TTTU UUU U U U$U@UXU\U`Ul Up Ut UxBU|UUU U UUUUUUİ UUUUU VVVV VVVVV J V$V(V,JV0V4V< VXV\V`J'Vd Vh4VlVp3VtVx V| VV VV4VV3VVV V V  VVįVаVVܯV V VVV WWW WWWW W(W,W0W8 W<W@WHWP WTWXW` WhWlWpWtWxW|W W WWW WWWWWWWWWW WWWX X X XXXX0 X4 X8XDXH XL XPXTXd Xx X| XX4XXX XXX3X>XX XXįX԰X XXXXX Y YYYY Y$JIY,Y0JKY4Y8Y@ YT YX Y\JGY`YdYhJYl Yp4YtYxYY3YYYYYYYYY YJGYYȯYаYYYYZZZZZ Z Z$Z0Z4 Z8Z@Z` ZdZlZpZxZZZ ZZZJJZZZZZZ ZZJKZZȯZаZZ ZZZZ[[ [ [[[JL[ [$[,[H [L[P[T [X[d[h [l [p [t[x[[ [ [ [ [[̯[԰ [[[[ [\\\ \ \ \$\(\, \0\44 \8\<3 \@\D\H  \L\P\` \p\t\x\|\ \\\ \\ \\ \\\\  \\į\԰\\ \ \ \\] ]] ]$](], ]0]@]D]H]L]P ]T ]X  ]\]`]p]] ] ] ]]]]] ]]]]J0] ]]د]] ]B]] ^ ^^^^^ ^^ ^( ^8^<^@^D^H ^L^\^` ^d^h ^l ^|^^^  ^  ^ ^^^ ^^^^^^^^ ^^^^^^ ^  ___ _$_(_,_0_4_8_<_@ _D_T_X_\_`_d  _h_l_|___ _ _ _______ _ ___د____ ` ``` ` `$`(`,`0`4 `8`H`L `P`T `X `h`l`p`t  `x  `| ``````````` ``` ` `aaaaa a$ a( a,a0a@ aT aX a\a`adJahal apatax a| a a aaaa a a aaaȰaa a aaaabb bb,b4 b< b@bDbHbPb`bdbhblbpbtbxb|bbbbbb bbbbbbb b b bbܯbb b bbc c c ccccc  c$c,c0 c4 c8c<cLchclcpct cx c|c c cccccccc c cccdd ddd$d(d<dX d\ d`dddldd dddddd ddddddee eee e$e,e<e@eD eHeLeTedelet exe|eeeeeee eeeeeܯeeff fff(f,f0f8fHfTf` fdfhf|ffffff ffffȯfаf fBf fffgJg gg gg g$Jg( g,g0g8gn nn$ n( n,nD nH4 nP nTn`nd3 nh4 nl np4 nt nxn| n4 n n4 nn4nnnn3nn3 nn3 nn3 n n n3 oo o ooo o8o< o@oDoLodoholopotoxo|oooo o oooooԯoo oppp p ppp$p4p8p< p@pDpLp\p`pdphplppptpxp|ppppppp p p p p4pp3pp>ppp p pppqqqq$q(q@qHqLqdqlqpJ)qt qxqqqq q qqqqqJ)q qqqqqq q qqqq qr rrrr r 4r$r(3r,r4 r8r<rDrP rTr\ r`rdrlrx r|4rr3rr rrrr r rrrr rr rrԯrܰr rr sss s s s,s0s4sHsLsPs\s`sdshsl spsts|s s sss s sssȰs ssstt tttt t0 t4 t8 t<t@tLtPt\t`thtltx t|ttttttt tttİt t tttttttuu uuu(u8 u< u@ uDuPuT uX ud uhulu|u u uuuuu u u uuṵu u u uuu v v vvv$v8 v< v@vDvHvLvP vT v` vdvhvx v v v vv vvvvv v v v vv̯vܰ v v v vw ww www w w$ w( w,w0w@ wP wT wX w\w`wdwhwl wp wx w| www w wwwwww w w  wwدwww x xxxxx$ x(x,x@ xLxPxTxX x\ x` xd xh xl  xp  xt  xxx|xxxxxxxxx x x x x xx x x4 xxxyy3 yyyy y y  y$  y(y,y8 yDyHyLyP yTyX y\y`yp y|yyyyyyyyy yyyJyyyįy԰ yyyyy yzz z z z$ z(z4 z8 zHzLzPzTzXz\z`zhztz|zzzzz z z z z z z4zzzz z zzzzz3zz{{ { {  {  {{{$ {0{8{@ {D{P {T{l {p {t{x{|{{{  {  { {{{ {{{ {{ {{ԯ{ {{|||| || |||,|8|<|@|D|H|L |P|T|d |p|t |x|| | | | | || | |4 |||||3 || | |  | ||| }} } } }}$ }( }, }0}< }@ }P }T}X}\}`}d }h  }p  }t }x}|} }} }} }} } } }} } } }}}}} }  ~  ~ ~~ ~~$~(~,~0~4~8 ~<~@~P ~\~` ~d~h ~l~| ~ ~ ~~ ~ ~4 ~~~~~3 ~~ ~  ~ ~~د~ ~~    , 0 48 <@ HL TX \`l pt         $ (,08H L P TX\`lptx           (,04 8< @LP`dhl p t x|       $ < @DHJ LP TX `d pt x|       а       $(,04 8  <@Ph l p4 t x   3           ܯ    $(,048<DHLT dhlpt|    0 4 8<D\`dhl= J ȯа  J $<@ DHPhl pt|  J ܯ J  8< @DL\`d hlt x 4 4 3 4 3 4  3    3 4 3  4  3 $(,  0  4  8<L \`dhlt x 4 3 4 3   ܯ   $ (4 8<@DHLP3 T4 X\3 `lpt  x| J    4 3      , <@DHLPJ X\ `l p 4 3     Ȱ   4  4 3   $ ,0<3 @DHLdt x |  į̰=  (04 <@H`hpt |    $<@D LPXhlptx    J  J   4  3      (,0 48D H LP TJ X\ `J dh lptx|     įȰ J J     ,04 8<@DH3 LPT X  `  dht J J    4 3       0 4 8 <@H\`J)dhJ,l p   B  ,48DH L dhp J)    0J8 <@DHL`dhtx |     $,@D HTXlpx |   04 8<D\dl p| Яذ $,48<@DHP hpx|       ܯ  $(,0<@DHLPTX \ ` dhx  BܯJ J ,04 8@D\`lp|Jد J $8HLPTX\J`dtJJܯ J $4DHLPTXJ\`pJJد J$48<@DHJLP`ptxJ|     $,0 4<@DX\`d h lp     4 4   3 4  $3 ( , 0483 <4 @ D4 HL\`dh3 lt x3 |  >         $(, 04D TX\`dl p|        ԯ  J 4  $8<@D3HLP T  X\lJį԰     J    (,0 4<@HPX\dpt|     J  ̯    0 4 8<@DH L P TXh|   ̯԰  J  048< @ DH\ ptx| 4    3   $ (HPdhJlptJx| İJ    $,0@DHLPdtx |   د  $(, 08@ DhpJ    4 3  ( < @ DHLJPJ T X \` d h lpt x|4 3          Bܯ   J $(J,J04< LP T`d h lp            İ      JJ         $ 48< @DHJ LPTJ X\`dJ h lpJ t x|J          ̯԰     (8<@DHXl ptx |     B    048J <@DJ H LPXlptJ x|J  J J  ȯа  (<@XhlpJ tx|J   ȯJ J   (,DTX\J `dhJ l pt|J J  J J  J  $(J , 04<TX\J `dhJ l pt|  ̯԰  $48 <@HX\ `dl|   Яذ    04 8<DTX \`hx|   ̯԰  ,0 48@PT X\dtx |      ,D H LTdt x    Ȱ J J   $ (,4HP X\`h|  J Jد   $,@DHLPJTXl J JJ ܯ J0D HBL PT\dhp  B   ԰    (, 4B8 <4 @ DX\3 dlp t        $>(, 0 8< @L PT X4 \4 ` dp tx|3 4  >3 3  ̯԰      ( 8<DL P`dl>p t  J       $(,08    $(, 0 8 < @  DH\ lp x4|4   34 33    , 048<@DH  L  P TX`pt x4 |   3   4   3      $(,048<LP TX\ ` tx|     4    3   4   3     048<@DHLPTdh lpt x      ̯а 4  4    3    3   $( ,40448<4@D H L3P TX \3` lpt3x4|4  3  3     $ (8 <@DH LPT X\ lp tx|             ,04J 8< @ D H LP` p txJ     BJ     44  $(3,483 <4 @DL3 PTX\ ` d lp Яذ  4 3$ ( 0 48HX\` hlpJtx J JJ   J$(J,08HLPX `d hlptx| 44  34 4   3  3 (,3 04 484< @ T3X\`3 h4 lp4t x4 | €4 „ ˆ œ 3 ¤¨3 ¬33     (48TX\lÄÈÌÐÔ Üøüа  $( ,HL PThĄĈ ČĐĘĴĸļ     J $, <@JDHLJPTXJ\ `ptx|ŀń ň Ō Ő Ř  ŜŠŰ BJ  J ( 8<@DHLJ P Tdhl p t |ƀƐ ƠƤJƨ Ƭưƴ Ƹ Ƽ ȯذ     $,8<L\ `h lpDŽǔ ǘǜǤǸǼB    $( ,04 8PThlptxȄȈ Ȍ ȐȔȠȴ ȸȼ ̯   ,048< @ DH\ pxɀ ɄɈ Ɍɐɔ ɘ ɜɠɤɨɬJɰBɴɸ  4   $3 (,0 4 <  @DT hlptx |ʈ ʌʠʤʨʬʰ ʴ ʸʼа   $ (,<LPT X\ `Bhlt˄ˈˌ ː˔ ˘B˜ˠ˨˸˼   BBܯ      $J(B,04DH LP TB\`hx| ̀̄ ̈B̜̬̰̐̔ ̴ ̸̼ BB̯а   ,0 48 ڸڼ      $ ( , 04 8 <  @DT dhlp t x |ۀ ۄ ۈ  یې۠۰۴۸ ȯа   $(,4D HX\`d hlt ܄܈܌ܐ ܔ ܘ ܜ ܠܤ ܨ  ܬ  ܰ  ܴܸа    048< @DLd h l p tx݈ݘ ݜ ݠ ݤݨݸ    ܯ    B $ 48D L P4T4X\3`4d h4 l p4 t x4 | ހބ ވސޔ3 ޘޠ3 ޤި3 ެ޸3޼3ԯ            $(8HLPX \`dl |߀߄߈ ߌ ߐ ߔ ߘߜ ߠ  ߤ  ߨ  ߬߰    0@DHL P T X \ `d h  l  p  t  x|    య         (,04 8HLPT  X  \  ` dhl|  ᔯᜰ    Я            $  (,<LT \ ` d h lptℰ    į԰                 $(8 H L P T X \`p       㜯㬰             $(8@HLPXhlp t 䔯䜰 Ȱ 444 4   4   4  4   $(3 083 <D3 LP3 T4 X \4 ` d4 h lpt3 |3 3 344  4   3  34  33 344 84 <@3 DHL3P4T X4 \` h>p3 t3344343344 43 (3,43<@ D4HL4P T4 X \`d3 lt3x3  瘯眰        $,0 4 8<D T\dhl pt x  萯蘰 4         4 $4 (,3 04 4 84 <@4DH4LPTX `d3hp3tx3 |3  3  3 ̰  4  $ ( , <@ D H L4 P4 TX3 \4 ` d4 hl4pt4x| 333 3  3  3    B  $(,44 8 <DH3L\`d h lpt   د   4< @DL`dhlp t 씯쨰  43  $< @BDH L 퐯혰  ( ,08P T\`hl p x|  İ 43$ (48 <@T h l  אָİ     $(J,04J8<@DJH LPT X\`dh l pt|J         $( ,@HLPT X\hpt| Яذ  4     $3(,0 48D P TX>\ `dhptx|   >   Яܰ  J $J,04J 8<@DJHLPXJ\ `dl J̰   ,04 8<DL P TXhx| JJ   4 3        $,8<@DHLJP TX`lptJ x|J          8<DT Xdhp tx JJаܯ  ,8@ D\lp tx    4 (48PTX\htx433  J)  $(, 04@X\`dh|  İ (,0H\htx|    4    $(3,04 8 <@H P T X \hlx|4   3  د 43 (8     (,48 < @DHL P T X\hp t x |>    > ȯذ B   $48HX\`dhl    8 < @ DBHL PTh    į԰       ,J0 4B 8 < @D` |        ̰ 08@D HLPT XB\ `Bd hlt|   B  ܯ     $(,J0 48@TX\`dx        $( , 04DXd ptx  Я  0DHL PT Xl p x       $(,048<DPTX\`dhlptx|J'   دܰ  444 4   4  4   4 $ (,03 8 @3 D T X3 \ d h3 l4 p4 t x | 3 3 4    3  4  3   3 33         , 0 4 8 < @ D H L P T X \ `  d  h  l  p  t  x |           4 4     3      3                  $  (  , 0 D T X \  ` d l  |          J       ̰             4 8 < @ D H  L  P  T X ` t x |                 Я ذ    J   J         $  ( ,  0  @ D  H L P  T   X   \   ` d x                    J              $ ( , 0 4  8 < L \  ` l p t x |             د     B    =  $ (,0 4DHL PTX\  `  d  h lp  J  B    =       $ (,0@ D HLPTX\lpt x|             Яذ B            $ ( ,0 4 8D H L4 P Thl ptx|3 >    B                  J     0 D H L PTX\`hx|              4   $3 (,0 4  8<@PTX\` d hlptx                4 $ ( 04 8 <4 D4 HLPh l p tx      3  3 3      $ (0 48< @DLP T X\d|         $(Hhl ptxJ BJȯ JJ $(J,0P lptx|  4 3    Я   $(, 0 48&D3&H&L &P3&T&X &\3&` &d &h  &l&p&|&& & && & & & & & &4 &&3 && & &4&&3&&& &&4&4&4&'' '3' ' '3' 4'$'(3','0'43'84'<'@3'D'H 'L  'P'T'` 't 'x '|'>'4''3'' '4 ' '''3 ''' '  ''ԯ' ' ' '(>(4( (3(( (4 (0 (4(8(<3 (@(D(H (L  (P(T(`(l(p(t(x(|((((( (((( ( ( ((((((( ((ܯ( ((()))) ))))) )$ )(),)4)H )L )P )T)X)\)`)d)h)l )p)t)|))) ) )))) ) ))ԯ) )))* ** *** *$*(*,*0*4*84*D*H *L *P *d*h*l3*p*t*|** *  *** **** *** ** * *** *++ +++ +$ +( +,+0+8+H +L +P +T +X +p+t+|+ + + + +++ + + + ++ + ++,,  , , , ,, ,4,8 ,< ,@ ,D,H,L ,P ,T  ,X  ,\  ,`  ,d,h,, ,B,, ,, ,,,,, , ,,,,,,- -- -,-0-4 -8-<>-@4 -D-H3 -L-T -X-h-l-p-t-x -| -  --- ------ ------ - -  --- . ... .4.8.<.@.D.H .L .P .X.\.h .x.|.. ... .. . ... ... .... . ..// / / / / /8/</D /` /d /h /l /p/| /// // /// / /  /  /  //ȯ/ܰ / / / /B/ 0B00 0 00 00040D0T 0X0\0` 0d4 0p 0t 0x 0|4 0 0 000 0 0040 0 000 00030003 00>14 113 1 13 11>1 4 1$1(3 1,14 18 1<  1@  1D1H1X1h1l1p 1t1x111 1 1111111 11 1 11 1 1 11 11 2222 22 2$2( 2,20 24282@2D 2H2L2h42l2p2t2x2 2222224222 2 22222322>2223233  3  3 333, 30 3438 3< 3@ 3D3H 3L 3P3T3X 3\ 3` 3t 3x3| 3 34 3 3 3 3 33 3333 33>33>3 3 3  3 3334 4 4 444 4( 4D4H 4L 4P4T4X4\ 4`B 4d4h 4l 4p4t4| 44444 4B 44 44>44 443 44 444 444344>4455355 5  5  55 5, 5H5L5P5T5X5\ 5`5d5h 5l 5p 5t5x5 5 5 5B55 5 5 555İ 55 5 5B55 5 5 666 6 6$ 6(6,60 64 68 6<6@6P6d6h 6l 6p6t6| 66 666 64 6 6663 66>64 663 66 6  6 666 7 777 J 7$7( 7,70787P7T7XJ 7\7`7dJ 7h7l7pJ 7t7x7|J 7 74 7777 77777773 7777 7  7  7 7 7  778 8(8,80J 84888B>> > >>> >(>,>0>4 >8>@>D >H>T >X >` >d>h >l> >>> >>> >> >>>>>  > > >>ԯ>ܰ >>>J >>??J?? ?J ???J ? ?$ ?( ?, ?0?@?D?H?L?P?T?X ?\  ?`?d?p? ? ? ? ? ? ? ? ?  ?  ?  ?  ???İ? ? ? @ @4 @@@@@0@4@8@<@@@D3 @H @L@P4 @\@`3 @d@h@l  @p @t @x  @|@@@ @ @ @ @ @ @ @ @  @  @  @  @@د@ A AAA J AA AAA$A8A<A@J ADAHALJ APATAXJ A\ A`Al Ap AA AA4A A AA A AAAAAAAAAAA AAA3BBB B  B  B  B  BB B4BDBHBL BTBXB`BpBt Bx B| BBBBB BBBB̯BذBB BBCC C$C( C,C0C8CTCXC\ CdChCpC CBCC C C CCCCC CBCC C C CCCD DDDDD D$J D(D, D0 D4 D8D<DDDP DT DXD\DdDpDtDxD| DDDDDDDDDDD DDDȰD DDD D DDE E$E(E, E0 E4E8E@ EXE\E`EdEhElEp EtExE| E E EEE EE EE E EEE  E  EEЯEE E F FBFF FFF F0 F4 F8 F<F@ FDFH FLB FPFT FX F\ F` FhFl Fp Ft  FxF|FFFFF F FFFFFFЯF F F F G4G GG G3GGG G G0G4G<GLGPGTGX G\ G`GdGhGlGpGtJGxG|GGJG GGG GGGG G G GGG G G GGG GGGH H H H HH H0 H4H8HKKKK K K$  K(K,K<KLKPKTKX=Kd Kh Kl KpKt KxK|K KKKKKKKKK KKKKKKKKKK L L  LL L L,L0=L4L8L<L@LD LH LLLP LTLd4 LhLl3 LpLtLxL|L LL L L4 L LL>L3 LL>LLLJLLԯLܰ LL L L4 L M>MM3 M >MMMMJM M$M,M<M@MDMHMLMPMTMXM\M`MdMhMlMp MtMxMMMMMMMMMMMMMMMMJ MM MMدMMMMMNNNN NNNNN N$N(J N,N0 N4N8N@NP NTNXN\N`Nd=NhNlNpNtNx=N|NNN NNNJ NNNN NNNJ NNNJN NNNO OOO O$O( O, O0 O4O8OPO`OdOhOl OpOOO O OOOO O OOOȯOаO OOO PP PPPPP P$P(P,P0P4P8P<P@ PDPHPL PP PTPd PhPx P|4 P4 P4 PP3 PP P3 PPP3 PPP  PP̯PܰPPPQQQQ QQQ QQ4Q8Q<QTQXQ\QhQlQpQQQQQQQQ QQQQЯQRRRR RRR RR(R,R0RHR` RdRhRpRRRR RRRRRRJ RRRRRRRR RRRRRRJ SSS S$S(S,S0 S4S8S<S@SDSHJ SLSPSTJ SXS\SdS|S S SSSSSSSS SSSSS S SST TT=T T$T(T,T0T4T8T< T@ TD THTTTX T\ T`  TdThT|T T TTT TTTT TBTT TTTTT T T TUU U$U(U,U0 U4BU8U<U@J UDUH UL UP UTUXUhU|UUUUUJ UU U U UUU UUUUUUUU U U UUU UVVVV J VV VVV$V4 V8 V<V@VH VXV\V`VdVhVlVpVtVxV|V VV VVVV VVV VVVVVVVVVVVVVVVJV VVWWWW W$W(W,W0 W4WHWLWP WTWXWlWWWWW WWWWWW WWW԰WWW WBWX XXXX$ X(X4X8 X<X@XTXh XlXxX|XXX X XXXX XXXXXX X YYYY( Y,Y8Y<Y@4YDYH4YTYX3Y\Yh3YlYx Y|YYYYYY YYYYYY Y YYYZZZ Z, Z0 Z4Z8Z<Z@ZDZHZLZPZTZXZ`ZtZxZ|Z ZZZZZZ ZBZ ZZZ̯ZZZ[ [B[ [[[[0[D[L[T [XB[\ [`[h[l[[[[ [B[ [[[[а[[[ [B[ \\\ \ \4\8\<\@ \D \H \L \P\T\h\|\\\ \ \ \ \\\\\\\\\\ \\\\ ]]]],]4]<]@]D ]H]L]X]\]`]d]l]]]] ]]]]]]]]]]] ]]]]]]]^^^^ ^ ^$^0^4^8^<^D^X^\^`^d ^h^l^t^x^|^^^^^ ^^^^ȯ^а^^^^ ^^___ __(_0_8_<_@_D_L_P_T_X_l___________İ_______`````0`4`8`<`@`D`L`P`T`X`l`````````````د`aaaa aaa(a<a@aDaHaLaPad ax a|Ba aaaaaaaaaa aaԯaaabb bbb b$ b(b,b@ bTbXb\b`bd bhB bl bp bt bxb| bb b bbbbbb bbȯbܰbbbb cccc c c$c8cLcPcTcX c\ c` cdchclctc c c ccccc ccccԯcܰcc cddddd d$ d( d, d0 d4d8dL d\d`dddh dl dp dt d| ddd dddd d d d d ddЯd ddde e e e e eee0 e@eDeHeL eP eT eX ed ehele eeee e e e e eeeа eeee e e e f ff f f4f8f<f@fDfLfP fTBfXf\ f`fdflffffffff fBff fffffffffff fff g ggg g$g(g,g0g4g8g<g@ gDgLgPg\g`ghglgp gt gggg g ggggg g ggggghhhh hhhh(h<h@hDhH hL hPhThXh`hthxh|hhhhhhh h hhįhذh h ii i i  i i4 ii i, i0i4i83 i<i@ iDiH iL iPiT iX  i\ i`iditi i iBii i i iiii i iBii i i iiܯi i i ijj jjj j j j$j,j< j@jD jH jL jP jTjX j\jh jl j| jj j j j j j j j j4jj j jjj3jjj j j j jjj j k  kkk k k k$ k( k,k0 k4 kD kHkL kP kT kX4 k\k` kp ktkxk|3 kkk k kkk k k  kkkkkkk kkЯkذkkkk k ll l l ll$l8 l< l@ lD lLlPld lxl|lllll lBll llllll llЯlذllll lmm mm mmm$ m< m@BmDmH mLmXm\m`md mh ml mpmtm m m4mm3mmmm m m mm̯mذmmmmmmnnnnn$ n(n,n4n8n<nDnPnTnXn\n` ndnp4ntnxn|3nn nnnnn nnnJ0n nnȯnаnn nnnJ0n nno o oo$o( o,o4 o8 o<4 oD oH oLoXo\ o` od oxo| oo3 o4 o oo o3 ooo o o ooЯoذ oBo oppp p p$p8p<p@pLpPpT pXplppptp| p ppppBp pppp pppppp p ppqq qBqq q(q4 q8 q<qDqHqLq`qd qh qlqpqxqqqqqqqqqqqqqq qqBqqدqqqqrrr rrrrr r$r(r, r0r4Br8r<rDrX r\r`rh r| r rrrrrr rrr rr rrrrrrrrrrrs ss  sss$s4s8 s<s@sDsLs\s` sdshslstssss s ssssssss s4sssssssssstt3t t t ttt$t8 t<tDtH tL tPtTt\ tptt txt|t4tt4tttt4t ttt3tt3tt3ttt t4tttt4ttuu3u u3u u( u4u8u<uP uTuXu`u|u u uuuuuu u uuuȯuа u u u u u v v vv v v4v8 v< v@vDvLv`vdvh vl vp vt vx v| v v  v  v  v  v v vvv vv v v v v vvw w w4 w  w3 ww ww w$ w(w<w@wDwHwLwPwT  wX  w\w`wd w|w w w w w www w w4 w w3 ww wwww ww>wwwww  x  xxx x$ x(B x, x0 x4 x8 x< x@ xD xHxTxXx\x`xdxhxl4xpxtxxx|xxx4x>xxxxx3x4xx3xx>xx3xx4xx3xy  y  y  y  yyy( y@ yD yHyLyPJ yT yXylypyt yxy|yy  y  yyy y yyyyyyyyyyyzzzz zzz$ z( z, z0z4zHzX z\z`zhzxz| zzzz z zzz zzzzzz z zzz z zz{ { {${({, {0 {4 {8{D {H{L{P{T {X {\ {`  {d{h{x{{ {{{{ { { {{{ {{{ { | |||| |4|8|< |@ |D|H|P |d|h|l|p|t|x ||| |||||J ||||||||į|ذ |||| } }}}} }$}(  }, }0}4}D}T}\}d}h}l} } } } }} } } }} }} }}}а }}}} } ~~ ~~ ~(~,~0~4~8~<~H ~X ~\ ~` ~d ~h~l~| ~~~~~~ ~~~~~ ~~Я~ذ ~~~~   $(0 D H L PT X \ `d hl pt         $ ( 48HX\`dhl pt|̰     0@L X \ ` dhl          $ ( , 0 48H T\d p t x         (, 48 <HLPTX \ `dt               $( , 0  48HX \ ` dhp           , 0 4D>HL T` dhl p t      Яذ       $(, 0 48HT Xdh lp    ȯа       ,048=< @D H L P TX`p t x |   ,048@DHLPX\ `dl  ( , 0 4 8 <@P `p             $ ( , 0 48H Xhx |                 ( 8 <@DH LP` p             0 @ D H L  P TXh x                0< H L P T X  \`p           а           ( 8DPT X \ ` d h lp       а         0< H L P T X \  `  dhx           ȯذ           $(8 HT ` d h l p  t x  |    د    $ ( ,0@ P\ h l p t x|      ȯذ        $(@ P` p t x |          (4@D H LPT X \lp tx|              ܯ  ,048<@D HL\ l|  ̰     $4 DP \lptx|      4      3  4   $ (4 , 0483 <@D3 HLP  T X\l|    ԯ   0 4<D HLXd hlpt x |          $ , 0 4@ D\`dhl pt  x  |          $ 0  48@ X\ ` d h l pt x|      4  3      $  (,0 H LPX hl ptx|J #  J J J  Яذ        (, 0 4 8 < @ DH\ p tx |         دܰ    0 4 8 < DPXhlp t x|      (4<@DHLPXdlpx  (04 8<D TX\`dhlptx |     4(,0348 <DH`d h| 4   433 , 0 48DX \d h |    $>(, 0<4D HT4 \ `l4 t x 4    4 4 4$(,048<@DHLPTX\`dh4tx3|444433333>3>3 > 3   > 3 $(,>043 8<@>DH3LPT>X\ ` h lp|     $(,08 <@DHL4T X\3`t x|  4     $ ( 0 4 8 < @ D4 P T\3 ` p3t43       $(0HL PTXp   434343   8PT Xdh lt   (8< @DTdh lp  ȯܰ   $(@DH L PT\tx   444   (,304@D3 H`dh3l|  įܰ    $ ,0 4 8D HL4P T\ ` d l4 p t x 3  3    Ȱ  J)  $( , 04<X\J)` dltx  JB   04J)8 <DPThlp|  Яذ   $8<@D HL PTX \d hl 43    $, 0 48Hdhlptx      (@DHLPTh (,0D\htx| į̰ ,04 8<@D \`dhlp t4x4 |33   دܰ ,04< @DXh|   Я    $ ( 0 48@T X\d x| 4433 $(8X \| į̰    44 $0438D3H4LP3X` dhl J) 4   4 3 4   3  34  3$0 4 8<H \ `tx |   ذ $(,0 48<@DHPdhlp x|         $(,48< @ DHP`dhl ptx|    $4P T4`d hpt3x4|4 4   4  4   4  3              $3 (, 04 8< @D HL PT X\ `d hl pt x|          3    3        $ (, 04 8< @D HL PT X\`3dhlptx|  $(,048<@DHLPTX\`dhlptx|3    $0@ D H L Tlt|    į԰        ( ,0@H L PT\d h lt|       Яذ         $ (0 44 8<4 D H PT3 X`dhl3 p t| 4  4  4 3 3 3    ܯ    4    48 <LP T X `d h lp t4 | 3  3      43  $ (,8L PT\` d h ltˆŒ  ” œ   ¨į̰        $ (08< @ DHP X \4hlpx|ÄÈ3ÌÐÔ4ØÜàä3èìð ô ø ṵ̈    $ ( ,04H L PT\d h| ĀĈČĐ Ĕ ĘĠĴ      0 4<@D H LPdh l pxŌŔ Ř ŜŤŸ  د     ( , 08@D H LPX\ `t xƀƄ ƈ ƌƔƨƴƸİ   ( , 08@PT X ` pt|Lj nj ǐ ǔ ǜǤǬ     $8<@ DPT X`tȈȌȐ ȔȘȠȰȴȰ        48L` d hx| ɀ ɄɈɘ ɬ ɰ ɴBɸ ɼB B B B B B  $ 8 <4@DHL3PTX \ `4 d h4 |ʀʄ3 ʈ ʌ ʐ4 ʔ ʘʜʠ4ʤ ʨʬʰ4ʴ ʸʼ4 433 3 $(,3048<@DH3 LP TX \` dhl3 ptx |  ˀ˄˔ ˤ ˨˴˸ 4         $, 08 <D HP T\ `h lt ̀̈ ̌̔ ̘̜3 ̠4 ̨̤3 ̴̬  ̸̼̰         $8@ D HLPX \`hp tx̀͘ ͜Bͤ͠ ͨ ͬ Ͱʹͼ  4     3 4    ,0483 < DH LPXd h lp tx| ΀΄Έ ΌΐΔΠ Τ Ψά ΰδθ μ ̯а    $(04<@HL P TXl| π4τψ3όϘ ϜϠϸ   ,D H LTlЄЌД ИФШи,0DHP\dhptx|ф  ( 08<DLPT\dlpx҈ҐҔҜҠҤ Ҩ ҴҸ  ܯ      (< @ DHLPT\hpt x ӄӌӔӨ Ӭ Ӱ Ӵ ȯа  B   , 08DH LT`d ht x|ԀԄ Ԉ Ԍ ԐԔԘ Ԭ԰ԴJԸ Լ $( , 4 8 <@H` dtxՀՄՈ Ռ Ք ՘՜դո ռ   Яذ     $ ( ,08L Pdh lpր֔ ְ֘֬ ִָȰ    $8< @DP` d4hlt3x4|׀4ׄ׈3א>פ3ר>׬װ״ ׸ ׼԰  B ,HL\` d h l pt؀؜ؠجذ شBظؼ į԰    (DHTX \B`d hl|ٜ٘٬ٰ ٴ ٸ ټ įа   B 0L PTdhlڀڜ ڠڤڴڸ ڼB ̯ 0 @ DPTXdh4ۀۄ3ۈ4یې4۔ ۘ4 ۜ۠3 ۤ۬3۰۸3ۼ     0 D HL`d|܌ܐ ܔܘܠܴ          $ 8 <P`dh lp  tx݈ ݘݨ ݸ ݼ      ( , 0 4 8<X hxވ ޘޜޤިެްİ       $ ( ,08<  @DX ht ߀߄ߐߔߘ߬ ߼  , < @ D HLh x    ਯİ    ,8 DHTX\l | Ἧа    $ 4@ LP\`t  ⤯ⴰ    $ ( , 0 48T dt 㤯㸰   $ 04@DHX hx     䜯丰       ( 8H X\lpt到  ȯܰ     8 HT `dptx挰  ܯ    $48<@DX ht   稯缰 $(,8<@DH LPdx| 褯踰   $ (,48<@H\`dlptx |逯锰 ȯа  $ 04<PT X\dhlt ꤯ꬰ ܯ  04 8<DHLThl pt|넯댰 į̰   $ (,8<@DL`d hlx|섯쌰 į̰   $048@TX \`hlpx  ܯ  (,0 8<DX\` hlt  ܯ  4D TX\J `dl J 隷ﰰ J     0DHL X\dx|  Ȱ    $,@DH TX`tx|  $bin_cut$cut??truefail_?truecwrite_???truecnl_?truevar_???truenonvar_???trueinteger_???trueatomic_???trueis_compiled_???true+_??1?true-_??1?true*_??1?truemod_??1?true//_??1?true/_??1?truerandom_1?trueget0_1?trueput_?0?trueless_??0?truegreater_??0?trueless_eq_??0?truegreater_eq_??0?truearith_eq_??0?truearith_dif_??0?true<<_??1?true>>_??1?true/\_??1?true\/_??1?true#_??1?true\_??1?truecompare0_??1?truearg_??1?truesetarg_???0?truechange_arg_???0?truedef_???0?truerm_??0?trueset_???0?trueval_??1?truelval_??1?truesymcat_??1?truedcg_connect_1?truelist2term_?1?trueterm2list_???1?trueself_info_1?trueadd_instr_????0?truelift_heap_??0?truedet_append0_??1?truecopy_term_??1?truebb_list0_??1?trueolder_file_??0?trueseeing_telling_?1?truesee_tell_??0?trueseen_told_?0?trueseeing_telling_at_?1?truesee_tell_at_??0?truestring_op_??1?trueop0_???0?trueterm_append_??1?truefloat_fun2_???1?truefloat_fun_??1?trueinput_float_???1?truewrite_float_?0?truestrip_cont0_?1?truedcg_def_?0?truedcg_val_1?truedcg_tell_?0?truedcg_telling_1?trueiso_open_stream_??1?trueiso_close_stream_??0?trueiso_write_term_???0?trueiso_read_term_??1?trueiso_put_byte_??0?trueiso_get_byte_?1?trueiso_peek_byte_?1?trueiso_eof_?0?trueiso_lseek_???1?truebb_put_??0?truebb_get_???1?truebb_op_??1?truesetref_??0?trueunix_argc_1?trueunix_argv_?1?trueunix_getenv_?1?trueunix_access_??0?trueunix_cd_?0?trueunix_kill_??0?truequiet_1?truecreate_engine_???1?truedestroy_engine_?0?trueload_engine_???0?trueask_engine_?1?truemultitask_engines_?0?truesuspend_engine_?0?truenew_builtin_??1?truehalt_?0?truetrue_?truecall_?trueabort_?truerestart_?truefindall_store_heap_?truefindall_load_heap_?truefunctor_?truename_?trueshell_?truestat0_?truelist_asm_?truebb_reset_?trueprofile_?trueif0_?true1000 xfy ,1100 xfy ;1200 xfx -->1200 xfx :-1200 fx :-700 xfx is700 xfx =500 yfx -500 fx -500 yfx +500 fx +400 yfx /400 yfx *650 xfy .660 xfy ++700 xfx >=700 xfx >700 xfx =<700 xfx <700 xfx =\=700 xfx =:=300 fy ~200 xfy ^300 xfx mod400 yfx >>400 yfx <<400 yfx //500 yfx #500 fx #500 yfx \/500 yfx /\500 yfx \500 fx \700 xfx @>=700 xfx @=<700 xfx @>700 xfx @<700 xfx \==700 xfx ==700 xfx =..700 xfx \=900 fy not900 fy \+900 fx spy900 fx nospy1050 xfy ->1050 xfx @@1150 fx dynamic1150 fx public1150 fx module1200 xfx ::-900 yfx :600 xfx :=:950 xfy -:950 xfy =>600 xfx <=700 xfx =:700 xfx :=bu0failfail?0in_body?truebu0cwritecwrite?1in_body?truebu0cnlcnl?2in_body?truebu0varvar?3in_body?truebu0nonvarnonvar?4in_body?truebu0integerinteger?5in_body?truebu0atomicatomic?6in_body?truebu0is_compiledis_compiled?7in_body?truebu0++?in_body?arith01truebu0--?in_body?arith11truebu0**?in_body?arith21truebu0modmod?in_body?arith31truebu0////?in_body?arith41truebu0//?in_body?arith51truebu0randomrandom?in_body?arith61truebu0get0get0?in_body?arith71truebu0putput?in_body?arith80truebu0lessless?in_body?arith90truebu0greatergreater?in_body?arith100truebu0less_eqless_eq?in_body?arith110truebu0greater_eqgreater_eq?in_body?arith120truebu0arith_eqarith_eq?in_body?arith130truebu0arith_difarith_dif?in_body?arith140truebu0<<<<?in_body?arith151truebu0>>>>?in_body?arith161truebu0/\/\?in_body?arith171truebu0\/\/?in_body?arith181truebu0##?in_body?arith191truebu0\\?in_body?arith201truebu0compare0compare0?in_body?arith211truebu0argarg?in_body?arith221truebu0setargsetarg?in_body?arith230truebu0change_argchange_arg?in_body?arith240truebu0defdef?in_body?arith250truebu0rmrm?in_body?arith260truebu0setset?in_body?arith270truebu0valval?in_body?arith281truebu0lvallval?in_body?arith291truebu0symcatsymcat?in_body?arith301truebu0dcg_connectdcg_connect?in_body?arith311truebu0list2termlist2term?in_body?arith321truebu0term2listterm2list?in_body?arith331truebu0self_infoself_info?in_body?arith341truebu0add_instradd_instr?in_body?arith350truebu0lift_heaplift_heap?in_body?arith360truebu0det_append0det_append0?in_body?arith371truebu0copy_termcopy_term?in_body?arith381truebu0bb_list0bb_list0?in_body?arith391truebu0older_fileolder_file?in_body?arith400truebu0seeing_tellingseeing_telling?in_body?arith411truebu0see_tellsee_tell?in_body?arith420truebu0seen_toldseen_told?in_body?arith430truebu0seeing_telling_atseeing_telling_at?in_body?arith441truebu0see_tell_atsee_tell_at?in_body?arith450truebu0string_opstring_op?in_body?arith461truebu0op0op0?in_body?arith470truebu0term_appendterm_append?in_body?arith481truebu0float_fun2float_fun2?in_body?arith491truebu0float_funfloat_fun?in_body?arith501truebu0input_floatinput_float?in_body?arith511truebu0write_floatwrite_float?in_body?arith520truebu0strip_cont0strip_cont0?in_body?arith531truebu0dcg_defdcg_def?in_body?arith540truebu0dcg_valdcg_val?in_body?arith551truebu0dcg_telldcg_tell?in_body?arith560truebu0dcg_tellingdcg_telling?in_body?arith571truebu0iso_open_streamiso_open_stream?in_body?arith581truebu0iso_close_streamiso_close_stream?in_body?arith590truebu0iso_write_termiso_write_term?in_body?arith600truebu0iso_read_termiso_read_term?in_body?arith611truebu0iso_put_byteiso_put_byte?in_body?arith620truebu0iso_get_byteiso_get_byte?in_body?arith631truebu0iso_peek_byteiso_peek_byte?in_body?arith641truebu0iso_eofiso_eof?in_body?arith650truebu0iso_lseekiso_lseek?in_body?arith661truebu0bb_putbb_put?in_body?arith670truebu0bb_getbb_get?in_body?arith681truebu0bb_opbb_op?in_body?arith691truebu0setrefsetref?in_body?arith700truebu0unix_argcunix_argc?in_body?arith711truebu0unix_argvunix_argv?in_body?arith721truebu0unix_getenvunix_getenv?in_body?arith731truebu0unix_accessunix_access?in_body?arith740truebu0unix_cdunix_cd?in_body?arith750truebu0unix_killunix_kill?in_body?arith760truebu0quietquiet?in_body?arith771truebu0create_enginecreate_engine?in_body?arith781truebu0destroy_enginedestroy_engine?in_body?arith790truebu0load_engineload_engine?in_body?arith800truebu0ask_engineask_engine?in_body?arith811truebu0multitask_enginesmultitask_engines?in_body?arith820truebu0suspend_enginesuspend_engine?in_body?arith830truebu0new_builtinnew_builtin?in_body?arith841truebu0halthalt?in_body?arith850truebu0truetrue?0in_head?truebu0callcall?1in_head?truebu0abortabort?2in_head?truebu0restartrestart?3in_head?truebu0findall_store_heapfindall_store_heap?4in_head?truebu0findall_load_heapfindall_load_heap?5in_head?truebu0functorfunctor?6in_head?truebu0namename?7in_head?truebu0shellshell?8in_head?truebu0stat0stat0?9in_head?truebu0list_asmlist_asm?10in_head?truebu0bb_resetbb_reset?11in_head?truebu0profileprofile?12in_head?truebu0if0if0?13in_head?truebu_ctrn_inlinen_inline66?truebu_ctrn_arithn_arith74?truebu_ctrn_builtinn_builtin160?truebu_ctrn_nopn_nop174?truebu1!!?truebu1..??truebu1compilecompile??truebu1includeinclude??truebu1oror??truebu1ifif??truebu1strip_contstrip_cont??truebu1termcattermcat??truebu1add_contadd_cont??truebu1asmasm?truebu1asmasm??truebu1=..=..??truebu1::-::-??truebu1statisticsstatistics?truebu1interactiveinteractive??truebu1metacallmetacall??truebu1metatruemetatrue??truebu1expand_termexpand_term??truebu1==??truebu1->->??truebu1;;??truebu1,,??truebu1repeatrepeat?truebu1\+\+??truebu1\=\=??truebu1findall_workhorsefindall_workhorse??truebu1findallfindall??truebu1findallfindall??truebu1findall_conjfindall_conj??truebu1findall_conjfindall_conj??truebu1findall_disjfindall_disj??truebu1findall_disjfindall_disj??truebu1allall??truebu1whilewhile??truebu1skip_untilskip_until??truebu1skip_whenskip_when??truebu1find_whilefind_while??truebu1nth_answernth_answer??truebu1take_at_mosttake_at_most??truebu1drop_at_leastdrop_at_least??truebu1has_fuelhas_fuel??truebu1find_at_mostfind_at_most??truebu1all_but_at_leastall_but_at_least??truebu1forfor??truebu1argnargn??truebu1appendappend??truebu1membermember??truebu1det_appenddet_append??truebu1..??truebu1++++??truebu1lengthlength??truebu1make_cmdmake_cmd??truebu1numbervarsnumbervars??truebu1gc_callgc_call??truebu1groundground??truebu1atomatom??truebu1floatfloat??truebu1numbernumber??truebu1compoundcompound??truebu1appendNappendN??truebu1append_conjappend_conj??truebu1append_disjappend_disj??truebu1tabtab??truebu1getget??truebu1isis??truebu1exprexpr??truebu1comparecompare??truebu1====??truebu1\==\==??truebu1@<@<??truebu1@>@>??truebu1@=<@=<??truebu1@>=@>=??truebu1<<??truebu1>>??truebu1=<=<??truebu1>=>=??truebu1=:==:=??truebu1=\==\=??truebu1++??truebu1--??truebu1\\??truebu1bb_defbb_def??truebu1bb_setbb_set??truebu1bb_valbb_val??truebu1bb_rmbb_rm??truebu1bb_letbb_let??truebu1bb_change_argbb_change_arg??truebu1letlet??truebu1bb_defbb_def??truebu1bb_setbb_set??truebu1bb_valbb_val??truebu1bb_rmbb_rm??truebu1bb_letbb_let??truebu1dcg_phrasedcg_phrase??truebu1dcg_phrasedcg_phrase??truebu1:=::=:??truebu1##??truebu1powpow??truebu1loglog??truebu1sqrtsqrt??truebu1expexp??truebu1loglog??truebu1sinsin??truebu1coscos??truebu1tantan??truebu1asinasin??truebu1atanatan??truebu1acosacos??truebu1integerinteger??truebu1floatfloat??truebu1statisticsstatistics??truebu1predicate_propertypredicate_property??truebu1current_predicatecurrent_predicate??truebu1current_predicatecurrent_predicate??truebu1ctimectime??truebu1helphelp??truebu1aproposapropos??truebu1aproposapropos??truebu1unixunix??truebu1systemsystem??truebu1meta_interpretermeta_interpreter??truebu1tracetrace??truebu1dynamicdynamic??truebu1assertaasserta??truebu1assertzassertz??truebu1assertassert??truebu1retractretract??truebu1retractallretractall??truebu1instanceinstance??truebu1eraseerase??truebu1clauseclause??truebu1abolishabolish??truebu1debugdebug??truebu1consultconsult??truebu1reconsultreconsult??truebu1listinglisting?truebu1listinglisting??truebu1listinglisting??truebu1=>=>??truebu1assumeiassumei??truebu1assumelassumel??truebu1assumedassumed??truebu1assumed_clauseassumed_clause??truebu1assumed_clauseassumed_clause??truebu1-:-:??truebu1is_assumedis_assumed??truebu1is_dynamicis_dynamic??truebu1bbbb?truebu1bbbb??truebu1bb_listbb_list??truebu1bb_elementbb_element??truebu1sortsort??truebu1keysortkeysort??truebu1bagofbagof??truebu1setofsetof??truebu1^^??truebu1free_variablesfree_variables??truebu1notnot??truebu1term_charsterm_chars??truebu1vars_ofvars_of??truebu1user_erroruser_error??truebu1errmeserrmes??truebu1quietmesquietmes??truebu1mainmain?truebu1mainmain??truebu1topleveltoplevel?truebu1is_prologis_prolog??truebu1get_codeget_code??truebu1put_codeput_code??truebu1nlnl?truebu1readread??truebu1read_termread_term??truebu1top_read_termtop_read_term??truebu1warn_singletonswarn_singletons??truebu1read_with_singletonsread_with_singletons??truebu1read_clauseread_clause??truebu1read_tokensread_tokens??truebu1writewrite??truebu1printprint??truebu1writeqwriteq??truebu1portable_displayportable_display??truebu1displaydisplay??truebu1portrayportray??truebu1portray_clauseportray_clause??truebu1pp_clausepp_clause??truebu1pp_termpp_term??truebu1fast_writefast_write??truebu1ttyinttyin??truebu1ttyoutttyout??truebu1ttyputttyput??truebu1ttynlttynl?truebu1ttyprinttyprin??truebu1ttyprintttyprint??truebu1ttycwritettycwrite??truebu1ttycwritelnttycwriteln??truebu1seesee??truebu1seeingseeing??truebu1seenseen?truebu1telltell??truebu1tellingtelling??truebu1toldtold?truebu1see_atsee_at??truebu1seeing_atseeing_at??truebu1tell_attell_at??truebu1telling_attelling_at??truebu1file_search_pathfile_search_path??truebu1file_extension_listfile_extension_list??truebu1file_libraryfile_library??truebu1make_file_namemake_file_name??truebu1find_filefind_file??truebu1exists_fileexists_file??truebu1see_or_failsee_or_fail??truebu1flushflush?truebu1sreadsread??truebu1swriteswrite??truebu1bu0bu0??truebu1bu1bu1??truebu1current_opcurrent_op??truebu1opop??truebu1is_builtinis_builtin??truebu1editedit??truebu1my_editmy_edit??truebu1editedit?truebu1eded?truebu1textedittextedit?truebu1emacsemacs?truebu1picopico?truebu1notepadnotepad?truebu1vivi?truebu1coco?truebu1current_user_filecurrent_user_file??truebu1lsls?truebu1dirdir?truebu1make_applmake_appl??truebu1make_executable_unix_applmake_executable_unix_appl??truebu1makemake?truebu1makemake??truebu1makemake??truebu1makemake??truebu1makemake??truebu1make0make0??truebu1cmakecmake?truebu1cmakecmake??truebu1cmakecmake??truebu1kmakekmake?truebu1kcmakekcmake?truebu1tmaketmake?truebu1tmaketmake??truebu1tmaketmake??truebu1ctracectrace?truebu1bootboot?truebu1add_trueadd_true??truebu1gc_readgc_read??truebu1gc_read_clausegc_read_clause??truebu1do_bodydo_body??truebu1tr_bodytr_body??truebu1ith_clauseith_clause??truebu1char_in_cmdchar_in_cmd??truebu1show_code0show_code0??truebu1bu_ctrbu_ctr??truebu1patch_itpatch_it??truebu1lwritelwrite??truebu1module_callmodule_call??truebu1modulemodule??truebu1modulemodule??truebu1is_moduleis_module??truebu1modulesmodules??truebu1current_modulecurrent_module??truebu1module_predicatemodule_predicate??truebu1module_namemodule_name??truebu1publicpublic??truebu1is_publicis_public??truebu1gensymgensym??truebu1init_gensyminit_gensym??truebu1spy_goalspy_goal??truebu1spyspy??truebu1spyingspying??truebu1nospynospy??truebu1otherwiseotherwise?truebu1falsefalse?truebu1copy_termcopy_term??truebu1phrasephrase??truebu1phrasephrase??truebu1nth_membernth_member??truebu1member_imember_i??truebu1savedsaved??truebu1stat_dictstat_dict??truebu1set_c_thresholdset_c_threshold??truebu1set_c_thresholdset_c_threshold??truebu1set_c_traceset_c_trace??truebu1CC??truebu1halthalt?truebu1::??truestat_dictruntimeruntime0?truestat_dictglobal_stackglobal_stack1?truestat_dictlocal_stacklocal_stack2?truestat_dicttrailtrail3?truestat_dictcodecode4?truestat_dictstringsstrings5?truestat_dictsymbolssymbols6?truestat_dicthtablehtable7?truestat_dictbboardbboard8?trueuser_error_???basic??prolog:error_messageerrmes_???pretty??prolog:error_messageprolog:error_message_0?5010prolog:portray_error???$bin_cut?tell?fail?user?tellquietmes_0?40?ttyprintquietmes_?trueprolog:portray_errorbasicbasic?>>> ???: ????trueprolog:portray_errorprettyprettywrite?write: cnlportray_clause??*** ?writemember_.???truemember_.??membernth_member_??1?member_imember_i_?.???truemember_i_.???10member_i:_module_callmodule_call_?$bin_cut?call??is_publicmodule_call_call???module_predicatemodule_predicate_.??module_name???=..???.?????=..module_name_?????.?[]??.58[]name??det_append???name???.???namemodule_name_?.?.?[]should_be_nonvar?user_errormodule_?bb_letmodule_name???currentmodule_namebb_letmodule_member??prolog:public0?fail??modulemodule_?truecurrent_module_$bin_cut?=???currentmodule_namebb_valcurrent_moduleuseruser?trueis_module_?????module_name??bb_valis_module_bb_element???=??+?/?0/module_name0??bb_listmodules_??is_module?findallprolog:hide_atom_$bin_cut???prolog:hide_atom0prolog:hide_atom_??trueprolog:hide_atom0_$bin_cut?fail?usercurrent_moduleprolog:hide_atom0_$bin_cut?fail?is_publicprolog:hide_atom0_module_predicate??????current_moduleprolog:public0//??current_module?bb_defpublic??$bin_cut???functorprolog:public0_?public?bad or repeated declarationerrmespublic,,???public???publicpublic_prolog:public0is_public_??prolog:is_publicprolog:is_public_?$bin_cut?=???public??bb_valprolog:is_public_?is_builtininit_gensym_??gensym?0bb_letgensym_symcat??????prolog:gensym_noprolog:gensym_no_gensym?0??11gensym??0?trueprolog:gensym_no_?1gensym??0?truecurrent_op_??????prolog:get_opcurrent_op_if????valopmark??prolog:get_op???,?fail$bin_cut??010000?forop_???0?trueprolog:get_op_prolog:get_op0????????prolog:op_typeprolog:get_op0_??1??1?00?trueprolog:op_typexfyxfyinfixop?trueprolog:op_typexfxxfxinfixop?trueprolog:op_typeyfxyfxinfixop?trueprolog:op_typefxfxprefixop?trueprolog:op_typefyfyprefixop?trueprolog:op_typexfxfpostfixop?trueprolog:op_typeyfyfpostfixop?trueis_dynamic_?$first0?trueis_assumed_$assumed?0???truespy_goal_tracespying_yes?spying?1?truespy//??\+?$bin_cut?bb_letspying?yes?is_builtin??functorspy_??unable_to_spy_on?user_errornospy//???bb_rmspying???functorprolog:is_builtin_nonvar_bu1?$bin_cut????metacallprolog:is_builtin_nonvar_cont?prolog:bu????termcatprolog:is_builtin_var_bu1??metacallprolog:is_builtin_var_strip_cont???????prolog:buis_builtin_???prolog:is_builtin_nonvaris_builtin_prolog:is_builtin_varinteractive_????=?yes=?noprolog:is_interactiveifinteractive_??prolog:interactive0prolog:is_interactive_?current_op1199fx?-\+prolog:interactive0yesyes?1200fx?-opprolog:interactive0nono?1199fx?-opexpand_term_prolog:portable_expand_termprolog:std_expand_term_prolog:portable_expand_termstrip_cont_-???1?truemetatrue_metacall??strip_contmetacall_?meta_interpreter?call_ifdef?user_errorno meta_interpreter for undefined goal??prolog:call_ifdefotherwise_truefalse_?trueprolog:call_ifdef_????callprolog:call_ifdef_??call=_??true->_$bin_cut?call???call;->->???????if;_?call;_??callor_?callor_??callif_$bin_cut?call???callif_??call,_call???call\+_$bin_cut?fail??call\+_?true\=_????true\=_?truehalt_00truerepeat_truerepeat_repeatfindall_workhorse_??0findall_store_heap????callfindall_workhorse_??findall_load_heapfindall_?.??.0findall_workhorsefindall_?[]findallfindall_conj_?truefindall_conjfindall_conj_?,??,0findall_workhorsefindall_disj_?failfindall_disjfindall_disj_?;??;0findall_workhorsewhile_if?true??call?,?fail$bin_cut???callskip_until_if?fail??call?$bin_cut???callskip_when_if?failtrue?call???callnth_answer_?10??s?has_fuel?skip_untiltake_at_most_??s?has_fuel?whiledrop_at_least_??s?has_fuel?skip_whenhas_fuel_1?0?00?101??0?truefind_while_while??????findallfind_at_most_take_at_most??????findallall_but_at_least_drop_at_least??????findallall_findall???prolog:share_vars????-??call???prolog:are_sharedprolog:are_shared_vars??free_variables??[]??[]?free_variablesprolog:share_vars[][][]?trueprolog:share_vars..??-???.???prolog:share_varsgc_read_?read?.?[]?findallgc_read_clause_?read_clause?.?[]?findallgc_call_call?member????findallfor_???0?truefor_??0?10forargn_?????1?trueargn_for?1?arg????????functornumbervars$VAR$VAR?????11truenumbervars_??????truenumbervars..???numbervars??????numbervarsnumbervars_prolog:numbervars0????????functorprolog:numbervars_?????trueprolog:numbervars_?10??0prolog:numbervars????????numbervarsground_greater?0$bin_cut?fail?0numbervarsground_?truecopy_term_0?1?trueprolog:save_term_1?1?trueflush_20trueprolog:see_or_fail_0?0?trueexists_file_seen??prolog:see_or_failsread_0?1?trueswrite_1?1?truesystem[][]??truesystem..???.??shell???namesystem_??shell._[]?compileinclude_compilecompile_prolog:compile_mem?abort??find_filefile_search_path..[]?.??.??.?[].109?.121?.112?.114?.111?.103?.115?.47[].46.46.47.115.114.99[]prolog:getenv_path???.112.114.111.103.115[]?prolog:getenv_pathfile_extension_list..??.??.[][].46?.112?.114?.111[].46?.112?.108[]?truefile_library..?[].?[].46?.112?.108[].46.46.47.108.105.98.114.97.114.121[]?prolog:getenv_pathprolog:getenv_path_??.47[]unix_getenvBP_PATH?,?det_append???name??=?[]det_append???det_append???????ifmake_file_name_?member??name??det_append???det_append???name?????memberstatistics_.??.?[]stat0?????stat_dictstatistics_cwrite?cwrite=cwrite?cnlfail??statisticsstatistics_trueatom_?????trueatom_???truefloat_????$float??truenumber_????truenumber_floatcompound_??atomic??\+=.._????1?true=.._?.[]1?trueprolog:term2list_?.[]1?trueprolog:term2dlist_?.?1?truedet_append_-????1?trueprolog:det_append_-????1?trueappendN_?[]prolog:appendNprolog:appendN[][]??trueprolog:appendN..??-????1prolog:appendNprolog:append_body_??prolog:append_bodyprolog:append_body_det_append0???if????compare0??==??=..?.?.?.?[]-???2?functorappend_conj_?,??,????trueprolog:append_bodyappend_disj_?;??;????failprolog:append_body._.???true++_-[]???1?trueappend_-????1?prolog:general_appendprolog:general_append[][]??trueprolog:general_append..??.??prolog:general_appendlength_?????0?prolog:get_lengthlength_??0?prolog:make_lengthprolog:get_length[][]??trueprolog:get_length..???10prolog:get_lengthprolog:make_length[][]???trueprolog:make_length..????0?10prolog:make_lengthtab_integer?$bin_cut?prolog:tab0???exprtab_??in tab/1: should evaluate to an integer?user_errorprolog:tab0_?put32fail??1forprolog:tab0_?trueget_get0?or??$bin_cut?=???greater?32less?0?repeatis_$bin_cut?=??????expris_is??error_in_is?errmesexpr_??????trueexpr_$bin_cut?=????floatexpr_????variable_in_is?user_errorexpr_$bin_cut?arg1??arg2??expr??expr??=..??call?$bin_cut??.?.?.?.?[]?2functorexpr_arg1??expr??=..??call?$bin_cut??.?.?.?[]?1functorcompare_??1?true+_??true-_0?1?true\_0?1?true==_=???1?true\==_??0?prolog:$noteq@<_<???1?true@>_>???1?true@=<_??0?prolog:$lesseq@>=_??0?prolog:$gteq<_expr??less????expr>_expr??greater????expr=<_expr??less_eq????expr>=_expr??greater_eq????expr=:=_expr??arith_eq????expr=\=_expr??arith_dif????exprprolog:$lesseq<<?trueprolog:$lesseq==?trueprolog:$gteq>>?trueprolog:$gteq==?trueprolog:$noteq<<?trueprolog:$noteq>>?truebb_def_def??????savedbb_set_set??????savedbb_val_??0??copy_termbb_rm_??0?truebb_change_arg_let???change_arg???????savedbb_let_??0?bb_setbb_let_bb_defbb_def_??????bb_defbb_set_??????bb_setbb_val_??????bb_valbb_rm_????bb_rmbb_let_??????bb_letprolog:bb_default_val_?$bin_cut??bb_valprolog:bb_default_val_??truesaved_$bin_cut?=????prolog:save_termsaved_prolog:save_term??$bin_cut?=????prolog:bb_gcsaved_?/saved2prolog:bb_failsaved_abort?restartlet_???0??truelet_???0?trueprolog:def_???0?trueprolog:set_???0?trueprolog:val_??1?trueprolog:let_??????letprolog:rm_??0?true#_1?truedcg_phrase_???1??dcg_phrasedcg_phrase_0?0?0dcg_val[]dcg_tell????call:=:##??????1true:=:_??1?trueprolog:bb_gc_310bb_resetprolog:bb_put_back???copy_termprolog:bb_put_back[][]?trueprolog:bb_put_back..??.??.??.??.??functor???prolog:bb_put_1???prolog:bb_put_back???functorprolog:bb_put_1_set???$bin_cut?=?????prolog:save_termprolog:bb_put_1_+????prolog:bb_failprolog:bb_fail_.?.?[]user_error???blackboard overflow, left only?culprit?bboard?statisticsprolog:try_float_.??.??integer?box??atom..??atom??name??input_float?????prolog:try_float_expprolog:try_float_.??integer?box???trueprolog:try_float_exp..??atome$bin_cut???prolog:try_float_exp1prolog:try_float_exp..??atom??.?[]??.101[].??name??integer?$bin_cut???nameprolog:try_float_exp_?0?trueprolog:try_float_exp1..??.??integer?box??atom-???0?1trueprolog:try_float_exp1..??.??integer?box??atom+???trueprolog:float_minus_$float000??1?truepow_pow??1?truelog_log??1?truesqrt_pow?$float02679111680?1?trueexp_exp?1?truelog_log?1?truesin_sin?1?truecos_cos?1?truetan_tan?1?trueatan_T?1?trueasin_S?1?trueacos_C?1?trueinteger_integer?1?truefloat_$float000??1?truectime_?.?.?[]runtimestatisticsprolog:is_predicate_????trueprolog:is_predicate_$bin_cut???is_dynamicprolog:is_predicate_is_assumedpredicate_property_???prolog:predicate_property0predicate_property_functor???prolog:predicate_property0??????prolog:generate_a_predicateprolog:predicate_property0_$bin_cut?or???=?dynamic=?interpreted?is_dynamicprolog:predicate_property0_$bin_cut?or???=?assumed=?interpreted?is_assumedprolog:predicate_property0_built_in$bin_cut??is_builtinprolog:predicate_property0_compiled???truecurrent_predicate_???functor??????prolog:is_predicatecurrent_predicate_functor?????prolog:generate_a_predicatecurrent_predicate//???????prolog:is_predicate?$bin_cut???functorcurrent_predicate//????prolog:generate_a_predicateprolog:predicate_key0//$assumed0????trueprolog:predicate_key0_??/$first0trueprolog:predicate_key0//predmark0predmark?/??/???00?11trueprolog:generate_a_predicate_000=??+??prolog:predicate_key0?????/?????bb_elementhelp_aproposapropos_apropos??sort??member??write?cnlfail??findallapropos_?trueapropos_-??/??predicate_property??functor???name??prolog:near_match????nameprolog:near_match_???trueprolog:near_match_?$bin_cut????prolog:append3prolog:near_match_?prolog:append3????$bin_cut??.???prolog:append3prolog:append3_append??????appendprolog:unix_cd_HOME0?0trueprolog:unix_argv_??0?10,?unix_argv??for?1?findallunixargcargc??1trueunixargvargv?prolog:unix_argvunixgetenvgetenv???unix_getenv??errmesno such environment variable?trueifunixaccessaccess?????0trueunixcdcd???0trueunixcdcd?prolog:unix_cdunixkillkill?????0trueprolog:try_dcg_expansion_-->??$bin_cut?????prolog:dcg_ruleprolog:try_dcg_expansion_??dcg expansion error->?errmesprolog:dcg_rule-->-->??prolog:dcg_body????prolog:dcg_conj???=???:-???prolog:dcg_headprolog:dcg_head@@@@??true?@@???prolog:dcg_body??????prolog:dcg_bodyprolog:dcg_head_true???prolog:dcg_goalprolog:dcg_head,,???prolog:dcg_body????????prolog:dcg_goalprolog:dcg_head_true???prolog:dcg_goalprolog:dcg_goal_?+???1?trueprolog:dcg_body_?????phrase????trueprolog:dcg_body,,???prolog:dcg_body????prolog:dcg_conj???????prolog:dcg_bodyprolog:dcg_body->->??->???prolog:dcg_body???????prolog:dcg_bodyprolog:dcg_body;;??;???prolog:dcg_disj??????prolog:dcg_disjprolog:dcg_body{}{}?????trueprolog:dcg_body!!!???trueprolog:dcg_body[][]true???trueprolog:dcg_body..???prolog:dcg_body????prolog:dcg_conj???????prolog:dcg_termprolog:dcg_body_prolog:dcg_goalprolog:dcg_term_C????trueprolog:dcg_disj_prolog:dcg_disj0????????prolog:dcg_bodyprolog:dcg_disj0_=???1?=??????prolog:dcg_conjprolog:dcg_disj0_???trueprolog:dcg_conj_true???trueprolog:dcg_conj_prolog:dcg_CONJprolog:dcg_CONJtruetrue???trueprolog:dcg_CONJ,,??,???prolog:dcg_CONJprolog:dcg_CONJ_,???trueC..?????truephrase_?[]phrasephrase_=??=??call????prolog:dcg_bodyprolog:portable_expand_term-->-->???????prolog:try_dcg_expansionprolog:portable_expand_term-->>-->>?????try_edcg_expansion???errmesexpected_to_expand?prolog:call_ifdefprolog:portable_expand_term_??trueprolog:default_prologbinprologbinprolog?trueprolog:peval_ioget_codeget_code??get0?trueprolog:peval_ioput_codeput_code??put?trueprolog:peval_ionlnlcnl?trueprolog:peval_ioseeingseeing??seeing_telling0?trueprolog:peval_iotellingtelling??seeing_telling1?trueprolog:peval_ioseeing_atseeing_at??seeing_telling_at0?trueprolog:peval_iotelling_attelling_at??seeing_telling_at1?trueprolog:peval_iofast_writefast_write??cwrite?truefast_write_???trueget_code_1?trueput_code_?0?truenl_?truesee_0?0??truesee_??unable_to_see?user_errorseeing_01?truetelling_11?truetell_1?0??truetell_??unable_to_tell?user_errorseen_00truetold_10truesee_at_0?0??truesee_at_??unable_to_see_at?user_errortell_at_1?0??truetell_at_??unable_to_tell_at?user_errorseeing_at_01?truetelling_at_11?truefind_file_$bin_cut?file_search_path?file_extension_list?prolog:find_file1??????atomfind_filelibrarylibrary?$bin_cut?file_library??prolog:find_file1??????atomfind_file_?bad file name?user_errorprolog:find_file1_?????00????prolog:find_file2prolog:find_file2_$bin_cut?see??????prolog:see_a_fileprolog:find_file2_findall???findall???errmes???file_not_found?+??+??,?name??member??,?name??member???seeprolog:see_a_file_prolog:see_or_fail?seen??make_file_nameread_clause_warn_singletons?????read_with_singletonsread_with_singletons_prolog:singletons????prolog:r_termwarn_singletons..????0?10.??fail???prolog:warn_singletons1warn_singletons_?trueprolog:warn_singletons1:-:-???trueprolog:warn_singletons1_:-??seeing_telling_at0?prolog:melt_varnames?ttyout?$bin_cut??,?,?,nl,?,?,?,nlnlcwrite:-...print?print=> print** warning singleton_variables, byte=>?print???add_trueprolog:melt_varnames[][]?trueprolog:melt_varnames..??var???prolog:melt_varnamesread_??prolog:r_termtop_read_term_read_termread_term_prolog:r_vars?????prolog:r_termprolog:r_vars[][][]?trueprolog:r_vars..??var???.??=??prolog:r_varsprolog:singletons_??member??var??s0??findallprint_prolog:portable_printwrite_prolog:portable_writewriteq_prolog:portable_writeqttyin_00call?see??user?seettyout_10call?flushtell??user?tellttyprin_write??ttyoutttyprint_,?nlwrite??ttyoutttycwrite_cwrite??ttyoutttycwriteln_,?nlcwrite??ttyoutttynl_?nlttyoutttyput_put??ttyoutdisplay_portable_display??ttyoutprolog:r_term_read_tokens??prolog:r_and_check??$bin_cut?=????repeatprolog:r_and_check_?prolog:all_read??1200?prolog:rtprolog:r_and_check_?prolog:syntax_errorprolog:all_read[][]??trueprolog:all_read_??.operator.expected.after.expression[]?prolog:syntax_errorprolog:expect_.????trueprolog:expect_?.?.or.operator.expected[]?prolog:syntax_errorprolog:prefixop_??$bin_cut??prefixopfy?prolog:get_op0prolog:prefixop_?-?1??prefixopfx?prolog:get_op0prolog:postfixop_??$bin_cut??postfixopyf?prolog:get_op0prolog:postfixop_?-?1??postfixopxf?prolog:get_op0prolog:infixop_??$bin_cut?-?1??infixopxfx??prolog:get_op0prolog:infixop_??$bin_cut?-?1??infixopxfy??prolog:get_op0prolog:infixop_??-?1??infixopyfx??prolog:get_op0prolog:ambigop_prolog:infixop????????prolog:postfixopprolog:rt[][]?.expression.expected[][]prolog:syntax_errorprolog:rt..??????????prolog:rtsprolog:rtsvarvar??.(??prolog:r_args???$bin_cut?prolog:exprtl0??????apply?.??999??prolog:rtprolog:rtsvarvar?????prolog:exprtl0prolog:rtsatomatom-.??integer?box??0?0?prolog:exprtl0prolog:rtsatomatom-.??atom?prolog:float_minus??$bin_cut?prolog:exprtl0??????floatprolog:rtsatomatom?.(??prolog:r_args???=..??$bin_cut?prolog:exprtl0??????.?.??999??prolog:rtprolog:rtsatomatom?$bin_cut?prolog:after_prefix_op???????????prolog:prefixopprolog:rtsatomatom????prolog:exprtl0prolog:rtsintegerinteger?box?????prolog:exprtl0prolog:rts[[.]??[]prolog:exprtl0prolog:rts[[??prolog:r_list???$bin_cut?prolog:exprtl0??????.??999??prolog:rtprolog:rts((??prolog:expect)??$bin_cut?prolog:exprtl0??????1200???prolog:rtprolog:rts((((??prolog:expect)??$bin_cut?prolog:exprtl0??????1200???prolog:rtprolog:rts{{.}??{}prolog:exprtl0prolog:rts{{??prolog:expect}??$bin_cut?prolog:exprtl0??????{}?1200??prolog:rtprolog:rtsstringstring????prolog:exprtl0prolog:rts_?.?.cannot.start.an.expression[]?prolog:syntax_errorprolog:r_args..,?.???$bin_cut?prolog:r_args????999??prolog:rtprolog:r_args..)?[]???trueprolog:r_args_??.,).expected.in.arguments[]?prolog:syntax_errorprolog:r_list..,?.???$bin_cut?prolog:r_list????999??prolog:rtprolog:r_list..|???$bin_cut?prolog:expect]???999??prolog:rtprolog:r_list..]?[]???trueprolog:r_list_??.|].expected.in.list[]?prolog:syntax_errorprolog:after_prefix_op_???0?.prefix.operator.?.in.context.with.precedence.?[]??prolog:syntax_errorprolog:after_prefix_op_prolog:prefix_is_atom??prolog:exprtl?????????prolog:peepopprolog:after_prefix_op_=..??$bin_cut?prolog:exprtl???????.?.?[]?????prolog:rtprolog:peepop..??.(?atom??.??.(?atom??trueprolog:peepop..??atom??.??infixop????prolog:infixopprolog:peepop..??atom??.??postfixop???prolog:postfixopprolog:peepop_??trueprolog:prefix_is_atom..??prolog:prefix_is_atomprolog:prefix_is_atominfixopinfixop??????0trueprolog:prefix_is_atompostfixoppostfixop??????0trueprolog:prefix_is_atom))?trueprolog:prefix_is_atom]]?trueprolog:prefix_is_atom}}?trueprolog:prefix_is_atom||?1100?0trueprolog:prefix_is_atom,,?1000?0trueprolog:prefix_is_atom[][]?trueprolog:exprtl0..??atom?$bin_cut?or???prolog:exprtl?0????.??infixop????prolog:exprtl?0????.??postfixop??????prolog:ambigopprolog:exprtl0..??atom?$bin_cut?prolog:exprtl?0?????.??infixop?????prolog:infixopprolog:exprtl0..??atom?$bin_cut?prolog:exprtl?0?????.??postfixop????prolog:postfixopprolog:exprtl0..,??10000?$bin_cut?prolog:exprtl?1000?????,??1000??prolog:rtprolog:exprtl0..|??11000?$bin_cut?prolog:exprtl?1100?????;??1100??prolog:rtprolog:exprtl0..??$bin_cut?prolog:syntax_error???.?.follows.expression[].??prolog:cant_follow_exprprolog:exprtl0_???trueprolog:cant_follow_expratomatom?atom?trueprolog:cant_follow_exprvarvar?variable?trueprolog:cant_follow_exprintegerinteger?integer?trueprolog:cant_follow_exprstringstring?string?trueprolog:cant_follow_expr((((bracket?trueprolog:cant_follow_expr((bracket?trueprolog:cant_follow_expr[[bracket?trueprolog:cant_follow_expr{{bracket?trueprolog:exprtl..??infixop??????0??0?=..??prolog:exprtl???????.?.?.?[]???prolog:rtprolog:exprtl..??postfixop?????0??0?.?.?[]prolog:peepop??prolog:exprtl???????=..prolog:exprtl..,??10000?10000?$bin_cut?prolog:exprtl?1000?????,??1000??prolog:rtprolog:exprtl..|??11000?11000?$bin_cut?prolog:exprtl?1100?????;??1100??prolog:rtprolog:exprtl_???trueprolog:syntax_error_0000prolog:start_syntax_error???see?fail?user?seeprolog:start_syntax_error_?display?prolog:display_list?length??bb_letsyntax_errorlength?$bin_cut??** SYNTAX ERROR: byte=?displayprolog:start_syntax_error_?trueprolog:syntax_error_00prolog:finish_syntax_error?see?fail?user?seeprolog:finish_syntax_error_syntax_errorlength0-???prolog:display_list??$bin_cut???lengthprolog:display_list..??prolog:display_token?$bin_cut?prolog:display_list??32?ttyputprolog:display_list[][]?ttynlprolog:display_list_0$bin_cut?prolog:display_list?99999? displayprolog:display_list..??ttyput32-?1?$bin_cut?prolog:display_list????prolog:display_tokenprolog:display_list[][]?ttynlprolog:display_tokenatomatom?$bin_cut?write_float???floatprolog:display_tokenatomatom??displayprolog:display_tokenvarvar???displayprolog:display_tokenintegerinteger?box???displayprolog:display_tokenstringstring??.?[]??.34[].??.?[]name??display???det_appendprolog:display_token_displayread_tokens_append?[]?$bin_cut?=??=???32??prolog:r_toksread_tokens..?[]atomend_of_file[]?trueprolog:r_toks-1-1???trueprolog:r_toks_?320?0prolog:r_toksprolog:r_toks3737?get0?prolog:is_terminator?$bin_cut?arith_dif?-1get0?prolog:r_toks????repeatprolog:r_toks4747?0prolog:r_solidusprolog:r_toks3333.??atom!?0prolog:r_after_atomprolog:r_toks4040.((??0prolog:r_toksprolog:r_toks4141.)??0prolog:r_toksprolog:r_toks4444.,??0prolog:r_toksprolog:r_toks5959.??atom;?0prolog:r_toksprolog:r_toks9191.[??0prolog:r_toksprolog:r_toks9393.]??0prolog:r_toksprolog:r_toks123123.{??0prolog:r_toksprolog:r_toks124124.|??0prolog:r_toksprolog:r_toks125125.}??0prolog:r_toksprolog:r_toks4646?0prolog:r_fullstopprolog:r_toks3434.??string??prolog:r_toks????34?prolog:r_stringprolog:r_toks3939.??atom??name??prolog:r_after_atom????39?prolog:r_stringprolog:r_toks_.??var??$bin_cut?prolog:r_name???or??$bin_cut?prolog:r_toks????,?=?_=?.95[],?,?prolog:r_lookup????name??=?.???prolog:is_majprolog:r_toks_$bin_cut?prolog:r_integer????prolog:r_toks???prolog:try_float??????prolog:is_numprolog:r_toks_.??atom?$bin_cut?prolog:r_name???name??prolog:r_after_atom?????prolog:is_minprolog:r_toks_.??atom?0name??prolog:r_after_atom????.????prolog:r_symbolprolog:r_after_atom4040.(??0prolog:r_toksprolog:r_after_atom_prolog:r_toksprolog:r_string_????0???prolog:r_stringprolog:r_string-1-1-1ttyput?displaytokenttyput?ttynl$bin_cut?fail?! end of file in: displayprolog:r_string_????0??prolog:more_stringprolog:r_string_.?????prolog:r_stringprolog:more_string_??.??????prolog:r_stringprolog:more_string_[]??trueprolog:patch_slash..((??.(??trueprolog:patch_slash_??trueprolog:r_solidus4242?0prolog:r_toks??????prolog:r_solidusprolog:r_solidus_.??atom?name??prolog:r_toks???prolog:patch_slash???.47??prolog:r_symbolprolog:r_solidus-1-1-1?ttynl?! end_of_file in /*.. commentdisplayprolog:r_solidus42420?470?prolog:r_solidusprolog:r_solidus424232??trueprolog:r_solidus_0prolog:r_solidusprolog:r_name_.??$bin_cut?get0?prolog:r_name????prolog:is_alpha_numprolog:r_name_[]??trueprolog:r_symbol_.??get0?prolog:r_symbol????prolog:is_specprolog:r_symbol_[]??trueprolog:r_fullstop-1-1?ttynlfail?! end_of_file just after full_stopdisplayprolog:r_fullstop_[]?320??trueprolog:r_fullstop_.??atom?name??prolog:r_toks????.46??prolog:r_symbolprolog:r_integer_???4800.?[]??.46[]=???.?.?????prolog:r_intprolog:r_int-1-1???trueprolog:r_int39390?.39?.?[]?1?-101trueprolog:r_int3939$bin_cut??0?prolog:r_digitsprolog:r_int_????10???prolog:r_digsprolog:r_digits_??????0?-10?????prolog:r_digsprolog:r_digs_.???480?570???0?480??0?????prolog:r_digitsprolog:r_digs_??[]?trueprolog:r_lookup..??var???????prolog:r_varcountprolog:r_lookup..??prolog:r_lookupprolog:r_varcount_.?[]??.95[]???s1?trueprolog:r_varcount_?????s??trueprolog:r_varcountss1?trueprolog:is_alpha_num_?970?1220?trueprolog:is_alpha_num_?650?900?trueprolog:is_alpha_num_?480?570?trueprolog:is_alpha_num9595?trueprolog:is_alpha_num_prolog:is_latin1_minprolog:is_alpha_num_prolog:is_latin1_majprolog:is_maj_?650?900?trueprolog:is_maj9595?trueprolog:is_maj_prolog:is_latin1_majprolog:is_min_?970?1220?trueprolog:is_min_prolog:is_latin1_minprolog:is_num_?480?570?trueprolog:is_latin1_maj_?1920?2140?trueprolog:is_latin1_maj_?2160?2220?trueprolog:is_latin1_min_?2230?2460?trueprolog:is_latin1_min_?2480?2550?trueprolog:is_terminator1010?trueprolog:is_terminator1313?trueprolog:is_terminator-1-1?trueprolog:is_spec3535?trueprolog:is_spec3636?trueprolog:is_spec3838?trueprolog:is_spec4242?trueprolog:is_spec4343?trueprolog:is_spec4545?trueprolog:is_spec4646?trueprolog:is_spec4747?trueprolog:is_spec5858?trueprolog:is_spec6060?trueprolog:is_spec6161?trueprolog:is_spec6262?trueprolog:is_spec6363?trueprolog:is_spec6464?trueprolog:is_spec9292?trueprolog:is_spec9494?trueprolog:is_spec9696?trueprolog:is_spec126126?trueportable_display_?displayprolog:w_outprolog:portable_print_?printprolog:w_outprolog:portable_write_?writeprolog:w_outprolog:portable_writeq_?writeqprolog:w_outprolog:w_out_fail?1200punct?prolog:w_outprolog:w_out_?trueprolog:maybe_paren_punct??0??0?trueprolog:maybe_paren_??trueprolog:maybe_spacepunctpunct??trueprolog:maybe_space_???320trueprolog:maybe_spacequotequotealpha??320trueprolog:maybe_space_?trueprolog:put_string[][]?trueprolog:put_string..???0prolog:put_stringprolog:put_string[][]??0trueprolog:put_string..?????0?0?prolog:put_stringprolog:put_string..???0prolog:put_stringprolog:w_variable_???trueportray_writeprolog:w_out_alpha???prolog:w_variable???alphaprolog:maybe_spaceprolog:w_out$VAR$VAR?????prolog:w_VARprolog:w_out_alpha??,?prolog:maybe_space?otherless?0prolog:maybe_space?alpha$bin_cut?cwrite???orprolog:w_out_printalpha$bin_cut??portrayprolog:w_out_punctcurrent_op???greater??$bin_cut?put40or??$bin_cut?put41?,?prolog:w_atom??punct?=?writeqcwrite??atomprolog:w_out_$bin_cut?prolog:w_atom??????atomprolog:w_out_displaypunct?prolog:w_atom?display??prolog:w_args0??40display??functorprolog:w_out{}{}?punct?1230put125?1200punct??prolog:w_outprolog:w_out..??punct?910prolog:w_tail???999punct??prolog:w_outprolog:w_out,,???prolog:w_out??999??put44prolog:w_out??1000punct?prolog:maybe_paren1000?41???1000?40??prolog:maybe_parenprolog:w_out_alphaor??$bin_cut?write_float??,?prolog:maybe_space?otherless?0prolog:maybe_space?alphafloatprolog:w_out_prolog:w_out???????????functorprolog:w_out11,?-?1?current_op?fx?,?=??current_op?fy?$bin_cut?prolog:maybe_paren??40??prolog:w_atom????arg1??prolog:w_out?????prolog:maybe_paren??41?????orprolog:w_out11,?-?1?current_op?xf?,?=??current_op?yf?$bin_cut?prolog:maybe_paren??40??arg1??prolog:w_out?????prolog:w_atom????prolog:maybe_paren??41?????orprolog:w_out22,?,?=??-?1?current_op?xfy?or?,?,?=??-?1?current_op?yfx?,?,?=??-?1?current_op?xfx?$bin_cut?prolog:maybe_paren??40??arg1??prolog:w_out?????prolog:w_oper?????arg2??prolog:w_out?????prolog:maybe_paren??41?????orprolog:w_out_punctprolog:w_args0??40??????prolog:w_atomprolog:w_oper_?7000?????prolog:w_atomprolog:w_oper_?punct320put32?punct?prolog:w_atomprolog:w_VAR_alpha???00?mod?26?+?65?put?or??$bin_cut??less?26,?cwrite?//?26??alpha?prolog:maybe_spaceprolog:w_VAR_$bin_cut?prolog:w_atom?write???atomprolog:w_VAR_punctprolog:w_args01?40??$VAR?$VAR??prolog:w_atomprolog:w_atom!!punct??330trueprolog:w_atom;;punct??590trueprolog:w_atom[][]punct??910930trueprolog:w_atom{}{}punct??12301250trueprolog:w_atom..writeqquote??.39.46.39[]prolog:put_stringprolog:w_atom_or??$bin_cut??,?,?prolog:put_string?prolog:maybe_space??prolog:classify_name??or?,?prolog:put_string?=?alpha,?,?,?,?prolog:put_string?39put39prolog:maybe_space??=?quote=?writeq??nameprolog:classify_name..??alpha$bin_cut?prolog:classify_alpha_tail??prolog:is_minprolog:classify_name..??otherprolog:classify_other_tail??prolog:is_specprolog:classify_alpha_tail[][]?trueprolog:classify_alpha_tail..??prolog:classify_alpha_tail???prolog:is_alpha_numprolog:classify_other_tail[][]?trueprolog:classify_other_tail..??prolog:classify_other_tail???prolog:is_specprolog:w_args_???410trueprolog:w_args_?0?10??0prolog:w_args???44???999punct??prolog:w_outprolog:w_tail_???1240put93?prolog:w_variableprolog:w_tail[][]??930trueprolog:w_tail..???440prolog:w_tail???999punct?prolog:w_outprolog:w_tail_1240put93?999punct?prolog:w_outpp_term_write?cnlfail?0?numbervarspp_term_?truepp_clause_portray_clauseportray_clause_fail??prolog:pp_clause0portray_clause_?trueprolog:pp_clause0:-:-???prolog:l_clauses?028?0?numbervarsprolog:pp_clause0:-:-??+??prolog:portable_writeq?prolog:l_clauses?028$bin_cut??0?numbervarsprolog:pp_clause0_:-?true?prolog:pp_clause0prolog:l_clauses,,???$bin_cut?prolog:l_clauses?1???1?prolog:l_clausesprolog:l_clausestruetrue2??.?[]??.46[]?0?trueprolog:l_clauses;;???prolog:l_magic?02?prolog:l_magic_nl?.?;??fail??prolog:l_magicprolog:l_clauses->->???$bin_cut?prolog:l_clauses?5???5?prolog:l_clausesprolog:l_clauses_prolog:portable_writeq?prolog:l_magic_nl?.???prolog:l_magicprolog:l_magic!!0?? :- ?trueprolog:l_magic!!1??, ?trueprolog:l_magic_0??? :- ??tabprolog:l_magic_1???.?[]??.44[]?0?tabprolog:l_magic_3??( ?trueprolog:l_magic_4??; ?trueprolog:l_magic_5??? ->??tabprolog:l_magic_?cwrite:- cwrite?cnltab??atomprolog:l_magic_nl22?????trueprolog:l_magic_nl_?trueprolog:l_magic;;???$bin_cut?prolog:l_magic?1???1?prolog:l_magicprolog:l_magic_?80?30cnltab?prolog:l_magic2?)?1??prolog:l_clausesprolog:l_magic222????trueprolog:l_magic2_?truemain_prolog:binpro_startprolog:binpro_start_prolog:exec_run_time_commandsprolog:call_ifdefmaintoplevel=?$end?init_iotrueprolog:call_ifdeftoplevel_prolog:topstep?- $bin_cut???repeatprolog:topstep_flushttyin?prolog:topinterp???top_read_term???ttyprinprolog:topinterp_=?end_of_file?1??trueprolog:topinterp_??fail???prolog:report_answersprolog:topcall_prolog:nothing??metacallprolog:savetop_topgoal1?trueprolog:nothing_trueprolog:report_answers[][]?$bin_cut?ttyprintyes?prolog:topcallprolog:report_answers..???prolog:report_one_var?prolog:report_top_vars?prolog:another_sol?if??fail?=?no,?ttyprintyes$bin_cut?prolog:topcallprolog:report_answers_?nottyprintprolog:report_top_vars_?ttyprint,prolog:report_one_var?fail??memberprolog:report_top_vars_?trueprolog:report_one_var==??ttyprin=ttyout??writeq??ttyprinprolog:another_sol_$bin_cut?ttyin?prolog:user_action??ttynl?get_code??prolog:is_interactiveprolog:another_solyesyesttynl?;?ttyprintprolog:user_action1010no??trueprolog:user_action5959yes??get_code10ttyinprolog:user_action_ttyin?ttyin?prolog:user_action???get_code?get_code10 ; for more, otherwise ?ttyprinmeta_interpreter_do_bodydo_body_?????unbound_goal?user_errordo_body_or???,?,?do_body?$bin_cut?=?yes=?noprolog:do_bodyprolog:do_compiledcallcall????do_bodyprolog:do_compiled\+\+?$bin_cut?fail??do_bodyprolog:do_compiled\+\+???trueprolog:do_compiledbagofbagof?????do_body?bagofprolog:do_compiledsetofsetof?????do_body?setofprolog:do_compiledfindallfindall?????do_body?findallprolog:do_compiled_callprolog:do_goal_$bin_cut?spy_goal???spyingprolog:do_goal_$bin_cut?assumed_clause??prolog:do_body???or???,?,?do_body?$bin_cut?=?yes=?no?is_assumedprolog:do_goal_$bin_cut?clause??prolog:do_body???or???,?,?do_body?$bin_cut?=?yes=?no?is_dynamicprolog:do_goal_???prolog:do_compiledprolog:do_goal_$bin_cut?prolog:do_apply??prolog:do_goal??call?functorprolog:do_goal_prolog:do_undefprolog:do_undef_errmes???=undefined_predicate/??=culprit?functorprolog:do_apply_.?.??=..??det_append???=..?????=..prolog:do_body,,?????????prolog:do_conjprolog:do_body;;?????????prolog:do_disjprolog:do_body!!trueyes?trueprolog:do_body_trueno?prolog:do_goalprolog:do_conj!!?yes??trueprolog:do_conj_prolog:do_body?????do_bodyprolog:do_disj->->???????????prolog:do_if_then_elseprolog:do_disj_prolog:do_disj0prolog:do_if_then_else_$bin_cut?prolog:do_body?????do_bodyprolog:do_if_then_else_????prolog:do_bodyprolog:do_disj0_???prolog:do_bodyprolog:do_disj0_????prolog:do_bodytrace_?0tr_bodytr_body_????unbound_goal?user_errortr_body_or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?noprolog:tr_bodyprolog:tr_body,,???????????prolog:tr_bodyprolog:tr_body!!trueyes??trueprolog:tr_body;;???????????prolog:tr_disj1prolog:tr_bodytruetruetrueno??trueprolog:tr_body_trueno?prolog:tr_goalprolog:tr_disj1->->?????????????prolog:tr_if1prolog:tr_disj1_????prolog:tr_bodyprolog:tr_disj1_?????prolog:tr_bodyprolog:tr_if1_do_body?prolog:tr_body????prolog:tr_body????????ifprolog:tr_body!!?yes??trueprolog:tr_body,,???,???prolog:tr_bodyprolog:tr_body;;?????????????prolog:tr_disj2prolog:tr_bodytruetrue??????prolog:tr_bodyprolog:tr_body_prolog:tr_body???????prolog:tr_goalprolog:tr_disj2->->???????????????prolog:tr_if2prolog:tr_disj2_?????prolog:tr_bodyprolog:tr_disj2_??????prolog:tr_bodyprolog:tr_if2_do_body?prolog:tr_body?????prolog:tr_body?????????ifprolog:tr_goalcallcall??tr_bodyprolog:tr_goal\+\+?$bin_cut?fail??tr_bodyprolog:tr_goal\+\+???trueprolog:tr_goal_,?,?,?or?ortrue,?,?,?,cnlfailprint?writeRedo: tab?,?,?,?,cnlfailprint?writeExit: tab?if??,?prolog:tr_call??+1??,?\+spying?arith_eq?10metacall?ifprolog:is_interactive?,?cnl=?32,?if?trueget0?arith_eq?10get0?or?or?true,prolog:is_interactive,?failwrite : ,?,?,?failprint?writeCall: tab?,?,?,?,cnlfailprint?writeFail: tab???orprolog:tr_callbagofbagof?????tr_body????bagofprolog:tr_callsetofsetof?????tr_body????setofprolog:tr_callfindallfindall?????tr_body????findallprolog:tr_call_$bin_cut?tab?functor???write?cnlassumed_clause??prolog:tr_body????or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?no!!! assumed/???is_assumedprolog:tr_call_$bin_cut?tab?functor???write?cnlclause??prolog:tr_body????or???,?,?,?,?,cnltr_body??writeCUTtab?$bin_cut?=?yes=?no!!! dynamic/???is_dynamicprolog:tr_call_???functor???write?cnlcall??!!! compiled/????tabprolog:tr_call_$bin_cut?prolog:do_apply??prolog:tr_call???call?functorprolog:tr_call_prolog:do_undefdynamic_fail??prolog:make_dynamicdynamic_?trueprolog:make_dynamic,,???prolog:make_dynamic???prolog:make_dynamicprolog:make_dynamic//??prolog:check_dynamic??prolog:define_dynamic??/???functorprolog:check_dynamic_???WARNING: dynamic code will shadow compiled predicate?cnl?writeprolog:check_dynamic_$bin_cut?errmesdynamic code would shadow assumed predicate???is_assumedprolog:check_dynamic_?trueprolog:define_dynamic_bb_def?$last0?$first0bb_defprolog:ensure_dynamic_$bin_cut???is_dynamicprolog:ensure_dynamic_prolog:make_dynamic??/??functorprolog:add_clause_$bin_cut???prolog:add_clause0prolog:add_clause_prolog:add_clause0????$bin_cut????prolog:ensure_dynamicprolog:add_clause_:-??unable to assert clause?errmesprolog:add_clause0_??0??0???0:-??set??????bb_defprolog:add_clause0_??0:-?????bb_defasserta_:-??prolog:add_clause$first-1????add_trueassertz_:-??prolog:add_clause$last1????add_trueassert_assertzprolog:assert_itend_of_fileend_of_file??trueprolog:assert_it_assertzretract_=??prolog:clause0???prolog:erase0???:-???add_trueretractall_:-??val?$first?val?$last?for???val???prolog:erase0??fail??add_trueretractall_?trueprolog:collect_slot_?$first1?$last0??0??10?$first?0?trueprolog:collect_slot_?trueinstance$dbref$dbref????0copy_termerase$dbref$dbref????prolog:erase0prolog:erase0_prolog:collect_slot????bb_rmclause_??prolog:clause0prolog:clause_$dbref??prolog:clause0prolog:clause0_?$first0?$last0ith_clause????member???-?:-??????findallith_clause_-????1?trueith_clause_??0?10ith_clauseabolish_??is_dynamic?$bin_cut?prolog:abolish0??????functorabolish_found/??abolish_expects_dynamic_clauses?errmesprolog:abolish0_retractall?fail??functorprolog:abolish0_??$first0?$last0prolog:define_dynamicdebug_reconsultprolog:consult_warning_?% using compile/1 is MUCH fasterquietmesconsult_prolog:consult_warningprolog:consult0???find_filereconsult_prolog:consult_warningprolog:survive_cleanup??prolog:consult0???find_fileprolog:consult0_quietmes?see?repeatread_clause?prolog:consult_embedded?=?end_of_file$bin_cut?seenctime?-???quietmes??consulted?time?consulting???ctimeprolog:consult_included_00prolog:consult0?see???find_fileprolog:consult_embedded:-:-??prolog:consult_cmdprolog:consult_embedded_prolog:assert_it???expand_termprolog:consult_cmd..?[]?prolog:consult_includedprolog:consult_cmdconsultconsult??prolog:consult_includedprolog:consult_cmdreconsultreconsult??prolog:consult_includedprolog:consult_cmd_metacalllisting_??is_dynamic?$bin_cut?write% write?write:cnlprolog:listing0??/????functorlisting_??is_assumed?$bin_cut?write% assumed write?write:cnlprolog:listing1??/????functorprolog:listing0_portray_clause?fail?:-??clauseprolog:listing0_??trueprolog:listing1_portray_clause?fail?:-??assumed_clauseprolog:listing1_??truelisting_listing??fail?0255forlisting_??trueprolog:generate_run_time_predicate_or??bb_element??nonvar??=??+??,?=?/??=?/$assumed0,?=?/$first0=?/????bb_listlisting_listing??fail??prolog:generate_run_time_predicatelisting_true=>_?intuitionistic?metacall?=?$closed???prolog:assume-:_?linear??metacall?=?$closed???prolog:assumeprolog:add_hint_ll_clause????:-?????add_trueassumel_??linear??prolog:assumeassumei_??intuitionistic??prolog:assumeprolog:assume_???bad_clause?error_in_assume?errmesprolog:assume_prolog:assume1prolog:assume1_.?[]?prolog:assume_fileprolog:assume1_prolog:assume_llprolog:assume_ll_lval$assumed??prolog:assume_with_hint_ll????prolog:add_hint_llprolog:assume_with_hint_ll_??????prolog:insert_llprolog:assume_with_hint_ll..?[]??trueassumed_call???assumed_clauseassumed_clause_??assumed_clauseassumed_clause_???$assumed?0????prolog:get_assumed_clauseprolog:get_assumed_clause_???.??clause????prolog:copy_or_delete_llprolog:get_assumed_clause_.??prolog:get_assumed_clauseprolog:copy_or_delete_lllinearlinear???:-???????$usedtrueprolog:copy_or_delete_llintuitionisticintuitionistic?????:-???copy_termprolog:insert_ll_??.?[]?2?.?[]?0?trueprolog:insert_ll_.??prolog:insert_llprolog:assume_file_seeing_telling0?see?prolog:assume_all?seensee?????find_fileprolog:assume_all_prolog:assume_all0?????gc_read_clauseprolog:assume_all0end_of_fileend_of_file??trueprolog:assume_all0_gc_read_clause?prolog:assume_all0????prolog:assume_oneprolog:assume_one:-:-?.?[]???prolog:assume_fileprolog:assume_one:-:-???prolog:consult_cmd?truetrueifprolog:assume_one_???prolog:assume_llbb_element==??+??/??/???.??.??.??.??.??truebb_element_.??.??.??.??.??bb_elementbb_list_301?truebb_?unsortedbbbb_?,?,?,cnl,?,?,?,?,?,cnlfailwrite?prolog:bb_orig??member??if??=??\==?sorted,?sort??findall???bb_element??bb_list?write-bboard?statisticsbboard??cnlorprolog:bb_orig==??+??/??/??=??+??/??/??functor???or??$bin_cut??val???lval?????functorsort_?prolog:remdup???<??prolog:merge_sortprolog:remdup[][][]?trueprolog:remdup..??.??=???1?.??prolog:remdupprolog:remdup..??.??prolog:remdupprolog:merge_sort_prolog:merge_sort1????[]????lengthprolog:merge_sort100[]???trueprolog:merge_sort111?.??.?[]?trueprolog:merge_sort1_?10??0prolog:merge_sort1?????prolog:merge_2?????????prolog:merge_sort1prolog:merge_2[][]???trueprolog:merge_2..??.??.????1?.??prolog:merge_2prolog:merge_2_?.??.???prolog:merge_2prolog:ksort_$bin_cut?=???-1?[]prolog:keysortprolog:ksort_keysort??illegal_arguments?user_errorprolog:keysort..???????-???.??prolog:keysort?1?????????prolog:samkeyrunprolog:keysort_[]??trueprolog:keysort..????0?????-???.??prolog:keysort?1????prolog:keymerge???+???prolog:keysort????????????prolog:samkeyrunprolog:keysort_???trueprolog:samkeyrun..??????-????.??-??$bin_cut?=??prolog:samkeyrun??????.???@=<prolog:samkeyrun..??????-????.??-??<???1?.???prolog:samkeyrunprolog:samkeyrun_???.?[]trueprolog:keymerge[][]????trueprolog:keymerge..????.??-????-??$bin_cut?=??prolog:keymerge????.????@=<prolog:keymerge_.?????.??prolog:keymergeprolog:keymerge_??truesetof_call?sort??????bagofbagof_??\==?[]$bin_cut?=..??functor?.?findall???prolog:replace_instance????keysort??$bin_cut?prolog:concordant_subset???=???-??call?..??[]?free_variablesbagof_.??call?.???findall^_??callprolog:replace_instance[][][]??trueprolog:replace_instance..??-???.??-??$bin_cut?prolog:replace_instance??????prolog:replace_key_variablesprolog:replace_key_variables00??trueprolog:replace_key_variables_??0????10prolog:replace_key_variablesprolog:replace_key_variables_??0??1?10prolog:replace_key_variablesprolog:concordant_subset..??-??prolog:concordant_subset??????.????prolog:concordant_subsetprolog:concordant_subset..??-??.??=???1?prolog:concordant_subsetprolog:concordant_subset_[]??trueprolog:concordant_subset[][]????trueprolog:concordant_subset_???trueprolog:concordant_subset_???prolog:concordant_subsetfree_variables_??.????prolog:list_is_free_of??$bin_cut????prolog:term_is_free_offree_variables_?????truefree_variables_$bin_cut?free_variables????????prolog:explicit_bindingfree_variables_prolog:free_variables?????????functorprolog:free_variables00???trueprolog:free_variables_??0-?1?$bin_cut?prolog:free_variables???????????free_variablesprolog:explicit_binding\+\+?fail??trueprolog:explicit_bindingnotnot?fail??trueprolog:explicit_binding^^????+??trueprolog:explicit_bindingsetofsetof????-??+??trueprolog:explicit_bindingbagofbagof????-??+??trueprolog:term_is_free_of_???\==prolog:term_is_free_of_prolog:term_is_free_of??????functorprolog:term_is_free_of00??trueprolog:term_is_free_of_??0-?1?$bin_cut?prolog:term_is_free_of???????prolog:term_is_free_ofprolog:list_is_free_of[][]?trueprolog:list_is_free_of..??prolog:list_is_free_of????\==keysort_prolog:ksortnot_call?$bin_cut????\+not_$bin_cut?fail??groundnot_?user_errorshould be groundnot??failabortifterm_chars_???name?????swriteterm_chars_sread?????namevars_of_??[][]free_variablesprolog:compile_binary_prolog:cc_bincompprolog:compile_builtins_prolog:cc_builtinsprolog:cc_must_have_builtinswamwam?trueprolog:cc_must_have_builtinsccwam.hprolog:c_chunk_fileprolog:cc_builtins_prolog:bin_builtin?prolog:cc_bincomp??fail??prolog:cc_must_have_builtinsprolog:cc_builtins_?trueprolog:cc_bincompbinbin??fail?portray_clauseprolog:cc_bincompasmasmcnlportray_clause?cnlfail?BINARY:?writeprolog:cc_bincomp_prolog:cc_compile_clause??prolog:gg_emit??$bin_cut???prolog:newpredprolog:cc_bincomp_failing_to_compile_clause??errmesprolog:bin_builtin:-:-??true?$bin_cut??prolog:cutpprolog:bin_builtin_prolog:bu_body??????prolog:buprolog:bu_bodyin_headin_head?:-??true?arg??????functorprolog:bu_bodyin_bodyin_body?:-??trueprolog:cc_compile_clause_?.??.??.?[]prolog:cc_clauseprolog:firstarg_1?0prolog:classif_firstprolog:classif_first_?????/?0?trueprolog:classif_first_?????/_0?trueprolog:classif_first_?/??functorprolog:cc_clause_.??.?[]iifirstarg???iiclause???.?[]iiexecute???:-??prolog:firstarg??prolog:cc_h_b????getput?prolog:max???+?1?prolog:vars??functor?dict?prolog:fill_info??prolog:collapse_args?1?prolog:allocate_regs????-?[]/??-??/??/??/???add_trueprolog:cc_h_b_/??/??/??-??/??-??/??prolog:cc_b????$bin_cut??/??-??/??-?[]/???prolog:cc_hprolog:begin_chunk_?iic_chunk???len?prolog:hidden_var????+????prolog:emitprolog:end_chunk_?iic_chunk???len?prolog:hidden_var????+????prolog:emitprolog:emit_-??.??-???trueprolog:get_mode_???-??/???trueprolog:set_mode_-??/??-??/???trueprolog:hidden_var_???-??/???trueprolog:cc_h_prolog:cc_h0prolog:cc_b_prolog:end_chunk?????prolog:cc_b0prolog:cc_h0_/??$bin_cut?functor???arg???prolog:emit???prolog:begin_chunk???iibuiltin???in_head?prolog:buprolog:cc_h0_/??greater?0$bin_cut?functor???prolog:emit_head_top_term????????functorprolog:cc_h0_???unexpected_head_atom?errmesprolog:emit_head_top_term_???prolog:cc_top_arg11????prolog:begin_chunk??prolog:emit_top_args2?????prolog:cc_top_arg2??????11????prolog:emit_top_argsprolog:cc_b0_???true??prolog:cc_b0prolog:cc_b0truetrue??/true0?trueprolog:cc_b0$bin_cut$bin_cut???iiput???cutarg1prolog:cc_b0????????prolog:emitprolog:cc_b0==????prolog:cc_b0????????prolog:cc_eqprolog:cc_b0_$bin_cut?prolog:cc_builtin???????in_body?prolog:buprolog:cc_b0_/??greater?0$bin_cut?functor???prolog:emit_body_top_term????????functorprolog:cc_b0_???unexpected_body_atom?errmesprolog:emit_body_top_term_???$bin_cut?prolog:emit_top_args1??????1????prolog:cc_top_argprolog:cc_eq_????????prolog:cc_eq1prolog:cc_eq_prolog:cc_eq1prolog:cc_eq1_=??prolog:emit???prolog:emit???prolog:set_modeget??prolog:cc_top_t???prolog:set_modeput???=??iiget???temp0iiput???temp0????prolog:cc_top_tprolog:out_reg000?trueprolog:out_reg11??trueprolog:cc_builtinaritharith????arg???-?1?arg???prolog:out_reg???-???functor???prolog:handle_constant_res????prolog:emit_top_bargs1?????prolog:emit???prolog:cc_b0?????iiarith???=????functorprolog:cc_builtin_-?1?arg???arg1??prolog:cc_b_args????prolog:emit???prolog:cc_b0?????iiinline???????functorprolog:handle_constant_res00???trueprolog:handle_constant_res11??=???????trueprolog:handle_constant_res11=?????iiput???temp0prolog:emit????iiget???temp0???prolog:emitprolog:handle_constant_res11=???=?????prolog:cc_top_tprolog:classif_load_???????trueprolog:classif_load_constant???????trueprolog:classif_load_?=?????prolog:cc_top_tprolog:cc_b_args00??trueprolog:cc_b_args11=??prolog:emit????iiput???temp0???prolog:cc_top_tprolog:emit_top_bargs_???0??trueprolog:emit_top_bargs_??0?10??0??0prolog:emit???prolog:emit_top_bargs???????iiload????????prolog:classif_loadprolog:emit_top_bargs_??0??0??0?=??+?1?prolog:emit_top_bargs??????????prolog:cc_top_tprolog:emit_top_args_???0??trueprolog:emit_top_args_??0??0??0$bin_cut?prolog:get_mode???prolog:emit???+?1?prolog:emit_top_args???????ii????arg????prolog:classif_argprolog:cc_top_arg_???0??trueprolog:cc_top_arg_??0??0??0?10?=??prolog:cc_top_arg?????????prolog:cc_top_tprolog:cc_top_t==?????????trueprolog:cc_top_t==?????????trueprolog:cc_top_t==??greater?0$bin_cut?functor???prolog:emit_top_structure???????prolog:cc_args?????????functorprolog:emit_top_structure_prolog:emit???prolog:emit_args??????ii?structure??/??????prolog:get_modeprolog:cc_arg_???0??trueprolog:cc_arg_??0??0??0?10?=??prolog:cc_arg?????????prolog:cc_tprolog:cc_t==?????????trueprolog:cc_t==?????????trueprolog:cc_t==??greater?0$bin_cut?functor???prolog:emit_structure???????prolog:cc_args?????????functorprolog:cc_args_?10??10??0??0=??prolog:cc_arg1????????prolog:cc_tprolog:cc_args_??????1?????prolog:cc_argprolog:emit_structure_prolog:deep_structure_op??prolog:emit???prolog:emit_args??????ii?structure??/??????prolog:get_modeprolog:emit_args_??????1?????prolog:emit_args0prolog:emit_args0_???0??trueprolog:emit_args0_??0??0??0$bin_cut?prolog:get_mode???prolog:emit???prolog:unify_op???+?1?prolog:emit_args0???????ii???????prolog:classif_argprolog:unify_opgetgetunify?trueprolog:unify_opputput???prolog:deep_var_opprolog:deep_var_op_push$bin_cut??compoundprolog:deep_var_op_write?trueprolog:deep_structure_opgetgetget?trueprolog:deep_structure_opputputpush?trueprolog:classif_arg_??????trueprolog:classif_arg_constant??????trueprolog:classif_arg_?trueprolog:max_??0????trueprolog:max_??trueadd_true:-:-???:-???trueadd_true_:-?true?trueprolog:vars_call???trueprolog:find_occurrencesprolog:find_occurrences[][][]??trueprolog:find_occurrences..??ii????.??ii????prolog:find_occurrences???????prolog:occurrenceprolog:occurrence_??????trueprolog:occurrence_???var???????$OCC??1??prolog:newvarprolog:occurrence$OCC$OCC????var???prolog:oldvarprolog:occurrence_??at?=occ?=var?bad_occurrence?errmesprolog:oldvar_/????=???111??0?trueprolog:newvar_,????=????/???trueprolog:fill_info_?0?prolog:fill_allprolog:tpoint_??11?trueprolog:fill_all[][]??trueprolog:fill_all..??prolog:fill_one????prolog:fill_all??????prolog:fill_var_typeprolog:fill_var_typeiiii????var???????prolog:get_var_typeprolog:fill_var_type_?trueprolog:get_var_type//11unifyvoid??trueprolog:get_var_type//11writevoid??trueprolog:get_var_type//1?variable??trueprolog:get_var_type//??value???0?trueprolog:fill_oneiiii?constant??arg??prolog:mark_arg??????var?/11-?/?????prolog:tpointprolog:fill_oneiiii?constant??????prolog:tpointprolog:fill_oneiiii????arg??prolog:mark_arg?????prolog:mark_var??????prolog:tpointprolog:fill_oneiiii??var?????prolog:mark_var???var??prolog:tpointprolog:mark_arggetget?-?/??*????1trueprolog:mark_argputput?-?/??*????1trueprolog:mark_var_var??/11-??/????trueprolog:mark_var_var??/1?-??/??1?0??trueprolog:mark_var_var??/??-??/??1?0??trueprolog:mark_var_?var??/?-??/?trueprolog:collapse_args_???0?trueprolog:collapse_args_??0??0+?1?prolog:collapse_args???????prolog:collapse_themprolog:default//??prolog:set_to99999??0?prolog:set_toprolog:set_to_???trueprolog:set_to_?trueprolog:collapse_them_-??*??var??-??var??-??prolog:default?prolog:default?prolog:check_lifetimes????-??-??-???prolog:defaultprolog:check_lifetimes--??-??-??prolog:check_var_var??prolog:check_var_arg??$bin_cut??prolog:check_var_argprolog:check_lifetimes--??-??$bin_cut??prolog:check_var_argprolog:check_lifetimes_-??-??$bin_cut??prolog:check_var_argprolog:check_lifetimes_?trueprolog:check_var_var//???/????0?trueprolog:check_var_var//???/????0trueprolog:check_var_arg//???/????0??0trueprolog:allocate_regs[][]???trueprolog:allocate_regs..??prolog:allocate_regs??????prolog:allocate1prolog:allocate1iiii??var??-????$bin_cut?????prolog:allocate_regprolog:allocate1_??trueprolog:allocate_reg_/11???prolog:free_reg???????prolog:get_regprolog:allocate_reg_/1???1?0????prolog:get_regprolog:allocate_reg_/??1?0????prolog:free_regprolog:free_reg_-??/??-??.??/????0??trueprolog:free_reg_??trueprolog:get_reg_-??.??/??-??/????trueprolog:get_reg_-??/??-??/???11?trueprolog:mdef_to_def:-:-??:-??prolog:repl_body????prolog:hide_atomprolog:mdef_to_def:-:-?:-?$bin_cut?call?fail??prolog:repl_bodyprolog:repl_body_call?????trueprolog:repl_body_$bin_cut???prolog:repl_macroprolog:repl_body_$bin_cut?prolog:strip_nil?????prolog:split_opprolog:repl_body_prolog:peval_io??$bin_cut??binprolog?is_prologprolog:repl_body_$bin_cut?=??ttyprint??spying_on?spy_goal??spyingprolog:repl_body_prolog:hide_atomis_prolog_$bin_cut?=???isprologbb_valis_prolog_prolog:default_prologprolog:cutp_?.36.99.117.116[]nameprolog:repl_macro!!$bin_cut??prolog:cutpprolog:repl_macrovarvar???var?prolog:repl_knownprolog:repl_macrononvarnonvar???nonvar?prolog:repl_knownprolog:repl_macroatomicatomic???atomic?prolog:repl_knownprolog:repl_macrofloatfloat???float?prolog:repl_knownprolog:repl_macroatomicatomic???atomic?prolog:repl_knownprolog:repl_macro,,??????prolog:repl_conjprolog:repl_macro;;??????prolog:repl_disjprolog:repl_macro->->??->??prolog:repl_body????prolog:repl_bodyprolog:repl_macrocomparecompare????compare0???trueprolog:repl_macro====???compare0??=trueprolog:repl_macro@<@<???compare0??<trueprolog:repl_macro@>@>???compare0??>trueprolog:repl_macro:=::=:???lval???prolog:repl_lvalprolog:repl_macro##??dcg_connect?trueprolog:repl_macro::???module_call??trueprolog:repl_macrofindallfindall???findall???prolog:repl_bodyprolog:repl_macrobagofbagof???bagof???prolog:repl_bodyprolog:repl_macrosetofsetof???setof???prolog:repl_bodyprolog:repl_macroallall???setof???prolog:repl_bodyprolog:repl_macro^^??^??prolog:repl_bodyprolog:repl_macrocallcall?prolog:repl_bodyprolog:repl_macro\+\+?\+?prolog:repl_bodyprolog:repl_macronotnot?not?prolog:repl_bodyprolog:repl_conj_??$bin_cut?prolog:repl_body??prolog:app_body?????prolog:split_opprolog:repl_conj_,??prolog:repl_body????prolog:repl_bodyprolog:repl_disj_if???????->???prolog:repl_body??prolog:repl_body????prolog:repl_bodyprolog:repl_disj_or??prolog:repl_body????prolog:repl_bodyprolog:repl_lval##??????trueprolog:repl_lval_???trueprolog:repl_known_true$bin_cut??callprolog:repl_known_fail?trueprolog:split_opisis??????prolog:split_is_relprolog:split_op<<????less??prolog:split_relprolog:split_op>>????greater??prolog:split_relprolog:split_op=<=<????less_eq??prolog:split_relprolog:split_op>=>=????greater_eq??prolog:split_relprolog:split_op=:==:=????arith_eq??prolog:split_relprolog:split_op=\==\=????arith_dif??prolog:split_relprolog:split_is_rel_.?[]expr??????trueprolog:split_is_rel_.?[]+?0?????trueprolog:split_is_rel_.?[]+?0?$bin_cut????floatprolog:split_is_rel_.?[]+?0?ground?$bin_cut?expr???binprolog?is_prologprolog:split_is_rel_?[]prolog:split_isprolog:app_body[][]???trueprolog:app_body..??,??prolog:app_bodyprolog:strip_nil..?[]???trueprolog:strip_nil..??,??prolog:strip_nilprolog:split_rel_?[]prolog:split_rel_1prolog:split_rel_1_prolog:split_is????=..??prolog:emit_is????.?.?.?[]???prolog:split_isprolog:split_is_???????trueprolog:split_is_???????trueprolog:split_is_?$bin_cut?=?????floatprolog:split_is_.?.?.?[]$bin_cut?prolog:split_is????prolog:split_is????=..??prolog:emit_is????.?.?.?.?[]???=..prolog:split_is_.?.?[]prolog:split_is????=..??prolog:emit_is????.?.?.?[]???=..prolog:emit_is_.???trueprolog:def_to_mbin:-:-???????prolog:def_to_mbin0prolog:def_to_mbin_??true?prolog:def_to_mbin0prolog:def_to_mbin0@@@@??:-?????prolog:add_upper_cont??????termcatprolog:def_to_mbin0_:-??add_cont?????termcatprolog:add_upper_cont_???add_cont???????add_contprolog:add_upper_cont_,??strip_cont??????add_contadd_cont,,true??add_contadd_cont,,fail??fail??trueadd_cont,,???term_append????cont??add_contadd_cont_?cont??1?truetermcat_?cont??1?trueprolog:show_code_show_code0??length??write?cnlnth_member???prolog:show_instr??fail?BRUT WAM-ASSEMBLER:?=length?=mode????findallprolog:show_code_?POST TERM-COMPRESSION CODE:=mode?cnlprolog:mc_all_instr??nth_member???prolog:show_instr??fail???writeprolog:show_code_?FINAL CODE:=mode?cnlprolog:gen_code??fail???writeprolog:show_code_??trueshow_code0_?member??prolog:show_or_skip????memberprolog:show_or_skipiiiigetvariable??var??-??arg????trueprolog:show_or_skipiiiiputvalue??var??-??arg????trueprolog:show_or_skip_?trueprolog:show_instr_??ii????.?[]write write?write_write?write prolog:show_fun?prolog:show_info?cnl??writeprolog:show_funputput??trueprolog:show_fungetget??trueprolog:show_fun_writeprolog:show_info_??var??-???write?put9put9put9write% write??var? ?writeprolog:show_info_write?? ?writeprolog:show_stepsasmasm,cnl,?,?,cnl,?,cnlfailportray_clause?writeEXPANDED:\==??,?,cnl,?,cnlfailportray_clause?writeDEFINITE:?orprolog:show_steps_?trueprolog:bind_c_chunk_lengthwamwam???trueprolog:bind_c_chunk_lengthmemmem???trueprolog:bind_c_chunk_length_?????0[]prolog:bind_lengthprolog:bind_length[][]??trueprolog:bind_length..??????????????prolog:make_anti_callprolog:make_anti_calliiii?????c_chunk_variable?ii???len?=??prolog:bind_length?????????Cprolog:make_anti_calliiii?????c_chunk_value?ii???len?-???prolog:bind_length??0?????Cprolog:make_anti_call_????ii???$bin_cut?-???C???C???prolog:bind_length??0???.??iic_chunk_variable?0iic_chunk_value?0len?????prolog:antigenicprolog:make_anti_call_???10prolog:bind_length?????????Cprolog:gen_code_prolog:bind_c_chunk_length???member??prolog:write_instr???=?no$bin_cut?fail????prolog:mc_all_instrprolog:gen_code_?trueprolog:maxarity256256?trueprolog:temparg_??trueprolog:gen_instriiii?????$bin_cut????prolog:beautifyprolog:write_instriiii????$bin_cut?=?yes?????prolog:encodeprolog:write_instr_no?trueprolog:mc_all_instr_??prolog:mc_one_instr???findallprolog:mc_one_instr_?prolog:mc_peephole??prolog:instr_cat?????memberprolog:instr_catiiii?????ii?????1trueprolog:beautifyargarg??prolog:encode_argprolog:beautifytemptemp??prolog:encode_arg????????prolog:tempargprolog:beautifycutargcutarg??prolog:encode_argprolog:beautify_???var??-????prolog:encode2prolog:beautifyputputwriteconstant?$bin_cut?prolog:encode2pushcut????prolog:cutpprolog:beautify_????prolog:encode2prolog:encode_arg_getvariableempty_opvar??-????trueprolog:encode_arg_putvalueempty_opvar??-????trueprolog:encode_arg_???var??-????prolog:encode2prolog:encode_arg11constant?$bin_cut?prolog:encode2?cut?????prolog:cutpprolog:encode_arg_??constant?constant?prolog:encode2prolog:encode2_ii?????trueprolog:mc_peephole_prolog:mc_topprolog:mc_input_prolog:mc_input0prolog:mc_input0_.??prolog:mc_empty???????prolog:gen_instrprolog:mc_emptyempty_opempty_op?????prolog:mc_input0prolog:mc_empty_???trueprolog:mc_top_?prolog:mc0??????prolog:mc_inputprolog:mc0_prolog:mc1??????????prolog:op_typeprolog:mc1pushpushvariable??$bin_cut?prolog:mc5?????prolog:mc_pushprolog:mc1c_chunkc_chunkvariable???prolog:mc5?????prolog:mc_chunkprolog:mc1_void??prolog:mc3?????1?prolog:mc_selprolog:mc1_????prolog:mc5prolog:mc_push_??prolog:op_type?pushstructureprolog:mc_transform_push???$bin_cut?=??????prolog:mc_inputprolog:mc_push_???trueprolog:mc_chunk_?prolog:op_type?c_chunkvalue$bin_cut?prolog:mc_input??????prolog:mc_inputprolog:mc_chunk_???trueprolog:mc_sel_?prolog:op_type??void$bin_cut?+?1?prolog:mc_sel???????prolog:mc_inputprolog:mc_sel_???trueprolog:mc3_???prolog:mc4prolog:mc3_?prolog:mc0??????prolog:mc_inputprolog:mc4_$bin_cut???prolog:mc_transform_voidprolog:mc411??trueprolog:mc5_??trueprolog:mc5_?prolog:mc0???????prolog:mc_inputprolog:op_typeiiii?????????trueprolog:op_type_??expected/ii4?errmesprolog:mc_transform_void11?iiunifyvoid??iiunifyvariable???trueprolog:mc_transform_void_ii?void??ii?void???trueprolog:mc_transform_pushiiiipushvariable???iipushstructure??iipushconstant??trueprolog:encodeunify_variableunify_variableget??1?0prolog:wcodeprolog:encodewrite_variablewrite_variableput??2?0prolog:wcodeprolog:encodeunify_valueunify_valueget??3?0prolog:wcodeprolog:encodewrite_valuewrite_valueput??4?0prolog:wcodeprolog:encodeunify_constantunify_constantget???50?0prolog:wcodeprolog:encodewrite_constantwrite_constantput???60?0prolog:wcodeprolog:encodepush_constantpush_constant??/??6prolog:wcodeprolog:encodeget_constantget_constant???7?0prolog:wcodeprolog:encodeget_structureget_structure??/??8prolog:wcodeprolog:encodeput_constantput_constant???9?0prolog:wcodeprolog:encodeput_structureput_structure??/??10prolog:wcodeprolog:encodeget_variableget_variable????11???prolog:wcodeprolog:encodeput_valueput_value???11??prolog:wcodeprolog:encodeput_variableput_variable????12???prolog:wcodeprolog:encodeget_valueget_value????13???prolog:wcodeprolog:encodepush_cutpush_cut????140?0prolog:wcodeprolog:encodeput_cutput_cut????150?0prolog:wcodeprolog:encodeget_cutget_cut????160?0prolog:wcodeprolog:encodeexecute_?execute_?????170??prolog:wcodeprolog:encodeload_constantload_constant????28??0prolog:wcodeprolog:encodeload_variableload_variable????50???prolog:wcodeprolog:encodeload_valueload_value????29???prolog:wcodeprolog:encodepush_structurepush_structure??/??51prolog:wcodeprolog:encodepush_variablepush_variableput??52?0prolog:wcodeprolog:encodeunify_voidunify_void??61?0prolog:wcodeprolog:encodewrite_voidwrite_void??62?0prolog:wcodeprolog:encodec_chunk_variablec_chunk_variable???63??prolog:write_or_skipprolog:encodec_chunk_valuec_chunk_value???64??prolog:write_or_skipprolog:encodeclause_?clause_?+?1?prolog:wcode???0????prolog:n_nopprolog:encodefirstarg_?firstarg_?/??+?2?prolog:wcode????????prolog:n_nopprolog:encodeend_?end_?????0??0prolog:wcodeprolog:encodeinline_variableinline_variableprolog:wcode????????prolog:n_inlineprolog:encodearith_variablearith_variableprolog:wcode????0???prolog:n_arithprolog:encodearith_valuearith_valueprolog:wcode????1???prolog:n_arithprolog:encodebuiltin_?builtin_?prolog:wcode????????prolog:n_builtinprolog:encode_op_?op+?3?make_cmd??prolog:wcode???0?0?.?.?.?.?.?[].32[].32[]??prolog:n_nopprolog:n_inline_bu_ctrn_inline??metacallprolog:n_arith_bu_ctrn_arith??metacallprolog:n_builtin_bu_ctrn_builtin??metacallprolog:n_nop_bu_ctrn_nop??metacallprolog:bu_bu0?????metacallprolog:write_or_skipwamwam??trueprolog:write_or_skipmemmem??trueprolog:write_or_skip_len?greater_eq??less??$bin_cut?prolog:write_or_skip0??????????prolog:c_thresholdprolog:write_or_skip_?trueprolog:write_or_skip0wamwam$bin_cut?prolog:wcodewam??????c_flagbegin_endyes?bb_valprolog:write_or_skip0cc??????0prolog:wspec_cprolog:write_or_skip0asmasm?bb_valc_flagbegin_endyes=?c=?nprolog:wcodeasm??????+?????ifprolog:write_or_skip0_?trueprolog:wcodememmem?????0trueprolog:wcodewamwam??0?0?0put0?writeprolog:wcodecc??????prolog:wcode_cprolog:wcodeasmasm??????prolog:wcode_asmprolog:wcode_asm_.?.?.?.?[]write?write-->put9put9write?cnl??=..prolog:let_c_chunk_file_??c_chunkfile_namebb_letprolog:c_chunk_file_??c_chunkfile_namebb_valprolog:newpredcc???:-???prolog:newpred0prolog:newpred_?trueprolog:newpred0_bb_valpredicatename?bb_valpredicatearity?$bin_cut?bb_valpredicateclause?+?1?bb_setpredicateclause?bb_letpredicateoffset0??functorprolog:newpred0_bb_letpredicatename?bb_letpredicatearity?bb_letpredicateclause1bb_letpredicateoffset0??functorprolog:currpred--??/??/??bb_valpredicatearity?bb_valpredicateclause?bb_valpredicateoffset??predicatenamebb_valprolog:compile_mem_?memcompiling??...to?ctime?prolog:survive_cleanup??prolog:mcomp_file??prolog:maincomp??prolog:terminate_file?$end11$bin_cut?ctime?-???quietmes??compile_time?current_user_file???quietmesprolog:compile_mem_restart?compilation aborted?ttyprintprolog:survive_cleanup_restartprolog:call_ifdefinit_iotruename??prolog:init_cmd??nameprolog:mcomp_file_.?.?[]statisticsstrings?statisticssymbols?statisticshtable?prolog:translate_all??statisticscode?-???statisticsstrings?-???statisticssymbols?-???statisticshtable?-???+???+???+???quietmes??bytes_used????total?code?strings?symbols?htable?.?.?[].?.?[].?.?[].?.?[].?.?[].?.?[].?.?[]code??statisticsprolog:compile0_.???.??prolog:compile1prolog:compile0_.?[]?prolog:compile1prolog:compile1_?ctime?prolog:xcompile???ctime?-???write?cnl?total_compile_time??prolog:init_cmdprolog:xcompile_prolog:decorate_fileheader?prolog:compile_builtins?member??quietmes?ctime?prolog:comp_file??ctime?-???quietmes?fail?compile_time?compiling??...to???tellprolog:xcompile_prolog:decorate_filefooter?fail?$end00?prolog:terminate_fileprolog:xcompile_?toldprolog:decorate_file_c??prolog:c_decorate_fileprolog:decorate_file_?trueprolog:terminate_file_prolog:gg_emit??prolog:close_c_chunk_file??.?[].?[]iiend????prolog:make_dummy_endprolog:make_dummy_endcc$bin_cut??wam.hprolog:c_chunk_fileprolog:make_dummy_end_prolog:maincompprolog:close_c_chunk_filecc?toldprolog:write_c_chunkprolog:close_c_chunk_file_?trueprolog:gg_emitmemmemmemprolog:gen_codeprolog:gg_emitwamwamwamprolog:gen_codeprolog:gg_emitcccprolog:gen_codeprolog:gg_emitasmasmasmprolog:show_codeprolog:comp_file_.wam.asm.bin.c[]$bin_cut?prolog:translate_all?????memberprolog:translate_all_prolog:translate_all0prolog:memoing_translate_all_?wam\+?prolog:memoable_file???$bin_cut?if?true?prolog:include_memoed_file??\+older_file??prolog:make_memo_file???current_moduleprologbinprolog?is_prologprolog:memoing_translate_all_prolog:translate_all0prolog:memoable_file_??.??.??.?[]append???$bin_cut?=??name??append???name???.??.46.112.108[]???nameprolog:make_memo_file_?wam10prolog:translate_all0??toldtell????tellprolog:include_memoed_file_00repeatget0?prolog:put_to_eof?$bin_cut?seensee???seeprolog:put_to_eof-1-1??trueprolog:put_to_eof_?0??trueprolog:translate_all0_00repeatread_clause?prolog:translate??$bin_cut?seensee???seeprolog:translateend_of_fileend_of_file??trueprolog:translate:-:-??fail??prolog:translate_cmdprolog:translate::-::-????:-??fail??prolog:compile_binaryprolog:translate_$bin_cut?prolog:translate_cmd??fail?assert??prolog:is_dynamic_clauseprolog:translate_??fail???prolog:maincompprolog:is_dynamic_clause:-:-???is_dynamicprolog:is_dynamic_clause_is_dynamicprolog:maincomp_prolog:show_steps???prolog:compile_binary??????prolog:preprocessprolog:translate_cmd..?[]?prolog:include_fileprolog:translate_cmdcompilecompile??prolog:include_fileprolog:translate_cmdensure_loadedensure_loaded??prolog:include_fileprolog:translate_cmdconsultconsult??prolog:include_fileprolog:translate_cmdreconsultreconsult??prolog:include_fileprolog:translate_cmddynamicdynamic???dynamicprolog:translate_cmdinteractiveinteractive???interactiveprolog:translate_cmdspyspy???spyprolog:translate_cmdopop????if??true?member?.wam.c[]prolog:encode_op??????opprolog:translate_cmd_prolog:exec_cmdprolog:exec_cmd_prolog:maincomp??fail??prolog:cmd2clauseprolog:cmd_root$run_time_command$run_time_command?trueprolog:init_cmd_prolog:get_cmd_no???prolog:cmd_rootprolog:get_cmd_no_?bb_setgensym?0$bin_cut??gensym??bb_valprolog:get_cmd_no_?trueprolog:cmd2clause_:-??gensym??quietmes% !!! action delayed after compilation, for command:quietmes?if?truetrue?public/?0:-??prolog:cmd_rootprolog:exec_run_time_commands_prolog:exec_run_time_commands0?fail??prolog:cmd_rootprolog:exec_run_time_commands_trueprolog:exec_run_time_commands0_?10000symcat???if??true$bin_cut??is_compiled?,?failcall?1forprolog:include_file_00quietmes?prolog:memoing_translate_all??seeing_telling0?quietmes??end?in?including?begin?in?including???find_fileprolog:preprocess_prolog:fact2rule??prolog:mdef_to_def??prolog:def_to_mbin?????prolog:std_expand_termprolog:fact2rule:-:-??:-??trueprolog:fact2rule:-:-???:-???trueprolog:fact2rule_:-?true?truemake_cmd_name????prolog:make_cmd0prolog:make_cmd0_??char_in_cmd????findallchar_in_cmd_prolog:listify??member?????memberprolog:listify..???.???trueprolog:listify_namemake_appl_?.?.init.pl.oper.pl.lib.pl.read.pl.write.pl.dcg.pl[]wamnewappl.bpprolog:compile0make_executable_unix_appl_make_cmd??system??.?.?.?.?.?.?.?.?.?[].32.59.32.99.104.109.111.100.32.43.120.32[].32.59.32.99.97.116.32.110.101.119.97.112.112.108.46.98.112.41.32.62.32[].32.36.48.39[].59.32.101.99.104.111.32.39.101.120.101.99.32[].59.32.101.99.104.111.32.39.66.80.95.65.82.71.83.61.36.42.59.32.101.120.112.111.114.116.32.66.80.95.65.82.71.83.39[].40.101.99.104.111.32.39.35.33.32.47.98.105.110.47.115.104.32.39[]??make_applprolog:cparser_?isprologbin_prolog_with_cparserbb_defkmake_makewam??prolog:cparserkcmake_cmakewam??prolog:cparsertmake_?1260tmaketmake_?10000tmaketmake_cmake??set_c_thresholdcmake_?wamcmakecmake_?usercmakecmake_?c.cmakemake_?wammakemake_?usermakemake_?wam.bpmakemake_????makemake_module?if?true?module??make0????\+errmesunable_to_make.?.?.?[]in_module?project??mode???current_modulemake0_find_file??make_cmd??prolog:make_include??prolog:compile0???ctime?-???write?cnl?=?time?.?.?[]??ctimeprolog:make_includecc?.?.?[].46.104[]prolog:let_c_chunk_file???make_cmdprolog:make_include_?trueasm_?asmuserprolog:comp_fileasm_?userasm.asmBinWAM intermediate codemakeboot_?wamprologmakeprolog:uboot_?wamusermakels_?ls -tFsystemdir_?dirsystemedit_make_cmd??system?compile??.?.?.?[].32[]???find_fileprolog:get_editor_unix_getenvEDITOR?unix_getenvVISUAL?$bin_cut????orprolog:get_editor_??truemy_edit_current_user_file?edit????failprolog:call_ifdefprolog:my_defedit_current_user_file?prolog:defedit????failprolog:call_ifdefprolog:defedit_edit?????prolog:get_editored_?emacsprolog:my_defeditedit_?editprolog:my_defedittextedit_?texteditmy_editemacs_?emacsmy_editnotepad_?notepadmy_editpico_?picomy_editvi_?vimy_editco_current_user_file?compile???failprolog:call_ifdefprolog:s_statisticsprolog:c_rootxxxx?trueset_c_threshold_?100000set_c_thresholdset_c_threshold_?bb_letc_flagc_threshold_max??c_flagc_threshold_min?bb_letset_c_trace_??c_flagtracebb_letprolog:c_threshold_?bb_valc_flagc_threshold_max?$bin_cut??c_flagc_threshold_min?bb_valprolog:c_threshold110$bin_cut??wam.hprolog:c_chunk_fileprolog:c_threshold55500?trueprolog:wcode_c_prolog:make_ccodeprolog:make_ccode_$bin_cut?prolog:make_hcode???prolog:c_instrprolog:make_ccode_prolog:make_bcodeprolog:make_hcode_?prolog:wchunk??2?prolog:c_traceprolog:make_bcode_?{???,???,???,"?cwrite?cwrite"},cnl?prolog:patch_specialsprolog:make_comment_-?/??/??=??prolog:make_cmd0???.?.?.?.?.?.?.?.?.?.?[].93.32.42.47[].32.47.32[].32.91[].32.47.32[].32.47.42.32[].10[]??prolog:currpredprolog:wspec_c_$bin_cut?prolog:make_comment?prolog:write_c_chunk?prolog:wchunk?lwrite?prolog:c_trace1?cwrite {write?cwrite,cwrite?cwrite,cwrite?cwrite,(void *)write?cwrite},cnl?,?nllwrite??prolog:c_specprolog:wspec_c_$bin_cut?prolog:c_trace1?prolog:wchunk???prolog:c_spec_endlwrite_?put?fail??memberlwrite_?trueprolog:patch_specials_??????trueprolog:patch_specials_=?92=?34findall???name???,?patch_it????member???namepatch_it_???=??=???orpatch_it_???=??=???orpatch_it_??trueprolog:write_c_chunk_?seeing_telling1?tell?call?tell????prolog:c_chunk_fileprolog:wchunk_,?nlfast_write??prolog:write_c_chunkprolog:c_decorate_file_$bin_cut?prolog:c_decorate_file0?wam_bp?wam.h?prolog:c_chunk_fileprolog:c_decorate_file_?user_bpprolog:c_decorate_file0prolog:c_decorate_file0headerheader?init_gensym?prolog:wchunk/* do not edit: generated by co.pl */write#include "../src/global.h"cnlwrite#include "../src/c_defs.h"cnlprolog:c_chunk_file?write#include "write?write"cnlcnlwritestruct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} write?write[] = {cnl??prolog:c_rootprolog:c_decorate_file0footerfooterwrite?write"}};cnlcnlwritelong write?write_size=sizeof(write?write);cnl?{255,0,0,"?writeprolog:c_check_??prolog:c_check0prolog:c_check0_?integer??c_chunkinbb_valprolog:new_offset_?+?1?bb_setpredicateoffset??predicateoffsetbb_valprolog:get_offset_??predicateoffsetbb_valprolog:c_find_fun_????integer?unexpectederrmesprolog:c_find_fun_bb_valfun_symbol??bb_valfun_arity??$bin_cut?=????0?forprolog:c_find_fun_?11bb_letfun_symbol??bb_letfun_arity??prolog:make_bcodewrite_constant60???c_chunkin??bb_setprolog:c_chunk_begin_prolog:c_root?gensym???c_chunkin-1bb_letprolog:c_chunk_end_?c_chunkinnobb_letprolog:newP_integer?prolog:c_find_fun?????c_chunkin??bb_valprolog:newH_oldP_prolog:new_offset???prolog:c_checkprolog:oldH_oldP_prolog:get_offset???prolog:c_checkprolog:newH_newP_prolog:new_offset???prolog:newPprolog:oldH_newP_prolog:get_offset???prolog:newPprolog:c_wvoid_or?true?,?,?failprolog:new_offset?for?2???prolog:newH_oldPprolog:c_aux_load_integer_load_integer??????prolog:c_checkprolog:c_aux_load_integer_load_constant??????prolog:newPprolog:c_aux_put_integer_put_integer??????prolog:c_checkprolog:c_aux_put_integer_put_constant??????prolog:newPprolog:c_aux_get_integer_get_integer??????prolog:c_checkprolog:c_aux_get_integer_get_constant??????prolog:newPprolog:c_aux_write_integer_?write_integer??????prolog:newH_oldPprolog:c_aux_write_integer_?write_constant??prolog:newH_newPprolog:c_aux_unify_integer_?unify_integer??????prolog:oldH_oldPprolog:c_aux_unify_integer_?unify_constant??prolog:oldH_newPprolog:c_trace_greater_eq??$bin_cut?prolog:write_c_chunk??,?,?,?nlwrite ")write?writec_trace(" c_flagtrace?bb_valprolog:c_trace_?trueprolog:c_specc_chunk_variablec_chunk_variable??c_chunk_variable?prolog:c_chunk_beginprolog:c_skip22?trueprolog:c_spec_endc_chunk_valuec_chunk_valuec_chunk_value??prolog:c_check0?+???prolog:c_chunk_endprolog:get_offset?prolog:make_bcodec_chunk_value?0????prolog:c_skipprolog:c_instrput_structureput_structure???put_structure????prolog:newH_newPprolog:c_instrput_constantput_constant?????prolog:c_aux_put_integerprolog:c_instrpush_variablepush_variablepush_variable()defoffset???prolog:newH_oldPprolog:c_instrpush_structurepush_structure??push_structure???valoffset??rmoffset???prolog:newH_newPprolog:c_instrwrite_valuewrite_value?write_value??prolog:newH_oldPprolog:c_instrwrite_variablewrite_variable?write_variable??prolog:newH_oldPprolog:c_instrwrite_constantwrite_constant????prolog:c_aux_write_integerprolog:c_instrpush_constantpush_constant????prolog:c_aux_write_integerprolog:c_instrget_variableget_variable?move_reg??prolog:c_checkprolog:c_instrput_valueput_value?move_reg??prolog:c_checkprolog:c_instrput_variableput_variable?put_variable???prolog:newH_oldPprolog:c_instrwrite_voidwrite_void??write_void??prolog:c_wvoidprolog:c_instrpush_cutpush_cut?push_cut?prolog:newH_oldPprolog:c_instrput_cutput_cutput_cut()?prolog:c_checkprolog:c_instrget_cutget_cutget_cut()?prolog:c_checkprolog:c_instrload_constantload_constant?????prolog:c_aux_load_integerprolog:c_instrload_variableload_variable?load_variable???prolog:newH_oldPprolog:c_instrload_valueload_value?load_value??prolog:c_checkprolog:c_instrget_valueget_value?get_value??prolog:c_checkprolog:c_instrget_constantget_constant?????prolog:c_aux_get_integerprolog:c_instrget_structureget_structure???get_structure????prolog:oldH_newPprolog:c_instrunify_variableunify_variable?unify_variable??prolog:oldH_oldPprolog:c_instrunify_valueunify_value?unify_value??prolog:oldH_oldPprolog:c_instrunify_constantunify_constant????prolog:c_aux_unify_integerprolog:c_instrunify_voidunify_void?unify_void??prolog:oldH_oldPprolog:c_instrinline_variableinline_variableprolog:c_check_iv???prolog:c_checkprolog:c_instrarith_variablearith_variable??prolog:c_opcode????prolog:c_check_avprolog:c_instrarith_valuearith_value??prolog:c_opcode????prolog:c_check_avprolog:c_check_av00arith_op+?????prolog:oldH_oldPprolog:c_check_av11arith_op-?????prolog:oldH_oldPprolog:c_check_av22arith_op*?????prolog:oldH_oldPprolog:c_check_av33arith_op%?????prolog:oldH_oldPprolog:c_check_av44?div_3???trueprolog:c_check_av55fdiv_3?????prolog:oldH_oldPprolog:c_check_av66?random_1??trueprolog:c_check_av77?get0_1??trueprolog:c_check_av88put0_1()?trueprolog:c_check_av99?rel_op<?trueprolog:c_check_av1010?rel_op>?trueprolog:c_check_av1111?rel_op<=?trueprolog:c_check_av1212?rel_op>=?trueprolog:c_check_av1313?rel_op==?trueprolog:c_check_av1414?rel_op!=?trueprolog:c_check_av1515?int_only_op<<??trueprolog:c_check_av1616?int_only_op>>??trueprolog:c_check_av1717?int_only_op&??trueprolog:c_check_av1818?int_only_op|??trueprolog:c_check_av1919?int_only_op^??trueprolog:c_check_av2020?l_neg_3??trueprolog:c_check_av2121?compare0_3??trueprolog:c_check_av2222?arg_3??trueprolog:c_check_av2323setarg_3()?trueprolog:c_check_av2424change_arg_3()?trueprolog:c_check_av2525def_3()?trueprolog:c_check_av2626rm_2()?trueprolog:c_check_av2727set_3()?trueprolog:c_check_av2828?val_3??trueprolog:c_check_av2929?lval_3??trueprolog:c_check_av3030?symcat_3??trueprolog:antigenicarith_variablearith_variable??300trueprolog:antigenicarith_valuearith_value??300trueprolog:antigenicbuiltin_?builtin_???00trueprolog:c_opcode_+?????prolog:c_checkprolog:c_check_iv00fail_0()?trueprolog:c_check_iv11cwrite_1()?trueprolog:c_check_iv22cnl_1()?trueprolog:c_check_iv33var_1()?trueprolog:c_check_iv44nonvar_1()?trueprolog:c_check_iv55integer_1()?trueprolog:c_check_iv66atomic_1()?trueprolog:c_check_iv77is_compiled_1()?truecwam_bp prolog:$end0_truecuser_bp08c.c not compiled with -D C_INTERFACE unix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1rbhdef in seewbhset in tellwbhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arity%ldboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingvalue_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityvalue trailingchange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafebad arg in arithmetic operation%ld%-se%-ld %f@(#)86 1.21 R2/lib/m/pow.c, libm, bos320, 9238320b 5/19/92 15:32:36C8C8?Ge+?.B9 .~?[n P*?ǻV1՟$U?#yՀ08?ލi+`t .?M?DuKD?y;" z?Q_? zB ??P;Vx?#>߿ԟ u?/&:Ԁ,q?:Mq_.?Fapw@w>|?R6E)TPO?]zǘ?idל._w?ugӿ@?ӠL?猝xѵ?hD`Uq?54Dܿ?N? wN # ?$˟?,n{/?ӭ+5`ҿI]?ߛ0TҠ4??B[4ҀJ?){`*?v@wI?h Ƌ#? Ͽi R?'46ؿ ?ڐ*'?A?$?e'?Ԫ ?Ǜ-'p?S8?Ѐ4? gމ?k_? ʯ?Z×I?SN?M?@?'V?DΧ?!c?@Oo? ?BcW?"< ?G+4??j-d?QtX?x\?!`??H8?*r s?F?3N1?Sm.&?<#&?\?Ešœ?@*g?NhE?c?X0? L?aDTa?na?jx\8?@4?s?5?€4?|)Yn?¿M ?*>|?O}^?r%,?@_ ?򘻉#?ÀOJ? ?ʧ2?ÿ;?\Ί?A ?_????q0?ˀ D Q?ծ??ߜ2|\?Bm?:(r???L'c?̀φh?+L?̿/, ?j$?N~???w?`)!??%_ ?8f?/T?9?9ՀvH?@tJv?CV#?$)?N] ?gT?XB? ?bp|8?@0?lp?π_?vr??hw? ?^c{? /Hϗ?9?@z?vv?_~?E}?Ѐ,?/l?Р\?7?Cp?]Z;!j?L?O'?J?/ߌ? `?ȕ?@ I?5C?`?=?р?,?Ѡ᭳?%C?"?+"?+? ? # ?A(??N?Wz\\?`Uq?)_(?ѵ? o?ӠL? ?ӿ@?Ƚ?_w?ӤZu§??ޒ-?PO?bJS?@w>|?|*?_.?wF?Ԁ,q? {3 ?ԟ u?S,n?Vx? ʱ? ??+a?_?6g? z?A`0l??DuKD?Lڸ?`t .?X'z?Հ08?cVx?՟$U?nm$?P*?yĞ1?.~?5NJ??I`??;?)?G%斈ӿ>Ř?0)?*Vg[t?P1= ?"yѕm;%?pr?b̟Ag(??Cì`lH?)u?>݃&Кr{Mq??ddG :??!O"3y#?&??m4:aGK?0%Z[?SQΤDF(?P(_'?:'0 W4?pn߿t??B3 (?'\?ّˁ/`?$1??`nf?Z?$8fE@c'?0!)?"Xɨw ?Py?u[ѲT^ me?p g?]_nq!6?/?FyXͿ֐<,X?(?/\L˿<K?%Q?wXWƣ :?*n,?* 0>??Nos|Ȩ?0)? 鯿{?P!?C'F++Y?p=?[ ðf 5??r[؊L?&{?}8co‡Sa? ?h|sM%qZ?c?S~}N$`Ut??>~Zo?0$/?*"< զ?Pة?y;¿W|ܒ?pR@? 1ȿ71TL?Ԁ??챊 ?S(?-?c?sc?#?~qtu?'?U?e(_?J,??L a(v]?{yo?(?3w?.Ceu?89?X MH?Vn-?HB? ^?B?XX?Rl^?dY?heL?65~?~?xC$? p?] &1?M?y?̠?U?@i?:v ?v?q`?è-?1?Z-MC_?`?M?B 4?ăS;?*Q?+_͔?aІv?Y^w?X?*C?ξaE?h1?!RmA?"筽?x?~~U ?χ)J#??;w?4{?m?ܦC?'M1>?5?dNm?X_O?"?@?Њsf?>e? =?$c?dž!Hdv?r^?4?Iȟ?0,=? g?c:?_\`? ׎?C?ӎ2?y?灧 ?ӽN'?"Zr?poU?aT(?"wu?_P?2?4?NK?JA?~?=^ 8n?xYJN?$u?,J?ԧ7=V?($Z?s?X?84r?&?+?|}?( ?TK?רŇ(?8$? )?Ĵ?H&L!?1W/A?EG?X$?b>#?,bM?h#??0?Xw?x!?n?؄fHy%?(-&??دZ\?'f0?^*-?n ??失4V!?YW??f?2ُ? ?凑?]MϏ?"CI?y3|Z?وO?$4?jJP=?ٳ׻$X??\t&x?n?B@?N;AG3?u6@(#)19 1.18 R2/lib/m/log.c, bos, bos320 5/3/91 11:21:34 ٿ*tcE?aUUUUU '7>!5e~O(\>VliU?UUUUUU??CY!TD-CX@(#)36 1.14 R2/lib/m/cos.c, libm, bos325, 9334325d 7/29/93 13:34:56?!TD-<&3\v폼B!TD-?!TD-?_0mȃC8=ag+Z> ٿ*tcE?aUUUUU '7>!5e~O(\>VliU?UUUUUUCY!TD-CX@(#)41 1.14 R2/lib/m/tan.c, libm, bos325, 9334325d 7/29/93 13:35:04CM@pC8?!TD-<&3\?uܾE )N?q<ܿI$?uf?əUUUUUU?!TD-<&3\v폼B!TD-?_0mȃ?a;?}?UUUUUU?9Svm?du7???UUUUUUCY!TD-CX !"#$%&'()*+,-/0123456789:;<=>?@ABDEFGHIJKLMNOQRSTUVWXY[\]^_`abdefghiklmnoqrstuwxyz{}~? n[$?1?a֒Q2cu?;G?r})?KF?lh?,Gj0鿰f$M?Rm??p?ǾV3?@;"ԵRUҺc?׳4M?b>? "9?lj$/?|ĬԣJ-|eW?r-?'4@??RY]U?fS~섖ԐZr&?Mg?#P`?ٍ?nC (|?Nq? r|QWS]:"f?>^D?D,? YH? 3^H?4?MJgӅn.⿾La[u?BN?ّ=h?3?sa? ZQhϏdy/?)9^?չ^ϟ?$9d?ðx%?az,Jl <?z?h&?ּ?[[N?$2,E~jm)Հ?rf|7"?檱@?;:?/?}߿ }#wZE@I?iy 2?dbik?*{?ªB?Pv{m9ͿOW?a$X\==?.s ?€rȦ?POU?&ҿ9d0j,?X_B?_tgl?YLU?OB9)?Ly.ҩ#0 k?Ocљ?Sn@?ÀיO?Of?`҇1@ ! ל?F/<=?Y?l?8*?6dFEo?jW7Й}/4?'-LbtJ?bt燔??~ ~?xkOg?兑8Skꭅgлjc?7.?Ӝ0Qb`?Ԁi?jǞHt2?( iOT&?pt?}2?A@?0e?@3$]|`?&>ŤaڣXS??B?榿b_jj&?ۄA+vUx?AA>?J(??FXAt<7*?:?_aݜϿ=F>B?Ҏ\F>?ԄXo`?zuȿ x ?6sҋ4z#z\H$?A{?ԽTq`?տDlʜ?قIw6[z0?ո=J?]c?)f4!%,?$óEنoјB?J4~?0=??I,e$>?$TP ѵ?#?쌤fg?i׋)?ր=??Ⱦq?z)/?բ9?\пs?ȲVS!`FŠ,Û׿XS?hsn?M ?8-?Ȥr'p5kƿ Q-?W\?*c??K? A ?ȕSI|]%  x?D[?M`P?׀n ]eH?Ȅby;?ke]U?2 Xs?օE?3!HIտң&P[:? cR?f ?CW?G?S/]wſҺ#>?A~j?ם_EK?S+RB?40*￾8!GѝvJ@?{K9tp?b @?@-] +?[aCxsad:IԶ?밝x? ע{`?&*%Ψ(?%+Bk$^?띬U?D!?ٿ)m迧 |?ǯCŸHZڞw?늣\?{JSؠ?]^ ?Ǒ-Fտ>'^5?whP6?زOA5 ??a޿s* `?qQbH;#?dU(?&z ?ڀ{W?QIҿǛiOX%P?Q ?ᆠ?ڿeԿ5t"G?018 b'.?=MGߨ?VjQCE?q迬 mݿ? bߦTiS7u%no?*Hb7?ٌ??f,t?`W&՜ӇX?T*?h?ۀ1*5#?aZ/Iٿβ$ӘxN?:a>?2bc?jaӿnh&?Ɵ]p 0mxFөxl??/# }@?jS%-xR?x,8?o/?0x c:?ŀ 5\:0-Bt?d_|V?ۤoa@?ݿ}@9?S٣ ;?Pg(#?%;Q?q> N+#S?&{nEfP*7DOa??6wqԑga°?\\?EI5?S'x?ޝsYͫWԘxˋ?Gr=#?wu0?@}}?«ϧ+j *Ԟ-J?2y>6?ުg@?B(9:?w"C7ڿc]Ͽԣ Y?3;?ܹ ?AgZ~qQKԩ2گ? خ? @?)¿ yv?-*CԮV?:Ԥ?@ߠ?nP!mr?,R3Բjإ?2?r?# ??dǿ7Z!?\2L]Զ8]?~v?ߤ\ ?`W߿J9m?o9HT+cIJԺ%q?ŝ?G(D?fւ\??b?:hT-ԽYSR? eUE?8{?[kN?*$ƚ:Y6&D{?KWE?3&}@?NͿx)۬T?RaܿLi7Œ?x׎2?4?g ?=FQ҄z|ĎwG9?c%?M%4J ?^ÿqmz?cJ~d]h, 9o?O4pt?e; `? 9?-ڧ0)v?hX?:83]?}@?@x6Vs6?hllIuC-E?%q g?6f?_:R?~OY!_5Ⱦ~? _L? e?mZQ^?߯?8JJW?ޫ?+x@?v:U D?ܸ3_?b |տș^m2?4?q`?p뿵'ƞ??𷃱?p CmV?O՗%?On?[.޿ASX? c?xcA{^?罇7N? x@?5/ſg?hN ?lTQRͿųsHq?'?%^Z㼠? Ʃ,?=-?{ .?3\? -?$&?=nԶAO?,F!B?_?FM;- (?{3D?,<ͿԳ`G?Ǐ??w ߿V?D8?p\ԯ+G/?d.? ?X:8?:e?nvLԪ퀐?3|i?K?@ 8͜&?@U%7?<ԦbC;?ىQw? %e?`gf?ן$!nw?1Ŵ?ԡ?'L?$Μx?}nFoT ?o!? H^lԜjH+?H^v?;pз?U=k?\?Ҏ3Ԗs?曬E?RO?UA?&?!HݿԑM+.L?"NO?hȘr ?]p]Ls?:U?LO,ԋS|3R?r@ـ?$r@?p-S'VGX?ʟ)?l0ԅxTx?^I?╍Y`? 9?a5?A;?ol@?x~)o?I? ?@XvX? 7NU(?kYwZ~8?5y?"|?`4" }?)i?U͒p? S?LMn[?x툿շX?CNmC?riv;? %c%Y?a¿w?F"Bc?=Vͻ?nu,a5a?o1 ?c#u ?pt M~?~ \6?g(Z#[?`\zj?RQi ?R hnA?pO?o_R"}=? K?0+?J-W?{ ?UQIDm?庽U!?EM(@?cN4%\a#?[``?$dA]Յ?w?[L}e ??qys'&?Lw?=&8?:Zy?q<Τ?`[٧E ?N8"?!@ 0F/?~fh?yà?]D` ??, ?k驿&.h?iٟ)?:W4>??>f&?M?EO-mvD?U1 ?㱙?YWcgE?Yx~?ӑ'ƿǤ?AEӈ??fF\:/d?*rxf?->H?n$?Sc ? ?CK?X?@YX@? hߒJ p?vI?k])\fh?Pߔ?P4h&`??&rP?MHpv?#BÔ ?=W?I`?_'{xtt?c f?m%GoEM+?ݼ[? ?01!B ? i ?a@t?o@k?-d)P?/ٸ1?xÿө*$?z2T+?䗎? 3ܿ?Bb?`B?1)ſӝ}?gP?E,%?Kʜ#՛?Um`??#R@?>2k?_&w|?Mӿ _?C0 y?E (?傿I"?{CA? <~(?1і?~͠? ;U?jj?Ǝ??b?`? m_D^? ^Vɞ?0De] V5? Cxw?ɬ ??`"?ޫH]1?D\`G ??$'A ?_%߿?| =ڿѪV锱?Ƥ?Zfp`?("BX=g?v8$D?S(ћ"?%I?l#?x? @ז?f-\ыW)?nBY3?}ЇQ?>ΗG)?%?Dyܿ|4|*E? ?llh`? vN? VW?G lRQJ?uV?7?@zPvM? ?v?ɓ]aN?oXNr?mA?`.󉿢-G ?$C?M}#?]{?P@?'`Z,?5w7l_?㟿=  Q?Lu.S?'d ?翢2E?Q?Mi_.)U:?;>.}J?l~&`?4IĿĸ?bCj ?Wܿr?*6E?? ?]Վ信wq?K?=o=?lZy9?Y?ֿ+m?{D?ZߐXo?xR?Ѓ`? Vs@nȕ?SXqΌ?Y?.?*c??ܱ( @?LY?웿IWz?L?;pl?`O.Kج'?}w|?'_}[l6ރ?E)t?Lw? '?zsʳ?.kVп[?+?]h؞?sL1?xvne?484Яm?9mF?n&P ?DT\C?v:?:z<Пag?^&?~?wGq࿞V.OZ?s=BŞ??QͿЏϩ*?Ӗ?l\Q?r8ɀ|?qJ\³?D{3HM=?=}?^?>S">LT?m6?HHA.o걧y?ql3?nڽ??v䮾?ipl?KB0_/?a R=?N!`?_kSV,Yn?d4`L@?Ns\O7Қ ?P0s_?1̍.`?fA]Z~?`>?Q:S??@0?zt? ]Ȓ~?X\h,?S ^/~Z?0G}S?񳍫?8zv?PQV ?TQ| bg{? :?Yq?|6^),?@)"i?U=-?{s?{ ?D!%U>|=k=H/?UUUU?x?ֿ?!rX@@(#)35 1.10 R2/lib/m/atan.c, bos, bos320 6/15/90 17:56:56CM@pC8?!TD-<&3\?uܾE )N?q<ܿI$?uf?əUUUUUU@(#)34 1.10 R2/lib/m/asin.c, bos, bos320 6/15/90 17:56:48?!TD-<&3\?a=QM?Gi qȓ?3g ۼ?M >?BzE?}K!?#&4?P?M?1?q??m}M?33333,?UUUUUU?#&4?P?M?1?q??m}M?33333,?UUUUUUkilhnfoepdrbsat`v^w]y[zZ{Y}X~WVTSRPPOMLKJIHGFEDCBA@?>=<;:988655432100/.-,++*)(''&%%##"!!    !"#$%&''()*+,--./012334567789:;<<=>?@@ABCDDEFGHHIJKKLMNNOPQRRSTUUVW~X}X}Y{Zz[y[y\x]w]w^v_u`t`tasbrcqcqdpeoeofngmhlhlikjj@(#)32 1.11 R2/lib/m/acos.c, bos, bos320 6/15/90 17:56:40?!TD-<&3\?a=QM?Gi qȓ?3g ۼ?M >?BzE?}K!?#&4?P?M?1?q??m}M?33333,?UUUUUU?3g ۼ?M >?BzE?}K!?#&4?P?M?1?q??m}M?33333,?UUUUUUno definition for: main/1integer expected in halt/1trailing in unifytrailing in unifytrailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d trailing in unifytrailing in unifyunexpected push_variabletrailing in unifyexecutionexecutionexecutiontrailing in unifytrailing in unifytrailing in unifytrailing in unifyexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETexecutionexecutionexecutionEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2trailing in unifyerror in bb_list/2value trailingUnexpected: ISO I/O oprationUnexpected: blackboard operationstring buffer (-i option) exceeded or infinite term%ld%ld%ld%ld%sj@0j@k8llllllXll<l@X9 hl(j4`x8h$h%P(%&x$'(T,aP\abdDff@[io0)V!  errno@times@ _iob@fprintf@ sprintf@ exit@ strlen@ calloc@ malloc@ isdigit@ _filbuf@ ungetc@ sscanf@ fopen@ fclose@ free@ srand@ getopt@ optarg@optind@signal@ getenv@ access@ chdir@ kill@ stat@ fseek@ ftell@ fflush@ system@ _DBLINF@@ atof@ isspace@ islower@ isalnum@ ispunct@ isupper@ rand@ _flsbuf@ __startj,!                   $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                 $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt|     $ , 4 < D L T \ d l t |                !! !!!$!,!4!<!D!L!T!\!d!l!t!|!!!!!!!!!!!!!!!!"" """$","4"<"D"L"T"\"d"l"t"|""""""""""""""""## ###$#,#4#<#D#L#T#\#d#l#t#|################$$ $$$$$,$4$<$D$L$T$\$d$l$t$|$$$$$$$$$$$$$$$$%% %%%$%,%4%<%D%L%T%\%d%l%t%|%%%%%%%%%%%%%%%%&& &&&$&,&4&<&D&L&T&\&d&l&t&|&&&&&&&&&&&&&&&&'' '''$','4'<'D'L'T'\'d'l't'|''''''''''''''''(( ((($(,(4(<(D(L(T(\(d(l(t(|(((((((((((((((()) )))$),)4)<)D)L)T)\)d)l)t)|))))))))))))))))** ***$*,*4*<*D*L*T*\*d*l*t*|****************++ +++$+,+4+<+D+L+T+\+d+l+t+|++++++++++++++++,, ,,,$,,,4,<,D,L,T,\,d,l,t,|,,,,,,,,,,,,,,,,-- ---$-,-4-<-D-L-T-\-d-l-t-|----------------.. ...$.,.4.<.D.L.T.\.d.l.t.|................// ///$/,/4/</D/L/T/\/d/l/t/|////////////////00 000$0,040<0D0L0T0\0d0l0t0|000000000000000011 111$1,141<1D1L1T1\1d1l1t1|111111111111111122 222$2,242<2D2L2T2\2d2l2t2|222222222222222233 333$3,343<3D3L3T3\3d3l3t3|333333333333333344 444$4,444<4D4L4T4\4d4l4t4|444444444444444455 555$5,545<5D5L5T5\5d5l5t5|555555555555555566 666$6,646<6D6L6T6\6d6l6t6|666666666666666677 777$7,747<7D7L7T7\7d7l7t7|777777777777777788 888$8,848<8D8L8T8\8d8l8t8|888888888888888899 999$9,949<9D9L9T9\9d9l9t9|9999999999999999:: :::$:,:4:<:D:L:T:\:d:l:t:|::::::::::::::::;; ;;;$;,;4;<;D;L;T;\;d;l;t;|;;;;;;;;;;;;;;;;<< <<<$<,<4<<> >>>$>,>4><>D>L>T>\>d>l>t>|>>>>>>>>>>>>>>>>?? ???$?,?4?<?D?L?T?\?d?l?t?|????????????????@@ @@@$@,@4@<@D@L@T@\@d@l@t@|@@@@@@@@@@@@@@@@AA AAA$A,A4A<ADALATA\AdAlAtA|AAAAAAAAAAAAAAAABB BBB$B,B4B<BDBLBTB\BdBlBtB|BBBBBBBBBBBBBBBBCC CCC$C,C4C<CDCLCTC\CdClCtC|CCCCCCCCCCCCCCCCDD DDD$D,D4D<DDDLDTD\DdDlDtD|DDDDDDDDDDDDDDDDEE EEE$E,E4E<EDELETE\EdElEtE|EEEEEEEEEEEEEEEEFF FFF$F,F4F<FDFLFTF\FdFlFtF|FFFFFFFFFFFFFFFFGG GGG$G,G4G<GDGLGTG\GdGlGtG|GGGGGGGGGGGGGGGGHH HHH$H,H4H<HDHLHTH\HdHlHtH|HHHHHHHHHHHHHHHHII III$I,I4I<IDILITI\IdIlItI|IIIIIIIIIIIIIIIIJJ JJJ$J,J4J<JDJLJTJ\JdJlJtJ|JJJJJJJJJJJJJJJJKK KKK$K,K4K<KDKLKTK\KdKlKtK|KKKKKKKKKKKKKKKKLL LLL$L,L4L<LDLLLTL\LdLlLtL|LLLLLLLLLLLLLLLLMM MMM$M,M4M<MDMLMTM\MdMlMtM|MMMMMMMMMMMMMMMMNN NNN$N,N4N<NDNLNTN\NdNlNtN|NNNNNNNNNNNNNNNNOO OOO$O,O4O<ODOLOTO\OdOlOtO|OOOOOOOOOOOOOOOOPP PPP$P,P4P<PDPLPTP\PdPlPtP|PPPPPPPPPPPPPPPPQQ QQQ$Q,Q4Q<QDQLQTQ\QdQlQtQ|QQQQQQQQQQQQQQQQRR RRR$R,R4R<RDRLRTR\RdRlRtR|RRRRRRRRRRRRRRRRSS SSS$S,S4S<SDSLSTS\SdSlStS|SSSSSSSSSSSSSSSSTT TTT$T,T4T<TDTLTTT\TdTlTtT|TTTTTTTTTTTTTTTTUU UUU$U,U4U<UDULUTU\UdUlUtU|UUUUUUUUUUUUUUUUVV VVV$V,V4V<VDVLVTV\VdVlVtV|VVVVVVVVVVVVVVVVWW WWW$W,W4W<WDWLWTW\WdWlWtW|WWWWWWWWWWWWWWWWXX XXX$X,X4X<XDXLXTX\XdXlXtX|XXXXXXXXXXXXXXXXYY YYY$Y,Y4Y<YDYLYTY\YdYlYtY|YYYYYYYYYYYYYYYYZZ ZZZ$Z,Z4Z<ZDZLZTZ\ZdZlZtZ|ZZZZZZZZZZZZZZZZ[[ [[[$[,[4[<[D[L[T[\[d[l[t[|[[[[[[[[[[[[[[[[\\ \\\$\,\4\<\D\L\T\\\d\l\t\|\\\\\\\\\\\\\\\\]] ]]]$],]4]<]D]L]T]\]d]l]t]|]]]]]]]]]]]]]]]]^^ ^^^$^,^4^<^D^L^T^\^d^l^t^|^^^^^^^^^^^^^^^^__ ___$_,_4_<_D_L_T_\_d_l_t_|________________`` ```$`,`4`<`D`L`T`\`d`l`t`|````````````````aa aaa$a,a4a<aDaLaTa\adalata|aaaaaaaaaaaaaaaabb bbb$b,b4b<bDbLbTb\bdblbtb|bbbbbbbbbbbbbbbbcc ccc$c,c4c<cDcLcTc\cdclctc|ccccccccccccccccdd ddd$d,d4d<dDdLdTd\dddldtd|ddddddddddddddddee eee$e,e4e<eDeLeTe\edelete|eeeeeeeeeeeeeeeeff fff$f,f4f<fDfLfTf\fdflftf|ffffffffffffffffgg ggg$g,g4g<gDgLgTg\gdglgtg|gggggggggggggggghh hhh$h,h4h<hDhLhTh\hdhlhth|hhhhhhhhhhhhhhhhii iii$i,i4i<iDiLiTi\idiliti|iiiiiiiiiiiiiiiijj jjj$j,j4j<jDjLjTj\jdjljtj|jjjjjjjjjjjjjjjjkk kkk$k,k4k<kDkLkTk\kdklktk|kkkkkkkkkkkkkkkkll lll$l,l4l<lDlLlTl\ldllltl|llllllllllllllllmm mmm$m,m4m<mDmLmTm\mdmlmtm|mmmmmmmmmmmmmmmmnn nnn$n,n4n<nDnLnTn\ndnlntn|nnnnnnnnnnnnnnnnoo ooo$o,o4o<oDoLoTo\odoloto|oooooooooooooooopp ppp$p,p4p<pDpLpTp\pdplptp|ppppppppppppppppqq qqq$q,q4q<qDqLqTq\qdqlqtq|qqqqqqqqqqqqqqqqrr rrr$r,r4r<rDrLrTr\rdrlrtr|rrrrrrrrrrrrrrrrss sss$s,s4s<sDsLsTs\sdslsts|sssssssssssssssstt ttt$t,t4t<tDtLtTt\tdtlttt|ttttttttttttttttuu uuu$u,u4u<uDuLuTu\udulutu|uuuuuuuuuuuuuuuuvv vvv$v,v4v<vDvLvTv\vdvlvtv|vvvvvvvvvvvvvvvvww www$w,w4w<wDwLwTw\wdwlwtw|wwwwwwwwwwwwwwwwxx xxx$x,x4x<xDxLxTx\xdxlxtx|xxxxxxxxxxxxxxxxyy yyy$y,y4y<yDyLyTy\ydylyty|yyyyyyyyyyyyyyyyzz zzz$z,z4z<zDzLzTz\zdzlztz|zzzzzzzzzzzzzzzz{{ {{{${,{4{<{D{L{T{\{d{l{t{|{{{{{{{{{{{{{{{{|| |||$|,|4|<|D|L|T|\|d|l|t||||||||||||||||||}} }}}$},}4}<}D}L}T}\}d}l}t}|}}}}}}}}}}}}}}}}~~ ~~~$~,~4~<~D~L~T~\~d~l~t~|~~~~~~~~~~~~~~~~ $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt|„Œ”œ¤¬´¼ $,4<DLT\dlt|ÄÌÔÜäìôü $,4<DLT\dlt|ĄČĔĜĤĬĴļ $,4<DLT\dlt|ńŌŔŜŤŬŴż $,4<DLT\dlt|ƄƌƔƜƤƬƴƼ $,4<DLT\dlt|DŽnjǔǜǤǬǴǼ $,4<DLT\dlt|ȄȌȔȜȤȬȴȼ $,4<DLT\dlt|ɄɌɔɜɤɬɴɼ $,4<DLT\dlt|ʄʌʔʜʤʬʴʼ $,4<DLT\dlt|˄ˌ˔˜ˤˬ˴˼ $,4<DLT\dlt|̴̜̤̬̼̄̌̔ $,4<DLT\dlt|͔̈́͌ͤͬ͜ʹͼ $,4<DLT\dlt|΄ΌΔΜΤάδμ $,4<DLT\dlt|τόϔϜϤϬϴϼ $,4<DLT\dlt|ЄЌДМФЬдм $,4<DLT\dlt|фьєќѤѬѴѼ $,4<DLT\dlt|҄ҌҔҜҤҬҴҼ $,4<DLT\dlt|ӄӌӔӜӤӬӴӼ $,4<DLT\dlt|ԄԌԔԜԤԬԴԼ $,4<DLT\dlt|ՄՌՔ՜դլմռ $,4<DLT\dlt|ք֌ִּ֤֔֜֬ $,4<DLT\dlt|ׄ׌הלפ׬״׼ $,4<DLT\dlt|؄،ؔ؜ؤجشؼ $,4<DLT\dlt|لٌٜٔ٤٬ٴټ $,4<DLT\dlt|ڄڌڔڜڤڬڴڼ $,4<DLT\dlt|ۄی۔ۜۤ۬۴ۼ $,4<DLT\dlt|܄܌ܔܜܤܬܴܼ $,4<DLT\dlt|݄݌ݔݜݤݬݴݼ $,4<DLT\dlt|ބތޔޜޤެ޴޼ $,4<DLT\dlt|߄ߌߔߜߤ߬ߴ߼ $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt|     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                 $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt|     $ , 4 < D L T \ d l t |                !! !!!$!,!4!<!D!L!T!\!d!l!t!|!!!!!!!!!!!!!!!!"" """$","4"<"D"L"T"\"d"l"t"|""""""""""""""""## ###$#,#4#<#D#L#T#\#d#l#t#|################$$ $$$$$,$4$<$D$L$T$\$d$l$t$|$$$$$$$$$$$$$$$$%% %%%$%,%4%<%D%L%T%\%d%l%t%|%%%%%%%%%%%%%%%%&& &&&$&,&4&<&D&L&T&\&d&l&t&|&&&&&&&&&&&&&&&&'' '''$','4'<'D'L'T'\'d'l't'|''''''''''''''''(( ((($(,(4(<(D(L(T(\(d(l(t(|(((((((((((((((()) )))$),)4)<)D)L)T)\)d)l)t)|))))))))))))))))** ***$*,*4*<*D*L*T*\*d*l*t*|****************++ +++$+,+4+<+D+L+T+\+d+l+t+|++++++++++++++++,, ,,,$,,,4,<,D,L,T,\,d,l,t,|,,,,,,,,,,,,,,,,-- ---$-,-4-<-D-L-T-\-d-l-t-|----------------.. ...$.,.4.<.D.L.T.\.d.l.t.|................// ///$/,/4/</D/L/T/\/d/l/t/|////////////////00 000$0,040<0D0L0T0\0d0l0t0|000000000000000011 111$1,141<1D1L1T1\1d1l1t1|111111111111111122 222$2,242<2D2L2T2\2d2l2t2|222222222222222233 333$3,343<3D3L3T3\3d3l3t3|333333333333333344 444$4,444<4D4L4T4\4d4l4t4|444444444444444455 555$5,545<5D5L5T5\5d5l5t5|555555555555555566 666$6,646<6D6L6T6\6d6l6t6|666666666666666677 777$7,747<7D7L7T7\7d7l7t7|777777777777777788 888$8,848<8D8L8T8\8d8l8t8|888888888888888899 999$9,949<9D9L9T9\9d9l9t9|9999999999999999:: :::$:,:4:<:D:L:T:\:d:l:t:|::::::::::::::::;; ;;;$;,;4;<;D;L;T;\;d;l;t;|;;;;;;;;;;;;;;;;<< <<<$<,<4<<> >>>$>,>4><>D>L>T>\>d>l>t>|>>>>>>>>>>>>>>>>?? ???$?,?4?<?D?L?T?\?d?l?t?|????????????????@@ @@@$@,@4@<@D@L@T@\@d@l@t@|@@@@@@@@@@@@@@@@AA AAA$A,A4A<ADALATA\AdAlAtA|AAAAAAAAAAAAAAAABB BBB$B,B4B<BDBLBTB\BdBlBtB|BBBBBBBBBBBBBBBBCC CCC$C,C4C<CDCLCTC\CdClCtC|CCCCCCCCCCCCCCCCDD DDD$D,D4D<DDDLDTD\DdDlDtD|DDDDDDDDDDDDDDDDEE EEE$E,E4E<EDELETE\EdElEtE|EEEEEEEEEEEEEEEEFF FFF$F,F4F<FDFLFTF\FdFlFtF|FFFFFFFFFFFFFFFFGG GGG$G,G4G<GDGLGTG\GdGlGtG|GGGGGGGGGGGGGGGGHH HHH$H,H4H<HDHLHTH\HdHlHtH|HHHHHHHHHHHHHHHHII III$I,I4I<IDILITI\IdIlItI|IIIIIIIIIIIIIIIIJJ JJJ$J,J4J<JDJLJTJ\JdJlJtJ|JJJJJJJJJJJJJJJJKK KKK$K,K4K<KDKLKTK\KdKlKtK|KKKKKKKKKKKKKKKKLL LLL$L,L4L<LDLLLTL\LdLlLtL|LLLLLLLLLLLLLLLLMM MMM$M,M4M<MDMLMTM\MdMlMtM|MMMMMMMMMMMMMMMMNN NNN$N,N4N<NDNLNTN\NdNlNtN|NNNNNNNNNNNNNNNNOO OOO$O,O4O<ODOLOTO\OdOlOtO|OOOOOOOOOOOOOOOOPP PPP$P,P4P<PDPLPTP\PdPlPtP|PPPPPPPPPPPPPPPPQQ QQQ$Q,Q4Q<QDQLQTQ\QdQlQtQ|QQQQQQQQQQQQQQQQRR RRR$R,R4R<RDRLRTR\RdRlRtR|RRRRRRRRRRRRRRRRSS SSS$S,S4S<SDSLSTS\SdSlStS|SSSSSSSSSSSSSSSSTT TTT$T,T4T<TDTLTTT\TdTlTtT|TTTTTTTTTTTTTTTTUU UUU$U,U4U<UDULUTU\UdUlUtU|UUUUUUUUUUUUUUUUVV VVV$V,V4V<VDVLVTV\VdVlVtV|VVVVVVVVVVVVVVVVWW WWW$W,W4W<WDWLWTW\WdWlWtW|WWWWWWWWWWWWWWWWXX XXX$X,X4X<XDXLXTX\XdXlXtX|XXXXXXXXXXXXXXXXYY YYY$Y,Y4Y<YDYLYTY\YdYlYtY|YYYYYYYYYYYYYYYYZZ ZZZ$Z,Z4Z<ZDZLZTZ\ZdZlZtZ|ZZZZZZZZZZZZZZZZ[[ [[[$[,[4[<[D[L[T[\[d[l[t[|[[[[[[[[[[[[[[[[\\ \\\$\,\4\<\D\L\T\\\d\l\t\|\\\\\\\\\\\\\\\\]] ]]]$],]4]<]D]L]T]\]d]l]t]|]]]]]]]]]]]]]]]]^^ ^^^$^,^4^<^D^L^T^\^d^l^t^|^^^^^^^^^^^^^^^^__ ___$_,_4_<_D_L_T_\_d_l_t_|________________`` ```$`,`4`<`D`L`T`\`d`l`t`|````````````````aa aaa$a,a4a<aDaLaTa\adalata|aaaaaaaaaaaaaaaabb bbb$b,b4b<bDbLbTb\bdblbtb|bbbbbbbbbbbbbbbbcc ccc$c,c4c<cDcLcTc\cdclctc|ccccccccccccccccdd ddd$d,d4d<dDdLdTd\dddldtd|ddddddddddddddddee eee$e,e4e<eDeLeTe\edelete|eeeeeeeeeeeeeeeeff fff$f,f4f<fDfLfTf\fdflftf|ffffffffffffffffgg ggg$g,g4g<gDgLgTg\gdglgtg|gggggggggggggggghh hhh$h,h4h<hDhLhTh\hdhlhth|hhhhhhhhhhhhhhhhii iii$i,i4i<iDiLiTi\idiliti|iiiiiiiiiiiiiiiijj jjj$j,j4j<jDjLjTj\jdjljtj|jjjjjjjjjjjjjjjjkk kkk$k,k4k<kDkLkTk\kdklktk|kkkkkkkkkkkkkkkkll lll$l,l4l<lDlLlTl\ldllltl|llllllllllllllllmm mmm$m,m4m<mDmLmTm\mdmlmtm|mmmmmmmmmmmmmmmmnn nnn$n,n4n<nDnLnTn\ndnlntn|nnnnnnnnnnnnnnnnoo ooo$o,o4o<oDoLoTo\odoloto|oooooooooooooooopp ppp$p,p4p<pDpLpTp\pdplptp|ppppppppppppppppqq qqq$q,q4q<qDqLqTq\qdqlqtq|qqqqqqqqqqqqqqqqrr rrr$r,r4r<rDrLrTr\rdrlrtr|rrrrrrrrrrrrrrrrss sss$s,s4s<sDsLsTs\sdslsts|sssssssssssssssstt ttt$t,t4t<tDtLtTt\tdtlttt|ttttttttttttttttuu uuu$u,u4u<uDuLuTu\udulutu|uuuuuuuuuuuuuuuuvv vvv$v,v4v<vDvLvTv\vdvlvtv|vvvvvvvvvvvvvvvvww www$w,w4w<wDwLwTw\wdwlwtw|wwwwwwwwwwwwwwwwxx xxx$x,x4x<xDxLxTx\xdxlxtx|xxxxxxxxxxxxxxxxyy yyy$y,y4y<yDyLyTy\ydylyty|yyyyyyyyyyyyyyyyzz zzz$z,z4z<zDzLzTz\zdzlztz|zzzzzzzzzzzzzzzz{{ {{{${,{4{<{D{L{T{\{d{l{t{|{{{{{{{{{{{{{{{{|| |||$|,|4|<|D|L|T|\|d|l|t||||||||||||||||||}} }}}$},}4}<}D}L}T}\}d}l}t}|}}}}}}}}}}}}}}}}~~ ~~~$~,~4~<~D~L~T~\~d~l~t~|~~~~~~~~~~~~~~~~ $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt|„Œ”œ¤¬´¼ $,4<DLT\dlt|ÄÌÔÜäìôü $,4<DLT\dlt|ĄČĔĜĤĬĴļ $,4<DLT\dlt|ńŌŔŜŤŬŴż $,4<DLT\dlt|ƄƌƔƜƤƬƴƼ $,4<DLT\dlt|DŽnjǔǜǤǬǴǼ $,4<DLT\dlt|ȄȌȔȜȤȬȴȼ $,4<DLT\dlt|ɄɌɔɜɤɬɴɼ $,4<DLT\dlt|ʄʌʔʜʤʬʴʼ $,4<DLT\dlt|˄ˌ˔˜ˤˬ˴˼ $,4<DLT\dlt|̴̜̤̬̼̄̌̔ $,4<DLT\dlt|͔̈́͌ͤͬ͜ʹͼ $,4<DLT\dlt|΄ΌΔΜΤάδμ $,4<DLT\dlt|τόϔϜϤϬϴϼ $,4<DLT\dlt|ЄЌДМФЬдм $,4<DLT\dlt|фьєќѤѬѴѼ $,4<DLT\dlt|҄ҌҔҜҤҬҴҼ $,4<DLT\dlt|ӄӌӔӜӤӬӴӼ $,4<DLT\dlt|ԄԌԔԜԤԬԴԼ $,4<DLT\dlt|ՄՌՔ՜դլմռ $,4<DLT\dlt|ք֌ִּ֤֔֜֬ $,4<DLT\dlt|ׄ׌הלפ׬״׼ $,4<DLT\dlt|؄،ؔ؜ؤجشؼ $,4<DLT\dlt|لٌٜٔ٤٬ٴټ $,4<DLT\dlt|ڄڌڔڜڤڬڴڼ $,4<DLT\dlt|ۄی۔ۜۤ۬۴ۼ $,4<DLT\dlt|܄܌ܔܜܤܬܴܼ $,4<DLT\dlt|݄݌ݔݜݤݬݴݼ $,4<DLT\dlt|ބތޔޜޤެ޴޼ $,4<DLT\dlt|߄ߌߔߜߤ߬ߴ߼ $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt|     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                     $ , 4 < D L T \ d l t |                 $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt|     $ , 4 < D L T \ d l t |                !! !!!$!,!4!<!D!L!T!\!d!l!t!|!!!!!!!!!!!!!!!!"" """$","4"<"D"L"T"\"d"l"t"|""""""""""""""""## ###$#,#4#<#D#L#T#\#d#l#t#|################$$ $$$$$,$4$<$D$L$T$\$d$l$t$|$$$$$$$$$$$$$$$$%% %%%$%,%4%<%D%L%T%\%d%l%t%|%%%%%%%%%%%%%%%%&& &&&$&,&4&<&D&L&T&\&d&l&t&|&&&&&&&&&&&&&&&&'' '''$','4'<'D'L'T'\'d'l't'|''''''''''''''''(( ((($(,(4(<(D(L(T(\(d(l(t(|(((((((((((((((()) )))$),)4)<)D)L)T)\)d)l)t)|))))))))))))))))** ***$*,*4*<*D*L*T*\*d*l*t*|****************++ +++$+,+4+<+D+L+T+\+d+l+t+|++++++++++++++++,, ,,,$,,,4,<,D,L,T,\,d,l,t,|,,,,,,,,,,,,,,,,-- ---$-,-4-<-D-L-T-\-d-l-t-|----------------.. ...$.,.4.<.D.L.T.\.d.l.t.|................// ///$/,/4/</D/L/T/\/d/l/t/|////////////////00 000$0,040<0D0L0T0\0d0l0t0|000000000000000011 111$1,141<1D1L1T1\1d1l1t1|111111111111111122 222$2,242<2D2L2T2\2d2l2t2|222222222222222233 333$3,343<3D3L3T3\3d3l3t3|333333333333333344 444$4,444<4D4L4T4\4d4l4t4|444444444444444455 555$5,545<5D5L5T5\5d5l5t5|555555555555555566 666$6,646<6D6L6T6\6d6l6t6|666666666666666677 777$7,747<7D7L7T7\7d7l7t7|777777777777777788 888$8,848<8D8L8T8\8d8l8t8|888888888888888899 999$9,949<9D9L9T9\9d9l9t9|9999999999999999:: :::$:,:4:<:D:L:T:\:d:l:t:|::::::::::::::::;; ;;;$;,;4;<;D;L;T;\;d;l;t;|;;;;;;;;;;;;;;;;<< <<<$<,<4<<> >>>$>,>4><>D>L>T>\>d>l>t>|>>>>>>>>>>>>>>>>?? ???$?,?4?<?D?L?T?\?d?l?t?|????????????????@@ @@@$@,@4@<@D@L@T@\@d@l@t@|@@@@@@@@@@@@@@@@AA AAA$A,A4A<ADALATA\AdAlAtA|AAAAAAAAAAAAAAAABB BBB$B,B4B<BDBLBTB\BdBlBtB|BBBBBBBBBBBBBBBBCC CCC$C,C4C<CDCLCTC\CdClCtC|CCCCCCCCCCCCCCCCDD DDD$D,D4D<DDDLDTD\DdDlDtD|DDDDDDDDDDDDDDDDEE EEE$E,E4E<EDELETE\EdElEtE|EEEEEEEEEEEEEEEEFF FFF$F,F4F<FDFLFTF\FdFlFtF|FFFFFFFFFFFFFFFFGG GGG$G,G4G<GDGLGTG\GdGlGtG|GGGGGGGGGGGGGGGGHH HHH$H,H4H<HDHLHTH\HdHlHtH|HHHHHHHHHHHHHHHHII III$I,I4I<IDILITI\IdIlItI|IIIIIIIIIIIIIIIIJJ JJJ$J,J4J<JDJLJTJ\JdJlJtJ|JJJJJJJJJJJJJJJJKK KKK$K,K4K<KDKLKTK\KdKlKtK|KKKKKKKKKKKKKKKKLL LLL$L,L4L<LDLLLTL\LdLlLtL|LLLLLLLLLLLLLLLLMM MMM$M,M4M<MDMLMTM\MdMlMtM|MMMMMMMMMMMMMMMMNN NNN$N,N4N<NDNLNTN\NdNlNtN|NNNNNNNNNNNNNNNNOO OOO$O,O4O<ODOLOTO\OdOlOtO|OOOOOOOOOOOOOOOOPP PPP$P,P4P<PDPLPTP\PdPlPtP|PPPPPPPPPPPPPPPPQQ QQQ$Q,Q4Q<QDQLQTQ\QdQlQtQ|QQQQQQQQQQQQQQQQRR RRR$R,R4R<RDRLRTR\RdRlRtR|RRRRRRRRRRRRRRRRSS SSS$S,S4S<SDSLSTS\SdSlStS|SSSSSSSSSSSSSSSSTT TTT$T,T4T<TDTLTTT\TdTlTtT|TTTTTTTTTTTTTTTTUU UUU$U,U4U<UDULUTU\UdUlUtU|UUUUUUUUUUUUUUUUVV VVV$V,V4V<VDVLVTV\VdVlVtV|VVVVVVVVVVVVVVVVWW WWW$W,W4W<WDWLWTW\WdWlWtW|WWWWWWWWWWWWWWWWXX XXX$X,X4X<XDXLXTX\XdXlXtX|XXXXXXXXXXXXXXXXYY YYY$Y,Y4Y<YDYLYTY\YdYlYtY|YYYYYYYYYYYYYYYYZZ ZZZ$Z,Z4Z<ZDZLZTZ\ZdZlZtZ|ZZZZZZZZZZZZZZZZ[[ [[[$[,[4[<[D[L[T[\[d[l[t[|[[[[[[[[[[[[[[[[\\ \\\$\,\4\<\D\L\T\\\d\l\t\|\\\\\\\\\\\\\\\\]] ]]]$],]4]<]D]L]T]\]d]l]t]|]]]]]]]]]]]]]]]]^^ ^^^$^,^4^<^D^L^T^\^d^l^t^|^^^^^^^^^^^^^^^^__ ___$_,_4_<_D_L_T_\_d_l_t_|________________`` ```$`,`4`<`D`L`T`\`d`l`t`|````````````````aa aaa$a,a4a<aDaLaTa\adalata|aaaaaaaaaaaaaaaabb bbb$b,b4b<bDbLbTb\bdblbtb|bbbbbbbbbbbbbbbbcc ccc$c,c4c<cDcLcTc\cdclctc|ccccccccccccccccdd ddd$d,d4d<dDdLdTd\dddldtd|ddddddddddddddddee eee$e,e4e<eDeLeTe\edelete|eeeeeeeeeeeeeeeeff fff$f,f4f<fDfLfTf\fdflftf|ffffffffffffffffgg ggg$g,g4g<gDgLgTg\gdglgtg|gggggggggggggggghh hhh$h,h4h<hDhLhTh\hdhlhth|hhhhhhhhhhhhhhhhii iii$i,i4i<iDiLiTi\idiliti|iiiiiiiiiiiiiiiijj jjj$j,j4j<jDjLjTj\jdjljtj|jjjjjjjjjjjjjjjjkk kkk$k,k4k<kDkLkTk\kdklktk|kkkkkkkkkkkkkkkkll lll$l,l4l<lDlLlTl\ldllltl|llllllllllllllllmm mmm$m,m4m<mDmLmTm\mdmlmtm|mmmmmmmmmmmmmmmmnn nnn$n,n4n<nDnLnTn\ndnlntn|nnnnnnnnnnnnnnnnoo ooo$o,o4o<oDoLoTo\odoloto|oooooooooooooooopp ppp$p,p4p<pDpLpTp\pdplptp|ppppppppppppppppqq qqq$q,q4q<qDqLqTq\qdqlqtq|qqqqqqqqqqqqqqqqrr rrr$r,r4r<rDrLrTr\rdrlrtr|rrrrrrrrrrrrrrrrss sss$s,s4s<sDsLsTs\sdslsts|sssssssssssssssstt ttt$t,t4t<tDtLtTt\tdtlttt|ttttttttttttttttuu uuu$u,u4u<uDuLuTu\udulutu|uuuuuuuuuuuuuuuuvv vvv$v,v4v<vDvLvTv\vdvlvtv|vvvvvvvvvvvvvvvvww www$w,w4w<wDwLwTw\wdwlwtw|wwwwwwwwwwwwwwwwxx xxx$x,x4x<xDxLxTx\xdxlxtx|xxxxxxxxxxxxxxxxyy yyy$y,y4y<yDyLyTy\ydylyty|yyyyyyyyyyyyyyyyzz zzz$z,z4z<zDzLzTz\zdzlztz|zzzzzzzzzzzzzzzz{{ {{{${,{4{<{D{L{T{\{d{l{t{|{{{{{{{{{{{{{{{{|| |||$|,|4|<|D|L|T|\|d|l|t||||||||||||||||||}} }}}$},}4}<}D}L}T}\}d}l}t}|}}}}}}}}}}}}}}}}~~ ~~~$~,~4~<~D~L~T~\~d~l~t~|~~~~~~~~~~~~~~~~ $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt| $,4<DLT\dlt|(4j,j0j4j8j@jDjHjLjPjTjXj\j`jdjhjljpjtjxj| jjjjjjj j jj jjjj jjjjjjjjjjjjjjjjjjkkkk kkkkk k$k( k,k0k4k8k<!k@kDkHkLkPkTkXk`kd"khklkpktkxk|kkkkkkkkkkk#kkkkkk$k%k&k'k(kk)k*k/usr/lib:/liblibc.ashr.o fp_raise_xcpBinProlog3.45/bin/bp.sparc.solaris100755 764 764 777050 5764214641 16250 0ustar javierjavierELF!H44 (44FAFAFDFDFHFH/usr/lib/ld.so.1veqgtnBZ~mrsEW}RX4i 3j*u7ko+O`zC.JGpyI{P[1)]Ff$#6w(=!%-&A,LN:9>QadT\MSb?V<DH5|c"0x'8h2l@U;_K/^Y8!Hߘ ߤ ߬ ߸ FD FHFItG$p40߬ >>HJ!HtQ?X]ޘ$iG\p4 $wI |ߤ `0IH HGXX$dT3.L@!4$#h t<$G-FDCIxP-PZ(xf nphtLy2IP(dhHdGl<GGG98\48|DHH4GhGP 4D.),>HB)dQ#]t$a=t|pI(tz?0P<L,Lh ˬD2 ,4r|҈8<@=8,L)Hp/l9"LLAGH@0Z$f,xnzI|h0HHH(G8(80H.8LFH/0$!H'1=T 8L>HH@NU@[`Tg7\pݴh|G )*d(8h`,LH!G-lA00<$($/81Gt6  @E@LIHT, dpHu|D"028xGH8xT/@)HIFHh (4 +޼<=ߨ JH|Qx[t0@eFAl߸ yH@TdHL"LG"!H>$#, !߰ L \ HXGôXx$HHXMIDY<e7T|mߘ  syH}P9(4#$GDѨH$G,5`@Hhtabledcg_telllvalgetoptsymcatterm_append__DTOR_LIST__call_engine_startanswerhgetnew_builtincallocrun_bpatof__CTOR_LIST__seeing_telling_atdefwam_bphsettanisdigitstats0overflow_byg_environ_endstart_wamdestroy_engine_iobstat_leftbp_haltlextableop_classsetarg__flsbuf_GLOBAL_OFFSET_TABLE_user_bp_sizeis_engineunix_getenv__ctypeapplyfoutinit_bpuser_bpcopy_from_enginefloat_opfseeksignalswriteatexitexitrandunifydet_append0restart_origfunctorunix_cdhdeflogaccessatomtablemallocsprintfmake_symtablemake_char_arraypowmake_atomtablelocal_errorif0bp_prolog_callmax_initask_engineunix_killdouble_to_intsfindall_lift_heapmake_floatinit_csread0bp_versionbp_consinit_instr_lendcg_connectints_to_doubleexec_linkload_engineunwind_trailftellinit_codecputimesscanfmultitask_enginescan_recovershell_1unix_accessc_interfacesee_tell_atolder_file0compareungetcfclosegetenv_sysconffloat_funsreadname2listwam_bp_sizeinit_randomsee_tell_DYNAMICstart_profilercopy_termflooradd_instrinterphfulllist2termchdirhcount__iobinput_floatnew_funcwrite_float_exitmake_byte_arrayinit_common_memnewatommake_opload_kernelexpenvironsrandcreate_enginefindall_store_heapfindall_load_heapbpinstr_lenterm2listlink_haltend_profilerfreeseen_toldhbakoptindopcountinit_engine_memstrip_cont0asinhindexoptargquietmesstartup_messtrcmpsysteminit_orig_wamget_cmd_line_optionsmake_hentryacos_PROCEDURE_LINKAGE_TABLE__edatafopenvalid_opmatch_termolder_filechange_arg__do_global_dtors__CTOR_END__strcpyinsert_opinput_fun_etext_lib_versionnewlexsuspend_enginekillbp_exitatomstampfflushquiet__do_global_ctorsatanload_engine0fatal_error_ctype__DTOR_END__mainfloat_comparehinit__filbufsetbad_instrstrlenheap_or_bp_haltstat_usedstatbp_heap_topinterp_fromatombak_finihlistsinhstampdefault_start_pointwarnmesunix_argvfprintfsoutfloat_fun2timessfullop0coslibm.so.1libc.so.1- D@<GFGGG G,G8{GDGPSG\ GhRGtGGGoGDGGGGHGG7G)HxHHyH(zH4PH@HLHXHdCHplH|HHVHOHHHHH(HHII " @D# @iw#@e@/`, @ ~"@/@Z@[w##   w#`*` 2`@ ww#, ?, w@3"㿀@7@8 *`& .  . >  ~<*  㿐!< @!㾐~b!ӄ" X @; 8#+ #@ +`@ wc+`@ w#ؒ@㿐w#ے㿐!x`@㿐!x`@ 㿐!< 4-  4&: !x@˒`80!x`H@Ŕ0 . !x`X@> 0 2`  *`6  !x@`h 㿐~"  㿐㿐.`ґ* a<  & !x `x+ @# 㿐@ @ @ ~ b@#ƒ㿐@ @ ~ .@#㿐x #~b@v  $ x@q $ x @l $ x @g $ x @b $ x @] $ x @X $ x @S $ <x!@N $ @x!@I $ Dx!@D $ Hx! @? $ Lx!0@: $ Px!@@5 $ Tx!H@0 $ Xx!X@+ $ \x!h@& $ `x!p@! $ $x!x@ $ (x!@ $ ,x!@ $ x!@  $ x!@ $ x!@ $ x!@ $ 0x!@ $ 4x!@ $ 8x!@ $ d$ t$ p  $ x!$ @ $ h T d @# b X d @# bx!@Ւ $ l$ $ $ ā㿐 x!xbx# xbx( xb8)!Y@ 㿐@ 㿐@ 㿐@ 㿐@| 㿐@y.  6 "@`㿐 "㿐$ @$ 2$ @W.`$ .`." $ $ $   $  $  $ @ 㿐Ҕ x@a( פa(@m`? " @ d?!~"xH$`x  $`| " `! "  @@  $`Ƞ  ?@"E$`̀ " U 2  x "P 㿐~?А @x`""` đ.` "@ Đ "`"p : //4㿐!x␘ j l`?!x☘ a H "x⠘ U $ "Ҕ x!@ J " x"x " ~@ ~@` @(@ 㿐~""`~  ~"а ? "bД(xl" 㿐 @[ $.`(  .."@"`"` "` "`"`"`"` $"` `$ d` 㿐 "  @, |@* X@( 4@& @$ 㿐 " @h?? K#%#x+Ҧax@*`: ?* :  z* 100011101@11111111h1000XDc(@쀢 _* ]%aDc(@ؔ耢 U* S$Dc(@Δ䀢 K* I$Dc(@Ĕ A* ?$ Dc(@܀ 7ܑ* 5$Dc(@؀ -ؐ ) * '$Dc(@Ԁ Ԑ  * $Dc(@Ѐ Б* $Dc(@̀ $ "? ??s !xc0x@xx@[#b "@ * @㿐1}"Аxcؔ @J -㿀)x#'y%yH#y`x!y #\Ҕ#d1}"#ha|#`y@,`㿐%~ $  $ ~ޢ $ !wѠ#,   @~,    ,Җ!! *` 㿐 !L#~@ @ !y`@۔~" @6@V̐֐㿐Ð@ؐ 㿐!F!4!4 `?*" "bL !4!~"b8&* $"؀ "bH `?㿐!"H@"Ha4~ ؓ*`@ y "H $"H ` *H "H `*㿐!y8`@ry!v 㿐L   J. J@ 4"8 ? .    ` `4@_  4 ? @`.  ` .  )~ "`" `" }`. " 8 "8~bL "*@!4: 8: @  y!(y!0a4  L   @a48 "8a4 `㿐a !ya@@Ֆy!H f* .`2  @    ("("@ " 㿐 & !~"aH$ bH$ b8$ `e$ $ 㿐 & ~"""H? @"H @ @  & 㿐~"T"T@ny!`㿐 ` y! :` u㿐&&'y? ?" @ @@`@ $```@8(&@ 2&6` "&&rP\@   1 P`&Pa"@ 2&@6  "&@&@@TP\@   t P`&PC"@`C >6  :  yZ @:$@P\@   yJ P"P`"`P &P$@ .  $ ?@  $.  @$ @?$8a 㿐!ya@  㿐~"T@2yaɔ㿐 X 4# P#`  | ~"`$"D "`( " 2 " P" "@+`?㿐ْ㿐~&`bDbD&``@X @ ' 2@  '?`P'?`' @㿐ɐ 2 |y^"*  X 4& P~"$bDbD"(` @(   $@ 2 `$ P$ $@ Đ "@ "  " & , & t" 㿐???ǐ?㿐    4 , t@  㿐 @:    "@ 2    㿐: `%O#*`@@@,???@H@@Đ "@Đ "@Ē "Đ "@","t " yb ʐ  㿐@:  !y@b8   "@","t" 㿐 $1~?@ ? @ ~ @ @:  `"@Ѐ@(@~ "̰??'  !'~@ :   \   @:  ""@Ѐ@2`"  ?  ??2@ 㿐 +~bT ` P"$*`@q`DDEELH@II@E\IF0FDF`FtJJ J(JlJQR RRRJJKHK\SXTNFP,GLGPpGOGPHKG P\GdFSStQUPI I,PPPPQ$Q0QPQ\RSXHX|V\dYYZZpZ[[[\]L]^__``a a|ab4bbcHcdd`deehefdffffgggh hdhhi kjk,n4i,iLiiiij jkmmdmnl0lllmm$qxqxqxqxqxqxqxqxqxqqqonnno4oTotopDpppqq8qqU|VWW|XXXYYDYTY|YYY4&C4&@&=`4 "2/44`@ 2)@  @ 2@  P \@   y–a  P`' P"@`@$@ 2E`4&@ʹ, 2 4& , 2 &@4, 42` Ɩ ", 2 4& , 2 4 4, &2`& 4, & 2 &@`&4 H, 2 &4, 2`&@`& &`` 4 ,,  2 4, &@4, & 2 j "}L4&, &@2 &`q`"6`@ 2#@  @ $@@T P \@   y  P`' P"@2@>4$@&@6`y"h đ4`@ 2#@  @ $@@ P \@   yȖg  P`' PX"@24&  &@ʲ`ȶ ` @ ?@ @?3"B - 87" ְ 8@! `@  @  @ "@"` 8@ `@  @  @ "` , δ 4`@ 2)@  @ 2@  P \@   y%Đ  P`' P"@`@$@ 2Z4<` , ` 2` 4`@ 20@  @ 2%@  P \@   y  P`' P"@`@$@ &@4, &`24` , 2 4`@ 22@  @ 2'@  P \@   y8  P`' P"@`@$@ &@4, `& 2 &`2` ,  4`2`& `& 4`@ 2)@  @ 2@  P \@   yR  P`' P"@`@$@b 24, `& 2` e`  v` 4&@& 4, `& 2 .&`4&@#& 4&@& 4, ;&`4&@0& 4$@&@4, `& 2  &`4$@&@4,  2 &``& &`8` 4$@&@4,  &`4$@&@4`&, &`2  &``  8@l  4 yf☓, `,  & 2 ,  & P&&& P4' P, ` `& & 2 ,  1 Pi4' P, ` `& & 2 y~". yy") Ā4, 4,  @ ?, "@ ?}4 * &, 4&?2 `2m&?@  @  @  2]&?4  "Y&?W&?, 2 `2&?@  @  @  2&?4  "&?&?4`27&?@  @  @  2'&?4  "#&?!&?, 2 `4 * &@  @  @  *`4  "& & & , 4 2 &@*`&& "` `@  @ @bT@K2`bTW* `"6,@ & 2@ /, `@  4 @4  @4 ?bT, ,@ @ ,bT *& * `",@ & 2@ ,@  ,4  2@ ,&bT@2  8@ӖbT@ 8@  y`M Tp :    ' , ' t"  Đ !"@@J W 4 | Xc ' P & ~"$bD` "( & 2 & P& o& tb xy"/@2Vy# Đ@N"I,   @Ζ "=   @ "2 @ @ "$   '  & @!2bT@K ~b@!~"y@{Qc "@{o`@ 2@  @ 2`@  @  @ "`@  @  @  `@  @  @ A v4  t` @  4 @ @4 ?bT, *@ƒ@  ??  * @` @ , 2  44 U :f5&; , < 2``*4 4&&??  * @` @ ޑ, 2  ѓ44&; , < "2``*4Ð 4&??  * @` @ , 2  44&; < Z@, 2  *``4 4&??  * @` @ , 2  44&; < : z Z , "2``*4n 4&? ` 2 ?:` 2?y?ڒc(?  * @` @Z V, 2  I44&; , < : z2``*46 4r&??@6 2, 2  %44b&, 2   @z4  ? @y4 ? N& ~ `  Ϙ *` @? "@@y "  , 2  4+  4+  && ?  y[c8~@? "@4 @y < " *??  * @`  @ǒ ")6$??  * @`  @ "$ ݴ??  * @`  @ "˴4ƴ??  * @`  @ "&??  * @`  @k "2??  * @`  @T ""??  * @`2; < , * 2``*  4, 4h&??  * @`2; < , : 2``*  4 4P&??  * @`2v , ?2`` 4 4:&??  * @`2` , ?2`` 4 4$&??  * @`2J , ?2`` 4Ґ 4&??  * @`243, ?2`` 4 4&?@f?* ~b, 2 44&?  ycX?`<  4` "@  y cxy4 (, ch+ 2``{@4&@ǔ "@  "@  "~"&?@4  "?` 2` "?@&??` 2` "?@&??@??~";, 2  4-4i&@ +, 2  44Y&@ , 2  44J&@ , 2  49& @Z, 2  44*&@, 2  ޓ44&, 2  *  4Ӑ4&@ % "8@  "0?:  ~~"t"x, 2  44&@ ʒ "?@ : @ O "״@ o, 2``44&?:  2??  24  2@e" @̒, 2  4k4&@ "@`, 2  S44&@G"?  $4  ", ?:  2  8@yO#    @}" ' , 2  44U&@, 2   44F&@, 2  447&~", 2  @44)&~"?$@ P \@   y  P`' PA"@@ ": ~", @2 $@ `44&@, 2  44&@X, 2  44&@, 2  44&@ "ƴ@, y휐#L đ2  t44&~, "ē2``*  4g4&@f, 2  4X4&@˒W, 2  4I4&@ڒ "~@ "v@  "n, 2``%44a&?`2@@ P \@   y8א  P" P`"` P ' P?p$@???:`:c:, 2   44,&?? "U% "N??, 2  ӓ44&?  2:<  "5?™;  2 ,  ,  tyӐ# zΐ ~ Đ@:, 2  ?44&ے㿐!  "b<b<* b<b< *?b<*b<* b<*3b<*b<*b<*b<* b<*b<*b<*Ab<*b<*b<*b<*b<*b<*b<*b<*b<*b<*1b<*b<*b<*b<*"b<*&b<**b<* b<*$b<*(b<*,b<*5b<*6b<*7b<*8b<*9b<*:b<*;b<*`<㿐N  -`?  ,  , : @u  ,` ,`@@&@ &@`?㿈ג쀢 *  ݒ 2 2  `" " 㿐`: -+5z/< #  @  Z~〤 ʀ ?ހ~ b ےb` "`, # @,@@   ,`@ # @, # @"`z`@널  @#a)z'z    *2` *` a2@tJX `a `:x @t?`@ az@t7`` "T@2@ <z A&`4 ??, * Dy` # "M C "8l&  "  "Cc&  "^&  <   &< *` < &   <   &< *` < & *` 8& < 1&< * @/& &  < 1)& &  < &&  < & `!~ @"T< `"T *@W@ @ < $@" `, *  㿐~  "b < 8"^!. @ P~~~D|~P{~4~ bTbT@)~Ȁ ~! "`X~ 1" #,~! #`` <~@8  `"@ `?@(`  <"  < "  "z  "aY ~!̀ 2T ~ "!@ < "@ @ "@ `' "` `' ` < "` . ~!̀ 2/  @ < "@ ?*@. "!z`~ @rQ#az^   ~ ' "~!̀ 2  gzL!  rN`_ ~ ~ b!@  2U ~~"T@a |`"J ~!̀ 2 S~!̀ 2ڰ  ~!̀ 2Ӱ ~!؀ $~  c ~ | +" ' .`2` * "~!Ԁ 2   c 2  | *"!؀   c 2 | " ' .`2` * "~!Ԁ 2z   c 2t  | o"~!̀ 2 ~!؀ $~  c ~ | #" ' .`2` * "~!Ԁ 2N   c 2H  | "C"!؀ 9  c 25 | '" ' .`2` * "~!Ԁ 2)   c 2#  | &"~!̀ 1  @ <  "@~!̀ 2& ~!؀ @~  c :~ | -" ' .`2` * "~!Ԁ  ~  c ~ | ,"!Ԁ  ~  c 3~ | 7"!Ԁ 2   c 2  | 8"!؀   c 2 | !" ' .`2` * "~!Ԁ  ~  c ~ | "!Ԁ  ~  c 3~ | 5"!Ԁ 2   c 2  | 6"~!̀ 2 ~!؀ @~  c :~ | %" ' .`2` * "~!Ԁ  ~  c ~ | $^"!Ԁ  ~  c 3~ | 9P"!Ԁ 2M   c 2G  | :B"!؀ 8  c 24 | )" ' .`2` * "~!Ԁ  ~  c ~ | ("!Ԁ  ~  c 3~ | ;"!Ԁ 2    c 2  | <"~!̀ 2 ~!؀ 28   22 ~!Ԁ   # .'  .$"~!̀ 2 ~!؀   c 22` 2`2 | /" ?*@. ">  ?*@.` " .2` * "~!؀ 22  ? c 2, 2` 2( `2% (  2 : 8   < 0" ?*@* "  0?' ~!̀ 2  ?.`* @ " ' o"~!̀ 2  ?*@.` " `' ^"`~̀ 2q  ?*@.` " "  '  ^~E""~!̀ 2X  @ <` 8"@ ?*@.`l "~  !?N ?* * 2 @"~!̀ 22  ?*@.` "  <~!̀ 2!  ?*@.` "  @~~b<"!  @"ؐ   '   z棖8 㿐 "!H@ <"@"<~ ~ "̖ " * ~ & !~""D~ "! <"D ""D @ j  & "D" `& 㿐? &@o' `&  @`#" @o$0  ? &@o `&  @ $`0? &@n0  & )~" T"  %"zaHP@nՔL  L T*@ ;  T!LzaPH @n#\z尐!%"㿐  㿐z@na z\zY!z勐!u !Qn +~? $@n `$  @?P? $@n `$  @@? $@nr `$  @0a8 !b| b|? $@n[ `$  @*`: ? ,@b|J b|8 &b|*b|}2@nH z!za!za㿐~ ""R ')z, W  ?M : *` @ ,  ``` &`",  @`*  "zb@mǘ z*  ``` @m"H$zː"X,2,!~zbx"|@m}"| 㿐 z"Ҕ  z"ҔP @ 㿐O    ې*` (" ?㿐?   z䆒b:  ~bĀbĐ zwb`+ @o 㿐? ` 2` *` z_c2 `* @ml@  Q 㿐? `  zc0:`? `  2`  zcX7 *`2 `* @@mE `?㿐?  z6  . c2 `* @m1@  zc 㿐?  zc? `  z c< @m:`  {`*` ( 㿐` 2&` `  ` @` ` 2&2` "&& ` 2w :``je *`@<\|8L~$ K"  @  8 P P0  ( "H~4bؠ" *   " "8a4 "  a0 "@* *` * *  Δ x`, ͐    `. Ð @ 㿐? ` ?2`  {* @8  3   *`+ 2` ~2  *`|*  {`X*` 2` `4*`# ~ :"|{ `h2` ~ *`| ; {`x@k~"| 㾀@l!?{  @lh? @&  0 㿐? `  {`*`2 `* ? `  *`2 * ΐ  {`㿐??  2`{⺒a, 2 `* @ `<`~bhbh`T1&`L@j`  {@ka 2{\!(@ 2~{S!H~{@ka L@ 2~{@!X""~@""t9{~bhbh`X.&`P@.`  {@kmah%@ܔ 2~{!p~{@k[ah@x 2~{!""~""x!$  㿐??   2` {&a ``:~ "`{!  ~" @k5 ?" 㿐?2   ~ "{! ~"@k*  㿐 -!~  "~:{"5~6{"" @~?@??  ?@W?~?@?P~@j"~" "  d" p"" @" $"??@>?@j" $"?&?@j"0ᚐ"㿐  `2 *` "*` @` *`2` !~ *`"|@j @j"|㿐?   *~{"|b@:@j`?2 `* @???: :`:@ 㿐 `  @ ``   `@  "@"@ `  &. > >`.`2 2` * *`@j< 6`6 "@`  ` 㿐`2 @"@@`@  `@ ` @ ` ~"p  ~"p@ ؒ2 ` 2 4``   `@ ` ` 㿐@  @   @ @ `3    E [R ?=+ S, I` 2  "   `2 ` " ` @` ` 23  :` 2, ! %  !{bH@il{y"X ?+,  &&  ?   㿐   6 !~{"|b@@iF>  "| .  2 `* @~| %|~ `   @` `2` *`    @` " ~   * 㿐@`2 @"@`@       ~"| p% `&!`J@ ~ & @ `*  &J@  ~ M&    ` `{߷"p  {b{b߿㿐~"& , `( 2` "8 {ߥb" { && `     ` "8& #@㿐 c  3`   {Zc @   @ P`   &   @   @ "8`{7#X=   2  {'c       `  {c 2 ?**`   {c {SH  ? `@2"  0 "    "  "    *"@" ""  " 㿐` @  2@  ` 28 2`3  `1?+*` &* `"*@ & 2@ *@ & ** `"( & 2 ( & (8  | Ֆ 㿐P     |Ėy m & `   @` X` 2`  O `H `2 \@Ґ #@#` `;"\@ǀ#@#`&`"Ǚ2`?* `+  & 2 + `  " ` @` `  2`  8\:\ ` 2&2` "&& *  @@ "㿐,8`  2`   & f2&, 㿐`?&`"?"? @ `  |`(`?*@ " `  |`X˔:```*`  <" : *   " 㿐`` @?  |2 `&`   `  & ` 2` 2`& ` `ఒ2$|i  $`"㿐`"@` "`"```  $` "```Ԡ ` 2?* **  # @ 2@ *  "`"`㿐  | ` `  3``2~|a* ". ?". . "?+@  " "@ 2 . 㿐?  `?<  8 %~|a 0& 2`P~`P`\@   |'@Ɛ `P"`P "``P &`P~",` "@㿐~"`2P@~P\@   |@ܜ P"P "`P &P~" " & & &   $&@ 㿐?  | aP?` <  4` 2@|ax@ `| a4 @ *`|al$@@@ 2`P:?`P`\@   |ܙ@8 `P"`P`"``P &`P? $@㿐? `  |1a? :` |2 2 #b`  |b@2`( |bp | b?+ ` @ |b  "~D  D "D㿐 *` !|b@dȕ*|Ր#̐ 㿐!#~=!0$b,!0 b"bP?" @ 㿐!0?`  "~, "*` `  * @  @     '~, * @  '~, * @` 2 !0%: : @ |#( $@"@""P" *㿐!0?`  "~* "*`@ `   * @ @    ~* * @   ~*@ "*`  | `| "`*#0 ҂0@ ~* ( ~ ~" !0  * ( 逢 㿐!0? @~* b*  ~  -~*@ "*` ` !!0 `? @  * *          | & &ɐ#X? !0 4 ~P  @ !0  0a0 ~P  @  @  "  #  a0 ` 㿐 ` ` 2` !0 >`+~%~?# "P  @ {b v`~"T@o  j 8  `````6` 4VҀ R~"@N`M8 | kh  b `  $ $  $ $$  $  2$ *  $b  `   $ $  $ $ $  $  2$ *  $  $ $ !0 |` ~" $~( (~2~8" 2 " 㿐  2 6  2  2  > $ ʐ 㿈쀢? H ~*` * "8 '!0#H:``:` *|x#(~"+ `@  *`$` " "bP"!~+@ "d  "d~H $H 㿐?` 2` "?@&??` 2` "?@&??` 2` "?@&???~? 㿈?` 2` "?@&??` 2` "?@&???`"P  ~+  b* @~`"@ !|@acx|?c `|?cؔ+"!03: `: @ |Ґ#(?~+ @ "*``"  &` ?bP""*@ ~*` * @`㿈?`? 2` "?@&??` 2` "?@&?? 2?|#Ѐ`|#q 0y`"P  ~+  b* @~`"@ !|@aCcx|?+c`|?$c ~*` * @~`"@ A  4  `` }` `` 8,` ~*` * @"`!03: `: @ |)#(?~+ @ "*``"  &` ?"bP"*  㿈?`? 2` "?@&??` 2` "?@&???쀢 }?'`@"P @, ~* b* @~`"@  4  ` }`* `  ~*` * @ "`㿐@.@.@㿐!Ґ!D!D$!D"!D.$!D~"H~ " ~"H ~J~ $2~"  J  _2~"~~J~$, ؄" "@~ ~"H~ " ~"H ~J~ _~"  J  _2~"~ "@~ ~"H~ " ~"H ~J~" J " "@~ ~aH~ " ~a"aH a~* J@8  `"㿐 ߐ ) ڐ ,  @B ``"㿈~"  ]$ ) |  @$쀢   ]@ $ ,  @쀢  ؐ耠@ m$p  [  ] ~"Q$ 쀢  耠@ DK@$ 57 / "- _ ( $ǐܰ# 'Ԑܒo'ذ{Ԙ$Ԁ  *   " 0] $㿈~!"!$!D !D"@!D 㿐.`6`  .`㿐  %~%~  %~!8# ?@} h07v `4 ! $ _+`4!~!ܔ" }`@^2 !ܐ$``* " @``*~~ & $ _+`$ a*@!~!ܔ" }`@^w2 !ܐ$``j* " @``*`~`  $ _+`$ b*@`!~!ܔ" }`@^O2 !ܐ$``B* " @``*8~2!~!ܐ}`@^3: !ܐ$``&* " @``*~ 2*2 `* @ $   +‒ " `*~b`|?"`| K*  $ [*+   ~~  ~b 2~!~ , " $"  *  b b   b "~b  b x$ x |* x $ x ]:*2 `* @ $   +" #" `*~" | 2" |@  (*%~ ,  Ò``$@  *@,`~b"b )*㿐!~" x$ | |`$ |*@ x㿐!~" x$ | |`$ |*@ x} 㿐!~" x$ | |`$ |*@ x}@]F`;`d `(@ ?(`"" ##?2  @#`2 #d`#㿀ژ~"p&& & &  㿀    > } `  ~:`'쉠}B"p +   !а    > } ` 2 ~:`'쉠}B"p 2    ?!L Ё ? )  x  > : `  ~:`'}` B"p )k !   > `  ~:`'}`B"p   J?Ӆ!La `?`\ u!*`@xxxxx$@\x֘5@31@/: 83 1 , *% #@3   @#   ?~"p$$ $  $ x` 2`  `@ ` 2w 2` 2s *`2 `* @    :: `  ~:`'}`B ?"p ( ?   :  `  ~:`'}`B"p   !L( l p2" ?@[ ??@[@[?؁?S~"p$$ $  $ 㿀` 2`  `@ `  2` *`2 `* @    : `  ~:`'}`艡B?"p    ?Z!L ?`18 v"T*`@ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ۼ$ۀ$$$$$۔$$$$$$ۨА @[c }` 7…@'셠B'  ' *  8$ @[M $? @[B ? @[F ? @[D ? @[B ? @[@  ? @[> ? @[< ?~"p$$ $  $ 㿀` 2` "@&` 2` "@&` 2` "@&  -  ` (2` %   *`2`  *`!~: ; "|}@Z}`@Z"|?"|/?$@$`$``$` 㿈2 ~p@p  & ? H}a@ZO 㿐# @ @ `" s  㿐!@Z0! 㿐!@Z'! 㿐w#` #  㿐㿠㿐w##   w#`*` 2`@ ww#, ?, w@Y"㿠 Prolog execution %s(%ld). CPU time = %ld.%lds %s haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programediteditor_filenoname.plversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationexpected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loadingunable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2string buffer (-i option) exceeded or infinite term%ld%sbad arg in arithmetic operationA%ld%-se%-ld %fuser_bpctrue_prolog:$end0c.c not compiled with -D C_INTERFACE is_compiled_1()atomic_1()integer_1()nonvar_1()var_1()cnl_1()cwrite_1()fail_0()symcat_3lval_3val_3set_3()rm_2()def_3()change_arg_3()setarg_3()arg_3compare0_3l_neg_3&int_only_op!=<=rel_opput0_1()get0_1random_1fdiv_3div_3%arith_opprolog:c_check_avprolog:c_opcodeprolog:c_check_ivget_cut()put_cut()move_regpush_variable()prolog:c_skipc_trace(" ")unify_integerprolog:c_aux_unify_integerwrite_integerprolog:c_aux_write_integerget_integerprolog:c_aux_get_integerput_integerprolog:c_aux_put_integerload_integerprolog:c_aux_load_integerprolog:c_wvoidprolog:oldH_newPprolog:newH_newPprolog:oldH_oldPprolog:newH_oldPprolog:newPprolog:c_chunk_endprolog:c_chunk_beginfun_arityfun_symbolunexpectedprolog:c_find_funprolog:get_offsetprolog:new_offsetprolog:c_check0prolog:c_check{255,0,0,");_size=sizeof(long "}};[] = {struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} "#include "#include "../src/c_defs.h"#include "../src/global.h"/* do not edit: generated by co.pl */user_bpwam_bpprolog:c_decorate_file0prolog:c_spec_endprolog:c_spec},,(void *) {prolog:make_commentprolog:patch_specials"},,"prolog:c_traceprolog:wchunkprolog:make_bcodeprolog:c_instrprolog:make_hcodeprolog:make_ccode500c_threshold_minc_threshold_max100000xxprolog:c_rootprolog:sprolog:defeditprolog:my_defeditVISUALEDITORprolog:get_editorls -tFprolog:ubootBinWAM intermediate code.asmprolog:make_includeprojectin_moduleunable_to_make.bp.cbin_prolog_with_cparserprolog:cparser119110120100104newappl.bpdcg.plwrite.plread.pllib.ploper.plinit.plprolog:listifyprolog:make_cmd0prolog:fact2rulebeginincludingprolog:exec_run_time_commands0% !!! action delayed after compilation, for command:prolog:get_cmd_no$run_time_commandprolog:cmd_rootprolog:cmd2clauseprolog:exec_cmdensure_loadedprolog:include_fileprolog:preprocessprolog:is_dynamic_clauseprolog:translate_cmdprolog:translateprolog:put_to_eofprolog:make_memo_fileprolog:include_memoed_fileprolog:memoable_fileprolog:memoing_translate_allprolog:translate_all0prolog:write_c_chunkprolog:make_dummy_endendprolog:close_c_chunk_fileprolog:c_decorate_file$end0footerprolog:comp_fileheaderprolog:decorate_filetotal_compile_timeprolog:xcompileprolog:compile1prolog:compile0totalbytes_usedprolog:translate_allprolog:init_cmdcompilation abortedcompile_time$end1prolog:terminate_fileprolog:maincompprolog:mcomp_fileto...compilingprolog:currpredoffsetaritypredicateprolog:newpred0file_nameprolog:let_c_chunk_fileprolog:wcode_asmprolog:wcode_cnprolog:wspec_cbegin_endc_flagprolog:c_thresholdprolog:write_or_skip0prolog:encode_opprolog:n_builtinbuiltin_?arith_valueprolog:n_aritharith_variableprolog:n_inlineinline_variableend_?firstarg_?prolog:n_nopclause_?prolog:write_or_skipwrite_voidunify_voidpush_variablepush_structureload_valueload_variableload_constantexecute_?get_cutput_cutpush_cutget_valueput_variableput_valueget_variableput_structureput_constantget_structureget_constantpush_constantwrite_constantunify_constantwrite_valueunify_valuewrite_variableprolog:wcodeunify_variableprolog:mc_transform_voidprolog:mc4prolog:mc_transform_pushprolog:mc_selprolog:mc3prolog:mc_chunkprolog:mc_pushprolog:mc5prolog:mc1prolog:mc0prolog:mc_emptyprolog:mc_input0prolog:mc_inputprolog:mc_topempty_opcutprolog:encode2prolog:encode_argprolog:instr_catprolog:mc_peepholeprolog:mc_one_instrprolog:encodeprolog:beautifyprolog:gen_instrprolog:temparg256prolog:maxarityprolog:write_instrprolog:antigenicc_chunk_valuec_chunk_variableprolog:make_anti_callprolog:bind_lengthmemprolog:bind_c_chunk_lengthDEFINITE:EXPANDED:prolog:show_stepsprolog:show_infoprolog:show_fun prolog:show_or_skipprolog:gen_codeFINAL CODE:prolog:mc_all_instrPOST TERM-COMPRESSION CODE:modeBRUT WAM-ASSEMBLER:prolog:show_instrprolog:show_codeprolog:add_upper_contprolog:def_to_mbin0prolog:def_to_mbinprolog:emit_isprolog:split_rel_1prolog:split_isprolog:split_relprolog:split_is_relprolog:app_bodyprolog:repl_lvalprolog:repl_disjprolog:repl_conjprolog:repl_known116117prologspying_onprolog:split_opprolog:strip_nilprolog:repl_macroprolog:repl_bodyprolog:mdef_to_defprolog:get_regprolog:free_regprolog:allocate_regprolog:allocate1prolog:check_var_argprolog:check_var_varprolog:check_lifetimesprolog:set_toprolog:defaultprolog:collapse_themprolog:mark_varprolog:mark_argvaluevoidprolog:get_var_typeprolog:fill_var_typeprolog:fill_oneprolog:tpointprolog:fill_allbad_occurrenceoccatprolog:oldvarprolog:newvar$OCCprolog:occurrenceprolog:find_occurrencespushprolog:deep_var_opunifyprolog:unify_opprolog:emit_args0prolog:deep_structure_opprolog:emit_structureprolog:cc_tprolog:cc_argstructureprolog:emit_argsprolog:cc_argsprolog:emit_top_structureprolog:classif_argloadconstantprolog:classif_loadinlineprolog:cc_b_argsprolog:emit_top_bargsprolog:handle_constant_resprolog:out_regtempprolog:cc_top_tprolog:cc_eq1unexpected_body_atomprolog:emit_body_top_termprolog:cc_builtinprolog:cc_eqcutargprolog:emit_top_argsprolog:cc_top_argunexpected_head_atomprolog:emit_head_top_termbuiltinprolog:cc_b0prolog:cc_h0prolog:set_modeprolog:get_modeprolog:end_chunkprolog:emitprolog:hidden_varlenc_chunkprolog:begin_chunkprolog:cc_hprolog:cc_bprolog:allocate_regsprolog:collapse_argsprolog:fill_infodictprolog:varsprolog:maxprolog:cc_h_bexecutefirstargiiprolog:classif_firstprolog:firstargprolog:cc_clauseprolog:bu_bodyprolog:cutpfailing_to_compile_clauseprolog:newpredprolog:gg_emitprolog:cc_compile_clauseBINARY:binprolog:bin_builtinprolog:c_chunk_filewam.hcwamprolog:cc_must_have_builtinsprolog:cc_builtinsprolog:compile_builtinsprolog:cc_bincompprolog:compile_binaryshould be groundprolog:free_variablesprolog:explicit_bindingprolog:term_is_free_ofprolog:list_is_free_ofprolog:replace_key_variablesprolog:concordant_subsetprolog:replace_instanceprolog:keymergeprolog:samkeyrunillegal_argumentsprolog:keysortprolog:ksortprolog:merge_2prolog:merge_sort1prolog:merge_sortprolog:remdupsortedprolog:bb_origunsortedprolog:assume_oneprolog:assume_all0prolog:assume_all$usedprolog:copy_or_delete_llprolog:get_assumed_clauseprolog:insert_llprolog:assume_with_hint_llprolog:assume_llprolog:assume_fileprolog:assume1error_in_assumebad_clauseprolog:add_hint_lllinearprolog:assume$closedintuitionisticprolog:generate_run_time_predicateprolog:listing1% assumed prolog:listing0% prolog:consult_cmdprolog:consult_includedconsultingtimeconsultedprolog:consult_embeddedprolog:survive_cleanupprolog:consult0% using compile/1 is MUCH fasterprolog:consult_warningabolish_expects_dynamic_clausesfoundprolog:abolish0prolog:clause$dbrefprolog:collect_slotprolog:erase0prolog:clause0prolog:assert_itunable to assert clauseprolog:add_clause0prolog:add_clauseprolog:ensure_dynamic$lastdynamic code would shadow assumed predicateWARNING: dynamic code will shadow compiled predicateprolog:define_dynamicprolog:check_dynamicprolog:make_dynamic!!! compiled!!! dynamic!!! assumedFail: Call: : prolog:tr_callExit: Redo: prolog:tr_if2prolog:tr_disj2prolog:tr_if1prolog:tr_goalprolog:tr_disj1prolog:tr_bodyCUTprolog:do_disj0prolog:do_if_then_elseprolog:do_disjprolog:do_conjundefined_predicateprolog:do_undefprolog:do_applyprolog:do_goalprolog:do_compiledprolog:do_bodyunbound_goal ; for more, otherwise prolog:user_actionprolog:another_solprolog:report_top_varsprolog:report_one_vargoaltopprolog:savetopprolog:nothingprolog:topcallprolog:report_answersprolog:topinterp?- prolog:topstepinit_io$endprolog:exec_run_time_commandsprolog:binpro_startprolog:l_magic2:- ->; ( , :- prolog:l_magic_nlprolog:l_magicprolog:l_clausesprolog:pp_clause0prolog:classify_other_tailprolog:classify_alpha_tailprolog:classify_name700prolog:w_operprolog:w_tailprolog:w_argsprolog:w_atomotherprolog:w_VARprolog:w_variableprolog:put_stringalphaquoteprolog:maybe_spaceprolog:maybe_parenpunctprolog:w_out126969492255248246223222216214192prolog:is_latin1_majprolog:is_latin1_min90122prolog:r_varcountprolog:r_digsprolog:r_digitsprolog:r_int! end_of_file just after full_stopprolog:is_specprolog:is_alpha_num! end_of_file in /*.. commentprolog:patch_slashprolog:more_string! end of file in: tokenprolog:r_symbolprolog:is_minprolog:is_numprolog:r_integerprolog:is_majprolog:r_lookup95prolog:r_nameprolog:r_stringprolog:r_fullstop1251241239391prolog:r_after_atomprolog:r_solidusprolog:is_terminator-1end_of_fileprolog:r_toks 99999prolog:display_tokenprolog:finish_syntax_error** SYNTAX ERROR: byte=syntax_errorprolog:display_listprolog:start_syntax_errorbracketvariableprolog:cant_follow_exprfollows10001100prolog:peepopprolog:exprtlprolog:prefix_is_atomprecedencewithcontextprefixlist|]|argumentsin,)anstartcannotstring}{(()prolog:r_list][prolog:after_prefix_op999applyprolog:exprtl0prolog:r_args(prolog:rtsprolog:ambigopprolog:infixopprolog:postfixopprolog:prefixopprolog:expectexpressionafterexpectedoperatorprolog:syntax_errorprolog:rtprolog:all_readprolog:r_and_checkprolog:portable_writeqprolog:portable_writeprolog:portable_printprolog:r_vars** warning singleton_variables, byte=>=> :-...prolog:melt_varnamesprolog:warn_singletons1prolog:r_termprolog:singletonsfile_not_foundprolog:see_a_fileprolog:find_file2bad file namelibraryprolog:find_file1unable_to_tell_atunable_to_see_atunable_to_tellunable_to_seeprolog:peval_iobinprologprolog:default_prologexpected_to_expandtry_edcg_expansion-->>prolog:dcg_CONJprolog:dcg_disj0prolog:dcg_term{}prolog:dcg_disjprolog:dcg_goal@@prolog:dcg_head:-prolog:dcg_conjprolog:dcg_bodydcg expansion error->prolog:dcg_rule-->prolog:try_dcg_expansionkillcdaccessno such environment variablegetenvargvargcprolog:unix_argvHOMEprolog:unix_cdprolog:append3prolog:near_matchpredmarkprolog:predicate_key0compiledbuilt_ininterpretedprolog:generate_a_predicateprolog:predicate_property0prolog:is_predicateST267911168prolog:float_minus101prolog:try_float_exp1eprolog:try_float_expboxprolog:try_floatculpritblackboard overflow, left onlyprolog:bb_put_1prolog:bb_put_backprolog:rmprolog:letprolog:valprolog:setprolog:defprolog:bb_failprolog:bb_gcprolog:bb_default_valprolog:$gteqprolog:$lesseqprolog:$noteqvariable_in_iserror_in_isin tab/1: should evaluate to an integerprolog:tab0prolog:make_lengthprolog:get_lengthprolog:general_appendprolog:append_bodyprolog:appendNprolog:det_appendprolog:term2dlistprolog:term2list$floatBP_PATH9798105108prolog:getenv_path99115103111114112121109prolog:compile_memprolog:see_or_failprolog:save_termprolog:numbervars$VARvarsprolog:are_sharedprolog:share_varssprolog:call_ifdefno meta_interpreter for undefined goalcall_ifdefprolog:std_expand_termprolog:portable_expand_term1200?-1199prolog:interactive0prolog:is_interactivenoprolog:is_builtin_varprolog:bucontprolog:is_builtin_nonvarunable_to_spy_onyes$assumed$firstyfpostfixopxffyprefixopfxyfxxfxinfixopxfyprolog:op_typeprolog:get_op010000opmarkprolog:get_opprolog:gensym_noprolog:is_publicbad or repeated declarationprolog:hide_atom0prolog:hide_atomprolog:public0currentshould_be_nonvar[]*** : >>> userprolog:portray_errorprettyprolog:error_messagebasicbboardhtablesymbolsstringscodetraillocal_stackglobal_stackruntime:Cset_c_traceset_c_thresholdstat_dictsavedmember_inth_memberphrasefalseotherwisenospyspyingspyspy_goalinit_gensymgensymis_publicpublicmodule_namemodule_predicatecurrent_modulemodulesis_modulemodulemodule_calllwritepatch_itshow_code0char_in_cmdith_clausetr_bodydo_bodygc_read_clausegc_readadd_truebootctracetmakekcmakekmakecmakemake0makemake_executable_unix_applmake_appldirlscurrent_user_filecovinotepadpicoemacstexteditedmy_editeditis_builtinopcurrent_opswritesreadflushsee_or_failexists_filefind_filemake_file_namefile_libraryfile_extension_listfile_search_pathtelling_attell_atseeing_atsee_attoldtellingtellseenseeingseettycwritelnttycwritettyprintttyprinttynlttyputttyoutttyinfast_writepp_termpp_clauseportray_clauseportraydisplayportable_displaywriteqprintwriteread_tokensread_clauseread_with_singletonswarn_singletonstop_read_termread_termreadnlput_codeget_codeis_prologtoplevelmainquietmeserrmesuser_errorvars_ofterm_charsnotfree_variables^setofbagofkeysortsortbb_elementbb_listbbis_dynamicis_assumed-:assumed_clauseassumedassumelassumei=>listingreconsultconsultdebugabolishclauseeraseinstanceretractallretractassertassertzassertadynamictracemeta_interpretersystemunixaproposhelpctimecurrent_predicatepredicate_propertyacosatanasintancossinexpsqrtlogpow:=:dcg_phraseletbb_change_argbb_letbb_rmbb_valbb_setbb_def=\==:=>==<><@>=@=<@>@<\====compareexprisgettabappend_disjappend_conjappendNcompoundnumberfloatatomgroundgc_callnumbervarsmake_cmdlength++det_appendmemberappendargnforall_but_at_leastfind_at_mosthas_fueldrop_at_leasttake_at_mostnth_answerfind_whileskip_whenskip_untilwhileallfindall_disjfindall_conjfindallfindall_workhorse\=\+repeat,;->=expand_termmetatruemetacallinteractivestatistics::-=..asmadd_conttermcatstrip_contiforincludecompile.!bu1174n_nop160n_builtinn_arithn_inlinebu_ctrin_head8584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111098arith765432in_bodybu0700 xfx :=700 xfx =:600 xfx <=950 xfy =>950 xfy -:600 xfx :=:900 yfx :1200 xfx ::-1150 fx module1150 fx public1150 fx dynamic1050 xfx @@1050 xfy ->900 fx nospy900 fx spy900 fy \+900 fy not700 xfx \=700 xfx =..700 xfx ==700 xfx \==700 xfx @<700 xfx @>700 xfx @=<700 xfx @>=500 fx \500 yfx \500 yfx /\500 yfx \/500 fx #500 yfx #400 yfx //400 yfx <<400 yfx >>300 xfx mod200 xfy ^300 fy ~700 xfx =:=700 xfx =\=700 xfx <700 xfx =<700 xfx >700 xfx >=660 xfy ++650 xfy .400 yfx *400 yfx /500 fx +500 yfx +500 fx -500 yfx -700 xfx =700 xfx is1200 fx :-1200 xfx :-1200 xfx -->1100 xfy ;1000 xfy ,if0profilebb_resetlist_asmstat0shellnamefunctorfindall_load_heapfindall_store_heaprestartabortcallhaltnew_builtinsuspend_enginemultitask_enginesask_engineload_enginedestroy_enginecreate_enginequietunix_killunix_cdunix_accessunix_getenvunix_argvunix_argcsetrefbb_opbb_getbb_putiso_lseekiso_eofiso_peek_byteiso_get_byteiso_put_byteiso_read_termiso_write_termiso_close_streamiso_open_streamdcg_tellingdcg_telldcg_valdcg_defstrip_cont0write_floatinput_floatfloat_funfloat_fun2term_appendop0string_opsee_tell_atseeing_telling_atseen_toldsee_tellseeing_tellingolder_filebb_list0copy_termdet_append0lift_heapadd_instrself_infoterm2listlist2termdcg_connectsymcatlvalvalsetrmdefchange_argsetargargcompare0\#\//\>><<arith_difarith_eqgreater_eqless_eqgreaterless0putget0random///mod*-1+is_compiledatomicintegernonvarvarcnlcwrite_failtrue?$cut$bin_cutFH  ߘ  F8L 00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@ 0( (@HF8F0F( F(F FFBF(F FF F(BF( F(F FFBF(F EF F(BF( F(F EF F(BF( F(F EF F(BF( F(F EF F(BF( F(F EаF F(BF( F(F EȰFF(F(JE F(F EFF(F(JE F(F EFF(F(JE F(F EFF(F(JE F(F EFF(F(JE F(F EFF(F(JE F(F EFJE F(F EFJE F(F EFF(JEx F(F EpFF(F(J Ex F(F EhFF(F(J Ex F(F E`FF(F(J Ex F(F EPFF(F(J Ex F(F E@FF(F(J Ex F(F E0FF(F(JEx F(F E(FF(F(JE F(F E FF(F(JE F(F EFF(F(JE F(F EFF(F(JE F(F EFF(F(JE F(F EFF(F(JE F(F DFF(F(JE F(F DFF(F(JE F(F DFF(F(F(JEx F(F DаFF(F(F(JEx F(F DȰFF(F(F(JEx F(F DFF(F(JEx F(F DFF(F(F(JEx F(F DFF(F(JE F(F DFF(F(JE F(F DFF(F(JE F(F DFJE F(F DFF(J E F(F DpFF(F(F(J!E F(F D`FJ"E F(F DPFF(F(F(F(J#Ex F(F D@FF(F(J$Ex F(F D0FF(F(J%E F(F D FF(F(J&E F(F DFF(F(J'E F(F DFF(F(J(Ex F(F CFF(J)E F(F CFF(F(J*Ex F(F CаFF(J+Ex F(F CFF(J,E F(F CFF(F(J-Ex F(F CFF(F(J.E F(F CFF(F(F(J/Ex F(F CFF(F(J0E F(F CpFF(F(F(J1E F(F C`FF(F(J2E F(F CPFF(F(F(J3E F(F C@FF(J4Ex F(F C0FF(J5E F(F C(FF(J6Ex F(F C FJ7E F(F CFF(J8Ex F(F CFJ9E F(F BFF(F(J:E F(F BذFF(F(J;Ex F(F BȰFF(F(F(J<Ex F(F BFF(F(J=E F(F BFF(F(J>Ex F(F BFF(J?E F(F BFF(J@E F(F BFF(JAEx F(F BpFF(F(F(JBE F(F BhFF(F(JCEx F(F B`FF(F(F(JDE F(F BXFF(F(JEE F(F BPFF(F(JFEx F(F B@FJGE F(F B0FF(JHE F(F B FF(JIE F(F BFF(F(JJEx F(F BFF(JKEx F(F AFF(F(JLEx F(F AFJME F(F AFF(F(F(JNE F(F AаFF(JOEx F(F AFF(F(F(JPEx F(F AFF(JQE F(F AFF(JREx F(F AFF(JSEx F(F AxFF(F(JTE F(F ApFF(JUEx F(F F FF(F AhFF(F A`FF(F AXFF(F A@FF(F A(FF(F A FF(F AFF(F AFF(F AF F(F @F F(F @F F(F @F F(F @ذF F(F @ȱ@@@@@x@h@X@H@8@(@@???ر?ȱ?????x?h?X?H?8?(??>>>ر>ȱ>>>>>x>h>X>H>8>(>>===ر=ȱ=====x=h=X=H=8=0FFF(Ex=( F(F =0FF=F(E=( F(F =0FFF(= =( F(F =0EE=F(==( F(F =0EE=F(==( F(F =0EE=F(==( F(F =0EE=F(==( F(F =0EE=F(<=( F(F =0EE=F(=( F(<ExEF =0EE=F(=( F(<EEF =0EE=F(=( F(<= EF =0EE=F(=( F(<=EF =0EE=F(=( F(<=EF =0EE=F(=( F(<=EF =0EE=F(=( F(<=EF =0EE=F(=( F(<<EF =0EE=F(=( F(<<ExF =0EpEp=F(=( F(<<ExF =0EhEh=F(=( F(<<ExF =0E`E`=F(=( F(<<ExF =0EPEP=F(=( F(<<ExF =0E@E@=F(=( F(<<ExF =0E0E0=F(=( F(<<ExF =0E(E(=F(=( F(<<EF =0E E =F(=( F(<<EF =0EE=F(=( F(<<EF =0EE=F(=( F(<<EF =0EE=F(=( F(<<EF =0EE=F(=( F(<<EF =0DD=F(=( F(<<EF =0DD=F(=( F(<F(3E4F(EF(Ex3E/Ex F( F(40F F( F( 0 F(9-F F8F(F( F(--F F( F(F -F F8F(FF( .`0-F F8F(FF(/ȯ-F /F(F(F(F( F( F(0. EEF(F( 0F(6/F(F(F8F(F( F(A .F F( /F( -4p/ذ9H9HF(F(F( /F(F( F(/د/ذF./ȰF F( F(--F F( F8F(9`F(F(F( / F( F(6-F F(1/F F( F( / F( Ex6د/F DF(F(F(F( F( F(--F/F(JExF(F(EJE/F(F(JEx F(F -F F(E/F(F(JEx F(F 1ȰF F( F( F(BF(F( F(-1Ȱ F 94F(4F(4 F(F(3D-xF(F(3-F(F(F(3 9H4 F(F3 F8F( F( Ex -p F(8@1FF(F(F(J/Ex F(F -F -`F(F(F(F(F( F( F( F(-P-`FF(F(JEF(F(JEF(ExJ Ex F(F -P-H-H-@ F(F -P-8-8-@ F(F -P-0-0-@ F(F -P-(-(- F(F -P--- F(F -P--, F(F -P,,, F(F 5FF(,JEx F(F 5F,F(JEx F(BF( F(F /F5/F , F(/F(JE F(F / EEF(F( 984F(F8F(6/F(,F(31F( F(A /F F( F( , F(4x/EEF(F(F( 6/F(F( F(A ,F :(F( F8F(F( F( F(9,F ,>F( ,F(>F(F( F(9,hF :(F( F(9,hF 9F(F(>F(F( F( F( F(,1F F(BF(F(,1F,h9F F( F(BF(F( 9`F(, 9`F(,` ,H99F F(BF(,0,HF F( 1,(-(, 98,0,, F( , -( , 1,0,`,` F( ,( -( , 19hF++F+9F EF(F(F(J5E F(F 9xF 9F(F(99F F( 5F( +F(4x+F( F(+/xFF /pFBF(F +F F( F(BF(F(Ah+F F( F(Ah9`F F( F(F 9XF F8F(AhF(F( F(Ah9P9X9XF(F( F( F(F( F( F(99PF F(Ah9PF F( F(Ah:F F(Ah:F F( F(Ah9F F8F(AhF(F( F(Ah9F F( F(Ah9HF AhF(F( F(Ah98F F8F(FF( F(Ah98F F(F 90F F( F(F(BF(F 90F F(F ApFExJUExF 9@FF 9@F9@9 FF(F(J$Ex A@F(F( F( F(Ah9F F( F(A(9F F( :F(F( : Ex99F F( .@99F F( F 99F F( 9HF(F( 9H Ex98F F( F88F F( 9PF(F( 9P Ex98F 94F(F 4F(F(3AhF(39H4F(F3F8F( F( F(Ah8аF 94F(F4F(F(3AhF(3F8F( F( F(Ah8F 94F(FF F(3AhF( F( F(Ah8FF(EJEx F( F(+F( 8pF(8Я8F F( F(+F( 8pF(88F F( F(+F( 8pF(88pFEF(JExF(ExJ ExF(EJExEF(F(JEx F(F 8F 8F(F( F( F( F( F(98`F 8F(F( F( F( F( F(98HF 8F(F( F( F( F( F(98 F 94F(4F( F( +p F( F(F(F(3EF( F(3AhF(  F( F(+X+X F+PF(F( 4F(F(.@F(F( .@ F(4+p.@.@.@ F(F +p::F(F(EF(F( F(:F(F( F(+p0F F( 4F( :F(.@ F(90F F( 3F( :F(.@ F(97F AhF( 8(F(F(F( F(98@F F(F(F(J Ex F(F 8@FF(F(J ExF(EJEx8@88F F(BF(F(F(F(JE F(F 88 F 8@F(EF(DF(F(F(F( F( F( F( F(A 7+H+HF( F( F(F(F(EJEF 7F F(BF(F( F( F( F(F 7::F(F(F( 7F(F(F(F( F( F(77F +0ExF(F(F(F(F( F( F( F(A +0F F( F(F( F( F(F +0 FF(EJExF(F(JEx +0F(F(F(F(F(F( F(  F(77ذF EhF(ExF8F(FF( Ex77ذF F(F D FExF(J&E F(F +FEF(J&E F(F 1F= J+ExF +FExF(J*Ex F(F 2F 2F( F(+1FExF(J.E F(F 1ذFEF(J.E F(F 6.@.@ F(F(F 6::F(F(F( :F(F( AF(F( F(A6F F(BF(A:F.@ F(::F::F *F(A`F( F(22X::.@F(:F(F(:F(F(:F(.@:*F(:*F(:*F(:*F(:*F(:*F(:*F(:;.@ :;:;:;:*:*:*.@ *4F(F(F(3:*:*:*:*:*.@ F(*2@::F(F(:F(F(:.@.@:;F(:*F(:*F(:*.@:;F(:*F(:*.@ F(F 20::F(.@:F(.@:;F(:*F(:*.@ :;:;:;:*:*:*x:*:*p:*:*.@ F(** F F( F(:;.@ B *hF( 9H4 F( 8 F(F( F(3 AF( F( 9` F(.@ 8F(F(F(8 F(F(F(F( F(  F(  F(92 F F( 8( F(F( AF( F( 8 F( F( F( 8F( F( F( AF( F(F( F( F(8(9F:F(F(:F(.@ AF(F(F(F( F(/09F FF(F9`FF(FFF( F(99FF 7аF F(BF(F(BF( F(F 7аF F(BF( F(F 7ȰF F(BF( F( F(*`=F( F(F 7F F(BF(F( F(F 7F7ȯ7F F(BF( EF( F(989F F(BF(F(F(J E F(F 9FF(:.@J!E F(F *HFF(:.@J!E F(F *0FF(:F(J!E F(F 8F E>F(F(F(F(J%E F(F *F EF(F(F(F(J%E F(F 7F F( .@**.@.@ F( F(F * ::F(F( E>F(F(F(2F(J%E*)F F( F()) F D0F(F(4 F( 94 F(4 F(4 F(F(3 D F(F(9`3 9`F(F(3 9F(:F( : F( :F(.@3 E F(F( F( = F(A 7 F F( 9HF(F( 9HF(F( F(  F( F )7 F F( 9PF(F( 9PF(F( F(  F( F):F:F(F( F(F 8F E.@F(F(F(J%E F(F 80F EF(F(F(2F(J%E F()د)ذ.@.@ F( F(F )ذ::F(F(:F(F()د8F F( F( F(BF(F( Ex F()8F F( F( Ex F()).@.@ F( F(F )::F(F(F(EJEx)).@.@ F( F(F(F )::F(F(F(F(J ExF(EJEx)7F EF(F8F()F(F( F(7h7F F( F( )p F(4x)F F( E<(FF( F( E8@)F F(F 7x F EF(:4F(4F(F8F(9`F(F(F(3EhF(<(3EpF(Ex F(9@7pF F8F(9`F(F(F( F( F( F(7h7pF 7pF(F( )` F(4p7hF F(BF(F( F( F( F(F 7hF F8F(9`F(F(F( F(7ȯ7hF F( F(BF(F( )P F(4x7h F F8F(DEF(F(D= F(F(7hF(F(7hF(F(9F(4 F( AhF(F8F(F(3 : F(:F(:F(:F(.@  F( = A 7h F DEF(F(7hF(F(9F(4F( AhF(F8F(F(3:F(:F(:F(.@ F( EA 7`FF(F(JE F(F EȰF F( F(F EFExF(JE F(F EFExF(JE F(F 7XF 9` F(F(F(JE F(F 7PFF(F(JEx F()@7HF 7( F(F(F(JE F(F 7@F 7 F(F(F(JE F(F 78FF(F(JEx F()070FF(F(JEx F() 7(F 7hF(F(EpF(F(F( F(7h7 F 7hF(F(EhF(F(F( F(7h7F 7hF(F(E`F(F(F( F(7h7F 7hF(F(EPF(F(F( F(7h7F 7hF(F(E@F(F(F( F(7h7F 7hF(F(E0F(F(F( F(7h)07(7( F(F )09`9` F(F ) 7 7 F(F ) 9`9` F(F )@7(7( F(F )@7 7 F(F 6F DF(F(F(F( F( F(/@6F DF(F(F(F( F( F(/@6FF(F(JEx F( F(D 6FF(F(JEx F(F 6Ȱ F 6F(F(F(DF(F(F(F( F( F( F(/@6ذFF(F(JExF(66ذF66F F( F( F( F( F( F(66F F( F( F( F( F( F(66F F( F( F( F( F( F(66F F( F( F( F(66ذF F( F( F( F( F( F(6د)F F( F8F(F(6)F F( F(F /@F F8F(9`F(F(F( F(+/@F +F(F(F8F(9`F(F(F( F((/@F F( E/@= (/@F A`F(AX6FF(F(F(JExF( F(F 6FF(F(F(JEx F(F (ذFF(F(F(JEx F(F (ȰFF(F(F(JEx F(F (FF(F(JE F(F (F F( F( F( F( F( F(6(FF(F(JEx F(F EFJE F(F 6F F( F( F( E F( F(66 FJ9ExF(J8ExF(J6Ex C .@CF(F( F( F(Ah6EEF(F( F(F(F(F(JEF 6FF(F(JE F(F (F=EJ'Ex @(F(F( F(D (.@.@ F(F ( ::F(F(:F(F(:F(F(:F(F(:F( F( A  F(F(F((pF( F(F(( F(F( F(A (pF DF(F(F(F8F(9`F(F(F( F( F(+(pF EF(F( F( F((( F :>F(:F(.@ 4x4F(4F(F(3(PF(3(HF( . F(9(0 F:F(F(:F(F(EF(((F(F(7::F(F(7F(F( A F(F(CPF( F(F(F(F(((0F:F(F(EF(((F(F( F(F (::F(F(7( F8F(F( F('(::F(F(7F( F( :F(.@ F( F(:'.@ :F(F( AF(F(EF(F8F(F( F(A(F F(Ex F(F ' ::F(F(:F(F(EF(((F(F(7E F( F(F(ExF(JEF ' ::F(F(:F(F(EF(((F(F(7E F( F( F(F 'аF *`ExExExF(F(JE F(F 6F6F(F(J1E F(F 6F6F(F(J1E F(F 6F6F( *`Ex'ExF(J1E F(F 6F6F(J2E F(F 6F6F(J2E F(F 6F6F(J2E F(F 6xF6xF(J2E F(F 6pF6pF(J2E F(F 6`F'F(J2E F(F 6hF'F(J2E F(F 6XF/F(J2E F(F EFEF(J2E F(F 7ȰF *`ExExExF(F(JE F(F 6 F F( :F(:>F(.@ .9'F F(BF(F( F(F 'F F8F(F( F(5'F56@F F(BF(F('x6@ F A F(F(F('xF(F(F( F( F( F('X'xF F8F(:4F(4F(F(39`F(539`F('H F(5'xF F8F(:4F(4F(F(39`F(5839`F('H F(5'xF'8 F8F(F(1'xF'( F(BF( F(F 6(F F(BF(F( A F(F(>F(F( F( F('6(F A F(F(F(F( F('X6(EEF(F( F(BF( F(BF(F( 'F(F8F(F( F(A 6(EEF(F( F( F('X'EE,Ex F( F( F(BF(F 'F F( F(E,ExF ' EE'Ex' F(EF(F(EF(F(F(ExJ ExF(EJEF 'X FExExJ'Ex 9`4F(F(3EF( F( 'F( F(F(4F(F(3EF(F( F( F(  F(46F66 F 6F(F( 4F(F(8(F(F(3F(FFF( F(96F F(F 6 FEF(F(EF(F( 6@ F(F(A  F(F(F(AF(F(&F(F(F( F(A&F F( F(F(F &F F( F8F(F( F( F(&د& F F( &F(4F(F(F( F8F(F(3:>F(F( F(&د&ذF 80F(F(F(F( F( F(80&ȰF&JIExF(JKExF & F F( F(JGExF(EJEx 9H4F(B0F(F(38@F(EF(96&&F( F(JGEF 6&&F(&6&&F(F( F( B F(F( 4p&pF( F 96&h&hF(F( F(F(F(JJExF 6&`&`F( F(F(JKExF 6&`&` F(&ȯ6&X&XF(F( F(F(F(JLExF &8F &0F(F( F8F(F( F( F( F(& &8F F( F( & F(4p& &0&0F(F( %F(F(F(F( % F(F(F( 9`F(4 F(F(3 %F(F(  F(%Я%а %%F(F(F F(%F( F(F( %F( F(F(F(F(  F(%%аFF F( F( F(%%а 9H9HF(F(F( %F(F(F(F(F( F( F(  F(%%аFF F( F( F(%%FF( EF(F(F(J0E F(F %F F(BF(F( F( F(/hF(F(F( F(F % 9H9HF(F(F( %F(F( F(F( % F(F(F(F(  F(  F( F(%% 9X9XF(F(9XF(F(F( %F(F(F(F(F( F(  F(%% 9P9PF(F(9PF(F(F( %F(F(F(F(F(  F(%%%%F( F( F( F(F(F %: : : F( F(F(F %.@.@F F( F(F(F % ::F(F(F( %F(F( F(F( % F(F(F(F(  F(  F( F(%%F%%F/F(F(F( F(F % F %xF(F(F(F(F(F( F( F(%%x F 9` F(F(F(JEF( 9`F(F( F( F( F( F(%%xF F( F( F(F %FF F( F(F(F %F%h%hF F F( F(F(F %h9H9HF(F(9HF(F(F(%h%hF9HF(F( F(F /::F(F( F( F( F(F /hF F( .@/h/h F 9`F(F(9`F(F( AhF(F( F( F(%+&0&0F(F( F( F(F( F( F(&8+%`%`F(F(F( F( F(%HF(F(F( 4p%0F(++F F( F(F %%% F(F $4(4(F( F(EF(F $44F( F(EF(F $44F F(F $22F( F(CExF(F $22F( F(CEF(F $22F( F(CExF(F $2p2pF( F(CEF(F $3(3(F( F(FF(F 3(F F(BF( F(F 4(FJE F(F 4FF(JEx F(F 4FBF(F 2ȰFExF(J*ExF( F(F 2ȰF F( F( $ F(4x2FExJ)E F(F 2FEJ)E F(F 2FEF(J*ExF( F(F 2F F( F( $ F(4x2FExJ+ExF 2FEJ+ExF 2FExF(J-ExF( F(F 2F F( F( $ F(4x2FEF(J-ExF( F(F 2F F( F( $ F(4x2FExJ,E F(F 2pFEJ,E F(F 2 F F8F(2XF(2@F($F(F(F(F(F( F(7Я2 $$F( F8F(20F(F($F(F(F(F(F( F(7Я2F F( $x F(4x$ F F( F( F( F( F(ExJ)Ex F(  F(  F(  F($`$` F F8F( 2F(F( F( F( F( F($H$`F 9 F(4 F( F( 9 F(4 F( F(4p4F(4F(F(3$8F(3E4F( F(3E F(F(3 9H4 F( A F( F(3 8( F(F(3 9H4 F( A F( F(3 8( F(F( F(2ȯ$H F +F(2F( F(2 3F 3F(F(F(F( F(33F $ F(F(F( F($3ذ ::F(F( F( F(J MEx F(EJ Ex :F(F( FF( F( F(#3ذF F(F #%%F( F(F(F #F %F(>F( CEx F( #F( 34 F( F8F(F(3 9H4 F( 9H4 F( 9H4 9H4 F( 9H4 F(9H4F(9H443F#3 3F(3 3#3 3 # F(3 3F( F( F(0#.@.@ F(F #::F(F(EF(F(F(#4F F( F($3F33F #F(F(F( F( F($#.@.@.@ F(F #::F(F(EF(F(F(:F(F(9`F(F(#$ F F( F( 8(4F(F(3EF(>F(+Ex F( F(93F#3F#h3F#P3 FExJ)Ex AhF(2F(F( .` F(2ȯ3FEJ)Ex AhF(12F(F( .` F(23F 3F( F(32F 9H4F(433F( F(32F FF( F(32аF 9H4F(43FF( F(33F F( 433F EF( F(33hF 3pF( F(3$F 3F(F(#8F(F(F8F(9`F(F(F( F(9@#8F F( #(F(F( , F(##8F F(##(.@.@ F(F(F #(F F( F( :":":":".@ F(#"F:F(F(F( F(F "F F( :F(:::":".@ F(#"F F( F( F8F(F( - - F(-`"F F( EF(EF(F( - -( F(-`"F F( F( F8F(F( , , F(-`"F F( EF(EF(F( , - F(-`" F F( F( F8F( EF(EF(F( -@ -8 F( F(-`" F F( F( F8F( EF(EF(F( -@ -H F( F(-`" F F( F( EF(EF(F( -@ -0 F( F(-`"p F "F(F(F(F(F( F( F(  F("#.@.@ F( :":".@ .@## ::F(F( F( F( F( F( F(  F(  F(  F("`"`EEF(F(:"XF(F( "H F( F( F( F8F( "8 F(4 F(F(F(F(F(3 "0F(:F( F( "(  F(  F(#"` EEF(F( F(F( F("8"` 77E:F(F(EF(((F( F(ExF(JExF("8"` 77E:F( F(7F( 'F(F( F8F( "8 F(F(F(F(F(F(7ȯ"`77F(:"XF(F( "H F( F( F( 9 F(4F(F8F("8 F( F(F(F(F(F(3:F(:F( F( "(  F(  F(#"` 77F( F8F( "F( F( F(F(F(F(F(F(  F(  F( F(""` 77F( F(F( F("8"` EEF(((F(F( F(F( F("8"`"":"F(F( .@"8"` "" F(F( ! F( F( F( F8F( "8 F(4 F(F(F(F(F(3 :F( F( "(  F( F(#"` "X"X F(F( "! F( F( F8F( "8 F( F(F(F(F(F( ,  F(  F( F(#"` !! F(F( "! F( F( F8F( "8 F( F(F(F(F(F( ,  F(  F( F(#"`!!:!F(F( %"8"` !! F(F( "! F( F( F8F( "8 F(4 F(F(F(F(F(3 %F( ,  F( F(#"` !!F( F(F( F("8"` F F( :F( :! :! :! :".@ F(#"H ::9HF(:F(F(F( F8F( "H F(F(F(F( "( F(  F(#"H::!F(.@ F( F(F(F "HF F( F( :!:":!:!.@ F(#! ::9HF(:F(F(F( F8F( ! F(F(F(F( "( F(  F(#! ::!F( F(F( F8F(""F(F(F( "( F( F(#!::"F(.@ F( F(F(F !F F( F( :!:":!:!x.@ F(#" F F(F(F(J ExF( :!p :" :F( :! :!h :!` :!P :F(.@  F( F(#" F !8 F(F( !( F(F(F(F(F(F(F( F(  F(!"F 9 F(4 F( F8F( !( F(F( F(F(F(F(F(3 :F( : F(.@ F( F(  F(  F(  F(#! ::F(F(:"XF(7F( F(:F(F(:"XF(7F(F(F ! ::F(F(7F( F(:F(F(-@F(F(F(F("!::F(F(7F( F(:F(F(,F(F(F("!F F( F(F !8::F(F(!8!8-@-@F(F(=F( F(F(F(J ExF !8,,F(F(F( F(F(F(J ExF !8!! F(F !8"" F(F !8!! F(F !8!! F(!F(J ExF !89H9H F(!F(J ExF !8.@.@ F(F "8::F( F(7F( F8F( :4 F(4 F(F(3 !(4 F(ExF(F(F(F(3 :4 F( F(3 -@F( F( F( F(3 !(4 F(ExF(F(F(F(3 :4 F( F(3 ,F(F(F(  F(  F(  F("p"8 ::F(F(7F( F8F( !(4 F(ExF(F(F(F(F(3 :4 F(F(3 -@F(F(F(F(  F(""8 ::F(F(7F( F8F( !(4 F(ExF(F(F(F(F(3 :4 F(F(3 ,F(F(F(  F(""8 ::9HF(F(!J ExF( F8F( !( F(!4 F(F(F(F(F(3 9HF(F( !  F( F(#"8 ::!F(F(!J ExF( F8F( !( F(!4 F(F(F(F(F(3 9PF(F( !  F( F(#"8 ::F(F( F8F( #4 F(4 F(F(3 :F( :! :".@3 :F(F( "8F F( F( F(F  77F(7 F(F  EE=F( F(F  EEF(E F(F  !!F(! F(F  !! F(F  "X"X F(F  "" F(F  !! F(F !(::F(F(-@F( F( F( F(F( F(J ExF( F(J ExF( 9 F(4F(!(F( F( F(F(F(F(F(3:F(:F(:F(.@  F( F(  F(#!(::F( F(,F( F( F(F( F(J ExF( F(J ExF( :F(:F(.@ ! F( F(!( F( F(F(F(F(F(F(9!( ::9HF(F(!J ExF(!J ExF( F8F( !( F(!4 F(F(F(F(F(3 9HF(F( !  F(  F(#!( ::!F(F(!J ExF(!J ExF( F8F( !( F(!4 F(F(F(F(F(3 9PF(F( !  F(  F(#!( F F( F( F(F #FExJ)ExExJ,Ex  F(F(F(2F(FF( .` F(2ȯ FBF( 3hF( F(8F(F(6 8F(F8F(F(  p F(3h F F(F #FExJ)Ex  PF(2F(FF( .` F(2ȯ PF 8JEx EF(F(F( F(F(F8F(F( F(8 ::F(F(  8F(F8F( F(F( <( F(3 .@.@ F(3 FEx F8F( F( 0F(  3h ::F(F( 3<(EF(EF(F8F( F(F(F( F( 8 .@.@ F(3 877F( F8F(C@F(F( F(7ȯ 877F(F(3h 8EEF(F(F(3h 8EEF(((F(F(F(3h 8 !!F(F( :F(.@ F( F(:<.@ :F(F( :F(.@ AF(F(3hF(F( F(8 8F3h3F 80F(.@F(F8F(9`F(F(9`F(F(F( <( F( F( 3::F(.@7 .@ F(F   F(F(BF(F  FF(<(J ExF(JEx  <<F( EF(F(F8F(E0F(EF( F(F(F(F(9@ ;;F(JExȯ < < :F(F(7: F(JEx ;;:!F(F(JEx  ;;:!F(F(JEx  ;;:9HF(F(JEx  ;P;P:F(F(79PF(JEx  :"F(F(JEx  :"F(F(JEx  :!F(F(JEx  :!F(F(JEx  :!F(F(JEx  ;;F(JExp <<:F(F(!F(F(  F(F(F(F( < F(`  ;;:F(F(7F(F( AF(F(F(F(F(F( ; F(` F:F(F(EF(F( F8F( PF( F( F( :4 F(4 F(F8F(  F(F(F(F(3 9H4 F(9`F(F3 9` F( :H.@3 9H4 F( 9H4 F(8F(F(F(F(3 AF( F(3 9` F( :F(>F(  F((  F F8F(F(F(F( F(  F(F(F( (0 F(F(F(F(F( F(  F:F(F(7F( F8F( PF( F( F( AF( F(  F(F(F(F( F(  F:F(F(7F(JEx AF(4F( F(F(F(F(3:F(F( F(  F(;;:"XF(F(JEx F ` F F( F( F( F(JEx F( F(  F(`` 3F(3h3F(3F8F(FF( 3h` F F( F( F(F(JEx F( F(`F:F(F( F( F( F(`F F( F(:F(F(F( F( F( F(`F.@ F( F(F ::!F( F(:"XF(F(F F F( F(F Ȱ;;F(JEx  F(F(F(F( F( F(ȯȰ F:F(F(7F( AF(4F(  F(F( F(  F(F(F(3:;F( F(ȰF( 3F( p3hȰ;;JExF(;JExF(ȯȰ;;<( F(F(F ȰFJExȯP F:F(F( F8F(EF(PF(F(F(F(XPF.@ F( F(F  F:F(F( EF(F(F(F(F(HF.@ F( F(F pF( 3FF(  3hpF.@F(<(J ExF( F(F p F:F(F(7F( AF(4F(  F(F(F(F(3:;F( F( F F( F(F(;JExJ Ex : F(.@ F( F( :;.@ 9`F(4 F(F(3 : F( :F(F(  F( F(  F(  F(F(BF(F  ;;Ex F(:;F(:F(.@F(JEF(JExJEF  ;; F8F(F( Ex F( F F( F( F( F( <  F(  F(  F(F F( F( F( F( F( F(JExF(JEx F(  F(  F(  F(  F( F:F( F(F(;J ExF(;`J ExF(F(F(J Ex F(;J Ex F(F(JEx F( F( F(  F( F( F F( F(.@ F(F 8 ::F(F(EF(F(F( F( F( F(F(د8::F(F(8ذF :F(.@ F( F(:H.@F( F( F(+E F(F ذF F(BF(F( F( F(+F( F(F ذ++E F(F XFF(*pJ ExF(J Ex F(F XFF(; J ExF(J Ex F(F XFF(;J ExF(;`J Ex F(F XHH F(F XFXF(FF(; J ExF(J Ex F(F (HH F(F (FFF(*pJ ExF(J Ex F(F FFF(;J ExF(;`J Ex F(F FF(J ExF(J Ex F(F FF(J ExF(xJ Ex F(F FF(pJ ExF(hJ Ex F(F FF(`J ExF(XJ Ex F(F << F(F << F(F  F(F H<< F(F H<< F(F H;; F(F H;; F(F H;; F(F H;; F(F H;; F(F H;; F(F H;X;X F(F H;H;H F(F H;@;@ F(F H;8;8 F(F H;0;0 F(F H;(;( F(F HPP F(F HHH F(F H@@ F(F H88 F(F 3pF F( 3h(#F F( 3(#hF F( 3(#PF F( 3((F FF( ,  F(((F F(F  F F(F(J ExF(F(JEx F(F F F( F(F   F(F(F F F( F(F(<(JExF  F(F(<(JExF F F(F Ȱ.@.@ F(F Ȱ::F(F(F(JExȯȰ.@.@ F(F(JExF Ȱ::F(F( F(F(F(JExF(JEx F(ȯȰ::F(F(F(JExȯF F(BF( F(F 3`F3( F F(BF(F( F(F( F( (+H+HF( F( F( F(F(( F F(BF( 9H4 F( F(3 EpF(Ex F( F8F( FF(F( F(:(F3 F8F(F(3`( F 1 F(>F(F( Eh F(F( F8F( E; :4 F(4 F( F8F( E;F(3 9H4 F( F(F( >F(3 9`F(33 FF( F(7Я( F F8F( F(F(F(F(F( F(7Я( F3h F( F(3hF(>F( xExF(F(;3hF( F(A ( %%F( F(JEx EF( ,  F( F((( ::F(F( F(J Ex hF(F(F( "(  F(  F((( 9H9HF(F(F( (F(F("(F(>F( E; (F(F(! F( !F(;F(F(F( ! F( ; F(  F(( F :4F(4 F( F8F( C@F(F(39H4F( F(3EpF(Ex3 F(7ȯ( F ( F( F(F(F(F(F(F(F(  F(  F( F(A (EE 9H4 F( E F(E F(3 1 F(-(F( 9H4 F(9` F( F(3 1 F(-F( F8F( F(F(;F(F(F(F(F(F(DEF(F((F(F( F(F(F(  F(F(;F(F(F(  F(  F(:(EE 9H4 F( E F(E F(3 1 F(-F( 9H4 F(9` F( F(3 1 F(,F( F8F( F(F(;F(F(DEF(F((F(F( F(F(F( F(F(F(F(  F(F(;F(F(F(  F(  F(:(= = 9H4 F( 9H4 F( 9` F( F(3 E F(E F(3 1 F(-HF( :4F(9H4F(9H4F(9` F( F(3E F(E F(31 F(-0F(39H4F(9H4F(9` F( F(3E F(E F(31 F(-8F( F8F( F(F(;F(F(DEF(F((F(F( F(F(F( XF( F(F(F(F( D= F( F(( F(F( F(F(F(  F(F(;F(F(F(  F( F(:( F xExF(F(;F(F( F( F( F( F(X FF(PJ ExF( F( F( F( F(X F F( <(JEx E<(F(  F( F F(BF(F(ExJ ExF( EF(F(:F(F( 9F(F( 8F(F(F(9F(F(F( F( F(9 9H9HF(F( F( F( F(F( F( F(  F(x 9P9PF(F( F( F( F(F( F( F(  F(h: : F , F(F FF ,` F(x: : F(, F(F(F xF F(F(F(F( F(0h 9X9XF(F( F( F( F( F(F( F(  F(  F(  F(PhF@P F F8F( F(F(F(F( F(0PF F( F( F( F(@F F( F( F(@F F( F( F( F(5F F( Ex00F F( F(BF(F(  F(4x0 F :4F(4F(F(39H4F( 9H4 F( 9H4 F( 9H4 F( 9HF 0F(F(3 383 7F(3 F8F(39`F(,39`F(,`(( 9H9HF(F( F( F( F( F(F( F(  F(  F(  F(((: : F , F(F(F ( 9P9PF(F( F( F( F( F(F( F(  F(  F(  F((F F F ,` F(F(F (FF ,` F(9X9XF(F( F( F( F( F( F(F( F(  F(  F(  F(  F(F F( F( F( F((F F( F( F( F( F(( F 0F( (F(F(F(F( (F(F(F(F(  F(  F(  F( F(9(: : F(, F(F(F ( 9H9HF(F(F( 9HF(F(  F(((9P9PF(F( F( F( F( F( F(F( F(  F(  F(  F(  F((F F F( F( F( F( F(F((( F (F(F(F(F(F( F( F(9X9XF( F( F( F( F( F( F( F(F(  F(  F(  F(  F( F( F(د F F( F( F( F( F(( F F( F( F( F( F( F((ذ F 0F( (F(F(F(F(F( (F(F(F(F(F(  F(  F(  F( F(9AhAhF(F(09898F( F8F(FF( F(09898F( F(F(F F 9H4F(9H4F(9H4F( :4 F( :F  9H4 F( 9H4 F( 9H4 F( 9HFF3 3F(3 33 7F(3 9H4 F( 9H4 F( 9H4 F( 9HFF3 3F(3 33 7F(394F(4 F( 9H4 F( F( F(3 EEF( F(39H4F( 98 /F(3E@F(<3 9F(39,H4F( 9H4 F(F3 9`F(<(39H4F( 94 F(F  E>F(3 E@F(<3EF(3:4F(:4F(F 39H,H9H4F(F3339H4F(9H4F(9H4F(F33F(3337F( 9H4F(9H4F( 9H4 F( 9HFF3 3F(3337F( F( F(: 44F(F(F( F(F( 0F(F( F( F(4ȯ 44F(F(F( F(F( 0F(F( F( F(4 99F(F(F( F(F( 0F(F( F( F(9F F8F(7F(A F(F(F(34F( F 5(F( F( ( F(F( F( F( :4 F(4 F(F(3 9H4 F( 9H4 F(9H4F(9H4F(9HF0 F(F(33837F(3 F8F(3 9` F(,3 9` F(,`3xEF(F( F(5F F8F(7F(A F(F(F(34F( F 5F( F( ( F(F( F( F( :4 F(4 F(F(3 9H4 F( 9H4 F(9H4F(9H4F(9HF0 F(F(33837F(3 F8F(3 9` F(,3 9` F(,`3hEF(F( F(5 F F(BF(F( A F(F(F(34F( F AhF(F(3XEF(F( F( F(7F F8F(F(F(F(F(F( Ah F(A F5ذF FF( F(@5ذF F(F @9H9HF(F(F( @F(F( F(@@ EEF(F( (F(4F(F(F(3EF(F( F(A (F F(BF(F( F( FF(3(F F8F(4pF(F( F(5(F F(F F 6F(ExF( , Ex6F F8F(F( F(5F @4F(F(3EF(F(A pF F8F(F( F(Xp F XF(F(F(F(F8F(F( F( F(pF %F(F( @ F(4pX FF(F(JExF(F(JExF(F(F(JEx %F(F( DF(F(F(F( F( F(6XFF(F(JEx %F(F( F( F( F(65аF %F(F( p,F(F(F( F(05ȰF %F(F( pEF(F(F( F(05F5ȯ(  F(F(F (F5ȯ5 F 9`F(4F(F(F( F( F( F(F(3%F(F( F(05 F %F(>F( DF(,F(DF(F( 8@ F(F(F(DF( F(>F(F( F( FF( F(05F F(F FF(,JEF(JExF(F(J ExF(F(EJExF(,F(JEx F(F F F(F 5F(F(F(F(JExD 5F(F( F( F(F F(F(F( F(65F F( F(ذFF(F( FF(,JExF(JEx 0F( F(F(F( 8(4F( F(F(3EF(%F(F(  F( F(  F( F(90FEF(F(F(F(JE F(F 0FF(F(J ExF(EJEx05 F F( F( 5F(F8F(F(F(F(F( F( F(A 5F EF(F(  F(4pȰF 5F(FF( F(A ȰF F(F(,JExF(JEx5xF5`F F( `4`5pF PF(F( F(25`F 8F(F(PF(F( F(2P F 4`4F(2F(9@3F( F(9`F( F8F(26 F(EF(F(F(4`4F(F(3F(F(3F( F( F(6 FExJ)Ex PF(2F(F( F(2 %%F(F(ȯ F (F(F( F(9hȰ::F(.@F(Ȱ5p5pF(F(Ȱ5`5`F(F(ȰF95X F F( F( 5F(F8F(334F( 3/ F F(F(3EF(F( F( F(A 5X F F( F( 5F(F8F(334F( 3/ F F(F(3EF(F( F( F(A F 3P4F(FF(3%F(F(5F F(BF(F F 3P4F(FF(3%F(F(5(F F(BF(F 5XF 5XF(F(FF( Ex X8@5XF F(BF(F h F :4F(4F(44F( F( E F(F(39`4F( F(3EF( F(39H4F( 9` F( EF(F(39`F(E,Ex39H4F(9` F( E,Ex39`F(EF(F(  F( F(45XF 5XF(F(FF( F(h5XFF 5P F F( XF( 9F(9`F(PF( F( F(@5 F F( 8F(>F( 9F(9`F(PF( F( F(@ F5F(F( F( F(%F(F( F( F( F(05@F F( F( 8>F( F(@5HF F( F( X>F( F(@@F F(BF(F( F(  F(4p@FF:F(.@F(دF F D,F(F( F(F(F( F( F F( F( F(BF(F( F(::F(.@ F( F(F 58F AhF(F( F(5(5(F F( F(5(5( F F( F( F(,F(JEx F(B F( F( F(hh F F( F( F(: F( F( 5F(F( F( F(HhF:F(F(hH 88F(F( F(%F(F( F(BF( F(BF( F(@F HXXF( F( F( F(BF( %F(F( F(D F F( F(:F(.@F(= F( :F(.@F(JEx F(F F:F(F(ذ F CExF(2F((F(22F(F( F( F( F(2(F F(F(F( F( F(0  F(F(F F 0F(F(F(F( F(%%F(:F(.@ F(F( F(د%%F( F(F( F( F F 9F F( F( F(4 9`9`F(F(EF(F(EF(F(EF(F( F(:F(F(:F(F(:F(F(:F(F(:F(F(F 4F:F(F(:F(F(:F(F(:F(F(:F(F(44F=ExJ'E F(F 4F F( 44F F( 9H4F(9H4F(9HF9H4F( 9H4 F( 9H4 F( 9H4 F( 9H4 F( 9HFF3 3 F(3  F( F(3 8( F( F(3 94 F(4 F( 9` F( F(3 7PF(3 9H4 F( 4 F( F(3 9 F(4 F( F(3 4 F( F(34 F(33E.F(39.F( F( F:ذ 9`9`F(F(EF(F(EF(F(EF(F(9` F( F( E F( F( EF(F( EF(F( A  F(F(F(:4F(4F( F8F(F(3DF( F( F(3DF( F( F( F( F(A 4ذF F( F(F(F( 7( F( F(.@.@.@ F(F  ::F(F(:F(F( 9` F(F(F(JEF( :F(F(::F(F(:F(F(F F(F(F(F(.@F( F( F( F(8ExEx.@ F( F(F(F  EE F(:F(F(:F(.@F(F  FF(EJExF(F(J Ex  F(F( F( F(F(  F(F( F(F(F( F(  F(  F(  F(.@.@ F( F(F(F  ::F(F(:F( F(:F(F(F(F(JEF( :F( F( F F(:F(F(:F(F( F(pF F8F(9`F(F(F(  F( .@`pF 4F(F( H F(4x` ::F(F(F( F(B F( F( F( E=F( F( F( :F(F( `F(EF( F(F(F(F(  F(  F(  F( F(0`F.@ F( F(F `::F(F(F(F(J ExF( F(B F( F( F( E=F( F( F( :F(F( ` F(EF( F( F(F( F( F( F(EF(F(F(`F(F(F( F(F(F(F(  F(  F(  F(  F( F(0` F F( F( F(F 0::F(F( F(B F( F( F( E F( F( F( F( : F( F( EF( F( F8F( 9` F(4 F( 0F(F( F(F(F(F(3 :F(>F(  F(780 ::F(F( F(B F( F( F( E F( F( F( F( : F( F( E F( F( 7( F( F( F(J EF( :F(F(  F(00 F F( F( F(:F(.@F  .@.@ F(F( F( F(F  ::F(F( F( F(:F( F(EF( F( F( F( EF( F( F8F( 9`F(4 F(  F(F(F(F(3 :F(F( F(  F(78 F:F(F(F( F( F(:F(F(  F F( F(F 4 F AhF( 4F(F(F( F( F( F(4ȯ4ȰF F( F( 7PF(.@ F8F( 9 F(4 F( A  F(: F( 94 F(4 F(F(F( F( F( F(4 F( F(F8F( F( F( F(9`F( F(F(3 E F(F(3 AhF(3 ::F( F( .@ F(44Ȱ F:F(F( AhF( :F(F( F(94F F( F(Ah.@.@.@ F(F(F  ::F(F(EF(F( F(: F( F( EF(F( F8F(F(F(F( F(F( F(ȯȰExEx F(F(F ȰFF(F(JEx F(BF(F(F(EJExȯȰFF(F(JExF(F(JEF(EJExȯ ::F(F(EF(F(  F(F(4 F(F(F(F(3 :F(F( F(  F( ::F(F(EF(F(:F(F( 9` F(F(F(JEF(F.@ F( F(F .@.@ F( F( F(F(F F F( F( F(F F F( F( F(4 F F( F(:F(F( F(BF( F(F( F8F(F( F( F(4F F( F(BF(F( F(F 4 F F8F(4F( F(F(F(F( F(  F( F(4 F hF(F(F(F(F(F( F( F( F(A hExEx F( F(F(F h FF(F(JEx EF(E F( F8F( h F(F(F( F(F(F( F( F( F(  F(  F(49898F(F F( F(F 44F(F F( F(F  44F(F( F( F(EF(F(F  44F(F(F( F(EF(F(EF(F(F  44F(F(F( F(EF(F(EF(F(F F F(BF(F(7PF F(F(F(F( F( F(A ExEx F(F(F  FF(F(JEx EF(EF( F8F( F(F(F(F( F( F( F(.@.@ F(F ::F(F( F(F(F( F(7P4аFp4F AhF( F8F(F( F( F(984F F8F(FF( F(7د4F F( 4xP4F( F( F A`94F F(BF(F( AF(F(F( F( F(1د4F 1F(F(F( F( F(A4F F( F( .@ .@48F Fа F(F а F F( F(F(FF( F(ЯF F(F   F(F( FF(3P 99 F3PF(FFF( x F(3 F XF(F(HF(F(F8F(F( F(8 F F( F(4p%%F(F(F F(F8F(F(F F(F(F(F( F( F(,:x:x F(%F(F(F F( DF(F(F(F( F( F(A =(=( F(%F(F(F XF F(:F(F(:F(F(:F(.@аFEF(JExF F(BF(F( F( F(EF(Ex F(F F F(BF(F( F( F(EFEx F(F F F(EF(F(A F:F(F(:F(.@F(F( F(5F(F( F(: F(.@ F( F( F( %F(F( F(F(F(4F(F(4F(7xEF(x F( F(F(EF(EF(hF(F(A F(`F(HF(F(0F(EF(F(4F(4F(F(3E4F(.@3EF(F(3E4F(>F(3EF( F(3EF( F(3E F( F(  F(0FE F( F(E F( F( E F( F( E4 F(F(3 EF( F( E4F(F(3EF(F( F(4F(4F(4F(F8F(F(3E F( F(3E4F(F(3EF(F(3E4F(.@3EF( F(  F( F F( >F(4F(F(3F( 4 F( F(F(F(3 EF(F( F(  F( F F( >F(4F(F(3F( 4 F( F(F(F(3 EF(F( F(  F(FEF(F(:F(F(EF(F( F(F F F( F( F(EF(F(EF(F( F(F p FEF(F(EF(F(EF(F(EF(F( F(F F F( F( F(EF(F(EF(F( F(F F` F F(F(F( F( F(P` FEF(F( F8F( A F(F(F(DF(F(F(4F(F( F(  F(F(F(3HF(F(F( :x  F(,` FEF(F( EhF(Ex F8F( A  F(F(F( (F(F( F(F(F(F( F( F(A `F F( F( F(  F(4p(F F( F( F( EE F( F( F( F( F( F(= F( F( F( F( F(= F( F( F( F(F(F( E E  F(  F(  F(  F(PF F(BF(F( F F( F(PPF F F( F(EF ExF(F P F8F8F(F(F( E>F(4 F(F(3 E PF(F(F(F(F( F( F(  F(P 9`9`F(F(F(F( PF(F(F(F(F( F( F(  F(ȯP F F8F(F(F(F(F(F(F( F( =( F(,P FEF(F( EhF(Ex F8F( A  F(F(F( F(F( F(F(F(F( F( F(A PF F( F( F( x F(4p F F( F( F( F8F( EF( F(F( F(F(F( E F(  F(  F(  F(Ȱ F F( F( F(BF( F(BF(F( F(hȰFhhF 9`F(F( 4 F( F( F( 4 F( F( F(p7x F( F(X4F( F( F(pE F(F(F(39`F(F(3 7x>F(4 F(F(3 PEx3 E>F(4 F(F(3 PEx F( F(  F(  F(X@ExExEx F(F @EE F( F(F <<F(F( F(F( D F(F( F( E F(E F(D F(F(F(@F(F(F(E F(F( F(A F(F( F( F(4F(F(F(E F(F(F(F(F(4F(F(F( P F(F(F(F(F(3<>F(F(F(39`F(F(  F(  F(A F E F(E F( D F(F( F( DEF( F(   F( F(F( F( 4 F( F( F( P F(F( F(F(F(3  >F(F(>F( F( F(  F( F(A  ExEx F( F(F(F  EE F( F(9`F(F( F(B F(F( F( F(F  EE9`F(F( F(B F(F( E>F(4 F(F(3 PEx 4F( F(F(F(37x>F(4F(F(3PEx F(  F(  F( EE9`F(F(F( 9`F(F( F( F( F(X а F F( F(BF(F( F( F( F(F  а F F( F(BF(F( F( F( F(F  а F F( 9`F(F( F( F( F(X ExEx F( F(F  EE 9`F(F( 4 F( F(F(F(3 E>F(4 F(F(3 PEx F(  F( F(X F F(F(F(J ExF( F(F FF(F(J ExF(EJ ExF(F(J ExF(F(J Ex 4 F(F(F( F(F(F(F(F(F(F(3  F(F( F(  F(  F( F( F(  F( Я FF(F(J ExF(F(J ExF(F(J ExF( 9` F( F( EF(E F(  F(F(F(F(F(F(F(  F( F(  F(X F F(F(F(J ExF( F(F FF(F(J ExF(F(J ExF(F(J Ex F8F(  F(F( F(4F( F( F(EF(EF(F(F(F(F( F(F(F(3 F(F(4 F( F(3 DF(  F(  F(  F(  F F(F(F(J ExF( F(F  FF(F(J ExF(F(J ExF(F(J ExF(EJ ExF( 9` F( F(  F(F(F(F(F(F(F( F(  F(XX 9`9`F(F( F( F( F(BF(F( F( F(F X 9`9`F(F( F( F( F(BF(F( F( F(F X 9`9`F(F( EhF(Ex F8F( A  F( F(F(  F( F(F(F( F(F(F(  pF( F(F(F(F(F(  F( F( F(A  F 4 F( F( F( XF(F(F( F(F(F(3  F( H4 F(F(3 EF(F(  F( F(  F(  F( 8 F F(F(F(J ExF( F(F  8 FF(F(J ExF(F(J ExF(F(J ExF(EJ ExF( 9` F( F(  8 F(F(F(F(F(F(F( F(  F( ( ( 9`9`F(F( F( F( F(BF(F( F( F(F  ( 9`9`F(F( F( F( F(BF(F( F( F(F  ( 9`9`F(F( EhF(Ex F8F( A  F( F(F(  F( F(F(F( F(F(F(  pF( F(F(F(F(F(  F( F( F(A  p FF(EJ ExF(F(EJExF(F(J ExF(F(J Ex 9` F( F(  8EF(F(F(F(F(F( F(  F( ( pF F( F( F( F( F( F( E F(  F(  F(  F(  F( 8 F   F( F( 4 F(F(F( XF(F(F(F(F(F(3  F( H4 F(F(3 EF(F(  F( F( F(  F( XF F( F( F( F( F( F( E F(  F(  F(  F(  F( د ذ F F(F(F(J ExF( F(F  ذFF(F(J ExF(F(J ExF(F(J Ex F8F(  F(F( F(4F( F( F(  F( F(F(EF(EF( F(F(F(F( F(F(F(3F(F( F( F(  F(  F(  F(  Ȱ7x7x F(F  ȰEE F( F( F(  F F8F(F(7 F3 F(F  7x7x7x F(F  EE F(F  F F(BF(F( F( F( F(F  F F(BF(F( F( F( F(F  F F(F xFF(F(J ExF( F( F( F(F xF F( F(F 0%%F(F( F(%F(F(F(F 0F%F(F F(F hF AhF(F( F( F   .@.@.@ F( F(F  ::F(F(F(F( F(F(: F( F( F(F( F(F(  F( F( F(F(F(  F(  F( p pF F( F( F(BF(F( F(F  p F F( F( F(E F(F( F(B F(F( F( F(  h F(F( E F(  F( X p h hF(F( F( F(EF(F(F( H p F F( F(  @4F( 9` 8F(39`EF(  ( F(4p HFEF(F( F( F(9`F(F(F(EJEEF(F(JEx F(F  X F9HF(F( F( F( 9`F(F( F( F( EF(F( F(F HF F( Ex F(  F F(F(EJE F(F  .@.@ F( F(F   ::F(F(  F(F(F( F(  F(F( F(F(F( F(  F(F(F(F(EF(F( F( F(BF(F( F( ȯ F F(F  ȰEEEE  F(F(F  ȰEEEE3 F(F(F  ȰEEEF( F(F(F  ȰEEF(F( F(F(F(J ExF(F  F( F(F(DF(F(  F(F(F(4F(F(F(3E4F(EEE3E>F(EF(F( F( F(  F(  F( =F( F( F( F(F( F(  F(F(F(F(DF(F(  F(F(F(F(F( F(F(F( F( F(  F(  =F(F(EF(F( F( F(F(  F(4 F(F(3 EF(F(  7x7x F( E4 F( EF(>F(3 EF(>F(F(F(JEF  EE F( E4 F( E>F(F(3 E>F(F(F(F(JEF  FEF(F(EEEEF(F(EF(F(F( F(F  FEF(F(EEF(EF(F(EF(F(EF(J ExF( F(F  FEF(F(EF(F(EF(F(EF(F(EF(J ExF( F(F  F F(EF(F(E=F(EF(F(E=F(F 0F F(F(F(J ExF(F 0 FF(F(J ExF(F(JEx EF(EF( 0F(F(F(F( F( F( F(  pEEF(F(  ` 0F(F( Ex F( ` `F F( F(F(F  `F F(F  FEF(F(EF(F(EF(F(EF(F(EF( F(EF( F(  pF(  pF(  H4 F(4 F(4 F(F(3 EF( F(3 EF(F(3 EF(F(  F( p HEEF(F(EF(F(EF(F(  0F(F( F(F(F8F(F(  HEEF(F(EF(F( F8F(F(  HFEF(F(EF(F( F8F(F(  HF F(F  0EEF(F( F(EF(F(F(F(J ExF(F  0EEF(F( F(EF(F(F(F(J ExF   EEF(F( F(EF(F(F(F(J ExF(F(J ExF .@.@ F( F(F(F ::F(F( F(F(F(F( F( F(  =F(F(EF(F(EF(F( F( F( F8F(F( F( F(  F(  F F( F(F  FEEE F(BF(F(  F(F(F(F( F( F( F( ȯ FEEF( F(BF(EF(J ExF( F( F( F( ȯ FEF(F(EF(J ExF( F( F( F( د ذ FEF(F(EF(F(E F( F( :F(F( EF(F(F(F(J ExF( F(F  ذF F( F(F  Ȱ FEF(F(:F(F(EF(F(E F(F( EF(F(F( F(F  Ȱ FEF(F(EF(F(EF(F(EF(F(F(EJE F(F  %%F(F(%F(F(  F(F(F( F(- %%F(%F( F8F(AhF(FF( F(  FAhF( F(BF(F( F(F  F F8F(F( F(  F F8F( hF(F(F( F( F( X F $F(F(F8F(F( % F(48 F F8F(9`F(4F(24F(F(3 HF(3/F( F(/ F-48F F8F(9`F(F(F( 7p  @648F%F F( :<:*: 8: 0.@A : : F8F( F( EEF( F(BF( EF(  EEF( F(BF( EF(  EEF( F(BF( EF(  77F( F(BF( 7F(  EEF( F(BF( EF(  9H9HF(F( F( F( F( F(  9P9PF(F( F( F( F( F(  9X9XF(F(9XF(F(  F(F(F( F(  7`7`F(F(F( F(DF(F(F(F  7X7XF(F( F(DF(F(9`F  7H7HF(F( F(DF(F(7(F  7@7@F(F( F(DF(F(7 F  66F(F( F(DF(F(F( Я EEF( F(DF(F  //F(F( F(08F(F(F  99F(F(F(9F(F(F(  44F(F(F(4F(F(F(  44F(F(F(4F(F(F(  88F(F(F(4F(F(F(  44F(F(4F(F(  AhAhF(  9898F(98F(  44F(4F(  F F(BF( F8F( F(F( F(F(F(F( F( X F9HF(F(  F(F(F( F(  F9F(F(F( F(B F( F( F( 9XF( F(F(   F(F( F(F(F( F(  F:F(F(  F(F(F( F(  аEEF(F( F( F( F(F(F  аF F( F( F(F  FF F8F(F(Ah FF F(F  X7p7pF(F( F( F( F( F(  X 7(7(F(F( F( F( Ep F( F(  X 7 7 F(F( F( F( Eh F( F(  X 77F(F( F( F( E` F( F(  X 77F(F( F( F( EP F( F(  X 77F(F( F( F( E@ F( F(  X 77F(F( F( F( E0 F( F(  F:F(.@7hF(F( F(BF(F( F(F  F:F(.@EF(ExF( F(BF(F( F(F  F:F(.@EF(ExF( F8F(F( F( F(7ȯ F:F(.@EF(ExF( 7F(F8F(7hF(F(F( % F(48 F F( .@  .@.@ F( F(F(F  ::F(F(9HF(F(  h::F(.@ F( F(F(F  h::F(F(9HF(F( h F F( .@ h hF   F(F( F( F( 9 F(4 F( X F( F(F(F(3 :F( :F( : F(.@ F(  F( F(  F F( F(BF(F( F( F( F(F  F F( F(BF(F( F( F( F(F  F F( F8F(9`F(F(F( F( F(7ȯ F :F( : F( : F(.@ F8F(   F( F(F( F(   F( F( F( F( 9 F(4F( X F( F(F(F(3:F(: F( : F( :F(.@ F( F(  F(9 F :F( : F(.@   F( F(F( F( 9 F(4 F( X F( F(F(F(3 :F(: F( :F(.@ F( F(  F(9 XF:F(F( F(F  @%%F(F( F( F(F( F( F( ( @F F( F( F F( ( ( %%F(F(%F(F( F(BF(F(  F(F(F(F(F( F(9 (F%F(F( 9F(F(F(F( F(9  F F(BF(F( 9F(F(F(F( F( F( F(9Я  F 9H4F(F(39F(F(F( F( F( F(9Я9а9H9HF F(F(9Я9а9H9HFF( F(FF(F(F 9а9H9HF(F(F( CF(4F(F(F(3,F( F(9Я9аFF( ,F(F(J0E F(F 9FF( ,F(F(J0E F(F  F 0`F(F( 8F( F( 34 F( F /XF(F( F(  F(F( FF(3 4 F( 9`8 F(3 9`F( F( F( F(9 FBF( 9`F( FF(F(/XF(F(F( F(F(FF( F( F(3FBF( x9`F( FhF(F(FF( F( F(3F F(BF(F 0`F F( 8(F(F(PF(F( F( F(8(P7x F(F(EF(F(EF(F(DF( F(F(BF(F PE F(F(EF(F(EF(F(DF( F(F(BF(F PF F(F  F F( F(F(F(F(F( :F(.@ 3H 3F(3F3F(3H8F( F(FF(  F(38EE F(F(F 87x7x F(F(F 8F3 F F( F(EF(F(EF(F(F( 34F(E<E<E<33F(F(3EF( H F(3 F 3F(F( H F(3 99 9HF9H4F(9H4F(9HF9H4F( 9HFF33PF(3337PF(F( 9H4F(9HF9H4F(9HFF33PF(33 F(:F F(F Ȱ F( F(F(F Ȱ F( F(F(F Ȱ F F( F( F( F( F( Ex .@ .@.@ F( F(F ::F( F( F( F( F( F( F( F(  F(  F(  F(  F( F( F(  F( F( F( F( F(xF(  F(4 F( F(3 F( 9`F(F( F(F(F(F(F(F(F(  F(  F(/  F( F( F( F( F(hF(  F(4 F( F(3 F( EF(F(F( F(>F(ExF(F(F(  F(  F(/F F(B F( F( F(  F( F( F( F8F(EF(F(F(/F(4F(F(/F(F(F(4F(>F(ExF(F(F(3:4F(F(3x>F(Ex3h4F(Ex3F(  F(  F(  F(  F(P F F( F(F(EJ Ex F(F(F( F(F(F(F(  F(  F(/h F F(F(F(8(F(F(8F(F(F(9`F(,`F8F(FF( F( F( F(hF F(F (  F(F F F( F(F  F(F(F(F( F( F8F(F( F( F(8 F(F( F( F( F8F( 9`F(,F( F( F( F(  F(د8F,` F(F F F( F( F(F( F(9 F F( F(F(F(F(F( F( F(8( F(F(F(F( F( F(F(F(F(F(J EF DDF(F(x PPF(F( x F(F(F(F(F(F(  F( F(F(F(x F F( F( F(E F( F( EF( F(F( F(h EE3 F( F8F(h `F(F(F(F( F F( F( F( F(hx F7x PEF( F(EF(F(F( F(F x FE PEF( F(EF(F(F( F(F x F F( F( F(E F( F( EF( F(F( F(hx EE F( F8F( hF(`F(F(F(F( F(x F F( F( F(  F(hhFF(F(F(F( F(F F@0F F:F(F( F(F(F(F(F( F( F(PP F( F( F( F(F(F F( F( F(F @F F( F(F(F(F( F( F(0 F F(F(F(F(F(F( F( F( F( F(-P    F( F( F8F( F(F(F(F( F(ȯ  F( F(F( F(F(F(F( F( F F(F( F(F(F(F(F( E F(F F( F( F( F(دȰ F F( F( -PF(  H xF(F( F( F8F( 9`F( F(F( F( F(  F(0ȰF F( F( F(F  F F( -PF(  F8F( 0F(F(F(F( F( F(0F F( F( F(F  F F( -PF(>F(  F8F( EF(E F( F(F( F(F(F( F( F(0F F( F( F(F F F( F( F(h F F( F(F(F(F( F( F(0hF F8F(F( F(HhEE F( F(F ذF F( F(F ذ F F( F(F(F(F( F( F( F(0-PF(F(=F( F(F( F( F( F( F(F -PF F( F( "E= F(4pHEE F(  F(F(  F(F(F(F H FF( F(F(F( F(F( F(F x  F(F( F(  HF(F(  F(F(F ذ 887x F( F( E F( Ex(ذ E F( F( = F( Ex(ذ 7x F( F( = F( Ex(ذ E F( F( = F( Ex(ذ 7x F( F( F( = Ex  F( Ex(ذ E F( F( F( = Ex  F( Ex(ذ  F( F(EF(F( =(ذ  F( F( F( <  F( Ex(ذ  F( F(EF(F( <(ذ  F( F( F( <  F( Ex(ذ  F( F(EF(F( <(ذ xx F( F( F( F( <  F( F(  F((ذ hh F( F( F( < F(  F((ذ XX F( F( F( F( <  F( F(  F((ذ HH F( F( F( F( <  F( F(  F((ذ 88F(F( F( F( < Ex F( Ex(ذ 00F(F( F( F( < Ex F( Ex(ذ ((F(F( F( F( < Ex F( Ex(ذ  F( F( F( F( < Ex  F(  F((ذ  F( F( F( F( F(.@ 9.4F( 9.4 F( 9.4 F(  F(F( 9.4 F( E F(F(F( 9.4 F(EF(F(F(9.4F(EF(F(F(9.4F(EF(F(F(EF(F(F(EF(F(F(EF(F(F(4`4F(F(34F(4F(4F(4F(F(3.F(3.F(3.F(3.F(3:F(:>F(.@3:F(:>F(.@3 :F(:>F(.@3 : F( :>F(.@3 :F(:>F(.@3 :F(:>F(.@3:F(:>F(.@ . F( F(9F:F(F(F( :F(F(F :F(.@ F( FF( 6 F(F(F(F(6 F( EF(F(F(34F( FF(3F( F(8ذ F F(F(8(F(F(4`4F( 6  F( F(F( 6  F( E F( F( F( 4`4 F( FF(3 ` F(34F(F(3F( F( F(2ذF F(FF( x Ex F(xذF F(2F F(F(`F F(F x F HF(4F(@F(F(3:4F(.@3:4F(.@38F(F(F( F(   F8F(F(  F@F( 2@F F(F H hH hH hH99 9F ::9::.@ F8F( F(F(F( F( F(8( Fа F F( 984F(F(F(F(F8F(94F(F 4 F( F(F(398DF(F(3 F(F(F(30 @ % F(48аFF F( F(:F(F(:F(F(:F(.@ 80 F(F( F( F8F( 9`F(4F( AF( F( 80 F(4 F( F( AF( F(F(3 :F( F(3:;:*:*.@ F(  F( F(A F F(EJ)Ex F(F(22F(F( F( F(2FExJ)Ex 9@EF(hF(F8F(22F(F( F(2ȯh F(F(F hFF(JExBF( F(F  FExJ)Ex 9@3F(PF(F(F8F(22F(F( F(2ȯP  F(F(F P%%F(F( FF( F(8P99F(F( F(F( %F(F( FF( F(8PF F8F(84F(F(FF(35F( F(PF F( F( FF( F( F(%%F(F(F(5F5 F F(F(F( 8F(F(F( F( F( F(8::F(.@F(8::F(F(8F(F(85p5pF(F(85`5`F(F(855F( F(F(5د899F( F(F(98//F( F(F(/8 11F(F(F(F( 94F(4 F(F F(38(F(::.@3 F(F(F(F( F( F(18FȯȰF F(F(FF( F( F(F 8F pF(F( F(pF F( 6/F(ExF8F(F( / F( F(6pF F(F  F%F(F( /F(F(4`84`4F(94F(F F F(3/EF(Ex3%F( F((F F(FF( F((FF  F F(-p DF(F(F(94F(4F(F  F8F(F(3EF(39H4F(F3AhF( E8@ FExJ)Ex 4`4F(F(F( CEx F( 4`4 F(F(3 84 F( ! F(3 F(34F( !F(3F( F( F(2 F F(F(  F(F(  @F(F(F( F( F(+%%F( F(%F(F(F %%F(F( F(%F(F(F(F F%F(F F(F 7F AF(F(F( F(ЯаF F( F( 0pF(F( F( F(90p F F(F(8(F(F(F( F( F(8(::F(F( F(:F(F(F(F FA1(F F( :F(::::::.@  x1F 74F(F( 6F(F(3:4F(:4F( :4 F( :F( :4 F( :4 F( :F( :4 F( :F(.@3 :<( :;P :<( :* :p :* :* :h :<( :; :` :<(.@3 :<( :;P :<( :* :*p : 0 :<( :X :' :P :*p :* :* :* :; :*x :* :; :<( :;8 :<(.@3 :<( :< :; :;.@3 :;P :<( :' :* :p :* :<( :; :' :` :' :* :<(.@3:;P:<(:':*:p:*:<(:;:;:::H:; :::::::;@:<:;:;P:<(:':`:*:*:*: 0:<(:;:::H:; :::::::;.@3:;:':*:p:*:<(:;:<:< :<(:;:*x:*:X:;:*:p:<(:;.@ F( F(1(@F F( 7p  @ (60F 1F( F(@0F 0F( F(@0ذF F( < ;H0د0ذF F( -p0د0ذF 0F( F(/ 0F F( 00F F( .`00F F(   11F F( 11F F( .`11F F(  11 F F( F( F( F(11 F 00F( 94 F(F 4 F( 00 F(F(3 0F(F(F(F(3 98 4p :4 F( :4 F( :4 F(.@3 F(3 F(F(3 F(  F( F(00 F 2F(F( 74 F( F( F(F( F(F( F( 6  F(E F( F(F( 34 F( FF(3 9`F( F(3 :F( :F(.@  F( F(6 ذF( :F(:4F(.@3:;:p.@ (F(F( F(7ذF F(F 9ȰF F( 9 .`9ȰF F( .` 9  10ȰF F(   @1F F(  .`11@F F( 618F F( 1861 F 74F(F(6F(:F(F(3:F(:4F(:F(.@3:<(.@ F( F( F(2F B xF( B pF( F8F(F( F( F(:F F( F(F 1F 1HF( 1F(F(F( F( F+XF 1HF( HF(F(F( F( F+HF 1F(F(F( F( F(1F F( 1X1F F( 1X1F F( 111F F( 111pF F( 1p11xF F( 1x11hF F( 1h11`F 1HF( :F(F( F( F+8F9(  F(F / F F( / / F F( 6F(F(   F(6د/F F( F(  56دF F( 6F(F8F(F(   F(6EEEx F8F(F( == F(F XFدذ F F8F(  F(F(  F(ذFF F( F(F( = F(x F F( !BF( F(BF( 9HBF( F(BF( 9HBF( F(BF( pBF( FF(FhFF(P8 F E4F(EF(F(3EF(F( 9` F(4 F( 4 F(F(F(3 : F( :4 F( :F(:4F( :F(:4F( :F(:4F( :F(:4F(.@3::<(:;:;.@3:<(:;:<(.@3:<(:.@3:<(:;:<(.@3 :<( :; :; :<(.@3 :<.@ F(  F(دp F F8F(8F( 4 F(  F( 0HF( xE F( F0 3F( F9H FF( F9H FF( F  3F( F FF(3 9H4 F(43 0HF(  F(p F F8F( xE F(  F(F(  F(0HF F( EF(FF( F(8(0HF F(F PF F(BF(F( F( F( F(F P F 9`F(P9`F(<9F(4 F( F( AF( F(F(3 9H4 F( 0P F(F(F(F(3 8( F(F( F(A0PF F( F(F( 9`F(F( 9`F(F( F(:0PF F( F(F( 9`F(F( 9`F(F( F(:0PF F( F(F FF( CEF(2F(AhF(2F(F( F( F(F 9H4F(433(F( F(`F F8F(F(F(  F(`F F( دذF( /F(3F3`FF(3P3F(3HFF33F(3FF( F((ذ 3F(3FF33F(33F(3FF(  F(3F F( F(F F( EF(F(  !6F F( EF(EF(6F(F(  6hF F( F(  6PF F( F(BF(F( EF( @4pP F 60F(F( 6 F(F( F8F( 9`F(F(F( F( Ex F(8@P FF(EJE 60F(F(6 F(F(=ExF(F(F(  ! F( F(6F (F(/F(F(F(  ! 6دF F(  ! ,`6د F EF(PF(F(F(F(F(  ! F( F(6ȰF F(F( F(F hF(F( F(F F(F( F(F hF(F( F(pF :4F(F F(39H4F(9H4F(F3>F(38@>F(= F( F( F(ȯPF@F(F( F(BF(F( F(PFF(F( F( F( F( F( FF(F( F(BF(F( F( FF(F( F( F( F( F(FF(F( F(BF(F( F(FF(F( F( F( F( F(F F(F(F( F(BF(F( F(ȯF F(F(F(F F(F(F( F(BF(F( F(F F(F(F(x F EPF(F(F8F(4F(F(39H4F(9H4F( 9H4 F(43 3x33F(33h  5 F(6xF F(F xx F( F(xF(X= = F(F hhh F( F(  F( E F(F( F(  h F( hF(ExF( F(F(  F(X  F( F( F(F( F(F(  F(  F( F( F( F( F(  H DF(F(F(ȯ  F( F(F( F( F( DF( F( DF(F(  F(  F(F(F(ȯ  F(F(F(ȯ  F( F( F( F(  F( F( F( F( xx F(8F(F( hh F(8F(F( XX F(XF(F(F(ȯ  F( F(F(F(p 88 F(8F(ȯ 00( F( (( F(  F( F( F( F( F(P  F(F(F(F(ȯ  F(F(F( HH F(HF(F(  F( F( F( F( F(  F( F( F(F( F(F(  F( 88 F(8F(F(  F(F(F(  F( F( F( F(  F(F(F( HH F(F(F( (( F( F( F(F(F(F(د  F( F( F(F(F(F(دذExExEF(F(F(F( F(ذEEEF(F(F(F( F(ذ= = EF(F(F(F( F(ذ==F(F(F(F( F(ذ== F(F(F(F(F ذ==F(F(F(F( F(ذ== F(F(F(F ذ<< F(F(F(F ذ<< F(F ذ<< F(7(F(F ذ<< F(7 F(F ذ<< F(xF(F ذ<< F(7F(F ذ<< F(7XF(F ذ<< F(pF(F ذ<< F(`E(F(F(F ذ<< F(`E F(F(F ذ<< F(`XF(F(F ذ<< F(`!F(F(F ذ<< F(`4F(F(F ذ<< F(PF(F(F ذ<< F(@F(F(F ذ 0 ! . 2 ** `@nԗ6  㿘*  㿘*** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s 㿘.`* x"`  & )! a + @n# 㿘@ƒ @’ @ * @(㿘@ @ * .@([].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$float㿘 #@Q #*` $  #@J $  #@E $  #@@ $  # @; $  #(@6 $  #0@1 $  #8@, $ < #@@' $ @ #H@" $ D #P@ $ H #`@ $ L #p@ $ P #@ $ T #@  $ X #@ $ \ #@ $ ` #@ $ $ #@ $ ( #@ $ , #@ $  #@ $  #@ $  #@ܒ $  #@ג $ 0 #@Ғ $ 4  @͒ $ 8  @Ȓ $ d$ t$ p     $ @$ $ h T d @' `  X d @' `   (@ $ l$ $ $ ābp_stateeditor_programediteditor_filenoname.plversion㿘  " b ”  c   c0Ȕ!Y@ 㿘@mF 㿘@m? 㿘@m8 㿘@m1 㿘@m..  6 "@`㿘 "㿘&@&  2& @m .`& .`." &  &  &  & &  & @ codeboardnot enough common memory㿘xbL   ̤bL@`? " @*` $`x$`|d? !  " `! "  @@l  $`Ƞ ?$`@&$ " K 2    q! add_engine: engine table full㿘*? @`""` .`Đ "@Đ"` N"P : //4choicetrailheapmessagesadd_engine failednot enough engine memory㿘 l! @ `? H! 7 "ʐ $  * " xbd    "  #0  #H * *  ( del_engine: engine notfound㿘*   @* @ *"@ ? "`@(@   㿘 @kޒ $.`( .. "@"`"` "` "`"`"`"` "` $`$ \` 㿘 "  @k |@k X@k 4@k @k 㿘  " @kh:s:t:c:b:d:a:i:q:%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]p??  #%*# +xb@ @kV*`: ?* :  z* 54444555445l5555555554\4b@k3 _* ]%b@b@k) U* S$b@k쀢 K* I$b@k耢 A* ?$ b@k 䀢 7* 5$b@k - ) * '$b@j܀ ܐ  * $b@j؀ ؑ* $b@j۔Ԁ $ "? ??s )! b    @j#`o *  * @BinProlog %d.%02d㿘1*!8 b8 @j -Copyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s㿈) "x' % # c! ##\#d#h1*!Xx"ؖ#` @jIc 㿘%* )!$  $ *#X$ !Ѡ#@, I   , @   ,  x@@ `  interruped(%ld)...restarting 㿘 ! *@jX @j )!`@i* @\@^㿘U@9ؐ 㿘!x"X*"`"X`?* "` *"X"`* *"a* "a `?string table overflow㿘!*!@iǐ! xbX**`@ !! $!*`   "*` %ld symbols, %s!!! symbol hashing table (almost) full㿘)!*b@inA"1 (%75)unexpected!!!㿘L   J. @J  xX*  ? *.  *  ` `X@iW  X ? @`.  `* .  )* `  `" f*`. " ** `* "*x"X: : @  ## xX @ ** *  ` bX""bX@ %s/%ldarity limit exceeded㿘a )!a`@h–!h ^* 2  .`@    ("("@ " 㿘 !*& x"p *!$ $ * *!$  $ $ 㿘 & *`x"p` *@#2"a @ @  & no definition for: main/1㿘*`p`p@"I"integer expected in halt/1㿘 ` '#0 :` trailing in unifyunifyvalue trailing㿘&&'? ?" @ @@`@ $```@8(&@ 2&6` "&&rP\@   O P`&Pa"@ 2&@6  "&@&@@TP\@   1 P`&PC"@`C >6  :   @:$@P\@   x P"P`"`P &P$@ .  $ @ ? $.  @?$@ $8a *** bad instruction: [%lu] *** 㿘)!bx@g~ D undefined in EXEC㿘* p@!2bi㿘 | X  4# P` # "`$* `"`( " 2 " P" "@`?㿘ْ㿘&`*``&````@!` @ ' 2@  '?`P'?`' @load_engine: bad engine㿘 2 | H)  X* 4$ P"$`` "(```@!)   $@ 2 `$ P$ $@ Đ "@ "  " $ , $ t" 㿘???ǐ?㿘    4 , t@<  㿘 @:    "@ 2    answer: bad engine type㿘: `%"@*`@FFF`FpFFFFĐ "@Đ "@Ē "Đ "@","t " {a@  *** suspend_engine: %ld bad engine type %d 㿘@:  )!@f\b"   "@","t" 㿘 $1*?@ ? @   @ @:  `"@쀤@(@ ?* 耦?'  !'*@ :   J   @:  ""@쀤@2`"  ?  ??2@ unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operation㿘 -*p+* ` "*`@xMlMMMPQQMRxNNNNRRRRSZZtZ[[,S0SDSS[]VO`XOU\P XP@W|PPXPTPOXOO,\([Y]QQXYY<YHYYYY[@[X``_4db b(bLbbcLcdde`efg@gghLiitij$j|jk,kkl,l|lmmXnn8n\nnnoLooppDpprrXruppq0qPqqhqr8sxutuLust st|txxxxxxxxxxxxw$uv0vdvvvvwwxx0xdxxyD]^P__``a aPa|aaaaaԀ4&&@ 44 "744&@-`4`@ 2*@  @ 2@  P \@   X  P`' P"@$@`@ 2`&@4&, 2 &@, 2 &44, 2` . ", 2 4&, 2 4&4&, 2 C&4&&@`, 2 &&`` 4 ", `4&@, 2 &&`` 4 " , 4&@4&, 2 Ֆ "M4&&@, 2 &`w`"6`@ 2#@  @ $@@Z P \@   ,  P`' P"@2FD4$@&@`<  đ4`@ 2#@  @ $@@ P \@   `  P`' P"@2 ̴K4 &@˶ ` @ ö?@ @?%"4  8"  8@ `@  @  @ "@u"}` 8@ `@  @  @ "f``` ` `4& , 2 `&4`@ 2*@  @ 2@  P \@   K  P`' P"@$@`@ 2]`4 ґ, 2 `&4`@ 2/@  @ 2$@  P \@   y  P`' P"@$@`@ &@4&`2`4\ , 2 `4`@ 2*@  @ 2@  P \@   0  P`' P"@$@`@r 2` `4& , 2 `&ƴ 4`@ 2*@  @ 2@  P \@     P`' P"@$@`@` 2``4& , 2 Ֆ "`  &@4&&@4'&&@4&4>&`&@44&4$@&@`4&&``, 2 &&`` V 4$@&@`4 &`, 2 &&`E` 4$@&@4 &`4$@&@`4&&`, 2  &`*`  8@d  4 ^Г, `,  & 2 ,  & P&&& Pס4' P, ` & & 2 ,   P¡4' P, ` & & 2  )  $ Ā4, 4, @?, "@?4 * }&4&?, 2 `2}&?@  @  @  2m&?4  "i&?g&?, 2 `2&?@  @  @  2&?4  "&?&?4`2G&?@  @  @  27&?4  "3&?1&?, 2 `4 * '&@  @  @   * 4  "& & & 4&@, 2 & * &` `@  p@p @p@ۥ2`pW* `"6,@ & 2@ /, `@  4 @4  @4 p?, ,@@ ,p *& * `",@ & 2@ ,@  ,4  2@ ,&p@2  8@Ėp@ 8@ è t  :    ' ,' t "  Đ !]"@@ސ  | X  4' P` #&"`$* ``"`( & 2 & P& & tx xҐ!@@ 2l-!8 Đ@?"_,    @%"S    @"H @D @ ":   '  0& @$?p@"`@ `@_aX`@_`@ 2 @  @ 2ʴ`@  @  @ "`@  @  @  `@  @  @ ? 4  ` @  p@ @p?, 4 `*`@X  ??  * @` @!, 2   44 Ԗ OJ&:<  *  , 2   4=&??  * @` @ ٖ, 2  Ր4&&:< " *  , 2  Ȑ 4&??  * @` @ , 2  4&:@^< *  , 2   4&??  * @` @ , 2  4&:@^< *  , 2   4&? ` 2 ?:` 2?a`??  * @` @ ai, 2  ]4&:@^c< *  , 2  P 4&??@ D L, 2  @4&, 2  @^o ?3 @^j4 ? & *`  ?2` @? "@ "  @^RД, 2  * 4 ^& ?  _ap`@?  "@``"`< I*` 4   4  ` *`` 4"``` `Ԑ @^_??  * @`  @ǖ "O6J??  * @`  @ "9$4??  * @`  @ "#4??  * @`  @ " ش&Ӵ??  * @`  @o "´2??  * @`  @Y ""??  * @`2:< * *  , 2  ? 4&??  * @`2:< : *  , 2  ) 4z&??  * @`2 ? , 2   4f&??  * @`2 ? , 2   4R&??  * @`2} ? , 2   4>&??  * @`2i2 ? , 2  ِ 4*&?@Ӓ?*`*  , 2  ʐ4&?  a?`<  4` "=@  a4 *a)@, 2  4&@ "@ "۴@  "Ҵ* 0&?@*  "ƴ?` 2` "?@&??` 2` "?@&??@?]* 0Y, 2  M4&@Ô K, 2  ?4&@ >, 2  24&@P/, 2  4" 4o&@8, 2  4`&@ , 2  4Q&, 2`*`` 4F&@ "t?@  "l7?:  **  , 2  Ԑ4%&@  "S?@: L@  "E@ ؐ, 2  4&?:  2??  2.4  2*@f"$ @ܒ, 2  4&@ǒ "ܴ@-, 2  {4&@L"Ĵ?  $4  ", ?:  2  8@z졐!*    @k" ' , 2  B4&@?, 2  34&@Ԕ0, 2  $4u&* , 2  4i&* ?$@ P \@   iڐ  P`' P"@@ "J* ȑ, 2 @ $@ `4:&@ , 2  ې4,&@sّ, 2  ͐4&@ʑ, 2  4&@ "<@, "| đ2  4&* , 2  *``4&@ b, 2  4&@ , 2  z4&@  "Ĵ@ ֒ "@  ", 2  W4&?`2@@ P \@   릖  P" P`"` P ' P?$@???:`:d:1, 2   #4t&?? "mH "f?[?, 2  4X&?  2<  "M?;  2 +  , < t1"0 ,"P Đ@~ݑ, 2  ?ϐ4 &PL㿘쎐!*"a   a * a *a  *?a *a * a *3a *a *a *a * a *a *a *Aa *a *a *a *a *a *a *a *a *a *1a *a *a *a *"a *&a **a * a *$a *(a *,a *5a *6a *7a *8a *9a *:a *;a *`<㿘N  -`? , ,: @L   , ,  ?&@ &@`?㿐ג *  s 2 2  `" " expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinked㿘`: -*+)5/* #  @  "X ဤ Ȁ ?܀* ` ْ` ` ֑,, # @ @@  `@ # @, # @, ` ǔ @#a)'    a+ 2 * 8@X3  `a @; X #@X`@ a@X`h,* p@ǒ2@?, 4 ?* @`p A&y, # "M C "8l&    "Cc&  ^&  <  & ࠓ*` < &  ࠔ <  & ࡓ*` < & ࡓ*` 8& < 1& * @/& &  < 1)& &  < &&  < & ,!* p@M  ` p* @@ @ < $@" ,` * bad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op㿘*  "` <;" !h. @d<XXXXXX`HH444(444444444444444444444444444444HX4444444444H44444444T444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444,֒*`p `p@+0 + 8 "`X0+ 1"`4 #,+ 8 #`` <+@8  `"@ `?@(`  <"  < "  " " 4 筐 \ + 4 2W + " 0@ < "@ @ "@ `' "` `' ` < "` . ++ 4 22  @ < "@ ?*@. " "`4)! `@V h    ' +"`8+ 4 2  g V! 3N`_ + 0* `  @ 2V * p+@`0 |`"K + 4 2 T+ 4 2ܰ  + 4 2հ + @ $+  c + | +" ' * .`2 @"+ < 2   c 2  | *" @   c 2 | " ' * .`2 @"+ < 2|   c 2v  | q"+ 4 2 + @ $+  c + | #" ' * .`2 @"+ < 2P   c 2J  | "E" @ ;  c 27 | '" ' * .`2 @"+ < 2+   c 2%  | & "+ 4 3  @  < "@+ 4 2( + @ @+  c :+ | -" ' * .`2 @"+ <  +  c + | ," <  +  c 3+ | 7" < 2   c 2  | 8" @   c 2 | !" ' * .`2 @"+ <  +  c + | " <  +  c 3+ | 5" < 2   c 2  | 6"+ 4 2 + @ @+  c :+ | %" ' * .`2 @"+ <  +  c + | $`" <  +  c 3+ | 9R" < 2O   c 2I  | :D" @ :  c 26 | )" ' * .`2 @"+ <  +  c + | (" <  +  c 3+ | ;" < 2   c 2  | <"+ 4 2 + @ 28   22 + <   # .'  .$"+ 4 2 + @   c 22` 2`2 | /" ?*@. ">  ?*@.` " * .2 @"+ @ 2 ? c ,2` (`2&   :   < 0" ?*@* "  0?' + 4 2  ?* .` # ' p"+ 4 2  ?*@.` " `' _"`+ 4 2r  ?*.` "  # 4 '  _*F" + 4 2Y  `@ < 9"@ l?*@.` "+ 0 ?N ?Б* 2 * @"+ 4 22  ?*@.` "  <+ 4 2!  ?*@.` "  @++@*! "<   "@  '    і 㿘x ""p@ <"@*! !* *  & + "`4+ " @+" < `+ " 0 ` < " ` @  &  `" `& 㿘? & `&  @@Si`#" @Sh0  ? & `&  @@SU $`0? &  & @SB%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declaration'* ?T  $̐%`hTX@S  T ?T*@ 2$)!%`p Txp#\ ?T@R͚%㠐 $̰㿘  rb??? file not foundbegin loading %s...%s ...finished loadingunable to load kernel file㿘%@RȒaࠒ %%!%]!s "9 +*? $ `$  @@R?N? $ `$  @@R>? $ `$  @@R.xb\  `? $ `$  @@Rh,@* : ? `J \ &`*`a2@RY %"%b "%b8instruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). 㿘* " R '))&,    ?M : *` @ ,  ``` &`",  @`*  "&`h@Q &+`  `` `@Q &⃐ ,,&`Ȕ!* @Q  systemuser㿘 &"x  &"x @ 㿘    ̒ې*` (" ?unix_argv's 1st arg must be integerunix_argv's 1st arg not in range㿘?   &4cp:  *`` &%c`+ @S unix_getenv's 1st arg must be a symbol㿘? ` 2` *` '`H2 *`* @Q6@  + unix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbol㿘? `  '`:`? `  2`  'a *`2 *`* @@P `?unix_cd's 1st arg must be a symbolunix_cd/1: bad directory㿘?  '6  . aБ2 *`* @P@  'aጔunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this process㿘?  'b? `  ' b< @P:`  'bN*` ( 㿘` 2&` `  ` @` ` 2&2` "&& ` 2y :``l( L*`@p<\*Ġ$ M"Đ B  :  P 2P  **!*!x"X" *  "" * x"X*`" * *!*` xbT* "@ *`  *  k v,  ` .    `u@ symcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ld㿘?  ?2  `(`"9 `3` `*2` **` +`2` *` * (b(2((b8** *2 `4* #@  :bH*2 ** * ;`@O\* 戒 file error on 2 arg in older_file/2@Ox?(#x @O?@&  0 bad old file name in older_file/2bad new file name in older_file/2㿘?   )`*2 ?*`*  ` *2 *   )`0bad file name in see or tellrbunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operation㿘??2   )߹`, 2 ** ` <@*```T1&`L@Ғ`  )@Nϒa2)]!@} 2*)T!0*)@NaM@  2*)A!@" *A" 9)*```X.&`P@`  )@NaP%@C 2*)!X*)@NaP@Ӕ 2*)!h" *" !x   arg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operation㿘??2  `   ) c :`*  Ѐ *Ԑ   * @NC ?" 㿘?2   *  *޺  * @N,*  unimplemented option in seen_tell㿘 -!*  "*:*"5*6* а  @*?@??  ?@?*?@;?P*@M *   d" " p ԰  @" ???@?@M  ?$ &?@M 0a!H㿘  ` !* !* @` !**`2`  **`@M @M %ld㿘?   ** *c:@Mb?2 *`* @???: :`k:@ 㿘 `   `@ @``  ` ""   &. > >`2 *`* .`2` *`@M> 6 6`"@  ` 㿘`2 @"@@`@  `@ ` @ ` *   * @~2 ` 2 4``   `@ ` ` arity=%ld functor has bad arity㿘@ @  @@ ` 2 2 ?i WO * ` N, E`2  "  `2 ` " ` @` ` 20  :` 2)  "  )!+a@La+4! ?*,  && ?   㿘   6 !**c @LA>   .  2 *`* @* %* `   @` `2`* `  ( @` ( " *$  *  both args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2㿘@`2 @"@`@       * r #`'l"`J@ *(& @ *  &`J@   *$& Z   ` `,[   ,`,azbad constructor starts 1st arg of det_append/3det_append/3㿘* ,#  , `( 2` "8 ,Ob"  ,ܜ ## `   @  ` @ "8 # bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2㿘 c  3`   -Z` @   @ P` &     @   @ "8`-ۏ H=   2  -'`p       `  -` 2 ?**`   -`ۅ -Җ8 ? `@2" "  2    " "    *"@" ""  " term_append/3㿘` @  2@  ` 28 2`3  `1?+*` &* `"*@ & 2@ *@ & ** `"( & 2 ( & ( 8 - O㐰 value_trailing㿘P     .9y m & `   @` X` 2`  O `H `2 \@Ґ #@#`` ;"\@ǀ#@#``&"Ǚ2`?* `+  & 2 + `  " ` @` `  2`  8\:\ ` 2&2` "&& *  @@ "㿘,`8  2`   & f2&, bad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integer㿘`?&`"?"? @ `  .cp?*@` " `  .c:```*`  <" : *   " answer space overflow in findall_store_heapcopy_term overflow in findall_store_heap㿘`` @?  /52 `&`   `  & ` 2` & `` `ɖఒ2$/ى  $`"㿘`"@` "`"```  $`` "``^ ` 2?** " * @"2@*  "`"`bad continuationcompound continuation expected㿘  / b `  3`` /bR. ??+@.  . * ,` """  " 2 . bad argument for dcg_streamvalue trailing㿘?  `?<  8 %*/c0& 2`P*`P`\@   0RÐ `P"`P "``P &`P* ȑ,` "@㿘* `2P@P\@   0(ؙ P"P "`P &P*`(`(& & &߁  "  $&@setarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arity㿘?  0 a?` <  4` 2@0b@ `0 b@4 @ *`0bh`$@@@ 2`P:?`P`\@   0؝ `P"`P`"``P &`P? $@change_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe㿘? `  01c? :` 02 2 #c`  1` 2`( 1`P 1 `?+ ` @ 1`׿" xh*(  h "h%ld bytes, %s!!! hashing table (almost) full㿘)*a!1* b*@F1d" T 㿘!xU"T#*$aC"T*"!*?"aa  @ (75%)㿘x"T?*! @  #*, !*` `   * @  @     1*, * @  1*, !* @` 2 x"T%*: : @ 1"! "" " `*!$*hdef/3 required before using hset/3㿘x"T?*! @  "** !*` `    * @ @     * * @   **@ !*`  2 `2"` ֫ 8 xT *+  ( * *" *xT +  (@ @  連@   culprit->hindex㿘x"T? @**a *  *  -**@ !*` ` !*! x"T ? @ * *          2& & "H? xT @4 * * `  "T@  0T @** * @  `  " ! #!bT@  COPY_KEYS㿘 ` ` 2` x"T >`+*%*?# *!  @ {a v`* p@ox  j 8  `````6` 4Vx R* 0@N`Mx8 3  h~ a ` ($ $( $ $$  @$( $ 2`*  $a  `  ($ $( $ $($  @$( $ 2`*  $ ($ $ x"T |` * $ $*D D*2*T" 2 " 㿘  2 6  2  2  > $ ʐ 㿐? H 'x*+  a* # 8 x"T#*a: : @p *  1d"*aa(+ #@ @ #`#`*!$ay+3*`s  `lp $p 㿘?` 2` "?@&??` 2` "?@&??` 2` "?@&????* Stamp found %d, expected %d hash op on protected objecthtable full in hash op㿐?` 2` "?@&??` 2` "?@&???`*!  *+  a* @`* 0@ )!4@C^b?4b( `?4bHS+"x"T3*a: : @ 1"*!?+ @ *`" a  &a?"*!"* **` * @`arg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3㿐?`? 2` "?@&??` 2` "?@&?? 2?5 `5 HӸ 0yK`*!  *+  a* @`* 0@ )!4@BĒb?4+b(`?4$bH **` * @`* 0@ A  4  `` 5` ``pӖ,` x**` * @"`"T3*a: : @ 1"*!?+ @ *`a"  &a? "*!"*  def/3 expected before set/3, rm/2㿐?`? 2` "?@&??` 2` "?@&??? 5?'c*! @, ** a* @`* 0@  4   ` 5`  `p  **` * @"`㿘@.@.@㿘!x"h"h$"h""h.$"h+ h# h)H  h" hH  h+h)J  $2)"hhJ  _2+"h+h "@+h)J$, ؄ "h"@  + h+ h# h)H  h" hH  h+h)J  _2 "hhJ  _2+"h+h "@ + h+ h# h)H  h" hH  h+h)J  "h   hH " h h "@ + h+`h)H `h"`hH `h+h* J@8 `"h 㿘 ߐ ) ڐ , @C` `" 㿐* $  ]$ ) |  @$   ]@ $ ,  @  ؐ@  $x  [  ] * $Q$   @ D@$ 54 / "- ^ ( $ǐ䰒# 'ܐn'ఒxܘ$܀  *  "  0Z $㿐+" h3x&bh bh"@bh 㿘.`6` * .`string buffer (-i option) exceeded or infinite term%ld㿘  %*%*  %*x"\# ?@7#07v `4 ! $ _+#+`H7`4c" @@2  `H$`* " *` **a & $ _+#+`H$ a*7ac" @?ޕ2  `H$`j* " *` `*`  $ _+#+`H$ b*7`c" @?2  `H$`B* " *` 8*2#+`H7c@?:  `H$`&* " *` * 2*2 *`* @ $ +   " *`*` `|?"`| K* $ [+ *   **  *`( 2*!* ,    $  *  `(`(  `( " *`$  `$ x$ x |* x $ x ]:*2 *`* @ $ +    # *` *  |2@ " | (*%* ,  ¢` @`$ *@,`*`"` )*㿘!*  x$ | |`$ |*@ x㿘!*  x$ | |`$ |*@ x %s㿘!*  x$ | |$ |*9 x@>aȁ;`d` (@( ?` ""##?2  2 @#`#d`#bad arg in arithmetic operation㿈ј* && & &  㿈    > x `  *:`'xB +x   !‰    > x ` 2 *:`'xB 2 x   ?"x   ? )  㿀  > :x `  *:`'xb B )xd !   >x `  *:`'xbB  x C?Φ"x\ `?`W :!*`@ppppp4Ld0@.,@) 5 3/ - ) '# !@3   @#   ?ژ* $ $ $ $ 㿀` 2`  `@ ` w 2` s*`2 *`* @ `  :`:x `  *:`'xbB ? (x ?   : x `  *:`'xbB x  "x) l p2# ?@В ??@?@ ?Q* $ $ $ $ 㿈` 2`  `@ `  2` *`2 *`* @ `  :`x `  *:`'xbB?  x ?̀"x ?`18 ;"8*`@`tﰐ @/% xb 7…@'B'  ' *  8$ @"  $? @B ? @" ? @" ? @"ߒ ? @  ? @e ? @ ?* $ $ $ $ %ld%-se%-ld 㿈` 2` "@&` 2` "@&` 2` "@&  -   (2 %`  <`@:*2 * * !* @;ݙ>`@<, ?+ ?$@`$`$`$` %f㿐2 *@   ?< H@;a 㿘@.a @@ `" ѹ user_bpctrue_prolog:$end0 c.c not compiled with -D C_INTERFACE 㿘)xb@;n! 㿘)xb@;e! is_compiled_1()atomic_1()integer_1()nonvar_1()var_1()cnl_1()cwrite_1()fail_0()symcat_3lval_3val_3set_3()rm_2()def_3()change_arg_3()setarg_3()arg_3compare0_3l_neg_3&int_only_op!=<=rel_opput0_1()get0_1random_1fdiv_3div_3%arith_opprolog:c_check_avprolog:c_opcodeprolog:c_check_ivget_cut()put_cut()move_regpush_variable()prolog:c_skipc_trace(" ")unify_integerprolog:c_aux_unify_integerwrite_integerprolog:c_aux_write_integerget_integerprolog:c_aux_get_integerput_integerprolog:c_aux_put_integerload_integerprolog:c_aux_load_integerprolog:c_wvoidprolog:oldH_newPprolog:newH_newPprolog:oldH_oldPprolog:newH_oldPprolog:newPprolog:c_chunk_endprolog:c_chunk_beginfun_arityfun_symbolunexpectedprolog:c_find_funprolog:get_offsetprolog:new_offsetprolog:c_check0prolog:c_check{255,0,0,");_size=sizeof(long "}};[] = {struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} "#include "#include "../src/c_defs.h"#include "../src/global.h"/* do not edit: generated by co.pl */user_bpwam_bpprolog:c_decorate_file0prolog:c_spec_endprolog:c_spec},,(void *) {prolog:make_commentprolog:patch_specials"},,"prolog:c_traceprolog:wchunkprolog:make_bcodeprolog:c_instrprolog:make_hcodeprolog:make_ccode500c_threshold_minc_threshold_max100000xxprolog:c_rootprolog:sprolog:defeditprolog:my_defeditVISUALEDITORprolog:get_editorls -tFprolog:ubootBinWAM intermediate code.asmprolog:make_includeprojectin_moduleunable_to_make.bp.cbin_prolog_with_cparserprolog:cparser119110120100104newappl.bpdcg.plwrite.plread.pllib.ploper.plinit.plprolog:listifyprolog:make_cmd0prolog:fact2rulebeginincludingprolog:exec_run_time_commands0% !!! action delayed after compilation, for command:prolog:get_cmd_no$run_time_commandprolog:cmd_rootprolog:cmd2clauseprolog:exec_cmdensure_loadedprolog:include_fileprolog:preprocessprolog:is_dynamic_clauseprolog:translate_cmdprolog:translateprolog:put_to_eofprolog:make_memo_fileprolog:include_memoed_fileprolog:memoable_fileprolog:memoing_translate_allprolog:translate_all0prolog:write_c_chunkprolog:make_dummy_endendprolog:close_c_chunk_fileprolog:c_decorate_file$end0footerprolog:comp_fileheaderprolog:decorate_filetotal_compile_timeprolog:xcompileprolog:compile1prolog:compile0totalbytes_usedprolog:translate_allprolog:init_cmdcompilation abortedcompile_time$end1prolog:terminate_fileprolog:maincompprolog:mcomp_fileto...compilingprolog:currpredoffsetaritypredicateprolog:newpred0file_nameprolog:let_c_chunk_fileprolog:wcode_asmprolog:wcode_cnprolog:wspec_cbegin_endc_flagprolog:c_thresholdprolog:write_or_skip0prolog:encode_opprolog:n_builtinbuiltin_?arith_valueprolog:n_aritharith_variableprolog:n_inlineinline_variableend_?firstarg_?prolog:n_nopclause_?prolog:write_or_skipwrite_voidunify_voidpush_variablepush_structureload_valueload_variableload_constantexecute_?get_cutput_cutpush_cutget_valueput_variableput_valueget_variableput_structureput_constantget_structureget_constantpush_constantwrite_constantunify_constantwrite_valueunify_valuewrite_variableprolog:wcodeunify_variableprolog:mc_transform_voidprolog:mc4prolog:mc_transform_pushprolog:mc_selprolog:mc3prolog:mc_chunkprolog:mc_pushprolog:mc5prolog:mc1prolog:mc0prolog:mc_emptyprolog:mc_input0prolog:mc_inputprolog:mc_topempty_opcutprolog:encode2prolog:encode_argprolog:instr_catprolog:mc_peepholeprolog:mc_one_instrprolog:encodeprolog:beautifyprolog:gen_instrprolog:temparg256prolog:maxarityprolog:write_instrprolog:antigenicc_chunk_valuec_chunk_variableprolog:make_anti_callprolog:bind_lengthmemprolog:bind_c_chunk_lengthDEFINITE:EXPANDED:prolog:show_stepsprolog:show_infoprolog:show_fun prolog:show_or_skipprolog:gen_codeFINAL CODE:prolog:mc_all_instrPOST TERM-COMPRESSION CODE:modeBRUT WAM-ASSEMBLER:prolog:show_instrprolog:show_codeprolog:add_upper_contprolog:def_to_mbin0prolog:def_to_mbinprolog:emit_isprolog:split_rel_1prolog:split_isprolog:split_relprolog:split_is_relprolog:app_bodyprolog:repl_lvalprolog:repl_disjprolog:repl_conjprolog:repl_known116117prologspying_onprolog:split_opprolog:strip_nilprolog:repl_macroprolog:repl_bodyprolog:mdef_to_defprolog:get_regprolog:free_regprolog:allocate_regprolog:allocate1prolog:check_var_argprolog:check_var_varprolog:check_lifetimesprolog:set_toprolog:defaultprolog:collapse_themprolog:mark_varprolog:mark_argvaluevoidprolog:get_var_typeprolog:fill_var_typeprolog:fill_oneprolog:tpointprolog:fill_allbad_occurrenceoccatprolog:oldvarprolog:newvar$OCCprolog:occurrenceprolog:find_occurrencespushprolog:deep_var_opunifyprolog:unify_opprolog:emit_args0prolog:deep_structure_opprolog:emit_structureprolog:cc_tprolog:cc_argstructureprolog:emit_argsprolog:cc_argsprolog:emit_top_structureprolog:classif_argloadconstantprolog:classif_loadinlineprolog:cc_b_argsprolog:emit_top_bargsprolog:handle_constant_resprolog:out_regtempprolog:cc_top_tprolog:cc_eq1unexpected_body_atomprolog:emit_body_top_termprolog:cc_builtinprolog:cc_eqcutargprolog:emit_top_argsprolog:cc_top_argunexpected_head_atomprolog:emit_head_top_termbuiltinprolog:cc_b0prolog:cc_h0prolog:set_modeprolog:get_modeprolog:end_chunkprolog:emitprolog:hidden_varlenc_chunkprolog:begin_chunkprolog:cc_hprolog:cc_bprolog:allocate_regsprolog:collapse_argsprolog:fill_infodictprolog:varsprolog:maxprolog:cc_h_bexecutefirstargiiprolog:classif_firstprolog:firstargprolog:cc_clauseprolog:bu_bodyprolog:cutpfailing_to_compile_clauseprolog:newpredprolog:gg_emitprolog:cc_compile_clauseBINARY:binprolog:bin_builtinprolog:c_chunk_filewam.hcwamprolog:cc_must_have_builtinsprolog:cc_builtinsprolog:compile_builtinsprolog:cc_bincompprolog:compile_binaryshould be groundprolog:free_variablesprolog:explicit_bindingprolog:term_is_free_ofprolog:list_is_free_ofprolog:replace_key_variablesprolog:concordant_subsetprolog:replace_instanceprolog:keymergeprolog:samkeyrunillegal_argumentsprolog:keysortprolog:ksortprolog:merge_2prolog:merge_sort1prolog:merge_sortprolog:remdupsortedprolog:bb_origunsortedprolog:assume_oneprolog:assume_all0prolog:assume_all$usedprolog:copy_or_delete_llprolog:get_assumed_clauseprolog:insert_llprolog:assume_with_hint_llprolog:assume_llprolog:assume_fileprolog:assume1error_in_assumebad_clauseprolog:add_hint_lllinearprolog:assume$closedintuitionisticprolog:generate_run_time_predicateprolog:listing1% assumed prolog:listing0% prolog:consult_cmdprolog:consult_includedconsultingtimeconsultedprolog:consult_embeddedprolog:survive_cleanupprolog:consult0% using compile/1 is MUCH fasterprolog:consult_warningabolish_expects_dynamic_clausesfoundprolog:abolish0prolog:clause$dbrefprolog:collect_slotprolog:erase0prolog:clause0prolog:assert_itunable to assert clauseprolog:add_clause0prolog:add_clauseprolog:ensure_dynamic$lastdynamic code would shadow assumed predicateWARNING: dynamic code will shadow compiled predicateprolog:define_dynamicprolog:check_dynamicprolog:make_dynamic!!! compiled!!! dynamic!!! assumedFail: Call: : prolog:tr_callExit: Redo: prolog:tr_if2prolog:tr_disj2prolog:tr_if1prolog:tr_goalprolog:tr_disj1prolog:tr_bodyCUTprolog:do_disj0prolog:do_if_then_elseprolog:do_disjprolog:do_conjundefined_predicateprolog:do_undefprolog:do_applyprolog:do_goalprolog:do_compiledprolog:do_bodyunbound_goal ; for more, otherwise prolog:user_actionprolog:another_solprolog:report_top_varsprolog:report_one_vargoaltopprolog:savetopprolog:nothingprolog:topcallprolog:report_answersprolog:topinterp?- prolog:topstepinit_io$endprolog:exec_run_time_commandsprolog:binpro_startprolog:l_magic2:- ->; ( , :- prolog:l_magic_nlprolog:l_magicprolog:l_clausesprolog:pp_clause0prolog:classify_other_tailprolog:classify_alpha_tailprolog:classify_name700prolog:w_operprolog:w_tailprolog:w_argsprolog:w_atomotherprolog:w_VARprolog:w_variableprolog:put_stringalphaquoteprolog:maybe_spaceprolog:maybe_parenpunctprolog:w_out126969492255248246223222216214192prolog:is_latin1_majprolog:is_latin1_min90122prolog:r_varcountprolog:r_digsprolog:r_digitsprolog:r_int! end_of_file just after full_stopprolog:is_specprolog:is_alpha_num! end_of_file in /*.. commentprolog:patch_slashprolog:more_string! end of file in: tokenprolog:r_symbolprolog:is_minprolog:is_numprolog:r_integerprolog:is_majprolog:r_lookup95prolog:r_nameprolog:r_stringprolog:r_fullstop1251241239391prolog:r_after_atomprolog:r_solidusprolog:is_terminator-1end_of_fileprolog:r_toks 99999prolog:display_tokenprolog:finish_syntax_error** SYNTAX ERROR: byte=syntax_errorprolog:display_listprolog:start_syntax_errorbracketvariableprolog:cant_follow_exprfollows10001100prolog:peepopprolog:exprtlprolog:prefix_is_atomprecedencewithcontextprefixlist|]|argumentsin,)anstartcannotstring}{(()prolog:r_list][prolog:after_prefix_op999applyprolog:exprtl0prolog:r_args(prolog:rtsprolog:ambigopprolog:infixopprolog:postfixopprolog:prefixopprolog:expectexpressionafterexpectedoperatorprolog:syntax_errorprolog:rtprolog:all_readprolog:r_and_checkprolog:portable_writeqprolog:portable_writeprolog:portable_printprolog:r_vars** warning singleton_variables, byte=>=> :-...prolog:melt_varnamesprolog:warn_singletons1prolog:r_termprolog:singletonsfile_not_foundprolog:see_a_fileprolog:find_file2bad file namelibraryprolog:find_file1unable_to_tell_atunable_to_see_atunable_to_tellunable_to_seeprolog:peval_iobinprologprolog:default_prologexpected_to_expandtry_edcg_expansion-->>prolog:dcg_CONJprolog:dcg_disj0prolog:dcg_term{}prolog:dcg_disjprolog:dcg_goal@@prolog:dcg_head:-prolog:dcg_conjprolog:dcg_bodydcg expansion error->prolog:dcg_rule-->prolog:try_dcg_expansionkillcdaccessno such environment variablegetenvargvargcprolog:unix_argvHOMEprolog:unix_cdprolog:append3prolog:near_matchpredmarkprolog:predicate_key0compiledbuilt_ininterpretedprolog:generate_a_predicateprolog:predicate_property0prolog:is_predicateST267911168prolog:float_minus101prolog:try_float_exp1eprolog:try_float_expboxprolog:try_floatculpritblackboard overflow, left onlyprolog:bb_put_1prolog:bb_put_backprolog:rmprolog:letprolog:valprolog:setprolog:defprolog:bb_failprolog:bb_gcprolog:bb_default_valprolog:$gteqprolog:$lesseqprolog:$noteqvariable_in_iserror_in_isin tab/1: should evaluate to an integerprolog:tab0prolog:make_lengthprolog:get_lengthprolog:general_appendprolog:append_bodyprolog:appendNprolog:det_appendprolog:term2dlistprolog:term2list$floatBP_PATH9798105108prolog:getenv_path99115103111114112121109prolog:compile_memprolog:see_or_failprolog:save_termprolog:numbervars$VARvarsprolog:are_sharedprolog:share_varssprolog:call_ifdefno meta_interpreter for undefined goalcall_ifdefprolog:std_expand_termprolog:portable_expand_term1200?-1199prolog:interactive0prolog:is_interactivenoprolog:is_builtin_varprolog:bucontprolog:is_builtin_nonvarunable_to_spy_onyes$assumed$firstyfpostfixopxffyprefixopfxyfxxfxinfixopxfyprolog:op_typeprolog:get_op010000opmarkprolog:get_opprolog:gensym_noprolog:is_publicbad or repeated declarationprolog:hide_atom0prolog:hide_atomprolog:public0currentshould_be_nonvar[]*** : >>> userprolog:portray_errorprettyprolog:error_messagebasicbboardhtablesymbolsstringscodetraillocal_stackglobal_stackruntime:Cset_c_traceset_c_thresholdstat_dictsavedmember_inth_memberphrasefalseotherwisenospyspyingspyspy_goalinit_gensymgensymis_publicpublicmodule_namemodule_predicatecurrent_modulemodulesis_modulemodulemodule_calllwritepatch_itshow_code0char_in_cmdith_clausetr_bodydo_bodygc_read_clausegc_readadd_truebootctracetmakekcmakekmakecmakemake0makemake_executable_unix_applmake_appldirlscurrent_user_filecovinotepadpicoemacstexteditedmy_editeditis_builtinopcurrent_opswritesreadflushsee_or_failexists_filefind_filemake_file_namefile_libraryfile_extension_listfile_search_pathtelling_attell_atseeing_atsee_attoldtellingtellseenseeingseettycwritelnttycwritettyprintttyprinttynlttyputttyoutttyinfast_writepp_termpp_clauseportray_clauseportraydisplayportable_displaywriteqprintwriteread_tokensread_clauseread_with_singletonswarn_singletonstop_read_termread_termreadnlput_codeget_codeis_prologtoplevelmainquietmeserrmesuser_errorvars_ofterm_charsnotfree_variables^setofbagofkeysortsortbb_elementbb_listbbis_dynamicis_assumed-:assumed_clauseassumedassumelassumei=>listingreconsultconsultdebugabolishclauseeraseinstanceretractallretractassertassertzassertadynamictracemeta_interpretersystemunixaproposhelpctimecurrent_predicatepredicate_propertyacosatanasintancossinexpsqrtlogpow:=:dcg_phraseletbb_change_argbb_letbb_rmbb_valbb_setbb_def=\==:=>==<><@>=@=<@>@<\====compareexprisgettabappend_disjappend_conjappendNcompoundnumberfloatatomgroundgc_callnumbervarsmake_cmdlength++det_appendmemberappendargnforall_but_at_leastfind_at_mosthas_fueldrop_at_leasttake_at_mostnth_answerfind_whileskip_whenskip_untilwhileallfindall_disjfindall_conjfindallfindall_workhorse\=\+repeat,;->=expand_termmetatruemetacallinteractivestatistics::-=..asmadd_conttermcatstrip_contiforincludecompile.!bu1174n_nop160n_builtinn_arithn_inlinebu_ctrin_head8584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111098arith765432in_bodybu0700 xfx :=700 xfx =:600 xfx <=950 xfy =>950 xfy -:600 xfx :=:900 yfx :1200 xfx ::-1150 fx module1150 fx public1150 fx dynamic1050 xfx @@1050 xfy ->900 fx nospy900 fx spy900 fy \+900 fy not700 xfx \=700 xfx =..700 xfx ==700 xfx \==700 xfx @<700 xfx @>700 xfx @=<700 xfx @>=500 fx \500 yfx \500 yfx /\500 yfx \/500 fx #500 yfx #400 yfx //400 yfx <<400 yfx >>300 xfx mod200 xfy ^300 fy ~700 xfx =:=700 xfx =\=700 xfx <700 xfx =<700 xfx >700 xfx >=660 xfy ++650 xfy .400 yfx *400 yfx /500 fx +500 yfx +500 fx -500 yfx -700 xfx =700 xfx is1200 fx :-1200 xfx :-1200 xfx -->1100 xfy ;1000 xfy ,if0profilebb_resetlist_asmstat0shellnamefunctorfindall_load_heapfindall_store_heaprestartabortcallhaltnew_builtinsuspend_enginemultitask_enginesask_engineload_enginedestroy_enginecreate_enginequietunix_killunix_cdunix_accessunix_getenvunix_argvunix_argcsetrefbb_opbb_getbb_putiso_lseekiso_eofiso_peek_byteiso_get_byteiso_put_byteiso_read_termiso_write_termiso_close_streamiso_open_streamdcg_tellingdcg_telldcg_valdcg_defstrip_cont0write_floatinput_floatfloat_funfloat_fun2term_appendop0string_opsee_tell_atseeing_telling_atseen_toldsee_tellseeing_tellingolder_filebb_list0copy_termdet_append0lift_heapadd_instrself_infoterm2listlist2termdcg_connectsymcatlvalvalsetrmdefchange_argsetargargcompare0\#\//\>><<arith_difarith_eqgreater_eqless_eqgreaterless0putget0random///mod*-1+is_compiledatomicintegernonvarvarcnlcwrite_failtrue?$cut$bin_cut㿈'DD'HH^#Q^;hhl* 2 ;`;HH`$ 9$$ ^ ޙ ę,#hh#hh;HH+@;pp@t +!N#$$ #hh$#hh#ll#l@9l !T#;h$!hl ;ppt;`@ !^?>㿀'DD'HHDH* 2 ;HH?HD B3 DHDHHt?$!ȁ +0$aЁ 9D$!حV#``#`@a`DHZ?HDH Z$!#``#`HD`;HH+@ $#dd#d@;d@?$ 9#$!?詤T譥X?#``#`HD`;HH+@ $#dd#d@d?$a F# H$#``#``D@H?DHD@  ? 'DD'HHp'LL'PP'D'H$"" B#DD$'H' *   " PLHD@٘ ??HDH F# DLPLP J3 LDHLPPw?P$T#PHDk?L   2HDDH* 2 ;HH$b?`@X# $""""޽>H?@` =LLP%$ =PL''?.?P/$ 9LP???H7$ⰁP3LHD   2LLP9$""IDH* 2 ;HH;$bb 8DH2 &?P@dLPL?\#DLP$#PB#``#`@`bb$#X @ā L#D؁?DH$P# PLHD@ ??H* 2 ;HHDH2 '?P@"LPL?T#LP$#PZ#``#`@`$cX @$ D#؁??P#$bbȁH# LDHDHNU?P%$Ё R# DDH'$ ر8D?H2 2 PPLH@^D8?@LPL?\#'PDH)$+$-$#``#`LP@E`PL?#P @#``#`@x`cX@N#ء ?LHD@m #?   2 PLHD@[ ?/$` R# PLHD@M ??@'DD'HH'L'P$#h@#;h >hl;`@x` ;hhl;`@ !$bdb`'$$D`$$$?""Lʽ> Vbb \^?#hh#hh;`@`荡@荧F?ཧȥޥֵR?#hh?ȅ^#hh#hh;`@&P@"L` 6Ȁ?$-$LP!$"" ^DH?@`PLP#hh#hhPL V# ȯ@$L''ܵ8?%$,(H'$F?$ R?詥^诠'ܵ8?^L\PLP)$+$'؝,??#hh F?"$" ZХRV?b,b( J?еX??н^ཧDнFȑ̑Э֭?;hhl;`@g`@$""^#hh#h'h)PL$bb *  ;HH`/$⨹ ^1$"\" D $bb?xbb;`@ !>?㿸'D'HDH$# #@$cc@$D$DJ$J"졧P$"譥Pb䭧V$b๧Vܹ\؉\D>?`'D'HDH'L'P$;x8<x| *  ;`;h;p;HHp$#L#H =?$^$ccF$F$,\(P$#$\$\$# P?𱦉XP?#D#@D?蝣?౦ @<8PL#Dƅ"#@XNBPLBZ#4#0;x|x *  ;p;HH?>'DD'HH㿈'LLL'PPP B'DD'HH^3;hLPQDhl2 ;``PLLP2 % h F# %;hhl;`@> 6!`J1@ LP N#PL;hhl ;`@1 !??% D @%`D`@0 1  * Ucd WWWW(LPT#P 2 #%!% < 867`<`8냠?L;`   `W;hlh  ;` `= F* V`P X`XpXX%%40'%4089+%)% p`4`0^/%40-%x^1% d `3%`d``()5%D@7%D@*+  * Va< XXXY;hlh  ;` 2L 2 %% < 8,-`<`8p?P* 2 ;HH`'P&% H'L;hhl* 2 ;`;HHLP* ?;`@`;hhl;`@`" <$ `'%<8%%P/N$L?6L)%' Pܹ<#hh#h@0h !'?;hhl;` !+%`D`@-%D@ހ` /`Vc\ ZZ[[ ?>㿀7 ?!% .606 @6 @ `B B F F FF  FF 0F (FF FF FF FF F@ FFP H @ 0F (FF FF FF FF FF F X F+Ā @ HF @FF 8FF F X FĀ  X  X &@ 7 P&31  ? B& FW"p Ɓ ' 6 Xax @"  8 HH @HH 8HH H H@&́LJʁ?պ/n??7&?ܽ?bl?ЇO?Ɂ>j?ԉ3?ǹ{K[?Ȱn⇜(?ɦl&?ʜ#@2y?ːR`?̄t.n?w W6?jM?[u,?Нŗcb?ы x?x7 WF?bw7?J6¯ ?0QJ? ?A?`Kc?زM9J%?ٌEMk?d#?:\l? N?SC,P?ݬgaO?@ T?e~0?%]ҩ? ?╎Y01?E7???䗏&?8{?Չ?mf9#?xF4?k]1^?зM?W?!TD-?%%?O8d?pC?|Wo?nWO ?$DU?|A?s ҁ?.4?Ng'z?GS?ӏ,[?9?K ?_@0?D?b6?pU:%?Am? myjM?O ?jl3S?PG?kz`?-pA?[TsQ?L?e?x ?g&?D?6?oo3?PRN`?ڽ?s%HW?Ʃ+?AMD L|?`,sj?}c?!:PS?0p?nj~ޱ?{e?C_? @1?^ ?$j!Lvv mq <|d'UlzcA<46WoG};Nh73XNI\*t&3'jÿTʥc ȥ*Iſ>0緍D5#2Xט3EԱ.B92.&xW=#ſP(ib4ے@j"8ؿRw31ib4ے'|ϙly7e^{ʓ<#eQ¿ſ@kT=e'|'cF3^]YI] ~:CA]DD VXXG?x3? 0b?ҊkL?'n*?•R#?0p?RZV?̏ǚ"?Ϲm^>+?g\?1?a^?ѽX ?9?ؚ3B[?#쿘L?D{̏c?܏ǚ"?jġ?_?%R?r%*?T?_^p@?y^?3O?V*?Fr?]>?*-&[ū?@L5-?.B9?*Wm? P? ]PVY?#쿘L?ӗ78?$?٦7O?R@x?Qz?T ?\jȈ?/p4?Sj?},?=a-m?z ?_^p@?;qcÀ?< ?Wh޳?)Pw?vZ9?h? Q.=`?SЈ? $W?(2?%sVO?iU%t@ӿ@Ӟ}@ Q.=`@48.@]?@+1Q@@ND@3@׻@A @d o@t5@9MH@V"@=Ҝ@RI?@.B9@mH5*U@kz@ɓQeJ@{:k@W.|9A@6,@hZ@B{s@)ԅ@[.o@_VV]@tw=@z;(@ }ѳ@ Aob;<7eN<>1E;־񫼍w\<<< wx;.`< :^}+9}iмAW;9?"CƼCjW?#7x͹^<B\Xּʀ) B @6D H FF F0F  @/  ЉD ȉD#%cD%& 8 H'&ਉ ĉ$@Ā|& `6/`'@' /`'@' @@>+@@/+3 "@''偠@    @!&"''+ .+ @@  &&&& l  h pB  &&&&  @ #  L ȅB L zʀ  L JsJ D  ȑH&&&g&  L B ȅ…B[ ؅ B … B S€  @ Ѕ B BBIB  ؅ B ȅ…B‰ D ĉ D &&&7&   @)_!'&,  3  $@- ( 0  譡'' -@@ @ H' -@@ P XƑֱƀ? ` @  B BB' ( F 0 H'  譡'- @ J H H 𭡈'-  P J X HȱֱȀw s    $@ ( @ Ʊֱƀ^?Z ` @M  B BB' ( F @ HȱֱȀ: 6   $@  €' ?$ `  @K  B BB' ( F 8 HȀ V+&b@-` {(L)'  ( D D D D D D D D DD D ā L @ D L)&#Ȩ@ ( D D D D D D D D DD D BX? ؀ ܀  Ɖ Ā́ ؀ ܀  Ɖ Ā Ā L)'  ( D D D D D D D D DD)&#Ȩ ( D D D D D D D D DDD B ? ZX ؀ ܀  Ɖ  ؀ ܀  Ɖ ĉ Ā * \ԁ @H@\ Xҁ@>Zԁ 6 LT TZԩԁ , L ZԥXҩ ZҩԤ&&&&&&&& &&&&&&&&㾈'D'H'aP@   D#`#d@RH@ID! ;hhl#`#d@`d" @| 4;h  hl#`#d **@” ! ?/ %8 &?+( @&𙧈?-&)'#`??`?Ȁ2&(`?'"X&Ȁ2`( ?'P`&!('`+` ` ?Р'`, %(hX?!( p?/` p F B?`- %$L`*`+``,`''?x pP?  V? p Z?  B? p F? L?HP#J`)'!HT#赦 ^x腧 @? F?(L?0 R?8}?@$ еX聧 ^Z? ^?  ^xx衣 NJ V?(\X F?0LTH Z?8VQ?@&#`$ЍDȕ ^PFR? еX聧 ^Z?  ^xЙ J RFT ?( ^x荠D ^@? ?(xL RN ^x BZH?0虢DP𵥉XR @?8HZJ?@ #(` N!(#hh#hh#`#d@ @ (? ` Z#hh#h@h @(0?(`HL#hh" @.`#hh0?0@8V0(  (98Z08@(=<@#"D'&?L?P?T?X?^#hh#hh?F)(ޝL? -(`R#<'H=<!( ز`?@#"ޑF?<8#`#d@`d;hhl#`@`d" 6?#hh  ((0%(`,+'?R54?8څ?^@'&??^76؁܉?p F? L?aHP#-'HT# Z?H BHD ?HP V @RB?HD@#`#d@a`d;hhl#`@X`d" &?HF?JH(`*'Э?`pX?  @?!HD#'aHH# N?PT ZV ?PD J RFT?PLH#`#d@ `d;hhl#`@`d" &?PXC?\P!(`/`''ĕ? pL? R?H V#)'!H Z# B?XH NJ ?X V\ FXH?XXL??^32Ա????8 & &?ƥP?(` V(-,R? x ^@?` F xLH? xT76X?‘?L&&& &&&&& ` * ;HH * ;HH @ 2    2 ?* "    2 ?* 2  " "  2  * "   * @ 2  ;HH( B  #HH  :"5 :2"#㿀?? B!(!# .#/!B@    `f `F '?" 2 B㿀!(!# %2?.-4 BH&6?626?.-!+@/ 4 '?* 6/ .?  B&.?/+1 .+@?  B!)' ?/+1 .+@? ہ B ' ?2 `'DD'HH' ?'LL'PP / 'V'f`  t\T<lTl<l(  ''(a#`` #`@-`?@>2$(b% @S  !*#`!("9 ''(a #``#`@`?@!2(b> @6 %* !$PHL'D-(? R'''(!#``#`HD` *  ;HH! F#PPL ?L(aa *  ;HH?ؐ@?2(bX @ ;* !'`( 'bm'(ᄐ@?2 "(s ''#(aa@?2%* "$)("x ''(a #``#`@`?@2-* "%1("| ''(a #``#`@{`?@2r5* "m&;(b ''(a #``#`@c`?@t2Z(b @  !*P"`(ⓔ ''(a #``#`@F`?@W2=(b @l  !*3#`!(" ''(a #``#`@)`?@:2 (b @O %* !$)(" ''(a #``#`@ `?@2(b @2 -* !%1("Ю ''(a #``#`@`?@2(bӔ @ 5* !&;(b ''(a #``#`@`?@2(b @  !*"`( ''(aa@?2* "##(b ''(a #``#`@`?@2(c @ɐ '* !$+(c ''(a #``#`@`?@2}(c @ /* !s%3(c, ''(a #``#`@i`?@z2`(c0 @ 7* !V&(#C' '(a #``#`@L`?@]2C(cI @r  !*9"(#\ ''(a #``#`@/`?@@2&(cb @U  !*##(cw ''%(?@)2(c{ @> )* !% DH-( ''3(aa2 #?P@LPL?Ё FLP(" L#``#`@`?ȝP N?@25* "&;(c ''("DH2 #?P@LPL?Ё\LP("B#``#`@w`?ȉFD?@2* ""DH(# ''#(aa2 &?P@QLPL?ЁPLP("V#(%(#``#`@`b @й @'(စ?@z2`(c @ +* !V%`/(㷬 ''(a #``#`@L`?@]2C(c @r 3* !9&`HD7(ܴ ''(aa *  ;HH?@=2#* "" ( ''(a #``#`@`?@%2 (c @:  !*# 㿐'L'H+DD* @ #H H2  "  * +DD* @#H H*"0+DD* @ #D D2  "  "* 0+DD* @#D D ّ. ibP `0쀏`2$H* #!+DD*#@ #D D2   #! * H +DD*#@#D D(aa*  ;HH?(aa *  ;HH(" ĉ$?`2*H2'H* #!+DD*#@ #D D2   #! * +DD*#@#D D("#``#`H` *  ;HHq?(!! *  ;HH!!@c?`2'H2$H* #!+DD*#@ #D D2   #! * H +DD*#@#D D(aa*  ;HH;?(!! *  ;HH!!@-?`2$(* #!+DD*#@ #D D2   #! * H +DD*#@#D D(apat*  ;HH?!!!!? 㿀!) @# .)& ? B''Bª D 0'-@'㿀!) @# .)& ? B''Bª D  0H- H;D'-@'㿀!) @# .)&? B6  ?Bª D 0D'-@'㿀!) @# .)&? B6  ?Bª D 0'-@'㿀@@'㿀y@'㿀!) @?) .+ B6  B B6  (㿘*!,` !,  㿘*!  ! `   ` `@  *! *`?2k @  㿘)`|  "`|)`J  )`J  )`J  )`J  )`J  @)`J  )`J  )`J  )`J  )`J  )`J  8    lx ,-8 #3p h* )=T> I,J8rTDlPb\{|hzt0h8@~yy`ww1<Ж(L@ O]j#TJ AHw*QqF1[($C+dK/bNPoW>^z6 _&f?;WA 0qLaKmG|Ls y}dSb E@xl{Ov7_!XBMn^DIPU"%`'\)R,|-c.V23r458Z9g:<l=Y?iBCDEFhGeHIfJMkNuQRpSTUVXtYZ[\]~`ac}eghijkmnoprstuvwxyz{~T  p b%,~2r8;9EKyQ2\^ocRi"v$2+/d-,F% % 2++/+  $ 74,!=6jƈ="G1LVy0`a3lwk>%t>"6LM>,(2CHz9`#8G26#t#D!I"*2 :.@IypYZ9<an%{@7f$D#, i  :< d$+C PGt"lh(<-t7Bp@D`MR?L^G n(`x>El` L^Bp8p!t(|.Jt2E4@wBKX^ iZFq{ELkz8=D v߈f{M?ԐC.l9DslMXchGp{EX8E&T}TXj \Ht"M-{8 > C$NV$_Agm*zN e| `HDI"h!l< ϐ % H-|X5>JDR]@Z G_{ d{0ipp{(uwz%ednfEpZ[7DdIA(xUT x$z$I+/^p9=axGgToa=gDpNv{8~}|0T [J4   @ 0 < t ! 3 q B ( Qy4 d wx |8  0  L "   t  "  ` _etext_edata_endstartstart_float__exit_main_environ__DYNAMIC_exit_free_init_random.rem_hdef_load_kernel_local_error_start_profiler_make_hentry_init_engine_mem_init_common_mem_sprintf_overflow_by_g_end_profiler_make_char_array_make_byte_array_atomtable_warnmes_startup_mes_new_func_hinit_quietmes_create_engine_is_engine_get_cmd_line_options_calloc_restart_orig_link_halt_quiet_bp_version_init_orig_wam_getopt_srand_interp_times.div_make_symtable_start_wam_destroy_engine_bp_halt_bp_exit_malloc_cputime_optind_optarg__iob_fprintf_init_instr_len_run_bp_c_interface_can_recover_sscanf_signal_max_init_bp_fatal_error_make_atomtable_newatom_atomstamp_lextable_sfull_atombak_newlex_strlen_strcmp_fout_interp_from_input_float_hbak_hget_set_dcg_tell_opcount_load_engine_heap_or_bp_halt_suspend_engine_float_op_default_start_point_new_builtin_apply_shell_1_lval_unix_cd_add_instr_strip_cont0_see_tell_at_bad_instr_term_append_rand_copy_term_unix_access_unix_getenv_hlist_sout_bp_load_engine0_exec_link_write_float.umul_float_fun_answer_see_tell_ask_engine_list2term_fflush_change_arg_name2list_unwind_trail_findall_lift_heap_findall_load_heap_hcount_sread__flsbuf__filbuf_float_fun2_unify_def_bp_prolog_call_seen_told_term2list_compare_unix_kill_unix_argv_if0_multitask_engines_functor_call_engine_stats0_det_append0_findall_store_heap_setarg_symcat_dcg_connect_older_file_op0_seeing_telling_at_wam_bp_make_op_hset_user_bp_fopen_init_code_input_fun_instr_len_insert_op_fclose_isdigit_ungetc_kill_older_file0_chdir_copy_from_engine_fseek_ftell_stat_access_float_compare_getenv_stat_used_stat_left_bp_cons_bp_heap_top_system_strcpy_hfull_op_class_valid_op_htable_hstamp_hindex__ctype__match_term_sread0_swrite_pow_sin_tan_floor_cos_exp_double_to_ints_make_float_ints_to_double_atof_asin_atan_acos_log___main_init_c_user_bp_size_wam_bp_size_SVID_libm_err_atan2_nint_rint_ilogb_scalbn.mul_fp_pi__tbl_atan_hi__tbl_atan_lo__tbl_log_hi__tbl_log_lo_fabs_signbit_aint_sincos_issubnormal_copysign_isnormal_isinf_isnan_finite_nextafter_iszero_matherr_fp_direction_errno_write_fp_accrued_exceptions_anint_irint_ceil_on_exit__exit_dummy_decl___CTOR_LIST_____DTOR_LIST_____do_global_ctors___do_global_dtors__exit_dummy_ref_isxdigit_toascii__mb_cur_max_isalpha_isspace_isgraph_isascii_iscntrl_isalnum_islower_isupper_isprint_ispunct_opterr/usr/local/gnu/lib/gcc-lib/sparc-sun-sunos4.1.3/2.6.2:/usr/local/gnu/lib,.cdl $ \`? `㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠 㿠 㿠 㿠 㿠 㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠㿠 㿠!㿠"㿠#㿠$㿠%@ Axp(CCC CCدCаCBCCدCC CBC CCدCCBCCدCC CBC CCدCC CBC CCدCC CBC CCدCC CBC CCدCC CBC CCدCCCCJCx CCدCpCCCJCx CCدChCCCJCx CCدC`CCCJCx CCدCXCCCJCx CCدCPCCCJCx CCدCHCJCx CCدC@CJCx CCدC8CCJC0 CCدC(CCCJ C0 CCدC CCCJ C0 CCدCCCCJ C0 CCدCCCCJ C0 CCدBCCCJ C0 CCدBCCCJC0 CCدBCCCJCx CCدBذCCCJCx CCدBаCCCJCx CCدBȰCCCJCx CCدBCCCJCx CCدBCCCJCx CCدBCCCJCx CCدBCCCJCx CCدBCCCCJC0 CCدBCCCCJC0 CCدBCCCCJC0 CCدBxCCCJC0 CCدBpCCCCJC0 CCدBhCCCJCx CCدB`CCCJCx CCدBXCCCJCx CCدBHCJCx CCدB8CCJ Cx CCدB(CCCCJ!Cx CCدBCJ"Cx CCدBCCCCCJ#C0 CCدACCCJ$C0 CCدACCCJ%Cx CCدAذCCCJ&Cx CCدAȰCCCJ'Cx CCدACCCJ(C0 CCدACCJ)Cx CCدACCCJ*C0 CCدACCJ+C0 CCدApCCJ,Cx CCدA`CCCJ-C0 CCدAPCCCJ.Cx CCدAHCCCCJ/C0 CCدA8CCCJ0Cx CCدA(CCCCJ1Cx CCدACCCJ2Cx CCدACCCCJ3Cx CCد@CCJ4C0 CCد@CCJ5Cx CCد@CCJ6C0 CCد@ذCJ7Cx CCد@ȰCCJ8C0 CCد@CJ9Cx CCد@CCCJ:Cx CCد@CCCJ;C0 CCد@CCCCJ<C0 CCد@pCCCJ=Cx CCد@`CCCJ>C0 CCد@PCCJ?Cx CCد@@CCJ@Cx CCد@8CCJAC0 CCد@(CCCCJBCx CCد@ CCCJCC0 CCد@CCCCJDCx CCد@CCCJECx CCد@CCCJFC0 CCد?CJGCx CCد?CCJHCx CCد?ذCCJICx CCد?ȰCCCJJC0 CCد?CCJKC0 CCد?CCCJLC0 CCد?CJMCx CCد?CCCCJNCx CCد?CCJOC0 CCد?xCCCCJPC0 CCد?hCCJQCx CCد?PCCJRC0 CCد?@CCJSC0 CCد?0CCCJTCx CCد?(CCJUC0 CCدCذCȠCCد? CȠCCد?CȠCCد?CȠCCد>CȠCCد>CȠCCد>ذCȠCCد>аCȠCCد>ȰCȠCCد>CȠ CCد>CȠ CCد>CȠ CCد>CȠ CCد>CȠ CCر>>p>`>P>@>0> >>===б======p=`=P=@=0= ==<<<б<<<<<>=C:80 CCد:>>=C:80 CCد:>>=C:80 CCد:>>=C:80 CCد:>>=C:80 CCد:>>=C:80 CCد:>>=C:80 CCد:>>C:80 CCد:>>C:80 CCد:>>=C:x80 CCد8(888 CCد8(888 CCد8(887 CCد8(777 CCد777 CCد777=C CCد777C CCد777C CCد777=C CCد777=C CCد777=C CCد777=C CCد777=C CCد777 CCد777C CCد77x7x=C CCد77p7p=C CCد77`7` CCد77P7PC CCد77@7@C CCد77070C CCد77 7 =C CCد777=C CCد777=C CCد777=C CCد777=C CCد766 CCد766C CCد766=C CCد766=C CCد766=C CCد766=C CCد766=C CCد766=C CCد766=C CCد766=C CCد766=C CCد766=C CCد766=C CCد76x6x=C CCد76h6h=C CCد76X6X=C CCد76H6H=C CCد76868=C CCد76(6(C CCد766=C CCد766=C CCد755=C CCد755=C CCد755=C CCد755=C CCد755=C CCد777=C CCد755=C CCد755=C CCد755=C CCد755=C CCد755C CCد755C CCد755C CCد755C CCد75x5xC CCد75h5hC CCد75`5`=C CCد75P5P=C CCد75@5@=C CCد75858C CCد75050C CCد75(5(=C CCد75 5 =C CCد755=C CCد755=C CCد755=C CCد755=C CCد744=C CCد744=C CCد744=C CCد744=C CCد744=C CCد744=C CCد744=C CCد744=C CCد744=C CCد7CC=C CCد7CpCp=C CCد7BB=C CCد744=C CCد744=C CCد744=C CCد744=C CCد744=C CCد744=C CCد74x4x=C CCد744=C CCد744=C CCد744=C CCد744C CCد744=C CCد74h4h=C CCد74h4h=C CCد74`4`=C CCد7BBC CCد74X4X=C CCد74P4P=C CCد74H4H=C CCد74@4@=C CCد74P4P=C CCد74848=C CCد74040=C CCد74(4(=C CCد74 4 =C CCد744=C CCد744=C CCد7CC=C CCد755=C CCد77`7`=C CCد733=C CCد733=C CCد733C CCد733C CCد733C CCد733C CCد733=C CCد733C CCد733C CCد733C CCد733C CCد733C CCد733C CCد733C CCد73x3xC CCد73p3pC CCد73`3`C CCد73P3P=C CCد73H3HC CCد73@3@=C CCد73838=C CCد73030C CCد73(3(C CCد733C CCد733 CCد733C CCد733=C CCد733=C CCد733C CCد722C CCد722C CCد722=C CCد722=C CCد722=C CCد722C CCد722C CCد722 CCد722C CCد722C CCد722=C CCد722=C CCد722=C CCد722=C CCد72x2x=C CCد72p2p=C CCد72`2`=C CCد72X2XC CCد72H2H=C CCد72@2@=C CCد72020=C CCد72(2(=C CCد722C CCد722 CCد722C CCد722 CCد711C CCد711C CCد711C CCد711 CCد711C CCد711=C CCد711=C CCد711=C CCد71x1x=C CCد71h1hC CCد71X1X=C CCد71P1PC CCد71H1HC CCد71@1@C CCد71(1(C CCد71 1 C CCد711C CCد711C CCد700C CCد700C CCد700C CCد700C CCد700C CCد700C CCد700 CCد700C CCد700C CCد700C CCد700C CCد700C CCد70x0xC CCد70p0p CCد70h0hC CCد70`0`C CCد70X0X CCد70P0PC CCد70@0@C CCد70808C CCد70(0(C CCد700C CCد7//C CCد7//=C CCد7//=C CCد7//=C CCد7//C CCد7//=C CCد7// CCد7//=C CCد7//=C CCد7::=C CCد777C CCد7//=C CCد7/x/x=C CCد7/h/hC CCد7/`/`=C CCد7/X/XC CCد7/`/` CCد7/P/P CCد7/@/@ CCد7/8/8 CCد7/0/0 CCد7/(/( CCد7/ / CCد7// CCد7//C CCد7.. CCد7.. CCد7..C CCد7..=C CCد7.. CCد7..C CCد7..=C CCد7..=C CCد7..=C CCد7..=C CCد7.. CCد7..C CCد7..=C CCد7.. CCد7.. CCد7.. CCد7..C CCد7..=C CCد7.. CCد7.. CCد7.p.p=C CCد7.h.hC CCد7.X.XC CCد7.P.PC CCد7.H.H=C CCد7.8.8=C CCد7.(.(=C CCد7..=C CCد78(8(=C CCد7..=C CCد7..C CCد7--=C CCد7--C CCد7--=C CCد7--C CCد7--C CCد7--C CCد7--=C CCد7--=C CCد7--C CCد7--C CCد7-x-x=C CCد7-h-hC CCد7-X-XC CCد7-P-PC CCد7-H-HC CCد7-@-@C CCد7-0-0 CCد7-(-( CCد7AA=C CCد7- - =C CCد7- - =C CCد7--=C CCد7--=C CCد7,,=C CCد7,,=C CCد7,,C CCد7,,=C CCد7,,C CCد7,,=C CCد7?(?( CCد7,,=C CCد,,,C0 CCد,,,Cx CCد,,,: CCد,,,: CCد,,,: CCد,,x,x: CCد,,p,p: CCد,,h,h: CCد,,`,`: CCد20C C C C ,X C C,@2(C C C C ,8 C C,@,@ CJMC0C:J C0CxJ)C0 , CCCCC0hCCC , C0h2CJMC0C:J C0C02C CCد, ,X,X C ,BC CBC ,BC CBCBCCد, ,8,8 1PC1P,C1CC , C1P5C7CC CCد5C7CC5-C C C Cx C--C C7CC CCد-C7CCCCxJC0-,C--C C CC? CC--C ? CC C-- C 7CC -CCC 7xC4 CC3 7CC C C  C7x- C CBC CBCC 7C+ C C79+ >CC 5C4 C C >C CC3 7CC C>Я-C C 7C7C+ + C20-C C 4-CCC + -4-C 5CC+CCC C--C CCد-C CC7CCC + -4-,, CCد-ذC C C CBCC - C C4-ذC 24CCC374C>C3C4CCPCC03CP-C0 C C2-аC C C -C6ȯ+C CCC C++C C CCد+C CCCC ,-+C CCCC-+C -CCCC C C-+Ȱ CPCPCC -C4-CCCCC C>د+ȰC C -C +x2(-77CCC -CC C--C+ȯ-C C C+`+`C C CC7CCC - C C4+`C C/h-hC C C -x C C04-xC BXCCCC C C+H+HC-xCJC0CCCxJCx-xCCJC0 CCد+HC CCx-xCCJC0 CCد/C C C CBCC C+8/ C 74C4C4 CC3Bh+0CC3+8CCC3 74 CC3 CC C C0 +( C5/xCCCCJ/C0 CCد+8C +CCCCC C C C++CCCJCxCCJCxCC0J C0 CCد+++* CCد+*** CCد+*** CCد+*** CCد+*** CCد+*** CCد+*** CCد2CC*JC0 CCد2ȰC*CJC0 CBC CCد-XC3-HC * C-HCJCx CCد-P CPCPCC 64CCC4-HC*C3/hC C>د-PC C C *p C20-@CPCPCCC 4-HCC C>د*PC 7C CCC C C7@*PC *H>C *8C>CC C7* C 7C C7@* C 7CC>CC C C C*8/hC CBCC*P/hC* 7PC C CBCC 7C* 7C* *77PC CBC)*C C /)*)6)** C ) * )/x)** C ) * )/x7 C))C)7C CpCCCJ5Cx CCد70C 7@CC77@C C 3C )C20)`C C)H-0CCد-(CBCCد)HC C CBCC? )HC C C? 7C C CCد7C CC? CC C? 777CC C CC C C77C C? 7C C C? 7C C? 7C C C? 7C CC? CC C? 7C C C? 7C ? CC C? 6C CCCC C? 6C CCد6C C CCBCCد6C CCد?(CC0JUC0Cد6CCد6C66а CCCJ$C0 >CC C C? 6аC C C>6ȰC C 7CC 7 C06Я6ȰC C +6ȯ6C C C66C C 7CC 7 C06Я6C C C66C C 7CC 7 C06Я6C 74CC4CC3? C374CC3CC C C? 6C 74CC4CC3? C3CC C C? 6xC 74CCCC3? C C C? 6XCCCxJC0 C C)@C 6(C66HC C C)@C 6(C668C C C)@C 6(C6x6(CCxCJC0CC0J C0CCxJC0CxCCJC0 CCد6hC 6CC C C C C6ȯ6C 6HCC C C C C6ȯ6C 68CC C C C C6ȯ6 C 64C4C C )( C CCC3CpC C3? C  C C)) C)CC 2`CC+CC + C2`)(+++ CCد)(77CCCpCC C7CC C)(.hC C 1C 7C+ C6ȯ.XC C 1hC 7C+ C6ȯ5C ? C 5CCC C6ȯ5C CCCJ C0 CCد5CCCJ C0CCxJC055C CBCCCCJCx CCد5 C 5CCxCBCCCC C C C C>د5))C C CCCCxJCxCد5C CBCC C C CCد577CCC 5CCCC C C55C (C0CCCCC C C C>د(C C CC C CCد( CCCxJC0CCJC0 (CCCCCC C  C55C C CC0CCCC C055C CCدAذCC0CJ&Cx CCد(аCCxCJ&Cx CCد/C:J+C0Cد(CC0CJ*C0 CCد/C 0pC C(/CC0CJ.Cx CCد/CCxCJ.Cx CCد3++ CCCد377CCC 7CC >CC C>Я3C CBC>ȯ7аC+ C7ȯ7C7ȯ7ȰC (C?C C/ȯ077+C7CC7CC7C+7(C7(C7(C7(C7(xC7(pC7(hC79h+ 79p79p79h7(h7(7(`+ (H4CCC37(7(7(x7(p7(h+ C(H/77CC7CC7++79pC7(C7(C7(x+79pC7(C7(@+ CCد/77C+7C+79pC7(C7(@+ 79p79p79h7(@7(87(07(7((7(7(+ C(H(H C C C79h+ ?( C 74 C 5 CC C3 >C C 7 C+ 5CCC5 CCCC C  C  C7/ذ C C 5 CC >C C 5 C C C 5C C C >C CC C C57`C7CC7C+ >CCCC C,7`C CCC7CCCCC C7`7`CCد5C CBCCBC CCد5C CBC CCد5C CBC C C(=C CCد5xC CBCC CCد5xC55hC CBC CC C67xC CBCCCJ Cx CCد7xCC7+J!Cx CCد(CC7+J!Cx CCد'CC7CJ!Cx CCد5аC Cp>CCCCJ%Cx CCد'аC CpCCCCJ%Cx CCد5`C C +''++ C CCد' 77CC Cp>CCC2CJ%Cx''C C C'' C ACC4 C 74 C4 C4 CC3 B CC73 7CC3 7xC7C 7 C 7C+3 Cp CC C : C>د5P C C 7CC 7CC C  C C'5@ C C 7CC 7CC C  C C'7аC7CC CCد5ȰC Cp+CCCJ%Cx CCد5C CpCCC2CJ%Cx C''++ C CCد'77CC7CC'5C C C CBCC C0 C'x5C C C C0 C'`'x++ C CCد'x77CCCCxJC0'x'`++ C CCCد'`77CCCCJ C0CCxJC0'`58C CCCC'PCC C5 58C C C '( C20'PC C C89CC C Cx5'PC CCد50 C C@C74C4CCC7CCC3C C93C(CC0 C65(C CC7CCC C C C5 5(C 5(CC ' C2(5 C CBCC C C CCد5 C CC7CCC C55 C C CBCC ' C205 C CCBCxCCB:CC5 CC5 CC7xC4 C ? CCCC3 7 C7C7C7C+  C :>د5 C BCxCC5 CC7xC4C ? CCCC37C7C7C+ C Cx>د5CCCJCx CCدCC C CCدCpCC0CJCx CCدBCC0CJCx CCد5C 7 CCCJCx CCد5CCCJC0 C&5C 4 CCCJCx CCد4C 4 CCCJCx CCد4CCCJC0 C&4CCCJC0 C&د4C 5 CCC(CCC C5 4ذC 5 CCC CCC C5 4аC 5 CCCCCC C5 4ȰC 5 CCCCCC C5 4C 5 CCBCCC C5 4C 5 CCBCCC C5 &44 CCد&77 CCد&ذ44 CCد&ذ77 CCد&44 CCد&44 CCد4C BCCCC C C,4C BpCCCC C C,4CCCJC0 C CAد4CCCJC0 CCد4 C 4xCCCBCCCC C C C,4CCCJC0C44C44C C C C C C C44C C C C C C C44C C C C C C C44C C C C C44C C C C C C C4&C C CCC4&C C CCد,C CC7CCC C(Я,C (CCCC7CCC C&,C C CP,:&,C ?C?4xCCCCJC0C CCد4xCCCCJC0 CCد&CCCCJC0 CCد&CCCCJC0 CCد&pCCCJCx CCد&`C C C C C C C4x&PCCCJC0 CCدBCJCx CCد4hC C C C Cx C C4h4h CJ9C0CJ8C0CJ6C0 @+@CC C C? 4`BBCC CCCCJCxCد4`CCCJCx CCد&C:CxJ'C0 >&8CC CAد&8++ CCد&8 77CC7CC7CC7CC7C C > CCC&(C CC&8 CC C>د&(C BpCCCCC7CCC C C(Я&(C CCC C C&& C 7>C7C+ 204C4CC3&C3&C ,` C7`% C7CC7CCCC%CC577CC5CC > CCAC CCCC%ȯ%C7CCCC%CC CCد%Ȱ77CC5% CCC C%%Ȱ77CC5C C 7C+ C C7%+ 7CC >CCCCCCC C>Я%ȰC CC0 CCد% 77CC7CCCC%CC5Cp C CCC0CJCxCد% 77CC7CCCC%CC5C C C CCد%C (C0C0C0CCJCx CCد4XC4XCCJ1Cx CCد4PC4PCCJ1Cx CCد4HC4XC (C0%xC0CJ1Cx CCد4@C4@CJ2Cx CCد4PC4PCJ2Cx CCد48C48CJ2Cx CCد40C40CJ2Cx CCد4(C4(CJ2Cx CCد4C%pCJ2Cx CCد4 C%hCJ2Cx CCد4C,CJ2Cx CCدCCCCJ2Cx CCد5C (C0C0C0CCJCx CCد3ذC C 7C7>C+ ,7`%PC CBCC CCد%PC CCC C2%PC2ȯ3C CBCC%03 C >CCC%0CCC C C C%%0C CC74C4CC37C337C% C2%0C CC74C4CC37C237C% C2ȯ%0C$ CCC/h%0C$ CBC CCد3C CBCC >CC>CC C C%P3C >CCCC C%3CPCPCC CBC CBCC %PCCCC C>د3CPCPCC C C%$ȰCPCP*C0 C C CBCCد$ȰC C CCP*C0Cد$Ȱ CPCP$C0$ CCPCCCPCCCC0J C0CCxJCxCد% CC0C0J'C0 74CC3CC C $C CC4CC3CPCC C C  C23аC3ȯ3Ȱ C 3CC 2CC5CC1PCCCC C6ȯ3ȰC CCد3Ȱ CCpCCCPCC 3 CC> CCC>CC$CCC C>Я$C C CCCد$C C CCC C C$$ C C $C4CCC CCC37>CC C$$C 5CCCC C C5$C$xJIC0CJKC0Cد$` C C CJGC0CCxJC0 74C?CC35CCxC6ȯ3$X$XC CJGCxCد3$P$PC$`3$H$HCC C ?CC 2($(C C73$ $ CC CCCJJC0Cد3$$C CCJKC0Cد3$$ C$3$$CC CCCJLC0Cد#C #CC CCC C C C#د#C C C # C2(#ذ ##CC #CCCC # CCC 7C4 CC3 #CC  C## ##CCC C#C CC #C CCCC  C##CC C C C#p# 77CCC #CCCCC C C  C#p#CC C C C#p#pCC CCCCJ0Cx CCد#C CBCC C C- CCC CCد# 77CCC #CC CC # CCCC  C  C C## 77CC7CCC #CCCCC C  C## 77CC7CCC #`CCCCC  C#`##X#XC C C CCCد#777 C CCCد#++C C CCCد# 77CCC #CC CC # CCCC  C  C C#H#C#p#HC,CCC CCد#` C #0CCCCCC C C##0 C 7 CCCJCxC 7CC C C C C##0C C C CCد#CC C CCCد#C# # CC C CCCد# 77CC7CCC# # C7CC CCد,77CC C C CCد- C C +- - C 7CC7CC ? CC C C#)##CC C CC C C#)##CCC C C#CCC 2("C)H)C C CCد"а"" CCد"11C CC@CCد"11C CC8CCد"11C CCد"0x0xC CAC0CCد"0`0`C CACxCCد"0@0@C CApC0CCد"0(0(C CApCxCCد"00C CCCCد0C CBC CCد1CJCx CCد1аCCJC0 CCد1ȰCBCCد0CC0CJ*C0C CCد0C C C " C200xCC0J)Cx CCد0`CCxJ)Cx CCد0hCCxCJ*C0C CCد0hC C C " C200pCC0J+C0Cد0XCCxJ+C0Cد0PCC0CJ-C0C CCد0PC C C "x C2008CCxCJ-C0C CCد08C C C "` C200@CC0J,Cx CCد0(CCxJ,Cx CCد/Ȱ C CC0C/C"HCCCCC C5/Ȱ "@"@C CC/CC"HCCCCC C5/ȰC C "0 C20"H C C C C C CC0J)C0 C  C  C  C"" C CC 0CC C C C C""C 6 C4 C C 6 C4 C C2(4C4CC3!C3C4C C3C CC3 74 C > C C3 5 CC3 74 C > C C3 5 CC C0" C (C0pC C/د1hC 1CCCC C1x1xC !CCC C!ȯ1 77CC C CJ MC0 CCxJ C0 7CC CC C C!1C CCد!##C CCCد!C #C>C ApC0 C !C 04 C CCC3 74 C 74 C 71 74 C 74 C74C7113C!3 1HC3 1H!3 1H !` C3 1HC C C.p!++ CCد!77CCCCCC!1C C C!ȯ1C11C !PCCC C C!ȯ!P+++ CCد!P77CCCCCC7CC7CC!P!ذ C C C 54CC3CC>C)@C0 C C6ȯ1HC!81PC! 1@C!0ذCC0J)C0 ? C0CC , C00аCCxJ)C0 ? C/0hCC , C0h0C 1PC C0Я0C 74C131PC C0Я0C CC C0Я0C 74C13CC C0Я0C C 10Я0ȰC C8C C0Я1 C 1(C C0Я!ȰC 1XCC CCCC7CCC C6 C C  CC ) C Я C C  ++ CCCد C C C 7 7 7 7 + C  pC7CCC CCد pC C 7C777 7 + C  `C C C CCC * * C+ `C C CpCCxCC * * C+ HC C C CCC * * C+ HC C CpCCxCC * * C+ 8 C C C CC CpCCxCC * * C C+ 8 C C C CC CpCCxCC * + C C+ 8 C C C CpCCxCC * * C C+ ( C  8CCCCC C C  C H а++ C 7 7 + +  а 77CC C C C C C  C  C  C  CCCC7 CC   C C C CC  C4 CCCCC3 C7C C   C  C Я  CCCC CC C  55Cp7CCCC%C CC0CJC0C  55Cp7C C5C %CC CC  CCCCCC5 55C7 CC   C C C 7x C4CCC C CCCCC37C7C C   C  C Я  55C CC C C CCCCCC  C  C C `  55C CC C  CCC%CC CC C 7CC +   CC  C C C CC  C4 CCCCC3 7C C   C C Я     CC  p C C CC  C CCCCC )  C  C C Я   CC  p C C CC  C CCCCC )  C  C C Я 7CC #X   CC  p C C CC  C4 CCCCC3 #XC )  C C Я  C CC C  C C 7C 7x 7p 7h 7 + C  777C7CCC CC   CCCC  C  C Я 77C+ C CCCد C C C 7`7 7X7H+ C  777C7CCC CC  CCCC  C  C Я 77@C CC CC pCCC  C C Я77C+ C CCCدC C C 787 7X70+ C Ȱ C CCCJ C0C 7( 7  7C 7X 7  7 7 7C+  C C Ȱ C  CC  CCCCCCC C  CЯȰC 7x C4 C CC  CC CCCCC3 7C 7 C+ C C  C  C  C Яа 77CC7 C5C C7CC7 C5CCCدа 77CC5C C7CC*CCCC 8а77CC5C C7CC*CCC HаC C CCد77CC**CC=C CCCJ C0Cد**CCC CCCJ C0Cد CCد CCد CCد@@ CCJ C0Cد77 CCJ C0Cد++ CCد77C C5C CC 74 C4 CC3 4 CC0CCCC3 74 C C3 *C C C C3 4 CC0CCCC3 74 C C3 *CCC  C  C  C ( 77CC5C CC 4 CC0CCCCC3 74 CC3 *CCCC  C 8 77CC5C CC 4 CC0CCCCC3 74 CC3 *CCC  C H 777CCJ C0C CC  C4 CCCCC3 7CC   C C Я 77@CCJ C0C CC  C4 CCCCC3 7CC   C C Я 77CC CC  4 C4 CC3 7C 7 7 +3 7CCC C C CCد55C5 CCدCC=C CCدCCCC CCدC CCد CCد   CCد CCد CCد77CC*C C C CC CJ C0C CJ C0C 7x C4CC C CCCCC37C7C7C+  C C  C Я77C C*C C CC CJ C0C CJ C0C 7C7C+  C C C CCCCCC7x 777CCJ C0CJ C0C CC  C4 CCCCC3 7CC   C  C Я 77@CCJ C0CJ C0C CC  C4 CCCCC3 7CC   C  C Я C C C CCد CC0J)C0C0J,C0 hCCC0CCC , C0h CBC 1 CPC5CC4@5CCCC ( C1 hC CCد CC0J)C0 C0CCC , C0C@5JC0 CpCCCPCCCCC C5P77CC CCCPCC 9 C0ȯP++ C0PCC0 CCPCC 1 P 77CC 09CpCCxCCCPCCC CP++ C055C CC@CC C555CC1 CCCCC1 CCC%CCC1  CC 7C+ C C79+ 7CC 7C+ >CC1 CC C5ЯC1 1XC 5C+CCC7CC7CCC 9 C Cȯ1X77C+5+ CCدȰ CCBCCدȰCC9J C0CJC0ȯȰ99C C@CCCCBCC@CCCCC6Ȱ9h9hCJC0Ȱ997CC57CJC0hȰ997CCJC0ȯȰ997CCJC0ȯȰ9977CCJC0ȯȰ997CC57CJC0ȯȰ``7CCJC0ȯȰXX7CCJC0ȯȰPP7CCJC0ȯȰHH7@CCJC0ȯȰ@@7CCJC0ȯȰ9p9pCJC0(Ȱ997CCCC CCCC 9 CȰ 997CC5CC >CChCCCC 9 CȰC7CCCCC CC C C C 74 C4 CCC CCCC3 74 C7CC3 7 C 7+3 74 C 74 CCCCC3 >C C3 7 C 7C>C  CȰ C CCCCC C CCC % CCCCC CȰ C7CC5C CC C C C >C C h CCCC CȰ C7CC5CJC0 >C4C hCCCC37CC C  Ch997 CCJC0ȯhCȯ C C C C CJC0 C C  C 0C1 0C0CCCC x1  C C C CCJC0 C C`C7CC C C C`C C C7CCC C C C`C+ C CCدH77C C7 CCCدHC C CCد99CJC0 CCCC C C C7CC5C >C4C CC C H CCC379hC CC 0C (1 99JC0C9hJC0C999 CCCدCJC0 C7CC CCC@CCCCCC+ C CCد C7CC C@CCCCCC+ C CCد(C 0CC 1 (C+C9J C0C CCد( C7CC5C >C4C CCCC379pC CȰ C C CC9`JC0J C0 7 C+ C C 79p+ 7C4 CC3 7 C 7CC  C C  CȯȰ  CCBCCدȰ 99C0 C79C7C+CJCxCJC0JCxCدȰ 99 CCC C0 CȰ C C C C C :  C  C  CC C C C C C CJC0CJC0 C  C  C  C  C C7C CC9`J C0C9J C0CCCJ C0 C9`J C0 CCJC0 C C C  C C C C C+ CCد 77CCCCCC C C CC77CCC 7C+ C C7+C C C)@Cx CCدC CBCC C C)@C CCد)@)@Cx CCدCC((J C0CJ C0 CCدCC8J C0CJ C0 CCدCC9`J C0C9J C0 CCد CCدChCPCC8J C0CJ C0 CCد CCدCPCC((J C0CJ C0 CCدChCC9`J C0C9J C0 CCدPCCHJ C0C@J C0 CCدPCC8J C0C0J C0 CCدhCC(J C0C J C0 CCدhCCJ C0CJ C0 CCد:: CCد:x:x CCد CCد99 CCد99 CCد99 CCد99 CCد99 CCد9x9x CCد9p9p CCد9h9h CCد99 CCد99 CCد88 CCد88 CCد88 CCد88 CCد CCد CCد CCد CCد1(C C 1 !8C C 1H! C C 1P!C C 1@C CC )  CC CCد CCCJ C0CCJC0 CCدC C CCد CCCدC C CC9JC0Cد CC9JC0CدC CCد++ CCد77CCCJC0++ CCJC0Cد77CC CCCJC0CJC0 C77CCCJC0hC CBC CCد1C1P C CBCC hCC C ))C C C CCX C CBC 74 C CP3 C(CC0 C CC CCC C7C1H CCC1 C / C>CC C  CC CC C89 74 C4 C CC C89C3 74 C @CC>C3 7C1@3 CC C5 C CC @CCCCC C5 C1 C @C1 C>C 0C0CC91 C C>د #X#XCCPJC0 C8@C )  C C 77CCC`J C0  CCC   C  C 77CCC CCC>C C89 CCC C9CCC  C 9 C  C C 74C4 C CC @CC374C CP3C(CC03 C5 C  C CCCCCCC  C  C C>دCxCx 74 C Cp CCx C3 / C*C 74 C7 C C3 / C*C CC CC9CC@CCCCBCxCCCC CCC  CC9CCC  C  C7CxCx 74 C Cp CCx C3 / C*C 74 C7 C C3 / C*C CC CC9CCBCxCCCC CCC @CCCC  CC9CCC  C  C7:: 74 C 74 C 7 C C3 Cp CCx C3 / C+C 74C74C74C7 C C3Cp CCx C3/ C*C374C74C7 C C3Cp CCx C3/ C*C CC CC9CCBCxCCCC CCC C CCCC B:C C CC CCC  CC9CCC  C C7 C 0C0CC9CC C C C C@ CCJ C0C C C C C@ C C9JC0 C89C  C@X C CBCCC0J C0C C`C:C CC8C C8C74C4 C CCC3C(C:3 74 CCC3 CXC:C C  CXC CC@C1PCCC5X C 0C0Cx4C9CC3)C ) C C@@77 CC9JC0Cد@77 CC9JC0Cد@++ CC`JC0XJC0Cد@#X#X CCPJC0@JC0Cد@771@ CC 7979p79+@C 74C4 C CCC374C 74 C  C3 CC3 CC3 74 C74C  C37C3 74 C74C 74 C 74 C  C93 C893 CC37C3 7C1@  C C>Я77CC CCCC77CCP CCа++ CCدа77CC CC C++ CCد77CC CC C0 C C CC9JC0Cد0 CCJC0CCxJC0CCJC0 0CCC9CC C   C  C C CBCCHJC0 C8XCh ++ CCXJC0Cد 77CCC9J C0  CCC   C CHJC0 C8XC   C0C 1PCCCC C0 C50C CCد0C11C CC C1C CCد##CCBC CC0::C C0 C5##CC CCC !CCC0::CCC C0 C5C #CC C 77CCC CC CCxCCC Cx C CC: CC 7C+ C C79p+CJC0BCCد 77CCC p4 CC0:C XC7C3 7CC C C  Cp 77CCC CC C:CCC : C C !CXC7C C Cpp77C0 CC PBCCدp77Cx CC HBCCدpCC0 C CC PBCBC58pCCx C CC 7C+ C C79+CJC0BC58pC: CC @BCCدpC: CC 8BCCدpC: C CC 0BCBC58pC C C(CCC58CC5X:: CC CBCBCCدXC CCدp 77CCC CC pCCxCCC Cx Cpp CC:JC0C:JC0 C 58C CC Cx C C:: CC CBCCدC CCد2CC )H227CC  C)H2C CCC C6C /04CCCC31CC C0C 7 CCJCxC CCدC C C CC C CxC hC C7@XCPHJCx CCدhCCد++ C CC0*Cx77CC C 0CCC74C4CCC37C*374C0*3CCxC C *0C C 070CCC C5C CCد077CC 0704CC31@C C0C CC04CCC0C31C C*** 0C 7 C0::* CCCد99* CC 1:0د C 04C04CCCC31C31:  C03C.P.PC C C CBCC  C20.P C 74C4CC374C74C .PC3CC37C*37C*? ? CC CBC.P66C CCCC C.P66C CCCد22CCC CC .PC22x2xCCC CC .PC2x66CCC CC .PC6ȯC? xC CC-XCC C-Hx C CC2CCCCC74C4CC374C 74 C .PC3 CC37C*37C* C2ȯx C CC3@CCCCC74C4CC374C 74 C .PC3 CC37C*37C* C2xC CBCCxC CChCCxCC ? C>دxCXXC 2(4C4CC37@CPCC37&C>دh C 7>C7CC 7xCC 5CCC7xCCC C C7x 77CC C C CC C C  C0 77CC C C CC C C  C 77C* CCدCC* Cx077 C* CCCد0C CCCC C.P 77CC C C C CC C  C  C  C C C CC CCCC C.PC C C C CC C C CC C C C C3C C C0.H.HC C CBCC  C20.H C 74C4CC374C 74 C 74 C 74 C 7C .HCC3 1P3 58C3 CC37C*37C* 77CC C C C CC C  C  C  C77C* CCCد 77CC C C C CC C  C  C  CЯCCC* CCCدCC* Cа77CC C C C C CC C  C  C  C  CаC C C C CаC C C C C C C .PC CCCC CCCC  C  C  C C777 C* CCCد 77CCC 7CC  C77CC C C C C CC C  C  C  C  CCC C C C C CC C CCCCC C C77C C C C C C C CC  C  C  C  C C C C C C C C C C C C C C C C C .PC CCCCC CCCCC  C  C  C C7? ? CC.H66C CCCC C.H66C CCCدC 74C74C74C 74 C 7C 74 C 74 C 74 C 7CC3 1HC3 1P3 58C3 74 C 74 C 74 C 7CC3 1HC3 1P3 58C374C4 C 74 C pC C3 CCxC C374C 6 -HC3BC:3 7@C37*4C 74 CC3 7C9374C 74 CC C@>C3 BC:3C@C374C74CC37*74CC31PP374C74C74CC31HC31PH358C 74C74C 74 C 7CC3 1HC31P@358C C C7p 22CCC CC .HCC C C2p 2x2xCCC CC .HCC C C2xp 66CCC CC .HCC C C6ȯpC CC58C>CCC1P4C C 2C C  CC C C 74 C4 CC3 74 C 74 C74C74C7C.H CC31P358C3 CC3 7 C*3 7 C*30CPCC C2ȯpC CC58C>CCC1P4C C 3@C C  CC C C 74 C4 CC3 74 C 74 C74C74C7C.H CC31P358C3 CC3 7 C*3 7 C*3 CPCC C2p C CBCC >CCC1P4C C ? CC3CPCC C C58pC CChCCpCCC ? C>دpCX3C CC C3C CCد77CCC CC C CPCPCC C4CCC3CPCC C>دC CBCC C CC1PC CC2(`CC C2ȯC CCدȰC 4CXC0C * C04@C CCC C2@C 4CC3CPCC>د(C CCC C( C CCCCCCC C C@(C #CC  C2( CCCJC0CCJC0CCCJC0 #CC BpCCCC C C4CCCJC0 #CC C C C43C #CC (*CCC C.p3C #CC (XCxCCC C.p3xC3 CCCدC33p C 7C4CCC C C CC3#CC C.p3` C #C>C BhC*CBhCXC 5 CCCBhC C>CC C CC C.p3`C CCدCC*JCxCXJC0CCJ C0CCCxJC0C*CJC0 CCدC CCد3PCCCCJC0Aد3HCC C CC CCC C43@C C CЯCCCЯа CC*JC0CXJC0 .8C CCC 54C CC3CpC#CC  C C  C C6ȯ.8CCpCCCCJCx CCد.8CCCJ C0CCxJC0.838 C C C 2CCCCCCC C C>د38C xCPCC X C2(C 3`CCC C>دC CC*JC0CXJC0ȯ30C3@C C 23(C @CC C/ȯ3C @CCCC C/ȯ C 24C0C61hCC7CCC0p3CCpCCC24CC3CC3C C C3دCC0J)C0 C0CC C/ȯذ##CCذC CC C7 77C+C3(3(CC33CCC7@3 C C C 2CCC1Px1P4C 1P, C hCC3CPCC C C>د3 C C C 2CCC1PX1P4C 1P, C HCC3CPCC C C>دhC 14CCC3#CC3@hC CBCCدHC 14CCC3#CC2HC CBCCد3C 3CCCC C0 53C CBCCد C 74C4C24C C C CC374C C3CC C374C 7 C CPCC37CCP*C0374C7 C CP*C037CCPCC  C C23C 3CCCC C 3CCد3 C C C 7@C7CC C C2ذ C C C>C 7@C7CC C Cذ C3@CC C C#CC C C C.p2C C C >C C3C C C >C CC CBCC C  C2(CC7C+CCxx C B`*CC XCCC CدXC C C CBCC C@X77C+ C CCد2C ? CC C22C C C22 C C C C*CJC0 CB C C C  C C C C7 C C 3@CC C C C7CC  CC C#CC CBC CBC CCدC C C CBC #CC CAد@C C C7C+C:C 7C+CJC0 CCد@C7CC@ C AC0C0CC0p0CC C C C/ȯC CCC C C.XȰ CCCدȰC .XCCCC C##C7C+ CC C##C CC C C C7C C C Cx2 77CCCCCCPCCCPCC C7CC7CC7CC7CC7CCCد2C7CC7CC7CC7CC7CC22C:C0J'Cx CCد2C C 22C C 74C74C7C74C 74 C 74 C 74 C 74 C 7CC3 1P C3  C C3 5 C C3 74 C4 C 7 C C3 5C3 74 C 2 C C3 6 C4 C C3 2 C C32 C31PCp,`C37`,`C C C7 77CCCCCCPCCCPCC7 C C C C C CPCC CPCC > CCC74C4C CCC3BhC C C3B`C C C C C>د2C C xCCC 4 C C`x+++ CCدx 77CC7CC 7 CCCJCxC 7CCxx77CC7CCx`C HCCCC+C C C C5HC0C0+ C CCCدH CxCx C7CC7C+CCدH CCCxJC0CCJ C0 H CC C CC 8 CC CCC C  C  C  CH8++ C CCCد8 77CC7C C7CCCCJCxC 7C C88 C C7CC7CC C8(C CC7CCC  C +(C 2CC  C20 77CCC CB C C C Cp=C C C 7CC CCxC CCCC  C  C  C CC+ C CCد77CCCCJ C0C CB C C C Cp=C C C 7CC  CCxC C CCC C CCCCCCCC CCCC  C  C  C  C C C C C CCد77CC CB C C C Cp C C C C 7 C C CpC C CC 7 C4 C CC CCCC3 7C>C  C4 77CC CB C C C Cp C C C C 7 C C Cp C C 4 C C CJ CxC 7CC  C C C C C7C+Cدذ++ CC C CCدذ 77CC C C7C CCpC C C C CpC C CC 7C4 C CCCC3 7CC C  C4ذC7CCC C C7CCدذC C CCد2x C ? C 2CCC C C C22C C C 5C+ CC 7x C4 C > C7 C 64 C4 CCC C C C2 C CCC C C C7C CC3 Cp CC3 ? C3 77C C + C2`2 C7CC ? C 7CC C6ȯ2pC C C? +++ CCCد 77CCCpCC C7 C C CpCC CCCCC CC CC0C0 CCCدCCCJC0 CBCCCCxJC0CCCJC0CCJCxCCxJC0 77CCCpCC  CC4 CCCC3 7CC C  C 77CCCpCC7CC 7 CCCJCxCC+ C CCد++ C C CCCدC C C CCدC C C C2` C C C7CC CBC hCC CCC C CP2`C C CBCC CCد2` C CC2`C CCCC C  C C82` C  CCCCCC C C C>د C0C0 C CCCد CCCJC0 CpCCx C CC   CCC CCC C C C  C  C2`866CC C CCد82X2XCC C CCد8 2p2pCC C CCCCCد8 2x2xCCC CCpCCCCCCد8 22CCC CCpCCCCCCدPC CBCC5PC PCCCC C C>دPC0C0 CCCدP CCCJC0 CpCCxC CC PCCCC C C CPh++ CCدh77CC hCCC C52C(2XC ? C CCC C C62XC CCCC C52XC C 202XC C C ?72HC CBCC >CCC C C/2HC /CCC C C>Я2@C C C + +2`CدC CCدxx pXC @CCCCC CC CCدذ88 CC CC1ذ77 C1CCCC 0 C1PذC CCCCCCC CذC C C2(@##CCCCCCC@C CCCC C C*88080 C#CCCC BCCCC C C>د:: C#CCCدC C7CC7CC7C+CCxCJC0ppC CBCC C CCPCC0 CCدpC CBCC C CCPCC0 CCدpC CCPCC>دC7CC7C+hXCC Ch3@CC C7 C+ hPC C C #CC CC@C4CC4C50C8C0 C CCCCCxC CC>CCCC CCxC C4C4CC3Cp4C+3CPCC3Cp4C>C3CPC C3CPC C3CP C C  C.p@CCP C CCP C C CP C C Cp4 CC3 CPC C Cp4CC3CPCC  C4C4C4CCCC3CP C C3Cp4CC3CPCC3Cp4C+3CPC C  C  C C h >C4CC3 C  p4 C CCC3 CCC C  C ` H C C h >C4CC3 C  p4 C CCC3 CCC C  C ` `CCpCC7CCCpCC CCد 8C C C CCpCCCPCC CCد ( CCpCCCPCCCpCCCPCC CCد pC C C CCpCCCPCC CCد C  C  HCCC C C   CCPCC CC >CCCBCCC `4CC C   CCC3h CCC 80  C*8  CCPCC C CC0 CC > CCC  CC CCCC C C>د C C C C  C2( C C C C  CxCx C C C C  C C :C C C C C :C C C CCC Cx Cx  C  C  C  C  C CBCC CC C  CC C CCPCC0CCد  CCCCC hC8>C4 CC3  Cx  CCCCC C C  C `  77CCCC  CCCCC C C  C   C CC hCCCCCC C : C*8  CCPCC C CC0 CC > CCC  HCC CCCC C C>د C C C C  0 C2( H C C C C CC  CxC CC CCC Cx C  C  C  C  C C C CBC CBCC C  C  C 7CC  `4 C C C  `4 C C C (50 C C 4C C C (C8 CCC37CC3 h50>C4 CC3  C03 hC8>C4 CC3  C0 C C  C  C  C0C0C0 CCد CxCx C CCد h::CC CC B CC C Cp CCx CB CCC CCCCp CC C>CC C C4CCC Cx CCCCC `4CCC   CCCCC3h:>CCC37CC  C  C>د hC Cp CCx C B CC C BCxC C   C CC C  `4 C C C   CC CCC3 h >CC>C C C  C C>د ذC0C0 C CCCد ذ CxCx C C7CC CB CC C CCد ذ CxCx7CC CB CC hC8>C4 CC3  C0  `4C CCC3h50>C4CC3 C0 C  C  C ` ذ CxCx7CCC 7CC C C C  C C CBCC C C CCد C x C CBCC C C CCد C C 7CC C C C  C0C0 C CCد CxCx 7CC  `4 C CCC3 hC8>C4 CC3  C0 C  C C  C CCCJ C0C CCد CCCJ C0CCxJ C0CCJ C0CCJ C0  `4 CCC  CCCCCCC3 h pCC C  C  C C C  C  CCCJ C0CCJ C0CCJ C0C 7 C C CCCx C   CCCCCCC  C C  C  C CCCJ C0C CCد CCCJ C0CCJ C0CCJ C0 CC  8 CC C `4C C CCCCxC CCCC CCC3h CC4 C C3 BC  C  C  C X C CCCJ C0C CCد CCCJ C0CCJ C0CCJ C0CCxJ C0C 7 C C   CCCCCCC C  C   77CC C C CBCC C CCد  77CC C C CBCC C CCد  77CC C CC0 CC > C CC  8C CCC CCC  (C CCCCC  C C C>د 8C  `4 C C C CCC CCC3 h C 4 CC3 CPCC  C C  C  C 8 C CCCJ C0C CCد CCCJ C0CCJ C0CCJ C0CCxJ C0C 7 C C   CCCCCCC C  C  77CC C C CBCC C CCد 77CC C C CBCC C CCد 77CC C CC0 CC > C CC  C CCC CCC  (C CCCCC  C C C>د ( CCCxJ C0CCCxJC0CCJ C0CCJ C0 7 C C  CxCCCCCC C  C  (C C C C C C C Cx C  C  C  C  C  ȰC   C C  `4 CCC CCCCCC3 h C 4 CC3 CPCC  C C C  C 8 C C C C C C C Cx C  C  C  C  C  C CCCJ C0C CCد CCCJ C0CCJ C0CCJ C0 CC  8 CC C `4C C C  C CCCCCxC CCCC CCC3hCC C C  C  C  C X 5050 x CCد C8C8 C C C ` `C X CCC5h `C1P CCد 505050 CCد C8C8 X CCد XC CBCC C C CCد XC x CBCC C C CCد XC CCد0CCCJ C0C C C CCد0C C CCد.p##CC C#CCCCد.pC#CC CCد C ? CC C C @ @+++ C CCد @ 77CChCC CC7 C C hCC CC  @C C CCC  C  C ( (C C C CBCC CCد ( C C C CC CC CB CC C C   CC Cx C  C  (  CC C CCCCC  ( C C C  4C 7 C37CC  C2( CCPCC C C7CCCCxJCxCxCCJC0 CCد  C7CC C C 7CC C C CPCC CCدC C C0 C Я C CCCxJCx CCد а++ C CCد а 77CC  CCC C  CC CCC C  hhCCCCCCC C CBCC C  C CCد CPCPCxCx x x CCCد CPCPCxCx1P x CCCد CPCPCxC CCCد CPCPCC p CCCJ C0CCد hhC xCCBCC  `CCC4CCC3C4CCPCxCx3Cp>CCPCC C C  C  hhC x=C C C CC C  hhCCCCBCC  `CCCCC PCCC C C  C  hh=CCCCC C CC  PC4 CC3 CCC  ` 5050 C Cp4 C CPC>C3 ChC>CCCJCxCد ` C8C8 C Cp4 C CP>CC3 Ch>CCCCJCxCد PCCCCCPCxCxCpCCCPCCC CCد PCCCCCPCxCCpCCCPCCCxCJ C0C CCد PCCCCCPCCCpCCCPCCCxCJ C0C CCد PC CCCCCP=CCpCCCP=CCد C CCCJ C0CCد CCCJ C0CCJC0 CCCxC  CCCC C C C 8 (CPCPCC  CC C0 C  C C CCCد C CCد 8 CCpCCChCCCCCCpCCCC CCpC C  (C  (C  4 C4 C4 CC3 CpC C3 CpCC3 CpCC  C ( CpCpCCCpCCCpCC CCCCCCCЯ CpCpCCCpCC CCCЯ CCpCCCpCC CCCЯ C CCدCPCPCC CCPCCCCJ C0CCدCPCPCC CCPCCCCJ C0Cدа CPCPCC CCPCCCCJ C0CCJ C0Cد а++ C CCCد а77CC  CCCC C C hh=CCCCCCpCC C C CCC C C  CC C CCد CCPCxCx CBCC CCCC C C C CCPCxC CBCCxCJ C0C C C CCCPCCCxCJ C0C C C C CCpCCCPCCCp C C 7CC CPCCCCJ C0C CCدC C CCد CCpCC7CCCPCCCp CC CPCCC CCد CCpCCCPCCCpCCCPCCCCxJCx CCدh##CC#CC PCCC C+h##C#C CC? CCC CPPC? C CBCC CCدPC CCC C8PC CC CCC C CPC "CCCCC " C1PC CC7C4C04CC3C3-XC C-HPC+1C CC7CCC 5( 41C"ЯC C 797(`77+>Я877CC C8CCC CBC CCЯ8CCC CBC CCЯ8CCC CBC CCЯ855C CBC 5CЯ8CCC CBC CCЯ877CC C C C C877CC C C C C877CC7CC PCCC CP855CCC CBCCCCد855CC CBCC7Cد855CC CBCC4Cد844CC CBCC4Cد84`4`CC CB`CCC8BBC CBHCCد8,,CC C-CCCد866CCC6CCCP822CCC2CCCP82x2xCCC2xCCCP866CCC2xCCCP82p2pCC2pCCP8? ? CP866C6CP82X2XC2XCP C CBC CCPCCxCCCC CC7CC PCCC CP C7CCC CB C C C 7C CC P CCPCCC CPC7CC PCCC CPBBCC C C CCCدC C C CCدаCC CCC? аCC CCد5(5(CC C C C C` 44CC C C C( C CH 44CC C C C C CH 44CC C C C C CH 44CC C C C C CH 44CC C C B C CH 44CC C C B C CH`C7C+5 CC CBCC CCد`C7C+CCC0C CBCC CCد`C7C+CCC0C CCC C C5` C7C+CCC0C 5CCC5 CCC " C1`C C +8x++ C CCCدx77CC7CCx 77C+ C CCCد 77CC7CC HC C +  C 8 CC C C 7x C4 C C CCC3 7C 7C 7 C+ C  C C88C C CBCC C C CCد8C C CBCC C C CCد8 C C CC7CCC C C58C 7C 7 C 7 C+ CC 8 C CC C 8 C C C C 7x C4C C CCC37C7 C 7 C 7C+ C C  C7x8C 7C 7 C+ 8 C CC C 7x C4 C C CCC3 7C7 C 7C+ C C  C7xC7CC CCد##CC C CC C CC C C C C ##CC#CC CBCC CCCCC C7C#CC 7CCCC C7Ȱ C CBCC 7CCCC C C C7Ȱ C 74CC37CCC C C C7777CCC7777CC CCCCCد777CCC A8C4CCC3*HC C77CC *HCCJ0Cx CCد7CC *HCCJ0Cx CCد C .CC 5C C 1P4 C C -CC C  CC CC3 4 C 75 C3 7xC C C C6ȯ CBC X7xC C@CC-CCC CCCC C C1PCBC 07xC C CCCC C C1PC CBCCد.C C 5CCCC C C5hh50CCCCCCpCCBC CCBCCدhhC8 pCCCCCCpCCBC CCBCCدC CCد C C ChCCCC 7C+ 1P 1PC1PC1PC1PCCCC  C1PC8C8 CCCد5050 CCCدC1PذC C CCCCCpCCC 1P4CC8:C8:C8:1Px1PCC3CC  C1PذC 1PCC  C1P 77 7C74C74C7C74C 7CC31C31P35CC 74C7C74C7CC31C31P C7C CCد C CCCدxx C CCCد C C C C C C C0 +`` ++ C CCد`77C C C C C C C C  C  C  C  C C CHH hh C C C C C0C h C4 C C3  C 7CC `CCCCCCC  C  C,H hh C C C C C C h C4 C C3  C CpCCC `C>CC0CCC  C  C,HC CB C C C h C C C CCCpCCC,C4CC,CCC`4C>CC0CCC374CC3h0>CC03h 4CC03 C  C  C  C  CH C C CCCxJ C0 `CCC CCCC  C  C, C CCC5CCCCC7C*CCCC C C C@ C CCد CCدȰC C CCد hhCCCC C CCC C C hhCC C C CC 7C*C C C C  CC* CCد@C C C xCC C6ȯx C C `CCHCCC C C5H hhCCCC Ch CCCCCJ CxCدBBCC0   CC 0 CCCCCC  C Cȯ  CC0 C C C CC C C CpC CC C  C8C81P x C CC  XCCCC C C C C C 0 C50CC CCpCCC CCد0 CC8 pCC CCpCCC CCد0 C C C CC C C CpC CC C 0 CxCx x C CC  CCCCC C0 C C C x C  x C  ChCCCC CCد`CCЯа C7CC CCCCC C C C C C CCЯC C C CCدC C CCCC C C C CCCCCC C C C C+  X X C C CC CCCC C    C CC CCCC Cp C x CC `CCCCC Cx CPC C C C C C C C +C X  0CC C CC 7C CC C C  CC C C CCدp C C +C  p CC CCCC C CpC C C CCدP C C +C>C x CC CCCx C PCC CCC C CPC C C CCد`C C C C ` C C CCCC C C C CCC C CxCx C CCدC C CCد C C CCCC C C C+hhCC=C CC C C C CCد+C C C  CPh: C2(CxCx Ch x xCCh xCCCCد ChC xCChC xCC CCد0hh XCC Ch X CCh X xCCCد 50 C C Cx C C0 C8 C C : C C0 50 C C : C C0 C8 C C : C C0 50 C C C : C0  C C0 C8 C C C : C0  C C0  C CCPCC : pp C C C :  C C0 `` C CCPCC : PP C C C :  C C0 @@ C CCPCC : 00 C C C C :  C C  C   C C C : C  C  C C C C :  C C  C  C C C C :x  C C  C CC C C :p C0 C C0 CC C C :h C0 C C0 CC C C :` C0 C C0  C C C C :X C0  C  C  C C C C :  C  C C0  C C C C 9P  C C  C  C C C C 9  C C  C  C CCPCC 9H C8 C C 9@ C C0 pp C C 8 C C0 `` C C 8 C C0 00 C C C 8 C  CH   C C C 8 C  CH 88 CCCx C CC CC0CCC C( CPC C CC: C CC CCC CC  C(  C C C C C0  C  C C0  CCCCCCC C  CCCCC0CC CЯ  CCCCCxCC CЯ  CCCCCCC CC C/x C C: C 54 C C CC CC0 CC0C3 7C 74 C 7C 74 C 7C+3 79+3 79+  C C(C 8(8C C7@аC 8(8C C7@C 8(8C C7@(C 8(7C C7@*8C :CCC C C7@H  CCCدH xx CCCدHC  C C C C C( C C CC hCCCCC CC  C  C  CPH C CCدh  CC CCCCCC H 8 *  C4h xx C C C C CC C0(h77C 4H8* 7 Cx 7 C 7C4 CCCCC3 CC C  C  C  C7h C CCد xx CCCCCJ #C0Cد  CCJ C0CJ C0CJ C0 C8C0C1P xx C C C C C C 77 C C C C C C C 7C 7C 7C 7C+ 1PC 1P# C8: C8: 1PC CC C7xC C C  4XC C C  4xxC C C#CC CC CCد C 4>C4CCC43@CCCCxC43@C4C0C C>دC 4>C4C43@Cx4C0C C>د CpCpCCCPCCCPCC 4C43@C4CC  >4( C Cx 4CCx3pC 3CCC XCC HC4 C 0C(CxCC3C CpCCC24CC3C3 /C C C2(C ?C  C0C ?)HC>CCC C>ЯXC 7C7>C+ 7`,x4C 7`,p4 C 7`,h4 C CC 7`,4 C Cp CCC 7`,x4 CCpCCC7`,p4CCpCCC7`,h4CCpCCCCCCCCCCCCCCC24CC34C4C4C4CC3,C3,xC3,pC3,hC37C7>C+37C7>C+3 7C7>C+3 7 C 7>C+3 7C7>C+3 7C7>C+37C7>C+ , C C7`C7CCC 7CCC 7C+ C CC 3CCCC3C CpCCC1P4C CC3xC C C `XCC5CC24C 3 C @CC 3 C Cp C C C 24 C CC3  C34CCx3pC C C0hC `8CCC 0 C0 C0C C0X`Cx CC`C CCد0 C C4CCC374C+374C+3hCCC Cدذxx CCC pXذCHxxC 0XC CCدxx x   xx x 77 7@C 777787x+ CCCCC C C5ذC C C 64CpCCCCC74CC4 C PCC36ACC3 8CCC3- " C1CpC C C7CC7CC7C+ 5 CC C CC 7C4C >C C 5 C4 C C >C CC3 7C C379p7(7(@+ C  C C>Я8 C CCxJ)C0 CC0X0hCC C C0hPCC0J)C0 6C@C CCC0p0CC C0  CCCد CCJC0BC CCد CC0J)C0 61hCCCCC0p0CC C0 CCCد##CC CC C7p7pCC CC #CC CC CC CC4CCCC33xC CЯC C C CC C CHа##CCC2аC2H C CCC CCC C C C77C+C77CCCC3(3(CC33CC33C CC37P7PC CC7P-P-PC CC-P /x/xCCCC 74C4 CCC35C77x+3 CCCC C C/xCC HCCCC ChX@@ CCدC (CC CX(C C 4-xCC0CCC -x C C4(C CCدh C#CC -xCC224C74CCCC3-CPCC03#C CXC CCC CXCCدа C C+( BXCCC74C4CC CCC3CC374CC3? C Cx5 CC0J)C0 24CCC AC0 C 24 CC3 4 C X C3 C34C XC3C C C/ȯ C CC hCC CCC C C)##C C#CCCد##CC C#CCCCدC#CC CCد5C >CCC CC C C .(CC C C6ȯ.( C xCC5CCC C C5x77CC C7CCCCدxC>Я.C C 7C7p7h7`7X7H7@+  0.C 54CC 3CC374C74C 74 C 7C 74 C 74 C 7C 74 C 7C+3 79 79 79 7(` 7( 7( 7(x 7  79 79 7 79+3 79 79 79 7(` 7(( 7 79 7 7% 7 7(( 7( 7( 7(@ 79p 7(0 7( 79 79 78 79+3 79 79 79` 79+3 79 79 7% 7(` 7( 7(x 79 79 7% 7 7% 7(` 79+379797%7(`7(7(x79797878`77878P7878H78797979797%77(7(x7(7797878`77878P7878H79+3797%7(`7(7(x797979797979h7(07(8779h7(h7(7979+ C C.C C 5(  4.C .C C.C .C C.C C : 9..C C +(..C .C C,د.C C ..C C ,..C C x ..C C ..C C ,..C C  .. C C C C C.. C -C 74 CC4 C - CC3 .CCCC3 6 2( 74 C 74 C 74 C+3 C3 CC3 xC  C C-. C /CC 54 C C CC CC C 3 CCp C CC 1P4 C CC3 7C C3 7C 7C+  C C3دxxC 7C74C+379p7(+ CC C5C CCد7C C 7 ,@7C C , 7  h..C C  .XC C  ,..C C P3.C C .3/` C 54CC3C7CC37C74C7C+379+ C C C/ȯ8C ?0C ?(C CCC C C78C C CCد/XC /C /`CCC C C)HC /C CCC C C)HC /`CCC C C8/PC C /8/`C C /`/@C C /@/X/8C C /8/X/(C C /(/X/0C C /0/X/ C C / /X/C /C 7CC C C)HC7` CCد,ذC C ,د,ذC C 4HCC H  C4,ȰC C C H 34PC C 4HCCCC H  C4PCxCxC0 CCC pXP:: CCدC C CC x CC  ChCPxC C @CC : C0P C C BC CBC 7BC CBC 7BC CBC (BC CCC CC C Cp4CCPCC3CPCC 7 C4 C 4 CCC3 7 C 74 C 7C74C 7C74C 7C74C 7C74C+37X797979h+37979h79+3797`+37979h79+3 79 79h 79 79+3 7:+ C  C( C CCC 4 C @ C .C 0Cx C C 1PC C7 CC C7 CC C 1PC C CC3 74 C13 .C  C( C CC 0Cx C @ CC  C.C C C8CCC C5.C CCدC CBCC C C CCد C 7C7C96C4 C C >C CC3 74 C . CCCC3 5 CC C>Я.C C CC 7CC 7CC C7.C C CC 7CC 7CC C7.C C CCدCC ACxC0hC? C0hCC C CX@C 74C130C CC CCCC p CXC C XXC -hC@X1P8C1PCXC1P1PC1PCC1P1PC1PCC C88 1PC1PCC1P1PC1P1PC1PCC p C1P`C C CPPC C CCC  X48C C CCCxC4CC  4 C C C  4C C CBCC CC 2( C 4CC 4CC CC 7CCC C C0 C5 CCCxJCx 4CC4CCP:C0CCC  X C C4C C-xCCC  X 4C C  X *4 C CCCCCCC  X C C4C 8CC C`hC  CC C`PC 8CC C8C  CC C(C 74CCC374C74CC38>C35>C:C C CCCC CBCC C`CCC C C C CذCCC CBCC C`ذCPCC C C C CCCC CBCC C`CpCC C C C CxC ChCC CBCC CxC CCCPHC C8CC CBCC ChHC CCC80 C CCCCC4CC374C74C 74 C13 1P031PC31P H 3 C40C CCد00 C C0C:: CCد    C C P C C CC C    C P CC0C CC  Ch @@ C C C@C CC  CPh PP C C C C Cدh  BCCCh  C CC C C BhC C BxCC  CPh  CCCh  CCCh  C C C Cxh  C C C Cxh 00 CCC`h   CCC`h  CCCCh `` C C`CC(h  CCh  C`h  C`h  C C C C Ch  CCCCh  CCC`h  CCC`h pp C C C C Ch `` C C C`C CC  C8h  CCChh  CCChh  C C C CHh pp CpCChh  CCC`h  C C CCCCh  C C CCCCC0C0CCCCC ChCxCxCpCCCC Ch::ChCCCC Ch::xCCCC Ch:: CpCCCCد::hCCCC Ch:: CXCCCد:: CPCCCد::@ CCد:: C84CCد:: C84CCد:: C80CCد:: C84CCد:x:x C85CCد:p:p C8(CCد:h:h CBCCCد:`:` CBCCCد:X:X CCCCد:P:P C@CCCد:H:H C2pCCCد:@:@ CCCCد:8:8 CCCCد:0:0 CCCCد:(:( CCد: :  CCد:: CCد:: CCد:: CCد:: CCCCد99 CCCCد99 CCCCد CC9J C0Cد CC9J C0Cد CCC0J C0CدC CCCCC C`C0C0 CCدCxCxx CCد::p CCد::h CCد::X CCد::H CCد::8 CCد::( CCxH@(#)acos.c 1.4 88/02/08 SMI?.B9?.B=95y. &֕Ae?@(#)pow.c 1.9 88/02/08 SMI?.B9?.B=95y+?g\?1?a^?ѽX ?9?ؚ3B[?#쿘L?D{̏c?܏ǚ"?jġ?_?%R?r%*?T?_^p@?y^?3O?V*?Fr?]>?*-&[ū?@L5-@(#)exp.S 1.11 89/02/23 SMI@.B9@I-0Q??;s?.B9?.B9?.B=95yfl?Vj%,Ak>f7ir?Ge+<F)>Y9?.B9?.B=95y>0?UUUU)ffJ7 ??Yt?Xl?[Q?r<}Q{?ԇ1h?8znub8?? 1?q7:?ަL4"?N`a-?6*'?4+VO?HT)?$~:U?f;?u_t?s?%L?B*?77?đ?U>%]?蟙Zӭ?v^G?݅R? i?X?3{_??Pv[nE@%]@ 蟙Zӭ@ v^G@ ݅R@ i@ X@ 3{_@@Pv[nE@@(#)trig.S 1.14 89/01/23 SMI? m`M?XL"#?_0mȃ?!TD-?!TD-?!T@=дabc1=д`=дa`;.ps;.9{% IA9!=|׽B_ ???????bf4E?H@q?UUUUUU?UUUUUU??UUUUUU??p=o)?UUUUULVlR>q~O+I[>!ŐK?UUUUULVlR>q~O+I[>!ŐK?UUUUU>VlA>q뾒~O>!;`܌Y.?UUUUUZ ?*䩬rb>Z3V#$?UUUUUZ ?*䩬rb>Z3V#$?UUUUU a?*tcE >Zag+nNDi1`ט*1{u`?a*qOڊYH#Z7QczGJR\9':EN-d'J[Je("Gq?5$Bh%i*hJBWuΙEG5?1Ar+}u%)i,- 1/ &e?o z_nND*+ v\պv|`S:p|*h{z8Ks^4['>9X>]U[J.5X #GE iR8 g5}MB~aPRwn`}hinU}%>JG-vw@ҐEaؐ!D)(n]nND)'W4b<CAQc޻a$n:BMI. ђ)>5.Dp&_~A99S9_(;/Z mm6~' OF?f_-u'{=9Rk_]V0F{kϼ 6a^e_h@؀Ms'1Vs`{kAp>p?!@>tD-.text`b@`b@ N`b .rdata@@`.data@.lit8~.sdata.sbss.bss  P.comment$` Prolog execution %s(%ld). CPU time = %ld.%lds warning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s metacallmetatruepredmarktellmarkend_of_fileprefixoppostfixopclosed_filebp_stateeditor_programeditor_filenoname.plnot enough common memoryadd_engine: engine table fullmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]BinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting t@s@`s@s@t@t@t@r@@t@t@t@t@t@t@t@t@pt@t@s@0s@string table overflow%ld symbols, %s!!! symbol hashing table (almost) fullunexpected!!!arity limit exceededno definition for: main/1integer expected in halt/1trailing in unifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heapdivised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operation@Ѕ@x@@@@@@@@@̈@@@@@@@ @,@H@h@@@Ў@@L@@ @@ܘ@@x@@ @$@X@ܚ@@@@ @ȑ@@@@\@@(@P@@<@ȕ@x@@@t@@l@x@@D@X@@@ܖ@@(@<@@@Ğ@@\@l@@@ؠ@4@@@\@ܢ@@$@@p@\@@@@ @t@Ȩ@@p@@@d@@@X@@@<@@@4@T@d@@4@l@@@0@l@@p@4@@@@Я@@8@l@P@@@\@@س@H@@@ @Բ@t@@ط@ط@ط@ط@ط@ط@ط@ط@ط@@@@@@(@\@@@ȵ@@@@@(@`@@@D@@P@@@@H@t@@؟@@@(@4@D@expected END_OF_CHUNKunexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_opopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationfile not foundbegin loading %s......finished loadingunable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). @P@@x@T@@@@@@@@@@$@$@$@@$@$@$@$@$@$@$@$@$@$@d@@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@@@@$@$@$@$@$@$@$@$@$@$@t@4@$@@$@$@$@$@$@$@$@ @$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@@$@$@$@$@$@$@$@$@$@$@$@$@$@$@@@@unix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processsymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellunable to reopen to see filehset in see/1hdef in seehset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tellarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafep@@@@@@8@T@@%ld bytes, %s!!! hashing table (almost) fullhdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2string buffer (-i option) exceeded or infinite termbad arg in arithmetic operation%ld%-se%-ld %A%A%AT%AT%A%AT%AT%AT%A%A%A%A%A%A%A*A)A)A)A)A)A)A)A)A)A)A)A)A)A)A)A*A*A)A)A)A)A)A)A)A)A)A)A)A)A)A)A*A)Ad*A)A)A)A)A)A)At*A)A)A)A)A)A)A*A*Aprolog:$end0c.c not compiled with -D C_INTERFACE is_compiled_1()atomic_1()integer_1()nonvar_1()cwrite_1()fail_0()symcat_3change_arg_3()setarg_3()compare0_3int_only_opput0_1()random_1arith_opprolog:c_check_avprolog:c_opcodeprolog:c_check_ivget_cut()put_cut()move_regpush_variable()prolog:c_skipc_trace(" unify_integerprolog:c_aux_unify_integerwrite_integerprolog:c_aux_write_integerget_integerprolog:c_aux_get_integerput_integerprolog:c_aux_put_integerload_integerprolog:c_aux_load_integerprolog:c_wvoidprolog:oldH_newPprolog:newH_newPprolog:oldH_oldPprolog:newH_oldPprolog:newPprolog:c_chunk_endprolog:c_chunk_beginfun_arityfun_symbolunexpectedprolog:c_find_funprolog:get_offsetprolog:new_offsetprolog:c_check0prolog:c_check{255,0,0,"_size=sizeof(struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} #include "#include "../src/c_defs.h"#include "../src/global.h"/* do not edit: generated by co.pl */prolog:c_decorate_file0prolog:c_spec_endprolog:c_spec,(void *)prolog:make_commentprolog:patch_specialsprolog:c_traceprolog:wchunkprolog:make_bcodeprolog:c_instrprolog:make_hcodeprolog:make_ccodec_threshold_minc_threshold_maxprolog:c_rootprolog:sprolog:defeditprolog:my_defeditprolog:get_editorprolog:ubootBinWAM intermediate codeprolog:make_includein_moduleunable_to_makebin_prolog_with_cparserprolog:cparsernewappl.bpwrite.plprolog:listifyprolog:make_cmd0prolog:fact2ruleincludingprolog:exec_run_time_commands0% !!! action delayed after compilation, for command:prolog:get_cmd_no$run_time_commandprolog:cmd_rootprolog:cmd2clauseprolog:exec_cmdensure_loadedprolog:include_fileprolog:preprocessprolog:is_dynamic_clauseprolog:translate_cmdprolog:translateprolog:put_to_eofprolog:make_memo_fileprolog:include_memoed_fileprolog:memoable_fileprolog:memoing_translate_allprolog:translate_all0prolog:write_c_chunkprolog:make_dummy_endprolog:close_c_chunk_fileprolog:c_decorate_fileprolog:comp_fileprolog:decorate_filetotal_compile_timeprolog:xcompileprolog:compile1prolog:compile0bytes_usedprolog:translate_allprolog:init_cmdcompilation abortedcompile_timeprolog:terminate_fileprolog:maincompprolog:mcomp_filecompilingprolog:currpredpredicateprolog:newpred0file_nameprolog:let_c_chunk_fileprolog:wcode_asmprolog:wcode_cprolog:wspec_cbegin_endprolog:c_thresholdprolog:write_or_skip0prolog:encode_opprolog:n_builtinbuiltin_?arith_valueprolog:n_aritharith_variableprolog:n_inlineinline_variablefirstarg_?prolog:n_nopclause_?prolog:write_or_skipwrite_voidunify_voidpush_variablepush_structureload_valueload_variableload_constantexecute_?push_cutget_valueput_variableput_valueget_variableput_structureput_constantget_structureget_constantpush_constantwrite_constantunify_constantwrite_valueunify_valuewrite_variableprolog:wcodeunify_variableprolog:mc_transform_voidprolog:mc4prolog:mc_transform_pushprolog:mc_selprolog:mc3prolog:mc_chunkprolog:mc_pushprolog:mc5prolog:mc1prolog:mc0prolog:mc_emptyprolog:mc_input0prolog:mc_inputprolog:mc_topempty_opprolog:encode2prolog:encode_argprolog:instr_catprolog:mc_peepholeprolog:mc_one_instrprolog:encodeprolog:beautifyprolog:gen_instrprolog:tempargprolog:maxarityprolog:write_instrprolog:antigenicc_chunk_valuec_chunk_variableprolog:make_anti_callprolog:bind_lengthprolog:bind_c_chunk_lengthDEFINITE:EXPANDED:prolog:show_stepsprolog:show_infoprolog:show_funprolog:show_or_skipprolog:gen_codeFINAL CODE:prolog:mc_all_instrPOST TERM-COMPRESSION CODE:BRUT WAM-ASSEMBLER:prolog:show_instrprolog:show_codeprolog:add_upper_contprolog:def_to_mbin0prolog:def_to_mbinprolog:emit_isprolog:split_rel_1prolog:split_isprolog:split_relprolog:split_is_relprolog:app_bodyprolog:repl_lvalprolog:repl_disjprolog:repl_conjprolog:repl_knownspying_onprolog:split_opprolog:strip_nilprolog:repl_macroprolog:repl_bodyprolog:mdef_to_defprolog:get_regprolog:free_regprolog:allocate_regprolog:allocate1prolog:check_var_argprolog:check_var_varprolog:check_lifetimesprolog:set_toprolog:defaultprolog:collapse_themprolog:mark_varprolog:mark_argprolog:get_var_typeprolog:fill_var_typeprolog:fill_oneprolog:tpointprolog:fill_allbad_occurrenceprolog:oldvarprolog:newvarprolog:occurrenceprolog:find_occurrencesprolog:deep_var_opprolog:unify_opprolog:emit_args0prolog:deep_structure_opprolog:emit_structureprolog:cc_tprolog:cc_argstructureprolog:emit_argsprolog:cc_argsprolog:emit_top_structureprolog:classif_argconstantprolog:classif_loadprolog:cc_b_argsprolog:emit_top_bargsprolog:handle_constant_resprolog:out_regprolog:cc_top_tprolog:cc_eq1unexpected_body_atomprolog:emit_body_top_termprolog:cc_builtinprolog:cc_eqprolog:emit_top_argsprolog:cc_top_argunexpected_head_atomprolog:emit_head_top_termprolog:cc_b0prolog:cc_h0prolog:set_modeprolog:get_modeprolog:end_chunkprolog:emitprolog:hidden_varprolog:begin_chunkprolog:cc_hprolog:cc_bprolog:allocate_regsprolog:collapse_argsprolog:fill_infoprolog:varsprolog:maxprolog:cc_h_bfirstargprolog:classif_firstprolog:firstargprolog:cc_clauseprolog:bu_bodyprolog:cutpfailing_to_compile_clauseprolog:newpredprolog:gg_emitprolog:cc_compile_clauseprolog:bin_builtinprolog:c_chunk_fileprolog:cc_must_have_builtinsprolog:cc_builtinsprolog:compile_builtinsprolog:cc_bincompprolog:compile_binaryshould be groundprolog:free_variablesprolog:explicit_bindingprolog:term_is_free_ofprolog:list_is_free_ofprolog:replace_key_variablesprolog:concordant_subsetprolog:replace_instanceprolog:keymergeprolog:samkeyrunillegal_argumentsprolog:keysortprolog:ksortprolog:merge_2prolog:merge_sort1prolog:merge_sortprolog:remdupprolog:bb_origunsortedprolog:assume_oneprolog:assume_all0prolog:assume_allprolog:copy_or_delete_llprolog:get_assumed_clauseprolog:insert_llprolog:assume_with_hint_llprolog:assume_llprolog:assume_fileprolog:assume1error_in_assumebad_clauseprolog:add_hint_llprolog:assumeintuitionisticprolog:generate_run_time_predicateprolog:listing1% assumed prolog:listing0prolog:consult_cmdprolog:consult_includedconsultingconsultedprolog:consult_embeddedprolog:survive_cleanupprolog:consult0% using compile/1 is MUCH fasterprolog:consult_warningabolish_expects_dynamic_clausesprolog:abolish0prolog:clauseprolog:collect_slotprolog:erase0prolog:clause0prolog:assert_itunable to assert clauseprolog:add_clause0prolog:add_clauseprolog:ensure_dynamicdynamic code would shadow assumed predicateWARNING: dynamic code will shadow compiled predicateprolog:define_dynamicprolog:check_dynamicprolog:make_dynamic!!! compiled!!! dynamic!!! assumed : prolog:tr_callprolog:tr_if2prolog:tr_disj2prolog:tr_if1prolog:tr_goalprolog:tr_disj1prolog:tr_bodyprolog:do_disj0prolog:do_if_then_elseprolog:do_disjprolog:do_conjundefined_predicateprolog:do_undefprolog:do_applyprolog:do_goalprolog:do_compiledprolog:do_bodyunbound_goal ; for more, otherwise prolog:user_actionprolog:another_solprolog:report_top_varsprolog:report_one_varprolog:savetopprolog:nothingprolog:topcallprolog:report_answersprolog:topinterpprolog:topstepprolog:exec_run_time_commandsprolog:binpro_startprolog:l_magic2prolog:l_magic_nlprolog:l_magicprolog:l_clausesprolog:pp_clause0prolog:classify_other_tailprolog:classify_alpha_tailprolog:classify_nameprolog:w_operprolog:w_tailprolog:w_argsprolog:w_atomprolog:w_VARprolog:w_variableprolog:put_stringprolog:maybe_spaceprolog:maybe_parenprolog:w_outprolog:is_latin1_majprolog:is_latin1_minprolog:r_varcountprolog:r_digsprolog:r_digitsprolog:r_int! end_of_file just after full_stopprolog:is_specprolog:is_alpha_num! end_of_file in /*.. commentprolog:patch_slashprolog:more_string! end of file in: prolog:r_symbolprolog:is_minprolog:is_numprolog:r_integerprolog:is_majprolog:r_lookupprolog:r_nameprolog:r_stringprolog:r_fullstopprolog:r_after_atomprolog:r_solidusprolog:is_terminatorend_of_fileprolog:r_toks prolog:display_tokenprolog:finish_syntax_error** SYNTAX ERROR: byte=syntax_errorprolog:display_listprolog:start_syntax_errorvariableprolog:cant_follow_exprprolog:peepopprolog:exprtlprolog:prefix_is_atomprecedenceargumentsprolog:r_listprolog:after_prefix_opprolog:exprtl0prolog:r_argsprolog:rtsprolog:ambigopprolog:infixopprolog:postfixopprolog:prefixopprolog:expectexpressionexpectedoperatorprolog:syntax_errorprolog:rtprolog:all_readprolog:r_and_checkprolog:portable_writeqprolog:portable_writeprolog:portable_printprolog:r_vars** warning singleton_variables, byte=>prolog:melt_varnamesprolog:warn_singletons1prolog:r_termprolog:singletonsfile_not_foundprolog:see_a_fileprolog:find_file2bad file nameprolog:find_file1unable_to_tell_atunable_to_see_atunable_to_tellunable_to_seeprolog:peval_iobinprologprolog:default_prologexpected_to_expandtry_edcg_expansionprolog:dcg_CONJprolog:dcg_disj0prolog:dcg_termprolog:dcg_disjprolog:dcg_goalprolog:dcg_headprolog:dcg_conjprolog:dcg_bodydcg expansion error->prolog:dcg_ruleprolog:try_dcg_expansionno such environment variableprolog:unix_argvprolog:unix_cdprolog:append3prolog:near_matchpredmarkprolog:predicate_key0compiledbuilt_ininterpretedprolog:generate_a_predicateprolog:predicate_property0prolog:is_predicate267911168prolog:float_minusprolog:try_float_exp1prolog:try_float_expprolog:try_floatblackboard overflow, left onlyprolog:bb_put_1prolog:bb_put_backprolog:rmprolog:letprolog:valprolog:setprolog:defprolog:bb_failprolog:bb_gcprolog:bb_default_valprolog:$gteqprolog:$lesseqprolog:$noteqvariable_in_iserror_in_isin tab/1: should evaluate to an integerprolog:tab0prolog:make_lengthprolog:get_lengthprolog:general_appendprolog:append_bodyprolog:appendNprolog:det_appendprolog:term2dlistprolog:term2listprolog:getenv_pathprolog:compile_memprolog:see_or_failprolog:save_termprolog:numbervarsprolog:are_sharedprolog:share_varsprolog:call_ifdefno meta_interpreter for undefined goalcall_ifdefprolog:std_expand_termprolog:portable_expand_termprolog:interactive0prolog:is_interactiveprolog:is_builtin_varprolog:buprolog:is_builtin_nonvarunable_to_spy_on$assumedpostfixopprefixopprolog:op_typeprolog:get_op0prolog:get_opprolog:gensym_noprolog:is_publicbad or repeated declarationprolog:hide_atom0prolog:hide_atomprolog:public0should_be_nonvarprolog:portray_errorprolog:error_messagelocal_stackglobal_stackset_c_traceset_c_thresholdstat_dictmember_inth_memberotherwisespy_goalinit_gensymis_publicmodule_namemodule_predicatecurrent_moduleis_modulemodule_callpatch_itshow_code0char_in_cmdith_clausegc_read_clauseadd_truemake_executable_unix_applmake_applcurrent_user_filetexteditis_builtincurrent_opsee_or_failexists_filefind_filemake_file_namefile_libraryfile_extension_listfile_search_pathtelling_atseeing_atttycwritelnttycwritettyprintfast_writepp_clauseportray_clauseportable_displayread_tokensread_clauseread_with_singletonswarn_singletonstop_read_termread_termput_codeget_codeis_prologtoplevelquietmesuser_errorterm_charsfree_variablesbb_elementis_dynamicis_assumedassumed_clausereconsultinstanceretractallmeta_interpretercurrent_predicatepredicate_propertydcg_phrasebb_change_argappend_disjappend_conjcompoundnumbervarsmake_cmddet_appendall_but_at_leastfind_at_mosthas_fueldrop_at_leasttake_at_mostnth_answerfind_whileskip_whenskip_untilfindall_disjfindall_conjfindall_workhorseexpand_termmetatruemetacallinteractivestatisticsadd_contstrip_contn_builtinn_inline700 xfx :=700 xfx =:600 xfx <=950 xfy =>950 xfy -:600 xfx :=:900 yfx :1200 xfx ::-1150 fx module1150 fx public1150 fx dynamic1050 xfx @@1050 xfy ->900 fx nospy900 fx spy900 fy \+900 fy not700 xfx \=700 xfx =..700 xfx ==700 xfx \==700 xfx @<700 xfx @>700 xfx @=<700 xfx @>=500 fx \500 yfx \500 yfx /\500 yfx \/500 fx #500 yfx #400 yfx //400 yfx <<400 yfx >>300 xfx mod200 xfy ^300 fy ~700 xfx =:=700 xfx =\=700 xfx <700 xfx =<700 xfx >700 xfx >=660 xfy ++650 xfy .400 yfx *400 yfx /500 fx +500 yfx +500 fx -500 yfx -700 xfx =700 xfx is1200 fx :-1200 xfx :-1200 xfx -->1100 xfy ;1000 xfy ,bb_resetlist_asmfindall_load_heapfindall_store_heapnew_builtinsuspend_enginemultitask_enginesask_engineload_enginedestroy_enginecreate_engineunix_killunix_accessunix_getenvunix_argvunix_argciso_lseekiso_peek_byteiso_get_byteiso_put_byteiso_read_termiso_write_termiso_close_streamiso_open_streamdcg_tellingdcg_tellstrip_cont0write_floatinput_floatfloat_funfloat_fun2term_appendstring_opsee_tell_atseeing_telling_atseen_toldsee_tellseeing_tellingolder_filebb_list0copy_termdet_append0lift_heapadd_instrself_infoterm2listlist2termdcg_connectchange_argcompare0arith_difarith_eqgreater_eqis_compiled$bin_cutloglog10 k*?-0o?Y, _?U*wbx? ~|&)=?Mo*d4Xt?հ;0bqB?~L(g=0 ?f*f=6e?}`A?D>G??jh'i?8=?lb2Eø?gҔ7YJ:m?TEzlj=\T^??u^L*n'?P=\n=1?fUE5|~?p#Zil/*?9A i= R?Gg5 q?N "ll+M?>TGo=&?GFbp0?~} k?UV?KiJr{S!e?Aw[ZR?NLe=#?;9bN?gI`.t?]ul?CwiPk!\?a+n'?<*,4:˭?7Mf=^m?6F_=%@?Žgs$?s_P=?Z/sj\g?cc=i?@uY=A)?c vi:Z?Lz:=?,0]=G?MY%iUL?Feh m0?> c=‹a?&dBz`w_?$ؚ͒|=.?| K?Ewv?bX?C=,?nPHh5lȆ?BĮT=+?l `=9?َg_?.l;?Yg=B?(v.F=3?xs,n6?*8]!G?}LV=?V4u_#?ovKX=@H?[Sm=?^Ꟑ@=G2)?1S>{D?U}N=X?OYP=M?7{[=ͧ=?ٹf=?%!Z= ?j )H~2?47!*T%?vѭ((g=j?쌠m|$?kpBSaBt?>=Fҙ?ܹ.I=_?LrͲ;=p#a?[0Vd=yX?+6LIX.?g_TFR%?]i`=@K?u>-i\>r?8WN@o=@WOo?JU@%r?DhgI}eхI?-Y=@- ?6-Y=q/?8C`T?3e=ػy?oƿi=g?{R=@q?8X>@p^_?|4= ?¯ld01?/9[U?^JiP^y?)]7?hRFo^D?tc8r]=6t?4 B3=O3?`=9+?{V2qm=(N?z'm,n@Gq?! tN=@V?ɟ;VeJ? >@qj? =&f=ф[?b`F?z67Z??6\=@‹a?7{ }n=S?`vѫQ=@]? O$ͯy?"Na@?FVk= ?4g[&-*?W"߹F=g$K?DBd=k?;}X͵?6=I5L@?),o=lܱ?dg=$?_ puf=G2?Q=@B.?4&*CH?@ӰY?us =lX?Vr1<@[?<@Q}U?ʑDB''$!0'08 ! '!&bs&B!U"&B!cs&#BB!UB&!B!DB!E!0z !86@s&"B!BB!brs&B!BB!"b B!^''s&#BB!UB!&Q>"&B!D!(!0z !8@B!'#CB!B&B!Qs&"&!(B!D!0z !8@B!D'#!0B!BB#!'B!^B!D!0z !8@>"'B!UB!Bs&"&9я"2@'6#! 02'@02!2@2@b"Ž+"@P\+@s&@<($$ !0  $Pb$P"qbs&"b#s&B!Q5b#s&@"&sb2@! `R  !(!@`l'! !(!0M! !8`!@@ ӎ"8s+@! "2@! 02 @02!2@2 @d@ !(!@`>&"s&8s+j@! "2@! 02 @02!2@2@cbs&r >& % s$B!Q"2@! 02,@02!2@2!@Ž+"@!P\+@$@<($ !0  $Pb$Pq"&+5@!&b%!`by%&r! B!D!0z !8o@B!#&a%CB!Q"2@! 026@02!2@2+@Ž+"@!P\+@$@<($ !0  $Pb$Pq"&+5@!&b!`rB!BB%!b%%&r! B!D!0z !8@B!D%&]%!0B!Q"2@! 024@02!2@2)@Ž+"@!P\+@$@<($ !0  $Pb$Pq"&+5@!&b!`r&B!Q s&%&br >& s&B!#&CB!#&"CB!Q"2@! 02,@02!2@2!@Ž+"@!P\+@$@<($ !0  $Pb$Pq"&+5@!&b%!`b%&r#&B!CB!D! !0z !8{@ >&" s&b&B!Ur s&B!Q%&bB!%UbB!UrB!BB%!bB!%UB!Q5b&r s&B!Q%&B!Q5br&B!B s&B!Q" &B!Q5brB!BB%!B!Q5br&B!QB!B s&" &8s+@! r+@…@<$! $v'!0 @!V! T!(c$be$ B$!ծPs&®b"®bŎ®P …P⮀Վ b$ `#! t!v!(b$c$ B$$!PŎ …P⮀Վ b$ `#! t!v!(b$c$$@"!…!!!@&!Qcc$!@&"s&…c#s&"CB…!Q"2@02 @202!2@2$b@>">"B!Q"2@02 @202!2@2$b@&B!Q"2@02 @202!2@2$b@>">"B!Q"2@5#>"Q02 @0!2@# $2b@>">"B!U5#U>"&"2@! 02 @0!2@ !8< !8!@s&(! && &U: !@s&(! &&*; !8!@s& (q9 ! (s&! !(!06 !8@s&((s&s&"! !(!0`jK !8!@<<\ڥpڄ@ "!@<ƌ!(SH s&"<&ȃ'|V s&X ""2@! 02@02!2@2@s&""2@! 02@02!2@2z@s&""2@! 02 @$02!2@2$Hs&#"2@! 02 @02!2@2K@$H@s&#"2@! 02 @<0"Q!CF4@! B!>"F20%b$h!! E2 I !8!@@! B!>"Q#CF4@! B!>"F20%b$h!! E2 I !8!@@! B!>"QbF4@! B!>"F20%b$h!! E2 I !8!@@! B!>"Qb@ $A<a F4t@! B!>"F$b0H@$@<0+$$20%bh!! E2 I !8!@eR@! B!>"Qb@ $A<a @f4(! B!>"F!!  I E2!@<)@! B!>"Q@"X (D4"X s&B!B4"b<ڄB0@tY )!0B$ @"b$2H! @<0+$"<ڥ Z 0"s&20%b$h! E2 I !8@s&"*@s&"20%b$h! E2 I !8@s&"*@s&"20%b$h! E2 I !8@s&"*@s&"20%b$h! E2 I !8@s&"*@s&"20%b$h! E2 I !8r@s&"ns&"20%b$h! E2 I !8^@s&"Zs&"20%b$OhbF47@! B!>"F20%b$:hbF4"@! B!>"F20%b$%h$F4@! B!>"F20%b$h%F4@! B!>"F20%b$h&F4@! B!>"F20%b$h'%CF4@! B!>"F&9 &"P$2H! @<0+$"2@0$H@02@! @<0+$+F@@<$/ !0#!"@! B!>"Q! !(/? !0@s&"! !(? !0@s&"! !(C $@s&"<0B! !(4D $}@s&"b0@$H@bb0@$H@b@ !@[<0BVPC@! B!>"P! !(C $!@H5@! B!>"P! 7 !(!@;(@! B!>"P! !(!0> !8!@,@B!E(!0!>"C!! !(; !0!@@! B!>"Q!! !(_< !0!@@! B!>"Q`P4(! B!>"P! 9 !(@s&"! 7 !(@s&"@<,<@! B!>"P! 8 !(@s&"s&9 "! 8 !(@s&"8 ! !@@! B!>"P@$2b@! F !(!@>,&=H !(!@@! B!>"P! B !(@s&"!! !(; !0!@t@! B!>"Q! !(= !0!@ys&"2@$#H"@@! 8!(< !0!@ !@"P!! !(< !0!@=*@! B!>"Q!! !(W> !0!@.@! B!>"Q"P !0@s&""P!! (J !(!@@! B!>"Q!! I !(!@@! B!>"Q!! !(J !0!@@! B!>"Q! !(/K !0@s&"!! !(`A !0!@@"Q"P! *6 !(!@y@! B!>"P! P6 !(!@l@! B!>"P! q6 !(s@s&"! 6 !(l@s&"! 6 !(e@s&" !@L@! B!>"P"2S@Ž0+"@P\+@$@<<$ !0  $PPP"&bPB$Ps&""! (0# 8!@)@&(! B!>"Pc $@s&"! ! @s&"4! $!@ @! B!>"Q$2H! @s&"! !(!0!8`! @.!,tS"s&@"P! b !(.C  ! `"D@<840,($ H'' $!$\\!CDc$b(@$\?b\b\ b\3b\b\b\b\ b\b\b\Ab\b\b\b\b\b\b\b\b\b\1b\b\b\b\"b\&b\*b\ b\$b\(b\,b\5b\6b\7b\8b\9b\:b\;b\<b''!,$0( -B8T,!!& .!Z ! @@@!CB$&.!R#".0,($ 8''!! . '@! .B4 !(  (' $ŒB0C!Œ$B0 C$$$CB4/!!',!40($ !+B!@$<6$$$C\c0!CShb,@$_b70$b?$b$< BH/1&H0<@< $$/0<@< $$|V 1&*@&<$|V ؃';0!b2@$=!!`b0@$$f0 ! @$@>$`"!0 G< $! @@< $>!`#!b (''`ŒCc`Œp$Bcb`Œ&B&`ŒB$`¬z e$+#$'<i$B4$ %0C !8 @$!G!0E!@Œc$bh$ !Ec!'"1@!8@<$/ ! >($1b@(@<($/ ! >!0@<<,ڄB4$$%@C!(%$$!(謀 @$!E! Ic$be$!''$ 2B8R,b&B,@!!@! @!@< FlI>4FlI2 FlI2 FE!I!' ''lH  "F E<BDBDA4!8D$ FDJ$FDDDD4!8D FDD%C&c4JN  FJ FM  FJ FEO  FJ FN  FJ FP  FJ F0Q  FJ FR  FJ FQ  F F' ''lH  FExǜ*%x*FǤǨ8F4F4F6F2F F FS ǴǨǬǀ2Ft0F F0F.F8Ft2FS 2Fx FD!F8FXS \4F04X<(F\ǃE8<<"FxEDŽǘ8FX\4F:Fu FR ǬXǀ2F\LDLD5!8D$Q FD DMDMD!0`5!8D F0DD@DBF2*F Ex FN!F$F瀵&Fx# oDptx4F|! `2F8Fs F2FsF.Fs8F.FD Fx!F|DŽ0F!F FpPPTTtǂ&FRFtQ&F0F6FPPTT(F0FR F6FR(F(Fb(FB6FD2F0Ff Fs FS Ǥ FtLS #8F#LǤLǤdž FXR \瀑DŽXǂ8F\ǐǔǀ:F:F<4FEǤLS x$LǤLS $L(,048<@D'MD$$p@DHL5`*FhD EM4,FPDXDBE7`*FkE0  $e,)%U #P hDDPT@Dd0F@ <0F Dd.F@S%s,FŃ.F!BF@*F Y !Xldł@0Fef gX$F\`dǀ2F2F&F!*F10F1$F12F1"F12FD/N&Fhlc*FhDM)%U #P hD)%D(,xǁc*F|c*FS,Fp.FptǠt FFr2F,F"F  F!F!*FDŽǀ10Fǂ1$Fǁs F1*F1$Fs.F10F1$F1"F FB Fs2Fs(Fs,Fs&FD/N.F/N` F2`*FǔE"$<*F/N82`,FE!$<P*F8',@*FEu1W Uc FhD *FE 1 c Fb,F(,04(F8<$F@(FD&FH(FL$FP(FT&F(F$F(F,FDO,Fb,FX\`d(Fhl耐쀑$Fp(Ft&Fx(F|$F(F&F(F<@&F$F(F(FE(Fr0FB F(,r F1DO(FO@0FhD *FEc Fb,F(,X\ǂ(F04`d(F$F8<耐ǂ(F&Fhl쀑(F$F@Dǂ(F&Fpt(F$FHLǂ(F&Fx|(F$FPTǂ(F&FDŽ(F$F(F&Fnj(F<@&F,F(FE(Fr0FB F(,r FD%1(F F1P,F F,FP FhD *FEc Fb,F(,X\ǂ(F04`d(F$F8<耐ǂ(F&Fhl쀑(F$F@Dǂ(F&Fpt(F$FHLǂ(F&Fx|(F$FPTǂ(F&FDŽ(F$F(F&Fnj(F<@&F(FE(Fq0F1 F(,ǁq F1 &F"Fp$F,F&FD+Q,F,F,FD+Q0"FhD LP !FK!gmo$.%+@Hc$*x B$  $98ČX L$X] !0@`!@d840!(\i $048$A{$g0d# d@!( !`$#(#H$0bn#x* * !Exy!X%kl#hmP!(1!@d,0#((\i !0@0,$A!(@@$g0o$$xo-`y+'`km%#n! `|Y $$$0! `04X 8048$A!(@d!( \i !0@ !(@< $$< $<$$!$!!`0''!N0 !8O0gdg#8X0Y0 ! `(X ( dH0 b@i#8" $< $d !(\i $ A!G!@!G!`('!4$"p x @`!!   @`'(!40 ,$[ $@0$.!di @!@'ē'!8pi D] $$lX $@$lX $L'<|i !  R$Q|i ! R!@q$Q$L@lX $<lX $L4(,0P''ԓO0@!+$l1 + $ԓO0@p!$+3`+ $J!H$-$A,' $$,'!8!!0B$ A,  %o8!0@$#0Ԕ0M$5$`$$5$A$%A!(!J$ $A-$$-$AB$$$B$ A, !@!$B$ A, a( #!0(DD!( 5(DD"$<5( ! 䓋蓌@'KLD@"$$ Xi6$ XiY$ Xi$ Xi'<ƌk '% @@@bJ!(`,`-!jl c$ ` @X G %XhG @P %PH@H c$ O !pI!x`'l!p $%)%%;$ Xi@H'8 0P+8!H& PG'8 0X+8!H& PG'0@+0!PK'8@X Xf0+8 Xg!PF@ @S@ B B B B  B  B  B  S@ B J J J J J J J J J J  |J  tJ  S@J  R@J  R@J pJ lJ hJ dJ `J \J R@J XJ PJ R@J LJ HJ DJ @J 8J 0J R@J R@J  R@J! R@J" R@J# R@J$ |R@J% pR@J& dR@J' XR@J( HR@J)  @Q@J? 0Q@J@ JA $Q@JB  JC JD JE JF Q@JG  Q@JH Q@JI P@JJ JK P@JL JM P@JN P@JO P@JP P@JQ P@JR P@JS P@JT JU lP@XP@ LP@ @P@   4P@(P@P@ P@P@O@O@O@O@O@O@O@O@O@O@|O@pO@dO@XO@LO@@O@4O@(O@O@O@O@N@N@N@N@N@N@N@N@N@N@N@tN@hN@\N@PN@DN@8N@,N@N@N@N@M@M@M@M@M@M@M@M@M@|M@pM@ =  = = =| =x  S@ S@=t = l= l= l= l= l= l|= lx= lt= lh= ld||= l`tt= l\S@S@= lXR@R@= lTR@R@= lPpp= lLll= lHhh= lDdd= l@``= l<\\= l8R@R@= l4XX= l0PP= l,R@R@= l(LL= l$HH= l DD= l@@= l88= l00= lR@R@= l R@R@= lR@R@= lR@R@= lR@R@= lR@R@= l|R@|R@= lpR@pR@= ldR@dR@= lXR@XR@= lHR@HR@= l343H@  8   H@G@ S@ G@G@  G@ S@ H@G@ S@H@G@ H@  H@G@  H@0S@ G@  0 G@0 0 00G@H@  G@G@  S@ 0  G@ I@H@   (  ( 0  tG@tG@(JJ(J tG@ (J I@   B dG@I@  444 3@|3dG@3 4 3 S@   t J/ dG@ TG@   DG@TG@JJJ  DG@pph DG@ddh DG@``h DG@\\8G@ DG@XX8G@ DG@TT,G@ DG@PP,G@ dK@HJ pK@ G@J B H@d D J $  4S@D3I@ $    G@ 0K@  F@  S@  M@F@ <> F@> F@  M@F@ LM@>   F@I@ BF@I@F@(M@  B D 8 F@(M@ BF@F@  I@0\,F@DD  $ \ ,F@88  0 \ ,M@F@lF@F@LM@ J5 M@ M@LM@M@  K@ `F@0K@8F@ $F@H@ B$F@  B$F@     S@            S@      S@    B JUL@ J$ lP@  L@  XP@    L@  L@  L@L@    L@L@  L@L@    L@ 443343S@  L@ 4433S@  L@ 43  L@J    tL@L@L@    tL@L@    tL@L@tL@JJ JJ L@     dL@ L@    PL@ L@      44  F@  3 3   E@E@  HK@  HK@F@ F@  F@`    8I@  J@  p    J  J J BJ   X    ,L@  J,L@ B   ,L@ ,L@  ,L@,L@ E@   E@    E@ JJ E@   ,L@h |S@ ,L@h pR@J& E@J& J+E@J* I@ ( E@J. J. l l   l B  E@ I@ J@   E@43 E@I@ I@  E@E@    Q@ 4  DL@  3     DL@DL@      I@       DL@    DL@      4M@  lH@4M@  4M@4M@` BB ` B X B  = P B PX L@ B   BJ  J! E@J! pE@J! DL@ >J% \E@ J% H  LE@LE@  LE@  >2J%LE@8E@  8E@8E@  |R@4  4 4 4 3 R@ 3 3    3     L@        8E@L@        8E@  J%  2J%  E@ E@   E@ E@x   B   E@x    D@ E@   E@J E@D@  D@J JD@D S@D@ 4D   D@ 0K@D@    D@ @  44S@3|3 < S@   4< < D@ 4 B   4 S@ X4  B D@ 0K@4  S@XX444  S@3     4  X44 S@3  ,J   J \J (  J $J D@   J   J J D@J xD@ 4 4  4| 4 4t 4 4S@ 4 4R@ 4 4R@ 4D@ D@ xD@   xD@ D@ D@    L   D  J  pR@J K@  R@   J                            `D@  S@`D@   S@ E@ E@S@ PD@  @D@ J J 4D@J (D@J D@J D@      D@J `J K@      K@K@ J9J8J6 Q@  `` JJ PD@J' @P@C@ pR@C@ C@    C@ C@  C@ DS@  E@C@   @D@@D@  > 0K@443C@3  4M@C@ ``  Q@ C@C@ C@` S@ |C@C@`      S@ C@  |C@ `  J|C@ `   hC@ J J1 J1  \C@J1 J2 J2 J2 J2 J2 J2 J2 J2 J2 X J   > 4M@HC@ B HC@ S@ dK@HC@pK@K@ B,C@K@  ,C@   C@,C@ S@443\3C@ dK@,C@ S@4433C@ pK@,C@B@ S@I@,C@B@ B K@ B >  HC@K@  C@K@ B B HC@S@ K@  C@B@ G@   BB@  HB@ B@B@ J JC@ J' 43  B@ 43    XK@||  |  | |  K@  B@ B@  B@  S@  B@B@   B@4 S@3> B@B@   B@JIJKB@   JGJ 4 Q@3t JGtB@t  Q@ `B@ t JJt JKt B@t JLDB@ | S@   4B@DB@   B@ 4B@ ||  B@ A@  4 3 x  A@A@ tt t   B@    B@A@   A@A@   B@    A@A@   A@A@ J0  B@ B    B@   B@  A@       B@ B@   B@    B@ B@  A@  A@ B@pp    B@   B@   B@   B@  A@      A@ B@A@A@ A@  A@   B@A@   J     A@A@   A@  A@A@A@  A@A@A@            B@F@||    DB@F@hh  A@ pA@$F@F@  XA@LA@LA@  R@  D@@ T4  S@3 4  4   4  4 43X3 3 T3  @@ 3   HI@D@@ D@@D@@  t@@J@J@J@  @@  t@@ @@  @@ @@@@    43>   ?@?@|?@\J) 8  8TJ)     <  TPJ@ 43 TDJ@  T8J@ 43 TD  TL  Tt J@ Tt@@ J@?@S@ ?@  ?@ $ ?@?@ ?@?@ ?@   t?@h?@L\?@ ?@L?@ L?@  t?@h?@ ?@@>@H >@    S@ >@ 4 3 @  <    ?@>@   >@>@ `` J>@>@ `` ` hC@ S@ >@ X>@``H >@     4S@>@  3  <    ?@>@ `` S@ >@       @ ``  >@>@   >@>@884 >@>@ 88  >@    S@ >@ 4 3   <   ?@>@ HH  L?@0   S@ >@   $     ?@>@ ,,  L?@0   S@ >@   $     ?@>@(($ p>@>@ ((  L?@$   S@ >@ 4 3 p $   ?@>@   >@>@        \?@ ?@>@  S@ >@  <   ?@>@0  >@   h?@>@ ?@>@  S@ >@  <   ?@>@   S@L?@4 <  ?@>@4  >@   h?@ ?@>@  J   t?@     >@    ?@>@  >@  t>@    d>@>@  4  S@ t>@  3           ?@d>@ H` H`d>@ ` h?@d>@` ,G@(?@d>@  >@>@>@hh= J >@,G@,G@ J >@00 >@44 >@$$ >@ J >@ J >@ >@ ` S@ 4 4 3 t>@4 3 4  3 h   3 t>@4 3 4  3 ,G@      ?@>@ ` S@ t>@4 3 4 3 h  ?@>@ ` S@ t>@4 3 4 3 ,G@  (?@>@ J  S@ t>@ 4 3     ?@>@ J  S@ t>@ 4 3     ?@>@  S@ ?@4 4 3   \?@3 L>@>@   L>@``` L>@=@>@ L>@ L>@ L>@,, L>@HH L>@88 L>@(( t>@h    J  J   4t>@  3     ?@t>@ ,G@   J  J   d>@  t>@  t>@ J J  S@ t>@ 4 3      ?@t>@ J J  S@ t>@ 4 3      ?@t>@    ?@J)J, $>@8  8$>@ B t>@x>@xS@ =@ t$>@ ?@J) =@8  8=@>@xJ >@S@ x>@ =@S@>@  L>@ D>@ S@>@ =@t>@  LS@>@ =@>@ D=@`` S@Q@ X=@``t=@t=@t=@       t DL@=@tJ@ S@   =@J@`=@ =@ B=@J J=@=@ t=@S@R@=@=@J`=@=@`JL=@=@,J=@=@0J=@=@J=@=@`J=@=@8J=@=@4J=@=@(J=@=@J=@=@$J=@=@J8=@=@ =@  (=@=@ ` L=@  (=@=@ S@ =@   4 4 S@=@ 3 4 3   3 4  4 =@3  3   >  <@=@  S@<@  =@ C@  <@=@ ` S@ =@     L=@  <@=@ `J 4 L=@3   <@L=@HJ=@L=@=@(=@     J    (=@(=@ LtLDS@ <@t(=@    J  <@(=@   (=@<@     (=@<@  x<@, Hx<@  `=@J =@  `=@`=@ ` 4 =@  x<@ 3 <@`=@ D X<@t`=@JJ`=@`=@ `=@J`=@=@  S@=@D<@=@  <@  <@4<@<@  8=@ D <@t8=@J  8=@ ` 4 =@3 <@<@   JJ       4 3        <@<@  B<@  JJJ<@  S@  ;@<@      `      ;@;@      JJ         ;@;@  J J J  J  J      ;@;@    =@    ;@=@=@;@       ;@ B    ;@   D<@J J  D<@J J  D<@J J  D<@ D<@;@D<@;@<@J J  <@ <@;@<@J J  <@;@<@J J  ;@J |J  ;@xJ tJ  ;@pJ lJ  ;@hJ dJ  t=@`` t=@TT t=@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@ 4<@`` 4<@\\ 4<@XX 4<@TT J@  t;@?@  ;@?@  ;@?@  |;@;@  $ L ;@;@ x;@ LJ J x;@  d;@LL d;@  Jd;@DD< Jd;@ P;@ P;@JP;@P;@ JP;@ JJ P;@P;@JP;@<;@ B l;@ < B <;@  <d;@;@   ,;@;@ < B 4  d;@43  d;@< S@  ;@< S@l;@ L I@ > |  S@  4 4  S@ 3 4  ;@L>3 |3  `;@  S@ ;@ `;@ tL ;@t>  ;@t ;@ ppLJ  $ L  ;@;@ LJ  :@ < L   ;@;@  ;@<>  ;@L x;@      x;@;@ < 44  S@ Q@34 d;@433 d;@<X;@  ;@       ;@ 4    3 I@ \ 4   3 I@ X S@x;@ ;@X;@  x;@     ;@ 4    3 I@ T 4   3 I@ P S@x;@ X;@  ;@ x;@     ;@ 4  4    3   3 I@ p 444  3  3I@ `344  3  3I@ d S@x;@ X;@  :@  X ;@   x;@    ;@ L  ;@    ;@:@ 0J     ;@:@  LJ  L ;@,;@ < BJ     44  S@3 3 4 3    < d;@,;@ S@;@`,;@ L  ;@43   ;@;@L J;@L J;@L JJ;@ppL JJ;@|D  P;@;@ 44  S@34 4  P;@ 3 d;@3:@ 3 4 4 P;@ 3<3 4 4 4  4  P;@ 3 3 d;@3D3 |   :@< S@:@<@:@4 :@4<@:@ :@ :@ D<@:@ :@ :@ 4<@ ;@   J ;@ JJJ  ;@  < L   ;@:@ BJ <;@:@ J:@ J  :@ < L ;@:@ J  < L ;@d   ,L@d hJ@tJ@tJ@  :@tJ@ :@xxB t:@h  ,L@:@xx  ?@t:@hS@  ,L@:@ x :@t:@  S@ t:@  t:@t:@     JBt:@  d:@4  P:@3     d:@t:@  S@ t:@| | t:@t:@  ?@P:@  d:@d:@  (Bd:@  $Bd:@   (BBDd:@     JBDd:@  Bd:@  Bd:@|   BBDd:@   D`P:@  BBP:@ d:@  S@ d:@  d:@d:@ hJJ  D @:@0   t:@@:@  B@:@ ,:@,:@  :@$F@K@  $F@K@ 9@S@ 9@ \49@3J@ <9@  =@J 9@     9@9@ 9@ M@9@J 9@9@  S@PJ@D9@9@  9@p9@\9@443834PJ@D3S@9@9@  8PJ@p9@  PJ@9@ p9@ 9@ <T43| <\9@ S@\4H9@D3K@ F@\9@DD D  PJ@H9@``8 H9@D  K@`\H9@  \4\4H9@3K@3K@` $9@ <K@XX   B 9@ 0K@X  44344 X3S@3D389@8@ BX8@ S@ X8@ 8@  X8@  X8@  X8@8@ S@H@ 8@  S@|K@9@4434 4  X3 S@3D38 pK@8@  S@,9@4434 4  X3 S@3D38 dK@8@ B8@8@ S@8@8@  8@8@8@ 4438@38@  >  DL@  9@        8@9@        8@9@D 9@8 8@8@ D 8@ 9@ X8@            t8@8@d8@t8@  S@ 9@ Xt8@    9@d8@   9@d8@    9@d  PP  B 9@ 0K@P  4434 4  4  4   P3 3 D3 S@3D38T8@T8@            T8@T8@D T8@            D8@T8@8 T8@8 48@D8@              $8@D8@    T8@D8@     T8@$8@  X T8@ T8@       T8@ D T8@    T8@T8@              8@T8@     T8@T8@  T8@  48@8@                 8@8@      T8@8@       T8@8@  X T8@ T8@       48@P48@ S@ P48@ 48@ 444 4   4  4  4  3 3 3 D3 4  4  4  3 3 3 D344  4  7@ 3  34  3R@`3 M@3F@4 4 3 34 4  >3 R@`33443F@437@3444333D 44 4  3 33D  7@   P  7@   P  7@   P  7@ S@D4  |K@  T8@    4 4 3 4  4 44P 33D3 S@3  D3  837@ pK@7@ S@D4  ,  T8@    4 4 3 4  4 44P 33D3 S@3  D3  837@ dK@7@  B 4  37@  D7@ S@8@7@  7@8@\  7@\ 7@ 7@ 7@7@  7@4h7@3 7@ B 07@ 7@ S@7@ pK@7@ h7@  H 6@ S@ dK@6@ 7@436@ S@ 6@6@  6@S@  6@6@ x 6@ 6@ JJJ x D  6@J x   T x 6@H HI@L x 6@ HI@DL6@=@=@ 6@L<  46@  x6@ 3x HI@K@  x> @H@  @ >x6@   HI@K@ d6@HJJJ JHJ d6@ K@JpR@4  x6@x6@ d6@ ,  6@T6@6@6@ HJJ ,I@  4 3x      ,I@J ,I@J J,I@$    dK@S@D6@  $  $6@ D6@ K@ D6@ HJJh7@K@ 6@  5@$K@  6@5@ I@K@  6@5@5@ I@5@  $K@48J@5@=@S@($K@435@35@  x5@J) 5@8 I@5@xxd5@5@ 6@ M@d5@x5@d5@x5@d5@K@K@x5@d5@M@     dK@S@4   T5@3       pK@S@H5@4   85@3  T5@ tJ@43x,T5@ B85@ tJ@43x|K@85@ B     d  B5@  44XK@4   34 3 34   3 G@34  H3       5@    5@ M@  4@   > M@  4@4@ ,  x   HI@   > 4@   5@> 4@4@ B 4@ 4@ 4@4@4@4@4@4@4@  8 G@ p4@ 4@p4@   B \4@p4@    |K@|K@  |K@|K@     G@J B   @4@@4@       ,  $4@@4@@4@$4@  x B B $4@5@5@   B x pR@\4@   J \4@\4@4@  HR@84@(8   I@4@ 3@  8I@3@=@=@ 3@ 8I@3@ 3@3@xx  4@3@xx  d5@  3@   4@XK@  XK@XK@J'   3@  444 4  4  4  4  3  3 3@  3   3 4 4    3 $3 4    3  4  3 XK@  3 334M@  3@          44 S@3@  38      3@   3@3@ 3@   J 3@3@3@3@ 3@   x3@  3@  3@ JJ  3@    3@         3@3@  3@  J  3@3@   3@t3@ S@   d3@t3@  P3@ 0K@d3@  B    =    d3@        <3@d3@  d3@J  B    =    d3@   ,3@  d3@          <3@d3@    <3@ B              S@  4  <3@ 3 >  <3@  B                  J    <3@<3@    ,3@   ,3@          S@ 4  ,3@3    ,3@  ,3@,3@           $ S@  4     4 4 3@     S@2@    3  3 3    HK@      3@ 3@      S@3@  2@2@ 2@J BJ2@2@JJJ2@2@  2@ 4 3    2@2@   J2@2@  2@   2@   2@   2@HK@    B 2@ S@  2@HK@  B HK@  S@HK@     2@HK@  x2@   x2@  x2@ J   S@ x2@         HK@2@  2@  2@   2@  2@  2@ B$2@ 2@  2@ 2@ J  S@ 2@   2@2@ 2@ 2@ $t3@  S@   S@ h  0K@d2@   3 3 3    HI@0@        4 3   43 0@444S@3  343343   0@p0@   dL>43H \0@4  3    P0@<0@   dL>43H \0@4  3    P0@P0@ ,0@    0@  \0@    0@ 0@0@  <0@  /@ 0@  S@ XP0@4  p0@ 3d@ ,  F@ 0@  | S@   /@    0@    /@ /@    /@    p0@  /@    /@             /@/@ B  /@/@  /@ S@S@ d>4 3 8 /@    P0@/@  /@    /@/@  S@x/@   F@/@  | S@   \/@   /@    D/@ \/@     S@ /@          /@/@    B B 4/@/@4/@4/@  P0@4    P0@4   0@@  $/@4  0@ 33 d@>4 3 03 d>4 3 0      $/@/@ /@  x/@ll  X     X /@   .@4.@ P0@4 /@ 3dl>3    x/@    X   X  .@    P0@4    /@  3 d(>>     .@  .@    B   .@  B  d>4 3 0 P0@4 3d@>430     P0@.@     $/@.@   B   .@ .@  B   .@      $/@.@  .@   P0@4  3 d>4 3 0    $/@.@  J  .@J J J J  P0@4 .@ 3 d          .@.@ J J J       .@      $/@/@  J  /@J J J  S@ ,0@  P0@4  /@ 3d 4  3 X      .@/@  J  /@ J J J J     /@    $/@$/@    B  $/@    B  $/@  | S@    |.@   l.@     |.@ P0@4   X.@ 3 d L.@4 3        ,0@<.@  J  <.@ J J J J     <.@    0.@0.@    B  0.@    B  0.@  | S@    .@   l.@     l.@ J JJ J     <.@   0.@l.@                <.@.@ -@   P0@4 X.@3 d L.@4 3       ,0@X.@                -@-@  J  -@J J J  S@ ,0@  P0@4  -@  -@ 3d        .@-@@@ -@   -@-@ S@ L@-@ -@@@@ -@ .@ B   .@.@ B   .@ 0@J    0@  HI@xx xHI@x 0@   -@-@  -@ d    d  -@      -@-@   B -@      B         -@-@  x-@-@    4 3 h-@ x-@  JJ -@        0@   X-@H-@ J X-@  X-@  8-@  X-@   -@ -@dd  B  -@ -@  -@  -@  -@@>@  -@ J 8-@ dd.@X ,@4343>    H-@8-@dd.@=    H-@8-@ ddX ,@,@    H-@8-@ dd=   ,@4 3 H-@,@ @@  4  >3 >J,@   4  >3 >J,@ ,@J  ,@J  ,@ ==0@ J 0@ J J  0@   ,@,@ ,@  ,@,@  ,@ ,@    ,@ ,@ ,@4 4 4 3  3 3   ,@,@ ,@l,@S@l,@,@ S@l,@,@ S@l,@,@ ,@ J ,@ J l,@  J J 0@  0@ 0@  X,@X,@ dd=   S@    D,@X,@  D,@  B 4,@   $,@D,@  BJ    $,@D,@J    4,@4,@     J  4,@  $,@    $,@ J ,@xxx +@ G@,@xxx S@ +@+@ B +@ S@ +@+@ S@+@  +@+@ @X B *@ddX B *@ *@   d   *@)@  *@ *@@@ *@)@   4ddd3  )@   )@  444 3tJ@3)@3$ 443tJ@3)@ )@ )@  )@  )@        )@)@   )@                 )@)@ dd     t)@ d 4  3 H  )@    )@ dd     d)@ d 4  3 H  )@>    )@ B    d    S@4)@4>343dt)@>3dd)@43H        P)@)@   J  )@     4*@  )@<)@8S@   P*@4*@ ,)@ )@  )@ dd  S@  (@<)@ dd   S@ D     (@<)@8 P*@   (@ (@   (@(@  (@ dd d J (@XX(@(@ 00 (@    )@(@88(@(@         (@(@ .@  S@(@`1@(@     (@(@ @@>@|(@  (@ |(@  (@         (@(@ .@  S@ (@ `1@(@   .@  .@ (@(@d (@l(@\(@H(@H(@  8(@  )@8(@|(@|(@    H(@8(@   l(@  ,(@  \(@,(@   (@    DG@ (@ @>@   S@ (@ (@ (@ LL@>@   (@ '@ (@   '@  '@ (@    (@(@    DG@L.@ '@  S@      \(@(@   '@   DG@L S@ \(@  \(@'@   '@   DG@> S@   '@   \(@'@   '@   '@'@   ,(@  \(@'@ S@ '@'@  (@  (@   ,(@   \(@DG@dd=     DG@   h?@d '@ dd@>@'@ dd '@dd@>@ dL.@d.@(@ '@'@@     t'@(@ d'@d'@     t'@(@ X'@X'@@     t'@(@ L'@L'@     t'@(@ <'@<'@@    |    t'@(@ ,'@,'@    x    t'@(@ '@'@   xt'@(@ '@ '@    t   t'@(@ &@&@   ht'@(@ &@&@    d   t'@(@ &@&@   `t'@(@ &@&@     \     t'@(@ &@&@    \   t'@(@ &@&@     X     t'@(@ &@&@     T     t'@(@ &@&@   P   t'@(@    L   t'@(@    H   t'@(@ &@&@     D     t'@(@ |&@|&@          t'@(@ l&@l&@          t'@(@ `&@`&@          t'@(@ P&@P&@   t'@(@ @&@@&@     t'@(@ 4&@4&@     t'@(@ (&@(&@     t'@(@ t)@t)@       &@(@ d)@d)@       &@(@ &@&@   t'@  %@(@ %@%@    t'@    %@(@           t'@(@ %@%@ t'@ %@(@ %@%@ t'@ %@(@ %@%@ t'@ %@(@ %@%@ t'@ |%@h%@     8L@4   t'@  3  4   4  3 3    %@%@ $dM@ M@%@ $ M@|%@ $XM@ M@%@ $ M@F@   M@&@  &@  &@H  S@      S@ P%@       <%@&@  P%@  S@ t'@  0%@ D  P%@ ||       %@P%@ 0%@D  |   t'@4 3        P%@  t'@  J #t'@  J J J  t'@ ||      %@t'@       $@$@       | d d   $@   L $@1@   L $@1@||  x $@1@ $@  $@$@S@$@,$@,$@ $@ $@$@$@,$@ $@  $@$@,$@ $@ E@   $@43 5@ $@ |$@4  d$@S@ $K@43T$@3 |I@  $K@E@  @$@ PJ@5@ $F@0$@ $@ > 4M@4 4M@4  4M@4  $@ 4M@4    4M@4 4M@44M@4$K@43 $@4444|33333>3>3 >3   >3 >3 >3>   4M@#@ #@#@  #@#@  #@ 4 3#@ 0$@#@  #@t 2@$K@4   #@       $K@4  3 T$@ 3$@43   #@ #@l d  d$@#@ #@| #@#@ d$@  1@4h#@34343d` P#@P#@|| S@ t1@P#@|$@h#@|| 8#@h#@ 1@ 4*@1@ 4*@1@|| |4*@1@ *@#@ p| S@$@  $@ #@#@   4"@S@44  "@3XR@3 "@3H@ LA@  K@#@ #@"@      S@ 4    4    3  3    "@  J)  #@    "@J) "@S@(8 8"@ "@JB  #@ J) J@"@S@(8 8"@=@=@ "@xx  t"@"@  x  L2@"@ S@t"@43D X"@"@     |$@X"@xxdK@X"@dK@|$@  )@ L2@   D"@t"@0"@t"@0"@t"@ "@ "@0"@t"@0"@t"@K@K@0"@t"@\\ \t"@(M@(M@ (M@t"@$$ $t"@  44 3|3 h%@  t"@"@"@ |$@ !@!@!@!@ 0$@ !@ !@!@  (S@ (  !@ !@ x ($K@!@$K@44303x !@ :@ l!@ !@ :@l!@  t 044 S@3 S@343 0"@ J) $K@4#@ HR@  $K@4 3 `4   3 `!@3X4 3`!@  I@D"@  L!@ ,@ *@  lF@L!@xx xL!@xx xL!@x 8L@  8!@8!@    I@   I@  (!@  (!@ (!@pI@  PH@8!@0  !@#@TI@ 8L@4 l344 4   4  4   4  3     ,    (   $ 3                      3    3     ,     $   3,H@l<$H@l<3, ,  pI@!@  <   @  !@  !@x  X xx  txx  \H@      |               @ 4 4  @ 3 3   @ 4  4  4 3  @3  3    H@  I@ 8L@4    @ #@      4  3  3      @|| 43, $@ 8L@ @    #@      @h    @     l  l  8L@4l343   I@x @ Q@ Q@ S@  x @   |I@   $F@d @ |I@ T @  $F@T @   x @  d @  d @I@  I@         |I@   $F@H @4M@8 @ \H@  \H@\H@  ( @   @ PH@    d<%@  ( @S@   @ <%@ S@ t1@<%@|| %@ @ @  S@ @   @ @@@  @  @@   (B B B B B B B @@  43  4  8!@4 3   4  4 4 4 433333    3 `   $@ %@  S@@ 8#@4  @  H @        t@   3 4 3 H  d@ %@  S@ @  @   P@H   H @ B   @  `4    3 4  I@ 3   I@     I@     I@  8#@ HR@    1@@ 43\J@ 8#@#@ S@8@ t 1@#@  8@8@tt H@@@@@1@@@ 8 @8@ll p@ d@ T@  D@D@   L 0@  $@ $@ @   $@ @  B  @@  @ @ S@    @ J @@@,'@x L   @ 8 @( L  @  L  8@  @ L   @ 0@ T@@ @ T@p@ 0@ @\@ @ @L@ 434430@>3>  @0@ @ B T@0@|&@    @@@ B T@@&@    @@@ B T@@ '@    @@ @ B @@ ,'@p@@ x@ B @@ <'@\@@  S@S@8#@4344 4 3 33l@  d @ d@t)@t)@  t)@@\@ P@d)@d)@d)@   D@     @ @  @d)@   \@@ &@&@   &@   p@@ &@&@     @@ @&@@&@L@ L@@ P&@P&@  P&@   @  H  p@@ L'@L'@ L'@@@ d'@d'@ d'@@@ ,'@,'@    @@ '@'@    @@ &@&@ @@T@@ &@&@ @@T@@ &@&@ &@@@ (&@(&@  (&@L@@ &@&@ &@@@ 4@ T@@ (@ T@@ |&@|&@     0@@ l&@l&@ l&@@@ `&@`&@ `&@T@@ &@&@ &@T@@ '@ '@     @@ &@&@   &@   \@@ '@'@ '@@@ X'@X'@ X'@@@ <'@<'@    @@ 4&@4&@ 4&@@@ %@%@ @T@@ %@%@   @@@ %@%@   @@@@ @@@ @@@ @@@ @@ @|| @@xx @@tt |@hh@ @dd t@`` t @\\ tp@XX t@TT t(@PP tl@LL @p@HH @l@DD @h@@@ @@<< @@88 `@44 @@00 X@,,@ @((@ @$$P @  H @@ @ 8@ 0@ @P)@%@%@ J P)@%@%@ J P)@%@%@ J @  T@@@ @t@ @( @  @h@ @||\@ @xxP@ @tt@@ |@(#)pow.c 4.5 (Berkeley) 8/21/85@(#)log__L.c 8.2 (ULTRIX) 10/23/92@(#)exp__E.c 8.2 (ULTRIX) 10/23/92Unknown error: illegal option -- : illegal option -- : option requires an argument -- : option requires an argument -- @(#)data.c 8.1 (ULTRIX) 9/18/92@(#)times.c 8.1 (ULTRIX) 9/18/92@(#)fprintf.c 8.1 (ULTRIX) 9/18/92@(#)sprintf.c 8.2 (ULTRIX) 8/16/93@(#)calloc.c 8.1 (ULTRIX) 9/18/92@(#)malloc.c 8.2 (ULTRIX) 12/23/93@(#)scanf.c 8.1 (ULTRIX) 9/18/92@(#)signal.c 8.1 ULTRIX 9/18/92@(#)strlen.c 8.1 (ULTRIX) 9/18/92@(#)fclose.c 8.1 (ULTRIX) 9/18/92@(#)filbuf.c 8.1 ULTRIX 9/18/92@(#)flsbuf.c 8.1 (ULTRIX) 9/18/92@(#)ungetc.c 8.1 (ULTRIX) 9/18/92@(#)fopen.c 8.1 ULTRIX 9/18/92@(#)getenv.c 8.1 (ULTRIX) 9/18/92@(#)fseek.c 8.3 ULTRIX 12/1/93@(#)ftell.c 8.1 (ULTRIX) 9/18/92@(#)system.c 8.1 (ULTRIX) 9/18/92@(#)ctype.c 8.2 ULTRIX 7/30/93 ((((( AAAAAABBBBBB @(#)atof.c 8.2 (ULTRIX) 3/16/93@(#)errlst.c 8.1 ULTRIX 9/18/92ĵе <PdtĶܶ 0@Th|ȷط ,@XtԸ 8TlԹ@dк0Dh|Ȼػ(DXh|Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough corePermission deniedBad addressBlock device requiredMount device busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRestricted operation on file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketProtocol not availableProtocol not supportedSocket type not supportedOperation not supportedProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathNo message of desired typeIdentifier removedAlignment errorNo locks availableFunction not implemented@(#)time.c 8.1 (ULTRIX) 9/18/92@(#)doprnt.c 8.1 (ULTRIX) 9/18/92InfinityInfinity 000000000000000000000123456789ABCDEF0123456789abcdef+InfinityInfinity-Infinity+InfinityInfinity-Infinity@(#)doscan.c 8.2 ULTRIX 3/19/93@(#)getstdiobuf.c 8.1 (ULTRIX) 9/18/92@(#)findiop.c 8.1 ULTRIX 9/18/92@(#)doopen.c 8.3 ULTRIX 9/10/93@(#)strncmp.c 8.1 (ULTRIX) 9/18/92@(#)_locale.c 8.1 ULTRIX 9/18/92A?(@N4}W+??B$q?UUUU?]4+ga=Zܜ >Ect*a? UUUUUſ.Y`;!>O~q>AlV>UUUUU?M`m ???@?Oag?q2%;TU< s?#|-DT!?Tt!Ր?zlʢؽ$?%᭿Y$ ?ľT]ZE?q$I?|ɿUUUUU?-DT! @0>d浽Kn7'9dN$@oY|b@ڦ,CHVw 6L@COz@b :U^;̇+>dxG8`|C`<PC<%s halted[].-$empty<=>calltruemainseemarkopmarkxfxxfyyfxfxfyxfyfinfixopuser$floateditversioncodeboardchoicetrailheap%u(%75)%s/%ldunify %s/%ld %ld%s%srb??? %s systemuserrbwb%ld(75%)%ld%s@%fuser_bpctrue_(@var_1()cnl_1()lval_3val_3set_3()rm_2()def_3()arg_3l_neg_3&!=<=rel_opget0_1fdiv_3div_3% "));long "}};[] = {"user_bpwam_bp}, {"},,"500100000xxVISUALEDITORls -tF.asmproject.bp.c119110120100104dcg.plread.pllib.ploper.plinit.plbeginend$end0footerheadertotal$end1to...offsetaritync_flagend_?get_cutput_cutcut256mem mode116117prologvaluevoidoccat$OCCpushunifyloadinlinetempcutargbuiltinlenc_chunkdictexecuteiiBINARY:binwam.hcwamsorted$usedlinear$closed% timefound$dbref$lastFail: Call: Exit: Redo: CUTgoaltop?- init_io$end:- ->; ( , :- 700otheralphaquotepunct12696949225524824622322221621419290122token951251241239391-199999bracketfollows10001100withcontextprefixlist|]|in,)anstartcannotstring}{(()][999apply(after=> :-...library-->>{}@@:--->killcdaccessgetenvargvargcHOMEST101eboxculprit$floatBP_PATH979810510899115103111114112121109$VARvarss1200?-1199nocontyes$firstyfxffyfxyfxxfxinfixopxfy10000opmarkcurrent[]*** : >>> userprettybasicbboardhtablesymbolsstringscodetrailruntime:Csavedphrasefalsenospyspyingspygensympublicmodulesmodulelwritetr_bodydo_bodygc_readbootctracetmakekcmakekmakecmakemake0makedirlscovinotepadpicoemacsedmy_editeditopswritesreadflushtell_atsee_attoldtellingtellseenseeingseettyprinttynlttyputttyoutttyinpp_termportraydisplaywriteqprintwritereadnlmainerrmesvars_ofnot^setofbagofkeysortsortbb_listbb-:assumedassumelassumei=>listingconsultdebugabolishclauseeraseretractassertassertzassertadynamictracesystemunixaproposhelpctimeacosatanasintancossinexpsqrtlogpow:=:letbb_letbb_rmbb_valbb_setbb_def=\==:=>==<><@>=@=<@>@<\====compareexprisgettabappendNnumberfloatatomgroundgc_calllength++memberappendargnforwhileallfindall\=\+repeat,;->=::-=..asmtermcatiforincludecompile.!bu1174n_nop160n_arithbu_ctrin_head8584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111098arith765432in_bodybu0if0profilestat0shellnamefunctorrestartabortcallhaltquietunix_cdsetrefbb_opbb_getbb_putiso_eofdcg_valdcg_defop0symcatlvalvalsetrmdefsetargarg\#\//\>><<less_eqgreaterless0putget0random///mod*-1+atomicintegernonvarvarcnlcwrite_failtrue?$cutHB.?v%s / o "oA " ot m(// 1倐///1 HzHy(NNr$NuH0 &/$/B9/B// ENNXO.B/NXO.B/NXO.NNPOPOL NuH0 $/"/B9/v/B// ENNXO.B/NXO.NNPOPOL Nu[].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatH0>$/ &/$BHzBENN#HxHz/N#HxHz!N# BHzN#BHz N#BHzN#BHzN#HxHzN#:BHzN#>HxHzN#BHxHzN#FHxHzN#JBHzN#NBHzN#RBHzN#VBHzN#ZBHzN#^BHzN#"BHzN#&BHzN#*BHzrN#BHzgN#BHz\N#BHzQN#BHzBN#.BHz=N#2BHz7N#6BHz3NKb*#r#nG#M#BHzN#fIB////9RGNNB////9VN$.HzN#jB##POL| Nuediteditor_programbp_statenoname.pleditor_fileversion/ /BHzHzHzENPOXOJg6HzHzHzNPOXOJg HxYHzHzNPOXOJVI$D $$_NuHx//NPONuNqHx//NPONuNqHx //NPONuNqHx//NPONuNq/$/ /NBXOo @ XHRn$Nu//N @C XONuNqH0 $o$/&/ / $%CoB`NJf /NXO%@ Ъ"偐%@%j%j %jB%o JVIDL Nucodeboardnot enough common memoryH00&oBHzHx/9 / EJNJWI$DNJfRNG/9N#v#zfRBHzHx/9HkNJfRHx/9NPOJfRHxHx@NPOA fR PYH#XOBNJg NJfvԃgHz NXBXO`pL Nuadd_engine: engine table full/"o"/ A 9bHzNXBXO`(X y i t i$/R!Bp$Nu /"<0|?쀲o l NuNqchoicetrailheapmessagesadd_engine failednot enough engine memoryH80&o(/$/$BHzHx//,HklErNJWI&DBHzHx/HkHNJfRBHzq/N ./Hk$NJfRBHzTHx/9$HkNJfR//,//,/ N POXOJfHz'`JgHz/NXBXO`pL Nu / yCʱbfpNuXHcBNuNqdel_engine: engine notfound/ /"yEʳb gXIcHzNXBXO` y"Yp$_NuH> ,/*/ (/$&/(Hx$HxN$POfB`PBChA( $Rrl/Hx////N lJVIL|Nu/ / &o / N ~XOJg*/+|EN/+XN/+4N/+N/ Np`B$_&_Nu /fNr Ёfp /NXONuNqNuNuh:s:t:c:b:d:a:i:q:%u [wam.bp][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS]usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD]%s %s%s NVH08&n(n BEvgHz2/ / NPOXO gIve0; NL(VHnHz/9NPOXOJg .#`HnHz/9NPOXOJgh .#`ZHnHz/9NPOXOJg: .#`,HnHz_/9NPOXOJg .# `HnHz1/9NPOXOJg .#`HnHz/9NPOXOJgpЮv ep&.#`HnHz/9NPOXOJgrpЮv efp&.#`XHnHz/9NPOXOJg: .v #`,HnHza/9NPOXOJg# `JgRSfJg*Hz,Hz2HznHzHy(NHxN. 9Bo"4 L N^NuBinProlog %d.%02dHx-HxHzHy@N <@POPONuNqCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s <///9HzHzHzjHzBN/HzHy`N <`(NuNqH< */(/$<`##N#//N \&N/HzlNXEB/NJg //N//N`POPOJfB`6BN /B/9/9/9/N lJVIL*o,,o0E$$$(d&JYJ(JYJ`g(B$g`g &C&ggpfdfetprf rg"B"`"B"d"-P\e HzP/ Hx/NHx N. mP XP`fxȃfXrf rg"C"`"C"d@"-P\e Hz/ Hx/NHx N. mP XP`gB`rfrge Hz/ Hx/ NHx N.d>"mP\eHz/ // NHxN. mP mPC!IPP&XJ C$Ћ$Sgl GAXJ$$YKYHSf`NpL|Nu*** bad instruction: [%lu] *** o"/HzHy(NHxN.POPONuNqundefined in EXEC//&/ //9NN$POf//Hz/NPOXO $&NuH8&o k|'kXP(k4E C"%IXI%y>p!Yf!I!kP / //// / NJWIDLNu//N/NPONuNqH 8&o$/$o$(o('o'y>/9:/9NNrPO%Yf%B%lP$/ / /// NLNuload_engine: bad engineH0<(o$/ / N :XOJfHzNXBXO`$l|)lXP"l4G K'B'y>/9:/9NNrPO%Yf%M%lP$ lv l!B l!o$)M,)Jt l!@ L< Nu o/(/( hSH/NPOXONuNq/ $o/ N :XOJg& j/ /*t/(/*,r Ҫ4/N`B$_Nu/ $o j rg/ NXOJfB` r j ($_Nuanswer: bad engine typeH8"o"/$/&/ i xeT0; N8L$l.8 ix ` ix `H ix ` ix `4#A,#Bt i!C `"/ Hzn i/NHxN.POPOBLNu*** suspend_engine: %ld bad engine type %d /"o"/ i tg&// HzHy(NHxN.B`t #A,#ot i!o $NuH00$/n$<@AC"bB`&QXKb"H$S j rfr XKc&yXKBSrgV$S j rgrf / NXOJf j rfr! f JgB&yXKQBBSdpL Nuunexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationH<>(ot*ox&o|,oBh/Kd(  b'0; N\p4l f F N2F |  $* X  x"B *n P   $ V rN , R~DdVBZXP">Zx dL!, !J#  6  l "#z#N##"2""d"#''''''''''"'"'"%X$,$b$$$%%&%&2&L&`&&'2'~:Lfp~Jhg z)h`:* z)` lJhg./////p z/4N:POPOJgXhXK`2 z*` z$t* g$ `$fg $B$gflBhdN o"hP o\e(Hz4//Hx o/(PNHx N."o/iPT oT XP$" PcY*A`f`* z)XMPK`d"z)`*"z))` >////4 z/4N:POPOJgX`"z)(+")`~Jhg z)h ohXH)` z)*E)$`Jhg&/////p z/4N:POPOJg` z$M$)$`Jhg>/////p z/4ENPOPOJg|/// opXH//4N`: z*`LJhg: z)h/// opXH//4N:POPOJgPh` z)*+tPM`|Jhg ohXh$P* g$ `$frg $B$gf^$d o"hP o\e(Hz//Hx o/(PNHx N."o/iPP oP XP`fZ` z$t$*`Hz@`"4 z$t* g$ `$frg $B$gf^$dL o"hP o\e(Hz//Hx o/(PNHx N."o/iPL oL XP`f` z)` odRH*`,od`$l* g $ `g $B$g,BSN`&k* g/// Np&@POJg /Nd o8e` d/ // //N*@POPOJf!&V`&k/Nd"o8d .$l* g$ `$fg $B$gg //+N&@POJgXJ/Jh`&k/Nd o8d $l* g$ `$fg $B$gg/kX oXgPKPK`"oX() zA)C)PJXJ/Jh oXG ` z$t* g$ `$fg $B$gfBhdN o"hP o\e(Hz//Hx o/(PNHx N."o/iPH oH XP$" PcY*A*(+ z+tE)$``f@/Jh(+///Hj z/4N:POPOJgA)` z$t* g$ `$fg $B$gfBhdN o"hP o\e(Hz//Hx o/(PNHx N."o/iPD oD XP$" PcY*A*(+ z+t`\fF/Jh(+///Hj z/4N:POPOJg` z$t* g$ `$fg $B$gfBhdN o"hP o\e(Hz//Hx o/(PNHx N."o/iP@ o@ XP$" PcY*A$M$(+ z)$E)$`hfH(+ zA)C)` z$t* g$ `$fg $B$gflBhdN o"hP o\e(Hz//Hx o/(PNHx N."o/iP< o< XP$" PcY*A`~f~/Jh(+ zA)///Hj/4N:POPOJgFPJXJ/JhPKXK`* z)(+E )$E)$`* z)(+ +tE)$`* z)(+ +t`* z)(+E ` z$t$$M$(+ z)$E)$`~ z$t$*(+ z+tE)$`N z$t$*(+ z+t`" z$t$$M$(+ z)$+tPMXMPKXK`&k/Nd o8d($z oeHz//Hx/` g -YfM, -M"o-iP,`$z,/. o/(PN"o#@P*n"p ЁPOJg )Yf/NdM, `~$z/. o/(PN"o#@P*n"p ЁPOJg )Yf/Nd`8Hz`Hz$`Jhg$z ohA,/Hh`>$z$M K,SJg(E, $YJSJf`$z D) `$z)B$t* f"`g $B$gpzf zg)J`)B`$t* f"`g $B$gpzf zg)J`)B z$t* f"`g $B$gpzf zg)J`<)B`4&z$t* g D) `g $B$g"Dpzf zg)`)`&z*"D))XM`$l* g $ `g $B$g//9NN&@(zPOJf /9J`pJg2 Sg )Yf$2Lpzf zgEL$ )L/Nd o8el`$l* g $ `g $B$g(z"R 렂//9NN&@POJf /9F`)LSg2 Sg )Yf$2Lpzf zgEL$ )L/Nd o8e`R$+//9NEN&@POJf&//// / N{*@/9F/9NN&@/Nd"o8etHz//Hx/ NNrPOPO`//N`x o/h8"o8 g.!M,!Nt/h4 o4!K"o/iXz! oX B`HxNLN&@/Kh"o,i|#iXP o h4I K*)MXM)y>pXO-Yf-M"o-iP,`$+/////lHk/ / BN*@"o,itJg o&hx`^HzNX`/// / Nz*@POXOJf~Hz`p//// / N{L*@POPOJgZ)l`///Hl HlE/ / No*@Jg($`///HlE/ / Nr$*@Jg$ `v/ Nml)l` //// / NdPOPOJg)l`@"o#i`2//// / / N*@Jg/9:/9NN&@PO`0/9///N`HzE/N/NXKPOXO`$T* g$ `$f(g $B$gf`$T* g$ `$fxg $B$gg`^$T* g $ `g $B$gpzg6`$T* g $ `g $B$gpgzg zg`v$T* g $ `g $B$g" //9NNPOJf`(&,$,rƒp倂zg^$M//*// N@*@POPOJgg&/// z/4/ N:POPOJfD` z)`2 "Ёvg/// z/4/` z)`&,$,rƒp倂zg:$M//*// N@*@POPOJg:fP z)` "䁐vg/// z/4/`( z)`l&,$,rƒp倂zg:$M//*// N@*@POPOJgf z)` "Lvg/// z/4/` z)`&,$,rƒp倂zg:$M//*// N@*@POPOJgf2 z)` "LAvg/// z/4/` z)`Lpzf ,f//HzN/,`r&,$,rƒp倂zg:$M//*// N@*@POPOJghf~ z)` "LAvg/// z/4/`T z)`$M/,/,*// N@*@POPOJgf z)`Zg$/// z/4Nzz/`N"zzz)`$y*g jB`(Sk y"hBR`/9NXO&g/// z/4 z/`^"z z)`$,pzg //Hz` ySk y"h R`^$yJ*l@ D l6 j  g yR`*/9 y hB/` /9%/NPO`&,$,rƒp倂zg"//// N@POPOJg@`辴o6`&,$,rƒp倂zg"//// N@POPOJg`xl`n&,$,rƒp倂zg"//// N@POPOJg`2m`(&,$,rƒp倂zg"//// N@POPOJgn`촃nd`&,$,rƒp倂zg"//// N@POPOJg(`禴f`&,$,rƒp倂zg"//// N@POPOJg``g`V&,$,rƒp倂zf "vg/// z/4/` z)`&,$,rƒp倂zfb "vg/// z/4/`f z)`&,$,rƒp倂zf zvg/// z/4/` z)`X&,$,rƒp倂zf zvg/// z/4/` z)`&,$,rƒp倂zfh zvg/// z/4/`p z)`&,$,rƒp倂zf Fzvg/// z/4/` z)``HlHlNnA$0 POg/// z/4/` z)`$,pzg //HzK`J&$l zgzgj zg`$f //Hz7`Jo zꨰd//Hz>/N&VPOXO`E<f8 z)`//// N~POXOJg`r//// NPOXOJg`VHx/// NPOXOJg`8)yHx/// NPOXOJg`pg zgJ,g l)Ppg zgJ,g l)P/,/,N$POgBg8g/// z/4/`L z)`Hx/// N$$POXOgg/// z/4/` z)`L/// Nf$POgg/// z/4/` z)`//// / N}*@POPOJgpg/// z/4/` z)`$M/// / Nt*@POXOJg*f@ z)`$M/// / Nv*@POXOJgf z)`d tJg/// z/4/` z)`0/// NmPOJg`/// NhNPOJg` ,f$9n`$9rg/// z/4/`| z)`/// NiRPOJg*` ,/Nl\XKXO`/// NktPOJg`z/ Nk$XOg/// z/4/` z)`D ,f2$,pzf zf// N@$POg*BXM`///,N$POg/// z/4/` z)`/// NXPOJg8`$M/// / Ns`*@POXOJgf. z)`/// / Ny*@POXOJg`f$,pgzg| zgt ,f0// o/(8/ // Nw$@JfHz`$ *J``ݼ$M/// / N*@POXOJfHzc`f. z)`݄ 9tg/// z/4/` z)`N/// Nab$POgg/// z/4/` z)`/// Na$POgzg/// z/4/` z)`/// NbPOJg<`ܺ/// NcDPOJg$`ܢ/// NdPOJg `܊NH$g/// z/4/` z)`X$l* f$dd o"hP o\e(Hz//Hx o/(PNHxN."o/iP, o, /iP(A"o(#H"oPP$` ,/ ,/ ,///N $POPOg(Rg/// z/4/`: z)`~ lSH/N @XOJg`d/ NhXOJg`P"lSI/ N$@XOJg߶g&/// z/4/ N:POPOJf`ߊ z)`$,pzfl&/N>XOJgX` ,$// // //NJg o*h,,ht/h$"o$&i`ڔHzh`HzNXO`p/// // / N*@Jg$,g&/// z/4/N:POPOJf4`ޮ z)`"/ / NPO`/ N.XO`&o0,o4d,<*<(<B  yB0*G~ge ~g`~gt~?f 9fJg 3~@g"<Ap~fXHRM ~@f 3~@gn/HzHsNtPOXOAmxEp~f. "~/ y/0 HzHy(NPOPO`0~f /Hz`./HzHy(NPOXOXJRAlHzHy(NPO`$+//9NN(@POJf: @~A&/HzG" /NPOXO`n"†~ge~g~g`p_Fge ~g` g:` && y( 3<@'<B(ɳ ` && yB("3 …A' B(ɳ ` @~1& yB(I 'L` @~1`, @~`"B/ NJ&POJg @~` @~&`Hx/ NJ&PO`J/+EN/N(@ yB(Ht /+/NX @~(`Jf:|GepL|Nubad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_opH>0*/ &/$&o((/,$o0|#~ j @ b ,0;ZN . , " " " " " " " " " " " " " 8 " " " " " " " " " " " " " " " " " " " "  " " " " " " " " " " . " " " " " " " " x " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "b// NI&B9//*//9NNNC>,98g y@!jJgB<,98gx j <gf y@|g|g4`@ y@QH` XHpЪd j < j` @| `|##8t#3^/3^/B3^/N\xJgv ?f Ѓ 3@g,B43//3NI l XPOR Ѓ 3@f Ѓ03gj///HzHy(Nm>BB Њ/383/3/3/HzHy(NRJlHzNXOڃ3^/'f ///4HzEv/N/NXp`BLNusystemuserH0 &/BBHy/HzENPOPOJg HxHy/HzNPOPOJVI$D L Nu//&/ $//NZ\XOJfB`Jf /N`nXO` //N]PO$&Nu o"o A /rNuNqunix_argv's 1st arg must be integerunix_argv's 1st arg not in range/ o"o "(ptg/ Hz` km/ Hz/NPOXO`B y/0 NNPO$Nuunix_getenv's 1st arg must be a symbol/ o"(ptf tg// Hz/NPOXO`* y/0 NXOJgB/NNPO`B$Nuunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbol// o "o"(pvg/ Hz` $"(pvf vg/ Hz/NPOXO` / y/0 NPOJWID$&Nuunix_cd's 1st arg must be a symbolunix_cd/1: bad directory// o &/$(prf rg/Hz`  y/0 NXOJg/Hz/NPOXO`p$&Nuunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processH8 o(/$(prg/Hzn`4 (vƀrg /Hz/`/ /NPOJg/Hz/NPOXO` LNu o"o A 1rNuNqH<8$/ (o$$o((/, l *f"`g A"gpzf zg)H`)Apzfh ,zeZ0; N*FbN&A$ `/ Hx/Na&/ Hx/`/ Hx/Na&/ Hx/`/ Hx/*PNa&/ Hx/*P`/ B/*Na&/ B/*`&9 9й$`l 9& 9`& yRHA & ySHA $`(/ Hx/*Na&/ Hx/*Nd$// /, z/G:NPOPOJfB` // /, z/NPOPOJVIDLJg///NXPOXO`B9////NNPOPO/9NXO##bn`^EG"g$/9f/9r/9VNX/NPOPO$#br`/9N` HzNXXO$_&_Nu/ o"(g `"A`g ""@ g y/0 Ev/N/NPOXO$_Nu%ld/ /$o prf $9v */Hz/NPOXO` y$0 // *// */ */NNJVID$$_NuH<&/(/rƒVtĀzgr„VzzgfLpf$`@zf " `, y/0 /0 N$POf"z $Jop`JVIL0&o $o$`g&C&g`g $B$gp|gjf p|gjf/ / NDPO`L//Nn>"POf:p|f0 |g($v* X( Xe//Nn"POXXRJg L |Nuarity=%ld functor has bad arityH><&o("o, o0$o4*/8(/<`g "B$gpgt|g&|f*////I:NPOPOJg//Hx/ N`////I:NPOPOJg// |// N`g B$g`g $A"gp|f&p|f Jfp///`XJgd K c$/HzHy(NHzNXBPOPO`< "|&`&XK SJf//// N:POPOJfB` L<|Nu/ /"/ ptf /HzEv/N POXO` tgB` y 0 $$_NuH 0 o"/"yvEf@XH "fg &A"gptf( XH`g A"g`fBp`BL Nuboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2H><$o((o,&o0(/4*/8`g (C&g$fg &B$gg*// NqNPOJg//B/9vNIXO./ `DgP/Np @XOJgV$ JgCB$ |$Jf$/// /N:POPOJf8B`6fHzNXBXO` /Hz/`/Hz/NPOXO` L<|Nubad constructor starts 1st arg of det_append/3det_append/3H0<"o(o $o$" &IXI l&fl"$gb vvg./ Hz/NPOXO`JHz/ Hx/ NBPOPO`08d"K#MPIPH`g A"gg"& L< Nubad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2H0<"o o $o$ h&f(IXIGB  g / Hz/`PH`g8 A"g`,R8dK"PH&g "`g A"gg oHzNXBXO`pgvg vg / Hz/`Z K&g "`g A"gpg vfJg / Hz/`$pvf v砂(`./ Hz/NPOXO`Hz4/ Hx/ NBPOPO` L< NuH< "o o"(((pzf&&< " h*fD$H fB`B$z"#@PIpoXH"#XPIRnJg"E #J`"#HPI" L$o$,o((o,*o0 y&P$dJfd>",P\e Hz/ Hx/NHxN. lP lPRK!KPP $$( XJ$& XJ/ / //N:POPOJg y&P&, `BL|Nusetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityH08(o&o o $,pvg/ HzJ`L"$l vgvg vf / HzG/ `&$f/ HzY`Jo v樰d/ Hzh/NPOXO`^E$dLfd@"kP\e HzB/ Hx/ NHxN. kP kPC!IPP$pL Nuchange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafeH00$o"o&o"*pvg/ Hz`v$ j vgvg vf / Hz/`P"f/ Hz `>Jo v樰d/ Hz`(c/ Hz9`A,"*fc/ HzA/NPOXO` pL Nu y( !o!or ӹ( NuNq%ld bytes, %s!!! hashing table (almost) full// yA /HzHy(NHzNXHxN.NuNq/ /E/N#/Np"#t#BPOJgJVID$$_Nu(75%)H< (/*/ ЅC"S$ā й&ƁgD y"ҁ ЂJ gD Ђ倸fg"R S$Āg"ҁ ЂJ f y$BE* J fX 9"Ҁl Hz\NXO"y$BE* @### R y'(p`BLhindexH88(/&/ &o$ Ѓ"9S"@ yI 倸fgj yI J f&B`\" ҹ 9S$Ā"$H R"@I @fggJf`HzZNpXO` &p`&BLNuH>/ fHAd*y(y,H&Lɰ2dJg IPH)PKXKPIXIRJe`HAd<(y"y*H&IȰ2dJgSBBBPKXKPHXHRJeL|NuCOPY_KEYSH<>$o( o,pzf (("(pzgB`b&䃛ͻdJM&y5b$ yJg 5b"yNfB0b&I`J&p* g " `g &A"gtāzfJn zꨶbgJg"o08e"Hz//4Hx/ NHx N. y 0r€zf $$$$`$*$$zz$ y 0r€zf $$$$`$*$$zz$$$PLXLRMe$ L|jf /( /(/(N//TPOXO`/98NXBXO`\B8p8R$ NuNV'H8 $n$.. n xxf `Jf"pxf @]"`&jfz/( /(/(N//UPOXO B xxf `JfF"pxf @\"`<jf /( /(/(N//TPOXO`/98NXBXO`BxЄxe0; N$.4>LZhv"`p(`f#`` `VB8 `~B8v `pB8h `bB8Z `T8@`8@I( `:B`6HnHnHn'tNX$j%n%n%n pЊL. N^NuNV' H08&n n "("h$hpgvg vg(A"pvf@ vf6 y p  I vvf `Jf"pvf @]`&jfz/( /(/(N//UPOXO J vvf `JfF"pvf @\"`<jf /( /(/(N//TPOXO`/98NXBXO`Bvlg"vpfH't'uN//UPOPO`0'tEN//U'uN//T POPO`B`6HnHnHn'uNX&j'n'n'n pЋL .0N^NuNV'H00$n n "("hpgvg vg&A"pvf vf y p  vvf `JfF"pvf @]"`<jf /) /)/)N//TPOXO`/98NXBXO`BvЃv1e:0; N"000000000000000000000000000000000d00000000'tN//TPOXPT@fTPlXP@TPXP@TPXP@TPXP(@8TP>XPT@dTPjXPz@zPYP@QP@eP@@P@@eP@@zPpPzPpP"@(pP2@:@F@LpPV@h@v@@@@@@@sPzP YP*pP4@>@H@P@h@p@x@@@OP@PP@PPPPP$@.P>@FPPPPzPYP@@@P OP.OP:PJ@ZOPfOPrpP|pPOP@OPPPpP@P@@POP PlzPrYP|@@@pPPpPPpPPpP@pP,pP0@6pP:PD@N@V@pPpP@@@@@@,@6@z@@@@BzPHYPR@|pP@@pP@@&@LpPTpPZpP`@@@@pPpP pP@~@@@@@@zP YP@PpPVpPpP@pPpP!h@!@!@"@#*@#@$n@$x@%&@%0@%@%@&H@'V@'`@'@(^@(h@(@)L@)V@*:@*D@*@,@,@.pP.@.pP/pP/@/pP/pP/@0@0pP0"pP0N@0T@0d@0@0@0pP1Z@1l@1@1@1@2 @2$@2XP2jpP2ppP2v@2pP2@2pP2YP2P3pP3@4@4*@4@5>@5@6@6@7:P7NP7jpP7pP7pP7P7pP8pP8 pP8FpP8TpP8ZpP8lpP8xP8@8@98@9~@9@: @<&@<,pP<@<@=@=2@=FpP=X@=@=pP=@>8@>z@>@>@?T@?l@?pP?pP?@?@?@@@@`@@|@@@@@A@AJ@A@A@B @B2pPBfpPB@B@B@BpPC"@CN@C~@C@C@CpPD6@Dt@D@D@D@D@Eb@El@E@F@F@F6@F^@F@F@F@G PG:@G`@Gl@G@GPGPGPGPGPGPGPGPGPHPH PHPH$PH0PH<PHFPHRPH^PHjPHvPHPHPHPHPHPHPHPHPHPHPHPIPIPIPI*PI6PIBPINPIZPIfPIrPIPI@J@KPKHpPKRpPK@KOPKzPKYPLzPLYPL8zPL>YPLPpPLV@L@LPM(PM\PM@M@MpPM@MPM@NpPP6@P@pPPNpPPT@PZpPPd@Pn@P@P@P@P@P@Q@Q@Q\@Qd@Q@QzPQYPQ@Q@Q@Q@Q@RpPR@R$@R4@R:pPR@@RZ@Rh@R@R@S@Sd@S@S@S@TP@Tx@T@T@T@Ux@U@U@V&@V@V@W@W(@Wz@W@X @X@@X@X@X@X@Y$@Y0@Y>pPYH@Y@Y@Y@Z(@Z6@Z:@Z@PZL@Zf@ZxPZpPZ@Z@Z@Z@ZpPZpPZ@[P[P[:P[`P[pP[pP[pP[XP\&@\B@\LzP\RYP\\@\hpP\@\@]$P]4@]F@]\@]d@]P]P]P]@]pP^P^pP^$@^,pP^8pP^D@^XP^r@_$pP_T@_@_zP_YP`zP`YP`@`:pP`BeP`J@`|P`P`@`@`@apPa@apPa@b @bOPb&Pb6@b@bOPbPctOPc~Pc@d^Pdr@e$@e,pPeD@e`@e~@e@ePePe@ePePePe@ePePe@fPf"@f4@fR@f@gOPg@OPgZOPghpPgnePgzpPg@gPg@hvOPh@h@i|@iOPipPipPipPipPi@ipPiPi@jPj pPj.@jDpPjJpPj\pPjdpPjhpPjtpPj|@jpPjPj@jPjpPj@jpPjpPk @k@kpPk@kpPkPlpPl@l$pPl*PlpPlpPlpPlpPl@lpPl@lpPl@lpPlPlpPlpPlpPmpPm pPmpPmpPm"pPm(pPm.@m6PmBpPmFpPmNpPmTPm`@mOPmpPmPmPmpPmePnOPn(@nOPnPo pPopPo(@o6@oh@o@p@pzPpYPp@p@qpPq"ePq@OPq\pPqbpPqpPrn@rpPr@r@rpPrpPr@r@s@srpPs@s@uh@u@v@w@w@y@y@z@{@{2@{@|f@|tpP}@}*pP}2pP}b@}l@}pP}pP}@}@~pP~,@~:pPZ@@@T@j@ppP@PzPYP@@@ @P@"P*P4P`@pP~PP@P@PPPj@zPPP@ @P>PD@RP@PPP@2@^@jPpPP@PPP6@@pPHPVPlpPpP@@P8PppP~@pPpPpPpPpPpPpPpPpPpPpP*@Z@p@P@@@P@PPP&pPD@pP@~@PPpPzPYP@@@P(@4PRP^PdPrPV@p@PPpPzPYP@P pP@@VPf@tP@PPPF@bPrPpP@P@@@$@,@4@R@X@bPp@v@@P@@@@P@@@,@2@<PJ@P@b@lP@@@@@@@P@@@ P@"@4@<@F@X@bPp@v@@@@@pP0@j@z@@pP@@@6@H@Z@x@@@@ @@@*@4@HOPV@pPpP@@@eP @(@<pPFP`Pn@teP@@pP@eP@@pP@eP&@.@BpPXOPnpPxpP@pPpP@pPpPpP@pP2OPHpPp@@pPpPpP@pPpP@@pP$pP4@HYP@pPpP@pP@@@pP@pP@@@@pPlOPpP@pP@0@6@\PtP@pP4OPrpP@@@.PPPPPPPPP @pPOPpPePP,@2pPrpP@pPYPP@P@8@ <'`1<FV hx@` ~  %4G<_ NI[Jf]q<zJ&Z`n8G\x@DHG[aqNpa,n>6aEL^mrP{pDRX8'X9XHPbqx>Hty#    G-;CL YfylxG @ z :IZ^!NF(k#+ j ("`5RN;%>rIXRZ2bjr6.{ \.X/pfM ld"i+3$;F&fN}[vczwX|^.iRvab${LcDjkhft|0t)|$6Ds`CZKLSaEytxE{(@>^B0}hN@pvwmk mll\%0kt=+JwpUbbsnkGLqz LRa8d~ d o { !l ' -zr$ 8M: ?N J> UMZ\ `I k sA {t : X H   | a "(  *g Nx  Dd  D  ! ( .Ih 7` ?e F| NH Vl ] g o y   ] n %X   f 7 Z   e    p ~   sru.o_hdef_string_make_constants_root_wam_hdefaults_hdef_int_var_array_init_heap_safe_margin_make_var_array___gnu_compiled_c_make_stack_mes.70_mes.73gcc2_compiled._del_engine_add_enginessym.o_insert_lex_atomno___gnu_compiled_cgcc2_compiled.sengine.o___gnu_compiled_cgcc2_compiled.sload.o_load_instr_array_get_one_int_link_code_load_file_badcode_link_switch_skip_header_load_self_currpred___gnu_compiled_c_ii_last_prev_prev_len_prev_lengcc2_compiled._loadoperatorbuiltins.o_list2buf_name2buf___gnu_compiled_c_ocomparegcc2_compiled.dict.o___gnu_compiled_cgcc2_compiled.io.o_ibuf.24_match_list_elements_cursor_match_sym_match_char_match_var_out___gnu_compiled_c_match_argsgcc2_compiled._match_int_make_term_make_funcellfloat.o_arith_err_mes___gnu_compiled_cgcc2_compiled.debug.o___gnu_compiled_cgcc2_compiled.main.o___gnu_compiled_cgcc2_compiled._quiet_exit_bp_exit_make_symtable_make_atomtable_atomtable_max_optind_end_profiler_start_profiler_optarg_init_instr_len_init_common_mem_restart_orig_sscanf_fprintf_startup_mes_overflow_by_free_bp_version_destroy_engine_create_engine_is_engine_cputime_run_bp_new_func_can_recover_sprintf_srand_calloc_make_hentry_start_wam_make_char_array_hinit_init_bp_init_random_load_kernel_hdef_g_link_halt_warnmes_signal_interp_malloc_getopt_bp_halt_times_get_cmd_line_options__iob_quietmes_make_byte_array_local_error_fatal_error_c_interface_init_orig_wam_init_engine_mem_newlex_lextable_sfull_atombak_newatom_strcmp_strlen_atomstamp_symcat_dcg_connect_hcount_findall_store_heap_op0_bad_instr_see_tell_term2list_unix_argv_lval_findall_load_heap_unix_cd_seeing_telling_at_load_engine0__flsbuf_dcg_tell_if0_ask_engine_bp_prolog_call_list2term_strip_cont0_det_append0_answer_fflush_unwind_trail_findall_lift_heap_bp_apply_new_builtin_set_float_op_multitask_engines_write_float_opcount_def_older_file_sread_term_append_copy_term_add_instr_change_arg_shell_1_seen_told_sout_float_fun_see_tell_at_interp_from_exec_link_unix_access_compare_hbak__filbuf_hlist_input_float_default_start_point_heap_or_bp_halt_fout_unix_getenv_stats0_suspend_engine_call_engine_load_engine_setarg_unix_kill_functor_float_fun2_hget_rand_name2list_unify_insert_op_instr_len_init_code_input_fun_wam_bp_ungetc_fopen_make_op_hset_user_bp_fclose_isdigit_ftell_stat_used_bp_heap_top_system_older_file0_copy_from_engine_chdir_stat_left_kill_float_compare_access_strcpy_stat_bp_cons_getenv_fseek_hindex_hstamp_hfull_op_class_htable_valid_op__ctype__match_term_sread0_swrite_atof_double_to_ints_make_float_log_asin_acos_atan_sin_cos_ints_to_double_tan_pow_exp_floor_main___main_init_cBinProlog3.45/bin/bp.o.alpha.dec100644 764 764 655310 5764213650 15527 0ustar javierjavier/P +0@" `.text`g .rdatap $.pdatapAk.data  0@.xdata@@.litapp @5.sbss@"@"@.bss""Xx`  H  H8hHx``HpP ! ""$d`%&X&|&|x'|'|`(|+| ,|,|P-|-|.|/|(0|0| 1|2|2|(4|n|r|s|txttPztttPtttPttptttpt@ttИl؛l(lȝlxllplll@lllllll0lhddXdddPdغH\8\x\ؾ\`\Ld@ddxdhDPdh4xd$(dddPd`dhdllllhllXllll8llHllltttt ttHt0tt@|'p##^C}@[k'T#> $A!@A!@A!@A @?@@LHCH@H @^Ck'#=@@@4DkG'蒽##^=@!F @1F p"BD(}@[k'#^Ck'##^>^ F 1F0}[k'p#8=@]8B @a" @LJEH)EAD4BJC4BUBUB@=1"UBUB5@H}@[k'#@0"CP}[k'쑽#?AX}@[k'ؑ#'Б##^F@@"`}[k'#^Ck'##^F p"@=H1"(}@[k'l#^Ck'X##^F p"@=`1"(}@[k',#4Gh}[k'#^CkG'##^>=@!F @ 1F= `F h2!aBw H @ p"@=1"(}@[k'#)G/ p"@=1"sF(}@[k't#G/!5 @ p"@=1"w`J(}@[k'<#p="oJ!@D p"A@@=1"BgJ(}@[k'#)Ex}[k'菽#G^>CkG'ȏ##^8=! tGh}t[k'#^CkG'##^x}v[k'p#}[k'`#^CkG'H##^=Q1BC2B@!(CsF @3B  p"@=1"@CtB(}@[k'#}[k'#^CkG'Ȏ##^>^~ 1FG RF}F[k'#)EG D}F[k'|#JEG D}F[k'`#8}3,kE)E3HD}(n[k'8#^>^~Ck'##^>^ 1FG RF}F[k'썽#)EG D}F[k'Ѝ#8=J@Aa.)E4@EaJD}n[k'#^>^Ck'##^>^~ F@" 1FG8=}F[k'L#@"TG }F[k',#@"TG }F[k' #@ "G }{F[k'쌽#@("G }sF[k'̌#@0"G }kF[k'#@8"G }cF[k'#@@"TG }[F[k'l#@H"Gx }SF[k'L#@P"TG }KF[k',#@X"TG }CF[k' #@h"4G };F[k'싽#@x"G }3F[k'̋#@"G }+F[k'#@"G }#F[k'#@"G }F[k'l#@"G }F[k'L#@"G } F[k',#@"GH }F[k' #@ȁ"GP }E[k'슽#@Ё"GX }E[k'̊#@؁"G( }E[k'#@"G0 }E[k'#@"G8 }E[k'l#@"G@ }E[k'L#@"G` }E[k',#@"Gh }E[k' #@"Gp }E[k'쉽#@ " p)xI `)GhI}E[k'# i.)pIiJ}l[k'# i.)xIiJ}l[k'h#@0"tG}E[k'L# X鷀Ii^>^~CkG'##^>^@]8J!@=H1"@]XR"JE G_ @=`1"@]pR"JE_@=1"JEY_"_өC)E^>^CkG'##^4G}@[k'l#^Ck'X##^4G}@[k'<#^Ck'(##^G}@[k' #^Ck'##^G}@[k'܇#^Ck'ȇ##^> FP A}@[k'# CG D/G/G/G/4`@ i@BA@?^>CkG'H##^1F_@ ^CkG'##^>^~ F 1F RF sFFi KAI GG/GP@A}@[k'# A@A8B`A@!"@0) ) I 0i)IC(i^>^~ Ck'P##^>^~= F@}s"G)G_ӫ@}~C[k'#4`AD}W[k'#8 }a[k'܅#  "8] )_"@}s"@ G aA_P ?"4`AD_GG4`AD}@[k'x# G4`A !@*D}k[k'P# _ 4G iA`4G G/@"x}|[k'#G^>^~CkG'脽##^8}#C! A@ A@#PA B4 D"P4G4@B"@"x}|[k'#G^CkJ_ P@"D? B0Dk'H##^>^~ (0޵ F 1FRF_" sF F@}؂s"G[A F8_RA)E@}s"_"G@0_kE IA4AD_)E@}s"kEGD$_=h "@}s"GH!G4AD_JEE4AED_@"4GG@"x}f|[k'0#G^>^~ (0ޥCk'#8=AaC@ G/G/G"!0@ 4GkG/GA@C@?GkG'##^8]b"a@ BD#!0@ $!#$4G!!@$ G8]"a@a@?@8"x}!|[k'#G^CkG'##^>^~ ( F 1F RFGG sF}@[k'# D G0G*@I+`I,IG)EEG/G/G/"#"#"#"# " #("(#0"0#8"8#@"4@@I@@#i@?)EJEkEE4GEȀ}+[k'#D)E^>^~ (CkG'##^> F_ Ѐ}@[k'# Ѐ}@[k'#h Ѐ}@[k'l# Ѐ}@[k'X#)EЀ}@[k'D#4GGG^>CkG'##^0}#{[k'#@FB؀}@[k'#^CkGkGkG'#p#^>^~ (0޵8 F1F GE,5@@@}4G]G/G/G/@]XR"EE}@[k'8# HH4@ !5 @!'H'H"!HwB@ =AA@!=@kG @=p1"C}@[k'~#@>! H*G/G @=p1"C}@[k'~#{H>! H*}G/G @=p1"C}@[k'X~#kP>! H*mG/G @=p1"C}@[k'~#[X>! H*]G/G @=p1"C}@[k'}#K`>! H *MG/G @=p1"C}@[k'}#;h>!u!@!@7 h>!I?@(*8G/ @=p1"C}@[k'H}#'p>!u!@!@# p>!I?@0*$G/ @=p1"C}@[k'|#x>!W!H8*G/G @=p1"C}@[k'|#>@* 4 AG/4 AE,5A4AK? p"@=x1"@]R"@}Ѓs"@"(}@[k'H|#4Gh}z[k'4|#=A M@ AN@G^>^~ (0ޥ8CkG'{##^>=@=p1"tGG)EH}@[k'{#)E^>Ck'{## ^(>}[k't{#@=! @]B =@=01"@}s"> =@"@"!^D^)E>H}@[k'{#)E ^(>CkG'z##^>^~ (8= = F 1Fp)'@x)0}y[k'z#kEE@ (}~[k'z# D0}[k'xz#@0"D8]P}y[k'Xz#),JEA)H)<@}|[k'8z#kEE(_I,4GEa)HBIHJE"D)^~ (Ck'`y##^>^X= FtG)E`}@[k'0y#TG)E8=`}@[k'y# @ p"@=H1"JE(}@[k'x#8=! )Eh}A[k'x#)Ep}jC[k'x#)E Dx}8~[k'x#JEh}y[k'x#^>^Ck'px##^> F}"~[k'Px#)E}A[k'Ck'x##^>^]0 }{[k'w#=0 D! A}{[k'w#0 =]0J4 AⷉD}{[k'w#ȁ}Ё]4 AD A^>^CkG'Xw##^>^~Ё] Fj؁}@[k'(w#=ȁ]0!jB! H@!5 @"@@"}cy[k'v#4@*i,D,iHBDHadH 4 A"D$<`JEG/G/G/4@%i,D,iHBDHadH 4 A"D$<kE^>^~CkG'@v##^=Fp"=1"A}@[k' v#0"}y[k'u#G}y[k'u#^CkG'u##^>^~ ( F*,*H GJE G/G/G/G$,$H4@d,!'H" I'HdHA@ "A}=0C!"5@@ "E!A!5 @ "D!+A 䠁]"A!A! BD cD/G/,A!A!JE}@[k't# 0-4 A!5 @ AD!+A ,A!A!?=!A!A!0 ]","H`X" !5`@ =!A!AA G/GJE>_Ӡ=!A!A=]4@b$,i@$HC,a#HBCH"D#<=0!7 HW HA@ @ X"G!+A `" }^[k's#)E^>^~ (CkG's#]0"G 䰁ݤBDG/G/GC@","H0@ &Ba@" $!5 @$0%4`@a@?kG's##^>^ 1F? !A F p"=p1"JE)E}@[k'r#x" G}@x[k'r#JE2_ wHH!'ITDD^>^CkF B G/G/G @`0`D!CA @#b@!B@@ @ B#?kG'r##^>00=08=!@]H=0)P}!Bc )(I8iX}w[k'q#H ^>CkG'q##^> F)8=)0]H}0! A"4GC`}h[k'Hq#4Gh}k[k'4q#Gp}^[k' q#4Gp}^[k' q#@)0)^>CkG'p##^>8=!x}rg[k'p# D "}w[k'p#)E^>CkG'p##^> FF!5 @ 䀂 "}w[k'Hp#4GG/wJ昂}w[k' p#)E^>CkG'p##^>^~ (0޵8sF RF A/oA G/G/G/ kE+aAkE. E+aA G!A )E) E?G!A JEM@E?!A  E&@*A@E@D* !U@@ GI I/!A ,B }@s"TGE}w[k'n#G}=w[k'n#LA@,"tG/@E" !U@@ 'I ʵ*/AAf ,B }@s"TGE}w[k'Hn#G}w[k'4n#LA@,BPG/!*A GM!U@@H 'IF ,aA }Xs"kEtGE}w[k'm#TG}v[k'm#/A ,B }`s"TGE}w[k'xm#G}v[k'dm#,AL4A","@, aAB A͵A+ aA)5 AAK A A-@.@G/! aA+!!@" aA)5 A"A@+?oAL?4G^>^~ (0ޥ8CkG'l##^0p"_&=p1"BJ2D}@[k'hl#G}v[k'Tl#^Ck'@l##^>^~8= F 1FJEx}Df[k'l# D =1"JEkE}v[k'k#)E^>^~CkG'k##^1F4h48]t48@!"8@!H!FG(@"@@!"*@bBP!G##a@$@""A@eB343 43}A[k'(k#@^Ck'k##^> FȂ}~[k'j#)EDЂ}[k'j#^>Ck'j##^>^~ 1F8= !*x! RF F Fx}e[k'pj#G"ABA/G/G/G/!!!@#a@""A@ %A+)JEE +)EDkE3}oA[k'i#^>^~ Ck'i##^>^~ (0޵ F 1FRF؂}y[k'i# "}u[k'xi#G2G/*h*j8=*H!P)x!8@!x}e[k',i#GbA *AD/G/G/))!A"A@!!!@_ eA*+ *+J4G"** *XjEa^>^~ (0ޥCkG'xh##^00P05 @}[k'Ph#^CkG'8h##^> F؂}Fy[k'h#)h X)iA)EB}@[k'g#G/GG^>CkG'g##^> FI"w H! @ )E}[k'g#GG/G4G") ^>Ck'@g##^F#!w H@@1F =AA@!=@kC4G" ÈC4G"È#4GAÈC4G"È#XCaG/G#=1"cD}au[k'f#G}(u[k'pf#G^Ck'Xf##^Fb#sFw H!`B1F 䨂p"=1"BD}@[k' f#4G} u[k'e#GG/4G#"XB^CkG'e##^>^~ (0޵8ݤ@_$ C BD@0D`GBG @EA 4GD/G/* 0w H!U@@?# AAAA?8}+5`AC G4`A A@& 4G cDG/G/*)!w H@@@@"D )E}[k'd# 0w H! @ е-!AA - G !@ AA+5`A4`A?4G^>^~ (0ޥCk'8d##^>^~ (0޵8 F@1FH RFPsFG/G/l?$"HaEU@f =AA@!=@)kGH䁶fIA AGfIAε AdG/GH䁶fIH>A@^E}|[k'Hc#H A@HG/fIA! AMG/GfIAA@E JEG* E1 G/G/G!IA )E) E? E$ /AAH @'B }@s"@^TG}t[k'db#G} t[k'Pb#@GA@'BʵBA.@"A,"DG/,!!A ,fIA. AA!waI&HAfI!A A"wG/G!waI&HfIAεAG!waIfI&HA@^A!E}Y|[k'da#d6G!waI&HAfI!A"l!waI&HAfI!A A"KG/GH!waIfI&HA@A@H Aa:G/fI"waIAFHAεH䁶fIH>A@^E}|[k'x`#)H!waI&H@A@H AAGfI"waIAFH!A. AB ANA G/GH䁶fIH>A@^E}{[k'_#!waI&HHA@^E@G/fIA!!waI&H.A!#G/GH䁶fI"waIAFHA@^@E}{[k'8_#H A@HG/fI"waIAFHεA" A.AH>G@@EH JE G/G* E) G!IA )E) E? E ,*/AA @'B }@s"@^TG}s[k'@^#G}s[k',^#@GA@'BG/G,!!A ÁfIAAʵ, A.A{G/G("}s[k']#GfIAA@E JEG* E- G/G/G!IA )E) E? E ,*/AA} @'B }@s"@^TG}ns[k']#G}r[k'\#@GA@'BeG/G,!!A; ^ÁfI,AP A4@.A*G/P A%GM@E JE G/G* E G!IA )E) E?/5 AE @>E}{[k'\# D@EEE}&}[k'[#Dn @p'AP M@E JE G* E G!IA )E) E? E  )Ex}b[k'P[# D AAH^ A@p'AP M@E JEG* E G/G/G!IA )E) E? E?L"!!A AG/bCA C@ÁfIAA@E JE G* E- G!IA )E) E? E$ /AAH @'B }@s"@^TG}r[k'Z#G}r[k'Y#@GA@'BʵBAN@!A,ADkG/,!!Aw?lfIA@^AAEH^}_z[k'|Y#j"waIFHCAA AHBA"[G/GfIAA@E JEG* E9 G/G/G!IA )E) E? E, /AAH @'B }@s"@^TG}Wr[k'X#G}q[k'X#@GA@'BʵBAN@!A,AD.lfIA!!waI&H.A!8,!!A?lfIA@^AAEH^}y[k'W# !waI&HA@^BAEÁfIAA@E JE G* E5 G!IA )E) E? E, /AAH @'B }@s"@^TG}q[k'DW#G}Xq[k'0W#@GA@'BʵBAN@!A,AD.lfI"waIAFH AAAN,!!A?lCA A#waIfIfHAAHAA"BA#G/GfIAA@E JEG* E1 G/G/G!IA )E) E? E$ /AAH @'B }@s"@^TG}q[k'U#G}q[k'U#@GA@'BʵBAN@!A,ADG/,!!Ao?lfI"waIAFHAA#A@^BAEH^}Ry[k'HU#] CAH^ ASG/G,fIA.lfI"waIAFH AAAN?G,fIA.0G/,fIA.lfIA!!waI&H.A!MG,fIA.<G/fIAAʵ,.lfI"waIAFH AAANÁfIAAʵ,.lfI"waIAFH!A. AB ANAÁfIAAʵ,.lfIA!!waI&H.A!ÁfIAAʵ,.lfI"waIA AFHANA" A.A@p'AP l@'AgI }Xs"@^EtGG/A A /@-@""A@!!@##a@?A#AAϵ@'/, A/,/@/ } x[k'R#@gIA A!DC@ϥ/A @M@O@G/G/!!!@"A@##a@_ AA#APAG@/ }w[k'Q#@gIA A!DC@ϥ/A @M@O@G/!!!@"A@##a@_PÀh"}p[k'Q#}G"}zp[k'pQ#uGHgI AG'AHYGgI EN.A)5 A4 A+?@*A/)5 A4 A @?#G/gI,!CA-@ A!AG!waI&HgI-AA@E * E G/G/G!IA )E) E? E!U @ 'I MG/G-G/!waI&HAA@E * E G/G!IA )E) E? E!U @ 'I MG/G-fIAA@E * E G/G/G/G!IA )E) E? E!U @ 'I MG/G-G/!waI&HAA@EgI !CA-@AG* E G/G/G!IA )E) E? E"C!U @BM@ 'I BG"G/!waIgI&H"CAεBM@ AµAM@E JEG/G* E G/G/G!IA )E) E?8)Ex}^[k'N# D'I8'Zz`!5`AA @N -@*@G/G/G/""A@!!@##a@??GM@E JEG/G* E G/G/G!IA )E) E?'I8!/I 4`A1gI1Dx}^[k'$M# D8'G-AmA+5`A!:`!5`AA @ -@*@G/G/G/""A@!!@##a@?B`AJ@  E!U @ 'I DM@!G/G8,)Ex}X^[k'XL# D@~EE)E(}[[k'0L#8'Dx}F^[k'L# D@p'AP?}Hs"@^E4G}#o[k'K#0}n[k'K# G/@8}v[k'K#G/@'!w H 'XǵGG4G"RG/tG`}^[k'DK#Ȃ}v[k'4K#@'h'祠'8@!8@H DP8G (@'@@!A*@P!G""A@$@##a@Aϵ@'/ '/G/lP~E@EAE@[k'J#@D票@G/G"}*n[k'@J#nG@^EE@}Z[k'J#D"}n[k'I#@^EEEH}Z[k'I#D-<EA@AAEP}tV[k'I#Dr -.G/E@~AAEX}oW[k'dI#Dc-G/GE`}[U[k'4I#-G@^EEEh}^R[k'I#M - G -G/@@'0'- A-9GE@EEEp}@[k'H#D38x'x}b][k'H# D$8 @>hGx}>f[k'XH#G/G8=1"h}@[k'(H#8h}@[k'H#GM@E JEG/G* E?G/G/G!IA )E) E? E?G/GM@E JE G/G* E?G!IA )E) E? E?G/GM@E JE G/G* E G!IA )E) E? E!5 @?G/M@E JE G/G* E G!IA )E) E? E?!5 @?'I}?G/GM@E JEG/G* E G/G/G!IA )E) E?'I8!/I4 B1'J1Dx}\[k'E#WG-  EDB@@"D!5!@ ?&ED"J)EqE}Tf[k'E# EDm!waI'H 䁶fIA@^!JEE}Tu[k'PE#2^ÁfIAA-ÁwHw I"waI#@GHA @4 D@䁶fIA@^!DG/fIA-  EDB@@"D!5!@ ?&ED"J)EqE}f[k'D# ED1!waI'H?fIAAÁwHw I"waI!#@GHA @4 D@䁶fIA@^!DG/fIA-  EDB@@"D!5!@ ?&ED"J)EqE}e[k'C# ED!waI'H?fIAAÁwHw I"L"waIGHA @4 D@䁶fIA@^!DG/fIA-  EDB@@"D!5!@ ?&ED"J)EqE}e[k' C# ED!waI'Hd?fIAAØwH!waIw I'H}@j'B#[`C4`G 䁶fIA@^!DTG/GfIAM@D!5 @ w@H =1"@^%G-  EDB@@"D!5!@ ?&ED"J)EqE}xe[k' B# ED!waI'H$?fIAA]ØwH!waIw I'H}@j'A#[`C4`G 䁶fIA@^!DG/GfIAEM?&m"JEqE}Le[k'pA# EDe!waI'H?fIAA1!waI'H 䠃}@[k',A#fIAvH@^E!@@@4DG/G}@[k'@#fIvHA@@@4D8`@ D1 DHBD FDBHa#HGADF$!5 @#H$@8`}@[k'\@#8`gC4@@#","H!waI'H 䁶fIA@^P@!E4FG/fIAA@4 D"G/- E!5 @ 䀂=1"{G8h'A"5@@CHA `h'v I06J}@[k'?#G8hGb4`@"v I#,bCHA#HADC<-  EDB@@"D!5!@ ?&ED"J)EqE}d[k'?#á @?G-  EDB@@"D!5!@ ?&ED"J)EqE}d[k'>#á @?G-  EDB@@"D!5!@ ?&ED"J)EqE}d[k'P>#qá @?nG-  EDB@@"D!5!@ ?&ED"J)EqE}ld[k'=#Yá @?VG-  EDB@@"D!5!@ ?&ED"J)EqE}Td[k'=#oA! @l?>G-  EDB@@"D!5!@ ?&ED"J)EqE}EE}W[k'|9#j<G/G@>EEȃ}SX[k'L9#^0G/G@>EtGЃ}\[k'9#R$G/G8 '-@>EtG؃}:][k'8#CM@D !5 @ GH "-M@D !5 @ GH "- -x}`Y[k'x8# D(?8 '!)@$?!waI'H 䁶fIA@^!)EGfIA!@>EG}[[k' 8# D ?!waI'H 䁶fIA@^!)EG/fIA!@>E}N[k'7# D?!waI'H 䁶fIA@^!)EG/GfIA!@^EEE}W[k'H7#D!waI'H 䁶fI A@^!nGfI-A!G/G@^EE}S[k'6# ED!waI'HS?fIAAG/G@^EE}/T[k'6# ED!waI'H??fIAAxG/G"waIGHA@@ 4 D@䁶fIA@^!)E2GfIA!e@>E}P[k'6#]@>E}N[k'5#U-w H 8'G/8'!waI'H 䁶fIA@^!)E GfIA!=@>E}N[k'`5#c5 wJp}O[k'@5#.G@>E }O[k' 5#S%E(}O[k'5#!waI'H D 䁶fIA@^!)EGfIA!-w H - E!U @7?'I5?E)E0}_[k'4# D-?!AG @>8}&a[k'`4# D!waI'H 䁶fIA@^!)EÁfIA!@>E@}Z[k'4#@^EEH}R[k'3# ED!waI'H?fIAAG/G@^EEP}T[k'3#DG/- E !5 @. 'I, -w H @@Epg)EEX}S[k'83# D @"}h[k'3#G/G EJEG@@0@GHg)EX}S[k'2# D_@0'0G!waI'H 䁶fIA@^!)EMÁfIA!@^EE`}]S[k'l2# ED!waI'H7?fIAApG/G@^EEh}AU[k'2# ED!waI'H#?fIAA\G/G8P'"waI!GH! @䁶fIA@^!)EG/GfIA!E8P'-A*@'B }@s"@^TG}h[k'P1#G}g[k'<1#@GA@' ABNG/@>EEp}5U[k'0#JG/G8P'"waIAGH!AA D 4 D@䁶fIA@^!)EGfIA!EEx}Zb[k'0# ED)!waI'H?fIAAEE}a[k'@0# ED!waI'H?fIAA@^EE}b[k'/# ED!waI'H?fIAAG/G@^EE}?c[k'/#G/G@^EE}W[k'|/# ED "}g[k'X/#G/G!waI'Hq?fIAAG8"waI'GHA @ 4 D @䁶fIA@^!)EdG/GfIA!@>E}J[k'.# D?!waI'H 䁶fIA@^!)ELG/GfIA!}@>E}J[k'`.# D?!waI'H 䁶fIA@^!)E4G/GfIA!e@>E}K[k'.#]@>E}0K[k'-#U@>E}VK[k'-#{MȄ}f[k'-#!waI'H D 䁶fIA@^!)EG/fIA!9M@Ec?/AA* @'B }`s"@^TG}tg[k'-#G}f[k'-#@'!G4@A"'"@'- A*:G/-Mmw J@w@Jw`JЄ}j[k',# D1?!waI'H 4 A 䁶fIA@^!)EGfIA! 05B؄}j[k'@,#E}p[k'$,#G 05B}q[k',# D _!waI'H 䁶fIA@^!JEE}n[k'+#GfIAA- E!5 @?w I}sq[k'+#GE@EwJE}>q[k'P+#GKG/G@'Xǥ祧G/"}f[k'+#G؂"}f[k'*#GE@EEE}@[k'*#D!waI'H- 䁶fIA@^!)EE}n[k't*#{GfIA!uEE}pn[k'@*# GE}ao[k'$*#G/^>^~ (0ޥ8CkG/')##^" }Oh[k')#(=G4G!DG/ED@",cHA"H4@aD@b^~ ( F),)H!'H'H 1FEA G 4 A),)H!'H'H@GG/G/JE0}@[k'4%# 4 A),kA#FA)HBbA!'H C@'Hm!C-@A^>^~ (CkG'$##^>^ F 1FC_ >A @4 D G/G)EJE8}\l[k'p$#^>^CkG_$ BH"D!"@  "D!#@  P? !W%HAD@0tCDPkG/GGk'###^>^~ (0޵81F/ FAA[ %vH@I/G/G/(J%ND$@A,#@AH'`@ !5@o >G/!5@ !@8 @%,%H!5 @4 X%2 BA".D!(@ $bHG/G/G/" D!U @ A@"#D!(@ 4A?PA_$0BH"D!(@ H=1"E TGP}ad[k'"#A bA/ BD BAG/i`F!U@@ X!oJE DH=1""@`AgJ@h}@[k'"#!5@@ `H= 1"w`J@`@$H=81"֢HeFh}@[k'!# 0`A mA !A?`H=H1"@h}@[k'!#@*)Ep}S[k'x!# D`_ E'I#/I*"WEH05B0JH=P1""D4(DpD*P} d[k'(!#G/G+.D!5C@t 7C@ !uB@h !B@V G!T@ T@ !uC@j yG!5T@& uG *4G#WeH@"GH#D4D%D("D*%A,4@AHAJ@!BJ@#D5D"%A,4@AHAJ@@!BJ@%D"xG/G 4G*#WeHvH"GH#D44D$D("D*%A,44@AHAJ@!BJ@#D5D"%A,44@AHAJ@!BJ@$D"TG/G*_ "WEH"D(4&D*%A,"@AHBK@JCG/J? !W%HADj4FDJ9kEG_J? !W%HADjTCDJ-J? !W%HADjCDJ%j#G/JE4G_@*p}R[k'#(%@A.*"@AJ DRKBx}R[k't#_ +"WEH"D"D+Ì4E/JAAA?4G^>^~ (0ޥ8Ck'##^>^~ (0޵@]4G" FFi 1F RF? C!W%H sFADANDC 䀅=AA!=@k@]kEE}-~[k'|#j.I D jJE}Q[k'T#}J#!"@ 䠅=)!!e#J}!"@; _$%BH"D5 䠅=aD!uB@ !B@ "b@!@A@ "")A@!$@A@?i_ #"WEH"D#i#"D#G/? !W%HD"D#G/]H"4G"}b[k'4#jG/=!e =I "#WeH#D4#D"I "vH$D"IA@)IA@)"#Dt"D"i#"I$D"D#*#!-@ `p"]kEH=1"E4G"h}@[k'X#H"}jb[k'@#-G=!) i_ #"WEH"D"D#_ $vAH#I"D#D$)}!@I#è=! ? AA H"}Db[k'#G/GkEE}n}[k'#+,+H!'H'H!+@ @}=S,ISHD})Q[k'<#@=]"p}Q[k'#_ "WEH"D"D ))è=! kEE3G/=! _ $vAH#GI"D#D$"I? d!W%HvAHaD"Dè=! =!!5 @ $dHfD!u@@ %WHeDt%D$i!a@)"GI? !W%HvAHD"D#=!!U @ iCFD!!@| EDT%D#xG!5@@m %WHeD#D$i!a@)"GI? !W%HvAHD"D#=!!U @a iCFD!!@\ ED#D#XG=!q =!!5 @H $dHfD!u@@ %WHeDt$D$i!a@)"GI? !W%HvAHD"D#=!!U @5 iCFD!!@0 EDT$D#,G!5@@! %WHeD$D$i!a@)"GI? !W%HvAHD"D#=!!U @ iCFD!!@ ED$D# G=!% i_ #"WEHTG"DT D#=! =!!5 @ $dHfD!@@/ %WHeD%D$i!a@)"GI? !W%HvAHD"D#=!!U @ dfD!UA@ eD%D$G/!uF@ eD&D$G/!@@ eD'D$G/!U@@ %WHeD4$D$i!a@)"GI? !W%HvAHD"D#=!!U @ dfD!UA@ eD$D$G!uF@ eD&D$G/!@@ eD&D$G/=! =!!5 @ $dHfD!@@. %WHeD$D$i!a@)"GI? !W%HvAHD"D#=!!U @q dfD!UA@ eD$D$hG!uF@ eD4'D$aG/!@@] eDT'D$YG/!U@@M %WHeD4%D$i!a@)"GI? !W%HvAHD"D#=!!U @A dfD!UA@ eD%D$8G!uF@ eDt'D$1G/!@@- eD'D$)G/=!A =!!5 @ i_$BHD!u!@ =!!5 @ #"D!%@ ? !W%HD%D#_ $vAH#GI"D#D$"I? d!W%HvAHaD"Dè=! =!!5 @ ?$d"HaD!#@ gHU@A5 @"D ? !W%HaD%D$_ $vAH#I"D#D$)CG/_ $vAH#GI"D#D$"I? d!W%HvAHaD"DG/G=!!5 @/ I?$B"HAD!#@( GHU@A5 @"D# kEE}:{[k'#D!5 @ wH#@ i_ #"WEH"D&D#_ $vAH#H"D#D$)G!!@)è=! _ kEE$vAH#GI"D#D$}{[k'#IA@)}G/=! _ $vAH#GI"D#D$IA@)bkè% _ $vAH#GI"D#D$)!@)4G% )E_t@=TG=!m )_ a"WEHAbDqDaG@? Dv!H#GIAD!-BCDD =AGH? "5@@d"GH!W%HvAHaD"D/GK,KH"GHGH? "F@d"GH!W%HvAHaD"D G/=!9 _ $vAH#GI"D#D$i? C!W%HADAADC è=!% _ $vAH#GI"D#D$ ()B 丅(=}$A#N@","H$)4G!@) G/H}s"G)Eȅ}_[k'#G^>^~ (0ޥCk'X##^>^Ѕ= FI "$WH$D"(=A",i"H]@]A#@)4G"]}*TG"#%I"$DT"D"j. *IjJ}N[k' #IA@)*")!@)^>^CkG'` ##^>^ F)!5 @#H)@؅}@[k'( #G/G)4 @IA,AH@!uB )E}@[k' #-G/G/G/)!5 @#H F)@)E؅}@[k' #)4 @IA,AH@4B 䡕DAB"D?)!5 @#H)@)E؅}@[k'@ #G)4 @)^>^Ck' ##^> ^(~08^@]*,*H 4G!5 @XJ XCH=Ѓ1" CCkE}@[k' #kEG}y[k' #GC D}y[k'x #j.)E^DjJR@B4@F}O[k'L #Ѕ=j.`p"H=؃1"AjJC~h}@[k' #H" G}V^[k' #XJE^> ^(~08^Ck' ##^RF!5BsF BD}!{[k' #G/RF_^CkG'h ##^>^~ (0޵8@>H=(1" F}@[k'$ # D@)E}][k' #H0"}][k' #H8"}^[k' #GG/HH")E}][k' #JE@ݥ 4G_G/G/G*!5 @#H*@JE؅}@[k'` #G*4 @JA,AH@4Ah *!5 @#H*@JE؅}@[k' #G*4 @JA,AH @4AT *!5 @#H*@JE؅}@[k'#G*4 @JA,AH @4A@ ]8" C G. BDG/G/G/*n!5 @#H k@* @JEH؅}@[k'4#HG*4 @JA,AH),"Hc HGHA)H4@@aDi< @NK@","H 8$ 4`A aA?NK@",A"H"<nE@EE8_ D?JE}@[k'# H`"H=h1"GH`"H=1"}][k'H#)E^>^~ (0ޥ8CkG'##^>^~ (0޵8@]@4GX" RF+, 1FsF+H G"A)6 Hz@`G/G!I+@T @@F.4 @a,1@FBJaqHRHE_GtG/!'A 4GW 4A"`HK@","H!(@ cD/" IK@T@@ F!1 F1H}Lx[k'#m 4 A" Ia@-K@","H!(@ 4@A?A! H+@T @ DB1 DAH!J@, AH=1"EBDJEh}@[k'x# C G GA! H+@T @рFA.4 @a,1FBAJH=Є1"sHTHA 4 Ah}@[k'# *A?H" }\[k'# A!I+@A,AH!A)6@H?@=H=1"@^ E(}@[k'# }k\[k'#4G^>^~ (0ޥ8Ck'`##^>^ FH0"0]GJE GH_H8"8]JEGA_өC)E^>^Ck'##^>^ 1F F)E@}[}[k'#G @JE)EP_G/G)E_^>^CkGQ1BQ2B 1 BDk'X##^F!5 @1F P=1"X}\[k'$#G/wJ@`}# A@ P=(1"X}z\[k'# G/G#AA@Gh}c[k'#^CkG'##^F!U @1F J P=P1"X}Y\[k'd#G/p="J!@DA@x}@[k'0# DGh}c[k'#G/G^Ck'##^FF!5 @1F P=x1"X}.\[k'#G/GwJF!U @ J P=1"X}\[k't#G/p="J!@DA@?B}@[k'<#@^CkG' ##^>^0 E!U @ 1F 'I P=Ȁ1"p="/I!@DA@}@[k'#4G G/GP=1")EJEX}[[k'#^>^CkG'h##^>^0 E!5 @ 1F P=1"P@D!5 @ P=81"BDÐv Iv@HB?B}@[k'#4G GP=`1")EJEX}[[k'#^>^CkGQ1BQ2B0 @Dk'##^>^~ ( 1Fl F RF`D sF C@D G/G/G!b@ BDB@D?@D!U @ GH lG/GLL@D!5 @ w@HA@~ 䘆=AA@!=@kG/G}Z[k'#`=HA DHA)BAbG/)E4GkE}~[k'l#)E4GOG/EtGkE}~[k'<#EtGCG/ TGkE}~[k' # TG7G/ GkE}~[k'# G+G/=]}0"C! H*@"@)$@%GȆ=]a0"!#@J`@I @ø]І=(Ba"5@@4`@"C@a!@bB@J @I@@0 GkE}o~[k',#0 GkE D؆}Y[k' # DkE,P@AE4F}9c[k'#G kE,P AE4F}-c[k'#C^>^~ (Ck'##^D!U @1F H P"}Z[k'H#G<G/D!U @ H p="H!H`}@D DP=ȁ1"D@$@BaD p=a!H`]hf DP=؁1"#@3@Aw`J p]!HB`} DP=1""@AwH}@[k'l#`=Gh}b[k'P#^CkG'8#P#^> F1FC}@[k'#4@P"}VZ[k'#G )EC}@[k'#4@@> @4G^>CkG'##^FF7 @1F P= 1"Gp="J@DD@F7 @B !J D$@!BD}[k'#P=H1"X}@Z[k'#^CkG'##^>^~ pP1F`Ev@H7 @#6@H P=p1"kEX}%Z[k'#G/p="oI!@DA@M``]*!aA p*`*@G/ kE}I[k'0#* D!!A P=1"E}@[k'# D P"|G/ kE)E}9I[k'#P"oG P=1"E}@[k'# Dh j. kEjJ)E }H[k'l#PȂ"WG`=`!`=aWG/G!5`@J `]*!aA x*h*=G/G kE}>I[k'#* D!!A P=؂1"E}@[k'# D3 kE)E}H[k'#P"$G/ P=؂1"E}@[k'h# D j. kEjJ)E }iH[k'<#P" G`=h!`=a G/GP"}VY[k'#G4G^>^~ Ck'##^P1FFv@H!5 @"6@H P=(1"X}`Y[k'#GwJ@`=`G/G!5@@ PX"}(Y[k'8#G G/`=hG(}@[k' #4@C^Ck'##^0v H!6 H `=`G!5 @ PX"}Y[k'#G G/`=h0}@[k'#@@4D^CkG'`##^>!5B5 =B QG!UBF MG`=`)pI!"@! )}H[k'#I!@ )};H[k'# G/i. )iJ }G[k'#`=`8}@[k'#`=p!A`!A&`=h)xI!"@ )I}H[k'H#h 8}@[k'4#x)Ih)IG/`=h@}@[k'#GP"}X[k'#^>Ck'##^>P@D BD b`D G!C@ cDc`D?p]!oHB`= D"@ !H}@[k'P# P}@[k'<#^>CkG' ##^>^~ FJ@D!5 @ 1F `=!P=1"w@H)E}@[k'#p="OH!@DA@" *j)EwJw Jw`JkEX}u[k'#C^>^~CkG'X##^>^ F 1F E@E5@5 @CC8`D8DB@!@CD$D @ *AG!5@ w Iw@IG/Gp}!/I"OIc D@D#@C@"`}@[k'#'IGI A@4GG/GC C^>^CkG'P##^>^~ FK@E 1F G/G!jA JEJ@E?, E G/G/G/G!A )E) E?@E!5 @ `=!!*@  E!5 @ `=!!)@ kEEh}P[k'p#GJE)E_@E!U @ GI 1F 4G A aAG/G/G/kEE 4@A_ӡIAD A aA?^>^~ Ck'##^>^~ (1F FRF$ sF F F F G/G/G/!@ 1F$ F? F !5 @ 'J EE}_[k'0#PJE4GaG/1/JEE}_[k'#CJEEQ AE4 FSG/0 F G/G/G!B 1F1 F?J@D G/G/G/G!BA BDB@D?@D!5 @  F!5`@w@H  D'`?AkE pp"P=1")Ex}@[k'#Pȃ"}W[k'#GG/G!/J"'I)5 A"D4 A+ aA@)5 A4 Ak aA?DcDEE}a_[k'#kE^>^~ (CkG'P##^>F@D!5 @ `=P=1" w@H}@[k'# ÁGH Gp="OH!@DA@^>Ck'#`]"!1@b0 BDG/G/G/B0 FF G/G!Q@ 1F1 F? F!5 @# #,v JbCHA#HADC<B0 F4`@ G/G/!B 1F1 F?$!1@?`=!!1@ #,4GA#H#<kG/GkG/Gk'##^>^~ (0޵8 1F FL RFsF@EF G/G!A JEJ@E?- E G/G/G/G!A )E) E? E E)E_ `=G}q[k'#EEED$@E* JEV_3 , HkE `]G/G/G/"+ , H aAA @4 D+4@ , H aA?`=!EEE+ aA}^[k'#GG E P"}V[k'#GG/P=1"JEP=(1")EEX}*V[k'#G/GkE^>^~ (0ޥ8CkG'`##^`=!F Q@D@D@6 FF2 J!U @ P=H1"X}U[k'#,P}xs"D4G}dV[k'#G"G/G/G/p2@?`A@ B@F@ G/G/G!P@ FF?!p@?1 @D^CkG'0##^q`DF| D@HG!U @a@ P=1"DX}U[k'#}b@ G/G/G/!p@ FF?Gp2@0@` a@b@`D @ @cD G/G/!p@ FF?!@?@ PȄ"}`U[k'#KG/GF !5 @ J P=1"X}vU[k'#<G/GD`D cD G/GG/G/!p@ FF?F`5`@CAD@P=(1"X}TU[k'P#G!U`@ "J!HADGP=P1"cDX}CU[k' # P}s"D4G}U[k'#G^CkD!U @Q GkG14G"H!7'H FAD!`Q@D1F?4GGH!OH @0B @!BG/G/#0@ @a@0B? A@0G/G0BPBk'##^DF DG/Ge`D!U @G D DG@D!U @? GHgH@_@: !oH"GH"D !5@A @  @%@/""A@!!@##a@?A@ @@"@@!5@A @  @'@/G/G/G/""A@!!@##a@?A@ @@"p2B@@@ P}xs"D4G}U[k'#G^CkG'##^RFFFD@F GG/P}s"TG}T[k',#GG/GGoG/ @G/f`DD G/G/!@ cDc`D?!@V `D !5 @ gH fNá@@"D HG/`D 2B?pƴBŴ;GG/G2B?pB@`gH?!5@@A @  @%@##a@!!@$$@?A@@@e`D@ @G/G/!@ cDc`D?`D!U @ gH @@"D?G/`@@@?A G/G/G0B00B0A!_^Ck'##^>^ RFXI FpiJE !5 @ 'J * DJE)E}K[k'#GG/X JE^>^CkG'p##^2"$@RF1 D!D@F!U @ P=1"X}S[k'#&G/G4G"Jr!7'HADF!5 @ P=ȅ1"X}S[k'߽#G/GwJrAB(@G/x2C!"@ HA(@"@^Ck'h߽##^>^ RFJ"!(@@ P}s"D4G}S[k'߽#G:G/G" 1 E@ )E G/G/!"A BDI@D? @@@D !D`!5`@ GH @@G*aD1JEF3hB}~[k'\޽#P("}*S[k'@޽#G *^>^Ck'޽##^>2AB2!B"2 B@! !A)2$@2A@}l[[k'ݽ# !AD)E^>CkGGJ"OJF 5 @!HC@ADPB `d@q@G/!!!@#a@""A@@@@!B1kG'ݽ##^ѤD P=X1"F@D!U @ GH `P=p1"DX}R[k'ܽ#!G/`=cD!"OHC@%5@0BD@!HpBADFPB @@/G/G/!!!@$@""A@@@^Ck'(ܽ##^>^~ (0w I E!5A?@5@@!C aE 1F `P=1")EJEX}R[k'۽#*G/`RP-2@!@ E 2A *B P}s"TGJE}S[k'`۽#G}_R[k'L۽#*!P-J4 @"*"@*`=PAAA"kE^>^~ (CkG'ڽ##^>^~ (0޵`= sFP!M Fa1F RFbA E A *B P}s"TGJE}R[k'\ڽ#G}R[k'Hڽ#*J4`A"*"@*`}+EJE)E) !A )E) !A)E )E !A}xZ[k'ٽ# P+aK)EG/GG^>^~ (0ޥCk'ٽ##^>^~ F, E!5 @ 1F P=1"GL@Ew I !5 @ GI P=1"JE* E P=1"G/@'IA@ P=81")EkEX}Q[k'ؽ#(G/GRJJ@RA*  E 2A +B P}s"TGkE}GR[k'dؽ#G}Q[k'Pؽ#+!K4@A"+"@+,4G*^>^~ Ck'ؽ##^FF!5 @1F P=`1"/G/GD@DwJ !5 @ GH P=1"BD F P=1"G/`Ja@ P=1"GRR@ P=1" G/FBb@ B P=81"DX}Q[k'׽#G/4G^CkG'ֽ#]`=!  "#@"kG'ֽ##^=AFp"=1"rRBR@Bȇ}@[k'dֽ#"Ї}-Q[k'Lֽ#G؇}Q[k'8ֽ#^CkG' ֽ##^>^=( ]}sS[k'ս#( }US[k'ս#=}JG? #@CD^>^Ck'ս##^>^~ (0޵ F] 1F(% RFlAB!5 @ aD"AAD!$AsF =aB A!I@A#@! G/G/G/!I@B#@"!+@ "!,@ (%4 A!5 @ AD!$A B A!I@A#@!?=Aa)AA"@!# =(!]7 HjW HA@ b@`8"}r[k'hԽ#=Aa)AA"@a]*b4 @*i@#,bIA#H4GADC<G^>^~ (0ޥCk'ӽ##^ݤ](&BB!5 @aDb@AD!e@ =!C@B$@"!0@ "!1@ (&4`@!5 @AD!e@ B`@!C@A$@!?=Aac@B"@"!0@ "!1@ B4G@"Ї}^P[k'ӽ#G^Ck'ҽ#=](!BB!5 @aDa@B"@"!0@ "!1@ kG/GkG/=}A(#ݤ@!5 @AD!DG/4@'Da@E @@#!0@ #!1@?!@ &@!?GkG'ҽ##^=](!BB!5 @aDa@B"@"!0@ "!1@% ݤa@A%@! 䰇=}AD(#D@!5 @AD!D/4@&Da@E @@#!0@ #!1@ !@ (@!?G 4GGh"}~[k'ѽ# ^Ck'н#!uB ]("G; BD臽GG/GC@","H0@ %@" B@"(&4`@a@@?kG/]("G BDݤGG/GHC@","H0@ &@" %!5 @%('4`@a@@?k'Ͻ##^>^~ (0޵8Q F@D!5 @RF 1v@H"6@H F!5 @@^ G=(! Gw J } G/=!-@A,@AHE@ 臽%AW@@ K#!A@ #'H.@| BD!G/G D@E JE G/GG/G/!QA 1F* F? F C5`@"D` 'J.@] +!!BZ Y`p/!A }xs")E4GE}O[k'Pν#4G؇}O[k'<ν#臽%AA@D!5 @ +) !AI+ !A) !A4GG/G+) !A!OH)+ !AGH) !AA @4 D) !A臽%AA@D!5 @ +) !AI+ !A) !A4G +) !A!OH)+ !AGH) !AA @4 D) !A+) !AI !A=(! 4AA Ag?=!!A)^>^~ (0ޥ8CkG'̽#]H"!B P"!B X"!B =hkG("!B 0"!B `k8"!B @"!B pkGk'8̽##^F!U @ J @F!5 @ w@J P!  1F }[k'˽#G^Ck'˽##^>^~ (0޵8 F 1F RFH~(}[k'˽# D JE)EC0}V~[k'h˽#4@ GX!5@ =@^!)EbB@BA@JEEb8}}[k'˽#G=@(A7@H,W@HD@b@ #@4D 8"} }[k'ʽ#=@Aa@A"@A!a],b4 @,d@)EHJEC,EHH>BCHDa#H})E"D#^~ (0ޥ8Ck'ɽ##^FC@D !5 @ GH "#C@D !5 @ GH "#C@D !5 @ GH "#}3,#C3HP}V[k'(ɽ#^CkG'ɽ##^>^~ FI 1F@D RF !5 @ GH ")I@D !5 @ GH ") )C0}}[k'Ƚ#!5@ = ~!#@A,AH!kB =Aac@A"@]! B!"@ 万p"=1"kEȇ}@[k'Ƚ# =1"G4@ =Ȁ1"JEX}M[k'ǽ#.G&=(!]7 HjW HA@ b@`8"}>|[k'ǽ#= A)a@A"@!)"@A!]*b4 @*d@C,kEa#HBCH"D#<= ^!bB@BA@^>^~CkG'ǽ##^>^~ FI 1F RF@DI !5 @ GH ")I@D !5 @ GH ") F ") F "Ї}/M[k'Tƽ#GGC0} }[k'4ƽ#!5@! =0~!#@A,AH!lB =Aac@A"@]! B!"@ 万p"=1"Eȇ}@[k'Ž# =1"*G/G4@ =Ȁ1"!G/!5@ ]0>Ba!@A"@]! B!"@ GLG/@E !5 @ GI @+AA 0+AA =01"JEkEX}L[k'Ľ#5G/G!5@ =0^!bB@BA@B(G/G=(!}7 HkW HA@ b@`8"}w{[k'|Ľ#=0A)a@A"@!)A!]+b4 @+d@C,Ea#HBCH"D#<4G^>^~ CkG'ý##^>^~ FI 1F RF@DI !5 @ GH ")I@D !5 @ GH ") )C0}W|[k'lý# 5@ =P1"&G/G=0~AC@","H!,@ =Aac@A"@]! B!"@ G G@E !5 @ GI @+AA 0+AA =01"JEkEX}jL[k'½# G/G=0^!bB@BA@4GB^>^~ CkG/'P½##^>^ 1F*,*HRF)'IA*H*<'I`}Rg[k'½#*,i*IA*H !E*=^>^Ck'##^>^~h= RFi_IA@))kEJAAI^>^~CkG'x##^>^~p=! F 1F !D*G/G/G).J0JJx}@[k'#)4 @)G/).J0JJ}@[k'#I","H!'H'H!$@# )4 @) p=G/).J0JJ}@[k't#I","H!'H'H!+@ )4 @)?p=!4G+&G/p=).J0JJ}@[k'#i#,#H!H'H$@%@8@D8 DAD @!@7 @ 4`@) +4GGp=*G!^>^~Ck'x##^>^~p=! F 1F !D*G/G/G).J0JJx}@[k'#)4 @)G/).J0JJ}@[k'Ծ#I","H!'H'H!+@# )4 @) p=G/).J0JJ}@[k't#I","H!'H'H!+@ )4 @)?p=!4G+G/p=*G!^>^~Ck'##^>^~p=! F 1F !D*G/G/G).J0JJx}@[k'#)4 @)G/).J0JJ}@[k'T#)4 @) p=G).J0JJ}@[k'#)4 @)?)4G+G/p=*G!^>^~Ck'##^>^p= FG/).J0JJx}@[k't#)4 @)G/I","H!'H'H!AA 4@@)4GGG^>^Ck'##^>^~ F 1F4G 4G_G_JE}[@[k'# D AA +kE4 @JE0_ DG/ G)E^>^~Ck'`##^>^=! F 4GG*_/G_C G}/@[k' #G_ӠC D ?A >*G/GG_C G}@[k'#C_ӠC D ?A (>}x[k'#  G)E^>^CkG'P##^>^~ FtG 4G\_GY_䰈=!,QC G_C_ӠC D ?AG`08>}x[k'ȹ# ?G/ C CJE)E_.JE)E_*JE)E_.G0_#C_ D(`P>X"4GX>CX>P_ D`@H>X^_ X>4G @/A^@&@ ! X>0@@ A@@? G/@H>G_ G/ GkE^>^~ `#kG'##^>h=p= C!}[k'h#)>! G/G^>CkG'(##^=1/J! F!B1Ȉ}[k'#^CkG'෽##^>^~ (0޵8 F E1F )E G/G!%A DD?䰈]Ј=J8!"@!$@ A@ @؈"}kI[k'D#G/D h.@3 4@*D,Ga$HBDH"D$^~ (0ޥ8Ck'##^>=))_I4@@)",A"H"< ^>Ck'ȯ##^>=))_I4@@)",A"H"< G}O[k'|#^>CkG'`##^>^=) RF)_I4@@)",A"H"<؈=@1"IJE}@[k'#^>^CkG/#^>"AH!!H@D D D@DA @"DA @4 D14`Dr4DCkG#? 0@1@0JvJ2@vJF0FAD>^Ck'H##^>1^CCC F}[k'#=!)>^ ~)I$Ai^>Ck'ح##^>^F`D!5@@ 1F w`H ~@C@D!5 @ w@H ^ >[?XG=!!"@, #C }[k'L#\G/G_)E`D!5@@ w`H ~#@C@D!5 @ w@H ^ >[?XG=!!"@ #C }[k'# (=! 0}F[k'#G G/G_@XG ? X4G G@^>^CkG'@##^>^~ ^ F@F 1F!5@@ sF w@JH^ G/G7@R@D!5 @ w@HH^H>[?X G=!!"@( 2R }E[k'#\JE@F!5@@ w@JH^G@R@D!5 @ w@HH^H>[?XG=!!"@ 2R }%[k'# (=! 0}YF[k'#GPG/G!UiA"!HA@?8=AA@!=@?kG/G@X.G/0@X*G/P@X&G/p@X"G/@XG. )E,G/GXG/@XG/XG/@XG/@XG )EG/GCCC}~[k'ܩ#=!)0>8^@~)I$Ai^>^~ ^Ck'##^>^~ ^q F`DQ !5 @ gH c`D!U @Q gHO @]!oHB D"@aC,D!5@CH wHH G/7d`D!5 @ w`HH~H>[?X G=!!#@( $D }~[k'#\JED!5@@ wHHG@d`D!5 @ w`HH~H>[?XG=!!#@ $D }e~[k'# (=! 0}E[k'#G-G/GkE!M@ !N@?B\\H}@[k'# \P}@[k'#B\\P}@[k'#`@X\CCC}"~[k'h#=!)0>8^@~)I$Ai^>^~ ^CkG'##^>^q`D F !5 @ gH c`D!U @2 gH0 @]!oHB D"@Ab,D!5@bH wH8 G/Ge`D!5 @ w`H8~8>[?XG=!!#@ %E }}[k',# (=! 0}E[k' #GnG/G!uHA"!H7F@?X=AA@!=@?kG/G\`}@[k'#[88ޤ!AA@ 4 D)QG/\h}@[k't#7G/\P}@[k'T#/G/\p}@[k'4#'G/\x}@[k'#G/\}@[k'#G/\}@[k'Ԥ#G/\}@[k'#G/\}@[k'#\CCC}e}[k't#=!) >(^0~)I$Ai^>^Ck'0##^>^Q@D F !5 @ GH "1Q@D !5 @ GH "1Q@D !5 @ GH "1Q@F!5 @ Q@D!U @ GH F!5 @ G(G/@="OH!=@D=(1"A@ w@JbwJ}@[k'(# }@[k'#\CCC}}[k'#)* >(^0~*JDAj^>^CkG'##^>q`D =C)!"@ GG#C }|[k'\#\h =81"}@[k'<#4G^>Ck' ##^>}I[k'# DG ȉ}@[k'衽#C)EЉ}WJ[k'̡#G^>Ck Prolog execution %s(%ld). CPU time = %ld.%lds %s S㥛 haltedwarning: *** %s *** fatal error: *** %s *** _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? *** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s [].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatbp_stateeditor_programediteditor_filenoname.plversioncodeboardnot enough common memoryadd_engine: engine table fullchoicetrailheapmessagesadd_engine failednot enough engine memorydel_engine: engine notfoundh:s:t:c:b:d:a:i:q:%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]ЁPpppppppppp0pPBinProlog %d.%02dCopyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s interruped(%ld)...restarting string table overflow%ld symbols, %s!!! symbol hashing table (almost) full(%75)unexpected!!!%s/%ldarity limit exceededno definition for: main/1integer expected in halt/1trailing in unifyunifyvalue trailing*** bad instruction: [%lu] *** undefined in EXECload_engine: bad engineanswer: bad engine type@` 0@*** suspend_engine: %ld bad engine type %d unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationPp `P Pp`ܬ``@XФ0@@`p` P@0@p`8pи00 pp@ p0`0Pp 0@`Pp0@p@p 00P@`0`pPе@ ,@expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedbad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op` p00 0 p0%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declarationrb??? file not foundbegin loading %s...%s ...finished loadingunable to load kernel fileinstruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). systemuserunix_argv's 1st arg must be integerunix_argv's 1st arg not in rangeunix_getenv's 1st arg must be a symbolunix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbolunix_cd's 1st arg must be a symbolunix_cd/1: bad directoryunix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this processP@psymcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ldfile error on 2 arg in older_file/2bad old file name in older_file/2bad new file name in older_file/2bad file name in see or tellrbunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operationarg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operationunimplemented option in seen_tell%ldarity=%ld functor has bad arityboth args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2bad constructor starts 1st arg of det_append/3det_append/3bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2term_append/3value_trailingbad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integeranswer space overflow in findall_store_heapcopy_term overflow in findall_store_heapbad continuationcompound continuation expectedbad argument for dcg_streamvalue trailingsetarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..aritychange_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe%ld bytes, %s!!! hashing table (almost) full(75%)hdef/3 required before using hset/3culprit->hindexCOPY_KEYSStamp found %d, expected %d hash op on protected objecthtable full in hash oparg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3def/3 expected before set/3, rm/2string buffer (-i option) exceeded or infinite term%ld%sbad arg in arithmetic operationPU`UpU U UU U U UUUUUUU`[YYYYYYYYYYYYYYY@[ [YYYYYYYYYYYYYYZYZYYY@ZYYZYYYYYYZ[%ld%-se%-ld %f@ $~ >  > >  ~ ~   >   ~      > > V > ~ ~          vx`%P n@""$pH&P-X& h | "h$h| `(4x',`.(0`( , 1&غ&PИ ؾ``hP؛x0@ȝxp8hH8H0xp@X`/022'+`%p`hxxs@"H"P"X"`" Pzx ``%8  `((hxPzs p 8 (Px`spp" P&`%@p   $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,0488 < @ D H L P T X   $(,048@DHLPTX\`dhlptx| ` 8a   X 8  x 8   8   8  $  8( ,  80 4 ` 88 <  8@ D  8H L   8P T  8X \ H  8` d  8h l H 8p t  8x |  8  8 8  h 8   8   8  H 8   8  x 8   8  8  ` 8   8  ` 8   8  H 8   8  8  8   8   8  p 8  $  8( ,  80 4 P  ` 8a 8 < ! 8@ D " 8H L " 8P T $ 8X \ `% 8` d & ` 8a h X& 8p t & 8x | x' 8  ' 8  `( 8  + 8  , 8  , 8  P- 8  - 8  . 8  / 8  (0 8  0 8  1 8  2 8  2 8  (4 8  n ` 8a   r 8  s 8  t 8 xt 8  $ Pz 8( ,  80 4  88 < P 8@ D  8H L  8P T P 8X \  8` d p 8h l  ` 8a p  8x |  8  p 8  @ 8   8   8 И 8  ؛ 8  ( 8  ȝ 8  x 8   8  p 8   8   8  @ 8   8   8   8   8   8   8  $  8( , 0 80 4  88 h 8@ D  8H L X 8P T  8X \  8` d P 8h l غ 8p H 8x | 8 8  x 8  ؾ 8  ` 8   8   ` 8a   @ 8   8  x 8  h 8  P 8  h 8  x 8   8  ( 8   8   8  P 8  ` 8  h 8   ` 8a  $  8( ,  80 4  88 < h 8@ D  8H L X 8P T  8X \  8` d  8h l 8 8p t  8x | H 8   8   8   ` 8a    8   8   8   8   8  H 8  0 8   8  @ ` 8a       Xl ` x          < @P TT Xl ` dl ppt                $ (, 004H @ DDH\ `t t               $8 ,0 @ DL P\ ``dx p ttx            , (  P  T X  \ h  l l p  x  | |                       $ $ ( < H \ l  p p t                        (    ,  0 0 4 H <  @ L  P P T h \  ` l  p p t  |                                        (    ,  0 0 4 H <  @ L  P P T h \  ` l  p p t  |                                        (    ,  0 0 4 H <  @ L  P P T h \  ` l  p p t  |                                    (   , 004H < @L PPTh \ `l ppt |          ( H\ ` dh lp t          $8 8L L PPTh h| |     , ,H\   $ , 4 8HP TTXl h llp |         $ 4@ DH LLPd x     , X \lx |       $( ,,0D `t h     4 8< @@DX `t   d hhl   #  #  #  #  #0 (H\ \ ``dx x ||%       $$*(< X ht x +   +   + 4 8@ DD+H\ `t x +   +   +, DT X` dd+h|   +        , $ ((,@ 4 L                  $( ,H LL Pd p              $$(< <` ddh| x       ( ,,30D @ D HH3L` X \` dl ppt |               $     $ 8 0  4 4 8 L P  h  p  t t x ,       P             ! $! 0! 4!4!=8! @! D! l! p!t! x!x!|!0 " 0" 8" <"@" D"L" P"P"T" \" `"d" h"h"l"  x" |"|""4 "L #  # H# # ##?#< # # # $$$ ($ 0$ <$ d$ $ $$$ $$ $$$\ $ $ $ $ $ `% % %% %% %%%` % %% %%%| %X&\ p& x& & & & & &&& & & & & ' ''' $' ('(','0 8' <'<'@'D L' P'P'T'X x'| ' ' ''' ' '' ''' ' (  (( ((( $(8( <(<(@(D `(d (L)p) t)) ))) ) ))) ))* ** *** $* (*(*,*0 D*\*|* ** *** * *** * ** *** * *** + + ++ ++ +++ , ,, , ,$ <, P, T,T,X,\ h, l,x, |,|,, , , 0- 4-4-8-< P-T h- l-l-p-t - --- - - - --- d. h.h.l.p . . ... . .. ... . / ,/ 0/0/4/8 / 0  0 00 (0, @0 D0D0H0L p0 t0t0x0| 00 0 000 0 1$ L1 \1l1|11111 11 111 1 111 2 82 <2@2 D2L2 P2P2T2X `2 d2d2h2l t22 2 2L3 3 333 3(4, 4 4445 555 45P5x55 55 555 6  6 66 D6\6|6666 666 7P7777 777 8P88 888 88 9 $9$9(9, D9|99:  :: :: :$ ,: 0:0:4:8 P:l::: :: ::: ::H; L;X; \;\;`;d l; p;p;t;x ;;;;;<<<T< X<X<\<` l<< <<< <<=  = == ,=X====D> H>T> X>X>\>` h> l>l>p>t >> >>> ?8?? ?? ??? ? ??? ,@\@ `@`@d@h @@A AA AAA  (A ,A,A0A4 AAAdB hBtB xBxB|B B BBB BC CCC 0CxCCCC ,d \dld pdpdtdx> dd ddd> d e $e$e(e,? 8e 0;}X=?ACpEG0I>0K. Mj - lH>0  ' X-xV o` @ U m P0~@ N( ] y  ! #~@(%H`(>0?0Y pP ~@     H ^xqP"4P% % .VP     >08P 00  4P! #  %&0'u>0 )+-T@/@13x57 h"9 #;$= `%?8%AYX&CrH'E>0(G~@)II 0p+K ,M  A~@   YP Qh r P  ;0@o@ p 5  X   D H k 0` 9 ( Rp c@8 4M X%0A0 PP (P @ ]@0 K F hHXF@H0xF`PHPFHp%F8%H-F@-H5FT5H`AF4AHMF <MHWF@<WH0 cF`|cHP oNoHpH {N{H NlHHNHF0HF 0H8F@0H0hF`0HPN|HpN,HHNHFdHxNHN  H-F@H-H0`=F`d=HPGNGHp`RF<RH`F`HHoFLoH{F{HF HF@H0F`PHPFHppFHFHF`H0@P` p"',16;@EJ(O8T@YP^`chhpmxrw| 08@Hh (8 "! ("-84`9>CIOU$[HKPP F H!N@H0 " F`t HP"&N<&Hp$-F-H`%5F5H >8CPHxMRW\HKP& F T HX&F@tH0&%F`%HPx'2Fd2Hp'FF|FH`(VF\VH+\F`\H ,fFfH,pF pHP-|F@P|H0-F`HP.FTHp/F<H(0F|H0FxH 1FH2F H2F@H0(4F`P:HP @ Xp$).308H=pBGLQV[`0ePjhotyHKnF (HrN@H0s#F`t#HPt-Nh-Hpxt9N9HPzCFCHMFMHWNPWHPcN PcHpN@TpH0sN`TsHPP}N}HpNpHpF|Hp Phx@Hx @Pp!&+@"0P"9H"A`"FX"THK  F  HF@H0 F` HPp,F,Hp@8F8H@F@HJFJHИTFTH؛[F L[H(bF@bH0ȝnF`nHPxyF(yHpFHpFHFHFH@F HN@H0F`HPF|HpNHN HFDHF,H0F `HF@H0hF`tHPFxHpX'F'H8F8HJFXJHP]F]HغoF loHHuF@uH08F`<HPxF`HpؾFH`F$HF4H(Px 8 ` x        @ H h x  " ' , 1 6 ;8 @` Eh Jx O T Y ^ c( h8 mh rx w |  ( 8 H x    @`p8`HKF |H@F@H0F`HPxFHphFHP#F#Hh*F*Hx/F$/H5F 5H(>F@h>H0GF`GHPOFOHpPSF SH`XFXHh\F\H`(eHjPoxty~@`HKPN pHN@dH0N`HP'N'Hph1N@1H;N;HXFNFHQN QHeF eHpF@lpH08wF`DwHP}N}HpHFPHFdHFxHP&p"HK F T HF@@H0'F`p'HP2F2Hp @F@HIFtIHHTFTH0^F|^HjF jHv{@HK HK@@F pHHh !#%')+-/13579;=?ACEGIKMOh h !#%'h h !#%')+-/13579;=?ACEGIKMOh h h hhru.ccputimequietquietmesbp_exitbp_haltwarnmesfatal_errorlocal_errorlink_haltcan_recoveroverflow_byhdef_stringhdef_intmake_constantshdefaultsmake_byte_arraymake_char_arraymake_hentrymake_atomtablemake_var_arrayvar_array_initmake_stackinit_common_memadd_engineheap_safe_margininit_engine_memis_enginedel_enginecreate_enginedestroy_engineinit_randomstart_profilerend_profilerget_cmd_line_optionsbp_versionstartup_mesinit_bpstart_wamrun_bp$C32$C34$C33$C35$C36$C37$C38$C39$C40$C41$C42$C43$C44$C45$C46$C47$C48$C49$C50$C51$C52$C53$C54$C55$C56$C57$C58$C59$C60$C61$C62$C63$C64$C65$C66$C67$C68$C69$C70$C71$C72$C73$C74$C75$C76$C77$C78$C79$C80$C81$C82$C83$C84$C85$C86$C87$C88$C89$C90$C91$C92$C93$C94$C95$178mes.70$C96mes.73$C97$C98$C99$C100$C101$C102$C103root_wamsym.cmake_symtableinsert_lexsfullatomnoatombaknew_func$C32$C33$C34$C35$C36$C37$C38engine.cunwind_trailinit_orig_wamrestart_origdefault_start_pointheap_or_bp_haltunifybad_instrexec_linkinterp_frominterpbp_prolog_callload_engineload_engine0call_engineask_engineanswersuspend_enginemultitask_enginesbp$C32$C33$C34$C35$C36$C37$C38$C39$C40$133$C41$C42$C43$C44$C45$C46$C47$C48$C49$C50$C51$C52$C53$C54$C55$C56$C57$C58$878load.cinit_instr_lenget_one_intinput_funlink_switchlink_codeinsert_opinit_codeskip_headerloadoperatoriiload_fileload_instr_arrayload_selfload_kernel$C32$C33$C34$C35$C36$C37$C38$C39$C40$C41$C42$211$C43$C44$C45$C46$C47$C48$C49$C50$C51$C52$C53$C54$C55$C56$C57$C58currpredbadcodelastprev_prev_lenprev_lenbuiltins.cstat_usedunix_argvunix_getenvunix_accessunix_cdunix_killstat_leftstats0symcatolder_file0older_filesee_tellsee_tell_atseeing_telling_atseen_toldshell_1add_instrocomparecomparefunctorname2buflist2bufname2listdet_append0list2termterm2listterm_appendcopy_termcopy_from_enginefindall_lift_heapfindall_store_heapfindall_load_heapapplystrip_cont0dcg_telldcg_connectsetargchange_argbp_cons$C32$C33$C34$C35$C36$C37$C38$C39$C40$C41$85$C42$C43$C44$C45$C46$C47$C48$C49$C50$C51$C52$C53$C54$C55$C56$C57$C58$C59$C60$C61$C62$C63$C64$C65$C66$C67$C68$C69$C70$C71$C72$C73$C74$C75$C76$C77$C78$C79$C80$C81$C82$C83$C84$C85$C86$C87$C88$C89$C90$C91$C92$C93$C94dict.chfullhinithdefhsethgethindexhbakhlistop_classvalid_opmake_opop0lvaldefset$C32$C33$C34$C35$C36$C37$C38$C39$C40$C41$C42$C43$C44io.cmake_funcellmake_termmatch_symmatch_varmatch_intmatch_charmatch_argsmatch_list_elementsmatch_termsread0sreadoutswritesoutfoutibuf.24$C32$C33$C34cursorfloat.cdouble_to_intsints_to_doublemake_floatfloat_comparefloat_opfloat_fun2float_funinput_floatwrite_float$C32arith_err_mes$100$160$C33$C34debug.cmain.cmainmaxcputimetimesquietquietmes_iobfprintfbp_exitgsprintfexitbp_haltwarnmesfatal_errorlocal_erroratomtablelink_haltcan_recoveroverflow_bynew_funchdefmake_byte_arraycallocmake_char_arraymake_hentrymake_atomtablemallocinit_common_memmake_symtableinit_instr_lenhinitinit_engine_memis_enginecreate_enginedestroy_enginefreeinit_randomsrandstart_profilerend_profilerget_cmd_line_optionsoptarggetoptsscanfoptindbp_versionstartup_mesc_interfaceinit_bpload_kernelstart_wamsignalrestart_originterprun_bpinit_orig_wam_fpdataatomstampnewatomlextablenewlexstrlensfullstrcmpatombakunwind_trailopcounthcounthbakseen_tolddefault_start_pointhgetheap_or_bp_haltunifybad_instrexec_linkinterp_frombpbp_prolog_callload_engineload_engine0call_engineask_engineanswersuspend_enginemultitask_enginesapplyfindall_store_heapfindall_load_heapfunctorname2listshell_1stats0if0foutfflushfloat_oprand_filbuf_flsbufcomparesetargchange_argdefsetlvalsymcatdcg_connectlist2termterm2listadd_instrolder_filesee_tellsee_tell_atseeing_telling_atsreadsoutop0det_append0findall_lift_heapcopy_termterm_appendstrip_cont0dcg_tellfloat_funfloat_fun2input_floatwrite_floathlistunix_argvunix_getenvunix_accessunix_cdunix_killnew_builtin__remq__divqinstr_lenisdigitinput_funhsetinsert_opinit_codeungetcmake_opfopenfclosewam_bpuser_bpstat_usedgetenvaccesschdirkillstat_leftolder_file0statfseekftellstrcpysystemfloat_comparecopy_from_enginebp_heap_topbp_conshfullhtablehstamphindexop_classvalid_opisspaceislowerisalnumispunctisuppermatch_termsread0swritedouble_to_intsints_to_doublemake_floatpowlogfloorexpsincostanatanasinacosatofmaininit_cd'PP ad'P&~E-^(n]C?@5N'P -u 0 %   4@ } 1H@  3J  F XFxF!&.F6A8@EFMFUF`aFmAwFF F`%FFFF8FhFFP FnF@F#F`3F`=FKFZH_FkqFFFFFpFpFF&FP-FFX&!F/7AAAIARAY "`Ff$mF&uFAhFFx'FhF'F`(F+F ,F,F(4F-F.F/ F(0F0&F 11F28F2GFغYF_FPrFFFFИFF FFؾF`F`FhFPF؛FxF0 FF@!Fȝ+Fx6F?FpKF8]FcFhFlFxFFhFHF8FHFF0FFxFFFpF@ FF(/6A@sHFxRFPzWFaFkrFzFF(FFXFp F!F'A.AP5F<F(EFNV^fnvFFHFFFF@F  BinProlog3.45/bin/bp.o.sparc.sunos100644 764 764 256211 5764216100 16154 0ustar javierjavierh8 xtp 㿈@*`" *  * @ <*  㿘 @  Prolog execution %s(%ld). CPU time = %ld.%lds %s 㾘!` #" @@#@ ϒ@halted㿘 ܒwarning: *** %s *** 㿘 `@fatal error: *** %s *** 㿘 `@ڐ _%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? 㿘 4,  4&:  @`0 `@0 `@> 0  . 2 * `@6  㿘  㿘*** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s 㿘.`*   &  ` + @# 㿘@ @ @  @㿘@ @  .@[].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$float㿘 @ #`$  @ $  @ $  @ $  @ $  @ $  @ $  @ $ < @ $ @ @ $ D @ $ H @ $ L @ $ P @ $ T @ $ X @ $ \ @ $ ` @ $ $ @ $ ( @ $ , @ $  @ $  @ $  @ $  @ $ 0 @ $ 4 @ $ 8 @ $ d$ t$ p    $ @$ $ h T d @ ` X d @ ` @ $ l$ $ $ ābp_stateeditor_programediteditor_filenoname.plversion㿘  `” ` `Ȕ!Y@ 㿘@ 㿘@ 㿘@ 㿘@ 㿘@.  6 "@`㿘 "㿘&@&  2& @.`& .`." &  &  &  & &  & @ codeboardnot enough common memory㿘`  ̤`@`? " @`$`x$`|d? ! " `! "  @@  $`Ƞ ?$`@ " K 2   q  add_engine: engine table full㿘? @`""` .`Đ "@Đ"`N  : //4choicetrailheapmessagesadd_engine failednot enough engine memory㿘 l!@ `? H!7 "ʐ $ * " `  "        ( del_engine: engine notfound㿘   @ @ "@ ? "`@(@  㿘 @ $.`( .. "@"`"` "` "`"`"`"` "` $`$ \` 㿘 "  @ |@ X@ 4@ @ 㿘  " @h:s:t:c:b:d:a:i:q:%u%s %s%s usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS] [wam.bp]p??  %#+`@*`: ?* :  z* `@ _* ]%``@ U* S$`@쀢 K* I$`@耢 A* ?$ `@䀢 7* 5$`@ - ) * '$`@܀ ܐ  * $`@؀ ؑ* $`@Ԁ $ "? ??s  `@ o   * @BinProlog %d.%02d㿘1 ` @ -Copyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%s㿈) '%#`! #\#d#h1  #`@`㿘% $  $  $ !Ѡ ,I   ,@   ,  `  interruped(%ld)...restarting 㿘 ! @ @  `@ @@^㿘U@ؐ 㿘!@ "` @`? "`  "`@* "` "` `?string table overflow㿘! @  `*`@ @   $ *`   "*` %ld symbols, %s!!! symbol hashing table (almost) full㿘 `@@ @ (%75)unexpected!!!㿘L   J. @J    ? .    ` `@   ? @`.  ` .  ) `  `" f`. "  ` "* : : @     @    ` `""`@ %s/%ldarity limit exceeded㿘a  `@@  ^* 2  .`@    ("("@ " 㿘 !&    $ $   $ @$ $ 㿘 & `"` @"`@ @ @  & no definition for: main/1㿘``@@ integer expected in halt/1㿘 ` @  :` @trailing in unifyunifyvalue trailing㿘&&'? ?" @ @@`@ $```@8(&@ 2&6` "&&rP\@   @@ P`&Pa"@ 2&@6  "&@&@@TP\@   @@ P`&PC"@`C >6  :  @@ @:$@P\@   @@ P"P`"`P &P$@ .  $ @ ? $.  @?$@ $8a *** bad instruction: [%lu] *** 㿘 `@ @ undefined in EXEC㿘 @2`@㿘 | X  4# P` # "`$ "`( " 2 " P" "@`?㿘ْ㿘&``&```@ @ ' 2@  '?`P'?`' @load_engine: bad engine㿘@ 2 |@ )  X 4$ P"$` "(``@   $@ 2 `$ P$ $@ Đ "@ "  " $ , $ t" 㿘???ǐ?㿘@    4 , t@<  㿘 @:    "@ 2    answer: bad engine type㿘: `% *`@Đ "@Đ "@Ē "Đ "@","t " @`@  *** suspend_engine: %ld bad engine type %d 㿘@:   @`@   "@","t" 㿘 $1?@ ? @   @ @:  `"@@(@ ? ?'  !'@ :   J   @:  ""@@2`"  ?  ??2@ unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operation㿘 -+ `  *`@4&&@ 44 "744&@-`4`@ 2*@  @ 2@  P \@   @@  P`' P"@$@`@ 2`&@4&, 2 &@, 2 &44, 2` . ", 2 4&, 2 4&4&, 2 C&4&&@`, 2 &&`` 4 ", `4&@, 2 &&`` 4 " , 4&@4&, 2 Ֆ "M4&&@, 2 &`w`"6`@ 2#@  @ $@@Z P \@   @@  P`' P"@2FD4$@&@`<@  đ4`@ 2#@  @ $@@ P \@   @@  P`' P"@2 ̴K4 &@˶ ` @ ö?@ @?%"4  8"  8@ `@  @  @ "@"}` 8@ `@  @  @ "f``` ` `4& , 2 `&4`@ 2*@  @ 2@  P \@   @@  P`' P"@$@`@ 2]`4 ґ, 2 `&4`@ 2/@  @ 2$@  P \@   @@  P`' P"@$@`@ &@4&`2`4\ , 2 `4`@ 2*@  @ 2@  P \@   @@  P`' P"@$@`@r 2` `4& , 2 `&ƴ 4`@ 2*@  @ 2@  P \@   @@  P`' P"@$@`@` 2``4& , 2 Ֆ "`  &@4&&@4'&&@4&4>&`&@44&4$@&@`4&&``, 2 &&`` V 4$@&@`4 &`, 2 &&`E` 4$@&@4 &`4$@&@`4&&`, 2  &`*`  8@d  4 ^, `,  & 2 ,  & P&&& Pס4' P, ` & & 2 ,   P¡4' P, ` & & 2 @ ) @ $ Ā4, 4, @?, "@?4 * }&4&?, 2 `2}&?@  @  @  2m&?4  "i&?g&?, 2 `2&?@  @  @  2&?4  "&?&?4`2G&?@  @  @  27&?4  "3&?1&?, 2 `4 * '&@  @  @   * 4  "& & & 4&@, 2 & * &` `@  @ @@2`W* `"6,@ & 2@ /, `@  4 @4  @4 ?, ,@@ , *& * `",@ & 2@ ,@  ,4  2@ ,&@2  8@@ 8@ è @@  :    ' ,' t "  Đ !]"@@  | X  4' P` #&"`$ `"`( & 2 & P& & tx x@ @@2l@  Đ@"_,    @"S    @"H @ @ ":   '  0& @@"`@`@``@`@ 2 @  @ 2ʴ`@  @  @ "`@  @  @  `@  @  @ ? 4  ` @  @ @?, 4 `*`@  ??  * @` @, 2   44 Ԗ OJ&:<  *  , 2   4=&??  * @` @, 2  Ր4&&:< " *  , 2  Ȑ 4&??  * @` @, 2  4&:@< *  , 2   4&??  * @` @, 2  4&:@< *  , 2   4&? ` 2 ?:` 2?`??  * @` @i, 2  ]4&:@< *  , 2  P 4&??@ L, 2  @4&, 2  @ ?3 @4 ? & `  ?2` @? "@ "  @, 2  * 4 ^& ?  _``@?  "@``"`< I*` 4   4  ` *`` 4"``` ` @_??  * @`  @ "O6J??  * @`  @ "9$4??  * @`  @ "#4??  * @`  @ " ش&Ӵ??  * @`  @ "´2??  * @`  @ ""??  * @`2:< * *  , 2  ? 4&??  * @`2:< : *  , 2  ) 4z&??  * @`2 ? , 2   4f&??  * @`2 ? , 2   4R&??  * @`2} ? , 2   4>&??  * @`2i2 ? , 2  ِ 4*&?@?`*  , 2  ʐ4&?  `?`<  4` "=@  `4 *`@)@, 2  4&@ "@ "۴@  "Ҵ &?@  "ƴ?` 2` "?@&??` 2` "?@&??@?] Y, 2  M4&@ K, 2  ?4&@>, 2  24&@/, 2  4" 4o&@, 2  4`&@ , 2  4Q&, 2`*`` 4F&@ "t?@ "l7?:    , 2  Ԑ4%&@ "S?@: L@ "E@, 2  4&?:  2??  2.4  2*@"$ @, 2  4&@ "ܴ@, 2  {4&@"Ĵ?  $4  ", ?:  2  8@@ *    @" ' , 2  B4&@?, 2  34&@0, 2  $4u& , 2  4i& ?$@ P \@   @@  P`' P"@@ "J , 2 @ $@ `4:&@, 2  ې4,&@ّ, 2  ͐4&@ʑ, 2  4&@ "<@, @ | đ2  4& , 2  *``4&@, 2  4&@, 2  z4&@ "Ĵ@ "@ "@, 2  W4&?`2@@ P \@   @@  P" P`"` P ' P?$@???:`:@:1, 2   #4t&?@? "mH "f?[?, 2  4X&?  2<  "M?;  2 +  , < t@  @  Đ@ݑ, 2  ?ϐ4 &PL㿘@!"`  `* `` *?`*`* `*3`*`*`*`* `*`*`*A`*`*`*`*`*`*`*`*`*`*1`*`*`*`*"`*&`**`* `*$`*(`*,`*5`*6`*7`*8`*9`*:`*;`*`<㿘N  -`? , ,: @   , ,  ?&@ &@`?㿐ג *  @ 2 2  `" " expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinked㿘`: -+5/ #  @  "X ဤ Ȁ ?܀ ` ْ`` ֑,, # @ @@  `@ # @, # @, `@ @#`)'    `+ 2 * @3  `` ;  #@`@ `@`, @2@?, 4 ?* @` A@&y, # "M C "8l&    "Cc&  ^&  <  & ࠓ*` < &  ࠔ <  & ࡓ*` < & ࡓ*` 8& < 1& * @/& &  < 1)& &  < &&  < & ,! @  ` * @@ @ < $@" ,` * bad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_op㿘  "` <;" . @֒` `@   "`X 1"` #,  #`` <@8  `"@ `?@(`  <"  < "  " " @ \  2W  " @ < "@ @ "@ `' "` `' ` < "` .  22  @ < "@ ?*@. " "` `@@    ' "` 2  g@  3N`_   ` @ 2V  @` |`"K  2 T 2ܰ   2հ  $  c  | +" ' * .`2 @" 2   c 2  | *"   c 2 | " ' * .`2 @" 2|   c 2v  | q" 2  $  c  | #" ' * .`2 @" 2P   c 2J  | "E" ;  c 27 | '" ' * .`2 @" 2+   c 2%  | & " 3  @  < "@ 2(  @  c : | -" ' * .`2 @"    c  | ,"    c 3 | 7" 2   c 2  | 8"   c 2 | !" ' * .`2 @"    c  | "    c 3 | 5" 2   c 2  | 6" 2  @  c : | %" ' * .`2 @"    c  | $`"    c 3 | 9R" 2O   c 2I  | :D" :  c 26 | )" ' * .`2 @"    c  | ("    c 3 | ;" 2   c 2  | <" 2  28   22    # .'  .$" 2    c 22` 2`2 | /" ?*@. ">  ?*@.` " * .2 @" 2 ? c ,2` (`2&   :   < 0" ?*@* "  0?'  2  ?* .` # ' p" 2  ?*@.` " `' _"` 2r  ?*.` "  #  '  _F"  2Y  `@ < 9"@ l?*@.` "  ?N ?Б* 2 * @" 22  ?*@.` "  < 2!  ?*@.` "  @ "   "  '   @ 㿘 " @ <"@ ! *  &  "` " "   "  < "  @  &  " `& 㿘? & `&  @@`#" @0  ? & `&  @@ $`0? &  & @%ld%s%sopcount=%ld g.timestamp=%d op: %ld,%s,%sInvalid operator declaration' ?T  $`TX@  T ?T*@ 2$ ` T#\ ?T@@ $㿘  rb??? file not foundbegin loading %s...%s ...finished loadingunable to load kernel file㿘@` @@ @ s  @9 +? $ `$  @@?N? $ `$  @@>? $ `$  @@.`  `? $ `$  @@,@* : ? `J  &`*`a2@  ` `@instruction=[%ld] size(found=%d, computed=%ld) {%d,%d,%d,%s} invalid c_chunk: bad sizeFinished loading %s C-code (%ld instructions). 㿘 " R '),    ?M : *` @ ,  ``` &`",  @`*  "`@ +`  `` `@ @ ,,`! @@  systemuser㿘      @ 㿘    ̒ې*` (" ?unix_argv's 1st arg must be integerunix_argv's 1st arg not in range㿘?   @`:  `` @``+ @@ unix_getenv's 1st arg must be a symbol㿘? ` 2` *` @`2 `* @@  @ unix_access/2: 2nd arg must be integerunix_access's 1st arg must be a symbol㿘? `  `:`? `  2`  `@ *`2 `* @@ `?unix_cd's 1st arg must be a symbolunix_cd/1: bad directory㿘?  6  . `2 `* @@  `@unix_kill's 1st arg must be an integerunix_kill's 2nd arg must be an integererror on kill signal to this process㿘?  `? `   `< @:`  `@*` ( 㿘` 2&` `  ` @` ` 2&2` "&& ` 2y :``l *`@@$ M" B  :  P 2P  *   " *  ""   *`" *  *` `* "@ *`  *  k v,  `@ .    `@@ symcat/3: bad arguments%.32s_%.32s%.32s__%ld%.32s_%ld㿘?  ?2  `@ 9 `3` `*2` *` +`2` *`  `2`* 2 `4* #@  :`*2 *  ;`@ @ file error on 2 arg in older_file/2@x?@  @?@&  0 bad old file name in older_file/2bad new file name in older_file/2㿘?   `*2 ?`*  ` *2 *   `@bad file name in see or tellrbunable to reopen to see filehset in see/1hdef in seewbhset in tellhdef in tellunimplemented bad see_tell operation㿘??2   @`, 2 * ` <@```T1&`L@`  @`2] @ 2T @`M@ 2A " A" 9```X.&`P@`  @`%@ 2 @`@ 2 " "  @  arg 1 of see_at or tell_at/1 must be integerunimplemented see_at or tell_at operation㿘??2  `   @` :`  @    @ ?" 㿘?2     @   @*  unimplemented option in seen_tell㿘 -!  ":"56   @?@??  ?@??@?P@    d" " p   @" ???@?@  ?$ &?@ 0@ 㿘  ` ! ! @` !*`2`  *`@ @ %ld㿘?   * `:@?2 `* @???: :`@:@ 㿘 `   `@ @``  ` ""   &. > >`2 `* .`2` *`@ 6 6`"@  ` 㿘`2 @"@@`@  `@ ` @ `     @2 ` 2 4``   `@ ` ` arity=%ld functor has bad arity㿘@ @  @@ ` 2 2 ?@ WO * @ N, E`2  "  `2 ` " ` @` ` 20  :` 2)  "   `@@  ?*,  && ? @  㿘   6 !` @>   .  2 `* @ % `   @` `2`* `   @` "   *  both args of name/2 cannot be variablesbad data in args(1) of name/2bad data in args(2) of name/2㿘@`2 @"@`@        @ #`'l"`J@ & @ *  &`J@   & @   ` `@   ``@bad constructor starts 1st arg of det_append/3det_append/3㿘 #  , `( 2` "8 @`"  @ ## `   @  ` @ "8 # bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2㿘 c  3`   Z` @   @ P` &     @   @ "8`@ =   2  '`       `  ` 2 ?**`   `@ @ ? `@2" "  2    " "    *"@" ""  " term_append/3㿘` @  2@  ` 28 2`3  `1?+*` &* `"*@ & 2@ *@ & ** `"( & 2 ( & ( 8  @ value_trailing㿘P     @y m & `   @` X` 2`  O `H `2 \@Ґ #@#`` ;"\@ǀ#@#``&"Ǚ2`?* `+  & 2 + `  " ` @` `  2`  8\:\ ` 2&2` "&& *  @@ "㿘,`8  2`   & f2&, bad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integer㿘`?&`"?"? @ `  `?*@` " `  `@:```*`  <" : *   " answer space overflow in findall_store_heapcopy_term overflow in findall_store_heap㿘`` @?  @2 `&`   `  & ` 2` & `` `ɖఒ2$@  $`"㿘`"@` "`"```  $`` "``@ ` 2?** " * @"2@*  "`"`bad continuationcompound continuation expected㿘   ` `  3`` `@. ??+@.  .  ` """  " 2 . bad argument for dcg_streamvalue trailing㿘?  `?<  8 %`@0& 2`P`P`\@   @@ `P"`P "``P &`P ,` "@㿘 `2P@P\@   @@ P"P "`P &P``& & &@  "  $&@setarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arity㿘?   `?` <  4` 2@`@ ` `4 @ *``@$@@@ 2`P:?`P`\@   @@ `P"`P`"``P &`P? $@change_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafe㿘? `  1`? :` 2 2 #``  `2`( `  `?+ ` @ `@"    "%ld bytes, %s!!! hashing table (almost) full㿘` * `*@@ @ 㿘!@ #$`@ " ?"``  @ (75%)㿘 ? @  #,  *` `   * @  @     1, * @  1,  * @` 2  %: : @    "" " ` $*hdef/3 required before using hset/3㿘 ? @  "*  *` `    * @ @     * * @   *@  *`   `"` @   +  (  "  +  (@ @  連@   culprit->hindex㿘 ? @*` *    -*@  *` ` !    ? @ * *          & &  ?  @4   `   @  0 @  @  `  "  # `@  COPY_KEYS㿘 ` ` 2`   >`+%?#   @ {` v` @o  j 8  `````6` 4V R @N`M8  @@ ` ` $ $ $ $$  @$ $ 2`*  $`  `  $ $ $ $$  @$ $ 2`*  $ $ $   |`   $ 2" 2 " 㿘  2 6  2  2  > $ ʐ 㿐? H '+  `* # 8  #`: : @ *  d ``(+ #@ @ #`#` $`y+3`s  `l $ 㿘?` 2` "?@&??` 2` "?@&??` 2` "?@&???? Stamp found %d, expected %d hash op on protected objecthtable full in hash op㿐?` 2` "?@&??` 2` "?@&???`   +  `* @` @  @`?` `?`@+" 3`: : @   ?+ @ *`" `  &`?" "* *` * @`arg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3㿐?`? 2` "?@&??` 2` "?@&?? 2? ` @ 0yK`   +  `* @` @  @`?+``?$` *` * @` @ A  4  `` ` ``@,` *` * @"` 3`: : @   ?+ @ *``"  &`? " "*  def/3 expected before set/3, rm/2㿐?`? 2` "?@&??` 2` "?@&??? ?'`  @, * `* @` @  4   ` `  `@  *` * @"`㿘@@.@.@㿘!  $ " .$  # H  " H  J  $2"J  _2" "@J$, ؄ ""@    # H  " H  J  _2 "J  _2" "@   # H  " H  J  "   H "   "@  `H `"`H `* J@8 `" 㿘 ߐ ) ڐ , @C` `" 㿐   ]$ ) |  @$   ]@ $ ,  @  ؐ@ @$x  [  ]  Q$   @ D@@$ 54 / "- ^ ( $ǐ䰒# 'ܐn'ఒxܘ$܀  *  "  0Z $㿐" 3&` `"@` 㿘.`6`  .`string buffer (-i option) exceeded or infinite term%ld㿘  %%  % # ?@@ 07v `4 ! $ _+#``4`" @2  `$`* " *` ` & $ _+#`$ a*``" @2  `$`j* " *` ``  $ _+#`$ b*``" @2  `$`B* " *` 82#``@:  `$`&* " *`  2*2 `* @ $ +   " *```|?"`| K* $ [+ *     ` 2! ,    $  *  ``  ` " `  ` x$ x |* x $ x ]:*2 `* @ $ +    # *`   |2@ " | (*% ,  ¢` @`$ *@,``"` )*㿘!  x$ | |`$ |*@ x㿘!  x$ | |`$ |*@ x@ %s㿘!  x$ | |$ |* x@`;`d` (@( ?` ""##?2  2 @#`#d`#bad arg in arithmetic operation㿈ј && & &  㿈    >  `  :`'B +   !    >  ` 2 :`'B 2    ?@   ? )  㿀  > : `  :`'` B )d !   > `  :`'`B   C?@ \ `?`W  *`@0@.,@) 5 3/ - ) '# !@3   @#   ?ژ $ $ $ $ 㿀` 2`  `@ ` w 2` s*`2 `* @ `  :`: `  :`'`B ? ( ?   :  `  :`'`B   @ ) l p2# ?@ ??@?@ ?Q $ $ $ $ 㿈` 2`  `@ `  2` *`2 `* @ `  :` `  :`'`B?   ?@  ?`18  *`@ @ ` 7…@'B'  ' *  8$ @ $? @ ? @ ? @ ? @ ? @  ? @ ? @ ? $ $ $ $ %ld%-se%-ld 㿈` 2` "@&` 2` "@&` 2` "@&  -   (2 %`  `:*2  * ! @>`@ ?+ ?$@`$`$`$` %f㿐2 @   ? H@` 㿘@@ @@ `" @ @ Al$m8< X\ lw(pxtw(VV m(LT  <0@ 0tw(xw(|X Xx|w(w( x8 $ Tw(Xw(\`xd lw(pt xxw(w( xhw(ZZ x8VV w(w(( (xHV VH,<LVPVXp pDVVx x(    $( ,8< @LP T`d htx |t ` L 8 $     ( ((0, 00<8@ 8DP@T @XdHh HlxP| PpX X\h hHp p4   DV(0,V04 8X Xh hx x     $c @c \c xc sp s    p  p    L V V  x  x Hc h   V V V V 4 <  x  x   < @ \ `  h l     V V V V V@VDVHVXVlVpV|VVV   c<JhJ`JXJPJHj T Tv0 i TXD\`ld(h(l(ptx(|(((((((v 0}T v 0},v 0}v  0$}DvH 0L}lvp 0t}v 0}Tv 0}v 0 }Pw(Tw(X8\ 8`Hd Hhlp txx uuH H T(  @ @p px xh h{{ T  V$V(w,w<hD h\d tVVbV  ( ,  4h8~< hD~Tw(Xw(\` dxlVpVp  ZZ ,    $(4lpt| P PHw(Lw(PTX \`xh lp  t Z Z Z,Z< @P hZ|ZZZVVVZZVV  ,4 <@ TX ltxZZ  w(w( xT  V V$VV  V $0,j4jpVPtVPxVP|\P$ P DP0<4 8   \   L(PT (X w( w(    x ( PVP TVP X p 8 t 8 x V@ V@!DV@!HV@!PV@!X!!!!߀! !"V@"V@" V@"4"### ##$#$$#######$@#$#$$(#`$0$4 #`$8$w($w($$P$xX$ $P$܈$V$V$V%DV%\V%`V%tV%xV%V%V%V'VP'VP'V( ($( ($($V,((*(,*(0*(4+8(8.((</(@/,(D+P(H/(L,((P,<(T,P(X,h(\/(`0(d0(h0L(l0x(p7t(t7(x8@(|8(8(0(0(1 (14(9(:p(3(,(6(,(2(-|(6,(-(4(-(6P(.(1(-(6(-P(,(9(9 (7\(:(.(/(6d(6p)6)6)6) 6)7)7$)8)8) =)$>$)(<),A)0?|)4?)8?)<@)@@d)D@)HA$)LA)PB@)TB)XC`)\C)`D)dD)hE4)lE)pF)tF)xG<)|G)G)HD)H)H)IL)I)I)J<)J)J)K)K)K)K)K)L )L)L)M()Mx)M)M)N)P)O)P()S)N<)N\)N)N)N*N*O$*O* P*R*RL*R*R* Q$*$Q*(Q`*,Q*0R*4VD*8VD*<VD*@VD*DVD*HVD*LVD*PVD*TVD*XVX*\VX*`VX*dT*hSl*lS*pS*tT*xT(*|TH*Th*U*Ud*U*U*U*V*Vl*V*;$*;*=4*=$*>8*>h*>*>*>*>*?$*?,*?4*?D++ל+ +`..԰. .t/&//  &//Ӽ/ /р1u2<2@,2D 2H3H3L 3P 3T4l4p4t 4x5h5l5p 5t7&@7 &@8&P8ʀ8 &P8&h8l8 &h;@VP;LVP;dVP;lkl;VP<VP<j<,VP<VP<j,<_<VP<i=&0= &0= `==lkx=V@=V@>$&>(H>, &>@\,>T&>XĴ>\ &>t\>L>O>I?>?TƆ?dVP?lgl?V??&?V?x`? &?V?TA@VPA`VPAxe`ABldBC0CDCL@D&D &DLDmDEEE4VE8VElVE|EVE&E &EVEVFVFPVFdVFtVF|FG ~Gd~lG~H}Hl}dJ?LJVJVJ'J 'K$' K, ' K4'@KL '@KPKTtKVKf,KVKVLhL|Z\LVLVLc L2M4Q@MDMFxN :\N@3NlVtNpVpNxVpN|VtN4lN8N6N7`O`mO|spO_O@P I0PpEP'hPP 'hPEPDQ0KPQ`VQdVQVQVQQQ QhQKRVRVRTx(RuRzS|S(VS<'S@SD 'SlVSpVS%S&T &T,'XTL(,ThT(TT (T\U,UhVD'VHVL 'VX'V\V` 'V|V8VڈVڋVڋWڋWڈWڋW$ڋW,ڋW4ڋW<ڋWDڋWLڋWTڋW\ڋWdڋWlڋWtڋW|ڋWڋWڋWڋWڋWڋWڋWڋWڋWڋWڋWڋWڋWڋWڋWڋWڋXڋX ڋXڋXڋX$ڋX,ڋX4ڋX<ڋXDڋXLڋX݆\Y$Z ڈZ$w(Z(YZ,ZZ4ڋZxVZ|VZVZYZ Y[[w([Y[ Y[<w([HZ[T Y[Xx[lw([p Y[| Y[x|[w([Y[x\[ Y[VP[VP[K[Y[ Y\\ڋ\ڋ]ڋ]VP]VP]I4]ڋ]VP]H^V^V^^^ ^^n`^d^g^f^i^m^m^m^m^m_m_k_d_ d_o_o_o_d_ o_$o_(o_,o_0o_4o_8o_<o_@o_Do_Hm _LlD_Po_To_Xo_\o_`o_do_ho_lo_po_to_xo_|o_o_o_o_o_o_o_o_o_d_m_g\_o_o_o_o_o_o_o_o_o_o_n_o_o_o`_o_o_o_o_o_o_o`n`o`o` o`o`o`o`o` o`$o`(o`,o`0o`4o`8o`<o`@o`Do`Ho`Lo`Po`To`Xo`\o``o`do`ho`lo`po`to`xo`|o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`o`oaoaoaoa oaoaoaoaoa oa$oa(oa,oa0oa4oa8oa<oa@oaDoaHoaLoaPoaToaXo`a\oa`oadoahoaloapoatoaxoa|oaoaoaoaoaoaaacaVPaVPaVPaBa@a @aHa Ha @aDb  Db Hb$ HbHDb Db^bb ^bDb Db@b @c\Dc`Dcd Dc Dcw(cw(c^0c ^0cx<c^@cc ^@cHc HcDc Dd^pdXd ^pdD@dH @dLVdPVdX@dlVPdpVPdt@dxB`d| @dDd DdDd DdDd DdPd PdPePeHLeL Le PeLe LfDf Df,Pf0 Pf<PfTPfLf Lf Pg Lg$ Lg\Dg` DgDg DgPg PgPgPgLh Lh Lh$Lh8 LhDLh\Lhp Lh PiLi LiLi(Li< LiHLi`Lit LiDi DiPi PiPiPj Lj$ Lj0LjHLj\ LjhLjLj Lj Pk$Lk( Lk4LkLLk` LklLkLk LkDk DkPk PlLl LlDDlH DlXPl\ Pm Pm PmDm DnDn  Dn`Dnd Dn DnVnVnDn Do@o  @o`Dod DoDo DoLoPo Poڈoڋo Lp Pp$^p(Dp, ^p@pH pXڈp\ڋpdV@pxDp DpPp PpLp LpV@p@p @pV@pV@p3pV@q(qDކqxq<r4Vr8VrLVrPVrXqr\ qrp}r:rVrw(rw(rqr qrr rxrrrr rrVssPs׆0s sPsspslssXs`s sXss`stt s`t  spt@t$VxtPtpt0tt uVxu,uHVxuX utVxuVxu܆husu susu su susu suvlVvtVvw(vvwDw(wHuwL uwTxwhvww(w vwxpwvw w vwv8w v8wVxwVxwT whwVxxxx  xx(ӈx,Ӌx@xxD xxLֈxP֋yHxyLyP xylVypVy|Vyyyy yyLz yz z yz$Zz(Zz0zDzzXz zXzzz z{{Z{Z{({{@{ {@{Z{Z{8{{h{ {h{0||| |||(| |(|߆@||P| |P|8}}} }}}}~}~ }~@}~`}~}~}~}} }V}V}V~~~~~~ ~~~~ ~~~~ <d $Z(ZDVxHVxLT \`d hVxpVxtZxZ ZZVxVxT@VxVx ~(,D0 <~x xZZ8< @4X8~< XPZXZlVdpVd|Vd#Hx׆|L x !V Vx׆{  x$ 44V8@ DVHVpPVp\`VddVdpVd"T׆{X ! V V׆{ LV ( ,V0Vt8Vt< @|0`|4 `VV {P$ 0V4V8ytV|Vz VVy`VVVV V0V8XtdVltVx܆x|VVVVV܆x<VVx Vy Vx(Vx@VxLVxPZTZ\wdwhVxVxVxx xTwXZZլZZv\LVlPVllVlpVl9w(w( xsl t PVx x$ x(Vx,Tr8VxTZXZlVxpVxVxVVVVV(Vx,Vx0|VVVVh@ql @h$ h,0 4qV V Hq< Hxrp xx x04n<8 hp  @ @n $oH( (0m<4 Hl Hx  hdh H@Lf$P @xH H` `eHV V VX XdPVV x$eH( x,c <VXV\VxV|Vxd xbdV VV4~`  `PX px  axbt x`8X@` @|h h     ^@D HVLV\ h w(w(x xx\,] ]PeT  e   $,0`d pt <@ DH`Ph Plp Z  48<@D   8<DH   H \ ltx  04VDH\|VPVPVV,8X4< @UH\VlVVVVV V0VDH \V`VtV$xV$V$V4V4V4  P  P8<DhlpV`V`V`  \VdVLPhtVVw(w(xxO` x  QL P P 8DTXhtpx  NVVw(w(xxL  x 08 HTdVhV NX  $P, P48LXhl$0 48T`pVtV LT8@ L T \ h xx| x x x x xx x x x x, x0x4 xDxH xLT xx xx x x x x x x xD xH xhxt xxx| xx xx x x x x xx x  x, xL xP xhxl xxx| x x x xx x xhVlV$`VdVx x   ZZxV|V|V|V|V| (C (V|X X`  `TAV|$ X,V|@V|HV|dVhl|V|X XV|V|` `TAHV| XV|V|V|VV|(X, X0V|<V|H`P `XT@`V|h XpV|V|V|VX X` `T@8V| XV|V|V|V0Z4ZDV|`V|hV|VVV|VVVVV V|$V|0V|LVTVlV|VVVZZV|V|V| V$VDV|hV|tV|V|”V|œV|´V¸VVV WDVHVp8xx<| 8LVlPVlĜ İVl  Vl $ 8VlL P \Vlhň;Ō Ř Vl(  (,Vl8tƈVlƜ(Ơ (ƬVlƸ:  PX` $(h,048t<nj@ǤDǼHL(Vl,VlȴZȸZVl 0 0 Vl,h|Vlɐ0ɔ 0ɠVlɬ7 65 5LVlPVlZZVl,80 8DVlPp6t ː˨˔ ˨˨\ˬx˰x˴x˸x˼xxxxxxxxxxxH4xxxxxxx xxxxx x$x( ,x04x8x<x@pDxHxLPxTxXx\x`xdxhl t3|@̀ @3,332$282L2`2̀Vl̈́VlΐͰΔ ͰΤZΨZδVxθVxμT1D1<VxVx0Vl4VlDVlhpx0t ό0tϘEϬ 0TF8 )$3 C LUdhny <Hh  h PP%P4V<@FY8SVeHkpxPr0VvhssZ xDLX\xxl",6xExLx^xmr`xt0xX dÈÈ*9ÈHψPψbψqψxψψyoRX"xl T  Fl&%) 7+ 8H/ Y dpm z!jPy k>8M(2!&H+z:# EGU68^tgoIx.VZ f# p i(D/T8d@$HP<V+ c pGvl|tB!R$|(lE{ |%2^ =pJPX[zhyu|'"w L|Z#x#dLk<zPD<&p9vAHfQZ{XfM8mr!<8s|xy,$8"8}El  & t +} 7 <jX O Wh ` fH ot vMp< X > ^   A  *  N| e |   | ` x %D| 0I@ 9" F N! Vl ]t g q yH |  0  ]°    p   %È 0 e n f Z 7  ~ψ  % -sru.o_hdef_string___gnu_compiled_c_hdef_int_var_array_init_heap_safe_margingcc2_compiled._root_wam_hdefaults_add_engine_del_engine_mes.70_mes.73_make_stack_make_constants_make_var_arrayssym.o___gnu_compiled_cgcc2_compiled._atomno_insert_lexsengine.o___gnu_compiled_cgcc2_compiled.sload.o_currpred_link_switch___gnu_compiled_c_last_skip_header_prev_len_loadoperatorgcc2_compiled._load_instr_array_ii_load_file_link_code_load_self_badcode_prev_prev_len_get_one_intbuiltins.o___gnu_compiled_c_list2buf_name2buf_ocomparegcc2_compiled.dict.o___gnu_compiled_cgcc2_compiled.io.o___gnu_compiled_c_match_list_elements_make_funcellgcc2_compiled._cursor_match_sym_make_term_match_var_match_int_match_char_match_args_ibuf.24_outfloat.o___gnu_compiled_c_arith_err_mesgcc2_compiled.debug.o___gnu_compiled_cgcc2_compiled.main.o___gnu_compiled_cgcc2_compiled._free_init_random.rem_hdef_load_kernel_local_error_start_profiler_make_hentry_init_engine_mem_init_common_mem_sprintf_overflow_by_g_end_profiler_make_char_array_make_byte_array_atomtable_warnmes_startup_mes_new_func_hinit_quietmes_create_engine_is_engine_get_cmd_line_options_calloc_restart_orig_link_halt_quiet_bp_version_init_orig_wam_getopt_srand_interp_times.div_make_symtable_start_wam_destroy_engine_bp_halt_bp_exit_malloc_cputime_optind_optarg__iob_fprintf_init_instr_len_run_bp_c_interface_can_recover_sscanf_signal_max_init_bp_fatal_error_make_atomtable_exit_newatom_atomstamp_lextable_sfull_atombak_newlex_strlen_strcmp_fout_interp_from_input_float_hbak_hget_set_dcg_tell_opcount_load_engine_heap_or_bp_halt_suspend_engine_float_op_default_start_point_new_builtin_apply_shell_1_lval_unix_cd_add_instr_strip_cont0_see_tell_at_bad_instr_term_append_rand_copy_term_unix_access_unix_getenv_hlist_sout_bp_load_engine0_exec_link_write_float.umul_float_fun_answer_see_tell_ask_engine_list2term_fflush_change_arg_name2list_unwind_trail_findall_lift_heap_findall_load_heap_hcount_sread__flsbuf__filbuf_float_fun2_unify_def_bp_prolog_call_seen_told_term2list_compare_unix_kill_unix_argv_if0_multitask_engines_functor_call_engine_stats0_det_append0_findall_store_heap_setarg_symcat_dcg_connect_older_file_op0_seeing_telling_at_wam_bp_make_op_hset_user_bp_fopen_init_code_input_fun_instr_len_insert_op_fclose_isdigit_ungetc_kill_older_file0_chdir_copy_from_engine_fseek_ftell_stat_access_float_compare_getenv_stat_used_stat_left_bp_cons_bp_heap_top_system_strcpy_hfull_op_class_valid_op_htable_hstamp_hindex__ctype__match_term_sread0_swrite_pow_sin_tan_floor_cos_exp_double_to_ints_make_float_ints_to_double_atof_asin_atan_acos_log_main___main_init_cBinProlog3.45/bin/bp100755 764 764 752004 6664733706 13466 0ustar javierjavier d -̀\ `D$4 `PWP`[̀P!`D$Ð$  Ã=$ T$RT$Rh `` Prolog execution %s(%ld). CPU time = %ld.%lds %s VS$ $U+@RPVSh\$S `ShY V`haltedD$Ph4warning: *** %s *** T$RhWh `` fatal error: *** %s *** T$Rhh ``ju_%ld ??? mem[%lu] ??? %ld ??? %s/%ld ??? T$D$ =$ u&+H4x Ph'RhЃu&Phh `%` 6P xPhh ``L$Q1Ð= t jÐD$P*** %s overflow by %ld bytes (safety left: %ld bytes) culprit=>%s VSD$\$L$ +L=$ +t$Vt)PQT Rhh ``+[^ÐVSt$ \$PjT$RPjSvPjVjPU[^ÐS\$PT$ PjT$R)PjSP[[].-$empty<=>calltruemainmetacallmetatruepredmarkseemarktellmarkend_of_fileopmarkxfxxfyyfxfxfyxfyfprefixopinfixoppostfixopuserclosed_file$floatVS\$ t$jh%Jjh(9jh*(jh, jh3$jh5(jh7,jh9 jh>jhCjhHjhQ jhZujhcdjhkSjhtB jh.jhjh jh jhjhjhjh jhjhjh~jhmXP\T jh7PXRRRP\RRR(jh L`5d[^editeditor_programbp_statenoname.pleditor_fileversionS1hvh{h t:hhh thYhh ؉[ÐjD$uP_ÐjD$uP_Ðj D$uP_ÐjD$uPg_ÐS\$uP_19}A9|[ÐT$RPÐWVS\$t$|$D$ 3{9}1[^_ÐuuPZ_CC)ЉCKKKK KKCL$K {%[^_codeboardnot enough common memoryVSt$ jh j RV$D uCb R>uCjh h RPuChHRuCjj@_huChl1dt 7uth 1[^Ð[^add_engine: engine table fullSL$h9lrh 1[Ðll\$  \$CX[ÐD$=}=?~?choicetrailheapmessagesadd_engine failednot enough engine memoryWVSt$|$1jhd hT$$RFlPujhk hT$(RFHPuCjhq W.PWF$PuCjhv j( RPuCT$$RT$$RVt uh 1[^_Ðt h ݐ[^_ÐT$h9lr9uÐ9ls1del_engine: engine notfoundD$h9lr9t(9lsh S1ÐllÐUWVSl$ j$j_Ãu1[^_]Ðd$d$1ߋt$ $=~T$RjUT$(RT$(RSt[^_]Ð1[^_]ÐS\$St>S|R_SXR_S4R_R{_Su_[Ð1[ÐD$u u Po_ÐÐh:s:t:c:b:d:a:i:q:%u [wam.bp][-a 2^ATOMS] [-d 2^HASHTABLE] [-i IOBUFFER] (KB) [-q QUIETNESS]usage: ru [-h HEAP] [-s STACK] [-t TRAIL] [-c CODE] [-b BLACKBOARD]%s %s%s $UWVS|$8l$<1ۍwhUW_ <$t$$dD$0PhD `R_ T$0 D$,PhD `R_ T$, D$(PhD `RV_ T$( D$$PhD `R_ ST$$ BD$ PhD `R_ T$  D$PhD `R_ D$ L$ D$PhD `RF_ D$ wwL$ eD$PhD `R_ tGT$  9D$PhD `R_ tT$$  tCNAt(hhhh9h `C_jH `19}L[^_]$BinProlog %d.%02dj-jhhh`_`Copyright (C) Paul Tarau 1992-1995 by FTP from: clement.info.umoncton.ca E-MAIL to : binprolog@info.umoncton.ca (C-ified standalone) %s %s%s%s%s%s%s%shhh RhhhhPh-h2_(ÐWVS|$t$X< `\ `@VWyPhhu1[^_VWhSvtj2hj R R Rhlt[^_Ð1[^_ interruped(%ld)...restarting S\$hj_hj_tShjh `_ = t h6hI hSG [ÐS\$SuSjx [ÐS1ۋ RAxu RuCp P|uC%[string table overflowWVS\$50҃ H|9rhCu[^_%ld symbols, %s!!! symbol hashing table (almost) fullT$RpRhh `_h&j(%75)unexpected!!!WVS|$1ۀ?tF>u J!ӉpH!9t?x<tCtxPW_tS H!9t x<uΡx<=t=Lt=u x<WZxp    9p~ h[^_Ð9u h[^_ÐS\$19 v/ x8 v8t pB9 w[%s/%ldarity limit exceededVSt$ \$v SVhh `1_h1ۃV8   Ѓ[^ÐVS\$ t$9s )ȉڋ)9r[^ÐD$PP 0 80p4<QDÐS\$S S80 0jzjj(j![no definition for: main/1SRRpÃu hd [integer expected in halt/1D$PЃtht P1D$trailing in unifyunifyvalue trailingUWVSL$T$$J׃L$J9|$T$u#9t\$u9\$u uu9u9l$0uT9vPL$$9q T$ BP9B\whL$$QjP3j <T$ BP0BPut+ 3L$$9YT$ BP9B\whL$$QjPj T$ BPBPbux؃utL$T$$9rL$ AP9A\whT$$RjPCj LL$ AP0AP9t 1[^_]Ð؃T$ 9wh-L$$QjWj T$$9jv>L$ AP9A\wh3T$$RjPjL$ AP0APUPAPL$MKt&D$Ku9|$$s[^_]*** bad instruction: [%lu] *** D$%Phh `9_jundefined in EXECVSt$ VR聗ÃuT$RhZVd [^ÐWVSt$N|~X~PV4 Z =z<<uY~Py~9VQ|$WSRZ%[^_ÐT$RFPpÐUWVSt$l$\$$|$(L$N N Q Q} 2 ukOPKO WSPUV[^_]load_engine: bad engineUWVS|$Wuhq1[^_]Ð_|OXOPw4 L$N N Q Q輕¸ 0 ukOPKO L$H L$Ho,_tP[^_]ÐD$PRPR@HP ÐS\$St.S4 SKtQ@P[,SRo[Ð1[ÐS\$u@[ÐSzu1[Ð@[answer: bad engine typeVST$ L$\$t$w~$ !D! !$!b!4!! J,Ztp[^Ë @ΐ Rh Pj1[^*** suspend_engine: %ld bad engine type %d VSL$ \$t&PQhg!h `_j~1[^ÐY,t$qtt$p[^ÐUWVS|$@l9hr1[^_]Ð5h u95ls݋5h1Qtu#SCuu!95lu t15hOu[^_]unexpected push_variableexecutionTRY_ME_ELSEunexpected TRY_ME_ONLYunexpected NONDETEND_C_CHUNK should never be executedoverflow in findall_store_heap divised by 0integer expected in put/1arg/3's 1st arg must be integerarg/3's 2nd arg must be nonvararg/3's 1st arg must be in 1..arityheap_overflow in copy_term/2error in bb_list/2Unexpected: ISO I/O oprationUnexpected: blackboard operationXUWVSl$tD$dl$`}H$$@t'''(t,h--4(D.)4)T))d.t...4/W99:;$;t//$0@0;=34*d6d*42D+7+4+T7D,0*6+)4<;9=T--7788T8h8884;T;dAA?KlD$DTDDDDEE4FGH4JK4MMDNTOO4PP4QQ4RRTSTT4UUV$WDXtXXXXYZDZZt[\\]4`_d`e4]d]]]4^^^_ad4d4ee$b$cbcckkkkkkkkkkkkhfgTgghDhthdi$jTjtjj4kkl=>D@4@ABDBBC4CtCCCC|$dt)|$\L$dT$l L$dT$pD$p|$\L$l|$dtID$xP$RL$lQ|$hD$xT$hPOD$l|$\CD$d놐|$\L$lL$p|$\T$l4t 'ދ9uD$dL$x9qvCMT$p |$\D$lT$p뽉 D$l  DT$pD$pL$ L$lD$:T$xR$Q D$dl$dT$tL$dR|$hL$xD$h QqD$l|$\fB D$l  } L$l |$dt)T$dD$l L$pT$l D$pƃ L$l4 p-|$dtYD$xP$RL$lQD$hT$xL$hRmD$l|$\? L$dT$l 3T$l T$p փ T$l4L$pqL$pW|$dtID$xP$RL$lQD$hT$xL$hRD$l|$\?`T$l T$p T$l T$pJT$p|$dtiL$dT$l D$xP$RL$lL$dD$dP |$hl$hT$xL$hRD$l|$\X>D$dSL$pT$l D$p L$l HR|$dD$d0D$dt)ދug9uu^UL$x9qD$|XP9X\wh$RjS;j DL$|IP1D$|@P9]>EL$pL$p|$\T$l4L$pUD$pD$pth">|$\L$l4t #ދug9uu^ET$x9r L$|YP9Y\wh$PjS+j 4T$|RP2L$|AP9]>|$\MT$l T$`BD$pOL$`L$xD$lpt*ދu9uK\$xmtT$|RUŃML$xL$`T$pD$|9P8|h"$QjD$|PUT$|RL$xQ$PX$|$p<D$p[^_]XÐmL$xL$`T$pD$|9P8w(h"$QjD$|PxT$lrt*ދu 9uSmUŃ~:t$dmD$xD$`L$pT$|9J8L$lqtދu 9uwED$9XtT$zVD$l V t$dl$ |$\L$l4t 'ދ9uD$dD$x9pvT$xR$Q|$dD$tT$dPVxD$l|$\%|$\L$l4D$X D$XtAD$xP$R|$dL$tD$d QD$dPD$l|$\5$|$\D$XL$lT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQV$|$p]$t>T$xR$Q|$dD$tT$dPV(D$l|$\f#|$\L$l4MD$X) D$XtAD$xP$R|$dL$tD$d QD$dPD$l|$\A#|$\D$XL$lT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVdž$|$p #t>T$xR$Q|$dD$tT$dPVD$l|$\r"|$\L$l4D$X D$XtPD$xP$R|$dL$tD$d QD$dPVD$l|$\!|$\D$XL$liT$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVg$|$p!t>T$xR$Q|$dD$tT$dPVxD$l|$\!|$\L$l4t$X\$\L$XtGD$xP$R|$dL$tD$d QD$dPD$l|$\+ |$\D$XL$l T$lJu1Bu)T$|Rhs#L$tIQB$( T$lRT$XL$lYT$؃L$ уt$pSD$\PT$dL$dQVǃ$|$p t>T$xR$Q|$dD$tT$dPVD$l|$\r|$\L$l4t$X\$\ـL$XtGD$xP$R|$dL$tD$d QD$dPMD$l|$\|$\D$XL$lit$pT$lRRL$pIQ%D$dT$dRV蒂$|$pt)D$xP$R|$dL$tD$d QV|$\T$l4tHL$xQ$P|$dT$tL$dR迲_D$hd$hL$hL$hQ+藲_D$\|$€L$l\PP蹵_D$`|$\t'PR׳_D$\FPC9CwSP_tPPT$X@D$Xt`L$xQ$P|$dT$tL$dRL$dL$hL$hD$hPFD$l|$\|$L$XL$\D$l OT$lZكtD$|Ph#L=Tw9ww"%PW_GL$lIL$XD$lXL$ڃ D$ ȃt@ST$\R|$dL$dQD$|PD$l|$\z9\$XaaD$l@D$XT$lZD$كT$ ƒt@SL$\Q|$dD$dPT$|RmD$l|$\9\$XT$lRT$XL$lYT$؃L$ уt@SD$\P|$dT$dRL$|Q~D$l|$\6z9\$XaL$lIL$XD$lXL$ڃ D$ ȃt@ST$\R|$dL$dQD$|Pm~D$l|$\`9\$XD$l@D$XT$lZD$كT$ ƒt@SL$\Q|$dD$dPT$|R}D$l|$\zz9\$XaT$lRT$XL$lYT$؃L$ уt@SD$\P|$dT$dRL$|Qm}D$l|$\9\$XGL$lAQ ȃuT$lJL$\ZD$\T$Xt,L$xQ$P|$dT$tL$dRL$dQ|$\L$XT$l ID$lPH ƒL$lAYD$\ D$XtET$xR$Q|$dD$tT$dPT$dR{D$l|$\|$\T$XD$lL$lAQ ȃ%T$lJ#JL$XtBD$xP$R|$dL$tD$d QD$dPD$l|$\r|$\D$XL$lT$lJB уD$lP PT$Xt2L$xQ$P|$dT$tL$dRL$dQ(|$\L$XT$l iD$lPH ƒL$lA3A$ D$XtDT$xR$Q|$dD$tT$dPT$dRD$l|$\|$\T$XD$lL$lAQ ȃUT$lJ JL$XtPD$xP$R|$dL$tD$d QD$dPD$l|$\D|$\D$XL$lT$lT$\RL$pL$`D$`PDD$`T$`(tEL$xQ$P|$dT$tL$dRS_D$l|$\|$\D$l}T$lZكtD$|Ph#\$XL$lqtu*T$|Rh#Sz$) |$X~ 9D$Xv.D$|Ph#S>$* L$X4t1D$xP$R|$dL$tD$d QV|$\T$l4]L$xQ$PT$tR)WD$h |$\""D$xP$RL$tQXD$h |$\j$RL$tQ0fD$h |$\ T$lJj$PT$tRhD$h |$\D$l@tPtxtL$lID$lPL$lAtAtytT$lRL$lAT$lRRL$pIQ[Ã9tDT$xR$Q|$dD$tT$dPS~D$l|$\|$\L$lj$PT$tRbà j|$\T$lPL$|QD$pP17ÃtLL$xQ$P|$dT$tL$dRS趿D$l|$\|$\D$lT$xR$QD$tPT$|R4S$|$ptGD$xP$R|$dL$tD$d QD$xP D$l|$\I|$\L$l+t$pT$|RL$pQVGD$| |$ptBT$xR$Q|$dD$tT$dPV|D$l|$\|$\L$l4t$pD$|PT$pRVHD$| |$pet2D$xP$R|$dL$tD$d QV|$\T$l4 ÀtHL$xQ$P|$dT$tL$dRS肽D$l|$\ |$\D$lT$|RL$pQ=D$d|$\&jT$|RL$pQ16D$d|$\:T$lJu}|$\T$lL$|QD$pP6D$d|$\ L$lAD$\P|:T$|RL$pQA9D$d|$\&jT$lR9ÃtIL$xQ$P|$dT$tL$dRSӻD$l|$\ |$\D$lT$lJuDZ؃$  SL$tQiÃW ST$pL$|QD$p@PmÃtAT$xR$Q|$dD$tT$dPSD$l|$\9 |$\L$lD$|PT$pR\D$d|$\ t$pD$|PT$pRVAD$| |$p t2D$xP$R|$dL$tD$d QV, |$\T$l4mL$|QD$pPT$xRLID$| |$p5 5D$lXt؃T$lJuOD$|P$R8RL$xQS$P,Fƃuh# \$pt$pXT$|R$Q$PS$REƃi D$|tFT$xR$Q|$dD$tT$dPSD$l|$\z |$\L$lt$pD$|PT$pRVCD$| |$pt2D$xP$R|$dL$tD$d QV< |$\T$l4}t$pL$|QD$pPV\JD$| |$p tBL$xQ$P|$dT$tL$dRV̷D$l|$\ |$\D$l4Ht?T$xR$Q|$dD$tT$dPSYD$l|$\|$\L$l}H0T$lRL$|YP9Y\wh$PjSߟj T$|RP2L$|APD$xP$RL$tQID$h |$\H+H$ÀtDT$xR$Q|$dD$tT$dPSND$l|$\|$\L$lmt$pD$lPV}pD$x|$ptGL$xQ$P|$dT$tL$dRVD$l|$\|$\D$l4t$pT$lRVmD$x|$pt'D$xP$R|$dL$tD$d QV!|$\T$l4mt$pL$|QD$pPVrD$| |$ptBL$xQ$P|$dT$tL$dRV輴D$l|$\|$\D$l4T$|RL$pQD$xPXsD$h |$\ t$pL$|QD$pPVQD$| |$puh$tHT$xR$Q|$dD$tT$dPVD$l|$\0|$\L$l4 `ÀtKT$xR$Q|$dD$tT$dPSuD$l|$\|$\L$lD$|PT$pR$Ã_|$\T$lEL$|QD$pPa$ÃtLL$xQ$P|$dT$tL$dRS覲D$l|$\|$\D$l齿T$|RL$pQ$D$d|$\F銿T$|RL$pQ1%D$d|$\ZT$|RL$pQ%D$d|$\*tAT$xR$Q|$dD$tT$dPS蛱D$l|$\پ5|$\L$l齾D$lpL$x9qvID$|xP9x\wh3$RjWjL$|IPD$|@PVPL$|APD$l@;T$lJL$\QD$pPT$`L$`QD$tPT$dL$dQ$P讣ÃBCtHL$xQ$P|$dT$tL$dRSbD$l|$\|$\D$l}T$lJIL$\Q辣D$`|$\GT$lRVD$`|$\t##D$lPJT$\R螵ƃuL$x)t(D$xP$R|$dL$tD$d QVb|$\T$l4魼L$lAL$lAD$XPD$`|$\bL$lYSU$PT$|R$Q:D$p|$\D$|@,D$pT$|RtT$xL$|ih-$hJ$&D$|PU$RL$xQ$P`n$|$puT$x*錸L$lYtQD$xP$R|$dL$tD$d QS D$l|$\ID$x(6|$\T$lL$lQD$tPAD$dD$d[^_]XÐUzʷhF1҃B~@?@@ @3@@@@ @@@A@@@@@@@@@1@@@@"@&@*@ @$@(@,@5@6@7@8@9@:@;@<ÐUWVSt$1-%D$tFu1[^_]ÐWC_t DЉFߐT$*|$t%[^_]ÐS\$ D$PSMtT$ [ÐT$RS[ÐSL$Q %u,B%u|$ t% ZY[Ð1[expected END_OF_CHUNK%s/%ld unexpected integer=%ld opcode?=%ld has no compiled definition: left unlinkedUWVSt$,6wKf?N=J=L=%@,u"E%@ t%@L$QhoP2 E9^u2P xPhoh `o_@uPho%Phoh `-_ GE9{hoh ` _)~W QtCÃuG% AL$Qho% R6 %0wB=t)w$=tY% %  % $%% %  % $% 1@F% 1>% .jSt% % ^YjVLNQ QAá@PNQ Q@%  u4L$9qW[^_]bad code in backpatching%s/%lu <=predicate leads other group of clauses: ignorednot enough registersinsert_opUWVS|$l$$\$( S% D$|$5t$$tdz|d{}d$z$zzt$zd|TttdwtyUt$$VPsVW5V;ƒX9t `sp%\X9C@`%ttCQ` r2C9vC`C`H% 3\hs1[^_]Ð=\t1[^_]Ð=XS% C CC8CS% %9=Xu8=\uS% S  K\Ut$$Vhsh `U_hs71[^_]Ðs5`Co =\v htUt$$VUƒt$ >_t$PsVR5XVb925XV5V$; =\l=\LS  S  I=\ =hCSB%ufB% +BCS  =dSB%B% *BB% BCS  =dSB%B% B}=\ =hCSB%ufB% #BCS  =dSB%B% "BB% 'BCS  =dSB%B% &B}=\ D$S% =\=h SB%B% -BCS  =dSB% uB% ,B3uB% 7BB% 8BdB% !BCS  =dCSB% uB% B!3uB% 5B B% 6B=\|=hSB%B% %BCS  =d~SB% uB% $B\3uB% 9B:(B% :BB% )BCS  =dSB% uB% (B3uB% ;BB% a1[^_]Ð|$ 9_8v׋t$3y{ыu9u9T$t͋t$v3M[^_]bad constructor starts 1st arg of list2term/2list2term/2list too long: 1st arg of list2termatomic terminator should end 1st arg of list2term/2bad functor in 1st arg of list2term/2unexpected 1st arg of list2term/2UWVSL$D$ |$$@RL$h1ۋ0t$xt*WhPt$V^ [^_]Ð Ћu49u.C9O8p1t Ћu9u9T$t́~%h{]1[^_]ÐtЃt!tWhR?t Ћu 9utЃutWhRЃu  ‹t$1WhPh~WjQr^1[^_]Ð[^_]ÐUWVST$L$Yi؃t1[^_]Ð%ÁIuYL$tΉ%B9}9z@9|t"|$BJ*[^_]term_append/3UWVS\$D$xht|$T$D$t1[^_]ÐtMȃuՉL$=wT$ ‰tt 8utt (uD\T$ 9Z8w)hT$$RjS\1[^_]Ð[^_]value_trailing UWVS\$ l$0\$uPt$t$9\$,sL1[^_] ÐhΦUj|$W\1[^_] ÐhΦUjt$Vސ1]|$$;L$ыu9u9L$t$Ѓtut$9L$(w9s|$u+t$9u\.Vt$t$|$71|$t$9u\Vt$9\$, t < <uыu9uЃut9L$(w9st D$9\$t$9t$sD$|$|$9|$r[^_] ÐWVSL$t$^,ڋ~8tȃtu &VWSQRƒu 1[^_ÐV,[^_bad constructor starts 1st arg of lift_heap/32nd arg of lift_heap/3 should be integerVSL$ \$t$F`F`HCuЃtVh=R2X [^Ð%V` BSЃtVhk^`tL F<+C KK [^answer space overflow in findall_store_heapcopy_term overflow in findall_store_heapWVS|$t$V` B 9r&hAVjQhX1[^_ÐR_tӋu9uAYt$ЃtuLVF`@ PQWQu!hmV1[^_Ð F`[^_ÐWVS\$L$A`Q`RPp@Q`RA`|$WQP[Sjnt[^_Ð1[^_ÐWVSt$|$D$Z% Љt8uTWO[^_bad continuationcompound continuation expectedUWVSL$D$t$XtVhXSLU [^_]ÐЃuu VhiӐƋ=9N ‰t<<(u[^_]bad argument for dcg_streamvalue trailingUWVSD$t$T$X؃E=v1uVh/S^T fH9Bv@u9Zv6FP9F\whKVjPTUj]SFPFP HAHFPHЉ[^_]ÐUWVS\$|$$H0.L$(9qv=u9iv0GP9G\whKWjPTjRGP(GPFpGP؋\$\$L$(QWUPkt/H0T$T$L$ [^_]Ð1[^_]setarg/3's 1st arg must be integersetarg/3's 2nd arg cannot be atomicsetarg/3's 2nd arg cannot be unboundsetarg/3's 1st arg must be in 1..arityUWVSl$|$]؃tWhS[R [^_]Ðut tuWhVƐu Wh5밐~ 9vWhZ뚐4L$9qv<u9Yv2GP9G\whKWjPRjPGPGPNHGPm.[^_]change_arg/3's 1st arg must be integerchange_arg/3's 2nd arg cannot be atomicchange_arg/3's 2nd arg cannot be unboundchange_arg/3's 1st arg must be in 1..aritychange_arg/3's 2nd arg found unsafechange_arg/3's 3rd arg found unsafeUWVS|$t$l$WЃt#VhmRwP [^_]ÐOt#ȃtuVhQ뽐u Vh뤐~ 9vVh뎐9Ms Vhs Wu9UsVh4X[^_]Ð, T$PT$P,  Ð%ld bytes, %s!!! hashing table (almost) fullT$R@Phhh `Q_hzNj{NÐ  QpU  QU‰1=t %(75%)UWVS|$l$  IL$!É!9t>[|t.L$[9<u9ltC\$!9t [|u؋[4|2ui  9~ h <0l0L$ L0L$$ [^_]Ð1[^_]hdef/3 required before using hset/3UWVS|$l$ K!ډ!؉D$9t8 &R9<u9ltB!9T$t R|u؋ R9<u'9lu!t$ t[^_]Ðh"L1[^_]ÐUWVSl$|$ H!Ë[9,u%9|uD[^_]ÐD[^_]Ð H!Ɖ‹ C!Ӎ[9,u9|t9t|u1[^_]culprit->hindexUWVSl$T$ H!I\$9u 9lu\$ [^_]Ð\$I|u\$ 1[^_]Ð H!ljƋT$A!I\$9u9lt9u(h[^_]Ð|u\$ 1[^_]ÐWVS\$\$ u]19  5=1Ґ\$ 81v<tD A9  w[^_Ð19  vF51\$ 81v#<t DD A9  w[^_COPY_KEYS UWVS\$ T$$Bt1[^_] ÐJL$RЃuT$19- 1L$8L|8|w%98D89D$w]t8t ֋u9uуL$u |$<9D$-9!|$L$(9Y8whL$,QjSuJj ~H8Ѓu-    9  с    T8Ѓu+    7  с      3 E9- .  [^_] ÐD$9t9t9uÐ9t9uÐ9t9uÐ1ÐST$L$Ѓu=u6ȃu,x%=\$ SD[Ð1[Ð UWVS|$ \$(L$,L$St$(VW}D$ |$u1[^_] ÐD$PL$QW tكu3D$@\t$$VWL$Q 50 Ń  9~ h L$I<t$t\L$t$ SL$(QWt$VNSU QW? tSWU5V)0 [^_] ÐT$BtBtztBBBtBtztBBBtBtztBBPJQJQRR6Stamp found %d, expected %d hash op on protected objecthtable full in hash opUWVSt$$l$(\$,\$FtFt~tFFFtFt~tFFD$P~W^SiD$ |$uk=|$L$\$89tTID9t@9PD$Phh `F_UhvVSD[^_]Ð|$u)UhϼvV&D [^_]Ð|$ue  9~ h u |$^vtT\$D$@D[^_]arg 1 of hash op should be nonvararg 2 of hash op should be nonvarunsafe data in def/3 or set/3UWVS\$(L$0L${|$CtCt{tCCCtCt{tCCCu"h$B1[^_]ÐCu h֐D$ PsVKQ.Ń ut=|$t$ t$L$8 >tYvD9tE>PD$ Phh `D_|$[^_Ð  `P@t9$t9,t<vu1[^_ÐWVS\$t$=; `BtBu  `Au:_u:t2A u:_uu=>[^_Ð1[^_ÐVSL$ \$51 `BtBu졌 `Bt0t(Btu53[^Ð 1[^ÐL$ `BtBu졌8uÐ1ÐWVS|$t$j)u4j,{t$VÃtVWÃ1ۉ[^_ÐVSt$j]#j|t:1ۍD$ Ptj]؅tcT$ [j,tB1ۍD$ PFtD$Pe؅tT$RT$R1ۉ[^ÐUWVS$,j[St|j]Et Mb1$$Pt$ P,$ Q$(Q!E $V$ SVSVSj($PǃD$$L$D$PD$PǃtgL$Q$Q$$QE 9T$|<LB9T$}$j$Q$$QiE 1[^_]ÐT$ T$, P1t, $, Ð1ÐD$ xPL$Qstring buffer (-i option) exceeded or infinite term%ldUWVS\$tˋ u9u+ 9~h-8[^_]ÐW|$9O4w^_+G4Phhl D_l Au [^_]Ð9 wh_a+PhhlC_l Au [^_]Ð|$9m_b+Phhl1C_l Au [^_]ÐȃuFPhhlB_l Au [^_]Ðu9 x Au [^_]Ð9 [|$WStVˋ uD9u>,|$WSDt ˋ u9u9 t9 t||$WS][^_]Ð x4Fu (9s4ōS|$W:WT$,T$F9rҋ|$WPT)[^_]ÐT$RT$RÐT$RT$RjRJ%sS\$T$ RT$ RRhCS7_[ÐUWVSt$|$ l$$L$\$ȃڃ ЍBA][^_]ÐSD$HT$JL$Ià ډT$ L$D$[bad arg in arithmetic operation S\$D$PD$ PD$Pt$(t$(, T$ ST$ST$S ؃[ Ð SL$ȃuulЃu P$N9 uY SYSIQ $؋4 SV21[ ÐL$ȃuu\Ѓu P$N9 uY SYSIQ|$C l$1EuEuB[ ÐVS\$(L$,L$t$0uuNЃu P$L9 uN QNQvVw "؋ 4 Q01[^Ðt$4u uЃu P$29 uN QNQvV|$ l$D$$ `p00000 1Euډ[^Ð1Eu1uΐ1È@s빐E@%![^ÐD@ސ1[^ÐD$PD$ PD$(P$6  L$4KL$0KL$,K ؃[^Ð WVS\$0D$4PHptЃt tЃut 1[^_ Ð xD$ȃuu\Ѓu P$\$X9 u(y WyWIQg\$$ .=4 W-1[^_ ÐȃuűЃu P$(9 uy WyWIQ D$lt*p$t$$t$$, `/$u, `\$ t$t$a, `|$ D$ PD$(PD$0P$= ;|$<{|$8{|$4{ ؃[^_ ÐVS\$$D$(PHtЃt tЃu t1[^Ð xD$ȃuuLЃu P$L9 uq VqVIQW "54 V+1[^ÐD$1?$p`0P$) `|$L$ L$l$<$XZl$D$ [^Ð$u) `$) `~E@tp؃$) `\E@tP؃$( `<$) `.$( `$( `$}( `ٍD$ PD$PD$P$5 3t$(st$$st$ s ؃[^Ð%ld%-se%-ld VS\$L$AtAtytAAAtAtytAAAtAtytAAAuAuyu At1[^ ÐAPA xPAPh5V4_j5V5_D$$PD$,PD$4P$5 3t$@st$SV9Ã1t>%t S:;1[^Ðuser_bpctrue_prolog:$end0c.c not compiled with -D C_INTERFACE l Rh `S*_1Ðl Rh `3*_1Ðis_compiled_1()atomic_1()integer_1()nonvar_1()var_1()cnl_1()cwrite_1()fail_0()symcat_3lval_3val_3set_3()rm_2()def_3()change_arg_3()setarg_3()arg_3compare0_3l_neg_3&int_only_op!=<=rel_opput0_1()get0_1random_1fdiv_3div_3%arith_opprolog:c_check_avprolog:c_opcodeprolog:c_check_ivget_cut()put_cut()move_regpush_variable()prolog:c_skipc_trace(" ")unify_integerprolog:c_aux_unify_integerwrite_integerprolog:c_aux_write_integerget_integerprolog:c_aux_get_integerput_integerprolog:c_aux_put_integerload_integerprolog:c_aux_load_integerprolog:c_wvoidprolog:oldH_newPprolog:newH_newPprolog:oldH_oldPprolog:newH_oldPprolog:newPprolog:c_chunk_endprolog:c_chunk_beginfun_arityfun_symbolunexpectedprolog:c_find_funprolog:get_offsetprolog:new_offsetprolog:c_check0prolog:c_check{255,0,0,");_size=sizeof(long "}};[] = {struct bp_instr {unsigned char op,reg; unsigned short arity; char *name;} "#include "#include "../src/c_defs.h"#include "../src/global.h"/* do not edit: generated by co.pl */user_bpwam_bpprolog:c_decorate_file0prolog:c_spec_endprolog:c_spec},,(void *) {prolog:make_commentprolog:patch_specials"},,"prolog:c_traceprolog:wchunkprolog:make_bcodeprolog:c_instrprolog:make_hcodeprolog:make_ccode500c_threshold_minc_threshold_max100000xxprolog:c_rootprolog:sprolog:defeditprolog:my_defeditVISUALEDITORprolog:get_editorls -tFprolog:ubootBinWAM intermediate code.asmprolog:make_includeprojectin_moduleunable_to_make.bp.cbin_prolog_with_cparserprolog:cparser119110120100104newappl.bpdcg.plwrite.plread.pllib.ploper.plinit.plprolog:listifyprolog:make_cmd0prolog:fact2rulebeginincludingprolog:exec_run_time_commands0% !!! action delayed after compilation, for command:prolog:get_cmd_no$run_time_commandprolog:cmd_rootprolog:cmd2clauseprolog:exec_cmdensure_loadedprolog:include_fileprolog:preprocessprolog:is_dynamic_clauseprolog:translate_cmdprolog:translateprolog:put_to_eofprolog:make_memo_fileprolog:include_memoed_fileprolog:memoable_fileprolog:memoing_translate_allprolog:translate_all0prolog:write_c_chunkprolog:make_dummy_endendprolog:close_c_chunk_fileprolog:c_decorate_file$end0footerprolog:comp_fileheaderprolog:decorate_filetotal_compile_timeprolog:xcompileprolog:compile1prolog:compile0totalbytes_usedprolog:translate_allprolog:init_cmdcompilation abortedcompile_time$end1prolog:terminate_fileprolog:maincompprolog:mcomp_fileto...compilingprolog:currpredoffsetaritypredicateprolog:newpred0file_nameprolog:let_c_chunk_fileprolog:wcode_asmprolog:wcode_cnprolog:wspec_cbegin_endc_flagprolog:c_thresholdprolog:write_or_skip0prolog:encode_opprolog:n_builtinbuiltin_?arith_valueprolog:n_aritharith_variableprolog:n_inlineinline_variableend_?firstarg_?prolog:n_nopclause_?prolog:write_or_skipwrite_voidunify_voidpush_variablepush_structureload_valueload_variableload_constantexecute_?get_cutput_cutpush_cutget_valueput_variableput_valueget_variableput_structureput_constantget_structureget_constantpush_constantwrite_constantunify_constantwrite_valueunify_valuewrite_variableprolog:wcodeunify_variableprolog:mc_transform_voidprolog:mc4prolog:mc_transform_pushprolog:mc_selprolog:mc3prolog:mc_chunkprolog:mc_pushprolog:mc5prolog:mc1prolog:mc0prolog:mc_emptyprolog:mc_input0prolog:mc_inputprolog:mc_topempty_opcutprolog:encode2prolog:encode_argprolog:instr_catprolog:mc_peepholeprolog:mc_one_instrprolog:encodeprolog:beautifyprolog:gen_instrprolog:temparg256prolog:maxarityprolog:write_instrprolog:antigenicc_chunk_valuec_chunk_variableprolog:make_anti_callprolog:bind_lengthmemprolog:bind_c_chunk_lengthDEFINITE:EXPANDED:prolog:show_stepsprolog:show_infoprolog:show_fun prolog:show_or_skipprolog:gen_codeFINAL CODE:prolog:mc_all_instrPOST TERM-COMPRESSION CODE:modeBRUT WAM-ASSEMBLER:prolog:show_instrprolog:show_codeprolog:add_upper_contprolog:def_to_mbin0prolog:def_to_mbinprolog:emit_isprolog:split_rel_1prolog:split_isprolog:split_relprolog:split_is_relprolog:app_bodyprolog:repl_lvalprolog:repl_disjprolog:repl_conjprolog:repl_known116117prologspying_onprolog:split_opprolog:strip_nilprolog:repl_macroprolog:repl_bodyprolog:mdef_to_defprolog:get_regprolog:free_regprolog:allocate_regprolog:allocate1prolog:check_var_argprolog:check_var_varprolog:check_lifetimesprolog:set_toprolog:defaultprolog:collapse_themprolog:mark_varprolog:mark_argvaluevoidprolog:get_var_typeprolog:fill_var_typeprolog:fill_oneprolog:tpointprolog:fill_allbad_occurrenceoccatprolog:oldvarprolog:newvar$OCCprolog:occurrenceprolog:find_occurrencespushprolog:deep_var_opunifyprolog:unify_opprolog:emit_args0prolog:deep_structure_opprolog:emit_structureprolog:cc_tprolog:cc_argstructureprolog:emit_argsprolog:cc_argsprolog:emit_top_structureprolog:classif_argloadconstantprolog:classif_loadinlineprolog:cc_b_argsprolog:emit_top_bargsprolog:handle_constant_resprolog:out_regtempprolog:cc_top_tprolog:cc_eq1unexpected_body_atomprolog:emit_body_top_termprolog:cc_builtinprolog:cc_eqcutargprolog:emit_top_argsprolog:cc_top_argunexpected_head_atomprolog:emit_head_top_termbuiltinprolog:cc_b0prolog:cc_h0prolog:set_modeprolog:get_modeprolog:end_chunkprolog:emitprolog:hidden_varlenc_chunkprolog:begin_chunkprolog:cc_hprolog:cc_bprolog:allocate_regsprolog:collapse_argsprolog:fill_infodictprolog:varsprolog:maxprolog:cc_h_bexecutefirstargiiprolog:classif_firstprolog:firstargprolog:cc_clauseprolog:bu_bodyprolog:cutpfailing_to_compile_clauseprolog:newpredprolog:gg_emitprolog:cc_compile_clauseBINARY:binprolog:bin_builtinprolog:c_chunk_filewam.hcwamprolog:cc_must_have_builtinsprolog:cc_builtinsprolog:compile_builtinsprolog:cc_bincompprolog:compile_binaryshould be groundprolog:free_variablesprolog:explicit_bindingprolog:term_is_free_ofprolog:list_is_free_ofprolog:replace_key_variablesprolog:concordant_subsetprolog:replace_instanceprolog:keymergeprolog:samkeyrunillegal_argumentsprolog:keysortprolog:ksortprolog:merge_2prolog:merge_sort1prolog:merge_sortprolog:remdupsortedprolog:bb_origunsortedprolog:assume_oneprolog:assume_all0prolog:assume_all$usedprolog:copy_or_delete_llprolog:get_assumed_clauseprolog:insert_llprolog:assume_with_hint_llprolog:assume_llprolog:assume_fileprolog:assume1error_in_assumebad_clauseprolog:add_hint_lllinearprolog:assume$closedintuitionisticprolog:generate_run_time_predicateprolog:listing1% assumed prolog:listing0% prolog:consult_cmdprolog:consult_includedconsultingtimeconsultedprolog:consult_embeddedprolog:survive_cleanupprolog:consult0% using compile/1 is MUCH fasterprolog:consult_warningabolish_expects_dynamic_clausesfoundprolog:abolish0prolog:clause$dbrefprolog:collect_slotprolog:erase0prolog:clause0prolog:assert_itunable to assert clauseprolog:add_clause0prolog:add_clauseprolog:ensure_dynamic$lastdynamic code would shadow assumed predicateWARNING: dynamic code will shadow compiled predicateprolog:define_dynamicprolog:check_dynamicprolog:make_dynamic!!! compiled!!! dynamic!!! assumedFail: Call: : prolog:tr_callExit: Redo: prolog:tr_if2prolog:tr_disj2prolog:tr_if1prolog:tr_goalprolog:tr_disj1prolog:tr_bodyCUTprolog:do_disj0prolog:do_if_then_elseprolog:do_disjprolog:do_conjundefined_predicateprolog:do_undefprolog:do_applyprolog:do_goalprolog:do_compiledprolog:do_bodyunbound_goal ; for more, otherwise prolog:user_actionprolog:another_solprolog:report_top_varsprolog:report_one_vargoaltopprolog:savetopprolog:nothingprolog:topcallprolog:report_answersprolog:topinterp?- prolog:topstepinit_io$endprolog:exec_run_time_commandsprolog:binpro_startprolog:l_magic2:- ->; ( , :- prolog:l_magic_nlprolog:l_magicprolog:l_clausesprolog:pp_clause0prolog:classify_other_tailprolog:classify_alpha_tailprolog:classify_name700prolog:w_operprolog:w_tailprolog:w_argsprolog:w_atomotherprolog:w_VARprolog:w_variableprolog:put_stringalphaquoteprolog:maybe_spaceprolog:maybe_parenpunctprolog:w_out126969492255248246223222216214192prolog:is_latin1_majprolog:is_latin1_min90122prolog:r_varcountprolog:r_digsprolog:r_digitsprolog:r_int! end_of_file just after full_stopprolog:is_specprolog:is_alpha_num! end_of_file in /*.. commentprolog:patch_slashprolog:more_string! end of file in: tokenprolog:r_symbolprolog:is_minprolog:is_numprolog:r_integerprolog:is_majprolog:r_lookup95prolog:r_nameprolog:r_stringprolog:r_fullstop1251241239391prolog:r_after_atomprolog:r_solidusprolog:is_terminator-1end_of_fileprolog:r_toks 99999prolog:display_tokenprolog:finish_syntax_error** SYNTAX ERROR: byte=syntax_errorprolog:display_listprolog:start_syntax_errorbracketvariableprolog:cant_follow_exprfollows10001100prolog:peepopprolog:exprtlprolog:prefix_is_atomprecedencewithcontextprefixlist|]|argumentsin,)anstartcannotstring}{(()prolog:r_list][prolog:after_prefix_op999applyprolog:exprtl0prolog:r_args(prolog:rtsprolog:ambigopprolog:infixopprolog:postfixopprolog:prefixopprolog:expectexpressionafterexpectedoperatorprolog:syntax_errorprolog:rtprolog:all_readprolog:r_and_checkprolog:portable_writeqprolog:portable_writeprolog:portable_printprolog:r_vars** warning singleton_variables, byte=>=> :-...prolog:melt_varnamesprolog:warn_singletons1prolog:r_termprolog:singletonsfile_not_foundprolog:see_a_fileprolog:find_file2bad file namelibraryprolog:find_file1unable_to_tell_atunable_to_see_atunable_to_tellunable_to_seeprolog:peval_iobinprologprolog:default_prologexpected_to_expandtry_edcg_expansion-->>prolog:dcg_CONJprolog:dcg_disj0prolog:dcg_term{}prolog:dcg_disjprolog:dcg_goal@@prolog:dcg_head:-prolog:dcg_conjprolog:dcg_bodydcg expansion error->prolog:dcg_rule-->prolog:try_dcg_expansionkillcdaccessno such environment variablegetenvargvargcprolog:unix_argvHOMEprolog:unix_cdprolog:append3prolog:near_matchpredmarkprolog:predicate_key0compiledbuilt_ininterpretedprolog:generate_a_predicateprolog:predicate_property0prolog:is_predicateST267911168prolog:float_minus101prolog:try_float_exp1eprolog:try_float_expboxprolog:try_floatculpritblackboard overflow, left onlyprolog:bb_put_1prolog:bb_put_backprolog:rmprolog:letprolog:valprolog:setprolog:defprolog:bb_failprolog:bb_gcprolog:bb_default_valprolog:$gteqprolog:$lesseqprolog:$noteqvariable_in_iserror_in_isin tab/1: should evaluate to an integerprolog:tab0prolog:make_lengthprolog:get_lengthprolog:general_appendprolog:append_bodyprolog:appendNprolog:det_appendprolog:term2dlistprolog:term2list$floatBP_PATH9798105108prolog:getenv_path99115103111114112121109prolog:compile_memprolog:see_or_failprolog:save_termprolog:numbervars$VARvarsprolog:are_sharedprolog:share_varssprolog:call_ifdefno meta_interpreter for undefined goalcall_ifdefprolog:std_expand_termprolog:portable_expand_term1200?-1199prolog:interactive0prolog:is_interactivenoprolog:is_builtin_varprolog:bucontprolog:is_builtin_nonvarunable_to_spy_onyes$assumed$firstyfpostfixopxffyprefixopfxyfxxfxinfixopxfyprolog:op_typeprolog:get_op010000opmarkprolog:get_opprolog:gensym_noprolog:is_publicbad or repeated declarationprolog:hide_atom0prolog:hide_atomprolog:public0currentshould_be_nonvar[]*** : >>> userprolog:portray_errorprettyprolog:error_messagebasicbboardhtablesymbolsstringscodetraillocal_stackglobal_stackruntime:Cset_c_traceset_c_thresholdstat_dictsavedmember_inth_memberphrasefalseotherwisenospyspyingspyspy_goalinit_gensymgensymis_publicpublicmodule_namemodule_predicatecurrent_modulemodulesis_modulemodulemodule_calllwritepatch_itshow_code0char_in_cmdith_clausetr_bodydo_bodygc_read_clausegc_readadd_truebootctracetmakekcmakekmakecmakemake0makemake_executable_unix_applmake_appldirlscurrent_user_filecovinotepadpicoemacstexteditedmy_editeditis_builtinopcurrent_opswritesreadflushsee_or_failexists_filefind_filemake_file_namefile_libraryfile_extension_listfile_search_pathtelling_attell_atseeing_atsee_attoldtellingtellseenseeingseettycwritelnttycwritettyprintttyprinttynlttyputttyoutttyinfast_writepp_termpp_clauseportray_clauseportraydisplayportable_displaywriteqprintwriteread_tokensread_clauseread_with_singletonswarn_singletonstop_read_termread_termreadnlput_codeget_codeis_prologtoplevelmainquietmeserrmesuser_errorvars_ofterm_charsnotfree_variables^setofbagofkeysortsortbb_elementbb_listbbis_dynamicis_assumed-:assumed_clauseassumedassumelassumei=>listingreconsultconsultdebugabolishclauseeraseinstanceretractallretractassertassertzassertadynamictracemeta_interpretersystemunixaproposhelpctimecurrent_predicatepredicate_propertyacosatanasintancossinexpsqrtlogpow:=:dcg_phraseletbb_change_argbb_letbb_rmbb_valbb_setbb_def=\==:=>==<><@>=@=<@>@<\====compareexprisgettabappend_disjappend_conjappendNcompoundnumberfloatatomgroundgc_callnumbervarsmake_cmdlength++det_appendmemberappendargnforall_but_at_leastfind_at_mosthas_fueldrop_at_leasttake_at_mostnth_answerfind_whileskip_whenskip_untilwhileallfindall_disjfindall_conjfindallfindall_workhorse\=\+repeat,;->=expand_termmetatruemetacallinteractivestatistics::-=..asmadd_conttermcatstrip_contiforincludecompile.!bu1174n_nop160n_builtinn_arithn_inlinebu_ctrin_head8584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111098arith765432in_bodybu0700 xfx :=700 xfx =:600 xfx <=950 xfy =>950 xfy -:600 xfx :=:900 yfx :1200 xfx ::-1150 fx module1150 fx public1150 fx dynamic1050 xfx @@1050 xfy ->900 fx nospy900 fx spy900 fy \+900 fy not700 xfx \=700 xfx =..700 xfx ==700 xfx \==700 xfx @<700 xfx @>700 xfx @=<700 xfx @>=500 fx \500 yfx \500 yfx /\500 yfx \/500 fx #500 yfx #400 yfx //400 yfx <<400 yfx >>300 xfx mod200 xfy ^300 fy ~700 xfx =:=700 xfx =\=700 xfx <700 xfx =<700 xfx >700 xfx >=660 xfy ++650 xfy .400 yfx *400 yfx /500 fx +500 yfx +500 fx -500 yfx -700 xfx =700 xfx is1200 fx :-1200 xfx :-1200 xfx -->1100 xfy ;1000 xfy ,if0profilebb_resetlist_asmstat0shellnamefunctorfindall_load_heapfindall_store_heaprestartabortcallhaltnew_builtinsuspend_enginemultitask_enginesask_engineload_enginedestroy_enginecreate_enginequietunix_killunix_cdunix_accessunix_getenvunix_argvunix_argcsetrefbb_opbb_getbb_putiso_lseekiso_eofiso_peek_byteiso_get_byteiso_put_byteiso_read_termiso_write_termiso_close_streamiso_open_streamdcg_tellingdcg_telldcg_valdcg_defstrip_cont0write_floatinput_floatfloat_funfloat_fun2term_appendop0string_opsee_tell_atseeing_telling_atseen_toldsee_tellseeing_tellingolder_filebb_list0copy_termdet_append0lift_heapadd_instrself_infoterm2listlist2termdcg_connectsymcatlvalvalsetrmdefchange_argsetargargcompare0\#\//\>><<arith_difarith_eqgreater_eqless_eqgreaterless0putget0random///mod*-1+is_compiledatomicintegernonvarvarcnlcwrite_failtrue?$cut$bin_cutlibm.so.4DLL Jump 4.5pl26USu1=t@<uÅtKu]]ÐUS=tЃ;uh_]]ÐU=u]Ðlibc.so.4DLL Jump 4.5pl26S\$̀}أ[Ð[ÐSV\$̀}أ[Ð[ÐS\$L$ T$̀}أ[Ð[ÐS[\$L$ ̀}أ[Ð[/lib/ld.so: can't load dynamic linker '/lib/ld.so' statically linked 8UWVSl$L\$P=D$D bht[|$ ft8t@8u+PSj j*D$Pj hZ񐐐h$hT$\RSD$ PPD$\ЋT$,RT$,R &|$+jD$PjM j[^_]8ÃfT$fur|$fD$f%fD$f%?fT$f fD$l$ÐUWVSl$|$19tv xWUT$RЃ C9tw[^_]Ð@ ( B B B B  B  B  B  B J J J J J J J {J wJu pJ u hJ u `J u UJ u LJ u BJu ?J <J 9J 6J 4J 2J )J %J Ju Ju Ju  Ju Ju J J J J J  J! J" J#u J$u J% J& J' J(u J) xJ*u nJ+u \J, PJ-u FJ. BJ/u 6J0 +J1 !J2 J3  J4u J5 J6u J7 J8u J9 J: J;u J<u J= J>u J? rJ@ jJAu `JB YJCu RJD LJE EJFu ;JG 1JH %JI JJu JKu JLu JM JN JOu JPu JQ JRu JSu JT JUu uc[VPJ A 8 0 , ! yndXLC9-" ti_TG;/u =  = = = = = = u= = = = = = {{= ww= upp= uhh= u``= uUU= |uLL= yuBB= vu??= s<<= p99= m66= j44= g22= d))= a%%= ^= [u= Xu= Uu  = Ru= Ou= L= I= F= C= @= == := 7u= 4u= 1= .= += (u= %xx= "unn= u\\= PP= uFF= BB= u66= ++=  !!=  =   = u= = u= = u= = = u= u= = u= rr= jj= u``= YY= uRR= LL= EE= u;;= 11= %%= = u= u= u= = = u= u= = u= u= = uu =   uu= cc= [[= VV= PP= JJ= AA= 88 00| ,,=y   wws mmi ecc eaa= eYY eQQ eNN= eKK= e@@= e88= e//= e++ e++ e''= e##= e e   e e e= e= e= e= e= e e e= e= e= e= e= e= e= e= e= e= e= e= ezz= eoo= ebb= eTT= eKK e>>= e--= e))= e$$= e= e= e  = eaa= e= e= e= e= e e e e e e e= e= e= e e e= e= e= e= e= e= e~~= ezz= evv= ett= err= eoo= ell= ehh= edd= e= e= e22= e]]= eVV= eOO= eII= eBB= e44= e00= e]]= eVV= eOO= eII eBB= e%%= e%%= e!!= e44 e= e= e= e= e= e  = e= e= e  = e  = e  = e= e= e= e  = e  = e   e   e   e   e  = e   e   e   e   e   e   e   e{ {  es s  eh h  e_ _ = eY Y  eR R = eJ J = eD D  e< <  e2 2  e* *  e* *  e* * = e' ' = e   e   e   e  = e  = e  = e   e   e   e   e   e  = e  = e  = e  = e  = e  = e  = e   e  = e  = e  = e~ ~ = eu u  ep p  ep p  eg g  e] ]  eT T  eK K  eH H  eC C  e9 9 = e+ + = e  = e  = e   e  = e   e   e   e   e   e   e   e   e   e   e   e   ez z  et t  el l  ec c  eY Y  eM M  eI I  eB B  e= =  e8 8  e0 0  e+ +  e$ $  e   e   e   e   e   e  = e  = e  = e   e  = e   e  = e  = e= eee e  = e  = ex x  es s = ek k  es s  eh h  e_ _  eY Y  eT T  eL L  eI I  eF F  e4 4  e1 1  e- -  e# #  e  = e   e   e  = e  = e  = e  = e   e   e  = e   e   e   e   e  = e   e   e  = e   e   e   e  = e  = e  = e  = e= e~ ~ = ew w  ek k = ed d  ed d = eZ Z  eR R  eC C  e2 2 = e& & = e   e   e  = e   e e e e e e e= e= e= e= e= e= e= e e= e e= e e= u xx ll ff aa YY QQ JJ CC      =  (~     !  (( JMuJ uJ)u  8   8 u JMuJ uc u   ==  B B B BB !!       a a     a aJuk k    k   2 2   a &  '4 3 a    '&   B B a  a V  4   V 3 a V&   aa   d   B&   & Bd   d d  C    & OC  Z    B &   OZ   434>34u3& u   R    Z       C    2   C   C ]  [    ~                O x        uB    nn JuJ Ju n  Ju     B `   K444 3Y3`3 4 3   u S ) J/u ` D   5DJJuJ u 511) 5%%) 5!!) 5 5 5 5  Ju  Ju B    J   4B3x  [      I [ e    > > 8 e  @>   x  Bx    B   K  Br   mjr  e  j r  m  j I2I@ J5  @    '  B  B          K   N N  K  K         B uJUu J$u u    c  a a u        u      u K443343   K4433   K43  oJu   Kb   KT   KKJuuJ uJuJu z     > b    - T      44    3 3          aa a    C  a      a    ) J u )J uJu)$ BJ $  )%    [  J B   aa    u   [     JuJu     hu u uJ& J&  J+uuJ*u   =   uJ.  J.    aa a P V  BPa YQYY u   aaaaaaqamaiaeaaa]aYa aaaaYaeaV C43aiaeaaa]aY C aaaaaaiaeaaaaia?  aaaaaia? aaaa?a;a8aea5aeam CC   a %- 4     3 V            K      V           V   aa J    BB  B  B  &=  B  B  ' BJ  'aJ! aJ! aJ!   >J%  J%      aa >2J%    4  K4 4 4 3 ) 3 3 'a a  a3     [                aa  J%  2J%   aaa   B u    u   aaJu  aaJ uJu     `    w@  )   {N443h@3pu       T ~  B       B E    %%'4  3 a aaa   [  %'4 3aaa  [J   uJ 2uJ   J Ju 7 t J ~ r J zJu (vJu t p r h o ` l U h L d B (tt ( rr  7tt 7rr ]   V   OJu  IJu 4  0   BJuVB]]      ]V      VO      OI    IB      B  O         0Ju 0Ju Ju Ju J       0Ju 4J %      %% J9uJ8uJ6u   !44 J!J J'u 8   aaaaaa  [    [        a>a  443q3i C X aaTaa V  ?XaT ?aa=  '?aa  a  a# a V V? u ' aaaT  uJ' aaaT    &uuuJ J1 J1  &uuJ1 J2 J2   J2 J2 J2  J2  J2  J2 J2  &uuuJ    aa>  B       B   [    N443 3   N443 3   x  B   B [>    [   B B  [   u   B  u zuz uJ uJ uuJ'u 43   43                      [ Vh Vh  h    Yh   Y4 3a> YY   JEJIuJKu4   JGuJu 413) // JG **4 ##  % ~  K  JJu  JKu  J  JLu         ~      4 3    ~~ ~        n      n   nn J0  B                    ^  ^[[   ccc     aa         KnK ^  :  :   J     :     **  *** aa          I    I%%   ~ I   T T  {K K  wH H  B B  u0 0     \u   \     B T J K Ju H BI uJ*u I      B uJ) 0 J) 8 J*u 8      = uJ+u+ J+u$ uJ-u $       J-u        uJ,  J,      }   uu  }    g  }      uJ)u       UU   I     CU  4    4  ~ 443434 3 3 4  V  3  3 4  V  3   I C  =          "   aa  J Mu J u a       > \u    4  3 4  4  H  4  4 4H H 33  3  3    3      aaC   + 9 9     aaa"    43>u    | e uJ)u I   I  J)u  8   8 l     c  4H 3   Y    M  4H 3  t   H  z  w         R R  B e 8R $B B   aaa a $a   aaNaa $      D     D      D     D      ) %  D      ) 1  D     ) !  D      8  aa $8 aa           a       4 3 a      8    aT uJu a     a     ' 4  3aa      8   i           T  ggae  gg  W      4 3 a     8   U       e     8 RR  U       e     8PPaN [ PP  N     4 3 [ e   8 GG     a a@ a: a7 a $ aaa       8aaU     a4aa1a' $W aaa  W     8W aa%  e   8Waae  W   a"aa1a $i  J u a a a a1 a a  a a   $i        i ' 4     3 a a         8 aaa aa aa a)aa a  aa))= J u J uUU ee NN %% J u J u aa   N4 4 3 4 u3 a4  3 )   3 4 u3 a4  3        aa  4 u3 a4 3 )   aa  4 u3 a4 3    aaJ u   4 3     8 aa%J u   4 3     8 aa  $4 4 3 a a a3 a    =  GGG RR  gg PP aa)    J u J u ' 4  3aaa     8aa    J u J u aa     ' aaJ uJ u   4 3      8 aa%J uJ u   4 3      8    $uJ)uuJ,u wI   I w B  cBV ?  w $uJ)u $I   I $VJu c caa c @ z c t cu c   c aa z @c c t      T  GG a  a: a a V       @   aa  B@J uJu11 {B{Ju==acJu((aRJu%%aUJuaJuaJuagJuaeJuaPJua%JuaNJuJu::aG  : t ++a V + ta  f   N4 4  3 4 3   ac3 4  4 S3 V 3   a>  E  4   X  & a  f   V     aJu V4 3a   ((aJut     Ju    tt z  z t   t    Ju  ta   t  a   t  aaR a  ""Ju    a V4    3a  t   ""JuJu""@ Juf a {ff   a {   t  e @J u  a V4 3a 4   JuJ u a    a 4 3 a  a     XX  BX ++u a+aJJuJX ++  u HX            :H      JuJu         :: a J uJ uJ u J u Ju      H:    S aa   (SaaS( a  ac   ( B   ( 5J u$J u J u!J u J uJ u cc  EJ u!J u Ecc E5J u$J u  &J uJ u J uJ u J uJ u  J uJ u  J uJ u  yy  77 44 .. ""                      |   e     e    J uJu      @Ju @Ju s saaJuss Jusaa JuJu ssaaJusa B     B a     T  B 4  N3 pu    N       > h   w( N4 4   w%3 4  @>3  3     @    @ > 2u(  [ [[Ju w e    aaJ u $       > w  %   (     N44    34 N3pu3          [ 4    3    4   3     (@%   %    N 4    3    4   3     (%  @  %    N 4  4    3   3   1 N444  3  3  !344  3  3  %  (%    %     %   N  2u(    @ J u    @  @Ju w@  @T  BuJ u R  wN44  3pR3 4 3 R   T @ T  2u4(3   @@cc =Ju@ Ju@ JuJu@[[ JuJu@aa   a+aa+s@ N44  34 4  s 3 3 3 N4 4 s 33 4 4 4  4  s +3 w+3 33     Vaa aaN  aa   aa  2   %Ju2 JuJuJu 2      $ BJu wa$ Ju$ aaJ u $   $ Ju w       u          B u u   eu u           a  aJuB  4 u a3            ea  ccu  ~Bcc  zBu   ~BB   a  aJuB  uB  pB   lBB  h  BB       JuJu   XU   X  BX p DD &p g !  g        43+  l   J        J   c aa  |iK44334c 3  c |  c  |  l  43  l i  4Vt 3T  i t   c V V  T  V   4 4V3T 3T  5 l       B (     N44344  333 B                         N4434 4   3 33    R N4434 4   3 33   B   [ ~ 4433i[  a>a '  '  '                cc  cc                 ~         ~   ~       u    B (     N4434 4  4  4    3  z3 3 33kk            kkcc k            [k k L[              >[    k[     k>    k k       Kkcc  k    kk              .k     kk  k  L.                  .      k.       k    k k       KL L   L L 444 N4  N 4  4  4  3  3  3 3 4  4  4  3  3  3 3K44  4   3  34  3L3 3K4 4 3 @34 K4  {>3 L3{3N4N4343 34443 3 3 44 4  3  3 3  N                         [ 4     k    N4 4 3 4  4 44  3 z33 3  3  3   [ 4  R   k    N4 4 3 4  4 44  3 z33 3  3  3    B [ 4  3     [         4t3 [ B ?   ~    t ] u  u]    43[         ~  JuJuJu    ]Ju    ]           {    s   4   3  h   >   )  >    h  xJ JuJ uJuJu x _ qqJuY qq   x IR   cq Ju Ju    4 3       J  J uJu J      S  [J  M - ~ S h  [S Ju JutD 2   u <    2      u 4I  =  u 433   uJ)u I   q  qaaq< < q2 2 q*       n 4    ^3  [*       S 4    C3  [^  43R ^ BC  43 C B*  *  u )*  B  N44 4   34 3 34   3u34  u3    *  *   * '            >     R           >     >  B   ~ a   x x   B gxaa               Ju B   MM    a   R   4MaM4   B B .4   B  g  a aJu gag  uI = I                 a    q  K      aaaaa aaaaa  uJ'        444 4  4  4  4  3   3   3   3 K4 4    3 3 4     3  4  3    3  3 C3C  N         [ N44 3  3    [    t    aaa  J aaaa    uu    aa JuJ u                 aaa aJ a   aa     z   h  z aa B    =   a z        Wz  zaaJ u B    =   a z   G  z          Wz    Waa B         a       4  W 3 a>  zW aa B         a      t   J  a  WW    aG   G aa  a        4  G3 a   zGa  aGG                 ' 4  [ a  4 4 /          3  3 3 aa      a  a    / / aa a    /  uu Ju BJuJuJJu aa  4 3 a    aaa  J               a B       B                [uu   Ju                                  B   [uu  Ju       aa                   K  B V        V      vdL9  9 d 9 d   d++     d  d  ~  q  q  %  [q  aaa`PJu;; B  u ; B  u ; [`aa8/ 8R  a  8'    P44w  [4434334>3 3 3             4 3   43 4443  343343      8>43 y4  3    m\   8>43 y4  3    mma L    <  y    /  \  "/   [%m4   38   /  hu  [     [/     ~                            " B  ""  u"  8w>4 3  "    m"  "    "     "  hu  [     ["    o ~                     B B aaa  m4    m4   <  Q4  <w 33 8>4 3 Lu3 8w>4 3 Lu      Q=uuu =    %     % =  [ "4  m4 " 38>3    [    %   %      m4    "  3 8>>     ["uu  "    B   "  B  8w>4 3 Lu m4 38>43Lu     m"     Q   B      B         Quu     m4  3 8w>4 3 Lu    Q  J u  J uJ uJ uJ u m4   3 8          J uJ uJ u             Q  J u J uJ uJ u  L  m4   38 4  3 %        J u  J uJ uJ uJ u        QQ    B  Q    B  Q  hu  [           [ m4    3 8 {4 3        Lm  J u m J uJ uJ uJ u    m    aa    B  a    B  a  hu  [   K        [ J uJuJ uJ u    m   a                mK 2   m4 3 8 {4 3       L                   J u  J uJ uJ u  L  m4      38         ww      2 2ww  B    B    J u               aa8 a   8           B       B               4 3  ~   JJu           u s J    aa c    NN88  B :N : 5 : 5 : :/ J uc 88% 4343>    sc88=    sc 88%     sc 88=   4 3 s   4  >3 >J ww  4  >3 >J J u J u  == J u J uJu        u          4 4 4 3  3 3        J u J u  J uJ u  aa    88=       w  w  B g   Xw  BJ u   XwJ u   gg    a J u g  X a   X J E 4 E  44 B 4  "4   4   ] 4 4c 433 4]    O]   a4aVaaV"cc " B " B " B " B " B "    "    " 4 4" )" )" )t"~~ )r"!! "44 " k "4"   4"   4" 4"   4"4"4"   4  B 4  4 4 K B      4 4 4N 4 444             tt   p  n rr   h  n oo   `  n ll   U  n hh   L  n dd   B  na B au B au    au   ]   ^  aaaa  aan  KK ^    ' 4 <  3 a a a     ^^  B   ^  B   ^     ^ a a  a   ^    ^     ' 4<  3aa  a  a    '^ a a  ^    ' 4 <  3 aa  a    '<a )    )     ~~ B  8 / 8  B /   /  43@   //// / 643 // J0 8 J0        4       3 4   3     B      B  w    B   c  c88% Bc88w/% Bc    8 a  a     aQ@   Qww Q Q @    4www n 3 a  @   a  . ++ 444 3 3 $3 443 3  N.            u    aa                  88      8 4  3        88      8 4  3   >u     B    8    44>u3a438>u384u3           J u      w     w {{ l  [ 88    K 88         =    ) )      88 8 J K%%K LL     lKK         K ww   K         w/                      8  a   [                 5     w h    w X 5  M  ?    wh    5{ &        h   X   5/    X   ?   5>5    ?   ?   M   M         w  w      588=     5   8 ~  8 58  8585 &88 8{8=      u= w     u=      u= w     u=      u   u= w     u   u=    =        u= xx   = kk       u= ]]   = PP          = FF       = 99     |     = //     y     = &&   v u  u=    s u  u=    p u  u=      m u    =      L     u=            =      I     =    = w     u=      u=      u=        =        =     u = ||        = vv     u     u= ff  V= GG u 8= ,,  8= ""        4    u u3 a a4  a a4  a3 a@3 a@   V  8   w  m          U   p                     O       u++ O     +4 3        K    J #u  J uJ uJ u wu         ++        a a a a     w w    '}    sB    sO   c c  OYVOYSOYR VYR BYLu [c BYVBYSBYR BYLu [<  OYSOYR OYL Y VOu   24.3+     4    u 433 4   u u   c  V V aa> Y4 Q4  J4   a4    Y4 Q4J4u 4344443a3Y3Q3J3aa>3aa>3 aa>3 a  a>3 aa>3 aa>3aa> a  a av a vv   f   4 3S f  >7Lu 4    &        u 4  3  324.3+  8 f >  u f + > >   43a43a438     +   w w w++ +& aa+aa      4qK44  V33 @3C   ] q  aaa     4 V   4   V 3 a 3aaia?    V@  J)u + 8   8 VuJ)u {.= I  I . .JuB  uJ)u  = I  I    ##    v 43{            . v   aaYY< < 2 2              K44 3aa3       ww  e e  V u    Oe    u 0u 4K43 u3 &  &  S K44 3343 ) uJ)u u 4 u  u 4 3 4  1 3 34 13      E )  2    V            aa aV#   aaaaaaa    4  3a4a4 a4  a a4  a4  a a4  a3 a@ a a@ aV a aq aa a a@ a a a@3 a@ a a@ aV a5 a a@ a a# a a5 ai ai a? a a8 ai a% a@ a a@3 a@ a4 a a+3 a a@ a# aV a aa a@ a+ a# a a# aV a@3aa@a#aVaaaa@a+aaacaaaaaa4a"aa@a#aaiaaaeaa@aaacaaaaa+3a(a#aVaaaa@a+a7a=a@aa8a;aaaYaa@a+  # s    []    s    s   |     S                 X             T           d  K4 4  d  3  3  ~ E a4  a4  a4 3 ;3 33    C      4            4  3  3 a a     aa43aa }  +  + &+   +            1    -   -  s   4 Y3aa4a3a@     % %   N  k  4  s    4     s   h   Y s   s _   _ k Y   Y k L   L k T   T k I   I k F  4  Y       B{  k B     B  O{  k Ou  g UU   C   4U"C    "   PB B B B B B B   43  4  4 3 a  a4  aa4 aa4 aa4 aa43aa@a"a3a@aa@3a@a3a@aa@3 a@ a a" a@3 a   <   4    w               3 4 H 3 w           w   w w   B     :4   V 3 4  ~  3   V~      N~      N~    8 8    4H 3       }77  W < !                    ||    1Oj  VYL Y LOX   Y LOF  B  ;~ F  O0 O&    u )F J B0B&"u  1  V    1 B   1 B  F  1  O j  X  j  X  N43443j>3)>  x B     _S B _k    :. B :      B    B    U4344 4 H 3  3 3     O       |      X  "u   4 ]]   ]   4 kk     _4  L4      L   L  4  4  4     4     4 PP 4 FF 4 99 94   4 && &4  4  4      4  4  4 // /4      :4 xx   x   4  4  4     4  4 ff 4 GG   p^4 ,,   p^^uuU ^U ^U ^US ^ M^F ^ =^ 6^- ^ &t^ &r^ &#^|| &l^yy &^vv & ^ss ?^pp <^mm ^jj %^gg  ^dd  ^aa ^^^ ^[[ ^XX ^UU ^RR ^OO ^LL ^II ^FF GG FJ u,, FJ u"" uJ up  uu     w l \ H`````?` Tibc_4_526