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