$ 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