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