as: words not included by default, split into separate file

FossilOrigin-Name: 19e4a3624a82cd293f23329d9ec5d2755db1eb656f7dd8c10373a78d76cf3b71
This commit is contained in:
crc 2023-01-23 16:08:22 +00:00
parent 03b6543580
commit f8fe4b98a6
5 changed files with 197 additions and 291 deletions

View file

@ -83,6 +83,7 @@ DEVICES += interface/unsigned.retro
DEVICES += interface/ffi.retro
DEVICES += interface/retro-napia.retro
DEVICES += interface/future.retro
# DEVICES += interface/new-strings.retro
DEVICES += interface/block.retro
DEVICES += interface/deprecated.retro
DEVICES += interface/double.retro

View file

@ -68,6 +68,7 @@ DEVICES += interface/ffi.retro
DEVICES += interface/unsigned.retro
DEVICES += interface/retro-napia.retro
DEVICES += interface/future.retro
# DEVICES += interface/new-strings.retro
DEVICES += interface/block.retro
DEVICES += interface/deprecated.retro
DEVICES += interface/double.retro

View file

@ -7,10 +7,6 @@ Notes:
`aa:` is a new set of array words. These will be replacing the
existing set in the future.
`as:` is a new set of string words. These will be replacing the
existing set in the future. (In the current system, strings are
null terminated. The `as` strings are length-prefixed instead.)
~~~
'NextArray var
:arrays FREE #513 #12 n:mul n:sub ;
@ -28,12 +24,6 @@ null terminated. The `as` strings are length-prefixed instead.)
&store sip n:inc ] times
drop-pair ] sip ;
:as:map aa:map ;
:as:left a:left ;
:as:right a:right ;
:as:middle a:middle ;
{{
'Count var
:prepare #0 &Count store ;
@ -53,137 +43,14 @@ null terminated. The `as` strings are length-prefixed instead.)
:aa:contains? (an-f)
swap #0 swap [ swap [ over eq? ] dip or ] a:for-each nip ;
:as:contains? aa:contains? ;
:as:filter a:filter ;
:as:length fetch ;
:as:th n:inc n:add ;
:as:store a:th store ;
:as:fetch as:th fetch ;
:aa:first (a-n) #0 a:fetch ;
:aa:last (a-n) dup a:length n:dec a:fetch ;
:as:first aa:first ;
:as:last aa:last ;
:as:index/c aa:index ;
:as:dup a:dup ;
:as:last aa:last ;
:as:temp a:dup ;
:as:trim-right (s-s)
as:temp [ dup v:dec [ as:last #32 lteq? ] sip swap ] while
dup v:inc ;
{{
'Start var
'End var
'Len var
:find-end dup as:length dup !Len over n:add n:inc !End n:inc ;
:new-size @Start over swap n:sub @Len swap n:sub ;
:patch over store ;
---reveal---
:as:trim-left (s-s)
as:dup dup #0 as:fetch #32 eq?
[ dup !Start find-end
[ fetch-next #32 -eq? over @End -eq? and ] while
new-size patch ] if ;
}}
:as:trim (s-s) as:trim-left as:trim-right ;
:sigil:" (s-a) here [ dup s:length comma &comma s:for-each ] dip ; immediate
:as:for-each (sq-) a:for-each ;
:aa:hash (a-n) #5381 swap [ swap #33 n:mul n:add ] a:for-each ;
:as:hash (s-n) aa:hash ;
:aa:eq? (aa-f) aa:hash swap aa:hash eq? ;
:aa:-eq? (aa-f) aa:hash swap aa:hash -eq? ;
:as:eq? (ss-f) aa:eq? ;
:as:-eq? (ss-f) aa:-eq? ;
:a:dup here [ dup a:length comma &comma a:for-each ] dip ;
:as:dup a:dup ;
:as:temp ;
:as:keep ;
:as:to-upper (s-s) [ as:dup &c:to-upper as:map as:temp ] gc ;
:as:to-lower (s-s) [ as:dup &c:to-lower as:map as:temp ] gc ;
~~~
a:append aa-a Create a new array with the contents of a1
a:behead a-a Remove first item from an array
a:chop a-a Remove last item from an array
* a:contains? an-f True if array contains n. False otherwise
a:copy sd- Copy array from s to d
* a:dup a-a Make a copy of an array
* a:eq? aa-f Compare two arrays for equality
* a:-eq? aa-f Compare two arrays for inequality
* a:fetch an-v Fetch value stored at index n in array
a:filter aq-a Run q once for each value in a. If it returns
a:first a-n Return the first value in an array
* a:for-each aq- Run q once for each value in the array. Pushes
* a:hash a-n Return the hash of an array
* a:indices av-a Return array of indices for v in source array
* a:index av-n Return first index of n in a
a:last a-n Return the last value in an array
* a:left an-a Return left n values from array
* a:length a-n Return the length of an array
* a:make ...n-a Create a new permanent array from the provided values
a:make/temp ...n-a Create a new temporary array from the
* a:map aq-a Run q once for each value in the array. Takes the
* a:middle afl-a Return new array from f to l, inclusive
a:prepend aa-a Create a new array with the contents of a2
a:reduce anq-n Takes an array, a starting value, and a quote.
a:reverse a-a Reverse the order of items in an array
* a:right an-a Return right n values from array
* a:store van- Store value v into array at index n
a:temp a-a Make a copy of the array in the temporary string/array
* a:th an-p Return the address of a specific index into the array
s:append ss-s Append s2 to s1, returning new temporary string
s:behead s-s Remove first item from a string
s:chop s-s Remove last item from a string
* s:contains? sc-f True if string contains c. False otherwise
s:copy sd- Copy string s to memory at d
* s:dup s-s Make a copy of string
* s:eq? ss-f Compare two strings for equality
* s:-eq? ss-f Compare two strings for inequality
s:evaluate s-? Interpret each token in a string
* s:fetch sn-c Return character at index n in the string
* s:filter sq-s Run q once for each value in s If it returns
s:first s-c Return the first character in a string
s:for-each sq- Run q once for each character in s. Pushes
s:get/line '-s Read a line of input until enter is
s:get/token -s Read a string from the keyboard ending when
* s:hash s-n Return the hash of the string
* s:index/c sc-f True if string contains c, false otherwise
s:keep s-s Move string to here, allocating space and returning
s:last s-c Return the last character in a string
* s:left sn-s Return left n characters of string
* s:length s-n Return the length of a string
* s:middle sfl-s Return substring from f to l, inclusive
s:pool -p Return the starting address of the temporary string/array
s:prepend ss-s Create a new string with the contents of s2
s:put s- Display a string
s:reverse s-s Reverse the order of values in the string.
s:rewrite s-s Replace underscores in string with spaces
* s:right sn-s Return right n characters of string
* s:store csn- Store character into string at index n
s:temp s-s Put a copy of a string in the temporary buffers.
* s:th sn-a Given a string and index, return the address
* s:to-lower s-s Make all characters in string lowercase
s:to-n s-n Convert a string to a number
* s:to-upper s-s Make all characters in a string uppercase
* s:trim s-s Trim both leading and trailing whitespace from a string
* s:trim-right s-s Trim trailing whitespace from a string
* s:trim-left s-s Trim leading whitespace from a string

View file

@ -0,0 +1,73 @@
# New Words
This contains a variety of words from my more recent systems.
Notes:
`as:` is a new set of string words. These will be replacing the
existing set in the future. (In the current system, strings are
null terminated. The `as` strings are length-prefixed instead.)
~~~
:as:map aa:map ;
:as:left a:left ;
:as:right a:right ;
:as:middle a:middle ;
:as:contains? aa:contains? ;
:as:filter a:filter ;
:as:length fetch ;
:as:th n:inc n:add ;
:as:store a:th store ;
:as:fetch as:th fetch ;
:as:first aa:first ;
:as:last aa:last ;
:as:index/c aa:index ;
:as:dup a:dup ;
:as:last aa:last ;
:as:temp a:dup ;
:as:trim-right (s-s)
as:temp [ dup v:dec [ as:last #32 lteq? ] sip swap ] while
dup v:inc ;
{{
'Start var
'End var
'Len var
:find-end dup as:length dup !Len over n:add n:inc !End n:inc ;
:new-size @Start over swap n:sub @Len swap n:sub ;
:patch over store ;
---reveal---
:as:trim-left (s-s)
as:dup dup #0 as:fetch #32 eq?
[ dup !Start find-end
[ fetch-next #32 -eq? over @End -eq? and ] while
new-size patch ] if ;
}}
:as:trim (s-s) as:trim-left as:trim-right ;
:sigil:" (s-a) here [ dup s:length comma &comma s:for-each ] dip ; immediate
:as:for-each (sq-) a:for-each ;
:as:hash (s-n) aa:hash ;
:as:eq? (ss-f) aa:eq? ;
:as:-eq? (ss-f) aa:-eq? ;
:as:dup a:dup ;
:as:temp ;
:as:keep ;
:as:to-upper (s-s) [ as:dup &c:to-upper as:map as:temp ] gc ;
:as:to-lower (s-s) [ as:dup &c:to-lower as:map as:temp ] gc ;
~~~

View file

@ -10,8 +10,8 @@
#define CELL_MAX LLONG_MAX - 1
#endif
#endif
CELL ngaImageCells = 20664;
CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10,1,10,2,10,3,10,
CELL ngaImageCells = 19953;
CELL ngaImage[] = { 1793,19462,19908,19952,202301,415,387,1247,1535,0,10995,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,20173,20619,20663,202301,415,387,1247,1535,0,10995,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,20428,17108737,3,2,524559,130,
2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,19409,1247,167841793,
66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19717,17108737,3,2,524559,130,
2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,18698,1247,167841793,
216,11,17826049,0,216,2,15,25,524546,190,134287105,217,118,2305,218,459023,226,134287361,217,221,
659201,216,10,659969,7,2049,58,25,17694978,58,242,9,84152833,48,319750404,241,117507601,244,184618754,45,
25,16974851,-1,168886532,1,134284289,1,257,134284289,0,244,660227,32,0,0,115,105,103,105,108,
@ -170,7 +170,7 @@ CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10
110,58,105,110,99,0,659713,1,10,3114,3139,168,16552,210720197721,110,58,100,101,99,0,
659969,1,10,3128,3158,168,16552,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,16552,249861296566813883,83,99,
111,112,101,76,105,115,116,0,20521,20575,10,3172,3198,168,16552,5864091,123,123,0,2049,
111,112,101,76,105,115,116,0,19810,19864,10,3172,3198,168,16552,5864091,123,123,0,2049,
1576,2,1,3187,2049,61,16,10,3190,3225,168,16552,-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,16552,5864159,125,
125,0,1,3187,2049,58,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281,
@ -228,7 +228,7 @@ CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10
10,4239,4297,156,16552,-4600587576916820603,84,101,109,112,83,116,114,105,110,103,115,0,32,4280,
4317,156,16552,7474516786580364824,84,101,109,112,83,116,114,105,110,103,77,97,120,0,512,4298,
4331,168,16552,229440420829967,83,84,82,73,78,71,83,0,2049,1545,3841,4297,3841,4317,19,18,
10,4318,4353,156,0,0,67,117,114,114,101,110,116,0,26,10,4340,4370,168,0,
10,4318,4353,156,0,0,67,117,114,114,101,110,116,0,20,10,4340,4370,168,0,
0,115,58,112,111,105,110,116,101,114,0,3841,4353,3841,4317,19,2049,4331,17,10,
4355,4391,168,0,0,115,58,110,101,120,116,0,1,4353,2049,3864,3841,4353,3841,4297,
11,1793,4407,1,0,4097,4353,10,1,4402,9,10,4318,4423,168,16552,6953962777192,115,58,116,
@ -888,160 +888,124 @@ CELL ngaImage[] = { 1793,20173,20619,20663,202301,415,387,1247,1535,0,10995,0,10
0,2049,1977,1793,17492,2,2049,17351,1,17351,2049,2449,10,1,17484,2049,2229,10,17467,17509,
168,0,6953302515007,97,97,58,109,97,112,0,4,1793,17539,2049,58,1793,17533,1793,17522,15,
67502597,8,10,1,17518,2049,2241,1,39,2049,2241,2049,3125,10,1,17516,2049,2449,771,10,
1,17512,2049,2241,10,17497,17556,168,0,6953323861585,97,115,58,109,97,112,0,2049,17509,10,
17544,17572,168,0,229459687400510,97,115,58,108,101,102,116,0,2049,8654,10,17559,17589,168,0,
7572169691476913,97,115,58,114,105,103,104,116,0,2049,8673,10,17575,17607,168,0,249881599622948834,97,115,
58,109,105,100,100,108,101,0,2049,8614,10,17592,17621,156,0,210671126606,67,111,117,110,
116,0,0,17610,17635,168,0,229479071419028,112,114,101,112,97,114,101,0,1,0,1,17621,
16,10,17622,17654,168,0,229481161821089,114,101,115,101,114,118,101,0,4,1,0,2049,17351,
10,17641,17671,168,0,210723988469,112,97,116,99,104,0,2049,1977,67502597,2049,17283,2049,3139,67502597,
16,10,17660,17694,168,0,229462046998285,99,108,101,97,110,117,112,0,2,2049,4423,4,1,
0,16,10,17681,17714,168,0,6953774213361,109,97,116,99,104,63,0,67502597,11,10,17702,17729,
168,0,6953974036516,114,101,99,111,114,100,0,1,17621,15,2049,17351,10,17717,17748,168,0,
229470109485971,105,116,101,114,97,116,101,0,1793,17760,2049,17714,1,17729,9,1,17621,2049,3864,
10,1,17750,2049,8777,10,17592,17781,168,0,8246067467232158272,97,97,58,105,110,100,105,99,101,
115,0,2049,17635,2049,1977,1793,17793,2049,17654,2049,17748,3,10,1,17787,2049,2229,2049,17671,
2049,17694,10,17765,17816,168,0,7572146434556505,97,97,58,105,110,100,101,120,0,1793,17825,2049,
17781,1,0,2049,9236,10,1,17818,2049,17362,10,17802,17848,168,0,-3596900463221605921,97,97,58,99,
111,110,116,97,105,110,115,63,0,4,1,0,4,1793,17866,4,1793,17860,67502597,11,
10,1,17857,2049,2229,22,10,1,17854,2049,8777,772,10,17830,17890,168,0,-3569332041486845839,97,115,
58,99,111,110,116,97,105,110,115,63,0,2049,17848,10,17872,17908,168,0,249881599349305785,97,
115,58,102,105,108,116,101,114,0,2049,8997,10,17893,17926,168,0,249881599579432661,97,115,58,
108,101,110,103,116,104,0,15,10,17911,17939,168,0,210706783919,97,115,58,116,104,0,
2049,3125,2049,17270,10,17928,17958,168,0,7572169693067168,97,115,58,115,116,111,114,101,0,2049,
9219,16,10,17944,17976,168,0,7572169677116093,97,115,58,102,101,116,99,104,0,2049,17939,15,
10,17962,17994,168,0,7572146430834761,97,97,58,102,105,114,115,116,0,1,0,2049,9236,10,
17980,18012,168,0,229458982959509,97,97,58,108,97,115,116,0,2,2049,8598,2049,3139,2049,9236,
10,17999,18034,168,0,7572169677258203,97,115,58,102,105,114,115,116,0,2049,17994,10,18020,18050,
168,0,229459687396583,97,115,58,108,97,115,116,0,2049,18012,10,18037,18069,168,0,8246092782587163933,97,
115,58,105,110,100,101,120,47,99,0,2049,17816,10,18053,18084,168,0,6953323852444,97,115,
58,100,117,112,0,2049,8810,10,18072,18100,168,0,229459687396583,97,115,58,108,97,115,116,
0,2049,18012,10,18087,18116,168,0,229459687688233,97,115,58,116,101,109,112,0,2049,8810,10,
18103,18138,168,0,-7106699936504964166,97,115,58,116,114,105,109,45,114,105,103,104,116,0,2049,
18116,1793,18160,2,2049,3881,1793,18154,2049,18100,1,32,2049,2659,10,1,18147,2049,2241,4,
10,1,18142,2049,2372,2,2049,3864,10,18119,18179,156,0,210690259379,83,116,97,114,116,0,
0,18168,18189,156,0,193455868,69,110,100,0,0,18180,18199,156,0,193463204,76,101,110,0,
0,18190,18214,168,0,7572371885291434,102,105,110,100,45,101,110,100,0,2,2049,17926,2,4097,
18199,67502597,2049,17270,2049,3125,4097,18189,2049,3125,10,18200,18244,168,0,7572707956476599,110,101,119,45,
115,105,122,101,0,3841,18179,67502597,4,2049,17283,3841,18199,4,2049,17283,10,18230,18267,168,
0,210723988469,112,97,116,99,104,0,67502597,16,10,18119,18288,168,0,-3569308011477864665,97,115,58,116,
114,105,109,45,108,101,102,116,0,2049,18084,2,1,0,2049,17976,1,32,11,1793,
18327,2,4097,18179,2049,18214,1793,18318,2049,58,1,32,12,67502597,3841,18189,12,21,10,1,
18307,2049,2372,2049,18244,2049,18267,10,1,18300,9,10,18270,18344,168,0,229459687702255,97,115,58,
116,114,105,109,0,2049,18288,2049,18138,10,18331,18362,180,0,229482595734745,115,105,103,105,108,
58,34,0,2049,1977,1793,18376,2,2049,104,2049,17351,1,17351,2049,4741,10,1,18366,2049,
2229,10,18349,18398,168,0,-4580099406349869736,97,115,58,102,111,114,45,101,97,99,104,0,2049,
8777,10,18381,18414,168,0,229458982815749,97,97,58,104,97,115,104,0,1,5381,4,1793,18427,
4,1,33,2049,17296,2049,17270,10,1,18419,2049,8777,10,18401,18445,168,0,229459687252823,97,115,
58,104,97,115,104,0,2049,18414,10,18432,18460,168,0,6953302506774,97,97,58,101,113,63,
0,2049,18414,4,2049,18414,11,10,18448,18480,168,0,229458980699715,97,97,58,45,101,113,63,
0,2049,18414,4,2049,18414,12,10,18467,18499,168,0,6953323853352,97,115,58,101,113,63,0,
2049,18460,10,18487,18515,168,0,229459685136789,97,115,58,45,101,113,63,0,2049,18480,10,18502,
18529,168,0,210704781289,97,58,100,117,112,0,2049,1977,1793,18543,2,2049,8598,2049,17351,1,
17351,2049,8777,10,1,18533,2049,2229,10,18518,18560,168,0,6953323852444,97,115,58,100,117,112,
0,2049,18529,10,18548,18576,168,0,229459687688233,97,115,58,116,101,109,112,0,10,18563,18590,
168,0,229459687364536,97,115,58,107,101,101,112,0,10,18577,18608,168,0,-4580098812306212145,97,115,58,
116,111,45,117,112,112,101,114,0,1793,18619,2049,18560,1,6804,2049,17556,2049,18576,10,
1,18610,2049,17362,10,18591,18641,168,0,-4580098812316913748,97,115,58,116,111,45,108,111,119,101,
114,0,1793,18652,2049,18560,1,6829,2049,17556,2049,18576,10,1,18643,2049,17362,10,18624,18675,
168,0,-3527051417241377258,98,108,111,99,107,58,105,110,118,111,107,101,0,1,3,2049,10534,
2049,10515,10,18624,18698,168,0,8246131600073141446,98,108,111,99,107,58,114,101,97,100,0,1,
0,2049,18675,10,18682,18720,168,0,-4578818303223200395,98,108,111,99,107,58,119,114,105,116,101,
0,1,1,2049,18675,10,18703,18745,168,0,-4036225629868593021,98,108,111,99,107,58,115,101,116,
45,102,105,108,101,0,1,2,2049,18675,10,18725,18763,168,0,229480770855518,115,58,115,112,
108,105,116,0,2049,7184,10,18750,18789,168,0,6119006473764520940,115,58,115,112,108,105,116,45,
111,110,45,115,116,114,105,110,103,0,2049,7218,10,18766,18814,168,0,-2157201768052001381,115,58,
99,111,110,116,97,105,110,115,45,99,104,97,114,63,0,2049,4857,10,18792,18841,
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,18817,18868,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,18844,18887,168,0,8246014626430519194,97,58,105,
110,100,101,120,45,111,102,0,2049,9291,10,18871,18913,168,0,-5025353456659034242,97,58,105,110,
100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,9416,10,18890,18932,168,
0,8246850033149754348,115,58,105,110,100,101,120,45,111,102,0,2049,4779,10,18916,18958,168,0,
-94300875658333296,115,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,
5069,10,18935,18977,168,0,8246228896775126019,100,111,117,98,108,101,58,118,97,114,0,2049,2075,
4,2049,130,2049,130,10,18961,19003,168,0,-3421095308458227740,100,111,117,98,108,101,58,102,101,
116,99,104,0,2049,58,4,15,10,18985,19026,168,0,-3421095308442276665,100,111,117,98,108,101,
58,115,116,111,114,101,0,1,19,2049,2229,2049,61,16,10,19008,19052,168,0,-3421095308461432127,
100,111,117,98,108,101,58,99,111,110,115,116,0,2049,18977,1,19003,2049,8460,10,
19034,19076,168,0,-4575607512064199915,100,111,117,98,108,101,58,115,119,97,112,0,67503109,5,67503109,
6,10,19059,19097,168,0,8246228896775106679,100,111,117,98,108,101,58,100,105,112,0,67503109,67503109,
5,5,8,6,6,10,19081,19121,168,0,8246228896775123014,100,111,117,98,108,101,58,115,105,
112,0,1,2217,2049,2229,2049,19097,10,19105,19144,168,0,8246632143337714634,109,101,109,58,105,110,
118,111,107,101,0,1,15,2049,10534,2049,10515,10,19128,0,156,0,210667451248,65,76,76,
79,67,0,19151,1,156,0,6384048135,70,82,69,69,0,19162,2,156,0,210689088690,83,84,
79,82,69,0,19172,3,156,0,210673137615,70,69,84,67,72,0,19183,4,156,0,6952683137271,
82,69,83,73,90,69,0,19105,19221,168,0,249897943727936361,109,101,109,58,97,108,108,111,
99,0,1,0,2049,19144,10,19206,19241,168,0,249897943749573803,109,101,109,58,115,116,111,114,
101,0,1,2,2049,19144,10,19226,19261,168,0,249897943733622728,109,101,109,58,102,101,116,99,
104,0,1,3,2049,19144,10,19246,19280,168,0,7572664961638592,109,101,109,58,102,114,101,101,
0,1,1,2049,19144,10,19266,19301,168,0,8246632143679146032,109,101,109,58,114,101,115,105,122,
101,0,1,4,2049,19144,10,19285,19321,168,0,249897943730056489,109,101,109,58,99,101,108,108,
43,0,1,8,19,17,10,19306,19348,168,0,1050530996183190288,109,101,109,58,102,101,116,99,
104,45,100,111,117,98,108,101,0,2,1,1,2049,19321,15,5,2049,19261,6,10,
19326,19381,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,19321,6,2049,19241,6,2049,19241,10,19359,19405,168,
20192,193470948,84,73,66,0,1,7,15,10,19396,19425,168,20192,8246457295145463473,105,109,97,103,101,
58,115,97,118,101,0,1,1000,2049,10534,2049,10515,10,19409,19443,168,0,210711039690,101,100,
105,116,63,0,2,1793,19450,1,8,11,10,1,19446,1793,19458,1,127,11,10,1,
19454,2049,2255,22,10,19432,19476,168,0,6953539406400,103,97,116,104,101,114,0,2049,19443,1,
17,1,4134,2049,66,10,19464,19496,168,0,210709415765,99,121,99,108,101,0,2049,10864,2049,
2217,4,8,2049,2644,25,3,2049,19476,1,19496,7,10,19409,19529,168,20192,-4557881830897049127,112,97,
114,115,101,45,117,110,116,105,108,0,1793,19541,2049,4451,2049,4234,2049,19496,771,2049,
4096,10,1,19531,2049,4260,10,19512,19557,168,20192,210726130610,115,58,103,101,116,0,1793,19579,
1793,19565,1,13,11,10,1,19561,1793,19573,1,10,11,10,1,19569,2049,2255,22,10,
1,19559,2049,19529,10,19546,19595,168,20192,210708950412,99,108,101,97,114,0,2049,4472,92,94,
91,50,74,92,94,91,48,59,48,72,0,1,19597,2049,8246,2049,10640,10,19584,19629,
156,20192,6952575930081,78,111,69,99,104,111,0,0,19617,19639,156,0,193454829,69,79,84,0,
0,19630,19654,156,0,7571133383038306,73,103,110,111,114,105,110,103,0,0,19640,19670,168,0,
249892406716047873,105,103,110,111,114,105,110,103,63,0,3841,19654,10,19655,19686,168,0,229486327000139,118,
101,114,115,105,111,110,0,3841,4,1,100,20,10,19673,19703,168,0,210710254026,100,111,
110,101,63,0,2,4097,19639,1793,19712,1,13,11,10,1,19708,1793,19720,1,10,11,
10,1,19716,1793,19728,1,32,11,10,1,19724,2049,2298,22,22,10,19692,19745,168,0,
6385195044,101,111,108,63,0,3841,19639,1793,19753,1,13,11,10,1,19749,1793,19761,1,10,
11,10,1,19757,2049,2255,22,10,19735,19779,168,0,6954126150804,118,97,108,105,100,63,0,
2,2049,104,2049,2812,10,19767,19800,168,0,249883998779477802,99,104,101,99,107,45,101,111,102,
0,2,1793,19807,1,-1,11,10,1,19803,1793,19815,1,4,11,10,1,19811,2049,2255,
22,1793,19825,2049,10931,10,1,19822,9,10,19785,19837,168,0,5863258,98,115,0,2049,4212,
1,2,2049,2675,1793,19849,2049,4160,3,10,1,19845,9,2049,4160,3,10,19829,19870,168,
0,7572242387256805,99,104,101,99,107,45,98,115,0,2,1793,19877,1,8,11,10,1,19873,
1793,19885,1,127,11,10,1,19881,2049,2255,22,1793,19895,2049,19837,10,1,19892,9,10,
19856,19910,168,0,210708806723,99,104,101,99,107,0,2049,19800,2049,19870,10,19899,19930,168,0,
249883994190734226,99,104,97,114,97,99,116,101,114,0,2049,10864,2,2049,4134,10,19915,19948,168,
0,6953366942559,98,117,102,102,101,114,0,1793,19958,2049,19405,2049,4234,8,2049,4096,10,1,
19950,2049,4260,10,19936,19979,168,0,8246863741238799215,114,101,97,100,45,116,111,107,101,110,0,
1793,19995,1793,19990,2049,19930,2049,19910,2049,19703,10,1,19983,2049,2397,10,1,19981,2049,19948,
2049,4587,10,19963,20013,168,0,210716150453,105,110,112,117,116,0,2049,19979,2049,19779,10,20002,
20031,168,0,229479082815460,112,114,111,99,101,115,115,0,2049,19670,1793,20049,771,2049,19745,1793,
20045,1,19654,2049,3931,10,1,20040,9,10,1,20035,2049,2862,1,415,1,17,2049,66,
10,19617,20068,180,20192,5861507,47,47,0,2049,15996,1,19654,2049,3916,10,20060,20087,168,20192,
6953343520347,98,97,110,110,101,114,0,2049,19686,2049,4472,82,69,84,82,79,32,49,50,
32,40,37,110,46,37,110,41,92,110,0,1,20091,2049,8246,2049,10640,2049,10716,2049,
1545,2049,10716,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,20127,2049,8246,2049,
10640,10,20075,20173,168,20192,6953744547860,108,105,115,116,101,110,0,3841,19629,1793,20180,2049,20087,
10,1,20177,2049,74,2049,20013,2049,20031,1,20184,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,
20161,20232,156,0,229441520490121,83,111,117,114,99,101,115,0,1,20469,0,0,0,0,0,
1,17512,2049,2241,10,17497,17555,156,0,210671126606,67,111,117,110,116,0,0,17544,17569,168,
0,229479071419028,112,114,101,112,97,114,101,0,1,0,1,17555,16,10,17556,17588,168,0,
229481161821089,114,101,115,101,114,118,101,0,4,1,0,2049,17351,10,17575,17605,168,0,210723988469,
112,97,116,99,104,0,2049,1977,67502597,2049,17283,2049,3139,67502597,16,10,17594,17628,168,0,
229462046998285,99,108,101,97,110,117,112,0,2,2049,4423,4,1,0,16,10,17615,17648,168,
0,6953774213361,109,97,116,99,104,63,0,67502597,11,10,17636,17663,168,0,6953974036516,114,101,99,
111,114,100,0,1,17555,15,2049,17351,10,17651,17682,168,0,229470109485971,105,116,101,114,97,
116,101,0,1793,17694,2049,17648,1,17663,9,1,17555,2049,3864,10,1,17684,2049,8777,10,
17497,17715,168,0,8246067467232158272,97,97,58,105,110,100,105,99,101,115,0,2049,17569,2049,1977,
1793,17727,2049,17588,2049,17682,3,10,1,17721,2049,2229,2049,17605,2049,17628,10,17699,17750,168,
0,7572146434556505,97,97,58,105,110,100,101,120,0,1793,17759,2049,17715,1,0,2049,9236,10,
1,17752,2049,17362,10,17736,17782,168,0,-3596900463221605921,97,97,58,99,111,110,116,97,105,110,
115,63,0,4,1,0,4,1793,17800,4,1793,17794,67502597,11,10,1,17791,2049,2229,22,
10,1,17788,2049,8777,772,10,17764,17820,168,0,7572146430834761,97,97,58,102,105,114,115,116,
0,1,0,2049,9236,10,17806,17838,168,0,229458982959509,97,97,58,108,97,115,116,0,2,
2049,8598,2049,3139,2049,9236,10,17825,17859,168,0,229458982815749,97,97,58,104,97,115,104,0,
1,5381,4,1793,17872,4,1,33,2049,17296,2049,17270,10,1,17864,2049,8777,10,17846,17889,
168,0,6953302506774,97,97,58,101,113,63,0,2049,17859,4,2049,17859,11,10,17877,17909,168,
0,229458980699715,97,97,58,45,101,113,63,0,2049,17859,4,2049,17859,12,10,17896,17927,168,
0,210704781289,97,58,100,117,112,0,2049,1977,1793,17941,2,2049,8598,2049,17351,1,17351,2049,
8777,10,1,17931,2049,2229,10,17916,17964,168,0,-3527051417241377258,98,108,111,99,107,58,105,110,
118,111,107,101,0,1,3,2049,10534,2049,10515,10,17916,17987,168,0,8246131600073141446,98,108,111,
99,107,58,114,101,97,100,0,1,0,2049,17964,10,17971,18009,168,0,-4578818303223200395,98,108,
111,99,107,58,119,114,105,116,101,0,1,1,2049,17964,10,17992,18034,168,0,-4036225629868593021,
98,108,111,99,107,58,115,101,116,45,102,105,108,101,0,1,2,2049,17964,10,
18014,18052,168,0,229480770855518,115,58,115,112,108,105,116,0,2049,7184,10,18039,18078,168,0,
6119006473764520940,115,58,115,112,108,105,116,45,111,110,45,115,116,114,105,110,103,0,2049,
7218,10,18055,18103,168,0,-2157201768052001381,115,58,99,111,110,116,97,105,110,115,45,99,104,
97,114,63,0,2049,4857,10,18081,18130,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,18106,18157,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,18133,18176,168,0,8246014626430519194,97,58,105,110,100,101,120,45,111,102,0,2049,9291,10,
18160,18202,168,0,-5025353456659034242,97,58,105,110,100,101,120,45,111,102,45,115,116,114,105,
110,103,0,2049,9416,10,18179,18221,168,0,8246850033149754348,115,58,105,110,100,101,120,45,111,
102,0,2049,4779,10,18205,18247,168,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,
45,115,116,114,105,110,103,0,2049,5069,10,18224,18266,168,0,8246228896775126019,100,111,117,98,
108,101,58,118,97,114,0,2049,2075,4,2049,130,2049,130,10,18250,18292,168,0,-3421095308458227740,
100,111,117,98,108,101,58,102,101,116,99,104,0,2049,58,4,15,10,18274,18315,
168,0,-3421095308442276665,100,111,117,98,108,101,58,115,116,111,114,101,0,1,19,2049,2229,
2049,61,16,10,18297,18341,168,0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,
116,0,2049,18266,1,18292,2049,8460,10,18323,18365,168,0,-4575607512064199915,100,111,117,98,108,101,
58,115,119,97,112,0,67503109,5,67503109,6,10,18348,18386,168,0,8246228896775106679,100,111,117,98,
108,101,58,100,105,112,0,67503109,67503109,5,5,8,6,6,10,18370,18410,168,0,8246228896775123014,
100,111,117,98,108,101,58,115,105,112,0,1,2217,2049,2229,2049,18386,10,18394,18433,
168,0,8246632143337714634,109,101,109,58,105,110,118,111,107,101,0,1,15,2049,10534,2049,10515,
10,18417,0,156,0,210667451248,65,76,76,79,67,0,18440,1,156,0,6384048135,70,82,69,
69,0,18451,2,156,0,210689088690,83,84,79,82,69,0,18461,3,156,0,210673137615,70,69,
84,67,72,0,18472,4,156,0,6952683137271,82,69,83,73,90,69,0,18394,18510,168,0,
249897943727936361,109,101,109,58,97,108,108,111,99,0,1,0,2049,18433,10,18495,18530,168,0,
249897943749573803,109,101,109,58,115,116,111,114,101,0,1,2,2049,18433,10,18515,18550,168,0,
249897943733622728,109,101,109,58,102,101,116,99,104,0,1,3,2049,18433,10,18535,18569,168,0,
7572664961638592,109,101,109,58,102,114,101,101,0,1,1,2049,18433,10,18555,18590,168,0,8246632143679146032,
109,101,109,58,114,101,115,105,122,101,0,1,4,2049,18433,10,18574,18610,168,0,
249897943730056489,109,101,109,58,99,101,108,108,43,0,1,8,19,17,10,18595,18637,168,0,
1050530996183190288,109,101,109,58,102,101,116,99,104,45,100,111,117,98,108,101,0,2,1,
1,2049,18610,15,5,2049,18550,6,10,18615,18670,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,18610,6,
2049,18530,6,2049,18530,10,18648,18694,168,19481,193470948,84,73,66,0,1,7,15,10,18685,
18714,168,19481,8246457295145463473,105,109,97,103,101,58,115,97,118,101,0,1,1000,2049,10534,2049,
10515,10,18698,18732,168,0,210711039690,101,100,105,116,63,0,2,1793,18739,1,8,11,10,
1,18735,1793,18747,1,127,11,10,1,18743,2049,2255,22,10,18721,18765,168,0,6953539406400,103,
97,116,104,101,114,0,2049,18732,1,17,1,4134,2049,66,10,18753,18785,168,0,210709415765,
99,121,99,108,101,0,2049,10864,2049,2217,4,8,2049,2644,25,3,2049,18765,1,18785,
7,10,18698,18818,168,19481,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,
18830,2049,4451,2049,4234,2049,18785,771,2049,4096,10,1,18820,2049,4260,10,18801,18846,168,19481,
210726130610,115,58,103,101,116,0,1793,18868,1793,18854,1,13,11,10,1,18850,1793,18862,1,
10,11,10,1,18858,2049,2255,22,10,1,18848,2049,18818,10,18835,18884,168,19481,210708950412,99,
108,101,97,114,0,2049,4472,92,94,91,50,74,92,94,91,48,59,48,72,0,
1,18886,2049,8246,2049,10640,10,18873,18918,156,19481,6952575930081,78,111,69,99,104,111,0,0,
18906,18928,156,0,193454829,69,79,84,0,0,18919,18943,156,0,7571133383038306,73,103,110,111,114,
105,110,103,0,0,18929,18959,168,0,249892406716047873,105,103,110,111,114,105,110,103,63,0,
3841,18943,10,18944,18975,168,0,229486327000139,118,101,114,115,105,111,110,0,3841,4,1,100,
20,10,18962,18992,168,0,210710254026,100,111,110,101,63,0,2,4097,18928,1793,19001,1,13,
11,10,1,18997,1793,19009,1,10,11,10,1,19005,1793,19017,1,32,11,10,1,19013,
2049,2298,22,22,10,18981,19034,168,0,6385195044,101,111,108,63,0,3841,18928,1793,19042,1,
13,11,10,1,19038,1793,19050,1,10,11,10,1,19046,2049,2255,22,10,19024,19068,168,
0,6954126150804,118,97,108,105,100,63,0,2,2049,104,2049,2812,10,19056,19089,168,0,249883998779477802,
99,104,101,99,107,45,101,111,102,0,2,1793,19096,1,-1,11,10,1,19092,1793,
19104,1,4,11,10,1,19100,2049,2255,22,1793,19114,2049,10931,10,1,19111,9,10,19074,
19126,168,0,5863258,98,115,0,2049,4212,1,2,2049,2675,1793,19138,2049,4160,3,10,1,
19134,9,2049,4160,3,10,19118,19159,168,0,7572242387256805,99,104,101,99,107,45,98,115,0,
2,1793,19166,1,8,11,10,1,19162,1793,19174,1,127,11,10,1,19170,2049,2255,22,
1793,19184,2049,19126,10,1,19181,9,10,19145,19199,168,0,210708806723,99,104,101,99,107,0,
2049,19089,2049,19159,10,19188,19219,168,0,249883994190734226,99,104,97,114,97,99,116,101,114,0,
2049,10864,2,2049,4134,10,19204,19237,168,0,6953366942559,98,117,102,102,101,114,0,1793,19247,
2049,18694,2049,4234,8,2049,4096,10,1,19239,2049,4260,10,19225,19268,168,0,8246863741238799215,114,101,
97,100,45,116,111,107,101,110,0,1793,19284,1793,19279,2049,19219,2049,19199,2049,18992,10,
1,19272,2049,2397,10,1,19270,2049,19237,2049,4587,10,19252,19302,168,0,210716150453,105,110,112,
117,116,0,2049,19268,2049,19068,10,19291,19320,168,0,229479082815460,112,114,111,99,101,115,115,
0,2049,18959,1793,19338,771,2049,19034,1793,19334,1,18943,2049,3931,10,1,19329,9,10,1,
19324,2049,2862,1,415,1,17,2049,66,10,18906,19357,180,19481,5861507,47,47,0,2049,15996,
1,18943,2049,3916,10,19349,19376,168,19481,6953343520347,98,97,110,110,101,114,0,2049,18975,2049,
4472,82,69,84,82,79,32,49,50,32,40,37,110,46,37,110,41,92,110,0,
1,19380,2049,8246,2049,10640,2049,10716,2049,1545,2049,10716,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,19416,2049,8246,2049,10640,10,19364,19462,168,19481,6953744547860,108,105,115,116,
101,110,0,3841,18918,1793,19469,2049,19376,10,1,19466,2049,74,2049,19302,2049,19320,1,19473,
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,19450,19521,156,0,229441520490121,83,111,117,114,99,101,
115,0,1,19758,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,20219,20372,168,0,6953711201841,107,110,111,119,110,63,0,2,1,20232,2049,9099,10,20360,
20389,168,0,210716136861,105,110,100,101,120,0,1,20232,4,2049,9416,1,20232,4,2049,9236,
10,20378,20412,168,0,6953974036516,114,101,99,111,114,100,0,2049,4500,2,1,20232,2049,3864,
3841,20232,1,20232,17,16,10,1793,20467,2049,15931,2049,20372,1793,20437,2049,20389,10,1,20434,
1793,20444,2049,20412,10,1,20441,2049,66,1793,20457,1,192,1,2,17,8,10,1,20450,
2049,2229,2049,1576,2049,186,16,10,1,20428,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,20161,20507,168,20469,229461403550098,
100,58,119,111,114,100,115,0,1793,20516,2049,190,2049,10640,2049,10610,10,1,20509,2049,
8491,10,20494,20539,168,20469,-3502157631813457253,100,58,119,111,114,100,115,45,119,105,116,104,0,
2049,1977,2049,5573,1793,20570,2049,190,2,2049,1977,2049,5286,1793,20559,2049,10640,2049,10610,10,
1,20554,1793,20565,3,10,1,20563,2049,66,10,1,20545,2049,8491,10,20521,20596,168,20469,
2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049,1977,
2049,5519,1793,20608,2049,10640,2049,10610,10,1,20603,1793,20614,3,10,1,20612,2049,66,10,
20521,20647,168,20469,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,20658,2049,190,2049,20596,10,1,
20653,2049,8491,10,0 };
0,0,0,0,0,0,0,0,0,0,19508,19661,168,0,6953711201841,107,110,111,119,110,
63,0,2,1,19521,2049,9099,10,19649,19678,168,0,210716136861,105,110,100,101,120,0,1,
19521,4,2049,9416,1,19521,4,2049,9236,10,19667,19701,168,0,6953974036516,114,101,99,111,114,
100,0,2049,4500,2,1,19521,2049,3864,3841,19521,1,19521,17,16,10,1793,19756,2049,15931,
2049,19661,1793,19726,2049,19678,10,1,19723,1793,19733,2049,19701,10,1,19730,2049,66,1793,19746,
1,192,1,2,17,8,10,1,19739,2049,2229,2049,1576,2049,186,16,10,1,19717,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,19450,19796,168,19758,229461403550098,100,58,119,111,114,100,115,0,1793,19805,2049,
190,2049,10640,2049,10610,10,1,19798,2049,8491,10,19783,19828,168,19758,-3502157631813457253,100,58,119,111,
114,100,115,45,119,105,116,104,0,2049,1977,2049,5573,1793,19859,2049,190,2,2049,1977,
2049,5286,1793,19848,2049,10640,2049,10610,10,1,19843,1793,19854,3,10,1,19852,2049,66,10,
1,19834,2049,8491,10,19810,19885,168,19758,2818131571306626127,100,105,115,112,108,97,121,45,105,102,
45,108,101,102,116,0,2,2049,1977,2049,5519,1793,19897,2049,10640,2049,10610,10,1,19892,
1793,19903,3,10,1,19901,2049,66,10,19810,19936,168,19758,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,19947,2049,190,2049,19885,10,1,19942,2049,8491,10,0 };