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