$ od -c -N 50000 [Indigo]<AltoSource>FIND.DM!2
0000000  377  \0  \0   f   i   n   d   .   b   c   p   l  \0 373 226   '
0000020  211   F  \0  \0 376 001  \0  \b 244   /   /  \r   /   /       F
0000040    i   l   e       s   e   a   r   c   h   i   n   g       p   r
0000060    o   g   r   a   m  \r   /   /       l   a   s   t       e   d
0000100    i   t   e   d       O   c   t   o   b   e   r       2   9   ,
0000120        1   9   8   0           6   :   2   1       P   M  \r   /
0000140    /  \r   /   /       C   o   p   y   r   i   g   h   t       X
0000160    e   r   o   x       C   o   r   p   o   r   a   t   i   o   n
0000200        1   9   7   9   ,       1   9   8   0  \r  \r  \t   g   e
0000220    t       "   f   i   n   d   p   k   g   d   e   f   s   .   d
0000240    "  \r  \t   g   e   t       "   s   t   r   e   a   m   s   .
0000260    d   "  \r  \t   g   e   t       "   a   l   t   o   f   i   l
0000300    e   s   y   s   .   d   "  \r  \t   g   e   t       "   b   c
0000320    p   l   f   i   l   e   s   .   d   "  \r  \r   e   x   t   e
0000340    r   n   a   l  \r   [  \t  \t   /   /       G   P  \r  \t   S
0000360    e   t   u   p   R   e   a   d   P   a   r   a   m  \r  \t   R
0000400    e   a   d   P   a   r   a   m  \r  \t  \t   /   /       M   D
0000420    I  \r  \t   L   o   o   k   u   p 376 001  \0   Y   7   E   n
0000440    t   r   i   e   s  \r  \t  \t   /   /       f   i   n   d   s
0000460    u   b  \r  \t   U   s   c   2  \r  \t   o   c   c   l   i   m
0000500   \r  \t   l   i   n   e   d   e   l   i   m  \r  \t   p   a   r
0000520    a   d   e   l   i   m  \r  \t   b   r   e   a   k   d   e   l
0000540    i   m  \r  \t   n   o   n   b   r   a   v   o  \r  \t   c   o
0000560    p   y   s   e   g  \r  \t   s   p   l   i   t   s   t   r   e
0000600    a   m  \r  \t   b   o   l   d   s   t   r   e   a   m  \r  \t
0000620    r   e   a   d   s   t   r   i   n   g  \r  \t   R   e   a   d
0000640    C   h   a   r  \r  \t  \t   /   /       F   i   n   d   C   o
0000660    m   p   i   l   e  \r  \t   F   i   n   d   C   o   m   p   i
0000700    l   e  \r  \t  \t   /   /       F   i   n   d   N   e   x   t
0000720   \r  \t   F   i   n   d   I   n   i   t   S   c   a   n  \r  \t
0000740    F   i   n   d   N   e   x   t  \r  \t  \t   /   /       T   e
0000760    m   p   l   a   t   e  \r  \t   P   u   t   T   e   m   p   l
0001000    a   t   e  \r  \t  \t   /   /       O   .   S   .  \r  \t   C
0001020    l   o   s   e   s   ;       C   r   e   a   t   e   D 376 001
0001040   \0   Y 034   i   s   k   S   t   r   e   a   m   ;       C   r
0001060    e   a   t   e   D   i   s   p   l   a   y   S   t   r   e   a
0001100    m  \r  \t   D   o   u   b   l   e   A   d   d   ;       d   s
0001120    p  \r  \t   E   n   d   o   f   s  \r  \t   F   i   l   e   P
0001140    o   s   ;       F   i   n   i   s   h   S   c   a   n   S   t
0001160    r   e   a   m   ;       f   p   C   o   m   C   m   ;       f
0001200    p   S   y   s   D   i   r   ;       F   r   e   e  \r  \t   G
0001220    e   t   L   i   n   e   P   o   s   ;       G   e   t   s  \r
0001240   \t   k   e   y   s  \r  \t   M   o   v   e   B   l   o   c   k
0001260   \r  \t   O   p   e   n   F   i   l   e  \r  \t   P   u   t   s
0001300   \r  \t   R   e   s   e   t   s  \r  \t   S   e   t   B   l   o
0001320    c   k   ;       S   e   t   F   i   l   e   P   o   s   ;    
0001340    S   h   o   w   D   i   s   p   l   a   y   S   t   r   e   a
0001360    m   ;       s   y   s   Z   o   n   e  \r  \t   T   i   m   e
0001400    r  \r  \t   U   s   c  \r  \t   W   s   ;       W   s   s  \r
0001420   \t   Z   e   r   o  \r   ]  \r  \r  \r   m   a   n   i   f   e
0001440    s   t  \r 376 001  \0 034   =   [  \t   b   u   f   s   i   z
0001460    e       =       7   7   0   0   0   b  \t   /   /       b   u
0001500    f   f   e   r       s   p   a   c   e  \r  \t   m   b   u   f
0001520    s   i   z   e       =       8   0   0  \t   /   /       b   u
0001540    f   f   e   r       f   o   r       o   n   e   -   l   i   n
0001560    e       m   e   s   s   a   g   e  \r  \t   d   i   s   p   l
0001600    i   n   e   s       =       4   5  \r  \t   s   a   v   e   m
0001620    a   t   c   h   e   s       =       5   0  \t   /   /       r
0001640    e   m   e   m   b   e   r       p   o   s   i   t   i   o   n
0001660        o   f       t   h   i   s       m   a   n   y       m   a
0001700    t   c   h   e   s  \r  \t   m   a   x   l   l       =       1
0001720    0   0  \t   /   /       m   a   x       l   i   n   e       l
0001740    e   n   g   t   h  \r  \t   m   a   x   n   l       =       2
0001760    0  \t   /   /       m   a   x       p   a   r   a   g   r   a
0002000    p   h       l   e   n   g   t   h  \r  \t   l   v   C   o   d
0002020    e   T   o   p       =       #   3   3   5  \r  \t   l   v   D
0002040    i   s   p   l   a   y   H   e 376 001  \0 333 023   a   d    
0002060    =       #   4   2   0  \r  \t   d   s   o   p   t   i   o   n
0002100    s       =       D   S   s   t   o   p   b   o   t   t   o   m
0002120    +   D   S   s   t   o   p   r   i   g   h   t  \r  \t   m   d
0002140    s   o   p   t   i   o   n   s       =       0  \r   ]  \r  \r
0002160   \r   s   t   r   u   c   t   u   r   e       B   S   :  \r   [
0002200   \t   l   e   n   g   t   h       b   y   t   e  \r  \t   c   h
0002220    a   r   ^   1   ,   2   5   5       b   y   t   e  \r   ]  \r
0002240   \r   s   t   r   u   c   t   u   r   e       M   P   :  \t   /
0002260    /       m   a   t   c   h       p   o   s   i   t   i   o   n
0002300   \r   [  \t   f   i   d       w   o   r   d  \t   /   /       f
0002320    i   l   e       n   u   m   b   e   r  \r  \t   f   a       w
0002340    o   r   d       l   F   A       =       @   F   A  \r  \t   p
0002360    p   o   s       w   o   r   d  \t   /   /       p   o   s   i
0002400    t   i   o   n       w   i   t   h   i   n       p   a   t   t
0002420    e   r   n  \r   ]  \r   m   a   n   i   f   e   s   t       l
0002440    M   P       =       s   i   z   e       M   P   / 376 001  \0
0002460  367 361   1   6  \r  \r   s   t   r   u   c   t   u   r   e    
0002500    F   F   :  \t   /   /       F   i   n   d       f   l   a   g
0002520    s  \r   [  \t   i   t   e   m   p   r   o   c       w   o   r
0002540    d  \t   /   /       i   t   e   m       d   e   l   i   m   i
0002560    t   a   t   i   o   n       p   r   o   c   e   d   u   r   e
0002600   \r  \t   w   a   f       w   o   r   d  \t   /   /       i   f
0002620        t   r   u   e   ,       w   r   i   t   e       a   l   l
0002640        m   a   t   c   h   e   s       t   o       f   i   l   e
0002660        (   a   l   l   f       %       w   r   i   t   e   f   )
0002700   \r  \t   a   l   l   f       w   o   r   d  \t   /   /       A
0002720    l   l       f   l   a   g  \r  \t   c   a   s   e   f       w
0002740    o   r   d  \t   /   /       C   a   s   e       f   l   a   g
0002760   \r  \t   l   s   t   f       w   o   r   d  \t   /   /       L
0003000    i   s   t       f   l   a   g  \r  \t   m   u   l   t   i   f
0003020        w   o   r   d  \t   /   /       M   u   l   t   i   p   l
0003040    e       f   l   a   g  \r  \t   o   c   t   a   l   f       w
0003060    o   r 376 001  \0   S   7   d  \t   /   /       O   c   t   a
0003100    l       f   l   a   g  \r  \t   s   p   a   c   e   f       w
0003120    o   r   d  \t   /   /       S   p   a   c   e       f   l   a
0003140    g  \r  \t   v   e   r   b   a   t   i   m   f       w   o   r
0003160    d  \t   /   /       V   e   r   b   a   t   i   m       f   l
0003200    a   g  \r  \t   w   r   i   t   e   f       w   o   r   d  \t
0003220    /   /       W   r   i   t   e       f   l   a   g  \r   ]  \r
0003240    m   a   n   i   f   e   s   t       l   F   F       =       s
0003260    i   z   e       F   F   /   1   6  \r  \r  \r   s   t   a   t
0003300    i   c  \r   [  \t   c   h   a   r   E   x   i   t       =    
0003320    1   7   7   b  \r  \t   c   h   a   r   W   i   l   d   C   a
0003340    r   d       =       1  \r  \t   f   l   a   g   s  \t   /   /
0003360        g   l   o   b   a   l       f   l   a   g   s   ,       n
0003400    e   e   d   e   d       b   y       c   c   p   r   o   c  \r
0003420    ]  \r  \f  \r   /   /  \r   /   /       M   a   i   n       p
0003440    r   o   g   r   a   m  \r   /   /  \r  \r   l   e   t       f
0003460    i   n   d   (   b   l   v 376 001  \0 357   5   )       b   e
0003500   \r   [  \t   l   e   t       f   f       =       v   e   c    
0003520    l   F   F  \r  \t   S   e   t   B   l   o   c   k   (   f   f
0003540    ,       f   a   l   s   e   ,       l   F   F   )  \r  \t   l
0003560    e   t       c   p   a   t       =       v   e   c       3   0
0003600   \r  \t   f   f   >   >   F   F   .   i   t   e   m   p   r   o
0003620    c       =       l   i   n   e   d   e   l   i   m  \r  \t   l
0003640    e   t       c   o   m       =       O   p   e   n   F   i   l
0003660    e   (   "   C   o   m   .   C   m   "   ,       k   s   T   y
0003700    p   e   R   e   a   d   O   n   l   y   ,       c   h   a   r
0003720    I   t   e   m   ,       0   ,       f   p   C   o   m   C   m
0003740    )  \r  \t   l   e   t       n   v   ,       s   w   v       =
0003760        v   e   c       1   2   8   ,       v   e   c       1   2
0004000    8  \r  \t   S   e   t   u   p   R   e   a   d   P   a   r   a
0004020    m   (   n   v   ,       s   w   v   ,       c   o   m   ,    
0004040    s   w   v   )  \r  \t   f   o   r       j       =       1    
0004060    t   o       s   w   v   !   0       d   o  \r 376 001  \0   ;
0004100  366  \t   [       l   e   t       c   h       =       s   w   v
0004120    !   j   &   1   3   7   b  \r  \t           l   e   t       o
0004140    f   f       =       g   e   t   f   l   a   g   (   c   h   )
0004160   \r  \t           t   e   s   t       o   f   f       g   e    
0004200    0  \r  \t               i   f   s   o       f   f   !   o   f
0004220    f       =       t   r   u   e  \r  \t               i   f   n
0004240    o   t       s   w   i   t   c   h   o   n       c   h       i
0004260    n   t   o  \r  \t           [       c   a   s   e       $   B
0004300    :       f   f   >   >   F   F   .   i   t   e   m   p   r   o
0004320    c       =       b   r   e   a   k   d   e   l   i   m   ;    
0004340    e   n   d   c   a   s   e  \r  \t                   c   a   s
0004360    e       $   L   :       f   f   >   >   F   F   .   l   s   t
0004400    f       =       t   r   u   e   ;       e   n   d   c   a   s
0004420    e  \r  \t                   c   a   s   e       $   M   :    
0004440    f   f   >   >   F   F   .   m   u   l   t   i   f       =    
0004460    t   r   u   e   ;       e   n   d   c   a   s   e  \r  \t    
0004500      376 001  \0 272   Y           c   a   s   e       $   P   :
0004520        f   f   >   >   F   F   .   i   t   e   m   p   r   o   c
0004540        =       p   a   r   a   d   e   l   i   m   ;       e   n
0004560    d   c   a   s   e  \r  \t           ]  \r  \t   ]  \r  \t   i
0004600    f       f   f   >   >   F   F   .   w   r   i   t   e   f    
0004620    t   h   e   n       f   f   >   >   F   F   .   w   a   f    
0004640    =       t   r   u   e  \r  \t   l   e   t       b   u   f    
0004660    =       v   e   c       b   u   f   s   i   z   e  \r  \t   l
0004700    e   t       A       =       b   l   v   >   >   B   L   V   .
0004720    o   v   e   r   l   a   y   A   d   d   r   e   s   s   ^   0
0004740   \r  \t   l   e   t       B       =       b   l   v   >   >   B
0004760    L   V   .   o   v   e   r   l   a   y   A   d   d   r   e   s
0005000    s   ^   1  \r  \t   l   e   t       f   l   i   s   t       =
0005020        A  \r  \t   a   d   d   n   a   m   e   (   "   F   i   n
0005040    d   .   L   s   t   "   ,       l   v       f   l   i   s   t
0005060    )  \r  \t   a   d   d   n   a   m   e   (   "   F   i   n   d
0005100    .   M   a   t   c   h 376 001  \0 226   T   e   s   "   ,    
0005120    l   v       f   l   i   s   t   )  \r  \t       [       i   f
0005140        R   e   a   d   P   a   r   a   m   (   $   P   ,       -
0005160    1   ,       n   v   ,       s   w   v   )       e   q       -
0005200    1       b   r   e   a   k  \r  \t               a   d   d   n
0005220    a   m   e   (   n   v   ,       l   v       f   l   i   s   t
0005240    )  \r  \t       ]       r   e   p   e   a   t   w   h   i   l
0005260    e       f   f   >   >   F   F   .   m   u   l   t   i   f  \r
0005300   \t   l   e   t       f   n   a   m   e   s       =       f   l
0005320    i   s   t  \r  \t   l   e   t       c   f   n       =       A
0005340   \r  \t   w   h   i   l   e       c   f   n       n   e       f
0005360    n   a   m   e   s       d   o  \r  \t       [       @   f   l
0005400    i   s   t       =       c   f   n  \r  \t               f   l
0005420    i   s   t       =       f   l   i   s   t   +   1  \r  \t    
0005440            c   f   n       =       c   f   n       +       c   f
0005460    n   >   >   B   S   .   l   e   n   g   t   h   /   2   +   1
0005500   \r  \t       ]  \r  \t   l   e   t       f 376 001  \0 253 235
0005520    d   v   s       =       f   l   i   s   t  \r  \t   l   e   t
0005540        n   f   i   l   e   s       =       f   d   v   s   -   f
0005560    n   a   m   e   s   -   2  \r  \t   f   l   i   s   t       =
0005600        f   d   v   s   +   (   n   f   i   l   e   s   +   2   )
0005620    *   l   D   V  \r  \t   @   l   v   C   o   d   e   T   o   p
0005640        =       f   l   i   s   t  \r  \t   l   e   t       d   i
0005660    r       =       C   r   e   a   t   e   D   i   s   k   S   t
0005700    r   e   a   m   (   f   p   S   y   s   D   i   r   ,       k
0005720    s   T   y   p   e   R   e   a   d   O   n   l   y   ,       w
0005740    o   r   d   I   t   e   m   )  \r  \t   i   f       d   i   r
0005760        e   q       0       t   h   e   n       a   b   o   r   (
0006000    "   C   a   n   '   t       o   p   e   n       S   y   s   D
0006020    i   r   "   )  \r  \t   L   o   o   k   u   p   E   n   t   r
0006040    i   e   s   (   d   i   r   ,       f   n   a   m   e   s   ,
0006060        f   d   v   s   ,       n   f   i   l   e   s   +   2   ,
0006100        t   r   u   e   ,       b   u   f   ,       b   u   f   s
0006120  376 001  \0 221   o   i   z   e   )  \r  \t   C   l   o   s   e
0006140    s   (   d   i   r   )  \r  \t   l   e   t       l   e   n    
0006160    =       0  \r  \t   u   n   t   i   l       E   n   d   o   f
0006200    s   (   c   o   m   )       d   o  \r  \t       [       l   e
0006220    t       c   h       =       G   e   t   s   (   c   o   m   )
0006240   \r  \t               i   f       c   h       e   q       $   *
0006260    N       b   r   e   a   k  \r  \t               l   e   n    
0006300    =       l   e   n   +   1  \r  \t               c   p   a   t
0006320    >   >   B   S   .   c   h   a   r   ^   l   e   n       =    
0006340    c   h  \r  \t       ]  \r  \t   c   p   a   t   >   >   B   S
0006360    .   l   e   n   g   t   h       =       l   e   n  \r  \t   C
0006400    l   o   s   e   s   (   c   o   m   )  \r  \t   /   /       F
0006420    l   u   s   h       i   n   i   t   i   a   l   i   z   a   t
0006440    i   o   n       c   o   d   e  \r  \t   M   o   v   e   B   l
0006460    o   c   k   (   B   ,       A   ,       f   l   i   s   t   -
0006500    A   )  \r  \t   l   e   t       d   i   s   p       =       B
0006520    -   A  \r  \t   @ 376 001  \0 375 030   l   v   C   o   d   e
0006540    T   o   p       =       f   l   i   s   t   +   d   i   s   p
0006560   \r  \t   f   n   a   m   e   s   ,       f   d   v   s       =
0006600        f   n   a   m   e   s   +   d   i   s   p   ,       f   d
0006620    v   s   +   d   i   s   p  \r  \t   f   o   r       i       =
0006640        0       t   o       n   f   i   l   e   s   +   1       d
0006660    o  \r  \t               f   n   a   m   e   s   !   i       =
0006700        f   n   a   m   e   s   !   i   +   d   i   s   p  \r  \t
0006720    l   e   t       m   i   s   s       =       f   a   l   s   e
0006740   \r  \t   f   o   r       i       =       2       t   o       n
0006760    f   i   l   e   s   +   1       d   o  \r  \t       i   f    
0007000    f   d   v   s   !   (   i   *   l   D   V   )       e   q    
0007020    0       t   h   e   n  \r  \t       [       u   n   l   e   s
0007040    s       m   i   s   s       d   o  \r  \t                   [
0007060        W   s   (   "   C   a   n   '   t       f   i   n   d    
0007100    t   h   e       f   o   l   l   o   w   i   n   g       f   i
0007120    l   e   s   :   "   )  \r  \t         376 001  \0   2 251    
0007140                m   i   s   s       =       t   r   u   e  \r  \t
0007160                    ]  \r  \t               P   u   t   s   (   d
0007200    s   p   ,       $   *   S   )  \r  \t               W   s   (
0007220    f   n   a   m   e   s   !   i   )  \r  \t       ]  \r  \t   i
0007240    f       m   i   s   s       t   h   e   n       a   b   o   r
0007260    (   "   *   N   "   )  \r  \t   l   e   t       l   s   t   s
0007300    ,       m   a   t   s       =       0   ,       0  \r  \t   i
0007320    f       f   f   >   >   F   F   .   l   s   t   f       t   h
0007340    e   n       l   s   t   s       =       O   p   e   n   F   i
0007360    l   e   (   f   n   a   m   e   s   !   0   ,       k   s   T
0007400    y   p   e   W   r   i   t   e   O   n   l   y   ,       c   h
0007420    a   r   I   t   e   m   ,       v   e   r   L   a   t   e   s
0007440    t   C   r   e   a   t   e   ,       l   v       f   d   v   s
0007460    >   >   D   V   .   f   p   )  \r  \t   m   a   t   s       =
0007500        O   p   e   n   F   i   l   e   (   f   n   a   m   e   s
0007520    !   1   ,       k   s   T   y   p   e   W   r   i   t   e 376
0007540  001  \0 250 253   O   n   l   y   ,       c   h   a   r   I   t
0007560    e   m   ,       v   e   r   L   a   t   e   s   t   C   r   e
0007600    a   t   e   ,       l   v       (   f   d   v   s   +   l   D
0007620    V   )   >   >   D   V   .   f   p   )  \r  \t   f   l   a   g
0007640    s       =       f   f  \t   /   /       s   e   t       u   p
0007660        s   t   a   t   i   c       f   o   r       c   c   p   r
0007700    o   c  \r  \t       [       l   e   t       r       =       n
0007720    i   l  \r  \t               i   f       l   e   n       e   q
0007740        0       t   h   e   n  \r  \t                   [       r
0007760    e   a   d   s   t   r   i   n   g   (   "   P   a   t   t   e
0010000    r   n   :       "   ,       d   s   p   ,       c   p   a   t
0010020    ,       c   c   p   r   o   c   )  \r  \t                    
0010040        i   f       c   p   a   t   >   >   B   S   .   l   e   n
0010060    g   t   h       e   q       0       b   r   e   a   k  \r  \t
0010100                    ]  \r  \t               f   f   >   >   F   F
0010120    .   w   a   f       =       f   f   >   >   F   F   .   a   l
0010140    l   f       % 376 001  \0 006   P       f   f   >   >   F   F
0010160    .   w   r   i   t   e   f  \r  \t               r       =    
0010200    f   i   n   d   m   a   i   n   (   f   n   a   m   e   s   +
0010220    2   ,       f   d   v   s   +   2   *   l   D   V   ,       n
0010240    f   i   l   e   s   ,       c   p   a   t   ,       f   f   ,
0010260        l   s   t   s   ,       m   a   t   s   ,       b   u   f
0010300    ,       b   u   f   s   i   z   e   )  \r  \t               i
0010320    f       l   s   t   s       n   e       0       t   h   e   n
0010340        [       C   l   o   s   e   s   (   l   s   t   s   )   ;
0010360        l   s   t   s       =       0       ]  \r  \t            
0010400    i   f       r       n   e       0       t   h   e   n  \r  \t
0010420                    [       P   u   t   T   e   m   p   l   a   t
0010440    e   (   d   s   p   ,       "   *   *   *   *   *   *   *   *
0010460    *   *   $   S   *   N   "   ,       r   )       ]  \r  \t    
0010500    ]       r   e   p   e   a   t   w   h   i   l   e       l   e
0010520    n       e   q       0  \r  \t   C   l   o   s   e   s   (   m
0010540    a   t   s   )  \r   ]  \r  \r   a 376 001  \0   d 226   n   d
0010560        a   d   d   n   a   m   e   (   s   t   r   ,       l   v
0010600    l   s   t   )       b   e  \r   [  \t   l   e   t       n   w
0010620        =       s   t   r   >   >   B   S   .   l   e   n   g   t
0010640    h   /   2   +   1  \r  \t   M   o   v   e   B   l   o   c   k
0010660    (   @   l   v   l   s   t   ,       s   t   r   ,       n   w
0010700    )  \r  \t   @   l   v   l   s   t       =       @   l   v   l
0010720    s   t   +   n   w  \r   ]  \r  \r   a   n   d       a   b   o
0010740    r   (   s   )       b   e  \r  \t       [       W   s   (   s
0010760    )   ;       f   i   n   i   s   h       ]  \r  \r   a   n   d
0011000        c   c   p   r   o   c   (   d   s   ,       c   h   )    
0011020    =       v   a   l   o   f  \r   /   /       H   a   n   d   l
0011040    e       a       c   o   n   t   r   o   l       c   h   a   r
0011060    a   c   t   e   r       d   u   r   i   n   g       p   a   t
0011100    t   e   r   n       i   n   p   u   t   .  \r   /   /       T
0011120    h   e       o   n   l   y       c   h   a   r   a   c   t   e
0011140    r       r   e   c   o   g   n   i   z   e   d       i 376 001
0011160   \0 366 233   s       ^   S   ,       w   h   i   c   h       p
0011200    r   o   m   p   t   s       f   o   r       a  \r   /   /    
0011220    s   w   i   t   c   h       t   o       t   o   g   g   l   e
0011240    ,       o   r       ?       m   e   a   n   i   n   g       s
0011260    h   o   w       t   h   e       c   u   r   r   e   n   t    
0011300    s   t   a   t   e   .  \r   [  \t   i   f       c   h       n
0011320    e       $   S   -   1   0   0   b       r   e   s   u   l   t
0011340    i   s       f   a   l   s   e  \r  \t   W   s   s   (   d   s
0011360    ,       "       S   w   i   t   c   h   :       "   )  \r  \t
0011400    c   h       =       R   e   a   d   C   h   a   r   (   d   s
0011420    ,       5   ,       2   0   0   )  \r  \t   l   e   t       m
0011440    s   g       =       n   i   l  \r  \t   l   e   t       o   f
0011460    f       =       g   e   t   f   l   a   g   (   c   h   ,    
0011500    l   v       m   s   g   )  \r  \t   t   e   s   t       o   f
0011520    f       n   e       -   1  \r  \t       i   f   s   o  \r  \t
0011540    [       f   l   a   g   s   !   o   f   f       =       n   o
0011560    t       f 376 001  \0 321   ]   l   a   g   s   !   o   f   f
0011600   \r  \t           W   s   s   (   d   s   ,       m   s   g   )
0011620   \r  \t           W   s   s   (   d   s   ,       (   f   l   a
0011640    g   s   !   o   f   f   ?       "       -   -       o   n   "
0011660    ,       "       -   -       o   f   f   "   )   )  \r  \t   ]
0011700   \r  \t       i   f   n   o   t  \r  \t   t   e   s   t       c
0011720    h       e   q       $   ?  \r  \t       i   f   s   o  \r  \t
0011740    [       P   u   t   s   (   d   s   ,       $   *   N   )  \r
0011760   \t           f   o   r       i       =       0       t   o    
0012000    5       d   o  \r  \t           [       o   f   f       =    
0012020    g   e   t   f   l   a   g   (   t   a   b   l   e   [       $
0012040    A   ;   $   C   ;   $   O   ;   $   S   ;   $   V   ;   $   W
0012060        ]   !   i   ,       l   v       m   s   g   )  \r  \t    
0012100                i   f       f   l   a   g   s   !   o   f   f    
0012120    t   h   e   n       P   u   t   T   e   m   p   l   a   t   e
0012140    (   d   s   ,       "           $   S   *   N   "   ,       m
0012160    s   g   )  \r  \t           ] 376 001  \0   K 344  \r  \t   ]
0012200   \r  \t       i   f   n   o   t       W   s   s   (   d   s   ,
0012220        "       ?   ?   ?   "   )  \r  \t   r   e   s   u   l   t
0012240    i   s       t   r   u   e  \r   ]  \r  \r   a   n   d       g
0012260    e   t   f   l   a   g   (   c   h   ,       l   v   M   s   g
0012300    ;       n   u   m   a   r   g   s       n   a   )       =    
0012320    v   a   l   o   f  \r   /   /       C   o   n   v   e   r   t
0012340        a       g   l   o   b   a   l       f   l   a   g       c
0012360    h   a   r   a   c   t   e   r       t   o       a   n       i
0012400    n   d   e   x       i   n       t   h   e       F   F       s
0012420    t   r   u   c   t   u   r   e   ,  \r   /   /       o   r    
0012440    -   1       i   f       n   o   t       r   e   c   o   g   n
0012460    i   z   e   d   .           I   f       a       s   e   c   o
0012500    n   d       a   r   g       i   s       s   u   p   p   l   i
0012520    e   d   ,  \r   /   /       s   t   o   r   e       a   n    
0012540    e   x   p   l   a   n   a   t   o   r   y       m   e   s   s
0012560    a   g   e       i   n   t   o       i   t   .  \r 376 001  \0
0012600  300 224   [  \t   i   f       n   a       l   s       2       t
0012620    h   e   n       l   v   M   s   g       =       l   v       n
0012640    a  \r  \t   s   w   i   t   c   h   o   n       (   c   h   &
0012660    1   3   7   b   )       i   n   t   o  \t   /   /       l   o
0012700    w   e   r       c   a   s   e       =       u   p   p   e   r
0012720        c   a   s   e  \r  \t   [       c   a   s   e       $   A
0012740    :       @   l   v   M   s   g       =       "   A   l   l    
0012760    t   o       f   i   l   e   "   ;       r   e   s   u   l   t
0013000    i   s       o   f   f   s   e   t       F   F   .   a   l   l
0013020    f   /   1   6  \r  \t           c   a   s   e       $   C   :
0013040        @   l   v   M   s   g       =       "   C   a   s   e    
0013060    m   a   t   t   e   r   s   "   ;       r   e   s   u   l   t
0013100    i   s       o   f   f   s   e   t       F   F   .   c   a   s
0013120    e   f   /   1   6  \r  \t           c   a   s   e       $   O
0013140    :       @   l   v   M   s   g       =       "   O   c   t   a
0013160    l       p   o   s   i   t   i   o   n   s   "   ;       r   e
0013200    s   u 376 001  \0   ^ 346   l   t   i   s       o   f   f   s
0013220    e   t       F   F   .   o   c   t   a   l   f   /   1   6  \r
0013240   \t           c   a   s   e       $   S   :       @   l   v   M
0013260    s   g       =       "   S   p   a   c   e   s       m   a   t
0013300    t   e   r   "   ;       r   e   s   u   l   t   i   s       o
0013320    f   f   s   e   t       F   F   .   s   p   a   c   e   f   /
0013340    1   6  \r  \t           c   a   s   e       $   V   :       @
0013360    l   v   M   s   g       =       "   V   e   r   b   a   t   i
0013400    m   "   ;       r   e   s   u   l   t   i   s       o   f   f
0013420    s   e   t       F   F   .   v   e   r   b   a   t   i   m   f
0013440    /   1   6  \r  \t           c   a   s   e       $   W   :    
0013460    @   l   v   M   s   g       =       "   W   r   i   t   e    
0013500    o   n   l   y   "   ;       r   e   s   u   l   t   i   s    
0013520    o   f   f   s   e   t       F   F   .   w   r   i   t   e   f
0013540    /   1   6  \r  \t   ]  \r  \t   r   e   s   u   l   t   i   s
0013560        -   1  \r   ]  \r  \f  \r   /   /  \r   /   /       M   a
0013600    i   n       m   a   t   c 376 001  \0   d 316   h   i   n   g
0013620        c   o   d   e  \r   /   /  \r  \r   a   n   d       f   i
0013640    n   d   m   a   i   n   (   f   n   a   m   e   s   ,       f
0013660    d   v   s   ,       n   f   i   l   e   s   ,       u   p   a
0013700    t   ,       f   f   ,       l   s   t   s   ,       m   a   t
0013720    s   ,       b   u   f   ,       b   s   i   z   e   )       =
0013740        v   a   l   o   f  \r   [  \t   l   e   t       c   h   t
0013760    a   b       =       v   e   c       2   0   0   b  \r  \t   l
0014000    e   t       t   a   b   l   e   s       =       0  \r  \t   l
0014020    e   t       r       =       c   o   m   p   a   t   (   u   p
0014040    a   t   ,       f   f   ,       l   s   t   s   ,       c   h
0014060    t   a   b   ,       l   v       t   a   b   l   e   s   )  \r
0014100   \t   i   f       r       n   e       0       r   e   s   u   l
0014120    t   i   s       r  \r  \t   l   e   t       m   a   t   c   h
0014140    p   o   s       =       v   e   c       (   l   M   P   *   s
0014160    a   v   e   m   a   t   c   h   e   s   )  \r  \t   l   e   t
0014200        o   l   d       =       v   e   c       l 376 001  \0 237
0014220    p   M   P  \r  \t   Z   e   r   o   (   o   l   d   ,       l
0014240    M   P   )  \r  \t   l   e   t       n   p   a   g   e   s    
0014260    =       0  \r  \t   l   e   t       d   h       =       @   l
0014300    v   D   i   s   p   l   a   y   H   e   a   d  \r  \t   @   l
0014320    v   D   i   s   p   l   a   y   H   e   a   d       =       0
0014340   \r  \t   l   e   t       b   t   i   m   e       =       v   e
0014360    c       1  \r  \t   T   i   m   e   r   (   b   t   i   m   e
0014400    )  \r  \t   l   e   t       n   m   a   t   c   h   e   s    
0014420    =       g   e   t   m   a   t   c   h   e   s   (   f   d   v
0014440    s   ,       n   f   i   l   e   s   ,       b   u   f   ,    
0014460    b   s   i   z   e   ,       m   a   t   c   h   p   o   s   ,
0014500        l   v       n   p   a   g   e   s   ,       o   l   d   )
0014520   \r  \t   l   e   t       a   t   i   m   e       =       v   e
0014540    c       1  \r  \t   T   i   m   e   r   (   a   t   i   m   e
0014560    )  \r  \t   @   l   v   D   i   s   p   l   a   y   H   e   a
0014600    d       =       d   h  \r  \t   l   e   t       d   t   i   m
0014620    e 376 001  \0   ) 030       =       v   e   c       1  \r  \t
0014640    d   t   i   m   e   !   0   ,       d   t   i   m   e   !   1
0014660        =       n   o   t       b   t   i   m   e   !   0   ,    
0014700    n   o   t       b   t   i   m   e   !   1  \r  \t   D   o   u
0014720    b   l   e   A   d   d   (   d   t   i   m   e   ,       t   a
0014740    b   l   e   [       0   ;       1       ]   )  \r  \t   D   o
0014760    u   b   l   e   A   d   d   (   d   t   i   m   e   ,       a
0015000    t   i   m   e   )  \t   /   /       d   t   i   m   e       _
0015020        a   t   i   m   e   -   b   t   i   m   e  \r  \t   P   u
0015040    t   T   e   m   p   l   a   t   e   (   d   s   p   ,       "
0015060            $   D       m   a   t   c   h   e   s   ,       $   E
0015100    D       m   s   ,       $   D       p   a   g   e   s   "   ,
0015120        n   m   a   t   c   h   e   s   ,       d   t   i   m   e
0015140    ,       n   p   a   g   e   s   )  \r  \t   i   f       n   m
0015160    a   t   c   h   e   s       g   r       s   a   v   e   m   a
0015200    t   c   h   e   s       t   h   e   n       n   m   a   t   c
0015220    h   e   s       =     376 001  \0   u 372   s   a   v   e   m
0015240    a   t   c   h   e   s  \r  \t   l   e   t       f   i   r   s
0015260    t       =       t   r   u   e  \r  \t   l   e   t       d   b
0015300    s   i   z   e       =       (   f   f   >   >   F   F   .   w
0015320    r   i   t   e   f   ?       0   ,       b   s   i   z   e   )
0015340   \r  \t   i   f       n   m   a   t   c   h   e   s       n   e
0015360        0       t   h   e   n  \r  \t       [       l   e   t    
0015400    l   a   s   t       =       n   m   a   t   c   h   e   s    
0015420    l   s       s   a   v   e   m   a   t   c   h   e   s  \r  \t
0015440                l   e   t       n   m       =       s   h   o   w
0015460    m   a   t   c   h   e   s   (   f   n   a   m   e   s   ,    
0015500    f   d   v   s   ,       m   a   t   s   ,       b   u   f   ,
0015520        d   b   s   i   z   e   ,       m   a   t   c   h   p   o
0015540    s   ,       n   m   a   t   c   h   e   s   ,       u   p   a
0015560    t   >   >   B   S   .   l   e   n   g   t   h   ,       c   h
0015600    t   a   b   ,       f   i   r   s   t   ,       l   a   s   t
0015620    ,       f   f   )  \r  \t               i 376 001  \0   S   Q
0015640    f       n   m       l   s       0       t   h   e   n  \r  \t
0015660                [       u   n   l   e   s   s       f   f   >   >
0015700    F   F   .   w   a   f       b   r   e   a   k  \r  \t        
0015720                n   m       =       -   1   -   n   m  \r  \t    
0015740                    i   f       l   a   s   t       &       (   n
0015760    m       e   q       n   m   a   t   c   h   e   s   )       b
0016000    r   e   a   k  \t   /   /       a   l   l       d   o   n   e
0016020   \r  \t                       d   b   s   i   z   e       =    
0016040    0  \t   /   /       d   o   n   '   t       d   i   s   p   l
0016060    a   y       a   n   y       m   o   r   e  \r  \t            
0016100    ]  \r  \t               M   o   v   e   B   l   o   c   k   (
0016120    o   l   d   ,       m   a   t   c   h   p   o   s   +   (   n
0016140    m   -   1   )   *   l   M   P   ,       l   M   P   )  \r  \t
0016160                n   m   a   t   c   h   e   s       =       g   e
0016200    t   m   a   t   c   h   e   s   (   f   d   v   s   ,       n
0016220    f   i   l   e   s   ,       b   u   f   ,       b   s   i   z
0016240  376 001  \0   @  \0   e   ,       m   a   t   c   h   p   o   s
0016260    ,       0   ,       o   l   d   )  \r  \t               f   i
0016300    r   s   t       =       f   a   l   s   e  \r  \t       ]    
0016320    r   e   p   e   a   t  \r  \t   i   f       t   a   b   l   e
0016340    s       n   e       0       t   h   e   n       F   r   e   e
0016360    (   s   y   s   Z   o   n   e   ,       t   a   b   l   e   s
0016400    )  \r  \t   r   e   s   u   l   t   i   s       0  \r   ]  \r
0016420   \r   a   n   d       c   o   m   p   a   t   (   u   p   a   t
0016440    ,       f   f   ,       l   s   t   s   ,       c   h   t   a
0016460    b   ,       l   v   T   a   b   l   e   s   )       =       v
0016500    a   l   o   f  \r   [  \t   /   /       D   e   c   o   d   e
0016520        u   s   e   r   -   s   p   e   c   i   f   i   e   d    
0016540    p   a   t   t   e   r   n       i   n   t   o       s   t   r
0016560    i   n   g   ,       w   i   l   d   c   a   r   d   s   ,    
0016600    f   u   z   z  \r  \t   S   e   t   B   l   o   c   k   (   c
0016620    h   t   a   b   ,       c   l   a   s   s   O   t   h   e   r
0016640    ,       2   0   0 376 001  \0   v   K   b   )  \r  \t   c   h
0016660    t   a   b   !   c   h   a   r   E   x   i   t       =       c
0016700    l   a   s   s   E   x   i   t  \r  \t   u   n   l   e   s   s
0016720        f   f   >   >   F   F   .   s   p   a   c   e   f       d
0016740    o       c   h   t   a   b   !   $   *   S       =       c   l
0016760    a   s   s   S   k   i   p  \r  \t   u   n   l   e   s   s    
0017000    f   f   >   >   F   F   .   c   a   s   e   f       d   o    
0017020    f   o   r       c   h       =       $   a       t   o       $
0017040    z       d   o       c   h   t   a   b   !   c   h       =    
0017060    c   h   +   (   $   A   -   $   a   )  \r  \t   l   e   t    
0017100    p   a   t       =       u   p   a   t  \r  \t   l   e   t    
0017120    l   e   n   ,       f   u   z   z       =       0   ,       0
0017140   \r  \t   l   e   t       q   u   o   t   e       =       f   a
0017160    l   s   e  \r  \t   f   o   r       i       =       1       t
0017200    o       u   p   a   t   >   >   B   S   .   l   e   n   g   t
0017220    h       d   o  \r  \t       [       l   e   t       c   h    
0017240    =       u   p   a   t   >   >   B   S 376 001  \0  \a 355   .
0017260    c   h   a   r   ^   i       &       1   7   7   b  \r  \t    
0017300            i   f       c   h       l   s       4   0   b       r
0017320    e   s   u   l   t   i   s       "   C   o   n   t   r   o   l
0017340        c   h   a   r   .   s       n   o   t       a   l   l   o
0017360    w   e   d   "  \r  \t               u   n   l   e   s   s    
0017400    q   u   o   t   e       s   w   i   t   c   h   o   n       c
0017420    h       i   n   t   o  \r  \t               [       c   a   s
0017440    e       $   ~   :  \r  \t                           f   u   z
0017460    z       =       f   u   z   z   +   1  \r  \t                
0017500            l   o   o   p  \r  \t                       c   a   s
0017520    e       $   '   :  \r  \t                           q   u   o
0017540    t   e       =       t   r   u   e  \r  \t                    
0017560        l   o   o   p  \r  \t                       c   a   s   e
0017600        $   *   S   :  \r  \t                           i   f    
0017620    f   f   >   >   F   F   .   s   p   a   c   e   f       e   n
0017640    d   c   a   s   e  \r  \t                           l   o 376
0017660  001  \0 274   _   o   p  \r  \t                       c   a   s
0017700    e       $   #   :  \r  \t                           c   h    
0017720    =       c   h   a   r   W   i   l   d   C   a   r   d  \r  \t
0017740                ]  \r  \t               l   e   n       =       l
0017760    e   n   +   1  \r  \t               p   a   t   >   >   B   S
0020000    .   c   h   a   r   ^   l   e   n       =       c   h  \r  \t
0020020                q   u   o   t   e       =       f   a   l   s   e
0020040   \r  \t       ]  \r  \t   p   a   t   >   >   B   S   .   l   e
0020060    n   g   t   h       =       l   e   n  \r  \t   r   e   s   u
0020100    l   t   i   s       F   i   n   d   C   o   m   p   i   l   e
0020120    (   p   a   t   ,       c   h   t   a   b   ,       c   h   a
0020140    r   W   i   l   d   C   a   r   d   ,       f   u   z   z   ,
0020160        l   s   t   s   ,       t   r   u   e   ,       0   ,    
0020200    l   v   T   a   b   l   e   s   )  \r   ]  \r  \r   a   n   d
0020220        g   e   t   m   a   t   c   h   e   s   (   f   d   v   s
0020240    ,       n   f   i   l   e   s   ,       b   u   f   ,       b
0020260    s   i   z   e 376 001  \0 353   T   ,       m   a   t   c   h
0020300    p   o   s   ,       l   v   n   p   ,       o   l   d   )    
0020320    =       v   a   l   o   f  \r   /   /       R   e   t   u   r
0020340    n   s       #       o   f       m   a   t   c   h   e   s  \r
0020360    [  \t   l   e   t       n   m   a   t   c   h   e   s       =
0020400        0  \r  \t   l   e   t       f   a       =       v   e   c
0020420        l   F   A  \r  \t   l   e   t       s   k   i   p       =
0020440        l   v   n   p       e   q       0  \t   /   /       s   k
0020460    i   p       a   l   l       m   a   t   c   h   e   s       t
0020500    h   r   o   u   g   h       o   l   d  \r  \t   f   o   r    
0020520    i       =       o   l   d   >   >   M   P   .   f   i   d    
0020540    t   o       n   f   i   l   e   s   -   1       d   o  \r  \t
0020560        [       l   e   t       s   t       =       C   r   e   a
0020600    t   e   D   i   s   k   S   t   r   e   a   m   (   l   v    
0020620    (   f   d   v   s   +   i   *   l   D   V   )   >   >   D   V
0020640    .   f   p   ,       c   h   a   r   I   t   e   m   ,       k
0020660    s   T   y   p   e   R   e   a   d 376 001  \0 331 235   O   n
0020700    l   y   )  \r  \t               l   e   t       s   s   d    
0020720    =       F   i   n   d   I   n   i   t   S   c   a   n   (   s
0020740    t   ,       b   u   f   ,       b   s   i   z   e   ,       f
0020760    a   )  \r  \t                   [       l   e   t       p   p
0021000    o   s       =       F   i   n   d   N   e   x   t   (   )  \r
0021020   \t                           i   f       p   p   o   s       l
0021040    s       0       t   h   e   n  \t   /   /       e   n   d    
0021060    o   f       f   i   l   e   ,       p   p   o   s       =    
0021100    n   o   t       n   p   a   g   e   s  \r  \t                
0021120                [       i   f       l   v   n   p       n   e    
0021140    0       t   h   e   n       @   l   v   n   p       =       @
0021160    l   v   n   p       +       n   o   t       p   p   o   s  \r
0021200   \t                                       b   r   e   a   k  \r
0021220   \t                               ]  \r  \t                    
0021240        i   f       s   k   i   p       t   h   e   n  \r  \t    
0021260                            [       i   f       (   i     376 001
0021300   \0   a   ;   e   q       o   l   d   >   >   M   P   .   f   i
0021320    d   )       &       (   p   p   o   s       e   q       o   l
0021340    d   >   >   M   P   .   p   p   o   s   )       &  \r  \t    
0021360                                        (   f   a   >   >   F   A
0021400    .   p   a   g   e   N   u   m   b   e   r       e   q       o
0021420    l   d   >   >   M   P   .   p   a   g   e   N   u   m   b   e
0021440    r   )       &  \r  \t                                        
0021460    (   f   a   >   >   F   A   .   c   h   a   r   P   o   s    
0021500    e   q       o   l   d   >   >   M   P   .   c   h   a   r   P
0021520    o   s   )       t   h   e   n  \r  \t                        
0021540                            s   k   i   p       =       f   a   l
0021560    s   e  \r  \t                                       l   o   o
0021600    p  \r  \t                               ]  \r  \t            
0021620                t   e   s   t       n   m   a   t   c   h   e   s
0021640        l   s       s   a   v   e   m   a   t   c   h   e   s  \r
0021660   \t                               i   f   s   o  \t   /   /    
0021700    s   a   v 376 001  \0   f   ;   e       p   o   s   i   t   i
0021720    o   n       o   f       m   a   t   c   h  \r  \t            
0021740                    [       l   e   t       m   p       =       m
0021760    a   t   c   h   p   o   s   +   l   M   P   *   n   m   a   t
0022000    c   h   e   s  \r  \t                                       m
0022020    p   >   >   M   P   .   f   i   d       =       i  \r  \t    
0022040                                    m   p   >   >   M   P   .   p
0022060    p   o   s       =       p   p   o   s  \r  \t                
0022100                        m   p   >   >   M   P   .   d   a       =
0022120        f   a   >   >   F   A   .   d   a  \r  \t                
0022140                        m   p   >   >   M   P   .   p   a   g   e
0022160    N   u   m   b   e   r       =       f   a   >   >   F   A   .
0022200    p   a   g   e   N   u   m   b   e   r  \r  \t                
0022220                        m   p   >   >   M   P   .   c   h   a   r
0022240    P   o   s       =       f   a   >   >   F   A   .   c   h   a
0022260    r   P   o   s  \r  \t                               ]  \r  \t
0022300                                i 376 001  \0 356   M   f   n   o
0022320    t  \r  \t                                   i   f       l   v
0022340    n   p       e   q       0       t   h   e   n  \t   /   /    
0022360    q   u   i   t       n   o   w  \r  \t                        
0022400        [       F   i   n   i   s   h   S   c   a   n   S   t   r
0022420    e   a   m   (   s   s   d   )  \r  \t                        
0022440                C   l   o   s   e   s   (   s   t   )  \r  \t    
0022460                                    r   e   s   u   l   t   i   s
0022500        n   m   a   t   c   h   e   s  \r  \t                    
0022520            ]  \r  \t                           n   m   a   t   c
0022540    h   e   s       =       n   m   a   t   c   h   e   s   +   1
0022560   \r  \t                   ]       r   e   p   e   a   t  \r  \t
0022600                F   i   n   i   s   h   S   c   a   n   S   t   r
0022620    e   a   m   (   s   s   d   )  \r  \t               C   l   o
0022640    s   e   s   (   s   t   )  \r  \t       ]  \r  \t   r   e   s
0022660    u   l   t   i   s       n   m   a   t   c   h   e   s  \r   ]
0022700   \r  \f  \r   /   /  \r   /   /       O   u   t   p 376 001  \0
0022720    1  \0   u   t       r   e   s   u   l   t   s  \r   /   /  \r
0022740   \r   a   n   d       s   h   o   w   m   a   t   c   h   e   s
0022760    (   f   n   a   m   e   s   ,       f   d   v   s   ,       m
0023000    a   t   s   ,       d   b   ,       b   s   i   z   e   ,    
0023020    m   a   t   c   h   p   o   s   ,       n   m   a   t   c   h
0023040    e   s   ,       p   a   t   l   e   n   ,       c   h   t   a
0023060    b   ,       f   i   r   s   t   ,       l   a   s   t   ,    
0023100    f   f   )       =       v   a   l   o   f  \r   /   /       R
0023120    e   t   u   r   n   s       #       o   f       m   a   t   c
0023140    h   e   s       d   i   s   p   l   a   y   e   d       n   o
0023160    r   m   a   l   l   y   ,       -   1   -   #       i   f    
0023200    a   b   o   r   t   e   d       o   r       d   o   n   e  \r
0023220    [  \t   l   e   t       d   s   ,       m   d   s   ,       m
0023240    s   ,       b   o   l   d   s       =       n   i   l   ,    
0023260    n   i   l   ,       v   e   c       l   S   T   ,       v   e
0023300    c       l   S   T  \r  \t   t   e   s   t       b   s   i   z
0023320    e     376 001  \0 323 305   e   q       0  \r  \t       i   f
0023340    s   o  \t   /   /       j   u   s   t       c   o   p   y    
0023360    m   a   t   c   h   e   s   ,       d   o   n   '   t       d
0023400    i   s   p   l   a   y  \r  \t           d   s   ,       m   s
0023420        =       0   ,       m   a   t   s  \r  \t       i   f   n
0023440    o   t  \r  \t   [       d   s       =       C   r   e   a   t
0023460    e   D   i   s   p   l   a   y   S   t   r   e   a   m   (   d
0023500    i   s   p   l   i   n   e   s   ,       d   b   ,       b   s
0023520    i   z   e   -   m   b   u   f   s   i   z   e   ,       0   ,
0023540        0   ,       d   s   o   p   t   i   o   n   s   )  \r  \t
0023560            S   h   o   w   D   i   s   p   l   a   y   S   t   r
0023600    e   a   m   (   d   s   )  \r  \t           m   d   s       =
0023620        C   r   e   a   t   e   D   i   s   p   l   a   y   S   t
0023640    r   e   a   m   (   2   ,       d   b   +   b   s   i   z   e
0023660    -   m   b   u   f   s   i   z   e   ,       m   b   u   f   s
0023700    i   z   e   ,       0   ,       0   ,       m   d   s   o   p
0023720    t   i   o   n   s   )  \r 376 001  \0 030 216  \t           S
0023740    h   o   w   D   i   s   p   l   a   y   S   t   r   e   a   m
0023760    (   m   d   s   ,       D   S   b   e   l   o   w   ,       d
0024000    s   )  \r  \t           b   o   l   d   s   t   r   e   a   m
0024020    (   b   o   l   d   s   ,       d   s   )  \r  \t           s
0024040    p   l   i   t   s   t   r   e   a   m   (   m   s   ,       d
0024060    s   ,       m   a   t   s   )  \r  \t   ]  \r  \t   l   e   t
0024100        l   l   ,       n   l       =       n   i   l   ,       n
0024120    i   l  \r  \t   t   e   s   t       f   f   >   >   F   F   .
0024140    w   a   f  \r  \t       i   f   s   o       l   l   ,       n
0024160    l       =       -   1   ,       -   1  \r  \t       i   f   n
0024200    o   t       l   l   ,       n   l       =       m   a   x   l
0024220    l   ,       m   a   x   n   l  \r  \t   l   e   t       p   a
0024240    r   a       =       f   f   >   >   F   F   .   v   e   r   b
0024260    a   t   i   m   f       &       (   f   f   >   >   F   F   .
0024300    i   t   e   m   p   r   o   c       e   q       p   a   r   a
0024320    d   e   l   i   m   )  \r  \t   l   e   t     376 001  \0 005
0024340  367   e   o   p       =       (   p   a   r   a   ?       "   *
0024360    0   3   2   *   N   "   ,       "   *   N   "   )  \t   /   /
0024400        e   n   d       o   f       p   a   r   a   g   r   a   p
0024420    h       s   t   r   i   n   g  \r  \t   l   e   t       l   a
0024440    s   t   f   i   d       =       (   f   i   r   s   t   ?    
0024460    -   1   ,       m   a   t   c   h   p   o   s   >   >   M   P
0024500    .   f   i   d   -   1   )  \r  \t   l   e   t       f   s    
0024520    =       (   f   i   r   s   t   ?       m   s   ,       d   s
0024540    )  \r  \t   l   e   t       l   i   m       =       n   m   a
0024560    t   c   h   e   s   -   1  \r  \t   l   e   t       s   t    
0024600    =       0  \r  \t   l   e   t       i       =       0  \r  \t
0024620    w   h   i   l   e       i       l   e       l   i   m       d
0024640    o  \r  \t       [       l   e   t       m   p       =       m
0024660    a   t   c   h   p   o   s   +   l   M   P   *   i  \r  \t    
0024700            i   f       m   p   >   >   M   P   .   f   i   d    
0024720    n   e       l   a   s   t   f   i   d       t   h   e   n  \r
0024740   \t 376 001  \0 374 316                   [       i   f       s
0024760    t       n   e       0       t   h   e   n       C   l   o   s
0025000    e   s   (   s   t   )  \r  \t                           w   h
0025020    i   l   e       l   a   s   t   f   i   d       n   e       m
0025040    p   >   >   M   P   .   f   i   d       d   o  \r  \t        
0025060                        [       l   a   s   t   f   i   d       =
0025100        l   a   s   t   f   i   d   +   1  \r  \t                
0025120                        i   f       f   s       n   e       0    
0025140    t   h   e   n       P   u   t   T   e   m   p   l   a   t   e
0025160    (   f   s   ,       "   *   *   *   *   *   *       $   S   $
0025200    S   "   ,       f   n   a   m   e   s   !   l   a   s   t   f
0025220    i   d   ,       e   o   p   )  \r  \t                        
0025240        ]  \r  \t                           f   s       =       m
0025260    s  \r  \t                           s   t       =       C   r
0025300    e   a   t   e   D   i   s   k   S   t   r   e   a   m   (   l
0025320    v       (   f   d   v   s   +   l   a   s   t   f   i   d   *
0025340    l   D   V   )   >   > 376 001  \0 316 241   D   V   .   f   p
0025360    ,       k   s   T   y   p   e   R   e   a   d   O   n   l   y
0025400    ,       c   h   a   r   I   t   e   m   )  \r  \t            
0025420        ]  \r  \t               l   e   t       b   e   g   v   ,
0025440        m   b   e   g   v   ,       p   o   s   v   ,       m   e
0025460    n   d   v   ,       e   n   d   v       =       v   e   c    
0025500    1   ,       v   e   c       1   ,       v   e   c       1   ,
0025520        v   e   c       1   ,       v   e   c       1  \r  \t    
0025540            l   e   t       f   a       =       l   v       m   p
0025560    >   >   M   P   .   f   a  \r  \t               l   e   t    
0025600    p   n       =       f   a   >   >   F   A   .   p   a   g   e
0025620    N   u   m   b   e   r   -   1  \r  \t               p   o   s
0025640    v   !   0   ,       p   o   s   v   !   1       =       p   n
0025660        r   s   h   i   f   t       7   ,       p   n       l   s
0025700    h   i   f   t       9       +       f   a   >   >   F   A   .
0025720    c   h   a   r   P   o   s  \r  \t               o   c   c   l
0025740    i   m   (   s   t   ,       p   o   s   v 376 001  \0 001 241
0025760    ,       m   b   e   g   v   ,       m   e   n   d   v   ,    
0026000    m   p   >   >   M   P   .   p   p   o   s   ,       p   a   t
0026020    l   e   n   ,       c   h   t   a   b   )  \r  \t            
0026040    l   e   t       i   n   l       =       f   f   >   >   F   F
0026060    .   i   t   e   m   p   r   o   c   (   s   t   ,       m   b
0026100    e   g   v   ,       b   e   g   v   ,       e   n   d   v   ,
0026120        l   l   ,       n   l   )  \r  \t               u   n   l
0026140    e   s   s       f   f   >   >   F   F   .   v   e   r   b   a
0026160    t   i   m   f       d   o       n   o   n   b   r   a   v   o
0026200    (   s   t   ,       m   b   e   g   v   ,       b   e   g   v
0026220    ,       e   n   d   v   )  \r  \t               i   f       f
0026240    f   >   >   F   F   .   o   c   t   a   l   f       t   h   e
0026260    n       P   u   t   T   e   m   p   l   a   t   e   (   m   a
0026300    t   s   ,       "   $   6   E   O   $   S   "   ,       p   o
0026320    s   v   ,       (   p   a   r   a   ?       e   o   p   ,    
0026340    "       "   )   )  \r  \t               i   f       c   o   p
0026360  376 001  \0   V   u   y   s   e   g   (   s   t   ,       m   a
0026400    t   s   ,       b   e   g   v   ,       e   n   d   v   )    
0026420    n   e       $   *   N       t   h   e   n       W   s   s   (
0026440    m   a   t   s   ,       e   o   p   )  \r  \t               i
0026460    f       d   s       n   e       0       t   h   e   n  \r  \t
0026500                [       P   u   t   T   e   m   p   l   a   t   e
0026520    (   d   s   ,       "   $   6   E   O       "   ,       p   o
0026540    s   v   )  \r  \t                       c   o   p   y   s   e
0026560    g   (   s   t   ,       d   s   ,       b   e   g   v   ,    
0026600    m   b   e   g   v   )  \r  \t                       l   e   t
0026620        l   a   s   t   c   h       =       n   i   l  \r  \t    
0026640                    t   e   s   t       U   s   c   2   (   e   n
0026660    d   v   ,       m   e   n   d   v   )       g   r       0  \r
0026700   \t                       i   f   s   o  \t   /   /       n   o
0026720    r   m   a   l       c   a   s   e   ,       m   a   t   c   h
0026740        f   a   l   l   s       w   i   t   h   i   n       d   e
0026760    l   i   m   i   t 376 001  \0 376 352   e   d       a   r   e
0027000    a  \r  \t                       [       c   o   p   y   s   e
0027020    g   (   s   t   ,       b   o   l   d   s   ,       m   b   e
0027040    g   v   ,       m   e   n   d   v   )  \r  \t                
0027060                l   a   s   t   c   h       =       c   o   p   y
0027100    s   e   g   (   s   t   ,       d   s   ,       m   e   n   d
0027120    v   ,       e   n   d   v   )  \r  \t                       ]
0027140   \r  \t                       i   f   n   o   t  \t   /   /    
0027160    d   e   l   i   m   i   t   e   d       a   r   e   a       e
0027200    n   d   s       w   i   t   h   i   n       m   a   t   c   h
0027220   \r  \t                               l   a   s   t   c   h    
0027240    =       c   o   p   y   s   e   g   (   s   t   ,       b   o
0027260    l   d   s   ,       m   b   e   g   v   ,       e   n   d   v
0027300    )  \r  \t                       i   f       l   a   s   t   c
0027320    h       n   e       $   *   N       t   h   e   n       P   u
0027340    t   s   (   d   s   ,       $   *   N   )  \r  \t            
0027360            i   f       (   G   e   t   L 376 001  \0 334  \b   i
0027400    n   e   P   o   s   (   d   s   )       g   e       d   i   s
0027420    p   l   i   n   e   s   -   5   )       %       (   i       e
0027440    q       l   i   m   )       t   h   e   n  \r  \t            
0027460                [       t   e   s   t       (   i       e   q    
0027500    l   i   m   )       &       l   a   s   t  \r  \t            
0027520                            i   f   s   o  \r  \t                
0027540                        [       W   s   s   (   m   d   s   ,    
0027560    "   *   N   *   T   *   T   -   -   -   -   -       <   S   P
0027600    >       t   o       c   l   e   a   r       s   c   r   e   e
0027620    n       -   -   -   -   -   *   N   "   )  \r  \t            
0027640                                    G   e   t   s   (   k   e   y
0027660    s   )  \r  \t                                               i
0027700        =       i   +   1  \r  \t                                
0027720        ]  \r  \t                                       i   f   n
0027740    o   t  \r  \t                                       [       W
0027760    s   s   (   m   d   s   ,       "   *   N   *   T   *   T 376
0030000  001  \0 343 244   -   -   -   -   -       <   S   P   >       f
0030020    o   r       m   o   r   e   ,       <   D   E   L   >       t
0030040    o       a   b   o   r   t       -   -   -   -   -   *   N   "
0030060    )  \r  \t                                               i    
0030100    =       (   G   e   t   s   (   k   e   y   s   )       e   q
0030120        1   7   7   b   ?       -   i   -   2   ,       i   +   1
0030140    )  \r  \t                                       ]  \r  \t    
0030160                                b   r   e   a   k  \r  \t        
0030200                    ]  \r  \t               ]  \r  \t            
0030220    i       =       i   +   1  \r  \t       ]  \r  \t   i   f    
0030240    s   t       n   e       0       t   h   e   n       C   l   o
0030260    s   e   s   (   s   t   )  \r  \t   i   f       d   s       n
0030300    e       0       t   h   e   n  \r  \t   [       S   h   o   w
0030320    D   i   s   p   l   a   y   S   t   r   e   a   m   (   m   d
0030340    s   ,       D   S   d   e   l   e   t   e   )  \r  \t        
0030360    S   h   o   w   D   i   s   p   l   a   y   S   t   r   e   a
0030400    m   (   d   s 376  \0   = 217   Z   ,       D   S   d   e   l
0030420    e   t   e   )  \r  \t   ]  \r  \t   r   e   s   u   l   t   i
0030440    s       (   (   i       e   q       n   m   a   t   c   h   e
0030460    s   )       &       l   a   s   t   ?       -   i   -   1   ,
0030500        i   )  \r   ]  \r 377  \0  \0   f   i   n   d   s   u   b
0030520    .   b   c   p   l  \0 373 226 005 003   p  \0  \0 376 001  \0
0030540  217 351   /   /  \r   /   /       S   u   b   r   o   u   t   i
0030560    n   e   s       f   o   r       F   i   n   d       s   u   b
0030600    s   y   s   t   e   m  \r   /   /       l   a   s   t       e
0030620    d   i   t   e   d       O   c   t   o   b   e   r       3   ,
0030640        1   9   8   0           2   :   4   7       P   M  \r   /
0030660    /  \r   /   /       C   o   p   y   r   i   g   h   t       X
0030700    e   r   o   x       C   o   r   p   o   r   a   t   i   o   n
0030720        1   9   7   9  \r  \r  \t   g   e   t       "   f   i   n
0030740    d   p   k   g   d   e   f   s   .   d   "  \r  \t   g   e   t
0030760        "   s   t   r   e   a   m   s   .   d   "  \r  \r   e   x
0031000    t   e   r   n   a   l  \t   /   /       e   n   t   r   i   e
0031020    s  \r   [  \t   U   s   c   2  \t   /   /       (   v   1   ,
0031040        v   2   )       -   >       -   1   ,       0   ,       1
0031060   \r  \t   o   c   c   l   i   m  \t   /   /       (   s   t   ,
0031100        p   o   s   v   ,       b   e   g   v   ,       e   n   d
0031120    v   ,       p   p   o   s   ,       p   l   e   n   ,       c
0031140    h   t 376 001  \0 034   "   a   b   )  \r  \t   l   i   n   e
0031160    d   e   l   i   m  \t   /   /       (   s   t   ,       p   o
0031200    s   v   ,       b   e   g   v   ,       e   n   d   v   ,    
0031220    m   a   x   l   l   ,       m   a   x   n   l   )       -   >
0031240        n   l  \r  \t   p   a   r   a   d   e   l   i   m  \t   /
0031260    /       (   s   t   ,       p   o   s   v   ,       b   e   g
0031300    v   ,       e   n   d   v   ,       m   a   x   l   l   ,    
0031320    m   a   x   n   l   )       -   >       n   l  \r  \t   b   r
0031340    e   a   k   d   e   l   i   m  \t   /   /       (   s   t   ,
0031360        p   o   s   v   ,       b   e   g   v   ,       e   n   d
0031400    v   ,       m   a   x   l   l   ,       m   a   x   n   l   )
0031420        -   >       n   l  \r  \t   n   o   n   b   r   a   v   o
0031440   \t   /   /       (   s   t   ,       p   o   s   v   ,       b
0031460    e   g   v   ,       e   n   d   v   )  \r  \t   c   o   p   y
0031500    s   e   g  \t   /   /       (   s   t   ,       o   u   t   s
0031520    ,       b   e   g   v   ,       e   n   d   v   )       -   >
0031540        l   a   s   t   c   h 376 001  \0 333  \a   a   r  \r  \t
0031560    s   p   l   i   t   s   t   r   e   a   m  \t   /   /       (
0031600    s   ,       s   1   ,       s   2   )  \r  \t   b   o   l   d
0031620    s   t   r   e   a   m  \t   /   /       (   s   ,       s   1
0031640    )  \r  \t   r   e   a   d   s   t   r   i   n   g  \t   /   /
0031660        (   m   s   g   ,       d   s   ,       s   ,       c   c
0031700    p   r   o   c   (   d   s   ,       c   h   )       -   >    
0031720    t   r   u   e   /   f   a   l   s   e   )  \r  \t   R   e   a
0031740    d   C   h   a   r  \t   /   /       (   d   s   ,       w   i
0031760    d   t   h   ,       w   a   i   t   )  \r   ]  \r  \r  \r   e
0032000    x   t   e   r   n   a   l  \r   [  \t  \t   /   /       O   S
0032020   \r  \t   C   h   a   r   W   i   d   t   h  \r  \t   D   o   u
0032040    b   l   e   A   d   d  \r  \t   E   n   d   o   f   s   ;    
0032060    E   r   a   s   e   B   i   t   s  \r  \t   F   i   l   e   P
0032100    o   s  \r  \t   G   e   t   B   i   t   P   o   s   ;       G
0032120    e   t   L   i   n   e   P   o   s   ;       G   e   t   L   m
0032140    a   r   g   ;       G   e   t   s  \r  \t   k 376 001  \0 217
0032160  222   e   y   s  \r  \t   M   o   v   e   B   l   o   c   k  \r
0032200   \t   P   u   t   s  \r  \t   S   e   t   B   i   t   P   o   s
0032220    ;       S   e   t   F   i   l   e   P   o   s   ;       S   e
0032240    t   L   i   n   e   P   o   s  \r  \t   T   i   m   e   r  \r
0032260   \t   U   s   c  \r  \t   W   s   s  \r   ]  \r  \r  \r   m   a
0032300    n   i   f   e   s   t  \r   [  \t   c   h   a   r   B   r   a
0032320    v   o       =       3   2   b  \t   /   /       ^   Z   ,    
0032340    s   i   g   n   a   l   s       B   r   a   v   o       f   o
0032360    r   m   a   t       t   r   a   i   l   e   r  \r   ]  \r  \r
0032400    s   t   r   u   c   t   u   r   e       B   S   :  \r   [  \t
0032420    l   e   n   g   t   h       b   y   t   e  \r  \t   c   h   a
0032440    r   ^   1   ,   2   5   5       b   y   t   e  \r   ]  \r  \r
0032460   \r   /   /  \r   /   /       M   i   s   c   e   l   l   a   n
0032500    e   o   u   s  \r   /   /  \r  \r   l   e   t       U   s   c
0032520    2   (   v   1   ,       v   2   )       =       (   v   1   !
0032540    0       e   q       v   2   !   0   ?       U   s   c   (   v
0032560    1 376 001  \0 037 005   !   1   ,       v   2   !   1   )   ,
0032600        U   s   c   (   v   1   !   0   ,       v   2   !   0   )
0032620    )  \r  \r  \r   /   /  \r   /   /       D   e   l   i   m   i
0032640    t   a   t   i   o   n       a   n   d       o   u   t   p   u
0032660    t  \r   /   /  \r  \r   a   n   d       o   c   c   l   i   m
0032700    (   s   t   ,       p   o   s   v   ,       b   e   g   v   ,
0032720        e   n   d   v   ,       p   p   o   s   ,       p   l   e
0032740    n   ,       c   h   t   a   b   )       b   e  \r   [  \t   b
0032760    e   g   v   !   0   ,       b   e   g   v   !   1       =    
0033000    p   o   s   v   !   0   ,       p   o   s   v   !   1  \r  \t
0033020    w   h   i   l   e       p   p   o   s       g   r       0    
0033040    d   o  \r  \t       [       D   o   u   b   l   e   A   d   d
0033060    (   b   e   g   v   ,       t   a   b   l   e   [       -   1
0033100    ;       -   1   ]   )  \r  \t               S   e   t   F   i
0033120    l   e   P   o   s   (   s   t   ,       b   e   g   v   )  \r
0033140   \t               i   f       c   h   t   a   b   !   (   G   e
0033160    t   s   (   s   t   ) 376 001  \0 307 300   )       n   e    
0033200    c   l   a   s   s   S   k   i   p       t   h   e   n       p
0033220    p   o   s       =       p   p   o   s   -   1  \r  \t       ]
0033240   \r  \t   S   e   t   F   i   l   e   P   o   s   (   s   t   ,
0033260        b   e   g   v   )  \r  \t   w   h   i   l   e       (   p
0033300    l   e   n       g   r       0   )       &       (   E   n   d
0033320    o   f   s   (   s   t   )       e   q       f   a   l   s   e
0033340    )       d   o  \r  \t           i   f       c   h   t   a   b
0033360    !   (   G   e   t   s   (   s   t   )   )       n   e       c
0033400    l   a   s   s   S   k   i   p       t   h   e   n       p   l
0033420    e   n       =       p   l   e   n   -   1  \r  \t   F   i   l
0033440    e   P   o   s   (   s   t   ,       e   n   d   v   )  \r   ]
0033460   \r  \r   a   n   d       f   i   n   d   b   e   g   (   s   t
0033500    ,       p   o   s   v   ,       b   e   g   v   ,       m   a
0033520    x   ,       c   h   )       =       v   a   l   o   f  \r   [
0033540   \t   b   e   g   v   !   0   ,       b   e   g   v   !   1    
0033560    =       p   o   s   v   !   0   ,       p 376 001  \0 321   w
0033600    o   s   v   !   1  \r  \t   l   e   t       i       =       0
0033620   \r  \t   u   n   t   i   l       (   (   i       g   e       m
0033640    a   x   )       &       (   m   a   x       n   e       -   1
0033660    )   )       %       (   (   b   e   g   v   !   0       e   q
0033700        0   )       &       (   b   e   g   v   !   1       e   q
0033720        0   )   )       d   o  \r  \t       [       D   o   u   b
0033740    l   e   A   d   d   (   b   e   g   v   ,       t   a   b   l
0033760    e   [       -   1   ;       -   1       ]   )  \r  \t        
0034000        S   e   t   F   i   l   e   P   o   s   (   s   t   ,    
0034020    b   e   g   v   )  \r  \t               i   f       G   e   t
0034040    s   (   s   t   )       e   q       c   h       t   h   e   n
0034060   \r  \t               [       D   o   u   b   l   e   A   d   d
0034100    (   b   e   g   v   ,       t   a   b   l   e   [       0   ;
0034120        1       ]   )   ;       r   e   s   u   l   t   i   s    
0034140    t   r   u   e       ]  \r  \t               i       =       i
0034160    +   1  \r  \t       ]  \r  \t   r   e   s   u   l   t   i   s
0034200  376 001  \0 035  \0       f   a   l   s   e  \r   ]  \r  \r   a
0034220    n   d       f   i   n   d   e   n   d   (   s   t   ,       p
0034240    o   s   v   ,       e   n   d   v   ,       m   a   x   ,    
0034260    c   h   )       =       v   a   l   o   f  \r   [  \t   l   e
0034300    t       f   o   u   n   d       =       f   a   l   s   e  \r
0034320   \t   S   e   t   F   i   l   e   P   o   s   (   s   t   ,    
0034340    p   o   s   v   )  \r  \t   l   e   t       i       =       1
0034360   \r  \t   w   h   i   l   e       (   i       l   e       m   a
0034400    x   )       %       (   m   a   x       e   q       -   1   )
0034420        d   o  \r  \t       [       i   f       E   n   d   o   f
0034440    s   (   s   t   )       b   r   e   a   k  \r  \t            
0034460    f   o   u   n   d       =       G   e   t   s   (   s   t   )
0034500        e   q       c   h  \r  \t               i   f       f   o
0034520    u   n   d       b   r   e   a   k  \r  \t               i    
0034540    =       i   +   1  \r  \t       ]  \r  \t   F   i   l   e   P
0034560    o   s   (   s   t   ,       e   n   d   v   )  \r  \t   r   e
0034600    s   u   l   t   i 376 001  \0   _   z   s       f   o   u   n
0034620    d  \r   ]  \r  \r   a   n   d       l   i   n   e   d   e   l
0034640    i   m   (   s   t   ,       p   o   s   v   ,       b   e   g
0034660    v   ,       e   n   d   v   ,       m   a   x   l   l   ,    
0034700    m   a   x   n   l   )       =       v   a   l   o   f  \r   /
0034720    /       D   e   l   i   m   i   t       a       l   i   n   e
0034740   \r   [  \t   f   i   n   d   b   e   g   (   s   t   ,       p
0034760    o   s   v   ,       b   e   g   v   ,       m   a   x   l   l
0035000    ,       $   *   N   )  \r  \t   f   i   n   d   e   n   d   (
0035020    s   t   ,       p   o   s   v   ,       e   n   d   v   ,    
0035040    m   a   x   l   l   ,       $   *   N   )  \r  \t   r   e   s
0035060    u   l   t   i   s       1  \r   ]  \r  \r   a   n   d       p
0035100    a   r   a   d   e   l   i   m   (   s   t   ,       p   o   s
0035120    v   ,       b   e   g   v   ,       e   n   d   v   ,       m
0035140    a   x   l   l   ,       m   a   x   n   l   )       =       v
0035160    a   l   o   f  \r   /   /       D   e   l   i   m   i   t    
0035200    a       B   r   a   v   o       p   a 376 001  \0 334 333   r
0035220    a   g   r   a   p   h  \r   [  \t   l   e   t       m   a   x
0035240    p   l       =       (   m   a   x   n   l       e   q       -
0035260    1   ?       -   1   ,       m   a   x   l   l   *   m   a   x
0035300    n   l   )  \r  \t   f   i   n   d   b   e   g   (   s   t   ,
0035320        p   o   s   v   ,       b   e   g   v   ,       m   a   x
0035340    p   l   ,       c   h   a   r   B   r   a   v   o   )  \r  \t
0035360    f   i   n   d   e   n   d   (   s   t   ,       b   e   g   v
0035400    ,       e   n   d   v   ,       m   a   x   p   l   ,       $
0035420    *   N   )  \r  \t   i   f       U   s   c   2   (   p   o   s
0035440    v   ,       e   n   d   v   )       g   e       0       t   h
0035460    e   n  \t   /   /       n   o   t       a       m   a   t   c
0035500    h       i   n   s   i   d   e       a       t   r   a   i   l
0035520    e   r  \r  \t   [       M   o   v   e   B   l   o   c   k   (
0035540    b   e   g   v   ,       e   n   d   v   ,       2   )  \r  \t
0035560            i   f       f   i   n   d   e   n   d   (   s   t   ,
0035600        p   o   s   v   ,       e   n   d   v   ,       m   a 376
0035620  001  \0 321 240   x   p   l   ,       c   h   a   r   B   r   a
0035640    v   o   )       t   h   e   n  \r  \t                   f   i
0035660    n   d   e   n   d   (   s   t   ,       e   n   d   v   ,    
0035700    e   n   d   v   ,       -   1   ,       $   *   N   )  \r  \t
0035720    ]  \r  \t   r   e   s   u   l   t   i   s       (   e   n   d
0035740    v   !   1   -   b   e   g   v   !   1   )   /   7   0   +   1
0035760   \r   ]  \r  \r   a   n   d       b   r   e   a   k   d   e   l
0036000    i   m   (   s   t   ,       p   o   s   v   ,       b   e   g
0036020    v   ,       e   n   d   v   ,       m   a   x   l   l   ,    
0036040    m   a   x   n   l   )       =       v   a   l   o   f  \r   /
0036060    /       D   e   l   i   m   i   t       a   n       i   t   e
0036100    m       s   e   t       o   f   f       b   y       b   l   a
0036120    n   k       l   i   n   e   s  \r   [  \t   l   e   t       n
0036140    l       =       1  \r  \t   f   i   n   d   b   e   g   (   s
0036160    t   ,       p   o   s   v   ,       b   e   g   v   ,       m
0036200    a   x   l   l   ,       $   *   N   )  \r  \t   [       l   e
0036220    t       p   r 376 001  \0   6   j   e   v       =       b   e
0036240    g   v   !   1  \r  \t           D   o   u   b   l   e   A   d
0036260    d   (   b   e   g   v   ,       t   a   b   l   e   [       -
0036300    1   ;       -   1   ]   )  \r  \t           u   n   l   e   s
0036320    s       f   i   n   d   b   e   g   (   s   t   ,       b   e
0036340    g   v   ,       b   e   g   v   ,       m   a   x   l   l   ,
0036360        $   *   N   )       b   r   e   a   k  \r  \t           i
0036400    f       b   e   g   v   !   1       e   q       p   r   e   v
0036420    -   1       t   h   e   n       [       b   e   g   v   !   1
0036440        =       p   r   e   v   ;       b   r   e   a   k   ]  \r
0036460   \t           n   l       =       n   l   +   1  \r  \t   ]    
0036500    r   e   p   e   a   t   w   h   i   l   e       n   l       l
0036520    s       m   a   x   n   l  \r  \t   f   i   n   d   e   n   d
0036540    (   s   t   ,       p   o   s   v   ,       e   n   d   v   ,
0036560        m   a   x   l   l   ,       $   *   N   )  \r  \t   [    
0036600    l   e   t       p   r   e   v       =       e   n   d   v   !
0036620    1  \r  \t           u   n   l   e 376 001  \0 255   ]   s   s
0036640        f   i   n   d   e   n   d   (   s   t   ,       e   n   d
0036660    v   ,       e   n   d   v   ,       m   a   x   l   l   ,    
0036700    $   *   N   )       b   r   e   a   k  \r  \t           i   f
0036720        e   n   d   v   !   1       e   q       p   r   e   v   +
0036740    1       t   h   e   n       [       e   n   d   v   !   1    
0036760    =       p   r   e   v   ;       b   r   e   a   k   ]  \r  \t
0037000            n   l       =       n   l   +   1  \r  \t   ]       r
0037020    e   p   e   a   t   w   h   i   l   e       n   l       l   s
0037040        m   a   x   n   l  \r  \t   r   e   s   u   l   t   i   s
0037060        n   l  \r   ]  \r  \r   a   n   d       n   o   n   b   r
0037100    a   v   o   (   s   t   ,       p   o   s   v   ,       b   e
0037120    g   v   ,       e   n   d   v   )       b   e  \r   [  \t   f
0037140    i   n   d   b   e   g   (   s   t   ,       p   o   s   v   ,
0037160        b   e   g   v   ,       p   o   s   v   !   1   -   b   e
0037200    g   v   !   1   ,       c   h   a   r   B   r   a   v   o   )
0037220   \r  \t   i   f       f   i   n   d   e   n   d   (   s 376 001
0037240   \0   A 021   t   ,       p   o   s   v   ,       e   n   d   v
0037260    ,       e   n   d   v   !   1   -   p   o   s   v   !   1   ,
0037300        c   h   a   r   B   r   a   v   o   )       t   h   e   n
0037320   \r  \t           D   o   u   b   l   e   A   d   d   (   e   n
0037340    d   v   ,       t   a   b   l   e   [       -   1   ;       -
0037360    1   ]   )  \r   ]  \r  \r   a   n   d       c   o   p   y   s
0037400    e   g   (   s   t   ,       o   u   t   s   ,       b   e   g
0037420    v   ,       e   n   d   v   )       =       v   a   l   o   f
0037440   \r   [  \t   S   e   t   F   i   l   e   P   o   s   (   s   t
0037460    ,       b   e   g   v   )  \r  \t   l   e   t       c   h    
0037500    =       -   1  \r  \t   f   o   r       i       =       1    
0037520    t   o       (   e   n   d   v   !   1   -   b   e   g   v   !
0037540    1   )       d   o  \r  \t   [       c   h       =       G   e
0037560    t   s   (   s   t   )  \r  \t           P   u   t   s   (   o
0037600    u   t   s   ,       c   h   )  \r  \t   ]  \r  \t   r   e   s
0037620    u   l   t   i   s       c   h  \r   ]  \r  \r   a   n   d    
0037640    s   p   l 376 001  \0 307 262   i   t   s   t   r   e   a   m
0037660    (   s   ,       s   1   ,       s   2   )       b   e  \r   [
0037700   \t   l   e   t       b   o   t   h   P   u   t   s   (   s   t
0037720    ,       c   h   )       b   e  \r  \t       [       P   u   t
0037740    s   (   s   t   >   >   S   T   .   p   a   r   1   ,       c
0037760    h   )  \r  \t               P   u   t   s   (   s   t   >   >
0040000    S   T   .   p   a   r   2   ,       c   h   )  \r  \t       ]
0040020   \r  \t   s   >   >   S   T   .   p   a   r   1       =       s
0040040    1  \r  \t   s   >   >   S   T   .   p   a   r   2       =    
0040060    s   2  \r  \t   s   >   >   S   T   .   p   u   t   s       =
0040100        b   o   t   h   P   u   t   s  \r   ]  \r  \r   a   n   d
0040120        b   o   l   d   s   t   r   e   a   m   (   s   ,       s
0040140    1   )       b   e  \r   [  \t   l   e   t       s   a   m   e
0040160    P   u   t   s   (   s   t   ,       c   h   )       b   e    
0040200    P   u   t   s   (   s   t   >   >   S   T   .   p   a   r   1
0040220    ,       c   h   )  \r  \t   s   >   >   S   T   .   p   a   r
0040240    1       =       s   1  \r  \t 376 001  \0 306   R   s   >   >
0040260    S   T   .   p   u   t   s       =       (   s   1   >   >   S
0040300    T   .   t   y   p   e       e   q       s   t   T   y   p   e
0040320    D   i   s   p   l   a   y   ?       b   o   l   d   P   u   t
0040340    s   ,       s   a   m   e   P   u   t   s   )  \r   ]  \r  \r
0040360    a   n   d       b   o   l   d   P   u   t   s   (   s   t   ,
0040400        c   h   )       b   e  \r   [  \t   l   e   t       d   s
0040420        =       s   t   >   >   S   T   .   p   a   r   1  \r  \t
0040440    l   e   t       o   l   d   b   ,       o   l   d   l       =
0040460        G   e   t   B   i   t   P   o   s   (   d   s   )   ,    
0040500    G   e   t   L   i   n   e   P   o   s   (   d   s   )  \r  \t
0040520    P   u   t   s   (   d   s   ,       c   h   )  \r  \t   i   f
0040540        G   e   t   L   i   n   e   P   o   s   (   d   s   )    
0040560    e   q       o   l   d   l       t   h   e   n  \t   /   /    
0040600    f   i   r   s   t       c   o   p   y       f   i   t  \r  \t
0040620    [       l   e   t       n   e   w   b       =       G   e   t
0040640    B   i   t   P   o   s   (   d   s   )  \r  \t     376 001  \0
0040660    H   R       i   f       n   e   w   b       e   q       o   l
0040700    d   b       r   e   t   u   r   n  \t   /   /       z   e   r
0040720    o       w   i   d   t   h  \r  \t           S   e   t   B   i
0040740    t   P   o   s   (   d   s   ,       o   l   d   b   +   1   )
0040760   \r  \t           P   u   t   s   (   d   s   ,       c   h   )
0041000   \r  \t           i   f       G   e   t   L   i   n   e   P   o
0041020    s   (   d   s   )       e   q       o   l   d   l       r   e
0041040    t   u   r   n  \t   /   /       s   e   c   o   n   d       c
0041060    o   p   y       f   i   t  \r  \t           /   /       E   r
0041100    a   s   e       f   i   r   s   t       c   o   p   y   ,    
0041120    t   r   e   a   t       s   e   c   o   n   d       c   o   p
0041140    y       a   s       f   i   r   s   t  \r  \t           S   e
0041160    t   L   i   n   e   P   o   s   (   d   s   ,       o   l   d
0041200    l   )  \r  \t           S   e   t   B   i   t   P   o   s   (
0041220    d   s   ,       o   l   d   l   )  \r  \t           E   r   a
0041240    s   e   B   i   t   s   (   d   s   ,       n   e   w   b   -
0041260    o   l 376 001  \0 343 213   d   b   )  \r  \t           P   u
0041300    t   s   (   d   s   ,       $   *   N   )  \r  \t           P
0041320    u   t   s   (   d   s   ,       c   h   )  \r  \t   ]  \r  \t
0041340    l   e   t       l   m   a   r   g       =       G   e   t   L
0041360    m   a   r   g   (   d   s   )  \t   /   /       f   i   r   s
0041400    t       c   o   p   y       o   v   e   r   f   l   o   w   e
0041420    d  \r  \t   i   f       G   e   t   B   i   t   P   o   s   (
0041440    d   s   )       n   e       l   m   a   r   g       t   h   e
0041460    n  \t   /   /       n   o   n   -   z   e   r   o       w   i
0041500    d   t   h  \r  \t   [       S   e   t   B   i   t   P   o   s
0041520    (   d   s   ,       l   m   a   r   g   +   1   )  \r  \t    
0041540        P   u   t   s   (   d   s   ,       c   h   )  \r  \t   ]
0041560   \r   ]  \r  \r  \r   /   /  \r   /   /       S   t   r   i   n
0041600    g       i   n   p   u   t  \r   /   /  \r  \r   a   n   d    
0041620    r   e   a   d   s   t   r   i   n   g   (   m   s   g   ,    
0041640    d   s   ,       s   ,       c   c   p   r   o   c   )       =
0041660        v   a   l   o   f  \r 376 001  \0 215 320   [  \t   l   e
0041700    t       l   e   n       =       0  \r  \t   P   u   t   s   (
0041720    d   s   ,       $   *   N   )  \r  \t   l   e   t       z   p
0041740    o   s       =       G   e   t   B   i   t   P   o   s   (   d
0041760    s   )  \r  \t   W   s   s   (   d   s   ,       m   s   g   )
0042000   \r               [  \t   s   >   >   B   S   .   l   e   n   g
0042020    t   h       =       l   e   n  \r  \t   l   e   t       c   h
0042040        =       R   e   a   d   C   h   a   r   (   d   s   ,    
0042060    5   ,       4   0   0   )  \r  \t   l   e   t       b   a   c
0042100    k       =       n   i   l  \r  \t   i   f       (   c   h    
0042120    l   s       4   0   b   )       &       c   c   p   r   o   c
0042140    (   d   s   ,       c   h   )       t   h   e   n  \r  \t   [
0042160        i   f       G   e   t   B   i   t   P   o   s   (   d   s
0042200    )       n   e       z   p   o   s       t   h   e   n       P
0042220    u   t   s   (   d   s   ,       $   *   N   )  \r  \t        
0042240    W   s   s   (   d   s   ,       m   s   g   )  \r  \t        
0042260    W   s   s   (   d   s   ,       s   )  \r  \t 376 001  \0 030
0042300  231           l   o   o   p  \r  \t   ]  \r  \t   s   w   i   t
0042320    c   h   o   n       c   h       i   n   t   o  \r  \t   [    
0042340    c   a   s   e       $   *   N   :       c   a   s   e       3
0042360    3   b   :  \t   /   /       <   e   s   c   >  \r  \t        
0042400        r   e   s   u   l   t   i   s       c   h  \r  \t        
0042420    c   a   s   e       1   b   :       c   a   s   e       1   0
0042440    b   :  \t   /   /       ^   A   ,       <   b   s   >  \r  \t
0042460                i   f       l   e   n       e   q       0       l
0042500    o   o   p  \r  \t               b   a   c   k       =       l
0042520    e   n   -   1  \r  \t               e   n   d   c   a   s   e
0042540   \r  \t           d   e   f   a   u   l   t   :  \r  \t        
0042560        i   f       c   h       l   s       4   0   b       l   o
0042600    o   p  \t   /   /       c   o   n   t   r   o   l       c   h
0042620    a   r   .  \r  \t               l   e   n       =       l   e
0042640    n   +   1  \r  \t               s   >   >   B   S   .   c   h
0042660    a   r   ^   l   e   n       =       c   h  \r  \t            
0042700    P 376 001  \0  \r 215   u   t   s   (   d   s   ,       c   h
0042720    )  \r  \t               l   o   o   p  \r  \t           c   a
0042740    s   e       1   7   7   b   :  \t   /   /       <   d   e   l
0042760    >  \r  \t               b   a   c   k       =       0  \r  \t
0043000                e   n   d   c   a   s   e  \r  \t           c   a
0043020    s   e       2   7   b   :  \t   /   /       ^   W  \r  \t    
0043040            b   a   c   k       =       l   e   n  \r  \t        
0043060        w   h   i   l   e       (   b   a   c   k       g   r    
0043100    0   )       &       (   s   >   >   B   S   .   c   h   a   r
0043120    ^   b   a   c   k       e   q       $   *   S   )       d   o
0043140        b   a   c   k       =       b   a   c   k   -   1  \r  \t
0043160                w   h   i   l   e       (   b   a   c   k       g
0043200    r       0   )       &       (   s   >   >   B   S   .   c   h
0043220    a   r   ^   b   a   c   k       n   e       $   *   S   )    
0043240    d   o       b   a   c   k       =       b   a   c   k   -   1
0043260   \r  \t               e   n   d   c   a   s   e  \r  \t   ]  \r
0043300   \t   w   h   i   l   e 376 001  \0   $ 210       l   e   n    
0043320    n   e       b   a   c   k       d   o  \r  \t       [       E
0043340    r   a   s   e   B   i   t   s   (   d   s   ,       -   C   h
0043360    a   r   W   i   d   t   h   (   d   s   ,       s   >   >   B
0043400    S   .   c   h   a   r   ^   l   e   n   )   )  \r  \t        
0043420        l   e   n       =       l   e   n   -   1  \r  \t       ]
0043440   \r               ]       r   e   p   e   a   t  \r   ]  \r  \r
0043460    a   n   d       R   e   a   d   C   h   a   r   (   d   s   ,
0043500        w   i   d   t   h   ,       w   a   i   t   )       =    
0043520    v   a   l   o   f  \r   [  \t   l   e   t       t   0       =
0043540        v   e   c       1  \r  \t   T   i   m   e   r   (   t   0
0043560    )  \r  \t   E   r   a   s   e   B   i   t   s   (   d   s   ,
0043600        w   i   d   t   h   ,       1   )  \r  \t   l   e   t    
0043620    o   n       =       w   i   d   t   h  \r  \t   w   h   i   l
0043640    e       E   n   d   o   f   s   (   k   e   y   s   )       d
0043660    o  \r  \t       [       l   e   t       t       =       v   e
0043700    c       1  \r  \t               T   i   m 376  \0 263 307 353
0043720    e   r   (   t   )  \r  \t               i   f       U   s   c
0043740    (   t   !   1   -   t   0   !   1   ,       w   a   i   t   )
0043760        g   e       0       t   h   e   n  \r  \t                
0044000    [       o   n       =       -   o   n  \r  \t                
0044020            E   r   a   s   e   B   i   t   s   (   d   s   ,    
0044040    o   n   ,       -   1   )  \r  \t                           t
0044060    0   !   1       =       t   !   1  \r  \t                   ]
0044100   \r  \t       ]  \r  \t   i   f       o   n       g   r       0
0044120        t   h   e   n       E   r   a   s   e   B   i   t   s   (
0044140    d   s   ,       -   w   i   d   t   h   )  \r  \t   r   e   s
0044160    u   l   t   i   s       G   e   t   s   (   k   e   y   s   )
0044200   \r   ]  \r 377  \0  \0   c   o   m   p   i   l   e   f   i   n
0044220    d   .   c   m  \0 373 224   O   Y   i  \0  \0 376  \0   N 275
0044240    M   /   /       l   a   s   t       e   d   i   t   e   d    
0044260    J   a   n   u   a   r   y       1   0   ,       1   9   7   8
0044300            4   :   3   4       P   M  \r   B   c   p   l   /   F
0044320        f   i   n   d   .   b   c   p   l  \r   B   c   p   l   /
0044340    F       f   i   n   d   s   u   b   .   b   c   p   l  \r 377
0044360   \0  \0   l   o   a   d   f   i   n   d   .   c   m  \0 373 226
0044400    ' 210 256  \0  \0 376  \0 245 277 213   /   /       L   o   a
0044420    d       t   h   e       F   i   n   d       s   u   b   s   y
0044440    s   t   e   m  \r   /   /       l   a   s   t       e   d   i
0044460    t   e   d       O   c   t   o   b   e   r       2   9   ,    
0044500    1   9   8   0           6   :   2   1       P   M  \r   B   l
0044520    d   r   /   F       f   i   n   d       f   i   n   d   s   u
0044540    b       f   i   n   d   n   e   x   t       f   i   n   d   n
0044560    e   x   t   a   s   m       f   i   n   d   c   o   m   p   i
0044600    l   e       f   i   n   d   c   o   m   p   m   u       r   w
0044620    r   e   g       t   e   m   p   l   a   t   e           B   /
0044640    Q           g   p       m   d   i           A   /   Q  \r 377
0044660   \0  \0   s   e   n   d   f   i   n   d   .   c   m  \0 373 224
0044700    O   Y   i  \0  \0 376  \0 311   ` 203   /   /       l   a   s
0044720    t       e   d   i   t   e   d       J   a   n   u   a   r   y
0044740        1   0   ,       1   9   7   8           4   :   3   5    
0044760    P   M  \r   F   t   p   /   -   S       M   a   x   c       ^
0045000   \r   C   o   n   n   e   c   t   /   C       A   l   t   o   s
0045020    o   u   r   c   e       ^  \r   D   u   m   p   /   C       f
0045040    i   n   d   .   D   M       f   i   n   d   .   b   c   p   l
0045060        f   i   n   d   s   u   b   .   b   c   p   l       c   o
0045100    m   p   i   l   e   f   i   n   d   .   c   m       l   o   a
0045120    d   f   i   n   d   .   c   m       s   e   n   d   f   i   n
0045140    d   .   c   m       ^  \r   C   o   n   n   e   c   t   /   C
0045160        A   l   t   o       ^  \r   S   t   o   r   e   /   C    
0045200    f   i   n   d   .   R   u   n       f   i   n   d   .   S   y
0045220    m   s  \r 374                                                
0045224