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