diff --git a/Makefile b/Makefile index 831d749..fc1779a 100644 --- a/Makefile +++ b/Makefile @@ -78,9 +78,9 @@ DEVICES += interface/final.retro GLOSSARY ?= ./bin/retro tools/glossary.retro ASSEMBLE ?= ./bin/retro-muri -EXTEND ?= ./bin/retro-extend -EXPORT ?= ./bin/retro-embedimage -RETRO ?= ./bin/retro +EXTEND ?= ./bin/retro-extend +EXPORT ?= ./bin/retro-embedimage +RETRO ?= ./bin/retro # ------------------------------------------------------------- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 7c57c86..6d03745 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -9,6 +9,7 @@ ================================================================ * nga-c: split device code into separate source files +* removed words deprecated in 2022.8 ================================================================ diff --git a/doc/Glossary-Concise.txt b/doc/Glossary-Concise.txt index 27ab524..8c7795d 100644 --- a/doc/Glossary-Concise.txt +++ b/doc/Glossary-Concise.txt @@ -193,9 +193,6 @@ Access the parent loop index for the current loop. (For loops made using `indexe K D: -n A: - F: - Access the grandparent loop index for the current loop. (For loops made using `indexed-times`) -NoEcho D: -a A: - F: - -Deprecated. Variable. If TRUE, allow display of the startup banner when running listen. - RewriteUnderscores D: -a A: - F: - Variable. When set to `TRUE`, Retro will replace underscores in strings with spaces. When `FALSE`, Retro does not. @@ -238,9 +235,6 @@ Return `TRUE` if a1 begins with a2 or `FALSE` otherwise. a:chop D: a-a A: - F: - Return a new array containing all but the last value in the source array. -a:contains-string? D: sa-f A: - F: - -Deprecated. Use `a:contains/string?` instead. Return `TRUE` if the string value is in the array or `FALSE` otherwise. - a:contains/string? D: sa-f A: - F: - Return `TRUE` if the string value is in the array or `FALSE` otherwise. @@ -283,12 +277,6 @@ Calculate a hash value for a given array. a:index D: an-n A: - F: - Return the location of the first instance of the specified value in the array. -a:index-of D: an-n A: - F: - -Deprecated. Use `a:index` instead. Return the location of the first instance of the specified value in the array. - -a:index-of-string D: as-n A: - F: - -Deprecated. Use `a:index/string` instead. Return the location of the first instance of the specified string in the array. - a:index/string D: as-n A: - F: - Return the location of the first instance of the specified string in the array. @@ -1405,12 +1393,6 @@ Remove the last character from a string. Returns a new string. s:const D: ss- A: - F: - Create a constant named s2, returning a pointer to s1. This will use `s:keep` to preserve the original string. -s:contains-char? D: sc-f A: - F: - -Deprecated. Use `s:contains/char?` instead. Return `TRUE` if the character is present in the string or `FALSE` otherwise. - -s:contains-string? D: ss-f A: - F: - -Deprecated. Use `s:contains/string?` instead. Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. - s:contains/char? D: sc-f A: - F: - Return `TRUE` if the character is present in the string or `FALSE` otherwise. @@ -1468,12 +1450,6 @@ Read input from standard in (via `c:get`) until a whitespace is encountered. Ret s:hash D: s-n A: - F: - Calculate a hash value for a string. This uses the djb2 algorithm. -s:index-of D: sc-n A: - F: - -Deprecated. Use `s:index/char` instead. Return the location of the first instance of the specified character in the string. - -s:index-of-string D: ss-n A: - F: - -Derpecated. Use `s:index/string` instead. Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. - s:index/char D: sc-n A: - F: - Return the location of the first instance of the specified character in the string. @@ -1513,12 +1489,6 @@ Return a new string containing the specified number of characters from the right s:skip D: - A: - F: - Internal helper function used to skip over a string in a definition. -s:split D: sc-ss A: - F: - -Deprecated. Use `s:split/char` instead. Split a string on the first occurrence of the specified character. - -s:split-on-string D: ss-ss A: - F: - -Deprecated. Use `s:split/string` instead. Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string. - s:split/char D: sc-ss A: - F: - Split a string on the first occurrence of the specified character. diff --git a/doc/Glossary-Names-and-Stack.txt b/doc/Glossary-Names-and-Stack.txt index d189742..81fd202 100644 --- a/doc/Glossary-Names-and-Stack.txt +++ b/doc/Glossary-Names-and-Stack.txt @@ -63,7 +63,6 @@ Heap D: -a A: - F: - I D: -n A: - F: - J D: -n A: - F: - K D: -n A: - F: - -NoEcho D: -a A: - F: - RewriteUnderscores D: -a A: - F: - STRINGS D: -a A: - F: - ScopeList D: -a A: - F: - @@ -78,7 +77,6 @@ a:-eq? D: aa-f A: - F: - a:append D: aa-a A: - F: - a:begins-with? D: aa-f A: - F: - a:chop D: a-a A: - F: - -a:contains-string? D: sa-f A: - F: - a:contains/string? D: sa-f A: - F: - a:contains? D: na-f A: - F: - a:copy D: aa- A: - F: - @@ -93,8 +91,6 @@ a:for-each D: aq- A: - F: - a:from-string D: s-a A: - F: - a:hash D: a-n A: - F: - a:index D: an-n A: - F: - -a:index-of D: an-n A: - F: - -a:index-of-string D: as-n A: - F: - a:index/string D: as-n A: - F: - a:indices D: av-a A: - F: - a:indices/string D: as-a A: - F: - @@ -467,8 +463,6 @@ s:begins-with? D: ss-f A: - F: - s:case D: sSq- || sSq-s A: - F: - s:chop D: s-s A: - F: - s:const D: ss- A: - F: - -s:contains-char? D: sc-f A: - F: - -s:contains-string? D: ss-f A: - F: - s:contains/char? D: sc-f A: - F: - s:contains/string? D: ss-f A: - F: - s:copy D: sa- A: - F: - @@ -488,8 +482,6 @@ s:format D: ...s-s A: - F: - s:get D: -s A: - F: - s:get-word D: -s A: - F: - s:hash D: s-n A: - F: - -s:index-of D: sc-n A: - F: - -s:index-of-string D: ss-n A: - F: - s:index/char D: sc-n A: - F: - s:index/string D: ss-n A: - F: - s:keep D: s-s A: - F: - @@ -503,8 +495,6 @@ s:replace-all D: sss-s A: - F: - s:reverse D: s-s A: - F: - s:right D: sn-s A: - F: - s:skip D: - A: - F: - -s:split D: sc-ss A: - F: - -s:split-on-string D: ss-ss A: - F: - s:split/char D: sc-ss A: - F: - s:split/string D: ss-ss A: - F: - s:store D: csn- A: - F: - diff --git a/doc/Glossary.html b/doc/Glossary.html index c762094..ad9162e 100644 --- a/doc/Glossary.html +++ b/doc/Glossary.html @@ -480,13 +480,6 @@

Access the grandparent loop index for the current loop. (For loops made using `indexed-times`)

Class: class:word
Namespace: global
Interface Layer: all

-

NoEcho

-

Data: -a
-Addr: -
-Float: -

-
-

Deprecated. Variable. If TRUE, allow display of the startup banner when running listen.

-
Class: class:word
Namespace: global
Interface Layer: rre

RewriteUnderscores

Data: -a
Addr: -
@@ -585,13 +578,6 @@

Return a new array containing all but the last value in the source array.

Class: class:word
Namespace: a
Interface Layer: all

-

a:contains-string?

-

Data: sa-f
-Addr: -
-Float: -

-
-

Deprecated. Use `a:contains/string?` instead. Return `TRUE` if the string value is in the array or `FALSE` otherwise.

-
Class: class:word
Namespace: a
Interface Layer: all

a:contains/string?

Data: sa-f
Addr: -
@@ -694,20 +680,6 @@

Return the location of the first instance of the specified value in the array.

Class: class:word
Namespace: a
Interface Layer: all

-

a:index-of

-

Data: an-n
-Addr: -
-Float: -

-
-

Deprecated. Use `a:index` instead. Return the location of the first instance of the specified value in the array.

-
Class: class:word
Namespace: a
Interface Layer: all

-

a:index-of-string

-

Data: as-n
-Addr: -
-Float: -

-
-

Deprecated. Use `a:index/string` instead. Return the location of the first instance of the specified string in the array.

-
Class: class:word
Namespace: a
Interface Layer: all

a:index/string

Data: as-n
Addr: -
@@ -3521,20 +3493,6 @@

Create a constant named s2, returning a pointer to s1. This will use `s:keep` to preserve the original string.

Class: class:word
Namespace: s
Interface Layer: all

-

s:contains-char?

-

Data: sc-f
-Addr: -
-Float: -

-
-

Deprecated. Use `s:contains/char?` instead. Return `TRUE` if the character is present in the string or `FALSE` otherwise.

-
Class: class:word
Namespace: s
Interface Layer: all

-

s:contains-string?

-

Data: ss-f
-Addr: -
-Float: -

-
-

Deprecated. Use `s:contains/string?` instead. Return `TRUE` if the second string is present in the first string or `FALSE` otherwise.

-
Class: class:word
Namespace: s
Interface Layer: all

s:contains/char?

Data: sc-f
Addr: -
@@ -3677,20 +3635,6 @@

Calculate a hash value for a string. This uses the djb2 algorithm.

Class: class:word
Namespace: s
Interface Layer: all

-

s:index-of

-

Data: sc-n
-Addr: -
-Float: -

-
-

Deprecated. Use `s:index/char` instead. Return the location of the first instance of the specified character in the string.

-
Class: class:word
Namespace: s
Interface Layer: all

-

s:index-of-string

-

Data: ss-n
-Addr: -
-Float: -

-
-

Derpecated. Use `s:index/string` instead. Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found.

-
Class: class:word
Namespace: s
Interface Layer: all

s:index/char

Data: sc-n
Addr: -
@@ -3782,24 +3726,6 @@

Internal helper function used to skip over a string in a definition.

Class: class:word
Namespace: s
Interface Layer: all

-

s:split

-

Data: sc-ss
-Addr: -
-Float: -

-
-

Deprecated. Use `s:split/char` instead. Split a string on the first occurrence of the specified character.

-
Class: class:word
Namespace: s
Interface Layer: all

-

s:split-on-string

-

Data: ss-ss
-Addr: -
-Float: -

-
-

Deprecated. Use `s:split/string` instead. Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string.

-
Class: class:word
Namespace: s
Interface Layer: all

Example:
-
-

'Hello_Brave_World! 'Brave s:split-on-string s:put nl s:put nl -

-

s:split/char

Data: sc-ss
Addr: -
diff --git a/doc/Glossary.txt b/doc/Glossary.txt index 39a3005..711afa4 100644 --- a/doc/Glossary.txt +++ b/doc/Glossary.txt @@ -746,17 +746,6 @@ Access the grandparent loop index for the current loop. (For loops made using `i Class: class:word | Namespace: global | Interface Layer: all ------------------------------------------------------------------------ -NoEcho - - Data: -a - Addr: - - Float: - - -Deprecated. Variable. If TRUE, allow display of the startup banner when running listen. - -Class: class:word | Namespace: global | Interface Layer: rre ------------------------------------------------------------------------- - RewriteUnderscores Data: -a @@ -911,17 +900,6 @@ Return a new array containing all but the last value in the source array. Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ -a:contains-string? - - Data: sa-f - Addr: - - Float: - - -Deprecated. Use `a:contains/string?` instead. Return `TRUE` if the string value is in the array or `FALSE` otherwise. - -Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------- - a:contains/string? Data: sa-f @@ -1081,28 +1059,6 @@ Return the location of the first instance of the specified value in the array. Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ -a:index-of - - Data: an-n - Addr: - - Float: - - -Deprecated. Use `a:index` instead. Return the location of the first instance of the specified value in the array. - -Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------- - -a:index-of-string - - Data: as-n - Addr: - - Float: - - -Deprecated. Use `a:index/string` instead. Return the location of the first instance of the specified string in the array. - -Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------- - a:index/string Data: as-n @@ -5446,28 +5402,6 @@ Create a constant named s2, returning a pointer to s1. This will use `s:keep` to Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ -s:contains-char? - - Data: sc-f - Addr: - - Float: - - -Deprecated. Use `s:contains/char?` instead. Return `TRUE` if the character is present in the string or `FALSE` otherwise. - -Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------- - -s:contains-string? - - Data: ss-f - Addr: - - Float: - - -Deprecated. Use `s:contains/string?` instead. Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. - -Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------- - s:contains/char? Data: sc-f @@ -5688,28 +5622,6 @@ Calculate a hash value for a string. This uses the djb2 algorithm. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ -s:index-of - - Data: sc-n - Addr: - - Float: - - -Deprecated. Use `s:index/char` instead. Return the location of the first instance of the specified character in the string. - -Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------- - -s:index-of-string - - Data: ss-n - Addr: - - Float: - - -Derpecated. Use `s:index/string` instead. Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. - -Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------- - s:index/char Data: sc-n @@ -5853,33 +5765,6 @@ Internal helper function used to skip over a string in a definition. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ -s:split - - Data: sc-ss - Addr: - - Float: - - -Deprecated. Use `s:split/char` instead. Split a string on the first occurrence of the specified character. - -Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------- - -s:split-on-string - - Data: ss-ss - Addr: - - Float: - - -Deprecated. Use `s:split/string` instead. Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string. - -Class: class:word | Namespace: s | Interface Layer: all - -Example #1: - - 'Hello_Brave_World! 'Brave s:split-on-string s:put nl s:put nl - ------------------------------------------------------------------------- - s:split/char Data: sc-ss diff --git a/doc/words.tsv b/doc/words.tsv index 57a5fae..928bf8f 100644 --- a/doc/words.tsv +++ b/doc/words.tsv @@ -63,7 +63,6 @@ Heap -a - - Variable. Holds the address of the next available cell. class:data I -n - - Access the loop index for the current loop. (For loops made using `indexed-times`) class:word {n/a} {n/a} global all J -n - - Access the parent loop index for the current loop. (For loops made using `indexed-times`) class:word {n/a} {n/a} global all K -n - - Access the grandparent loop index for the current loop. (For loops made using `indexed-times`) class:word {n/a} {n/a} global all -NoEcho -a - - Deprecated. Variable. If TRUE, allow display of the startup banner when running listen. class:word {n/a} {n/a} global rre RewriteUnderscores -a - - Variable. When set to `TRUE`, Retro will replace underscores in strings with spaces. When `FALSE`, Retro does not. class:data {n/a} {n/a} global all STRINGS -a - - Return the address of the start of the temporary string pool. This can be altered by changing the values of `TempStrings` and `TempStringMax`. class:word {n/a} {n/a} global all ScopeList -a - - Variable. This holds some information used by `{{` and `}}`. class:data {n/a} {n/a} global all @@ -78,7 +77,6 @@ a:-eq? aa-f - - Compare all values in the array. Return `FALSE` if all values ar a:append aa-a - - Return a new array consisting of the values in a1 followed by the values in a2. class:word {n/a} {n/a} a all a:begins-with? aa-f - - Return `TRUE` if a1 begins with a2 or `FALSE` otherwise. class:word {n/a} {n/a} a all a:chop a-a - - Return a new array containing all but the last value in the source array. class:word {n/a} {n/a} a all -a:contains-string? sa-f - - Deprecated. Use `a:contains/string?` instead. Return `TRUE` if the string value is in the array or `FALSE` otherwise. class:word {n/a} {n/a} a all a:contains/string? sa-f - - Return `TRUE` if the string value is in the array or `FALSE` otherwise. class:word {n/a} {n/a} a all a:contains? na-f - - Return `TRUE` if the value is in the array or `FALSE` otherwise. class:word {n/a} {n/a} a all a:copy aa- - - Copy an array (a1) to a destination (a2). class:word {n/a} {n/a} a all @@ -93,8 +91,6 @@ a:for-each aq- - - Execute the quote once for each item in the array. class:wo a:from-string s-a - - Create a new array with the characters in the source string. class:word {n/a} {n/a} a all a:hash a-n - - Calculate a hash value for a given array. class:word {n/a} {n/a} a all a:index an-n - - Return the location of the first instance of the specified value in the array. class:word {n/a} {n/a} a all -a:index-of an-n - - Deprecated. Use `a:index` instead. Return the location of the first instance of the specified value in the array. class:word {n/a} {n/a} a all -a:index-of-string as-n - - Deprecated. Use `a:index/string` instead. Return the location of the first instance of the specified string in the array. class:word {n/a} {n/a} a all a:index/string as-n - - Return the location of the first instance of the specified string in the array. class:word {n/a} {n/a} a all a:indices av-a - - Return a new array with the indices the specified value was found at in the original array. class:word {n/a} {n/a} a all a:indices/string as-a - - Return a new array with the indices of the specified string in the original array. class:word {n/a} {n/a} a all @@ -467,8 +463,6 @@ s:begins-with? ss-f - - Return `TRUE` if s1 begins with s2 or `FALSE` otherwise. s:case sSq- || sSq-s - - If the `s` matches `S`, discard `s` and run the quote before exiting the caller. If they do not match, discard the quote and leave `s` on the stack. class:word {n/a} {n/a} s all s:chop s-s - - Remove the last character from a string. Returns a new string. class:word {n/a} {n/a} s all s:const ss- - - Create a constant named s2, returning a pointer to s1. This will use `s:keep` to preserve the original string. class:word {n/a} {n/a} s all -s:contains-char? sc-f - - Deprecated. Use `s:contains/char?` instead. Return `TRUE` if the character is present in the string or `FALSE` otherwise. class:word {n/a} {n/a} s all -s:contains-string? ss-f - - Deprecated. Use `s:contains/string?` instead. Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. class:word {n/a} {n/a} s all s:contains/char? sc-f - - Return `TRUE` if the character is present in the string or `FALSE` otherwise. class:word {n/a} {n/a} s all s:contains/string? ss-f - - Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. class:word {n/a} {n/a} s all s:copy sa- - - Copy a string (s) to a destination (a). This will include the terminator character when copying. class:word {n/a} {n/a} s all @@ -488,8 +482,6 @@ s:format ...s-s - - Construct a new string using the template passed and items f s:get -s - - Read input from standard in (via `c:get`) until a CR or LF is encountered. Returns a string. class:word {n/a} {n/a} all rre s:get-word -s - - Read input from standard in (via `c:get`) until a whitespace is encountered. Returns a string. class:word {n/a} {n/a} all rre s:hash s-n - - Calculate a hash value for a string. This uses the djb2 algorithm. class:word {n/a} {n/a} s all -s:index-of sc-n - - Deprecated. Use `s:index/char` instead. Return the location of the first instance of the specified character in the string. class:word {n/a} {n/a} s all -s:index-of-string ss-n - - Derpecated. Use `s:index/string` instead. Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. class:word {n/a} {n/a} s all s:index/char sc-n - - Return the location of the first instance of the specified character in the string. class:word {n/a} {n/a} s all s:index/string ss-n - - Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. class:word {n/a} {n/a} s all s:keep s-s - - Store a string into the heap and return a pointer to the start of it. class:word {n/a} {n/a} s all @@ -503,8 +495,6 @@ s:replace-all sss-s - - Replace all instances of s2 in s1 with s3. class:word s:reverse s-s - - Reverse the order of ASCII characters in a string. class:word {n/a} {n/a} s all s:right sn-s - - Return a new string containing the specified number of characters from the right side of the string. class:word {n/a} {n/a} s all s:skip - - - Internal helper function used to skip over a string in a definition. class:word {n/a} {n/a} s all -s:split sc-ss - - Deprecated. Use `s:split/char` instead. Split a string on the first occurrence of the specified character. class:word {n/a} {n/a} s all -s:split-on-string ss-ss - - Deprecated. Use `s:split/string` instead. Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string. class:word 'Hello_Brave_World! 'Brave s:split-on-string s:put nl s:put nl {n/a} s all s:split/char sc-ss - - Split a string on the first occurrence of the specified character. class:word {n/a} {n/a} s all s:split/string ss-ss - - Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string. class:word 'Hello_Brave_World! 'Brave s:split-on-string s:put nl s:put nl {n/a} s all s:store csn- - - Store a character value into the string at the specified index. class:word $z 'abcdef #1 s:store {n/a} s all diff --git a/example/irc-bot.retro b/example/irc-bot.retro index ba0594f..dff1131 100644 --- a/example/irc-bot.retro +++ b/example/irc-bot.retro @@ -75,7 +75,7 @@ single socket. :connect (s-) socket:create !Sock - $: s:split swap n:inc socket:configure + $: s:split/char swap n:inc socket:configure @Sock socket:connect drop ; :s:transmit @Sock socket:send drop-pair ; @@ -146,7 +146,7 @@ I pass it to `s:evaluate`, capturing and relaying the output. here 'PRIVMSG s:contains/string? ; :channel - here 'PRIVMSG s:split-on-string drop #8 + $: s:split nip s:chop &Channel s:copy ; + here 'PRIVMSG s:split/string drop #8 + $: s:split/char nip s:chop &Channel s:copy ; :transmit 'PRIVMSG_ s:transmit @@ -190,7 +190,7 @@ I pass it to `s:evaluate`, capturing and relaying the output. run-code document drop dump-stack nl ; :process - here 'PRIVMSG s:split-on-string drop $: s:split drop n:inc dup s:put nl + here 'PRIVMSG s:split/string drop $: s:split/char drop n:inc dup s:put nl command ; ~~~ diff --git a/example/tuporo.retro b/example/tuporo.retro index 051744c..1074b62 100644 --- a/example/tuporo.retro +++ b/example/tuporo.retro @@ -170,7 +170,7 @@ server as there is no means provided of restricting writes using it. ~~~ :set-block (-) &Selector #3 + - $/ s:split s:to-number swap n:inc s:chop swap block:set ; + $/ s:split/char s:to-number swap n:inc s:chop swap block:set ; ~~~ And `handle-block` uses `display-block` to return a formatted text block diff --git a/interface/deprecated.retro b/interface/deprecated.retro index 9396ca6..528780b 100644 --- a/interface/deprecated.retro +++ b/interface/deprecated.retro @@ -1,16 +1,3 @@ -These are planned to be removed in 2021.10. Please update -your sources to use the newer names. - -~~~ -:s:split (sc-ss) s:split/char ; -:s:split-on-string (ss-ss) s:split/string ; -:s:contains-char? s:contains/char? ; -:s:contains-string? s:contains/string? ; -:a:contains-string? a:contains/string? ; - -:a:index-of a:index ; -:a:index-of-string a:index/string ; -:s:index-of s:index/char ; -:s:index-of-string s:index/string ; ~~~ +~~~ diff --git a/vm/nga-c/image.c b/vm/nga-c/image.c index 7d676d6..475f9f1 100644 --- a/vm/nga-c/image.c +++ b/vm/nga-c/image.c @@ -10,8 +10,8 @@ #define CELL_MAX LLONG_MAX - 1 #endif #endif -CELL ngaImageCells = 20101; -CELL ngaImage[] = { 1793,19598,20056,20100,202309,417,389,1249,1535,0,11254,0,10,1,10,2,10,3,10, +CELL ngaImageCells = 19890; +CELL ngaImage[] = { 1793,19387,19845,19889,202309,417,389,1249,1535,0,11254,0,10,1,10,2,10,3,10, 4,10,5,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,10, 16,10,17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,68223234, 1,2575,85000450,1,656912,163,180,268505089,65,64,285281281,0,65,2063,10,101384453,0,9,10,68485378, @@ -20,8 +20,8 @@ CELL ngaImage[] = { 1793,19598,20056,20100,202309,417,389,1249,1535,0,11254,0,10 1,251790353,101777669,1,17565186,109,524545,113,66,167838467,-1,134287105,3,61,659457,3,459023,130,2049,58, 25,2049,130,1793,137,2049,137,117506307,0,130,0,524545,28,135,168820993,0,149,1642241,149,134283523, 13,135,1793,130,524545,2049,130,1793,130,16846593,149,163,180,1793,66,16846593,149,135,180,1793, - 66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19853,17108737,3,2,524559,130, - 2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,18834,1249,167841793, + 66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19642,17108737,3,2,524559,130, + 2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,18623,1249,167841793, 216,11,17826049,0,216,2,15,25,524546,190,134287105,217,118,2305,218,459023,226,0,0,134287361, 217,221,659201,216,10,659969,7,2049,58,25,17694978,58,244,9,84152833,48,319750404,243,117507601,246, 184618754,45,25,16974851,-1,168886532,1,134284289,1,259,134284289,0,246,660227,32,0,0,115,105,103, @@ -170,7 +170,7 @@ CELL ngaImage[] = { 1793,19598,20056,20100,202309,417,389,1249,1535,0,11254,0,10 110,58,105,110,99,0,659713,1,10,3114,3139,168,12041,210720197721,110,58,100,101,99,0, 659969,1,10,3128,3158,168,12041,8246617666422322998,110,58,98,101,116,119,101,101,110,63,0,67503109, 1793,3166,67503109,67503109,2049,3106,10,1,3161,2049,2241,11,10,3142,3187,168,12041,249861296566813883,83,99, - 111,112,101,76,105,115,116,0,19958,20012,10,3172,3198,168,12041,5864091,123,123,0,2049, + 111,112,101,76,105,115,116,0,19747,19801,10,3172,3198,168,12041,5864091,123,123,0,2049, 1576,2,1,3187,2049,61,16,10,3190,3225,168,12041,-6305314778776785742,45,45,45,114,101,118,101, 97,108,45,45,45,0,2049,1576,1,3187,2049,3125,16,10,3207,3241,168,12041,5864159,125, 125,0,1,3187,2049,58,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281, @@ -918,102 +918,91 @@ CELL ngaImage[] = { 1793,19598,20056,20100,202309,417,389,1249,1535,0,11254,0,10 10,18059,18097,168,18127,-4578818303223200395,98,108,111,99,107,58,119,114,105,116,101,0,1,1, 2049,18052,10,18080,18122,168,18127,-4036225629868593021,98,108,111,99,107,58,115,101,116,45,102,105, 108,101,0,1,2,2049,18052,10,105,110,116,101,114,102,97,99,101,47,98,108, - 111,99,107,115,46,114,101,116,114,111,0,18127,11414,18102,18165,168,0,229480770855518,115,58, - 115,112,108,105,116,0,2049,7184,10,18152,18191,168,0,6119006473764520940,115,58,115,112,108,105, - 116,45,111,110,45,115,116,114,105,110,103,0,2049,7218,10,18168,18216,168,0,-2157201768052001381, - 115,58,99,111,110,116,97,105,110,115,45,99,104,97,114,63,0,2049,4857,10, - 18194,18243,168,0,-6456228026363444588,115,58,99,111,110,116,97,105,110,115,45,115,116,114,105, - 110,103,63,0,2049,5286,10,18219,18270,168,0,-3160266536000611262,97,58,99,111,110,116,97,105, - 110,115,45,115,116,114,105,110,103,63,0,2049,9099,10,18246,18289,168,0,8246014626430519194,97, - 58,105,110,100,101,120,45,111,102,0,2049,9741,10,18273,18315,168,0,-5025353456659034242,97,58, - 105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,9775,10,18292, - 18334,168,0,8246850033149754348,115,58,105,110,100,101,120,45,111,102,0,2049,4779,10,18318,18360, - 168,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103, - 0,2049,5069,10,18337,18379,168,0,8246228896775126019,100,111,117,98,108,101,58,118,97,114,0, - 2049,2075,4,2049,130,2049,130,10,18363,18405,168,0,-3421095308458227740,100,111,117,98,108,101,58, - 102,101,116,99,104,0,2049,58,4,15,10,18387,18428,168,0,-3421095308442276665,100,111,117,98, - 108,101,58,115,116,111,114,101,0,1,19,2049,2229,2049,61,16,10,18410,18454,168, - 0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,116,0,2049,18379,1,18405,2049, - 8460,10,18436,18478,168,0,-4575607512064199915,100,111,117,98,108,101,58,115,119,97,112,0,67503109, - 5,67503109,6,10,18461,18499,168,0,8246228896775106679,100,111,117,98,108,101,58,100,105,112,0, - 67503109,67503109,5,5,8,6,6,10,18483,18523,168,0,8246228896775123014,100,111,117,98,108,101,58, - 115,105,112,0,1,2217,2049,2229,2049,18499,10,18507,18546,168,0,8246632143337714634,109,101,109,58, - 105,110,118,111,107,101,0,1,15,2049,10812,2049,10793,10,18530,0,156,0,210667451248,65, - 76,76,79,67,0,18553,1,156,0,6384048135,70,82,69,69,0,18564,2,156,0,210689088690, - 83,84,79,82,69,0,18574,3,156,0,210673137615,70,69,84,67,72,0,18585,4,156, - 0,6952683137271,82,69,83,73,90,69,0,18507,18623,168,0,249897943727936361,109,101,109,58,97,108, - 108,111,99,0,1,0,2049,18546,10,18608,18643,168,0,249897943749573803,109,101,109,58,115,116, - 111,114,101,0,1,2,2049,18546,10,18628,18663,168,0,249897943733622728,109,101,109,58,102,101, - 116,99,104,0,1,3,2049,18546,10,18648,18682,168,0,7572664961638592,109,101,109,58,102,114, - 101,101,0,1,1,2049,18546,10,18668,18703,168,0,8246632143679146032,109,101,109,58,114,101,115, - 105,122,101,0,1,4,2049,18546,10,18687,18723,168,0,249897943730056489,109,101,109,58,99,101, - 108,108,43,0,1,8,19,17,10,18708,18750,168,0,1050530996183190288,109,101,109,58,102,101, - 116,99,104,45,100,111,117,98,108,101,0,2,1,1,2049,18723,15,5,2049,18663, - 6,10,18728,18783,168,0,1730340976492540563,109,101,109,58,115,116,111,114,101,45,100,111,117, - 98,108,101,0,5,5,2049,2217,1,1,2049,18723,6,2049,18643,6,2049,18643,10,1793, - 18819,1,192,1,2,17,8,2049,1576,2049,190,3841,11239,8,2049,1576,2049,188,16,10, - 1,18800,18761,18830,168,19617,193470948,84,73,66,0,1,7,15,10,18821,18850,168,19617,8246457295145463473, - 105,109,97,103,101,58,115,97,118,101,0,1,1000,2049,10812,2049,10793,10,18834,18868, - 168,0,210711039690,101,100,105,116,63,0,2,1793,18875,1,8,11,10,1,18871,1793,18883, - 1,127,11,10,1,18879,2049,2255,22,10,18857,18901,168,0,6953539406400,103,97,116,104,101, - 114,0,2049,18868,1,17,1,4134,2049,66,10,18889,18921,168,0,210709415765,99,121,99,108, - 101,0,2049,11123,2049,2217,4,8,2049,2644,25,3,2049,18901,1,18921,7,10,18834,18954, - 168,19617,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,18966,2049,4451,2049, - 4234,2049,18921,771,2049,4096,10,1,18956,2049,4260,10,18937,18982,168,19617,210726130610,115,58,103, - 101,116,0,1793,19004,1793,18990,1,13,11,10,1,18986,1793,18998,1,10,11,10,1, - 18994,2049,2255,22,10,1,18984,2049,18954,10,18971,19020,168,19617,210708950412,99,108,101,97,114, - 0,2049,4472,92,94,91,50,74,92,94,91,48,59,48,72,0,1,19022,2049,8246, - 2049,10918,10,19009,19054,156,19617,6952575930081,78,111,69,99,104,111,0,0,19042,19064,156,0, - 193454829,69,79,84,0,0,19055,19079,156,0,7571133383038306,73,103,110,111,114,105,110,103,0, - 0,19065,19095,168,0,249892406716047873,105,103,110,111,114,105,110,103,63,0,3841,19079,10,19080, - 19111,168,0,229486327000139,118,101,114,115,105,111,110,0,3841,4,1,100,20,10,19098,19128, - 168,0,210710254026,100,111,110,101,63,0,2,4097,19064,1793,19137,1,13,11,10,1,19133, - 1793,19145,1,10,11,10,1,19141,1793,19153,1,32,11,10,1,19149,2049,2298,22,22, - 10,19117,19170,168,0,6385195044,101,111,108,63,0,3841,19064,1793,19178,1,13,11,10,1, - 19174,1793,19186,1,10,11,10,1,19182,2049,2255,22,10,19160,19204,168,0,6954126150804,118,97, - 108,105,100,63,0,2,2049,104,2049,2812,10,19192,19225,168,0,249883998779477802,99,104,101,99, - 107,45,101,111,102,0,2,1793,19232,1,-1,11,10,1,19228,1793,19240,1,4,11, - 10,1,19236,2049,2255,22,1793,19250,2049,11190,10,1,19247,9,10,19210,19262,168,0,5863258, - 98,115,0,2049,4212,1,2,2049,2675,1793,19274,2049,4160,3,10,1,19270,9,2049,4160, - 3,10,19254,19295,168,0,7572242387256805,99,104,101,99,107,45,98,115,0,2,1793,19302,1, - 8,11,10,1,19298,1793,19310,1,127,11,10,1,19306,2049,2255,22,1793,19320,2049,19262, - 10,1,19317,9,10,19281,19335,168,0,210708806723,99,104,101,99,107,0,2049,19225,2049,19295, - 10,19324,19355,168,0,249883994190734226,99,104,97,114,97,99,116,101,114,0,2049,11123,2,2049, - 4134,10,19340,19373,168,0,6953366942559,98,117,102,102,101,114,0,1793,19383,2049,18830,2049,4234, - 8,2049,4096,10,1,19375,2049,4260,10,19361,19404,168,0,8246863741238799215,114,101,97,100,45,116, - 111,107,101,110,0,1793,19420,1793,19415,2049,19355,2049,19335,2049,19128,10,1,19408,2049,2397, - 10,1,19406,2049,19373,2049,4587,10,19388,19438,168,0,210716150453,105,110,112,117,116,0,2049, - 19404,2049,19204,10,19427,19456,168,0,229479082815460,112,114,111,99,101,115,115,0,2049,19095,1793, - 19474,771,2049,19170,1793,19470,1,19079,2049,3931,10,1,19465,9,10,1,19460,2049,2862,1, - 417,1,17,2049,66,10,19042,19493,180,19617,5861507,47,47,0,2049,16539,1,19079,2049,3916, - 10,19485,19512,168,19617,6953343520347,98,97,110,110,101,114,0,2049,19111,2049,4472,82,69,84, - 82,79,32,49,50,32,40,37,110,46,37,110,41,92,110,0,1,19516,2049,8246, - 2049,10918,2049,9335,2049,1545,2049,9335,18,2049,1545,2049,4472,37,110,32,77,97,120,44, - 32,37,110,32,85,115,101,100,44,32,37,110,32,70,114,101,101,92,110,0, - 1,19552,2049,8246,2049,10918,10,19500,19598,168,19617,6953744547860,108,105,115,116,101,110,0,3841, - 19054,1793,19605,2049,19512,10,1,19602,2049,74,2049,19438,2049,19456,1,19609,7,10,105,110, - 116,101,114,102,97,99,101,47,114,101,116,114,111,45,117,110,105,120,46,114, - 101,116,114,111,0,19586,19657,156,0,229441520490121,83,111,117,114,99,101,115,0,1,19906, + 111,99,107,115,46,114,101,116,114,111,0,18127,11414,18102,18168,168,0,8246228896775126019,100,111, + 117,98,108,101,58,118,97,114,0,2049,2075,4,2049,130,2049,130,10,18152,18194,168, + 0,-3421095308458227740,100,111,117,98,108,101,58,102,101,116,99,104,0,2049,58,4,15,10, + 18176,18217,168,0,-3421095308442276665,100,111,117,98,108,101,58,115,116,111,114,101,0,1,19, + 2049,2229,2049,61,16,10,18199,18243,168,0,-3421095308461432127,100,111,117,98,108,101,58,99,111, + 110,115,116,0,2049,18168,1,18194,2049,8460,10,18225,18267,168,0,-4575607512064199915,100,111,117,98, + 108,101,58,115,119,97,112,0,67503109,5,67503109,6,10,18250,18288,168,0,8246228896775106679,100,111, + 117,98,108,101,58,100,105,112,0,67503109,67503109,5,5,8,6,6,10,18272,18312,168, + 0,8246228896775123014,100,111,117,98,108,101,58,115,105,112,0,1,2217,2049,2229,2049,18288,10, + 18296,18335,168,0,8246632143337714634,109,101,109,58,105,110,118,111,107,101,0,1,15,2049,10812, + 2049,10793,10,18319,0,156,0,210667451248,65,76,76,79,67,0,18342,1,156,0,6384048135,70, + 82,69,69,0,18353,2,156,0,210689088690,83,84,79,82,69,0,18363,3,156,0,210673137615, + 70,69,84,67,72,0,18374,4,156,0,6952683137271,82,69,83,73,90,69,0,18296,18412, + 168,0,249897943727936361,109,101,109,58,97,108,108,111,99,0,1,0,2049,18335,10,18397,18432, + 168,0,249897943749573803,109,101,109,58,115,116,111,114,101,0,1,2,2049,18335,10,18417,18452, + 168,0,249897943733622728,109,101,109,58,102,101,116,99,104,0,1,3,2049,18335,10,18437,18471, + 168,0,7572664961638592,109,101,109,58,102,114,101,101,0,1,1,2049,18335,10,18457,18492,168, + 0,8246632143679146032,109,101,109,58,114,101,115,105,122,101,0,1,4,2049,18335,10,18476,18512, + 168,0,249897943730056489,109,101,109,58,99,101,108,108,43,0,1,8,19,17,10,18497,18539, + 168,0,1050530996183190288,109,101,109,58,102,101,116,99,104,45,100,111,117,98,108,101,0, + 2,1,1,2049,18512,15,5,2049,18452,6,10,18517,18572,168,0,1730340976492540563,109,101,109,58, + 115,116,111,114,101,45,100,111,117,98,108,101,0,5,5,2049,2217,1,1,2049, + 18512,6,2049,18432,6,2049,18432,10,1793,18608,1,192,1,2,17,8,2049,1576,2049,190, + 3841,11239,8,2049,1576,2049,188,16,10,1,18589,18550,18619,168,19406,193470948,84,73,66,0, + 1,7,15,10,18610,18639,168,19406,8246457295145463473,105,109,97,103,101,58,115,97,118,101,0, + 1,1000,2049,10812,2049,10793,10,18623,18657,168,0,210711039690,101,100,105,116,63,0,2,1793, + 18664,1,8,11,10,1,18660,1793,18672,1,127,11,10,1,18668,2049,2255,22,10,18646, + 18690,168,0,6953539406400,103,97,116,104,101,114,0,2049,18657,1,17,1,4134,2049,66,10, + 18678,18710,168,0,210709415765,99,121,99,108,101,0,2049,11123,2049,2217,4,8,2049,2644,25, + 3,2049,18690,1,18710,7,10,18623,18743,168,19406,-4557881830897049127,112,97,114,115,101,45,117,110, + 116,105,108,0,1793,18755,2049,4451,2049,4234,2049,18710,771,2049,4096,10,1,18745,2049,4260, + 10,18726,18771,168,19406,210726130610,115,58,103,101,116,0,1793,18793,1793,18779,1,13,11,10, + 1,18775,1793,18787,1,10,11,10,1,18783,2049,2255,22,10,1,18773,2049,18743,10,18760, + 18809,168,19406,210708950412,99,108,101,97,114,0,2049,4472,92,94,91,50,74,92,94,91, + 48,59,48,72,0,1,18811,2049,8246,2049,10918,10,18798,18843,156,19406,6952575930081,78,111,69, + 99,104,111,0,0,18831,18853,156,0,193454829,69,79,84,0,0,18844,18868,156,0,7571133383038306, + 73,103,110,111,114,105,110,103,0,0,18854,18884,168,0,249892406716047873,105,103,110,111,114, + 105,110,103,63,0,3841,18868,10,18869,18900,168,0,229486327000139,118,101,114,115,105,111,110, + 0,3841,4,1,100,20,10,18887,18917,168,0,210710254026,100,111,110,101,63,0,2,4097, + 18853,1793,18926,1,13,11,10,1,18922,1793,18934,1,10,11,10,1,18930,1793,18942,1, + 32,11,10,1,18938,2049,2298,22,22,10,18906,18959,168,0,6385195044,101,111,108,63,0, + 3841,18853,1793,18967,1,13,11,10,1,18963,1793,18975,1,10,11,10,1,18971,2049,2255, + 22,10,18949,18993,168,0,6954126150804,118,97,108,105,100,63,0,2,2049,104,2049,2812,10, + 18981,19014,168,0,249883998779477802,99,104,101,99,107,45,101,111,102,0,2,1793,19021,1,-1, + 11,10,1,19017,1793,19029,1,4,11,10,1,19025,2049,2255,22,1793,19039,2049,11190,10, + 1,19036,9,10,18999,19051,168,0,5863258,98,115,0,2049,4212,1,2,2049,2675,1793,19063, + 2049,4160,3,10,1,19059,9,2049,4160,3,10,19043,19084,168,0,7572242387256805,99,104,101,99, + 107,45,98,115,0,2,1793,19091,1,8,11,10,1,19087,1793,19099,1,127,11,10, + 1,19095,2049,2255,22,1793,19109,2049,19051,10,1,19106,9,10,19070,19124,168,0,210708806723,99, + 104,101,99,107,0,2049,19014,2049,19084,10,19113,19144,168,0,249883994190734226,99,104,97,114,97, + 99,116,101,114,0,2049,11123,2,2049,4134,10,19129,19162,168,0,6953366942559,98,117,102,102, + 101,114,0,1793,19172,2049,18619,2049,4234,8,2049,4096,10,1,19164,2049,4260,10,19150,19193, + 168,0,8246863741238799215,114,101,97,100,45,116,111,107,101,110,0,1793,19209,1793,19204,2049,19144, + 2049,19124,2049,18917,10,1,19197,2049,2397,10,1,19195,2049,19162,2049,4587,10,19177,19227,168, + 0,210716150453,105,110,112,117,116,0,2049,19193,2049,18993,10,19216,19245,168,0,229479082815460,112,114, + 111,99,101,115,115,0,2049,18884,1793,19263,771,2049,18959,1793,19259,1,18868,2049,3931,10, + 1,19254,9,10,1,19249,2049,2862,1,417,1,17,2049,66,10,18831,19282,180,19406,5861507, + 47,47,0,2049,16539,1,18868,2049,3916,10,19274,19301,168,19406,6953343520347,98,97,110,110,101, + 114,0,2049,18900,2049,4472,82,69,84,82,79,32,49,50,32,40,37,110,46,37, + 110,41,92,110,0,1,19305,2049,8246,2049,10918,2049,9335,2049,1545,2049,9335,18,2049,1545, + 2049,4472,37,110,32,77,97,120,44,32,37,110,32,85,115,101,100,44,32,37, + 110,32,70,114,101,101,92,110,0,1,19341,2049,8246,2049,10918,10,19289,19387,168,19406, + 6953744547860,108,105,115,116,101,110,0,3841,18843,1793,19394,2049,19301,10,1,19391,2049,74,2049, + 19227,2049,19245,1,19398,7,10,105,110,116,101,114,102,97,99,101,47,114,101,116, + 114,111,45,117,110,105,120,46,114,101,116,114,111,0,19375,19446,156,0,229441520490121,83, + 111,117,114,99,101,115,0,1,19695,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,19644,19797,168,0,6953711201841,107,110,111,119,110,63,0,2,1, - 19657,2049,9099,10,19785,19814,168,0,210716136861,105,110,100,101,120,0,1,19657,4,2049,9775, - 1,19657,4,2049,9245,10,19803,19837,168,0,6953974036516,114,101,99,111,114,100,0,2049,4500, - 2,1,19657,2049,3864,3841,19657,1,19657,17,16,10,1793,19904,2049,16474,2049,19797,1793,19862, - 2049,19814,10,1,19859,1793,19869,2049,19837,10,1,19866,2049,66,1793,19882,1,192,1,2, - 17,8,10,1,19875,2049,2229,2049,1576,2049,186,16,2049,1576,2049,190,3841,11239,8,2049, - 1576,2049,188,16,10,1,19853,100,105,99,116,45,119,111,114,100,115,45,108,105, - 115,116,105,110,103,46,102,111,114,116,104,0,19586,19944,168,19906,229461403550098,100,58,119, - 111,114,100,115,0,1793,19953,2049,190,2049,10918,2049,10888,10,1,19946,2049,8491,10,19931, - 19976,168,19906,-3502157631813457253,100,58,119,111,114,100,115,45,119,105,116,104,0,2049,1977,2049, - 5573,1793,20007,2049,190,2,2049,1977,2049,5286,1793,19996,2049,10918,2049,10888,10,1,19991,1793, - 20002,3,10,1,20000,2049,66,10,1,19982,2049,8491,10,19958,20033,168,19906,2818131571306626127,100,105, - 115,112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049,1977,2049,5519,1793, - 20045,2049,10918,2049,10888,10,1,20040,1793,20051,3,10,1,20049,2049,66,10,19958,20084,168, - 19906,2947807019553410009,100,58,119,111,114,100,115,45,98,101,103,105,110,110,105,110,103,45, - 119,105,116,104,0,2049,1977,2049,5573,1793,20095,2049,190,2049,20033,10,1,20090,2049,8491, - 10,0 }; + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19433,19586,168,0,6953711201841, + 107,110,111,119,110,63,0,2,1,19446,2049,9099,10,19574,19603,168,0,210716136861,105,110, + 100,101,120,0,1,19446,4,2049,9775,1,19446,4,2049,9245,10,19592,19626,168,0,6953974036516, + 114,101,99,111,114,100,0,2049,4500,2,1,19446,2049,3864,3841,19446,1,19446,17,16, + 10,1793,19693,2049,16474,2049,19586,1793,19651,2049,19603,10,1,19648,1793,19658,2049,19626,10,1, + 19655,2049,66,1793,19671,1,192,1,2,17,8,10,1,19664,2049,2229,2049,1576,2049,186, + 16,2049,1576,2049,190,3841,11239,8,2049,1576,2049,188,16,10,1,19642,100,105,99,116, + 45,119,111,114,100,115,45,108,105,115,116,105,110,103,46,102,111,114,116,104, + 0,19375,19733,168,19695,229461403550098,100,58,119,111,114,100,115,0,1793,19742,2049,190,2049,10918, + 2049,10888,10,1,19735,2049,8491,10,19720,19765,168,19695,-3502157631813457253,100,58,119,111,114,100,115, + 45,119,105,116,104,0,2049,1977,2049,5573,1793,19796,2049,190,2,2049,1977,2049,5286,1793, + 19785,2049,10918,2049,10888,10,1,19780,1793,19791,3,10,1,19789,2049,66,10,1,19771,2049, + 8491,10,19747,19822,168,19695,2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,101, + 102,116,0,2,2049,1977,2049,5519,1793,19834,2049,10918,2049,10888,10,1,19829,1793,19840,3, + 10,1,19838,2049,66,10,19747,19873,168,19695,2947807019553410009,100,58,119,111,114,100,115,45,98, + 101,103,105,110,110,105,110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,19884, + 2049,190,2049,19822,10,1,19879,2049,8491,10,0 };