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