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