$ od -c -N 50000 [phylum]<LISP>Lyric>Lispusers>HASH-FILE.TEDIT!1 0000000 X E R O X \t H A S H - F I L E \r 0000020 2 \r \r 4 \r \r 1 \r \r H A S H - F I 0000040 L E \r 1 \r \r 4 \r \r B y : D o 0000060 u g C u t t i n g ( c u t t 0000100 i n g . p a @ x e r o x . c o m 0000120 ) \r T h i s d o c u m e n t 0000140 l a s t e d i t e d o n A 0000160 u g u s t 4 , 1 9 8 7 . \r I 0000200 N T R O D U C T I O N \r T h i s 0000220 i s a n e w i m p l e m 0000240 e n t a t i o n o f a f a 0000260 c i l i t y s i m i l a r t 0000300 o b u t n o t c o m p a t 0000320 i b l e w i t h t h e H A 0000340 S H l i b r a r y m o d u l 0000360 e . I t i n s t e a d t 0000400 r i e s t o b e v e r y 0000420 s i m i l a r t o t h e C 0000440 o m m o n L I S P h a s h 0000460 t a b l e f a c i l i t y . \r 0000500 A s h a s h f i l e s a r 0000520 e n o t s t o r e d i n 0000540 m e m o r y , h a s h i n g 0000560 f o r E Q o r E Q L k e 0000600 y s i s n o t t e r r i b 0000620 l y u s e f u l . M e m o 0000640 r y r e f e r e n c e s w r 0000660 i t t e n t o f i l e i n 0000700 o n e s e s s i o n w i l 0000720 l p r o b a b l y n o t b 0000740 e v a l i d i n a n o t h 0000760 e r . F o r t h i s r e 0001000 a s o n , t h e d e f a u l 0001020 t h a s h i n g i s f o r 0001040 E Q U A L k e y s , a n d 0001060 t h e n o n l y t h o s e 0001100 w h i c h c a n b e d e 0001120 p e n d a b l y p r i n t e d 0001140 a n d r e a d . \r A l l o 0001160 f t h e c o d e f o r H 0001200 A S H - F I L E i s i n a 0001220 p a c k a g e c a l l e d 0001240 H A S H - F I L E . T h r o 0001260 u g o u t t h i s d o c u m 0001300 e n t L I S P s y m b o l s 0001320 w i l l b e p r i n t e d 0001340 a s t h o u g h i n a 0001360 p a c k a g e w h i c h u s 0001400 e s t h e p a c k a g e s 0001420 H A S H - F I L E a n d L I 0001440 S P . \r F U N C T I O N A L I 0001460 N T E R F A C E \r ( m a k e - h 0001500 a s h - f i l e f i l e - n a 0001520 m e s i z e . k e y s - a 0001540 r g s ) \t [ F u n c t i o n ] \r 0001560 C r e a t e s a n d r e t u 0001600 r n s a n e m p t y h a s 0001620 h f i l e i n f i l e - n 0001640 a m e o f s i z e s i z e 0001660 . T h e k e y w o r d a 0001700 r g u m e n t s a r e e x p 0001720 l a i n e d a s t h i s d 0001740 o c u m e n t p r o g r e s s 0001760 e s . \r ( g e t - h a s h - f i 0002000 l e k e y h a s h - f i l e 0002020 & o p t i o n a l d e f a u 0002040 l t ) \t [ F u n c t i o n ] \r R 0002060 e t r i e v e s t h e v a l 0002100 u e s t o r e d u n d e r 0002120 k e y i n h a s h - f i l e 0002140 . R e t u r n s d e f a u 0002160 l t i f t h e r e i s n 0002200 o t h i n g s t o r e d u n 0002220 d e r k e y . T h e d e 0002240 f a u l t f o r d e f a u l 0002260 t i s n i l . A l s o 0002300 r e t u r n s a s e c o n d 0002320 v a l u e w h i c h i s 0002340 t r u e i f s o m e t h i n 0002360 g w a s f o u n d u n d e 0002400 r k e y a n d f a l s e 0002420 o t h e r w i s e . \r ( g 0002440 e t - h a s h - f i l e k e y 0002460 h a s h - f i l e ) \t [ s e t 0002500 f p l a c e ] \r V a l u e s 0002520 c a n b e s t o r e s i n 0002540 a h a s h f i l e w i t 0002560 h : \r ( s e t f ( g e t - h a 0002600 s h - f i l e k e y h a s h 0002620 - f i l e ) n e w - v a l u e 0002640 ) \r A c c o r d i n g l y i n 0002660 c f , d e c f , p u s h , 0002700 p o p a n d a n y o t h e 0002720 r m a c r o t h a t a c c 0002740 e p t s g e n e r a l i z e d 0002760 v a r i a b l e s w i l l 0003000 w o r k w i t h g e t - h a 0003020 s h - f i l e . \r ( c l o s e - 0003040 h a s h - f i l e h a s h - f 0003060 i l e ) \t [ F u n c t i o n ] \r 0003100 C l o s e s t h e f i l e 0003120 f o r h a s h - f i l e , e 0003140 n s u r i n g t h a t a l l 0003160 d a t a h a s b e e n s 0003200 a v e d . N o t e t h a t 0003220 t h e b a c k i n g f i l 0003240 e i s a l w a y s k e p t 0003260 c o h e r e n t 377 377 \0 357 % \0 0003300 \0 t \0 h \0 e \0 \0 o \0 n \0 l \0 0003320 y \0 \0 r \0 e \0 a \0 s \0 o \0 n \0 0003340 \0 t \0 o \0 \0 c \0 l \0 o \0 s \0 0003360 e \0 \0 t \0 h \0 e \0 377 \0 h a s 0003400 h - f i l e i s t o e n s 0003420 u r e t h a t t h e b a c 0003440 k i n g f i l e i s w r i 0003460 t t e n p r o p e r l y t o 0003500 d i s k . A l l t h e 0003520 f u n c t i o n s m e n t i o 0003540 n e d i n t h i s d o c u 0003560 m e n t w h i c h o p e r a 0003600 t e o n h a s h f i l e s 0003620 w i l l o p e n t h e f 0003640 i l e w h e n n e c e s a r 0003660 y , t h u s i t i s s a 0003700 f e t o c a l l c l o s e 0003720 - h a s h - f i l e a t a l 0003740 m o s t a n y t i m e . \r ( 0003760 o p e n - h a s h - f i l e f 0004000 i l e - n a m e & k e y : d 0004020 i r e c t i o n . o t h e r 0004040 - k e y s - a r g s ) \t [ F u n 0004060 c t i o n ] \r O p e n s a h 0004100 a s h f i l e c r e a t e d 0004120 b y m a k e - h a s h - f i 0004140 l e a n d r e t u r n s i 0004160 t . T h e : d i r e c t i 0004200 o n a r g u m e n t m u s t 0004220 b e o n e o f : i n p u 0004240 t o r : i o . I f o p 0004260 e n e d f o r : i n p u t 0004300 t h e n s t o r i n g v a l 0004320 u e s i n t h e h a s h 0004340 f i l e w i l l b e d i s 0004360 a l l o w e d . T h e d e 0004400 f a u l t f o r : d i r e c 0004420 t i o n i s : i n p u t . 0004440 O t h e r k e y a r g u m 0004460 e n t s a r e t h e s a m 0004500 e a s f o r m a k e - h a 0004520 s h - f i l e a n d w i l l 0004540 b e d i s c u s s e d l a 0004560 t e r i n t h i s d o c u 0004600 m e n t . \r ( m a p - h a s h - 0004620 f i l e f u n c t i o n h a 0004640 s h - f i l e ) \t [ F u n c t i 0004660 o n ] \r F o r e a c h e n t 0004700 r y i n h a s h - f i l e , 0004720 f u n c t i o n i s c a l 0004740 l e d w i t h t h e k e y 0004760 a n d v a l u e s t o r e 0005000 d . \r C a u t i o n : I t i 0005020 s i n g e n e r a l u n s 0005040 a f e t o c h a n g e a 0005060 h a s h f i l e w h i l e 0005100 m a p p i n g o v e r i t . 0005120 T h i s i n c l u d e s 0005140 c a l l i n g c l o s e - h a 0005160 s h - f i l e . \r ( r e m - h 0005200 a s h - f i l e k e y h a s 0005220 h - f i l e ) \t [ F u n c t i o 0005240 n ] \r R e m o v e s a n y e 0005260 n t r y f o r k e y i n 0005300 h a s h - f i l e . R e t u 0005320 r n s t i f t h e r e w 0005340 a s s u c h a n e n t r y 0005360 , n i l o t h e r w i s e . 0005400 \r ( c o p y - h a s h - f i l e 0005420 h a s h - f i l e f i l e - 0005440 n a m e & o p t i o n a l n 0005460 e w - s i z e ) \t [ F u n c t i 0005500 o n ] \r M a k e a h a s h 0005520 f i l e i n f i l e - n a m 0005540 e w i t h t h e s a m e 0005560 c o n t e n t s a s h a s h 0005600 - f i l e . M u c h s l o 0005620 w e r t h a n i l : c o p y 0005640 f i l e , b u t p e r f o r 0005660 m s g a r b a g e c o l l e 0005700 c t i o n , o f t e n r e s 0005720 u l t i n g i n a s m a l 0005740 l e r f i l e . I m p l e 0005760 m e n t e d w i t h m a k e 0006000 - h a s h - f i l e , m a p 0006020 - h a s h - f i l e , g e t - 0006040 h a s h - f i l e a n d s e 0006060 t f o f g e t - h a s h - f 0006100 i l e . C a l l e d w h e 0006120 n r e h a s h i n g ( b e l 0006140 o w ) . \r ( h a s h - f i l e 0006160 - c o u n t h a s h - f i l e 0006200 ) \t [ F u n c t i o n ] \r R e t 0006220 u r n s t h e n u m b e r 0006240 o f e n t r i e s i n h a 0006260 s h - f i l e . \r ( h a s h - f 0006300 i l e - p o b j e c t ) \t [ F 0006320 u n c t i o n ] \r R e t u r n s 0006340 t i f o b j e c t i s 0006360 a h a s h f i l e , n i l 0006400 o t h e r w i s e . \r ( h a s 0006420 h - f i l e - p o b j e c t ) 0006440 377 377 \0 \0 357 r 377 \0 ( t y p e p 0006460 o b j e c t ' h a s h - f i l 0006500 e ) \r F I L E F O R M A T \r W 0006520 e u s e a l i n k e d b 0006540 u c k e t i m p l e m e n t a 0006560 t i o n a s i l l u s t r a 0006600 t e d i n t h e f o l l o 0006620 w i n g d i a g r a m . \r ( ( 0006640 S K E T C H N I L V E R S I 0006660 O N 3 P R I R A N G E ( 0006700 1 0 9 . 0 ) S K E T C H C 0006720 O N T E X T ( ( R O U N D 0006740 1 B L A C K ) ( M O D E R 0006760 N 1 0 ( M E D I U M R E 0007000 G U L A R R E G U L A R ) ) 0007020 ( L E F T B A S E L I N E ) 0007040 ( C U R V E 1 8 . 0 8 0007060 ) N I L N I L ( C E N T 0007100 E R C E N T E R ) ( N I L 0007120 N I L N I L ) T N I L 0007140 P O I N T S 1 N I L ) ) 0007160 ( ( 0 . 6 7 5 5 0 0 0 4 3 5 0007200 7 . 0 ( P R I 1 0 9 ) ) 0007220 ( G R O U P ( - 1 2 8 . 0 0007240 8 5 . 9 9 9 9 4 7 1 4 . 0007260 0 6 7 5 . 5 0 0 0 6 ) ( 0007300 ( ( 0 . 0 2 5 7 2 . 0 ( 0007320 P R I 5 ) ) ( T E X T B O 0007340 X ( 7 2 . 0 6 5 5 . 0 0007360 1 4 4 . 0 2 5 . 0 ) ( 0007400 " s i z e " ) 1 ( C E N T 0007420 E R C E N T E R ) ( M O D 0007440 E R N 1 8 ( M E D I U M 0007460 R E G U L A R R E G U L A R ) 0007500 ) ( ( 1 2 8 . 5 6 5 8 . 0007520 0 3 1 1 9 ) ) B L A C K 0007540 ( R O U N D 2 B L A C K ) 0007560 N I L ( N I L N I L N 0007600 I L ) ) ) ( ( 0 . 0 7 1 0007620 9 . 6 ( P R I 8 ) ) ( 0007640 T E X T ( 5 6 . 0 . 6 0007660 4 0 . 0 ) ( " 1 " ) 1 . 0007700 4 ( R I G H T B A S E L I 0007720 N E ) ( T E R M I N A L 1 0007740 2 ( M E D I U M R E G U L 0007760 A R R E G U L A R ) ) ( ( 0010000 4 6 . 2 6 3 4 . 2 9 . 8 0010020 1 9 . 6 ) ) B L A C K ) ) 0010040 ( ( 0 . 0 2 5 7 2 . 0 0010060 ( P R I 1 1 ) ) ( T E X 0010100 T B O X ( 7 2 . 0 6 3 2 0010120 . 0 1 4 4 . 0 2 5 . 0 ) 0010140 ( " c o u n t " ) 1 ( 0010160 C E N T E R C E N T E R ) 0010200 ( M O D E R N 1 8 ( M E D 0010220 I U M R E G U L A R R E G U 0010240 L A R ) ) ( ( 1 2 0 . 0 0010260 6 3 5 . 0 4 8 1 9 ) ) B L 0010300 A C K ( R O U N D 2 B L 0010320 A C K ) N I L ( N I L N 0010340 I L N I L ) ) ) ( ( 0 . 0 0010360 2 5 7 2 . 0 ( P R I 1 0010400 3 ) ) ( T E X T B O X ( 0010420 7 2 . 0 5 6 8 . 0 1 4 4 0010440 . 0 2 5 . 0 ) ( " p o i 0010460 n t e r - 1 " ) 1 ( C E N 0010500 T E R C E N T E R ) ( M O 0010520 D E R N 1 8 ( M E D I U M 0010540 R E G U L A R R E G U L A R 0010560 ) ) ( ( 1 0 5 . 0 5 7 1 0010600 . 0 7 8 1 9 ) ) B L A C K 0010620 ( R O U N D 2 B L A C K 0010640 ) N I L ( N I L N I L 0010660 N I L ) ) ) ( ( 0 . 0 5 0010700 1 9 . 0 ( P R I 1 5 ) ) 0010720 ( T E X T ( 6 0 . 0 . 0010740 5 7 6 . 0 ) ( " h a s h - 0010760 f n ( k e y - 1 , s i z e ) + 0011000 2 " " h a s h - f n ( k e y 0011020 - 2 , s i z e ) + 2 " ) 1 0011040 ( R I G H T B A S E L I N E 0011060 ) ( M O D E R N 1 8 ( 0011100 M E D I U M R E G U L A R R 0011120 E G U L A R ) ) ( ( - 1 2 8 0011140 . 0 5 8 0 . 0 1 8 8 1 9 0011160 ) ( - 1 2 8 . 0 5 6 1 . 0011200 0 1 8 8 1 9 ) ) B L A C K 0011220 ) ) ( ( 0 . 0 2 5 7 2 . 0011240 0 ( P R I 1 8 ) ) ( T 0011260 E X T B O X ( 7 2 . 0 2 0011300 1 6 . 0 1 4 4 . 0 2 5 . 0011320 0 ) ( " p o i n t e r - 3 " 0011340 ) 1 ( C E N T E R C E N 0011360 T E R ) ( M O D E R N 1 8 0011400 ( M E D I U M R E G U L A 0011420 R R E G U L A R ) ) ( ( 1 0011440 0 5 . 0 2 1 9 . 0 7 8 1 0011460 9 ) ) B L A C K ( R O U N 0011500 D 2 B L A C K ) N I L 0011520 ( N I L N I L N I L ) ) ) 0011540 ( ( 0 . 0 5 1 9 . 0 ( 0011560 P R I 2 0 ) ) ( T E X T 0011600 ( 6 0 . 0 . 3 9 2 . 0 ) 0011620 ( " s i z e + 2 " ) 1 0011640 ( R I G H T B A S E L I N E ) 0011660 ( M O D E R N 1 8 ( M 0011700 E D I U M R E G U L A R R E 0011720 G U L A R ) ) ( ( 1 . 0 0011740 3 8 6 . 5 5 9 1 9 ) ) B L 0011760 A C K ) ) ( ( 0 . 0 4 8 0012000 . 0 ( P R I 2 4 ) ) ( 0012020 W I R E ( ( 2 6 4 . 0 . 0012040 3 8 3 . 9 9 9 9 4 ) ( 2 7 0012060 2 . 0 . 3 8 3 . 9 9 9 9 4 0012100 ) ( 2 7 2 . 0 . 4 7 9 0012120 . 9 9 9 9 4 ) ) ( R O U N D 0012140 2 B L A C K ) N I L N I 0012160 L 1 ( 2 6 2 . 0 3 8 1 0012200 . 9 9 9 9 4 1 2 . 0 1 0 0012220 0 . 0 ) N I L ) ) ( ( 0 . 0012240 0 4 8 . 0 ( P R I 2 4 0012260 ) ) ( W I R E ( ( 2 6 4 0012300 . 6 2 4 ) ( 2 7 2 . 0012320 6 2 4 ) ( 2 7 2 . 5 2 8 0012340 ) ) ( R O U N D 2 B L A 0012360 C K ) N I L N I L 1 ( 0012400 2 6 2 5 2 6 1 2 1 0 0 ) 0012420 N I L ) ) ( ( 0 . 0 5 1 0012440 9 . 0 ( P R I 2 5 ) ) 0012460 ( T E X T ( 2 7 2 . 0 . 0012500 5 0 4 . 0 ) ( " T a b l e 0012520 " ) 1 ( C E N T E R B A 0012540 S E L I N E ) ( M O D E R N 0012560 1 8 ( B O L D R E G U L 0012600 A R R E G U L A R ) ) ( ( 0012620 2 4 9 . 0 4 9 8 . 5 4 6 0012640 1 9 ) ) B L A C K ) ) ( ( 0012660 0 . 0 5 1 9 . 0 ( P R I 0012700 3 0 ) ) ( T E X T ( 5 0012720 6 . 0 . 6 6 4 . 0 ) ( 0012740 " 0 " ) 1 ( R I G H T B 0012760 A S E L I N E ) ( M O D E R 0013000 N 1 8 ( M E D I U M R E 0013020 G U L A R R E G U L A R ) ) 0013040 ( ( 4 6 . 0 6 5 8 . 5 1 0013060 0 1 9 ) ) B L A C K ) ) 0013100 ( ( 0 . 0 5 1 5 . 0 ( P 0013120 R I 3 1 ) ) ( T E X T 0013140 ( 5 6 . 0 . 6 8 8 . 0 ) 0013160 ( " f i l e p o s i t i o n 0013200 i n p o i n t e r s " ) 0013220 1 ( R I G H T B A S E L I 0013240 N E ) ( M O D E R N 1 4 0013260 ( B O L D R E G U L A R R 0013300 E G U L A R ) ) ( ( - 1 0 0 0013320 6 8 3 . 5 1 5 6 1 5 ) ) 0013340 B L A C K ) ) ( ( 0 . 0 2 0013360 5 7 2 . 0 ( P R I 4 9 0013400 ) ) ( T E X T B O X ( 7 0013420 2 . 0 4 4 0 . 0 1 4 4 . 0013440 0 2 5 . 0 ) ( " p o i n 0013460 t e r - 2 " ) 1 ( C E N T 0013500 E R C E N T E R ) ( M O D 0013520 E R N 1 8 ( M E D I U M 0013540 R E G U L A R R E G U L A R ) 0013560 ) ( ( 1 0 5 . 0 4 4 3 . 0013600 0 7 8 1 9 ) ) B L A C K 0013620 ( R O U N D 2 B L A C K ) 0013640 N I L ( N I L N I L N 0013660 I L ) ) ) ( ( 0 . 0 5 1 0013700 9 . 0 ( P R I 5 3 ) ) 0013720 ( T E X T ( 6 0 . 0 . 0013740 2 2 8 . 0 ) ( " p o i n t e 0013760 r - 1 " ) 1 ( R I G H T 0014000 B A S E L I N E ) ( M O D E 0014020 R N 1 8 ( M E D I U M R 0014040 E G U L A R R E G U L A R ) ) 0014060 ( ( - 1 8 . 0 2 2 2 . 5 0014100 7 8 1 9 ) ) B L A C K ) ) 0014120 ( ( 0 . 0 5 1 5 . 0 0014140 ( P R I 5 7 ) ) ( T E X T 0014160 ( 5 6 . 0 . 3 5 2 . 0 0014200 ) ( " f i l e p o s i t i 0014220 o n i n b y t e s " ) 1 0014240 ( R I G H T B A S E L I N 0014260 E ) ( M O D E R N 1 4 0014300 ( B O L D R E G U L A R R E 0014320 G U L A R ) ) ( ( - 8 1 0014340 3 4 7 . 5 1 3 7 1 5 ) ) B 0014360 L A C K ) ) ( ( 0 . 0 5 0014400 1 9 . 0 ( P R I 5 8 ) ) 0014420 ( T E X T ( 6 0 . 0 . 0014440 3 2 8 . 0 ) ( " p o i n t 0014460 e r - 2 " ) 1 ( R I G H T 0014500 B A S E L I N E ) ( M O D 0014520 E R N 1 8 ( M E D I U M 0014540 R E G U L A R R E G U L A R ) 0014560 ) ( ( - 1 8 . 0 3 2 2 . 0014600 5 7 8 1 9 ) ) B L A C K ) 0014620 ) ( ( 0 . 0 5 1 9 . 0 0014640 ( P R I 5 9 ) ) ( T E X 0014660 T ( 6 0 . 0 . 4 4 8 . 0014700 0 ) ( " h a s h - f n ( k e 0014720 y - 3 , s i z e ) + 2 " ) 1 0014740 ( R I G H T B A S E L I N 0014760 E ) ( M O D E R N 1 8 0015000 ( M E D I U M R E G U L A R 0015020 R E G U L A R ) ) ( ( - 1 2 0015040 8 . 0 4 4 2 . 5 1 8 8 1 0015060 9 ) ) B L A C K ) ) ( ( 0 0015100 . 0 7 1 9 . 6 ( P R I 0015120 6 1 ) ) ( T E X T ( 7 2 0015140 . 0 . 3 0 4 . 0 ) ( " 0015160 k e y - 1 " ) 1 . 4 ( L 0015200 E F T B A S E L I N E ) ( 0015220 T E R M I N A L 1 2 ( M E 0015240 D I U M R E G U L A R R E G 0015260 U L A R ) ) ( ( 7 1 . 4 0015300 2 9 8 . 1 9 9 9 8 4 9 . 0 0015320 1 9 . 6 ) ) B L A C K ) ) 0015340 ( ( 0 . 0 7 1 9 . 6 ( 0015360 P R I 6 5 ) ) ( T E X T 0015400 ( 7 2 . 0 . 2 8 4 . 0 ) 0015420 ( " v a l u e - 1 " ) 1 0015440 . 4 ( L E F T B A S E L I 0015460 N E ) ( T E R M I N A L 1 0015500 2 ( M E D I U M R E G U L 0015520 A R R E G U L A R ) ) ( ( 0015540 7 1 . 4 2 7 8 . 6 6 8 . 0015560 6 1 9 . 6 ) ) B L A C K ) 0015600 ) ( ( 0 . 0 7 1 9 . 6 0015620 ( P R I 6 6 ) ) ( T E X 0015640 T ( 7 2 . 0 . 2 0 0 . 0015660 0 ) ( " k e y - 3 " ) 1 0015700 . 4 ( L E F T B A S E L I 0015720 N E ) ( T E R M I N A L 1 0015740 2 ( M E D I U M R E G U L 0015760 A R R E G U L A R ) ) ( ( 0016000 7 1 . 4 1 9 4 . 5 9 9 9 9 0016020 4 9 . 0 1 9 . 6 ) ) B L 0016040 A C K ) ) ( ( 0 . 0 7 1 0016060 9 . 6 ( P R I 6 7 ) ) 0016100 ( T E X T ( 7 2 . 0 . 0016120 1 8 0 . 0 ) ( " v a l u e - 0016140 3 " ) 1 . 4 ( L E F T 0016160 B A S E L I N E ) ( T E R M 0016200 I N A L 1 2 ( M E D I U M 0016220 R E G U L A R R E G U L A R 0016240 ) ) ( ( 7 1 . 4 1 7 5 . 0016260 0 6 8 . 6 1 9 . 6 ) ) 0016300 B L A C K ) ) ( ( 0 . 0 7 0016320 1 9 . 6 ( P R I 7 1 ) ) 0016340 ( T E X T ( 7 2 . 0 . 0016360 1 1 2 . 0 ) ( " k e y - 0016400 2 " ) 1 . 4 ( L E F T 0016420 B A S E L I N E ) ( T E R M 0016440 I N A L 1 2 ( M E D I U M 0016460 R E G U L A R R E G U L A R 0016500 ) ) ( ( 7 1 . 4 1 0 6 . 0016520 4 4 9 . 0 1 9 . 6 ) ) 0016540 B L A C K ) ) ( ( 0 . 0 7 0016560 1 9 . 6 ( P R I 7 2 ) ) 0016600 ( T E X T ( 7 2 . 0 . 0016620 9 2 . 0 ) ( " v a l u e 0016640 - 2 " ) 1 . 4 ( L E F T 0016660 B A S E L I N E ) ( T E R 0016700 M I N A L 1 2 ( M E D I U 0016720 M R E G U L A R R E G U L A 0016740 R ) ) ( ( 7 1 . 4 8 6 . 0016760 7 9 9 9 9 5 6 8 . 6 1 9 0017000 . 6 ) ) B L A C K ) ) ( ( 0017020 0 . 0 5 1 9 . 0 ( P R I 0017040 7 3 ) ) ( T E X T ( 6 0017060 0 . 0 . 1 4 0 . 0 ) ( 0017100 " p o i n t e r - 3 " ) 1 0017120 ( R I G H T B A S E L I N E ) 0017140 ( M O D E R N 1 8 ( M 0017160 E D I U M R E G U L A R R E 0017200 G U L A R ) ) ( ( - 1 8 . 0 0017220 1 3 4 . 5 7 8 1 9 ) ) 0017240 B L A C K ) ) ( ( 0 . 0 5 0017260 1 9 . 0 ( P R I 7 4 ) ) 0017300 ( T E X T ( 3 2 0 . 0 0017320 . 6 6 4 . 0 ) ( " T h e 0017340 s i z e o f t h e t a b 0017360 l e " ) 1 ( L E F T B A 0017400 S E L I N E ) ( M O D E R N 0017420 1 8 ( M E D I U M R E G 0017440 U L A R R E G U L A R ) ) 0017460 ( ( 3 2 0 . 0 6 5 8 . 5 1 0017500 6 7 1 9 ) ) B L A C K ) ) 0017520 ( ( 0 . 0 5 1 9 . 0 ( 0017540 P R I 7 5 ) ) ( T E X T 0017560 ( 3 2 0 . 0 . 6 4 0 . 0 0017600 ) ( " T h e n u m b e r 0017620 o f e n t r i e s i n t h 0017640 e f i l e " ) 1 ( L E F 0017660 T B A S E L I N E ) ( M O 0017700 D E R N 1 8 ( M E D I U M 0017720 R E G U L A R R E G U L A R 0017740 ) ) ( ( 3 2 0 . 0 6 3 4 0017760 . 5 2 6 6 1 9 ) ) B L A C 0020000 K ) ) ( ( 0 . 0 5 1 9 . 0020020 0 ( P R I 7 6 ) ) ( T 0020040 E X T ( 3 2 0 . 0 . 5 0020060 7 6 . 0 ) ( " A c o l l i 0020100 s i o n l e a d i n g t o 0020120 a " " b u c k e t o f l 0020140 e n g h t t w o " ) 1 ( 0020160 L E F T B A S E L I N E ) 0020200 ( M O D E R N 1 8 ( M E D 0020220 I U M R E G U L A R R E G U 0020240 L A R ) ) ( ( 3 2 0 . 0 0020260 5 8 0 . 0 1 8 8 1 9 ) ( 0020300 3 2 0 . 0 5 6 1 . 0 1 7 5 0020320 1 9 ) ) B L A C K ) ) ( 0020340 ( 0 . 0 5 1 9 . 0 ( P R 0020360 I 7 8 ) ) ( T E X T ( 0020400 3 2 0 . 0 . 5 1 2 . 0 ) 0020420 ( " A n e m p t y b u c k 0020440 e t " ) 1 ( L E F T B A 0020460 S E L I N E ) ( M O D E R N 0020500 1 8 ( M E D I U M R E G 0020520 U L A R R E G U L A R ) ) 0020540 ( ( 3 2 0 . 0 5 0 6 . 5 1 0020560 4 1 1 9 ) ) B L A C K ) ) 0020600 ( ( 0 . 0 3 6 . 0 ( P 0020620 R I 8 1 ) ) ( O P E N C U 0020640 R V E ( ( 2 1 6 . 0 . 0020660 2 2 0 . 0 ) ( 2 2 4 . 0 . 0020700 2 0 7 . 3 1 7 0 6 ) ( 2 0020720 2 4 . 0 . 1 6 1 . 6 5 8 5 0020740 4 ) ( 2 1 6 . 0 . 1 4 0020760 8 . 0 ) ) ( R O U N D 2 0021000 B L A C K ) N I L ( N I L 0021020 ( S O L I D 1 8 . 0 0021040 8 . 6 6 9 4 6 8 ) ) 1 ( 2 0021060 1 3 . 0 1 3 2 . 0 1 5 . 0021100 2 1 0 4 . 7 9 9 9 9 5 ) 0021120 ( N I L ( ( 2 1 6 . 0 . 0021140 1 4 8 . 0 ) ( 2 2 3 . 1 0 0021160 5 4 8 . 1 5 2 . 9 6 7 0 7 0021200 ) ( 2 2 4 . 6 6 8 0 3 . 0021220 1 4 7 . 8 4 1 9 5 ) ) ) ) ) 0021240 ( ( 0 . 0 1 7 0 . 0 ( 0021260 P R I 8 1 ) ) ( O P E N C 0021300 U R V E ( ( 2 1 6 . 5 7 0021320 6 ) ( 2 3 2 . 5 1 2 ) 0021340 ( 2 3 2 . 2 9 2 ) ( 2 0021360 1 6 . 2 3 6 ) ) ( R O U 0021400 N D 2 B L A C K ) N I L 0021420 ( N I L ( S O L I D 1 0021440 8 . 0 1 0 ) ) 1 ( 2 1 1 0021460 1 6 6 2 6 . 4 4 8 0 . 0021500 0 ) ( N I L ( ( 2 1 6 0021520 . 2 3 6 ) ( 2 2 5 . 1 6 6 0021540 9 2 . 2 3 9 . 9 9 5 9 7 ) 0021560 ( 2 2 5 . 7 6 4 9 5 . 0021600 2 3 3 . 8 4 4 6 4 ) ) ) ) ) 0021620 ( ( 0 . 0 5 4 . 0 ( P R 0021640 I 8 1 ) ) ( O P E N C U R 0021660 V E ( ( 2 1 6 . 0 . 4 0021700 4 7 . 9 9 9 9 7 ) ( 2 2 4 . 0021720 0 . 4 2 8 . 0 9 7 5 6 ) 0021740 ( 2 2 4 . 0 . 3 5 5 . 2 0021760 1 9 5 ) ( 2 1 6 . 0 . 0022000 3 3 9 . 9 9 9 9 7 ) ) ( R O 0022020 U N D 2 B L A C K ) N I L 0022040 ( N I L ( S O L I D 0022060 1 8 . 0 1 1 . 0 7 6 6 8 7 ) 0022100 ) 1 ( 2 1 3 . 0 3 1 6 0022120 . 9 9 9 9 7 1 5 . 2 1 5 0022140 5 . 2 ) ( N I L ( ( 2 1 0022160 6 . 0 . 3 3 9 . 9 9 9 9 7 0022200 ) ( 2 2 7 . 0 6 1 3 7 . 0022220 3 3 9 . 4 1 7 5 7 ) ( 2 2 0022240 4 . 6 0 6 5 . 3 3 3 . 0 2 0022260 7 1 ) ) ) ) ) ( ( 0 . 0 5 0022300 1 9 . 0 ( P R I 8 2 ) ) 0022320 ( T E X T ( 3 2 0 . 0 0022340 . 4 4 8 . 0 ) ( " A b 0022360 u c k e t o f l e n g t h 0022400 o n e " ) 1 ( L E F T B 0022420 A S E L I N E ) ( M O D E R 0022440 N 1 8 ( M E D I U M R E 0022460 G U L A R R E G U L A R ) ) 0022500 ( ( 3 2 0 . 0 4 4 2 . 5 0022520 1 9 1 1 9 ) ) B L A C K ) ) 0022540 ( ( 0 . 0 6 4 . 0 ( 0022560 P R I 8 9 ) ) ( W I R E 0022600 ( ( 2 6 4 . 0 . 8 7 . 9 0022620 9 9 9 4 ) ( 2 7 2 . 0 . 0022640 8 7 . 9 9 9 9 4 ) ( 2 7 2 0022660 . 0 . 2 1 5 . 9 9 9 9 4 ) 0022700 ) ( R O U N D 2 B L A C 0022720 K ) N I L N I L 1 ( 2 0022740 6 2 . 0 8 5 . 9 9 9 9 4 0022760 1 2 . 0 1 3 2 . 0 ) N I L 0023000 ) ) ( ( 0 . 0 5 6 . 0 0023020 ( P R I 9 0 ) ) ( W I R 0023040 E ( ( 2 6 4 . 0 . 3 7 0023060 6 . 0 ) ( 2 7 2 . 0 . 0023100 3 7 6 . 0 ) ( 2 7 2 . 0 . 0023120 2 6 4 . 0 ) ) ( R O U N 0023140 D 2 B L A C K ) N I L N 0023160 I L 1 ( 2 6 2 . 0 2 6 0023200 2 . 0 1 2 . 0 1 1 6 . 0 0023220 ) N I L ) ) ( ( 0 . 0 5 0023240 1 9 . 0 ( P R I 9 1 ) ) 0023260 ( T E X T ( 2 7 2 . 0 0023300 . 2 4 0 . 0 ) ( " D a t 0023320 a " ) 1 ( C E N T E R B 0023340 A S E L I N E ) ( M O D E R 0023360 N 1 8 ( B O L D R E G U 0023400 L A R R E G U L A R ) ) ( 0023420 ( 2 5 2 . 0 2 3 4 . 5 4 0 0023440 1 9 ) ) B L A C K ) ) ( 0023460 ( 0 . 0 4 . 0 ( P R I 0023500 9 3 ) ) ( W I R E ( ( 2 0023520 6 4 . 6 8 0 ) ( 2 7 2 0023540 . 6 8 0 ) ( 2 7 2 . 6 0023560 7 2 ) ) ( R O U N D 2 B 0023600 L A C K ) N I L N I L 1 0023620 ( 2 6 2 6 7 0 1 2 1 2 ) 0023640 N I L ) ) ( ( 0 . 0 4 0023660 . 0 ( P R I 9 4 ) ) ( 0023700 W I R E ( ( 2 6 4 . 6 3 0023720 2 ) ( 2 7 2 . 6 3 2 ) 0023740 ( 2 7 2 . 6 4 0 ) ) ( 0023760 R O U N D 2 B L A C K ) N 0024000 I L N I L 1 ( 2 6 2 6 0024020 3 0 1 2 1 2 ) N I L ) ) 0024040 ( ( 0 . 0 5 1 9 . 0 ( 0024060 P R I 9 5 ) ) ( T E X T 0024100 ( 2 7 2 . 0 . 6 5 2 . 0 0024120 ) ( " H e a d e r " ) 1 0024140 ( C E N T E R B A S E L I N 0024160 E ) ( M O D E R N 1 8 0024200 ( B O L D R E G U L A R R E 0024220 G U L A R ) ) ( ( 2 4 1 . 5 0024240 6 4 6 . 5 6 1 1 9 ) ) 0024260 B L A C K ) ) ( ( 0 . 0 5 0024300 2 5 . 0 ( P R I 9 7 ) ) 0024320 ( T E X T ( 2 0 4 . 0 0024340 . 7 4 4 . 0 ) ( " H a s 0024360 h F i l e F o r m a t " ) 0024400 1 ( C E N T E R B A S E L 0024420 I N E ) ( M O D E R N 2 4 0024440 ( B O L D R E G U L A R 0024460 R E G U L A R ) ) ( ( 1 1 2 0024500 . 0 7 3 6 . 5 1 8 4 2 5 0024520 ) ) B L A C K ) ) ( ( 0 . 0024540 0 2 8 8 2 5 8 5 1 7 4 . 2 4 0024560 9 3 4 4 ( P R I 1 0 6 ) ) 0024600 ( G R O U P ( 7 0 5 0024620 0 1 . 1 7 4 1 3 1 4 8 . 4 9 0024640 8 6 9 2 8 . 8 2 5 8 5 1 ) 0024660 ( ( ( 0 . 0 2 5 9 3 1 4 7 0024700 2 . 5 1 1 8 7 ( P R I 1 0 0024720 3 ) ) ( B O X ( 7 2 . 4 0024740 7 4 9 4 5 5 0 2 . 1 7 4 1 3 0024760 1 4 5 . 0 2 3 7 4 2 5 . 0025000 9 3 1 3 9 8 ) ( R O U N D 0025020 2 B L A C K ) N I L 1 0025040 ( N I L N I L N I L ) ) ) 0025060 ( ( 0 . 0 7 2 . 0 ( P 0025100 R I 1 0 5 ) ) ( W I R E 0025120 ( ( 7 2 . 5 0 4 ) ( 2 0025140 1 6 . 5 2 8 ) ) ( R O U 0025160 N D 2 B L A C K ) N I L 0025200 N I L 1 N I L N I L ) ) ) 0025220 ( 1 4 4 . 5 2 0 ) ) ) 0025240 ( ( 0 . 0 2 8 8 2 5 8 5 1 0025260 7 4 . 2 4 9 3 4 4 ( P R I 0025300 1 0 7 ) ) ( G R O U P ( 0025320 7 0 1 3 3 . 1 7 4 1 5 1 0025340 4 8 . 4 9 8 6 9 2 8 . 8 2 5 0025360 8 5 1 ) ( ( ( 0 . 0 2 5 9 3 0025400 1 4 7 2 . 5 1 1 8 7 ( P 0025420 R I 1 0 3 ) ) ( B O X 0025440 ( 7 2 . 4 7 4 9 4 5 1 3 4 . 0025460 1 7 4 1 5 1 4 5 . 0 2 3 7 4 0025500 2 5 . 9 3 1 3 9 8 ) ( R 0025520 O U N D 2 B L A C K ) N I 0025540 L 1 ( N I L N I L N I 0025560 L ) ) ) ( ( 0 . 0 7 2 . 0025600 0 ( P R I 1 0 5 ) ) ( 0025620 W I R E ( ( 7 2 . 1 3 6 0025640 ) ( 2 1 6 . 1 6 0 ) ) 0025660 ( R O U N D 2 B L A C K ) 0025700 N I L N I L 1 N I L N 0025720 I L ) ) ) ( 1 4 4 . 1 5 0025740 2 ) ) ) ( ( 0 . 0 2 8 8 2 5 0025760 8 5 1 7 4 . 2 4 9 3 4 4 0026000 ( P R I 1 0 8 ) ) ( G R O 0026020 U P ( 7 0 3 1 7 . 1 7 4 0026040 1 3 1 4 8 . 4 9 8 6 9 2 0026060 8 . 8 2 5 8 5 1 ) ( ( ( 0 . 0026100 0 2 5 9 3 1 4 7 2 . 5 1 1 8 0026120 7 ( P R I 1 0 3 ) ) ( 0026140 B O X ( 7 2 . 4 7 4 9 4 5 0026160 3 1 8 . 1 7 4 1 3 1 4 5 . 0026200 0 2 3 7 4 2 5 . 9 3 1 3 9 8 0026220 ) ( R O U N D 2 B L A C 0026240 K ) N I L 1 ( N I L N 0026260 I L N I L ) ) ) ( ( 0 . 0 0026300 7 2 . 0 ( P R I 1 0 5 0026320 ) ) ( W I R E ( ( 7 2 0026340 . 3 2 0 ) ( 2 1 6 . 3 0026360 4 4 ) ) ( R O U N D 2 B 0026400 L A C K ) N I L N I L 1 0026420 N I L N I L ) ) ) ( 1 4 4 0026440 . 3 3 6 ) ) ) ) ( 2 2 4 0026460 . 4 2 4 ) ) ) ) \r ( - 1 2 7 0026500 . 5 5 6 0 7 6 8 4 . 4 1 2 1 1 0026520 7 1 4 . 6 8 9 2 6 7 7 . 1 7 0026540 2 7 ) \r 1 . 8 7 5 8 2 4 7 \r 8 \r 0026560 \r P o i n t e r s a r e 3 2 0026600 b i t i n t e g e r s w r 0026620 i t t e n a s f o u r 8 - 0026640 b i t b y t e s . T h e r 0026660 e a r e t w o p o i n t e 0026700 r s o f h e a d e r ( h o 0026720 l d i n g t h e s i z e a 0026740 n d c o u n t ) f o l l o w 0026760 e d b y s i z e p o i n t 0027000 e r s o f t a b l e . E 0027020 x c e p t f o r i n t h e 0027040 h e a d e r a n d n u l l 0027060 p o i n t e r s a l l p o 0027100 i n t e r s a r e f i l e - 0027120 p o s i t i o n s i n b y t 0027140 e s . E v e r y s u c h 0027160 p o i n t e r p o i n t s 0027200 t o t h e p o s i t i o n 0027220 o n t h e f i l e o f t 0027240 h e n e x t p o i n t e r 0027260 i n t h e b u c k e t . 0027300 I m m e d i a t e l y f o l l 0027320 o w i n g t h e n e x t p 0027340 o i n t e r o n t h e f i 0027360 l e a r e t h e p r i n t 0027400 e d r e p r e s e n t a t i o 0027420 n o f t h e k e y a n d 0027440 v a l u e f o r t h e e 0027460 n t r y . N e w e n t r i 0027500 e s , i n c l u d i n g o n 0027520 e s f o r o l d k e y s , 0027540 a r e a l w a y s a d d e 0027560 d a t t h e e n d o f 0027600 t h e f i l e . \r R E H A S H 0027620 I N G \r W h e n t h e n u m 0027640 b e r o f k e y s w i t h 0027660 v a l u e s i n t h e f 0027700 i l e r e a c h e s a t h 0027720 r e s h o l d w e r e h a s 0027740 h t o k e e p b u c k e t 0027760 l e n g t h s f r o m g e 0030000 t t i n g t o o l o n g . 0030020 T h i s t h r e s h o l d 0030040 i s e x p r e s s e d a s 0030060 a f r a c t i o n o f t h 0030100 e t a b l e s i z e . \r r e 0030120 h a s h - t h r e s h o l d \t [ 0030140 k e y w o r d a r g ] \r S h o 0030160 u l d b e f l o a t i n g 0030200 p o i n t n u m b e r b e t 0030220 w e e n z e r o a n d o n 0030240 e . W h e n t h e p r o 0030260 d u c t o f t h e t a b l 0030300 e s i z e a n d t h e r 0030320 e h a s h t h r e s h o l d 0030340 o f a h a s h f i l e i 0030360 s g r e a t e r t h a n i 0030400 t s h a s h - f i l e - c o u 0030420 n t t h e n t h e h a s h 0030440 f i l e i s a u t o m a t 0030460 i c a l l y r e h a s h e d . 0030500 T h e d e f a u l t f o 0030520 r t h i s k e y w o r d a 0030540 r g u m e n t i s t h e v 0030560 a l u e o f t h e s p e c 0030600 i a l v a r i a b l e h a s 0030620 h - f i l e : : * r e h a s h - 0030640 t h r e s h o l d * w h o s e 0030660 g l o b a l b i n d i n g 0030700 i s b y d e f a u l t 0 . 0030720 8 7 5 . \r R e h a s h i n g i 0030740 s a c c o m p l i s h e d b 0030760 y h a v i n g c o p y - h a 0031000 s h - f i l e m a k e a n 0031020 e w h a s h f i l e w i t 0031040 h a l a r g e r s i z e 0031060 i n a n e w v e r s i o n 0031100 o f t h e f i l e . T 0031120 h e n e w h a s h f i l e 0031140 s t r u c t u r e i s t h 0031160 e n s m a s h e d i n t o 0031200 t h e o l d o n e s o t 0031220 h a t p o i n t e r s t o 0031240 t h e o l d o n e a r e 0031260 s t i l l v a l i d . \r r e 0031300 h a s h - s i z e \t [ k e y w o 0031320 r d a r g ] \r S h o u l d b 0031340 e f l o a t i n g p o i n t 0031360 n u m b e r l a r g e r t 0031400 h a n o n e . T h e n e 0031420 x t p r i m e l a r g e r 0031440 t h a n t h e p r o d u c t 0031460 o f t h i s a n d t h e 0031500 o l d t a b l e s i z e 0031520 i s u s e d t o a s t h 0031540 e s i z e f o r t h e n 0031560 e w t a b l e . T h e d 0031600 e f a u l t f o r t h i s 0031620 k e y w o r d a r g u m e n t 0031640 i s t h e v a l u e o f 0031660 t h e s p e c i a l v a r 0031700 i a b l e h a s h - f i l e : 0031720 : * r e h a s h - s i z e * w 0031740 h o s e g l o b a l b i n d 0031760 i n g i s b y d e f a u l 0032000 t 2 . 0 . \r h a s h - f i l e 0032020 : : * d e l e t e - o l d - v e 0032040 r s i o n - o n - r e h a s h * 0032060 \t [ s p e c i a l v a r i a b 0032100 l e ] \r I f t r u e , w h e 0032120 n r e h a s h i n g g e n e 0032140 r a t e s a n e w v e r s 0032160 i o n o f t h e b a c k i 0032200 n g f i l e t h e o l d 0032220 v e r s i o n w i l l b e 0032240 a u t o m a t i c a l l y d e 0032260 l e t e d . T h e d e f a 0032300 u l t t o p - l e v e l v a 0032320 l u e f o r t h i s v a r 0032340 i a b l e i s n i l . \r N o 0032360 t e t h a t r e h a s h i n 0032400 g i s v e r y e x p e n s 0032420 i v e . T h u s w h e n 0032440 p o s s i b l e o n e s h o 0032460 u l d a t t e m p t t o m 0032500 a k e g o o d e s t i m a t 0032520 e s f o r t h e s i z e 0032540 a r g u m e n t t o m a k e 0032560 - h a s h - f i l e . \r P R 0032600 O G R A M M E R S ' I N T E R 0032620 F A C E \r O n e c a n i m a 0032640 g i n e a p p l i c a t i o n 0032660 s w h i c h o n e m i g h 0032700 t w a n t t o s t o r e 0032720 t h i n g s i n h a s h f 0032740 i l e s w h i c h c o u l d 0032760 n o t b e p r i n t e d 0033000 a n d r e a d b y t h e 0033020 f u n c t i o n s p r i n t 0033040 a n d r e a d . W e p r 0033060 o v i d e t h e f o l l o w 0033100 i n g h o o k s f o r t h 0033120 i s p u r p o s e . \r v a l u 0033140 e - r e a d - f n \t [ k e y w o 0033160 r d a r g ] \r C a l l e d b 0033200 y g e t - h a s h - f i l e 0033220 w i t h o n e a r g u m e n 0033240 t o f 377 377 \0 \0 a 377 \0 s t r 0033260 e a m t o r e a d a v a 0033300 l u e . T h e f i l e p 0033320 o s t i o n w i l l b e s 0033340 e t t o t h e s a m e p 0033360 o s i t i o n a s i t w a 0033400 s w h e n t h i s v a l u 0033420 e w a s w r i t t e n . 0033440 D e f a u l t i s h a s h 0033460 - f i l e : : d e f a u l t - r 0033500 e a d - f n w h i c h b i n 0033520 d s * p a c k a g e * t o 0033540 t h e X C L p a c k a g e , 0033560 * r e a d t a b l e * t o 0033600 t h e X C L r e a d t a b l 0033620 e a n d * p r i n t - p r e 0033640 t t y * t o n i l b e f o 0033660 r e c a l l i n g r e a d . 0033700 \r v a l u e - p r i n t - f n \t 0033720 [ k e y w o r d a r g ] \r C a 0033740 l l e d b y t h e s e t f 0033760 m e t h o d f o r g e t - 0034000 h a s h - f i l e w i t h t 0034020 h e o b j e c t t o b e 0034040 s t o r e d a n d t h e s 0034060 t r e a m t o p r i n t i 0034100 t o n . T h e f i l e 0034120 p o s i t i o n o f t h e 0034140 s t r e a m w i l l b e a 0034160 t t h e e n d o f t h e 0034200 f i l e a n d t h e r e 0034220 a r e n o l i m i t a t i o 0034240 n s a s t o h o w m u c 0034260 h c a n b e p r i n t e d 0034300 . D e f a u l t i s h a 0034320 s h - f i l e : : d e f a u l t 0034340 - p r i n t - f n w h i c h 0034360 b i n d s * p a c k a g e * 0034400 t o t h e X C L p a c k a 0034420 g e , * r e a d t a b l e * 0034440 t o t h e X C L r e a d t 0034460 a b l e a n d * p r i n t - 0034500 b a s e * t o 1 0 b e f o 0034520 r e c a l l i n g p r i n t 0034540 . \r E x a m p l e : A h a 0034560 s h f i l e w i t h c i r 0034600 c u l a r v a l u e s . \r ( d 0034620 e f u n p r i n t - c i r c u 0034640 l a r - o b j e c t ( o b j e 0034660 c t s t r e a m ) \r ( l 0034700 e t ( ( * p r i n t - c i r c 0034720 l e * t ) ) \r ( h 0034740 a s h - f i l e : : d e f a u l 0034760 t - p r i n t - f n o b j e c 0035000 t s t r e a m ) ) ) \r ( s e t 0035020 q h a s h - f i l e - w i t h 0035040 - c i r c u l a r - v a l u e s 0035060 \r ( m a k e - h a s h - 0035100 f i l e " { c o r e } f o o " 0035120 1 0 \r 0035140 : v a l u e - p r 0035160 i n t - f n # ' p r i n t - c 0035200 i r c u l a r - o b j e c t ) ) 0035220 \r ( s e t q l ( l i s t " 0035240 f o o " ) ) \r ( s e t f ( c d 0035260 r l ) l ) 377 377 \0 357 O 377 \0 0035300 # 1 = ( " f o o " . # 1 # 0035320 ) \r ( s e t f ( g e t - h a s 0035340 h - f i l e " b a r " h a s 0035360 h - f i l e - w i t h - c i r c 0035400 u l a r - v a l u e s ) l ) \r 0035420 ( g e t - h a s h - f i l e " 0035440 b a r " h a s h - f i l e - w 0035460 i t h - c i r c u l a r - v a l 0035500 u e s ) 377 377 \0 \0 \r \0 \0 \0 357 0035520 O \0 377 \0 # 1 = ( " f o o " 0035540 . # 1 # ) \r ( e q * l ) 0035560 377 377 \0 357 O 377 \0 n i l \r k e y 0035600 - r e a d - f n \t [ k e y w o r 0035620 d a r g ] \r C a l l e d b y 0035640 g e t - h a s h - f i l e w 0035660 i t h o n e a r g u m e n t 0035700 o f 377 377 \0 \0 a 377 \0 s t r e 0035720 a m t o r e a d a k e y 0035740 . T h e f i l e p o s t 0035760 i o n w i l l b e s e t 0036000 t o t h e s a m e p o s i 0036020 t i o n a s i t w a s w 0036040 h e n t h i s k e y w a s 0036060 w r i t t e n . D e f a 0036100 u l t i s h a s h - f i l e 0036120 : : d e f a u l t - r e a d - f 0036140 n , d e s c r i b e d a b o 0036160 v e . \r k e y - p r i n t - f n 0036200 \t [ k e y w o r d a r g ] \r C 0036220 a l l e d b y t h e s e t 0036240 f m e t h o d f o r g e t 0036260 - h a s h - f i l e w i t h 0036300 t h e o b j e c t t o b e 0036320 s t o r e d a n d t h e 0036340 s t r e a m t o p r i n t 0036360 i t o n . T h e f i l e 0036400 p o s i t i o n o f t h e 0036420 s t r e a m w i l l b e 0036440 a t t h e e n d o f t h 0036460 e f i l e a n d t h e r e 0036500 a r e n o l i m i t a t i 0036520 o n s a s t o h o w m u 0036540 c h c a n b e p r i n t e 0036560 d . D e f a u l t i s h 0036600 a s h - f i l e : : d e f a u l 0036620 t - p r i n t - f n , d e s c 0036640 r i b e d a b o v e . \r N o t 0036660 e : T h e v a l u e r e 0036700 a d e r i s c a l l e d i 0036720 m m e d i a t e l y a f t e r 0036740 t h e k e y r e a d e r , 0036760 t h u s t h e k e y r e 0037000 a d e r m u s t b e s u r 0037020 e t o r e a d a l l t h 0037040 a t t h e k e y p r i n t 0037060 e r p r i n t e d s o t h 0037100 a t t h e f i l e p o s i 0037120 t i o n i s a p p r o p r i 0037140 a t e f o r t h e v a l u 0037160 e r e a d e r . H o w e v 0037200 e r t h e v a l u e r e a 0037220 d e r i s f r e e t o n 0037240 o t r e a d a l l t h a t 0037260 t h e v a l u e p r i n t 0037300 e r p r i n t e d . \r O n 0037320 e m i g h t n o w t h i n 0037340 k t h a t o n e c o u l d 0037360 m a k e a h a s h f i l 0037400 e w h o s e k e y s w e r 0037420 e c i r c u l a r b y s i 0037440 m p l y s p e c i f y i n g 0037460 o u r c i r c u l a r r e a 0037500 d e r a n d p r i n t e r 0037520 f o r t h e k e y p r i n 0037540 t a n d r e a d f u n c t 0037560 i o n s , b u t t h i s w 0037600 o u l d n o t b e s u f f 0037620 i c i e n t . O n e w o u 0037640 l d a l s o n e e d t h e 0037660 f o l l o w i n g h o o k s 0037700 : \r k e y - c o m p a r e - f n 0037720 \t [ k e y w o r d a r g ] \r C 0037740 a l l e d w h e n s e a r c 0037760 h i n g a b u c k e t t o 0040000 d e t e r m i n e w h e t h 0040020 e r t h e c o r r e c t k 0040040 e y / v a l u e p a i r h a 0040060 s b e e n r e a c h e d y 0040100 e t . D e f a u l t i s 0040120 e q u a l . \r k e y - h a s h - 0040140 f n \t [ k e y w o r d a r g ] 0040160 \r C a l l e d w i t h a k 0040200 e y a n d a r a n g e . 0040220 S h o u l d r e t u r n a 0040240 n i n t e g e r b e t w e e 0040260 n z e r o a n d r a n g e 0040300 - 1 w i t h t h e f o l l 0040320 o w i n g p r o p e r t y : \r 0040340 k e y - h a s h - f n ( x ) = 0040360 k e y - h a s h - f n ( y ) 0040400 i f f k e y - c o m p a r e - 0040420 f n ( x , y ) \r T h e d e f 0040440 a u l t k e y - h a s h - f n 0040460 i s h a s h - f i l e : : h 0040500 a s h - o b j e c t w h i c h 0040520 w o r k s o n s y m b o l 0040540 s , s t r i n g s , l i s t 0040560 s , b i t - v e c t o r s , 0040600 p a t h n a m e s , c h a r a 0040620 c t e r s a n d n u m b e r 0040640 s . ( A n y o b j e c t 0040660 w h o s e p r i n t e d r e 0040700 p r e s e n t a t i o n c a n 0040720 b e d e p e n d a b l y r 0040740 e a d i n a s a n o b j 0040760 e c t e q u a l t o t h e 0041000 o r i g i n a l . ) N o t 0041020 e i n p a r t i c u a l a r 0041040 t h a t t h i s f u n c t 0041060 i o n w i l l w o r k o n 0041100 c i r c u l a r l i s t s , 0041120 a s i t o n l y p r o c 0041140 e e d s a f i x e d d e p 0041160 t h d o w n a s t r u c t 0041200 u r e . \r T h u s t o h a 0041220 s h o n c i r c u l a r k 0041240 e y s w e w o u l d a l s 0041260 o n e e d t o p r o v i d 0041300 e a k e y c o m p a r e r 0041320 w h i c h i s a b l e t 0041340 o c o m p a r e c i r c u l 0041360 a r k e y s , a s m o s t 0041400 d e f i n t i o n s o f e 0041420 q u a l a r e n o t . \r P E 0041440 R F O R M A N C E \r A l i n k 0041460 e d b u c k e t i m p l e m 0041500 e n t a t i o n g e n e r a l 0041520 l y g i v e s s h o r t e r 0041540 b u c k e t l e n g t h s , 0041560 b u t u s e s m o r e f 0041600 i l e s p a c e . T h e 0041620 e f f e c t s o f t h i s 0041640 u p o n p e r f o r m a n c e 0041660 a r e d i f f i c u l t t 0041700 o j u d g e . \r T h e f o l 0041720 l o w i n g t a b l e s h o 0041740 w s t h e d i s t r i b u t 0041760 i o n o f b u c k e t l e 0042000 n g t h s i n a W H E R E 0042020 - I S h a s h f i l e c o 0042040 n t a i n i n g 2 7 , 1 5 7 0042060 e n t r i e s w i t h a t 0042100 a b l e s i z e o f 5 0 , 0042120 0 2 1 . \r l e n g t h \t n u m b 0042140 e r o f b u c k e t s t h 0042160 i s l e n g t h \r 2 \r \r \t 0 \t 0042200 2 9 , 2 7 9 \t ( e m p t y b u 0042220 c k e t s ) \r \t 1 \t 1 5 , 4 6 1 0042240 \r \t 2 \t 4 3 3 4 \r \t 3 \t 7 9 4 \r 0042260 \t 4 \t 1 2 5 \r \t 5 \t 2 3 \r \t 6 \t 0042300 4 \r \t 7 \t 1 \r T h i s i n f o 0042320 r m a t i o n w a s g a t h 0042340 e r e d b y t h e f u n c 0042360 t i o n h a s h - f i l e : : 0042400 h i s t o g r a m . \r \0 \0 \0 \0 \0 0042420 003 ( L I S T ( ( P A G E N I 0042440 L ( P A P E R S I Z E L E T 0042460 T E R S T A R T I N G P A G E 0042500 # 1 0 6 ) ( 0 0 6 1 2 0042520 7 9 2 ) ( ( F O L I O N I L 0042540 ( P A R A L O O K S ( Q U A 0042560 D C E N T E R E D ) C H A R 0042600 L O O K S ( S U P E R S C R I 0042620 P T 0 I N V I S I B L E O 0042640 F F S E L E C T P O I N T O 0042660 F F P R O T E C T E D O F F 0042700 S I Z E 1 0 F A M I L Y 0042720 M O D E R N O V E R L I N E 0042740 O F F S T R I K E O U T O F 0042760 F U N D E R L I N E O F F 0043000 E X P A N S I O N R E G U L A 0043020 R S L O P E R E G U L A R 0043040 W E I G H T M E D I U M I N 0043060 V E R T E D O F F U S E R I 0043100 N F O N I L S T Y L E N I 0043120 L ) F O R M A T I N F O N I 0043140 L ) ( 1 7 4 3 6 2 8 8 3 0043160 6 ) N I L ) ( H E A D I N G 0043200 N I L ( H E A D I N G T Y P 0043220 E R U N N I N G H E A D ) ( 0043240 8 4 7 4 4 5 2 8 3 6 ) N 0043260 I L ) ( T E X T N I L N I 0043300 L ( 8 4 9 6 4 5 6 6 0 0 0043320 ) N I L ) ) ) ( P A G E N 0043340 I L ( P A P E R S I Z E N I 0043360 L . L E T T E R ) ( 0 0 0043400 6 1 2 7 9 2 ) ( ( F O L I 0043420 O N I L ( P A R A L O O K S 0043440 ( Q U A D C E N T E R E D ) 0043460 C H A R L O O K S ( S U P E 0043500 R S C R I P T 0 I N V I S I 0043520 B L E O F F S E L E C T P O 0043540 I N T O F F P R O T E C T E 0043560 D O F F S I Z E 1 0 F A 0043600 M I L Y M O D E R N O V E R 0043620 L I N E O F F S T R I K E O 0043640 U T O F F U N D E R L I N E 0043660 O F F E X P A N S I O N R 0043700 E G U L A R S L O P E R E G 0043720 U L A R W E I G H T M E D I 0043740 U M I N V E R T E D O F F 0043760 U S E R I N F O N I L S T Y 0044000 L E N I L ) F O R M A T I N 0044020 F O N I L ) ( 1 7 4 3 6 0044040 2 8 8 3 6 ) N I L ) ( H E 0044060 A D I N G N I L ( H E A D I 0044100 N G T Y P E R U N N I N G H E 0044120 A D ) ( 8 4 7 4 4 5 2 8 0044140 3 6 ) N I L ) ( T E X T N 0044160 I L N I L ( 8 4 9 6 4 5 0044200 6 6 0 0 ) N I L ) ) ) ( P 0044220 A G E N I L ( P A P E R S I 0044240 Z E N I L . L E T T E R ) 0044260 ( 0 0 6 1 2 7 9 2 ) ( 0044300 ( F O L I O N I L ( P A R A 0044320 L O O K S ( Q U A D C E N T 0044340 E R E D ) C H A R L O O K S 0044360 ( S U P E R S C R I P T 0 I 0044400 N V I S I B L E O F F S E L 0044420 E C T P O I N T O F F P R O 0044440 T E C T E D O F F S I Z E 0044460 1 0 F A M I L Y M O D E R N 0044500 O V E R L I N E O F F S T 0044520 R I K E O U T O F F U N D E 0044540 R L I N E O F F E X P A N S 0044560 I O N R E G U L A R S L O P 0044600 E R E G U L A R W E I G H T 0044620 M E D I U M I N V E R T E D 0044640 O F F U S E R I N F O N I 0044660 L S T Y L E N I L ) F O R 0044700 M A T I N F O N I L ) ( 1 7 0044720 4 3 6 2 8 8 3 6 ) N I L 0044740 ) ( H E A D I N G N I L ( 0044760 H E A D I N G T Y P E R U N N 0045000 I N G H E A D ) ( 8 4 7 4 4 0045020 5 2 8 3 6 ) N I L ) ( T 0045040 E X T N I L N I L ( 8 4 0045060 9 6 4 5 6 6 0 0 ) N I L ) 0045100 ) ) ) ) \0 \0 \0 \0 \0 005 \0 \f \0 0 \0 \0 0045120 \0 \0 001 310 \0 \v \0 \0 \0 004 003 004 \0 \0 001 \0 0045140 H \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045160 \0 001 T \0 \0 \0 001 T \0 \0 \0 \0 \0 / \0 \0 0045200 \0 \0 001 310 \0 \a \0 \0 \0 001 003 004 \0 \0 001 001 0045220 310 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045240 \0 \0 \0 \0 \0 001 T \0 \0 \0 \0 \0 ( \0 \0 \0 0045260 \0 001 310 \0 \a \0 \0 \0 001 002 004 \0 \0 \0 \0 \0 0045300 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045320 \0 \0 \0 \0 . \0 030 \0 030 001 310 \0 \v \0 \0 \0 0045340 004 003 004 \0 \0 001 001 310 001 \0 \0 \0 \0 \0 \0 \0 0045360 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045400 \0 \0 / \0 \0 \0 \0 001 310 \0 \v \0 \0 \0 004 003 0045420 004 \0 \0 001 001 310 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045440 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 T \0 \0 \0 \0 0045460 \0 4 \0 \0 \0 \0 001 310 \0 \0 \0 \0 \0 004 003 004 0045500 \0 \0 003 \0 030 001 \0 220 001 001 \0 \0 \0 \0 \0 0045520 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045540 \0 \0 \0 \0 \0 . \0 \0 \0 \0 001 310 \0 \v \0 \0 0045560 \0 004 003 003 \0 \0 001 001 310 001 \0 \0 \0 \0 \0 \0 0045600 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045620 \0 \0 \0 . \0 \0 \0 \0 001 310 \0 \v \0 \0 \0 004 0045640 003 004 \0 \0 001 001 310 001 \0 \0 \0 \0 \0 \0 \0 \0 0045660 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045700 \0 ( \0 \0 \0 \0 001 310 \0 021 \0 \0 \0 004 002 003 0045720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0045740 \0 \0 \0 \0 \0 \0 \0 \0 \0 ( \0 212 \0 212 001 8 0045760 \0 006 \0 \0 \0 004 002 003 \0 \0 \0 \0 \0 \0 \0 \0 0046000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0046020 \0 ( \0 212 \0 212 001 8 \0 \0 \0 \0 \0 004 002 004 0046040 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0046060 \0 \0 \0 \0 \0 \0 \0 \0 \0 D \0 \0 \0 \0 001 310 0046100 \0 \0 \0 \0 \0 \0 003 004 \0 \0 001 001 310 001 \0 \0 0046120 \0 \0 \0 \0 \0 \v P A G E H E A D I N 0046140 G \0 \v R U N N I N G H E A D \0 \0 0046160 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0046200 \0 004 \0 \a \0 026 \0 \b T E R M I N A L 0046220 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 006 M O 0046240 D E R N \0 \n \0 \0 \0 \0 \0 \0 002 \0 \0 024 0046260 \0 006 M O D E R N \0 \n \0 \0 \0 \0 \0 \0 0046300 \0 \0 \0 024 \0 006 M O D E R N \0 \f \0 \0 0046320 \0 \0 \0 \0 002 \0 \0 024 \0 006 M O D E R N 0046340 \0 006 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 006 M O 0046360 D E R N \0 \n \0 \0 \0 \0 \0 \0 001 \0 \0 022 0046400 \0 004 L O G O \0 030 \0 \0 \0 \0 \0 \0 \0 \0 0046420 \0 \0 \0 \0 \0 002 \0 \f \0 \0 \0 005 \0 \0 \0 \0 0046440 \a \0 \0 \0 001 \0 \0 \0 \0 005 \0 \0 \0 \n \0 \0 0046460 \0 \0 003 \0 \0 \0 \0 \0 002 \0 \f \0 \0 \0 002 \0 0046500 001 \0 \v H R U L E . G E T F N 001 \0 0046520 024 \0 006 M O D E R N \0 \n \0 \0 \0 \0 \0 0046540 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 \0 003 \0 \0 \0 \0 0046560 \0 002 \0 \v \0 \0 \0 002 \0 001 \0 \v H R U L 0046600 E . G E T F N 001 \0 024 \0 006 M O D E 0046620 R N \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 0046640 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 \v \0 \0 \0 0046660 002 \0 001 \0 \v H R U L E . G E T F N 0046700 001 \0 024 \0 006 M O D E R N \0 \n \0 \0 \0 0046720 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 \0 003 \0 \0 0046740 \0 \0 \0 002 \0 \n \0 \0 \0 \n \0 \0 \0 \0 004 \0 0046760 \0 \0 \0 \0 002 \0 \n \0 \0 \0 002 \0 001 \0 \v H 0047000 R U L E . G E T F N 001 \0 024 \0 006 M 0047020 O D E R N \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 0047040 \0 \0 001 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 \v 0047060 \0 \0 \0 002 \0 001 \0 \v H R U L E . G E 0047100 T F N 001 \0 024 \0 006 M O D E R N \0 \f 0047120 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 001 \0 \0 \0 \0 0047140 004 \0 \0 \0 \0 \0 002 \0 \t \0 \0 \0 ) \0 \0 \0 0047160 \0 003 \0 \0 \0 \0 \0 002 \0 \b \0 \0 \0 - \0 \0 0047200 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 \r \0 0047220 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 264 0047240 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 001 0047260 + \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 0047300 \0 271 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 0047320 \0 \0 025 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 002 0047340 \0 \0 \0 ! \0 \0 \0 \0 003 \0 \0 \0 \t \0 \0 \0 0047360 \0 006 \0 \0 \0 \r \0 \0 \0 \0 003 \0 \0 \0 \0 \0 0047400 002 \0 003 \0 \0 \0 * \0 \0 \0 \0 003 \0 \0 \0 \t 0047420 \0 \0 \0 \0 006 \0 \0 \0 \t \0 \0 \0 \0 003 \0 \0 0047440 \0 004 \0 \0 \0 \0 006 \0 \0 \0 D \0 \0 \0 \0 003 0047460 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 017 \0 \0 \0 \0 0047500 003 \0 \0 \0 037 \0 \0 \0 \0 006 \0 \0 \0 \r \0 \0 0047520 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 ! \0 0047540 \0 \0 \0 003 \0 \0 \0 003 \0 \0 \0 \0 006 \0 \0 \0 0047560 004 \0 \0 \0 \0 003 \0 \0 \0 \t \0 \0 \0 \0 006 \0 0047600 \0 \0 \v \0 \0 \0 \0 003 \0 \0 \0 \a \0 \0 \0 \0 0047620 006 \0 \0 \0 " \0 \0 \0 \0 003 \0 \0 \0 003 \0 \0 0047640 \0 \0 006 \0 \0 \0 023 \0 \0 \0 \0 003 \0 \0 \0 \a 0047660 \0 \0 \0 \0 006 \0 \0 \0 004 \0 \0 \0 \0 003 \0 \0 0047700 \0 003 \0 \0 \0 \0 001 \0 \0 \0 J \0 \0 \0 \0 003 0047720 \0 \0 \0 003 \0 \0 \0 \0 006 \0 \0 \0 031 \0 \0 \0 0047740 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 017 \0 \0 0047760 \0 \0 003 \0 \0 \0 \r \0 \0 \0 \0 006 \0 \0 \0 017 0050000 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 0050020 * \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 005 \0 \0 0050040 \0 025 \0 \0 \0 \0 001 \0 \0 \0 003 \0 \0 \0 \0 006 0050060 \0 \0 \0 001 \0 \0 \0 \0 001 \0 \0 \0 \t \0 \0 \0 0050100 \0 006 \0 \0 \0 002 \0 \0 \0 \0 001 \0 \0 \0 \t \0 0050120 \0 \0 \0 006 \0 \0 \0 002 \0 \0 \0 \0 001 \0 \0 \0 0050140 \0 \0 002 \0 003 \0 \0 \0 \f \0 \0 \0 \0 003 \0 \0 0050160 \0 004 \0 \0 \0 \0 001 \0 \0 \0 002 \0 \0 \0 \0 003 0050200 \0 \0 \0 004 \0 \0 \0 \0 001 \0 \0 \0 002 \0 \0 \0 0050220 \0 003 \0 \0 \0 004 \0 \0 \0 \0 001 \0 \0 \0 002 \0 0050240 \0 \0 \0 003 \0 \0 \0 003 \0 \0 \0 \0 001 \0 \0 \0 0050260 G \0 \0 \0 \0 003 \0 \0 \0 \r \0 \0 \0 \0 001 \0 0050300 \0 \0 002 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 005 0050320 \0 \0 \0 021 \0 \0 \0 \0 003 \0 \0 \0 \n \0 \0 \0 0050340 \0 006 \0 \0 \0 \f \0 \0 \0 \0 003 \0 \0 \0 \0 \0 0050360 002 \0 003 \0 \0 \0 024 \0 \0 \0 \0 003 \0 \0 \0 \t 0050400 \0 \0 \0 \0 006 \0 \0 \0 ] \0 \0 \0 \0 003 \0 \0 0050420 \0 A \0 \0 002 \0 003 \0 \0 \0 \v \0 \0 \0 \0 006 0050440 \0 \0 \0 305 \0 \0 \0 \0 003 \0 \0 \0 017 \0 \0 \0 0050460 \0 001 \0 \0 \0 025 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 0050500 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 001 \0 \0 \0 016 0050520 \0 \0 \0 \0 003 \0 \0 \0 001 \0 \0 \0 \0 001 \0 \0 0050540 \0 + \0 \0 \0 \0 006 \0 \0 \0 001 \0 \0 \0 \0 001 0050560 \0 \0 \0 \f \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 0050600 003 \0 \0 \0 035 \0 \0 \0 \0 003 \0 \0 \0 016 \0 \0 0050620 \0 \0 001 \0 \0 \0 026 \0 \0 \0 \0 003 \0 \0 \0 \n 0050640 \0 \0 \0 \0 006 \0 \0 \0 031 \0 \0 \0 \0 003 \0 \0 0050660 \0 006 \0 \0 \0 \0 001 \0 \0 \0 004 \0 \0 \0 \0 003 0050700 \0 \0 \0 003 \0 \0 \0 \0 001 \0 \0 \0 021 \0 \0 \0 0050720 \0 003 \0 \0 \0 006 \0 \0 \0 \0 001 \0 \0 \0 K \0 0050740 \0 \0 \0 003 \0 \0 \0 \n \0 \0 \0 \0 006 \0 \0 \0 0050760 004 \0 \0 \0 \0 003 \0 \0 \0 006 \0 \0 \0 \0 001 \0 0051000 \0 \0 h \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 005 0051020 \0 \0 \0 017 \0 \0 \0 \0 003 \0 \0 \0 022 \0 \0 \0 0051040 \0 006 \0 \0 \0 \r \0 \0 \0 \0 003 \0 \0 \0 \0 \0 0051060 002 \0 003 \0 \0 \0 022 \0 \0 \0 \0 003 \0 \0 \0 \t 0051100 \0 \0 \0 \0 006 \0 \0 \0 002 \0 \0 \0 \0 003 \0 \0 0051120 \0 \b \0 \0 \0 \0 006 \0 \0 \0 * \0 \0 \0 \0 003 0051140 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 e \0 \0 \0 \0 0051160 003 \0 \0 \0 017 \0 \0 \0 \0 001 \0 \0 \0 003 \0 \0 0051200 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 017 \0 0051220 \0 \0 \0 003 \0 \0 \0 \r \0 \0 \0 \0 006 \0 \0 \0 0051240 \r \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 0051260 \0 026 \0 \0 \0 \0 003 \0 \0 \0 003 \0 \0 \0 \0 006 0051300 \0 \0 \0 004 \0 \0 \0 \0 003 \0 \0 \0 \t \0 \0 \0 0051320 \0 006 \0 \0 \0 \v \0 \0 \0 \0 003 \0 \0 \0 001 \0 0051340 \0 \0 \0 001 \0 \0 \0 035 \0 \0 \0 \0 003 \0 \0 \0 0051360 003 \0 \0 \0 \0 001 \0 \0 \0 \f \0 \0 \0 \0 003 \0 0051400 \0 \0 \0 \0 002 \0 002 \0 \0 \0 020 \0 \0 \0 \0 003 0051420 \0 \0 \0 & \0 \0 \0 \0 006 \0 \0 \0 \r \0 \0 \0 0051440 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 024 \0 \0 0051460 \0 \0 003 \0 \0 \0 \t \0 \0 \0 \0 006 \0 \0 \0 033 0051500 \0 \0 \0 \0 003 \0 \0 \0 \t \0 \0 \0 \0 006 \0 \0 0051520 \0 024 \0 \0 \0 \0 003 \0 \0 \0 \v \0 \0 \0 \0 001 0051540 \0 \0 \0 X \0 \0 \0 \0 003 \0 \0 \0 016 \0 \0 \0 0051560 \0 001 \0 \0 \0 003 \0 \0 \0 \0 003 \0 \0 \0 \r \0 0051600 \0 \0 \0 001 \0 \0 \0 002 \0 \0 \0 \0 003 \0 \0 \0 0051620 \r \0 \0 \0 \0 001 \0 \0 \0 005 \0 \0 \0 \0 003 \0 0051640 \0 \0 004 \0 \0 \0 \0 001 \0 \0 \0 004 \0 \0 \0 \0 0051660 003 \0 \0 \0 \r \0 \0 \0 \0 001 \0 \0 \0 # \0 \0 0051700 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 021 \0 0051720 \0 \0 \0 003 \0 \0 \0 \t \0 \0 \0 \0 006 \0 \0 \0 0051740 \r \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 0051760 \0 ! \0 \0 \0 \0 003 \0 \0 \0 \t \0 \0 \0 \0 006 0052000 \0 \0 \0 002 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 0052020 002 \0 \0 \0 \r \0 \0 \0 \0 003 \0 \0 \0 006 \0 \0 0052040 \0 \0 006 \0 \0 \0 \r \0 \0 \0 \0 003 \0 \0 \0 \0 0052060 \0 002 \0 003 \0 \0 \0 \b \0 \0 \0 \0 003 \0 \0 \0 0052100 001 \0 \0 \0 \0 001 \0 \0 \0 004 \0 \0 \0 \0 003 \0 0052120 \0 \0 006 \0 \0 \0 \0 006 \0 \0 \0 021 \0 \0 \0 \0 0052140 003 \0 \0 \0 003 \0 \0 \0 \0 001 \0 \0 \0 \f \0 \0 0052160 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 \r \0 0052200 \0 \0 \0 001 \0 \0 \0 006 \0 \0 \0 \0 006 \0 \0 \0 0052220 001 \0 \0 \0 \0 001 \0 \0 \0 \a \0 \0 002 \0 003 \0 0052240 \0 \0 \t \0 \0 \0 \0 001 \0 \0 \0 \a \0 \0 \0 \0 0052260 006 \0 \0 \0 \v \0 \0 \0 \0 001 \0 \0 \0 001 \0 \0 0052300 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 \f \0 0052320 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 O 0052340 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 \a \0 \0 037 0052360 322 \0 001 \0 \f S K I O . G E T F N . 0052400 2 001 \0 024 \0 006 M O D E R N \0 \n \0 \0 0052420 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 \0 003 \0 0052440 \0 \0 \0 \0 002 \0 003 \0 \0 \0 205 \0 \0 \0 \0 003 0052460 \0 \0 \0 004 \0 \0 \0 \0 006 \0 \0 001 220 \0 \0 \0 0052500 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 \n \0 \0 0052520 \0 \0 002 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 272 \0 0052540 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 037 0052560 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 0052600 226 \0 \0 \0 \0 003 \0 \0 \0 017 \0 \0 \0 \0 001 \0 0052620 \0 \0 { \0 \0 \0 \0 003 \0 \0 \0 035 \0 \0 \0 \0 0052640 001 \0 \0 \0 + \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 0052660 \0 003 \0 \0 \0 $ \0 \0 \0 \0 003 \0 \0 \0 016 \0 0052700 \0 \0 \0 001 \0 \0 \0 267 \0 \0 \0 \0 003 \0 \0 \0 0052720 \0 \0 002 \0 002 \0 \0 \0 032 \0 \0 \0 \0 003 \0 \0 0052740 \0 \0 \0 002 \0 003 \0 \0 \0 356 \0 \0 \0 \0 003 \0 0052760 \0 \0 030 \0 \0 \0 \0 001 \0 \0 \0 ) \0 \0 \0 \0 0053000 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 = \0 \0 \0 0053020 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 245 \0 \0 0053040 \0 \0 003 \0 \0 \0 003 \0 \0 \0 \0 001 \0 \0 \0 002 0053060 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 0053100 m \0 \0 \0 \0 003 \0 \0 \0 004 \0 \0 \0 \0 001 \0 0053120 \0 \0 \r \0 \0 \0 \0 003 \0 \0 \0 016 \0 \0 \0 \0 0053140 001 \0 \0 \0 004 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 0053160 \0 003 \0 \0 \0 027 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 0053200 002 \0 003 \0 \0 \0 205 \0 \0 \0 \0 003 \0 \0 \0 005 0053220 \0 \0 \0 \0 001 \0 \0 \0 005 \0 \0 \0 \0 003 \0 \0 0053240 \0 004 \0 \0 \0 \0 001 \0 \0 \0 4 \0 \0 \0 \0 003 0053260 \0 \0 \0 \0 \0 002 \0 005 \0 \0 \0 034 \0 \0 \0 \0 0053300 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 \n \0 \0 \0 0053320 \0 003 \0 \0 \0 \r \0 \0 \0 \0 001 \0 \0 \0 026 \0 0053340 \0 \0 \0 003 \0 \0 \0 005 \0 \0 002 \0 003 \0 \0 \0 0053360 202 \0 \0 \0 \0 003 \0 \0 \0 032 \0 \0 \0 \0 001 \0 0053400 \0 \0 \r \0 \0 \0 \0 003 \0 \0 \0 \t \0 \0 \0 \0 0053420 001 \0 \0 \0 025 \0 \0 \0 \0 003 \0 \0 \0 \v \0 \0 0053440 \0 \0 001 \0 \0 \0 032 \0 \0 \0 \0 003 \0 \0 \0 016 0053460 \0 \0 \0 \0 001 \0 \0 \0 004 \0 \0 \0 \0 003 \0 \0 0053500 \0 003 \0 \0 \0 \0 001 \0 \0 \0 020 \0 \0 \0 \0 003 0053520 \0 \0 \0 004 \0 \0 \0 \0 001 \0 \0 \0 002 \0 \0 \0 0053540 \0 003 \0 \0 \0 \0 \0 002 \0 005 \0 \0 \0 035 \0 \0 0053560 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 036 \0 0053600 \0 \0 \0 003 \0 \0 \0 \r \0 \0 \0 \0 001 \0 \0 \0 0053620 305 \0 \0 \0 \0 003 \0 \0 \0 033 \0 \0 \0 \0 001 \0 0053640 \0 \0 \r \0 \0 \0 \0 003 \0 \0 \0 \t \0 \0 \0 \0 0053660 001 \0 \0 \0 025 \0 \0 \0 \0 003 \0 \0 \0 \v \0 \0 0053700 \0 \0 001 \0 \0 \0 024 \0 \0 \0 \0 003 \0 \0 \0 002 0053720 \0 \0 \0 \0 001 \0 \0 \0 004 \0 \0 \0 \0 003 \0 \0 0053740 \0 \f \0 \0 \0 \0 001 \0 \0 \0 026 \0 \0 \0 \0 003 0053760 \0 \0 \0 005 \0 \0 \0 \0 001 \0 \0 \0 002 \0 \0 \0 0054000 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 , \0 \0 0054020 \0 \0 003 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 ~ \0 0054040 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 205 0054060 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 0054100 ' \0 \0 \0 \0 001 \0 \0 \0 005 \0 \0 002 \0 003 \0 0054120 \0 \0 025 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 004 0054140 \0 \0 \0 > \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002 \0 0054160 004 \0 \0 \0 4 \0 \0 \0 \0 001 \0 \0 \0 \v \0 \0 0054200 002 \0 001 \0 \0 \0 002 \0 \0 002 \0 003 \0 \0 \0 002 0054220 \0 \0 002 \0 001 \0 \0 \0 025 \0 \0 \0 \0 001 \0 \0 0054240 \0 \0 \0 002 \0 004 \0 \0 \0 \t \0 \0 \0 \0 001 \0 0054260 \0 \0 005 \0 \0 002 \0 003 \0 \0 \0 \a \0 \0 \0 \0 0054300 001 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 032 \0 \0 \0 0054320 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 \n \0 \0 0054340 \0 \0 003 \0 \0 \0 \r \0 \0 \0 \0 001 \0 \0 \0 026 0054360 \0 \0 \0 \0 003 \0 \0 \0 005 \0 \0 002 \0 003 \0 \0 0054400 \0 ~ \0 \0 \0 \0 003 \0 \0 \0 032 \0 \0 \0 \0 001 0054420 \0 \0 \0 023 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 0054440 002 \0 \0 \0 033 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 0054460 \0 003 \0 \0 \0 036 \0 \0 \0 \0 003 \0 \0 \0 \r \0 0054500 \0 \0 \0 001 \0 \0 \0 305 \0 \0 \0 \0 003 \0 \0 \0 0054520 033 \0 \0 \0 \0 001 \0 \0 \0 023 \0 \0 \0 \0 003 \0 0054540 \0 \0 \0 \0 002 \0 003 \0 \0 001 ! \0 \0 \0 \0 003 0054560 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 364 \0 \0 \0 \0 0054600 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 035 \0 \0 \0 0054620 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 q \0 \0 0054640 \0 \0 003 \0 \0 \0 005 \0 \0 \0 \0 001 \0 \0 \0 002 0054660 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 005 \0 \0 \0 0054700 032 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 0054720 \0 o \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 \a \0 0054740 \0 \0 9 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 0054760 \0 \0 \0 \f \0 \0 \0 \0 003 \0 \0 \0 \v \0 \0 \0 0055000 \0 001 \0 \0 \0 004 \0 \0 \0 \0 003 \0 \0 \0 026 \0 0055020 \0 \0 \0 001 \0 \0 001 < \0 \0 \0 \0 003 \0 \0 \0 0055040 \0 \0 002 \0 003 \0 \0 \0 227 \0 \0 \0 \0 003 \0 \0 0055060 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 003 \0 0055100 \0 \0 \f \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 003 0055120 \0 \0 \0 237 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 0055140 003 \0 \0 \0 214 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 0055160 \0 001 \0 \0 \0 006 \0 \0 \0 \0 002 \0 \0 \0 001 \0 0055200 \0 \0 \0 003 \0 \0 \0 035 \0 \0 \0 \0 002 \0 \0 \0 0055220 001 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 006 \0 \0 0055240 \0 002 \0 001 \0 \v H R U L E . G E T F 0055260 N 001 \0 024 \0 006 M O D E R N \0 \n \0 \0 0055300 \0 \0 \0 \0 \0 \0 \0 \0 \0 K \0 \0 \0 \0 003 \0 0055320 \0 \0 \0 \0 002 \0 003 \0 \0 \0 . \0 \0 \0 \0 003 0055340 \0 \0 \0 024 \0 \0 \0 \0 001 \0 \0 \0 002 \0 \0 \0 0055360 \0 003 \0 \0 \0 \0 \0 002 \0 003 \0 \0 E \v 001 ~ 0055400 z 272 0055402