$ od -c -N 50000 [Indigo]<Spruce>13>SpruceInstall.bcpl!2
0000000    /   /       S   p   r   u   c   e   I   n   s   t   a   l   l
0000020    .   B   c   p   l           -   -       S   p   r   u   c   e
0000040        S   p   o   o   l   e   r       I   n   s   t   a   l   l
0000060    a   t   i   o   n  \r   /   /           e   r   r   o   r   s
0000100        2   5   0  \r  \r   /   /       g   e   t       "   S   p
0000120    r   u   c   e   .   d   "       w   a   s       t   o   o    
0000140    b   i   g   :       o   n   l   y       n   e   e   d  \r  \t
0000160    g   e   t       "   S   p   r   u   c   e   P   r   i   n   t
0000200    e   r   s   .   d   "  \r  \t   g   e   t       "   S   p   r
0000220    u   c   e   d   o   c   .   d   "  \r  \t   g   e   t       "
0000240    s   p   r   u   c   e   M   i   s   c   .   d   "  \r   g   e
0000260    t       "   S   p   r   u   c   e   F   i   l   e   s   .   d
0000300    "  \r   g   e   t       "   M   e   n   u   D   e   f   s   .
0000320    d   "          \r   g   e   t       "   S   p   r   u   c   e
0000340    P   a   r   a   m   s   N   a   m   e   s   .   d   "  \r   g
0000360    e   t       "   S   p   r   u   c   e   F   i   l   e   s   N
0000400    a   m   e   s   .   d   "  \r  \r   e   x   t   e   r   n   a
0000420    l       /   /       d   e   f   i   n   e   d       h   e   r
0000440    e  \r  \t   [  \r  \t   S   p   r   u   c   e   I   n   s   t
0000460    a   l   l  \r  \t   M   e   n   u   I   n   i   t   H   e   l
0000500    p  \r  \t   ]  \r  \r   e   x   t   e   r   n   a   l       /
0000520    /       e   x   t   e   r   n   a   l  \r  \t   [  \r  \t   /
0000540    /       *   *   *   *   *   *   *       F   u   n   c   t   i
0000560    o   n   s       b   e   t   w   e   e   n       S   p   r   u
0000600    c   e   S   p   o   o   l       a   n   d       S   p   r   u
0000620    c   e   I   n   U   t   i   l       n   o   t       n   e   e
0000640    d   e   d       d   u   r   i   n   g       i   n   s   t   a
0000660    l   l   a   t   i   o   n  \r  \t   /   /       *   *   *   *
0000700    *   *   *       (   S   o   m   e   o   n   e   I   s   K   n
0000720    o   c   k   i   n   g       t   o       V   a   l   i   d   a
0000740    t   e   S   p   r   u   c   e   F   i   l   e   )  \r  \t   /
0000760    /       *   *   *   *   *   *   *       L   o   a   d       c
0001000    o   m   m   a   n   d       f   i   l   e       m   u   s   t
0001020        b   e       m   a   i   n   t   a   i   n   e   d       t
0001040    o       r   e   t   a   i   n       t   h   i   s       f   a
0001060    c   t  \r  \t   S   o   m   e   o   n   e   I   s   K   n   o
0001100    c   k   i   n   g  \r  \t   V   a   l   i   d   a   t   e   S
0001120    p   r   u   c   e   F   i   l   e  \r  \t   /   /       *   *
0001140    *   *   *   *   *  \r  \r  \t   /   /       S   p   r   u   c
0001160    e   F   i   l   e   s  \r  \t   F   o   r   g   e   t   S   p
0001200    r   u   c   e   F   i   l   e  \r  \t   I   n   i   t   S   p
0001220    r   u   c   e   F   i   l   e  \r  \t   R   e   s   e   t   S
0001240    p   r   u   c   e   F   i   l   e  \r  \r  \t   /   /       S
0001260    p   r   u   c   e   I   n   U   t   i   l  \r  \t   D   i   s
0001300    k   O   b   j   e   c   t  \r  \t   G   e   t   P   r   i   n
0001320    t   e   r   N   a   m   e   s  \r  \t   M   a   k   e   V   a
0001340    l   i   d   S   p   r   u   c   e   F   i   l   e  \r  \t   S
0001360    e   t   u   p   D   r   i   v   e  \r  \t   S   t   a   t   u
0001400    s   O   f   3   1   s  \r  \r  \t   /   /       S   p   r   u
0001420    c   e   C   h   e   c   k  \r  \t   C   h   e   c   k   P   o
0001440    i   n   t  \r  \t   L   e   v   e   l   P   o   s  \r  \t   O
0001460    p   e   n   C   h   e   c   k   P   o   i   n   t   F   i   l
0001500    e  \r  \t   R   e   s   t   o   r   e   F   r   o   m   C   h
0001520    e   c   k   P   o   i   n   t  \r  \t  \r  \t   /   /       M
0001540    e   n   u       P   a   c   k   a   g   e  \r  \t   /   /    
0001560    C   r   e   a   t   e   M   e   n   u   D   i   s   p   l   a
0001600    y   S   t   r   e   a   m  \r  \t   /   /       F   i   l   l
0001620    B   o   x  \r  \t   /   /       G   e   t   S   t   r   i   n
0001640    g  \r  \t   /   /       M   e   n   u   S   i   z   e  \r  \t
0001660    /   /       S   c   a   n   M   e   n   u  \r  \t   /   /    
0001700    W   r   i   t   e   B   o   x  \r  \t   /   /       L   o   a
0001720    d   e   d       M   e   n   u   s  \r  \t   M   e   n   u   F
0001740    i   l   e   s   H   e   l   p  \r  \t   M   e   n   u   P   a
0001760    r   a   m   s   H   e   l   p  \r  \t  \r  \t   /   /       S
0002000    p   r   u   c   e       U   t   i   l   s  \r  \t   C   r   e
0002020    a   t   e   F   P   R   D  \r  \t   F   S   G   e   t   X  \r
0002040   \t   F   S   I   n   i   t  \r  \t   F   S   P   u   t  \r  \t
0002060    I   n   i   t   R   a   m  \r  \t       L   o   a   d   R   a
0002100    m  \r  \t   S   p   r   u   c   e   E   r   r   o   r  \r  \t
0002120   \r  \t   /   /       T   e   m   p   l   a   t   e  \r  \t   P
0002140    u   t   T   e   m   p   l   a   t   e  \r  \r  \t   /   /    
0002160    T   F   S  \r  \t   T   F   S   C   l   o   s   e  \r  \t   T
0002200    F   S   I   n   i   t  \r  \r  \t   /   /       B   F   S  \r
0002220   \t   B   F   S   C   l   o   s   e  \r  \t  \r  \t   /   /    
0002240    O   S  \r  \t   M   y   F   r   a   m   e  \r  \t   S   h   o
0002260    w   D   i   s   p   l   a   y   S   t   r   e   a   m  \r  \t
0002300    Z   e   r   o  \r  \r  \t   /   /       s   t   a   t   i   c
0002320    s  \r  \t   B   a   n   d   F   i   l   e  \r  \t   B   i   t
0002340    M   a   r   g   i   n   A   d   j   u   s   t  \t  \r  \t   b
0002360    r   e   a   k   P   a   g   e  \r  \t   C   a   p   a   b   i
0002400    l   i   t   i   e   s  \r  \t   C   h   e   c   k   P   r   A
0002420    t   t   r  \r  \t   D   e   b   u   g   S   y   s   t   e   m
0002440   \r  \t   D   u   t   y   C   y   c   l   e  \r  \t   d   r   i
0002460    v   e   1   D   i   s   k  \r  \t   E   r   r   o   r   F   i
0002500    l   e  \r  \t   F   a   c   e   t   s  \r  \t   F   o   n   t
0002520    F   i   l   e  \r  \t   L   a   n   d   s   c   a   p   e   D
0002540    e   v   i   c   e  \t  \r  \t   m   a   x   Q   u   e   u   e
0002560    d  \r  \t   m   e   n   u  \r  \t   m   e   n   u   B   u   f
0002600   \r  \t   a   l   l   o   c   L   o   g   F   i   l   e  \r  \r
0002620   \t   /   /       M   e   n   u   D   a   t   a  \r  \t   m   e
0002640    n   u   S   t   r   e   a   m  \r  \t   N   u   m   B   i   n
0002660    s  \r  \t   O   v   e   r   l   a   y   T   o   p  \r  \t   P
0002700    a   p   e   r   D   i   m   e   n   s   i   o   n   B  \t  \r
0002720   \t   P   a   p   e   r   D   i   m   e   n   s   i   o   n   S
0002740   \t  \r  \t   P   a   p   e   r   S   p   e   e   d   I   n   c
0002760    h   e   s  \t  \r  \t   P   e   r   m   a   n   e   n   t   B
0003000    o   t   t   o   m  \r  \t   P   o   l   y   g   o   n   R   a
0003020    t   i   o  \r  \t   p   r   i   n   t   e   r   D   e   v   i
0003040    c   e  \t  \r  \t   p   r   i   n   t   e   r   F   o   r   w
0003060    a   r   d  \t  \r  \t   p   r   i   n   t   e   r   N   a   m
0003100    e  \t  \r  \t   P   R   a   m   I   m   a   g   e  \r  \t   R
0003120    e   s   o   l   u   t   i   o   n   B  \t  \r  \t   R   e   s
0003140    o   l   u   t   i   o   n   S  \t  \r  \t   S   c   a   n   L
0003160    e   n   g   t   h   I   n   c   h   e   s  \t  \r  \t   S   c
0003200    a   n   M   a   r   g   i   n   A   d   j   u   s   t  \r  \t
0003220    S   p   o   o   l   F   i   l   e  \r  \t   s   p   r   i   n
0003240    t   F   P   R   D  \r  \t   s   p   r   u   c   e   F   P   R
0003260    D  \r  \t   S   p   r   u   c   e   Z   o   n   e  \r  \t   t
0003300    r   i   d   e   n   t   D   i   s   k  \r  \t   t   r   i   d
0003320    e   n   t   U   s   e   d  \r  \t   s   t   a   t   u   s   O
0003340    f   3   1   s  \r  \t   U   s   e   r   N   a   m   e  \r  \t
0003360    /   /       *   *   *   *       S   e   e       S   p   r   u
0003400    c   e   S   t   a   t   i   c   s   ,       S   p   r   u   c
0003420    e   U   t   i   l   s   ,       b   e   l   o   w       -   -
0003440        m   o   r   e       m   e   m   o   r   y       f   o   r
0003460        i   n   s   t   a   l   l   a   t   i   o   n  \r  \t   M
0003500    o   r   e   L   o   w   ;       M   o   r   e   H   i   g   h
0003520   \r  \t   ]  \r  \r   s   t   a   t   i   c       I   n   s   t
0003540    a   l   l   S   t   a   c   k   S   i   z   e       =       2
0003560    0   0   0  \r   s   t   a   t   i   c       [       m   e   n
0003600    u   ;       m   e   n   u   S   t   r   e   a   m   ;       m
0003620    e   n   u   B   u   f   ;       M   e   n   u   I   n   i   t
0003640    H   e   l   p   =   0   ;       C   h   a   n   g   e   R   o
0003660    u   t   i   n   e       ]  \r   s   t   a   t   i   c        
0003700    [       e   r   r   o   r   S   p   e   c   s   ;       f   o
0003720    n   t   S   p   e   c   s   ;       s   p   o   o   l   S   p
0003740    e   c   s   ;       b   a   n   d   S   p   e   c   s   ;    
0003760    o   k   T   o   I   n   s   t   a   l   l       ]  \r   s   t
0004000    r   u   c   t   u   r   e       S   P   E   C   S   :       [
0004020        f   i   l   e   I   d       w   o   r   d   ;       d   e
0004040    v   I   d       w   o   r   d   ;       d   e   f   D   e   v
0004060        w   o   r   d   ;       s   i   z   e   I   d       w   o
0004100    r   d   ;       d   e   f   S   i   z   e       w   o   r   d
0004120        ]  \r  \r   /   /  \t   I   n   s   t   a   l   l   a   t
0004140    i   o   n       i   s       a       m   e   n   u   -   d   r
0004160    i   v   e   n       p   r   o   c   e   s   s   ,       u   s
0004200    i   n   g       t   h   e       m   e   n   u       p   a   c
0004220    k   a   g   e       c   o   n   t   a   i   n   e   d       i
0004240    n       <   A   l   t   o   >   M   e   n   u   .   d   m    
0004260    (   K   .       K   n   o   x   ,       p   r   o   p   r   i
0004300    e   t   o   r   .   )  \r   /   /       T   h   e       c   o
0004320    m   p   a   n   i   o   n       M   e   n   u   E   d   i   t
0004340        p   r   o   g   r   a   m   ,       r   u   n       o   n
0004360        a       d   i   f   f   e   r   e   n   t       d   i   s
0004400    k   ,       c   r   e   a   t   e   s       a   n   d       m
0004420    a   i   n   t   a   i   n   s       t   h   e       f   o   l
0004440    l   o   w   i   n   g       f   i   l   e   s   ,  \r   /   /
0004460        w   h   i   c   h       a   r   e       p   a   r   t    
0004500    o   f       t   h   e       s   t   a   n   d   a   r   d    
0004520    S   p   r   u   c   e       s   o   u   r   c   e       p   a
0004540    c   k   a   g   e   :  \r  \r   /   /  \t   S   p   r   u   c
0004560    e   N   a   m   e   s   .   d   ,       S   p   r   u   c   e
0004600    T   a   b   l   e   s   .   b   c   p   l       -   -       d
0004620    e   s   c   r   i   b   e       b   o   t   h       m   e   n
0004640    u   s       (   s   e   e       b   e   l   o   w   )  \r   /
0004660    /  \t   S   p   r   u   c   e   P   a   r   a   m   s   N   a
0004700    m   e   s   .   d   ,       S   p   r   u   c   e   P   a   r
0004720    a   m   s   T   a   b   l   e   s   .   b   c   p   l       -
0004740    -       d   e   s   c   r   i   b   e       t   h   e       p
0004760    a   r   a   m   s       m   e   n   u       (   s   e   e    
0005000    b   e   l   o   w   )  \r   /   /  \t   S   p   r   u   c   e
0005020    F   i   l   e   s   N   a   m   e   s   .   d   ,       S   p
0005040    r   u   c   e   N   a   m   e   s   T   a   b   l   e   s   .
0005060    b   c   p   l       -   -       d   e   s   c   r   i   b   e
0005100        t   h   e       f   i   l   e       c   o   n   f   i   g
0005120    .       m   e   n   u   .  \r  \r   /   /  \t   I   n   s   t
0005140    a   l   l   a   t   i   o   n       i   n   v   o   l   v   e
0005160    s       s   e   t   t   i   n   g       a       n   u   m   b
0005200    e   r       o   f       p   r   i   n   t   i   n   g       a
0005220    n   d       s   p   o   o   l   i   n   g       p   a   r   a
0005240    m   e   t   e   r   s   ,       a   n   d       d   e   s   c
0005260    r   i   b   i   n   g       t   h   e       s   i   z   e   s
0005300        a   n   d       l   o   c   a   t   i   o   n   s  \r   /
0005320    /       o   f       f   i   l   e   s       u   s   e   d    
0005340    i   n       t   h   e       s   p   o   o   l   i   n   g    
0005360    a   n   d       p   r   i   n   t   i   n   g       p   r   o
0005400    c   e   s   s   .       T   h   e       S   p   r   u   c   e
0005420        o   p   e   r   a   t   i   o   n   s       m   a   n   u
0005440    a   l       c   o   n   t   a   i   n   s       p   i   c   t
0005460    u   r   e   s       o   f       t   h   e       p   a   r   a
0005500    m   e   t   e   r   s       a   n   d  \r   /   /       c   o
0005520    n   f   i   g   u   r   a   t   i   o   n       m   e   n   u
0005540    s   ,       a   l   o   n   g       w   i   t   h       d   e
0005560    s   c   r   i   p   t   i   o   n   s       o   f       t   h
0005600    e   i   r       u   s   e   .       I   t       w   o   u   l
0005620    d       h   a   v   e       b   e   e   n       b   e   t   t
0005640    e   r       i   f       b   o   t   h       m   e   n   u   s
0005660        w   e   r   e       s   i   m   u   l   t   a   n   e   o
0005700    u   s   l   y  \r   /   /       a   v   a   i   l   a   b   l
0005720    e   ,       b   u   t       s   p   a   c   e       c   o   n
0005740    s   i   d   e   r   a   t   i   o   n   s       i   n   t   r
0005760    u   d   e   d   .       T   h   e       m   e   n   u   s    
0006000    a   r   e       c   r   e   a   t   e   d       b   y       r
0006020    u   n   n   i   n   g       M   e   n   u   E   d   i   t    
0006040    t   o       m   o   d   i   f   y       t   h   e       S   p
0006060    r   u   c   e  \r   /   /       (   c   o   m   p   l   e   t
0006100    e   )       m   e   n   u   ,       t   h   e   n       b   y
0006120        e   x   t   r   a   c   t   i   n   g       t   h   e   m
0006140        i   n   t   o       t   h   e       S   p   r   u   c   e
0006160    P   a   r   a   m   s       a   n   d       S   p   r   u   c
0006200    e   F   i   l   e   s       m   e   n   u   s   .       I   f
0006220        s   p   a   c   e       l   a   t   e   r       a   l   l
0006240    o   w   s   ,  \r   /   /       t   h   e   y       c   a   n
0006260        b   e       r   e   m   e   r   g   e   d   .       T   h
0006300    e       m   e   n   u   s       a   r   e       p   r   e   s
0006320    e   n   t   e   d       t   o       t   h   e       u   s   e
0006340    r       s   e   q   u   e   n   t   i   a   l   l   y   ,    
0006360    P   a   r   a   m   s       f   i   r   s   t   .  \r   /   /
0006400   \t   E   a   c   h       m   e   n   u   ,       a   n   d    
0006420    i   t   s       u   n   d   e   r   l   y   i   n   g       i
0006440    n   s   t   a   l   l   a   t   i   o   n       v   a   r   i
0006460    a   b   l   e   s   ,       a   r   e       i   n   i   t   i
0006500    a   l   i   z   e   d       f   r   o   m       s   o   m   e
0006520        s   t   a   n   d   a   r   d       d   e   f   a   u   l
0006540    t   s   .  \r   /   /       T   h   e   n       v   a   l   u
0006560    e   s       p   r   o   d   u   c   e   d       d   u   r   i
0006600    n   g       p   r   e   v   i   o   u   s       i   n   s   t
0006620    a   l   l   a   t   i   o   n       s   e   s   s   i   o   n
0006640    s       a   r   e       o   b   t   a   i   n   e   d       f
0006660    r   o   m       t   h   e       c   h   e   c   k   p   o   i
0006700    n   t       f   i   l   e   ,       i   f       i   t  \r   /
0006720    /       e   x   i   s   t   s       a   n   d       i   s    
0006740    v   a   l   i   d   .       T   h   e   s   e       a   r   e
0006760        r   e   f   l   e   c   t   e   d       i   n       t   h
0007000    e       m   e   n   u   s   ,       t   h   e   n       t   h
0007020    e       u   s   e   r       i   s       g   i   v   e   n    
0007040    t   h   e       o   p   p   o   r   t   u   n   i   t   y    
0007060    t   o       c   h   a   n   g   e  \r   /   /       t   h   e
0007100    m   ,       a   c   c   e   p   t       t   h   e       c   u
0007120    r   r   e   n   t       s   e   t   ,       o   r       q   u
0007140    i   t       w   i   t   h   o   u   t       a   f   f   e   c
0007160    t   i   n   g       t   h   e       i   n   s   t   a   l   l
0007200    a   t   i   o   n   .       T   h   e       c   o   n   f   i
0007220    g   u   r   a   t   i   o   n       c   a   n   n   o   t    
0007240    b   e  \r   /   /       a   c   c   e   p   t   e   d       (
0007260    "   I   n   s   t   a   l   l   "       o   p   e   r   a   t
0007300    i   o   n   )       u   n   l   e   s   s       a   l   l    
0007320    r   e   q   u   i   r   e   d       f   i   l   e   s       a
0007340    r   e       a   l   l   o   c   a   t   e   d   .       I   n
0007360    s   t   a   l   l   a   t   i   o   n       i   n   v   o   l
0007400    v   e   s       s   t   o   r   i   n   g       t   h   e  \r
0007420    /   /       n   e   w       v   a   l   u   e   s       b   a
0007440    c   k       i   n   t   o       t   h   e       c   h   e   c
0007460    k   p   o   i   n   t       f   i   l   e   .  \r   /   /  \t
0007500    T   h   e       h   a   i   r       i   n       t   h   e    
0007520    C   h   a   n   g   e       f   u   n   c   t   i   o   n   s
0007540        i   s       d   u   e       t   o       t   h   e       d
0007560    e   s   i   r   e       t   o       u   s   e       t   h   e
0007600    m       b   o   t   h       t   o       r   e   f   l   e   c
0007620    t       c   u   r   r   e   n   t       v   a   l   u   e   s
0007640   \r   /   /       d   e   r   i   v   e   d       f   r   o   m
0007660        c   h   e   c   k   p   o   i   n   t       i   n   f   o
0007700    r   m   a   t   i   o   n       o   r       d   u   e       t
0007720    o       c   h   a   n   g   e   s       i   n       o   t   h
0007740    e   r       v   a   l   u   e   s       (   e   .   g   .   ,
0007760        p   r   i   n   t   e   r       c   h   o   i   c   e    
0010000    a   f   f   e   c   t   s       p   a   p   e   r  \r   /   /
0010020        s   i   z   e       a   n   d       o   r   i   e   n   t
0010040    a   t   i   o   n   ,       l   o   o   k   i   n   g       u
0010060    p       a       p   r   e   -   e   x   i   s   t   i   n   g
0010100        f   i   l   e       c   a   u   s   e   s       c   h   a
0010120    n   g   e   s       i   n       d   i   s   p   l   a   y    
0010140    o   f       s   i   z   e       a   n   d       d   i   s   k
0010160   \r   /   /       l   o   c   a   t   i   o   n   )   ,       a
0010200    n   d       t   o       u   s   e       t   h   e   m       t
0010220    o       r   e   s   p   o   n   d       t   o       k   e   y
0010240    b   o   a   r   d       i   n   p   u   t   .  \r  \f   /   /
0010260        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0010300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0010340    -   -   -   -   -   -   -  \r   l   e   t       S   p   r   u
0010360    c   e   I   n   s   t   a   l   l   (   d   o   I   n   s   t
0010400    a   l   l   ,       r   u   n   C   f   a   )       b   e  \r
0010420    /   /       -   -   -   -   -   -   -   -   -   -   -   -   -
0010440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0010500    -   -   -   -   -   -   -   -   -  \r  \r   /   /  \t   A   f
0010520    t   e   r       l   o   a   d   i   n   g       t   h   e    
0010540    R   A   M   ,       e   l   i   m   i   n   a   t   i   n   g
0010560        i   t   s       s   t   o   r   a   g   e   ,       a   n
0010600    d       s   e   t   t   i   n   g       u   p       m   e   m
0010620    o   r   y       s   t   r   u   c   t   u   r   e       v   a
0010640    r   i   a   b   l   e   s   ,  \r   /   /       c   r   e   a
0010660    t   e   ,       i   n   t   i   a   l   i   z   e   ,       a
0010700    n   d   /   o   r       v   a   l   i   d   a   t   e       t
0010720    h   e       C   h   e   c   k   p   o   i   n   t       f   i
0010740    l   e   ,       a   s       n   e   c   e   s   s   a   r   y
0010760    .           I   f       t   h   e       c   h   e   c   k   p
0011000    o   i   n   t       f   i   l   e       s   e   e   m   e   d
0011020   \r   /   /       i   n   v   a   l   i   d   ,       t   o   o
0011040        o   l   d       f   o   r       t   h   e       c   u   r
0011060    r   e   n   t       v   e   r   s   i   o   n       (   s   e
0011100    e       v   e   r   s   i   o   n       m   a   n   a   g   e
0011120    m   e   n   t       i   n       S   h   a   r   e   d   S   t
0011140    a   t   i   c   s       a   n   d       i   n  \r   /   /    
0011160    O   p   e   n   C   h   e   c   k   P   o   i   n   t   F   i
0011200    l   e   (   )   )   ,       o   r       h   a   d       n   o
0011220    t       e   x   i   s   t   e   d   ,       p   r   o   c   e
0011240    e   d       w   i   t   h       t   h   e       i   n   s   t
0011260    a   l   l   a   t   i   o   n       p   r   o   c   e   s   s
0011300    .       P   r   o   c   e   e   d       a   l   s   o   ,    
0011320    i   f  \r   /   /       d   o   I   n   s   t   a   l   l    
0011340    w   a   s       t   r   u   e   .       O   t   h   e   r   w
0011360    i   s   e   ,       r   e   t   u   r   n       a   n   d    
0011400    c   o   n   t   i   n   u   e       w   i   t   h       i   n
0011420    i   t   i   a   l   i   z   a   t   i   o   n   .  \r   /   /
0011440   \t   I   n   s   t   a   l   l   a   t   i   o   n       p   r
0011460    o   c   e   e   d   s       f   o   r       e   a   c   h    
0011500    o   f       t   h   e       m   e   n   u   s   ,       a   s
0011520        d   e   s   c   r   i   b   e   d       i   n       t   h
0011540    e       g   e   n   e   r   a   l       c   o   m   m   e   n
0011560    t   s   .       T   h   e       C   h   a   n   g   e   (   )
0011600   \r   /   /       f   u   n   c   t   i   o   n   ,       c   o
0011620    n   d   i   t   i   o   n   e   d       b   y       I   n   i
0011640    t   M   e   n   u   ,       s   i   m   p   l   y       i   n
0011660    v   o   k   e   s       t   h   e       a   p   p   r   o   p
0011700    r   i   a   t   e       C   h   a   n   g   e   .   .   .   (
0011720    )       f   u   n   c   t   i   o   n       f   o   r       t
0011740    h   e       l   i   s   t  \r   /   /       s   u   p   p   l
0011760    i   e   d       t   o       i   t   .       K   e   y   b   o
0012000    r   d       i   n   p   u   t       i   s       o   b   t   a
0012020    i   n   e   d       u   s   i   n   g       t   h   e       m
0012040    e   n   u       p   a   c   k   a   g   e       f   u   n   c
0012060    t   i   o   n       S   c   a   n   M   e   n   u   (   )   .
0012100   \r   /   /  \t   O   n   c   e       i   n   s   t   a   l   l
0012120    a   t   i   o   n       i   s       c   o   m   p   l   e   t
0012140    e   ,       S   p   r   u   c   e       f   i   n   i   s   h
0012160    e   s   .       ~   ~       C   o   n   s   i   d   e   r    
0012200    r   e   t   u   r   n   i   n   g       a   s       u   s   u
0012220    a   l       t   o       r   u   n       S   p   r   u   c   e
0012240        a   s  \r   /   /       r   e   q   u   e   s   t   e   d
0012260        i   n       t   h   e       c   o   m   m   a   n   d    
0012300    l   i   n   e   .  \r                   [  \r                
0012320    I   n   i   t   R   a   m   (   P   R   a   m   I   m   a   g
0012340    e   ,       O   r   b   i   t   R   M   R   )  \r            
0012360        O   v   e   r   l   a   y   T   o   p   =   L   o   a   d
0012400    R   a   m  \t   /   /   B   o   t   t   o   m       o   f    
0012420    f   r   e   e       s   t   o   r   a   g   e       f   o   r
0012440        F   S   I   n   i   t  \r                   l   e   t    
0012460    P   e   r   m   a   n   e   n   t   T   o   p       =       M
0012500    y   F   r   a   m   e   (   )   -   I   n   s   t   a   l   l
0012520    S   t   a   c   k   S   i   z   e  \r                   @   #
0012540    3   3   5       =       P   e   r   m   a   n   e   n   t   T
0012560    o   p   ;       P   e   r   m   a   n   e   n   t   B   o   t
0012600    t   o   m       =       P   e   r   m   a   n   e   n   t   T
0012620    o   p  \r                   s   t   a   t   u   s   O   f   3
0012640    1   s       =       S   t   a   t   u   s   O   f   3   1   s
0012660    (   )  \r                   /   /       (   i   f       a   l
0012700    l   o   w   e   d   &   n   e   c   c   .   )   ,       c   r
0012720    e   a   t   e       a   n   d       i   n   i   t   .       f
0012740    i   l   e       -   -       i   f       h   a   d       t   o
0012760        i   n   i   t   ,       i   n   s   t   a   l   l       i
0013000    n   d   e   p   e   n   d   e   n   t       o   f       r   e
0013020    q   u   e   s   t  \r  \r  \t   l   e   t       O   p   C   p
0013040    R   e   s   u   l   t       =       O   p   e   n   C   h   e
0013060    c   k   P   o   i   n   t   F   i   l   e   (   r   u   n   C
0013100    f   a   )  \r  \r  \t   M   a   k   e   V   a   l   i   d   S
0013120    p   r   u   c   e   F   i   l   e   (   l   v       a   l   l
0013140    o   c   L   o   g   F   i   l   e   ,       "   S   p   r   u
0013160    c   e   .   A   l   l   o   c   "   ,       3   0   ,       D
0013200    I   S   K   3   1   )  \r  \t   I   n   i   t   S   p   r   u
0013220    c   e   F   i   l   e   (   a   l   l   o   c   L   o   g   F
0013240    i   l   e   ,       4   ,       3   )  \r  \t   R   e   s   e
0013260    t   S   p   r   u   c   e   F   i   l   e   (   a   l   l   o
0013300    c   L   o   g   F   i   l   e   )  \r  \r  \t   /   /       l
0013320    e   t       s       =       O   p   e   n   F   i   l   e   F
0013340    r   o   m   F   p   (   a   l   l   o   c   L   o   g   F   i
0013360    l   e   >   >   S   P   r   u   c   e   F   i   l   e   .   m
0013400    a   p   >   >   F   M   .   f   p   )  \r  \r                
0013420    i   f       O   p   C   p   R   e   s   u   l   t       &    
0013440    n   o   t       d   o   I   n   s   t   a   l   l       r   e
0013460    t   u   r   n  \r  \r               l   e   t       p   N   a
0013500    m   e   T   a   b       =       t   a   b   l   e   [       0
0013520    ;       0   ;       0   ;       0   ;       0       ]  \r    
0013540            l   e   t       p   N   a   m   e   V   e   c       =
0013560        v   e   c       1   9  \r               f   o   r       i
0013600    =       0       t   o       4       d   o       p   N   a   m
0013620    e   T   a   b   !   i       =       p   N   a   m   e   V   e
0013640    c       +       i   *   4  \r               G   e   t   P   r
0013660    i   n   t   e   r   N   a   m   e   s   (   p   N   a   m   e
0013700    T   a   b   )  \r  \r                   /   /       I   n   i
0013720    t   i   a   l   i   z   e       M   e   n   u  \r            
0013740        m   e   n   u   S   t   r   e   a   m   ,       m   e   n
0013760    u   B   u   f       =       0   ,       0  \r                
0014000    /   /       *   *   *   *   *   *       s   e   e       d   i
0014020    s   c   u   s   s   i   o   n       a   b   o   u   t       u
0014040    n   u   s   e   d       c   o   d   e       a   b   o   v   e
0014060        -   -       g   i   v   e       s   o   m   e       s   p
0014100    a   c   e       b   a   c   k  \r                   M   o   r
0014120    e   L   o   w   ,       M   o   r   e   H   i   g   h       =
0014140        S   o   m   e   o   n   e   I   s   K   n   o   c   k   i
0014160    n   g   ,       V   a   l   i   d   a   t   e   S   p   r   u
0014200    c   e   F   i   l   e   -   5       /   /       *   *   *   *
0014220    *  \r                   I   n   i   t   M   e   n   u   (   M
0014240    e   n   u   P   a   r   a   m   s   H   e   l   p   ,       C
0014260    h   a   n   g   e   P   a   r   a   m   )       /   /       C
0014300    a   l   l   s       F   S   I   n   i   t   ,       a   l   l
0014320    o   c   a   t   e   s       m   e   n   u   s  \r            
0014340        S   e   l   e   c   t   (   h   d   1   )  \r            
0014360    f   o   r       i       =       0       t   o       m   a   x
0014400    P   r   i   n   t   e   r   D   e   v   i   c   e       d   o
0014420        [       P   u   t   B   o   x   T   e   m   p   l   a   t
0014440    e   (   p   t   D   o   v   e   r       +       i   ,       "
0014460    $   S   "   ,       p   N   a   m   e   T   a   b   !   i   )
0014500        ]  \r                   /   /       S   e   t       d   e
0014520    f   a   u   l   t       i   n   s   t   a   l   l   a   t   i
0014540    o   n       v   a   l   u   e   s       ~   ~       s   h   o
0014560    u   l   d       o   b   t   a   i   n       f   r   o   m    
0014600    d   e   v   i   c   e       t   y   p   e       -   -       n
0014620    o       a   c   c   e   s   s   ,       f   o   r       n   o
0014640    w  \r                   p   r   i   n   t   e   r   D   e   v
0014660    i   c   e       =       p   r   i   n   t   e   r   D   o   v
0014700    e   r  \r   /   /  \t       N   o   w   ,       s   e   t    
0014720    u   p       a       t   a   b   l   e       o   f       d   e
0014740    f   a   u   l   t       p   r   i   n   t   e   r       a   t
0014760    t   r   i   b   u   t   e   s       f   o   r       e   a   c
0015000    h       t   y   p   e       o   f       p   r   i   n   t   e
0015020    r  \r  \t   l   e   t       d   e   f   a   u   l   t   T   a
0015040    b       =       F   S   G   e   t   X   (   (   m   a   x   P
0015060    r   i   n   t   e   r   D   e   v   i   c   e   +   1   )   *
0015100    l   e   n   P   r   A   t   t   r   )  \r  \t   l   e   t    
0015120    p       =       d   e   f   a   u   l   t   T   a   b  \r  \t
0015140    C   h   e   c   k   P   r   A   t   t   r       =       d   e
0015160    f   a   u   l   t   T   a   b       /   /       m   a   y    
0015200    b   e       o   v   e   r   w   r   i   t   t   e   n       b
0015220    y       R   e   s   t   o   r   e   F   r   o   m   C   h   e
0015240    c   k   p   o   i   n   t       b   e   l   o   w  \r  \t   f
0015260    o   r       i       =       0       t   o       m   a   x   P
0015300    r   i   n   t   e   r   D   e   v   i   c   e       d   o  \r
0015320   \t  \t   [  \r  \t  \t   p   >   >   P   r   i   n   t   e   r
0015340    A   t   t   r   i   b   u   t   e   s   .   C   a   p   a   b
0015360    i   l   i   t   i   e   s       =       (   t   a   b   l   e
0015400    [       D   o   v   e   r   D   e   f   a   u   l   t   ;    
0015420    P   e   n   g   u   i   n   D   e   f   a   u   l   t   ;  \r
0015440        S   e   q   u   o   i   a   D   e   f   a   u   l   t   ;
0015460        P   i   m   l   i   c   o   D   e   f   a   u   l   t   ;
0015500        P   u   f   f   i   n   D   e   f   a   u   l   t       ]
0015520    )   !   i  \r      \t  \t   p   >   >   P   r   i   n   t   e
0015540    r   A   t   t   r   i   b   u   t   e   s   .   P   a   p   e
0015560    r   D   i   m   e   n   s   i   o   n   B       =       (   t
0015600    a   b   l   e   [       1   0   6   ;       1   0   6   ;    
0015620    1   0   6   ;       8   5   ;       8   5       ]   )   !   i
0015640   \r      \t  \t   p   >   >   P   r   i   n   t   e   r   A   t
0015660    t   r   i   b   u   t   e   s   .   P   a   p   e   r   D   i
0015700    m   e   n   s   i   o   n   S       =       (   t   a   b   l
0015720    e   [       8   5   ;       8   5   ;       8   5   ;       1
0015740    1   0   ;       1   1   0       ]   )   !   i  \r      \t  \t
0015760    p   >   >   P   r   i   n   t   e   r   A   t   t   r   i   b
0016000    u   t   e   s   .   P   a   p   e   r   S   p   e   e   d   I
0016020    n   c   h   e   s       =       (   t   a   b   l   e   [    
0016040    1   0   2   0   ;       1   1   0   0   ;       3   4   0   ;
0016060        4   0   0   ;       4   0   0       ]   )   !   i  \r    
0016100   \t  \t   p   >   >   P   r   i   n   t   e   r   A   t   t   r
0016120    i   b   u   t   e   s   .   S   c   a   n   L   e   n   g   t
0016140    h   I   n   c   h   e   s       =       (   t   a   b   l   e
0016160    [       1   1   7   ;       1   2   1   ;       1   1   2   ;
0016200        9   5   ;       1   1   8       ]   )   !   i  \r      \t
0016220   \t   p   >   >   P   r   i   n   t   e   r   A   t   t   r   i
0016240    b   u   t   e   s   .   L   a   n   d   s   c   a   p   e   D
0016260    e   v   i   c   e       =       (   t   a   b   l   e   [    
0016300    -   1   ;       -   1   ;       -   1   ;       0   ;       0
0016320        ]   )   !   i  \r      \t  \t   p   >   >   P   r   i   n
0016340    t   e   r   A   t   t   r   i   b   u   t   e   s   .   p   r
0016360    i   n   t   e   r   F   o   r   w   a   r   d       =       (
0016400    t   a   b   l   e   [       0   ;       0   ;       0   ;    
0016420    -   1   ;       -   1       ]   )   !   i  \r      \t  \t   p
0016440    >   >   P   r   i   n   t   e   r   A   t   t   r   i   b   u
0016460    t   e   s   .   b   r   e   a   k   P   a   g   e       =    
0016500    (   t   a   b   l   e   [       -   1   ;       -   1   ;    
0016520    -   1   ;       -   1   ;       -   1       ]   )   !   i  \r
0016540       \t  \t   p   >   >   P   r   i   n   t   e   r   A   t   t
0016560    r   i   b   u   t   e   s   .   B   i   t   M   a   r   g   i
0016600    n   A   d   j   u   s   t       =       (   t   a   b   l   e
0016620    [       1   2   0   ;       2   2   0   ;       1   0   1   ;
0016640        1   0   2   ;       6   3   0       ]   )   !   i  \r    
0016660   \t  \t   p   >   >   P   r   i   n   t   e   r   A   t   t   r
0016700    i   b   u   t   e   s   .   S   c   a   n   M   a   r   g   i
0016720    n   A   d   j   u   s   t       =       (   t   a   b   l   e
0016740    [       1   9   0   ;       1   7   3   0   ;       1   0   4
0016760    ;       1   0   5   ;       5   2   8       ]   )   !   i  \r
0017000       \t  \t   p   >   >   P   r   i   n   t   e   r   A   t   t
0017020    r   i   b   u   t   e   s   .   D   u   t   y   C   y   c   l
0017040    e       =       (   t   a   b   l   e   [       9   0   ;    
0017060    9   8   ;       9   0   ;       8   7   ;       9   9       ]
0017100    )   !   i  \r      \t  \t   p   >   >   P   r   i   n   t   e
0017120    r   A   t   t   r   i   b   u   t   e   s   .   F   a   c   e
0017140    t   s       =       (   t   a   b   l   e   [       3   2   ;
0017160        2   2   ;       3   6   ;       1   2   ;       2   2    
0017200    ]   )   !   i  \r      \t  \t   p   >   >   P   r   i   n   t
0017220    e   r   A   t   t   r   i   b   u   t   e   s   .   P   o   l
0017240    y   g   o   n   R   a   t   i   o       =       (   t   a   b
0017260    l   e   [       2   4   ;       2   4   ;       2   4   ;    
0017300    2   4   ;       2   4       ]   )   !   i      \r  \t  \t   p
0017320    >   >   P   r   i   n   t   e   r   A   t   t   r   i   b   u
0017340    t   e   s   .   N   u   m   B   i   n   s       =       (   t
0017360    a   b   l   e   [       1   ;       2   1   ;       1   ;    
0017400    1   ;       1       ]   )   !   i  \r  \t   p       =       p
0017420        +       l   e   n   P   r   A   t   t   r  \r  \t  \t   ]
0017440   \r  \t   S   e   t   P   r   i   n   t   e   r   P   a   r   m
0017460    s   (   )  \t   /   /   m   o   v   e   s       p   r   i   n
0017500    t   e   r   D   e   v   i   c   e       s   e   t       i   n
0017520    t   o       s   t   a   t   i   c   s  \r  \t   R   e   s   o
0017540    l   u   t   i   o   n   B   ,       R   e   s   o   l   u   t
0017560    i   o   n   S       =       3   8   4   0   ,       3   8   4
0017600    0  \r                   p   r   i   n   t   e   r   N   a   m
0017620    e       =       U   s   e   r   N   a   m   e  \r            
0017640        D   e   b   u   g   S   y   s   t   e   m       =       #
0017660    4   0  \t   /   /       i   f       /   D   ,       d   o   n
0017700    '   t       a   c   t   u   a   l   l   y       r   u   n    
0017720    O   r   b   i   t  \r                   R   e   s   t   o   r
0017740    e   F   r   o   m   C   h   e   c   k   P   o   i   n   t   (
0017760    L   E   V   S   h   a   r   e   d   I   n   s   t   S   t   a
0020000    t   i   c   s   ,       L   E   V   I   n   s   t   a   l   l
0020020    a   t   i   o   n   S   t   a   t   i   c   s   ,       0   ,
0020040        t   r   u   e   )  \r                   l   e   t       d
0020060    e   v       =       s   e   l   e   c   t   o   n       p   r
0020100    i   n   t   e   r   D   e   v   i   c   e       i   n   t   o
0020120        [       d   e   f   a   u   l   t   :       0  \r  \t   c
0020140    a   s   e       p   r   i   n   t   e   r   D   o   v   e   r
0020160    :       p   t   D   o   v   e   r   ;       c   a   s   e    
0020200    p   r   i   n   t   e   r   P   e   n   g   u   i   n   :    
0020220    p   t   P   e   n   g   u   i   n   ;       c   a   s   e    
0020240    p   r   i   n   t   e   r   S   e   q   u   o   i   a   :    
0020260    p   t   S   e   q   u   o   i   a      \r  \t   c   a   s   e
0020300        p   r   i   n   t   e   r   P   i   m   l   i   c   o   :
0020320        p   t   P   i   m   l   i   c   o   ;       c   a   s   e
0020340        p   r   i   n   t   e   r   P   u   f   f   i   n   :    
0020360    p   t   P   u   f   f   i   n       ]  \r                   C
0020400    h   a   n   g   e   P   a   r   a   m   (   d   e   v   )  \r
0020420                    C   h   a   n   g   e   (   t   a   b   l   e
0020440        [       p   s   S   ;       p   s   B   ;       r   S   ;
0020460        r   B   ;       m   a   S   ;       m   a   B   ;       l
0020500    l   S   ;       p   s   ;       p   n   ;       d   b   g   ;
0020520        p   m   ;       f   p   ;       b   p   ;       0       ]
0020540        )  \r  \r                   /   /       M   a   i   n    
0020560    p   a   r   a   m   e   t   e   r       i   n   s   t   a   l
0020600    l   a   t   i   o   n       l   o   o   p  \r                
0020620    w   h   i   l   e       C   h   a   n   g   e   P   a   r   a
0020640    m   (   S   c   a   n   M   e   n   u   (   m   e   n   u   )
0020660    ,       t   r   u   e   )       l   o   o   p       /   /    
0020700    m   a   y       f   i   n   i   s   h       i   n   s   t   e
0020720    a   d       o   f       r   e   t   u   r   n   i   n   g  \r
0020740                    S   a   v   e   P   r   i   n   t   e   r   P
0020760    a   r   m   s   (   )           /   /   m   o   v   e   s    
0021000    l   a   s   t       c   h   a   n   g   e   s       i   n   t
0021020    o       t   a   b   l   e       f   o   r       p   r   i   n
0021040    t   e   r   D   e   v   i   c   e  \r                   C   h
0021060    e   c   k   P   o   i   n   t   (   L   E   V   S   h   a   r
0021100    e   d   I   n   s   t   S   t   a   t   i   c   s   ,       L
0021120    E   V   I   n   s   t   a   l   l   a   t   i   o   n   S   t
0021140    a   t   i   c   s   )  \r                   F   S   P   u   t
0021160    (   d   e   f   a   u   l   t   T   a   b   )  \r  \r        
0021200            /   /       F   i   l   e       C   o   n   f   i   g
0021220    u   r   a   t   i   o   n   s  \r                   I   n   i
0021240    t   M   e   n   u   (   M   e   n   u   F   i   l   e   s   H
0021260    e   l   p   ,       C   h   a   n   g   e   C   o   n   f   i
0021300    g   )  \r                   R   e   s   t   o   r   e   F   r
0021320    o   m   C   h   e   c   k   P   o   i   n   t   (   L   E   V
0021340    S   h   a   r   e   d   I   n   s   t   S   t   a   t   i   c
0021360    s   ,       L   E   V   I   n   s   t   a   l   l   a   t   i
0021400    o   n   S   t   a   t   i   c   s   ,       0   ,       t   r
0021420    u   e   )  \r                   S   e   l   e   c   t   (   h
0021440    d   2   )  \r                   l   e   t       v       =    
0021460    t   a   b   l   e       [       f   n   E   r   r   o   r   s
0021500    ;       f   d   E   r   r   o   r   s   ;       D   I   S   K
0021520    3   1   ;       f   s   E   r   r   o   r   s   ;       -   1
0021540        ]   ;       e   r   r   o   r   S   p   e   c   s       =
0021560        v  \r                   l   e   t       v       =       t
0021600    a   b   l   e       [       f   n   F   o   n   t   s   ;    
0021620    f   d   F   o   n   t   s   ;       -   1   ;       f   s   F
0021640    o   n   t   s   ;       -   1       ]   ;       f   o   n   t
0021660    S   p   e   c   s       =       v  \r                   l   e
0021700    t       v       =       t   a   b   l   e       [       f   n
0021720    S   p   o   o   l   ;       f   d   S   p   o   o   l   ;    
0021740    -   1   ;       f   s   S   p   o   o   l   ;       -   1    
0021760    ]   ;       s   p   o   o   l   S   p   e   c   s       =    
0022000    v  \r                   l   e   t       v       =       t   a
0022020    b   l   e       [       f   n   B   a   n   d   s   ;       f
0022040    d   B   a   n   d   s   ;       -   1   ;       f   s   B   a
0022060    n   d   s   ;       -   1       ]   ;       b   a   n   d   S
0022100    p   e   c   s       =       v  \r                   C   h   a
0022120    n   g   e   (   t   a   b   l   e       [       d   c   M   3
0022140    1   ;       d   c   T   8   0   ;       #   4   0   2   ;    
0022160    0       ]   )  \r                   o   k   T   o   I   n   s
0022200    t   a   l   l       =       1   ;       O   K   T   o   I   n
0022220    s   t   a   l   l   (   )  \r  \r                   w   h   i
0022240    l   e       C   h   a   n   g   e   C   o   n   f   i   g   (
0022260    S   c   a   n   M   e   n   u   (   m   e   n   u   )   ,    
0022300    t   r   u   e   )       l   o   o   p       /   /       m   a
0022320    y       f   i   n   i   s   h       i   n   s   t   e   a   d
0022340        o   f       r   e   t   u   r   n   i   n   g  \r        
0022360           \r                   s   p   r   u   c   e   F   P   R
0022400    D       =       C   r   e   a   t   e   F   P   R   D   (   "
0022420    S   p   r   u   c   e   .   B   o   o   t   "   ,       t   r
0022440    u   e   )       /   /       C   o   m   p   u   t   e       F
0022460    P   R   D   s       (   I   n   L   d   ,       O   u   t   L
0022500    d       a   r   g   u   m   e   n   t   s   )       f   o   r
0022520        s   e   l   f       a   n   d       S   p   r   u   c   e
0022540        p   r   i   n   t   e   r  \r                   u   n   l
0022560    e   s   s       s   p   r   u   c   e   F   P   R   D       d
0022600    o       S   p   r   u   c   e   E   r   r   o   r   (   2   5
0022620    7   )  \r  \r                   /   /       C   o   m   p   u
0022640    t   e       m   a   x   Q   u   e   u   e   d       f   r   o
0022660    m       L   E   V   R   u   n   D   o   c   s       c   h   e
0022700    c   k   p   o   i   n   t       c   a   p   a   c   i   t   y
0022720   \r                   l   e   t       c   h   e   c   k   S   i
0022740    z   e       =       L   e   v   e   l   P   o   s   (   0   ,
0022760        L   E   V   R   u   n   D   o   c   s   ,       t   r   u
0023000    e   )       -       L   e   v   e   l   P   o   s   (   0   ,
0023020        L   E   V   R   u   n   D   o   c   s   )  \r            
0023040        l   e   t       e   n   t   r   y   S   i   z   e       =
0023060        2   *   L   e   n   C   H   e   c   o   r   d       +    
0023100    l   e   n   D   o   c   G       +       l   e   n   S   P   r
0023120    u   c   e   F   i   l   e  \r                   m   a   x   Q
0023140    u   e   u   e   d       =       c   h   e   c   k   S   i   z
0023160    e   /   e   n   t   r   y   S   i   z   e  \r                
0023200    m   a   x   Q   u   e   u   e   d       =       m   a   x   Q
0023220    u   e   u   e   d       -       (   m   a   x   Q   u   e   u
0023240    e   d       r   s   h   i   f   t       3   )       /   /    
0023260    7   /   8   ,       f   o   r       s   a   f   e   t   y  \r
0023300                    /   /       A   n   y       o   t   h   e   r
0023320        s   t   a   t   e       t   o       b   e       i   n   i
0023340    t   i   a   l   i   z   e   d       g   o   e   s       h   e
0023360    r   e   .   .   .   .   .  \r                   C   h   e   c
0023400    k   P   o   i   n   t   (   L   E   V   S   h   a   r   e   d
0023420    I   n   s   t   S   t   a   t   i   c   s   ,       L   E   V
0023440    I   n   s   t   a   l   l   a   t   i   o   n   S   t   a   t
0023460    i   c   s   )  \r                   f   i   n   i   s   h  \r
0023500                    ]  \r  \r   /   /       -   -   -   -   -   -
0023520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0023600   \r   a   n   d       C   h   a   n   g   e   P   a   r   a   m
0023620    (   b   o   x   I   d   ,       r   e   a   d   F   r   o   m
0023640    K   e   y   b   o   a   r   d   ;       n   u   m   a   r   g
0023660    s       n   a   )       =       v   a   l   o   f  \r   /   /
0023700        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0023720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0023760    -   -   -   -   -   -   -  \r  \r   /   /  \t   I   n   s   t
0024000    a   l   l   a   t   i   o   n       o   f       p   a   r   a
0024020    m   e   t   e   r   s   ,       b   a   s   e   d       o   n
0024040        P   a   r   a   m   s       m   e   n   u   .       C   o
0024060    m   p   a   n   i   o   n       t   o       C   h   a   n   g
0024100    e   C   o   n   f   i   g   ,       b   e   l   o   w   .  \r
0024120    /   /  \t   r   e   a   d   F   r   o   m   K   e   y   b   o
0024140    a   r   d   ,       i   f       t   r   u   e   ,       i   d
0024160    e   n   t   i   f   i   e   s       t   h   e       b   o   x
0024200    I   d       (   m   e   n   u       b   o   x       i   n   d
0024220    e   x   )       a   s       t   h   e       i   n   d   e   p
0024240    e   n   d   e   n   t       v   a   r   i   a   b   l   e    
0024260    i   n  \r   /   /       t   h   e       c   h   a   n   g   e
0024300        p   r   o   c   e   s   s   ;       d   e   p   e   n   d
0024320    e   n   t       v   a   l   u   e   s       w   i   l   l    
0024340    b   e       c   h   a   n   g   e   d       v   i   a       r
0024360    e   c   u   r   s   i   v   e       c   a   l   l   s       w
0024400    i   t   h       r   e   a   d   F   r   o   m   K   e   y   b
0024420    o   a   r   d       f   a   l   s   e   .  \r   /   /       r
0024440    e   a   d   F   r   o   m   K   e   y   b   o   a   r   d    
0024460    a   l   s   o       r   e   q   u   e   s   t   s   ,       f
0024500    o   r       n   u   m   e   r   i   c   a   l       a   n   d
0024520        s   t   r   i   n   g       b   o   x   e   s   ,       t
0024540    h   a   t       t   h   e       n   e   w       v   a   l   u
0024560    e   s       b   e       r   e   a   d       u   s   i   n   g
0024600        G   e   t   P   a   r   a   m   A   r   g   (   )   .  \r
0024620    /   /           C   o   n   s   u   l   t       S   p   r   u
0024640    c   e   P   a   r   a   m   s   N   a   m   e   s   .   d    
0024660    a   n   d       t   h   e       p   i   c   t   u   r   e   ,
0024700        v   i   a       M   e   n   u   E   d   i   t   ,       f
0024720    o   r       t   h   e       m   e   a   n   i   n   g   s    
0024740    o   f       c   a   s   e       i   n   d   i   c   e   s   .
0024760   \r   /   /       C   o   n   s   u   l   t       t   h   e    
0025000    m   e   n   u       p   a   c   k   a   g   e       f   o   r
0025020        m   e   n   u   -   r   e   l   a   t   e   d       f   u
0025040    n   c   t   i   o   n   s       n   o   t       f   o   u   n
0025060    d       i   n       t   h   e       u   t   i   l   i   t   i
0025100    e   s       a   t       t   h   e       e   n   d       o   f
0025120        t   h   i   s       m   o   d   u   l   e   .  \r   /   /
0025140   \t   W   h   e   n       t   h   e       p   r   i   n   t   e
0025160    r       s   e   l   e   c   t   i   o   n       i   s       c
0025200    h   a   n   g   e   d   ,       a       s   e   t       o   f
0025220        s   y   s   t   e   m   -   p   r   o   v   i   d   e   d
0025240        d   e   f   a   u   l   t   s       f   i   l   l   s    
0025260    a       n   u   m   b   e   r       o   f       r   e   l   a
0025300    t   e   d  \r   /   /       b   o   x   e   s   .       ~   ~
0025320        C   o   n   s   i   d   e   r       r   e   m   e   m   b
0025340    e   r   i   n   g       t   h   e       p   r   e   v   i   o
0025360    u   s   l   y   -   i   n   s   t   a   l   l   e   d       v
0025400    a   l   u   e   s       f   o   r       e   a   c   h       p
0025420    r   i   n   t   e   r       t   y   p   e   .  \r   /   /  \t
0025440    T   w   o       m   e   n   u       i   t   e   m   s       a
0025460    r   e       c   o   m   m   a   n   d   s   :       "   Q   u
0025500    i   t   "       (   r   e   t   u   r   n       t   o       e
0025520    x   e   c   )       a   n   d       "   I   n   s   t   a   l
0025540    l       F   i   l   e   s   "       (   g   o       o   n    
0025560    t   o       n   e   x   t       m   e   n   u   .   )  \r    
0025600                [  \r                   i   f       n   a   <   2
0025620        t   h   e   n       r   e   a   d   F   r   o   m   K   e
0025640    y   b   o   a   r   d       =       f   a   l   s   e  \r    
0025660                l   e   t       s   t   a   t   A   d   r   ,    
0025700    n   a   m   e   ,       s   p   e   c   s       =       n   i
0025720    l   ,       n   i   l   ,       n   i   l  \r                
0025740    s   w   i   t   c   h   o   n       b   o   x   I   d       i
0025760    n   t   o  \r  \t   [  \r  \t   /   /       P   r   i   n   t
0026000    e   r       T   y   p   e   :  \r  \t   c   a   s   e       p
0026020    t   D   o   v   e   r   :       c   a   s   e       p   t   P
0026040    i   m   l   i   c   o   :       c   a   s   e       p   t   S
0026060    e   q   u   o   i   a   :  \r  \t   c   a   s   e       p   t
0026100    P   u   f   f   i   n   :       c   a   s   e       p   t   P
0026120    e   n   g   u   i   n   :  \r  \t                   [       c
0026140    o   m   p   i   l   e   i   f       p   t   P   e   n   g   u
0026160    i   n   -   p   t   D   o   v   e   r       n   e       4    
0026200    t   h   e   n       [       M   e   n   u   A   l   l   o   c
0026220    a   t   i   o   n   E   r   r   o   r   (   )       ]  \r  \t
0026240                    f   o   r       i       =       p   t   D   o
0026260    v   e   r       t   o       p   t   P   e   n   g   u   i   n
0026300        d   o       S   e   l   e   c   t   (   i   )   ;       D
0026320    e   s   e   l   e   c   t   (   b   o   x   I   d   )  \r  \t
0026340                    i   f       r   e   a   d   F   r   o   m   K
0026360    e   y   b   o   a   r   d       d   o       S   a   v   e   P
0026400    r   i   n   t   e   r   P   a   r   m   s   (   )           /
0026420    /   s   a   v   e       o   l   d       v   a   l   u   e   s
0026440   \r  \t                   l   e   t       d   e   v   I   n   d
0026460    e   x       =       b   o   x   I   d   -   p   t   D   o   v
0026500    e   r  \r  \t                   /   /       P   e   n   g   u
0026520    i   n       a   c   t   s       l   i   k   e       D   o   v
0026540    e   r   ,       f   o   r       n   o   w  \r  \t            
0026560        l   e   t       d   e   v   T   a   b       =       t   a
0026600    b   l   e       [       p   r   i   n   t   e   r   D   o   v
0026620    e   r   ;       p   r   i   n   t   e   r   P   i   m   l   i
0026640    c   o   ;       p   r   i   n   t   e   r   S   e   q   u   o
0026660    i   a   ;       p   r   i   n   t   e   r   P   u   f   f   i
0026700    n   ;       p   r   i   n   t   e   r   P   e   n   g   u   i
0026720    n       ]  \r  \t                   p   r   i   n   t   e   r
0026740    D   e   v   i   c   e       =       d   e   v   T   a   b   !
0026760    d   e   v   I   n   d   e   x  \r  \t                   S   e
0027000    t   P   r   i   n   t   e   r   P   a   r   m   s   (   )    
0027020        /   /           m   o   v   e       i   n       a   t   t
0027040    r   i   b   u   t   e   s       f   o   r       n   e   w    
0027060    d   e   v   i   c   e  \r  \t                   C   h   a   n
0027100    g   e   (   t   a   b   l   e   [       p   s   B   ;       p
0027120    s   S   ;       m   a   S   ;       m   a   B   ;       l   l
0027140    S   ;       p   s   ;       p   m   ;       f   p   ;       b
0027160    p   ;       0       ]   )          \r  \t                   e
0027200    n   d   c   a   s   e  \r  \t                   ]  \r  \t   /
0027220    /       P   r   i   n   t   i   n   g       P   a   r   a   m
0027240    e   t   e   r   s  \r  \t   c   a   s   e       p   s   B   :
0027260        c   a   s   e       p   s   S   :       c   a   s   e    
0027300    r   B   :       c   a   s   e       r   S   :       c   a   s
0027320    e       l   l   S   :       c   a   s   e       m   a   S   :
0027340        c   a   s   e       m   a   B   :       c   a   s   e    
0027360    p   s   :       c   a   s   e       d   b   g   :       c   a
0027400    s   e       p   n   :      \r  \t  \t   G   e   t   P   a   r
0027420    a   m   A   r   g   (   b   o   x   I   d   ,       r   e   a
0027440    d   F   r   o   m   K   e   y   b   o   a   r   d   )   ;    
0027460    e   n   d   c   a   s   e  \r  \t   /   /       P   r   i   n
0027500    t   i   n   g       O   p   t   i   o   n   s   :  \r  \t   c
0027520    a   s   e       p   m   :       L   a   n   d   s   c   a   p
0027540    e   D   e   v   i   c   e       =       L   a   n   d   s   c
0027560    a   p   e   D   e   v   i   c   e       x   o   r       r   e
0027600    a   d   F   r   o   m   K   e   y   b   o   a   r   d  \r  \t
0027620   \t   P   u   t   B   o   x   T   e   m   p   l   a   t   e   (
0027640    b   o   x   I   d   ,       "   $   S   "   ,       L   a   n
0027660    d   s   c   a   p   e   D   e   v   i   c   e   ?       "   L
0027700    a   n   d   s   c   a   p   e   "   ,       "   P   o   r   t
0027720    r   a   i   t   "   )   ;       e   n   d   c   a   s   e  \r
0027740   \t   c   a   s   e       f   p   :       p   r   i   n   t   e
0027760    r   F   o   r   w   a   r   d       =       p   r   i   n   t
0030000    e   r   F   o   r   w   a   r   d       x   o   r       r   e
0030020    a   d   F   r   o   m   K   e   y   b   o   a   r   d  \r  \t
0030040   \t   P   u   t   B   o   x   T   e   m   p   l   a   t   e   (
0030060    b   o   x   I   d   ,       "   $   S       P   a   g   e    
0030100    F   i   r   s   t   "   ,       p   r   i   n   t   e   r   F
0030120    o   r   w   a   r   d   ?       "   F   i   r   s   t   "   ,
0030140        "   L   a   s   t   "   )   ;       e   n   d   c   a   s
0030160    e  \r  \t   c   a   s   e       b   p   :  \r  \t  \t   b   r
0030200    e   a   k   P   a   g   e       =       b   r   e   a   k   P
0030220    a   g   e       x   o   r       r   e   a   d   F   r   o   m
0030240    K   e   y   b   o   a   r   d  \r  \t  \t   P   u   t   B   o
0030260    x   T   e   m   p   l   a   t   e   (   b   o   x   I   d   ,
0030300        "   $   S   B   r   e   a   k       P   a   g   e   "   ,
0030320        b   r   e   a   k   P   a   g   e   ?       "   "   ,    
0030340    "   N   o       "   )   ;       e   n   d   c   a   s   e  \r
0030360   \r  \t   /   /       C   o   m   m   a   n   d   s   :  \r  \t
0030400    c   a   s   e       c   P   a   r   a   m   Q   u   i   t   :
0030420        I   n   i   t   M   e   n   u   (   0   )   ;       f   i
0030440    n   i   s   h  \r  \t   c   a   s   e       c   P   a   r   a
0030460    m   I   n   s   t   a   l   l   :       r   e   s   u   l   t
0030500    i   s       f   a   l   s   e       /   /       g   o       o
0030520    n  \r  \r  \t   d   e   f   a   u   l   t   :       i   f    
0030540    b   o   x   I   d       t   h   e   n       D   e   s   e   l
0030560    e   c   t   (   b   o   x   I   d   )       /   /       i   g
0030600    n   o   r   e  \r  \t   ]  \r                   r   e   s   u
0030620    l   t   i   s       t   r   u   e       /   /       g   o    
0030640    o   n  \r                   ]  \r  \r  \f  \r   /   /       -
0030660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0030740    -   -   -   -   -  \r   a   n   d       G   e   t   P   a   r
0030760    a   m   A   r   g   (   b   o   x   I   d   ,       r   e   a
0031000    d   F   r   o   m   K   e   y   b   o   a   r   d   )       b
0031020    e  \r   /   /       -   -   -   -   -   -   -   -   -   -   -
0031040    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0031100    -   -   -   -   -   -   -   -   -   -   -  \r  \r   /   /  \t
0031120    U   s   e       r   o   u   t   i   n   e   s       f   r   o
0031140    m       u   t   i   l   i   t   i   e   s       b   e   l   o
0031160    w       a   n   d       f   r   o   m       m   e   n   u    
0031200    p   a   c   k   a   g   e       t   o       o   b   t   a   i
0031220    n       (   i   f       r   e   a   d   F   r   o   m   K   e
0031240    y   b   o   a   r   d   )       a   n   d  \r   /   /       c
0031260    o   r   r   e   c   t   l   y       d   i   s   p   l   a   y
0031300        c   h   o   i   c   e   s       f   o   r       n   u   m
0031320    e   r   i   c   a   l       o   r       s   t   r   i   n   g
0031340        b   o   x   e   s   .  \r                   [  \r        
0031360            l   e   t       s   t   r       =       r   e   a   d
0031400    F   r   o   m   K   e   y   b   o   a   r   d   ?       G   e
0031420    t   S   t   r   i   n   g   (   B   o   x   (   b   o   x   I
0031440    d   )   ,       0   ,       S   p   r   u   c   e   Z   o   n
0031460    e   )   ,       0  \r                   l   e   t       s   t
0031500    a   t   A   d   r   ,       p   l   a   c   e   s   ,       i
0031520    s   O   c   t   ,       s   p   e   c   s       =       n   i
0031540    l   ,       0   ,       f   a   l   s   e   ,       n   i   l
0031560   \r                   s   w   i   t   c   h   o   n       b   o
0031600    x   I   d       i   n   t   o  \r  \t   [  \r  \r  \t   /   /
0031620        n   u   m   b   e   r   s   :  \r  \t   c   a   s   e    
0031640    p   s   B   :       s   t   a   t   A   d   r       =       l
0031660    v       P   a   p   e   r   D   i   m   e   n   s   i   o   n
0031700    B   ;       d   o   c   a   s   e       #   4   0   1       /
0031720    /       *   1   0  \r  \t   c   a   s   e       p   s   S   :
0031740        s   t   a   t   A   d   r       =       l   v       P   a
0031760    p   e   r   D   i   m   e   n   s   i   o   n   S   ;       d
0032000    o   c   a   s   e       #   4   0   1      \r  \t   c   a   s
0032020    e       r   B   :       s   t   a   t   A   d   r       =    
0032040    l   v       R   e   s   o   l   u   t   i   o   n   B   ;    
0032060    d   o   c   a   s   e       #   4   0   1      \r  \t   c   a
0032100    s   e       r   S   :       s   t   a   t   A   d   r       =
0032120        l   v       R   e   s   o   l   u   t   i   o   n   S   ;
0032140        d   o   c   a   s   e       #   4   0   1      \r  \t   c
0032160    a   s   e       l   l   S   :       s   t   a   t   A   d   r
0032200        =       l   v       S   c   a   n   L   e   n   g   t   h
0032220    I   n   c   h   e   s   ;       d   o   c   a   s   e       #
0032240    4   0   1  \r  \t   c   a   s   e       p   s   :       s   t
0032260    a   t   A   d   r       =       l   v       P   a   p   e   r
0032300    S   p   e   e   d   I   n   c   h   e   s   ;       d   o   c
0032320    a   s   e       #   4   0   2       /   /       *   1   0   0
0032340   \r  \t   c   a   s   e       d   b   g   :       s   t   a   t
0032360    A   d   r       =       l   v       D   e   b   u   g   S   y
0032400    s   t   e   m   ;       i   s   O   c   t       =       t   r
0032420    u   e   ;       d   o   c   a   s   e       #   4   0   0    
0032440    /   /       *   1  \r  \t   c   a   s   e       m   a   S   :
0032460        s   t   a   t   A   d   r       =       l   v       S   c
0032500    a   n   M   a   r   g   i   n   A   d   j   u   s   t   ;    
0032520    d   o   c   a   s   e       #   4   0   0  \r  \t   c   a   s
0032540    e       m   a   B   :       s   t   a   t   A   d   r       =
0032560        l   v       B   i   t   M   a   r   g   i   n   A   d   j
0032600    u   s   t   ;       d   o   c   a   s   e       #   4   0   0
0032620   \r  \t   c   a   s   e       #   4   0   2   :       p   l   a
0032640    c   e   s       =       1  \r  \t   c   a   s   e       #   4
0032660    0   1   :       p   l   a   c   e   s       =       p   l   a
0032700    c   e   s   +   1  \r  \t   c   a   s   e       #   4   0   0
0032720    :  \r  \t  \t   i   f       r   e   a   d   F   r   o   m   K
0032740    e   y   b   o   a   r   d       t   h   e   n       @   s   t
0032760    a   t   A   d   r       =       G   e   t   N   u   m   b   e
0033000    r   (   s   t   r   ,       p   l   a   c   e   s   )  \r  \t
0033020   \t   u   n   l   e   s   s       @   s   t   a   t   A   d   r
0033040        d   o       @   s   t   a   t   A   d   r       =       1
0033060                /   /       p   r   e   v   e   n   t       s   o
0033100    m   e       r   i   d   i   c   u   l   o   u   s       s   t
0033120    u   f   f  \r  \t  \t   P   u   t   N   u   m   b   e   r   (
0033140    b   o   x   I   d   ,       @   s   t   a   t   A   d   r   ,
0033160        p   l   a   c   e   s   ,       i   s   O   c   t   )  \r
0033200   \t  \t   e   n   d   c   a   s   e  \r  \t   /   /       S   t
0033220    r   i   n   g   s  \r  \t   c   a   s   e       p   n   :    
0033240    i   f       r   e   a   d   F   r   o   m   K   e   y   b   o
0033260    a   r   d       t   h   e   n       [       p   r   i   n   t
0033300    e   r   N   a   m   e       =       s   t   r   ;       s   t
0033320    r       =       0       ]  \r  \t  \t       P   u   t   B   o
0033340    x   T   e   m   p   l   a   t   e   (   p   n   ,       "   $
0033360    S   "   ,       p   r   i   n   t   e   r   N   a   m   e   )
0033400    ;       e   n   d   c   a   s   e  \r  \r  \t   d   e   f   a
0033420    u   l   t   :       S   p   r   u   c   e   E   r   r   o   r
0033440    (   2   5   9   )  \r  \t   ]  \r                   i   f    
0033460    s   t   r       t   h   e   n       F   S   P   u   t   (   s
0033500    t   r   )  \r                   ]  \r  \f  \r   /   /       -
0033520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033600    -   -   -   -   -  \r   a   n   d       C   h   a   n   g   e
0033620    C   o   n   f   i   g   (   b   o   x   I   d   ,       r   e
0033640    a   d   F   r   o   m   K   e   y   b   o   a   r   d   ;    
0033660    n   u   m   a   r   g   s       n   a   )       =       v   a
0033700    l   o   f  \r   /   /       -   -   -   -   -   -   -   -   -
0033720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0033760    -   -   -   -   -   -   -   -   -   -   -   -   -  \r  \r   /
0034000    /  \t   I   n   s   t   a   l   l   a   t   i   o   n       o
0034020    f       f   i   l   e       c   o   n   f   i   g   u   r   a
0034040    t   i   o   n   s   ,       b   a   s   e   d       o   n    
0034060    C   o   n   f   i   g   s       m   e   n   u   .       C   o
0034100    m   p   a   n   i   o   n       t   o       C   h   a   n   g
0034120    e   P   a   r   a   m   ,       b   e   l   o   w   .  \r   /
0034140    /       A   c   t   i   v   i   t   i   e   s       s   i   m
0034160    i   l   a   r       t   o       C   h   a   n   g   e   P   a
0034200    r   a   m   ,       a   b   o   v   e   .       T   h   e    
0034220    n   u   m   e   r   i   c   a   l       c   o   l   l   e   c
0034240    t   i   n   g       i   s       s   e   l   f   -   c   o   n
0034260    t   a   i   n   e   d       i   n       t   h   e       f   s
0034300    .   .   .       c   a   s   e   s  \r   /   /       (   n   u
0034320    m   b   e   r       o   f       p   a   g   e   s       s   p
0034340    e   c   s   .   )       M   o   s   t       o   f       t   h
0034360    e       h   a   i   r       i   s       d   u   e       t   o
0034400        t   h   e       p   r   o   v   i   s   i   o   n   s    
0034420    f   o   r       d   e   f   a   u   l   t   i   n   g       d
0034440    e   v   i   c   e       a   n   d       p   a   g   e       s
0034460    i   z   e  \r   /   /       s   e   l   e   c   t   i   o   n
0034500    s       t   o       t   h   e       v   a   l   u   e   s    
0034520    o   b   t   a   i   n   i   n   g       w   h   e   n       l
0034540    a   s   t       t   h   e       f   i   l   e   s       w   e
0034560    r   e       i   n   s   t   a   l   l   e   d   ,       a   n
0034600    d       f   o   r       f   a   l   l   i   n   g       b   a
0034620    c   k       i   n   t   o       l   e   g   a   l  \r   /   /
0034640        d   e   f   a   u   l   t       c   o   n   f   i   g   u
0034660    r   a   t   i   o   n   s       w   h   e   n       t   h   e
0034700        r   a   n   g   e       o   f       o   p   t   i   o   n
0034720    s       i   s       r   e   d   u   c   e   d       b   y    
0034740    e   l   i   m   i   n   a   t   i   n   g       o   n   e    
0034760    o   r       m   o   r   e       a   u   x   i   l   i   a   r
0035000    y  \r   /   /       d   i   s   k   s       f   r   o   m    
0035020    c   o   n   s   i   d   e   r   a   t   i   o   n   .       T
0035040    h   e       "   s   p   e   c   s   "       t   a   b   l   e
0035060    s       a   r   e       s   e   t       u   p       w   i   t
0035100    h       v   a   l   u   e   s       p   r   o   m   o   t   i
0035120    n   g       t   h   e       u   s   e       o   f       t   h
0035140    e   s   e  \r   /   /       d   e   f   a   u   l   t   s    
0035160    w   h   e   n       i   n   s   t   a   l   l   a   t   i   o
0035200    n       b   e   g   i   n   ,       a   n   d       a   r   e
0035220        u   p   d   a   t   e   d       t   o       r   e   f   l
0035240    e   c   t       t   h   e       a   c   t   u   a   l       v
0035260    a   l   u   e   s   ,       o   b   t   a   i   n   e   d    
0035300    f   r   o   m       t   h   e       f   i   l   e   s  \r   /
0035320    /       t   h   e   m   s   e   l   v   e   s       o   r    
0035340    f   r   o   m       t   h   e       k   e   y   b   o   a   r
0035360    d   ,       a   s       t   h   e       p   r   o   c   e   s
0035400    s       p   r   o   g   r   e   s   s   e   s   .       ~   ~
0035420        C   o   n   s   i   d   e   r       a   t   t   a   c   h
0035440    i   n   g       t   h   e       s   p   e   c   s       t   a
0035460    b   l   e   s  \r   /   /       t   o       t   h   e       m
0035500    e   n   u       i   t   e   m   s   ,       e   l   i   m   i
0035520    n   a   t   i   n   g       m   a   n   y       r   e   p   e
0035540    t   i   t   i   v   e       s   e   t   u   p       o   p   e
0035560    r   a   t   i   o   n   s   .  \r   /   /  \t   T   w   o    
0035600    m   e   n   u       i   t   e   m   s       a   r   e       c
0035620    o   m   m   a   n   d   s   :       "   Q   u   i   t   "    
0035640    -   -       r   e   t   u   r   n       t   o       e   x   e
0035660    c   ,       a   n   d       "   I   n   s   t   a   l   l   "
0035700        -   -       s   a   v   e       n   e   w   l   y       s
0035720    e   l   e   c   t   e   d  \r   /   /       i   n   s   t   a
0035740    l   l   a   t   i   o   n       v   a   l   u   e   s       a
0035760    n   d       q   u   i   t   .       "   I   n   s   t   a   l
0036000    l   "       i   s       n   o   t       d   i   s   p   l   a
0036020    y   e   d   ,       a   n   d       i   t   s       s   e   l
0036040    e   c   t   i   o   n       i   s       n   o   t       o   b
0036060    e   y   e   d   ,       u   n   l   e   s   s       t   h   e
0036100   \r   /   /       c   u   r   r   e   n   t       c   o   n   f
0036120    i   g   u   r   a   t   i   o   n       i   s       c   o   r
0036140    r   e   c   t       a   n   d       c   o   m   p   l   e   t
0036160    e   .  \r                   [  \r                   i   f    
0036200    n   a   <   2       t   h   e   n       r   e   a   d   F   r
0036220    o   m   K   e   y   b   o   a   r   d       =       f   a   l
0036240    s   e  \r                   l   e   t       s   t   a   t   A
0036260    d   r   ,       n   a   m   e   ,       s   p   e   c   s    
0036300    =       n   i   l   ,       n   i   l   ,       n   i   l  \r
0036320                    s   w   i   t   c   h   o   n       b   o   x
0036340    I   d       i   n   t   o  \r  \t   [  \r  \t   /   /       D
0036360    i   s   k       C   o   n   f   i   g   u   r   a   t   i   o
0036400    n   s   :  \r  \t   c   a   s   e       d   c   M   3   1   :
0036420   \r  \t  \t   i   f       s   t   a   t   u   s   O   f   3   1
0036440    s       e   q       2       t   h   e   n       [       S   e
0036460    l   e   c   t   (   b   o   x   I   d   )   ;       e   n   d
0036500    c   a   s   e       ]       /   /       i   g   n   o   r   e
0036520   \r  \t  \t   i   f       r   e   a   d   F   r   o   m   K   e
0036540    y   b   o   a   r   d       t   h   e   n       s   t   a   t
0036560    u   s   O   f   3   1   s       =       s   t   a   t   u   s
0036600    O   f   3   1   s       x   o   r       1       /   /       0
0036620        o   r       1  \r  \t  \t   t   e   s   t       s   t   a
0036640    t   u   s   O   f   3   1   s   &   S   e   t   u   p   D   r
0036660    i   v   e   (   D   I   S   K   3   1   B   ,       S   p   r
0036700    u   c   e   Z   o   n   e   ,       t   r   u   e   )       t
0036720    h   e   n       D   e   s   e   l   e   c   t   (   b   o   x
0036740    I   d   )       /   /       a   c   c   e   p   t  \r  \t  \t
0036760            o   r       [       i   f       d   r   i   v   e   1
0037000    D   i   s   k       t   h   e   n       B   F   S   C   l   o
0037020    s   e   (   d   r   i   v   e   1   D   i   s   k   )   ;   S
0037040    e   l   e   c   t   (   b   o   x   I   d   )   ;   d   r   i
0037060    v   e   1   D   i   s   k   ,   s   t   a   t   u   s   O   f
0037100    3   1   s   =   0   ,   0       ]  \r  \t  \t   t   e   s   t
0037120        r   e   a   d   F   r   o   m   K   e   y   b   o   a   r
0037140    d       t   h   e   n       d   o   c   a   s   e       #   4
0037160    0   2       o   r       e   n   d   c   a   s   e       /   /
0037200        a   d   j   u   s   t       f   i   l   e   s       a   p
0037220    p   r   o   p   r   i   a   t   e   l   y  \r  \t   c   a   s
0037240    e       d   c   T   8   0   :       c   o   m   p   i   l   e
0037260    t   e   s   t       T   r   i   d   e   n   t   S   w       i
0037300    f   n   o   t       [       d   o   c   a   s   e       #   4
0037320    0   1       ]       i   f   s   o  \r  \t  \t   [  \r  \t  \t
0037340    t   r   i   d   e   n   t   U   s   e   d       =       t   r
0037360    i   d   e   n   t   U   s   e   d       x   o   r       r   e
0037400    a   d   F   r   o   m   K   e   y   b   o   a   r   d  \r  \t
0037420   \t   i   f       t   r   i   d   e   n   t   U   s   e   d   &
0037440    n   o   t       t   r   i   d   e   n   t   D   i   s   k    
0037460    t   h   e   n       t   r   i   d   e   n   t   D   i   s   k
0037500        =       S   e   t   u   p   D   r   i   v   e   (   D   I
0037520    S   K   T   8   0   ,       S   p   r   u   c   e   Z   o   n
0037540    e   ,       t   r   u   e   )  \r  \t  \t   t   e   s   t    
0037560    t   r   i   d   e   n   t   U   s   e   d   &   t   r   i   d
0037600    e   n   t   D   i   s   k       t   h   e   n       D   e   s
0037620    e   l   e   c   t   (   b   o   x   I   d   )  \r  \t  \t    
0037640        o   r       [       i   f       t   r   i   d   e   n   t
0037660    D   i   s   k       t   h   e   n       T   F   S   C   l   o
0037700    s   e   (   t   r   i   d   e   n   t   D   i   s   k   )  \r
0037720   \t  \t                               t   r   i   d   e   n   t
0037740    U   s   e   d   ,       t   r   i   d   e   n   t   D   i   s
0037760    k       =       f   a   l   s   e   ,       0   ;       S   e
0040000    l   e   c   t   (   b   o   x   I   d   )       ]  \r  \t  \t
0040020    t   e   s   t       r   e   a   d   F   r   o   m   K   e   y
0040040    b   o   a   r   d       t   h   e   n       d   o   c   a   s
0040060    e       #   4   0   2       o   r       e   n   d   c   a   s
0040100    e  \r  \t  \t   ]  \r  \t   c   a   s   e       #   4   0   2
0040120    :       C   h   a   n   g   e   (   t   a   b   l   e       [
0040140        f   n   F   o   n   t   s   ;       f   n   E   r   r   o
0040160    r   s   ;       f   n   S   p   o   o   l   ;       f   n   B
0040200    a   n   d   s   ;       0       ]   )   ;       e   n   d   c
0040220    a   s   e  \r  \r  \t   /   /       F   i   l   e       V   a
0040240    l   i   d   a   t   i   o   n   s       a   n   d       S   p
0040260    e   c   i   f   i   c   a   t   i   o   n   s  \r  \t   c   a
0040300    s   e       f   n   E   r   r   o   r   s   :       s   t   a
0040320    t   A   d   r   ,       n   a   m   e   ,       s   p   e   c
0040340    s       =       l   v       E   r   r   o   r   F   i   l   e
0040360    ,       "   S   p   r   u   c   e   .   E   r   r   o   r   s
0040400    "   ,       e   r   r   o   r   S   p   e   c   s   ;       d
0040420    o   c   a   s   e       #   4   0   7  \r  \t   c   a   s   e
0040440        f   n   F   o   n   t   s   :       s   t   a   t   A   d
0040460    r   ,       n   a   m   e   ,       s   p   e   c   s       =
0040500        l   v       F   o   n   t   F   i   l   e   ,       "   S
0040520    p   r   u   c   e   .   F   o   n   t   s   "   ,       f   o
0040540    n   t   S   p   e   c   s  \r  \t   c   a   s   e       #   4
0040560    0   7   :  \r  \t  \t   [  \r  \t  \t   u   n   l   e   s   s
0040600        r   e   a   d   F   r   o   m   K   e   y   b   o   a   r
0040620    d   &   n   o   t       I   s   S   e   l   e   c   t   e   d
0040640    (   b   o   x   I   d   )       d   o       d   o   c   a   s
0040660    e       #   4   0   3  \r  \t  \t   S   e   l   e   c   t   (
0040700    b   o   x   I   d   )   ;       e   n   d   c   a   s   e  \r
0040720   \t  \t   ]  \r  \t   c   a   s   e       f   n   S   p   o   o
0040740    l   :       s   t   a   t   A   d   r   ,       n   a   m   e
0040760    ,       s   p   e   c   s       =       l   v       S   p   o
0041000    o   l   F   i   l   e   ,       "   S   p   r   u   c   e   .
0041020    S   p   o   o   l   "   ,       s   p   o   o   l   S   p   e
0041040    c   s   ;       d   o   c   a   s   e       #   4   0   3  \r
0041060   \t   c   a   s   e       f   n   B   a   n   d   s   :       s
0041100    t   a   t   A   d   r   ,       n   a   m   e   ,       s   p
0041120    e   c   s       =       l   v       B   a   n   d   F   i   l
0041140    e   ,       "   S   p   r   u   c   e   .   B   a   n   d   s
0041160    "   ,       b   a   n   d   S   p   e   c   s   ;       d   o
0041200    c   a   s   e       #   4   0   3  \r  \t   c   a   s   e    
0041220    #   4   0   3   :       [  \r  \t  \t   l   e   t       d   e
0041240    v   ,       p   g   s       =       s   p   e   c   s   >   >
0041260    S   P   E   C   S   .   d   e   f   D   e   v   ,       s   p
0041300    e   c   s   >   >   S   P   E   C   S   .   d   e   f   S   i
0041320    z   e  \r  \t  \t   u   n   l   e   s   s       D   i   s   k
0041340    O   b   j   e   c   t   (   d   e   v   )       d   o       d
0041360    e   v   ,       p   g   s       =       -   1   ,       -   1
0041400   \r  \t  \t   i   f       r   e   a   d   F   r   o   m   K   e
0041420    y   b   o   a   r   d   &   I   s   S   e   l   e   c   t   e
0041440    d   (   b   o   x   I   d   )       t   h   e   n  \r  \t  \t
0041460   \t   [       i   f       @   s   t   a   t   A   d   r       t
0041500    h   e   n       F   o   r   g   e   t   S   p   r   u   c   e
0041520    F   i   l   e   (   @   s   t   a   t   A   d   r   )   ;    
0041540    @   s   t   a   t   A   d   r       =       0  \r  \t  \t  \t
0041560            i   f       d   e   v       e   q       -   1       t
0041600    h   e   n       d   e   v       =       D   I   S   K   3   1
0041620        ]  \r  \t  \t   M   a   k   e   V   a   l   i   d   S   p
0041640    r   u   c   e   F   i   l   e   (   s   t   a   t   A   d   r
0041660    ,       n   a   m   e   ,       p   g   s   ,       d   e   v
0041700    )  \r  \t  \t   t   e   s   t       @   s   t   a   t   A   d
0041720    r       i   f   n   o   t       s   p   e   c   s   >   >   S
0041740    P   E   C   S   .   d   e   f   S   i   z   e       =       -
0041760    1  \r  \t  \t       i   f   s   o       [       s   p   e   c
0042000    s   >   >   S   P   E   C   S   .   d   e   f   S   i   z   e
0042020        =       s   t   a   t   A   d   r   =   >   S   P   r   u
0042040    c   e   F   i   l   e   .   n   u   m   P   a   g   e   s  \r
0042060   \t  \t  \t   s   p   e   c   s   >   >   S   P   E   C   S   .
0042100    d   e   f   D   e   v       =       s   t   a   t   A   d   r
0042120    =   >   S   P   r   u   c   e   F   i   l   e   .   d   e   v
0042140    i   c   e   C   o   d   e       ]  \r  \t  \t   C   h   a   n
0042160    g   e   C   o   n   f   i   g   (   s   p   e   c   s   >   >
0042200    S   P   E   C   S   .   d   e   v   I   d   )   ;       C   h
0042220    a   n   g   e   C   o   n   f   i   g   (   s   p   e   c   s
0042240    >   >   S   P   E   C   S   .   s   i   z   e   I   d   )  \r
0042260   \t  \t   (   @   s   t   a   t   A   d   r   ?       D   e   s
0042300    e   l   e   c   t   ,       S   e   l   e   c   t   )   (   b
0042320    o   x   I   d   )  \r  \t  \t   e   n   d   c   a   s   e  \r
0042340   \t  \t   ]  \r  \f  \r   /   /       -   -   -   -   -   -   -
0042360        C   h   a   n   g   e   C   o   n   f   i   g           .
0042400        .       .  \r  \r  \t   c   a   s   e       f   s   E   r
0042420    r   o   r   s   :       s   p   e   c   s   ,       s   t   a
0042440    t   A   d   r       =       e   r   r   o   r   S   p   e   c
0042460    s   ,       l   v       E   r   r   o   r   F   i   l   e   ;
0042500        d   o   c   a   s   e       #   4   1   0  \r  \t   c   a
0042520    s   e       f   s   S   p   o   o   l   :       s   p   e   c
0042540    s   ,       s   t   a   t   A   d   r       =       s   p   o
0042560    o   l   S   p   e   c   s   ,       l   v       S   p   o   o
0042600    l   F   i   l   e   ;       d   o   c   a   s   e       #   4
0042620    1   0  \r  \t   c   a   s   e       f   s   B   a   n   d   s
0042640    :       s   p   e   c   s   ,       s   t   a   t   A   d   r
0042660        =       b   a   n   d   S   p   e   c   s   ,       l   v
0042700        B   a   n   d   F   i   l   e   ;       d   o   c   a   s
0042720    e       #   4   1   0  \r  \t   c   a   s   e       f   s   F
0042740    o   n   t   s   :       s   p   e   c   s   ,       s   t   a
0042760    t   A   d   r       =       f   o   n   t   S   p   e   c   s
0043000    ,       l   v       F   o   n   t   F   i   l   e   ;       d
0043020    o   c   a   s   e       #   4   1   0       /   /       n   e
0043040    v   e   r       f   r   o   m       k   b   d  \r  \t   c   a
0043060    s   e       #   4   1   0   :  \r  \t  \t   [  \r  \t  \t   l
0043100    e   t       s   t   r       =       r   e   a   d   F   r   o
0043120    m   K   e   y   b   o   a   r   d   ?           G   e   t   S
0043140    t   r   i   n   g   (   B   o   x   (   b   o   x   I   d   )
0043160    ,       0   ,       S   p   r   u   c   e   Z   o   n   e   )
0043200    ,       0  \r                  \t  \t   l   e   t       p   l
0043220    a   c   e   s   ,       i   s   O   c   t       =       0   ,
0043240        f   a   l   s   e  \r  \t  \t   l   e   t       c   u   r
0043260    S   i   z   e       =       s   p   e   c   s   >   >   S   P
0043300    E   C   S   .   d   e   f   S   i   z   e  \r  \t  \t   i   f
0043320        r   e   a   d   F   r   o   m   K   e   y   b   o   a   r
0043340    d       t   h   e   n  \r  \t  \t                   [       S
0043360    e   l   e   c   t   (   s   p   e   c   s   >   >   S   P   E
0043400    C   S   .   f   i   l   e   I   d   )   ;       c   u   r   S
0043420    i   z   e       =       G   e   t   N   u   m   b   e   r   (
0043440    s   t   r   ,       0   )       ]       /   /       i   n   v
0043460    a   l   i   d   a   t   e  \r  \t  \t   s   p   e   c   s   >
0043500    >   S   P   E   C   S   .   d   e   f   S   i   z   e       =
0043520        c   u   r   S   i   z   e  \r  \t  \t   t   e   s   t    
0043540    c   u   r   S   i   z   e       n   e       -   1       t   h
0043560    e   n       P   u   t   N   u   m   b   e   r   (   b   o   x
0043600    I   d   ,       c   u   r   S   i   z   e   ,       0   ,    
0043620    f   a   l   s   e   )  \r  \t  \t               o   r       F
0043640    i   l   l   B   o   x   (   B   o   x   (   b   o   x   I   d
0043660    )   ,       w   h   i   t   e   )  \r  \t  \t   i   f       s
0043700    t   r       t   h   e   n       F   S   P   u   t   (   s   t
0043720    r   )  \r  \t  \t   e   n   d   c   a   s   e  \r  \t  \t   ]
0043740   \r  \t   c   a   s   e       f   d   E   r   r   o   r   s   :
0043760        s   p   e   c   s   ,       s   t   a   t   A   d   r    
0044000    =       e   r   r   o   r   S   p   e   c   s   ,       l   v
0044020        E   r   r   o   r   F   i   l   e   ;       d   o   c   a
0044040    s   e       #   4   0   4  \r  \t   c   a   s   e       f   d
0044060    F   o   n   t   s   :       s   p   e   c   s   ,       s   t
0044100    a   t   A   d   r       =       f   o   n   t   S   p   e   c
0044120    s   ,       l   v       F   o   n   t   F   i   l   e   ;    
0044140    d   o   c   a   s   e       #   4   0   4  \r  \t   c   a   s
0044160    e       f   d   S   p   o   o   l   :       s   p   e   c   s
0044200    ,       s   t   a   t   A   d   r       =       s   p   o   o
0044220    l   S   p   e   c   s   ,       l   v       S   p   o   o   l
0044240    F   i   l   e   ;       d   o   c   a   s   e       #   4   0
0044260    4  \r  \t   c   a   s   e       f   d   B   a   n   d   s   :
0044300        s   p   e   c   s   ,       s   t   a   t   A   d   r    
0044320    =       b   a   n   d   S   p   e   c   s   ,       l   v    
0044340    B   a   n   d   F   i   l   e   ;       d   o   c   a   s   e
0044360        #   4   0   4  \r  \t   c   a   s   e       #   4   0   4
0044400    :       [  \r  \t                   l   e   t       C   y   c
0044420    l   e   D   i   s   k   (   c   h   )       =       s   e   l
0044440    e   c   t   o   n       c   h       i   n   t   o  \r  \t  \t
0044460    [       c   a   s   e       D   I   S   K   3   1   :       D
0044500    I   S   K   3   1   B   ;       c   a   s   e       D   I   S
0044520    K   3   1   B   :       D   I   S   K   T   8   0   ;       d
0044540    e   f   a   u   l   t   :       D   I   S   K   3   1       ]
0044560   \r  \t                   l   e   t       c   u   r   C   h   o
0044600    i   c   e       =       s   p   e   c   s   >   >   S   P   E
0044620    C   S   .   d   e   f   D   e   v  \r  \t                   l
0044640    e   t       n   e   x   t   C   h   o   i   c   e       =    
0044660    r   e   a   d   F   r   o   m   K   e   y   b   o   a   r   d
0044700    ?       C   y   c   l   e   D   i   s   k   (   c   u   r   C
0044720    h   o   i   c   e   )   ,       c   u   r   C   h   o   i   c
0044740    e  \r  \t                   u   n   t   i   l       D   i   s
0044760    k   O   b   j   e   c   t   (   n   e   x   t   C   h   o   i
0045000    c   e   )       d   o       n   e   x   t   C   h   o   i   c
0045020    e       =       C   y   c   l   e   D   i   s   k   (   n   e
0045040    x   t   C   h   o   i   c   e   )  \r  \t                   s
0045060    p   e   c   s   >   >   S   P   E   C   S   .   d   e   f   D
0045100    e   v       =       n   e   x   t   C   h   o   i   c   e  \r
0045120   \t                   P   u   t   B   o   x   T   e   m   p   l
0045140    a   t   e   (   b   o   x   I   d   ,       "   $   S   "   ,
0045160        s   e   l   e   c   t   o   n       n   e   x   t   C   h
0045200    o   i   c   e       i   n   t   o  \r  \t  \t   [       c   a
0045220    s   e       D   I   S   K   3   1   :       "   D   P   0   "
0045240    ;       c   a   s   e       D   I   S   K   3   1   B   :    
0045260    "   D   P   1   "   ;       c   a   s   e       D   I   S   K
0045300    T   8   0   :       "   T   r   i   d   e   n   t   "       ]
0045320    )  \r  \t                   l   e   t       f   i   l   e   I
0045340    d       =       s   p   e   c   s   >   >   S   P   E   C   S
0045360    .   f   i   l   e   I   d  \r  \t                   i   f    
0045400    r   e   a   d   F   r   o   m   K   e   y   b   o   a   r   d
0045420    &   n   e   x   t   C   h   o   i   c   e       n   e       c
0045440    u   r   C   h   o   i   c   e       t   h   e   n  \r  \t  \t
0045460    [       s   p   e   c   s   >   >   S   P   E   C   S   .   d
0045500    e   f   S   i   z   e       =       -   1   ;       S   e   l
0045520    e   c   t   (   f   i   l   e   I   d   )   ;       C   h   a
0045540    n   g   e   C   o   n   f   i   g   (   f   i   l   e   I   d
0045560    )       ]  \r  \t                   e   n   d   c   a   s   e
0045600   \r  \t                   ]  \r  \t   /   /       c   o   m   m
0045620    a   n   d   s   :  \r  \t   c   a   s   e       c   C   o   n
0045640    f   i   g   I   n   s   t   a   l   l   :       t   e   s   t
0045660        O   K   T   o   I   n   s   t   a   l   l   (   )       d
0045700    o   c   a   s   e       #   4   2   0       o   r       d   o
0045720    c   a   s   e       #   4   0   1       /   /       i   g   n
0045740    o   r   e  \r  \t   c   a   s   e       c   C   o   n   f   i
0045760    g   Q   u   i   t   :       o   k   T   o   I   n   s   t   a
0046000    l   l       =       f   a   l   s   e  \r  \t   c   a   s   e
0046020        #   4   2   0   :  \r  \t  \t   I   n   i   t   M   e   n
0046040    u   (   0   )   ;          \r  \t  \t   c   o   m   p   i   l
0046060    e   i   f       T   r   i   d   e   n   t   S   w       t   h
0046100    e   n       [       i   f       t   r   i   d   e   n   t   U
0046120    s   e   d       t   h   e   n       T   F   S   C   l   o   s
0046140    e   (   t   r   i   d   e   n   t   D   i   s   k   )       ]
0046160   \r  \t  \t   i   f       d   r   i   v   e   1   D   i   s   k
0046200        t   h   e   n       B   F   S   C   l   o   s   e   (   d
0046220    r   i   v   e   1   D   i   s   k   )  \r  \t  \t   t   e   s
0046240    t       o   k   T   o   I   n   s   t   a   l   l       r   e
0046260    s   u   l   t   i   s       f   a   l   s   e       o   r    
0046300    f   i   n   i   s   h      \r  \t   d   e   f   a   u   l   t
0046320    :       i   f       b   o   x   I   d       t   h   e   n    
0046340    D   e   s   e   l   e   c   t   (   b   o   x   I   d   )    
0046360    /   /       i   g   n   o   r   e  \r  \t   ]  \r            
0046400        i   f       r   e   a   d   F   r   o   m   K   e   y   b
0046420    o   a   r   d       t   h   e   n       O   K   T   o   I   n
0046440    s   t   a   l   l   (   )  \r                   r   e   s   u
0046460    l   t   i   s       t   r   u   e       /   /       g   o    
0046500    o   n  \r                   ]  \r  \r  \r   /   /       -   -
0046520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0046600    -   -   -   -  \r   a   n   d       O   K   T   o   I   n   s
0046620    t   a   l   l   (   )       =       v   a   l   o   f  \r   /
0046640    /       -   -   -   -   -   -   -   -   -   -   -   -   -   -
0046660    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0046720    -   -   -   -   -   -   -   -  \r  \r   /   /  \t   C   a   l
0046740    l   e   d       w   h   e   n       s   t   a   t   e       o
0046760    f       a   n   y       f   i   l   e       h   a   s       c
0047000    h   a   n   g   e   d   .       D   e   t   e   r   m   i   n
0047020    e   s       i   f       a   l   l       r   e   q   u   i   s
0047040    i   t   e       f   i   l   e   s       e   x   i   s   t    
0047060    a   n   d       h   a   v   e       l   e   g   a   l  \r   /
0047100    /       S   p   r   u   c   e   F   i   l   e       s   t   r
0047120    u   c   t   u   r   e   s   .       A   d   j   u   s   t   s
0047140        t   h   e       s   t   a   t   e       o   f       t   h
0047160    e       "   I   N   S   T   A   L   L   "       m   e   n   u
0047200        c   o   m   m   a   n   d       b   a   s   e   d       o
0047220    n       t   h   e       r   e   s   u   l   t   .  \r  \t   [
0047240   \r  \t   l   e   t       f   i   l   e   s       =       t   a
0047260    b   l   e       [       f   n   E   r   r   o   r   s   ;    
0047300    f   n   F   o   n   t   s   ;       f   n   S   p   o   o   l
0047320    ;       f   n   B   a   n   d   s   ;       0       ]  \r  \t
0047340    l   e   t       f   i   l   e       =       n   i   l  \r  \t
0047360    l   e   t       r   e   s       =       v   a   l   o   f    
0047400    [  \r  \t               f   o   r       i       =       1    
0047420    t   o       9   9       d   o       t   e   s   t       v   a
0047440    l   o   f       [       f   i   l   e       =       f   i   l
0047460    e   s   !   i   ;       r   e   s   u   l   t   i   s       f
0047500    i   l   e       ]       i   f   n   o   t       b   r   e   a
0047520    k  \r  \t                           i   f   s   o       [    
0047540    i   f       I   s   S   e   l   e   c   t   e   d   (   f   i
0047560    l   e   )       r   e   s   u   l   t   i   s       f   a   l
0047600    s   e       ]  \r  \t               r   e   s   u   l   t   i
0047620    s       t   r   u   e       ]  \r  \t   i   f       r   e   s
0047640        n   e       o   k   T   o   I   n   s   t   a   l   l    
0047660    t   h   e   n  \r  \t  \t   P   u   t   B   o   x   T   e   m
0047700    p   l   a   t   e   (   c   C   o   n   f   i   g   I   n   s
0047720    t   a   l   l   ,       "   $   S   "   ,       r   e   s   ?
0047740        "   I   N   S   T   A   L   L   "   ,       "   "   )  \r
0047760   \t   o   k   T   o   I   n   s   t   a   l   l       =       r
0050000    e   s  \r  \t   r   e   s   u   l   t   i   s       r   e   s
0050020   \r  \t   ]  \r  \r  \f  \r   /   /       -   -   -   -   -   -
0050040    -   -   -   -   -   -   -   -   -   -   -   -       I   n   s
0050060    t   a   l   l   a   t   i   o   n       U   t   i   l   i   t
0050100    i   e   s       -   -   -   -   -   -   -   -   -   -   -   -
0050120    -   -   -   -   -  \r   /   /       -   -   -   -   -   -   -
0050140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0050200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0050220    a   n   d       I   n   i   t   M   e   n   u   (   h   e   l
0050240    p   R   o   u   t   i   n   e   ,       c   h   a   n   g   e
0050260    R   o   u   t   i   n   e   )       b   e  \r   /   /       -
0050300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0050360    -   -   -   -   -  \r  \r   /   /  \t   h   e   l   p   R   o
0050400    u   t   i   n   e   (   )       i   s       o   n   e       o
0050420    r       t   h   e       o   t   h   e   r       o   f       t
0050440    h   e       M   e   n   u   I   n   i   t   H   e   l   p    
0050460    r   o   u   t   i   n   e   s       c   r   e   a   t   e   d
0050500        b   y       t   h   e       m   e   n   u       p   a   c
0050520    k   a   g   e   ;       t   h   e   y  \r   /   /       h   a
0050540    v   e       b   e   e   n       m   a   n   u   a   l   l   y
0050560        e   d   i   t   e   d       t   o       h   a   v   e    
0050600    d   i   f   f   e   r   e   n   t       n   a   m   e   s    
0050620    s   o       t   h   a   t       b   o   t   h       m   e   n
0050640    u   s       c   a   n       b   e       s   i   m   u   l   t
0050660    a   n   e   o   u   s   l   y       l   o   a   d   e   d   .
0050700   \r   /   /       c   h   a   n   g   e   R   o   u   t   i   n
0050720    e   (   )       i   s       o   n   e       o   f       t   h
0050740    e       t   w   o       a   b   o   v   e   .           D   e
0050760    l   e   t   e       a   n   y       p   r   e   v   i   o   u
0051000    s       m   e   n   u       a   n   d       i   t   s       b
0051020    u   f   f   e   r       s   p   a   c   e   ,       c   r   e
0051040    a   t   e       t   h   e  \r   /   /       n   e   w       o
0051060    n   e   ,       s   e   t       u   p       t   h   e       c
0051100    h   a   n   g   e   R   o   u   t   i   n   e   (   )       f
0051120    o   r       u   s   e       b   y       t   h   e       C   h
0051140    a   n   g   e   (   )       f   u   n   c   t   i   o   n   .
0051160        R   e   l   e   a   s   e       a   n   y       p   r   e
0051200    v   i   o   u   s       m   e   n   u   '   s  \r   /   /    
0051220    m   e   n   u       d   e   s   c   r   i   p   t   i   o   n
0051240        t   o       S   p   r   u   c   e   Z   o   n   e  \r    
0051260                [  \r                   i   f       m   e   n   u
0051300    S   t   r   e   a   m       t   h   e   n       S   h   o   w
0051320    D   i   s   p   l   a   y   S   t   r   e   a   m   (   m   e
0051340    n   u   S   t   r   e   a   m   ,       D   S   d   e   l   e
0051360    t   e   )  \r                   i   f       M   e   n   u   I
0051400    n   i   t   H   e   l   p       t   h   e   n       O   v   e
0051420    r   l   a   y   T   o   p       =       M   e   n   u   I   n
0051440    i   t   H   e   l   p  \r                   F   S   I   n   i
0051460    t   (   )  \r                   M   e   n   u   D   a   t   a
0051500    ,       M   e   n   u   I   n   i   t   H   e   l   p       =
0051520        0   ,       0   ;       u   n   l   e   s   s       h   e
0051540    l   p   R   o   u   t   i   n   e       r   e   t   u   r   n
0051560    ;       M   e   n   u   I   n   i   t   H   e   l   p       =
0051600        h   e   l   p   R   o   u   t   i   n   e  \r            
0051620        l   e   t       l   e   n   M   e   n   u       =       M
0051640    e   n   u   S   i   z   e   (   )   +   1           /   /   l
0051660    o   o   k   s       l   i   k   e       C   r   e   a   t   e
0051700    M   e   n   u   D   i   s   p   l   a   y   S   t   r   e   a
0051720    m       i   s       g   o   i   n   g       t   o       e   v
0051740    e   n       w   o   r   d       a   l   i   g   n       i   t
0051760   \r                   m   e   n   u   B   u   f       =       F
0052000    S   G   e   t   X   (   l   e   n   M   e   n   u   )  \r    
0052020                m   e   n   u   S   t   r   e   a   m       =    
0052040    C   r   e   a   t   e   M   e   n   u   D   i   s   p   l   a
0052060    y   S   t   r   e   a   m   (   m   e   n   u   B   u   f   ,
0052100        l   e   n   M   e   n   u   )  \r                   m   e
0052120    n   u       =       M   e   n   u   D   a   t   a   >   >   D
0052140    A   T   A   .   m   e   n   u  \r                   S   h   o
0052160    w   D   i   s   p   l   a   y   S   t   r   e   a   m   (   m
0052200    e   n   u   S   t   r   e   a   m   )  \r                   C
0052220    h   a   n   g   e   R   o   u   t   i   n   e       =       c
0052240    h   a   n   g   e   R   o   u   t   i   n   e  \r            
0052260        ]  \r  \r   /   /       -   -   -   -   -   -   -   -   -
0052300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052340    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a   n
0052360    d       C   h   a   n   g   e   (   p   a   r   a   m   s   )
0052400        b   e  \r   /   /       -   -   -   -   -   -   -   -   -
0052420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0052460    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   /   /
0052500   \t   C   h   a   n   g   e   R   o   u   t   i   n   e       i
0052520    s       s   e   l   e   c   t   e   d       f   r   o   m    
0052540    {   C   h   a   n   g   e   P   a   r   a   m   (   )   ,    
0052560    C   h   a   n   g   e   C   o   n   f   i   g   (   )   }    
0052600    b   y       I   n   i   t   M   e   n   u   (   )       c   a
0052620    l   l   .  \r   /   /       E   x   e   c   u   t   e       t
0052640    h   e       s   e   l   e   c   t   e   d       r   o   u   t
0052660    i   n   e       f   o   r       a   l   l       b   o   x   I
0052700    d   s       (   m   e   n   u       b   o   x       i   n   d
0052720    i   c   e   s   )       i   n       a       n   i   l   -   t
0052740    e   r   m   i   n   a   t   e   d       v   e   c   t   o   r
0052760    .  \r                   f   o   r       i       =       0    
0053000    t   o       9   9   9       d   o       [       l   e   t    
0053020    p   a   r   a   m       =       p   a   r   a   m   s   !   i
0053040    ;       u   n   l   e   s   s       p   a   r   a   m       b
0053060    r   e   a   k   ;       C   h   a   n   g   e   R   o   u   t
0053100    i   n   e   (   p   a   r   a   m   )       ]  \r  \r   /   /
0053120        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0053140    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053200    -   -   -   -   -   -   -  \r   a   n   d       G   e   t   N
0053220    u   m   b   e   r   (   s   t   r   ,       p   l   a   c   e
0053240    s   )       =       v   a   l   o   f  \r   /   /       -   -
0053260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0053340    -   -   -   -  \r  \r   /   /  \t   R   e   t   u   r   n   s
0053360        t   h   e       n   u   m   e   r   i   c   a   l       v
0053400    a   l   u   e       o   f       t   h   e       s   t   r   i
0053420    n   g   ,       c   h   a   n   g   i   n   g       t   o    
0053440    o   c   t   a   l       i   f       a   n   y       o   f    
0053460    a       n   u   m   b   e   r       o   f       o   p   t   i
0053500    o   n   a   l       s   y   n   t   a   x  \r   /   /       t
0053520    r   i   g   g   e   r   s       i   s       p   r   e   s   e
0053540    n   t   .       P   l   a   c   e   s       i   n   d   i   c
0053560    a   t   e   s       t   h   e       l   o   c   a   t   i   o
0053600    n       o   f       t   h   e       (   d   e   c   i   m   a
0053620    l   )       f   i   x   e   d       p   o   i   n   t       f
0053640    o   r       t   h   e       n   u   m   b   e   r   .       T
0053660    h   e  \r   /   /       n   u   m   b   e   r       i   s    
0053700    r   e   t   u   r   n   e   d       a   n   d       s   t   o
0053720    r   e   d       a   s       "   n   u   m   b   e   r   *   1
0053740    0   ^   p   l   a   c   e   s   "   .       ~   ~       C   o
0053760    n   s   i   d   e   r       u   s   i   n   g       E   v   a
0054000    l   P   a   r   a   m   ?  \r  \t   [  \r  \t   l   e   t    
0054020    d   e   c   ,       o   c   t   ,       c   h   a   r   ,    
0054040    w   a   s   D   o   t   ,       i   s   D   e   c       =    
0054060    0   ,       0   ,       n   i   l   ,       f   a   l   s   e
0054100    ,       t   r   u   e  \r  \t   f   o   r       i       =    
0054120    1       t   o       s   t   r   >   >   S   T   R   .   l   e
0054140    n   g   t   h       d   o  \r  \t                   s   w   i
0054160    t   c   h   o   n       v   a   l   o   f       [       c   h
0054200    a   r       =       s   t   r   >   >   S   T   R   .   c   h
0054220    a   r   ^   i   ;       r   e   s   u   l   t   i   s       c
0054240    h   a   r       ]       i   n   t   o  \r  \t  \t   [  \r  \t
0054260   \t   c   a   s   e       $   #   :       i   s   D   e   c    
0054300    =       f   a   l   s   e   ;       e   n   d   c   a   s   e
0054320   \r  \t  \t   c   a   s   e       $   0       t   o       $   7
0054340    :       i   f       p   l   a   c   e   s   <   0       l   o
0054360    o   p   ;       o   c   t       =       o   c   t       l   s
0054400    h   i   f   t       3       +       (   c   h   a   r   -   $
0054420    0   )  \r  \t  \t   c   a   s   e       $   8       t   o    
0054440    $   9   :       i   f       p   l   a   c   e   s   <   0    
0054460    l   o   o   p   ;       d   e   c       =       d   e   c   *
0054500    1   0   +   (   c   h   a   r   -   $   0   )  \r  \t  \t  \t
0054520    i   f       w   a   s   D   o   t       t   h   e   n       p
0054540    l   a   c   e   s       =       p   l   a   c   e   s   -   1
0054560    ;       e   n   d   c   a   s   e  \r  \t  \t   c   a   s   e
0054600        $   .   :       w   a   s   D   o   t       =       t   r
0054620    u   e   ;       p   l   a   c   e   s       =       p   l   a
0054640    c   e   s   -   1   ;       e   n   d   c   a   s   e  \r  \t
0054660   \t   c   a   s   e       $   B   :       c   a   s   e       $
0054700    b   :       c   a   s   e       $   Q   :       i   s   D   e
0054720    c       =       f   a   l   s   e   ;       e   n   d   c   a
0054740    s   e  \r  \t  \t   d   e   f   a   u   l   t   :       l   o
0054760    o   p       /   /       t   a   k   e       a   n   y   t   h
0055000    i   n   g   !  \r  \t  \t   ]  \r  \t   u   n   l   e   s   s
0055020        w   a   s   D   o   t       d   o       p   l   a   c   e
0055040    s       =       p   l   a   c   e   s   -   1  \r  \t   u   n
0055060    l   e   s   s       i   s   D   e   c       d   o       d   e
0055100    c       =       o   c   t  \r  \t   f   o   r       i       =
0055120        0       t   o       p   l   a   c   e   s       d   o    
0055140    d   e   c   =   d   e   c   *   1   0  \r  \t   r   e   s   u
0055160    l   t   i   s       d   e   c  \r  \t   ]  \r  \r  \r   /   /
0055200        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0055220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0055260    -   -   -   -   -   -   -  \r   a   n   d       P   u   t   N
0055300    u   m   b   e   r   (   b   o   x   I   d   ,       v   a   l
0055320    u   e   ,       p   l   a   c   e   s   ,       i   s   O   c
0055340    t   )       b   e  \r   /   /       -   -   -   -   -   -   -
0055360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0055420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0055440   \r   /   /  \t   W   r   i   t   e   s       v   a   l   u   e
0055460        a   s       s   o   l   e       o   c   c   u   p   a   n
0055500    t       o   f       s   p   e   c   i   f   i   e   d       b
0055520    o   x   ,       w   i   t   h       p   l   a   c   e   s    
0055540    p   l   a   c   e   s   ,       c   o   n   s   i   d   e   r
0055560    e   d       o   c   t   a   l       i   f       i   s   O   c
0055600    t   .  \r  \t   [  \r  \t   l   e   t       f   r   a   c   t
0055620        =       0   ;       p   l   a   c   e   s       =       s
0055640    e   l   e   c   t   o   n       p   l   a   c   e   s       i
0055660    n   t   o       [       c   a   s   e       0   :       1   ;
0055700        c   a   s   e       1   :       1   0   ;       c   a   s
0055720    e       2   :       1   0   0       ]  \r  \t   f   r   a   c
0055740    t       =       v   a   l   u   e       r   e   m       p   l
0055760    a   c   e   s   ;       v   a   l   u   e       =       v   a
0056000    l   u   e   /   p   l   a   c   e   s  \r  \t   P   u   t   B
0056020    o   x   T   e   m   p   l   a   t   e   (   b   o   x   I   d
0056040    ,       (   i   s   O   c   t   ?       "   #   $   U   O   "
0056060    ,       n   o   t       f   r   a   c   t   ?       "   $   D
0056100    "   ,       p   l   a   c   e   s       e   q       1   0   0
0056120    ?       "   $   D   .   $   2   F   0   D   "   ,       "   $
0056140    D   .   $   D   "   )   ,       v   a   l   u   e   ,       f
0056160    r   a   c   t   )  \r  \t   ]  \r  \f  \r   /   /       -   -
0056200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0056220        I   n   s   t   a   l   l   a   t   i   o   n       U   t
0056240    i   l   i   t   i   e   s       (   m   e   n   u   -   s   p
0056260    e   c   i   f   i   c   )       .       .       .  \r   /   /
0056300        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0056320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0056360    -   -   -   -   -   -   -  \r   a   n   d       I   s   S   e
0056400    l   e   c   t   e   d   (   b   o   x   I   d   )       =    
0056420    (   B   o   x   (   b   o   x   I   d   )   )   >   >   B   O
0056440    X   .   s   e   l   e   c   t   e   d       n   e       0    
0056460    /   /       I   s       b   o   x       s   e   l   e   c   t
0056500    e   d   ?       (   s   e   e       b   e   l   o   w   )  \r
0056520    /   /       -   -   -   -   -   -   -   -   -   -   -   -   -
0056540    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0056600    -   -   -   -   -   -   -   -   -  \r  \r   /   /       -   -
0056620    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0056700    -   -   -   -  \r   a   n   d       S   e   l   e   c   t   (
0056720    b   o   x   I   d   )       b   e  \r   /   /       -   -   -
0056740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057020    -   -   -  \r   /   /  \t   F   o   r   c   e       b   o   x
0057040        t   o       b   e       s   e   l   e   c   t   e   d    
0057060    (   s   e   e       m   e   n   u       d   o   c   u   m   e
0057100    n   t   a   t   i   o   n       f   o   r       d   e   f   i
0057120    n   i   t   i   o   n   )  \r  \t   [  \r  \t   i   f       I
0057140    s   S   e   l   e   c   t   e   d   (   b   o   x   I   d   )
0057160        r   e   t   u   r   n  \r  \t   l   e   t       b   o   x
0057200        =       B   o   x   (   b   o   x   I   d   )  \r  \t   b
0057220    o   x   >   >   B   O   X   .   s   e   l   e   c   t   e   d
0057240        =       t   r   u   e  \r  \t   F   i   l   l   B   o   x
0057260    (   b   o   x   ,       0   )  \r  \t   ]  \r  \r   /   /    
0057300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057360    -   -   -   -   -   -  \r   a   n   d       D   e   s   e   l
0057400    e   c   t   (   b   o   x   I   d   )       b   e  \r   /   /
0057420        -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0057440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0057500    -   -   -   -   -   -   -  \r   /   /  \t   F   o   r   c   e
0057520        b   o   x       t   o       b   e       d   e   s   e   l
0057540    e   c   t   e   d  \r  \t   [  \r  \t   u   n   l   e   s   s
0057560        I   s   S   e   l   e   c   t   e   d   (   b   o   x   I
0057600    d   )       r   e   t   u   r   n  \r  \t   l   e   t       b
0057620    o   x       =       B   o   x   (   b   o   x   I   d   )  \r
0057640   \t   b   o   x   >   >   B   O   X   .   s   e   l   e   c   t
0057660    e   d       =       f   a   l   s   e  \r  \t   F   i   l   l
0057700    B   o   x   (   b   o   x   ,       0   )  \r  \t   ]  \r  \r
0057720    /   /       -   -   -   -   -   -   -   -   -   -   -   -   -
0057740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0060000    -   -   -   -   -   -   -   -   -  \r   a   n   d       P   u
0060020    t   B   o   x   T   e   m   p   l   a   t   e   (   b   o   x
0060040    I   d   ,       s   t   r   ,       a   ,       b   ,       c
0060060    ,       d   ,       e   ,       f   ,       g   )       b   e
0060100   \r   /   /       -   -   -   -   -   -   -   -   -   -   -   -
0060120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0060160    -   -   -   -   -   -   -   -   -   -  \r   /   /  \t   U   s
0060200    i   n   g       a       s   i   m   p   l   e       s   t   r
0060220    i   n   g       s   t   r   e   a   m   ,       u   s   e    
0060240    P   u   t   T   e   m   p   l   a   t   e       t   o       c
0060260    o   n   s   t   r   u   c   t       a       b   o   x   '   s
0060300        c   o   n   t   e   n   t   s  \r  \t   [  \r  \t   l   e
0060320    t       P   (   s   ,       c   )       b   e  \r  \t        
0060340    [       l   e   t       s   t       =       s   >   >   S   T
0060360    .   p   a   r   1   ;       l   e   t       l   n       =    
0060400    s   t   >   >   S   T   R   .   l   e   n   g   t   h   +   1
0060420    ;       s   t   >   >   S   T   R   .   l   e   n   g   t   h
0060440        =       l   n   ;       s   t   >   >   S   T   R   .   c
0060460    h   a   r   ^   l   n       =       c       ]  \r  \t   D   e
0060500    s   e   l   e   c   t   (   b   o   x   I   d   )  \r  \t   l
0060520    e   t       b   o   x       =       B   o   x   (   b   o   x
0060540    I   d   )  \r  \t   F   i   l   l   B   o   x   (   b   o   x
0060560    ,       w   h   i   t   e   )  \r  \t   l   e   t       v    
0060600    =       v   e   c       2   0  \r  \t   v   !   0       =    
0060620    0  \r  \t   l   e   t       s       =       v   e   c       1
0060640    0   ;       Z   e   r   o   (   s   ,       1   0   )   ;    
0060660    s   >   >   S   T   .   p   u   t   s       =       P   ;    
0060700    s   >   >   S   T   .   p   a   r   1       =       v  \r  \t
0060720    P   u   t   T   e   m   p   l   a   t   e   (   s   ,       s
0060740    t   r   ,       a   ,       b   ,       c   ,       d   ,    
0060760    e   ,       f   ,       g   )  \r  \t   i   f       v   >   >
0061000    S   T   R   .   l   e   n   g   t   h       t   h   e   n    
0061020    W   r   i   t   e   B   o   x   (   b   o   x   ,       v   )
0061040   \r  \t   ]  \r  \r   /   /       -   -   -   -   -   -   -   -
0061060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061120    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   a
0061140    n   d       B   o   x   (   b   o   x   I   d   )       =    
0061160    m   e   n   u   >   >   M   E   N   U   .   b   o   x   ^   b
0061200    o   x   I   d       /   /       s   e   e       m   e   n   u
0061220        p   k   g   .       R   e   t   u   r   n       b   o   x
0061240        c   o   r   r   e   s   p   o   n   d   i   n   g       t
0061260    o       b   o   x   I   d  \r   /   /       -   -   -   -   -
0061300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061360    -  \r  \f  \r   /   /   t   h   e   s   e       p   r   o   b
0061400    a   b   l   y       b   e   l   o   n   g       i   n       S
0061420    p   r   u   c   e   i   n   U   t   i   l   s  \r   /   /    
0061440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061520    -   -   -   -   -   -  \r   a   n   d       S   e   t   P   r
0061540    i   n   t   e   r   P   a   r   m   s   (   )       b   e  \r
0061560    /   /       -   -   -   -   -   -   -   -   -   -   -   -   -
0061600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0061640    -   -   -   -   -   -   -   -   -  \r  \t   [  \r  \t   l   e
0061660    t       v       =       C   h   e   c   k   P   r   A   t   t
0061700    r  \r  \t   l   e   t       p       =       p   r   i   n   t
0061720    e   r   D   e   v   i   c   e  \r  \t   v       =       v    
0061740    +       p   *   l   e   n   P   r   A   t   t   r  \r  \t   C
0061760    a   p   a   b   i   l   i   t   i   e   s       =       v   >
0062000    >   P   r   i   n   t   e   r   A   t   t   r   i   b   u   t
0062020    e   s   .   C   a   p   a   b   i   l   i   t   i   e   s    
0062040   \r      \t   P   a   p   e   r   D   i   m   e   n   s   i   o
0062060    n   B       =       v   >   >   P   r   i   n   t   e   r   A
0062100    t   t   r   i   b   u   t   e   s   .   P   a   p   e   r   D
0062120    i   m   e   n   s   i   o   n   B  \r      \t   P   a   p   e
0062140    r   D   i   m   e   n   s   i   o   n   S       =       v   >
0062160    >   P   r   i   n   t   e   r   A   t   t   r   i   b   u   t
0062200    e   s   .   P   a   p   e   r   D   i   m   e   n   s   i   o
0062220    n   S  \r      \t   P   a   p   e   r   S   p   e   e   d   I
0062240    n   c   h   e   s       =       v   >   >   P   r   i   n   t
0062260    e   r   A   t   t   r   i   b   u   t   e   s   .   P   a   p
0062300    e   r   S   p   e   e   d   I   n   c   h   e   s  \r      \t
0062320    S   c   a   n   L   e   n   g   t   h   I   n   c   h   e   s
0062340        =       v   >   >   P   r   i   n   t   e   r   A   t   t
0062360    r   i   b   u   t   e   s   .   S   c   a   n   L   e   n   g
0062400    t   h   I   n   c   h   e   s  \r      \t   L   a   n   d   s
0062420    c   a   p   e   D   e   v   i   c   e       =       v   >   >
0062440    P   r   i   n   t   e   r   A   t   t   r   i   b   u   t   e
0062460    s   .   L   a   n   d   s   c   a   p   e   D   e   v   i   c
0062500    e      \r      \t   p   r   i   n   t   e   r   F   o   r   w
0062520    a   r   d       =       v   >   >   P   r   i   n   t   e   r
0062540    A   t   t   r   i   b   u   t   e   s   .   p   r   i   n   t
0062560    e   r   F   o   r   w   a   r   d      \r      \t   b   r   e
0062600    a   k   P   a   g   e       =       v   >   >   P   r   i   n
0062620    t   e   r   A   t   t   r   i   b   u   t   e   s   .   b   r
0062640    e   a   k   P   a   g   e      \r      \t   B   i   t   M   a
0062660    r   g   i   n   A   d   j   u   s   t       =       v   >   >
0062700    P   r   i   n   t   e   r   A   t   t   r   i   b   u   t   e
0062720    s   .   B   i   t   M   a   r   g   i   n   A   d   j   u   s
0062740    t      \r      \t   S   c   a   n   M   a   r   g   i   n   A
0062760    d   j   u   s   t       =       v   >   >   P   r   i   n   t
0063000    e   r   A   t   t   r   i   b   u   t   e   s   .   S   c   a
0063020    n   M   a   r   g   i   n   A   d   j   u   s   t      \r    
0063040   \t   D   u   t   y   C   y   c   l   e       =       v   >   >
0063060    P   r   i   n   t   e   r   A   t   t   r   i   b   u   t   e
0063100    s   .   D   u   t   y   C   y   c   l   e      \r      \t   F
0063120    a   c   e   t   s       =       v   >   >   P   r   i   n   t
0063140    e   r   A   t   t   r   i   b   u   t   e   s   .   F   a   c
0063160    e   t   s      \r      \t   P   o   l   y   g   o   n   R   a
0063200    t   i   o       =       v   >   >   P   r   i   n   t   e   r
0063220    A   t   t   r   i   b   u   t   e   s   .   P   o   l   y   g
0063240    o   n   R   a   t   i   o      \r      \t   N   u   m   B   i
0063260    n   s       =       v   >   >   P   r   i   n   t   e   r   A
0063300    t   t   r   i   b   u   t   e   s   .   N   u   m   B   i   n
0063320    s      \r  \t   ]  \r  \r   /   /       -   -   -   -   -   -
0063340    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0063420   \r   a   n   d       S   a   v   e   P   r   i   n   t   e   r
0063440    P   a   r   m   s   (   )       b   e  \r   /   /       -   -
0063460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0063540    -   -   -   -  \r  \t   [  \r  \t   l   e   t       v       =
0063560        C   h   e   c   k   P   r   A   t   t   r  \r  \t   l   e
0063600    t       p       =       p   r   i   n   t   e   r   D   e   v
0063620    i   c   e  \r  \t   v       =       v       +       p   *   l
0063640    e   n   P   r   A   t   t   r  \r  \t   v   >   >   P   r   i
0063660    n   t   e   r   A   t   t   r   i   b   u   t   e   s   .   C
0063700    a   p   a   b   i   l   i   t   i   e   s       =       C   a
0063720    p   a   b   i   l   i   t   i   e   s      \r      \t   v   >
0063740    >   P   r   i   n   t   e   r   A   t   t   r   i   b   u   t
0063760    e   s   .   P   a   p   e   r   D   i   m   e   n   s   i   o
0064000    n   B       =       P   a   p   e   r   D   i   m   e   n   s
0064020    i   o   n   B  \r      \t   v   >   >   P   r   i   n   t   e
0064040    r   A   t   t   r   i   b   u   t   e   s   .   P   a   p   e
0064060    r   D   i   m   e   n   s   i   o   n   S       =       P   a
0064100    p   e   r   D   i   m   e   n   s   i   o   n   S  \r      \t
0064120    v   >   >   P   r   i   n   t   e   r   A   t   t   r   i   b
0064140    u   t   e   s   .   P   a   p   e   r   S   p   e   e   d   I
0064160    n   c   h   e   s       =       P   a   p   e   r   S   p   e
0064200    e   d   I   n   c   h   e   s  \r      \t   v   >   >   P   r
0064220    i   n   t   e   r   A   t   t   r   i   b   u   t   e   s   .
0064240    S   c   a   n   L   e   n   g   t   h   I   n   c   h   e   s
0064260        =       S   c   a   n   L   e   n   g   t   h   I   n   c
0064300    h   e   s  \r      \t   v   >   >   P   r   i   n   t   e   r
0064320    A   t   t   r   i   b   u   t   e   s   .   L   a   n   d   s
0064340    c   a   p   e   D   e   v   i   c   e       =       L   a   n
0064360    d   s   c   a   p   e   D   e   v   i   c   e      \r      \t
0064400    v   >   >   P   r   i   n   t   e   r   A   t   t   r   i   b
0064420    u   t   e   s   .   p   r   i   n   t   e   r   F   o   r   w
0064440    a   r   d       =       p   r   i   n   t   e   r   F   o   r
0064460    w   a   r   d      \r      \t   v   >   >   P   r   i   n   t
0064500    e   r   A   t   t   r   i   b   u   t   e   s   .   b   r   e
0064520    a   k   P   a   g   e       =       b   r   e   a   k   P   a
0064540    g   e      \r      \t   v   >   >   P   r   i   n   t   e   r
0064560    A   t   t   r   i   b   u   t   e   s   .   B   i   t   M   a
0064600    r   g   i   n   A   d   j   u   s   t       =       B   i   t
0064620    M   a   r   g   i   n   A   d   j   u   s   t      \r      \t
0064640    v   >   >   P   r   i   n   t   e   r   A   t   t   r   i   b
0064660    u   t   e   s   .   S   c   a   n   M   a   r   g   i   n   A
0064700    d   j   u   s   t       =       S   c   a   n   M   a   r   g
0064720    i   n   A   d   j   u   s   t      \r      \t   v   >   >   P
0064740    r   i   n   t   e   r   A   t   t   r   i   b   u   t   e   s
0064760    .   D   u   t   y   C   y   c   l   e           =       D   u
0065000    t   y   C   y   c   l   e  \r      \t   v   >   >   P   r   i
0065020    n   t   e   r   A   t   t   r   i   b   u   t   e   s   .   F
0065040    a   c   e   t   s       =       F   a   c   e   t   s      \r
0065060       \t   v   >   >   P   r   i   n   t   e   r   A   t   t   r
0065100    i   b   u   t   e   s   .   P   o   l   y   g   o   n   R   a
0065120    t   i   o       =       P   o   l   y   g   o   n   R   a   t
0065140    i   o      \r      \t   v   >   >   P   r   i   n   t   e   r
0065160    A   t   t   r   i   b   u   t   e   s   .   N   u   m   B   i
0065200    n   s       =       N   u   m   B   i   n   s      \r  \t   ]
0065220   \r  \r  \f  \r   /   /       -   -   -   -   -   -   -       H
0065240    i   s   t   o   r   y       .       .       .  \r  \r   /   /
0065260        D   C   S   ,       S   e   p   t   e   m   b   e   r    
0065300    6   ,       1   9   7   8           4   :   5   9       P   M
0065320    ,       d   e   r   i   v   e   d       f   r   o   m       n
0065340    o   n   -   d   i   s   p   l   a   y       v   e   r   s   i
0065360    o   n  \r   /   /       S   e   p   t   e   m   b   e   r    
0065400    7   ,       1   9   7   8           9   :   2   4       P   M
0065420    ,       m   o   r   e  \r   /   /       S   e   p   t   e   m
0065440    b   e   r       7   ,       1   9   7   8           1   0   :
0065460    0   7       P   M   ,       s   y   n   t   a   x       e   r
0065500    r   o   r   s  \r   /   /       S   e   p   t   e   m   b   e
0065520    r       8   ,       1   9   7   8           2   :   5   8    
0065540    P   M   ,       r   e   p   a   i   r       n   u   m   b   e
0065560    r       g   e   t   ,       o   c   t   a   l       d   i   s
0065600    p   l   a   y  \r   /   /       S   e   p   t   e   m   b   e
0065620    r       9   ,       1   9   7   8           2   :   3   0    
0065640    P   M   ,       a   d   d       f   i   l   e       s   t   u
0065660    f   f  \r   /   /       S   e   p   t   e   m   b   e   r    
0065700    1   1   ,       1   9   7   8           1   0   :   4   9    
0065720    A   M   ,       s   p   l   i   t       m   e   n   u   s    
0065740    (   s   o   b   )       f   o   r       s   p   a   c   e    
0065760    r   e   a   s   o   n   s   ,       f   i   x       s   t   r
0066000    i   n   g       i   n   p   u   t       b   u   g  \r   /   /
0066020        S   e   p   t   e   m   b   e   r       1   2   ,       1
0066040    9   7   8           6   :   5   3       A   M   ,       r   e
0066060    p   a   i   r       l   i   n   g   e   r   i   n   g       p
0066100    r   o   b   l   e   m   s  \r   /   /       S   e   p   t   e
0066120    m   b   e   r       1   4   ,       1   9   7   8           1
0066140    2   :   2   5       P   M   ,       a   l   l   o   w       S
0066160    P   r   u   c   e   F   i   l   e   s       t   o       u   s
0066200    e       t   h   e   i   r       d   e   f   a   u   l   t    
0066220    d   e   v   i   c   e   s  \r   /   /       S   e   p   t   e
0066240    m   b   e   r       1   8   ,       1   9   7   8           1
0066260    0   :   2   9       A   M   ,       c   h   a   n   g   e    
0066300    i   n       F   P   R   D       i   n   s   t   a   l   l   a
0066320    t   i   o   n  \r   /   /       S   e   p   t   e   m   b   e
0066340    r       1   9   ,       1   9   7   8           1   :   2   4
0066360        P   M   ,       f   o   r   m   a   t   ,       d   o   c
0066400    u   m   e   n   t  \r   /   /       S   e   p   t   e   m   b
0066420    e   r       2   1   ,       1   9   7   8           3   :   4
0066440    5       P   M   ,       c   o   n   t   r   i   b   u   t   e
0066460        m   e   n   u       s   p   e   c       t   o       s   t
0066500    o   r   a   g   e       a   f   t   e   r       u   s   e   .
0066520   \r   /   /       O   c   t   o   b   e   r       1   7   ,    
0066540    1   9   7   8       2   :   5   5       P   M   ,       t   u
0066560    r   n       p   u   f   f   i   n       o   n   .       B   W
0066600    B  \r   /   /       O   c   t   o   b   e   r       1   9   ,
0066620        1   9   7   8           1   0   :   5   7       A   M   ,
0066640        c   o   n   t   r   i   b   u   t   e       u   n   u   s
0066660    e   d       r   u   n   t   i   m   e       c   o   d   e    
0066700    t   o       s   t   o   r   a   g   e   ,       r   i   g   h
0066720    t       a   w   a   y  \r   /   /       N   o   v   e   m   b
0066740    e   r       1   0   ,       1   9   7   8           1   0   :
0066760    3   1       A   M   ,       i   n   c   r   e   a   s   e    
0067000    i   n   s   t   a   l   l   a   t   i   o   n       s   t   a
0067020    c   k       s   i   z   e  \r   /   /           f   i   r   s
0067040    t       c   u   t       w   i   t   h       P   r   i   n   t
0067060    e   r   A   t   t   r   i   b   u   t   e       s   t   u   f
0067100    f  \r   /   /       M   a   r   c   h       7   ,       1   9
0067120    7   9           1   1   :   4   1       A   M       c   o   r
0067140    r   e   c   t       p   u   f   f   i   n       i   n   s   t
0067160    a   l   l       v   a   l   u   e   s   ,       f   i   x    
0067200    P   u   t   N   u   m   b   e   r   ,       c   r   u   d   e
0067220        v   a   l   i   d   i   t   y       c   h   e   c   k  \r
0067240    /   /           f   i   x       ~   ~   .   d       n   a   m
0067260    e   s  \r   /   /       M   a   y       9   ,       1   9   7
0067300    9           4   :   0   2       P   M       b   u   m   p    
0067320    m   e   n   u   s   i   z   e       b   y       o   n   e    
0067340    t   o       a   l   l   o   w       f   o   r       e   v   e
0067360    n       w   o   r   d       a   l   i   g   n   m   e   n   t
0067400   \r   /   /       J   u   l   y       1   ,       1   9   7   9
0067420            3   :   2   1       P   M   ,       s   e   t       d
0067440    e   f   a   u   l   t       p   r   i   n   t   e   r       c
0067460    a   p   a   b   i   l   i   t   i   e   s  \r   /   /       A
0067500    u   g   u   s   t       2   9   ,       1   9   7   9        
0067520    1   0   :   5   2       A   M   ,       a   d   d       N   u
0067540    m   B   i   n   s       t   o       p   r   i   n   t   e   r
0067560        a   t   t   r   i   b   u   t   e       s   t   u   f   f
0067600   \r   /   /       S   e   p   t   e   m   b   e   r       2   5
0067620    ,       1   9   7   9           2   :   5   3       P   M   ,
0067640        g   e   t       p   r   i   n   t   e   r       d   e   v
0067660    i   c   e       n   a   m   e   s       f   r   o   m       U
0067700    s   e   r   .   C   m  \r   /   /       J   a   n   u   a   r
0067720    y       3   0   ,       1   9   8   0       1   :   5   2    
0067740    P   M   ,       L   o   a   d       o   r   b   i   t       c
0067760    o   n   t   r   o   l   l   i   n   g       m   i   c   r   o
0070000    c   o   d   e  \r   /   /      \r  \0  \0 032   (   6   3   5
0070020    )   \   6   4   9   b   3   3   B   7   2   8   b   1   4   B
0070040    4   2   3   1   b   2   4   5   B   7   b   1   0   B   3   8
0070060    6   2   b   1   0   B  \r                                    
0070067