$ od -c -N 50000 [Indigo]<AltoSource>RSILSOURCES.DM!2>RSil.bcpl
0000000    /   /   S   i   l   .   b   c   p   l           l   a   s   t
0000020        m   o   d   i   f   i   e   d       F   e   b   r   u   a
0000040    r   y       2   7   ,       1   9   7   9       b   y       R
0000060        B   a   t   e   s  \r   /   /   n   e   w   S   i   l   .
0000100    b   c   p   l           l   a   s   t       m   o   d   i   f
0000120    i   e   d       M   a   r   c   h       3   1   ,       1   9
0000140    8   1               b   y           P       L   a   m  \r   /
0000160    /       b   c   p   l   /   f       R   S   i   l   .   b   c
0000200    p   l  \r  \r   g   e   t       "   s   y   s   d   e   f   s
0000220    .   d   "  \r   g   e   t       "   s   i   l   .   d   e   f
0000240    s   "  \r  \r  \r   s   t   a   t   i   c           /   /   A
0000260    l   l       d   e   c   l   a   i   r   e   d       c   o   m
0000300    m   o   n       a   n   d       e   x   t   e   r   n   a   l
0000320        i   n       n   s   i   l   .   d   e   f   s  \r   [  \r
0000340    O   r   i   g   i   n   O   b   j   e   c   t   ;       M   a
0000360    r   k   O   b   j   e   c   t   ;       S   t   a   t   u   s
0000400    O   b   j   e   c   t   ;       F   N   a   m   e   O   b   j
0000420    e   c   t  \r   M   e   s   s   a   g   e   ;       H   e   r
0000440    r   a   l   d  \r   B   l   i   n   k       =       1   0   ;
0000460        F   l   a   s   h   S   e   n   s   e       =   0   ;    
0000500    U   p   d   a   t   e   S   t   a   t   u   s   =   0   ;    
0000520    T   i   c   k   F   l   a   g   =   f   a   l   s   e  \r   L
0000540    i   n   e   W   i   d   t   h       =       1   ;       M   a
0000560    g   =   1   ;       G   r   i   d   M   a   s   k       =    
0000600    #   1   7   7   7   7   4   ;       H   a   r   d   C   o   p
0000620    y   =   t   r   u   e  \r   F   i   r   s   t   I   t   e   m
0000640    ;       N   e   w   I   t   e   m   ;       N   S   e   l   e
0000660    c   t   e   d   I   t   e   m   s       =       0  \r   C   h
0000700    a   n   g   e   d       =       f   a   l   s   e   ;       V
0000720    i   r   g   i   n   S   i   n   c   e   B   u   i   l   d    
0000740    =       f   a   l   s   e  \r   M   a   k   e   G   r   a   y
0000760    O   K       =       t   r   u   e       /   /   f   l   a   g
0001000       \r   P   l   a   c   e   S   e   l   e   c   t   e   d    
0001020    =       f   a   l   s   e  \r   M   a   x   S   t   r   i   n
0001040    g   H   e   i   g   h   t  \r   S   a   v   e   d   A   C   0
0001060   \t   /   /       u   s   e   d       i   n       R   o   t   a
0001100    t   i   o   n   C   v   r   t   .   a   s   m  \r   S   a   v
0001120    e   d   A   C   1  \r   S   a   v   e   d   A   C   2  \r   R
0001140    o   t   a   t   e   d   W   i   d   t   h  \r   r   o   t   a
0001160    t   e   d   l   i   n   e   W   i   d   t   h  \r   C   u   r
0001200    r   e   n   t   Y   p   o   s  \r   C   h   a   r   D   e   f
0001220   \r   F   o   n   t   O   r   i   e   n   t   a   t   i   o   n
0001240   \r   S   h   o   w   c   n   t   l   S       =       f   a   l
0001260    s   e  \t  \t   /   /       c   o   n   t   r   o   l       s
0001300        C   o   m   m   a   n   d       f   l   a   g  \r  \r  \r
0001320    C   u   r   s   o   r   X   ;       C   u   r   s   o   r   Y
0001340            /   /   X       &       Y       l   o   c   a   t   i
0001360    o   n       o   f       C   u   r   s   o   r       i   n    
0001400    B   i   t   -   M   a   p       c   o   o   r   d   i   n   a
0001420    t   e   s  \r   m   x       =       0   ;       m   y       =
0001440        0   /   /   d   e   f   a   u   l   t       l   o   c   a
0001460    t   i   o   n       o   f       S   t   a   t   u   s   O   b
0001500    j   e   c   t       (   m   a   y       b   e       a   l   t
0001520    e   r   e   d       b   y       "   X   /   Y   :       v   a
0001540    l   "       i   n       u   s   e   r   .   c   m   )  \r   O
0001560    l   d   X       =       0   ;       O   l   d   Y       =    
0001600    0   ;       N   e   w   X       =       0   ;       N   e   w
0001620    Y       =       0  \r   R   e   b   A   r   e   a       /   /
0001640    t   o   t   a   l       a   r   e   a       f   o   r       r
0001660    e   b   u   i   l   d   i   n   g       o   n       f   i   r
0001700    s   t       p   a   s   s  \r   R   w   A   r   e   a       /
0001720    /   t   o   t   a   l       a   r   e   a       f   o   r    
0001740    r   e   b   u   i   l   d   i   n   g       o   n       s   e
0001760    c   o   n   d       p   a   s   s  \r   W   i   n   d   o   w
0002000    X   m   i   n   =   0   ;       W   i   n   d   o   w   Y   m
0002020    i   n   =   0  \r  \r   R   e   b   u   i   l   d   e   r   S
0002040    t   a   t   e       =       0   ;       R   e   s   t   a   r
0002060    t   R   e   b   u   i   l   d   e   r       =       f   a   l
0002100    s   e   ;       R   e   b   u   i   l   d   e   r   L   i   n
0002120    k       =       0  \r   S   w   e   e   p   i   n   g   ;    
0002140    S   l   i   n   k   ;       C   l   i   n   k  \r  \r   M   o
0002160    u   s   e   B   u   f   f   e   r   ;       D   c   b   =   0
0002200    ;       M   a   c   t   ;       F   o   n   t   V   e   c   ;
0002220        P   r   F   a   c   e   V   e   c   ;       A   l   F   a
0002240    c   e   V   e   c   ;       M   a   s   k   T   a   b   l   e
0002260   \r   D   i   s   p   l   a   y   A   r   e   a   =   0   /   /
0002300    s   e   t       t   o       z   e   r   o       s   o        
0002320    F   i   l   e   I   n       d   i   s   p   l   a   y       c
0002340    a   l   l   s       a   r   e       i   n   h   i   b   e   t
0002360    e   d       i   n       p   r   e   s   s       m   o   d   e
0002400   \r   S   i   l   Z   o   n   e  \r   S   p   a   c   e   B   a
0002420    s   e       /   /   b   a   s   e       o   f       s   p   a
0002440    c   e  \r   S   p   a   c   e   T   o   p           /   /   t
0002460    o   p       o   f       s   p   a   c   e       w   i   t   h
0002500        1   2   8       w   o   r   d   s       a   b   o   v   e
0002520        f   o   r       "   N   e   w   I   t   e   m   "       t
0002540    o       e   x   p   a   n   d       i   n   t   o  \r   ]  \r
0002560   \r   e   x   t   e   r   n   a   l       [       @   O   n   B
0002600    i   t   s   ;       @   O   f   f   B   i   t   s   ;       @
0002620    S   e   t   B   P   t   r   ;       @   S   e   t   B   M   a
0002640    s   k   ;       G   e   t   F   i   x   e   d   ]          \r
0002660    s   t   a   t   i   c       [       @   O   n   B   i   t   s
0002700    ;       @   O   f   f   B   i   t   s   ;       @   S   e   t
0002720    B   P   t   r   ;       @   S   e   t   B   M   a   s   k    
0002740    ]          \r   /   /   s   t   a   t   i   c     333       @
0002760    S   a   v   e   F   l   a   g   =   0       ]                
0003000    /   /   T   E   M   P   O   R   A   R   Y       C   O   D   E
0003020        T   O       M   A   K   E       S   I   L   .   B   O   O
0003040    T       -   -       D   O   R   A   D   O          \r   /   /
0003060    e   x   t   e   r   n   a   l       [       s   y   s   Z   o
0003100    n   e   ;       l   v   S   y   s   Z   o   n   e   ;       S
0003120    a   v   e   S   t   a   t   e   ;       M   y   F   r   a   m
0003140    e   ;       E   n   a   b   l   e   I   n   t   e   r   r   u
0003160    p   t   s       ]           /   /   D   O   R   A   D   O    
0003200       \r  \r  \r   l   e   t       M   a   i   n   (   )       b
0003220    e  \r   [ 032   (   6   3   5   )  \r   H   e   r   r   a   l
0003240    d       =       "   R   S   I   L       o   f       M   a   r
0003260    c   h       3   1   ,       1   9   8   1   "  \t  \t   /   /
0003300    a   s       m   o   d   i   f   i   e   d       b   y       P
0003320        L   a   m  \r  \t  \t   S   e   t   X   M   (   2   )  \t
0003340   \t   /   /       c   h   e   c   k       e   x   t   e   n   d
0003360    e   d       m   e   m   o   r   y   ,       a   t       l   e
0003400    a   s   t       1   2   8   k 032   \   b   5   9   B  \r   l
0003420    e   t       x   D   c   b       =       I   n   i   t   B   l
0003440    o   c   k   s   (   )           /   /   s   e   t       u   p
0003460        m   i   s   c   i   l   l   a   n   e   o   u   s       b
0003500    u   f   f   e   r   s       f   o   r       S   I   L  \r   Z
0003520    e   r   o   (   D   i   s   p   l   a   y   A   r   e   a   ,
0003540    (   N   w   r   d   s   *   S   c   r   e   e   n   Y   m   a
0003560    x   )   )           /   /   t   h   i   s       w   a   p   e
0003600    s       o   u   t       I   n   i   t   B   l   o   c   k    
0003620    e   t   c   .       c   o   d   e  \r   D   c   b       =    
0003640    x   D   c   b  \r   J   u   n   t   a   (   l   e   v   K   e
0003660    y   b   o   a   r   d   ,   I   n   i   t   S   i   l   )  \r
0003700    ]  \r  \r 032   l   4   2   6   8  \r   a   n   d       I   n
0003720    i   t   S   i   l   (   a   r   g   )       b   e  \r   [ 032
0003740    l   2   9   9   8  \r  \r   /   /   u   s   e       r   e   m
0003760    a   i   n   i   n   g       s   p   a   c   e       f   o   r
0004000        t   h   e       s   t   a   c   k   /   /   A   d   d   T
0004020    e   x   t       o   f       a       m   a   c   r   o       i
0004040    s       w   o   r   s   t       -       9   0   0       w   o
0004060    r   k   s  \r   S   p   a   c   e   B   a   s   e       =    
0004100    @   #   3   3   5       /   /   E   n   d   C   o   d   e  \r
0004120    /   /   @   #   3   3   5       =       (   l   v       a   r
0004140    g   )       -   9   5   0       /   /   s   e   t       E   n
0004160    d   C   o   d   e  \r   @   #   3   3   5       =       (   l
0004200    v       a   r   g   )       -   2   0   0   0       /   /   s
0004220    e   t       E   n   d   C   o   d   e  \r   /   /   @   #   3
0004240    3   5       =       (   l   v       a   r   g   )       -   1
0004260    4   0   0       /   /   M   O   R   E       S   P   A   C   E
0004300        F   O   R       D   1       V   E   R   S   I   O   N    
0004320    -   -       D   O   R   A   D   O  \r   /   /   i   f       (
0004340    @   #   3   3   5   -   S   p   a   c   e   B   a   s   e   )
0004360        l   s       2   0   0   0       t   h   e   n       C   a
0004400    l   l   S   w   a   t   (   "   I   n   s   u   f   f   i   c
0004420    i   e   n   t       O   b   j   e   c   t       S   t   o   r
0004440    a   g   e   "   )  \r  \r   S   i   l   R   e   I   n   i   t
0004460    (   )  \r   i   f       F   N   a   m   e   O   b   j   e   c
0004500    t   >   >   i   t   e   m   .   s   t   r   i   n   g   .   l
0004520    e   n   g   t   h       t   h   e   n       F   i   l   e   I
0004540    n   (   f   a   l   s   e   )      \r   S   i   l   M   a   i
0004560    n   (   )  \t   /   /   n   e   v   e   r       r   e   t   u
0004600    r   n   s 032   l   4   2   6   8  \r   ]  \r  \r   /   /    
0004620    C   a   l   l   e   d       t   o       r   e   -   i   n   i
0004640    t   i   a   l   i   z   e       S   I   L   ,       b   o   t
0004660    h       a   t       b   e   g   i   n   n   i   n   g       a
0004700    n   d       a   t       ^   K       t   i   m   e   .  \r   a
0004720    n   d       S   i   l   R   e   I   n   i   t   (   )       b
0004740    e  \r  \t   [ 032  \r   M   e   s   s   a   g   e       =    
0004760    H   e   r   r   a   l   d  \r  \r   /   /   C   l   o   s   e
0005000        s   t   r   e   a   m       o   n       A   l   t   e   r
0005020    n   a   t   e       i   n   p   u   t       i   f       t   h
0005040    i   s       i   s       a       c   o   n   t       K       o
0005060    n       a   n       i   n   i   t   i   a   l   i   s   e   d
0005100        s   c   r   e   e   n  \r   i   f       (   F   i   r   s
0005120    t   I   t   e   m       e   q       0   )       &       A   l
0005140    t   S       n   e       0       t   h   e   n       [       C
0005160    l   o   s   e   s   (   A   l   t   S   )   ;       A   l   t
0005200    S   =   0       ;       A   l   t   L   i   n   e   C   n   t
0005220    =   0       ] 032   l   4   2   6   9  \r  \r   /   /   c   l
0005240    e   a   r       b   u   f   f   e   r   s       o   f       w
0005260    i   d   t   h       t   a   b   l   e       f   o   r       n
0005300    o   n       d   e   f   a   u   l   t       f   o   n   t    
0005320    f   a   c   e   s  \r   f   o   r       f       =       0    
0005340    t   o       3   1       d   o       i   f       F   i   l   e
0005360    V   e   c   !   f       n   e       t   r   u   e       t   h
0005400    e   n       W   i   d   t   h   V   e   c   !   f       =    
0005420    0  \r   S   p   a   c   e   T   o   p       =       @   #   3
0005440    3   5       -       1   2   8  \r  \r   S   e   t   C   u   r
0005460    s   o   r   (   )  \r   Z   e   r   o   (   M   a   c   t   ,
0005500    M   t   s   i   z   e   )  \r  \r   F   i   r   s   t   I   t
0005520    e   m   =   0  \r   N   e   w   I   t   e   m   =   S   p   a
0005540    c   e   B   a   s   e  \r   R   e   b   u   i   l   d   e   r
0005560    S   t   a   t   e       =       0  \r   N   S   e   l   e   c
0005600    t   e   d   I   t   e   m   s       =       0  \r   C   h   a
0005620    n   g   e   d       =       f   a   l   s   e  \r   M   a   g
0005640        =       1  \r   L   b   M   i   s   s   i   n   g       =
0005660        -   1  \r   W   i   n   d   o   w   X   m   i   n       =
0005700        0  \r   W   i   n   d   o   w   Y   m   i   n       =    
0005720    0  \r   Z   a   p   R   e   b   u   i   l   d   e   r   (   )
0005740   \r  \r   /   /   I   n   i   t   i   a   l   i   z   e       t
0005760    h   e       s   t   o   r   a   g   e       c   o   m   p   a
0006000    c   t   o   r  \r   C   l   i   n   k       =       S   p   a
0006020    c   e   B   a   s   e  \r   S   l   i   n   k       =       l
0006040    v       F   i   r   s   t   I   t   e   m  \r   S   w   e   e
0006060    p   i   n   g       =       t   r   u   e 032   l   4   2   6
0006100    9  \r   ]  \r  \r   a   n   d       S   i   l   M   a   i   n
0006120    (   )       b   e  \r   [  \r   i   f       M   o   u   s   e
0006140    B   u   f   f   e   r   >   >   O   s   B   U   F   .   I   n
0006160        n   e       M   o   u   s   e   B   u   f   f   e   r   >
0006200    >   O   s   B   U   F   .   O   u   t       t   h   e   n 032
0006220    l   4   2   6   8  \r   [ 032   l   4   2   6   8  \r   M   e
0006240    s   s   a   g   e       =       "       "  \r   s   w   i   t
0006260    c   h   o   n       G   e   t   M   o   u   s   e   E   v   e
0006300    n   t   (   )       i   n   t   o  \r   [ 032   l   5   5   3
0006320    8  \r   c   a   s   e       M   a   r   k   :  \r   P   u   s
0006340    h   C   o   o   r   d   s   (   m   x   ,   m   y   )  \r   M
0006360    o   v   e   O   b   j   e   c   t   T   o   (   M   a   r   k
0006400    O   b   j   e   c   t   ,   m   x   ,   m   y   )  \r   e   n
0006420    d   c   a   s   e  \r  \r   c   a   s   e       C   t   r   l
0006440    D   r   a   w   :  \r   P   u   s   h   C   o   o   r   d   s
0006460    (   m   x   ,   m   y   )  \r   M   o   v   e   O   b   j   e
0006500    c   t   T   o   (   M   a   r   k   O   b   j   e   c   t   ,
0006520    m   x   ,   m   y   )  \r   C   o   p   y   S   e   l   e   c
0006540    t   e   d   (   )  \r   C   h   a   n   g   e   d       =    
0006560    t   r   u   e  \r   e   n   d   c   a   s   e  \r 032   l   6
0006600    8   0   8  \r   c   a   s   e       C   t   r   l   M   a   r
0006620    k   :  \r   c   a   s   e       C   t   r   l   S   h   M   a
0006640    r   k   :  \r   P   u   s   h   C   o   o   r   d   s   (   m
0006660    x   ,   m   y   )  \r   M   o   v   e   O   b   j   e   c   t
0006700    T   o   (   M   a   r   k   O   b   j   e   c   t   ,   m   x
0006720    ,   m   y   )  \r   M   o   v   e   S   e   l   e   c   t   e
0006740    d   (   )  \r   C   h   a   n   g   e   d       =       t   r
0006760    u   e  \r   e   n   d   c   a   s   e  \r  \r   c   a   s   e
0007000        D   r   a   w   :  \r   C   l   e   a   r   S   e   l   e
0007020    c   t   i   o   n   s   (   )  \r   D   o   D   r   a   w   (
0007040    m   x   ,   m   y   )  \r   S   e   t   C   u   r   s   o   r
0007060    (   )  \r   C   h   a   n   g   e   d       =       t   r   u
0007100    e 032   l   6   8   0   8  \r   e   n   d   c   a   s   e  \r
0007120   \r   c   a   s   e       S   e   l   e   c   t   :  \r   S   e
0007140    l   e   c   t   I   t   e   m   (   m   x   ,   m   y   ,   t
0007160    r   u   e   )  \r   S   e   t   C   u   r   s   o   r   (   )
0007200   \r   e   n   d   c   a   s   e  \r  \r   c   a   s   e       S
0007220    h   i   f   t   S   e   l   e   c   t   :  \r   S   e   l   e
0007240    c   t   A   r   e   a   (   m   x   ,   m   y   )  \r   S   e
0007260    t   C   u   r   s   o   r   (   )  \r   e   n   d   c   a   s
0007300    e  \r  \r   c   a   s   e       C   t   r   l   S   e   l   e
0007320    c   t   :  \r   c   a   s   e       C   t   r   l   S   h   S
0007340    e   l   e   c   t   :  \r   S   e   t   C   u   r   s   o   r
0007360    (   )  \r   S   e   l   e   c   t   I   t   e   m   (   m   x
0007400    ,   m   y   ,   f   a   l   s   e   )  \r   e   n   d   c   a
0007420    s   e  \r  \r   c   a   s   e       S   h   i   f   t   M   a
0007440    r   k   :  \r   M   o   v   e   O   b   j   e   c   t   T   o
0007460    (   O   r   i   g   i   n   O   b   j   e   c   t   ,   m   x
0007500    ,   m   y   )  \r   e   n   d   c   a   s   e  \r  \r   c   a
0007520    s   e       S   h   i   f   t   D   e   l   e   t   e   :  \r
0007540    S   e   l   e   c   t   I   t   e   m   (   m   x   ,   m   y
0007560    ,   t   r   u   e   )  \r   D   e   l   e   t   e   S   e   l
0007600    e   c   t   e   d   (   )  \r   S   e   t   C   u   r   s   o
0007620    r   (   )  \r   C   h   a   n   g   e   d       =       t   r
0007640    u   e  \r   e   n   d   c   a   s   e  \r  \r   c   a   s   e
0007660        S   h   i   f   t   U   n   d   e   l   e   t   e   :  \r
0007700    U   n   D   e   l   e   t   e   (   )  \r   S   e   t   C   u
0007720    r   s   o   r   (   )  \r   e   n   d   c   a   s   e 032   l
0007740    6   8   0   8  \r   ]  \r 032   l   5   5   3   8  \r   U   p
0007760    d   a   t   e   S   t   a   t   u   s       =       t   r   u
0010000    e  \r   ] 032   l   4   2   6   8  \r  \r   i   f       n   o
0010020    t       E   n   d   o   f   s   (   k   e   y   s   )       t
0010040    h   e   n       [       D   o   K   e   y   b   o   a   r   d
0010060    (   G   e   t   s   (   k   e   y   s   )   )   ;       U   p
0010100    d   a   t   e   S   t   a   t   u   s   =   t   r   u   e    
0010120    ] 032   l   4   2   6   8  \r   R   e   b   u   i   l   d   S
0010140    o   m   e   (   )  \r   i   f       R   e   b   u   i   l   d
0010160    e   r   S   t   a   t   e       e   q       0       t   h   e
0010200    n       C   o   m   p   a   c   t   (   )       /   /   d   o
0010220        a       l   i   t   t   l   e       b   i   t  \r   i   f
0010240        V   i   r   g   i   n   S   i   n   c   e   B   u   i   l
0010260    d       &       C   h   a   n   g   e   d       t   h   e   n
0010300        R   e   m   o   v   e   B   u   i   l   d   M   a   r   k
0010320    (   )  \r  \r   /   /   i   f       S   a   v   e   F   l   a
0010340    g       t   h   e   n       M   a   k   e   B   o   o   t   F
0010360    i   l   e   (   )   /   /           -   -       D   O   R   A
0010400    D   O  \r 032   l   4   2   6   8  \r   ]       r   e   p   e
0010420    a   t 032  \r  \r  \r   /   /   a   n   d       M   a   k   e
0010440    B   o   o   t   F   i   l   e   (   )       b   e   /   /    
0010460        -   -       D   O   R   A   D   O  \r   /   /   [       l
0010500    e   t       x       =       n   i   l   ;       S   a   v   e
0010520    F   l   a   g   =   0 032  \r   /   /   l   e   t       t   2
0010540        =       t   a   b   l   e       [       #   0   3   0   0
0010560    1   3   ;       #   0   0   2   0   1   4       ]           /
0010600    /   l   d   a       2   ,   1   3   ;       j   m   p   @   1
0010620    4   @   #   1   2       =       t   2  \r   /   /   @   #   1
0010640    2       =       t   2   ;       @   #   1   3       =       M
0010660    y   F   r   a   m   e   (   )   ;       @   #   1   4       =
0010700        D   1   P   r   o   g  \r   /   /   x       =       S   a
0010720    v   e   S   t   a   t   e   (   "   S   i   l   .   b   o   o
0010740    t   "   ,   1   )   ;       i   f       x       n   e       2
0010760        t   h   e   n       r   e   t   u   r   n  \r   /   /   D
0011000    1   P   r   o   g   :       E   n   a   b   l   e   I   n   t
0011020    e   r   r   u   p   t   s   (   )   ;       S   e   t   B   l
0011040    o   c   k   (   0   ,   #   6   7   4   0   0   ,       #   1
0011060    2   ) 032   l   4   2   6   9  \r   /   /   ]  \r  \r   a   n
0011100    d       F   l   a   s   h   M   a   r   k   (   )       b   e
0011120   \r   [ 032  \r   l   e   t       O   b   j       =       O   r
0011140    i   g   i   n   O   b   j   e   c   t           /   /       i
0011160    n   i   t   s       O   r   i   g   i   n       o   b   j   e
0011200    c   t       f   i   r   s   t       t   i   m   e       t   h
0011220    r   o   u   g   h   ,       M   a   r   k       t   h   e    
0011240    s   e   c   o   n   d  \r   B   l   i   n   k   =   1   0  \r
0011260    [           /   /   t   h   i   s       l   o   o   p       i
0011300    s       e   x   c   u   t   e   d       o   n   c   e       f
0011320    o   r       O   r   i   g   i   n   O   b   j   e   c   t    
0011340    a   n   d       o   n   e       f   o   r       M   a   r   k
0011360    O   b   j   e   c   t 032   l   4   2   6   8  \r   i   f    
0011400    M   a   k   e   G   r   a   y   O   K           e   q       0
0011420        t   h   e   n       b   r   e   a   k           /   /   k
0011440    e   e   p       t   h   e       s   c   r   e   e   n       v
0011460    e   r   g   i   n  \r   t   e   s   t       F   l   a   s   h
0011500    S   e   n   s   e  \r   i   f   s   o       P   a   i   n   t
0011520    (   O   b   j   ,   t   o   W   h   i   t   e   )       /   /
0011540    t   u   r   n       o   f   f       O   b   j   e   c   t  \r
0011560    i   f   n   o   t  \r   [ 032   l   5   5   3   8  \r   /   /
0011600    O   b   j   >   >   i   t   e   m   .   s   t   a   t   e    
0011620    =       A   c   t   i   v   e  \r   i   f       O   b   j   >
0011640    >   i   t   e   m   .   x   m   a   x       g   r       S   c
0011660    r   e   e   n   X   m   a   x       t   h   e   n  \r  \t  \t
0011700    M   o   v   e   O   b   j   e   c   t   T   o   (   O   b   j
0011720    ,   S   c   r   e   e   n   X   m   a   x   -   4   ,   O   b
0011740    j   >   >   i   t   e   m   .   y   m   i   n   )  \r   i   f
0011760        O   b   j   >   >   i   t   e   m   .   y   m   a   x    
0012000    g   r       S   c   r   e   e   n   Y   m   a   x       t   h
0012020    e   n  \r  \t  \t   M   o   v   e   O   b   j   e   c   t   T
0012040    o   (   O   b   j   ,   O   b   j   >   >   i   t   e   m   .
0012060    x   m   i   n   ,   S   c   r   e   e   n   Y   m   a   x   -
0012100    8   )  \r   D   i   s   p   l   a   y   O   b   j   e   c   t
0012120    (   O   b   j   )       /   /   t   u   r   n       o   n    
0012140    O   b   j   e   c   t  \r   u   n   l   e   s   s       m   o
0012160    u   s   e   d   o   w   n       d   o       B   l   i   n   k
0012200        =       3   0 032   l   6   8   0   8  \r   ] 032   l   5
0012220    5   3   8  \r   i   f       O   b   j       e   q       M   a
0012240    r   k   O   b   j   e   c   t       t   h   e   n       b   r
0012260    e   a   k  \r   O   b   j       =       M   a   r   k   O   b
0012300    j   e   c   t           /   /   n   o   w       d   o       t
0012320    h   e       s   a   m   e       f   o   r       M   a   r   k
0012340   \r   ]       r   e   p   e   a   t 032   l   4   2   6   8  \r
0012360   \r   F   l   a   s   h   S   e   n   s   e       =       n   o
0012400    t       F   l   a   s   h   S   e   n   s   e  \r   i   f    
0012420    (   m   o   u   s   e   d   o   w   n       %       U   p   d
0012440    a   t   e   S   t   a   t   u   s   )       &       F   l   a
0012460    s   h   S   e   n   s   e       t   h   e   n       [       U
0012500    p   d   a   t   e   S   t   a   t   u   s       =       f   a
0012520    l   s   e   ;       U   p   d   a   t   e   (   )       ]  \r
0012540    i   f       N   S   e   l   e   c   t   e   d   I   t   e   m
0012560    s       e   q       0       t   h   e   n       S   e   t   C
0012600    u   r   s   o   r   (   )  \r   i   f       (   T   i   c   k
0012620    F   l   a   g       n   e       0   )       &       (   R   e
0012640    b   u   i   l   d   e   r   S   t   a   t   e       e   q    
0012660    0   )       d   o       P   a   i   n   t   T   i   c   k   s
0012700    (   )  \r  \r   ] 032  \r  \r   a   n   d       P   a   i   n
0012720    t   T   i   c   k   s   (   )       b   e           /   /   S
0012740    t   a   t   i   c       T   i   c   k   F   l   a   g       m
0012760    u   s   t       e   q   u   a   l       0       o   r       #
0013000    1   0   0   0   0   0  \r   [ 032  \r   f   o   r       i    
0013020    =       D   i   s   p   l   a   y   A   r   e   a       b   y
0013040        (   N   w   r   d   s   *   1   6   )       t   o       D
0013060    i   s   p   l   a   y   A   r   e   a   +   (   N   w   r   d
0013100    s   *   (   S   c   r   e   e   n   Y   m   a   x   -   1   )
0013120    )       d   o 032   l   4   2   6   8  \r   f   o   r       j
0013140        =       0       t   o       N   w   r   d   s   -   1    
0013160    d   o       @   (   i   +   j   )       =       (   (   @   (
0013200    i   +   j   )   )   &       #   7   7   7   7   7   )       +
0013220        T   i   c   k   F   l   a   g 032   l   5   5   3   8  \r
0013240    ]  \r  \r  \r   /   /   t   h   e       f   o   l   l   o   w
0013260    i   n   g       p   r   o   c   e   d   u   r   e       d   i
0013300    s   p   l   a   y   s       a   n       o   b   j   e   c   t
0013320        r   e   l   a   t   i   v   e       t   o       x   0   ,
0013340    y   0   ,       a   n   d       f   i   l   l   s  \r   /   /
0013360    i   n       t   h   e       m   a   x       c   o   o   r   d
0013400    i   n   a   t   e   s       o   f       t   h   e       o   b
0013420    j   e   c   t   .           I   t       w   i   l   l       n
0013440    o   t       d   i   s   p   l   a   y       t   h   e       o
0013460    b   j   e   c   t  \r   /   /   i   f       i   t       i   s
0013500        t   o   t   a   l   l   y       o   f   f       t   h   e
0013520        s   c   r   e   e   n       (   t   h   e       o   b   j
0013540    e   c   t       i   s       m   a   r   k   e   d       D   e
0013560    a   d       s   o       t   h   e       c   o   m   p   a   c
0013600    t   o   r  \r   /   /   c   a   n       g   e   t       i   t
0013620    )   .           I   f       t   h   e       o   b   j   e   c
0013640    t       i   s       d   e   l   e   t   e   d       (   g   r
0013660        S   e   l   e   c   t   e   d   )       i   t       i   s
0013700        n   o   t       d   i   s   p   l   a   y   e   d   .  \r
0013720   \r  \r   a   n   d       D   i   s   p   l   a   y   O   b   j
0013740    e   c   t   (   p   t   r   ,   x   0   ,   y   0   ;       n
0013760    u   m   a   r   g   s       n   a   r   g   s   )       b   e
0014000   \r   [ 032  \r   i   f       (   p   t   r   >   >   i   t   e
0014020    m   .   s   t   a   t   e       g   r       S   e   l   e   c
0014040    t   e   d   )       t   h   e   n       r   e   t   u   r   n
0014060   \r   i   f       n   a   r   g   s       l   s       3       t
0014100    h   e   n       [       x   0   =   0   ;       y   0   =   0
0014120        ]  \r   l   e   t       m   a   c   r   o       =       p
0014140    t   r   >   >   i   t   e   m   .   m   a   c   r   o  \r   l
0014160    e   t       f   o   n   t       =       p   t   r   >   >   i
0014200    t   e   m   .   f   o   n   t  \r   l   e   t       l   i   n
0014220    e       =       p   t   r   >   >   i   t   e   m   .   l   i
0014240    n   e  \r   l   e   t       a   r   e   a       =       p   t
0014260    r   >   >   i   t   e   m   .   a   r   e   a  \r   i   f    
0014300    a   r   e   a       %       l   i   n   e       t   h   e   n
0014320        /   /   t   h   e       o   b   j   e   c   t       i   s
0014340        a       l   i   n   e       o   r       a   r   e   a  \r
0014360    [ 032   l   4   2   6   8  \r   P   a   i   n   t   (   p   t
0014400    r   ,   t   o   B   l   a   c   k   ,   x   0   ,   y   0   )
0014420        /   /   d   i   s   p   l   a   y       i   t       b   l
0014440    a   c   k  \r   r   e   t   u   r   n 032   l   5   5   3   8
0014460   \r   ]  \r  \r   l   e   t       x   =       x   0   +   p   t
0014500    r   >   >   i   t   e   m   .   x   m   i   n  \r   l   e   t
0014520        y       =       y   0   +   p   t   r   >   >   i   t   e
0014540    m   .   y   m   i   n  \r   i   f       (   x       l   s    
0014560    0   )   %   (   y       l   s       0   )       t   h   e   n
0014600        r   e   t   u   r   n  \r  \r   l   e   t       M   a   g
0014620    F   l   a   g       =       (   M   a   g       n   e       1
0014640    )       &       (   p   t   r       n   e       S   t   a   t
0014660    u   s   O   b   j   e   c   t   )   &   (   p   t   r       n
0014700    e       F   N   a   m   e   O   b   j   e   c   t   )  \r   /
0014720    /   r   e   t   u   r   n       i   f       t   h   e       i
0014740    t   e   m       i   s       e   n   t   i   r   e   l   y    
0014760    o   f   f       t   h   e       m   a   g   n   i   f   i   e
0015000    d       s   c   r   e   e   n       a   r   e   a   .  \r   i
0015020    f       M   a   g   F   l   a   g       d   o  \r   [  \r  \t
0015040    i   f       (  \r  \t   (   (   p   t   r   >   >   i   t   e
0015060    m   .   x   m   a   x   +   x   0   )       l   s       W   i
0015100    n   d   o   w   X   m   i   n   )       %  \r  \t   (   (   p
0015120    t   r   >   >   i   t   e   m   .   y   m   a   x   +   y   0
0015140    )       l   s       W   i   n   d   o   w   Y   m   i   n   )
0015160        %  \r  \t   (   (   x   -   W   i   n   d   o   w   X   m
0015200    i   n   )   *   M   a   g       g   e       S   c   r   e   e
0015220    n   X   m   a   x   )       %  \r  \t   (   (   y   -   W   i
0015240    n   d   o   w   Y   m   i   n   )   *   M   a   g       g   e
0015260        S   c   r   e   e   n   Y   m   a   x   )  \r  \t   )    
0015300    t   h   e   n       r   e   t   u   r   n  \r   ] 032   l   4
0015320    2   6   8  \r  \r   i   f       n   o   t       m   a   c   r
0015340    o       t   h   e   n           /   /   n   o   r   m   a   l
0015360        c   h   a   r   a   c   t   e   r       s   t   r   i   n
0015400    g  \r   [ 032   l   4   2   6   8  \r   f   o   n   t       =
0015420        f   o   n   t   /   2           /   /   s   e   t       f
0015440    o   n   t       t   o       "   u   s   e   r       f   o   n
0015460    t   "       =       0       t   o       6  \r   /   /   f   i
0015500    r   s   t       s   e   e       i   f       t   h   e       w
0015520    i   d   t   h   s       t   a   b   l   e       f   o   r    
0015540    t   h   i   s       f   o   n   t       a   n   d       f   a
0015560    c   e       a   r   e       i   n       c   o   r   e  \r   l
0015600    e   t       f   a   c   e       =       p   t   r   >   >   i
0015620    t   e   m   .   f   a   c   e       x   o   r       P   r   F
0015640    a   c   e   V   e   c   !   f   o   n   t  \r   l   e   t    
0015660    F   F       =       f   o   n   t   *   4       +       f   a
0015700    c   e  \r   i   f       H   a   r   d   C   o   p   y       t
0015720    h   e   n       i   f       W   i   d   t   h   V   e   c   !
0015740    F   F       e   q       0       d   o  \r  \t   /   /   c   h
0015760    e   c   k       f   o   r       w   i   d   t   h   s       n
0016000    o   t       i   n       f   i   l   e   ,       o   r       n
0016020    o   t       e   n   o   u   g   h       s   p   a   c   e    
0016040    f   o   r       w   i   d   t   h   s  \r  \t   t   e   s   t
0016060        (   F   i   l   e   V   e   c   !   F   F       e   q    
0016100    0   )   %   (   (   S   p   a   c   e   T   o   p   -   N   e
0016120    w   I   t   e   m   )       l   s       2   0   0   ) 032   l
0016140    5   5   3   8  \r   i   f   s   o       W   i   d   t   h   V
0016160    e   c   !   F   F       =       W   i   d   t   h   V   e   c
0016200    !   (   f   o   n   t   *   4   )      \t   /   /   c   a   n
0016220    '   t       d   o       i   t       s   o       d   e   f   a
0016240    u   l   t  \r   i   f   n   o   t           /   /   l   o   o
0016260    k       u   p       i   n       R   S   i   l   .   i   n   i
0016300    t  \r   [  \r   /   /  \t   l   e   t       p   t   r       =
0016320        S   p   a   c   e   T   o   p   ;       S   p   a   c   e
0016340    T   o   p       =       S   p   a   c   e   T   o   p   -   1
0016360    2   8  \r  \t   l   e   t       p   t   r       =       X   M
0016400    s   t   a   r   t   ;       X   M   s   t   a   r   t       =
0016420        X   M   s   t   a   r   t   +   W   i   d   t   h   S   i
0016440    z   e  \r  \t   u   n   l   e   s   s       I   n   i   t   S
0016460        d   o  \r  \t  \t   I   n   i   t   S       =       O   p
0016500    e   n   S   i   l   F   i   l   e   (   0   ,   f   p   S   i
0016520    l   I   n   i   t   ,   k   s   T   y   p   e   R   e   a   d
0016540    O   n   l   y   ,   w   o   r   d   I   t   e   m   )  \r  \t
0016560    l   e   t       F   p   t   r       =       F   i   l   e   V
0016600    e   c   !   F   F  \r  \t   i   f       F   p   t   r       l
0016620    s       6   6       t   h   e   n       F   p   t   r       =
0016640        F   i   l   e   V   e   c   !   (   F   p   t   r       &
0016660        #   3   7   )  \r  \t   S   e   t   F   i   l   e   P   o
0016700    s   (   I   n   i   t   S   ,   0   ,   F   p   t   r   -   2
0016720    )  \r  \t   i   f       G   e   t   s   (   I   n   i   t   S
0016740    )       n   e       -   1       t   h   e   n       C   a   l
0016760    l   S   w   a   t   (   "   R   S   i   l   .   I   n   i   t
0017000        o   p   r   o   b   l   e   m   "   )  \r   /   /  \t   f
0017020    o   r       w       =       0       t   o       1   2   7    
0017040    d   o       p   t   r   !   w       =       G   e   t   s   (
0017060    I   n   i   t   S   )  \r  \t   f   o   r       w       =    
0017100    0       t   o       W   i   d   t   h   S   i   z   e   -   1
0017120        d   o      \r  \t  \t   [  \r  \t  \t   l   e   t       d
0017140    a   t   a       =       G   e   t   s   (   I   n   i   t   S
0017160    )  \r  \t  \t   x   m   s   t   o   r   e   (   p   t   r   +
0017200    w   ,   d   a   t   a   )  \r  \t  \t   /   /   p   t   r   !
0017220    w       =       G   e   t   s   (   I   n   i   t   S   )  \r
0017240   \t  \t   ]  \r  \t   W   i   d   t   h   V   e   c   !   F   F
0017260        =       p   t   r  \r   ] 032   l   6   8   0   8  \r  \r
0017300  032   l   5   5   3   8  \r  \r  \r   /   /   C   v   r   t    
0017320    r   e   t   u   r   n   s       t   h   e       w   i   d   t
0017340    h       o   f       t   h   e       s   t   r   i   n   g    
0017360    i   n       b   i   t   s   ,       a   n   d       s   e   t
0017400    s  \r   /   /   M   a   x   S   t   r   i   n   g   H   e   i
0017420    g   h   t       t   o       t   h   e       h   e   i   g   h
0017440    t       o   f       t   h   e       t   a   l   l   e   s   t
0017460        c   h   a   r   a   c   t   e   r       i   n  \r   /   /
0017500    t   h   e       s   t   r   i   n   g   .           C   v   r
0017520    t       w   i   l   l       n   o   t       c   o   n   v   e
0017540    r   t       t   h   e       c   h   a   r   a   c   t   e   r
0017560        i   f       t   h   e       w   i   d   t   h  \r   /   /
0017600    w   o   u   l   d       e   x   c   e   e   d       t   h   e
0017620        s   i   x   t   h       p   a   r   a   m   e   t   e   r
0017640    ,       n   o   r       i   f       t   h   e       h   e   i
0017660    g   h   t       w   o   u   l   d  \r   /   /   e   x   c   e
0017700    e   d       t   h   e       s   e   v   e   n   t   h       p
0017720    a   r   a   m   e   t   e   r   .           I   f       e   i
0017740    t   h   e   r       s   i   t   u   a   t   i   o   n       o
0017760    b   t   a   i   n   s   ,       t   h   e  \r   /   /   c   o
0020000    n   v   e   r   t       i   n   s   t   r   u   c   t   i   o
0020020    n       i   s       e   m   u   l   a   t   e   d       s   o
0020040        t   h   a   t       t   h   e       w   i   d   t   h    
0020060    a   n   d       h   e   i   g   h   t  \r   /   /   a   r   e
0020100        c   a   l   c   u   l   a   t   e   d       c   o   r   r
0020120    e   c   t   l   y  \r  \r   /   /       r   o   t   a   t   i
0020140    o   n       0       =       0   ,       1       =       9   0
0020160    ,       2       =       1   8   0   ,       3       =       2
0020200    7   0  \r   l   e   t       l   w   a       =       D   i   s
0020220    p   l   a   y   A   r   e   a       +       (   (   y   -   1
0020240    )   *   N   w   r   d   s   )  \r   l   e   t       s   w    
0020260    =       0  \r   l   e   t       r   o   t       =       F   o
0020300    n   t   O   r   i   e   n   t   a   t   i   o   n   !   f   o
0020320    n   t       &       #   3   7   7  \r  \r   /   /   s   w    
0020340    =       n   e   w   C   v   r   t   (       l   v   (   p   t
0020360    r   >   >   i   t   e   m   .   s   t   r   i   n   g   )   ,
0020400        x   ,       y   ,       l   w   a   ,       F   o   n   t
0020420    V   e   c   !   f   o   n   t   ,       f   a   c   e       &
0020440        A   l   F   a   c   e   V   e   c   !   f   o   n   t   ,
0020460        W   i   d   t   h   V   e   c   !   F   F   ,       M   a
0020500    g   F   l   a   g   ,       r   o   t   ,       N   w   r   d
0020520    s   )  \r  \r  \r   e   x   t   e   r   n   a   l       W   r
0020540    i   t   e   S   t   r   i   n   g 032   l   5   5   3   8  \r
0020560    [  \r   l   e   t       t   y   p   e   f   a   c   e       =
0020600            f   a   c   e       &       A   l   F   a   c   e   V
0020620    e   c   !   f   o   n   t  \r   s   w       =       W   r   i
0020640    t   e   S   t   r   i   n   g   (   p   t   r   ,   x   0   ,
0020660    y   0   ,   t   y   p   e   f   a   c   e   ,   F   o   n   t
0020700    V   e   c   !   f   o   n   t   ,   W   i   d   t   h   V   e
0020720    c   !   F   F   ,   r   o   t   ,   M   a   g   F   l   a   g
0020740    )      \r   i   f       s   w       e   q       0       t   h
0020760    e   n       r   e   t   u   r   n  \r   ]  \r   i   f       r
0021000    o   t       e   q       0       %       r   o   t       e   q
0021020        3       t   h   e   n  \r  \t   [  \r  \t   p   t   r   >
0021040    >   i   t   e   m   .   y   m   a   x       =       p   t   r
0021060    >   >   i   t   e   m   .   y   m   i   n   +   M   a   x   S
0021100    t   r   i   n   g   H   e   i   g   h   t  \r  \t   p   t   r
0021120    >   >   i   t   e   m   .   x   m   a   x       =       p   t
0021140    r   >   >   i   t   e   m   .   x   m   i   n       +       s
0021160    w  \r  \t   ]      \r   i   f       r   o   t       e   q    
0021200    2       t   h   e   n  \r  \t   [  \r  \t   l   e   t       a
0021220        =       p   t   r   >   >   i   t   e   m   .   x   m   i
0021240    n  \r  \t   l   e   t       b       =       p   t   r   >   >
0021260    i   t   e   m   .   x   m   a   x  \r  \t   p   t   r   >   >
0021300    i   t   e   m   .   y   m   a   x       =       p   t   r   >
0021320    >   i   t   e   m   .   y   m   i   n   +   1   4  \r  \t   p
0021340    t   r   >   >   i   t   e   m   .   x   m   i   n       =    
0021360    p   t   r   >   >   i   t   e   m   .   x   m   a   x       -
0021400        s   w  \r  \t   ]      \r   i   f       r   o   t       e
0021420    q       1       t   h   e   n  \r  \t   [  \r  \t   p   t   r
0021440    >   >   i   t   e   m   .   y   m   i   n       =       p   t
0021460    r   >   >   i   t   e   m   .   y   m   a   x   -   s   w  \r
0021500   \t   p   t   r   >   >   i   t   e   m   .   x   m   a   x    
0021520    =       p   t   r   >   >   i   t   e   m   .   x   m   i   n
0021540        +       M   a   x   S   t   r   i   n   g   H   e   i   g
0021560    h   t  \r  \t   ]      \r  \r   i   f       p   t   r   >   >
0021600    i   t   e   m   .   s   t   a   t   e       e   q       S   e
0021620    l   e   c   t   e   d       t   h   e   n       P   a   i   n
0021640    t   (   p   t   r   ,   t   o   S   e   l   e   c   t   e   d
0021660    ,   x   0   ,   y   0   )  \r   r   e   t   u   r   n 032   l
0021700    5   5   3   8  \r  \t   ]  \r  \r   /   /   t   h   e       i
0021720    t   e   m       i   s       a       s   t   r   i   n   g    
0021740    o   f       m   a   c   r   o       c   h   a   r   a   c   t
0021760    e   r   s       (   i   n   t   e   r   n   a   l       f   o
0022000    n   t       #       8   -   1   3   )  \r   /   /   l   e   t
0022020        m   b   a   s   e       =       M   a   c   t   +       1
0022040    2   8   *   (   f   o   n   t   )       /   /   b   a   s   e
0022060        o   f       t   h   e       1   2   8       w   o   r   d
0022100        r   e   g   i   o   n       o   f       M   a   c   t  \r
0022120   \r   /   /   t   h   e       i   t   e   m       i   s       a
0022140        s   t   r   i   n   g       o   f       m   a   c   r   o
0022160        c   h   a   r   a   c   t   e   r   s       (   i   n   t
0022200    e   r   n   a   l       f   o   n   t       #   1   4   (    
0022220    2   *   7   )       &       m   a   c   r   o       1   -   5
0022240    )  \r   /   /       t   h   e   r   e   f   o   r   e       m
0022260    f   o   n   t       =       0       -   -       d   e   f   i
0022300    n   e       m   a   c   r   o       ;       1   -   5       i
0022320    s       l   i   b   r   a   r   y       ;       f   o   n   t
0022340        i   s       8       -   1   2  \r   l   e   t       m   f
0022360    o   n   t       =       0  \r   i   f       f   o   n   t    
0022400    l   e       1   2       t   h   e   n       m   f   o   n   t
0022420        =       f   o   n   t       -       7      \r   l   e   t
0022440        m   b   a   s   e       =       M   a   c   t   +       1
0022460    2   8   *   (   m   f   o   n   t   )       /   /   b   a   s
0022500    e       o   f       t   h   e       1   2   8       w   o   r
0022520    d       r   e   g   i   o   n       o   f       M   a   c   t
0022540       \r   /   /   u   s   e   d       b   y       t   h   i   s
0022560        f   o   n   t  \r   l   e   t       s   l       =       p
0022600    t   r   >   >   i   t   e   m   .   s   t   r   i   n   g   .
0022620    l   e   n   g   t   h  \r   i   f       s   l       e   q    
0022640    0       t   h   e   n       r   e   t   u   r   n       /   /
0022660    z   e   r   o       l   e   n   g   t   h       s   t   r   i
0022700    n   g   s       a   r   e       i   g   n   o   r   e   d  \r
0022720    l   e   t       x   s   o   f   a   r       =       0  \r   l
0022740    e   t       b   i   g   g   e   s   t   y       =       0  \r
0022760    f   o   r       i       =       1       t   o       s   l    
0023000    d   o  \r   [ 032   l   4   2   6   8  \r   l   e   t       c
0023020    h   x   m   a   x       =       0  \r   l   e   t       m   p
0023040    t   r       =       m   b   a   s   e   !       (   p   t   r
0023060    >   >   i   t   e   m   .   s   t   r   i   n   g   .   c   h
0023100    a   r   ^   i   )  \r   l   e   t       a   d   d   r       =
0023120        p   t   r   >   >   i   t   e   m   .   s   t   r   i   n
0023140    g   .   c   h   a   r   ^   i  \r   i   f       (   m   p   t
0023160    r       e   q       0   )   %   (   m   p   t   r       e   q
0023200        -   1   )       t   h   e   n  \r   [ 032   l   5   5   3
0023220    8  \r   l   e   t       v       =       "   L   i   b       F
0023240    o   n   t   :   n       C   h   a   r   :   m       -       ^
0023260    P       t   o       p   r   o   c   e   e   d   "  \r   /   /
0023300        U   s   e   r   .   c   m       d   e   f   i   n   e   s
0023320        f   r   o   m       5       t   o       9   ;       i   n
0023340    t   e   r   n   a   l   l   y       i   s       8       -   1
0023360    2  \r   v   >   >   s   t   r   .   c   h   a   r   ^   1   0
0023400        =       f   o   n   t   -   3   +   $   0  \r   v   >   >
0023420    s   t   r   .   c   h   a   r   ^   1   7       =       p   t
0023440    r   >   >   i   t   e   m   .   s   t   r   i   n   g   .   c
0023460    h   a   r   ^   i  \r   C   a   l   l   S   w   a   t   (   "
0023500    U   n   d   e   f   i   n   e   d       M   a   c   r   o   "
0023520    ,   v   )  \r   p   t   r   >   >   i   t   e   m   .   s   t
0023540    a   t   e       =       D   e   a   d  \r   r   e   t   u   r
0023560    n  \r 032   l   6   8   0   8  \r   ]  \r  \r   u   n   t   i
0023600    l       m   p   t   r       e   q       0       d   o       /
0023620    /   g   r   i   n   d       d   o   w   n       t   h   e    
0023640    l   i   s   t       o   f       o   b   j   e   c   t   s    
0023660    i   n       t   h   e       m   a   c   r   o  \r   [ 032   l
0023700    5   5   3   8  \r   m   p   t   r   >   >   i   t   e   m   .
0023720    s   t   a   t   e       =       p   t   r   >   >   i   t   e
0023740    m   .   s   t   a   t   e   /   /   p   a   s   s       t   h
0023760    e       s   t   a   t   e       o   n       f   o   r       P
0024000    a   i   n   t  \r   D   i   s   p   l   a   y   O   b   j   e
0024020    c   t   (   m   p   t   r   ,   x   +   x   s   o   f   a   r
0024040    ,   y   )  \r   l   e   t       t   x       =       m   p   t
0024060    r   >   >   i   t   e   m   .   x   m   a   x  \r   l   e   t
0024100        t   y       =       m   p   t   r   >   >   i   t   e   m
0024120    .   y   m   a   x  \r   i   f       t   x       g   r       c
0024140    h   x   m   a   x       t   h   e   n       c   h   x   m   a
0024160    x       =       t   x  \r   i   f       t   y       g   r    
0024200    b   i   g   g   e   s   t   y       t   h   e   n       b   i
0024220    g   g   e   s   t   y       =       t   y  \r   m   p   t   r
0024240        =       m   p   t   r   >   >   i   t   e   m   .   l   i
0024260    n   k 032   l   6   8   0   8  \r   ]  \r   x   s   o   f   a
0024300    r       =       x   s   o   f   a   r   +   c   h   x   m   a
0024320    x       /   /   g   r   i   n   d       d   o   w   n       t
0024340    h   e       s   t   r   i   n   g 032   l   5   5   3   8  \r
0024360    ]  \r  \r   p   t   r   >   >   i   t   e   m   .   x   m   a
0024400    x       =       p   t   r   >   >   i   t   e   m   .   x   m
0024420    i   n   +   x   s   o   f   a   r  \r   p   t   r   >   >   i
0024440    t   e   m   .   y   m   a   x       =       p   t   r   >   >
0024460    i   t   e   m   .   y   m   i   n   +   b   i   g   g   e   s
0024500    t   y 032   l   4   2   6   9  \r   ]  \r  \r  \r  \r   /   /
0024520    a   n   d       B   c   p   l   D   o   I   t   a   l   i   c
0024540    s   (   C   h   a   r   H   e   i   g   h   t   ,   p   t   r
0024560    )       b   e           /   /   t   h   i   s       i   s    
0024600    d   o   n   e       i   n       C   V   R   T   .   a   s   m
0024620   \r   /   /   [ 032  \r   /   /   l   e   t       C   h   a   r
0024640    H   e   i   g   h   t       =       (   C   h   a   r   D   e
0024660    f   !   1   )   &   #   3   7   7  \r   /   /   l   e   t    
0024700    p   t   r       =       I   t   a   l   i   c   s   B   u   f
0024720    f   -   C   h   a   r   H   e   i   g   h   t  \r   /   /   M
0024740    o   v   e   B   l   o   c   k   (   p   t   r   ,   C   h   a
0024760    r   D   e   f   -   C   h   a   r   H   e   i   g   h   t   ,
0025000    C   h   a   r   H   e   i   g   h   t   +   2   )  \r   /   /
0025020    f   o   r       i       =       C   h   a   r   H   e   i   g
0025040    h   t   -   1       t   o       4       b   y       -   1    
0025060    d   o       [       r   v       p   t   r       =       (   r
0025100    v       p   t   r   )       r   s   h   i   f   t       (   i
0025120        r   s   h   i   f   t       2   )   ;       p   t   r    
0025140    =       p   t   r   +   1       ] 032   l   4   2   6   9  \r
0025160    /   /   ]  \r  \r   /   /   a   n   d       M   a   g   n   i
0025200    f   i   e   d   C   o   n   v   e   r   t   (   f   r   a   m
0025220    e   ,   C   h   a   r   D   e   f   )       =   v   a   l   o
0025240    f           /   /   c   a   l   l   e   d       f   r   o   m
0025260        C   V   R   T   .   a   s   m       i   f       M   a   g
0025300        g   r       1  \r   /   /   [ 032  \r   /   /   f   r   a
0025320    m   e       i   s       a       A   C   2       o   f       t
0025340    h   e       C   V   R   T       p   r   o   c   e   e   d   u
0025360    r   e       w   h   i   c   h       j   u   s   t       c   a
0025400    l   l   e   d       u   s  \r   /   /   /   /   T   h   e    
0025420    f   o   l   l   o   w   i   n   g       m   a   n   i   f   e
0025440    s   t       c   o   n   s   t   a   n   t   s       r   e   p
0025460    r   e   s   e   n   t       t   h   e       o   f   f   s   e
0025500    t   s       o   f       t   h   e       d   e   s   i   r   e
0025520    d       p   a   r   a   m   e   t   e   r   s  \r   /   /   m
0025540    a   n   i   f   e   s   t       [       c   u   r   r   X   p
0025560    o   s   n   =   #   2   0   ;       Y   s   t   a   r   t    
0025600    =       6   ;       x   B   o   l   d   F   l   g       =    
0025620    #   2   5       ]  \r   /   /   l   e   t       H   D       =
0025640        C   h   a   r   D   e   f   !   1       r   s   h   i   f
0025660    t       8           /   /   n   u   m   b   e   r       o   f
0025700        s   c   a   n   l   i   n   e   s       t   o       s   k
0025720    i   p  \r   /   /   l   e   t       X   H       =       C   h
0025740    a   r   D   e   f   !   1       &       #   3   7   7        
0025760    /   /   n   u   m   b   e   r       o   f       s   c   a   n
0026000    l   i   n   e   s       t   o       C   o   n   v   e   r   t
0026020   \r   /   /   l   e   t       y       =       (   f   r   a   m
0026040    e   !   Y   s   t   a   r   t   +   H   D   -   W   i   n   d
0026060    o   w   Y   m   i   n   )   *   M   a   g  \r   /   /   l   e
0026100    t       x   =       (   f   r   a   m   e   !   c   u   r   r
0026120    X   p   o   s   n   -   W   i   n   d   o   w   X   m   i   n
0026140    )   *   M   a   g  \r   /   /   l   e   t       z       =    
0026160    x   /   1   6  \r   /   /   l   e   t       w   i   d   t   h
0026200        =       M   a   g   +       (   f   r   a   m   e   !   x
0026220    B   o   l   d   F   l   g       n   e       0   ?       M   a
0026240    g   /   2   ,       0   )  \r   /   /   O   n   B   i   t   s
0026260        =       (   M   a   s   k   T   a   b   l   e   !   w   i
0026300    d   t   h   )  \r   /   /   S   e   t   B   P   t   r       =
0026320        D   i   s   p   l   a   y   A   r   e   a       +       (
0026340    y   *   N   w   r   d   s   )  \r   /   /   f   o   r       s
0026360    l       =       -   X   H       t   o       -   1       d   o
0026400   \r   /   /   [  \r   /   /  \t   i   f       y       g   r    
0026420    S   c   r   e   e   n   Y   m   a   x   -   M   a   g       t
0026440    h   e   n       b   r   e   a   k  \r   /   /  \t   e   x   t
0026460    e   r   n   a   l       P   a   i   n   t   B   i   t   s 032
0026500    l   4   2   6   8  \r   /   /  \t   i   f       y       g   e
0026520        0       t   h   e   n       P   a   i   n   t   B   i   t
0026540    s   (   x   ,   C   h   a   r   D   e   f   !   s   l   )  \r
0026560    /   /  \t   S   e   t   B   P   t   r       =       S   e   t
0026600    B   P   t   r       +       (   M   a   g   *   N   w   r   d
0026620    s   ) 032   l   4   2   6   9  \r   /   /   ] 032   l   4   2
0026640    6   9  \r   /   /   r   e   s   u   l   t   i   s       C   h
0026660    a   r   D   e   f   !   0  \r   /   /   ]  \r   /   /  \r  \r
0026700    /   /   t   h   e       f   o   l   l   o   w   i   n   g    
0026720    p   r   o   c   e   d   u   r   e       f   i   l   l   s    
0026740    i   n       a       r   e   c   t   a   n   g   u   l   a   r
0026760        a   r   e   a       d   e   f   i   n   e   d       b   y
0027000        a   n  \r   /   /   o   b   j   e   c   t       w   i   t
0027020    h       b   l   a   c   k   ,       g   r   a   y   ,       o
0027040    r       w   h   i   t   e   .           I   f       t   h   e
0027060        o   b   j   e   c   t       i   s       f   u   l   l   y
0027100        o   f   f       t   h   e       s   c   r   e   e   n  \r
0027120    /   /   n   o   t   h   i   n   g       i   s       d   o   n
0027140    e   .           I   f       t   h   e       o   b   j   e   c
0027160    t       i   s       p   a   r   t   i   a   l   l   y       o
0027200    f   f       t   h   e       s   c   r   e   e   n   ,       t
0027220    h   e  \r   /   /   r   e   g   i   o   n       i   s       c
0027240    l   i   p   p   e   d       s   o       t   h   a   t       i
0027260    t       s   t   a   y   s       i   n       t   h   e       b
0027300    i   t   m   a   p  \r  \r   a   n   d       P   a   i   n   t
0027320    (   p   t   r   ,   s   h   a   d   i   n   g   ,   x   0   ,
0027340    y   0   ;       n   u   m   a   r   g   s       n   a   r   g
0027360    s   )       =   v   a   l   o   f  \r   /   /           t   o
0027400    W   h   i   t   e   =   0   ;       t   o   S   e   l   e   c
0027420    t   e   d   =   1   ;       t   o   B   l   a   c   k   =   -
0027440    1   ;       t   o   B   a   c   k   g   r   o   u   n   d   =
0027460    -   2  \r   [ 032  \r   i   f       n   a   r   g   s       l
0027500    s       4       t   h   e   n       [       x   0   =   0   ;
0027520        y   0   =   0       ]  \r   l   e   t       x   m   i   n
0027540    =   p   t   r   >   >   i   t   e   m   .   x   m   i   n   +
0027560    x   0  \r   l   e   t       x   m   a   x   =   p   t   r   >
0027600    >   i   t   e   m   .   x   m   a   x   +   x   0  \r   l   e
0027620    t       y   m   i   n   =   p   t   r   >   >   i   t   e   m
0027640    .   y   m   i   n   +   y   0  \r   l   e   t       y   m   a
0027660    x   =   p   t   r   >   >   i   t   e   m   .   y   m   a   x
0027700    +   y   0  \r   /   /   i   f       w   e   r   e       j   u
0027720    s   t       m   a   s   k   i   n   g       o   f   f       b
0027740    i   t   s       t   h   e   n       m   a   s   k       o   f
0027760    f       1       e   x   t   r   a       b   i   t   s       f
0030000    o   r       s   a   f   e   t   y  \r   i   f       s   h   a
0030020    d   i   n   g       g   e       0       t   h   e   n       x
0030040    m   a   x   =   x   m   a   x   +   1  \r   l   e   t       h
0030060    e   i   g   h   t       =       y   m   a   x       -       y
0030100    m   i   n   /   /   t   h   i   s       i   s       n   o   t
0030120        t   h   e       M   a   g   n   i   f   i   e   d       h
0030140    e   i   g   h   t       o   r       w   i   d   t   h  \r   l
0030160    e   t       w   i   d   t   h       =       x   m   a   x    
0030200    -       x   m   i   n  \r   l   e   t       f   o   n   t    
0030220    =       p   t   r   >   >   i   t   e   m   .   f   o   n   t
0030240   \r   l   e   t       a   r   e   a       =       p   t   r   >
0030260    >   i   t   e   m   .   a   r   e   a  \r  \r   i   f       (
0030300    M   a   g       n   e       1   )       t   h   e   n       i
0030320    f       (   p   t   r       n   e       S   t   a   t   u   s
0030340    O   b   j   e   c   t   )   &   (   p   t   r       n   e    
0030360    F   N   a   m   e   O   b   j   e   c   t   )       d   o  \r
0030400    [ 032   l   4   2   6   8  \r   x   m   i   n       =       (
0030420    x   m   i   n   -   W   i   n   d   o   w   X   m   i   n   )
0030440    *   M   a   g  \r   y   m   i   n       =       (   y   m   i
0030460    n   -   W   i   n   d   o   w   Y   m   i   n   )   *   M   a
0030500    g  \r   t   e   s   t       (   p   t   r       e   q       O
0030520    r   i   g   i   n   O   b   j   e   c   t   )       %       (
0030540    p   t   r       e   q       M   a   r   k   O   b   j   e   c
0030560    t   )  \r   i   f   s   o       /   /   s   e   t       m   a
0030600    x   '   s       w   i   t   h       o   u   t       m   a   g
0030620    n   i   f   y   i   n   g  \r   [ 032   l   5   5   3   8  \r
0030640    x   m   a   x       =       x   m   i   n   +   w   i   d   t
0030660    h  \r   y   m   a   x       =       y   m   i   n   +   h   e
0030700    i   g   h   t 032   l   6   8   0   8  \r   ] 032   l   5   5
0030720    3   8  \r   i   f   n   o   t       /   /   s   e   t       m
0030740    a   x   '   s       w   i   t   h       m   a   g   n   i   f
0030760    i   c   a   t   i   o   n  \r   [ 032   l   5   5   3   8  \r
0031000    x   m   a   x       =       x   m   i   n   +   w   i   d   t
0031020    h   *   M   a   g  \r   y   m   a   x       =       y   m   i
0031040    n   +   h   e   i   g   h   t   *   M   a   g 032   l   6   8
0031060    0   8  \r  \r   ] 032   l   5   5   3   8  \r   ]  \r  \r  \r
0031100    /   /   c   l   i   p  \r   i   f       (   x   m   i   n    
0031120    g   e       S   c   r   e   e   n   X   m   a   x   )   %   (
0031140    y   m   i   n       g   e       S   c   r   e   e   n   Y   m
0031160    a   x   )   %   (   x   m   a   x       l   s       0   )   %
0031200    (   y   m   a   x       l   s       0   )       t   h   e   n
0031220        r   e   s   u   l   t   i   s       f   a   l   s   e  \r
0031240    i   f       x   m   i   n       l   s       0       t   h   e
0031260    n       x   m   i   n       =       0  \r   i   f       y   m
0031300    i   n       l   s       0       t   h   e   n       y   m   i
0031320    n       =       0  \r   i   f       x   m   a   x       g   r
0031340        S   c   r   e   e   n   X   m   a   x       t   h   e   n
0031360        x   m   a   x       =       S   c   r   e   e   n   X   m
0031400    a   x  \r   i   f       y   m   a   x       g   r       S   c
0031420    r   e   e   n   Y   m   a   x       t   h   e   n       y   m
0031440    a   x       =       S   c   r   e   e   n   Y   m   a   x  \r
0031460   \r   /   /   n   o   w       c   o   m   p   u   t   e       w
0031500    i   d   t   h       a   n   d       h   e   i   g   h   t    
0031520    a   f   t   e   r       m   a   g   n   i   f   i   c   a   t
0031540    i   o   n       a   n   d       c   l   i   p   p   i   n   g
0031560   \r   w   i   d   t   h       =       x   m   a   x       -    
0031600    x   m   i   n  \r  \r  \r   l   e   t       B   i   t   s   T
0031620    a   b   l   e       =       t   a   b   l   e 032   l   4   2
0031640    6   8  \r   [  \r   -   1   ;       -   1   ;       -   1   ;
0031660        -   1   ;           /   /   m   a   s   k       f   o   r
0031700        s   h   a   d   i   n   g       a   l   l       o   n    
0031720    o   r       a   l   l       o   f   f  \r   #   5   2   5   2
0031740    5   ;       #   1   2   5   2   5   2   ;       #   5   2   5
0031760    2   5           /   /   m   a   s   k       f   o   r       s
0032000    h   a   d   i   n   g       s   e   l   e   c   t   e   d  \r
0032020    #   1   0   0   2   0   0   ;   #   2   0   0   4   0   ;   #
0032040    4   0   1   0   ;   #   1   0   0   2   ;   #   1   0   0   2
0032060    0   0   ;   #   2   0   0   4   0   ;   #   4   0   1   0    
0032100        /   /   m   a   s   k       f   o   r       s   h   a   d
0032120    i   n   g       a   r   e   a   s  \r   ] 032   l   5   5   3
0032140    8  \r  \r   O   n   B   i   t   s       =       0  \r   i   f
0032160        s   h   a   d   i   n   g       e   q       t   o   B   l
0032200    a   c   k       t   h   e   n       O   n   B   i   t   s   =
0032220        a   r   e   a       ?       B   i   t   s   T   a   b   l
0032240    e   +   7       +   (   y   m   i   n       &       3   )   ,
0032260    B   i   t   s   T   a   b   l   e      \r  \r  \r   O   f   f
0032300    B   i   t   s       =       0  \r   i   f       (   p   t   r
0032320    >   >   i   t   e   m   .   s   t   a   t   e       e   q    
0032340    S   e   l   e   c   t   e   d   )       &       M   a   k   e
0032360    G   r   a   y   O   K       t   h   e   n       O   f   f   B
0032400    i   t   s   =   B   i   t   s   T   a   b   l   e   +   4    
0032420    +       (   y   m   i   n       &       1   )      \r  \r   /
0032440    /   a   d   d       e   x   t   r   a       b   i   t       t
0032460    o       w   i   d   t   h       i   f       p   a   i   n   t
0032500    i   n   g       w   h   i   t   e       t   o       b   e    
0032520    s   u   r   e       a   n   d       g   e   t       a   l   l
0032540        o   f       i   t   a   l   i   c   s       c   h   a   r
0032560    a   c   t   e   r   s  \r   i   f       s   h   a   d   i   n
0032600    g       e   q       t   o   W   h   i   t   e       t   h   e
0032620    n       O   f   f   B   i   t   s       =       B   i   t   s
0032640    T   a   b   l   e           /   /   s   e   t       o   f   f
0032660        b   i   t   s       t   o       a   l   l       o   n   e
0032700    s  \r  \r   l   e   t       s   t   a   r   t   b   i   t    
0032720    =       x   m   i   n       &       #   1   7  \r   S   e   t
0032740    B   P   t   r       =       D   i   s   p   l   a   y   A   r
0032760    e   a       +       (   y   m   i   n   *   N   w   r   d   s
0033000    )       +       (   x   m   i   n       r   s   h   i   f   t
0033020        4   )  \r   l   e   t       L       =       w   i   d   t
0033040    h       g   r       1   6   ?       1   6   ,   w   i   d   t
0033060    h  \r   l   e   t       a       =       M   a   s   k   T   a
0033100    b   l   e       !       L  \r   S   e   t   B   M   a   s   k
0033120        =       (   M   a   s   k   T   a   b   l   e       !    
0033140    L   )       r   s   h   i   f   t       s   t   a   r   t   b
0033160    i   t  \r  \r 032  \r   e   x   t   e   r   n   a   l       P
0033200    a   i   n   t   B   l   o   c   k 032   l   4   2   6   8  \r
0033220    P   a   i   n   t   B   l   o   c   k   (   y   m   a   x    
0033240    -       y   m   i   n   ,   w   i   d   t   h   +   s   t   a
0033260    r   t   b   i   t   )  \r   /   /   [ 032   l   4   2   6   8
0033300   \r   /   /   S   e   t   B   P   t   r       =       s   t   a
0033320    r   t   w   o   r   d  \r   /   /   P   a   i   n   t   B   l
0033340    o   c   k   (   h   e   i   g   h   t   )  \r   /   /   f   o
0033360    r       i       =       1       t   o       h   e   i   g   h
0033400    t       d   o  \r   /   /   [ 032   l   5   5   3   8  \r   /
0033420    /   B   i   t   S   p   l   a   t   :  \r   /   /   i   f    
0033440    O   n   B   i   t   s       t   h   e   n       @   S   e   t
0033460    B   P   t   r       =       @   S   e   t   B   P   t   r    
0033500    %       (   S   e   t   B   M   a   s   k       &       O   n
0033520    B   i   t   s   !   (   i   &   3   )   )  \r   /   /   i   f
0033540        O   f   f   B   i   t   s       t   h   e   n       @   S
0033560    e   t   B   P   t   r       =       @   S   e   t   B   P   t
0033600    r       &       n   o   t       (   S   e   t   B   M   a   s
0033620    k       &       O   f   f   B   i   t   s   !   (   i   &   1
0033640    )   )  \r   /   /   S   e   t   B   P   t   r   =   S   e   t
0033660    B   P   t   r   +   N   w   r   d   s 032   l   6   8   0   8
0033700   \r   /   /   ]  \r  \r   /   /   w   i   d   t   h       =    
0033720    w   i   d   t   h   -   1   6  \r   /   /   i   f       w   i
0033740    d   t   h       l   e       0       t   h   e   n       b   r
0033760    e   a   k  \r   /   /   s   t   a   r   t   w   o   r   d    
0034000    =       s   t   a   r   t   w   o   r   d   +   1  \r   /   /
0034020    S   e   t   B   M   a   s   k   =       w   i   d   t   h    
0034040    l   s       1   6   ?       M   a   s   k   T   a   b   l   e
0034060    !   w   i   d   t   h   ,       -   1 032   l   5   5   3   8
0034100   \r   /   /   ]       r   e   p   e   a   t  \r   r   e   s   u
0034120    l   t   i   s       t   r   u   e 032   l   4   2   6   8  \r
0034140    ]  \r  \r  \r  \r  \r   a   n   d       P   u   s   h   C   o
0034160    o   r   d   s   (   x   ,   y   )       b   e       /   /   s
0034200    t   a   c   k       m   a   r   k   s  \r   [ 032  \r   O   l
0034220    d   X       =       N   e   w   X  \r   N   e   w   X       =
0034240        x  \r  \r   O   l   d   Y       =       N   e   w   Y  \r
0034260    N   e   w   Y       =       y 032   l   4   2   6   8  \r   ]
0034300   \r  \r   a   n   d       C   l   e   a   r   S   e   l   e   c
0034320    t   i   o   n   s   (   )       b   e       /   /   z   i   p
0034340    s       t   h   r   o   u   g   h       o   b   j   e   c   t
0034360    s       a   n   d       m   a   k   e   s       s   e   l   e
0034400    c   t   e   d       o   n   e   s       a   c   t   i   v   e
0034420   \r   [ 032  \r   l   e   t       l   i   n   k       =       F
0034440    i   r   s   t   I   t   e   m  \r   u   n   t   i   l       l
0034460    i   n   k       e   q       0       d   o  \r   [ 032   l   4
0034500    2   6   8  \r   i   f       l   i   n   k   >   >   i   t   e
0034520    m   .   s   t   a   t   e       e   q       S   e   l   e   c
0034540    t   e   d       t   h   e   n  \r   [ 032   l   5   5   3   8
0034560   \r   l   i   n   k   >   >   i   t   e   m   .   s   t   a   t
0034600    e       =       A   c   t   i   v   e  \r   D   i   s   p   l
0034620    a   y   O   b   j   e   c   t   (   l   i   n   k   )  \r   Z
0034640    a   p   R   e   b   u   i   l   d   e   r   I   t   e   m   (
0034660    l   i   n   k   )      \r   /   /   j   u   s   t       i   n
0034700        c   a   s   e       t   h   i   s       s   e   l   e   c
0034720    t   i   o   n       h   a   d       c   a   u   s   e   d    
0034740    s   o   m   e   t   h   i   n   g       e   l   s   e  \r   /
0034760    /   t   o       b   e       p   a   i   n   t   e   d       g
0035000    r   a   y  \r 032   l   6   8   0   8  \r   ]  \r   l   i   n
0035020    k       =       l   i   n   k   >   >   i   t   e   m   .   l
0035040    i   n   k 032   l   5   5   3   8  \r   ]  \r   R   e   m   e
0035060    m   b   e   r   A   r   e   a   (   S   e   l   A   r   e   a
0035100    ,   0   )           /   /   i   n   i   t   i   a   l   i   z
0035120    e       S   e   l   e   c   t   e   d       A   r   e   a  \r
0035140    N   S   e   l   e   c   t   e   d   I   t   e   m   s       =
0035160        0  \r 032   l   4   2   6   8  \r   ]  \r  \r   /   /   f
0035200    i   l   l       i   n       a   n       i   t   e   m       w
0035220    i   t   h       e   v   e   r   y   t   h   i   n   g       b
0035240    u   t       t   h   e       l   i   n   k       a   n   d    
0035260    s   t   r   i   n   g  \r   a   n   d       M   a   k   e   I
0035300    t   e   m   (   p   t   r   ,   x   m   i   n   ,   x   m   a
0035320    x   ,   y   m   i   n   ,   y   m   a   x   ,   f   o   n   t
0035340    ,   s   t   a   t   e   ,   m   a   c   r   o   ,   l   i   n
0035360    e   ,   a   r   e   a   )       b   e  \r   [ 032  \r   p   t
0035400    r   >   >   i   t   e   m   .   l   i   n   k       =       0
0035420   \r   p   t   r   !   X   m   i   n       =       x   m   i   n
0035440   \t   /   /   p   t   r   >   >   i   t   e   m   .   x   m   i
0035460    n       =       x   m   i   n  \r   p   t   r   !   Y   m   i
0035500    n       =       y   m   i   n  \t   /   /   p   t   r   >   >
0035520    i   t   e   m   .   y   m   i   n       =       y   m   i   n
0035540   \r   p   t   r   !   X   m   a   x       =       x   m   a   x
0035560   \t   /   /   p   t   r   >   >   i   t   e   m   .   x   m   a
0035600    x       =       x   m   a   x  \r   p   t   r   !   Y   m   a
0035620    x       =       y   m   a   x  \t   /   /   p   t   r   >   >
0035640    i   t   e   m   .   y   m   a   x       =       y   m   a   x
0035660   \r   p   t   r   !   5       =       0      \t  \t  \t       /
0035700    /   p   t   r   >   >   i   t   e   m   .   s   t   r   i   n
0035720    g       =       0  \r   p   t   r   >   >   i   t   e   m   .
0035740    f   o   n   t       =       f   o   n   t  \r   p   t   r   >
0035760    >   i   t   e   m   .   m   a   c   r   o       =       m   a
0036000    c   r   o  \r   p   t   r   >   >   i   t   e   m   .   l   i
0036020    n   e       =       l   i   n   e  \r   p   t   r   >   >   i
0036040    t   e   m   .   a   r   e   a       =       a   r   e   a  \r
0036060    p   t   r   >   >   i   t   e   m   .   s   t   a   t   e    
0036100    =       s   t   a   t   e  \r   p   t   r   >   >   i   t   e
0036120    m   .   c   o   l   o   r       =       C   u   r   r   e   n
0036140    t   C   o   l   o   r  \r   ]  \r  \r  \r   a   n   d       R
0036160    e   m   e   m   b   e   r   A   r   e   a   (   a   r   e   a
0036200    ,   i   t   e   m   )       b   e  \r   [ 032   \   2   3   8
0036220    b   6   8   B  \r   i   f       i   t   e   m       e   q    
0036240    0       t   h   e   n  \r  \t   [  \r  \t   a   r   e   a   !
0036260    X   m   i   n       =       S   c   r   e   e   n   X   m   a
0036300    x  \r  \t   a   r   e   a   !   Y   m   i   n       =       S
0036320    c   r   e   e   n   Y   m   a   x  \r  \t   a   r   e   a   !
0036340    X   m   a   x       =       0  \r  \t   a   r   e   a   !   Y
0036360    m   a   x       =       0 032   l   4   2   6   9  \r  \t   r
0036400    e   t   u   r   n  \r  \t   ]  \r   i   f       i   t   e   m
0036420    >   >   i   t   e   m   .   x   m   i   n       l   s       a
0036440    r   e   a   !   X   m   i   n       t   h   e   n       a   r
0036460    e   a   !   X   m   i   n       =       i   t   e   m   >   >
0036500    i   t   e   m   .   x   m   i   n  \r   i   f       i   t   e
0036520    m   >   >   i   t   e   m   .   y   m   i   n       l   s    
0036540    a   r   e   a   !   Y   m   i   n       t   h   e   n       a
0036560    r   e   a   !   Y   m   i   n       =       i   t   e   m   >
0036600    >   i   t   e   m   .   y   m   i   n  \r   i   f       i   t
0036620    e   m   >   >   i   t   e   m   .   x   m   a   x       g   r
0036640        a   r   e   a   !   X   m   a   x       t   h   e   n    
0036660    a   r   e   a   !   X   m   a   x       =       i   t   e   m
0036700    >   >   i   t   e   m   .   x   m   a   x  \r   i   f       i
0036720    t   e   m   >   >   i   t   e   m   .   y   m   a   x       g
0036740    r       a   r   e   a   !   Y   m   a   x       t   h   e   n
0036760        a   r   e   a   !   Y   m   a   x       =       i   t   e
0037000    m   >   >   i   t   e   m   .   y   m   a   x 032   l   4   2
0037020    6   9  \r   ]  \r  \r   /   /   g   i   v   e   n       a    
0037040    p   o   i   n   t   e   r       t   o       a   n       o   b
0037060    j   e   c   t   ,       c   h   a   n   g   e       i   t   s
0037100        p   o   s   i   t   i   o   n  \r   a   n   d       M   o
0037120    v   e   O   b   j   e   c   t   T   o   (   o   b   j   ,   x
0037140    ,   y   )       b   e  \r   [ 032  \r  \r   l   e   t       x
0037160    1       =       o   b   j   >   >   i   t   e   m   .   x   m
0037200    i   n  \r   l   e   t       x   2       =       o   b   j   >
0037220    >   i   t   e   m   .   x   m   a   x  \r   l   e   t       y
0037240    1       =       o   b   j   >   >   i   t   e   m   .   y   m
0037260    i   n  \r   l   e   t       y   2       =       o   b   j   >
0037300    >   i   t   e   m   .   y   m   a   x  \r  \r   P   a   i   n
0037320    t   (   o   b   j   ,   t   o   W   h   i   t   e   )  \t   /
0037340    /   p   a   i   n   t       i   t       w   h   i   t   e  \r
0037360   \r   /   /   l   e   t       t   h   e       r   e   b   u   i
0037400    l   d   e   r       f   i   l   l       i   n       o   v   e
0037420    r       t   h   e       m   o   v   e   d       o   b   j   e
0037440    c   t  \r   Z   a   p   R   e   b   u   i   l   d   e   r   I
0037460    t   e   m   (   o   b   j   )      \r   /   /   i   f       t
0037500    h   e       x   ,   y       c   o   o   r   d   i   n   a   t
0037520    e   s       a   r   e       <   0   ,       t   h   e   n    
0037540    k   i   l   l       t   h   e       o   b   j   e   c   t  \r
0037560    /   /   i   f       (   (   x       l   s       0   )       %
0037600        (   y       l   s       0   )   )       t   h   e   n  \r
0037620    /   /   [ 032   l   4   2   6   8  \r   /   /   i   f       o
0037640    b   j   >   >   i   t   e   m   .   s   t   a   t   e       e
0037660    q       S   e   l   e   c   t   e   d       t   h   e   n    
0037700    N   S   e   l   e   c   t   e   d   I   t   e   m   s       =
0037720        N   S   e   l   e   c   t   e   d   I   t   e   m   s   -
0037740    1  \r   /   /   o   b   j   >   >   i   t   e   m   .   s   t
0037760    a   t   e       =       D   e   a   d  \r   /   /   r   e   t
0040000    u   r   n 032   l   5   5   3   8  \r   /   /   ]  \r  \r   I
0040020    n   c   r   e   m   e   n   t   C   o   o   r   d   s   (   o
0040040    b   j   ,       x   -   o   b   j   >   >   i   t   e   m   .
0040060    x   m   i   n   ,           y   -   o   b   j   >   >   i   t
0040100    e   m   .   y   m   i   n       )  \r   D   i   s   p   l   a
0040120    y   O   b   j   e   c   t   (   o   b   j   )       /   /   d
0040140    i   s   p   l   a   y       i   t       i   n       i   t   s
0040160        n   e   w       p   o   s   i   t   i   o   n  \r 032   l
0040200    4   2   6   8  \r   ]  \r  \r  \r   /   /   T   h   e       s
0040220    c   r   e   e   n       r   e   b   u   i   l   d   e   r    
0040240    h   a   s       t   h   r   e   e       s   t   a   t   e   s
0040260    :      \r   /   /   0       m   e   a   n   s       i   d   l
0040300    e   ,       1       m   e   a   n   s       r   e   b   u   i
0040320    l   d   i   n   g       s   e   l   e   c   t   e   d       i
0040340    t   e   m   s       (   g   r   a   y   )   ,       a   n   d
0040360        2       m   e   a   n   s  \r   /   /   r   e   b   u   i
0040400    l   d   i   n   g       A   c   t   i   v   e       i   t   e
0040420    m   s       (   b   l   a   c   k   )   .               Z   a
0040440    p   R   e   b   u   i   l   d   e   r       i   s  \r   /   /
0040460    p   a   s   s   e   d       a       b   o   u   n   d   i   n
0040500    g       r   e   c   t   a   n   g   l   e   .           I   f
0040520        t   h   e       s   t   a   t   e       i   s       =   0
0040540    ,       i   t       s   e   t   s       t   h   e       s   t
0040560    a   t   e       t   o  \r   /   /   1   ,       a   n   d    
0040600    s   a   v   e   s       t   h   e       r   e   c   t   a   n
0040620    g   l   e   .           I   f       t   h   e       s   t   a
0040640    t   e       i   s       >   0   ,       i   t       e   x   p
0040660    a   n   d   s       t   h   e  \r   /   /   b   o   u   n   d
0040700    i   n   g       r   e   c   t   a   n   g   l   e       a   p
0040720    p   r   o   p   r   i   a   t   e   l   y   .           I   n
0040740        e   i   t   h   e   r       c   a   s   e   ,       i   t
0040760   \r   /   /   s   e   t   s       R   e   s   t   a   r   t   R
0041000    e   b   u   i   l   d   e   r   ,       w   h   i   c   h    
0041020    w   i   l   l       c   a   u   s   e       t   h   e       r
0041040    e   b   u   i   l   d   e   r       t   o       s   t   a   r
0041060    t       a   t       F   i   r   s   t   I   t   e   m  \r   /
0041100    /   w   h   e   n       i   t       i   s       n   e   x   t
0041120        s   t   a   r   t   e   d   .       T   h   e       r   e
0041140    b   u   i   l   d   e   r       s   t   a   r   t   s       i
0041160    n       s   t   a   t   e       1   ,       a   n   d       a
0041200    s       i   t  \r   /   /   g   o   e   s   ,       i   t    
0041220    k   e   e   p   s       t   r   a   c   k       o   f       t
0041240    h   e       l   a   r   g   e   s   t       a   r   e   a    
0041260    w   h   i   c   h       i   t       h   a   s       p   a   i
0041300    n   t   e   d       g   r   a   y  \r   /   /   d   u   r   i
0041320    n   g       p   a   s   s       1   .           A   t       t
0041340    h   e       e   n   d       o   f       p   a   s   s       1
0041360    ,       i   t       p   u   t   s       t   h   i   s       i
0041400    n   f   o   r   m   a   t   i   o   n       i   n  \r   /   /
0041420    t   h   e       b   o   u   n   d   i   n   g       r   e   c
0041440    t   a   n   g   l   e   ,       s   o       t   h   a   t    
0041460    u   n   s   e   l   e   c   t   e   d       t   h   i   n   g
0041500    s       w   i   t   h   i   n       t   h   e       g   r   a
0041520    y  \r   /   /   a   r   e   a       w   i   l   l       b   e
0041540        p   a   i   n   t   e   d       b   l   a   c   k       p
0041560    r   o   p   e   r   l   y   .  \r  \r  \r   a   n   d       Z
0041600    a   p   R   e   b   u   i   l   d   e   r   I   t   e   m   (
0041620    p   )       b   e  \r           Z   a   p   R   e   b   u   i
0041640    l   d   e   r   (   p   >   >   i   t   e   m   .   x   m   i
0041660    n   ,       p   >   >   i   t   e   m   .   y   m   i   n   ,
0041700        p   >   >   i   t   e   m   .   x   m   a   x   ,       p
0041720    >   >   i   t   e   m   .   y   m   a   x   )  \r  \r   a   n
0041740    d       Z   a   p   R   e   b   u   i   l   d   e   r   (   x
0041760    m   i   n   ,   y   m   i   n   ,   x   m   a   x   ,   y   m
0042000    a   x   ;       n   u   m   a   r   g   s       n   a   )    
0042020    b   e  \r   [ 032  \r   i   f       n   a       e   q       0
0042040        t   h   e   n  \r   [ 032   l   4   2   6   8  \r   x   m
0042060    i   n   =   0   ;       y   m   i   n   =   0  \r   x   m   a
0042100    x   =   S   c   r   e   e   n   X   m   a   x   ;       y   m
0042120    a   x   =   S   c   r   e   e   n   Y   m   a   x  \r   Z   e
0042140    r   o   (   D   i   s   p   l   a   y   A   r   e   a   ,   N
0042160    w   r   d   s   *   S   c   r   e   e   n   Y   m   a   x   )
0042200  032   l   5   5   3   8  \r   ]  \r   l   e   t       f   a   k
0042220    e       =       v   e   c       6  \r   f   a   k   e   !   X
0042240    m   i   n       =       x   m   i   n  \r   f   a   k   e   !
0042260    Y   m   i   n       =       y   m   i   n  \r   f   a   k   e
0042300    !   X   m   a   x       =       x   m   a   x  \r   f   a   k
0042320    e   !   Y   m   a   x       =       y   m   a   x  \r   t   e
0042340    s   t       R   e   b   u   i   l   d   e   r   S   t   a   t
0042360    e       e   q       0  \r   i   f   s   o  \r   [ 032   l   4
0042400    2   6   8  \r   R   e   m   e   m   b   e   r   A   r   e   a
0042420    (   R   e   b   A   r   e   a   ,   0   )  \r   R   e   m   e
0042440    m   b   e   r   A   r   e   a   (   R   e   b   A   r   e   a
0042460    ,   f   a   k   e   )  \r   R   e   b   u   i   l   d   e   r
0042500    S   t   a   t   e       =       1   ;       U   p   d   a   t
0042520    e   S   t   a   t   u   s   =   t   r   u   e 032   l   5   5
0042540    3   8  \r   ]  \r  \r   i   f   n   o   t           R   e   m
0042560    e   m   b   e   r   A   r   e   a   (   R   e   b   A   r   e
0042600    a   ,   f   a   k   e   )  \r  \r   R   e   s   t   a   r   t
0042620    R   e   b   u   i   l   d   e   r       =       t   r   u   e
0042640  032   l   4   2   6   8  \r   ]  \r  \r  \r   a   n   d       R
0042660    e   b   u   i   l   d   S   o   m   e   (   )       b   e  \r
0042700    [ 032  \r 032   l   4   2   6   8  \r   i   f       (   B   l
0042720    i   n   k   &   #   1   7   7   7   0   0   )       n   e    
0042740    0       t   h   e   n       F   l   a   s   h   M   a   r   k
0042760    (   )  \t   /   /   i   .   e   .       l   s       0       o
0043000    r       g   r       6   4  \r   i   f       R   e   b   u   i
0043020    l   d   e   r   S   t   a   t   e       e   q       0       t
0043040    h   e   n       r   e   t   u   r   n           /   /   n   o
0043060    t   h   i   n   g       t   o       d   o  \r   i   f       R
0043100    e   s   t   a   r   t   R   e   b   u   i   l   d   e   r    
0043120    t   h   e   n  \r   [ 032   l   4   2   6   8  \r   R   e   m
0043140    e   m   b   e   r   A   r   e   a   (   R   w   A   r   e   a
0043160    ,   0   )  \r  \r   R   e   s   t   a   r   t   R   e   b   u
0043200    i   l   d   e   r       =       f   a   l   s   e  \r   R   e
0043220    b   u   i   l   d   e   r   S   t   a   t   e       =       1
0043240        /   /   d   o       s   e   l   e   c   t   e   d       i
0043260    t   e   m   s  \r   R   e   b   u   i   l   d   e   r   L   i
0043300    n   k       =       F   i   r   s   t   I   t   e   m 032   l
0043320    5   5   3   8  \r   ]  \r   i   f       R   e   b   u   i   l
0043340    d   e   r   L   i   n   k       e   q       0       t   h   e
0043360    n      \t   /   /   d   o   n   e       w   i   t   h       t
0043400    h   i   s       p   a   s   s 032   l   4   2   6   8  \r   [
0043420  032   l   4   2   6   8  \r   U   p   d   a   t   e   S   t   a
0043440    t   u   s       =       t   r   u   e  \r   R   e   b   u   i
0043460    l   d   e   r   S   t   a   t   e       =       R   e   b   u
0043500    i   l   d   e   r   S   t   a   t   e   +   1  \r   i   f    
0043520    R   e   b   u   i   l   d   e   r   S   t   a   t   e       g
0043540    r       2       t   h   e   n       R   e   b   u   i   l   d
0043560    e   r   S   t   a   t   e       =       0  \r   R   e   b   u
0043600    i   l   d   e   r   L   i   n   k       =       F   i   r   s
0043620    t   I   t   e   m  \r   i   f       R   e   b   u   i   l   d
0043640    e   r   S   t   a   t   e       e   q       2       t   h   e
0043660    n       R   e   m   e   m   b   e   r   A   r   e   a   (   R
0043700    e   b   A   r   e   a   ,   R   w   A   r   e   a   )  \r   l
0043720    o   o   p 032   l   5   5   3   8  \r   ]  \r   l   e   t    
0043740    t       =       R   e   b   u   i   l   d   e   r   L   i   n
0043760    k   ;       R   e   b   u   i   l   d   e   r   L   i   n   k
0044000        =       R   e   b   u   i   l   d   e   r   L   i   n   k
0044020    >   >   i   t   e   m   .   l   i   n   k  \r   l   e   t    
0044040    s   t       =       t   >   >   i   t   e   m   .   s   t   a
0044060    t   e  \r   u   n   l   e   s   s       (   (   (   s   t    
0044100    e   q       S   e   l   e   c   t   e   d   )       &       (
0044120    R   e   b   u   i   l   d   e   r   S   t   a   t   e       e
0044140    q       1   )   )       %       (   (   s   t       e   q    
0044160    A   c   t   i   v   e   )       &       (   R   e   b   u   i
0044200    l   d   e   r   S   t   a   t   e       e   q       2   )   )
0044220    )       t   h   e   n       l   o   o   p  \r  \r  \r   i   f
0044240        (   t   >   >   i   t   e   m   .   x   m   i   n       g
0044260    r       R   e   b   A   r   e   a   !   X   m   a   x   )    
0044300    %       (   t   >   >   i   t   e   m   .   x   m   a   x    
0044320    l   s       R   e   b   A   r   e   a   !   X   m   i   n   )
0044340        %       (   t   >   >   i   t   e   m   .   y   m   a   x
0044360        l   s       R   e   b   A   r   e   a   !   Y   m   i   n
0044400    )       %       (   t   >   >   i   t   e   m   .   y   m   i
0044420    n       g   r       R   e   b   A   r   e   a   !   Y   m   a
0044440    x   )       t   h   e   n       l   o   o   p 032   l   4   2
0044460    6   8  \r  \r   D   i   s   p   l   a   y   O   b   j   e   c
0044500    t   (   t   )       /   /   d   i   s   p   l   a   y       i
0044520    t  \r  \r   /   /   c   h   e   c   k       f   o   r       o
0044540    b   j   e   c   t       w   h   i   c   h       w   a   s    
0044560    j   u   s   t       p   a   i   n   t   e   d       g   r   a
0044600    y       b   i   g   g   e   r       t   h   a   n  \r   /   /
0044620    t   h   e       p   r   e   s   e   n   t       '   m   a   x
0044640    i   m   u   m       g   r   a   y   '       w   i   n   d   o
0044660    w  \r   i   f       R   e   b   u   i   l   d   e   r   S   t
0044700    a   t   e       e   q       1       t   h   e   n       R   e
0044720    m   e   m   b   e   r   A   r   e   a   (   R   w   A   r   e
0044740    a   ,   t   )  \r  \r   i   f       M   o   u   s   e   B   u
0044760    f   f   e   r   >   >   O   s   B   U   F   .   I   n       n
0045000    e       M   o   u   s   e   B   u   f   f   e   r   >   >   O
0045020    s   B   U   F   .   O   u   t       t   h   e   n       r   e
0045040    t   u   r   n  \t   /   /   u   s   e   r       i   n   p   u
0045060    t  \r   i   f       n   o   t       E   n   d   o   f   s   (
0045100    k   e   y   s   )           t   h   e   n       r   e   t   u
0045120    r   n  \t   /   /   u   s   e   r       i   n   p   u   t 032
0045140    l   4   2   6   8  \r   ]       r   e   p   e   a   t  \r    
0045160  032   l   2   9   9   8  \r  \r 032  \r                        
0045172