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