[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 :     >maze off
32 :    
33 :     \ score information
34 :    
35 :     Variable rocks 0 rocks ! \ number of rocks left
36 :     Variable level# 0 level# ! \ Current level
37 :     Variable moves 0 moves ! \ number of moves
38 :     Variable score 0 score ! \ total number of scores
39 :    
40 :     : new-maze ( n -- addr ) \ add a new level
41 :     here mazes rot 1 ?DO @ LOOP !
42 :     0 , 0 , here >maze ! 0 , ;
43 :     : count-$ ( addr u -- n ) 0 rot rot
44 : pazsan 1.2 over + swap ?DO I c@ [char] $ = - LOOP ;
45 : pazsan 1.1 : m: ( "string" -- ) \ add a level line (top first!)
46 :     -1 parse tuck 2dup count-$ >maze @ 1 cells - +!
47 :     here swap move dup allot
48 :     /maze swap - here over bl fill allot
49 :     >maze @ here over cell+ - swap ! ;
50 :    
51 :     : maze-field ( -- addr n )
52 :     maze dup cell+ swap @ chars ;
53 :    
54 :     : .score ( -- )
55 :     ." Level: " level# @ 2 .r ." Score: " score @ 4 .r
56 :     ." Moves: " moves @ 6 .r ." Rocks: " rocks @ 2 .r ;
57 :    
58 :     : .maze ( -- ) \ display maze
59 :     0 0 at-xy .score
60 : pazsan 1.2 cr maze-field over + swap
61 : pazsan 1.1 DO I /maze type cr /maze chars +LOOP ;
62 :    
63 :     : find-soko ( -- n )
64 :     maze-field 0
65 :     DO dup I chars + c@ [char] @ =
66 :     IF drop I UNLOOP EXIT THEN
67 :     LOOP true abort" No player in field!" ;
68 :    
69 :     : level ( n -- flag ) \ finds level n
70 :     dup level# !
71 :     mazes swap 0
72 :     ?DO @ dup 0= IF drop false UNLOOP EXIT THEN LOOP
73 :     cell+ dup @ rocks !
74 :     cell+ dup @ cell+ maze swap chars move
75 :     find-soko soko ! true ;
76 :    
77 :     \ now the playing rules as replacement strings
78 :    
79 :     : 'soko ( -- addr ) \ gives player's address
80 :     maze cell+ soko @ chars + ;
81 :    
82 :     : apply-rule? ( addr u offset -- flag )
83 :     'soko 2swap
84 :     \ offset soko-addr addr u
85 :     0 DO
86 :     over c@ over c@ <>
87 :     IF drop 2drop false UNLOOP EXIT THEN
88 :     >r over chars + r> char+
89 :     LOOP 2drop drop true ;
90 :    
91 :     : apply-rule! ( addr u offset -- )
92 :     'soko
93 :     2swap
94 :     \ offset soko-addr addr u
95 :     0 DO
96 :     count rot tuck c! rot tuck chars + rot
97 :     LOOP 2drop drop ;
98 :    
99 :     : play-rule ( addr1 u1 addr2 u2 offset -- flag )
100 :     >r 2swap r@ apply-rule?
101 : pazsan 1.2 IF r> apply-rule! true ELSE r> drop 2drop false THEN ;
102 : pazsan 1.1
103 :     \ player may move up, down, left and right
104 :    
105 :     : move: ( offset -- )
106 :     Create ,
107 :     DOES> @ >r 1 moves +!
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 IF r> soko +! EXIT THEN
112 :     S" @* " S" &$" r@ play-rule
113 :     IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
114 :     S" @$." S" @*" r@ play-rule
115 :     IF r> soko +! -1 rocks +! 1 score +! 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 IF r> soko +! EXIT THEN
120 :     S" &* " S" .&$" r@ play-rule
121 :     IF r> soko +! 1 rocks +! -1 score +! EXIT THEN
122 : pazsan 1.2 -1 moves +! r> drop ;
123 : pazsan 1.1
124 :     1 move: soko-right
125 :     -1 move: soko-left
126 :     /maze move: soko-down
127 :     /maze negate move: soko-up
128 :    
129 :     : print-help
130 :     ." Move soko '@' with h, j, k or l key (like vi)" cr
131 :     ." or with vt100 cursor keys." cr ;
132 :    
133 :     : play-loop ( -- )
134 :     BEGIN
135 :     rocks @ 0=
136 :     IF
137 :     level# @ 1+ level 0= IF EXIT THEN
138 :     THEN
139 :     .maze
140 :     key
141 :     CASE
142 :     [char] ? OF print-help false ENDOF
143 :    
144 :     [char] h OF soko-left false ENDOF
145 :     [char] j OF soko-down false ENDOF
146 :     [char] k OF soko-up false ENDOF
147 :     [char] l OF soko-right false ENDOF
148 :    
149 :     \ vt100 cursor keys should work too
150 :     27 OF key [char] [ <> ENDOF
151 :     [char] D OF soko-left false ENDOF
152 :     [char] B OF soko-down false ENDOF
153 :     [char] A OF soko-up false ENDOF
154 :     [char] C OF soko-right false ENDOF
155 :    
156 :     [char] q OF true ENDOF
157 : pazsan 1.2 false swap ENDCASE
158 : pazsan 1.1 UNTIL ;
159 :    
160 :     \ start game with "sokoban"
161 :    
162 :     : sokoban ( -- )
163 : pazsan 1.2 page 1 level IF play-loop ." Game finished!" THEN ;
164 : pazsan 1.1
165 :     001 new-maze
166 :     m: #####
167 :     m: # #
168 :     m: #$ #
169 :     m: ### $##
170 :     m: # $ $ #
171 :     m: ### # ## # ######
172 :     m: # # ## ##### ..#
173 :     m: # $ $ ..#
174 :     m: ##### ### #@## ..#
175 :     m: # #########
176 :     m: #######
177 :     002 new-maze
178 :     m: ############
179 :     m: #.. # ###
180 :     m: #.. # $ $ #
181 :     m: #.. #$#### #
182 :     m: #.. @ ## #
183 :     m: #.. # # $ ##
184 :     m: ###### ##$ $ #
185 :     m: # $ $ $ $ #
186 :     m: # # #
187 :     m: ############
188 :     003 new-maze
189 :     m: ########
190 :     m: # @#
191 :     m: # $#$ ##
192 :     m: # $ $#
193 :     m: ##$ $ #
194 :     m: ######### $ # ###
195 :     m: #.... ## $ $ #
196 :     m: ##... $ $ #
197 :     m: #.... ##########
198 :     m: ########
199 :     004 new-maze
200 :     m: ########
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 :     005 new-maze
215 :     m: #####
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 :     006 new-maze
229 :     m: ###### ###
230 :     m: #.. # ##@##
231 :     m: #.. ### #
232 :     m: #.. $$ #
233 :     m: #.. # # $ #
234 :     m: #..### # $ #
235 :     m: #### $ #$ #
236 :     m: # $# $ #
237 :     m: # $ $ #
238 :     m: # ## #
239 :     m: #########
240 :     007 new-maze
241 :     m: #####
242 :     m: ####### ##
243 :     m: ## # @## $$ #
244 :     m: # $ #
245 :     m: # $ ### #
246 :     m: ### #####$###
247 :     m: # $ ### ..#
248 :     m: # $ $ $ ...#
249 :     m: # ###...#
250 :     m: # $$ # #...#
251 :     m: # ### #####
252 :     m: ####
253 :     008 new-maze
254 :     m: ####
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 :     009 new-maze
271 :     m: #######
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 :     010 new-maze
286 :     m: ### #############
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 :     011 new-maze
303 :     m: ####
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 :     012 new-maze
319 :     m: ################
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 :     013 new-maze
333 :     m: ##### ####
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 :     014 new-maze
348 :     m: #########
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 :     015 new-maze
362 :     m: #######
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 :     016 new-maze
379 :     m: ########
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 :     017 new-maze
396 :     m: #####
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 :     018 new-maze
412 :     m: ##########
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 :     019 new-maze
427 :     m: ###########
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 :     020 new-maze
441 :     m: ######
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 :     021 new-maze
458 :     m: ##########
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 :     022 new-maze
475 :     m: #########
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 :     023 new-maze
491 :     m: ###### ####
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 :     024 new-maze
508 :     m: #######
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 :     025 new-maze
523 :     m: ###############
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 :     026 new-maze
540 :     m: ####
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 :     027 new-maze
557 :     m: #######
558 :     m: # # #####
559 :     m: ## # #...###
560 :     m: # $# #... #
561 :     m: # $ #$$ ... #
562 :     m: # $# #... .#
563 :     m: # # $########
564 :     m: ##$ $ $ #
565 :     m: ## # $$ # #
566 :     m: ###### ##$$@#
567 :     m: # ##
568 :     m: ########
569 :     028 new-maze
570 :     m: #################
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 :     029 new-maze
584 :     m: #####
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 :     030 new-maze
600 :     m: #####
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 :     031 new-maze
614 :     m: ###########
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 :     032 new-maze
629 :     m: ####
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 :     033 new-maze
646 :     m: ####
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 :     034 new-maze
662 :     m: ############
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 :     035 new-maze
678 :     m: #########
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 :     036 new-maze
694 :     m: ############ ######
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 :     037 new-maze
711 :     m: #####
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 :     038 new-maze
728 :     m: ###########
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 :     039 new-maze
744 :     m: ####
745 :     m: ####### @#
746 :     m: # $ #
747 :     m: # $## $#
748 :     m: ##$#...# #
749 :     m: # $... #
750 :     m: # #. .# ##
751 :     m: # # #$ #
752 :     m: #$ $ #
753 :     m: # #######
754 :     m: ####
755 :     040 new-maze
756 :     m: ######
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 :     041 new-maze
773 :     m: ############
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 :     042 new-maze
790 :     m: #####
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 :     043 new-maze
806 :     m: ########
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 :     044 new-maze
820 :     m: #######
821 :     m: ##### # ####
822 :     m: # # $ #
823 :     m: #### #$$ ## ## #
824 :     m: ## # # ## ###
825 :     m: # ### $#$ $ $ #
826 :     m: #... # ## # #
827 :     m: #...# @ # ### ##
828 :     m: #...# ### $ $ #
829 :     m: ######## ## # #
830 :     m: #########
831 :     045 new-maze
832 :     m: #####
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 :     046 new-maze
848 :     m: ##########
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 :     047 new-maze
865 :     m: ####
866 :     m: ######### ##
867 :     m: ## $ $ #####
868 :     m: # ## ## ##...#
869 :     m: # #$$ $ $$#$##...#
870 :     m: # # @ # ...#
871 :     m: # $# ###$$ ...#
872 :     m: # $ $$ $ ##....#
873 :     m: ###$ #######
874 :     m: # #######
875 :     m: ####
876 :     048 new-maze
877 :     m: #########
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 :     049 new-maze
894 :     m: ####
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 :     050 new-maze
910 :     m: ############
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 :     051 new-maze
927 :     m: #########
928 :     m: # #
929 :     m: # $ $#
930 :     m: #### #
931 :     m: # $ ##
932 :     m: #### $ #
933 :     m: #.. $ ## ####
934 :     m: #.. $## #
935 :     m: #.. $ #
936 :     m: #.###$### #@#
937 :     m: #.# # ###
938 :     m: ### #######
939 :     052 new-maze
940 :     m: ####################
941 :     m: # ########## @#
942 :     m: # $# # ######
943 :     m: # #### # ###
944 :     m: ##### # ###
945 :     m: # $ # ###
946 :     m: # $#### # # #
947 :     m: # # # #..#$### # #
948 :     m: # # #$ #..# $ $$ #
949 :     m: # #..# # # #
950 :     m: # # #..# # # #
951 :     m: ####################
952 :     053 new-maze
953 :     m: ####################
954 :     m: # ###
955 :     m: # $# $ ## $ ##
956 :     m: # $### # $$ ##
957 :     m: #.### $ $ ## ##
958 :     m: #...# # # #$ #
959 :     m: #..##$$#### $ # #
960 :     m: #...# $ ## ###
961 :     m: #...$ ### # # #
962 :     m: ##.. $# ## ##@ #
963 :     m: ###.# #
964 :     m: ####################
965 :     054 new-maze
966 :     m: ####################
967 :     m: # # # # #@#
968 :     m: # $ $ $ # #
969 :     m: ## ###..## ### #
970 :     m: # #....#$# $### #
971 :     m: # $ #....# $ $ $ #
972 :     m: # #....# # # $ $ #
973 :     m: # ##..## #$# #
974 :     m: ##$## ## # #$##
975 :     m: # $ $ # # #
976 :     m: # # # # #
977 :     m: ####################
978 :     055 new-maze
979 :     m: ####################
980 :     m: # @## # ##
981 :     m: # ## $ $ ##
982 :     m: # ###....# # # ###
983 :     m: # #....# # # $ #
984 :     m: ### #...# # #
985 :     m: ## ##.# $ $ #
986 :     m: ## $ $ ### # # ###
987 :     m: ## $ # # $ #
988 :     m: #### $ $# # # # $ #
989 :     m: #### # # ##
990 :     m: ####################
991 :     056 new-maze
992 :     m: ####################
993 :     m: # # ## # @###
994 :     m: ## $ # $### #
995 :     m: ##$# $ ##$# $ $ #
996 :     m: # $# $ ###
997 :     m: # ## $ ### #....#
998 :     m: # # $# # # # #....##
999 :     m: # $ $ # #....###
1000 :     m: ##$ ### $ #....####
1001 :     m: # # $ ######
1002 :     m: # # # ######
1003 :     m: ####################
1004 :     057 new-maze
1005 :     m: ####################
1006 :     m: #@ ### # # #
1007 :     m: # # # # $ $ #
1008 :     m: ##### # $ $#$# #
1009 :     m: #.#..# ##$ $ #
1010 :     m: #..... $ # ##
1011 :     m: #..... ###$##$###
1012 :     m: #.#..# $ # #
1013 :     m: ##### # #$ $ #
1014 :     m: ##### # $ $ $ #
1015 :     m: ##### # # # # #
1016 :     m: ####################
1017 :     058 new-maze
1018 :     m: ####################
1019 :     m: ##... ## # # #
1020 :     m: #.... $ ## #
1021 :     m: #....# # #$###$ #
1022 :     m: #...# # # #
1023 :     m: ##.# #$ # $## #
1024 :     m: # # # $ $ ### $ #
1025 :     m: # $ $ # # ## #
1026 :     m: ## # ## #$$# $# # #
1027 :     m: # # $ $ # ##
1028 :     m: # # # # @#
1029 :     m: ####################
1030 :     059 new-maze
1031 :     m: ####################
1032 :     m: # # #@# ## #####
1033 :     m: # # # $ $ #####
1034 :     m: # # ###### $ ###
1035 :     m: # # #....# $$ #
1036 :     m: ##$##$##....# #
1037 :     m: # #....##$##$##
1038 :     m: # $$ #....# #
1039 :     m: # $ $ # # ### #
1040 :     m: ##### $ $ $ #
1041 :     m: ##### # # # ##
1042 :     m: ####################
1043 :     060 new-maze
1044 :     m: ####################
1045 :     m: # ###..### #
1046 :     m: # $$ ###..### $@ #
1047 :     m: # # ##......# $ #
1048 :     m: # #......# $ #
1049 :     m: #### ###..######$ #
1050 :     m: # $$$ #..# # #
1051 :     m: # $# $ $ $$ #$ #
1052 :     m: # # ## $ ## # #
1053 :     m: # $ $ ## $ $ #
1054 :     m: # # ## ## # #
1055 :     m: ####################
1056 :     061 new-maze
1057 :     m: ####################
1058 :     m: # # # # # # #
1059 :     m: # @# # ## $ $ ##
1060 :     m: #### # # # $ #
1061 :     m: # # ## #$ ## ## #
1062 :     m: # $ $ $ #
1063 :     m: #..###$$## $##$ ## #
1064 :     m: #..#.# # $ $ # #
1065 :     m: #....# $$ ##$ ####
1066 :     m: #....# ##### #
1067 :     m: #...### ## #
1068 :     m: ####################
1069 :     062 new-maze
1070 :     m: ####################
1071 :     m: #....# # # #
1072 :     m: #....# # $ $ #
1073 :     m: #.... ## $# # $#$ #
1074 :     m: #...# $ $# $ #
1075 :     m: #..#### # $ $$ #
1076 :     m: # #### #### ###
1077 :     m: # # # #
1078 :     m: # ## # $ # $ $ #
1079 :     m: # ## $ ## $ $ #
1080 :     m: # @# # # #
1081 :     m: ####################
1082 :     063 new-maze
1083 :     m: ####################
1084 :     m: #....### #
1085 :     m: #....##### # #$# ##
1086 :     m: #....### #$ $ #
1087 :     m: #....### $ #$$##
1088 :     m: ## #### $# #$ $ #
1089 :     m: ## #### $ $ # #
1090 :     m: #@ ####$###$## $ #
1091 :     m: ## # # $ #
1092 :     m: ## ### # $ ####
1093 :     m: ######## # # #
1094 :     m: ####################
1095 :     064 new-maze
1096 :     m: ####################
1097 :     m: # # @#...###
1098 :     m: # # ##...##
1099 :     m: # # # ##$## ## ....#
1100 :     m: # $ # $$$ ....#
1101 :     m: ###$### $$ ### ##.#
1102 :     m: # $ # # ####
1103 :     m: # $ # ### # # #
1104 :     m: ## #$## $ $$ #
1105 :     m: # $ ## # # # #
1106 :     m: # # # # #
1107 :     m: ####################
1108 :     065 new-maze
1109 :     m: ####################
1110 :     m: # # #...#@ #
1111 :     m: # # ....# #
1112 :     m: # $ # #....# #
1113 :     m: # ##$#### ##....# #
1114 :     m: # $ $ # #...# #
1115 :     m: # $$ # # # $$ #
1116 :     m: ### $$$# $$ $ #
1117 :     m: # $ # # # $# #
1118 :     m: # $# # $ #
1119 :     m: # # # # # #
1120 :     m: ####################
1121 :     066 new-maze
1122 :     m: ####################
1123 :     m: #####@###.##...## #
1124 :     m: #####$ ..#...# #
1125 :     m: #### ......# $ #
1126 :     m: ### $ #.....## # ##
1127 :     m: ## $$# ##### $ $ #
1128 :     m: ## $# $ ## $$ #
1129 :     m: ## # # # $ $ #
1130 :     m: ## $$ ### #$## #
1131 :     m: ## $# $ $ $ ##
1132 :     m: ### # # ###
1133 :     m: ####################
1134 :     067 new-maze
1135 :     m: ####################
1136 :     m: #@ # # #
1137 :     m: ## ### ## #### # ##
1138 :     m: # # # $$ #
1139 :     m: # # # # $ # $ ## ##
1140 :     m: # $ # #$$ # #
1141 :     m: # ### # ## ##
1142 :     m: #..#.# $ # $ # #
1143 :     m: #..#.# $ # ## $$ #
1144 :     m: #....## $$ $ # #
1145 :     m: #.....## # #
1146 :     m: ####################
1147 :     068 new-maze
1148 :     m: ####################
1149 :     m: # # # # ##
1150 :     m: # $# $ $ ##...$ $ #
1151 :     m: # $ # ##....# $ #
1152 :     m: # ## $ ##....# $ #
1153 :     m: # $ #....## $ #
1154 :     m: # $## #...# #
1155 :     m: # $$$##$## ### ##
1156 :     m: # # # # # # #
1157 :     m: # $ # $ ## #
1158 :     m: # # #@ #
1159 :     m: ####################
1160 :     069 new-maze
1161 :     m: ####################
1162 :     m: # # # # # # #
1163 :     m: # $ $ $ #
1164 :     m: ## # #$###$## ## #
1165 :     m: # $ $ # $ #
1166 :     m: # ###$##$# # $ #
1167 :     m: # # $ $ ###### $#
1168 :     m: # $ $$ $ #@#.#...#
1169 :     m: # # # # #.#...#
1170 :     m: # ########## #.....#
1171 :     m: # #.....#
1172 :     m: ####################
1173 :     070 new-maze
1174 :     m: ####################
1175 :     m: # # # ## ##
1176 :     m: # $# $ # ## #
1177 :     m: # $ $ #..# $ #
1178 :     m: # $ $ #....# # ##
1179 :     m: # $# #......### $ #
1180 :     m: # # #....# #$ #
1181 :     m: # $ ####..# # #
1182 :     m: ## $ ## # # $ $##
1183 :     m: ### $ $#@$ $# #
1184 :     m: #### # # #
1185 :     m: ####################
1186 :     071 new-maze
1187 :     m: ####################
1188 :     m: # ....# ####
1189 :     m: # .... #
1190 :     m: # # ########## #
1191 :     m: # #$ # ###..#
1192 :     m: # $ #$$### #..#
1193 :     m: # $ ### $ $ #..#
1194 :     m: # $ # $ $ # ##..#
1195 :     m: # # $$ # $ ## ##
1196 :     m: #@## $# $ $ ##
1197 :     m: ## ## # ###
1198 :     m: ####################
1199 :     072 new-maze
1200 :     m: ####################
1201 :     m: # # #@ # #
1202 :     m: # $$ #$$# # # ## #
1203 :     m: # # $ $ #$$ # #
1204 :     m: ## # # # # # # #
1205 :     m: # ## # #
1206 :     m: # # $ # # # #
1207 :     m: # $ #$ # # $ #..#
1208 :     m: ##$ # #### #...#
1209 :     m: # $ #....#
1210 :     m: # # # #.....#
1211 :     m: ####################
1212 :     073 new-maze
1213 :     m: ####################
1214 :     m: # # ##### #
1215 :     m: ## $ # #### $ #
1216 :     m: #### $$ #..# # #
1217 :     m: # $ $ ##..#### ##
1218 :     m: # $ ###.... $$ #
1219 :     m: # #$# ....# # $ #
1220 :     m: # # # $ ..###$# #
1221 :     m: # # $ #..# ## #
1222 :     m: # $# #### # $##
1223 :     m: # # # @# ##
1224 :     m: ####################
1225 :     074 new-maze
1226 :     m: ####################
1227 :     m: # # # # #@#
1228 :     m: # $ $ # $ # #
1229 :     m: ##$# $### # $$# #
1230 :     m: # # #.### #$ $ #
1231 :     m: # #$#....# # ### #
1232 :     m: # $ #.....## # #
1233 :     m: ##$ #.#....#$$ $ #
1234 :     m: # ######..## # # #
1235 :     m: # $ $ ### #
1236 :     m: # # # # #
1237 :     m: ####################
1238 :     075 new-maze
1239 :     m: ####################
1240 :     m: # # # # #@## # #
1241 :     m: # $ #
1242 :     m: # ##$# ##### $ # ##
1243 :     m: ## ##.....# # #
1244 :     m: ##$##$#.....###$#$ #
1245 :     m: # # ##.....# # ##
1246 :     m: # $ ##..## # #
1247 :     m: # $ # $ $ $$$ #
1248 :     m: ## $ $# # # $ #
1249 :     m: # ## # # #
1250 :     m: ####################
1251 :     076 new-maze
1252 :     m: ###### #####
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 :     077 new-maze
1266 :     m: ###########
1267 :     m: # #
1268 :     m: # $ $ #
1269 :     m: ###### # $ ##### #
1270 :     m: # ##### $ ##$#
1271 :     m: # $ $ #
1272 :     m: # ## ## #
1273 :     m: # ##@##### ## #
1274 :     m: # #### # ## ##
1275 :     m: #....# # $ #
1276 :     m: #....# # #
1277 :     m: ###### #######
1278 :     078 new-maze
1279 :     m: #############
1280 :     m: # #
1281 :     m: # ### $$ #
1282 :     m: # # $ $ #
1283 :     m: # $####$######
1284 :     m: # $ ## #####
1285 :     m: # $$ $ ...#
1286 :     m: ### ## $$# ...#
1287 :     m: # ## # ...#
1288 :     m: # # ...#
1289 :     m: ###@#############
1290 :     m: ###
1291 :     079 new-maze
1292 :     m: #################
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 :     080 new-maze
1306 :     m: #####
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 :     081 new-maze
1320 :     m: ######
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 :     082 new-maze
1334 :     m: ####### #########
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 :     083 new-maze
1348 :     m: #######
1349 :     m: # ##########
1350 :     m: # # # ##
1351 :     m: # $ # $ $ #
1352 :     m: # $ # $ ## #
1353 :     m: # $$ ##$ $ #
1354 :     m: ## # ## #######
1355 :     m: ## # ## ...#
1356 :     m: # #$ ...#
1357 :     m: # $$ ...#
1358 :     m: # ##@# ...#
1359 :     m: ################
1360 :     084 new-maze
1361 :     m: ############
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 :     085 new-maze
1378 :     m: ####################
1379 :     m: # # # #
1380 :     m: # $ ## ### ##
1381 :     m: ##### ## $ $ #
1382 :     m: ##..## # # $ # # #
1383 :     m: #.... $ ##$# ##
1384 :     m: #.... $##### #$##
1385 :     m: ##..# # # # $ #
1386 :     m: ###.# # $ $ # @#
1387 :     m: ## $ $ # # ####
1388 :     m: ## ###########
1389 :     m: ####################

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help