$ od -c -N 50000 [eris]<LispManual>1983Manual>LUhashfile.im!1 0000000 { B e g i n S u b S e c W H 0000020 E R E I S P a c k a g e } \r { 0000040 T i t l e W H E R E I S P a 0000060 c k a g e } \r { T e x t \r \r { i 0000100 n d e x W H E R E I S p a c 0000120 k a g e } \r \r { T a g W H E R 0000140 E I S p a c k a g e } \r \r T h e 0000160 W H E R E I S p a c k a g e 0000200 e x t e n d s t h e f u n 0000220 c t i o n { f n W H E R E I 0000240 S } ( { P a g e R e f F n 0000260 W H E R E I S } ) s u c h t 0000300 h a t , w h e n a s k e d 0000320 a b o u t a g i v e n n a 0000340 m e a s a f u n c t i o n 0000360 , { f n W H E R E I S } w 0000400 i l l c o n s u l t n o t 0000420 o n l y t h e c o m m a n d 0000440 s o f f i l e s t h a t 0000460 h a v e b e e n n o t i c e 0000500 d b y t h e f i l e p a 0000520 c k a g e ( { P a g e R e f 0000540 T a g F i l e P k g } ) b u 0000560 t a l s o h a s h f i l e 0000600 d a t a b a s e s ( { P a g e 0000620 R e f T a g H a s h f i l e 0000640 } ) t h a t a s s o c i a t 0000660 e f u n c t i o n n a m e s 0000700 w i t h f i l e n a m e s . 0000720 \r \r \r { F n D e f { F n N a m 0000740 e W H E R E I S } { F n A r 0000760 g s N A M E T Y P E F I L 0001000 E S F N } \r { T e x t \r B e h 0001020 a v e s e x a c t l y l i k 0001040 e t h e d e f i n i t i o n 0001060 o n { P a g e R e f F n 0001100 W H E R E I S } u n l e s s 0001120 { a r g T Y P E } = { l i s p 0001140 F N S } ( o r { l i s p 0001160 N I L } ) a n d { a r g F 0001200 I L E S } = { l i s p T } . 0001220 I n t h i s c a s e , { 0001240 f n W H E R E I S } w i l l 0001260 c o n s u l t , i n a d d 0001300 i t i o n t o t h e f i l 0001320 e s o n { v a r F I L E L 0001340 S T } , t h e h a s h f i l 0001360 e s t h a t a r e o n t 0001400 h e v a l u e o f { i n d 0001420 e x W H E R E I S . H A S H 0001440 V a r } { v a r W H E R E I S 0001460 . H A S H } . [ n o t e : 0001500 n o r m a l l y t h e u s e 0001520 r w i l l j u s t e n t e 0001540 r t h e f u l l n a m e o 0001560 f a f i l e o n t o { v 0001600 a r W H E R E I S . H A S H } 0001620 , b u t a s t h e { f n 0001640 W H E R E I S } b e g i n s 0001660 t o u s e i t , i t w 0001700 i l l c o n v e r t t h e 0001720 e n t r y i n t o a c o n 0001740 s o f t h e n a m e a n 0001760 d t h e h a s h f i l e 0002000 h a n d l e . ] \r \r M a n y s 0002020 y s t e m f u n c t i o n s , 0002040 s u c h a s t h e e d i 0002060 t o r s , c a l l { f n W 0002100 H E R E I S } w i t h { a r 0002120 g F I L E S } = { l i s p T 0002140 } , s o l o a d i n g t h 0002160 i s p a c k a g e a u t o m 0002200 a t i c a l l y m a k e s a 0002220 n y i n f o r m a t i o n c 0002240 o n t a i n e d i n t h e 0002260 { f n W H E R E I S } d a t 0002300 a b a s e f i l e s a v a i 0002320 l a b l e t h r o u g h o u t 0002340 t h e s y s t e m . \r \r I n 0002360 f o r m a t i o n m a y b e 0002400 a d d e d t o a n e x i 0002420 s t i n g W H E R E I S h a 0002440 s h f i l e , o r b y c r 0002460 e a t i n g n e w d a t a b 0002500 a s e s . I t i s o f t 0002520 e n u s e f u l t o h a v 0002540 e a s e p a r a t e d a t 0002560 a b a s e f o r l a r g e 0002600 u s e r s y s t e m s . e 0002620 x p l i c i t l y c a l l i n 0002640 g t h e f o l l o w i n g 0002660 f u n c t i o n : \r \r { F n D e 0002700 f { F n N a m e W H E R E I 0002720 S N O T I C E } { F n A r g s 0002740 F I L E G R O U P N E W F L 0002760 G D A T A B A S E F I L E } \r 0003000 { T e x t \r I n s e r t s t h 0003020 e i n f o r m a t i o n a b 0003040 o u t a l l o f t h e f 0003060 u n c t i o n s o n t h e 0003100 f i l e s i n { a r g F I 0003120 L E G R O U P } i n t o t h 0003140 e { f n W H E R E I S } d 0003160 a t a b a s e c o n t a i n 0003200 e d o n { a r g D A T A B 0003220 A S E F I L E } . I f { a 0003240 r g D A T A B A S E F I L E } 0003260 i s { l i s p N I L } , 0003300 t h e f i r s t e n t r y 0003320 o n { v a r W H E R E I S . 0003340 H A S H } i s u s e d . \r \r 0003360 { a r g F I L E G R O U P } 0003400 m a y b e s i m p l y a 0003420 l i s t o f f i l e s , i 0003440 n w h i c h c a s e e a c 0003460 h f i l e t h e r e o n i 0003500 s h a n d l e d d i r e c t 0003520 l y ; b u t i t m a y a 0003540 l s o b e a p a t t e r n 0003560 t o b e g i v e n a s 0003600 a f i l e g r o u p a r g u 0003620 m e n t t o { f n D I R E 0003640 C T O R Y } ( { P a g e R e f 0003660 F n D I R E C T O R Y } ) , 0003700 s o { l i s p & } , { l 0003720 i s p $ } , e t c . m a y 0003740 b e u s e d . \r \r I 0003760 f { a r g N E W F L G } i 0004000 s n o n - { l i s p N I L } 0004020 , a n e w v e r s i o n 0004040 o f { a r g D A T A B A S E 0004060 F I L E } w i l l b e c r 0004100 e a t e d c o n t a i n i n g 0004120 t h e d a t a b a s e f o 0004140 r t h e f u n c t i o n s 0004160 s p e c i f i e d i n { a r 0004200 g F I L E G R O U P } . I 0004220 f { a r g N E W F L G } i 0004240 s a n u m b e r , t h e 0004260 h a s h f i l e w i l l b 0004300 e c r e a t e d w i t h { 0004320 a r g N E W F L G } e n t r 0004340 i e s . O t h e r w i s e , 0004360 i t w i l l b e c r e a 0004400 t e d t o a l l o w 2 0 0 0004420 0 0 e n t r i e s . \r \r E x a 0004440 m p l e : \r T h e f o l l o w 0004460 i n g s e q u e n c e o f 0004500 a c t i o n s w i l l c a u 0004520 s e a l l o f t h e f i 0004540 l e s o n t h e P R O J E 0004560 C T d i r e c t o r y t o 0004600 b e n o t i c e d b y t h 0004620 e W H E R E I S p a c k a g 0004640 e . \r \r ( W H E R E I S N O T I 0004660 C E ' < P R O J E C T > * . 0004700 T ' < P R O J E C T > P R O J 0004720 E C T W H E R E I S . H A S H ) 0004740 \r ( p u s h W H E R E I S . H 0004760 A S H ( F I N D F I L E ' < 0005000 P R O J E C T > P R O J E C T W 0005020 H E R E I S . H A S H ) ) \r } } 0005040 \r \r } { E n d S u b S e c W 0005060 H E R E I S P a c k a g e } \r 0005100 \r \r { B e g i n S u b S e c 0005120 H a s h F i l e s } \r { T i t 0005140 l e H a s h F i l e s } \r { 0005160 T e x t \r \r { i n d e x * B E 0005200 G I N * h a s h f i l e f 0005220 a c i l i t y } \r \r { T a g H 0005240 a s h f i l e } \r \r \r T h e h 0005260 a s h f i l e f a c i l i t 0005300 y p e r m i t s i n f o r m 0005320 a t i o n a s s o c i a t e d 0005340 w i t h s t r i n g o r 0005360 a t o m " k e y s " t o b 0005400 e s t o r e d o n a n d 0005420 r e t r i e v e d f r o m f 0005440 i l e s . T h e i n f o r 0005460 m a t i o n ( o r " v a l u 0005500 e s " ) a s s o c i a t e d 0005520 w i t h t h e k e y s i n 0005540 a f i l e m a y b e n 0005560 u m b e r s , s t r i n g s , 0005600 o r a r b i t a r y I n 0005620 t e r l i s p e x p r e s s i 0005640 o n s . T h e a s s o c i 0005660 a t i o n s a r e m a i n t 0005700 a i n e d b y a h a s h i 0005720 n g s c h e m e t h a t m 0005740 i n i m i z e s t h e n u m 0005760 b e r o f f i l e o p e r 0006000 a t i o n s i t t a k e s 0006020 t o a c c e s s a v a l u 0006040 e f r o m i t s k e y . \r 0006060 \r A h a s h f i l e i s c 0006100 r e a t e d b y t h e f u 0006120 n c t i o n { f n C R E A T 0006140 E H A S H F I L E } : \r \r { 0006160 F n D e f { F n N a m e C R 0006200 E A T E H A S H F I L E } { F 0006220 n A r g s F I L E } \r { T e x 0006240 t \r A n e w v e r s i o n 0006260 o f { a r g F I L E } i s 0006300 o p e n e d a n d i n i t 0006320 i a l i z e d a s a h a s 0006340 h f i l e . A f t e r b e i 0006360 n g i n i t i a l i z e d , 0006400 { a r g F I L E } i s l e 0006420 f t o p e n a n d { f n 0006440 C R E A T E H A S H F I L E } 0006460 r e t u r n s a s i t s v 0006500 a l u e a " h a s h f i l e 0006520 d a t u m , " a h a n d l 0006540 e o n t h e h a s h f i l 0006560 e t h a t m a y b e u s 0006600 e d a s a n a r g u m e n 0006620 t f o r m o s t o f t h 0006640 e f u n c t i o n s d e s c 0006660 r i b e d b e l o w . \r } } \r 0006700 \r { F n D e f { F n N a m e 0006720 O P E N H A S H F I L E } { F 0006740 n A r g s F I L E A C C E S 0006760 S } \r { T e x t \r R e - o p e n 0007000 s t h e p r e v i o u s l y 0007020 e x i s t i n g h a s h f i 0007040 l e { a r g F I L E } . 0007060 { a r g A C C E S S } m a y 0007100 b e { l i s p I N P U T } 0007120 ( o r { l i s p N I L } ) 0007140 , i n w h i c h c a s e 0007160 { a r g F I L E } i s o p 0007200 e n e d f o r r e a d i n g 0007220 o n l y , o r { l i s p 0007240 B O T H } , i n w h i c h 0007260 c a s e { a r g F I L E } 0007300 i s o p e n f o r b o t h 0007320 i n p u t a n d o u t p u 0007340 t . C a u s e s a n e r 0007360 r o r { l i s p N O T A 0007400 H A S H F I L E } , { i n d e x 0007420 N O T A H A S H F I L E 0007440 E r r o r } i f { a r g F 0007460 I L E } i s n o t r e c o 0007500 g n i z e d a s a h a s h 0007520 f i l e . \r \r I f { a r g A 0007540 C C E S S } i s { l i s p 0007560 B O T H } a n d { a r g F 0007600 I L E } i s a h a s h f i 0007620 l e o p e n f o r r e a d 0007640 i n g o n l y , { f n O P 0007660 E N H A S H F I L E } a t t e 0007700 m p t s t o c l o s e i t 0007720 a n d r e - o p e n i t 0007740 f o r w r i t i n g . O t h 0007760 e r w i s e , i f { a r g 0010000 F I L E } d e s i g n a t e s 0010020 a n a l r e a d y o p e n 0010040 h a s h f i l e , { f n O 0010060 P E N H A S H F I L E } i s 0010100 a n o - o p . \r \r { f n O P 0010120 E N H A S H F I L E } r e t u 0010140 r n s a h a s h f i l e d 0010160 a t u m . \r } } \r \r { F n D e f 0010200 { F n N a m e H A S H F I L 0010220 E P } { F n A r g s X } \r { 0010240 T e x t \r R e t u r n s { a r 0010260 g X } i f { a r g X } 0010300 i s a h a s h f i l e d a 0010320 t u m ( i . e . , a v a l 0010340 u e r e t u r n e d b y { 0010360 f n C R E A T E H A S H F I L 0010400 E } o r { f n O P E N H A 0010420 S H F I L E } ) . I f { a 0010440 r g X } i s { l i s p N 0010460 I L } , r e t u r n s { v a 0010500 r S Y S H A S H F I L E } { i 0010520 n d e x S Y S H A S H F I L E 0010540 V a r } i f i t i s a 0010560 h a s h f i l e d a t u m . 0010600 I f { a r g X } i s 0010620 t h e n a m e o f a n o 0010640 p e n h a s h f i l e , r e 0010660 t u r n s t h e c o r r e s 0010700 p o n d i n g h a s h f i l e 0010720 d a t u m . O t h e r w i 0010740 s e , r e t u r n s { l i s 0010760 p N I L } . \r } } \r \r T h e 0011000 f o l l o w i n g f u n c t i 0011020 o n s r e q u i r e a n o 0011040 p e n h a s h f i l e a s 0011060 a n a r g u m e n t , i . e 0011100 . a n o b j e c t f o r 0011120 w h i c h { f n H A S H F I 0011140 L E P } i s n o n - { l i s 0011160 p N I L } . \r \r { F n D e f 0011200 { F n N a m e P U T H A S H 0011220 F I L E } { F n A r g s K E 0011240 Y V A L U E H A S H F I L E 0011260 } \r { T e x t \r P u t s { a r 0011300 g V A L U E } i n { a r g 0011320 H A S H F I L E } , i n d e 0011340 x e d u n d e r { a r g K 0011360 E Y } . I f { a r g V A 0011400 L U E } i s { l i s p N I 0011420 L } , a n y p r e v i o u s 0011440 e n t r y f o r { a r g 0011460 K E Y } i s d e l e t e d . 0011500 \r } } \r \r { F n D e f { F n 0011520 N a m e G E T H A S H F I L E 0011540 } { F n A r g s K E Y H A 0011560 S H F I L E } \r { T e x t \r R e 0011600 t u r n s t h e v a l u e 0011620 c o r r e s p o n d i n g t o 0011640 { a r g K E Y } i n { a 0011660 r g H A S H F I L E } . } } 0011700 \r \r { F n D e f { F n N a m e 0011720 H A S H F I L E P R O P } { 0011740 F n A r g s H A S H F I L E 0011760 P R O P } \r { T e x t \r R e t u 0012000 r n s t h e v a l u e o f 0012020 t h e { a r g P R O P } 0012040 p r o p e r t y o f { a r g 0012060 H A S H F I L E } . T h e 0012100 r e c o g n i z e d { a r g 0012120 P R O P } s a n d t h e 0012140 v a l u e s r e t u r n e d 0012160 a r e : \r \r { B e g i n L a b 0012200 e l e d L i s t T h e r e c 0012220 o g n i z e d P R O P s } \r \r 0012240 { L a b e l { l i s p N A M 0012260 E } } \r { I t e m \r T h e f u 0012300 l l n a m e o f t h e f 0012320 i l e . \r } \r \r { L a b e l { 0012340 l i s p A C C E S S } } \r { I 0012360 t e m \r { l i s p B O T H } 0012400 i f f i l e i s o p e n 0012420 f o r w r i t i n g , { l i 0012440 s p I N P U T } i f i t 0012460 i s r e a d - o n l y . \r } \r 0012500 \r { E n d L a b e l e d L i s 0012520 t T h e r e c o g n i z e d 0012540 P R O P s } \r \r } } \r \r \r { F 0012560 n D e f { F n N a m e C L O 0012600 S E H A S H F I L E } { F n A 0012620 r g s H A S H F I L E } \r { T 0012640 e x t \r C l o s e s t h e h 0012660 a s h f i l e a n d c l e 0012700 a r s a n y i n t e r n a l 0012720 b u f f e r s a s s o c i a 0012740 t e d w i t h i t . \r } } \r 0012760 \r { F n D e f { F n N a m e 0013000 M A P H A S H F I L E } { F n 0013020 A r g s H A S H F I L E M A 0013040 P F N } \r { T e x t \r F o r e 0013060 a c h e n t r y i n { a r 0013100 g H A S H F I L E } , p e r 0013120 f o r m s { l i s p ( { a r 0013140 g M A P F N } { a r g K E 0013160 Y } ( G E T H A S H F I L E 0013200 { a r g K E Y } { a r g H 0013220 A S H F I L E } ) ) } . I f 0013240 { a r g M A P F N } i s 0013260 a f u n c t i o n o f o n 0013300 l y o n e a r g u m e n t , 0013320 p e r f o r m s { l i s p 0013340 ( { a r g M A P F N } { a r 0013360 g K E Y } ) } t h e r e b y 0013400 a v o i d i n g t h e c a 0013420 l l t o { f n G E T H A S 0013440 H F I L E } n e e d e d t o 0013460 o b t a i n t h e v a l u 0013500 e . { a r g K E Y } i s 0013520 t e m p o r a r y , a s f 0013540 o r { f n G E T H A S H F I 0013560 L E } . { a r g V A L U E 0013600 } i s a l s o t e m p o r 0013620 a r y , f o r { l i s p S 0013640 T R I N G } , { l i s p N U 0013660 M B E R } , a n d { l i s p 0013700 S Y M B O L T A B L E } f i 0013720 l e s . \r } } \r \r \r { F n D e 0013740 f { F n N a m e R E H A S H 0013760 F I L E } { F n A r g s H A 0014000 S H F I L E } \r { T e x t \r A f 0014020 t e r m a n y i n s e r t i 0014040 o n s a n d d e l e t i o n 0014060 s m u c h o f t h e s p 0014100 a c e i n a h a s h f i l 0014120 e m a y b e u n u s a b l 0014140 e . { f n R E H A S H F I 0014160 L E } r e c l a i m s t h a 0014200 t s p a c e b y r e h a s 0014220 h i n g a l l t h e k e y 0014240 s . } } \r \r \r { F n D e f { F 0014260 n N a m e C O P Y H A S H F I 0014300 L E } { F n A r g s H A S H 0014320 F I L E N E W N A M E F N 0014340 } \r { T e x t \r C a l l s { f 0014360 n C R E A T E H A S H F I L E 0014400 } t o o p e n { a r g N 0014420 E W N A M E } a s a h a s 0014440 h f i l e , t h e n m a p s 0014460 t h r o u g h a l l t h e 0014500 k e y s i n { a r g H A 0014520 S H F I L E } , d o i n g t 0014540 h e e q u i v a l e n t o f 0014560 : \r \r { l i s p c o d e \r ( P U 0014600 T H A S H F I L E \r { a r 0014620 g K E Y } \r ( G E T H A 0014640 S H F I L E { a r g K E Y } 0014660 { a r g H A S H F I L E } ) 0014700 \r { a r g N E W H A S H 0014720 F I L E } ) } \r \r f o r e a c 0014740 h k e y { a r g K E Y } . 0014760 I n e s s e n c e , { f 0015000 n C O P Y H A S H F I L E } 0015020 c o p i e s { a r g H A S H 0015040 F I L E } t o { a r g N E 0015060 W N A M E } . \r \r I f { a r g 0015100 F N } i s g i v e n , t 0015120 h e n i t i s a p p l i e 0015140 d t o t h e s u c c e s s 0015160 i v e v a l u e s o f { a 0015200 r g H A S H F I L E } , t h 0015220 e o l d { a r g H A S H F 0015240 I L E } , a n d t h e n e 0015260 w h a s h f i l e , a n d 0015300 t h e v a l u e r e t u r n 0015320 e d i s u s e d a s t h 0015340 e v a l u e i n t h e n 0015360 e w f i l e . I n e f f 0015400 e c t , \r \r { l i s p c o d e \r 0015420 ( P U T H A S H F I L E \r 0015440 { a r g K E Y } \r ( { a 0015460 r g F N } ( G E T H A S H F 0015500 I L E { a r g K E Y } { a 0015520 r g H A S H F I L E } ) \r 0015540 { a r g H A S H F I 0015560 L E } \r { a r g 0015600 N E W H A S H F I L E } ) \r 0015620 { a r g N E W H A S H F I L 0015640 E } ) } \r \r i s e v a l u a t 0015660 e d f o r e a c h k e y . 0015700 T h u s , t h e u s e r 0015720 c a n i n t e r v e n e a 0015740 s e a c h k e y i s p r 0015760 o c e s s e d i n o r d e r 0016000 t o c o p y i n f o r m a 0016020 t i o n a s s o c i a t e d 0016040 w i t h t h e k e y . \r } } 0016060 \r \r \r { F n D e f { F n N a m 0016100 e H A S H F I L E S P L S T } 0016120 { F n A r g s H A S H F I L 0016140 E } \r { T e x t \r R e t u r n s 0016160 a " g e n e r a t o r " f 0016200 o r t h e k e y s i n { 0016220 a r g H A S H F I L E } t h 0016240 a t i s a c c e p t a b l e 0016260 a s a n a r g u m e n t 0016300 t o { f n F I X S P E L L } 0016320 ( { P a g e R e f F n F I 0016340 X S P E L L } ) . { i n d e x 0016360 g e n e r a t o r s f o r s 0016400 p e l l i n g c o r r e c t i 0016420 o n } { i n d e x s p e l l i 0016440 n g c o r r e c t i o n o n 0016460 h a s h f i l e s } T h 0016500 u s , { l i s p ( F I X S P 0016520 E L L B A D W O R D 7 0 ( 0016540 H A S H F I L E S P L S T { a 0016560 r g H A S H F I L E } ) ) } 0016600 w i l l s p e l l i n g c o 0016620 r r e c t a w o r d u s i 0016640 n g t h e k e y s i n { 0016660 a r g H A S H F I L E } . \r } 0016700 } \r \r \r { F n D e f { F n N a 0016720 m e L O O K U P H A S H F I L 0016740 E } { F n A r g s K E Y V 0016760 A L U E H A S H F I L E C A 0017000 L L T Y P E } \r { T e x t \r A 0017020 g e n e r a l i z e d e n t r 0017040 y f o r i n s e r t i n g 0017060 a n d r e t r i e v i n g v 0017100 a l u e s ; p r o v i d e s 0017120 c e r t a i n o p t i o n s 0017140 n o t a v a i l a b l e w i 0017160 t h { f n G E T H A S H F I 0017200 L E } o r { f n P U T H A 0017220 S H F I L E } . { f n L O 0017240 O K U P H A S H F I L E } l o 0017260 o k s u p { a r g K E Y } 0017300 i n { a r g H A S H F I L 0017320 E } . { a r g C A L L T Y 0017340 P E } i s a n a t o m o 0017360 r a l i s t o f a t o m 0017400 s . T h e s e k e y w o r 0017420 d s a r e i n t e r p r e t 0017440 e d a s f o l l o w s : \r \r 0017460 { B e g i n L a b e l e d L i 0017500 s t C A L L T Y P E s } \r \r { 0017520 I n d e n t 1 5 p e r c e n t 0017540 } \r \r { L a b e l { l i s p 0017560 R E T R I E V E } } \r { T e x t 0017600 \r I f { a r g K E Y } i s 0017620 f o u n d , t h e n i f 0017640 { a r g C A L L T Y P E } i 0017660 s o r c o n t a i n s { l 0017700 i s p R E T R I E V E } , t 0017720 h e o l d v a l u e i s 0017740 r e t u r n e d f r o m { f 0017760 n L O O K U P H A S H F I L E 0020000 } ; o t h e r w i s e r e t 0020020 u r n s { l i s p T } . \r } 0020040 \r \r { N a m e { l i s p D E 0020060 L E T E } } \r { T e x t \r I f 0020100 { a r g C A L L T Y P E } i 0020120 s o r c o n t a i n s { l 0020140 i s p D E L E T E } , t h e 0020160 v a l u e a s s o c i a t e 0020200 d w i t h { a r g K E Y } 0020220 i s d e l e t e d f r o m 0020240 t h e f i l e . \r } \r \r { 0020260 N a m e { l i s p R E P L A 0020300 C E } } \r { T e x t \r I f { a 0020320 r g C A L L T Y P E } i s 0020340 o r c o n t a i n s { l i s 0020360 p R E P L A C E } , t h e 0020400 o l d v a l u e i s r e p 0020420 l a c e d w i t h { a r g 0020440 V A L U E } . \r } \r \r { N a m e 0020460 { l i s p I N S E R T } } \r 0020500 { T e x t \r I f { a r g C A 0020520 L L T Y P E } i s o r c o 0020540 n t a i n s { l i s p I N S 0020560 E R T } , { f n L O O K U P 0020600 H A S H F I L E } i n s e r t 0020620 s v a l u e a s t h e v 0020640 a l u e a s s o c i a t e d 0020660 w i t h { a r g K E Y } . \r 0020700 } \r \r \r { E n d L a b e l e d 0020720 L i s t C A L L T Y P E s } \r 0020740 \r \r I f { a r g K E Y } i 0020760 s n o t f o u n d , { f n 0021000 L O O K U P H A S H F I L E } 0021020 r e t u r n s { l i s p N 0021040 I L } . \r } } \r \r \r \r E x a m p 0021060 l e s : \r \r \r T o e i t h e r 0021100 r e t u r n a n o l d v 0021120 a l u e o r i n s e r t a 0021140 n e w v a l u e i n t h 0021160 e f i l e i f o n e d o 0021200 e s n o t a l r e a d y e 0021220 x i s t , p e r f o r m \r { l 0021240 i s p ( L O O K U P H A S H F 0021260 I L E { a r g K E Y } { a 0021300 r g N E W V A L U E } { a r 0021320 g H A S H F I L E } ' ( I N 0021340 S E R T R E T R I E V E ) ) } 0021360 . \r T h e v a l u e r e t u 0021400 r n e d w i l l b e { l i 0021420 s p N I L } i f { a r g 0021440 N E W V A L U E } w a s i n 0021460 s e r t e d , o r t h e o 0021500 l d v a l u e i f { a r g 0021520 K E Y } w a s f o u n d . 0021540 \r \r T o m e r e l y c h e 0021560 c k w h e t h e r { a r g 0021600 K E Y } e x i s t s i n t 0021620 h e f i l e w i t h o u t 0021640 a c t u a l l y r e t r i e v 0021660 i n g i t s v a l u e ( w 0021700 h i c h m a y b e e x p e 0021720 n s i v e f o r t h e m o 0021740 r e g e n e r a l v a l u e 0021760 t y p e s ) , p e r f o r m 0022000 { l i s p ( L O O K U P H A S 0022020 H F I L E { a r g K E Y } 0022040 N I L { a r g H A S H F I L 0022060 E } N I L ) } . \r \r T h e f 0022100 u n c t i o n { f n P U T H 0022120 A S H F I L E } c o u l d b 0022140 e d e f i n e d a s : \r \r { 0022160 l i s p c o d e \r ( L A M B D A 0022200 ( K E Y V A L U E H A S H 0022220 F I L E ) \r ( i f V A 0022240 L U E = N I L \r t h 0022260 e n ( L O O K U P H A S H F I 0022300 L E K E Y N I L H A S H F 0022320 I L E ' D E L E T E ) \r 0022340 e l s e ( L O O K U P H 0022360 A S H F I L E K E Y V A L U 0022400 E H A S H F I L E ' ( I N S 0022420 E R T R E P L A C E ) ) \r 0022440 V A L U E ) ) 0022460 } \r \r \r A n d { f n G E T H 0022500 A S H F I L E } c o u l d b 0022520 e d e f i n e d a s : \r \r { 0022540 l i s p c o d e \r ( L A M B D A 0022560 ( K E Y H A S H F I L E ) \r 0022600 ( L O O K U P H A S H F 0022620 I L E K E Y N I L H A S H 0022640 F I L E ' R E T R I E V E ) ) 0022660 } \r \r { n o t e H A S H i s 0022700 a n e w i m p l e m e n t 0022720 a t i o n o f t h e h a s 0022740 h f i l e p a c k a g e w h 0022760 i c h w o r k s i n b o t 0023000 h I n t e r l i s p - 1 0 a 0023020 n d I n t e r l i s p - D . 0023040 I t i s w r i t t e n i n 0023060 I n t e r l i s p a n d o 0023100 p e r a t i n g o n s t r e 0023120 a m s o f b y t e s . T h 0023140 i s p a c k a g e i m p l e 0023160 m e n t s t h e i n t e r f 0023200 a c e s d o c u m e n t e d 0023220 i n t h e I n t e r l i s p 0023240 R e f e r e n c e M a n u a 0023260 l ( a n d m a r k e d a s 0023300 I n t e r l i s p - 1 0 s p 0023320 e c i f i c ) a s w e l l 0023340 a s t h o s e o f t h e 0023360 o r i g i n a l i m p l e m e 0023400 n t a t i o n u s e d i n 0023420 E M Y C I N b a s e d s y s 0023440 t e m s , a n d w i l l b 0023460 e r e f e r r e d t o a s 0023500 t h e E M Y C I N p a c k 0023520 a g e . T h i s d o c u m e 0023540 n t o n l y d e a l s w i 0023560 t h d i f f e r e n c e s b 0023600 e t w e e n t h e v a r i o 0023620 u s p a c k a g e s . U s e 0023640 r s s h o u l d c o n s u l 0023660 t t h e I n t e r l i s p 0023700 R e f e r e n c e M a n u a l 0023720 a n d t h e E M Y C I N 0023740 d o c u m e n t a t i o n f o 0023760 r d e t a i l s . \r H a s h f 0024000 i l e s a r e c r e a t e d 0024020 b y c a l l i n g C R E A 0024040 T E H A S H F I L E . A " H 0024060 a s h F i l e " , a s r e f 0024100 e r e n c e d i n t h i s 0024120 d o c u m e n t , i s t h e 0024140 d a t u m r e t u r n e d 0024160 b y C R E A T E H A S H F I L 0024200 E o r O P E N H A S H F I L 0024220 E , c u r r e n t l y a n 0024240 a r r a y r e c o r d c o n 0024260 t a i n i n g t h e h a s h 0024300 f i l e n a m e , a n d t 0024320 h e n u m b e r o f s l o 0024340 t s i n t h e f i l e , 0024360 t h e u s e d s l o t s a 0024400 n d o t h e r d e t a i l s 0024420 . A l l o t h e r f u n c 0024440 t i o n s w i t h h a s h f 0024460 i l e a r g u m e n t s u s 0024500 e t h i s d a t u m . A 0024520 N I L h a s h f i l e a r g 0024540 u m e n t r e f e r s t o 0024560 S Y S H A S H F I L E . K e y 0024600 s a r e s t r i n g s o r 0024620 a t o m s , a s i n t h 0024640 e o t h e r s y s t e m s . 0024660 \r I n t e r l i s p - 1 0 h a 0024700 s h f i l e s c a m e i n 0024720 s e v e r a l f l a v o r s , 0024740 a c c o r d i n g t o t h 0024760 e v a l u e s s t o r e d 0025000 i n t h e m . T h i s s y 0025020 s t e m o n l y s u p p o r 0025040 t s t h e m o s t g e n e 0025060 r a l E X P R t y p e o f 0025100 h a s h f i l e s ; t h e 0025120 V A L U E T Y P E a n d I T 0025140 E M L E N G T H a r g u m e n 0025160 t s a r e i g n o r e d . 0025200 T h i s d i s t i n c t i o n 0025220 i s g e n e r a l l y i n 0025240 v i s i b l e t o t h e u 0025260 s e r . \r T w o k e y h a s 0025300 h i n g i s s u p p o r t e 0025320 d i n t h i s s y s t e m 0025340 . T h e f u n c t i o n s 0025360 t h a t m a n i p u l a t e 0025400 ' s e c r e t p a g e s ' d 0025420 o n o t e x i s t i n t 0025440 h i s i m p l e m e n t a t i 0025460 o n . \r W h e n r u n n i n g 0025500 i n I n t e r l i s p - 1 0 0025520 , H A S H w i l l l o a d 0025540 t h e D F O R 1 0 . C O M 0025560 p a c k a g e f r o m t h e 0025600 L i s p U s e r s d i r e c 0025620 t o r y . \r F u n c t i o n s \r 0025640 T h e f u n c t i o n s i m 0025660 p l e m e n t e d a r e : \r h 0025700 a s h f i l e d a t a [ h a s h 0025720 f i l e ] ( E M Y C I N ) \r c 0025740 l e a r h a s h f i l e s [ c l 0025760 o s e , r e l e a s e ] ( E M 0026000 Y C I N ) \r c o l l e c t k e y 0026020 s [ h a s h f i l e , d o u b l 0026040 e , m k s t r i n g ] ( E M Y 0026060 C I N ) \r \r \r G l o b a l V 0026100 a r i a b l e s \r \r \r T h e v 0026120 a r i a b l e s u s e d b y 0026140 t h e s y s t e m o f i 0026160 n t e r e s t t o t h e u 0026200 s e r . \r H A S H T E X T C H A 0026220 R ^ A T h e c h a r a 0026240 c t e r s e p a r a t i n g 0026260 t w o k e y h a s h k e y s 0026300 . \r H A S H F I L E R D T B L 0026320 O R I G T h e h a s h f 0026340 i l e r e a d t a b l e . \r 0026360 H F G R O W T H F A C T O R 0026400 3 T h e r a t i o n o f 0026420 t o t a l s l o t s t o 0026440 u s e d s l o t s w h e n 0026460 a h a s h f i l e i s c r 0026500 e a t e d . \r R E H A S H G A G 0026520 N I L F l a g s w h e 0026540 t h e r t o p r i n t m e 0026560 s s a g e w h e n r e h a s 0026600 h i n g ; i n i t i a l l y 0026620 o f f . \r H A S H F I L E D E F 0026640 A U L T S I Z E 5 1 2 S 0026660 i z e u s e d w h e n # E 0026700 n t r i e s i s o m i t e d 0026720 . \r H A S H L O A D F A C T O R 0026740 . 8 7 5 T h e r a t i 0026760 o , u s e d s l o t s / t o 0027000 t a l s l o t s , a t w h 0027020 i c h t h e s y s t e m r 0027040 e h a s h e s t h e f i l e 0027060 , i n i t i a l l y 7 / 8 . 0027100 \r S Y S H A S H F I L E N I 0027120 L T h e c u r r e n t h 0027140 a s h f i l e . \r \r I m p l e m 0027160 e n t a t i o n \r \r T h e h a 0027200 s h f i l e p a c k a g e v 0027220 i e w s f i l e s a s a 0027240 s e q u e n c e o f b y t e 0027260 s , r a n d o m l y a c c e 0027300 s s i b l e . N o n o t i c 0027320 e i s m a d e o f p a g 0027340 e s a n d i t i s a s s 0027360 u m e d t h a t t h e h o 0027400 s t c o m p u t e r b u f f 0027420 e r s I / O s u f f i e c i 0027440 e n t l y . \r H a s h f i l e 0027460 s c o n s i s t o f a l 0027500 a y e r o f p o i n t e r s 0027520 f o l l o w e d b y a s c 0027540 i i d a t a . P o i n t e r 0027560 s a r e 3 b y t e s w i 0027600 d e , p r e c e e d e d b y 0027620 a s t a t u s b y t e . 0027640 T h e p o i n t e r s p o i 0027660 n t t o k e y P N A M E S 0027700 i n t h e d a t a s e c 0027720 t i o n , w h e r e e a c h 0027740 k e y i s f o l l o w e d 0027760 b y i t s v a l u e . D 0030000 e l e t e d k e y p o i n t 0030020 e r s a r e r e u s e d , 0030040 d e l e t e d d a t a s p a 0030060 c e i s n o t , s o r e 0030100 h a s h i n g i s r e q u i 0030120 r e d i f m a n y i t e m 0030140 s h a v e b e e n " r e p 0030160 l a c e d " . \r T h e d a t a 0030200 s e c t i o n s t a r t s 0030220 a t 4 * H A S H F I L E : S I 0030240 Z E + 9 , a n d c o n s 0030260 i s t s o f a l t e r n a t 0030300 i n g k e y s a n d v a l 0030320 u e s . A s d e l e t e d 0030340 d a t a i s n o t r e - w 0030360 r i t t e n , f i l e s s h 0030400 o u l d n o t b e a c c e 0030420 s s e d d i r e c t l y . \r \r 0030440 W h e n a k e y h a s h e 0030460 s i n t o a u s e d s l 0030500 o t , a p r o b e v a l u 0030520 e i s a d d e d t o i t 0030540 t o f i n d t h e n e x 0030560 t s l o t t o s e a r c h 0030600 . T h e p r o b e v a l u 0030620 e i s a s m a l l p r i 0030640 m e d e r i v e d f r o m 0030660 t h e o r i g i n a l h a s 0030700 h k e y . \r \r L i m i t a t i 0030720 o n s \r \r D u e t o t h e 0030740 p o i n t e r s i z e , o n 0030760 l y h a s h f i l e s o f 0031000 < 6 m i l l i o n i n t i 0031020 a l e n t r i e s c a n b 0031040 e c r e a t e d , t h o u g 0031060 h t h e s e c a n g r o w 0031100 t o 1 4 m i l l i o n e 0031120 n t r i e s b e f o r e a u 0031140 t o m a t i c r e h a s h i n 0031160 g e x c e e d s t h e p o 0031200 i n t e r l i m i t . T h e 0031220 t o t a l f i l e l e n g 0031240 t h i s l i m i t e d t o 0031260 1 6 m i l l i o n b y t e 0031300 s . N o r a n g e c h e c 0031320 k i n g i s d o n e f o r 0031340 t h e s e l i m i t s . \r 0031360 \r { i n d e x * E N D * h a 0031400 s h f i l e f a c i l i t y 0031420 } \r \r \r } { E n d S u b S e 0031440 c H a s h F i l e s } \r \r \r 0031460 \0 \0 % 263 \0 \0 \0 005 G A C H A \0 \n \0 0031500 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 0031520 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 0031540 \0 \0 003 N I L \0 003 N I L \0 \0 \0 \0 \0 0031560 \0 \0 \0 \0 \0 002 H \0 \0 \0 005 G A C H A 0031600 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 0031620 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 0031640 \0 \0 \0 \0 \0 003 N I L \0 003 N I L \0 \0 0031660 \0 \0 \0 \0 \0 \0 \0 \0 001 266 \0 \0 \0 005 G A 0031700 C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0031720 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 0031740 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N I 0031760 L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 004 \0 \0 \0 0032000 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 0032020 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0032040 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 0032060 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 177 0032100 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 0032120 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 0032140 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N 0032160 I L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 0032200 \0 \0 b \0 \0 \0 005 G A C H A \0 \n \0 \0 0032220 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 0032240 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 0032260 \0 003 N I L \0 003 N I L \0 \0 \0 \0 \0 \0 0032300 \0 \0 \0 \0 \0 \n \0 \0 \0 005 G A C H A \0 0032320 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 0032340 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 0032360 \0 \0 \0 \0 003 N I L \0 003 N I L \0 \0 \0 0032400 \0 \0 \0 \0 \0 \0 \0 \0 037 \0 \0 \0 005 G A C 0032420 H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0032440 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 0032460 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N I L 0032500 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 005 0032520 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 0032540 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0032560 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 0032600 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 ' \0 0032620 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 0032640 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 0032660 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I 0032700 L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0032720 \0 / \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 0032740 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 0032760 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 0033000 003 N I L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 0033020 \0 \0 \0 \0 001 \0 \0 \0 005 G A C H A \0 \n 0033040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 0033060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 0033100 \0 \0 \0 003 N I L \0 003 N I L \0 \0 \0 \0 0033120 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 005 G A C H 0033140 A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0033160 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 0033200 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N I L \0 0033220 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 022 \0 \0 \0 005 G 0033240 A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0033260 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0033300 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N 0033320 I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 0033340 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 0033360 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 0033400 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L 0033420 \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0033440 001 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 0033460 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 0033500 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 0033520 N I L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 0033540 \0 \0 \0 : \0 \0 \0 005 G A C H A \0 \n \0 0033560 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 0033600 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 0033620 \0 \0 003 N I L \0 003 N I L \0 \0 \0 \0 \0 0033640 \0 \0 \0 \0 \0 \0 = \0 \0 \0 005 G A C H A 0033660 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 0033700 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 0033720 \0 \0 \0 \0 \0 003 N I L \0 003 N I L \0 \0 0033740 \0 \0 \0 \0 \0 \0 \0 \0 \0 . \0 \0 \0 005 G A 0033760 C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0034000 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 0034020 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N I 0034040 L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 W \0 \0 \0 0034060 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 0034100 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0034120 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 0034140 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 N 0034160 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 0034200 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 0034220 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N 0034240 I L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 0034260 \0 \0 = \0 \0 \0 005 G A C H A \0 \n \0 \0 0034300 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 0034320 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 0034340 \0 003 N I L \0 003 N I L \0 \0 \0 \0 \0 \0 0034360 \0 \0 \0 \0 \0 o \0 \0 \0 005 G A C H A \0 0034400 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 0034420 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 0034440 \0 \0 \0 \0 003 N I L \0 003 N I L \0 \0 \0 0034460 \0 \0 \0 \0 \0 \0 \0 \0 ( \0 \0 \0 005 G A C 0034500 H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0034520 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 0034540 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N I L 0034560 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 005 0034600 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 0034620 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0034640 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 0034660 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 017 \0 0034700 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 0034720 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 0034740 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I 0034760 L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0035000 \0 001 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 0035020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 0035040 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 0035060 003 N I L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 0035100 \0 \0 \0 \0 255 \0 \0 \0 005 G A C H A \0 \n 0035120 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 0035140 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 0035160 \0 \0 \0 003 N I L \0 003 N I L \0 \0 \0 \0 0035200 \0 \0 \0 \0 \0 \0 001 Q \0 \0 \0 005 G A C H 0035220 A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0035240 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 0035260 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N I L \0 0035300 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 247 \0 \0 \0 005 G 0035320 A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0035340 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0035360 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N 0035400 I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 0035420 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 0035440 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 0035460 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L 0035500 \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0035520 247 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 0035540 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 0035560 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 0035600 N I L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 0035620 \0 \0 \0 001 \0 \0 \0 005 G A C H A \0 \n \0 0035640 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 0035660 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 0035700 \0 \0 003 N I L \0 003 N I L \0 \0 \0 \0 \0 0035720 \0 \0 \0 \0 \0 \0 \f \0 \0 \0 005 G A C H A 0035740 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 0035760 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 0036000 \0 \0 \0 \0 \0 003 N I L \0 003 N I L \0 \0 0036020 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 005 G A 0036040 C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0036060 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 0036100 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N I 0036120 L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 033 \0 \0 \0 0036140 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 0036160 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0036200 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 0036220 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 0036240 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 0036260 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 0036300 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N 0036320 I L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 0036340 \0 \0 " \0 \0 \0 005 G A C H A \0 \n \0 \0 0036360 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 0036400 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 0036420 \0 003 N I L \0 003 N I L \0 \0 \0 \0 \0 \0 0036440 \0 \0 \0 \0 \0 001 \0 \0 \0 005 G A C H A \0 0036460 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 0036500 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0 \0 \0 0036520 \0 \0 \0 \0 003 N I L \0 003 N I L \0 \0 \0 0036540 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 005 G A C 0036560 H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0036600 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 0036620 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 N I L 0036640 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 031 \0 \0 \0 005 0036660 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 0036700 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0036720 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I L \0 003 0036740 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 0036760 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 0037000 \0 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 \0 \0 \0 0037020 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 003 N I 0037040 L \0 003 N I L \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0037060 \0 001 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 0037100 \0 \0 \0 \0 \0 \0 \0 3 0 \0 U z 270 0037115