$ od -c -N 50000 [Pixel]<IFS>IfsScavenger.dm!1
0000000  377  \0  \0   I   f   s   S   c   a   v   e   n   g   e   r   .
0000020    d   e   c   l  \0 373 231   p   l   A  \0  \0 376 001  \0 371
0000040  271   /   /       I   f   s   S   c   a   v   e   n   g   e   r
0000060    .   d   e   c   l  \r   /   /       C   o   p   y   r   i   g
0000100    h   t       X   e   r   o   x       C   o   r   p   o   r   a
0000120    t   i   o   n       1   9   7   9   ,       1   9   8   2  \r
0000140    /   /       L   a   s   t       m   o   d   i   f   i   e   d
0000160        J   u   l   y       2   9   ,       1   9   8   2        
0000200    3   :   0   9       P   M       b   y       B   o   g   g   s
0000220   \r  \r   g   e   t       "   I   f   s   F   i   l   e   s   .
0000240    d   e   c   l   "  \r  \r   m   a   n   i   f   e   s   t  \r
0000260    [  \r   /   /       p   a   g   e       t   y   p   e   s    
0000300    r   e   c   o   r   d   e   d       i   n       a       P   L
0000320    M   E  \r   p   t   G   o   o   d       =       1  \r   p   t
0000340    B   a   d       =       2  \r   p   t   F   r   e   e       =
0000360        3  \r   p   t   I   n   c   o   r   r       =       4  \r
0000400   \r   /   /       l   p   t   e       f   l   a   g   s  \r   l
0000420    f   R   e   w   r   i   t   e       =       1  \r   l   f   D
0000440    I 376 001  \0 315 240   F       =       2  \r   l   f   D   a
0000460    m   a   g   e   d       =       4  \r   /   /       u   n   u
0000500    s   e   d       =       8  \r  \r   /   /       e   r   r   o
0000520    r       c   o   d   e   s  \r   e   c   S   c   r   a   t   c
0000540    h   F   i   l   e       =       5   0   0  \r   e   c   C   r
0000560    e   a   t   e   D   i   s   k   S   t   r   e   a   m       =
0000600        5   0   4  \r   e   c   S   c   a   v   e   n   g   e   e
0000620    F   i   l   e       =       5   0   6  \r   ]  \r  \r   /   /
0000640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0000740    -   -   -   -   -   -   -   -   -   -   -   -  \r   s   t   r
0000760    u   c   t   u   r   e       P   L   M   E   :  \t  \t   /   /
0001000        P   a   g   e       L   i   n   k       M   a   p       E
0001020    n   t   r   y  \r   /   /   -   -   -   -   -   -   -   -   -
0001040    -   -   -   -   -   - 376 001  \0 262   O   -   -   -   -   -
0001060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001140    -   -   -   -   -   -   -   -  \r   [  \r   f   i   l   e   I
0001160    d       w   o   r   d       =  \r               [  \r        
0001200        s   n   1       w   o   r   d  \r               s   n   2
0001220        w   o   r   d  \r               v   n       w   o   r   d
0001240   \r               ]  \r   p   n       w   o   r   d  \r   n   e
0001260    x   t   P       w   o   r   d  \t  \t   /   /       v   d   a
0001300   \r   b   a   c   k   P       w   o   r   d  \t  \t   /   /    
0001320    v   d   a  \r   n   u   m   C   h   a   r   s       w   o   r
0001340    d  \t  \t   /   /       0   .   .   .   T   F   S   w   o   r
0001360    d   s   P   e   r   P   a   g   e   *   2       -   1  \r   t
0001400    y   p   e       b   y   t   e  \t  \t   /   /       g   o   o
0001420    d   ,       b   a   d   ,       f   r   e   e   ,       i   n
0001440    c   o   r   r   i   g   a   b   l   e  \r 376 001  \0 367   q
0001460    r   e   w   r   i   t   e       b   i   t  \r   a   c   c   e
0001500    s   s   i   b   l   e       b   i   t  \r   b   l   a   n   k
0001520        b   i   t       6  \r   ]  \r   m   a   n   i   f   e   s
0001540    t       l   e   n   P   L   M   E       =       8  \t   /   /
0001560        m   u   s   t       b   e       8  \r  \r   /   /   -   -
0001600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0001700    -   -   -   -   -   -   -   -   -   -  \r   s   t   r   u   c
0001720    t   u   r   e       S   t   r   i   n   g       [       l   e
0001740    n   g   t   h       b   y   t   e   ;       c   h   a   r   ^
0001760    1   ,   2   5   5       b   y   t   e       ]  \r   /   /   -
0002000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0002060  376  \0 035   x   s   -   -   -   -   -   -   -   -   -   -   -
0002100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0002120   \r  \r 377  \0  \0   I   f   s   S   c   a   v   I   n   i   t
0002140    .   b   c   p   l  \0 373 233 031   D  \r  \0  \0 376 001  \0
0002160   \r 374   /   /       I   F   S   S   c   a   v   I   n   i   t
0002200    .   b   c   p   l       -   -       S   c   a   v   e   n   g
0002220    e   r       i   n   i   t   i   a   l   i   z   a   t   i   o
0002240    n  \r   /   /       C   o   p   y   r   i   g   h   t       X
0002260    e   r   o   x       C   o   r   p   o   r   a   t   i   o   n
0002300        1   9   7   9   ,       1   9   8   0   ,       1   9   8
0002320    1   ,       1   9   8   3  \r   /   /       L   a   s   t    
0002340    m   o   d   i   f   i   e   d       J   u   n   e       1   6
0002360    ,       1   9   8   3           9   :   1   8       P   M    
0002400    b   y       B   o   g   g   s  \r  \r   g   e   t       "   A
0002420    l   t   o   D   e   f   s   .   d   "  \r   g   e   t       "
0002440    S   t   r   e   a   m   s   .   d   "  \r   g   e   t       "
0002460    I   f   s   F   i   l   e   s   .   d   e   c   l   "  \r   g
0002500    e   t       "   I   F   S   .   d   e   c   l   "  \r   g   e
0002520    t       "   I   f   s   V   m   e   m   .   d   e   c   l   "
0002540   \r   g   e   t       "   S   y   s   D   e   f   s   .   d   "
0002560   \r   g 376 001  \0  \n 204   e   t       "   I   f   s   I   n
0002600    i   t   .   d   e   c   l   "  \r  \r   e   x   t   e   r   n
0002620    a   l  \r   [  \r   /   /       o   u   t   g   o   i   n   g
0002640        p   r   o   c   e   d   u   r   e   s  \r   I   n   i   t
0002660    I   F   S   P   a   r   t   1   ;       I   n   i   t   I   F
0002700    S   P   a   r   t   2   ;       I   n   i   t   I   F   S   P
0002720    a   r   t   3  \r   I   F   S   F   i   n   i   s   h  \r  \r
0002740    /   /       i   n   c   o   m   i   n   g       p   r   o   c
0002760    e   d   u   r   e   s  \r   J   u   n   t   a   ;       I   F
0003000    S   A   f   t   e   r   J   u   n   t   a   ;       M   y   F
0003020    r   a   m   e   ;       C   a   l   l   e   r   s   F   r   a
0003040    m   e  \r   Z   e   r   o   ;       M   o   v   e   B   l   o
0003060    c   k   ;       S   e   t   B   l   o   c   k  \r   L   o   a
0003100    d   R   a   m   ;       I   d   l   e   ;       I   F   S   I
0003120    d   l   e   ;       I   f   s   R   a   m   I   m   a   g   e
0003140    ;       I   n   i   t   B   c   p   l   R   u   n   t   i   m
0003160    e  \r   I   n   i   t   O 376 001  \0 226 352   v   e   r   l
0003200    a   y   s   ;       F   i   x   u   p   S   w   a   p   p   e
0003220    d   O   u   t   ;       C   a   l   l   P   r   o   c   P   r
0003240    o   c   e   s   s  \r   I   n   i   t   V   M   e   m   ;    
0003260    A   d   d   B   u   f   f   e   r   s   ;       I   n   i   t
0003300    X   M   O   v   e   r   l   a   y   s   ;       I   n   i   t
0003320    D   i   s   k   s   F   i   n   i   s   h  \r   I   n   i   t
0003340    i   a   l   i   z   e   Z   o   n   e   ;       A   l   l   o
0003360    c   a   t   e   ;       F   r   e   e   ;       A   d   d   T
0003400    o   Z   o   n   e   ;       I   F   S   A   d   d   T   o   Z
0003420    o   n   e  \r   I   F   S   A   l   l   o   c   a   t   e   ;
0003440        I   F   S   F   r   e   e   ;       I   F   S   E   r   r
0003460    o   r   ;       S   y   s   E   r   r   ;       C   a   l   l
0003500    S   w   a   t  \r   P   u   t   T   e   m   p   l   a   t   e
0003520    ;       I   n   i   t   C   o   n   t   e   x   t   S   c   h
0003540    e   d  \r   S   e   t   W   o   r   k   i   n   g   D   i   r
0003560    ;       O   p   e   n   F   i   l   e   ;     376 001  \0 351
0003600  270   R   e   a   d   B   l   o   c   k   ;       P   o   s   i
0003620    t   i   o   n   P   a   g   e   ;       G   e   t   C   u   r
0003640    r   e   n   t   F   a  \r   S   p   l   i   t   P   u   t   s
0003660    ;       L   o   g   E   r   r   o   r   s   ;       E   n   d
0003700    o   f   s   ;       C   l   o   s   e   s   ;       R   e   s
0003720    e   t   s  \r   C   r   e   a   t   e   K   e   y   b   o   a
0003740    r   d   S   t   r   e   a   m   ;       S   h   o   w   D   i
0003760    s   p   l   a   y   S   t   r   e   a   m   ;       C   r   e
0004000    a   t   e   D   i   s   p   l   a   y   S   t   r   e   a   m
0004020   \r   I   F   S   C   r   e   a   t   e   D   D   M   g   r   ;
0004040        B   F   S   C   r   e   a   t   e   D   D   M   g   r   ;
0004060        E   n   q   u   e   u   e   ;       I   n   i   t   i   a
0004100    l   i   z   e   C   o   n   t   e   x   t  \r   B   F   S   W
0004120    r   i   t   e   D   i   s   k   D   e   s   c   r   i   p   t
0004140    o   r   ;       B   F   S   W   r   i   t   e   P   a   g   e
0004160    s   ;       E   x   t   r   a   c   t   S   u   b   s   t   r
0004200    i 376 001  \0 243   H   n   g  \r   I   f   s   S   c   a   v
0004220    e   n   g   e   r   ;       S   c   a   v   N   o   B   u   f
0004240    s   P   r   o   c   ;       I   f   s   N   o   B   u   f   s
0004260    P   r   o   c  \r   T   F   S   S   i   l   e   n   t   B   o
0004300    o   t   ;       T   F   S   S   w   a   t   P   r   o   c   ;
0004320        B   F   S   I   n   i   t   ;       C   l   o   s   e   D
0004340    i   s   k  \r  \r   /   /       o   u   t   g   o   i   n   g
0004360        s   t   a   t   i   c   s  \r   i   s   b   ;       i   f
0004400    s   C   t   x   Q   ;       n   u   m   V   M   e   m   B   u
0004420    f   s  \r   b   f   s   D   D   M   g   r   ;       t   f   s
0004440    D   D   M   g   r  \r  \r   /   /       i   n   c   o   m   i
0004460    n   g       s   t   a   t   i   c   s  \r   C   u   r   s   o
0004500    r   L   i   n   k   ;       s   n   a   r   f   T   a   b   l
0004520    e   ;       o   P   a   g   e   Q   ;       c   h   u   n   k
0004540    Q   ;       d   o   n   t   S   n   a   r   f  \r   b   i   g
0004560    Z   o   n   e   ;       s   m   a   l   l   Z   o   n   e   ;
0004600        s   y   s   Z   o 376 001  \0 347 314   n   e   ;       l
0004620    v   S   y   s   Z   o   n   e   ;       l   e   n   F   M   a
0004640    p  \r   l   v   U   s   e   r   F   i   n   i   s   h   P   r
0004660    o   c   ;       l   v   S   w   a   t   C   o   n   t   e   x
0004700    t   P   r   o   c  \r   s   c   r   a   t   c   h   D   i   s
0004720    k   ;       s   c   a   v   D   i   s   k   ;       s   y   s
0004740    D   i   s   k   ;       d   s   p   ;       O   s   V   e   r
0004760    s   i   o   n   ;       d   e   b   u   g   F   l   a   g  \r
0005000    A   l   t   o   V   e   r   s   i   o   n   ;       m   o   n
0005020    t   h   N   a   m   e   s  \r   ]  \r  \r   s   t   a   t   i
0005040    c  \r   [  \r   b   f   s   D   D   M   g   r   ;       t   f
0005060    s   D   D   M   g   r   ;       i   f   s   C   t   x   Q  \r
0005100    n   u   m   V   M   e   m   B   u   f   s       =       0  \r
0005120    s   a   v   e   d   U   F   P  \r   s   p   y   B   u   f   f
0005140    e   r       =       3   2   0   0   b           /   /   s   t
0005160    o   r   a   g   e       n   e   e   d   e   d       f   o   r
0005200        s   p   y       b   u   f   f   e   r 376 001  \0   ? 217
0005220        (   c   h   a   n   g   e   s       o   v   e   r       t
0005240    i   m   e   )  \r   i   s   b  \r   ]  \r  \r   m   a   n   i
0005260    f   e   s   t  \r   [  \r   s   t   a   c   k   L   i   m   i
0005300    t       =       3   3   5   b  \r  \r   l   e   n   D   s   p
0005320        =       2   *   1   0   2   4  \r   l   e   n   S   c   a
0005340    v   S   t   a   c   k       =       3   *   1   0   2   4  \r
0005360    l   e   n   I   n   i   t   S   t   a   c   k       =       2
0005400    *   1   0   2   4  \r   l   e   n   C   a   l   l   P   r   o
0005420    c   S   t   a   c   k       =       1   0   2   4  \r  \r   e
0005440    c   B   a   d   L   o   a   d   R   a   m       =       1   6
0005460   \r   e   c   O   s   V   e   r   s   i   o   n       =       5
0005500   \r   e   c   N   u   m   V   M   e   m   B   u   f   s       =
0005520        3  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -
0005540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0005620  376 001  \0 340   3   -   -   -   -   -   -   -   -   -   -   -
0005640    -   -   -   -   -   -   -   -   -   -  \r   l   e   t       I
0005660    n   i   t   I   F   S   P   a   r   t   1   (   l   a   y   o
0005700    u   t   V   e   c   t   o   r   ,       u   s   e   r   P   a
0005720    r   a   m   s   ,       c   f   a   I   F   S   R   u   n   )
0005740        b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -
0005760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0006060    -   -  \r   /   /   T   h   i   s       p   r   o   c   e   d
0006100    u   r   e   s       i   s       c   a   l   l   e   d       w
0006120    i   t   h       t   h   e       f   u   l   l       O   S    
0006140    i   n       c   o   r   e   ,       a   n   d       d   o   e
0006160    s  \r   /   /       i   n   i   t   i   a   l   i   z   a   t
0006200    i   o   n       r   e   q   u   i   r   i   n   g       t   h
0006220    e       B   F   S 376 001  \0 254 310       a   n   d       o
0006240    t   h   e   r       O   S       m   o   d   u   l   e   s    
0006260    w   h   i   c   h  \r   /   /       a   r   e       n   o   t
0006300        n   e   e   d   e   d       o   n   c   e       w   e    
0006320    g   e   t       g   o   i   n   g   .  \r   [  \r   /   /    
0006340    P   a   t   c   h       i   n       o   v   e   r   l   a   y
0006360        n   u   m   b   e   r   s       o   f       o   v   e   r
0006400    l   a   y   s       t   o       b   e       p   i   n   n   e
0006420    d       i   n       m   e   m   o   r   y  \r   l   e   t    
0006440    p   i   n   n   e   d   O   v   e   r   l   a   y   s       =
0006460        t   a   b   l   e       [       0   ;       0   ;       0
0006500    ;       0   ;       0   ;       0   ;       0   ;       0   ;
0006520        0   ;       0       ]  \r   c   o   m   p   i   l   e   i
0006540    f       s   i   z   e       I   S   B   .   p   i   n   n   e
0006560    d   O   v   e   r   l   a   y   s   /   1   6       n   e    
0006600    1   0       t   h   e   n       [       f   o   o       =    
0006620    n   i   l       ]  \r  \r   i   f     376 001  \0 212   9   O
0006640    s   V   e   r   s   i   o   n       l   s       1   7       t
0006660    h   e   n       I   F   S   E   r   r   o   r   (   e   c   O
0006700    s   V   e   r   s   i   o   n   ,       1   7   )  \r  \r   /
0006720    /       C   r   e   a   t   e       a       l   o   c   a   l
0006740        I   n   i   t   i   a   l   i   z   a   t   i   o   n    
0006760    S   t   o   r   a   g   e       B   l   o   c   k   .  \r   /
0007000    /       I   t       w   i   l   l       b   e       c   o   p
0007020    i   e   d       i   n   t   o       a       b   l   o   c   k
0007040        p   o   i   n   t   e   d       t   o       b   y       t
0007060    h   e       i   s   b       s   t   a   t   i   c       o   n
0007100    c   e  \r   /   /           t   h   e       a   l   l   o   c
0007120    a   t   o   r       h   a   s       b   e   e   n       s   e
0007140    t       u   p   .  \r   /   /       I   n   s   t   a   l   l
0007160        z   o   n   e       s   i   z   e       c   o   n   s   t
0007200    a   n   t   s       n   o   w       s   o       t   h   e   y
0007220        w   i   l   l       b   e       e   a   s   y       t 376
0007240  001  \0 272 027   o       p   a   t   c   h   .  \r   l   e   t
0007260        l   i   s   b       =       v   e   c       l   e   n   I
0007300    S   B   ;       Z   e   r   o   (   l   i   s   b   ,       l
0007320    e   n   I   S   B   )  \r   l   i   s   b   >   >   I   S   B
0007340    .   l   e   n   B   i   g   Z   o   n   e       =       1   0
0007360    *   1   0   2   4  \r   l   i   s   b   >   >   I   S   B   .
0007400    b   i   g   Z   o   n   e   I   n   c   r       =       0  \r
0007420    l   i   s   b   >   >   I   S   B   .   l   e   n   S   m   a
0007440    l   l   Z   o   n   e       =       2   *   1   0   2   4  \r
0007460    l   i   s   b   >   >   I   S   B   .   s   m   a   l   l   Z
0007500    o   n   e   I   n   c   r       =       0  \r   M   o   v   e
0007520    B   l   o   c   k   (   l   v       l   i   s   b   >   >   I
0007540    S   B   .   p   i   n   n   e   d   O   v   e   r   l   a   y
0007560    s   ,       p   i   n   n   e   d   O   v   e   r   l   a   y
0007600    s   ,  \r       s   i   z   e       I   S   B   .   p   i   n
0007620    n   e   d   O   v   e   r   l   a   y   s   /   1   6   )  \r
0007640   \r   /   /     376 001  \0 036 356   F   i   r   s   t   ,    
0007660    p   a   t   c   h       t   h   e       r   u   n   t   i   m
0007700    e       e   n   v   i   r   o   n   m   e   n   t       i   n
0007720        v   a   r   i   o   u   s       w   a   y   s  \r   l   e
0007740    t       t       =       A   d   d   T   o   Z   o   n   e   ;
0007760        A   d   d   T   o   Z   o   n   e       =       I   F   S
0010000    A   d   d   T   o   Z   o   n   e   ;       I   F   S   A   d
0010020    d   T   o   Z   o   n   e       =       t  \r   C   u   r   s
0010040    o   r   L   i   n   k       =       0           /   /       u
0010060    n   l   i   n   k       c   u   r   s   o   r       f   r   o
0010100    m       m   o   u   s   e  \r   I   d   l   e       =       I
0010120    F   S   I   d   l   e           /   /       i   n   s   t   a
0010140    l   l       o   u   r       o   w   n       I   d   l   e    
0010160    p   r   o   c   e   d   u   r   e       f   o   r       T   F
0010200    S  \r   @   l   v   S   w   a   t   C   o   n   t   e   x   t
0010220    P   r   o   c       =       T   F   S   S   w   a   t   P   r
0010240    o   c  \r  \r   /   /       P   u 376 001  \0 214 320   t    
0010260    a   n       h   o   u   r   g   l   a   s   s       i   n    
0010300    t   h   e       c   u   r   s   o   r  \r   M   o   v   e   B
0010320    l   o   c   k   (   c   u   r   s   o   r   B   i   t   M   a
0010340    p   ,       t   a   b   l   e  \r               [  \r        
0010360        3   7   7   7   6   b   ;       2   0   0   0   2   b   ;
0010400        3   4   0   1   6   b   ;       1   7   0   7   4   b   ;
0010420        7   5   7   0   b   ;       3   7   6   0   b   ;       1
0010440    7   4   0   b   ;       7   0   0   b  \r               1   7
0010460    4   0   b   ;       3   2   6   0   b   ;       6   2   3   0
0010500    b   ;       1   4   7   1   4   b   ;       3   1   7   4   6
0010520    b   ;       2   3   7   6   2   b   ;       3   7   7   7   6
0010540    b   ;       0  \r               ]   ,       1   6   )  \r  \r
0010560    /   /       L   o   a   d       t   h   e       R   a   m    
0010600    w   i   t   h       I   F   S       m   i   c   r   o   c   o
0010620    d   e  \r   /   /       F   i   r   s   t   ,       c   h   a
0010640    n   g   e       a   l   l       t   h   e       X   M 376 001
0010660   \0 324 004   A   R   _   s       t   o       M   A   R   _   s
0010700        i   f       r   u   n   n   i   n   g       o   n       a
0010720        n   o   n   -   X   M       A   l   t   o  \r   i   f    
0010740    A   l   t   o   V   e   r   s   i   o   n   <   <   V   E   R
0010760    S   .   e   n   g       n   e       3       t   h   e   n    
0011000        /   /       a   n       X   M       A   l   t   o       i
0011020    s       a   n       "   A   l   t   o       3   "  \r        
0011040        [  \r               s   t   r   u   c   t   u   r   e    
0011060    U   I   n   s   t   :           /   /       A   l   t   o    
0011100    m   i   c   r   o   i   n   s   t   r   u   c   t   i   o   n
0011120   \r                           [  \r                           R
0011140    S   E   L       b   i   t       5   ;       A   L   U   F    
0011160    b   i   t       4   ;       B   S       b   i   t       3   ;
0011200        F   1       b   i   t       4   ;  \r                    
0011220        F   2       b   i   t       4   ;       L   O   A   D   T
0011240        b   i   t       1   ;       L   O   A   D   L       b   i
0011260    t       1 376 001  \0 373   Q   ;       N   E   X   T       b
0011300    i   t       1   0   ;  \r                           ]  \r    
0011320            f   o   r       i       =       0       t   o       1
0011340    7   7   7   b       d   o  \r                           [    
0011360    /   /       X   M   A   R   _       i   s       F   1   =   1
0011400    ,       f   2   =   6   ,       b   u   t       h   i   g   h
0011420    -   o   r   d   e   r       b   i   t   s       o   f       f
0011440    1   /   f   2       a   r   e       c   o   m   p   l   e   m
0011460    e   n   t   e   d  \r                           l   e   t    
0011500    u   I   n   s   t       =       I   f   s   R   a   m   I   m
0011520    a   g   e       +       4   0   0   b       +   2   *   i  \r
0011540                            i   f       u   I   n   s   t   >   >
0011560    U   I   n   s   t   .   F   1       e   q       1   1   b    
0011600    &       u   I   n   s   t   >   >   U   I   n   s   t   .   F
0011620    2       e   q       1   6   b       t   h   e   n  \r        
0011640                                u   I   n   s   t   >   >   U   I
0011660    n   s   t   .   F   2       = 376 001  \0  \r 035       1   0
0011700    b  \r                           ]  \r               ]  \r   l
0011720    e   t       r   a   m       =       L   o   a   d   R   a   m
0011740    (   I   f   s   R   a   m   I   m   a   g   e   ,       t   r
0011760    u   e   )           /   /       s   i   l   e   n   t       b
0012000    o   o   t  \r   i   f       r   a   m       n   e       0    
0012020    t   h   e   n       I   F   S   E   r   r   o   r   (   e   c
0012040    B   a   d   L   o   a   d   R   a   m   ,       r   a   m   )
0012060   \r  \r   /   /       N   o   w       t   h   r   o   w       a
0012100    w   a   y       L   o   a   d   R   a   m       a   n   d    
0012120    m   i   c   r   o   c   o   d   e   .  \r   /   /       S   i
0012140    n   c   e       t   h   e       r   e   l   o   c   a   t   i
0012160    o   n       t   a   b   l   e       i   s       a   b   o   v
0012200    e       t   h   i   s   ,       w   e       m   u   s   t    
0012220    s   l   i   d   e       i   t       d   o   w   n   .  \r   /
0012240    /       W   h   i   l   e       d   o   i   n   g       s   o
0012260    ,       c   o   m   p   r   e   s   s       i   t 376 001  \0
0012300  004 023       t   o       1       w   o   r   d   /   e   n   t
0012320    r   y   .  \r   l   e   t       r   e   l   o   c   T   a   b
0012340    l   e       =       l   a   y   o   u   t   V   e   c   t   o
0012360    r   !   3   1  \r   L   o   a   d   R   a   m   !   0       =
0012400        r   e   l   o   c   T   a   b   l   e   !   0  \r   f   o
0012420    r       i       =       1       t   o       r   e   l   o   c
0012440    T   a   b   l   e   !   0       d   o       L   o   a   d   R
0012460    a   m   !   i       =       r   e   l   o   c   T   a   b   l
0012500    e   !   (   2   *   i   -   1   )  \r   l   i   s   b   >   >
0012520    I   S   B   .   r   e   l   o   c   T   a   b   l   e       =
0012540        L   o   a   d   R   a   m  \r   @   s   t   a   c   k   L
0012560    i   m   i   t       =       L   o   a   d   R   a   m   +   L
0012600    o   a   d   R   a   m   !   0   +   1  \r   l   i   s   b   >
0012620    >   I   S   B   .   p   c   X       =       l   a   y   o   u
0012640    t   V   e   c   t   o   r   !   (   $   X   -   $   A   )    
0012660        /   /       B   l   d   r       "   X   /   Q   "  \r   l
0012700    i   s 376 001  \0   c 344   b   >   >   I   S   B   .   p   c
0012720    I       =       l   a   y   o   u   t   V   e   c   t   o   r
0012740    !   (   $   I   -   $   A   )           /   /       B   l   d
0012760    r       "   I   /   Q   "  \r  \f  \r   /   /       I   n   i
0013000    t   I   F   S   P   a   r   t   1       (   c   o   n   t   '
0013020    d   )  \r  \r   /   /       S   e   t       u   p       a   c
0013040    c   e   s   s       t   o       r   e   s   i   d   e   n   t
0013060        i   n   s   t   a   n   c   e   s       o   f       O   S
0013100        p   r   o   c   e   d   u   r   e   s       a   l   s   o
0013120        i   n       o   v   e   r   l   a   y   s   .  \r   /   /
0013140        A   l   l       p   r   o   c   e   d   u   r   e   s    
0013160    t   h   a   t       a   r   e       i   n       D   i   r   s
0013200    ,       D   i   s   k   S   t   r   e   a   m   s   ,       D
0013220    i   s   k   S   t   r   e   a   m   s   M   a   i   n   ,    
0013240    a   n   d  \r   /   /       D   i   s   k   S   t   r   e   a
0013260    m   s   A   u   x       a   n   d       t   h   a   t       a
0013300    r   e       e   x   t   e 376 001  \0 362 371   r   n   a   l
0013320    l   y       c   a   l   l   e   d       d   u   r   i   n   g
0013340        I   n   i   t   I   F   S   P   a   r   t   1  \r   /   /
0013360        m   u   s   t       b   e       e   n   u   m   e   r   a
0013400    t   e   d       h   e   r   e   .           O   f   f   s   e
0013420    t   s       a   r   e       t   a   k   e   n       f   r   o
0013440    m       S   y   s   .   b   k   .  \r   l   e   t       m   a
0013460    i   n   S   t   a   t   i   c   s       =       l   v   S   y
0013500    s   Z   o   n   e       -       2   2   1   B           /   /
0013520    e   n   t   r   y       0       o   f       m   a   i   n    
0013540    s   t   a   t   i   c   s       v   e   c   t   o   r  \r   S
0013560    e   t   W   o   r   k   i   n   g   D   i   r       =       m
0013600    a   i   n   S   t   a   t   i   c   s   !   5   3   b  \r   O
0013620    p   e   n   F   i   l   e       =       m   a   i   n   S   t
0013640    a   t   i   c   s   !   5   6   b  \r   R   e   a   d   B   l
0013660    o   c   k       =       m   a   i   n   S   t   a   t   i   c
0013700    s   !   7   7   b  \r   P   o   s   i   t   i 376 001  \0 325
0013720  334   o   n   P   a   g   e       =       m   a   i   n   S   t
0013740    a   t   i   c   s   !   1   0   1   b  \r   G   e   t   C   u
0013760    r   r   e   n   t   F   a       =       m   a   i   n   S   t
0014000    a   t   i   c   s   !   1   0   4   b  \r   B   F   S   C   r
0014020    e   a   t   e   D   D   M   g   r       =       m   a   i   n
0014040    S   t   a   t   i   c   s   !   2   3   4   b  \r   B   F   S
0014060    W   r   i   t   e   D   i   s   k   D   e   s   c   r   i   p
0014100    t   o   r       =       m   a   i   n   S   t   a   t   i   c
0014120    s   !   2   3   3   b  \r   B   F   S   W   r   i   t   e   P
0014140    a   g   e   s       =       m   a   i   n   S   t   a   t   i
0014160    c   s   !   2   5   4   b  \r  \r   /   /       I   n   t   e
0014200    r   p   r   e   t       a   n   y       g   l   o   b   a   l
0014220        s   w   i   t   c   h   e   s       p   a   s   s   e   d
0014240        t   o       u   s       b   y       t   h   e       E   x
0014260    e   c   u   t   i   v   e  \r   l   i   s   b   >   >   I   S
0014300    B   .   m   a   x   B   a   n   k   s   X   M       =       0
0014320      376 001  \0 236 033       /   /   t   e   m   p   o   r   a
0014340    r   i   l   y  \r   l   e   t       a   l   l   o   c   a   t
0014360    o   r   D   e   b   u   g       =       f   a   l   s   e  \r
0014400    l   e   t       a   l   l   o   c   a   t   e   S   p   y   B
0014420    u   f   f   e   r       =       f   a   l   s   e  \r   l   e
0014440    n   F   M   a   p       =       5   0   0           /   /   d
0014460    o   n   '   t       s   c   r   e   w       a   r   o   u   n
0014500    d   !  \r   w   h   i   l   e       u   s   e   r   P   a   r
0014520    a   m   s   !   0       n   e       0       d   o  \r        
0014540        [  \r               i   f       u   s   e   r   P   a   r
0014560    a   m   s   >   >   U   P   E   .   t   y   p   e       e   q
0014600        g   l   o   b   a   l   S   w   i   t   c   h   e   s    
0014620    t   h   e   n  \r                           [  \r            
0014640                l   e   t       v   a   l       =       t   r   u
0014660    e  \r                           f   o   r       i       =    
0014700    1       t   o       u   s   e   r   P   a   r   a   m   s   >
0014720    >   U   P   E   .   l 376 001  \0 333   >   e   n   g   t   h
0014740    -   1       d   o  \r                                       [
0014760   \r                                       s   w   i   t   c   h
0015000    o   n       u   s   e   r   P   a   r   a   m   s   !   i    
0015020    i   n   t   o  \r                                            
0015040        [  \r                                                   c
0015060    a   s   e       $   -   :  \r                                
0015100                                v   a   l       =       n   o   t
0015120        v   a   l   ;       l   o   o   p  \r                    
0015140                                c   a   s   e       $   D   :    
0015160    c   a   s   e       $   d   :  \r                            
0015200                                    d   e   b   u   g   F   l   a
0015220    g       =       v   a   l   ;       e   n   d   c   a   s   e
0015240   \r                                                   c   a   s
0015260    e       $   A   :       c   a   s   e       $   a   :  \r    
0015300                                                            a   l
0015320    l   o   c   a   t   o   r   D   e   b   u 376 001  \0   + 221
0015340    g       =       v   a   l   ;       e   n   d   c   a   s   e
0015360   \r                                                   c   a   s
0015400    e       $   S   :       c   a   s   e       $   s   :  \r    
0015420                                                            a   l
0015440    l   o   c   a   t   e   S   p   y   B   u   f   f   e   r    
0015460    =       v   a   l   ;       e   n   d   c   a   s   e  \r    
0015500                                                c   a   s   e    
0015520    $   X   :       c   a   s   e       $   x   :  \r            
0015540                                                    u   n   l   e
0015560    s   s       v   a   l       d   o       l   i   s   b   >   >
0015600    I   S   B   .   m   a   x   B   a   n   k   s   X   M       =
0015620        0   ;       e   n   d   c   a   s   e  \r                
0015640                                    c   a   s   e       $   F   :
0015660        c   a   s   e       $   f   :  \r                        
0015700                                        l   e   n   F   M   a   p
0015720        =       l   e   n   F   M   a   p   +   1   0   0   ;    
0015740  376 001  \0 004 006   e   n   d   c   a   s   e  \r            
0015760                                        c   a   s   e       $   1
0016000        t   o       $   4   :  \r                                
0016020                                l   i   s   b   >   >   I   S   B
0016040    .   m   a   x   B   a   n   k   s   X   M       =       u   s
0016060    e   r   P   a   r   a   m   s   !   i   -   $   0   ;       e
0016100    n   d   c   a   s   e  \r                                    
0016120                d   e   f   a   u   l   t   :  \r                
0016140                                                P   u   t   T   e
0016160    m   p   l   a   t   e   (   d   s   p   ,       "   U   n   k
0016200    n   o   w   n       s   w   i   t   c   h       /   $   C   ,
0016220        i   g   n   o   r   e   d   .   *   n   "   ,  \r        
0016240                                                            u   s
0016260    e   r   P   a   r   a   m   s   !   i   )  \r                
0016300                                    ]  \r                        
0016320                v   a   l       =       t   r   u   e  \r        
0016340                      376 001  \0 037 026           ]  \r        
0016360                    ]  \r               u   s   e   r   P   a   r
0016400    a   m   s       =       u   s   e   r   P   a   r   a   m   s
0016420        +       u   s   e   r   P   a   r   a   m   s   >   >   U
0016440    P   E   .   l   e   n   g   t   h  \r               ]  \r  \r
0016460    /   /       i   f       n   o       p   o   t   e   n   t   i
0016500    a   l       f   o   r       X   M       t   h   e   n       t
0016520    u   r   n       o   f   f       X   M       s   w   i   t   c
0016540    h  \r   i   f       A   l   t   o   V   e   r   s   i   o   n
0016560    <   <   V   E   R   S   .   e   n   g       n   e       3    
0016600    t   h   e   n       l   i   s   b   >   >   I   S   B   .   m
0016620    a   x   B   a   n   k   s   X   M       =       0  \r  \r   /
0016640    /       S   e   t       u   p       m   i   c   o   r   c   o
0016660    d   e   d       b   c   p   l       r   u   n   t   i   m   e
0016700   \r   I   n   i   t   B   c   p   l   R   u   n   t   i   m   e
0016720    (   )  \r  \f  \r   /   /       I   n   i   t   I   F   S   P
0016740    a   r   t   1       (   c   o   n   t 376 001  \0 313 307   '
0016760    d   )  \r  \r   /   /       C   r   e   a   t   e       t   h
0017000    e       s   y   s   t   e   m       f   r   e   e       s   t
0017020    o   r   a   g   e       z   o   n   e   s   .  \r   /   /    
0017040    T   h   e   s   e       z   o   n   e   s       w   i   l   l
0017060        e   n   d       u   p       s   u   r   r   o   u   n   d
0017100    e   d       b   y       v   M   e   m       b   u   f   f   e
0017120    r   s   ,       s   o       t   h   e   y  \r   /   /       b
0017140    e   g   i   n       a   n   d       e   n   d       o   n    
0017160    s   t   a   n   d   a   r   d       p   a   g   e       b   o
0017200    u   n   d   a   r   i   e   s   .  \r   l   e   t       i   C
0017220    h   u   n   k   Q       =       v   e   c       1   ;       i
0017240    C   h   u   n   k   Q   !   0       =       0  \r   c   h   u
0017260    n   k   Q       =       i   C   h   u   n   k   Q  \r  \r   /
0017300    /       L   a   r   g   e       b   l   o   c   k   s       c
0017320    o   m   e       f   r   o   m       b   i   g   Z   o   n   e
0017340    :  \r   l   i   s   b   >   >   I   S   B   .   b   i   g 376
0017360  001  \0 271   G   Z   o   n   e   B   o   t       =       @   s
0017400    t   a   c   k   L   i   m   i   t   +   (   1       l   s   h
0017420    i   f   t       l   o   g   S   t   d   P   a   g   e   L   e
0017440    n   g   t   h       -   1   )       &  \r       (   -   1   )
0017460        l   s   h   i   f   t       l   o   g   S   t   d   P   a
0017500    g   e   L   e   n   g   t   h  \r   @   s   t   a   c   k   L
0017520    i   m   i   t       =       l   i   s   b   >   >   I   S   B
0017540    .   b   i   g   Z   o   n   e   B   o   t       +       l   i
0017560    s   b   >   >   I   S   B   .   l   e   n   B   i   g   Z   o
0017600    n   e  \r   b   i   g   Z   o   n   e       =       I   n   i
0017620    t   i   a   l   i   z   e   Z   o   n   e   (   l   i   s   b
0017640    >   >   I   S   B   .   b   i   g   Z   o   n   e   B   o   t
0017660    ,       l   i   s   b   >   >   I   S   B   .   l   e   n   B
0017700    i   g   Z   o   n   e   ,       S   y   s   E   r   r   ,  \r
0017720        (   a   l   l   o   c   a   t   o   r   D   e   b   u   g
0017740        ?       S   y   s   E   r   r   ,       0   )   )  \r  \r
0017760    /   /       S 376 001  \0 336 264   m   a   l   l       b   l
0020000    o   c   k   s       c   o   m   e       f   r   o   m       s
0020020    m   a   l   l   Z   o   n   e   :  \r   l   e   t       b   a
0020040    s   e       =       @   s   t   a   c   k   L   i   m   i   t
0020060   \r   @   s   t   a   c   k   L   i   m   i   t       =       b
0020100    a   s   e       +       l   i   s   b   >   >   I   S   B   .
0020120    l   e   n   S   m   a   l   l   Z   o   n   e  \r   s   m   a
0020140    l   l   Z   o   n   e       =       I   n   i   t   i   a   l
0020160    i   z   e   Z   o   n   e   (   b   a   s   e   ,       l   i
0020200    s   b   >   >   I   S   B   .   l   e   n   S   m   a   l   l
0020220    Z   o   n   e   ,       S   y   s   E   r   r   ,  \r       (
0020240    a   l   l   o   c   a   t   o   r   D   e   b   u   g       ?
0020260        S   y   s   E   r   r   ,       0   )   )  \r  \r   /   /
0020300        I   n   i   t   i   a   l   i   z   e       t   h   e    
0020320    I   F   S       A   l   l   o   c   a   t   o   r       a   n
0020340    d       d   i   v   e   r   t       c   a   l   l   s       t
0020360    o       s   y   s   Z   o   n   e 376 001  \0 350   k       i
0020400    n   t   o       i   t   .  \r   s   y   s   Z   o   n   e    
0020420    =       A   l   l   o   c   a   t   e   (   s   m   a   l   l
0020440    Z   o   n   e   ,       6   )  \r   o   P   a   g   e   Q    
0020460    =       s   y   s   Z   o   n   e   +   2   ;       o   P   a
0020500    g   e   Q   !   0       =       0  \r   c   h   u   n   k   Q
0020520        =       s   y   s   Z   o   n   e   +   4   ;       c   h
0020540    u   n   k   Q   !   0       =       i   C   h   u   n   k   Q
0020560    !   0   ;       c   h   u   n   k   Q   !   1       =       i
0020600    C   h   u   n   k   Q   !   1  \r   s   y   s   Z   o   n   e
0020620    >   >   Z   N   .   A   l   l   o   c   a   t   e       =    
0020640    I   F   S   A   l   l   o   c   a   t   e  \r   s   y   s   Z
0020660    o   n   e   >   >   Z   N   .   F   r   e   e       =       I
0020700    F   S   F   r   e   e  \r   l   e   t       l   e   n   S   n
0020720    a   r   f       =       1       l   s   h   i   f   t       (
0020740    1   6   -   l   o   g   S   t   d   P   a   g   e   L   e   n
0020760    g   t   h   )  \r   s   n   a   r   f   T   a   b   l 376 001
0021000   \0 306  \f   e       =       A   l   l   o   c   a   t   e   (
0021020    b   i   g   Z   o   n   e   ,       l   e   n   S   n   a   r
0021040    f   )  \r   S   e   t   B   l   o   c   k   (   s   n   a   r
0021060    f   T   a   b   l   e   ,   -   1   ,       l   e   n   S   n
0021100    a   r   f   )  \r  \r   /   /       C   r   e   a   t   e    
0021120    t   h   e       r   e   a   l       I   n   i   t   i   a   l
0021140    i   z   a   t   i   o   n       S   t   o   r   a   g   e    
0021160    B   l   o   c   k  \r   i   s   b       =       A   l   l   o
0021200    c   a   t   e   (   s   y   s   Z   o   n   e   ,       l   e
0021220    n   I   S   B   )  \r   M   o   v   e   B   l   o   c   k   (
0021240    i   s   b   ,       l   i   s   b   ,       l   e   n   I   S
0021260    B   )  \r   M   o   v   e   B   l   o   c   k   (   l   v    
0021300    i   s   b   >   >   I   S   B   .   c   f   a   I   F   S   S
0021320    w   a   p   ,       c   f   a   I   F   S   R   u   n   ,    
0021340    l   C   F   A   )  \r  \r   i   f   s   C   t   x   Q       =
0021360        A   l   l   o   c   a   t   e   (   s   y   s   Z   o   n
0021400    e   ,   2 376 001  \0 231  \r   )   ;       i   f   s   C   t
0021420    x   Q   !   0       =       0  \r   I   n   i   t   C   o   n
0021440    t   e   x   t   S   c   h   e   d   (   )           /   /   q
0021460    u   e   u   e   s       a       r   e   s   i   d   e   n   t
0021500        u   s   e   r       f   i   n   i   s   h       p   r   o
0021520    c  \r  \r   /   /       S   t   a   r   t       t   h   e    
0021540    C   a   l   l   P   r   o   c       p   r   o   c   e   s   s
0021560    .  \r   E   n   q   u   e   u   e   (   i   f   s   C   t   x
0021600    Q   ,       I   n   i   t   i   a   l   i   z   e   C   o   n
0021620    t   e   x   t   (   A   l   l   o   c   a   t   e   (   b   i
0021640    g   Z   o   n   e   ,       l   e   n   C   a   l   l   P   r
0021660    o   c   S   t   a   c   k   )   ,  \r       l   e   n   C   a
0021700    l   l   P   r   o   c   S   t   a   c   k   ,       C   a   l
0021720    l   P   r   o   c   P   r   o   c   e   s   s   )   )  \r  \r
0021740    /   /       A   l   l   o   c   a   t   e       s   p   y    
0021760    b   u   f   f   e   r       i   f       r   e   q   u   i   r
0022000    e   d  \r   t   e   s   t     376 001  \0 355   e   a   l   l
0022020    o   c   a   t   e   S   p   y   B   u   f   f   e   r  \r    
0022040            i   f   s   o  \r                           [  \r    
0022060                        i   s   b   >   >   I   S   B   .   i   n
0022100    i   t   S   t   a   r   t       =       i   s   b   >   >   I
0022120    S   B   .   p   c   I   +   s   p   y   B   u   f   f   e   r
0022140   \r                           s   p   y   B   u   f   f   e   r
0022160        =       i   s   b   >   >   I   S   B   .   p   c   I  \r
0022200                            ]  \r               i   f   n   o   t
0022220   \r                           [       i   s   b   >   >   I   S
0022240    B   .   i   n   i   t   S   t   a   r   t       =       i   s
0022260    b   >   >   I   S   B   .   p   c   I   ;       s   p   y   B
0022300    u   f   f   e   r       =       0       ]  \r  \r   /   /   I
0022320    F   S   F   i   n   i   s   h       s   h   o   u   l   d    
0022340    b   e       t   h   e       f   i   r   s   t       s   w   a
0022360    p   p   a   b   l   e       u   s   e   r       f   i   n   i
0022400    s   h       p   r   o   c       q   u   e   u   e 376 001  \0
0022420    Z 341   d       o   n  \r   /   /       l   v   U   s   e   r
0022440    F   i   n   i   s   h   P   r   o   c       s   o       t   h
0022460    a   t       i   t       w   i   l   l       b   e       t   h
0022500    e       l   a   s   t       o   n   e       e   x   e   c   u
0022520    t   e   d   ,  \r   /   /       b   e   c   a   u   s   e    
0022540    w   h   e   n       i   t       i   s       d   o   n   e   ,
0022560        v   M   e   m       a   n   d       o   v   e   r   l   a
0022600    y   s       w   o   n   '   t       w   o   r   k   .  \r   s
0022620    a   v   e   d   U   F   P       =       @   l   v   U   s   e
0022640    r   F   i   n   i   s   h   P   r   o   c  \r   @   l   v   U
0022660    s   e   r   F   i   n   i   s   h   P   r   o   c       =    
0022700    I   F   S   F   i   n   i   s   h  \r  \r   I   f   s   N   o
0022720    B   u   f   s   P   r   o   c       =       S   c   a   v   N
0022740    o   B   u   f   s   P   r   o   c  \r   I   n   i   t   V   M
0022760    e   m   (   )  \r   b   f   s   D   D   M   g   r       =    
0023000    B   F   S   C   r   e   a   t   e   D   D   M   g   r   (   s
0023020    y   s 376 001  \0  \a   9   Z   o   n   e   )  \r   B   F   S
0023040    W   r   i   t   e   D   i   s   k   D   e   s   c   r   i   p
0023060    t   o   r   (   s   y   s   D   i   s   k   )           /   /
0023100        O   S       v   e   r   s   i   o   n  \r   s   y   s   D
0023120    i   s   k       =       B   F   S   I   n   i   t   (   s   y
0023140    s   Z   o   n   e   ,       t   r   u   e   ,       0   ,    
0023160    b   f   s   D   D   M   g   r   )           /   /       m   y
0023200        v   e   r   s   i   o   n  \r  \r   /   /       f   i   n
0023220    i   s   h   e   d       w   i   t   h       m   o   s   t    
0023240    o   f       t   h   e       O   S   .           J   u   n   t
0023260    a   !  \r   J   u   n   t   a   (   l   e   v   B   u   f   f
0023300    e   r   ,       I   F   S   A   f   t   e   r   J   u   n   t
0023320    a   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -
0023340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0023420    -   -   -   -   -   -   - 376 001  \0 367 375   -   -   -   -
0023440    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       I
0023460    n   i   t   I   F   S   P   a   r   t   2   (   )       b   e
0023500   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0023520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0023600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0023620    /   /       T   h   i   s       p   r   o   c   e   d   u   r
0023640    e       s   e   t   s       u   p       t   h   e       v   i
0023660    r   t   u   a   l       m   e   m   o   r   y       a   n   d
0023700        o   v   e   r   l   a   y       m   a   c   h   i   n   e
0023720    r   y   .  \r   /   /       M   o   s   t       o   f       t
0023740    h   e       O   S       i   s       g   o   n   e       n   o
0023760    w   .  \r   [  \r   /   /       G   e   t       t   h   e    
0024000    k   e   y   b   o   a   r   d       g   o   i   n   g       a
0024020    g   a   i   n       q   u   i   c   k   l   y 376 001  \0   #
0024040  371  \r   C   r   e   a   t   e   K   e   y   b   o   a   r   d
0024060    S   t   r   e   a   m   (   )  \r  \r   /   /       M   a   k
0024100    e       s   t   a   c   k       e   n   d       i   n       z
0024120    e   r   o       r   a   t   h   e   r       t   h   a   n    
0024140    l   o   o   p       o   r       g   a   r   b   a   g   e  \r
0024160    C   a   l   l   e   r   s   F   r   a   m   e   (   )   !   0
0024200        =       0  \r  \r   /   /       G   i   v   e       m   o
0024220    s   t       o   f       o   u   r       s   t   a   c   k    
0024240    t   o       v   m   e   m       a   n   d       f   r   e   e
0024260        s   t   o   r   a   g   e       z   o   n   e   s   .  \r
0024300    /   /       M   u   s   t       k   e   e   p       '   l   e
0024320    n   I   n   i   t   S   t   a   c   k   '       w   o   r   d
0024340    s       (   m   o   r   e       o   r       l   e   s   s   )
0024360        u   n   t   i   l       t   h   e       l   a   s   t    
0024400    m   o   m   e   n   t  \r   l   e   t       b   a   s   e    
0024420    =       @   s   t   a   c   k   L   i   m   i   t  \r   @   s
0024440    t 376 001  \0 024   I   a   c   k   L   i   m   i   t       =
0024460        (   M   y   F   r   a   m   e   (   )   -   l   e   n   I
0024500    n   i   t   S   t   a   c   k   )       &       (   -   1   )
0024520        l   s   h   i   f   t       l   o   g   S   t   d   P   a
0024540    g   e   L   e   n   g   t   h  \r   i   f       i   s   b   >
0024560    >   I   S   B   .   b   i   g   Z   o   n   e   I   n   c   r
0024600        n   e       0       t   h   e   n  \r               [  \r
0024620                A   d   d   T   o   Z   o   n   e   (   b   i   g
0024640    Z   o   n   e   ,       b   a   s   e   ,       i   s   b   >
0024660    >   I   S   B   .   b   i   g   Z   o   n   e   I   n   c   r
0024700    )  \r               b   a   s   e       =       b   a   s   e
0024720        +       i   s   b   >   >   I   S   B   .   b   i   g   Z
0024740    o   n   e   I   n   c   r  \r               ]  \r   i   f    
0024760    i   s   b   >   >   I   S   B   .   s   m   a   l   l   Z   o
0025000    n   e   I   n   c   r       n   e       0       t   h   e   n
0025020   \r               A   d   d   T   o   Z   o   n   e   (   s   m
0025040    a   l   l   Z   o   n 376 001  \0   R   \   e   ,       b   a
0025060    s   e   ,       i   s   b   >   >   I   S   B   .   s   m   a
0025100    l   l   Z   o   n   e   I   n   c   r   )  \r   b   a   s   e
0025120        =       b   a   s   e       +       i   s   b   >   >   I
0025140    S   B   .   s   m   a   l   l   Z   o   n   e   I   n   c   r
0025160   \r   M   a   k   e   F   r   e   e   (   b   i   g   Z   o   n
0025200    e   ,       b   a   s   e   ,       @   s   t   a   c   k   L
0025220    i   m   i   t   -   b   a   s   e   )  \r   d   o   n   t   S
0025240    n   a   r   f       =       f   a   l   s   e           /   /
0025260    o   k       f   o   r       A   l   l   o   c   a   t   e    
0025300    t   o       s   n   a   r   f       v   m   e   m       b   u
0025320    f   f   e   r   s       n   o   w  \r  \r   /   /       G   i
0025340    v   e       I   n   i   t   O   v   e   r   l   a   y   s    
0025360    t   h   e       l   a   r   g   e   s   t       c   o   n   t
0025400    i   g   u   o   u   s       c   h   u   n   k       o   f    
0025420    s   t   o   r   a   g   e       w   e       c   a   n       f
0025440    i   n   d  \r   l   e   t       b   u   f 376 001  \0 247   ]
0025460    L   e   n       =       n   u   m   V   M   e   m   B   u   f
0025500    s       l   s   h   i   f   t       l   o   g   S   t   d   P
0025520    a   g   e   L   e   n   g   t   h  \r   l   e   t       b   u
0025540    f       =       n   i   l  \r               [  \r            
0025560    b   u   f       =       A   l   l   o   c   a   t   e   (   s
0025600    y   s   Z   o   n   e   ,       b   u   f   L   e   n   ,    
0025620    t   r   u   e   )  \r               i   f       b   u   f    
0025640    n   e       0       b   r   e   a   k  \r               b   u
0025660    f   L   e   n       =       b   u   f   L   e   n       -    
0025700    1       l   s   h   i   f   t       l   o   g   S   t   d   P
0025720    a   g   e   L   e   n   g   t   h  \r               ]       r
0025740    e   p   e   a   t  \r   i   s   b   >   >   I   S   B   .   n
0025760    u   m   O   v   e   r   l   a   y   s       =       5   0    
0026000        /   /   C   o   p   y   O   v   e   r   l   a   y   s    
0026020    d   o   e   s       t   h   i   s       i   n       I   F   S
0026040   \r   I   n   i   t   O   v   e   r   l   a   y   s   (   s   y
0026060  376 001  \0 034 023   s   D   i   s   k   ,       l   v       i
0026100    s   b   >   >   I   S   B   .   c   f   a   I   F   S   S   w
0026120    a   p   ,       b   u   f   ,       b   u   f   L   e   n   )
0026140   \r   F   r   e   e   (   s   y   s   Z   o   n   e   ,       b
0026160    u   f   )  \r   I   n   i   t   D   i   s   k   s   F   i   n
0026200    i   s   h   (   )           /   /   f   i   x       u   p    
0026220    O   E   P   s       f   o   r       s   y   s   D   i   s   k
0026240        &       b   f   s   D   D   M   g   r  \r   /   /       *
0026260    *   *   *   *       D   o       n   o   t       q   u   e   u
0026300    e       a   n   y       u   s   e   r       f   i   n   i   s
0026320    h       p   r   o   c   e   d   u   r   e   s       e   f   o
0026340    r   e       h   e   r   e       *   *   *   *   *  \r  \r   /
0026360    /       t   h   i   s       m   u   s   t       b   e       t
0026400    h   e       l   a   s   t       p   r   o   c   e   d   u   r
0026420    e       c   a   l   l   e   d       b   y       I   n   i   t
0026440    I   F   S   P   a   r   t   2  \r   F   i   x   u   p   S   w
0026460    a   p   p   e   d 376 001  \0   d 342   O   u   t   (   i   s
0026500    b   >   >   I   S   B   .   r   e   l   o   c   T   a   b   l
0026520    e   )  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -   -
0026540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026640    -   -   -   -  \r   a   n   d       I   n   i   t   I   F   S
0026660    P   a   r   t   3   (   )       b   e  \r   /   /   -   -   -
0026700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0027000    -   -   -   -   -   -   -   -  \r   /   /       T   h   i   s
0027020        p   r   o   c   e   d   u   r   e       w   i   l   l    
0027040    b   e       c   a   l   l   e   d       i   n       a   s    
0027060    a   n       o   v   e   r   l   a   y 376 001  \0 240   B   .
0027100   \r   /   /       I   t       c   u   t   s       u   p       t
0027120    h   e       r   e   s   i   d   e   n   t       i   n   i   t
0027140    i   a   l   i   z   a   t   i   o   n       c   o   d   e    
0027160    i   n   t   o       v   m   e   m       b   u   f   f   e   r
0027200    s   ,  \r   /   /       a   n   d       t   u   r   n   s    
0027220    t   h   e       r   e   m   a   i   n   i   n   g       s   t
0027240    a   c   k       i   n   t   o       v   m   e   m       b   u
0027260    f   f   e   r   s   .  \r   [  \r   /   /       A   t   t   e
0027300    m   p   t       t   o       l   o   a   d       o   v   e   r
0027320    l   a   y   s       i   n   t   o       e   x   t   e   n   d
0027340    e   d       m   e   m   o   r   y   .  \r   /   /       I   f
0027360        t   h   i   s       i   s       s   u   c   c   e   s   s
0027400    f   u   l       i   t       w   i   l   l       c   o   n   s
0027420    u   m   e       s   o   m   e       o   f       t   h   e    
0027440    s   t   o   r   a   g   e  \r   /   /       f   o   r   m   e
0027460    r   l   y       o   c   c   u   p   i   e   d       b   y 376
0027500  001  \0 005  \n       i   n   i   t   i   a   l   i   z   a   t
0027520    i   o   n       c   o   d   e   ,       u   p   d   a   t   i
0027540    n   g       i   s   b   >   >   I   S   B   .   i   n   i   t
0027560    S   t   a   r   t   .  \r   I   n   i   t   X   M   O   v   e
0027600    r   l   a   y   s   (   )  \r  \r   /   /       T   u   r   n
0027620        t   h   e       r   e   m   a   i   n   i   n   g       i
0027640    n   i   t   i   a   l   i   z   a   t   i   o   n       c   o
0027660    d   e       i   n   t   o       v   M   e   m       b   u   f
0027700    f   e   r   s   .  \r   M   a   k   e   F   r   e   e   (   b
0027720    i   g   Z   o   n   e   ,       i   s   b   >   >   I   S   B
0027740    .   i   n   i   t   S   t   a   r   t   ,       i   s   b   >
0027760    >   I   S   B   .   b   i   g   Z   o   n   e   B   o   t   -
0030000    i   s   b   >   >   I   S   B   .   i   n   i   t   S   t   a
0030020    r   t   )  \r  \r   /   /       I   f       w   e       m   o
0030040    v   e   d       r   e   s   i   d   e   n   t       c   o   d
0030060    e       i   n   t   o       X   M   ,       t   u   r   n    
0030100    i   t       i 376 001  \0 034   5   n   t   o       f   r   e
0030120    e       s   t   o   r   a   g   e       a   s       w   e   l
0030140    l   .  \r   /   /       M   u   s   t       d   o       t   h
0030160    i   s       a   f   t   e   r       t   h   e       p   r   e
0030200    c   e   d   i   n   g       M   a   k   e   F   r   e   e    
0030220    t   o       a   v   o   i   d       t   h   e       A   d   d
0030240    T   o   Z   o   n   e       b   u   g   .  \r   i   f       i
0030260    s   b   >   >   I   S   B   .   r   e   s   i   d   e   n   t
0030300    C   o   d   e   X   M       t   h   e   n  \r               M
0030320    a   k   e   F   r   e   e   (   b   i   g   Z   o   n   e   ,
0030340        i   s   b   >   >   I   S   B   .   p   c   X   ,       i
0030360    s   b   >   >   I   S   B   .   p   c   I   -   i   s   b   >
0030400    >   I   S   B   .   p   c   X   )  \r  \r   I   n   i   t   T
0030420    i   m   e   I   O   (   )  \r   t   f   s   D   D   M   g   r
0030440        =       I   F   S   C   r   e   a   t   e   D   D   M   g
0030460    r   (   )  \r  \r   /   /       O   p   e   n       t   h   e
0030500        S   c   a   v   e   n   g   e 376 001  \0 346 023   r    
0030520    l   o   g  \r   d   s   p       =       A   l   l   o   c   a
0030540    t   e   (   s   y   s   Z   o   n   e   ,       l   S   T   )
0030560    ;       S   e   t   B   l   o   c   k   (   d   s   p   ,    
0030600    C   a   l   l   S   w   a   t   ,       l   S   T   )  \r   d
0030620    s   p   >   >   S   T   .   p   a   r   1       =       C   r
0030640    e   a   t   e   D   i   s   p   l   a   y   S   t   r   e   a
0030660    m   (   5   ,       A   l   l   o   c   a   t   e   (   b   i
0030700    g   Z   o   n   e   ,       l   e   n   D   s   p   )   ,    
0030720    l   e   n   D   s   p   )  \r   S   h   o   w   D   i   s   p
0030740    l   a   y   S   t   r   e   a   m   (   d   s   p   >   >   S
0030760    T   .   p   a   r   1   ,       D   S   a   l   o   n   e   )
0031000   \r   d   s   p   >   >   S   T   .   p   a   r   2       =    
0031020    O   p   e   n   F   i   l   e   (   "   I   f   s   S   c   a
0031040    v   e   n   g   e   r   .   l   o   g   "   ,       k   s   T
0031060    y   p   e   W   r   i   t   e   O   n   l   y   ,       c   h
0031100    a   r   I   t   e   m   )  \r   i   f       d   s   p 376 001
0031120   \0   W 253   >   >   S   T   .   p   a   r   2       e   q    
0031140    0       t   h   e   n       I   F   S   E   r   r   o   r   (
0031160    e   c   D   i   a   b   l   o   F   i   l   e   ,       "   I
0031200    f   s   S   c   a   v   e   n   g   e   r   .   l   o   g   "
0031220    )  \r   d   s   p   >   >   S   T   .   p   a   r   2   >   >
0031240    S   T   .   e   r   r   o   r       =       L   o   g   E   r
0031260    r   o   r   s  \r   d   s   p   >   >   S   T   .   p   u   t
0031300    s       =       S   p   l   i   t   P   u   t   s  \r  \r   /
0031320    /       C   r   e   a   t   e       m   a   i   n       p   r
0031340    o   c   e   s   s  \r   E   n   q   u   e   u   e   (   i   f
0031360    s   C   t   x   Q   ,       I   n   i   t   i   a   l   i   z
0031400    e   C   o   n   t   e   x   t   (   A   l   l   o   c   a   t
0031420    e   (   b   i   g   Z   o   n   e   ,       l   e   n   S   c
0031440    a   v   S   t   a   c   k   )   ,  \r       l   e   n   S   c
0031460    a   v   S   t   a   c   k   ,       I   f   s   S   c   a   v
0031500    e   n   g   e   r   )   )  \r  \r   /   /       F   r   e   e
0031520        u   p 376 001  \0 201 300       m   o   s   t       o   f
0031540        t   h   e       r   e   m   a   i   n   i   n   g       s
0031560    t   a   c   k   .  \r   l   e   t       b   a   s   e       =
0031600        @   s   t   a   c   k   L   i   m   i   t  \r   @   s   t
0031620    a   c   k   L   i   m   i   t       =       M   y   F   r   a
0031640    m   e   (   )       -   1   0   0  \r   M   a   k   e   F   r
0031660    e   e   (   b   i   g   Z   o   n   e   ,       b   a   s   e
0031700    ,       @   s   t   a   c   k   L   i   m   i   t   -   b   a
0031720    s   e   )  \r  \r   /   /       C   h   a   n   g   e       c
0031740    u   r   s   o   r       t   o       '   I   F   S   '  \r   M
0031760    o   v   e   B   l   o   c   k   (   c   u   r   s   o   r   B
0032000    i   t   M   a   p   ,       t   a   b   l   e  \r            
0032020    [  \r               0   ;       0   ;       0   ;       0   ;
0032040        7   1   7   0   6   b   ;       2   1   0   1   1   b   ;
0032060        2   1   0   1   0   b   ;       2   1   6   0   6   b  \r
0032100                2   1   0   0   1   b   ;       2   1   0   1   1
0032120    b   ;       7   1   0   0   6 376 001  \0 202 325   b   ;    
0032140    0   ;       7   7   7   7   7   b   ;       0   ;       0   ;
0032160        0  \r               ]   ,       1   6   )  \r   /   /    
0032200    A   l   l       d   o   n   e       i   n   i   t   i   a   l
0032220    i   z   i   n   g   .           L   e   t       i   t       r
0032240    i   p   .  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0032260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032360    -   -   -   -   -  \r   a   n   d       M   a   k   e   F   r
0032400    e   e   (   z   o   n   e   ,   f   i   r   s   t   ,   l   e
0032420    n   g   t   h   )       b   e  \r   /   /   -   -   -   -   -
0032440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032520    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0032540    D 244   -   -   -   -   -   -   -   -   -  \r   /   /       C
0032560    u   t   s       u   p       t   h   e       s   t   r   e   t
0032600    c   h       o   f       m   e   m   o   r   y       s   t   a
0032620    r   t   i   n   g       a   t       '   f   i   r   s   t   '
0032640        i   n   t   o  \r   /   /       v   m   e   m       b   u
0032660    f   f   e   r   s   ,       a   d   d   i   n   g       a   n
0032700    y       s   c   r   a   p   s       t   o       '   z   o   n
0032720    e   '   .  \r   [  \r   m   a   n   i   f   e   s   t       p
0032740    a   g   e   L   e   n   g   t   h       =       1       l   s
0032760    h   i   f   t       l   o   g   S   t   d   P   a   g   e   L
0033000    e   n   g   t   h  \r   m   a   n   i   f   e   s   t       p
0033020    a   g   e   M   a   s   k       =       (   -   1   )       l
0033040    s   h   i   f   t       l   o   g   S   t   d   P   a   g   e
0033060    L   e   n   g   t   h  \r   l   e   t       l   a   s   t    
0033100    =       f   i   r   s   t   +   l   e   n   g   t   h  \r   l
0033120    e   t       f   i   r   s   t   M   o   d   P   a   g   e   L
0033140    e   n 376 001  \0   X   8   g   t   h       =       (   f   i
0033160    r   s   t   +   p   a   g   e   L   e   n   g   t   h   -   1
0033200    )       &       p   a   g   e   M   a   s   k  \r   l   e   t
0033220        l   a   s   t   M   o   d   P   a   g   e   L   e   n   g
0033240    t   h       =       l   a   s   t       &       p   a   g   e
0033260    M   a   s   k  \r   A   d   d   B   u   f   f   e   r   s   (
0033300    f   i   r   s   t   M   o   d   P   a   g   e   L   e   n   g
0033320    t   h   ,       l   a   s   t   M   o   d   P   a   g   e   L
0033340    e   n   g   t   h   -   1   )  \r  \r   f   o   r       i    
0033360    =       f   i   r   s   t   M   o   d   P   a   g   e   L   e
0033400    n   g   t   h       r   s   h   i   f   t       l   o   g   S
0033420    t   d   P   a   g   e   L   e   n   g   t   h       t   o  \r
0033440        l   a   s   t   M   o   d   P   a   g   e   L   e   n   g
0033460    t   h       r   s   h   i   f   t       l   o   g   S   t   d
0033500    P   a   g   e   L   e   n   g   t   h       -   1       d   o
0033520   \r               [       s   n   a   r   f   T   a   b   l   e
0033540    !   i       =       0   ; 376 001  \0 207 224       n   u   m
0033560    V   M   e   m   B   u   f   s       =       n   u   m   V   M
0033600    e   m   B   u   f   s   +   1       ]  \r   i   f       n   u
0033620    m   V   M   e   m   B   u   f   s       l   s   h   i   f   t
0033640        (   l   o   g   S   t   d   P   a   g   e   L   e   n   g
0033660    t   h   -   l   o   g   V   M   P   a   g   e   L   e   n   g
0033700    t   h   )       g   r  \r       m   a   x   V   M   P   a   g
0033720    e   s       t   h   e   n       I   F   S   E   r   r   o   r
0033740    (   e   c   N   u   m   V   M   e   m   B   u   f   s   )  \r
0033760   \r   i   f       f   i   r   s   t   M   o   d   P   a   g   e
0034000    L   e   n   g   t   h   -   f   i   r   s   t       g   e    
0034020    1   0       t   h   e   n  \r               A   d   d   T   o
0034040    Z   o   n   e   (   z   o   n   e   ,       f   i   r   s   t
0034060    ,       f   i   r   s   t   M   o   d   P   a   g   e   L   e
0034100    n   g   t   h   -   f   i   r   s   t   )  \r   i   f       l
0034120    a   s   t   -   l   a   s   t   M   o   d   P   a   g   e   L
0034140    e   n   g   t   h       g   e       1   0     376 001  \0 024
0034160  237   t   h   e   n  \r               A   d   d   T   o   Z   o
0034200    n   e   (   z   o   n   e   ,       l   a   s   t   M   o   d
0034220    P   a   g   e   L   e   n   g   t   h   ,       l   a   s   t
0034240    -   l   a   s   t   M   o   d   P   a   g   e   L   e   n   g
0034260    t   h   )  \r   ]  \r  \r  \r   /   /   -   -   -   -   -   -
0034300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034400    -   -   -   -   -   -  \r   a   n   d       I   F   S   F   i
0034420    n   i   s   h   (   )       b   e  \r   /   /   -   -   -   -
0034440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0034540    -   -   -   -   -   -   -   -  \r   /   /       T   h   e    
0034560    l 376 001  \0 337   C   a   s   t       f   i   n   i   s   h
0034600        p   r   o   c   e   d   u   r   e       c   a   l   l   e
0034620    d       w   h   e   n       a       f   i   n   i   s   h    
0034640    i   s       d   o   n   e  \r   [  \r   C   l   o   s   e   s
0034660    (   d   s   p   >   >   S   T   .   p   a   r   1   )  \r   C
0034700    l   o   s   e   s   (   d   s   p   >   >   S   T   .   p   a
0034720    r   2   )  \r  \r   i   f       s   c   r   a   t   c   h   D
0034740    i   s   k       n   e       s   y   s   D   i   s   k       &
0034760        s   c   r   a   t   c   h   D   i   s   k       n   e    
0035000    0       t   h   e   n      \r               C   l   o   s   e
0035020    D   i   s   k   (   s   c   r   a   t   c   h   D   i   s   k
0035040    ,       t   r   u   e   )  \r   i   f       s   c   a   v   D
0035060    i   s   k       n   e       0       t   h   e   n       C   l
0035100    o   s   e   D   i   s   k   (   s   c   a   v   D   i   s   k
0035120    )  \r   C   l   o   s   e   D   i   s   k   (   s   y   s   D
0035140    i   s   k   )  \r  \r   @   d   i   s   p   l   a   y   L   i
0035160    s   t   H   e   a   d 376 001  \0 300 371       =       0  \r
0035200    T   F   S   S   i   l   e   n   t   B   o   o   t   (   )  \r
0035220    @   l   v   U   s   e   r   F   i   n   i   s   h   P   r   o
0035240    c       =       s   a   v   e   d   U   F   P  \r   ]  \r  \r
0035260    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0035300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035360    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0035400    d       I   n   i   t   T   i   m   e   I   O   (   )       b
0035420    e           /   /       m   a   k   e       l   e   g   a   l
0035440        c   o   n   s   t   a   n   t       s   t   r   i   n   g
0035460        f   o   r       m   o   d   i   f   i   e   d       I   f
0035500    s   T   i   m   e   I   O  \r   /   /   -   -   -   -   -   -
0035520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0035560    -   -   -   -   -   -   -   -   -   -   - 376 001  \0 313 005
0035600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0035620    -   -   -   -   -   -   -   -   -   -  \r   m   o   n   t   h
0035640    N   a   m   e   s       =       E   x   t   r   a   c   t   S
0035660    u   b   s   t   r   i   n   g   (   "   x   *   0   0   7   J
0035700    a   n   u   a   r   y   *   0   0   0   *   0   0   0   *   0
0035720    1   0   F   e   b   r   u   a   r   y   *   0   0   0   *   0
0035740    0   5   M   a   r   c   h   *   0   0   0   *   0   0   0   *
0035760    0   0   0   *   0   0   0   *   0   0   5   A   p   r   i   l
0036000    *   0   0   0   *   0   0   0   *   0   0   0   *   0   0   0
0036020    *   0   0   3   M   a   y   *   0   0   0   *   0   0   0   *
0036040    0   0   0   *   0   0   0   *   0   0   0   *   0   0   0   *
0036060    0   0   4   J   u   n   e   *   0   0   0   *   0   0   0   *
0036100    0   0   0   *   0   0   0   *   0   0   0   *   0   0   4   J
0036120    u   l   y   *   0   0   0   *   0   0   0   *   0   0   0   *
0036140    0   0   0   *   0   0   0   *   0   0   6   A   u   g   u   s
0036160    t   *   0   0   0   *   0   0   0   *   0   0   0   *   0   1
0036200  376  \0   C 260   }   1   S   e   p   t   e   m   b   e   r   *
0036220    0   0   7   O   c   t   o   b   e   r   *   0   0   0   *   0
0036240    0   0   *   0   1   0   N   o   v   e   m   b   e   r   *   0
0036260    0   0   *   0   1   0   D   e   c   e   m   b   e   r   *   0
0036300    0   0   "   )       +   1  \r 377  \0  \0   I   f   s   S   c
0036320    a   v   e   n   g   e   r   .   b   c   p   l  \0 373 233 031
0036340    <   _  \0  \0 376 001  \0 264 371   /   /       I   f   s   S
0036360    c   a   v   e   n   g   e   r   .   b   c   p   l       -    
0036400    t   h   e       r   e   s   i   d   e   n   t       s   t   u
0036420    f   f  \r   /   /       C   o   p   y   r   i   g   h   t    
0036440    X   e   r   o   x       C   o   r   p   o   r   a   t   i   o
0036460    n       1   9   7   9   ,       1   9   8   0   ,       1   9
0036500    8   1   ,       1   9   8   2  \r   /   /       L   a   s   t
0036520        m   o   d   i   f   i   e   d       J   u   l   y       2
0036540    7   ,       1   9   8   2           7   :   3   0       P   M
0036560        b   y       B   o   g   g   s  \r  \r   g   e   t       "
0036600    I   f   s   S   c   a   v   e   n   g   e   r   .   d   e   c
0036620    l   "  \r   g   e   t       "   A   l   t   o   F   i   l   e
0036640    S   y   s   .   d   "  \r   g   e   t       "   I   f   s   D
0036660    i   r   s   .   d   e   c   l   "  \r   g   e   t       "   S
0036700    t   r   e   a   m   s   .   d   "  \r   g   e   t       "   D
0036720    i   s   k   s   .   d   "  \r  \r   e   x   t   e   r   n   a
0036740    l  \r   [  \r   /   /       o   u 376 001  \0   X   w   t   g
0036760    o   i   n   g       p   r   o   c   e   d   u   r   e   s  \r
0037000    I   f   s   S   c   a   v   e   n   g   e   r   ;       S   c
0037020    a   v   N   o   B   u   f   s   P   r   o   c   ;       S   c
0037040    r   a   t   c   h  \r   S   p   l   i   t   P   u   t   s   ;
0037060        L   o   g   E   r   r   o   r   s   ;       E   x   t   e
0037100    n   d   F   i   l   e  \r  \r   /   /       i   n   c   o   m
0037120    i   n   g       p   r   o   c   e   d   u   r   e   s  \r   P
0037140    a   s   s   1   ;       P   a   s   s   2   ;       D   i   s
0037160    k   E   d   i   t   o   r   ;       D   u   m   p   T   r   e
0037200    e   ;       D   u   m   p   L   P   T  \r   C   r   e   a   t
0037220    e   K   e   y   w   o   r   d   T   a   b   l   e   ;       I
0037240    n   s   e   r   t   K   e   y   w   o   r   d   ;       C   o
0037260    n   f   i   r   m   ;       G   e   t   N   u   m   b   e   r
0037300   \r   O   p   e   n   D   i   s   k   ;       C   l   o   s   e
0037320    D   i   s   k   ;       S   n   a   r   f   B   u   f   f   e
0037340    r  \r   G   e   t   K   e   y   w   o   r   d   ;     376 001
0037360   \0 356 261   I   n   i   t   C   m   d   ;       W   R   I   T
0037400    E   U   D   T  \r   C   l   o   s   e   s   ;       P   u   t
0037420    s   ;       W   s   s   ;       W   s   ;       A   l   l   o
0037440    c   a   t   e   ;       F   r   e   e   ;       S   e   t   B
0037460    l   o   c   k   ;       Z   e   r   o   ;       N   o   o   p
0037500   \r   C   a   l   l   S   w   a   t   ;       I   F   S   E   r
0037520    r   o   r   ;       S   y   s   E   r   r   ;       R   e   t
0037540    u   r   n   F   r   o   m  \r   O   p   e   n   F   i   l   e
0037560    ;       C   r   e   a   t   e   D   i   s   k   S   t   r   e
0037600    a   m   ;       F   i   l   e   L   e   n   g   t   h   ;    
0037620    P   o   s   i   t   i   o   n   P   a   g   e  \r   R   e   l
0037640    e   a   s   e   D   i   s   k   P   a   g   e   ;       A   s
0037660    s   i   g   n   D   i   s   k   P   a   g   e   ;       A   c
0037700    t   O   n   D   i   s   k   P   a   g   e   s   ;       W   r
0037720    i   t   e   D   i   s   k   P   a   g   e   s  \r   D   i   s
0037740    k   F   i   n   d   H   o   l   e   ;       J   u   m   p   T
0037760    o   F   a 376 001  \0   b 211   ;       G   e   t   C   u   r
0040000    r   e   n   t   F   a  \r  \r   /   /       o   u   t   g   o
0040020    i   n   g       s   t   a   t   i   c   s  \r   s   c   r   a
0040040    t   c   h   D   i   s   k   ;       s   c   a   v   D   i   s
0040060    k  \r   n   u   m   F   i   l   e   s   ;       n   u   m   P
0040100    a   g   e   s   ;       l   p   t   ;       p   a   s   s   ;
0040120        p   h   a   s   e  \r   e   d   i   t   H   o   m   e   F
0040140    l   a   g   ;       i   n   i   t   T   r   e   e   F   l   a
0040160    g   ;       i   n   i   t   L   p   t   F   l   a   g   ;    
0040200    d   e   b   u   g   F   l   a   g   ;       j   u   s   t   F
0040220    i   x   D   i   r   F   l   a   g  \r  \r   /   /       i   n
0040240    c   o   m   i   n   g       s   t   a   t   i   c   s  \r   d
0040260    s   p   ;       k   e   y   s   ;       s   y   s   D   i   s
0040300    k   ;       n   u   m   V   M   e   m   B   u   f   s   ;    
0040320    s   y   s   Z   o   n   e  \r   w   o   r   d   s   P   e   r
0040340    P   a   g   e   ;       b   y   t   e   s   P   e   r   P   a
0040360    g   e  \r   ]  \r  \r   s   t 376 001  \0 342 255   a   t   i
0040400    c  \r   [  \r   s   c   r   a   t   c   h   D   i   s   k   ;
0040420        s   c   a   v   D   i   s   k  \r   n   u   m   F   i   l
0040440    e   s   ;       n   u   m   P   a   g   e   s   ;       l   p
0040460    t   ;       p   a   s   s   ;       p   h   a   s   e  \r  \r
0040500    e   d   i   t   H   o   m   e   F   l   a   g       =       f
0040520    a   l   s   e  \r   i   n   i   t   T   r   e   e   F   l   a
0040540    g       =       f   a   l   s   e  \r   i   n   i   t   L   p
0040560    t   F   l   a   g       =       t   r   u   e  \r   d   e   b
0040600    u   g   F   l   a   g       =       f   a   l   s   e  \r   j
0040620    u   s   t   F   i   x   D   i   r   F   l   a   g       =    
0040640    f   a   l   s   e  \r  \r   k   b   d   K   T   ;       k   b
0040660    d   C   S  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0040700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0040760    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0041000    < 322   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0041020    -   -   -   -   -   -   -   -  \r   l   e   t       I   f   s
0041040    S   c   a   v   e   n   g   e   r   (   )       b   e  \r   /
0041060    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0041100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0041200    -   -   -   -   -   -   -   -   -   -  \r   [  \r   W   s   (
0041220    "   I   F   S       S   c   a   v   e   n   g   e   r       o
0041240    f       J   u   n   e       1   6   ,       1   9   8   3   "
0041260    )  \r   W   s   (   "   *   N   S   t   a   r   t   e   d    
0041300    a   t       "   )   ;       W   R   I   T   E   U   D   T   (
0041320    d   s   p   ,       0   ,       t   r   u   e   )  \r  \r   k
0041340    b   d   K   T       =       C   r   e   a   t   e   K   e   y
0041360    w   o   r   d   T   a   b   l   e   (   1   3   ,       1   )
0041400   \r   I 376 001  \0   , 300   n   s   e   r   t   K   e   y   w
0041420    o   r   d   (   k   b   d   K   T   ,       "   D   e   b   u
0041440    g   "   )   !   0       =       D   e   b   u   g  \r   I   n
0041460    s   e   r   t   K   e   y   w   o   r   d   (   k   b   d   K
0041500    T   ,       "   D   i   s   k   E   d   i   t   o   r   "   )
0041520    !   0       =       S   e   t   u   p   D   i   s   k   E   d
0041540    i   t   o   r  \r   I   n   s   e   r   t   K   e   y   w   o
0041560    r   d   (   k   b   d   K   T   ,       "   D   u   m   p   L
0041600    P   T   "   )   !   0       =       D   u   m   p   L   P   T
0041620   \r   I   n   s   e   r   t   K   e   y   w   o   r   d   (   k
0041640    b   d   K   T   ,       "   D   u   m   p   T   r   e   e   "
0041660    )   !   0       =       D   u   m   p   T   r   e   e  \r   I
0041700    n   s   e   r   t   K   e   y   w   o   r   d   (   k   b   d
0041720    K   T   ,       "   E   d   i   t   H   o   m   e   "   )   !
0041740    0       =       E   d   i   t   H   o   m   e  \r   I   n   s
0041760    e   r   t   K   e   y   w   o   r   d   (   k   b   d   K   T
0042000    ,       "   I   n   i   t 376 001  \0   p 274   L   P   T   "
0042020    )   !   0       =       I   n   i   t   L   P   T  \r   I   n
0042040    s   e   r   t   K   e   y   w   o   r   d   (   k   b   d   K
0042060    T   ,       "   I   n   i   t   T   r   e   e   "   )   !   0
0042100        =       I   n   i   t   T   r   e   e  \r   I   n   s   e
0042120    r   t   K   e   y   w   o   r   d   (   k   b   d   K   T   ,
0042140        "   J   u   s   t   F   i   x   D   i   r   "   )   !   0
0042160        =       J   u   s   t   F   i   x   D   i   r  \r   I   n
0042200    s   e   r   t   K   e   y   w   o   r   d   (   k   b   d   K
0042220    T   ,       "   P   a   s   s   1   "   )   !   0       =    
0042240    P   a   s   s   1  \r   I   n   s   e   r   t   K   e   y   w
0042260    o   r   d   (   k   b   d   K   T   ,       "   P   a   s   s
0042300    2   "   )   !   0       =       S   e   t   u   p   P   a   s
0042320    s   2  \r   I   n   s   e   r   t   K   e   y   w   o   r   d
0042340    (   k   b   d   K   T   ,       "   Q   u   i   t   "   )   !
0042360    0       =       Q   u   i   t  \r   I   n   s   e   r   t   K
0042400    e   y   w   o   r   d   (   k   b   d   K   T 376 001  \0 371
0042420    S   ,       "   S   c   a   v   e   n   g   e   "   )   !   0
0042440        =       S   c   a   v   e   n   g   e  \r   I   n   s   e
0042460    r   t   K   e   y   w   o   r   d   (   k   b   d   K   T   ,
0042500        "   S   c   r   a   t   c   h   "   )   !   0       =    
0042520    S   c   r   a   t   c   h  \r  \r               [  \r        
0042540        k   b   d   C   S       =       I   n   i   t   C   m   d
0042560    (   5   0   0   ,       1   5   )       r   e   p   e   a   t
0042600    u   n   t   i   l       k   b   d   C   S       n   e       0
0042620   \r               W   s   s   (   k   b   d   C   S   ,       "
0042640    *   N   *   *   "   )  \r               l   e   t       k   t
0042660    e       =       G   e   t   K   e   y   w   o   r   d   (   k
0042700    b   d   C   S   ,       k   b   d   K   T   )  \r            
0042720    P   u   t   s   (   k   b   d   C   S   ,       $   *   S   )
0042740   \r               (   k   t   e   !   0   )   (   )  \r        
0042760        C   l   o   s   e   s   (   k   b   d   C   S   )  \r    
0043000            ]       r   e   p   e   a   t  \r   ]  \r  \r   /   /
0043020    - 376 001  \0   R 334   -   -   -   -   -   -   -   -   -   -
0043040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043140    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0043160    n   d       S   e   t   u   p   (   P   r   o   c   ,       n
0043200    u   m   V   P   a   g   e   s   )       b   e  \r   /   /   -
0043220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043340    -   -   -   -   -   -   -   -  \r   [  \r   l   e   t       b
0043360    u   f   f   P   t   r   ,       n   u   m   B   u   f   f   s
0043400        =       n   i   l   ,       (   n   u   m   V   M   e   m
0043420    B   u   f   s   -   n 376 001  \0 242 306   u   m   V   P   a
0043440    g   e   s   )       *   4  \r               [  \r            
0043460    b   u   f   f   P   t   r       =       S   n   a   r   f   B
0043500    u   f   f   e   r   (   0   ,       n   u   m   B   u   f   f
0043520    s   )   ;       i   f       b   u   f   f   P   t   r       n
0043540    e       0       b   r   e   a   k  \r               n   u   m
0043560    B   u   f   f   s       =       n   u   m   B   u   f   f   s
0043600        -   1  \r               i   f       n   u   m   B   u   f
0043620    f   s       e   q       0       t   h   e   n       I   F   S
0043640    E   r   r   o   r   (   1   3   )  \r               ]       r
0043660    e   p   e   a   t  \r   P   r   o   c   (   b   u   f   f   P
0043700    t   r   ,       n   u   m   B   u   f   f   s   )  \r   ]  \r
0043720   \r   /   /       T   h   e       1   6       b   e   l   o   w
0043740        i   s       4       o   p   e   n       f   i   l   e   s
0043760        (   l   p   t       +       3       s   o   r   t       f
0044000    i   l   e   s   )       +       1   2       p   a   g   e   s
0044020        f   o   r       o   v   e   r   l   a 376 001  \0   O 300
0044040    y   s  \r   /   /       T   h   e       1   2       p   a   g
0044060    e   s       f   o   r       o   v   e   r   l   a   y   s    
0044100    i   s       d   e   t   e   r   m   i   n   e   d       e   m
0044120    p   i   r   i   c   a   l   l   y  \r   /   /   -   -   -   -
0044140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044260    -   -   -   -   -  \r   a   n   d       S   e   t   u   p   P
0044300    a   s   s   2   (   )       b   e       S   e   t   u   p   (
0044320    P   a   s   s   2   ,       1   6   )  \r   /   /   -   -   -
0044340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044440  376 001  \0   h 222   -   -   -   -   -   -   -   -   -   -   -
0044460    -   -   -   -   -   -   -   -   -   -   -  \r  \r   /   /   -
0044500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0044620    -   -   -   -   -   -   -   -  \r   a   n   d       S   e   t
0044640    u   p   D   i   s   k   E   d   i   t   o   r   (   )       b
0044660    e       S   e   t   u   p   (   D   i   s   k   E   d   i   t
0044700    o   r   ,       1   0   )  \r   /   /   -   -   -   -   -   -
0044720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045040    -   -   -  \r  \f 376 001  \0 037 301  \r   /   /   -   -   -
0045060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045200    -   -   -   -   -   -  \r   a   n   d       S   c   a   v   e
0045220    n   g   e   (   )       b   e  \r   /   /   -   -   -   -   -
0045240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0045360    -   -   -   -  \r   [  \r   l   e   t       q   u   i   t   F
0045400    l   a   g       =       f   a   l   s   e  \r   l   e   t    
0045420    d   r   i   v   e   L   i   s   t       =       v   e   c    
0045440    7   ;       S   e   t   B   l   o   c 376 001  \0   _ 257   k
0045460    (   d   r   i   v   e   L   i   s   t   ,       -   1   ,    
0045500    8   )  \r   i   f       C   o   n   f   i   r   m   (   k   b
0045520    d   C   S   ,       "   *   N   A   r   e       a   l   l    
0045540    o   f       t   h   e       p   a   c   k   s       s   p   i
0045560    n   n   i   n   g   ?       "   )       t   h   e   n  \r    
0045600            [  \r               W   s   s   (   k   b   d   C   S
0045620    ,       "   *   N   H   o   w       m   a   n   y       p   a
0045640    c   k   s       a   r   e       t   h   e   r   e   ?       "
0045660    )  \r               l   e   t       n   u   m   P   a   c   k
0045700    s       =       G   e   t   N   u   m   b   e   r   (   k   b
0045720    d   C   S   )  \r               i   f       n   u   m   P   a
0045740    c   k   s       g   r       8       t   h   e   n       [    
0045760    W   s   s   (   k   b   d   C   S   ,       "   *   N   T   o
0046000    o       m   a   n   y   :       8       m   a   x   "   )   ;
0046020        r   e   t   u   r   n       ]  \r                        
0046040    [  \r                           l   e   t       d   i   s 376
0046060  001  \0 301 243   k       =       O   p   e   n   D   i   s   k
0046100    (   "   *   N   S   c   a   n       p   a   c   k       o   n
0046120        d   r   i   v   e       "   ,       0   ,       t   r   u
0046140    e   ,       f   a   l   s   e   )  \r                        
0046160    i   f       d   i   s   k       n   e       0       t   h   e
0046200    n  \r                                       [  \r            
0046220                            l   e   t       d   r   i   v   e   N
0046240    u   m   b   e   r       =       d   i   s   k   >   >   D   S
0046260    K   .   d   r   i   v   e   N   u   m   b   e   r  \r        
0046300                                C   l   o   s   e   D   i   s   k
0046320    (   d   i   s   k   )  \r                                    
0046340    l   e   t       d   u   p   l   i   c   a   t   e   ,       h
0046360    o   l   e       =       f   a   l   s   e   ,       -   1  \r
0046400                                        f   o   r       i       =
0046420        0       t   o       7       d   o  \r                    
0046440                                [  \r                            
0046460                  376 001  \0  \r 213       i   f       d   r   i
0046500    v   e   L   i   s   t   !   i       e   q       d   r   i   v
0046520    e   N   u   m   b   e   r       t   h   e   n       d   u   p
0046540    l   i   c   a   t   e       =       t   r   u   e  \r        
0046560                                            i   f       d   r   i
0046600    v   e   L   i   s   t   !   i       e   q       -   1       &
0046620        h   o   l   e       e   q       -   1       t   h   e   n
0046640        h   o   l   e       =       i  \r                        
0046660                            ]  \r                                
0046700        t   e   s   t       d   u   p   l   i   c   a   t   e  \r
0046720                                                    i   f   s   o
0046740        W   s   s   (   k   b   d   C   S   ,       "   *   N   S
0046760    a   m   e       d   r   i   v   e       s   p   e   c   i   f
0047000    i   e   d       t   w   i   c   e   "   )  \r                
0047020                                    i   f   n   o   t  \r        
0047040                                                        [  \r    
0047060                                      376 001  \0 364   e        
0047100                d   r   i   v   e   L   i   s   t   !   h   o   l
0047120    e       =       d   r   i   v   e   N   u   m   b   e   r  \r
0047140                                                                i
0047160    f       h   o   l   e   +   1       e   q       n   u   m   P
0047200    a   c   k   s       b   r   e   a   k  \r                    
0047220                                            ]  \r                
0047240                        ]  \r                           ]       r
0047260    e   p   e   a   t  \r               q   u   i   t   F   l   a
0047300    g       =       C   o   n   f   i   r   m   (   k   b   d   C
0047320    S   ,       "   *   N   R   e   t   u   r   n       t   o    
0047340    E   x   e   c       i   f       a   l   l       g   o   e   s
0047360        w   e   l   l   ?       "   )  \r               ]  \r   i
0047400    n   i   t   L   p   t   F   l   a   g       =       t   r   u
0047420    e  \r   l   e   t       d   r   i   v   e   I   n   d   e   x
0047440        =       0  \r   l   e   t       o   k       =       v   a
0047460    l   o   f  \r               [  \r               o   k 376 001
0047500   \0   m 350       =       P   a   s   s   1   (   d   r   i   v
0047520    e   L   i   s   t   !   d   r   i   v   e   I   n   d   e   x
0047540    )  \r               d   r   i   v   e   I   n   d   e   x    
0047560    =       d   r   i   v   e   I   n   d   e   x       +   1  \r
0047600                u   n   l   e   s   s       o   k       r   e   s
0047620    u   l   t   i   s       f   a   l   s   e           /   /   s
0047640    o   m   e   t   h   i   n   g       i   s       w   r   o   n
0047660    g  \r               i   f       o   k       e   q       1   2
0047700    3   4   5   6   b       r   e   s   u   l   t   i   s       t
0047720    r   u   e           /   /   a   l   l       p   a   c   k   s
0047740        p   r   e   s   e   n   t       a   n   d       a   c   c
0047760    o   u   n   t   e   d       f   o   r  \r               /   /
0050000        o   k       s   h   o   u   l   d       b   e       -   1
0050020        n   o   w   ,       i   n   d   i   c   a   t   i   n   g
0050040        s   u   c   c   e   s   s       s   c   a   n   n   i   n
0050060    g       t   h   a   t       p   a   c   k  \r               ]
0050100        r   e 376 001  \0   C   L   p   e   a   t  \r   i   f    
0050120    o   k       t   h   e   n       S   e   t   u   p   P   a   s
0050140    s   2   (   )  \r   i   f       q   u   i   t   F   l   a   g
0050160        t   h   e   n       Q   u   i   t   (   )  \r   ]  \r  \f
0050200   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0050220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0050320    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0050340        D   e   b   u   g   (   )       b   e       T   o   g   g
0050360    l   e   F   l   a   g   (   l   v       d   e   b   u   g   F
0050400    l   a   g   )  \r   /   /   -   -   -   -   -   -   -   -   -
0050420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0050500    -   -   -   -   -   -   -   - 376 001  \0 376 223   -   -   -
0050520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0050540    -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -   -
0050560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0050700    -   -  \r   a   n   d       I   n   i   t   L   P   T   (   )
0050720        b   e       T   o   g   g   l   e   F   l   a   g   (   l
0050740    v       i   n   i   t   L   p   t   F   l   a   g   )  \r   /
0050760    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0051000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051100    -   -   -   -   -   -   -   -   -   -  \r  \r   / 376 001  \0
0051120    z 375   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0051140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051240    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0051260        I   n   i   t   T   r   e   e   (   )       b   e       T
0051300    o   g   g   l   e   F   l   a   g   (   l   v       i   n   i
0051320    t   T   r   e   e   F   l   a   g   )  \r   /   /   -   -   -
0051340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051460    -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -
0051500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0051520    -   - 376 001  \0  \b   D   -   -   -   -   -   -   -   -   -
0051540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0051620    -   -   -   -   -   -   -   -  \r   a   n   d       E   d   i
0051640    t   H   o   m   e   (   )       b   e       T   o   g   g   l
0051660    e   F   l   a   g   (   l   v       e   d   i   t   H   o   m
0051700    e   F   l   a   g   )  \r   /   /   -   -   -   -   -   -   -
0051720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052040    -   -  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0052060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052120    -   -   -   -   -   -   - 376 001  \0 275 225   -   -   -   -
0052140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052200    -   -   -   -  \r   a   n   d       J   u   s   t   F   i   x
0052220    D   i   r   (   )       b   e       T   o   g   g   l   e   F
0052240    l   a   g   (   l   v       j   u   s   t   F   i   x   D   i
0052260    r   F   l   a   g   )  \r   /   /   -   -   -   -   -   -   -
0052300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052420    -   -  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0052440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052520    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0   Q
0052540  276   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0052560    -   -   -   -  \r   a   n   d       Q   u   i   t   (   )    
0052600    b   e       f   i   n   i   s   h  \r   /   /   -   -   -   -
0052620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052740    -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -   -
0052760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053100    -   -  \r   a   n   d       T   o   g   g   l   e   F   l   a
0053120    g   (   l   v   F   l   a   g   )       b   e  \r   /   /   -
0053140    - 376 001  \0   m   {   -   -   -   -   -   -   -   -   -   -
0053160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053260    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /
0053300        t   o   g   g   l   e       a       f   l   a   g  \r   [
0053320   \r   l   v   F   l   a   g   !   0       =       n   o   t    
0053340    l   v   F   l   a   g   !   0  \r   W   s   s   (   k   b   d
0053360    C   S   ,       l   v   F   l   a   g   !   0   ?       "   Y
0053400    e   s   "   ,       "   N   o   "   )  \r   ]  \r  \r   /   /
0053420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053540    -   -   -   -   -   - 376 001  \0   h 266   -   -   -  \r   a
0053560    n   d       S   c   r   a   t   c   h   (   n   i   l   ;    
0053600    n   u   m   a   r   g   s       n   a   )       =       v   a
0053620    l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -   -
0053640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0053760    [  \r   i   f       s   c   r   a   t   c   h   D   i   s   k
0054000        n   e       0       &       s   c   r   a   t   c   h   D
0054020    i   s   k       n   e       s   y   s   D   i   s   k       t
0054040    h   e   n  \r               C   l   o   s   e   D   i   s   k
0054060    (   s   c   r   a   t   c   h   D   i   s   k   ,       t   r
0054100    u   e   )  \r   i   f       n   a       g   r       0       t
0054120    h   e   n       W   s   (   "   *   N   S   c   r   a   t   c
0054140    h       "   )  \r   s   c   r   a   t   c 376 001  \0   % 337
0054160    h   D   i   s   k       =       O   p   e   n   D   i   s   k
0054200    (   "   d   i   s   k   :       "   ,       t   r   u   e   ,
0054220        f   a   l   s   e   ,       t   r   u   e   )  \r   i   f
0054240        s   c   r   a   t   c   h   D   i   s   k       e   q    
0054260    0       t   h   e   n       W   s   s   (   k   b   d   C   S
0054300    ,       "       (   I   s       t   h   e       p   a   c   k
0054320        f   o   r   m   a   t   t   e   d   ?   )   "   )  \r   r
0054340    e   s   u   l   t   i   s       s   c   r   a   t   c   h   D
0054360    i   s   k  \r   ]  \r  \f  \r   /   /   -   -   -   -   -   -
0054400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0054520    -   -   -  \r   a   n   d       S   c   a   v   N   o   B   u
0054540    f   s   P   r   o   c   (   )       b   e       C   a   l   l
0054560  376 001  \0  \r 247   S   w   a   t   (   "   N   o       V   M
0054600    e   m       b   u   f   f   e   r   s   "   )  \r   /   /   -
0054620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0054740    -   -   -   -   -   -   -   -  \r  \r   /   /   -   -   -   -
0054760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0055100    -   -   -   -   -  \r   l   e   t       S   p   l   i   t   P
0055120    u   t   s   (   s   t   ,       i   t   e   m   )       b   e
0055140   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0055160    -   -   -   -   - 376 001  \0 360 310   -   -   -   -   -   -
0055200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0055300    -  \r   /   /       s   p   l   i   t       s   t   r   e   a
0055320    m       o   p   e   r   a   t   i   o   n       f   o   r    
0055340    d   s   p  \r   [  \r   P   u   t   s   (   s   t   >   >   S
0055360    T   .   p   a   r   1   ,       i   t   e   m   )  \r   P   u
0055400    t   s   (   s   t   >   >   S   T   .   p   a   r   2   ,    
0055420    i   t   e   m   )  \r   ]  \r  \r   /   /   -   -   -   -   -
0055440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0055560    -   -   -   -  \r   a   n   d       L 376 001  \0 254 242   o
0055600    g   E   r   r   o   r   s   (   s   t   ,       e   c   ,    
0055620    p   a   r   a   m   )       =       v   a   l   o   f  \r   /
0055640    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0055660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0055760    -   -   -   -   -   -   -   -   -   -  \r   [  \r   m   a   n
0056000    i   f   e   s   t  \r               [  \r               B   F
0056020    S   D   i   s   k   F   u   l   l       =       1   1   0   2
0056040   \r               T   F   S   D   i   s   k   F   u   l   l    
0056060    =       1   4   0   2  \r               ]  \r   i   f       e
0056100    c       e   q       B   F   S   D   i   s   k   F   u   l   l
0056120        %       e   c       e   q       T   F   S   D   i   s   k
0056140    F   u   l   l       t   h   e   n  \r               [  \r    
0056160            C   l   o   s   e   s   (   d   s   p   >   >   S 376
0056200  001  \0 304 345   T   .   p   a   r   2   )  \r               d
0056220    s   p   >   >   S   T   .   p   a   r   2       =       A   l
0056240    l   o   c   a   t   e   (   s   y   s   Z   o   n   e   ,    
0056260    l   S   T   )  \r               S   e   t   B   l   o   c   k
0056300    (   d   s   p   >   >   S   T   .   p   a   r   2   ,       N
0056320    o   o   p   ,       l   S   T   )  \r               W   s   (
0056340    "   *   N   D   P   0       i   s       f   u   l   l       -
0056360        l   o   g       f   i   l   e       t   r   u   n   c   a
0056400    t   e   d   *   N   "   )  \r               R   e   t   u   r
0056420    n   F   r   o   m   (   P   u   t   s   )  \r               ]
0056440   \r   S   y   s   E   r   r   (   s   t   ,       e   c   ,    
0056460    p   a   r   a   m   )  \r   ]  \r  \f  \r   /   /   -   -   -
0056500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0056600    -   -   -   - 376 001  \0   ` 372   -   -   -   -   -   -   -
0056620    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0056640    E   x   t   e   n   d   F   i   l   e   (   t   f   s   N   a
0056660    m   e   ,       m   a   x   P   N   ,       m   i   n   P   N
0056700    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0056720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057040   \r   [  \r   /   /       E   x   t   e   n   d   s       a    
0057060    f   i   l   e       u   s   i   n   g       t   h   e       l
0057100    e   a   s   t       p   o   s   s   i   b   l   e       n   u
0057120    m   b   e   r       o   f       p   a   g   e       r   u   n
0057140    s   ,  \r   /   /           e   a   c   h       a   s       l
0057160    o   n   g       a   s       p   o   s   s   i   b   l   e   .
0057200   \r   l   e   t       i   f   p     376 001  \0 312 307   =    
0057220    v   e   c       l   F   P   ;       Z   e   r   o   (   i   f
0057240    p   ,       l   F   P   )  \r   l   e   t       s   f       =
0057260        O   p   e   n   F   i   l   e   (   t   f   s   N   a   m
0057300    e   ,       k   s   T   y   p   e   R   e   a   d   O   n   l
0057320    y   ,       0   ,       0   ,       i   f   p   ,       0   ,
0057340        0   ,       0   ,       s   c   a   v   D   i   s   k   )
0057360   \r   l   e   t       p   n   ,       f   a       =       -   1
0057400    ,       v   e   c       l   F   A  \r   i   f       s   f    
0057420    n   e       0       t   h   e   n  \r               [  \r    
0057440            F   i   l   e   L   e   n   g   t   h   (   s   f   )
0057460   \r               G   e   t   C   u   r   r   e   n   t   F   a
0057500    (   s   f   ,       f   a   )  \r               C   l   o   s
0057520    e   s   (   s   f   )  \r               ]  \r   l   e   t    
0057540    c   a       =       A   l   l   o   c   a   t   e   (   s   y
0057560    s   Z   o   n   e   ,       w   o   r   d   s   P   e   r   P
0057600    a   g   e   )   ;       Z   e   r   o   (   c   a   , 376 001
0057620   \0 303 016       w   o   r   d   s   P   e   r   P   a   g   e
0057640    )  \r               [  \r               l   e   t       h   o
0057660    l   e   S   i   z   e       =       n   i   l  \r            
0057700    l   e   t       h   o   l   e   V   D   A       =       D   i
0057720    s   k   F   i   n   d   H   o   l   e   (   s   c   a   v   D
0057740    i   s   k   ,       m   a   x   P   N   -   p   n   ,       l
0057760    v       h   o   l   e   S   i   z   e   )  \r               i
0060000    f       h   o   l   e   V   D   A       e   q       -   1    
0060020    t   e   s   t       p   n       u   l   s       m   i   n   P
0060040    N  \r                           i   f   s   o       I   F   S
0060060    E   r   r   o   r   (   e   c   F   i   l   e   S   y   s   t
0060100    e   m   F   u   l   l   )  \r                           i   f
0060120    n   o   t       b   r   e   a   k  \r               R   e   l
0060140    e   a   s   e   D   i   s   k   P   a   g   e   (   s   c   a
0060160    v   D   i   s   k   ,       A   s   s   i   g   n   D   i   s
0060200    k   P   a   g   e   (   s   c   a   v   D   i   s   k   ,    
0060220    h   o   l 376 001  \0 335 331   e   V   D   A   -   1   )   )
0060240   \r               t   e   s   t       p   n       e   q       -
0060260    1  \r                           i   f   s   o       s   f    
0060300    =       O   p   e   n   F   i   l   e   (   t   f   s   N   a
0060320    m   e   ,       0   ,       0   ,       0   ,       i   f   p
0060340    ,       0   ,       0   ,       0   ,       s   c   a   v   D
0060360    i   s   k   )  \r                           i   f   n   o   t
0060400   \r                                       [  \r                
0060420                        l   e   t       D   A   s       =       v
0060440    e   c       2  \r                                       D   A
0060460    s   !   0       =       e   o   f   D   A   ;       D   A   s
0060500    !   1       =       f   i   l   l   I   n   D   A   ;       D
0060520    A   s   !   2       =       e   o   f   D   A  \r            
0060540                            W   r   i   t   e   D   i   s   k   P
0060560    a   g   e   s   (   s   c   a   v   D   i   s   k   ,       0
0060600    ,       D   A   s   -   p   n   ,       i   f   p   ,       p
0060620    n   +   1   ,       p   n   + 376 001  \0 326 002   1   ,    
0060640    D   C   w   r   i   t   e   L   D   ,       0   ,       b   y
0060660    t   e   s   P   e   r   P   a   g   e   ,       c   a   )  \r
0060700                                        D   A   s   !   0       =
0060720        f   a   >   >   F   A   .   d   a  \r                    
0060740                    W   r   i   t   e   D   i   s   k   P   a   g
0060760    e   s   (   s   c   a   v   D   i   s   k   ,       0   ,    
0061000    D   A   s   -   p   n   ,       i   f   p   ,       p   n   +
0061020    1   ,       p   n   +   1   ,       -   1   ,       0   ,    
0061040    b   y   t   e   s   P   e   r   P   a   g   e   ,       c   a
0061060    )  \r                                       D   A   s   !   0
0061100        =       f   i   l   l   I   n   D   A   ;       D   A   s
0061120    !   1       =       f   a   >   >   F   A   .   d   a   ;    
0061140    D   A   s   !   2       =       f   i   l   l   I   n   D   A
0061160   \r                                       A   c   t   O   n   D
0061200    i   s   k   P   a   g   e   s   (   s   c   a   v   D   i   s
0061220    k   ,       0   ,       D   A   s   -   p   n   + 376 001  \0
0061240  361 325   1   ,       i   f   p   ,       p   n   ,       p   n
0061260    ,       D   C   r   e   a   d   D   ,       0   ,       0   ,
0061300        c   a   )  \r                                       D   A
0061320    s   !   2       =       h   o   l   e   V   D   A  \r        
0061340                                W   r   i   t   e   D   i   s   k
0061360    P   a   g   e   s   (   s   c   a   v   D   i   s   k   ,    
0061400    0   ,       D   A   s   -   p   n   +   1   ,       i   f   p
0061420    ,       p   n   ,       p   n   ,       -   1   ,       0   ,
0061440        b   y   t   e   s   P   e   r   P   a   g   e   ,       c
0061460    a   )  \r                                       s   f       =
0061500        C   r   e   a   t   e   D   i   s   k   S   t   r   e   a
0061520    m   (   i   f   p   ,       0   ,       0   ,       0   ,    
0061540    0   ,       0   ,       0   ,       s   c   a   v   D   i   s
0061560    k   )  \r                                       f   a   >   >
0061600    F   A   .   d   a       =       h   o   l   e   V   D   A  \r
0061620                                        f   a   >   >   F   A   .
0061640    p   a 376  \0 343 365 226   g   e   N   u   m   b   e   r    
0061660    =       p   n   +   1  \r                                    
0061700    f   a   >   >   F   A   .   c   h   a   r   P   o   s       =
0061720        0  \r                                       J   u   m   p
0061740    T   o   F   a   (   s   f   ,       f   a   )  \r            
0061760                            ]  \r               P   o   s   i   t
0062000    i   o   n   P   a   g   e   (   s   f   ,       p   n   +   h
0062020    o   l   e   S   i   z   e   )  \r               G   e   t   C
0062040    u   r   r   e   n   t   F   a   (   s   f   ,       f   a   )
0062060   \r               C   l   o   s   e   s   (   s   f   )  \r    
0062100            p   n       =       f   a   >   >   F   A   .   p   a
0062120    g   e   N   u   m   b   e   r  \r               ]       r   e
0062140    p   e   a   t   u   n   t   i   l       p   n       e   q    
0062160    m   a   x   P   N  \r   F   r   e   e   (   s   y   s   Z   o
0062200    n   e   ,       c   a   )  \r   ]  \r 377  \0  \0   I   f   s
0062220    S   c   a   v   O   v   I   n   i   t   .   b   c   p   l  \0
0062240  373 224 214   !   h  \0  \0 376 001  \0 342   Z   /   /       I
0062260    f   s   S   c   a   v   O   v   I   n   i   t   .   b   c   p
0062300    l       -       o   n   c   e       o   n   l   y       c   o
0062320    d   e  \r   /   /       C   o   p   y   r   i   g   h   t    
0062340    X   e   r   o   x       C   o   r   p   o   r   a   t   i   o
0062360    n       1   9   7   9  \r   /   /       L   a   s   t       m
0062400    o   d   i   f   i   e   d       D   e   c   e   m   b   e   r
0062420        2   2   ,       1   9   7   9           3   :   0   3    
0062440    P   M       b   y       B   o   g   g   s  \r  \r   g   e   t
0062460        "   D   i   s   k   s   .   d   "  \r  \r   e   x   t   e
0062500    r   n   a   l  \r   [  \r   /   /       o   u   t   g   o   i
0062520    n   g       p   r   o   c   e   d   u   r   e   s  \r   D   e
0062540    c   l   a   r   e   A   l   l   O   E   P   s   ;       I   n
0062560    i   t   D   i   s   k   s   F   i   n   i   s   h  \r  \r   /
0062600    /       i   n   c   o   m   i   n   g       p   r   o   c   e
0062620    d   u   r   e   s  \r   P   a   s   s   1   ;       P   a   s
0062640    s   2   ;       D   i   s   k   E   d   i   t 376 001  \0 200
0062660  276   o   r   ;       D   u   m   p   L   P   T   ;       D   u
0062700    m   p   T   r   e   e  \r  \r   D   e   c   l   a   r   e   O
0062720    E   P   ;       I   n   i   t   B   T   r   e   e   O   E   P
0062740    ;       I   n   i   t   D   i   s   k   S   t   r   e   a   m
0062760    s   O   E   P  \r   I   n   i   t   C   m   d   S   c   a   n
0063000    O   E   P   ;       I   n   i   t   K   e   y   w   o   r   d
0063020    O   E   P   ;       I   n   i   t   S   t   r   i   n   g   O
0063040    E   P  \r  \r   T   F   S   W   r   i   t   e   P   a   g   e
0063060    s   ;       T   F   S   A   s   s   i   g   n   D   i   s   k
0063100    P   a   g   e   ;       T   F   S   C   r   e   a   t   e   F
0063120    i   l   e  \r   T   F   S   D   e   l   e   t   e   P   a   g
0063140    e   s   ;       T   F   S   R   e   l   e   a   s   e   D   i
0063160    s   k   P   a   g   e   ;       T   F   S   C   l   o   s   e
0063200   \r   I   F   S   O   p   e   n   D   D   ;       B   F   S   F
0063220    l   u   s   h   D   D   ;       B   F   S   D   e   s   t   r
0063240    o   y   D   D   M   g   r  \r   I   F   S   C   l   o   s   e
0063260    D 376 001  \0 212   :   D   ;       I   F   S   L   o   c   k
0063300    D   D   ;       I   F   S   U   n   l   o   c   k   D   D   ;
0063320        I   F   S   R   e   a   d   D   D   P   a   g   e  \r   B
0063340    F   S   C   l   o   s   e   D   D   ;       B   F   S   L   o
0063360    c   k   D   D   ;       B   F   S   U   n   l   o   c   k   D
0063400    D   ;       B   F   S   R   e   a   d   D   D   P   a   g   e
0063420   \r   B   F   S   W   r   i   t   e   P   a   g   e   s   ;    
0063440    B   F   S   A   s   s   i   g   n   D   i   s   k   P   a   g
0063460    e   ;       B   F   S   C   r   e   a   t   e   F   i   l   e
0063500   \r   B   F   S   D   e   l   e   t   e   P   a   g   e   s   ;
0063520        B   F   S   R   e   l   e   a   s   e   D   i   s   k   P
0063540    a   g   e   ;       B   F   S   C   l   o   s   e  \r  \r   I
0063560    F   S   F   i   n   i   s   h   ;       W   s   s   ;       I
0063600    F   S   E   r   r   o   r   ;       P   r   i   n   t   R   e
0063620    a   l   D   A  \r  \r   /   /       i   n   c   o   m   i   n
0063640    g       s   t   a   t   i   c   s  \r   l   v   U   s   e   r
0063660    F   i   n   i   s   h 376 001  \0 272   )   P   r   o   c   ;
0063700        b   f   s   D   D   M   g   r   ;       s   y   s   D   i
0063720    s   k  \r   ]  \r  \r   m   a   n   i   f   e   s   t       e
0063740    c   B   a   d   U   F   P       =       2   3  \r  \f  \r   /
0063760    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0064000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0064060    -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e   t
0064100        D   e   c   l   a   r   e   A   l   l   O   E   P   s   (
0064120    o   e   v   )       b   e  \r   /   /   -   -   -   -   -   -
0064140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0064240    -   -   -   -   -  \r   [  \r   I   n   i   t   B   T   r   e
0064260    e   O   E   P   (   o   e   v   )  \r   I 376 001  \0 034   m
0064300    n   i   t   D   i   s   k   S   t   r   e   a   m   s   O   E
0064320    P   (   o   e   v   )  \r   I   n   i   t   C   m   d   S   c
0064340    a   n   O   E   P   (   o   e   v   )  \r   I   n   i   t   K
0064360    e   y   w   o   r   d   O   E   P   (   o   e   v   )  \r   I
0064400    n   i   t   S   t   r   i   n   g   O   E   P   (   o   e   v
0064420    )  \r  \r   i   f       @   l   v   U   s   e   r   F   i   n
0064440    i   s   h   P   r   o   c       n   e       I   F   S   F   i
0064460    n   i   s   h       t   h   e   n       I   F   S   E   r   r
0064500    o   r   (   e   c   B   a   d   U   F   P   )  \r  \r   D   e
0064520    c   l   a   r   e   O   E   P   (   o   e   v   ,       l   v
0064540        D   i   s   k   E   d   i   t   o   r   ,       l   v    
0064560    P   a   s   s   1   ,       l   v       P   a   s   s   2   ,
0064600   \r       l   v       D   u   m   p   L   P   T   ,       l   v
0064620        D   u   m   p   T   r   e   e   )  \r   D   e   c   l   a
0064640    r   e   O   E   P   (   o   e   v   ,       l   v       I   F
0064660    S   O   p   e   n   D   D   ,       l   v       I   F   S   C
0064700  376 001  \0   e 315   l   o   s   e   D   D   ,       l   v    
0064720    I   F   S   L   o   c   k   D   D   ,  \r       l   v       I
0064740    F   S   U   n   l   o   c   k   D   D   ,       l   v       I
0064760    F   S   R   e   a   d   D   D   P   a   g   e   )  \r   D   e
0065000    c   l   a   r   e   O   E   P   (   o   e   v   ,       l   v
0065020        T   F   S   W   r   i   t   e   P   a   g   e   s   ,    
0065040    l   v       T   F   S   D   e   l   e   t   e   P   a   g   e
0065060    s   ,       l   v       T   F   S   C   r   e   a   t   e   F
0065100    i   l   e   ,  \r       l   v       T   F   S   A   s   s   i
0065120    g   n   D   i   s   k   P   a   g   e   ,       l   v       T
0065140    F   S   R   e   l   e   a   s   e   D   i   s   k   P   a   g
0065160    e   ,       l   v       T   F   S   C   l   o   s   e   )  \r
0065200    D   e   c   l   a   r   e   O   E   P   (   o   e   v   ,    
0065220    l   v       B   F   S   C   l   o   s   e   D   D   ,       l
0065240    v       B   F   S   L   o   c   k   D   D   ,       l   v    
0065260    B   F   S   U   n   l   o   c   k   D   D   ,  \r       l   v
0065300        B   F   S   R 376 001  \0 275 005   e   a   d   D   D   P
0065320    a   g   e   ,       l   v       B   F   S   F   l   u   s   h
0065340    D   D   ,       l   v       B   F   S   D   e   s   t   r   o
0065360    y   D   D   M   g   r   )  \r   D   e   c   l   a   r   e   O
0065400    E   P   (   o   e   v   ,       l   v       B   F   S   W   r
0065420    i   t   e   P   a   g   e   s   ,       l   v       B   F   S
0065440    D   e   l   e   t   e   P   a   g   e   s   ,       l   v    
0065460    B   F   S   C   r   e   a   t   e   F   i   l   e   ,  \r    
0065500    l   v       B   F   S   A   s   s   i   g   n   D   i   s   k
0065520    P   a   g   e   ,       l   v       B   F   S   R   e   l   e
0065540    a   s   e   D   i   s   k   P   a   g   e   ,       l   v    
0065560    B   F   S   C   l   o   s   e   )  \r   D   e   c   l   a   r
0065600    e   O   E   P   (   o   e   v   ,       l   v       I   F   S
0065620    F   i   n   i   s   h   ,       l   v       W   s   s   ,    
0065640    l   v       P   r   i   n   t   R   e   a   l   D   A   )  \r
0065660    ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0065700    -   -   -   -   -   -   -   -   -   - 376 001  \0   z   #   -
0065720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0066000    -   -   -   -   -  \r   a   n   d       I   n   i   t   D   i
0066020    s   k   s   F   i   n   i   s   h   (   )       b   e  \r   /
0066040    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0066060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0066140    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   @
0066160    l   v   U   s   e   r   F   i   n   i   s   h   P   r   o   c
0066200        =       I   F   S   F   i   n   i   s   h           /   /
0066220    n   o   w       i   n   s   t   a   l   l       p   o   i   n
0066240    t   e   r       t   o       s   w   a   p   p   a   b   l   e
0066260        v   e   r   s   i   o   n  \r  \r   s   y   s   D   i   s
0066300    k   >   >   D   S   K   .   W   r   i   t   e   D   i   s 376
0066320  001  \0   A 210   k   P   a   g   e   s       =       B   F   S
0066340    W   r   i   t   e   P   a   g   e   s  \r   s   y   s   D   i
0066360    s   k   >   >   D   S   K   .   A   s   s   i   g   n   D   i
0066400    s   k   P   a   g   e       =       B   F   S   A   s   s   i
0066420    g   n   D   i   s   k   P   a   g   e  \r   s   y   s   D   i
0066440    s   k   >   >   D   S   K   .   C   r   e   a   t   e   D   i
0066460    s   k   F   i   l   e       =       B   F   S   C   r   e   a
0066500    t   e   F   i   l   e  \r   s   y   s   D   i   s   k   >   >
0066520    D   S   K   .   D   e   l   e   t   e   D   i   s   k   P   a
0066540    g   e   s       =       B   F   S   D   e   l   e   t   e   P
0066560    a   g   e   s  \r   s   y   s   D   i   s   k   >   >   D   S
0066600    K   .   R   e   l   e   a   s   e   D   i   s   k   P   a   g
0066620    e       =       B   F   S   R   e   l   e   a   s   e   D   i
0066640    s   k   P   a   g   e  \r   s   y   s   D   i   s   k   >   >
0066660    D   S   K   .   C   l   o   s   e   D   i   s   k       =    
0066700    B   F   S   C   l   o   s   e  \r  \r   b   f   s   D   D   M
0066720    g   r   >   > 376  \0 346 260 220   D   D   M   g   r   .   L
0066740    o   c   k   D   D       =       B   F   S   L   o   c   k   D
0066760    D  \r   b   f   s   D   D   M   g   r   >   >   D   D   M   g
0067000    r   .   R   e   a   d   D   D   P   a   g   e       =       B
0067020    F   S   R   e   a   d   D   D   P   a   g   e  \r   b   f   s
0067040    D   D   M   g   r   >   >   D   D   M   g   r   .   U   n   l
0067060    o   c   k   D   D       =       B   F   S   U   n   l   o   c
0067100    k   D   D  \r   b   f   s   D   D   M   g   r   >   >   D   D
0067120    M   g   r   .   F   l   u   s   h   D   D       =       B   F
0067140    S   F   l   u   s   h   D   D  \r   b   f   s   D   D   M   g
0067160    r   >   >   D   D   M   g   r   .   C   l   o   s   e   D   D
0067200        =       B   F   S   C   l   o   s   e   D   D  \r   b   f
0067220    s   D   D   M   g   r   >   >   D   D   M   g   r   .   D   e
0067240    s   t   r   o   y   D   D   M   g   r       =       B   F   S
0067260    D   e   s   t   r   o   y   D   D   M   g   r  \r   ]  \r 377
0067300   \0  \0   I   f   s   S   c   a   v   C   S   D   s   p   .   b
0067320    c   p   l  \0 373 226   ? 027   S  \0  \0 376 001  \0 317 263
0067340    /   /       I   f   s   S   c   a   v   C   S   D   s   p   .
0067360    b   c   p   l       -   -       I   f   s       S   c   a   v
0067400    e   n   g   e   r       d   e   p   e   n   d   e   n   t    
0067420    p   o   r   t   i   o   n       o   f       t   h   e  \r   /
0067440    /  \t   c   o   m   m   a   n   d       s   c   a   n   n   e
0067460    r       p   a   c   k   a   g   e   .           T   h   i   s
0067500        f   i   l   e       s   t   a   r   t   e   d       o   u
0067520    t       l   i   f   e       a   s  \r   /   /  \t   C   m   d
0067540    S   c   a   n   D   i   s   p   l   a   y   .   b   c   p   l
0067560   \r   /   /       C   o   p   y   r   i   g   h   t       X   e
0067600    r   o   x       C   o   r   p   o   r   a   t   i   o   n    
0067620    1   9   7   9   ,       1   9   8   0  \r   /   /       L   a
0067640    s   t       m   o   d   i   f   i   e   d       N   o   v   e
0067660    m   b   e   r       1   6   ,       1   9   8   0           3
0067700    :   1   1       P   M       b   y       B   o   g   g   s  \r
0067720   \r   g   e   t       "   C   m   d   S   c   a   n   .   d   e
0067740  376 001  \0   $ 216   c   l   "  \r   g   e   t       "   A   l
0067760    t   o   D   e   f   s   .   d   "  \r  \r   e   x   t   e   r
0070000    n   a   l  \r   [  \r   /   /       o   u   t   g   o   i   n
0070020    g       p   r   o   c   e   d   u   r   e   s  \r   D   e   f
0070040    E   r   a   s   e   ;       D   e   f   E   r   r   o   r   ;
0070060        D   e   f   B   r   e   a   k   ;       D   e   f   E   c
0070100    h   o   ;       C   m   d   E   r   r   o   r   ;       I   n
0070120    v   e   r   t   W   i   n   d   o   w  \r  \r   /   /       i
0070140    n   c   o   m   i   n   g       p   r   o   c   e   d   u   r
0070160    e   s  \r   C   h   a   r   W   i   d   t   h   ;       G   e
0070200    t   B   i   t   P   o   s   ;       G   e   t   L   m   a   r
0070220    g   ;       E   r   a   s   e   B   i   t   s  \r   P   u   t
0070240    s   ;       R   e   s   e   t   s   ;       W   s   s   ;    
0070260    S   y   s   E   r   r   ;       N   o   o   p  \r   C   u   r
0070300    r   e   n   t   P   h   r   a   s   e   ;       B   a   c   k
0070320    u   p   P   h   r   a   s   e   ;       D   i   s   m   i   s
0070340    s  \r   F   i   l 376 001  \0 356  \t   e   P   o   s   ;    
0070360    S   e   t   F   i   l   e   P   o   s   ;       D   o   u   b
0070400    l   e   I   n   c   r   e   m   e   n   t  \r   ]  \r  \r  \r
0070420    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0070440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0070520    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   l   e
0070540    t       D   e   f   E   r   a   s   e   (   c   s   ,       f
0070560    i   r   s   t   ,       l   a   s   t   ,       c   o   n   t
0070600    e   x   t   )       b   e  \r   /   /   -   -   -   -   -   -
0070620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0070720    -   -   -   -   -  \r   [  \r   /   /   s   c   a   v   e   n
0070740    g   e   r   '   s       d   s   p     376 001  \0   ? 032   i
0070760    s       a       s   p   l   i   t       s   t   r   e   a   m
0071000    :  \r   l   e   t       d   s       =       c   s   >   >   C
0071020    S   .   d   s   p   S   >   >   S   T   .   p   a   r   1    
0071040        /   /   p   a   r   1       -   >       d   i   s   p   l
0071060    a   y       s   t   r   e   a   m  \r   l   e   t       k   s
0071100        =       c   s   >   >   C   S   .   d   s   p   S   >   >
0071120    S   T   .   p   a   r   2           /   /   p   a   r   2    
0071140    -   >       d   i   s   k       s   t   r   e   a   m  \r   l
0071160    e   t       b   i   t   s       =       0  \r   l   e   t    
0071200    c   h   a   r   s       =       0  \r   f   o   r       i    
0071220    =       f   i   r   s   t       t   o       l   a   s   t    
0071240    d   o  \r               [  \r               l   e   t       c
0071260    h   a   r       =       c   s   >   >   C   S   .   b   u   f
0071300    >   >   B   u   f   ^   i  \r               i   f       c   h
0071320    a   r       l   s       #   2   0   0       t   h   e   n  \r
0071340                            [  \r                           i 376
0071360  001  \0  \r 233   f       c   h   a   r       e   q       $   *
0071400    n       t   h   e   n       b   i   t   s       =       9   9
0071420    9   9  \r                           c   h   a   r   s       =
0071440        c   h   a   r   s       +   1  \r                        
0071460    b   i   t   s       =       b   i   t   s       +       (   c
0071500    h   a   r       g   e       #   4   0   ?       C   h   a   r
0071520    W   i   d   t   h   (   d   s   ,       c   h   a   r   )   ,
0071540   \r                               C   h   a   r   W   i   d   t
0071560    h   (   d   s   ,       $   ^   )   +   C   h   a   r   W   i
0071600    d   t   h   (   d   s   ,       c   h   a   r   +   #   1   0
0071620    0   )   )  \r                           ]  \r               ]
0071640   \r   t   e   s   t       b   i   t   s       l   e       G   e
0071660    t   B   i   t   P   o   s   (   d   s   )   -   G   e   t   L
0071700    m   a   r   g   (   d   s   )  \r               i   f   s   o
0071720        E   r   a   s   e   B   i   t   s   (   d   s   ,       -
0071740    b   i   t   s   )  \r               i   f   n   o   t  \r    
0071760                  376 001  \0 323   E       [           /   /   e
0072000    r   a   s   i   n   g       p   a   s   t       l   e   f   t
0072020        m   a   r   g   i   n  \r                           R   e
0072040    s   e   t   s   (   d   s   )  \r                           f
0072060    o   r       i       =       0       t   o       f   i   r   s
0072100    t   -   1       d   o  \r                                    
0072120    i   f       c   s   >   >   C   S   .   b   u   f   >   >   B
0072140    u   f   ^   i       l   s       #   2   0   0       t   h   e
0072160    n       P   u   t   s   (   d   s   ,       c   s   >   >   C
0072200    S   .   b   u   f   >   >   B   u   f   ^   i   )  \r        
0072220                    ]  \r   u   n   l   e   s   s       k   s   >
0072240    >   S   T   .   p   u   t   s       e   q       N   o   o   p
0072260        d   o  \r               [  \r               l   e   t    
0072300    f   i   l   e   P   o   s       =       v   e   c       1   ;
0072320        F   i   l   e   P   o   s   (   k   s   ,       f   i   l
0072340    e   P   o   s   )  \r               D   o   u   b   l   e   I
0072360    n   c   r   e   m   e   n   t   ( 376 001  \0   R   =   f   i
0072400    l   e   P   o   s   ,       -   c   h   a   r   s   )  \r    
0072420            S   e   t   F   i   l   e   P   o   s   (   k   s   ,
0072440        f   i   l   e   P   o   s   )  \r               ]  \r   ]
0072460   \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0072500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0072600   \r   a   n   d       D   e   f   B   r   e   a   k   (   c   s
0072620    ,       c   h   a   r   )       =       c   h   a   r       e
0072640    q       $   *   n       %       c   h   a   r       e   q    
0072660    $   *   s       %       c   h   a   r       e   q       $   *
0072700    0   3   3  \r   /   /   -   -   -   -   -   -   -   -   -   -
0072720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0072760    -   -   -   -   -   -   -   -   -   -   -   -   -   - 376 001
0073000   \0   G 305   -   -   -   -   -   -   -   -   -   -   -   -   -
0073020    -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -
0073040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0073140    -   -   -   -   -  \r   a   n   d       D   e   f   E   c   h
0073160    o   (   c   s   ,       c   h   a   r   )       =       n   o
0073200    t       C   u   r   r   e   n   t   P   h   r   a   s   e   (
0073220    c   s   )   >   >   P   D   .   P   h   r   a   s   e   T   e
0073240    r   m   i   n   a   t   o   r   (   c   s   ,       c   h   a
0073260    r   )  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0073300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0073400   \r  \f  \r 376 001  \0 031 335   /   /   -   -   -   -   -   -
0073420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0073520    -   -   -   -   -  \r   a   n   d       D   e   f   E   r   r
0073540    o   r   (   c   s   ,       e   c   )       b   e  \r   /   /
0073560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0073660    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   c   s
0073700    >   >   C   S   .   e   r   r   o   r   C   o   d   e       =
0073720        e   c  \r   s   w   i   t   c   h   o   n       e   c    
0073740    i   n   t   o  \r               [  \r               c   a   s
0073760    e       e   c   C   m   d   D   e   l   e   t   e   :  \r    
0074000                        W   s   s 376 001  \0 330 316   (   c   s
0074020    >   >   C   S   .   d   s   p   S   ,       "       X   X   X
0074040    "   )           /   /   f   a   l   l       i   n   t   o    
0074060    n   e   x   t       c   a   s   e  \r               c   a   s
0074100    e       e   c   C   m   d   D   e   s   t   r   o   y   :  \r
0074120                            [       c   s   >   >   C   S   .   d
0074140    e   s   t   r   o   y       =       t   r   u   e   ;       B
0074160    a   c   k   u   p   P   h   r   a   s   e   (   c   s   ,    
0074200    c   s   >   >   C   S   .   i   P   h   O   u   t   )       ]
0074220   \r               c   a   s   e       e   c   C   m   d   T   o
0074240    o   L   o   n   g   :           /   /   j   u   s   t       b
0074260    l   i   n   k       w   i   n   d   o   w       a   n   d    
0074300    d   o       n   o   t   h   i   n   g  \r                    
0074320        [       C   m   d   E   r   r   o   r   (   c   s   )   ;
0074340        e   n   d   c   a   s   e       ]  \r               c   a
0074360    s   e       e   c   K   e   y   A   m   b   i   g   u   o   u
0074400    s   :  \r               c   a   s   e       e   c 376 001  \0
0074420  026   0   B   a   c   k   u   p   A   p   p   e   n   d   :  \r
0074440                            [       C   m   d   E   r   r   o   r
0074460    (   c   s   )   ;       B   a   c   k   u   p   P   h   r   a
0074500    s   e   (   c   s   ,       0   ,       e   d   i   t   A   p
0074520    p   e   n   d   )       ]  \r               c   a   s   e    
0074540    e   c   T   o   o   M   a   n   y   P   h   r   a   s   e   s
0074560    :  \r               c   a   s   e       e   c   E   n   d   O
0074600    f   P   h   r   a   s   e   :  \r                           S
0074620    y   s   E   r   r   (   c   s   ,       e   c   )  \r        
0074640        d   e   f   a   u   l   t   :           /   /   a   l   l
0074660        t   y   p   e   s       o   f       s   y   n   t   a   x
0074700        e   r   r   o   r   s       g   e   t       s   a   m   e
0074720        h   a   n   d   l   i   n   g  \r                        
0074740    C   m   d   E   r   r   o   r   (   c   s   ,       "       ?
0074760    "   )           /   /   f   a   l   l       i   n   t   o    
0075000    n   e   x   t       c   a   s   e  \r               c   a   s
0075020    e     376 001  \0   L 237   e   c   B   a   c   k   u   p   R
0075040    e   p   l   a   c   e   :  \r                           B   a
0075060    c   k   u   p   P   h   r   a   s   e   (   c   s   )  \r    
0075100            ]  \r   ]  \r  \r  \r   /   /   -   -   -   -   -   -
0075120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0075220    -   -   -   -   -  \r   a   n   d       C   m   d   E   r   r
0075240    o   r   (   c   s   ,       s   t   r   i   n   g   ;       n
0075260    u   m   a   r   g   s       n   a   )       b   e  \r   /   /
0075300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0075400    -   -   -   -   -   -   -   -   -   -   -  \r   /   /   D   i
0075420    s   p   l   a   y   s     376 001  \0 235 257   s   t   r   i
0075440    n   g       i   f       p   r   e   s   e   n   t   ,       b
0075460    l   i   n   k   s       d   i   s   p   l   a   y       w   i
0075500    n   d   o   w   ,       a   n   d       r   e   s   e   t   s
0075520        k   e   y   b   o   a   r   d  \r   [  \r   i   f       n
0075540    a       g   r       1       &       s   t   r   i   n   g    
0075560    n   e       0       t   h   e   n       W   s   s   (   c   s
0075600    ,       s   t   r   i   n   g   )  \r   I   n   v   e   r   t
0075620    W   i   n   d   o   w   (   c   s   >   >   C   S   .   d   s
0075640    p   S   >   >   S   T   .   p   a   r   1   )  \r   D   i   s
0075660    m   i   s   s   (   5   0   )  \r   I   n   v   e   r   t   W
0075700    i   n   d   o   w   (   c   s   >   >   C   S   .   d   s   p
0075720    S   >   >   S   T   .   p   a   r   1   )  \r   R   e   s   e
0075740    t   s   (   c   s   >   >   C   S   .   k   e   y   S   )  \r
0075760    ]  \r  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0076000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0076020    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0   e
0076040  177   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0076060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0076100    -   -   -   -   -   -  \r   a   n   d       I   n   v   e   r
0076120    t   W   i   n   d   o   w   (   d   s   )       b   e  \r   /
0076140    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0076160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0076240    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   l
0076260    e   t       d   c   b       =       d   s   >   >   D   S   .
0076300    f   d   c   b  \r               [  \r               d   c   b
0076320    >   >   D   C   B   .   b   a   c   k   g   r   o   u   n   d
0076340        =       n   o   t       d   c   b   >   >   D   C   B   .
0076360    b   a   c   k   g   r   o   u   n   d  \r               i   f
0076400        d   c   b       e   q       d   s   >   >   D   S   .   l
0076420    d   c   b       t   h   e   n       b   r   e   a   k  \r    
0076440      376  \0   # 257   o       d   c   b       =       d   c   b
0076460    >   >   D   C   B   .   n   e   x   t  \r               ]    
0076500    r   e   p   e   a   t  \r   ]  \r 377  \0  \0   I   f   s   S
0076520    c   a   v   L   p   t   .   b   c   p   l  \0 373 231   p   j
0076540  211  \0  \0 376 001  \0 023   C   /   /       I   f   s   S   c
0076560    a   v   L   p   t   .   b   c   p   l       -   -       r   o
0076600    u   t   i   n   e   s       f   o   r       a   c   c   e   s
0076620    s   i   n   g       t   h   e       l   e   a   d   e   r    
0076640    p   a   g   e       t   a   b   l   e  \r   /   /       C   o
0076660    p   y   r   i   g   h   t       X   e   r   o   x       C   o
0076700    r   p   o   r   a   t   i   o   n       1   9   7   9   ,    
0076720    1   9   8   0   ,       1   9   8   2  \r   /   /       L   a
0076740    s   t       m   o   d   i   f   i   e   d       J   u   l   y
0076760        2   9   ,       1   9   8   2           3   :   0   6    
0077000    P   M       b   y       B   o   g   g   s  \r  \r   g   e   t
0077020        "   I   f   s   S   c   a   v   e   n   g   e   r   .   d
0077040    e   c   l   "  \r   g   e   t       "   S   t   r   e   a   m
0077060    s   .   d   "  \r   g   e   t       "   D   i   s   k   s   .
0077100    d   "  \r   g   e   t       "   I   f   s   .   d   e   c   l
0077120    "  \r  \r   e   x   t   e   r   n   a   l  \r   [  \r   /   /
0077140        o   u   t   g   o   i   n 376 001  \0 240 275   g       p
0077160    r   o   c   e   d   u   r   e   s  \r   O   p   e   n   L   P
0077200    T   ;       C   l   o   s   e   L   P   T   ;       E   n   u
0077220    m   e   r   a   t   e   L   P   T   ;       F   l   u   s   h
0077240    L   P   T  \r   G   e   t   L   p   t   L   p   t   e   ;    
0077260    G   e   t   L   p   t   F   a   ;       G   e   t   L   p   t
0077300    F   s   ;       G   e   t   L   p   t   H   o   m   e  \r   R
0077320    e   a   d   L   P   T   E   ;       W   r   i   t   e   L   P
0077340    T   E   ;       G   e   t   L   p   t   S   o   r   t   e   d
0077360    ;       S   e   t   L   p   t   S   o   r   t   e   d  \r  \r
0077400    G   e   t   L   p   t   e   T   y   p   e   ;       G   e   t
0077420    L   p   t   e   F   l   a   g   s   ;       G   e   t   L   p
0077440    t   e   L   e   n   g   t   h   ;       G   e   t   L   p   t
0077460    e   D   I   F   R   e   c  \r   G   e   t   L   p   t   e   I
0077500    f   p   ;       G   e   t   L   p   t   e   F   a   ;       G
0077520    e   t   L   p   t   e   I   f   s   N   a   m   e   ;       G
0077540    e   t   L   p   t   e   T   f   s   N   a   m   e 376 001  \0
0077560  353   u  \r  \r   S   e   t   L   p   t   e   T   y   p   e   ;
0077600        S   e   t   L   p   t   e   F   l   a   g   s   ;       S
0077620    e   t   L   p   t   e   L   e   n   g   t   h   ;       S   e
0077640    t   L   p   t   e   D   I   F   R   e   c  \r   S   e   t   L
0077660    p   t   e   I   f   p   ;       S   e   t   L   p   t   e   F
0077700    a   ;       S   e   t   L   p   t   e   I   f   s   N   a   m
0077720    e   ;       S   e   t   L   p   t   e   T   f   s   N   a   m
0077740    e  \r  \r   /   /       i   n   c   o   m   i   n   g       p
0077760    r   o   c   e   d   u   r   e   s  \r   Z   e   r   o   ;    
0100000    M   o   v   e   B   l   o   c   k   ;       S   e   t   B   l
0100020    o   c   k   ;       D   e   f   a   u   l   t   A   r   g   s
0100040    ;       C   o   p   y   S   t   r   i   n   g   ;       E   x
0100060    t   r   a   c   t   S   u   b   s   t   r   i   n   g  \r   O
0100100    p   e   n   F   i   l   e   ;       T   r   u   n   c   a   t
0100120    e   D   i   s   k   S   t   r   e   a   m   ;       D   e   l
0100140    e   t   e   F   i   l   e   ;       R   e   a   d   L   e   a
0100160    d   e 376 001  \0 315 314   r   P   a   g   e  \r   F   i   l
0100200    e   L   e   n   g   t   h   ;       F   i   l   e   P   o   s
0100220    ;       S   e   t   F   i   l   e   P   o   s   ;       J   u
0100240    m   p   T   o   F   a   ;       G   e   t   C   u   r   r   e
0100260    n   t   F   a   ;       C   l   e   a   n   u   p   D   i   s
0100300    k   S   t   r   e   a   m  \r   E   n   d   o   f   s   ;    
0100320    G   e   t   s   ;       P   u   t   s   ;       C   l   o   s
0100340    e   s   ;       R   e   s   e   t   s   ;       W   r   i   t
0100360    e   B   l   o   c   k   ;       R   e   a   d   B   l   o   c
0100400    k  \r   D   o   u   b   l   e   D   i   f   f   e   r   e   n
0100420    c   e   ;       D   o   u   b   l   e   I   n   c   r   e   m
0100440    e   n   t   ;       R   e   a   d   C   a   l   e   n   d   a
0100460    r   ;       P   r   i   n   t   T   i   m   e  \r   I   F   S
0100500    E   r   r   o   r   ;       A   l   l   o   c   a   t   e   ;
0100520        F   r   e   e   ;       E   n   q   u   e   u   e   ;    
0100540    D   e   q   u   e   u   e   ;       C   a   l   l   S   w   a
0100560    t  \r  \r   /   /       i 376 001  \0   l 322   n   c   o   m
0100600    i   n   g       s   t   a   t   i   c   s  \r   s   y   s   Z
0100620    o   n   e   ;       d   e   b   u   g   F   l   a   g   ;    
0100640    p   a   s   s   ;       p   h   a   s   e   ;       s   c   r
0100660    a   t   c   h   D   i   s   k  \r   ]  \r  \r   m   a   n   i
0100700    f   e   s   t  \r   [  \r   e   c   S   e   t   L   P   T   E
0100720        =       5   0   7  \r   e   c   M   a   l   f   o   r   m
0100740    e   d   L   P   T   E       =       5   0   8  \r   d   v   T
0100760    y   p   e   H   o   m   e       =       2  \r   ]  \r  \f  \r
0101000    s   t   r   u   c   t   u   r   e       L   P   T   E   :  \t
0101020   \t   /   /       L   e   a   d   e   r       P   a   g   e    
0101040    T   a   b   l   e       E   n   t   r   y  \r   [  \r   t   y
0101060    p   e       b   i   t       2  \t  \t   /   /       d   v   T
0101100    y   p   e   F   i   l   e   ,       d   v   T   y   p   e   F
0101120    r   e   e   ,       d   v   T   y   p   e   H   o   m   e  \r
0101140    f   l   a   g   s       b   i   t       4  \t  \t   /   /    
0101160    b   i   t   s       d   e   f   i   n   e   d 376 001  \0 247
0101200    ]       i   n       I   f   s   S   c   a   v   e   n   g   e
0101220    r   .   d   e   c   l  \r   p   r   i   v   a   t   e   F   l
0101240    a   g   s       b   i   t       2       =  \r               [
0101260   \r               d   i   r   t   y       b   i   t  \r        
0101300        g   o   t   L   o   n   g   e   r       b   i   t  \r    
0101320            ]  \r   l   e   n   g   t   h       b   y   t   e  \t
0101340   \t   /   /       i   n       w   o   r   d   s       i   n   c
0101360    l   u   d   i   n   g       t   h   i   s       o   n   e  \r
0101400    i   f   p       w   o   r   d       =       @   I   F   P  \r
0101420    f   a       w   o   r   d       =       @   F   A  \t  \t   /
0101440    /       o   f       l   a   s   t       b   y   t   e       i
0101460    n       f   i   l   e  \r   /   /       F   o   l   l   o   w
0101500    i   n   g       t   h   r   e   e       i   t   e   m   s    
0101520    a   r   e       o   f   f   s   e   t   s       r   e   l   a
0101540    t   i   v   e       t   o       L   P   T   E   .   t   y   p
0101560    e   .  \r   /   /       I   f       t   h   e   y       a   r
0101600    e 376 001  \0   + 033       z   e   r   o   ,       t   h   e
0101620    n       n   o       s   p   a   c   e       h   a   s       b
0101640    e   e   n       a   l   l   o   c   a   t   e   d   .  \r   i
0101660    f   s   N   a   m   e       w   o   r   d  \r   t   f   s   N
0101700    a   m   e       w   o   r   d  \r   d   i   f   R   e   c    
0101720    w   o   r   d  \r   ]  \r   m   a   n   i   f   e   s   t  \r
0101740    [  \r   l   e   n   L   P   T   E   H   e   a   d   e   r    
0101760    =       s   i   z   e       L   P   T   E   /   1   6  \r   m
0102000    a   x   L   e   n   L   P   T   E       =       1       l   s
0102020    h   i   f   t       s   i   z   e       L   P   T   E   .   l
0102040    e   n   g   t   h  \r   ]  \r  \r   s   t   r   u   c   t   u
0102060    r   e       L   P   T   :  \t  \t   /   /       l   p   t   >
0102100    >   S   T   .   p   a   r   1       p   o   i   n   t   s    
0102120    a   t       t   h   i   s  \r   [  \r   f   a       w   o   r
0102140    d       l   F   A  \r   l   p   t   e       w   o   r   d    
0102160    m   a   x   L   e   n   L   P   T   E  \r   l   p   t   h    
0102200    w   o   r   d       = 376 001  \0 325   4  \r               [
0102220   \r               s   o   r   t   e   d       w   o   r   d  \t
0102240   \t   /   /       t   r   u   e       i   f       n   o   t    
0102260    w   r   i   t   t   e   n       s   i   n   c   e       l   a
0102300    s   t       s   o   r   t   e   d  \r               f   s    
0102320    w   o   r   d       n   D   i   s   k   s  \r               h
0102340    o   m   e       w   o   r   d       l   e   n   H   o   m   e
0102360   \r               ]  \r   ]  \r   m   a   n   i   f   e   s   t
0102400   \r   [  \r   l   e   n   L   P   T       =       s   i   z   e
0102420        L   P   T   /   1   6  \r   l   e   n   L   P   T   H    
0102440    =       l   e   n   L   P   T       -       o   f   f   s   e
0102460    t       L   P   T   .   l   p   t   h   /   1   6  \r   ]  \r
0102500   \f  \r   /   /       R   o   u   t   i   n   e   s       f   o
0102520    r       d   e   a   l   i   n   g       w   i   t   h       L
0102540    e   a   d   e   r       P   a   g   e       T   a   b   l   e
0102560        f   i   l   e   s  \r  \r   /   /   -   -   -   -   -   -
0102600    -   -   -   -   -   -   -   -   -   -   - 376 001  \0   7 302
0102620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102720    -   -   -   -   -   -   -   -  \r   l   e   t       O   p   e
0102740    n   L   P   T   (   n   a   m   e   ,       m   a   k   e   E
0102760    m   p   t   y   )       =       v   a   l   o   f  \r   /   /
0103000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0103120    -   -   -   -   -   -   -   -   -  \r   [  \r   l   e   t    
0103140    s   t       =       O   p   e   n   F   i   l   e   (   n   a
0103160    m   e   ,       0   ,       0   ,       0   ,       0   ,    
0103200    0   ,       0   ,       0   ,       s   c   r   a   t   c   h
0103220  376 001  \0  \f 265   D   i   s   k   )  \r   i   f       s   t
0103240        e   q       0       t   h   e   n       I   F   S   E   r
0103260    r   o   r   (   e   c   S   c   r   a   t   c   h   F   i   l
0103300    e   ,       n   a   m   e   )  \r   l   e   t       l   p   t
0103320        =       A   l   l   o   c   a   t   e   (   s   y   s   Z
0103340    o   n   e   ,       l   e   n   L   P   T   )   ;       Z   e
0103360    r   o   (   l   p   t   ,       l   e   n   L   P   T   )  \r
0103400    s   t   >   >   S   T   .   p   a   r   1       =       l   p
0103420    t  \r   t   e   s   t       m   a   k   e   E   m   p   t   y
0103440   \r               i   f   s   o  \r                           [
0103460   \r                           S   e   t   B   l   o   c   k   (
0103500    l   v       l   p   t   >   >   L   P   T   .   f   s   ,    
0103520    -   1   ,       n   D   i   s   k   s   )  \r                
0103540            F   l   u   s   h   L   P   T   (   s   t   )  \r    
0103560                        T   r   u   n   c   a   t   e   D   i   s
0103600    k   S   t   r   e   a   m   (   s   t   )  \r                
0103620            ]  \r     376 001  \0 325   4           i   f   n   o
0103640    t  \r                           [  \r                        
0103660    l   e   t       l   p   t   e       =       G   e   t   s   (
0103700    s   t   )  \r                           i   f       l   p   t
0103720    e   <   <   L   P   T   E   .   t   y   p   e       n   e    
0103740    d   v   T   y   p   e   H   o   m   e       t   h   e   n    
0103760    I   F   S   E   r   r   o   r   (   e   c   M   a   l   f   o
0104000    r   m   e   d   L   P   T   E   )  \r                        
0104020    R   e   a   d   B   l   o   c   k   (   s   t   ,       l   v
0104040        l   p   t   >   >   L   P   T   .   l   p   t   h   ,    
0104060    l   e   n   L   P   T   H   )  \r                           F
0104100    i   l   e   L   e   n   g   t   h   (   s   t   )           /
0104120    /   a   p   p   e   n   d       t   o       l   p   t  \r    
0104140                        ]  \r   G   e   t   C   u   r   r   e   n
0104160    t   F   a   (   s   t   ,       l   v       l   p   t   >   >
0104200    L   P   T   .   f   a   )  \r   r   e   s   u   l   t   i   s
0104220        s   t  \r   ]  \r  \r   /   /   - 376 001  \0 242   k   -
0104240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0104360    -   -   -   -   -   -   -  \r   a   n   d       C   l   o   s
0104400    e   L   P   T   (   s   t   ,       d   e   l   e   t   e   )
0104420        =       v   a   l   o   f  \r   /   /   -   -   -   -   -
0104440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0104560    -   -   -   -  \r   [  \r   i   f       d   e   b   u   g   F
0104600    l   a   g       t   h   e   n       d   e   l   e   t   e    
0104620    =       f   a   l   s   e  \r   u   n   l   e   s   s     376
0104640  001  \0   / 332   d   e   l   e   t   e       d   o       F   l
0104660    u   s   h   L   P   T   (   s   t   )  \r   F   r   e   e   (
0104700    s   y   s   Z   o   n   e   ,       s   t   >   >   S   T   .
0104720    p   a   r   1   )  \r   l   e   t       l   d       =       n
0104740    i   l  \r   i   f       d   e   l   e   t   e       t   h   e
0104760    n  \r               [  \r               l   d       =       A
0105000    l   l   o   c   a   t   e   (   s   y   s   Z   o   n   e   ,
0105020        1       l   s   h   i   f   t       s   c   r   a   t   c
0105040    h   D   i   s   k   >   >   D   S   K   .   l   n   P   a   g
0105060    e   S   i   z   e   )  \r               R   e   a   d   L   e
0105100    a   d   e   r   P   a   g   e   (   s   t   ,       l   d   )
0105120   \r               ]  \r   C   l   o   s   e   s   (   s   t   )
0105140   \r   i   f       d   e   l   e   t   e       t   h   e   n  \r
0105160                [  \r               D   e   l   e   t   e   F   i
0105200    l   e   (   l   v       l   d   >   >   L   D   .   n   a   m
0105220    e   ,       0   ,       0   ,       0   ,       0   ,       s
0105240    c   r   a   t 376 001  \0   g   `   c   h   D   i   s   k   )
0105260   \r               F   r   e   e   (   s   y   s   Z   o   n   e
0105300    ,       l   d   )  \r               ]  \r   r   e   s   u   l
0105320    t   i   s       0  \r   ]  \r  \r   /   /   -   -   -   -   -
0105340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0105460    -   -   -   -  \r   a   n   d       F   l   u   s   h   L   P
0105500    T   (   s   t   )       b   e  \r   /   /   -   -   -   -   -
0105520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0105640    -   -   -   -  \r   [  \r   R   e 376 001  \0   @ 227   s   e
0105660    t   s   (   s   t   )  \r   l   e   t       l   p   t   e    
0105700    =       0  \r   l   p   t   e   <   <   L   P   T   E   .   t
0105720    y   p   e       =       d   v   T   y   p   e   H   o   m   e
0105740   \r   l   p   t   e   <   <   L   P   T   E   .   l   e   n   g
0105760    t   h       =       1   +   l   e   n   L   P   T   H  \r   P
0106000    u   t   s   (   s   t   ,       l   p   t   e   )  \r   W   r
0106020    i   t   e   B   l   o   c   k   (   s   t   ,       l   v    
0106040    s   t   >   >   S   T   .   p   a   r   1   >   >   L   P   T
0106060    .   l   p   t   h   ,       l   e   n   L   P   T   H   )  \r
0106100    C   l   e   a   n   u   p   D   i   s   k   S   t   r   e   a
0106120    m   (   s   t   )  \r   ]  \r  \f  \r   /   /   -   -   -   -
0106140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0106240    -   -   -   -   -   -   -   -   -   -   -   -   -   - 376 001
0106260   \0 214 335   -   -   -   -   -   -   -  \r   a   n   d       R
0106300    e   a   d   L   P   T   E   (   s   t   ,       l   p   t   e
0106320    ;       n   u   m   a   r   g   s       n   a   )       =    
0106340    v   a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -
0106360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0106500    -  \r   /   /       R   e   a   d   s       t   h   e       n
0106520    e   x   t       l   p   t   e       f   r   o   m       l   p
0106540    t      \r   /   /       R   e   t   u   r   n   s       p   o
0106560    i   n   t   e   r       t   o       l   p   t   e       o   r
0106600        z   e   r   o       i   f       E   O   F       e   n   c
0106620    o   u   n   t   e   r   e   d   .  \r   [  \r   i   f       E
0106640    n   d   o   f   s   (   s   t   )       r   e   s   u   l   t
0106660    i   s     376 001  \0 353   d   0  \r   i   f       n   a    
0106700    l   s       2       t   h   e   n       l   p   t   e       =
0106720        l   v       s   t   >   >   S   T   .   p   a   r   1   >
0106740    >   L   P   T   .   l   p   t   e  \r   l   p   t   e   !   0
0106760        =       G   e   t   s   (   s   t   )  \r   R   e   a   d
0107000    B   l   o   c   k   (   s   t   ,       l   p   t   e   +   1
0107020    ,       l   p   t   e   >   >   L   P   T   E   .   l   e   n
0107040    g   t   h   -   1   )  \r   l   p   t   e   >   >   L   P   T
0107060    E   .   p   r   i   v   a   t   e   F   l   a   g   s       =
0107100        0           /   /   c   l   e   a   r       d   i   r   t
0107120    y       a   n   d       g   o   t   L   o   n   g   e   r    
0107140    b   i   t   s  \r   r   e   s   u   l   t   i   s       l   p
0107160    t   e  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0107200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0107260    -   -   -   -   -   -   -   - 376 001  \0   <   R   -   -   -
0107300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0107320    -   -   -   -   -   -  \r   a   n   d       W   r   i   t   e
0107340    L   P   T   E   (   s   t   ,       l   p   t   e   ;       n
0107360    u   m   a   r   g   s       n   a   )       b   e  \r   /   /
0107400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0107520    -   -   -   -   -   -   -   -   -  \r   /   /       W   r   i
0107540    t   e       a   n       l   p   t   e       a   t       t   h
0107560    e       c   u   r   r   e   n   t       s   t   r   e   a   m
0107600        p   o   s   i   t   i   o   n  \r   /   /       B   y    
0107620    d   e   f   a   u   l   t   ,       t   h   e       l   p   t
0107640    e       c   o   m   e   s       f   r   o   m       t   h   e
0107660        l   p   t  \r   [  \r   i   f       n   a     376 001  \0
0107700  332 256   l   s       2       t   h   e   n       l   p   t   e
0107720        =       l   v       s   t   >   >   S   T   .   p   a   r
0107740    1   >   >   L   P   T   .   l   p   t   e  \r   i   f       l
0107760    p   t   e   >   >   L   P   T   E   .   l   e   n   g   t   h
0110000        e   q       0       t   h   e   n       C   a   l   l   S
0110020    w   a   t   (   "   L   P   T   E       w   i   t   h       0
0110040        l   e   n   g   t   h   "   )  \r   W   r   i   t   e   B
0110060    l   o   c   k   (   s   t   ,       l   p   t   e   ,       l
0110100    p   t   e   >   >   L   P   T   E   .   l   e   n   g   t   h
0110120    )  \r   s   t   >   >   S   T   .   p   a   r   1   >   >   L
0110140    P   T   .   s   o   r   t   e   d       =       f   a   l   s
0110160    e  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0110200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0110300    -   - 376 001  \0 350 330   -   -   -   -   -   -   -   -   -
0110320    -   -   -   -   -  \r   a   n   d       G   e   t   L   p   t
0110340    L   p   t   e   (   s   t   ,       i   n   i   t   I   t   ;
0110360        n   u   m   a   r   g   s       n   a   )       =       v
0110400    a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -
0110420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0110540   \r   /   /       G   e   t       a       p   o   i   n   t   e
0110560    r       t   o       t   h   e       l   p   t   e       i   n
0110600        '   l   p   t   '   .  \r   /   /       G   e   t       i
0110620    t       r   e   a   d   y       f   o   r       f   i   l   l
0110640    i   n   g       i   f       '   i   n   i   t   I   t   '    
0110660    i   s       t   r   u   e   .  \r   [  \r   l   e   t       l
0110700    p   t   e       =       l 376 001  \0 267   |   v       s   t
0110720    >   >   S   T   .   p   a   r   1   >   >   L   P   T   .   l
0110740    p   t   e  \r   i   f       n   a       g   r       1       &
0110760        i   n   i   t   I   t       t   h   e   n  \r            
0111000    [  \r               Z   e   r   o   (   l   p   t   e   ,    
0111020    m   a   x   L   e   n   L   P   T   E   )  \r               S
0111040    e   t   L   p   t   e   L   e   n   g   t   h   (   l   p   t
0111060    e   ,       l   e   n   L   P   T   E   H   e   a   d   e   r
0111100    )  \r               S   e   t   L   p   t   e   T   y   p   e
0111120    (   l   p   t   e   ,       d   v   T   y   p   e   F   i   l
0111140    e   )  \r               ]  \r   r   e   s   u   l   t   i   s
0111160        l   p   t   e  \r   ]  \r  \r   /   /   -   -   -   -   -
0111200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111300    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 302
0111320  245   -   -   -   -   -   -   -   -  \r   a   n   d       G   e
0111340    t   L   p   t   F   s   (   s   t   )       =       l   v    
0111360    s   t   >   >   S   T   .   p   a   r   1   >   >   L   P   T
0111400    .   f   s  \r   /   /   -   -   -   -   -   -   -   -   -   -
0111420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0111540   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0111560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0111660    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0111700        G   e   t   L   p   t   F   a   (   s   t   )       =    
0111720    l 376 001  \0   S 020   v       s   t   >   >   S   T   .   p
0111740    a   r   1   >   >   L   P   T   .   f   a  \r   /   /   -   -
0111760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0112100    -   -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -
0112120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0112240    -   -   -   -  \r   a   n   d       G   e   t   L   p   t   H
0112260    o   m   e   (   s   t   )       =       l   v       s   t   >
0112300    >   S   T   .   p   a   r   1   >   >   L   P   T   .   h   o
0112320    m   e  \r   /   /   - 376 001  \0   Y 323   -   -   -   -   -
0112340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0112460    -   -   -  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0112500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0112620   \r   a   n   d       G   e   t   L   p   t   S   o   r   t   e
0112640    d   (   s   t   )       =       s   t   >   >   S   T   .   p
0112660    a   r   1   >   >   L   P   T   .   s   o   r   t   e   d  \r
0112700    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0112720    -   -   -   -   -   -   -   -   -   -   - 376 001  \0 346 021
0112740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113040   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0113060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113160    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0113200    d       S   e   t   L   p   t   S   o   r   t   e   d   (   s
0113220    t   ,       v   a   l   )       b   e       s   t   >   >   S
0113240    T   .   p   a   r   1   >   >   L   P   T   .   s   o   r   t
0113260    e   d       =       v   a   l  \r   /   /   -   -   -   -   -
0113300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113340  376 001  \0 006 356   -   -   -   -   -   -   -   -   -   -   -
0113360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113420    -   -   -   -   -   -   -   -   -  \r  \f  \r   /   /   -   -
0113440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113560    -   -   -   -   -   -   -  \r   a   n   d       E   n   u   m
0113600    e   r   a   t   e   L   P   T   (   s   t   ,       P   r   o
0113620    c   ,       a   r   g   )       b   e  \r   /   /   -   -   -
0113640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0113740    -   -   -   -   - 376 001  \0   ` 323   -   -   -   -   -   -
0113760    -   -   -   -   -   -   -   -   -   -   -  \r   /   /       E
0114000    n   u   m   e   r   a   t   e   s       t   h   e       L   P
0114020    T   ,       c   a   l   l   i   n   g       P   r   o   c   (
0114040    l   p   t   e   ,       a   r   g   )       f   o   r       e
0114060    a   c   h       l   p   t   e   .  \r   /   /       T   h   e
0114100        e   n   u   m   e   r   a   t   i   o   n       b   e   g
0114120    i   n   s       a   t       t   h   e       f   i   r   s   t
0114140        r   e   c   o   r   d       f   o   r       t   h   e    
0114160    c   u   r   r   e   n   t       p   a   c   k   .  \r   /   /
0114200        I   f       P   r   o   c       d   i   r   t   i   e   s
0114220        t   h   e       l   p   t   e   ,       i   t       i   s
0114240        w   r   i   t   t   e   n       b   a   c   k       o   n
0114260    t   o       t   h   e       f   i   l   e   .  \r   /   /    
0114300    I   f       t   h   e       l   e   n   g   t   h       c   h
0114320    a   n   g   e   d       s   o       t   h   a   t       i   t
0114340        c   a   n   '   t       b   e     376 001  \0 003 255   w
0114360    r   i   t   t   e   n       b   a   c   k       i   n       p
0114400    l   a   c   e   ,  \r   /   /           i   t       i   s    
0114420    w   r   i   t   t   e   n       o   n       a       t   e   m
0114440    p   o   r   a   r   y       f   i   l   e   ,       a   n   d
0114460        a   p   p   e   n   d   e   d       t   o       t   h   e
0114500        r   e   a   l       f   i   l   e  \r   /   /           a
0114520    f   t   e   r       t   h   e       e   n   u   m   e   r   a
0114540    t   i   o   n       i   s       c   o   m   p   l   e   t   e
0114560    .  \r   [  \r   l   e   t       o   v   f   l   L   p   t    
0114600    =       0  \r   J   u   m   p   T   o   F   a   (   s   t   ,
0114620        l   v       s   t   >   >   S   T   .   p   a   r   1   >
0114640    >   L   P   T   .   f   a   )  \r   l   e   t       s   t   a
0114660    r   t   T   i   m   e       =       v   e   c       1   ;    
0114700    R   e   a   d   C   a   l   e   n   d   a   r   (   s   t   a
0114720    r   t   T   i   m   e   )  \r  \r               [  \r        
0114740        l   e   t       l   p   t   e       =       R   e   a 376
0114760  001  \0   C   "   d   L   P   T   E   (   s   t   )  \r        
0115000        i   f       l   p   t   e       e   q       0       b   r
0115020    e   a   k           /   /   e   n   d       o   f       f   i
0115040    l   e  \r               l   e   t       l   e   n   g   t   h
0115060        =       l   p   t   e   >   >   L   P   T   E   .   l   e
0115100    n   g   t   h  \r               P   r   o   c   (   s   t   ,
0115120        l   p   t   e   ,       a   r   g   )  \r               i
0115140    f       l   p   t   e   >   >   L   P   T   E   .   d   i   r
0115160    t   y       t   h   e   n  \r                           [  \r
0115200                            i   f       l   p   t   e   >   >   L
0115220    P   T   E   .   g   o   t   L   o   n   g   e   r       t   h
0115240    e   n  \r                                       [  \r        
0115260                                i   f       o   v   f   l   L   p
0115300    t       e   q       0       t   h   e   n  \r                
0115320                                    o   v   f   l   L   p   t    
0115340    =       O   p   e   n   L   P   T   (   "   I   f   s   S   c
0115360    a   v   e   n 376 001  \0   b   x   g   e   r   .   o   v   f
0115400    l   L   p   t   "   ,       t   r   u   e   )  \r            
0115420                            W   r   i   t   e   B   l   o   c   k
0115440    (   o   v   f   l   L   p   t   ,       l   p   t   e   ,    
0115460    l   p   t   e   >   >   L   P   T   E   .   l   e   n   g   t
0115500    h   )  \r                                       l   p   t   e
0115520    >   >   L   P   T   E   .   t   y   p   e       =       d   v
0115540    T   y   p   e   F   r   e   e  \r                            
0115560            l   p   t   e   >   >   L   P   T   E   .   l   e   n
0115600    g   t   h       =       l   e   n   g   t   h  \r            
0115620                            ]  \r                           l   e
0115640    t       f   i   l   e   P   o   s       =       v   e   c    
0115660    1   ;       F   i   l   e   P   o   s   (   s   t   ,       f
0115700    i   l   e   P   o   s   )  \r                           D   o
0115720    u   b   l   e   I   n   c   r   e   m   e   n   t   (   f   i
0115740    l   e   P   o   s   ,       -   (   l   e   n   g   t   h    
0115760    l   s   h   i   f   t       1   ) 376 001  \0 302 327   )  \r
0116000                            S   e   t   F   i   l   e   P   o   s
0116020    (   s   t   ,       f   i   l   e   P   o   s   )  \r        
0116040                    W   r   i   t   e   B   l   o   c   k   (   s
0116060    t   ,       l   p   t   e   ,       l   e   n   g   t   h   )
0116100   \r                           s   t   >   >   S   T   .   p   a
0116120    r   1   >   >   L   P   T   .   s   o   r   t   e   d       =
0116140        f   a   l   s   e  \r                           ]  \r    
0116160            ]       r   e   p   e   a   t  \r  \r   i   f       o
0116200    v   f   l   L   p   t       n   e       0       t   h   e   n
0116220   \r               [  \r               R   e   s   e   t   s   (
0116240    o   v   f   l   L   p   t   )  \r                           [
0116260   \r                           l   e   t       l   p   t   e    
0116300    =       R   e   a   d   L   P   T   E   (   o   v   f   l   L
0116320    p   t   )  \r                           i   f       l   p   t
0116340    e       e   q       0       b   r   e   a   k  \r            
0116360                i   f       l   p   t   e   >   >   L   P 376 001
0116400   \0   k 255   T   E   .   t   y   p   e       e   q       d   v
0116420    T   y   p   e   F   i   l   e       t   h   e   n  \r        
0116440                                W   r   i   t   e   B   l   o   c
0116460    k   (   s   t   ,       l   p   t   e   ,       l   p   t   e
0116500    >   >   L   P   T   E   .   l   e   n   g   t   h   )  \r    
0116520                        ]       r   e   p   e   a   t  \r        
0116540        C   l   o   s   e   L   P   T   (   o   v   f   l   L   p
0116560    t   ,       t   r   u   e   )  \r               s   t   >   >
0116600    S   T   .   p   a   r   1   >   >   L   P   T   .   s   o   r
0116620    t   e   d       =       f   a   l   s   e  \r               ]
0116640   \r  \r   P   r   i   n   t   T   i   m   e   (   s   t   a   r
0116660    t   T   i   m   e   )  \r   ]  \r  \f  \r   /   /   t   h   e
0116700    s   e       r   o   u   t   i   n   e   s       g   e   t    
0116720    f   i   e   l   d   s       o   f       a   n       l   p   t
0116740    e  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0116760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0117000    -   -   - 376 001  \0   =  \r   -   -   -   -   -   -   -   -
0117020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0117100    -   -   -  \r   a   n   d       G   e   t   L   p   t   e   T
0117120    y   p   e   (   l   p   t   e   )       =       l   p   t   e
0117140    >   >   L   P   T   E   .   t   y   p   e  \r   /   /   -   -
0117160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0117300    -   -   -   -   -   -   -  \r  \r   /   /   -   -   -   -   -
0117320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0117400    -   -   -   -   -   -   -   - 376 001  \0 214 332   -   -   -
0117420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0117440    -   -   -   -   -   -   -   -   -  \r   a   n   d       G   e
0117460    t   L   p   t   e   F   l   a   g   s   (   l   p   t   e   )
0117500        =       l   p   t   e   >   >   L   P   T   E   .   f   l
0117520    a   g   s  \r   /   /   -   -   -   -   -   -   -   -   -   -
0117540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0117640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0117660   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0117700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120000    -   -   -   -   -   -   -   -   -   -   -   -  \r 376 001  \0
0120020    g  \v   a   n   d       G   e   t   L   p   t   e   L   e   n
0120040    g   t   h   (   l   p   t   e   )       =       l   p   t   e
0120060    >   >   L   P   T   E   .   l   e   n   g   t   h  \r   /   /
0120100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120220    -   -   -   -   -   -   -   -   -  \r  \r   /   /   -   -   -
0120240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120360    -   -   -   -   -   -  \r   a   n   d       G   e   t   L   p
0120400    t   e   I   f   p   (   l   p   t   e   )       =       l   v
0120420        l 376 001  \0   I   =   p   t   e   >   >   L   P   T   E
0120440    .   i   f   p  \r   /   /   -   -   -   -   -   -   -   -   -
0120460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120600   \r  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0120620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0120720    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0120740    d       G   e   t   L   p   t   e   F   a   (   l   p   t   e
0120760    )       =       l   v       l   p   t   e   >   >   L   P   T
0121000    E   .   f   a  \r   /   /   -   -   -   -   -   -   -   -   -
0121020    -   -   -   -   -   -   - 376 001  \0   P 367   -   -   -   -
0121040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121140    -   -   -   -   -  \r  \r   /   /   -   -   -   -   -   -   -
0121160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121300    -   -  \r   a   n   d       G   e   t   L   p   t   e   I   f
0121320    s   N   a   m   e   (   l   p   t   e   )       =       v   a
0121340    l   o   f  \r   /   /   -   -   -   -   -   -   -   -   -   -
0121360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121420    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0   #
0121440  301   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0121460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0121500    -   -   -   -  \r   [  \r   l   e   t       i   f   s   N   a
0121520    m   e       =       l   p   t   e   >   >   L   P   T   E   .
0121540    i   f   s   N   a   m   e  \r   r   e   s   u   l   t   i   s
0121560        l   p   t   e       +       (   i   f   s   N   a   m   e
0121600    ?       i   f   s   N   a   m   e   ,       o   f   f   s   e
0121620    t       L   P   T   E   .   i   f   s   N   a   m   e   /   1
0121640    6   )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0121660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0122000    -  \r   a   n   d       G   e   t   L   p   t   e   T   f   s
0122020    N   a   m   e   (   l   p   t   e   )       =       v   a   l
0122040    o 376 001  \0 330 006   f  \r   /   /   -   -   -   -   -   -
0122060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0122200    -   -   -  \r   [  \r   l   e   t       t   f   s   N   a   m
0122220    e       =       l   p   t   e   >   >   L   P   T   E   .   t
0122240    f   s   N   a   m   e  \r   r   e   s   u   l   t   i   s    
0122260    l   p   t   e       +       (   t   f   s   N   a   m   e   ?
0122300        t   f   s   N   a   m   e   ,       o   f   f   s   e   t
0122320        L   P   T   E   .   t   f   s   N   a   m   e   /   1   6
0122340    )  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -
0122360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0122440    -   -   -   -   -   - 376 001  \0 267  \b   -   -   -   -   -
0122460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0122500    -   -   -   -   -  \r   a   n   d       G   e   t   L   p   t
0122520    e   D   I   F   R   e   c   (   l   p   t   e   )       =    
0122540    v   a   l   o   f  \r   /   /   -   -   -   -   -   -   -   -
0122560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0122700    -  \r   [  \r   l   e   t       d   i   f   R   e   c       =
0122720        l   p   t   e   >   >   L   P   T   E   .   d   i   f   R
0122740    e   c  \r   r   e   s   u   l   t   i   s       d   i   f   R
0122760    e   c       n   e       0   ?       l   p   t   e   +   d   i
0123000    f   R   e   c   ,       0  \r   ]  \r  \f  \r   /   /       T
0123020    h   e   s   e       r   o   u   t   i   n   e   s       s   e
0123040    t       f   i   e   l   d   s       o   f 376 001  \0   C 320
0123060        a   n       l   p   t   e  \r  \r   /   /   -   -   -   -
0123100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123220    -   -   -   -   -  \r   a   n   d       S   e   t   L   p   t
0123240    e   T   y   p   e   (   l   p   t   e   ,       t   y   p   e
0123260    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0123300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123420   \r   [  \r   l   p   t   e   >   >   L   P   T   E   .   t   y
0123440    p   e       =       t   y   p   e  \r   l   p   t   e   >   >
0123460  376 001  \0  \n 337   L   P   T   E   .   d   i   r   t   y    
0123500    =       t   r   u   e  \r   ]  \r  \r   /   /   -   -   -   -
0123520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123640    -   -   -   -   -  \r   a   n   d       S   e   t   L   p   t
0123660    e   F   l   a   g   s   (   l   p   t   e   ,       f   l   a
0123700    g   s   )       b   e  \r   /   /   -   -   -   -   -   -   -
0123720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0124040    -   -  \r   [  \r   l   p   t   e   >   >   L   P   T   E   .
0124060    f   l   a   g   s 376 001  \0  \n 343       =       f   l   a
0124100    g   s  \r   l   p   t   e   >   >   L   P   T   E   .   d   i
0124120    r   t   y       =       t   r   u   e  \r   ]  \r  \r   /   /
0124140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0124260    -   -   -   -   -   -   -   -   -  \r   a   n   d       S   e
0124300    t   L   p   t   e   L   e   n   g   t   h   (   l   p   t   e
0124320    ,       l   e   n   g   t   h   )       b   e  \r   /   /   -
0124340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0124460    -   -   -   -   -   -   -   -  \r   [ 376 001  \0 266 363  \r
0124500    l   p   t   e   >   >   L   P   T   E   .   l   e   n   g   t
0124520    h       =       l   e   n   g   t   h  \r   l   p   t   e   >
0124540    >   L   P   T   E   .   d   i   r   t   y       =       t   r
0124560    u   e  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0124600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0124720    -  \r   a   n   d       S   e   t   L   p   t   e   I   f   p
0124740    (   l   p   t   e   ,       i   f   p   )       b   e  \r   /
0124760    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0125000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   - 376
0125100  001  \0 366   {   -   -   -   -   -   -   -   -   -   -   -  \r
0125120    [  \r   M   o   v   e   B   l   o   c   k   (   l   v       l
0125140    p   t   e   >   >   L   P   T   E   .   i   f   p   ,       i
0125160    f   p   ,       l   F   P   )  \r   l   p   t   e   >   >   L
0125200    P   T   E   .   d   i   r   t   y       =       t   r   u   e
0125220   \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0125240    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0125360    a   n   d       S   e   t   L   p   t   e   F   a   (   l   p
0125400    t   e   ,       f   a   )       b   e  \r   /   /   -   -   -
0125420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125500    -   -   -   - 376 001  \0 253   8   -   -   -   -   -   -   -
0125520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0125540    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   M   o
0125560    v   e   B   l   o   c   k   (   l   v       l   p   t   e   >
0125600    >   L   P   T   E   .   f   a   ,       f   a   ,       l   F
0125620    A   )  \r   l   p   t   e   >   >   L   P   T   E   .   d   i
0125640    r   t   y       =       t   r   u   e  \r   ]  \r  \f  \r   /
0125660    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0125700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0126000    -   -   -   -   -   -   -   -   -   -  \r   a   n   d       S
0126020    e   t   L   p   t   e   I   f   s   N   a   m   e   (   l   p
0126040    t   e   ,       i   f   s   N   a   m   e   )       b   e  \r
0126060    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0126100    -   -   -   -   -   -   -   -   - 376 001  \0   C   `   -   -
0126120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0126220   \r   [  \r   i   f       (   l   p   t   e   >   >   L   P   T
0126240    E   .   i   f   s   N   a   m   e       e   q       0   )   ?
0126260        t   r   u   e   ,       (   i   f   s   N   a   m   e   >
0126300    >   S   t   r   i   n   g   .   l   e   n   g   t   h       g
0126320    r  \r       (   l   p   t   e   +   l   p   t   e   >   >   L
0126340    P   T   E   .   i   f   s   N   a   m   e   )   >   >   S   t
0126360    r   i   n   g   .   l   e   n   g   t   h   )       t   h   e
0126400    n  \r               [  \r               l   p   t   e   >   >
0126420    L   P   T   E   .   i   f   s   N   a   m   e       =       l
0126440    p   t   e   >   >   L   P   T   E   .   l   e   n   g   t   h
0126460   \r               l   p   t   e   >   >   L   P   T   E   .   l
0126500    e   n   g   t   h       =       l   p   t   e   >   > 376 001
0126520   \0 317   Z   L   P   T   E   .   l   e   n   g   t   h       +
0126540        i   f   s   N   a   m   e   >   >   S   t   r   i   n   g
0126560    .   l   e   n   g   t   h       r   s   h   i   f   t       1
0126600        +   1  \r               i   f       l   p   t   e   >   >
0126620    L   P   T   E   .   l   e   n   g   t   h       g   r       m
0126640    a   x   L   e   n   L   P   T   E       t   h   e   n       I
0126660    F   S   E   r   r   o   r   (   e   c   S   e   t   L   P   T
0126700    E   )  \r               l   p   t   e   >   >   L   P   T   E
0126720    .   g   o   t   L   o   n   g   e   r       =       t   r   u
0126740    e  \r               ]  \r   C   o   p   y   S   t   r   i   n
0126760    g   (   l   p   t   e   +   l   p   t   e   >   >   L   P   T
0127000    E   .   i   f   s   N   a   m   e   ,       i   f   s   N   a
0127020    m   e   )  \r   l   p   t   e   >   >   L   P   T   E   .   d
0127040    i   r   t   y       =       t   r   u   e  \r   ]  \r  \r   /
0127060    /   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0127100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0127120    -   -   - 376 001  \0 037 365   -   -   -   -   -   -   -   -
0127140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0127200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0127220    a   n   d       S   e   t   L   p   t   e   T   f   s   N   a
0127240    m   e   (   l   p   t   e   ,       t   f   s   N   a   m   e
0127260    )       b   e  \r   /   /   -   -   -   -   -   -   -   -   -
0127300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0127420   \r   [  \r   i   f       (   l   p   t   e   >   >   L   P   T
0127440    E   .   t   f   s   N   a   m   e       e   q       0   )   ?
0127460        t   r   u   e   ,       (   t   f   s   N   a   m   e   >
0127500    >   S   t   r   i   n   g   .   l   e   n   g   t   h       g
0127520    r  \r       (   l   p   t   e 376 001  \0 334 340   +   l   p
0127540    t   e   >   >   L   P   T   E   .   t   f   s   N   a   m   e
0127560    )   >   >   S   t   r   i   n   g   .   l   e   n   g   t   h
0127600    )       t   h   e   n  \r               [  \r               l
0127620    p   t   e   >   >   L   P   T   E   .   t   f   s   N   a   m
0127640    e       =       l   p   t   e   >   >   L   P   T   E   .   l
0127660    e   n   g   t   h  \r               l   p   t   e   >   >   L
0127700    P   T   E   .   l   e   n   g   t   h       =       l   p   t
0127720    e   >   >   L   P   T   E   .   l   e   n   g   t   h       +
0127740        t   f   s   N   a   m   e   >   >   S   t   r   i   n   g
0127760    .   l   e   n   g   t   h       r   s   h   i   f   t       1
0130000        +   1  \r               i   f       l   p   t   e   >   >
0130020    L   P   T   E   .   l   e   n   g   t   h       g   r       m
0130040    a   x   L   e   n   L   P   T   E       t   h   e   n       I
0130060    F   S   E   r   r   o   r   (   e   c   S   e   t   L   P   T
0130100    E   )  \r               l   p   t   e   >   >   L   P   T   E
0130120    .   g   o   t   L   o   n   g   e   r       =     376 001  \0
0130140  366 370   t   r   u   e  \r               ]  \r   C   o   p   y
0130160    S   t   r   i   n   g   (   l   p   t   e   +   l   p   t   e
0130200    >   >   L   P   T   E   .   t   f   s   N   a   m   e   ,    
0130220    t   f   s   N   a   m   e   )  \r   l   p   t   e   >   >   L
0130240    P   T   E   .   d   i   r   t   y       =       t   r   u   e
0130260   \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -   -   -
0130300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0130400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0130420    a   n   d       S   e   t   L   p   t   e   D   I   F   R   e
0130440    c   (   l   p   t   e   ,       d   i   f   R   e   c   )    
0130460    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0130500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0130540    -   - 376 001  \0 200   c   -   -   -   -   -   -   -   -   -
0130560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0130620    -   -   -  \r   [  \r   i   f       l   p   t   e   >   >   L
0130640    P   T   E   .   d   i   f   R   e   c       e   q       0    
0130660    t   h   e   n  \r               [  \r               l   p   t
0130700    e   >   >   L   P   T   E   .   d   i   f   R   e   c       =
0130720        l   p   t   e   >   >   L   P   T   E   .   l   e   n   g
0130740    t   h  \r               l   p   t   e   >   >   L   P   T   E
0130760    .   l   e   n   g   t   h       =       l   p   t   e   >   >
0131000    L   P   T   E   .   l   e   n   g   t   h       +       l   e
0131020    n   D   I   F   R   e   c  \r               i   f       l   p
0131040    t   e   >   >   L   P   T   E   .   l   e   n   g   t   h    
0131060    g   r       m   a   x   L   e   n   L   P   T   E       t   h
0131100    e   n       I   F   S   E   r   r   o   r   (   e   c   S   e
0131120    t   L   P   T   E   )  \r               l   p   t   e   >   >
0131140    L   P   T   E   .   g   o 376  \0   c 322 250   t   L   o   n
0131160    g   e   r       =       t   r   u   e  \r               ]  \r
0131200    M   o   v   e   B   l   o   c   k   (   l   p   t   e   +   l
0131220    p   t   e   >   >   L   P   T   E   .   d   i   f   R   e   c
0131240    ,       d   i   f   R   e   c   ,       l   e   n   D   I   F
0131260    R   e   c   )  \r   l   p   t   e   >   >   L   P   T   E   .
0131300    d   i   r   t   y       =       t   r   u   e  \r   ]  \r 377
0131320   \0  \0   I   f   s   S   c   a   v   K   b   d   .   b   c   p
0131340    l  \0 373 224 223   c 025  \0  \0 376 001  \0 242   d   /   /
0131360        I   f   s   S   c   a   v   K   b   d   .   b   c   p   l
0131400        -       v   a   r   i   o   u   s       k   e   y   b   o
0131420    a   r   d       i   n   t   e   r   a   c   t   i   o   n    
0131440    p   r   o   c   e   d   u   r   e   s  \r   /   /       C   o
0131460    p   y   r   i   g   h   t       X   e   r   o   x       C   o
0131500    r   p   o   r   a   t   i   o   n       1   9   7   9  \r   /
0131520    /       L   a   s   t       m   o   d   i   f   i   e   d    
0131540    D   e   c   e   m   b   e   r       2   7   ,       1   9   7
0131560    9           1   :   4   4       P   M       b   y       B   o
0131600    g   g   s  \r  \r   g   e   t       "   C   m   d   S   c   a
0131620    n   .   d   e   c   l   "  \r   g   e   t       "   D   i   s
0131640    k   s   .   d   "  \r  \r   e   x   t   e   r   n   a   l  \r
0131660    [  \r   /   /       o   u   t   g   o   i   n   g       p   r
0131700    o   c   e   d   u   r   e   s  \r   O   p   e   n   D   i   s
0131720    k   ;       S   c   a   v   C   o   n   f   i   r   m  \r  \r
0131740    /   /       i   n   c   o   m   i   n   g       p   r 376 001
0131760   \0 244   ?   o   c   e   d   u   r   e   s  \r   T   F   S   I
0132000    n   i   t   ;       B   F   S   I   n   i   t  \r   D   e   f
0132020    a   u   l   t   A   r   g   s   ;       D   i   s   m   i   s
0132040    s  \r   R   e   s   e   t   s   ;       E   r   r   o   r   s
0132060    ;       W   s   ;       W   s   s   ;       G   e   t   s   ;
0132100        P   u   t   s   ;       C   l   o   s   e   s  \r   C   r
0132120    e   a   t   e   K   e   y   w   o   r   d   T   a   b   l   e
0132140    ;       D   e   s   t   r   o   y   K   e   y   w   o   r   d
0132160    T   a   b   l   e   ;       I   n   s   e   r   t   K   e   y
0132200    w   o   r   d  \r   I   n   i   t   C   m   d   ;       E   n
0132220    a   b   l   e   C   a   t   c   h   ;       E   n   d   C   a
0132240    t   c   h   ;       T   e   r   m   i   n   a   t   i   n   g
0132260    C   h   a   r  \r   B   e   g   i   n   D   e   f   a   u   l
0132300    t   P   h   r   a   s   e   ;       E   n   d   D   e   f   a
0132320    u   l   t   P   h   r   a   s   e  \r   G   e   t   K   e   y
0132340    w   o   r   d   ;       G   e   t   N   u   m   b   e   r   ;
0132360        I   n 376 001  \0 224 366   v   e   r   t   W   i   n   d
0132400    o   w  \r  \r   /   /       i   n   c   o   m   i   n   g    
0132420    s   t   a   t   i   c   s  \r   s   y   s   Z   o   n   e   ;
0132440        s   y   s   D   i   s   k   ;       k   e   y   s   ;    
0132460    d   s   p   ;       t   f   s   D   D   M   g   r   ;       b
0132500    f   s   D   D   M   g   r  \r   ]  \r  \r   /   /   -   -   -
0132520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0132620    -   -   -   -   -   -   -   -   -  \r   l   e   t       O   p
0132640    e   n   D   i   s   k   (   s   t   r   i   n   g   ,       a
0132660    l   l   o   c   ,       f   r   e   s   h   ,       d   i   a
0132700    b   l   o   ;       n   u   m   a   r   g   s       n   a   )
0132720        =       v   a   l   o   f  \r   /   /   -   -   -   -   -
0132740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0132760    -   -   -   -   -   -   -   - 376 001  \0   e   Z   -   -   -
0133000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0133040    -   -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   D
0133060    e   f   a   u   l   t   A   r   g   s   (   l   v       n   a
0133100    ,       1   ,       t   r   u   e   ,       f   a   l   s   e
0133120    ,       f   a   l   s   e   )  \r   l   e   t       c   s    
0133140    =       I   n   i   t   C   m   d   (   2   5   6   ,       5
0133160    )   ;       i   f       c   s       e   q       0       r   e
0133200    s   u   l   t   i   s       0  \r   W   s   s   (   c   s   ,
0133220        s   t   r   i   n   g   )  \r   l   e   t       d   K   T
0133240        =       n   i   l  \r   i   f       E   n   a   b   l   e
0133260    C   a   t   c   h   (   c   s   )       t   h   e   n       [
0133300        D   e   s   t   r   o   y   K   e   y   w   o   r   d   T
0133320    a   b   l   e   (   d   K   T   )   ;       E   n   d   C   a
0133340    t   c   h   (   c   s   )       ]  \r   d   K   T       =    
0133360    C   r   e   a   t   e   K   e   y   w   o   r   d 376 001  \0
0133400  035   '   T   a   b   l   e   (   2   ,       1   )  \r   i   f
0133420        d   i   a   b   l   o       t   h   e   n       I   n   s
0133440    e   r   t   K   e   y   w   o   r   d   (   d   K   T   ,    
0133460    "   D   P   "   )   !   0       =       -   1  \r   I   n   s
0133500    e   r   t   K   e   y   w   o   r   d   (   d   K   T   ,    
0133520    "   T   P   "   )   !   0       =       1  \r   l   e   t    
0133540    t   r   i   d   e   n   t       =       G   e   t   K   e   y
0133560    w   o   r   d   (   c   s   ,       d   K   T   ,       f   a
0133600    l   s   e   ,       P   h   r   a   s   e   T   e   r   m   i
0133620    n   a   t   o   r   )   !   0       g   r       0  \r   l   e
0133640    t       t   e   r   m   C   h   a   r       =       T   e   r
0133660    m   i   n   a   t   i   n   g   C   h   a   r   (   c   s   )
0133700   \r   /   /       t   h   e   r   e       m   u   s   t       b
0133720    e       a       b   e   t   t   e   r       w   a   y       t
0133740    o       d   o       t   h   i   s   .   .   .  \r   B   e   g
0133760    i   n   D   e   f   a   u   l   t   P   h   r   a   s   e   (
0134000    c   s 376 001  \0 210 033   )  \r   P   u   t   s   (   c   s
0134020    ,       t   e   r   m   C   h   a   r   )  \r   E   n   d   D
0134040    e   f   a   u   l   t   P   h   r   a   s   e   (   c   s   )
0134060   \r   c   s   >   >   C   S   .   e   d   i   t   C   o   n   t
0134100    r   o   l       =       e   d   i   t   A   p   p   e   n   d
0134120   \r   l   e   t       d   r   i   v   e   N   u   m   b   e   r
0134140        =       G   e   t   N   u   m   b   e   r   (   c   s   ,
0134160        8   )  \r   l   e   t       d   i   s   k       =       n
0134200    i   l  \r   t   e   s   t       t   r   i   d   e   n   t  \r
0134220                i   f   s   o       d   i   s   k       =       T
0134240    F   S   I   n   i   t   (   s   y   s   Z   o   n   e   ,    
0134260    a   l   l   o   c   ,       d   r   i   v   e   N   u   m   b
0134300    e   r   ,       t   f   s   D   D   M   g   r   ,       f   r
0134320    e   s   h   )  \r               i   f   n   o   t       t   e
0134340    s   t       d   r   i   v   e   N   u   m   b   e   r       e
0134360    q       s   y   s   D   i   s   k   >   >   D   S   K   .   d
0134400    r   i   v   e   N   u   m 376 001  \0 024 341   b   e   r  \r
0134420                            i   f   s   o       d   i   s   k    
0134440    =       s   y   s   D   i   s   k  \r                        
0134460    i   f   n   o   t       d   i   s   k       =       B   F   S
0134500    I   n   i   t   (   s   y   s   Z   o   n   e   ,       t   r
0134520    u   e   ,       d   r   i   v   e   N   u   m   b   e   r   ,
0134540        b   f   s   D   D   M   g   r   )  \r   i   f       d   i
0134560    s   k       e   q       0       t   h   e   n       E   r   r
0134600    o   r   s   (   c   s   ,       0   )  \r   D   e   s   t   r
0134620    o   y   K   e   y   w   o   r   d   T   a   b   l   e   (   d
0134640    K   T   )  \r   C   l   o   s   e   s   (   c   s   )  \r   r
0134660    e   s   u   l   t   i   s       d   i   s   k  \r   ]  \r  \r
0134700    /   /   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0134720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0135000    -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0 327
0135020    ,   -   -  \r   a   n   d       P   h   r   a   s   e   T   e
0135040    r   m   i   n   a   t   o   r   (   c   s   ,       c   h   a
0135060    r   )       =  \r   /   /   -   -   -   -   -   -   -   -   -
0135100    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0135200    -   -   -  \r               c   h   a   r       l   s       $
0135220    A       %       (   c   h   a   r       g   r       $   Z    
0135240    &       c   h   a   r       l   s       $   a   )       %    
0135260    c   h   a   r       g   r       $   z  \r  \f  \r   /   /   -
0135300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0135400    -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d    
0135420    S 376 001  \0 354 254   c   a   v   C   o   n   f   i   r   m
0135440    (   s   t   r   i   n   g   ;       n   u   m   a   r   g   s
0135460        n   a   )       =       v   a   l   o   f  \r   /   /   -
0135500    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0135600    -   -   -   -   -   -   -   -   -   -   -  \r   [  \r   i   f
0135620        n   a       g   r       0       t   h   e   n       W   s
0135640    (   s   t   r   i   n   g   )  \r   W   s   (   "       [   C
0135660    o   n   f   i   r   m   ]       "   )  \r   s   w   i   t   c
0135700    h   o   n       G   e   t   s   (   k   e   y   s   )       i
0135720    n   t   o  \r               [  \r               c   a   s   e
0135740        $   Y   :       c   a   s   e       $   y   :       c   a
0135760    s   e       $   *   N   :  \r                           [    
0136000    W   s   (   "   Y   e   s   .   "   )   ;       r   e   s   u
0136020    l   t   i   s       t 376 001  \0   H 363   r   u   e       ]
0136040   \r               c   a   s   e       $   N   :       c   a   s
0136060    e       $   n   :       c   a   s   e       $   *   1   7   7
0136100    :  \r                           [       W   s   (   "   N   o
0136120    .   "   )   ;       r   e   s   u   l   t   i   s       f   a
0136140    l   s   e       ]  \r               c   a   s   e       $   ?
0136160    :  \r                           [       W   s   (   "   Y   e
0136200    s       =       Y   |   y   |   <   c   r   >   ,       N   o
0136220        =       N   |   n   |   <   d   e   l   >   "   )   ;    
0136240    e   n   d   c   a   s   e       ]  \r               d   e   f
0136260    a   u   l   t   :  \r                           [  \r        
0136300                    I   n   v   e   r   t   W   i   n   d   o   w
0136320    (   d   s   p   >   >   S   T   .   p   a   r   1   )  \r    
0136340                        D   i   s   m   i   s   s   (   1   0   0
0136360    )  \r                           I   n   v   e   r   t   W   i
0136400    n   d   o   w   (   d   s   p   >   >   S   T   .   p   a   r
0136420    1   )  \r                           R   e 376  \0   !   2 276
0136440    s   e   t   s   (   k   e   y   s   )  \r                    
0136460        ]  \r               ]       r   e   p   e   a   t  \r   ]
0136500   \r 377  \0  \0   I   f   s   S   c   a   v   P   r   i   n   t
0136520    .   b   c   p   l  \0 373 224 223   S 260  \0  \0 376 001  \0
0136540    q   W   /   /       I   f   s   S   c   a   v   P   r   i   n
0136560    t   .   b   c   p   l  \r   /   /       C   o   p   y   r   i
0136600    g   h   t       X   e   r   o   x       C   o   r   p   o   r
0136620    a   t   i   o   n       1   9   7   9  \r   /   /       L   a
0136640    s   t       m   o   d   i   f   i   e   d       D   e   c   e
0136660    m   b   e   r       2   8   ,       1   9   7   9           3
0136700    :   5   9       A   M       b   y       B   o   g   g   s  \r
0136720   \r   g   e   t       "   I   f   s   S   c   a   v   e   n   g
0136740    e   r   .   d   e   c   l   "  \r   g   e   t       "   A   l
0136760    t   o   F   i   l   e   S   y   s   .   d   "  \r   g   e   t
0137000        "   D   i   s   k   s   .   d   "  \r   g   e   t       "
0137020    T   f   s   .   d   "  \r  \r   e   x   t   e   r   n   a   l
0137040   \r   [  \r   /   /       o   u   t   g   o   i   n   g       p
0137060    r   o   c   e   d   u   r   e   s  \r   P   r   i   n   t   T
0137100    i   m   e   ;       P   r   i   n   t   P   L   M   E  \r   P
0137120    r   i   n   t   D   i   s   k   E   r   r   o   r   ;       P
0137140    r   i 376 001  \0   = 027   n   t   R   e   a   l   D   A  \r
0137160   \r   /   /       i   n   c   o   m   i   n   g       p   r   o
0137200    c   e   d   u   r   e   s  \r   P   u   t   T   e   m   p   l
0137220    a   t   e   ;       W   s  \r   R   e   a   d   C   a   l   e
0137240    n   d   a   r   ;       D   o   u   b   l   e   D   i   f   f
0137260    e   r   e   n   c   e  \r  \r   /   /       i   n   c   o   m
0137300    i   n   g       s   t   a   t   i   c   s  \r   d   s   p   ;
0137320        p   a   s   s   ;       p   h   a   s   e   ;       p   l
0137340    m   e  \r   ]  \r  \r   /   /   -   -   -   -   -   -   -   -
0137360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0137460    -   -   -   -  \r   l   e   t       P   r   i   n   t   T   i
0137500    m   e   (   s   t   a   r   t   T   i   m   e   )       b   e
0137520   \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -   -
0137540    -   -   -   -   -   -   - 376 001  \0   2 003   -   -   -   -
0137560    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0137640    -   -   -   -  \r   [  \r   l   e   t       s   t   o   p   T
0137660    i   m   e       =       v   e   c       1   ;       R   e   a
0137700    d   C   a   l   e   n   d   a   r   (   s   t   o   p   T   i
0137720    m   e   )  \r   l   e   t       s   e   c   o   n   d   s    
0137740    =       D   o   u   b   l   e   D   i   f   f   e   r   e   n
0137760    c   e   (   s   t   o   p   T   i   m   e   ,       s   t   a
0140000    r   t   T   i   m   e   )  \r   i   f       p   a   s   s    
0140020    n   e       0       t   h   e   n       P   u   t   T   e   m
0140040    p   l   a   t   e   (   d   s   p   ,       "   *   N   [   $
0140060    D   -   $   D   ]       "   ,       p   a   s   s   ,       p
0140100    h   a   s   e   )  \r   P   u   t   T   e   m   p   l   a   t
0140120    e   (   d   s   p   ,       "   T   i   m   e       =       $
0140140    D   :   $   2   F   0   D   "   ,       s   e 376 001  \0 017
0140160  254   c   o   n   d   s   /   6   0   ,       s   e   c   o   n
0140200    d   s       r   e   m       6   0   )  \r   ]  \r  \r   /   /
0140220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0140320    -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n   d
0140340        P   r   i   n   t   P   L   M   E   (   v   d   a   )    
0140360    b   e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -
0140400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0140500    -  \r   [  \r   P   u   t   T   e   m   p   l   a   t   e   (
0140520    d   s   p   ,       "   *   N   [   $   D   -   $   D   ]   *
0140540    T   F   I   D       $   E   U   O   ;   $   U   O   ,       p
0140560    a 376 001  \0 360 331   g   e       n   u   m   b   e   r    
0140600    $   U   O   ,       n   u   m       c   h   a   r   s       $
0140620    U   O   "   ,  \r       p   a   s   s   ,       p   h   a   s
0140640    e   ,       l   v       p   l   m   e   >   >   P   L   M   E
0140660    .   s   n   1   ,       p   l   m   e   >   >   P   L   M   E
0140700    .   v   n   ,  \r       p   l   m   e   >   >   P   L   M   E
0140720    .   p   n   ,       p   l   m   e   >   >   P   L   M   E   .
0140740    n   u   m   C   h   a   r   s   )  \r   P   u   t   T   e   m
0140760    p   l   a   t   e   (   d   s   p   ,       "   *   N   [   $
0141000    D   -   $   D   ]   *   T   c   u   r   r   e   n   t       v
0141020    d   a       $   U   O   ,       p   r   e   v   i   o   u   s
0141040        v   d   a       $   U   O   ,       n   e   x   t       v
0141060    d   a       $   U   O   "   ,  \r       p   a   s   s   ,    
0141100    p   h   a   s   e   ,       v   d   a   ,       p   l   m   e
0141120    >   >   P   L   M   E   .   b   a   c   k   P   ,       p   l
0141140    m   e   >   >   P   L   M   E   .   n   e   x   t   P   )  \r
0141160    ]  \r  \f  \r   /   / 376 001  \0   0 231   -   -   -   -   -
0141200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0141300    -   -   -   -   -   -   -  \r   a   n   d       P   r   i   n
0141320    t   D   i   s   k   E   r   r   o   r   (   c   b   )       b
0141340    e  \r   /   /   -   -   -   -   -   -   -   -   -   -   -   -
0141360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0141460   \r   /   /       C   a   l   l   e   d       f   r   o   m    
0141500    v   a   r   i   o   u   s       H   a   r   d       d   i   s
0141520