[gforth] / gforth / sokoban.fs  

gforth: gforth/sokoban.fs


1 : pazsan 1.1 \ sokoban - a maze game in FORTH
2 :    
3 :     \ Contest from Rick VanNorman in comp.lang.forth
4 :    
5 :     \ SOKOBAN
6 :    
7 :     \ Sokoban is a visual game of pushing. You (Soko) are represented by the
8 :     \ at-sign "@" You may move freely through the maze on unoccupied spaces.
9 :     \ The dollar-signs "$" are the rocks you have to push. You can only push
10 :     \ one rock at a time, and cannot push a rock through a wall "#" or over
11 :     \ another rock. The object is to push the rocks to their goals which are
12 :     \ indicated by the periods ".". There are 50 levels, the first of which
13 :     \ is shown below.
14 :    
15 :     \ program is ANS FORTH with environmental dependency of case-insensitiv
16 : pazsan 1.2 \ source. Tested with gforth, bigFORTH and pfe
17 : pazsan 1.1
18 : pazsan 1.2 \ bell (7) is replaced with "Wuff!" ;-)
19 : pazsan 1.1 \ (this is a german joke)
20 :     \ I don't like the keyboard interpreting CASE-statement either, but
21 :     \ was to lazy to use a table.
22 :     \ I could have used blocks as level tables, but as I don't have a good
23 :     \ block editor for gforth now, I let it be.
24 :    
25 :     40 Constant /maze \ maximal maze line
26 :    
27 :     Create maze 1 cells allot /maze 25 * allot \ current maze
28 :     Variable mazes 0 mazes ! \ root pointer
29 :     Variable soko 0 soko ! \ player position
30 :     Variable >maze 0 >maze ! \ current compiled maze
31 :    
32 :     \ score information
33 :    
34 :     Variable rocks 0 rocks ! \ number of rocks left
35 :     Variable level# 0 level# ! \ Current level
36 :     Variable moves 0 moves ! \ number of moves
37 :     Variable score 0 score ! \ total number of scores
38 :    
39 :     : new-maze ( n -- addr ) \ add a new level
40 :     here mazes rot 1 ?DO @ LOOP !
41 :     0 , 0 , here >maze ! 0 , ;
42 :     : count-$ ( addr u -- n ) 0 rot rot
43 : pazsan 1.2 over + swap ?DO I c@ [char] $ = - LOOP ;
44 : pazsan 1.1 : m: ( "string" -- ) \ add a level line (top first!)
45 :     -1 parse tuck 2dup count-$ >maze @ 1 cells - +!
46 :     here swap move dup allot
47 :     /maze swap - here over bl fill allot
48 :     >maze @ here over cell+ - swap ! ;
49 :    
50 :     : maze-field ( -- addr n )
51 :     maze dup cell+ swap @ chars ;
52 :    
53 :     : .score ( -- )
54 :     ." Level: " level# @ 2 .r ." Score: " score @ 4 .r
55 :     ." Moves: " moves @ 6 .r ." Rocks: " rocks @ 2 .r ;
56 :    
57 :     : .maze ( -- ) \ display maze
58 :     0 0 at-xy .score
59 : pazsan 1.2 cr maze-field over + swap
60 : pazsan 1.1 DO I /maze type cr /maze chars +LOOP ;
61 :    
62 :     : find-soko ( -- n )
63 :     maze-field 0
64 :     DO dup I chars + c@ [char] @ =
65 :     IF drop I UNLOOP EXIT THEN
66 :     LOOP true abort" No player in field!" ;
67 :    
68 :     : level ( n -- flag ) \ finds level n
69 :     dup level# !
70 :     mazes swap 0
71 :     ?DO @ dup 0= IF drop false UNLOOP EXIT THEN LOOP
72 :     cell+ dup @ rocks !
73 :     cell+ dup @ cell+ maze swap chars move
74 :     find-soko soko ! true ;
75 :    
76 :     \ now the playing rules as replacement strings
77 :    
78 :     : 'soko ( -- addr ) \ gives player's address
79 :     maze cell+ soko @ chars + ;
80 :    
81 :     : apply-rule? ( addr u offset -- flag )
82 :     'soko 2swap
83 :     \ offset soko-addr addr u
84 :     0 DO
85 :     over c@ over c@ <>
86 :     IF drop 2drop false UNLOOP EXIT THEN
87 :     >r over chars + r> char+
88 :     LOOP 2drop drop true ;
89 :    
90 :     : apply-rule! ( addr u offset -- )
91 :     'soko
92 :     2swap
93 :     \ offset soko-addr addr u
94 :     0 DO
95 :     count rot tuck c! rot tuck chars + rot
96 :     LOOP 2drop drop ;
97 :    
98 :     : play-rule ( addr1 u1 addr2 u2 offset -- flag )
99 :     >r 2swap r@ apply-rule?
100 : pazsan 1.2 IF r> apply-rule! true ELSE r> drop 2drop false THEN ;
101 : pazsan 1.1
102 :     \ player may move up, down, left and right
103 :    
104 :     : move: ( offset -- )
105 :     Create ,
106 :     DOES> @ >r 1 moves +!
107 :     S" @ " S" @" r@ play-rule IF r> soko +! EXIT THEN
108 :     S" @." S" &" r@ play-rule IF r> soko +! EXIT THEN
109 :     S" @$ " S" @$" r@ play-rule IF r> soko +! EXIT THEN
110 :     S" @*." S" &*" r@ play-rule IF r> soko +! EXIT THEN
111 :     S" @* " S" &$" r@ play-rule
112 :     IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
113 :     S" @$." S" @*" r@ play-rule
114 :     IF r> soko +! -1 rocks +! 1 score +! EXIT THEN
115 :     S" &*." S" .&*" r@ play-rule IF r> soko +! EXIT THEN
116 :     S" &$ " S" .@$" r@ play-rule IF r> soko +! EXIT THEN
117 :     S" & " S" .@" r@ play-rule IF r> soko +! EXIT THEN
118 :     S" &." S" .&" r@ play-rule IF r> soko +! EXIT THEN
119 :     S" &* " S" .&$" r@ play-rule
120 :     IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
121 : pazsan 1.4 S" &$." S" .@*" r@ play-rule
122 :     IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
123 : pazsan 1.2 -1 moves +! r> drop ;
124 : pazsan 1.1
125 :     1 move: soko-right
126 :     -1 move: soko-left
127 :     /maze move: soko-down
128 :     /maze negate move: soko-up
129 :    
130 :     : print-help
131 :     ." Move soko '@' with h, j, k or l key (like vi)" cr
132 :     ." or with vt100 cursor keys." cr ;
133 :    
134 :     : play-loop ( -- )
135 :     BEGIN
136 :     rocks @ 0=
137 :     IF
138 :     level# @ 1+ level 0= IF EXIT THEN
139 :     THEN
140 :     .maze
141 :     key
142 :     CASE
143 :     [char] ? OF print-help false ENDOF
144 :    
145 :     [char] h OF soko-left false ENDOF
146 :     [char] j OF soko-down false ENDOF
147 :     [char] k OF soko-up false ENDOF
148 :     [char] l OF soko-right false ENDOF
149 :    
150 :     \ vt100 cursor keys should work too
151 :     27 OF key [char] [ <> ENDOF
152 :     [char] D OF soko-left false ENDOF
153 :     [char] B OF soko-down false ENDOF
154 :     [char] A OF soko-up false ENDOF
155 :     [char] C OF soko-right false ENDOF
156 :    
157 :     [char] q OF true ENDOF
158 : pazsan 1.2 false swap ENDCASE
159 : pazsan 1.1 UNTIL ;
160 :    
161 :     \ start game with "sokoban"
162 :    
163 :     : sokoban ( -- )
164 : pazsan 1.2 page 1 level IF play-loop ." Game finished!" THEN ;
165 : pazsan 1.1
166 :     001 new-maze
167 :     m: #####
168 :     m: # #
169 :     m: #$ #
170 :     m: ### $##
171 :     m: # $ $ #
172 :     m: ### # ## # ######
173 :     m: # # ## ##### ..#
174 :     m: # $ $ ..#
175 :     m: ##### ### #@## ..#
176 :     m: # #########
177 :     m: #######
178 :     002 new-maze
179 :     m: ############
180 :     m: #.. # ###
181 :     m: #.. # $ $ #
182 :     m: #.. #$#### #
183 :     m: #.. @ ## #
184 :     m: #.. # # $ ##
185 :     m: ###### ##$ $ #
186 :     m: # $ $ $ $ #
187 :     m: # # #
188 :     m: ############
189 :     003 new-maze
190 :     m: ########
191 :     m: # @#
192 :     m: # $#$ ##
193 :     m: # $ $#
194 :     m: ##$ $ #
195 :     m: ######### $ # ###
196 :     m: #.... ## $ $ #
197 :     m: ##... $ $ #
198 :     m: #.... ##########
199 :     m: ########
200 :     004 new-maze
201 :     m: ########
202 :     m: # ....#
203 :     m: ############ ....#
204 :     m: # # $ $ ....#
205 :     m: # $$$#$ $ # ....#
206 :     m: # $ $ # ....#
207 :     m: # $$ #$ $ $########
208 :     m: # $ # #
209 :     m: ## #########
210 :     m: # # ##
211 :     m: # $ ##
212 :     m: # $$#$$ @#
213 :     m: # # ##
214 :     m: ###########
215 :     005 new-maze
216 :     m: #####
217 :     m: # #####
218 :     m: # #$## #
219 :     m: # $ #
220 :     m: ######### ### #
221 :     m: #.... ## $ $###
222 :     m: #.... $ $$ ##
223 :     m: #.... ##$ $ @#
224 :     m: ######### $ ##
225 :     m: # $ $ #
226 :     m: ### ## #
227 :     m: # #
228 :     m: ######
229 :     006 new-maze
230 :     m: ###### ###
231 :     m: #.. # ##@##
232 :     m: #.. ### #
233 :     m: #.. $$ #
234 :     m: #.. # # $ #
235 :     m: #..### # $ #
236 :     m: #### $ #$ #
237 :     m: # $# $ #
238 :     m: # $ $ #
239 :     m: # ## #
240 :     m: #########
241 :     007 new-maze
242 :     m: #####
243 :     m: ####### ##
244 :     m: ## # @## $$ #
245 :     m: # $ #
246 :     m: # $ ### #
247 :     m: ### #####$###
248 :     m: # $ ### ..#
249 :     m: # $ $ $ ...#
250 :     m: # ###...#
251 :     m: # $$ # #...#
252 :     m: # ### #####
253 :     m: ####
254 :     008 new-maze
255 :     m: ####
256 :     m: # ###########
257 :     m: # $ $ $ #
258 :     m: # $# $ # $ #
259 :     m: # $ $ # #
260 :     m: ### $# # #### #
261 :     m: #@#$ $ $ ## #
262 :     m: # $ #$# # #
263 :     m: # $ $ $ $ #
264 :     m: ##### #########
265 :     m: # #
266 :     m: # #
267 :     m: #......#
268 :     m: #......#
269 :     m: #......#
270 :     m: ########
271 :     009 new-maze
272 :     m: #######
273 :     m: # ...#
274 :     m: ##### ...#
275 :     m: # . .#
276 :     m: # ## ...#
277 :     m: ## ## ...#
278 :     m: ### ########
279 :     m: # $$$ ##
280 :     m: ##### $ $ #####
281 :     m: ## #$ $ # #
282 :     m: #@ $ $ $ $ #
283 :     m: ###### $$ $ #####
284 :     m: # #
285 :     m: ########
286 :     010 new-maze
287 :     m: ### #############
288 :     m: ##@#### # #
289 :     m: # $$ $$ $ $ ...#
290 :     m: # $$$# $ #...#
291 :     m: # $ # $$ $$ #...#
292 :     m: ### # $ #...#
293 :     m: # # $ $ $ #...#
294 :     m: # ###### ###...#
295 :     m: ## # # $ $ #...#
296 :     m: # ## # $$ $ $##..#
297 :     m: # ..# # $ #.#
298 :     m: # ..# # $$$ $$$ #.#
299 :     m: ##### # # #.#
300 :     m: # ######### #.#
301 :     m: # #.#
302 :     m: ###############
303 :     011 new-maze
304 :     m: ####
305 :     m: #### # #
306 :     m: ### @###$ #
307 :     m: ## $ #
308 :     m: ## $ $$## ##
309 :     m: # #$## #
310 :     m: # # $ $$ # ###
311 :     m: # $ # # $ #####
312 :     m: #### # $$ # #
313 :     m: #### ## $ #
314 :     m: #. ### ########
315 :     m: #.. ..# ####
316 :     m: #...#.#
317 :     m: #.....#
318 :     m: #######
319 :     012 new-maze
320 :     m: ################
321 :     m: # #
322 :     m: # # ###### #
323 :     m: # # $ $ $ $# #
324 :     m: # # $@$ ## ##
325 :     m: # # $ $ $###...#
326 :     m: # # $ $ ##...#
327 :     m: # ###$$$ $ ##...#
328 :     m: # # ## ##...#
329 :     m: ##### ## ##...#
330 :     m: ##### ###
331 :     m: # #
332 :     m: #######
333 :     013 new-maze
334 :     m: ##### ####
335 :     m: #...# # ####
336 :     m: #...### $ #
337 :     m: #....## $ $###
338 :     m: ##....## $ #
339 :     m: ###... ## $ $ #
340 :     m: # ## # $ #
341 :     m: # ## # ### ####
342 :     m: # $ # #$ $ #
343 :     m: # $ @ $ $ #
344 :     m: # # $ $$ $ ###
345 :     m: # ###### ###
346 :     m: # ## ####
347 :     m: ###
348 :     014 new-maze
349 :     m: #########
350 :     m: ## ## ######
351 :     m: ### # # ###
352 :     m: # $ #$ # # ... #
353 :     m: # # $#@$## # #.#. #
354 :     m: # # #$ # . . #
355 :     m: # $ $ # # #.#. #
356 :     m: # ## ##$ $ . . #
357 :     m: # $ # # #$#.#. #
358 :     m: ## $ $ $ $... #
359 :     m: #$ ###### ## #
360 :     m: # # ##########
361 :     m: ####
362 :     015 new-maze
363 :     m: #######
364 :     m: ####### #
365 :     m: # # $@$ #
366 :     m: #$$ # #########
367 :     m: # ###......## #
368 :     m: # $......## # #
369 :     m: # ###...... #
370 :     m: ## #### ### #$##
371 :     m: # #$ # $ # #
372 :     m: # $ $$$ # $## #
373 :     m: # $ $ ###$$ # #
374 :     m: ##### $ # #
375 :     m: ### ### # #
376 :     m: # # #
377 :     m: ######## #
378 :     m: ####
379 :     016 new-maze
380 :     m: ########
381 :     m: # # #
382 :     m: # $ #
383 :     m: ### #$ ####
384 :     m: # $ ##$ #
385 :     m: # # @ $ # $#
386 :     m: # # $ ####
387 :     m: ## ####$## #
388 :     m: # $#.....# # #
389 :     m: # $..**. $# ###
390 :     m: ## #.....# #
391 :     m: # ### #######
392 :     m: # $$ # #
393 :     m: # # #
394 :     m: ###### #
395 :     m: #####
396 :     017 new-maze
397 :     m: #####
398 :     m: # ##
399 :     m: # # ####
400 :     m: # $ #### #
401 :     m: # $$ $ $#
402 :     m: ###@ #$ ##
403 :     m: # ## $ $ ##
404 :     m: # $ ## ## .#
405 :     m: # #$##$ #.#
406 :     m: ### $..##.#
407 :     m: # #.*...#
408 :     m: # $$ #.....#
409 :     m: # #########
410 :     m: # #
411 :     m: ####
412 :     018 new-maze
413 :     m: ##########
414 :     m: #.. # #
415 :     m: #.. #
416 :     m: #.. # ####
417 :     m: ####### # ##
418 :     m: # #
419 :     m: # # ## # #
420 :     m: #### ## #### ##
421 :     m: # $ ##### # #
422 :     m: # # $ $ # $ #
423 :     m: # @$ $ # ##
424 :     m: #### ## #######
425 :     m: # #
426 :     m: ######
427 :     019 new-maze
428 :     m: ###########
429 :     m: # . # #
430 :     m: # #. @ #
431 :     m: ##### ##..# ####
432 :     m: ## # ..### ###
433 :     m: # $ #... $ # $ #
434 :     m: # .. ## ## ## #
435 :     m: ####$##$# $ # # #
436 :     m: ## # #$ $$ # #
437 :     m: # $ # # # $## #
438 :     m: # #
439 :     m: # ########### #
440 :     m: #### ####
441 :     020 new-maze
442 :     m: ######
443 :     m: # @####
444 :     m: ##### $ #
445 :     m: # ## ####
446 :     m: # $ # ## #
447 :     m: # $ # ##### #
448 :     m: ## $ $ # #
449 :     m: ## $ $ ### # #
450 :     m: ## # $ # # #
451 :     m: ## # #$# # #
452 :     m: ## ### # # ######
453 :     m: # $ #### # #....#
454 :     m: # $ $ ..#.#
455 :     m: ####$ $# $ ....#
456 :     m: # # ## ....#
457 :     m: ###################
458 :     021 new-maze
459 :     m: ##########
460 :     m: ##### ####
461 :     m: # # $ #@ #
462 :     m: # #######$#### ###
463 :     m: # # ## # #$ ..#
464 :     m: # # $ # # #.#
465 :     m: # # $ # #$ ..#
466 :     m: # # ### ## #.#
467 :     m: # ### # # #$ ..#
468 :     m: # # # #### #.#
469 :     m: # #$ $ $ #$ ..#
470 :     m: # $ # $ $ # #.#
471 :     m: #### $### #$ ..#
472 :     m: # $$ ###....#
473 :     m: # ## ######
474 :     m: ########
475 :     022 new-maze
476 :     m: #########
477 :     m: # #
478 :     m: # ####
479 :     m: ## #### # #
480 :     m: ## #@## #
481 :     m: # $$$ $ $$#
482 :     m: # # ## $ #
483 :     m: # # ## $ ####
484 :     m: #### $$$ $# #
485 :     m: # ## ....#
486 :     m: # # # #.. .#
487 :     m: # # # ##...#
488 :     m: ##### $ #...#
489 :     m: ## #####
490 :     m: #####
491 :     023 new-maze
492 :     m: ###### ####
493 :     m: # ####### #####
494 :     m: # $# # $ # #
495 :     m: # $ $ $ # $ $ #
496 :     m: ##$ $ # @# $ #
497 :     m: # $ ########### ##
498 :     m: # # #.......# $#
499 :     m: # ## # ......# #
500 :     m: # # $........$ #
501 :     m: # # $ #.... ..# #
502 :     m: # $ $####$#### $#
503 :     m: # $ ### $ $ ##
504 :     m: # $ $ $ $ #
505 :     m: ## ###### $ ##### #
506 :     m: # # #
507 :     m: ###################
508 :     024 new-maze
509 :     m: #######
510 :     m: # # ####
511 :     m: ##### $#$ # ##
512 :     m: #.. # # # #
513 :     m: #.. # $#$ # $####
514 :     m: #. # #$ # #
515 :     m: #.. $# # $ #
516 :     m: #..@# #$ #$ # #
517 :     m: #.. # $# $# #
518 :     m: #.. # #$$#$ # ##
519 :     m: #.. # $# # $#$ #
520 :     m: #.. # # # # #
521 :     m: ##. #### ##### #
522 :     m: #### #### #####
523 :     025 new-maze
524 :     m: ###############
525 :     m: #.......... .####
526 :     m: #..........$$.# #
527 :     m: ###########$ # ##
528 :     m: # $ $ $ #
529 :     m: ## #### # $ # #
530 :     m: # # ## # ##
531 :     m: # $# # ## ### ##
532 :     m: # $ #$### ### ##
533 :     m: ### $ # # ### ##
534 :     m: ### $ ## # # ##
535 :     m: # $ # $ $ $ #
536 :     m: # $ $#$$$ # #
537 :     m: # # $ #####
538 :     m: # @## # # #
539 :     m: ##############
540 :     026 new-maze
541 :     m: ####
542 :     m: # ##############
543 :     m: # # ..#......#
544 :     m: # # # ##### ...#
545 :     m: ##$# ........#
546 :     m: # ##$###### ####
547 :     m: # $ # ######@ #
548 :     m: ##$ # $ ###### #
549 :     m: # $ #$$$## #
550 :     m: # # #$#$###
551 :     m: # #### #$$$$$ #
552 :     m: # # $ # #
553 :     m: # # ## ###
554 :     m: # ######$###### $ #
555 :     m: # # # #
556 :     m: ########## #####
557 :     027 new-maze
558 :     m: #######
559 :     m: # # #####
560 :     m: ## # #...###
561 :     m: # $# #... #
562 :     m: # $ #$$ ... #
563 :     m: # $# #... .#
564 :     m: # # $########
565 :     m: ##$ $ $ #
566 :     m: ## # $$ # #
567 :     m: ###### ##$$@#
568 :     m: # ##
569 :     m: ########
570 :     028 new-maze
571 :     m: #################
572 :     m: #... # # ##
573 :     m: ##..... $## # #$ #
574 :     m: #......# $ # #
575 :     m: #......# # # # #
576 :     m: ######### $ $ $ #
577 :     m: # #$##$ ##$##
578 :     m: ## $ # $ #
579 :     m: # ## ### # ##$ #
580 :     m: # $ $$ $ $ #
581 :     m: # $ $##$ ######
582 :     m: ####### @ ##
583 :     m: ######
584 :     029 new-maze
585 :     m: #####
586 :     m: ##### #
587 :     m: ## $ $ ####
588 :     m: ##### $ $ $ ##.#
589 :     m: # $$ ##..#
590 :     m: # ###### ###.. #
591 :     m: ## # # #... #
592 :     m: # $ # #... #
593 :     m: #@ #$ ## ####...#
594 :     m: #### $ $$ ##..#
595 :     m: ## $ $ $...#
596 :     m: # $$ $ # .#
597 :     m: # $ $ ####
598 :     m: ###### #
599 :     m: #####
600 :     030 new-maze
601 :     m: #####
602 :     m: # ##
603 :     m: # $ #########
604 :     m: ## # # ######
605 :     m: ## # $#$#@ # #
606 :     m: # # $ # $ #
607 :     m: # ### ######### ##
608 :     m: # ## ..*..... # ##
609 :     m: ## ## *.*..*.* # ##
610 :     m: # $########## ##$ #
611 :     m: # $ $ $ $ #
612 :     m: # # # # # #
613 :     m: ###################
614 :     031 new-maze
615 :     m: ###########
616 :     m: # # #
617 :     m: ##### # $ $ #
618 :     m: # ##### $## # ##
619 :     m: # $ ## # ## $ #
620 :     m: # $ @$$ # ##$$$ #
621 :     m: ## ### # ## #
622 :     m: ## # ### #####$#
623 :     m: ## # $ #....#
624 :     m: # ### ## $ #....##
625 :     m: # $ $ # #..$. #
626 :     m: # ## $ # ##.... #
627 :     m: ##### ######...##
628 :     m: ##### #####
629 :     032 new-maze
630 :     m: ####
631 :     m: # #########
632 :     m: ## ## # #
633 :     m: # $# $@$ ####
634 :     m: #$ $ # $ $# ##
635 :     m: ## $## #$ $ #
636 :     m: # # # # $$$ #
637 :     m: # $ $ $## ####
638 :     m: # $ $ #$# # #
639 :     m: ## ### ###$ #
640 :     m: # #.... #
641 :     m: ####......####
642 :     m: #....####
643 :     m: #...##
644 :     m: #...#
645 :     m: #####
646 :     033 new-maze
647 :     m: ####
648 :     m: ##### #
649 :     m: ## $#
650 :     m: ## $ ## ###
651 :     m: #@$ $ # $ #
652 :     m: #### ## $#
653 :     m: #....#$ $ #
654 :     m: #....# $#
655 :     m: #.... $$ ##
656 :     m: #... # $ #
657 :     m: ######$ $ #
658 :     m: # ###
659 :     m: #$ ###
660 :     m: # #
661 :     m: ####
662 :     034 new-maze
663 :     m: ############
664 :     m: ## ## #
665 :     m: ## $ $ #
666 :     m: #### ## $$ #
667 :     m: # $ # #
668 :     m: # $$$ # ####
669 :     m: # # # $ ##
670 :     m: # # # $ #
671 :     m: # $# $# #
672 :     m: # ..# ####
673 :     m: ####.. $ #@#
674 :     m: #.....# $# #
675 :     m: ##....# $ #
676 :     m: ###..## #
677 :     m: ############
678 :     035 new-maze
679 :     m: #########
680 :     m: #.... ##
681 :     m: #.#.# $ ##
682 :     m: ##....# # @##
683 :     m: # ....# # ##
684 :     m: # #$ ##$ #
685 :     m: ## ### $ #
686 :     m: #$ $ $ $# #
687 :     m: # # $ $ ## #
688 :     m: # ### ## #
689 :     m: # ## ## ##
690 :     m: # $ # $ #
691 :     m: ###$ $ ###
692 :     m: # #####
693 :     m: ####
694 :     036 new-maze
695 :     m: ############ ######
696 :     m: # # # ###....#
697 :     m: # $$# @ .....#
698 :     m: # # ### # ....#
699 :     m: ## ## ### # ....#
700 :     m: # $ $ # # ####
701 :     m: # $ $## # #
702 :     m: #### # #### # ## #
703 :     m: # # #$ ## # #
704 :     m: # $ $ # ## # ##
705 :     m: # # $ $ # # #
706 :     m: # $ ## ## # #####
707 :     m: # $$ $$ #
708 :     m: ## ## ### $ #
709 :     m: # # # #
710 :     m: ###### ######
711 :     037 new-maze
712 :     m: #####
713 :     m: ##### ###### #
714 :     m: # #### $ $ $ #
715 :     m: # $ ## ## ## ##
716 :     m: # $ $ $ $ #
717 :     m: ### $ ## ## ##
718 :     m: # ##### #####$$ #
719 :     m: ##$##### @## #
720 :     m: # $ ###$### $ ##
721 :     m: # $ # ### ###
722 :     m: # $$ $ # $$ #
723 :     m: # # ## #
724 :     m: #######.. .###
725 :     m: #.........#
726 :     m: #.........#
727 :     m: ###########
728 :     038 new-maze
729 :     m: ###########
730 :     m: #...... #########
731 :     m: #...... # ## #
732 :     m: #..### $ $ #
733 :     m: #... $ $ # ## #
734 :     m: #...#$##### # #
735 :     m: ### # #$ #$ #
736 :     m: # $$ $ $ $## #
737 :     m: # $ #$#$ ##$ #
738 :     m: ### ## # ## #
739 :     m: # $ $ ## ######
740 :     m: # $ $ #
741 :     m: ## # # #
742 :     m: #####@#####
743 :     m: ###
744 :     039 new-maze
745 :     m: ####
746 :     m: ####### @#
747 :     m: # $ #
748 :     m: # $## $#
749 :     m: ##$#...# #
750 :     m: # $... #
751 :     m: # #. .# ##
752 :     m: # # #$ #
753 :     m: #$ $ #
754 :     m: # #######
755 :     m: ####
756 :     040 new-maze
757 :     m: ######
758 :     m: #############....#
759 :     m: ## ## ##....#
760 :     m: # $$## $ @##....#
761 :     m: # $$ $# ....#
762 :     m: # $ ## $$ # # ...#
763 :     m: # $ ## $ # ....#
764 :     m: ## ##### ### ##.###
765 :     m: ## $ $ ## . #
766 :     m: # $### # ##### ###
767 :     m: # $ # #
768 :     m: # $ #$ $ $### #
769 :     m: # $$$# $ # ####
770 :     m: # # $$ #
771 :     m: ###### ###
772 :     m: #####
773 :     041 new-maze
774 :     m: ############
775 :     m: # ##
776 :     m: # # #$$ $ #
777 :     m: #$ #$# ## @#
778 :     m: ## ## # $ # ##
779 :     m: # $ #$ # #
780 :     m: # # $ # #
781 :     m: ## $ $ ## #
782 :     m: # # ## $ #
783 :     m: # ## $$# #
784 :     m: ######$$ # #
785 :     m: #....# ########
786 :     m: #.#... ##
787 :     m: #.... #
788 :     m: #.... #
789 :     m: #########
790 :     042 new-maze
791 :     m: #####
792 :     m: ## ##
793 :     m: ## #
794 :     m: ## $$ #
795 :     m: ## $$ $ #
796 :     m: # $ $ #
797 :     m: #### # $$ #####
798 :     m: # ######## ## #
799 :     m: #. $$$@#
800 :     m: #.# ####### ## ##
801 :     m: #.# #######. #$ $##
802 :     m: #........... # #
803 :     m: ############## $ #
804 :     m: ## ##
805 :     m: ####
806 :     043 new-maze
807 :     m: ########
808 :     m: #### ######
809 :     m: # ## $ $ @#
810 :     m: # ## ##$#$ $ $##
811 :     m: ### ......# $$ ##
812 :     m: # ......# # #
813 :     m: # # ......#$ $ #
814 :     m: # #$...... $$# $ #
815 :     m: # ### ###$ $ ##
816 :     m: ### $ $ $ $ #
817 :     m: # $ $ $ $ #
818 :     m: ###### ######
819 :     m: #####
820 :     044 new-maze
821 :     m: #######
822 :     m: ##### # ####
823 :     m: # # $ #
824 :     m: #### #$$ ## ## #
825 :     m: ## # # ## ###
826 :     m: # ### $#$ $ $ #
827 :     m: #... # ## # #
828 :     m: #...# @ # ### ##
829 :     m: #...# ### $ $ #
830 :     m: ######## ## # #
831 :     m: #########
832 :     045 new-maze
833 :     m: #####
834 :     m: # #
835 :     m: # # #######
836 :     m: # $@######
837 :     m: # $ ##$ ### #
838 :     m: # #### $ $ #
839 :     m: # ##### # #$ ####
840 :     m: ## #### ##$ #
841 :     m: # $# $ # ## ## #
842 :     m: # # #...# #
843 :     m: ###### ### ... #
844 :     m: #### # #...# #
845 :     m: # ### # #
846 :     m: # #
847 :     m: #########
848 :     046 new-maze
849 :     m: ##########
850 :     m: # ####
851 :     m: # ###### # ##
852 :     m: # # $ $ $ $ #
853 :     m: # #$ #
854 :     m: ###$ $$# ###
855 :     m: # ## # $##
856 :     m: ##$# $ @#
857 :     m: # $ $ ###
858 :     m: # # $ #
859 :     m: # ## # #
860 :     m: ## ##### #
861 :     m: # #
862 :     m: #.......###
863 :     m: #.......#
864 :     m: #########
865 :     047 new-maze
866 :     m: ####
867 :     m: ######### ##
868 :     m: ## $ $ #####
869 :     m: # ## ## ##...#
870 :     m: # #$$ $ $$#$##...#
871 :     m: # # @ # ...#
872 :     m: # $# ###$$ ...#
873 :     m: # $ $$ $ ##....#
874 :     m: ###$ #######
875 :     m: # #######
876 :     m: ####
877 :     048 new-maze
878 :     m: #########
879 :     m: #*.*#*.*#
880 :     m: #.*.*.*.#
881 :     m: #*.*.*.*#
882 :     m: #.*.*.*.#
883 :     m: #*.*.*.*#
884 :     m: ### ###
885 :     m: # #
886 :     m: ###### ######
887 :     m: # #
888 :     m: # $ $ $ $ $ #
889 :     m: ## $ $ $ $ ##
890 :     m: #$ $ $ $ $#
891 :     m: # $@$ #
892 :     m: # ##### #
893 :     m: #### ####
894 :     049 new-maze
895 :     m: ####
896 :     m: # ##
897 :     m: # ##
898 :     m: # $$ ##
899 :     m: ###$ $ ##
900 :     m: #### $ #
901 :     m: ### # ##### #
902 :     m: # # #....$ #
903 :     m: # # $ ....# #
904 :     m: # $ # #.*..# #
905 :     m: ### #### ### #
906 :     m: #### @$ ##$##
907 :     m: ### $ #
908 :     m: # ## #
909 :     m: #########
910 :     050 new-maze
911 :     m: ############
912 :     m: ##.. # #
913 :     m: ##..* $ $ #
914 :     m: ##..*.# # # $##
915 :     m: #..*.# # # $ #
916 :     m: ####...# # # #
917 :     m: # ## # #
918 :     m: # @$ $ ### # ##
919 :     m: # $ $ # # #
920 :     m: ###$$ # # # # #
921 :     m: # $ # # #####
922 :     m: # $# ##### #
923 :     m: #$ # # # #
924 :     m: # ### ## #
925 :     m: # # # ##
926 :     m: #### ######
927 :     051 new-maze
928 :     m: #########
929 :     m: # #
930 :     m: # $ $#
931 :     m: #### #
932 :     m: # $ ##
933 :     m: #### $ #
934 :     m: #.. $ ## ####
935 :     m: #.. $## #
936 :     m: #.. $ #
937 :     m: #.###$### #@#
938 :     m: #.# # ###
939 :     m: ### #######
940 :     052 new-maze
941 :     m: ####################
942 :     m: # ########## @#
943 :     m: # $# # ######
944 :     m: # #### # ###
945 :     m: ##### # ###
946 :     m: # $ # ###
947 :     m: # $#### # # #
948 :     m: # # # #..#$### # #
949 :     m: # # #$ #..# $ $$ #
950 :     m: # #..# # # #
951 :     m: # # #..# # # #
952 :     m: ####################
953 :     053 new-maze
954 :     m: ####################
955 :     m: # ###
956 :     m: # $# $ ## $ ##
957 :     m: # $### # $$ ##
958 :     m: #.### $ $ ## ##
959 :     m: #...# # # #$ #
960 :     m: #..##$$#### $ # #
961 :     m: #...# $ ## ###
962 :     m: #...$ ### # # #
963 :     m: ##.. $# ## ##@ #
964 :     m: ###.# #
965 :     m: ####################
966 :     054 new-maze
967 :     m: ####################
968 :     m: # # # # #@#
969 :     m: # $ $ $ # #
970 :     m: ## ###..## ### #
971 :     m: # #....#$# $### #
972 :     m: # $ #....# $ $ $ #
973 :     m: # #....# # # $ $ #
974 :     m: # ##..## #$# #
975 :     m: ##$## ## # #$##
976 :     m: # $ $ # # #
977 :     m: # # # # #
978 :     m: ####################
979 :     055 new-maze
980 :     m: ####################
981 :     m: # @## # ##
982 :     m: # ## $ $ ##
983 :     m: # ###....# # # ###
984 :     m: # #....# # # $ #
985 :     m: ### #...# # #
986 :     m: ## ##.# $ $ #
987 :     m: ## $ $ ### # # ###
988 :     m: ## $ # # $ #
989 :     m: #### $ $# # # # $ #
990 :     m: #### # # ##
991 :     m: ####################
992 :     056 new-maze
993 :     m: ####################
994 :     m: # # ## # @###
995 :     m: ## $ # $### #
996 :     m: ##$# $ ##$# $ $ #
997 :     m: # $# $ ###
998 :     m: # ## $ ### #....#
999 :     m: # # $# # # # #....##
1000 :     m: # $ $ # #....###
1001 :     m: ##$ ### $ #....####
1002 :     m: # # $ ######
1003 :     m: # # # ######
1004 :     m: ####################
1005 :     057 new-maze
1006 :     m: ####################
1007 :     m: #@ ### # # #
1008 :     m: # # # # $ $ #
1009 :     m: ##### # $ $#$# #
1010 :     m: #.#..# ##$ $ #
1011 :     m: #..... $ # ##
1012 :     m: #..... ###$##$###
1013 :     m: #.#..# $ # #
1014 :     m: ##### # #$ $ #
1015 :     m: ##### # $ $ $ #
1016 :     m: ##### # # # # #
1017 :     m: ####################
1018 :     058 new-maze
1019 :     m: ####################
1020 :     m: ##... ## # # #
1021 :     m: #.... $ ## #
1022 :     m: #....# # #$###$ #
1023 :     m: #...# # # #
1024 :     m: ##.# #$ # $## #
1025 :     m: # # # $ $ ### $ #
1026 :     m: # $ $ # # ## #
1027 :     m: ## # ## #$$# $# # #
1028 :     m: # # $ $ # ##
1029 :     m: # # # # @#
1030 :     m: ####################
1031 :     059 new-maze
1032 :     m: ####################
1033 :     m: # # #@# ## #####
1034 :     m: # # # $ $ #####
1035 :     m: # # ###### $ ###
1036 :     m: # # #....# $$ #
1037 :     m: ##$##$##....# #
1038 :     m: # #....##$##$##
1039 :     m: # $$ #....# #
1040 :     m: # $ $ # # ### #
1041 :     m: ##### $ $ $ #
1042 :     m: ##### # # # ##
1043 :     m: ####################
1044 :     060 new-maze
1045 :     m: ####################
1046 :     m: # ###..### #
1047 :     m: # $$ ###..### $@ #
1048 :     m: # # ##......# $ #
1049 :     m: # #......# $ #
1050 :     m: #### ###..######$ #
1051 :     m: # $$$ #..# # #
1052 :     m: # $# $ $ $$ #$ #
1053 :     m: # # ## $ ## # #
1054 :     m: # $ $ ## $ $ #
1055 :     m: # # ## ## # #
1056 :     m: ####################
1057 :     061 new-maze
1058 :     m: ####################
1059 :     m: # # # # # # #
1060 :     m: # @# # ## $ $ ##
1061 :     m: #### # # # $ #
1062 :     m: # # ## #$ ## ## #
1063 :     m: # $ $ $ #
1064 :     m: #..###$$## $##$ ## #
1065 :     m: #..#.# # $ $ # #
1066 :     m: #....# $$ ##$ ####
1067 :     m: #....# ##### #
1068 :     m: #...### ## #
1069 :     m: ####################
1070 :     062 new-maze
1071 :     m: ####################
1072 :     m: #....# # # #
1073 :     m: #....# # $ $ #
1074 :     m: #.... ## $# # $#$ #
1075 :     m: #...# $ $# $ #
1076 :     m: #..#### # $ $$ #
1077 :     m: # #### #### ###
1078 :     m: # # # #
1079 :     m: # ## # $ # $ $ #
1080 :     m: # ## $ ## $ $ #
1081 :     m: # @# # # #
1082 :     m: ####################
1083 :     063 new-maze
1084 :     m: ####################
1085 :     m: #....### #
1086 :     m: #....##### # #$# ##
1087 :     m: #....### #$ $ #
1088 :     m: #....### $ #$$##
1089 :     m: ## #### $# #$ $ #
1090 :     m: ## #### $ $ # #
1091 :     m: #@ ####$###$## $ #
1092 :     m: ## # # $ #
1093 :     m: ## ### # $ ####
1094 :     m: ######## # # #
1095 :     m: ####################
1096 :     064 new-maze
1097 :     m: ####################
1098 :     m: # # @#...###
1099 :     m: # # ##...##
1100 :     m: # # # ##$## ## ....#
1101 :     m: # $ # $$$ ....#
1102 :     m: ###$### $$ ### ##.#
1103 :     m: # $ # # ####
1104 :     m: # $ # ### # # #
1105 :     m: ## #$## $ $$ #
1106 :     m: # $ ## # # # #
1107 :     m: # # # # #
1108 :     m: ####################
1109 :     065 new-maze
1110 :     m: ####################
1111 :     m: # # #...#@ #
1112 :     m: # # ....# #
1113 :     m: # $ # #....# #
1114 :     m: # ##$#### ##....# #
1115 :     m: # $ $ # #...# #
1116 :     m: # $$ # # # $$ #
1117 :     m: ### $$$# $$ $ #
1118 :     m: # $ # # # $# #
1119 :     m: # $# # $ #
1120 :     m: # # # # # #
1121 :     m: ####################
1122 :     066 new-maze
1123 :     m: ####################
1124 :     m: #####@###.##...## #
1125 :     m: #####$ ..#...# #
1126 :     m: #### ......# $ #
1127 :     m: ### $ #.....## # ##
1128 :     m: ## $$# ##### $ $ #
1129 :     m: ## $# $ ## $$ #
1130 :     m: ## # # # $ $ #
1131 :     m: ## $$ ### #$## #
1132 :     m: ## $# $ $ $ ##
1133 :     m: ### # # ###
1134 :     m: ####################
1135 :     067 new-maze
1136 :     m: ####################
1137 :     m: #@ # # #
1138 :     m: ## ### ## #### # ##
1139 :     m: # # # $$ #
1140 :     m: # # # # $ # $ ## ##
1141 :     m: # $ # #$$ # #
1142 :     m: # ### # ## ##
1143 :     m: #..#.# $ # $ # #
1144 :     m: #..#.# $ # ## $$ #
1145 :     m: #....## $$ $ # #
1146 :     m: #.....## # #
1147 :     m: ####################
1148 :     068 new-maze
1149 :     m: ####################
1150 :     m: # # # # ##
1151 :     m: # $# $ $ ##...$ $ #
1152 :     m: # $ # ##....# $ #
1153 :     m: # ## $ ##....# $ #
1154 :     m: # $ #....## $ #
1155 :     m: # $## #...# #
1156 :     m: # $$$##$## ### ##
1157 :     m: # # # # # # #
1158 :     m: # $ # $ ## #
1159 :     m: # # #@ #
1160 :     m: ####################
1161 :     069 new-maze
1162 :     m: ####################
1163 :     m: # # # # # # #
1164 :     m: # $ $ $ #
1165 :     m: ## # #$###$## ## #
1166 :     m: # $ $ # $ #
1167 :     m: # ###$##$# # $ #
1168 :     m: # # $ $ ###### $#
1169 :     m: # $ $$ $ #@#.#...#
1170 :     m: # # # # #.#...#
1171 :     m: # ########## #.....#
1172 :     m: # #.....#
1173 :     m: ####################
1174 :     070 new-maze
1175 :     m: ####################
1176 :     m: # # # ## ##
1177 :     m: # $# $ # ## #
1178 :     m: # $ $ #..# $ #
1179 :     m: # $ $ #....# # ##
1180 :     m: # $# #......### $ #
1181 :     m: # # #....# #$ #
1182 :     m: # $ ####..# # #
1183 :     m: ## $ ## # # $ $##
1184 :     m: ### $ $#@$ $# #
1185 :     m: #### # # #
1186 :     m: ####################
1187 :     071 new-maze
1188 :     m: ####################
1189 :     m: # ....# ####
1190 :     m: # .... #
1191 :     m: # # ########## #
1192 :     m: # #$ # ###..#
1193 :     m: # $ #$$### #..#
1194 :     m: # $ ### $ $ #..#
1195 :     m: # $ # $ $ # ##..#
1196 :     m: # # $$ # $ ## ##
1197 :     m: #@## $# $ $ ##
1198 :     m: ## ## # ###
1199 :     m: ####################
1200 :     072 new-maze
1201 :     m: ####################
1202 :     m: # # #@ # #
1203 :     m: # $$ #$$# # # ## #
1204 :     m: # # $ $ #$$ # #
1205 :     m: ## # # # # # # #
1206 :     m: # ## # #
1207 :     m: # # $ # # # #
1208 :     m: # $ #$ # # $ #..#
1209 :     m: ##$ # #### #...#
1210 :     m: # $ #....#
1211 :     m: # # # #.....#
1212 :     m: ####################
1213 :     073 new-maze
1214 :     m: ####################
1215 :     m: # # ##### #
1216 :     m: ## $ # #### $ #
1217 :     m: #### $$ #..# # #
1218 :     m: # $ $ ##..#### ##
1219 :     m: # $ ###.... $$ #
1220 :     m: # #$# ....# # $ #
1221 :     m: # # # $ ..###$# #
1222 :     m: # # $ #..# ## #
1223 :     m: # $# #### # $##
1224 :     m: # # # @# ##
1225 :     m: ####################
1226 :     074 new-maze
1227 :     m: ####################
1228 :     m: # # # # #@#
1229 :     m: # $ $ # $ # #
1230 :     m: ##$# $### # $$# #
1231 :     m: # # #.### #$ $ #
1232 :     m: # #$#....# # ### #
1233 :     m: # $ #.....## # #
1234 :     m: ##$ #.#....#$$ $ #
1235 :     m: # ######..## # # #
1236 :     m: # $ $ ### #
1237 :     m: # # # # #
1238 :     m: ####################
1239 :     075 new-maze
1240 :     m: ####################
1241 :     m: # # # # #@## # #
1242 :     m: # $ #
1243 :     m: # ##$# ##### $ # ##
1244 :     m: ## ##.....# # #
1245 :     m: ##$##$#.....###$#$ #
1246 :     m: # # ##.....# # ##
1247 :     m: # $ ##..## # #
1248 :     m: # $ # $ $ $$$ #
1249 :     m: ## $ $# # # $ #
1250 :     m: # ## # # #
1251 :     m: ####################
1252 :     076 new-maze
1253 :     m: ###### #####
1254 :     m: # # # #
1255 :     m: # $ #### $ #
1256 :     m: # $ $ #
1257 :     m: # ###@###$ #
1258 :     m: ########## ###
1259 :     m: #.. ## #
1260 :     m: #.. ##$ #
1261 :     m: #.. ## $ #
1262 :     m: #.. ## $ #
1263 :     m: #.. $ $ #
1264 :     m: ### #########
1265 :     m: ####
1266 :     077 new-maze
1267 :     m: ###########
1268 :     m: # #
1269 :     m: # $ $ #
1270 :     m: ###### # $ ##### #
1271 :     m: # ##### $ ##$#
1272 :     m: # $ $ #
1273 :     m: # ## ## #
1274 :     m: # ##@##### ## #
1275 :     m: # #### # ## ##
1276 :     m: #....# # $ #
1277 :     m: #....# # #
1278 :     m: ###### #######
1279 :     078 new-maze
1280 :     m: #############
1281 :     m: # #
1282 :     m: # ### $$ #
1283 :     m: # # $ $ #
1284 :     m: # $####$######
1285 :     m: # $ ## #####
1286 :     m: # $$ $ ...#
1287 :     m: ### ## $$# ...#
1288 :     m: # ## # ...#
1289 :     m: # # ...#
1290 :     m: ###@#############
1291 :     m: ###
1292 :     079 new-maze
1293 :     m: #################
1294 :     m: ###@## ...#
1295 :     m: # # ...#
1296 :     m: # $ # ...#
1297 :     m: # $$ # ...#
1298 :     m: ## $ ###$##########
1299 :     m: # ### $ #
1300 :     m: ## $ $ #
1301 :     m: # $ # $ #
1302 :     m: # $ # #
1303 :     m: # $ # #
1304 :     m: # # #
1305 :     m: ###########
1306 :     080 new-maze
1307 :     m: #####
1308 :     m: ########## #
1309 :     m: # # #
1310 :     m: # $ $ $$ #
1311 :     m: # ##### ## $ #
1312 :     m: #$$ #$## $ #
1313 :     m: # ### # ##$ #
1314 :     m: ###### ### $ $ #
1315 :     m: #.... ## #
1316 :     m: #.... ######
1317 :     m: #.... #
1318 :     m: ###########@##
1319 :     m: ###
1320 :     081 new-maze
1321 :     m: ######
1322 :     m: #### #
1323 :     m: # ## #
1324 :     m: # $ #
1325 :     m: ### #### ########
1326 :     m: # $ $ ## ...#
1327 :     m: # $$ $$ ...#
1328 :     m: # $ $## ...#
1329 :     m: ##@## ## ## ...#
1330 :     m: ### $ ########
1331 :     m: # $$ #
1332 :     m: # # #
1333 :     m: #########
1334 :     082 new-maze
1335 :     m: ####### #########
1336 :     m: # # # ## #
1337 :     m: # ### # # $ #
1338 :     m: # # $ ### $ #
1339 :     m: # $$ ##$ #
1340 :     m: # #### ## #
1341 :     m: #@############ ##
1342 :     m: ###.. #####$ #
1343 :     m: #.. #### #
1344 :     m: #.. $$ #
1345 :     m: #.. #### $ #
1346 :     m: #.. # # #
1347 :     m: ######## #####
1348 :     083 new-maze
1349 :     m: #######
1350 :     m: # ##########
1351 :     m: # # # ##
1352 :     m: # $ # $ $ #
1353 :     m: # $ # $ ## #
1354 :     m: # $$ ##$ $ #
1355 :     m: ## # ## #######
1356 :     m: ## # ## ...#
1357 :     m: # #$ ...#
1358 :     m: # $$ ...#
1359 :     m: # ##@# ...#
1360 :     m: ################
1361 :     084 new-maze
1362 :     m: ############
1363 :     m: # # ##
1364 :     m: # $ $ # ######
1365 :     m: #### ##### #
1366 :     m: #.. # #### #
1367 :     m: #.#### #### #
1368 :     m: #.... # $ ####
1369 :     m: # ...# # $$$# ##
1370 :     m: ###.#### ## $@$ #
1371 :     m: # ##### $ # #
1372 :     m: # #.# $ $###$ #
1373 :     m: # #.######## # $ #
1374 :     m: # #.. ## $ #
1375 :     m: # # ####### $ # # #
1376 :     m: # # # ##
1377 :     m: ##### ##########
1378 :     085 new-maze
1379 :     m: ####################
1380 :     m: # # # #
1381 :     m: # $ ## ### ##
1382 :     m: ##### ## $ $ #
1383 :     m: ##..## # # $ # # #
1384 :     m: #.... $ ##$# ##
1385 :     m: #.... $##### #$##
1386 :     m: ##..# # # # $ #
1387 :     m: ###.# # $ $ # @#
1388 :     m: ## $ $ # # ####
1389 :     m: ## ###########
1390 :     m: ####################

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help