---------------------------------------------------------------- 0 Welcome to Konilo 1 2 ,dPYb, ,dPYb, 3 IP'`Yb IP'`Yb 4 I8 8I gg I8 8I 5 I8 8bgg, "" I8 8' 6 I8 dP" "8 ,ggggg, ,ggg,,ggg, gg I8 dP ,ggggg, 7 I8d8bggP" dP" "Y8 ,8" "8P" "8, 88 I8dP dP" "Y8 8 I8P' "Yb, i8' ,8I d8 8I 8I 88 I8P i8' ,8I 9 ,d8 `Yb,,d8, ,d8P8P 8I Yb,_,88,_,d8b,_ ,d8, ,d8' 10 88P Y8P"Y8888P" 8I `Y88P""Y88P'"Y88P"Y8888P" 11 12 `manual` for the users guide 13 `blocks` for help using the block editor 14 `describe name` for help on a specific word 15 `catalogue` to explore the blocks ---------------------------------------------------------------- 0 (startup) (configure_blocks,_load_extensions) 1 2 . You should setup the numbers of blocks in your system. 3 4 #4,096 !Blocks 5 6 . Load desired extensions. As Konilo uses a single shared 7 . buffer for blocks, I wrap these in a quote, and make `call` 8 . the last item in this block. This ensures proper behavior. 9 10 [ @Blocks [ #128 !Blocks 11 '(std) needs '(termina) needs 12 '(tools:describe) needs '(tools:blocks) needs 13 '(tools:manual) needs '(tools:catalogue) needs 14 '(tuhi) needs '(nonix) needs 15 ] dip !Blocks ] call ---------------------------------------------------------------- 0 (startup) (local-configuration) 1 2 . If you load things like (termina) or (graphica), you may want 3 . to set various variables relating to the local environment. Do 4 . this here. 5 6 #75 !ti:width 7 #20 !ti:height 8 9 [ (n-) set load tuhi ] !Editor 10 11 12 13 14 . On startup, display the welcome message in block 0. 15 [ #0 set load list* nl ] call ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (constants) 1 2 . Constants for numeric range limits. 3 4 :n:MIN #-2,147,483,647 ; 5 :n:MAX #2,147,483,646 ; 6 7 . Constants for flags. 8 9 :TRUE #-1 ; 10 :FALSE #0 ; 11 12 . Constants for memory layout 13 14 :sys:BUFFERS #60,000 ; 15 :sys:EOM #65,535 ; ---------------------------------------------------------------- 0 (std) (s:) (constants) 1 2 :s:DIGITS '0123456789ABCDEF ; 3 :s:VOWELS 'aeiouAEIOU ; 4 :s:ASCII-UPPERCASE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ; 5 :s:ASCII-LOWERCASE 'abcdefghijklmnopqrstuvwxyz ; 6 :s:ASCII-LETTERS 7 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ; 8 's:WHITESPACE d:create #4 comma 9 #9 comma #10 comma #13 comma #32 comma 10 :s:PUNCTUATION '_!"#$%&'()*+,-./:;<=>?@[\]^`{|}~ ; 11 :s:CONSONANTS 'bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ ; 12 13 14 15 ---------------------------------------------------------------- 0 (std) (c:) (classification) 1 2 :c:consonant? (c-f) s:CONSONANTS swap s:contains? ; 3 :c:vowel? (c-f) s:VOWELS swap s:contains? ; 4 :c:letter? (c-f) s:ASCII-LETTERS swap s:contains? ; 5 :c:digit? (c-f) s:DIGITS swap s:contains? ; 6 :c:whitespace? (c-f) s:WHITESPACE swap s:contains? ; 7 :c:visible? (c-f) #32 #126 n:between? ; 8 :c:-consonant? (c-f) c:consonant? not ; 9 :c:-vowel? (c-f) c:vowel? not ; 10 :c:-letter? (c-f) c:letter? not ; 11 :c:-digit? (c-f) c:digit? not ; 12 :c:-whitespace? (c-f) c:whitespace? not ; 13 :c:-uppercase? (c-f) c:uppercase? not ; 14 :c:-lowercase? (c-f) c:lowercase? not ; 15 :c:-visible? (c-f) c:visible? not ; ---------------------------------------------------------------- 0 (std) (c:) (conversions) 1 2 :c:toggle-case dup c:lowercase? &c:to-upper &c:to-lower choose ; 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (n:) (even,odd,sign,square,sqrt) 1 2 :n:odd? (n-f) #1 and #1 eq? ; 3 :n:even? (n-f) n:odd? not ; 4 5 :n:negative? (n-f) #0 lt? ; 6 :n:postitive? (n-f) #0 gt? ; 7 :n:strictly-positive? (n-f) #1 gteq? ; 8 9 :n:square (n-n) dup n:mul ; 10 11 :~guess dup-pair n:div over n:sub #2 n:div ; 12 :n:sqrt (n-n) #1 [ ~guess &n:add sip ] while nip ; 13 14 :n:sign (n-n) n:negative? [ #-1 ] [ #1 ] choose ; 15 ---------------------------------------------------------------- 0 (std) (v:) 1 2 :v:preserve (aq-) swap dup fetch [ &call dip ] dip swap store ; 3 :v:inc-by (an-) [ fetch n:add ] sip store ; 4 :v:dec-by (an-) [ fetch swap n:sub ] sip store ; 5 :v:on (a-) #-1 swap store ; 6 :v:off (a-) #0 swap store ; 7 :v:update (aq-) swap [ fetch swap call ] sip store ; 8 :v:limit (alu-) [ [ dup fetch ] dip ] dip n:limit swap store ; 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (buffer:) 1 2 {{ 3 'Start var 'Ptr var 4 :at @Start @Ptr ; 5 :update @Ptr @Start store ; 6 ---reveal--- 7 :buffer:size (-n) at nip ; 8 :buffer:end (-a) at n:inc n:add ; 9 :buffer:start (-a) @Start ; 10 :buffer:empty (-) #0 !Ptr update ; 11 :buffer:add (na-) at a:store &Ptr v:inc update ; 12 :buffer:get (a-) &Ptr v:dec at a:fetch update ; 13 :buffer:set (a-) !Start #0 !Ptr update ; 14 }} 15 ---------------------------------------------------------------- 0 (std) (s:) (begins-with,ends-with) 1 2 :~prepare dup s:length &swap dip ; 3 :s:begins-with? (ss-f) ~prepare s:left &s:hash bi@ eq? ; 4 :s:ends-with? (ss-f) ~prepare s:right &s:hash bi@ eq? ; 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (s:) (contains/s?) 1 2 '~tar var '~src var 3 '~tar.l var '~src.l var 4 5 :s:contains/s? (ss-f) 6 [ s:keep [ s:length !~tar.l ] [ !~tar ] bi 7 s:keep [ s:length !~src.l ] [ !~src ] bi 8 #0 @~src.l @~tar.l n:sub n:inc 9 [ @~src I @~tar.l s:middle @~tar s:eq? or ] indexed-times 10 ] gc ; 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (s:) (index/s) 1 2 {{ 3 'tar var 'src var 4 'tar.l var 'src.l var 5 ---reveal--- 6 :s:index/s (ss-n) 7 [ s:keep [ s:length !tar.l ] [ !tar ] bi 8 s:keep [ s:length !src.l ] [ !src ] bi 9 #65535 @src.l @tar.l n:sub n:inc 10 [ @src I @tar.l s:middle @tar s:eq? [ I n:min ] if ] 11 indexed-times ] gc ; 12 }} 13 14 15 ---------------------------------------------------------------- 0 (std) (bit:) (bit-access) 1 2 :bit:get (vi-b) [ #1 swap shift-left and ] sip shift-right ; 3 :bit:set (vi-v) #1 swap shift-left or ; 4 :bit:clear (vi-v) #1 swap shift-left not and ; 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (b:) (byte-addressing) 1 2 'Byte var 3 4 :byte-mask (xn-b) 5 #255 swap #8 n:mul dup 6 [ shift-left and ] dip shift-right ; 7 8 [ drop @Byte ] 9 [ [ drop @Byte ] dip ] 10 [ [ [ drop @Byte ] dip ] dip ] 11 [ [ [ [ drop @Byte ] dip ] dip ] dip ] 12 'replacements d:create comma comma comma comma 13 14 :replace &replacements n:add fetch call ; 15 ---------------------------------------------------------------- 0 (std) (b:) (byte-addressing) 1 2 :b:to-byte-address (a-a) #4 n:mul ; 3 4 :b:unpack (c-bbbb) 5 dup #255 and swap 6 dup #8 shift-right #255 and swap 7 dup #16 shift-right #255 and swap 8 #24 shift-right #255 and ; 9 10 :b:pack (bbbb-c) 11 #24 shift-left swap 12 #16 shift-left n:add swap 13 #8 shift-left n:add swap n:add ; 14 15 ---------------------------------------------------------------- 0 (std) (b:) (byte-addressing) 1 2 :b:fetch (a-b) 3 #4 n:divmod swap 4 #4 n:divmod 5 rot n:add fetch swap byte-mask ; 6 7 :b:store (ba-) 8 swap !Byte 9 #4 n:divmod swap [ dup fetch b:unpack ] dip 10 replace b:pack swap store ; 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (pali) (assembler) 1 2 'Instructions d:create #30 comma 3 #5861473 comma #5863578 comma #5863326 comma 4 #5863323 comma #5863823 comma #5863722 comma 5 #5863716 comma #5863524 comma #5863273 comma 6 #5863275 comma #5863282 comma #5863772 comma 7 #5863355 comma #5863640 comma #5863589 comma 8 #5863424 comma #5863376 comma #5863820 comma 9 #5863210 comma #5863821 comma #5863623 comma 10 #5863314 comma #5863220 comma #5863686 comma 11 #5863980 comma #5863812 comma #5863818 comma 12 #5863288 comma #5863297 comma #5863485 comma 13 14 15 :inst s:hash &Instructions swap a:index ; ---------------------------------------------------------------- 0 (std) (pali) (reserved) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (pali) (assembler) 1 2 :~split (s-nnnn) 3 dup #2 s:left inst swap dup #2 #2 s:middle inst swap 4 dup #4 #2 s:middle inst swap #2 s:right inst ; 5 6 :assemble:opcode (s-n) ~split b:pack ; 7 8 :i (s-) assemble:opcode comma ; 9 &comma \d (n-) 10 &comma \r (n-) 11 :s (s-) dup s:length comma &comma s:for-each ; 12 13 14 15 ---------------------------------------------------------------- 0 (std) (reorder,_roll,_unroll) (restructuring-the-stack) 1 2 {{ 3 'values d:create #27 allot 4 :from s:length dup [ [ &values n:add store ] sip n:dec ] times 5 drop ; 6 :to [ n:inc ] [ s:length ] bi 7 [ fetch-next $a n:sub n:inc &values n:add fetch swap ] 8 times drop ; 9 ---reveal--- 10 :reorder (...ss-?) &from dip to ; 11 }} 12 13 :roll (abc-cab) swap &swap dip ; 14 :unroll (cba-abc) roll roll ; 15 ---------------------------------------------------------------- 0 (std) (reset) (quickly-empty-the-stack) 1 2 :reset (...-) 3 depth/data dup n:negative? 4 [ n:abs [ #0 ] ] 5 [ &drop ] choose times ; 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (.s) (display-stack) 1 2 {{ 3 'Data d:create #33 allot 4 :gather depth/data dup &Data store-next swap 5 [ store-next ] times drop ; 6 :display &Data a:reverse [ n:put sp ] a:for-each nl ; 7 :restore &Data a:reverse [ ] a:for-each ; 8 ---reveal--- 9 :.s (-) gather display restore ; 10 }} 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (debug/dump) 1 2 {{ 3 :digits (-s) '0123456789ABCDEF ; 4 :to-digit (n-c) digits swap s:fetch ; 5 :h. (n-) #16 n:divmod swap [ to-digit c:put ] bi@ sp ; 6 :order 'abcd 'dcba reorder ; 7 :bytes (n-n) dup b:unpack order #4 &h. times ; 8 :display (nn-n) bytes sp n:put nl ; 9 ---reveal--- 10 :dump (an-) [ dup n:put tab fetch-next display ] times drop ; 11 }} 12 13 14 15 ---------------------------------------------------------------- 0 (std) (random-number-generator) (xorshift) 1 2 #1 'seed var-n 3 4 :n:random (-n) 5 @seed 6 dup #13 shift-left xor 7 dup #17 shift-right xor 8 dup #5 shift-left xor 9 dup !seed ; 10 11 :n:random-mod (n-n) 12 n:random n:abs swap n:mod ; 13 14 . Note: this works well for small projects, but lacks some 15 . range due to ilo's lack of unsigned numbers. ---------------------------------------------------------------- 0 (std) (block-tools) 1 2 :block:empty? (n-f) 3 @Block [ set load block:buffer n:dec s:hash #-967633659 4 eq? ] dip !Block load ; 5 6 :block:for-each (q-) 7 @Blocks [ [ I set load block:buffer swap call ] sip ] 8 indexed-times drop ; 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (std) (block-tools) 1 2 {{ 3 :prep (-ns) @Block swap s:keep #0 set ; 4 :get (-s) load next block:buffer n:dec ; 5 :match? (ss-sf) over s:begins-with? ; 6 :last? (-f) @Block @Blocks n:dec eq? ; 7 :select (ns-n) drop last? [ drop @Block ] -if ; 8 ---reveal--- 9 :block:first-matching (s-n) 10 [ prep [ get match? last? or ] until select ] gc ; 11 }} 12 13 14 15 ---------------------------------------------------------------- 0 (std) (editor-ext) 1 2 'Line d:create #64 allot 3 4 :e:copy (n-) e:to-line &Line #64 copy ; 5 :e:paste (n-) e:to-line &Line swap #64 copy ; 6 :e:cut (n-) dup e:copy #32 swap e:to-line #64 fill ; 7 8 {{ 9 :get '_ s:temp #64 over store [ n:inc #64 copy ] sip ; 10 :update n:inc swap #64 copy ; 11 :at e:to-line dup get ; 12 ---reveal--- 13 :e:indent at #62 s:left '__ s:prepend update ; 14 :e:unindent at #62 s:right '__ s:append update ; 15 }} ---------------------------------------------------------------- 0 (std) (editor-ext) 1 2 :e:for-each-line (q-) 3 #16 [ block:buffer n:dec 4 I #64 n:mul #64 s:middle swap &call sip ] 5 indexed-times drop ; 6 7 8 9 10 11 12 :n (-) next list ; 13 :p (-) prev list ; 14 &list \l 15 ---------------------------------------------------------------- 0 (std) (fixed-point) 1 2 #100 'f:scale var-n 3 4 (ff-f) &n:add \f:add 5 (ff-f) &n:sub \f:sub 6 (ff-f) :f:mul n:mul @f:scale n:div ; 7 (ff-f) :f:div [ @f:scale n:mul ] dip n:div ; 8 9 (----) :~pad @f:scale n:to-s s:length n:dec over 10 n:to-s s:length n:sub [ $0 c:put ] times ; 11 (f-) :f:put @f:scale n:divmod n:put $. c:put ~pad n:put ; 12 13 14 15 ---------------------------------------------------------------- 0 (std) (invoke,_*) 1 2 :invoke (ss-) 3 dup d:exists? &nip [ swap needs ] choose 4 d:lookup d:address fetch call ; 5 6 :~title ("-n) s:get/token '(LOAD: s:prepend ') s:append ; 7 :* ("-) ~title block:first-matching set load 8 &[ call run &] call call ; 9 10 . `invoke` takes a block set and a word to run, if the word is 11 . found, it will load the block set, then run the word 12 13 . `*` takes the name of a LOAD: block. This will have a title of 14 . `(LOAD:name)` and will contain a list of words that load the 15 . dependencies and active block set. ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:blocks) (block-editor-reference) 1 2 . `blocks` starts the editor on a set of tutorial/reference 3 . blocks. 4 5 :blocks (-) #1016 edit ; 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:manual-viewer) 1 2 #8,192 'man:start var-n #8,303 'man:end var-n 3 #0 'man:cur var-n #0 'man:done var-n 4 5 :man:page (-) @man:start @man:cur n:add set load list* ; 6 :man:length (-n) @man:end @man:start n:sub ; 7 :man:hints '(1)_prev__(2)_next__(0)_exit s:put tab c:get ; 8 :man:display (-) @Block man:page !Block load man:hints ; 9 :man:limit (-) @man:cur #0 man:length n:limit !man:cur ; 10 :man:0 (n-n) dup $0 eq? [ #-1 !man:done ] if ; 11 :man:1 (n-n) dup $1 eq? [ &man:cur v:dec ] if ; 12 :man:2 (n-) $2 eq? [ &man:cur v:inc ] if man:limit ; 13 :man:prepare (-) #0 !man:done ; 14 :manual (-) man:prepare 15 [ man:display man:0 man:1 man:2 @man:done ] until ; ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (listener) 1 2 {{ 3 'Done var 4 :bye? dup 'bye s:eq? ; 5 :exit (n-) drop #-1 !Done ; 6 ---reveal--- 7 :listener (-) 8 'Hi!_Enter_`bye`_when_done. s:put nl 9 #0 !Done [ s:get/token bye? 10 &exit &interpret choose @Done ] until ; 11 }} 12 13 . This implements a tiny nested Forth listener for Konilo. It's 14 . basically intended to allow some interactive use for sessions 15 . started under the kowae launcher. ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Termina : A Vocabulary for Terminal Applications =============== 1 2 There are two parts to Termina. The first is a set of words for 3 interacting with a DEC compatible terminal. The second builds on 4 these to provide a scaffold for building textual, keyboard 5 centric programs. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (termina) (terminal-config) 1 2 #74 'ti:width var-n 3 #21 'ti:height var-n 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (termina) (support;_cursor_movement;_clear_screen) 1 2 :vt:esc (-) #27 c:put ; 3 :vt:csi (-) vt:esc $[ c:put ; 4 5 6 7 :vt:home (-) vt:csi $H c:put ; 8 :vt:row,col (nn-) vt:csi swap n:put $; c:put n:put $H c:put ; 9 :vt:up (-) vt:csi n:put $A c:put ; 10 :vt:down (-) vt:csi n:put $B c:put ; 11 :vt:right (-) vt:csi n:put $C c:put ; 12 :vt:left (-) vt:csi n:put $D c:put ; 13 :vt:clear (-) vt:csi '2J s:put ; 14 :vt:reset vt:csi '0m s:put ; 15 ---------------------------------------------------------------- 0 (termina) (colors) 1 2 :vt:set/color (n-) vt:csi n:put $m c:put ; 3 4 (foreground_________background_____) 5 :fg:black #30 vt:set/color ; :bg:black #40 vt:set/color ; 6 :fg:red #31 vt:set/color ; :bg:red #41 vt:set/color ; 7 :fg:green #32 vt:set/color ; :bg:green #42 vt:set/color ; 8 :fg:yellow #33 vt:set/color ; :bg:yellow #43 vt:set/color ; 9 :fg:blue #34 vt:set/color ; :bg:blue #44 vt:set/color ; 10 :fg:magenta #35 vt:set/color ; :bg:magenta #45 vt:set/color ; 11 :fg:cyan #36 vt:set/color ; :bg:cyan #46 vt:set/color ; 12 :fg:white #37 vt:set/color ; :bg:white #47 vt:set/color ; 13 14 15 ---------------------------------------------------------------- 0 (termina) (key-to-action-mapping) 1 2 'ti:Actions d:create #128 comma #128 allot 3 4 :ti:set-action (qc-) &ti:Actions swap a:store ; 5 6 :ti:reset-actions (-) 7 #128 [ #0 I ti:set-action ] indexed-times ; 8 9 :ti:get-action (c-q) &ti:Actions swap a:fetch ; 10 11 :ti:perform-action (c-) 12 ti:get-action dup n:-zero? &call &drop choose ; 13 14 :ti:input (-) c:get ti:perform-action ; 15 ---------------------------------------------------------------- 0 (termina) (keyboard-hints) 1 {{ 2 'ti:Hints d:create #130 allot :empty (-s) '____________ ; 3 :constrain (s-s) dup s:length #12 gt? [ #12 s:left ] if ; 4 :pad (s-s) #32 empty n:inc #12 fill 5 empty &n:inc bi@ over n:dec fetch copy empty ; 6 :start (n-a) #13 n:mul &ti:Hints n:add ; 7 :display (-) I n:inc dup #10 eq? [ drop #0 ] if 8 dup n:put sp start s:put sp ; 9 :clean (-) '_ s:temp constrain pad I start #13 copy ; 10 ---reveal--- 11 :ti:add-hint (sn-) 12 #13 n:mul &ti:Hints n:add [ constrain pad ] dip #13 copy ; 13 :ti:reset-hints (-) #10 &clean indexed-times ; 14 :ti:hints #10 [ display I #4 eq? &nl if ] indexed-times ; 15 }} ---------------------------------------------------------------- 0 (termina) (display) 1 2 :ti:display/none ; 3 4 &ti:display/none 'ti:Display var-n 5 6 :ti:set-display (a-) !ti:Display ; 7 8 :ti:reset-display (-) &ti:display/none ti:set-display ; 9 10 :ti:display (-) 11 vt:home @ti:Display call 12 @ti:height #3 n:sub #0 vt:row,col @ti:width [ $- c:put ] times 13 nl ti:hints nl ; 14 15 ---------------------------------------------------------------- 0 (termina) (nested-applications-support) 1 2 'ti:ptrs d:create #0 comma #5 allot 3 :ti:add-program (a-) &ti:ptrs v:inc &ti:ptrs @ti:ptrs a:store ; 4 :ti:current (-a) &ti:ptrs @ti:ptrs a:fetch ; 5 :ti:more? (-f) @ti:ptrs n:-zero? ; 6 :ti:remove &ti:ptrs v:dec ; 7 8 :ti:load (-) 9 ti:current call 10 !ti:Display ti:reset-hints call ti:reset-actions call ; 11 12 13 14 15 ---------------------------------------------------------------- 0 (termina) (application-loop) 1 2 'ti:Done var 3 :ti:done #-1 !ti:Done vt:reset nl ; 4 :ti:done? @ti:Done ; 5 6 :ti:application/run (-) 7 [ #0 !ti:Done ti:display ti:input ti:done? ] until 8 ti:remove ti:more? [ ti:load #0 !ti:Done ] if ; 9 10 11 :ti:application (q-) 12 ti:add-program ti:load ti:application/run ; 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (termina) (ti:help) 1 2 {{ 3 'ti:Help var 'ti:Help/Prior var 4 :ti:help/actions &ti:done $0 ti:set-action ; 5 :ti:help/hints 'Quit #0 ti:add-hint ; 6 :ti:help/display 7 vt:clear vt:home 8 @ti:Help set load list* ; 9 ---reveal--- 10 :ti:help (n-) 11 @Block !ti:Help/Prior !ti:Help 12 [ &ti:help/actions &ti:help/hints &ti:help/display ] 13 ti:application @ti:Help/Prior set load ; 14 }} 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:catalogue) (variables,_actions) 1 2 #0 'Page var-n 3 &edit 'Editor var-n 4 5 :constrain @Page #0 @Blocks #16 n:div n:dec n:limit !Page ; 6 7 :action (n-) ti:done @Page #16 n:mul n:add @Editor call ; 8 9 :catalogue:rename 10 c:get $a n:sub @Page #16 n:mul n:add 11 set load 0 save ; 12 13 14 15 ---------------------------------------------------------------- 0 (tools:catalogue) (actions,_continued) 1 2 :catalogue:list 3 c:get $a n:sub @Page #16 n:mul n:add 4 set load vt:clear vt:home list# sys:info 5 nl 'Press_x_when_done s:put nl 6 [ c:get $x eq? ] until ; 7 8 :catalogue:jump 9 n:get #16 n:div !Page constrain ; 10 11 :catalogue:leap 12 [ s:get/token s:keep #0 set load 13 [ block:buffer n:dec over s:begins-with? next 14 @Block @Blocks n:dec eq? or ] until drop prev ] gc 15 @Block #16 n:div !Page constrain ; ---------------------------------------------------------------- 0 (tools:catalogue) (key-bindings) 1 2 :catalogue:actions/a-i 3 [ #0 action ] $a ti:set-action 4 [ #1 action ] $b ti:set-action 5 [ #2 action ] $c ti:set-action 6 [ #3 action ] $d ti:set-action 7 [ #4 action ] $e ti:set-action 8 [ #5 action ] $f ti:set-action 9 [ #6 action ] $g ti:set-action 10 [ #7 action ] $h ti:set-action 11 [ #8 action ] $i ti:set-action ; 12 13 14 15 ---------------------------------------------------------------- 0 (tools:catalogue) (key-bindings) 1 2 :catalogue:actions/j-p 3 [ #9 action ] $j ti:set-action 4 [ #10 action ] $k ti:set-action 5 [ #11 action ] $l ti:set-action 6 [ #12 action ] $m ti:set-action 7 [ #13 action ] $n ti:set-action 8 [ #14 action ] $o ti:set-action 9 [ #15 action ] $p ti:set-action ; 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:catalogue) (key-bindings) 1 2 :catalogue:actions 3 [ &Page v:dec constrain ] $1 ti:set-action 4 [ &Page v:inc constrain ] $2 ti:set-action 5 [ ti:done ] $0 ti:set-action 6 catalogue:actions/a-i 7 catalogue:actions/j-p 8 [ catalogue:rename ] $8 ti:set-action 9 [ catalogue:list ] $3 ti:set-action 10 [ catalogue:jump ] $4 ti:set-action 11 [ catalogue:leap ] $9 ti:set-action 12 ; 13 14 15 ---------------------------------------------------------------- 0 (tools:catalogue) (hints) 1 2 :catalogue:hints 3 'Previous #1 ti:add-hint 4 'Next #2 ti:add-hint 5 'Display #3 ti:add-hint 6 'Rename #8 ti:add-hint 7 'Quit #0 ti:add-hint 8 'Jump #4 ti:add-hint 9 'Leap #9 ti:add-hint ; 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:catalogue) (display) 1 2 {{ 3 :key I $a n:add c:put '_|_ s:put ; 4 :entry (-n) @Page #16 n:mul I n:add ; 5 :title (-) entry set load 6 block:buffer n:dec #64 over store s:put ; 7 ---reveal--- 8 :catalogue:display 9 vt:clear vt:home 10 #16 [ key title '_|_ s:put entry n:put nl ] indexed-times ; 11 }} 12 13 14 15 ---------------------------------------------------------------- 0 (tools:catalogue) (top-level) 1 2 :catalogue (-) 3 [ &catalogue:actions &catalogue:hints &catalogue:display ] 4 ti:application ; 5 6 &catalogue \catalog 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 tools:describe 1 2 This adds a word, `describe`, that scans the blocks for glossary 3 data. It takes a word name from the input stream, and looks for 4 a block with a title of `Glossary: wordname` 5 6 In example, to display the glossary data for `s:put`, you would 7 run: 8 9 describe s:put 10 11 The output strips blank lines. 12 13 Note that as this requires one block per word it is not a space 14 efficient tool. You will need around 250 blocks to cover the 15 core language, and many more to cover everything. ---------------------------------------------------------------- 0 (tools:describe) (glossary-lookups) 1 2 {{ 3 :empty? (-f) 4 #-1 I #2 n:add e:to-line 5 #64 [ fetch-next #32 eq? swap &and dip ] times drop ; 6 ---reveal--- 7 :describe:line (-) empty? [ I #2 n:add e:line ] -if ; 8 :describe:word (s-) @Block swap 9 [ 'Glossary:_ s:prepend '_ s:append s:keep @Blocks 10 [ I set load block:buffer n:dec over 11 dup s:length &swap dip s:left &s:hash bi@ eq? 12 [ nl #13 &describe:line indexed-times nl ] if 13 ] indexed-times drop ] gc !Block load ; 14 :describe ('-) s:get/token s:temp describe:word ; 15 }} ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:manual) (display) 1 2 #3,792 'manual:start var-n 3 #3,891 'manual:end var-n 4 'manual:page var 5 6 :manual:display 7 @Block vt:clear vt:home 8 @manual:page @manual:start n:add !Block load list* 9 !Block ; 10 11 :manual:constrain-page 12 @manual:page #0 @manual:end @manual:start n:sub n:dec n:limit 13 !manual:page ; 14 15 ---------------------------------------------------------------- 0 (tools:manual) (hints) 1 2 :manual:hints 3 'Prior #1 ti:add-hint 4 'Next #2 ti:add-hint 5 'Quit #0 ti:add-hint 6 ; 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:manual) (key-bindings) 1 2 :manual:prev &manual:page v:dec manual:constrain-page ; 3 :manual:next &manual:page v:inc manual:constrain-page ; 4 5 :manual:actions 6 &manual:prev $1 ti:set-action 7 &manual:next $2 ti:set-action 8 &ti:done $0 ti:set-action 9 ; 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:manual) (top-level) 1 2 :manual 3 [ &manual:actions &manual:hints &manual:display ] 4 ti:application ; 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 tuhi - a terminal block editor 1 2 This is designed to be similar in spirit to the basic editor in 3 Konilo, but makes use of the (termina) words to present a hotkey 4 driven interface for editing. 5 6 Tuhi has two display modes: 7 8 - plain text shown as a single color 9 - source code shown with syntax highlighting 10 11 Syntax mode will be used if the block starts with a "(" and 12 `tuhi:cfg/syntax` is set to true (non-zero). In other cases 13 the plain text mode is used. 14 15 ---------------------------------------------------------------- 0 (tuhi) (configuration) 1 2 &fg:cyan 'tuhi:cfg/colors,line# var-n 3 &bg:black 'tuhi:cfg/colors,bg var-n 4 &fg:green 'tuhi:cfg/colors,fg var-n 5 #-1 'tuhi:cfg/syntax var-n 6 #0 'tuhi:cfg/status var-n 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tuhi) (list:syntax) (default-colors) 1 2 :~colon bg:black fg:red ; (: 3 :~immed bg:black fg:green ; (word:_[_]_; 4 :~number bg:black fg:cyan ; (# 5 :~char bg:black fg:yellow ; ($ 6 :~string bg:black fg:white ; (' 7 :~pointer bg:black fg:magenta ; (& 8 :~comment bg:blue fg:white ; (( 9 :~var bg:black fg:magenta ; (@_or_! 10 :~normal bg:black fg:green ; 11 12 '~SigilColors d:create #8 comma 13 &~colon comma &~number comma &~char comma 14 &~string comma &~pointer comma &~comment comma 15 &~var comma &~var comma ---------------------------------------------------------------- 0 (tuhi) (list:syntax) (helpers) 1 2 ':#$'&(@! s:keep \~Sigils 3 4 :~sigil? (c-cf) &~Sigils over s:contains? ; 5 6 :~color-sigil (c-c) 7 &~Sigils over s:index/c &~SigilColors swap a:fetch call ; 8 9 :~space? (c-cf) dup #32 eq? ; 10 11 '~last var 12 13 14 15 ---------------------------------------------------------------- 0 (tuhi) (list:syntax) (display) 1 2 :~prepare (n-an) #64 n:mul block:buffer n:add #64 #32 !~last ; 3 4 :e:line/syntax (n-) 5 ~prepare 6 [ fetch-next 7 ~sigil? [ @~last #32 eq? [ ~color-sigil ] if ] if 8 ~space? [ @~last #32 -eq? [ ~normal ] if ] if 9 dup !~last c:put 10 ] times vt:reset $| c:put nl drop ; 11 12 :~line# I dup #10 lt? &sp if n:put sp ; 13 14 :list:syntax (-) 15 #16 [ ~line# I e:line/syntax ] indexed-times ; ---------------------------------------------------------------- 0 (tuhi) (display) 1 {{ 2 :status @tuhi:cfg/status &sys:info if ; 3 :colorize call ; 4 :line# @tuhi:cfg/colors,line# colorize I $a n:add c:put ; 5 :sep vt:reset '_|_ s:put ; 6 :text @tuhi:cfg/syntax block:buffer fetch $( eq? and 7 [ I e:line/syntax ] 8 [ @tuhi:cfg/colors,bg @tuhi:cfg/colors,fg 9 &colorize bi@ I e:to-line #64 [ fetch-next c:put ] 10 times drop vt:reset $| c:put nl ] choose ; 11 :reset @tuhi:cfg/syntax [ bg:black fg:white ] if ; 12 ---reveal--- 13 :tuhi:display (-) vt:clear vt:home 14 #16 [ line# sep text reset ] indexed-times status ; 15 }} ---------------------------------------------------------------- 0 (tuhi) (key-actions) 1 2 (lines) 3 :tuhi:a #1 #5 vt:row,col 0 ; :tuhi:b #1 #5 vt:row,col 1 ; 4 :tuhi:c #3 #5 vt:row,col 2 ; :tuhi:d #4 #5 vt:row,col 3 ; 5 :tuhi:e #5 #5 vt:row,col 4 ; :tuhi:f #6 #5 vt:row,col 5 ; 6 :tuhi:g #7 #5 vt:row,col 6 ; :tuhi:h #8 #5 vt:row,col 7 ; 7 :tuhi:i #9 #5 vt:row,col 8 ; :tuhi:j #10 #5 vt:row,col 9 ; 8 :tuhi:k #11 #5 vt:row,col 10 ; :tuhi:l #12 #5 vt:row,col 11 ; 9 :tuhi:m #13 #5 vt:row,col 12 ; :tuhi:n #14 #5 vt:row,col 13 ; 10 :tuhi:o #15 #5 vt:row,col 14 ; :tuhi:p #16 #5 vt:row,col 15 ; 11 12 (jump/leap) 13 :tuhi:4 s:get/line s:to-n !Block load ; 14 :tuhi:9 s:get/line block:first-matching !Block load ; 15 ---------------------------------------------------------------- 0 (tuhi) (key-actions) 1 2 :tuhi:[ c:get $a n:sub e:unindent ; 3 :tuhi:] c:get $a n:sub e:indent ; 4 5 :tuhi:C c:get $a n:sub e:copy ; 6 :tuhi:V c:get $a n:sub e:paste ; 7 :tuhi:X c:get $a n:sub e:cut ; 8 9 :tuhi:? #111 ti:help ; 10 11 :tuhi:Q @tuhi:cfg/status not !tuhi:cfg/status ; 12 13 :tuhi:N new ; 14 15 ---------------------------------------------------------------- 0 (tuhi) (key-actions) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tuhi) (setup-key-actions-part-1) 1 2 :tuhi:actions/1 (-) 3 &prev $1 ti:set-action &next $2 ti:set-action 4 &tuhi:4 $4 ti:set-action 5 &run $5 ti:set-action &save $6 ti:set-action 6 &load $7 ti:set-action 7 &tuhi:9 $9 ti:set-action &ti:done $0 ti:set-action 8 &tuhi:a $a ti:set-action &tuhi:b $b ti:set-action 9 &tuhi:c $c ti:set-action &tuhi:d $d ti:set-action 10 &tuhi:e $e ti:set-action &tuhi:f $f ti:set-action 11 &tuhi:g $g ti:set-action &tuhi:h $h ti:set-action 12 &tuhi:i $i ti:set-action &tuhi:j $j ti:set-action 13 &tuhi:k $k ti:set-action &tuhi:l $l ti:set-action 14 &tuhi:m $m ti:set-action &tuhi:n $n ti:set-action 15 &tuhi:o $o ti:set-action &tuhi:p $p ti:set-action ; ---------------------------------------------------------------- 0 (tuhi) (setup-key-actions-part-2) 1 2 :tuhi:actions/2 (-) 3 &tuhi:[ $[ ti:set-action &tuhi:] $] ti:set-action 4 &tuhi:C $C ti:set-action &tuhi:V $V ti:set-action 5 &tuhi:X $X ti:set-action &tuhi:Q $Q ti:set-action 6 &tuhi:? $? ti:set-action 7 &tuhi:N $N ti:set-action 8 ; 9 10 11 12 13 14 15 :tuhi:actions (-) tuhi:actions/1 tuhi:actions/2 ; ---------------------------------------------------------------- 0 (tuhi) (hints) 1 2 :tuhi:hints (-) 3 'Previous #1 ti:add-hint 4 'Next #2 ti:add-hint 5 'Jump #4 ti:add-hint 6 'Run #5 ti:add-hint 7 'Save #6 ti:add-hint 8 'Load #7 ti:add-hint 9 'Leap #9 ti:add-hint 10 'Quit #0 ti:add-hint 11 ; 12 13 14 15 ---------------------------------------------------------------- 0 (tuhi) (main-loop) 1 2 :tuhi (-) 3 [ &tuhi:actions &tuhi:hints &tuhi:display ] ti:application ; 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 tuhi shortcuts ================================================= 1 2 a - p line entry 3 X cut 4 C copy 5 V paste 6 [ un-indent line 7 ] indent line 8 Q toggle status line 9 N erase block contents 10 ? display this help screen 11 12 13 14 15 ---------------------------------------------------------------- 0 nonix : a unix-inspired set of words for working with the blocks 1 2 This provides: 3 4 +--------+--------------+-------------------------------------+ 5 | cp | src dest | copy block src to block dest | 6 | mv | src dest | move block src to block dest | 7 | rm | block | erase block | 8 | cat | block | display contents of a block (text) | 9 | locate | text | show blocks starting with text | 10 | df | | show usage stats | 11 | xcp | src dest num | copy num blocks from src to dest | 12 | xmv | src dest num | move num blocks from src to dest | 13 | xrm | start num | remove num blocks starting at start | 14 +--------+--------------+-------------------------------------+ 15 ---------------------------------------------------------------- 0 (nonix) (basic-commands) 1 2 :cp n:get set load n:get set save ; 3 :rm n:get set new save ; 4 :mv n:get dup set load n:get set save set new save ; 5 :cat n:get set load list* ; 6 :locate s:get/token s:temp 7 [ s:keep @Blocks 8 [ I set load block:buffer n:dec over s:begins-with? 9 [ I n:put tab #0 e:line ] if ] indexed-times drop ] gc ; 10 :df:usage (-nn) 11 #0 #0 @Blocks [ I block:empty? 12 &n:inc [ &n:inc dip ] choose ] indexed-times ; 13 :df (-) 14 df:usage [ 'Used:___ s:put n:put nl ] 15 [ 'Unused:_ s:put n:put nl ] bi* ; ---------------------------------------------------------------- 0 (nonix) (extended-commands) 1 2 {{ 3 :relocate over set load dup set save ; 4 :erase over set new save ; 5 :next &n:inc bi@ ; 6 :args n:get n:get n:get ; 7 ---reveal--- 8 :xmv ("from,to,count") 9 args [ relocate erase next ] times drop-pair ; 10 :xcp ("from,to,count") 11 args [ relocate next ] times drop-pair ; 12 }} 13 14 15 :clear (-) vt:clear vt:home ; ---------------------------------------------------------------- 0 (nonix) (extended-commands) 1 2 :xrm ("start,count") 3 n:get n:get swap set [ new save next ] times ; 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 ====================== USER BLOCKS BEGIN ======================= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (taotaka) (data_structures,_categories) 1 2 '~titles d:create #144 comma #144 allot 3 '~addrs d:create #144 comma #144 allot 4 '~page var 5 6 . resets the menu to empty 7 8 :taotaka:initialize (-) (reset_the_menu_to_empty) 9 #0 &~titles n:inc #144 fill [ ] &~addrs n:inc #144 fill ; 10 11 taotaka:initialize 12 13 14 15 ---------------------------------------------------------------- 0 (taotaka) (data_accessors) 1 2 :taotaka:add (asn-) 3 @~page #16 n:mul n:add [ s:keep &~titles ] dip 4 &a:store sip &~addrs swap a:store ; 5 6 :taotaka:get/address (n-a) 7 @~page #16 n:mul n:add &~addrs swap a:fetch ; 8 9 :taotaka:get/title (n-s) 10 @~page #16 n:mul n:add &~titles swap a:fetch 11 dup n:zero? [ drop '_ ] if ; 12 13 14 15 ---------------------------------------------------------------- 0 (taotaka) (display) 1 2 {{ 3 :title (-) I taotaka:get/title s:put ; 4 :line# (-) I $a n:add c:put sp $| c:put sp ; 5 ---reveal--- 6 :taotaka:display (-) 7 vt:clear vt:home #16 [ line# title nl ] indexed-times ; 8 }} 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (taotaka) (key-actions) 1 2 :taotaka:run (n-) 3 taotaka:get/address call ; 4 5 :taotaka:a #0 taotaka:run ; :taotaka:b #1 taotaka:run ; 6 :taotaka:c #2 taotaka:run ; :taotaka:d #3 taotaka:run ; 7 :taotaka:e #4 taotaka:run ; :taotaka:f #5 taotaka:run ; 8 :taotaka:g #6 taotaka:run ; :taotaka:h #7 taotaka:run ; 9 :taotaka:i #8 taotaka:run ; :taotaka:j #9 taotaka:run ; 10 :taotaka:k #10 taotaka:run ; :taotaka:l #11 taotaka:run ; 11 :taotaka:m #12 taotaka:run ; :taotaka:n #13 taotaka:run ; 12 :taotaka:o #14 taotaka:run ; :taotaka:p #15 taotaka:run ; 13 14 15 ---------------------------------------------------------------- 0 (taotaka) (key-actions) 1 2 :taotaka:actions 3 &taotaka:a $a ti:set-action &taotaka:b $b ti:set-action 4 &taotaka:c $c ti:set-action &taotaka:d $d ti:set-action 5 &taotaka:e $e ti:set-action &taotaka:f $f ti:set-action 6 &taotaka:g $g ti:set-action &taotaka:h $h ti:set-action 7 &taotaka:i $i ti:set-action &taotaka:j $j ti:set-action 8 &taotaka:k $k ti:set-action &taotaka:l $l ti:set-action 9 &taotaka:m $m ti:set-action &taotaka:n $n ti:set-action 10 &taotaka:o $o ti:set-action &taotaka:p $p ti:set-action 11 [ #0 !~page ] $1 ti:set-action [ #1 !~page ] $2 ti:set-action 12 [ #2 !~page ] $3 ti:set-action [ #3 !~page ] $4 ti:set-action 13 [ #4 !~page ] $5 ti:set-action [ #5 !~page ] $6 ti:set-action 14 [ #6 !~page ] $7 ti:set-action [ #7 !~page ] $8 ti:set-action 15 [ #8 !~page ] $9 ti:set-action &ti:done $0 ti:set-action ; ---------------------------------------------------------------- 0 (taotaka) (top-level) 1 2 :taotaka:hints (-) 3 'Programs #1 ti:add-hint 4 'Fun_&_Games #2 ti:add-hint 5 'Quit #0 ti:add-hint 6 ; 7 8 9 10 11 12 13 :taotaka (-) 14 [ &taotaka:actions &taotaka:hints &taotaka:display ] 15 ti:application ; ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (taotaka) (populate-categories) 1 2 #0 !~page 3 4 [ ] 'Programs_=========================== #0 taotaka:add 5 &catalogue 'Catalogue_____explore_the_blocks #2 taotaka:add 6 &tuhi 'Tuhi__________block_editor #3 taotaka:add 7 [ '(kohure) 'kohure invoke ] 'Kohure #4 taotaka:add 8 [ '(listener) 'listener invoke ] 'Listener #5 taotaka:add 9 10 [ ] 'Writing_&_Information_============== #7 taotaka:add 11 [ '(wiki) 'wiki:browse invoke ] 'Wiki #9 taotaka:add 12 [ '(wisp) 'wisp invoke ] 'WISP #10 taotaka:add 13 &manual 'Manual #11 taotaka:add 14 15 ---------------------------------------------------------------- 0 (taotaka) (populate-categories) 1 2 #1 !~page 3 4 [ ] 'Fun_&_Games_========================= #0 taotaka:add 5 [ '(jmf/mandelbrot) 'mandelbrot invoke ] 6 'Mandelbrot #2 taotaka:add 7 8 9 10 11 12 13 14 15 #0 !~page ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (LOAD:taotaka) 1 2 '(taotaka) needs 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (kowae) (a-program-launcher) 1 2 {{ 3 'x var 'y var 'h var 'w var 4 :color (-) bg:black fg:red ; 5 :*** (n-) color [ $# c:put ] times ; 6 :*-* (n-) color $# c:put vt:reset &sp times color $# c:put ; 7 :top (-) @x @y vt:row,col @w *** ; 8 :bot (-) @x @h n:add n:dec @y vt:row,col @w *** ; 9 :mid (-) @x I n:add n:inc @y vt:row,col @w #2 n:sub *-* ; 10 ---reveal--- 11 :kowae:box (xyhw-) !w !h !y !x 12 top @h #2 n:sub &mid indexed-times bot ; 13 }} 14 15 ---------------------------------------------------------------- 0 (kowae) (a-program-launcher) 1 2 {{ 3 :draw (xy-) #5 #20 kowae:box vt:reset ; 4 :label (xyc-) fg:green &vt:row,col dip c:put vt:reset ; 5 ---reveal--- 6 :kowae:boxes (-) 7 #1 #4 draw #1 #28 draw #1 #52 draw 8 #7 #4 draw #7 #28 draw #7 #52 draw 9 #13 #4 draw #13 #28 draw #13 #52 draw 10 11 #4 #22 $7 label #10 #22 $4 label #16 #22 $1 label 12 #4 #46 $8 label #10 #46 $5 label #16 #46 $2 label 13 #4 #70 $9 label #10 #70 $6 label #16 #70 $3 label ; 14 }} 15 ---------------------------------------------------------------- 0 (kowae) (a-program-launcher) (menu-item-text) 1 2 :kowae:labels (-) 3 fg:cyan 4 #3 #5 vt:row,col fg:white '____Catalogue_____ s:put (right) 5 #9 #5 vt:row,col fg:white '______Kohure______ s:put 6 #15 #5 vt:row,col fg:white '_____Listener_____ s:put 7 8 #3 #29 vt:row,col fg:white '__________________ s:put (mid) 9 #9 #29 vt:row,col fg:white '__________________ s:put 10 #15 #29 vt:row,col fg:white '__________________ s:put 11 12 #3 #53 vt:row,col fg:white '_______Tuhi_______ s:put (left) 13 #9 #53 vt:row,col fg:white '_______WISP_______ s:put 14 #15 #53 vt:row,col fg:white '_______Wiki_______ s:put 15 ; ---------------------------------------------------------------- 0 (kowae) (a-program-launcher) 1 2 :kowae:display (-) 3 vt:clear vt:home 4 kowae:boxes kowae:labels vt:reset 5 #20 #1 vt:row,col ; 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (kowae) (a-program-launcher) (key-bindings) 1 2 'kowae:Programs d:create #9 comma #9 allot 3 4 :kowae:add-program (qn-) n:dec &kowae:Programs swap a:store ; 5 6 [ '(tuhi) 'tuhi invoke ] #9 kowae:add-program 7 [ ] #8 kowae:add-program 8 [ '(tools/catalogue) 'catalogue invoke ] #7 kowae:add-program 9 [ '(wisp) 'wisp invoke ] #6 kowae:add-program 10 [ ] #5 kowae:add-program 11 [ '(kohure) 'kohure invoke ] #4 kowae:add-program 12 [ '(wiki) 'wiki:browse invoke ] #3 kowae:add-program 13 [ ] #2 kowae:add-program 14 [ '(listener) 'listener invoke ] #1 kowae:add-program 15 ---------------------------------------------------------------- 0 (kowae) (a-program-launcher) 1 2 :kowae:valid? (c-cf) dup $0 $9 n:between? ; 3 :kowae:run (c-) 4 $0 n:sub n:dec &kowae:Programs swap a:fetch call ; 5 6 :kowae (-) 7 [ clear kowae:display c:get kowae:valid? 8 &kowae:run &drop choose ] forever ; 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (LOAD:kowae) 1 2 '(kowae) needs 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (kohure) (data,_configuration) 1 2 #3 'kohure:Cells/Line var-n 3 'kohure:At var 4 5 :kohure:height (-n) @ti:height #4 n:sub ; 6 7 :~page-size (-n) kohure:height @kohure:Cells/Line n:mul ; 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (kohure) (supporting_words) 1 2 {{ 3 :check (a-f) 4 b:unpack 5 #-1 swap #0 #29 n:between? and 6 swap #0 #29 n:between? and 7 swap #0 #29 n:between? and 8 swap #0 #29 n:between? and ; 9 ---reveal--- 10 :bundle:valid? (n-nf) dup check ; 11 }} 12 13 14 15 ---------------------------------------------------------------- 0 (kohure) (supporting_words) 1 2 {{ 3 :names (-s) 4 '..lidudrswpupojucacccjreeqneltgtfestadsumudianorxoslsrcpcyio 5 ; 6 :inst->name (n-s) #2 n:mul names swap #2 s:middle ; 7 :name (n-s) 8 dup #0 #29 n:between? [ inst->name ] [ drop '** ] choose ; 9 ---reveal--- 10 :bundle:name (n-s) 11 bundle:valid? 12 [ b:unpack 'abcd 'dcba reorder 13 ' #4 [ swap name s:append ] times ] 14 [ drop '******** ] choose ; 15 }} ---------------------------------------------------------------- 0 (kohure) (display) 1 2 {{ 3 :pad (sn-s) [ '_ s:prepend ] times ; &fetch-next \fn 4 :addr (n-ns) dup n:to-s dup s:length #5 swap n:sub pad ; 5 :valu (n-s) n:to-s dup s:length #11 swap n:sub pad ; 6 :char (n-) dup #32 #126 n:between? [ drop $. ] -if c:put ; 7 :name (a-a) fetch-next bundle:name s:put sp ; 8 :reset (a-an) @kohure:Cells/Line n:sub @kohure:Cells/Line ; 9 :line (a-a) 10 addr s:put sp sp @kohure:Cells/Line &name times reset 11 [ fn valu s:put sp ] times reset [ fn char ] times nl ; 12 ---reveal--- 13 :kohure:display (-) vt:clear vt:home 14 @kohure:At kohure:height &line times drop ; 15 }} ---------------------------------------------------------------- 0 (kohure) (actions) 1 2 :~jump ("-) s:get/token s:to-n !kohure:At ; 3 4 :~leap ("-) 5 s:get/token s:temp dup d:exists? 6 [ d:lookup d:address fetch ] 7 [ drop #0 ] choose !kohure:At ; 8 9 :~pali ("-) 10 [ n:get s:get/token s:temp i here n:dec fetch swap store ] 11 gc ; 12 13 :~raw ("-) 14 n:get n:get swap store ; 15 ---------------------------------------------------------------- 0 (kohure) (keyboard-handler) 1 2 :kohure:actions 3 &ti:done $0 ti:set-action 4 [ ~page-size &kohure:At v:dec-by ] $1 ti:set-action 5 [ ~page-size &kohure:At v:inc-by ] $2 ti:set-action 6 &~jump $4 ti:set-action 7 &~leap $9 ti:set-action 8 &~pali $3 ti:set-action 9 &~raw $8 ti:set-action 10 [ #191 ti:help ] $? ti:set-action 11 ; 12 13 14 15 ---------------------------------------------------------------- 0 (kohure) (hints,_top_level) 1 2 :kohure:hints 3 'Previous #1 ti:add-hint 4 'Next #2 ti:add-hint 5 'Jump #4 ti:add-hint 6 'Leap #9 ti:add-hint 7 'Quit #0 ti:add-hint 8 'Assemble #3 ti:add-hint 9 'Value #8 ti:add-hint 10 ; 11 12 :kohure 13 [ &kohure:actions &kohure:hints &kohure:display ] 14 ti:application ; 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (LOAD:kohure) 1 2 '(kohure) needs 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 kohure ========================================================= 1 2 This is a small program to browse or edit the memory, displaying 3 each cell as an instruction bundle, a raw value, and an ASCII 4 value. 5 6 For entry (4, 8), enter the address, a space, then the value. 7 8 ? display this help screen 9 1 go to the prior page of addresses 10 2 go to the next page of addresses 11 3 assemble an instruction bundle and store in an address 12 4 enter an address, display will switch to said address 13 8 enter a raw value to store in an address 14 9 enter a word name, display will switch to its start 15 0 quit kohure ---------------------------------------------------------------- 0 WISP: Writing in Small Pieces 1 2 This is WISP, a log of my daily development efforts and things 3 happening in life. The basic idea is that I'll (try to) write a 4 block each day. 5 6 Since Konilo is intended to be m primary personal computing 7 environment for many years to come, I've started the WISP blocks 8 at a point that'll leave room for about 50 years of entries. I 9 can't guarantee that I'll use all of these: in 50 years from now 10 (2023) I'll be turning 90. 11 12 The next set of blocks is reserved for words relating to WISP. 13 Actual log entries follow in the next page and beyond. 14 15 ---------------------------------------------------------------- 0 WISP: Configuration 1 2 WISP has a couple of words that need editing if you wish to 3 use it. In the (wisp) block, you will need to edit `title`, 4 `to-end`, and `blocks`. 5 6 In `title`, change the block number to the number of your 7 title block. 8 9 In `to-end` and `blocks`, change the block number to the 10 first block in the WISP entry area of your block store. 11 12 I use a larger than standard block store (65,536 blocks), 13 with my title at 47,279 and the first data block at 47,280. 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (wisp) 1 2 #47264 'wisp:Data var-n 3 4 :~sep (-) #64 [ $- c:put ] times nl ; 5 :~title (-) @wisp:Data set load list* ~sep ; 6 7 :~empty? (-f) @Block block:empty? ; 8 :~to-end (-n) @wisp:Data n:inc set 9 [ ~empty? dup [ next ] -if ] until @Block prev ; 10 :~blocks (n-n) @wisp:Data n:inc n:sub ; 11 :~display (-) list* ~sep ; 12 13 :wisp:list (-) ~title ~to-end ~blocks [ ~display prev ] times ; 14 :wisp:new (-) ~to-end edit ; 15 :wisp:latest (-) ~to-end n:dec edit ; ---------------------------------------------------------------- 0 (wisp) (actions) 1 2 :wisp:actions 3 [ prev &Block @wisp:Data @Blocks v:limit ] $1 ti:set-action 4 [ next &Block @wisp:Data @Blocks v:limit ] $2 ti:set-action 5 [ ~to-end drop ] $3 ti:set-action 6 [ wisp:new tuhi ] $4 ti:set-action 7 [ tuhi ] $8 ti:set-action 8 &ti:done $0 ti:set-action 9 ; 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (wisp) (display,_hints,_top_level) 1 2 :wisp:display 3 vt:clear vt:home 4 fg:red #0 e:line vt:reset 5 #15 [ I n:inc e:line ] indexed-times ; 6 7 :wisp:hints 8 'Previous #1 ti:add-hint 'Next #2 ti:add-hint 9 'Latest #3 ti:add-hint 'New #4 ti:add-hint 10 'Edit #8 ti:add-hint 11 'Quit #0 ti:add-hint ; 12 13 :wisp (-) @wisp:Data !Block load 14 [ &wisp:actions &wisp:hints &wisp:display ] ti:application ; 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (LOAD:wisp) 1 2 '(wisp) needs 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (wiki) 1 2 {{ 3 :target (s-s) 4 s:temp 'wiki:_ s:prepend '_ s:append s:to-lower s:keep ; 5 :title (-s) 6 I set load block:buffer n:dec #64 over store (s:to-lower ; 7 :match? (ss-sf) over s:begins-with? ; 8 ---reveal--- 9 :wiki:locate (s-n) 10 [ target #0 swap 11 @Blocks [ title match? [ [ I n:max ] dip ] if ] 12 indexed-times drop ] gc ; 13 }} 14 15 ---------------------------------------------------------------- 0 (wiki) 1 2 #-1 'wiki:Termina var-n (set_to_0_if_using_line_printer) 3 4 {{ 5 :display-char 6 @wiki:Termina 7 [ dup $* eq? [ fg:red ] if 8 dup #32 eq? [ vt:reset ] if 9 ] if c:put ; 10 :line #64 [ fetch-next display-char ] times vt:reset nl ; 11 :render block:buffer #16 &line times drop ; 12 ---reveal--- 13 :wiki s:get/token wiki:locate set load render ; 14 :wiki:list render ; 15 }} ---------------------------------------------------------------- 0 (wiki) 1 2 {{ 3 :title block:buffer n:dec #64 over store ; 4 :get I set load ; 5 :page? title 'wiki:_ s:begins-with? ; 6 :name title #6 #58 s:middle ; 7 ---reveal--- 8 :wiki:all 9 @wiki:Termina [ fg:red ] if 10 @Blocks [ get page? [ name s:put nl ] if ] indexed-times 11 @wiki:Termina &vt:reset if '---_end_of_pages s:put nl ; 12 }} 13 14 15 ---------------------------------------------------------------- 0 (wiki) (exits?,_new,_edit) 1 2 :wiki:exists? (s-f) wiki:locate n:-zero? ; 3 4 :wiki:new (-) 5 'start wiki:locate set load 6 [ next @Block block:empty? ] until @Block @Editor call ; 7 8 :wiki:edit (s-) 9 [ s:keep dup wiki:exists? 10 [ wiki:locate @Editor call ] 11 [ drop wiki:new ] choose ] gc ; 12 13 14 15 ---------------------------------------------------------------- 0 (wiki) (browser) 1 2 :wiki:* 3 [ s:get/token s:keep dup wiki:exists? 4 [ wiki:locate set load ] 5 [ drop wiki:new ] choose ] gc ; 6 7 :wiki:1 'start wiki:locate set load ; 8 :wiki:6 @Block @Editor call ; 9 10 :wiki:actions (-) 11 &wiki:1 $1 ti:set-action 12 &wiki:6 $6 ti:set-action 13 &wiki:* $* ti:set-action 14 [ #214 ti:help ] $? ti:set-action 15 &ti:done $0 ti:set-action ; ---------------------------------------------------------------- 0 (wiki) (browser) 1 2 :wiki:hints 3 'Start #1 ti:add-hint 4 'Edit #6 ti:add-hint 5 'Quit #0 ti:add-hint ; 6 7 8 :wiki:display (-) vt:clear vt:home wiki:list ; 9 10 :wiki:browse 11 'start wiki:locate set load 12 [ &wiki:actions &wiki:hints &wiki:display ] ti:application ; 13 14 15 ---------------------------------------------------------------- 0 wiki shortcuts ================================================= 1 2 * enter *, then the wiki page name to jump to that page. 3 this will start the editor if a page does not exist. 4 5 1 jump to *Start in the wiki 6 7 6 edit the current page 8 9 0 quit the wiki browser 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (LOAD:wiki) 1 2 '(wiki) needs 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 rem : a visual block editor 1 2 This is a visual, command-oriented block editor. It builds on 3 the minimalist block editor included with Retro, adding useful 4 things like a visual display, shortcut key text, movable cursor, 5 and entry without erasing entire lines. 6 7 The editor commands are modular and can be extended at any time. 8 9 Dependencies: 10 11 - (terminal) or (graphica:terminal) 12 13 Note that this works best with a terminal that properly breaks 14 after each entered character. On Unix, this can be enabled by 15 running `stty cbreak` prior to starting. ---------------------------------------------------------------- 0 rem : a visual block editor : default key bindings 1 2 +-----+------------+-----+------------+ 3 | Key | Action | Key | Action | 4 +=====+============+=====+============+ 5 | 1 | Save Block | 2 | Load Block | 6 | 3 | Prev Block | 4 | Next Block | 7 | 5 | Run Block | 6 | Left | 8 | 7 | Right | 8 | Down | 9 | 9 | Up | 0 | Enter Here | 10 | q | Quit | | | 11 +-----+------------+-----+------------+ 12 13 Above is the default key bindings. Additional key bindings for 14 specific keyboard layouts will be provided as separate blocks. 15 ---------------------------------------------------------------- 0 (rem) (a-visual-block-editor) (display) 1 2 'rem:col var 'rem:row var 'rem:mode var 3 4 :rem:cursor @rem:row #2 n:add @rem:col n:inc dup-pair 5 vt:row,col $* c:put vt:row,col ; 6 7 {{ 8 :redraw vt:home list* ; 9 :sep #64 [ $- c:put ] times nl ; 10 :hints '1:Save_2:Load_3:Prev_4:Next_5:Eval_6:Left_ s:put 11 '7:Right_8:Down_9:Up_0:Entry s:put nl ; 12 :status sys:info hints ; 13 ---reveal--- 14 :rem:display vt:home sep redraw sep status rem:cursor ; 15 }} ---------------------------------------------------------------- 0 (rem) (a-visual-block-editor) (command-processing) 1 2 {{ 3 'done var 4 :command 'rem:cmd:_ ; 5 :process command #8 s:store 6 command d:lookup [ command interpret ] if ; 7 ---reveal--- 8 :rem vt:clear vt:home #0 !done 9 [ rem:display c:get process @done ] until ; 10 :rem:cmd:q #-1 !done vt:clear vt:home ; 11 }} 12 13 14 15 ---------------------------------------------------------------- 0 (rem) (a-visual-block-editor) (navigation) 1 2 &prev dup \rem:cmd:3 \rem:cmd:, 3 &next dup \rem:cmd:4 \rem:cmd:. 4 5 :constrain @rem:row #0 #15 n:limit !rem:row 6 @rem:col #0 #63 n:limit !rem:col ; 7 8 :rem:cmd:9 &rem:row v:dec constrain ; 9 :rem:cmd:6 &rem:col v:dec constrain ; 10 :rem:cmd:8 &rem:row v:inc constrain ; 11 :rem:cmd:7 &rem:col v:inc constrain ; 12 13 14 15 ---------------------------------------------------------------- 0 (rem) (a-visual-block-editor) (text-entry) 1 2 {{ 3 :target @rem:row #64 n:mul @rem:col n:add block:buffer n:add ; 4 :insert target swap [ over store n:inc ] s:for-each drop ; 5 ---reveal--- 6 :rem:cmd:0 rem:cursor s:get/line insert cls ; 7 }} 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (rem) (a-visual-block-editor) (block-evaluation,_save/load) 1 2 :rem:cmd:5 run ; 3 &save \rem:cmd:1 4 &load \rem:cmd:2 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 rem : a visual block editor : addition key bindings 1 2 The next several blocks contain additional sets of key bindings 3 for a number of common layouts (dvorak, qwerty, colmak, workman) 4 5 The keys are all in the primary alpha area. This is laid out as: 6 7 .**.. ..*.. 8 *.... .***. 9 *...* **... 10 11 There are numerous keys left open on the left hand. I'll look at 12 attaching some of these to other functions in the future. 13 14 15 ---------------------------------------------------------------- 0 (rem:dvorak) (a-visual-block-editor) (dvorak-bindings) 1 2 &rem:cmd:1 \rem:cmd:b &rem:cmd:2 \rem:cmd:m 3 &rem:cmd:3 \rem:cmd:, &rem:cmd:4 \rem:cmd:. 4 &rem:cmd:5 \rem:cmd:x &rem:cmd:6 \rem:cmd:h 5 &rem:cmd:7 \rem:cmd:n &rem:cmd:8 \rem:cmd:t 6 &rem:cmd:9 \rem:cmd:c &rem:cmd:0 \rem:cmd:a 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (rem:qwerty) (a-visual-block-editor) (qwerty-bindings) 1 2 &rem:cmd:1 \rem:cmd:n &rem:cmd:2 \rem:cmd:m 3 &rem:cmd:3 \rem:cmd:w &rem:cmd:4 \rem:cmd:e 4 &rem:cmd:5 \rem:cmd:x &rem:cmd:6 \rem:cmd:j 5 &rem:cmd:7 \rem:cmd:l &rem:cmd:8 \rem:cmd:k 6 &rem:cmd:9 \rem:cmd:i &rem:cmd:0 \rem:cmd:b 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (rem:colmak) (a-visual-block-editor) (colmak-bindings) 1 2 &rem:cmd:1 \rem:cmd:b &rem:cmd:2 \rem:cmd:k 3 &rem:cmd:3 \rem:cmd:w &rem:cmd:4 \rem:cmd:f 4 &rem:cmd:5 \rem:cmd:b &rem:cmd:6 \rem:cmd:h 5 &rem:cmd:7 \rem:cmd:e &rem:cmd:8 \rem:cmd:n 6 &rem:cmd:9 \rem:cmd:l &rem:cmd:0 \rem:cmd:q 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (rem:workman) (a-visual-block-editor) (workman-bindings) 1 2 &rem:cmd:1 \rem:cmd:k &rem:cmd:2 \rem:cmd:l 3 &rem:cmd:3 \rem:cmd:d &rem:cmd:4 \rem:cmd:w 4 &rem:cmd:5 \rem:cmd:v &rem:cmd:6 \rem:cmd:n 5 &rem:cmd:7 \rem:cmd:o &rem:cmd:8 \rem:cmd:e 6 &rem:cmd:9 \rem:cmd:u &rem:cmd:0 \rem:cmd:a 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (LOAD:rem) 1 2 '(rem) needs 3 '(rem:qwerty) needs 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Mandelbrot Set : Rendering to ASCII 1 2 This is a port of jmf's mandelbrot set code from RetroForth 3 on nga. It's been refactored a bit, the calcuations are now 4 written in assembly. Arland has added a graphica version of this 5 in the (dusk/mandelbrot) blocks. 6 7 Loading: 8 9 '(jmf:mandelbrot) needs 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (jmf:mandelbrot) 1 2 'x var 'y var 'iter var 'posx var 'posy var 3 4 #128 'max-iter var-n 5 #1 'zoom var-n 6 7 :ascii-equiv (n-c) 8 #9 n:mul @max-iter n:div '_.:-=+*#%@ swap s:fetch ; 9 10 :f* n:mul #10000 n:div ; 11 12 13 14 15 ---------------------------------------------------------------- 0 (jmf:mandelbrot) 1 2 'a d:create 3 'lilifemu i #2 d &x r 'lifelica i &y r &f* r 'adsw.... i 4 'lifedu.. i &x r 'lica.... i &f* r 'lifedu.. i &y r 5 'lica.... i &f* r 'suadlist i &x r 'list.... i &y r 6 'lifelife i &x r &y r 'lica.... i &f* r 'lifedu.. i &y r 7 'lica.... i &f* r 'adlilica i #40000 d <eq? r 8 'lifelife i &iter r &max-iter r 'ltanre.. i 9 10 :mb:value (xy-v) #0 dup !x !y #-1 !iter 11 [ &iter v:inc dup-pair a ] while drop-pair @iter ; 12 13 14 15 ---------------------------------------------------------------- 0 (jmf:mandelbrot) 1 2 :mb:draw/ascii 3 #25 [ 4 #80 [ 5 I #438 n:mul #25000 n:sub @zoom n:div @posx n:add 6 J #800 n:mul #10000 n:sub @zoom n:div @posy n:add 7 mb:value ascii-equiv c:put 8 ] indexed-times nl 9 ] indexed-times 10 ; 11 12 mb:draw/ascii 13 14 15 ---------------------------------------------------------------- 0 (jmf:mandelbrot) 1 2 :zoom+ @zoom #2 n:mul !zoom ; 3 :zoom- @zoom #2 n:div #1 n:max !zoom ; 4 :up @posy #10000 @zoom n:div n:sub !posy ; 5 :down @posy #10000 @zoom n:div n:add !posy ; 6 :left @posx #10000 @zoom n:div n:sub !posx ; 7 :right @posx #10000 @zoom n:div n:add !posx ; 8 :res+ @max-iter #2 n:mul !max-iter ; 9 :res- @max-iter #2 n:div #1 n:max !max-iter ; 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (jmf:mandelbrot) 1 2 :mandelbrot:hints 3 'Zoom_In #1 ti:add-hint 'Zoom_Out #2 ti:add-hint 4 'Up #3 ti:add-hint 'Down #4 ti:add-hint 5 'Left #5 ti:add-hint 'Right #6 ti:add-hint 6 'Res_Up #7 ti:add-hint 'Res_Down #8 ti:add-hint 7 'Quit #0 ti:add-hint ; 8 9 :mandelbrot:actions 10 &zoom+ $1 ti:set-action &zoom- $2 ti:set-action 11 &up $3 ti:set-action &down $4 ti:set-action 12 &left $5 ti:set-action &right $6 ti:set-action 13 &res+ $7 ti:set-action &res- $8 ti:set-action 14 &ti:done $0 ti:set-action ; 15 ---------------------------------------------------------------- 0 (jmf:mandelbrot) 1 2 :mandelbrot:display 3 vt:clear vt:home 4 @ti:height #4 n:sub [ 5 @ti:width [ 6 I #438 n:mul #25000 n:sub @zoom n:div @posx n:add 7 J #800 n:mul #10000 n:sub @zoom n:div @posy n:add 8 mb:value ascii-equiv c:put 9 ] indexed-times nl 10 ] indexed-times ; 11 12 :mandelbrot 13 [ &mandelbrot:actions &mandelbrot:hints &mandelbrot:display ] 14 ti:application ; 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (LOAD:jmf:mandelbrot) 1 2 '(jmf:mandelbrot) needs 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Conway's Game of Life 1 2 From wikipedia: 3 4 Life is a cellular automaton devised by John Conway in 1970. 5 The universe of the game of life is an infinite, 2D grid of 6 square cells, each of which can be in one of two states, alive 7 or dead. Each cell interacts with its eight neighbors. At each 8 step, the following transitions occur: 9 10 - A live cell w/2 or fewer neighbors dies by underpopulation 11 - A live cell w/2 or 3 neighbors survives 12 - A live cell w/more than 3 neighbors dies by overpopulation 13 - A dead cell with exactly 3 neighbors becomes alive 14 15 These rules are applied across the grid, for each generation. ---------------------------------------------------------------- 0 (game:conways_life) 1 2 :w/l [ $. eq? [ #0 ] [ #1 ] choose comma ] s:for-each ; 3 'World d:create 4 '.................................... w/l 5 '.................................... w/l 6 '.................................... w/l 7 '..............................o..... w/l 8 '.ooo..........................o..... w/l 9 '...o..........................o..... w/l 10 '..o................................. w/l 11 '.................................... w/l 12 '.................................... w/l 13 '..ooo............................... w/l 14 '.ooo...................ooo.......... w/l 15 '.................................... w/l ---------------------------------------------------------------- 0 (game:conways-life) 1 2 'Next d:create 3 #36 #12 n:mul allot 4 5 'Surrounding var 6 7 :get (rc-v) 8 dup-pair [ #0 #35 n:between? ] bi@ and 9 [ &World n:add [ #36 n:mul ] dip n:add fetch ] 10 [ drop-pair #0 ] choose ; 11 12 13 14 15 ---------------------------------------------------------------- 0 (game:conways-life) 1 2 :neighbor? (rc-) get &Surrounding v:inc-by ; 3 4 :NW (rc-rc) dup-pair [ n:dec ] bi@ neighbor? ; 5 :NN (rc-rc) dup-pair [ n:dec ] dip neighbor? ; 6 :NE (rc-rc) dup-pair [ n:dec ] dip n:inc neighbor? ; 7 :WW (rc-rc) dup-pair n:dec neighbor? ; 8 :EE (rc-rc) dup-pair n:inc neighbor? ; 9 :SW (rc-rc) dup-pair [ n:inc ] dip n:dec neighbor? ; 10 :SS (rc-rc) dup-pair [ n:inc ] dip neighbor? ; 11 :SE (rc-rc) dup-pair [ n:inc ] bi@ neighbor? ; 12 13 14 15 ---------------------------------------------------------------- 0 (game:conways-life) 1 2 :count (rc-rcn) 3 #0 !Surrounding NW NN NE 4 WW EE 5 SW SS SE @Surrounding ; 6 7 :alive (rc-n) 8 count #2 #3 n:between? [ #1 ] [ #0 ] choose ; 9 10 :dead (rc-n) 11 count #3 eq? [ #1 ] [ #0 ] choose ; 12 13 :new-state (rc-n) 14 dup-pair get #1 eq? &alive &dead choose ; 15 ---------------------------------------------------------------- 0 (game:conways-life) 1 2 :set (nrc-) &Next n:add [ #36 n:mul ] dip n:add store ; 3 4 :cols (r-) 5 #36 [ I over swap new-state rot rot set ] indexed-times drop ; 6 7 :output (n-) n:-zero? [ $o ] [ $. ] choose c:put sp ; 8 9 :display (-) 10 nl &World #12 [ #36 [ fetch-next output ] times nl ] 11 times drop ; 12 13 14 15 ---------------------------------------------------------------- 0 (game:conways-life) 1 2 :gen (-) 3 #12 [ I cols ] indexed-times 4 &Next &World #36 #12 n:mul copy ; 5 6 {{ 7 :divide #72 [ $- c:put ] times nl 'Gen:_ s:put dup n:put nl ; 8 ---reveal--- 9 :gens (n-) #0 swap [ display divide n:inc gen ] times drop ; 10 }} 11 12 #12 gens 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1D Cellular Automota 1 2 Assume an array of cells with an initial distribution of live 3 and dead cells, and imaginary cells off the end of the array 4 having fixed values. 5 6 Cells in the next generation of the array are calculated based 7 on the value of the cell and its left and right nearest 8 neighbours in the current generation. 9 10 If, in the following table, a live cell is represented by 1 and 11 a dead cell by 0 then to generate the value of the cell at a 12 particular index in the array of cellular values you use the 13 table in the next block. 14 15 ---------------------------------------------------------------- 0 1D Cellular Automota 1 2 000 -> 0 # 3 001 -> 0 # 4 010 -> 0 # Dies without enough neighbours 5 011 -> 1 # Needs one neighbour to survive 6 100 -> 0 # 7 101 -> 1 # Two neighbours giving birth 8 110 -> 1 # Needs one neighbour to survive 9 111 -> 0 # Starved to death. 10 11 12 To use: 13 14 '(std-library) needs 15 '(1d-cellular-automota) needs ---------------------------------------------------------------- 0 (1d-cellular-automota) 1 2 :string, (s-) dup s:length comma &comma s:for-each ; 3 4 'This d:create 5 '.###.##.#.#.#.#..#.. string, 6 7 'Next d:create 8 '.................... string, 9 10 :display (-) 11 &This s:put nl ; 12 13 :update (-) 14 &Next &This dup s:length copy ; 15 ---------------------------------------------------------------- 0 (1d-cellular-automota) 1 2 :group (a-nnn) 3 [ #1 n:add fetch ] 4 [ #2 n:add fetch ] 5 [ #3 n:add fetch ] tri ; 6 7 :evolve (nnn-c) 8 [ $# eq? ] tri@ + + 9 #-2 eq? [ $# ] [ $. ] choose ; 10 11 :at (n-na) 12 &This over + ; 13 14 :record (c-) 15 buffer:add n:inc ; ---------------------------------------------------------------- 0 (1d-cellular-automota) 1 2 :generation (-) 3 &Next buffer:set 4 #-1 &This s:length 5 [ at group evolve record ] times drop update ; 6 7 :generations (n-) 8 [ display generation ] times drop ; 9 10 #10 generations 11 12 13 14 15 ---------------------------------------------------------------- 0 Pig : A Game of Chance 1 2 Pig is a simple dice game in which players take turns rolling 3 a single dice as many times as they desired, adding the value 4 of each roll to a running total. If they roll a 1, their turn 5 ends and the gained score is lost. 6 7 The following blocks implement this game for use at the basic 8 listener and as a Termina program. 9 10 Loading: 11 12 '(dusk:rng) needs '(dusk:dice) needs '(game:pig) needs 13 14 To play, run `game:pig` (for the basic version) or `pig` (for 15 the Termina version). ---------------------------------------------------------------- 0 (game:pig) (a-game-of-chance) (requires:_dusk:rng,_dusk:dice) 1 2 . +----------+--------------------------------+ 3 . | Variable | Holds | 4 . +----------+--------------------------------+ 5 . | Score.a | Player 1 Score | 6 . | Score.b | Player 2 Score | 7 . | Acc | Accumulator for current round | 8 . | Active | Current player ID (0 or 1) | 9 . | Roll | Current die roll | 10 . | Done | Is game done? | 11 . +----------+--------------------------------+ 12 13 'Score.a var 'Score.b var 'Acc var 14 'Active var 'Roll var 'Done var 15 ---------------------------------------------------------------- 0 (game:pig) (a-game-of-chance) (requires:_dusk:rng,_dusk:dice) 1 2 :winner (-n) @Score.a @Score.b lt? [ #2 ] [ #1 ] choose ; 3 :display:win 'Player_ s:put winner n:put '_wins! s:put nl ; 4 :score (n-n) [ @Score.b ] [ @Score.a ] choose ; 5 :total (n-) [ 'Player_ s:put n:inc n:put ':__ s:put ] 6 [ score n:put nl ] bi ; 7 :totals #0 total #1 total nl ; 8 :rolled 'Rolled_ s:put @Roll n:put nl nl totals ; 9 :player 'Player_ s:put @Active n:inc n:put ; 10 :has ':_has_ s:put @Acc n:put ; 11 :total '__total:_ s:put @Acc @Active score n:add n:put ; 12 :menu 'roll(1) 'halt(2) 'restart(3) [ s:put tab ] tri@ 13 'quit(0) s:put nl ; 14 :display clear rolled player has total nl nl menu ; 15 ---------------------------------------------------------------- 0 (game:pig) (a-game-of-chance) (requires:_dusk:rng,_dusk:dice) 1 2 :pig:restart (-) 3 &Score.a &Score.b &Acc &v:off tri@ 4 &Done &Roll &Active &v:off tri@ ; 5 6 :switch 7 @Active dup #1 xor !Active 8 [ @Score.b @Acc n:add !Score.b ] 9 [ @Score.a @Acc n:add !Score.a ] choose #0 !Acc ; 10 11 :decide 12 dup #1 eq? 13 [ drop-pair #0 !Acc switch #0 ] [ n:add ] choose ; 14 15 :turn @Acc dice:roll dup !Roll decide !Acc ; ---------------------------------------------------------------- 0 (game:pig) (a-game-of-chance) (requires:_dusk:rng,_dusk:dice) 1 2 :done? 3 @Active 4 [ @Score.b @Acc n:add @Score.a ] 5 [ @Score.a @Acc n:add @Score.b ] choose 6 [ #100 gteq? ] bi@ or [ &Done v:on ] if @Done ; 7 8 :game:pig pig:restart 9 [ display c:get 10 dup $1 eq? &turn if 11 dup $2 eq? &switch if 12 dup $3 eq? &pig:restart if 13 dup $0 eq? [ #1 !Done ] if 14 drop done? ] until display:win ; 15 ---------------------------------------------------------------- 0 (game:pig) (a-game-of-chance) (requires:_dusk:rng,_dusk:dice) 1 2 :pig:hints 3 'Roll #1 ti:add-hint 'Halt #2 ti:add-hint 4 'Restart #3 ti:add-hint 'Quit #0 ti:add-hint ; 5 6 :pig:actions 7 &turn $1 ti:set-action 8 &switch $2 ti:set-action 9 &pig:restart $3 ti:set-action 10 &ti:done $0 ti:set-action ; 11 12 13 14 15 ---------------------------------------------------------------- 0 (game:pig) (a-game-of-chance) (requires:_dusk:rng,_dusk:dice) 1 2 :~at #1 #30 vt:row,col ; 3 :~dice &dice:Relative v:on @Roll dice:draw ; 4 5 :pig:display clear rolled player has total ~at ~dice done? 6 [ clear display:win c:get drop pig:restart ] if ; 7 8 9 10 11 12 13 14 :pig [ &pig:actions &pig:hints &pig:display ] ti:application ; 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (LOAD:game:pig) 1 2 '(dusk:rng) needs 3 '(dusk:dice) needs 4 '(game:pig) needs 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 dusk :: blocks from arland 1 2 Arland is writing some programs and language extensions. I have 3 copies of these starting here. 4 5 Note that you'll probably ned a system supporting supporting 6 Graphica to use many of these. 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (dusk:rng) 1 2 'seeda var 'seedb var 'seedc var 3 4 :set-seeds (abc-) !seedc !seedb !seeda ; 5 :get-seeds (-abc) @seeda @seedb @seedc ; 6 7 :advance-seeds (-) 8 @seeda #2 shift-left @seedb and @c xor @seeda n:add !seeda 9 @seeda @seedb n:add @seedc n:add @seedb xor !seedb 10 @seedc @seedb n:sub #5 shift-right @seeda xor !seedc ; 11 12 :rng (-n) 13 advance-seeds @seeda @seedb n:sub @seedc xor #8 shift-right ; 14 15 #-12982641 #-4851317 #4285 set-seeds ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (dusk:dice) (words-for-dice-games) 1 2 . Variables: 3 . 4 . dice:Relative : when TRUE, use Termina to draw a dice relative 5 . to the current cursor location. When FALSE, 6 . draw it using the normal line ending 7 . 8 . dice:Sides : holds the number of sides in the dice (6 max 9 . if using `dice:draw`) 10 11 #6 'dice:Sides var-n 12 #0 'dice:Relative var-n 13 14 :dice:roll (-n) rng n:abs @dice:Sides n:mod n:inc ; 15 ---------------------------------------------------------------- 0 (dusk:dice) (words-for-dice-games) 1 2 :~put (s-) 3 s:put @dice:Relative [ #1 vt:down #7 vt:left ] &nl choose ; 4 5 :e0 '+-----+ ~put ; :s0 '|_#_#_| ~put ; :s1 '|__#__| ~put ; 6 :s2 '|_#___| ~put ; :s3 '|___#_| ~put ; :s4 '|_____| ~put ; 7 8 :d0 s4 s4 s4 ; :d1 s4 s1 s4 ; :d2 s3 s4 s2 ; :d3 s3 s1 s2 ; 9 :d4 s0 s4 s0 ; :d5 s0 s1 s0 ; :d6 s0 s0 s0 ; 10 11 'faces d:create #7 comma 12 &d0 comma &d1 comma &d2 comma 13 &d3 comma &d4 comma &d5 comma &d6 comma 14 15 :dice:draw (n-) &faces swap a:fetch e0 call e0 ; ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (crc:unsigned) (experiments-in-unsigned-numbers) 1 2 :u:patch (n-n) 3 dup n:negative? 4 [ #2147483647 n:add n:inc swap #-2147483648 n:sub n:add ] if ; 5 6 :u:add (nn-n) n:add u:patch ; 7 :u:sub (nn-n) n:sub u:patch ; 8 :u:mul (nn-n) n:mul u:patch ; 9 :u:div (nn-n) 10 dup n:zero? [ drop-pair n:MAX ] [ n:div u:patch ] choose ; 11 :u:mod (nn-n) 12 dup n:zero? [ drop-pair n:MAX ] [ n:mod u:patch ] choose ; 13 14 15 ---------------------------------------------------------------- 0 (crc:unsigned) (experiments-in-unsigned-numbers) 1 2 :u:eq? (nn-f) or not ; 3 :u:-eq? (nn-f) u:eq? not ; 4 :u:lt? (nn-f) over or and n:negative? ; 5 :u:gt? (nn-f) tuck or and n:negative? ; 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (crc:double) (experimental-double-cell-numbers) 1 2 '~res var 3 4 :dn:h@ (D-n) fetch ; 5 :dn:l@ (D-n) n:inc fetch ; 6 :dn:h! (nD-) store ; 7 :dn:l! (nD-) n:inc store ; 8 9 :dn:new (-D) here #0 dup comma comma ; 10 11 :dn:lows (DD-nn) [ dn:l@ ] bi@ ; 12 :dn:highs (DD-nn) [ dn:h@ ] bi@ ; 13 14 :dn:make (nn-D) here [ swap comma comma ] dip ; 15 :dn:put fetch-next n:put sp fetch n:put nl ; ---------------------------------------------------------------- 0 (crc:double) (experimental-double-cell-numbers) 1 2 :dn:add (DD-D) 3 dn:new !~res 4 dup-pair dn:lows n:add @~res dn:l! 5 over @~res dn:lows gt? n:abs [ dn:highs n:add ] dip n:add 6 @~res dn:h! 7 @~res ; 8 9 :dn:sub (DD-D) 10 dn:new !~res 11 dup-pair dn:lows n:sub @~res dn:l! 12 over @~res dn:lows lt? n:abs [ dn:highs n:sub ] dip n:sub 13 @~res dn:h! 14 @~res ; 15 ---------------------------------------------------------------- 0 (crc:double) (experimental-double-cell-numbers) 1 2 :dn:mul (DD-D) 3 dn:new !~res 4 dup-pair dn:lows n:mul @~res dn:l! 5 @~res dn:l@ n:negative? n:abs 6 [ dup-pair 7 [ dn:h@ ] [ dn:l@ ] bi* n:mul 8 [ [ dn:l@ ] [ dn:h@ ] bi* n:mul ] dip n:add 9 ] dip n:add 10 @~res dn:h! 11 @~res ; 12 13 14 15 ---------------------------------------------------------------- 0 (crc:double) (experimental-double-cell-numbers) 1 2 :dn:div (DD-D) 3 dn:new !~res 4 dup-pair dn:lows n:div @~res dn:l! 5 dup-pair 6 [ dn:h@ ] [ dn:l@ ] bi* n:div #1 shift-left 7 [ [ dn:l@ ] [ dn:h@ ] bi* n:mod #31 shift-right ] dip n:add 8 @~res dn:h! 9 @~res ; 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (crc:iota) 1 2 :iota (n-a) 3 [ #0 swap here 4 [ dup comma [ dup comma n:inc ] times drop ] dip 5 a:temp ] gc ; 6 7 . iota takes a number and returns an array of values. This will 8 . be in the sequence of 0 .. (n-1). 9 . 10 . An example: 11 . 12 . #4 iota [ 'Happy_Birthday_ s:put 13 . #2 eq? [ 'dear_NAME ] [ 'to_you ] choose 14 . s:put nl ] a:for-each 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (crc:rng/test-distribution) 1 2 'Alpha d:create #26 comma #26 allot 3 4 :rnd/c #26 n:random-mod &Alpha n:add n:inc v:inc ; 5 6 #2,600,000 &rnd/c times 7 8 #0 &Alpha [ over $A n:add c:put sp n:put nl n:inc ] a:for-each 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (crc:rng/test) 1 2 . Dependencies: (std) (termina) 3 4 :color #8 n:random-mod #30 n:add vt:set/color ; 5 :sym color #127 #33 n:sub n:random-mod #32 n:add c:put ; 6 7 clear #1,000,000 8 [ #25 n:random-mod 9 #80 n:random-mod vt:row,col sym 10 #25 #1 vt:row,col I n:put ] indexed-times 11 12 . This will fill the screen with a random selection of colorful 13 . characters. It's set to run 1 million iterations. 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (crc:pi-approximations) 1 2 . Thinking a bit about pi on March 14 (pi day), here are a few 3 . approximations of pi using the (fixed-point) vocabulary. 4 5 #10,000 !f:scale 6 7 #22 #7 f:div f:put nl 8 #355 #113 f:div f:put nl 9 #103,993 #33,102 f:div f:put nl 10 #104,348 #33,215 f:div f:put nl 11 12 13 14 15 ---------------------------------------------------------------- 0 Misc. Small Tools ============================================== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:words) (list-words-in-the-glossary) 1 2 :block:title (-s) block:buffer n:dec #64 over store ; 3 :glossary? (-f) block:title 'Glossary:_ s:begins-with? ; 4 :more? (c-cf) dup #32 -eq? ; 5 :title:put (ac-) [ c:put fetch-next more? ] while drop-pair ; 6 :.title (-) block:title #11 n:add fetch-next title:put sp ; 7 :words 8 @Block @Blocks 9 [ I set load glossary? &.title if ] indexed-times !Block ; 10 11 . Konilo does not store word names, so we can't simply walk 12 . through the dictionary to get the names. Instead, this 13 . scans the *blocks*, displaying the names of any words in 14 . the *Glossary:* blocks. 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (tools:ascii-table) 1 2 :pad dup n:to-s s:length #3 swap n:sub [ sp ] times ; 3 4 :col I pad n:put sp 5 I #32 gt? [ sp I c:put sp ] [ sp sp sp ] choose tab ; 6 :row col I #9 n:mod n:zero? &nl if ; 7 :ascii-table #128 [ row ] indexed-times nl ; 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Misc. Language Extensions ====================================== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (immediate) 1 2 . RetroForth has only a few immediate words (just these: [ ] ; ) 3 . It's still useful to be able to define new immediate words, so 4 . I implemented `immediate` in this block. 5 6 :immediate (-) #-1 &Dictionary fetch d:flags store ; 7 8 . Using this is easy: write a normal word, then add `immediate` 9 . after the `;`. 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (if;) 1 2 :if; (fq-) 3 over &if dip n:-zero? 4 [ pop pop pop pop pop pop drop-pair drop-pair drop-pair ] if ; 5 6 . This conditional combinator behaves like `if`, but with the 7 . added action of exiting the caller if the flag is true. You 8 . can use this to process guard clauses, or in other cases where 9 . an early exit is desirable. 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (case) (dependencies:) (immediate) 1 2 :case (nq-) 3 compiling? not [ drop-pair 'ERR:_Compile-Only! s:put nl ] if; 4 &push comma &over comma &eq? comma &pop comma &if; comma ; 5 immediate 6 7 :s:case (sq-) 8 compiling? not [ drop-pair 'ERR:_Compile-Only! s:put nl ] if; 9 &push comma &over comma &s:eq? comma &pop comma &if; comma ; 10 immediate 11 12 . This implements `case`, which executes the same as: 13 . dup eq? if; 14 . But with a syntax like: 15 . case ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (does) 1 2 :does @Dictionary d:address [ fetch swap curry ] sip store ; 3 4 . This adds a word, `does`, which is similar in spirit to the 5 . `does>` in traditional Forth. An example: 6 7 . :constant (n"-) s:get/token d:create comma [ fetch ] does ; 8 . #100 constant VALUE 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (sigil:") 1 2 {{ 3 :more '_ s:append s:get/token s:append dup s:last $" -eq? ; 4 ---reveal--- 5 :sigil:" 6 s:temp dup s:last $" eq? [ &more while ] -if s:chop 7 compiling? &s:keep if ; 8 }} 9 10 &sigil:" $" sigil:set 11 12 . This implement a " sigil for strings. The string can have 13 . embedded spaces, and both starts and ends with a " 14 . Examples: "Hello, World!" "This" "testing strings" 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (symbolic-names) 1 2 . RetroForth has verbose, non-symbolic names for most things. 3 . I recognize that this will be uncomfortable for many, so I am 4 . providing symbolic names for some of the common math words. 5 6 &n:add \+ 7 &n:sub \- 8 &n:mul \* 9 &n:div \/ 10 &n:mod \% 11 &n:divmod \/mod 12 &comma \, 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (ASCII) (control-character-constants) 1 2 :ASCII:NUL #0 ; :ASCII:SOH #1 ; :ASCII:STX #2 ; 3 :ASCII:ETX #3 ; :ASCII:EOT #4 ; :ASCII:ENQ #5 ; 4 :ASCII:ACK #6 ; :ASCII:BEL #7 ; :ASCII:BS #8 ; 5 :ASCII:HT #9 ; :ASCII:LF #10 ; :ASCII:VT #11 ; 6 :ASCII:FF #12 ; :ASCII:CR #13 ; :ASCII:SO #14 ; 7 :ASCII:SI #15 ; :ASCII:DLE #16 ; :ASCII:DC1 #17 ; 8 :ASCII:DC2 #18 ; :ASCII:DC3 #19 ; :ASCII:DC4 #20 ; 9 :ASCII:NAK #21 ; :ASCII:SYN #22 ; :ASCII:ETB #23 ; 10 :ASCII:CAN #24 ; :ASCII:EM #25 ; :ASCII:SUB #26 ; 11 :ASCII:ESC #27 ; :ASCII:FS #28 ; :ASCII:GS #29 ; 12 :ASCII:RS #30 ; :ASCII:US #31 ; :ASCII:SPACE #32 ; 13 :ASCII:DEL #127 ; 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Misc. Language Extensions ====================================== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (const) (creating_constants) 1 2 . If you want a constant you can call like a word, write it as a 3 . word. For a more efficient approach, you can use the \ sigil. 4 . 5 . :foo #100 ; #100 \bar 6 . 7 . Note that if using \, you will need to use & to get the value: 8 . 9 . &bar 10 11 . 12 . You can also use these (along with the & sigil): 13 14 :const (ns-) d:create @Dictionary d:address store ; 14 15 :s:const (ss-) swap s:keep swap const ; ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (ll) (linked-lists,_cons_cells) 1 2 :cons (car,cdr-ptr) here [ swap comma comma ] dip ; 3 :car (cons-ptr) ; 4 :cdr (cons-ptr) n:inc ; 5 6 :car@ (cons-value) car fetch ; 7 :car! (value,cons-) car store ; 8 :cdr@ (cons-value) cdr fetch ; 9 :cdr! (value,cons-) cdr store ; 10 11 :END (-) ; 12 13 14 15 ---------------------------------------------------------------- 0 (ll) (forward-linked-lists) 1 2 {{ 3 'r var 4 ---reveal--- 5 :fll:create (v-p) &END cons ; 6 :fll:to-end (p-p) 7 dup !r [ cdr@ dup &END -eq? dup 8 [ over !r ] &nip choose ] while @r ; 9 :fll:append/value (pv-) &END cons swap fll:to-end cdr! ; 10 :fll:to-index (pn-p) &cdr@ times ; 11 :fll:del (pn-) 12 dup-pair n:dec fll:to-index 13 [ n:inc fll:to-index ] dip cdr! ; 14 }} 15 ---------------------------------------------------------------- 0 (ll) (forward-linked-lists) 1 2 {{ 3 'Action var 4 ---reveal--- 5 :fll:for-each (aq-) 6 !Action [ [ car@ @Action call ] sip cdr@ dup &END -eq? ] 7 while drop ; 8 :fll:length (p-n) #0 swap [ drop n:inc ] fll:for-each n:dec ; 9 :fll:drop dup fll:length n:dec fll:to-index &END swap cdr! ; 10 }} 11 12 13 14 15 ---------------------------------------------------------------- 0 (ll) (forward-linked-lists) 1 2 {{ 3 'i var 4 ---reveal--- 5 :fll:inject (piv-) 6 fll:create !i dup-pair n:dec fll:to-index 7 &fll:to-index dip @i swap cdr! @i cdr! ; 8 :fll:put (a-) [ n:put sp ] fll:for-each ; 9 }} 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Misc. Editor Extensions ======================================= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 (opt:editor-ext) (indention,unindention) 1 2 :~new d:create dup 'liliju.. i comma n:inc ; 3 :~i ~new &e:indent comma ; 4 :~u ~new &e:unindent comma ; 5 6 #0 '0i ~i '1i ~i '2i ~i '3i ~i '4i ~i '5i ~i 7 '6i ~i '7i ~i '8i ~i '9i ~i '10i ~i '11i ~i 8 '12i ~i '13i ~i '14i ~i '15i ~i drop 9 10 #0 '0u ~u '1u ~i '2u ~u '3u ~u '4u ~u '5u ~u 11 '6u ~u '7u ~i '8u ~u '9u ~u '10u ~u '11u ~u 12 '12u ~u '13u ~i '14u ~u '15u ~u drop 13 14 15 ---------------------------------------------------------------- 0 (opt:editor-ext) (cut,copy,paste) 1 2 :~x ~new &e:cut comma ; (cut) 3 :~c ~new &e:copy comma ; (copy) 4 :~p ~new &e:paste comma ; (paste) 5 6 #0 '0x ~x '1x ~x '2x ~x '3x ~x '4x ~x '5x ~x 7 '6x ~x '7x ~x '8x ~x '9x ~x '10x ~x '11x ~x 8 '12x ~x '13x ~x '14x ~x '15x ~x drop 9 #0 '0c ~c '1c ~c '2c ~c '3c ~c '4c ~c '5c ~c 10 '6c ~c '7c ~c '8c ~c '9c ~c '10c ~c '11c ~c 11 '12c ~c '13c ~c '14c ~c '15c ~c drop 12 #0 '0p ~p '1p ~p '2p ~p '3p ~p '4p ~p '5p ~p 13 '6p ~p '7p ~p '8p ~p '9p ~p '10p ~p '11p ~p 14 '12p ~p '13p ~p '14p ~p '15p ~p drop 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 wiki: start 1 2 This is a minimalist *wiki using one block per topic. Thing of 3 it as a simple *hypertext network of information. 4 5 Wiki pages have a title of "wiki: topic" (all in lowercase), 6 and can be looked up using "wiki topic", or via the wiki 7 brovser ("wiki:browse"). 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 wiki: wiki 1 2 Wiki is a simple *hypetext document, with links between pages. 3 Though many are collaborative efforts, this wiki is, like all 4 things in *Konilo, a personal tool. 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 wiki: hypertext 1 2 Hypertext is text with links between pages or topics. It's the 3 backbone of the *wiki. 4 5 In Wiki I use a single asterisk to mark words as links. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 wiki: konilo 1 2 Konilo is a smal, personal Forth. 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: . 1 2 . 3 '- 4 5 Read and discard the next 62 characters. This is used in 6 blocks to provide line width comments. 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 0 1 2 0 3 '- 4 5 Parse to end of line. Insert into text line 0 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 1 1 2 1 3 '- 4 5 Parse to end of line. Insert into text line 1 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 2 1 2 2 3 '- 4 5 Parse to end of line. Insert into text line 2 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 3 1 2 3 3 '- 4 5 Parse to end of line. Insert into text line 3 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 4 1 2 4 3 '- 4 5 Parse to end of line. Insert into text line 4 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 5 1 2 5 3 '- 4 5 Parse to end of line. Insert into text line 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 6 1 2 6 3 '- 4 5 Parse to end of line. Insert into text line 6 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 7 1 2 7 3 '- 4 5 Parse to end of line. Insert into text line 7 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 8 1 2 8 3 '- 4 5 Parse to end of line. Insert into text line 8 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 9 1 2 9 3 '- 4 5 Parse to end of line. Insert into text line 9 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 10 1 2 10 3 '- 4 5 Parse to end of line. Insert into text line 10 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 11 1 2 11 3 '- 4 5 Parse to end of line. Insert into text line 11 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 12 1 2 12 3 '- 4 5 Parse to end of line. Insert into text line 12 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 13 1 2 13 3 '- 4 5 Parse to end of line. Insert into text line 13 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 14 1 2 14 3 '- 4 5 Parse to end of line. Insert into text line 14 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: 15 1 2 15 3 '- 4 5 Parse to end of line. Insert into text line 15 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: {{ 1 2 {{ 3 - 4 5 Begin a lexical scoped area. Starts the private portion. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: ---reveal--- 1 2 ---reveal--- 3 - 4 5 Within lexical scoped area, switch to global scope area. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: }} 1 2 }} 3 - 4 5 Close off lexical scoped area. Hides words in the private 6 area. 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: ) 1 2 ) 3 - 4 5 Ending for comments or visual grouping. Provided for 6 readability purposes 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: -eq? 1 2 -eq? 3 nn-f 4 5 Compare values for inequality 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: -if 1 2 -if 3 fp- 4 5 Execute p if flag is zero 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: ; 1 2 ; 3 - 4 5 End a definition 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: ?jump 1 2 ?jump 3 fp- 4 5 Internal. If flag is non-zero, branch to p. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: Block 1 2 Block 3 - 4 5 Data. Holds the current block number, relative to the value in 6 BlockBase. 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: BlockBase 1 2 BlockBase 3 - 4 5 Data. Holds the number of the first block. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: Blocks 1 2 Blocks 3 - 4 5 Data. Set to the number of blocks available in your system. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: Compiler 1 2 Compiler 3 - 4 5 Data. Tracks compiler state 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: Dictionary 1 2 Dictionary 3 - 4 5 Data. Pointer to most recent header in dictionary 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: Free 1 2 Free 3 - 4 5 Data. Pointer to next free addr 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: I 1 2 I 3 -n 4 5 Access the loop index for the current loop. (For loops made 6 using indexed-times) 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: J 1 2 J 3 -n 4 5 Access the parent loop index for the current loop. (For loops 6 made using indexed-times) 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: K 1 2 K 3 -n 4 5 Access the grandparent loop index for the current loop. (For 6 loops made using indexed-times) 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: Sigils 1 2 Sigils 3 - 4 5 Data. Table of sigil handlers 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: [ 1 2 [ 3 -p 4 5 Begin a quotation 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: ] 1 2 ] 3 p-p 4 5 End a quotation 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:append 1 2 a:append 3 aa-a 4 5 Create a new array with the contents of a1 followed by a2 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:behead 1 2 a:behead 3 a-a 4 5 Remove first item from an array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:chop 1 2 a:chop 3 a-a 4 5 Remove last item from an array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:contains? 1 2 a:contains? 3 an-f 4 5 True if array contains n. False otherwise 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:copy 1 2 a:copy 3 ap- 4 5 Copy array a to memory starting at pointer p 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:dup 1 2 a:dup 3 a-a 4 5 Make a copy of an array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:eq? 1 2 a:eq? 3 aa-f 4 5 Compare two arrays for equality 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:-eq? 1 2 a:-eq? 3 aa-f 4 5 Compare two arrays for inequality 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:fetch 1 2 a:fetch 3 an-v 4 5 Fetch value stored at index n in array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:filter 1 2 a:filter 3 ap-a 4 5 Run p once for each value in a. If it returns true, copy value 6 new array 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:first 1 2 a:first 3 a-n 4 5 Return the first value in an array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:for-each 1 2 a:for-each 3 ap- 4 5 Run p once for each value in the array. Pushes each value 6 prior to calling p 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:hash 1 2 a:hash 3 a-n 4 5 Return the hash of an array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:indices 1 2 a:indices 3 av-a 4 5 Return array of indices for v in source array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:index 1 2 a:index 3 av-n 4 5 Return first index of n in a 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:last 1 2 a:last 3 a-n 4 5 Return the last value in an array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:left 1 2 a:left 3 an-a 4 5 Return left n values from array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:length 1 2 a:length 3 a-n 4 5 Return the length of an array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:make 1 2 a:make 3 ...n-a 4 5 Create a new permanent array from the provided values 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:make/temp 1 2 a:make/temp 3 ...n-a 4 5 Create a new temporary array from the provided values 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:map 1 2 a:map 3 ap-a 4 5 Run p once for each value in the array. Takes the returned 6 value and creates a new array 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:middle 1 2 a:middle 3 afl-a 4 5 Return new array from f to l, inclusive 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:prepend 1 2 a:prepend 3 aa-a 4 5 Create a new array with the contents of a2 followed by a1 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:reduce 1 2 a:reduce 3 anp-n 4 5 Takes an array, a starting value, and a quote. This will apply 6 the quote to each item in the array; the quote should consume 7 two values and return one 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:reverse 1 2 a:reverse 3 a-a 4 5 Reverse the order of items in an array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:right 1 2 a:right 3 an-a 4 5 Return right n values from array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:store 1 2 a:store 3 van- 4 5 Store value v into array at index n 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:temp 1 2 a:temp 3 a-a 4 5 Make a copy of the array in the temporary string/array space 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: a:th 1 2 a:th 3 an-p 4 5 Return the address of a specific index into the array 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: allot 1 2 allot 3 n- 4 5 Allocate n cells of memory 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: and 1 2 and 3 nn-n 4 5 Perform a bitwise AND 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: bi 1 2 bi 3 xpp-? 4 5 Execute p1 against x, then p2 against a copy of x 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: bi* 1 2 bi* 3 xypp- 4 5 Execute p1 against x and p2 against y 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: bi@ 1 2 bi@ 3 xyp- 4 5 Execute p against x, execute p against y 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: block:load 1 2 block:load 3 np- 4 5 Read 1024 cells in block n to p 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: block:save 1 2 block:save 3 np- 4 5 Save 1024 cells at p to block n 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: block:buffer 1 2 block:buffer 3 -p 4 5 Return a pointer to the start of the block buffer 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: bye 1 2 bye 3 - 4 5 Exit Konilo 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: c:get 1 2 c:get 3 -c 4 5 Read a character from the keyboard 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: c:lowercase? 1 2 c:lowercase? 3 c-f 4 5 Return true if character is lowercase or false if not 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: c:put 1 2 c:put 3 c- 4 5 Display a single character 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: c:to-lower 1 2 c:to-lower 3 c-c 4 5 Convert character to lowercase 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: c:to-s 1 2 c:to-s 3 c-s 4 5 Convert a character to a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: c:to-upper 1 2 c:to-upper 3 c-c 4 5 Convert character to uppercase 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: c:uppercase? 1 2 c:uppercase? 3 c-f 4 5 Return true if character is uppercase or false if not 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: call 1 2 call 3 p- 4 5 Call a function 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: choose 1 2 choose 3 fpp- 4 5 Execute p1 if flag is non-zero or p2 if zero. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: comma 1 2 comma 3 n- 4 5 Inline a value to here and increment Free 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: compare 1 2 compare 3 sdn-f 4 5 Compare n cells of memory starting at s to memory starting at 6 d. Return true if all match or false otherwise 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: compiling? 1 2 compiling? 3 -f 4 5 True if Compiler is set, False otherwise 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: compile:lit 1 2 compile:lit 3 n- 4 5 Internal. Compile an ilo li instruction 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: compile:call 1 2 compile:call 3 p- 4 5 Internal. Compile an ilo lica instruction 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: compile:jump 1 2 compile:jump 3 p- 4 5 Internal. Compile an ilo liju instruction 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: copy 1 2 copy 3 sdc- 4 5 Copy c cells starting at s to memory starting at d. Does not 6 support overlapping regions 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: curry 1 2 curry 3 vp-p 4 5 Create a new quote pushing the value, then calling p1 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: d:address 1 2 d:address 3 d-p 4 5 Given a dictionary header, return a pointer to the address 6 field 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: d:create 1 2 d:create 3 s- 4 5 Create a new header 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: d:exists? 1 2 d:exists? 3 s-f 4 5 Given a dictionary header, return a flag indicating whether or 6 not the word exists 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: d:flags 1 2 d:flags 3 d-p 4 5 Given a dictionary header, return a pointer to the flags field 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: d:hash 1 2 d:hash 3 d-p 4 5 Given a dictionary header, return a pointer to the hash field 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: d:link 1 2 d:link 3 d-p 4 5 Given a dictionary header, return a pointer to the link field 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: d:lookup 1 2 d:lookup 3 s-d 4 5 Lookup a word in the dictionary. Returns zero if not found or 6 the dictionary header address 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: depths 1 2 depths 3 -nm 4 5 Return depths of data and address stacks 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: depth/data 1 2 depth/data 3 -n 4 5 Return the depth of the data stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: depth/address 1 2 depth/address 3 -n 4 5 Return the depth of the address stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: dip 1 2 dip 3 np-n 4 5 Push n to address stack, call p. then restore n to data stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: drop 1 2 drop 3 n- 4 5 Discard top value on stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: drop-pair 1 2 drop-pair 3 nn- 4 5 Discard top two values on stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: dtc 1 2 dtc 3 - 4 5 Internal. Data following is a direct threaded address list 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: dup 1 2 dup 3 n-nn 4 5 Duplicate top value on stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: dup-pair 1 2 dup-pair 3 nm-nmnm 4 5 Duplicate top two values 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: e:Display 1 2 e:Display 3 - 4 5 Data. Holds a pointer to a block display word. Called by edit. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: e:erase/line 1 2 e:erase/line 3 n- 4 5 Erase line n in the block buffer 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: e:insert 1 2 e:insert 3 n'- 4 5 Erase line n, parse to end of line, insert into line n 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: e:insert-at 1 2 e:insert-at 3 lc'- 4 5 Parse to end of line. Insert text into line l at column c 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: e:line 1 2 e:line 3 n- 4 5 Display a single line from the current block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: e:replace 1 2 e:replace 3 ls- 4 5 Insert text s into line l 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: e:replace-at 1 2 e:replace-at 3 lcs- 4 5 Insert text s into line l at column c 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: e:to-line 1 2 e:to-line 3 n-p 4 5 Return pointer to start of line in the block buffer 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: edit 1 2 edit 3 n- 4 5 Set Block to n. Load and display block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: eq? 1 2 eq? 3 nn-f 4 5 Compare values for equality 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: fetch 1 2 fetch 3 p-n 4 5 Fetch a value stored at address 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: fetch-next 1 2 fetch-next 3 a-an 4 5 Fetch a value stored at address Also returns the next address 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: fill 1 2 fill 3 vpn- 4 5 Fill n cells of memory starting at p with value v 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: forever 1 2 forever 3 p- 4 5 Run p repeatedly, in an unending loop 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: gc 1 2 gc 3 p- 4 5 Run function at pointer p. Saves and restores Free to recover 6 any memory allocated during run 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: gt? 1 2 gt? 3 nn-f 4 5 Compare values for n1 greater than n2 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: gteq? 1 2 gteq? 3 nn-f 4 5 Compare two values for greater than or equality 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: here 1 2 here 3 -a 4 5 Return the next free memory address 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: if 1 2 if 3 fp- 4 5 Execute p if flag is non-zero 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: indexed-times 1 2 indexed-times 3 np- 4 5 Run a quote the specified number of times, tracking the loop 6 index in I 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: internal:lit 1 2 internal:lit 3 -n 4 5 Internal. Push next value in memory to the stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: internal:quote 1 2 internal:quote 3 -p 4 5 Internal. Skip over quote. Push address of quote to stack. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: interpret 1 2 interpret 3 s- 4 5 Interpret token 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: io 1 2 io 3 ...n- 4 5 Trigger an I/O operation 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: jump 1 2 jump 3 p- 4 5 Internal. Jump to an address 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: list* 1 2 list* 3 - 4 5 Display the text in the block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: list# 1 2 list# 3 - 4 5 Display the block with line numbers 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: list 1 2 list 3 - 4 5 Display the block with line numbers and rules 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: load 1 2 load 3 - 4 5 (re)Load the current block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: lt? 1 2 lt? 3 nn-f 4 5 Compare values for n1 less than n2 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: lteq? 1 2 lteq? 3 nn-f 4 5 Compare two values for less than or equality 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:abs 1 2 n:abs 3 n-n 4 5 Return the absolute value of n 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:add 1 2 n:add 3 nn-n 4 5 Add n1 to n2, returning n3 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:between? 1 2 n:between? 3 nlu-f 4 5 True if n is between l and u, inclusive 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:dec 1 2 n:dec 3 n-n 4 5 Decrement n by 1 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:div 1 2 n:div 3 nn-n 4 5 Divine n1 by n2; get result 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:divmod 1 2 n:divmod 3 nn-nn 4 5 Divide n1 by n2 and return the result and remainder 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:get 1 2 n:get 3 '-n 4 5 Read a number from the input device 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:inc 1 2 n:inc 3 n-n 4 5 Increment n by 1 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:limit 1 2 n:limit 3 nlu-n 4 5 Constrain n to between l and u, inclusive 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:max 1 2 n:max 3 nn-n 4 5 Return the greater of two values 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:min 1 2 n:min 3 nn-n 4 5 Return the lower of two values 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:mod 1 2 n:mod 3 nn-n 4 5 Divide n1 by n2; get remainder 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:mul 1 2 n:mul 3 nn-n 4 5 Multiply n1 by n2, returning n3 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:negate 1 2 n:negate 3 n-n 4 5 Invert the sign of n 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:put 1 2 n:put 3 n- 4 5 Display a number 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:sub 1 2 n:sub 3 nn-n 4 5 Subtract n2 from n1 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:to-s 1 2 n:to-s 3 n-s 4 5 Convert number to a temp string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:zero? 1 2 n:zero? 3 n-f 4 5 Compare n to zero. True if zero, false otherwise 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: n:-zero? 1 2 n:-zero? 3 n-f 4 5 Compare n to zero. True if not zero, false otherwise 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: needs 1 2 needs 3 s- 4 5 Run any blocks (in order found) with a title starting with s 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: new 1 2 new 3 - 4 5 Erase the contents of the current block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: next 1 2 next 3 - 4 5 Switch to and load next block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: nip 1 2 nip 3 xy-y 4 5 Discard second item on stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: nl 1 2 nl 3 - 4 5 Display a newline 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: not 1 2 not 3 n-n 4 5 Perform a logical NOT operation 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: or 1 2 or 3 nn-n 4 5 Perform a bitwise OR 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: over 1 2 over 3 nm-nmn 4 5 Put a copy of NOS on top of stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: pop 1 2 pop 3 -n 4 5 Move top value on address stack to data stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: prelude 1 2 prelude 3 - 4 5 Load & run blocks 1 & 2 if they appear to be code. Called by 6 default `startup`. 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: prev 1 2 prev 3 - 4 5 Switch to and load previous block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: process-data 1 2 process-data 3 n-? 4 5 Internal. If compiling, compile value as a literal into the 6 word. If interpreting, leave on the stack 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: push 1 2 push 3 n- 4 5 Move TOS to the address stack 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: restart 1 2 restart 3 - 4 5 Reload the image and empty stacks 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: rom:save 1 2 rom:save 3 - 4 5 Save the current memory to disk (ilo.rom) 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: rot 1 2 rot 3 xyz-yzx 4 5 Rotate the top three values 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: run 1 2 run 3 - 4 5 Run code in the currently loaded block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:append 1 2 s:append 3 ss-s 4 5 Append s2 to s1, returning new temporary string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:behead 1 2 s:behead 3 s-s 4 5 Remove first item from a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:chop 1 2 s:chop 3 s-s 4 5 Remove last item from a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:contains? 1 2 s:contains? 3 sc-f 4 5 True if string contains c. False otherwise 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:copy 1 2 s:copy 3 sd- 4 5 Copy string s to memory at d 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:dup 1 2 s:dup 3 s-s 4 5 Make a copy of string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:eq? 1 2 s:eq? 3 ss-f 4 5 Compare two strings for equality 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:-eq? 1 2 s:-eq? 3 ss-f 4 5 Compare two strings for inequality 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:evaluate 1 2 s:evaluate 3 s-? 4 5 Interpret each token in a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:fetch 1 2 s:fetch 3 sn-c 4 5 Return character at index n in the string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:filter 1 2 s:filter 3 sp-s 4 5 Run p once for each value in s If it returns true, copy value 6 new string 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:first 1 2 s:first 3 s-c 4 5 Return the first character in a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:for-each 1 2 s:for-each 3 sp- 4 5 Run p once for each character in s. Pushes each character to 6 the stack before calling p 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:get/line 1 2 s:get/line 3 '-s 4 5 Read a line of input until enter is encountered. Return input 6 as string 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:get/token 1 2 s:get/token 3 -s 4 5 Read a string from the keyboard ending when a whitespace is 6 encountered 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:hash 1 2 s:hash 3 s-n 4 5 Return the hash of the string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:index/c 1 2 s:index/c 3 sc-f 4 5 True if string contains c, false otherwise 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:keep 1 2 s:keep 3 s-s 4 5 Move string to here, allocating space and returning a pointer 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:last 1 2 s:last 3 s-c 4 5 Return the last character in a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:left 1 2 s:left 3 sn-s 4 5 Return left n characters of string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:length 1 2 s:length 3 s-n 4 5 Return the length of a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:map 1 2 s:map 3 sp-s 4 5 Run p once for each value in the string. Takes the returned 6 value and creates a new string 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:middle 1 2 s:middle 3 sfl-s 4 5 Return substring from f to l, inclusive 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:prepend 1 2 s:prepend 3 ss-s 4 5 Create a new string with the contents of s2 followed by s1 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:put 1 2 s:put 3 s- 4 5 Display a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:reverse 1 2 s:reverse 3 s-s 4 5 Reverse the order of values in the string. Returns a pointer 6 to the new string 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:rewrite 1 2 s:rewrite 3 s-s 4 5 Replace underscores in string with spaces 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:right 1 2 s:right 3 sn-s 4 5 Return right n characters of string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:store 1 2 s:store 3 csn- 4 5 Store character into string at index n 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:temp 1 2 s:temp 3 s-s 4 5 Put a copy of a string in the temporary buffers. Return a 6 pointer to it 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:th 1 2 s:th 3 sn-a 4 5 Given a string and index, return the address 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:to-lower 1 2 s:to-lower 3 s-s 4 5 Make all characters in string lowercase 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:to-n 1 2 s:to-n 3 s-n 4 5 Convert a string to a number 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:to-upper 1 2 s:to-upper 3 s-s 4 5 Make all characters in a string uppercase 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:trim 1 2 s:trim 3 s-s 4 5 Trim both leading and trailing whitespace from a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:trim-right 1 2 s:trim-right 3 s-s 4 5 Trim trailing whitespace from a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: s:trim-left 1 2 s:trim-left 3 s-s 4 5 Trim leading whitespace from a string 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: shift-left 1 2 shift-left 3 nn-n 4 5 Shift n1 left by n2 bits 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: shift-right 1 2 shift-right 3 nn-n 4 5 Shift n1 right by n2 bits 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:( 1 2 sigil:( 3 - 4 5 Sigil. Token is a comment 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:# 1 2 sigil:# 3 s-n 4 5 Sigil. Token is a number 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:& 1 2 sigil:& 3 s-a 4 5 Sigil. Token is a named pointer 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:' 1 2 sigil:' 3 s-s 4 5 Sigil. Token is a string. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:: 1 2 sigil:: 3 s- 4 5 Sigil. Token is name of a new word to define 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:$ 1 2 sigil:$ 3 s-c 4 5 Sigil. Return first character of token 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:get 1 2 sigil:get 3 c-p 4 5 Return the address of a sigil handler for character c 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:set 1 2 sigil:set 3 pc- 4 5 Assign word at address to the sigil handler for character c 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:@ 1 2 sigil:@ 3 s-n 4 5 Sigil. Use to fetch value from a named variable 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:! 1 2 sigil:! 3 ns- 4 5 Sigil. Use to store value into a named variable 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sigil:\ 1 2 sigil:\ 3 as- 4 5 Sigil. Bind name s to function a 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sip 1 2 sip 3 np-n 4 5 Push a copy of n to address then call p. Afterwards, restore 6 to the data stack 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: save 1 2 save 3 - 4 5 Save the current block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: set 1 2 set 3 n- 4 5 Set Block to n. Does not load or save the block 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sp 1 2 sp 3 - 4 5 Display a space 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: startup 1 2 startup 3 - 4 5 Called on startup to prepare the system. You can replace this 6 to have ilo start your application 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: store 1 2 store 3 na- 4 5 Store n into address a 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: store-next 1 2 store-next 3 na-a 4 5 Store n int address a, return address a + 1 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: swap 1 2 swap 3 xy-yx 4 5 Exchange the top two stack items 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:buffers/block 1 2 sys:buffers/block 3 - 4 5 Data. Points to the start of the block buffer. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:buffers/loops 1 2 sys:buffers/loops 3 - 4 5 Data. Holds loop indices. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:buffers/numeric-conversion 1 2 sys:buffers/numeric-conversion 3 - 4 5 Data. Used by s:to-n. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:buffers/scope 1 2 sys:buffers/scope 3 - 4 5 Data. Holds dictionary pointers for {{ ---reveal--- }} 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:buffers/needs 1 2 sys:buffers/needs 3 - 4 5 Data. Used by needs 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:buffers/reserved 1 2 sys:buffers/reserved 3 - 4 5 Data. Reserved for future use. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:buffers/strings+arrays 1 2 sys:buffers/strings+arrays 3 - 4 5 Data. Start of the temporary string & array pool. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:buffers/input 1 2 sys:buffers/input 3 - 4 5 Data. Holds the current input token. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: sys:info 1 2 sys:info 3 - 4 5 Display system information. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: tab 1 2 tab 3 - 4 5 Display a tab 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: times 1 2 times 3 np- 4 5 For n iterations, execute p 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: titles 1 2 titles 3 - 4 5 Display the block title lines. The output is paginated every 6 16 lines 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: tri 1 2 tri 3 xppp-? 4 5 Apply p1 against x, then p2 against a copy of x, and finally 6 p3 against another copy of x 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: tri* 1 2 tri* 3 xyzppp-? 4 5 Apply p1 against x, p2 against y, and p3 against z 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: tri@ 1 2 tri@ 3 xyzp-? 4 5 Apply p against x, then against y, and finally against z 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: tuck 1 2 tuck 3 xy-yxy 4 5 Put a copy of TOS under NOS 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: until 1 2 until 3 p- 4 5 Run a quote in a loop repeatedly The loop must return a flag. 6 End loop when flag is not zero 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: use 1 2 use 3 n- 4 5 Load and run a specific block numbered n 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: using 1 2 using 3 nn- 4 5 Load and run blocks n1 thru n2 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: v:dec 1 2 v:dec 3 a- 4 5 Decrement the value stored at address 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: v:inc 1 2 v:inc 3 a- 4 5 Increment the value stored at address 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: var 1 2 var 3 s- 4 5 Create a variable with a value of zero 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: var-n 1 2 var-n 3 ns- 4 5 Create a variable with a value of n 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: while 1 2 while 3 p- 4 5 Run a quote in a loop repeatedly The loop must return a flag. 6 End loop when flag is zero 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Glossary: xor 1 2 xor 3 nn-n 4 5 Perform a bitwise XOR 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Konilo : User Guide 1 2 Welcome to Konilo, a modern, pragmatic Forth. 3 4 Konilo is a Forth. It is untyped, using a stack to pass data 5 between functions called words, and a dictionary which 6 tracks the word names and data structures. 7 8 But it's not a traditional Forth. Konilo draws influences 9 from many sources and takes a unique approach to the language. 10 11 Konilo has a rich vocabulary of words. Keeping a copy of this 12 manual and the dictionary on hand is highly recommended as 13 you learn to use Konilo. 14 15 ---------------------------------------------------------------- 0 Welcome 1 2 The system described here is Konilo (pronounced koh-nee-lo), 3 running on the ilo virtual computer. There are related 4 implementations for napia and arks as well. Those systems have 5 separate documentation. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Overview of Konilo 1 2 The Konilo system consists of three parts: a virtual machine 3 (named "ilo"), an image file (named "ilo.rom"), and a set of 4 data blocks (named "ilo.blocks"). 5 6 The virtual machine is designed to be small, portable, and easy 7 to implement. It's the only part that's specific to your system. 8 All ilo implementations share the same image and blocks. 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Obtaining Konilo 1 2 Snapshots 3 4 You can obtain the latest version of Konilo frem 5 konilo.org or ilo.retroforth.org via Gemini or HTTP(S). 6 7 * gemini://konilo.org 8 * https://konilo.org 9 10 Daily snapshots are provided. These include ilo, the image, a 11 set of data blocks, and documentation. 12 13 14 15 ---------------------------------------------------------------- 0 Source Repositories 1 2 The snapshots do not include the full source tree. To obtain 3 this you will need to use the Fossil version control system. 4 5 6 Via Fossil: 7 8 fossil clone http://fossils.retroforth.org:8000/ilo \ 9 konilo.fossil 10 mkdir konilo; cd konilo 11 fossil open ../konilo.fossil 12 13 14 15 ---------------------------------------------------------------- 0 Building The System (C) 1 2 Requirements: 3 4 * C89 (or newer) compiler 5 6 Process: 7 8 cc ilo/ilo.c -o ilo/ilo 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Building The System (C) 1 2 Requirements: 3 4 * C89 (or newer) compiler 5 6 Process: 7 8 cc ilo.c -o ilo 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Building The System (C++) 1 2 Requirements: 3 4 * C++ compiler 5 6 Process: 7 8 c++ vm/ilo.cpp -o ilo 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Building The System (C#) 1 2 Requirements: 3 4 * C# compiler (mcs) 5 6 Process: 7 8 mcs vm/ilo.cs -out:ilo.exe 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Building The System (Kotlin) 1 2 Requirements: 3 4 * Kotlin compiler 5 6 Process: 7 8 kotlinc vm/ilo.kt -include-runtme -d ilo.jar 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Building The System (Nim) 1 2 Requirements: 3 4 * Nim 5 6 Process: 7 8 nim c vm/ilo.nim -o:ilo 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Building The System (Rust) 1 2 Requirements: 3 4 * Rust compiler 5 6 Process: 7 8 rustc vm/ilo.rs -o ilo 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Building The System (Swift) 1 2 Requirements: 3 4 * Swift compiler 5 6 Process: 7 8 swiftc vm/ilo.swift -o ilo 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Prebuilt Binaries 1 2 In addition to the source code, I provide precompiled builds for 3 a variety of architectures and host operating systems. 4 5 These are available on konilo.org or ilo.retroforth.org and are 6 listed below the ilo source links. 7 8 Should you use these or build from source? It's up to you. I 9 prefer to build locally when possible, but if using a system 10 without the required development tools installed, using a pre- 11 compiled binary can be very helpful. 12 13 14 15 ---------------------------------------------------------------- 0 Running Konilo 1 2 To run Konilo, put the ilo binary somewhere in your path, then 3 copy ilo.rom and ilo.blocks to your working directory, Finally, 4 run ilo. 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 The Listener 1 2 The listener is Konilo's interaction loop. It reads and 3 evaluates your input in a continual loop. 4 5 By itself, the listener is not feature rich. It does not provide 6 any history or editing (apart from backspace). If you are using 7 a Unix host, I recommend running Konilo under rlwrap. An example 8 (ri.sh) is in the source repository; this shows how to use the 9 rlwrap tool to add line editing, history, and tab completion. 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Basic Interactions 1 2 At the listener you can enter code, and Konilo will run what you 3 type. The code consists of tokens, which are sequences of 4 characters, seperated by whitespace. 5 6 The listener reads and processes tokens as they are entered. On 7 most Unix hosts, the system will buffer input until ENTER is 8 pressed, but this should not be assumed to be the case. If not 9 using rlwrap, on a Unix host, you can run `stty cbreak` before 10 starting the ilo binary to disable the input buffering. 11 12 As an example interaction, enter the following and press 13 ENTER (or SPACE if using character breaking) to exit Konilo: 14 15 bye ---------------------------------------------------------------- 0 An Overview of Blocks & The Block Editor 1 2 Konilo uses blocks to store code and data. These are fixed size 3 buffers of 1,024 values. For the purposes of code and text, they 4 are displayed as 16 rows, with 64 columns per row. 5 6 A minimal block editor is included. (If you are reading this in 7 Konilo, then you are probably using the block editor to do so). 8 This is not a complex program, and learning to use it will help 9 you make Konilo into a productive system. 10 11 12 13 14 15 ---------------------------------------------------------------- 0 What Are Blocks 1 2 In Konilo, blocks are 1,024 values (typically characters) 3 that are used for long-term storage. The ilo computer provides 4 a block storage device, and Retro has words to read blocks into 5 memory and write them back to the storage device. 6 7 I like to think of blocks as being similar to index cards. You 8 can write, draw, etc onto a card, and then file them away until 9 needed. 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Format of Code & Text Blocks 1 2 While technically freeform, I like to follow a simple structure 3 for my blocks. 4 5 The first line gets a description of the block contents. For 6 code blocks, this starts with a comment with the block group, 7 followed by comments for the description. 8 9 I leave the line after the description blank. This is not 10 necessary, but I find it to aid in readability a bit. 11 12 The rest of the block is filled with the source code or text. 13 14 I recommend having each block focus on a particular word (or 15 small group of related words). ---------------------------------------------------------------- 0 Format of Binary Blocks 1 2 You can store any data in a block. I still recommend designing 3 the data format to reserve the first line for a human readable 4 description. Not doing so may cause problems with some of the 5 supplied tools (e.g., `titles` or `needs`, which I will cover 6 a little later) 7 8 E.g., for a binary format of drawing data I have the first row 9 contain a type ID, title for the drawing, and other metadata. 10 This is repeated for each block needed. 11 12 13 14 15 ---------------------------------------------------------------- 0 Commenting Code Blocks 1 2 Writing comments on your code is a good idea. There are a few 3 strategies you may wish to consider. 4 5 You can write inline comments. I do this for stack comments in 6 words, and to occasionally explain what I'm doing. 7 8 For general comments, I like to have some blocks prior to the 9 code that explain anything relevant. 10 11 For word-specific comments, a traditional approach is to use 12 shadow blocks. This would involve alternating between blocks 13 with code and blocks with descriptions of the code on the 14 previous block. 15 ---------------------------------------------------------------- 0 Interacting With The Editor 1 2 You begin by telling Retro that you want to edit a block. This 3 is done by providing a block number followed by `edit`. For 4 example, to edit block 689: 5 6 #689 edit 7 8 Retro will show the block contents, along with the line numbers, 9 rulers to aid in determining columns, and some status info. Run 10 `list` to redisplay the contents of the current block. 11 12 To go to the next block, run `next`. And to go to the previous 13 block, run `prev`. 14 15 ---------------------------------------------------------------- 0 Interacting With The Editor (cont.) 1 2 Entering text into the block is easy. Type the line number and 3 then the new contents of the line. For instance, to replace line 4 9 with "Hello" (sans quotes): 5 6 9 Hello 7 8 Run `list` to see the changes. 9 10 When you are happy with the edits, run `save` to write the block 11 to storage. If you need to revert to the currently saved copy, 12 run `load`. 13 14 15 ---------------------------------------------------------------- 0 Running Code In A Block 1 2 You can run the code in the current block with `run`. You should 3 `save` first. 4 5 If you know the number of a block you wish to load and run, you 6 can enter the block number followed by `use` to do this. 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Block Groups 1 2 Often you will need more than one block for your programs. Retro 3 provides a means of loading multiple blocks via a block group. 4 For this, the first row of a block must contain the group name 5 as a comment, separated by whitespace from any other text. 6 7 To load these, pass a string with the group name comment to 8 `needs`. E.g., to load the standard library, you can do: 9 10 '(std) needs 11 12 All blocks matching the group name will be located and run. They 13 will run in the physical block order, so ensure that the blocks 14 are laid out correctly. 15 ---------------------------------------------------------------- 0 Finding Blocks 1 2 Konilo provides a few tools to help you locate blocks. 3 4 `titles` will display a list of all blocks in the system. If you 5 are using the default system, this will be done in a keyboard 6 driven interface. If using a minimal system, it will display the 7 titles and block numbers. 8 9 You can use `locate` followed by the first part of a block title 10 to see a list of all blocks that match. For instance, if you do 11 `locate (std)`, all blocks starting with "(std)" will be shown. 12 13 14 15 ---------------------------------------------------------------- 0 The Konilo Language 1 2 Konilo is a Forth, but it's not a conventional one. The major 3 differences arise from the use of sigils and quotes. 4 5 All code consists of a series of whitespace separated tokens. 6 Konilo will check the first character of a token to see if it 7 matches a known sigil. If it does, the token (sans sigil) is 8 passed to the sigil handler. 9 10 If no sigil was found, Konilo tries to find the word in the 11 dictionary. If successful, it will either call or compile a 12 call to the word. 13 14 If both of the above fail, an error is diplayed. 15 ---------------------------------------------------------------- 0 Sigils & The Interpreter 1 2 If you are familiar with traditional Forth, you likely notice 3 that no number handling is done. In Konilo these are handled by 4 a sigil. 5 6 The sigil system is a central part of Konilo's design. If you 7 are familiar with ColorForth, it might make sense to consider 8 sigils to be colors, but done via characters instead of needing 9 special editor support. 10 11 Let's take a look at how they work. 12 13 14 15 ---------------------------------------------------------------- 0 Sigils & The Interpreter (cont.) 1 2 Konilo maintains a table of sigil handlers. Any character can be 3 a sigil. If the interpreter matches the first character in a 4 token to a sigil, the sigil is removed and the token is passed 5 on the stack to the sigil handler for processing. 6 7 This is used in lieu of parsing words. For instance, a : sigil 8 starts a new colon definition. A # sigil processes the token as 9 a number. An & sigil is used to get a pointer. The ( sigil 10 begins a comment. 11 12 The next block has a table of the sigils provided by Konilo. 13 14 15 ---------------------------------------------------------------- 0 The Sigils 1 2 +-------+---------------------------------------------------+ 3 | Sigil | Use | 4 +=======+===================================================+ 5 | : | Begin a colon definition | 6 | # | Process a number | 7 | ( | Begin a comment (ends at the first whitespace) | 8 | & | Return a pointer to a named item | 9 | ' | Return a pointer to a string | 10 | $ | Return the ASCII code of the first character | 11 | @ | Fetch a stored value from a variable | 12 | ! | Store into a variable | 13 | \ | Create an alias to a named item | 14 +-------+---------------------------------------------------+ 15 ---------------------------------------------------------------- 0 Numbers 1 2 In Konilo, numbers are provided by prefixing a token with the # 3 sigil. 4 5 For negative values, add a - after the # sigil. 6 7 Numbers are only supported in decimal (base 10), and any comma 8 or periods in a number are ignored. 9 10 Examples: 11 12 #100 #-50.25 #1,215 13 14 15 ---------------------------------------------------------------- 0 Arrays : Overview 1 2 Arrays are sequences of values. They are one of the central data 3 types in Konilo. 4 5 In memory, an array consists of a count, followed by the values. 6 For instance, an array with 67, 102, and 33 can be constructed 7 like this: 8 9 (pointer) (count) (first_value) (second_value) (last_value) 10 here #3 comma #67 comma #102 comma #33 comma 11 12 Words operating on arrays are prefixed by `a:`. 13 14 Important: the size of an array is fixed at time of creation. 15 You can not resize an array. ---------------------------------------------------------------- 0 Arrays : Creation 1 2 You can create an array by passing the count and values on the 3 stack to `a:make`. For the previous example of an array of 67, 4 102, and 33, this would look like: 5 6 #33 #102 #67 #3 a:make 7 8 This is limited by the amount of space available on the data 9 stack. For longer arrays, create them using the manual model on 10 the previous block or write a custom creating word. 11 12 For arrays not needed long term you can use of `a:make/temp` 13 instead. This will place the array in a rotating buffer instead 14 of the main system memory. 15 ---------------------------------------------------------------- 0 Arrays : Accessing Elements 1 2 To read a specific value, pass a pointer to the array and the 3 offset to `a:fetch`. 4 5 &my-array #2 a:fetch 6 7 To store a value into an array, pass the value, a pointer to the 8 array and the offset to `a:store`. 9 10 #76 &my-array #2 a:store 11 12 13 14 15 ---------------------------------------------------------------- 0 Arrays : Iteration 1 2 Konilo provides `a:for-each` to run a function against each 3 value in an array. For instance, to display the numeric value 4 of each item: 5 6 &my-array [ (n-) n:put sp ] a:for-each 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Arrays : Merging 1 2 To combine two arrays into a new array, Konilo provides both 3 `a:append` and `a:prepend`. Each take two pointers to existing 4 arrays and construct a new one. 5 6 &a &b a:append (makes_new_array_from_a,_followed_by_b) 7 &a &b a:prepend (makes_new_array_from_b,_followed_by_a) 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Arrays : Comparisons, Searching 1 2 You can compare two arrays for equality with `a:eq?` or check 3 for inequality with `a:-eq?`. 4 5 &a &b a:eq? 6 7 To see if an array contains a value, use `a:contains?`. 8 9 &a #613 a:contains? 10 11 Finding the indices of values in an array is done with 12 `a:indices`. (And the first occurance can be found with 13 `a:index`). `a:indices` returns a new array of the indexes. 14 15 &a #33 a:indices ---------------------------------------------------------------- 0 Arrays : Subsets 1 2 You can extract subsets of an array. Konilo provides `a:left`, 3 for returning values from the beginning of the array, `a:right` 4 to get values from the end of the array, and `a:middle` for 5 values in the middle of the array. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Overview 1 2 In Konilo, strings are arrays of characters. You should review 3 the section on arrays for information on the basic structure 4 and operations. 5 6 Konilo provides a variety of words for operating on strings. 7 There are in the `s:` namespace. Since strings are a type of 8 array, you can also use any `a:` words on them. 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Creation 1 2 Strings are created using the ' sigil. 3 4 A string is a single token. Konilo will replace any underscores 5 (_) with spaces. 6 7 Some examples: 8 9 'hello_world! 10 '"Well,_that's_odd"_he_replied. 11 12 13 14 15 ---------------------------------------------------------------- 0 String : Lifecycle 1 2 Strings created at the interpreter are stored in a rotating 3 buffer. This is used by both strings and arrays, and is used 4 by words operating on strings. 5 6 Strings inside definitions get compiled into the system memory. 7 8 You can copy a string to the buffer space using `s:temp` or to 9 the system memory by using `s:keep`. If you won't be using the 10 string quickly, it's best to put it in system memory. 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Accessing Characters 1 2 To read a specific character, pass a pointer to the string and t 3 offset to `s:fetch`. 4 5 'Hello! #2 a:fetch 6 7 To store a character into an array, pass the value, a pointer to 8 the string, and the offset to `s:store`. 9 10 $T 'there_is_a_wall #1 s:store 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Iteration 1 2 Konilo provides `s:for-each` to run a function against each 3 character in a string. For instance, to display the ASCII 4 value of each item: 5 6 'Hello_World! [ (n-) n:put sp ] s:for-each 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Merging 1 2 To combine two strings into a new string, Konilo provides both 3 `s:append` and `s:prepend`. Each take two pointers to existing 4 strings and construct a new one. 5 6 'abc 'def s:append (create_string_abcdef) 7 'abc 'def s:prepend (create_string_defabc) 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Comparisons 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Subsets 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Filter & Map 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Strings : Case Conversions, Trimming Whitespace 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Characters : Overview 1 2 Characters are numbers that correspond to graphemes or symbols 3 in a chosen encoding. In Konilo, I basically use ASCII as my 4 encoding. 5 6 Characters include the numbers 0-9, letters a-z & A-Z, as well 7 as all symbols and some forms of whitespace. 8 9 Strings are arrays of characters. 10 11 Words operating on characters are in the `c:` namespace. 12 13 14 15 ---------------------------------------------------------------- 0 Characters : Encoding 1 2 In Konilo, I use ASCII encoding. This is a valid subset of UTF8, 3 but I have not written words for processing multibyte UTF8 char- 4 acters. 5 6 A table of the ASCII characters can be displayed by loading the 7 (tools:ascii-table) blocks and running `ascii-table`. 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Characters : Basic Operations 1 2 The basic Konilo system provides a small number of words for 3 working with characters. 4 5 To push a character to the stack, use the `$` sigil. E.g., `$P` 6 would push the ASCII code for "P". 7 8 You can check the case of a character with `c:uppercase?` or 9 `c:lowercase?`. Changing the case is done with `c:to-upper` and 10 `c:to-lower`. 11 12 Reading characters is done with `c:get`, and display of them 13 uses `c:put`. And finally there is `c:t-s`, which returns a 14 string with a single character. 15 ---------------------------------------------------------------- 0 Characters : Classification 1 2 Konilo's standard library provides a variety of additional words 3 to aid in classifying characters. 4 5 Some of these include: 6 7 c:consonant? c:vowel? c:letter? c:digit? 8 c:whitespace? c:visible? 9 10 There are also inverse forms of these available by adding a `-` 11 after the `c:`. 12 13 14 15 ---------------------------------------------------------------- 0 Characters : Case Conversion 1 2 The base system includes `c:to-upper` and `c:to-lower`. In the 3 standard library one more word, `c:toggle-case` is added. 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Variables: Overview & Creation 1 2 Variables are simple containers for values. Each variable can 3 hold a single value (number, pointer, etc). 4 5 To create a variable, use `var` or `var-n`. When using `var`, 6 the variable will have a default value set to zero. With 7 `var-n`, the initial value is taken from the stack. 8 9 Example: 10 11 'Flag var 12 #600 'Sum var-n 13 14 15 ---------------------------------------------------------------- 0 Variables: Accessing & Updating 1 2 You can obtain a stored value by getting a pointer to a variable 3 and using `fetch`. Or, for a more compact approach, use the `@` 4 sigil. 5 6 For updating a variable, use a pointer and `store` or the `!` 7 sigil. 8 9 Examples: 10 11 &Flag fetch 12 @Flag 13 14 #600 !Flag 15 #-14 &Flag store ---------------------------------------------------------------- 0 Variables: Additional Operations 1 2 Konilo also provides words for incrementing or decrementing 3 a variable. These are `v:inc` and `v:dec`. 4 5 Examples: 6 7 &Flag v:inc 8 &Flag v:dec 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Combinators 1 2 Words that operate on quotations (or more generally, pointers) 3 are called "combinators". In RetroForth there are many of 4 these. 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Combinators: Conditional Execution 1 2 For conditional execution, RetroForth provides three basic 3 combinators: `choose`, `if`, and `-if`. 4 5 `choose` executes one of two quotes based on a flag. E.g., 6 7 #200 #100 eq? [ 'Match! ] [ 'Nope ] choose s:put 8 9 `if` executes a quote if a flag passed is true. E.g., 10 11 #100 #100 eq? [ 'Match! s:put ] if 12 13 `-if` executes a quote if the flag passed is false. E.g., 14 15 #100 #200 eq? [ 'No_Match! s:put ] -if ---------------------------------------------------------------- 0 Combinators: Loops 1 2 RetroForth uses combinators for loops. The basic system provides 3 five: `forever`, `times`, `indexed-times`, `until`, and `while`. 4 5 `forever` runs a quotation repeatedly, with no end. An example: 6 7 [ 'Oops! s:put nl ] forever 8 9 `times` and `indexed-times` take a count and a quote. Both run 10 the quote the specified number of times. If using the indexed 11 version, you can access the loop index via `I`. 12 13 #100 [ I n:put sp ] indexed-times 14 #25 [ 'Loops_are_fun s:put nl ] times 15 ---------------------------------------------------------------- 0 Combinators: Loops 1 2 `until` and `while` take quotes which return a flag. With 3 the `until` loop, it will run the quote repeatedly until this 4 flag is true. For `while`, it does so until the flag is false. 5 6 #100 [ dup n:put sp n:dec dup n:zero? ] until drop 7 8 #0 [ dup n:put sp n:inc dup #100 -eq? ] while drop 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Combinators: Data Flow 1 2 RetroForth also uses combinators for operations on values on 3 the data stack. 4 5 `dip` temporarily removes a value while executing a quote and 6 restores it after the quotation returns. 7 8 #1 #2 [ n:put ] dip n:put 9 10 `sip` is similar to `dip`, but leaves a copy of the value on 11 the stack. 12 13 #1 #2 [ n:put ] sip n:put n:put 14 15 ---------------------------------------------------------------- 0 Combinators: Data Flow (cont.) 1 2 For those with experience in traditional Forth, `dip` and `sip` 3 are similar to `>r ... r>` and `dup >r ... r>`. 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Creating Words 1 2 Functions (called words) begin with a : sigil and end with a 3 `;`. Anything in between the name and the `;` form the word 4 definition. 5 6 An example: 7 8 :hello #100 n:put nl ; 9 10 This creates a new word ("hello") that will push 100 to the 11 stack, display it, then display a new line. 12 13 14 15 ---------------------------------------------------------------- 0 Quotations 1 2 A concept used heavily in Konilo is quotations. These are 3 anonymous blocks of code. In Konilo these are passed to words 4 which handle various actions like conditional execution and 5 loops. 6 7 A quote starts with a `[` and ends with `]`. 8 9 An example: 10 11 #100 #200 -eq? [ 'Not_equal! s:put nl ] if 12 13 Quotes may be nested. 14 15 ---------------------------------------------------------------- 0 Customizing the Startup 1 2 On startup the Konilo image will search for and, if found, run 3 a word named `startup`. By default this is defined to run the 4 `prelude` word. This will load blocks 1 and 2, and if they start 5 with a (, run the code in them. 6 7 The default blocks as I provide them will load various extras 8 like the (std) library and some programs (this is done in block 9 1) and then setup various settings like the terminal height and 10 width. The settings are done in block 2. 11 12 So to customize the startup process you have two basic options: 13 14 - write a new `startup` and save a custom image 15 - craft a custom set of startup blocks ---------------------------------------------------------------- 0 Customizing the Startup : Blocks 1 & 2 1 2 This is the preferable way to do customizations as it keeps the 3 image clean and in a known working state. 4 5 When loading blocks there is an obstacle. Konilo has a single 6 block buffer, so you can't just run another one while there is 7 still code waiting to be run in the current one. Loading another 8 will just overwrite the current buffer, leading to execution of 9 whatever remains after the load. 10 11 Instead, wrap the loads in a quotation, then have a `call` as 12 the last item in the block. The `call` should be at the end of 13 the last line. 14 15 The default blocks are setup this way. ---------------------------------------------------------------- 0 Customizing the Startup : Block 1 : Loading Extensions 1 2 I prefer to use block 1 to load any vocabularies I'd like to 3 keep on hand. For me this will include the (std) standard libra- 4 ry, (termina), and a few tools like (tools/describe), (nonix), 5 and (tools/catalogue). 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Customizing the Startup : Block 2 : Local Configuration 1 2 (termina) programs need to know some information about the local 3 screen size. I set this up in block 2. 4 5 I also like to have block 2 display a greeting block (0) or, for 6 specially purposed machines, run the main code for a program. 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 Customizing the Startup : The `startup` Word 1 2 The other path to customizing the system is to create a custom 3 image with a new `startup` word. 4 5 To do this you will need an ilo with support for `rom:save`. The 6 standard C implementation supports this, but you should check 7 the source for your chosen one to make sure it's implemented. 8 9 To use this path, define a new `startup` and then run `rom:save` 10 11 E.g., for an image that displays "Hello World" and exits: 12 13 :startup (-) 'Hello_World s:put nl bye ; 14 rom:save 15 ---------------------------------------------------------------- 0 Loading Block Sets : Basics 1 2 Konilo provides `needs` to load sets of blocks. For this, start 3 the title line in each block with the same comment (the name of 4 the block set), then pass this to `needs`. 5 6 '(kohure) needs 7 8 This would load all blocks (in numeric order) that have (kohure) 9 as the first word in their title line. 10 11 It's probable that you will have block sets that need words in 12 other sets. While you can load the dependencies manually, it may 13 be better to use a load block. 14 15 ---------------------------------------------------------------- 0 Loading Block Sets : Load Blocks and * 1 2 To load a block and any dependencies, Konilo provides a word, 3 `*`, which parses for the name of a load block. This is just a 4 block with a specific title format that contains a list of words 5 needed to load dependencies. For instance, consider: 6 7 0 (LOAD:game:pig) 8 1 9 2 '(dusk:rng) needs '(dusk:dice) needs '(game:pig) needs 10 11 This can be loaded with: 12 13 * game:pig 14 15 ---------------------------------------------------------------- 0 termina : Overview 1 2 The basic Konilo system only needs a simple serial terminal or 3 line printer + keyboard. But these are uncommon in the modern 4 world. Konilo provides a vocabulary named (termina) that adds a 5 variety of words for dealing with terminals that support a small 6 subset of the standard DEC escape sequences. 7 8 To load, run this (or add it to your startup blocks): 9 10 '(termina) needs 11 12 The default block set has (termina) loaded already. 13 14 15 ---------------------------------------------------------------- 0 termina : Configuration 1 2 To make use of (termina), you will need to provide some basic 3 information about your terminal. I recommend doing this in your 4 startup blocks. 5 6 - set `ti:width` to the number of columns in your terminal 7 - set `ti:height` to the number of rows in your terminal 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 termina : Cursor Positioning 1 2 A number of words are provided to move the cursor around. 3 4 vt:home Move the cursor to the top left corner 5 vt:row,col Move the cursor to the provided row & column 6 vt:up Move the cursor up one row 7 vt:down Move the cursor down one row 8 vt:left Move the cursor left one column 9 vt:right Move the cursor right one column 10 11 12 13 14 15 ---------------------------------------------------------------- 0 termina : Clearing the Screen 1 2 To clear the screen, (termina) provides `vt:clear`. 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 termina : Colors 1 2 If your terminal supports colors you can make use of a variety 3 of color words. 4 5 vt:reset Reset to the default colors 6 fg:black Set the foreground color to black 7 fg:red Set the foreground color to red 8 fg:green Set the foreground color to green 9 fg:yellow Set the foreground color to yellow 10 fg:blue Set the foreground color to blue 11 fg:magenta Set the foreground color to magenta 12 fg:cyan Set the foreground color to cyan 13 fg:white Set the foreground color to white 14 15 You can replace `fg` with `bg` to set the background color. ---------------------------------------------------------------- 0 termina : Textual User Interfaces (TUI) 1 2 Based on the core (termina) vocabulary, I also provide a set of 3 words for creating textual user interfaces. 4 5 The model used here has the user provide three functions. One 6 sets up a 'hints' area, one sets up key handlers, and one is 7 the display. The `ti:application` word calls the hints & key 8 handler setup, then runs a loop, calling the display word and 9 then displaying the 'hints' below it. It will then read a key 10 and process it. 11 12 13 14 15 ---------------------------------------------------------------- 0 termina : TUI : Hints 1 2 The 'hints' area is displayed after the display code is run. It 3 will show key labels 0 - 9, along with text descriptions for 4 each. 5 6 Your code will need to provide a word or quote that sets up any 7 desired hints. An example: 8 9 [ 'Quit #0 ti:add-hint 10 'Search #1 ti:add-hint ] 11 12 13 14 15 ---------------------------------------------------------------- 0 termina : TUI : Key Actions 1 2 Your code will need to provide a word or quote that sets up 3 actions for each key. 4 5 An example: 6 7 [ &ti:done $0 ti:set-action 8 [ bye ] $q ti:set-action ] 9 10 For consistency, I recommend setting '0' as the key to exit the 11 TUI program. 12 13 14 15 ---------------------------------------------------------------- 0 termina : TUI : Display 1 2 You will need to provide a word to display whatever your program 3 needs. (termina) will run `vt:home` to move the cursor before 4 calling your display word, but if you may wish to use `vt:clear` 5 in your word. 6 7 8 (termina) doesn't really provide any limits on the display word, 9 but will position the cursor three lines above the bottom of the 10 terminal before displaying the hints area. 11 12 13 14 15 ---------------------------------------------------------------- 0 termina : TUI : A Minimal Example 1 2 . This implements a tiny block reader using `list#` as the 3 . display. 4 5 :reader:hints (-) 6 'Prev #1 ti:add-hint 'Next #2 ti:add-hint 7 'Quit #0 ti:add-hint ; 8 :reader:keys (-) 9 &prev $1 ti:set-action &next $2 ti:set-action 10 &ti:done $0 ti:set-action ; 11 :reader (-) 12 [ &reader:keys &reader:hints &list# ] ti:application ; 13 14 15 ---------------------------------------------------------------- 0 termina : TUI : Help Screen 1 2 It's quite possible that your program will use keys other than 3 0-9 for actions. The TUI words provide a `ti:help` that displays 4 a block with help text for your program. To use this, bind a 5 quote with the block number and a call to `ti:help` to a key. I 6 like to use '?' for this. 7 8 An example: 9 10 [ #0 ti:help ] $? ti:set-action 11 12 Note that since this displays a block, if your program was using 13 the block buffer you will need to save and restore the contents 14 before calling `ti:help`. 15 ---------------------------------------------------------------- 0 kohure : A Memory Browser & Editor 1 2 Kohure is a small program for exploring and editing memory. It 3 has a (termina) TUI interface and can be loaded by running: 4 5 '(kohure) needs 6 7 To start it, run `kohure`. 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 kohure : The Display 1 2 Kohure will display four columns of information. On the left is 3 the first address for the line being displayed. This is followed 4 by a disassembly of three memory cells, then the contents of the 5 cells as numeric data. And the last column is either a . or the 6 ASCII character each cell corresponds to. 7 8 As with all (termina) programs, a list of hot keys is displayed 9 below the output. 10 11 12 13 14 15 ---------------------------------------------------------------- 0 kohure : Navigating & Locating Items 1 2 You can move to the previous set of cells by using `1` or the 3 next using `2`. 4 5 To jump to the screen containing a particular address, enter `4` 6 followed by the address. E.g., to jump to 20,123 enter `420123`. 7 8 If you want to jump to the start of a word, you can use the leap 9 function. Enter `9` followed by the name of the word. E.g., to 10 go to the start of `s:put`, enter `9s:put`. 11 12 13 14 15 ---------------------------------------------------------------- 0 kohure : Assembly & Editing Memory 1 2 Kohure provides two functions for altering memory. You can store 3 raw values using `8` or store an assembled instruction bundle 4 using `4`. 5 6 To store a value in memory, enter `8`, the address, a space, and 7 then the value to store. For instance, to store `1012` at cell 8 50,000: 9 10 850000 1012 11 12 Assembly is similar. Enter the `3`, the address, a space, and 13 then the instructions. They will be assembled with Pali and the 14 assembled bundle stored at the address. 15 ---------------------------------------------------------------- 0 kohure : An Example of Entering a Simple Function 1 2 As an example, this would create an anonymous function at 50,000 3 which adds 101 and 6, returning the value on the stack. 4 5 350,000 liliadre 6 850,001 101 7 850,002 6 8 9 You can test this by running it. Exit Kohure, then enter: 10 11 #50,000 call n:put nl 12 13 14 15 ---------------------------------------------------------------- 0 catalogue : Exploring the Blocks 1 2 The basic Konilo system includes `titles` to generate a list of 3 all blocks. This works well on small systems (or if you can 4 print the output), but on a larger system much information can 5 scroll away before being read. 6 7 The standard block set includes `catalogue`, which is loaded by 8 default. Catalogue is a (termina) based block browser. It has 9 a variety of parts to help you locate and edit blocks. 10 11 12 13 14 15 ---------------------------------------------------------------- 0 catalogue : Loading and Starting 1 2 To load catalogue, run: 3 4 '(tools:catalogue) needs 5 (This is done by the default startup blocks). 6 7 To start using catalogue, run: 8 9 catalogue 10 11 (You can also run it via `catalog`) 12 13 14 15 ---------------------------------------------------------------- 0 catalogue : The User Interface 1 2 Catalogue will present a three column display. On the left is a 3 series of letters which represent the titles on display. On the 4 right is the block number. And in the middle are the actual ti- 5 tle lines for each block. 6 A series of keyboard shortcuts are displayed at below this. 7 8 The display shows a 'page' of sixteen blocks. 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 catalogue : Displaying & Editing Blocks 1 2 To display a block you can use option `3` followed by the letter 3 corresponding to the desired block. Catalogue will then display 4 it on screen and wait for you to enter `x`. 5 6 To edit a block, just enter the letter corresponding to the line 7 Catalogue will start a block editor on the block. 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 tuhi : A More Visual Block Editor 1 2 Konilo includes a small, line oriented block editor as part of 3 the base system. This is very useful (and is what I use for most 4 of my writing), but there is room for more visual editors. For 5 this, Konilo include an editor named Tuhi. 6 7 A default system will have this loaded, but if you don't load it 8 in yours, run this to get it: 9 10 '(tuhi) needs 11 12 Note that you may need to load (termina) first. 13 14 15 ---------------------------------------------------------------- 0 tuhi : Concepts 1 2 Like the basic editor, Tuhi is a line oriented editor. 3 4 Edits operate on entire lines, there is no provided facility for 5 replacing only a small part of the line. While this can be a 6 minor annoyance, it's quite workable in practice. 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 tuhi : Screen Layout 1 2 Tuhi will display the current block contents above a set of 3 keyboard shortcuts for various actions. 4 5 On the left of each line is a single letter. This is the line 6 identifier. 7 8 Tuhi provides one notable feature lacking in the basic editor: 9 optional support for syntax highlighting. To use this, ensure 10 the `tuhi:cfg/syntax` variable is set to a non-zero value. (This 11 is done by default). 12 13 When active, if the block starts with a '(', Tuhi will attempt 14 to display it as source code, with different token types being 15 colored. ---------------------------------------------------------------- 0 tuhi : Editing 1 2 To replace a line, enter the line identifer, then the new text 3 for the line. For example, to replace line 'd' with 'hello', 4 type `dhello` and press enter. 5 6 A number of additional editing commands are available. A single 7 line buffer is provided for cut/copy/paste operations. To use 8 this, you could enter `Xh` to cut line 'h' into the buffer and 9 `Vc` to paste it in line 'c'. Use `C` instead of `X` to copy 10 rather than cut the line. 11 12 Indenting a line can be done with `]` or unindenting with `[`. 13 14 To erase the entire block, enter `N`. 15 ---------------------------------------------------------------- 0 tuhi : Saving & Loading 1 2 Tuhi binds `6` to save the block and `7` to reload it from the 3 block storage. 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 tuhi : Navigating 1 2 Tuhi provides a few functions for moving through the blocks. 3 4 The first of these are moving to the previous (`1`) and next 5 (`2`) blocks. 6 7 You can jump to a specific block by entering `4` followed by 8 the block number. E.g., to jump to block '1231', do: 9 10 41231 11 12 Tuhi also provides a "leap" function via `9`. To use this, 13 enter `9` followed by the start of the block title. 14 15 9(tuhi) ---------------------------------------------------------------- 0 tuhi : Additional Help 1 2 Tuhi has a help screen bound to `?`. Enter this to see a summary 3 of the various functions it provides. 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 tuhi : Using the Syntax View Outside Tuhi 1 2 If you are using the basic editor, it may be useful to look at 3 a block with syntax highlighting. Instead of bringing up Tuhi, 4 you can use `list:syntax` to display the block using Tuhi's 5 block display code. 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ---------------------------------------------------------------- 0 ====================== END OF BLOCK AREA ======================= 1 2 3 4 5 6 7 .-o=o-. You've reached the end of this 8 , /=o=o=o=\ .--. set of blocks. 9 _|\|=o=O=o=O=| \ 10 __.' a`\=o=o=o=(`\ / 11 '. a 4/`|.-""'`\ \ ;'`) .---. 12 \ .' / .--' |_.' / .-._) 13 `) _.' / /`-.__.' / 14 jgs `'-.____; /'-.___.-' 15 `"""`