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