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