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