summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY9
-rw-r--r--INSTALL4
-rw-r--r--Makefile6
-rw-r--r--README4
-rw-r--r--clients/lib/Makefile8
-rw-r--r--clients/lib/iolib.c583
-rw-r--r--clients/lib/mathlib.c8
-rw-r--r--clients/lib/mathlib.h13
-rw-r--r--clients/lib/old/Makefile35
-rw-r--r--clients/lib/old/iolib.c618
-rw-r--r--clients/lib/old/lualib.h33
-rw-r--r--clients/lib/old/mathlib.c230
-rw-r--r--clients/lib/old/strlib.c276
-rw-r--r--clients/lib/strlib.c539
-rw-r--r--clients/lib/strlib.h13
-rw-r--r--clients/lua/Makefile2
-rw-r--r--clients/lua/lua.c107
-rw-r--r--config14
-rw-r--r--doc/refman.ps11163
-rw-r--r--include/lua.h6
-rw-r--r--include/lualib.h9
-rw-r--r--src/Makefile4
-rw-r--r--src/func.c2
-rw-r--r--src/hash.c46
-rw-r--r--src/inout.c98
-rw-r--r--src/inout.h3
-rw-r--r--src/lex.c213
-rw-r--r--src/lex.h4
-rw-r--r--src/lua.stx110
-rw-r--r--src/luac/dump.c47
-rw-r--r--src/luac/luac.c5
-rw-r--r--src/luac/print.c43
-rw-r--r--src/mem.c25
-rw-r--r--src/mem.h4
-rw-r--r--src/opcode.c277
-rw-r--r--src/opcode.h155
-rw-r--r--src/parser.c2253
-rw-r--r--src/parser.h57
-rw-r--r--src/table.c17
-rw-r--r--src/undump.c41
-rw-r--r--src/undump.h4
41 files changed, 11289 insertions, 5799 deletions
diff --git a/HISTORY b/HISTORY
index fb8d17c1..3f1e5d69 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,4 +1,11 @@
-Current version is 2.4 (version 2.3 was never publicly released)
+Current version is 2.5
+
+* Changes since version 2.4
+ + io and string libraries are now based on pattern matching;
+ the old libraries are still available for compatibility
+ + dofile and dostring can now return values (via return statement)
+ + better support for 16- and 64-bit machines
+ + expanded documentation, with more examples
* Changes since version 2.2
+ external compiler creates portable binary files that can be loaded faster
diff --git a/INSTALL b/INSTALL
index 94d004de..3d34379b 100644
--- a/INSTALL
+++ b/INSTALL
@@ -19,8 +19,8 @@
* Shared libraries
If you are running SunOs 4.x, type the following after "make" succeeds:
- ld -o lib/liblua.so.2.4 src/*.o
- ld -o lib/liblualib.so.2.4 clients/lib/*.o
+ ld -o lib/liblua.so.2.5 src/*.o
+ ld -o lib/liblualib.so.2.5 clients/lib/*.o
For AIX, the OpenGL clone Mesa includes a script for making shared libraries.
For other systems, please let us know how!
diff --git a/Makefile b/Makefile
index 2e5ac6e9..60153269 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,12 @@
# makefile for lua hierarchy
all co clean klean:
+ cd include; make $@
cd src; make $@
cd src/luac; make $@
- cd include; make $@
cd clients/lib; make $@
+ cd clients/lib/old; make $@
cd clients/lua; make $@
+
+old:
+ cd clients/lib/old; make $@
diff --git a/README b/README
index c446b605..1f124d66 100644
--- a/README
+++ b/README
@@ -18,8 +18,10 @@
The latest version of Lua is always available at the following locations:
In Brazil: ftp://ftp.icad.puc-rio.br/pub/lua/lua.tar.gz
In Canada: ftp://csg.uwaterloo.ca/pub/lhf/lua/lua.tar.gz
+ In Germany: ftp://ftp.uni-trier.de/pub/languages/lua/lua.tar.gz
+ In Greece: ftp://ftp.ntua.gr/pub/lang/lua/lua.tar.gz
Home page: http://www.inf.puc-rio.br/~roberto/lua.html
- The current version is 2.4.
+ The current version is 2.5.
* Legal matters
Lua is freely available for both academic and commercial purposes.
diff --git a/clients/lib/Makefile b/clients/lib/Makefile
index ffe2a63f..03888051 100644
--- a/clients/lib/Makefile
+++ b/clients/lib/Makefile
@@ -4,10 +4,10 @@ LUA= ../..
include $(LUA)/config
-EXTRA_DEFS= $(POPEN)
+EXTRA_DEFS= $(POPEN) $(NOSTRERROR)
OBJS= iolib.o mathlib.o strlib.o
-SRCS= iolib.c mathlib.c mathlib.h strlib.c strlib.h
+SRCS= iolib.c mathlib.c strlib.c
SLIB= $(LIB)/liblualib.a
@@ -19,8 +19,8 @@ all: $(SLIB)
dynamic: $(DLIB)
$(SLIB): $(OBJS)
- ar rcuv $@ $(OBJS)
- ranlib $(SLIB)
+ ar rcu $@ $(OBJS)
+ $(RANLIB) $(SLIB)
$(DLIB): $(OBJS)
ld -o $@ $(OBJS)
diff --git a/clients/lib/iolib.c b/clients/lib/iolib.c
index 9ed7e479..c2faf1c5 100644
--- a/clients/lib/iolib.c
+++ b/clients/lib/iolib.c
@@ -1,10 +1,3 @@
-/*
-** iolib.c
-** Input/output library to LUA
-*/
-
-char *rcs_iolib="$Id: iolib.c,v 1.44 1996/05/03 20:10:59 roberto Exp $";
-
#include <stdio.h>
#include <ctype.h>
#include <string.h>
@@ -16,7 +9,8 @@ char *rcs_iolib="$Id: iolib.c,v 1.44 1996/05/03 20:10:59 roberto Exp $";
#include "luadebug.h"
#include "lualib.h"
-static FILE *in=stdin, *out=stdout;
+
+FILE *lua_infile, *lua_outfile;
#ifdef POPEN
@@ -31,515 +25,203 @@ int pclose();
static void pushresult (int i)
{
if (i)
- lua_pushnumber (1);
- else
- lua_pushnil();
-}
-
-static void closeread (void)
-{
- if (in != stdin)
- {
- if (pclose(in) == -1)
- fclose(in);
- in = stdin;
+ lua_pushuserdata(NULL);
+ else {
+ lua_pushnil();
+#ifndef NOSTRERROR
+ lua_pushstring(strerror(errno));
+#else
+ lua_pushstring("system unable to define the error");
+#endif
}
}
-static void closewrite (void)
+
+static void closefile (FILE *f)
{
- if (out != stdout)
- {
- if (pclose(out) == -1)
- fclose(out);
- out = stdout;
- }
+ if (f == stdin || f == stdout)
+ return;
+ if (f == lua_infile)
+ lua_infile = stdin;
+ if (f == lua_outfile)
+ lua_outfile = stdout;
+ if (pclose(f) == -1)
+ fclose(f);
}
-/*
-** Open a file to read.
-** LUA interface:
-** status = readfrom (filename)
-** where:
-** status = 1 -> success
-** status = nil -> error
-*/
+
+
static void io_readfrom (void)
{
- if (lua_getparam (1) == LUA_NOOBJECT)
- { /* restore standart input */
- closeread();
- lua_pushnumber (1);
- }
- else
- {
- char *s = lua_check_string(1, "readfrom");
- FILE *fp = (*s == '|') ? popen(s+1, "r") : fopen(s, "r");
- if (fp == NULL)
- lua_pushnil();
- else
- {
- closeread();
- in = fp;
- lua_pushnumber (1);
- }
- }
+ lua_Object f = lua_getparam(1);
+ if (f == LUA_NOOBJECT)
+ closefile(lua_infile); /* restore standart input */
+ else if (lua_isuserdata(f))
+ lua_infile = lua_getuserdata(f);
+ else {
+ char *s = lua_check_string(1, "readfrom");
+ FILE *fp = (*s == '|') ? popen(s+1, "r") : fopen(s, "r");
+ if (fp)
+ lua_infile = fp;
+ else {
+ pushresult(0);
+ return;
+ }
+ }
+ lua_pushuserdata(lua_infile);
}
-/*
-** Open a file to write.
-** LUA interface:
-** status = writeto (filename)
-** where:
-** status = 1 -> success
-** status = nil -> error
-*/
static void io_writeto (void)
{
- if (lua_getparam (1) == LUA_NOOBJECT) /* restore standart output */
- {
- closewrite();
- lua_pushnumber (1);
- }
- else
- {
- char *s = lua_check_string(1, "writeto");
- FILE *fp = (*s == '|') ? popen(s+1,"w") : fopen(s,"w");
- if (fp == NULL)
- lua_pushnil();
- else
- {
- closewrite();
- out = fp;
- lua_pushnumber (1);
- }
- }
+ lua_Object f = lua_getparam(1);
+ if (f == LUA_NOOBJECT)
+ closefile(lua_outfile); /* restore standart output */
+ else if (lua_isuserdata(f))
+ lua_outfile = lua_getuserdata(f);
+ else {
+ char *s = lua_check_string(1, "writeto");
+ FILE *fp = (*s == '|') ? popen(s+1,"w") : fopen(s,"w");
+ if (fp)
+ lua_outfile = fp;
+ else {
+ pushresult(0);
+ return;
+ }
+ }
+ lua_pushuserdata(lua_outfile);
}
-/*
-** Open a file to write appended.
-** LUA interface:
-** status = appendto (filename)
-** where:
-** status = 1 -> success
-** status = nil -> error
-*/
static void io_appendto (void)
{
- char *s = lua_check_string(1, "appendto");
- FILE *fp = fopen (s, "a");
- if (fp == NULL)
- lua_pushnil();
- else
- {
- if (out != stdout) fclose (out);
- out = fp;
- lua_pushnumber(1);
- }
-}
-
-
-static char getformat (char *f, int *just, int *m, int *n)
-{
- int t;
- switch (*f++)
- {
- case 'q': case 'Q':
- case 's': case 'S':
- case 'i': case 'I':
- t = tolower(*(f-1));
- break;
- case 'f': case 'F': case 'g': case 'G': case 'e': case 'E':
- t = 'f';
- break;
- default:
- t = 0; /* to avoid compiler warnings */
- lua_arg_error("read/write (format)");
- }
- *just = (*f == '<' || *f == '>' || *f == '|') ? *f++ : '>';
- if (isdigit(*f))
- {
- *m = 0;
- while (isdigit(*f))
- *m = *m*10 + (*f++ - '0');
+ char *s = lua_check_string(1, "appendto");
+ FILE *fp = fopen (s, "a");
+ if (fp != NULL) {
+ lua_outfile = fp;
+ lua_pushuserdata(lua_outfile);
}
else
- *m = -1;
- if (*f == '.')
- {
- f++; /* skip point */
- *n = 0;
- while (isdigit(*f))
- *n = *n*10 + (*f++ - '0');
- }
- else
- *n = -1;
- return t;
+ pushresult(0);
}
-/*
-** Read a variable. On error put nil on stack.
-** LUA interface:
-** variable = read ([format])
-**
-** O formato pode ter um dos seguintes especificadores:
-**
-** s ou S -> para string
-** f ou F, g ou G, e ou E -> para reais
-** i ou I -> para inteiros
-**
-** Estes especificadores podem vir seguidos de numero que representa
-** o numero de campos a serem lidos.
-*/
-
-static int read_until_char (int del)
-{
- int c;
- while((c = fgetc(in)) != EOF && c != del)
- luaI_addchar(c);
- return c;
-}
-
-static void read_until_blank (void)
-{
- int c;
- while((c = fgetc(in)) != EOF && !isspace(c))
- luaI_addchar(c);
- if (c != EOF) ungetc(c,in);
-}
-
-static void read_m (int m)
-{
- int c;
- while (m-- && (c = fgetc(in)) != EOF)
- luaI_addchar(c);
-}
-
-
-static void read_free (void)
-{
- int c;
- while (isspace(c=fgetc(in)))
- ;
- if (c == EOF)
- {
- lua_pushnil();
- return;
- }
- if (c == '\"' || c == '\'')
- { /* string */
- c = read_until_char(c);
- if (c == EOF)
- lua_pushnil();
- else
- lua_pushstring(luaI_addchar(0));
- }
- else
- {
- double d;
- char dummy;
- char *s;
- luaI_addchar(c);
- read_until_blank();
- s = luaI_addchar(0);
- if (sscanf(s, "%lf %c", &d, &dummy) == 1)
- lua_pushnumber(d);
- else
- lua_pushstring(s);
- }
-}
+#define NEED_OTHER (EOF-1) /* just some flag different from EOF */
static void io_read (void)
{
- lua_Object o = lua_getparam (1);
- luaI_addchar(0); /* initialize buffer */
- if (o == LUA_NOOBJECT) /* free format */
- read_free();
- else /* formatted */
- {
- int m, dummy1, dummy2;
- switch (getformat(lua_check_string(1, "read"), &dummy1, &m, &dummy2))
- {
- case 's':
- {
- char *s;
- if (m < 0)
- read_until_blank();
- else
- read_m(m);
- s = luaI_addchar(0);
- if ((m >= 0 && strlen(s) == m) || (m < 0 && strlen(s) > 0))
- lua_pushstring(s);
- else
- lua_pushnil();
- break;
+ char *buff;
+ char *p = lua_opt_string(1, "[^\n]*{\n}", "read");
+ int inskip = 0; /* to control {skips} */
+ int c = NEED_OTHER;
+ luaI_addchar(0);
+ while (*p) {
+ if (*p == '{' || *p == '}') {
+ inskip = (*p == '{');
+ p++;
+ }
+ else {
+ char *ep = item_end(p); /* get what is next */
+ int m; /* match result */
+ if (c == NEED_OTHER) c = getc(lua_infile);
+ m = (c == EOF) ? 0 : singlematch((char)c, p);
+ if (m) {
+ if (!inskip) luaI_addchar(c);
+ c = NEED_OTHER;
}
-
- case 'i': /* can read as float, since it makes no difference to Lua */
- case 'f':
- {
- double d;
- int result;
- if (m < 0)
- result = fscanf(in, "%lf", &d);
- else
- {
- read_m(m);
- result = sscanf(luaI_addchar(0), "%lf", &d);
- }
- if (result == 1)
- lua_pushnumber(d);
- else
- lua_pushnil();
- break;
+ switch (*ep) {
+ case '*': /* repetition */
+ if (!m) p = ep+1; /* else stay in (repeat) the same item */
+ break;
+ case '?': /* optional */
+ p = ep+1; /* continues reading the pattern */
+ break;
+ default:
+ if (m) p = ep; /* continues reading the pattern */
+ else
+ goto break_while; /* pattern fails */
}
- default:
- lua_arg_error("read (format)");
}
- }
-}
-
-
-/*
-** Read characters until a given one. The delimiter is not read.
-*/
-static void io_readuntil (void)
-{
- int del, c;
- lua_Object p = lua_getparam(1);
- luaI_addchar(0); /* initialize buffer */
- if (p == LUA_NOOBJECT || lua_isnil(p))
- del = EOF;
- else
- del = *lua_check_string(1, "readuntil");
- c = read_until_char(del);
- if (c != EOF) ungetc(c,in);
- lua_pushstring(luaI_addchar(0));
-}
-
-
-/*
-** Write a variable. On error put 0 on stack, otherwise put 1.
-** LUA interface:
-** status = write (variable [,format])
-**
-** O formato pode ter um dos seguintes especificadores:
-**
-** s ou S -> para string
-** f ou F, g ou G, e ou E -> para reais
-** i ou I -> para inteiros
-**
-** Estes especificadores podem vir seguidos de:
-**
-** [?][m][.n]
-**
-** onde:
-** ? -> indica justificacao
-** < = esquerda
-** | = centro
-** > = direita (default)
-** m -> numero maximo de campos (se exceder estoura)
-** n -> indica precisao para
-** reais -> numero de casas decimais
-** inteiros -> numero minimo de digitos
-** string -> nao se aplica
-*/
-
-static int write_fill (int n, int c)
-{
- while (n--)
- if (fputc(c, out) == EOF)
- return 0;
- return 1;
-}
-
-static int write_string (char *s, int just, int m)
-{
- int status;
- int l = strlen(s);
- int pre; /* number of blanks before string */
- if (m < 0) m = l;
- else if (l > m)
- {
- write_fill(m, '*');
- return 0;
- }
- pre = (just == '<') ? 0 : (just == '>') ? m-l : (m-l)/2;
- status = write_fill(pre, ' ');
- status = status && fprintf(out, "%s", s) >= 0;
- status = status && write_fill(m-(l+pre), ' ');
- return status;
-}
-
-static int write_quoted (int just, int m)
-{
- luaI_addchar(0);
- luaI_addquoted(lua_check_string(1, "write"));
- return write_string(luaI_addchar(0), just, m);
-}
-
-static int write_float (int just, int m, int n)
-{
- char buffer[100];
- lua_Object p = lua_getparam(1);
- float number;
- if (!lua_isnumber(p)) return 0;
- number = lua_getnumber(p);
- if (n >= 0)
- sprintf(buffer, "%.*f", n, number);
- else
- sprintf(buffer, "%g", number);
- return write_string(buffer, just, m);
-}
-
-
-static int write_int (int just, int m, int n)
-{
- char buffer[100];
- lua_Object p = lua_getparam(1);
- int number;
- if (!lua_isnumber(p)) return 0;
- number = (int)lua_getnumber(p);
- if (n >= 0)
- sprintf(buffer, "%.*d", n, number);
- else
- sprintf(buffer, "%d", number);
- return write_string(buffer, just, m);
+ } break_while:
+ if (c >= 0) /* not EOF nor NEED_OTHER? */
+ ungetc(c, lua_infile);
+ buff = luaI_addchar(0);
+ if (*buff != 0 || *p == 0) /* read something or did not fail? */
+ lua_pushstring(buff);
}
static void io_write (void)
{
- int status = 0;
- if (lua_getparam (2) == LUA_NOOBJECT) /* free format */
- {
- lua_Object o1 = lua_getparam(1);
- int t = lua_type(o1);
- if (t == LUA_T_NUMBER)
- status = fprintf (out, "%g", lua_getnumber(o1)) >= 0;
- else if (t == LUA_T_STRING)
- status = fprintf (out, "%s", lua_getstring(o1)) >= 0;
- }
- else /* formated */
- {
- int just, m, n;
- switch (getformat(lua_check_string(2, "write"), &just, &m, &n))
- {
- case 's':
- {
- lua_Object p = lua_getparam(1);
- if (lua_isstring(p))
- status = write_string(lua_getstring(p), just, m);
- else
- status = 0;
- break;
- }
- case 'q':
- status = write_quoted(just, m);
- break;
- case 'f':
- status = write_float(just, m, n);
- break;
- case 'i':
- status = write_int(just, m, n);
- break;
- }
- }
- if (status)
- lua_pushnumber(status);
- else
- lua_pushnil();
+ int arg = 1;
+ int status = 1;
+ char *s;
+ while ((s = lua_opt_string(arg++, NULL, "write")) != NULL)
+ status = status && (fputs(s, lua_outfile) != EOF);
+ pushresult(status);
}
-/*
-** Execute a executable program using "system".
-** Return the result of execution.
-*/
+
static void io_execute (void)
{
lua_pushnumber(system(lua_check_string(1, "execute")));
}
-/*
-** Remove a file. On error return nil.
-*/
+
static void io_remove (void)
{
pushresult(remove(lua_check_string(1, "remove")) == 0);
}
+
static void io_rename (void)
{
- char *f1 = lua_check_string(1, "rename");
- char *f2 = lua_check_string(2, "rename");
- pushresult(rename(f1, f2) == 0);
+ pushresult(rename(lua_check_string(1, "rename"),
+ lua_check_string(2, "rename")) == 0);
}
+
static void io_tmpname (void)
{
lua_pushstring(tmpnam(NULL));
}
-static void io_errorno (void)
-{
-/* lua_pushstring(strerror(errno));*/
-}
-/*
-** To get a environment variable
-*/
static void io_getenv (void)
{
- char *env = getenv(lua_check_string(1, "getenv"));
- lua_pushstring(env); /* if NULL push nil */
+ lua_pushstring(getenv(lua_check_string(1, "getenv"))); /* if NULL push nil */
}
-/*
-** Return user formatted time stamp
-*/
+
static void io_date (void)
{
- time_t t;
- struct tm *tm;
- char *s;
- char b[BUFSIZ];
- if (lua_getparam(1) == LUA_NOOBJECT)
- s = "%c";
- else
- s = lua_check_string(1, "date");
- time(&t); tm = localtime(&t);
- if (strftime(b,sizeof(b),s,tm))
- lua_pushstring(b);
- else
- lua_error("invalid `date' format");
+ time_t t;
+ struct tm *tm;
+ char *s = lua_opt_string(1, "%c", "date");
+ char b[BUFSIZ];
+ time(&t); tm = localtime(&t);
+ if (strftime(b,sizeof(b),s,tm))
+ lua_pushstring(b);
+ else
+ lua_error("invalid `date' format");
}
-/*
-** To exit
-*/
+
static void io_exit (void)
{
- lua_Object o = lua_getparam(1);
- int code = lua_isnumber(o) ? (int)lua_getnumber(o) : 1;
- exit(code);
+ lua_Object o = lua_getparam(1);
+ exit(lua_isnumber(o) ? (int)lua_getnumber(o) : 1);
}
-/*
-** To debug a lua program. Start a dialog with the user, interpreting
- lua commands until an 'cont'.
-*/
+
static void io_debug (void)
{
- while (1)
- {
+ while (1) {
char buffer[250];
fprintf(stderr, "lua_debug> ");
if (fgets(buffer, sizeof(buffer), stdin) == 0) return;
- if (strcmp(buffer, "cont") == 0) return;
+ if (strcmp(buffer, "cont\n") == 0) return;
lua_dostring(buffer);
}
}
@@ -550,21 +232,18 @@ static void lua_printstack (FILE *f)
int level = 0;
lua_Object func;
fprintf(f, "Active Stack:\n");
- while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT)
- {
+ while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) {
char *name;
int currentline;
fprintf(f, "\t");
- switch (*lua_getobjname(func, &name))
- {
+ switch (*lua_getobjname(func, &name)) {
case 'g':
fprintf(f, "function %s", name);
break;
case 'f':
fprintf(f, "`%s' fallback", name);
break;
- default:
- {
+ default: {
char *filename;
int linedefined;
lua_funcinfo(func, &filename, &linedefined);
@@ -585,8 +264,7 @@ static void lua_printstack (FILE *f)
static void errorfb (void)
{
- lua_Object o = lua_getparam(1);
- char *s = lua_isstring(o) ? lua_getstring(o) : "(no messsage)";
+ char *s = lua_opt_string(1, "(no messsage)", NULL);
fprintf(stderr, "lua: %s\n", s);
lua_printstack(stderr);
}
@@ -597,13 +275,11 @@ static struct lua_reg iolib[] = {
{"writeto", io_writeto},
{"appendto", io_appendto},
{"read", io_read},
-{"readuntil",io_readuntil},
{"write", io_write},
{"execute", io_execute},
{"remove", io_remove},
{"rename", io_rename},
{"tmpname", io_tmpname},
-{"ioerror", io_errorno},
{"getenv", io_getenv},
{"date", io_date},
{"exit", io_exit},
@@ -613,6 +289,7 @@ static struct lua_reg iolib[] = {
void iolib_open (void)
{
+ lua_infile=stdin; lua_outfile=stdout;
luaI_openlib(iolib, (sizeof(iolib)/sizeof(iolib[0])));
lua_setfallback("error", errorfb);
}
diff --git a/clients/lib/mathlib.c b/clients/lib/mathlib.c
index 07081e48..d8f8dc13 100644
--- a/clients/lib/mathlib.c
+++ b/clients/lib/mathlib.c
@@ -3,7 +3,7 @@
** Mathematics library to LUA
*/
-char *rcs_mathlib="$Id: mathlib.c,v 1.17 1996/04/30 21:13:55 roberto Exp $";
+char *rcs_mathlib="$Id: mathlib.c,v 1.18 1996/08/01 14:55:33 roberto Exp $";
#include <stdlib.h>
#include <math.h>
@@ -92,9 +92,9 @@ static void math_floor (void)
static void math_mod (void)
{
- int d1 = (int)lua_check_number(1, "mod");
- int d2 = (int)lua_check_number(2, "mod");
- lua_pushnumber (d1%d2);
+ float x = lua_check_number(1, "mod");
+ float y = lua_check_number(2, "mod");
+ lua_pushnumber(fmod(x, y));
}
diff --git a/clients/lib/mathlib.h b/clients/lib/mathlib.h
deleted file mode 100644
index 7630144a..00000000
--- a/clients/lib/mathlib.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-** Math library to LUA
-** TeCGraf - PUC-Rio
-** $Id: mathlib.h,v 1.1 1993/12/17 18:41:19 celes Stab $
-*/
-
-
-#ifndef strlib_h
-
-void mathlib_open (void);
-
-#endif
-
diff --git a/clients/lib/old/Makefile b/clients/lib/old/Makefile
new file mode 100644
index 00000000..b9668617
--- /dev/null
+++ b/clients/lib/old/Makefile
@@ -0,0 +1,35 @@
+# makefile for lualib
+
+LUA= ../../..
+
+include $(LUA)/config
+
+EXTRA_DEFS= $(POPEN) $(NOSTRERROR)
+
+OBJS= iolib.o mathlib.o strlib.o
+SRCS= iolib.c mathlib.c strlib.c
+
+SLIB= $(LIB)/liboldlualib.a
+
+# dynamic libraries only work for SunOs
+DLIB= $(LIB)/liboldlualib.so.$(VERSION)
+
+all: $(SLIB)
+
+dynamic: $(DLIB)
+
+$(SLIB): $(OBJS)
+ ar rcu $@ $(OBJS)
+ $(RANLIB) $(SLIB)
+
+$(DLIB): $(OBJS)
+ ld -o $@ $(OBJS)
+
+clean:
+ rm -f $(OBJS) $(SLIB) $(DLIB)
+
+co:
+ co -f -M -rv2_4 $(SRCS)
+
+klean: clean
+ rm -f $(SRCS)
diff --git a/clients/lib/old/iolib.c b/clients/lib/old/iolib.c
new file mode 100644
index 00000000..9ed7e479
--- /dev/null
+++ b/clients/lib/old/iolib.c
@@ -0,0 +1,618 @@
+/*
+** iolib.c
+** Input/output library to LUA
+*/
+
+char *rcs_iolib="$Id: iolib.c,v 1.44 1996/05/03 20:10:59 roberto Exp $";
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <time.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#include "lua.h"
+#include "luadebug.h"
+#include "lualib.h"
+
+static FILE *in=stdin, *out=stdout;
+
+
+#ifdef POPEN
+FILE *popen();
+int pclose();
+#else
+#define popen(x,y) NULL /* that is, popen always fails */
+#define pclose(x) (-1)
+#endif
+
+
+static void pushresult (int i)
+{
+ if (i)
+ lua_pushnumber (1);
+ else
+ lua_pushnil();
+}
+
+static void closeread (void)
+{
+ if (in != stdin)
+ {
+ if (pclose(in) == -1)
+ fclose(in);
+ in = stdin;
+ }
+}
+
+static void closewrite (void)
+{
+ if (out != stdout)
+ {
+ if (pclose(out) == -1)
+ fclose(out);
+ out = stdout;
+ }
+}
+
+/*
+** Open a file to read.
+** LUA interface:
+** status = readfrom (filename)
+** where:
+** status = 1 -> success
+** status = nil -> error
+*/
+static void io_readfrom (void)
+{
+ if (lua_getparam (1) == LUA_NOOBJECT)
+ { /* restore standart input */
+ closeread();
+ lua_pushnumber (1);
+ }
+ else
+ {
+ char *s = lua_check_string(1, "readfrom");
+ FILE *fp = (*s == '|') ? popen(s+1, "r") : fopen(s, "r");
+ if (fp == NULL)
+ lua_pushnil();
+ else
+ {
+ closeread();
+ in = fp;
+ lua_pushnumber (1);
+ }
+ }
+}
+
+
+/*
+** Open a file to write.
+** LUA interface:
+** status = writeto (filename)
+** where:
+** status = 1 -> success
+** status = nil -> error
+*/
+static void io_writeto (void)
+{
+ if (lua_getparam (1) == LUA_NOOBJECT) /* restore standart output */
+ {
+ closewrite();
+ lua_pushnumber (1);
+ }
+ else
+ {
+ char *s = lua_check_string(1, "writeto");
+ FILE *fp = (*s == '|') ? popen(s+1,"w") : fopen(s,"w");
+ if (fp == NULL)
+ lua_pushnil();
+ else
+ {
+ closewrite();
+ out = fp;
+ lua_pushnumber (1);
+ }
+ }
+}
+
+
+/*
+** Open a file to write appended.
+** LUA interface:
+** status = appendto (filename)
+** where:
+** status = 1 -> success
+** status = nil -> error
+*/
+static void io_appendto (void)
+{
+ char *s = lua_check_string(1, "appendto");
+ FILE *fp = fopen (s, "a");
+ if (fp == NULL)
+ lua_pushnil();
+ else
+ {
+ if (out != stdout) fclose (out);
+ out = fp;
+ lua_pushnumber(1);
+ }
+}
+
+
+static char getformat (char *f, int *just, int *m, int *n)
+{
+ int t;
+ switch (*f++)
+ {
+ case 'q': case 'Q':
+ case 's': case 'S':
+ case 'i': case 'I':
+ t = tolower(*(f-1));
+ break;
+ case 'f': case 'F': case 'g': case 'G': case 'e': case 'E':
+ t = 'f';
+ break;
+ default:
+ t = 0; /* to avoid compiler warnings */
+ lua_arg_error("read/write (format)");
+ }
+ *just = (*f == '<' || *f == '>' || *f == '|') ? *f++ : '>';
+ if (isdigit(*f))
+ {
+ *m = 0;
+ while (isdigit(*f))
+ *m = *m*10 + (*f++ - '0');
+ }
+ else
+ *m = -1;
+ if (*f == '.')
+ {
+ f++; /* skip point */
+ *n = 0;
+ while (isdigit(*f))
+ *n = *n*10 + (*f++ - '0');
+ }
+ else
+ *n = -1;
+ return t;
+}
+
+
+/*
+** Read a variable. On error put nil on stack.
+** LUA interface:
+** variable = read ([format])
+**
+** O formato pode ter um dos seguintes especificadores:
+**
+** s ou S -> para string
+** f ou F, g ou G, e ou E -> para reais
+** i ou I -> para inteiros
+**
+** Estes especificadores podem vir seguidos de numero que representa
+** o numero de campos a serem lidos.
+*/
+
+static int read_until_char (int del)
+{
+ int c;
+ while((c = fgetc(in)) != EOF && c != del)
+ luaI_addchar(c);
+ return c;
+}
+
+static void read_until_blank (void)
+{
+ int c;
+ while((c = fgetc(in)) != EOF && !isspace(c))
+ luaI_addchar(c);
+ if (c != EOF) ungetc(c,in);
+}
+
+static void read_m (int m)
+{
+ int c;
+ while (m-- && (c = fgetc(in)) != EOF)
+ luaI_addchar(c);
+}
+
+
+static void read_free (void)
+{
+ int c;
+ while (isspace(c=fgetc(in)))
+ ;
+ if (c == EOF)
+ {
+ lua_pushnil();
+ return;
+ }
+ if (c == '\"' || c == '\'')
+ { /* string */
+ c = read_until_char(c);
+ if (c == EOF)
+ lua_pushnil();
+ else
+ lua_pushstring(luaI_addchar(0));
+ }
+ else
+ {
+ double d;
+ char dummy;
+ char *s;
+ luaI_addchar(c);
+ read_until_blank();
+ s = luaI_addchar(0);
+ if (sscanf(s, "%lf %c", &d, &dummy) == 1)
+ lua_pushnumber(d);
+ else
+ lua_pushstring(s);
+ }
+}
+
+static void io_read (void)
+{
+ lua_Object o = lua_getparam (1);
+ luaI_addchar(0); /* initialize buffer */
+ if (o == LUA_NOOBJECT) /* free format */
+ read_free();
+ else /* formatted */
+ {
+ int m, dummy1, dummy2;
+ switch (getformat(lua_check_string(1, "read"), &dummy1, &m, &dummy2))
+ {
+ case 's':
+ {
+ char *s;
+ if (m < 0)
+ read_until_blank();
+ else
+ read_m(m);
+ s = luaI_addchar(0);
+ if ((m >= 0 && strlen(s) == m) || (m < 0 && strlen(s) > 0))
+ lua_pushstring(s);
+ else
+ lua_pushnil();
+ break;
+ }
+
+ case 'i': /* can read as float, since it makes no difference to Lua */
+ case 'f':
+ {
+ double d;
+ int result;
+ if (m < 0)
+ result = fscanf(in, "%lf", &d);
+ else
+ {
+ read_m(m);
+ result = sscanf(luaI_addchar(0), "%lf", &d);
+ }
+ if (result == 1)
+ lua_pushnumber(d);
+ else
+ lua_pushnil();
+ break;
+ }
+ default:
+ lua_arg_error("read (format)");
+ }
+ }
+}
+
+
+/*
+** Read characters until a given one. The delimiter is not read.
+*/
+static void io_readuntil (void)
+{
+ int del, c;
+ lua_Object p = lua_getparam(1);
+ luaI_addchar(0); /* initialize buffer */
+ if (p == LUA_NOOBJECT || lua_isnil(p))
+ del = EOF;
+ else
+ del = *lua_check_string(1, "readuntil");
+ c = read_until_char(del);
+ if (c != EOF) ungetc(c,in);
+ lua_pushstring(luaI_addchar(0));
+}
+
+
+/*
+** Write a variable. On error put 0 on stack, otherwise put 1.
+** LUA interface:
+** status = write (variable [,format])
+**
+** O formato pode ter um dos seguintes especificadores:
+**
+** s ou S -> para string
+** f ou F, g ou G, e ou E -> para reais
+** i ou I -> para inteiros
+**
+** Estes especificadores podem vir seguidos de:
+**
+** [?][m][.n]
+**
+** onde:
+** ? -> indica justificacao
+** < = esquerda
+** | = centro
+** > = direita (default)
+** m -> numero maximo de campos (se exceder estoura)
+** n -> indica precisao para
+** reais -> numero de casas decimais
+** inteiros -> numero minimo de digitos
+** string -> nao se aplica
+*/
+
+static int write_fill (int n, int c)
+{
+ while (n--)
+ if (fputc(c, out) == EOF)
+ return 0;
+ return 1;
+}
+
+static int write_string (char *s, int just, int m)
+{
+ int status;
+ int l = strlen(s);
+ int pre; /* number of blanks before string */
+ if (m < 0) m = l;
+ else if (l > m)
+ {
+ write_fill(m, '*');
+ return 0;
+ }
+ pre = (just == '<') ? 0 : (just == '>') ? m-l : (m-l)/2;
+ status = write_fill(pre, ' ');
+ status = status && fprintf(out, "%s", s) >= 0;
+ status = status && write_fill(m-(l+pre), ' ');
+ return status;
+}
+
+static int write_quoted (int just, int m)
+{
+ luaI_addchar(0);
+ luaI_addquoted(lua_check_string(1, "write"));
+ return write_string(luaI_addchar(0), just, m);
+}
+
+static int write_float (int just, int m, int n)
+{
+ char buffer[100];
+ lua_Object p = lua_getparam(1);
+ float number;
+ if (!lua_isnumber(p)) return 0;
+ number = lua_getnumber(p);
+ if (n >= 0)
+ sprintf(buffer, "%.*f", n, number);
+ else
+ sprintf(buffer, "%g", number);
+ return write_string(buffer, just, m);
+}
+
+
+static int write_int (int just, int m, int n)
+{
+ char buffer[100];
+ lua_Object p = lua_getparam(1);
+ int number;
+ if (!lua_isnumber(p)) return 0;
+ number = (int)lua_getnumber(p);
+ if (n >= 0)
+ sprintf(buffer, "%.*d", n, number);
+ else
+ sprintf(buffer, "%d", number);
+ return write_string(buffer, just, m);
+}
+
+
+static void io_write (void)
+{
+ int status = 0;
+ if (lua_getparam (2) == LUA_NOOBJECT) /* free format */
+ {
+ lua_Object o1 = lua_getparam(1);
+ int t = lua_type(o1);
+ if (t == LUA_T_NUMBER)
+ status = fprintf (out, "%g", lua_getnumber(o1)) >= 0;
+ else if (t == LUA_T_STRING)
+ status = fprintf (out, "%s", lua_getstring(o1)) >= 0;
+ }
+ else /* formated */
+ {
+ int just, m, n;
+ switch (getformat(lua_check_string(2, "write"), &just, &m, &n))
+ {
+ case 's':
+ {
+ lua_Object p = lua_getparam(1);
+ if (lua_isstring(p))
+ status = write_string(lua_getstring(p), just, m);
+ else
+ status = 0;
+ break;
+ }
+ case 'q':
+ status = write_quoted(just, m);
+ break;
+ case 'f':
+ status = write_float(just, m, n);
+ break;
+ case 'i':
+ status = write_int(just, m, n);
+ break;
+ }
+ }
+ if (status)
+ lua_pushnumber(status);
+ else
+ lua_pushnil();
+}
+
+/*
+** Execute a executable program using "system".
+** Return the result of execution.
+*/
+static void io_execute (void)
+{
+ lua_pushnumber(system(lua_check_string(1, "execute")));
+}
+
+/*
+** Remove a file. On error return nil.
+*/
+static void io_remove (void)
+{
+ pushresult(remove(lua_check_string(1, "remove")) == 0);
+}
+
+static void io_rename (void)
+{
+ char *f1 = lua_check_string(1, "rename");
+ char *f2 = lua_check_string(2, "rename");
+ pushresult(rename(f1, f2) == 0);
+}
+
+static void io_tmpname (void)
+{
+ lua_pushstring(tmpnam(NULL));
+}
+
+static void io_errorno (void)
+{
+/* lua_pushstring(strerror(errno));*/
+}
+
+
+/*
+** To get a environment variable
+*/
+static void io_getenv (void)
+{
+ char *env = getenv(lua_check_string(1, "getenv"));
+ lua_pushstring(env); /* if NULL push nil */
+}
+
+/*
+** Return user formatted time stamp
+*/
+static void io_date (void)
+{
+ time_t t;
+ struct tm *tm;
+ char *s;
+ char b[BUFSIZ];
+ if (lua_getparam(1) == LUA_NOOBJECT)
+ s = "%c";
+ else
+ s = lua_check_string(1, "date");
+ time(&t); tm = localtime(&t);
+ if (strftime(b,sizeof(b),s,tm))
+ lua_pushstring(b);
+ else
+ lua_error("invalid `date' format");
+}
+
+/*
+** To exit
+*/
+static void io_exit (void)
+{
+ lua_Object o = lua_getparam(1);
+ int code = lua_isnumber(o) ? (int)lua_getnumber(o) : 1;
+ exit(code);
+}
+
+/*
+** To debug a lua program. Start a dialog with the user, interpreting
+ lua commands until an 'cont'.
+*/
+static void io_debug (void)
+{
+ while (1)
+ {
+ char buffer[250];
+ fprintf(stderr, "lua_debug> ");
+ if (fgets(buffer, sizeof(buffer), stdin) == 0) return;
+ if (strcmp(buffer, "cont") == 0) return;
+ lua_dostring(buffer);
+ }
+}
+
+
+static void lua_printstack (FILE *f)
+{
+ int level = 0;
+ lua_Object func;
+ fprintf(f, "Active Stack:\n");
+ while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT)
+ {
+ char *name;
+ int currentline;
+ fprintf(f, "\t");
+ switch (*lua_getobjname(func, &name))
+ {
+ case 'g':
+ fprintf(f, "function %s", name);
+ break;
+ case 'f':
+ fprintf(f, "`%s' fallback", name);
+ break;
+ default:
+ {
+ char *filename;
+ int linedefined;
+ lua_funcinfo(func, &filename, &linedefined);
+ if (linedefined == 0)
+ fprintf(f, "main of %s", filename);
+ else if (linedefined < 0)
+ fprintf(f, "%s", filename);
+ else
+ fprintf(f, "function (%s:%d)", filename, linedefined);
+ }
+ }
+ if ((currentline = lua_currentline(func)) > 0)
+ fprintf(f, " at line %d", currentline);
+ fprintf(f, "\n");
+ }
+}
+
+
+static void errorfb (void)
+{
+ lua_Object o = lua_getparam(1);
+ char *s = lua_isstring(o) ? lua_getstring(o) : "(no messsage)";
+ fprintf(stderr, "lua: %s\n", s);
+ lua_printstack(stderr);
+}
+
+
+static struct lua_reg iolib[] = {
+{"readfrom", io_readfrom},
+{"writeto", io_writeto},
+{"appendto", io_appendto},
+{"read", io_read},
+{"readuntil",io_readuntil},
+{"write", io_write},
+{"execute", io_execute},
+{"remove", io_remove},
+{"rename", io_rename},
+{"tmpname", io_tmpname},
+{"ioerror", io_errorno},
+{"getenv", io_getenv},
+{"date", io_date},
+{"exit", io_exit},
+{"debug", io_debug},
+{"print_stack", errorfb}
+};
+
+void iolib_open (void)
+{
+ luaI_openlib(iolib, (sizeof(iolib)/sizeof(iolib[0])));
+ lua_setfallback("error", errorfb);
+}
diff --git a/clients/lib/old/lualib.h b/clients/lib/old/lualib.h
new file mode 100644
index 00000000..6005d7c2
--- /dev/null
+++ b/clients/lib/old/lualib.h
@@ -0,0 +1,33 @@
+/*
+** Libraries to be used in LUA programs
+** Grupo de Tecnologia em Computacao Grafica
+** TeCGraf - PUC-Rio
+** $Id: lualib.h,v 1.8 1996/04/30 21:13:55 roberto Exp $
+*/
+
+#ifndef lualib_h
+#define lualib_h
+
+#include "lua.h"
+
+void iolib_open (void);
+void strlib_open (void);
+void mathlib_open (void);
+
+
+/* auxiliar functions (private) */
+
+struct lua_reg {
+ char *name;
+ lua_CFunction func;
+};
+
+void luaI_openlib (struct lua_reg *l, int n);
+void lua_arg_error(char *funcname);
+char *lua_check_string (int numArg, char *funcname);
+double lua_check_number (int numArg, char *funcname);
+char *luaI_addchar (int c);
+void luaI_addquoted (char *s);
+
+#endif
+
diff --git a/clients/lib/old/mathlib.c b/clients/lib/old/mathlib.c
new file mode 100644
index 00000000..07081e48
--- /dev/null
+++ b/clients/lib/old/mathlib.c
@@ -0,0 +1,230 @@
+/*
+** mathlib.c
+** Mathematics library to LUA
+*/
+
+char *rcs_mathlib="$Id: mathlib.c,v 1.17 1996/04/30 21:13:55 roberto Exp $";
+
+#include <stdlib.h>
+#include <math.h>
+
+#include "lualib.h"
+#include "lua.h"
+
+#ifndef PI
+#define PI 3.14159265358979323846
+#endif
+#define TODEGREE(a) ((a)*180.0/PI)
+#define TORAD(a) ((a)*PI/180.0)
+
+static void math_abs (void)
+{
+ double d = lua_check_number(1, "abs");
+ if (d < 0) d = -d;
+ lua_pushnumber (d);
+}
+
+
+static void math_sin (void)
+{
+ double d = lua_check_number(1, "sin");
+ lua_pushnumber (sin(TORAD(d)));
+}
+
+
+
+static void math_cos (void)
+{
+ double d = lua_check_number(1, "cos");
+ lua_pushnumber (cos(TORAD(d)));
+}
+
+
+
+static void math_tan (void)
+{
+ double d = lua_check_number(1, "tan");
+ lua_pushnumber (tan(TORAD(d)));
+}
+
+
+static void math_asin (void)
+{
+ double d = lua_check_number(1, "asin");
+ lua_pushnumber (TODEGREE(asin(d)));
+}
+
+
+static void math_acos (void)
+{
+ double d = lua_check_number(1, "acos");
+ lua_pushnumber (TODEGREE(acos(d)));
+}
+
+
+static void math_atan (void)
+{
+ double d = lua_check_number(1, "atan");
+ lua_pushnumber (TODEGREE(atan(d)));
+}
+
+
+static void math_atan2 (void)
+{
+ double d1 = lua_check_number(1, "atan2");
+ double d2 = lua_check_number(2, "atan2");
+ lua_pushnumber (TODEGREE(atan2(d1, d2)));
+}
+
+
+static void math_ceil (void)
+{
+ double d = lua_check_number(1, "ceil");
+ lua_pushnumber (ceil(d));
+}
+
+
+static void math_floor (void)
+{
+ double d = lua_check_number(1, "floor");
+ lua_pushnumber (floor(d));
+}
+
+static void math_mod (void)
+{
+ int d1 = (int)lua_check_number(1, "mod");
+ int d2 = (int)lua_check_number(2, "mod");
+ lua_pushnumber (d1%d2);
+}
+
+
+static void math_sqrt (void)
+{
+ double d = lua_check_number(1, "sqrt");
+ lua_pushnumber (sqrt(d));
+}
+
+static int old_pow;
+
+static void math_pow (void)
+{
+ lua_Object o1 = lua_getparam (1);
+ lua_Object o2 = lua_getparam (2);
+ lua_Object op = lua_getparam(3);
+ if (!lua_isnumber(o1) || !lua_isnumber(o2) || *(lua_getstring(op)) != 'p')
+ {
+ lua_Object old = lua_getref(old_pow);
+ lua_pushobject(o1);
+ lua_pushobject(o2);
+ lua_pushobject(op);
+ if (lua_callfunction(old) != 0)
+ lua_error(NULL);
+ }
+ else
+ {
+ double d1 = lua_getnumber(o1);
+ double d2 = lua_getnumber(o2);
+ lua_pushnumber (pow(d1,d2));
+ }
+}
+
+static void math_min (void)
+{
+ int i=1;
+ double dmin = lua_check_number(i, "min");
+ while (lua_getparam(++i) != LUA_NOOBJECT)
+ {
+ double d = lua_check_number(i, "min");
+ if (d < dmin) dmin = d;
+ }
+ lua_pushnumber (dmin);
+}
+
+static void math_max (void)
+{
+ int i=1;
+ double dmax = lua_check_number(i, "max");
+ while (lua_getparam(++i) != LUA_NOOBJECT)
+ {
+ double d = lua_check_number(i, "max");
+ if (d > dmax) dmax = d;
+ }
+ lua_pushnumber (dmax);
+}
+
+static void math_log (void)
+{
+ double d = lua_check_number(1, "log");
+ lua_pushnumber (log(d));
+}
+
+
+static void math_log10 (void)
+{
+ double d = lua_check_number(1, "log10");
+ lua_pushnumber (log10(d));
+}
+
+
+static void math_exp (void)
+{
+ double d = lua_check_number(1, "exp");
+ lua_pushnumber (exp(d));
+}
+
+static void math_deg (void)
+{
+ float d = lua_check_number(1, "deg");
+ lua_pushnumber (d*180./PI);
+}
+
+static void math_rad (void)
+{
+ float d = lua_check_number(1, "rad");
+ lua_pushnumber (d/180.*PI);
+}
+
+static void math_random (void)
+{
+ lua_pushnumber((double)(rand()%RAND_MAX) / (double)RAND_MAX);
+}
+
+static void math_randomseed (void)
+{
+ srand(lua_check_number(1, "randomseed"));
+}
+
+
+static struct lua_reg mathlib[] = {
+{"abs", math_abs},
+{"sin", math_sin},
+{"cos", math_cos},
+{"tan", math_tan},
+{"asin", math_asin},
+{"acos", math_acos},
+{"atan", math_atan},
+{"atan2", math_atan2},
+{"ceil", math_ceil},
+{"floor", math_floor},
+{"mod", math_mod},
+{"sqrt", math_sqrt},
+{"min", math_min},
+{"max", math_max},
+{"log", math_log},
+{"log10", math_log10},
+{"exp", math_exp},
+{"deg", math_deg},
+{"rad", math_rad},
+{"random", math_random},
+{"randomseed", math_randomseed}
+};
+
+/*
+** Open math library
+*/
+void mathlib_open (void)
+{
+ luaI_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0])));
+ old_pow = lua_refobject(lua_setfallback("arith", math_pow), 1);
+}
+
diff --git a/clients/lib/old/strlib.c b/clients/lib/old/strlib.c
new file mode 100644
index 00000000..6a99871c
--- /dev/null
+++ b/clients/lib/old/strlib.c
@@ -0,0 +1,276 @@
+/*
+** strlib.c
+** String library to LUA
+*/
+
+char *rcs_strlib="$Id: strlib.c,v 1.23 1996/04/30 21:13:55 roberto Exp $";
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <limits.h>
+
+#include "lua.h"
+#include "lualib.h"
+
+
+void lua_arg_error(char *funcname)
+{
+ char buff[100];
+ sprintf(buff, "incorrect arguments to function `%s'", funcname);
+ lua_error(buff);
+}
+
+char *lua_check_string (int numArg, char *funcname)
+{
+ lua_Object o = lua_getparam(numArg);
+ if (!lua_isstring(o))
+ lua_arg_error(funcname);
+ return lua_getstring(o);
+}
+
+double lua_check_number (int numArg, char *funcname)
+{
+ lua_Object o = lua_getparam(numArg);
+ if (!lua_isnumber(o))
+ lua_arg_error(funcname);
+ return lua_getnumber(o);
+}
+
+static int lua_opt_number (int numArg, int def, char *funcname)
+{
+ return (lua_getparam(numArg) == LUA_NOOBJECT) ? def :
+ (int)lua_check_number(numArg, funcname);
+}
+
+char *luaI_addchar (int c)
+{
+ static char *buff = NULL;
+ static int max = 0;
+ static int n = 0;
+ if (n >= max)
+ {
+ if (max == 0)
+ {
+ max = 100;
+ buff = (char *)malloc(max);
+ }
+ else
+ {
+ max *= 2;
+ buff = (char *)realloc(buff, max);
+ }
+ if (buff == NULL)
+ lua_error("memory overflow");
+ }
+ buff[n++] = c;
+ if (c == 0)
+ n = 0; /* prepare for next string */
+ return buff;
+}
+
+
+/*
+** Return the position of the first caracter of a substring into a string
+** LUA interface:
+** n = strfind (string, substring, init, end)
+*/
+static void str_find (void)
+{
+ char *s1 = lua_check_string(1, "strfind");
+ char *s2 = lua_check_string(2, "strfind");
+ int init = lua_opt_number(3, 1, "strfind") - 1;
+ char *f = (init>=0 && init<=strlen(s1)) ? strstr(s1+init,s2) : NULL;
+ if (f != NULL)
+ {
+ int pos = f-s1+1;
+ if (lua_opt_number(4, INT_MAX, "strfind") >= pos+strlen(s2)-1)
+ lua_pushnumber (pos);
+ else
+ lua_pushnil();
+ }
+ else
+ lua_pushnil();
+}
+
+/*
+** Return the string length
+** LUA interface:
+** n = strlen (string)
+*/
+static void str_len (void)
+{
+ char *s = lua_check_string(1, "strlen");
+ lua_pushnumber(strlen(s));
+}
+
+
+/*
+** Return the substring of a string, from start to end
+** LUA interface:
+** substring = strsub (string, start, end)
+*/
+static void str_sub (void)
+{
+ char *s = lua_check_string(1, "strsub");
+ int start = (int)lua_check_number(2, "strsub");
+ int end = lua_opt_number(3, strlen(s), "strsub");
+ if (end < start || start < 1 || end > strlen(s))
+ lua_pushliteral("");
+ else
+ {
+ luaI_addchar(0);
+ while (start <= end)
+ luaI_addchar(s[start++ - 1]);
+ lua_pushstring (luaI_addchar(0));
+ }
+}
+
+/*
+** Convert a string to lower case.
+** LUA interface:
+** lowercase = strlower (string)
+*/
+static void str_lower (void)
+{
+ char *s = lua_check_string(1, "strlower");
+ luaI_addchar(0);
+ while (*s)
+ luaI_addchar(tolower(*s++));
+ lua_pushstring(luaI_addchar(0));
+}
+
+
+/*
+** Convert a string to upper case.
+** LUA interface:
+** uppercase = strupper (string)
+*/
+static void str_upper (void)
+{
+ char *s = lua_check_string(1, "strupper");
+ luaI_addchar(0);
+ while (*s)
+ luaI_addchar(toupper(*s++));
+ lua_pushstring(luaI_addchar(0));
+}
+
+/*
+** get ascii value of a character in a string
+*/
+static void str_ascii (void)
+{
+ char *s = lua_check_string(1, "ascii");
+ int pos = lua_opt_number(2, 1, "ascii") - 1;
+ if (pos<0 || pos>=strlen(s))
+ lua_arg_error("ascii");
+ lua_pushnumber(s[pos]);
+}
+
+void luaI_addquoted (char *s)
+{
+ luaI_addchar('"');
+ for (; *s; s++)
+ {
+ if (*s == '"' || *s == '\\' || *s == '\n')
+ luaI_addchar('\\');
+ luaI_addchar(*s);
+ }
+ luaI_addchar('"');
+}
+
+#define MAX_CONVERTION 2000
+#define MAX_FORMAT 50
+
+static void str_format (void)
+{
+ int arg = 1;
+ char *strfrmt = lua_check_string(arg++, "format");
+ luaI_addchar(0); /* initialize */
+ while (*strfrmt)
+ {
+ if (*strfrmt != '%')
+ luaI_addchar(*strfrmt++);
+ else if (*++strfrmt == '%')
+ luaI_addchar(*strfrmt++); /* %% */
+ else
+ { /* format item */
+ char form[MAX_FORMAT]; /* store the format ('%...') */
+ char buff[MAX_CONVERTION]; /* store the formated value */
+ int size = 0;
+ int i = 0;
+ form[i++] = '%';
+ form[i] = *strfrmt++;
+ while (!isalpha(form[i]))
+ {
+ if (isdigit(form[i]))
+ {
+ size = size*10 + form[i]-'0';
+ if (size >= MAX_CONVERTION)
+ lua_error("format size/precision too long in function `format'");
+ }
+ else if (form[i] == '.')
+ size = 0; /* re-start */
+ if (++i >= MAX_FORMAT)
+ lua_error("bad format in function `format'");
+ form[i] = *strfrmt++;
+ }
+ form[i+1] = 0; /* ends string */
+ switch (form[i])
+ {
+ case 'q':
+ luaI_addquoted(lua_check_string(arg++, "format"));
+ buff[0] = '\0'; /* addchar already done */
+ break;
+ case 's':
+ {
+ char *s = lua_check_string(arg++, "format");
+ if (strlen(s) >= MAX_CONVERTION)
+ lua_error("string argument too long in function `format'");
+ sprintf(buff, form, s);
+ break;
+ }
+ case 'c': case 'd': case 'i': case 'o':
+ case 'u': case 'x': case 'X':
+ sprintf(buff, form, (int)lua_check_number(arg++, "format"));
+ break;
+ case 'e': case 'E': case 'f': case 'g':
+ sprintf(buff, form, lua_check_number(arg++, "format"));
+ break;
+ default: /* also treat cases 'pnLlh' */
+ lua_error("invalid format option in function `format'");
+ }
+ for (i=0; buff[i]; i++) /* move formated value to result */
+ luaI_addchar(buff[i]);
+ }
+ }
+ lua_pushstring(luaI_addchar(0)); /* push the result */
+}
+
+
+void luaI_openlib (struct lua_reg *l, int n)
+{
+ int i;
+ for (i=0; i<n; i++)
+ lua_register(l[i].name, l[i].func);
+}
+
+static struct lua_reg strlib[] = {
+{"strfind", str_find},
+{"strlen", str_len},
+{"strsub", str_sub},
+{"strlower", str_lower},
+{"strupper", str_upper},
+{"ascii", str_ascii},
+{"format", str_format}
+};
+
+
+/*
+** Open string library
+*/
+void strlib_open (void)
+{
+ luaI_openlib(strlib, (sizeof(strlib)/sizeof(strlib[0])));
+}
diff --git a/clients/lib/strlib.c b/clients/lib/strlib.c
index 6a99871c..47e91f4f 100644
--- a/clients/lib/strlib.c
+++ b/clients/lib/strlib.c
@@ -3,134 +3,151 @@
** String library to LUA
*/
-char *rcs_strlib="$Id: strlib.c,v 1.23 1996/04/30 21:13:55 roberto Exp $";
+char *rcs_strlib="$Id: strlib.c,v 1.33 1996/11/20 13:47:59 roberto Exp $";
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
-#include <limits.h>
#include "lua.h"
#include "lualib.h"
-void lua_arg_error(char *funcname)
+struct lbuff {
+ char *b;
+ size_t max;
+ size_t size;
+};
+
+static struct lbuff lbuffer = {NULL, 0, 0};
+
+
+static char *lua_strbuffer (unsigned long size)
+{
+ if (size > lbuffer.max) {
+ /* ANSI "realloc" doesn't need this test, but some machines (Sun!)
+ don't follow ANSI */
+ lbuffer.b = (lbuffer.b) ? realloc(lbuffer.b, lbuffer.max=size) :
+ malloc(lbuffer.max=size);
+ if (lbuffer.b == NULL)
+ lua_error("memory overflow");
+ }
+ return lbuffer.b;
+}
+
+static char *openspace (unsigned long size)
{
- char buff[100];
- sprintf(buff, "incorrect arguments to function `%s'", funcname);
- lua_error(buff);
+ char *buff = lua_strbuffer(lbuffer.size+size);
+ return buff+lbuffer.size;
+}
+
+void lua_arg_check(int cond, char *funcname)
+{
+ if (!cond) {
+ char buff[100];
+ sprintf(buff, "incorrect argument to function `%s'", funcname);
+ lua_error(buff);
+ }
}
char *lua_check_string (int numArg, char *funcname)
{
lua_Object o = lua_getparam(numArg);
- if (!lua_isstring(o))
- lua_arg_error(funcname);
+ lua_arg_check(lua_isstring(o), funcname);
return lua_getstring(o);
}
+char *lua_opt_string (int numArg, char *def, char *funcname)
+{
+ return (lua_getparam(numArg) == LUA_NOOBJECT) ? def :
+ lua_check_string(numArg, funcname);
+}
+
double lua_check_number (int numArg, char *funcname)
{
lua_Object o = lua_getparam(numArg);
- if (!lua_isnumber(o))
- lua_arg_error(funcname);
+ lua_arg_check(lua_isnumber(o), funcname);
return lua_getnumber(o);
}
-static int lua_opt_number (int numArg, int def, char *funcname)
+long lua_opt_number (int numArg, long def, char *funcname)
{
return (lua_getparam(numArg) == LUA_NOOBJECT) ? def :
- (int)lua_check_number(numArg, funcname);
+ (long)lua_check_number(numArg, funcname);
}
char *luaI_addchar (int c)
{
- static char *buff = NULL;
- static int max = 0;
- static int n = 0;
- if (n >= max)
- {
- if (max == 0)
- {
- max = 100;
- buff = (char *)malloc(max);
- }
- else
- {
- max *= 2;
- buff = (char *)realloc(buff, max);
- }
- if (buff == NULL)
- lua_error("memory overflow");
- }
- buff[n++] = c;
+ if (lbuffer.size >= lbuffer.max)
+ lua_strbuffer(lbuffer.max == 0 ? 100 : lbuffer.max*2);
+ lbuffer.b[lbuffer.size++] = c;
if (c == 0)
- n = 0; /* prepare for next string */
- return buff;
+ lbuffer.size = 0; /* prepare for next string */
+ return lbuffer.b;
}
+static void addnchar (char *s, int n)
+{
+ char *b = openspace(n);
+ strncpy(b, s, n);
+ lbuffer.size += n;
+}
+
+static void addstr (char *s)
+{
+ addnchar(s, strlen(s));
+}
/*
-** Return the position of the first caracter of a substring into a string
-** LUA interface:
-** n = strfind (string, substring, init, end)
+** Interface to strtok
*/
-static void str_find (void)
+static void str_tok (void)
{
- char *s1 = lua_check_string(1, "strfind");
- char *s2 = lua_check_string(2, "strfind");
- int init = lua_opt_number(3, 1, "strfind") - 1;
- char *f = (init>=0 && init<=strlen(s1)) ? strstr(s1+init,s2) : NULL;
- if (f != NULL)
- {
- int pos = f-s1+1;
- if (lua_opt_number(4, INT_MAX, "strfind") >= pos+strlen(s2)-1)
- lua_pushnumber (pos);
- else
- lua_pushnil();
- }
- else
- lua_pushnil();
+ char *s1 = lua_check_string(1, "strtok");
+ char *del = lua_check_string(2, "strtok");
+ lua_Object t = lua_createtable();
+ int i = 1;
+ /* As strtok changes s1, and s1 is "constant", make a copy of it */
+ s1 = strcpy(lua_strbuffer(strlen(s1+1)), s1);
+ while ((s1 = strtok(s1, del)) != NULL) {
+ lua_pushobject(t);
+ lua_pushnumber(i++);
+ lua_pushstring(s1);
+ lua_storesubscript();
+ s1 = NULL; /* prepare for next strtok */
+ }
+ lua_pushobject(t);
+ lua_pushnumber(i-1); /* total number of tokens */
}
+
/*
** Return the string length
-** LUA interface:
-** n = strlen (string)
*/
static void str_len (void)
{
- char *s = lua_check_string(1, "strlen");
- lua_pushnumber(strlen(s));
+ lua_pushnumber(strlen(lua_check_string(1, "strlen")));
}
-
/*
-** Return the substring of a string, from start to end
-** LUA interface:
-** substring = strsub (string, start, end)
+** Return the substring of a string
*/
static void str_sub (void)
{
- char *s = lua_check_string(1, "strsub");
- int start = (int)lua_check_number(2, "strsub");
- int end = lua_opt_number(3, strlen(s), "strsub");
- if (end < start || start < 1 || end > strlen(s))
- lua_pushliteral("");
- else
- {
- luaI_addchar(0);
- while (start <= end)
- luaI_addchar(s[start++ - 1]);
- lua_pushstring (luaI_addchar(0));
- }
+ char *s = lua_check_string(1, "strsub");
+ long start = (long)lua_check_number(2, "strsub");
+ long end = lua_opt_number(3, strlen(s), "strsub");
+ if (1 <= start && start <= end && end <= strlen(s)) {
+ luaI_addchar(0);
+ addnchar(s+start-1, end-start+1);
+ lua_pushstring(luaI_addchar(0));
+ }
+ else lua_pushliteral("");
}
/*
** Convert a string to lower case.
-** LUA interface:
-** lowercase = strlower (string)
*/
static void str_lower (void)
{
@@ -141,11 +158,8 @@ static void str_lower (void)
lua_pushstring(luaI_addchar(0));
}
-
/*
** Convert a string to upper case.
-** LUA interface:
-** uppercase = strupper (string)
*/
static void str_upper (void)
{
@@ -156,78 +170,357 @@ static void str_upper (void)
lua_pushstring(luaI_addchar(0));
}
+static void str_rep (void)
+{
+ char *s = lua_check_string(1, "strrep");
+ int n = (int)lua_check_number(2, "strrep");
+ luaI_addchar(0);
+ while (n-- > 0)
+ addstr(s);
+ lua_pushstring(luaI_addchar(0));
+}
+
/*
** get ascii value of a character in a string
*/
static void str_ascii (void)
{
char *s = lua_check_string(1, "ascii");
- int pos = lua_opt_number(2, 1, "ascii") - 1;
- if (pos<0 || pos>=strlen(s))
- lua_arg_error("ascii");
- lua_pushnumber(s[pos]);
+ long pos = lua_opt_number(2, 1, "ascii") - 1;
+ lua_arg_check(0<=pos && pos<strlen(s), "ascii");
+ lua_pushnumber((unsigned char)s[pos]);
+}
+
+
+/* pattern matching */
+
+#define ESC '%'
+#define SPECIALS "^$*?.([%"
+
+static char *bracket_end (char *p)
+{
+ return (*p == 0) ? NULL : strchr((*p=='^') ? p+2 : p+1, ']');
+}
+
+char *item_end (char *p)
+{
+ switch (*p++) {
+ case '\0': return p-1;
+ case ESC:
+ if (*p == 0) lua_error("incorrect pattern");
+ return p+1;
+ case '[': {
+ char *end = bracket_end(p);
+ if (end == NULL) lua_error("incorrect pattern");
+ return end+1;
+ }
+ default:
+ return p;
+ }
+}
+
+static int matchclass (int c, int cl)
+{
+ int res;
+ switch (tolower(cl)) {
+ case 'a' : res = isalpha(c); break;
+ case 'c' : res = iscntrl(c); break;
+ case 'd' : res = isdigit(c); break;
+ case 'l' : res = islower(c); break;
+ case 'p' : res = ispunct(c); break;
+ case 's' : res = isspace(c); break;
+ case 'u' : res = isupper(c); break;
+ case 'w' : res = isalnum(c); break;
+ default: return (cl == c);
+ }
+ return (islower(cl) ? res : !res);
+}
+
+int singlematch (int c, char *p)
+{
+ if (c == 0) return 0;
+ switch (*p) {
+ case '.': return 1;
+ case ESC: return matchclass(c, *(p+1));
+ case '[': {
+ char *end = bracket_end(p+1);
+ int sig = *(p+1) == '^' ? (p++, 0) : 1;
+ while (++p < end) {
+ if (*p == ESC) {
+ if (((p+1) < end) && matchclass(c, *++p)) return sig;
+ }
+ else if ((*(p+1) == '-') && (p+2 < end)) {
+ p+=2;
+ if (*(p-2) <= c && c <= *p) return sig;
+ }
+ else if (*p == c) return sig;
+ }
+ return !sig;
+ }
+ default: return (*p == c);
+ }
+}
+
+#define MAX_CAPT 9
+
+static struct {
+ char *init;
+ int len; /* -1 signals unfinished capture */
+} capture[MAX_CAPT];
+
+static int num_captures; /* only valid after a sucessful call to match */
+
+
+static void push_captures (void)
+{
+ int i;
+ for (i=0; i<num_captures; i++) {
+ int l = capture[i].len;
+ char *buff = openspace(l+1);
+ if (l == -1) lua_error("unfinished capture");
+ strncpy(buff, capture[i].init, l);
+ buff[l] = 0;
+ lua_pushstring(buff);
+ }
}
+static int check_cap (int l, int level)
+{
+ l -= '1';
+ if (!(0 <= l && l < level && capture[l].len != -1))
+ lua_error("invalid capture index");
+ return l;
+}
+
+static int capture_to_close (int level)
+{
+ for (level--; level>=0; level--)
+ if (capture[level].len == -1) return level;
+ lua_error("invalid pattern capture");
+ return 0; /* to avoid warnings */
+}
+
+static char *matchbalance (char *s, int b, int e)
+{
+ if (*s != b) return NULL;
+ else {
+ int cont = 1;
+ while (*(++s)) {
+ if (*s == e) {
+ if (--cont == 0) return s+1;
+ }
+ else if (*s == b) cont++;
+ }
+ }
+ return NULL; /* string ends out of balance */
+}
+
+static char *match (char *s, char *p, int level)
+{
+ init: /* using goto's to optimize tail recursion */
+ switch (*p) {
+ case '(': /* start capture */
+ if (level >= MAX_CAPT) lua_error("too many captures");
+ capture[level].init = s;
+ capture[level].len = -1;
+ level++; p++; goto init; /* return match(s, p+1, level); */
+ case ')': { /* end capture */
+ int l = capture_to_close(level);
+ char *res;
+ capture[l].len = s - capture[l].init; /* close capture */
+ if ((res = match(s, p+1, level)) == NULL) /* match failed? */
+ capture[l].len = -1; /* undo capture */
+ return res;
+ }
+ case ESC:
+ if (isdigit(*(p+1))) { /* capture */
+ int l = check_cap(*(p+1), level);
+ if (strncmp(capture[l].init, s, capture[l].len) == 0) {
+ /* return match(p+2, s+capture[l].len, level); */
+ p+=2; s+=capture[l].len; goto init;
+ }
+ else return NULL;
+ }
+ else if (*(p+1) == 'b') { /* balanced string */
+ if (*(p+2) == 0 || *(p+3) == 0)
+ lua_error("bad balanced pattern specification");
+ s = matchbalance(s, *(p+2), *(p+3));
+ if (s == NULL) return NULL;
+ else { /* return match(p+4, s, level); */
+ p+=4; goto init;
+ }
+ }
+ else goto dflt;
+ case '\0': case '$': /* (possibly) end of pattern */
+ if (*p == 0 || (*(p+1) == 0 && *s == 0)) {
+ num_captures = level;
+ return s;
+ }
+ else goto dflt;
+ default: dflt: { /* it is a pattern item */
+ int m = singlematch(*s, p);
+ char *ep = item_end(p); /* get what is next */
+ switch (*ep) {
+ case '*': { /* repetition */
+ char *res;
+ if (m && (res = match(s+1, p, level)))
+ return res;
+ p=ep+1; goto init; /* else return match(s, ep+1, level); */
+ }
+ case '?': { /* optional */
+ char *res;
+ if (m && (res = match(s+1, ep+1, level)))
+ return res;
+ p=ep+1; goto init; /* else return match(s, ep+1, level); */
+ }
+ default:
+ if (m) { s++; p=ep; goto init; } /* return match(s+1, ep, level); */
+ else return NULL;
+ }
+ }
+ }
+}
+
+static void str_find (void)
+{
+ char *s = lua_check_string(1, "strfind");
+ char *p = lua_check_string(2, "strfind");
+ long init = lua_opt_number(3, 1, "strfind") - 1;
+ lua_arg_check(0 <= init && init <= strlen(s), "strfind");
+ if (lua_getparam(4) != LUA_NOOBJECT ||
+ strpbrk(p, SPECIALS) == NULL) { /* no special caracters? */
+ char *s2 = strstr(s+init, p);
+ if (s2) {
+ lua_pushnumber(s2-s+1);
+ lua_pushnumber(s2-s+strlen(p));
+ }
+ }
+ else {
+ int anchor = (*p == '^') ? (p++, 1) : 0;
+ char *s1=s+init;
+ do {
+ char *res;
+ if ((res=match(s1, p, 0)) != NULL) {
+ lua_pushnumber(s1-s+1); /* start */
+ lua_pushnumber(res-s); /* end */
+ push_captures();
+ return;
+ }
+ } while (*s1++ && !anchor);
+ }
+}
+
+static void add_s (lua_Object newp)
+{
+ if (lua_isstring(newp)) {
+ char *news = lua_getstring(newp);
+ while (*news) {
+ if (*news != ESC || !isdigit(*++news))
+ luaI_addchar(*news++);
+ else {
+ int l = check_cap(*news++, num_captures);
+ addnchar(capture[l].init, capture[l].len);
+ }
+ }
+ }
+ else if (lua_isfunction(newp)) {
+ lua_Object res;
+ struct lbuff oldbuff;
+ lua_beginblock();
+ push_captures();
+ /* function may use lbuffer, so save it and create a new one */
+ oldbuff = lbuffer;
+ lbuffer.b = NULL; lbuffer.max = lbuffer.size = 0;
+ lua_callfunction(newp);
+ /* restore old buffer */
+ free(lbuffer.b);
+ lbuffer = oldbuff;
+ res = lua_getresult(1);
+ addstr(lua_isstring(res) ? lua_getstring(res) : "");
+ lua_endblock();
+ }
+ else lua_arg_check(0, "gsub");
+}
+
+static void str_gsub (void)
+{
+ char *src = lua_check_string(1, "gsub");
+ char *p = lua_check_string(2, "gsub");
+ lua_Object newp = lua_getparam(3);
+ int max_s = lua_opt_number(4, strlen(src), "gsub");
+ int anchor = (*p == '^') ? (p++, 1) : 0;
+ int n = 0;
+ luaI_addchar(0);
+ while (*src && n < max_s) {
+ char *e;
+ if ((e=match(src, p, 0)) == NULL)
+ luaI_addchar(*src++);
+ else {
+ if (e == src) lua_error("empty pattern in substitution");
+ add_s(newp);
+ src = e;
+ n++;
+ }
+ if (anchor) break;
+ }
+ addstr(src);
+ lua_pushstring(luaI_addchar(0));
+ lua_pushnumber(n); /* number of substitutions */
+}
+
+static void str_set (void)
+{
+ char *item = lua_check_string(1, "strset");
+ int i;
+ lua_arg_check(*item_end(item) == 0, "strset");
+ luaI_addchar(0);
+ for (i=1; i<256; i++) /* 0 cannot be part of a set */
+ if (singlematch(i, item))
+ luaI_addchar(i);
+ lua_pushstring(luaI_addchar(0));
+}
+
+
void luaI_addquoted (char *s)
{
luaI_addchar('"');
- for (; *s; s++)
- {
- if (*s == '"' || *s == '\\' || *s == '\n')
+ for (; *s; s++) {
+ if (strchr("\"\\\n", *s))
luaI_addchar('\\');
luaI_addchar(*s);
}
luaI_addchar('"');
}
-#define MAX_CONVERTION 2000
-#define MAX_FORMAT 50
+#define MAX_FORMAT 200
static void str_format (void)
{
int arg = 1;
char *strfrmt = lua_check_string(arg++, "format");
luaI_addchar(0); /* initialize */
- while (*strfrmt)
- {
+ while (*strfrmt) {
if (*strfrmt != '%')
luaI_addchar(*strfrmt++);
else if (*++strfrmt == '%')
luaI_addchar(*strfrmt++); /* %% */
- else
- { /* format item */
+ else { /* format item */
char form[MAX_FORMAT]; /* store the format ('%...') */
- char buff[MAX_CONVERTION]; /* store the formated value */
- int size = 0;
- int i = 0;
- form[i++] = '%';
- form[i] = *strfrmt++;
- while (!isalpha(form[i]))
- {
- if (isdigit(form[i]))
- {
- size = size*10 + form[i]-'0';
- if (size >= MAX_CONVERTION)
- lua_error("format size/precision too long in function `format'");
- }
- else if (form[i] == '.')
- size = 0; /* re-start */
- if (++i >= MAX_FORMAT)
- lua_error("bad format in function `format'");
- form[i] = *strfrmt++;
- }
- form[i+1] = 0; /* ends string */
- switch (form[i])
- {
+ char *buff;
+ char *initf = strfrmt-1; /* -1 to include % */
+ strfrmt = match(strfrmt, "[-+ #]*(%d*)%.?(%d*)", 0);
+ if (capture[0].len > 3 || capture[1].len > 3) /* < 1000? */
+ lua_error("invalid format (width/precision too long)");
+ strncpy(form, initf, strfrmt-initf+1); /* +1 to include convertion */
+ form[strfrmt-initf+1] = 0;
+ buff = openspace(1000); /* to store the formated value */
+ switch (*strfrmt++) {
case 'q':
luaI_addquoted(lua_check_string(arg++, "format"));
- buff[0] = '\0'; /* addchar already done */
- break;
- case 's':
- {
+ continue;
+ case 's': {
char *s = lua_check_string(arg++, "format");
- if (strlen(s) >= MAX_CONVERTION)
- lua_error("string argument too long in function `format'");
+ buff = openspace(strlen(s));
sprintf(buff, form, s);
break;
}
@@ -241,8 +534,7 @@ static void str_format (void)
default: /* also treat cases 'pnLlh' */
lua_error("invalid format option in function `format'");
}
- for (i=0; buff[i]; i++) /* move formated value to result */
- luaI_addchar(buff[i]);
+ lbuffer.size += strlen(buff);
}
}
lua_pushstring(luaI_addchar(0)); /* push the result */
@@ -256,14 +548,19 @@ void luaI_openlib (struct lua_reg *l, int n)
lua_register(l[i].name, l[i].func);
}
+
static struct lua_reg strlib[] = {
-{"strfind", str_find},
+{"strtok", str_tok},
{"strlen", str_len},
{"strsub", str_sub},
+{"strset", str_set},
{"strlower", str_lower},
{"strupper", str_upper},
+{"strrep", str_rep},
{"ascii", str_ascii},
-{"format", str_format}
+{"format", str_format},
+{"strfind", str_find},
+{"gsub", str_gsub}
};
diff --git a/clients/lib/strlib.h b/clients/lib/strlib.h
deleted file mode 100644
index db3d38c5..00000000
--- a/clients/lib/strlib.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-** String library to LUA
-** TeCGraf - PUC-Rio
-** $Id: strlib.h,v 1.1 1993/12/17 18:41:19 celes Stab $
-*/
-
-
-#ifndef strlib_h
-
-void strlib_open (void);
-
-#endif
-
diff --git a/clients/lua/Makefile b/clients/lua/Makefile
index 7bfde7fe..7ce90fa6 100644
--- a/clients/lua/Makefile
+++ b/clients/lua/Makefile
@@ -13,7 +13,7 @@ T=$(BIN)/lua
all: $T
-$T: $(OBJS)
+$T: $(OBJS) $(LIB)/liblua.a $(LIB)/liblualib.a
$(CC) -o $@ $(OBJS) -L$(LIB) -llua -llualib -lm
dynamic:
diff --git a/clients/lua/lua.c b/clients/lua/lua.c
index bae09e25..a6d558a2 100644
--- a/clients/lua/lua.c
+++ b/clients/lua/lua.c
@@ -3,7 +3,7 @@
** Linguagem para Usuarios de Aplicacao
*/
-char *rcs_lua="$Id: lua.c,v 1.10 1996/05/03 19:20:17 roberto Exp $";
+char *rcs_lua="$Id: lua.c,v 1.14 1996/09/24 17:30:28 roberto Exp $";
#include <stdio.h>
#include <string.h>
@@ -11,45 +11,23 @@ char *rcs_lua="$Id: lua.c,v 1.10 1996/05/03 19:20:17 roberto Exp $";
#include "lua.h"
#include "lualib.h"
-static int lua_argc;
-static char **lua_argv;
-#ifdef POSIX
-/*
-** although this function is POSIX, there is no standard header file that
-** defines it
-*/
-int isatty (int fd);
+#ifdef _POSIX_SOURCE
+#include <unistd.h>
#else
#define isatty(x) (x==0) /* assume stdin is a tty */
#endif
-/*
-%F Allow Lua code to access argv strings.
-%i Receive from Lua the argument number (starting with 1).
-%o Return to Lua the argument, or nil if it does not exist.
-*/
-static void lua_getargv (void)
-{
- lua_Object lo = lua_getparam(1);
- if (!lua_isnumber(lo))
- lua_pushnil();
- else
- {
- int n = (int)lua_getnumber(lo);
- if (n < 1 || n > lua_argc) lua_pushnil();
- else lua_pushstring(lua_argv[n]);
- }
-}
-
static void manual_input (void)
{
- if (isatty(0))
- {
- char buffer[250];
- while (fgets(buffer, sizeof(buffer), stdin) != 0)
- lua_dostring(buffer);
+ if (isatty(0)) {
+ char buffer[250];
+ while (fgets(buffer, sizeof(buffer), stdin) != 0) {
+ lua_beginblock();
+ lua_dostring(buffer);
+ lua_endblock();
+ }
}
else
lua_dofile(NULL); /* executes stdin as a file */
@@ -58,43 +36,36 @@ static void manual_input (void)
int main (int argc, char *argv[])
{
- int i;
- int result = 0;
- iolib_open ();
- strlib_open ();
- mathlib_open ();
-
- lua_register("argv", lua_getargv);
-
- if (argc < 2)
- manual_input();
- else
- {
- for (i=1; i<argc; i++)
- if (strcmp(argv[i], "--") == 0)
- {
- lua_argc = argc-i-1;
- lua_argv = argv+i;
- break;
- }
- for (i=1; i<argc; i++)
- {
- if (strcmp(argv[i], "--") == 0)
- break;
- else if (strcmp(argv[i], "-") == 0)
+ int i;
+ int result = 0;
+ iolib_open ();
+ strlib_open ();
+ mathlib_open ();
+ if (argc < 2)
manual_input();
- else if (strcmp(argv[i], "-v") == 0)
- printf("%s %s\n(written by %s)\n\n",
- LUA_VERSION, LUA_COPYRIGHT, LUA_AUTHORS);
- else
- {
- result = lua_dofile (argv[i]);
- if (result)
- fprintf(stderr, "lua: error trying to run file %s\n", argv[i]);
- }
+ else for (i=1; i<argc; i++) {
+ if (strcmp(argv[i], "-") == 0)
+ manual_input();
+ else if (strcmp(argv[i], "-v") == 0)
+ printf("%s %s\n(written by %s)\n\n",
+ LUA_VERSION, LUA_COPYRIGHT, LUA_AUTHORS);
+ else if ((strcmp(argv[i], "-e") == 0 && i++) || strchr(argv[i], '=')) {
+ if (lua_dostring(argv[i]) != 0) {
+ fprintf(stderr, "lua: error running argument `%s'\n", argv[i]);
+ return 1;
+ }
+ }
+ else {
+ result = lua_dofile (argv[i]);
+ if (result) {
+ if (result == 2) {
+ fprintf(stderr, "lua: cannot execute file `%s' - ", argv[i]);
+ perror(NULL);
+ }
+ return 1;
+ }
+ }
}
- }
- return result;
+ return result;
}
-
diff --git a/config b/config
index fbea80fe..079e9066 100644
--- a/config
+++ b/config
@@ -2,7 +2,11 @@
# you need an ANSI C compiler
CC= gcc
-WARN= -Wall -Wmissing-prototypes -Wshadow -ansi
+WARN= -ansi -Wall # -Wmissing-prototypes -Wshadow
+
+# for SGI's with cc
+#CC= cc
+#WARN= -ansi -fullwarn
# in SunOs 4.1.x, uncomment the following line to avoid prototypes warnings
# for standard functions
@@ -14,9 +18,15 @@ POPEN= -DPOPEN
# if your C library is not POSIX compliant, comment the following line:
POSIX= -DPOSIX
+# if you don't have strerror() in your C library, uncomment the following line:
+#NOSTRERROR= -DNOSTRERROR
+
+# if your system doesn't have ranlib, change "ranlib" to "true"
+RANLIB=ranlib
+
### NO NEED TO CHANGE ANYTHING BELOW THIS LINE ================================
-VERSION= 2.4
+VERSION= 2.5
INC= $(LUA)/include
LIB= $(LUA)/lib
diff --git a/doc/refman.ps b/doc/refman.ps
index 6d1cf314..24896e0e 100644
--- a/doc/refman.ps
+++ b/doc/refman.ps
@@ -1,14 +1,14 @@
%!PS-Adobe-2.0
-%%Creator: dvips 5.58 Copyright 1986, 1994 Radical Eye Software
+%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: manual.dvi
-%%CreationDate: Tue May 14 15:22:07 1996
-%%Pages: 38
+%%Pages: 39
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
+%%DocumentPaperSizes: Letter
%%EndComments
-%DVIPSCommandLine: _dvips -o manual.ps manual.dvi
-%DVIPSParameters: dpi=300, comments removed
-%DVIPSSource: TeX output 1996.05.14:1521
+%DVIPSCommandLine: /visgraf/pub/teTeX/bin/sun4/dvips manual
+%DVIPSParameters: dpi=600, comments removed
+%DVIPSSource: TeX output 1996.11.18:1940
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
@@ -57,3505 +57,7750 @@ B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{SS restore}B end
%%EndProcSet
-TeXDict begin 40258431 52099146 1000 300 300
-(/home/lhf/w/lua/distr/lua/doc/manual.dvi) @start /Fa
-7 115 df<000FE0007FFC01FFFE03F03E07C00E0F80041F00001F00003E00003E00007C
-00007C00007C0000F80000F80000F80000F80000F80000F80000F80000F800007C00007C
-00007C00003E00003E00001F00001F00010F800307C00703F01F01FFFE007FF8000FE018
-227EA01D>67 D<001FF0007FFC01FFFF03F03F07C00F0F80021F00001F00003E00003C00
-007C00007C0000780000F80000F80000F80000F80000F80000F80000F801FFF801FF7801
-FF7C000F7C000F3C000F3E000F1F000F1F000F0F800F07C00F03F01F01FFFF007FFC001F
-E018227EA01E>71 D<FFFFFFC0FFFFFFC0FFFFFFC0001F0000001F0000001F0000001F00
-00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
-00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
-00001F0000001F0000001F0000001F0000001F0000001F0000001F00001A207E9F1F>84
-D<07E03FF87FFC783E601F400F000F000F01FF0FFF3FFF7F0FF80FF00FF00FF00FF83F7F
-FF3FFF1F8F10147E9316>97 D<03F0000FFC001FFE003E1F007C0700780700700380FFFF
-80FFFF80FFFF80F00000F00000F000007000007800003C00803E07801FFF8007FF0001F8
-0011147F9314>101 D<007E01FE03FE078207000F000F000F000F000F000F000F00FFF0
-FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
-0F000F20809F0E>I<F0E0F3E0F7E0FFE0FF00FC00F800F800F000F000F000F000F000F0
-00F000F000F000F000F000F0000B147D9310>114 D E /Fb 7 121
-df<07F8001FFE003FFF803E07C03E03C01C01E00001E0003FE003FFE00FFFE03FC1E07C
-01E07801E0F001E0F001E0F001E07803E07C07E03FFFFE1FFEFE03F87E17157E941A>97
-D<01F80007FF000FFF801F07C03C03C07801E07801E0F000F0F000F0FFFFF0FFFFF0FFFF
-F0F000007000007800007C00F03E00F01F03F00FFFE003FFC000FE0014157D941A>101
-D<7F0F8000FF7FE0007FFFF0000FF0F0000FC078000F8078000F0078000F0078000F0078
-000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078
-007FE1FF00FFF3FF807FE1FF00191580941A>110 D<7FC1F8FFC7FC7FDFFE03FE1E03F8
-0C03F00003E00003E00003C00003C00003C00003C00003C00003C00003C00003C00003C0
-0003C0007FFF80FFFF807FFF8017157F941A>114 D<01C00003C00003C00003C00003C0
-0003C00003C0007FFFE0FFFFE0FFFFE003C00003C00003C00003C00003C00003C00003C0
-0003C00003C00003C00003C0F003C0F003C0F003C0F001E1E001FFE000FF80003F00141C
-7F9B1A>116 D<7FC7FCFFC7FE7FC7FC0F01E00F01E00F01E00F83E00783C00783C00783
-C003C78003C78003C78001C70001EF0001EF0001EF0000FE0000FE0000FE00007C001715
-7F941A>118 D<7FC7F87FCFFC7FC7F80787C007C78003EF8001FF0000FE0000FC00007C
-00007C00007C0000FE0001EF0003EF0003C7800783C00F83E07FC7FCFFC7FE7FC7FC1715
-7F941A>120 D E /Fc 1 122 df<1E0180370380670380670380C707000E07000E07000E
-07001C0E001C0E001C0E000C1E000E3C0003DC00001C0038380078380078700030C0001F
-00001114808D11>121 D E /Fd 3 121 df<70F8F8F878181818183030606040050E7C84
-0D>59 D<0E07E0001F8FF00033F8780063F0380063E03C0063C03C00C780780007807800
-07807800078078000F00F0000F00F0000F00F0000F01E1801E01E3001E03C3001E03C600
-1E01CE003C01FC001800F00019147F931B>110 D<07C3C00FE7E0187C603078F06079F0
-6079F0C0F1E000F1C000F00000F00001E00001E00039E00079E030FBC060FBC060F3C0C0
-E7E3807CFF00383C0014147E931A>120 D E /Fe 51 121 df<0007F800007FFE0001FC
-0F0003F01F0007E03F800FC03F800FC03F800FC03F800FC01F000FC004000FC000000FC0
-00000FC00000FFFFFF80FFFFFF80FFFFFF800FC01F800FC01F800FC01F800FC01F800FC0
-1F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC0
-1F800FC01F800FC01F807FF8FFF07FF8FFF07FF8FFF01C237FA21F>12
-D<3C7EFFFFFFFF7E3C08087C8710>46 D<0000180000380000380000700000700000E000
-00E00000E00001C00001C0000380000380000380000700000700000700000E00000E0000
-1C00001C00001C0000380000380000700000700000700000E00000E00001C00001C00001
-C0000380000380000700000700000700000E00000E00000E00001C00001C000038000038
-0000380000700000700000E00000E00000C0000015317DA41C>I<00FE0007FFC00F83E0
-1F01F03E00F83E00F87C007C7C007C7C007CFC007CFC007EFC007EFC007EFC007EFC007E
-FC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F8
-3E00F81F01F00F83E007FFC000FE0017207E9F1C>I<00180000780003F800FFF800FFF8
-00FDF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
-0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
-007FFFE07FFFE07FFFE013207C9F1C>I<03FC000FFF003FFFC0783FE07C0FF0FE07F0FE
-03F8FE03F8FE03F87C03F83803F80003F80003F00007F00007E0000FC0001F80001F0000
-3C0000780000F00001E03803C0380700380600380C00781FFFF03FFFF07FFFF0FFFFF0FF
-FFF0FFFFF015207D9F1C>I<01FE0007FF800FFFE01E07F03F03F03F03F83F83F83F03F8
-1F03F80C03F80003F00007E00007C0001F8001FE0001FF000007E00003F00001F80001FC
-0001FE0001FE7C01FE7C01FEFE01FEFE01FCFE01FC7C03F87C07F03FFFE00FFFC003FE00
-17207E9F1C>I<0000E00001E00003E00007E0000FE0000FE0001FE0003FE00077E000E7
-E000E7E001C7E00387E00707E00E07E00E07E01C07E03807E07007E0E007E0FFFFFFFFFF
-FFFFFFFF0007E00007E00007E00007E00007E00007E000FFFF00FFFF00FFFF18207E9F1C
->I<2000603C01E03FFFC03FFFC03FFF803FFE003FFC003FF00038000038000038000038
-000039FC003FFF003E0FC03807E03003F00003F00003F00003F80003F83803F87C03F8FC
-03F8FC03F8FC03F0F803F07007E03C0FC03FFF800FFF0003F80015207D9F1C>I<001F80
-00FFE003FFF007F0F00FC1F81F81F83F01F83F01F87E00F07E00007E0000FE0800FE7FC0
-FEFFE0FF81F0FF00F8FF00FCFF00FCFE00FEFE00FEFE00FEFE00FE7E00FE7E00FE7E00FE
-3E00FC3E00FC1F00F80F83F007FFE003FFC000FF0017207E9F1C>I<7000007C00007FFF
-FE7FFFFE7FFFFE7FFFFC7FFFF87FFFF0F00070E000E0E001C0E00380E00700000E00000E
-00001C00003C0000380000780000780000F80000F00001F00001F00001F00001F00003F0
-0003F00003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC007
-FFE00F83F01E01F01E00F83E00F83E00F83F00F83F80F83FE1F01FF9E01FFFC00FFF8007
-FFC003FFE00FFFF01F7FF83E1FFC7C07FC7C01FEF800FEF8007EF8003EF8003EF8003E7C
-003C7E00783F01F81FFFF00FFFC001FF0017207E9F1C>I<00FE0007FF800FFFE01F83F0
-3F01F07E00F87E00F8FE00FCFE00FCFE00FCFE00FEFE00FEFE00FEFE00FE7E01FE7E01FE
-3E01FE1F03FE0FFEFE07FCFE0020FE0000FC0000FC1E00FC3F01F83F01F83F01F03F03E0
-1E0FC01FFF800FFE0003F80017207E9F1C>I<00007000000000F800000000F800000000
-F800000001FC00000001FC00000003FE00000003FE00000003FE000000077F000000077F
-0000000F7F8000000E3F8000000E3F8000001C1FC000001C1FC000003C1FE00000380FE0
-0000380FE00000700FF000007007F00000F007F80000FFFFF80000FFFFF80001FFFFFC00
-01C001FC0001C001FC00038000FE00038000FE00078000FF000700007F00FFF007FFF8FF
-F007FFF8FFF007FFF825227EA12A>65 D<0003FE0180001FFF838000FFFFE78001FF00FF
-8003F8003F8007F0001F800FE0000F801FC0000F803F800007803F800007807F80000380
-7F000003807F00000380FF00000000FF00000000FF00000000FF00000000FF00000000FF
-00000000FF00000000FF000000007F000000007F000003807F800003803F800003803F80
-0007801FC00007000FE0000F0007F0001E0003F8003C0001FF00F80000FFFFF000001FFF
-C0000003FE000021227DA128>67 D<FFFFFF8000FFFFFFF000FFFFFFFC0007F003FE0007
-F0007F0007F0003F8007F0001FC007F0000FE007F0000FE007F0000FF007F00007F007F0
-0007F007F00007F007F00007F807F00007F807F00007F807F00007F807F00007F807F000
-07F807F00007F807F00007F807F00007F807F00007F007F00007F007F00007F007F0000F
-E007F0000FE007F0001FC007F0003F8007F0007F0007F003FE00FFFFFFFC00FFFFFFF000
-FFFFFF800025227EA12B>I<FFFFFFFCFFFFFFFCFFFFFFFC07F001FC07F0007C07F0003C
-07F0001C07F0001E07F0001E07F01C0E07F01C0E07F01C0E07F01C0E07F03C0007F07C00
-07FFFC0007FFFC0007FFFC0007F07C0007F03C0007F01C0707F01C0707F01C0707F01C0E
-07F0000E07F0000E07F0001E07F0001E07F0003E07F0007E07F001FCFFFFFFFCFFFFFFFC
-FFFFFFFC20227EA125>I<FFFFFFF8FFFFFFF8FFFFFFF807F003F807F000F807F0007807
-F0003807F0003C07F0003C07F01C1C07F01C1C07F01C1C07F01C1C07F03C0007F07C0007
-FFFC0007FFFC0007FFFC0007F07C0007F03C0007F01C0007F01C0007F01C0007F01C0007
-F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFFC000FFFFC000FF
-FFC0001E227EA123>I<FFFF83FFFEFFFF83FFFEFFFF83FFFE07F0001FC007F0001FC007
-F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
-001FC007F0001FC007F0001FC007FFFFFFC007FFFFFFC007FFFFFFC007F0001FC007F000
-1FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001F
-C007F0001FC007F0001FC007F0001FC007F0001FC0FFFF83FFFEFFFF83FFFEFFFF83FFFE
-27227EA12C>72 D<FFFF80FFFF80FFFF8007F00007F00007F00007F00007F00007F00007
-F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007
-F00007F00007F00007F00007F00007F00007F00007F00007F00007F000FFFF80FFFF80FF
-FF8011227EA115>I<FFFFC000FFFFC000FFFFC00007F0000007F0000007F0000007F000
-0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
-0007F0000007F0000007F0000007F0000007F0003807F0003807F0003807F0003807F000
-7807F0007807F0007807F000F007F001F007F003F007F00FF0FFFFFFF0FFFFFFF0FFFFFF
-F01D227EA122>76 D<FFF800001FFFFFF800001FFFFFFC00003FFF07FC00003FE007FC00
-003FE0077E000077E0077E000077E0073F0000E7E0073F0000E7E0071F8001C7E0071F80
-01C7E0071F8001C7E0070FC00387E0070FC00387E00707E00707E00707E00707E00703F0
-0E07E00703F00E07E00703F00E07E00701F81C07E00701F81C07E00700FC3807E00700FC
-3807E007007E7007E007007E7007E007007E7007E007003FE007E007003FE007E007001F
-C007E007001FC007E007000F8007E0FFF80F80FFFFFFF80F80FFFFFFF80700FFFF30227E
-A135>I<0007FC0000003FFF800000FE0FE00003F803F80007E000FC000FC0007E001FC0
-007F001F80003F003F80003F803F80003F807F00001FC07F00001FC07F00001FC0FF0000
-1FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001FE0FF00001F
-E0FF00001FE07F00001FC07F80003FC07F80003FC03F80003F803FC0007F801FC0007F00
-0FE000FE0007F001FC0003F803F80000FE0FE000003FFF80000007FC000023227DA12A>
-79 D<FFFFFF00FFFFFFE0FFFFFFF007F007F807F001FC07F001FE07F000FE07F000FF07
-F000FF07F000FF07F000FF07F000FF07F000FF07F000FE07F001FE07F001FC07F007F807
-FFFFF007FFFFC007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
-F0000007F0000007F0000007F0000007F00000FFFF8000FFFF8000FFFF800020227EA126
->I<FFFFFE0000FFFFFFC000FFFFFFF00007F007F80007F001FC0007F001FE0007F000FE
-0007F000FF0007F000FF0007F000FF0007F000FF0007F000FF0007F000FE0007F001FE00
-07F001FC0007F007F00007FFFFC00007FFFF000007F00FC00007F007E00007F007F00007
-F003F00007F003F80007F003F80007F003F80007F003F80007F003FC0007F003FC0007F0
-03FC0007F003FC0E07F001FE0EFFFF81FF1CFFFF80FFF8FFFF801FF027227EA12A>82
-D<01FE0607FF8E1FFFFE3F01FE7C007E78003E78001EF8001EF8000EF8000EFC0000FF00
-00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FE00007F00003F0000
-1FE0001FE0001FE0001FF0001EF0003EFC003CFF00FCFFFFF8E7FFE0C0FF8018227DA11F
->I<7FFFFFFF807FFFFFFF807FFFFFFF807E03F81F807C03F807807803F807807003F803
-80F003F803C0F003F803C0E003F801C0E003F801C0E003F801C0E003F801C00003F80000
-0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
-03F800000003F800000003F800000003F800000003F800000003F800000003F800000003
-F800000003F800000003F8000001FFFFF00001FFFFF00001FFFFF00022227EA127>I<FF
-FF001FFEFFFF001FFEFFFF001FFE07F00001C007F80003C003F800038003FC00078001FC
-00070001FC00070000FE000E0000FE000E0000FF001E00007F001C00007F803C00003F80
-3800003F803800001FC07000001FC07000001FE0F000000FE0E000000FF0E0000007F1C0
-000007F1C0000007FBC0000003FB80000003FF80000001FF00000001FF00000000FE0000
-0000FE00000000FE000000007C000000007C0000000038000027227FA12A>86
-D<0FFE003FFF807E07E07E03F07E01F07E01F83C01F80001F80001F800FFF807FFF81FE1
-F83F01F87E01F8FC01F8FC01F8FC01F8FC01F87E03F87E0EFF1FFCFF07F03F18167E951B
->97 D<FF800000FF800000FF8000001F8000001F8000001F8000001F8000001F8000001F
-8000001F8000001F8000001F8000001F8000001F8FE0001FFFF8001FF07C001FC03E001F
-801F001F800F801F800F801F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F
-800FC01F800FC01F800F801F801F801F801F001FC03E001FE07C001E7FF8001C0FC0001A
-237EA21F>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000
-FC0000FC0000FC0000FC00007C00007E00007E00003E00381F00700FC0F007FFC000FF00
-15167E9519>I<0001FF000001FF000001FF0000003F0000003F0000003F0000003F0000
-003F0000003F0000003F0000003F0000003F0000003F0001FE3F0007FFBF000F81FF001F
-007F003E003F007E003F007C003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC
-003F00FC003F00FC003F007C003F007C003F003E003F001F00FF000F83FFE007FFBFE001
-FC3FE01B237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00
-F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00381F00700FC0F003FF
-C000FF0015167E951A>I<001F8000FFE001F1F003E3F007E3F00FC3F00FC1E00FC0000F
-C0000FC0000FC0000FC0000FC000FFFE00FFFE00FFFE000FC0000FC0000FC0000FC0000F
-C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0007F
-FC007FFC007FFC00142380A211>I<01FE1F0007FFFF800F87E7801F03E7801E01E7003E
-01F0003E01F0003E01F0003E01F0003E01F0001E01E0001F03E0000F87C0000FFF800019
-FE0000180000001C0000001C0000001FFFE0001FFFF8000FFFFE000FFFFF003FFFFF007C
-003F80F8001F80F8000F80F8000F80F8000F807C001F007E003F001F80FC000FFFF80001
-FFC00019217F951C>I<FF800000FF800000FF8000001F8000001F8000001F8000001F80
-00001F8000001F8000001F8000001F8000001F8000001F8000001F87E0001F9FF8001FB8
-FC001FE07C001FC07E001FC07E001F807E001F807E001F807E001F807E001F807E001F80
-7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E00FFF1FFC0FFF1
-FFC0FFF1FFC01A237EA21F>I<1E003F007F807F807F807F803F001E0000000000000000
-0000000000FF80FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F
-801F801F801F80FFF0FFF0FFF00C247FA30F>I<003C007E00FF00FF00FF00FF007E003C
-00000000000000000000000003FF03FF03FF003F003F003F003F003F003F003F003F003F
-003F003F003F003F003F003F003F003F003F003F003F003F003F783FFC3FFC3EFC7E78FC
-7FF01FC0102E83A311>I<FF800000FF800000FF8000001F8000001F8000001F8000001F
-8000001F8000001F8000001F8000001F8000001F8000001F8000001F83FF801F83FF801F
-83FF801F80F0001F83E0001F8780001F8F00001F9E00001FBE00001FFE00001FFF00001F
-FF80001FCFC0001F8FC0001F87E0001F83F0001F83F0001F81F8001F80FC00FFF1FFC0FF
-F1FFC0FFF1FFC01A237EA21E>I<FF80FF80FF801F801F801F801F801F801F801F801F80
-1F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F80
-1F801F801F80FFF0FFF0FFF00C237FA20F>I<FF87F00FE000FF9FFC3FF800FFB87E70FC
-001FE03EC07C001FC03F807E001FC03F807E001F803F007E001F803F007E001F803F007E
-001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E
-001F803F007E001F803F007E001F803F007E001F803F007E00FFF1FFE3FFC0FFF1FFE3FF
-C0FFF1FFE3FFC02A167E952F>I<FF87E000FF9FF800FFB8FC001FE07C001FC07E001FC0
-7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80
-7E001F807E001F807E001F807E001F807E00FFF1FFC0FFF1FFC0FFF1FFC01A167E951F>
-I<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC00
-7EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C
->I<FF8FE000FFFFF800FFF07C001FC03E001F801F001F801F801F801F801F800FC01F80
-0FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F801F801F801F801F80
-3F001FC03E001FE0FC001FFFF8001F8FC0001F8000001F8000001F8000001F8000001F80
-00001F8000001F800000FFF00000FFF00000FFF000001A207E951F>I<FF0F80FF1FE0FF
-33F01F63F01FC3F01FC3F01FC1E01F80001F80001F80001F80001F80001F80001F80001F
-80001F80001F80001F80001F8000FFF800FFF800FFF80014167F9517>114
-D<07F3001FFF00781F00700F00F00700F00700F80000FF0000FFF0007FFC003FFE001FFF
-0007FF00003F80E00F80E00780F00780F00780F80700FC1E00FFFC00C7F00011167E9516
->I<01C00001C00001C00001C00003C00003C00003C00007C00007C0000FC0003FFF00FF
-FF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000F
-C3800FC3800FC3800FC3800FC3800FC30007E70003FE0000FC0011207F9F16>I<FF83FE
-00FF83FE00FF83FE001F807E001F807E001F807E001F807E001F807E001F807E001F807E
-001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80FE001F80FE
-000F83FFC007FF7FC001FC7FC01A167E951F>I<FFF03FE0FFF03FE0FFF03FE00FC00E00
-0FE01E0007E01C0007E01C0003F0380003F0380003F8780001F8700001FCF00000FCE000
-00FCE000007FC000007FC000007FC000003F8000003F8000001F0000001F0000000E0000
-1B167F951E>I<FFE3FF8FF8FFE3FF8FF8FFE3FF8FF81FC07C03C00FC0FE03800FC0FE03
-800FE0FF078007E1FF070007E1DF070003F1DF8E0003F38F8E0003F38F8E0001FB8FDC00
-01FF07DC0001FF07FC0000FF07F80000FE03F80000FE03F800007E03F000007C01F00000
-3C01E000003800E00025167F9528>I<FFF0FFE0FFF0FFE0FFF0FFE007E0780007F0F000
-03F8F00001F9E00000FFC00000FF8000007F0000003F0000001F8000003FC000007FE000
-00F7F00001E3F00001C1F80003C0FC000780FE00FFC1FFE0FFC1FFE0FFC1FFE01B167F95
-1E>I E /Ff 1 98 df<03CC0E2E183C381C301C701CE038E038E038E038C073C073C0F3
-60F263361E1C10107C8F14>97 D E /Fg 2 104 df<003C00E001C00380038003800380
-03800380038003800380038003800380038007001E00F8001E0007000380038003800380
-03800380038003800380038003800380038001C000E0003C0E257E9B13>102
-D<F8001E000700038003800380038003800380038003800380038003800380038001C000
-E0003C00E001C0038003800380038003800380038003800380038003800380038007001E
-00F8000E257E9B13>I E /Fh 30 122 df<00FC000383000603800E07801C07801C0300
-1C00001C00001C00001C0000FFFF80FFFF801C03801C03801C03801C03801C03801C0380
-1C03801C03801C03801C03801C03801C0380FF8FF0FF8FF0141A809915>12
-D<70F8FCFC7404040808102040060C7D990B>39 D<70F0F8F87808081010102040050C7D
-840B>44 D<70F8F8F87005057D840B>46 D<07E01C38381C381C700E700E700EF00FF00F
-F00FF00FF00FF00FF00FF00FF00FF00F700E700E700E381C381C1C3807E010187F9713>
-48 D<07E01FF8383C781C781E781E301E001E001C0038007007E00038001C000E000F00
-0F700FF80FF80EF01E703C3FF80FE010187F9713>51 D<70F8F8F87000000000000070F0
-F8F8780808101010204005177D8F0B>59 D<000C0000001E0000001E0000001E0000003F
-0000003F0000003F000000678000006780000067800000C3C00000C3C00000C3C0000181
-E0000181E0000181E0000300F00003FFF00007FFF80006007800060078000E007C000C00
-3C001E003C00FF81FFC0FF81FFC01A1A7F991D>65 D<07C21FF6383E701E600EE006E006
-E006F000F8007F803FF01FF80FFC01FE001E000F0007C007C007C007E006F00EFC1CDFF8
-87E0101A7E9915>83 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0FEFE07257D9B0B>91 D<FEFE060606060606060606060606060606
-060606060606060606060606060606060606FEFE0725809B0B>93
-D<1FC000707000783800781C00301C00001C0003FC001F1C003C1C00781C00F01C00F01D
-80F01D80F03D80785D801F8F0011107F8F13>97 D<FC0000FC00001C00001C00001C0000
-1C00001C00001C00001C00001C00001CFC001F07001E03801C03C01C01C01C01E01C01E0
-1C01E01C01E01C01E01C01E01C01C01C03801E03001F060018F800131A809915>I<07F0
-1C1C383C783C7018F000F000F000F000F000F0007000780C380C1C3807E00E107F8F11>
-I<003F00003F0000070000070000070000070000070000070000070000070003E7000C1F
-00180F00380700700700F00700F00700F00700F00700F00700F00700700700780700380F
-001C3FE007E7E0131A7F9915>I<07C01C7038387038701CF01CFFFCF000F000F000F000
-7000780C38081C3807E00E107F8F11>I<01F007180E3C0C3C1C181C001C001C001C001C
-00FFC0FFC01C001C001C001C001C001C001C001C001C001C001C001C00FF80FF800E1A80
-990C>I<0FC700387B80703B80F03C00F03C00F03C00F03C007038003870006FC0004000
-004000006000007FF0003FFC003FFE00600F00C00300C00300C00300C00300600600381C
-0007E00011187F8F13>I<387C7C7C380000000000FCFC1C1C1C1C1C1C1C1C1C1C1C1CFF
-FF081A80990A>105 D<FC00FC001C001C001C001C001C001C001C001C001C001C001C00
-1C001C001C001C001C001C001C001C001C001C001C00FF80FF80091A80990A>108
-D<FC7C1F00FD8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701
-C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F8FF9FE7F81D107F8F20>I<
-FC7C00FD87001E03801E03801C03801C03801C03801C03801C03801C03801C03801C0380
-1C03801C0380FF9FF0FF9FF01410808F15>I<07E01C38381C700E700EF00FF00FF00FF0
-0FF00FF00F700E700E381C1C3807E010107F8F13>I<FCFC00FF07001E03801C03C01C03
-C01C01E01C01E01C01E01C01E01C01E01C01E01C03C01C03801E07001F0E001CF8001C00
-001C00001C00001C00001C0000FF8000FF80001317808F15>I<FCF0FD1C1E3C1E3C1C18
-1C001C001C001C001C001C001C001C001C00FF80FF800E10808F0F>114
-D<1F2060E04060C060C060F0007F003FC01FE000F0C070C030E030E020F0408F800C107F
-8F0F>I<18001800180018001800180038007FC0FFC03800380038003800380038003800
-386038603860386038601CC007800B177F960F>I<FC1F80FC1F801C03801C03801C0380
-1C03801C03801C03801C03801C03801C03801C03801C07800C07800E0BF003F3F0141080
-8F15>I<FE3F80FE3F803C0E001C0C001C0C000E18000E18000E18000730000730000770
-0003E00003E00001C00001C00001C00011107F8F14>I<FE3F80FE3F803C0E001C0C001C
-0C000E18000E18000E180007300007300007700003E00003E00001C00001C00001C00001
-8000018000618000F30000F30000E6000078000011177F8F14>121
-D E /Fi 3 51 df<00C00000C00000C00000C00000C00000C00000C00000C00000C000FF
-FF80FFFF8000C00000C00000C00000C00000C00000C00000C00000C00000C00011147E8F
-17>43 D<0C007C009C001C001C001C001C001C001C001C001C001C001C001C001C00FF80
-09107E8F0F>49 D<1F006180C0C0E0E0E0E000E000C001C0018003000400082010203FC0
-7FC0FFC00B107F8F0F>I E /Fj 5 107 df<03F0000FFC001FFE003FFF007FFF807FFF80
-FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F000
-12127E9317>15 D<00000006000000000600000000060000000003000000000300000000
-0380000000018000000000C0000000006000000000700000000018FFFFFFFFFFFFFFFFFF
-FF00000000180000000070000000006000000000C0000000018000000003800000000300
-000000030000000006000000000600000000060028187E962D>33
-D<001F007F00F801E003C003C003C003C003C003C003C003C003C003C003C003C003C003
-C003C007800F00FE00F800FE000F00078003C003C003C003C003C003C003C003C003C003
-C003C003C003C003C003C001E000F8007F001F102D7DA117>102
-D<F800FE001F00078003C003C003C003C003C003C003C003C003C003C003C003C003C003
-C003C001E000F0007F001F007F00F001E003C003C003C003C003C003C003C003C003C003
-C003C003C003C003C003C007801F00FE00F800102D7DA117>I<C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C002
-2D7BA10D>106 D E /Fk 2 51 df<06001E00FE00EE000E000E000E000E000E000E000E
-000E000E000E000E000E000E000E000E00FFE0FFE00B157D9412>49
-D<1F803FE070F0F870F878F838703800780070007000E001C00180030006000C18101820
-387FF0FFF0FFF00D157E9412>I E /Fl 52 122 df<000FF000007FF80001F81C0003E0
-3E0007E07E000FC07E000FC07E000FC07E000FC03C000FC000000FC000000FC1FF00FFFF
-FF00FFFFFF00FFFFFF000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC0
-3F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F000FC03F007FF9FFE07FF9
-FFE07FF9FFE01B20809F1D>12 D<3C03C07E07E0FF0FF0FF8FF8FF8FF8FF8FF87F87F83D
-83D80180180380380300300300300600600E00E01C01C038038030030015117E9F1B>34
-D<3C007E00FF00FF80FF80FF807F803D80018003800300030006000E001C003800300009
-117D9F0F>39 D<3C7EFFFFFFFF7E3C08087D870F>46 D<00380000F80007F800FFF800FF
-F800F9F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
-F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE07F
-FFE0131D7D9C1A>49 D<03FC001FFF803FFFC07C1FE0FE07F0FE03F0FE03F8FE01F87C01
-F83801F80003F80003F00007E00007E0000FC0001F00003E00007C0000F00001E0380380
-380700380E00781FFFF83FFFF07FFFF0FFFFF0FFFFF0FFFFF0151D7E9C1A>I<03FC000F
-FF801FFFC03C0FE07E07F07E03F07E03F07E03F03C07F00007E0000FC0001F8003FE0003
-FC00000F800007E00003F00003F00003F83803F87C03F8FE03F8FE03F8FE03F0FC07F07C
-0FE03FFFC01FFF0003FC00151D7E9C1A>I<0001E00003E00003E00007E0000FE0001FE0
-003BE00073E000F3E001E3E001C3E00383E00703E00E03E01C03E03803E07803E0F003E0
-FFFFFEFFFFFEFFFFFE0007E00007E00007E00007E00007E000FFFE00FFFE00FFFE171D7F
-9C1A>I<3800E03FFFE03FFFC03FFF803FFF003FFC003FC0003800003800003800003800
-0039FC003FFF803E07C03803E01003F00003F00003F80003F87803F8FC03F8FC03F8FC03
-F8FC03F07807E07C0FE03FFFC00FFF0003F800151D7E9C1A>I<003F0001FFC007FFE00F
-C1E01F03F01E03F03E03F07E03F07C01E07C0000FC1000FCFF00FDFFC0FF03E0FE01F0FE
-01F0FC01F8FC01F8FC01F8FC01F87C01F87C01F87C01F83C01F03E01F01F03E00FFFC007
-FF8001FC00151D7E9C1A>I<7000007FFFF87FFFF87FFFF87FFFF07FFFE0FFFFC0F00380
-E00700E00E00E00E00001C0000380000780000700000F00000F00001F00001E00003E000
-03E00003E00007E00007E00007E00007E00007E00007E00003C000018000151E7D9D1A>
-I<01FE0007FF801FFFC03E07E03C03F07C01F07C01F07E01F07F81F07FE3E03FF3C03FFF
-801FFF000FFF8007FFC01FFFE03E7FF07C1FF87807F8F803F8F801F8F800F8F800F8F800
-F07C01F07F03E03FFFC00FFF8003FC00151D7E9C1A>I<0000E000000001F000000001F0
-00000003F800000003F800000003F800000007FC00000007FC0000000FFE0000000EFE00
-00000EFE0000001C7F0000001C7F0000003C7F800000383F800000383F800000701FC000
-00701FC00000F01FE00000E00FE00000FFFFE00001FFFFF00001FFFFF00003C007F80003
-8003F800038003F800070001FC00070001FC00FFF01FFFE0FFF01FFFE0FFF01FFFE0231F
-7E9E28>65 D<FFFFFE00FFFFFFC0FFFFFFE007E007F007E003F807E001FC07E001FC07E0
-01FC07E001FC07E001FC07E001FC07E001F807E003F007E00FE007FFFF8007FFFFE007E0
-03F007E001F807E000FC07E000FC07E000FE07E000FE07E000FE07E000FE07E000FE07E0
-01FC07E001FC07E007F8FFFFFFF0FFFFFFE0FFFFFF001F1F7E9E25>I<0007F806007FFF
-0E01FFFFDE03FE03FE07F000FE0FC0007E1F80003E3F80001E3F00001E7F00000E7E0000
-0E7E00000EFE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000
-007E00000E7F00000E3F00000E3F80001C1F80001C0FC0003807F0007803FE03F001FFFF
-C0007FFF800007FC001F1F7D9E26>I<FFFFFE0000FFFFFFC000FFFFFFF00007F007F800
-07F001FC0007F000FE0007F0007F0007F0003F0007F0003F8007F0001F8007F0001F8007
-F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0
-001FC007F0001FC007F0001F8007F0001F8007F0003F8007F0003F0007F0007F0007F000
-7E0007F001FC0007F007F800FFFFFFF000FFFFFFC000FFFFFE0000221F7E9E28>I<FFFF
-FFE0FFFFFFE0FFFFFFE007F007E007F003E007F001E007F000F007F000F007F0707007F0
-707007F0707007F0707007F1F00007FFF00007FFF00007FFF00007F1F00007F0700007F0
-701C07F0701C07F0701C07F0003807F0003807F0003807F0007807F0007807F001F807F0
-07F8FFFFFFF0FFFFFFF0FFFFFFF01E1F7E9E22>I<FFFFFFE0FFFFFFE0FFFFFFE007F007
-E007F003E007F001E007F000F007F000F007F0007007F0707007F0707007F0707007F070
-0007F1F00007FFF00007FFF00007FFF00007F1F00007F0700007F0700007F0700007F070
-0007F0000007F0000007F0000007F0000007F0000007F00000FFFFC000FFFFC000FFFFC0
-001C1F7E9E21>I<FFFF80FFFF80FFFF8007F00007F00007F00007F00007F00007F00007
-F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007
-F00007F00007F00007F00007F00007F00007F000FFFF80FFFF80FFFF80111F7F9E14>73
-D<FFFFC000FFFFC000FFFFC00007F0000007F0000007F0000007F0000007F0000007F000
-0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
-0007F001C007F001C007F001C007F001C007F003C007F003C007F0078007F0078007F00F
-8007F03F80FFFFFF80FFFFFF80FFFFFF801A1F7E9E1F>76 D<001FF80000FFFF0001F81F
-8007E007E00FC003F01F8001F81F0000F83F0000FC7F0000FE7E00007E7E00007EFE0000
-7FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7E0000
-7E7F0000FE7F0000FE3F0000FC3F8001FC1F8001F80FC003F007E007E001F81F8000FFFF
-00001FF800201F7D9E27>79 D<FFFFFE00FFFFFF80FFFFFFE007F00FF007F003F807F001
-F807F001FC07F001FC07F001FC07F001FC07F001FC07F001FC07F001F807F003F007F00F
-F007FFFFC007FFFF0007F0000007F0000007F0000007F0000007F0000007F0000007F000
-0007F0000007F0000007F0000007F00000FFFF8000FFFF8000FFFF80001E1F7E9E24>I<
-001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F8001F83F0000FC7F0000FE
-7F0000FE7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F
-FE00007FFE00007F7E00007E7E00007E7F0000FE3F0000FC3F87C1FC1F8FE1F80FD833F0
-07F81FE001F81F8000FFFF00001FFE0300000E0300000F0700000FFF000007FF000007FE
-000007FE000003FC000001F8000000F020287D9E27>I<FFFFF80000FFFFFF8000FFFFFF
-C00007F00FF00007F003F80007F001F80007F001FC0007F001FC0007F001FC0007F001FC
-0007F001FC0007F001F80007F003F00007F00FE00007FFFF800007FFFF000007F03F8000
-07F00FC00007F00FE00007F007F00007F007F00007F007F00007F007F00007F007F00007
-F007F00007F007F02007F007F07007F003F070FFFF81F8E0FFFF80FFC0FFFF803F80241F
-7E9E27>I<03FC180FFF381FFFF83E03F87C00F8780078F80078F80038F80038FC0000FF
-0000FFF8007FFF007FFFC03FFFE01FFFF00FFFF803FFF8001FFC0001FC0000FC00007CE0
-007CE0007CE0007CF00078F800F8FE01F0FFFFE0EFFFC0C1FF00161F7D9E1D>I<7FFFFF
-FC7FFFFFFC7FFFFFFC7E0FE0FC780FE03C700FE01CF00FE01EF00FE01EE00FE00EE00FE0
-0EE00FE00EE00FE00E000FE000000FE000000FE000000FE000000FE000000FE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF
-C007FFFFC007FFFFC01F1E7E9D24>I<FFFF007FF8FFFF007FF8FFFF007FF807F0000700
-07F8000F0003F8000E0003FC000E0001FC001C0001FC001C0001FE003C0000FE00380000
-FF007800007F007000007F807000003F80E000003F80E000001FC1C000001FC1C000001F
-E3C000000FE38000000FF780000007F700000007FF00000003FE00000003FE00000003FE
-00000001FC00000001FC00000000F800000000F800000000700000251F7F9E28>86
-D<0600600E00E01C01C0380380300300600600600600E00E00C00C00DE0DE0FF0FF0FF8F
-F8FF8FF8FF8FF87F87F83F03F01E01E015117D9F1B>92 D<07FC001FFF803F0FC03F07E0
-3F03F03F03F00C03F00003F001FFF00FFFF01F83F07E03F07C03F0F803F0F803F0F803F0
-FC07F07E0DFE3FF8FE07E07E17147F9319>97 D<FF800000FF800000FF8000001F800000
-1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8FE000
-1FFFF8001FF07C001FC03E001F803F001F801F001F801F001F801F801F801F801F801F80
-1F801F801F801F801F801F801F801F001F801F001F803E001FC03E001FE0FC001E7FF000
-1C1FC00019207F9F1D>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC
-0000FC0000FC0000FC0000FC00007C00007E00003E00E03F01C01F83C007FF8001FC0013
-147E9317>I<0007FC000007FC000007FC000000FC000000FC000000FC000000FC000000
-FC000000FC000000FC000000FC000000FC0001FCFC000FFFFC001F83FC003E00FC007E00
-FC007C00FC007C00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC007C00
-FC007C00FC007E00FC003E01FC001F07FF800FFFFF8003F8FF8019207E9F1D>I<01FE00
-07FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC0000
-7C00007C00003E00381E00380F80F007FFE000FF8015147F9318>I<003F8000FFC003F3
-E007E7E007C7E00FC7E00FC3C00FC0000FC0000FC0000FC0000FC000FFFC00FFFC00FFFC
-000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
-000FC0000FC0007FFC007FFC007FFC0013207F9F10>I<03FC7C0FFFFE1E07DE3C03DE7C
-03EC7C03E07C03E07C03E07C03E03C03C01E07801FFF0033FC003000007000007800007F
-FF803FFFF03FFFF81FFFFC3FFFFC7C00FEF8003EF8003EF8003EF8003E7C007C3F01F80F
-FFE003FF80171E7F931A>I<FF800000FF800000FF8000001F8000001F8000001F800000
-1F8000001F8000001F8000001F8000001F8000001F8000001F87F0001F9FF8001FB8FC00
-1FE07E001FC07E001FC07E001F807E001F807E001F807E001F807E001F807E001F807E00
-1F807E001F807E001F807E001F807E001F807E00FFF3FFC0FFF3FFC0FFF3FFC01A207E9F
-1D>I<1E003F007F807F807F807F803F001E0000000000000000000000FF80FF80FF801F
-801F801F801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF0FFF00C217E
-A00F>I<FF800000FF800000FF8000001F8000001F8000001F8000001F8000001F800000
-1F8000001F8000001F8000001F8000001F83FF001F83FF001F83FF001F81E0001F83C000
-1F8780001F9E00001FBC00001FFE00001FFF00001FDF00001F9F80001F0FC0001F07E000
-1F03E0001F03F0001F01F800FFE3FF80FFE3FF80FFE3FF8019207F9F1C>107
-D<FF80FF80FF801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
-801F801F801F801F801F801F801F801F801F801F801F80FFF0FFF0FFF00C207E9F0F>I<
-FF07F00FE000FF1FFC3FF800FF387E70FC001F603FC07E001FC03F807E001FC03F807E00
-1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00
-1F803F007E001F803F007E001F803F007E001F803F007E001F803F007E00FFF1FFE3FFC0
-FFF1FFE3FFC0FFF1FFE3FFC02A147E932D>I<FF07F000FF1FF800FF38FC001F607E001F
-C07E001FC07E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F
-807E001F807E001F807E001F807E00FFF3FFC0FFF3FFC0FFF3FFC01A147E931D>I<01FF
-0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC00
-7E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<FF8FE000FFFFF8
-00FFF0FC001FC07E001F803F001F803F001F801F001F801F801F801F801F801F801F801F
-801F801F801F801F801F801F001F803F001F803E001FC07E001FE0FC001FFFF0001F9FC0
-001F8000001F8000001F8000001F8000001F8000001F800000FFF00000FFF00000FFF000
-00191D7F931D>I<01F81C0007FE3C001F87FC003F01FC003E00FC007E00FC007C00FC00
-FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC007C00FC007E00FC007E00FC00
-3F01FC001F87FC000FFEFC0003F8FC000000FC000000FC000000FC000000FC000000FC00
-0000FC000007FF800007FF800007FF80191D7E931C>I<FF1F00FF3FC0FF67E01FC7E01F
-C7E01FC7E01F81801F80001F80001F80001F80001F80001F80001F80001F80001F80001F
-8000FFF800FFF800FFF80013147F9316>I<0FE63FFE783E700EF00EF00EFE00FFE07FF8
-3FFC1FFE0FFF007FE01FE00FF00FF00EFC1EFFFCC7F010147E9315>I<03800380038003
-800780078007800F801F803FFCFFFCFFFC1F801F801F801F801F801F801F801F801F801F
-8E1F8E1F8E1F8E1F8E0F9C07F803F00F1D7F9C14>I<FF83FE00FF83FE00FF83FE001F80
-7E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F807E001F80
-7E001F807E001F807E001F80FE001F80FE000F83FFC007FF7FC001FC7FC01A147E931D>
-I<FFF0FF80FFF0FF80FFF0FF800FC038000FC038000FE0780007E0700007F0F00003F0E0
-0003F9E00001F9C00001F9C00000FF800000FF800000FF8000007F0000007F0000003E00
-00003E0000001C000019147F931C>I<FFE7FF3FE0FFE7FF3FE0FFE7FF3FE01F80FC0700
-0FC1FC0E000FC1FC0E000FC3FE1E0007E3BE1C0007E3BE1C0007F7BF3C0003F71F380003
-F71FB80001FE0FF00001FE0FF00001FE0FF00000FC07E00000FC07E00000FC07E0000078
-03C000007803C00023147F9326>I<FFF3FF00FFF3FF00FFF3FF000FE0E00007E1E00003
-F3C00001FF800000FF000000FE0000007E0000003F0000007F800000FFC00001EFE00003
-C7E0000383F0000781F800FFC3FF80FFC3FF80FFC3FF8019147F931C>I<FFF0FF80FFF0
-FF80FFF0FF800FC038000FC038000FE0780007E0700007F0F00003F0E00003F9E00001F9
-C00001F9C00000FF800000FF800000FF8000007F0000007F0000003E0000003E0000001C
-0000001C00000038000078380000FC780000FC700000E0E00000F1E000007F8000001E00
-0000191D7F931C>I E /Fm 86 127 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F87000
-0000000070F8F8F870051C779B18>33 D<2008701CF83EF83EF83EF83EF83EF83E701C70
-1C701C701C701C30180F0E7C9C18>I<030600078F00078F00078F00078F00078F00078F
-007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFF
-E0FFFFE07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<00
-C00001C00001C00001C00003F0000FFC003FFE007DDF0071CF00E1C780E1CF80E1CF80E1
-CF80F1C70079C0007FC0003FF0001FFC0007FE0001FF0001CF0021C78071C380F9C380F9
-C380F1C380F1C70079C7007DDE003FFC001FF80007E00001C00001C00001C00000C00011
-247D9F18>I<3803007C07807C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E00
-7C3C007C3C00387C0000780000780000F80000F00001F00001E00001E00003E00003C000
-03C00007C0000783800787C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE03C07C0
-3C07C018038013247E9F18>I<01C00007E0000FF0000E70001C38001C38001C38001C38
-001C73F81CF3F81CE3F80FC1C00FC3800F83800F03801F07003F87007B8E0071CE00F1FC
-00F0FC00F07C00F07870F0787078FE707FFFE03FC7E00F03C0151C7F9B18>I<387C7C7E
-3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E001E003C003C
-007800780078007000F000F000F000F000F000F000F000F00070007800780078003C003C
-001E001E000F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F00
-0780078003C003C001E001E001E000E000F000F000F000F000F000F000F000F000E001E0
-01E001E003C003C0078007800F001E003C007800F00060000C247C9F18>I<01C00001C0
-0001C00001C00061C300F9CF80FDDF807FFF003FFE000FF8000FF8003FFE007FFF00FDDF
-80F9CF8061C30001C00001C00001C00001C00011147D9718>I<00600000F00000F00000
-F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000
-F00000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C78
-8518>I<7FFFC0FFFFE0FFFFE07FFFC013047E8F18>I<3078FCFC78300606778518>I<00
-0300000780000780000F80000F00001F00001E00001E00003E00003C00007C0000780000
-780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F
-00001F00001E00003E00003C00003C00007C0000780000F80000F00000F0000060000011
-247D9F18>I<01F00007FC000FFE001F1F001E0F003C07807803C07803C07803C0F001E0
-F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F803E07803C07803C07C07C0
-3C07801E0F001F1F000FFE0007FC0001F000131C7E9B18>I<01C001C003C007C007C01F
-C0FFC0FBC063C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003
-C003C07FFEFFFF7FFE101C7C9B18>I<03F0001FFE003FFF007C0F807807C0F003C0F801
-E0F801E07001E00001E00001E00003C00003C0000780000780000F00001E00003C0000F8
-0001F00003E00007C0000F80001E01E03C01E07FFFE0FFFFE07FFFE0131C7E9B18>I<03
-F8001FFE003FFF003C0F807C07C07C03C07C03C01003C0000380000780000F0003FE0003
-FE0003FF00000F800007C00003C00001E00001E00001E07001E0F801E0F803C0F007C07C
-0F807FFF001FFE0007F000131C7E9B18>I<001F00003F00007F0000770000F70001E700
-01C70003C7000787000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8
-FFFFF8000700000700000700000700000700000700007FF0007FF0007FF0151C7F9B18>
-I<3FFF807FFF807FFF807800007800007800007800007800007800007800007800007BF8
-007FFE007FFF007C0F803003C00003C00001E00001E07001E0F801E0F801E0F803C07807
-C07C0F803FFF001FFC0003F000131C7E9B18>I<F00000FFFFE0FFFFE0FFFFE0F007C0F0
-0F80000F00001E00003C00003C0000780000780000F00000F00001E00001E00001E00003
-C00003C00003C00003C00007800007800007800007800007800007800007800003000013
-1D7E9C18>55 D<3078FCFC783000000000000000003078FCFC78300614779318>58
-D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<0000
-C00003E00007E0001FC0003F8000FE0001FC0007F0000FE0003F80007F0000FC0000FC00
-007F00003F80000FE00007F00001FC0000FE00003F80001FC00007E00003E00000C01318
-7E9918>I<7FFFC0FFFFE0FFFFE07FFFC00000000000000000000000007FFFC0FFFFE0FF
-FFE07FFFC0130C7E9318>I<600000F80000FC00007F00003F80000FE00007F00001FC00
-00FE00003F80001FC00007E00007E0001FC0003F8000FE0001FC0007F0000FE0003F8000
-7F0000FC0000F8000060000013187E9918>I<0FF0003FFC007FFF00781F00F80780F807
-80F80780201F00007E0000FC0001F00001E00003C00003C00003C00003C00003C0000380
-0000000000000000000000000000000003800007C00007C00007C000038000111C7D9B18
->I<007C0001FE0007FF000F87801E03C03C1DC0387FC070FFE071E3E071C1E0E1C1E0E3
-80E0E380E0E380E0E380E0E380E0E380E0E1C1C071C1C071E3C070FF80387F003C1C001E
-01E00F83E007FFC001FF80007E00131C7E9B18>I<00F80000F80000F80001FC0001DC00
-01DC0001DC0003DE0003DE0003DE0003DE00038E00078F00078F00078F00078F00078F00
-0F07800FFF800FFF800FFF800F07801E03C01E03C01E03C07F8FF0FF8FF87F8FF0151C7F
-9B18>I<7FFE00FFFF007FFF801E07C01E03C01E01E01E01E01E01E01E01E01E01E01E03
-C01E07C01FFF801FFF001FFFC01E03E01E01E01E00F01E00F01E00F01E00F01E00F01E00
-F01E01E01E03E07FFFC0FFFF807FFE00141C7F9B18>I<00F8E003FFE007FFE00F07E01E
-03E03C03E03C01E07801E07801E0700000F00000F00000F00000F00000F00000F00000F0
-0000F000007000007801E07801E03C01E03C01E01E03C00F07C007FF8003FE0000F80013
-1C7E9B18>I<7FFC00FFFF007FFF801E07C01E03E01E01E01E01F01E00F01E00F01E00F8
-1E00781E00781E00781E00781E00781E00781E00781E00781E00781E00F01E00F01E01F0
-1E01E01E03E01E07C07FFF80FFFF007FFC00151C809B18>I<FFFFF0FFFFF0FFFFF01E00
-F01E00F01E00F01E00F01E00001E00001E0F001E0F001E0F001FFF001FFF001FFF001E0F
-001E0F001E0F001E00001E00001E00781E00781E00781E00781E0078FFFFF8FFFFF8FFFF
-F8151C7F9B18>I<FFFFF8FFFFF8FFFFF81E00781E00781E00781E00781E00001E00001E
-0F001E0F001E0F001FFF001FFF001FFF001E0F001E0F001E0F001E00001E00001E00001E
-00001E00001E00001E0000FFE000FFE000FFE000151C7F9B18>I<01F1C007FFC00FFFC0
-1F0FC01E07C03C03C03803C07803C07803C0700000F00000F00000F00000F00000F00000
-F01FF0F03FF0F01FF07003C07803C07803C03807C03C07C01E0FC01F0FC00FFFC007FFC0
-01F3C0141C7E9B18>I<7F8FF0FFDFF87F8FF01E03C01E03C01E03C01E03C01E03C01E03
-C01E03C01E03C01E03C01FFFC01FFFC01FFFC01E03C01E03C01E03C01E03C01E03C01E03
-C01E03C01E03C01E03C01E03C07F8FF0FFDFF87F8FF0151C7F9B18>I<7FFF80FFFFC07F
-FF8001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001
-E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0007FFF80FF
-FFC07FFF80121C7D9B18>I<01FFE001FFE001FFE0000F00000F00000F00000F00000F00
-000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
-000F00700F00F80F00F80F00F83E007FFC003FF8000FE000131C7E9B18>I<FFE000FFE0
-00FFE0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00
-001E00001E00001E00001E00001E00001E00001E00F01E00F01E00F01E00F01E00F0FFFF
-F0FFFFF0FFFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83F07E03B06E03B06E03B06E0
-3B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038F8E038F8E03870E03870E0
-3800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07
-F0FF0FF87F07F01F81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61
-C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0F
-C07F07C0FF87C07F03C0151C7F9B18>I<0FFE003FFF807FFFC07C07C07803C0F803E0F0
-01E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0
-01E0F001E0F001E0F001E0F803E07803C07C07C07FFFC03FFF800FFE00131C7E9B18>I<
-FFFE00FFFF80FFFFC01E07C01E03E01E01E01E00F01E00F01E00F01E00F01E00F01E01E0
-1E03E01E07C01FFFC01FFF801FFE001E00001E00001E00001E00001E00001E00001E0000
-1E0000FFC000FFC000FFC000141C7F9B18>I<7FF800FFFE007FFF001E1F801E07801E07
-C01E03C01E03C01E03C01E07C01E07801E1F801FFF001FFE001FFE001E0F001E0F001E07
-801E07801E07801E07801E07801E07BC1E07BC1E07BC7F83F8FFC1F87F80F0161C7F9B18
->82 D<7FFFF8FFFFF8FFFFF8F07878F07878F07878F07878007800007800007800007800
-007800007800007800007800007800007800007800007800007800007800007800007800
-00780000780007FF8007FF8007FF80151C7F9B18>84 D<FFC7FEFFC7FEFFC7FE1E00F01E
-00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E
-00F01E00F01E00F01E00F01E00F01E00F00F01E00F01E007C7C003FF8001FF00007C0017
-1C809B18>I<FF07F8FF8FF8FF07F83C01E01E03C01E03C01E03C01E03C00F07800F0780
-0F07800F07800F0780078F00078F00078F00078F00038E00038E0003DE0003DE0001DC00
-01DC0001DC0001FC0001FC0000F80000F800151C7F9B18>I<FE03F8FE03F8FE03F87000
-707000707000703800E03800E03800E03800E03800E038F8E039FCE039DCE039DCE019DC
-C019DCC019DCC0198CC0198CC01D8DC01D8DC01D8DC01D05C00F07800F07800F07800E03
-80151C7F9B18>I<7F8FE07F9FE07F8FE00F0F800F8F00079F0007DE0003FE0003FC0001
-FC0001F80000F80000F00000F00000F80001F80001FC0003FC0003DE00079E00078F0007
-8F000F07800F07801E07C07F8FF0FF8FF87F8FF0151C7F9B18>I<FFFCFFFCFFFCF000F0
-00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
-00F000F000F000F000F000F000F000F000F000F000FFFCFFFCFFFC0E24789F18>91
-D<600000F00000F00000F800007800007C00003C00003C00003E00001E00001F00000F00
-000F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F8000078
-00007800007C00003C00003E00001E00001E00001F00000F00000F800007800007800003
-0011247D9F18>I<FFFCFFFCFFFC003C003C003C003C003C003C003C003C003C003C003C
-003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C
-003CFFFCFFFCFFFC0E247F9F18>I<03800FE03FF8FFFEFC7EF01E40040F077C9B18>I<7F
-FFC0FFFFE0FFFFE07FFFC013047E7F18>I<061E3E387070E0E0E0F8FC7C7C38070E789E
-18>I<0FF0003FFC007FFE007C1F007C0F0038078000078000FF8007FF801FFF807F8780
-7C0780F00780F00780F00780F807807C1F803FFFF81FFBF807E1F815147E9318>I<7F00
-00FF00007F00000F00000F00000F00000F00000F00000F3E000FFF800FFFE00FC1F00F80
-F00F00780F00780F003C0F003C0F003C0F003C0F003C0F003C0F00780F80780F80F00FC1
-F00FFFE00FFF80073E00161C809B18>I<01FC0007FF001FFF803E0F803C0F8078070078
-0000F00000F00000F00000F00000F00000F000007800007803C03C03C03E07C01FFF8007
-FF0001FC0012147D9318>I<001FC0003FC0001FC00003C00003C00003C00003C00003C0
-01F3C007FFC01FFFC03E0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003C0
-F003C07803C07807C03C07C03E1FC01FFFF807FBFC01F3F8161C7F9B18>I<01F80007FE
-000FFF001F0F803C03C07803C07801C0F001E0F001E0FFFFE0FFFFE0FFFFE0F000007800
-007801E03C01E01F03E00FFFC007FF8000FE0013147E9318>I<001F80007FC000FFE000
-F3E001E3E001E08001E00001E0007FFFC0FFFFC0FFFFC001E00001E00001E00001E00001
-E00001E00001E00001E00001E00001E00001E00001E00001E00001E0007FFF807FFF807F
-FF80131C7F9B18>I<03F1E00FFFF01FFFF83E1F783C0F30780780780780780780780780
-7807803C0F003E1F003FFE003FFC003BF0003800003800001FFE001FFFC03FFFE07801F0
-700070E00038E00038E00038E000387800F07E03F01FFFC00FFF8001FC00151F7F9318>
-I<7F0000FF00007F00000F00000F00000F00000F00000F00000F1F000F7F800FFFC00FE1
-C00FC1E00F81E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01
-E00F01E07FE3FCFFF3FE7FE3FC171C809B18>I<01C00003E00003E00003E00001C00000
-00000000000000000000007FE000FFE0007FE00001E00001E00001E00001E00001E00001
-E00001E00001E00001E00001E00001E00001E00001E00001E000FFFF80FFFF80FFFF8011
-1D7D9C18>I<001C003E003E003E001C00000000000000000FFE0FFE0FFE001E001E001E
-001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E
-701CF83CF878FFF87FF01FC00F277E9C18>I<7E0000FE00007E00000E00000E00000E00
-000E00000E00000E3FF00E3FF00E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8
-000FFC000F9C000F0E000E0F000E07000E03800E03C07FC7F8FFC7F87FC7F8151C7F9B18
->I<FFE000FFE000FFE00001E00001E00001E00001E00001E00001E00001E00001E00001
-E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001
-E00001E000FFFFC0FFFFC0FFFFC0121C7D9B18>I<F9C1C0FFF7F0FFFFF03E3E383C3C38
-3C3C38383838383838383838383838383838383838383838383838383838383838383838
-FE3E3EFE7E7EFE3E3E1714809318>I<7F1F00FF7F807FFFC00FE1C00FC1E00F81E00F01
-E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E07FE3FCFFF3
-FE7FE3FC1714809318>I<01F0000FFE001FFF003E0F803C07807803C07803C0F001E0F0
-01E0F001E0F001E0F001E0F001E07803C07803C03C07803F1F801FFF000FFE0001F00013
-147E9318>I<7F3E00FFFF807FFFE00FC1F00F80F00F00780F00780F003C0F003C0F003C
-0F003C0F003C0F003C0F00780F80780F80F00FC1F00FFFE00FFF800F3E000F00000F0000
-0F00000F00000F00000F00000F00007FE000FFF0007FE000161E809318>I<01F9E007FD
-E00FFFE01F0FE03C07E07803E07801E0F001E0F001E0F001E0F001E0F001E0F001E07801
-E07803E03C07E03E0FE01FFFE007FDE001F1E00001E00001E00001E00001E00001E00001
-E00001E0000FFC001FFE000FFC171E7F9318>I<FF87E0FF9FF0FFBFF807F87807F03007
-E00007C00007C000078000078000078000078000078000078000078000078000078000FF
-FE00FFFF00FFFE0015147F9318>I<07FF003FFF007FFF00700F00E00F00E00F00F00000
-7E00007FF0001FFC0007FF00003F00700780F00380F00380F80380FC0F00FFFF00FFFC00
-E7F00011147D9318>I<0380000780000780000780000780007FFFC0FFFFC0FFFFC00780
-000780000780000780000780000780000780000780000780000780C00781E00781E00781
-E003C3C003FFC001FF00007E0013197F9818>I<7F0FE0FF1FE07F0FE00F01E00F01E00F
-01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F01E00F03E00F07E007
-FFFC03FFFE01F9FC1714809318>I<7F8FF0FF8FF87F8FF01C01C00E03800E03800E0380
-070700070700070700078F00038E00038E0003DE0001DC0001DC0001DC0000F80000F800
-00700015147F9318>I<FF07F8FF8FF8FF07F83800E03800E03800E03800E01C01C01C71
-C01CF9C01CF9C01CF9C01DDDC00DDD800DDD800DDD800F8F800F8F800F8F800707001514
-7F9318>I<7F8FF07F9FF07F8FF00F0700078E00039E0001DC0001F80000F80000700000
-F00000F80001DC00039E00038E000707000E07807F8FF0FF8FF87F8FF015147F9318>I<
-7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038700038E00
-01CE0001CE0001CC0000DC0000FC0000780000780000780000700000700000700000F000
-7CE0007DE00073C0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07803
-E07807C0780F80001F00003E00007C0000F80001F00003E00007C0000F80F01F00F03E00
-F07C00F0FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE0007C0000F00000
-F00000F00000F00000F00000F00000F00000F00000F00000F00000F00001F0007FE000FF
-C000FFC0007FE00001F00000F00000F00000F00000F00000F00000F00000F00000F00000
-F00000F00000F000007C00007FE0001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0
-F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7E00
-00FF8000FFE00003E00000F00000F00000F00000F00000F00000F00000F00000F00000F0
-0000F00000F00000F800007FC0003FE0003FE0007FC000F80000F00000F00000F00000F0
-0000F00000F00000F00000F00000F00000F00000F00003E000FFE000FF80007E00001324
-7E9F18>I<0E0C1F1E3FBEFBF8F1F060E00F067C9B18>I E /Fn 39
-122 df<00001FE000007FF00001C0380001807800038078000700300007000000070000
-00070000000E0000000E0000000E000000FFFFE000FFFFE0001C01C0001C01C0001C01C0
-001C01C0001C038000380380003803800038038000380700003807000078070000700718
-00700E3000700E3000700E3000600E6000E007E000E003C000E0000000E0000001C00000
-01C00000318000007B800000F30000007E0000003C0000001D29829F1A>12
-D<00003FC0FF800000FFE3FFC00001C1E700E0000381EE01E0000380DC01E00007001C00
-C0000700180000000700380000000700380000000E00380000000E00380000000E007000
-0000FFFFFFFF8000FFFFFFFF80000E00700700001C00700700001C00700700001C00E007
-00001C00E00E00001C00E00E00003800E00E00003800E00E00003801C01C00003801C01C
-00003801C01C00007001C01C60007001C038C00070038038C00070038038C00070038039
-8000E003801F8000E003000F0000E00700000000E00700000001C00700000001C00E0000
-0031860E000000798F1C000000F31E380000007E0FF00000003C07C00000002B29829F28
->14 D<00E001F001F003E003E003E003C003C003C00780078007800700070007000E000E
-000E000C000C001C0018001800000000000000000000007000F800F800F000E0000C217B
-A00E>33 D<1C1C3E3E7E7E7E7E3E3E06060C0C0C0C1818181830306060C0C080800F0E78
-9F17>I<70F8F8F0E005057B840E>46 D<000200060006000E003C00FC03DC031C003800
-3800380038007000700070007000E000E000E000E001C001C001C001C003800380038003
-80FFF8FFF80F1E7B9D17>49 D<0007C0001FE000386000E0E001C1E001C1E00380C00700
-000F00000E00001E10001E7C001DFE003F07003E07003C07807C07807807807807807807
-80700F00700F00F00F00F00E00F01E00701C0070380070380038F0001FC0000F8000131F
-7B9D17>54 D<001F00007F8000E1C001C0E00380E00700E00700E00700E00F01C00F01C0
-0F838007C70007EE0003F80001F80003FC000E7E001C3F00381F00700F00700700E00700
-E00700E00700E00E00E00E00E01C00E0380070F0003FE0001F8000131F7B9D17>56
-D<070F1F1F0E0000000000000000000070F8F8F0E008147B930E>58
-D<0000FE020007FF06001F818C003E00DC0078007C00F0007C01E0003803C00038078000
-380F8000381F0000301F0000303E0000303E0000007C0000007C0000007C0000007C0000
-00F8000000F8000000F8000000F80000C0F80001807800018078000300780003003C0006
-003C000C001E0018000F00300007C0E00003FF800000FE00001F217A9F21>67
-D<01FFFFFC01FFFFF8001E0078001E0038001E0038003C0018003C0018003C0018003C00
-3000780C3000780C3000780C0000781C0000F0380000FFF80000FFF80000F0380001E030
-0001E0300001E0300001E0300003C0000003C0000003C0000003C0000007800000078000
-000780000007800000FFFC0000FFF800001E1F7D9E1E>70 D<00FF007FE001FF00FFC000
-1F001E00001F800C00001F800C0000378018000033C018000033C018000033C018000063
-C030000061E030000061E030000061E0300000C0F0600000C0F0600000C0F0600000C078
-6000018078C000018078C00001803CC00001803CC00003003D800003001F800003001F80
-0003001F800006000F000006000F000006000F00000E000F0000FFC0060000FFC0060000
-231F7D9E22>78 D<01FFFF8001FFFFE0001E01F0001E0078001E0078003C007C003C007C
-003C007C003C007C007800F8007800F8007800F0007801E000F003C000F00F8000FFFF00
-00FFF80001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000
-07800000078000000780000007800000FFF80000FFF000001E1F7D9E1F>80
-D<0007E040001FF8C0003C1D8000700F8000E0078001C007800180030003800300038003
-0003800300038000000380000003C0000003F8000001FF800001FFE000007FF000001FF0
-000001F80000007800000038000000380000003800300038003000380030003000700070
-00700060007800E0007801C000EE078000C7FE000081F800001A217D9F1A>83
-D<06060E0E1C1C1818303060606060C0C0C0C0F0F0F8F8F8F8F8F870700F0E749F17>92
-D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E
-00F00E00F00E30F01C60F03C60707C6078FCC03FCFC00F070014147C9317>97
-D<07803F803F000700070007000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F38
-0F700F700F700F700FE01EE01EE01EE03CE03CE038607071E03FC01F0010207B9F15>I<
-007E0001FF000383800F07801E07801C07003C0200780000780000780000F00000F00000
-F00000F00000F00000700200700700381E001FF80007E00011147C9315>I<0000780003
-F80003F00000700000700000700000E00000E00000E00000E00001C00001C000F1C003FD
-C0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00F00E00F00E
-30F01C60F03C60707C6078FCC03FCFC00F070015207C9F17>I<007C0001FF000783000F
-01801E01803C01803C0300780E007FFC007FE000F00000F00000F00000F0000070000070
-02007807003C1E001FF80007E00011147C9315>I<0000F80001FC0003BC00033C000718
-000700000700000E00000E00000E00000E00000E0000FFE001FFE0001C00001C00001C00
-00380000380000380000380000380000700000700000700000700000700000E00000E000
-00E00000E00000E00001C00001C00001C0000180003380007B8000F300007E00003C0000
-1629829F0E>I<003C6000FF7001E3E00381E00701E00F01E00F01C01E01C01E01C01E01
-C03C03803C03803C03803C03803C07003C0F001C1F001E3F000FFE0003CE00000E00000E
-00001C00001C00301C00783800F0F0007FE0003F8000141D7E9315>I<01E0000FE0000F
-C00001C00001C00001C000038000038000038000038000070000070000073E00077F000E
-C3800F81C00F01C00E01C01E03801C03801C03801C0380380700380700380700380E1870
-0E30700E30701C60700C60E00FC060078015207D9F17>I<006000F000F000E000000000
-000000000000000000000F001F80318031C063806380C3800700070007000E000E000E00
-1C301C601C6038C018C01F800F000C1F7D9E0E>I<0001800003C00003C0000380000000
-000000000000000000000000000000000000003C00007E0000C700018700030700030700
-060E00000E00000E00000E00001C00001C00001C00001C00003800003800003800003800
-00700000700000700000700000E00000E00030E00079C000F380007F00003C0000122882
-9E0E>I<01E0000FE0000FC00001C00001C00001C0000380000380000380000380000700
-000700000703C00707E00E0C600E18E00E31E00E61E01CC1C01F80001F00001FC00039E0
-003870003870003838607070C07070C07070C0703980E03F00601E0013207D9F15>I<03
-C01FC01F8003800380038007000700070007000E000E000E000E001C001C001C001C0038
-003800380038007000700070007180E300E300E300E6007E003C000A207C9F0C>I<1E07
-C0F8003F1FE1FC0033B8730E0063E076070063C03C07006380380700C780780E00070070
-0E000700700E000700700E000E00E01C000E00E01C000E00E01C000E00E038601C01C038
-C01C01C038C01C01C071801C01C031803803803F001801801E0023147D9325>I<1E07C0
-3F1FE033B87063E07063C038638038C780700700700700700700700E00E00E00E00E00E0
-0E01C31C01C61C01C61C038C1C018C3801F81800F018147D931A>I<007C0001FF000383
-800F01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780F007
-00700F00701E003838001FF00007C00013147C9317>I<01C1E007E7F8067E3C0C7C1C0C
-781E0C701E18E01E00E01E00E01E00E01E01C03C01C03C01C03C01C07803C07803C07003
-C0E003E3C0077F80071E000700000700000E00000E00000E00000E00001C0000FFC000FF
-8000171D809317>I<0E0F003F3F8033F1C063C1C063C3C06383C0C78380070000070000
-0700000E00000E00000E00000E00001C00001C00001C00001C000038000018000012147D
-9313>114 D<00FC03FE07070E0F0E0F0E0E1E000F800FF007F803FC003E001E701EF01C
-F01CE03860703FE01F8010147D9313>I<018001C0038003800380038007000700FFF0FF
-F00E000E000E000E001C001C001C001C0038003800380038307060706070C071803F001E
-000C1C7C9B0F>I<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C007
-01C00E03800E03800E03800E038C0E07180E07180E0F180E1F3007F3F003E1C016147D93
-18>I<0F01C01F83C03183E031C1E06380E06380E0C380C00700C00700C00700C00E0180
-0E01800E01800E03000E03000E06000E06000F0C0007F80001E00013147D9315>I<0F00
-60E01F8071E03180E1F031C0E0F06380E0706380E070C381C0600701C0600701C0600701
-C0600E0380C00E0380C00E0380C00E0381800E0381800E0781800E078300070F860007F9
-FC0001F0F8001C147D931E>I<0787800FCFC018F8E03070E06071E06071E0C0E1C000E0
-0000E00000E00001C00001C00001C00071C060F380C0F380C0E38180C7C3007CFE00387C
-0013147D9315>I<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C007
-01C00E03800E03800E03800E03800E07000E07000E0F000E1F0007FE0003EE00000E0000
-0E00001C00781C0078380070700060E0003FC0001F0000141D7D9316>I
-E /Fo 77 123 df<001FC1F0007FF7F801F07E7C03C0FC7C0780FC7C0F00F8380F007800
-0F0078000F0078000F0078000F0078000F007800FFFFFF80FFFFFF800F0078000F007800
-0F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F007800
-0F0078000F0078000F0078000F0078000F0078007FE3FF807FE3FF801E20809F1B>11
-D<001F8000FFC001E0E003C0F00781F00F01F00F00E00F00000F00000F00000F00000F00
-00FFFFF0FFFFF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00
-F00F00F00F00F00F00F00F00F00F00F00F00F07FC3FE7FC3FE1720809F19>I<001FB000
-FFF001E1F003C1F00781F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFFFF0FF
-FFF00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F
-00F00F00F00F00F00F00F00F00F07FE7FE7FE7FE1720809F19>I<001FC0FC00007FE7FE
-0001F07F070003C0FE07800780FC0F800F00F80F800F007807000F007800000F00780000
-0F007800000F007800000F00780000FFFFFFFF80FFFFFFFF800F007807800F007807800F
-007807800F007807800F007807800F007807800F007807800F007807800F007807800F00
-7807800F007807800F007807800F007807800F007807800F007807800F007807807FE3FF
-3FF07FE3FF3FF02420809F26>I<070F1F1E3C78F0E0400809779F17>19
-D<7038F87CFC7EFC7E7C3E0C060C060C06180C180C381C3018603040200F0E7F9F17>34
-D<70F8FCFC7C0C0C0C181838306040060E7C9F0D>39 D<006000C001800380070006000E
-001C001C003C003800380078007000700070007000F000F000F000F000F000F000F000F0
-00F000F000F000F00070007000700070007800380038003C001C001C000E000600070003
-80018000C000600B2E7CA112>I<C0006000300038001C000C000E000700070007800380
-038003C001C001C001C001C001E001E001E001E001E001E001E001E001E001E001E001E0
-01C001C001C001C003C0038003800780070007000E000C001C00380030006000C0000B2E
-7EA112>I<00030000000300000003000000030000000300000003000000030000000300
-0000030000000300000003000000030000000300000003000000030000FFFFFFFCFFFFFF
-FC0003000000030000000300000003000000030000000300000003000000030000000300
-000003000000030000000300000003000000030000000300001E207E9A23>43
-D<70F8F8F878181818183030606040050E7C840D>I<FFF0FFF0FFF00C03808B0F>I<70F8
-F8F87005057C840D>I<0000400000C00001800001800001800003000003000003000006
-00000600000C00000C00000C000018000018000018000030000030000060000060000060
-0000C00000C00000C0000180000180000180000300000300000600000600000600000C00
-000C00000C0000180000180000300000300000300000600000600000600000C00000C000
-00122D7EA117>I<03F0000FFC001E1E001C0E00380700780780700380700380700380F0
-03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0
-03C07003807003807003807807803807001C0E001E1E000FFC0003F000121F7E9D17>I<
-00C001C00FC0FFC0F3C003C003C003C003C003C003C003C003C003C003C003C003C003C0
-03C003C003C003C003C003C003C003C003C003C07FFF7FFF101E7D9D17>I<07F0000FFC
-00383E00700F00600F80F80780FC07C0FC07C0FC03C07803C03003C00007C00007800007
-80000F00001E00001C0000380000700000E00001C0000380000300C00600C00C00C01801
-C03FFF807FFF80FFFF80FFFF80121E7E9D17>I<03F0000FFC001C1E00300F00780F807C
-0F807C07807C0F803C0F80000F00000F00001E00007C0007F00007F000003C00000E0000
-0F000007800007800007C03007C07807C0FC07C0FC07C0FC0780780F80700F003C1E001F
-FC0007F000121F7E9D17>I<000700000700000F00001F00001F00003F00007F0000EF00
-00CF0001CF00038F00030F00070F000E0F000C0F00180F00380F00300F00600F00E00F00
-FFFFF0FFFFF0000F00000F00000F00000F00000F00000F0000FFF000FFF0141E7F9D17>
-I<3003003FFF003FFE003FF8003FE00030000030000030000030000030000030000031F0
-0037FC003E1E00380F00380F003007800007800007C00007C00007C07807C0F807C0F807
-C0F80780F00780600F00700E00383C001FF80007E000121F7E9D17>I<007C0001FE0007
-83000E07800C0F801C0F80380700380000780000700000700000F1F800F3FE00F40E00F8
-0700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C070038038038038
-07001C07000E1E0007FC0001F000121F7E9D17>I<6000007FFFE07FFFE07FFFC07FFFC0
-E00180C00300C00300C00600000C0000180000180000300000700000600000E00000E000
-01E00001C00001C00003C00003C00003C00003C00007C00007C00007C00007C00007C000
-07C000038000131F7E9D17>I<03F0000FFC001C1E003807003007007003807003807003
-807803807C07007F07003F8E001FFC000FF80007FC0007FE001EFF00387F80701F80700F
-C0E003C0E003C0E001C0E001C0E001C0F001807003803807001E0E000FFC0003F000121F
-7E9D17>I<03F00007F8001E1C00380E00380700700700700380F00380F00380F003C0F0
-03C0F003C0F003C0F003C07007C07007C03807C01C0BC01FF3C007E3C000038000038000
-07800007003807007C0E007C0E00781C003078001FF0000FC000121F7E9D17>I<70F8F8
-F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F87000000000000000
-00000070F8F8F878181818183030606040051D7C930D>I<FFFFFFFCFFFFFFFC00000000
-00000000000000000000000000000000000000000000000000000000FFFFFFFCFFFFFFFC
-1E0C7E9023>61 D<0003800000038000000380000007C0000007C0000007C000000FE000
-000FE000000FE0000019F0000019F0000019F0000030F8000030F8000030F80000607C00
-00607C0000607C0000C03E0000C03E0000C03E0001FFFF0001FFFF0001801F0003000F80
-03000F8003000F80060007C0060007C01F0007E0FFC03FFEFFC03FFE1F207F9F22>65
-D<FFFFE000FFFFF8000F803E000F801E000F801F000F800F800F800F800F800F800F800F
-800F800F800F800F000F801F000F803E000F807C000FFFF8000FFFFC000F801F000F800F
-800F8007C00F8003C00F8003E00F8003E00F8003E00F8003E00F8003E00F8007C00F8007
-C00F800F800F803F00FFFFFE00FFFFF8001B1F7E9E20>I<000FE010007FF83000F80E70
-03E00370078001F00F0000F01F0000F01E0000703C0000703C0000707C00003078000030
-F8000030F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
-780000307C0000303C0000303C0000301E0000601F0000600F0000C00780018003E00300
-00F80E00007FFC00000FE0001C217E9F21>I<FFFFF800FFFFFE0007C01F8007C007C007
-C001E007C000F007C000F007C0007807C0007807C0007C07C0003C07C0003C07C0003E07
-C0003E07C0003E07C0003E07C0003E07C0003E07C0003E07C0003E07C0003C07C0003C07
-C0007C07C0007807C000F807C000F007C001E007C007C007C01F80FFFFFE00FFFFF8001F
-1F7F9E23>I<FFFFFF80FFFFFF800F800F800F8003800F8003800F8001800F8001C00F80
-00C00F8000C00F80C0C00F80C0C00F80C0000F80C0000F81C0000FFFC0000FFFC0000F81
-C0000F80C0000F80C0000F80C0600F80C0600F8000600F8000C00F8000C00F8000C00F80
-01C00F8001C00F8003C00F800F80FFFFFF80FFFFFF801B1F7E9E1F>I<FFFFFF80FFFFFF
-8007C00F8007C0038007C0018007C0018007C001C007C000C007C000C007C060C007C060
-C007C0600007C0600007C0E00007FFE00007FFE00007C0E00007C0600007C0600007C060
-0007C0600007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000
-00FFFF0000FFFF00001A1F7F9E1E>I<000FE010007FF83000F80E7003E00370078001F0
-0F0000F01F0000F01E0000703C0000703C0000707C00003078000030F8000030F8000000
-F8000000F8000000F8000000F8000000F8000000F8007FFEF8007FFE780001F07C0001F0
-3C0001F03C0001F01E0001F01F0001F00F0001F007C001F003E003F000FC0E70007FFC10
-000FF0001F217E9F24>I<FFF8FFF8FFF8FFF80F800F800F800F800F800F800F800F800F
-800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800FFFFF800F
-FFFF800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F
-800F800F800F800F800F800F800F800F800F80FFF8FFF8FFF8FFF81D1F7E9E22>I<FFF8
-FFF80F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F80
-0F800F800F800F800F800F800F800F800F800F80FFF8FFF80D1F7F9E10>I<07FFE007FF
-E0001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F
-00001F00001F00001F00001F00001F00001F00001F00001F00001F00781F00FC1F00FC1F
-00FC1F00F83E00703E00387C001FF0000FC0001320809E17>I<FFFC00FFFC000F80000F
-80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F
-80000F80000F80000F80000F80060F80060F80060F80060F800E0F800E0F800C0F801C0F
-803C0F80FCFFFFFCFFFFFC171F7E9E1C>76 D<FFC0000FFEFFE0001FFE07E0001FC007E0
-001FC006F00037C006F00037C006F00037C006780067C006780067C006780067C0063C00
-C7C0063C00C7C0063C00C7C0061E0187C0061E0187C0060F0307C0060F0307C0060F0307
-C006078607C006078607C006078607C00603CC07C00603CC07C00603CC07C00601F807C0
-0601F807C00601F807C00600F007C00F00F007C0FFF0F0FFFEFFF060FFFE271F7F9E2A>
-I<FF801FF8FFC01FF80FE003C00FE001800DF001800DF001800CF801800CFC01800C7C01
-800C3E01800C3F01800C1F01800C0F81800C0FC1800C07C1800C07E1800C03E1800C01F1
-800C01F9800C00F9800C007D800C007F800C003F800C001F800C001F800C000F800C000F
-800C0007801E000380FFC00380FFC001801D1F7E9E22>I<001FE000007FF80001F03E00
-03C00F00078007800F0003C01E0001E03E0001F03C0000F07C0000F87C0000F878000078
-F800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007CF800007C
-7C0000F87C0000F87C0000F83C0000F03E0001F01E0001E00F0003C00780078003C00F00
-01F03E00007FF800001FE0001E217E9F23>I<FFFFE000FFFFF8000F803E000F801F000F
-800F800F8007800F8007C00F8007C00F8007C00F8007C00F8007C00F8007800F800F800F
-801F000F803E000FFFF8000FFFE0000F8000000F8000000F8000000F8000000F8000000F
-8000000F8000000F8000000F8000000F8000000F8000000F800000FFF80000FFF800001A
-1F7E9E1F>I<FFFF8000FFFFF0000F807C000F803E000F801F000F800F000F800F800F80
-0F800F800F800F800F800F800F000F801F000F803E000F807C000FFFF0000FFFE0000F81
-F8000F807C000F807C000F803E000F803E000F803E000F803E000F803E000F803E000F80
-3E000F803E0C0F803E0C0F801F0CFFF80F18FFF807F8000001F01E207E9E21>82
-D<03F0400FFCC01E0FC03807C07803C07001C0F001C0F000C0F000C0F000C0F80000FC00
-007F00007FF0003FFE001FFF000FFF8003FFC0007FE00007E00003F00001F00000F0C000
-F0C000F0C000F0E000E0E000E0F001E0F801C0FE0780C7FF0081FC0014217E9F19>I<7F
-FFFFE07FFFFFE07C0F81E0700F80E0600F8060600F8060E00F8070C00F8030C00F8030C0
-0F8030C00F8030000F8000000F8000000F8000000F8000000F8000000F8000000F800000
-0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000
-0F8000000F800003FFFE0003FFFE001C1F7E9E21>I<FFF81FF8FFF81FF80F8003C00F80
-01800F8001800F8001800F8001800F8001800F8001800F8001800F8001800F8001800F80
-01800F8001800F8001800F8001800F8001800F8001800F8001800F8001800F8001800F80
-01800F8001800F800180078003000780030003C0030003C0060001E00C0000F83800003F
-F000000FC0001D207E9E22>I<FFF807FEFFF807FE0F8000F00F8000E007C000C007C000
-C007C000C003E0018003E0018003F0018001F0030001F0030001F8070000F8060000F806
-0000FC0E00007C0C00007C0C00003E1800003E1800003E1800001F3000001F3000001FB0
-00000FE000000FE000000FE0000007C0000007C0000003800000038000000380001F207F
-9E22>I<FFF8FFF83FF0FFF8FFF83FF01F800F8007800F800F8003000F8007C003000FC0
-07C0070007C007C0060007C00FE0060007E00FE00E0003E00FE00C0003E01FF00C0003E0
-19F00C0001F019F0180001F019F0180001F030F8180000F830F8300000F830F8300000F8
-607C3000007C607C6000007C607C6000007CC03E6000007EC03EE000003EC03EC000003F
-C03FC000003F801FC000001F801F8000001F801F8000001F000F8000000F000F0000000F
-000F0000000E000700000006000600002C207F9E2F>I<FFFFC0C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FFFF082D7CA1
-0D>91 D<0804180C3018703860306030C060C060C060F87CFC7EFC7E7C3E381C0F0E7A9F
-17>I<FFFF03030303030303030303030303030303030303030303030303030303030303
-03030303030303030303FFFF082D80A10D>I<0FE0003FF8007C3C007C1E007C0F00380F
-00000F00000F0001FF000FCF003E0F00780F00780F00F00F30F00F30F00F30F01F30783F
-F03FC7E00F83C014147E9317>97 D<1E0000FE0000FE00001E00001E00001E00001E0000
-1E00001E00001E00001E00001E00001E3F001EFFC01FC1E01F00F01E00701E00781E0038
-1E003C1E003C1E003C1E003C1E003C1E003C1E00381E00781E00701F00F01D83E01CFF80
-183E0016207F9F19>I<01F80007FE001E1F003C1F00381F00780E00700000F00000F000
-00F00000F00000F00000F000007800007800003C01803C03801F070007FE0001F8001114
-7F9314>I<0001E0000FE0000FE00001E00001E00001E00001E00001E00001E00001E000
-01E00001E003F1E007FDE01F07E03C03E03801E07801E07001E0F001E0F001E0F001E0F0
-01E0F001E0F001E07001E07801E03801E03C03E01E0FE00FFDFC03F1FC16207F9F19>I<
-03F0000FFC001E1E003C0F00380700780700700380F00380FFFF80FFFF80F00000F00000
-F000007000007800003801803C03801F070007FE0001F80011147F9314>I<003E0000FF
-0003CF80078F80078F800F07000F00000F00000F00000F00000F00000F0000FFF000FFF0
-000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
-000F00000F00000F00000F00007FF0007FF0001120809F0E>I<0000E003E3F00FFE701C
-1C70380E60780F00780F00780F00780F00780F00380E001C1C001FF80033E00020000030
-00003000003FFE003FFF801FFFC01FFFE07001E06000F0E00070E00070E000707000E078
-01E03E07C00FFF0003FC00141F7F9417>I<1E0000FE0000FE00001E00001E00001E0000
-1E00001E00001E00001E00001E00001E00001E1F001E7F801EC3C01F81E01F01E01E01E0
-1E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E0
-FFC7FCFFC7FC16207F9F19>I<1C003E003E003E001C000000000000000000000000001E
-00FE00FE001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E00FF
-C0FFC00A1F7F9E0D>I<007000F800F800F80070000000000000000000000000007807F8
-07F800F80078007800780078007800780078007800780078007800780078007800780078
-0078007800787078F878F8F0F9E07FC03F000D28839E0E>I<1E0000FE0000FE00001E00
-001E00001E00001E00001E00001E00001E00001E00001E00001E1FF01E1FF01E0F801E0E
-001E0C001E18001E30001E70001EF0001FF8001F78001E3C001E3E001E1E001E1F001E0F
-801E07801E07C0FFCFF8FFCFF815207F9F18>I<1E00FE00FE001E001E001E001E001E00
-1E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E00
-1E001E001E001E00FFC0FFC00A207F9F0D>I<1E1F80FC00FE7FC3FE00FEC1E60F001F80
-FC07801F00F807801E00F007801E00F007801E00F007801E00F007801E00F007801E00F0
-07801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007
-80FFC7FE3FF0FFC7FE3FF024147F9327>I<1E1F00FE7F80FEC3C01F81E01F01E01E01E0
-1E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E0
-FFC7FCFFC7FC16147F9319>I<01F80007FE001E07803C03C03801C07000E07000E0F000
-F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C03C03C01E078007FE0001F8
-0014147F9317>I<1E3F00FEFFC0FFC3E01F00F01E00701E00781E00781E003C1E003C1E
-003C1E003C1E003C1E003C1E00781E00781E00F01F00F01F83E01EFF801E3E001E00001E
-00001E00001E00001E00001E00001E0000FFC000FFC000161D7F9319>I<01F06007FCE0
-1F0EE03C03E03C03E07801E07801E0F001E0F001E0F001E0F001E0F001E0F001E07801E0
-7801E03803E03C03E01F0FE00FFDE003F1E00001E00001E00001E00001E00001E00001E0
-0001E0000FFC000FFC161D7F9318>I<1E78FEFCFF9E1F1E1F0C1F001E001E001E001E00
-1E001E001E001E001E001E001E001E00FFE0FFE00F147F9312>I<0FC83FF870386018E0
-18E018F000FF807FE03FF81FFC01FC003EC00EC00EE00EE00CF83CDFF887E00F147F9312
->I<06000600060006000E000E001E003E00FFF8FFF81E001E001E001E001E001E001E00
-1E001E001E001E0C1E0C1E0C1E0C1E0C0F1807F003E00E1C7F9B12>I<1E01E0FE0FE0FE
-0FE01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E01E
-01E01E03E01E03E00E0DE007F9FC03F1FC16147F9319>I<FFC7F8FFC7F81E01E01F01C0
-0F01800F018007830007830007830003C60003C60003C60001EC0001EC0001FC0000F800
-00F80000700000700000700015147F9318>I<FF9FF3FCFF9FF3FC1E03C0F01E03C0601F
-03C0E00F07C0C00F07E0C00F87E1C0078CE180078CF18007CCF38003D8730003D87B0003
-F87F0001F03E0001F03E0001F03E0000E01C0000E01C0000E01C001E147F9321>I<7FE7
-FC7FE7FC0F83E007838003C30003E70001EE0000FC00007800007800003C00007E0000FE
-0001CF000187800387800703C00F03E0FF87FEFF87FE1714809318>I<FFC7F8FFC7F81E
-01E01F01C00F01800F018007830007830007830003C60003C60003C60001EC0001EC0001
-FC0000F80000F80000700000700000700000600000600000600070C000F8C000C18000E3
-80007F00003C0000151D7F9318>I<7FFF7FFF781E703E603C607860F861F001E003E007
-C007830F831F031E073C067C06781EFFFEFFFE10147F9314>I E
-/Fp 43 122 df<0001FF0000001FFFC000007F81E00000FC01E00001F807F00003F807F0
-0007F007F00007F007F00007F007F00007F007F00007F001C00007F000000007F0000000
-07F000000007F03FF800FFFFFFF800FFFFFFF800FFFFFFF80007F003F80007F003F80007
-F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F0
-03F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003F80007F003
-F80007F003F80007F003F80007F003F80007F003F8007FFF3FFF807FFF3FFF807FFF3FFF
-80212A7FA925>12 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE00
+TeXDict begin 40258431 52099146 1000 600 600 (manual.dvi)
+@start /Fa 7 115 df<000000FFF00000000FFFFF8000003FFFFFF00000FFFFFFFC0001
+FFFFFFFC0007FFFFFFFC000FFF803FF8001FFC0003F8003FF00000F8007FC000003800FF
+8000001801FF0000000003FE0000000003FC0000000007FC0000000007F8000000000FF0
+000000000FF0000000001FE0000000001FE0000000003FC0000000003FC0000000003FC0
+000000007F80000000007F80000000007F80000000007F8000000000FF0000000000FF00
+00000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00
+00000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000000007F80
+000000007F80000000007F80000000007F80000000003FC0000000003FC0000000003FC0
+000000001FE0000000001FE0000000000FF0000000000FF00000000007F80000000007FC
+0000000003FC0000000003FE0000000001FF0000000400FF8000000C007FC000003C003F
+F000007C001FFC0001FE000FFF801FFE0007FFFFFFFE0001FFFFFFFC0000FFFFFFF00000
+3FFFFFC000000FFFFF00000000FFF0002F437AC03A>67 D<000000FFF000000007FFFF00
+00003FFFFFE00000FFFFFFF80001FFFFFFFE0007FFFFFFFE000FFF803FFE001FFC0003FC
+003FF00000FC007FE000003C00FF8000001C01FF0000000C01FE0000000003FC00000000
+07FC0000000007F8000000000FF0000000000FF0000000001FE0000000001FE000000000
+3FC0000000003FC0000000003FC0000000007F80000000007F80000000007F8000000000
+7F8000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000
+FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF000007FFFF
+FF000007FFFFFF000007FFFF7F800007FFFF7F800007FFFF7F800007FFFF7F800000007F
+3FC00000007F3FC00000007F3FC00000007F1FE00000007F1FE00000007F0FF00000007F
+0FF00000007F07F80000007F07FC0000007F03FC0000007F01FE0000007F01FF0000007F
+00FF8000007F007FE000007F003FF000007F001FFC0001FF000FFF801FFF0007FFFFFFFF
+0001FFFFFFFF0000FFFFFFFC00003FFFFFF0000007FFFF00000000FFF00030437AC03D>
+71 D<FFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFF
+FFFEFFFFFFFFFFFFFE000000FF000000000000FF000000000000FF000000000000FF0000
+00000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000
+000000FF000000000000FF000000000000FF000000000000FF000000000000FF00000000
+0000FF000000000000FF000000000000FF000000000000FF000000000000FF0000000000
+00FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000
+FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF
+000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF00
+0000000000FF000000000000FF000000000000FF000000000000FF000000000000FF0000
+00000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000
+000000FF000000000000FF000000000000FF000000000000FF000000000000FF00000000
+0000FF000000000000FF000000000000FF000000000000FF000000000000FF0000000000
+00FF000000373E7DBD3E>84 D<000FF80000FFFF0003FFFF800FFFFFE01FFFFFF01FFFFF
+F01FF00FF81F8003FC1E0001FC180001FE100000FE000000FF0000007F0000007F000000
+7F0000007F0000007F0000007F0000007F00007FFF000FFFFF007FFFFF01FFFFFF07FFFF
+FF0FFFF07F3FFC007F3FC0007F7F00007FFE00007FFC00007FFC00007FFC00007FFC0000
+FFFE0000FFFE0001FF7F8007FF7FE01FFF3FFFFFFF3FFFFFFF1FFFFF7F0FFFFC7F07FFF0
+7F01FF0000202B7CA92C>97 D<0003F80000001FFF0000007FFFC00000FFFFE00001FFFF
+F00003FFFFF80007FE07F8000FF801FC000FE000FE001FC0007E003FC0003E003F80003F
+003F00001F007F00001F007E00001F007E00000F80FFFFFFFF80FFFFFFFF80FFFFFFFF80
+FFFFFFFF80FFFFFFFF80FFFFFFFF80FC00000000FC00000000FC00000000FE000000007E
+000000007E000000007F000000007F000000003F800000003F800000001FC00000001FE0
+0000800FF000038007FC001F8007FF00FF8003FFFFFF8001FFFFFF80007FFFFF00003FFF
+FC00000FFFE0000001FF0000212B7DA928>101 D<00001FF00000FFFC0001FFFC0007FF
+FC000FFFFC000FFFFC001FE03C003F8004003F0000007F0000007E000000FE000000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE00001E407FBF1C>I<FC007CFC
+03FCFC0FFCFC1FFCFC3FFCFC7FFCFCFFC0FDFE00FFF800FFF000FFE000FFC000FFC000FF
+8000FF8000FF0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
+0000FE0000FE0000FE0000162979A81F>114 D E /Fb 7 121 df<001FFC00000000FFFF
+80000003FFFFE0000007FFFFF000000FFFFFFC00001FFFFFFE00001FF007FF00001FE001
+FF00001FE000FF80001FE0003F80000FC0003FC0000780001FC0000000001FE000000000
+0FE0000000000FE0000000000FE0000000000FE0000000000FE00000000FFFE0000001FF
+FFE000001FFFFFE000007FFFFFE00001FFFFFFE00007FFFF0FE0000FFFC00FE0001FFC00
+0FE0003FF0000FE0007FC0000FE0007F80000FE000FF00000FE000FE00000FE000FE0000
+0FE000FE00000FE000FE00000FE000FE00000FE000FF00001FE0007F00001FE0007F8000
+7FE0003FE000FFF0003FF807FFFFF01FFFFFFFFFF80FFFFFFFFFF807FFFFF3FFF803FFFF
+C1FFF800FFFF003FF0001FF00000002D2E7BAC33>97 D<0000FF80000007FFF000001FFF
+FC00003FFFFE0000FFFFFF0001FFFFFF8003FF80FFC007FE003FE007F8000FF00FF00007
+F01FE00007F81FC00003F83FC00003FC3F800001FC7F800001FC7F000001FC7F000001FE
+7F000000FEFF000000FEFE000000FEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFF
+FFFFFFFEFFFFFFFFFCFE00000000FF000000007F000000007F000000007F000000003F80
+0000003F8000007C1FC00000FE1FE00000FE0FF00000FE0FF80001FE07FC0003FC03FF00
+0FFC01FFC03FF800FFFFFFF0007FFFFFE0003FFFFFC0000FFFFF000003FFFC0000007FE0
+00272E7BAC33>101 D<000001FF00003FFC07FFC0007FFE1FFFF000FFFE7FFFF800FFFE
+FFFFF8007FFFFFFFFC003FFFFF07FE0000FFF801FE0000FFF000FE0000FFE000FF0000FF
+C0007F0000FF80007F0000FF80007F0000FF00007F0000FF00007F0000FF00007F0000FE
+00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE
+00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE
+00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE
+00007F0000FE00007F0000FE00007F0000FE00007F003FFFF80FFFFC7FFFFC1FFFFEFFFF
+FE3FFFFFFFFFFE3FFFFF7FFFFC1FFFFE3FFFF80FFFFC302C7FAB33>110
+D<00000003FE007FFF801FFF80FFFFC07FFFE0FFFFC1FFFFE0FFFFC3FFFFF0FFFFC7FFFF
+F07FFFCFFE0FF0001FDFF00FF0001FFFC007E0001FFF8003C0001FFF000000001FFE0000
+00001FFC000000001FF8000000001FF8000000001FF0000000001FF0000000001FE00000
+00001FE0000000001FE0000000001FC0000000001FC0000000001FC0000000001FC00000
+00001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000
+00001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000
+00001FC0000000001FC00000007FFFFFFE0000FFFFFFFF0000FFFFFFFF0000FFFFFFFF00
+00FFFFFFFF00007FFFFFFE00002C2C7DAB33>114 D<0003C00000000007E0000000000F
+E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F
+E0000000000FE0000000000FE0000000000FE00000003FFFFFFFFC007FFFFFFFFE00FFFF
+FFFFFE00FFFFFFFFFE00FFFFFFFFFE007FFFFFFFFC00000FE0000000000FE0000000000F
+E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F
+E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F
+E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F
+E0000000000FE0001F00000FE0003F80000FE0003F80000FE0003F80000FE0003F80000F
+E0003F80000FE0007F80000FF0007F000007F000FF000007F801FF000007FE07FE000003
+FFFFFC000001FFFFF8000000FFFFF00000007FFFE00000001FFF8000000007FC00002938
+7EB633>116 D<3FFFC00FFFF07FFFE01FFFF8FFFFF03FFFFCFFFFF03FFFFC7FFFE01FFF
+F83FFFC00FFFF001F800007E0001FC0000FE0000FC0000FC0000FC0000FC0000FE0001FC
+00007E0001F800007E0001F800007F0003F800003F0003F000003F0003F000003F8007F0
+00001F8007E000001F8007E000001FC00FE000000FC00FC000000FC00FC000000FC00FC0
+000007E01F80000007E01F80000007E01F80000007F03F80000003F03F00000003F03F00
+000003F87F00000001F87E00000001F87E00000001FCFE00000000FCFC00000000FCFC00
+000000FFFC000000007FF8000000007FF8000000007FF8000000003FF0000000003FF000
+0000001FE0000000000FC000002E2B7EAA33>118 D<3FFFC07FFF807FFFE0FFFFC0FFFF
+F1FFFFE0FFFFF1FFFFE07FFFE0FFFFC03FFFC07FFF8000FE000FE000007F001FC000003F
+801FC000003F803F8000001FC07F0000000FE07E00000007F0FE00000007F1FC00000003
+FBF800000001FFF800000000FFF000000000FFE0000000007FC0000000003FC000000000
+1F80000000003F80000000003FC0000000007FE000000000FFE000000001FBF000000001
+F9F800000003F1FC00000007E0FC00000007E07E0000000FC07F0000001FC03F8000003F
+801F8000003F001FC000007F000FE00000FE0007F00001FC0003F0007FFFC03FFFE0FFFF
+E07FFFF0FFFFE07FFFF0FFFFE07FFFF0FFFFE07FFFF07FFFC03FFFE02C2B7DAA33>120
+D E /Fc 1 43 df<000F0000001F8000001F8000001F8000001F8000001F8000001F8000
+781F81E0FE1F87F0FF1F8FF0FFDFBFF07FFFFFE03FFFFFC00FFFFF0003FFFC0000FFF000
+00FFF00003FFFC000FFFFF003FFFFFC07FFFFFE0FFDFBFF0FF1F8FF0FE1F87F0781F81E0
+001F8000001F8000001F8000001F8000001F8000001F8000000F00001C207BA627>42
+D E /Fd 1 122 df<01E0000007F8000E0E3C001F1C3E003F383E003E303E003E703E00
+3E607E007EE07C007CC07C007CC0FC007C80F800FC00F800F801F800F801F000F801F001
+F803F001F003E001F003E001F003E003F007E003E007C003E007C003E007C007E007C007
+C003C00FC003E01FC003E03FC001F07F80007FEF80001F8F8000001F8000001F0000001F
+003E003E003E003E007E007C007E00F8007C01F0007003E0003007C0003C0F80000FFE00
+0003F00000202C7E9D23>121 D E /Fe 3 121 df<1E007F80FF80FFC0FFC0FFE0FFE0FF
+E07FE01E60006000600060006000E000C000C000C001C001800380030007000E001C0018
+00380030000B1C798919>59 D<01F0000FF0000007FC003FFE00000F1F00F01F00000E1F
+03C00F80001E0F87000FC0001C0F8E0007C0003C0FDC0007E000380FF80007E000380FF0
+0007E000781FF00007E000701FE00007E000701FC00007E000701FC00007E000F01F8000
+0FE000F03F80000FC000003F00000FC000003F00000FC000003F00001FC000007F00001F
+8000007E00001F8000007E00003F8000007E00003F000000FE00003F000000FC00007F00
+0000FC00007E000000FC00007E000001FC0000FE038001F80000FC038001F80000FC0380
+01F80001FC078003F80001F8070003F00001F8070003F00001F80F0003F00001F00E0007
+F00001F01E0007E00001F01C0007E00001F0380007E00001F078000FE00000F8F0000FC0
+00007FC000038000001F000031297EA737>110 D<0001F8003F000007FE00FFE0001E0F
+83C0F0003807C780F8007003CF03F800E003FE03F801C003FC07F803C003FC07F8038003
+F807F8070003F807F0070003F801C00E0003F000000E0003F000001E0007F000001E0007
+F00000000007E00000000007E0000000000FE0000000000FC0000000000FC0000000000F
+C0000000001FC0000000001F80000000001F80000000001F80000000003F80000000003F
+0001C000003F0001C000003F0001C000007F0003C01E007F0003803F007E0007807F80FE
+0007007F80FE000F00FF81FE001E00FF01DF001C00FE03DF0038007C078F80F0003C0F07
+C1E0001FFC03FF800007F0007E00002D297EA734>120 D E /Ff
+51 121 df<0000000FFF0000000001FFFFC00000000FFFFFF00000007FFFFFF8000001FF
+F803FC000003FFC000FE00000FFF0003FE00001FFE0007FF00003FFC000FFF00003FF800
+0FFF00007FF0000FFF00007FF0001FFF8000FFF0000FFF0000FFE0000FFF0000FFE0000F
+FF0000FFE0000FFF0000FFE00007FE0000FFE00001F80000FFE00000000000FFE0000000
+0000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000
+00FFE001FFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FF
+FFFFFFFFFF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FF
+E00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE0
+0003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE000
+03FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003
+FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF
+8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF80
+00FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF807FFFFFC1FFFFFF7F
+FFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF38467EC53E>12
+D<07C01FF03FF87FFCFFFEFFFEFFFEFFFEFFFEFFFEFFFE7FFC3FF81FF007C00F0F788E1F
+>46 D<0000000001C00000000003E00000000007E00000000007E0000000000FE0000000
+000FC0000000001FC0000000001F80000000001F80000000003F80000000003F00000000
+007F00000000007E00000000007E0000000000FE0000000000FC0000000001FC00000000
+01F80000000001F80000000003F80000000003F00000000003F00000000007F000000000
+07E0000000000FE0000000000FC0000000000FC0000000001FC0000000001F8000000000
+3F80000000003F00000000003F00000000007F00000000007E0000000000FE0000000000
+FC0000000000FC0000000001FC0000000001F80000000003F80000000003F00000000003
+F00000000007F00000000007E0000000000FE0000000000FC0000000000FC0000000001F
+C0000000001F80000000003F80000000003F00000000003F00000000007F00000000007E
+00000000007E0000000000FE0000000000FC0000000001FC0000000001F80000000001F8
+0000000003F80000000003F00000000007F00000000007E00000000007E0000000000FE0
+000000000FC0000000001FC0000000001F80000000001F80000000003F80000000003F00
+000000007F00000000007E00000000007E0000000000FE0000000000FC0000000001FC00
+00000001F80000000001F80000000003F80000000003F00000000003F00000000007F000
+00000007E0000000000FE0000000000FC0000000000FC0000000001FC0000000001F8000
+0000003F80000000003F00000000003F00000000007F00000000007E0000000000FE0000
+000000FC0000000000FC0000000000F800000000007800000000002B647ACA38>I<0000
+3FF800000001FFFF0000000FFFFFE000003FFFFFF800007FF01FFC0000FFC007FE0001FF
+0001FF0003FE0000FF8007FE0000FFC007FC00007FC00FFC00007FE00FF800003FE01FF8
+00003FF01FF800003FF03FF800003FF83FF800003FF83FF000001FF87FF000001FFC7FF0
+00001FFC7FF000001FFC7FF000001FFC7FF000001FFC7FF000001FFCFFF000001FFEFFF0
+00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0
+00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0
+00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0
+00001FFEFFF000001FFE7FF000001FFC7FF000001FFC7FF000001FFC7FF000001FFC7FF0
+00001FFC3FF800003FF83FF800003FF83FF800003FF81FF800003FF01FF800003FF00FF8
+00003FE00FFC00007FE007FC00007FC007FE0000FFC003FF0001FF8001FF8003FF0000FF
+C007FE00007FF01FFC00003FFFFFF800000FFFFFE0000003FFFF800000003FF800002F42
+7CC038>I<000003C000000007C00000001FC00000007FC0000003FFC000003FFFC000FF
+FFFFC000FFFFFFC000FFFFFFC000FFFFFFC000FFC3FFC0000003FFC0000003FFC0000003
+FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF
+C0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0
+000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC000
+0003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC00000
+03FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003
+FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF
+C0000003FFC0000003FFC0000003FFC000FFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFF
+FCFFFFFFFFFC264177C038>I<0000FFE00000000FFFFE0000003FFFFF800000FFFFFFE0
+0003FFFFFFF80007FC03FFFE000FE0007FFF001F80003FFF803F00000FFFC07F000007FF
+C07FC00007FFE07FF00003FFE0FFF00001FFF0FFF80001FFF0FFF80001FFF8FFF80000FF
+F8FFF80000FFF8FFF80000FFF8FFF80000FFF87FF00000FFF83FE00000FFF81FC00000FF
+F800000000FFF800000000FFF000000001FFF000000001FFF000000001FFE000000003FF
+E000000003FFC000000007FF800000000FFF000000000FFF000000001FFC000000003FF8
+000000003FF0000000007FE000000000FFC000000001FF0000000003FE0000000007FC00
+0000000FF0000000001FE0000000003F80000000007F0000780000FE0000780001FC0000
+780003F80000F80007E00000F0000FC00000F0001F800000F0003F000000F0007C000001
+F000F8000003F001FFFFFFFFF003FFFFFFFFE007FFFFFFFFE00FFFFFFFFFE01FFFFFFFFF
+E03FFFFFFFFFE07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFF
+C0FFFFFFFFFFC02D417BC038>I<0000FFF000000007FFFF0000001FFFFFC000007FFFFF
+F00000FF007FF80003F8003FFE0007E0001FFF0007E0000FFF000FF80007FF800FFE0007
+FF801FFE0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FFC01FFF0007
+FFC01FFF0007FFC00FFE0007FFC007FC0007FF8003F8000FFF800000000FFF000000001F
+FF000000001FFE000000003FFC000000007FF800000000FFF000000001FFE00000000FFF
+80000007FFFE00000007FFF800000007FFFF00000007FFFFC000000000FFF0000000003F
+FC000000000FFE000000000FFF8000000007FF8000000003FFC000000003FFE000000003
+FFE000000001FFF000000001FFF000000001FFF800000001FFF800000001FFF80FC00001
+FFF83FF00001FFF87FF80001FFF87FF80001FFF8FFFC0001FFF8FFFC0001FFF8FFFC0001
+FFF0FFFC0001FFF0FFFC0003FFF0FFFC0003FFE07FF80003FFE07FF00007FFC07FE00007
+FFC03F80000FFF801FF0001FFF000FFE00FFFE0007FFFFFFF80001FFFFFFF000007FFFFF
+C000001FFFFE00000001FFE000002D427BC038>I<000000003F0000000000003F000000
+0000007F000000000000FF000000000001FF000000000003FF000000000003FF00000000
+0007FF00000000000FFF00000000001FFF00000000003FFF00000000003FFF0000000000
+7FFF0000000000FFFF0000000001F7FF0000000003E7FF0000000007E7FF0000000007C7
+FF000000000F87FF000000001F07FF000000003E07FF000000007E07FF000000007C07FF
+00000000F807FF00000001F007FF00000003E007FF00000007E007FF00000007C007FF00
+00000F8007FF0000001F0007FF0000003E0007FF0000007C0007FF0000007C0007FF0000
+00F80007FF000001F00007FF000003E00007FF000007C00007FF00000FC00007FF00000F
+800007FF00001F000007FF00003E000007FF00007C000007FF0000FC000007FF0000FFFF
+FFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80000000
+0FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000F
+FF00000000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF
+00000000000FFF000000007FFFFFFF8000007FFFFFFF8000007FFFFFFF8000007FFFFFFF
+8000007FFFFFFF8031417DC038>I<07000000030007E000003F0007FF0007FF0007FFFF
+FFFF0007FFFFFFFE0007FFFFFFFC0007FFFFFFF80007FFFFFFF00007FFFFFFE00007FFFF
+FF800007FFFFFE000007FFFFFC000007FFFFE0000007FFFF00000007C00000000007C000
+00000007C00000000007C00000000007C00000000007C00000000007C00000000007C000
+00000007C00000000007C00000000007C03FF0000007C1FFFF000007C7FFFFC00007DFFF
+FFF00007FFE03FFC0007FF000FFE0007FC0007FF0007F00003FF8007E00003FFC007C000
+01FFC003800001FFE000000001FFE000000000FFF000000000FFF000000000FFF0000000
+00FFF800000000FFF800000000FFF800000000FFF80F800000FFF83FE00000FFF87FF000
+00FFF8FFF00000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF0FFF000
+00FFF0FFF00001FFF07FE00001FFE07FC00001FFE07E000003FFC03E000003FFC03F0000
+07FF801FC0000FFF000FF0001FFE0007FE00FFFC0003FFFFFFF00000FFFFFFE000003FFF
+FF8000000FFFFC00000001FFC000002D427BC038>I<000001FF800000001FFFF0000000
+7FFFFC000001FFFFFF000007FF807F80000FFC001F80003FF0001FC0007FE0007FC000FF
+C000FFE001FF8001FFE003FF8001FFE003FF0001FFE007FE0001FFE00FFE0001FFE00FFE
+0001FFE01FFC0000FFC01FFC00007F801FFC00001E003FFC000000003FFC000000003FF8
+000000007FF8000000007FF8000000007FF807FC00007FF81FFF8000FFF87FFFE000FFF8
+FFFFF800FFF9F01FFC00FFFBC007FE00FFFF8003FF00FFFF8003FF80FFFF0001FFC0FFFE
+0001FFC0FFFE0000FFE0FFFE0000FFE0FFFC0000FFF0FFFC0000FFF0FFFC0000FFF0FFFC
+0000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF87FF80000FFF87FF8
+0000FFF87FF80000FFF87FF80000FFF87FF80000FFF83FF80000FFF83FF80000FFF83FF8
+0000FFF03FFC0000FFF01FFC0000FFF01FFC0000FFF00FFC0001FFE00FFC0001FFE007FE
+0001FFC007FF0003FF8003FF8003FF0001FFC007FE0000FFE01FFC00007FFFFFF800001F
+FFFFF0000007FFFFC0000001FFFF000000003FF000002D427BC038>I<1E00000000001F
+00000000001FFC000000001FFFFFFFFFFE1FFFFFFFFFFE1FFFFFFFFFFE1FFFFFFFFFFE3F
+FFFFFFFFFE3FFFFFFFFFFC3FFFFFFFFFF83FFFFFFFFFF03FFFFFFFFFE03FFFFFFFFFC03F
+FFFFFFFFC07FFFFFFFFF807E0000003F007C0000007E007C000000FC0078000000F80078
+000001F80078000003F000F8000007E000F000000FC000F000000F8000F000001F800000
+00003F00000000007E0000000000FC0000000000FC0000000001F80000000003F8000000
+0003F00000000007F0000000000FE0000000000FE0000000001FE0000000001FC0000000
+003FC0000000003FC0000000007FC0000000007F8000000000FF8000000000FF80000000
+01FF8000000001FF8000000001FF8000000003FF8000000003FF0000000003FF00000000
+03FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000000
+0FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF00000000
+0FFF000000000FFF000000000FFF000000000FFF0000000007FE0000000003FC00000000
+01F80000002F447AC238>I<00007FF000000003FFFF0000000FFFFFC000003FFFFFF000
+007F801FFC0001FC0003FE0003F80001FF0003F00000FF0007E000007F8007E000003F80
+0FC000003FC00FC000003FC01FC000001FC01FC000001FC01FE000001FC01FE000001FC0
+1FF000001FC01FF800001FC01FFE00003FC01FFF00003F801FFFC0007F801FFFF0007F00
+0FFFFC00FF000FFFFE01FE0007FFFF83FC0007FFFFE7F80003FFFFFFE00001FFFFFFC000
+00FFFFFF0000007FFFFFC000003FFFFFE000000FFFFFF800000FFFFFFC00003FFFFFFE00
+00FFFFFFFF0001FF3FFFFF8007FC0FFFFFC00FF803FFFFE01FF000FFFFE01FE0007FFFF0
+3FE0001FFFF07FC00007FFF07F800003FFF87F800000FFF8FF8000007FF8FF0000003FF8
+FF0000001FF8FF0000000FF8FF0000000FF8FF00000007F8FF00000007F8FF00000007F8
+FF80000007F07F80000007F07F8000000FF07FC000000FE03FE000001FE03FF000003FC0
+1FF800007F800FFE0001FF0007FFC00FFE0003FFFFFFFC0000FFFFFFF000003FFFFFC000
+000FFFFF00000000FFF000002D427BC038>I<00007FF000000007FFFE0000001FFFFF80
+00007FFFFFE00000FFE03FF00001FF800FF80003FF0007FC0007FE0007FE000FFC0003FF
+001FFC0001FF003FFC0001FF803FFC0001FF807FF80001FFC07FF80000FFC07FF80000FF
+E07FF80000FFE0FFF80000FFE0FFF80000FFF0FFF80000FFF0FFF80000FFF0FFF80000FF
+F0FFF80000FFF0FFF80000FFF0FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FF
+F8FFF80001FFF87FF80001FFF87FF80001FFF87FF80001FFF83FF80003FFF83FF80003FF
+F81FFC0003FFF81FFC0007FFF80FFE000FFFF807FE000FFFF803FF001EFFF801FFC07CFF
+F800FFFFF8FFF8003FFFF0FFF8000FFFC0FFF00001FF00FFF000000000FFF000000000FF
+F000000000FFE000000001FFE000000001FFE003C00001FFE00FF00001FFC01FF80001FF
+C03FFC0003FF803FFC0003FF803FFC0003FF003FFC0007FE003FFC000FFE003FFC000FFC
+003FF8001FF8001FF0003FF0001FC000FFE0000FF003FFC00007FFFFFF800003FFFFFE00
+0001FFFFF80000007FFFE000000007FE0000002D427BC038>I<000000001F8000000000
+000000001F8000000000000000003FC000000000000000003FC000000000000000007FE0
+00000000000000007FE000000000000000007FE00000000000000000FFF0000000000000
+0000FFF00000000000000001FFF80000000000000001FFF80000000000000001FFF80000
+000000000003FFFC0000000000000003FFFC0000000000000007FFFE0000000000000007
+FFFE0000000000000007FFFE000000000000000FFFFF000000000000000F9FFF00000000
+0000001F9FFF800000000000001F1FFF800000000000001F0FFF800000000000003F0FFF
+C00000000000003E07FFC00000000000007E07FFE00000000000007C07FFE00000000000
+007C03FFE0000000000000FC03FFF0000000000000F801FFF0000000000001F801FFF800
+0000000001F001FFF8000000000001F000FFF8000000000003F000FFFC000000000003E0
+007FFC000000000007E0007FFE000000000007C0007FFE000000000007C0003FFE000000
+00000FC0003FFF00000000000F80001FFF00000000001F80001FFF80000000001F00000F
+FF80000000001F00000FFF80000000003F00000FFFC0000000003E000007FFC000000000
+7E000007FFE0000000007FFFFFFFFFE0000000007FFFFFFFFFE000000000FFFFFFFFFFF0
+00000000FFFFFFFFFFF000000001FFFFFFFFFFF800000001F0000000FFF800000001F000
+0000FFF800000003F0000000FFFC00000003E00000007FFC00000007E00000007FFE0000
+0007C00000003FFE00000007C00000003FFE0000000F800000003FFF0000000F80000000
+1FFF0000001F800000001FFF8000001F000000000FFF8000003F000000000FFFC000003E
+000000000FFFC000007E0000000007FFC000FFFFFF00000FFFFFFFF0FFFFFF00000FFFFF
+FFF0FFFFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF04C457CC4
+55>65 D<00000000FFF00000700000001FFFFF0000F0000001FFFFFFE001F0000007FFFF
+FFF803F000003FFFFFFFFE07F00000FFFFE001FF0FF00001FFFE00003F9FF00007FFF000
+000FFFF0000FFFC0000007FFF0001FFF00000003FFF0003FFE00000001FFF0007FFC0000
+0000FFF000FFF8000000007FF001FFF0000000003FF003FFE0000000001FF007FFE00000
+00001FF007FFC0000000000FF00FFF80000000000FF00FFF800000000007F01FFF000000
+000007F01FFF000000000003F03FFF000000000003F03FFE000000000003F03FFE000000
+000003F07FFE000000000001F07FFE000000000001F07FFE000000000001F07FFC000000
+00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000
+00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000
+00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000
+00000000FFFC00000000000000FFFC000000000000007FFC000000000000007FFE000000
+000000007FFE000000000000F07FFE000000000000F03FFE000000000000F03FFE000000
+000000F03FFF000000000000F01FFF000000000001F01FFF000000000001E00FFF800000
+000001E00FFF800000000003E007FFC00000000003C007FFE00000000007C003FFE00000
+000007C001FFF0000000000F8000FFF8000000001F00007FFC000000003F00003FFE0000
+00007E00001FFF80000000FC00000FFFC0000001F8000007FFF0000007F0000001FFFE00
+001FE0000000FFFFF001FF800000003FFFFFFFFF0000000007FFFFFFFC0000000001FFFF
+FFF000000000001FFFFF80000000000000FFF800000044467AC451>67
+D<FFFFFFFFFFFF00000000FFFFFFFFFFFFF0000000FFFFFFFFFFFFFE000000FFFFFFFFFF
+FFFF800000FFFFFFFFFFFFFFE00000003FFE00001FFFF80000003FFE000001FFFC000000
+3FFE0000003FFF0000003FFE0000000FFF8000003FFE00000007FFC000003FFE00000003
+FFE000003FFE00000001FFF000003FFE00000000FFF000003FFE000000007FF800003FFE
+000000003FFC00003FFE000000003FFC00003FFE000000001FFE00003FFE000000001FFE
+00003FFE000000000FFF00003FFE000000000FFF00003FFE000000000FFF80003FFE0000
+00000FFF80003FFE0000000007FF80003FFE0000000007FFC0003FFE0000000007FFC000
+3FFE0000000007FFC0003FFE0000000007FFC0003FFE0000000007FFC0003FFE00000000
+07FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE
+0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FF
+E0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000
+000007FFE0003FFE0000000007FFE0003FFE0000000007FFC0003FFE0000000007FFC000
+3FFE0000000007FFC0003FFE0000000007FFC0003FFE0000000007FFC0003FFE00000000
+07FF80003FFE000000000FFF80003FFE000000000FFF80003FFE000000000FFF00003FFE
+000000001FFF00003FFE000000001FFE00003FFE000000003FFE00003FFE000000003FFC
+00003FFE000000007FF800003FFE00000000FFF800003FFE00000000FFF000003FFE0000
+0001FFE000003FFE00000007FFC000003FFE0000000FFF8000003FFE0000003FFF000000
+3FFE000001FFFE0000003FFE00000FFFF80000FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFF
+C00000FFFFFFFFFFFFFE000000FFFFFFFFFFFFF0000000FFFFFFFFFFFF000000004B447C
+C356>I<FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800FFFFFFFFFF
+FFFFF800FFFFFFFFFFFFFFFC00001FFF000001FFFC00001FFF0000003FFC00001FFF0000
+000FFC00001FFF00000003FC00001FFF00000001FC00001FFF00000000FC00001FFF0000
+0000FC00001FFF000000007E00001FFF000000003E00001FFF000000003E00001FFF0000
+00003E00001FFF000000001E00001FFF000000001E00001FFF000078001E00001FFF0000
+78001E00001FFF000078000F00001FFF000078000F00001FFF000078000F00001FFF0000
+78000F00001FFF0000F8000000001FFF0000F8000000001FFF0000F8000000001FFF0001
+F8000000001FFF0003F8000000001FFF001FF8000000001FFFFFFFF8000000001FFFFFFF
+F8000000001FFFFFFFF8000000001FFFFFFFF8000000001FFFFFFFF8000000001FFF001F
+F8000000001FFF0003F8000000001FFF0001F8000000001FFF0000F8000000001FFF0000
+F8000000001FFF0000F80001E0001FFF0000780001E0001FFF0000780001E0001FFF0000
+780003C0001FFF0000780003C0001FFF0000780003C0001FFF0000780003C0001FFF0000
+000003C0001FFF0000000007C0001FFF0000000007C0001FFF000000000780001FFF0000
+00000780001FFF000000000F80001FFF000000000F80001FFF000000001F80001FFF0000
+00001F80001FFF000000003F80001FFF000000007F00001FFF00000000FF00001FFF0000
+0001FF00001FFF00000007FF00001FFF0000001FFF00001FFF000001FFFF00FFFFFFFFFF
+FFFFFF00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFF
+FFFFFE0043447DC34A>I<FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FF
+FFFFFFFFFFFF80FFFFFFFFFFFFFFC0003FFE00001FFFC0003FFE000001FFC0003FFE0000
+007FC0003FFE0000003FC0003FFE0000001FC0003FFE0000000FC0003FFE00000007C000
+3FFE00000007E0003FFE00000003E0003FFE00000003E0003FFE00000003E0003FFE0000
+0001E0003FFE00000001E0003FFE00000001E0003FFE0001E001E0003FFE0001E000F000
+3FFE0001E000F0003FFE0001E000F0003FFE0001E000F0003FFE0001E00000003FFE0003
+E00000003FFE0003E00000003FFE0003E00000003FFE0007E00000003FFE000FE0000000
+3FFE007FE00000003FFFFFFFE00000003FFFFFFFE00000003FFFFFFFE00000003FFFFFFF
+E00000003FFFFFFFE00000003FFE007FE00000003FFE000FE00000003FFE0007E0000000
+3FFE0003E00000003FFE0003E00000003FFE0003E00000003FFE0001E00000003FFE0001
+E00000003FFE0001E00000003FFE0001E00000003FFE0001E00000003FFE0001E0000000
+3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000
+000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000000000
+3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000
+000000003FFE0000000000FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF0000000FF
+FFFFFFF0000000FFFFFFFFF00000003C447CC346>I<FFFFFFFF8003FFFFFFFEFFFFFFFF
+8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFE
+003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000
+00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F
+FE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FF
+F800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00
+000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800
+003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000
+00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F
+FFFFFFFFFFFFF800003FFFFFFFFFFFFFF800003FFFFFFFFFFFFFF800003FFFFFFFFFFFFF
+F800003FFFFFFFFFFFFFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00
+000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800
+003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000
+00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F
+FE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FF
+F800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00
+000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800
+003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000
+00FFF800FFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFF
+FFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFE4F447CC358>72 D<FFFFFFFFE0FFFFFFFFE0
+FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0001FFF0000001FFF0000001FFF0000001FFF000000
+1FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001F
+FF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF
+0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF00
+00001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000
+001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF000000
+1FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001F
+FF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF
+0000001FFF0000001FFF0000001FFF0000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFF
+E0FFFFFFFFE023447DC32A>I<FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF00000
+00FFFFFFFFF0000000FFFFFFFFF0000000003FFE0000000000003FFE0000000000003FFE
+0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
+00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
+0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
+00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
+0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
+00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
+0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
+00003FFE0000000000003FFE0000000780003FFE0000000780003FFE0000000780003FFE
+0000000780003FFE0000000F80003FFE0000000F00003FFE0000000F00003FFE0000000F
+00003FFE0000000F00003FFE0000001F00003FFE0000001F00003FFE0000001F00003FFE
+0000003F00003FFE0000003F00003FFE0000007E00003FFE0000007E00003FFE000000FE
+00003FFE000001FE00003FFE000003FE00003FFE000007FE00003FFE00001FFE00003FFE
+00007FFE00003FFE0003FFFE00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC
+00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC0039447CC343>76 D<FFFFFE0000000000007FFF
+FF80FFFFFF000000000000FFFFFF80FFFFFF000000000000FFFFFF80FFFFFF8000000000
+01FFFFFF80FFFFFF800000000001FFFFFF80003FFF800000000001FFFE0000003DFFC000
+00000003DFFE0000003DFFC00000000003DFFE0000003CFFE000000000079FFE0000003C
+FFE000000000079FFE0000003C7FF0000000000F1FFE0000003C7FF0000000000F1FFE00
+00003C3FF8000000001E1FFE0000003C3FF8000000001E1FFE0000003C1FFC000000003C
+1FFE0000003C1FFC000000003C1FFE0000003C1FFC000000003C1FFE0000003C0FFE0000
+0000781FFE0000003C0FFE00000000781FFE0000003C07FF00000000F01FFE0000003C07
+FF00000000F01FFE0000003C03FF80000001E01FFE0000003C03FF80000001E01FFE0000
+003C01FFC0000003C01FFE0000003C01FFC0000003C01FFE0000003C01FFC0000003C01F
+FE0000003C00FFE0000007801FFE0000003C00FFE0000007801FFE0000003C007FF00000
+0F001FFE0000003C007FF000000F001FFE0000003C003FF800001E001FFE0000003C003F
+F800001E001FFE0000003C001FFC00003C001FFE0000003C001FFC00003C001FFE000000
+3C001FFC00003C001FFE0000003C000FFE000078001FFE0000003C000FFE000078001FFE
+0000003C0007FF0000F0001FFE0000003C0007FF0000F0001FFE0000003C0003FF8001E0
+001FFE0000003C0003FF8001E0001FFE0000003C0001FFC003C0001FFE0000003C0001FF
+C003C0001FFE0000003C0000FFE00780001FFE0000003C0000FFE00780001FFE0000003C
+0000FFE00780001FFE0000003C00007FF00F00001FFE0000003C00007FF00F00001FFE00
+00003C00003FF81E00001FFE0000003C00003FF81E00001FFE0000003C00001FFC3C0000
+1FFE0000003C00001FFC3C00001FFE0000003C00000FFE7800001FFE0000003C00000FFE
+7800001FFE0000003C00000FFE7800001FFE0000003C000007FFF000001FFE0000003C00
+0007FFF000001FFE0000003C000003FFE000001FFE0000003C000003FFE000001FFE0000
+003C000001FFC000001FFE0000003C000001FFC000001FFE0000003C000000FF8000001F
+FE0000003C000000FF8000001FFE0000FFFFFF0000FF80007FFFFFFF80FFFFFF00007F00
+007FFFFFFF80FFFFFF00007F00007FFFFFFF80FFFFFF00003E00007FFFFFFF80FFFFFF00
+001C00007FFFFFFF8061447CC36A>I<00000007FFC0000000000000FFFFFE0000000000
+07FFFFFFC0000000001FFFFFFFF0000000007FFE00FFFC00000001FFF0001FFF00000007
+FF800003FFC000000FFF000001FFE000001FFC0000007FF000003FF80000003FF800007F
+F00000001FFC0000FFF00000001FFE0001FFE00000000FFF0003FFC000000007FF8003FF
+C000000007FF8007FF8000000003FFC007FF8000000003FFC00FFF0000000001FFE00FFF
+0000000001FFE01FFF0000000001FFF01FFE0000000000FFF03FFE0000000000FFF83FFE
+0000000000FFF83FFE0000000000FFF87FFE0000000000FFFC7FFC00000000007FFC7FFC
+00000000007FFC7FFC00000000007FFC7FFC00000000007FFCFFFC00000000007FFEFFFC
+00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC
+00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC
+00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFE7FFC
+00000000007FFC7FFE0000000000FFFC7FFE0000000000FFFC7FFE0000000000FFFC3FFE
+0000000000FFF83FFE0000000000FFF83FFF0000000001FFF81FFF0000000001FFF01FFF
+0000000001FFF01FFF8000000003FFF00FFF8000000003FFE00FFF8000000003FFE007FF
+C000000007FFC003FFC000000007FF8003FFE00000000FFF8001FFF00000001FFF0000FF
+F80000003FFE00007FFC0000007FFC00003FFE000000FFF800001FFF000001FFF000000F
+FFC00007FFE0000007FFF0001FFFC0000001FFFE00FFFF00000000FFFFFFFFFE00000000
+3FFFFFFFF80000000007FFFFFFC00000000000FFFFFE00000000000007FFC00000004746
+7AC454>79 D<FFFFFFFFFFFF000000FFFFFFFFFFFFF00000FFFFFFFFFFFFFE0000FFFFFF
+FFFFFFFF8000FFFFFFFFFFFFFFE000001FFF00000FFFF000001FFF000001FFF800001FFF
+0000007FFC00001FFF0000003FFE00001FFF0000001FFF00001FFF0000000FFF80001FFF
+0000000FFF80001FFF0000000FFFC0001FFF00000007FFC0001FFF00000007FFC0001FFF
+00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF
+00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF
+00000007FFE0001FFF00000007FFC0001FFF00000007FFC0001FFF0000000FFF80001FFF
+0000000FFF80001FFF0000000FFF00001FFF0000001FFF00001FFF0000003FFE00001FFF
+0000007FFC00001FFF000001FFF800001FFF00000FFFF000001FFFFFFFFFFFC000001FFF
+FFFFFFFF0000001FFFFFFFFFFC0000001FFFFFFFFFC00000001FFF000000000000001FFF
+000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF
+000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF
+000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF
+000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF
+000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF
+000000000000001FFF000000000000001FFF000000000000001FFF000000000000FFFFFF
+FFE000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFFFF
+FFE00000000043447DC34D>I<FFFFFFFFFFF800000000FFFFFFFFFFFFC0000000FFFFFF
+FFFFFFF8000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFF800000001FFF00003FFFE000
+00001FFF000003FFF00000001FFF000000FFF80000001FFF0000007FFC0000001FFF0000
+003FFE0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF800000
+1FFF0000000FFF8000001FFF0000000FFF8000001FFF0000000FFFC000001FFF0000000F
+FFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF
+0000000FFFC000001FFF0000000FFFC000001FFF0000000FFF8000001FFF0000000FFF80
+00001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000003FFE0000001FFF0000
+003FFC0000001FFF0000007FFC0000001FFF000001FFF00000001FFF000007FFE0000000
+1FFF00003FFF800000001FFFFFFFFFFF000000001FFFFFFFFFF8000000001FFFFFFFFFE0
+000000001FFFFFFFFFF8000000001FFF0000FFFC000000001FFF00003FFF000000001FFF
+00000FFF800000001FFF000007FFC00000001FFF000003FFE00000001FFF000003FFE000
+00001FFF000001FFF00000001FFF000001FFF00000001FFF000000FFF80000001FFF0000
+00FFF80000001FFF000000FFF80000001FFF000000FFF80000001FFF000000FFF8000000
+1FFF000000FFF80000001FFF000000FFF80000001FFF000000FFFC0000001FFF000000FF
+FC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF
+000000FFFC0000001FFF000000FFFC000F001FFF000000FFFE000F001FFF000000FFFE00
+0F001FFF0000007FFE000F001FFF0000007FFF001F001FFF0000003FFF001EFFFFFFFFE0
+001FFF803EFFFFFFFFE0000FFFE0FCFFFFFFFFE00007FFFFF8FFFFFFFFE00001FFFFF0FF
+FFFFFFE000007FFFE00000000000000007FF8050457DC354>82 D<0000FFE0001C000007
+FFFE003C00003FFFFF807C0000FFFFFFE0FC0001FFFFFFF9FC0003FF801FFFFC0007FC00
+01FFFC000FF800007FFC001FF000003FFC003FE000000FFC003FC0000007FC007FC00000
+03FC007F80000003FC007F80000001FC007F80000000FC00FF80000000FC00FF80000000
+7C00FF800000007C00FFC00000007C00FFC00000007C00FFE00000003C00FFF00000003C
+00FFF80000003C00FFFC00000000007FFE00000000007FFFE0000000007FFFFE00000000
+3FFFFFF00000003FFFFFFF0000001FFFFFFFE000001FFFFFFFFC00000FFFFFFFFE000007
+FFFFFFFF800003FFFFFFFFC00001FFFFFFFFE000007FFFFFFFF000001FFFFFFFF8000007
+FFFFFFFC000000FFFFFFFC0000000FFFFFFE00000000FFFFFE0000000007FFFF00000000
+007FFF00000000003FFF00000000000FFF800000000007FF800000000003FF80F0000000
+03FF80F000000001FF80F000000001FF80F000000000FF80F000000000FF80F800000000
+FF80F800000000FF80F800000000FF00FC00000000FF00FC00000000FF00FE00000001FF
+00FF00000001FE00FF80000003FE00FFC0000003FC00FFE0000007FC00FFF800000FF800
+FFFF00003FF000FFFFF800FFE000FE7FFFFFFFC000FC1FFFFFFF0000F807FFFFFC0000F0
+00FFFFF00000E00007FF80000031467AC43E>I<3FFFFFFFFFFFFFFFE03FFFFFFFFFFFFF
+FFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFE000FFF8003
+FFE07FE0000FFF80003FF07FC0000FFF80001FF07F00000FFF800007F07F00000FFF8000
+07F07E00000FFF800003F07C00000FFF800001F07C00000FFF800001F07C00000FFF8000
+01F07800000FFF800000F07800000FFF800000F07800000FFF800000F07800000FFF8000
+00F0F800000FFF800000F8F000000FFF80000078F000000FFF80000078F000000FFF8000
+0078F000000FFF80000078F000000FFF800000780000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000
+00000007FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF
+00000007FFFFFFFFFF000045437CC24E>I<FFFFFFFF000000FFFFFFFFFFFFFF000000FF
+FFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFF003FFE00
+00000000FC00003FFF0000000000FC00001FFF0000000000F800001FFF8000000001F800
+000FFF8000000001F000000FFFC000000001F000000FFFC000000003F0000007FFC00000
+0003E0000007FFE000000007E0000003FFE000000007C0000003FFF00000000FC0000001
+FFF00000000F80000001FFF80000000F80000001FFF80000001F80000000FFFC0000001F
+00000000FFFC0000003F000000007FFC0000003E000000007FFE0000007E000000003FFE
+0000007C000000003FFF0000007C000000003FFF000000FC000000001FFF800000F80000
+00001FFF800001F8000000000FFF800001F0000000000FFFC00003F00000000007FFC000
+03E00000000007FFE00003E00000000007FFE00007E00000000003FFF00007C000000000
+03FFF0000FC00000000001FFF0000F800000000001FFF8001F800000000000FFF8001F00
+0000000000FFFC003F0000000000007FFC003E0000000000007FFE003E0000000000007F
+FE007E0000000000003FFE007C0000000000003FFF00FC0000000000001FFF00F8000000
+0000001FFF81F80000000000000FFF81F00000000000000FFFC1F00000000000000FFFC3
+F000000000000007FFC3E000000000000007FFE7E000000000000003FFE7C00000000000
+0003FFFFC000000000000001FFFF8000000000000001FFFF8000000000000001FFFF8000
+000000000000FFFF0000000000000000FFFF00000000000000007FFE0000000000000000
+7FFE00000000000000003FFC00000000000000003FFC00000000000000003FFC00000000
+000000001FF800000000000000001FF800000000000000000FF000000000000000000FF0
+000000000000000007E0000000000000000007E00000000050457EC355>86
+D<0001FFE0000000001FFFFE000000007FFFFF80000001FFFFFFE0000003FE007FF80000
+07FC001FFC000007FE000FFE00000FFF0007FF00000FFF0007FF00000FFF0003FF80000F
+FF0003FF80000FFF0003FF80000FFF0001FFC00007FE0001FFC00003FC0001FFC00000F0
+0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000003
+FFFFC0000000FFFFFFC0000007FFFFFFC000003FFFF1FFC00000FFFC01FFC00003FFE001
+FFC0000FFF8001FFC0001FFE0001FFC0003FFC0001FFC0003FF80001FFC0007FF80001FF
+C0007FF00001FFC000FFF00001FFC000FFE00001FFC000FFE00001FFC000FFE00001FFC0
+00FFE00003FFC000FFE00003FFC000FFF00007FFC0007FF8000FFFC0007FF8001FFFF000
+3FFE003EFFFFC01FFF80FC7FFFC007FFFFF87FFFC003FFFFE01FFFC0007FFF8007FFC000
+0FFC00000000322F7DAD36>97 D<007FC000000000FFFFC000000000FFFFC000000000FF
+FFC000000000FFFFC000000000FFFFC00000000003FFC00000000001FFC00000000001FF
+C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
+0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
+00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
+000001FFC00FF8000001FFC0FFFF800001FFC3FFFFE00001FFCFFFFFF80001FFDFC03FFC
+0001FFFF000FFE0001FFFC0003FF0001FFF80001FF8001FFF00001FFC001FFE00000FFE0
+01FFC00000FFE001FFC000007FF001FFC000007FF001FFC000007FF801FFC000003FF801
+FFC000003FF801FFC000003FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FF
+C000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC0
+00003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FF801FFC000
+003FF801FFC000007FF801FFC000007FF001FFC000007FF001FFC000007FF001FFC00000
+FFE001FFE00000FFC001FFF00001FFC001FFF80003FF8001FF7C0007FF0001FE3E000FFE
+0001FC1FC07FFC0001F80FFFFFF00001F003FFFFC00001E000FFFF00000000001FF00000
+36467DC43E>I<00003FFC00000001FFFFC000000FFFFFF000003FFFFFFC00007FF003FE
+0000FFC001FF0003FF8003FF0007FF0007FF8007FE0007FF800FFE0007FF801FFC0007FF
+801FFC0007FF803FF80007FF803FF80003FF007FF80001FE007FF8000078007FF0000000
+007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000
+00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000
+00FFF0000000007FF8000000007FF8000000007FF8000000003FF8000000003FFC000003
+C03FFC000003C01FFE000007C00FFE000007800FFF00000F8007FF80001F0003FFC0003E
+0001FFF0007C00007FFC03F800003FFFFFF000000FFFFFC0000003FFFF000000003FF800
+002A2F7CAD32>I<0000000003FE0000000007FFFE0000000007FFFE0000000007FFFE00
+00000007FFFE0000000007FFFE00000000001FFE00000000000FFE00000000000FFE0000
+0000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000
+00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000
+000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000003FE0
+0FFE000003FFFC0FFE00000FFFFF8FFE00003FFFFFCFFE0000FFF807FFFE0001FFC001FF
+FE0003FF80007FFE0007FF00003FFE000FFE00001FFE000FFC00000FFE001FFC00000FFE
+003FF800000FFE003FF800000FFE003FF800000FFE007FF800000FFE007FF000000FFE00
+7FF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FF
+F000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF0
+00000FFE00FFF000000FFE00FFF000000FFE007FF000000FFE007FF000000FFE007FF000
+000FFE007FF800000FFE003FF800000FFE003FF800000FFE001FFC00001FFE001FFC0000
+1FFE000FFE00003FFE0007FE00007FFE0003FF0000FFFF0001FFC003FFFFFC00FFF01FEF
+FFFC007FFFFF8FFFFC001FFFFE0FFFFC0007FFF80FFFFC00007FC00FF80036467CC43E>
+I<00003FF800000003FFFF8000000FFFFFE000003FFFFFF000007FF83FF80000FFC007FC
+0001FF8003FE0003FF0001FF0007FE0000FF800FFC0000FF801FFC00007FC01FF800007F
+C03FF800003FE03FF800003FE07FF800003FE07FF000003FE07FF000003FF07FF000001F
+F0FFF000001FF0FFF000001FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFF
+F0FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF0000000
+007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000F01FFC000000
+F01FFC000001F00FFE000001E007FF000003E003FF800007C001FFC0000F8000FFF0003F
+00007FFE01FE00001FFFFFFC000007FFFFF0000001FFFFC00000001FFE00002C2F7DAD33
+>I<000000FF8000000FFFE000007FFFF00001FFFFF80003FF8FFC000FFE0FFE001FFC1F
+FE001FF81FFE003FF81FFE007FF01FFE007FF01FFE007FF00FFC00FFE00FFC00FFE003F0
+00FFE000C000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000
+FFE0000000FFE0000000FFE0000000FFE0000000FFE00000FFFFFFF800FFFFFFF800FFFF
+FFF800FFFFFFF800FFFFFFF80000FFE0000000FFE0000000FFE0000000FFE0000000FFE0
+000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000
+0000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000
+00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000
+FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF
+E000007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE00027467DC522>I<00
+00FFE0007E00000FFFFE03FF80003FFFFF8FFF8000FFFFFFFFFFC001FFC07FFF3FC003FF
+001FF83FC007FE000FFC3FC00FFC0007FE1F801FFC0007FF0F001FF80003FF00001FF800
+03FF00003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003
+FF80003FF80003FF80003FF80003FF80003FF80003FF80001FF80003FF00001FF80003FF
+00001FFC0007FF00000FFC0007FE000007FE000FFC000003FF001FF8000001FFC07FF000
+0003FFFFFFE0000003FFFFFF800000078FFFFE0000000780FFE00000000F800000000000
+0F8000000000000F8000000000000F8000000000000FC000000000000FE000000000000F
+F000000000000FFFFFFFC000000FFFFFFFFC000007FFFFFFFF800007FFFFFFFFE00003FF
+FFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC0003FFFFFFFFFE000FFFFFFFFFFF001FF000
+007FFF003FC0000007FF007F80000001FF807F80000000FF80FF00000000FF80FF000000
+007F80FF000000007F80FF000000007F80FF000000007F80FF80000000FF807F80000000
+FF007FC0000001FF003FE0000003FE001FF0000007FC000FFE00003FF80007FFC001FFF0
+0001FFFFFFFFC000007FFFFFFF0000000FFFFFF8000000007FFF00000032427DAC38>I<
+007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FF
+FFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
+C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
+0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
+00000001FFC00000000001FFC00000000001FFC00000000001FFC007FE000001FFC03FFF
+800001FFC0FFFFE00001FFC1FFFFF80001FFC7F03FFC0001FFCF801FFC0001FFDF000FFE
+0001FFDE000FFE0001FFFC000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF00
+01FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001
+FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF
+C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0
+0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000
+07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007
+FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFF
+FEFFFFFF83FFFFFEFFFFFF83FFFFFE37457CC43E>I<007C0001FF0003FF8007FFC007FF
+C00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC003FF8001FF00007C000000000000
+00000000000000000000000000000000000000000000000000007FC07FFFC07FFFC07FFF
+C07FFFC07FFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18467CC520>I<000003E000000FF800001FFC00
+003FFE00003FFE00007FFF00007FFF00007FFF00007FFF00007FFF00003FFE00003FFE00
+001FFC00000FF8000003E000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000001FF0003FFFF0003FFFF0003FFFF0003FFFF00
+03FFFF00000FFF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00
+0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00
+0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00
+0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00
+0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF1F
+8007FF3FC007FF7FE007FFFFF007FFFFF00FFEFFF00FFEFFF00FFCFFF01FFCFFE01FF87F
+E03FF03FC0FFE01FFFFF800FFFFF0003FFFC0000FFC000205A86C522>I<007FC0000000
+00FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000
+03FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001
+FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
+C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
+0000000001FFC00000000001FFC00000000001FFC00000000001FFC0007FFFE001FFC000
+7FFFE001FFC0007FFFE001FFC0007FFFE001FFC0007FFFE001FFC0000FE00001FFC0001F
+C00001FFC0003F000001FFC0007E000001FFC000FC000001FFC003F8000001FFC007E000
+0001FFC00FC0000001FFC01F80000001FFC07F00000001FFC0FE00000001FFC1FC000000
+01FFC3FE00000001FFC7FE00000001FFDFFF00000001FFFFFF80000001FFFFFFC0000001
+FFFFFFC0000001FFF9FFE0000001FFE1FFF0000001FFC0FFF8000001FF807FF8000001FF
+803FFC000001FF803FFE000001FF801FFF000001FF800FFF000001FF8007FF800001FF80
+07FFC00001FF8003FFE00001FF8001FFE00001FF8000FFF00001FF8000FFF80001FF8000
+7FFC0001FF80003FFC00FFFFFF03FFFFF8FFFFFF03FFFFF8FFFFFF03FFFFF8FFFFFF03FF
+FFF8FFFFFF03FFFFF835457DC43B>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000
+FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80
+FFFFFF8019457CC420>I<007F8007FE00000FFC0000FFFF803FFFC0007FFF8000FFFF80
+FFFFF001FFFFE000FFFF81FFFFF803FFFFF000FFFF87F01FFC0FE03FF800FFFF8FC00FFE
+1F801FFC0003FF9F000FFF3E001FFE0001FF9E0007FF3C000FFE0001FFBC0007FF78000F
+FE0001FFF80003FFF00007FF0001FFF80003FFF00007FF0001FFF00003FFE00007FF0001
+FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFC000
+03FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF80
+0007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF
+0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FF
+C00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003
+FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF8000
+07FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF00
+01FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC0
+0003FF800007FF0001FFC00003FF800007FF00FFFFFF81FFFFFF03FFFFFEFFFFFF81FFFF
+FF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FF
+FFFE572D7CAC5E>I<007F8007FE0000FFFF803FFF8000FFFF80FFFFE000FFFF81FFFFF8
+00FFFF87F03FFC00FFFF8F801FFC0003FF9F000FFE0001FF9E000FFE0001FFBC000FFE00
+01FFF80007FF0001FFF00007FF0001FFF00007FF0001FFE00007FF0001FFE00007FF0001
+FFE00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF
+C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0
+0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000
+07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007
+FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF
+00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE
+372D7CAC3E>I<00001FFC0000000001FFFFC000000007FFFFF00000001FFFFFFC000000
+7FF80FFF000000FFC001FF800001FF8000FFC00003FE00003FE00007FE00003FF0000FFC
+00001FF8000FF800000FF8001FF800000FFC001FF800000FFC003FF800000FFE003FF000
+0007FE007FF0000007FF007FF0000007FF007FF0000007FF007FF0000007FF00FFF00000
+07FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007
+FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF807FF0000007FF
+007FF0000007FF007FF0000007FF007FF0000007FF003FF800000FFE003FF800000FFE00
+1FF800000FFC001FFC00001FFC000FFC00001FF80007FE00003FF00007FE00003FF00003
+FF8000FFE00001FFC001FFC000007FF80FFF0000003FFFFFFE0000000FFFFFF800000001
+FFFFC0000000001FFC000000312F7DAD38>I<007FC00FF80000FFFFC0FFFF8000FFFFC3
+FFFFE000FFFFCFFFFFF800FFFFDFC03FFC00FFFFFF001FFE0003FFFC0007FF0001FFF800
+03FF8001FFF00003FFC001FFE00001FFE001FFC00001FFE001FFC00000FFF001FFC00000
+FFF001FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF801FFC000003F
+FC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC
+01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01
+FFC000003FFC01FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF001FF
+C00000FFF001FFC00000FFF001FFC00001FFE001FFE00001FFC001FFF00003FFC001FFF8
+0007FF8001FFFC000FFF0001FFFE001FFE0001FFDFC07FFC0001FFCFFFFFF00001FFC3FF
+FFC00001FFC0FFFF000001FFC01FF0000001FFC00000000001FFC00000000001FFC00000
+000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000
+0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000
+FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF8000000036
+407DAC3E>I<007F807F00FFFF81FFE0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1FFE
+03FFBE1FFE01FFBC1FFE01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801
+FFE001E001FFE0000001FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FF
+C0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0
+000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000
+0001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE000
+FFFFFFE000FFFFFFE000FFFFFFE000272D7DAC2E>114 D<001FFC038000FFFF878003FF
+FFFF800FFFFFFF801FF003FF803FC000FF803F80003F807F00001F807E00001F80FE0000
+0F80FE00000F80FE00000780FF00000780FF00000780FF80000780FFE0000000FFFE0000
+007FFFF000007FFFFF00003FFFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0003FFFFFF00
+01FFFFFF80007FFFFF80000FFFFFC000003FFFC0000003FFE0000000FFE0F000003FE0F0
+00003FE0F800001FE0F800000FE0F800000FE0FC00000FE0FC00000FE0FE00000FC0FF00
+001FC0FF00001FC0FF80003F80FFE0007F00FFF803FE00FFFFFFFC00FCFFFFF800F03FFF
+E000E007FE0000232F7CAD2C>I<0001E000000001E000000001E000000001E000000001
+E000000003E000000003E000000003E000000003E000000007E000000007E00000000FE0
+0000000FE00000001FE00000001FE00000003FE00000007FE0000000FFE0000003FFE000
+000FFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF8000FFE0000000FFE00000
+00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000
+FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF
+E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE001E000FFE001E000FFE0
+01E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE003
+E000FFF003C0007FF003C0007FF007C0003FF80F80001FFC1F00000FFFFF000007FFFC00
+0001FFF80000003FE00023407EBE2C>I<007FC00001FF00FFFFC003FFFF00FFFFC003FF
+FF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003FFFF0003FFC0000FFF0001FFC00007FF
+0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00
+01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001
+FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF
+C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0
+0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000
+0FFF0001FFC0000FFF0001FFC0001FFF0001FFC0001FFF0001FFC0003FFF0000FFC0003F
+FF0000FFE0007FFF80007FE001F7FFFE007FF807E7FFFE003FFFFFC7FFFE000FFFFF07FF
+FE0003FFFE07FFFE00007FF007FC00372E7CAC3E>I<FFFFFF0003FFFCFFFFFF0003FFFC
+FFFFFF0003FFFCFFFFFF0003FFFCFFFFFF0003FFFC01FFE000003E0000FFE000003C0000
+FFF000003C00007FF000007800007FF800007800007FF80000F800003FF80000F000003F
+FC0001F000001FFC0001E000001FFE0003E000000FFE0003C000000FFF0007C0000007FF
+000780000007FF800F80000003FF800F00000003FFC00F00000003FFC01F00000001FFE0
+1E00000001FFE03E00000000FFE03C00000000FFF07C000000007FF078000000007FF8F8
+000000003FF8F0000000003FFDF0000000001FFDE0000000001FFFE0000000000FFFC000
+0000000FFFC0000000000FFFC00000000007FF800000000007FF800000000003FF000000
+000003FF000000000001FE000000000001FE000000000000FC000000000000FC00000000
+000078000000362C7EAB3B>I<FFFFFE1FFFFF801FFFF0FFFFFE1FFFFF801FFFF0FFFFFE
+1FFFFF801FFFF0FFFFFE1FFFFF801FFFF0FFFFFE1FFFFF801FFFF001FFC0003FE000007C
+0001FFC0003FF00000780001FFE0003FF00000F80000FFE0001FF80000F00000FFF0001F
+F80001F000007FF0000FFC0001E000007FF0000FFC0001E000007FF8001FFC0003E00000
+3FF8001FFE0003C000003FFC003FFE0007C000001FFC003FFF00078000001FFC003FFF00
+078000001FFE0079FF000F8000000FFE0079FF800F0000000FFF00F9FF801F00000007FF
+00F0FFC01E00000007FF80F0FFC01E00000003FF81E07FC03C00000003FF81E07FE03C00
+000003FFC3E07FE07C00000001FFC3C03FF07800000001FFE7C03FF07800000000FFE780
+1FF0F000000000FFE7801FF8F000000000FFFF801FF9F0000000007FFF000FFDE0000000
+007FFF000FFFE0000000003FFE0007FFC0000000003FFE0007FFC0000000003FFE0007FF
+C0000000001FFC0003FF80000000001FFC0003FF80000000000FF80001FF00000000000F
+F80001FF00000000000FF00000FF000000000007F00000FE000000000007F00000FE0000
+00000003E000007C000000000003C000003C0000004C2C7EAB51>I<FFFFFE003FFFF0FF
+FFFE003FFFF0FFFFFE003FFFF0FFFFFE003FFFF0FFFFFE003FFFF000FFF00003E000007F
+F80007C000003FF8000F8000001FFC001F0000001FFE003F0000000FFF007E00000007FF
+807C00000003FFC0F800000001FFC1F000000001FFE3E000000000FFF7C0000000007FFF
+80000000003FFF80000000001FFF00000000001FFE00000000000FFF000000000007FF80
+0000000003FFC00000000003FFC00000000007FFE0000000000FFFF0000000000FFFF800
+0000001F3FFC000000003E1FFC000000007C1FFE00000000F80FFF00000001F007FF8000
+0003F003FFC0000007E001FFC0000007C001FFE000000F8000FFF000001F00007FF80000
+3E00003FFC00007E00001FFC00FFFFE000FFFFFCFFFFE000FFFFFCFFFFE000FFFFFCFFFF
+E000FFFFFCFFFFE000FFFFFC362C7EAB3B>I E /Fg 6 118 df<0003F000000FF800003E
+1C60007C0FF000F807F001F007F003E007F007E003E00FC003E00FC003E01F8007E01F80
+07C03F0007C03F0007C03F000FC07F000F807E000F807E000F807E001F80FE001F00FC00
+1F00FC001F06FC003F07FC003E0FFC003E0EFC007E0E7C007E1E7C00FE1C7C01FC1C3C03
+FC3C3E07BE381F0E1E7807FC0FF001F003C0202278A027>97 D<0000FC000007FF00001F
+0780003E03C000FC01C001F803C003F007C007E00FC007C00FC00FC00FC01F8007001F80
+00003F0000003F0000003F0000007F0000007E0000007E0000007E000000FE000000FC00
+0000FC000000FC000000FC0000007C0000C07C0001E07C0001E07C0003C03E000F803E00
+1F001F007C000F81F00003FFC00000FE00001B2278A023>99 D<000FC0000003FFC00000
+03FFC0000003FF800000001F800000001F800000001F800000001F000000001F00000000
+3F000000003F000000003E000000003E000000007E000000007E000000007C000000007C
+00000000FC00000000FC00000000F83F800000F8FFE00001FBE0F00001FF80F80001FF00
+780001FE007C0003FC007C0003F8007C0003F0007C0003F0007C0007E000FC0007E000F8
+0007C000F80007C000F8000FC001F8000FC001F0000F8001F0000F8001F0001F8003F000
+1F8003E0001F0007E0001F0007C0C03F0007C1E03F000FC1C03E000F81C03E000F81C07E
+000F83C07E000F03807C000F07807C000F0700FC000F0E00FC000F1E00F80007F8007000
+01F00023357BB327>104 D<0003F0001FFC003C1E00780F00F00701E00701E00F03E01F
+03C01F03C01F03E00403E00003F00003FF8003FFE001FFF000FFF8007FFC0007FC0000FE
+00007E00003E38003EFC003CFC003CFC003CFC007CF00078E000F0F001F07803E03C0F80
+1FFE0003F80018227AA01F>115 D<000300000F80000F80000F80001F80001F80001F00
+001F00003F00003F00003E00003E00007E00007E00007C007FFFF87FFFF8FFFFF800F800
+00F80001F80001F80001F00001F00003F00003F00003E00003E00007E00007E00007C000
+07C0000FC0000FC0000F80000F80601F80F01F80E01F00E01F01E01F01C01F03C01E0380
+1E07001E0F000F1E0007F80001E00015307AAE19>I<01F000000003FC0007000F1E000F
+000E1E001F001C1E001F003C1E001F00381E003F00783E003E00703E003E00703E003E00
+707E007E00F07C007C0060FC007C0000F8007C0000F800FC0001F800F80001F000F80001
+F000F80001F001F80003F001F00003E001F00003E001F06003E003F07003E003E0F007C0
+03E0E007C003E0E003C007E1E003C007E1C003E00FC1C003E01FC3C001E03FE38001F071
+E780007FE0FF00001F803C0024227AA029>I E /Fh 2 104 df<000007E000003FE00000
+FE000003F8000007F000000FE000000FC000001FC000001F8000001F8000001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
+8000001F8000003F8000003F0000007E000000FC000003F800007FE00000FF0000007FE0
+000003F8000000FC0000007E0000003F0000003F8000001F8000001F8000001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
+8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F
+8000001F8000001FC000000FC000000FE0000007F0000003F8000000FE0000003FE00000
+07E01B4B7BB726>102 D<FC000000FFC0000007F0000001FC000000FE0000007F000000
+3F0000003F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
+1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
+1F8000001F8000001F8000001F8000001F8000001F8000001F8000001FC000000FC00000
+07E0000003F0000001FC0000007FC000001FE000007FC00001FC000003F0000007E00000
+0FC000001FC000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
+1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000
+1F8000001F8000001F8000001F8000001F8000001F8000001F8000003F8000003F000000
+7F000000FE000001FC000007F00000FFC00000FC0000001B4B7BB726>I
+E /Fi 38 122 df<00003FE00FE00001FFF83FF80007E01EF83C001F800FF07E003F001F
+E0FE007E003FE0FE00FC003FC0FE01F8003FC0FE01F8003FC03803F0001F800003F0001F
+800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F
+800003F0001F800003F0001F800003F0001F800003F0001F8000FFFFFFFFFFC0FFFFFFFF
+FFC0FFFFFFFFFFC003F0001F800003F0001F800003F0001F800003F0001F800003F0001F
+800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F
+800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F
+800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F
+800003F0001F800003F0001F800007F8003FC000FFFF83FFFF00FFFF83FFFF00FFFF83FF
+FF002F357FB42D>11 D<00001FE0000000FFFC000003F01E00000FC00780001F80078000
+3F000FC0007E001FC000FC001FC000FC001FC001F8001FC001F8000F8001F800000001F8
+00000001F800000001F800000001F800000001F800000001F800000001F800000001F800
+000001F8000FC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC001F8001FC001F8000FC001F8000F
+C001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC0
+01F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001
+F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8
+000FC003FC001FE07FFFC1FFFF7FFFC1FFFF7FFFC1FFFF28357FB42B>I<3C007E00FF00
+FF00FF80FF807F803D800180018001800180038003000300070006000E000C001C003800
+7000600009177AB315>39 D<3C007E00FF00FF00FF80FF807F803D800180018001800180
+038003000300070006000E000C001C0038007000600009177A8715>44
+D<3C7EFFFFFFFF7E3C08087A8715>46 D<000FE000007FFC0000F83E0003E00F8007C007
+C0078003C00F8003E01F0001F01F0001F03F0001F83F0001F83E0000F87E0000FC7E0000
+FC7E0000FC7E0000FC7E0000FCFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000
+FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000
+FEFE0000FEFE0000FEFE0000FE7E0000FC7E0000FC7E0000FC7E0000FC7E0000FC3F0001
+F83F0001F83F0001F81F0001F01F0001F00F8003E007C007C007C007C003E00F8000F83E
+00007FFC00000FE0001F347DB126>48 D<001FE00000FFFC0001FFFF0007E03F800F001F
+C01E000FE01C0007F03F0007F03F8007F83F8003F83FC003F83F8003F83F8003F81F0007
+F8000007F8000007F0000007F000000FE000000FC000001FC000003F8000007E000001F8
+00007FE000007FFC0000003F0000001FC000000FE0000007F0000007F8000003F8000003
+FC000001FC000001FE000001FE000001FE7E0001FEFF0001FEFF0001FEFF0001FEFF0001
+FEFF0001FCFE0003FC780003FC700007F8380007F03C000FF01F001FE00FE03F8003FFFF
+0000FFFC00001FE0001F347DB126>51 D<3C7EFFFFFFFF7E3C0000000000000000000000
+00000000003C7EFEFFFFFF7F3F03030303070606060E0C1C38307060082F7A9F15>59
+D<000000E0000000000000E0000000000000E0000000000001F0000000000001F0000000
+000003F8000000000003F8000000000003F8000000000007FC000000000007FC00000000
+0007FC00000000000DFE00000000000CFE00000000000CFE0000000000187F0000000000
+187F0000000000187F0000000000303F8000000000303F8000000000703FC00000000060
+1FC000000000601FC000000000E01FE000000000C00FE000000000C00FE000000001800F
+F0000000018007F0000000018007F0000000030003F8000000030003F8000000030003F8
+000000060001FC000000060001FC0000000E0001FE0000000FFFFFFE0000000FFFFFFE00
+00001FFFFFFF0000001800007F0000001800007F0000003000007F8000003000003F8000
+003000003F8000006000001FC000006000001FC000006000001FC00000C000000FE00000
+C000000FE00001C000000FF00001C0000007F00003E0000007F0001FF000000FF800FFFE
+0001FFFFE0FFFE0001FFFFE0FFFE0001FFFFE033367DB53A>65 D<FFFFFE000000FFFFFE
+000000FFFFFE00000003FE0000000001FC0000000001FC0000000001FC0000000001FC00
+00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00
+00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00
+00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00
+00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00
+00018001FC0000018001FC0000018001FC0000018001FC0000038001FC0000030001FC00
+00030001FC0000030001FC0000030001FC0000070001FC0000070001FC00000F0001FC00
+001F0001FC00003F0001FC00007F0001FC0000FE0003FC0007FE00FFFFFFFFFE00FFFFFF
+FFFE00FFFFFFFFFE0029337DB230>76 D<FFFE00001FFFF8FFFF00001FFFF8FFFF80001F
+FFF800FF800000FF0000FFC000003C0000DFE00000180000CFF00000180000CFF0000018
+0000C7F80000180000C3FC0000180000C3FC0000180000C1FE0000180000C0FF00001800
+00C07F8000180000C07F8000180000C03FC000180000C01FE000180000C01FE000180000
+C00FF000180000C007F800180000C003FC00180000C003FC00180000C001FE00180000C0
+00FF00180000C000FF00180000C0007F80180000C0003FC0180000C0001FE0180000C000
+1FE0180000C0000FF0180000C00007F8180000C00007F8180000C00003FC180000C00001
+FE180000C00000FF180000C00000FF180000C000007F980000C000003FD80000C000003F
+D80000C000001FF80000C000000FF80000C0000007F80000C0000007F80000C0000003F8
+0000C0000001F80000C0000001F80001E0000000F80007F80000007800FFFFC000003800
+FFFFC000003800FFFFC00000180035337EB23A>78 D<001FE00300007FFC070001FFFF07
+0007F01FCF000F8003FF001F0000FF003E00007F003E00003F007C00001F007C00001F00
+7800000F00F800000700F800000700F800000700F800000700FC00000300FC00000300FE
+00000300FE000000007F000000007FC00000003FF00000003FFF0000001FFFF000000FFF
+FF000007FFFFC00003FFFFF00000FFFFF800003FFFFC000003FFFE0000003FFF00000003
+FF00000000FF800000007F800000003F800000001FC00000000FC0C000000FC0C000000F
+C0C0000007C0C0000007C0C0000007C0E0000007C0E0000007C0F000000F80F000000F80
+F800000F00FC00001F00FE00003E00FF00007E00FFC000FC00F1FC03F800E0FFFFE000E0
+1FFF8000C003FE000022377CB42B>83 D<7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7F
+8007F001FE7C0007F0003E780007F0001E700007F0000E700007F0000E600007F00006E0
+0007F00007E00007F00007E00007F00007C00007F00003C00007F00003C00007F00003C0
+0007F00003C00007F00003C00007F00003000007F00000000007F00000000007F0000000
+0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000
+0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000
+0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000
+0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000
+0007F00000000007F0000000000FF80000001FFFFFFC00001FFFFFFC00001FFFFFFC0030
+337DB237>I<FFFFFE001FFFF8FFFFFE001FFFF8FFFFFE001FFFF801FF000000FF0000FE
+0000003C0000FE000000180000FE000000180000FE000000180000FE000000180000FE00
+0000180000FE000000180000FE000000180000FE000000180000FE000000180000FE0000
+00180000FE000000180000FE000000180000FE000000180000FE000000180000FE000000
+180000FE000000180000FE000000180000FE000000180000FE000000180000FE00000018
+0000FE000000180000FE000000180000FE000000180000FE000000180000FE0000001800
+00FE000000180000FE000000180000FE000000180000FE000000180000FE000000180000
+FE000000180000FE000000180000FE000000180000FE0000003800007F0000003000007F
+0000003000007F0000007000003F8000006000001F800000E000001FC00001C000000FC0
+0003C0000007E0000780000003F0000F00000001FC001E00000000FF00FC000000003FFF
+F0000000000FFFC00000000001FF00000035357EB23A>I<FFF0FFF0FFF0FFF0F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000FFF0FFF0FFF0FFF00C4B79B715>
+91 D<FFF0FFF0FFF0FFF000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F0FFF0FFF0FFF0FFF00C4B7FB715>93 D<007F80000003FFF000000F80FC00001C003E00
+003F003F00003F801F80003F800FC0003F800FC0003F8007E0001F0007E000000007E000
+000007E000000007E000000007E0000001FFE000001FFFE00000FF87E00003FC07E0000F
+F007E0001FC007E0003F8007E0007F8007E0007F0007E000FF0007E0C0FE0007E0C0FE00
+07E0C0FE0007E0C0FE000FE0C0FE000FE0C0FF001FE0C07F003BE0C03F8071F1801FC1E1
+FF8007FFC0FF0000FE003C0022237DA126>97 D<03F0000000FFF0000000FFF0000000FF
+F000000007F000000003F000000003F000000003F000000003F000000003F000000003F0
+00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
+000003F000000003F03F800003F0FFE00003F3C0F80003F7007E0003FE003F0003FC001F
+8003F8000FC003F0000FC003F00007E003F00007F003F00007F003F00003F003F00003F8
+03F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803
+F00003F803F00003F803F00003F003F00007F003F00007E003F00007E003F0000FC003F8
+000FC003FC001F8003EC003F0003CF007C00038381F8000301FFE00000007F000025357E
+B32B>I<0007F800003FFF0000FC07C001F000E003E003F007C007F00FC007F01F8007F0
+3F8007F03F0003E07F0000007F0000007E000000FE000000FE000000FE000000FE000000
+FE000000FE000000FE000000FE000000FE000000FE0000007F0000007F0000003F000018
+3F8000181F8000381FC000300FC0007007E000E003F001C000FC0F80003FFE000007F000
+1D237EA122>I<0000003F0000000FFF0000000FFF0000000FFF000000007F000000003F
+000000003F000000003F000000003F000000003F000000003F000000003F000000003F00
+0000003F000000003F000000003F000000003F000000003F000000003F000007F03F0000
+3FFC3F0000FC0F3F0001F003BF0007E001FF000FC000FF001F80007F001F80003F003F00
+003F003F00003F007F00003F007E00003F00FE00003F00FE00003F00FE00003F00FE0000
+3F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F007E00003F
+007F00003F007F00003F003F00003F001F80007F001F80007F000FC000FF0007E001FF80
+03F007BFFC00F81E3FFC003FFC3FFC000FE03F0026357DB32B>I<000FE000007FFC0000
+F83F0003F00F8007E00FC00FC007E01F8003E01F8003F03F0003F03F0001F07F0001F87E
+0001F87E0001F8FE0001F8FE0001F8FFFFFFF8FFFFFFF8FE000000FE000000FE000000FE
+000000FE0000007E0000007F0000007F0000003F0000183F0000181F8000380F8000300F
+C0007007E000E001F003C000FC0F00003FFE000007F0001D237EA122>I<0001FC000007
+FF00001F0780003E0FC0007C1FC000FC1FC001F81FC001F81FC003F8070003F0000003F0
+000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0
+000003F00000FFFFF000FFFFF000FFFFF00003F0000003F0000003F0000003F0000003F0
+000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0
+000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0
+000003F0000003F0000007F800007FFFE0007FFFE0007FFFE0001A357FB417>I<000000
+1F00001FC07F8000FFF8E3C001F07FC7C007E03F03C00FC01F83800F800F80001F800FC0
+001F0007C0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E000
+1F0007C0001F800FC0000F800F80000FC01F800007E03F000007F07C00000EFFF800000C
+1FC000001C000000001C000000001C000000001E000000001E000000001F000000000FFF
+FE00000FFFFFC00007FFFFF00003FFFFFC0007FFFFFE001F0001FE003E00007F007C0000
+3F007C00001F80F800000F80F800000F80F800000F80F800000F80F800000F80FC00001F
+807C00001F003E00003E001F00007C000FC001F80003F007E00000FFFF8000001FFC0000
+22337EA126>I<03F0000000FFF0000000FFF0000000FFF000000007F000000003F00000
+0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
+03F000000003F000000003F000000003F000000003F000000003F000000003F01FC00003
+F07FF00003F1E0FC0003F3807C0003F7007E0003FE007E0003FC003F0003FC003F0003F8
+003F0003F8003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F000
+3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F
+0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0007F8007F80
+FFFFC7FFFCFFFFC7FFFCFFFFC7FFFC26347EB32B>I<07800FC01FE01FE01FE01FE00FC0
+0780000000000000000000000000000000000000000007E0FFE0FFE0FFE00FE007E007E0
+07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0
+07E007E007E007E00FF0FFFFFFFFFFFF10337EB215>I<07E0FFE0FFE0FFE00FE007E007
+E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
+E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
+E007E007E007E007E007E00FF0FFFFFFFFFFFF10347EB315>108
+D<03F01FE000FF0000FFF07FF803FFC000FFF1E07C0F03E000FFF3803E1C01F00007F700
+3F3801F80003FE003F7001F80003FC001FE000FC0003FC001FE000FC0003F8001FC000FC
+0003F8001FC000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F000
+1F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC
+0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F000
+1F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC
+0003F0001F8000FC0003F0001F8000FC0007F8003FC001FE00FFFFC7FFFE3FFFF0FFFFC7
+FFFE3FFFF0FFFFC7FFFE3FFFF03C217EA041>I<03F01FC000FFF07FF000FFF1E0FC00FF
+F3807C0007F7007E0003FE007E0003FC003F0003FC003F0003F8003F0003F8003F0003F0
+003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F000
+3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F
+0003F0003F0003F0003F0003F0003F0003F0003F0007F8007F80FFFFC7FFFCFFFFC7FFFC
+FFFFC7FFFC26217EA02B>I<0007F00000003FFE000000FC1F800001F007C00003C001E0
+0007C001F0000F8000F8001F00007C001F00007C003F00007E003E00003E007E00003F00
+7E00003F007E00003F00FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE
+00003F80FE00003F80FE00003F807E00003F007E00003F007E00003F003F00007E003F00
+007E001F00007C001F8000FC000FC001F80007C001F00003F007E00000FC1F8000003FFE
+00000007F0000021237EA126>I<03F03F8000FFF0FFE000FFF3C0F800FFF7007E0007FE
+003F0003FC001F8003F8001FC003F0000FC003F0000FE003F00007F003F00007F003F000
+07F003F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003
+F803F00003F803F00003F803F00007F803F00007F003F00007F003F00007E003F0000FE0
+03F0000FC003F8001FC003FC003F8003FC003F0003FF00FC0003F381F80003F1FFE00003
+F07F000003F000000003F000000003F000000003F000000003F000000003F000000003F0
+00000003F000000003F000000003F000000007F8000000FFFFC00000FFFFC00000FFFFC0
+000025307EA02B>I<03E07C00FFE1FF00FFE38F80FFE71FC007EE1FC003EC1FC003EC1F
+C003FC0F8003F8000003F8000003F8000003F0000003F0000003F0000003F0000003F000
+0003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000
+0003F0000003F0000003F0000003F0000007F80000FFFFE000FFFFE000FFFFE0001A217F
+A01E>114 D<00FF060007FFCE001F00FE003C003E0078001E0078000E00F0000E00F000
+0600F0000600F8000600F8000600FE000000FF8000007FFC00003FFFC0003FFFF0000FFF
+F80007FFFC0000FFFE00000FFF000000FF0000003F80C0001F80C0000F80E0000780E000
+0780E0000780F0000780F0000700F8000F00FC000E00FE001C00F7807800E1FFE000C07F
+800019237EA11E>I<00300000300000300000300000300000700000700000700000F000
+00F00001F00001F00003F00007F0001FFFFEFFFFFEFFFFFE03F00003F00003F00003F000
+03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F003
+03F00303F00303F00303F00303F00303F00303F00303F00701F80601F80600FC0E007E1C
+001FF80007E0182F7FAD1E>I<03F0003F00FFF00FFF00FFF00FFF00FFF00FFF0007F000
+7F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F
+0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F00
+03F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0007F0003F0007F0003
+F0007F0003F000FF0001F000FF0001F801FF8000F803BFFC007E073FFC001FFE3FFC0007
+F83F0026227EA02B>I<FFFF00FFF0FFFF00FFF0FFFF00FFF00FF0003F8007F0001F0003
+F0000E0003F0000C0003F8001C0001F800180001F800180000FC00300000FC00300000FE
+007000007E006000007F006000003F00C000003F00C000001F818000001F818000001FC3
+8000000FC30000000FC300000007E600000007E600000007FE00000003FC00000003FC00
+000001F800000001F800000001F800000000F000000000F00000000060000024217E9F29
+>I<FFFF1FFF81FFF0FFFF1FFF81FFF0FFFF1FFF81FFF007F801FC003F8007F001F8001E
+0003F000F8001C0003F000FC001C0001F8007C00180001F8007C00180001FC007E003800
+00FC00FE00300000FC00FE003000007E01FF006000007E019F006000007E019F80600000
+3F030F80C000003F030F80C000003F030FC0C000001F8607C18000001F8607C18000001F
+C607E38000000FCC03E30000000FCC03E300000007FC03F600000007F801F600000007F8
+01FE00000003F000FC00000003F000FC00000003F000FC00000001E0007800000001E000
+7800000001E0007800000000C00030000034217F9F37>I<FFFF01FFF8FFFF01FFF8FFFF
+01FFF803FE00FF8001FC007C0000FC007800007E007000007F00E000003F81C000001F83
+8000000FC300000007E600000007FE00000003FC00000001F800000000FC00000000FE00
+000000FF00000001FF000000039F800000071FC00000060FE000000C07E000001C03F000
+003801F800007001FC0000F000FC0001F000FE000FF000FF80FFFC03FFFCFFFC03FFFCFF
+FC03FFFC26207F9F29>I<7FFF807FF87FFF807FF87FFF807FF807F8001FC003F8000F80
+01F800070001F800060000FC000C0000FC000C0000FE001C00007E001800007E00180000
+3F003000003F003000003F807000001F806000001FC0E000000FC0C000000FC0C0000007
+E180000007E180000007F380000003F300000003FB00000001FE00000001FE00000000FC
+00000000FC00000000FC0000000078000000007800000000300000000030000000006000
+0000006000000000E000000000C000000000C0000000018000007801800000FC03000000
+FC03000000FC06000000FC0E000000701C00000078380000001FF00000000FC000000025
+307F9F29>I E /Fj 5 53 df<0000380000000038000000003800000000380000000038
+000000003800000000380000000038000000003800000000380000000038000000003800
+00000038000000003800000000380000000038000000003800000000380000FFFFFFFFFE
+FFFFFFFFFEFFFFFFFFFE0000380000000038000000003800000000380000000038000000
+003800000000380000000038000000003800000000380000000038000000003800000000
+3800000000380000000038000000003800000000380000000038000027277C9F2F>43
+D<00E00001E00007E000FFE000F9E00001E00001E00001E00001E00001E00001E00001E0
+0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0
+0001E00001E00001E00001E00001E00001E00003F000FFFFC0FFFFC012217AA01E>49
+D<01FC0007FF801C0FC03003E06001F06000F8F800F8FC00FCFC00FCFC007C78007C3000
+FC0000FC0000F80000F80001F00003E00003C0000780000F00001E0000380000700000E0
+0001C00C03800C0600180C00181800183FFFF87FFFF8FFFFF0FFFFF016217CA01E>I<00
+FF0003FFC00F03E01C00F01C00F83E00FC3E007C3E007C1E00FC0C00FC0000F80000F800
+01F00003E0000FC001FF0001FF000003E00000F000007800007C00003E00003F30003F78
+003FFC003FFC003FFC003EF8007E60007C3800F81E03F00FFFC001FF0018227DA01E>I<
+0000E00001E00001E00003E00007E00007E0000DE0001DE00039E00031E00061E000E1E0
+00C1E00181E00381E00701E00601E00C01E01C01E01801E03001E07001E0E001E0FFFFFF
+FFFFFF0001E00001E00001E00001E00001E00001E00003F0003FFF003FFF18227DA11E>
+I E /Fk 5 107 df<000FFC0000003FFF000000FFFFC00003FFFFF00007FFFFF8000FFF
+FFFC001FFFFFFE003FFFFFFF003FFFFFFF007FFFFFFF807FFFFFFF807FFFFFFF80FFFFFF
+FFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFF
+C0FFFFFFFFC0FFFFFFFFC07FFFFFFF807FFFFFFF807FFFFFFF803FFFFFFF003FFFFFFF00
+1FFFFFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022
+227BA72D>15 D<0000000000000030000000000000000000780000000000000000007800
+00000000000000007C0000000000000000003C0000000000000000003C00000000000000
+00003E0000000000000000001E0000000000000000001E0000000000000000001F000000
+0000000000000F8000000000000000000F80000000000000000007C00000000000000000
+03E0000000000000000003E0000000000000000001F0000000000000000000F800000000
+00000000007C0000000000000000007E0000000000000000001F8000000000000000000F
+C0000000000000000007F07FFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF7FFFFFFFFFFFFFFFFFFC000000000000000007F000000000000000000FC000
+000000000000001F8000000000000000007E0000000000000000007C0000000000000000
+00F8000000000000000001F0000000000000000003E0000000000000000003E000000000
+0000000007C000000000000000000F8000000000000000000F8000000000000000001F00
+00000000000000001E0000000000000000001E0000000000000000003E00000000000000
+00003C0000000000000000003C0000000000000000007C00000000000000000078000000
+0000000000007800000000000000000030000050307BAE5B>33 D<0000003F000003FF00
+000FE000003F8000007E000001FC000001F8000003F0000003F0000007E0000007E00000
+07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000
+07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000
+07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000000FE00000
+0FC000001FC000003F8000003F000000FE000003F800007FE00000FF0000007FE0000003
+F8000000FE0000003F0000003F8000001FC000000FC000000FE0000007E0000007E00000
+07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000
+07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000
+07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000003F00000
+03F0000001F8000001FC0000007E0000003F8000000FE0000003FF0000003F205B7AC32D
+>102 D<FC000000FFC0000007F0000001FC0000007E0000003F8000001F8000000FC000
+000FC0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007F0000003F0000003F8000001FC000000FC0000007F0000001FC0
+000007FE000000FF000007FE00001FC000007F000000FC000001FC000003F8000003F000
+0007F0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E000000FC000000FC000001F8000003F8000007E000001FC000007F00000
+FFC00000FC000000205B7AC32D>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
+F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
+F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F060045B
+76C319>106 D E /Fl 4 53 df<000C00003C00007C0003FC00FFFC00FC7C00007C0000
+7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000
+7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000
+7C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000FE007FFFFE7F
+FFFE172C7AAB23>49 D<007F800001FFF0000780FC000E003F001C001F8038000FC07000
+0FC0600007E0F00007E0FC0007F0FE0007F0FE0003F0FE0003F0FE0003F07C0007F00000
+07F0000007F0000007E000000FE000000FC000001FC000001F8000003F0000007E000000
+7C000000F8000001F0000003E0000007C000000F8000001E0000003C00000078000000F0
+003000E0003001C0003003800060070000600E0000E01FFFFFE03FFFFFE07FFFFFC0FFFF
+FFC0FFFFFFC01C2C7DAB23>I<003FC00001FFF00007C0FC000E007E001C003F001C001F
+803F001FC03F001FC03F800FC03F000FC03F000FC00C001FC000001FC000001F8000001F
+8000003F0000003E0000007C000000F8000003F00000FFC00000FFF0000000FC0000003F
+0000001F8000001FC000000FC000000FE000000FE0000007F0000007F0380007F07C0007
+F0FE0007F0FE0007F0FE0007F0FE000FE0F8000FE060000FC070001FC038001F801E003F
+000780FC0001FFF000007FC0001C2D7DAB23>I<00000E0000000E0000001E0000003E00
+00003E0000007E000000FE000000FE000001BE000003BE0000033E0000063E00000E3E00
+000C3E0000183E0000383E0000303E0000603E0000E03E0000C03E0001803E0003803E00
+03003E0006003E000E003E000C003E0018003E0038003E0030003E0060003E00E0003E00
+FFFFFFFCFFFFFFFC00003E0000003E0000003E0000003E0000003E0000003E0000003E00
+00003E0000003E0000007F00001FFFFC001FFFFC1E2D7EAC23>I
+E /Fm 52 122 df<000000FFF8000000000FFFFF000000007FFFFF80000001FFFFFFE000
+0007FFC01FF000000FFE0007F000001FF8000FF800003FE0001FF800007FC0003FFC0000
+FFC0003FFC0000FF80003FFC0001FF80003FFC0001FF00003FFC0001FF00003FFC0001FF
+00001FF80001FF00000FF00001FF000003C00001FF000000000001FF000000000001FF00
+0000000001FF000000000001FF000000000001FF000000000001FF000003FC00FFFFFFFF
+FFFC00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0001FF80001F
+FC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC
+0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC00
+01FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001
+FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF
+80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80
+000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC007FFFFE03FFFFF07FFFFE03
+FFFFF07FFFFE03FFFFF07FFFFE03FFFFF07FFFFE03FFFFF034407EBF3A>12
+D<0FC0001F801FE0003FC03FF0007FE07FF800FFF0FFFC01FFF8FFFC01FFF8FFFC01FFF8
+FFFE01FFFCFFFE01FFFCFFFE01FFFC7FFE00FFFC3FFE007FFC1FFE003FFC0FDE001FBC00
+1E00003C001E00003C003E00007C003C000078003C000078007C0000F800780000F00078
+0000F000F80001F001F00003E001F00003E003E00007C007C0000F800F80001F001F8000
+3F003F00007E003E00007C001C0000380026207DBE37>34 D<FFFFFFE0FFFFFFE0FFFFFF
+E0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B097F9823>45
+D<0FC01FE03FF07FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00FC00E0E798D1D>I<
+0000FFE000000007FFFC0000001FFFFF0000007FFFFFC00000FFE0FFE00001FF803FF000
+03FE000FF80007FC0007FC0007FC0007FC000FF80003FE001FF80003FF001FF80003FF00
+1FF80003FF003FF00001FF803FF00001FF803FF00001FF807FF00001FFC07FF00001FFC0
+7FF00001FFC07FF00001FFC07FF00001FFC0FFF00001FFE0FFF00001FFE0FFF00001FFE0
+FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0
+FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0
+FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE07FF00001FFC0
+7FF00001FFC07FF00001FFC07FF00001FFC07FF00001FFC03FF00001FF803FF80003FF80
+3FF80003FF801FF80003FF001FF80003FF000FF80003FE000FFC0007FE0007FE000FFC00
+03FF001FF80001FF803FF00000FFE0FFE000007FFFFFC000001FFFFF00000007FFFC0000
+0000FFE000002B3D7CBB34>48 D<00000F000000003F000000007F00000001FF0000000F
+FF000001FFFF0000FFFFFF0000FFFFFF0000FFFFFF0000FFF7FF0000FE07FF00000007FF
+00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00
+000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF0000
+0007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF000000
+07FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007
+FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF
+00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00
+00FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0243C78BB34>I<0003FF
+800000003FFFF8000000FFFFFE000003FFFFFF800007FFFFFFC0000FF80FFFE0001FC003
+FFF0003F8000FFF8007FC0007FFC007FE0003FFE00FFF0003FFE00FFF8001FFF00FFF800
+1FFF00FFF8000FFF80FFF8000FFF80FFF8000FFF80FFF8000FFF807FF0000FFF803FE000
+0FFF801FC0000FFF800700000FFF800000000FFF800000001FFF000000001FFF00000000
+1FFE000000003FFE000000003FFC000000007FF8000000007FF800000000FFF000000000
+FFE000000001FFC000000003FF8000000007FE0000000007FC000000000FF8000000001F
+E0000000003FC0000000007F8000000000FF000F800001FC000F800003F8000F800007F0
+001F00000FE0001F00001F80001F00003F00001F00007E00003F0000FC00003F0001FFFF
+FFFF0003FFFFFFFE0007FFFFFFFE000FFFFFFFFE001FFFFFFFFE003FFFFFFFFE007FFFFF
+FFFE00FFFFFFFFFE00FFFFFFFFFC00FFFFFFFFFC00FFFFFFFFFC00FFFFFFFFFC00293C7B
+BB34>I<0001FFE00000000FFFFE0000003FFFFF800000FFFFFFE00001FF81FFF00003FC
+007FF80007F0003FFC0007F0003FFE000FFC001FFE000FFE001FFF001FFE001FFF001FFF
+001FFF001FFF001FFF001FFF001FFF001FFF001FFF001FFF001FFF000FFE001FFF000FFE
+001FFE0007FC003FFE0001F0003FFC000000003FFC000000007FF8000000007FF0000000
+00FFE000000001FFC00000000FFF80000007FFFE00000007FFF800000007FFFE00000007
+FFFFC000000001FFF0000000007FF8000000003FFC000000001FFE000000000FFF000000
+000FFF800000000FFF8000000007FFC000000007FFC000000007FFE00FC00007FFE01FE0
+0007FFE03FF00007FFE07FF80007FFE0FFFC0007FFE0FFFC0007FFE0FFFC0007FFE0FFFC
+0007FFC0FFFC0007FFC0FFFC000FFFC0FFF8000FFF807FF8000FFF807FF0001FFF003FC0
+003FFE001FE0007FFC000FFE01FFF80007FFFFFFF00003FFFFFFE00000FFFFFF8000003F
+FFFE00000003FFE000002B3D7CBB34>I<00000001F80000000003F80000000007F80000
+000007F8000000000FF8000000001FF8000000003FF8000000003FF8000000007FF80000
+0000FFF800000001FFF800000003FFF800000003FFF800000007FFF80000000FFFF80000
+001FBFF80000003F3FF80000003E3FF80000007C3FF8000000FC3FF8000001F83FF80000
+01F03FF8000003E03FF8000007E03FF800000FC03FF800001F803FF800001F003FF80000
+3E003FF800007E003FF80000FC003FF80001F8003FF80001F0003FF80003E0003FF80007
+E0003FF8000FC0003FF8000F80003FF8001F00003FF8003F00003FF8007E00003FF800FC
+00003FF800FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF800
+00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000
+00007FF8000000007FF8000000007FF8000000007FF8000001FFFFFFF80001FFFFFFF800
+01FFFFFFF80001FFFFFFF80001FFFFFFF82D3C7DBB34>I<0700000038000FE00001F800
+0FFE003FF8000FFFFFFFF8000FFFFFFFF0000FFFFFFFE0000FFFFFFFC0000FFFFFFF8000
+0FFFFFFF00000FFFFFFE00000FFFFFF800000FFFFFF000000FFFFFC000000FFFFE000000
+0F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000
+0F80000000000F80000000000F80000000000F80FFC000000F87FFFC00000F9FFFFF0000
+0FFFFFFF80000FFF01FFE0000FF8007FF0000FF0003FF8000FC0001FFC000F80001FFC00
+0700001FFE000000000FFE000000000FFF000000000FFF000000000FFF000000000FFF80
+0000000FFF800700000FFF801FC0000FFF803FE0000FFF807FF0000FFF80FFF0000FFF80
+FFF8000FFF80FFF8000FFF80FFF8000FFF00FFF8000FFF00FFF0000FFF00FFF0001FFE00
+7FE0001FFE007F80001FFC003F00003FFC003F80007FF8001FE000FFF0000FFC07FFE000
+07FFFFFFC00003FFFFFF000000FFFFFC0000003FFFF000000007FF000000293D7BBB34>
+I<000007FF000000003FFFC0000001FFFFF0000007FFFFF800000FFF03FC00003FF800FC
+00007FE001FE0000FFC003FE0001FF8007FF0003FF000FFF0003FF000FFF0007FE000FFF
+000FFE000FFF000FFE000FFF001FFC000FFF001FFC0007FE003FFC0003FC003FFC0001F8
+003FFC000000007FF8000000007FF8000000007FF8020000007FF83FFE0000FFF87FFF80
+00FFF9FFFFE000FFFBFFFFF000FFFBE03FF800FFFF800FFC00FFFF0007FE00FFFF0007FF
+00FFFE0007FF00FFFE0003FF80FFFC0003FFC0FFFC0003FFC0FFFC0003FFC0FFFC0003FF
+E0FFF80003FFE0FFF80003FFE0FFF80003FFE0FFF80003FFE07FF80003FFE07FF80003FF
+E07FF80003FFE07FF80003FFE07FF80003FFE03FF80003FFE03FF80003FFE03FFC0003FF
+C01FFC0003FFC01FFC0003FFC00FFC0007FF800FFE0007FF0007FE0007FF0003FF000FFE
+0001FF801FFC0000FFE07FF800007FFFFFF000003FFFFFE000001FFFFF80000007FFFE00
+000000FFF000002B3D7CBB34>I<1F00000000001F80000000001FF8000000001FFFFFFF
+FFF01FFFFFFFFFF01FFFFFFFFFF01FFFFFFFFFF03FFFFFFFFFF03FFFFFFFFFE03FFFFFFF
+FFC03FFFFFFFFF803FFFFFFFFF003FFFFFFFFE003FFFFFFFFC007FFFFFFFFC007E000001
+F8007E000003F0007C000007E0007C00000FC0007C00001F80007C00001F0000F800003F
+0000F800007E0000F80000FC0000000001F80000000003F00000000003F00000000007E0
+000000000FE0000000000FC0000000001FC0000000003FC0000000003F80000000007F80
+000000007F8000000000FF8000000000FF0000000001FF0000000001FF0000000003FF00
+00000003FF0000000003FF0000000007FE0000000007FE0000000007FE000000000FFE00
+0000000FFE000000000FFE000000000FFE000000000FFE000000001FFE000000001FFE00
+0000001FFE000000001FFE000000001FFE000000001FFE000000001FFE000000001FFE00
+0000001FFE000000001FFE000000000FFC0000000007F80000000003F00000002C3F7ABD
+34>I<0000FFF000000007FFFE0000001FFFFF8000007FFFFFE00000FFC07FF00001FE00
+1FF80003FC000FFC0007F80007FE0007F80003FE000FF00003FE000FF00003FF000FF000
+01FF001FF00001FF001FF00001FF001FF80001FF001FFC0001FF001FFE0001FF001FFF00
+03FF001FFFC003FE001FFFF003FE000FFFF807FC000FFFFE0FF8000FFFFF9FF00007FFFF
+FFE00003FFFFFFC00003FFFFFF800001FFFFFF000000FFFFFF8000007FFFFFE000001FFF
+FFF000003FFFFFF80000FFFFFFFC0001FFFFFFFE0007FE3FFFFF000FFC1FFFFF801FF807
+FFFF801FF001FFFFC03FE0007FFFC07FE0003FFFC07FC0000FFFE07FC00003FFE0FF8000
+01FFE0FF800000FFE0FF8000007FE0FF8000007FE0FF8000003FE0FF8000003FE0FF8000
+003FE0FFC000003FC07FC000003FC07FC000007F807FE000007F803FF00000FF001FF800
+01FF001FFE0007FE000FFFC03FFC0007FFFFFFF80001FFFFFFE000007FFFFFC000001FFF
+FE00000001FFF000002B3D7CBB34>I<0001FFE00000000FFFFC0000003FFFFF000000FF
+FFFFC00001FFE0FFE00003FF003FF00007FE001FF8000FFE000FFC001FFC000FFC001FFC
+0007FE003FFC0007FE007FF80007FF007FF80003FF007FF80003FF80FFF80003FF80FFF8
+0003FF80FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF8
+0003FFE0FFF80003FFE0FFF80003FFE0FFF80003FFE07FF80007FFE07FF80007FFE07FF8
+0007FFE07FF80007FFE03FF8000FFFE01FFC000FFFE01FFC001FFFE00FFE001FFFE007FE
+003FFFE003FF80FBFFE001FFFFFBFFE0007FFFF3FFE0003FFFC3FFE0000FFF83FFC00000
+0803FFC000000003FFC000000003FFC000000007FF8003F00007FF8007F80007FF800FFC
+0007FF001FFE0007FF001FFE000FFE001FFE000FFE001FFE000FFC001FFE001FFC001FFE
+003FF8001FFC003FF0000FF800FFE0000FF001FFC00007FC0FFF800003FFFFFF000001FF
+FFFC000000FFFFF00000007FFFC00000000FFE0000002B3D7CBB34>I<0FC01FE03FF07F
+F8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00FC0000000000000000000000000000000
+0000000000000000000FC01FE03FF07FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00F
+C00E2879A71D>I<00000000FC0000000000000000FC0000000000000001FE0000000000
+000001FE0000000000000003FF0000000000000003FF0000000000000003FF0000000000
+000007FF8000000000000007FF800000000000000FFFC00000000000000FFFC000000000
+00000FFFC00000000000001FFFE00000000000001FFFE00000000000003FFFF000000000
+00003FFFF00000000000003FFFF00000000000007FFFF80000000000007CFFF800000000
+0000FCFFFC000000000000F87FFC000000000000F87FFC000000000001F87FFE00000000
+0001F03FFE000000000003F03FFF000000000003E01FFF000000000007E01FFF80000000
+0007C01FFF800000000007C00FFF80000000000FC00FFFC0000000000F8007FFC0000000
+001F8007FFE0000000001F0007FFE0000000001F0003FFE0000000003F0003FFF0000000
+003E0001FFF0000000007E0001FFF8000000007C0000FFF8000000007C0000FFF8000000
+00FC0000FFFC00000000F800007FFC00000001FFFFFFFFFE00000001FFFFFFFFFE000000
+01FFFFFFFFFE00000003FFFFFFFFFF00000003FFFFFFFFFF00000007E000001FFF800000
+07C000000FFF8000000FC000000FFFC000000F8000000FFFC000000F80000007FFC00000
+1F80000007FFE000001F00000003FFE000003F00000003FFF000003E00000003FFF00000
+3E00000001FFF000007E00000001FFF800007C00000000FFF800FFFFFC0000FFFFFFFCFF
+FFFC0000FFFFFFFCFFFFFC0000FFFFFFFCFFFFFC0000FFFFFFFCFFFFFC0000FFFFFFFC46
+3F7CBE4F>65 D<FFFFFFFFFFF80000FFFFFFFFFFFF8000FFFFFFFFFFFFF000FFFFFFFFFF
+FFFC00FFFFFFFFFFFFFE00003FFC00003FFF00003FFC00000FFF80003FFC000007FFC000
+3FFC000003FFE0003FFC000001FFE0003FFC000001FFF0003FFC000001FFF0003FFC0000
+00FFF8003FFC000000FFF8003FFC000000FFF8003FFC000000FFF8003FFC000000FFF800
+3FFC000000FFF8003FFC000000FFF8003FFC000000FFF0003FFC000001FFF0003FFC0000
+01FFF0003FFC000003FFE0003FFC000003FFC0003FFC000007FF80003FFC00000FFF0000
+3FFC00003FFE00003FFC0001FFF800003FFFFFFFFFE000003FFFFFFFFF8000003FFFFFFF
+FFF800003FFFFFFFFFFE00003FFC00000FFF80003FFC000003FFC0003FFC000001FFE000
+3FFC000000FFF0003FFC000000FFF8003FFC0000007FFC003FFC0000007FFC003FFC0000
+003FFE003FFC0000003FFE003FFC0000003FFF003FFC0000003FFF003FFC0000003FFF00
+3FFC0000001FFF003FFC0000003FFF003FFC0000003FFF003FFC0000003FFF003FFC0000
+003FFF003FFC0000003FFE003FFC0000007FFE003FFC0000007FFE003FFC000000FFFC00
+3FFC000001FFF8003FFC000003FFF8003FFC000007FFF0003FFC00003FFFE0FFFFFFFFFF
+FFFFC0FFFFFFFFFFFFFF00FFFFFFFFFFFFFC00FFFFFFFFFFFFF000FFFFFFFFFFFF000040
+3E7DBD4A>I<00000007FFC0000E000000FFFFFC001E000007FFFFFF003E00003FFFFFFF
+C07E0000FFFFFFFFE1FE0003FFFF803FFBFE0007FFF80003FFFE000FFFC00000FFFE003F
+FF0000007FFE007FFE0000001FFE00FFF80000000FFE01FFF000000007FE03FFE0000000
+07FE03FFC000000003FE07FFC000000001FE0FFF8000000001FE0FFF8000000000FE1FFF
+0000000000FE1FFF00000000007E3FFF00000000007E3FFE00000000007E3FFE00000000
+003E7FFE00000000003E7FFE00000000003E7FFE00000000003E7FFC000000000000FFFC
+000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC00000000
+0000FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC
+000000000000FFFC000000000000FFFC0000000000007FFC0000000000007FFE00000000
+00007FFE00000000003E7FFE00000000003E3FFE00000000003E3FFE00000000003E3FFF
+00000000003E1FFF00000000007E1FFF00000000007C0FFF80000000007C0FFF80000000
+00FC07FFC000000000F803FFE000000001F803FFE000000001F001FFF000000003F000FF
+F800000007E0007FFE0000000FC0003FFF0000003F80000FFFC00000FF000007FFF80003
+FE000003FFFF801FFC000000FFFFFFFFF80000003FFFFFFFE000000007FFFFFF80000000
+00FFFFFC000000000007FFC000003F407ABE4C>I<FFFFFFFFFFF8000000FFFFFFFFFFFF
+800000FFFFFFFFFFFFF00000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000003FFC00007F
+FFC000003FFC000007FFE000003FFC000001FFF000003FFC0000007FF800003FFC000000
+3FFC00003FFC0000001FFE00003FFC0000000FFF00003FFC00000007FF80003FFC000000
+07FF80003FFC00000003FFC0003FFC00000003FFC0003FFC00000001FFE0003FFC000000
+01FFE0003FFC00000001FFF0003FFC00000000FFF0003FFC00000000FFF0003FFC000000
+00FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC000000
+00FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC000000
+00FFFC003FFC000000007FFC003FFC000000007FFC003FFC000000007FFC003FFC000000
+00FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC000000
+00FFFC003FFC00000000FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC000000
+00FFF8003FFC00000000FFF0003FFC00000000FFF0003FFC00000001FFF0003FFC000000
+01FFE0003FFC00000001FFE0003FFC00000003FFC0003FFC00000003FFC0003FFC000000
+07FF80003FFC0000000FFF00003FFC0000001FFF00003FFC0000003FFE00003FFC000000
+7FFC00003FFC000001FFF800003FFC000007FFE000003FFC00007FFFC000FFFFFFFFFFFF
+FF8000FFFFFFFFFFFFFE0000FFFFFFFFFFFFF80000FFFFFFFFFFFFC00000FFFFFFFFFFF8
+000000463E7DBD50>I<FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFF
+FFFFFFFFFF00FFFFFFFFFFFFFF80003FFE00003FFF80003FFE000007FF80003FFE000001
+FF80003FFE000000FF80003FFE0000003F80003FFE0000003F80003FFE0000001F80003F
+FE0000000FC0003FFE0000000FC0003FFE0000000FC0003FFE00000007C0003FFE0007C0
+07C0003FFE0007C007C0003FFE0007C007C0003FFE0007C003E0003FFE0007C003E0003F
+FE0007C003E0003FFE000FC003E0003FFE000FC00000003FFE001FC00000003FFE003FC0
+0000003FFE00FFC00000003FFFFFFFC00000003FFFFFFFC00000003FFFFFFFC00000003F
+FFFFFFC00000003FFFFFFFC00000003FFE00FFC00000003FFE003FC00000003FFE001FC0
+0000003FFE000FC0007C003FFE000FC0007C003FFE0007C0007C003FFE0007C000F8003F
+FE0007C000F8003FFE0007C000F8003FFE0007C000F8003FFE0007C000F8003FFE000000
+01F8003FFE00000001F8003FFE00000001F0003FFE00000003F0003FFE00000003F0003F
+FE00000007F0003FFE00000007F0003FFE0000000FF0003FFE0000001FE0003FFE000000
+3FE0003FFE000000FFE0003FFE000003FFE0003FFE00003FFFE0FFFFFFFFFFFFFFE0FFFF
+FFFFFFFFFFE0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC03E3D7DBC45>
+I<FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFF
+FFFFFFFF00003FFE00007FFF00003FFE00000FFF00003FFE000003FF00003FFE000000FF
+00003FFE0000007F00003FFE0000007F00003FFE0000003F00003FFE0000001F80003FFE
+0000001F80003FFE0000001F80003FFE0000000F80003FFE0000000F80003FFE0007C00F
+80003FFE0007C00F80003FFE0007C007C0003FFE0007C007C0003FFE0007C007C0003FFE
+0007C007C0003FFE000FC00000003FFE000FC00000003FFE001FC00000003FFE003FC000
+00003FFE00FFC00000003FFFFFFFC00000003FFFFFFFC00000003FFFFFFFC00000003FFF
+FFFFC00000003FFFFFFFC00000003FFE00FFC00000003FFE003FC00000003FFE001FC000
+00003FFE000FC00000003FFE000FC00000003FFE0007C00000003FFE0007C00000003FFE
+0007C00000003FFE0007C00000003FFE0007C00000003FFE0007C00000003FFE00000000
+00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
+0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
+00003FFE0000000000003FFE0000000000FFFFFFFFE0000000FFFFFFFFE0000000FFFFFF
+FFE0000000FFFFFFFFE0000000FFFFFFFFE00000003A3D7DBC42>I<FFFFFFFF80FFFFFF
+FF80FFFFFFFF80FFFFFFFF80FFFFFFFF80003FFE0000003FFE0000003FFE0000003FFE00
+00003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000
+003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE000000
+3FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003F
+FE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE
+0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE00
+00003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000
+003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000FFFFFFFF80FFFFFFFF80FF
+FFFFFF80FFFFFFFF80FFFFFFFF80213E7DBD28>73 D<FFFFFFFFE00000FFFFFFFFE00000
+FFFFFFFFE00000FFFFFFFFE00000FFFFFFFFE00000003FFE00000000003FFE0000000000
+3FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003F
+FE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE
+00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00
+000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE0000
+0000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE000000
+00003FFE00000000003FFE00000000003FFE00000000003FFE0000003E003FFE0000003E
+003FFE0000003E003FFE0000003E003FFE0000007E003FFE0000007C003FFE0000007C00
+3FFE0000007C003FFE0000007C003FFE000000FC003FFE000000FC003FFE000001FC003F
+FE000001FC003FFE000003F8003FFE000003F8003FFE000007F8003FFE00000FF8003FFE
+00001FF8003FFE00007FF8003FFE0001FFF8003FFE000FFFF8FFFFFFFFFFFFF8FFFFFFFF
+FFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0373E7DBD3F>76
+D<0000003FFF00000000000003FFFFF000000000001FFFFFFE00000000007FFFFFFF8000
+000001FFF807FFE000000007FFC000FFF80000000FFF00003FFC0000003FFC00000FFF00
+00007FF8000007FF800000FFF0000003FFC00001FFE0000001FFE00001FFC0000000FFE0
+0003FFC0000000FFF00007FF800000007FF80007FF800000007FF8000FFF000000003FFC
+001FFF000000003FFE001FFF000000003FFE001FFE000000001FFE003FFE000000001FFF
+003FFE000000001FFF003FFE000000001FFF007FFC000000000FFF807FFC000000000FFF
+807FFC000000000FFF807FFC000000000FFF80FFFC000000000FFFC0FFFC000000000FFF
+C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFF
+C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFF
+C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC07FFC000000000FFF
+807FFE000000001FFF807FFE000000001FFF807FFE000000001FFF803FFE000000001FFF
+003FFE000000001FFF003FFF000000003FFF001FFF000000003FFE001FFF000000003FFE
+000FFF800000007FFC000FFF800000007FFC0007FFC0000000FFF80003FFE0000001FFF0
+0003FFE0000001FFF00001FFF0000003FFE00000FFF8000007FFC000007FFC00000FFF80
+00003FFF00003FFF0000001FFFC000FFFE00000007FFF807FFF800000001FFFFFFFFE000
+000000FFFFFFFFC0000000001FFFFFFE000000000003FFFFF00000000000003FFF000000
+0042407ABE4F>79 D<FFFFFFFFFFF00000FFFFFFFFFFFF0000FFFFFFFFFFFFC000FFFFFF
+FFFFFFF000FFFFFFFFFFFFFC00003FFC0000FFFE00003FFC00001FFF00003FFC00000FFF
+80003FFC000007FFC0003FFC000003FFE0003FFC000003FFE0003FFC000001FFF0003FFC
+000001FFF0003FFC000001FFF0003FFC000001FFF8003FFC000001FFF8003FFC000001FF
+F8003FFC000001FFF8003FFC000001FFF8003FFC000001FFF8003FFC000001FFF8003FFC
+000001FFF8003FFC000001FFF0003FFC000001FFF0003FFC000001FFF0003FFC000003FF
+E0003FFC000003FFC0003FFC000007FFC0003FFC00000FFF80003FFC00003FFF00003FFC
+0000FFFE00003FFFFFFFFFF800003FFFFFFFFFF000003FFFFFFFFF8000003FFFFFFFFC00
+00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
+0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
+00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
+0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
+00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000FFFFFF
+FF80000000FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF800000
+003D3E7DBD47>I<FFFFFFFFFF8000000000FFFFFFFFFFFC00000000FFFFFFFFFFFF8000
+0000FFFFFFFFFFFFF0000000FFFFFFFFFFFFF8000000003FFC0001FFFE000000003FFC00
+003FFF000000003FFC00000FFF800000003FFC000007FFC00000003FFC000003FFE00000
+003FFC000003FFE00000003FFC000003FFF00000003FFC000001FFF00000003FFC000001
+FFF80000003FFC000001FFF80000003FFC000001FFF80000003FFC000001FFF80000003F
+FC000001FFF80000003FFC000001FFF80000003FFC000001FFF80000003FFC000001FFF0
+0000003FFC000001FFF00000003FFC000003FFF00000003FFC000003FFE00000003FFC00
+0003FFC00000003FFC000007FF800000003FFC00000FFF000000003FFC00003FFE000000
+003FFC0001FFFC000000003FFFFFFFFFF0000000003FFFFFFFFFC0000000003FFFFFFFFE
+00000000003FFFFFFFFF80000000003FFC000FFFC0000000003FFC0001FFF0000000003F
+FC0000FFF8000000003FFC00007FFC000000003FFC00007FFC000000003FFC00003FFE00
+0000003FFC00003FFE000000003FFC00001FFF000000003FFC00001FFF000000003FFC00
+001FFF000000003FFC00001FFF000000003FFC00001FFF000000003FFC00001FFF000000
+003FFC00001FFF800000003FFC00001FFF800000003FFC00001FFF800000003FFC00001F
+FF800000003FFC00001FFF800000003FFC00001FFF800000003FFC00001FFF8007C0003F
+FC00001FFFC007C0003FFC00001FFFC007C0003FFC00000FFFC00FC0003FFC00000FFFE0
+0F80FFFFFFFF0007FFF01F80FFFFFFFF0003FFFC3F00FFFFFFFF0001FFFFFF00FFFFFFFF
+00007FFFFE00FFFFFFFF00001FFFF80000000000000001FFE0004A3F7DBD4E>82
+D<0003FFC001C0001FFFF803C0007FFFFE07C001FFFFFF8FC003FFFFFFDFC007FF00FFFF
+C00FF8000FFFC01FF00003FFC01FE00001FFC03FC000007FC07FC000007FC07F8000003F
+C07F8000001FC0FF8000001FC0FF8000000FC0FF8000000FC0FFC000000FC0FFC0000007
+C0FFC0000007C0FFE0000007C0FFF0000007C0FFFC00000000FFFF800000007FFFF80000
+007FFFFFC000003FFFFFFC00003FFFFFFF80001FFFFFFFE0001FFFFFFFF8000FFFFFFFFC
+0007FFFFFFFE0003FFFFFFFF0001FFFFFFFF80007FFFFFFFC0003FFFFFFFC00007FFFFFF
+E000007FFFFFE0000007FFFFF00000003FFFF000000003FFF000000000FFF8000000007F
+F8000000003FF8780000003FF8F80000001FF8F80000001FF8F80000000FF8F80000000F
+F8FC0000000FF8FC0000000FF8FC0000000FF0FE0000000FF0FE0000001FF0FF0000001F
+E0FF8000003FE0FFE000003FC0FFF800007F80FFFE0001FF80FFFFE007FF00FEFFFFFFFE
+00FC7FFFFFF800F81FFFFFF000F003FFFFC000E0003FFE00002D407ABE3A>I<3FFFFFFF
+FFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC
+3FFE003FFE003FFC7FF0003FFE000FFE7FC0003FFE0003FE7F80003FFE0001FE7F00003F
+FE0000FE7F00003FFE00007E7E00003FFE00007E7E00003FFE00007E7C00003FFE00003E
+7C00003FFE00003E7C00003FFE00003E7C00003FFE00003EFC00003FFE00003FF800003F
+FE00001FF800003FFE00001FF800003FFE00001FF800003FFE00001FF800003FFE00001F
+0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F
+FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000
+0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F
+FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000
+0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F
+FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000
+0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F
+FE0000000000003FFE000000000FFFFFFFFFF800000FFFFFFFFFF800000FFFFFFFFFF800
+000FFFFFFFFFF800000FFFFFFFFFF800403D7CBC49>I<00700000E000F80001F001F800
+03F003F00007E003E00007C007C0000F800F80001F001F00003E001F00003E003E00007C
+003C000078003C000078007C0000F800780000F000780000F000F80001F000F00001E000
+F00001E000F7E001EFC0FFF001FFE0FFF801FFF0FFFC01FFF8FFFE01FFFCFFFE01FFFCFF
+FE01FFFC7FFE00FFFC7FFE00FFFC7FFE00FFFC3FFC007FF81FF8003FF00FF0001FE007E0
+000FC0262073BE37>92 D<0007FFC00000003FFFF8000001FFFFFF000003FFFFFF800007
+FE03FFC0000FF800FFE0000FFC003FF0001FFE003FF8001FFE001FFC001FFE001FFC001F
+FE001FFC001FFE000FFE001FFE000FFE000FFC000FFE0007F8000FFE0001E0000FFE0000
+00000FFE000000003FFE000000FFFFFE00000FFFFFFE00007FFFFFFE0001FFFE0FFE0003
+FFE00FFE000FFF800FFE001FFE000FFE003FFC000FFE003FF8000FFE007FF0000FFE00FF
+F0000FFE00FFE0000FFE00FFE0000FFE00FFE0000FFE00FFE0000FFE00FFE0001FFE00FF
+F0001FFE007FF0003FFE007FF8007BFF803FFC00FBFFFE1FFF07F3FFFE0FFFFFE1FFFE03
+FFFF80FFFE00FFFF003FFE001FF80000002F2B7DA933>97 D<00FF0000000000FFFF0000
+000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF000000000007FF000000
+000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000
+0003FF000000000003FF000000000003FF000000000003FF000000000003FF0000000000
+03FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003
+FF00FFE0000003FF07FFFC000003FF1FFFFF800003FF7FFFFFC00003FFFF81FFF00003FF
+FC003FF80003FFF0001FFC0003FFE0000FFE0003FFC00007FE0003FF800007FF0003FF80
+0003FF8003FF800003FF8003FF800003FFC003FF800001FFC003FF800001FFC003FF8000
+01FFC003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001
+FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FF
+E003FF800001FFC003FF800001FFC003FF800003FFC003FF800003FF8003FF800003FF80
+03FF800003FF0003FF800007FF0003FFC00007FE0003FFE0000FFC0003FFF0001FF80003
+FFFC007FF00003FCFF01FFE00003F87FFFFFC00003F01FFFFF000003E007FFFC00000000
+01FFC0000033407DBE3A>I<00007FF0000007FFFF00001FFFFFC0007FFFFFE000FFF01F
+F001FF800FF803FF001FF807FE003FFC0FFE003FFC1FFC003FFC1FFC003FFC3FF8003FFC
+3FF8003FFC7FF8001FF87FF0000FF07FF00003C0FFF0000000FFF0000000FFF0000000FF
+F0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0
+0000007FF00000007FF80000007FF80000007FF80000003FF800003E3FFC00003E1FFC00
+007E0FFE00007C07FF0000FC07FF8001F803FFC003F000FFF81FE0007FFFFFC0001FFFFF
+800007FFFE0000007FF000272B7DA92E>I<0000000007F80000000007FFF80000000007
+FFF80000000007FFF80000000007FFF80000000007FFF800000000003FF800000000001F
+F800000000001FF800000000001FF800000000001FF800000000001FF800000000001FF8
+00000000001FF800000000001FF800000000001FF800000000001FF800000000001FF800
+000000001FF800000000001FF800000000001FF800000000001FF80000007FF01FF80000
+07FFFE1FF800001FFFFF9FF800007FFFFFDFF80000FFF01FFFF80001FFC003FFF80003FF
+0001FFF80007FE00007FF8000FFC00007FF8001FFC00003FF8001FF800003FF8003FF800
+003FF8003FF800003FF8007FF800003FF8007FF000003FF8007FF000003FF800FFF00000
+3FF800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003F
+F800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003FF8007FF000003FF8
+007FF000003FF8007FF000003FF8007FF800003FF8003FF800003FF8003FF800003FF800
+1FFC00007FF8000FFC00007FF8000FFE0000FFF80007FF0003FFFC0003FF8007FFFFE001
+FFF03FFFFFE0007FFFFFBFFFE0003FFFFF3FFFE00007FFFC3FFFE00000FFE03FE0003340
+7DBE3A>I<0000FFF000000007FFFE0000001FFFFF8000007FFFFFC00000FFE07FE00001
+FF801FF00003FF000FF80007FE0007FC000FFC0003FE001FFC0003FE001FF80001FE003F
+F80001FF003FF80001FF007FF00001FF007FF00000FF807FF00000FF80FFF00000FF80FF
+F00000FF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFF000000000FF
+F000000000FFF000000000FFF000000000FFF0000000007FF0000000007FF0000000007F
+F8000000003FF8000000003FF800000F801FFC00000F801FFC00001F800FFE00001F0007
+FF00003F0003FF80007E0001FFE001FC0000FFF80FF800003FFFFFF000001FFFFFC00000
+03FFFF000000007FF80000292B7DA930>I<000007FE0000007FFF800001FFFFC00007FF
+FFE0000FFE3FF0001FF03FF0003FE07FF8007FC07FF800FFC07FF800FF807FF800FF807F
+F801FF003FF001FF001FE001FF000FC001FF00000001FF00000001FF00000001FF000000
+01FF00000001FF00000001FF00000001FF00000001FF00000001FF000000FFFFFFE000FF
+FFFFE000FFFFFFE000FFFFFFE000FFFFFFE00001FF80000001FF80000001FF80000001FF
+80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80
+000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF8000
+0001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF800000
+01FF80000001FF80000001FF80000001FF80000001FF8000007FFFFF80007FFFFF80007F
+FFFF80007FFFFF80007FFFFF800025407DBF20>I<0003FF8007F0003FFFF83FF8007FFF
+FCFFFC01FFFFFFFFFE03FF83FFF9FE07FC007FC3FE0FF8003FE1FE1FF8003FF1FC1FF000
+1FF0F81FF0001FF0003FF0001FF8003FF0001FF8003FF0001FF8003FF0001FF8003FF000
+1FF8003FF0001FF8003FF0001FF8001FF0001FF0001FF0001FF0001FF8003FF0000FF800
+3FE00007FC007FC00003FF83FF800003FFFFFF000007FFFFFC000007BFFFF800000F03FF
+8000000F00000000000F00000000001F80000000001F80000000001FC0000000001FF000
+0000000FFFFFFF00000FFFFFFFF0000FFFFFFFFC0007FFFFFFFF0007FFFFFFFF8003FFFF
+FFFFC001FFFFFFFFE007FFFFFFFFE01FFFFFFFFFF03FE00003FFF07FC000003FF07F8000
+001FF8FF8000000FF8FF00000007F8FF00000007F8FF00000007F8FF00000007F8FF0000
+0007F87F8000000FF07FC000001FF03FC000001FE03FF000007FE01FFC0001FFC007FF80
+0FFF0003FFFFFFFE0000FFFFFFF800003FFFFFE0000001FFFC00002F3D7DA834>I<00FF
+0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF00
+0000000007FF000000000003FF000000000003FF000000000003FF000000000003FF0000
+00000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000
+000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000
+0003FF000000000003FF001FF8000003FF00FFFE000003FF03FFFF800003FF07FFFFC000
+03FF0FE0FFE00003FF1F007FE00003FF3C007FF00003FF78007FF00003FFF0003FF80003
+FFE0003FF80003FFE0003FF80003FFC0003FF80003FFC0003FF80003FFC0003FF80003FF
+80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80
+003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000
+3FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003F
+F80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8
+0003FF80003FF800FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0
+FFFFFE0FFFFFE0333F7CBE3A>I<01F80003FC0007FE000FFF001FFF801FFF801FFF801F
+FF801FFF801FFF800FFF0007FE0003FC0001F80000000000000000000000000000000000
+000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003
+FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003
+FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003
+FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8FFFFF815407CBF1D>I<00FF00
+00000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000
+00000007FF000000000003FF000000000003FF000000000003FF000000000003FF000000
+000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000
+0003FF000000000003FF000000000003FF000000000003FF000000000003FF0000000000
+03FF000000000003FF000000000003FF000FFFFE0003FF000FFFFE0003FF000FFFFE0003
+FF000FFFFE0003FF000FFFFE0003FF0001FE000003FF0003FC000003FF0007F0000003FF
+001FE0000003FF003FC0000003FF007F80000003FF00FF00000003FF03FC00000003FF07
+F800000003FF0FF000000003FF1FF000000003FF7FF800000003FFFFFC00000003FFFFFC
+00000003FFFFFE00000003FFFFFF00000003FFE7FF80000003FFC3FFC0000003FF81FFC0
+000003FF00FFE0000003FF00FFF0000003FF007FF8000003FF003FFC000003FF001FFC00
+0003FF000FFE000003FF000FFF000003FF0007FF800003FF0003FFC00003FF0001FFC000
+03FF0000FFE000FFFFFC07FFFFC0FFFFFC07FFFFC0FFFFFC07FFFFC0FFFFFC07FFFFC0FF
+FFFC07FFFFC0323F7DBE37>107 D<00FF00FFFF00FFFF00FFFF00FFFF00FFFF0007FF00
+03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00
+03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00
+03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00
+03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00
+03FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFCFFFFFC163F7CBE1D>I<00FF001FF8
+0000FFC00000FFFF00FFFF0007FFF80000FFFF03FFFFC01FFFFE0000FFFF07FFFFE03FFF
+FF0000FFFF0FE0FFF07F07FF8000FFFF1F003FF0F801FF800007FF3E003FF9F001FFC000
+03FF78003FFBC001FFC00003FFF0001FFF8000FFE00003FFF0001FFF8000FFE00003FFE0
+001FFF0000FFE00003FFC0001FFE0000FFE00003FFC0001FFE0000FFE00003FFC0001FFE
+0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FF
+E00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003
+FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF8000
+1FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC00
+00FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE0
+0003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF
+80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE000FFFFFE07FF
+FFF03FFFFF80FFFFFE07FFFFF03FFFFF80FFFFFE07FFFFF03FFFFF80FFFFFE07FFFFF03F
+FFFF80FFFFFE07FFFFF03FFFFF8051297CA858>I<00FF001FF80000FFFF00FFFE0000FF
+FF03FFFF8000FFFF07FFFFC000FFFF0FE0FFE000FFFF1F007FE00007FF3C007FF00003FF
+78007FF00003FFF0003FF80003FFE0003FF80003FFE0003FF80003FFC0003FF80003FFC0
+003FF80003FFC0003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000
+3FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003F
+F80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8
+0003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF800
+03FF80003FF80003FF80003FF80003FF80003FF800FFFFFE0FFFFFE0FFFFFE0FFFFFE0FF
+FFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE033297CA83A>I<00007FF000000003FF
+FE0000001FFFFFC000007FFFFFF00000FFE03FF80001FF800FFC0003FE0003FE0007FC00
+01FF000FFC0001FF801FF80000FFC01FF80000FFC03FF80000FFE03FF000007FE07FF000
+007FF07FF000007FF07FF000007FF07FF000007FF0FFF000007FF8FFF000007FF8FFF000
+007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000
+007FF8FFF000007FF87FF000007FF07FF000007FF07FF000007FF07FF000007FF03FF800
+00FFE03FF80000FFE01FF80000FFC00FFC0001FF800FFC0001FF8007FE0003FF0003FF80
+0FFE0001FFE03FFC00007FFFFFF000001FFFFFC0000007FFFF000000007FF000002D2B7D
+A934>I<00FF00FFE00000FFFF07FFFC0000FFFF1FFFFF8000FFFF7FFFFFC000FFFFFF81
+FFF000FFFFFC007FF80003FFF0003FFC0003FFE0001FFE0003FFC0000FFE0003FF800007
+FF0003FF800007FF8003FF800007FF8003FF800003FFC003FF800003FFC003FF800003FF
+C003FF800001FFC003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE0
+03FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003
+FF800001FFE003FF800003FFC003FF800003FFC003FF800003FFC003FF800003FF8003FF
+800007FF8003FF800007FF0003FF80000FFF0003FFC0000FFE0003FFE0001FFC0003FFF0
+003FF80003FFFC00FFF00003FFFF03FFE00003FFFFFFFFC00003FF9FFFFF000003FF87FF
+FC000003FF81FFC0000003FF800000000003FF800000000003FF800000000003FF800000
+000003FF800000000003FF800000000003FF800000000003FF800000000003FF80000000
+0003FF800000000003FF800000000003FF8000000000FFFFFE00000000FFFFFE00000000
+FFFFFE00000000FFFFFE00000000FFFFFE00000000333B7DA83A>I<01FE01FE00FFFE07
+FF80FFFE0FFFE0FFFE1FFFF0FFFE3F1FF0FFFE7C3FF807FEF83FF803FEF03FF803FFE03F
+F803FFE03FF803FFC01FF003FFC00FE003FF8007C003FF80000003FF80000003FF800000
+03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003
+FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
+00000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFF0000FFFFFF
+0000FFFFFF0000FFFFFF0000FFFFFF000025297DA82B>114 D<003FFC1E0001FFFFBE00
+07FFFFFE000FFFFFFE001FF00FFE003F8001FE007F0000FE007E00007E007E00007E00FE
+00003E00FE00003E00FF00003E00FF80003E00FFC0000000FFF8000000FFFFE000007FFF
+FF00007FFFFFC0003FFFFFF0001FFFFFF8000FFFFFFC0007FFFFFE0003FFFFFF0000FFFF
+FF80001FFFFF800000FFFF80000007FFC0000000FFC07800007FC0F800003FC0F800001F
+C0FC00001FC0FC00001FC0FE00001FC0FE00001F80FF00003F80FF80003F00FFE000FF00
+FFF803FE00FFFFFFFC00FFFFFFF000F87FFFC000E00FFE0000222B7DA929>I<0007C000
+0007C0000007C0000007C0000007C000000FC000000FC000000FC000000FC000001FC000
+001FC000001FC000003FC000007FC000007FC00000FFC00001FFC00007FFC0001FFFFFFE
+FFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE01FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
+01FFC00001FFC00001FFC00001FFC00001FFC00001FFC01F01FFC01F01FFC01F01FFC01F
+01FFC01F01FFC01F01FFC01F01FFC01F01FFC01F00FFE03E00FFE03E007FE07E007FF8FC
+003FFFF8001FFFF00007FFE00000FF80203B7EB929>I<00FF80000FF800FFFF800FFFF8
+00FFFF800FFFF800FFFF800FFFF800FFFF800FFFF800FFFF800FFFF80007FF80007FF800
+03FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003
+FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF
+80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80
+003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000
+3FF80003FF80003FF80003FF80003FF80003FF80007FF80003FF80007FF80003FF80007F
+F80003FF8000FFF80001FF8001FFF80001FF8003FFFC0000FFC007DFFFE000FFF01F9FFF
+E0007FFFFF1FFFE0003FFFFE1FFFE0000FFFF81FFFE00001FFE01FE000332A7CA83A>I<
+FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC001
+FFC00003E00001FFE00007E00001FFE00007E00000FFE00007C00000FFF0000FC000007F
+F0000F8000007FF8001F8000003FF8001F0000003FFC003F0000001FFC003E0000001FFE
+007E0000000FFE007C0000000FFF00FC0000000FFF00FC00000007FF00F800000007FF81
+F800000003FF81F000000003FFC3F000000001FFC3E000000001FFE7E000000000FFE7C0
+00000000FFFFC0000000007FFF80000000007FFF80000000007FFF80000000003FFF0000
+0000003FFF00000000001FFE00000000001FFE00000000000FFC00000000000FFC000000
+000007F8000000000007F8000000000003F0000000000003F000000032287EA737>I<FF
+FFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFF
+FFFC3FFFFC03FFFE03FF8000FFC0000F8003FFC000FFC0001F8001FFC0007FC0001F0001
+FFE000FFE0003F0000FFE000FFE0003E0000FFE000FFF0003E0000FFF001FFF0007E0000
+7FF001FFF0007C00007FF803FFF800FC00003FF803EFF800F800003FF803EFFC00F80000
+3FFC07EFFC01F800001FFC07C7FC01F000001FFE0FC7FE03F000000FFE0F83FE03E00000
+0FFE0F83FF03E000000FFF1F83FF07E0000007FF1F01FF07C0000007FFBF01FF8FC00000
+03FFBE00FF8F80000003FFBE00FFCF80000003FFFE00FFDF80000001FFFC007FDF000000
+01FFFC007FFF00000000FFF8003FFE00000000FFF8003FFE00000000FFF8003FFE000000
+007FF0001FFC000000007FF0001FFC000000003FE0000FF8000000003FE0000FF8000000
+003FE0000FF8000000001FC00007F0000000001FC00007F0000000000F800003E0000047
+287EA74C>I<FFFFFC03FFFF80FFFFFC03FFFF80FFFFFC03FFFF80FFFFFC03FFFF80FFFF
+FC03FFFF8000FFE0007F000000FFF000FE0000007FF800FC0000003FFC01F80000001FFE
+03F00000000FFE07F000000007FF0FE000000007FF9FC000000003FFFF8000000001FFFF
+0000000000FFFE00000000007FFC00000000007FFC00000000003FFC00000000001FFE00
+000000000FFE00000000000FFF00000000001FFF80000000003FFFC0000000007FFFE000
+000000FEFFF000000001FC7FF000000003F83FF800000003F03FFC00000007E01FFE0000
+000FC00FFF0000001FC007FF0000003F8003FF8000007F0003FFC00000FE0001FFE000FF
+FFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC03228
+7EA737>I<FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC
+003FFFC001FFC00003E00001FFE00007E00001FFE00007E00000FFE00007C00000FFF000
+0FC000007FF0000F8000007FF8001F8000003FF8001F0000003FFC003F0000001FFC003E
+0000001FFE007E0000000FFE007C0000000FFF00FC0000000FFF00FC00000007FF00F800
+000007FF81F800000003FF81F000000003FFC3F000000001FFC3E000000001FFE7E00000
+0000FFE7C000000000FFFFC0000000007FFF80000000007FFF80000000007FFF80000000
+003FFF00000000003FFF00000000001FFE00000000001FFE00000000000FFC0000000000
+0FFC000000000007F8000000000007F8000000000003F0000000000003F0000000000003
+F0000000000003E0000000000007E0000000000007C00000000E000FC00000003F800F80
+0000007FC01F80000000FFE01F00000000FFE03F00000000FFE03E00000000FFE07E0000
+0000FFE0FC00000000FFC1F8000000007FC3F0000000007E0FE0000000003FFFC0000000
+001FFF80000000000FFE000000000003F80000000000323B7EA737>I
+E /Fn 88 127 df<1C007F00FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80
+FF80FF80FF80FF80FF80FF80FF807F007F007F007F007F007F007F007F007F007F007F00
+7F007F007F007F007F007F007F003E00000000000000000000000000000000001C007F00
+7F00FF80FF80FF807F007F001C0009396DB830>33 D<100004007C001F00FE003F80FE00
+3F80FF007F80FF007F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE00
+3F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE00
+3F80FE003F80FE003F807E003F007C001F003C001E0010000400191C75B830>I<0007C0
+07C0000007C007C000000FE00FE000000FE00FE000000FE00FE000000FE00FE000000FE0
+0FE000000FE00FE000000FE00FE000000FE00FE000001FE01FE000001FE01FE000001FC0
+1FC000001FC01FC000001FC01FC0007FFFFFFFFF007FFFFFFFFF00FFFFFFFFFF80FFFFFF
+FFFF80FFFFFFFFFF807FFFFFFFFF003FFFFFFFFE00007F807F8000007F807F8000007F00
+7F0000007F007F0000007F007F0000007F007F0000007F007F0000007F007F0000007F00
+7F0000007F007F0000007F007F000000FF00FF000000FF00FF00003FFFFFFFFE007FFFFF
+FFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF0001FC01
+FC000001FC01FC000001FC01FC000003FC03FC000003FC03FC000003F803F8000003F803
+F8000003F803F8000003F803F8000003F803F8000003F803F8000003F803F8000001F001
+F0000001F001F0000029387DB730>I<000038000000007C00000000FC00000000FC0000
+0000FC00000000FC00000003FF0000001FFFE00000FFFFFC0001FFFFFE0007FFFFFF000F
+FFFFFF801FFEFDFFC01FF0FC3FE03FC0FC1FE07F80FC0FF07F00FC07F07E00FC07F8FE00
+FC03F8FC00FC03F8FC00FC07F8FC00FC07F8FC00FC07F8FE00FC03F0FE00FC03F07F00FC
+00007F80FC00007FC0FC00003FF0FC00001FFEFC00001FFFFC00000FFFFF000007FFFFE0
+0001FFFFF800007FFFFC00001FFFFE000003FFFF000000FFFF800000FDFFC00000FC7FE0
+0000FC1FE00000FC0FF00000FC07F01800FC03F87E00FC03F87E00FC01F8FF00FC01F8FF
+00FC01F8FF00FC01F8FE00FC01F8FE00FC01F8FF00FC03F07F00FC03F07F80FC07F07F80
+FC0FE03FC0FC1FE03FF0FC7FC01FFEFFFF800FFFFFFF0007FFFFFE0003FFFFFC0000FFFF
+F000003FFFC0000007FE00000000FC00000000FC00000000FC00000000FC00000000FC00
+0000007C0000000038000025477BBE30>I<03C00001E0000FF00003E0001FF80007F000
+3FFC0007F0003FFC000FF0007FFE000FF0007E7E001FE000FE7F001FE000FE7F001FC000
+FC3F003FC000FC3F003FC000FC3F003F8000FC3F007F8000FC3F007F8000FC3F00FF0000
+FE7F00FF0000FE7F00FE00007E7E01FE00007FFE01FE00003FFC01FC00003FFC03FC0000
+1FF803FC00000FF007F8000003C007F80000000007F0000000000FF0000000000FF00000
+00000FE0000000001FE0000000001FE0000000003FC0000000003FC0000000003F800000
+00007F80000000007F80000000007F0000000000FF0000000000FF0000000001FE000000
+0001FE0000000001FC0000000003FC0000000003FC0000000003F80000000007F8000000
+0007F8000000000FF001E000000FF007F800000FE00FFC00001FE01FFE00001FE01FFE00
+001FC03FFF00003FC03FFF00003FC03F3F00007F807F3F80007F807E1F80007F007E1F80
+00FF007E1F8000FF007E1F8000FE007E1F8001FE007E1F8001FE007E1F8003FC007F3F80
+03FC003F3F0003F8003FFF0007F8003FFF0007F8001FFE0007F0001FFE0007F0000FFC00
+03E00007F80001E00001E00029477DBE30>I<0007E0000000001FF8000000003FFC0000
+00007FFC00000000FFFE00000000FFFF00000001FC7F00000001F83F00000001F83F8000
+0003F81F80000003F01F80000003F01F80000003F01F80000003F01F80000003F01F8000
+0003F01F80000003F03F80000003F03F00000003F07F0FFF0003F87E1FFF8001F8FE1FFF
+8001F9FC1FFF8001FBFC1FFF8001FBF80FFF0001FFF00FC00000FFE00FC00000FFE01FC0
+0000FFC01F8000007F801F800000FF003F800001FF003F000003FF007F000007FF807E00
+000FFF807E00000FFF80FE00001FDFC0FC00003F8FE0FC00003F8FE1FC00007F07F1F800
+007F03F3F80000FE03FBF00000FE01FFF00000FE01FFE00000FE00FFE00000FE00FFC006
+00FE007FC00F00FE003F801F80FE003FC01F80FF007FC01F807F00FFE01F807F01FFF83F
+807F87FFFC3F003FFFFBFFFF001FFFF1FFFE001FFFE0FFFE000FFFC03FFC0003FF001FF8
+0001FC0007E000293A7DB830>I<07C00FF01FF81FF81FFC1FFC1FFE0FFE07FE007E007E
+007E007E007E00FE00FC00FC01FC01F803F807F00FF01FE07FE0FFC0FF80FF007C003800
+0F1D70B730>I<00001E00007F0000FF0001FF0003FE0007FC000FF0001FE0003FC0007F
+8000FF0001FE0001FC0003FC0003F80007F0000FF0000FE0000FE0001FC0001FC0003FC0
+003F80003F80007F80007F00007F00007F00007F0000FE0000FE0000FE0000FE0000FE00
+00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00007F00007F00007F00007F00
+007F80003F80003F80003FC0001FC0001FC0000FE0000FE0000FF00007F00003F80003FC
+0001FC0001FE0000FF00007F80003FC0001FE0000FF00007FC0003FE0001FF0000FF0000
+7F00001E184771BE30>I<780000FE0000FF0000FF80007FC0003FE0000FF00007F80003
+FC0001FE0000FF00007F80003F80003FC0001FC0000FE0000FF00007F00007F00003F800
+03F80003FC0001FC0001FC0001FE0000FE0000FE0000FE0000FE00007F00007F00007F00
+007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000FE0000FE00
+00FE0000FE0001FE0001FC0001FC0003FC0003F80003F80007F00007F0000FF0000FE000
+1FC0003FC0003F80007F8000FF0001FE0003FC0007F8000FF0003FE0007FC000FF8000FF
+0000FE0000780000184778BE30>I<0000E000000001F000000003F800000003F8000000
+03F800000003F800000003F800000003F800003803F803807E03F80FC0FF83F83FE0FFC3
+F87FE0FFF3F9FFE07FFBFBFFC03FFFFFFF800FFFFFFE0003FFFFF80001FFFFF000007FFF
+C000001FFF0000007FFFC00001FFFFF00003FFFFF8000FFFFFFE003FFFFFFF807FFBFBFF
+C0FFF3F9FFE0FFC3F87FE0FF83F83FE07E03F80FC03803F803800003F800000003F80000
+0003F800000003F800000003F800000003F800000001F000000000E0000023277AAE30>
+I<00003E00000000003E00000000007F00000000007F00000000007F00000000007F0000
+0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000
+0000007F00000000007F00000000007F00000000007F00000000007F0000007FFFFFFFFF
+007FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF
+0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000
+0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000
+0000007F00000000007F00000000007F00000000003E00000000003E00000029297DAF30
+>I<03E00FF01FF81FFC3FFE3FFE3FFF3FFF1FFF1FFF0FFF03FF007F007F007E00FE01FC
+03FC07F83FF07FF0FFE07F807F003C001019708B30>I<7FFFFFFFF07FFFFFFFF0FFFFFF
+FFF8FFFFFFFFF8FFFFFFFFF87FFFFFFFF07FFFFFFFF025077B9E30>I<0F003FC07FE07F
+E0FFF0FFF0FFF0FFF07FE07FE03FC00F000C0C6E8B30>I<00000000F000000001F00000
+0003F800000003F800000007F800000007F80000000FF00000000FF00000001FE0000000
+1FE00000003FC00000003FC00000007F800000007F80000000FF00000000FF00000001FE
+00000001FE00000001FC00000003FC00000003FC00000007F800000007F80000000FF000
+00000FF00000001FE00000001FE00000003FC00000003FC00000007F800000007F800000
+00FF00000000FF00000001FE00000001FE00000001FC00000003FC00000003FC00000007
+F800000007F80000000FF00000000FF00000001FE00000001FE00000003FC00000003FC0
+0000007F800000007F80000000FF00000000FF00000001FE00000001FE00000001FC0000
+0003FC00000003FC00000007F800000007F80000000FF00000000FF00000001FE0000000
+1FE00000003FC00000003FC00000007F800000007F80000000FF00000000FF00000000FE
+00000000FE000000007C000000007C0000000025477BBE30>I<0000FE00000007FFC000
+000FFFE000003FFFF800007FFFFC0000FFFFFE0001FF83FF0003FE00FF8003FC007F8007
+F8003FC00FF0001FE00FE0000FE01FE0000FF01FC00007F01FC00007F03F800003F83F80
+0003F83F000001F87F000001FC7F000001FC7F000001FC7F000001FCFE000000FEFE0000
+00FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000
+FEFE000000FEFE000000FEFE000000FEFE000000FEFF000001FE7F000001FC7F000001FC
+7F000001FC7F800003FC3F800003F83F800003F83FC00007F81FC00007F01FC00007F01F
+E0000FF00FF0001FE00FF0001FE007F8003FC003FC007F8003FE00FF8001FF83FF0000FF
+FFFE00007FFFFC00003FFFF800000FFFE0000007FFC0000000FE0000273A7CB830>I<00
+03C0000007E0000007E000000FE000000FE000001FE000001FE000003FE000007FE00000
+FFE00003FFE0003FFFE000FFFFE000FFFFE000FFEFE000FF8FE0007E0FE000000FE00000
+0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000
+0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000
+0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000
+0FE000000FE000000FE000000FE000000FE000000FE0003FFFFFF87FFFFFFCFFFFFFFEFF
+FFFFFE7FFFFFFC3FFFFFF81F3977B830>I<0007FC0000003FFFC00000FFFFF00003FFFF
+F80007FFFFFE000FFFFFFF001FF80FFF803FE001FFC03FC0007FC07F80003FE07F00001F
+E07F00000FF0FF000007F0FE000007F0FF000007F8FF000003F8FF000003F8FF000003F8
+7E000003F818000003F800000003F800000003F800000007F800000007F00000000FF000
+00000FE00000001FE00000001FC00000003FC00000007F80000000FF80000001FF000000
+01FE00000007FC0000000FF80000001FF00000003FE00000007FC0000000FF80000001FF
+00000003FE00000007FC0000000FF00000003FE00000007FC0000000FF80000001FF0000
+0003FE0001F007FC0003F80FF80003F81FE00003F83FFFFFFFF8FFFFFFFFF8FFFFFFFFF8
+FFFFFFFFF87FFFFFFFF83FFFFFFFF025397BB830>I<0003FF0000003FFFE00000FFFFF8
+0001FFFFFE0003FFFFFF0007FFFFFF800FFE01FFC00FF0007FC01FE0001FE01FE0000FE0
+1FE0000FF01FE00007F01FE00007F00FC00007F007800007F000000007F00000000FF000
+00000FE00000000FE00000001FE00000003FC00000007FC0000000FF80000007FF000007
+FFFE00000FFFFC00000FFFF800000FFFFC00000FFFFF000007FFFF80000001FFC0000000
+3FE00000001FF000000007F800000003F800000003FC00000001FC00000001FE00000000
+FE00000000FE18000000FE7E000000FEFF000000FEFF000000FEFF000001FEFF000001FC
+FE000003FCFF000003F87F800007F87FC0001FF03FF0003FF01FFE01FFE00FFFFFFFC007
+FFFFFF8003FFFFFE0000FFFFFC00003FFFF0000003FF8000273A7CB830>I<000003FC00
+00000007FE000000000FFE000000001FFE000000001FFE000000003FFE000000007FFE00
+0000007F7E00000000FE7E00000000FE7E00000001FC7E00000003F87E00000003F87E00
+000007F07E00000007F07E0000000FE07E0000001FC07E0000001FC07E0000003F807E00
+00003F807E0000007F007E000000FE007E000000FE007E000001FC007E000003F8007E00
+0003F8007E000007F0007E000007F0007E00000FE0007E00001FC0007E00001FC0007E00
+003F80007E00003F80007E00007F00007E0000FE00007E0000FFFFFFFFFF00FFFFFFFFFF
+80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF000000007E00000000007E00
+000000007E00000000007E00000000007E00000000007E00000000007E00000000007E00
+000000007E00000000007E000000007FFFFE000000FFFFFF000000FFFFFF000000FFFFFF
+000000FFFFFF0000007FFFFE0029397DB830>I<0FFFFFFF801FFFFFFFC03FFFFFFFC03F
+FFFFFFC03FFFFFFFC03FFFFFFF803F800000003F800000003F800000003F800000003F80
+0000003F800000003F800000003F800000003F800000003F800000003F800000003F8000
+00003F800000003F800000003F83FF00003F9FFFC0003FFFFFF0003FFFFFFC003FFFFFFE
+003FFFFFFF003FFE03FF803FF0007FC03FE0003FC03F80001FE01F00000FE00E00000FF0
+00000007F000000007F000000007F800000003F800000003F800000003F818000003F87E
+000003F87E000003F8FF000003F8FF000007F8FF000007F0FE00000FF0FF00000FE07F00
+001FE07F80003FC07FC0007FC03FE001FF801FFC0FFF000FFFFFFE0007FFFFFC0003FFFF
+F80001FFFFE000007FFF8000000FFC000025397BB730>I<7C00000000FFFFFFFFFCFFFF
+FFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFCFE00000FF8FE00000FF0FE0000
+1FE07C00003FC00000007F80000000FF00000000FF00000001FE00000003FC00000003F8
+00000007F800000007F00000000FF00000000FE00000001FC00000001FC00000003F8000
+00003F800000007F000000007F00000000FF00000000FE00000001FE00000001FC000000
+01FC00000003FC00000003F800000003F800000007F800000007F000000007F000000007
+F000000007F00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0
+0000001FE00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000
+00001FC00000001FC00000001FC00000000F8000000007000000273A7CB830>55
+D<0F003FC07FE07FE0FFF0FFF0FFF0FFF07FE07FE03FC00F000000000000000000000000
+000000000000000000000000000000000000000F003FC07FE07FE0FFF0FFF0FFF0FFF07F
+E07FE03FC00F000C276EA630>58 D<03C00FF01FF81FF83FFC3FFC3FFC3FFC1FF81FF80F
+F003C000000000000000000000000000000000000000000000000000000000000003C00F
+F01FF01FF83FF83FFC3FFC3FFC1FFC1FFC0FFC03FC00FC01FC01F803F803F007F01FE03F
+E07FC0FF807F007E0038000E3470A630>I<00000000F000000003F000000007F8000000
+1FF80000007FF8000000FFF0000003FFF0000007FFC000001FFF8000003FFE000000FFF8
+000001FFF0000007FFC000000FFF8000003FFE0000007FFC000001FFF0000003FFE00000
+0FFF8000001FFF0000007FFC0000007FF8000000FFE0000000FFC0000000FFE00000007F
+F80000007FFC0000001FFF0000000FFF80000003FFE0000001FFF00000007FFC0000003F
+FE0000000FFF80000007FFC0000001FFF0000000FFF80000003FFE0000001FFF80000007
+FFC0000003FFF0000000FFF00000007FF80000001FF800000007F800000003F000000000
+F0252F7BB230>I<7FFFFFFFFF007FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFF
+FF807FFFFFFFFF003FFFFFFFFE0000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000003FFFFFFFFE007FFFFFFFFF00FFFFFFFF
+FF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF0029157DA530>I<780000
+00007E00000000FF00000000FFC0000000FFE00000007FF80000007FFE0000001FFF0000
+000FFFC0000003FFE0000001FFF80000007FFC0000001FFF0000000FFF80000003FFE000
+0001FFF00000007FFC0000003FFE0000000FFF80000007FFC0000001FFF0000000FFF000
+00003FF80000001FF80000003FF8000000FFF0000001FFF0000007FFC000000FFF800000
+3FFE0000007FFC000001FFF0000003FFE000000FFF8000001FFF0000007FFC000001FFF8
+000003FFE000000FFFC000001FFF0000007FFE0000007FF8000000FFE0000000FFC00000
+00FF000000007E000000007800000000252F7BB230>I<001FFE000000FFFFE00003FFFF
+F8000FFFFFFE001FFFFFFF003FFFFFFF807FF803FFC07FC0007FC0FF00001FC0FF00001F
+E0FF00000FE0FF00000FE0FF00000FE07E00000FE07E00001FE01800007FC0000000FFC0
+000003FF80000007FF0000000FFE0000001FF80000003FF00000007FC0000000FF800000
+00FF00000001FE00000001FE00000003FC00000003F800000003F800000007F800000007
+F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0
+00000003E000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000001C000000007F000000007F00000000FF80000000FF80000
+000FF800000007F000000007F000000001C0000023397AB830>I<00001FE0000000FFF8
+000003FFFE00000FFFFF00001FFFFF80003FFFFFC0007FF03FE000FF800FE001FF0007F0
+03FC0003F007F801FBF807F007FFF80FE01FFFF80FE03FFFFC1FC03FFFFC1F807FFFFC3F
+80FF0FFC3F00FE07FC3F01FC03FE7F01F801FE7E03F801FE7E03F000FE7E03F000FEFE07
+F000FEFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0
+007EFC07E0007EFC07E0007EFC07E0007EFE07F000FE7E03F000FC7E03F000FC7E03F801
+FC7F01F801F83F01FC03F83F00FE07F03F80FF0FF01F807FFFE01FC03FFFC00FE03FFFC0
+0FE01FFF8007F007FE0007F801F80003FC00007C01FF0000FE00FF8003FE007FF01FFE00
+3FFFFFFC001FFFFFF8000FFFFFE00003FFFFC00000FFFE0000001FF000273A7CB830>I<
+00007F0000000000FF8000000000FF8000000001FFC000000001FFC000000001FFC00000
+0001FFC000000003FFE000000003F7E000000003F7E000000003F7E000000003F7E00000
+0007F7F000000007E3F000000007E3F000000007E3F00000000FE3F80000000FE3F80000
+000FE3F80000000FC1F80000000FC1F80000001FC1FC0000001FC1FC0000001FC1FC0000
+001FC1FC0000003F80FE0000003F80FE0000003F80FE0000003F80FE0000003F80FE0000
+007F007F0000007F007F0000007F007F0000007F007F000000FF007F800000FE003F8000
+00FFFFFF800000FFFFFF800000FFFFFF800001FFFFFFC00001FFFFFFC00001FFFFFFC000
+01FC001FC00003FC001FE00003F8000FE00003F8000FE00003F8000FE00003F8000FE000
+07F8000FF00007F00007F00007F00007F0007FFF007FFF00FFFF80FFFF80FFFF80FFFF80
+FFFF80FFFF80FFFF80FFFF807FFF007FFF0029397DB830>I<7FFFFFF00000FFFFFFFE00
+00FFFFFFFF8000FFFFFFFFC000FFFFFFFFE0007FFFFFFFF00003F8001FF80003F80007F8
+0003F80003FC0003F80001FC0003F80001FC0003F80000FE0003F80000FE0003F80000FE
+0003F80000FE0003F80000FE0003F80000FE0003F80001FE0003F80001FC0003F80001FC
+0003F80003F80003F80007F80003F8001FF00003F8007FE00003FFFFFFC00003FFFFFF80
+0003FFFFFE000003FFFFFF800003FFFFFFE00003FFFFFFF00003F8000FF80003F80003FC
+0003F80001FE0003F80000FE0003F800007F0003F800007F0003F800007F0003F800003F
+8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800007F
+8003F800007F0003F800007F0003F80000FF0003F80001FE0003F80003FE0003F8001FFC
+007FFFFFFFFC00FFFFFFFFF800FFFFFFFFF000FFFFFFFFC000FFFFFFFF80007FFFFFFC00
+0029387EB730>I<00007F803C0003FFF03E0007FFFC7E001FFFFE7E003FFFFFFE007FFF
+FFFE00FFE07FFE01FF801FFE03FE000FFE07FC0007FE07F80007FE0FF00003FE0FF00003
+FE1FE00001FE1FC00001FE3FC00001FE3F800000FE3F800000FE7F800000FE7F000000FE
+7F0000007C7F00000000FF00000000FE00000000FE00000000FE00000000FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
+000000FF000000007F000000007F000000007F0000007C7F800000FE3F800000FE3F8000
+00FE3FC00000FE1FC00000FE1FE00001FE0FF00001FC0FF00001FC07F80003F807FC0007
+F803FE000FF001FF801FF000FFE07FE0007FFFFFC0003FFFFF80001FFFFF000007FFFC00
+0003FFF00000007FC000273A7CB830>I<3FFFFFE000007FFFFFFC0000FFFFFFFE0000FF
+FFFFFF80007FFFFFFFC0003FFFFFFFE00003F8007FF00003F8001FF80003F8000FF80003
+F80007FC0003F80003FE0003F80001FE0003F80000FF0003F80000FF0003F800007F8003
+F800007F8003F800003F8003F800003FC003F800001FC003F800001FC003F800001FC003
+F800001FC003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003
+F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003
+F800000FE003F800001FE003F800001FC003F800001FC003F800001FC003F800003FC003
+F800003F8003F800003F8003F800007F8003F800007F0003F80000FF0003F80001FE0003
+F80003FE0003F80007FC0003F8000FFC0003F8001FF80003F8007FF0003FFFFFFFE0007F
+FFFFFFC000FFFFFFFF8000FFFFFFFF00007FFFFFFC00003FFFFFE000002B387FB730>I<
+7FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF80
+03F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F80
+03F800003F8003F800003F8003F800001F0003F80000000003F80000000003F800000000
+03F80000000003F8007C000003F800FE000003F800FE000003F800FE000003F800FE0000
+03FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE0000
+03F800FE000003F800FE000003F800FE000003F800FE000003F8007C000003F800000000
+03F80000000003F80000000003F80000000003F80000000003F8000007C003F800000FE0
+03F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE0
+03F800000FE003F800000FE07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0
+FFFFFFFFFFE07FFFFFFFFFC02B387EB730>I<3FFFFFFFFF807FFFFFFFFFC0FFFFFFFFFF
+C0FFFFFFFFFFC07FFFFFFFFFC03FFFFFFFFFC001FC00001FC001FC00001FC001FC00001F
+C001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00000F
+8001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC003E00
+0001FC007F000001FC007F000001FC007F000001FC007F000001FFFFFF000001FFFFFF00
+0001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FC007F000001FC007F00
+0001FC007F000001FC007F000001FC003E000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC000000003FFFF80000
+007FFFFC000000FFFFFC000000FFFFFC0000007FFFFC0000003FFFF80000002A387EB730
+>I<0000FF00F0000003FFC0F800000FFFF1F800003FFFFDF800007FFFFFF80000FFFFFF
+F80001FFC1FFF80001FF007FF80003FE003FF80007FC001FF80007F8000FF8000FF0000F
+F8000FE00007F8001FE00007F8001FC00007F8003FC00007F8003F800003F8003F800003
+F8007F800003F8007F000003F8007F000001F0007F0000000000FF0000000000FE000000
+0000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE000000
+0000FE0000000000FE0000FFFF00FE0001FFFF80FE0003FFFF80FE0003FFFF80FF0001FF
+FF807F0000FFFF007F000003F8007F000003F8007F800003F8003F800007F8003F800007
+F8003FC00007F8001FC00007F8001FE0000FF8000FE0000FF8000FF0000FF80007F8001F
+F80007F8001FF80003FE003FF80001FF007FF80001FFC1FFF80000FFFFFFF800007FFFFF
+F800003FFFFBF800000FFFF3F8000003FFC1F0000000FF000000293A7DB830>I<3FFF80
+0FFFE07FFFC01FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFC01FFFF03FFF800FFFE003F800
+00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800
+00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800
+00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003FFFF
+FFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003F800
+00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800
+00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800
+00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800
+00FE0003F80000FE003FFF800FFFE07FFFC01FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFC0
+1FFFF03FFF800FFFE02D387FB730>I<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80
+FFFFFFFF807FFFFFFF000007F000000007F000000007F000000007F000000007F0000000
+07F000000007F000000007F000000007F000000007F000000007F000000007F000000007
+F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0
+00000007F000000007F000000007F000000007F000000007F000000007F000000007F000
+000007F000000007F000000007F000000007F000000007F000000007F000000007F00000
+0007F000000007F000000007F000000007F000000007F000000007F000000007F0000000
+07F000000007F000000007F000007FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFF
+FFFF807FFFFFFF00213879B730>I<0001FFFFF00003FFFFF80007FFFFF80007FFFFF800
+03FFFFF80001FFFFF0000000FE00000000FE00000000FE00000000FE00000000FE000000
+00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
+FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE
+00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
+000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000
+0000FE00000000FE00000000FE003C0000FE007E0000FE00FF0000FE00FF0000FE00FF00
+01FC00FF0003FC00FF8007FC007FF01FF8003FFFFFF0003FFFFFE0001FFFFFC00007FFFF
+800001FFFE0000003FF0000025397AB730>I<3FFFF80000007FFFFC000000FFFFFE0000
+00FFFFFE0000007FFFFC0000003FFFF800000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC00000F8001FC00001FC001FC00001FC001FC00001FC001FC00001F
+C001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00001FC03FFFFFFFFF
+C07FFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC07FFFFFFFFFC03FFFFFFFFF802A387EB730
+>76 D<3FF80000FFE07FFC0001FFF0FFFE0003FFF8FFFE0003FFF87FFE0003FFF03FFF00
+07FFE007FF0007FF0007EF0007BF0007EF800FBF0007EF800FBF0007EF800FBF0007E7C0
+1F3F0007E7C01F3F0007E7C01F3F0007E7C01F3F0007E7E03F3F0007E3E03E3F0007E3E0
+3E3F0007E3F07E3F0007E3F07E3F0007E1F07C3F0007E1F07C3F0007E1F8FC3F0007E1F8
+FC3F0007E0F8F83F0007E0F8F83F0007E0FDF83F0007E07DF03F0007E07DF03F0007E07D
+F03F0007E07FF03F0007E03FE03F0007E03FE03F0007E03FE03F0007E01FC03F0007E01F
+C03F0007E007003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000
+003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000
+003F0007E000003F0007E000003F003FFC0001FFE07FFE0003FFF0FFFF0007FFF8FFFF00
+07FFF87FFE0003FFF03FFC0001FFE02D387FB730>I<3FFC001FFF807FFE003FFFC0FFFF
+007FFFE0FFFF007FFFE07FFF803FFFC03FFF801FFF8003FF8001F80003F7C001F80003F7
+C001F80003F7C001F80003F3E001F80003F3E001F80003F3E001F80003F3F001F80003F1
+F001F80003F1F001F80003F1F801F80003F1F801F80003F0F801F80003F0FC01F80003F0
+FC01F80003F07C01F80003F07E01F80003F07E01F80003F03E01F80003F03F01F80003F0
+3F01F80003F01F01F80003F01F01F80003F01F81F80003F01F81F80003F00F81F80003F0
+0FC1F80003F00FC1F80003F007C1F80003F007E1F80003F007E1F80003F003E1F80003F0
+03F1F80003F003F1F80003F001F1F80003F001F1F80003F001F9F80003F000F9F80003F0
+00F9F80003F000F9F80003F0007DF80003F0007DF80003F0007DF80003F0003FF8003FFF
+003FF8007FFF803FF800FFFFC01FF800FFFFC01FF8007FFF800FF8003FFF0007F0002B38
+7EB730>I<003FFFE00001FFFFFC0007FFFFFF000FFFFFFF801FFFFFFFC03FFFFFFFE03F
+F800FFE03FE0003FE07F80000FF07F80000FF07F000007F07F000007F07F000007F07F00
+0007F0FF000007F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE0000
+03F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003
+F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8
+FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FF
+000007F8FF000007F87F000007F07F000007F07F000007F07F80000FF07F80000FF07FC0
+001FF03FE0003FE03FF800FFE03FFFFFFFE01FFFFFFFC00FFFFFFF8007FFFFFF0001FFFF
+FC00003FFFE000253A7BB830>I<7FFFFFF00000FFFFFFFE0000FFFFFFFF8000FFFFFFFF
+E000FFFFFFFFF0007FFFFFFFF80003F8003FF80003F8000FFC0003F80003FE0003F80001
+FE0003F80000FF0003F80000FF0003F800007F0003F800007F8003F800003F8003F80000
+3F8003F800003F8003F800003F8003F800003F8003F800003F8003F800007F8003F80000
+7F0003F80000FF0003F80000FF0003F80001FE0003F80003FE0003F8000FFC0003F8003F
+F80003FFFFFFF80003FFFFFFF00003FFFFFFE00003FFFFFF800003FFFFFE000003FFFFF0
+000003F80000000003F80000000003F80000000003F80000000003F80000000003F80000
+000003F80000000003F80000000003F80000000003F80000000003F80000000003F80000
+000003F80000000003F80000000003F80000000003F8000000007FFFC0000000FFFFE000
+0000FFFFE0000000FFFFE0000000FFFFE00000007FFFC000000029387EB730>I<3FFFFF
+8000007FFFFFF00000FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC00003F801
+FFE00003F8003FF00003F8001FF00003F8000FF80003F80007F80003F80003F80003F800
+03FC0003F80001FC0003F80001FC0003F80001FC0003F80001FC0003F80001FC0003F800
+03FC0003F80003F80003F80007F80003F8000FF80003F8001FF00003F8003FF00003F801
+FFE00003FFFFFFC00003FFFFFF800003FFFFFF000003FFFFFE000003FFFFFF000003FFFF
+FF800003F800FFC00003F8003FE00003F8001FE00003F8000FE00003F8000FF00003F800
+07F00003F80007F00003F80007F00003F80007F00003F80007F00003F80007F00003F800
+07F00003F80007F00003F80007F0F803F80007F1FC03F80007F1FC03F80007F1FC03F800
+07F1FC03F80007F1FC3FFF8003FBFC7FFFC003FFF8FFFFE001FFF8FFFFE001FFF07FFFC0
+00FFE03FFF80007FC0000000001F002E397FB730>82 D<000FF803C0007FFF03E001FFFF
+C7E003FFFFF7E007FFFFFFE00FFFFFFFE01FF80FFFE03FE001FFE03FC000FFE07F80007F
+E07F00003FE0FF00003FE0FE00001FE0FE00001FE0FE00000FE0FE00000FE0FE00000FE0
+FF00000FE0FF000007C07F000000007F800000007FC00000003FF00000001FFE0000001F
+FFF000000FFFFF000007FFFFE00001FFFFF80000FFFFFC00001FFFFF000003FFFF800000
+3FFFC0000001FFC00000007FE00000001FE00000000FF00000000FF000000007F8000000
+07F87C000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FF000007
+F8FF000007F0FF800007F0FFC0000FE0FFE0001FE0FFF8003FC0FFFF00FFC0FFFFFFFF80
+FFFFFFFF00FDFFFFFE00FC7FFFF800F81FFFF0007801FF8000253A7BB830>I<3FFFFFFF
+FFC07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FE003F80
+0FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F80
+0FE0FE003F800FE07C003F8007C000003F80000000003F80000000003F80000000003F80
+000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80
+000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80
+000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80
+000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80
+000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80
+000000003F800000001FFFFF0000003FFFFF8000003FFFFF8000003FFFFF8000003FFFFF
+8000001FFFFF00002B387EB730>I<7FFFC007FFFCFFFFE00FFFFEFFFFE00FFFFEFFFFE0
+0FFFFEFFFFE00FFFFE7FFFC007FFFC03F800003F8003F800003F8003F800003F8003F800
+003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800
+003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800
+003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800
+003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800
+003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800
+003F8003F800003F8003FC00007F8001FC00007F0001FC00007F0001FC00007F0000FE00
+00FE0000FF0001FE00007F0001FC00007F8003FC00003FE00FF800001FF83FF000000FFF
+FFE0000007FFFFC0000003FFFF80000001FFFF000000007FFC000000001FF000002F3980
+B730>I<7FFE000FFFC0FFFF001FFFE0FFFF803FFFE0FFFF803FFFE0FFFF001FFFE07FFE
+000FFFC007F00001FC0007F00001FC0007F80003FC0003F80003F80003F80003F80003F8
+0003F80003F80003F80001FC0007F00001FC0007F00001FC0007F00001FC0007F00000FE
+000FE00000FE000FE00000FE000FE00000FE000FE00000FF001FE000007F001FC000007F
+001FC000007F001FC000007F803FC000003F803F8000003F803F8000003F803F8000003F
+803F8000001FC07F0000001FC07F0000001FC07F0000001FC07F0000000FE0FE0000000F
+E0FE0000000FE0FE0000000FE0FE00000007E0FC00000007F1FC00000007F1FC00000007
+F1FC00000003F1F800000003F1F800000003F1F800000003FBF800000001FBF000000001
+FBF000000001FBF000000001FFF000000001FFF000000000FFE000000000FFE000000000
+FFE000000000FFE0000000007FC0000000003F8000002B397EB730>I<3FFC0001FFE07F
+FE0003FFF0FFFE0003FFF8FFFE0003FFF87FFE0003FFF03FFC0001FFE01FC000001FC00F
+C000001F800FC000001F800FC000001F800FC000001F800FC000001F800FC000001F800F
+C000001F800FE000003F8007E000003F0007E000003F0007E000003F0007E000003F0007
+E000003F0007E000003F0007E000003F0003E00F803E0003F01FC07E0003F03FE07E0003
+F03FE07E0003F03FE07E0003F07FF07E0003F07FF07E0003F07DF07E0001F07DF07C0001
+F07DF07C0001F8FDF8FC0001F8FDF8FC0001F8FDF8FC0001F8F8F8FC0001F8F8F8FC0001
+F8F8F8FC0000F8F8F8F80000F9F8FCF80000F9F8FCF80000F9F07CF80000F9F07CF80000
+FDF07DF80000FDF07DF800007DF07DF000007DE03DF000007DE03DF000007DE03DF00000
+7FE03FF000007FE03FF000007FC01FF000007FC01FF000003FC01FE000003FC01FE00000
+3F800FE000001F0007C0002D397FB730>I<3FFF01FFF8007FFF83FFFC007FFFC7FFFE00
+7FFFC7FFFE007FFF83FFFC003FFF01FFF80001FC007F800001FE007F000000FE00FF0000
+00FF00FE0000007F01FE0000007F81FC0000003F83FC0000003FC3FC0000001FC3F80000
+001FE7F80000000FE7F00000000FFFF000000007FFE000000007FFE000000003FFC00000
+0003FFC000000001FF8000000001FF8000000000FF0000000000FF0000000000FF000000
+0000FF0000000001FF8000000001FF8000000003FFC000000003FFC000000003FFE00000
+0007FFE000000007FFF00000000FE7F00000000FE7F80000001FC3F80000001FC3FC0000
+003F81FC0000003F81FE0000007F00FE0000007F00FF000000FF007F000000FE007F8000
+01FE003F800001FC003FC00003FC001FC00003F8001FE00007F8000FE0007FFE007FFF00
+FFFF00FFFF80FFFF80FFFF80FFFF80FFFF80FFFF00FFFF807FFE007FFF0029387DB730>
+I<1FFFFFFFFC3FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7F000003FC
+7F000007F87F000007F07F00000FF07F00001FE07F00001FC07F00003FC07F00007F803E
+00007F00000000FF00000001FE00000001FC00000003FC00000007F800000007F0000000
+0FF00000001FE00000001FC00000003FC00000007F800000007F00000000FF00000001FE
+00000001FC00000003FC00000007F800000007F00000000FF00000001FE00000001FC000
+00003FC00000007F800000007F00000000FF00000001FE00007C01FC0000FE03FC0000FE
+07F80000FE07F00000FE0FF00000FE1FE00000FE1FC00000FE3FC00000FE7F800000FE7F
+FFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC27387CB730>90
+D<7FFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF00FE000000FE000000FE0000
+00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
+00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
+00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
+00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
+00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
+00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
+00FE000000FE000000FFFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFFFF0019476D
+BE30>I<7C000000007C00000000FE00000000FE00000000FF00000000FF000000007F80
+0000007F800000003FC00000003FC00000001FE00000001FE00000000FF00000000FF000
+000007F800000007F800000003FC00000003FC00000001FC00000001FE00000001FE0000
+0000FF00000000FF000000007F800000007F800000003FC00000003FC00000001FE00000
+001FE00000000FF00000000FF000000007F800000007F800000003FC00000003FC000000
+01FC00000001FE00000001FE00000000FF00000000FF000000007F800000007F80000000
+3FC00000003FC00000001FE00000001FE00000000FF00000000FF000000007F800000007
+F800000003FC00000003FC00000001FC00000001FE00000001FE00000000FF00000000FF
+000000007F800000007F800000003FC00000003FC00000001FE00000001FE00000000FF0
+0000000FF000000007F800000007F800000003F800000003F800000001F000000000F025
+477BBE30>I<7FFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFFFF8000003F800000
+3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000
+3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000
+3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000
+3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000
+3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000
+3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000
+3F8000003F8000003F8000003F807FFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFF
+FF0019477DBE30>I<00070000001FC000007FF00000FFF80003FFFE000FFFFF803FFFFF
+E07FFDFFF0FFF07FF8FFC01FF8FF800FF8FE0003F87C0001F0100000401D0E77B730>I<
+7FFFFFFFF07FFFFFFFF0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFFFFF07FFFFFFFF025
+077B7D30>I<0038007C01FE03FE07FE0FFC0FF01FE01FC03F803F007F007E007E00FE00
+FC00FC00FC00FC00FC00FFC0FFE0FFF07FF07FF03FF03FF01FE007C00F1D70BE30>I<00
+3FFC00000001FFFF80000003FFFFE0000007FFFFF000000FFFFFF800001FFFFFFC00001F
+F00FFE00001FE001FF00001FE000FF00001FE0007F80000FC0003F80000780003FC00000
+00001FC0000000001FC0000000001FC0000000001FC0000000FFFFC000000FFFFFC00000
+7FFFFFC00001FFFFFFC00007FFFFFFC0000FFFFFFFC0001FFFC01FC0003FFC001FC0007F
+E0001FC0007F80001FC000FF00001FC000FE00001FC000FE00001FC000FE00001FC000FE
+00001FC000FF00003FC000FF00003FC0007F80007FC0007FC001FFC0003FF80FFFFFC01F
+FFFFFFFFE01FFFFFFFFFE007FFFFF7FFE003FFFFC3FFE000FFFF00FFC0003FF00000002B
+2A7CA830>I<3FFC000000007FFE00000000FFFE00000000FFFE000000007FFE00000000
+3FFE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE00000000
+00FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE03FE0000
+00FE1FFF800000FE7FFFE00000FEFFFFF00000FFFFFFFC0000FFFFFFFE0000FFFE07FE00
+00FFF001FF0000FFE000FF8000FFC0007F8000FF80003FC000FF00001FC000FE00001FE0
+00FE00000FE000FE00000FE000FE00000FF000FE000007F000FE000007F000FE000007F0
+00FE000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE00000FF0
+00FE00000FF000FE00000FE000FF00000FE000FF00001FE000FF80003FC000FF80003FC0
+00FFC0007F8000FFE000FF8000FFF003FF0000FFFC0FFE0000FFFFFFFC0000FFFFFFF800
+00FEFFFFF000007E7FFFC000003C1FFF0000000003FC00002C3980B730>I<0000FFE000
+0007FFFC00001FFFFE00007FFFFF0000FFFFFF8001FFFFFFC003FF807FC007FC003FC00F
+F8003FC01FF0003FC01FE0001F803FC0000F003F800000007F800000007F000000007F00
+000000FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000
+0000FE00000000FE00000000FF000000007F000000007F000000007F800000003F800007
+C03FC0000FE01FE0000FE01FF0001FE00FF8001FC007FE003FC007FFC0FF8003FFFFFF80
+00FFFFFF00007FFFFE00001FFFF8000007FFF0000001FF8000232A7AA830>I<000001FF
+E000000003FFF000000007FFF000000007FFF000000003FFF000000001FFF00000000007
+F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007
+F00000000007F00000000007F00000000007F0000003FE07F000001FFF87F000003FFFE7
+F00000FFFFFFF00001FFFFFFF00003FFFFFFF00007FF03FFF0000FFC00FFF0001FF0003F
+F0001FE0001FF0003FC0001FF0003FC0000FF0007F800007F0007F000007F0007F000007
+F000FF000007F000FF000007F000FE000007F000FE000007F000FE000007F000FE000007
+F000FE000007F000FE000007F000FE000007F000FE000007F000FF000007F0007F00000F
+F0007F00000FF0007F80000FF0003F80001FF0003FC0003FF0001FE0003FF0001FF0007F
+F0000FF801FFF00007FE07FFFFC003FFFFFFFFE001FFFFFFFFF000FFFFF7FFF0007FFFC7
+FFE0001FFF03FFC00007FC0000002C397DB730>I<0001FF00000007FFE000001FFFF800
+007FFFFC0000FFFFFE0001FFFFFF0003FF81FF8007FC007FC00FF8003FC01FE0001FE01F
+E0000FE03FC0000FF03F800007F07F800007F07F000007F07F000003F8FF000003F8FE00
+0003F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF0FE0000
+0000FF000000007F000000007F000000007F800000003F800001F03FC00003F81FE00003
+F80FF00003F80FF80007F807FE001FF003FFC07FE001FFFFFFE000FFFFFFC0003FFFFF80
+001FFFFE000007FFF8000000FFC000252A7CA830>I<000000FF80000007FFE000001FFF
+F000003FFFF000007FFFF80000FFFFF80001FF87F80003FE07F80003FC03F00007F800C0
+0007F000000007F000000007F000000007F000000007F000000007F000000007F0000000
+07F000003FFFFFFFC07FFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC00007
+F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0
+00000007F000000007F000000007F000000007F000000007F000000007F000000007F000
+000007F000000007F000000007F000000007F000000007F000000007F000000007F00000
+0007F000000007F000000007F000000007F000000007F000003FFFFFFE007FFFFFFF00FF
+FFFFFF80FFFFFFFF807FFFFFFF003FFFFFFE0025397DB830>I<0003FC00FF00001FFF87
+FFC0003FFFDFFFC000FFFFFFFFE001FFFFFFFFE003FFFFFFFFE007FE07FF8FE007F801FE
+07C00FF000FF00000FF000FF00000FE0007F00001FE0007F80001FC0003F80001FC0003F
+80001FC0003F80001FC0003F80001FC0003F80001FE0007F80000FE0007F00000FF000FF
+00000FF000FF000007F801FE000007FE07FE000007FFFFFC000007FFFFF800000FFFFFF0
+00000FFFFFC000000FDFFF8000000FC3FC0000000FC0000000000FC0000000000FC00000
+00000FE0000000000FF00000000007FFFFF0000007FFFFFF000003FFFFFFC00007FFFFFF
+F0000FFFFFFFF8001FFFFFFFFC003FE0001FFE003F800001FE007F0000007F007E000000
+3F00FE0000003F80FC0000001F80FC0000001F80FC0000001F80FC0000001F80FC000000
+1F80FE0000003F807F0000007F007F800000FF003FC00001FE003FF00007FE001FFF007F
+FC000FFFFFFFF80007FFFFFFF00001FFFFFFC000007FFFFF0000001FFFFC00000001FFC0
+00002B3E7DA730>I<3FFC000000007FFE00000000FFFE00000000FFFE000000007FFE00
+0000003FFE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE00
+00000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE01
+FE000000FE0FFF800000FE3FFFE00000FEFFFFF00000FFFFFFF80000FFFFFFF80000FFFE
+07FC0000FFF803FC0000FFE001FE0000FFC001FE0000FF8000FE0000FF8000FE0000FF00
+00FE0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
+00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
+00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
+00FE0000FE0000FE0000FE0000FE0000FE0000FE003FFFF81FFFF87FFFFC3FFFFCFFFFFE
+3FFFFEFFFFFE3FFFFE7FFFFC3FFFFC3FFFF81FFFF82F3880B730>I<0000E000000003F8
+00000003F800000007FC00000007FC00000007FC00000003F800000003F800000000E000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000001FFFF800003FFFFC00007FFFFC00007FFFFC00003FFFFC00001F
+FFFC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001
+FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC
+00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00
+000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00003FFFFFFFC0
+7FFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFE03FFFFFFFC023397AB830>I<000001C0
+000007F0000007F000000FF800000FF800000FF8000007F0000007F0000001C000000000
+000000000000000000000000000000000000000000000000000000000000000000FFFFF0
+01FFFFF801FFFFF801FFFFF801FFFFF800FFFFF8000003F8000003F8000003F8000003F8
+000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8
+000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8
+000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8
+000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8
+000003F8000007F0000007F03C0007F07E000FE0FF001FE0FF003FC0FF007FC0FFFFFF80
+7FFFFF007FFFFE003FFFFC000FFFF00003FFC0001D4E7CB830>I<7FF800000000FFFC00
+000000FFFC00000000FFFC00000000FFFC000000007FFC0000000000FC0000000000FC00
+00000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00
+00000000FC0000000000FC0000000000FC0000000000FC03FFFF8000FC07FFFFC000FC07
+FFFFE000FC07FFFFE000FC07FFFFC000FC03FFFF8000FC001FE00000FC003FC00000FC00
+7F800000FC00FF000000FC01FE000000FC03FC000000FC0FF8000000FC1FF0000000FC3F
+E0000000FC7FC0000000FCFF80000000FDFFC0000000FFFFE0000000FFFFF0000000FFF7
+F0000000FFE3F8000000FFC1FC000000FF81FE000000FF00FF000000FE007F000000FC00
+3F800000FC001FC00000FC001FE00000FC000FF00000FC0007F00000FC0003F80000FC00
+01FC007FFFF81FFFE0FFFFFC3FFFF0FFFFFC3FFFF8FFFFFC3FFFF8FFFFFC3FFFF07FFFF8
+1FFFE02D387FB730>I<7FFFF80000FFFFFC0000FFFFFC0000FFFFFC0000FFFFFC00007F
+FFFC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001
+FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC
+00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00
+000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000
+0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000
+01FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001
+FC00000001FC00007FFFFFFFF0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFF
+FFF025387BB730>I<0000FC007E00007FC3FF01FF8000FFEFFF87FFC000FFFFFFCFFFE0
+00FFFFFFDFFFE000FFFFFFFFFFF0007FFF0FFF87F00007FE07FF03F80007FC07FE03F800
+07F803FC01F80007F803FC01F80007F003F801F80007F003F801F80007F003F801F80007
+E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E0
+03F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003
+F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003F0
+01F80007E003F001F80007E003F001F80007E003F001F80007E003F001F8007FFE0FFF07
+FF80FFFF1FFF8FFFC0FFFF1FFF8FFFC0FFFF1FFF8FFFC0FFFF1FFF8FFFC07FFE0FFF07FF
+80322881A730>I<000001FE00003FFC0FFF80007FFE3FFFE000FFFEFFFFF000FFFFFFFF
+F8007FFFFFFFF8003FFFFE07FC0000FFF803FC0000FFE001FE0000FFC001FE0000FF8000
+FE0000FF8000FE0000FF0000FE0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000
+FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
+FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
+FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE003FFFF81F
+FFF87FFFFC3FFFFCFFFFFE3FFFFEFFFFFE3FFFFE7FFFFC3FFFFC3FFFF81FFFF82F2880A7
+30>I<0001FF0000000FFFE000003FFFF800007FFFFC0000FFFFFE0003FFFFFF8003FF01
+FF8007FC007FC00FF8003FE01FE0000FF01FE0000FF03FC00007F83F800003F87F800003
+FC7F000001FC7F000001FC7F000001FCFE000000FEFE000000FEFE000000FEFE000000FE
+FE000000FEFE000000FEFE000000FEFE000000FEFF000001FE7F000001FC7F000001FC7F
+800003FC3F800003F83FC00007F83FE0000FF81FF0001FF00FF8003FE00FFC007FE007FF
+01FFC003FFFFFF8001FFFFFF00007FFFFC00003FFFF800000FFFE0000001FF0000272A7C
+A830>I<000003FE00003FFC1FFF80007FFE7FFFE000FFFEFFFFF000FFFFFFFFFC007FFF
+FFFFFE003FFFFE07FE0000FFF001FF0000FFE000FF8000FFC0007F8000FF80003FC000FF
+00001FC000FE00001FE000FE00000FE000FE00000FE000FE00000FF000FE000007F000FE
+000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE
+000007F000FE00000FF000FE00000FF000FE00000FE000FF00000FE000FF00001FE000FF
+80003FC000FF80003FC000FFC0007F8000FFE000FF8000FFF003FF0000FFFC0FFE0000FF
+FFFFFC0000FFFFFFF80000FEFFFFF00000FE7FFFC00000FE1FFF000000FE03FC000000FE
+0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE
+0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE
+000000003FFFF80000007FFFFC000000FFFFFE000000FFFFFE0000007FFFFC0000003FFF
+F80000002C3C80A730>I<0001FF00F800000FFFC1FC00003FFFF1FC00007FFFFDFC0001
+FFFFFFFC0003FFFFFFFC0007FF81FFFC000FFC007FFC000FF8001FFC001FF0000FFC001F
+E00007FC003FC00007FC003F800003FC007F800003FC007F000003FC007F000001FC00FF
+000001FC00FE000001FC00FE000001FC00FE000001FC00FE000001FC00FE000001FC00FE
+000001FC00FE000001FC00FF000001FC007F000001FC007F000003FC007F800003FC007F
+800003FC003FC00007FC003FC0000FFC001FE0001FFC000FF0003FFC000FFC007FFC0007
+FF01FFFC0003FFFFFFFC0001FFFFFDFC0000FFFFF9FC00003FFFF1FC00000FFFC1FC0000
+03FE01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000
+000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000
+000001FC0000000001FC00000000FFFFF8000001FFFFFC000001FFFFFC000001FFFFFC00
+0001FFFFFC000000FFFFF82E3C7DA730>I<00000007F8003FFF803FFF007FFFC0FFFF80
+FFFFC3FFFF80FFFFCFFFFFC07FFFDFFFFFC03FFFFFFC3FC0001FFFE03FC0001FFF801F80
+001FFF000F00001FFE000000001FFC000000001FF8000000001FF0000000001FF0000000
+001FE0000000001FE0000000001FE0000000001FE0000000001FC0000000001FC0000000
+001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000
+001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000
+001FC00000003FFFFFFC00007FFFFFFE0000FFFFFFFF0000FFFFFFFF00007FFFFFFE0000
+3FFFFFFC00002A287EA730>I<001FFC1E0001FFFF9F0007FFFFFF000FFFFFFF001FFFFF
+FF003FFFFFFF007FF007FF007F8001FF00FE0000FF00FC00007F00FC00007F00FC00007F
+00FC00007F00FE00003E007F000000007FE00000003FFF0000001FFFFC00000FFFFF8000
+07FFFFE00001FFFFF800007FFFFC000003FFFE0000000FFF00000000FF807C00007F80FE
+00001FC0FE00001FC0FE00000FC0FF00000FC0FF00000FC0FF80000FC0FF80001FC0FFC0
+003F80FFE0007F80FFFC03FF00FFFFFFFF00FFFFFFFE00FFFFFFFC00FCFFFFF000F83FFF
+C000780FFE0000222A79A830>I<0007800000000FC00000001FC00000001FC00000001F
+C00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000003FFFFF
+FFE07FFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF07FFFFFFFE0001FC00000001FC000
+00001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000
+001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000000
+1FC00000001FC00000001FC000F8001FC001FC001FC001FC001FC001FC001FC001FC001F
+C001FC001FE003FC000FE007F8000FF007F8000FFC1FF00007FFFFE00003FFFFC00003FF
+FF800001FFFF0000007FFC0000001FF00026337EB130>I<3FFC003FFC007FFE007FFE00
+FFFE00FFFE00FFFE00FFFE007FFE007FFE003FFE003FFE0000FE0000FE0000FE0000FE00
+00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
-00FE0000FE0000FE00FFFFFEFFFFFEFFFFFE17277BA622>49 D<00FF800007FFF0001FFF
-FC003E07FE007E01FF807F007F80FF807FC0FF803FC0FF803FE0FF801FE0FF801FE07F00
-1FE03E003FE000003FE000003FC000003FC000007F8000007F000000FE000000FC000001
-F8000003F0000007C000000F8000001F0000003C0000007800E0007000E000E000E001C0
-01C0030001C0060001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFF
-FF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF001F80FF003FC07F
-803FC07F803FC07F803FC07F801FC07F800F80FF000000FF000000FE000001FC000003F8
-000007F00000FF800000FFC0000001F8000000FE0000007F0000007F8000003FC000003F
-C000003FE01C003FE07F003FE07F003FE0FF803FE0FF803FE0FF803FC0FF803FC07F007F
-807E00FF003F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000F0000000F00
-00001F0000003F0000007F000000FF000001FF000001FF000003BF0000073F00000E3F00
-001C3F00003C3F0000383F0000703F0000E03F0001C03F0003803F0007803F0007003F00
-0E003F001C003F0038003F0070003F00F0003F00FFFFFFF8FFFFFFF8FFFFFFF800007F00
-00007F0000007F0000007F0000007F0000007F0000007F0000007F00001FFFF8001FFFF8
-001FFFF81D277EA622>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001F
-FFE0001FFF80001FFE00001C0000001C0000001C0000001C0000001C0000001C0000001C
-7FC0001DFFF8001F80FC001E003F0008003F0000001F8000001FC000001FC000001FE000
-001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FE0FF001FC0FE001FC07C003F8078
-003F803C007F001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<0007F800003F
-FE0000FFFF0001FC0F8003F00F8007E01FC00FC03FC01F803FC01F803FC03F803FC03F00
-1F807F000F007F0000007F000000FF020000FF1FF000FF3FFC00FF603E00FFC03F00FF80
-1F80FF801FC0FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F00
-1FE07F001FE03F001FE03F001FC01F801FC01F801F800FC03F0007E07E0003FFFC0001FF
-F800003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFF
-E07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E0
-000001C0000001C0000003800000078000000F8000000F0000001F0000001F0000003F00
-00003F0000007E0000007E0000007E000000FE000000FE000000FE000000FE000001FE00
-0001FE000001FE000001FE000001FE000001FE000001FE000000FC0000007800001C297C
-A822>I<003FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F80
-3E000F803F000F803F800F803FC00F003FF01F001FFC1E001FFE3C000FFFF80007FFE000
-03FFF00001FFFC0001FFFE0007FFFF000F0FFF801E07FFC03E01FFC07C007FE07C001FE0
-F8000FE0F80007E0F80003E0F80003E0F80003E0F80003C07C0003C07E0007803F000F00
-1FC03F000FFFFC0003FFF800007FC0001B277DA622>I<00000780000000000780000000
-000FC0000000000FC0000000000FC0000000001FE0000000001FE0000000003FF0000000
-003FF0000000003FF00000000077F80000000077F800000000F7FC00000000E3FC000000
-00E3FC00000001C1FE00000001C1FE00000003C1FF0000000380FF0000000380FF000000
-07007F80000007007F8000000F007FC000000E003FC000000E003FC000001C001FE00000
-1C001FE000003FFFFFF000003FFFFFF000003FFFFFF00000700007F80000700007F80000
-F00007FC0000E00003FC0001E00003FE0001C00001FE0001C00001FE0003C00001FF00FF
-FE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA833>65 D<00007FE0030003FFFC0700
-1FFFFF0F007FF00FDF00FF8001FF01FE0000FF03FC00007F07F000003F0FF000001F1FE0
-00001F1FE000000F3FC000000F3FC00000077FC00000077F800000077F80000000FF8000
-0000FF80000000FF80000000FF80000000FF80000000FF80000000FF80000000FF800000
-00FF800000007F800000007F800000007FC00000073FC00000073FC00000071FE0000007
-1FE000000E0FF000000E07F000001C03FC00003C01FE00007800FF8001F0007FF007C000
-1FFFFF800003FFFE0000007FF00028297CA831>67 D<FFFFFFFC0000FFFFFFFF8000FFFF
-FFFFE00003FC001FF80003FC0003FC0003FC0001FE0003FC0000FF0003FC00007F8003FC
-00003FC003FC00001FC003FC00001FE003FC00001FE003FC00000FF003FC00000FF003FC
-00000FF003FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC
-00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC
-00000FF003FC00000FF003FC00000FF003FC00001FE003FC00001FE003FC00001FC003FC
-00003FC003FC00003F8003FC00007F0003FC0001FF0003FC0003FC0003FC001FF800FFFF
-FFFFF000FFFFFFFF8000FFFFFFFC00002D297EA834>I<FFFFFFFFE0FFFFFFFFE0FFFFFF
-FFE003FC001FE003FC0007F003FC0001F003FC0001F003FC0000F003FC00007003FC0000
-7003FC00007003FC01C07803FC01C03803FC01C03803FC01C03803FC03C00003FC03C000
-03FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003
-FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C03FC
-00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFF
-FFF0FFFFFFFFF0FFFFFFFFF027297EA82C>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC
-003FC003FC000FE003FC0003E003FC0001E003FC0001E003FC0000E003FC0000E003FC00
-00E003FC0000F003FC01C07003FC01C07003FC01C07003FC01C00003FC03C00003FC03C0
-0003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C000
-03FC01C00003FC01C00003FC01C00003FC01C00003FC00000003FC00000003FC00000003
-FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFFC0000FFFF
-FC0000FFFFFC000024297EA82A>I<FFFFF0FFFFF0FFFFF003FC0003FC0003FC0003FC00
-03FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC00
-03FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC0003FC00
-03FC0003FC0003FC0003FC0003FC0003FC0003FC00FFFFF0FFFFF0FFFFF014297EA819>
-73 D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00
-000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
-0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
-03FC00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003
-FC0003C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC
-001F8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297EA828>76
-D<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC
-03FC0003FC03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03
-FC0003FE03FC0003FC03FC0007FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FF
-FFFE0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
-000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
-0003FC00000003FC000000FFFFF00000FFFFF00000FFFFF0000027297EA82E>80
-D<00FF806003FFF0E00FFFF9E01F80FFE03F001FE03E0007E07C0003E07C0003E0FC0001
-E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFC00007FFFE0003FFFF8
-001FFFFE001FFFFF0007FFFF8003FFFFC000FFFFC0000FFFE000007FE000001FF000000F
-F0000007F0E00003F0E00003F0E00003F0E00003F0F00003E0F00003E0F80007E0FC0007
-C0FF000F80FFE03F80F3FFFE00E1FFFC00C01FF0001C297CA825>83
-D<7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F807C007F800F8078007F8007
-8078007F80078070007F800380F0007F8003C0F0007F8003C0E0007F8001C0E0007F8001
-C0E0007F8001C0E0007F8001C0E0007F8001C000007F80000000007F80000000007F8000
-0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000
-0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000
-0000007F80000000007F80000000007F80000000007F80000000007F80000000007F8000
-0000007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC0002A287EA72F>I<FFFFF000
-7FFFFFFFF0007FFFFFFFF0007FFF03FE000001C001FE0000038001FE0000038001FF0000
-078000FF0000070000FF80000F00007F80000E00007FC0000E00003FC0001C00003FC000
-1C00003FE0003C00001FE0003800001FF0007800000FF0007000000FF80070000007F800
-E0000007F800E0000003FC01C0000003FC01C0000003FE03C0000001FE0380000001FF07
-80000000FF0700000000FF87000000007F8E000000007F8E000000007FDE000000003FDC
-000000003FFC000000001FF8000000001FF8000000000FF0000000000FF0000000000FF0
-0000000007E00000000007E00000000003C00000000003C0000030297FA833>86
-D<01FF80000FFFF0001F81FC003FC0FE003FC07F003FC03F003FC03F801F803F800F003F
-8000003F8000003F800000FF80007FFF8003FFFF800FF03F801FC03F803F803F807F003F
-80FE003F80FE003F80FE003F80FE003F80FE007F807F00DF803F839FFC1FFF0FFC03FC03
-FC1E1B7E9A21>97 D<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000
-000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE1FE
-000FEFFF800FFE0FE00FF803F00FF001F80FE001FC0FE000FC0FE000FE0FE000FE0FE000
-FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FE0FE000
-FE0FE000FE0FE001FC0FE001FC0FF001F80FF803F00F9C0FE00F0FFF800E01FC00202A7E
-A925>I<003FE00001FFFC0003F07E000FC0FF001FC0FF003F80FF003F80FF007F007E00
-7F003C007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-7F0000007F0000007F8000003F8003803F8003801FC007000FE00E0003F83C0001FFF800
-003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F0000007F0000007F000
-0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
-3F87F001FFF7F007F03FF00FC00FF01F8007F03F8007F03F8007F07F0007F07F0007F07F
-0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F0FF0007F07F
-0007F07F0007F03F0007F03F8007F01F800FF00FC01FF007F07FFF01FFE7FF007F87FF20
-2A7EA925>I<003FC00001FFF00003F0FC000FC03E001F803F001F801F003F801F807F00
-1F807F001FC07F000FC0FF000FC0FF000FC0FFFFFFC0FFFFFFC0FF000000FF000000FF00
-00007F0000007F0000007F0000003F8001C01F8001C00FC0038007C0070003F01E0000FF
-FC00003FE0001A1B7E9A1F>I<0003F800001FFE00007E3F0001FC3F8001F87F8003F87F
-8007F07F8007F03F0007F03F0007F0000007F0000007F0000007F0000007F0000007F000
-00FFFFC000FFFFC000FFFFC00007F0000007F0000007F0000007F0000007F0000007F000
-0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
-0007F0000007F0000007F0000007F0000007F0000007F000007FFF80007FFF80007FFF80
-00192A7EA915>I<00FF81F003FFE7F80FC1FE1C1F80FC7C3F007E7C3F007E387F007F00
-7F007F007F007F007F007F007F007F007F007F003F007E003F007E001F80FC000FC1F800
-1FFFE00018FF800038000000380000003C0000003E0000003FFFF8003FFFFF001FFFFFC0
-0FFFFFE007FFFFF01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F8
-7C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>I<FFE00000FF
-E00000FFE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F
-E000000FE000000FE000000FE000000FE000000FE0FE000FE3FF800FE70FC00FEC0FE00F
-F807E00FF807F00FF007F00FF007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>I<07000F801FC03FE03FE0
-3FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFE
-FFFEFFFE0F2B7EAA12>I<FFE00000FFE00000FFE000000FE000000FE000000FE000000F
-E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000F
-E01FFC0FE01FFC0FE01FFC0FE007800FE00F000FE01E000FE03C000FE078000FE0E0000F
-E3C0000FE7C0000FEFE0000FFFF0000FFFF8000FF3F8000FE1FC000FC0FE000FC07F000F
-C07F000FC03F800FC01FC00FC00FE00FC00FE00FC007F0FFFC1FFFFFFC1FFFFFFC1FFF20
-2A7FA923>107 D<FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7EA912>I<FFC07F001FC000FFC1
-FFC07FF000FFC707E1C1F8000FCC07F301FC000FD803F600FC000FD803FE00FE000FF003
-FC00FE000FF003FC00FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F8
-00FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800
-FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE000FE003F800FE
-000FE003F800FE000FE003F800FE00FFFE3FFF8FFFE0FFFE3FFF8FFFE0FFFE3FFF8FFFE0
-331B7D9A38>I<FFC0FE00FFC3FF80FFC70FC00FCC0FE00FD807E00FD807F00FF007F00F
-F007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFF
-FE3FFFFFFE3FFF201B7D9A25>I<003FE00001FFFC0003F07E000FC01F801F800FC03F80
-0FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF00
-07F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC0
-1F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE00FFEFFF80FFFE0FE00FF807
-F00FF003F80FE001FC0FE001FC0FE001FE0FE000FE0FE000FF0FE000FF0FE000FF0FE000
-FF0FE000FF0FE000FF0FE000FF0FE000FF0FE000FE0FE001FE0FE001FE0FE001FC0FE003
-FC0FF003F80FF807F00FFC1FE00FEFFF800FE1FC000FE000000FE000000FE000000FE000
-000FE000000FE000000FE000000FE000000FE00000FFFE0000FFFE0000FFFE000020277E
-9A25>I<FFC1F0FFC7FCFFCE3E0FDC7F0FD87F0FF07F0FF07F0FF03E0FE0000FE0000FE0
-000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
-000FE000FFFF00FFFF00FFFF00181B7F9A1B>114 D<03FE300FFFF03E03F07800F07000
-F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF80007
-FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B
->I<00E00000E00000E00000E00001E00001E00001E00003E00003E00007E0000FE0001F
-FFE0FFFFE0FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
-E0000FE0000FE0000FE0000FE0700FE0700FE0700FE0700FE0700FE0700FE07007F0E003
-F0C001FF80007F0014267FA51A>I<FFE07FF0FFE07FF0FFE07FF00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE00FF00FE00FF007
-E01FF003F077FF01FFE7FF007F87FF201B7D9A25>I<FFFC03FFFFFC03FFFFFC03FF0FF0
-00F007F000E007F800E003F801C003F801C003FC03C001FC038001FE078000FE070000FF
-0700007F0E00007F0E00007F9E00003F9C00003FFC00001FF800001FF800000FF000000F
-F000000FF0000007E0000007E0000003C0000003C000201B7F9A23>I<FFFC7FFC1FFCFF
-FC7FFC1FFCFFFC7FFC1FFC0FE00FE001C007F007E0038007F007E0038007F807F0078003
-F807F0070003F80FF8070003FC0FF80F0001FC0FF80E0001FC1FFC0E0000FE1CFC1C0000
-FE1CFE1C0000FF387E3C00007F387E3800007F787F3800003FF03F7000003FF03FF00000
-3FE01FF000001FE01FE000001FE01FE000000FC00FC000000FC00FC000000F8007C00000
-07800780000007800780002E1B7F9A31>I<FFFC1FFEFFFC1FFEFFFC1FFE07F0038003F8
-078003FC0F0001FE1E0000FE3C00007F3800007FF800003FF000001FE000000FE000000F
-F0000007F800000FF800001FFC00003CFE000038FF0000787F0000F03F8001E01FC003C0
-1FE003800FE0FFF03FFFFFF03FFFFFF03FFF201B7F9A23>I<FFFC03FFFFFC03FFFFFC03
-FF0FF000F007F000E007F800E003F801C003F801C003FC03C001FC038001FE078000FE07
-0000FF0700007F0E00007F0E00007F9E00003F9C00003FFC00001FF800001FF800000FF0
-00000FF000000FF0000007E0000007E0000003C0000003C0000003800000038000000780
-00380700007C0F0000FE0E0000FE1E0000FE1C0000FE38000074F000003FE000000F8000
-0020277F9A23>I E /Fq 41 127 df<007E0001C1800301800703C00E03C00E01800E00
-000E00000E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E01
-C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D809C17
->12 D<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF
-80FF8009127F910C>16 D<070F0F1C3870E0400808789C15>19 D<1C001E000780038003
-800380FF00800009087B7E12>24 D<70F8F8F87005057D840C>46
-D<07C01FF0387C603C601EF01FF81FF80FF80F700F001F001E001E003C0038007000E000
-C00180030006000C031803100320067FFEFFFEFFFE101C7E9B15>50
-D<000C00001C00001C00003C00007C00005C0000DC00019C00031C00031C00061C000C1C
-00081C00181C00301C00201C00601C00C01C00FFFFC0FFFFC0001C00001C00001C00001C
-00001C00001C0001FFC001FFC0121C7F9B15>52 D<00060000000F0000000F0000000F00
-00001F8000001F8000001F8000003FC0000033C0000033C0000073E0000061E0000061E0
-0000E1F00000C0F00000C0F00001C0F8000180780001FFF80003FFFC0003003C0003003C
-0007003E0006001E0006001E000E001F001E000F00FF807FF0FF807FF01C1D7F9C1F>65
-D<001F808000FFE18001F03B8007C00F800F0007801F0007801E0003803C0003807C0001
-807C00018078000180F8000000F8000000F8000000F8000000F8000000F8000000F80000
-00F8000000780001807C0001807C0001803C0001801E0003001F0003000F00060007C00C
-0001F0380000FFF000001FC000191E7E9C1E>67 D<FFFFFCFFFFFC0F007C0F001C0F000C
-0F000E0F00060F03060F03060F03060F03000F07000FFF000FFF000F07000F03000F0300
-0F03030F03030F00030F00060F00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E
-9B1C>69 D<FFF0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F
-000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C7F9B0F>73
-D<FFF800FFF8000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
-000F00000F00000F00000F00000F00000F00180F00180F00180F00180F00380F00300F00
-700F00F00F01F0FFFFF0FFFFF0151C7E9B1A>76 D<003F800000E0E0000380380007001C
-000E000E001E000F003C0007803C0007807C0007C0780003C0780003C0F80003E0F80003
-E0F80003E0F80003E0F80003E0F80003E0F80003E0F80003E0780003C07C0007C07C0007
-C03C0007803E000F801E000F000F001E0007001C000380380000E0E000003F80001B1E7E
-9C20>79 D<FFFF80FFFFE00F01F00F00780F003C0F003E0F003E0F003E0F003E0F003E0F
-003C0F003C0F00780F01F00FFFC00F00000F00000F00000F00000F00000F00000F00000F
-00000F00000F00000F0000FFF000FFF000171C7E9B1C>I<7FFFFFC07FFFFFC0780F03C0
-700F01C0600F00C0E00F00E0C00F0060C00F0060C00F0060C00F0060000F0000000F0000
-000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
-000F0000000F0000000F0000000F0000000F000003FFFC0003FFFC001B1C7F9B1E>84
-D<FFE01FF0FFE01FF01F0007800F0003000F00030007800600078006000780060003C00C
-0003C00C0003C00C0001E0180001E0180001F0180000F0300000F0300000F87000007860
-0000786000003CC000003CC000003CC000001F8000001F8000001F8000000F0000000F00
-00000F0000000600001C1D7F9B1F>86 D<0FE0001838003C1C003C0E00180E00000E0000
-0E0001FE000F8E003C0E00780E00700E00F00E60F00E60F00E60701E603827C00FC38013
-127F9115>97 D<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00
-001C00001CFC001F87001E03801C01C01C01E01C00E01C00F01C00F01C00F01C00F01C00
-F01C00F01C00E01C01E01C01C01E03801B070018FC00141D7F9C17>I<03F80E0C1C1E38
-1E780C7000F000F000F000F000F000F0007000780638061C0C0E1803E00F127F9112>I<
-001F80001F8000038000038000038000038000038000038000038000038000038003F380
-0E0F801C0780380380780380700380F00380F00380F00380F00380F00380F00380700380
-7803803803801C07800E1BF003F3F0141D7F9C17>I<07E00C301818381C701E700EF00E
-FFFEF000F000F000F000700070063806180C0E1803E00F127F9112>I<00F8018C071E06
-1E0E0C0E000E000E000E000E000E00FFE0FFE00E000E000E000E000E000E000E000E000E
-000E000E000E000E000E007FE07FE00F1D809C0D>I<00038007E4C00C39C0381DC0381C
-00781E00781E00781E00781E00381C00381C001C300037E0002000003000003000003FF8
-001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C
-7F9215>I<FC0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C
-00001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C
-03801C03801C03801C03801C0380FF9FF0FF9FF0141D7F9C17>I<38007C007C007C0038
-00000000000000000000000000FC00FC001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C00FF80FF80091D7F9C0C>I<01C003E003E003E001C0000000000000
-00000000000007E007E000E000E000E000E000E000E000E000E000E000E000E000E000E0
-00E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC00FC001C001C
-001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C001C00FF80FF80091D7F9C0C>108 D<FC7E07E000FC838838001D01
-9018001E01E01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
-1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF
-80FF8FF8FF8021127F9124>I<FC7C00FC87001D03001E03801C03801C03801C03801C03
-801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0FF9FF014127F9117
->I<03F0000E1C00180600380700700380700380F003C0F003C0F003C0F003C0F003C0F0
-03C07003807003803807001C0E000E1C0003F00012127F9115>I<FCFC00FF87001E0380
-1C01C01C01E01C00E01C00F01C00F01C00F01C00F01C00F01C00F01C01E01C01E01C01C0
-1E03801F07001CFC001C00001C00001C00001C00001C00001C0000FF8000FF8000141A7F
-9117>I<03F1800E19801C0780380780780380780380F00380F00380F00380F00380F003
-80F003807003807803803807801C07800E1B8003E3800003800003800003800003800003
-80000380001FF0001FF0141A7F9116>I<FCE0FD381E781E781C301C001C001C001C001C
-001C001C001C001C001C001C00FFC0FFC00D127F9110>I<1F9020F04070C030C030E030
-F8007F803FE00FF000F8C038C018C018E018E010D0608FC00D127F9110>I<0C000C000C
-000C000C000C001C001C003FE0FFE01C001C001C001C001C001C001C001C001C301C301C
-301C301C300C200E6003C00C1A7F9910>I<FC1F80FC1F801C03801C03801C03801C0380
-1C03801C03801C03801C03801C03801C03801C03801C03801C07800C07800E1BF003E3F0
-14127F9117>I<FF0FE0FF0FE01C07801C03000E06000E06000E0600070C00070C00070C
-0003980003980003F80001F00001F00000E00000E00000E00013127F9116>I<FF3FCFE0
-FF3FCFE03C0F07801C0F03001C1B03001C1B87000E1B86000E3B86000E3186000731CC00
-0731CC000760CC0003E0F80003E0F80003C0780003C0780001C0700001C070001B127F91
-1E>I<7F8FF07F8FF00F0780070600038E0001DC0001D80000F00000700000780000F800
-01DC00038E00030E000607000F0380FF0FF8FF0FF81512809116>I<FF0FE0FF0FE01C07
-801C03000E06000E06000E0600070C00070C00070C0003980003980003F80001F00001F0
-0000E00000E00000E00000C00000C00000C000F18000F18000F300006600003C0000131A
-7F9116>I<1C043F0843F080E00E047D9B15>126 D E /Fr 13 118
-df<0F001F003F803F007E00F800F000C0000908769C18>19 D<00038000000380000007
-C0000007C0000007C000000FE000000FE000001FF000001BF000003BF8000031F8000031
-F8000060FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF800300
-1F8007001FC006000FC006000FC00C0007E00C0007E0FF803FFEFF803FFE1F1C7E9B24>
-65 D<07F8601FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE000
-7FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0
-E000E0F001C0FC03C0EFFF00C3FC00141C7D9B1B>83 D<07F8001FFE003F1F803F07803F
-07C01E07C00C07C003FFC01FFFC03F87C07E07C0FC07C0FC07C0FC07C0FC0FC07E1FC03F
-FBF80FE1F815127F9117>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00
-001F00001F00001F00001F1FC01FFFE01FC1F81F00F81F007C1F007C1F007E1F007E1F00
-7E1F007E1F007E1F007E1F007C1F007C1F80F81FC1F01C7FE0181F80171D7F9C1B>I<03
-F8000FFE001F3F003E3F007C3F007C1E00FC0C00FC0000FC0000FC0000FC0000FC00007C
-00007E01803E03801F07000FFE0003F80011127E9115>I<1C003E007F007F007F003E00
-1C00000000000000000000007F007F001F001F001F001F001F001F001F001F001F001F00
-1F001F001F001F00FFC0FFC00A1E7F9D0E>105 D<FF1FC0FE00FF7FE3FF001FE1F70F80
-1F80FC07C01F80FC07C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F
-00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C0FFE7FF3FF8FFE7
-FF3FF825127F9128>109 D<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8
-FC01F8FC01F8FC01F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC0015127F9118>
-111 D<FE7C00FEFF001FDF801F9F801F9F801F0F001F06001F00001F00001F00001F0000
-1F00001F00001F00001F00001F0000FFE000FFE00011127F9114>114
-D<1FD83FF87038E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CF038FFF0CF
-C00E127E9113>I<030003000300070007000F000F003F00FFFCFFFC1F001F001F001F00
-1F001F001F001F001F001F0C1F0C1F0C1F0C0F9807F003E00E1A7F9913>I<FF07F8FF07
-F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
-F81F01F80F03F807FEFF03F8FF18127F911B>I E /Fs 7 115 df<000FF000007FFC0000
-FFFF0001FFFF0007F81F0007E006000F8000001F0000003F0000003E0000003E0000007C
-0000007C0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F8
-000000F8000000F80000007C0000007C0000007C0000003E0000003E0000003F0000001F
-0000000F80008007E0038007F80F8001FFFF8000FFFF00007FFC00000FF00019257DA31F
->67 D<000FF000003FFE0000FFFF8001FFFF8003F80F8007E003000FC000001F8000001F
-0000003E0000003E0000007C0000007C0000007C000000F8000000F8000000F8000000F8
-000000F8000000F8000000F800FFC0F800FFC0F800FFC07C0003C07C0003C07C0003C03E
-0003C03E0003C01F0003C01F8003C00FC003C007E003C003F807C001FFFFC000FFFFC000
-3FFF00000FF8001A257DA321>71 D<FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFF0000F800000
-0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000
-0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000
-0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000
-0F8000000F8000000F80001C237EA221>84 D<07F0003FFC007FFE00781F00600F004007
-8000078000078000078001FF800FFF801FFF807F0780780780F00780F00780F00780F80F
-807C1F807FFF803FFF801FC78011167E9517>97 D<01F80007FE000FFF001F07803C03C0
-7801C07801C07000E0FFFFE0FFFFE0FFFFE0F00000F00000F000007000007800007C0000
-3E00401F03C00FFFC007FF8000FC0013167F9516>101 D<007F01FF03FF07C107000F00
-0F000F000F000F000F000F000F00FFF8FFF8FFF80F000F000F000F000F000F000F000F00
-0F000F000F000F000F000F000F000F000F000F000F00102380A20F>I<F0E0F3E0F7E0FF
-E0FF00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000F0
-000B167C9511>114 D E /Ft 30 118 df<387CFCFE7E3E0E1C3CF8F040070C788516>
-44 D<FFFF80FFFF80FFFF8011037E8D16>I<3078FCFC78300606788516>I<0001800003
-80000380000700000700000E00000E00001C00001C0000380000380000700000700000E0
-0000E00001C00001C0000380000380000700000700000E00000E00001C00001C00003800
-00380000700000700000E00000E00000C0000011207E9C16>I<03E0000FF8001FFC001E
-3C00380E00780F00700700700700E00380E00380E00380E00380E00380E00380E00380E0
-0380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816>I<
-0300070007000F001F00FF00FF00E7000700070007000700070007000700070007000700
-0700070007000700FFF8FFF8FFF80D197B9816>I<07E0001FF8003FFC00783E00E00700
-F00780F00380600380000380000380000700000700000E00001C0000380000700000E000
-01C0000380000F00001E03803803807FFF80FFFF807FFF8011197E9816>I<007C0000FC
-0000FC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C00F01C
-00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FFC001FFC01319
-7F9816>52 D<3FFE007FFE007FFE00700000700000700000700000700000700000700000
-77F0007FFC007FFE00780F00300700000380000380600380F00380F00380E00700781E00
-3FFC001FF80007E00011197E9816>I<00F80003FC0007FE000F07001C0F00380F007806
-00700000700000E7F800EFFC00FFFE00F80F00F00700F00380E00380E003807003807003
-807007803807003C1E001FFC000FF80003E00011197E9816>I<07F0001FFC003FFE007C
-1F00F00780E00380E00380E003807007007C1F001FFC0007F0001FFC003C1E00700700F0
-0780E00380E00380E00380F007807007007C1F003FFE001FFC0007F00011197E9816>56
-D<03E0000FF8001FFC003C1E00700E00700700E00700E00780E00380E00380E007807007
-80780F803FFF801FFB800FF380000700000700300700780E00781C00707C003FF8001FE0
-000F800011197E9816>I<3078FCFC78300000000000003078FCFC78300612789116>I<00
-F80003FC0007FE000F07001C3B8038FF8079FF8073C7C07383C0E701C0E701C0E701C0E7
-01C0E701C0E701C0E701C073838073C78079FF0038FE001C38000F03C007FFC003FF0000
-FC0012197E9816>64 D<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01
-E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07
-801C0F807FFF00FFFE007FF8001319809816>68 D<1FE0003FF0007FF800783C00300E00
-000E00003E0007FE001FFE007FCE00780E00E00E00E00E00E00E00783E007FFFE03FF7E0
-0FC3E013127E9116>97 D<FC0000FC0000FC00001C00001C00001C00001C00001C7C001D
-FE001FFF001F07801E03C01C01C01C00E01C00E01C00E01C00E01C00E01C00E01E01C01E
-03C01F07801FFF001DFE000CF80013197F9816>I<03F80FFC1FFE3C1E780C7000E000E0
-00E000E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F00003F00003F
-0000070000070000070000070003E7000FF7001FFF003C1F00780F00700700E00700E007
-00E00700E00700E00700E00700700F00780F003C1F001FFFE00FF7E007C7E013197F9816
->I<03F0000FFC001FFE003C0F00780700700380E00380FFFF80FFFF80FFFF80E00000E0
-00007003807803803E07801FFF0007FE0001F80011127E9116>I<001E00007F0001FF80
-01C7800383000380000380007FFF00FFFF00FFFF00038000038000038000038000038000
-0380000380000380000380000380000380000380007FFC00FFFE007FFC0011197F9816>
-I<FC0000FC0000FC00001C00001C00001C00001C00001CF8001DFC001FFE001F0F001E07
-001C07001C07001C07001C07001C07001C07001C07001C07001C07001C0700FF8FE0FF9F
-E0FF8FE013197F9816>104 D<07000F800F800F800700000000000000FF80FF80FF8003
-8003800380038003800380038003800380038003800380FFFCFFFEFFFC0F1A7C9916>I<
-7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C00001C00001C000
-01C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF80
-7FFF0011197E9816>108 D<03E0000FF8001FFC003C1E00780F00700700E00380E00380
-E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116>
-111 D<FC7C00FDFE00FFFF001F07801E03C01C01C01C00E01C00E01C00E01C00E01C00E0
-1C00E01E01C01E03C01F07801FFF001DFE001CF8001C00001C00001C00001C00001C0000
-1C0000FF8000FF8000FF8000131B7F9116>I<7F0F80FF3FC07F7FE007F1E007C0C00780
-000780000700000700000700000700000700000700000700000700007FFC00FFFC007FFC
-0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00E
-F00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FF
-FF00FFFF0007000007000007000007000007000007000007000007010007038007038007
-038007870003FE0001FC0000F80011177F9616>I<FC3F00FC3F00FC3F001C07001C0700
-1C07001C07001C07001C07001C07001C07001C07001C07001C07001C1F001FFFE00FFFE0
-07E7E013127F9116>I E /Fu 34 125 df<038007800F800F001E003C0038007000E000
-4000090A77A218>19 D<FFF8FFF8FFF80D03808B10>45 D<000FE010003FF83000F80E70
-01E0077003C001F0078001F00F0000F01E0000F03E0000703C0000707C0000707C000030
-7800003078000030F8000000F8000000F8000000F8000000F8000000F8000000F8000000
-F800000078000000780000307C0000307C0000303C0000303E0000601E0000600F0000C0
-078000C003C0018001E0030000FC0E00003FFC00000FE0001C247DA223>67
-D<FFFFF800FFFFFF0007C00F8007C003C007C001E007C000F007C0007807C0007C07C000
-3C07C0003E07C0001E07C0001E07C0001E07C0001F07C0001F07C0001F07C0001F07C000
-1F07C0001F07C0001F07C0001F07C0001F07C0001E07C0001E07C0003E07C0003C07C000
-3C07C0007807C000F007C001F007C003E007C00F80FFFFFF00FFFFF80020227FA125>I<
-FFFFFFE0FFFFFFE007C007E007C001E007C000E007C0006007C0007007C0007007C00030
-07C0003007C0183007C0183007C0180007C0180007C0380007C0780007FFF80007FFF800
-07C0780007C0380007C0180007C0180007C0180007C0180007C0000007C0000007C00000
-07C0000007C0000007C0000007C0000007C00000FFFF0000FFFF00001C227FA120>70
-D<FFFE1FFFC0FFFE1FFFC007C000F80007C000F80007C000F80007C000F80007C000F800
-07C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007
-C000F80007FFFFF80007FFFFF80007C000F80007C000F80007C000F80007C000F80007C0
-00F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000F80007C000
-F80007C000F80007C000F80007C000F800FFFE1FFFC0FFFE1FFFC022227FA125>72
-D<FFFEFFFE07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007
-C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0FFFEFFFE0F227F
-A112>I<FFFE0000FFFE00000F8000000F8000000F8000000F8000000F8000000F800000
-0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800000
-0F8000000F8000000F8000000F8000000F8001800F8001800F8001800F8001800F800380
-0F8003800F8003000F8007000F8007000F800F000F803F00FFFFFF00FFFFFF0019227EA1
-1E>76 D<FFFFF800FFFFFE0007C01F8007C007C007C003C007C001E007C001E007C001F0
-07C001F007C001F007C001F007C001F007C001E007C001E007C003C007C0078007C01F00
-07FFFC0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000
-07C0000007C0000007C0000007C0000007C0000007C00000FFFE0000FFFE00001C227FA1
-21>80 D<FFFFF00000FFFFFE000007C01F000007C007800007C003C00007C003E00007C0
-01F00007C001F00007C001F00007C001F00007C001F00007C001E00007C003E00007C003
-C00007C007800007C01E000007FFF0000007C03C000007C01E000007C00F000007C00F80
-0007C007C00007C007C00007C007C00007C007C00007C007C00007C007C00007C007C000
-07C007C00007C007C0C007C007C0C007C003C0C0FFFE01E180FFFE00F1000000003E0022
-237FA124>82 D<FFFE03FFC0FFFE03FFC007C0003C0007C000180007C000180007C00018
-0007C000180007C000180007C000180007C000180007C000180007C000180007C0001800
-07C000180007C000180007C000180007C000180007C000180007C000180007C000180007
-C000180007C000180007C000180007C000180007C000180007C000180003C000300003E0
-00300001E000300001E000600000F000C0000078018000003E070000000FFE00000003F8
-000022237FA125>85 D<FFF83FFE07FEFFF83FFE07FE1F8003F001F80F8003E000600F80
-03F000600FC003F000E007C003F000C007C003F000C007E006F800C003E006F8018003E0
-06F8018003E00C7C018001F00C7C030001F00C7C030001F01C7E030001F8183E070000F8
-183E060000F8183E060000FC301F0600007C301F0C00007C301F0C00007C600F8C00003E
-600F9800003E600F9800003EE00FD800003FC007F800001FC007F000001FC007F000001F
-8003F000000F8003E000000F8003E000000F0001E00000070001C00000070001C0000007
-0001C0002F237FA132>87 D<1FF000383C007C0E007C0F007C0780380780000780000780
-00FF8007C7801E07803C0780780780700780F00798F00798F00798F00F987817983C23F0
-0FC1E015157E9418>97 D<0F0000FF0000FF00001F00000F00000F00000F00000F00000F
-00000F00000F00000F00000F00000F00000F3F000F61C00F80600F00300F00380F003C0F
-001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00380F00700F
-80600E61C00C3F0017237FA21B>I<01FE000707000C0F801C0F80380F80780700700000
-F00000F00000F00000F00000F00000F00000F000007000007800C03800C01C01800C0300
-07060001F80012157E9416>I<0001E0001FE0001FE00003E00001E00001E00001E00001
-E00001E00001E00001E00001E00001E00001E001F9E00707E00C03E01C01E03801E07801
-E07001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001E07801E03801E01801
-E00C03F0070DFE01F1FE17237EA21B>I<01FC000707000C03801C01C03801C07801E070
-00E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800603800601C00C00E
-018007070000FC0013157F9416>I<003E0000E18003C3C00387C00787C00F03800F0000
-0F00000F00000F00000F00000F00000F00000F0000FFF800FFF8000F00000F00000F0000
-0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
-0F00000F0000FFF000FFF000122380A20F>I<0000F003F1180E1E381C0E383807303807
-007807807807807807807807803807003807001C0E001E1C0033F0002000002000003000
-003800003FFE001FFFC00FFFE03801F0700070E00038E00038E00038E000386000307000
-703800E00E038003FE0015217F9518>I<0F0000FF0000FF00001F00000F00000F00000F
-00000F00000F00000F00000F00000F00000F00000F00000F0F800F31C00F40E00F80F00F
-80F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F
-00F00F00F00F00F0FFF3FFFFF3FF18237FA21B>I<0E001F001F001F000E000000000000
-00000000000000000000000F007F007F001F000F000F000F000F000F000F000F000F000F
-000F000F000F000F000F000F00FFE0FFE00B2280A10D>I<0F00FF00FF001F000F000F00
-0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
-0F000F000F000F000F000F000F000F000F00FFF0FFF00C2380A20D>108
-D<0F0FC07E00FF30E18700FF407203801F807C03C00F807C03C00F007803C00F007803C0
-0F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F007803C00F
-007803C00F007803C00F007803C00F007803C00F007803C0FFF3FF9FFCFFF3FF9FFC2615
-7F9429>I<0F0F80FF31C0FF40E01F80F00F80F00F00F00F00F00F00F00F00F00F00F00F
-00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0FFF3FFFFF3FF18157F94
-1B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078
-F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418>
-I<0F3F00FF61C0FF80600F00700F00380F003C0F003C0F001E0F001E0F001E0F001E0F00
-1E0F001E0F001E0F003C0F003C0F00380F00700F80E00F61C00F3F000F00000F00000F00
-000F00000F00000F00000F00000F0000FFF000FFF000171F7F941B>I<01F860070CE00E
-02E01C03E03801E07801E07801E0F001E0F001E0F001E0F001E0F001E0F001E0F001E078
-01E07801E03801E01C03E00C03E0070DE001F1E00001E00001E00001E00001E00001E000
-01E00001E00001E0001FFE001FFE171F7E941A>I<0F1E00FF2300FF47801F87800F8300
-0F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
-0F00000F0000FFF800FFF8001115809413>I<0FC8307860386018E018E018F000FC007F
-C03FE01FF007F8007CC03CC01CC01CE01CE018F038D8708FC00E157E9413>I<06000600
-06000600060006000E000E000E001E003FFCFFFC1E001E001E001E001E001E001E001E00
-1E001E001E0C1E0C1E0C1E0C1E0C1E0C0F18071001E00E1F7F9E13>I<0F00F0FF0FF0FF
-0FF01F01F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F
-00F00F00F00F01F00F01F00702F80386FF00F8FF18157F941B>I<FFC1FEFFC1FE1F00F8
-0F00600F00600780C00780C00780C003C18003C18003E38001E30001E30000F60000F600
-00F600007C00007C00007C00003800003800003000003000007000006000F86000F8C000
-F8C000F980006300003E0000171F7F941A>121 D<3FFFC03C0780380F80300F00701E00
-603E00603C0060780000F80000F00001E00003C00007C0C00780C00F00C01F01C01E0180
-3C01807C0380780780FFFF8012157F9416>I<FFFFFFFFFFFF3001808C31>124
-D E /Fv 21 118 df<78FCFCFCFC7806067A8512>46 D<007F800001FFE0000781F8000E
-007C0018003E0030001F0030000F8060000FC0600007C0F80007C0FC0007E0FE0007E0FE
-0003E0FE0003E0FE0003E07C0007E0000007E0000007C0000007C000000FC000000F8000
-000F8000001F0000003E0000003C00000078000000F8000000F0000001E0000003C00000
-070000000E0000001C000000180000003000000060000000C00060018000600380006007
-0000C00E0000C00C0000C0180001C03FFFFFC07FFFFF80FFFFFF80FFFFFF801B2F7DAE21
->50 D<00001C0000001C0000003C0000003C0000007C000000FC000000FC000001BC0000
-03BC0000033C0000073C0000063C00000C3C00001C3C0000183C0000303C0000303C0000
-603C0000E03C0000C03C0001803C0003803C0003003C0007003C0006003C000C003C001C
-003C0018003C0030003C0030003C0060003C00E0003C00FFFFFFF8FFFFFFF800003C0000
-003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000
-007E00000FFFF0000FFFF01D2F7EAE21>52 D<FFFFC00000FFFFC0000007F000000003E0
-00000003E000000003E000000003E000000003E000000003E000000003E000000003E000
-000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
-0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
-03E000000003E000000003E000000003E000000003E000000003E000000003E000006003
-E000006003E000006003E000006003E00000C003E00000C003E00000C003E00000C003E0
-0001C003E00001C003E00003C003E00003C003E00007C003E0000F8003E0003F8007E000
-FF80FFFFFFFF80FFFFFFFF8023317DB029>76 D<FFF00000007FF8FFF8000000FFF807F8
-000000FF0003F8000000FE00037C000001BE00037C000001BE00037C000001BE00033E00
-00033E00033E0000033E00033E0000033E00031F0000063E00031F0000063E00031F0000
-063E00030F80000C3E00030F80000C3E00030F80000C3E000307C000183E000307C00018
-3E000307C000183E000303E000303E000303E000303E000303E000303E000301F000603E
-000301F000603E000301F000C03E000300F800C03E000300F800C03E0003007C01803E00
-03007C01803E0003007C01803E0003003E03003E0003003E03003E0003003E03003E0003
-001F06003E0003001F06003E0003001F06003E0003000F8C003E0003000F8C003E000300
-0F8C003E00030007D8003E00030007D8003E00030007D8003E00030003F0003E00030003
-F0003E00030003F0003E00078001E0003E000FC001E0007F00FFFC01E00FFFF8FFFC00C0
-0FFFF835317CB03D>I<FFFFFFE000FFFFFFFC0007E0007F0003E0000F8003E00007C003
-E00003E003E00001F003E00001F803E00000F803E00000F803E00000FC03E00000FC03E0
-0000FC03E00000FC03E00000FC03E00000FC03E00000F803E00000F803E00001F803E000
-01F003E00003E003E00007C003E0000F8003E0007F0003FFFFFC0003FFFFE00003E00000
-0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
-03E000000003E000000003E000000003E000000003E000000003E000000003E000000003
-E000000003E000000003E000000003E000000003E000000007F0000000FFFF800000FFFF
-80000026317DB02D>80 D<FFFFFF000000FFFFFFF0000007E001FC000003E0003F000003
-E0000F800003E00007C00003E00003E00003E00003F00003E00003F00003E00001F00003
-E00001F80003E00001F80003E00001F80003E00001F80003E00001F80003E00001F00003
-E00003F00003E00003F00003E00003E00003E00007C00003E0000F800003E0003F000003
-E001FC000003FFFFF0000003FFFFC0000003E001F0000003E0007C000003E0003E000003
-E0001F000003E0000F000003E0000F800003E00007800003E00007C00003E00007C00003
-E00007C00003E00007C00003E00007C00003E00007E00003E00007E00003E00007E00003
-E00007E00003E00007E00003E00007E01803E00007F01803E00003F01803E00003F01807
-F00001F830FFFF8000F870FFFF80007FE0000000000F802D327CB031>82
-D<03FE00000FFFC0001E03E0003F00F0003F0078003F003C001E001C000C001E0000001E
-0000001E0000001E0000001E000001FE00003FFE0001FF1E0007F01E000F801E001F001E
-003E001E007C001E007C001E00F8001E0CF8001E0CF8001E0CF8003E0CF8003E0C7C007E
-0C3E00DF1C1F038FB80FFF07F003F803C01E1F7D9E21>97 D<001FF00000FFFC0001F01E
-0007C03F000F003F000F003F001E001E003C000C003C0000007C00000078000000F80000
-00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007C0000
-007C0000003C0000003E0001801E0001800F0003000F80070007C00E0001F81C0000FFF0
-00001FC000191F7E9E1D>99 D<003F800000FFE00003E0F80007803C000F001E001E001E
-001E000F003C000F007C000F007C000F8078000780F8000780FFFFFF80FFFFFF80F80000
-00F8000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0001
-801E0001800F0003000F80060007C00E0001F0380000FFF000001FC000191F7E9E1D>
-101 D<0003F0000FF8003C3C00787E00F07E01E07E01E03C01C01803C00003C00003C000
-03C00003C00003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C000
-03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
-03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
-07E0007FFF007FFF0017327FB114>I<000000F0007F03F801FFCF1C03C1FC3C0780F83C
-0F0078181F007C001E003C003E003E003E003E003E003E003E003E003E003E003E003E00
-3E003E001E003C001F007C000F0078000780F0000FC1E0000DFFC0001C7F000018000000
-180000001C0000001C0000001E0000000FFFF8000FFFFF0007FFFF800FFFFFC01E0007E0
-380001F07000007070000078E0000038E0000038E0000038E0000038E000003870000070
-780000F03C0001E01E0003C007C01F0001FFFC00003FE0001E2F7E9F21>I<0780000000
-FF80000000FF800000000F80000000078000000007800000000780000000078000000007
-800000000780000000078000000007800000000780000000078000000007800000000780
-0000000780000000078000000007800000000781FE00000787FF8000078E07C000079803
-E00007B001E00007E000F00007C000F00007C000F00007C000F000078000F000078000F0
-00078000F000078000F000078000F000078000F000078000F000078000F000078000F000
-078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
-8000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF8021327EB125>I<
-0F001F801F801F801F800F00000000000000000000000000000000000000000000000780
-7F807F800F80078007800780078007800780078007800780078007800780078007800780
-0780078007800780078007800780078007800FC0FFF8FFF80D307EAF12>I<0780FF80FF
-800F80078007800780078007800780078007800780078007800780078007800780078007
-800780078007800780078007800780078007800780078007800780078007800780078007
-80078007800780078007800780078007800FC0FFFCFFFC0E327EB112>108
-D<0781FE003FC000FF87FF80FFF000FF8E07C1C0F8000F9803E3007C0007B001E6003C00
-07E000FC001E0007C000F8001E0007C000F8001E0007C000F8001E00078000F0001E0007
-8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
-00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
-F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
-001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83
-FFF0341F7E9E38>I<0781FE0000FF87FF8000FF8E07C0000F9803E00007B001E00007E0
-00F00007C000F00007C000F00007C000F000078000F000078000F000078000F000078000
-F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
-00078000F000078000F000078000F000078000F000078000F000078000F000078000F000
-078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000FFF80001
-E03C0007800F000F0007801E0003C01E0003C03C0001E03C0001E0780000F0780000F078
-0000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F878
-0000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007C01F0001F07C0000
-FFF800001FC0001D1F7E9E21>I<0783E0FF8FF8FF9C7C0FB87C07F07C07E03807E00007
-C00007C00007C00007800007800007800007800007800007800007800007800007800007
-80000780000780000780000780000780000780000780000780000FC000FFFE00FFFE0016
-1F7E9E19>114 D<00C00000C00000C00000C00000C00001C00001C00001C00003C00003
-C00007C0000FC0001FC000FFFFE0FFFFE003C00003C00003C00003C00003C00003C00003
-C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C03003C03003
-C03003C03003C03003C03003C03003C03001E06001E06000F0C0007F80001F00142C7FAB
-19>116 D<078000F000FF801FF000FF801FF0000F8001F000078000F000078000F00007
-8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
-00F000078000F000078000F000078000F000078000F000078000F000078000F000078000
-F000078000F000078000F000078001F000078001F000078003F000038007F00003C00EF0
-0001F03CF80000FFF0FF80003FC0FF80211F7E9E25>I E end
+00FE0000FE0000FE0000FE0000FE0001FE0000FE0001FE0000FE0003FE0000FE0007FE00
+00FF000FFE00007FC07FFFF8007FFFFFFFFC003FFFFFFFFE001FFFFFFFFE000FFFFEFFFC
+0007FFF87FF80000FFC000002F2880A630>I<3FFFC07FFF807FFFE0FFFFC0FFFFE0FFFF
+E0FFFFE0FFFFE07FFFE0FFFFC03FFFC07FFF8001F80003F00001F80003F00001FC0007F0
+0000FC0007E00000FC0007E00000FE000FE000007E000FC000007E000FC000007F001FC0
+00003F001F8000003F001F8000003F803F8000001F803F0000001F803F0000001FC07F00
+00000FC07E0000000FC07E0000000FE0FE00000007E0FC00000007E0FC00000007F1FC00
+000003F1F800000003F1F800000003F1F800000001FBF000000001FBF000000001FBF000
+000001FFF000000000FFE000000000FFE000000000FFE0000000007FC0000000003F8000
+002B277EA630>I<3FFFC01FFFE07FFFE03FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFE03F
+FFF03FFFC01FFFE007E000003F0007E000003F0007F000007F0003F000007E0003F00000
+7E0003F000007E0003F000007E0003F000007E0003F80000FE0001F80000FC0001F80F80
+FC0001F81FC0FC0001F83FE0FC0001F83FE0FC0001F83FE0FC0000FC7FF1F80000FC7FF1
+F80000FC7DF1F80000FC7DF1F80000FCFDF9F800007CFDF9F000007CF8F9F000007CF8F9
+F000007CF8F9F000007EF8FBF000007EF8FBF000003FF07FE000003FF07FE000003FF07F
+E000003FE03FE000003FE03FE000001FE03FC000000F800F80002D277FA630>I<3FFF81
+FFFC007FFFC3FFFE00FFFFC3FFFF00FFFFC3FFFF007FFFC3FFFE003FFF81FFFC0000FE00
+7F0000007F007F0000007F80FE0000003F81FC0000001FC3F80000000FE3F80000000FE7
+F000000007FFE000000003FFC000000001FFC000000000FF8000000000FF00000000007E
+00000000007F0000000000FF0000000001FF8000000001FFC000000003F7E000000007E7
+E00000000FE3F00000000FC1F80000001F81FC0000003F80FE0000007F007E0000007E00
+7F000000FE003F800001FC001FC0007FFF80FFFF00FFFFC1FFFF80FFFFE3FFFF80FFFFE3
+FFFF80FFFFC1FFFF807FFF80FFFF0029277DA630>I<3FFFC07FFF807FFFE0FFFFC0FFFF
+E0FFFFE0FFFFE0FFFFE07FFFE0FFFFC03FFFC07FFF8001FC0003F00001FC0003F00000FC
+0007F00000FE0007E000007E0007E000007E000FE000007F000FC000003F000FC000003F
+001FC000001F801F8000001F801F8000001FC01F8000000FC03F0000000FC03F0000000F
+E03F00000007E07E00000007E07E00000003F07E00000003F07C00000003F0FC00000001
+F8FC00000001F8F800000001F8F800000000F9F800000000FDF0000000007DF000000000
+7FF0000000007FF0000000003FE0000000003FE0000000003FE0000000001FC000000000
+1FC0000000001FC0000000001F80000000001F80000000003F80000000003F0000000000
+3F00000000007F00000000007E00000000007E0000000F00FE0000001F80FC0000003FC1
+FC0000003FC3F80000003F87F80000003F8FF00000003FFFE00000001FFFC00000001FFF
+800000000FFF0000000007FE0000000001F0000000002B3C7EA630>I<1FFFFFFFFC3FFF
+FFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFC7F00000FF87F00001FF07F0000
+3FE07F00007FC07F0000FF803E0001FF00000003FE00000007FC0000000FF80000001FF0
+0000003FE00000007FC0000000FF80000001FF00000003FE00000007FC0000000FF80000
+001FF00000003FE00000007FC0000000FF80003E01FF00007F03FE00007F07FC00007F0F
+F800007F1FF000007F3FE000007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF7FFFFFFFFE28277DA630>I<0000003FF0000003FFF800000FFFF800001FFFF800
+007FFFF800007FFFF00000FFF0000000FF00000001FE00000001FC00000001FC00000001
+FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC
+00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00
+000001FC00000001FC00000001FC00000003FC00000007F80000003FF800003FFFF00000
+FFFFE00000FFFFC00000FFFF000000FFFFC00000FFFFE000003FFFF00000003FF8000000
+07F800000003FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001
+FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC
+00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00
+000001FE00000000FF00000000FFF00000007FFFF000007FFFF800001FFFF800000FFFF8
+000003FFF80000003FF025477BBE30>I<7C7CFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE
+FEFEFEFEFEFEFEFEFEFEFEFEFEFE7C7C07476CBE30>I<7FE0000000FFFE000000FFFF80
+0000FFFFC00000FFFFF000007FFFF00000007FF800000007F800000003FC00000001FC00
+000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000
+0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000
+01FC00000001FC00000001FC00000001FC00000001FC00000001FE00000000FF00000000
+FFE00000007FFFE000003FFFF800001FFFF8000007FFF800001FFFF800003FFFF800007F
+FFE00000FFE0000000FF00000001FE00000001FC00000001FC00000001FC00000001FC00
+000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000
+0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000
+01FC00000001FC00000003FC00000007F80000007FF800007FFFF00000FFFFF00000FFFF
+C00000FFFF800000FFFE0000007FE000000025477BBE30>I<007C003801FF007C03FF80
+FE07FFC1FE0FFFC3FE1FFFEFFC7FEFFFF0FF87FFE0FF07FFC0FE03FF807C01FF0038007C
+001F0C78B730>I E /Fo 39 122 df<0000000007FF80000000003FFFE000000000FE00
+F800000001F0003E00000007E0000E0000000FC0001F0000000F80007F0000001F8000FF
+0000003F0000FF0000003F0000FF0000003F0000FE0000007E0000FE0000007E00007800
+00007E000000000000FE000000000000FC000000000000FC000000000000FC0000000000
+01FC000000000001FC000000000001F8000000000001F8000000000001F8000000000001
+F8000000000003F80000000003FFFFFFFFF00003FFFFFFFFF00003FFFFFFFFE0000003F0
+0007E0000007F0000FE0000007E0000FC0000007E0000FC0000007E0000FC0000007E000
+1FC000000FE0001F8000000FC0001F8000000FC0001F8000000FC0003F8000000FC0003F
+0000001FC0003F0000001F80003F0000001F80007F0000001F80007E0000001F80007E00
+00003F80007E0000003F0000FE0000003F0000FC0000003F0000FC0000003F0000FC0000
+007F0001FC0000007E0001F81C00007E0001F81C00007E0001F81C00007E0003F81C0000
+FE0003F03C0000FC0003F0380000FC0003F0380000FC0003F0780000FC0003F0700001FC
+0003F0700001F80001F0F00001F80001F0E00001F80000F1C00001F800007F800003F000
+001F000003F0000000000003F0000000000003F0000000000003E0000000000007E00000
+00000007E0000000001E07C0000000007F07C0000000007F0FC000000000FF0F80000000
+00FF0F8000000000FF1F0000000000FE1F0000000000F81E0000000000703C0000000000
+787800000000001FF0000000000007C00000000000385383BF33>12
+D<0000000007FC00007FF800000000003FFF8003FFFF0000000000FC03C00FE007C00000
+0003F001E03F0001F000000007E001F07C0000700000000FC007F0F80000F80000000F80
+0FF1F80003F80000001F800FF3F00007F80000001F800FF3F00007F80000003F000FF7E0
+0007F80000003F000FE7E00007F00000003F00038FC00007F00000007E00000FC00003C0
+0000007E00000FC00000000000007E00000FC00000000000007E00001FC0000000000000
+FE00001F80000000000000FC00001F80000000000000FC00001F80000000000000FC0000
+3F80000000000000FC00003F80000000000001FC00003F00000000000001F800003F0000
+0000000001F800003F00000000000001F800003F000000000001FFFFFFFFFFFFFFFF8000
+03FFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFF00000003F000007E00003F00000003F0
+00007E00007F00000003F00000FE00007E00000007F00000FC00007E00000007E00000FC
+00007E00000007E00000FC0000FE00000007E00000FC0000FC00000007E00001FC0000FC
+0000000FE00001F80000FC0000000FC00001F80001FC0000000FC00001F80001F8000000
+0FC00001F80001F80000000FC00003F80001F80000001FC00003F00003F80000001F8000
+03F00003F00000001F800003F00003F00000001F800003F00003F00000001F800007F000
+07F00000003F800007E00007E00000003F800007E00007E00000003F000007E00007E000
+00003F000007E0000FE00000003F00000FE0000FC0E000003F00000FC0000FC0E000007F
+00000FC0000FC0E000007E00000FC0001FC0E000007E00000FC0001F81E000007E00000F
+C0001F81C000007E00001FC0001F81C00000FE00001F80001F83C00000FC00001F80001F
+83800000FC00001F80001F83800000FC00003F80000F87800000FC00003F00000F870000
+01F800003F0000078E000001F800003F000003FC000001F800003F000000F8000001F800
+007E00000000000003F000007E00000000000003F000007E00000000000003F000007C00
+000000000003F00000FC00000000000003E00000FC00000000001E07E07800F800000000
+007F07E1FC01F800000000007F07C1FC01F80000000000FF0FC3FC01F00000000000FF0F
+83FC03E00000000000FF0F83FC07E00000000000FE1F03F807C00000000000F81E03E00F
+800000000000703C01C01E000000000000787800F07C0000000000001FF0007FF0000000
+00000007C0001FC0000000000000555383BF50>14 D<00003C0000FE0001FF0003FF0003
+FF0003FF0003FF0003FE0007FE0007FE0007FC0007FC0007FC0007F8000FF8000FF8000F
+F0000FF0000FF0000FE0001FE0001FE0001FC0001FC0001FC0001F80003F80003F80003F
+00003F00003F00003E00007E00007E00007C00007C00007C0000780000F80000F80000F0
+0000F00000F00000E00001E00001E00000C0000000000000000000000000000000000000
+000000000000000F00003FC0007FC0007FC000FFC000FFC000FFC000FF80007F00003C00
+00184177C01C>33 D<01E000F007F803FC0FF807FC0FFC07FE1FFC0FFE1FFC0FFE1FFC0F
+FE1FFC0FFE0FFC07FE03D801EC0018000C0018000C0038001C0030001800700038006000
+3000E0007000C0006001C000E0038001C003000180070003800E0007001C000E0038001C
+0070003800E0007000C00060001F1C70BE2F>I<0F003FC07FC07FC0FFC0FFC0FFC0FF80
+7F003C000A0A77891C>46 D<00000003000000070000000F0000001F0000001E0000003E
+0000007E000001FE000003FC000007FC00001FFC0001FFFC000FFBF8001FC3F8000E07F8
+000007F8000007F0000007F000000FF000000FF000000FE000000FE000001FE000001FE0
+00001FC000001FC000003FC000003FC000003F8000003F8000007F8000007F8000007F00
+00007F000000FF000000FF000000FE000000FE000001FE000001FE000001FC000001FC00
+0003FC000003FC000003F8000003F8000007F8000007F8000007F0000007F000000FF000
+000FF000000FE000000FE000001FE000001FE000001FC000007FE000FFFFFFF0FFFFFFF0
+FFFFFFE0203D77BC2E>49 D<0000000FE00000007FF8000001F01C000007C00E00001F80
+0F00003E000700007C001F0000F8007F0001F000FF0003F000FF0007E000FF000FC000FE
+001FC000FE003F800078003F000000007F00000000FE00000000FE00000001FC00000001
+FC00000003FC00000003F800000007F81FC00007F87FF0000FF1E07C000FF3803E000FF7
+003E001FFE001F001FFC001F801FF8001F801FF0000FC03FF0000FC03FE0000FC03FE000
+1FC03FC0001FE07FC0001FE07FC0001FE07F80001FE07F80003FC07F80003FC0FF00003F
+C0FF00003FC0FF00007FC0FF00007F80FE00007F80FE00007F80FE0000FF80FE0000FF00
+FE0000FF00FE0001FE00FE0001FE00FC0001FC007C0003F8007C0003F8007E0007F0007E
+000FE0003E001FC0003F003F80001F807E00000FC1FC000007FFF8000003FFE00000007F
+000000283F76BC2E>54 D<0000007F00000001FFE0000007C0F000001F007C00003C003C
+000078003E0000F0001F0001F0001F0003E0001F0003C0001F0007C0001F0007C0001F00
+0F80001F000F80001F000F80003F001F80003E001F80003E001F80007E001FC0007C001F
+C000F8001FE001F8001FF001F0001FF803E0001FFC07C0000FFE0F00000FFFBE000007FF
+F8000003FFF0000001FFF0000000FFF8000000FFFC000003FFFE00000F9FFF00001F0FFF
+80007C07FFC000F803FFC001F001FFE003E0007FE007C0003FE00F80001FE01F80000FE0
+1F00000FE03E000007E03E000007E07E000007E07C000007E07C000007E0FC000007C0F8
+000007C0F8000007C0F800000F80F800000F80F800001F00F800003E007C00003C007C00
+007C007E0000F8003F0003F0001F8007C0000FE03F800007FFFE000001FFF80000003FC0
+0000283F78BC2E>56 D<001E00003F80007F8000FFC001FFC001FFC001FF8000FF0000FE
+00003C000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000F00003FC0007FC0007FC0
+00FFC000FFC000FFC000FF80007F00003C0000122777A61C>58 D<00000000FF8001C000
+00000FFFE001C00000003FFFF80380000000FF807E0780000003FC001F0F8000000FF000
+071F8000001FC00007BF0000007F800003FF000000FF000001FF000001FE000001FF0000
+03F8000000FE000007F0000000FE00000FF0000000FE00001FE00000007E00003FC00000
+007C00007F800000007C0000FF800000007C0000FF000000007C0001FE00000000780003
+FE00000000780003FC00000000780007FC00000000780007F80000000070000FF8000000
+0070000FF80000000070001FF00000000070001FF00000000000003FE00000000000003F
+E00000000000003FE00000000000007FE00000000000007FC00000000000007FC0000000
+0000007FC0000000000000FFC0000000000000FF80000000000000FF80000000000000FF
+80000000000000FF80000000000000FF00000000000000FF00000000000000FF00000000
+0F0000FF000000000F0000FF000000000E0000FF000000000E0000FF000000001E0000FF
+000000001C0000FF000000003C0000FF00000000380000FF000000007800007F00000000
+7000007F80000000F000007F80000001E000003F80000001C000003FC0000003C000001F
+C00000078000001FE000000F0000000FE000001E00000007F000003C00000003F80000F8
+00000001FC0001F000000000FE0007C0000000007FC03F80000000001FFFFE0000000000
+07FFF0000000000000FF80000000003A4272BF41>67 D<0001FFFFFFFFFFF00001FFFFFF
+FFFFF00001FFFFFFFFFFF0000003FE00003FF0000003FE00000FF0000003FC000003F000
+0003FC000003F0000003FC000001E0000007FC000001E0000007F8000001E0000007F800
+0001E0000007F8000001E000000FF8000001E000000FF0000001E000000FF0000001C000
+000FF0000001C000001FF0000001C000001FE0000001C000001FE0007001C000001FE000
+F003C000003FE000E0038000003FC000E0000000003FC000E0000000003FC001E0000000
+007FC001C0000000007F8003C0000000007F8003C0000000007F8007C000000000FF801F
+8000000000FFFFFF8000000000FFFFFF8000000000FFFFFF8000000001FF003F00000000
+01FE001F0000000001FE000F0000000001FE000F0000000003FE000E0000000003FC000E
+0000000003FC000E0000000003FC001E0000000007FC001C0000000007F8001C00000000
+07F8001C0000000007F80000000000000FF80000000000000FF00000000000000FF00000
+000000000FF00000000000001FF00000000000001FE00000000000001FE0000000000000
+1FE00000000000003FE00000000000003FC00000000000003FC00000000000007FC00000
+000000007FC00000000000007F80000000000000FFC00000000000FFFFFFE000000000FF
+FFFFE000000000FFFFFFE0000000003C3E7BBD3B>70 D<0001FFFE00000FFFFF0003FFFF
+00001FFFFF0003FFFF00001FFFFF000001FF800000FFC0000003FF8000003F00000003FF
+8000003E00000003FFC000001C00000003FFC000003C00000007BFC000003C000000073F
+E0000038000000071FE0000038000000071FE00000780000000F1FF00000780000000E0F
+F00000700000000E0FF80000700000000E0FF80000F00000001E07F80000F00000001C07
+FC0000E00000001C07FC0000E00000001C03FC0001E00000003C03FE0001E00000003801
+FE0001C00000003801FE0001C00000003801FF0003C00000007800FF0003C00000007000
+FF8003800000007000FF80038000000070007F800780000000F0007FC00780000000E000
+3FC00700000000E0003FC00700000000E0003FE00F00000001E0001FE00F00000001C000
+1FF00E00000001C0001FF00E00000001C0000FF01E00000003C0000FF81E000000038000
+0FF81C00000003800007F81C00000003800007FC3C00000007800003FC3C000000070000
+03FC3800000007000003FE3800000007000001FE780000000F000001FF780000000E0000
+01FF700000000E000000FF700000000E000000FFF00000001E000000FFF00000001C0000
+007FE00000001C0000007FE00000001C0000003FE00000003C0000003FE0000000380000
+003FC0000000380000001FC0000000780000001FC0000000F80000001FC0000001FC0000
+000F80000007FE0000000F800000FFFFF0000007800000FFFFF0000007800000FFFFF000
+0007000000483E7BBD44>78 D<0001FFFFFFFF80000001FFFFFFFFF0000001FFFFFFFFFC
+00000003FE0003FE00000003FE0000FF00000003FC00007F80000003FC00003FC0000007
+FC00001FC0000007FC00001FE0000007F800001FE0000007F800001FE000000FF800001F
+F000000FF800001FF000000FF000001FF000000FF000001FF000001FF000001FF000001F
+F000003FE000001FE000003FE000001FE000003FE000003FE000003FC000003FE000007F
+C000003FC000007F8000003FC000007F8000007FC00000FF0000007FC00000FE0000007F
+800001FC0000007F800003F8000000FF800007F0000000FF80000FE0000000FF00003FC0
+000000FF0001FF00000001FFFFFFFC00000001FFFFFFE000000001FE00000000000001FE
+00000000000003FE00000000000003FE00000000000003FC00000000000003FC00000000
+000007FC00000000000007FC00000000000007F800000000000007F80000000000000FF8
+0000000000000FF80000000000000FF00000000000000FF00000000000001FF000000000
+00001FF00000000000001FE00000000000001FE00000000000003FE00000000000003FE0
+0000000000003FC00000000000003FC00000000000007FC00000000000007FC000000000
+00007F80000000000000FFC00000000000FFFFFF8000000000FFFFFF8000000000FFFFFF
+80000000003C3E7BBD3E>80 D<0000000FF001C00000007FFE01C0000001FFFF03800000
+07F80FC78000000FC003EF8000001F8001FF8000003F0000FF0000007E00007F000000FC
+00007F000001F800007F000003F000003E000003F000003E000007E000003E000007E000
+003E00000FE000003C00000FC000003C00000FC000003C00000FC000003C00001FC00000
+3800001FC000003800001FC000003800001FE000003800001FE000000000001FF0000000
+00001FF000000000001FFC00000000000FFF00000000000FFFF0000000000FFFFE000000
+0007FFFFC000000003FFFFF000000001FFFFFC00000000FFFFFE000000003FFFFE000000
+000FFFFF0000000001FFFF80000000001FFF800000000003FF800000000000FFC0000000
+00007FC000000000003FC000000000003FC000000000001FC000000000001FC000070000
+001FC0000F0000001FC0000F0000001F80000E0000001F80000E0000001F80001E000000
+3F80001E0000003F00001E0000003F00001E0000003E00003E0000007E00003E0000007C
+00003F000000FC00003F000001F800007F800001F000007F800003E000007FC00007C000
+007DE0001F800000F8F8003F000000F87F00FE000000F03FFFF8000000E00FFFE0000000
+C000FF0000000032427ABF33>83 D<000C0006001C000E0078003C00E0007001C000E001
+8000C0038001C0070003800E0007000C0006001C000E0018000C0038001C003000180070
+0038006000300060003000E0007000CF006780FFC07FE0FFC07FE0FFC07FE0FFC07FE0FF
+C07FE0FFC07FE0FF807FC07F003F803C001E001F1C69BE2F>92 D<00007E00000001FF80
+000007C1C380001F80EFC0003F00FFC0007E007FC000FC007F8001F8003F8003F0003F80
+03F0003F8007E0003F000FE0003F000FC0003F001FC0007F001FC0007E003F80007E003F
+80007E003F8000FE007F8000FC007F0000FC007F0000FC007F0001FC00FF0001F800FE00
+01F800FE0001F800FE0003F800FE0003F038FC0003F038FC0003F038FC0007F038FC0007
+E078FC000FE0707C000FE0707C001FE0F07E003FE0E03E007FE0E03E00F3E1E01F01E3E1
+C00F8781E38003FF00FF0000FC003E00252977A72E>97 D<001FC0000FFFC0000FFF8000
+0FFF8000003F8000003F8000003F0000003F0000007F0000007F0000007E0000007E0000
+00FE000000FE000000FC000000FC000001FC000001FC000001F8000001F8000003F80000
+03F8000003F0000003F07E0007F1FF8007F783E007EF01F007FE01F00FF800F80FF800F8
+0FF000FC0FE0007C1FC0007C1FC0007E1F80007E1F8000FE3F8000FE3F8000FE3F0000FE
+3F0000FE7F0001FE7F0001FC7E0001FC7E0001FC7E0003FCFE0003F8FC0003F8FC0003F8
+FC0007F0FC0007F0FC0007E0F8000FE0F8000FC0F8001FC0F8001F8078003F007C003F00
+7C007E003C00FC003E01F8001E03E0000F07C00007FF000001F800001F4076BE2A>I<00
+001FE0000000FFF8000003F03E000007C00F00001F800700003F000780007E001F8000FC
+007F8001F8007F8003F0007F8007F0007F0007E0007F000FE0007E001FC00000001FC000
+00003F800000003F800000003F800000007F800000007F000000007F000000007F000000
+00FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
+FC000003007E000007007E00000F007E00001E003E00003C003E000078001F0000F0001F
+0003E0000F800F800003E07E000001FFF80000003FC00000212977A72A>I<000000003F
+800000001FFF800000001FFF000000001FFF00000000007F00000000007F00000000007E
+00000000007E0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC
+0000000001FC0000000001F80000000001F80000000003F80000000003F80000000003F0
+0000000003F00000000007F00000000007F00000000007E00000007E07E0000001FF8FE0
+000007C1CFE000001F80EFC000003F00FFC000007E007FC00000FC007FC00001F8003F80
+0003F0003F800003F0003F800007E0003F80000FE0003F00000FC0003F00001FC0007F00
+001FC0007F00003F80007E00003F80007E00003F8000FE00007F8000FE00007F0000FC00
+007F0000FC00007F0001FC0000FF0001FC0000FE0001F80000FE0001F80000FE0003F800
+00FE0003F83800FC0003F03800FC0003F03800FC0007F03800FC0007F07800FC000FE070
+007C000FE070007C001FE0F0007E003FE0E0003E007FE0E0003E00F3E1E0001F01E3E1C0
+000F8781E3800003FF00FF000000FC003E0000294077BE2E>I<00003F800001FFE00007
+E0F8001F803C003E003C00FC001E01F8001E03F0001E07F0001E0FE0003E0FC0003C1FC0
+003C3F80007C3F8000F83F8003F07F000FE07F00FF80FFFFFC00FFFFC000FE000000FE00
+0000FE000000FE000000FC000000FC000000FC000000FC000000FC000000FC000000FC00
+0006FC00000EFC00001E7C00003C7C0000783E0000F03E0001E01F0007C00F801F0007C0
+FC0001FFF000007F80001F2976A72A>I<000000007C0000000001FF0000000007C78000
+00000F83C00000001F87C00000001F1FC00000003F3FC00000003F3FC00000007E3FC000
+00007E3FC00000007E3F800000007E0E00000000FC0000000000FC0000000000FC000000
+0000FC0000000001FC0000000001F80000000001F80000000001F80000000001F8000000
+0003F80000000003F00000000003F00000000003F000000003FFFFF8000003FFFFF80000
+03FFFFF800000007E00000000007E00000000007E0000000000FE0000000000FC0000000
+000FC0000000000FC0000000000FC0000000000FC0000000001FC0000000001F80000000
+001F80000000001F80000000001F80000000003F80000000003F00000000003F00000000
+003F00000000003F00000000007F00000000007E00000000007E00000000007E00000000
+007E0000000000FE0000000000FC0000000000FC0000000000FC0000000000FC00000000
+01FC0000000001F80000000001F80000000001F80000000001F80000000003F000000000
+03F00000000003F00000000003F00000000007E00000000007E00000000007E000000000
+07E0000000000FC00000001E0FC00000007F0FC00000007F0F80000000FF0F80000000FF
+1F00000000FF1F00000000FE1E00000000F83C00000000703C000000007878000000003F
+E0000000000F80000000002A5383BF1C>I<000003F00000000FFC0000003E0E1C0000FC
+077E0001F003FE0003F003FE0007E001FE000FC001FC001F8001FC001F8001FC003F0001
+FC007F0001F8007E0001F800FE0003F800FE0003F801FC0003F001FC0003F001FC0007F0
+03FC0007F003F80007E003F80007E003F8000FE007F8000FE007F0000FC007F0000FC007
+F0001FC007F0001FC007F0001F8007E0001F8007E0003F8003E0003F8003E0007F0003F0
+00FF0003F000FF0001F001FF0000F003FE0000F80F7E00007C1EFE00001FF8FE000007E0
+FC00000000FC00000001FC00000001FC00000001F800000001F800000003F800000003F8
+00000003F0001C0007F0007F0007E000FF000FE000FF000FC000FF001F8000FF003F0000
+FE007E0000F800FC00007C03F000001FFFC0000003FE000000273B7CA72A>I<0001FC00
+0000FFFC000000FFF8000000FFF800000003F800000003F800000003F000000003F00000
+0007F000000007F000000007E000000007E00000000FE00000000FE00000000FC0000000
+0FC00000001FC00000001FC00000001F800000001F800000003F800000003F800000003F
+000000003F03F800007F0FFE00007F3E0F80007E780FC0007EE007C000FFC007E000FF80
+07E000FF0007E000FF0007E001FE0007E001FC0007E001FC0007E001F80007E003F8000F
+E003F8000FC003F0000FC003F0000FC007F0001FC007F0001F8007E0001F8007E0001F80
+0FE0003F800FE0003F000FC0003F000FC0007F001FC0007E001FC000FE071F8000FC071F
+8000FC073F8001FC0F3F8001F80E3F0001F80E3F0001F81E7F0001F01C7F0001F01C7E00
+01F0387E0001F038FE0001F070FE0000F0E0FC00007FC03800001F0028407ABE2E>I<00
+00780001FC0001FC0003FC0003FC0003FC0003F80000E000000000000000000000000000
+0000000000000000000000000000000000000000000000000000007C0001FF00038F8007
+07800E07C01E07C01C07C03C0FC0380FC0380FC0781FC0701F80701F80F03F80F03F0000
+3F00007F00007E0000FE0000FC0000FC0001FC0001F80001F80003F80003F00003F03807
+F03807E0380FE0780FC0700FC0700FC0F00F80E00F80E00F81C00F83C00F838007870003
+FE0000F800163E79BC1C>I<00000007000000001FC00000001FC00000003FC00000003F
+C00000003FC00000003F800000000E000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000007C00000003FF000000078F8000000E07C000001C07C000003
+C07C000003807E000007007E000007007E00000E00FE00000E00FC00001E00FC00001C00
+FC00003C01FC00003C01FC00000001F800000001F800000003F800000003F800000003F0
+00000003F000000007F000000007F000000007E000000007E00000000FE00000000FE000
+00000FC00000000FC00000001FC00000001FC00000001F800000001F800000003F800000
+003F800000003F000000003F000000007F000000007F000000007E000000007E00000000
+FE00000000FE00000000FC00000000FC00000001FC00000001F800000001F800001C01F8
+00007F03F00000FF03F00000FF07E00000FF07C00000FF0F800000FE1F000000F83E0000
+00707C0000003FF00000000FC0000000225083BC1C>I<0001FC000000FFFC000000FFF8
+000000FFF800000003F800000003F800000003F000000003F000000007F000000007F000
+000007E000000007E00000000FE00000000FE00000000FC00000000FC00000001FC00000
+001FC00000001F800000001F800000003F800000003F800000003F000000003F0003E000
+7F000FF8007F003C3C007E00707C007E00E1FC00FE01C1FC00FE0383FC00FC0703FC00FC
+0E03FC01FC1C03F801FC3800E001F870000001F860000003F8E0000003F9C0000003F780
+000003FE00000007FE00000007FFE0000007E7F8000007E0FE00000FE07F00000FE03F80
+000FC01F80000FC00FC0001FC00FC0001FC00FC0701F800FC0701F800FC0703F800FC0F0
+3F801FC0E03F001F80E03F001F80E07F001F81E07F001F81C07E000F83C07E000F8380FE
+000F8780FE00078F00FC0003FE00380000F80026407ABE2A>I<0007F003FFF003FFE003
+FFE0000FE0000FE0000FC0000FC0001FC0001FC0001F80001F80003F80003F80003F0000
+3F00007F00007F00007E00007E0000FE0000FE0000FC0000FC0001FC0001FC0001F80001
+F80003F80003F80003F00003F00007F00007F00007E00007E0000FE0000FE0000FC0000F
+C0001FC0001FC0001F80001F80003F80003F80003F00003F00007F00007F07007E07007E
+0700FE0F00FE0E00FC0E00FC0E00FC1E00FC1C00FC1C007C38007C78003C70001FE00007
+8000144079BE17>I<01F0003F80007F000007FC01FFE003FFC0000F3E07C1F80F83F000
+0E1F0F00FC1E01F8001E1F1C007C3800F8001C1F38007E7000FC003C1FF0007EE000FC00
+381FF0007FE000FC00381FE0007FC000FC00783FC0007F8000FC00703FC0007F8000FC00
+703F80007F0000FC00703F00007E0000FC00F03F0000FE0001FC00F07F0000FC0001F800
+007E0000FC0001F800007E0000FC0001F800007E0001FC0003F80000FE0001FC0003F000
+00FC0001F80003F00000FC0001F80003F00000FC0003F80007F00001FC0003F80007E000
+01F80003F00007E00001F80003F0000FE00001F80007F0000FC00003F80007F0001FC0E0
+03F00007E0001F80E003F00007E0001F80E003F0000FE0003F81E007F0000FE0003F01C0
+07E0000FC0003F01C007E0000FC0003F01C007E0001FC0003E03800FE0001FC0003E0380
+0FC0001F80003E07000FC0001F80003E07000FC0003F80003E0E001FC0003F80001E1C00
+1F80003F00000FF8000700000E000003E000432979A74A>I<01F0003F800007FC01FFE0
+000F3E07C1F8000E1F0F00FC001E1F1C007C001C1F38007E003C1FF0007E00381FF0007E
+00381FE0007E00783FC0007E00703FC0007E00703F80007E00703F00007E00F03F0000FE
+00F07F0000FC00007E0000FC00007E0000FC00007E0001FC0000FE0001F80000FC0001F8
+0000FC0001F80000FC0003F80001FC0003F00001F80003F00001F80007F00001F80007E0
+0003F8000FE07003F0000FC07003F0000FC07003F0001FC0F007F0001F80E007E0001F80
+E007E0001F81E007E0001F01C00FE0001F01C00FC0001F03800FC0001F03800FC0001F07
+001FC0000F0E001F800007FC0007000001F0002C2979A733>I<00001FC0000000FFF800
+0003F07C00000FC01F00001F801F00003F000F80007E000FC000FC0007C001F80007E003
+F00007E007F00007E007E00007E00FE00007F01FC00007F01FC00007F03F800007F03F80
+0007F03F80000FE07F80000FE07F00000FE07F00000FE07F00001FE0FF00001FC0FE0000
+1FC0FE00001FC0FE00003F80FE00003F80FE00007F00FE00007F00FC00007E007C0000FC
+007E0001FC007E0001F8007E0003F0003E0007E0001F000FC0001F001F80000F803E0000
+07C0FC000001FFF00000003F800000242977A72E>I<0003E001F800000FF807FE00001E
+7C1E0F80001C3E3C07C0003C3E7807C000383EE003E000783FE003E000703FC003F00070
+3F8001F000F07F0001F000E07F0001F800E07E0001F800E07E0003F801E0FE0003F801E0
+FE0003F80000FC0003F80000FC0003F80001FC0007F80001FC0007F00001F80007F00001
+F80007F00003F8000FF00003F8000FE00003F0000FE00003F0000FE00007F0001FC00007
+F0001FC00007E0001F800007E0003F80000FE0003F00000FE0007F00000FE0007E00000F
+E000FC00001FE000FC00001FE001F800001FF003F000001FF007E000003FB80F8000003F
+9C1F0000003F0FFC0000003F03E00000007F00000000007F00000000007E00000000007E
+0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC0000000001FC
+0000000001F80000000001F80000000003F80000000003F8000000007FFFE0000000FFFF
+E0000000FFFFE00000002D3A80A72E>I<01F000FC0007FC07FF800F3E0F03C00E1F1C03
+E01E1F380FE01C1F700FE03C1FE01FE0381FE01FE0381FC01FE0783FC01FC0703F800700
+703F800000703F000000F03F000000F07F000000007E000000007E000000007E00000000
+FE00000000FC00000000FC00000000FC00000001FC00000001F800000001F800000001F8
+00000003F800000003F000000003F000000003F000000007F000000007E000000007E000
+000007E00000000FE00000000FC00000000FC00000000FC00000001FC00000001F800000
+000700000000232979A726>114 D<00007F800001FFE00007C0F8001F003C003E001C00
+3C001E007C003E00F8007E00F800FE00F800FE01F800FC01F800FC01F8007001FC000001
+FE000001FFC00001FFFC0000FFFF0000FFFF80007FFFC0003FFFE0000FFFF00000FFF000
+000FF0000007F0000003F00C0003F03F0003F07F8001F07F8003F0FF0003E0FF0003E0FF
+0003E0FC0007C0F0000F8070000F8078001F003C003C001F01F80007FFE00000FF00001F
+297AA725>I<0001C0000003F0000007F0000007F0000007E0000007E000000FE000000F
+E000000FC000000FC000001FC000001FC000001F8000001F8000003F8000003F8000003F
+0000003F00007FFFFF80FFFFFF80FFFFFF00007E000000FE000000FE000000FC000000FC
+000001FC000001FC000001F8000001F8000003F8000003F8000003F0000003F0000007F0
+000007F0000007E0000007E000000FE000000FE000000FC000000FC000001FC000001FC0
+1C001F801C001F801C003F803C003F8038003F0078003F0070003F00F0003F00E0003F01
+C0001F03C0001F0780000F0F000007FC000001F00000193A78B81E>I<007C0000000001
+FF00001C00038F80007E00070780007E000E07C0007E001E07C000FE001C07C000FE003C
+0FC000FC00380FC000FC00380FC001FC00781FC001FC00701F8001F800701F8001F800F0
+3F8003F800F03F0003F800003F0003F000007F0003F000007E0007F000007E0007F00000
+FE0007E00000FC0007E00000FC000FE00001FC000FE00001F8000FC00001F8000FC00001
+F8001FC00003F8001FC1C003F0001F81C003F0001F81C003F0003F81C003F0003F83C003
+F0003F038003F0003F038003F0007F078001F000FF070001F001FF070001F801DF0F0000
+F8079F0E00007C0F0F1C00001FFC07F8000007F001F0002A2979A731>I<007C0001C001
+FF0007F0038F8007F007078007F00E07C007F81E07C007F81C07C003F83C0FC003F8380F
+C001F0380FC001F0781FC000F0701F8000F0701F8000F0F03F8000F0F03F0000E0003F00
+00E0007F0000E0007E0001E0007E0001C000FE0001C000FC0001C000FC0003C001FC0003
+8001F800038001F800038001F800070003F800070003F0000F0003F0000E0003F0000E00
+03F0001C0003F0001C0003F000380003F000780001F000700001F800E00000F801C00000
+FC038000007E0F0000001FFE00000003F00000252979A72A>I<007C000000007001FF00
+007001FC038F8001F801FC07078001F801FC0E07C001F801FE1E07C003F801FE1C07C003
+F000FE3C0FC003F000FE380FC003F0007C380FC007F0007C781FC007E0003C701F8007E0
+003C701F8007E0003CF03F800FE0003CF03F000FC00038003F000FC00038007F000FC000
+38007E001FC00078007E001F80007000FE001F80007000FC001F80007000FC003F8000F0
+01FC003F0000E001F8003F0000E001F8003F0000E001F8003F0001E003F8007F0001C003
+F0007E0001C003F0007E0003C003F0007E00038003F0007E00038003F0007E00070003F0
+00FE00070003F000FE000E0001F001FE001E0001F801FF001C0000F8039F00380000FC07
+9F807000003E0F07C1E000001FFC03FFC0000003F0007F0000372979A73C>I<0003F001
+F800000FFC07FE00003C1E0E0F0000780F1C0F8000F00FB83F8001E00FF83F8001C007F0
+7F80038007F07F80078007E07F8007000FE07F000F000FE01C000E000FC000000E000FC0
+00001E001FC000001E001FC0000000001F80000000001F80000000003F80000000003F00
+000000003F00000000003F00000000007F00000000007E00000000007E00000000007E00
+00000000FE0000000000FC001C000000FC001C000000FC001C000001FC003C001E01FC00
+38003F01F80078007F81F80070007F83F800F000FF83F800E000FF077801C000FE0F7C03
+C0007C0E3C078000783C1E1E00001FF80FFC000007E003F0000029297CA72A>I<007C00
+000001FF000038038F8000FC07078000FC0E07C000FC1E07C001FC1C07C001F83C0FC001
+F8380FC001F8380FC003F8781FC003F0701F8003F0701F8003F0F03F8007F0F03F0007E0
+003F0007E0007F0007E0007E000FE0007E000FC000FE000FC000FC000FC000FC001FC001
+FC001FC001F8001F8001F8001F8001F8003F8003F8003F0003F0003F0003F0003F0003F0
+007F0003F0007E0003F0007E0003F0007E0003F000FE0003F000FC0001F001FC0001F803
+FC0000F807FC00007C1FF800003FF9F8000007E1F800000003F800000003F000000003F0
+00000007F0000E0007E0003F8007E0007F800FC0007F800FC0007F801F8000FF001F0000
+FF003E00007C007E00007000FC00007801F000003803E000001E0FC000000FFF00000003
+F8000000263B79A72C>I E /Fp 78 125 df<000001FF000FE00000001FFFE03FFC0000
+007F00F8FC1E000001FC003FF03F000007F0007FE07F80000FE000FFE0FF80001FC001FF
+C0FF80003F8001FF80FF80007F8001FF80FF80007F0001FF807F00007F0001FF003E0000
+FE0000FF00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F
+00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000
+FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F
+000000FFFFFFFFFFFF8000FFFFFFFFFFFF8000FFFFFFFFFFFF800000FE00007F00000000
+FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F
+00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000
+FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F
+00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000
+FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F
+00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000
+FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000001FF0000FF
+8000007FFFFC3FFFFF80007FFFFC3FFFFF80007FFFFC3FFFFF800039407FBF35>11
+D<000001FF000000001FFFC00000007F01F0000001FC0078000007F0001C00000FE0003E
+00001FC000FF00003F8001FF00007F8001FF00007F0001FF00007F0001FF0000FE0001FF
+0000FE0000FE0000FE0000380000FE0000000000FE0000000000FE0000000000FE000000
+0000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE000000
+0000FE00007F00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF0000FE0001FF0000FE0000FF
+0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F
+0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F
+0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F
+0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F
+0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F
+0001FF0000FF807FFFFC3FFFFE7FFFFC3FFFFE7FFFFC3FFFFE2F407FBF33>I<000001FF
+800000001FFFF70000007F00FF000001F800FF000007F001FF00000FE001FF00001FC001
+FF00003F8001FF00007F8001FF00007F0001FF00007F0000FF0000FE00007F0000FE0000
+7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000
+7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000
+7F00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF0000FE00007F0000FE00007F0000FE0000
+7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000
+7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000
+7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000
+7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000
+7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0001FF0000
+FF807FFFFC3FFFFE7FFFFC3FFFFE7FFFFC3FFFFE2F407FBF33>I<000001FF0000FF8000
+00001FFFC00FFFE00000007F01F03F80F8000001F80078FE003C000007F0003FF8000E00
+000FE0007FF0001F00001FC000FFE0007F80003F8001FFC000FF80007F8001FFC000FF80
+007F0001FF8000FF80007F0001FF8000FF8000FE0001FF0000FF8000FE0000FF00007F00
+00FE00007F00001C0000FE00007F0000000000FE00007F0000000000FE00007F00000000
+00FE00007F0000000000FE00007F0000000000FE00007F0000000000FE00007F00000000
+00FE00007F0000000000FE00007F0000000000FE00007F0000000000FE00007F00003F80
+FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FE00007F0000FF80
+00FE00007F00007F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80
+00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80
+00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80
+00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80
+00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80
+00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80
+00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80
+00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8001FF0000FF80007FC0
+7FFFFC3FFFFE1FFFFF7FFFFC3FFFFE1FFFFF7FFFFC3FFFFE1FFFFF48407FBF4C>I<003E
+003F007F00FF00FF01FE03FC07F807F00FE01FC01F803E007C00F8007000200010116EBE
+2D>19 D<1E000F007F803FC0FF807FC0FFC07FE0FFC07FE0FFE07FF0FFE07FF0FFE07FF0
+7FE03FF01E600F300060003000600030006000300060003000E0007000C0006000C00060
+00C0006001C000E0018000C0038001C003000180070003800E0007001C000E0018000C00
+38001C00300018001C1C7DBE2D>34 D<1E007F80FF80FFC0FFC0FFE0FFE0FFE07FE01E60
+006000600060006000E000C000C000C001C001800380030007000E001C00180038003000
+0B1C79BE19>39 D<0000300000700000E00001C0000380000780000F00001E00003E0000
+3C0000780000F80000F00001F00001E00003E00003E00007C00007C0000FC0000F80000F
+80001F80001F00001F00003F00003F00003F00003E00007E00007E00007E00007E00007E
+00007E00007C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
+0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00007E
+00007E00007E00007E00003E00003F00003F00003F00001F00001F00001F80000F80000F
+80000FC00007C00007C00003E00003E00001E00001F00000F00000F800007800003C0000
+3E00001E00000F000007800003800001C00000E0000070000030145A77C323>I<C00000
+E000007000003800001C00001E00000F000007800007C00003C00001E00001F00000F000
+00F800007800007C00007C00003E00003E00003F00001F00001F00001F80000F80000F80
+000FC0000FC0000FC00007C00007E00007E00007E00007E00007E00007E00003E00003F0
+0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
+0003F00003F00003F00003F00003F00003E00007E00007E00007E00007E00007E00007E0
+0007C0000FC0000FC0000FC0000F80000F80001F80001F00001F00003F00003E00003E00
+007C00007C0000780000F80000F00001F00001E00003C00007C0000780000F00001E0000
+1C0000380000700000E00000C00000145A7BC323>I<00000006000000000000000F0000
+00000000000F000000000000000F000000000000000F000000000000000F000000000000
+000F000000000000000F000000000000000F000000000000000F000000000000000F0000
+00000000000F000000000000000F000000000000000F000000000000000F000000000000
+000F000000000000000F000000000000000F000000000000000F000000000000000F0000
+00000000000F000000000000000F000000000000000F000000000000000F000000000000
+000F000000000000000F000000000000000F000000000000000F000000007FFFFFFFFFFF
+FFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE00000000F000000000000
+000F000000000000000F000000000000000F000000000000000F000000000000000F0000
+00000000000F000000000000000F000000000000000F000000000000000F000000000000
+000F000000000000000F000000000000000F000000000000000F000000000000000F0000
+00000000000F000000000000000F000000000000000F000000000000000F000000000000
+000F000000000000000F000000000000000F000000000000000F000000000000000F0000
+00000000000F000000000000000F000000000000000F0000000000000006000000003C3C
+7BB447>43 D<1E007F80FF80FFC0FFC0FFE0FFE0FFE07FE01E60006000600060006000E0
+00C000C000C001C001800380030007000E001C001800380030000B1C798919>I<FFFFFE
+FFFFFEFFFFFEFFFFFEFFFFFEFFFFFE17067F961E>I<1E007F807F80FFC0FFC0FFC0FFC0
+7F807F801E000A0A798919>I<000000018000000003C000000007C000000007C0000000
+07800000000F800000000F800000000F000000001F000000001F000000001E000000003E
+000000003E000000003C000000007C000000007C000000007800000000F800000000F800
+000000F000000001F000000001F000000001E000000003E000000003E000000003C00000
+0007C000000007C000000007800000000F800000000F800000001F000000001F00000000
+1E000000003E000000003E000000003C000000007C000000007C000000007800000000F8
+00000000F800000000F000000001F000000001F000000001E000000003E000000003E000
+000003C000000007C000000007C000000007800000000F800000000F800000000F000000
+001F000000001F000000001E000000003E000000003E000000007C000000007C00000000
+7800000000F800000000F800000000F000000001F000000001F000000001E000000003E0
+00000003E000000003C000000007C000000007C000000007800000000F800000000F8000
+00000F000000001F000000001F000000001E000000003E000000003E000000003C000000
+007C000000007C000000007800000000F800000000F800000000F0000000006000000000
+225B7BC32D>I<0001FE0000000FFFC000003F03F000007C00F80000F8007C0001F0003E
+0003E0001F0007C0000F8007C0000F800FC0000FC01F800007E01F800007E01F800007E0
+3F800007F03F800007F03F000003F07F000003F87F000003F87F000003F87F000003F87F
+000003F87F000003F8FF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF00
+0003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF0000
+03FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003
+FC7F000003F87F000003F87F000003F87F000003F87F000003F83F800007F03F800007F0
+3F800007F01F800007E01F800007E01F800007E00FC0000FC00FC0000FC007E0001F8003
+E0001F0001F0003E0000F8007C00007C00F800003F03F000000FFFC0000001FE0000263F
+7DBC2D>I<0001C0000003C0000007C000001FC000007FC00007FFC000FFFFC000FF9FC0
+00F81FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0
+00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0
+00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0
+00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0
+00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0
+00001FC000001FC000001FC000001FC000007FF000FFFFFFF8FFFFFFF8FFFFFFF81D3D78
+BC2D>I<0007FC0000003FFF800000FFFFE00003F01FF80007C007FC000F0001FE001E00
+00FF001C0000FF803C00007FC07800007FC07800003FE07000003FE0FF00003FE0FF8000
+1FF0FFC0001FF0FFC0001FF0FFC0001FF0FFC0001FF0FFC0001FF07F80001FF03F00001F
+F00C00001FF00000001FE00000003FE00000003FE00000003FC00000007FC00000007F80
+000000FF80000000FF00000001FE00000001FC00000003F800000007F000000007E00000
+000FC00000001F800000003F000000007E000000007C00000000F800000001F000000003
+E000000007C00000000F800000001F000070003E000070003C000070007800007000F000
+00E001E00000E003C00000E007800000E00F000001E01FFFFFFFE01FFFFFFFE03FFFFFFF
+E07FFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0243D7CBC2D>I<0007FC0000003FFF
+800000F80FE00001E003F800078001FC000F0001FE000E0000FF001E0000FF801F80007F
+803FC0007FC03FE0007FC03FE0007FC03FF0007FC03FE0007FC03FE0007FC01FE0007FC0
+0FC0007FC00000007F80000000FF80000000FF00000000FF00000001FE00000001FE0000
+0003FC00000003F800000007E00000000FC00000003F0000001FFC0000001FFF80000000
+0FE000000007F800000003FC00000001FE00000000FF00000000FF800000007FC0000000
+7FC00000007FE00000003FE00000003FE00000003FF00000003FF00C00003FF03F00003F
+F07F80003FF0FFC0003FF0FFC0003FF0FFC0003FF0FFC0003FE0FFC0003FE0FF80007FE0
+7F00007FC07800007FC0780000FF803C0000FF801E0001FF000F0003FE0007C007FC0003
+F80FF00000FFFFE000003FFF80000007F80000243F7CBC2D>I<0000000E000000001E00
+0000003E000000003E000000007E000000007E00000000FE00000001FE00000001FE0000
+0003FE000000077E000000067E0000000E7E0000001C7E0000001C7E000000387E000000
+707E000000707E000000E07E000001C07E000001C07E000003807E000007007E00000700
+7E00000E007E00001C007E00001C007E000038007E000070007E000070007E0000E0007E
+0000C0007E0001C0007E000380007E000300007E000700007E000E00007E000C00007E00
+1C00007E003800007E003800007E007000007E00E000007E00FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000
+00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000001FF000001FF
+FFFF0001FFFFFF0001FFFFFF283E7EBD2D>I<06000003000780001F0007F800FE0007FF
+FFFE0007FFFFFC0007FFFFF80007FFFFF00007FFFFC00007FFFF000007FFFC0000073FE0
+000007000000000700000000070000000007000000000700000000070000000007000000
+00070000000007000000000700000000070000000007000000000701FE0000070FFF8000
+073E03E000077001F80007E000FC0007C0007E000780003F000700003F800600001F8000
+00001FC00000001FC00000001FE00000000FE00000000FE00000000FE00000000FF00000
+000FF00000000FF00C00000FF07F00000FF07F80000FF0FF80000FF0FF80000FF0FF8000
+0FF0FF80000FF0FF80000FE0FF00001FE0FC00001FE07000001FC07800001FC03800003F
+803C00003F801E00007F001F0000FE000F8001FC0007C003F80003F80FE00000FFFFC000
+003FFF00000007F80000243F7CBC2D>I<00001FE0000000FFF8000003F03E00000FC00F
+00001F000780003E000780007E001FC000FC003FC001F8007FC003F8007FC003F0007FC0
+07F0007FC00FE0003F800FE0001F001FE00000001FC00000001FC00000003FC00000003F
+C00000003FC00000007F800000007F800000007F80FE00007F87FF8000FF8F07E000FF9C
+01F000FFB800FC00FFB0007E00FFF0007E00FFE0003F00FFE0003F80FFC0003FC0FFC000
+3FC0FFC0001FE0FFC0001FE0FFC0001FE0FF80001FF0FF80001FF0FF80001FF0FF80001F
+F0FF80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF0
+3F80001FF03FC0001FE03FC0001FE01FC0001FE01FC0003FC01FC0003FC00FE0003F800F
+E0003F8007E0007F0003F0007E0001F800FC0000FC01F800007E07F000003FFFE000000F
+FF80000003FC0000243F7CBC2D>I<38000000003C000000003F000000003FFFFFFFFC3F
+FFFFFFFC3FFFFFFFFC3FFFFFFFF87FFFFFFFF87FFFFFFFF07FFFFFFFE078000001E07000
+0003C0700000078070000007007000000F00E000001E00E000001C00E000003C00E00000
+78000000007000000000F000000001E000000001C000000003C000000007800000000700
+0000000F000000001E000000001E000000003C000000003C000000007C00000000780000
+0000F800000000F800000001F800000001F000000003F000000003F000000003F0000000
+07F000000007F000000007F00000000FF00000000FE00000000FE00000001FE00000001F
+E00000001FE00000001FE00000001FE00000001FE00000003FE00000003FE00000003FE0
+0000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000
+00001FC00000000700000026407BBD2D>I<0003FC0000001FFF8000007C07E00000F001
+F80001E0007C0003C0003E000780001F000F00001F000F00000F801E00000F801E00000F
+C03E000007C03E000007C03E000007C03E000007C03F000007C03F000007C03F80000F80
+3FC0000F801FE0001F801FF0001F001FFC003E000FFE007C000FFF80780007FFC0F00003
+FFF3E00001FFFF800000FFFF0000003FFF0000001FFFC000000FFFE000003FFFF8000078
+FFFC0001F07FFE0003E01FFF0007C00FFF800F8003FFC01F0001FFC03F00007FE03E0000
+3FE07E00001FE07C00000FF07C000007F0F8000003F0F8000003F0F8000003F0F8000001
+F0F8000001F0F8000001F0F8000001F0FC000001E07C000003E07C000003E07E000003C0
+3F000007C01F00000F801F80001F000FC0003E0007F0007C0001FC03F80000FFFFE00000
+1FFF80000003FC0000243F7CBC2D>I<0003FC0000001FFF0000007E07C00000FC03F000
+01F801F80003F000FC0007E0007C000FE0007E001FC0007F001FC0003F003FC0003F803F
+80003F807F80003FC07F80003FC07F80001FC0FF80001FC0FF80001FE0FF80001FE0FF80
+001FE0FF80001FE0FF80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF8000
+1FF07F80001FF07F80003FF07F80003FF07F80003FF03FC0003FF03FC0003FF01FC0007F
+F00FC0007FF007E000FFF007F000DFF003F001DFF000F8039FF0007E0F1FF0001FFE1FE0
+0007F01FE00000001FE00000001FE00000003FC00000003FC00000003FC00000003FC000
+00003F800000007F800F80007F001FC0007F003FE000FE003FE000FE003FE001FC003FE0
+01F8003FC003F0003F8007F0001E000FE0001F001FC0000FC07F000003FFFE000001FFF8
+0000003FC00000243F7CBC2D>I<1E007F807F80FFC0FFC0FFC0FFC07F807F801E000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+1E007F807F80FFC0FFC0FFC0FFC07F807F801E000A2779A619>I<1E007F807F80FFC0FF
+C0FFC0FFC07F807F801E0000000000000000000000000000000000000000000000000000
+000000000000000000000000001E007F00FF80FF80FFC0FFC0FFC0FFC07FC01EC000C000
+C000C000C001C001800180018003800300070006000E000C001C003800300030000A3979
+A619>I<7FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE0
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000007FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE0
+3C167BA147>61 D<00000007000000000000000F800000000000000F800000000000000F
+800000000000001FC00000000000001FC00000000000001FC00000000000003FE0000000
+0000003FE00000000000003FE00000000000007FF00000000000007FF00000000000007F
+F0000000000000FFF8000000000000E7F8000000000000E7F8000000000001C7FC000000
+000001C3FC000000000001C3FC00000000000381FE00000000000381FE00000000000381
+FE00000000000700FF00000000000700FF00000000000700FF00000000000E007F800000
+00000E007F80000000000E007F80000000001C003FC0000000001C003FC0000000001C00
+3FC00000000038001FE00000000038001FE00000000038001FE00000000070000FF00000
+000070000FF00000000070000FF000000000E00007F800000000E00007F800000000E000
+07F800000001C00003FC00000001FFFFFFFC00000001FFFFFFFC00000003FFFFFFFE0000
+0003800001FE00000003800001FE00000007000000FF00000007000000FF0000000F0000
+00FF8000000E0000007F8000000E0000007F8000001E0000007FC000001C0000003FC000
+001C0000003FC000003C0000003FE00000380000001FE00000380000001FE00000780000
+001FF00000780000000FF00000FC0000000FF00003FC0000001FF8000FFF0000003FFC00
+FFFFF0000FFFFFF8FFFFF0000FFFFFF8FFFFF0000FFFFFF83D417DC044>65
+D<FFFFFFFFFC0000FFFFFFFFFF8000FFFFFFFFFFF00001FF80000FF800007F000003FE00
+007F000001FF00007F000000FF80007F0000007FC0007F0000003FE0007F0000003FE000
+7F0000001FF0007F0000001FF0007F0000001FF8007F0000001FF8007F0000001FF8007F
+0000000FF8007F0000001FF8007F0000001FF8007F0000001FF8007F0000001FF0007F00
+00001FF0007F0000003FE0007F0000007FE0007F0000007FC0007F000000FF80007F0000
+01FF00007F000003FC00007F00000FF800007F00007FE000007FFFFFFF0000007FFFFFFF
+E000007F000007FC00007F000001FE00007F000000FF80007F0000007FC0007F0000003F
+E0007F0000001FF0007F0000001FF8007F0000000FF8007F0000000FFC007F00000007FC
+007F00000007FC007F00000007FE007F00000007FE007F00000007FE007F00000007FE00
+7F00000007FE007F00000007FE007F00000007FE007F00000007FC007F0000000FFC007F
+0000000FFC007F0000001FF8007F0000001FF0007F0000003FF0007F0000007FE0007F00
+0000FFC0007F000003FF8001FF80000FFE00FFFFFFFFFFFC00FFFFFFFFFFE000FFFFFFFF
+FF0000373E7DBD40>I<0000003FF00006000003FFFE000E00000FFFFF801E00003FF007
+E03E0000FF8000F83E0003FE00007C7E0007F800001EFE000FF000000FFE003FE0000007
+FE007FC0000003FE00FF80000003FE00FF00000001FE01FE00000000FE03FE00000000FE
+07FC000000007E07F8000000007E0FF8000000003E0FF8000000003E1FF0000000001E1F
+F0000000001E3FF0000000001E3FE0000000001E3FE0000000000E7FE0000000000E7FE0
+000000000E7FE0000000000E7FC00000000000FFC00000000000FFC00000000000FFC000
+00000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000
+000000FFC00000000000FFC00000000000FFC00000000000FFC000000000007FC0000000
+00007FE000000000007FE0000000000E7FE0000000000E3FE0000000000E3FE000000000
+0E3FF0000000000E1FF0000000001E1FF0000000001C0FF8000000001C0FF8000000001C
+07F8000000003C07FC000000003803FE000000007801FE000000007000FF00000000F000
+FF80000001E0007FC0000001C0003FE0000003C0000FF0000007800007F800001F000003
+FE00003E000000FF8000F80000003FF007F00000000FFFFFC000000003FFFF0000000000
+3FF0000037427BBF42>I<FFFFFFFFFC000000FFFFFFFFFF800000FFFFFFFFFFE0000001
+FFC0001FF80000007F800003FE0000007F800000FF0000007F8000007F8000007F800000
+3FC000007F8000000FE000007F8000000FF000007F80000007F800007F80000003FC0000
+7F80000001FC00007F80000001FE00007F80000000FF00007F80000000FF00007F800000
+00FF80007F800000007F80007F800000007FC0007F800000007FC0007F800000007FC000
+7F800000003FE0007F800000003FE0007F800000003FE0007F800000003FE0007F800000
+003FE0007F800000003FF0007F800000003FF0007F800000003FF0007F800000003FF000
+7F800000003FF0007F800000003FF0007F800000003FF0007F800000003FF0007F800000
+003FF0007F800000003FF0007F800000003FF0007F800000003FE0007F800000003FE000
+7F800000003FE0007F800000003FE0007F800000003FE0007F800000007FC0007F800000
+007FC0007F800000007F80007F800000007F80007F80000000FF80007F80000000FF0000
+7F80000001FE00007F80000001FE00007F80000003FC00007F80000003F800007F800000
+07F800007F8000000FF000007F8000001FE000007F8000007FC000007F800000FF000000
+7F800003FE000001FFC0001FF80000FFFFFFFFFFF00000FFFFFFFFFF800000FFFFFFFFFC
+0000003C3E7DBD45>I<FFFFFFFFFFFFE0FFFFFFFFFFFFE0FFFFFFFFFFFFE001FFC00001
+FFE0007F8000001FE0007F8000000FF0007F80000003F0007F80000003F0007F80000001
+F0007F80000000F0007F80000000F0007F80000000F0007F8000000070007F8000000070
+007F8000000070007F8000000070007F8000000038007F80001C0038007F80001C003800
+7F80001C0038007F80001C0038007F80001C0000007F80001C0000007F80003C0000007F
+80003C0000007F80007C0000007F8000FC0000007F8003FC0000007FFFFFFC0000007FFF
+FFFC0000007FFFFFFC0000007F8003FC0000007F8000FC0000007F80007C0000007F8000
+3C0000007F80003C0000007F80001C0000007F80001C0000007F80001C0007007F80001C
+0007007F80001C0007007F80001C000E007F800000000E007F800000000E007F80000000
+0E007F800000000E007F800000001E007F800000001C007F800000001C007F800000003C
+007F800000003C007F800000007C007F800000007C007F80000000F8007F80000001F800
+7F80000003F8007F80000007F8007F8000001FF801FFC00001FFF8FFFFFFFFFFFFF0FFFF
+FFFFFFFFF0FFFFFFFFFFFFF0383E7DBD3E>I<FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFF
+FFFFFF8001FFC00003FF80007F8000007F80007F8000001FC0007F8000000FC0007F8000
+0007C0007F80000007C0007F80000003C0007F80000003C0007F80000003C0007F800000
+01C0007F80000001C0007F80000001C0007F80000001C0007F80000000E0007F80000000
+E0007F80003800E0007F80003800E0007F80003800E0007F8000380000007F8000380000
+007F8000380000007F8000780000007F8000780000007F8000F80000007F8001F8000000
+7F8007F80000007FFFFFF80000007FFFFFF80000007FFFFFF80000007F8007F80000007F
+8001F80000007F8000F80000007F8000780000007F8000780000007F8000380000007F80
+00380000007F8000380000007F8000380000007F8000380000007F8000380000007F8000
+000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000
+0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000
+00007F8000000000007F8000000000007F8000000000007F800000000001FFE000000000
+FFFFFFF0000000FFFFFFF0000000FFFFFFF0000000333E7DBD3B>I<0000003FE0000C00
+000003FFFE001C0000001FFFFF803C0000007FF00FC07C000000FF0001F07C000003FC00
+0078FC000007F800003DFC00001FE000001FFC00003FC000000FFC00007F80000007FC00
+00FF80000003FC0001FF00000003FC0001FE00000001FC0003FC00000001FC0007FC0000
+0000FC0007F800000000FC000FF8000000007C000FF0000000007C001FF0000000003C00
+1FF0000000003C003FE0000000003C003FE0000000003C003FE0000000001C007FE00000
+00001C007FE0000000001C007FC0000000001C007FC0000000000000FFC0000000000000
+FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC00000
+00000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000
+FFC0000000000000FFC000001FFFFFF07FC000001FFFFFF07FC000001FFFFFF07FE00000
+000FFE007FE000000003FC003FE000000003FC003FE000000003FC003FF000000003FC00
+1FF000000003FC001FF000000003FC000FF800000003FC000FF800000003FC0007F80000
+0003FC0007FC00000003FC0003FC00000003FC0001FE00000003FC0001FF00000003FC00
+00FF80000003FC00007FC0000007FC00003FE0000007FC00001FF000000FFC000007F800
+001EFC000003FE00003C7C000000FF8000F83C0000007FF007F01C0000001FFFFFC00C00
+000003FFFF0000000000003FF00000003C427BBF47>I<FFFFFFC01FFFFFF8FFFFFFC01F
+FFFFF8FFFFFFC01FFFFFF801FFE000003FFC00007F8000000FF000007F8000000FF00000
+7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000
+0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000
+7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000
+0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000
+7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007FFFFFFF
+FFF000007FFFFFFFFFF000007FFFFFFFFFF000007F8000000FF000007F8000000FF00000
+7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000
+0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000
+7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000
+0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000
+7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000
+0FF000007F8000000FF000007F8000000FF00001FFE000003FFC00FFFFFFC01FFFFFF8FF
+FFFFC01FFFFFF8FFFFFFC01FFFFFF83D3E7DBD44>I<FFFFFFF0FFFFFFF0FFFFFFF000FF
+F000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
+C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
+C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
+C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
+C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
+C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F
+C00000FFF000FFFFFFF0FFFFFFF0FFFFFFF01C3E7EBD21>I<001FFFFFFC001FFFFFFC00
+1FFFFFFC000007FF00000003FE00000001FE00000001FE00000001FE00000001FE000000
+01FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001
+FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE
+00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00
+000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0000
+0001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE000000
+01FE00000001FE003F0001FE007F8001FE00FFC001FE00FFC001FE00FFC001FE00FFC001
+FE00FFC003FC00FF8003FC007F0003F8007C0007F800380007F0003C000FE0001E001FC0
+000F003F800003E07E000000FFF80000003FC0000026407CBD2F>I<FFFFFFF8000000FF
+FFFFF8000000FFFFFFF800000001FFE000000000007F8000000000007F8000000000007F
+8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80
+00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000
+000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000
+0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000
+00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000
+007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000
+7F8000000000007F8000000380007F8000000380007F8000000380007F8000000380007F
+8000000380007F8000000780007F8000000700007F8000000700007F8000000700007F80
+00000700007F8000000F00007F8000000F00007F8000000F00007F8000001F00007F8000
+001F00007F8000003F00007F8000007F00007F800000FF00007F800001FE00007F800007
+FE0001FFC0003FFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFFFFFE00313E7DBD39>
+76 D<FFFFC0000000003FFFF0FFFFC0000000003FFFF0FFFFC0000000003FFFF001FFE0
+000000007FF800007FE0000000007FE0000077F000000000EFE0000077F000000000EFE0
+000077F000000000EFE0000073F800000001CFE0000073F800000001CFE0000071FC0000
+00038FE0000071FC000000038FE0000071FC000000038FE0000070FE000000070FE00000
+70FE000000070FE0000070FF0000000E0FE00000707F0000000E0FE00000707F0000000E
+0FE00000703F8000001C0FE00000703F8000001C0FE00000703F8000001C0FE00000701F
+C00000380FE00000701FC00000380FE00000700FE00000700FE00000700FE00000700FE0
+0000700FE00000700FE000007007F00000E00FE000007007F00000E00FE000007003F800
+01C00FE000007003F80001C00FE000007003F80001C00FE000007001FC0003800FE00000
+7001FC0003800FE000007001FC0003800FE000007000FE0007000FE000007000FE000700
+0FE0000070007F000E000FE0000070007F000E000FE0000070007F000E000FE000007000
+3F801C000FE0000070003F801C000FE0000070001FC038000FE0000070001FC038000FE0
+000070001FC038000FE0000070000FE070000FE0000070000FE070000FE0000070000FE0
+E0000FE00000700007F0E0000FE00000700007F0E0000FE00000700003F9C0000FE00000
+700003F9C0000FE00000700003F9C0000FE00000700001FF80000FE00000700001FF8000
+0FE00000700000FF00000FE00000700000FF00000FE00000F80000FF00000FE00001FC00
+007E00000FE00007FF00007E00003FF800FFFFF8003C001FFFFFF0FFFFF8003C001FFFFF
+F0FFFFF8003C001FFFFFF04C3E7DBD53>I<FFFF800000FFFFF8FFFFC00000FFFFF8FFFF
+E00000FFFFF8007FE0000007FF00007FF0000001FC00007FF8000000F800007FF8000000
+70000077FC00000070000073FE00000070000073FE00000070000071FF00000070000070
+FF80000070000070FF800000700000707FC00000700000703FE00000700000703FE00000
+700000701FF00000700000700FF80000700000700FF800007000007007FC000070000070
+03FE00007000007003FE00007000007001FF00007000007000FF80007000007000FF8000
+70000070007FC00070000070003FE00070000070003FE00070000070001FF00070000070
+000FF80070000070000FF800700000700007FC00700000700003FE00700000700003FE00
+700000700001FF00700000700000FF80700000700000FF807000007000007FC070000070
+00003FE07000007000003FE07000007000001FF07000007000000FF87000007000000FF8
+70000070000007FC70000070000003FE70000070000003FE70000070000001FF70000070
+000000FFF0000070000000FFF00000700000007FF00000700000003FF00000700000003F
+F00000700000001FF00000700000000FF00000700000000FF000007000000007F00000F8
+00000003F00001FC00000003F00007FF00000001F000FFFFF8000000F000FFFFF8000000
+F000FFFFF800000070003D3E7DBD44>I<0000007FE0000000000007FFFE00000000001F
+C03F80000000007E0007E000000001FC0003F800000007F00000FE0000000FE000007F00
+00001FC000003F8000003F8000001FC000007F0000000FE00000FE00000007F00001FE00
+000007F80001FC00000003F80003FC00000003FC0007F800000001FE0007F800000001FE
+000FF000000000FF000FF000000000FF001FF000000000FF801FE0000000007F803FE000
+0000007FC03FE0000000007FC03FE0000000007FC07FE0000000007FE07FC0000000003F
+E07FC0000000003FE07FC0000000003FE0FFC0000000003FF0FFC0000000003FF0FFC000
+0000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003F
+F0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC000
+0000003FF07FC0000000003FE07FE0000000007FE07FE0000000007FE07FE0000000007F
+E07FE0000000007FE03FE0000000007FC03FE0000000007FC01FF000000000FF801FF000
+000000FF801FF000000000FF800FF800000001FF000FF800000001FF0007FC00000003FE
+0003FC00000003FC0003FE00000007FC0001FE00000007F80000FF0000000FF000007F00
+00000FE000003F8000001FC000001FC000003F8000000FE000007F00000007F00000FE00
+000001FC0003F8000000007F000FE0000000001FC03F800000000007FFFE000000000000
+7FE00000003C427BBF47>I<FFFFFFFFF80000FFFFFFFFFF8000FFFFFFFFFFE00001FFC0
+003FF800007F800007FC00007F800001FE00007F800000FF00007F8000007F80007F8000
+003FC0007F8000003FE0007F8000003FE0007F8000001FF0007F8000001FF0007F800000
+1FF8007F8000001FF8007F8000001FF8007F8000001FF8007F8000001FF8007F8000001F
+F8007F8000001FF8007F8000001FF8007F8000001FF0007F8000001FF0007F8000003FE0
+007F8000003FE0007F8000003FC0007F8000007F80007F800000FF00007F800001FE0000
+7F800007FC00007F80003FF000007FFFFFFFC000007FFFFFFE0000007F8000000000007F
+8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80
+00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000
+000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000
+0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000
+00007F8000000000007F8000000000007F800000000001FFE000000000FFFFFFC0000000
+FFFFFFC0000000FFFFFFC0000000353E7DBD3E>I<FFFFFFFFC0000000FFFFFFFFFC0000
+00FFFFFFFFFF80000001FFC000FFE00000007F80001FF00000007F800007FC0000007F80
+0001FE0000007F800000FF0000007F800000FF8000007F8000007FC000007F8000007FC0
+00007F8000003FE000007F8000003FE000007F8000003FF000007F8000003FF000007F80
+00003FF000007F8000003FF000007F8000003FF000007F8000003FF000007F8000003FF0
+00007F8000003FE000007F8000007FE000007F8000007FC000007F8000007F8000007F80
+0000FF8000007F800000FF0000007F800001FC0000007F800007F80000007F80001FE000
+00007F8000FF800000007FFFFFFC000000007FFFFFF0000000007F8001FC000000007F80
+003F000000007F80001FC00000007F80000FE00000007F800007F00000007F800007F800
+00007F800003F80000007F800003FC0000007F800001FC0000007F800001FE0000007F80
+0001FE0000007F800001FE0000007F800001FF0000007F800001FF0000007F800001FF00
+00007F800001FF0000007F800001FF8000007F800001FF8000007F800001FF8000007F80
+0001FF8000007F800001FFC004007F800001FFC00E007F800001FFC00E007F800000FFC0
+0E007F800000FFE00E007F8000007FE01E01FFE000007FE01CFFFFFFC0003FF01CFFFFFF
+C0001FF838FFFFFFC00007F870000000000001FFE00000000000003F803F407DBD43>82
+D<0007FC000C001FFF801C007FFFF03C01FC03F83C03F0007E7C07C0001FFC0F80000FFC
+1F800007FC3F000003FC3E000001FC7E000000FC7E000000FC7C0000007CFC0000007CFC
+0000007CFC0000003CFC0000003CFC0000003CFE0000001CFE0000001CFF0000001CFF00
+00001C7F800000007FC00000007FE00000003FF80000003FFF8000001FFFF800000FFFFF
+800007FFFFF00003FFFFFC0001FFFFFF0000FFFFFFC0003FFFFFE00007FFFFF000007FFF
+F0000007FFF80000007FFC0000000FFC00000007FE00000003FE00000001FE00000000FF
+00000000FFE00000007FE00000007FE00000007FE00000003FE00000003FF00000003FF0
+0000003FF00000003FF00000003EF80000003EF80000007EFC0000007CFE000000FCFF00
+0000F8FF800001F8FFC00003F0FFE00007E0F9FC000FC0F07F803F80F01FFFFE00E007FF
+F800C0007FC00028427BBF33>I<3FFFFFFFFFFFFF803FFFFFFFFFFFFF803FFFFFFFFFFF
+FF803FF0007FE001FF803F80003FC0003F807F00003FC0001FC07E00003FC00007C07C00
+003FC00007C07800003FC00003C07800003FC00003C07800003FC00003C07000003FC000
+01C07000003FC00001C07000003FC00001C07000003FC00001C07000003FC00001C0E000
+003FC00000E0E000003FC00000E0E000003FC00000E0E000003FC00000E0E000003FC000
+00E00000003FC00000000000003FC00000000000003FC00000000000003FC00000000000
+003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000
+00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000
+003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000
+00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000
+003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000
+00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000
+003FC00000000000003FC00000000000003FC00000000000003FC00000000000007FE000
+0000000000FFF00000000007FFFFFFFE00000007FFFFFFFE00000007FFFFFFFE00003B3D
+7DBC42>I<FFFFFFC000FFFFF8FFFFFFC000FFFFF8FFFFFFC000FFFFF801FFE0000007FF
+00007F80000001FC00007F80000000F800007F800000007000007F800000007000007F80
+0000007000007F800000007000007F800000007000007F800000007000007F8000000070
+00007F800000007000007F800000007000007F800000007000007F800000007000007F80
+0000007000007F800000007000007F800000007000007F800000007000007F8000000070
+00007F800000007000007F800000007000007F800000007000007F800000007000007F80
+0000007000007F800000007000007F800000007000007F800000007000007F8000000070
+00007F800000007000007F800000007000007F800000007000007F800000007000007F80
+0000007000007F800000007000007F800000007000007F800000007000007F8000000070
+00007F800000007000007F800000007000007F800000007000007F800000007000007F80
+0000007000007F800000007000003F80000000F000003FC0000000E000003FC0000000E0
+00003FC0000001E000001FC0000001C000001FE0000001C000000FE0000003C000000FF0
+00000780000007F000000700000003F800000F00000001FC00001E00000000FE00003C00
+0000007F0000F8000000003F8001F0000000000FF00FE00000000003FFFF800000000000
+FFFE0000000000001FF00000003D407DBD44>I<FFFFFF00000FFFFEFFFFFF00000FFFFE
+FFFFFF00000FFFFE03FFE0000001FFE001FF800000007F8000FF800000003F00007F8000
+00003E00007F800000001C00007FC00000003C00003FC00000003800003FC00000003800
+003FE00000007800001FE00000007000001FE00000007000000FF0000000E000000FF000
+0000E000000FF8000001E0000007F8000001C0000007F8000001C0000007FC000003C000
+0003FC00000380000003FC00000380000001FE00000700000001FE00000700000001FF00
+000700000000FF00000E00000000FF00000E00000000FF80001E000000007F80001C0000
+00007F80001C000000007FC0003C000000003FC00038000000003FC00038000000001FE0
+0070000000001FE00070000000001FF000F0000000000FF000E0000000000FF000E00000
+00000FF801E00000000007F801C00000000007F801C00000000003FC03800000000003FC
+03800000000003FE07800000000001FE07000000000001FE07000000000001FF0F000000
+000000FF0E000000000000FF0E0000000000007F9C0000000000007F9C0000000000007F
+DC0000000000003FF80000000000003FF80000000000003FF80000000000001FF0000000
+0000001FF00000000000001FF00000000000000FE00000000000000FE000000000000007
+C000000000000007C000000000000007C000000000000003800000003F407EBD44>I<FF
+FFFE007FFFFF8007FFFFFFFFFE007FFFFF8007FFFFFFFFFE007FFFFF8007FFFF03FFC000
+01FFE00000FFF801FF000000FFC000003FE001FF0000007F8000000F8000FF0000007F80
+00000F8000FF0000007FC000000F0000FF8000003FC000000F00007F8000003FC000000E
+00007F8000003FE000000E00007F8000003FE000000E00003FC000003FE000001C00003F
+C000003FE000001C00003FC000007FF000001C00001FE000007FF000003800001FE00000
+7FF000003800001FE00000E7F800003800000FF00000E7F800007000000FF00000E7F800
+007000000FF00001C3FC00007000000FF80001C3FC0000F0000007F80001C3FC0000E000
+0007F80003C3FE0000E0000007FC000381FE0001E0000003FC000381FE0001C0000003FC
+000781FF0001C0000003FC000700FF0001C0000001FE000700FF000380000001FE000700
+FF000380000001FE000E007F800380000000FF000E007F800700000000FF000E007F8007
+00000000FF001C003FC007000000007F801C003FC00E000000007F801C003FC00E000000
+007F8038001FE00E000000007FC038001FE01E000000003FC038001FE01C000000003FC0
+78001FF01C000000003FE070000FF03C000000001FE070000FF038000000001FE0F0000F
+F838000000001FE0E00007F838000000000FF0E00007F870000000000FF0E00007F87000
+0000000FF1C00003FC700000000007F9C00003FCE00000000007F9C00003FCE000000000
+07FB800001FEE00000000003FF800001FFC00000000003FF800001FFC00000000003FF00
+0000FFC00000000003FF000000FFC00000000001FF000000FF800000000001FF000000FF
+800000000001FE0000007F800000000000FE0000007F000000000000FE0000007F000000
+000000FC0000003F0000000000007C0000003E0000000000007C0000003E000000000000
+780000001E000000000000380000001C00000058407EBD5D>I<FFFCFFFCFFFCFFFCF000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
+F000F000F000F000F000F000F000F000F000F000FFFCFFFCFFFCFFFC0E5B77C319>91
+D<018000C0038001C003000180070003800E0007001C000E0018000C0038001C00300018
+0070003800600030006000300060003000E0007000C0006000C0006000C0006000C00060
+00CF006780FFC07FE0FFE07FF0FFE07FF0FFE07FF07FE03FF07FE03FF03FE01FF03FC01F
+E00F0007801C1C73BE2D>I<FFFCFFFCFFFCFFFC003C003C003C003C003C003C003C003C
+003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C
+003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C
+003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C
+003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C
+003C003C003CFFFCFFFCFFFCFFFC0E5B7FC319>I<000FF800000000FFFE00000003F01F
+800000078007E000000F8003F000000FE001F800001FF001FC00001FF000FE00001FF000
+FE00001FF000FE00001FF0007F00000FE0007F00000380007F00000000007F0000000000
+7F00000000007F00000000007F000000001FFF00000003FFFF0000001FF87F0000007F80
+7F000001FC007F000007F8007F00000FE0007F00001FC0007F00003F80007F00003F8000
+7F00007F00007F00007F00007F0380FE00007F0380FE00007F0380FE00007F0380FE0000
+FF0380FE0000FF0380FE0000FF03807F0001FF03807F0003BF03803F80071F87001FC00E
+1FCF0007F03C0FFE0001FFF807FC00003FC001F000292A7DA82D>97
+D<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC03FC00
+0001FC1FFF800001FC7C07E00001FDE001F00001FFC000FC0001FF80007E0001FF00003F
+0001FE00003F8001FC00001F8001FC00001FC001FC00000FE001FC00000FE001FC00000F
+F001FC00000FF001FC000007F001FC000007F801FC000007F801FC000007F801FC000007
+F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007
+F801FC000007F001FC000007F001FC00000FF001FC00000FF001FC00000FE001FC00001F
+E001FC00001FC001FE00001F8001FE00003F0001FF00007F0001FF8000FE0001F3C001F8
+0001F1E003F00001E0780FC00001C03FFF0000000007F800002D407EBE33>I<0001FF00
+00000FFFE000003F00F800007C001E0001F8001F0003F0007F0007F000FF800FE000FF80
+0FC000FF801FC000FF801FC000FF803F80007F003F80001C007F800000007F800000007F
+00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00
+000000FF00000000FF00000000FF00000000FF000000007F800000007F800000007F8000
+00003F800001C03FC00001C01FC00003C01FC00003800FE000078007F000070003F0000E
+0001F8001E0000FC007800003F01F000000FFFC0000001FE0000222A7DA828>I<000000
+01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC00000000
+01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000
+01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000
+01FC0000000001FC0000000001FC0000000001FC0000000001FC000000FF01FC000007FF
+E1FC00001F80F9FC00007E003DFC0000FC001FFC0003F80007FC0007F00007FC0007E000
+03FC000FC00001FC001FC00001FC003FC00001FC003F800001FC007F800001FC007F8000
+01FC007F000001FC007F000001FC00FF000001FC00FF000001FC00FF000001FC00FF0000
+01FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF0000
+01FC007F000001FC007F800001FC007F800001FC003F800001FC003F800001FC001FC000
+01FC000FC00003FC000FE00003FC0007E00007FC0003F0000FFE0001F8001FFF00007C00
+79FFF8003F01F1FFF8000FFFC1FFF80001FE01FC002D407DBE33>I<0001FE0000000FFF
+C000003F03F00000FC01F80001F800FC0003F0007E0007E0003F000FE0003F800FC0001F
+801FC0001FC03F80000FC03F80000FC07F80000FC07F80000FE07F00000FE07F00000FE0
+FF00000FE0FF00000FE0FFFFFFFFE0FFFFFFFFE0FF00000000FF00000000FF00000000FF
+00000000FF00000000FF000000007F000000007F000000007F800000003F800000003F80
+0000E01FC00000E01FC00001E00FC00001C007E00003C007F000078003F800070000FC00
+1E00007E003C00001F80F8000007FFE0000000FF0000232A7EA828>I<00001FC000007F
+F80001F83C0007E07E000FC0FF001FC1FF003F81FF003F01FF007F01FF007F00FE00FE00
+7C00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000FE0000FFFFFF00FFFFFF00FFFFFF0000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00
+0000FE000000FE000000FE000000FE000001FF00007FFFFF007FFFFF007FFFFF0020407E
+BF1C>I<000000007C000003F801FF00001FFF078F80007E0FDE1F8000F803F81F8003F0
+01F81F8003F001F81F8007E000FC06000FE000FE00000FC0007E00001FC0007F00001FC0
+007F00001FC0007F00001FC0007F00001FC0007F00001FC0007F00001FC0007F00001FC0
+007F00000FC0007E00000FE000FE000007E000FC000003F001F8000003F001F8000001F8
+03E0000003FE0FC00000071FFF0000000703F80000000600000000000E00000000000E00
+000000000E00000000000F00000000000F00000000000F80000000000FC00000000007FF
+FFE0000007FFFFFE000003FFFFFF800001FFFFFFE00000FFFFFFF00003FFFFFFF8000FC0
+001FFC001F000001FE003E000000FE007C0000007E007C0000003F00F80000003F00F800
+00001F00F80000001F00F80000001F00F80000001F00FC0000003F007C0000003E007E00
+00007E003F000000FC001F800001F8000FC00003F00003F0000FC00000FE007F0000003F
+FFFC00000003FFC00000293D7EA82D>I<01FC00000000FFFC00000000FFFC00000000FF
+FC0000000007FC0000000003FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC01FE000001FC07FFC00001FC1E07E00001FC7803F00001
+FCE001F80001FDC001FC0001FD8001FC0001FF8000FE0001FF0000FE0001FF0000FE0001
+FE0000FE0001FE0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001
+FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001
+FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001
+FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001
+FC0000FE0001FC0000FE0003FE0001FF00FFFFF87FFFFCFFFFF87FFFFCFFFFF87FFFFC2E
+3F7DBE33>I<01E00007F80007F8000FFC000FFC000FFC000FFC0007F80007F80001E000
+000000000000000000000000000000000000000000000000000000000000000000000000
+01FC007FFC007FFC007FFC0007FC0003FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+03FE00FFFFF0FFFFF0FFFFF0143E7DBD1A>I<0000780001FE0001FE0003FF0003FF0003
+FF0003FF0001FE0001FE0000780000000000000000000000000000000000000000000000
+0000000000000000000000000000007F007FFF007FFF007FFF0001FF0000FF00007F0000
+7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000
+7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000
+7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000
+7F00007F00007F00007F3E007F7F007FFF807EFF80FEFF80FEFF80FCFF81F87F01F87C03
+F01E07C00FFF8001FC00185185BD1C>I<01FC00000000FFFC00000000FFFC00000000FF
+FC0000000007FC0000000003FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC00FFFF8001FC00FFFF8001FC00FFFF8001
+FC003FFC0001FC003FE00001FC003F800001FC003F000001FC003C000001FC0078000001
+FC00F0000001FC01E0000001FC07C0000001FC0F80000001FC1F00000001FC3E00000001
+FC7F00000001FCFF80000001FDFF80000001FFDFC0000001FF9FE0000001FF0FE0000001
+FE07F0000001FC07F8000001F803FC000001F801FC000001F801FE000001F800FF000001
+F8007F000001F8007F800001F8003FC00001F8001FC00001F8001FE00001F8000FF00001
+F8000FF00001F8000FF80003FC000FFE00FFFFF07FFFE0FFFFF07FFFE0FFFFF07FFFE02B
+3F7EBE30>I<01FC00FFFC00FFFC00FFFC0007FC0003FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0003FE00FFFFF8FFFFF8FFFFF8153F7DBE1A>I<01F801FE0000FF0000FFF807FFC0
+03FFE000FFF81E07E00F03F000FFF87803F03C01F80007F8E001F87000FC0003F9C001FC
+E000FE0001F98001FCC000FE0001FB8000FFC0007F0001FB0000FF80007F0001FF0000FF
+80007F0001FE0000FF00007F0001FE0000FF00007F0001FC0000FE00007F0001FC0000FE
+00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE
+00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE
+00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE
+00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE
+00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE
+00007F0001FC0000FE00007F0001FC0000FE00007F0003FE0001FF0000FF80FFFFF87FFF
+FC3FFFFEFFFFF87FFFFC3FFFFEFFFFF87FFFFC3FFFFE47287DA74C>I<01F801FE0000FF
+F807FFC000FFF81E07E000FFF87803F00007F8E001F80003F9C001FC0001F98001FC0001
+FB8000FE0001FB0000FE0001FF0000FE0001FE0000FE0001FE0000FE0001FC0000FE0001
+FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001
+FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001
+FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001
+FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0003FE0001FF00FF
+FFF87FFFFCFFFFF87FFFFCFFFFF87FFFFC2E287DA733>I<0000FF00000007FFE000001F
+81F800007E007E0000F8001F0001F0000F8003E00007C007C00003E00FC00003F01F8000
+01F81F800001F83F800001FC3F800001FC7F000000FE7F000000FE7F000000FE7F000000
+FEFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FF
+FF000000FFFF000000FF7F000000FE7F000000FE7F000000FE3F800001FC3F800001FC3F
+800001FC1F800001F80FC00003F00FC00003F007E00007E003F0000FC001F8001F80007E
+007E00003F81FC00000FFFF0000000FF0000282A7EA82D>I<01FC03FC0000FFFC1FFF80
+00FFFC7C0FE000FFFDE003F00003FFC001FC0001FF8000FE0001FF00007F0001FE00003F
+8001FC00003F8001FC00001FC001FC00001FE001FC00001FE001FC00000FF001FC00000F
+F001FC00000FF001FC000007F801FC000007F801FC000007F801FC000007F801FC000007
+F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007F801FC00000F
+F001FC00000FF001FC00000FF001FC00000FF001FC00001FE001FC00001FE001FC00003F
+C001FE00003F8001FE00007F0001FF00007F0001FF8000FE0001FFC001F80001FDE007F0
+0001FC780FC00001FC3FFF000001FC07F8000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000003FE00000000FFFFF80000
+00FFFFF8000000FFFFF80000002D3A7EA733>I<0000FF001C000007FFC03C00001F80F0
+3C00007F00387C0000FC001C7C0003F8000E7C0007F0000FFC0007F00007FC000FE00003
+FC001FE00003FC003FC00003FC003FC00001FC007F800001FC007F800001FC007F800001
+FC007F800001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001
+FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC007F800001
+FC007F800001FC007F800001FC003FC00001FC003FC00001FC001FC00003FC000FE00003
+FC000FE00007FC0007F0000FFC0003F8000FFC0001FC003DFC00007E0079FC00003F81F1
+FC00000FFFC1FC000001FE01FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC0000000003FE00000000FFFFF8000000FF
+FFF8000000FFFFF82D3A7DA730>I<01F807E0FFF81FF8FFF8787CFFF8E1FE07F9C1FE03
+F981FE01FB81FE01FB01FE01FB00FC01FF003001FE000001FE000001FE000001FC000001
+FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001
+FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001
+FC000001FC000001FC000001FC000003FE0000FFFFFE00FFFFFE00FFFFFE001F287EA724
+>I<003FC06001FFF8E007C03FE01F000FE03E0007E03C0003E07C0003E0780001E0F800
+01E0F80000E0F80000E0FC0000E0FE0000E0FF0000E0FF8000007FF800007FFFC0003FFF
+F8001FFFFE000FFFFF0007FFFF8001FFFFC0003FFFE00003FFF000001FF000000FF8E000
+03F8E00003F8E00001F8F00001F8F00000F8F00000F8F80000F8F80000F0FC0000F0FC00
+01F0FE0001E0FF0003C0FF800780F3E01F00E0FFFC00C01FE0001D2A7DA824>I<001C00
+00001C0000001C0000001C0000001C0000001C0000003C0000003C0000003C0000003C00
+00007C0000007C000000FC000000FC000001FC000003FC000007FC00001FFFFFC0FFFFFF
+C0FFFFFFC001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00
+0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00
+0001FC000001FC000001FC000001FC00E001FC00E001FC00E001FC00E001FC00E001FC00
+E001FC00E001FC00E001FC00E000FC00E000FE01C000FE01C0007F03C0003F0380001F87
+000007FE000001F8001B397EB723>I<01FC0000FE00FFFC007FFE00FFFC007FFE00FFFC
+007FFE0007FC0003FE0003FC0001FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC
+0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC
+0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC
+0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC
+0000FE0001FC0000FE0001FC0001FE0001FC0001FE0001FC0001FE0001FC0003FE0000FC
+0003FE0000FC0007FE0000FE0006FF00007E000EFF80003F001CFFFC001FC078FFFC0007
+FFE0FFFC0000FF80FE002E297DA733>I<FFFFE00FFFE0FFFFE00FFFE0FFFFE00FFFE007
+FE0003FF0003FC0000FC0003FC0000F80001FC0000F00001FE0000F00000FE0000E00000
+FE0000E00000FF0001E000007F0001C000007F0001C000003F80038000003F8003800000
+3FC0078000001FC0070000001FC0070000000FE00E0000000FE00E0000000FF01E000000
+07F01C00000007F01C00000003F83800000003F83800000003FC7800000001FC70000000
+01FC7000000001FEF000000000FEE000000000FEE0000000007FC0000000007FC0000000
+007FC0000000003F80000000003F80000000001F00000000001F00000000001F00000000
+000E0000002B287EA630>I<FFFFC3FFFE03FFF8FFFFC3FFFE03FFF8FFFFC3FFFE03FFF8
+0FFE003FE000FFC007FC001FC0003F8003F8001FC0003F0003FC000FC0001E0001FC000F
+E0001C0001FC0007E0001C0001FE0007E0003C0000FE000FF000380000FE000FF0003800
+007F000FF0007000007F001FF8007000007F001DF8007000003F801DF800E000003F803D
+FC00E000003F8038FC00E000001FC038FC01C000001FC078FE01C000001FC0707E03C000
+000FE0707F038000000FE0E03F038000000FF0E03F0780000007F0E03F8700000007F1C0
+1F8700000007F9C01F8F00000003F9C01FCE00000003FB800FCE00000003FF800FDE0000
+0001FF800FFC00000001FF0007FC00000000FF0007F800000000FF0007F800000000FE00
+03F8000000007E0003F0000000007E0003F0000000007C0001F0000000003C0001E00000
+0000380000E000003D287EA642>I<FFFFF01FFFE0FFFFF01FFFE0FFFFF01FFFE003FFC0
+0FFF0000FF8007F800007F0007E000007F8007C000003FC0078000001FC00F0000000FE0
+0E0000000FF01E00000007F83C00000003F87800000001FCF000000001FEE000000000FF
+E0000000007FC0000000003F80000000003FC0000000001FC0000000001FE0000000003F
+F0000000003FF8000000007BF800000000F1FC00000001E1FE00000001C0FF00000003C0
+7F00000007803F8000000F003FC000001E001FE000003E000FE000007C0007F00000FC00
+07F80001FE0007FC000FFE000FFE00FFFF803FFFF8FFFF803FFFF8FFFF803FFFF82D277F
+A630>I<FFFFE00FFFE0FFFFE00FFFE0FFFFE00FFFE007FE0003FF0003FC0001FC0003FC
+0000F80001FC0000F00001FE0000F00000FE0000E00000FE0000E000007F0001C000007F
+0001C000007F8003C000003F80038000003F80038000001FC0070000001FC0070000001F
+E00F0000000FE00E0000000FE00E00000007F01C00000007F01C00000007F83C00000003
+F83800000003F83800000001FC7000000001FC7000000001FEF000000000FEE000000000
+FEE0000000007FC0000000007FC0000000007FC0000000003F80000000003F8000000000
+3F80000000001F00000000001F00000000000E00000000000E00000000001E0000000000
+1C00000000003C0000000000380000000000380000000000780000001800700000007E00
+70000000FF00E0000000FF00E0000000FF01C0000000FF01C0000000FE03800000007E07
+00000000780E000000003C3C000000001FF80000000007E0000000002B3A7EA630>I<1F
+FFFFFF801FFFFFFF801FE000FF801F8000FF001F0001FE001E0003FC001C0003FC001C00
+07F8003C000FF0003C001FF00038001FE00038003FC00038007FC00038007F80003800FF
+00000001FE00000001FE00000003FC00000007F80000000FF80000000FF00000001FE000
+00003FC00380003FC00380007F80038000FF00038001FF00038001FE00038003FC000780
+07FC00078007F80007000FF00007001FE0000F001FE0000F003FC0001F007F80007F00FF
+8001FF00FFFFFFFF00FFFFFFFF0021277EA628>I<FFFFFFFFFFFFFFFFFFFFFFC0FFFFFF
+FFFFFFFFFFFFFFFFC05A0280985B>124 D E /Fq 45 122 df<00000000FFFC00000000
+00001FFFFF800000000001FFFFFFE00000000007FFFFFFF0000000001FFFC00FF8000000
+007FFE0003FC00000000FFF00000FE00000001FFE00003FF00000003FF800007FF000000
+07FF00000FFF8000000FFE00001FFF8000000FFE00001FFF8000001FFC00001FFF800000
+1FFC00003FFFC000003FFC00001FFF8000003FF800001FFF8000003FF800001FFF800000
+3FF800001FFF8000003FF800000FFF0000003FF8000007FE0000003FF8000001F8000000
+3FF8000000000000003FF8000000000000003FF8000000000000003FF800000000000000
+3FF8000000000000003FF8000000000000003FF8000000000000003FF800000000000000
+3FF8000000000000003FF80003FFFFC000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFC000FF
+FFFFFFFFFFFFC000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFC000003FFC000007FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000
+3FFC000003FFC000003FFC000003FFC0003FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03F
+FFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC042547DD34B>12
+D<FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0
+FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0240B7F9F2D>45
+D<000000780000000000FC0000000003FC0000000007FC000000001FFC00000000FFFC00
+00000FFFFC000007FFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFF7FFC0000FFF07FFC00
+00F8007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00
+0000007FFC00007FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFF
+FE2F4E76CD43>49 D<00003FFE0000000003FFFFE00000000FFFFFFC0000003FFFFFFF00
+0000FFFFFFFFC00001FFC07FFFE00003FE000FFFF80007F80003FFFC000FE00001FFFE00
+1FC00000FFFF003F8000007FFF003FF000007FFF807FF800003FFFC07FFC00003FFFC0FF
+FE00001FFFE0FFFF00001FFFE0FFFF00001FFFE0FFFF00000FFFF0FFFF00000FFFF0FFFF
+00000FFFF0FFFF00000FFFF0FFFF00000FFFF07FFE00000FFFF07FFE00000FFFF03FFC00
+000FFFF00FF000000FFFF003C000000FFFF0000000000FFFE0000000001FFFE000000000
+1FFFE0000000001FFFC0000000003FFFC0000000003FFF80000000003FFF80000000007F
+FF00000000007FFE0000000000FFFC0000000001FFF80000000001FFF00000000003FFE0
+0000000003FFC00000000007FF80000000000FFF00000000001FFE00000000001FFC0000
+0000003FF800000000007FE00000000000FFC00000000001FF800000000003FE00000000
+0007FC000000000007F800000000000FF00001F000001FE00001F000003F800001F00000
+7F000001F00000FE000003E00001FC000003E00003F8000003E00007F0000003E0000FE0
+000003E0001F80000007E0003F00000007E0003E0000000FE0007FFFFFFFFFE000FFFFFF
+FFFFC001FFFFFFFFFFC003FFFFFFFFFFC007FFFFFFFFFFC00FFFFFFFFFFFC01FFFFFFFFF
+FFC03FFFFFFFFFFFC07FFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFF80FFFFFFFFFFFF
+80FFFFFFFFFFFF80FFFFFFFFFFFF80344E79CD43>I<00000FFFC000000000FFFFFC0000
+0007FFFFFF8000001FFFFFFFE000003FF807FFF00000FF8001FFFC0001FE00007FFE0003
+F800003FFF0003F000003FFF8007FC00001FFF800FFF00001FFFC00FFF80001FFFC01FFF
+C0001FFFE01FFFC0001FFFE01FFFC0001FFFE01FFFC0001FFFE01FFFE0001FFFE01FFFC0
+001FFFE01FFFC0001FFFE01FFFC0001FFFE00FFFC0001FFFC007FF80001FFFC003FF0000
+3FFFC001FC00003FFF80000000003FFF80000000007FFF00000000007FFE00000000007F
+FE0000000000FFFC0000000001FFF80000000003FFF00000000007FFC0000000000FFF80
+00000000FFFE00000000FFFFF800000000FFFFE000000000FFFFFC00000000FFFFFF8000
+00000007FFE00000000001FFF800000000007FFE00000000003FFF00000000001FFF8000
+0000000FFFC0000000000FFFE00000000007FFF00000000007FFF00000000007FFF80000
+000007FFF80000000003FFFC0000000003FFFC0000000003FFFE0000000003FFFE03E000
+0003FFFE0FF8000003FFFE1FFC000003FFFE3FFE000003FFFE7FFF000003FFFEFFFF8000
+03FFFEFFFF800003FFFEFFFF800003FFFEFFFF800003FFFCFFFF800003FFFCFFFF800007
+FFFCFFFF800007FFF8FFFF000007FFF87FFF000007FFF07FFE00000FFFF03FFC00000FFF
+E03FF000001FFFC01FE000003FFF800FF800007FFF0007FF0000FFFE0003FFF007FFFC00
+00FFFFFFFFF000007FFFFFFFE000001FFFFFFF80000003FFFFFC000000001FFF80000037
+4F7ACD43>I<00000000007C00000000000000FE00000000000000FE00000000000001FE
+00000000000003FE00000000000007FE0000000000000FFE0000000000000FFE00000000
+00001FFE0000000000003FFE0000000000007FFE0000000000007FFE000000000000FFFE
+000000000001FFFE000000000003FFFE000000000003FFFE000000000007FFFE00000000
+000FFFFE00000000001FBFFE00000000003F3FFE00000000003E3FFE00000000007C3FFE
+0000000000FC3FFE0000000001F83FFE0000000001F03FFE0000000003E03FFE00000000
+07E03FFE000000000FC03FFE000000000F803FFE000000001F003FFE000000003F003FFE
+000000007E003FFE000000007C003FFE00000000F8003FFE00000001F8003FFE00000003
+F0003FFE00000007E0003FFE00000007C0003FFE0000000F80003FFE0000001F80003FFE
+0000003F00003FFE0000003E00003FFE0000007C00003FFE000000FC00003FFE000001F8
+00003FFE000001F000003FFE000003E000003FFE000007E000003FFE00000FC000003FFE
+00001F8000003FFE00001F0000003FFE00003E0000003FFE00007E0000003FFE0000FC00
+00003FFE0000FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFF
+FFC0FFFFFFFFFFFFFFC0000000007FFE0000000000007FFE0000000000007FFE00000000
+00007FFE0000000000007FFE0000000000007FFE0000000000007FFE0000000000007FFE
+0000000000007FFE0000000000007FFE0000000000007FFE0000000000007FFE00000000
+00007FFE0000000000007FFE0000000000007FFE000000000FFFFFFFFFC000000FFFFFFF
+FFC000000FFFFFFFFFC000000FFFFFFFFFC000000FFFFFFFFFC03A4F7CCE43>I<038000
+00000E0007E00000007E0007FE000003FE0007FFF0007FFE0007FFFFFFFFFC0007FFFFFF
+FFF80007FFFFFFFFF00007FFFFFFFFE00007FFFFFFFFC00007FFFFFFFF800007FFFFFFFF
+000007FFFFFFFE000007FFFFFFFC000007FFFFFFF0000007FFFFFFC0000007FFFFFF0000
+0007FFFFF800000007E1FF0000000007E0000000000007E0000000000007E00000000000
+07E0000000000007E0000000000007E0000000000007E0000000000007E0000000000007
+E0000000000007E0000000000007E0000000000007E00FFF00000007E07FFFF0000007E3
+FFFFFE000007E7FFFFFF800007FFF807FFC00007FFC001FFE00007FE0000FFF80007FC00
+007FFC0007F800003FFC0007F000003FFE0007E000001FFF0003C000001FFF8000000000
+1FFF80000000001FFFC0000000000FFFC0000000000FFFE0000000000FFFE0000000000F
+FFE0000000000FFFE0000000000FFFF0000000000FFFF0000000000FFFF00FE000000FFF
+F01FF000000FFFF03FF800000FFFF07FFC00000FFFF0FFFE00000FFFF0FFFE00000FFFF0
+FFFE00000FFFF0FFFE00000FFFF0FFFE00000FFFE0FFFE00000FFFE0FFFE00000FFFE0FF
+FC00000FFFE07FF800001FFFC07FF000001FFFC07FE000001FFF803E0000003FFF803F00
+00003FFF001F8000007FFE001FC000007FFC000FE00000FFF80007F80001FFF00003FE00
+07FFE00001FFC03FFFC00000FFFFFFFF8000003FFFFFFE0000001FFFFFF800000003FFFF
+C0000000007FF8000000344F79CD43>I<0000000FFF0000000000FFFFE000000007FFFF
+F00000001FFFFFFC0000007FFE03FE000001FFF0007F000003FFC0003F800007FF00001F
+80000FFE00007FC0001FFC0000FFC0003FF80001FFE0007FF00003FFE000FFF00007FFE0
+01FFE00007FFE001FFE00007FFE003FFC00007FFE007FFC00007FFE007FFC00007FFE00F
+FFC00003FFC00FFF800001FF801FFF800000FF001FFF8000007E001FFF80000000003FFF
+80000000003FFF80000000003FFF00000000007FFF00000000007FFF00000000007FFF00
+080000007FFF01FFF800007FFF07FFFF0000FFFF0FFFFFC000FFFF1FFFFFF000FFFF3F00
+7FF800FFFF3C003FFC00FFFF78001FFE00FFFFF0000FFF00FFFFF00007FF80FFFFE00007
+FFC0FFFFE00007FFC0FFFFC00007FFE0FFFFC00003FFF0FFFF800003FFF0FFFF800003FF
+F8FFFF800003FFF8FFFF800003FFF8FFFF800003FFF8FFFF000003FFFCFFFF000003FFFC
+FFFF000003FFFC7FFF000003FFFC7FFF000003FFFC7FFF000003FFFC7FFF000003FFFC7F
+FF000003FFFC7FFF000003FFFC3FFF000003FFFC3FFF000003FFFC3FFF000003FFFC3FFF
+000003FFFC1FFF000003FFF81FFF800003FFF81FFF800003FFF80FFF800003FFF80FFF80
+0003FFF007FF800007FFF007FF800007FFE003FFC00007FFC001FFC00007FFC001FFE000
+0FFF8000FFF0000FFF00007FF8001FFE00003FFC007FFC00001FFF01FFF800000FFFFFFF
+F0000003FFFFFFC0000000FFFFFF000000003FFFFC0000000007FFC00000364F7ACD43>
+I<1F000000000000001F800000000000001FC00000000000001FFF8000000000001FFFFF
+FFFFFFFF801FFFFFFFFFFFFF801FFFFFFFFFFFFF801FFFFFFFFFFFFF803FFFFFFFFFFFFF
+803FFFFFFFFFFFFF003FFFFFFFFFFFFE003FFFFFFFFFFFFC003FFFFFFFFFFFF8003FFFFF
+FFFFFFF8003FFFFFFFFFFFF0003FFFFFFFFFFFE0003FFFFFFFFFFFC0007FFFFFFFFFFF80
+007F800000007F00007E00000000FF00007E00000001FE00007C00000003FC00007C0000
+0003F800007C00000007F000007C0000000FF000007C0000001FE00000F80000003FC000
+00F80000007F800000F80000007F000000F8000000FE00000000000001FE000000000000
+03FC00000000000003F800000000000007F00000000000000FF00000000000001FE00000
+000000001FE00000000000003FC00000000000003FC00000000000007F80000000000000
+FF80000000000000FF80000000000001FF00000000000001FF00000000000003FF000000
+00000003FE00000000000007FE00000000000007FE0000000000000FFE0000000000000F
+FE0000000000000FFC0000000000001FFC0000000000001FFC0000000000003FFC000000
+0000003FFC0000000000003FFC0000000000003FFC0000000000007FFC0000000000007F
+F80000000000007FF80000000000007FF8000000000000FFF8000000000000FFF8000000
+000000FFF8000000000000FFF8000000000000FFF8000000000001FFF8000000000001FF
+F8000000000001FFF8000000000001FFF8000000000001FFF8000000000001FFF8000000
+000001FFF8000000000001FFF8000000000001FFF8000000000001FFF8000000000001FF
+F8000000000001FFF8000000000000FFF0000000000000FFF00000000000003FC0000000
+0000001F8000000000395279D043>I<000007FFC0000000007FFFFC00000003FFFFFF80
+00000FFFFFFFE000001FFC01FFF800003FE0003FFC00007F80000FFE0000FF000007FF00
+01FE000003FF0003FC000001FF8007FC000001FFC007F8000000FFC00FF8000000FFC00F
+F8000000FFE00FF80000007FE00FF80000007FE01FF80000007FE01FFC0000007FE01FFC
+0000007FE01FFE0000007FE01FFF0000007FE01FFF800000FFE01FFFE00000FFC01FFFF8
+0000FFC01FFFFE0001FF800FFFFF0001FF800FFFFFC003FF000FFFFFF007FE0007FFFFF8
+07FC0007FFFFFE1FF80003FFFFFFBFF00001FFFFFFFFE00001FFFFFFFF800000FFFFFFFE
+0000007FFFFFFF0000003FFFFFFF8000000FFFFFFFE0000007FFFFFFF0000001FFFFFFFC
+000007FFFFFFFE00001FFFFFFFFF00003FFFFFFFFF8000FFE7FFFFFF8001FF81FFFFFFC0
+03FF007FFFFFE007FE001FFFFFF00FFC000FFFFFF01FF80003FFFFF01FF80000FFFFF83F
+F000007FFFF83FF000001FFFF87FE0000007FFFC7FE0000001FFFC7FE0000000FFFCFFC0
+0000007FFCFFC00000003FFCFFC00000003FFCFFC00000001FFCFFC00000001FFCFFC000
+00000FFCFFC00000000FFCFFC00000000FF8FFC00000000FF8FFE00000000FF87FE00000
+000FF07FF00000001FF07FF00000001FF03FF80000003FE01FF80000003FC01FFC000000
+7FC00FFE000000FF8007FF800003FF0003FFE0000FFE0001FFFC00FFFC00007FFFFFFFF0
+00003FFFFFFFE000000FFFFFFF80000001FFFFFC000000000FFFC00000364F7ACD43>I<
+00000FFF8000000000FFFFF800000003FFFFFE0000000FFFFFFF8000001FFF03FFC00000
+7FF800FFE00000FFF0003FF00001FFE0001FF80003FFC0001FFC0007FFC0000FFE000FFF
+80000FFF000FFF800007FF001FFF800007FF803FFF800007FF803FFF000007FFC07FFF00
+0007FFC07FFF000003FFE07FFF000003FFE07FFF000003FFF0FFFF000003FFF0FFFF0000
+03FFF0FFFF000003FFF0FFFF000003FFF8FFFF000003FFF8FFFF000003FFF8FFFF000003
+FFF8FFFF000003FFF8FFFF000003FFF8FFFF000003FFFCFFFF000003FFFCFFFF000003FF
+FCFFFF000003FFFC7FFF000007FFFC7FFF000007FFFC7FFF000007FFFC3FFF000007FFFC
+3FFF000007FFFC3FFF00000FFFFC1FFF80000FFFFC0FFF80001FFFFC0FFF80001FFFFC07
+FF80003FFFFC03FFC0003FFFFC01FFE0007BFFFC00FFF000F3FFFC007FF803F3FFFC001F
+FFFFE3FFFC000FFFFFC3FFFC0003FFFF83FFF800007FFE03FFF80000004003FFF8000000
+0003FFF80000000003FFF80000000003FFF00000000007FFF00000000007FFF000000000
+07FFF001F8000007FFE003FC000007FFE007FE000007FFC00FFF000007FFC01FFF80000F
+FF801FFF80000FFF801FFF80000FFF001FFF80001FFF001FFF80001FFE001FFF80003FFC
+001FFF00003FFC000FFE00007FF8000FFC0000FFF0000FF80001FFE00007F00003FFC000
+03FC000FFF800003FF807FFE000001FFFFFFFC0000007FFFFFF00000003FFFFFC0000000
+0FFFFE0000000000FFF0000000364F7ACD43>I<00000000001F00000000000000000000
+003F80000000000000000000007FC0000000000000000000007FC0000000000000000000
+00FFE000000000000000000000FFE000000000000000000000FFE0000000000000000000
+01FFF000000000000000000001FFF000000000000000000003FFF8000000000000000000
+03FFF800000000000000000003FFF800000000000000000007FFFC000000000000000000
+07FFFC00000000000000000007FFFC0000000000000000000FFFFE000000000000000000
+0FFFFE0000000000000000001FFFFF0000000000000000001FFFFF000000000000000000
+1FFFFF0000000000000000003FFFFF8000000000000000003F7FFF800000000000000000
+7F7FFFC000000000000000007E7FFFC000000000000000007E3FFFC00000000000000000
+FE3FFFE00000000000000000FC1FFFE00000000000000001FC1FFFF00000000000000001
+F81FFFF00000000000000001F80FFFF00000000000000003F80FFFF80000000000000003
+F007FFF80000000000000007F007FFFC0000000000000007E007FFFC0000000000000007
+E003FFFC000000000000000FE003FFFE000000000000000FC001FFFE000000000000001F
+C001FFFF000000000000001F8001FFFF000000000000001F8000FFFF000000000000003F
+8000FFFF800000000000003F00007FFF800000000000007F00007FFFC00000000000007E
+00007FFFC00000000000007E00003FFFC0000000000000FE00003FFFE0000000000000FC
+00001FFFE0000000000001FC00001FFFF0000000000001F800001FFFF0000000000001F8
+00000FFFF0000000000003F800000FFFF8000000000003F0000007FFF8000000000007F0
+000007FFFC000000000007E0000007FFFC000000000007E0000003FFFC00000000000FFF
+FFFFFFFFFE00000000000FFFFFFFFFFFFE00000000001FFFFFFFFFFFFF00000000001FFF
+FFFFFFFFFF00000000001FFFFFFFFFFFFF00000000003F80000000FFFF80000000003F00
+0000007FFF80000000007F000000007FFFC0000000007F000000007FFFC0000000007E00
+0000003FFFC000000000FE000000003FFFE000000000FC000000001FFFE000000001FC00
+0000001FFFF000000001FC000000001FFFF000000001F8000000000FFFF000000003F800
+0000000FFFF800000003F00000000007FFF800000007F00000000007FFFC00000007F000
+00000007FFFC00000007E00000000003FFFC0000000FE00000000003FFFE0000000FC000
+00000003FFFE0000001FC00000000001FFFF000000FFFC0000000001FFFF0000FFFFFFF8
+00000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE0FFFFFFF8
+00000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE05B547BD366>65
+D<0000000001FFFC000001C0000000007FFFFFC00003C000000007FFFFFFF80007C00000
+003FFFFFFFFE001FC0000000FFFFFFFFFF803FC0000003FFFFE003FFC07FC000000FFFFC
+00003FF0FFC000003FFFE000000FF9FFC000007FFF80000003FFFFC00001FFFE00000000
+FFFFC00003FFF8000000007FFFC00007FFF0000000003FFFC0000FFFE0000000001FFFC0
+001FFFC0000000000FFFC0003FFF800000000007FFC0007FFF000000000003FFC000FFFE
+000000000001FFC000FFFE000000000001FFC001FFFC000000000000FFC003FFF8000000
+000000FFC003FFF80000000000007FC007FFF00000000000007FC00FFFF0000000000000
+3FC00FFFF00000000000003FC01FFFE00000000000001FC01FFFE00000000000001FC01F
+FFE00000000000001FC03FFFC00000000000001FC03FFFC00000000000000FC03FFFC000
+00000000000FC07FFFC00000000000000FC07FFFC00000000000000FC07FFFC000000000
+000000007FFF8000000000000000007FFF800000000000000000FFFF8000000000000000
+00FFFF800000000000000000FFFF800000000000000000FFFF800000000000000000FFFF
+800000000000000000FFFF800000000000000000FFFF800000000000000000FFFF800000
+000000000000FFFF800000000000000000FFFF800000000000000000FFFF800000000000
+000000FFFF800000000000000000FFFF800000000000000000FFFF800000000000000000
+7FFF8000000000000000007FFF8000000000000000007FFFC000000000000000007FFFC0
+00000000000000007FFFC000000000000007C03FFFC000000000000007C03FFFC0000000
+00000007C03FFFC000000000000007C01FFFE000000000000007C01FFFE0000000000000
+07C01FFFE00000000000000FC00FFFF00000000000000F800FFFF00000000000000F8007
+FFF00000000000001F8003FFF80000000000001F8003FFF80000000000001F0001FFFC00
+00000000003F0000FFFE0000000000007E0000FFFE0000000000007E00007FFF00000000
+0000FC00003FFF800000000001F800001FFFC00000000003F800000FFFE00000000007F0
+000007FFF0000000000FE0000003FFFC000000001FC0000001FFFE000000007F80000000
+7FFF80000000FF000000003FFFE0000007FE000000000FFFFE00001FF80000000003FFFF
+E001FFF00000000000FFFFFFFFFFC000000000003FFFFFFFFF00000000000007FFFFFFFC
+000000000000007FFFFFE00000000000000001FFFC00000000525479D261>67
+D<FFFFFFFFFFFFFF8000000000FFFFFFFFFFFFFFFC00000000FFFFFFFFFFFFFFFF800000
+00FFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFC0000000007FFF000000FFFFF0000
+000007FFF0000000FFFFC000000007FFF00000001FFFE000000007FFF000000007FFF800
+000007FFF000000001FFFC00000007FFF000000000FFFE00000007FFF0000000007FFF00
+000007FFF0000000003FFF80000007FFF0000000001FFFC0000007FFF0000000000FFFC0
+000007FFF00000000007FFE0000007FFF00000000003FFF0000007FFF00000000003FFF8
+000007FFF00000000001FFF8000007FFF00000000001FFFC000007FFF00000000000FFFC
+000007FFF00000000000FFFE000007FFF00000000000FFFE000007FFF000000000007FFF
+000007FFF000000000007FFF000007FFF000000000007FFF000007FFF000000000007FFF
+800007FFF000000000003FFF800007FFF000000000003FFF800007FFF000000000003FFF
+C00007FFF000000000003FFFC00007FFF000000000003FFFC00007FFF000000000003FFF
+C00007FFF000000000003FFFC00007FFF000000000003FFFE00007FFF000000000003FFF
+E00007FFF000000000003FFFE00007FFF000000000001FFFE00007FFF000000000001FFF
+E00007FFF000000000001FFFE00007FFF000000000001FFFE00007FFF000000000001FFF
+E00007FFF000000000001FFFE00007FFF000000000001FFFE00007FFF000000000001FFF
+E00007FFF000000000001FFFE00007FFF000000000003FFFE00007FFF000000000003FFF
+E00007FFF000000000003FFFE00007FFF000000000003FFFC00007FFF000000000003FFF
+C00007FFF000000000003FFFC00007FFF000000000003FFFC00007FFF000000000003FFF
+C00007FFF000000000003FFF800007FFF000000000003FFF800007FFF000000000007FFF
+800007FFF000000000007FFF000007FFF000000000007FFF000007FFF000000000007FFF
+000007FFF00000000000FFFE000007FFF00000000000FFFE000007FFF00000000000FFFC
+000007FFF00000000001FFFC000007FFF00000000001FFF8000007FFF00000000003FFF0
+000007FFF00000000007FFF0000007FFF00000000007FFE0000007FFF0000000000FFFC0
+000007FFF0000000001FFF80000007FFF0000000003FFF00000007FFF000000000FFFE00
+000007FFF000000001FFFC00000007FFF000000007FFF800000007FFF00000001FFFF000
+000007FFF0000000FFFFC000000007FFF000000FFFFF000000FFFFFFFFFFFFFFFFFE0000
+00FFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFC0000000FFFFFFFFFFFFFFFC000000
+00FFFFFFFFFFFFFF80000000005B527CD167>I<FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFF
+FFFFFF80FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFF800007
+FFF8000001FFFFC00007FFF80000001FFFC00007FFF800000007FFC00007FFF800000001
+FFC00007FFF800000000FFC00007FFF8000000007FC00007FFF8000000003FC00007FFF8
+000000001FC00007FFF8000000001FC00007FFF8000000000FE00007FFF8000000000FE0
+0007FFF80000000007E00007FFF80000000007E00007FFF80000000007E00007FFF80000
+000003E00007FFF80000000003E00007FFF80000000003E00007FFF80000F80003E00007
+FFF80000F80003F00007FFF80000F80001F00007FFF80000F80001F00007FFF80000F800
+01F00007FFF80000F80001F00007FFF80000F80000000007FFF80001F80000000007FFF8
+0001F80000000007FFF80001F80000000007FFF80003F80000000007FFF80007F8000000
+0007FFF8000FF80000000007FFF8007FF80000000007FFFFFFFFF80000000007FFFFFFFF
+F80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007
+FFF8007FF80000000007FFF8000FF80000000007FFF80007F80000000007FFF80003F800
+00000007FFF80001F80000000007FFF80001F80000000007FFF80001F80000000007FFF8
+0000F80000000007FFF80000F800003E0007FFF80000F800003E0007FFF80000F800003E
+0007FFF80000F800007C0007FFF80000F800007C0007FFF80000F800007C0007FFF80000
+0000007C0007FFF800000000007C0007FFF80000000000FC0007FFF80000000000FC0007
+FFF80000000000F80007FFF80000000000F80007FFF80000000001F80007FFF800000000
+01F80007FFF80000000001F80007FFF80000000003F80007FFF80000000003F00007FFF8
+0000000007F00007FFF8000000000FF00007FFF8000000000FF00007FFF8000000001FF0
+0007FFF8000000003FF00007FFF8000000007FE00007FFF800000001FFE00007FFF80000
+0007FFE00007FFF80000001FFFE00007FFF8000003FFFFE0FFFFFFFFFFFFFFFFFFE0FFFF
+FFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFF
+FFC04F517CD058>I<FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFF
+FFFE00FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFE000007FFF8000007FFFF000007FF
+F80000007FFF000007FFF80000001FFF000007FFF800000007FF000007FFF800000003FF
+000007FFF800000001FF000007FFF800000000FF000007FFF8000000007F000007FFF800
+0000003F000007FFF8000000003F800007FFF8000000003F800007FFF8000000001F8000
+07FFF8000000001F800007FFF8000000001F800007FFF8000000000F800007FFF8000000
+000F800007FFF8000000000F800007FFF8000000000F800007FFF8000000000FC00007FF
+F80000F80007C00007FFF80000F80007C00007FFF80000F80007C00007FFF80000F80007
+C00007FFF80000F80000000007FFF80000F80000000007FFF80000F80000000007FFF800
+01F80000000007FFF80001F80000000007FFF80001F80000000007FFF80003F800000000
+07FFF80007F80000000007FFF8000FF80000000007FFF8007FF80000000007FFFFFFFFF8
+0000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FF
+FFFFFFF80000000007FFF8007FF80000000007FFF8000FF80000000007FFF80007F80000
+000007FFF80003F80000000007FFF80001F80000000007FFF80001F80000000007FFF800
+01F80000000007FFF80000F80000000007FFF80000F80000000007FFF80000F800000000
+07FFF80000F80000000007FFF80000F80000000007FFF80000F80000000007FFF80000F8
+0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF
+F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000
+000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800
+00000000000007FFF80000000000000007FFF80000000000000007FFF800000000000000
+07FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF8000000
+0000000007FFF8000000000000FFFFFFFFFFF800000000FFFFFFFFFFF800000000FFFFFF
+FFFFF800000000FFFFFFFFFFF800000000FFFFFFFFFFF8000000004A517CD055>I<FFFF
+FFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC00007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007
+FFF800000007FFF800000007FFF800000007FFF800000007FFF80000FFFFFFFFFFC0FFFF
+FFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02A527CD132>73
+D<FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF80000
+00FFFFFFFFFFF80000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000
+000007FFF800000000000007FFF800000000000007FFF8000000007C0007FFF800000000
+7C0007FFF8000000007C0007FFF8000000007C0007FFF800000000FC0007FFF800000000
+F80007FFF800000000F80007FFF800000000F80007FFF800000000F80007FFF800000000
+F80007FFF800000001F80007FFF800000001F80007FFF800000001F80007FFF800000003
+F80007FFF800000003F80007FFF800000007F80007FFF800000007F00007FFF80000000F
+F00007FFF80000000FF00007FFF80000001FF00007FFF80000003FF00007FFF80000007F
+F00007FFF8000000FFF00007FFF8000003FFF00007FFF8000007FFF00007FFF800003FFF
+F00007FFF80001FFFFF0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFF
+E0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE046527CD151>76 D<FFFFFFFFFFFFFF0000
+00FFFFFFFFFFFFFFF80000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFE000FFFFFFFFFF
+FFFFFFF0000007FFF000001FFFFC000007FFF0000001FFFF000007FFF00000007FFF8000
+07FFF00000003FFFC00007FFF00000000FFFE00007FFF00000000FFFF00007FFF0000000
+07FFF00007FFF000000003FFF80007FFF000000003FFFC0007FFF000000003FFFC0007FF
+F000000001FFFE0007FFF000000001FFFE0007FFF000000001FFFE0007FFF000000001FF
+FE0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000
+000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF00
+07FFF000000001FFFF0007FFF000000001FFFE0007FFF000000001FFFE0007FFF0000000
+01FFFE0007FFF000000001FFFC0007FFF000000003FFFC0007FFF000000003FFFC0007FF
+F000000003FFF80007FFF000000007FFF00007FFF00000000FFFE00007FFF00000001FFF
+E00007FFF00000003FFFC00007FFF00000007FFF000007FFF0000001FFFE000007FFF000
+001FFFFC000007FFFFFFFFFFFFF0000007FFFFFFFFFFFFC0000007FFFFFFFFFFFE000000
+07FFFFFFFFFFE000000007FFF80000000000000007FFF80000000000000007FFF8000000
+0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF
+F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000
+000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800
+00000000000007FFF80000000000000007FFF80000000000000007FFF800000000000000
+07FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF8000000
+0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF
+F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000
+000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800
+0000000000FFFFFFFFFFC000000000FFFFFFFFFFC000000000FFFFFFFFFFC000000000FF
+FFFFFFFFC000000000FFFFFFFFFFC00000000050527CD15C>80 D<00000FFF8000070000
+00FFFFF8000F000007FFFFFF001F00001FFFFFFFC03F00003FFFFFFFF07F0000FFFC00FF
+F8FF0001FFE0000FFDFF0003FF800001FFFF0007FE0000007FFF000FFC0000003FFF000F
+F80000000FFF001FF800000007FF001FF000000003FF003FF000000003FF003FE0000000
+01FF007FE000000000FF007FE000000000FF007FE0000000007F00FFE0000000007F00FF
+E0000000003F00FFE0000000003F00FFF0000000003F00FFF0000000003F00FFF8000000
+001F00FFF8000000001F00FFFC000000001F00FFFE000000001F00FFFF000000000000FF
+FFC000000000007FFFF000000000007FFFFF00000000007FFFFFF8000000003FFFFFFF80
+0000003FFFFFFFFC0000001FFFFFFFFFC000001FFFFFFFFFF000000FFFFFFFFFFC000007
+FFFFFFFFFF000003FFFFFFFFFFC00001FFFFFFFFFFE00000FFFFFFFFFFF000007FFFFFFF
+FFF800003FFFFFFFFFFC00000FFFFFFFFFFE000003FFFFFFFFFE000000FFFFFFFFFF0000
+001FFFFFFFFF80000000FFFFFFFF800000000FFFFFFFC0000000007FFFFFC00000000007
+FFFFE00000000000FFFFE000000000003FFFE000000000000FFFF0000000000007FFF000
+0000000003FFF0000000000003FFF0780000000001FFF0F80000000000FFF0F800000000
+00FFF0F80000000000FFF0F800000000007FF0F800000000007FF0FC00000000007FF0FC
+00000000007FF0FC00000000007FE0FE00000000007FE0FE00000000007FE0FF00000000
+00FFC0FF0000000000FFC0FF8000000000FFC0FFC000000001FF80FFE000000001FF00FF
+F000000003FF00FFFC00000007FE00FFFF0000000FFC00FFFFC000001FF800FFFFF80000
+7FF000FF1FFFC003FFE000FE0FFFFFFFFFC000FC03FFFFFFFF0000F8007FFFFFFC0000F0
+000FFFFFF00000E000007FFF0000003C5479D24B>83 D<3FFFFFFFFFFFFFFFFFFF803FFF
+FFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFF803FFFFFFFFF
+FFFFFFFFFF803FFFC0003FFFC0007FFF803FFE00003FFFC00007FF807FF800003FFFC000
+01FFC07FE000003FFFC00000FFC07FC000003FFFC000007FC07F8000003FFFC000003FC0
+7F0000003FFFC000001FC07F0000003FFFC000001FC07E0000003FFFC000000FC07E0000
+003FFFC000000FC07E0000003FFFC000000FC07C0000003FFFC0000007C07C0000003FFF
+C0000007C07C0000003FFFC0000007C07C0000003FFFC0000007C07C0000003FFFC00000
+07C0FC0000003FFFC0000007E0F80000003FFFC0000003E0F80000003FFFC0000003E0F8
+0000003FFFC0000003E0F80000003FFFC0000003E0F80000003FFFC0000003E0F8000000
+3FFFC0000003E0000000003FFFC000000000000000003FFFC000000000000000003FFFC0
+00000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000
+00000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000
+00003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003F
+FFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC000
+000000000000003FFFC000000000000000003FFFC000000000000000003FFFC000000000
+000000003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000
+003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFF
+C000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC00000
+0000000000003FFFC000000000000000003FFFC000000000000000003FFFC00000000000
+0000003FFFC000000000000000003FFFC000000000000000003FFFC00000000000000000
+3FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0
+00000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000
+00000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000
+00003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000FFFFFF
+FFFFFFF000000000FFFFFFFFFFFFF000000000FFFFFFFFFFFFF000000000FFFFFFFFFFFF
+F000000000FFFFFFFFFFFFF0000053517BD05E>I<FFFFFFFFFE0000001FFFFFFEFFFFFF
+FFFE0000001FFFFFFEFFFFFFFFFE0000001FFFFFFEFFFFFFFFFE0000001FFFFFFEFFFFFF
+FFFE0000001FFFFFFE001FFFF000000000003FFE00001FFFF0000000000007F000000FFF
+F0000000000007E000000FFFF800000000000FE0000007FFF800000000000FC0000007FF
+FC00000000000FC0000007FFFC00000000001FC0000003FFFE00000000001F80000003FF
+FE00000000003F80000001FFFE00000000003F00000001FFFF00000000007F00000000FF
+FF00000000007E00000000FFFF80000000007E00000000FFFF8000000000FE000000007F
+FFC000000000FC000000007FFFC000000001FC000000003FFFE000000001F8000000003F
+FFE000000003F8000000001FFFE000000003F0000000001FFFF000000007F0000000001F
+FFF000000007F0000000000FFFF800000007E0000000000FFFF80000000FE00000000007
+FFFC0000000FC00000000007FFFC0000001FC00000000003FFFC0000001F800000000003
+FFFE0000003F800000000003FFFE0000003F800000000001FFFF0000003F000000000001
+FFFF0000007F000000000000FFFF8000007E000000000000FFFF800000FE000000000000
+7FFF800000FC0000000000007FFFC00001FC0000000000007FFFC00001FC000000000000
+3FFFE00001F80000000000003FFFE00003F80000000000001FFFF00003F0000000000000
+1FFFF00007F00000000000000FFFF00007E00000000000000FFFF8000FE0000000000000
+0FFFF8000FE000000000000007FFFC000FC000000000000007FFFC001FC0000000000000
+03FFFE001F8000000000000003FFFE003F8000000000000001FFFE003F00000000000000
+01FFFF007F0000000000000001FFFF007F0000000000000000FFFF807E00000000000000
+00FFFF80FE00000000000000007FFFC0FC00000000000000007FFFC1FC00000000000000
+003FFFC1F800000000000000003FFFE3F800000000000000001FFFE3F000000000000000
+001FFFF3F000000000000000001FFFF7F000000000000000000FFFFFE000000000000000
+000FFFFFE0000000000000000007FFFFC0000000000000000007FFFFC000000000000000
+0003FFFF80000000000000000003FFFF80000000000000000003FFFF8000000000000000
+0001FFFF00000000000000000001FFFF00000000000000000000FFFE0000000000000000
+0000FFFE000000000000000000007FFC000000000000000000007FFC0000000000000000
+00007FFC000000000000000000003FF8000000000000000000003FF80000000000000000
+00001FF0000000000000000000001FF0000000000000000000000FE00000000000000000
+000007C000000000005F537DD166>86 D<00007FFF000000000007FFFFF0000000003FFF
+FFFE00000000FFFFFFFF80000001FFE00FFFC0000003FE0001FFF0000007FF0000FFF800
+0007FF80003FFC00000FFF80003FFE00000FFFC0001FFE00000FFFC0001FFF00000FFFC0
+000FFF80000FFFC0000FFF80000FFFC0000FFF800007FF800007FFC00007FF800007FFC0
+0003FF000007FFC00001FE000007FFC0000000000007FFC0000000000007FFC000000000
+0007FFC0000000000007FFC0000000000007FFC0000000000007FFC0000000007FFFFFC0
+0000000FFFFFFFC0000000FFFFFFFFC0000007FFFF87FFC000003FFFF007FFC000007FFF
+8007FFC00001FFFC0007FFC00003FFF00007FFC00007FFE00007FFC0000FFFC00007FFC0
+001FFF800007FFC0003FFF000007FFC0007FFF000007FFC0007FFE000007FFC0007FFE00
+0007FFC000FFFC000007FFC000FFFC000007FFC000FFFC000007FFC000FFFC000007FFC0
+00FFFC00000FFFC000FFFC00000FFFC000FFFE00001FFFC0007FFE00001DFFC0007FFE00
+003DFFC0003FFF000079FFE0001FFF8000F1FFF8000FFFC003E1FFFFE007FFF81FC0FFFF
+F003FFFFFF807FFFF000FFFFFF001FFFF0001FFFFC0007FFE00001FFE0000000003C387C
+B641>97 D<003FF0000000000000FFFFF0000000000000FFFFF0000000000000FFFFF000
+0000000000FFFFF0000000000000FFFFF000000000000003FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF001FFE000000000FFF00FFFFE00000000FFF03F
+FFFFC0000000FFF0FFFFFFF0000000FFF3FF01FFF8000000FFF7F8003FFE000000FFFFE0
+000FFF000000FFFF800007FF800000FFFF000003FFC00000FFFE000001FFE00000FFFC00
+0001FFF00000FFF8000000FFF80000FFF8000000FFF80000FFF80000007FFC0000FFF800
+00007FFC0000FFF80000007FFE0000FFF80000007FFE0000FFF80000007FFF0000FFF800
+00003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000003FFF8000FFF800
+00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF800
+00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF800
+00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF0000FFF800
+00003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000007FFE0000FFF800
+00007FFE0000FFF80000007FFE0000FFF80000007FFC0000FFF8000000FFFC0000FFF800
+0000FFF80000FFFC000001FFF00000FFFC000001FFF00000FFFE000003FFE00000FFFF00
+0007FFC00000FFFF80000FFF800000FFCFC0001FFF000000FF87F0007FFC000000FF03FE
+03FFF8000000FE00FFFFFFE0000000FC007FFFFF80000000F8001FFFFC00000000000003
+FFC000000041547BD24B>I<000001FFF8000000001FFFFF80000000FFFFFFF0000003FF
+FFFFFC00000FFFC00FFE00001FFE0001FF00007FFC0003FF8000FFF00007FF8001FFF000
+07FFC003FFE0000FFFC003FFC0000FFFC007FFC0000FFFC00FFF80000FFFC00FFF80000F
+FFC01FFF800007FF801FFF000007FF803FFF000003FF003FFF000001FE007FFF00000000
+007FFE00000000007FFE00000000007FFE0000000000FFFE0000000000FFFE0000000000
+FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FF
+FE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE
+00000000007FFE00000000007FFF00000000007FFF00000000003FFF00000000003FFF00
+000000003FFF00000003E01FFF80000003E01FFF80000007E00FFFC0000007C007FFC000
+0007C007FFE000000FC003FFE000001F8001FFF000003F0000FFF800007E00007FFE0000
+FC00003FFF0003F800000FFFE01FF0000003FFFFFFE0000000FFFFFF800000003FFFFE00
+00000001FFE0000033387CB63C>I<000000000001FF80000000000007FFFF8000000000
+0007FFFF80000000000007FFFF80000000000007FFFF80000000000007FFFF8000000000
+00001FFF8000000000000007FF8000000000000007FF8000000000000007FF8000000000
+000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000
+000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000
+000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000
+000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000
+000007FF8000000000000007FF8000000000000007FF8000000001FFE007FF800000001F
+FFFC07FF80000000FFFFFF07FF80000003FFFFFFC7FF8000000FFFE03FE7FF8000001FFF
+0007F7FF8000007FFC0001FFFF800000FFF80000FFFF800001FFF000003FFF800003FFE0
+00001FFF800007FFC000001FFF800007FFC000000FFF80000FFF8000000FFF80001FFF80
+00000FFF80001FFF0000000FFF80003FFF0000000FFF80003FFF0000000FFF80003FFF00
+00000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE00
+00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00
+00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00
+00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00
+00000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF80003FFF00
+00000FFF80003FFF0000000FFF80003FFF0000000FFF80001FFF0000000FFF80001FFF00
+00000FFF80000FFF8000000FFF80000FFF8000001FFF800007FFC000003FFF800003FFC0
+00003FFF800001FFE000007FFF800000FFF00001FFFF8000007FF80003FFFFE000003FFE
+000FEFFFFF80000FFFC07FCFFFFF800007FFFFFF8FFFFF800001FFFFFE0FFFFF8000003F
+FFF80FFFFF80000003FFC00FFE000041547CD24B>I<000003FFC0000000003FFFFC0000
+0001FFFFFF00000007FFFFFFC000000FFF81FFE000003FFC007FF800007FF8003FFC0000
+FFF0001FFE0001FFE0000FFE0003FFC00007FF0007FFC00007FF800FFF800003FF800FFF
+800003FFC01FFF800001FFC01FFF000001FFC03FFF000001FFE03FFF000001FFE07FFF00
+0000FFE07FFE000000FFE07FFE000000FFF07FFE000000FFF0FFFE000000FFF0FFFE0000
+00FFF0FFFE000000FFF0FFFE000000FFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFF
+FFF0FFFFFFFFFFFFE0FFFE0000000000FFFE0000000000FFFE0000000000FFFE00000000
+00FFFE0000000000FFFE00000000007FFE00000000007FFE00000000007FFF0000000000
+3FFF00000000003FFF00000000003FFF00000000E01FFF00000001F01FFF80000003F00F
+FF80000003F007FFC0000007E007FFC0000007E003FFE000000FC001FFF000001FC000FF
+F800003F80007FFC0000FF00001FFE0003FE00000FFFC03FF8000003FFFFFFF0000000FF
+FFFFC00000001FFFFE0000000001FFF0000034387CB63D>I<0000003FFC00000003FFFF
+0000000FFFFFC000003FFFFFE00000FFF81FF00001FFC03FF80003FF807FF80007FF00FF
+FC000FFE00FFFC001FFC00FFFC001FFC00FFFC003FF800FFFC003FF800FFFC003FF8007F
+F8007FF0007FF8007FF0003FF0007FF0000FC0007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000
+00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000FFFFFFFFE0
+00FFFFFFFFE000FFFFFFFFE000FFFFFFFFE000FFFFFFFFE000007FF8000000007FF80000
+00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000
+00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000
+00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000
+00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000
+00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000
+00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000
+00007FF8000000007FF8000000007FF8000000007FF8000000007FF80000007FFFFFFE00
+007FFFFFFE00007FFFFFFE00007FFFFFFE00007FFFFFFE00002E547CD329>I<00003FFF
+0000FF000003FFFFF007FFC0000FFFFFFC1FFFE0003FFFFFFF7FFFE0007FFC0FFFFF9FF0
+00FFE001FFF83FF001FFC000FFE03FF003FF80007FF01FF007FF00003FF81FE00FFF0000
+3FFC0FC00FFF00003FFC07801FFE00001FFE00001FFE00001FFE00003FFE00001FFF0000
+3FFE00001FFF00003FFE00001FFF00003FFE00001FFF00003FFE00001FFF00003FFE0000
+1FFF00003FFE00001FFF00003FFE00001FFF00003FFE00001FFF00001FFE00001FFE0000
+1FFE00001FFE00000FFF00003FFC00000FFF00003FFC000007FF00003FF8000003FF8000
+7FF0000001FFC000FFE0000000FFE001FFC0000000FFFC0FFF80000001FFFFFFFF000000
+03EFFFFFFC00000003C3FFFFF000000007C03FFF0000000007C000000000000007C00000
+000000000FC00000000000000FC00000000000000FC00000000000000FE0000000000000
+0FE00000000000000FF80000000000000FFE0000000000000FFFFFFFFF00000007FFFFFF
+FFF8000007FFFFFFFFFF000007FFFFFFFFFFC00003FFFFFFFFFFE00001FFFFFFFFFFF000
+00FFFFFFFFFFF800007FFFFFFFFFFC00007FFFFFFFFFFE0001FFFFFFFFFFFF0007FFFFFF
+FFFFFF000FFE000003FFFF801FF80000003FFF803FF000000007FF807FE000000003FFC0
+7FE000000001FFC0FFC000000001FFC0FFC000000000FFC0FFC000000000FFC0FFC00000
+0000FFC0FFC000000000FFC0FFC000000000FFC0FFE000000001FFC07FE000000001FF80
+7FF000000003FF803FF000000003FF001FF800000007FE000FFE0000001FFC0007FF8000
+007FF80003FFE00001FFF00001FFFE001FFFE000007FFFFFFFFF8000000FFFFFFFFC0000
+0001FFFFFFE0000000000FFFFC0000003C4F7CB543>I<003FF0000000000000FFFFF000
+0000000000FFFFF0000000000000FFFFF0000000000000FFFFF0000000000000FFFFF000
+000000000003FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000
+1FFC00000000FFF000FFFFC0000000FFF003FFFFF0000000FFF00FFFFFF8000000FFF01F
+E07FFC000000FFF03F001FFE000000FFF07C001FFF000000FFF0F0000FFF000000FFF1E0
+000FFF800000FFF3C0000FFF800000FFF7800007FF800000FFF7800007FFC00000FFFF00
+0007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC000007FFC00000FFFC00
+0007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF8
+07FFFFFFC0FFFFFFF807FFFFFFC042537BD24B>I<007F000000FF800003FFE00007FFF0
+0007FFF0000FFFF8000FFFF8000FFFF8000FFFF8000FFFF8000FFFF8000FFFF80007FFF0
+0007FFF00003FFE00000FF8000007F000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000003FF0
+00FFFFF000FFFFF000FFFFF000FFFFF000FFFFF00001FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF000FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B547B
+D325>I<003FF00000000000FFFFF00000000000FFFFF00000000000FFFFF00000000000
+FFFFF00000000000FFFFF0000000000003FFF0000000000000FFF0000000000000FFF000
+0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000
+00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000
+0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000
+00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000
+0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00001FFFFF8
+00FFF00001FFFFF800FFF00001FFFFF800FFF00001FFFFF800FFF00001FFFFF800FFF000
+003FFE0000FFF000001FF00000FFF000003FC00000FFF000007F800000FFF00000FF0000
+00FFF00003FE000000FFF00007F8000000FFF0000FF0000000FFF0001FE0000000FFF000
+7FC0000000FFF000FF00000000FFF001FE00000000FFF003FC00000000FFF00FF8000000
+00FFF01FE000000000FFF03FF000000000FFF07FF800000000FFF1FFF800000000FFF3FF
+FC00000000FFF7FFFE00000000FFFFFFFF00000000FFFFFFFF80000000FFFF9FFF800000
+00FFFF0FFFC0000000FFFE0FFFE0000000FFF807FFF0000000FFF003FFF0000000FFF001
+FFF8000000FFF000FFFC000000FFF000FFFE000000FFF0007FFF000000FFF0003FFF0000
+00FFF0001FFF800000FFF0001FFFC00000FFF0000FFFE00000FFF00007FFF00000FFF000
+03FFF00000FFF00001FFF80000FFF00001FFFC0000FFF00000FFFE0000FFF000007FFE00
+00FFF000003FFF0000FFF000007FFFC0FFFFFFF003FFFFFFFFFFFFF003FFFFFFFFFFFFF0
+03FFFFFFFFFFFFF003FFFFFFFFFFFFF003FFFFFF40537CD247>107
+D<003FF000FFFFF000FFFFF000FFFFF000FFFFF000FFFFF00001FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0
+0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF000FFFFFFF0FFFFFFF0FFFFFF
+F0FFFFFFF0FFFFFFF01C537BD225>I<003FF0001FFC000000FFE00000FFFFF000FFFFC0
+0007FFFE0000FFFFF003FFFFF0001FFFFF8000FFFFF00FFFFFF8007FFFFFC000FFFFF01F
+E07FFC00FF03FFE000FFFFF03F001FFE01F800FFF00003FFF07C001FFF03E000FFF80000
+FFF0F0000FFF0780007FF80000FFF1E0000FFF8F00007FFC0000FFF3C0000FFF9E00007F
+FC0000FFF7800007FFBC00003FFC0000FFF7800007FFFC00003FFE0000FFFF000007FFF8
+00003FFE0000FFFE000007FFF000003FFE0000FFFE000007FFF000003FFE0000FFFC0000
+07FFE000003FFE0000FFFC000007FFE000003FFE0000FFFC000007FFE000003FFE0000FF
+FC000007FFE000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE
+0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000
+003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007
+FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8
+000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE00
+00FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC00000
+3FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FF
+C000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF800
+0007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000
+FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003F
+FE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC0
+00003FFE00FFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807
+FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFE6736
+7BB570>I<003FF0001FFC000000FFFFF000FFFFC00000FFFFF003FFFFF00000FFFFF00F
+FFFFF80000FFFFF01FE07FFC0000FFFFF03F001FFE000003FFF07C001FFF000000FFF0F0
+000FFF000000FFF1E0000FFF800000FFF3C0000FFF800000FFF7800007FF800000FFF780
+0007FFC00000FFFF000007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC00
+0007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800
+0007FFC00000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF8
+07FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC042367BB54B>I<000001FFE000
+000000001FFFFE0000000000FFFFFFC000000003FFFFFFF00000000FFF807FFC0000001F
+FC000FFE0000007FF80007FF800000FFF00003FFC00001FFE00001FFE00003FFC00000FF
+F00003FF8000007FF00007FF8000007FF8000FFF0000003FFC000FFF0000003FFC001FFF
+0000003FFE001FFF0000003FFE003FFE0000001FFF003FFE0000001FFF003FFE0000001F
+FF007FFE0000001FFF807FFE0000001FFF807FFE0000001FFF807FFE0000001FFF80FFFE
+0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001F
+FFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE
+0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC07FFE0000001FFF807FFE0000001F
+FF807FFE0000001FFF803FFE0000001FFF003FFF0000003FFF003FFF0000003FFF001FFF
+0000003FFE001FFF0000003FFE000FFF0000003FFC000FFF8000007FFC0007FF8000007F
+F80003FFC00000FFF00001FFE00001FFE00000FFF00003FFC000007FF80007FF8000003F
+FE001FFF0000000FFF807FFC00000007FFFFFFF800000000FFFFFFC0000000003FFFFF00
+0000000001FFE00000003A387CB643>I<003FF001FFE0000000FFFFF00FFFFE000000FF
+FFF03FFFFFC00000FFFFF0FFFFFFF00000FFFFF3FF01FFF80000FFFFF7F8007FFE000003
+FFFFE0001FFF000000FFFF80000FFF800000FFFF000007FFC00000FFFE000007FFE00000
+FFFC000003FFF00000FFF8000001FFF80000FFF8000001FFF80000FFF8000000FFFC0000
+FFF8000000FFFC0000FFF8000000FFFE0000FFF80000007FFE0000FFF80000007FFF0000
+FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFF0000FFF80000003FFF8000
+FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000
+FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000
+FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF0000
+FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFE0000
+FFF8000000FFFE0000FFF8000000FFFE0000FFF8000000FFFC0000FFF8000001FFFC0000
+FFF8000001FFF80000FFFC000003FFF00000FFFC000003FFF00000FFFE000007FFE00000
+FFFF00000FFFC00000FFFF80001FFF800000FFFFC0003FFF000000FFFFF000FFFC000000
+FFFBFE07FFF8000000FFF8FFFFFFE0000000FFF87FFFFF80000000FFF81FFFFC00000000
+FFF803FFC000000000FFF800000000000000FFF800000000000000FFF800000000000000
+FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000
+FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000
+FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000
+FFF800000000000000FFF8000000000000FFFFFFF80000000000FFFFFFF80000000000FF
+FFFFF80000000000FFFFFFF80000000000FFFFFFF80000000000414D7BB54B>I<007FE0
+03FE00FFFFE00FFF80FFFFE03FFFE0FFFFE07FFFF0FFFFE0FE1FF8FFFFE1F83FFC03FFE3
+E03FFE00FFE3C07FFE00FFE7807FFE00FFEF807FFE00FFEF007FFE00FFEE007FFE00FFFE
+003FFC00FFFC003FFC00FFFC001FF800FFFC000FF000FFF800000000FFF800000000FFF8
+00000000FFF800000000FFF800000000FFF000000000FFF000000000FFF000000000FFF0
+00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0
+00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0
+00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0
+00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0
+000000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC00002F367C
+B537>114 D<0003FFF00F00003FFFFE1F0000FFFFFFFF0003FFFFFFFF0007FF003FFF00
+0FF80007FF001FE00001FF003FC00000FF003F8000007F007F8000007F007F0000003F00
+7F0000003F00FF0000001F00FF0000001F00FF8000001F00FF8000001F00FFC000001F00
+FFF000000000FFFC00000000FFFFC00000007FFFFF0000007FFFFFF800003FFFFFFF0000
+3FFFFFFFC0001FFFFFFFF0000FFFFFFFF80007FFFFFFFC0003FFFFFFFE0000FFFFFFFF00
+003FFFFFFF80000FFFFFFFC00000FFFFFFC0000007FFFFE00000003FFFE000000007FFF0
+00000001FFF0780000007FF0F80000003FF0F80000001FF0FC0000001FF0FC0000000FF0
+FC0000000FF0FE0000000FF0FE0000000FE0FF0000000FE0FF8000001FE0FF8000001FC0
+FFC000001FC0FFE000003F80FFF800007F00FFFE0001FE00FFFFC00FFC00FF7FFFFFF800
+FC1FFFFFE000F807FFFF8000F000FFF800002C387CB635>I<00003E00000000003E0000
+0000003E00000000003E00000000003E00000000003E00000000007E00000000007E0000
+0000007E00000000007E0000000000FE0000000000FE0000000001FE0000000001FE0000
+000001FE0000000003FE0000000007FE0000000007FE000000000FFE000000001FFE0000
+00003FFE00000000FFFE00000001FFFE0000000FFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF
+00FFFFFFFFFF00FFFFFFFFFF00003FFE000000003FFE000000003FFE000000003FFE0000
+00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000
+00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000
+00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000
+00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0007
+C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007
+C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0001FFE000F80001FFF000F
+80001FFF000F80000FFF001F00000FFF801F000007FFC03E000003FFF0FC000001FFFFF8
+0000007FFFF00000001FFFE000000003FF80002A4D7ECB34>I<003FF8000001FFC000FF
+FFF80007FFFFC000FFFFF80007FFFFC000FFFFF80007FFFFC000FFFFF80007FFFFC000FF
+FFF80007FFFFC00003FFF800001FFFC00000FFF8000007FFC00000FFF8000007FFC00000
+FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000
+FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000
+FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000
+FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000
+FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000
+FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000
+FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000
+FFF8000007FFC00000FFF8000007FFC00000FFF800000FFFC00000FFF800000FFFC00000
+FFF800000FFFC00000FFF800001FFFC00000FFF800001FFFC000007FF800003FFFC00000
+7FF800003BFFC000007FF800007BFFC000003FFC0000F3FFC000003FFC0001E3FFF00000
+1FFE0007C3FFFFC0000FFFC03F83FFFFC00007FFFFFF03FFFFC00001FFFFFE03FFFFC000
+007FFFF803FFFFC0000007FFE003FF000042377BB54B>I<FFFFFFF00007FFFFFFFFFFF0
+0007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFF01FFF80000007FE0
+00FFFC0000003F0000FFFC0000003F00007FFC0000003E00007FFE0000007E00003FFE00
+00007C00003FFF000000FC00001FFF000000F800001FFF800001F800000FFF800001F000
+000FFFC00001F000000FFFC00003F0000007FFC00003E0000007FFE00007E0000003FFE0
+0007C0000003FFF0000FC0000001FFF0000F80000001FFF8001F80000000FFF8001F0000
+0000FFFC001F00000000FFFC003F000000007FFE003E000000007FFE007E000000003FFE
+007C000000003FFF00FC000000001FFF00F8000000001FFF81F8000000000FFF81F00000
+00000FFFC3F0000000000FFFC3F00000000007FFE3E00000000007FFE7E00000000003FF
+E7C00000000003FFFFC00000000001FFFF800000000001FFFF800000000000FFFF000000
+000000FFFF0000000000007FFE0000000000007FFE0000000000007FFE0000000000003F
+FC0000000000003FFC0000000000001FF80000000000001FF80000000000000FF0000000
+0000000FF000000000000007E000000000000003C000000040367DB447>I<FFFFFFE07F
+FFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC0FFFFFFE07F
+FFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC001FFF00000FFF000001FF80001FFF80000
+7FF0000007E00000FFF800007FF8000007C00000FFF800007FF8000007C00000FFFC0000
+3FF800000FC000007FFC00003FFC00000F8000007FFC00003FFC00000F8000007FFE0000
+3FFC00001F8000003FFE00007FFE00001F0000003FFF00007FFE00003F0000001FFF0000
+7FFF00003E0000001FFF0000FFFF00003E0000001FFF8000FFFF00007E0000000FFF8001
+FFFF80007C0000000FFFC001F3FF8000FC00000007FFC001F3FFC000F800000007FFC003
+F3FFC000F800000007FFE003E1FFC001F800000003FFE007E1FFE001F000000003FFF007
+C0FFE001F000000001FFF007C0FFF003E000000001FFF00FC0FFF003E000000001FFF80F
+807FF007E000000000FFF80F807FF807C000000000FFF81F003FF807C000000000FFFC1F
+003FF80FC0000000007FFC3F003FFC0F80000000007FFE3E001FFC1F80000000003FFE3E
+001FFE1F00000000003FFE7E001FFE1F00000000003FFF7C000FFE3F00000000001FFFFC
+000FFF3E00000000001FFFF80007FF7E00000000000FFFF80007FFFC00000000000FFFF8
+0007FFFC00000000000FFFF00003FFFC000000000007FFF00003FFF8000000000007FFE0
+0001FFF8000000000003FFE00001FFF0000000000003FFE00001FFF0000000000003FFC0
+0000FFF0000000000001FFC00000FFE0000000000001FF8000007FE0000000000001FF80
+00007FE0000000000000FF8000007FC0000000000000FF0000003FC00000000000007F00
+00003F800000000000007F0000003F800000000000003E0000001F000000005A367DB461
+>I<7FFFFFF0007FFFFE007FFFFFF0007FFFFE007FFFFFF0007FFFFE007FFFFFF0007FFF
+FE007FFFFFF0007FFFFE00007FFE00000FFF0000003FFF000007F80000001FFF800007F0
+0000000FFFC0000FE000000007FFC0001FC000000007FFE0003F8000000003FFF0003F00
+00000001FFF8007E0000000000FFFC00FC00000000007FFE01FC00000000007FFE03F800
+000000003FFF07F000000000001FFF8FE000000000000FFFCFC0000000000007FFFF8000
+0000000003FFFF00000000000003FFFF00000000000001FFFE00000000000000FFFC0000
+00000000007FFE000000000000003FFF000000000000003FFF000000000000001FFF8000
+00000000001FFFC00000000000003FFFE00000000000007FFFF0000000000000FFFFF000
+0000000001FDFFF8000000000001F8FFFC000000000003F07FFE000000000007E03FFF00
+000000000FE01FFF00000000001FC01FFF80000000003F800FFFC0000000007F0007FFE0
+00000000FE0003FFF000000000FC0001FFF800000001F80001FFF800000003F00000FFFC
+00000007F000007FFE0000000FE000003FFF0000001FC000001FFF800000FFF000001FFF
+8000FFFFFE0001FFFFFFC0FFFFFE0001FFFFFFC0FFFFFE0001FFFFFFC0FFFFFE0001FFFF
+FFC0FFFFFE0001FFFFFFC042357EB447>I<FFFFFFF00007FFFFFFFFFFF00007FFFFFFFF
+FFF00007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFF00FFF80000007FE000FFFC000000
+3F0000FFFC0000003F00007FFE0000003E00007FFE0000007E00003FFE0000007C00003F
+FF000000FC00001FFF000000F800001FFF800001F800000FFF800001F000000FFFC00003
+F0000007FFC00003E0000007FFE00003E0000007FFE00007E0000003FFF00007C0000003
+FFF0000FC0000001FFF8000F80000001FFF8001F80000000FFF8001F00000000FFFC003F
+000000007FFC003E000000007FFE007E000000003FFE007C000000003FFF00FC00000000
+3FFF00FC000000001FFF80F8000000001FFF81F8000000000FFFC1F0000000000FFFC3F0
+0000000007FFC3E00000000007FFE7E00000000003FFE7C00000000003FFFFC000000000
+01FFFF800000000001FFFF800000000000FFFF000000000000FFFF000000000000FFFF00
+00000000007FFE0000000000007FFE0000000000003FFC0000000000003FFC0000000000
+001FF80000000000001FF80000000000000FF00000000000000FF000000000000007E000
+000000000007E000000000000007E000000000000007C00000000000000FC00000000000
+000F800000000000001F800000000000001F000000000000003F000000001FC0003E0000
+00003FE0007E000000007FF0007C00000000FFF800FC00000000FFF800F800000000FFF8
+01F800000000FFF801F000000000FFF803F000000000FFF807E0000000007FF00FC00000
+00007FE01F80000000003FC07F00000000003F81FE00000000001FFFFC00000000000FFF
+F0000000000003FFE0000000000000FF000000000000404D7DB447>I
+E /Fr 42 127 df<00000FF8000000007FFE00000001F80780000007E001C000001F8000
+E000003F0007E000007E000FF000007E000FF00000FC000FF00000FC000FF00001F8000F
+F00001F80007E00001F80001800001F80000000001F80000000001F80000000001F80000
+000001F80000000001F80000000001F80000000001F80000000001F80000000001F80003
+F000FFFFFFFFF000FFFFFFFFF000FFFFFFFFF00001F8000FF00001F80003F00001F80003
+F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003
+F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003
+F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003
+F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003
+F00001F80003F00001F80003F00003FC0007F8007FFFE0FFFFC07FFFE0FFFFC07FFFE0FF
+FFC02A3B7FBA2E>12 D<03F000FFF000FFF000FFF00007F00003F00003F00003F00003F0
+0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
+0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0
+0007F800FFFFC0FFFFC0FFFFC012257EA417>16 D<003C007E007E00FE01FE03FC03F007
+E00FC01F801E003C007800F000C0000F0F6FB92A>19 D<03F00003F00003F00003FE0000
+3F80001FC0000FE00007E00007E00007E0000FE0001FC000FF80FFFE00FFE000130F757D
+25>24 D<0000600000E00001C0000380000700000E00001E00003C0000780000780000F0
+0001E00001E00003C00003C00007C0000780000F80000F00000F00001F00001E00001E00
+003E00003E00003E00007C00007C00007C00007C00007C00007C0000F80000F80000F800
+00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
+00F80000F80000F800007C00007C00007C00007C00007C00007C00003E00003E00003E00
+001E00001E00001F00000F00000F00000F800007800007C00003C00003C00001E00001E0
+0000F000007800007800003C00001E00000E000007000003800001C00000E00000601352
+78BD20>40 D<C00000E000007000003800001C00000E00000F000007800003C00003C000
+01E00000F00000F000007800007800007C00003C00003E00001E00001E00001F00000F00
+000F00000F80000F80000F800007C00007C00007C00007C00007C00007C00003E00003E0
+0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E00003E00003E00007C00007C00007C00007C00007C00007C0000F80000F80
+000F80000F00000F00001F00001E00001E00003E00003C00007C0000780000780000F000
+00F00001E00003C00003C0000780000F00000E00001C0000380000700000E00000C00000
+13527CBD20>I<1C007F00FF80FF80FF80FF80FF807F001C000909798817>46
+D<000FF00000007FFE000001FFFF800003E03FE0000F000FF0000E0007F8001C0003FC00
+380001FE00300001FE00700000FF00600000FF00FC0000FF00FF00007F80FF80007F80FF
+80007F80FF80007F80FF80007F80FF80007F807F00007F801C00007F800000007F800000
+00FF00000000FF00000000FF00000001FE00000001FC00000003FC00000003F800000007
+F000000007E00000000FE00000001FC00000003F800000003F000000007C00000000F800
+000001F000000003E000000007C00000000F800000000F000000001E000180003C000180
+007800018000F000038001E000030003C000030007800003000E000007000FFFFFFF001F
+FFFFFF003FFFFFFF007FFFFFFE00FFFFFFFE00FFFFFFFE00FFFFFFFE0021387CB72A>50
+D<0600000C000780003C0007F003F80007FFFFF80007FFFFF00007FFFFE00007FFFF8000
+07FFFF000007FFFC0000067FE00000060000000006000000000600000000060000000006
+000000000600000000060000000006000000000600000000060000000006000000000607
+F80000063FFE000006780F800007E007E000078003F000070001F800060001F800060000
+FC00000000FE00000000FE00000000FF000000007F000000007F000000007F800000007F
+800000007F800000007F803E00007F807F00007F80FF80007F80FF80007F80FF80007F80
+FF80007F80FF00007F00FE0000FF00E00000FF00600000FE00700000FE00300001FC0038
+0001F8001C0003F8001E0007F0000F800FE00007E03F800001FFFF0000007FFC0000001F
+E00000213A7CB72A>53 D<0000003800000000000038000000000000380000000000007C
+0000000000007C0000000000007C000000000000FE000000000000FE000000000000FE00
+0000000001FF000000000001FF000000000001FF0000000000037F8000000000037F8000
+000000077FC000000000063FC000000000063FC0000000000E3FE0000000000C1FE00000
+00000C1FE0000000001C1FF000000000180FF000000000180FF000000000380FF8000000
+003007F8000000003007F8000000007007FC000000006003FC000000006003FC00000000
+C003FE00000000C001FE00000000C001FE000000018001FF000000018000FF0000000180
+00FF000000030000FF8000000300007F8000000300007F8000000600007FC0000007FFFF
+FFC0000007FFFFFFC000000FFFFFFFE000000C00001FE000000C00001FE000001800000F
+F000001800000FF000001800000FF0000030000007F8000030000007F8000030000007F8
+000060000003FC000060000003FC0000E0000003FC0000E0000001FE0001E0000001FE00
+03F0000001FF000FFC000007FF80FFFF8000FFFFFEFFFF8000FFFFFEFFFF8000FFFFFE37
+3C7DBB3E>65 D<000001FF80018000000FFFE0038000007FFFF803800001FF807E078000
+03FC000F0F80000FF000039F80001FE00001DF80003F800000FF80007F0000007F8000FE
+0000003F8001FE0000003F8003FC0000001F8007F80000000F8007F80000000F800FF000
+000007800FF000000007801FE000000007801FE000000003803FE000000003803FC00000
+0003807FC000000001807FC000000001807FC000000001807F800000000180FF80000000
+0000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000000
+00FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000
+FF800000000000FF8000000000007F8000000000007FC000000001807FC000000001807F
+C000000001803FC000000001803FE000000001801FE000000003801FE000000003000FF0
+00000003000FF0000000070007F8000000070007F8000000060003FC0000000E0001FE00
+00001C0000FE0000001800007F0000003800003F8000007000001FE00000E000000FF000
+03C0000003FC000F80000001FF803F000000007FFFFC000000000FFFF00000000001FF80
+0000313D7BBA3C>67 D<FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0001FF80000F
+FC0000FF000001FC0000FF0000007E0000FF0000003E0000FF0000001E0000FF0000000E
+0000FF0000000E0000FF0000000E0000FF000000060000FF000000060000FF0000000600
+00FF000000070000FF000000030000FF0000C0030000FF0000C0030000FF0000C0030000
+FF0000C0000000FF0000C0000000FF0000C0000000FF0001C0000000FF0001C0000000FF
+0003C0000000FF000FC0000000FFFFFFC0000000FFFFFFC0000000FFFFFFC0000000FF00
+0FC0000000FF0003C0000000FF0001C0000000FF0001C0000000FF0000C0000000FF0000
+C0000000FF0000C0006000FF0000C0006000FF0000C0006000FF0000C000E000FF000000
+00C000FF00000000C000FF00000000C000FF00000000C000FF00000001C000FF00000001
+C000FF00000001C000FF000000038000FF000000038000FF000000078000FF0000000780
+00FF0000000F8000FF0000003F8000FF0000007F8001FF800007FF00FFFFFFFFFFFF00FF
+FFFFFFFFFF00FFFFFFFFFFFF0033397DB839>69 D<FFFFFFC0FFFFFFC0FFFFFFC000FFC0
+00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80
+00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80
+00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80
+00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80
+00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80
+00007F8000007F8000007F8000007F800000FFC000FFFFFFC0FFFFFFC0FFFFFFC01A397E
+B81E>73 D<FFFFFFE00000FFFFFFE00000FFFFFFE0000001FFC000000000FF0000000000
+FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000
+FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000
+FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000
+FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000
+FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000
+FF0000001800FF0000001800FF0000001800FF0000001800FF0000001800FF0000003800
+FF0000003000FF0000003000FF0000003000FF0000007000FF0000007000FF0000007000
+FF000000F000FF000000F000FF000001F000FF000003F000FF00000FF000FF00001FE001
+FF8000FFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE02D397DB834>76
+D<000003FF00000000001FFFE000000000FE01FC00000001F8007E00000007E0001F8000
+000FC0000FC000003F800007F000007F000003F80000FE000001FC0001FC000000FE0001
+F80000007E0003F80000007F0007F00000003F8007F00000003F800FE00000001FC00FE0
+0000001FC01FE00000001FE01FC00000000FE03FC00000000FF03FC00000000FF03FC000
+00000FF07FC00000000FF87F8000000007F87F8000000007F87F8000000007F8FF800000
+0007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF80000000
+07FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007
+FCFF8000000007FC7F8000000007F87FC00000000FF87FC00000000FF87FC00000000FF8
+3FC00000000FF03FC00000000FF01FE00000001FE01FE00000001FE01FE00000001FE00F
+F00000003FC007F00000003F8007F80000007F8003F80000007F0001FC000000FE0001FC
+000000FE0000FE000001FC00007F000003F800003F800007F000001FC0000FE0000007E0
+001F80000003F8007F00000000FE01FC000000001FFFE00000000003FF000000363D7BBA
+41>79 D<FFFFFFFFC000FFFFFFFFF800FFFFFFFFFE0001FF8001FF8000FF00003FC000FF
+00000FE000FF000007F000FF000003F800FF000003FC00FF000003FE00FF000001FE00FF
+000001FE00FF000001FF00FF000001FF00FF000001FF00FF000001FF00FF000001FF00FF
+000001FF00FF000001FF00FF000001FE00FF000001FE00FF000003FC00FF000003FC00FF
+000007F800FF000007F000FF00000FE000FF00003FC000FF0001FF0000FFFFFFFC0000FF
+FFFFF00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF
+0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF
+0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF
+0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000001FF
+80000000FFFFFF000000FFFFFF000000FFFFFF00000030397DB839>I<3FFFFFFFFFFFE0
+3FFFFFFFFFFFE03FFFFFFFFFFFE03FC003FF001FE03E0001FE0003E07C0001FE0001F078
+0001FE0000F0700001FE000070700001FE000070700001FE000070600001FE0000306000
+01FE000030600001FE000030600001FE000030E00001FE000038C00001FE000018C00001
+FE000018C00001FE000018C00001FE000018000001FE000000000001FE000000000001FE
+000000000001FE000000000001FE000000000001FE000000000001FE000000000001FE00
+0000000001FE000000000001FE000000000001FE000000000001FE000000000001FE0000
+00000001FE000000000001FE000000000001FE000000000001FE000000000001FE000000
+000001FE000000000001FE000000000001FE000000000001FE000000000001FE00000000
+0001FE000000000001FE000000000001FE000000000001FE000000000001FE0000000000
+01FE000000000001FE000000000001FE000000000001FE000000000001FE000000000001
+FE000000000007FF800000001FFFFFFFE000001FFFFFFFE000001FFFFFFFE00035397DB8
+3C>84 D<001FE0000000FFFC000003E03F000007000F80000F8007E0001FC003F0001FE0
+03F0001FE001F8001FE001F8001FE000FC000FC000FC00078000FC00000000FC00000000
+FC00000000FC00000000FC0000007FFC000007FFFC00003FE0FC0000FE00FC0003F800FC
+000FF000FC001FC000FC003FC000FC007F8000FC007F0000FC007F0000FC0CFE0000FC0C
+FE0000FC0CFE0000FC0CFE0001FC0CFE0001FC0CFF0003FC0C7F00077C0C7F80063E183F
+C01E3E180FE0781FF003FFF00FE0007F8007C026277DA52A>97 D<03F0000000FFF00000
+00FFF0000000FFF00000000FF000000003F000000003F000000003F000000003F0000000
+03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
+F000000003F000000003F000000003F000000003F000000003F01FE00003F07FF80003F1
+E03E0003F3801F8003F7000FC003FE0007E003FC0003F003F80001F803F00001F803F000
+00FC03F00000FC03F00000FE03F00000FE03F000007E03F000007F03F000007F03F00000
+7F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F
+03F000007E03F00000FE03F00000FE03F00000FC03F00001FC03F80001F803F80003F003
+FC0003F003EE0007E003C6000FC003C7801F000381E07E000300FFF80000001FC000283B
+7EB92E>I<0003FC00001FFF80007E03E001F8007003F000F807E001FC0FC003FC0FC003
+FC1F8003FC3F8003FC3F0001F87F0000F07F0000007F0000007E000000FE000000FE0000
+00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000
+007F0000007F0000003F0000063F8000061F80000E1FC0000C0FC0001C07E0003803F000
+7001F800E0007C07C0001FFF000007F8001F277DA525>I<0000000FC0000003FFC00000
+03FFC0000003FFC00000003FC00000000FC00000000FC00000000FC00000000FC0000000
+0FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000F
+C00000000FC00000000FC00000000FC00000000FC00003F80FC0001FFF0FC0007E078FC0
+00F801EFC003F0007FC007E0003FC00FC0001FC00FC0001FC01F80000FC03F80000FC03F
+00000FC07F00000FC07F00000FC07E00000FC0FE00000FC0FE00000FC0FE00000FC0FE00
+000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC07E0000
+0FC07F00000FC07F00000FC03F00000FC03F00000FC01F80001FC01F80001FC00FC0003F
+C007E0007FC003F000EFF001F801CFFF007C078FFF001FFE0FFF0007F80FC0283B7DB92E
+>I<0007F800001FFF00007C0FC001F803E003F001F007E001F80FC000F81F80007C1F80
+007C3F00007E3F00003E7F00003E7F00003F7E00003FFE00003FFE00003FFE00003FFFFF
+FFFFFFFFFFFFFE000000FE000000FE000000FE000000FE0000007E0000007E0000007F00
+00007F0000003F0000033F8000031F8000070FC0000607C0000E07E0001C01F0003800F8
+0070007E03E0001FFF800003FC0020277EA525>I<00007E000003FF80000FC1E0001F87
+E0003F0FF0007E0FF0007E0FF000FC0FF000FC0FF001F803C001F8000001F8000001F800
+0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
+0001F80000FFFFFC00FFFFFC00FFFFFC0001F8000001F8000001F8000001F8000001F800
+0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
+0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800
+0001F8000001F8000001F8000001F8000001F8000001F8000003FC00007FFFF8007FFFF8
+007FFFF8001C3B7FBA19>I<00000003F0000FF00FF8003FFC3C3C00F81F707C01F00FE0
+7C03E007C07C07C003E0100FC003F0000FC003F0001F8001F8001F8001F8001F8001F800
+1F8001F8001F8001F8001F8001F8001F8001F8001F8001F8000FC003F0000FC003F00007
+C003E00003E007C00003F00F800003F81F0000073FFC0000060FF000000E000000000E00
+0000000E000000000E000000000F000000000F000000000FC000000007FFFFC00007FFFF
+F80003FFFFFE0001FFFFFF8003FFFFFFC00F80007FE01F00000FF03E000003F07C000001
+F07C000001F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8FC000001F8
+7C000001F03E000003E03F000007E00F80000F8007E0003F0001FC01FC00007FFFF00000
+07FF000026387EA52A>I<03F000000000FFF000000000FFF000000000FFF0000000000F
+F00000000003F00000000003F00000000003F00000000003F00000000003F00000000003
+F00000000003F00000000003F00000000003F00000000003F00000000003F00000000003
+F00000000003F00000000003F00000000003F00000000003F00000000003F00FF0000003
+F03FFC000003F0F03F000003F1C01F800003F3800FC00003F7000FC00003FE000FC00003
+FC0007E00003FC0007E00003F80007E00003F80007E00003F80007E00003F00007E00003
+F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
+F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
+F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
+F00007E00003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029
+3A7EB92E>I<0380000FE0001FF0001FF0001FF0001FF0001FF0000FE000038000000000
+00000000000000000000000000000000000000000000000000000003F000FFF000FFF000
+FFF00007F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000
+03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000
+03F00003F00003F00003F00003F00003F00007F800FFFFC0FFFFC0FFFFC012387EB717>
+I<0001C00007F0000FF8000FF8000FF8000FF8000FF80007F00001C00000000000000000
+000000000000000000000000000000000000000000000001F800FFF800FFF800FFF80007
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
+F80001F80001F83C01F87E01F8FF01F0FF03F0FF03F0FF03E0FE07C07C07C03C0F000FFE
+0003F800154984B719>I<03F000FFF000FFF000FFF0000FF00003F00003F00003F00003
+F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003
+F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003
+F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003
+F00003F00003F00003F00003F00003F00003F00003F00003F00003F00007F800FFFFC0FF
+FFC0FFFFC0123A7EB917>108 D<03F00FF0001FE000FFF03FFC007FF800FFF0F03F01E0
+7E00FFF1C01F83803F000FF3800FC7001F8003F7000FCE001F8003FE000FDC001F8003FC
+0007F8000FC003FC0007F8000FC003F80007F0000FC003F80007F0000FC003F80007F000
+0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F0
+0007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E000
+0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F0
+0007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E000
+0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC007F8000FF0001FE0FFFF
+C1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40257EA445>I<03F00FF00000FF
+F03FFC0000FFF0F03F0000FFF1C01F80000FF3800FC00003F7000FC00003FE000FC00003
+FC0007E00003FC0007E00003F80007E00003F80007E00003F80007E00003F00007E00003
+F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
+F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
+F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003
+F00007E00003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029
+257EA42E>I<0003FE0000000FFF8000003E03E00000F800F80001F0007C0003E0003E00
+07C0001F000F80000F801F80000FC01F000007C03F000007E03F000007E07E000003F07E
+000003F07E000003F07E000003F0FE000003F8FE000003F8FE000003F8FE000003F8FE00
+0003F8FE000003F8FE000003F8FE000003F8FE000003F87E000003F07E000003F07F0000
+07F03F000007E03F000007E01F80000FC00F80000F800FC0001F8007E0003F0003F0007E
+0000F800F800007E03F000001FFFC0000003FE000025277EA52A>I<03F01FE000FFF07F
+F800FFF1E07E00FFF3801F8007F7000FC003FE0007E003FC0003F003F80003F803F00001
+F803F00001FC03F00000FC03F00000FE03F00000FE03F00000FE03F000007F03F000007F
+03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03
+F000007F03F00000FE03F00000FE03F00000FE03F00001FC03F00001FC03F80003F803F8
+0003F003FC0007F003FE000FE003F6000FC003F7803F0003F1E07E0003F0FFF80003F01F
+C00003F000000003F000000003F000000003F000000003F000000003F000000003F00000
+0003F000000003F000000003F000000003F000000007F8000000FFFFC00000FFFFC00000
+FFFFC0000028357EA42E>I<0003F800C0001FFE01C0007E0781C000FC01C3C003F000E3
+C007F00077C00FE00037C00FC0003FC01FC0001FC03F80001FC03F80000FC07F00000FC0
+7F00000FC07F00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE
+00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC07F00000FC07F00000FC07F00
+000FC03F00000FC03F80001FC01F80001FC01FC0003FC00FC0003FC007E0007FC003F000
+EFC001F801CFC0007E078FC0001FFE0FC00007F80FC00000000FC00000000FC00000000F
+C00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0
+0000000FC00000001FE0000003FFFF000003FFFF000003FFFF28357DA42C>I<07E01F00
+FFE07FC0FFE1E3E0FFE387F00FE707F003E607F003EE07F003EC03E003FC008003F80000
+03F8000003F8000003F8000003F0000003F0000003F0000003F0000003F0000003F00000
+03F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F00000
+03F0000003F0000003F0000003F0000003F0000007F80000FFFFF000FFFFF000FFFFF000
+1C257EA421>I<00FF030003FFE7000F80FF001E003F003C001F0078000F0070000700F0
+000700F0000700F0000300F8000300F8000300FC000300FF0000007FE000007FFF00003F
+FFE0001FFFF8000FFFFC0003FFFE0000FFFF000007FF8000007F8000001F80C0000FC0C0
+0007C0C00007C0E00003C0E00003C0E00003C0F00003C0F0000380F8000780FC000780FC
+000F00FF001E00F3C07C00E1FFF000C03F80001A277DA521>I<00180000001800000018
+0000001800000018000000380000003800000038000000780000007800000078000000F8
+000001F8000003F8000007F800001FFFFF00FFFFFF00FFFFFF0001F8000001F8000001F8
+000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8
+000001F8000001F8000001F8000001F8000001F8000001F8000001F800C001F800C001F8
+00C001F800C001F800C001F800C001F800C001F800C001F800C000FC01C000FC0180007C
+0380007E0300003F0700000FFE000001F8001A347FB220>I<03F00007E000FFF001FFE0
+00FFF001FFE000FFF001FFE0000FF0001FE00003F00007E00003F00007E00003F00007E0
+0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
+0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
+0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0
+0003F00007E00003F0000FE00003F0000FE00003F0000FE00003F0001FE00001F0001FE0
+0001F8003FE00000F80077F80000FC00E7FF80003F03C7FF80001FFF87FF800003FC07E0
+0029267EA42E>I<FFFF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007E003F000
+03C003F800038001F800030001F800030000FC00060000FC00060000FE000E00007E000C
+00007E000C00003F001800003F001800003F803800001F803000001F803000000FC06000
+000FC06000000FE060000007E0C0000007E0C0000003F180000003F180000003F1800000
+01FB00000001FB00000001FF00000000FE00000000FE000000007C000000007C00000000
+7C00000000380000000038000027257EA32C>I<FFFF1FFFE03FFEFFFF1FFFE03FFEFFFF
+1FFFE03FFE0FF800FF000FF807F0007E0003E007F0007E0003C003F0003E00018003F000
+3E00018001F8003F00030001F8003F00030001F8003F00030000FC003F80060000FC006F
+80060000FC006F800600007E00EFC00C00007E00C7C00C00007E00C7C00C00003F01C7E0
+1800003F0183E01800003F8183F03800001F8383F03000001F8301F03000001FC301F870
+00000FC600F86000000FC600F860000007E600FCC0000007EC007CC0000007EC007CC000
+0003FC007F80000003F8003F80000003F8003F80000001F8003F00000001F0001F000000
+01F0001F00000000F0001E00000000E0000E0000000060000C000037257EA33C>I<FFFF
+807FFF00FFFF807FFF00FFFF807FFF0003FE003FF00001FE001F800000FE001F0000007E
+001C0000003F00180000001F80300000001FC0700000000FC0E000000007E0C000000007
+F18000000003FB8000000001FF0000000000FE0000000000FE00000000007F0000000000
+3F00000000007F80000000007FC000000000CFC000000001C7E00000000383F000000007
+03F80000000601F80000000C00FC0000001C007E00000038007F00000078003F000000F0
+001F800001F8001FC0000FF8003FF000FFFE00FFFF80FFFE00FFFF80FFFE00FFFF802924
+7FA32C>I<FFFF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007C003F000038001
+F800038001F800030001FC00030000FC00060000FC000600007E000C00007E000C00007F
+000C00003F001800003F001800001F803000001F803000001FC07000000FC06000000FC0
+60000007E0C0000007E0C0000007F1C0000003F180000003F180000001FB00000001FB00
+000001FF00000000FE00000000FE000000007C000000007C000000007C00000000380000
+0000380000000030000000003000000000700000000060000000006000000000C0000000
+00C000007C01C00000FE01800000FE03800000FE03000000FE06000000FC0E000000701C
+00000038380000001FF00000000FC000000027357EA32C>I<01E0004007F800E00FFE01
+C01FFF87803C3FFF00700FFE00E003FC004000F0001B0879B62A>126
+D E /Fs 13 118 df<000F00003F80003FC0007FE000FFE001FFE003FFE007FFE007FFC0
+0FFF801FFE003FF8007FE000FF80007E000038000013106DBA30>19
+D<00000003E00000000000000007F00000000000000007F0000000000000000FF8000000
+000000000FF8000000000000000FF8000000000000001FFC000000000000001FFC000000
+000000003FFE000000000000003FFE000000000000003FFE000000000000007FFF000000
+000000007FFF00000000000000FFFF80000000000000FFFF80000000000000FFFF800000
+00000001FFFFC0000000000001F3FFC0000000000003F3FFE0000000000003E1FFE00000
+00000003E1FFE0000000000007E1FFF0000000000007C0FFF000000000000FC0FFF80000
+0000000F807FF800000000000F807FF800000000001F807FFC00000000001F003FFC0000
+0000003F003FFE00000000003E001FFE00000000003E001FFE00000000007E001FFF0000
+0000007C000FFF0000000000FC000FFF8000000000F80007FF8000000000F80007FF8000
+000001F80007FFC000000001F00003FFC000000003FFFFFFFFE000000003FFFFFFFFE000
+000003FFFFFFFFE000000007FFFFFFFFF000000007C00000FFF00000000FC00000FFF800
+00000F8000007FF80000000F8000007FF80000001F8000007FFC0000001F0000003FFC00
+00003F0000003FFE0000003E0000001FFE0000003E0000001FFE0000007E0000001FFF00
+00007C0000000FFF000000FE0000000FFF8000FFFFF80007FFFFFF80FFFFF80007FFFFFF
+80FFFFF80007FFFFFF80FFFFF80007FFFFFF80413A7DB948>65 D<0007FF000E00003FFF
+E01E0000FFFFF83E0003FFFFFE7E0007FC01FFFE000FF0001FFE001FE0000FFE003FC000
+03FE003F800001FE007F800000FE007F000000FE007F0000007E00FF0000007E00FF0000
+003E00FF0000003E00FF8000003E00FF8000001E00FFC000001E00FFE000001E00FFF000
+000000FFFC000000007FFFE00000007FFFFE0000007FFFFFF000003FFFFFFE00003FFFFF
+FF80001FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC0000FFFFFFFE00003FFF
+FFFE00000FFFFFFF000001FFFFFF0000000FFFFF800000007FFF800000000FFFC0000000
+03FFC000000001FFC000000000FFC0F00000007FC0F00000007FC0F00000007FC0F00000
+003FC0F00000003FC0F80000003FC0F80000003F80FC0000003F80FC0000007F80FE0000
+007F00FF0000007F00FF800000FE00FFE00001FC00FFF80003FC00FFFF801FF800FCFFFF
+FFE000F83FFFFFC000F007FFFE0000E0007FF000002A3B7BB935>83
+D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE00003FF003FF00003FF801FF80
+003FF800FFC0003FF800FFC0003FF8007FE0003FF8007FE0001FF0007FE0000FE0007FE0
+000380007FE0000000007FE0000000007FE00000003FFFE000000FFFFFE000007FFFFFE0
+0001FFF87FE00007FF807FE0000FFE007FE0003FF8007FE0003FF0007FE0007FE0007FE0
+00FFE0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC000FFE0
+00FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBFFFC00FFFFE1FFFC003FFF80FFF
+C0003FE003FFC02A257DA42E>97 D<00FF00000000FFFF00000000FFFF00000000FFFF00
+000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF0000000003FF00
+00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00
+00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF01
+FF800003FF0FFFF00003FF3FFFFC0003FFFE03FF0003FFF000FF8003FFE0007FC003FF80
+003FE003FF00003FF003FF00001FF803FF00001FF803FF00001FFC03FF00000FFC03FF00
+000FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00
+000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFC03FF00
+000FFC03FF00000FFC03FF00001FF803FF00001FF803FF00001FF003FF80003FF003FFC0
+007FE003FFE0007FC003FDF001FF8003F8FC07FE0003F03FFFF80003E00FFFE00003C003
+FF00002F3A7EB935>I<0001FFC000000FFFFC00007FFFFF0000FF80FF8003FE00FFC007
+FC01FFC00FF801FFC01FF801FFC01FF001FFC03FF001FFC03FF000FF807FE0007F007FE0
+001C007FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000
+0000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FF00000003FF00000
+003FF00001E01FF80001E01FF80003E00FFC0007C007FE00078003FF001F8000FFC07E00
+007FFFFC00000FFFF0000001FF800023257DA42A>I<01F00007FC000FFE000FFE001FFF
+001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F0000000000000000000000000
+0000000000000000000000000000000000FF007FFF007FFF007FFF007FFF0007FF0003FF
+0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
+0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
+0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>105
+D<00FE007FE0000FFC0000FFFE01FFFC003FFF8000FFFE07FFFF00FFFFE000FFFE1F81FF
+83F03FF000FFFE3C00FF87801FF00007FE7800FFCF001FF80003FEF000FFDE001FF80003
+FFE0007FFC000FFC0003FFC0007FF8000FFC0003FFC0007FF8000FFC0003FF80007FF000
+0FFC0003FF80007FF0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00
+007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC
+0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007F
+E0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003
+FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE000
+0FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00
+007FE0000FFC00FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFF
+F0FFFFFC1FFFFF83FFFFF04C257DA451>109 D<0001FFC00000000FFFF80000007FFFFF
+000000FF80FF800003FE003FE00007FC001FF0000FF8000FF8001FF00007FC001FF00007
+FC003FF00007FE003FE00003FE007FE00003FF007FE00003FF007FE00003FF00FFE00003
+FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003
+FF80FFE00003FF80FFE00003FF807FE00003FF007FE00003FF007FE00003FF003FE00003
+FE003FF00007FE001FF00007FC001FF00007FC000FF8000FF80007FC001FF00003FE003F
+E00001FF80FFC000007FFFFF0000001FFFFC00000001FFC0000029257DA430>111
+D<00FE03F000FFFE0FFE00FFFE3FFF00FFFE7C7F80FFFEF8FFC007FEF0FFC003FFE0FFC0
+03FFC0FFC003FFC0FFC003FF807F8003FF803F0003FF800C0003FF80000003FF00000003
+FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF
+00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00
+000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE00
+00FFFFFE000022257EA427>114 D<003FF03803FFFEF80FFFFFF81FC00FF83F0003F87E
+0001F87C0000F8FC0000F8FC000078FE000078FF000078FF800000FFFC0000FFFFE0007F
+FFFC007FFFFF803FFFFFC01FFFFFF00FFFFFF803FFFFF800FFFFFC001FFFFC00007FFE00
+0007FEF00001FEF00000FEF80000FEF800007EFC00007EFC00007CFE0000FCFF0000F8FF
+8001F8FFF007F0FFFFFFC0F8FFFF00E01FF8001F257DA426>I<000F0000000F0000000F
+0000000F0000000F0000001F0000001F0000001F0000001F0000003F0000003F0000007F
+000000FF000000FF000001FF000007FF00001FFFFFE0FFFFFFE0FFFFFFE0FFFFFFE003FF
+000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF
+000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF
+007803FF007803FF007803FF007803FF007803FF007803FF007803FF007803FF00F801FF
+80F001FF81F000FFC3E0003FFFC0001FFF800003FE001D357EB425>I<00FF00003FC0FF
+FF003FFFC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC007FF0001FFC003FF0000FFC003
+FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
+FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
+FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003
+FF0000FFC003FF0000FFC003FF0001FFC003FF0001FFC003FF0003FFC003FF0003FFC001
+FF0007FFC001FF800FFFE000FFC03EFFFF007FFFFCFFFF001FFFF0FFFF0003FF80FFFF30
+257DA435>I E /Ft 7 115 df<0000003FFE0000000003FFFFF00000000FFFFFFE000000
+3FFFFFFF800000FFFFFFFF800001FFFFFFFF800003FFE007FF00000FFF0000FF00001FFC
+00001F00003FF800000700007FE000000300007FC00000000000FF800000000001FF0000
+00000003FF000000000003FE000000000007FC000000000007FC00000000000FF8000000
+00000FF800000000001FF000000000001FF000000000003FE000000000003FE000000000
+003FE000000000007FC000000000007FC000000000007FC000000000007FC00000000000
+7FC00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF
+800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80
+0000000000FF800000000000FF800000000000FF8000000000007FC000000000007FC000
+000000007FC000000000007FC000000000007FC000000000003FE000000000003FE00000
+0000003FE000000000001FF000000000001FF000000000000FF800000000000FF8000000
+000007FC000000000007FC000000000003FE000000000003FF000000000001FF00000000
+0000FF8000000080007FC000000180007FE000000380003FF800000F80001FFC00001FC0
+000FFF00007FC00003FFE003FFC00001FFFFFFFF800000FFFFFFFE0000003FFFFFFC0000
+000FFFFFF000000003FFFFC0000000003FFC000032497AC63E>67
+D<0000003FFC0000000001FFFFE00000000FFFFFF80000003FFFFFFF000000FFFFFFFFC0
+0001FFFFFFFFE00003FFE007FFE00007FF00007FE0001FFC00001FC0003FF8000007C000
+3FF0000003C0007FC0000001C000FF80000000C001FF800000000003FF000000000003FE
+000000000007FC000000000007FC00000000000FF800000000000FF800000000001FF000
+000000001FF000000000003FE000000000003FE000000000003FE000000000007FC00000
+0000007FC000000000007FC000000000007FC000000000007FC00000000000FF80000000
+0000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000000
+00FF800000000000FF800000000000FF800000000000FF800000000000FF800001FFFFF0
+FF800001FFFFF0FF800001FFFFF07FC00001FFFFF07FC00001FFFFF07FC00001FFFFF07F
+C00000000FF07FC00000000FF03FE00000000FF03FE00000000FF03FE00000000FF01FF0
+0000000FF01FF00000000FF00FF80000000FF00FF80000000FF007FC0000000FF007FC00
+00000FF003FE0000000FF003FF0000000FF001FF8000000FF000FF8000000FF0007FC000
+000FF0003FF000000FF0003FF800000FF0001FFC00000FF00007FF00003FF00003FFE007
+FFF00001FFFFFFFFF00000FFFFFFFFE000003FFFFFFF0000000FFFFFFC00000001FFFFE0
+000000003FFC000034497AC641>71 D<FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFF
+FFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF00000003FE0000000
+0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F
+E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000
+0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F
+E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000
+0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F
+E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000
+0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F
+E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000
+0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F
+E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000
+0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F
+E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000
+0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F
+E00000000000003FE00000000000003FE00000000000003FE00000003C457DC443>84
+D<0007FE0000007FFFC00003FFFFE0000FFFFFF8001FFFFFFC001FFFFFFE001FF803FF00
+1F8001FF001E0000FF801800007F801000003FC00000003FC00000003FE00000001FE000
+00001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000
+7FFFE0000FFFFFE0003FFFFFE001FFFFFFE003FFFFFFE00FFFF01FE01FFE001FE03FF800
+1FE07FE0001FE07FC0001FE0FF80001FE0FF00001FE0FF00001FE0FF00001FE0FF00001F
+E0FF00003FE0FF80003FE07FC0007FE07FE001FFE07FF80FFFE03FFFFFFFE01FFFFFFFE0
+1FFFFFDFE00FFFFF1FE003FFF81FE000FF800000232F7CAD2F>97
+D<0001FE00000007FFC000001FFFF000007FFFF80000FFFFFC0001FFFFFE0003FF03FF00
+07FC00FF000FF8007F800FF0003F801FE0001FC01FE0000FC03FC0000FE03F800007E07F
+800007E07F800007E07F000007E07F000003F0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFF
+FFFFF0FFFFFFFFF0FFFFFFFFF0FE00000000FE00000000FE00000000FF00000000FF0000
+00007F000000007F000000007F800000003F800000003FC00000003FC00000001FE00000
+001FF00000100FF800007007FC0001F003FE0007F003FF803FF001FFFFFFF000FFFFFFE0
+003FFFFF80001FFFFE000007FFF8000000FFC000242F7DAD2B>101
+D<00001FF00000FFFE0001FFFE0007FFFE000FFFFE001FFFFE003FF01E003FC002007F80
+00007F000000FE000000FE000001FE000001FE000001FE000001FE000001FE000001FE00
+0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE0000FFFFFF
+80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8001FE000001FE000001FE000001FE00
+0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00
+0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00
+0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00
+0001FE000001FE000001FE000001FE000001FE000001FE000001FE00001F467EC51E>I<
+00001FFE00FFFE03FFFE07FFFE1FFFFE3FFFFE7FFFFEFFF0FEFF80FFFE00FFFC00FFF800
+FFF000FFE000FFC000FFC000FF8000FF8000FF8000FF0000FF0000FF0000FF0000FF0000
+FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000
+FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000182D79AC21>114
+D E /Fu 25 118 df<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF807FFF
+FFFF0021067B9B2C>45 D<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B0B70
+8A2C>I<00000007000000000F800000001F800000001F800000003F800000003F000000
+007F000000007E00000000FE00000000FC00000001FC00000001F800000003F800000003
+F000000003F000000007F000000007E00000000FE00000000FC00000001FC00000001F80
+0000003F800000003F000000007F000000007E00000000FE00000000FC00000000FC0000
+0001FC00000001F800000003F800000003F000000007F000000007E00000000FE0000000
+0FC00000001FC00000001F800000001F800000003F800000003F000000007F000000007E
+00000000FE00000000FC00000001FC00000001F800000003F800000003F000000007F000
+000007E000000007E00000000FE00000000FC00000001FC00000001F800000003F800000
+003F000000007F000000007E00000000FE00000000FC00000000FC00000000F800000000
+780000000021417BB92C>I<00070000000F8000000F8000001F8000001F8000003F8000
+007F800000FF800001FF800007FF80007FFF8000FFFF8000FFDF8000FF9F80007C1F8000
+001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
+001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
+001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
+001F8000001F8000001F8000001F8000001F80007FFFFFE0FFFFFFF0FFFFFFF0FFFFFFF0
+7FFFFFE01C3477B32C>49 D<000FF80000007FFF800001FFFFE00007FFFFF0000FFFFFFC
+001FF80FFE003FE001FF003F80007F007F00003F807E00001F80FE00001FC0FE00000FC0
+FF00000FE0FF000007E0FF000007E0FF000007E07E000007E03C000007E000000007E000
+000007E00000000FE00000000FC00000001FC00000001F800000003F800000003F000000
+007F00000000FE00000001FC00000003FC00000007F80000000FF00000001FE00000003F
+C0000000FF80000001FE00000003FC00000007F80000000FF00000003FE00000007F8000
+0000FF00000001FE00000003FC0003C007F80007E01FE00007E03FC00007E07FFFFFFFE0
+FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC023347CB32C>I<000007F00000000FF8
+0000001FF80000003FF80000003FF80000007EF80000007EF8000000FCF8000001F8F800
+0001F8F8000003F0F8000007E0F8000007E0F800000FC0F800001F80F800001F80F80000
+3F00F800007E00F800007E00F80000FC00F80001F800F80001F800F80003F000F80003E0
+00F80007E000F8000FC000F8000FC000F8001F8000F8003F0000F8003F0000F8007E0000
+F800FC0000F800FFFFFFFFFCFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC000000F8
+00000000F800000000F800000000F800000000F800000000F800000000F800000000F800
+000000F800000000F80000007FFFF00000FFFFF80000FFFFF80000FFFFF800007FFFF027
+347EB32C>52 D<00003FC0000001FFF8000007FFFC00001FFFFE00003FFFFF00007FE07F
+0000FF003F8001FE007F8003F8007F8007F0007F8007E0007F800FE0003F001FC0001E00
+1F800000003F800000003F000000003F000000007F000000007E000000007E03FE00007E
+1FFF8000FC7FFFE000FDFFFFF000FFFFFFF800FFFE07FC00FFF001FE00FFC0007F00FF80
+003F80FF00001F80FF00001FC0FE00000FC0FE00000FE0FE000007E0FE000007E0FE0000
+07E07E000007E07E000007E07E000007E07E000007E03F000007E03F00000FE03F80000F
+C01F80001FC01FC0001F800FC0003F800FE0007F0007F801FE0003FE07FC0001FFFFF800
+00FFFFF000007FFFE000001FFF80000007FC000023357CB32C>54
+D<7800000000FFFFFFFFC0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFC0FC00003F80
+FC00007F00FC0000FE00780000FC00000001FC00000003F800000007F000000007E00000
+000FE00000000FC00000001F800000003F800000003F000000007F000000007E00000000
+FE00000000FC00000001FC00000001F800000001F800000003F000000003F000000007F0
+00000007E000000007E000000007E00000000FC00000000FC00000000FC00000000FC000
+00001F800000001F800000001F800000001F800000001F800000003F800000003F000000
+003F000000003F000000003F000000003F000000003F000000003F000000003F00000000
+3F000000003F000000001E00000023357CB32C>I<0007FC0000003FFF800000FFFFE000
+03FFFFF80007FFFFFC000FFC07FE001FF001FF001FC0007F003F80003F803F00001F807F
+00001FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC03F00001F803F00
+001F801F80003F001FC0007F000FF001FE0003FC07F80001FFFFF000007FFFC0000007FC
+0000007FFFC00001FFFFF00003FC07F8000FF001FE001FC0007F001F80003F003F00001F
+807E00000FC07E00000FC0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0
+FC000007E0FC000007E07E00000FC07E00000FC07F00001FC03F80003F801FC0007F001F
+F001FF000FFC07FE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC00002335
+7CB32C>I<0007FC0000003FFF000000FFFFC00001FFFFE00003FFFFF00007FC07F8000F
+F001FC001FE000FE003F80007E003F80007F007F00003F007E00001F80FE00001F80FC00
+001F80FC00000FC0FC00000FC0FC00000FC0FC00000FC0FC00000FE0FC00000FE0FC0000
+0FE0FE00000FE07E00000FE07F00001FE03F00001FE03F80003FE01FC0007FE00FF001FF
+E007FC0FFFE003FFFFFFE001FFFFF7E000FFFFC7E0003FFF0FE0000FF80FC00000000FC0
+0000000FC00000001FC00000001F800000003F800000003F000F00007F001F80007E003F
+C000FE003FC001FC003FC003F8003FC007F8003F801FF0001FE07FE0001FFFFFC0000FFF
+FF000007FFFE000001FFF80000007FC0000023357CB32C>I<1F003F807FC0FFE0FFE0FF
+E0FFE0FFE07FC03F801F0000000000000000000000000000000000000000000000000000
+0000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B2470A32C>I<00007F80
+000003FFE000000FFFF000003FFFF800007FFFFC0000FFC0FE0001FE007F0003F8003F00
+07F0001F8007E00FCF800FC03FFF801F807FFFC01F80FFFFC03F01FFFFC03E03F87FC03E
+07F03FE07E07E01FE07C0FC00FE07C0F8007E07C0F8007E0FC1F8007E0F81F0003E0F81F
+0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F00
+03E0FC1F8007E07C0F8007C07C0F8007C07C0FC00FC07E07E01F803E07F03F803E03F87F
+003F01FFFE001F80FFFC001F807FF8000FC03FF00007E00FC00007F00007C003F8000FE0
+01FE001FE000FFC0FFE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC00023
+337CB22C>64 D<7FFFFF0000FFFFFFC000FFFFFFF000FFFFFFF8007FFFFFFC0007E003FE
+0007E000FF0007E0007F8007E0003F8007E0001FC007E0000FE007E0000FE007E00007E0
+07E00007F007E00003F007E00003F807E00001F807E00001F807E00001F807E00001F807
+E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E0
+0000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00001F807E00001F807E000
+01F807E00003F807E00003F007E00003F007E00007F007E00007E007E0000FE007E0001F
+C007E0003FC007E0007F8007E000FF0007E003FE007FFFFFFC00FFFFFFF800FFFFFFF000
+FFFFFFC0007FFFFF000026337EB22C>68 D<01FFF0000007FFFE00001FFFFF80001FFFFF
+E0003FFFFFF0003FC01FF8003FC007F8003FC001FC001F8000FC00060000FE000000007E
+000000007E000000007E000000FFFE00001FFFFE0000FFFFFE0003FFFFFE000FFFFFFE00
+1FFF807E003FF8007E007FC0007E007F00007E00FE00007E00FC00007E00FC00007E00FC
+00007E00FC00007E00FE00007E007F0000FE007F8003FE003FE01FFE001FFFFFFFFC0FFF
+FFFFFE07FFFFBFFE01FFFE1FFE003FF007FC27247CA32C>97 D<7FF0000000FFF8000000
+FFF8000000FFF80000007FF800000001F800000001F800000001F800000001F800000001
+F800000001F800000001F800000001F800000001F800000001F800000001F81FE00001F8
+FFF80001FBFFFE0001FFFFFF0001FFFFFF8001FFF07FC001FF801FE001FF0007F001FE00
+03F801FC0003F801FC0001FC01F80000FC01F80000FC01F80000FE01F800007E01F80000
+7E01F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01F80000FE
+01FC0000FC01FC0000FC01FC0001F801FE0003F801FF0007F001FF000FF001FF801FE001
+FFE07FC001FFFFFF8001FFFFFF0001FBFFFE0001F8FFF80000F03FC00027337FB22C>I<
+0003FFE000001FFFF800007FFFFE0001FFFFFE0003FFFFFF0007FE00FF000FF000FF001F
+E000FF001FC0007E003F800018003F000000007F000000007E000000007E00000000FC00
+000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000
+00007E000000007E000000007F000000003F00000F003F80001F801FC0001F801FE0003F
+800FF0007F0007FE03FF0003FFFFFE0001FFFFFC00007FFFF800001FFFE0000003FF0000
+21247AA32C>I<00000FFE0000001FFF0000001FFF0000001FFF0000000FFF000000003F
+000000003F000000003F000000003F000000003F000000003F000000003F000000003F00
+0000003F000000003F000007F83F00003FFE3F0000FFFFBF0001FFFFFF0003FFFFFF0007
+FC0FFF000FF003FF001FE001FF001FC000FF003F80007F003F00007F007E00003F007E00
+003F00FE00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC0000
+3F00FC00003F00FC00003F00FE00003F007E00007F007E00007F007F0000FF003F8000FF
+003F8001FF001FC003FF000FF007FF0007FC1FFF0003FFFFFFFC01FFFFBFFE00FFFF3FFE
+003FFC3FFE000FF01FFC27337DB22C>I<0003FE0000001FFFC000007FFFF00001FFFFF8
+0003FFFFFC0007FE03FE000FF800FF001FE0003F801FC0003F803F80001FC03F00000FC0
+7F00000FC07E00000FE07E000007E0FC000007E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FF
+FFFFFFE0FFFFFFFFC0FC00000000FE000000007E000000007E000000007F000000003F00
+0003C03F800007E01FC00007E00FF0000FE007F8003FC007FF00FFC001FFFFFF8000FFFF
+FF00003FFFFC00000FFFF0000001FF800023247CA32C>I<00070000001FC000001FC000
+003FE000003FE000003FE000001FC000001FC00000070000000000000000000000000000
+000000000000000000000000000000007FFFC0007FFFE000FFFFE0007FFFE0007FFFE000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0007FFFFFFC
+FFFFFFFEFFFFFFFEFFFFFFFE7FFFFFFC1F3479B32C>105 D<7FFFE00000FFFFF00000FF
+FFF00000FFFFF000007FFFF000000003F000000003F000000003F000000003F000000003
+F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0
+00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
+000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
+0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
+03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
+F000007FFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFFFFFFC07FFFFFFF8022337BB22C>108
+D<0007FC0000001FFF0000007FFFC00001FFFFF00003FFFFF80007FC07FC000FF001FE00
+1FE000FF001F80003F003F80003F803F00001F807E00000FC07E00000FC07E00000FC0FC
+000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FE00
+000FE07E00000FC07E00000FC07F00001FC03F00001F803F80003F801FC0007F001FE000
+FF000FF001FE0007FC07FC0003FFFFF80001FFFFF000007FFFC000001FFF00000007FC00
+0023247CA32C>111 D<7FF01FE000FFF8FFF800FFFBFFFE00FFFFFFFF007FFFFFFF8001
+FFF07FC001FF801FE001FF0007F001FE0003F801FC0003F801FC0001FC01F80000FC01F8
+0000FC01F80000FE01F800007E01F800007E01F800007E01F800007E01F800007E01F800
+007E01F800007E01F800007E01F80000FE01FC0000FC01FC0000FC01FC0001F801FE0003
+F801FF0007F001FF000FF001FF801FE001FFE07FC001FFFFFF8001FFFFFF0001FBFFFE00
+01F8FFF80001F83FC00001F800000001F800000001F800000001F800000001F800000001
+F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8
+0000007FFFE00000FFFFF00000FFFFF00000FFFFF000007FFFE0000027367FA32C>I<7F
+FE003FC0FFFF01FFF0FFFF07FFF8FFFF1FFFFC7FFF3FFFFC003F7FE1FC003FFF01FC003F
+FC00F8003FF80070003FF00000003FE00000003FE00000003FC00000003F800000003F80
+0000003F800000003F000000003F000000003F000000003F000000003F000000003F0000
+00003F000000003F000000003F000000003F000000003F000000003F000000003F000000
+003F000000003F0000007FFFFFE000FFFFFFF000FFFFFFF000FFFFFFF0007FFFFFE00026
+247EA32C>114 D<001E000000003F000000003F000000003F000000003F000000003F00
+0000003F000000003F000000003F000000003F0000007FFFFFFF00FFFFFFFF80FFFFFFFF
+80FFFFFFFF807FFFFFFF00003F000000003F000000003F000000003F000000003F000000
+003F000000003F000000003F000000003F000000003F000000003F000000003F00000000
+3F000000003F000000003F000000003F000000003F000000003F0003C0003F0007E0003F
+0007E0003F0007E0003F0007E0003F0007E0003F800FE0001F801FC0001FE07FC0000FFF
+FF80000FFFFF000003FFFE000001FFF80000003FE000232E7EAD2C>116
+D<7FF003FF8000FFF807FFC000FFF807FFC000FFF807FFC0007FF803FFC00001F8000FC0
+0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
+0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
+0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
+0001F8000FC00001F8000FC00001F8001FC00001F8001FC00001F8003FC00001FC007FC0
+0000FE03FFC00000FFFFFFFF00007FFFFFFF80003FFFFFFF80001FFFCFFF800003FE07FF
+0029247FA32C>I E /Fv 34 125 df<001F00001F80003F80007F80007F8000FF0001FE
+0003FC0003F80007F0000FE0000F80001F00003E00003C0000780000E000004000001112
+6CC431>19 D<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC01A067F9721>
+45 D<0000000FFE000060000000FFFFC000E0000003FFFFF000E000000FFC01FC01E000
+003FC0003E01E00000FF00000F83E00003FC000003C7E00007F8000001E7E0000FF00000
+00FFE0001FE00000007FE0003FC00000003FE0007F800000001FE000FF000000000FE001
+FE000000000FE001FC0000000007E003FC0000000007E007F80000000003E007F8000000
+0003E00FF00000000001E00FF00000000001E01FE00000000000E01FE00000000000E03F
+E00000000000E03FE00000000000E03FC00000000000607FC00000000000607FC0000000
+0000607FC00000000000607FC0000000000000FF80000000000000FF80000000000000FF
+80000000000000FF80000000000000FF80000000000000FF80000000000000FF80000000
+000000FF80000000000000FF80000000000000FF80000000000000FF80000000000000FF
+80000000000000FF80000000000000FF800000000000007FC00000000000007FC0000000
+0000007FC00000000000607FC00000000000603FC00000000000603FE00000000000603F
+E00000000000601FE00000000000E01FF00000000000E00FF00000000000C00FF0000000
+0000C007F80000000001C007F800000000018003FC00000000038001FC00000000038001
+FE00000000070000FF000000000600007F800000000E00003FC00000001C00001FE00000
+003800000FF000000078000007F8000000F0000003FC000001E0000000FF000007800000
+003FC0001F000000000FFC00FC0000000003FFFFF00000000000FFFFC000000000000FFE
+0000003B487BC546>67 D<FFFFFFFFFF00000000FFFFFFFFFFF0000000FFFFFFFFFFFC00
+000001FFC00007FF00000000FF8000007FC00000007F8000001FE00000007F80000007F0
+0000007F80000003FC0000007F80000001FE0000007F80000000FF0000007F800000007F
+0000007F800000003F8000007F800000001FC000007F800000000FE000007F800000000F
+E000007F8000000007F000007F8000000007F800007F8000000003F800007F8000000003
+FC00007F8000000003FC00007F8000000001FC00007F8000000001FE00007F8000000001
+FE00007F8000000001FE00007F8000000001FF00007F8000000000FF00007F8000000000
+FF00007F8000000000FF00007F8000000000FF80007F8000000000FF80007F8000000000
+FF80007F8000000000FF80007F8000000000FF80007F8000000000FF80007F8000000000
+FF80007F8000000000FF80007F8000000000FF80007F8000000000FF80007F8000000000
+FF80007F8000000000FF80007F8000000000FF80007F8000000000FF00007F8000000000
+FF00007F8000000000FF00007F8000000001FF00007F8000000001FE00007F8000000001
+FE00007F8000000001FE00007F8000000001FC00007F8000000003FC00007F8000000003
+F800007F8000000007F800007F8000000007F000007F800000000FF000007F800000000F
+E000007F800000001FC000007F800000003FC000007F800000003F8000007F800000007F
+0000007F80000000FE0000007F80000003FC0000007F80000007F80000007F8000001FE0
+000000FF8000007FC0000001FFC00007FF000000FFFFFFFFFFFC000000FFFFFFFFFFF000
+0000FFFFFFFFFF0000000041447CC34B>I<FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFF
+FFFFF001FFC000007FF0007F8000000FF8007F80000003F8007F80000001F8007F800000
+00F8007F8000000078007F8000000038007F8000000038007F800000001C007F80000000
+1C007F800000001C007F800000000C007F800000000C007F800000000C007F800000000C
+007F800000000E007F8000000006007F80000C0006007F80000C0006007F80000C000000
+7F80000C0000007F80000C0000007F80000C0000007F80000C0000007F80001C0000007F
+80001C0000007F80003C0000007F80007C0000007F8001FC0000007FFFFFFC0000007FFF
+FFFC0000007FFFFFFC0000007F8001FC0000007F80007C0000007F80003C0000007F8000
+1C0000007F80001C0000007F80000C0000007F80000C0000007F80000C0000007F80000C
+0000007F80000C0000007F80000C0000007F80000C0000007F8000000000007F80000000
+00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000
+007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000
+7F8000000000007F8000000000007F8000000000007F8000000000007FC00000000001FF
+E000000000FFFFFFF8000000FFFFFFF8000000FFFFFFF800000037447CC340>70
+D<FFFFFFC003FFFFFFFFFFFFC003FFFFFFFFFFFFC003FFFFFF01FFE0000007FF80007F80
+000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE
+00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80
+000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE
+00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80
+000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE
+00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007FFF
+FFFFFFFE00007FFFFFFFFFFE00007FFFFFFFFFFE00007F80000001FE00007F80000001FE
+00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80
+000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE
+00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80
+000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE
+00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80
+000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE
+00007F80000001FE0001FFE0000007FF80FFFFFFC003FFFFFFFFFFFFC003FFFFFFFFFFFF
+C003FFFFFF40447CC349>72 D<FFFFFFF0FFFFFFF0FFFFFFF000FFF000007FE000003FC0
+00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
+00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
+00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
+00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
+00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
+00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0
+00003FC000003FC000003FC000007FE00000FFF000FFFFFFF0FFFFFFF0FFFFFFF01C447D
+C323>I<FFFFFFF8000000FFFFFFF8000000FFFFFFF800000001FFE000000000007FC000
+000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000
+0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000
+00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000
+007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000
+7F8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F
+8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80
+00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000
+000000007F8000000000007F8000000030007F8000000030007F8000000030007F800000
+0030007F8000000070007F8000000060007F8000000060007F8000000060007F80000000
+60007F8000000060007F80000000E0007F80000000E0007F80000000E0007F80000001C0
+007F80000001C0007F80000003C0007F80000007C0007F80000007C0007F8000000FC000
+7F8000003FC0007F8000007FC0007F800001FFC001FFC0001FFF80FFFFFFFFFFFF80FFFF
+FFFFFFFF80FFFFFFFFFFFF8034447CC33D>76 D<FFFFFFFFFC0000FFFFFFFFFFC000FFFF
+FFFFFFF80001FFC0000FFC00007F800001FF00007F8000007F80007F8000001FE0007F80
+00000FE0007F80000007F0007F80000007F8007F80000003FC007F80000003FC007F8000
+0003FE007F80000001FE007F80000001FE007F80000001FF007F80000001FF007F800000
+01FF007F80000001FF007F80000001FF007F80000001FF007F80000001FF007F80000001
+FE007F80000001FE007F80000003FE007F80000003FC007F80000003FC007F80000007F8
+007F80000007F0007F8000000FE0007F8000001FC0007F8000007F80007F800001FE0000
+7F80000FFC00007FFFFFFFF000007FFFFFFF8000007F8000000000007F8000000000007F
+8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80
+00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000
+000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000
+0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000
+00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000
+01FFE000000000FFFFFFC0000000FFFFFFC0000000FFFFFFC000000038447CC342>80
+D<FFFFFFFFE000000000FFFFFFFFFF00000000FFFFFFFFFFC000000001FFC0003FF80000
+00007F800003FC000000007F800000FF000000007F8000007F800000007F8000003FC000
+00007F8000001FE00000007F8000000FF00000007F80000007F80000007F80000007F800
+00007F80000007FC0000007F80000003FC0000007F80000003FE0000007F80000003FE00
+00007F80000003FE0000007F80000003FE0000007F80000003FE0000007F80000003FE00
+00007F80000003FE0000007F80000003FC0000007F80000003FC0000007F80000007FC00
+00007F80000007F80000007F8000000FF00000007F8000000FF00000007F8000001FE000
+00007F8000003FC00000007F8000007F000000007F800001FE000000007F800007F80000
+00007F80003FE0000000007FFFFFFF00000000007FFFFFFC00000000007F80007F800000
+00007F80000FE0000000007F800007F0000000007F800003FC000000007F800001FE0000
+00007F800000FE000000007F800000FF000000007F8000007F800000007F8000007F8000
+00007F8000003FC00000007F8000003FC00000007F8000003FC00000007F8000003FC000
+00007F8000003FC00000007F8000003FC00000007F8000003FC00000007F8000003FE000
+00007F8000003FE00000007F8000003FE00000007F8000003FE00000007F8000003FE000
+00007F8000003FE00000007F8000003FE00000007F8000003FE00060007F8000003FF000
+60007F8000001FF00060007F8000001FF00060007F8000001FF000E0007F8000000FF800
+C001FFE0000007F801C0FFFFFFC00007F80180FFFFFFC00001FC0380FFFFFFC00000FE07
+000000000000003FFE0000000000000007F80043467CC348>82 D<FFFFFFC0000FFFFFFF
+FFFFC0000FFFFFFFFFFFC0000FFFFF01FFE0000000FFF0007F800000001F80007F800000
+000F00007F800000000F00007F800000000600007F800000000600007F80000000060000
+7F800000000600007F800000000600007F800000000600007F800000000600007F800000
+000600007F800000000600007F800000000600007F800000000600007F80000000060000
+7F800000000600007F800000000600007F800000000600007F800000000600007F800000
+000600007F800000000600007F800000000600007F800000000600007F80000000060000
+7F800000000600007F800000000600007F800000000600007F800000000600007F800000
+000600007F800000000600007F800000000600007F800000000600007F80000000060000
+7F800000000600007F800000000600007F800000000600007F800000000600007F800000
+000600007F800000000600007F800000000600007F800000000600007F80000000060000
+7F800000000600007F800000000600007F800000000600007F800000000600007F800000
+000E00003FC00000000C00003FC00000000C00003FC00000001C00001FC00000001C0000
+1FE00000001800000FE00000003800000FE000000030000007F000000070000007F00000
+00E0000003F8000001E0000001FC000001C0000000FE000007800000007F00000F000000
+003F80001E000000001FE0007C0000000007FC03F00000000001FFFFE000000000007FFF
+80000000000007FC00000040467CC349>85 D<FFFFFF0007FFFFF8000FFFFEFFFFFF0007
+FFFFF8000FFFFEFFFFFF0007FFFFF8000FFFFE03FFE000001FFF000000FFF001FF800000
+0FFC0000003FC001FF00000007F80000001F0000FF00000007F80000000F0000FF000000
+07F80000000E00007F80000003FC0000000E00007F80000003FC0000000C00007F800000
+03FC0000000C00003FC0000003FE0000001800003FC0000003FE0000001800003FC00000
+03FE0000001800003FE0000006FF0000003800001FE0000006FF0000003000001FE00000
+06FF0000003000001FF000000EFF8000007000000FF000000C7F8000006000000FF00000
+0C7F8000006000000FF800001C7FC0000060000007F80000183FC00000C0000007F80000
+183FC00000C0000007F80000183FE00000C0000003FC0000301FE0000180000003FC0000
+301FE0000180000003FC0000301FE0000180000001FE0000600FF0000300000001FE0000
+600FF0000300000001FE0000600FF0000300000000FF0000C007F8000600000000FF0000
+C007F8000600000000FF0000C007F8000600000000FF8001C007FC000E000000007F8001
+8003FC000C000000007F80018003FC000C000000007FC0038003FE000C000000003FC003
+0001FE0018000000003FC0030001FE0018000000003FE0030001FF0018000000001FE006
+0000FF0030000000001FE0060000FF0030000000001FE0060000FF0030000000000FF00C
+00007F8060000000000FF00C00007F8060000000000FF00C00007F80600000000007F818
+00003FC0C00000000007F81800003FC0C00000000007F81800003FC0C00000000007FC30
+00001FE1C00000000003FC3000001FE1800000000003FC3000001FE1800000000003FE70
+00001FF3800000000001FE6000000FF3000000000001FE6000000FF3000000000001FFE0
+00000FFB000000000000FFC0000007FE000000000000FFC0000007FE000000000000FFC0
+000007FE0000000000007F80000003FC0000000000007F80000003FC0000000000007F80
+000003FC0000000000003F00000001F80000000000003F00000001F80000000000003F00
+000001F80000000000001E00000000F00000000000001E00000000F00000000000001E00
+000000F00000000000001E00000000F00000000000000C00000000600000005F467EC364
+>87 D<0007FC000000003FFF80000000F80FE0000003C003F00000070001F800000E0000
+FC00000FC0007E00001FE0007F00001FF0003F80001FF0003F80001FF0003F80001FF000
+1FC0001FF0001FC0000FE0001FC0000380001FC0000000001FC0000000001FC000000000
+1FC0000000001FC00000000FFFC0000001FFFFC000000FFE1FC000003FC01FC00000FF00
+1FC00003FC001FC00007F8001FC0000FF0001FC0001FE0001FC0003FC0001FC0007FC000
+1FC0007F80001FC0007F80001FC060FF00001FC060FF00001FC060FF00001FC060FF0000
+3FC060FF00003FC060FF00003FC060FF80007FC0607F8000EFC0607FC000C7E0C03FC001
+C7E0C01FE00783F1C007F81E03FF8001FFFC01FF00001FE0007C002B2E7CAC31>97
+D<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC03FC000001FC0FFF800001FC3C07E00001FC7001F80001FDE0007E
+0001FD80003F0001FF80001F8001FF00001FC001FE00000FE001FC000007E001FC000007
+F001FC000007F001FC000003F801FC000003F801FC000003FC01FC000003FC01FC000001
+FC01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001
+FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001
+FC01FC000003FC01FC000003FC01FC000003F801FC000003F801FC000007F001FC000007
+F001FE00000FE001FE00000FC001FF00001FC001FB00003F8001F380007E0001E1C000FC
+0001E0F001F80001C03C07E00001801FFF8000000003FC00002F467DC436>I<00007F80
+000003FFF000000FC07C00003F000F0000FC00038001F80001C003F8000FC007F0001FE0
+07E0003FE00FE0003FE01FC0003FE01FC0003FE03F80003FE03F80001FC07F800007007F
+800000007F800000007F00000000FF00000000FF00000000FF00000000FF00000000FF00
+000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F0000
+00007F800000007F800000003F800000003F800000303FC00000301FC00000700FE00000
+600FE00000E007F00000C003F80001C001F800038000FC000700003F001E00001FC07800
+0007FFF0000000FF8000242E7DAC2B>I<000000007F000000003FFF000000003FFF0000
+00003FFF0000000001FF0000000000FF00000000007F00000000007F00000000007F0000
+0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000
+0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000
+0000007F00000000007F00000000007F00000000007F0000007F807F000003FFF07F0000
+0FC07C7F00003F000E7F00007E00077F0000FC0003FF0003F80001FF0007F00000FF0007
+E00000FF000FE000007F001FC000007F001FC000007F003F8000007F003F8000007F007F
+8000007F007F8000007F007F0000007F00FF0000007F00FF0000007F00FF0000007F00FF
+0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF
+0000007F00FF0000007F007F0000007F007F8000007F007F8000007F003F8000007F003F
+8000007F001FC000007F001FC000007F000FC00000FF000FE00000FF0007F00001FF0003
+F00003FF0001F800077F8000FC000E7FC0003F001C7FFE000FC0F87FFE0003FFE07FFE00
+007F007F002F467DC436>I<0001FE00000007FFC000001F03F000007E00FC0000FC007E
+0001F8003F0003F0003F0007E0001F800FE0001FC00FC0000FC01FC0000FC03F80000FE0
+3F800007E03F800007E07F800007F07F000007F07F000007F0FF000007F0FF000007F0FF
+000007F0FFFFFFFFF0FFFFFFFFF0FF00000000FF00000000FF00000000FF00000000FF00
+000000FF000000007F000000007F000000007F800000007F800000003F800000003F8000
+00301FC00000301FC00000700FC00000600FE00000E007F00000C003F00001C001F80003
+8000FC000700003E001E00001F80F8000003FFE0000000FF0000242E7DAC2B>I<00000F
+E00000007FF8000001F81E000003F03F00000FE07F80001FC0FF80001F80FF80003F80FF
+80007F00FF80007F00FF80007F007F0000FE001C0000FE00000000FE00000000FE000000
+00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
+FE00000000FE00000000FE00000000FE00000000FE000000FFFFFF8000FFFFFF8000FFFF
+FF800000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00
+000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000
+0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000
+00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
+FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE
+00000001FF8000007FFFFF00007FFFFF00007FFFFF000021467EC51E>I<000000000F80
+0001FC007FE0000FFF81F0F0003F07E381F000FC01FF03F001F800FE01F003F0007E01E0
+07F0007F000007E0003F00000FE0003F80000FC0001F80001FC0001FC0001FC0001FC000
+1FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC000
+1FC0001FC0000FC0001F80000FE0003F800007E0003F000007F0007F000003F0007E0000
+01F800FC000001FC01F8000003BF07E00000030FFF8000000701FC000000070000000000
+0700000000000F00000000000F00000000000F00000000000F800000000007C000000000
+07E00000000007FFFFF8000003FFFFFF000003FFFFFFE00001FFFFFFF800007FFFFFFC00
+01FFFFFFFE0007C0000FFF000F800000FF003F0000003F803E0000001F807C0000000FC0
+7C0000000FC0F800000007C0F800000007C0F800000007C0F800000007C0F800000007C0
+FC0000000FC07C0000000F807E0000001F803E0000001F001F0000003E000F8000007C00
+07E00001F80001F80007E000007F003F8000001FFFFE00000001FFE000002C427DAC31>
+I<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
+0001FC0000000001FC01FE000001FC07FFC00001FC1E07F00001FC3801F80001FC7001FC
+0001FCE000FC0001FDC000FE0001FD8000FE0001FF80007F0001FF00007F0001FF00007F
+0001FE00007F0001FE00007F0001FE00007F0001FC00007F0001FC00007F0001FC00007F
+0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
+0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
+0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
+0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0003FE0000FF
+80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F457DC436>I<01E00007F80007F8000F
+FC000FFC000FFC000FFC0007F80007F80001E00000000000000000000000000000000000
+000000000000000000000000000000000000000000000001FC00FFFC00FFFC00FFFC0007
+FC0003FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001
+FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001
+FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0003
+FE00FFFFF8FFFFF8FFFFF815437DC21C>I<01FC00FFFC00FFFC00FFFC0007FC0003FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00
+01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0003FE00
+FFFFF8FFFFF8FFFFF815457DC41C>108 D<01FC00FF00001FE00000FFFC07FFE000FFFC
+0000FFFC0F03F801E07F0000FFFC3C01FC07803F800007FC7000FE0E001FC00003FCE000
+7E1C000FC00001FDC0007F38000FE00001FD80007F30000FE00001FF80003FF00007F000
+01FF00003FE00007F00001FF00003FE00007F00001FE00003FC00007F00001FE00003FC0
+0007F00001FE00003FC00007F00001FC00003F800007F00001FC00003F800007F00001FC
+00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007
+F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC0000
+3F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F000
+01FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F80
+0007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC
+00003F800007F00001FC00003F800007F00001FC00003F800007F00001FC00003F800007
+F00001FC00003F800007F00001FC00003F800007F00003FE00007FC0000FF800FFFFF81F
+FFFF03FFFFE0FFFFF81FFFFF03FFFFE0FFFFF81FFFFF03FFFFE04B2C7DAB52>I<01FC01
+FE0000FFFC07FFC000FFFC1E07F000FFFC3801F80007FC7001FC0003FCE000FC0001FDC0
+00FE0001FD8000FE0001FF80007F0001FF00007F0001FF00007F0001FE00007F0001FE00
+007F0001FE00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00
+007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00
+007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00
+007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00
+007F0001FC00007F0001FC00007F0001FC00007F0003FE0000FF80FFFFF83FFFFEFFFFF8
+3FFFFEFFFFF83FFFFE2F2C7DAB36>I<00007F8000000003FFF00000000FC0FC0000003E
+001F0000007C000F800000F80007C00001F00003E00003E00001F00007C00000F8000FC0
+0000FC000FC00000FC001F8000007E003F8000007F003F8000007F003F0000003F007F00
+00003F807F0000003F807F0000003F807F0000003F80FF0000003FC0FF0000003FC0FF00
+00003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF00
+00003FC0FF0000003FC07F0000003F807F0000003F807F8000007F803F8000007F003F80
+00007F001F8000007E001FC00000FE000FC00000FC000FE00001FC0007E00001F80003F0
+0003F00001F80007E00000FC000FC000003E001F0000001FC0FE00000007FFF800000000
+7F8000002A2E7DAC31>I<01FC03FC0000FFFC0FFF8000FFFC3C07E000FFFC7001F80007
+FDE000FE0001FD80007F0001FF80003F8001FF00001FC001FE00001FE001FC00000FE001
+FC00000FF001FC000007F001FC000007F801FC000003F801FC000003FC01FC000003FC01
+FC000003FC01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01
+FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01
+FC000003FC01FC000003FC01FC000003FC01FC000007F801FC000007F801FC000007F001
+FC00000FF001FE00000FE001FE00001FC001FF00003FC001FF00003F8001FF80007E0001
+FDC000FC0001FCF003F80001FC3C0FE00001FC1FFF800001FC03FC000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001
+FC0000000003FE00000000FFFFF8000000FFFFF8000000FFFFF80000002F3F7DAB36>I<
+00007F8003000003FFE00700000FE0780700003F801C0F00007E000E0F0000FC00071F00
+03F800039F0007F80001BF0007F00001FF000FE00000FF001FE00000FF001FC00000FF00
+3FC000007F003FC000007F007F8000007F007F8000007F007F8000007F00FF0000007F00
+FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00
+FF0000007F00FF0000007F00FF0000007F00FF0000007F007F8000007F007F8000007F00
+7F8000007F003F8000007F003FC000007F001FC000007F001FE00000FF000FE00000FF00
+0FF00001FF0007F00001FF0003F80003FF0001FC00077F0000FE000E7F00003F001C7F00
+000FC0F87F000003FFE07F0000007F007F00000000007F00000000007F00000000007F00
+000000007F00000000007F00000000007F00000000007F00000000007F00000000007F00
+000000007F00000000007F00000000007F00000000007F00000000007F0000000000FF80
+0000003FFFFE0000003FFFFE0000003FFFFE2F3F7DAB33>I<03F803F0FFF81FFCFFF83C
+3EFFF8707F07F8E0FF03F9C0FF01F980FF01FB80FF01FB007E01FB003C01FF000001FE00
+0001FE000001FE000001FE000001FC000001FC000001FC000001FC000001FC000001FC00
+0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00
+0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00
+0001FC000003FF0000FFFFFE00FFFFFE00FFFFFE00202C7DAB26>I<003FE01801FFFC38
+07E01F780F0003F81E0001F83C0000F87C00007878000078F8000038F8000038F8000018
+F8000018FC000018FC000018FE000018FF8000007FC000007FFC00003FFFE0001FFFFC00
+0FFFFF0007FFFFC003FFFFE000FFFFF0001FFFF80000FFF800000FFC000003FCC00001FE
+C00000FEC000007EE000007EE000003EE000003EF000003EF000003EF000003EF800003C
+FC00007CFC000078FE0000F8FF0001F0F38003E0F1F00F80E07FFE00C00FF0001F2E7DAC
+26>I<0006000000060000000600000006000000060000000E0000000E0000000E000000
+0E0000001E0000001E0000001E0000003E0000007E0000007E000000FE000001FE000007
+FE00001FFFFFF0FFFFFFF0FFFFFFF000FE000000FE000000FE000000FE000000FE000000
+FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000
+FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000C00
+FE000C00FE000C00FE000C00FE000C00FE000C00FE000C00FE000C00FE000C00FE000C00
+7E001C007F0018007F0018003F0038001F8030001FC0700007E0E00001FFC000007F001E
+3E7EBC26>I<01FC00007F00FFFC003FFF00FFFC003FFF00FFFC003FFF0007FC0001FF00
+03FC0000FF0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00
+01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00
+01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00
+01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00
+01FC00007F0001FC00007F0001FC00007F0001FC0000FF0001FC0000FF0001FC0000FF00
+01FC0001FF0001FC0001FF0000FC0001FF0000FE0003FF00007E00077F80007F000E7FC0
+003F001C7FFE000FC0787FFE0003FFF07FFE00007F807F002F2D7DAB36>I<FFFFF001FF
+FCFFFFF001FFFCFFFFF001FFFC07FF00007FE003FE00001F8001FE00001F0001FE00000E
+0000FE00000C0000FF00001C00007F00001800007F00001800007F80003800003F800030
+00003F80003000001FC0006000001FC0006000001FE000E000000FE000C000000FE000C0
+000007F00180000007F00180000007F80380000003F80300000003F80300000001FC0600
+000001FC0600000001FE0E00000000FE0C00000000FE0C000000007F18000000007F1800
+0000007FB8000000003FB0000000003FB0000000001FE0000000001FE0000000001FE000
+0000000FC0000000000FC000000000078000000000078000000000078000000000030000
+0000000300000000000600000000000600000000000600000000000C00000000000C0000
+000000180000000000180000003C00180000007E0030000000FF0030000000FF00600000
+00FF0060000000FF00C0000000FE01C00000007C03800000007007000000003C1E000000
+000FFC0000000003F0000000002E3F7EAA33>121 D<3FFFFFFFE03FFFFFFFE03FC0003F
+E03F00003FC03C00007F80380000FF00380000FF00300001FE00700003FC00700003FC00
+700007F80060000FF00060000FF00060001FE00060003FC00060003FC00000007F800000
+00FF00000001FF00000001FE00000003FC00000007FC00000007F80000000FF00000001F
+F00000001FE00060003FC00060007F800060007F80006000FF0000C001FE0000C001FE00
+00C003FC0000C007F80000C007F80001C00FF00001C01FE00003C01FE00003C03FC00007
+807F80001F80FF8000FF80FFFFFFFF80FFFFFFFF80232B7DAA2B>I<FFFFFFFFFFFFFFFF
+FFFFFFFF80FFFFFFFFFFFFFFFFFFFFFFFF806102809B62>124 D
+E /Fw 21 118 df<0F003FC07FE0FFF0FFF0FFF0FFF0FFF0FFF07FE03FC00F000C0C748B
+24>46 D<00000FFE00000000007FFFE000000003FFFFF80000000FFFFFFE0000001FE00F
+FF8000003E0001FFE00000FC00007FF00001F000003FF80003E000000FFC0003C0000007
+FE000780000003FF000F00000003FF800E00000001FF801E00000000FFC01C00000000FF
+C03C000000007FE038000000007FE078000000003FF070000000003FF070000000003FF0
+70000000003FF0FF800000001FF8FFE00000001FF8FFE00000001FF8FFF00000001FF8FF
+F00000001FF8FFF00000001FF8FFF00000001FF8FFF00000001FF8FFF00000001FF87FE0
+0000001FF83FC00000001FF806000000001FF000000000003FF000000000003FF0000000
+00003FF000000000003FE000000000007FE000000000007FE00000000000FFC000000000
+00FFC00000000000FF800000000001FF800000000001FF000000000003FE000000000007
+FE000000000007FC00000000000FF800000000000FF000000000001FF000000000003FE0
+00000000007FC000000000007F800000000000FF000000000001FE000000000003FC0000
+00000003F8000000000007F000000000000FE000000000001FC000000000003F80000000
+00007F0000000000007E000000000000FC000000000001F8000000000003F00000000000
+07E000000000000FC000000000001F8000000000003F0000000000003E0000000000007C
+000000380000F8000000380001F0000000380003E0000000380007C000000070000F8000
+000070001F0000000070001E0000000070003C0000000070007800000000F000F0000000
+00F001E000000000E003C000000001E0078000000003E00FFFFFFFFFFFE00FFFFFFFFFFF
+E01FFFFFFFFFFFE03FFFFFFFFFFFE07FFFFFFFFFFFE0FFFFFFFFFFFFC0FFFFFFFFFFFFC0
+FFFFFFFFFFFFC0FFFFFFFFFFFFC0355E7ADD42>50 D<0180000000030001E00000000F00
+01FC0000003F0001FF800003FE0001FFF8003FFC0001FFFFFFFFF80001FFFFFFFFF00001
+FFFFFFFFE00001FFFFFFFF800001FFFFFFFF000001FFFFFFFC000001DFFFFFF0000001C3
+FFFF80000001C03FF800000001C0000000000001C0000000000001C0000000000001C000
+0000000001C0000000000001C0000000000001C0000000000001C0000000000001C00000
+00000001C0000000000001C0000000000001C0000000000001C0000000000001C0000000
+000001C0000000000001C0000000000001C0000000000001C0000000000001C000000000
+0001C0000000000001C0000000000001C001FF80000001C01FFFF0000001C07FFFFC0000
+01C1FE00FF000001C3E0003F800001CF80001FE00001DF00000FF00001FC000007F80001
+F8000003FC0001F0000001FC0001F0000001FE0001E0000000FF0001C0000000FF000000
+0000007F8000000000007FC000000000007FC000000000003FC000000000003FE0000000
+00003FE000000000003FF000000000003FF000000000001FF000000000001FF000000000
+001FF000000000001FF800000000001FF800000000001FF800000000001FF80000000000
+1FF800000000001FF81F800000001FF87FC00000001FF87FE00000001FF8FFE00000001F
+F8FFF00000001FF8FFF00000001FF8FFF00000001FF0FFE00000001FF0FFE00000003FF0
+FFC00000003FF0FF800000003FE070000000003FE070000000003FE078000000007FC078
+000000007FC03C00000000FF803C00000000FF801E00000001FF001E00000001FF000F00
+000003FE000780000007FC0007C0000007F80003E000000FF00001F800003FE00000FC00
+007FC000007F0001FF8000003FF00FFE0000000FFFFFF800000003FFFFE000000000FFFF
+80000000000FF800000035607ADD42>53 D<FFFFFFFFE000000000FFFFFFFFE000000000
+FFFFFFFFE000000000FFFFFFFFE00000000000FFFF800000000000003FFC000000000000
+001FFC000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF8000000000000
+001FF8000000000000001FF8000000000000001FF8000000000000001FF800000000001C
+001FF800000000001C001FF800000000001C001FF800000000001C001FF800000000001C
+001FF800000000001C001FF800000000003C001FF8000000000038001FF8000000000038
+001FF8000000000038001FF8000000000038001FF8000000000038001FF8000000000038
+001FF8000000000078001FF8000000000078001FF8000000000078001FF8000000000078
+001FF80000000000F8001FF80000000000F8001FF80000000000F0001FF80000000001F0
+001FF80000000001F0001FF80000000003F0001FF80000000007F0001FF80000000007F0
+001FF8000000000FF0001FF8000000001FF0001FF8000000003FF0001FF8000000007FF0
+001FF800000001FFF0001FF800000007FFF0003FF80000003FFFE000FFFC000003FFFFE0
+FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0
+466279E153>76 D<FFFFFC000000000000001FFFFF80FFFFFC000000000000001FFFFF80
+FFFFFC000000000000001FFFFF80FFFFFE000000000000003FFFFF8000FFFE0000000000
+00003FFF8000003FFE000000000000003FFE0000001DFF0000000000000077FC0000001D
+FF0000000000000077FC0000001CFF80000000000000E7FC0000001CFF80000000000000
+E7FC0000001CFF80000000000000E7FC0000001C7FC0000000000001C7FC0000001C7FC0
+000000000001C7FC0000001C7FC0000000000001C7FC0000001C3FE000000000000387FC
+0000001C3FE000000000000387FC0000001C3FE000000000000387FC0000001C1FF00000
+0000000707FC0000001C1FF000000000000707FC0000001C0FF800000000000E07FC0000
+001C0FF800000000000E07FC0000001C0FF800000000000E07FC0000001C07FC00000000
+001C07FC0000001C07FC00000000001C07FC0000001C07FC00000000001C07FC0000001C
+03FE00000000003807FC0000001C03FE00000000003807FC0000001C03FE000000000038
+07FC0000001C01FF00000000007007FC0000001C01FF00000000007007FC0000001C00FF
+8000000000E007FC0000001C00FF8000000000E007FC0000001C00FF8000000000E007FC
+0000001C007FC000000001C007FC0000001C007FC000000001C007FC0000001C007FC000
+000001C007FC0000001C003FE0000000038007FC0000001C003FE0000000038007FC0000
+001C003FE0000000038007FC0000001C001FF0000000070007FC0000001C001FF0000000
+070007FC0000001C000FF80000000E0007FC0000001C000FF80000000E0007FC0000001C
+000FF80000000E0007FC0000001C0007FC0000001C0007FC0000001C0007FC0000001C00
+07FC0000001C0007FC0000001C0007FC0000001C0003FE000000380007FC0000001C0003
+FE000000380007FC0000001C0003FE000000380007FC0000001C0001FF000000700007FC
+0000001C0001FF000000700007FC0000001C0000FF800000E00007FC0000001C0000FF80
+0000E00007FC0000001C0000FF800000E00007FC0000001C00007FC00001C00007FC0000
+001C00007FC00001C00007FC0000001C00007FC00001C00007FC0000001C00003FE00003
+800007FC0000001C00003FE00003800007FC0000001C00003FE00003800007FC0000001C
+00001FF00007000007FC0000001C00001FF00007000007FC0000001C00000FF8000E0000
+07FC0000001C00000FF8000E000007FC0000001C00000FF8000E000007FC0000001C0000
+07FC001C000007FC0000001C000007FC001C000007FC0000001C000007FC001C000007FC
+0000001C000003FE0038000007FC0000001C000003FE0038000007FC0000001C000003FE
+0038000007FC0000001C000001FF0070000007FC0000001C000001FF0070000007FC0000
+001C000001FF0070000007FC0000001C000000FF80E0000007FC0000001C000000FF80E0
+000007FC0000001C0000007FC1C0000007FC0000001C0000007FC1C0000007FC0000001C
+0000007FC1C0000007FC0000001C0000003FE380000007FC0000001C0000003FE3800000
+07FC0000001C0000003FE380000007FC0000001C0000001FF700000007FC0000001C0000
+001FF700000007FC0000001C0000001FF700000007FC0000001C0000000FFE00000007FC
+0000001C0000000FFE00000007FC0000003E00000007FC00000007FC0000003E00000007
+FC00000007FC0000007F00000007FC00000007FC0000007F00000003F800000007FC0000
+01FFC0000003F80000000FFE000007FFF8000003F80000003FFF8000FFFFFF800001F000
+003FFFFFFF80FFFFFF800001F000003FFFFFFF80FFFFFF800001F000003FFFFFFF80FFFF
+FF800000E000003FFFFFFF80696278E17A>I<FFFFFFFFFFFFC0000000FFFFFFFFFFFFFE
+000000FFFFFFFFFFFFFFC00000FFFFFFFFFFFFFFF0000000FFFC000000FFFC0000003FF8
+0000000FFF0000001FF800000003FF8000001FF800000000FFC000001FF8000000003FF0
+00001FF8000000001FF800001FF8000000000FFC00001FF80000000007FC00001FF80000
+000003FE00001FF80000000003FF00001FF80000000001FF80001FF80000000001FF8000
+1FF80000000000FFC0001FF80000000000FFC0001FF80000000000FFC0001FF800000000
+00FFE0001FF800000000007FE0001FF800000000007FE0001FF800000000007FF0001FF8
+00000000007FF0001FF800000000007FF0001FF800000000007FF0001FF800000000007F
+F0001FF800000000007FF0001FF800000000007FF0001FF800000000007FF0001FF80000
+0000007FF0001FF800000000007FE0001FF800000000007FE0001FF80000000000FFE000
+1FF80000000000FFC0001FF80000000000FFC0001FF80000000000FFC0001FF800000000
+01FF80001FF80000000001FF00001FF80000000003FF00001FF80000000007FE00001FF8
+0000000007FC00001FF8000000000FF800001FF8000000001FF000001FF8000000007FE0
+00001FF800000000FFC000001FF800000003FF0000001FF80000001FFE0000001FF80000
+01FFF80000001FFFFFFFFFFFE00000001FFFFFFFFFFF000000001FFFFFFFFFF800000000
+1FF800000000000000001FF800000000000000001FF800000000000000001FF800000000
+000000001FF800000000000000001FF800000000000000001FF800000000000000001FF8
+00000000000000001FF800000000000000001FF800000000000000001FF8000000000000
+00001FF800000000000000001FF800000000000000001FF800000000000000001FF80000
+0000000000001FF800000000000000001FF800000000000000001FF80000000000000000
+1FF800000000000000001FF800000000000000001FF800000000000000001FF800000000
+000000001FF800000000000000001FF800000000000000001FF800000000000000001FF8
+00000000000000001FF800000000000000001FF800000000000000001FF8000000000000
+00001FF800000000000000001FF800000000000000001FF800000000000000001FF80000
+0000000000001FF800000000000000001FF800000000000000001FF80000000000000000
+1FF800000000000000001FF800000000000000001FF800000000000000001FF800000000
+000000003FFC0000000000000000FFFF00000000000000FFFFFFFF000000000000FFFFFF
+FF000000000000FFFFFFFF000000000000FFFFFFFF0000000000004C6279E15A>80
+D<FFFFFFFFFFFC000000000000FFFFFFFFFFFFE00000000000FFFFFFFFFFFFFC00000000
+00FFFFFFFFFFFFFF800000000000FFFC00000FFFE000000000003FF80000007FF8000000
+00001FF80000001FFC00000000001FF800000007FF00000000001FF800000001FF800000
+00001FF800000000FFC0000000001FF8000000003FE0000000001FF8000000001FF00000
+00001FF8000000001FF8000000001FF8000000000FFC000000001FF80000000007FE0000
+00001FF80000000007FE000000001FF80000000007FF000000001FF80000000003FF0000
+00001FF80000000003FF800000001FF80000000003FF800000001FF80000000001FF8000
+00001FF80000000001FFC00000001FF80000000001FFC00000001FF80000000001FFC000
+00001FF80000000001FFC00000001FF80000000001FFC00000001FF80000000001FFC000
+00001FF80000000001FFC00000001FF80000000001FFC00000001FF80000000001FFC000
+00001FF80000000001FF800000001FF80000000003FF800000001FF80000000003FF8000
+00001FF80000000003FF000000001FF80000000007FF000000001FF80000000007FE0000
+00001FF80000000007FC000000001FF8000000000FF8000000001FF8000000001FF80000
+00001FF8000000003FF0000000001FF8000000007FE0000000001FF800000000FF800000
+00001FF800000001FF00000000001FF800000007FE00000000001FF80000001FF8000000
+00001FF8000000FFE000000000001FF800000FFF8000000000001FFFFFFFFFFC00000000
+00001FFFFFFFFFE00000000000001FFFFFFFFFF00000000000001FF800001FFE00000000
+00001FF8000001FF8000000000001FF80000007FC000000000001FF80000003FF0000000
+00001FF80000001FF800000000001FF800000007FC00000000001FF800000003FE000000
+00001FF800000003FF00000000001FF800000001FF80000000001FF800000000FF800000
+00001FF800000000FFC0000000001FF8000000007FE0000000001FF8000000007FE00000
+00001FF8000000007FE0000000001FF8000000003FF0000000001FF8000000003FF00000
+00001FF8000000003FF0000000001FF8000000003FF0000000001FF8000000003FF00000
+00001FF8000000003FF0000000001FF8000000003FF0000000001FF8000000003FF00000
+00001FF8000000003FF0000000001FF8000000003FF0000000001FF8000000003FF80000
+00001FF8000000003FF8000000001FF8000000003FF8000000001FF8000000003FF80000
+00001FF8000000003FF8000000001FF8000000003FF8000000001FF8000000003FF80000
+00001FF8000000003FF8000000001FF8000000003FF8000000001FF8000000003FF80000
+00001FF8000000003FF80000E0001FF8000000003FFC0000E0001FF8000000001FFC0000
+E0001FF8000000001FFC0000E0001FF8000000001FFC0000E0001FF8000000000FFC0001
+E0001FF8000000000FFE0001C0001FF80000000007FE0003C0003FFC0000000007FF0003
+C000FFFF0000000003FF000780FFFFFFFF00000001FF800F00FFFFFFFF00000000FFC01F
+00FFFFFFFF000000003FF03E00FFFFFFFF000000000FFFFC00000000000000000003FFF0
+000000000000000000003FC0005B6479E162>82 D<00003FF0000000000003FFFE000000
+00000FFFFF80000000003FC03FE0000000007E0007F800000000F80003FC00000001E000
+01FE00000003C00000FF000000078000007F8000000F0000003FC000000F8000003FC000
+000FF000001FE000001FF800001FE000001FFC00000FF000001FFC00000FF000001FFC00
+000FF000001FFC000007F800001FFC000007F800001FFC000007F800000FF8000007F800
+0003E0000007F800000000000007F800000000000007F800000000000007F80000000000
+0007F800000000000007F800000000000007F80000000000007FF800000000007FFFF800
+0000000FFFFFF8000000007FF807F800000001FF8007F800000007FC0007F80000001FF0
+0007F80000007FC00007F8000000FF800007F8000003FE000007F8000007FC000007F800
+000FFC000007F800000FF8000007F800001FF0000007F800003FE0000007F800003FE000
+0007F800007FC0000007F800E07FC0000007F800E07FC0000007F800E0FFC0000007F800
+E0FF80000007F800E0FF80000007F800E0FF8000000FF800E0FF8000000FF800E0FF8000
+000FF800E0FF8000001FF800E0FFC000001BF800E07FC000003BF800E07FC0000073F800
+E07FE0000071FC01C03FF00000E1FC01C01FF00001C1FC01C00FFC000780FE038007FE00
+0F00FF070001FF807E007FFF00007FFFF8003FFE00001FFFE0001FF8000001FF000007E0
+003B417ABF42>97 D<000001FF80000000000FFFF8000000003FFFFE00000000FF007F80
+000003FC0007E0000007F00001F000001FE000007800003FC000003C00007F8000001E00
+00FF0000000F0001FE0000001F0001FC000000FF0003FC000001FF8007F8000003FF8007
+F8000003FF800FF0000003FF800FF0000003FF801FE0000003FF801FE0000003FF803FE0
+000001FF003FC00000007C003FC000000000007FC000000000007FC000000000007FC000
+000000007F800000000000FF800000000000FF800000000000FF800000000000FF800000
+000000FF800000000000FF800000000000FF800000000000FF800000000000FF80000000
+0000FF800000000000FF800000000000FF800000000000FF8000000000007F8000000000
+007FC000000000007FC000000000007FC000000000007FC000000000003FC00000000000
+3FE000000000003FE000000000001FE000000001C01FF000000001C00FF000000003C00F
+F8000000038007F8000000038003FC000000078003FE000000070001FE0000000F0000FF
+0000001E00007F8000003C00003FC000007800001FE00000F000000FF80001E0000003FC
+0007C0000000FF803F800000003FFFFE000000000FFFF80000000001FF80000032417CBF
+3A>99 D<000003FE00000000001FFFE000000000FFFFF800000001FE03FE00000007F000
+7F8000000FE0003FC000003FC0001FE000007F00000FF00000FF000007F80000FE000003
+F80001FC000003FC0003F8000001FC0007F8000001FE0007F0000000FE000FF0000000FF
+000FF00000007F001FE00000007F001FE00000007F803FE00000007F803FC00000003F80
+3FC00000003F807FC00000003FC07FC00000003FC07FC00000003FC07F800000003FC07F
+800000003FC0FF800000003FC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFFC0FF80
+0000000000FF800000000000FF800000000000FF800000000000FF800000000000FF8000
+00000000FF800000000000FF800000000000FF8000000000007F8000000000007FC00000
+0000007FC000000000007FC000000000003FC000000000003FC000000000003FE0000000
+00001FE000000000001FE000000001C00FF000000001C00FF000000003C007F800000003
+8007F8000000038003FC000000078001FC0000000F0001FE0000000E0000FF0000001E00
+007F8000003C00003FC000007800001FE00000F0000007F00003E0000003FC0007C00000
+00FF803F000000003FFFFC000000000FFFF00000000001FF80000032417CBF3A>101
+D<0000000FF0000000007FFC00000001FFFF00000007F81F8000000FE00FC000001FC03F
+C000003F807FE000007F007FE00000FF007FE00001FE007FE00001FC007FE00003FC003F
+C00003FC003FC00007F8000F000007F80000000007F8000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000FFFFFFFFF000FFFFFFFFF000FFFFFFFFF0
+00FFFFFFFFF000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000
+00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000001FF80000
+00003FFE0000003FFFFFFF00003FFFFFFF00003FFFFFFF00003FFFFFFF00002B657EE428
+>I<0000000000003F80000003FC0001FFE000003FFFC007FFF00000FFFFF01FC1F80003
+FC03FC3E03F80007F000FE7803F8000FE0007FE003F8001FC0003FC003F8003F80001FC0
+01F0007F00000FE0000000FE000007F0000000FE000007F0000001FC000003F8000001FC
+000003F8000003FC000003FC000003FC000003FC000003F8000001FC000007F8000001FE
+000007F8000001FE000007F8000001FE000007F8000001FE000007F8000001FE000007F8
+000001FE000007F8000001FE000007F8000001FE000007F8000001FE000007F8000001FE
+000003F8000001FC000003FC000003FC000003FC000003FC000001FC000003F8000001FC
+000003F8000000FE000007F0000000FE000007F00000007F00000FE00000003F80001FC0
+0000001FC0003F800000003FE0007F0000000037F000FE0000000073FC03FC0000000060
+FFFFF000000000E03FFFC000000000E003FC0000000001C000000000000001C000000000
+000001C000000000000001C000000000000001C000000000000001E000000000000001E0
+00000000000001F000000000000001F000000000000001F800000000000000FC00000000
+000000FF00000000000000FFFFFFFE000000007FFFFFFFF00000003FFFFFFFFE0000001F
+FFFFFFFF8000000FFFFFFFFFE000000FFFFFFFFFF000003FFFFFFFFFFC0000FE000001FF
+FE0003F80000001FFE0007E000000003FF000FC000000000FF801F80000000007F803F80
+000000003FC03F00000000001FC07E00000000001FC07E00000000000FE0FE0000000000
+0FE0FC000000000007E0FC000000000007E0FC000000000007E0FC000000000007E0FC00
+0000000007E0FC000000000007E0FE00000000000FE07E00000000000FC07E0000000000
+0FC07F00000000001FC03F80000000003F801FC0000000007F000FC0000000007E0007F0
+00000001FC0003F800000003F80001FC00000007F000007F0000001FC000003FE00000FF
+8000000FFE000FFE00000001FFFFFFF0000000003FFFFF800000000001FFF00000003D5E
+7DBF42>I<0003C000000000000007FFC0000000000000FFFFC0000000000000FFFFC000
+0000000000FFFFC0000000000000FFFFC000000000000001FFC0000000000000007FC000
+0000000000007FC0000000000000003FC0000000000000003FC0000000000000003FC000
+0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000
+0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000
+0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000
+0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000
+0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000
+0000000000003FC0000000000000003FC0000000000000003FC0000000000000003FC000
+0000000000003FC0000000000000003FC0007FE0000000003FC003FFFC000000003FC00F
+FFFF000000003FC03F00FFC00000003FC078001FE00000003FC0F0000FF00000003FC1C0
+0007F80000003FC3800007FC0000003FC7000003FC0000003FCE000003FE0000003FCE00
+0001FE0000003FDC000001FE0000003FD8000001FE0000003FF8000000FF0000003FF000
+0000FF0000003FF0000000FF0000003FF0000000FF0000003FE0000000FF0000003FE000
+0000FF0000003FE0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000007FE0000001FF800000FFF000
+0003FFC000FFFFFFF003FFFFFFC0FFFFFFF003FFFFFFC0FFFFFFF003FFFFFFC0FFFFFFF0
+03FFFFFFC042647DE349>I<003C000000FF000001FF800003FFC00003FFC00003FFC000
+03FFC00003FFC00003FFC00001FF800000FF0000003C0000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000003C000
+07FFC0007FFFC0007FFFC0007FFFC0007FFFC00001FFC000007FC000007FC000003FC000
+003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
+003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
+003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
+003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
+003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000
+003FC000003FC000007FE00000FFF000FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B5F7DDE
+23>I<0003C00007FFC000FFFFC000FFFFC000FFFFC000FFFFC00001FFC000007FC00000
+7FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00000
+3FC000003FC000003FC000003FC000003FC000007FE00000FFF000FFFFFFF0FFFFFFF0FF
+FFFFF0FFFFFFF01C647DE323>108 D<0003C000FFC0000007FE00000007FFC003FFF800
+001FFFC00000FFFFC00FFFFE00007FFFF00000FFFFC03F00FF8001F807FC0000FFFFC078
+003FC003C001FE0000FFFFC1E0001FE00F0000FF000001FFC3C0000FF01E00007F800000
+7FC3800007F81C00003FC000007FC7000007F83800003FC000003FCE000003FC7000001F
+E000003FCC000003FC6000001FE000003FDC000003FCE000001FE000003FD8000003FCC0
+00001FE000003FF8000001FFC000000FF000003FF0000001FF8000000FF000003FF00000
+01FF8000000FF000003FE0000001FF0000000FF000003FE0000001FF0000000FF000003F
+E0000001FF0000000FF000003FE0000001FF0000000FF000003FC0000001FE0000000FF0
+00003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000
+000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001
+FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0
+000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000
+003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE000000
+0FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE
+0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC000
+0001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF00000
+3FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000F
+F000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE00
+00000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003FC00000
+01FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF000003F
+C0000001FE0000000FF000003FC0000001FE0000000FF000003FC0000001FE0000000FF0
+00007FE0000003FF0000001FF80000FFF0000007FF8000003FFC00FFFFFFF007FFFFFF80
+3FFFFFFCFFFFFFF007FFFFFF803FFFFFFCFFFFFFF007FFFFFF803FFFFFFCFFFFFFF007FF
+FFFF803FFFFFFC663F7CBE6F>I<0003C0007FE000000007FFC003FFFC000000FFFFC00F
+FFFF000000FFFFC03F00FFC00000FFFFC078001FE00000FFFFC0F0000FF0000001FFC1C0
+0007F80000007FC3800007FC0000007FC7000003FC0000003FCE000003FE0000003FCE00
+0001FE0000003FDC000001FE0000003FD8000001FE0000003FF8000000FF0000003FF000
+0000FF0000003FF0000000FF0000003FF0000000FF0000003FE0000000FF0000003FE000
+0000FF0000003FE0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC000
+0000FF0000003FC0000000FF0000003FC0000000FF0000007FE0000001FF800000FFF000
+0003FFC000FFFFFFF003FFFFFFC0FFFFFFF003FFFFFFC0FFFFFFF003FFFFFFC0FFFFFFF0
+03FFFFFFC0423F7DBE49>I<000000FF8000000000000FFFF800000000003FFFFE000000
+0000FF007F8000000003FC001FE000000007F00007F00000000FC00001F80000003F8000
+00FE0000007F0000007F0000007E0000003F000000FC0000001F800001F80000000FC000
+03F80000000FE00003F000000007E00007F000000007F0000FE000000003F8000FE00000
+0003F8001FE000000003FC001FC000000001FC001FC000000001FC003FC000000001FE00
+3FC000000001FE003FC000000001FE007F8000000000FF007F8000000000FF007F800000
+0000FF007F8000000000FF00FF8000000000FF80FF8000000000FF80FF8000000000FF80
+FF8000000000FF80FF8000000000FF80FF8000000000FF80FF8000000000FF80FF800000
+0000FF80FF8000000000FF80FF8000000000FF80FF8000000000FF80FF8000000000FF80
+7F8000000000FF007F8000000000FF007FC000000001FF007FC000000001FF003FC00000
+0001FE003FC000000001FE003FC000000001FE001FE000000003FC001FE000000003FC00
+1FE000000003FC000FF000000007F80007F000000007F00007F000000007F00003F80000
+000FE00001FC0000001FC00001FC0000001FC00000FE0000003F8000007F0000007F0000
+003F800000FE0000001FC00001FC0000000FF00007F800000003FC001FE000000000FF00
+7F80000000007FFFFF00000000000FFFF8000000000001FFC000000039417CBF42>I<00
+078003F80007FF800FFF00FFFF803FFFC0FFFF807C0FE0FFFF81F01FE0FFFF81E03FF001
+FF83803FF0007F87003FF0007F8F003FF0003F8E003FF0003F9C001FE0003F9C000FC000
+3F98000300003FB8000000003FB8000000003FB0000000003FF0000000003FF000000000
+3FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FC000000000
+3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
+3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
+3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
+3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
+3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000
+3FC0000000003FC0000000003FC0000000007FE000000000FFF8000000FFFFFFFC0000FF
+FFFFFC0000FFFFFFFC0000FFFFFFFC00002C3F7CBE33>114 D<00003800000000003800
+000000003800000000003800000000003800000000003800000000003800000000007800
+00000000780000000000780000000000780000000000F80000000000F80000000000F800
+00000001F80000000001F80000000001F80000000003F80000000003F80000000007F800
+0000000FF8000000001FF8000000001FF8000000007FF800000000FFF800000003FFF800
+00000FFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF000007F80000000007F800
+00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800
+00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800
+00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800
+00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800
+00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800
+00000007F80000E00007F80000E00007F80000E00007F80000E00007F80000E00007F800
+00E00007F80000E00007F80000E00007F80000E00007F80000E00007F80000E00007F800
+00E00007F80000E00007F80000E00003FC0001C00003FC0001C00003FC0001C00003FC00
+03C00001FE0003800001FE0007800000FF00070000007F800F0000003FC01E0000001FF0
+7C0000000FFFF800000003FFE0000000007F80002B597FD733>116
+D<0003C00000000F000007FFC000001FFF0000FFFFC00003FFFF0000FFFFC00003FFFF00
+00FFFFC00003FFFF0000FFFFC00003FFFF000001FFC0000007FF0000007FC0000001FF00
+00007FC0000001FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000000FF0000003FC0000000FF0000003FC0000000FF00
+00003FC0000000FF0000003FC0000001FF0000003FC0000001FF0000003FC0000001FF00
+00003FC0000003FF0000003FC0000003FF0000003FC0000003FF0000003FC0000007FF00
+00001FC0000006FF0000001FE000000EFF0000001FE000001CFF0000000FE000001CFF00
+00000FF0000038FF80000007F0000070FF80000003F80001E0FFE0000001FE0003C0FFFF
+C00000FFC01F80FFFFC000003FFFFE00FFFFC000000FFFF800FFFFC0000000FFC000FF80
+0042407DBE49>I E end
%%EndProlog
%%BeginSetup
-%%Feature: *Resolution 300dpi
+%%Feature: *Resolution 600dpi
TeXDict begin
+%%PaperSize: Letter
%%EndSetup
%%Page: 1 1
-1 0 bop 108 381 a Fv(Reference)22 b(Man)n(ual)f(of)g(the)h(Programming)
-f(Language)g(Lua)g(2.4)99 508 y Fu(Rob)q(erto)c(Ierusalimsc)o(h)o(y)49
-b(Luiz)17 b(Henrique)e(de)h(Figueiredo)50 b(W)l(aldemar)17
-b(Celes)g(Filho)563 587 y Ft(roberto,lhf,celes)o(@icad)o(.puc-)o(rio.b)
-o(r)359 694 y Fs(T)l(eC)431 709 y(Graf)534 694 y Fu(|)g(Departamen)o
-(to)f(de)g(Inform\023)-24 b(atica)17 b(|)f(PUC-Rio)661
-790 y Ft(Date:)21 b(1996/04/29)f(18:50:08)842 957 y Fr(Abstract)72
-1033 y Fq(Lua)13 b(is)h(an)f(extension)i(programmi)o(ng)c(language)h
-(designed)j(to)e(b)q(e)i(used)f(as)g(a)f(con\014guration)g(language)g
-(for)72 1083 y(an)o(y)18 b(program)e(that)i(needs)h(one.)30
-b(This)18 b(do)q(cumen)o(t)f(describ)q(es)j(V)m(ersion)e(2.4)f(of)g
-(the)i(Lua)e(programming)72 1132 y(language)e(and)g(the)h(API)g(that)g
-(allo)o(ws)e(in)o(teraction)i(b)q(et)o(w)o(een)h(Lua)e(programs)f(and)i
-(its)f(host)h(C)g(program.)72 1182 y(It)e(also)f(presen)o(ts)j(some)d
-(examples)g(of)g(using)h(the)h(main)c(features)k(of)f(the)g(system.)881
-1397 y Fr(Sum\023)-24 b(ario)72 1465 y Fq(Lua)15 b(\023)-20
-b(e)18 b(uma)d(linguagem)f(de)j(extens~)-21 b(ao)18 b(pro)r(jetada)f
-(para)f(ser)i(usada)f(como)e(linguagem)g(de)i(con\014gura\030)-18
-b(c~)d(ao)72 1515 y(em)12 b(qualquer)g(programa)e(que)j(precise)h(de)f
-(uma.)j(Este)e(do)q(cumen)o(to)d(descrev)o(e)k(a)d(v)o(ers~)-21
-b(ao)13 b(2.4)e(da)h(linguagem)72 1565 y(de)18 b(programa\030)-18
-b(c~)d(ao)16 b(Lua)i(e)g(a)g(In)o(terface)h(de)f(Programa\030)-18
-b(c~)d(ao)16 b(que)i(p)q(ermite)g(a)f(in)o(tera\030)-18
-b(c~)d(ao)18 b(en)o(tre)h(programas)72 1614 y(Lua)c(e)g(o)g(programa)e
-(C)h(hosp)q(edeiro.)22 b(O)15 b(do)q(cumen)o(to)g(tam)o(b)o(\023)-20
-b(em)12 b(apresen)o(ta)k(alguns)e(exemplos)g(de)i(uso)f(das)72
-1664 y(principais)f(caracter)-5 b(\023)-16 b(\020sticas)15
-b(do)f(sistema.)-42 1807 y Fp(1)67 b(In)n(tro)r(duction)-42
-1909 y Fo(Lua)18 b(is)f(an)g(extension)g(programmi)o(ng)d(language)j
-(designed)g(to)g(supp)q(ort)g(general)g(pro)q(cedural)g(programming)-42
-1965 y(features)f(with)g(data)g(description)f(facilities.)22
-b(It)16 b(is)g(supp)q(osed)h(to)f(b)q(e)g(used)h(as)f(a)g
-(con\014guration)g(language)f(for)-42 2022 y(an)o(y)j(program)d(that)i
-(needs)i(one.)27 b(Lua)18 b(has)f(b)q(een)i(designed)f(and)g(implemen)o
-(ted)d(b)o(y)j(W.)f(Celes)g(F.,)g(L.)h(H.)f(de)-42 2078
-y(Figueiredo)e(and)g(R.)g(Ierusalimsc)o(h)o(y)l(.)29
-2135 y(Lua)d(is)f(implemen)o(ted)f(as)h(a)g(library)l(,)g(written)g(in)
-h(C.)f(Being)g(an)h(extension)g(language,)f(Lua)h(has)f(no)h(notion)f
-(of)-42 2191 y(a)h(\\main")d(program:)16 b(it)10 b(only)h(w)o(orks)g
-Fn(emb)n(e)n(dde)n(d)f Fo(in)i(a)f(host)g(clien)o(t,)g(called)g(the)g
-Fn(emb)n(e)n(dding)f Fo(program.)17 b(This)11 b(host)-42
-2248 y(program)i(can)j(in)o(v)o(ok)o(e)e(functions)h(to)f(execute)i(a)f
-(piece)g(of)g(co)q(de)g(in)g(Lua,)g(can)h(write)e(and)h(read)g(Lua)h(v)
-m(ariables,)-42 2304 y(and)f(can)e(register)g(C)h(functions)f(to)h(b)q
-(e)g(called)g(b)o(y)f(Lua)h(co)q(de.)20 b(Through)14
-b(the)g(use)g(of)g(C)f(functions,)h(Lua)g(can)g(b)q(e)-42
-2360 y(augmen)o(ted)d(to)h(cop)q(e)g(with)f(rather)h(di\013eren)o(t)f
-(domains,)f(th)o(us)i(creating)f(customized)g(programmi)o(ng)e
-(languages)-42 2417 y(sharing)15 b(a)g(syn)o(tactical)e(framew)o(ork.)
-29 2473 y(Lua)f(is)e(free)i(distribution)e(soft)o(w)o(are,)g(and)h(pro)
-o(vided)g(as)g(usual)g(with)g(no)g(guaran)o(tees.)18
-b(The)11 b(implemen)o(tatio)o(n)-42 2530 y(describ)q(ed)17
-b(in)e(this)f(man)o(ual)g(is)g(a)o(v)m(ailable)g(b)o(y)h(anon)o(ymous)f
-(ftp)h(from)30 2623 y Fm(ftp.icad.puc-rio.br:/pub/lu)o(a/lua.t)o(ar.gz)
-922 2748 y Fo(1)p eop
+1 0 bop 299 456 a Fw(Reference)44 b(Man)l(ual)h(of)e(the)g(Programming)
+g(Language)g(Lua)g(2.5)408 708 y Fv(Rob)s(erto)32 b(Ierusalimsc)m(h)m
+(y)98 b(Luiz)32 b(Henrique)i(de)f(Figueiredo)96 b(W)-8
+b(aldemar)31 b(Celes)1514 868 y Fu(lua@icad.puc-rio.)o(br)801
+1080 y Ft(T)-8 b(eC)945 1111 y(Graf)1152 1080 y Fv(|)32
+b(Departamen)m(to)g(de)h(Inform\023)-49 b(atica)31 b(|)h(PUC-Rio)1405
+1272 y Fu(Date:)42 b(1996/11/18)d(14:27:42)1767 1607
+y Fs(Abstract)227 1759 y Fr(Lua)e(is)f(an)h(extension)f(programming)f
+(language)g(designed)i(to)f(b)r(e)i(used)f(as)f(a)g(con\014guration)f
+(language)227 1859 y(for)28 b(an)n(y)f(program)f(that)i(needs)g(one.)38
+b(This)28 b(do)r(cumen)n(t)g(describ)r(es)f(v)n(ersion)g(2.5)g(of)h
+(the)g(Lua)g(programming)227 1958 y(language)21 b(and)i(the)g(API)g
+(that)g(allo)n(ws)e(in)n(teraction)h(b)r(et)n(w)n(een)h(Lua)f(programs)
+e(and)j(their)g(host)f(C)h(programs.)227 2058 y(The)28
+b(do)r(cumen)n(t)g(also)e(presen)n(ts)h(some)g(examples)g(of)g(using)h
+(the)g(main)f(features)g(of)h(the)g(system.)1845 2488
+y Fs(Sum)o(\023)-47 b(ario)227 2624 y Fr(Lua)21 b(\023)-39
+b(e)23 b(uma)g(linguagem)f(de)i(extens~)-42 b(ao)22 b(pro)5
+b(jetada)22 b(para)g(ser)h(usada)f(como)h(linguagem)f(de)i
+(con\014gura\030)-37 b(c~)-42 b(ao)21 b(em)227 2723 y(qualquer)26
+b(programa)d(que)k(precise)e(de)i(uma.)36 b(Este)26 b(do)r(cumen)n(to)g
+(descrev)n(e)f(a)h(v)n(ers~)-42 b(ao)25 b(2.5)g(da)h(linguagem)g(de)227
+2823 y(programa\030)-37 b(c~)-42 b(ao)22 b(Lua)j(e)h(a)f(In)n(terface)g
+(de)g(Programa\030)-37 b(c~)-42 b(ao)22 b(\(API\))k(que)f(p)r(ermite)h
+(a)f(in)n(tera\030)-37 b(c~)-42 b(ao)24 b(en)n(tre)h(programas)227
+2923 y(Lua)30 b(e)g(programas)d(C)j(hosp)r(edeiros.)43
+b(O)29 b(do)r(cumen)n(to)h(tam)n(b)n(\023)-39 b(em)29
+b(apresen)n(ta)f(alguns)i(exemplos)f(de)h(uso)f(das)227
+3022 y(principais)e(caracter)-9 b(\023)-32 b(\020sticas)24
+b(do)k(sistema.)0 3309 y Fq(1)135 b(In)l(tro)t(duction)0
+3512 y Fp(Lua)34 b(is)f(an)i(extension)f(programming)f(language)i
+(designed)e(to)i(supp)s(ort)d(general)j(pro)s(cedural)d(programming)0
+3625 y(features)i(with)f(data)h(description)e(facilities.)49
+b(It)34 b(is)f(in)m(tended)f(to)j(b)s(e)e(used)g(as)h(a)g
+(con\014guration)f(language)h(for)0 3737 y(an)m(y)42
+b(program)g(that)g(needs)f(one.)76 b(Lua)41 b(has)h(b)s(een)f(designed)
+f(and)h(implemen)m(ted)g(b)m(y)g(W.)i(Celes,)h(L.)e(H.)g(de)0
+3850 y(Figueiredo)29 b(and)h(R.)h(Ierusalimsc)m(h)m(y)-8
+b(.)141 3963 y(Lua)23 b(is)g(implemen)m(ted)e(as)j(a)g(library)-8
+b(,)23 b(written)f(in)g(C.)i(Being)f(an)g(extension)g(language,)j(Lua)d
+(has)g(no)g(notion)g(of)0 4076 y(a)g(\\main")g(program:)36
+b(it)23 b(only)e(w)m(orks)i Fo(emb)-5 b(e)g(dde)g(d)25
+b Fp(in)c(a)i(host)g(clien)m(t,)h(called)e(the)h Fo(emb)-5
+b(e)g(dding)24 b Fp(program.)38 b(This)21 b(host)0 4189
+y(program)30 b(can)g(in)m(v)m(ok)m(e)h(functions)e(to)i(execute)h(a)e
+(piece)g(of)g(co)s(de)h(in)e(Lua,)h(can)g(write)g(and)f(read)h(Lua)g(v)
+-5 b(ariables,)0 4302 y(and)27 b(can)h(register)f(C)h(functions)e(to)i
+(b)s(e)f(called)g(b)m(y)h(Lua)f(co)s(de.)40 b(Through)26
+b(the)i(use)f(of)h(C)f(functions,)g(Lua)h(can)g(b)s(e)0
+4415 y(augmen)m(ted)d(to)f(cop)s(e)g(with)f(rather)g(di\013eren)m(t)h
+(domains,)g(th)m(us)f(creating)h(customized)g(programming)f(languages)0
+4528 y(sharing)29 b(a)i(syn)m(tactical)g(framew)m(ork.)141
+4641 y(Lua)22 b(is)f(free-distribution)d(soft)m(w)m(are,)25
+b(and)d(pro)m(vided)e(as)i(usual)e(with)h(no)h(guaran)m(tees.)39
+b(The)21 b(implemen)m(tation)0 4754 y(describ)s(ed)28
+b(in)h(this)h(man)m(ual)f(is)h(a)m(v)-5 b(ailable)29
+b(at)j(the)e(follo)m(wing)f(URL's:)143 4941 y Fn
+(http://www.inf.puc-rio.br)o(/~ro)o(ber)o(to/l)o(ua.h)o(tml)143
+5054 y(ftp://ftp.icad.puc-rio.br)o(/pub)o(/lu)o(a/lu)o(a.ta)o(r.g)o(z)
+1927 5589 y Fp(1)p eop
%%Page: 2 2
-2 1 bop -42 199 a Fo(or)15 b(b)o(y)g(WWW)g(\(W)l(orld)f(Wide)h(W)l
-(eb\))g(from)30 293 y Fm(http://www.inf.puc-rio.br/~)o(roberto)o
-(/lua.ht)o(ml)-42 436 y Fp(2)67 b(En)n(vironmen)n(t)25
-b(and)e(Ch)n(unks)-42 538 y Fo(All)10 b(statemen)o(ts)e(in)i(Lua)h(are)
-f(executed)h(in)g(a)f Fn(glob)n(al)h(envir)n(onment)p
-Fo(.)17 b(This)9 b(en)o(vironmen)o(t,)h(whic)o(h)g(k)o(eeps)h(all)e
-(global)-42 594 y(v)m(ariables)14 b(and)g(functions,)f(is)g
-(initialized)g(at)g(the)h(b)q(eginning)g(of)f(the)h(em)o(b)q(edding)f
-(program)f(and)i(p)q(ersists)f(un)o(til)-42 651 y(its)i(end.)29
-707 y(The)g(global)d(en)o(vironmen)o(t)h(can)h(b)q(e)h(manipulated)e(b)
-o(y)h(Lua)h(co)q(de)g(or)e(b)o(y)h(the)h(em)o(b)q(edding)f(program,)e
-(whic)o(h)-42 764 y(can)k(read)f(and)g(write)g(global)e(v)m(ariables)i
-(using)g(functions)g(in)g(the)g(library)f(that)h(implemen)o(ts)d(Lua.)
-29 820 y(Global)g(v)m(ariables)h(do)h(not)f(need)h(declaration.)k(An)o
-(y)c(v)m(ariable)f(is)g(assumed)g(to)g(b)q(e)h(global)e(unless)i
-(explicitly)-42 876 y(declared)20 b(lo)q(cal)e(\(see)h(lo)q(cal)f
-(declarations,)h(Section)g(4.4.5\).)30 b(Before)19 b(the)g(\014rst)g
-(assignmen)o(t,)e(the)j(v)m(alue)f(of)g(a)-42 933 y(global)14
-b(v)m(ariable)h(is)g Fl(nil)p Fo(.)29 989 y(The)g(unit)g(of)g
-(execution)h(of)e(Lua)i(is)f(called)f(a)h Fn(chunk)p
-Fo(.)20 b(The)15 b(syn)o(tax)g(for)f(c)o(h)o(unks)i(is:)1480
-973 y Fk(1)42 1062 y Fn(chunk)50 b Fj(!)g(f)p Fn(statement)32
-b Fj(j)16 b Fn(function)s Fj(g)-42 1134 y Fo(A)f(c)o(h)o(unk)f(ma)o(y)e
-(con)o(tain)h(statemen)o(ts)f(and)i(function)g(de\014nitions,)g(and)g
-(ma)o(y)e(b)q(e)j(in)f(a)g(\014le)g(or)f(in)h(a)g(string)f(inside)-42
-1190 y(the)k(host)f(program.)22 b(When)17 b(a)g(c)o(h)o(unk)g(is)f
-(executed,)h(\014rst)g(all)e(its)h(functions)g(and)h(statemen)o(ts)e
-(are)h(compiled,)-42 1247 y(then)d(the)e(statemen)o(ts)f(are)i
-(executed)g(in)g(sequen)o(tial)f(order.)18 b(All)11 b(mo)q
-(di\014cations)f(a)i(c)o(h)o(unk)g(e\013ects)f(on)h(the)g(global)-42
-1303 y(en)o(vironmen)o(t)k(p)q(ersist)h(after)f(its)g(end.)27
-b(Those)17 b(include)g(mo)q(di\014cations)f(to)g(global)g(v)m(ariables)
-g(and)i(de\014nitions)-42 1359 y(of)d(new)h(functions)285
-1343 y Fk(2)304 1359 y Fo(.)29 1416 y(Ch)o(unks)j(ma)o(y)e(b)q(e)i
-(pre-compiled;)g(see)g(program)d Fm(luac)i Fo(for)g(details.)30
-b(Ascii)18 b(\014les)g(with)g(c)o(h)o(unk)h(co)q(de)g(and)-42
-1472 y(their)e(binary)g(pre-compiled)f(forms)f(are)i(in)o(terc)o
-(hangeable.)25 b(Lua)17 b(automatically)d(detects)j(the)g(\014le)g(t)o
-(yp)q(e)g(and)-42 1529 y(acts)e(accordingly)l(.)-42 1672
-y Fp(3)67 b(T)n(yp)r(es)-42 1773 y Fo(Lua)14 b(is)g(a)f(dynamically)f
-(t)o(yp)q(ed)i(language.)k(V)l(ariables)13 b(do)h(not)f(ha)o(v)o(e)g(t)
-o(yp)q(es;)h(only)f(v)m(alues)h(do.)19 b(All)13 b(v)m(alues)h(carry)-42
-1830 y(their)h(o)o(wn)g(t)o(yp)q(e.)20 b(Therefore,)15
-b(there)g(are)g(no)g(t)o(yp)q(e)g(de\014nitions)g(in)g(the)g(language.)
-29 1886 y(There)20 b(are)f(sev)o(en)h(basic)f(t)o(yp)q(es)h(in)g(Lua:)
-29 b Fn(nil)p Fo(,)19 b Fn(numb)n(er)p Fo(,)h Fn(string)p
-Fo(,)g Fn(function)p Fo(,)g Fn(CF)m(unction)p Fo(,)e
-Fn(user)n(data)p Fo(,)j(and)-42 1943 y Fn(table)p Fo(.)f
-Fn(Nil)14 b Fo(is)g(the)g(t)o(yp)q(e)h(of)f(the)h(v)m(alue)g
-Fl(nil)p Fo(,)e(whose)h(main)f(prop)q(ert)o(y)h(is)h(to)e(b)q(e)j
-(di\013eren)o(t)d(from)g(an)o(y)h(other)h(v)m(alue.)-42
-1999 y Fn(Numb)n(er)h Fo(represen)o(ts)f(real)f(\(\015oating)g(p)q(oin)
-o(t\))g(n)o(um)o(b)q(ers,)h(while)f Fn(string)h Fo(has)g(the)g(usual)g
-(meaning.)29 2056 y(F)l(unctions)20 b(are)f(considered)i(\014rst-class)
-e(v)m(alues)h(in)g(Lua.)34 b(This)19 b(means)g(that)h(functions)f(can)h
-(b)q(e)h(stored)-42 2112 y(in)c(v)m(ariables,)g(passed)g(as)g(argumen)o
-(ts)f(to)g(other)h(functions)g(and)g(returned)h(as)e(results.)26
-b(When)17 b(a)g(function)g(is)-42 2169 y(de\014ned)g(in)d(Lua,)h(its)f
-(b)q(o)q(dy)i(is)e(compiled)f(and)i(stored)g(in)f(a)h(giv)o(en)f(v)m
-(ariable.)19 b(Lua)c(can)g(call)f(\(and)h(manipulate\))-42
-2225 y(functions)g(written)g(in)g(Lua)g(and)h(functions)f(written)f(in)
-h(C;)f(the)i(latter)e(ha)o(v)o(e)g(t)o(yp)q(e)i Fn(CF)m(unction)s
-Fo(.)29 2282 y(The)i(t)o(yp)q(e)f Fn(user)n(data)h Fo(is)g(pro)o(vided)
-f(to)g(allo)o(w)f(arbitrary)f(C)j(p)q(oin)o(ters)f(to)g(b)q(e)h(stored)
-f(in)g(Lua)h(v)m(ariables.)26 b(It)-42 2338 y(corresp)q(onds)18
-b(to)f Fm(void*)f Fo(and)i(has)f(no)g(pre-de\014ned)j(op)q(erations)c
-(in)h(Lua,)h(b)q(esides)g(assignmen)o(t)d(and)j(equalit)o(y)-42
-2394 y(test.)24 b(Ho)o(w)o(ev)o(er,)16 b(b)o(y)g(using)h(fallbac)o(ks,)
-e(the)i(programmer)c(ma)o(y)i(de\014ne)j(op)q(erations)e(for)g
-Fn(user)n(data)h Fo(v)m(alues;)g(see)-42 2451 y(Section)f(4.7.)p
--42 2482 780 2 v 10 2509 a Fi(1)28 2524 y Fh(As)c(usual,)i
-Fg(f)p Ff(a)s Fg(g)f Fh(means)h(0)f(or)g(more)g Ff(a)s
-Fh('s,)f([)p Ff(a)s Fh(])f(means)j(an)f(optional)j Ff(a)c
-Fh(and)i Fg(f)p Ff(a)s Fg(g)1179 2509 y Fi(+)1217 2524
-y Fh(means)f(one)h(or)f(more)g Ff(a)s Fh('s.)10 2554
-y Fi(2)28 2570 y Fh(Actually)m(,)h(a)f(function)h(de\014nition)i(is)d
-(an)h(assignmen)o(t)h(to)d(a)h(global)j(v)n(ariable;)e(see)f(Section)i
-(3.)922 2748 y Fo(2)p eop
+2 1 bop 0 91 a Fq(2)135 b(En)l(vironmen)l(t)46 b(and)e(Ch)l(unks)0
+294 y Fp(All)19 b(statemen)m(ts)k(in)c(Lua)h(are)h(executed)h(in)d(a)i
+Fo(glob)-5 b(al)25 b(envir)-5 b(onment)p Fp(.)39 b(This)19
+b(en)m(vironmen)m(t,)j(whic)m(h)e(k)m(eeps)h(all)f(global)0
+407 y(v)-5 b(ariables)26 b(and)h(functions,)g(is)g(initialized)d(at)29
+b(the)e(b)s(eginning)e(of)j(the)g(em)m(b)s(edding)e(program)h(and)g(p)s
+(ersists)f(un)m(til)0 520 y(its)k(end.)141 633 y(The)e(global)g(en)m
+(vironmen)m(t)g(can)h(b)s(e)f(manipulated)e(b)m(y)i(Lua)g(co)s(de)h(or)
+g(b)m(y)f(the)h(em)m(b)s(edding)d(program,)j(whic)m(h)0
+746 y(can)i(read)f(and)g(write)f(global)h(v)-5 b(ariables)29
+b(using)g(functions)g(in)g(the)h(library)e(that)j(implemen)m(ts)e(Lua.)
+141 859 y(Global)d(v)-5 b(ariables)26 b(do)h(not)h(need)e(declaration.)
+40 b(An)m(y)27 b(v)-5 b(ariable)26 b(is)g(assumed)g(to)i(b)s(e)f
+(global)f(unless)f(explicitly)0 972 y(declared)30 b(lo)s(cal)f(\(see)j
+(Section)e(4.4.5\).)43 b(Before)31 b(the)g(\014rst)e(assignmen)m(t,)i
+(the)f(v)-5 b(alue)30 b(of)h(a)g(global)e(v)-5 b(ariable)29
+b(is)h Fm(nil)p Fp(.)141 1085 y(The)g(unit)f(of)h(execution)h(of)g(Lua)
+f(is)f(called)h(a)g Fo(chunk)p Fp(.)41 b(The)30 b(syn)m(tax)2484
+1052 y Fl(1)2554 1085 y Fp(for)g(c)m(h)m(unks)g(is:)167
+1229 y Fo(chunk)100 b Fk(!)f(f)p Fo(statement)67 b Fk(j)33
+b Fo(function)7 b Fk(g)33 b Fp([)p Fo(r)-5 b(et)9 b Fp(])0
+1373 y(A)28 b(c)m(h)m(unk)g(ma)m(y)g(con)m(tain)h(statemen)m(ts)g(and)f
+(function)f(de\014nitions,)f(and)h(ma)m(y)i(b)s(e)e(in)g(a)h(\014le)f
+(or)h(in)f(a)h(string)f(inside)0 1486 y(the)g(host)f(program.)39
+b(A)27 b(c)m(h)m(unk)f(ma)m(y)h(optionally)d(ends)i(with)f(a)i(return)e
+(statemen)m(t)j(\(see)f(Section)g(4.4.3\).)41 b(When)0
+1599 y(a)c(c)m(h)m(unk)f(is)g(executed,)j(\014rst)d(all)f(its)h
+(functions)f(and)h(statemen)m(ts)i(are)f(compiled,)f(then)h(the)f
+(statemen)m(ts)j(are)0 1712 y(executed)c(in)e(sequen)m(tial)h(order.)53
+b(All)33 b(mo)s(di\014cations)f(a)j(c)m(h)m(unk)f(e\013ects)i(on)e(the)
+h(global)f(en)m(vironmen)m(t)g(p)s(ersist)0 1825 y(after)d(its)f(end.)
+40 b(Those)30 b(include)e(mo)s(di\014cations)h(to)i(global)e(v)-5
+b(ariables)29 b(and)h(de\014nitions)e(of)j(new)f(functions)3715
+1792 y Fl(2)3753 1825 y Fp(.)141 1938 y(Ch)m(unks)k(ma)m(y)i(b)s(e)f
+(pre-compiled;)h(see)g(program)f Fn(luac)f Fp(for)h(details.)55
+b(T)-8 b(ext)36 b(\014les)e(with)g(c)m(h)m(unks)h(and)g(their)0
+2051 y(binary)g(pre-compiled)f(forms)i(are)g(in)m(terc)m(hangeable.)59
+b(Lua)36 b(automatically)g(detects)i(the)e(\014le)g(t)m(yp)s(e)g(and)g
+(acts)0 2163 y(accordingly)-8 b(.)0 2450 y Fq(3)135 b(T)l(yp)t(es)0
+2653 y Fp(Lua)27 b(is)f(a)i(dynamically)d(t)m(yp)s(ed)i(language.)40
+b(V)-8 b(ariables)27 b(do)g(not)h(ha)m(v)m(e)g(t)m(yp)s(es;)h(only)d(v)
+-5 b(alues)27 b(do.)39 b(All)26 b(v)-5 b(alues)27 b(carry)0
+2766 y(their)i(o)m(wn)i(t)m(yp)s(e.)41 b(Therefore,)30
+b(there)h(are)f(no)h(t)m(yp)s(e)f(de\014nitions)e(in)h(the)i(language.)
+141 2879 y(There)39 b(are)h(sev)m(en)f(basic)g(t)m(yp)s(es)g(in)f(Lua:)
+58 b Fo(nil)p Fp(,)42 b Fo(numb)-5 b(er)p Fp(,)42 b Fo(string)p
+Fp(,)h Fo(function)p Fp(,)e Fo(CF)-7 b(unction)p Fp(,)43
+b Fo(user)-5 b(data)p Fp(,)44 b(and)0 2992 y Fo(table)p
+Fp(.)d Fo(Nil)28 b Fp(is)h(the)g(t)m(yp)s(e)g(of)g(the)h(v)-5
+b(alue)28 b Fm(nil)p Fp(,)i(whose)f(main)f(prop)s(ert)m(y)g(is)g(to)i
+(b)s(e)e(di\013eren)m(t)h(from)f(an)m(y)i(other)f(v)-5
+b(alue.)0 3104 y Fo(Numb)g(er)30 b Fp(represen)m(ts)h(real)f
+(\(\015oating)g(p)s(oin)m(t\))g(n)m(um)m(b)s(ers,)f(while)g
+Fo(string)h Fp(has)g(the)h(usual)e(meaning.)141 3217
+y(F)-8 b(unctions)39 b(are)i(considered)d(\014rst-class)i(v)-5
+b(alues)39 b(in)f(Lua.)69 b(This)38 b(means)i(that)g(functions)f(can)h
+(b)s(e)f(stored)0 3330 y(in)33 b(v)-5 b(ariables,)34
+b(passed)g(as)h(argumen)m(ts)f(to)h(other)g(functions)e(and)g(returned)
+g(as)i(results.)51 b(When)34 b(a)h(function)e(is)0 3443
+y(de\014ned)28 b(in)h(Lua,)g(its)g(b)s(o)s(dy)f(is)h(compiled)f(and)h
+(stored)g(in)f(a)i(giv)m(en)g(v)-5 b(ariable.)39 b(Lua)29
+b(can)h(call)f(\(and)g(manipulate\))0 3556 y(functions)g(written)g(in)g
+(Lua)h(and)g(functions)f(written)h(in)f(C;)h(the)g(latter)h(ha)m(v)m(e)
+h(t)m(yp)s(e)e Fo(CF)-7 b(unction)7 b Fp(.)141 3669 y(The)35
+b(t)m(yp)s(e)g Fo(user)-5 b(data)37 b Fp(is)d(pro)m(vided)g(to)i(allo)m
+(w)e(arbitrary)g(C)h(p)s(oin)m(ters)e(to)j(b)s(e)f(stored)g(in)f(Lua)g
+(v)-5 b(ariables.)54 b(It)0 3782 y(corresp)s(onds)33
+b(to)j Fn(void*)d Fp(and)h(has)g(no)h(pre-de\014ned)e(op)s(erations)h
+(in)f(Lua,)j(b)s(esides)d(assignmen)m(t)h(and)g(equalit)m(y)0
+3895 y(test.)50 b(Ho)m(w)m(ev)m(er,)37 b(b)m(y)c(using)f(fallbac)m(ks,)
+h(the)h(programmer)f(ma)m(y)h(de\014ne)e(op)s(erations)h(for)g
+Fo(user)-5 b(data)35 b Fp(v)-5 b(alues;)34 b(see)0 4008
+y(Section)c(4.7.)141 4121 y(The)e(t)m(yp)s(e)g Fo(table)h
+Fp(implemen)m(ts)e(asso)s(ciativ)m(e)i(arra)m(ys,)g(that)g(is,)f(arra)m
+(ys)h(that)g(can)g(b)s(e)e(indexed)g(not)i(only)e(with)0
+4234 y(n)m(um)m(b)s(ers,)j(but)g(with)f(an)m(y)i(v)-5
+b(alue)31 b(\(except)h Fm(nil)p Fp(\).)42 b(Therefore,)31
+b(this)f(t)m(yp)s(e)h(ma)m(y)g(b)s(e)f(used)g(not)h(only)f(to)i
+(represen)m(t)0 4346 y(ordinary)c(arra)m(ys,)j(but)f(also)g(sym)m(b)s
+(ol)f(tables,)h(sets,)h(records,)f(etc.)42 b(T)-8 b(o)30
+b(represen)m(t)g(records,)g(Lua)g(uses)g(the)g(\014eld)0
+4459 y(name)38 b(as)h(an)f(index.)62 b(The)38 b(language)g(supp)s(orts)
+f(this)g(represen)m(tation)h(b)m(y)g(pro)m(viding)e Fn(a.name)h
+Fp(as)h(syn)m(tactic)0 4572 y(sugar)i(for)f Fn(a["name"])p
+Fp(.)67 b(T)-8 b(ables)40 b(ma)m(y)g(also)g(carry)g(metho)s(ds.)68
+b(Because)42 b(functions)c(are)j(\014rst)e(class)g(v)-5
+b(alues,)0 4685 y(table)33 b(\014elds)f(ma)m(y)i(con)m(tain)g
+(functions.)48 b(The)33 b(form)g Fn(t:f\(x\))e Fp(is)i(syn)m(tactic)h
+(sugar)f(for)h Fn(t.f\(t,x\))p Fp(,)e(whic)m(h)g(calls)0
+4798 y(the)f(metho)s(d)e Fn(f)h Fp(from)g(the)h(table)f
+Fn(t)g Fp(passing)f(itself)h(as)g(the)h(\014rst)e(parameter.)141
+4911 y(It)23 b(is)f(imp)s(ortan)m(t)h(to)g(notice)h(that)f(tables)g
+(are)h(ob)5 b(jects,)25 b(and)e(not)g(v)-5 b(alues.)38
+b(V)-8 b(ariables)22 b(cannot)i(con)m(tain)f(tables,)0
+5024 y(only)28 b(references)i(to)g(them.)41 b(Assignmen)m(t,)29
+b(parameter)h(passing)e(and)h(returns)f(alw)m(a)m(ys)i(manipulate)e
+(references)p 0 5103 1560 4 v 104 5157 a Fj(1)138 5189
+y Fi(As)e(usual,)g Fh(f)p Fg(a)6 b Fh(g)26 b Fi(means)g(0)g(or)g(more)f
+Fg(a)6 b Fi('s,)26 b([)p Fg(a)6 b Fi(])27 b(means)e(an)h(optional)g
+Fg(a)g Fi(and)f Fh(f)p Fg(a)6 b Fh(g)2439 5157 y Fj(+)2517
+5189 y Fi(means)25 b(one)h(or)g(more)f Fg(a)6 b Fi('s.)104
+5248 y Fj(2)138 5280 y Fi(Actually)-6 b(,)26 b(a)g(function)f
+(de\014nition)h(is)g(an)g(assignmen)n(t)f(to)h(a)g(global)h(v)l
+(ariable;)g(see)f(Section)g(3.)1927 5589 y Fp(2)p eop
%%Page: 3 3
-3 2 bop 29 199 a Fo(The)12 b(t)o(yp)q(e)g Fn(table)g
-Fo(implemen)o(ts)d(asso)q(ciativ)o(e)i(arra)o(ys,)g(that)g(is,)h(arra)o
-(ys)e(whic)o(h)i(can)g(b)q(e)h(indexed)g(not)f(only)f(with)-42
-256 y(n)o(um)o(b)q(ers,)k(but)g(with)g(an)o(y)g(v)m(alue)h(\(except)f
-Fl(nil)p Fo(\).)20 b(Therefore,)15 b(this)f(t)o(yp)q(e)i(ma)o(y)e(b)q
-(e)i(used)g(not)f(only)g(to)f(represen)o(t)-42 312 y(ordinary)h(arra)o
-(ys,)e(but)i(also)f(sym)o(b)q(ol)g(tables,)g(sets,)g(records,)h(etc.)20
-b(T)l(o)15 b(represen)o(t)g(records,)f(Lua)i(uses)f(the)g(\014eld)-42
-369 y(name)k(as)f(an)h(index.)32 b(The)19 b(language)g(supp)q(orts)g
-(this)f(represen)o(tation)g(b)o(y)i(pro)o(viding)e Fm(a.name)g
-Fo(as)g(syn)o(tactic)-42 425 y(sugar)i(for)f Fm(a["name"])p
-Fo(.)33 b(T)l(ables)20 b(ma)o(y)e(also)h(carry)g(metho)q(ds.)34
-b(Because)20 b(functions)g(are)g(\014rst)f(class)h(v)m(alues,)-42
-482 y(table)d(\014elds)g(ma)o(y)e(con)o(tain)g(functions.)25
-b(The)16 b(form)f Fm(t:f\(x\))h Fo(is)g(syn)o(tactic)g(sugar)g(for)g
-Fm(t.f\(t,x\))p Fo(,)g(whic)o(h)g(calls)-42 538 y(the)g(metho)q(d)e
-Fm(f)h Fo(from)f(the)h(table)g Fm(t)g Fo(passing)f(itself)g(as)h(the)g
-(\014rst)g(parameter.)29 594 y(It)d(is)f(imp)q(ortan)o(t)e(to)i(notice)
-g(that)g(tables)g(are)g(ob)s(jects,)g(and)h(not)f(v)m(alues.)19
-b(V)l(ariables)10 b(cannot)i(con)o(tain)e(tables,)-42
-651 y(only)15 b(references)g(to)f(them.)19 b(Assignmen)o(t,)12
-b(parameter)h(passing)i(and)f(returns)h(alw)o(a)o(ys)e(manipulate)g
-(references)-42 707 y(to)k(tables,)f(and)i(do)f(not)f(imply)g(an)o(y)h
-(kind)g(of)f(cop)o(y)l(.)26 b(Moreo)o(v)o(er,)16 b(tables)g(m)o(ust)f
-(b)q(e)j(explicitly)e(created)h(b)q(efore)-42 764 y(used;)f(see)f
-(Section)g(4.5.7.)-42 907 y Fp(4)67 b(The)23 b(Language)-42
-1008 y Fo(This)15 b(section)g(describ)q(es)h(the)f(lexis,)f(syn)o(tax)h
-(and)g(seman)o(tics)e(of)i(Lua.)-42 1130 y Fe(4.1)56
-b(Lexical)19 b(Con)n(v)n(en)n(tions)-42 1216 y Fo(Lua)g(is)e(a)g(case)h
-(sensitiv)o(e)f(language.)27 b(Iden)o(ti\014ers)18 b(can)g(b)q(e)g(an)o
-(y)f(string)g(of)g(letters,)h(digits,)e(and)i(underscores,)-42
-1272 y(not)d(b)q(eginning)h(with)e(a)h(digit.)k(The)c(follo)o(wing)e(w)
-o(ords)i(are)f(reserv)o(ed,)h(and)h(cannot)f(b)q(e)h(used)f(as)g(iden)o
-(ti\014ers:)173 1366 y Fm(and)143 b(do)191 b(else)142
-b(elseif)95 b(end)173 1422 y(function)23 b(if)191 b(local)118
-b(nil)167 b(not)173 1478 y(or)g(repeat)95 b(return)f(until)119
-b(then)95 b(while)29 1572 y Fo(The)15 b(follo)o(wing)e(strings)i
-(denote)g(other)g(tok)o(ens:)173 1665 y Fm(~=)48 b(<=)f(>=)h(<)71
-b(>)h(==)47 b(=)71 b(..)48 b(+)71 b(-)h(*)f(/)173 1721
-y(\045)h(\()f(\))h({)f(})h([)f(])g(;)h(,)f(.)29 1815
-y Fo(Literal)17 b(strings)f(can)i(b)q(e)g(delimited)e(b)o(y)i(matc)o
-(hing)d(single)i(or)g(double)h(quotes,)g(and)f(can)h(con)o(tain)f(the)h
-(C-)-42 1871 y(lik)o(e)i(escap)q(e)i(sequences)g Fm('\\n')p
-Fo(,)f Fm('\\t')f Fo(and)h Fm('\\r')p Fo(.)36 b(Literal)20
-b(strings)g(can)g(also)g(b)q(e)i(delimited)d(b)o(y)h(matc)o(hing)-42
-1928 y Fm([[)k(...)g(]])p Fo(.)18 b(Literals)12 b(in)h(this)f(last)g
-(form)f(ma)o(y)h(run)h(for)f(sev)o(eral)g(lines,)h(ma)o(y)e(con)o(tain)
-h(nested)i Fm([[)23 b(...)h(]])p Fo(,)12 b(and)-42 1984
-y(do)k(not)e(in)o(terpret)h(escap)q(e)h(sequences.)29
-2041 y(Commen)o(ts)c(start)h(an)o(ywhere)i(outside)g(a)f(string)g(with)
-g(a)g(double)h(h)o(yphen)h(\()p Fm(--)p Fo(\))e(and)h(run)g(un)o(til)f
-(the)g(end)i(of)-42 2097 y(the)g(line.)29 2153 y(Numerical)h(constan)o
-(ts)g(ma)o(y)f(b)q(e)j(written)e(with)h(an)g(optional)e(decimal)h
-(part,)h(and)g(an)g(optional)f(decimal)-42 2210 y(exp)q(onen)o(t.)k
-(Examples)14 b(of)g(v)m(alid)h(n)o(umerical)f(constan)o(ts)g(are:)126
-2303 y Fm(4)119 b(4.0)g(0.4)g(4.57e-3)f(0.3e12)-42 2425
-y Fe(4.2)56 b(Co)r(ercion)-42 2511 y Fo(Lua)19 b(pro)o(vides)f(some)f
-(automatic)f(con)o(v)o(ersions.)29 b(An)o(y)19 b(arithmetic)d(op)q
-(eration)i(applied)g(to)g(a)g(string)f(tries)h(to)-42
-2567 y(con)o(v)o(ert)d(that)f(string)g(to)h(a)f(n)o(um)o(b)q(er,)g
-(follo)o(wing)f(the)i(usual)g(rules.)20 b(Con)o(v)o(ersely)l(,)14
-b(whenev)o(er)h(a)g(n)o(um)o(b)q(er)f(is)h(used)-42 2623
-y(when)h(a)f(string)f(is)h(exp)q(ected,)h(that)e(n)o(um)o(b)q(er)h(is)g
-(con)o(v)o(erted)g(to)f(a)h(string,)f(according)h(to)f(the)h(follo)o
-(wing)e(rule:)20 b(if)922 2748 y(3)p eop
+3 2 bop 0 91 a Fp(to)35 b(tables,)g(and)e(do)h(not)h(imply)d(an)m(y)i
+(kind)e(of)j(cop)m(y)-8 b(.)53 b(Moreo)m(v)m(er,)37 b(tables)d(m)m(ust)
+g(b)s(e)f(explicitly)f(created)j(b)s(efore)0 204 y(used)30
+b(\(see)h(Section)f(4.5.7\).)0 489 y Fq(4)135 b(The)44
+b(Language)0 692 y Fp(This)29 b(section)h(describ)s(es)f(the)h(lexis,)g
+(the)g(syn)m(tax)h(and)f(the)g(seman)m(tics)h(of)g(Lua.)0
+934 y Ff(4.1)112 b(Lexical)37 b(Con)m(v)m(en)m(tions)0
+1105 y Fp(Lua)e(is)g(a)h(case)g(sensitiv)m(e)f(language.)56
+b(Iden)m(ti\014ers)34 b(can)i(b)s(e)f(an)m(y)h(string)e(of)i(letters,)h
+(digits,)f(and)f(underscores,)0 1218 y(not)c(b)s(eginning)c(with)i(a)i
+(digit.)40 b(The)29 b(follo)m(wing)g(w)m(ords)h(are)h(reserv)m(ed,)g
+(and)e(cannot)i(b)s(e)f(used)g(as)g(iden)m(ti\014ers:)286
+1397 y Fn(and)334 b(do)381 b(else)285 b(elseif)286 1510
+y(end)334 b(function)93 b(if)381 b(local)286 1623 y(nil)334
+b(not)f(or)381 b(repeat)286 1736 y(return)190 b(then)285
+b(until)237 b(while)141 1914 y Fp(The)30 b(follo)m(wing)f(strings)g
+(denote)i(other)g(tok)m(ens:)430 2093 y Fn(~=)94 b(<=)h(>=)g(<)143
+b(>)g(==)95 b(=)143 b(..)95 b(+)143 b(-)g(*)g(/)430 2206
+y(\045)f(\()h(\))g({)g(})g([)g(])g(;)g(,)g(.)141 2385
+y Fp(Literal)44 b(strings)f(can)h(b)s(e)g(delimited)e(b)m(y)i(matc)m
+(hing)h(single)e(or)h(double)f(quotes,)49 b(and)43 b(can)i(con)m(tain)g
+(the)0 2498 y(C-lik)m(e)35 b(escap)s(e)h(sequences)g
+Fn('\\n')p Fp(,)g Fn('\\t')e Fp(and)h Fn('\\r')p Fp(.)56
+b(Literal)34 b(strings)h(can)h(also)f(b)s(e)g(delimited)e(b)m(y)j(matc)
+m(hing)0 2610 y Fn([[)47 b(...)g(]])p Fp(.)38 b(Literals)21
+b(in)h(this)f(brac)m(k)m(eted)j(form)f(ma)m(y)g(run)e(for)i(sev)m(eral)
+g(lines,)f(ma)m(y)i(con)m(tain)f(nested)f Fn([[)48 b(...)f(]])0
+2723 y Fp(pairs,)29 b(and)h(do)g(not)h(in)m(terpret)f(escap)s(e)h
+(sequences.)141 2836 y(Commen)m(ts)f(start)g(an)m(ywhere)f(outside)g(a)
+h(string)e(with)h(a)h(double)e(h)m(yphen)g(\()p Fn(--)p
+Fp(\))h(and)g(run)f(un)m(til)g(the)i(end)f(of)0 2949
+y(the)i(line.)39 b(Moreo)m(v)m(er,)32 b(if)e(the)g(\014rst)g(line)f(of)
+h(a)h(c)m(h)m(unk)f(\014le)g(starts)g(with)f Fn(#)p Fp(,)i(this)e(line)
+g(is)g(skipp)s(ed)3289 2916 y Fl(3)3326 2949 y Fp(.)141
+3062 y(Numerical)35 b(constan)m(ts)j(ma)m(y)e(b)s(e)g(written)f(with)g
+(an)h(optional)g(decimal)f(part,)j(and)d(an)i(optional)e(decimal)0
+3175 y(exp)s(onen)m(t.)41 b(Examples)29 b(of)i(v)-5 b(alid)28
+b(n)m(umerical)h(constan)m(ts)j(are:)334 3354 y Fn(4)238
+b(4.0)g(0.4)g(4.57e-3)f(0.3e12)0 3595 y Ff(4.2)112 b(Co)s(ercion)0
+3767 y Fp(Lua)37 b(pro)m(vides)f(some)h(automatic)h(con)m(v)m(ersions.)
+60 b(An)m(y)37 b(arithmetic)g(op)s(eration)f(applied)f(to)j(a)f(string)
+f(tries)g(to)0 3880 y(con)m(v)m(ert)c(that)e(string)f(to)i(a)g(n)m(um)m
+(b)s(er,)e(follo)m(wing)f(the)j(usual)d(rules.)40 b(Con)m(v)m(ersely)-8
+b(,)30 b(whenev)m(er)g(a)h(n)m(um)m(b)s(er)e(is)g(used)0
+3993 y(when)g(a)i(string)e(is)h(exp)s(ected,)h(that)g(n)m(um)m(b)s(er)e
+(is)g(con)m(v)m(erted)j(to)f(a)g(string,)f(according)g(to)h(the)g
+(follo)m(wing)e(rule:)39 b(if)0 4106 y(the)26 b(n)m(um)m(b)s(er)e(is)h
+(an)g(in)m(teger,)i(it)e(is)g(written)g(without)f(exp)s(onen)m(t)i(or)f
+(decimal)g(p)s(oin)m(t;)h(otherwise,)h(it)e(is)f(formatted)0
+4219 y(follo)m(wing)29 b(the)h Fn(\045g)g Fp(con)m(v)m(ersion)h(sp)s
+(eci\014cation)e(of)i(the)f Fn(printf)f Fp(function)g(in)g(the)h
+(standard)g(C)g(library)-8 b(.)0 4460 y Ff(4.3)112 b(Adjustmen)m(t)0
+4632 y Fp(F)-8 b(unctions)28 b(in)f(Lua)h(can)g(return)f(man)m(y)i(v)-5
+b(alues.)39 b(Because)30 b(there)e(are)h(no)f(t)m(yp)s(e)g
+(declarations,)g(the)h(system)f(do)s(es)0 4745 y(not)36
+b(kno)m(w)f(ho)m(w)g(man)m(y)h(v)-5 b(alues)35 b(a)g(function)f(will)f
+(return,)j(or)f(ho)m(w)h(man)m(y)f(parameters)h(it)f(needs.)55
+b(Therefore,)0 4858 y(sometimes,)26 b(a)g(list)e(of)h(v)-5
+b(alues)24 b(m)m(ust)h(b)s(e)g Fo(adjuste)-5 b(d)9 b
+Fp(,)28 b(at)e(run)e(time,)i(to)g(a)f(giv)m(en)g(length.)39
+b(If)24 b(there)i(are)f(more)h(v)-5 b(alues)0 4971 y(than)33
+b(are)g(needed,)g(then)g(the)g(last)f(v)-5 b(alues)33
+b(are)g(thro)m(wn)f(a)m(w)m(a)m(y)-8 b(.)51 b(If)32 b(there)h(are)g
+(more)g(needs)g(than)f(v)-5 b(alues,)33 b(then)0 5084
+y(the)g(list)e(is)g(extended)h(with)f(as)i(man)m(y)g
+Fm(nil)p Fp('s)f(as)h(needed.)46 b(Adjustmen)m(t)32 b(o)s(ccurs)g(in)f
+(m)m(ultiple)f(assignmen)m(t)j(and)0 5197 y(function)c(calls.)p
+0 5254 1560 4 v 104 5308 a Fj(3)138 5340 y Fi(This)e(facilit)n(y)f
+(allo)n(ws)i(the)d(use)h(of)h(Lua)e(as)i(a)f(script)f(in)n(terpreter)h
+(in)f(Unix)g(systems.)1927 5589 y Fp(3)p eop
%%Page: 4 4
-4 3 bop -42 199 a Fo(the)13 b(n)o(um)o(b)q(er)g(is)f(an)h(in)o(teger,)f
-(it)g(is)g(written)g(without)g(exp)q(onen)o(t)h(or)f(decimal)f(p)q(oin)
-o(t;)i(otherwise,)f(it)g(is)h(formatted)-42 256 y(follo)o(wing)g(the)j
-(\\)p Fm(\045g)p Fo(")e(con)o(v)o(ersion)g(sp)q(eci\014cation)h(of)g
-(the)h(standard)e Fm(printf)h Fo(C)g(function.)-42 377
-y Fe(4.3)56 b(Adjustmen)n(t)-42 463 y Fo(F)l(unctions)14
-b(in)g(Lua)h(can)f(return)g(man)o(y)f(v)m(alues.)19 b(Because)c(there)f
-(are)g(no)g(t)o(yp)q(e)h(declarations,)d(the)i(system)f(do)q(es)-42
-520 y(not)18 b(kno)o(w)f(ho)o(w)g(man)o(y)f(v)m(alues)i(a)g(function)f
-(will)g(return,)g(or)h(ho)o(w)f(man)o(y)f(parameters)g(it)h(needs.)28
-b(Therefore,)-42 576 y(sometimes,)10 b(a)i(list)g(of)g(v)m(alues)h(m)o
-(ust)e(b)q(e)i Fn(adjuste)n(d)5 b Fo(,)13 b(at)f(run)g(time,)f(to)h(a)h
-(giv)o(en)f(length.)18 b(If)13 b(there)g(are)f(more)f(v)m(alues)-42
-633 y(than)17 b(are)f(needed,)i(the)f(last)f(v)m(alues)h(are)f(thro)o
-(wn)g(a)o(w)o(a)o(y)l(.)23 b(If)17 b(there)g(are)f(more)g(needs)h(than)
-g(v)m(alues,)g(the)f(list)g(is)-42 689 y(extended)j(with)e(as)h(man)o
-(y)e Fl(nil)p Fo('s)h(as)g(needed.)29 b(Adjustmen)o(t)17
-b(o)q(ccurs)h(in)f(m)o(ultiple)f(assignmen)o(t)g(and)i(function)-42
-746 y(calls.)-42 867 y Fe(4.4)56 b(Statemen)n(ts)-42
-953 y Fo(Lua)19 b(supp)q(orts)f(an)f(almost)f(con)o(v)o(en)o(tional)g
-(set)i(of)f(statemen)o(ts.)26 b(The)18 b(con)o(v)o(en)o(tional)e
-(commands)f(include)k(as-)-42 1009 y(signmen)o(t,)d(con)o(trol)f
-(structures)i(and)g(pro)q(cedure)h(calls.)24 b(Non-con)o(v)o(en)o
-(tional)16 b(commands)e(include)k(table)e(con-)-42 1066
-y(structors,)e(explained)i(in)f(Section)g(4.5.7,)e(and)i(lo)q(cal)g(v)m
-(ariable)f(declarations.)-42 1186 y Fl(4.4.1)52 b(Blo)q(c)o(ks)-42
-1272 y Fo(A)15 b(blo)q(c)o(k)f(is)f(a)h(list)f(of)h(statemen)o(ts,)e
-(executed)j(sequen)o(tially)l(.)k(An)o(y)14 b(statemen)o(t)e(can)j(b)q
-(e)g(optionally)d(follo)o(w)o(ed)h(b)o(y)-42 1328 y(a)i(semicolon.)42
-1388 y Fn(blo)n(ck)49 b Fj(!)h(f)p Fn(stat)16 b(sc)s
-Fj(g)g Fo([)p Fn(r)n(et)f(sc)s Fo(])98 1444 y Fn(sc)49
-b Fj(!)h Fo([';'])-42 1512 y(F)l(or)13 b(syn)o(tactic)f(reasons,)g(a)h
-(return)g(statemen)o(t)e(can)i(only)g(b)q(e)g(written)f(as)h(the)g
-(last)f(statemen)o(t)f(of)h(a)h(blo)q(c)o(k.)19 b(This)-42
-1569 y(restriction)14 b(also)g(a)o(v)o(oids)g(some)g(\\statemen)o(t)f
-(not)i(reac)o(hed")g(errors.)-42 1689 y Fl(4.4.2)52 b(Assignmen)o(t)-42
-1775 y Fo(The)18 b(language)e(allo)o(ws)f(m)o(ultiple)g(assignmen)o(t.)
-23 b(Therefore,)17 b(the)g(syn)o(tax)g(de\014nes)h(a)f(list)e(of)i(v)m
-(ariables)f(on)h(the)-42 1831 y(left)h(side,)g(and)h(a)e(list)g(of)h
-(expressions)g(on)g(the)g(righ)o(t)f(side.)29 b(Both)18
-b(lists)f(ha)o(v)o(e)g(their)h(elemen)o(ts)f(separated)h(b)o(y)-42
-1888 y(commas.)116 1947 y Fn(stat)50 b Fj(!)g Fn(varlist1)16
-b Fo('=')g Fn(explist1)42 2003 y(varlist1)50 b Fj(!)g
-Fn(var)17 b Fj(f)p Fo(',')d Fn(var)5 b Fj(g)-42 2072
-y Fo(This)15 b(statemen)o(t)d(\014rst)i(ev)m(aluates)g(all)g(v)m(alues)
-g(on)h(the)f(righ)o(t)g(side)g(and)h(ev)o(en)o(tual)f(indices)g(on)h
-(the)f(left)g(side,)g(and)-42 2128 y(then)i(mak)o(es)e(the)h(assignmen)
-o(ts.)j(Therefore,)c(it)h(can)g(b)q(e)h(used)g(to)e(exc)o(hange)i(t)o
-(w)o(o)e(v)m(alues,)h(as)f(in)30 2222 y Fm(x,)24 b(y)f(=)h(y,)g(x)-42
-2316 y Fo(Before)f(the)g(assignmen)o(t,)f(the)g(list)f(of)i(v)m(alues)f
-(is)g Fn(adjuste)n(d)h Fo(to)f(the)h(length)f(of)g(the)h(list)e(of)h(v)
-m(ariables;)j(see)-42 2372 y(Section)16 b(4.3.)42 2444
-y Fn(var)50 b Fj(!)g Fn(name)-42 2516 y Fo(A)16 b(single)e(name)g(can)i
-(denote)f(a)g(global)f(or)h(a)g(lo)q(cal)f(v)m(ariable,)g(or)h(a)g
-(formal)d(parameter.)42 2589 y Fn(var)50 b Fj(!)g Fn(var)17
-b Fo('[')e Fn(exp1)i Fo(']')922 2748 y(4)p eop
+4 3 bop 0 91 a Ff(4.4)112 b(Statemen)m(ts)0 263 y Fp(Lua)35
+b(supp)s(orts)f(an)i(almost)f(con)m(v)m(en)m(tional)i(set)f(of)g
+(statemen)m(ts.)58 b(The)35 b(con)m(v)m(en)m(tional)i(commands)e
+(include)e(as-)0 376 y(signmen)m(t,)h(con)m(trol)h(structures)e(and)g
+(pro)s(cedure)g(calls.)50 b(Non-con)m(v)m(en)m(tional)35
+b(commands)f(include)e(table)h(con-)0 489 y(structors)d(\(Section)h
+(4.5.7\),)i(and)c(lo)s(cal)h(v)-5 b(ariable)29 b(declarations)h
+(\(Section)h(4.4.5\).)0 729 y Fm(4.4.1)105 b(Blo)s(c)m(ks)0
+901 y Fp(A)36 b(blo)s(c)m(k)g(is)f(a)h(list)f(of)h(statemen)m(ts,)k
+(whic)m(h)35 b(is)g(executed)i(sequen)m(tially)-8 b(.)57
+b(An)m(y)36 b(statemen)m(t)i(can)e(b)s(e)g(optionally)0
+1013 y(follo)m(w)m(ed)30 b(b)m(y)g(a)h(semicolon:)167
+1150 y Fo(blo)-5 b(ck)100 b Fk(!)g(f)p Fo(stat)34 b(sc)5
+b Fk(g)33 b Fp([)p Fo(r)-5 b(et)9 b Fp(])279 1263 y Fo(sc)99
+b Fk(!)h Fp([';'])0 1399 y(F)-8 b(or)38 b(syn)m(tactic)g(reasons,)h(a)e
+Fn(return)f Fp(statemen)m(t)i(can)g(only)e(b)s(e)g(written)g(as)i(the)f
+(last)g(statemen)m(t)i(of)e(a)g(blo)s(c)m(k.)0 1512 y(This)29
+b(restriction)g(also)h(a)m(v)m(oids)h(some)g(\\statemen)m(t)h(not)f
+(reac)m(hed")h(errors.)0 1752 y Fm(4.4.2)105 b(Assignmen)m(t)0
+1924 y Fp(The)34 b(language)g(allo)m(ws)f(m)m(ultiple)f(assignmen)m(t.)
+52 b(Therefore,)35 b(the)f(syn)m(tax)h(de\014nes)e(a)h(list)f(of)h(v)-5
+b(ariables)33 b(on)h(the)0 2037 y(left)i(side,)h(and)e(a)i(list)e(of)h
+(expressions)f(on)h(the)h(righ)m(t)e(side.)58 b(Both)36
+b(lists)f(ha)m(v)m(e)j(their)d(elemen)m(ts)h(separated)h(b)m(y)0
+2150 y(commas:)315 2268 y Fo(stat)100 b Fk(!)g Fo(varlist1)34
+b Fp('=')f Fo(explist1)167 2381 y(varlist1)101 b Fk(!)f
+Fo(var)33 b Fk(f)p Fp(',')h Fo(var)10 b Fk(g)0 2518 y
+Fp(This)27 b(statemen)m(t)k(\014rst)d(ev)-5 b(aluates)30
+b(all)e(v)-5 b(alues)28 b(on)h(the)g(righ)m(t)f(side)g(and)h(ev)m(en)m
+(tual)g(indices)e(on)i(the)g(left)g(side,)g(and)0 2631
+y(then)h(mak)m(es)h(the)g(assignmen)m(ts.)40 b(Therefore,)31
+b(it)f(can)g(b)s(e)g(used)g(to)h(exc)m(hange)h(t)m(w)m(o)f(v)-5
+b(alues,)30 b(as)h(in)143 2818 y Fn(x,)47 b(y)h(=)f(y,)g(x)0
+3006 y Fp(Before)f(the)f(assignmen)m(t,)k(the)c(list)e(of)i(v)-5
+b(alues)44 b(is)g Fo(adjuste)-5 b(d)47 b Fp(to)e(the)g(length)g(of)g
+(the)g(list)e(of)i(v)-5 b(ariables)44 b(\(see)0 3119
+y(Section)30 b(4.3\).)141 3232 y(A)h(single)e(name)h(can)h(denote)g(a)f
+(global)g(or)g(a)h(lo)s(cal)f(v)-5 b(ariable,)29 b(or)i(a)f(formal)g
+(parameter:)167 3376 y Fo(var)100 b Fk(!)g Fo(name)0
+3520 y Fp(Square)30 b(brac)m(k)m(ets)i(are)e(used)g(to)h(index)e(a)i
+(table:)167 3665 y Fo(var)100 b Fk(!)g Fo(var)33 b Fp('[')g
+Fo(exp1)h Fp(']')0 3809 y(If)i Fn(var)f Fp(results)g(in)f(a)j(table)f
+(v)-5 b(alue,)37 b(the)g(\014eld)d(indexed)h(b)m(y)h(the)g(expression)f
+(v)-5 b(alue)35 b(gets)j(the)e(assigned)f(v)-5 b(alue.)0
+3922 y(Otherwise,)41 b(the)e(fallbac)m(k)g Fo(settable)h
+Fp(is)e(called,)k(with)c(three)h(parameters:)59 b(the)40
+b(v)-5 b(alue)39 b(of)g Fn(var)p Fp(,)i(the)f(v)-5 b(alue)39
+b(of)0 4035 y(expression,)29 b(and)h(the)h(v)-5 b(alue)30
+b(b)s(eing)f(assigned)g(to)i(it;)f(see)h(Section)g(4.7.)141
+4148 y(The)f(syn)m(tax)h Fn(var.NAME)d Fp(is)h(just)h(syn)m(tactic)i
+(sugar)e(for)g Fn(var["NAME"])p Fp(.)167 4292 y Fo(var)100
+b Fk(!)g Fo(var)33 b Fp('.')43 b Fo(name)0 4563 y Fm(4.4.3)105
+b(Con)m(trol)35 b(Structures)0 4735 y Fp(The)30 b(condition)f
+(expression)h(of)h(a)g(con)m(trol)g(structure)f(can)h(return)e(an)m(y)i
+(v)-5 b(alue.)41 b(All)30 b(v)-5 b(alues)30 b(di\013eren)m(t)g(from)g
+Fm(nil)0 4848 y Fp(are)h(considered)e(true;)h Fm(nil)h
+Fp(is)e(considered)g(false.)41 b Fn(if)p Fp('s,)30 b
+Fn(while)p Fp('s)f(and)h Fn(repeat)p Fp('s)f(ha)m(v)m(e)i(the)g(usual)e
+(meaning.)223 4987 y Fo(stat)101 b Fk(!)e Fm(while)32
+b Fo(exp1)i Fm(do)f Fo(blo)-5 b(ck)33 b Fm(end)574 5099
+y Fk(j)65 b Fm(rep)s(eat)32 b Fo(blo)-5 b(ck)33 b Fm(un)m(til)f
+Fo(exp1)574 5212 y Fk(j)65 b Fm(if)32 b Fo(exp1)i Fm(then)e
+Fo(blo)-5 b(ck)33 b Fk(f)p Fo(elseif)20 b Fk(g)33 b Fp([)p
+Fm(else)f Fo(blo)-5 b(ck)10 b Fp(])34 b Fm(end)167 5325
+y Fo(elseif)100 b Fk(!)f Fm(elseif)33 b Fo(exp1)g Fm(then)g
+Fo(blo)-5 b(ck)1927 5589 y Fp(4)p eop
%%Page: 5 5
-5 4 bop -42 199 a Fo(Square)20 b(brac)o(k)o(ets)f(are)h(used)g(to)f
-(index)h(a)f(table.)33 b(If)20 b Fm(var)f Fo(results)g(in)g(a)h(table)f
-(v)m(alue,)h(the)g(\014eld)g(indexed)h(b)o(y)-42 256
-y(the)c(expression)f(v)m(alue)h(gets)f(the)h(assigned)f(v)m(alue.)24
-b(Otherwise,)16 b(the)h(fallbac)o(k)e Fn(settable)h Fo(is)g(called,)g
-(with)f(three)-42 312 y(parameters:)31 b(the)22 b(v)m(alue)f(of)g
-Fm(var)p Fo(,)h(the)g(v)m(alue)g(of)f(expression,)h(and)g(the)f(v)m
-(alue)h(b)q(eing)g(assigned)f(to)g(it;)i(see)-42 369
-y(Section)16 b(4.7.)42 441 y Fn(var)50 b Fj(!)g Fn(var)17
-b Fo('.')j Fn(name)-42 513 y Fo(The)c(syn)o(tax)e Fm(var.NAME)g
-Fo(is)h(just)g(syn)o(tactic)f(sugar)h(for)f Fm(var["NAME"])p
-Fo(.)-42 633 y Fl(4.4.3)52 b(Con)o(trol)17 b(Structures)-42
-719 y Fo(The)k(condition)e(expression)h(of)f(a)h(con)o(trol)e
-(structure)i(can)g(return)g(an)o(y)g(v)m(alue.)34 b(All)19
-b(v)m(alues)h(di\013eren)o(t)f(from)-42 775 y Fl(nil)f
-Fo(are)g(considered)g(true,)h(while)f Fl(nil)f Fo(is)h(considered)h
-(false.)28 b Fm(if)p Fo('s,)18 b Fm(while)p Fo('s)f(and)h
-Fm(repeat)p Fo('s)f(ha)o(v)o(e)h(the)h(usual)-42 832
-y(meaning.)70 900 y Fn(stat)50 b Fj(!)g Fl(while)15 b
-Fn(exp1)i Fl(do)f Fn(blo)n(ck)g Fl(end)245 956 y Fj(j)32
-b Fl(rep)q(eat)17 b Fn(blo)n(ck)f Fl(un)o(til)f Fn(exp1)245
-1013 y Fj(j)32 b Fl(if)16 b Fn(exp1)h Fl(then)g Fn(blo)n(ck)e
-Fj(f)p Fn(elseif)8 b Fj(g)16 b Fo([)p Fl(else)f Fn(blo)n(ck)5
-b Fo(])15 b Fl(end)42 1069 y Fn(elseif)49 b Fj(!)h Fl(elseif)15
-b Fn(exp1)i Fl(then)f Fn(blo)n(ck)29 1162 y Fo(A)g Fm(return)g
-Fo(is)g(used)g(to)g(return)g(v)m(alues)h(from)d(a)i(function.)23
-b(Because)17 b(a)f(function)g(ma)o(y)f(return)h(more)f(than)-42
-1219 y(one)h(v)m(alue,)f(the)g(syn)o(tax)g(for)f(a)h(return)g(statemen)
-o(t)e(is:)42 1291 y Fn(r)n(et)50 b Fj(!)g Fl(return)16
-b Fn(explist)-42 1483 y Fl(4.4.4)52 b(F)l(unction)18
-b(Calls)e(as)h(Statemen)o(ts)-42 1569 y Fo(Because)f(of)f(p)q(ossible)g
-(side-e\013ects,)g(function)g(calls)f(can)h(b)q(e)h(executed)g(as)f
-(statemen)o(ts.)42 1641 y Fn(stat)50 b Fj(!)g Fn(functionc)n(al)r(l)-42
-1713 y Fo(Ev)o(en)o(tual)15 b(returned)g(v)m(alues)h(are)f(thro)o(wn)f
-(a)o(w)o(a)o(y)l(.)19 b(F)l(unction)c(calls)f(are)h(explained)g(in)g
-(Section)g(4.5.8.)-42 1833 y Fl(4.4.5)52 b(Lo)q(cal)19
-b(Declarations)-42 1919 y Fo(Lo)q(cal)e(v)m(ariables)e(can)h(b)q(e)h
-(declared)f(an)o(ywhere)g(inside)g(a)g(blo)q(c)o(k.)22
-b(Their)16 b(scop)q(e)h(b)q(egins)f(after)f(the)i(declaration)-42
-1975 y(and)f(lasts)e(un)o(til)g(the)i(end)f(of)g(the)g(blo)q(c)o(k.)20
-b(The)15 b(declaration)f(ma)o(y)g(include)i(an)f(initial)e(assignmen)o
-(t:)92 2044 y Fn(stat)50 b Fj(!)g Fl(lo)q(cal)17 b Fn(de)n(clist)e
-Fo([)p Fn(init)t Fo(])42 2100 y Fn(de)n(clist)49 b Fj(!)h
-Fn(name)16 b Fj(f)p Fo(',')f Fn(name)s Fj(g)96 2157 y
-Fn(init)49 b Fj(!)h Fo('=')16 b Fn(explist1)-42 2225
-y Fo(If)f(there)f(is)f(an)h(initial)e(assignmen)o(t,)g(it)h(has)h(the)g
-(same)f(seman)o(tics)f(of)h(a)h(m)o(ultiple)e(assignmen)o(t.)17
-b(Otherwise,)d(all)-42 2281 y(v)m(ariables)h(are)g(initialized)e(with)i
-Fl(nil)p Fo(.)-42 2403 y Fe(4.5)56 b(Expressions)-42
-2489 y Fl(4.5.1)c(Simple)15 b(Expressions)-42 2575 y
-Fo(Simple)f(expressions)h(are:)922 2748 y(5)p eop
+5 4 bop 141 204 a Fp(A)32 b Fn(return)e Fp(is)h(used)g(to)h(return)f(v)
+-5 b(alues)31 b(from)g(a)h(function)f(or)g(a)h(c)m(h)m(unk.)45
+b(Because)33 b(they)f(ma)m(y)g(return)f(more)0 317 y(than)f(one)h(v)-5
+b(alue,)30 b(the)g(syn)m(tax)h(for)g(a)f(return)g(statemen)m(t)i(is:)
+167 461 y Fo(r)-5 b(et)101 b Fk(!)e Fm(return)32 b Fo(explist)i
+Fp([)p Fo(sc)5 b Fp(])0 846 y Fm(4.4.4)105 b(F)-9 b(unction)36
+b(Calls)f(as)f(Statemen)m(ts)0 1017 y Fp(Because)e(of)e(p)s(ossible)e
+(side-e\013ects,)k(function)d(calls)g(can)i(b)s(e)f(executed)h(as)f
+(statemen)m(ts:)167 1162 y Fo(stat)101 b Fk(!)e Fo(functionc)-5
+b(al)5 b(l)0 1306 y Fp(Ev)m(en)m(tual)31 b(returned)e(v)-5
+b(alues)29 b(are)i(thro)m(wn)f(a)m(w)m(a)m(y)-8 b(.)43
+b(F)-8 b(unction)30 b(calls)g(are)g(explained)f(in)g(Section)h(4.5.8.)0
+1546 y Fm(4.4.5)105 b(Lo)s(cal)36 b(Declarations)0 1718
+y Fp(Lo)s(cal)c(v)-5 b(ariables)31 b(can)h(b)s(e)g(declared)g(an)m
+(ywhere)g(inside)e(a)i(blo)s(c)m(k.)46 b(Their)30 b(scop)s(e)j(b)s
+(egins)d(after)j(the)f(declaration)0 1830 y(and)e(lasts)g(un)m(til)e
+(the)j(end)f(of)g(the)h(blo)s(c)m(k.)40 b(The)30 b(declaration)g(ma)m
+(y)h(include)d(an)i(initial)e(assignmen)m(t:)267 1967
+y Fo(stat)101 b Fk(!)e Fm(lo)s(cal)33 b Fo(de)-5 b(clist)34
+b Fp([)p Fo(init)9 b Fp(])167 2080 y Fo(de)-5 b(clist)101
+b Fk(!)e Fo(name)34 b Fk(f)p Fp(',')f Fo(name)7 b Fk(g)274
+2193 y Fo(init)100 b Fk(!)f Fp('=')33 b Fo(explist1)0
+2329 y Fp(If)h(presen)m(t,)h(an)f(initial)d(assignmen)m(t)j(has)g(the)g
+(same)h(seman)m(tics)f(of)g(a)h(m)m(ultiple)c(assignmen)m(t.)52
+b(Otherwise,)34 b(all)0 2442 y(v)-5 b(ariables)29 b(are)i(initialized)c
+(with)i Fm(nil)p Fp(.)0 2686 y Ff(4.5)112 b(Expressions)0
+2857 y Fm(4.5.1)105 b(Simple)35 b(Expressions)0 3029
+y Fp(Simple)28 b(expressions)h(are:)167 3165 y Fo(exp)100
+b Fk(!)g Fp('\(')33 b Fo(exp)g Fp('\)')167 3278 y Fo(exp)100
+b Fk(!)g Fm(nil)167 3391 y Fo(exp)g Fk(!)g Fp('n)m(um)m(b)s(er')167
+3504 y Fo(exp)g Fk(!)g Fp('literal')167 3617 y Fo(exp)g
+Fk(!)g Fo(var)0 3758 y Fp(Num)m(b)s(ers)44 b(\(n)m(umerical)g(constan)m
+(ts\))j(and)e(string)f(literals)f(are)j(explained)d(in)h(Section)h
+(4.1.)87 b(V)-8 b(ariables)45 b(are)0 3871 y(explained)29
+b(in)g(Section)h(4.4.2.)0 4111 y Fm(4.5.2)105 b(Arithmetic)34
+b(Op)s(erators)0 4283 y Fp(Lua)41 b(supp)s(orts)e(the)i(usual)f
+(arithmetic)g(op)s(erators.)73 b(These)41 b(op)s(erators)g(are)h(the)f
+(binary)e Fn(+)p Fp(,)44 b Fn(-)p Fp(,)f Fn(*)p Fp(,)h
+Fn(/)d Fp(and)f Fn(^)0 4396 y Fp(\(exp)s(onen)m(tiation\),)32
+b(and)g(the)g(unary)e Fn(-)p Fp(.)45 b(If)32 b(the)g(op)s(erands)e(are)
+i(n)m(um)m(b)s(ers,)f(or)h(strings)f(that)h(can)g(b)s(e)f(con)m(v)m
+(erted)0 4509 y(to)26 b(n)m(um)m(b)s(ers,)f(according)h(to)g(the)g
+(rules)e(giv)m(en)h(in)f(Section)h(4.2,)j(then)d(all)g(op)s(erations)f
+(but)h(exp)s(onen)m(tiation)g(ha)m(v)m(e)0 4622 y(the)33
+b(usual)e(meaning.)47 b(Otherwise,)33 b(the)g(fallbac)m(k)f(\\arith")h
+(is)f(called)g(\(see)h(Section)g(4.7\).)49 b(An)33 b(exp)s(onen)m
+(tiation)0 4735 y(alw)m(a)m(ys)39 b(calls)f(this)f(fallbac)m(k.)65
+b(The)38 b(standard)f(mathematical)i(library)d(rede\014nes)i(this)f
+(fallbac)m(k,)j(giving)e(the)0 4848 y(exp)s(ected)31
+b(meaning)e(to)j(exp)s(onen)m(tiation)d(\(see)j(Section)e(6.3\).)0
+5088 y Fm(4.5.3)105 b(Relational)35 b(Op)s(erators)0
+5259 y Fp(Lua)30 b(pro)m(vides)f(the)i(follo)m(wing)e(relational)g(op)s
+(erators:)1927 5589 y(5)p eop
%%Page: 6 6
-6 5 bop 42 193 a Fn(exp)50 b Fj(!)g Fo('\(')16 b Fn(exp)g
-Fo('\)')42 250 y Fn(exp)50 b Fj(!)g Fl(nil)42 306 y Fn(exp)g
-Fj(!)g Fo('n)o(um)o(b)q(er')42 362 y Fn(exp)g Fj(!)g
-Fo('literal')42 419 y Fn(exp)g Fj(!)g Fn(var)-42 490
-y Fo(Num)o(b)q(ers)22 b(\(n)o(umerical)f(constan)o(ts\))g(and)i(string)
-f(literals)f(are)h(explained)h(in)f(Section)h(4.1.)41
-b(V)l(ariables)22 b(are)-42 546 y(explained)16 b(in)f(Section)g(4.4.2.)
--42 665 y Fl(4.5.2)52 b(Arithmetic)15 b(Op)q(erators)-42
-751 y Fo(Lua)21 b(supp)q(orts)g(the)g(usual)f(arithmetic)e(op)q
-(erators.)35 b(These)21 b(op)q(erators)f(are)g(the)g(binary)h
-Fm(+)p Fo(,)g Fm(-)p Fo(,)g Fm(*)p Fo(,)h Fm(/)e Fo(and)h
-Fm(^)-42 808 y Fo(\(exp)q(onen)o(tiation\),)15 b(and)h(the)g(unary)g
-Fm(-)p Fo(.)22 b(If)16 b(the)g(op)q(erands)g(are)g(n)o(um)o(b)q(ers,)f
-(or)g(strings)g(that)g(can)h(b)q(e)h(con)o(v)o(erted)-42
-864 y(to)d(n)o(um)o(b)q(ers,)g(according)g(to)g(the)g(rules)g(giv)o(en)
-g(in)h(Section)f(4.2,)f(all)h(op)q(erations)f(but)i(exp)q(onen)o
-(tiation)e(ha)o(v)o(e)h(the)-42 920 y(usual)f(meaning.)18
-b(Otherwise,)13 b(the)g(fallbac)o(k)f(\\arith")g(is)g(called;)h(see)g
-(Section)g(4.7.)19 b(An)13 b(exp)q(onen)o(tiation)f(alw)o(a)o(ys)-42
-977 y(calls)k(this)f(fallbac)o(k.)22 b(The)16 b(standard)g
-(mathematical)c(library)j(rede\014nes)j(this)d(fallbac)o(k,)g(giving)g
-(the)h(exp)q(ected)-42 1033 y(meaning)e(to)h(exp)q(onen)o(tiation;)f
-(see)h(Section)g(6.3.)-42 1152 y Fl(4.5.3)52 b(Relational)18
-b(Op)q(erators)-42 1238 y Fo(Lua)e(o\013ers)e(the)i(follo)o(wing)d
-(relational)g(op)q(erators:)126 1327 y Fm(<)71 b(>)g(<=)48
-b(>=)f(~=)h(==)-42 1415 y Fo(All)15 b(return)g Fl(nil)f
-Fo(as)h(false)g(and)g(a)g(v)m(alue)g(di\013eren)o(t)g(from)e
-Fl(nil)h Fo(\(actually)g(the)h(n)o(um)o(b)q(er)g(1\))g(as)f(true.)29
-1472 y(Equalit)o(y)h(\014rst)h(compares)f(the)i(t)o(yp)q(es)f(of)h(its)
-e(op)q(erands.)24 b(If)17 b(they)g(are)f(di\013eren)o(t,)g(the)g
-(result)g(is)g Fl(nil)p Fo(.)23 b(Oth-)-42 1528 y(erwise,)18
-b(their)f(v)m(alues)h(are)g(compared.)26 b(Num)o(b)q(ers)17
-b(and)h(strings)f(are)h(compared)e(in)i(the)g(usual)f(w)o(a)o(y)l(.)27
-b(T)l(ables,)-42 1585 y(CF)l(unctions,)14 b(and)g(functions)g(are)g
-(compared)f(b)o(y)h(reference,)h(that)e(is,)h(t)o(w)o(o)e(tables)i(are)
-g(considered)g(equal)g(only)-42 1641 y(if)h(they)g(are)g(the)h(same)d
-(table.)20 b(The)15 b(op)q(erator)g Fm(~=)f Fo(is)h(exactly)g(the)g
-(negation)f(of)h(equalit)o(y)f(\()p Fm(==)p Fo(\).)29
-1698 y(The)19 b(other)g(op)q(erators)f(w)o(ork)g(as)g(follo)o(ws.)29
-b(If)19 b(b)q(oth)g(argumen)o(ts)e(are)i(n)o(um)o(b)q(ers,)f(they)h
-(are)g(compared)f(as)-42 1754 y(suc)o(h.)27 b(Otherwise,)17
-b(if)g(b)q(oth)g(argumen)o(ts)f(can)h(b)q(e)h(con)o(v)o(erted)f(to)g
-(strings,)f(their)h(v)m(alues)g(are)g(compared)g(using)-42
-1811 y(lexicographical)d(order.)20 b(Otherwise,)14 b(the)i(fallbac)o(k)
-d(\\order")i(is)g(called;)f(see)h(Section)h(4.7.)-42
-1930 y Fl(4.5.4)52 b(Logical)18 b(Op)q(erators)-42 2016
-y Fo(All)f(logical)f(op)q(erators,)g(lik)o(e)h(con)o(trol)f
-(structures,)h(consider)g Fl(nil)g Fo(as)g(false)g(and)g(an)o(ything)g
-(else)g(as)g(true.)26 b(The)-42 2072 y(logical)14 b(op)q(erators)g
-(are:)269 2161 y Fm(and)71 b(or)g(not)-42 2249 y Fo(The)17
-b(op)q(erators)f Fm(and)g Fo(and)h Fm(or)f Fo(use)h(short-cut)f(ev)m
-(aluation,)g(that)g(is,)g(the)h(second)g(op)q(erand)g(is)f(ev)m
-(aluated)h(only)-42 2306 y(if)e(necessary)l(.)-42 2425
-y Fl(4.5.5)52 b(Concatenation)-42 2511 y Fo(Lua)18 b(o\013ers)d(a)i
-(string)f(concatenation)g(op)q(erator,)f(denoted)j(b)o(y)e(\\)p
-Fm(..)p Fo(".)24 b(If)17 b(op)q(erands)g(are)g(strings)e(or)i(n)o(um)o
-(b)q(ers,)-42 2567 y(they)c(are)g(con)o(v)o(erted)f(to)g(strings)g
-(according)g(to)g(the)h(rules)f(in)h(Section)f(4.2.)18
-b(Otherwise,)13 b(the)g(fallbac)o(k)e(\\concat")-42 2623
-y(is)k(called;)g(see)g(Section)g(4.7.)922 2748 y(6)p
+6 5 bop 334 91 a Fn(<)143 b(>)g(<=)95 b(>=)g(~=)g(==)0
+279 y Fp(All)29 b(these)i(return)e Fm(nil)i Fp(as)f(false)g(and)g(a)h
+(v)-5 b(alue)30 b(di\013eren)m(t)f(from)h Fm(nil)h Fp(\(actually)f(the)
+h(n)m(um)m(b)s(er)e(1\))i(as)f(true.)141 392 y(Equalit)m(y)k(\014rst)f
+(compares)i(the)g(t)m(yp)s(es)f(of)h(its)e(op)s(erands.)52
+b(If)34 b(they)g(are)h(di\013eren)m(t,)g(then)f(the)h(result)e(is)h
+Fm(nil)p Fp(.)0 505 y(Otherwise,)25 b(their)g(v)-5 b(alues)24
+b(are)i(compared.)39 b(Num)m(b)s(ers)24 b(and)h(strings)f(are)i
+(compared)f(in)f(the)i(usual)e(w)m(a)m(y)-8 b(.)40 b(T)-8
+b(ables,)0 618 y(CF)g(unctions,)28 b(and)g(functions)e(are)j(compared)f
+(b)m(y)g(reference,)h(that)g(is,)f(t)m(w)m(o)i(tables)e(are)g
+(considered)f(equal)h(only)0 731 y(if)h(they)i(are)g(the)f(same)h
+(table.)41 b(The)29 b(op)s(erator)i Fn(~=)f Fp(is)f(exactly)i(the)g
+(negation)g(of)f(equalit)m(y)g(\()p Fn(==)p Fp(\).)141
+844 y(The)h(other)i(op)s(erators)f(w)m(ork)g(as)g(follo)m(ws.)44
+b(If)31 b(b)s(oth)h(argumen)m(ts)g(are)g(n)m(um)m(b)s(ers,)f(then)h
+(they)g(are)g(compared)0 956 y(as)c(suc)m(h.)39 b(Otherwise,)27
+b(if)f(b)s(oth)h(argumen)m(ts)g(can)h(b)s(e)f(con)m(v)m(erted)h(to)g
+(strings,)f(their)g(v)-5 b(alues)26 b(are)i(compared)f(using)0
+1069 y(lexicographical)i(order.)40 b(Otherwise,)29 b(the)i(\\order")g
+(fallbac)m(k)f(is)f(called)h(\(see)h(Section)f(4.7\).)0
+1309 y Fm(4.5.4)105 b(Logical)36 b(Op)s(erators)0 1481
+y Fp(Lik)m(e)g(con)m(trol)g(structures,)g(all)f(logical)g(op)s(erators)
+h(consider)f Fm(nil)h Fp(as)g(false)f(and)g(an)m(ything)g(else)h(as)g
+(true.)56 b(The)0 1594 y(logical)30 b(op)s(erators)g(are:)620
+1782 y Fn(and)143 b(or)f(not)0 1969 y Fp(The)31 b(op)s(erator)g
+Fn(and)f Fp(returns)g Fm(nil)i Fp(if)e(its)g(\014rst)h(argumen)m(t)g
+(is)f Fm(nil)p Fp(;)i(otherwise)f(it)g(returns)e(its)i(second)g
+(argumen)m(t.)0 2082 y(The)d(op)s(erator)h Fn(or)g Fp(returns)e(its)i
+(\014rst)f(argumen)m(t)h(if)f(it)g(is)g(di\013eren)m(t)g(from)h
+Fm(nil)p Fp(;)g(otherwise)g(it)f(returns)g(its)g(second)0
+2195 y(argumen)m(t.)40 b(Both)29 b Fn(and)e Fp(and)g
+Fn(or)g Fp(use)h(short-cut)g(ev)-5 b(aluation,)28 b(that)h(is,)e(the)h
+(second)g(op)s(erand)f(is)g(ev)-5 b(aluated)28 b(only)0
+2308 y(if)h(necessary)-8 b(.)0 2548 y Fm(4.5.5)105 b(Concatenation)0
+2720 y Fp(Lua)33 b(o\013ers)h(a)g(string)e(concatenation)j(op)s
+(erator,)g(denoted)f(b)m(y)f(\\)p Fn(..)p Fp(".)50 b(If)33
+b(op)s(erands)f(are)i(strings)f(or)g(n)m(um)m(b)s(ers,)0
+2833 y(then)j(they)g(are)h(con)m(v)m(erted)h(to)f(strings)e(according)h
+(to)h(the)f(rules)f(in)g(Section)h(4.2.)59 b(Otherwise,)37
+b(the)f(fallbac)m(k)0 2946 y(\\concat")d(is)c(called)h(\(see)h(Section)
+f(4.7\).)0 3186 y Fm(4.5.6)105 b(Precedence)0 3357 y
+Fp(Op)s(erator)30 b(precedence)h(follo)m(ws)e(the)i(table)f(b)s(elo)m
+(w,)g(from)g(the)g(lo)m(w)m(er)h(to)g(the)g(higher)e(priorit)m(y:)620
+3545 y Fn(and)143 b(or)620 3658 y(<)g(>)g(<=)95 b(>=)g(~=)g(==)620
+3771 y(..)620 3884 y(+)143 b(-)620 3997 y(*)g(/)620 4109
+y(not)95 b(-)48 b(\(unary\))620 4222 y(^)0 4410 y Fp(All)29
+b(binary)g(op)s(erators)h(are)h(left)f(asso)s(ciativ)m(e,)h(except)h
+(for)e Fn(^)g Fp(\(exp)s(onen)m(tiation\),)g(whic)m(h)g(is)f(righ)m(t)h
+(asso)s(ciativ)m(e.)0 4650 y Fm(4.5.7)105 b(T)-9 b(able)35
+b(Constructors)0 4822 y Fp(T)-8 b(able)30 b(constructors)g(are)g
+(expressions)f(that)i(create)g(tables;)f(ev)m(ery)h(time)f(a)g
+(constructor)g(is)g(ev)-5 b(aluated,)30 b(a)g(new)0 4935
+y(table)c(is)f(created.)41 b(Constructors)26 b(can)g(b)s(e)g(used)f(to)
+i(create)h(empt)m(y)f(tables,)g(or)f(to)h(create)h(a)f(table)f(and)g
+(initialize)0 5048 y(some)31 b(\014elds.)141 5160 y(The)f(general)g
+(syn)m(tax)h(for)f(constructors)h(is:)1927 5589 y(6)p
eop
%%Page: 7 7
-7 6 bop -42 199 a Fl(4.5.6)52 b(Precedence)-42 285 y
-Fo(Op)q(erator)15 b(precedence)i(follo)o(ws)d(the)h(table)g(b)q(elo)o
-(w,)f(from)f(the)j(lo)o(w)o(er)d(to)i(the)g(higher)g(priorit)o(y:)269
-379 y Fm(and)71 b(or)269 435 y(<)g(>)h(<=)47 b(>=)h(~=)f(==)269
-492 y(..)269 548 y(+)71 b(-)269 605 y(*)g(/)269 661 y(not)47
-b(-)24 b(\(unary\))269 718 y(^)-42 811 y Fo(All)15 b(binary)g(op)q
-(erators)f(are)h(left)f(asso)q(ciativ)o(e,)g(except)h(for)g
-Fm(^)p Fo(,)g(whic)o(h)g(is)f(righ)o(t)g(asso)q(ciativ)o(e.)-42
-931 y Fl(4.5.7)52 b(T)l(able)18 b(Constructors)-42 1017
-y Fo(T)l(able)d(constructors)f(are)h(expressions)g(that)f(create)h
-(tables;)f(ev)o(ery)h(time)e(a)i(constructor)f(is)h(ev)m(aluated,)g(a)f
-(new)-42 1074 y(table)f(is)g(created.)19 b(Constructors)12
-b(can)h(b)q(e)h(used)g(to)e(create)h(empt)o(y)f(tables,)g(or)h(to)g
-(create)g(a)f(table)h(and)g(initialize)-42 1130 y(some)h(\014elds.)29
-1187 y(The)h(general)g(syn)o(tax)g(for)f(constructors)h(is:)42
-1255 y Fn(table)n(c)n(onstructor)49 b Fj(!)i Fo(')p Fj(f)p
-Fo(')15 b Fn(\014eld)r(list)g Fo(')p Fj(g)p Fo(')212
-1311 y Fn(\014eld)r(list)48 b Fj(!)j Fn(l\014eld)r(list)31
-b Fj(j)16 b Fn(\016eld)r(list)31 b Fj(j)16 b Fn(l\014eld)r(list)f
-Fo(';')g Fn(\016eld)r(list)200 1368 y(l\014eld)r(list)48
-b Fj(!)j Fo([)p Fn(l\014eld)r(list1)6 b Fo(])197 1424
-y Fn(\016eld)r(list)49 b Fj(!)i Fo([)p Fn(\016eld)r(list1)6
-b Fo(])29 1517 y(The)15 b(form)f Fn(l\014eld)r(list1)g
-Fo(is)h(used)g(to)g(initialize)e(lists.)42 1589 y Fn(l\014eld)r(list1)
-49 b Fj(!)h Fn(exp)16 b Fj(f)p Fo(',')f Fn(exp)s Fj(g)h
-Fo([','])-42 1662 y(The)i(expressions)f(in)g(the)g(list)f(are)h
-(assigned)g(to)g(consecutiv)o(e)g(n)o(umerical)f(indexes,)h(starting)f
-(with)h(1.)25 b(As)18 b(an)-42 1718 y(example:)30 1812
-y Fm(a)24 b(=)g({"v1",)f("v2",)g(34})-42 1906 y Fo(is)15
-b(equiv)m(alen)o(t)g(to:)30 2000 y Fm(temp)23 b(=)h({})30
-2056 y(temp[1])f(=)h("v1")30 2112 y(temp[2])f(=)h("v2")30
-2169 y(temp[3])f(=)h(34)30 2225 y(a)g(=)g(temp)29 2319
-y Fo(The)15 b(next)h(form)d(initializes)g(named)i(\014elds)g(in)g(a)g
-(table.)42 2378 y Fn(\016eld)r(list1)50 b Fj(!)g Fn(\016eld)16
-b Fj(f)p Fo(',')f Fn(\016eld)5 b Fj(g)15 b Fo([','])127
-2435 y Fn(\016eld)50 b Fj(!)g Fn(name)16 b Fo('=')g Fn(exp)-42
-2503 y Fo(As)g(an)f(example:)30 2597 y Fm(a)24 b(=)g({x)f(=)h(1,)f(y)h
-(=)g(3})922 2748 y Fo(7)p eop
+7 6 bop 167 79 a Fo(table)-5 b(c)g(onstructor)103 b Fk(!)c
+Fp(')p Fk(f)p Fp(')34 b Fo(\014eld)5 b(list)33 b Fp(')p
+Fk(g)p Fp(')506 192 y Fo(\014eld)5 b(list)101 b Fk(!)e
+Fo(l\014eld)5 b(list)66 b Fk(j)33 b Fo(\016eld)5 b(list)66
+b Fk(j)33 b Fo(l\014eld)5 b(list)33 b Fp(';')h Fo(\016eld)5
+b(list)483 305 y(l\014eld)g(list)101 b Fk(!)e Fp([)p
+Fo(l\014eld)5 b(list1)12 b Fp(])477 418 y Fo(\016eld)5
+b(list)101 b Fk(!)e Fp([)p Fo(\016eld)5 b(list1)12 b
+Fp(])141 604 y(The)30 b(form)g Fo(l\014eld)5 b(list1)32
+b Fp(is)d(used)h(to)h(initialize)c(lists.)167 748 y Fo(l\014eld)5
+b(list1)101 b Fk(!)f Fo(exp)33 b Fk(f)p Fp(',')h Fo(exp)6
+b Fk(g)33 b Fp([','])0 893 y(The)40 b(expressions)g(in)f(the)i(list)e
+(are)i(assigned)f(to)i(consecutiv)m(e)f(n)m(umerical)f(indexes,)i
+(starting)f(with)e(1.)72 b(F)-8 b(or)0 1006 y(example:)143
+1193 y Fn(a)48 b(=)f({"v1",)f("v2",)h(34})0 1381 y Fp(is)29
+b(roughly)g(equiv)-5 b(alen)m(t)30 b(to:)143 1568 y Fn(temp)47
+b(=)g({})143 1681 y(temp[1])f(=)h("v1")143 1794 y(temp[2])f(=)h("v2")
+143 1907 y(temp[3])f(=)h(34)143 2020 y(a)h(=)f(temp)141
+2208 y Fp(The)30 b(next)h(form)e(initializes)f(named)i(\014elds)f(in)g
+(a)i(table:)167 2326 y Fo(\016eld)5 b(list1)101 b Fk(!)f
+Fo(\016eld)33 b Fk(f)p Fp(',')h Fo(\016eld)9 b Fk(g)34
+b Fp([','])337 2439 y Fo(\016eld)100 b Fk(!)g Fo(name)33
+b Fp('=')g Fo(exp)0 2576 y Fp(F)-8 b(or)31 b(example:)143
+2763 y Fn(a)48 b(=)f({x)g(=)h(1,)f(y)g(=)h(3})0 2951
+y Fp(is)29 b(roughly)g(equiv)-5 b(alen)m(t)30 b(to:)143
+3139 y Fn(temp)47 b(=)g({})143 3252 y(temp.x)f(=)i(1)190
+b(--)48 b(or)f(temp["x"])e(=)i(1)143 3365 y(temp.y)f(=)i(3)190
+b(--)48 b(or)f(temp["y"])e(=)i(3)143 3477 y(a)h(=)f(temp)0
+3718 y Fm(4.5.8)105 b(F)-9 b(unction)36 b(Calls)0 3889
+y Fp(A)30 b(function)g(call)f(has)h(the)h(follo)m(wing)e(syn)m(tax:)167
+4033 y Fo(functionc)-5 b(al)5 b(l)101 b Fk(!)e Fo(var)34
+b(r)-5 b(e)g(alPar)g(ams)0 4178 y Fp(Here,)49 b Fn(var)44
+b Fp(can)h(b)s(e)f(an)m(y)h(v)-5 b(ariable)44 b(\(global,)k(lo)s(cal,)g
+(indexed,)f(etc\).)86 b(If)44 b(its)g(v)-5 b(alue)45
+b(has)f(t)m(yp)s(e)h Fo(function)52 b Fp(or)0 4291 y
+Fo(CF)-7 b(unction)7 b Fp(,)29 b(then)f(this)e(function)h(is)g(called.)
+39 b(Otherwise,)27 b(the)h(\\function")f(fallbac)m(k)h(is)f(called,)g
+(ha)m(ving)h(as)g(\014rst)0 4403 y(parameter)j(the)f(v)-5
+b(alue)30 b(of)h Fn(var)p Fp(,)f(and)f(then)h(the)h(original)d(call)i
+(parameters.)141 4516 y(The)g(form:)167 4661 y Fo(functionc)-5
+b(al)5 b(l)101 b Fk(!)e Fo(var)34 b Fp(':')42 b Fo(name)33
+b(r)-5 b(e)g(alPar)g(ams)0 4805 y Fp(can)31 b(b)s(e)e(used)h(to)h(call)
+f(\\metho)s(ds".)41 b(A)30 b(call)g Fn(var:name\(...\))d
+Fp(is)i(syn)m(tactic)i(sugar)g(for)95 4992 y Fn(var.name\(var,)45
+b(...\))1927 5589 y Fp(7)p eop
%%Page: 8 8
-8 7 bop -42 199 a Fo(is)15 b(equiv)m(alen)o(t)g(to:)30
-293 y Fm(temp)23 b(=)h({})30 350 y(temp.x)f(=)h(1)30
-406 y(temp.y)f(=)h(3)30 462 y(a)g(=)g(temp)-42 582 y
-Fl(4.5.8)52 b(F)l(unction)18 b(Calls)-42 668 y Fo(A)e(function)f(call)f
-(has)h(the)g(follo)o(wing)e(syn)o(tax:)42 740 y Fn(functionc)n(al)r(l)
-49 b Fj(!)h Fn(var)17 b(r)n(e)n(alPar)n(ams)-42 813 y
-Fo(Here,)i Fm(var)e Fo(can)h(b)q(e)h(an)o(y)e(v)m(ariable)h(\(global,)e
-(lo)q(cal,)i(indexed,)g(etc\).)28 b(If)18 b(its)f(t)o(yp)q(e)h(is)g
-Fn(function)j Fo(or)c Fn(CF)m(unction)s Fo(,)-42 869
-y(this)g(function)g(is)f(called.)25 b(Otherwise,)17 b(the)g(fallbac)o
-(k)f(\\function")g(is)h(called,)g(ha)o(ving)f(as)g(\014rst)h(parameter)
-e(the)-42 925 y(v)m(alue)h(of)f Fm(var)p Fo(,)f(and)h(then)h(the)f
-(original)f(call)g(parameters.)29 982 y(The)h(form:)42
-1054 y Fn(functionc)n(al)r(l)49 b Fj(!)h Fn(var)17 b
-Fo(':')j Fn(name)c(r)n(e)n(alPar)n(ams)-42 1126 y Fo(can)g(b)q(e)g
-(used)f(to)g(call)f(\\metho)q(ds".)19 b(A)c(call)f Fm(var:name\(...\))g
-Fo(is)g(syn)o(tactic)h(sugar)f(for)6 1220 y Fm(var.name\(var,)22
-b(...\))-42 1314 y Fo(except)16 b(that)f Fm(var)f Fo(is)h(ev)m(aluated)
-g(only)g(once.)42 1382 y Fn(r)n(e)n(alPar)n(ams)49 b
-Fj(!)h Fo('\(')16 b([)p Fn(explist1)6 b Fo(])15 b('\)')42
-1438 y Fn(r)n(e)n(alPar)n(ams)49 b Fj(!)h Fn(table)n(c)n(onstructor)115
-1495 y(explist1)f Fj(!)h Fn(exp1)17 b Fj(f)p Fo(',')e
-Fn(exp1)6 b Fj(g)-42 1563 y Fo(All)18 b(argumen)o(t)e(expressions)i
-(are)g(ev)m(aluated)g(b)q(efore)g(the)h(call;)f(then)g(the)g(list)f(of)
-h(argumen)o(ts)e(is)i(adjusted)g(to)-42 1620 y(the)j(length)f(of)f(the)
-h(list)f(of)h(parameters)e(\(see)j(Section)f(4.3\);)h(\014nally)l(,)f
-(this)g(list)f(is)g(assigned)h(to)g(the)g(formal)-42
-1676 y(parameters.)g(A)15 b(call)g(of)g(the)h(form)e
-Fm(f{...})h Fo(is)g(syn)o(tactic)f(sugar)h(for)g Fm(f\({...}\))p
-Fo(,)f(that)h(is,)g(the)h(parameter)e(list)-42 1732 y(is)h(a)g(single)g
-(new)g(table.)29 1789 y(Because)h(a)f(function)h(can)g(return)f(an)o(y)
-g(n)o(um)o(b)q(er)g(of)g(results)g(\(see)h(Section)f(4.4.3\),)e(the)j
-(n)o(um)o(b)q(er)f(of)g(results)-42 1845 y(m)o(ust)e(b)q(e)h(adjusted)g
-(b)q(efore)g(used.)20 b(If)14 b(the)g(function)f(is)h(called)f(as)g(a)h
-(statemen)o(t)d(\(see)j(Section)g(4.4.4\),)e(its)g(return)-42
-1902 y(list)18 b(is)h(adjusted)g(to)g(0.)31 b(If)20 b(the)f(function)g
-(is)g(called)g(in)g(a)g(place)g(that)f(needs)i(a)f(single)f(v)m(alue)i
-(\(syn)o(tactically)-42 1958 y(denoted)f(b)o(y)f(the)g(non-terminal)e
-Fm(exp1)p Fo(\),)h(its)g(return)h(list)f(is)g(adjusted)h(to)g(1.)27
-b(If)18 b(the)g(function)g(is)g(called)f(in)h(a)-42 2015
-y(place)f(that)g(can)g(hold)g(man)o(y)e(v)m(alues)i(\(syn)o(tactically)
-e(denoted)j(b)o(y)f(the)g(non-terminal)e Fm(exp)p Fo(\),)h(no)h
-(adjustmen)o(t)-42 2071 y(is)e(done.)-42 2193 y Fe(4.6)56
-b(F)-5 b(unction)20 b(De\014nitions)-42 2279 y Fo(F)l(unctions)c(in)g
-(Lua)g(can)g(b)q(e)h(de\014ned)g(an)o(ywhere)f(in)g(the)g(global)e(lev)
-o(el)i(of)f(a)h(c)o(h)o(unk.)22 b(The)16 b(syn)o(tax)f(for)h(function)
--42 2335 y(de\014nition)g(is:)42 2407 y Fn(function)50
-b Fj(!)g Fl(function)16 b Fn(var)h Fo('\(')e([)p Fn(p)n(arlist1)6
-b Fo(])16 b('\)')f Fn(blo)n(ck)g Fl(end)29 2536 y Fo(When)f(Lua)g
-(pre-compiles)f(a)g(c)o(h)o(unk,)h(all)f(its)f(function)i(b)q(o)q(dies)
-g(are)f(pre-compiled,)g(to)q(o.)19 b(Then,)14 b(when)g(Lua)-42
-2592 y(\\executes")i(the)f(function)g(de\014nition,)g(its)f(b)q(o)q(dy)
-i(is)f(stored,)f(with)h(t)o(yp)q(e)g Fn(function)p Fo(,)f(in)o(to)g
-(the)i(v)m(ariable)e Fm(var)p Fo(.)922 2748 y(8)p eop
+8 7 bop 0 91 a Fp(except)31 b(that)g Fn(var)f Fp(is)f(ev)-5
+b(aluated)31 b(only)e(once.)167 228 y Fo(r)-5 b(e)g(alPar)g(ams)103
+b Fk(!)d Fp('\(')33 b([)p Fo(explist1)12 b Fp(])35 b('\)')167
+341 y Fo(r)-5 b(e)g(alPar)g(ams)103 b Fk(!)d Fo(table)-5
+b(c)g(onstructor)312 453 y(explist1)101 b Fk(!)f Fo(exp1)33
+b Fk(f)p Fp(',')h Fo(exp1)12 b Fk(g)0 590 y Fp(All)35
+b(argumen)m(t)h(expressions)f(are)i(ev)-5 b(aluated)36
+b(b)s(efore)g(the)g(call;)j(then)d(the)g(list)f(of)h(argumen)m(ts)h(is)
+e(adjusted)g(to)0 703 y(the)40 b(length)g(of)h(the)f(list)f(of)h
+(parameters)h(\(see)g(Section)f(4.3\);)47 b(\014nally)-8
+b(,)41 b(this)f(list)e(is)i(assigned)f(to)i(the)g(formal)0
+816 y(parameters.)i(A)32 b(call)e(of)i(the)f(form)g Fn(f{...})e
+Fp(is)h(syn)m(tactic)i(sugar)f(for)g Fn(f\({...}\))p
+Fp(,)f(that)i(is,)e(the)i(parameter)f(list)0 929 y(is)e(a)i(single)e
+(new)h(table.)141 1042 y(Because)j(a)e(function)f(can)h(return)f(an)m
+(y)i(n)m(um)m(b)s(er)d(of)j(results)d(\(see)j(Section)f(4.4.3\),)j(the)
+d(n)m(um)m(b)s(er)f(of)h(results)0 1155 y(m)m(ust)c(b)s(e)g(adjusted)g
+(b)s(efore)g(used.)39 b(If)27 b(the)h(function)e(is)g(called)h(as)h(a)g
+(statemen)m(t)h(\(see)f(Section)g(4.4.4\),)i(its)d(return)0
+1268 y(list)37 b(is)g(adjusted)h(to)h(0.)65 b(If)38 b(the)g(function)f
+(is)h(called)f(in)g(a)i(place)f(that)h(needs)f(a)h(single)e(v)-5
+b(alue)38 b(\(syn)m(tactically)0 1380 y(denoted)d(b)m(y)f(the)h
+(non-terminal)e Fn(exp1)p Fp(\),)j(then)e(its)g(return)g(list)g(is)f
+(adjusted)h(to)i(1.)54 b(If)35 b(the)f(function)g(is)g(called)0
+1493 y(in)k(a)h(place)h(that)f(can)h(hold)e(man)m(y)h(v)-5
+b(alues)38 b(\(syn)m(tactically)i(denoted)f(b)m(y)g(the)h(non-terminal)
+d Fn(exp)p Fp(\),)k(then)e(no)0 1606 y(adjustmen)m(t)30
+b(is)g(made.)0 1850 y Ff(4.6)112 b(F)-9 b(unction)37
+b(De\014nitions)0 2021 y Fp(F)-8 b(unctions)31 b(in)g(Lua)g(can)h(b)s
+(e)g(de\014ned)e(an)m(ywhere)i(in)e(the)i(global)g(lev)m(el)f(of)h(a)g
+(c)m(h)m(unk.)45 b(The)31 b(syn)m(tax)i(for)e(function)0
+2134 y(de\014nition)d(is:)167 2278 y Fo(function)100
+b Fk(!)g Fm(function)33 b Fo(var)g Fp('\(')g([)p Fo(p)-5
+b(arlist1)12 b Fp(])36 b('\)')e Fo(blo)-5 b(ck)33 b Fm(end)141
+2536 y Fp(When)27 b(Lua)g(pre-compiles)f(a)i(c)m(h)m(unk,)g(all)e(its)h
+(function)f(b)s(o)s(dies)f(are)j(pre-compiled,)e(to)s(o.)41
+b(Then,)27 b(when)f(Lua)0 2649 y(\\executes")33 b(the)d(function)f
+(de\014nition,)f(its)i(b)s(o)s(dy)f(is)g(stored,)i(with)e(t)m(yp)s(e)i
+Fo(function)p Fp(,)g(in)m(to)f(the)g(v)-5 b(ariable)30
+b Fn(var)p Fp(.)141 2761 y(P)m(arameters)i(act)f(as)g(lo)s(cal)e(v)-5
+b(ariables,)30 b(initialized)d(with)i(the)i(argumen)m(t)f(v)-5
+b(alues.)167 2906 y Fo(p)g(arlist1)102 b Fk(!)e Fo(name)33
+b Fk(f)p Fp(',')h Fo(name)7 b Fk(g)141 3163 y Fp(Results)28
+b(are)i(returned)e(using)g(the)h Fn(return)f Fp(statemen)m(t)j(\(see)f
+(Section)f(4.4.3\).)43 b(If)28 b(con)m(trol)i(reac)m(hes)g(the)g(end)0
+3276 y(of)h(a)f(function)f(without)h(a)g(return)g(instruction,)e(then)i
+(the)h(function)e(returns)g(with)g(no)i(results.)141
+3389 y(There)e(is)g(a)h(sp)s(ecial)e(syn)m(tax)i(for)g(de\014ning)e
+(metho)s(ds,)h(that)h(is,)f(functions)f(that)j(ha)m(v)m(e)g(an)e(extra)
+h(parameter)0 3502 y Fo(self)p Fp(.)167 3646 y Fo(function)100
+b Fk(!)g Fm(function)33 b Fo(var)g Fp(':')43 b Fo(name)33
+b Fp('\(')g([)p Fo(p)-5 b(arlist1)12 b Fp(])36 b('\)')d
+Fo(blo)-5 b(ck)33 b Fm(end)0 3790 y Fp(Th)m(us,)d(a)g(declaration)g
+(lik)m(e)0 3978 y Fn(function)46 b(v:f)g(\(...\))95 4091
+y(...)0 4203 y(end)0 4391 y Fp(is)29 b(equiv)-5 b(alen)m(t)30
+b(to)0 4579 y Fn(function)46 b(v.f)g(\(self,)h(...\))95
+4692 y(...)0 4804 y(end)0 4992 y Fp(that)33 b(is,)f(the)h(function)e
+(gets)i(an)g(extra)g(formal)f(parameter)g(called)g Fn(self)p
+Fp(.)46 b(Notice)33 b(that)g(the)g(v)-5 b(ariable)31
+b Fn(v)h Fp(m)m(ust)0 5105 y(ha)m(v)m(e)g(b)s(een)d(previously)f
+(initialized)g(with)h(a)h(table)h(v)-5 b(alue.)1927 5589
+y(8)p eop
%%Page: 9 9
-9 8 bop 29 199 a Fo(P)o(arameters)13 b(act)i(as)f(lo)q(cal)h(v)m
-(ariables,)f(initialized)f(with)i(the)g(argumen)o(t)f(v)m(alues.)42
-271 y Fn(p)n(arlist1)50 b Fj(!)g Fn(name)16 b Fj(f)p
-Fo(',')f Fn(name)s Fj(g)29 400 y Fo(Results)g(are)f(returned)h(using)f
-(the)h Fm(return)f Fo(statemen)o(t)e(\(see)j(Section)f(4.4.3\).)k(If)d
-(con)o(trol)e(reac)o(hes)i(the)g(end)-42 456 y(of)g(a)g(function)g
-(without)f(a)h(return)g(instruction,)f(the)h(function)g(returns)h(with)
-e(no)h(results.)29 513 y(There)22 b(is)f(a)g(sp)q(ecial)g(syn)o(tax)g
-(for)g(de\014nition)h(of)f(metho)q(ds,)h(that)e(is,)j(functions)e(whic)
-o(h)g(ha)o(v)o(e)h(an)f(extra)-42 569 y(parameter)14
-b Fn(self)p Fo(.)42 641 y Fn(function)50 b Fj(!)g Fl(function)16
-b Fn(var)h Fo(':')j Fn(name)c Fo('\(')f([)p Fn(p)n(arlist1)6
-b Fo(])16 b('\)')f Fn(blo)n(ck)g Fl(end)-42 714 y Fo(A)h(declaration)e
-(lik)o(e)-42 807 y Fm(function)23 b(v:f)h(\(...\))6 864
-y(...)-42 920 y(end)-42 1014 y Fo(is)15 b(equiv)m(alen)o(t)g(to)-42
-1108 y Fm(function)23 b(v.f)h(\(self,)f(...\))6 1164
-y(...)-42 1221 y(end)-42 1315 y Fo(that)16 b(is,)g(the)g(function)g
-(gets)g(an)g(extra)f(formal)f(parameter)h(called)h Fm(self)p
-Fo(.)22 b(Notice)16 b(that)f(the)h(v)m(ariable)g Fm(v)g
-Fo(m)o(ust)-42 1371 y(ha)o(v)o(e)f(b)q(een)i(previously)d(initialized)g
-(with)g(a)h(table)g(v)m(alue.)-42 1493 y Fe(4.7)56 b(F)-5
-b(allbac)n(ks)-42 1579 y Fo(Lua)17 b(pro)o(vides)f(a)g(p)q(o)o(w)o
-(erful)g(mec)o(hanism)e(to)h(extend)i(its)f(seman)o(tics,)e(called)i
-Fn(fal)r(lb)n(acks)p Fo(.)23 b(Basically)l(,)15 b(a)h(fallbac)o(k)-42
-1635 y(is)f(a)g(programmer)d(de\014ned)17 b(function)e(whic)o(h)g(is)f
-(called)h(whenev)o(er)h(Lua)f(do)q(es)h(not)f(kno)o(w)f(ho)o(w)h(to)g
-(pro)q(ceed.)29 1691 y(Lua)h(supp)q(orts)f(the)g(follo)o(wing)e
-(fallbac)o(ks,)h(iden)o(ti\014ed)h(b)o(y)g(the)g(giv)o(en)g(strings:)
--42 1785 y Fl(\\arith")24 b Fo(called)17 b(when)g(an)h(arithmetic)c(op)
-q(eration)j(is)g(applied)g(to)f(non)i(n)o(umerical)d(op)q(erands,)j(or)
-f(when)g(the)72 1842 y(binary)f Fm(^)g Fo(op)q(eration)g(is)f(called.)
-23 b(It)17 b(receiv)o(es)f(three)g(argumen)o(ts:)k(the)d(t)o(w)o(o)e
-(op)q(erands)h(\(the)g(second)h(one)72 1898 y(is)j(nil)g(when)h(the)g
-(op)q(eration)e(is)h(unary)h(min)o(us\))e(and)h(one)h(of)f(the)g(follo)
-o(wing)f(strings)g(describing)h(the)72 1955 y(o\013ended)c(op)q
-(erator:)120 2067 y Fm(add)47 b(sub)g(mul)h(div)f(pow)g(unm)72
-2180 y Fo(Its)15 b(return)f(v)m(alue)h(is)f(the)h(\014nal)f(result)g
-(of)g(the)h(arithmetic)d(op)q(eration.)19 b(The)c(default)f(function)g
-(issues)h(an)72 2236 y(error.)-42 2330 y Fl(\\order")23
-b Fo(called)15 b(when)h(an)g(order)f(comparison)e(is)i(applied)h(to)f
-(non)g(n)o(umerical)f(or)h(non)h(string)e(op)q(erands.)21
-b(It)72 2386 y(receiv)o(es)d(three)g(argumen)o(ts:)23
-b(the)18 b(t)o(w)o(o)f(op)q(erands)h(and)g(one)g(of)f(the)h(follo)o
-(wing)e(strings)h(describing)g(the)72 2443 y(o\013ended)f(op)q(erator:)
-120 2555 y Fm(lt)23 b(gt)h(le)g(ge)922 2748 y Fo(9)p
-eop
+9 8 bop 0 91 a Ff(4.7)112 b(F)-9 b(allbac)m(ks)0 263
+y Fp(Lua)33 b(pro)m(vides)g(a)h(p)s(o)m(w)m(erful)e(mec)m(hanism)h(to)i
+(extend)f(its)f(seman)m(tics,)i(called)e Fo(fal)5 b(lb)-5
+b(acks)p Fp(.)51 b(A)34 b(fallbac)m(k)f(is)g(a)h(pro-)0
+376 y(grammer)c(de\014ned)f(function)h(that)h(is)e(called)g(whenev)m
+(er)i(Lua)f(do)s(es)g(not)g(kno)m(w)h(ho)m(w)f(to)h(pro)s(ceed.)141
+489 y(Lua)f(supp)s(orts)f(the)h(follo)m(wing)f(fallbac)m(ks,)h(iden)m
+(ti\014ed)f(b)m(y)h(the)g(giv)m(en)h(strings:)0 652 y
+Fm(\\arith":)45 b Fp(called)31 b(when)g(an)i(arithmetic)e(op)s(eration)
+h(is)f(applied)f(to)j(non)f(n)m(umerical)f(op)s(erands,)g(or)h(when)g
+(the)227 765 y(binary)f Fn(^)h Fp(op)s(eration)g(is)g(called.)47
+b(It)32 b(receiv)m(es)i(three)e(argumen)m(ts:)46 b(the)33
+b(t)m(w)m(o)h(op)s(erands)d(\(the)i(second)g(one)227
+878 y(is)40 b(nil)f(when)h(the)h(op)s(eration)g(is)f(unary)g(min)m
+(us\))f(and)h(one)i(of)f(the)g(follo)m(wing)e(strings)h(describing)f
+(the)227 991 y(o\013ended)30 b(op)s(erator:)323 1186
+y Fn(add)94 b(sub)h(mul)g(div)f(pow)h(unm)227 1381 y
+Fp(Its)31 b(return)f(v)-5 b(alue)30 b(is)g(the)h(\014nal)f(result)g(of)
+h(the)g(arithmetic)f(op)s(eration.)42 b(The)30 b(default)g(handler)f
+(issues)h(an)227 1494 y(error.)0 1672 y Fm(\\order":)45
+b Fp(called)29 b(when)e(an)i(order)g(comparison)f(is)g(applied)e(to)k
+(non)e(n)m(umerical)g(or)h(non)f(string)g(op)s(erands.)39
+b(It)227 1785 y(receiv)m(es)e(three)f(argumen)m(ts:)51
+b(the)36 b(t)m(w)m(o)h(op)s(erands)e(and)g(one)h(of)g(the)g(follo)m
+(wing)e(strings)g(describing)g(the)227 1898 y(o\013ended)c(op)s
+(erator:)323 2093 y Fn(lt)47 b(gt)g(le)g(ge)227 2289
+y Fp(Its)28 b(return)f(v)-5 b(alue)28 b(is)f(the)i(\014nal)d(result)h
+(of)i(the)f(comparison)f(op)s(eration.)40 b(The)28 b(default)f(handler)
+f(issues)h(an)227 2402 y(error.)0 2580 y Fm(\\concat":)46
+b Fp(called)40 b(when)g(a)i(concatenation)g(is)e(applied)f(to)j(non)f
+(string)f(op)s(erands.)71 b(It)41 b(receiv)m(es)h(the)g(t)m(w)m(o)227
+2693 y(op)s(erands)36 b(as)i(argumen)m(ts.)61 b(Its)37
+b(return)g(v)-5 b(alue)36 b(is)g(the)i(\014nal)e(result)g(of)h(the)h
+(concatenation)g(op)s(eration.)227 2805 y(The)30 b(default)g(handler)e
+(issues)h(an)i(error.)0 2983 y Fm(\\index":)45 b Fp(called)27
+b(when)g(Lua)g(tries)g(to)i(retriev)m(e)f(the)g(v)-5
+b(alue)27 b(of)h(an)f(index)g(not)h(presen)m(t)f(in)g(a)h(table.)39
+b(It)28 b(receiv)m(es)227 3096 y(as)41 b(argumen)m(ts)f(the)g(table)g
+(and)g(the)g(index.)68 b(Its)40 b(return)f(v)-5 b(alue)40
+b(is)f(the)h(\014nal)f(result)g(of)h(the)g(indexing)227
+3209 y(op)s(eration.)g(The)30 b(default)g(handler)e(returns)i(nil.)0
+3387 y Fm(\\getglobal":)45 b Fp(called)28 b(when)g(Lua)g(tries)g(to)h
+(retriev)m(e)g(the)f(v)-5 b(alue)28 b(of)h(a)g(global)f(v)-5
+b(ariable)27 b(whic)m(h)g(has)h(a)h(nil)d(v)-5 b(alue)227
+3500 y(\(or)39 b(whic)m(h)e(has)g(not)i(b)s(een)e(initialized\).)61
+b(It)38 b(receiv)m(es)h(as)g(argumen)m(t)f(the)h(name)f(of)g(the)g(v)-5
+b(ariable.)63 b(Its)227 3613 y(return)30 b(v)-5 b(alue)29
+b(is)h(the)g(\014nal)f(result)h(of)g(the)h(expression.)39
+b(The)30 b(default)g(handler)e(returns)h(nil.)0 3790
+y Fm(\\gettable":)44 b Fp(called)34 b(when)g(Lua)g(tries)g(to)h(index)f
+(a)h(non)f(table)g(v)-5 b(alue.)53 b(It)35 b(receiv)m(es)g(as)g
+(argumen)m(ts)g(the)g(non)227 3903 y(table)d(v)-5 b(alue)31
+b(and)f(the)i(index.)42 b(Its)32 b(return)e(v)-5 b(alue)31
+b(is)g(the)g(\014nal)f(result)h(of)g(the)h(indexing)d(op)s(eration.)43
+b(The)227 4016 y(default)30 b(handler)e(issues)h(an)i(error.)0
+4194 y Fm(\\settable":)44 b Fp(called)34 b(when)e(Lua)i(tries)f(to)i
+(assign)e(indexed)g(a)h(non)f(table)h(v)-5 b(alue.)51
+b(It)34 b(receiv)m(es)g(as)h(argumen)m(ts)227 4307 y(the)c(non)f(table)
+g(v)-5 b(alue,)30 b(the)h(index,)e(and)h(the)g(assigned)g(v)-5
+b(alue.)40 b(The)30 b(default)f(handler)g(issues)g(an)h(error.)0
+4485 y Fm(\\function":)46 b Fp(called)30 b(when)g(Lua)h(tries)g(to)h
+(call)e(a)i(non)e(function)g(v)-5 b(alue.)43 b(It)31
+b(receiv)m(es)h(as)g(argumen)m(ts)f(the)h(non)227 4598
+y(function)k(v)-5 b(alue)36 b(and)h(the)g(argumen)m(ts)g(giv)m(en)g(in)
+f(the)h(original)e(call.)60 b(Its)37 b(return)f(v)-5
+b(alues)36 b(are)h(the)g(\014nal)227 4711 y(results)29
+b(of)i(the)g(call)e(op)s(eration.)40 b(The)30 b(default)g(handler)e
+(issues)h(an)i(error.)0 4888 y Fm(\\gc":)46 b Fp(called)35
+b(during)g(garbage)i(collection.)59 b(It)37 b(receiv)m(es)g(as)f
+(argumen)m(t)h(the)g(table)f(b)s(eing)f(collected.)60
+b(After)227 5001 y(eac)m(h)42 b(run)d(of)i(the)g(collector)g(this)e
+(function)h(is)f(called)h(with)f(argumen)m(t)i(nil.)70
+b(Because)42 b(this)d(function)227 5114 y(op)s(erates)28
+b(during)e(garbage)i(collection,)g(it)f(m)m(ust)h(b)s(e)e(used)h(with)f
+(great)j(care,)g(and)e(programmers)g(should)227 5227
+y(a)m(v)m(oid)39 b(the)f(creation)g(of)g(new)g(ob)5 b(jects)38
+b(\(tables)h(or)e(strings\))h(in)e(this)h(function.)62
+b(The)38 b(default)f(handler)227 5340 y(do)s(es)30 b(nothing.)1927
+5589 y(9)p eop
%%Page: 10 10
-10 9 bop 72 199 a Fo(Its)17 b(return)h(v)m(alue)f(is)g(the)g(\014nal)g
-(result)g(of)g(the)g(comparison)f(op)q(eration.)25 b(The)18
-b(default)e(function)i(issues)72 256 y(an)d(error.)-42
-350 y Fl(\\concat")25 b Fo(called)d(when)g(a)f(concatenation)f(is)h
-(applied)h(to)f(non)h(string)e(op)q(erands.)39 b(It)22
-b(receiv)o(es)f(the)h(t)o(w)o(o)72 406 y(op)q(erands)d(as)f(argumen)o
-(ts.)29 b(Its)18 b(return)h(v)m(alue)g(is)f(the)g(\014nal)h(result)f
-(of)g(the)h(concatenation)f(op)q(eration.)72 462 y(The)e(default)e
-(function)h(issues)g(an)h(error.)-42 556 y Fl(\\index")23
-b Fo(called)14 b(when)i(Lua)f(tries)f(to)g(retriev)o(e)g(the)h(v)m
-(alue)g(of)f(an)h(index)g(not)f(presen)o(t)h(in)f(a)h(table.)k(It)c
-(receiv)o(es)72 613 y(as)20 b(argumen)o(ts)e(the)i(table)g(and)g(the)g
-(index.)35 b(Its)20 b(return)g(v)m(alue)g(is)f(the)h(\014nal)g(result)g
-(of)f(the)i(indexing)72 669 y(op)q(eration.)e(The)d(default)e(function)
-h(returns)h(nil.)-42 763 y Fl(\\getglobal")24 b Fo(called)15
-b(when)h(Lua)f(tries)f(to)h(retriev)o(e)f(the)i(v)m(alue)f(of)g(a)f
-(global)g(v)m(ariable)h(whic)o(h)g(has)g(a)g(nil)f(v)m(alue)72
-819 y(\(or)k(whic)o(h)h(has)g(not)g(b)q(een)h(initialized\).)30
-b(It)19 b(receiv)o(es)g(as)f(argumen)o(t)g(the)h(name)f(of)g(the)i(v)m
-(ariable.)30 b(Its)72 876 y(return)15 b(v)m(alue)h(is)e(the)i(\014nal)f
-(result)f(of)h(the)g(expression.)20 b(The)c(default)e(function)h
-(returns)g(nil.)-42 970 y Fl(\\gettable")25 b Fo(called)17
-b(when)i(Lua)g(tries)e(to)g(index)i(a)f(non)g(table)g(v)m(alue.)29
-b(It)18 b(receiv)o(es)g(as)g(argumen)o(ts)e(the)i(non)72
-1026 y(table)d(v)m(alue)h(and)g(the)g(index.)22 b(Its)15
-b(return)h(v)m(alue)g(is)f(the)h(\014nal)g(result)f(of)g(the)h
-(indexing)g(op)q(eration.)k(The)72 1083 y(default)15
-b(function)g(issues)g(an)g(error.)-42 1176 y Fl(\\settable")24
-b Fo(called)18 b(when)g(Lua)g(tries)f(to)h(assign)f(indexed)h(a)g(non)g
-(table)f(v)m(alue.)28 b(It)18 b(receiv)o(es)g(as)f(argumen)o(ts)72
-1233 y(the)e(non)h(table)e(v)m(alue,)h(the)h(index,)f(and)g(the)h
-(assigned)e(v)m(alue.)20 b(The)c(default)f(function)g(issues)g(an)g
-(error.)-42 1327 y Fl(\\function")24 b Fo(called)16 b(when)h(Lua)g
-(tries)f(to)g(call)f(a)h(non)h(function)f(v)m(alue.)24
-b(It)17 b(receiv)o(es)f(as)g(argumen)o(ts)f(the)h(non)72
-1383 y(function)i(v)m(alue)h(and)g(the)f(argumen)o(ts)f(giv)o(en)h(in)g
-(the)h(original)d(call.)29 b(Its)19 b(return)f(v)m(alues)h(are)f(the)h
-(\014nal)72 1440 y(results)c(of)f(the)i(call)e(op)q(eration.)19
-b(The)d(default)e(function)h(issues)g(an)h(error.)-42
-1533 y Fl(\\gc")24 b Fo(called)12 b(during)g(garbage)e(collection.)18
-b(It)12 b(receiv)o(es)g(as)f(argumen)o(t)f(the)i(table)f(b)q(eing)h
-(collected.)19 b(After)11 b(eac)o(h)72 1590 y(run)16
-b(of)f(the)g(collector)f(this)h(function)g(is)g(called)g(with)g
-(argumen)o(t)f(nil.)20 b(Because)c(this)e(function)i(op)q(erates)72
-1646 y(during)i(garbage)g(collection,)f(it)h(m)o(ust)f(b)q(e)i(used)g
-(with)f(great)f(care,)i(and)f(programmers)d(should)k(a)o(v)o(oid)72
-1703 y(the)g(creation)g(of)g(new)g(ob)s(jects)g(\(tables)f(or)h
-(strings\))e(in)i(this)g(function.)32 b(The)19 b(default)g(function)g
-(do)q(es)72 1759 y(nothing.)-42 1853 y Fl(\\error")k
-Fo(called)16 b(when)i(an)f(error)f(o)q(ccurs.)26 b(It)17
-b(receiv)o(es)g(as)g(argumen)o(t)e(a)i(string)f(describing)h(the)g
-(error.)25 b(The)72 1910 y(default)15 b(function)g(prin)o(ts)f(the)i
-(message)d(on)j(the)f(standard)g(error)f(output.)29 2003
-y(The)19 b(function)f Fm(setfallback)f Fo(is)g(used)i(to)f(c)o(hange)g
-(a)g(fallbac)o(k)f(action.)29 b(Its)18 b(\014rst)g(argumen)o(t)f(is)g
-(a)h(string)-42 2060 y(describing)f(the)g(fallbac)o(k,)e(and)i(the)f
-(second)i(the)e(new)h(function)g(to)f(b)q(e)h(called.)24
-b(It)16 b(returns)h(the)f(old)h(function)-42 2116 y(for)e(the)g(giv)o
-(en)g(fallbac)o(k.)29 2173 y(Section)g(8.6)f(sho)o(ws)h(an)g(example)f
-(of)h(the)g(use)h(of)e(fallbac)o(ks.)-42 2294 y Fe(4.8)56
-b(Error)18 b(Handling)-42 2380 y Fo(Because)c(Lua)g(is)e(an)h
-(extension)g(language,)f(all)g(Lua)i(actions)e(start)g(from)f(C)i(co)q
-(de)h(calling)d(a)i(function)g(from)e(the)-42 2437 y(Lua)j(library)l(.)
-k(Whenev)o(er)13 b(an)g(error)f(o)q(ccurs)i(during)f(Lua)g(compilation)
-d(or)j(execution,)g(an)g(error)f(fallbac)o(k)g(func-)-42
-2493 y(tion)k(is)g(called,)f(and)i(then)f(the)g(corresp)q(onding)h
-(function)f(from)e(the)i(library)f(\()p Fm(lua_dofile)p
-Fo(,)g Fm(lua_dostring)p Fo(,)-42 2550 y Fm(lua_call)p
-Fo(,)f(and)i Fm(lua_callfunction)p Fo(\))c(is)j(terminated)e(returning)
-i(an)g(error)g(condition.)911 2748 y(10)p eop
+10 9 bop 0 91 a Fm(\\error":)45 b Fp(called)32 b(when)g(an)g(error)g(o)
+s(ccurs.)47 b(It)33 b(receiv)m(es)g(as)g(argumen)m(t)g(a)g(string)f
+(describing)e(the)j(error.)46 b(The)227 204 y(default)30
+b(handler)e(prin)m(ts)h(the)i(message)g(on)g(the)f(standard)g(error)g
+(output.)141 392 y(The)f(function)f Fn(setfallback)e
+Fp(is)j(used)f(to)i(c)m(hange)h(a)f(fallbac)m(k)f(handler.)38
+b(Its)29 b(\014rst)g(argumen)m(t)h(is)e(the)i(name)0
+505 y(of)k(a)h(fallbac)m(k)e(condition,)h(and)f(the)h(second)g(argumen)
+m(t)h(is)e(the)h(new)f(function)g(to)i(b)s(e)e(called.)51
+b(It)34 b(returns)f(the)0 618 y(old)d(handler)e(function)h(for)h(the)h
+(giv)m(en)f(fallbac)m(k.)141 731 y(Section)g(8.6)i(sho)m(ws)e(an)g
+(example)g(of)h(the)f(use)g(of)h(fallbac)m(ks.)0 974
+y Ff(4.8)112 b(Error)37 b(Handling)0 1146 y Fp(Because)g(Lua)e(is)g(an)
+g(extension)h(language,)h(all)e(Lua)g(actions)h(start)g(from)f(C)g(co)s
+(de)h(calling)e(a)i(function)e(from)0 1259 y(the)48 b(Lua)f(library)-8
+b(.)90 b(Whenev)m(er)48 b(an)f(error)g(o)s(ccurs)g(during)e(Lua)j
+(compilation)e(or)h(execution,)52 b(an)47 b(\\error")0
+1371 y(fallbac)m(k)42 b(function)f(is)h(called,)i(and)e(then)g(the)h
+(corresp)s(onding)d(function)i(from)f(the)i(library)d(\()p
+Fn(lua_dofile)p Fp(,)0 1484 y Fn(lua_dostring)p Fp(,)27
+b Fn(lua_call)p Fp(,)i(or)h Fn(lua_callfunction)p Fp(\))c(is)k
+(terminated)g(returning)e(an)i(error)g(condition.)141
+1597 y(The)22 b(only)g(argumen)m(t)g(to)i(the)e(\\error")h(fallbac)m(k)
+f(function)f(is)g(a)i(string)f(describing)e(the)i(error.)38
+b(The)22 b(standard)0 1710 y(I/O)29 b(library)e(rede\014nes)h(this)g
+(fallbac)m(k,)h(using)e(the)i(debug)g(facilities)e(\(see)j(Section)f
+(7\),)h(in)e(order)g(to)i(prin)m(t)e(some)0 1823 y(extra)33
+b(information,)e(lik)m(e)g(the)i(call)e(stac)m(k.)48
+b(F)-8 b(or)33 b(more)f(information)e(ab)s(out)i(an)g(error,)h(the)f
+(Lua)g(program)g(can)0 1936 y(include)e(the)i(compilation)f(pragma)i
+Fn($debug)p Fp(.)90 b(This)31 b(pragma)h(m)m(ust)g(b)s(e)g(written)f
+(in)g(a)h(line)f(b)m(y)h(itself.)45 b(When)0 2049 y(an)32
+b(error)f(o)s(ccurs)h(in)e(a)i(program)g(compiled)e(with)h(this)g
+(option,)g(the)h(error)g(routine)f(is)g(able)g(to)i(prin)m(t)d(also)i
+(the)0 2162 y(lines)37 b(where)h(the)h(calls)f(\(and)g(the)h(error\))g
+(w)m(ere)g(made.)66 b(If)38 b(needed,)j(it)d(is)g(p)s(ossible)e(to)k(c)
+m(hange)g(the)e(\\error")0 2275 y(fallbac)m(k)30 b(handler)e(\(see)k
+(Section)e(4.7\).)141 2388 y(Lua)23 b(co)s(de)h(can)g(explicitly)d
+(generate)k(an)e(error)g(b)m(y)g(calling)f(the)i(built-in)c(function)j
+Fn(error)f Fp(\(see)i(Section)f(6.1\).)0 2674 y Fq(5)135
+b(The)44 b(Application)i(Program)f(In)l(terface)0 2877
+y Fp(This)24 b(section)j(describ)s(es)d(the)j(API)f(for)g(Lua,)h(that)g
+(is,)f(the)h(set)g(of)f(C)g(functions)f(a)m(v)-5 b(ailable)25
+b(to)i(the)g(host)f(program)0 2990 y(to)31 b(comm)m(unicate)g(with)e
+(the)i(library)-8 b(.)39 b(The)29 b(API)i(functions)d(can)j(b)s(e)f
+(classi\014ed)f(in)g(the)h(follo)m(wing)f(categories:)111
+3178 y(1.)46 b(executing)31 b(Lua)f(co)s(de;)111 3365
+y(2.)46 b(con)m(v)m(erting)31 b(v)-5 b(alues)30 b(b)s(et)m(w)m(een)h(C)
+f(and)g(Lua;)111 3553 y(3.)46 b(manipulating)28 b(\(reading)i(and)f
+(writing\))g(Lua)h(ob)5 b(jects;)111 3740 y(4.)46 b(calling)29
+b(Lua)h(functions;)111 3928 y(5.)46 b(C)30 b(functions)f(to)i(b)s(e)f
+(called)g(b)m(y)g(Lua;)111 4116 y(6.)46 b(references)31
+b(to)g(Lua)f(Ob)5 b(jects.)0 4303 y(All)29 b(API)h(functions)f(are)i
+(declared)f(in)f(the)h(header)h(\014le)e Fn(lua.h)p Fp(.)0
+4547 y Ff(5.1)112 b(Executing)37 b(Lua)h(Co)s(de)0 4718
+y Fp(A)23 b(host)h(program)f(can)h(execute)g(Lua)f(c)m(h)m(unks)g
+(written)g(in)f(a)h(\014le)g(or)g(in)f(a)i(string,)g(using)e(the)h
+(follo)m(wing)f(functions:)0 5019 y Fn(int)47 b(lua_dofile)140
+b(\(char)47 b(*filename\);)0 5132 y(int)g(lua_dostring)d(\(char)j
+(*string\);)1905 5589 y Fp(10)p eop
%%Page: 11 11
-11 10 bop 29 199 a Fo(The)15 b(only)f(argumen)o(t)e(to)i(the)g(error)g
-(fallbac)o(k)f(function)h(is)g(a)g(string)g(describing)g(the)g(error.)
-19 b(The)c(standard)-42 256 y(I/O)i(library)d(rede\014nes)j(this)e
-(fallbac)o(k,)f(using)h(the)h(debug)g(facilities)e(\(see)h(Section)h
-(7,)f(in)g(order)h(to)f(prin)o(t)g(some)-42 312 y(extra)h
-(informations,)c(lik)o(e)j(the)h(stac)o(k)f(of)h(calls.)21
-b(F)l(or)15 b(more)f(information)f(ab)q(out)j(an)g(error,)e(the)i(Lua)h
-(program)-42 369 y(can)j(include)f(the)g(compilation)d(pragma)h
-Fm($debug)p Fo(.)62 b(This)18 b(pragma)f(m)o(ust)h(b)q(e)h(written)f
-(in)h(a)f(line)h(b)o(y)g(itself.)-42 425 y(When)14 b(an)f(error)f(o)q
-(ccurs)h(in)g(a)f(program)f(compiled)h(with)g(this)g(option,)g(the)h
-(error)g(routine)f(is)g(able)h(to)f(prin)o(t)g(also)-42
-482 y(the)18 b(lines)f(where)h(the)g(calls)e(\(and)i(the)f(error\))g(w)
-o(ere)g(made.)26 b(If)18 b(needed,)h(it)e(is)g(p)q(ossible)g(to)g(c)o
-(hange)h(the)f(error)-42 538 y(fallbac)o(k)d(routine;)h(see)g(Section)g
-(4.7.)29 594 y(Lua)e(co)q(de)g(can)f(generate)g(an)g(error)g(b)o(y)g
-(calling)f(the)i(function)f Fm(error)p Fo(.)18 b(Its)13
-b(optional)d(parameter)h(is)h(a)g(string,)-42 651 y(whic)o(h)k(is)e
-(used)i(as)f(the)g(error)g(message.)-42 794 y Fp(5)67
-b(The)23 b(Application)h(Program)f(In)n(terface)-42 896
-y Fo(This)13 b(section)g(describ)q(es)h(the)f(API)g(for)g(Lua,)h(that)e
-(is,)h(the)g(set)g(of)f(C)h(functions)g(a)o(v)m(ailable)f(to)h(the)g
-(host)g(program)-42 952 y(to)i(comm)o(unicate)e(with)h(the)h(library)l
-(.)k(The)d(API)f(functions)g(can)h(b)q(e)f(classi\014ed)g(in)g(the)h
-(follo)o(wing)d(categories:)14 1046 y(1.)22 b(executing)15
-b(Lua)h(co)q(de;)14 1140 y(2.)22 b(con)o(v)o(erting)14
-b(v)m(alues)i(b)q(et)o(w)o(een)f(C)g(and)g(Lua;)14 1233
-y(3.)22 b(manipulating)13 b(\(reading)h(and)i(writing\))d(Lua)j(ob)s
-(jects;)14 1327 y(4.)22 b(calling)14 b(Lua)i(functions;)14
-1421 y(5.)22 b(C)15 b(functions)g(to)g(b)q(e)g(called)g(b)o(y)g(Lua;)14
-1515 y(6.)22 b(references)16 b(to)f(Lua)g(Ob)s(jects.)-42
-1609 y(All)g(API)h(functions)f(are)f(declared)i(in)f(the)g(\014le)g
-Fm(lua.h)p Fo(.)-42 1730 y Fe(5.1)56 b(Executing)18 b(Lua)h(Co)r(de)-42
-1816 y Fo(A)12 b(host)f(program)f(can)i(execute)g(Lua)g(c)o(h)o(unks)g
-(written)f(in)g(a)h(\014le)f(or)h(in)f(a)g(string,)g(using)h(the)g
-(follo)o(wing)d(functions:)-42 1967 y Fm(int)286 b(lua_dofile)357
-b(\(char)23 b(*filename\);)-42 2023 y(int)286 b(lua_dostring)309
-b(\(char)23 b(*string\);)-42 2117 y Fo(Both)15 b(functions)f(return)g
-(an)g(error)f(co)q(de:)20 b(0,)14 b(in)g(case)g(of)g(success;)h(non)f
-(zero,)g(in)g(case)h(of)e(errors.)19 b(The)c(function)-42
-2173 y Fm(lua_dofile)p Fo(,)h(if)g(called)g(with)g(argumen)o(t)f(NULL)j
-(\(0\),)d(executes)j(the)f(\\\014le")f Fm(stdin)p Fo(.)23
-b(F)l(unction)17 b Fm(lua_dofile)-42 2230 y Fo(is)f(also)e(able)h(to)g
-(execute)h(pre-compiled)f(c)o(h)o(unks.)21 b(It)16 b(detects)f(whether)
-h(the)f(\014le)h(is)f(text)g(or)g(not,)g(and)g(loads)g(it)-42
-2286 y(accordingly)g(\(see)g(program)e Fm(luac)p Fo(\).)-42
-2408 y Fe(5.2)56 b(Con)n(v)n(erting)20 b(V)-5 b(alues)20
-b(b)r(et)n(w)n(een)e(C)h(and)h(Lua)-42 2494 y Fo(Because)13
-b(Lua)f(has)g(no)f(static)g(t)o(yp)q(e)h(system,)f(all)f(v)m(alues)i
-(passed)g(b)q(et)o(w)o(een)g(Lua)g(and)g(C)g(ha)o(v)o(e)f(t)o(yp)q(e)h
-Fm(lua_Object)p Fo(,)-42 2550 y(whic)o(h)f(w)o(orks)f(lik)o(e)g(an)h
-(abstract)f(t)o(yp)q(e)h(in)g(C)g(that)f(can)h(hold)g(an)o(y)g(Lua)g(v)
-m(alue.)19 b(V)l(alues)11 b(of)f(t)o(yp)q(e)h Fm(lua_Object)f
-Fo(ha)o(v)o(e)-42 2607 y(no)16 b(meaning)d(outside)i(Lua;)g(for)g
-(instance,)g(the)g(comparisson)e(of)i(t)o(w)o(o)f Fm(lua_Object's)f
-Fo(is)i(of)g(no)g(signi\014cance.)911 2748 y(11)p eop
+11 10 bop 0 91 a Fp(Both)29 b(functions)e(return)h(an)g(error)g(co)s
+(de:)40 b(0,)30 b(in)d(case)j(of)e(success;)i(non)e(zero,)i(in)d(case)j
+(of)e(errors.)40 b(More)29 b(sp)s(eci\014-)0 204 y(cally)-8
+b(,)30 b Fn(lua_dofile)d Fp(returns)i(2)h(if)f(for)h(an)m(y)g(reason)g
+(it)g(could)f(not)h(op)s(en)f(the)i(\014le.)39 b(The)30
+b(function)e Fn(lua_dofile)p Fp(,)0 317 y(if)h(called)g(with)g(argumen)
+m(t)i Fn(NULL)e Fp(\(0\),)i(executes)h(the)e Fn(stdin)f
+Fp(stream.)41 b(F)-8 b(unction)30 b Fn(lua_dofile)d Fp(is)i(also)h
+(able)g(to)0 430 y(execute)h(pre-compiled)d(c)m(h)m(unks.)40
+b(It)30 b(automatically)f(detects)i(whether)e(the)h(\014le)f(is)f(text)
+j(or)f(binary)-8 b(,)28 b(and)h(loads)0 543 y(it)h(accordingly)f(\(see)
+j(program)e Fn(luac)p Fp(\).)0 786 y Ff(5.2)112 b(Con)m(v)m(erting)37
+b(V)-9 b(alues)37 b(b)s(et)m(w)m(een)g(C)h(and)g(Lua)0
+958 y Fp(Because)25 b(Lua)e(has)g(no)h(static)g(t)m(yp)s(e)g(system,)h
+(all)e(v)-5 b(alues)22 b(passed)h(b)s(et)m(w)m(een)i(Lua)e(and)g(C)g
+(ha)m(v)m(e)i(t)m(yp)s(e)e Fn(lua_Object)p Fp(,)0 1071
+y(whic)m(h)e(w)m(orks)h(lik)m(e)f(an)h(abstract)g(t)m(yp)s(e)h(in)d(C)i
+(that)g(can)h(hold)d(an)m(y)i(Lua)g(v)-5 b(alue.)37 b(V)-8
+b(alues)22 b(of)g(t)m(yp)s(e)h Fn(lua_Object)c Fp(ha)m(v)m(e)0
+1184 y(no)30 b(meaning)g(outside)g(Lua;)g(for)g(instance,)g(the)h
+(comparisson)e(of)i(t)m(w)m(o)h Fn(lua_Object's)27 b
+Fp(is)i(of)i(no)f(signi\014cance.)141 1297 y(Because)j(Lua)f(has)f
+(automatic)i(memory)f(managemen)m(t)h(and)e(garbage)i(collection,)f(a)g
+Fn(lua_Object)d Fp(has)j(a)0 1410 y(limited)i(scop)s(e,)k(and)e(is)f
+(only)g(v)-5 b(alid)35 b(inside)f(the)i Fo(blo)-5 b(ck)47
+b Fp(where)36 b(it)g(w)m(as)g(created.)60 b(A)36 b(C)g(function)f
+(called)g(from)0 1523 y(Lua)30 b(is)f(a)h(blo)s(c)m(k,)g(and)f(its)h
+(parameters)g(are)g(v)-5 b(alid)29 b(only)g(un)m(til)f(its)h(end.)40
+b(A)30 b(go)s(o)s(d)g(programming)f(practice)h(is)f(to)0
+1635 y(con)m(v)m(ert)35 b(Lua)d(ob)5 b(jects)34 b(to)g(C)e(v)-5
+b(alues)33 b(as)g(so)s(on)g(as)g(they)g(are)h(a)m(v)-5
+b(ailable,)33 b(and)f(nev)m(er)i(to)g(store)f Fn(lua_Object)p
+Fp(s)d(in)0 1748 y(C)g(global)g(v)-5 b(ariables.)141
+1861 y(When)26 b(C)f(co)s(de)h(calls)f(Lua)h(rep)s(eatedly)-8
+b(,)27 b(as)f(in)f(a)h(lo)s(op,)g(ob)5 b(jects)27 b(returned)d(b)m(y)i
+(these)h(calls)e(accum)m(ulate,)j(and)0 1974 y(ma)m(y)j(create)h(a)f
+(memory)f(problem.)39 b(T)-8 b(o)31 b(a)m(v)m(oid)g(this,)e(nested)i
+(blo)s(c)m(ks)e(can)i(b)s(e)f(de\014ned)f(with)g(the)i(functions:)0
+2162 y Fn(void)524 b(lua_beginblock)d(\(void\);)0 2275
+y(void)j(lua_endblock)617 b(\(void\);)0 2462 y Fp(After)31
+b(the)f(end)g(of)g(the)h(blo)s(c)m(k,)f(all)f Fn(lua_Object)p
+Fp('s)f(created)k(inside)c(it)i(are)g(released.)141 2575
+y(T)-8 b(o)31 b(c)m(hec)m(k)h(the)e(t)m(yp)s(e)h(of)g(a)f
+Fn(lua_Object)p Fp(,)e(the)j(follo)m(wing)e(function)g(is)g(a)m(v)-5
+b(ailable:)0 2763 y Fn(int)572 b(lua_type)809 b(\(lua_Object)45
+b(object\);)0 2951 y Fp(plus)28 b(the)j(follo)m(wing)e(macros)i(and)e
+(functions:)0 3138 y Fn(int)572 b(lua_isnil)761 b(\(lua_Object)45
+b(object\);)0 3251 y(int)572 b(lua_isnumber)617 b(\(lua_Object)45
+b(object\);)0 3364 y(int)572 b(lua_isstring)617 b(\(lua_Object)45
+b(object\);)0 3477 y(int)572 b(lua_istable)665 b(\(lua_Object)45
+b(object\);)0 3590 y(int)572 b(lua_isfunction)521 b(\(lua_Object)45
+b(object\);)0 3703 y(int)572 b(lua_iscfunction)473 b(\(lua_Object)45
+b(object\);)0 3816 y(int)572 b(lua_isuserdata)521 b(\(lua_Object)45
+b(object\);)0 4003 y Fp(All)28 b(macros)h(return)g(1)g(if)f(the)i(ob)5
+b(ject)30 b(is)e(compatible)g(with)g(the)i(giv)m(en)f(t)m(yp)s(e,)h
+(and)e(0)i(otherwise.)40 b(The)28 b(function)0 4116 y
+Fn(lua_isnumber)c Fp(accepts)k(n)m(um)m(b)s(ers)e(and)h(n)m(umerical)e
+(strings,)i Fn(lua_isstring)d Fp(accepts)29 b(strings)d(and)g(n)m(um)m
+(b)s(ers)0 4229 y(\(see)33 b(Section)f(4.2\),)i(and)d
+Fn(lua_isfunction)d Fp(accepts)33 b(Lua)f(and)f(C)h(functions.)44
+b(The)31 b(function)g Fn(lua_type)f Fp(can)0 4342 y(b)s(e)g(used)f(to)i
+(distinguish)c(b)s(et)m(w)m(een)k(di\013eren)m(t)f(kinds)e(of)j(user)e
+(data.)141 4455 y(T)-8 b(o)31 b(translate)g(a)f(v)-5
+b(alue)30 b(from)g(t)m(yp)s(e)h Fn(lua_Object)c Fp(to)k(a)g(sp)s
+(eci\014c)e(C)h(t)m(yp)s(e,)h(the)f(programmer)g(can)h(use:)0
+4643 y Fn(double)428 b(lua_getnumber)569 b(\(lua_Object)45
+b(object\);)0 4755 y(char)476 b(*lua_getstring)569 b(\(lua_Object)45
+b(object\);)0 4868 y(lua_CFunction)92 b(lua_getcfunction)425
+b(\(lua_Object)45 b(object\);)0 4981 y(void)476 b(*lua_getuserdata)d
+(\(lua_Object)45 b(object\);)0 5169 y(lua_getnumber)26
+b Fp(con)m(v)m(erts)32 b(a)e Fn(lua_Object)d Fp(to)k(a)f(\015oat.)41
+b(This)29 b Fn(lua_Object)e Fp(m)m(ust)i(b)s(e)h(a)g(n)m(um)m(b)s(er)f
+(or)h(a)g(string)0 5282 y(con)m(v)m(ertible)g(to)h(n)m(um)m(b)s(er)f
+(\(see)h(Section)f(4.2\);)i(otherwise,)e(the)h(function)e(returns)g(0.)
+1905 5589 y(11)p eop
%%Page: 12 12
-12 11 bop 29 199 a Fo(Lua)11 b(has)f(automatic)e(memory)f(managemen)o
-(t,)i(and)h(garbage)g(collection.)17 b(Because)11 b(of)f(that,)g(a)g
-Fm(lua_Object)-42 256 y Fo(has)18 b(a)f(limited)e(scop)q(e,)j(and)g(is)
-f(only)g(v)m(alid)g(inside)g(the)h Fn(blo)n(ck)j Fo(where)d(it)f(w)o
-(as)f(created.)27 b(A)17 b(C)h(function)f(called)-42
-312 y(from)c(Lua)i(is)f(a)h(blo)q(c)o(k,)f(and)h(its)e(parameters)g
-(are)h(v)m(alid)h(only)f(un)o(til)g(its)f(end.)21 b(A)14
-b(go)q(o)q(d)h(programmi)o(ng)d(practice)-42 369 y(is)i(to)f(con)o(v)o
-(ert)g(Lua)h(ob)s(jects)f(to)g(C)h(v)m(alues)g(as)f(so)q(on)h(as)f
-(they)h(are)g(a)o(v)m(ailable,)e(and)i(nev)o(er)g(to)f(store)g
-Fm(lua_Object)p Fo(s)-42 425 y(in)j(C)e(global)g(v)m(ariables.)29
-482 y(When)f(C)g(co)q(de)h(calls)e(Lua)h(rep)q(eatedly)l(,)g(as)g(in)g
-(a)f(lo)q(op,)h(ob)s(jects)f(returned)i(b)o(y)f(these)g(calls)f(accum)o
-(ulate,)f(and)-42 538 y(ma)o(y)j(create)h(a)g(memory)d(problem.)19
-b(T)l(o)c(a)o(v)o(oid)f(this,)g(nested)i(blo)q(c)o(ks)f(can)g(b)q(e)h
-(de\014ned)g(with)f(the)g(functions:)-42 629 y Fm(void)262
-b(lua_beginblock)f(\(void\);)-42 686 y(void)h(lua_endblock)309
-b(\(void\);)-42 777 y Fo(After)15 b(the)h(end)f(of)g(the)g(blo)q(c)o
-(k,)g(all)f Fm(lua_Object)p Fo('s)g(created)h(inside)g(it)f(are)h
-(released.)29 834 y(T)l(o)g(c)o(hec)o(k)g(the)h(t)o(yp)q(e)f(of)g(a)g
-Fm(lua_Object)p Fo(,)e(the)i(follo)o(wing)e(function)i(is)g(a)o(v)m
-(ailable:)-42 925 y Fm(int)286 b(lua_type)405 b(\(lua_Object)22
-b(object\);)-42 1016 y Fo(plus)16 b(the)f(follo)o(wing)e(macros)g(and)j
-(functions:)-42 1108 y Fm(int)286 b(lua_isnil)381 b(\(lua_Object)22
-b(object\);)-42 1164 y(int)286 b(lua_isnumber)309 b(\(lua_Object)22
-b(object\);)-42 1220 y(int)286 b(lua_isstring)309 b(\(lua_Object)22
-b(object\);)-42 1277 y(int)286 b(lua_istable)333 b(\(lua_Object)22
-b(object\);)-42 1333 y(int)286 b(lua_isfunction)261 b(\(lua_Object)22
-b(object\);)-42 1390 y(int)286 b(lua_iscfunction)237
-b(\(lua_Object)22 b(object\);)-42 1446 y(int)286 b(lua_isuserdata)261
-b(\(lua_Object)22 b(object\);)-42 1538 y Fo(All)14 b(macros)f(return)i
-(1)f(if)g(the)h(ob)s(ject)f(is)g(compatible)f(with)h(the)g(giv)o(en)g
-(t)o(yp)q(e,)h(and)g(0)f(otherwise.)19 b(The)c(function)-42
-1594 y Fm(lua_isnumber)d Fo(accepts)i(n)o(um)o(b)q(ers)f(and)h(n)o
-(umerical)e(strings,)g Fm(lua_isstring)g Fo(accepts)i(strings)e(and)i
-(n)o(um)o(b)q(ers)-42 1650 y(\(see)i(Section)f(4.2\),)e(and)j
-Fm(lua_isfunction)d Fo(accepts)i(Lua)h(and)f(C)g(functions.)29
-1707 y(The)20 b(function)g Fm(lua_type)f Fo(can)h(b)q(e)h(used)f(to)g
-(distinguish)f(b)q(et)o(w)o(een)h(di\013eren)o(t)f(kinds)h(of)g(user)g
-(data;)h(see)-42 1763 y(b)q(elo)o(w.)29 1820 y(T)l(o)15
-b(translate)f(a)h(v)m(alue)g(from)f(t)o(yp)q(e)h Fm(lua_Object)f
-Fo(to)g(a)h(sp)q(eci\014c)h(C)f(t)o(yp)q(e,)g(the)g(programmer)d(can)k
-(use:)-42 1911 y Fm(double)214 b(lua_getnumber)285 b(\(lua_Object)22
-b(object\);)-42 1968 y(char)239 b(*lua_getstring)284
-b(\(lua_Object)22 b(object\);)-42 2024 y(lua_CFunction)46
-b(lua_getcfunction)213 b(\(lua_Object)22 b(object\);)-42
-2081 y(void)239 b(*lua_getuserdata)d(\(lua_Object)22
-b(object\);)-42 2172 y(lua_getnumber)14 b Fo(con)o(v)o(erts)g(a)g
-Fm(lua_Object)g Fo(to)g(a)h(\015oat.)k(This)c Fm(lua_Object)e
-Fo(m)o(ust)h(b)q(e)h(a)g(n)o(um)o(b)q(er)f(or)h(a)f(string)-42
-2228 y(con)o(v)o(ertible)h(to)f(n)o(um)o(b)q(er)h(\(see)g(Section)g
-(4.2\);)f(otherwise,)g(the)h(function)g(returns)g(0.)29
-2285 y Fm(lua_getstring)c Fo(con)o(v)o(erts)g(a)h Fm(lua_Object)f
-Fo(to)h(a)g(string)g(\()p Fm(char)23 b(*)p Fo(\).)18
-b(This)12 b Fm(lua_Object)f Fo(m)o(ust)g(b)q(e)i(a)f(string)-42
-2341 y(or)k(a)f(n)o(um)o(b)q(er;)h(otherwise,)e(the)i(function)g
-(returns)g(0)f(\(the)h(n)o(ull)f(p)q(oin)o(ter\).)21
-b(This)16 b(function)f(do)q(es)i(not)e(create)h(a)-42
-2398 y(new)f(string,)d(but)i(returns)g(a)f(p)q(oin)o(ter)g(to)h(a)f
-(string)g(inside)g(the)h(Lua)g(en)o(vironmen)o(t.)k(Because)d(Lua)f
-(has)f(garbage)-42 2454 y(collection,)h(there)h(is)g(no)g(guaran)o(tee)
-g(that)f(suc)o(h)i(p)q(oin)o(ter)e(will)g(b)q(e)i(v)m(alid)f(after)f
-(the)i(blo)q(c)o(k)f(ends.)29 2511 y Fm(lua_getcfunction)f
-Fo(con)o(v)o(erts)h(a)h Fm(lua_Object)f Fo(to)g(a)h(C)g(function.)23
-b(This)15 b Fm(lua_Object)g Fo(m)o(ust)g(ha)o(v)o(e)g(t)o(yp)q(e)-42
-2567 y Fn(CF)m(unction)s Fo(;)j(otherwise,)f(the)h(function)g(returns)g
-(0)f(\(the)h(n)o(ull)f(p)q(oin)o(ter\).)27 b(The)18 b(t)o(yp)q(e)g
-Fm(lua_CFunction)e Fo(is)h(ex-)-42 2623 y(plained)f(in)f(Section)g
-(5.5.)911 2748 y(12)p eop
+12 11 bop 141 91 a Fn(lua_getstring)21 b Fp(con)m(v)m(erts)27
+b(a)e Fn(lua_Object)d Fp(to)k(a)f(string)f(\()p Fn(char)47
+b(*)p Fp(\).)39 b(This)23 b Fn(lua_Object)f Fp(m)m(ust)i(b)s(e)h(a)g
+(string)0 204 y(or)32 b(a)g(n)m(um)m(b)s(er;)f(otherwise,)h(the)g
+(function)e(returns)h(0)h(\(the)g(n)m(ull)e(p)s(oin)m(ter\).)44
+b(This)30 b(function)g(do)s(es)h(not)h(create)i(a)0 317
+y(new)27 b(string,)g(but)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(a)g
+(string)f(inside)e(the)j(Lua)f(en)m(vironmen)m(t.)39
+b(Because)29 b(Lua)e(has)h(garbage)0 430 y(collection,)i(there)h(is)e
+(no)i(guaran)m(tee)g(that)g(suc)m(h)f(p)s(oin)m(ter)g(will)e(b)s(e)h(v)
+-5 b(alid)29 b(after)i(the)f(blo)s(c)m(k)g(ends.)141
+543 y Fn(lua_getcfunction)e Fp(con)m(v)m(erts)34 b(a)e
+Fn(lua_Object)e Fp(to)j(a)f(C)g(function.)45 b(This)31
+b Fn(lua_Object)e Fp(m)m(ust)j(ha)m(v)m(e)i(t)m(yp)s(e)0
+656 y Fo(CF)-7 b(unction)7 b Fp(;)39 b(otherwise,)e(the)f(function)e
+(returns)g(0)i(\(the)g(n)m(ull)e(p)s(oin)m(ter\).)56
+b(The)35 b(t)m(yp)s(e)h Fn(lua_CFunction)c Fp(is)i(ex-)0
+769 y(plained)28 b(in)h(Section)h(5.5.)141 882 y Fn(lua_getuserdata)20
+b Fp(con)m(v)m(erts)26 b(a)f Fn(lua_Object)d Fp(to)j
+Fn(void*)p Fp(.)38 b(This)22 b Fn(lua_Object)g Fp(m)m(ust)i(ha)m(v)m(e)
+i(t)m(yp)s(e)f Fo(user)-5 b(data)7 b Fp(;)0 995 y(otherwise,)30
+b(the)h(function)e(returns)g(0)i(\(the)f(n)m(ull)f(p)s(oin)m(ter\).)141
+1108 y(The)34 b(rev)m(erse)h(pro)s(cess,)g(that)f(is,)h(passing)e(a)i
+(sp)s(eci\014c)e(C)g(v)-5 b(alue)34 b(to)h(Lua,)g(is)e(done)h(b)m(y)g
+(using)f(the)h(follo)m(wing)0 1220 y(functions:)0 1403
+y Fn(void)524 b(lua_pushnumber)d(\(double)46 b(n\);)0
+1516 y(void)524 b(lua_pushstring)d(\(char)46 b(*s\);)0
+1629 y(void)524 b(lua_pushcfunction)377 b(\(lua_CFunction)44
+b(f\);)0 1742 y(void)524 b(lua_pushusertag)473 b(\(void)46
+b(*u,)h(int)g(tag\);)0 1925 y Fp(plus)28 b(the)j(macro:)0
+2108 y Fn(void)524 b(lua_pushuserdata)425 b(\(void)46
+b(*u\);)0 2291 y Fp(All)33 b(of)h(them)f(receiv)m(e)i(a)g(C)e(v)-5
+b(alue,)35 b(con)m(v)m(ert)g(it)e(to)i(a)f(corresp)s(onding)e
+Fn(lua_Object)p Fp(,)h(and)g(lea)m(v)m(e)i(the)f(result)f(on)0
+2404 y(the)c(top)g(of)f(the)h(Lua)g(stac)m(k,)h(where)e(it)g(can)h(b)s
+(e)f(assigned)g(to)i(a)f(Lua)f(v)-5 b(ariable,)28 b(passed)g(as)h
+(parameter)g(to)g(a)g(Lua)0 2517 y(function,)g(etc.)141
+2629 y(User)43 b(data)g(can)g(ha)m(v)m(e)h(di\013eren)m(t)e(tags,)47
+b(whose)42 b(seman)m(tics)h(are)g(de\014ned)f(b)m(y)g(the)h(host)g
+(program.)77 b(An)m(y)0 2742 y(p)s(ositiv)m(e)35 b(in)m(teger)h(can)g
+(b)s(e)g(used)f(to)h(tag)h(a)g(user)e(datum.)56 b(When)36
+b(a)g(user)f(datum)h(is)f(retriev)m(ed,)i(the)f(function)0
+2855 y Fn(lua_type)28 b Fp(can)j(b)s(e)f(used)f(to)i(get)h(its)d(tag.)
+141 2968 y(T)-8 b(o)31 b(complete)g(the)f(set,)i(the)e(v)-5
+b(alue)30 b Fm(nil)g Fp(or)h(a)g Fn(lua_Object)c Fp(can)k(also)f(b)s(e)
+g(pushed)e(on)m(to)k(the)f(stac)m(k,)h(with:)0 3151 y
+Fn(void)524 b(lua_pushnil)665 b(\(void\);)0 3264 y(void)524
+b(lua_pushobject)d(\(lua_Object)45 b(object\);)0 3507
+y Ff(5.3)112 b(Manipulating)37 b(Lua)h(Ob)6 b(jects)0
+3678 y Fp(T)-8 b(o)31 b(read)f(the)h(v)-5 b(alue)30 b(of)g(an)m(y)h
+(global)e(Lua)i(v)-5 b(ariable,)29 b(one)i(uses)f(the)g(function:)0
+3861 y Fn(lua_Object)236 b(lua_getglobal)569 b(\(char)46
+b(*varname\);)0 4044 y Fp(As)30 b(in)f(Lua,)i(if)e(the)i(v)-5
+b(alue)29 b(of)i(the)g(global)e(is)h Fm(nil)p Fp(,)g(then)g(the)h
+(\\getglobal")h(fallbac)m(k)e(is)f(called.)141 4157 y(T)-8
+b(o)31 b(store)g(a)g(v)-5 b(alue)30 b(previously)e(pushed)g(on)m(to)k
+(the)e(stac)m(k)i(in)d(a)i(global)f(v)-5 b(ariable,)29
+b(there)i(is)e(the)i(function:)0 4340 y Fn(void)524 b(lua_storeglobal)
+473 b(\(char)46 b(*varname\);)141 4523 y Fp(T)-8 b(ables)30
+b(can)h(also)f(b)s(e)g(manipulated)e(via)i(the)h(API.)f(The)g(function)
+0 4705 y Fn(lua_Object)236 b(lua_getsubscript)425 b(\(void\);)0
+4888 y Fp(exp)s(ects)31 b(on)f(the)g(stac)m(k)i(a)f(table)f(and)f(an)i
+(index,)e(and)g(returns)g(the)i(con)m(ten)m(ts)h(of)e(the)h(table)f(at)
+h(that)g(index.)39 b(As)0 5001 y(in)29 b(Lua,)h(if)f(the)h(\014rst)f
+(ob)5 b(ject)31 b(is)e(not)i(a)f(table,)g(or)g(the)g(index)f(is)g(not)h
+(presen)m(t)h(in)d(the)i(table,)h(the)f(corresp)s(onding)0
+5114 y(fallbac)m(k)g(is)f(called.)141 5227 y(T)-8 b(o)34
+b(store)f(a)h(v)-5 b(alue)32 b(in)g(an)h(index,)f(the)h(program)g(m)m
+(ust)g(push)e(on)m(to)j(the)f(stac)m(k)i(the)e(table,)h(the)f(index,)g
+(and)0 5340 y(the)e(v)-5 b(alue,)30 b(and)f(then)i(call)e(the)i
+(function:)1905 5589 y(12)p eop
%%Page: 13 13
-13 12 bop 29 199 a Fm(lua_getuserdata)10 b Fo(con)o(v)o(erts)i(a)g
-Fm(lua_Object)e Fo(to)i Fm(void*)p Fo(.)18 b(This)12
-b Fm(lua_Object)f Fo(m)o(ust)g(ha)o(v)o(e)h(t)o(yp)q(e)g
-Fn(user)n(data)s Fo(;)-42 256 y(otherwise,)j(the)g(function)g(returns)g
-(0)g(\(the)g(n)o(ull)f(p)q(oin)o(ter\).)29 312 y(The)j(rev)o(erse)g
-(pro)q(cess,)h(that)e(is,)h(passing)f(a)h(sp)q(eci\014c)h(C)f(v)m(alue)
-g(to)g(Lua,)h(is)e(done)i(b)o(y)f(using)g(the)g(follo)o(wing)-42
-369 y(functions:)-42 457 y Fm(void)262 b(lua_pushnumber)f(\(double)23
-b(n\);)-42 513 y(void)262 b(lua_pushstring)f(\(char)23
-b(*s\);)-42 570 y(void)262 b(lua_pushcfunction)189 b(\(lua_CFunction)22
-b(f\);)-42 626 y(void)262 b(lua_pushusertag)237 b(\(void)23
-b(*u,)h(int)f(tag\);)-42 714 y Fo(plus)16 b(the)f(macro:)-42
-802 y Fm(void)262 b(lua_pushuserdata)213 b(\(void)23
-b(*u\);)-42 890 y Fo(All)17 b(of)f(them)g(receiv)o(e)h(a)f(C)h(v)m
-(alue,)g(con)o(v)o(ert)f(it)h(to)f(a)g(corresp)q(onden)o(t)i
-Fm(lua_Object)p Fo(,)d(and)i(lea)o(v)o(e)f(the)h(result)g(on)-42
-947 y(the)h(top)g(of)f(the)h(Lua)g(stac)o(k,)f(where)h(it)f(can)h(b)q
-(e)h(assigned)e(to)g(a)h(Lua)g(v)m(ariable,)f(passed)h(as)g(paramen)o
-(ter)e(to)h(a)-42 1003 y(Lua)f(function,)f(etc)g(\(see)g(b)q(elo)o
-(w\).)29 1060 y(User)10 b(data)g(can)h(ha)o(v)o(e)e(di\013eren)o(t)h
-(tags,)g(whose)g(seman)o(tics)f(are)h(de\014ned)h(b)o(y)g(the)f(host)g
-(program.)16 b(An)o(y)10 b(p)q(ositiv)o(e)-42 1116 y(in)o(teger)15
-b(can)h(b)q(e)h(used)f(to)g(tag)e(a)i(user)g(data.)21
-b(When)16 b(a)g(user)g(data)f(is)g(retriev)o(ed,)g(the)h(function)g
-Fm(lua_type)e Fo(can)-42 1173 y(b)q(e)i(used)g(to)f(get)f(its)h(tag.)29
-1229 y(T)l(o)g(complete)f(the)h(set,)g(the)g(v)m(alue)g
-Fl(nil)g Fo(or)f(a)h Fm(lua_Object)f Fo(can)h(also)g(b)q(e)g(pushed)i
-(on)o(to)d(the)h(stac)o(k,)f(with:)-42 1317 y Fm(void)262
-b(lua_pushnil)333 b(\(void\);)-42 1374 y(void)262 b(lua_pushobject)f
-(\(lua_Object)22 b(object\);)-42 1494 y Fe(5.3)56 b(Manipulating)22
-b(Lua)c(Ob)s(jects)-42 1580 y Fo(T)l(o)d(read)h(the)f(v)m(alue)g(of)g
-(an)o(y)g(global)f(Lua)h(v)m(ariable,)f(one)i(can)f(use)h(the)f
-(function:)-42 1668 y Fm(lua_Object)118 b(lua_getglobal)285
-b(\(char)23 b(*varname\);)-42 1756 y Fo(As)16 b(in)f(Lua,)g(if)g(the)g
-(v)m(alue)g(of)g(the)g(global)f(is)h Fl(nil)p Fo(,)f(the)h
-Fm("getglobal")f Fo(fallbac)o(k)g(is)g(called.)29 1813
-y(T)l(o)h(store)f(a)h(v)m(alue)h(previously)e(pushed)j(on)o(to)d(the)h
-(stac)o(k)g(in)g(a)f(global)g(v)m(ariable,)h(there)g(is)g(the)g
-(function:)-42 1901 y Fm(void)262 b(lua_storeglobal)237
-b(\(char)23 b(*varname\);)29 1989 y Fo(T)l(ables)15 b(can)g(also)f(b)q
-(e)i(manipulated)e(via)g(the)i(API.)f(The)g(function)-42
-2077 y Fm(lua_Object)118 b(lua_getsubscript)213 b(\(void\);)-42
-2165 y Fo(exp)q(ects)16 b(on)f(the)h(stac)o(k)e(a)h(table)f(and)i(an)f
-(index,)g(and)g(returns)g(the)g(con)o(ten)o(ts)g(of)g(the)g(table)f(at)
-h(that)f(index.)20 b(As)-42 2221 y(in)15 b(Lua,)g(if)g(the)g(\014rst)f
-(ob)s(ject)h(is)f(not)h(a)f(table,)g(or)h(the)g(index)g(is)g(not)f
-(presen)o(t)h(in)g(the)g(table,)f(the)h(corresp)q(onden)o(t)-42
-2278 y(fallbac)o(k)f(is)h(called.)29 2334 y(T)l(o)h(store)g(a)g(v)m
-(alue)h(in)f(an)h(index,)g(the)f(program)e(m)o(ust)h(push)j(on)o(to)d
-(the)i(stac)o(k)e(the)i(table,)f(the)h(index,)f(and)-42
-2391 y(the)g(v)m(alue,)f(and)g(then)h(call)e(the)h(function:)-42
-2479 y Fm(void)24 b(lua_storesubscript)d(\(void\);)-42
-2567 y Fo(Again,)15 b(the)g(corresp)q(onden)o(t)g(fallbac)o(k)f(is)h
-(called)g(if)f(needed.)29 2623 y(Finally)l(,)g(the)h(function)911
-2748 y(13)p eop
+13 12 bop 0 91 a Fn(void)47 b(lua_storesubscript)42 b(\(void\);)0
+264 y Fp(Again,)30 b(the)h(corresp)s(onding)d(fallbac)m(k)i(is)g
+(called)f(if)g(needed.)141 377 y(Finally)-8 b(,)29 b(the)i(function)0
+549 y Fn(lua_Object)236 b(lua_createtable)473 b(\(void\);)0
+721 y Fp(creates)32 b(and)e(returns)f(a)h(new)g(table.)141
+834 y Fo(Ple)-5 b(ase)40 b(Notic)-5 b(e:)61 b Fp(Most)39
+b(functions)d(from)h(the)h(Lua)g(library)d(receiv)m(e)k(parameters)f
+(through)g(Lua's)f(stac)m(k.)0 947 y(Because)e(other)f(functions)f
+(also)h(use)f(this)g(stac)m(k,)k(it)c(is)g(imp)s(ortan)m(t)g(that)i
+(these)f(parameters)g(b)s(e)f(pushed)g(just)0 1060 y(b)s(efore)d(the)g
+(corresp)s(onding)e(call,)i(without)f(in)m(termediate)h(calls)f(to)i
+(the)f(Lua)g(library)-8 b(.)38 b(F)-8 b(or)31 b(instance,)f(supp)s(ose)
+0 1173 y(the)h(user)e(w)m(an)m(ts)i(the)g(v)-5 b(alue)30
+b(of)g Fn(a[i])p Fp(.)40 b(A)30 b(simplistic)d(solution)i(w)m(ould)g(b)
+s(e:)95 1345 y Fn(/*)48 b(Warning:)d(WRONG)i(CODE)f(*/)95
+1458 y(lua_Object)f(result;)95 1571 y(lua_pushobject\(lua_getglob)o
+(al\(")o(a"\))o(\);)89 b(/*)48 b(push)e(table)h(*/)95
+1684 y(lua_pushobject\(lua_getglob)o(al\(")o(i"\))o(\);)89
+b(/*)48 b(push)e(index)h(*/)95 1797 y(result)g(=)g
+(lua_getsubscript\(\);)0 1969 y Fp(Ho)m(w)m(ev)m(er,)d(the)39
+b(call)f Fn(lua_getglobal\("i"\))d Fp(mo)s(di\014es)i(the)i(stac)m(k,)k
+(and)c(in)m(v)-5 b(alidates)38 b(the)h(previous)f(pushed)0
+2082 y(v)-5 b(alue.)40 b(A)31 b(correct)g(solution)e(could)h(b)s(e:)95
+2254 y Fn(lua_Object)45 b(result;)95 2367 y(lua_Object)g(index)i(=)g
+(lua_getglobal\("i"\);)95 2480 y(lua_pushobject\(lua_getglob)o(al\(")o
+(a"\))o(\);)89 b(/*)48 b(push)e(table)h(*/)95 2593 y
+(lua_pushobject\(index\);)710 b(/*)48 b(push)e(index)h(*/)95
+2706 y(result)g(=)g(lua_getsubscript\(\);)0 2878 y Fp(The)35
+b(functions)f Fn(lua_getnumber)p Fp(,)f Fn(lua_getstring)p
+Fp(,)g Fn(lua_getuserdata)p Fp(,)g(and)h Fn(lua_getcfunction)p
+Fp(,)f(plus)0 2991 y(the)e(family)d Fn(lua_is*)p Fp(,)h(are)i(safe)g
+(to)g(b)s(e)e(called)h(without)f(mo)s(difying)f(the)j(stac)m(k.)0
+3231 y Ff(5.4)112 b(Calling)36 b(Lua)i(F)-9 b(unctions)0
+3403 y Fp(F)h(unctions)36 b(de\014ned)g(in)f(Lua)i(b)m(y)f(a)h(c)m(h)m
+(unk)g(executed)h(with)d Fn(dofile)g Fp(or)i Fn(dostring)d
+Fp(can)j(b)s(e)g(called)e(from)i(the)0 3516 y(host)d(program.)50
+b(This)32 b(is)h(done)g(using)f(the)i(follo)m(wing)e(proto)s(col:)47
+b(\014rst,)34 b(the)g(argumen)m(ts)g(to)g(the)g(function)f(are)0
+3629 y(pushed)27 b(on)m(to)j(the)f(Lua)g(stac)m(k)h(\(see)g(Section)e
+(5.2\),)j(in)d(direct)g(order,)h(i.e.,)g(the)g(\014rst)f(argumen)m(t)i
+(is)d(pushed)g(\014rst.)0 3742 y(Again,)j(it)g(is)g(imp)s(ortan)m(t)f
+(to)i(emphasize)f(that,)h(during)e(this)g(phase,)h(no)g(other)h(Lua)f
+(function)f(can)i(b)s(e)f(called.)141 3855 y(Then,)g(the)g(function)f
+(is)h(called)f(using)0 4027 y Fn(int)572 b(lua_call)809
+b(\(char)46 b(*functionname\);)0 4199 y Fp(or)0 4372
+y Fn(int)572 b(lua_callfunction)425 b(\(lua_Object)45
+b(function\);)0 4544 y Fp(Both)32 b(functions)e(return)h(an)h(error)f
+(co)s(de:)43 b(0,)33 b(in)d(case)j(of)f(success;)g(non)f(zero,)i(in)e
+(case)h(of)g(errors.)44 b(Finally)-8 b(,)31 b(the)0 4657
+y(returned)e(v)-5 b(alues)30 b(\(a)h(Lua)f(function)f(ma)m(y)i(return)e
+(man)m(y)i(v)-5 b(alues\))30 b(can)h(b)s(e)e(retriev)m(ed)i(with)e(the)
+h(macro)0 4829 y Fn(lua_Object)236 b(lua_getresult)617
+b(\(int)46 b(number\);)0 5001 y Fp(where)33 b Fn(number)f
+Fp(is)h(the)g(order)h(of)f(the)h(result,)g(starting)f(with)f(1.)51
+b(When)33 b(called)g(with)g(a)h(n)m(um)m(b)s(er)e(larger)h(than)0
+5114 y(the)e(actual)f(n)m(um)m(b)s(er)f(of)i(results,)e(this)h
+(function)f(returns)g Fn(LUA_NOOBJECT)p Fp(.)141 5227
+y(Tw)m(o)37 b(sp)s(ecial)e(Lua)i(functions)e(ha)m(v)m(e)j(exclusiv)m(e)
+e(in)m(terfaces:)54 b Fn(error)35 b Fp(and)h Fn(setfallback)p
+Fp(.)57 b(A)37 b(C)f(function)0 5340 y(can)31 b(generate)h(a)e(Lua)g
+(error)g(calling)f(the)i(function)1905 5589 y(13)p eop
%%Page: 14 14
-14 13 bop -42 199 a Fm(lua_Object)118 b(lua_createtable)237
-b(\(void\);)-42 293 y Fo(creates)15 b(a)g(new)h(table.)29
-349 y Fn(Ple)n(ase)22 b(Notic)n(e:)36 b Fo(Most)22 b(functions)g(from)e
-(the)j(Lua)f(library)f(receiv)o(e)i(parameters)d(through)i(the)h(stac)o
-(k.)-42 406 y(Because)c(other)e(functions)g(also)g(use)h(the)g(stac)o
-(k,)f(it)g(is)g(imp)q(ortan)o(t)e(that)i(these)h(parameters)e(b)q(e)i
-(pushed)h(just)-42 462 y(b)q(efore)d(the)f(corresp)q(onden)o(t)g(call,)
-f(without)g(in)o(termediate)e(calls)i(to)h(the)g(Lua)g(library)l(.)k(F)
-l(or)14 b(instance,)h(supp)q(ose)-42 519 y(the)h(user)f(w)o(an)o(ts)f
-(the)h(v)m(alue)h(of)f Fm(a[i])p Fo(.)k(A)c(simplistic)e(solution)h(w)o
-(ould)g(b)q(e:)6 613 y Fm(/*)24 b(Warning:)f(WRONG)g(CODE)g(*/)6
-669 y(lua_Object)g(result;)6 725 y(lua_pushobject\(lua_getglobal)o
-(\("a"\)\);)44 b(/*)24 b(push)f(table)g(*/)6 782 y
-(lua_pushobject\(lua_getglobal)o(\("i"\)\);)44 b(/*)24
-b(push)f(index)g(*/)6 838 y(result)g(=)h(lua_getsubscript\(\);)-42
-932 y Fo(Ho)o(w)o(ev)o(er,)c(the)f(call)g Fm(lua_getglobal\("i"\))e
-Fo(mo)q(di\014es)i(the)h(stac)o(k,)f(and)h(in)o(v)m(alidates)e(the)i
-(previous)f(pushed)-42 989 y(v)m(alue.)i(A)15 b(correct)g(solution)f
-(could)h(b)q(e:)6 1082 y Fm(lua_Object)23 b(result;)6
-1139 y(lua_Object)g(index)g(=)h(lua_getglobal\("i"\);)6
-1195 y(lua_pushobject\(lua_getglobal)o(\("a"\)\);)44
-b(/*)24 b(push)f(table)g(*/)6 1252 y(lua_pushobject\(index\);)355
-b(/*)24 b(push)f(index)g(*/)6 1308 y(result)g(=)h
-(lua_getsubscript\(\);)-42 1430 y Fe(5.4)56 b(Calling)21
-b(Lua)e(F)-5 b(unctions)-42 1516 y Fo(F)l(unctions)19
-b(de\014ned)g(in)g(Lua)f(b)o(y)h(a)f(c)o(h)o(unk)g(executed)i(with)e
-Fm(dofile)f Fo(or)h Fm(dostring)f Fo(can)i(b)q(e)g(called)f(from)e(the)
--42 1572 y(host)h(program.)23 b(This)16 b(is)g(done)h(using)g(the)g
-(follo)o(wing)e(proto)q(col:)22 b(\014rst,)16 b(the)h(argumen)o(ts)e
-(to)h(the)h(function)g(are)-42 1629 y(pushed)f(on)o(to)d(the)i(Lua)g
-(stac)o(k)e(\(see)i(Section)f(5.2\),)f(in)h(direct)g(order,)g(i.e.,)g
-(the)g(\014rst)g(argumen)o(t)f(is)h(pushed)h(\014rst.)-42
-1685 y(Again,)g(it)f(is)h(imp)q(ortan)o(t)e(to)h(emphasize)h(that,)f
-(during)h(this)f(phase,)i(no)f(other)g(Lua)g(function)g(can)g(b)q(e)h
-(called.)29 1741 y(Then,)f(the)h(function)f(is)f(called)h(using)-42
-1835 y Fm(int)286 b(lua_call)405 b(\(char)23 b(*functionname\);)-42
-1929 y Fo(or)-42 2023 y Fm(int)286 b(lua_callfunction)213
-b(\(lua_Object)22 b(function\);)-42 2116 y Fo(Both)16
-b(functions)g(return)f(an)h(error)f(co)q(de:)22 b(0,)15
-b(in)h(case)g(of)f(success;)i(non)f(zero,)f(in)h(case)g(of)f(errors.)21
-b(Finally)l(,)14 b(the)-42 2173 y(returned)i(v)m(alues)f(\(a)g(Lua)h
-(function)f(ma)o(y)e(return)i(man)o(y)f(v)m(alues\))h(can)g(b)q(e)h
-(retriev)o(ed)f(with)f(the)i(macro)-42 2267 y Fm(lua_Object)118
-b(lua_getresult)309 b(\(int)23 b(number\);)-42 2360 y
-Fo(where)18 b Fm(number)d Fo(is)i(the)g(order)f(of)h(the)g(result,)f
-(starting)f(with)h(1.)25 b(When)17 b(called)f(with)g(a)h(n)o(um)o(b)q
-(er)f(larger)g(than)-42 2417 y(the)g(actual)e(n)o(um)o(b)q(er)h(of)f
-(results,)h(this)f(function)h(returns)g Fm(LUA_NOOBJECT)p
-Fo(.)29 2473 y(Tw)o(o)j(sp)q(ecial)g(Lua)g(functions)h(ha)o(v)o(e)e
-(exclusiv)o(e)i(in)o(terfaces:)25 b Fm(error)18 b Fo(and)g
-Fm(setfallback)p Fo(.)28 b(A)18 b(C)h(function)-42 2530
-y(can)d(generate)f(a)g(Lua)g(error)g(calling)f(the)h(function)-42
-2623 y Fm(void)24 b(lua_error)e(\(char)i(*message\);)911
-2748 y Fo(14)p eop
+14 13 bop 0 91 a Fn(void)47 b(lua_error)e(\(char)h(*message\);)0
+279 y Fp(This)34 b(function)g(nev)m(er)j(returns.)55
+b(If)36 b(the)g(C)f(function)f(has)i(b)s(een)f(called)g(from)g(Lua,)i
+(the)f(corresp)s(onding)e(Lua)0 392 y(execution)f(terminates,)g(as)g
+(if)e(an)i(error)f(had)g(o)s(ccurred)g(inside)e(Lua)i(co)s(de.)48
+b(Otherwise,)32 b(the)g(whole)g(program)0 505 y(terminates.)141
+618 y(F)-8 b(allbac)m(ks)31 b(can)g(b)s(e)e(c)m(hanged)i(with:)0
+805 y Fn(lua_Object)45 b(lua_setfallback)f(\(char)i(*name,)g
+(lua_CFunction)e(fallback\);)0 993 y Fp(The)22 b(\014rst)g(parameter)h
+(is)f(the)h(fallbac)m(k)f(name,)i(and)e(the)h(second)g(a)g(CF)-8
+b(unction)22 b(to)h(b)s(e)f(used)g(as)h(the)g(new)f(fallbac)m(k.)0
+1106 y(This)28 b(function)g(returns)g(a)i Fn(lua_Object)p
+Fp(,)d(whic)m(h)h(is)h(the)g(old)g(fallbac)m(k)g(v)-5
+b(alue,)29 b(or)h Fm(nil)g Fp(on)f(fail)f(\(in)m(v)-5
+b(alid)27 b(fallbac)m(k)0 1219 y(name\).)41 b(This)29
+b(old)g(v)-5 b(alue)30 b(can)h(b)s(e)e(used)h(for)g(c)m(haining)f
+(fallbac)m(ks.)141 1332 y(An)h(example)g(of)h(C)f(co)s(de)g(calling)f
+(a)i(Lua)f(function)f(is)g(sho)m(wn)h(in)f(Section)h(8.10.)0
+1575 y Ff(5.5)112 b(C)38 b(F)-9 b(unctions)0 1747 y Fp(T)h(o)31
+b(register)f(a)h(C)f(function)f(to)i(Lua,)f(there)h(is)e(the)i(follo)m
+(wing)e(macro:)0 1934 y Fn(#define)46 b(lua_register\(n,f\))329
+b(\(lua_pushcfunction\(f\),)42 b(lua_storeglobal\(n\)\))0
+2047 y(/*)47 b(char)g(*n;)429 b(*/)0 2160 y(/*)47 b(lua_CFunction)d(f;)
+k(*/)0 2348 y Fp(whic)m(h)28 b(receiv)m(es)i(the)g(name)f(the)g
+(function)f(will)f(ha)m(v)m(e)k(in)d(Lua,)h(and)g(a)g(p)s(oin)m(ter)g
+(to)h(the)f(function.)39 b(This)28 b(p)s(oin)m(ter)0
+2461 y(m)m(ust)i(ha)m(v)m(e)i(t)m(yp)s(e)e Fn(lua_CFunction)p
+Fp(,)d(whic)m(h)i(is)h(de\014ned)f(as)0 2648 y Fn(typedef)46
+b(void)g(\(*lua_CFunction\))e(\(void\);)0 2836 y Fp(that)31
+b(is,)f(a)g(p)s(oin)m(ter)g(to)h(a)g(function)e(with)g(no)h(parameters)
+h(and)f(no)g(results.)141 2949 y(In)d(order)h(to)g(comm)m(unicate)g
+(prop)s(erly)e(with)h(Lua,)h(a)g(C)f(function)g(m)m(ust)h(follo)m(w)f
+(a)h(proto)s(col,)g(whic)m(h)f(de\014nes)0 3062 y(the)k(w)m(a)m(y)g
+(parameters)g(and)e(results)h(are)g(passed.)141 3175
+y(T)-8 b(o)31 b(access)h(its)d(argumen)m(ts,)i(a)g(C)f(function)f
+(calls:)0 3362 y Fn(lua_Object)236 b(lua_getparam)617
+b(\(int)47 b(number\);)0 3550 y Fp(where)30 b Fn(number)f
+Fp(starts)i(with)e(1)i(to)g(get)g(the)g(\014rst)f(argumen)m(t.)41
+b(When)31 b(called)e(with)g(a)i(n)m(um)m(b)s(er)e(larger)i(than)f(the)0
+3663 y(actual)25 b(n)m(um)m(b)s(er)f(of)h(argumen)m(ts,)h(this)e
+(function)f(returns)h Fn(LUA_NOOBJECT)p Fp(.)d(In)j(this)g(w)m(a)m(y)-8
+b(,)28 b(it)c(is)g(p)s(ossible)e(to)k(write)0 3776 y(functions)j(that)i
+(w)m(ork)f(with)f(a)i(v)-5 b(ariable)29 b(n)m(um)m(b)s(er)g(of)i
+(parameters.)141 3889 y(T)-8 b(o)26 b(return)e(v)-5 b(alues,)27
+b(a)e(C)g(function)g(just)f(pushes)h(them)g(on)m(to)i(the)e(stac)m(k,)j
+(in)d(direct)g(order)g(\(see)h(Section)f(5.2\).)0 4002
+y(Lik)m(e)30 b(a)h(Lua)f(function,)f(a)i(C)f(function)f(called)h(b)m(y)
+g(Lua)g(can)h(also)f(return)f(man)m(y)i(results.)141
+4115 y(Section)f(8.9)i(presen)m(ts)e(an)g(example)g(of)h(a)g(CF)-8
+b(unction.)0 4358 y Ff(5.6)112 b(References)38 b(to)f(Lua)i(Ob)6
+b(jects)0 4530 y Fp(As)23 b(noted)g(in)f(Section)h(5.5,)j
+Fn(lua_Object)p Fp(s)20 b(are)k(v)m(olatile.)38 b(If)22
+b(the)i(C)e(co)s(de)i(needs)e(to)i(k)m(eep)g(a)f Fn(lua_Object)e
+Fp(outside)0 4642 y(blo)s(c)m(k)33 b(b)s(oundaries,)e(it)i(m)m(ust)g
+(create)h(a)g Fo(r)-5 b(efer)g(enc)g(e)33 b Fp(to)h(the)f(ob)5
+b(ject.)50 b(The)33 b(routines)e(to)j(manipulate)e(references)0
+4755 y(are)f(the)f(follo)m(wing:)0 4943 y Fn(int)572
+b(lua_ref)46 b(\(int)g(lock\);)0 5056 y(lua_Object)236
+b(lua_getref)93 b(\(int)46 b(ref\);)0 5169 y(void)524
+b(lua_pushref)45 b(\(int)h(ref\);)0 5282 y(void)524 b(lua_unref)45
+b(\(int)i(ref\);)1905 5589 y Fp(14)p eop
%%Page: 15 15
-15 14 bop -42 199 a Fo(This)18 b(function)g(nev)o(er)g(returns.)28
-b(If)18 b(the)g(C)f(function)h(has)g(b)q(een)h(called)f(from)e(Lua,)i
-(the)g(corresp)q(onding)g(Lua)-42 256 y(execution)f(terminates,)d(as)i
-(if)g(an)g(error)f(had)i(o)q(ccurred)g(inside)f(Lua)h(co)q(de.)23
-b(Otherwise,)16 b(the)h(whole)f(program)-42 312 y(terminates.)29
-369 y(F)l(allbac)o(ks)e(can)h(b)q(e)h(c)o(hanged)g(with:)-42
-454 y Fm(lua_Object)23 b(lua_setfallback)f(\(char)h(*name,)g
-(lua_CFunction)f(fallback\);)-42 540 y Fo(The)12 b(\014rst)f(parameter)
-f(is)g(the)i(fallbac)o(k)e(name,)h(and)g(the)h(second)f(a)h(CF)l
-(unction)f(to)f(b)q(e)i(used)g(as)f(the)h(new)f(fallbac)o(k.)-42
-596 y(This)k(function)f(returns)h(a)f Fm(lua_Object)p
-Fo(,)g(whic)o(h)g(is)g(the)h(old)g(fallbac)o(k)e(v)m(alue,)i(or)f
-Fl(nil)g Fo(on)g(fail)g(\(in)o(v)m(alid)g(fallbac)o(k)-42
-653 y(name\).)19 b(This)c(old)g(v)m(alue)g(can)g(b)q(e)h(used)g(for)f
-(c)o(haining)f(fallbac)o(ks.)29 709 y(An)i(example)e(of)g(C)h(co)q(de)h
-(calling)e(a)h(Lua)g(function)h(is)e(sho)o(wn)h(in)g(Section)g(8.10.)
--42 829 y Fe(5.5)56 b(C)19 b(F)-5 b(unctions)-42 915
-y Fo(T)l(o)15 b(register)g(a)f(C)h(function)g(to)g(Lua,)g(there)g(is)g
-(the)g(follo)o(wing)e(macro:)-42 1001 y Fm(#define)23
-b(lua_register\(n,f\))165 b(\(lua_pushcfunction\(f\),)21
-b(lua_storeglobal\(n\)\))-42 1057 y(/*)j(char)f(*n;)215
-b(*/)-42 1114 y(/*)24 b(lua_CFunction)e(f;)i(*/)-42 1199
-y Fo(whic)o(h)15 b(receiv)o(es)g(the)f(name)g(the)h(function)f(will)g
-(ha)o(v)o(e)g(in)g(Lua,)h(and)g(a)f(p)q(oin)o(ter)g(to)g(the)h
-(function.)20 b(This)14 b(p)q(oin)o(ter)-42 1256 y(m)o(ust)g(ha)o(v)o
-(e)h(t)o(yp)q(e)g Fm(lua_CFunction)p Fo(,)e(whic)o(h)i(is)g(de\014ned)i
-(as)-42 1341 y Fm(typedef)23 b(void)h(\(*lua_CFunction\))d(\(void\);)
--42 1427 y Fo(that)15 b(is,)f(a)h(p)q(oin)o(ter)g(to)f(a)h(function)g
-(with)g(no)g(parameters)e(and)j(no)f(results.)29 1483
-y(In)g(order)e(to)h(comm)o(unicate)d(prop)q(erly)j(with)f(Lua,)h(a)f(C)
-h(function)g(m)o(ust)e(follo)o(w)g(a)i(proto)q(col,)f(whic)o(h)g
-(de\014nes)-42 1540 y(the)j(w)o(a)o(y)e(parameters)f(and)j(results)e
-(are)h(passed.)29 1596 y(T)l(o)g(access)g(its)g(argumen)o(ts,)e(a)i(C)g
-(function)g(calls:)-42 1682 y Fm(lua_Object)118 b(lua_getparam)309
-b(\(int)23 b(number\);)-42 1767 y Fo(where)16 b Fm(number)e
-Fo(starts)g(with)h(1)g(to)f(get)h(the)h(\014rst)e(argumen)o(t.)19
-b(When)c(called)g(with)g(a)g(n)o(um)o(b)q(er)f(larger)g(than)h(the)-42
-1824 y(actual)d(n)o(um)o(b)q(er)g(of)g(argumen)o(ts,)f(this)g(function)
-i(returns)f Fm(LUA_NOOBJECT)p Fo(.)e(In)j(this)f(w)o(a)o(y)l(,)g(it)g
-(is)f(p)q(ossible)i(to)e(write)-42 1880 y(functions)k(that)g(w)o(ork)f
-(with)h(a)g(v)m(ariable)f(n)o(um)o(b)q(er)h(of)f(parameters.)29
-1937 y(T)l(o)g(return)g(v)m(alues,)g(a)g(C)g(function)g(just)f(pushes)i
-(them)e(on)o(to)g(the)i(stac)o(k,)e(in)h(direct)g(order;)f(see)i
-(Section)f(5.2.)-42 1993 y(Lik)o(e)i(a)e(Lua)i(function,)f(a)g(C)g
-(function)g(called)f(b)o(y)h(Lua)h(can)f(also)g(return)g(man)o(y)e
-(results.)29 2050 y(Section)i(8.9)f(presen)o(ts)i(an)f(example)f(of)g
-(a)h(CF)l(unction.)-42 2170 y Fe(5.6)56 b(References)17
-b(to)i(Lua)f(Ob)s(jects)-42 2256 y Fo(As)h(already)g(noted,)g
-Fm(lua_Object)p Fo(s)f(are)h(v)o(olatile.)29 b(If)19
-b(the)g(C)g(co)q(de)h(needs)g(to)e(k)o(eep)h(a)g Fm(lua_Object)f
-Fo(outside)-42 2312 y(blo)q(c)o(k)f(b)q(oundaries,)g(it)e(m)o(ust)g
-(create)i(a)f Fn(r)n(efer)n(enc)n(e)f Fo(to)h(the)g(ob)s(ject.)23
-b(The)17 b(routines)f(to)g(manipulate)f(references)-42
-2369 y(are)g(the)h(follo)o(wing:)-42 2454 y Fm(int)286
-b(lua_ref)23 b(\(int)h(lock\);)-42 2511 y(lua_Object)118
-b(lua_getref)47 b(\(int)23 b(ref\);)-42 2567 y(void)262
-b(lua_pushref)23 b(\(int)g(ref\);)-42 2623 y(void)262
-b(lua_unref)23 b(\(int)g(ref\);)911 2748 y Fo(15)p eop
+15 14 bop 0 91 a Fp(The)29 b(function)e Fn(lua_ref)g
+Fp(creates)k(a)e(reference)h(to)g(the)f(ob)5 b(ject)30
+b(that)g(is)e(on)h(the)g(top)g(of)g(the)h(stac)m(k,)h(and)d(returns)0
+204 y(this)39 b(reference.)69 b(If)39 b Fn(lock)g Fp(is)g(true,)j(the)e
+(ob)5 b(ject)41 b(is)e Fo(lo)-5 b(cke)g(d)p Fp(:)61 b(that)40
+b(means)g(the)g(ob)5 b(ject)40 b(will)d(not)k(b)s(e)e(garbage)0
+317 y(collected.)54 b(Notice)35 b(that)h(an)e(unlo)s(c)m(k)m(ed)g
+(reference)h(ma)m(y)g(b)s(e)f(garbage)i(collected.)54
+b(Whenev)m(er)35 b(the)g(referenced)0 430 y(ob)5 b(ject)39
+b(is)d(needed,)k(a)e(call)f(to)i Fn(lua_getref)34 b Fp(returns)j(a)h
+(handle)e(to)j(it,)g(whereas)f Fn(lua_pushref)c Fp(pushes)j(the)0
+543 y(ob)5 b(ject)29 b(on)f(the)h(stac)m(k.)41 b(If)28
+b(the)g(ob)5 b(ject)29 b(has)f(b)s(een)g(collected,)h(then)f
+Fn(lua_getref)d Fp(returns)i Fn(LUA_NOOBJECT)p Fp(,)f(and)0
+656 y Fn(lua_pushobject)g Fp(issues)k(an)g(error.)141
+769 y(When)g(a)h(reference)g(is)e(no)i(longer)f(needed,)g(it)g(can)g(b)
+s(e)g(freed)g(with)f(a)i(call)f(to)h Fn(lua_unref)p Fp(.)0
+1055 y Fq(6)135 b(Prede\014ned)44 b(F)-11 b(unctions)44
+b(and)h(Libraries)0 1258 y Fp(The)33 b(set)g(of)g(prede\014ned)f
+(functions)f(in)h(Lua)h(is)f(small)g(but)g(p)s(o)m(w)m(erful.)47
+b(Most)34 b(of)g(them)f(pro)m(vide)f(features)h(that)0
+1371 y(allo)m(ws)28 b(some)i(degree)g(of)f(re\015exivit)m(y)g(in)e(the)
+j(language.)40 b(Some)30 b(of)f(these)h(features)f(cannot)h(b)s(e)e
+(sim)m(ulated)g(with)0 1484 y(the)k(rest)g(of)g(the)g(Language)h(nor)e
+(with)g(the)h(standard)f(Lua)g(API.)h(Others)f(are)i(just)e(con)m(v)m
+(enien)m(t)i(in)m(terfaces)f(to)0 1597 y(common)f(API)f(functions.)141
+1710 y(The)d(libraries,)e(on)i(the)g(other)h(hand,)f(pro)m(vide)f
+(useful)g(routines)g(that)h(are)h(implemen)m(ted)e(directly)g(through)0
+1823 y(the)f(standard)f(API.)i(Therefore,)g(they)f(are)g(not)h
+(necessary)f(to)h(the)f(language,)i(and)d(are)i(pro)m(vided)d(as)i
+(separated)0 1936 y(C)30 b(mo)s(dules.)39 b(Curren)m(tly)29
+b(there)h(are)h(three)f(standard)g(libraries:)136 2123
+y Fk(\017)46 b Fp(string)30 b(manipulation;)136 2311
+y Fk(\017)46 b Fp(mathematical)31 b(functions)e(\(sin,)g(cos,)j(etc\);)
+136 2499 y Fk(\017)46 b Fp(input)29 b(and)g(output)h(\(plus)f(some)i
+(system)g(facilities\).)0 2686 y(In)h(order)g(to)h(ha)m(v)m(e)h(access)
+f(to)g(these)g(libraries,)e(the)h(host)h(program)f(m)m(ust)g(call)g
+(the)h(functions)e Fn(strlib_open)p Fp(,)0 2799 y Fn(mathlib_open)p
+Fp(,)c(and)j Fn(iolib_open)p Fp(,)e(declared)i(in)f Fn(lualib.h)p
+Fp(.)0 3042 y Ff(6.1)112 b(Prede\014ned)38 b(F)-9 b(unctions)0
+3214 y Fk(\017)35 b Fn(dofile)46 b(\(filename\))0 3386
+y Fp(This)33 b(function)g(receiv)m(es)i(a)g(\014le)e(name,)j(op)s(ens)d
+(it,)j(and)d(executes)j(its)e(con)m(ten)m(ts)i(as)f(a)g(Lua)f(c)m(h)m
+(unk,)h(or)g(as)f(pre-)0 3499 y(compiled)d(c)m(h)m(unks.)46
+b(When)32 b(called)g(without)f(argumen)m(ts,)j(it)e(executes)h(the)g
+(con)m(ten)m(ts)h(of)f(the)f(standard)g(input)0 3612
+y(\()p Fn(stdin)p Fp(\).)60 b(If)37 b(there)g(is)f(an)m(y)h(error)g
+(executing)g(the)g(\014le,)h(it)f(returns)f Fm(nil)p
+Fp(.)60 b(Otherwise,)38 b(it)f(returns)e(the)j(v)-5 b(alues)0
+3724 y(returned)32 b(b)m(y)g(the)h(c)m(h)m(unk,)h(or)f(a)g(non)f
+Fm(nil)h Fp(v)-5 b(alue)32 b(if)g(the)h(c)m(h)m(unk)g(returns)e(no)i(v)
+-5 b(alues.)47 b(It)33 b(issues)f(an)h(error)f(when)0
+3837 y(called)e(with)f(a)h(non)g(string)g(argumen)m(t.)0
+4077 y Fk(\017)35 b Fn(dostring)46 b(\(string\))0 4249
+y Fp(This)29 b(function)h(executes)j(a)e(giv)m(en)g(string)f(as)i(a)f
+(Lua)g(c)m(h)m(unk.)43 b(If)30 b(there)i(is)e(an)m(y)h(error)g
+(executing)h(the)f(string,)f(it)0 4362 y(returns)c Fm(nil)p
+Fp(.)40 b(Otherwise,)27 b(it)h(returns)e(the)i(v)-5 b(alues)27
+b(returned)f(b)m(y)i(the)g(c)m(h)m(unk,)g(or)g(a)g(non)f
+Fm(nil)h Fp(v)-5 b(alue)27 b(if)f(the)i(c)m(h)m(unk)0
+4475 y(returns)h(no)h(v)-5 b(alues.)0 4715 y Fk(\017)35
+b Fn(next)47 b(\(table,)f(index\))0 4887 y Fp(This)34
+b(function)g(allo)m(ws)h(a)h(program)f(to)h(tra)m(v)m(erse)h(all)d
+(\014elds)g(of)i(a)g(table.)56 b(Its)35 b(\014rst)g(argumen)m(t)h(is)e
+(a)i(table)g(and)0 5000 y(its)31 b(second)g(argumen)m(t)h(is)e(an)i
+(index)d(in)i(this)f(table.)43 b(It)32 b(returns)e(the)h(next)h(index)e
+(of)h(the)h(table)f(and)g(the)g(v)-5 b(alue)0 5112 y(asso)s(ciated)33
+b(with)d(the)j(index.)44 b(When)32 b(called)f(with)g
+Fm(nil)h Fp(as)h(its)e(second)h(argumen)m(t,)i(the)e(function)f
+(returns)g(the)0 5225 y(\014rst)g(index)g(of)h(the)g(table)g(\(and)g
+(its)f(asso)s(ciated)i(v)-5 b(alue\).)45 b(When)32 b(called)f(with)g
+(the)h(last)g(index,)f(or)h(with)f Fm(nil)h Fp(in)0 5338
+y(an)e(empt)m(y)h(table,)g(it)e(returns)h Fm(nil)p Fp(.)1905
+5589 y(15)p eop
%%Page: 16 16
-16 15 bop -42 199 a Fo(The)23 b(function)e Fm(lua_ref)g
-Fo(creates)g(a)h(reference)g(to)g(the)f(ob)s(ject)h(whic)o(h)f(is)h(on)
-f(the)h(top)g(of)f(the)h(stac)o(k,)g(and)-42 256 y(returns)f(this)f
-(reference.)36 b(If)21 b Fm(lock)f Fo(is)g(true,)h(the)g(ob)s(ject)f
-(is)g Fn(lo)n(cke)n(d)p Fo(:)30 b(that)19 b(means)h(the)h(ob)s(ject)e
-(will)h(not)g(b)q(e)-42 312 y(garbage)g(collected.)35
-b(Notice)19 b(that)h(an)g(unlo)q(c)o(k)o(ed)g(reference)h(ma)o(y)e(b)q
-(e)i(garbage)e(collected.)35 b(Whenev)o(er)20 b(the)-42
-369 y(referenced)15 b(ob)s(ject)e(is)f(needed,)j(a)e(call)f(to)h
-Fm(lua_getref)f Fo(returns)h(a)g(handle)h(to)f(it,)f(while)h
-Fm(lua_pushref)f Fo(pushes)-42 425 y(the)k(ob)s(ject)g(on)g(the)g(stac)
-o(k.)21 b(If)16 b(the)g(ob)s(ject)f(has)h(b)q(een)h(collected,)e
-Fm(lua_getref)g Fo(returns)g Fm(LUA_NOOBJECT)p Fo(,)f(and)-42
-482 y Fm(lua_pushobject)g Fo(issues)h(an)g(error.)29
-538 y(When)h(a)f(reference)g(is)g(no)g(longer)g(needed,)h(it)e(can)i(b)
-q(e)g(freed)f(with)g(a)f(call)h(to)f Fm(lua_unref)p Fo(.)-42
-681 y Fp(6)67 b(Prede\014ned)24 b(F)-6 b(unctions)24
-b(and)f(Libraries)-42 783 y Fo(The)17 b(set)g(of)f(prede\014ned)i
-(functions)e(in)h(Lua)f(is)h(small)d(but)j(p)q(o)o(w)o(erful.)23
-b(Most)15 b(of)h(them)g(pro)o(vide)g(features)g(that)-42
-839 y(allo)o(ws)d(some)h(degree)g(of)h(re\015exivit)o(y)e(in)i(the)f
-(language.)19 b(Some)14 b(of)g(these)h(features)f(cannot)g(b)q(e)i(sim)
-o(ulated)c(with)-42 896 y(the)21 b(rest)f(of)g(the)h(Language)g(nor)f
-(with)g(the)h(standard)f(Lua)h(API.)f(Others)h(are)f(just)h(helpful)f
-(in)o(terfaces)g(to)-42 952 y(common)13 b(API)j(functions.)29
-1008 y(The)e(libraries,)e(on)i(the)f(other)g(hand,)h(pro)o(vide)g
-(useful)f(routines)g(that)g(are)h(implemen)o(ted)d(directly)i(through)
--42 1065 y(the)g(standard)f(API.)h(Therefore,)f(they)h(are)f(not)g
-(necessary)h(to)f(the)g(language,)g(and)h(are)f(pro)o(vided)h(as)f
-(separated)-42 1121 y(C)j(mo)q(dules.)k(Curren)o(tly)c(there)g(are)g
-(three)g(standard)g(libraries:)27 1215 y Fj(\017)22 b
-Fo(string)14 b(manipulation;)27 1309 y Fj(\017)22 b Fo(mathematical)11
-b(functions)k(\(sin,)g(cos,)f(etc\);)27 1403 y Fj(\017)22
-b Fo(input)15 b(and)h(output)f(\(plus)g(some)e(system)h(facilities\).)
--42 1497 y(In)j(order)f(to)g(ha)o(v)o(e)g(access)g(to)g(these)g
-(libraries,)f(the)h(host)g(program)e(m)o(ust)h(call)g(the)h(functions)g
-Fm(strlib_open)p Fo(,)-42 1553 y Fm(mathlib_open)p Fo(,)e(and)h
-Fm(iolib_open)p Fo(,)e(declared)j(in)f Fm(lualib.h)p
-Fo(.)-42 1675 y Fe(6.1)56 b(Prede\014ned)18 b(F)-5 b(unctions)-42
-1761 y Fm(dofile)24 b(\(filename\))-42 1846 y Fo(This)18
-b(function)g(receiv)o(es)g(a)f(\014le)h(name,)f(op)q(ens)i(it)e(and)h
-(executes)h(its)e(con)o(ten)o(ts)g(as)h(a)f(Lua)i(c)o(h)o(unk,)f(or)g
-(as)f(pre-)-42 1903 y(compiled)e(c)o(h)o(unks.)20 b(When)c(called)f
-(without)f(argumen)o(ts,)g(it)g(executes)i(the)g(con)o(ten)o(ts)e(of)h
-(the)h(standard)f(input.)-42 1959 y(It)i(returns)g(1)f(if)g(there)h
-(are)f(no)h(errors,)f Fl(nil)g Fo(otherwise.)23 b(It)17
-b(issues)f(an)h(error)f(when)h(called)f(with)g(a)h(non)f(string)-42
-2016 y(argumen)o(t.)-42 2136 y Fm(dostring)23 b(\(string\))-42
-2222 y Fo(This)e(function)h(executes)g(a)f(giv)o(en)g(string)f(as)h(a)g
-(Lua)h(c)o(h)o(unk.)38 b(It)22 b(returns)f(1)g(if)g(there)g(are)g(no)h
-(errors,)f Fl(nil)-42 2278 y Fo(otherwise.)-42 2398 y
-Fm(next)j(\(table,)f(index\))-42 2484 y Fo(This)18 b(function)f(allo)o
-(ws)f(a)i(program)d(to)i(tra)o(v)o(erse)g(all)g(\014elds)h(of)f(a)g
-(table.)27 b(Its)18 b(\014rst)f(argumen)o(t)f(is)i(a)f(table)g(and)-42
-2540 y(its)e(second)i(argumen)o(t)c(is)j(an)f(index)h(in)g(this)f
-(table.)21 b(It)15 b(returns)h(the)g(next)f(index)h(of)g(the)f(table)h
-(and)f(the)h(v)m(alue)-42 2597 y(asso)q(ciated)g(with)f(the)h(index.)23
-b(When)17 b(called)e(with)h Fl(nil)f Fo(as)g(its)h(second)g(argumen)o
-(t,)e(the)j(function)e(returns)h(the)911 2748 y(16)p
-eop
+16 15 bop 141 91 a Fp(In)32 b(Lua)f(there)i(is)e(no)h(declaration)g(of)
+g(\014elds;)g(seman)m(tically)-8 b(,)32 b(there)h(is)e(no)h
+(di\013erence)g(b)s(et)m(w)m(een)g(a)h(\014eld)e(not)0
+204 y(presen)m(t)i(in)e(a)i(table)f(or)g(a)h(\014eld)e(with)h(v)-5
+b(alue)32 b Fm(nil)p Fp(.)47 b(Therefore,)33 b(the)f(function)g(only)f
+(considers)g(\014elds)g(with)h(non)0 317 y(nil)c(v)-5
+b(alues.)40 b(The)30 b(order)g(the)h(indices)d(are)j(en)m(umerated)g
+(is)e(not)i(sp)s(eci\014ed,)e Fo(even)j(for)h(numeric)f(indic)-5
+b(es)p Fp(.)141 430 y(See)31 b(Section)f(8.2)h(for)g(an)f(example)g(of)
+g(the)h(use)f(of)h(this)e(function.)0 670 y Fk(\017)35
+b Fn(nextvar)46 b(\(name\))0 842 y Fp(This)40 b(function)g(is)h
+(similar)e(to)k(the)f(function)e Fn(next)p Fp(,)k(but)d(iterates)i(o)m
+(v)m(er)g(the)f(global)f(v)-5 b(ariables.)74 b(Its)41
+b(single)0 955 y(argumen)m(t)31 b(is)f(the)h(name)g(of)g(a)g(global)f
+(v)-5 b(ariable,)30 b(or)h Fm(nil)g Fp(to)g(get)h(a)f(\014rst)f(name.)
+42 b(Similarly)27 b(to)32 b Fn(next)p Fp(,)e(it)g(returns)0
+1068 y(the)k(name)g(of)g(another)g(v)-5 b(ariable)33
+b(and)g(its)h(v)-5 b(alue,)34 b(or)g Fm(nil)g Fp(if)f(there)h(are)g(no)
+g(more)g(v)-5 b(ariables.)50 b(See)34 b(Section)g(8.2)0
+1181 y(for)c(an)g(example)g(of)h(the)g(use)f(of)g(this)f(function.)0
+1421 y Fk(\017)35 b Fn(tostring)46 b(\(e\))0 1592 y Fp(This)29
+b(function)g(receiv)m(es)i(an)f(argumen)m(t)h(of)f(an)m(y)h(t)m(yp)s(e)
+g(and)e(con)m(v)m(erts)j(it)e(to)h(a)g(string)e(in)g(a)i(reasonable)f
+(format.)0 1832 y Fk(\017)35 b Fn(print)47 b(\(e1,)f(e2,)h(...\))0
+2004 y Fp(This)35 b(function)g(receiv)m(es)i(an)m(y)f(n)m(um)m(b)s(er)f
+(of)i(argumen)m(ts,)h(and)e(prin)m(ts)f(their)g(v)-5
+b(alues)36 b(in)f(a)h(reasonable)g(format.)0 2117 y(Eac)m(h)i(v)-5
+b(alue)37 b(is)f(prin)m(ted)g(in)h(a)g(new)g(line.)61
+b(This)35 b(function)h(is)h(not)g(in)m(tended)g(for)g(formatted)h
+(output,)h(but)e(as)0 2230 y(a)j(quic)m(k)e(w)m(a)m(y)j(to)f(sho)m(w)f
+(a)g(v)-5 b(alue,)42 b(for)d(instance)g(for)g(error)f(messages)j(or)e
+(debugging.)66 b(See)40 b(Section)f(6.4)h(for)0 2343
+y(functions)29 b(for)h(formatted)h(output.)0 2583 y Fk(\017)k
+Fn(tonumber)46 b(\(e\))0 2754 y Fp(This)19 b(function)g(receiv)m(es)j
+(one)f(argumen)m(t,)i(and)e(tries)f(to)h(con)m(v)m(ert)i(it)d(to)h(a)h
+(n)m(um)m(b)s(er.)36 b(If)20 b(the)h(argumen)m(t)g(is)f(already)h(a)0
+2867 y(n)m(um)m(b)s(er)g(or)h(a)g(string)f(con)m(v)m(ertible)h(to)h(a)f
+(n)m(um)m(b)s(er)f(\(see)i(Section)f(4.2\),)j(then)d(it)f(returns)g
+(that)i(n)m(um)m(b)s(er;)g(otherwise,)0 2980 y(it)30
+b(returns)f Fm(nil)p Fp(.)0 3220 y Fk(\017)35 b Fn(type)47
+b(\(v\))0 3392 y Fp(This)25 b(function)g(allo)m(ws)h(Lua)g(to)i(test)f
+(the)g(t)m(yp)s(e)g(of)f(a)h(v)-5 b(alue.)39 b(It)27
+b(receiv)m(es)g(one)g(argumen)m(t,)h(and)e(returns)g(its)g(t)m(yp)s(e,)
+0 3505 y(co)s(ded)38 b(as)h(a)g(string.)65 b(The)38 b(p)s(ossible)e
+(results)h(of)i(this)f(function)f(are)i Fn("nil")e Fp(\(a)j(string,)f
+(not)g(the)g(v)-5 b(alue)38 b Fm(nil)p Fp(\),)0 3618
+y Fn("number")p Fp(,)h Fn("string")p Fp(,)g Fn("table")p
+Fp(,)g Fn("function")d Fp(\(returned)i(b)s(oth)g(for)h(C)g(functions)e
+(and)h(Lua)h(functions\),)0 3731 y(and)30 b Fn("userdata")p
+Fp(.)141 3844 y(Besides)f(this)f(string,)g(the)i(function)d(returns)h
+(a)i(second)f(result,)f(whic)m(h)g(is)g(the)i Fo(tag)f
+Fp(of)g(the)h(v)-5 b(alue.)39 b(This)28 b(tag)0 3957
+y(can)g(b)s(e)e(used)h(to)h(distinguish)23 b(b)s(et)m(w)m(een)28
+b(user)f(data)h(with)d(di\013eren)m(t)i(tags,)i(and)e(b)s(et)m(w)m(een)
+h(C)f(functions)f(and)g(Lua)0 4069 y(functions.)0 4310
+y Fk(\017)35 b Fn(assert)46 b(\(v\))0 4481 y Fp(This)29
+b(function)g(issues)g(an)h Fo(\\assertion)k(faile)-5
+b(d!")41 b Fp(error)30 b(when)f(its)h(argumen)m(t)h(is)e
+Fm(nil)p Fp(.)0 4721 y Fk(\017)35 b Fn(error)47 b(\(message\))0
+4893 y Fp(This)41 b(function)h(issues)g(an)h(error)f(message)i(and)f
+(terminates)g(the)g(last)g(called)f(function)g(from)g(the)h(library)0
+5006 y(\()p Fn(lua_dofile)p Fp(,)28 b Fn(lua_dostring)p
+Fp(,)f(.)16 b(.)f(.)h(\).)41 b(It)30 b(nev)m(er)h(returns.)1905
+5589 y(16)p eop
%%Page: 17 17
-17 16 bop -42 199 a Fo(\014rst)16 b(index)g(of)g(the)g(table)g(\(and)f
-(its)h(asso)q(ciated)f(v)m(alue\).)22 b(When)17 b(called)e(with)h(the)g
-(last)f(index,)h(or)f(with)h Fl(nil)f Fo(in)-42 256 y(an)h(empt)o(y)e
-(table,)g(it)g(returns)h Fl(nil)p Fo(.)29 312 y(In)i(Lua)f(there)g(is)g
-(no)g(declaration)f(of)h(\014elds;)g(seman)o(tically)l(,)d(there)j(is)g
-(no)g(di\013erence)g(b)q(et)o(w)o(een)h(a)e(\014eld)i(not)-42
-369 y(presen)o(t)g(in)f(a)g(table)f(or)h(a)g(\014eld)h(with)e(v)m(alue)
-i Fl(nil)p Fo(.)22 b(Therefore,)16 b(the)g(function)g(only)g(considers)
-g(\014elds)h(with)e(non)-42 425 y(nil)g(v)m(alues.)20
-b(The)c(order)f(the)g(indices)g(are)g(en)o(umerated)f(is)h(not)g(sp)q
-(eci\014ed,)h Fn(even)f(for)i(numeric)f(indic)n(es)p
-Fo(.)29 482 y(See)g(Section)f(8.2)f(for)h(an)g(example)f(of)h(the)g
-(use)h(of)e(this)h(function.)-42 602 y Fm(nextvar)23
-b(\(name\))-42 687 y Fo(This)18 b(function)g(is)g(similar)d(to)i(the)i
-(function)f Fm(next)p Fo(,)f(but)i(it)e(iterates)g(o)o(v)o(er)g(the)h
-(global)f(v)m(ariables.)28 b(Its)18 b(single)-42 744
-y(argumen)o(t)c(is)h(the)h(name)e(of)h(a)g(global)f(v)m(ariable,)g(or)h
-Fl(nil)g Fo(to)g(get)g(a)g(\014rst)g(name.)k(Similarly)13
-b(to)h Fm(next)p Fo(,)h(it)g(returns)-42 800 y(the)j(name)e(of)g
-(another)h(v)m(ariable)f(and)h(its)f(v)m(alue,)i(or)e
-Fl(nil)g Fo(if)g(there)h(are)g(no)g(more)e(v)m(ariables.)25
-b(See)18 b(Section)e(8.2)-42 857 y(for)f(an)g(example)f(of)h(the)g(use)
-h(of)f(this)f(function.)-42 977 y Fm(tostring)23 b(\(e\))-42
-1063 y Fo(This)15 b(function)g(receiv)o(es)g(an)g(argumen)o(t)f(of)h
-(an)o(y)g(t)o(yp)q(e)g(and)g(con)o(v)o(erts)g(it)f(to)h(a)f(string)h
-(in)g(a)g(reasonable)f(format.)-42 1183 y Fm(print)24
-b(\(e1,)f(e2,)g(...\))-42 1269 y Fo(This)18 b(function)g(receiv)o(es)g
-(an)o(y)g(n)o(um)o(b)q(er)g(of)f(argumen)o(ts,)g(and)h(prin)o(ts)g
-(their)f(v)m(alues)i(in)f(a)g(reasonable)f(format.)-42
-1325 y(Eac)o(h)i(v)m(alue)g(is)f(prin)o(ted)h(in)f(a)h(new)g(line.)30
-b(This)18 b(function)h(is)f(not)g(in)o(tended)h(for)f(formatted)f
-(output,)i(but)g(as)-42 1381 y(a)h(quic)o(k)f(w)o(a)o(y)g(to)g(sho)o(w)
-g(a)g(v)m(alue,)i(for)e(instance)g(for)g(error)g(messages)f(or)h
-(debugging.)34 b(See)20 b(Section)f(6.4)g(for)-42 1438
-y(functions)c(for)g(formatted)e(output.)-42 1558 y Fm(tonumber)23
-b(\(e\))-42 1644 y Fo(This)13 b(function)f(receiv)o(es)g(one)h(argumen)
-o(t,)e(and)h(tries)g(to)g(con)o(v)o(ert)f(it)h(to)g(a)g(n)o(um)o(b)q
-(er.)18 b(If)13 b(the)g(argumen)o(t)d(is)i(already)-42
-1700 y(a)j(n)o(um)o(b)q(er)g(or)g(a)g(string)f(con)o(v)o(ertible)g(to)h
-(a)g(n)o(um)o(b)q(er)f(\(see)h(Section)h(4.2\),)d(it)i(returns)g(that)f
-(n)o(um)o(b)q(er;)h(otherwise,)-42 1757 y(it)g(returns)g
-Fl(nil)p Fo(.)-42 1877 y Fm(type)24 b(\(v\))-42 1963
-y Fo(This)13 b(function)h(allo)o(ws)d(Lua)j(to)e(test)h(the)g(t)o(yp)q
-(e)h(of)f(a)g(v)m(alue.)19 b(It)13 b(receiv)o(es)h(one)f(argumen)o(t,)f
-(and)h(returns)g(its)g(t)o(yp)q(e,)-42 2019 y(co)q(ded)21
-b(as)e(a)g(string.)31 b(The)19 b(p)q(ossible)g(results)g(of)g(this)g
-(function)g(are)g Fm("nil")g Fo(\(a)f(string,)h(not)g(the)h(v)m(alue)f
-Fl(nil)p Fo(\),)-42 2075 y Fm("number")p Fo(,)g Fm("string")p
-Fo(,)g Fm("table")p Fo(,)h Fm("function")e Fo(\(returned)h(b)q(oth)h
-(for)f(C)g(functions)g(and)h(Lua)f(functions\),)-42 2132
-y(and)d Fm("userdata")p Fo(.)29 2188 y(Besides)f(this)f(string,)f(the)i
-(function)f(returns)h(a)f(second)h(result,)f(whic)o(h)g(is)g(the)h
-Fn(tag)g Fo(of)f(the)g(v)m(alue.)20 b(This)14 b(tag)-42
-2245 y(can)g(b)q(e)h(used)f(to)f(distinguish)g(b)q(et)o(w)o(een)g(user)
-h(data)f(with)g(di\013eren)o(t)g(tags,)g(and)h(b)q(et)o(w)o(een)f(C)h
-(functions)f(and)h(Lua)-42 2301 y(functions.)-42 2421
-y Fm(assert)24 b(\(v\))-42 2507 y Fo(This)15 b(function)g(issues)g(an)g
-Fn(\\assertion)h(faile)n(d!")k Fo(error)15 b(when)h(its)e(argumen)o(t)f
-(is)i Fl(nil)p Fo(.)911 2748 y(17)p eop
+17 16 bop 0 91 a Fk(\017)35 b Fn(setglobal)46 b(\(name,)g(value\))0
+263 y Fp(This)35 b(function)h(assigns)f(the)i(giv)m(en)g(v)-5
+b(alue)37 b(to)g(a)g(global)f(v)-5 b(ariable.)59 b(The)37
+b(string)e Fn(name)h Fp(do)s(es)g(not)h(need)g(to)h(b)s(e)0
+376 y(a)33 b(syn)m(tactically)g(v)-5 b(alid)31 b(v)-5
+b(ariable)32 b(name.)48 b(Therefore,)33 b(this)f(function)g(can)h(set)g
+(global)f(v)-5 b(ariables)32 b(with)f(strange)0 489 y(names)f(lik)m(e)g
+Fn(`m)47 b(v)h(1')29 b Fp(or)i Fn(34)p Fp(.)40 b(It)30
+b(returns)f(the)i(v)-5 b(alue)30 b(of)g(its)g(second)h(argumen)m(t.)0
+729 y Fk(\017)k Fn(getglobal)46 b(\(name\))0 901 y Fp(This)41
+b(function)g(retriev)m(es)i(the)g(v)-5 b(alue)42 b(of)g(a)h(global)f(v)
+-5 b(ariable.)76 b(The)42 b(string)g Fn(name)f Fp(do)s(es)h(not)h(need)
+f(to)i(b)s(e)e(a)0 1013 y(syn)m(tactically)30 b(v)-5
+b(alid)29 b(v)-5 b(ariable)29 b(name.)0 1254 y Fk(\017)35
+b Fn(setfallback)45 b(\(fallbackname,)f(newfallback\))0
+1425 y Fp(This)23 b(function)h(sets)i(a)f(new)g(fallbac)m(k)g(function)
+f(to)h(the)h(giv)m(en)f(fallbac)m(k.)38 b(It)26 b(returns)e(the)h(old)f
+(fallbac)m(k)h(function.)0 1669 y Ff(6.2)112 b(String)37
+b(Manipulation)0 1840 y Fp(This)26 b(library)f(pro)m(vides)h(generic)i
+(functions)e(for)h(string)f(manipulation,)g(suc)m(h)h(as)h(\014nding)d
+(and)i(extracting)h(sub-)0 1953 y(strings)40 b(and)g(pattern)h(matc)m
+(hing.)72 b(When)41 b(indexing)d(a)j(string,)i(the)e(\014rst)f(c)m
+(haracter)j(has)d(p)s(osition)f(1.)73 b(See)0 2066 y(P)m(age)30
+b(19)f(for)g(an)f(explanation)f(ab)s(out)i(patterns,)g(and)e(Section)i
+(8.3)g(for)f(some)h(examples)f(on)h(string)e(manipula-)0
+2179 y(tion)j(in)f(Lua.)0 2419 y Fk(\017)35 b Fn(strfind)46
+b(\(str,)g(pattern)g([,)h(init)g([,)g(plain]]\))0 2591
+y Fp(This)35 b(function)g(lo)s(oks)h(for)g(the)h(\014rst)e
+Fo(match)j Fp(of)f Fn(pattern)d Fp(in)i Fn(str)p Fp(.)58
+b(If)36 b(it)g(\014nds)f(one,)j(it)e(returns)f(the)i(indexes)0
+2704 y(on)j Fn(str)f Fp(where)g(this)g(o)s(ccurence)i(starts)f(and)f
+(ends;)45 b(otherwise,)d(it)d(returns)g Fm(nil)p Fp(.)70
+b(If)39 b(the)h(pattern)g(sp)s(eci\014es)0 2817 y(captures,)32
+b(the)f(captured)h(strings)e(are)i(returned)e(as)h(extra)h(results.)43
+b(A)31 b(third)f(optional)h(n)m(umerical)e(argumen)m(t)0
+2929 y(sp)s(eci\014es)f(where)g(to)i(start)f(the)g(searc)m(h;)h(its)f
+(default)f(v)-5 b(alue)28 b(is)g(1.)41 b(A)29 b(v)-5
+b(alue)28 b(of)h(1)g(as)h(a)f(forth)f(optional)g(argumen)m(t)0
+3042 y(turns)h(o\013)i(the)f(pattern)h(matc)m(hing)f(facilities,)f(so)i
+(the)f(function)f(do)s(es)i(a)f(plain)f(\\\014nd)g(substring")g(op)s
+(eration.)0 3282 y Fk(\017)35 b Fn(strlen)46 b(\(s\))0
+3454 y Fp(Receiv)m(es)31 b(a)g(string)e(and)h(returns)f(its)h(length.)0
+3694 y Fk(\017)35 b Fn(strsub)46 b(\(s,)h(i)h([,)f(j]\))0
+3866 y Fp(Returns)32 b(another)g(string,)h(whic)m(h)e(is)g(a)i
+(substring)e(of)h Fn(s)p Fp(,)h(starting)f(at)i Fn(i)e
+Fp(and)g(runing)e(un)m(til)h Fn(j)p Fp(.)46 b(If)32 b
+Fn(j)h Fp(is)e(absen)m(t,)0 3979 y(it)d(is)g(assumed)f(to)j(b)s(e)e
+(equal)g(to)h(the)g(length)f(of)g Fn(s)p Fp(.)40 b(In)28
+b(particular,)f(the)i(call)f Fn(strsub\(s,1,j\))d Fp(returns)i(a)i
+(pre\014x)0 4092 y(of)i Fn(s)f Fp(with)f(length)g Fn(j)p
+Fp(,)i(whereas)f(the)g(call)g Fn(strsub\(s,i\))d Fp(returns)j(a)g
+(su\016x)g(of)g Fn(s)p Fp(,)h(starting)f(at)h Fn(i)p
+Fp(.)0 4332 y Fk(\017)k Fn(strlower)46 b(\(s\))0 4503
+y Fp(Receiv)m(es)26 b(a)g(string)f(and)g(returns)f(a)i(cop)m(y)g(of)f
+(that)h(string)f(with)f(all)g(upp)s(er)g(case)i(letters)g(c)m(hanged)g
+(to)g(lo)m(w)m(er)g(case.)0 4616 y(All)j(other)i(c)m(haracters)g(are)g
+(left)f(unc)m(hanged.)0 4856 y Fk(\017)35 b Fn(strupper)46
+b(\(s\))0 5028 y Fp(Receiv)m(es)26 b(a)g(string)f(and)g(returns)f(a)i
+(cop)m(y)g(of)f(that)h(string)f(with)f(all)g(lo)m(w)m(er)i(case)g
+(letters)g(c)m(hanged)g(to)g(upp)s(er)e(case.)0 5141
+y(All)29 b(other)i(c)m(haracters)g(are)g(left)f(unc)m(hanged.)1905
+5589 y(17)p eop
%%Page: 18 18
-18 17 bop -42 199 a Fm(error)24 b(\(message\))-42 285
-y Fo(This)e(function)f(issues)g(an)h(error)f(message)f(and)h
-(terminates)f(the)h(last)g(called)g(function)g(from)f(the)i(library)-42
-342 y(\()p Fm(lua_dofile)p Fo(,)14 b Fm(lua_dostring)p
-Fo(,)f(.)7 b(.)g(.)g(\).)20 b(It)15 b(nev)o(er)g(returns.)-42
-462 y Fm(setglobal)23 b(\(name,)g(value\))-42 547 y Fo(This)18
-b(function)h(assigns)e(the)i(giv)o(en)f(v)m(alue)g(to)g(a)g(global)f(v)
-m(ariable.)29 b(The)19 b(string)e Fm(name)h Fo(do)q(es)h(not)f(need)h
-(to)f(b)q(e)-42 604 y(a)f(syn)o(tactically)d(v)m(alid)i(v)m(ariable)g
-(name.)22 b(Therefore,)17 b(this)f(function)g(can)g(set)h(global)e(v)m
-(ariables)g(with)h(strange)-42 660 y(names)f(lik)o(e)f
-Fm(m)24 b(v)f(1)15 b Fo(or)g Fm(34)p Fo(.)20 b(It)15
-b(returns)g(the)g(v)m(alue)h(of)e(its)h(second)h(argumen)o(t.)-42
-780 y Fm(getglobal)23 b(\(name\))-42 866 y Fo(This)e(function)g
-(retriev)o(es)g(the)g(v)m(alue)h(of)f(a)g(global)f(v)m(ariable.)37
-b(The)22 b(string)e Fm(name)h Fo(do)q(es)g(not)g(need)h(to)f(b)q(e)h(a)
--42 923 y(syn)o(tactically)14 b(v)m(alid)g(v)m(ariable)h(name.)-42
-1043 y Fm(setfallback)23 b(\(fallbackname,)f(newfallback\))-42
-1128 y Fo(This)13 b(function)f(sets)g(a)h(new)f(fallbac)o(k)g(function)
-g(to)g(the)h(giv)o(en)f(fallbac)o(k.)18 b(It)12 b(returns)h(the)g(old)f
-(fallbac)o(k)f(function.)-42 1250 y Fe(6.2)56 b(String)19
-b(Manipulation)-42 1336 y Fo(This)j(library)e(pro)o(vides)i(generic)f
-(functions)h(for)f(string)g(manipulation,)f(suc)o(h)i(as)g(\014nding)g
-(and)g(extracting)-42 1392 y(substrings.)29 b(When)19
-b(indexing)f(a)g(string,)f(the)i(\014rst)f(c)o(haracter)f(has)h(p)q
-(osition)g(1.)29 b(See)19 b(Section)f(8.3)f(for)h(some)-42
-1449 y(examples)c(on)i(string)e(manipulation)f(in)i(Lua.)-42
-1569 y Fm(strfind)23 b(\(str,)h(substr,)e([init,)i([end]]\))-42
-1655 y Fo(Receiv)o(es)c(t)o(w)o(o)e(string)h(argumen)o(ts,)f(and)h
-(returns)g(a)g(n)o(um)o(b)q(er.)32 b(This)19 b(n)o(um)o(b)q(er)f
-(indicates)h(the)g(\014rst)g(p)q(osition)-42 1711 y(where)13
-b(the)f(second)h(argumen)o(t)e(app)q(ears)h(in)g(the)g(\014rst)g
-(argumen)o(t.)17 b(If)c(the)f(second)h(argumen)o(t)d(is)i(not)g(a)g
-(substring)-42 1768 y(of)j(the)g(\014rst)g(one,)f(then)i
-Fm(strfind)e Fo(returns)h Fl(nil)p Fo(.)j(A)e(third)e(optional)g(n)o
-(umerical)f(argumen)o(t)g(sp)q(eci\014es)j(where)f(to)-42
-1824 y(start)f(the)i(searc)o(h.)j(Another)d(optional)d(n)o(umerical)h
-(argumen)o(t)f(sp)q(eci\014es)j(where)g(to)e(stop)h(it.)-42
-1944 y Fm(strlen)24 b(\(s\))-42 2030 y Fo(Receiv)o(es)16
-b(a)f(string)f(and)i(returns)f(its)f(length.)-42 2150
-y Fm(strsub)24 b(\(s,)f(i,)h([j]\))-42 2236 y Fo(Returns)17
-b(another)f(string,)f(whic)o(h)h(is)g(a)g(substring)g(of)g
-Fm(s)p Fo(,)g(starting)e(at)i Fm(i)g Fo(and)g(runing)g(un)o(til)g
-Fm(j)p Fo(.)23 b(If)16 b Fm(j)g Fo(is)g(absen)o(t,)-42
-2292 y(it)f(is)g(assumed)g(to)f(b)q(e)i(equal)g(to)e(the)i(length)f(of)
-g Fm(s)p Fo(.)20 b(P)o(articularly)l(,)13 b(the)j(call)e
-Fm(strsub\(s,1,j\))g Fo(returns)h(a)g(pre\014x)-42 2349
-y(of)g Fm(s)g Fo(with)g(length)g Fm(j)p Fo(,)f(while)h(the)g(call)g
-Fm(strsub\(s,i\))e Fo(returns)i(a)g(su\016x)g(of)g Fm(s)p
-Fo(,)g(starting)e(at)i Fm(i)p Fo(.)-42 2469 y Fm(strlower)23
-b(\(s\))-42 2555 y Fo(Receiv)o(es)14 b(a)e(string)g(and)h(returns)f(a)h
-(cop)o(y)f(of)h(that)f(string)f(with)h(all)g(upp)q(er)i(case)f(letters)
-e(c)o(hanged)i(to)f(lo)o(w)o(er)g(case.)-42 2611 y(All)j(other)g(c)o
-(haracters)f(are)h(left)g(unc)o(hanged.)911 2748 y(18)p
-eop
+18 17 bop 0 91 a Fk(\017)35 b Fn(strrep)46 b(\(s,)h(n\))0
+263 y Fp(Returns)29 b(a)i(string)f(whic)m(h)f(is)g(the)i(concatenation)
+g(of)g Fn(n)f Fp(copies)g(of)h(the)f(string)g Fn(s)p
+Fp(.)0 503 y Fk(\017)35 b Fn(ascii)47 b(\(s)g([,)g(i]\))0
+675 y Fp(Returns)29 b(the)i(ascii)f(co)s(de)g(of)h(the)f(c)m(haracter)i
+Fn(s[i])p Fp(.)40 b(If)30 b Fn(i)g Fp(is)f(absen)m(t,)i(then)f(it)g(is)
+g(assumed)f(to)i(b)s(e)f(1.)0 915 y Fk(\017)35 b Fn(format)46
+b(\(formatstring,)e(e1,)j(e2,)g(...\))0 1086 y Fp(This)25
+b(function)h(returns)g(a)h(formated)g(v)m(ersion)g(of)g(its)f(v)-5
+b(ariable)26 b(n)m(um)m(b)s(er)g(of)h(argumen)m(ts)g(follo)m(wing)f
+(the)h(descrip-)0 1199 y(tion)i(giv)m(en)h(in)e(its)h(\014rst)g
+(argumen)m(t)h(\(whic)m(h)f(m)m(ust)g(b)s(e)g(a)h(string\).)40
+b(The)29 b(format)h(string)f(follo)m(ws)g(the)g(same)h(rules)0
+1312 y(as)h(the)f Fn(printf)f Fp(family)g(of)h(standard)g(C)g
+(functions.)40 b(The)30 b(only)f(di\013erences)h(are)h(that)g(the)f
+(options/mo)s(di\014ers)0 1425 y Fn(*)p Fp(,)42 b Fn(l)p
+Fp(,)f Fn(L)p Fp(,)e Fn(n)p Fp(,)j Fn(p)p Fp(,)f(and)e
+Fn(h)g Fp(are)h(not)g(supp)s(orted,)g(and)e(there)i(is)e(an)i(extra)g
+(option,)h Fn(q)p Fp(.)68 b(This)37 b(option)i(formats)h(a)0
+1538 y(string)27 b(in)f(a)i(form)g(suitable)e(to)i(b)s(e)g(safely)f
+(read)h(bac)m(k)g(b)m(y)g(the)g(Lua)f(in)m(terpreter;)h(that)h(is,)e
+(the)h(string)f(is)g(written)0 1651 y(b)s(et)m(w)m(een)34
+b(double)e(quotes,)j(and)e(all)g(double)f(quotes,)j(returns)d(and)h
+(bac)m(kslashes)h(in)e(the)i(string)f(are)h(correctly)0
+1764 y(escap)s(ed)c(when)g(written.)40 b(F)-8 b(or)31
+b(instance,)f(the)h(call)0 1952 y Fn(format\('\045q',)44
+b('a)k(string)e(with)g("quotes")g(and)h(\\n)g(new)g(line'\))0
+2139 y Fp(will)28 b(pro)s(duce)h(the)h(string:)0 2327
+y Fn("a)47 b(string)f(with)h(\\"quotes\\")e(and)i(\\)48
+2440 y(new)g(line")141 2627 y Fp(The)29 b(options)g Fn(c)p
+Fp(,)g Fn(d)p Fp(,)h Fn(E)p Fp(,)f Fn(e)p Fp(,)h Fn(f)p
+Fp(,)f Fn(g)g(i)p Fp(,)h Fn(o)p Fp(,)f Fn(u)p Fp(,)h
+Fn(X)p Fp(,)f(and)g Fn(x)g Fp(all)f(exp)s(ect)i(a)g(n)m(um)m(b)s(er)e
+(as)i(argumen)m(t,)g(whereas)f Fn(q)g Fp(and)g Fn(s)0
+2740 y Fp(exp)s(ect)i(a)g(string.)0 2980 y Fk(\017)k
+Fn(gsub)47 b(\(s,)g(pat,)f(repl)h([,)g(n]\))0 3152 y
+Fp(Returns)37 b(a)h(cop)m(y)h(of)f Fn(s)p Fp(,)i(where)e(all)f(o)s
+(ccurrences)h(of)g(the)g(pattern)g Fn(pat)f Fp(ha)m(v)m(e)j(b)s(een)d
+(replaced)g(b)m(y)h(a)h(replace-)0 3265 y(men)m(t)34
+b(string)e(sp)s(eci\014ed)g(b)m(y)i Fn(repl)p Fp(.)49
+b(This)31 b(function)i(also)g(returns,)g(as)h(a)g(second)g(v)-5
+b(alue,)34 b(the)f(total)i(n)m(um)m(b)s(er)d(of)0 3378
+y(substitutions)c(made.)141 3491 y(If)h Fn(repl)f Fp(is)g(a)h(string,)g
+(its)f(v)-5 b(alue)29 b(is)f(used)g(for)h(replacemen)m(t.)41
+b(An)m(y)29 b(sequence)h(in)e Fn(repl)g Fp(of)h(the)g(form)g
+Fn(\045n)f Fp(with)0 3604 y Fn(n)i Fp(b)s(et)m(w)m(een)h(1)g(and)f(9)g
+(stands)g(for)g(the)h(v)-5 b(alue)30 b(of)g(the)h(n-th)f(captured)g
+(substring.)141 3717 y(If)44 b Fn(repl)f Fp(is)g(a)i(function,)i(this)c
+(function)g(is)g(called)h(ev)m(ery)h(time)f(a)g(matc)m(h)h(o)s(ccurs,)j
+(with)43 b(all)g(captured)0 3829 y(substrings)f(as)i(parameters.)82
+b(If)43 b(the)h(v)-5 b(alue)44 b(returned)f(b)m(y)g(this)g(function)g
+(is)g(a)h(string,)j(it)c(is)g(used)h(as)g(the)0 3942
+y(replacemen)m(t)31 b(string;)e(otherwise,)h(the)h(replacemen)m(t)g
+(string)e(is)h(the)g(empt)m(y)h(string.)141 4055 y(An)h(optional)g
+(parameter)g Fn(n)g Fp(limits)e(the)j(maxim)m(um)e(n)m(um)m(b)s(er)g
+(of)i(substitutions)c(to)34 b(o)s(ccur.)46 b(F)-8 b(or)33
+b(instance,)0 4168 y(when)c Fn(n)h Fp(is)g(1)h(only)e(the)i(\014rst)e
+(o)s(ccurrence)i(of)f Fn(pat)g Fp(is)f(replaced.)141
+4281 y(As)24 b(an)f(example,)i(in)d(the)i(follo)m(wing)e(expression)g
+(eac)m(h)j(o)s(ccurrence)f(of)f(the)h(form)f Fn($name$)f
+Fp(calls)h(the)g(function)0 4394 y Fn(getenv)p Fp(,)32
+b(passing)f Fn(name)g Fp(as)i(argumen)m(t)g(\(b)s(ecause)g(only)f(this)
+f(part)i(of)f(the)h(pattern)g(is)e(captured\).)47 b(The)32
+b(v)-5 b(alue)0 4507 y(returned)29 b(b)m(y)h Fn(getenv)f
+Fp(will)f(replace)i(the)h(pattern.)41 b(Therefore,)30
+b(the)h(whole)e(expression:)95 4695 y Fn(gsub\("home)45
+b(=)j($HOME$,)e(user)g(=)i($USER$",)d("$\(\045w\045w*\)$",)g(getenv\))0
+4882 y Fp(ma)m(y)31 b(return)e(the)i(string:)0 5070 y
+Fn(home)47 b(=)g(/home/roberto,)d(user)j(=)g(roberto)1905
+5589 y Fp(18)p eop
%%Page: 19 19
-19 18 bop -42 199 a Fm(strupper)23 b(\(s\))-42 285 y
-Fo(Receiv)o(es)14 b(a)e(string)g(and)h(returns)f(a)h(cop)o(y)f(of)h
-(that)f(string)f(with)h(all)g(lo)o(w)o(er)f(case)i(letters)f(c)o
-(hanged)h(to)f(upp)q(er)i(case.)-42 342 y(All)h(other)g(c)o(haracters)f
-(are)h(left)g(unc)o(hanged.)-42 462 y Fm(ascii)24 b(\(s,)f([i]\))-42
-547 y Fo(Returns)16 b(the)f(ascii)g(co)q(de)h(of)e(the)i(c)o(haracter)e
-Fm(s[i])p Fo(.)19 b(If)d Fm(i)f Fo(is)g(absen)o(t,)f(it)h(is)f(assumed)
-h(to)f(b)q(e)i(1.)-42 667 y Fm(format)24 b(\(formatstring,)d(e1,)j(e2,)
-f(...\))-42 753 y Fo(This)14 b(function)f(returns)g(a)h(formated)d(v)o
-(ersion)i(of)g(its)g(v)m(ariable)g(n)o(um)o(b)q(er)f(of)i(argumen)o(ts)
-d(follo)o(wing)g(the)j(descrip-)-42 810 y(tion)h(giv)o(en)f(in)h(its)f
-(\014rst)g(argumen)o(t)f(\(whic)o(h)h(m)o(ust)g(b)q(e)h(a)g(string\).)j
-(The)d(format)e(string)g(follo)o(ws)g(the)i(same)f(rules)-42
-866 y(as)g(the)h Fm(printf)e Fo(family)f(of)i(standard)g(C)g
-(functions.)19 b(The)c(only)f(di\013erencies)g(are)g(that)f(the)i
-(options/mo)q(di\014ers)-42 923 y Fm(*)p Fo(,)f Fm(l)p
-Fo(,)g Fm(L)p Fo(,)f Fm(n)p Fo(,)h Fm(p)p Fo(,)g(and)g
-Fm(h)g Fo(are)f(not)h(supp)q(orted,)g(and)g(there)g(is)g(an)g(extra)f
-(option,)g Fm(q)p Fo(.)19 b(This)14 b(option)f(formats)f(a)h(string)-42
-979 y(in)19 b(a)f(form)f(suitable)h(to)g(b)q(e)i(safely)e(read)g(bac)o
-(k)h(b)o(y)f(the)h(Lua)g(in)o(terpreter.)30 b(The)19
-b(string)e(is)h(written)g(b)q(et)o(w)o(een)-42 1036 y(double)g(quotes,)
-f(and)h(all)e(double)i(quotes,)f(returns)g(and)g(bac)o(kslashes)g(in)g
-(the)h(string)e(are)h(correctly)f(escap)q(ed)-42 1092
-y(when)g(written.)29 1148 y(The)k(options)e Fm(c)p Fo(,)i
-Fm(d)p Fo(,)g Fm(E)p Fo(,)e Fm(e)p Fo(,)i Fm(f)p Fo(,)g
-Fm(g)f(i)p Fo(,)h Fm(o)p Fo(,)g Fm(u)p Fo(,)g Fm(X)p
-Fo(,)e(and)i Fm(x)f Fo(all)f(exp)q(ect)i(a)f(n)o(um)o(b)q(er)g(argumen)
-o(t,)f(while)h Fm(q)g Fo(and)h Fm(s)-42 1205 y Fo(exp)q(ects)c(a)f
-(string.)-42 1327 y Fe(6.3)56 b(Mathematical)20 b(F)-5
-b(unctions)-42 1412 y Fo(This)13 b(library)f(is)h(an)g(in)o(terface)f
-(to)h(some)e(functions)i(of)g(the)g(standard)g(C)g(math)e(library)l(.)
-19 b(Moreo)o(v)o(er,)11 b(it)i(registers)-42 1469 y(a)i(fallbac)o(k)f
-(for)h(the)g(binary)g(op)q(erator)f Fm(^)h Fo(whic)o(h,)g(when)h
-(applied)f(to)f(n)o(um)o(b)q(ers)h Fm(x^y)p Fo(,)f(returns)h
-Fd(x)1619 1452 y Fc(y)1640 1469 y Fo(.)29 1525 y(The)g(library)f(pro)o
-(vides)h(the)g(follo)o(wing)e(functions:)-42 1619 y Fm(abs)24
-b(acos)f(asin)h(atan)f(atan2)g(ceil)g(cos)h(floor)f(log)g(log10)-42
-1676 y(max)h(min)47 b(mod)h(sin)f(sqrt)23 b(tan)h(random)f(randomseed)
--42 1769 y Fo(Most)17 b(of)g(them)g(are)g(only)g(in)o(terfaces)g(to)g
-(the)g(homon)o(ymous)e(functions)j(in)f(the)h(C)f(library)l(,)g(except)
-h(that,)f(for)-42 1826 y(the)f(trigonometri)o(c)d(functions,)h(all)h
-(angles)f(are)h(expressed)h(in)f(degrees.)29 1882 y(The)d(function)f
-Fm(max)g Fo(returns)g(the)g(maxim)o(um)d(v)m(alue)j(of)g(its)f(n)o
-(umeric)h(argumen)o(ts.)16 b(Similarly)l(,)9 b Fm(min)i
-Fo(computes)-42 1939 y(the)16 b(minim)o(um)o(.)h(Both)e(can)g(b)q(e)h
-(used)g(with)e(an)h(unlimited)f(n)o(um)o(b)q(er)g(of)h(argumen)o(ts.)29
-1995 y(The)g(function)h Fm(mod)e Fo(is)h(equiv)m(alen)o(t)g(to)f(the)i
-Fm(\045)f Fo(op)q(erator)f(in)h(C.)29 2052 y(The)f(functions)g
-Fm(random)f Fo(and)h Fm(randomseed)f Fo(are)h(in)o(terfaces)f(to)g(the)
-h(simple)f(random)g(generator)g(functions)-42 2108 y
-Fm(rand)18 b Fo(and)h Fm(srand)p Fo(,)f(pro)o(vided)g(b)o(y)g(ANSI)h
-(C.)f(The)h(function)f Fm(random)f Fo(returns)h(pseudo-random)g(n)o(um)
-o(b)q(ers)g(in)-42 2165 y(the)e(range)f([0)p Fd(;)8 b
-Fo(1\).)-42 2286 y Fe(6.4)56 b(I/O)19 b(F)-5 b(acilities)-42
-2372 y Fo(All)20 b(I/O)g(op)q(erations)f(in)h(Lua)g(are)f(done)i(o)o(v)
-o(er)e(t)o(w)o(o)f Fn(curr)n(ent)i Fo(\014les,)g(one)g(for)g(reading)f
-(and)h(one)g(for)f(writing.)-42 2429 y(Initially)l(,)14
-b(the)h(curren)o(t)g(input)h(\014le)f(is)g Fm(stdin)p
-Fo(,)f(and)h(the)g(curren)o(t)g(output)g(\014le)h(is)e
-Fm(stdout)p Fo(.)29 2485 y(Unless)h(otherwise)g(stated,)f(all)g(I/O)i
-(functions)f(return)g(1)g(on)g(success)h(and)f Fl(nil)f
-Fo(on)h(failure.)911 2748 y(19)p eop
+19 18 bop 0 91 a Fm(P)m(atterns)0 263 y(Character)52
+b(Class:)90 b Fp(a)46 b Fo(char)-5 b(acter)49 b(class)d
+Fp(is)e(used)h(to)h(represen)m(t)g(a)g(set)g(of)f(c)m(haracters.)88
+b(The)44 b(follo)m(wing)0 376 y(com)m(binations)30 b(are)g(allo)m(w)m
+(ed)h(in)e(describing)f(a)i(c)m(haracter)i(class:)0 563
+y Fo(x)46 b Fp(\(where)30 b Fo(x)g Fp(is)g(an)m(y)g(c)m(haracter)i(not)
+f(in)e(the)i(list)e Fn(\(\)\045.[*?)p Fp(\))f(|)j(represen)m(ts)f(the)h
+(c)m(haracter)g Fo(x)g Fp(itself.)0 751 y Fn(.)45 b Fp(|)30
+b(represen)m(ts)h(all)e(c)m(haracters.)0 939 y Fn(\045a)45
+b Fp(|)30 b(represen)m(ts)g(all)g(letters.)0 1126 y Fn(\045A)45
+b Fp(|)30 b(represen)m(ts)g(all)g(non)f(letter)i(c)m(haracters.)0
+1314 y Fn(\045d)45 b Fp(|)30 b(represen)m(ts)g(all)g(digits.)0
+1502 y Fn(\045D)45 b Fp(|)30 b(represen)m(ts)g(all)g(non)f(digits.)0
+1689 y Fn(\045l)45 b Fp(|)30 b(represen)m(ts)g(all)g(lo)m(w)m(er)g
+(case)i(letters.)0 1877 y Fn(\045L)45 b Fp(|)30 b(represen)m(ts)g(all)g
+(non)f(lo)m(w)m(er)i(case)g(letter)g(c)m(haracters.)0
+2065 y Fn(\045s)45 b Fp(|)30 b(represen)m(ts)g(all)g(space)h(c)m
+(haracters.)0 2252 y Fn(\045S)45 b Fp(|)30 b(represen)m(ts)g(all)g(non)
+f(space)i(c)m(haracters.)0 2440 y Fn(\045u)45 b Fp(|)30
+b(represen)m(ts)g(all)g(upp)s(er)e(case)j(letters.)0
+2627 y Fn(\045U)45 b Fp(|)30 b(represen)m(ts)g(all)g(non)f(upp)s(er)g
+(case)i(letter)g(c)m(haracters.)0 2815 y Fn(\045w)45
+b Fp(|)30 b(represen)m(ts)g(all)g(alphan)m(umeric)e(c)m(haracters.)0
+3003 y Fn(\045W)45 b Fp(|)30 b(represen)m(ts)g(all)g(non)f(alphan)m
+(umeric)g(c)m(haracters.)0 3190 y Fn(\045)p Fo(x)45 b
+Fp(\(where)31 b Fo(x)f Fp(is)f(an)m(y)i(non)f(alphan)m(umeric)e(c)m
+(haracter\))33 b(|)d(represen)m(ts)g(the)h(c)m(haracter)h
+Fo(x)p Fp(.)0 3378 y Fn([char-set])43 b Fp(|)27 b(Represen)m(ts)g(the)g
+(class)g(whic)m(h)f(is)g(the)h(union)f(of)h(all)f(c)m(haracters)j(in)c
+(c)m(har-set.)41 b(T)-8 b(o)28 b(include)d(a)i Fn(])227
+3491 y Fp(in)21 b(c)m(har-set,)26 b(it)21 b(m)m(ust)i(b)s(e)e(the)i
+(\014rst)e(c)m(haracter.)40 b(A)22 b(range)h(of)f(c)m(haracters)i(ma)m
+(y)f(b)s(e)e(sp)s(eci\014ed)g(b)m(y)h(separating)227
+3604 y(the)35 b(end)f(c)m(haracters)i(of)f(the)g(range)g(with)e(a)i
+Fn(-)p Fp(;)i(e.g.,)g Fn(A-Z)d Fp(sp)s(eci\014es)f(the)i(upp)s(er)d
+(case)k(c)m(haracters.)55 b(If)34 b Fn(-)227 3717 y Fp(app)s(ears)43
+b(as)g(the)g(\014rst)g(or)g(last)g(c)m(haracter)h(of)f(c)m(har-set,)48
+b(then)43 b(it)g(represen)m(ts)g(itself.)77 b(All)42
+b(classes)h Fn(\045)p Fo(x)227 3830 y Fp(describ)s(ed)31
+b(ab)s(o)m(v)m(e)i(can)g(also)g(b)s(e)f(used)f(as)i(comp)s(onen)m(ts)g
+(in)e(a)i(c)m(har-set.)48 b(All)31 b(other)i(c)m(haracters)h(in)d(c)m
+(har-)227 3942 y(set)g(represen)m(t)g(themselv)m(es.)0
+4130 y Fn([^char-set])42 b Fp(|)31 b(represen)m(ts)f(the)h(complemen)m
+(t)f(of)h(c)m(har-set,)h(where)d(c)m(har-set)j(is)e(in)m(terpreted)f
+(as)i(ab)s(o)m(v)m(e.)0 4370 y Fm(P)m(attern)39 b(Item:)89
+b Fp(a)35 b Fo(p)-5 b(attern)38 b(item)c Fp(ma)m(y)h(b)s(e)e(a)i
+(single)e(c)m(haracter)j(class,)f(or)f(a)h(c)m(haracter)g(class)f
+(follo)m(w)m(ed)g(b)m(y)0 4483 y Fn(*)j Fp(or)g(b)m(y)h
+Fn(?)p Fp(.)61 b(A)37 b(single)f(c)m(haracter)j(class)f(matc)m(hes)g
+(an)m(y)g(single)e(c)m(haracter)j(in)d(the)h(class.)62
+b(A)37 b(c)m(haracter)i(class)0 4596 y(follo)m(w)m(ed)33
+b(b)m(y)g Fn(*)f Fp(matc)m(hes)j(0)e(or)g(more)h(rep)s(etitions)d(of)i
+(c)m(haracters)i(in)d(the)h(class.)49 b(A)33 b(c)m(haracter)h(class)f
+(follo)m(w)m(ed)0 4709 y(b)m(y)27 b Fn(?)g Fp(matc)m(hes)h(0)g(or)f
+(one)h(o)s(ccurrence)f(of)g(a)h(c)m(haracter)h(in)d(the)h(class.)40
+b(A)27 b(pattern)g(item)g(ma)m(y)h(also)f(has)g(the)g(form)0
+4822 y Fn(\045n)p Fp(,)j(for)g Fn(n)g Fp(b)s(et)m(w)m(een)h(1)g(and)f
+(9;)h(suc)m(h)f(item)g(matc)m(hes)h(a)g(sub-string)e(equal)h(to)h(the)f
+(n-th)g(captured)g(string.)1905 5589 y(19)p eop
%%Page: 20 20
-20 19 bop -42 199 a Fm(readfrom)23 b(\(filename\))-42
-285 y Fo(This)e(function)g(op)q(ens)g(a)g(\014le)g(named)f
-Fm(filename)g Fo(and)h(sets)g(it)f(as)h(the)g Fn(curr)n(ent)f
-Fo(input)h(\014le.)38 b(When)21 b(called)-42 342 y(without)c
-(parameters,)e(this)i(function)g(closes)f(the)i(curren)o(t)f(input)g
-(\014le,)g(and)h(restores)e Fm(stdin)h Fo(as)f(the)i(curren)o(t)-42
-398 y(input)e(\014le.)29 454 y Fn(System)f(dep)n(endent:)k
-Fo(if)13 b Fm(filename)h Fo(starts)e(with)i(a)g Fm(|)p
-Fo(,)g(then)g(a)g(pip)q(ed)h(input)g(is)e(op)q(en,)i(via)e(function)i
-Fm(popen)p Fo(.)-42 574 y Fm(writeto)23 b(\(filename\))-42
-660 y Fo(This)d(function)g(op)q(ens)g(a)f(\014le)h(named)f
-Fm(filename)g Fo(and)h(sets)g(it)f(as)g(the)h Fn(curr)n(ent)g
-Fo(output)f(\014le.)34 b(Notice)20 b(that,)-42 717 y(if)g(the)g(\014le)
-f(already)h(exists,)f(it)h(will)e(b)q(e)i Fn(c)n(ompletely)g(er)n(ase)n
-(d)g Fo(with)f(this)g(op)q(eration.)33 b(When)20 b(called)f(without)-42
-773 y(parameters,)13 b(this)i(function)g(closes)f(the)h(curren)o(t)g
-(output)g(\014le,)g(and)g(restores)f Fm(stdout)g Fo(as)h(the)g(curren)o
-(t)g(output)-42 829 y(\014le.)29 886 y Fn(System)e(dep)n(endent:)18
-b Fo(if)12 b Fm(filename)f Fo(starts)g(with)h(a)g Fm(|)p
-Fo(,)g(then)h(a)f(pip)q(ed)h(output)g(is)e(op)q(en,)j(via)d(function)i
-Fm(popen)p Fo(.)-42 1006 y Fm(appendto)23 b(\(filename\))-42
-1091 y Fo(This)11 b(function)g(op)q(ens)h(a)f(\014le)g(named)f
-Fm(filename)g Fo(and)i(sets)f(it)f(as)h(the)g Fn(curr)n(ent)g
-Fo(output)g(\014le.)19 b(Unlik)o(e)10 b(the)h Fm(writeto)-42
-1148 y Fo(op)q(eration,)k(this)f(function)h(do)q(es)h(not)f(erase)g(an)
-o(y)f(previous)h(con)o(ten)o(t)g(of)g(the)g(\014le.)-42
-1268 y Fm(remove)24 b(\(filename\))-42 1354 y Fo(This)15
-b(function)g(deletes)h(the)f(\014le)g(with)g(the)g(giv)o(en)g(name.)-42
-1473 y Fm(rename)24 b(\(name1,)e(name2\))-42 1559 y Fo(This)15
-b(function)g(renames)f(\014le)i Fm(name1)e Fo(to)h Fm(name2)p
-Fo(.)-42 1679 y Fm(tmpname)23 b(\(\))-42 1765 y Fo(This)15
-b(function)g(returns)g(a)g(string)f(with)h(a)g(\014le)g(name)f(that)h
-(can)g(safely)g(b)q(e)g(used)h(for)f(a)g(temp)q(orary)e(\014le.)-42
-1885 y Fm(read)24 b(\([format]\))-42 1970 y Fo(This)17
-b(function)g(returns)f(a)h(v)m(alue)g(read)g(from)e(the)i(curren)o(t)g
-(input.)25 b(An)17 b(optional)f(string)g(argumen)o(t)f(sp)q(eci\014es)
--42 2027 y(the)h(w)o(a)o(y)e(the)h(input)g(is)g(in)o(terpreted.)29
-2083 y(Without)d(a)h(format)d(argumen)o(t,)h Fm(read)i
-Fo(\014rst)f(skips)h(blanks,)g(tabs)f(and)h(newlines.)19
-b(Then)14 b(it)e(c)o(hec)o(ks)h(whether)-42 2140 y(the)h(curren)o(t)f
-(c)o(haracter)f(is)h Fm(")g Fo(or)f Fm(')p Fo(.)19 b(If)14
-b(so,)e(it)h(reads)g(a)f(string)g(up)i(to)f(the)g(ending)g(quotation)f
-(mark,)f(and)j(returns)-42 2196 y(this)h(string,)f(without)g(the)h
-(quotation)f(marks.)k(Otherwise)d(it)g(reads)g(up)h(to)e(a)h(blank,)g
-(tab)f(or)h(newline.)29 2253 y(The)g(format)e(string)i(can)g(ha)o(v)o
-(e)g(the)g(follo)o(wing)e(format:)30 2345 y Fm(?[n])-42
-2438 y Fo(where)j Fm(?)f Fo(can)g(b)q(e:)-42 2530 y Fl('s')i(or)g('S')k
-Fo(to)15 b(read)g(a)g(string;)-42 2623 y Fl('f)5 b(')17
-b(or)g('F')22 b Fo(to)14 b(read)h(a)g(real)g(n)o(um)o(b)q(er;)911
-2748 y(20)p eop
+20 19 bop 0 91 a Fm(P)m(attern:)91 b Fp(a)32 b Fo(p)-5
+b(attern)34 b Fp(is)d(a)i(sequence)f(of)g(pattern)h(items.)45
+b(An)m(y)32 b(rep)s(etition)f(item)h(\()p Fn(*)p Fp(\))g(inside)e(a)i
+(pattern)h(will)0 204 y(alw)m(a)m(ys)f(matc)m(h)g(the)g(longest)f(p)s
+(ossible)e(sequence.)44 b(A)32 b Fn(^)f Fp(at)h(the)f(b)s(eginning)e
+(of)j(a)f(pattern)h(anc)m(hors)f(the)h(matc)m(h)0 317
+y(at)i(the)f(b)s(eginning)d(of)j(the)g(sub)5 b(ject)32
+b(string.)48 b(A)33 b Fn($)f Fp(at)i(the)f(end)f(of)h(a)g(pattern)g
+(anc)m(hors)g(the)g(matc)m(h)h(at)g(the)f(end)0 430 y(of)e(the)f(sub)5
+b(ject)30 b(string.)141 543 y(A)35 b(pattern)g(ma)m(y)h(con)m(tain)g
+(sub-patterns)e(enclosed)h(in)e(paren)m(theses,)k(that)f(describ)s(e)d
+Fo(c)-5 b(aptur)g(es)p Fp(.)57 b(When)35 b(a)0 656 y(matc)m(h)g
+(succeeds,)h(the)f(sub-strings)d(of)j(the)g(sub)5 b(ject)34
+b(string)f(that)i(matc)m(h)h(captures)e(are)h Fo(c)-5
+b(aptur)g(e)g(d)37 b Fp(for)d(future)0 769 y(use.)40
+b(Captures)30 b(are)h(n)m(um)m(b)s(ered)e(according)h(to)h(their)f
+(left)g(paren)m(theses.)0 1012 y Ff(6.3)112 b(Mathematical)36
+b(F)-9 b(unctions)0 1184 y Fp(This)24 b(library)g(is)h(an)i(in)m
+(terface)f(to)h(some)g(functions)e(of)h(the)g(standard)g(C)g(math)g
+(library)-8 b(.)37 b(Moreo)m(v)m(er,)29 b(it)d(registers)0
+1297 y(a)31 b(fallbac)m(k)f(for)g(the)g(binary)f(op)s(erator)i
+Fn(^)f Fp(whic)m(h,)f(when)g(applied)g(to)i(n)m(um)m(b)s(ers)e
+Fn(x^y)p Fp(,)g(returns)g Fe(x)3321 1264 y Fd(y)3363
+1297 y Fp(.)141 1410 y(The)h(library)e(pro)m(vides)h(the)i(follo)m
+(wing)e(functions:)0 1597 y Fn(abs)47 b(acos)g(asin)f(atan)h(atan2)f
+(ceil)h(cos)g(floor)f(log)h(log10)0 1710 y(max)g(min)95
+b(mod)f(sin)h(sqrt)46 b(tan)h(random)f(randomseed)0 1898
+y Fp(Most)36 b(of)f(them)g(are)h(only)e(in)m(terfaces)i(to)g(the)f
+(homon)m(ymous)g(functions)e(in)h(the)i(C)e(library)-8
+b(,)35 b(except)h(that,)h(for)0 2011 y(the)31 b(trigonometric)f
+(functions,)f(all)g(angles)h(are)h(expressed)f(in)f(degrees,)i(not)g
+(radians.)141 2124 y(The)22 b(function)g Fn(max)f Fp(returns)h(the)h
+(maxim)m(um)e(v)-5 b(alue)22 b(of)h(its)f(n)m(umeric)f(argumen)m(ts.)39
+b(Similarly)-8 b(,)21 b Fn(min)h Fp(computes)0 2237 y(the)31
+b(minim)m(um.)37 b(Both)31 b(can)g(b)s(e)f(used)f(with)h(an)g
+(unlimited)d(n)m(um)m(b)s(er)i(of)h(argumen)m(ts.)141
+2349 y(The)e(functions)e Fn(random)h Fp(and)g Fn(randomseed)e
+Fp(are)k(in)m(terfaces)f(to)h(the)f(simple)e(random)h(generator)i
+(functions)0 2462 y Fn(rand)35 b Fp(and)h Fn(srand)p
+Fp(,)h(pro)m(vided)f(b)m(y)g(ANSI)g(C.)h(The)f(function)f
+Fn(random)g Fp(returns)h(pseudo-random)f(n)m(um)m(b)s(ers)g(in)0
+2575 y(the)c(range)f([0)p Fe(;)15 b Fp(1\).)0 2819 y
+Ff(6.4)112 b(I/O)38 b(F)-9 b(acilities)0 2990 y Fp(All)37
+b(I/O)i(op)s(erations)f(in)f(Lua)i(are)g(done)g(o)m(v)m(er)h(t)m(w)m(o)
+g Fo(curr)-5 b(ent)39 b Fp(\014les:)57 b(one)39 b(for)f(reading)g(and)g
+(one)h(for)g(writing.)0 3103 y(Initially)-8 b(,)28 b(the)j(curren)m(t)f
+(input)e(\014le)i(is)f Fn(stdin)p Fp(,)g(and)h(the)h(curren)m(t)f
+(output)g(\014le)f(is)h Fn(stdout)p Fp(.)141 3216 y(Unless)k(otherwise)
+f(stated,)k(all)c(I/O)h(functions)f(return)h Fm(nil)g
+Fp(on)g(failure)f(and)h(some)h(v)-5 b(alue)34 b(di\013eren)m(t)f(from)0
+3329 y Fm(nil)d Fp(on)h(success.)0 3569 y Fk(\017)k Fn(readfrom)46
+b(\(filename\))0 3741 y Fp(This)29 b(function)g(ma)m(y)j(b)s(e)e
+(called)g(in)f(three)i(w)m(a)m(ys.)42 b(When)31 b(called)f(with)f(a)i
+(\014le)f(name,)h(it)g(op)s(ens)e(the)i(named)g(\014le,)0
+3854 y(sets)25 b(it)e(as)i(the)f Fo(curr)-5 b(ent)25
+b Fp(input)d(\014le,)j(and)f(returns)f(a)h Fo(hand)5
+b(le)25 b Fp(to)g(the)g(\014le)e(\(this)g(handle)g(is)g(a)i(user)e
+(data)i(con)m(taining)0 3967 y(the)37 b(\014le)f(stream)h
+Fn(FILE)47 b(*)p Fp(\).)60 b(When)37 b(called)f(with)f(a)j(\014le)e
+(handle,)h(returned)f(b)m(y)g(a)i(previous)d(call,)j(it)e(restores)0
+4080 y(the)31 b(\014le)e(as)i(the)f(curren)m(t)g(input.)39
+b(When)30 b(called)g(without)f(parameters,)i(it)f(closes)h(the)f
+(curren)m(t)g(input)f(\014le,)h(and)0 4192 y(restores)h
+Fn(stdin)e Fp(as)h(the)h(curren)m(t)f(input)f(\014le.)141
+4305 y(If)h(this)f(function)g(fails,)h(it)f(returns)h
+Fm(nil)p Fp(,)g(plus)f(a)h(string)g(describing)e(the)i(error.)141
+4418 y Fo(System)i(dep)-5 b(endent:)41 b Fp(if)27 b Fn(filename)f
+Fp(starts)j(with)e(a)i Fn(|)p Fp(,)g(then)f(a)h(pip)s(ed)d(input)g(is)i
+(op)s(en,)g(via)g(function)f Fn(popen)p Fp(.)0 4658 y
+Fk(\017)35 b Fn(writeto)46 b(\(filename\))0 4830 y Fp(This)38
+b(function)g(ma)m(y)i(b)s(e)f(called)g(in)g(three)g(w)m(a)m(ys.)70
+b(When)39 b(called)g(with)f(a)j(\014le)d(name,)43 b(it)c(op)s(ens)g
+(the)g(named)0 4943 y(\014le,)c(sets)h(it)e(as)h(the)g
+Fo(curr)-5 b(ent)36 b Fp(output)e(\014le,)i(and)e(returns)f(a)j
+Fo(hand)5 b(le)36 b Fp(to)f(the)g(\014le)f(\(this)g(handle)g(is)g(a)h
+(user)f(data)0 5056 y(con)m(taining)24 b(the)g(\014le)f(stream)i
+Fn(FILE)46 b(*)p Fp(\).)39 b(Notice)25 b(that,)h(if)d(the)i(\014le)e
+(already)h(exists,)h(it)f(will)d(b)s(e)j Fo(c)-5 b(ompletely)28
+b(er)-5 b(ase)g(d)0 5169 y Fp(with)28 b(this)g(op)s(eration.)40
+b(When)28 b(called)h(with)f(a)h(\014le)f(handle,)g(returned)g(b)m(y)h
+(a)h(previous)d(call,)i(it)g(restores)h(the)f(\014le)1905
+5589 y(20)p eop
%%Page: 21 21
-21 20 bop -42 199 a Fl('i')16 b(or)i('I')j Fo(to)15 b(read)g(an)g(in)o
-(teger.)-42 293 y(The)e(optional)e Fm(n)h Fo(is)g(a)g(n)o(um)o(b)q(er)g
-(whic)o(h)g(sp)q(eci\014es)h(ho)o(w)f(man)o(y)f(c)o(haracters)h(m)o
-(ust)e(b)q(e)j(read)g(to)e(comp)q(ose)h(the)g(input)-42
-350 y(v)m(alue.)21 b(P)o(articularly)l(,)12 b(the)k(format)c
-Fm("s1")j Fo(reads)g(a)g(single)g(c)o(haracter.)-42 470
-y Fm(readuntil)23 b(\(char\))-42 555 y Fo(Reads)f(the)f(curren)o(t)f
-(input)h(un)o(til)f(the)h(\014rst)f(o)q(currence)i(of)e(the)h(giv)o(en)
-f(c)o(haracter.)36 b(When)21 b(called)f(with)h(no)-42
-612 y(parameters,)16 b(reads)h(un)o(til)f(the)h(end)h(of)e(the)h
-(curren)o(t)g(input)g(\014le.)26 b(Returns)17 b(the)h(string)e(read.)25
-b(The)17 b(c)o(haracter)-42 668 y(itself)e(is)f(not)h(read.)-42
-788 y Fm(write)24 b(\(value,)f([format]\))-42 874 y Fo(This)d(function)
-g(writes)f(the)i(v)m(alue)f(of)g(its)f(\014rst)h(argumen)o(t)e(to)i
-(the)g(curren)o(t)g(output.)35 b(An)20 b(optional)f(second)-42
-931 y(argumen)o(t)13 b(sp)q(eci\014es)i(the)f(format)e(to)i(b)q(e)h
-(used.)20 b(This)14 b(format)e(is)i(giv)o(en)f(as)h(a)g(string,)f(comp)
-q(osed)h(of)g(four)f(parts.)-42 987 y(The)j(\014rst)f(part)f(is)h(the)g
-(only)g(one)g(not)g(optional,)f(and)h(m)o(ust)f(b)q(e)i(one)f(of)g(the)
-g(follo)o(wing)e(c)o(haracters:)-42 1081 y Fl('s')k(or)g('S')k
-Fo(to)15 b(write)f(strings;)-42 1175 y Fl('f)5 b(')17
-b(or)g('F')22 b Fo(to)14 b(write)g(\015oats;)-42 1269
-y Fl('i')i(or)i('I')j Fo(to)15 b(write)f(in)o(tegers;)-42
-1362 y Fl('q')j(or)g('Q')22 b Fo(to)17 b(write)g(quoted)g(strings.)27
-b(This)17 b(format)e(writes)i(the)h(string)f(in)g(a)h(form)e(suitable)h
-(to)g(b)q(e)h(safely)72 1419 y(read)13 b(bac)o(k)f(b)o(y)h(the)g(Lua)g
-(in)o(terpreter.)18 b(The)13 b(string)e(is)i(written)e(b)q(et)o(w)o
-(een)i(double)g(quotes,)g(and)g(all)e(double)72 1475
-y(quotes,)k(returns)g(and)g(bac)o(kslashes)g(in)g(the)g(string)f(are)h
-(correctly)g(escap)q(ed)h(when)f(written.)-42 1569 y(These)h(c)o
-(haracters)e(can)i(b)q(e)g(follo)o(w)o(ed)d(b)o(y)30
-1663 y Fm([?][m][.n])-42 1757 y Fo(where:)-42 1851 y
-Fm(?)23 b Fo(indicates)15 b(justi\014cation)f(inside)h(the)g(\014eld.)
-100 1944 y(')p Fm(<)p Fo(')22 b(righ)o(t)14 b(justi\014cation)g
-(\(default\);)100 2017 y(')p Fm(>)p Fo(')22 b(left)15
-b(justi\014cation;)100 2090 y(')p Fm(|)p Fo(')22 b(cen)o(ter)15
-b(justi\014cation.)-42 2184 y Fm(m)23 b Fo(Indicates)16
-b(the)f(\014eld)g(size)g(in)g(c)o(haracters.)-42 2278
-y Fm(.n)23 b Fo(F)l(or)18 b(reals,)h(indicates)f(the)h(n)o(um)o(b)q(er)
-f(of)g(digital)f(places.)31 b(F)l(or)18 b(in)o(tegers,)h(it)f(is)g(the)
-h(minim)o(um)c(n)o(um)o(b)q(er)j(of)72 2335 y(digits.)h(This)c(option)f
-(has)h(no)g(meaning)f(for)h(strings.)29 2428 y(When)20
-b(called)e(without)g(a)h(format)e(string,)i(this)f(function)h(writes)f
-(n)o(um)o(b)q(ers)h(using)f(the)i Fm(\045g)e Fo(format)f(and)-42
-2485 y(strings)e(with)f Fm(\045s)p Fo(.)20 b(F)l(or)14
-b(b)q(etter)h(format)e(facilities,)g(the)j(function)f
-Fm(format)f Fo(should)h(b)q(e)h(used)g(\(see)f(Section)g(6.2\).)911
-2748 y(21)p eop
+21 20 bop 0 91 a Fp(as)37 b(the)g(curren)m(t)g(output.)59
+b(When)37 b(called)f(without)g(parameters,)j(this)c(function)h(closes)h
+(the)g(curren)m(t)f(output)0 204 y(\014le,)30 b(and)f(restores)i
+Fn(stdout)e Fp(as)i(the)f(curren)m(t)g(output)g(\014le.)141
+317 y(If)g(this)f(function)g(fails,)h(it)f(returns)h
+Fm(nil)p Fp(,)g(plus)f(a)h(string)g(describing)e(the)i(error.)141
+430 y Fo(System)e(dep)-5 b(endent:)39 b Fp(if)24 b Fn(filename)e
+Fp(starts)k(with)d(a)i Fn(|)p Fp(,)h(then)e(a)h(pip)s(ed)e(output)h(is)
+g(op)s(en,)h(via)g(function)e Fn(popen)p Fp(.)0 670 y
+Fk(\017)35 b Fn(appendto)46 b(\(filename\))0 842 y Fp(This)34
+b(function)h(op)s(ens)g(a)h(\014le)f(named)h Fn(filename)d
+Fp(and)j(sets)g(it)f(as)h(the)h Fo(curr)-5 b(ent)36 b
+Fp(output)g(\014le.)56 b(It)36 b(returns)f(the)0 955
+y(\014le)30 b(handle,)g(or)h Fm(nil)g Fp(in)e(case)j(of)f(error.)42
+b(Unlik)m(e)30 b(the)h Fn(writeto)d Fp(op)s(eration,)j(this)f(function)
+f(do)s(es)i(not)g(erase)h(an)m(y)0 1068 y(previous)d(con)m(ten)m(t)j
+(of)f(the)f(\014le.)40 b(If)30 b(this)f(function)g(fails,)g(it)h
+(returns)f Fm(nil)p Fp(,)i(plus)e(a)h(string)g(describing)e(the)i
+(error.)141 1181 y(Notice)h(that)g(function)f Fn(writeto)e
+Fp(is)h(a)m(v)-5 b(ailable)30 b(to)h(close)g(a)g(\014le.)0
+1421 y Fk(\017)k Fn(remove)46 b(\(filename\))0 1592 y
+Fp(This)25 b(function)h(deletes)h(the)g(\014le)g(with)e(the)j(giv)m(en)
+f(name.)39 b(If)27 b(this)f(function)f(fails,)i(it)g(returns)e
+Fm(nil)p Fp(,)j(plus)e(a)h(string)0 1705 y(describing)h(the)j(error.)0
+1945 y Fk(\017)k Fn(rename)46 b(\(name1,)g(name2\))0
+2117 y Fp(This)41 b(function)h(renames)i(\014le)e Fn(name1)g
+Fp(to)i Fn(name2)p Fp(.)78 b(If)43 b(this)f(function)g(fails,)j(it)e
+(returns)f Fm(nil)p Fp(,)47 b(plus)41 b(a)j(string)0
+2230 y(describing)28 b(the)j(error.)0 2470 y Fk(\017)k
+Fn(tmpname)46 b(\(\))0 2642 y Fp(This)29 b(function)g(returns)g(a)i
+(string)e(with)g(a)i(\014le)e(name)i(that)g(can)f(safely)g(b)s(e)g
+(used)g(for)g(a)g(temp)s(orary)g(\014le.)0 2882 y Fk(\017)35
+b Fn(read)47 b(\([readpattern]\))0 3053 y Fp(This)25
+b(function)h(reads)h(the)g(curren)m(t)g(input)e(according)i(to)g(a)h
+(read)f(pattern,)h(that)f(sp)s(eci\014es)f(ho)m(w)h(m)m(uc)m(h)g(to)h
+(read;)0 3166 y(c)m(haracters)36 b(are)g(read)f(from)f(the)h(curren)m
+(t)g(input)e(\014le)h(un)m(til)f(the)j(read)e(pattern)i(fails)d(or)i
+(ends.)54 b(The)34 b(function)0 3279 y Fn(read)28 b Fp(returns)f(a)i
+(string)f(with)g(the)g(c)m(haracters)j(read,)e(or)g Fm(nil)g
+Fp(if)e(the)i(read)g(pattern)g(fails)e Fo(and)39 b Fp(the)29
+b(result)f(string)0 3392 y(w)m(ould)35 b(b)s(e)g(empt)m(y)-8
+b(.)58 b(When)35 b(called)g(without)g(parameters,)j(it)d(uses)h(a)g
+(default)f(pattern)h(that)g(reads)g(the)g(next)0 3505
+y(line)29 b(\(see)i(b)s(elo)m(w\).)141 3618 y(A)37 b
+Fo(r)-5 b(e)g(ad)40 b(p)-5 b(attern)38 b Fp(is)e(a)h(sequence)g(of)f
+(read)h(pattern)g(items.)58 b(An)37 b(item)f(ma)m(y)h(b)s(e)f(a)h
+(single)e(c)m(haracter)j(class)0 3731 y(or)33 b(a)h(c)m(haracter)g
+(class)f(follo)m(w)m(ed)g(b)m(y)g Fn(?)f Fp(or)i(b)m(y)e
+Fn(*)p Fp(.)49 b(A)33 b(single)f(c)m(haracter)j(class)d(reads)h(the)g
+(next)h(c)m(haracter)g(from)0 3844 y(the)k(input)d(if)i(it)g(b)s
+(elongs)f(to)j(the)e(class,)j(otherwise)d(it)g(fails.)61
+b(A)37 b(c)m(haracter)i(class)f(follo)m(w)m(ed)f(b)m(y)g
+Fn(?)g Fp(reads)h(the)0 3957 y(next)d(c)m(haracter)i(from)d(the)h
+(input)e(if)h(it)h(b)s(elongs)f(to)i(the)f(class;)i(it)e(nev)m(er)g
+(fails.)53 b(A)35 b(c)m(haracter)i(class)d(follo)m(w)m(ed)0
+4069 y(b)m(y)f Fn(*)f Fp(reads)g(un)m(til)f(a)i(c)m(haracter)i(that)e
+(do)s(es)f(not)h(b)s(elong)f(to)i(the)f(class,)g(or)g(end)f(of)g
+(\014le;)i(since)e(it)g(can)h(matc)m(h)h(a)0 4182 y(sequence)d(of)f
+(zero)h(c)m(haracteres,)i(it)d(nev)m(er)h(fails.)1691
+4149 y Fl(4)141 4295 y Fp(A)e(pattern)f(item)g(ma)m(y)h(con)m(tain)g
+(sub-patterns)e(enclosed)i(in)e(curly)g(brac)m(k)m(ets,)j(that)f
+(describ)s(e)e Fo(skips)p Fp(.)40 b(Char-)0 4408 y(acters)31
+b(matc)m(hing)g(a)g(skip)e(are)h(read,)h(but)e(are)i(not)g(included)c
+(in)j(the)g(resulting)f(string.)141 4521 y(F)-8 b(ollo)m(wing)30
+b(are)h(some)g(examples)e(of)i(read)f(patterns)h(and)e(their)h
+(meanings:)136 4709 y Fk(\017)46 b Fn(".")30 b Fp(returns)f(the)h(next)
+h(c)m(haracter,)h(or)f Fm(nil)f Fp(on)g(end)g(of)h(\014le.)136
+4896 y Fk(\017)46 b Fn(".*")29 b Fp(reads)i(the)f(whole)g(\014le.)p
+0 4958 1560 4 v 104 5012 a Fj(4)138 5043 y Fi(Notice)24
+b(that)e(this)h(b)r(eha)n(viour)g(is)h(di\013eren)n(t)e(from)h(regular)
+h(pattern)e(matc)n(hing,)h(where)h(a)f Fc(*)g Fi(expands)f(to)i(the)e
+(maxim)n(um)e(length)0 5135 y Fg(such)28 b(that)35 b
+Fi(the)25 b(rest)h(of)g(the)f(pattern)h(do)r(es)g(not)g(fail.)1905
+5589 y Fp(21)p eop
%%Page: 22 22
-22 21 bop -42 199 a Fm(date)24 b(\([format]\))-42 285
-y Fo(This)19 b(function)f(returns)h(a)f(string)g(con)o(taining)f(date)h
-(and)h(time)e(formatted)g(according)h(to)g(the)g(giv)o(en)g(string)-42
-342 y Fm(format)p Fo(,)g(follo)o(wing)e(the)i(same)f(rules)h(of)f(the)i
-(ANSI)f(C)g(function)g Fm(strftime)p Fo(.)28 b(When)18
-b(called)g(without)f(argu-)-42 398 y(men)o(ts,)d(it)g(returns)h(a)g
-(reasonable)g(date)g(and)g(time)f(represen)o(tation.)29
-454 y(This)h(function)g(replaces)g(functions)g Fm(date)g
-Fo(and)g Fm(time)g Fo(from)e(previous)i(Lua)g(v)o(ersions.)-42
-574 y Fm(exit)24 b(\([code]\))-42 660 y Fo(This)15 b(function)g(calls)g
-(the)g(C)g(function)g Fm(exit)p Fo(,)f(with)h(an)g(optional)f
-Fm(code)p Fo(,)g(to)g(terminate)g(the)h(program.)-42
-804 y Fp(7)67 b(The)23 b(Debuger)f(In)n(terface)-42 905
-y Fo(Lua)c(has)e(no)h(built)f(in)g(debuger)i(facilities.)k(Instead,)17
-b(it)f(o\013ers)g(a)h(sp)q(ecial)f(in)o(terface,)g(b)o(y)h(means)e(of)i
-(functions)-42 961 y(and)12 b Fn(ho)n(oks)p Fo(,)g(whic)o(h)f(allo)o
-(ws)f(the)i(construction)e(of)h(di\013eren)o(t)g(kinds)h(of)f
-(debugers,)h(pro\014les,)g(and)g(other)f(to)q(ols)f(that)-42
-1018 y(need)17 b(\\inside")d(information)e(from)i(the)h(in)o
-(terpreter.)k(This)c(in)o(terface)f(is)h(declared)h(in)f(the)g(\014le)g
-Fm(luadebug.h)p Fo(.)-42 1140 y Fe(7.1)56 b(Stac)n(k)19
-b(and)g(F)-5 b(unction)20 b(Information)-42 1225 y Fo(The)c(main)e
-(function)h(to)f(get)h(information)d(ab)q(out)j(the)h(in)o(terpreter)e
-(stac)o(k)g(is)-42 1319 y Fm(lua_Function)23 b(lua_stackedfunction)e
-(\(int)i(level\);)-42 1413 y Fo(It)18 b(returns)f(a)g(handle)h(\()p
-Fm(lua_Function)p Fo(\))d(to)h(the)i Fn(activation)g(r)n(e)n(c)n(or)n
-(d)j Fo(of)c(the)h(function)f(executing)g(at)g(a)g(giv)o(en)-42
-1470 y(lev)o(el.)34 b(Lev)o(el)20 b(0)f(is)h(the)g(curren)o(t)f
-(running)h(function,)h(while)e(lev)o(el)g Fd(n)14 b Fo(+)f(1)20
-b(is)f(the)h(function)g(that)f(has)h(called)-42 1526
-y(lev)o(el)g Fd(n)p Fo(.)34 b(When)21 b(called)e(with)h(a)f(lev)o(el)h
-(greater)f(than)h(the)g(stac)o(k)f(depth,)i Fm(lua_stackedfunction)d
-Fo(returns)-42 1582 y Fm(LUA_NOOBJECT)p Fo(.)29 1639
-y(The)k(t)o(yp)q(e)f Fm(lua_Function)f Fo(is)h(just)g(another)g(name)g
-(to)g Fm(lua_Object)p Fo(.)37 b(Although,)22 b(in)f(this)g(library)l(,)
-h(a)-42 1695 y Fm(lua_Function)12 b Fo(can)i(b)q(e)g(used)g(wherev)o
-(er)f(a)g Fm(lua_Object)f Fo(is)h(required,)g(a)g(parameter)f
-Fm(lua_Function)f Fo(accepts)-42 1752 y(only)k(a)g(handle)h(returned)f
-(b)o(y)g Fm(lua_stackedfunction)p Fo(.)29 1808 y(Three)g(other)g
-(functions)g(pro)q(duce)h(extra)f(information)d(ab)q(out)j(a)g
-(function:)-42 1902 y Fm(void)24 b(lua_funcinfo)e(\(lua_Object)g(func,)
-i(char)f(**filename,)f(int)i(*linedefined\);)-42 1959
-y(int)g(lua_currentline)e(\(lua_Function)g(func\);)-42
-2015 y(char)i(*lua_getobjname)e(\(lua_Object)g(o,)i(char)f(**name\);)
--42 2109 y(lua_funcinfo)16 b Fo(giv)o(es)g(the)h(\014le)g(name)g(and)g
-(the)g(line)g(where)g(the)g(giv)o(en)g(function)g(has)g(b)q(een)h
-(de\014ned.)27 b(If)17 b(the)-42 2165 y(\\function")f(is)f(in)h(fact)g
-(the)g(main)f(co)q(de)h(of)g(a)g(c)o(h)o(unk,)g Fm(linedefined)f
-Fo(is)g(0.)22 b(If)17 b(the)f(function)g(is)f(a)h(C)g(function,)-42
-2222 y Fm(linedefined)e Fo(is)h(-1,)g(and)g Fm(filename)f
-Fo(is)h Fm("\(C\)")p Fo(.)29 2278 y(The)j(function)f
-Fm(lua_currentline)f Fo(giv)o(es)g(the)i(curren)o(t)f(line)g(where)h(a)
-f(giv)o(en)g(function)h(is)f(executing.)26 b(It)-42 2335
-y(only)16 b(w)o(orks)e(if)h(the)g(function)h(has)f(b)q(een)i
-(pre-compiled)d(with)h(debug)h(information)d(\(see)i(Section)h(4.8\).)j
-(When)-42 2391 y(no)d(line)e(information)f(is)i(a)o(v)m(ailable,)e(it)h
-(returns)i(-1.)29 2448 y(F)l(unction)g Fm(lua_getobjname)e
-Fo(tries)i(to)f(\014nd)i(a)f(reasonable)g(name)f(for)h(a)f(giv)o(en)h
-(function.)23 b(Because)17 b(func-)-42 2504 y(tions)11
-b(in)g(Lua)g(are)g(\014rst)g(class)f(v)m(alues,)i(they)f(do)g(not)g(ha)
-o(v)o(e)g(a)g(\014xed)g(name.)18 b(Some)10 b(functions)h(ma)o(y)e(b)q
-(e)j(the)g(v)m(alue)f(of)-42 2560 y(man)o(y)j(global)f(v)m(ariables,)h
-(while)g(others)h(ma)o(y)e(b)q(e)i(stored)f(only)h(in)f(a)h(table)f
-(\014eld.)20 b(F)l(unction)14 b Fm(lua_getobjname)-42
-2617 y Fo(\014rst)j(c)o(hec)o(ks)g(whether)h(the)f(giv)o(en)f(function)
-h(is)g(a)f(fallbac)o(k.)24 b(If)18 b(so,)e(it)h(returns)f(the)i(string)
-e Fm("fallback")p Fo(,)f(and)911 2748 y(22)p eop
+22 21 bop 136 91 a Fk(\017)46 b Fn("[^\\n]*{\\n}")30
+b Fp(returns)i(the)h(next)g(line)f(\(skipping)e(the)k(end)e(of)h
+(line\),)g(or)g Fm(nil)g Fp(on)g(end)g(of)g(\014le.)48
+b(This)31 b(is)227 204 y(the)g(default)e(pattern.)136
+392 y Fk(\017)46 b Fn("{\045s*}\045S\045S*")31 b Fp(returns)i(the)h
+(next)g(w)m(ord)g(\(maximal)f(sequence)h(of)h(non)e(white-space)h(c)m
+(haracters\),)j(or)227 505 y Fm(nil)31 b Fp(on)f(end)g(of)g(\014le.)136
+692 y Fk(\017)46 b Fn("{\045s*}[+-]?\045d\045d*")26 b
+Fp(returns)j(the)i(next)f(in)m(teger)h(or)f Fm(nil)h
+Fp(if)e(the)i(next)f(c)m(haracters)i(do)e(not)h(conform)f(to)227
+805 y(an)h(in)m(teger)f(format.)0 1045 y Fk(\017)35 b
+Fn(write)47 b(\(value1,)e(...\))0 1217 y Fp(This)30 b(function)h
+(writes)h(the)g(v)-5 b(alue)32 b(of)g(eac)m(h)h(of)g(its)e(argumen)m
+(ts)i(to)g(the)f(curren)m(t)g(output)g(\014le.)45 b(The)32
+b(argumen)m(ts)0 1330 y(m)m(ust)e(b)s(e)f(strings)g(or)i(n)m(um)m(b)s
+(ers.)39 b(If)29 b(this)g(function)g(fails,)g(it)h(returns)f
+Fm(nil)p Fp(,)h(plus)e(a)j(string)e(describing)f(the)i(error.)0
+1570 y Fk(\017)35 b Fn(date)47 b(\([format]\))0 1742
+y Fp(This)35 b(function)h(returns)g(a)i(string)e(con)m(taining)h(date)h
+(and)e(time)h(formatted)h(according)f(to)h(the)g(giv)m(en)f(string)0
+1855 y Fn(format)p Fp(,)f(follo)m(wing)f(the)h(same)h(rules)d(of)j(the)
+f(ANSI)g(C)g(function)e Fn(strftime)p Fp(.)56 b(When)36
+b(called)g(without)f(argu-)0 1968 y(men)m(ts,)c(it)f(returns)f(a)i
+(reasonable)f(date)h(and)f(time)g(represen)m(tation.)0
+2208 y Fk(\017)35 b Fn(exit)47 b(\([code]\))0 2379 y
+Fp(This)29 b(function)g(calls)g(the)i(C)f(function)f
+Fn(exit)p Fp(,)g(with)g(an)i(optional)e Fn(code)p Fp(,)h(to)h
+(terminate)f(the)h(program.)0 2619 y Fk(\017)k Fn(getenv)46
+b(\(varname\))0 2791 y Fp(Returns)29 b(the)i(v)-5 b(alue)30
+b(of)g(the)h(en)m(vironmen)m(t)f(v)-5 b(ariable)29 b
+Fn(varname)p Fp(,)g(or)h Fm(nil)h Fp(if)e(the)h(v)-5
+b(ariable)30 b(is)f(not)i(de\014ned.)0 3031 y Fk(\017)k
+Fn(execute)46 b(\(command\))0 3203 y Fp(This)38 b(function)h(is)g
+(equiv)-5 b(alen)m(t)39 b(to)h(the)h(C)e(function)g Fn(system)p
+Fp(.)67 b(It)40 b(passes)g Fn(command)e Fp(to)i(b)s(e)g(executed)g(b)m
+(y)g(an)0 3316 y(Op)s(erating)29 b(System)h(Shell.)39
+b(It)30 b(returns)f(an)i(error)f(co)s(de,)h(whic)m(h)e(is)g(implemen)m
+(tation-de\014ned.)0 3602 y Fq(7)135 b(The)44 b(Debugger)i(In)l
+(terface)0 3805 y Fp(Lua)31 b(has)f(no)h(built-in)d(debugger)j
+(facilities.)41 b(Instead,)31 b(it)f(o\013ers)i(a)f(sp)s(ecial)f(in)m
+(terface,)h(b)m(y)g(means)g(of)g(functions)0 3918 y(and)f
+Fo(ho)-5 b(oks)p Fp(,)34 b(whic)m(h)29 b(allo)m(ws)i(the)g
+(construction)g(of)g(di\013eren)m(t)f(kinds)f(of)j(debuggers,)f
+(pro\014lers,)e(and)i(other)g(to)s(ols)0 4031 y(that)37
+b(need)e(\\inside)g(information")f(from)i(the)g(in)m(terpreter.)57
+b(This)35 b(in)m(terface)h(is)f(declared)h(in)f(the)h(header)g(\014le)0
+4144 y Fn(luadebug.h)p Fp(.)0 4387 y Ff(7.1)112 b(Stac)m(k)38
+b(and)g(F)-9 b(unction)37 b(Information)0 4559 y Fp(The)30
+b(main)f(function)g(to)i(get)h(information)d(ab)s(out)h(the)g(in)m
+(terpreter)g(stac)m(k)i(is)0 4746 y Fn(lua_Function)44
+b(lua_stackedfunction)f(\(int)k(level\);)0 4934 y Fp(It)35
+b(returns)e(a)i(handle)e(\()p Fn(lua_Function)p Fp(\))f(to)k(the)e
+Fo(activation)k(r)-5 b(e)g(c)g(or)g(d)47 b Fp(of)35 b(the)f(function)g
+(executing)h(at)g(a)g(giv)m(en)0 5047 y(lev)m(el.)68
+b(Lev)m(el)40 b(0)g(is)f(the)h(curren)m(t)g(running)d(function,)k
+(while)c(lev)m(el)j Fe(n)26 b Fp(+)g(1)40 b(is)f(the)h(function)e(that)
+i(has)g(called)0 5160 y(lev)m(el)g Fe(n)p Fp(.)69 b(When)39
+b(called)h(with)e(a)j(lev)m(el)e(greater)i(than)f(the)g(stac)m(k)i
+(depth,)f Fn(lua_stackedfunction)35 b Fp(returns)0 5273
+y Fn(LUA_NOOBJECT)p Fp(.)1905 5589 y(22)p eop
%%Page: 23 23
-23 22 bop -42 199 a Fm(name)16 b Fo(is)f(set)h(to)f(p)q(oin)o(t)g(to)g
-(the)h(fallbac)o(k)f(name.)21 b(Otherwise,)15 b(if)h(the)f(giv)o(en)h
-(function)g(is)f(the)h(v)m(alue)g(of)f(a)h(global)-42
-256 y(v)m(ariable,)e Fm(lua_getobjname)f Fo(returns)i(the)g(string)e
-Fm("global")p Fo(,)h(while)g Fm(name)g Fo(p)q(oin)o(ts)g(to)g(the)h(v)m
-(ariable)f(name.)19 b(If)-42 312 y(the)f(giv)o(en)e(function)h(is)f
-(neither)h(a)g(fallbac)o(k)f(nor)g(a)h(global)e(v)m(ariable,)i
-Fm(lua_getobjname)e Fo(returns)i(the)g(empt)o(y)-42 369
-y(string,)d(and)i Fm(name)e Fo(is)h(set)g(to)f Fm(NULL)p
-Fo(.)-42 487 y Fe(7.2)56 b(Manipulating)22 b(Lo)r(cal)c(V)-5
-b(ariables)-42 573 y Fo(The)17 b(follo)o(wing)d(functions)i(allo)o(w)e
-(the)i(manipulation)e(of)i(the)g(lo)q(cal)f(v)m(ariables)h(of)g(a)f
-(giv)o(en)h(activ)m(ation)f(record.)-42 629 y(They)h(only)f(w)o(ork)f
-(if)h(the)g(function)g(has)g(b)q(een)h(pre-compiled)f(with)f(debug)i
-(information)c(\(see)j(Section)h(4.8\).)-42 706 y Fm(lua_Object)23
-b(lua_getlocal)f(\(lua_Function)g(func,)h(int)h(local_number,)e(char)h
-(**name\);)-42 762 y(int)h(lua_setlocal)e(\(lua_Function)g(func,)h(int)
-h(local_number\);)-42 839 y Fo(The)19 b(\014rst)f(one)h(returns)g(the)f
-(v)m(alue)h(of)f(a)g(lo)q(cal)g(v)m(ariable,)g(and)h(sets)f
-Fm(name)g Fo(to)g(p)q(oin)o(t)g(to)g(the)h(v)m(ariable)f(name.)-42
-895 y Fm(local_number)f Fo(is)i(an)f(index)h(for)f(lo)q(cal)g(v)m
-(ariables.)29 b(The)19 b(\014rst)f(parameter)f(has)i(index)f(1,)h(and)g
-(so)f(on,)h(un)o(til)-42 952 y(the)k(last)e(activ)o(e)h(lo)q(cal)f(v)m
-(ariable.)40 b(When)23 b(called)f(with)g(a)g Fm(local_number)e
-Fo(greater)i(than)g(the)g(n)o(um)o(b)q(er)g(of)-42 1008
-y(activ)o(e)15 b(lo)q(cal)g(v)m(ariables,)f(or)h(if)g(the)h(activ)m
-(ation)e(record)h(has)h(no)f(debug)h(information,)d Fm(lua_getlocal)h
-Fo(returns)-42 1065 y Fm(LUA_NOOBJECT)p Fo(.)29 1121
-y(The)d(function)h Fm(lua_setlocal)d Fo(sets)i(the)g(lo)q(cal)f(v)m
-(ariable)h Fm(local_number)f Fo(to)g(the)h(v)m(alue)h(previously)e
-(pushed)-42 1178 y(on)19 b(the)f(stac)o(k)f(\(see)h(Section)g(5.2\).)28
-b(If)18 b(the)h(function)f(succeeds)h(it)e(returns)h(1.)29
-b(If)18 b Fm(local_number)f Fo(is)g(greater)-42 1234
-y(than)d(the)f(n)o(um)o(b)q(er)g(of)g(activ)o(e)g(lo)q(cal)f(v)m
-(ariables,)h(or)g(if)g(the)g(activ)m(ation)f(record)i(has)f(no)g(debug)
-h(information,)d(this)-42 1291 y(function)16 b(fails)d(and)j(returns)f
-(0.)-42 1409 y Fe(7.3)56 b(Ho)r(oks)-42 1495 y Fo(The)16
-b(Lua)f(in)o(terpreter)g(o\013ers)f(t)o(w)o(o)g(ho)q(oks)h(for)g(debug)
-g(purp)q(oses:)-42 1572 y Fm(typedef)23 b(void)h(\(*lua_CHFunction\))d
-(\(lua_Function)h(func,)i(char)f(*file,)g(int)g(line\);)-42
-1628 y(extern)h(lua_CHFunction)d(lua_callhook;)-42 1741
-y(typedef)i(void)h(\(*lua_LHFunction\))d(\(int)j(line\);)-42
-1797 y(extern)g(lua_LHFunction)d(lua_linehook;)-42 1874
-y Fo(The)i(\014rst)f(one)g(is)f(called)h(whenev)o(er)h(the)f(in)o
-(terpreter)f(en)o(ters)h(or)f(lea)o(v)o(es)h(a)f(function.)41
-b(When)22 b(en)o(tering)g(a)-42 1930 y(function,)c(its)f(parameters)f
-(are)h(a)h(handle)g(to)f(the)g(function)h(activ)m(ation)e(record,)i
-(plus)g(the)f(\014le)h(and)g(the)g(line)-42 1987 y(where)h(the)g
-(function)f(is)g(de\014ned)h(\(the)f(same)f(information)f(whic)o(h)i
-(is)g(pro)o(vided)g(b)o(y)g Fm(lua_funcinfo)p Fo(\);)g(when)-42
-2043 y(lea)o(ving)d(a)f(function,)h Fm(func)g Fo(is)f
-Fm(LUA_NOOBJECT)p Fo(,)g Fm(file)g Fo(is)h Fm("\(return\)")p
-Fo(,)e(and)j Fm(line)e Fo(is)h(0.)29 2100 y(The)24 b(other)f(ho)q(ok)g
-(is)g(called)g(ev)o(ery)g(time)f(the)h(in)o(terpreter)g(c)o(hanges)g
-(the)g(line)g(of)g(co)q(de)h(it)f(is)g(execut-)-42 2156
-y(ing.)31 b(Its)19 b(only)g(parameter)e(is)i(the)g(line)f(n)o(um)o(b)q
-(er)h(\(the)f(same)g(information)e(whic)o(h)j(is)g(pro)o(vided)f(b)o(y)
-h(the)g(call)-42 2213 y Fm(lua_currentline\(lua_stackedfun)o(ction\(0)o
-(\)\))p Fo(\).)d(This)d(second)h(ho)q(ok)f(is)g(only)f(called)h(if)g
-(the)g(activ)o(e)g(func-)-42 2269 y(tion)i(has)g(b)q(een)h
-(pre-compiled)f(with)f(debug)i(information)c(\(see)k(Section)f(4.8\).)
-29 2326 y(A)g(ho)q(ok)g(is)g(disabled)g(when)h(its)e(v)m(alue)i(is)e
-(NULL)i(\(0\),)e(whic)o(h)h(is)g(the)g(initial)f(v)m(alue)h(of)g(b)q
-(oth)g(ho)q(oks.)-42 2466 y Fp(8)67 b(Some)22 b(Examples)-42
-2567 y Fo(This)17 b(section)f(giv)o(es)g(examples)g(sho)o(wing)g(some)g
-(features)g(of)h(Lua.)25 b(It)17 b(do)q(es)g(not)g(in)o(tend)f(to)h(co)
-o(v)o(er)f(the)h(whole)-42 2623 y(language,)e(but)g(only)g(to)f
-(illustrate)f(some)h(in)o(teresting)g(uses)i(of)e(the)i(system.)911
-2748 y(23)p eop
+23 22 bop 141 91 a Fp(The)43 b(t)m(yp)s(e)g Fn(lua_Function)c
+Fp(is)j(just)g(another)h(name)g(to)h Fn(lua_Object)p
+Fp(.)75 b(Although,)46 b(in)41 b(this)h(library)-8 b(,)45
+b(a)0 204 y Fn(lua_Function)23 b Fp(can)k(b)s(e)f(used)g(wherev)m(er)h
+(a)g Fn(lua_Object)d Fp(is)h(required,)h(a)h(parameter)g
+Fn(lua_Function)d Fp(accepts)0 317 y(only)29 b(a)i(handle)e(returned)g
+(b)m(y)i Fn(lua_stackedfunction)p Fp(.)141 430 y(Three)f(other)h
+(functions)e(pro)s(duce)g(extra)i(information)e(ab)s(out)h(a)g
+(function:)0 593 y Fn(void)47 b(lua_funcinfo)d(\(lua_Object)h(func,)h
+(char)h(**filename,)e(int)h(*linedefined\);)0 706 y(int)h
+(lua_currentline)d(\(lua_Function)g(func\);)0 819 y(char)j
+(*lua_getobjname)c(\(lua_Object)i(o,)i(char)g(**name\);)0
+982 y(lua_funcinfo)31 b Fp(giv)m(es)j(the)h(\014le)e(name)h(and)g(the)g
+(line)f(where)g(the)i(giv)m(en)f(function)f(has)h(b)s(een)f(de\014ned.)
+51 b(If)34 b(the)0 1095 y(\\function")40 b(is)f(in)g(fact)j(the)e(main)
+f(co)s(de)i(of)f(a)h(c)m(h)m(unk,)i(then)d Fn(linedefined)d
+Fp(is)j(0.)71 b(If)40 b(the)g(function)f(is)h(a)g(C)0
+1208 y(function,)29 b(then)h Fn(linedefined)e Fp(is)h(-1,)i(and)f
+Fn(filename)e Fp(is)i Fn("\(C\)")p Fp(.)141 1320 y(The)35
+b(function)e Fn(lua_currentline)e Fp(giv)m(es)k(the)h(curren)m(t)e
+(line)g(where)g(a)h(giv)m(en)g(function)f(is)g(executing.)55
+b(It)0 1433 y(only)30 b(w)m(orks)h(if)f(the)h(function)f(has)g(b)s(een)
+g(pre-compiled)g(with)f(debug)h(information)g(\(see)i(Section)e(4.8\).)
+44 b(When)0 1546 y(no)30 b(line)f(information)g(is)g(a)m(v)-5
+b(ailable,)30 b(it)g(returns)f(-1.)141 1659 y(F)-8 b(unction)32
+b Fn(lua_getobjname)d Fp(tries)j(to)h(\014nd)d(a)j(reasonable)f(name)h
+(for)f(a)h(giv)m(en)f(function.)46 b(Because)34 b(func-)0
+1772 y(tions)22 b(in)f(Lua)h(are)g(\014rst)g(class)g(v)-5
+b(alues,)23 b(they)g(do)f(not)g(ha)m(v)m(e)i(a)e(\014xed)g(name.)38
+b(Some)22 b(functions)f(ma)m(y)i(b)s(e)f(the)g(v)-5 b(alue)22
+b(of)0 1885 y(man)m(y)30 b(global)e(v)-5 b(ariables,)29
+b(while)e(others)j(ma)m(y)g(b)s(e)f(stored)h(only)e(in)g(a)i(table)g
+(\014eld.)39 b(F)-8 b(unction)29 b Fn(lua_getobjname)0
+1998 y Fp(\014rst)k(c)m(hec)m(ks)j(whether)d(the)h(giv)m(en)g(function)
+f(is)g(a)i(fallbac)m(k.)51 b(If)33 b(so,)j(it)d(returns)g(the)h(string)
+f Fn("fallback")p Fp(,)g(and)0 2111 y Fn(name)e Fp(is)f(set)i(to)h(p)s
+(oin)m(t)e(to)h(the)g(fallbac)m(k)f(name.)45 b(Otherwise,)31
+b(if)f(the)i(giv)m(en)g(function)e(is)h(the)h(v)-5 b(alue)31
+b(of)h(a)g(global)0 2224 y(v)-5 b(ariable,)22 b(then)f
+Fn(lua_getobjname)c Fp(returns)j(the)h(string)f Fn("global")p
+Fp(,)h(while)f Fn(name)g Fp(p)s(oin)m(ts)g(to)h(the)h(v)-5
+b(ariable)20 b(name.)0 2337 y(If)32 b(the)g(giv)m(en)h(function)e(is)g
+(neither)g(a)i(fallbac)m(k)f(nor)g(a)h(global)e(v)-5
+b(ariable,)32 b(then)g Fn(lua_getobjname)d Fp(returns)i(the)0
+2450 y(empt)m(y)g(string,)e(and)h Fn(name)f Fp(is)h(set)h(to)g
+Fn(NULL)p Fp(.)0 2688 y Ff(7.2)112 b(Manipulating)37
+b(Lo)s(cal)g(V)-9 b(ariables)0 2860 y Fp(The)32 b(follo)m(wing)f
+(functions)f(allo)m(w)i(the)h(manipulation)c(of)k(the)f(lo)s(cal)g(v)-5
+b(ariables)31 b(of)h(a)h(giv)m(en)f(activ)-5 b(ation)33
+b(record.)0 2973 y(They)d(only)f(w)m(ork)i(if)e(the)i(function)e(has)h
+(b)s(een)g(pre-compiled)e(with)h(debug)h(information)f(\(see)i(Section)
+f(4.8\).)0 3136 y Fn(lua_Object)45 b(lua_getlocal)f(\(lua_Function)h
+(func,)h(int)h(local_number,)d(char)j(**name\);)0 3249
+y(int)g(lua_setlocal)d(\(lua_Function)h(func,)h(int)h(local_number\);)0
+3412 y Fp(The)37 b(\014rst)f(one)h(returns)f(the)h(v)-5
+b(alue)37 b(of)g(a)h(lo)s(cal)e(v)-5 b(ariable,)38 b(and)e(sets)i
+Fn(name)e Fp(to)i(p)s(oin)m(t)e(to)h(the)h(v)-5 b(ariable)36
+b(name.)0 3525 y Fn(local_number)e Fp(is)i(an)h(index)f(for)h(lo)s(cal)
+f(v)-5 b(ariables.)60 b(The)37 b(\014rst)g(parameter)g(has)g(index)f
+(1,)k(and)c(so)i(on,)h(un)m(til)0 3638 y(the)45 b(last)f(activ)m(e)i
+(lo)s(cal)e(v)-5 b(ariable.)82 b(When)44 b(called)g(with)f(a)i
+Fn(local_number)d Fp(greater)j(than)g(the)g(n)m(um)m(b)s(er)e(of)0
+3750 y(activ)m(e)32 b(lo)s(cal)f(v)-5 b(ariables,)30
+b(or)h(if)e(the)j(activ)-5 b(ation)31 b(record)g(has)g(no)g(debug)f
+(information,)g Fn(lua_getlocal)d Fp(returns)0 3863 y
+Fn(LUA_NOOBJECT)p Fp(.)141 3976 y(The)22 b(function)f
+Fn(lua_setlocal)e Fp(sets)k(the)f(lo)s(cal)g(v)-5 b(ariable)21
+b Fn(local_number)e Fp(to)k(the)g(v)-5 b(alue)22 b(previously)e(pushed)
+0 4089 y(on)j(the)g(stac)m(k)i(\(see)f(Section)e(5.2\).)40
+b(If)23 b(the)g(function)f(succeeds,)j(then)d(it)h(returns)f(1.)38
+b(If)23 b Fn(local_number)d Fp(is)i(greater)0 4202 y(than)j(the)g(n)m
+(um)m(b)s(er)e(of)j(activ)m(e)g(lo)s(cal)e(v)-5 b(ariables,)25
+b(or)g(if)f(the)h(activ)-5 b(ation)25 b(record)g(has)g(no)f(debug)h
+(information,)f(then)0 4315 y(this)29 b(function)g(fails)g(and)h
+(returns)f(0.)0 4554 y Ff(7.3)112 b(Ho)s(oks)0 4725 y
+Fp(The)30 b(Lua)g(in)m(terpreter)g(o\013ers)g(t)m(w)m(o)i(ho)s(oks)e
+(for)g(debugging)g(purp)s(oses:)0 4888 y Fn(typedef)46
+b(void)g(\(*lua_CHFunction\))e(\(lua_Function)g(func,)i(char)h(*file,)f
+(int)h(line\);)0 5001 y(extern)f(lua_CHFunction)e(lua_callhook;)0
+5227 y(typedef)i(void)g(\(*lua_LHFunction\))e(\(int)i(line\);)0
+5340 y(extern)g(lua_LHFunction)e(lua_linehook;)1905 5589
+y Fp(23)p eop
%%Page: 24 24
-24 23 bop -42 199 a Fe(8.1)56 b(Data)19 b(Structures)-42
-285 y Fo(T)l(ables)c(are)f(a)g(strong)f(unifying)h(data)g(constructor.)
-19 b(They)c(directly)f(implemen)o(t)d(a)j(m)o(ultitude)f(of)h(data)g(t)
-o(yp)q(es,)-42 342 y(lik)o(e)h(ordinary)f(arra)o(ys,)g(records,)g
-(sets,)h(bags,)f(and)i(lists.)29 398 y(Arra)o(ys)e(need)h(no)g
-(explanations.)k(In)c(Lua,)g(it)e(is)i(con)o(v)o(en)o(tional)e(to)h
-(start)f(indices)i(from)e(1,)h(but)h(this)f(is)g(only)-42
-454 y(a)f(con)o(v)o(en)o(tion.)19 b(Arra)o(ys)12 b(can)h(b)q(e)h
-(indexed)g(b)o(y)f(0,)g(negativ)o(e)g(n)o(um)o(b)q(ers,)f(or)h(an)o(y)g
-(other)f(v)m(alue)i(\(but)f Fl(nil)p Fo(\).)18 b(Records)-42
-511 y(are)d(also)g(trivially)d(implemen)o(ted)h(b)o(y)i(the)h(syn)o
-(tactic)e(sugar)g Fm(a.x)p Fo(.)29 567 y(The)j(b)q(est)g(w)o(a)o(y)f
-(to)g(implemen)o(t)e(a)i(set)h(is)f(to)g(store)g(its)g(elemen)o(ts)g
-(as)g(indices)h(of)f(a)h(table.)24 b(The)17 b(statemen)o(t)-42
-624 y Fm(s)24 b(=)g({})14 b Fo(creates)h(an)f(empt)o(y)g(set)g
-Fm(s)p Fo(.)20 b(The)15 b(statemen)o(t)d Fm(s[x])24 b(=)f(1)15
-b Fo(inserts)f(the)h(v)m(alue)g(of)f Fm(x)h Fo(in)o(to)e(the)i(set)g
-Fm(s)p Fo(.)k(The)-42 680 y(expression)e Fm(s[x])f Fo(is)h(true)f(if)g
-(and)h(only)g(if)f Fm(x)h Fo(b)q(elongs)f(to)g Fm(s)p
-Fo(.)25 b(Finally)l(,)15 b(the)i(statemen)o(t)e Fm(s[x])23
-b(=)h(nil)16 b Fo(erases)h Fm(x)-42 737 y Fo(from)d Fm(s)p
-Fo(.)29 793 y(Bags)h(can)h(b)q(e)g(implemen)o(ted)e(similarl)o(y)f(to)i
-(sets,)g(but)h(using)f(the)h(v)m(alue)f(asso)q(ciated)g(to)g(an)h
-(elemen)o(t)e(as)h(its)-42 850 y(coun)o(ter.)20 b(So,)15
-b(to)f(insert)h(an)g(elemen)o(t,)f(the)h(follo)o(wing)e(co)q(de)j(is)f
-(enough:)-42 943 y Fm(if)24 b(s[x])f(then)h(s[x])f(=)h(s[x]+1)-42
-1000 y(else)g(s[x])f(=)h(1)g(end)-42 1094 y Fo(and)16
-b(to)e(remo)o(v)o(e)g(an)h(elemen)o(t:)-42 1188 y Fm(if)24
-b(s[x])f(then)h(s[x])f(=)h(s[x]-1)f(end)-42 1244 y(if)h(s[x])f(==)h(0)g
-(then)f(s[x])g(=)h(nil)g(end)29 1338 y Fo(Lisp-lik)o(e)d(lists)f(also)g
-(ha)o(v)o(e)h(an)g(easy)g(implemen)o(tatio)o(n.)36 b(The)21
-b(\\cons")g(of)g(t)o(w)o(o)f(elemen)o(ts)g Fm(x)h Fo(and)g
-Fm(y)g Fo(can)-42 1394 y(b)q(e)d(created)e(with)g(the)h(co)q(de)g
-Fm(l)23 b(=)h({car=x,)f(cdr=y})p Fo(.)g(The)17 b(expression)f
-Fm(l.car)g Fo(extracts)g(the)g(header,)h(while)-42 1451
-y Fm(l.cdr)d Fo(extracts)g(the)g(tail.)k(An)d(alternativ)o(e)d(w)o(a)o
-(y)i(is)f(to)h(create)g(the)g(list)g(directly)f(with)h
-Fm(l={x,y})p Fo(,)f(and)h(then)h(to)-42 1507 y(extract)g(the)g(header)h
-(with)e Fm(l[1])h Fo(and)g(the)h(tail)d(with)i Fm(l[2])p
-Fo(.)-42 1629 y Fe(8.2)56 b(The)18 b(F)-5 b(unctions)21
-b Fb(next)c Fe(and)i Fb(nextvar)-42 1715 y Fo(This)f(example)f(sho)o
-(ws)g(ho)o(w)h(to)f(use)i(the)f(function)g Fm(next)f
-Fo(to)h(iterate)f(o)o(v)o(er)g(the)h(\014elds)g(of)g(a)g(table.)28
-b(F)l(unction)-42 1771 y Fn(clone)15 b Fo(receiv)o(es)g(an)o(y)g(table)
-f(and)i(returns)f(a)g(clone)g(of)g(it.)-42 1865 y Fm(function)23
-b(clone)g(\(t\))263 b(--)23 b(t)h(is)f(a)h(table)6 1921
-y(local)f(new_t)h(=)f({})263 b(--)23 b(create)g(a)h(new)f(table)6
-1978 y(local)g(i,)h(v)g(=)f(next\(t,)g(nil\))48 b(--)23
-b(i)h(is)f(an)h(index)f(of)h(t,)f(v)h(=)g(t[i])6 2034
-y(while)f(i)h(do)54 2091 y(new_t[i])f(=)g(v)54 2147 y(i,)h(v)f(=)h
-(next\(t,)f(i\))191 b(--)23 b(get)h(next)f(index)6 2204
-y(end)6 2260 y(return)g(new_t)-42 2317 y(end)29 2410
-y Fo(The)15 b(next)h(example)e(prin)o(ts)g(the)i(names)e(of)g(all)h
-(global)e(v)m(ariables)i(in)g(the)g(system)f(with)h(non)g(nil)g(v)m
-(alues:)-42 2504 y Fm(function)23 b(printGlobalVariables)e(\(\))6
-2561 y(local)i(i,)h(v)g(=)f(nextvar\(nil\))6 2617 y(while)g(i)h(do)911
-2748 y Fo(24)p eop
+24 23 bop 0 91 a Fp(The)44 b(\014rst)f(one)i(is)e(called)g(whenev)m(er)
+h(the)g(in)m(terpreter)g(en)m(ters)h(or)f(lea)m(v)m(es)h(a)g(function.)
+81 b(When)43 b(en)m(tering)i(a)0 204 y(function,)35 b(its)g(parameters)
+h(are)g(a)f(handle)f(to)i(the)g(function)e(activ)-5 b(ation)35
+b(record,)i(plus)c(the)j(\014le)e(and)h(the)h(line)0
+317 y(where)g(the)h(function)e(is)h(de\014ned)g(\(the)h(same)g
+(information)e(whic)m(h)g(is)h(pro)m(vided)f(b)m(y)i
+Fn(lua_funcinfo)p Fp(\);)g(when)0 430 y(lea)m(ving)30
+b(a)h(function,)e Fn(func)g Fp(is)h Fn(LUA_NOOBJECT)p
+Fp(,)d Fn(file)i Fp(is)h Fn("\(return\)")p Fp(,)e(and)h
+Fn(line)g Fp(is)h(0.)141 543 y(The)46 b(other)h(ho)s(ok)g(is)f(called)f
+(ev)m(ery)j(time)e(the)h(in)m(terpreter)f(c)m(hanges)i(the)f(line)e(of)
+i(co)s(de)g(it)f(is)g(execut-)0 656 y(ing.)63 b(Its)38
+b(only)f(parameter)h(is)f(the)h(line)f(n)m(um)m(b)s(er)f(\(the)j(same)f
+(information)e(whic)m(h)h(is)g(pro)m(vided)g(b)m(y)g(the)i(call)0
+769 y Fn(lua_currentline\(lua_stac)o(kedf)o(unct)o(ion)o(\(0\)\))o
+Fp(\).)34 b(This)25 b(second)h(ho)s(ok)h(is)e(only)h(called)g(if)f(the)
+i(activ)m(e)h(func-)0 882 y(tion)i(has)g(b)s(een)g(pre-compiled)e(with)
+h(debug)h(information)f(\(see)i(Section)f(4.8\).)141
+995 y(A)h(ho)s(ok)f(is)f(disabled)f(when)i(its)f(v)-5
+b(alue)30 b(is)g(NULL)g(\(0\),)i(whic)m(h)d(is)g(the)i(initial)c(v)-5
+b(alue)30 b(of)h(b)s(oth)e(ho)s(oks.)0 1281 y Fq(8)135
+b(Some)45 b(Examples)0 1484 y Fp(This)32 b(section)i(giv)m(es)g
+(examples)f(sho)m(wing)g(some)h(features)g(of)g(Lua.)51
+b(It)34 b(do)s(es)f(not)h(in)m(tend)f(to)h(co)m(v)m(er)i(the)e(whole)0
+1597 y(language,)d(but)f(only)f(to)i(illustrate)e(some)i(in)m
+(teresting)e(uses)h(of)h(the)f(system.)0 1840 y Ff(8.1)112
+b(Data)38 b(Structures)0 2012 y Fp(T)-8 b(ables)28 b(are)i(a)f(strong)g
+(unifying)d(data)k(constructor.)40 b(They)29 b(directly)e(implemen)m(t)
+h(a)h(m)m(ultitude)e(of)i(data)h(t)m(yp)s(es,)0 2125
+y(lik)m(e)g(ordinary)e(arra)m(ys,)j(records,)g(sets,)g(bags,)g(and)e
+(lists.)141 2238 y(Arra)m(ys)40 b(need)g(no)h(explanations.)69
+b(In)39 b(Lua,)k(it)d(is)f(con)m(v)m(en)m(tional)i(to)g(start)g
+(indices)d(from)i(1,)j(but)d(this)f(is)0 2351 y(only)28
+b(a)i(con)m(v)m(en)m(tion.)41 b(Arra)m(ys)29 b(can)h(b)s(e)e(indexed)g
+(b)m(y)h(0,)h(negativ)m(e)g(n)m(um)m(b)s(ers,)e(or)h(an)m(y)h(other)f
+(v)-5 b(alue)29 b(\(except)h Fm(nil)p Fp(\).)0 2464 y(Records)g(are)h
+(also)g(trivially)c(implemen)m(ted)i(b)m(y)h(the)h(syn)m(tactic)g
+(sugar)f Fn(a.x)p Fp(.)141 2576 y(The)j(b)s(est)g(w)m(a)m(y)i(to)f
+(implemen)m(t)e(a)i(set)g(is)e(to)j(store)f(its)f(elemen)m(ts)g(as)h
+(indices)e(of)h(a)h(table.)50 b(The)33 b(statemen)m(t)0
+2689 y Fn(s)47 b(=)h({})29 b Fp(creates)i(an)e(empt)m(y)h(set)g
+Fn(s)p Fp(.)40 b(The)29 b(statemen)m(t)i Fn(s[x])47 b(=)g(1)29
+b Fp(inserts)f(the)i(v)-5 b(alue)29 b(of)g Fn(x)g Fp(in)m(to)h(the)f
+(set)h Fn(s)p Fp(.)40 b(The)0 2802 y(expression)28 b
+Fn(s[x])g Fp(is)g(true)g(if)g(and)h(only)f(if)g Fn(x)g
+Fp(b)s(elongs)g(to)i Fn(s)p Fp(.)40 b(Finally)-8 b(,)28
+b(the)h(statemen)m(t)i Fn(s[x])46 b(=)i(nil)28 b Fp(remo)m(v)m(es)i
+Fn(x)0 2915 y Fp(from)g Fn(s)p Fp(.)141 3028 y(Bags)i(can)g(b)s(e)e
+(implemen)m(ted)g(similarly)e(to)k(sets,)g(but)e(using)g(the)h(v)-5
+b(alue)31 b(asso)s(ciated)h(to)f(an)g(elemen)m(t)h(as)g(its)0
+3141 y(coun)m(ter.)41 b(So,)31 b(to)g(insert)e(an)i(elemen)m(t,)g(the)f
+(follo)m(wing)f(co)s(de)i(is)e(enough:)0 3329 y Fn(if)47
+b(s[x])g(then)f(s[x])h(=)h(s[x]+1)e(else)g(s[x])h(=)g(1)h(end)0
+3516 y Fp(and)30 b(to)h(remo)m(v)m(e)h(an)e(elemen)m(t:)0
+3704 y Fn(if)47 b(s[x])g(then)f(s[x])h(=)h(s[x]-1)e(end)0
+3817 y(if)h(s[x])g(==)g(0)g(then)g(s[x])g(=)g(nil)g(end)141
+4004 y Fp(Lisp-lik)m(e)41 b(lists)g(also)h(ha)m(v)m(e)i(an)e(easy)i
+(implemen)m(tation.)75 b(The)42 b(\\cons")i(of)f(t)m(w)m(o)g(elemen)m
+(ts)g Fn(x)g Fp(and)e Fn(y)i Fp(can)0 4117 y(b)s(e)32
+b(created)i(with)e(the)h(co)s(de)g Fn(l)48 b(=)f({car=x,)f(cdr=y})p
+Fp(.)h(The)32 b(expression)g Fn(l.car)g Fp(extracts)i(the)f(header,)h
+(while)0 4230 y Fn(l.cdr)27 b Fp(extracts)j(the)f(tail.)39
+b(An)28 b(alternativ)m(e)h(w)m(a)m(y)h(is)e(to)h(create)h(the)f(list)e
+(directly)g(with)h Fn(l={x,y})p Fp(,)f(and)h(then)g(to)0
+4343 y(extract)k(the)e(header)h(with)e Fn(l[1])g Fp(and)h(the)g(tail)g
+(with)f Fn(l[2])p Fp(.)0 4587 y Ff(8.2)112 b(The)38 b(F)-9
+b(unctions)37 b Fb(next)h Ff(and)h Fb(nextvar)0 4758
+y Fp(This)34 b(example)i(sho)m(ws)g(ho)m(w)g(to)h(use)f(the)g(function)
+f Fn(next)g Fp(to)i(iterate)f(o)m(v)m(er)i(the)e(\014elds)f(of)h(a)g
+(table.)58 b(F)-8 b(unction)0 4871 y Fn(clone)29 b Fp(receiv)m(es)i(an)
+m(y)g(table)f(and)g(returns)f(a)i(clone)f(of)h(it.)0
+5059 y Fn(function)46 b(clone)g(\(t\))524 b(--)47 b(t)h(is)f(a)g(table)
+95 5172 y(local)g(new_t)f(=)i({})524 b(--)47 b(create)f(a)i(new)f
+(table)95 5285 y(local)g(i,)g(v)g(=)h(next\(t,)e(nil\))94
+b(--)47 b(i)h(is)f(an)g(index)f(of)i(t,)f(v)g(=)h(t[i])1905
+5589 y Fp(24)p eop
%%Page: 25 25
-25 24 bop 54 199 a Fm(print\(i\))54 256 y(i,)24 b(v)f(=)h(nextvar\(i\))
-6 312 y(end)-42 369 y(end)-42 488 y Fe(8.3)56 b(String)19
-b(Manipulation)-42 574 y Fo(The)d(\014rst)f(example)f(is)g(a)h
-(function)g(to)g(trim)e(extra)i(blanks)g(at)f(the)h(b)q(eginning)h(and)
-f(end)h(of)f(a)g(string.)-42 654 y Fm(function)23 b(trim\(s\))6
-710 y(local)g(l)h(=)g(1)6 767 y(while)f(strsub\(s,l,l\))f(==)i(')g(')g
-(do)54 823 y(l)g(=)f(l+1)6 880 y(end)6 936 y(local)g(r)h(=)g
-(strlen\(s\))6 992 y(while)f(strsub\(s,r,r\))f(==)i(')g(')g(do)54
-1049 y(r)g(=)f(r-1)6 1105 y(end)6 1162 y(return)g(strsub\(s,l,r\))-42
-1218 y(end)29 1298 y Fo(The)15 b(second)h(example)e(sho)o(ws)h(a)g
-(function)g(that)f(eliminates)f(all)h(blanks)h(of)g(a)g(string.)-42
-1379 y Fm(function)23 b(remove_blanks)f(\(s\))6 1435
-y(local)h(b)h(=)g(strfind\(s,)e(')i('\))6 1492 y(while)f(b)h(do)54
-1548 y(s)g(=)f(strsub\(s,)g(1,)h(b-1\))f(..)h(strsub\(s,)e(b+1\))54
-1604 y(b)i(=)f(strfind\(s,)g(')h('\))6 1661 y(end)6 1717
-y(return)f(s)-42 1774 y(end)-42 1893 y Fe(8.4)56 b(V)-5
-b(ariable)21 b(n)n(um)n(b)r(er)d(of)h(argumen)n(ts)-42
-1979 y Fo(Lua)14 b(do)q(es)f(not)g(pro)o(vide)f(an)o(y)h(explicit)f
-(mec)o(hanism)f(to)h(deal)h(with)f(v)m(ariable)h(n)o(um)o(b)q(er)f(of)h
-(argumen)o(ts.)k(Ho)o(w)o(ev)o(er,)-42 2035 y(one)f(can)g(use)g(table)f
-(constructors)g(to)g(sim)o(ulate)e(this)i(mec)o(hanism.)k(As)d(an)g
-(example,)e(supp)q(ose)i(a)g(function)f(to)-42 2092 y(concatenate)g
-(all)g(its)f(argumen)o(ts.)k(It)d(could)g(b)q(e)h(written)f(lik)o(e)-42
-2172 y Fm(function)23 b(concat)g(\(o\))6 2228 y(local)g(i)h(=)g(1)6
-2285 y(local)f(s)h(=)g('')6 2341 y(while)f(o[i])h(do)54
-2398 y(s)g(=)f(s)h(..)g(o[i])54 2454 y(i)g(=)f(i+1)6
-2511 y(end)6 2567 y(return)g(s)-42 2623 y(end)911 2748
-y Fo(25)p eop
+25 24 bop 95 91 a Fn(while)47 b(i)g(do)191 204 y(new_t[i])e(=)j(v)191
+317 y(i,)f(v)h(=)f(next\(t,)f(i\))381 b(--)47 b(get)g(next)g(index)95
+430 y(end)95 543 y(return)g(new_t)0 656 y(end)141 825
+y Fp(The)30 b(next)h(example)f(prin)m(ts)e(the)j(names)f(of)h(all)e
+(global)h(v)-5 b(ariables)29 b(in)g(the)h(system)h(with)e(non)h(nil)e
+(v)-5 b(alues:)0 995 y Fn(function)46 b(printGlobalVariables)c(\(\))95
+1108 y(local)47 b(i,)g(v)g(=)h(nextvar\(nil\))95 1221
+y(while)f(i)g(do)191 1334 y(print\(i\))191 1447 y(i,)g(v)h(=)f
+(nextvar\(i\))95 1560 y(end)0 1672 y(end)0 1913 y Ff(8.3)112
+b(String)37 b(Manipulation)0 2084 y Fp(The)30 b(\014rst)f(example)i(is)
+e(a)i(function)e(to)i(trim)e(extra)i(white-spaces)g(at)g(the)f(b)s
+(eginning)e(and)i(end)f(of)i(a)g(string.)0 2254 y Fn(function)46
+b(trim\(s\))95 2367 y(local)h(_,)g(i)g(=)h(strfind\(s,)d('^)i(*'\))95
+2480 y(local)g(f,)g(__)g(=)h(strfind\(s,)d(')i(*$'\))95
+2592 y(return)g(strsub\(s,)e(i+1,)h(f-1\))0 2705 y(end)141
+2875 y Fp(The)30 b(second)g(example)h(sho)m(ws)f(a)g(function)f(that)i
+(eliminates)e(all)g(spaces)i(of)g(a)g(string.)0 3044
+y Fn(function)46 b(remove_blanks)e(\(s\))95 3157 y(return)j(gsub\(s,)e
+("\045s\045s*",)h(""\))0 3270 y(end)0 3510 y Ff(8.4)112
+b(V)-9 b(ariable)36 b(n)m(um)m(b)s(er)i(of)f(argumen)m(ts)0
+3682 y Fp(Lua)24 b(do)s(es)g(not)g(pro)m(vide)f(an)m(y)i(explicit)d
+(mec)m(hanism)i(to)g(deal)g(with)f(v)-5 b(ariable)23
+b(n)m(um)m(b)s(er)g(of)h(argumen)m(ts)g(in)f(function)0
+3795 y(calls.)38 b(Ho)m(w)m(ev)m(er,)28 b(one)d(can)g(use)f(table)h
+(constructors)g(to)g(sim)m(ulate)f(this)f(mec)m(hanism.)39
+b(As)24 b(an)h(example,)g(supp)s(ose)0 3908 y(a)31 b(function)e(to)i
+(concatenate)i(all)c(its)h(argumen)m(ts.)41 b(It)30 b(could)g(b)s(e)g
+(written)f(lik)m(e)0 4077 y Fn(function)46 b(concat)g(\(o\))95
+4190 y(local)h(i)g(=)h(1)95 4303 y(local)f(s)g(=)h('')95
+4416 y(while)f(o[i])f(do)191 4529 y(s)h(=)h(s)f(..)g(o[i])191
+4642 y(i)g(=)h(i+1)95 4755 y(end)95 4868 y(return)f(s)0
+4981 y(end)0 5150 y Fp(T)-8 b(o)31 b(call)f(it,)g(one)g(uses)g(a)h
+(table)f(constructor)h(to)g(join)f(all)f(argumen)m(ts:)95
+5320 y Fn(x)48 b(=)f(concat{"hello)e(",)i("john",)f(")h(and)g(",)g
+("mary"})1905 5589 y Fp(25)p eop
%%Page: 26 26
-26 25 bop -42 199 a Fo(T)l(o)15 b(call)g(it,)f(one)h(uses)h(a)e(table)h
-(constructor)g(to)f(join)h(all)f(argumen)o(ts:)6 293
-y Fm(x)24 b(=)g(concat{"hello)e(",)h("john",)g(")h(and)f(",)h("mary"})
--42 415 y Fe(8.5)56 b(P)n(ersistence)-42 501 y Fo(Because)21
-b(of)e(its)g(re\015exiv)o(e)g(facilities,)g(p)q(ersistence)h(in)f(Lua)h
-(can)g(b)q(e)g(ac)o(hiev)o(ed)g(within)f(the)g(language.)33
-b(This)-42 557 y(section)12 b(sho)o(ws)f(some)g(w)o(a)o(ys)g(to)g
-(store)g(and)h(retriev)o(e)f(v)m(alues)i(in)e(Lua,)i(using)f(a)f(text)h
-(\014le)g(written)e(in)i(the)g(language)-42 614 y(itself)j(as)f(the)i
-(storage)e(media.)29 670 y(T)l(o)h(store)f(a)h(single)g(v)m(alue)g
-(with)g(a)g(name,)f(the)h(follo)o(wing)e(co)q(de)j(is)e(enough:)-42
-764 y Fm(function)23 b(store)g(\(name,)g(value\))6 820
-y(write\(format\('\\n\045s)f(=',)h(name\)\))6 877 y
-(write_value\(value\))-42 933 y(end)-42 1039 y(function)g(write_value)g
-(\(value\))6 1096 y(local)g(t)h(=)g(type\(value\))102
-1152 y(if)f(t)h(==)g('nil')94 b(then)24 b(write\('nil'\))6
-1209 y(elseif)f(t)h(==)g('number')e(then)i(write\(value\))6
-1265 y(elseif)f(t)h(==)g('string')e(then)i(write\(value,)e('q'\))6
-1322 y(end)-42 1378 y(end)-42 1484 y Fo(In)16 b(order)f(to)g(restore)f
-(this)h(v)m(alue,)g(a)g Fm(lua_dofile)f Fo(su\016ces.)29
-1541 y(Storing)i(tables)h(is)g(a)g(little)e(more)h(complex.)25
-b(Assuming)16 b(that)g(the)h(table)g(is)g(a)g(tree,)g(and)g(all)f
-(indices)i(are)-42 1597 y(iden)o(ti\014ers)13 b(\(that)e(is,)i(the)g
-(tables)f(are)g(b)q(eing)h(used)g(as)g(records\),)f(its)g(v)m(alue)h
-(can)g(b)q(e)g(written)f(directly)g(with)g(table)-42
-1654 y(constructors.)19 b(First,)14 b(the)h(function)g
-Fm(write_value)f Fo(is)h(c)o(hanged)g(to)-42 1748 y Fm(function)23
-b(write_value)g(\(value\))6 1804 y(local)g(t)h(=)g(type\(value\))102
-1860 y(if)f(t)h(==)g('nil')94 b(then)24 b(write\('nil'\))6
-1917 y(elseif)f(t)h(==)g('number')e(then)i(write\(value\))6
-1973 y(elseif)f(t)h(==)g('string')e(then)i(write\(value,)e('q'\))6
-2030 y(elseif)h(t)h(==)g('table')46 b(then)24 b(write_record\(value\))6
-2086 y(end)-42 2143 y(end)-42 2237 y Fo(The)16 b(function)f
-Fm(write_record)e Fo(is:)-42 2330 y Fm(function)23 b(write_record\(t\))
-6 2387 y(local)g(i,)h(v)g(=)f(next\(t,)g(nil\))6 2443
-y(write\('{'\))47 b(--)23 b(starts)g(constructor)6 2500
-y(while)g(i)h(do)54 2556 y(store\(i,)f(v\))54 2613 y(write\(',)g('\))
-911 2748 y Fo(26)p eop
-%%Page: 27 27
-27 26 bop 54 199 a Fm(i,)24 b(v)f(=)h(next\(t,)f(i\))6
-256 y(end)6 312 y(write\('}'\))47 b(--)23 b(closes)g(constructor)-42
-369 y(end)-42 490 y Fe(8.6)56 b(Inheritance)-42 576 y
-Fo(The)15 b(fallbac)o(k)f(for)g(absen)o(t)g(indices)h(can)g(b)q(e)g
-(used)g(to)f(implemen)o(t)e(man)o(y)h(kinds)i(of)f(inheritance)g(in)h
-(Lua.)20 b(As)15 b(an)-42 632 y(example,)f(the)h(follo)o(wing)e(co)q
-(de)j(implemen)o(ts)d(single)h(inheritance:)-42 726 y
-Fm(function)23 b(Index)g(\(t,f\))6 782 y(if)h(f)g(==)f('parent')g(then)
-47 b(--)24 b(to)f(avoid)g(loop)54 838 y(return)g(OldIndex\(t,f\))6
-895 y(end)6 951 y(local)g(p)h(=)g(t.parent)6 1008 y(if)g(type\(p\))f
-(==)g('table')g(then)54 1064 y(return)g(p[f])6 1121 y(else)54
-1177 y(return)g(OldIndex\(t,f\))6 1234 y(end)-42 1290
-y(end)-42 1403 y(OldIndex)g(=)h(setfallback\("index",)d(Index\))-42
-1496 y Fo(Whenev)o(er)15 b(Lua)g(attempts)d(to)i(access)h(an)f(absen)o
-(t)g(\014eld)h(in)f(a)g(table,)g(it)g(calls)f(the)i(fallbac)o(k)e
-(function)h Fm(Index)p Fo(.)19 b(If)-42 1553 y(the)14
-b(table)e(has)h(a)g(\014eld)h Fm(parent)e Fo(with)h(a)g(table)f(v)m
-(alue,)i(then)f(Lua)h(attempts)d(to)h(access)i(the)f(desired)g(\014eld)
-h(in)f(this)-42 1609 y(paren)o(t)i(ob)s(ject.)k(This)c(pro)q(cess)g(is)
-f(rep)q(eated)h(\\up)o(w)o(ards")f(un)o(til)g(a)h(v)m(alue)g(for)f(the)
-h(\014eld)g(is)g(found)g(or)f(the)h(ob)s(ject)-42 1665
-y(has)h(no)f(paren)o(t.)k(In)d(the)f(latter)f(case,)h(the)g(previous)g
-(fallbac)o(k)f(is)h(called)g(to)f(supply)i(a)e(v)m(alue)i(for)e(the)i
-(\014eld.)29 1722 y(When)e(b)q(etter)g(p)q(erformance)f(is)g(needed,)i
-(the)f(same)e(fallbac)o(k)h(ma)o(y)f(b)q(e)i(implemen)o(ted)e(in)i(C,)f
-(as)g(illustrated)-42 1778 y(in)j(Figure)e(1.)20 b(This)14
-b(co)q(de)i(m)o(ust)e(b)q(e)i(registered)e(with:)6 1871
-y Fm(lua_pushstring\("parent"\);)6 1928 y(lockedParentName)22
-b(=)i(lua_ref\(1\);)6 1984 y(lua_pushobject\(lua_setfallba)o(ck\("ind)o
-(ex",)d(Index\)\);)6 2041 y(lockedOldIndex)h(=)i(lua_ref\(1\);)-42
-2134 y Fo(Notice)15 b(ho)o(w)g(the)g(string)f Fm("parent")g
-Fo(is)h(k)o(ept)g(lo)q(c)o(k)o(ed)g(in)g(Lua)h(for)e(optimal)f(p)q
-(erformance.)-42 2255 y Fe(8.7)56 b(Programming)19 b(with)h(Classes)-42
-2341 y Fo(There)e(are)g(man)o(y)e(di\013eren)o(t)h(w)o(a)o(ys)g(to)g
-(do)h(ob)s(ject-orien)o(ted)e(programming)e(in)k(Lua.)28
-b(This)17 b(section)h(presen)o(ts)-42 2398 y(one)g(p)q(ossible)f(w)o(a)
-o(y)f(to)g(implemen)o(t)f(classes,)h(using)h(the)g(inheritance)g(mec)o
-(hanism)e(presen)o(ted)j(ab)q(o)o(v)o(e.)25 b Fn(Ple)n(ase)-42
-2454 y(notic)n(e:)20 b(the)d(fol)r(lowing)e(examples)g(only)h(work)g
-(with)g(the)h(index)e(fal)r(lb)n(ack)g(r)n(e)n(de\014ne)n(d)g(ac)n(c)n
-(or)n(ding)g(to)h(Se)n(ction)e(8.6)p Fo(.)29 2511 y(As)j(one)g(could)f
-(exp)q(ect,)i(a)e(go)q(o)q(d)h(w)o(a)o(y)e(to)h(represen)o(t)h(a)f
-(class)g(is)h(as)f(a)g(table.)24 b(This)16 b(table)g(will)g(con)o(tain)
-g(all)-42 2567 y(instance)f(metho)q(ds)f(of)h(the)g(class,)f(plus)h(ev)
-o(en)o(tual)f(default)h(v)m(alues)g(for)f(instance)h(v)m(ariables.)k
-(An)c(instance)g(of)g(a)-42 2623 y(class)g(has)g(its)f
-Fm(parent)h Fo(\014eld)g(p)q(oin)o(ting)g(to)f(the)h(class,)g(and)g(so)
-g(it)f(\\inherits")g(all)g(metho)q(ds.)911 2748 y(27)p
+26 25 bop 0 91 a Ff(8.5)112 b(P)m(ersistence)0 263 y
+Fp(Because)41 b(of)e(its)g(re\015exiv)m(e)g(facilities,)h(p)s
+(ersistence)e(in)g(Lua)h(can)g(b)s(e)g(ac)m(hiev)m(ed)h(within)d(the)i
+(language.)68 b(This)0 376 y(section)24 b(sho)m(ws)g(some)g(w)m(a)m(ys)
+g(to)h(store)f(and)g(retriev)m(e)g(v)-5 b(alues)23 b(in)g(Lua,)i(using)
+d(a)i(text)h(\014le)e(written)g(in)f(the)j(language)0
+489 y(itself)k(as)i(the)f(storage)i(media.)141 602 y(T)-8
+b(o)31 b(store)g(a)g(single)e(v)-5 b(alue)30 b(with)f(a)h(name,)h(the)g
+(follo)m(wing)e(co)s(de)h(is)g(enough:)0 770 y Fn(function)46
+b(store)g(\(name,)g(value\))95 883 y(write\(format\('\\n\045s)d(=',)k
+(name\)\))95 996 y(write_value\(value\))0 1109 y(end)0
+1298 y(function)f(write_value)e(\(value\))95 1411 y(local)j(t)g(=)h
+(type\(value\))286 1524 y(if)g(t)f(==)g('nil')190 b(then)46
+b(write\('nil'\))95 1637 y(elseif)h(t)g(==)g('number')f(then)g
+(write\(value\))95 1750 y(elseif)h(t)g(==)g('string')f(then)g
+(write\(value,)f('q'\))95 1863 y(end)0 1976 y(end)0 2165
+y Fp(In)30 b(order)g(to)h(restore)g(this)e(v)-5 b(alue,)30
+b(a)h Fn(lua_dofile)c Fp(su\016ces.)141 2278 y(Storing)k(tables)h(is)f
+(a)i(little)e(more)h(complex.)45 b(Assuming)31 b(that)h(the)h(table)f
+(is)f(a)h(tree,)i(and)d(that)i(all)e(indices)0 2391 y(are)f(iden)m
+(ti\014ers)e(\(that)j(is,)f(the)g(tables)f(are)i(b)s(eing)d(used)i(as)g
+(records\),)g(then)g(its)f(v)-5 b(alue)30 b(can)g(b)s(e)f(written)g
+(directly)0 2504 y(with)g(table)h(constructors.)41 b(First,)30
+b(the)h(function)e Fn(write_value)e Fp(is)j(c)m(hanged)h(to)0
+2672 y Fn(function)46 b(write_value)e(\(value\))95 2785
+y(local)j(t)g(=)h(type\(value\))286 2898 y(if)g(t)f(==)g('nil')190
+b(then)46 b(write\('nil'\))95 3011 y(elseif)h(t)g(==)g('number')f(then)
+g(write\(value\))95 3124 y(elseif)h(t)g(==)g('string')f(then)g
+(write\(value,)f('q'\))95 3237 y(elseif)i(t)g(==)g('table')94
+b(then)46 b(write_record\(value\))95 3350 y(end)0 3463
+y(end)0 3631 y Fp(The)30 b(function)f Fn(write_record)e
+Fp(is:)0 3799 y Fn(function)46 b(write_record\(t\))95
+3912 y(local)h(i,)g(v)g(=)h(next\(t,)e(nil\))95 4025
+y(write\('{'\))93 b(--)47 b(starts)f(constructor)95 4138
+y(while)h(i)g(do)191 4251 y(store\(i,)e(v\))191 4364
+y(write\(',)g('\))191 4477 y(i,)i(v)h(=)f(next\(t,)f(i\))95
+4590 y(end)95 4703 y(write\('}'\))93 b(--)47 b(closes)f(constructor)0
+4816 y(end)0 5055 y Ff(8.6)112 b(Inheritance)0 5227 y
+Fp(The)29 b(fallbac)m(k)f(for)h(absen)m(t)h(indices)e(can)h(b)s(e)g
+(used)f(to)i(implemen)m(t)e(man)m(y)h(kinds)f(of)h(inheritance)f(in)g
+(Lua.)40 b(As)29 b(an)0 5340 y(example,)h(the)h(follo)m(wing)e(co)s(de)
+h(implemen)m(ts)f(single)g(inheritance:)1905 5589 y(26)p
eop
+%%Page: 27 27
+27 26 bop 0 91 a Fn(function)46 b(Index)g(\(t,f\))95
+204 y(if)i(f)f(==)g('parent')f(then)94 b(--)47 b(to)h(avoid)e(loop)191
+317 y(return)g(OldIndex\(t,f\))95 430 y(end)95 543 y(local)h(p)g(=)h
+(t.parent)95 656 y(if)g(type\(p\))d(==)j('table')d(then)191
+769 y(return)h(p[f])95 882 y(else)191 995 y(return)g(OldIndex\(t,f\))95
+1108 y(end)0 1220 y(end)0 1446 y(OldIndex)g(=)h(setfallback\("index",)
+42 b(Index\))0 1634 y Fp(Whenev)m(er)30 b(Lua)e(attempts)i(to)f(access)
+i(an)d(absen)m(t)i(\014eld)d(in)h(a)h(table,)g(it)g(calls)f(the)h
+(fallbac)m(k)f(function)g Fn(Index)p Fp(.)38 b(If)0 1747
+y(the)27 b(table)f(has)g(a)h(\014eld)e Fn(parent)f Fp(with)h(a)i(table)
+f(v)-5 b(alue,)27 b(then)f(Lua)g(attempts)i(to)f(access)h(the)e
+(desired)f(\014eld)g(in)g(this)0 1860 y(paren)m(t)30
+b(ob)5 b(ject.)41 b(This)28 b(pro)s(cess)h(is)g(rep)s(eated)h(\\up)m(w)
+m(ards")g(un)m(til)d(a)k(v)-5 b(alue)29 b(for)g(the)h(\014eld)e(is)h
+(found)f(or)i(the)g(ob)5 b(ject)0 1973 y(has)30 b(no)g(paren)m(t.)41
+b(In)30 b(the)h(latter)f(case,)i(the)f(previous)d(fallbac)m(k)i(is)g
+(called)f(to)i(supply)d(a)j(v)-5 b(alue)30 b(for)g(the)h(\014eld.)141
+2086 y(When)c(b)s(etter)h(p)s(erformance)f(is)f(needed,)i(the)g(same)g
+(fallbac)m(k)f(ma)m(y)h(b)s(e)f(implemen)m(ted)f(in)g(C,)h(as)h
+(illustrated)0 2198 y(in)h(Figure)h(1.)41 b(This)29 b(co)s(de)h(m)m
+(ust)g(b)s(e)g(registered)g(with:)95 2386 y Fn
+(lua_pushstring\("parent"\);)95 2499 y(lockedParentName)44
+b(=)j(lua_ref\(1\);)95 2612 y(lua_pushobject\(lua_setfall)o(back)o
+(\("i)o(ndex)o(",)42 b(Index\)\);)95 2725 y(lockedOldIndex)i(=)k
+(lua_ref\(1\);)0 2912 y Fp(Notice)31 b(ho)m(w)g(the)f(string)g
+Fn("parent")e Fp(is)h(k)m(ept)i(lo)s(c)m(k)m(ed)g(in)e(Lua)h(for)g
+(optimal)g(p)s(erformance.)0 3156 y Ff(8.7)112 b(Programming)36
+b(with)g(Classes)0 3327 y Fp(There)f(are)h(man)m(y)f(di\013eren)m(t)g
+(w)m(a)m(ys)i(to)f(do)f(ob)5 b(ject-orien)m(ted)37 b(programming)d(in)g
+(Lua.)56 b(This)33 b(section)j(presen)m(ts)0 3440 y(one)e(p)s(ossible)e
+(w)m(a)m(y)j(to)g(implemen)m(t)e(classes,)j(using)c(the)j(inheritance)d
+(mec)m(hanism)i(presen)m(ted)g(ab)s(o)m(v)m(e.)53 b Fo(Ple)-5
+b(ase)0 3553 y(notic)g(e:)42 b(the)32 b(fol)5 b(lowing)33
+b(examples)g(only)g(work)f(with)h(the)f(index)g(fal)5
+b(lb)-5 b(ack)33 b(r)-5 b(e)g(de\014ne)g(d)33 b(ac)-5
+b(c)g(or)g(ding)34 b(to)f(Se)-5 b(ction)32 b(8.6)p Fp(.)141
+3666 y(As)d(one)g(could)e(exp)s(ect,)j(a)f(go)s(o)s(d)f(w)m(a)m(y)i(to)
+f(represen)m(t)g(a)g(class)f(is)g(with)f(a)i(table.)40
+b(This)27 b(table)h(will)e(con)m(tain)j(all)0 3779 y(instance)h(metho)s
+(ds)g(of)g(the)h(class,)f(plus)f(optional)h(default)f(v)-5
+b(alues)30 b(for)g(instance)g(v)-5 b(ariables.)40 b(An)30
+b(instance)g(of)h(a)0 3892 y(class)f(has)g(its)g Fn(parent)f
+Fp(\014eld)g(p)s(oin)m(ting)f(to)j(the)g(class,)f(and)g(so)h(it)f
+(\\inherits")f(all)g(metho)s(ds.)141 4005 y(F)-8 b(or)28
+b(instance,)f(a)g(class)g Fn(Point)e Fp(can)i(b)s(e)f(describ)s(ed)f
+(as)i(in)f(Figure)g(2.)40 b(F)-8 b(unction)26 b Fn(create)f
+Fp(helps)h(the)h(creation)0 4118 y(of)e(new)f(p)s(oin)m(ts,)h(adding)e
+(the)i(paren)m(t)g(\014eld.)37 b(F)-8 b(unction)24 b
+Fn(move)g Fp(is)g(an)g(example)g(of)h(an)g(instance)f(metho)s(d.)38
+b(Finally)-8 b(,)0 4231 y(a)38 b(sub)s(class)d(can)j(b)s(e)e(created)i
+(as)g(a)g(new)e(table,)j(with)d(the)i Fn(parent)d Fp(\014eld)h(p)s(oin)
+m(ting)f(to)j(its)f(sup)s(erclass.)60 b(It)37 b(is)0
+4344 y(in)m(teresting)c(to)h(notice)f(ho)m(w)g(the)h(use)f(of)g
+Fn(self)f Fp(in)g(metho)s(d)h Fn(create)e Fp(allo)m(ws)i(this)f(metho)s
+(d)h(to)h(w)m(ork)f(prop)s(erly)0 4457 y(ev)m(en)e(when)e(inherited)f
+(b)m(y)i(a)h(sub)s(class.)39 b(As)30 b(usual,)f(a)i(sub)s(class)d(ma)m
+(y)j(o)m(v)m(erwrite)g(an)m(y)g(inherited)d(metho)s(d)h(with)0
+4569 y(its)h(o)m(wn)g(v)m(ersion.)0 4813 y Ff(8.8)112
+b(Mo)s(dules)0 4985 y Fp(Here)33 b(w)m(e)f(explain)f(one)i(p)s(ossible)
+c(w)m(a)m(y)34 b(to)f(sim)m(ulate)e(mo)s(dules)f(in)h(Lua.)46
+b(The)32 b(main)f(idea)h(is)f(to)i(use)f(a)h(table)f(to)0
+5097 y(store)f(the)g(mo)s(dule)d(functions.)141 5210
+y(A)j(mo)s(dule)d(should)h(b)s(e)g(written)h(as)h(a)f(separate)i(c)m(h)
+m(unk,)e(starting)g(with:)1905 5589 y(27)p eop
%%Page: 28 28
-28 27 bop -42 261 1950 6 v -42 355 a Fm(#include)23 b("lua.h")-42
-467 y(int)h(lockedParentName;)45 b(/*)24 b(lock)f(index)g(for)h(the)f
-(string)g("parent")g(*/)-42 524 y(int)h(lockedOldIndex;)93
-b(/*)24 b(previous)f(fallback)f(function)h(*/)-42 637
-y(void)h(callOldFallback)e(\(lua_Object)g(table,)h(lua_Object)g
-(index\))-42 693 y({)6 750 y(lua_Object)g(oldIndex)f(=)i
-(lua_getref\(lockedOldIndex\);)6 806 y(lua_pushobject\(table\);)6
-863 y(lua_pushobject\(index\);)6 919 y(lua_callfunction\(oldIndex\);)
--42 976 y(})-42 1088 y(void)g(Index)f(\(void\))-42 1145
-y({)6 1201 y(lua_Object)g(table)g(=)h(lua_getparam\(1\);)6
-1258 y(lua_Object)f(index)g(=)h(lua_getparam\(2\);)6
-1314 y(lua_Object)f(parent;)6 1371 y(if)h(\(lua_isstring\(index\))d(&&)
-j(strcmp\(lua_getstring\(in)o(dex\),)d("parent"\))h(==)i(0\))6
-1427 y({)54 1484 y(callOldFallback\(table,)d(index\);)54
-1540 y(return;)6 1597 y(})6 1653 y(lua_pushobject\(table\);)6
-1709 y(lua_pushref\(lockedParentName)o(\);)6 1766 y(parent)i(=)h
-(lua_getsubscript\(\);)6 1822 y(if)g(\(lua_istable\(parent\)\))6
-1879 y({)54 1935 y(lua_pushobject\(parent\);)54 1992
-y(lua_pushobject\(index\);)54 2048 y(/*)g(return)f(result)g(from)g
-(getsubscript)f(*/)54 2105 y(lua_pushobject\(lua_getsubs)o(cript\(\))o
-(\);)6 2161 y(})6 2218 y(else)54 2274 y(callOldFallback\(table,)f
-(index\);)-42 2330 y(})665 2466 y Fo(Figure)15 b(1:)k(Inheritance)d(in)
-f(C.)p -42 2522 V 911 2748 a(28)p eop
+28 27 bop 0 301 3900 12 v 0 489 a Fn(#include)46 b("lua.h")0
+715 y(int)h(lockedParentName;)91 b(/*)47 b(lock)g(index)f(for)h(the)g
+(string)f("parent")f(*/)0 828 y(int)i(lockedOldIndex;)187
+b(/*)47 b(previous)e(fallback)h(function)g(*/)0 1054
+y(void)h(callOldFallback)c(\(lua_Object)i(table,)h(lua_Object)f
+(index\))0 1167 y({)95 1279 y(lua_Object)g(oldIndex)h(=)h
+(lua_getref\(lockedOldIndex\))o(;)95 1392 y(lua_pushobject\(table\);)95
+1505 y(lua_pushobject\(index\);)95 1618 y(lua_callfunction\(oldIndex\))
+o(;)95 1731 y(if)h(\(lua_getresult\(1\))43 b(!=)k(LUA_NOOBJECT\))191
+1844 y(lua_pushobject\(lua_getre)o(sult)o(\(1\))o(\);)89
+b(/*)48 b(return)e(result)g(*/)0 1957 y(})0 2183 y(void)h(Index)f
+(\(void\))0 2296 y({)95 2409 y(lua_Object)f(table)i(=)g
+(lua_getparam\(1\);)95 2521 y(lua_Object)e(index)i(=)g
+(lua_getparam\(2\);)95 2634 y(lua_Object)e(parent;)95
+2747 y(if)j(\(lua_isstring\(index\))42 b(&&)47 b
+(strcmp\(lua_getstring\(inde)o(x\),)41 b("parent"\))k(==)j(0\))95
+2860 y({)191 2973 y(callOldFallback\(table,)42 b(index\);)191
+3086 y(return;)95 3199 y(})95 3312 y(lua_pushobject\(table\);)95
+3425 y(lua_pushref\(lockedParentNa)o(me\);)95 3538 y(parent)47
+b(=)g(lua_getsubscript\(\);)95 3651 y(if)h(\(lua_istable\(parent\)\))95
+3763 y({)191 3876 y(lua_pushobject\(parent\);)191 3989
+y(lua_pushobject\(index\);)191 4102 y(/*)f(return)f(result)g(from)h
+(getsubscript)d(*/)191 4215 y(lua_pushobject\(lua_getsu)o(bscr)o(ipt)o
+(\(\)\);)95 4328 y(})95 4441 y(else)191 4554 y(callOldFallback\(table,)
+e(index\);)0 4667 y(})1414 4937 y Fp(Figure)30 b(1:)41
+b(Inheritance)29 b(in)g(C.)p 0 5050 V 1905 5589 a(28)p
+eop
%%Page: 29 29
-29 28 bop -42 159 1950 6 v -42 253 a Fm(Point)24 b(=)f({x)h(=)g(0,)f(y)
-h(=)g(0})-42 366 y(function)f(Point:create)f(\(o\))6
-423 y(o.parent)h(=)h(self)6 479 y(return)f(o)-42 536
-y(end)-42 648 y(function)g(Point:move)g(\(p\))6 705 y(self.x)g(=)h
-(self.x)f(+)h(p.x)6 761 y(self.y)f(=)h(self.y)f(+)h(p.y)-42
-818 y(end)-42 931 y(...)-42 1044 y(--)-42 1100 y(--)g(creating)f
-(points)-42 1157 y(--)-42 1213 y(p1)h(=)g(Point:create{x)e(=)h(10,)h(y)
-g(=)f(20})-42 1270 y(p2)h(=)g(Point:create{x)e(=)h(10})48
-b(--)23 b(y)h(will)f(be)h(inherited)f(until)g(it)g(is)h(set)-42
-1382 y(--)-42 1439 y(--)g(example)f(of)h(a)f(method)g(invocation)-42
-1495 y(--)-42 1552 y(p1:move\(p2\))690 1687 y Fo(Figure)15
-b(2:)k(A)c(Class)g(P)o(oin)o(t.)p -42 1744 V 29 1872
-a(F)l(or)e(instance,)g(a)g(class)g Fm(Point)g Fo(can)g(b)q(e)h(describ)
-q(ed)h(as)e(in)g(Figure)f(2.)19 b(F)l(unction)14 b Fm(create)e
-Fo(helps)i(the)f(creation)-42 1928 y(of)f(new)h(p)q(oin)o(ts,)f(adding)
-g(the)g(paren)o(t)g(\014eld.)20 b(F)l(unction)12 b Fm(move)f
-Fo(is)h(an)h(example)e(of)h(an)g(instance)g(metho)q(d.)18
-b(Finally)l(,)-42 1984 y(a)h(sub)q(class)f(can)h(b)q(e)h(created)e(as)g
-(a)h(new)g(table,)f(with)g(the)h Fm(parent)f Fo(\014eld)h(p)q(oin)o
-(ting)e(to)h(its)g(sup)q(erclass.)30 b(It)19 b(is)-42
-2041 y(in)o(teresting)d(to)g(notice)g(ho)o(w)g(the)h(use)g(of)f
-Fm(self)g Fo(in)h(metho)q(d)e Fm(create)h Fo(allo)o(ws)f(this)h(metho)q
-(d)g(to)g(w)o(ork)g(prop)q(erly)-42 2097 y(ev)o(en)g(when)g(inherited)f
-(b)o(y)g(a)f(sub)q(class.)20 b(As)c(usual,)e(a)h(sub)q(class)g(ma)o(y)f
-(o)o(v)o(erwrite)f(an)o(y)i(inherited)g(metho)q(d)f(with)-42
-2154 y(its)h(o)o(wn)g(v)o(ersion.)-42 2275 y Fe(8.8)56
-b(Mo)r(dules)-42 2361 y Fo(Here)17 b(w)o(e)f(explain)f(one)i(p)q
-(ossible)f(w)o(a)o(y)f(to)g(sim)o(ulate)f(mo)q(dules)h(in)h(Lua.)23
-b(The)17 b(main)d(idea)i(is)g(to)f(use)i(a)f(table)f(to)-42
-2418 y(store)g(the)g(mo)q(dule)g(functions.)29 2474 y(A)g(mo)q(dule)g
-(should)g(b)q(e)h(written)e(as)h(a)g(separate)f(c)o(h)o(unk,)h
-(starting)f(with:)-42 2567 y Fm(if)24 b(modulename)f(then)g(return)g
-(end)47 b(--)24 b(avoid)f(loading)g(twice)g(the)h(same)f(module)-42
-2623 y(modulename)g(=)h({})47 b(--)24 b(create)f(a)h(table)f(to)g
-(represent)g(the)g(module)911 2748 y Fo(29)p eop
+29 28 bop 0 1092 3900 12 v 0 1279 a Fn(Point)46 b(=)i({x)f(=)g(0,)h(y)f
+(=)h(0})0 1505 y(function)e(Point:create)e(\(o\))95 1618
+y(o.parent)i(=)h(self)95 1731 y(return)g(o)0 1844 y(end)0
+2070 y(function)f(Point:move)f(\(p\))95 2183 y(self.x)i(=)g(self.x)f(+)
+i(p.x)95 2296 y(self.y)f(=)g(self.y)f(+)i(p.y)0 2409
+y(end)0 2634 y(...)0 2860 y(--)0 2973 y(--)f(creating)f(points)0
+3086 y(--)0 3199 y(p1)h(=)h(Point:create{x)c(=)j(10,)g(y)g(=)h(20})0
+3312 y(p2)f(=)h(Point:create{x)c(=)j(10})95 b(--)47 b(y)g(will)g(be)g
+(inherited)e(until)i(it)g(is)g(set)0 3538 y(--)0 3651
+y(--)g(example)f(of)h(a)h(method)e(invocation)0 3763
+y(--)0 3876 y(p1:move\(p2\))1451 4147 y Fp(Figure)30
+b(2:)41 b(A)30 b(Class)f Fn(Point)p Fp(.)p 0 4260 V 1905
+5589 a(29)p eop
%%Page: 30 30
-30 29 bop -42 159 1950 6 v -42 253 a Fm(function)23 b(open)h(\(mod\))6
-310 y(local)f(n,)h(f)g(=)f(next\(mod,)g(nil\))6 366 y(while)g(n)h(do)54
-423 y(setglobal\(n,)e(f\))54 479 y(n,)i(f)f(=)h(next\(mod,)f(n\))6
-536 y(end)-42 592 y(end)645 727 y Fo(Figure)14 b(3:)20
-b(Op)q(ening)c(a)f(mo)q(dule.)p -42 784 V -42 913 a(After)g(that,)f
-(functions)h(can)h(b)q(e)g(directly)e(de\014ned)j(with)d(the)h(syn)o
-(tax)-42 1006 y Fm(function)23 b(modulename.foo)f(\(...\))6
-1063 y(...)-42 1119 y(end)29 1213 y Fo(An)o(y)14 b(co)q(de)g(that)f
-(needs)i(this)e(mo)q(dule)g(has)g(only)h(to)f(execute)h
-Fm(dofile\("filename"\))p Fo(,)d(where)j Fm(filename)f
-Fo(is)-42 1270 y(the)j(\014le)f(where)g(the)h(mo)q(dule)e(is)h
-(written.)k(After)14 b(this,)h(an)o(y)g(function)g(can)g(b)q(e)h
-(called)f(with)-42 1363 y Fm(modulename.foo\(...\))29
-1457 y Fo(If)h(a)f(mo)q(dule)g(function)h(is)f(going)g(to)g(b)q(e)h
-(used)g(man)o(y)f(times,)e(the)j(program)e(can)i(giv)o(e)f(a)g(lo)q
-(cal)g(name)f(to)i(it.)-42 1514 y(Because)g(functions)f(are)g(v)m
-(alues,)g(it)g(is)f(enough)i(to)e(write)-42 1607 y Fm(localname)23
-b(=)h(modulename.foo)-42 1701 y Fo(Finally)l(,)15 b(a)g(mo)q(dule)g(ma)
-o(y)f(b)q(e)j Fn(op)n(ene)n(d)p Fo(,)e(giving)f(direct)i(access)g(to)f
-(all)g(its)g(functions,)g(as)g(sho)o(wn)h(in)f(the)h(co)q(de)h(in)-42
-1758 y(Figure)e(3.)-42 1879 y Fe(8.9)56 b(A)19 b(CF)-5
-b(unction)-42 1965 y Fo(A)18 b(CF)l(unction)f(to)f(compute)h(the)g
-(maxim)o(um)c(of)k(a)g(v)m(ariable)g(n)o(um)o(b)q(er)f(of)h(argumen)o
-(ts)f(is)h(sho)o(wn)g(in)g(Figure)f(4.)-42 2022 y(After)f(registered)g
-(with)-42 2115 y Fm(lua_register)23 b(\("max",)g(math_max\);)-42
-2209 y Fo(this)15 b(function)g(is)g(a)o(v)m(ailable)f(in)h(Lua,)g(as)g
-(follo)o(ws:)-42 2303 y Fm(i)24 b(=)g(max\(4,)f(5,)h(10,)f(-34\))47
-b(--)24 b(i)g(receives)e(10)-42 2425 y Fe(8.10)56 b(Calling)21
-b(Lua)e(F)-5 b(unctions)-42 2511 y Fo(This)17 b(example)e(illustrates)f
-(ho)o(w)i(a)h(C)f(function)g(can)h(call)e(the)i(Lua)g(function)f
-Fm(remove_blanks)f Fo(presen)o(ted)i(in)-42 2567 y(Section)f(8.3.)911
-2748 y(30)p eop
+30 29 bop 0 12 3900 12 v 0 199 a Fn(function)46 b(open)g(\(mod\))95
+312 y(local)h(n,)g(f)g(=)h(next\(mod,)d(nil\))95 425
+y(while)i(n)g(do)191 538 y(setglobal\(n,)d(f\))191 651
+y(n,)j(f)h(=)f(next\(mod,)e(n\))95 764 y(end)0 877 y(end)1372
+1148 y Fp(Figure)30 b(3:)41 b(Op)s(ening)28 b(a)j(mo)s(dule.)p
+0 1260 V 0 1518 a Fn(if)47 b(modulename)e(then)i(return)f(end)95
+b(--)47 b(avoid)f(loading)g(twice)g(the)h(same)g(module)0
+1631 y(modulename)e(=)i({})95 b(--)48 b(create)e(a)h(table)f(to)i
+(represent)d(the)i(module)0 1818 y Fp(After)31 b(that,)g(functions)e
+(can)h(b)s(e)g(directly)f(de\014ned)g(with)g(the)i(syn)m(tax)0
+2006 y Fn(function)46 b(modulename.foo)d(\(...\))95 2119
+y(...)0 2232 y(end)141 2419 y Fp(An)m(y)28 b(co)s(de)f(that)h(needs)f
+(this)g(mo)s(dule)f(has)h(only)f(to)j(execute)f Fn
+(dofile\("filename"\))p Fp(,)c(where)j Fn(filename)e
+Fp(is)0 2532 y(the)31 b(\014le)e(where)h(the)g(mo)s(dule)f(is)h
+(written.)39 b(After)31 b(this,)f(an)m(y)g(function)f(can)i(b)s(e)f
+(called)f(with)0 2720 y Fn(modulename.foo\(...\))141
+2908 y Fp(If)i(a)h(mo)s(dule)e(function)g(is)g(going)h(to)i(b)s(e)d
+(used)h(man)m(y)g(times,)h(the)f(program)h(can)f(giv)m(e)h(a)g(lo)s
+(cal)f(name)g(to)h(it.)0 3021 y(Because)g(functions)d(are)h(v)-5
+b(alues,)30 b(it)g(is)g(enough)g(to)h(write)0 3208 y
+Fn(localname)45 b(=)j(modulename.foo)0 3396 y Fp(Finally)-8
+b(,)30 b(a)i(mo)s(dule)e(ma)m(y)i(b)s(e)f Fo(op)-5 b(ene)g(d)p
+Fp(,)34 b(giving)d(direct)g(access)h(to)h(all)d(its)h(functions,)g(as)h
+(sho)m(wn)e(in)h(the)g(co)s(de)h(in)0 3509 y(Figure)e(3.)0
+3752 y Ff(8.9)112 b(A)37 b(CF)-9 b(unction)0 3924 y Fp(A)35
+b(CF)-8 b(unction)34 b(to)h(compute)g(the)f(maxim)m(um)g(of)g(a)h(v)-5
+b(ariable)34 b(n)m(um)m(b)s(er)f(of)i(argumen)m(ts)g(is)e(sho)m(wn)h
+(in)f(Figure)h(4.)0 4037 y(After)d(registered)f(with)0
+4224 y Fn(lua_register)44 b(\("max",)i(math_max\);)0
+4412 y Fp(this)29 b(function)g(is)h(a)m(v)-5 b(ailable)29
+b(in)h(Lua,)g(as)g(follo)m(ws:)0 4600 y Fn(i)47 b(=)h(max\(4,)e(5,)h
+(10,)g(-34\))94 b(--)48 b(i)f(receives)f(10)0 4843 y
+Ff(8.10)112 b(Calling)36 b(Lua)i(F)-9 b(unctions)0 5015
+y Fp(This)31 b(example)i(illustrates)e(ho)m(w)i(a)g(C)g(function)e(can)
+i(call)g(the)g(Lua)f(function)g Fn(remove_blanks)d Fp(presen)m(ted)k
+(in)0 5128 y(Section)d(8.3.)1905 5589 y(30)p eop
%%Page: 31 31
-31 30 bop -42 628 1950 6 v -42 722 a Fm(void)24 b(math_max)f(\(void\))
--42 778 y({)-18 834 y(int)h(i=1;)71 b(/*)23 b(number)g(of)h(arguments)f
-(*/)-18 891 y(double)g(d,)h(dmax;)-18 947 y(lua_Object)f(o;)-18
-1004 y(/*)h(the)f(function)g(must)g(get)h(at)g(least)f(one)g(argument)g
-(*/)-18 1060 y(if)h(\(\(o)f(=)h(lua_getparam\(i++\)\))e(==)h
-(LUA_NOOBJECT\))30 1117 y(lua_error)g(\("too)g(few)g(arguments)g(to)h
-(function)e(`max'"\);)-18 1173 y(/*)i(and)f(this)h(argument)e(must)i
-(be)f(a)h(number)f(*/)-18 1230 y(if)h(\(!lua_isnumber\(o\)\))30
-1286 y(lua_error)f(\("incorrect)f(argument)h(to)g(function)g(`max'"\);)
--18 1343 y(dmax)h(=)f(lua_getnumber)f(\(o\);)-18 1399
-y(/*)i(loops)f(until)g(there)g(is)h(no)g(more)f(arguments)g(*/)-18
-1455 y(while)h(\(\(o)f(=)h(lua_getparam\(i++\)\))d(!=)j(LUA_NOOBJECT\))
--18 1512 y({)6 1568 y(if)g(\(!lua_isnumber\(o\)\))54
-1625 y(lua_error)f(\("incorrect)f(argument)h(to)g(function)g(`max'"\);)
-6 1681 y(d)h(=)g(lua_getnumber)e(\(o\);)6 1738 y(if)i(\(d)f(>)h(dmax\))
-f(dmax)h(=)f(d;)-18 1794 y(})-18 1851 y(/*)h(push)f(the)h(result)f(to)g
-(be)h(returned)f(*/)-18 1907 y(lua_pushnumber)f(\(dmax\);)-42
-1964 y(})623 2099 y Fo(Figure)14 b(4:)20 b(C)15 b(function)g
-Fm(math)p 1147 2099 15 2 v 16 w(max)p Fo(.)p -42 2155
-1950 6 v 911 2748 a(31)p eop
+31 30 bop 0 1148 3900 12 v 0 1336 a Fn(void)47 b(math_max)e(\(void\))0
+1449 y({)48 1562 y(int)i(i=1;)142 b(/*)47 b(number)f(of)h(arguments)e
+(*/)48 1675 y(double)h(d,)h(dmax;)48 1788 y(lua_Object)e(o;)48
+1900 y(/*)i(the)g(function)e(must)i(get)g(at)g(least)f(one)h(argument)f
+(*/)48 2013 y(if)h(\(\(o)g(=)g(lua_getparam\(i++\)\))c(==)k
+(LUA_NOOBJECT\))143 2126 y(lua_error)e(\("too)i(few)g(arguments)e(to)i
+(function)f(`max'"\);)48 2239 y(/*)h(and)g(this)f(argument)g(must)h(be)
+g(a)g(number)f(*/)48 2352 y(if)h(\(!lua_isnumber\(o\)\))143
+2465 y(lua_error)e(\("incorrect)g(argument)h(to)h(function)e(`max'"\);)
+48 2578 y(dmax)h(=)i(lua_getnumber)c(\(o\);)48 2691 y(/*)j(loops)f
+(until)h(there)f(is)h(no)g(more)g(arguments)e(*/)48 2804
+y(while)h(\(\(o)h(=)g(lua_getparam\(i++\)\))c(!=)k(LUA_NOOBJECT\))48
+2917 y({)95 3030 y(if)h(\(!lua_isnumber\(o\)\))191 3142
+y(lua_error)d(\("incorrect)g(argument)g(to)j(function)d(`max'"\);)95
+3255 y(d)j(=)f(lua_getnumber)e(\(o\);)95 3368 y(if)j(\(d)f(>)g(dmax\))g
+(dmax)f(=)i(d;)48 3481 y(})48 3594 y(/*)f(push)g(the)f(result)h(to)g
+(be)g(returned)e(*/)48 3707 y(lua_pushnumber)f(\(dmax\);)0
+3820 y(})1328 4091 y Fp(Figure)30 b(4:)41 b(C)30 b(function)f
+Fn(math)p 2376 4091 29 4 v 33 w(max)p Fp(.)p 0 4204 3900
+12 v 1905 5589 a(31)p eop
%%Page: 32 32
-32 31 bop -42 199 a Fm(void)24 b(remove_blanks)e(\(char)h(*s\))-42
-256 y({)6 312 y(lua_pushstring\(s\);)45 b(/*)24 b(prepare)f(parameter)g
-(*/)6 369 y(lua_call\("remove_blanks"\);)44 b(/*)24 b(call)f(Lua)h
-(function)f(*/)6 425 y(strcpy\(s,)g(lua_getstring\(lua_getresu)o
-(lt\(1\)\)\))o(;)45 b(/*)24 b(copy)f(result)g(back)g(to)h('s')f(*/)-42
-482 y(})-42 625 y Fp(Ac)n(kno)n(wledgmen)n(ts)-42 726
-y Fo(The)15 b(authors)f(w)o(ould)f(lik)o(e)h(to)f(thank)h(CENPES/PETR)o
-(OBR)1053 715 y(\023)1047 726 y(AS)h(whic)o(h,)f(join)o(tly)f(with)h
-Fa(T)l(eC)1574 740 y(Graf)1656 726 y Fo(,)g(used)h(exten-)-42
-783 y(siv)o(ely)i(early)g(v)o(ersions)g(of)h(this)f(system)f(and)i(ga)o
-(v)o(e)f(v)m(aluable)g(commen)o(ts.)25 b(The)18 b(authors)f(w)o(ould)g
-(also)g(lik)o(e)g(to)-42 839 y(thank)f(Carlos)d(Henrique)j(Levy)l(,)f
-(who)g(found)h(the)f(name)f(of)h(the)h(game.)i(Lua)d(means)g
-Fn(mo)n(on)g Fo(in)g(P)o(ortuguese.)-42 982 y Fp(A)68
-b(Incompatibiliti)q(es)24 b(with)f(Previous)h(V)-6 b(ersions)-42
-1084 y Fo(Although)15 b(great)f(care)h(has)g(b)q(een)h(tak)o(en)f(to)f
-(a)o(v)o(oid)g(incompatibiliti)o(es)e(with)j(the)g(previous)g(public)g
-(v)o(ersions)f(of)-42 1140 y(Lua,)i(some)e(di\013erences)h(had)g(to)g
-(b)q(e)h(in)o(tro)q(duced.)k(Here)15 b(is)g(a)g(list)f(of)h(all)f
-(these)h(di\013erences.)-42 1262 y Fe(Incompatibilities)21
-b(with)f(v)n(ersion)f(2.2)27 1348 y Fj(\017)j Fo(F)l(unctions)15
-b Fm(date)f Fo(and)h Fm(time)f Fo(\(from)f Fm(iolib)p
-Fo(\))g(ha)o(v)o(e)i(b)q(een)h(sup)q(erseded)g(b)o(y)e(the)h(new)g(v)o
-(ersion)f(of)h(function)72 1404 y Fm(date)p Fo(.)27 1498
-y Fj(\017)22 b Fo(F)l(unction)17 b Fm(append)g Fo(\(from)e
-Fm(iolib)p Fo(\))i(no)o(w)f(returns)i(1)f(whenev)o(er)h(it)e(succeeds,)
-j(whether)e(the)h(\014le)f(is)g(new)72 1555 y(or)e(not.)27
-1648 y Fj(\017)22 b Fo(F)l(unction)14 b Fm(int2str)g
-Fo(\(from)f Fm(strlib)p Fo(\))g(has)h(b)q(een)i(sup)q(erseded)g(b)o(y)e
-(new)h(function)g Fm(format)p Fo(,)e(with)h(param-)72
-1705 y(eter)h Fm("\045c")p Fo(.)27 1799 y Fj(\017)22
-b Fo(The)15 b(API)h(lo)q(c)o(k)f(mec)o(hanism)d(has)j(b)q(een)h(sup)q
-(erseded)h(b)o(y)e(the)g(reference)h(mec)o(hanism.)h(Ho)o(w)o(ev)o(er,)
-d Fm(lua.h)72 1855 y Fo(pro)o(vides)h(compatibilit)n(y)e(macros,)g(so)h
-(there)i(is)e(no)i(need)g(to)e(c)o(hange)h(programs.)27
-1949 y Fj(\017)22 b Fo(API)16 b(function)f Fm(lua_pushliteral)e
-Fo(no)o(w)i(is)f(just)h(a)g(macro)f(to)g Fm(lua_pushstring)p
-Fo(.)-42 2071 y Fe(Incompatibilities)21 b(with)f(v)n(ersion)f(2.1)27
-2156 y Fj(\017)j Fo(The)13 b(function)f Fm(type)g Fo(no)o(w)g(returns)h
-(the)f(string)g Fm("function")f Fo(b)q(oth)h(for)g(C)g(and)h(Lua)g
-(functions.)19 b(Because)72 2213 y(Lua)f(functions)g(and)g(C)g
-(functions)f(are)h(compatible,)e(this)i(b)q(eha)o(vior)f(is)g(usually)h
-(more)e(useful.)28 b(When)72 2269 y(needed,)20 b(the)e(second)g(result)
-g(of)f(function)h Fm(type)f Fo(ma)o(y)f(b)q(e)j(used)g(to)e
-(distinguish)g(b)q(et)o(w)o(een)h(Lua)h(and)f(C)72 2326
-y(functions.)27 2420 y Fj(\017)k Fo(A)15 b(function)g(de\014nition)g
-(only)g(assigns)f(the)h(function)g(v)m(alue)g(to)g(the)g(giv)o(en)f(v)m
-(ariable)h(at)f(execution)h(time.)911 2748 y(32)p eop
+32 31 bop 0 91 a Fn(void)47 b(remove_blanks)d(\(char)i(*s\))0
+204 y({)95 317 y(lua_pushstring\(s\);)91 b(/*)47 b(prepare)f(parameter)
+f(*/)95 430 y(lua_call\("remove_blanks"\);)89 b(/*)47
+b(call)g(Lua)g(function)e(*/)95 543 y(strcpy\(s,)h
+(lua_getstring\(lua_getre)o(sult)o(\(1\)\))o(\);)89 b(/*)47
+b(copy)g(result)f(back)h(to)g('s')g(*/)0 656 y(})0 942
+y Fq(9)135 b(Lua)44 b(Stand-alone)0 1145 y Fp(Although)39
+b(Lua)g(has)h(b)s(een)f(designed)g(as)h(an)f(extension)h(language,)i
+(the)e(language)h(can)f(also)f(b)s(e)h(used)f(as)h(a)0
+1258 y(stand-alone)33 b(in)m(terpreter.)47 b(An)32 b(implemen)m(tation)
+f(of)i(suc)m(h)f(an)h(in)m(terpreter,)g(called)f(simply)e
+Fn(lua)p Fp(,)j(is)e(pro)m(vided)0 1371 y(with)38 b(the)h(standard)f
+(distribution.)63 b(This)37 b(program)h(can)i(b)s(e)e(called)g(with)g
+(an)m(y)h(sequence)g(of)g(the)g(follo)m(wing)0 1484 y(argumen)m(ts:)0
+1672 y Fn(-v)45 b Fp(prin)m(ts)29 b(v)m(ersion)h(information.)0
+1859 y Fn(-)45 b Fp(runs)29 b(in)m(teractiv)m(ely)-8
+b(,)31 b(accepting)g(commands)f(from)g(standard)g(input)e(un)m(til)h
+(an)h Fn(EOF)p Fp(.)0 2047 y Fn(-e)47 b(stat)e Fp(executes)31
+b Fn(stat)e Fp(as)i(a)g(Lua)f(c)m(h)m(unk.)0 2234 y Fn(var=exp)44
+b Fp(executes)31 b Fn(var=exp)e Fp(as)h(a)h(Lua)f(c)m(h)m(unk.)0
+2422 y Fn(filename)43 b Fp(executes)32 b(\014le)d Fn(filename)f
+Fp(as)j(a)g(Lua)f(c)m(h)m(unk.)0 2610 y(All)f(argumen)m(ts)i(are)f
+(handle)f(in)g(order.)41 b(F)-8 b(or)31 b(instance,)f(an)g(in)m(v)m(o)s
+(cation)h(lik)m(e)0 2797 y Fn($)47 b(lua)g(-)h(a=1)f(prog.lua)0
+2985 y Fp(will)25 b(\014rst)j(in)m(teract)g(with)f(the)h(user)g(un)m
+(til)e(an)i Fn(EOF)p Fp(,)f(then)h(will)d(set)k Fn(a)f
+Fp(to)g(1,)i(and)d(\014nally)f(will)f(run)i(\014le)g
+Fn(prog.lua)p Fp(.)141 3098 y(Please)32 b(notice)g(that)g(the)g(in)m
+(teraction)g(with)e(the)i(shell)e(ma)m(y)i(lead)f(to)i(unin)m(tended)c
+(results.)44 b(F)-8 b(or)32 b(instance,)0 3211 y(a)f(call)e(lik)m(e)0
+3398 y Fn($)47 b(lua)g(a="name")f(prog.lua)0 3586 y Fp(will)32
+b Fo(not)j Fp(set)f Fn(a)g Fp(to)h(the)g(string)e Fn("name")p
+Fp(.)51 b(Instead,)35 b(the)g(quotes)g(will)c(b)s(e)j(handled)e(b)m(y)i
+(the)h(shell,)f(lua)f(will)f(get)0 3699 y(only)d Fn(a=name)g
+Fp(to)i(run,)e(and)h Fn(a)g Fp(will)e(\014nish)g(with)h
+Fm(nil)p Fp(.)41 b(Instead,)30 b(one)h(should)d(write)0
+3887 y Fn($)47 b(lua)g('a="name"')e(prog.lua)0 4173 y
+Fq(Ac)l(kno)l(wledgmen)l(ts)0 4376 y Fp(The)28 b(authors)g(w)m(ould)f
+(lik)m(e)h(to)h(thank)g(CENPES/PETR)m(OBR)2191 4353 y(\023)2180
+4376 y(AS)e(whic)m(h,)h(join)m(tly)f(with)g Fa(T)-8 b(eC)3231
+4404 y(Graf)3395 4376 y Fp(,)29 b(used)f(exten-)0 4489
+y(siv)m(ely)35 b(early)g(v)m(ersions)f(of)i(this)e(system)i(and)f(ga)m
+(v)m(e)j(v)-5 b(aluable)34 b(commen)m(ts.)57 b(The)35
+b(authors)g(w)m(ould)f(also)h(lik)m(e)g(to)0 4602 y(thank)30
+b(Carlos)g(Henrique)f(Levy)-8 b(,)31 b(who)f(found)f(the)i(name)f(of)g
+(the)h(game.)42 b(Lua)30 b(means)g Fo(mo)-5 b(on)32 b
+Fp(in)d(P)m(ortuguese.)0 4888 y Fq(Incompatibilities)47
+b(with)f(Previous)f(V)-11 b(ersions)0 5091 y Fp(Although)29
+b(great)i(care)g(has)f(b)s(een)f(tak)m(en)i(to)g(a)m(v)m(oid)g
+(incompatibilities)26 b(with)i(the)j(previous)d(public)f(v)m(ersions)j
+(of)0 5204 y(Lua,)g(some)h(di\013erences)f(had)g(to)h(b)s(e)e(in)m(tro)
+s(duced.)40 b(Here)30 b(is)g(a)h(list)e(of)h(all)f(these)i
+(incompatibilities.)1905 5589 y(32)p eop
%%Page: 33 33
-33 32 bop -42 199 a Fe(Incompatibilities)21 b(with)f(v)n(ersion)f(1.1)
-27 285 y Fj(\017)j Fo(The)16 b(equalit)o(y)e(test)g(op)q(erator)h(no)o
-(w)f(is)h(denoted)h(b)o(y)f Fm(==)p Fo(,)f(instead)h(of)g
-Fm(=)p Fo(.)27 379 y Fj(\017)22 b Fo(The)13 b(syn)o(tax)f(for)g(table)g
-(construction)g(has)h(b)q(een)h(greatly)d(simpli\014ed.)18
-b(The)13 b(old)f Fm(@\(size\))g Fo(has)g(b)q(een)i(sub-)72
-435 y(stituted)h(b)o(y)h Fm({})p Fo(.)21 b(The)16 b(list)e(constructor)
-h(\(formerly)e Fm(@[...])p Fo(\))i(and)h(the)f(record)h(constructor)f
-(\(formerly)72 492 y Fm(@{...})p Fo(\))f(no)o(w)g(are)h(b)q(oth)f(co)q
-(ded)i(lik)o(e)e Fm({...})p Fo(.)19 b(When)c(the)g(construction)f(in)o
-(v)o(olv)o(es)g(a)g(function)h(call,)e(lik)o(e)72 548
-y(in)i Fm(@func{...})p Fo(,)e(the)i(new)g(syn)o(tax)f(do)q(es)i(not)e
-(use)h(the)g Fm(@)p Fo(.)20 b(More)14 b(imp)q(ortan)o(t,)e
-Fn(a)17 b(c)n(onstruction)e(function)72 605 y(must)i(now)f(explicitly)g
-(r)n(eturn)g(the)g(c)n(onstructe)n(d)g(table)p Fo(.)27
-699 y Fj(\017)22 b Fo(The)16 b(function)f Fm(lua_call)f
-Fo(no)h(longer)f(has)h(the)h(parameter)d Fm(nparam)p
-Fo(.)27 792 y Fj(\017)22 b Fo(The)g(function)f Fm(lua_pop)g
-Fo(is)g(no)h(longer)e(a)o(v)m(ailable,)i(since)g(it)f(could)g(lead)g
-(to)g(strange)g(b)q(eha)o(vior.)39 b(In)72 849 y(particular,)18
-b(to)h(access)g(results)g(returned)g(from)f(a)g(Lua)i(function,)f(the)h
-(new)f(macro)e Fm(lua_getresult)72 905 y Fo(should)e(b)q(e)h(used.)27
-999 y Fj(\017)22 b Fo(The)16 b(old)e(functions)h Fm(lua_storefield)f
-Fo(and)h Fm(lua_storeindexed)e Fo(ha)o(v)o(e)i(b)q(een)h(replaced)f(b)o
-(y)72 1112 y Fm(int)24 b(lua_storesubscript)d(\(void\);)72
-1224 y Fo(with)15 b(the)g(parameters)e(explicitly)h(pushed)j(on)e(the)g
-(stac)o(k.)27 1318 y Fj(\017)22 b Fo(The)12 b(functionalit)o(y)e(of)i
-(the)g(function)f Fm(lua_errorfunction)f Fo(has)h(b)q(een)i(replaced)f
-(b)o(y)g(the)g Fn(fal)r(lb)n(ack)f Fo(mec)o(h-)72 1374
-y(anism;)i(see)j(Section)f(4.8.)27 1468 y Fj(\017)22
-b Fo(When)16 b(calling)e(a)h(function)h(from)d(the)j(Lua)g(library)l(,)
-e(parameters)g(passed)h(through)h(the)f(stac)o(k)g(m)o(ust)f(b)q(e)72
-1525 y(pushed)20 b(just)f(b)q(efore)g(the)g(corresp)q(onden)o(t)g
-(call,)f(with)g(no)h(in)o(termediate)e(calls)g(to)i(Lua.)31
-b(Sp)q(ecial)19 b(care)72 1581 y(should)c(b)q(e)h(tak)o(en)f(with)f
-(macros)g(lik)o(e)g Fm(lua_getindexed)f Fo(and)j Fm(lua_getfield)p
-Fo(.)911 2748 y(33)p eop
+33 32 bop 0 91 a Ff(Incompatibilities)33 b(with)j(v)m(ersion)h(2.4)0
+263 y Fp(The)28 b(whole)f(I/O)i(facilities)d(ha)m(v)m(e)k(b)s(een)d
+(rewritten.)39 b(W)-8 b(e)30 b(strongly)e(encourage)h(programmers)f(to)
+h(addapt)f(their)0 376 y(co)s(de)c(to)g(this)e(new)g(v)m(ersion.)38
+b(Ho)m(w)m(ev)m(er,)27 b(w)m(e)d(are)g(k)m(eeping)f(the)g(old)g(v)m
+(ersion)g(of)g(the)g(libraries)e(in)h(the)h(distribution,)0
+489 y(to)31 b(allo)m(w)f(a)h(smo)s(oth)f(transition.)39
+b(The)30 b(incompatibilities)c(b)s(et)m(w)m(een)31 b(the)g(new)f(and)g
+(the)g(old)g(libraries)d(are:)136 676 y Fk(\017)46 b
+Fp(The)35 b(format)g(facilit)m(y)e(of)i(function)f Fn(write)f
+Fp(has)i(b)s(een)f(sup)s(ersed)e(b)m(y)j(function)e Fn(format)p
+Fp(;)j(therefore)f(this)227 789 y(facilit)m(y)30 b(has)g(b)s(een)g
+(dropp)s(ed.)136 977 y Fk(\017)46 b Fp(F)-8 b(unction)32
+b Fn(read)f Fp(no)m(w)h(uses)f Fo(r)-5 b(e)g(ad)36 b(p)-5
+b(atterns)34 b Fp(to)f(sp)s(ecify)e(what)g(to)i(read;)g(this)e(is)g
+(incompatible)f(with)h(the)227 1090 y(old)f(format)g(options.)136
+1277 y Fk(\017)46 b Fp(F)-8 b(unction)25 b Fn(strfind)f
+Fp(no)m(w)i(accepts)g(patterns,)h(so)f(it)f(ma)m(y)h(ha)m(v)m(e)h(a)f
+(di\013eren)m(t)f(b)s(eha)m(vior)g(when)f(the)i(pattern)227
+1390 y(includes)i(sp)s(ecial)h(c)m(haracteres.)0 1634
+y Ff(Incompatibilities)k(with)j(v)m(ersion)h(2.2)136
+1805 y Fk(\017)46 b Fp(F)-8 b(unctions)40 b Fn(date)g
+Fp(and)g Fn(time)f Fp(\(from)h Fn(iolib)p Fp(\))g(ha)m(v)m(e)h(b)s(een)
+f(sup)s(erseded)f(b)m(y)h(the)h(new,)i(more)d(p)s(o)m(w)m(erful)227
+1918 y(v)m(ersion)30 b(of)h(function)e Fn(date)p Fp(.)136
+2106 y Fk(\017)46 b Fp(F)-8 b(unction)35 b Fn(append)e
+Fp(\(from)h Fn(iolib)p Fp(\))g(no)m(w)h(returns)e(1)i(whenev)m(er)g(it)
+f(succeeds,)j(whether)d(the)h(\014le)f(is)f(new)227 2219
+y(or)e(not.)136 2407 y Fk(\017)46 b Fp(F)-8 b(unction)29
+b Fn(int2str)e Fp(\(from)i Fn(strlib)p Fp(\))f(has)h(b)s(een)f(sup)s
+(erseded)f(b)m(y)i(new)g(function)e Fn(format)p Fp(,)h(with)g(param-)
+227 2519 y(eter)j Fn("\045c")p Fp(.)136 2707 y Fk(\017)46
+b Fp(The)30 b(API)g(lo)s(c)m(k)g(mec)m(hanism)f(has)h(b)s(een)g(sup)s
+(erseded)e(b)m(y)i(the)g(reference)h(mec)m(hanism.)40
+b(Ho)m(w)m(ev)m(er,)32 b Fn(lua.h)227 2820 y Fp(pro)m(vides)e
+(compatibilit)m(y)e(macros,)j(so)g(there)f(is)g(no)g(need)g(to)h(c)m
+(hange)h(programs.)136 3008 y Fk(\017)46 b Fp(The)30
+b(API)g(function)f Fn(lua_pushliteral)e Fp(no)m(w)j(is)f(just)h(a)h
+(macro)g(to)g Fn(lua_pushstring)p Fp(.)0 3251 y Ff(Incompatibilities)i
+(with)j(v)m(ersion)h(2.1)136 3423 y Fk(\017)46 b Fp(The)25
+b(function)e Fn(type)h Fp(no)m(w)h(returns)f(the)h(string)f
+Fn("function")e Fp(b)s(oth)j(for)f(C)h(and)f(Lua)h(functions.)38
+b(Because)227 3536 y(Lua)e(functions)e(and)h(C)g(functions)g(are)h
+(compatible,)g(this)f(b)s(eha)m(vior)g(is)g(usually)e(more)j(useful.)55
+b(When)227 3648 y(needed,)37 b(the)f(second)g(result)f(of)h(function)f
+Fn(type)g Fp(ma)m(y)h(b)s(e)f(used)g(to)i(distinguish)32
+b(b)s(et)m(w)m(een)k(Lua)g(and)f(C)227 3761 y(functions.)136
+3949 y Fk(\017)46 b Fp(A)31 b(function)d(de\014nition)g(only)h(assigns)
+h(the)g(function)f(v)-5 b(alue)29 b(to)i(the)g(giv)m(en)f(v)-5
+b(ariable)29 b(at)i(execution)f(time.)0 4192 y Ff(Incompatibilities)j
+(with)j(v)m(ersion)h(1.1)136 4364 y Fk(\017)46 b Fp(The)30
+b(equalit)m(y)g(test)h(op)s(erator)g(no)m(w)f(is)g(denoted)g(b)m(y)h
+Fn(==)p Fp(,)f(instead)f(of)i Fn(=)p Fp(.)136 4552 y
+Fk(\017)46 b Fp(The)25 b(syn)m(tax)h(for)f(table)g(construction)g(has)h
+(b)s(een)e(greatly)i(simpli\014ed.)35 b(The)25 b(old)g
+Fn(@\(size\))e Fp(has)i(b)s(een)g(sub-)227 4665 y(stituted)31
+b(b)m(y)g Fn({})p Fp(.)43 b(The)31 b(list)f(constructor)i(\(formerly)e
+Fn(@[...])p Fp(\))g(and)h(the)h(record)f(constructor)h(\(formerly)227
+4778 y Fn(@{...})p Fp(\))d(no)m(w)g(are)h(b)s(oth)f(co)s(ded)g(lik)m(e)
+g Fn({...})p Fp(.)39 b(When)30 b(the)f(construction)g(in)m(v)m(olv)m
+(es)h(a)g(function)e(call,)i(lik)m(e)227 4890 y(in)f
+Fn(@func{...})p Fp(,)e(the)j(new)f(syn)m(tax)i(do)s(es)e(not)h(use)g
+(the)g Fn(@)p Fp(.)40 b(More)30 b(imp)s(ortan)m(t,)g
+Fo(a)i(c)-5 b(onstruction)34 b(function)227 5003 y(must)f(now)h
+(explicitly)f(r)-5 b(eturn)34 b(the)f(c)-5 b(onstructe)g(d)34
+b(table)p Fp(.)136 5191 y Fk(\017)46 b Fp(The)30 b(function)f
+Fn(lua_call)f Fp(no)j(longer)f(has)g(the)g(parameter)h
+Fn(nparam)p Fp(.)1905 5589 y(33)p eop
%%Page: 34 34
-34 33 bop -42 264 a Fp(Index)-42 354 y Fo(..)20 b(6)-42
-411 y(abs)c(19)-42 467 y(acos)f(19)-42 524 y(Adjustmen)o(t)f(4)-42
-580 y(and)i(6)-42 637 y(app)q(endto)g(20)-42 693 y(argumen)o(ts)e(8)-42
-749 y(arithmetic)f(fallbac)o(k)h(9)-42 806 y(arithmetic)f(op)q(erators)
-i(6)-42 862 y(arra)o(ys)f(3)-42 919 y(ascii)h(19)-42
-975 y(asin)g(19)-42 1032 y(assert)g(17)-42 1088 y(Assignmen)o(t)f(4)-42
-1145 y(asso)q(ciativ)o(e)g(arra)o(ys)g(3)-42 1201 y(atan)h(19)-42
-1258 y(atan2)g(19)-42 1314 y(basic)g(t)o(yp)q(es)h(2)-42
-1370 y(blo)q(c)o(k)f(4)-42 1427 y(C)g(p)q(oin)o(ters)g(2)-42
-1483 y(ceil)g(19)-42 1540 y(CF)l(unction)g(2)-42 1596
-y(c)o(h)o(unk)h(2)-42 1653 y(clone)g(24)-42 1709 y(closing)f(a)g
-(\014le)g(20)-42 1766 y(Co)q(ercion)g(3)-42 1822 y(Commen)o(ts)e(3)-42
-1879 y(concatenation)i(fallbac)o(k)f(10)-42 1935 y(concatenation)h(6)
--42 1991 y(condition)g(expression)g(5)-42 2048 y(constructors)g(7)-42
-2104 y(cos)g(19)-42 2161 y(Data)f(Structures)i(24)-42
-2217 y(date)f(22)-42 2274 y(debug)h(pragma)e(11)-42 2330
-y(do\014le)i(16)-42 2387 y(dostring)f(16)-42 2443 y(error)g(fallbac)o
-(k)f(10)-42 2500 y(error)h(18)-42 2556 y(exit)g(22)-42
-2612 y(exp)q(onen)o(tiation)g(6)1006 354 y(Expressions)g(5)1006
-411 y(fallbac)o(ks)f(9)1006 467 y(\015o)q(or)h(19)1006
-524 y(format)e(19)1006 580 y(function)i(call)f(8)1006
-637 y(F)l(unction)h(De\014nitions)g(8)1006 693 y(function)g(falbac)o(k)
-f(10)1006 749 y(function)h(2)1006 806 y(functions)g(in)g(C)g(30)1006
-862 y(getglobal)f(18)1006 919 y(gettable)g(fallbac)o(k)g(10)1006
-975 y(global)g(en)o(vironmen)o(t)f(2)1006 1032 y(Global)h(v)m(ariables)
-g(2)1006 1088 y(Iden)o(ti\014ers)i(3)1006 1145 y(if-then-else)f(5)1006
-1201 y(index)h(fallbac)o(k)e(10)1006 1258 y(index)i(getglobal)d(10)1006
-1314 y(inheritance)i(27)1006 1370 y(Literal)f(strings)g(3)1006
-1427 y(Lo)q(cal)h(v)m(ariables)g(5)1006 1483 y(log10)f(19)1006
-1540 y(log)g(19)1006 1596 y(logical)g(op)q(erators)g(6)1006
-1653 y(luac)h(11)1006 1709 y(luac)g(2)1006 1766 y(lua)p
-1070 1766 14 2 v 16 w(call)f(14)1006 1822 y(lua)p 1070
-1822 V 16 w(callfunction)g(14)1006 1879 y(lua)p 1070
-1879 V 16 w(CF)l(unction)h(15)1006 1935 y(lua)p 1070
-1935 V 16 w(createtable)g(13)1006 1991 y(lua)p 1070 1991
-V 16 w(do\014le)g(11)1006 2048 y(lua)p 1070 2048 V 16
-w(dostring)f(11)1006 2104 y(lua)p 1070 2104 V 16 w(error)h(14)1006
-2161 y(lua)p 1070 2161 V 16 w(getcfunction)g(12)1006
-2217 y(lua)p 1070 2217 V 16 w(getglobal)f(13)1006 2274
-y(lua)p 1070 2274 V 16 w(getn)o(um)o(b)q(er)g(12)1006
-2330 y(lua)p 1070 2330 V 16 w(getparam)f(15)1006 2387
-y(lua)p 1070 2387 V 16 w(getref)i(15)1006 2443 y(lua)p
-1070 2443 V 16 w(getresult)f(14)1006 2500 y(lua)p 1070
-2500 V 16 w(getstring)g(12)1006 2556 y(lua)p 1070 2556
-V 16 w(getsubscript)h(13)1006 2612 y(lua)p 1070 2612
-V 16 w(getuserdata)f(12)911 2748 y(34)p eop
+34 33 bop 136 91 a Fk(\017)46 b Fp(The)d(function)f Fn(lua_pop)f
+Fp(is)h(no)h(longer)g(a)m(v)-5 b(ailable,)46 b(since)c(it)h(could)f
+(lead)h(to)h(strange)g(b)s(eha)m(vior.)78 b(In)227 204
+y(particular,)39 b(to)g(access)g(results)e(returned)g(from)h(a)h(Lua)f
+(function,)h(the)f(new)g(macro)h Fn(lua_getresult)227
+317 y Fp(should)29 b(b)s(e)g(used.)136 505 y Fk(\017)46
+b Fp(The)30 b(old)g(functions)f Fn(lua_storefield)d Fp(and)k
+Fn(lua_storeindexed)c Fp(ha)m(v)m(e)31 b(b)s(een)f(replaced)g(b)m(y)227
+730 y Fn(int)47 b(lua_storesubscript)c(\(void\);)227
+955 y Fp(with)29 b(the)i(parameters)g(explicitly)d(pushed)g(on)i(the)h
+(stac)m(k.)136 1142 y Fk(\017)46 b Fp(The)23 b(functionalit)m(y)f(of)i
+(the)g(function)e Fn(lua_errorfunction)d Fp(has)24 b(b)s(een)e
+(replaced)i(b)m(y)f(the)h Fo(fal)5 b(lb)-5 b(ack)24 b
+Fp(mec)m(h-)227 1255 y(anism)29 b(\(see)j(Section)e(4.8\).)136
+1443 y Fk(\017)46 b Fp(When)31 b(calling)e(a)j(function)d(from)i(the)g
+(Lua)g(library)-8 b(,)29 b(parameters)i(passed)g(through)f(the)h(stac)m
+(k)i(m)m(ust)e(b)s(e)227 1556 y(pushed)36 b(just)h(b)s(efore)h(the)g
+(corresp)s(onding)d(call,)40 b(with)c(no)i(in)m(termediate)f(calls)g
+(to)i(Lua.)62 b(Sp)s(ecial)36 b(care)227 1669 y(should)29
+b(b)s(e)g(tak)m(en)j(with)d(macros)i(lik)m(e)e Fn(lua_getindexed)e
+Fp(and)j Fn(lua_getfield)p Fp(.)1905 5589 y(34)p eop
%%Page: 35 35
-35 34 bop -42 199 a Fo(lua)p 22 199 14 2 v 16 w(iscfunction)15
-b(12)-42 256 y(lua)p 22 256 V 16 w(isfunction)g(12)-42
-312 y(lua)p 22 312 V 16 w(isnil)g(12)-42 369 y(lua)p
-22 369 V 16 w(isn)o(um)o(b)q(er)g(12)-42 425 y(lua)p
-22 425 V 16 w(isstring)f(12)-42 482 y(lua)p 22 482 V
-16 w(istable)h(12)-42 538 y(lua)p 22 538 V 16 w(isuserdata)g(12)-42
-594 y(LUA)p 57 594 V 17 w(NOOBJECT)i(15)-42 651 y(lua)p
-22 651 V 16 w(Ob)s(ject)f(11)-42 707 y(lua)p 22 707 V
-16 w(pushcfunction)g(13)-42 764 y(lua)p 22 764 V 16 w(pushnil)g(13)-42
-820 y(lua)p 22 820 V 16 w(pushn)o(um)o(b)q(er)g(13)-42
-877 y(lua)p 22 877 V 16 w(pushob)s(ject)g(13)-42 933
-y(lua)p 22 933 V 16 w(pushref)g(15)-42 990 y(lua)p 22
-990 V 16 w(pushstring)f(13)-42 1046 y(lua)p 22 1046 V
-16 w(push)o(userdata)h(13)-42 1103 y(lua)p 22 1103 V
-16 w(push)o(usertag)f(13)-42 1159 y(lua)p 22 1159 V 16
-w(ref)h(15)-42 1215 y(lua)p 22 1215 V 16 w(register)f(15)-42
-1272 y(lua)p 22 1272 V 16 w(setfallbac)o(k)f(15)-42 1328
-y(lua)p 22 1328 V 16 w(storeglobal)g(13)-42 1385 y(lua)p
-22 1385 V 16 w(storesubscript)h(13)-42 1441 y(lua)p 22
-1441 V 16 w(t)o(yp)q(e)h(12)-42 1498 y(lua)p 22 1498
-V 16 w(unref)g(15)-42 1554 y(max)e(19)-42 1611 y(metho)q(ds)h(9)-42
-1667 y(min)f(19)-42 1724 y(mo)q(d)h(19)-42 1780 y(Mo)q(dules)h(29)-42
-1836 y(m)o(ultiple)e(assignmen)o(t)f(4)-42 1893 y(next)j(16)-42
-1949 y(next)g(24)-42 2006 y(nextv)m(ar)g(17)-42 2062
-y(nextv)m(ar)g(24)-42 2119 y(nil)f(2)-42 2175 y(not)g(6)-42
-2232 y(n)o(um)o(b)q(er)g(2)-42 2288 y(Numerical)f(constan)o(ts)g(3)-42
-2345 y(Op)q(erator)h(precedence)i(7)-42 2401 y(or)e(6)-42
-2457 y(order)g(fallbac)o(k)f(9)-42 2514 y(P)o(ersistence)h(26)-42
-2570 y(pip)q(ed)h(input)g(20)1006 199 y(pip)q(ed)g(output)f(20)1006
-256 y(p)q(op)q(en)h(20)1006 312 y(p)q(op)q(en)g(20)1006
-369 y(pre-compilation)d(2)1006 425 y(prede\014ned)k(functions)e(16)1006
-482 y(prin)o(t)g(17)1006 538 y(Programmi)o(ng)d(with)j(Classes)f(27)
-1006 594 y(random)g(19)1006 651 y(randomseed)h(19)1006
-707 y(read)g(20)1006 764 y(readfrom)f(20)1006 820 y(readun)o(til)g(21)
-1006 877 y(records)h(3)1006 933 y(reference)h(15)1006
-990 y(re\015exivit)o(y)e(16)1006 1046 y(relational)f(op)q(erators)i(6)
-1006 1103 y(remo)o(v)o(e)f(20)1006 1159 y(rename)g(20)1006
-1215 y(rep)q(eat-un)o(til)h(5)1006 1272 y(reserv)o(ed)g(w)o(ords)g(3)
-1006 1328 y(return)g(statemen)o(t)e(4)1006 1385 y(return)i(statemen)o
-(t)e(5)1006 1441 y(self)i(9)1006 1498 y(setfallbac)o(k)f(10)1006
-1554 y(setfallbac)o(k)g(18)1006 1611 y(setglobal)g(18)1006
-1667 y(settable)h(fallbac)o(k)f(10)1006 1724 y(short-cut)h(ev)m
-(aluation)f(6)1006 1780 y(Simple)g(Expressions)h(5)1006
-1836 y(sin)g(19)1006 1893 y(sqrt)g(19)1006 1949 y(statemen)o(ts)e(4)
-1006 2006 y(str\014nd)i(18)1006 2062 y(string)f(2)1006
-2119 y(strlen)h(18)1006 2175 y(strlo)o(w)o(er)e(18)1006
-2232 y(strsub)i(18)1006 2288 y(strupp)q(er)h(19)1006
-2345 y(table)f(2)1006 2401 y(tag)f(17)1006 2457 y(tan)h(19)1006
-2514 y(tmpname)e(20)1006 2570 y(tok)o(ens)i(3)911 2748
-y(35)p eop
+35 34 bop 0 220 a Fq(Index)0 401 y Fp(..)41 b(6)0 514
+y(abs)30 b(20)0 627 y(acos)h(20)0 740 y(Adjustmen)m(t)f(3)0
+853 y(and)g(6)0 966 y(app)s(endto)g(21)0 1079 y(argumen)m(ts)h(8)0
+1192 y(arithmetic)f(fallbac)m(k)g(9)0 1305 y(arithmetic)g(op)s(erators)
+g(5)0 1418 y(arra)m(ys)h(2)0 1530 y(ascii)f(18)0 1643
+y(asin)f(20)0 1756 y(assert)i(16)0 1869 y(Assignmen)m(t)f(4)0
+1982 y(asso)s(ciativ)m(e)h(arra)m(ys)g(2)0 2095 y(atan)g(20)0
+2208 y(atan2)h(20)0 2321 y(basic)e(t)m(yp)s(es)g(2)0
+2434 y(blo)s(c)m(k)g(4)0 2547 y(C)g(p)s(oin)m(ters)f(2)0
+2660 y(captures)h(20)0 2772 y(ceil)g(20)0 2885 y(CF)-8
+b(unction)30 b(2)0 2998 y(c)m(haracter)i(class)e(19)0
+3111 y(c)m(h)m(unk)g(2)0 3224 y(clone)g(24)0 3337 y(closing)f(a)i
+(\014le)f(21)0 3450 y(Co)s(ercion)g(3)0 3563 y(Commen)m(ts)h(3)0
+3676 y(concatenation)h(fallbac)m(k)e(9)0 3789 y(concatenation)i(6)0
+3902 y(condition)d(expression)g(4)0 4014 y(constructors)i(6)0
+4127 y(cos)g(20)0 4240 y(Data)h(Structures)d(24)0 4353
+y(date)i(22)0 4466 y(debug)f(pragma)g(10)0 4579 y(do\014le)f(15)0
+4692 y(dostring)g(15)0 4805 y(error)h(fallbac)m(k)g(10)0
+4918 y(error)g(16)0 5031 y(execute)i(22)0 5144 y(exit)e(22)0
+5256 y(exp)s(onen)m(tiation)g(5)2095 401 y(Expressions)f(5)2095
+514 y(fallbac)m(ks)h(9)2095 627 y(\015o)s(or)g(20)2095
+740 y(format)h(18)2095 853 y(function)e(call)h(7)2095
+966 y(F)-8 b(unction)30 b(De\014nitions)f(8)2095 1079
+y(function)g(fallbac)m(k)h(9)2095 1192 y(function)f(2)2095
+1305 y(functions)g(in)g(C)h(30)2095 1418 y(geten)m(v)i(22)2095
+1530 y(getglobal)f(17)2095 1643 y(gettable)h(fallbac)m(k)e(9)2095
+1756 y(global)g(en)m(vironmen)m(t)g(2)2095 1869 y(Global)g(v)-5
+b(ariables)29 b(2)2095 1982 y(gsub)h(18)2095 2095 y(Iden)m(ti\014ers)f
+(3)2095 2208 y(if-then-else)h(4)2095 2321 y(index)f(fallbac)m(k)h(9)
+2095 2434 y(index)f(getglobal)i(9)2095 2547 y(inheritance)e(26)2095
+2660 y(Literal)h(strings)f(3)2095 2772 y(Lo)s(cal)i(v)-5
+b(ariables)29 b(5)2095 2885 y(log10)j(20)2095 2998 y(log)f(20)2095
+3111 y(logical)f(op)s(erators)h(6)2095 3224 y(Lua)f(Stand-alone)g(32)
+2095 3337 y(luac)g(11)2095 3450 y(luac)g(2)2095 3563
+y(lua)p 2222 3563 28 4 v 32 w(call)g(13)2095 3676 y(lua)p
+2222 3676 V 32 w(callfunction)f(13)2095 3789 y(lua)p
+2222 3789 V 32 w(CF)-8 b(unction)30 b(14)2095 3902 y(lua)p
+2222 3902 V 32 w(createtable)i(13)2095 4014 y(lua)p 2222
+4014 V 32 w(do\014le)e(10)2095 4127 y(lua)p 2222 4127
+V 32 w(dostring)g(10)2095 4240 y(lua)p 2222 4240 V 32
+w(error)g(13)2095 4353 y(lua)p 2222 4353 V 32 w(getcfunction)h(11)2095
+4466 y(lua)p 2222 4466 V 32 w(getglobal)g(12)2095 4579
+y(lua)p 2222 4579 V 32 w(getn)m(um)m(b)s(er)g(11)2095
+4692 y(lua)p 2222 4692 V 32 w(getparam)h(14)2095 4805
+y(lua)p 2222 4805 V 32 w(getref)g(14)2095 4918 y(lua)p
+2222 4918 V 32 w(getresult)f(13)2095 5031 y(lua)p 2222
+5031 V 32 w(getstring)g(11)2095 5144 y(lua)p 2222 5144
+V 32 w(getsubscript)f(12)2095 5256 y(lua)p 2222 5256
+V 32 w(getuserdata)i(11)1905 5589 y(35)p eop
%%Page: 36 36
-36 35 bop -42 199 a Fo(ton)o(um)o(b)q(er)14 b(17)-42
-256 y(tostring)g(17)-42 312 y(t)o(yp)q(e)i(17)-42 369
-y(T)o(yp)q(es)g(2)-42 425 y(userdata)f(2)-42 482 y(V)l(ariable)g(n)o
-(um)o(b)q(er)f(of)h(argumen)o(ts)f(25)-42 538 y(v)o(ersion)h(1.1)f(33)
--42 594 y(v)o(ersion)h(2.1)f(32)-42 651 y(v)o(ersion)h(2.2)f(32)-42
-707 y(while-do)h(5)-42 764 y(write)g(21)-42 820 y(writeto)f(20)911
-2748 y(36)p eop
+36 35 bop 0 91 a Fp(lua)p 127 91 28 4 v 32 w(iscfunction)29
+b(11)0 204 y(lua)p 127 204 V 32 w(isfunction)f(11)0 317
+y(lua)p 127 317 V 32 w(isnil)f(11)0 430 y(lua)p 127 430
+V 32 w(isn)m(um)m(b)s(er)h(11)0 543 y(lua)p 127 543 V
+32 w(isstring)g(11)0 656 y(lua)p 127 656 V 32 w(istable)h(11)0
+769 y(lua)p 127 769 V 32 w(isuserdata)g(11)0 882 y(LUA)p
+198 882 V 33 w(NOOBJECT)g(14)0 995 y(lua)p 127 995 V
+32 w(Ob)5 b(ject)30 b(11)0 1108 y(lua)p 127 1108 V 32
+w(pushcfunction)e(12)0 1220 y(lua)p 127 1220 V 32 w(pushnil)f(12)0
+1333 y(lua)p 127 1333 V 32 w(pushn)m(um)m(b)s(er)g(12)0
+1446 y(lua)p 127 1446 V 32 w(pushob)5 b(ject)30 b(12)0
+1559 y(lua)p 127 1559 V 32 w(pushref)e(14)0 1672 y(lua)p
+127 1672 V 32 w(pushstring)g(12)0 1785 y(lua)p 127 1785
+V 32 w(push)m(userdata)h(12)0 1898 y(lua)p 127 1898 V
+32 w(push)m(usertag)h(12)0 2011 y(lua)p 127 2011 V 32
+w(ref)g(14)0 2124 y(lua)p 127 2124 V 32 w(register)g(14)0
+2237 y(lua)p 127 2237 V 32 w(setfallbac)m(k)g(14)0 2350
+y(lua)p 127 2350 V 32 w(storeglobal)g(12)0 2462 y(lua)p
+127 2462 V 32 w(storesubscript)f(12)0 2575 y(lua)p 127
+2575 V 32 w(t)m(yp)s(e)h(11)0 2688 y(lua)p 127 2688 V
+32 w(unref)f(14)0 2801 y(max)h(20)0 2914 y(metho)s(ds)g(8)0
+3027 y(min)f(20)0 3140 y(mo)s(d)h(20)0 3253 y(Mo)s(dules)f(27)0
+3366 y(m)m(ultiple)f(assignmen)m(t)i(4)0 3479 y(next)h(15)0
+3592 y(next)g(24)0 3704 y(nextv)-5 b(ar)31 b(16)0 3817
+y(nextv)-5 b(ar)31 b(24)0 3930 y(nil)d(2)0 4043 y(not)j(6)0
+4156 y(n)m(um)m(b)s(er)e(2)0 4269 y(Numerical)g(constan)m(ts)j(3)0
+4382 y(Op)s(erator)e(precedence)h(6)0 4495 y(or)f(6)0
+4608 y(order)g(fallbac)m(k)g(9)0 4721 y(pattern)g(item)h(19)0
+4834 y(pattern)f(20)0 4946 y(P)m(ersistence)h(26)0 5059
+y(pip)s(ed)d(input)g(20)0 5172 y(pip)s(ed)g(output)i(21)0
+5285 y(p)s(op)s(en)f(20)2095 91 y(p)s(op)s(en)g(21)2095
+204 y(pre-compilation)g(2)2095 317 y(prede\014ned)g(functions)g(15)2095
+430 y(prin)m(t)g(16)2095 543 y(Programming)h(with)f(Classes)g(27)2095
+656 y(random)h(20)2095 769 y(randomseed)g(20)2095 882
+y(read)h(pattern)f(21)2095 995 y(read)h(21)2095 1108
+y(readfrom)f(20)2095 1220 y(records)g(2)2095 1333 y(reference)h(14)2095
+1446 y(re\015exivit)m(y)f(15)2095 1559 y(relational)g(op)s(erators)g(5)
+2095 1672 y(remo)m(v)m(e)i(21)2095 1785 y(rename)f(21)2095
+1898 y(rep)s(eat-un)m(til)e(4)2095 2011 y(reserv)m(ed)i(w)m(ords)f(3)
+2095 2124 y(return)g(statemen)m(t)i(5)2095 2237 y(return)e(4)2095
+2350 y(self)g(8)2095 2462 y(setfallbac)m(k)h(10)2095
+2575 y(setfallbac)m(k)g(17)2095 2688 y(setglobal)g(17)2095
+2801 y(settable)g(fallbac)m(k)f(9)2095 2914 y(short-cut)h(ev)-5
+b(aluation)30 b(6)2095 3027 y(Simple)e(Expressions)h(5)2095
+3140 y(sin)g(20)2095 3253 y(skips)g(21)2095 3366 y(sqrt)h(20)2095
+3479 y(statemen)m(ts)i(4)2095 3592 y(str\014nd)d(17)2095
+3704 y(string)h(2)2095 3817 y(strlen)g(17)2095 3930 y(strlo)m(w)m(er)h
+(17)2095 4043 y(strrep)f(18)2095 4156 y(strsub)f(17)2095
+4269 y(strupp)s(er)f(17)2095 4382 y(table)j(2)2095 4495
+y(tag)h(16)2095 4608 y(tan)f(20)2095 4721 y(tmpname)f(21)2095
+4834 y(tok)m(ens)i(3)2095 4946 y(ton)m(um)m(b)s(er)e(16)2095
+5059 y(tostring)g(16)2095 5172 y(t)m(yp)s(e)h(16)2095
+5285 y(T)m(yp)s(es)f(2)1905 5589 y(36)p eop
%%Page: 37 37
-37 36 bop -42 199 a Fp(Con)n(ten)n(ts)-42 301 y Fl(1)43
-b(In)o(tro)q(duction)1567 b(1)-42 403 y(2)43 b(En)o(vironmen)o(t)14
-b(and)k(Ch)o(unks)1268 b(2)-42 505 y(3)43 b(T)o(yp)q(es)1717
-b(2)-42 607 y(4)43 b(The)17 b(Language)1534 b(3)27 663
-y Fo(4.1)45 b(Lexical)15 b(Con)o(v)o(en)o(tions)40 b(.)22
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)
-65 b(3)27 720 y(4.2)45 b(Co)q(ercion)16 b(.)23 b(.)f(.)g(.)h(.)f(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-g(.)65 b(3)27 776 y(4.3)45 b(Adjustmen)o(t)28 b(.)22
-b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)h(.)f(.)g(.)65 b(4)27 833 y(4.4)45 b(Statemen)o(ts)40
-b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 889 y(4.4.1)51
-b(Blo)q(c)o(ks)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 946 y(4.4.2)51
-b(Assignmen)o(t)27 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(4)131 1002 y(4.4.3)51
-b(Con)o(trol)13 b(Structures)30 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1059 y(4.4.4)51
-b(F)l(unction)15 b(Calls)f(as)g(Statemen)o(ts)30 b(.)22
-b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1115 y(4.4.5)51
-b(Lo)q(cal)15 b(Declarations)28 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)27 1171 y(4.5)45 b(Expressions)30
-b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(5)131 1228 y(4.5.1)51
-b(Simple)14 b(Expressions)k(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)h(.)f(.)g(.)65 b(5)131 1284 y(4.5.2)51 b(Arithmetic)13
-b(Op)q(erators)41 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-g(.)65 b(6)131 1341 y(4.5.3)51 b(Relational)13 b(Op)q(erators)19
-b(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65
-b(6)131 1397 y(4.5.4)51 b(Logical)14 b(Op)q(erators)44
-b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65
-b(6)131 1454 y(4.5.5)51 b(Concatenation)40 b(.)23 b(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(6)131
-1510 y(4.5.6)51 b(Precedence)40 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(7)131
-1567 y(4.5.7)51 b(T)l(able)15 b(Constructors)j(.)k(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(7)131 1623 y(4.5.8)51
-b(F)l(unction)15 b(Calls)39 b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(8)27 1680 y(4.6)45
-b(F)l(unction)15 b(De\014nitions)35 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65 b(8)27
-1736 y(4.7)45 b(F)l(allbac)o(ks)f(.)22 b(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)65
-b(9)27 1792 y(4.8)45 b(Error)14 b(Handling)31 b(.)22
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-h(.)f(.)g(.)42 b(10)-42 1894 y Fl(5)h(The)17 b(Application)g(Program)f
-(In)o(terface)1020 b(11)27 1951 y Fo(5.1)45 b(Executing)15
-b(Lua)h(Co)q(de)32 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)h(.)f(.)g(.)42 b(11)27 2007 y(5.2)j(Con)o(v)o(erting)14
-b(V)l(alues)h(b)q(et)o(w)o(een)h(C)f(and)g(Lua)27 b(.)c(.)f(.)g(.)h(.)f
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-h(.)f(.)g(.)42 b(11)27 2064 y(5.3)j(Manipulating)14 b(Lua)h(Ob)s(jects)
-20 b(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(13)27 2120 y(5.4)j(Calling)14 b(Lua)h(F)l(unctions)34
-b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g
-(.)42 b(14)27 2177 y(5.5)j(C)15 b(F)l(unctions)22 b(.)g(.)h(.)f(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g
-(.)42 b(15)27 2233 y(5.6)j(References)17 b(to)d(Lua)i(Ob)s(jects)21
-b(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(15)-42 2335 y Fl(6)h(Prede\014ned)16 b(F)l(unctions)h(and)h
-(Libraries)1024 b(16)27 2391 y Fo(6.1)45 b(Prede\014ned)17
-b(F)l(unctions)k(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)g(.)42 b(16)27 2448 y(6.2)j(String)15
-b(Manipulation)35 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)h(.)f(.)g(.)42 b(18)27 2504 y(6.3)j(Mathematical)12
-b(F)l(unctions)29 b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)h(.)f(.)g(.)42 b(19)27 2561 y(6.4)j(I/O)16 b(F)l(acilities)31
-b(.)23 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)h(.)f(.)g(.)42 b(19)911 2748 y(37)p eop
+37 36 bop 0 91 a Fp(userdata)30 b(2)0 204 y(V)-8 b(ariable)30
+b(n)m(um)m(b)s(er)f(of)h(argumen)m(ts)h(25)0 317 y(v)m(ersion)f(1.1)h
+(33)0 430 y(v)m(ersion)f(2.1)h(33)0 543 y(v)m(ersion)f(2.2)h(33)0
+656 y(v)m(ersion)f(2.4)h(33)0 769 y(while-do)e(4)0 882
+y(write)h(22)0 995 y(writeto)g(20)1905 5589 y(37)p eop
%%Page: 38 38
-38 37 bop -42 199 a Fl(7)43 b(The)17 b(Debuger)h(In)o(terface)1309
-b(22)27 256 y Fo(7.1)45 b(Stac)o(k)15 b(and)g(F)l(unction)g
-(Information)e(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(22)27 312 y(7.2)j(Manipulating)14 b(Lo)q(cal)h(V)l(ariables)29
-b(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(23)27 369 y(7.3)j(Ho)q(oks)34 b(.)22 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)
-42 b(23)-42 471 y Fl(8)h(Some)16 b(Examples)1468 b(23)27
-527 y Fo(8.1)45 b(Data)14 b(Structures)i(.)22 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(24)27 583 y(8.2)j(The)16 b(F)l(unctions)f Fm(next)f
-Fo(and)i Fm(nextvar)i Fo(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)
-42 b(24)27 640 y(8.3)j(String)15 b(Manipulation)35 b(.)22
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)
-42 b(25)27 696 y(8.4)j(V)l(ariable)15 b(n)o(um)o(b)q(er)f(of)h(argumen)
-o(ts)d(.)22 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(25)27 753 y(8.5)j(P)o(ersistence)e(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(26)27 809 y(8.6)j(Inheritance)40 b(.)22 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(27)27 866 y(8.7)j(Programmi)o(ng)12 b(with)j(Classes)e(.)22
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(27)27 922 y(8.8)j(Mo)q(dules)25 b(.)e(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(29)27 979 y(8.9)j(A)15 b(CF)l(unction)41 b(.)23 b(.)f(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g(.)42
-b(30)27 1035 y(8.10)22 b(Calling)14 b(Lua)h(F)l(unctions)34
-b(.)23 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)g
-(.)42 b(30)-42 1137 y Fl(A)29 b(Incompatibilities)14
-b(with)j(Previous)f(V)l(ersions)899 b(32)911 2748 y Fo(38)p
-eop
+38 37 bop 0 91 a Fq(Con)l(ten)l(ts)0 295 y Fm(1)84 b(In)m(tro)s
+(duction)3136 b(1)0 499 y(2)84 b(En)m(vironmen)m(t)35
+b(and)f(Ch)m(unks)2540 b(2)0 703 y(3)84 b(T)m(yp)s(es)3437
+b(2)0 907 y(4)84 b(The)35 b(Language)3065 b(3)136 1020
+y Fp(4.1)94 b(Lexical)30 b(Con)m(v)m(en)m(tions)83 b(.)45
+b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
+131 b(3)136 1132 y(4.2)94 b(Co)s(ercion)33 b(.)45 b(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)131 b(3)136 1245 y(4.3)94 b(Adjustmen)m(t)58 b(.)46
+b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)131 b(3)136 1358 y(4.4)94 b(Statemen)m(ts)85
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(4)345 1471 y(4.4.1)106
+b(Blo)s(c)m(ks)47 b(.)f(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(4)345 1584
+y(4.4.2)106 b(Assignmen)m(t)57 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(4)345 1697
+y(4.4.3)106 b(Con)m(trol)30 b(Structures)59 b(.)46 b(.)f(.)h(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(4)345 1810
+y(4.4.4)106 b(F)-8 b(unction)30 b(Calls)f(as)i(Statemen)m(ts)64
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(5)345 1923
+y(4.4.5)106 b(Lo)s(cal)31 b(Declarations)60 b(.)46 b(.)f(.)h(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(5)136 2036
+y(4.5)94 b(Expressions)59 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(5)345 2149 y(4.5.1)106 b(Simple)28 b(Expressions)36
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(5)345 2262 y(4.5.2)106 b(Arithmetic)30 b(Op)s(erators)81
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(5)345 2374 y(4.5.3)106 b(Relational)30 b(Op)s(erators)38
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(5)345 2487 y(4.5.4)106 b(Logical)31 b(Op)s(erators)88
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(6)345 2600 y(4.5.5)106 b(Concatenation)84 b(.)46 b(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(6)345
+2713 y(4.5.6)106 b(Precedence)78 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(6)345
+2826 y(4.5.7)106 b(T)-8 b(able)30 b(Constructors)39 b(.)46
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(6)345 2939 y(4.5.8)106 b(F)-8 b(unction)30 b(Calls)80
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)131 b(7)136 3052 y(4.6)94 b(F)-8 b(unction)31 b(De\014nitions)69
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)131 b(8)136 3165 y(4.7)94 b(F)-8 b(allbac)m(ks)90
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 3278 y(4.8)94
+b(Error)30 b(Handling)60 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0
+3482 y Fm(5)f(The)35 b(Application)g(Program)g(In)m(terface)2041
+b(10)136 3594 y Fp(5.1)94 b(Executing)30 b(Lua)h(Co)s(de)63
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)85 b(10)136 3707 y(5.2)94 b(Con)m(v)m(erting)31
+b(V)-8 b(alues)30 b(b)s(et)m(w)m(een)h(C)f(and)g(Lua)54
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(11)136 3820
+y(5.3)94 b(Manipulating)29 b(Lua)h(Ob)5 b(jects)39 b(.)46
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(12)136 3933 y(5.4)94 b(Calling)29 b(Lua)h(F)-8 b(unctions)67
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)85 b(13)136 4046 y(5.5)94 b(C)30 b(F)-8 b(unctions)44
+b(.)i(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)85 b(14)136 4159 y(5.6)94 b(References)31
+b(to)h(Lua)e(Ob)5 b(jects)42 b(.)k(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)85 b(14)0 4363 y Fm(6)f(Prede\014ned)36
+b(F)-9 b(unctions)36 b(and)e(Libraries)2051 b(15)136
+4476 y Fp(6.1)94 b(Prede\014ned)29 b(F)-8 b(unctions)43
+b(.)i(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+f(.)85 b(15)136 4589 y(6.2)94 b(String)29 b(Manipulation)72
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)85 b(17)136 4702 y(6.3)94 b(Mathematical)32 b(F)-8
+b(unctions)56 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)f(.)85 b(20)136 4814 y(6.4)94 b(I/O)31 b(F)-8
+b(acilities)66 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(20)1905 5589
+y(38)p eop
+%%Page: 39 39
+39 38 bop 0 91 a Fm(7)84 b(The)35 b(Debugger)h(In)m(terface)2566
+b(22)136 204 y Fp(7.1)94 b(Stac)m(k)32 b(and)e(F)-8 b(unction)30
+b(Information)e(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(22)136 317 y(7.2)94 b(Manipulating)29 b(Lo)s(cal)h(V)-8
+b(ariables)58 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
+85 b(23)136 430 y(7.3)94 b(Ho)s(oks)69 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)85 b(23)0 634 y Fm(8)f(Some)35 b(Examples)2939
+b(24)136 747 y Fp(8.1)94 b(Data)32 b(Structures)f(.)45
+b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)f(.)85 b(24)136 860 y(8.2)94 b(The)30 b(F)-8
+b(unctions)30 b Fn(next)f Fp(and)h Fn(nextvar)38 b Fp(.)45
+b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(24)136
+973 y(8.3)94 b(String)29 b(Manipulation)72 b(.)45 b(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(25)136
+1086 y(8.4)94 b(V)-8 b(ariable)30 b(n)m(um)m(b)s(er)f(of)i(argumen)m
+(ts)c(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(25)136 1198 y(8.5)94 b(P)m(ersistence)87 b(.)46 b(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(26)136 1311 y(8.6)94 b(Inheritance)78 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(26)136 1424 y(8.7)94 b(Programming)30 b(with)f(Classes)e(.)46
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(27)136 1537 y(8.8)94 b(Mo)s(dules)50 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)85 b(27)136 1650 y(8.9)94 b(A)31 b(CF)-8 b(unction)82
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)f(.)85 b(30)136 1763 y(8.10)49 b(Calling)29
+b(Lua)h(F)-8 b(unctions)67 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(30)0 1967 y Fm(9)f(Lua)35
+b(Stand-alone)2913 b(32)1905 5589 y Fp(39)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
diff --git a/include/lua.h b/include/lua.h
index 07f53209..6a515d50 100644
--- a/include/lua.h
+++ b/include/lua.h
@@ -2,15 +2,15 @@
** LUA - Linguagem para Usuarios de Aplicacao
** Grupo de Tecnologia em Computacao Grafica
** TeCGraf - PUC-Rio
-** $Id: lua.h,v 3.28 1996/05/06 14:32:59 roberto Exp $
+** $Id: lua.h,v 3.32 1996/11/20 13:49:32 roberto Exp $
*/
#ifndef lua_h
#define lua_h
-#define LUA_VERSION "Lua 2.4"
-#define LUA_COPYRIGHT "Copyright (C) 1994, 1995 TeCGraf"
+#define LUA_VERSION "Lua 2.5.1"
+#define LUA_COPYRIGHT "Copyright (C) 1994-1996 TeCGraf"
#define LUA_AUTHORS "W. Celes, R. Ierusalimschy & L. H. de Figueiredo"
diff --git a/include/lualib.h b/include/lualib.h
index 6005d7c2..4fb0ed2d 100644
--- a/include/lualib.h
+++ b/include/lualib.h
@@ -2,7 +2,7 @@
** Libraries to be used in LUA programs
** Grupo de Tecnologia em Computacao Grafica
** TeCGraf - PUC-Rio
-** $Id: lualib.h,v 1.8 1996/04/30 21:13:55 roberto Exp $
+** $Id: lualib.h,v 1.10 1996/08/05 20:55:24 roberto Exp $
*/
#ifndef lualib_h
@@ -23,11 +23,16 @@ struct lua_reg {
};
void luaI_openlib (struct lua_reg *l, int n);
-void lua_arg_error(char *funcname);
+void lua_arg_check(int cond, char *funcname);
char *lua_check_string (int numArg, char *funcname);
+char *lua_opt_string (int numArg, char *def, char *funcname);
double lua_check_number (int numArg, char *funcname);
+long lua_opt_number (int numArg, long def, char *funcname);
char *luaI_addchar (int c);
void luaI_addquoted (char *s);
+char *item_end (char *p);
+int singlematch (int c, char *p);
+
#endif
diff --git a/src/Makefile b/src/Makefile
index 843220dc..1ac2ab85 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -46,8 +46,8 @@ SLIB= $(LIB)/liblua.a
all: $(SLIB)
$(SLIB): $(OBJS)
- ar rcuv $@ $(OBJS)
- ranlib $@
+ ar rcu $@ $(OBJS)
+ $(RANLIB) $@
clean:
rm -f $(OBJS) $(SLIB)
diff --git a/src/func.c b/src/func.c
index 21b19a19..0e15c2fc 100644
--- a/src/func.c
+++ b/src/func.c
@@ -1,4 +1,4 @@
-#include <stdlib.h>
+#include <string.h>
#include "luadebug.h"
#include "table.h"
diff --git a/src/hash.c b/src/hash.c
index e75be129..19ae7b12 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -3,7 +3,7 @@
** hash manager for lua
*/
-char *rcs_hash="$Id: hash.c,v 2.30 1996/05/06 14:30:27 roberto Exp $";
+char *rcs_hash="$Id: hash.c,v 2.32 1996/11/18 13:48:44 roberto Exp $";
#include "mem.h"
@@ -48,24 +48,26 @@ int luaI_redimension (int nhash)
static int hashindex (Hash *t, Object *ref) /* hash function */
{
- switch (tag(ref))
- {
- case LUA_T_NIL:
- lua_error ("unexpected type to index table");
- return -1; /* UNREACHEABLE */
- case LUA_T_NUMBER:
- return (((int)nvalue(ref))%nhash(t));
- case LUA_T_STRING:
- return (int)((tsvalue(ref)->hash)%nhash(t)); /* make it a valid index */
- case LUA_T_FUNCTION:
- return (((IntPoint)ref->value.tf)%nhash(t));
- case LUA_T_CFUNCTION:
- return (((IntPoint)fvalue(ref))%nhash(t));
- case LUA_T_ARRAY:
- return (((IntPoint)avalue(ref))%nhash(t));
- default: /* user data */
- return (((IntPoint)uvalue(ref))%nhash(t));
- }
+ long int h;
+ switch (tag(ref)) {
+ case LUA_T_NIL:
+ lua_error ("unexpected type to index table");
+ h = 0; /* UNREACHEABLE */
+ case LUA_T_NUMBER:
+ h = (long int)nvalue(ref); break;
+ case LUA_T_STRING:
+ h = tsvalue(ref)->hash; break;
+ case LUA_T_FUNCTION:
+ h = (IntPoint)ref->value.tf; break;
+ case LUA_T_CFUNCTION:
+ h = (IntPoint)fvalue(ref); break;
+ case LUA_T_ARRAY:
+ h = (IntPoint)avalue(ref); break;
+ default: /* user data */
+ h = (IntPoint)uvalue(ref); break;
+ }
+ if (h < 0) h = -h;
+ return h%nhash(t); /* make it a valid index */
}
int lua_equalObj (Object *t1, Object *t2)
@@ -283,17 +285,11 @@ Object *lua_hashdefine (Hash *t, Object *ref)
static void hashnext (Hash *t, int i)
{
if (i >= nhash(t))
- {
- lua_pushnil(); lua_pushnil();
return;
- }
while (tag(ref(node(t,i))) == LUA_T_NIL || tag(val(node(t,i))) == LUA_T_NIL)
{
if (++i >= nhash(t))
- {
- lua_pushnil(); lua_pushnil();
return;
- }
}
luaI_pushobject(ref(node(t,i)));
luaI_pushobject(val(node(t,i)));
diff --git a/src/inout.c b/src/inout.c
index 85722c3c..0aa551c0 100644
--- a/src/inout.c
+++ b/src/inout.c
@@ -5,9 +5,10 @@
** Also provides some predefined lua functions.
*/
-char *rcs_inout="$Id: inout.c,v 2.36 1996/03/19 22:28:37 roberto Exp $";
+char *rcs_inout="$Id: inout.c,v 2.43 1996/09/25 12:57:22 roberto Exp $";
#include <stdio.h>
+#include <string.h>
#include "lex.h"
#include "opcode.h"
@@ -31,7 +32,8 @@ static char *st;
*/
static int fileinput (void)
{
- return fgetc (fp);
+ int c = fgetc(fp);
+ return (c == EOF) ? 0 : c;
}
/*
@@ -58,7 +60,6 @@ FILE *lua_openfile (char *fn)
fp = fopen (fn, "r");
if (fp == NULL)
return NULL;
- lua_linenumber = 1;
lua_parsedfile = luaI_createfixedstring(fn)->str;
return fp;
}
@@ -78,12 +79,16 @@ void lua_closefile (void)
/*
** Function to open a string to be input unit
*/
+#define SIZE_PREF 20 /* size of string prefix to appear in error messages */
void lua_openstring (char *s)
{
- lua_setinput (stringinput);
- st = s;
- lua_linenumber = 1;
- lua_parsedfile = luaI_createfixedstring("(string)")->str;
+ char buff[SIZE_PREF+25];
+ lua_setinput(stringinput);
+ st = s;
+ strcpy(buff, "(dostring) >> ");
+ strncat(buff, s, SIZE_PREF);
+ if (strlen(s) > SIZE_PREF) strcat(buff, "...");
+ lua_parsedfile = luaI_createfixedstring(buff)->str;
}
/*
@@ -93,17 +98,36 @@ void lua_closestring (void)
{
}
+
+static void check_arg (int cond, char *func)
+{
+ if (!cond)
+ {
+ char buff[100];
+ sprintf(buff, "incorrect argument to function `%s'", func);
+ lua_error(buff);
+ }
+}
+
+
+static int passresults (void)
+{
+ int arg = 0;
+ lua_Object obj;
+ while ((obj = lua_getresult(++arg)) != LUA_NOOBJECT)
+ lua_pushobject(obj);
+ return arg-1;
+}
/*
** Internal function: do a string
*/
void lua_internaldostring (void)
{
- lua_Object obj = lua_getparam (1);
- if (lua_isstring(obj) && !lua_dostring(lua_getstring(obj)))
- lua_pushnumber(1);
- else
- lua_pushnil();
+ lua_Object obj = lua_getparam (1);
+ if (lua_isstring(obj) && lua_dostring(lua_getstring(obj)) == 0)
+ if (passresults() == 0)
+ lua_pushuserdata(NULL); /* at least one result to signal no errors */
}
/*
@@ -118,10 +142,9 @@ void lua_internaldofile (void)
else if (obj != LUA_NOOBJECT)
lua_error("invalid argument to function `dofile'");
/* else fname = NULL */
- if (!lua_dofile(fname))
- lua_pushnumber(1);
- else
- lua_pushnil();
+ if (lua_dofile(fname) == 0)
+ if (passresults() == 0)
+ lua_pushuserdata(NULL); /* at least one result to signal no errors */
}
@@ -207,8 +230,6 @@ void lua_obj2number (void)
lua_Object o = lua_getparam(1);
if (lua_isnumber(o))
lua_pushnumber(lua_getnumber(o));
- else
- lua_pushnil();
}
@@ -230,8 +251,7 @@ void luaI_setglobal (void)
{
lua_Object name = lua_getparam(1);
lua_Object value = lua_getparam(2);
- if (!lua_isstring(name))
- lua_error("incorrect argument to function `setglobal'");
+ check_arg(lua_isstring(name), "setglobal");
lua_pushobject(value);
lua_storeglobal(lua_getstring(name));
lua_pushobject(value); /* return given value */
@@ -240,7 +260,41 @@ void luaI_setglobal (void)
void luaI_getglobal (void)
{
lua_Object name = lua_getparam(1);
- if (!lua_isstring(name))
- lua_error("incorrect argument to function `getglobal'");
+ check_arg(lua_isstring(name), "getglobal");
lua_pushobject(lua_getglobal(lua_getstring(name)));
}
+
+#define MAXPARAMS 256
+void luaI_call (void)
+{
+ lua_Object f = lua_getparam(1);
+ lua_Object arg = lua_getparam(2);
+ lua_Object temp, params[MAXPARAMS];
+ int narg, i;
+ check_arg(lua_istable(arg), "call");
+ check_arg(lua_isfunction(f), "call");
+ /* narg = arg.n */
+ lua_pushobject(arg);
+ lua_pushstring("n");
+ temp = lua_getsubscript();
+ narg = lua_isnumber(temp) ? lua_getnumber(temp) : MAXPARAMS+1;
+ /* read arg[1...n] */
+ for (i=0; i<narg; i++) {
+ if (i>=MAXPARAMS)
+ lua_error("argument list too long in function `call'");
+ lua_pushobject(arg);
+ lua_pushnumber(i+1);
+ params[i] = lua_getsubscript();
+ if (narg == MAXPARAMS+1 && lua_isnil(params[i])) {
+ narg = i;
+ break;
+ }
+ }
+ /* push parameters and do the call */
+ for (i=0; i<narg; i++)
+ lua_pushobject(params[i]);
+ if (lua_callfunction(f))
+ lua_error(NULL);
+ else
+ passresults();
+}
diff --git a/src/inout.h b/src/inout.h
index e5957753..a26f8e99 100644
--- a/src/inout.h
+++ b/src/inout.h
@@ -1,5 +1,5 @@
/*
-** $Id: inout.h,v 1.15 1996/03/15 18:21:58 roberto Exp $
+** $Id: inout.h,v 1.16 1996/05/28 21:07:32 roberto Exp $
*/
@@ -29,5 +29,6 @@ void luaI_error (void);
void luaI_assert (void);
void luaI_setglobal (void);
void luaI_getglobal (void);
+void luaI_call (void);
#endif
diff --git a/src/lex.c b/src/lex.c
index 299e81b5..bd3233a0 100644
--- a/src/lex.c
+++ b/src/lex.c
@@ -1,5 +1,5 @@
-char *rcs_lex = "$Id: lex.c,v 2.32 1996/03/21 16:33:47 roberto Exp $";
-
+char *rcs_lex = "$Id: lex.c,v 2.39 1996/11/08 19:08:30 roberto Exp $";
+
#include <ctype.h>
#include <string.h>
@@ -14,32 +14,31 @@ char *rcs_lex = "$Id: lex.c,v 2.32 1996/03/21 16:33:47 roberto Exp $";
#define MINBUFF 260
-#define next() { current = input(); }
-#define save(x) { *yytextLast++ = (x); }
-#define save_and_next() { save(current); next(); }
+#define next() (current = input())
+#define save(x) (yytext[tokensize++] = (x))
+#define save_and_next() (save(current), next())
+
-static int current;
-static char *yytext = NULL;
-static int textsize = 0;
-static char *yytextLast;
+static int current; /* look ahead character */
+static Input input; /* input function */
-static Input input;
void lua_setinput (Input fn)
{
- current = ' ';
+ current = '\n';
+ lua_linenumber = 0;
input = fn;
- if (yytext == NULL)
- {
- textsize = MINBUFF;
- yytext = newvector(textsize, char);
- }
}
-char *lua_lasttext (void)
+void luaI_syntaxerror (char *s)
{
- *yytextLast = 0;
- return yytext;
+ char msg[256];
+ char *token = luaI_buffer(1);
+ if (token[0] == 0)
+ token = "<eof>";
+ sprintf (msg,"%s;\n> last token read: \"%s\" at line %d in file %s",
+ s, token, lua_linenumber, lua_parsedfile);
+ lua_error (msg);
}
@@ -79,95 +78,97 @@ void luaI_addReserved (void)
}
}
-
-static void growtext (void)
+static int inclinenumber (int pragma_allowed)
{
- int size = yytextLast - yytext;
- textsize = growvector(&yytext, textsize, char, lexEM, MAX_WORD);
- yytextLast = yytext + size;
+ ++lua_linenumber;
+ if (pragma_allowed && current == '$') { /* is a pragma? */
+ char *buff = luaI_buffer(MINBUFF+1);
+ int i = 0;
+ next(); /* skip $ */
+ while (isalnum(current)) {
+ if (i >= MINBUFF) luaI_syntaxerror("pragma too long");
+ buff[i++] = current;
+ next();
+ }
+ buff[i] = 0;
+ if (strcmp(buff, "debug") == 0)
+ lua_debug = 1;
+ else if (strcmp(buff, "nodebug") == 0)
+ lua_debug = 0;
+ else luaI_syntaxerror("invalid pragma");
+ }
+ return lua_linenumber;
}
-
-static int read_long_string (void)
+static int read_long_string (char *yytext, int buffsize)
{
int cont = 0;
- int spaceleft = textsize - (yytextLast - yytext);
+ int tokensize = 2; /* '[[' already stored */
while (1)
{
- if (spaceleft <= 2) /* may read more than 1 char in one cicle */
- {
- growtext();
- spaceleft = textsize - (yytextLast - yytext);
- }
+ if (buffsize-tokensize <= 2) /* may read more than 1 char in one cicle */
+ yytext = luaI_buffer(buffsize *= 2);
switch (current)
{
- case EOF:
case 0:
+ save(0);
return WRONGTOKEN;
case '[':
- save_and_next(); spaceleft--;
+ save_and_next();
if (current == '[')
{
cont++;
- save_and_next(); spaceleft--;
+ save_and_next();
}
- continue;
+ continue;
case ']':
- save_and_next(); spaceleft--;
+ save_and_next();
if (current == ']')
{
- if (cont == 0) return STRING;
+ if (cont == 0) goto endloop;
cont--;
- save_and_next(); spaceleft--;
+ save_and_next();
}
- continue;
+ continue;
case '\n':
- lua_linenumber++; /* goes through */
+ save_and_next();
+ inclinenumber(0);
+ continue;
default:
- save_and_next(); spaceleft--;
+ save_and_next();
}
- }
+ } endloop:
+ save_and_next(); /* pass the second ']' */
+ yytext[tokensize-2] = 0; /* erases ']]' */
+ luaY_lval.vWord = luaI_findconstantbyname(yytext+2);
+ yytext[tokensize-2] = ']'; /* restores ']]' */
+ save(0);
+ return STRING;
}
-
int luaY_lex (void)
{
- double a;
static int linelasttoken = 0;
+ double a;
+ int buffsize = MINBUFF;
+ char *yytext = luaI_buffer(buffsize);
+ yytext[1] = yytext[2] = yytext[3] = 0;
if (lua_debug)
luaI_codedebugline(linelasttoken);
linelasttoken = lua_linenumber;
while (1)
{
- yytextLast = yytext;
+ int tokensize = 0;
switch (current)
{
- case EOF:
- case 0:
- return 0;
- case '\n': linelasttoken = ++lua_linenumber;
- case ' ':
- case '\r': /* CR: to avoid problems with DOS/Windows */
- case '\t':
+ case '\n':
next();
+ linelasttoken = inclinenumber(1);
continue;
- case '$':
- next();
- while (isalnum(current) || current == '_')
- save_and_next();
- *yytextLast = 0;
- if (strcmp(yytext, "debug") == 0)
- {
- luaY_lval.vInt = 1;
- return DEBUG;
- }
- else if (strcmp(yytext, "nodebug") == 0)
- {
- luaY_lval.vInt = 0;
- return DEBUG;
- }
- return WRONGTOKEN;
+ case ' ': case '\t': case '\r': /* CR: to avoid problems with DOS */
+ next();
+ continue;
case '-':
save_and_next();
@@ -181,12 +182,7 @@ int luaY_lex (void)
else
{
save_and_next(); /* pass the second '[' */
- if (read_long_string() == WRONGTOKEN)
- return WRONGTOKEN;
- save_and_next(); /* pass the second ']' */
- *(yytextLast-2) = 0; /* erases ']]' */
- luaY_lval.vWord = luaI_findconstantbyname(yytext+2);
- return STRING;
+ return read_long_string(yytext, buffsize);
}
case '=':
@@ -213,21 +209,16 @@ int luaY_lex (void)
case '\'':
{
int del = current;
- int spaceleft = textsize - (yytextLast - yytext);
- next(); /* skip the delimiter */
+ save_and_next();
while (current != del)
{
- if (spaceleft <= 2) /* may read more than 1 char in one cicle */
- {
- growtext();
- spaceleft = textsize - (yytextLast - yytext);
- }
- spaceleft--;
+ if (buffsize-tokensize <= 2) /* may read more than 1 char in one cicle */
+ yytext = luaI_buffer(buffsize *= 2);
switch (current)
{
- case EOF:
case 0:
case '\n':
+ save(0);
return WRONGTOKEN;
case '\\':
next(); /* do not save the '\' */
@@ -236,17 +227,19 @@ int luaY_lex (void)
case 'n': save('\n'); next(); break;
case 't': save('\t'); next(); break;
case 'r': save('\r'); next(); break;
- case '\n': lua_linenumber++; /* goes through */
- default : save(current); next(); break;
+ case '\n': save_and_next(); inclinenumber(0); break;
+ default : save_and_next(); break;
}
break;
default:
save_and_next();
}
}
- next(); /* skip the delimiter */
- *yytextLast = 0;
- luaY_lval.vWord = luaI_findconstantbyname(yytext);
+ next(); /* skip delimiter */
+ save(0);
+ luaY_lval.vWord = luaI_findconstantbyname(yytext+1);
+ tokensize--;
+ save(del); save(0); /* restore delimiter */
return STRING;
}
@@ -266,7 +259,7 @@ int luaY_lex (void)
{
TaggedString *ts;
do { save_and_next(); } while (isalnum(current) || current == '_');
- *yytextLast = 0;
+ save(0);
ts = lua_createstring(yytext);
if (ts->marked > 2)
return ts->marked; /* reserved word */
@@ -280,7 +273,12 @@ int luaY_lex (void)
if (current == '.')
{
save_and_next();
- return CONC;
+ if (current == '.')
+ {
+ save_and_next();
+ return DOTS; /* ... */
+ }
+ else return CONC; /* .. */
}
else if (!isdigit(current)) return '.';
/* current is a digit: goes through to number */
@@ -290,12 +288,24 @@ int luaY_lex (void)
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
a=0.0;
- do { a=10.0*a+(current-'0'); save_and_next(); } while (isdigit(current));
- if (current == '.') save_and_next();
-fraction:
+ do {
+ a=10.0*a+(current-'0');
+ save_and_next();
+ } while (isdigit(current));
+ if (current == '.') {
+ save_and_next();
+ if (current == '.')
+ luaI_syntaxerror(
+ "ambiguous syntax (decimal point x string concatenation)");
+ }
+ fraction:
{ double da=0.1;
while (isdigit(current))
- {a+=(current-'0')*da; da/=10.0; save_and_next()};
+ {
+ a+=(current-'0')*da;
+ da/=10.0;
+ save_and_next();
+ }
if (current == 'e' || current == 'E')
{
int e=0;
@@ -304,19 +314,23 @@ fraction:
save_and_next();
neg=(current=='-');
if (current == '+' || current == '-') save_and_next();
- if (!isdigit(current)) return WRONGTOKEN;
- do { e=10.0*e+(current-'0'); save_and_next(); } while (isdigit(current));
- for (ea=neg?0.1:10.0; e>0; e>>=1)
+ if (!isdigit(current)) { save(0); return WRONGTOKEN; }
+ do {
+ e=10.0*e+(current-'0');
+ save_and_next();
+ } while (isdigit(current));
+ for (ea=neg?0.1:10.0; e>0; e>>=1)
{
if (e & 1) a*=ea;
ea*=ea;
}
}
luaY_lval.vFloat = a;
+ save(0);
return NUMBER;
}
- default: /* also end of file */
+ default: /* also end of program (0) */
{
save_and_next();
return yytext[0];
@@ -324,3 +338,4 @@ fraction:
}
}
}
+
diff --git a/src/lex.h b/src/lex.h
index 7ed6fd2d..5245d062 100644
--- a/src/lex.h
+++ b/src/lex.h
@@ -1,7 +1,7 @@
/*
** lex.h
** TecCGraf - PUC-Rio
-** $Id: lex.h,v 1.2 1996/02/14 13:35:51 roberto Exp $
+** $Id: lex.h,v 1.3 1996/11/08 12:49:35 roberto Exp $
*/
#ifndef lex_h
@@ -11,7 +11,7 @@
typedef int (*Input) (void);
void lua_setinput (Input fn);
-char *lua_lasttext (void);
+void luaI_syntaxerror (char *s);
int luaY_lex (void);
void luaI_addReserved (void);
diff --git a/src/lua.stx b/src/lua.stx
index 54c5a38c..00752604 100644
--- a/src/lua.stx
+++ b/src/lua.stx
@@ -1,9 +1,10 @@
%{
-char *rcs_luastx = "$Id: lua.stx,v 3.36 1996/03/21 16:31:32 roberto Exp $";
+char *rcs_luastx = "$Id: lua.stx,v 3.41 1996/11/08 12:49:35 roberto Exp $";
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "luadebug.h"
#include "mem.h"
@@ -58,58 +59,48 @@ int lua_debug = 0;
static void yyerror (char *s)
{
- char msg[256];
- char *token = lua_lasttext();
- if (token[0] == 0)
- token = "<eof>";
- sprintf (msg,"%s; last token read: \"%s\" at line %d in file `%s'",
- s, token, lua_linenumber, lua_parsedfile);
- lua_error (msg);
+ luaI_syntaxerror(s);
+}
+
+static void check_space (int i)
+{
+ if (pc+i>maxcurr-1) /* 1 byte free to code HALT of main code */
+ maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT);
}
static void code_byte (Byte c)
{
- if (pc>maxcurr-2) /* 1 byte free to code HALT of main code */
- maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT);
+ check_space(1);
basepc[pc++] = c;
}
static void code_word (Word n)
{
- CodeWord code;
- code.w = n;
- code_byte(code.m.c1);
- code_byte(code.m.c2);
+ check_space(sizeof(Word));
+ memcpy(basepc+pc, &n, sizeof(Word));
+ pc += sizeof(Word);
}
-static void code_float (float n)
+static void code_float (real n)
{
- CodeFloat code;
- code.f = n;
- code_byte(code.m.c1);
- code_byte(code.m.c2);
- code_byte(code.m.c3);
- code_byte(code.m.c4);
+ check_space(sizeof(real));
+ memcpy(basepc+pc, &n, sizeof(real));
+ pc += sizeof(real);
}
static void code_code (TFunc *tf)
{
- CodeCode code;
- code.tf = tf;
- code_byte(code.m.c1);
- code_byte(code.m.c2);
- code_byte(code.m.c3);
- code_byte(code.m.c4);
+ check_space(sizeof(TFunc *));
+ memcpy(basepc+pc, &tf, sizeof(TFunc *));
+ pc += sizeof(TFunc *);
}
static void code_word_at (Byte *p, int n)
{
- CodeWord code;
- if ((Word)n != n)
- yyerror("block too big");
- code.w = (Word)n;
- *p++ = code.m.c1;
- *p++ = code.m.c2;
+ Word w = n;
+ if (w != n)
+ yyerror("block too big");
+ memcpy(p, &w, sizeof(Word));
}
static void push_field (Word name)
@@ -322,6 +313,19 @@ static void adjust_mult_assign (int vars, Long exps, int temps)
lua_codeadjust(temps);
}
+static int close_parlist (int dots)
+{
+ if (!dots)
+ lua_codeadjust(0);
+ else
+ {
+ code_byte(VARARGS);
+ code_byte(nlocalvar);
+ add_localvar(luaI_createfixedstring("arg"));
+ }
+ return lua_linenumber;
+}
+
static void storesinglevar (Long v)
{
if (v > 0) /* global var */
@@ -418,7 +422,7 @@ void lua_parse (TFunc *tf)
TaggedString *pTStr;
}
-%start functionlist
+%start chunk
%token WRONGTOKEN
%token NIL
@@ -426,10 +430,10 @@ void lua_parse (TFunc *tf)
%token RETURN
%token LOCAL
%token FUNCTION
+%token DOTS
%token <vFloat> NUMBER
%token <vWord> STRING
%token <pTStr> NAME
-%token <vInt> DEBUG
%type <vLong> PrepJump
%type <vLong> exprlist, exprlist1 /* if > 0, points to function return
@@ -440,7 +444,7 @@ void lua_parse (TFunc *tf)
%type <vInt> fieldlist, localdeclist, decinit
%type <vInt> ffieldlist, ffieldlist1, semicolonpart
%type <vInt> lfieldlist, lfieldlist1
-%type <vInt> parlist
+%type <vInt> parlist, parlist1, par
%type <vLong> var, singlevar, funcname
%type <pFunc> body
@@ -455,15 +459,12 @@ void lua_parse (TFunc *tf)
%% /* beginning of rules section */
+chunk : chunklist ret
-functionlist : /* empty */
- | functionlist globalstat
- | functionlist function
- ;
-
-globalstat : stat sc
- | setdebug
- ;
+chunklist : /* empty */
+ | chunklist stat sc
+ | chunklist function
+ ;
function : FUNCTION funcname body
{
@@ -580,6 +581,7 @@ PrepJump : /* empty */
code_byte(0); /* open space */
code_word (0);
}
+ ;
expr1 : expr { adjust_functioncall($1, 1); }
;
@@ -674,13 +676,22 @@ exprlist1 : expr { if ($1 != 0) $$ = $1; else $$ = -1; }
}
;
-parlist : /* empty */ { lua_codeadjust(0); $$ = lua_linenumber; }
- | parlist1 { lua_codeadjust(0); $$ = lua_linenumber; }
+parlist : /* empty */ { $$ = close_parlist(0); }
+ | parlist1 { $$ = close_parlist($1); }
;
-parlist1 : NAME { add_localvar($1); }
- | parlist1 ',' NAME { add_localvar($3); }
+parlist1 : par { $$ = $1; }
+ | parlist1 ',' par
+ {
+ if ($1)
+ lua_error("invalid parameter list");
+ $$ = $3;
+ }
;
+
+par : NAME { add_localvar($1); $$ = 0; }
+ | DOTS { $$ = 1; }
+ ;
fieldlist : lfieldlist
{ flush_list($1/FIELDS_PER_FLUSH, $1%FIELDS_PER_FLUSH); }
@@ -782,7 +793,4 @@ decinit : /* empty */ { $$ = 0; }
| '=' exprlist1 { $$ = $2; }
;
-setdebug : DEBUG { lua_debug = $1; }
- ;
-
%%
diff --git a/src/luac/dump.c b/src/luac/dump.c
index 22db5e36..656cc293 100644
--- a/src/luac/dump.c
+++ b/src/luac/dump.c
@@ -3,9 +3,10 @@
** thread and save bytecodes to file
*/
-char* rcs_dump="$Id: dump.c,v 1.12 1996/03/12 20:00:03 lhf Exp $";
+char* rcs_dump="$Id: dump.c,v 1.17 1996/11/18 11:18:29 lhf Exp $";
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include "luac.h"
@@ -104,38 +105,36 @@ static void ThreadCode(Byte* code, Byte* end)
p+=3;
break;
case PUSHFLOAT:
- p+=5;
+ p+=5; /* assumes sizeof(float)==4 */
break;
case PUSHSELF:
case PUSHSTRING:
{
- CodeWord c;
+ Word w;
p++;
- get_word(c,p);
- c.w=SawStr(c.w,at);
- p[-2]=c.m.c1;
- p[-1]=c.m.c2;
+ get_word(w,p);
+ w=SawStr(w,at);
+ memcpy(p-2,&w,sizeof(w));
break;
}
case PUSHFUNCTION:
{
- CodeCode c;
+ TFunc* tf;
p++;
- get_code(c,p);
- c.tf->marked=at;
- c.tf->next=NULL; /* TODO: remove? */
- lastF=lastF->next=c.tf;
+ get_code(tf,p);
+ tf->marked=at;
+ tf->next=NULL; /* TODO: remove? */
+ lastF=lastF->next=tf;
break;
}
case PUSHGLOBAL:
case STOREGLOBAL:
{
- CodeWord c;
+ Word w;
p++;
- get_word(c,p);
- c.w=SawVar(c.w,at);
- p[-2]=c.m.c1;
- p[-1]=c.m.c2;
+ get_word(w,p);
+ w=SawVar(w,at);
+ memcpy(p-2,&w,sizeof(w));
break;
}
case STORERECORD:
@@ -144,12 +143,11 @@ static void ThreadCode(Byte* code, Byte* end)
p++;
while (n--)
{
- CodeWord c;
+ Word w;
at=p-code;
- get_word(c,p);
- c.w=SawStr(c.w,at);
- p[-2]=c.m.c1;
- p[-1]=c.m.c2;
+ get_word(w,p);
+ w=SawStr(w,at);
+ memcpy(p-2,&w,sizeof(w));
}
break;
}
@@ -167,7 +165,7 @@ static void DumpWord(int i, FILE* D)
fwrite(&w,sizeof(w),1,D);
}
-static void DumpBlock(char* b, int size, FILE* D)
+static void DumpBlock(void* b, int size, FILE* D)
{
fwrite(b,size,1,D);
}
@@ -242,6 +240,9 @@ void DumpHeader(FILE* D)
fputc(ID_CHUNK,D);
fputs(SIGNATURE,D);
fputc(VERSION,D);
+ fputc(sizeof(Word),D);
+ fputc(sizeof(float),D);
+ fputc(sizeof(TFunc*),D);
fwrite(&w,sizeof(w),1,D);
fwrite(&f,sizeof(f),1,D);
}
diff --git a/src/luac/luac.c b/src/luac/luac.c
index aa71afcf..7546c1bb 100644
--- a/src/luac/luac.c
+++ b/src/luac/luac.c
@@ -3,9 +3,10 @@
** lua compiler (saves bytecodes to files)
*/
-char* rcs_luac="$Id: luac.c,v 1.16 1996/03/13 17:33:03 lhf Exp $";
+char* rcs_luac="$Id: luac.c,v 1.18 1996/11/16 20:14:23 lhf Exp $";
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include "luac.h"
@@ -56,7 +57,7 @@ int main(int argc, char* argv[])
fprintf(stderr,"luac: will not overwrite input file \"%s\"\n",d);
exit(1);
}
- D=(dumping) ? fopen(d,"wb") : stdout; /* must open in binary mode */
+ D=(dumping) ? fopen(d,"wb") : stdout; /* must open in binary mode */
if (D==NULL)
{
fprintf(stderr,"luac: cannot open ");
diff --git a/src/luac/print.c b/src/luac/print.c
index 1b338931..0e1d2569 100644
--- a/src/luac/print.c
+++ b/src/luac/print.c
@@ -3,9 +3,10 @@
** print bytecodes
*/
-char* rcs_print="$Id: print.c,v 1.6 1996/03/12 20:00:24 lhf Exp $";
+char* rcs_print="$Id: print.c,v 1.11 1996/11/18 11:24:16 lhf Exp $";
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include "luac.h"
#include "print.h"
@@ -24,7 +25,7 @@ static void PrintCode(Byte* code, Byte* end)
{
OpCode op=(OpCode)*p;
if (op>SETLINE) op=SETLINE+1;
- printf("%6d\t%s",p-code,OpCodeName[op]);
+ printf("%6d\t%s",(int)(p-code),OpCodeName[op]);
switch (op)
{
case PUSHNIL:
@@ -109,44 +110,44 @@ static void PrintCode(Byte* code, Byte* end)
case IFFUPJMP:
case SETLINE:
{
- CodeWord c;
+ Word w;
p++;
- get_word(c,p);
- printf("\t%d",c.w);
+ get_word(w,p);
+ printf("\t%d",w);
break;
}
case PUSHFLOAT:
{
- CodeFloat c;
+ float f;
p++;
- get_float(c,p);
- printf("\t%g",c.f);
+ get_float(f,p);
+ printf("\t%g",f);
break;
}
case PUSHSELF:
case PUSHSTRING:
{
- CodeWord c;
+ Word w;
p++;
- get_word(c,p);
- printf("\t%d\t; \"%s\"",c.w,StrStr(c.w));
+ get_word(w,p);
+ printf("\t%d\t; \"%s\"",w,StrStr(w));
break;
}
case PUSHFUNCTION:
{
- CodeCode c;
+ TFunc* tf;
p++;
- get_code(c,p);
- printf("\t%p\t; \"%s\":%d",c.tf,c.tf->fileName,c.tf->lineDefined);
+ get_code(tf,p);
+ printf("\t%p\t; \"%s\":%d",tf,tf->fileName,tf->lineDefined);
break;
}
case PUSHGLOBAL:
case STOREGLOBAL:
{
- CodeWord c;
+ Word w;
p++;
- get_word(c,p);
- printf("\t%d\t; %s",c.w,VarStr(c.w));
+ get_word(w,p);
+ printf("\t%d\t; %s",w,VarStr(w));
break;
}
case STORELIST:
@@ -161,10 +162,10 @@ static void PrintCode(Byte* code, Byte* end)
p++;
while (n--)
{
- CodeWord c;
- printf("\n%6d\t FIELD",p-code);
- get_word(c,p);
- printf("\t%d\t; \"%s\"",c.w,StrStr(c.w));
+ Word w;
+ printf("\n%6d\t FIELD",(int)(p-code));
+ get_word(w,p);
+ printf("\t%d\t; \"%s\"",w,StrStr(w));
}
break;
}
diff --git a/src/mem.c b/src/mem.c
index 2e410876..4e3bcc52 100644
--- a/src/mem.c
+++ b/src/mem.c
@@ -3,7 +3,7 @@
** TecCGraf - PUC-Rio
*/
-char *rcs_mem = "$Id: mem.c,v 1.12 1996/05/06 16:59:00 roberto Exp $";
+char *rcs_mem = "$Id: mem.c,v 1.13 1996/05/24 14:31:10 roberto Exp $";
#include <stdlib.h>
@@ -11,9 +11,6 @@ char *rcs_mem = "$Id: mem.c,v 1.12 1996/05/06 16:59:00 roberto Exp $";
#include "lua.h"
-#define mem_error() lua_error(memEM)
-
-
void luaI_free (void *block)
{
if (block)
@@ -24,21 +21,15 @@ void luaI_free (void *block)
}
-void *luaI_malloc (unsigned long size)
-{
- void *block = malloc((size_t)size);
- if (block == NULL)
- mem_error();
- return block;
-}
-
-
void *luaI_realloc (void *oldblock, unsigned long size)
{
- void *block = oldblock ? realloc(oldblock, (size_t)size) :
- malloc((size_t)size);
+ void *block;
+ size_t s = (size_t)size;
+ if (s != size)
+ lua_error("Allocation Error: Block too big");
+ block = oldblock ? realloc(oldblock, s) : malloc(s);
if (block == NULL)
- mem_error();
+ lua_error(memEM);
return block;
}
@@ -52,7 +43,7 @@ int luaI_growvector (void **block, unsigned long nelems, int size,
if (nelems > limit)
nelems = limit;
*block = luaI_realloc(*block, nelems*size);
- return (int) nelems;
+ return (int)nelems;
}
diff --git a/src/mem.h b/src/mem.h
index 6899c4c1..86f024fc 100644
--- a/src/mem.h
+++ b/src/mem.h
@@ -1,7 +1,7 @@
/*
** mem.c
** memory manager for lua
-** $Id: mem.h,v 1.7 1996/04/22 18:00:37 roberto Exp $
+** $Id: mem.h,v 1.8 1996/05/24 14:31:10 roberto Exp $
*/
#ifndef mem_h
@@ -24,12 +24,12 @@
void luaI_free (void *block);
-void *luaI_malloc (unsigned long size);
void *luaI_realloc (void *oldblock, unsigned long size);
void *luaI_buffer (unsigned long size);
int luaI_growvector (void **block, unsigned long nelems, int size,
char *errormsg, unsigned long limit);
+#define luaI_malloc(s) luaI_realloc(NULL, (s))
#define new(s) ((s *)luaI_malloc(sizeof(s)))
#define newvector(n,s) ((s *)luaI_malloc((n)*sizeof(s)))
#define growvector(old,n,s,e,l) \
diff --git a/src/opcode.c b/src/opcode.c
index d3f655be..c3bcf54c 100644
--- a/src/opcode.c
+++ b/src/opcode.c
@@ -3,11 +3,12 @@
** TecCGraf - PUC-Rio
*/
-char *rcs_opcode="$Id: opcode.c,v 3.68 1996/04/25 14:10:00 roberto Exp $";
+char *rcs_opcode="$Id: opcode.c,v 3.77 1996/11/18 13:48:44 roberto Exp $";
#include <setjmp.h>
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
#include "luadebug.h"
#include "mem.h"
@@ -49,10 +50,14 @@ static Object *top = &initial_stack;
*/
#define incr_top if (++top >= stackLimit) growstack()
-static StkId CBase = 0; /* when Lua calls C or C calls Lua, points to */
- /* the first slot after the last parameter. */
-static int CnResults = 0; /* when Lua calls C, has the number of parameters; */
- /* when C calls Lua, has the number of results. */
+struct C_Lua_Stack {
+ StkId base; /* when Lua calls C or C calls Lua, points to */
+ /* the first slot after the last parameter. */
+ int num; /* when Lua calls C, has the number of parameters; */
+ /* when C calls Lua, has the number of results. */
+};
+
+static struct C_Lua_Stack CLS_current = {0, 0};
static jmp_buf *errorJmp = NULL; /* current error recover point */
@@ -117,7 +122,7 @@ static void growstack (void)
*/
static char *lua_strconc (char *l, char *r)
{
- int nl = strlen(l);
+ size_t nl = strlen(l);
char *buffer = luaI_buffer(nl+strlen(r)+1);
strcpy(buffer, l);
strcpy(buffer+nl, r);
@@ -177,7 +182,7 @@ static void adjust_top (StkId newtop)
top = nt; /* top could be bigger than newtop */
}
-#define adjustC(nParams) adjust_top(CBase+nParams)
+#define adjustC(nParams) adjust_top(CLS_current.base+nParams)
/*
@@ -197,14 +202,12 @@ static void open_stack (int nelems)
*/
static void lineHook (int line)
{
- StkId oldBase = CBase;
- int oldCnResults = CnResults;
- StkId old_top = CBase = top-stack;
- CnResults = 0;
+ struct C_Lua_Stack oldCLS = CLS_current;
+ StkId old_top = CLS_current.base = top-stack;
+ CLS_current.num = 0;
(*lua_linehook)(line);
top = stack+old_top;
- CnResults = oldCnResults;
- CBase = oldBase;
+ CLS_current = oldCLS;
}
@@ -214,10 +217,9 @@ static void lineHook (int line)
*/
static void callHook (StkId base, lua_Type type, int isreturn)
{
- StkId oldBase = CBase;
- int oldCnResults = CnResults;
- StkId old_top = CBase = top-stack;
- CnResults = 0;
+ struct C_Lua_Stack oldCLS = CLS_current;
+ StkId old_top = CLS_current.base = top-stack;
+ CLS_current.num = 0;
if (isreturn)
(*lua_callhook)(LUA_NOOBJECT, "(return)", 0);
else
@@ -229,32 +231,29 @@ static void callHook (StkId base, lua_Type type, int isreturn)
(*lua_callhook)(Ref(f), "(C)", -1);
}
top = stack+old_top;
- CnResults = oldCnResults;
- CBase = oldBase;
+ CLS_current = oldCLS;
}
/*
-** Call a C function. CBase will point to the top of the stack,
-** and CnResults is the number of parameters. Returns an index
+** Call a C function. CLS_current.base will point to the top of the stack,
+** and CLS_current.num is the number of parameters. Returns an index
** to the first result from C.
*/
static StkId callC (lua_CFunction func, StkId base)
{
- StkId oldBase = CBase;
- int oldCnResults = CnResults;
+ struct C_Lua_Stack oldCLS = CLS_current;
StkId firstResult;
- CnResults = (top-stack) - base;
+ CLS_current.num = (top-stack) - base;
/* incorporate parameters on the stack */
- CBase = base+CnResults; /* == top-stack */
+ CLS_current.base = base+CLS_current.num; /* == top-stack */
if (lua_callhook)
callHook(base, LUA_T_CMARK, 0);
(*func)();
if (lua_callhook) /* func may have changed lua_callhook */
callHook(base, LUA_T_CMARK, 1);
- firstResult = CBase;
- CBase = oldBase;
- CnResults = oldCnResults;
+ firstResult = CLS_current.base;
+ CLS_current = oldCLS;
return firstResult;
}
@@ -449,27 +448,27 @@ int lua_setlocal (lua_Function func, int local_number)
/*
-** Execute a protected call. Assumes that function is at CBase and
-** parameters are on top of it. Leave nResults on the stack.
+** Execute a protected call. Assumes that function is at CLS_current.base and
+** parameters are on top of it. Leave nResults on the stack.
*/
static int do_protectedrun (int nResults)
{
jmp_buf myErrorJmp;
int status;
- StkId oldCBase = CBase;
+ struct C_Lua_Stack oldCLS = CLS_current;
jmp_buf *oldErr = errorJmp;
errorJmp = &myErrorJmp;
if (setjmp(myErrorJmp) == 0)
{
- do_call(CBase+1, nResults);
- CnResults = (top-stack) - CBase; /* number of results */
- CBase += CnResults; /* incorporate results on the stack */
+ do_call(CLS_current.base+1, nResults);
+ CLS_current.num = (top-stack) - CLS_current.base; /* number of results */
+ CLS_current.base += CLS_current.num; /* incorporate results on the stack */
status = 0;
}
else
- { /* an error occurred: restore CBase and top */
- CBase = oldCBase;
- top = stack+CBase;
+ { /* an error occurred: restore CLS_current and top */
+ CLS_current = oldCLS;
+ top = stack+CLS_current.base;
status = 1;
}
errorJmp = oldErr;
@@ -480,10 +479,9 @@ int luaI_dorun (TFunc *tf)
{
int status;
adjustC(1); /* one slot for the pseudo-function */
- stack[CBase].tag = LUA_T_FUNCTION;
- stack[CBase].value.tf = tf;
- status = do_protectedrun(0);
- adjustC(0);
+ stack[CLS_current.base].tag = LUA_T_FUNCTION;
+ stack[CLS_current.base].value.tf = tf;
+ status = do_protectedrun(MULT_RET);
return status;
}
@@ -521,8 +519,8 @@ int lua_callfunction (lua_Object function)
return 1;
else
{
- open_stack((top-stack)-CBase);
- stack[CBase] = *Address(function);
+ open_stack((top-stack)-CLS_current.base);
+ stack[CLS_current.base] = *Address(function);
return do_protectedrun (MULT_RET);
}
}
@@ -531,15 +529,15 @@ int lua_callfunction (lua_Object function)
int lua_call (char *funcname)
{
Word n = luaI_findsymbolbyname(funcname);
- open_stack((top-stack)-CBase);
- stack[CBase] = s_object(n);
+ open_stack((top-stack)-CLS_current.base);
+ stack[CLS_current.base] = s_object(n);
return do_protectedrun(MULT_RET);
}
/*
** Open file, generate opcode and execute global statement. Return 0 on
-** success or 1 on error.
+** success or non 0 on error.
*/
int lua_dofile (char *filename)
{
@@ -547,22 +545,32 @@ int lua_dofile (char *filename)
int c;
FILE *f = lua_openfile(filename);
if (f == NULL)
- return 1;
+ return 2;
c = fgetc(f);
ungetc(c, f);
- status = (c == ID_CHUNK) ? luaI_undump(f) : do_protectedmain();
+ if (c == ID_CHUNK) {
+ f = freopen(filename, "rb", f); /* set binary mode */
+ status = luaI_undump(f);
+ }
+ else {
+ if (c == '#')
+ while ((c=fgetc(f)) != '\n') /* skip first line */;
+ status = do_protectedmain();
+ }
lua_closefile();
return status;
}
/*
** Generate opcode stored on string and execute global statement. Return 0 on
-** success or 1 on error.
+** success or non 0 on error.
*/
-int lua_dostring (char *string)
+int lua_dostring (char *str)
{
int status;
- lua_openstring(string);
+ if (str == NULL)
+ return 1;
+ lua_openstring(str);
status = do_protectedmain();
lua_closestring();
return status;
@@ -575,8 +583,8 @@ int lua_dostring (char *string)
lua_Object lua_setfallback (char *name, lua_CFunction fallback)
{
adjustC(1); /* one slot for the pseudo-function */
- stack[CBase].tag = LUA_T_CFUNCTION;
- stack[CBase].value.f = luaI_setfallback;
+ stack[CLS_current.base].tag = LUA_T_CFUNCTION;
+ stack[CLS_current.base].value.f = luaI_setfallback;
lua_pushstring(name);
lua_pushcfunction(fallback);
if (do_protectedrun(1) == 0)
@@ -594,7 +602,7 @@ lua_Object lua_getsubscript (void)
{
adjustC(2);
pushsubscript();
- CBase++; /* incorporate object in the stack */
+ CLS_current.base++; /* incorporate object in the stack */
return (Ref(top-1));
}
@@ -602,7 +610,7 @@ lua_Object lua_getsubscript (void)
#define MAX_C_BLOCKS 10
static int numCblocks = 0;
-static StkId Cblocks[MAX_C_BLOCKS];
+static struct C_Lua_Stack Cblocks[MAX_C_BLOCKS];
/*
** API: starts a new block
@@ -611,7 +619,7 @@ void lua_beginblock (void)
{
if (numCblocks >= MAX_C_BLOCKS)
lua_error("`lua_beginblock': too many nested blocks");
- Cblocks[numCblocks] = CBase;
+ Cblocks[numCblocks] = CLS_current;
numCblocks++;
}
@@ -621,7 +629,7 @@ void lua_beginblock (void)
void lua_endblock (void)
{
--numCblocks;
- CBase = Cblocks[numCblocks];
+ CLS_current = Cblocks[numCblocks];
adjustC(0);
}
@@ -643,7 +651,7 @@ lua_Object lua_createtable (void)
avalue(top) = lua_createarray(0);
tag(top) = LUA_T_ARRAY;
incr_top;
- CBase++; /* incorporate object in the stack */
+ CLS_current.base++; /* incorporate object in the stack */
return Ref(top-1);
}
@@ -653,10 +661,10 @@ lua_Object lua_createtable (void)
*/
lua_Object lua_getparam (int number)
{
- if (number <= 0 || number > CnResults) return LUA_NOOBJECT;
- /* Ref(stack+(CBase-CnResults+number-1)) ==
- stack+(CBase-CnResults+number-1)-stack+1 == */
- return CBase-CnResults+number;
+ if (number <= 0 || number > CLS_current.num) return LUA_NOOBJECT;
+ /* Ref(stack+(CLS_current.base-CLS_current.num+number-1)) ==
+ stack+(CLS_current.base-CLS_current.num+number-1)-stack+1 == */
+ return CLS_current.base-CLS_current.num+number;
}
int lua_isnumber (lua_Object object)
@@ -673,7 +681,8 @@ int lua_isstring (lua_Object object)
int lua_isfunction (lua_Object object)
{
int t = lua_type(object);
- return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION);
+ return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION) ||
+ (t == LUA_T_MARK) || (t == LUA_T_CMARK);
}
/*
@@ -701,7 +710,8 @@ char *lua_getstring (lua_Object object)
*/
lua_CFunction lua_getcfunction (lua_Object object)
{
- if (object == LUA_NOOBJECT || tag(Address(object)) != LUA_T_CFUNCTION)
+ if (object == LUA_NOOBJECT || ((tag(Address(object)) != LUA_T_CFUNCTION) &&
+ (tag(Address(object)) != LUA_T_CMARK)))
return NULL;
else return (fvalue(Address(object)));
}
@@ -724,7 +734,7 @@ lua_Object lua_getref (int ref)
return LUA_NOOBJECT;
adjustC(0);
luaI_pushobject(o);
- CBase++; /* incorporate object in the stack */
+ CLS_current.base++; /* incorporate object in the stack */
return Ref(top-1);
}
@@ -753,7 +763,7 @@ lua_Object lua_getglobal (char *name)
{
adjustC(0);
getglobal(luaI_findsymbolbyname(name));
- CBase++; /* incorporate object in the stack */
+ CLS_current.base++; /* incorporate object in the stack */
return Ref(top-1);
}
@@ -838,7 +848,10 @@ void lua_pushobject (lua_Object o)
{
if (o == LUA_NOOBJECT)
lua_error("attempt to push a NOOBJECT");
- luaI_pushobject(Address(o));
+ *top = *Address(o);
+ if (tag(top) == LUA_T_MARK) tag(top) = LUA_T_FUNCTION;
+ else if (tag(top) == LUA_T_CMARK) tag(top) = LUA_T_CFUNCTION;
+ incr_top;
}
int lua_type (lua_Object o)
@@ -886,6 +899,34 @@ static void comparison (lua_Type tag_less, lua_Type tag_equal,
}
+static void adjust_varargs (StkId first_extra_arg)
+{
+ Object arg;
+ Object *firstelem = stack+first_extra_arg;
+ int nvararg = top-firstelem;
+ int i;
+ if (nvararg < 0) nvararg = 0;
+ avalue(&arg) = lua_createarray(nvararg+1); /* +1 for field 'n' */
+ tag(&arg) = LUA_T_ARRAY;
+ for (i=0; i<nvararg; i++) {
+ Object index;
+ tag(&index) = LUA_T_NUMBER;
+ nvalue(&index) = i+1;
+ *(lua_hashdefine(avalue(&arg), &index)) = *(firstelem+i);
+ }
+ /* store counter in field "n" */ {
+ Object index, extra;
+ tag(&index) = LUA_T_STRING;
+ tsvalue(&index) = lua_createstring("n");
+ tag(&extra) = LUA_T_NUMBER;
+ nvalue(&extra) = nvararg;
+ *(lua_hashdefine(avalue(&arg), &index)) = extra;
+ }
+ adjust_top(first_extra_arg);
+ *top = arg; incr_top;
+}
+
+
/*
** Execute the given opcode, until a RET. Parameters are between
@@ -914,38 +955,38 @@ static StkId lua_execute (Byte *pc, StkId base)
case PUSHWORD:
{
- CodeWord code;
- get_word(code,pc);
- tag(top) = LUA_T_NUMBER; nvalue(top) = code.w;
+ Word w;
+ get_word(w,pc);
+ tag(top) = LUA_T_NUMBER; nvalue(top) = w;
incr_top;
}
break;
case PUSHFLOAT:
{
- CodeFloat code;
- get_float(code,pc);
- tag(top) = LUA_T_NUMBER; nvalue(top) = code.f;
+ real num;
+ get_float(num,pc);
+ tag(top) = LUA_T_NUMBER; nvalue(top) = num;
incr_top;
}
break;
case PUSHSTRING:
{
- CodeWord code;
- get_word(code,pc);
- tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[code.w];
+ Word w;
+ get_word(w,pc);
+ tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w];
incr_top;
}
break;
case PUSHFUNCTION:
{
- CodeCode code;
- get_code(code,pc);
- luaI_insertfunction(code.tf); /* may take part in GC */
+ TFunc *f;
+ get_code(f,pc);
+ luaI_insertfunction(f); /* may take part in GC */
top->tag = LUA_T_FUNCTION;
- top->value.tf = code.tf;
+ top->value.tf = f;
incr_top;
}
break;
@@ -960,9 +1001,9 @@ static StkId lua_execute (Byte *pc, StkId base)
case PUSHGLOBAL:
{
- CodeWord code;
- get_word(code,pc);
- getglobal(code.w);
+ Word w;
+ get_word(w,pc);
+ getglobal(w);
}
break;
@@ -973,9 +1014,9 @@ static StkId lua_execute (Byte *pc, StkId base)
case PUSHSELF:
{
Object receiver = *(top-1);
- CodeWord code;
- get_word(code,pc);
- tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[code.w];
+ Word w;
+ get_word(w,pc);
+ tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w];
incr_top;
pushsubscript();
*top = receiver;
@@ -994,9 +1035,9 @@ static StkId lua_execute (Byte *pc, StkId base)
case STOREGLOBAL:
{
- CodeWord code;
- get_word(code,pc);
- s_object(code.w) = *(--top);
+ Word w;
+ get_word(w,pc);
+ s_object(w) = *(--top);
}
break;
@@ -1050,9 +1091,9 @@ static StkId lua_execute (Byte *pc, StkId base)
Object *arr = top-n-1;
while (n)
{
- CodeWord code;
- get_word(code,pc);
- tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[code.w];
+ Word w;
+ get_word(w,pc);
+ tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w];
*(lua_hashdefine (avalue(arr), top)) = *(top-1);
top--;
n--;
@@ -1068,11 +1109,15 @@ static StkId lua_execute (Byte *pc, StkId base)
adjust_top(base + *(pc++));
break;
+ case VARARGS:
+ adjust_varargs(base + *(pc++));
+ break;
+
case CREATEARRAY:
{
- CodeWord size;
+ Word size;
get_word(size,pc);
- avalue(top) = lua_createarray(size.w);
+ avalue(top) = lua_createarray(size);
tag(top) = LUA_T_ARRAY;
incr_top;
}
@@ -1195,51 +1240,51 @@ static StkId lua_execute (Byte *pc, StkId base)
case ONTJMP:
{
- CodeWord code;
- get_word(code,pc);
- if (tag(top-1) != LUA_T_NIL) pc += code.w;
+ Word w;
+ get_word(w,pc);
+ if (tag(top-1) != LUA_T_NIL) pc += w;
}
break;
case ONFJMP:
{
- CodeWord code;
- get_word(code,pc);
- if (tag(top-1) == LUA_T_NIL) pc += code.w;
+ Word w;
+ get_word(w,pc);
+ if (tag(top-1) == LUA_T_NIL) pc += w;
}
break;
case JMP:
{
- CodeWord code;
- get_word(code,pc);
- pc += code.w;
+ Word w;
+ get_word(w,pc);
+ pc += w;
}
break;
case UPJMP:
{
- CodeWord code;
- get_word(code,pc);
- pc -= code.w;
+ Word w;
+ get_word(w,pc);
+ pc -= w;
}
break;
case IFFJMP:
{
- CodeWord code;
- get_word(code,pc);
+ Word w;
+ get_word(w,pc);
top--;
- if (tag(top) == LUA_T_NIL) pc += code.w;
+ if (tag(top) == LUA_T_NIL) pc += w;
}
break;
case IFFUPJMP:
{
- CodeWord code;
- get_word(code,pc);
+ Word w;
+ get_word(w,pc);
top--;
- if (tag(top) == LUA_T_NIL) pc -= code.w;
+ if (tag(top) == LUA_T_NIL) pc -= w;
}
break;
@@ -1262,8 +1307,8 @@ static StkId lua_execute (Byte *pc, StkId base)
case SETLINE:
{
- CodeWord code;
- get_word(code,pc);
+ Word line;
+ get_word(line,pc);
if ((stack+base-1)->tag != LUA_T_LINE)
{
/* open space for LINE value */
@@ -1271,9 +1316,9 @@ static StkId lua_execute (Byte *pc, StkId base)
base++;
(stack+base-1)->tag = LUA_T_LINE;
}
- (stack+base-1)->value.i = code.w;
+ (stack+base-1)->value.i = line;
if (lua_linehook)
- lineHook (code.w);
+ lineHook (line);
break;
}
diff --git a/src/opcode.h b/src/opcode.h
index d42ff3ee..381efbc8 100644
--- a/src/opcode.h
+++ b/src/opcode.h
@@ -1,6 +1,6 @@
/*
** TeCGraf - PUC-Rio
-** $Id: opcode.h,v 3.20 1996/03/15 13:13:13 roberto Exp $
+** $Id: opcode.h,v 3.24 1996/11/01 12:46:59 roberto Exp $
*/
#ifndef opcode_h
@@ -15,59 +15,83 @@
#define FIELDS_PER_FLUSH 40
-typedef enum
-{
- PUSHNIL,
- PUSH0, PUSH1, PUSH2,
- PUSHBYTE,
- PUSHWORD,
- PUSHFLOAT,
- PUSHSTRING,
- PUSHFUNCTION,
- PUSHLOCAL0, PUSHLOCAL1, PUSHLOCAL2, PUSHLOCAL3, PUSHLOCAL4,
- PUSHLOCAL5, PUSHLOCAL6, PUSHLOCAL7, PUSHLOCAL8, PUSHLOCAL9,
- PUSHLOCAL,
- PUSHGLOBAL,
- PUSHINDEXED,
- PUSHSELF,
- STORELOCAL0, STORELOCAL1, STORELOCAL2, STORELOCAL3, STORELOCAL4,
- STORELOCAL5, STORELOCAL6, STORELOCAL7, STORELOCAL8, STORELOCAL9,
- STORELOCAL,
- STOREGLOBAL,
- STOREINDEXED0,
- STOREINDEXED,
- STORELIST0,
- STORELIST,
- STORERECORD,
- ADJUST0,
- ADJUST,
- CREATEARRAY,
- EQOP,
- LTOP,
- LEOP,
- GTOP,
- GEOP,
- ADDOP,
- SUBOP,
- MULTOP,
- DIVOP,
- POWOP,
- CONCOP,
- MINUSOP,
- NOTOP,
- ONTJMP,
- ONFJMP,
- JMP,
- UPJMP,
- IFFJMP,
- IFFUPJMP,
- POP,
- CALLFUNC,
- RETCODE0,
- RETCODE,
- SETLINE
+typedef enum {
+/* name parm before after side effect
+-----------------------------------------------------------------------------*/
+
+PUSHNIL,/* - nil */
+PUSH0,/* - 0.0 */
+PUSH1,/* - 1.0 */
+PUSH2,/* - 2.0 */
+PUSHBYTE,/* b - (float)b */
+PUSHWORD,/* w - (float)w */
+PUSHFLOAT,/* f - f */
+PUSHSTRING,/* w - STR[w] */
+PUSHFUNCTION,/* p - FUN(p) */
+PUSHLOCAL0,/* - LOC[0] */
+PUSHLOCAL1,/* - LOC[1] */
+PUSHLOCAL2,/* - LOC[2] */
+PUSHLOCAL3,/* - LOC[3] */
+PUSHLOCAL4,/* - LOC[4] */
+PUSHLOCAL5,/* - LOC[5] */
+PUSHLOCAL6,/* - LOC[6] */
+PUSHLOCAL7,/* - LOC[7] */
+PUSHLOCAL8,/* - LOC[8] */
+PUSHLOCAL9,/* - LOC[9] */
+PUSHLOCAL,/* w - LOC[w] */
+PUSHGLOBAL,/* w - VAR[w] */
+PUSHINDEXED,/* i t t[i] */
+PUSHSELF,/* w t t t[STR[w]] */
+STORELOCAL0,/* x - LOC[0]=x */
+STORELOCAL1,/* x - LOC[1]=x */
+STORELOCAL2,/* x - LOC[2]=x */
+STORELOCAL3,/* x - LOC[3]=x */
+STORELOCAL4,/* x - LOC[4]=x */
+STORELOCAL5,/* x - LOC[5]=x */
+STORELOCAL6,/* x - LOC[6]=x */
+STORELOCAL7,/* x - LOC[7]=x */
+STORELOCAL8,/* x - LOC[8]=x */
+STORELOCAL9,/* x - LOC[9]=x */
+STORELOCAL,/* w x - LOC[w]=x */
+STOREGLOBAL,/* w x - VAR[w]=x */
+STOREINDEXED0,/* v i t - t[i]=v */
+STOREINDEXED,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */
+STORELIST0,/* w v_w...v_1 t - t[i]=v_i */
+STORELIST,/* w n v_w...v_1 t - t[i+n*FPF]=v_i */
+STORERECORD,/* n
+ w_n...w_1 v_n...v_1 t - t[STR[w_i]]=v_i */
+ADJUST0,/* - - TOP=BASE */
+ADJUST,/* b - - TOP=BASE+b */
+CREATEARRAY,/* w - newarray(size = w) */
+EQOP,/* y x (x==y)? 1 : nil */
+LTOP,/* y x (x<y)? 1 : nil */
+LEOP,/* y x (x<y)? 1 : nil */
+GTOP,/* y x (x>y)? 1 : nil */
+GEOP,/* y x (x>=y)? 1 : nil */
+ADDOP,/* y x x+y */
+SUBOP,/* y x x-y */
+MULTOP,/* y x x*y */
+DIVOP,/* y x x/y */
+POWOP,/* y x x^y */
+CONCOP,/* y x x..y */
+MINUSOP,/* x -x */
+NOTOP,/* x (x==nil)? 1 : nil */
+ONTJMP,/* w x - (x!=nil)? PC+=w */
+ONFJMP,/* w x - (x==nil)? PC+=w */
+JMP,/* w - - PC+=w */
+UPJMP,/* w - - PC-=w */
+IFFJMP,/* w x - (x==nil)? PC+=w */
+IFFUPJMP,/* w x - (x==nil)? PC-=w */
+POP,/* x - */
+CALLFUNC,/* n m v_n...v_1 f r_m...r_1 f(v1,...,v_n) */
+RETCODE0,
+RETCODE,/* b - - */
+SETLINE,/* w - - LINE=w */
+VARARGS/* b v_n...v_1 {v_1...v_n;n=n} */
+
} OpCode;
+
#define MULT_RET 255
@@ -103,32 +127,15 @@ typedef struct Object
#define s_tag(i) (tag(&s_object(i)))
#define s_nvalue(i) (nvalue(&s_object(i)))
#define s_svalue(i) (svalue(&s_object(i)))
+#define s_tsvalue(i) (tsvalue(&s_object(i)))
#define s_avalue(i) (avalue(&s_object(i)))
#define s_fvalue(i) (fvalue(&s_object(i)))
#define s_uvalue(i) (uvalue(&s_object(i)))
-typedef union
-{
- struct {Byte c1; Byte c2;} m;
- Word w;
-} CodeWord;
-#define get_word(code,pc) {code.m.c1 = *pc++; code.m.c2 = *pc++;}
-
-typedef union
-{
- struct {Byte c1; Byte c2; Byte c3; Byte c4;} m;
- float f;
-} CodeFloat;
-#define get_float(code,pc) {code.m.c1 = *pc++; code.m.c2 = *pc++;\
- code.m.c3 = *pc++; code.m.c4 = *pc++;}
-
-typedef union
-{
- struct {Byte c1; Byte c2; Byte c3; Byte c4;} m;
- TFunc *tf;
-} CodeCode;
-#define get_code(code,pc) {code.m.c1 = *pc++; code.m.c2 = *pc++;\
- code.m.c3 = *pc++; code.m.c4 = *pc++;}
+#define get_word(code,pc) {memcpy(&code, pc, sizeof(Word)); pc+=sizeof(Word);}
+#define get_float(code,pc){memcpy(&code, pc, sizeof(real)); pc+=sizeof(real);}
+#define get_code(code,pc) {memcpy(&code, pc, sizeof(TFunc *)); \
+ pc+=sizeof(TFunc *);}
/* Exported functions */
diff --git a/src/parser.c b/src/parser.c
index 1cbb3c17..c91ee00e 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -1,22 +1,20 @@
-#if defined (__cplusplus) || defined (c_plusplus)
-#include <c_varieties.h>
-#ifdef __EXTERN_C__
- EXTERN_FUNCTION ( extern int luaY_lex, ());
-#else
- extern int luaY_lex();
-#endif
- extern void luaY_error(char *);
- extern int luaY_parse();
+#ifndef lint
+static char luaY_sccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
#endif
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+#define luaY_clearin (luaY_char=(-1))
+#define luaY_errok (luaY_errflag=0)
+#define YYRECOVERING (luaY_errflag!=0)
+#define YYPREFIX "luaY_"
+#line 2 "lua.stx"
-#include <stdlib.h>
-
-# line 2 "lua.stx"
-
-char *rcs_luastx = "$Id: parser.c,v 1.1 1996/05/14 19:44:57 lhf Exp $";
+char *rcs_luastx = "$Id: parser.c,v 1.1 1996/11/21 16:11:40 lhf Exp $";
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "luadebug.h"
#include "mem.h"
@@ -71,58 +69,48 @@ int lua_debug = 0;
static void luaY_error (char *s)
{
- char msg[256];
- char *token = lua_lasttext();
- if (token[0] == 0)
- token = "<eof>";
- sprintf (msg,"%s; last token read: \"%s\" at line %d in file `%s'",
- s, token, lua_linenumber, lua_parsedfile);
- lua_error (msg);
+ luaI_syntaxerror(s);
+}
+
+static void check_space (int i)
+{
+ if (pc+i>maxcurr-1) /* 1 byte free to code HALT of main code */
+ maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT);
}
static void code_byte (Byte c)
{
- if (pc>maxcurr-2) /* 1 byte free to code HALT of main code */
- maxcurr = growvector(&basepc, maxcurr, Byte, codeEM, MAX_INT);
+ check_space(1);
basepc[pc++] = c;
}
static void code_word (Word n)
{
- CodeWord code;
- code.w = n;
- code_byte(code.m.c1);
- code_byte(code.m.c2);
+ check_space(sizeof(Word));
+ memcpy(basepc+pc, &n, sizeof(Word));
+ pc += sizeof(Word);
}
-static void code_float (float n)
+static void code_float (real n)
{
- CodeFloat code;
- code.f = n;
- code_byte(code.m.c1);
- code_byte(code.m.c2);
- code_byte(code.m.c3);
- code_byte(code.m.c4);
+ check_space(sizeof(real));
+ memcpy(basepc+pc, &n, sizeof(real));
+ pc += sizeof(real);
}
static void code_code (TFunc *tf)
{
- CodeCode code;
- code.tf = tf;
- code_byte(code.m.c1);
- code_byte(code.m.c2);
- code_byte(code.m.c3);
- code_byte(code.m.c4);
+ check_space(sizeof(TFunc *));
+ memcpy(basepc+pc, &tf, sizeof(TFunc *));
+ pc += sizeof(TFunc *);
}
static void code_word_at (Byte *p, int n)
{
- CodeWord code;
- if ((Word)n != n)
- luaY_error("block too big");
- code.w = (Word)n;
- *p++ = code.m.c1;
- *p++ = code.m.c2;
+ Word w = n;
+ if (w != n)
+ luaY_error("block too big");
+ memcpy(p, &w, sizeof(Word));
}
static void push_field (Word name)
@@ -335,6 +323,19 @@ static void adjust_mult_assign (int vars, Long exps, int temps)
lua_codeadjust(temps);
}
+static int close_parlist (int dots)
+{
+ if (!dots)
+ lua_codeadjust(0);
+ else
+ {
+ code_byte(VARARGS);
+ code_byte(nlocalvar);
+ add_localvar(luaI_createfixedstring("arg"));
+ }
+ return lua_linenumber;
+}
+
static void storesinglevar (Long v)
{
if (v > 0) /* global var */
@@ -417,9 +418,8 @@ void lua_parse (TFunc *tf)
}
-
-# line 410 "lua.stx"
-typedef union
+#line 414 "lua.stx"
+typedef union
{
int vInt;
float vFloat;
@@ -429,901 +429,739 @@ typedef union
TFunc *pFunc;
TaggedString *pTStr;
} YYSTYPE;
-# define WRONGTOKEN 257
-# define NIL 258
-# define IF 259
-# define THEN 260
-# define ELSE 261
-# define ELSEIF 262
-# define WHILE 263
-# define DO 264
-# define REPEAT 265
-# define UNTIL 266
-# define END 267
-# define RETURN 268
-# define LOCAL 269
-# define FUNCTION 270
-# define NUMBER 271
-# define STRING 272
-# define NAME 273
-# define DEBUG 274
-# define AND 275
-# define OR 276
-# define EQ 277
-# define NE 278
-# define LE 279
-# define GE 280
-# define CONC 281
-# define UNARY 282
-# define NOT 283
-#define luaY_clearin luaY_char = -1
-#define luaY_errok luaY_errflag = 0
-extern int luaY_char;
-extern int luaY_errflag;
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH 150
-#endif
-YYSTYPE luaY_lval, luaY_val;
-# define YYERRCODE 256
-
-# line 788 "lua.stx"
-
-int luaY_exca[] ={
--1, 1,
- 0, -1,
- -2, 0,
--1, 14,
- 61, 88,
- 44, 88,
- -2, 94,
--1, 22,
- 40, 7,
- -2, 94,
--1, 29,
- 40, 59,
- 123, 59,
- -2, 46,
--1, 44,
- 123, 56,
- -2, 63,
--1, 71,
- 123, 56,
- -2, 84,
--1, 76,
- 275, 30,
- 276, 30,
- 277, 30,
- 278, 30,
- 62, 30,
- 60, 30,
- 279, 30,
- 280, 30,
- 281, 30,
- 43, 30,
- 45, 30,
- 42, 30,
- 47, 30,
- 94, 30,
- -2, 65,
--1, 77,
- 91, 94,
- 46, 94,
- -2, 89,
--1, 132,
- 123, 56,
- -2, 78,
--1, 138,
- 123, 56,
- -2, 63,
--1, 155,
- 275, 30,
- 276, 30,
- 277, 30,
- 278, 30,
- 62, 30,
- 60, 30,
- 279, 30,
- 280, 30,
- 281, 30,
- 43, 30,
- 45, 30,
- 42, 30,
- 47, 30,
- 94, 30,
- -2, 67,
- };
-# define YYNPROD 100
-# define YYLAST 311
-int luaY_act[]={
-
- 61, 59, 148, 60, 141, 62, 118, 61, 59, 90,
- 60, 89, 62, 86, 84, 18, 42, 168, 54, 164,
- 55, 61, 59, 156, 60, 54, 62, 55, 61, 59,
- 115, 60, 73, 62, 157, 61, 59, 19, 60, 54,
- 62, 55, 61, 59, 82, 60, 54, 62, 55, 158,
- 159, 129, 63, 54, 91, 55, 111, 25, 121, 63,
- 54, 109, 55, 127, 26, 61, 59, 26, 60, 27,
- 62, 7, 27, 63, 71, 8, 33, 9, 11, 63,
- 63, 12, 6, 80, 67, 18, 13, 63, 68, 7,
- 48, 40, 4, 8, 63, 9, 24, 76, 138, 12,
- 81, 133, 76, 18, 61, 59, 61, 60, 39, 62,
- 20, 62, 146, 130, 117, 132, 69, 63, 123, 48,
- 104, 105, 122, 70, 124, 120, 72, 106, 48, 50,
- 29, 46, 17, 44, 128, 47, 85, 23, 83, 76,
- 51, 28, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 88, 140, 63, 45, 63, 36,
- 112, 14, 131, 139, 47, 35, 22, 151, 126, 134,
- 125, 78, 137, 47, 153, 74, 38, 37, 75, 142,
- 116, 5, 3, 154, 2, 49, 21, 147, 16, 87,
- 152, 165, 163, 11, 110, 108, 76, 155, 145, 160,
- 77, 79, 41, 171, 135, 107, 162, 173, 161, 136,
- 15, 43, 10, 167, 143, 144, 1, 0, 169, 0,
- 119, 149, 150, 0, 170, 0, 172, 0, 0, 0,
- 0, 0, 0, 65, 66, 53, 56, 57, 58, 64,
- 65, 66, 53, 56, 57, 58, 64, 17, 166, 0,
- 114, 0, 0, 52, 65, 66, 53, 56, 57, 58,
- 64, 65, 66, 53, 56, 57, 58, 64, 65, 66,
- 53, 56, 57, 58, 64, 0, 14, 53, 56, 57,
- 58, 64, 32, 0, 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 30, 31, 18, 30, 31,
- 113, 0, 0, 0, 64, 0, 0, 34, 0, 0,
- 34 };
-int luaY_pact[]={
-
- -1000, -188, -1000, -1000, 51, -1000, -258, 24, -1000, -1000,
- 47, -1000, -257, -1000, -1000, 93, -1000, 73, -1000, -1000,
- -1000, 89, -1000, 82, -7, -1000, 24, 24, -1000, 73,
- -1000, -1000, -1000, -1000, 24, -49, -1000, 24, -1000, 24,
- -258, 39, -1000, -1000, 24, -1000, -259, 24, -260, -1000,
- -262, -264, -1000, 24, 24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, -1000, -1000, 86, -21, -15,
- -15, 27, -14, -236, -1000, 70, -1000, -1000, 44, -1000,
- -267, 24, 84, 70, -1000, -35, -1000, 81, 74, -1000,
- -1000, -1000, 23, 23, 23, 23, 23, 23, 64, 64,
- -15, -15, -15, 62, -1000, -1000, -1000, -62, -1000, 69,
- 71, -1000, -21, 40, -1000, 24, -170, -1000, -1000, 70,
- -1000, -1000, -1000, -269, -1000, 24, 24, -1000, 53, -1000,
- -271, -1000, 24, 24, -1000, -21, 51, -1000, 24, 24,
- -244, -1000, -212, 0, 0, -1000, -271, -1000, 40, -21,
- -21, -1000, -1000, -1000, 51, -1000, -1000, -248, -1000, 24,
- -1000, 69, -250, -1000, -1000, -1000, -42, -1000, -1000, -1000,
- -1000, -1000, -212, -1000 };
-int luaY_pgo[]={
-
- 0, 216, 54, 44, 138, 76, 57, 212, 211, 210,
- 205, 202, 201, 199, 61, 198, 195, 194, 189, 159,
- 188, 186, 185, 184, 182, 92, 37, 181, 130, 32,
- 180, 88, 34, 177, 176, 175, 172, 141, 170, 168,
- 165, 163, 154, 134, 51, 56 };
-int luaY_r1[]={
-
- 0, 1, 1, 1, 23, 23, 24, 21, 21, 22,
- 30, 30, 26, 26, 25, 33, 25, 34, 25, 25,
- 25, 25, 32, 32, 32, 35, 29, 36, 36, 2,
- 31, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 38, 6, 39, 6, 40, 37, 5, 9,
- 9, 8, 8, 3, 3, 4, 41, 4, 18, 18,
- 42, 42, 43, 10, 10, 15, 15, 44, 44, 13,
- 13, 14, 14, 45, 16, 16, 17, 17, 7, 7,
- 19, 19, 19, 20, 28, 11, 11, 12, 12, 27 };
-int luaY_r2[]={
-
- 0, 0, 4, 4, 4, 2, 7, 3, 7, 11,
- 0, 6, 0, 2, 17, 1, 17, 1, 13, 7,
- 2, 7, 0, 4, 15, 1, 7, 0, 7, 1,
- 3, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 5, 3, 3, 3, 3, 3,
- 3, 5, 1, 11, 1, 11, 1, 9, 5, 3,
- 7, 7, 3, 1, 3, 3, 1, 9, 1, 3,
- 3, 7, 1, 7, 5, 1, 5, 0, 2, 1,
- 5, 3, 7, 7, 1, 5, 3, 7, 3, 7,
- 3, 9, 7, 3, 3, 3, 7, 1, 5, 3 };
-int luaY_chk[]={
-
- -1000, -1, -23, -24, -25, -27, 270, 259, 263, 265,
- -7, -5, 269, 274, -19, -9, -20, -28, 273, -26,
- 59, -21, -19, -28, -31, -6, 40, 45, -37, -28,
- 271, 272, 258, -5, 283, -40, -19, -33, -34, 61,
- 44, -11, 273, -8, 40, -37, 58, 91, 46, -22,
- 40, 58, 260, 277, 60, 62, 278, 279, 280, 43,
- 45, 42, 47, 94, 281, 275, 276, -6, -31, -31,
- -31, 123, -31, -29, -35, -4, -6, -19, -28, -12,
- 44, 61, -3, -4, 273, -31, 273, -18, -42, 273,
- 273, -2, -31, -31, -31, -31, -31, -31, -31, -31,
- -31, -31, -31, -31, -2, -2, 41, -10, -16, -14,
- -17, -45, -31, 273, 264, 266, -30, 44, 273, -4,
- 41, 93, 41, 44, -29, -38, -39, 125, -43, -44,
- 44, -44, 44, 61, -2, -31, -25, -36, 268, -41,
- -29, 273, -2, -31, -31, -15, 59, -45, 273, -31,
- -31, -29, -2, -26, -3, -6, 267, -32, 261, 262,
- -13, -14, -2, -26, 267, -29, -31, -44, 267, 260,
- -2, -29, -2, -32 };
-int luaY_def[]={
-
- 1, -2, 2, 3, 12, 5, 0, 56, 15, 17,
- 0, 20, 0, 99, -2, 56, 90, 59, 93, 4,
- 13, 0, -2, 0, 0, 30, 56, 56, 45, -2,
- 47, 48, 49, 50, 56, 0, 94, 56, 25, 56,
- 0, 97, 95, 58, -2, 62, 0, 56, 0, 6,
- 68, 0, 29, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 29, 29, 30, 0, 44,
- 51, -2, 0, 0, 10, 19, -2, -2, 0, 21,
- 0, 56, 0, 64, 60, 0, 92, 0, 69, 70,
- 8, 25, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 52, 54, 31, 0, 72, 77,
- 77, 81, 86, 93, 29, 56, 27, 66, 96, 98,
- 61, 91, 25, 0, 29, 56, 56, 57, 75, 74,
- 78, 85, -2, 56, 25, 29, 12, 26, -2, 56,
- 0, 71, 22, 53, 55, 73, 79, 82, 0, 87,
- 83, 29, 18, 11, 12, -2, 9, 0, 25, 56,
- 76, 77, 0, 28, 14, 23, 0, 80, 16, 29,
- 25, 29, 22, 24 };
-typedef struct { char *t_name; int t_val; } luaY_toktype;
+#line 433 "y.tab.c"
+#define WRONGTOKEN 257
+#define NIL 258
+#define IF 259
+#define THEN 260
+#define ELSE 261
+#define ELSEIF 262
+#define WHILE 263
+#define DO 264
+#define REPEAT 265
+#define UNTIL 266
+#define END 267
+#define RETURN 268
+#define LOCAL 269
+#define FUNCTION 270
+#define DOTS 271
+#define NUMBER 272
+#define STRING 273
+#define NAME 274
+#define AND 275
+#define OR 276
+#define EQ 277
+#define NE 278
+#define LE 279
+#define GE 280
+#define CONC 281
+#define UNARY 282
+#define NOT 283
+#define YYERRCODE 256
+short luaY_lhs[] = { -1,
+ 0, 24, 24, 24, 28, 22, 22, 23, 31, 31,
+ 27, 27, 26, 34, 26, 35, 26, 26, 26, 26,
+ 33, 33, 33, 36, 30, 25, 25, 1, 32, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 38, 5, 39, 5, 40, 37, 4, 8, 8, 7,
+ 7, 2, 2, 3, 41, 3, 17, 17, 18, 18,
+ 19, 19, 42, 9, 9, 14, 14, 43, 43, 12,
+ 12, 13, 13, 44, 15, 15, 16, 16, 6, 6,
+ 20, 20, 20, 21, 29, 10, 10, 11, 11,
+};
+short luaY_len[] = { 2,
+ 2, 0, 3, 2, 3, 1, 3, 5, 0, 3,
+ 0, 1, 8, 0, 8, 0, 6, 3, 1, 3,
+ 0, 2, 7, 0, 3, 0, 3, 0, 1, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 2, 1, 1, 1, 1, 1, 1, 2,
+ 0, 5, 0, 5, 0, 4, 2, 1, 3, 3,
+ 1, 0, 1, 1, 0, 4, 0, 1, 1, 3,
+ 1, 1, 0, 3, 2, 0, 2, 0, 1, 0,
+ 2, 1, 3, 3, 0, 2, 1, 3, 1, 3,
+ 1, 4, 3, 1, 1, 1, 3, 0, 2,
+};
+short luaY_defred[] = { 2,
+ 0, 0, 0, 14, 16, 0, 0, 0, 94, 19,
+ 0, 0, 0, 91, 1, 0, 4, 0, 48, 46,
+ 47, 0, 0, 0, 49, 29, 95, 0, 0, 44,
+ 0, 0, 24, 0, 0, 0, 0, 96, 0, 0,
+ 0, 0, 0, 0, 0, 57, 61, 12, 3, 0,
+ 0, 0, 0, 0, 0, 28, 28, 28, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9, 27, 65, 0, 0, 20, 0,
+ 5, 0, 0, 0, 0, 0, 59, 0, 93, 30,
+ 24, 51, 53, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 73, 0,
+ 0, 82, 28, 0, 0, 0, 0, 97, 72, 71,
+ 0, 0, 69, 7, 60, 92, 28, 0, 0, 0,
+ 56, 0, 75, 0, 0, 86, 24, 0, 25, 0,
+ 0, 24, 0, 0, 0, 0, 0, 0, 83, 0,
+ 74, 0, 28, 17, 10, 0, 70, 24, 0, 0,
+ 77, 0, 0, 8, 22, 0, 13, 81, 15, 28,
+ 24, 28, 0, 23,
+};
+short luaY_dgoto[] = { 1,
+ 91, 34, 35, 25, 26, 11, 46, 12, 107, 39,
+ 79, 161, 108, 151, 109, 110, 121, 122, 123, 27,
+ 14, 41, 81, 2, 15, 16, 49, 17, 28, 73,
+ 115, 37, 160, 32, 33, 74, 30, 128, 129, 31,
+ 116, 134, 133, 112,
+};
+short luaY_sindex[] = { 0,
+ 0, 332, -38, 0, 0, -38, -239, -223, 0, 0,
+ -23, 17, 0, 0, 0, 3, 0, 137, 0, 0,
+ 0, -38, -38, -38, 0, 0, 0, 137, 547, 0,
+ -25, -38, 0, 3, 45, 0, 212, 0, -22, 0,
+ 52, 140, -38, -223, -38, 0, 0, 0, 0, -166,
+ -38, -154, 40, 40, 102, 0, 0, 0, -38, -38,
+ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -34, 481, -130, 0, 0, 0, -38, -129, 0, -194,
+ 0, -123, 45, 0, -17, 103, 0, 753, 0, 0,
+ 0, 0, 0, -30, -30, -30, -30, -30, -30, 95,
+ 11, 11, 40, 40, 40, 97, 41, 123, 0, 124,
+ 212, 0, 0, -38, -59, -38, 45, 0, 0, 0,
+ 128, 131, 0, 0, 0, 0, 0, -38, -38, -38,
+ 0, -97, 0, 120, -38, 0, 0, 212, 0, 3,
+ 0, 0, -194, -183, 118, 118, 212, 97, 0, -97,
+ 0, 212, 0, 0, 0, -85, 0, 0, -38, -82,
+ 0, 123, -80, 0, 0, 1105, 0, 0, 0, 0,
+ 0, 0, -183, 0,
+};
+short luaY_rindex[] = { 0,
+ 0, 191, 69, 0, 0, 173, 0, 0, 0, 0,
+ 0, 69, 150, 0, 0, 146, 0, -36, 0, 0,
+ 0, 69, 69, 69, 0, 0, 0, 1, 0, 0,
+ 0, 69, 0, 47, 461, 436, 0, 0, 197, 130,
+ 0, 0, 69, 0, -33, 0, 0, 0, 0, 0,
+ 69, 0, 24, 59, 1181, 0, 0, 0, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ -50, 0, 0, 0, 0, 0, 69, 0, 0, 152,
+ 0, 0, 311, -21, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 746, 776, 799, 821, 844, 866, 505,
+ 383, 410, 88, 112, 359, 1174, 0, 74, 0, -40,
+ -26, 0, 0, 69, -230, 69, 921, 0, 0, 0,
+ 0, 160, 0, 0, 0, 0, 0, 69, 69, 69,
+ 0, 77, 0, 78, -9, 0, 0, 939, 0, 289,
+ 474, 0, 0, -60, 894, 1137, -16, 0, 0, 89,
+ 0, -10, 0, 0, 0, 0, 0, 0, 69, 0,
+ 0, 74, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -60, 0,
+};
+short luaY_gindex[] = { 0,
+ -31, 171, 85, -2, 48, 0, 0, 0, 0, 0,
+ 0, 0, 67, 0, 0, 0, 0, 0, 75, 8,
+ 0, 0, 0, 0, 104, 107, -29, 0, 12, -61,
+ 0, 1260, 50, 0, 0, 0, 213, 0, 0, 0,
+ 0, 0, -107, 94,
+};
+#define YYTABLESIZE 1462
+short luaY_table[] = { 10,
+ 45, 24, 136, 58, 75, 24, 22, 62, 85, 13,
+ 22, 68, 66, 18, 67, 40, 69, 87, 78, 42,
+ 44, 78, 90, 43, 95, 92, 93, 84, 52, 127,
+ 26, 26, 87, 88, 38, 26, 26, 43, 77, 90,
+ 58, 45, 45, 45, 45, 45, 11, 45, 88, 79,
+ 9, 84, 68, 36, 168, 85, 45, 69, 50, 45,
+ 45, 48, 45, 70, 43, 43, 43, 43, 43, 95,
+ 43, 55, 55, 51, 85, 153, 119, 158, 159, 120,
+ 156, 137, 43, 43, 78, 43, 58, 39, 76, 55,
+ 36, 80, 36, 45, 45, 144, 165, 71, 87, 50,
+ 50, 50, 50, 50, 70, 50, 154, 87, 84, 172,
+ 155, 40, 10, 55, 88, 79, 43, 50, 50, 89,
+ 50, 163, 13, 58, 36, 45, 18, 83, 39, 39,
+ 39, 39, 39, 70, 39, 114, 68, 66, 171, 67,
+ 173, 69, 90, 125, 118, 11, 39, 39, 43, 39,
+ 124, 50, 40, 40, 40, 40, 40, 130, 40, 68,
+ 66, 117, 67, 141, 69, 131, 132, 135, 142, 6,
+ 40, 40, 62, 40, 143, 95, 148, 62, 150, 61,
+ 39, 164, 52, 50, 167, 52, 169, 95, 70, 95,
+ 26, 55, 67, 89, 50, 95, 98, 82, 78, 3,
+ 68, 79, 76, 4, 40, 5, 21, 95, 6, 7,
+ 89, 70, 39, 80, 9, 86, 162, 157, 139, 19,
+ 95, 140, 174, 19, 47, 149, 0, 51, 0, 0,
+ 51, 62, 0, 20, 21, 9, 40, 20, 21, 106,
+ 95, 0, 0, 0, 23, 0, 0, 0, 23, 0,
+ 65, 0, 0, 68, 66, 98, 67, 0, 69, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 62, 95, 61, 45, 45, 45, 45, 45, 45,
+ 45, 45, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 0, 55, 0, 43, 43, 43,
+ 43, 43, 43, 43, 43, 70, 0, 11, 11, 0,
+ 18, 0, 11, 11, 0, 0, 0, 50, 50, 50,
+ 50, 50, 50, 50, 50, 50, 50, 50, 50, 0,
+ 0, 0, 50, 50, 50, 50, 50, 50, 50, 50,
+ 0, 0, 0, 0, 0, 0, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39, 41, 0,
+ 0, 39, 39, 39, 39, 39, 39, 39, 39, 18,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 37, 0, 0, 40, 40, 40, 40, 40,
+ 40, 40, 40, 0, 59, 60, 63, 64, 65, 41,
+ 41, 41, 41, 41, 11, 41, 0, 0, 11, 38,
+ 11, 0, 0, 11, 11, 11, 0, 41, 41, 11,
+ 41, 0, 0, 37, 0, 37, 37, 37, 0, 0,
+ 0, 0, 0, 62, 62, 64, 0, 0, 62, 62,
+ 0, 37, 37, 0, 37, 0, 0, 0, 0, 0,
+ 38, 41, 38, 38, 38, 98, 0, 98, 98, 98,
+ 63, 98, 98, 98, 98, 98, 98, 0, 38, 38,
+ 98, 38, 0, 66, 0, 37, 64, 29, 29, 64,
+ 29, 0, 29, 41, 0, 0, 57, 58, 59, 60,
+ 63, 64, 65, 0, 64, 29, 0, 29, 0, 0,
+ 0, 63, 38, 0, 42, 0, 0, 37, 0, 0,
+ 0, 0, 0, 0, 66, 29, 29, 66, 29, 63,
+ 29, 0, 68, 66, 0, 67, 0, 69, 0, 29,
+ 0, 0, 66, 29, 38, 29, 0, 0, 0, 0,
+ 62, 0, 61, 0, 0, 42, 0, 11, 42, 11,
+ 11, 11, 0, 11, 11, 11, 11, 11, 0, 0,
+ 0, 0, 11, 42, 42, 0, 42, 29, 0, 18,
+ 0, 18, 18, 18, 70, 18, 18, 18, 18, 18,
+ 18, 0, 0, 0, 18, 0, 0, 0, 68, 66,
+ 3, 67, 0, 69, 4, 0, 5, 42, 0, 6,
+ 7, 8, 0, 0, 0, 9, 62, 0, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 41, 41, 41,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 42,
+ 0, 0, 41, 41, 41, 41, 41, 41, 41, 41,
+ 70, 37, 37, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 37, 0, 0, 0, 37, 37, 37, 37,
+ 37, 37, 37, 37, 0, 0, 0, 0, 38, 38,
+ 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+ 0, 0, 0, 38, 38, 38, 38, 38, 38, 38,
+ 38, 0, 0, 0, 64, 0, 64, 64, 64, 0,
+ 64, 64, 64, 64, 64, 64, 0, 0, 0, 64,
+ 29, 29, 29, 29, 29, 29, 29, 0, 0, 0,
+ 0, 63, 63, 0, 0, 0, 63, 63, 0, 0,
+ 0, 0, 66, 0, 66, 66, 66, 0, 66, 66,
+ 66, 66, 66, 66, 113, 31, 0, 66, 29, 29,
+ 29, 29, 29, 29, 29, 57, 58, 59, 60, 63,
+ 64, 65, 0, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 34, 0, 0, 42, 42,
+ 42, 42, 42, 42, 42, 42, 31, 0, 0, 31,
+ 0, 0, 0, 0, 68, 66, 0, 67, 33, 69,
+ 0, 0, 0, 0, 31, 31, 56, 31, 0, 0,
+ 0, 0, 62, 0, 61, 0, 34, 0, 0, 34,
+ 32, 57, 58, 59, 60, 63, 64, 65, 0, 0,
+ 0, 0, 0, 0, 34, 34, 0, 34, 31, 33,
+ 0, 0, 33, 35, 0, 126, 70, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 33, 33, 0,
+ 33, 32, 0, 0, 32, 36, 0, 0, 34, 0,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 32,
+ 32, 0, 32, 0, 35, 0, 0, 35, 0, 0,
+ 0, 33, 0, 52, 0, 0, 0, 0, 0, 0,
+ 34, 0, 35, 35, 0, 35, 36, 0, 0, 36,
+ 0, 0, 0, 32, 0, 0, 0, 0, 0, 0,
+ 99, 0, 0, 33, 36, 36, 0, 36, 0, 0,
+ 0, 0, 0, 0, 52, 0, 35, 52, 28, 0,
+ 0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
+ 0, 0, 52, 0, 0, 0, 0, 0, 36, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 35, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
+ 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+ 36, 0, 0, 0, 0, 0, 0, 28, 0, 0,
+ 0, 0, 0, 0, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 0, 0, 52, 31,
+ 31, 31, 31, 31, 31, 31, 0, 57, 58, 59,
+ 60, 63, 64, 65, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 0, 0, 0, 34,
+ 34, 34, 34, 34, 34, 34, 0, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 0,
+ 0, 0, 33, 33, 33, 33, 33, 33, 33, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 0, 0, 0, 32, 32, 32, 32, 32, 32,
+ 32, 0, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 0, 0, 0, 35, 35, 35,
+ 35, 35, 35, 35, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 54, 0, 0, 36,
+ 36, 36, 36, 36, 36, 36, 68, 66, 0, 67,
+ 0, 69, 52, 52, 52, 52, 52, 52, 52, 52,
+ 52, 52, 52, 52, 62, 0, 61, 52, 52, 52,
+ 0, 0, 0, 0, 0, 0, 0, 54, 0, 99,
+ 54, 99, 99, 99, 0, 99, 99, 99, 99, 99,
+ 99, 0, 0, 0, 99, 54, 0, 28, 70, 28,
+ 28, 28, 0, 28, 28, 28, 28, 28, 28, 0,
+ 0, 0, 28, 94, 0, 94, 94, 94, 94, 94,
+ 94, 0, 29, 29, 0, 29, 0, 29, 0, 54,
+ 0, 94, 94, 94, 0, 94, 0, 0, 0, 0,
+ 29, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 54, 29, 0, 94, 0, 0, 94, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+ 0, 53, 54, 0, 0, 0, 0, 0, 0, 0,
+ 0, 72, 0, 0, 0, 0, 94, 0, 94, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 88, 0, 0, 0, 0, 0, 0, 0, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 111, 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, 170, 0, 0, 0, 0, 0,
+ 0, 0, 0, 138, 0, 0, 0, 0, 0, 57,
+ 58, 59, 60, 63, 64, 65, 0, 145, 146, 147,
+ 0, 0, 0, 0, 152, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 0, 0, 0,
+ 54, 54, 54, 0, 0, 0, 0, 0, 166, 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, 94, 94,
+ 94, 94, 94, 94, 94, 29, 29, 29, 29, 29,
+ 29, 29,
+};
+short luaY_check[] = { 2,
+ 0, 40, 110, 40, 34, 40, 45, 41, 59, 2,
+ 45, 42, 43, 2, 45, 8, 47, 44, 59, 8,
+ 44, 44, 44, 0, 46, 57, 58, 44, 46, 91,
+ 261, 262, 59, 44, 274, 266, 267, 61, 61, 61,
+ 40, 41, 42, 43, 44, 45, 0, 47, 59, 59,
+ 274, 44, 42, 6, 162, 44, 40, 47, 0, 59,
+ 60, 59, 62, 94, 41, 42, 43, 44, 45, 91,
+ 47, 24, 123, 91, 125, 137, 271, 261, 262, 274,
+ 142, 113, 59, 60, 125, 62, 123, 0, 44, 123,
+ 43, 40, 45, 93, 94, 127, 158, 123, 125, 41,
+ 42, 43, 44, 45, 94, 47, 138, 274, 125, 171,
+ 140, 0, 115, 123, 125, 125, 93, 59, 60, 274,
+ 62, 153, 115, 123, 77, 125, 115, 43, 41, 42,
+ 43, 44, 45, 94, 47, 266, 42, 43, 170, 45,
+ 172, 47, 41, 41, 274, 0, 59, 60, 125, 62,
+ 274, 93, 41, 42, 43, 44, 45, 61, 47, 42,
+ 43, 77, 45, 116, 47, 125, 44, 44, 41, 40,
+ 59, 60, 0, 62, 44, 46, 274, 60, 59, 62,
+ 93, 267, 46, 125, 267, 46, 267, 58, 94, 40,
+ 0, 123, 41, 44, 58, 46, 0, 58, 125, 259,
+ 41, 125, 125, 263, 93, 265, 267, 58, 268, 269,
+ 61, 94, 125, 125, 274, 45, 150, 143, 115, 258,
+ 91, 115, 173, 258, 12, 132, -1, 91, -1, -1,
+ 91, 59, -1, 272, 273, 274, 125, 272, 273, 274,
+ 91, -1, -1, -1, 283, -1, -1, -1, 283, -1,
+ 281, -1, -1, 42, 43, 59, 45, -1, 47, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 60, 123, 62, 274, 275, 276, 277, 278, 279,
+ 280, 281, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, -1, 123, -1, 274, 275, 276,
+ 277, 278, 279, 280, 281, 94, -1, 261, 262, -1,
+ 0, -1, 266, 267, -1, -1, -1, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, -1,
+ -1, -1, 274, 275, 276, 277, 278, 279, 280, 281,
+ -1, -1, -1, -1, -1, -1, 259, 260, 261, 262,
+ 263, 264, 265, 266, 267, 268, 269, 270, 0, -1,
+ -1, 274, 275, 276, 277, 278, 279, 280, 281, 59,
+ 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
+ 269, 270, 0, -1, -1, 274, 275, 276, 277, 278,
+ 279, 280, 281, -1, 277, 278, 279, 280, 281, 41,
+ 42, 43, 44, 45, 259, 47, -1, -1, 263, 0,
+ 265, -1, -1, 268, 269, 270, -1, 59, 60, 274,
+ 62, -1, -1, 41, -1, 43, 44, 45, -1, -1,
+ -1, -1, -1, 261, 262, 0, -1, -1, 266, 267,
+ -1, 59, 60, -1, 62, -1, -1, -1, -1, -1,
+ 41, 93, 43, 44, 45, 259, -1, 261, 262, 263,
+ 0, 265, 266, 267, 268, 269, 270, -1, 59, 60,
+ 274, 62, -1, 0, -1, 93, 41, 42, 43, 44,
+ 45, -1, 47, 125, -1, -1, 275, 276, 277, 278,
+ 279, 280, 281, -1, 59, 60, -1, 62, -1, -1,
+ -1, 41, 93, -1, 0, -1, -1, 125, -1, -1,
+ -1, -1, -1, -1, 41, 42, 43, 44, 45, 59,
+ 47, -1, 42, 43, -1, 45, -1, 47, -1, 94,
+ -1, -1, 59, 60, 125, 62, -1, -1, -1, -1,
+ 60, -1, 62, -1, -1, 41, -1, 259, 44, 261,
+ 262, 263, -1, 265, 266, 267, 268, 269, -1, -1,
+ -1, -1, 274, 59, 60, -1, 62, 94, -1, 259,
+ -1, 261, 262, 263, 94, 265, 266, 267, 268, 269,
+ 270, -1, -1, -1, 274, -1, -1, -1, 42, 43,
+ 259, 45, -1, 47, 263, -1, 265, 93, -1, 268,
+ 269, 270, -1, -1, -1, 274, 60, -1, 62, -1,
+ -1, -1, -1, -1, -1, -1, -1, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 125,
+ -1, -1, 274, 275, 276, 277, 278, 279, 280, 281,
+ 94, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, -1, -1, -1, 274, 275, 276, 277,
+ 278, 279, 280, 281, -1, -1, -1, -1, 259, 260,
+ 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
+ -1, -1, -1, 274, 275, 276, 277, 278, 279, 280,
+ 281, -1, -1, -1, 259, -1, 261, 262, 263, -1,
+ 265, 266, 267, 268, 269, 270, -1, -1, -1, 274,
+ 275, 276, 277, 278, 279, 280, 281, -1, -1, -1,
+ -1, 261, 262, -1, -1, -1, 266, 267, -1, -1,
+ -1, -1, 259, -1, 261, 262, 263, -1, 265, 266,
+ 267, 268, 269, 270, 264, 0, -1, 274, 275, 276,
+ 277, 278, 279, 280, 281, 275, 276, 277, 278, 279,
+ 280, 281, -1, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 0, -1, -1, 274, 275,
+ 276, 277, 278, 279, 280, 281, 41, -1, -1, 44,
+ -1, -1, -1, -1, 42, 43, -1, 45, 0, 47,
+ -1, -1, -1, -1, 59, 60, 260, 62, -1, -1,
+ -1, -1, 60, -1, 62, -1, 41, -1, -1, 44,
+ 0, 275, 276, 277, 278, 279, 280, 281, -1, -1,
+ -1, -1, -1, -1, 59, 60, -1, 62, 93, 41,
+ -1, -1, 44, 0, -1, 93, 94, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 59, 60, -1,
+ 62, 41, -1, -1, 44, 0, -1, -1, 93, -1,
+ 125, -1, -1, -1, -1, -1, -1, -1, -1, 59,
+ 60, -1, 62, -1, 41, -1, -1, 44, -1, -1,
+ -1, 93, -1, 0, -1, -1, -1, -1, -1, -1,
+ 125, -1, 59, 60, -1, 62, 41, -1, -1, 44,
+ -1, -1, -1, 93, -1, -1, -1, -1, -1, -1,
+ 0, -1, -1, 125, 59, 60, -1, 62, -1, -1,
+ -1, -1, -1, -1, 41, -1, 93, 44, 0, -1,
+ -1, -1, -1, -1, -1, 125, -1, -1, -1, -1,
+ -1, -1, 59, -1, -1, -1, -1, -1, 93, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 125, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
+ -1, -1, -1, -1, -1, -1, 93, -1, -1, -1,
+ 125, -1, -1, -1, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, -1, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, -1, -1, 125, 274,
+ 275, 276, 277, 278, 279, 280, -1, 275, 276, 277,
+ 278, 279, 280, 281, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, -1, -1, -1, 274,
+ 275, 276, 277, 278, 279, 280, -1, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, -1,
+ -1, -1, 274, 275, 276, 277, 278, 279, 280, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, -1, -1, -1, 274, 275, 276, 277, 278, 279,
+ 280, -1, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, -1, -1, -1, 274, 275, 276,
+ 277, 278, 279, 280, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 0, -1, -1, 274,
+ 275, 276, 277, 278, 279, 280, 42, 43, -1, 45,
+ -1, 47, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 60, -1, 62, 274, 275, 276,
+ -1, -1, -1, -1, -1, -1, -1, 41, -1, 259,
+ 44, 261, 262, 263, -1, 265, 266, 267, 268, 269,
+ 270, -1, -1, -1, 274, 59, -1, 259, 94, 261,
+ 262, 263, -1, 265, 266, 267, 268, 269, 270, -1,
+ -1, -1, 274, 40, -1, 42, 43, 44, 45, 46,
+ 47, -1, 42, 43, -1, 45, -1, 47, -1, 93,
+ -1, 58, 59, 60, -1, 62, -1, -1, -1, -1,
+ 60, -1, 62, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 125, 3, -1, 91, -1, -1, 94, -1, -1,
+ -1, -1, -1, -1, 94, -1, -1, -1, -1, -1,
+ -1, 22, 23, -1, -1, -1, -1, -1, -1, -1,
+ -1, 32, -1, -1, -1, -1, 123, -1, 125, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 51, -1, -1, -1, -1, -1, -1, -1, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 260, -1, -1, -1, -1, -1,
+ -1, -1, -1, 114, -1, -1, -1, -1, -1, 275,
+ 276, 277, 278, 279, 280, 281, -1, 128, 129, 130,
+ -1, -1, -1, -1, 135, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, -1, -1, -1,
+ 274, 275, 276, -1, -1, -1, -1, -1, 159, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 275, 276,
+ 277, 278, 279, 280, 281, 275, 276, 277, 278, 279,
+ 280, 281,
+};
+#define YYFINAL 1
#ifndef YYDEBUG
-# define YYDEBUG 0 /* don't allow debugging */
+#define YYDEBUG 0
#endif
-
+#define YYMAXTOKEN 283
#if YYDEBUG
-
-luaY_toktype luaY_toks[] =
-{
- "WRONGTOKEN", 257,
- "NIL", 258,
- "IF", 259,
- "THEN", 260,
- "ELSE", 261,
- "ELSEIF", 262,
- "WHILE", 263,
- "DO", 264,
- "REPEAT", 265,
- "UNTIL", 266,
- "END", 267,
- "RETURN", 268,
- "LOCAL", 269,
- "FUNCTION", 270,
- "NUMBER", 271,
- "STRING", 272,
- "NAME", 273,
- "DEBUG", 274,
- "AND", 275,
- "OR", 276,
- "EQ", 277,
- "NE", 278,
- ">", 62,
- "<", 60,
- "LE", 279,
- "GE", 280,
- "CONC", 281,
- "+", 43,
- "-", 45,
- "*", 42,
- "/", 47,
- "UNARY", 282,
- "NOT", 283,
- "^", 94,
- "-unknown-", -1 /* ends search */
+char *luaY_name[] = {
+"end-of-file",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,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,"WRONGTOKEN","NIL","IF","THEN","ELSE",
+"ELSEIF","WHILE","DO","REPEAT","UNTIL","END","RETURN","LOCAL","FUNCTION","DOTS",
+"NUMBER","STRING","NAME","AND","OR","EQ","NE","LE","GE","CONC","UNARY","NOT",
};
-
-char * luaY_reds[] =
-{
- "-no such reduction-",
- "functionlist : /* empty */",
- "functionlist : functionlist globalstat",
- "functionlist : functionlist function",
- "globalstat : stat sc",
- "globalstat : setdebug",
- "function : FUNCTION funcname body",
- "funcname : var",
- "funcname : varexp ':' NAME",
- "body : '(' parlist ')' block END",
- "statlist : /* empty */",
- "statlist : statlist stat sc",
- "sc : /* empty */",
- "sc : ';'",
- "stat : IF expr1 THEN PrepJump block PrepJump elsepart END",
- "stat : WHILE",
- "stat : WHILE expr1 DO PrepJump block PrepJump END",
- "stat : REPEAT",
- "stat : REPEAT block UNTIL expr1 PrepJump",
- "stat : varlist1 '=' exprlist1",
- "stat : functioncall",
- "stat : LOCAL localdeclist decinit",
- "elsepart : /* empty */",
- "elsepart : ELSE block",
- "elsepart : ELSEIF expr1 THEN PrepJump block PrepJump elsepart",
- "block : /* empty */",
- "block : statlist ret",
- "ret : /* empty */",
- "ret : RETURN exprlist sc",
- "PrepJump : /* empty */",
- "expr1 : expr",
- "expr : '(' expr ')'",
- "expr : expr1 EQ expr1",
- "expr : expr1 '<' expr1",
- "expr : expr1 '>' expr1",
- "expr : expr1 NE expr1",
- "expr : expr1 LE expr1",
- "expr : expr1 GE expr1",
- "expr : expr1 '+' expr1",
- "expr : expr1 '-' expr1",
- "expr : expr1 '*' expr1",
- "expr : expr1 '/' expr1",
- "expr : expr1 '^' expr1",
- "expr : expr1 CONC expr1",
- "expr : '-' expr1",
- "expr : table",
- "expr : varexp",
- "expr : NUMBER",
- "expr : STRING",
- "expr : NIL",
- "expr : functioncall",
- "expr : NOT expr1",
- "expr : expr1 AND PrepJump",
- "expr : expr1 AND PrepJump expr1",
- "expr : expr1 OR PrepJump",
- "expr : expr1 OR PrepJump expr1",
- "table : /* empty */",
- "table : '{' fieldlist '}'",
- "functioncall : funcvalue funcParams",
- "funcvalue : varexp",
- "funcvalue : varexp ':' NAME",
- "funcParams : '(' exprlist ')'",
- "funcParams : table",
- "exprlist : /* empty */",
- "exprlist : exprlist1",
- "exprlist1 : expr",
- "exprlist1 : exprlist1 ','",
- "exprlist1 : exprlist1 ',' expr",
- "parlist : /* empty */",
- "parlist : parlist1",
- "parlist1 : NAME",
- "parlist1 : parlist1 ',' NAME",
- "fieldlist : lfieldlist",
- "fieldlist : lfieldlist semicolonpart",
- "fieldlist : ffieldlist1 lastcomma",
- "semicolonpart : /* empty */",
- "semicolonpart : ';' ffieldlist",
- "lastcomma : /* empty */",
- "lastcomma : ','",
- "ffieldlist : /* empty */",
- "ffieldlist : ffieldlist1 lastcomma",
- "ffieldlist1 : ffield",
- "ffieldlist1 : ffieldlist1 ',' ffield",
- "ffield : NAME '=' expr1",
- "lfieldlist : /* empty */",
- "lfieldlist : lfieldlist1 lastcomma",
- "lfieldlist1 : expr1",
- "lfieldlist1 : lfieldlist1 ',' expr1",
- "varlist1 : var",
- "varlist1 : varlist1 ',' var",
- "var : singlevar",
- "var : varexp '[' expr1 ']'",
- "var : varexp '.' NAME",
- "singlevar : NAME",
- "varexp : var",
- "localdeclist : NAME",
- "localdeclist : localdeclist ',' NAME",
- "decinit : /* empty */",
- "decinit : '=' exprlist1",
- "setdebug : DEBUG",
+char *luaY_rule[] = {
+"$accept : chunk",
+"chunk : chunklist ret",
+"chunklist :",
+"chunklist : chunklist stat sc",
+"chunklist : chunklist function",
+"function : FUNCTION funcname body",
+"funcname : var",
+"funcname : varexp ':' NAME",
+"body : '(' parlist ')' block END",
+"statlist :",
+"statlist : statlist stat sc",
+"sc :",
+"sc : ';'",
+"stat : IF expr1 THEN PrepJump block PrepJump elsepart END",
+"$$1 :",
+"stat : WHILE $$1 expr1 DO PrepJump block PrepJump END",
+"$$2 :",
+"stat : REPEAT $$2 block UNTIL expr1 PrepJump",
+"stat : varlist1 '=' exprlist1",
+"stat : functioncall",
+"stat : LOCAL localdeclist decinit",
+"elsepart :",
+"elsepart : ELSE block",
+"elsepart : ELSEIF expr1 THEN PrepJump block PrepJump elsepart",
+"$$3 :",
+"block : $$3 statlist ret",
+"ret :",
+"ret : RETURN exprlist sc",
+"PrepJump :",
+"expr1 : expr",
+"expr : '(' expr ')'",
+"expr : expr1 EQ expr1",
+"expr : expr1 '<' expr1",
+"expr : expr1 '>' expr1",
+"expr : expr1 NE expr1",
+"expr : expr1 LE expr1",
+"expr : expr1 GE expr1",
+"expr : expr1 '+' expr1",
+"expr : expr1 '-' expr1",
+"expr : expr1 '*' expr1",
+"expr : expr1 '/' expr1",
+"expr : expr1 '^' expr1",
+"expr : expr1 CONC expr1",
+"expr : '-' expr1",
+"expr : table",
+"expr : varexp",
+"expr : NUMBER",
+"expr : STRING",
+"expr : NIL",
+"expr : functioncall",
+"expr : NOT expr1",
+"$$4 :",
+"expr : expr1 AND PrepJump $$4 expr1",
+"$$5 :",
+"expr : expr1 OR PrepJump $$5 expr1",
+"$$6 :",
+"table : $$6 '{' fieldlist '}'",
+"functioncall : funcvalue funcParams",
+"funcvalue : varexp",
+"funcvalue : varexp ':' NAME",
+"funcParams : '(' exprlist ')'",
+"funcParams : table",
+"exprlist :",
+"exprlist : exprlist1",
+"exprlist1 : expr",
+"$$7 :",
+"exprlist1 : exprlist1 ',' $$7 expr",
+"parlist :",
+"parlist : parlist1",
+"parlist1 : par",
+"parlist1 : parlist1 ',' par",
+"par : NAME",
+"par : DOTS",
+"$$8 :",
+"fieldlist : lfieldlist $$8 semicolonpart",
+"fieldlist : ffieldlist1 lastcomma",
+"semicolonpart :",
+"semicolonpart : ';' ffieldlist",
+"lastcomma :",
+"lastcomma : ','",
+"ffieldlist :",
+"ffieldlist : ffieldlist1 lastcomma",
+"ffieldlist1 : ffield",
+"ffieldlist1 : ffieldlist1 ',' ffield",
+"ffield : NAME '=' expr1",
+"lfieldlist :",
+"lfieldlist : lfieldlist1 lastcomma",
+"lfieldlist1 : expr1",
+"lfieldlist1 : lfieldlist1 ',' expr1",
+"varlist1 : var",
+"varlist1 : varlist1 ',' var",
+"var : singlevar",
+"var : varexp '[' expr1 ']'",
+"var : varexp '.' NAME",
+"singlevar : NAME",
+"varexp : var",
+"localdeclist : NAME",
+"localdeclist : localdeclist ',' NAME",
+"decinit :",
+"decinit : '=' exprlist1",
};
-#endif /* YYDEBUG */
-#line 1 "/usr/lang/SC1.0/yaccpar"
-/* @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10 */
-
-/*
-** Skeleton parser driver for yacc output
-*/
-/*
- @(#)RELEASE SC1.0 C++ 2.1 1Mar1991
-*/
-
-/*
-** yacc user known macros and defines
-*/
-#define YYERROR goto luaY_errlab
-#define YYACCEPT return(0)
-#define YYABORT return(1)
-#define YYBACKUP( newtoken, newvalue )\
-{\
- if ( luaY_char >= 0 || ( luaY_r2[ luaY_tmp ] >> 1 ) != 1 )\
- {\
- luaY_error( "syntax error - cannot backup" );\
- goto luaY_errlab;\
- }\
- luaY_char = newtoken;\
- luaY_state = *luaY_ps;\
- luaY_lval = newvalue;\
- goto luaY_newstate;\
-}
-#define YYRECOVERING() (!!luaY_errflag)
-#define YYCOPY(to, from, type) \
- (type *) memcpy(to, (char *) from, luaY_newmax * sizeof(type))
-#ifndef YYDEBUG
-# define YYDEBUG 1 /* make debugging available */
#endif
-
-
-/*
-** extern declarations for C++ - check your own code for correctness
-** if you have function redefined error messages here.
-*/
-
-#ifdef __cplusplus
-EXTERN_FUNCTION ( extern int printf, (const char*, DOTDOTDOT) );
-EXTERN_FUNCTION ( extern void *memcpy, (void *, const void *, int) );
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH 500
#endif
-
-
-/*
-** user known globals
-*/
-int luaY_debug; /* set to 1 to get debugging */
-
-/*
-** driver internal defines
-*/
-#define YYFLAG (-1000)
-
-/*
-** static variables used by the parser
-*/
-static YYSTYPE luaY__luaY_v[YYMAXDEPTH], *luaY_v = luaY__luaY_v; /* value stack */
-static int luaY__luaY_s[YYMAXDEPTH], *luaY_s = luaY__luaY_s; /* state stack */
-
-static YYSTYPE *luaY_pv; /* top of value stack */
-static int *luaY_ps; /* top of state stack */
-
-static int luaY_state; /* current state */
-static int luaY_tmp; /* extra var (lasts between blocks) */
-
-#if defined(__cplusplus) || defined(__STDC__) || defined(lint)
-static int __yaccpar_lint_hack__ = 0;
- /* if you change the value from 0 to
- something else, make sure you know
- what to do with luaY_errlab reference.
- This is a hack - to make sure C++ and
- lint are happy with the 4.1 yacc code. */
#endif
-
-int luaY_nerrs; /* number of errors */
-
-int luaY_errflag; /* error recovery flag */
-int luaY_char; /* current input token number */
-static unsigned luaY_maxdepth = YYMAXDEPTH;
-
-
-/*
-** luaY_parse - return 0 if worked, 1 if syntax error not recovered from
-*/
+int luaY_debug;
+int luaY_nerrs;
+int luaY_errflag;
+int luaY_char;
+short *luaY_ssp;
+YYSTYPE *luaY_vsp;
+YYSTYPE luaY_val;
+YYSTYPE luaY_lval;
+short luaY_ss[YYSTACKSIZE];
+YYSTYPE luaY_vs[YYSTACKSIZE];
+#define luaY_stacksize YYSTACKSIZE
+#define YYABORT goto luaY_abort
+#define YYREJECT goto luaY_abort
+#define YYACCEPT goto luaY_accept
+#define YYERROR goto luaY_errlab
int
luaY_parse()
{
- register YYSTYPE *luaY_pvt = (YYSTYPE*)0 ; /* top of value stack for
-$vars */
-
- /*
- ** Initialize externals - luaY_parse may be called more than once
- */
- luaY_pv = &luaY_v[-1];
- luaY_ps = &luaY_s[-1];
- luaY_state = 0;
- luaY_tmp = 0;
- luaY_nerrs = 0;
- luaY_errflag = 0;
- luaY_char = -1;
-
-#if defined(__cplusplus) || defined(__STDC__) || defined(lint)
-/*
- Note that the following can never be executed but simply to please
- lint and C++
- */
- switch (__yaccpar_lint_hack__)
- {
- case 1: goto luaY_errlab;
- case 2: goto luaY_newstate;
- }
-#endif
-
- {
- register YYSTYPE *luaY__pv; /* top of value stack */
- register int *luaY__ps; /* top of state stack */
- register int luaY__state; /* current state */
- register int luaY__n; /* internal state number info */
-
- goto luaY_stack;
-
- /*
- ** get globals into registers.
- ** branch to here only if YYBACKUP was called.
- */
- luaY_newstate:
- luaY__pv = luaY_pv;
- luaY__ps = luaY_ps;
- luaY__state = luaY_state;
- goto luaY__newstate;
-
- /*
- ** get globals into registers.
- ** either we just started, or we just finished a reduction
- */
- luaY_stack:
- luaY__pv = luaY_pv;
- luaY__ps = luaY_ps;
- luaY__state = luaY_state;
-
- /*
- ** top of for (;;) loop while no reductions done
- */
- luaY__stack:
- /*
- ** put a state and value onto the stacks
- */
+ register int luaY_m, luaY_n, luaY_state;
#if YYDEBUG
- /*
- ** if debugging, look up token value in list of value vs.
- ** name pairs. 0 and negative (-1) are special values.
- ** Note: linear search is used since time is not a real
- ** consideration while debugging.
- */
- if ( luaY_debug )
- {
- register int luaY__i;
+ register char *luaY_s;
+ extern char *getenv();
- (void)printf( "State %d, token ", luaY__state );
- if ( luaY_char == 0 )
- (void)printf( "end-of-file\n" );
- else if ( luaY_char < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( luaY__i = 0; luaY_toks[luaY__i].t_val >= 0;
- luaY__i++ )
- {
- if ( luaY_toks[luaY__i].t_val == luaY_char )
- break;
- }
- (void)printf( "%s\n", luaY_toks[luaY__i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( ++luaY__ps >= &luaY_s[ luaY_maxdepth ] ) /* room on stack? */
- {
- /*
- ** reallocate and recover. Note that pointers
- ** have to be reset, or bad things will happen
- */
- int luaY_ps_index = (luaY__ps - luaY_s);
- int luaY_pv_index = (luaY__pv - luaY_v);
- int luaY_pvt_index = (luaY_pvt - luaY_v);
- int luaY_newmax;
+ if (luaY_s = getenv("YYDEBUG"))
+ {
+ luaY_n = *luaY_s;
+ if (luaY_n >= '0' && luaY_n <= '9')
+ luaY_debug = luaY_n - '0';
+ }
+#endif
- luaY_newmax = luaY_maxdepth + YYMAXDEPTH;
- if (luaY_maxdepth == YYMAXDEPTH) /* first time growth */
- {
- YYSTYPE *newluaY_v = (YYSTYPE*)malloc(luaY_newmax*sizeof(YYSTYPE));
- int *newluaY_s = (int*)malloc(luaY_newmax*sizeof(int));
- if (newluaY_s != 0 && newluaY_v != 0)
- {
- luaY_s = YYCOPY(newluaY_s, luaY_s, int);
- luaY_v = YYCOPY(newluaY_v, luaY_v, YYSTYPE);
- }
- else
- luaY_newmax = 0; /* failed */
- }
- else /* not first time */
- {
- luaY_v = (YYSTYPE*)realloc((char*)luaY_v,
- luaY_newmax * sizeof(YYSTYPE));
- luaY_s = (int*)realloc((char*)luaY_s,
- luaY_newmax * sizeof(int));
- if (luaY_s == 0 || luaY_v == 0)
- luaY_newmax = 0; /* failed */
- }
- if (luaY_newmax <= luaY_maxdepth) /* tables not expanded */
- {
- luaY_error( "yacc stack overflow" );
- YYABORT;
- }
- luaY_maxdepth = luaY_newmax;
+ luaY_nerrs = 0;
+ luaY_errflag = 0;
+ luaY_char = (-1);
- luaY__ps = luaY_s + luaY_ps_index;
- luaY__pv = luaY_v + luaY_pv_index;
- luaY_pvt = luaY_v + luaY_pvt_index;
- }
- *luaY__ps = luaY__state;
- *++luaY__pv = luaY_val;
+ luaY_ssp = luaY_ss;
+ luaY_vsp = luaY_vs;
+ *luaY_ssp = luaY_state = 0;
- /*
- ** we have a new state - find out what to do
- */
- luaY__newstate:
- if ( ( luaY__n = luaY_pact[ luaY__state ] ) <= YYFLAG )
- goto luaY_default; /* simple state */
+luaY_loop:
+ if (luaY_n = luaY_defred[luaY_state]) goto luaY_reduce;
+ if (luaY_char < 0)
+ {
+ if ((luaY_char = luaY_lex()) < 0) luaY_char = 0;
#if YYDEBUG
- /*
- ** if debugging, need to mark whether new token grabbed
- */
- luaY_tmp = luaY_char < 0;
+ if (luaY_debug)
+ {
+ luaY_s = 0;
+ if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char];
+ if (!luaY_s) luaY_s = "illegal-symbol";
+ printf("%sdebug: state %d, reading %d (%s)\n",
+ YYPREFIX, luaY_state, luaY_char, luaY_s);
+ }
#endif
- if ( ( luaY_char < 0 ) && ( ( luaY_char = luaY_lex() ) < 0 ) )
- luaY_char = 0; /* reached EOF */
-#if YYDEBUG
- if ( luaY_debug && luaY_tmp )
- {
- register int luaY__i;
-
- (void)printf( "Received token " );
- if ( luaY_char == 0 )
- (void)printf( "end-of-file\n" );
- else if ( luaY_char < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( luaY__i = 0; luaY_toks[luaY__i].t_val >= 0;
- luaY__i++ )
- {
- if ( luaY_toks[luaY__i].t_val == luaY_char )
- break;
- }
- (void)printf( "%s\n", luaY_toks[luaY__i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( ( ( luaY__n += luaY_char ) < 0 ) || ( luaY__n >= YYLAST ) )
- goto luaY_default;
- if ( luaY_chk[ luaY__n = luaY_act[ luaY__n ] ] == luaY_char ) /*valid shift*/
- {
- luaY_char = -1;
- luaY_val = luaY_lval;
- luaY__state = luaY__n;
- if ( luaY_errflag > 0 )
- luaY_errflag--;
- goto luaY__stack;
- }
-
- luaY_default:
- if ( ( luaY__n = luaY_def[ luaY__state ] ) == -2 )
- {
+ }
+ if ((luaY_n = luaY_sindex[luaY_state]) && (luaY_n += luaY_char) >= 0 &&
+ luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_char)
+ {
#if YYDEBUG
- luaY_tmp = luaY_char < 0;
+ if (luaY_debug)
+ printf("%sdebug: state %d, shifting to state %d\n",
+ YYPREFIX, luaY_state, luaY_table[luaY_n]);
+#endif
+ if (luaY_ssp >= luaY_ss + luaY_stacksize - 1)
+ {
+ goto luaY_overflow;
+ }
+ *++luaY_ssp = luaY_state = luaY_table[luaY_n];
+ *++luaY_vsp = luaY_lval;
+ luaY_char = (-1);
+ if (luaY_errflag > 0) --luaY_errflag;
+ goto luaY_loop;
+ }
+ if ((luaY_n = luaY_rindex[luaY_state]) && (luaY_n += luaY_char) >= 0 &&
+ luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_char)
+ {
+ luaY_n = luaY_table[luaY_n];
+ goto luaY_reduce;
+ }
+ if (luaY_errflag) goto luaY_inrecovery;
+#ifdef lint
+ goto luaY_newerror;
+#endif
+luaY_newerror:
+ luaY_error("syntax error");
+#ifdef lint
+ goto luaY_errlab;
#endif
- if ( ( luaY_char < 0 ) && ( ( luaY_char = luaY_lex() ) < 0 ) )
- luaY_char = 0; /* reached EOF */
+luaY_errlab:
+ ++luaY_nerrs;
+luaY_inrecovery:
+ if (luaY_errflag < 3)
+ {
+ luaY_errflag = 3;
+ for (;;)
+ {
+ if ((luaY_n = luaY_sindex[*luaY_ssp]) && (luaY_n += YYERRCODE) >= 0 &&
+ luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == YYERRCODE)
+ {
#if YYDEBUG
- if ( luaY_debug && luaY_tmp )
- {
- register int luaY__i;
-
- (void)printf( "Received token " );
- if ( luaY_char == 0 )
- (void)printf( "end-of-file\n" );
- else if ( luaY_char < 0 )
- (void)printf( "-none-\n" );
- else
- {
- for ( luaY__i = 0;
- luaY_toks[luaY__i].t_val >= 0;
- luaY__i++ )
- {
- if ( luaY_toks[luaY__i].t_val
- == luaY_char )
- {
- break;
- }
- }
- (void)printf( "%s\n", luaY_toks[luaY__i].t_name );
- }
- }
-#endif /* YYDEBUG */
- /*
- ** look through exception table
- */
- {
- register int *luaY_xi = luaY_exca;
-
- while ( ( *luaY_xi != -1 ) ||
- ( luaY_xi[1] != luaY__state ) )
- {
- luaY_xi += 2;
- }
- while ( ( *(luaY_xi += 2) >= 0 ) &&
- ( *luaY_xi != luaY_char ) )
- ;
- if ( ( luaY__n = luaY_xi[1] ) < 0 )
- YYACCEPT;
- }
- }
-
- /*
- ** check for syntax error
- */
- if ( luaY__n == 0 ) /* have an error */
- {
- /* no worry about speed here! */
- switch ( luaY_errflag )
- {
- case 0: /* new error */
- luaY_error( "syntax error" );
- goto skip_init;
- luaY_errlab:
- /*
- ** get globals into registers.
- ** we have a user generated syntax type error
- */
- luaY__pv = luaY_pv;
- luaY__ps = luaY_ps;
- luaY__state = luaY_state;
- luaY_nerrs++;
- skip_init:
- case 1:
- case 2: /* incompletely recovered error */
- /* try again... */
- luaY_errflag = 3;
- /*
- ** find state where "error" is a legal
- ** shift action
- */
- while ( luaY__ps >= luaY_s )
- {
- luaY__n = luaY_pact[ *luaY__ps ] + YYERRCODE;
- if ( luaY__n >= 0 && luaY__n < YYLAST &&
- luaY_chk[luaY_act[luaY__n]] == YYERRCODE) {
- /*
- ** simulate shift of "error"
- */
- luaY__state = luaY_act[ luaY__n ];
- goto luaY__stack;
- }
- /*
- ** current state has no shift on
- ** "error", pop stack
- */
+ if (luaY_debug)
+ printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *luaY_ssp, luaY_table[luaY_n]);
+#endif
+ if (luaY_ssp >= luaY_ss + luaY_stacksize - 1)
+ {
+ goto luaY_overflow;
+ }
+ *++luaY_ssp = luaY_state = luaY_table[luaY_n];
+ *++luaY_vsp = luaY_lval;
+ goto luaY_loop;
+ }
+ else
+ {
#if YYDEBUG
-# define _POP_ "Error recovery pops state %d, uncovers state %d\n"
- if ( luaY_debug )
- (void)printf( _POP_, *luaY__ps,
- luaY__ps[-1] );
-# undef _POP_
+ if (luaY_debug)
+ printf("%sdebug: error recovery discarding state %d\n",
+ YYPREFIX, *luaY_ssp);
#endif
- luaY__ps--;
- luaY__pv--;
- }
- /*
- ** there is no state on stack with "error" as
- ** a valid shift. give up.
- */
- YYABORT;
- case 3: /* no shift yet; eat a token */
+ if (luaY_ssp <= luaY_ss) goto luaY_abort;
+ --luaY_ssp;
+ --luaY_vsp;
+ }
+ }
+ }
+ else
+ {
+ if (luaY_char == 0) goto luaY_abort;
#if YYDEBUG
- /*
- ** if debugging, look up token in list of
- ** pairs. 0 and negative shouldn't occur,
- ** but since timing doesn't matter when
- ** debugging, it doesn't hurt to leave the
- ** tests here.
- */
- if ( luaY_debug )
- {
- register int luaY__i;
-
- (void)printf( "Error recovery discards " );
- if ( luaY_char == 0 )
- (void)printf( "token end-of-file\n" );
- else if ( luaY_char < 0 )
- (void)printf( "token -none-\n" );
- else
- {
- for ( luaY__i = 0;
- luaY_toks[luaY__i].t_val >= 0;
- luaY__i++ )
- {
- if ( luaY_toks[luaY__i].t_val
- == luaY_char )
- {
- break;
- }
- }
- (void)printf( "token %s\n",
- luaY_toks[luaY__i].t_name );
- }
- }
-#endif /* YYDEBUG */
- if ( luaY_char == 0 ) /* reached EOF. quit */
- YYABORT;
- luaY_char = -1;
- goto luaY__newstate;
- }
- }/* end if ( luaY__n == 0 ) */
- /*
- ** reduction by production luaY__n
- ** put stack tops, etc. so things right after switch
- */
+ if (luaY_debug)
+ {
+ luaY_s = 0;
+ if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char];
+ if (!luaY_s) luaY_s = "illegal-symbol";
+ printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
+ YYPREFIX, luaY_state, luaY_char, luaY_s);
+ }
+#endif
+ luaY_char = (-1);
+ goto luaY_loop;
+ }
+luaY_reduce:
#if YYDEBUG
- /*
- ** if debugging, print the string that is the user's
- ** specification of the reduction which is just about
- ** to be done.
- */
- if ( luaY_debug )
- (void)printf( "Reduce by (%d) \"%s\"\n",
- luaY__n, luaY_reds[ luaY__n ] );
+ if (luaY_debug)
+ printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+ YYPREFIX, luaY_state, luaY_n, luaY_rule[luaY_n]);
#endif
- luaY_tmp = luaY__n; /* value to switch over */
- luaY_pvt = luaY__pv; /* $vars top of value stack */
- /*
- ** Look in goto table for next state
- ** Sorry about using luaY__state here as temporary
- ** register variable, but why not, if it works...
- ** If luaY_r2[ luaY__n ] doesn't have the low order bit
- ** set, then there is no action to be done for
- ** this reduction. So, no saving & unsaving of
- ** registers done. The only difference between the
- ** code just after the if and the body of the if is
- ** the goto luaY__stack in the body. This way the test
- ** can be made before the choice of what to do is needed.
- */
- {
- /* length of production doubled with extra bit */
- register int luaY__len = luaY_r2[ luaY__n ];
-
- if ( !( luaY__len & 01 ) )
- {
- luaY__len >>= 1;
- luaY_val = ( luaY__pv -= luaY__len )[1]; /* $$ = $1 */
- luaY__state = luaY_pgo[ luaY__n = luaY_r1[ luaY__n ] ] +
- *( luaY__ps -= luaY__len ) + 1;
- if ( luaY__state >= YYLAST ||
- luaY_chk[ luaY__state =
- luaY_act[ luaY__state ] ] != -luaY__n )
- {
- luaY__state = luaY_act[ luaY_pgo[ luaY__n ] ];
- }
- goto luaY__stack;
- }
- luaY__len >>= 1;
- luaY_val = ( luaY__pv -= luaY__len )[1]; /* $$ = $1 */
- luaY__state = luaY_pgo[ luaY__n = luaY_r1[ luaY__n ] ] +
- *( luaY__ps -= luaY__len ) + 1;
- if ( luaY__state >= YYLAST ||
- luaY_chk[ luaY__state = luaY_act[ luaY__state ] ] != -luaY__n )
- {
- luaY__state = luaY_act[ luaY_pgo[ luaY__n ] ];
- }
- }
- /* save until reenter driver code */
- luaY_state = luaY__state;
- luaY_ps = luaY__ps;
- luaY_pv = luaY__pv;
- }
- /*
- ** code supplied by user is placed in this switch
- */
- switch( luaY_tmp )
- {
-
-case 6:
-# line 469 "lua.stx"
+ luaY_m = luaY_len[luaY_n];
+ luaY_val = luaY_vsp[1-luaY_m];
+ switch (luaY_n)
+ {
+case 5:
+#line 470 "lua.stx"
{
code_byte(PUSHFUNCTION);
- code_code(luaY_pvt[-0].pFunc);
- storesinglevar(luaY_pvt[-1].vLong);
- } break;
+ code_code(luaY_vsp[0].pFunc);
+ storesinglevar(luaY_vsp[-1].vLong);
+ }
+break;
+case 6:
+#line 477 "lua.stx"
+{ luaY_val.vLong =luaY_vsp[0].vLong; init_func(); }
+break;
case 7:
-# line 476 "lua.stx"
-{ luaY_val.vLong =luaY_pvt[-0].vLong; init_func(); } break;
-case 8:
-# line 478 "lua.stx"
+#line 479 "lua.stx"
{
code_byte(PUSHSTRING);
- code_word(luaI_findconstant(luaY_pvt[-0].pTStr));
+ code_word(luaI_findconstant(luaY_vsp[0].pTStr));
luaY_val.vLong = 0; /* indexed variable */
init_func();
add_localvar(luaI_createfixedstring("self"));
- } break;
-case 9:
-# line 488 "lua.stx"
+ }
+break;
+case 8:
+#line 489 "lua.stx"
{
codereturn();
luaY_val.pFunc = new(TFunc);
@@ -1331,7 +1169,7 @@ case 9:
luaY_val.pFunc->size = pc;
luaY_val.pFunc->code = newvector(pc, Byte);
luaY_val.pFunc->fileName = lua_parsedfile;
- luaY_val.pFunc->lineDefined = luaY_pvt[-3].vInt;
+ luaY_val.pFunc->lineDefined = luaY_vsp[-3].vInt;
memcpy(luaY_val.pFunc->code, basepc, pc*sizeof(Byte));
if (lua_debug)
luaI_closelocalvars(luaY_val.pFunc);
@@ -1341,347 +1179,490 @@ case 9:
PrintCode(funcCode,funcCode+pc);
#endif
change2main(); /* change back to main code */
- } break;
+ }
+break;
+case 13:
+#line 516 "lua.stx"
+{ codeIf(luaY_vsp[-4].vLong, luaY_vsp[-2].vLong); }
+break;
case 14:
-# line 515 "lua.stx"
-{ codeIf(luaY_pvt[-4].vLong, luaY_pvt[-2].vLong); } break;
+#line 518 "lua.stx"
+{luaY_val.vLong=pc;}
+break;
case 15:
-# line 517 "lua.stx"
-{luaY_val.vLong=pc;} break;
-case 16:
-# line 518 "lua.stx"
+#line 519 "lua.stx"
{
- basepc[luaY_pvt[-3].vLong] = IFFJMP;
- code_word_at(basepc+luaY_pvt[-3].vLong+1, pc - (luaY_pvt[-3].vLong + sizeof(Word)+1));
- basepc[luaY_pvt[-1].vLong] = UPJMP;
- code_word_at(basepc+luaY_pvt[-1].vLong+1, pc - (luaY_pvt[-6].vLong));
- } break;
+ basepc[luaY_vsp[-3].vLong] = IFFJMP;
+ code_word_at(basepc+luaY_vsp[-3].vLong+1, pc - (luaY_vsp[-3].vLong + sizeof(Word)+1));
+ basepc[luaY_vsp[-1].vLong] = UPJMP;
+ code_word_at(basepc+luaY_vsp[-1].vLong+1, pc - (luaY_vsp[-6].vLong));
+ }
+break;
+case 16:
+#line 526 "lua.stx"
+{luaY_val.vLong=pc;}
+break;
case 17:
-# line 525 "lua.stx"
-{luaY_val.vLong=pc;} break;
-case 18:
-# line 526 "lua.stx"
+#line 527 "lua.stx"
{
- basepc[luaY_pvt[-0].vLong] = IFFUPJMP;
- code_word_at(basepc+luaY_pvt[-0].vLong+1, pc - (luaY_pvt[-4].vLong));
- } break;
-case 19:
-# line 532 "lua.stx"
+ basepc[luaY_vsp[0].vLong] = IFFUPJMP;
+ code_word_at(basepc+luaY_vsp[0].vLong+1, pc - (luaY_vsp[-4].vLong));
+ }
+break;
+case 18:
+#line 533 "lua.stx"
{
{
int i;
- adjust_mult_assign(nvarbuffer, luaY_pvt[-0].vLong, luaY_pvt[-2].vInt * 2 + nvarbuffer);
+ adjust_mult_assign(nvarbuffer, luaY_vsp[0].vLong, luaY_vsp[-2].vInt * 2 + nvarbuffer);
for (i=nvarbuffer-1; i>=0; i--)
lua_codestore (i);
- if (luaY_pvt[-2].vInt > 1 || (luaY_pvt[-2].vInt == 1 && varbuffer[0] != 0))
+ if (luaY_vsp[-2].vInt > 1 || (luaY_vsp[-2].vInt == 1 && varbuffer[0] != 0))
lua_codeadjust (0);
}
- } break;
-case 21:
-# line 544 "lua.stx"
-{ nlocalvar += luaY_pvt[-1].vInt;
- adjust_mult_assign(luaY_pvt[-1].vInt, luaY_pvt[-0].vInt, 0);
- } break;
+ }
+break;
+case 20:
+#line 545 "lua.stx"
+{ nlocalvar += luaY_vsp[-1].vInt;
+ adjust_mult_assign(luaY_vsp[-1].vInt, luaY_vsp[0].vInt, 0);
+ }
+break;
+case 23:
+#line 553 "lua.stx"
+{ codeIf(luaY_vsp[-3].vLong, luaY_vsp[-1].vLong); }
+break;
case 24:
-# line 552 "lua.stx"
-{ codeIf(luaY_pvt[-3].vLong, luaY_pvt[-1].vLong); } break;
+#line 556 "lua.stx"
+{luaY_val.vInt = nlocalvar;}
+break;
case 25:
-# line 555 "lua.stx"
-{luaY_val.vInt = nlocalvar;} break;
-case 26:
-# line 556 "lua.stx"
+#line 557 "lua.stx"
{
- if (nlocalvar != luaY_pvt[-2].vInt)
+ if (nlocalvar != luaY_vsp[-2].vInt)
{
if (lua_debug)
- for (; nlocalvar > luaY_pvt[-2].vInt; nlocalvar--)
+ for (; nlocalvar > luaY_vsp[-2].vInt; nlocalvar--)
luaI_unregisterlocalvar(lua_linenumber);
else
- nlocalvar = luaY_pvt[-2].vInt;
+ nlocalvar = luaY_vsp[-2].vInt;
lua_codeadjust (0);
}
- } break;
-case 28:
-# line 571 "lua.stx"
+ }
+break;
+case 27:
+#line 572 "lua.stx"
{
- adjust_functioncall(luaY_pvt[-1].vLong, MULT_RET);
+ adjust_functioncall(luaY_vsp[-1].vLong, MULT_RET);
codereturn();
- } break;
-case 29:
-# line 578 "lua.stx"
+ }
+break;
+case 28:
+#line 579 "lua.stx"
{
luaY_val.vLong = pc;
code_byte(0); /* open space */
code_word (0);
- } break;
+ }
+break;
+case 29:
+#line 586 "lua.stx"
+{ adjust_functioncall(luaY_vsp[0].vLong, 1); }
+break;
case 30:
-# line 584 "lua.stx"
-{ adjust_functioncall(luaY_pvt[-0].vLong, 1); } break;
+#line 589 "lua.stx"
+{ luaY_val.vLong = luaY_vsp[-1].vLong; }
+break;
case 31:
-# line 587 "lua.stx"
-{ luaY_val.vLong = luaY_pvt[-1].vLong; } break;
+#line 590 "lua.stx"
+{ code_byte(EQOP); luaY_val.vLong = 0; }
+break;
case 32:
-# line 588 "lua.stx"
-{ code_byte(EQOP); luaY_val.vLong = 0; } break;
+#line 591 "lua.stx"
+{ code_byte(LTOP); luaY_val.vLong = 0; }
+break;
case 33:
-# line 589 "lua.stx"
-{ code_byte(LTOP); luaY_val.vLong = 0; } break;
+#line 592 "lua.stx"
+{ code_byte(GTOP); luaY_val.vLong = 0; }
+break;
case 34:
-# line 590 "lua.stx"
-{ code_byte(GTOP); luaY_val.vLong = 0; } break;
+#line 593 "lua.stx"
+{ code_byte(EQOP); code_byte(NOTOP); luaY_val.vLong = 0; }
+break;
case 35:
-# line 591 "lua.stx"
-{ code_byte(EQOP); code_byte(NOTOP); luaY_val.vLong = 0; } break;
+#line 594 "lua.stx"
+{ code_byte(LEOP); luaY_val.vLong = 0; }
+break;
case 36:
-# line 592 "lua.stx"
-{ code_byte(LEOP); luaY_val.vLong = 0; } break;
+#line 595 "lua.stx"
+{ code_byte(GEOP); luaY_val.vLong = 0; }
+break;
case 37:
-# line 593 "lua.stx"
-{ code_byte(GEOP); luaY_val.vLong = 0; } break;
+#line 596 "lua.stx"
+{ code_byte(ADDOP); luaY_val.vLong = 0; }
+break;
case 38:
-# line 594 "lua.stx"
-{ code_byte(ADDOP); luaY_val.vLong = 0; } break;
+#line 597 "lua.stx"
+{ code_byte(SUBOP); luaY_val.vLong = 0; }
+break;
case 39:
-# line 595 "lua.stx"
-{ code_byte(SUBOP); luaY_val.vLong = 0; } break;
+#line 598 "lua.stx"
+{ code_byte(MULTOP); luaY_val.vLong = 0; }
+break;
case 40:
-# line 596 "lua.stx"
-{ code_byte(MULTOP); luaY_val.vLong = 0; } break;
+#line 599 "lua.stx"
+{ code_byte(DIVOP); luaY_val.vLong = 0; }
+break;
case 41:
-# line 597 "lua.stx"
-{ code_byte(DIVOP); luaY_val.vLong = 0; } break;
+#line 600 "lua.stx"
+{ code_byte(POWOP); luaY_val.vLong = 0; }
+break;
case 42:
-# line 598 "lua.stx"
-{ code_byte(POWOP); luaY_val.vLong = 0; } break;
+#line 601 "lua.stx"
+{ code_byte(CONCOP); luaY_val.vLong = 0; }
+break;
case 43:
-# line 599 "lua.stx"
-{ code_byte(CONCOP); luaY_val.vLong = 0; } break;
+#line 602 "lua.stx"
+{ code_byte(MINUSOP); luaY_val.vLong = 0;}
+break;
case 44:
-# line 600 "lua.stx"
-{ code_byte(MINUSOP); luaY_val.vLong = 0;} break;
+#line 603 "lua.stx"
+{ luaY_val.vLong = 0; }
+break;
case 45:
-# line 601 "lua.stx"
-{ luaY_val.vLong = 0; } break;
+#line 604 "lua.stx"
+{ luaY_val.vLong = 0;}
+break;
case 46:
-# line 602 "lua.stx"
-{ luaY_val.vLong = 0;} break;
+#line 605 "lua.stx"
+{ code_number(luaY_vsp[0].vFloat); luaY_val.vLong = 0; }
+break;
case 47:
-# line 603 "lua.stx"
-{ code_number(luaY_pvt[-0].vFloat); luaY_val.vLong = 0; } break;
-case 48:
-# line 605 "lua.stx"
+#line 607 "lua.stx"
{
code_byte(PUSHSTRING);
- code_word(luaY_pvt[-0].vWord);
+ code_word(luaY_vsp[0].vWord);
luaY_val.vLong = 0;
- } break;
+ }
+break;
+case 48:
+#line 612 "lua.stx"
+{code_byte(PUSHNIL); luaY_val.vLong = 0; }
+break;
case 49:
-# line 610 "lua.stx"
-{code_byte(PUSHNIL); luaY_val.vLong = 0; } break;
+#line 613 "lua.stx"
+{ luaY_val.vLong = luaY_vsp[0].vLong; }
+break;
case 50:
-# line 611 "lua.stx"
-{ luaY_val.vLong = luaY_pvt[-0].vLong; } break;
+#line 614 "lua.stx"
+{ code_byte(NOTOP); luaY_val.vLong = 0;}
+break;
case 51:
-# line 612 "lua.stx"
-{ code_byte(NOTOP); luaY_val.vLong = 0;} break;
+#line 615 "lua.stx"
+{code_byte(POP); }
+break;
case 52:
-# line 613 "lua.stx"
-{code_byte(POP); } break;
-case 53:
-# line 614 "lua.stx"
+#line 616 "lua.stx"
{
- basepc[luaY_pvt[-2].vLong] = ONFJMP;
- code_word_at(basepc+luaY_pvt[-2].vLong+1, pc - (luaY_pvt[-2].vLong + sizeof(Word)+1));
+ basepc[luaY_vsp[-2].vLong] = ONFJMP;
+ code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1));
luaY_val.vLong = 0;
- } break;
+ }
+break;
+case 53:
+#line 621 "lua.stx"
+{code_byte(POP); }
+break;
case 54:
-# line 619 "lua.stx"
-{code_byte(POP); } break;
-case 55:
-# line 620 "lua.stx"
+#line 622 "lua.stx"
{
- basepc[luaY_pvt[-2].vLong] = ONTJMP;
- code_word_at(basepc+luaY_pvt[-2].vLong+1, pc - (luaY_pvt[-2].vLong + sizeof(Word)+1));
+ basepc[luaY_vsp[-2].vLong] = ONTJMP;
+ code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1));
luaY_val.vLong = 0;
- } break;
-case 56:
-# line 628 "lua.stx"
+ }
+break;
+case 55:
+#line 630 "lua.stx"
{
code_byte(CREATEARRAY);
luaY_val.vLong = pc; code_word(0);
- } break;
-case 57:
-# line 633 "lua.stx"
+ }
+break;
+case 56:
+#line 635 "lua.stx"
{
- code_word_at(basepc+luaY_pvt[-3].vLong, luaY_pvt[-1].vInt);
- } break;
-case 58:
-# line 639 "lua.stx"
+ code_word_at(basepc+luaY_vsp[-3].vLong, luaY_vsp[-1].vInt);
+ }
+break;
+case 57:
+#line 641 "lua.stx"
{
code_byte(CALLFUNC);
- code_byte(luaY_pvt[-1].vInt+luaY_pvt[-0].vInt);
+ code_byte(luaY_vsp[-1].vInt+luaY_vsp[0].vInt);
luaY_val.vLong = pc;
code_byte(0); /* may be modified by other rules */
- } break;
+ }
+break;
+case 58:
+#line 649 "lua.stx"
+{ luaY_val.vInt = 0; }
+break;
case 59:
-# line 647 "lua.stx"
-{ luaY_val.vInt = 0; } break;
-case 60:
-# line 649 "lua.stx"
+#line 651 "lua.stx"
{
code_byte(PUSHSELF);
- code_word(luaI_findconstant(luaY_pvt[-0].pTStr));
+ code_word(luaI_findconstant(luaY_vsp[0].pTStr));
luaY_val.vInt = 1;
- } break;
+ }
+break;
+case 60:
+#line 659 "lua.stx"
+{ luaY_val.vInt = adjust_functioncall(luaY_vsp[-1].vLong, 1); }
+break;
case 61:
-# line 657 "lua.stx"
-{ luaY_val.vInt = adjust_functioncall(luaY_pvt[-1].vLong, 1); } break;
+#line 660 "lua.stx"
+{ luaY_val.vInt = 1; }
+break;
case 62:
-# line 658 "lua.stx"
-{ luaY_val.vInt = 1; } break;
+#line 663 "lua.stx"
+{ luaY_val.vLong = 0; }
+break;
case 63:
-# line 661 "lua.stx"
-{ luaY_val.vLong = 0; } break;
+#line 664 "lua.stx"
+{ luaY_val.vLong = luaY_vsp[0].vLong; }
+break;
case 64:
-# line 662 "lua.stx"
-{ luaY_val.vLong = luaY_pvt[-0].vLong; } break;
+#line 667 "lua.stx"
+{ if (luaY_vsp[0].vLong != 0) luaY_val.vLong = luaY_vsp[0].vLong; else luaY_val.vLong = -1; }
+break;
case 65:
-# line 665 "lua.stx"
-{ if (luaY_pvt[-0].vLong != 0) luaY_val.vLong = luaY_pvt[-0].vLong; else luaY_val.vLong = -1; } break;
+#line 668 "lua.stx"
+{ luaY_val.vLong = adjust_functioncall(luaY_vsp[-1].vLong, 1); }
+break;
case 66:
-# line 666 "lua.stx"
-{ luaY_val.vLong = adjust_functioncall(luaY_pvt[-1].vLong, 1); } break;
-case 67:
-# line 667 "lua.stx"
+#line 669 "lua.stx"
{
- if (luaY_pvt[-0].vLong == 0) luaY_val.vLong = -(luaY_pvt[-1].vLong + 1); /* -length */
+ if (luaY_vsp[0].vLong == 0) luaY_val.vLong = -(luaY_vsp[-1].vLong + 1); /* -length */
else
{
- adjust_functioncall(luaY_pvt[-0].vLong, luaY_pvt[-1].vLong);
- luaY_val.vLong = luaY_pvt[-0].vLong;
+ adjust_functioncall(luaY_vsp[0].vLong, luaY_vsp[-1].vLong);
+ luaY_val.vLong = luaY_vsp[0].vLong;
}
- } break;
+ }
+break;
+case 67:
+#line 679 "lua.stx"
+{ luaY_val.vInt = close_parlist(0); }
+break;
case 68:
-# line 677 "lua.stx"
-{ lua_codeadjust(0); luaY_val.vInt = lua_linenumber; } break;
+#line 680 "lua.stx"
+{ luaY_val.vInt = close_parlist(luaY_vsp[0].vInt); }
+break;
case 69:
-# line 678 "lua.stx"
-{ lua_codeadjust(0); luaY_val.vInt = lua_linenumber; } break;
+#line 683 "lua.stx"
+{ luaY_val.vInt = luaY_vsp[0].vInt; }
+break;
case 70:
-# line 681 "lua.stx"
-{ add_localvar(luaY_pvt[-0].pTStr); } break;
+#line 685 "lua.stx"
+{
+ if (luaY_vsp[-2].vInt)
+ lua_error("invalid parameter list");
+ luaY_val.vInt = luaY_vsp[0].vInt;
+ }
+break;
case 71:
-# line 682 "lua.stx"
-{ add_localvar(luaY_pvt[-0].pTStr); } break;
+#line 692 "lua.stx"
+{ add_localvar(luaY_vsp[0].pTStr); luaY_val.vInt = 0; }
+break;
case 72:
-# line 686 "lua.stx"
-{ flush_list(luaY_pvt[-0].vInt/FIELDS_PER_FLUSH, luaY_pvt[-0].vInt%FIELDS_PER_FLUSH); } break;
+#line 693 "lua.stx"
+{ luaY_val.vInt = 1; }
+break;
case 73:
-# line 688 "lua.stx"
-{ luaY_val.vInt = luaY_pvt[-2].vInt+luaY_pvt[-0].vInt; } break;
+#line 697 "lua.stx"
+{ flush_list(luaY_vsp[0].vInt/FIELDS_PER_FLUSH, luaY_vsp[0].vInt%FIELDS_PER_FLUSH); }
+break;
case 74:
-# line 690 "lua.stx"
-{ luaY_val.vInt = luaY_pvt[-1].vInt; flush_record(luaY_pvt[-1].vInt%FIELDS_PER_FLUSH); } break;
+#line 699 "lua.stx"
+{ luaY_val.vInt = luaY_vsp[-2].vInt+luaY_vsp[0].vInt; }
+break;
case 75:
-# line 694 "lua.stx"
-{ luaY_val.vInt = 0; } break;
+#line 701 "lua.stx"
+{ luaY_val.vInt = luaY_vsp[-1].vInt; flush_record(luaY_vsp[-1].vInt%FIELDS_PER_FLUSH); }
+break;
case 76:
-# line 696 "lua.stx"
-{ luaY_val.vInt = luaY_pvt[-0].vInt; flush_record(luaY_pvt[-0].vInt%FIELDS_PER_FLUSH); } break;
-case 79:
-# line 703 "lua.stx"
-{ luaY_val.vInt = 0; } break;
+#line 705 "lua.stx"
+{ luaY_val.vInt = 0; }
+break;
+case 77:
+#line 707 "lua.stx"
+{ luaY_val.vInt = luaY_vsp[0].vInt; flush_record(luaY_vsp[0].vInt%FIELDS_PER_FLUSH); }
+break;
case 80:
-# line 704 "lua.stx"
-{ luaY_val.vInt = luaY_pvt[-1].vInt; } break;
+#line 714 "lua.stx"
+{ luaY_val.vInt = 0; }
+break;
case 81:
-# line 707 "lua.stx"
-{luaY_val.vInt=1;} break;
+#line 715 "lua.stx"
+{ luaY_val.vInt = luaY_vsp[-1].vInt; }
+break;
case 82:
-# line 709 "lua.stx"
+#line 718 "lua.stx"
+{luaY_val.vInt=1;}
+break;
+case 83:
+#line 720 "lua.stx"
{
- luaY_val.vInt=luaY_pvt[-2].vInt+1;
+ luaY_val.vInt=luaY_vsp[-2].vInt+1;
if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) flush_record(FIELDS_PER_FLUSH);
- } break;
-case 83:
-# line 716 "lua.stx"
-{
- push_field(luaI_findconstant(luaY_pvt[-2].pTStr));
- } break;
+ }
+break;
case 84:
-# line 721 "lua.stx"
-{ luaY_val.vInt = 0; } break;
+#line 727 "lua.stx"
+{
+ push_field(luaI_findconstant(luaY_vsp[-2].pTStr));
+ }
+break;
case 85:
-# line 722 "lua.stx"
-{ luaY_val.vInt = luaY_pvt[-1].vInt; } break;
+#line 732 "lua.stx"
+{ luaY_val.vInt = 0; }
+break;
case 86:
-# line 725 "lua.stx"
-{luaY_val.vInt=1;} break;
+#line 733 "lua.stx"
+{ luaY_val.vInt = luaY_vsp[-1].vInt; }
+break;
case 87:
-# line 727 "lua.stx"
+#line 736 "lua.stx"
+{luaY_val.vInt=1;}
+break;
+case 88:
+#line 738 "lua.stx"
{
- luaY_val.vInt=luaY_pvt[-2].vInt+1;
+ luaY_val.vInt=luaY_vsp[-2].vInt+1;
if (luaY_val.vInt%FIELDS_PER_FLUSH == 0)
flush_list(luaY_val.vInt/FIELDS_PER_FLUSH - 1, FIELDS_PER_FLUSH);
- } break;
-case 88:
-# line 735 "lua.stx"
+ }
+break;
+case 89:
+#line 746 "lua.stx"
{
nvarbuffer = 0;
- add_varbuffer(luaY_pvt[-0].vLong);
- luaY_val.vInt = (luaY_pvt[-0].vLong == 0) ? 1 : 0;
- } break;
-case 89:
-# line 741 "lua.stx"
-{
- add_varbuffer(luaY_pvt[-0].vLong);
- luaY_val.vInt = (luaY_pvt[-0].vLong == 0) ? luaY_pvt[-2].vInt + 1 : luaY_pvt[-2].vInt;
- } break;
+ add_varbuffer(luaY_vsp[0].vLong);
+ luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? 1 : 0;
+ }
+break;
case 90:
-# line 747 "lua.stx"
-{ luaY_val.vLong = luaY_pvt[-0].vLong; } break;
+#line 752 "lua.stx"
+{
+ add_varbuffer(luaY_vsp[0].vLong);
+ luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? luaY_vsp[-2].vInt + 1 : luaY_vsp[-2].vInt;
+ }
+break;
case 91:
-# line 749 "lua.stx"
+#line 758 "lua.stx"
+{ luaY_val.vLong = luaY_vsp[0].vLong; }
+break;
+case 92:
+#line 760 "lua.stx"
{
luaY_val.vLong = 0; /* indexed variable */
- } break;
-case 92:
-# line 753 "lua.stx"
+ }
+break;
+case 93:
+#line 764 "lua.stx"
{
code_byte(PUSHSTRING);
- code_word(luaI_findconstant(luaY_pvt[-0].pTStr));
+ code_word(luaI_findconstant(luaY_vsp[0].pTStr));
luaY_val.vLong = 0; /* indexed variable */
- } break;
-case 93:
-# line 761 "lua.stx"
+ }
+break;
+case 94:
+#line 772 "lua.stx"
{
- int local = lua_localname(luaY_pvt[-0].pTStr);
+ int local = lua_localname(luaY_vsp[0].pTStr);
if (local == -1) /* global var */
- luaY_val.vLong = luaI_findsymbol(luaY_pvt[-0].pTStr)+1; /* return positive value */
+ luaY_val.vLong = luaI_findsymbol(luaY_vsp[0].pTStr)+1; /* return positive value */
else
luaY_val.vLong = -(local+1); /* return negative value */
- } break;
-case 94:
-# line 770 "lua.stx"
-{ lua_pushvar(luaY_pvt[-0].vLong); } break;
+ }
+break;
case 95:
-# line 773 "lua.stx"
-{store_localvar(luaY_pvt[-0].pTStr, 0); luaY_val.vInt = 1;} break;
+#line 781 "lua.stx"
+{ lua_pushvar(luaY_vsp[0].vLong); }
+break;
case 96:
-# line 775 "lua.stx"
-{
- store_localvar(luaY_pvt[-0].pTStr, luaY_pvt[-2].vInt);
- luaY_val.vInt = luaY_pvt[-2].vInt+1;
- } break;
+#line 784 "lua.stx"
+{store_localvar(luaY_vsp[0].pTStr, 0); luaY_val.vInt = 1;}
+break;
case 97:
-# line 781 "lua.stx"
-{ luaY_val.vInt = 0; } break;
+#line 786 "lua.stx"
+{
+ store_localvar(luaY_vsp[0].pTStr, luaY_vsp[-2].vInt);
+ luaY_val.vInt = luaY_vsp[-2].vInt+1;
+ }
+break;
case 98:
-# line 782 "lua.stx"
-{ luaY_val.vInt = luaY_pvt[-0].vLong; } break;
+#line 792 "lua.stx"
+{ luaY_val.vInt = 0; }
+break;
case 99:
-# line 785 "lua.stx"
-{ lua_debug = luaY_pvt[-0].vInt; } break;
- }
- goto luaY_stack; /* reset registers in driver code */
+#line 793 "lua.stx"
+{ luaY_val.vInt = luaY_vsp[0].vLong; }
+break;
+#line 1613 "y.tab.c"
+ }
+ luaY_ssp -= luaY_m;
+ luaY_state = *luaY_ssp;
+ luaY_vsp -= luaY_m;
+ luaY_m = luaY_lhs[luaY_n];
+ if (luaY_state == 0 && luaY_m == 0)
+ {
+#if YYDEBUG
+ if (luaY_debug)
+ printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+ luaY_state = YYFINAL;
+ *++luaY_ssp = YYFINAL;
+ *++luaY_vsp = luaY_val;
+ if (luaY_char < 0)
+ {
+ if ((luaY_char = luaY_lex()) < 0) luaY_char = 0;
+#if YYDEBUG
+ if (luaY_debug)
+ {
+ luaY_s = 0;
+ if (luaY_char <= YYMAXTOKEN) luaY_s = luaY_name[luaY_char];
+ if (!luaY_s) luaY_s = "illegal-symbol";
+ printf("%sdebug: state %d, reading %d (%s)\n",
+ YYPREFIX, YYFINAL, luaY_char, luaY_s);
+ }
+#endif
+ }
+ if (luaY_char == 0) goto luaY_accept;
+ goto luaY_loop;
+ }
+ if ((luaY_n = luaY_gindex[luaY_m]) && (luaY_n += luaY_state) >= 0 &&
+ luaY_n <= YYTABLESIZE && luaY_check[luaY_n] == luaY_state)
+ luaY_state = luaY_table[luaY_n];
+ else
+ luaY_state = luaY_dgoto[luaY_m];
+#if YYDEBUG
+ if (luaY_debug)
+ printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *luaY_ssp, luaY_state);
+#endif
+ if (luaY_ssp >= luaY_ss + luaY_stacksize - 1)
+ {
+ goto luaY_overflow;
+ }
+ *++luaY_ssp = luaY_state;
+ *++luaY_vsp = luaY_val;
+ goto luaY_loop;
+luaY_overflow:
+ luaY_error("yacc stack overflow");
+luaY_abort:
+ return (1);
+luaY_accept:
+ return (0);
}
diff --git a/src/parser.h b/src/parser.h
index d681cd66..7087ef91 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -1,5 +1,31 @@
-
-typedef union
+#define WRONGTOKEN 257
+#define NIL 258
+#define IF 259
+#define THEN 260
+#define ELSE 261
+#define ELSEIF 262
+#define WHILE 263
+#define DO 264
+#define REPEAT 265
+#define UNTIL 266
+#define END 267
+#define RETURN 268
+#define LOCAL 269
+#define FUNCTION 270
+#define DOTS 271
+#define NUMBER 272
+#define STRING 273
+#define NAME 274
+#define AND 275
+#define OR 276
+#define EQ 277
+#define NE 278
+#define LE 279
+#define GE 280
+#define CONC 281
+#define UNARY 282
+#define NOT 283
+typedef union
{
int vInt;
float vFloat;
@@ -10,30 +36,3 @@ typedef union
TaggedString *pTStr;
} YYSTYPE;
extern YYSTYPE luaY_lval;
-# define WRONGTOKEN 257
-# define NIL 258
-# define IF 259
-# define THEN 260
-# define ELSE 261
-# define ELSEIF 262
-# define WHILE 263
-# define DO 264
-# define REPEAT 265
-# define UNTIL 266
-# define END 267
-# define RETURN 268
-# define LOCAL 269
-# define FUNCTION 270
-# define NUMBER 271
-# define STRING 272
-# define NAME 273
-# define DEBUG 274
-# define AND 275
-# define OR 276
-# define EQ 277
-# define NE 278
-# define LE 279
-# define GE 280
-# define CONC 281
-# define UNARY 282
-# define NOT 283
diff --git a/src/table.c b/src/table.c
index 1d694c4e..b2e60a35 100644
--- a/src/table.c
+++ b/src/table.c
@@ -3,7 +3,7 @@
** Module to control static tables
*/
-char *rcs_table="$Id: table.c,v 2.54 1996/05/06 14:29:35 roberto Exp $";
+char *rcs_table="$Id: table.c,v 2.58 1996/11/01 12:47:45 roberto Exp $";
#include "mem.h"
#include "opcode.h"
@@ -39,6 +39,7 @@ static struct {
lua_CFunction func;
} int_funcs[] = {
{"assert", luaI_assert},
+ {"call", luaI_call},
{"dofile", lua_internaldofile},
{"dostring", lua_internaldostring},
{"error", luaI_error},
@@ -59,13 +60,16 @@ static struct {
void luaI_initsymbol (void)
{
int i;
+ Word n;
lua_maxsymbol = BUFFER_BLOCK;
lua_table = newvector(lua_maxsymbol, Symbol);
for (i=0; i<INTFUNCSIZE; i++)
{
- Word n = luaI_findsymbolbyname(int_funcs[i].name);
+ n = luaI_findsymbolbyname(int_funcs[i].name);
s_tag(n) = LUA_T_CFUNCTION; s_fvalue(n) = int_funcs[i].func;
}
+ n = luaI_findsymbolbyname("_VERSION_");
+ s_tag(n) = LUA_T_STRING; s_tsvalue(n) = lua_createstring(LUA_VERSION);
}
@@ -213,7 +217,7 @@ void lua_pack (void)
unsigned long recovered = 0;
if (nentity++ < block) return;
recovered = luaI_collectgarbage();
- block = block*2*(1.0 - (float)recovered/nentity);
+ block = 2*(block-recovered);
nentity -= recovered;
}
@@ -239,12 +243,7 @@ static void lua_nextvar (void)
else
next = luaI_findsymbolbyname(lua_getstring(o)) + 1;
while (next < lua_ntable && s_tag(next) == LUA_T_NIL) next++;
- if (next >= lua_ntable)
- {
- lua_pushnil();
- lua_pushnil();
- }
- else
+ if (next < lua_ntable)
{
lua_pushstring(lua_table[next].varname->str);
luaI_pushobject(&s_object(next));
diff --git a/src/undump.c b/src/undump.c
index 744622fc..2e6ee07f 100644
--- a/src/undump.c
+++ b/src/undump.c
@@ -3,7 +3,7 @@
** load bytecodes from files
*/
-char* rcs_undump="$Id: undump.c,v 1.14 1996/03/14 17:31:15 lhf Exp $";
+char* rcs_undump="$Id: undump.c,v 1.21 1996/11/18 11:18:29 lhf Exp $";
#include <stdio.h>
#include <string.h>
@@ -90,7 +90,7 @@ static void FixCode(Byte* code, Byte* end) /* swap words */
p+=3;
break;
case PUSHFUNCTION:
- p+=5;
+ p+=5; /* TODO: use sizeof(TFunc*) or old? */
break;
case PUSHWORD:
case PUSHSELF:
@@ -111,7 +111,7 @@ static void FixCode(Byte* code, Byte* end) /* swap words */
p+=3;
break;
}
- case PUSHFLOAT:
+ case PUSHFLOAT: /* assumes sizeof(float)==4 */
{
Byte t;
t=p[1]; p[1]=p[4]; p[4]=t;
@@ -142,13 +142,11 @@ static void Unthread(Byte* code, int i, int v)
{
while (i!=0)
{
- CodeWord c;
+ Word w;
Byte* p=code+i;
- get_word(c,p);
- i=c.w;
- c.w=v;
- p[-2]=c.m.c1;
- p[-1]=c.m.c2;
+ memcpy(&w,p,sizeof(w));
+ i=w; w=v;
+ memcpy(p,&w,sizeof(w));
}
}
@@ -174,9 +172,9 @@ static int LoadSize(FILE* D)
return s;
}
-static char* LoadBlock(int size, FILE* D)
+static void* LoadBlock(int size, FILE* D)
{
- char* b=luaI_malloc(size);
+ void* b=luaI_malloc(size);
fread(b,size,1,D);
return b;
}
@@ -208,13 +206,9 @@ static void LoadFunction(FILE* D)
}
else /* fix PUSHFUNCTION */
{
- CodeCode c;
- Byte* p;
tf->marked=LoadWord(D);
tf->fileName=Main->fileName;
- p=Main->code+tf->marked;
- c.tf=tf;
- *p++=c.m.c1; *p++=c.m.c2; *p++=c.m.c3; *p++=c.m.c4;
+ memcpy(Main->code+tf->marked,&tf,sizeof(tf));
lastF=lastF->next=tf;
}
tf->code=LoadBlock(tf->size,D);
@@ -256,8 +250,21 @@ static void LoadHeader(FILE* D) /* TODO: error handling */
{
Word w,tw=TEST_WORD;
float f,tf=TEST_FLOAT;
+ int version;
LoadSignature(D);
- getc(D); /* skip version */
+ version=getc(D);
+ if (version>0x23) /* after 2.5 */
+ {
+ int oldsizeofW=getc(D);
+ int oldsizeofF=getc(D);
+ int oldsizeofP=getc(D);
+ if (oldsizeofW!=2)
+ lua_error("cannot load binary file created on machine with sizeof(Word)!=2");
+ if (oldsizeofF!=4)
+ lua_error("cannot load binary file created on machine with sizeof(float)!=4. not an IEEE machine?");
+ if (oldsizeofP!=sizeof(TFunc*)) /* TODO: pack */
+ lua_error("cannot load binary file: different pointer sizes");
+ }
fread(&w,sizeof(w),1,D); /* test word */
if (w!=tw)
{
diff --git a/src/undump.h b/src/undump.h
index 109634ae..8d757e36 100644
--- a/src/undump.h
+++ b/src/undump.h
@@ -1,7 +1,7 @@
/*
** undump.h
** definitions for lua decompiler
-** $Id: undump.h,v 1.2 1996/03/11 21:59:41 lhf Exp $
+** $Id: undump.h,v 1.3 1996/11/14 11:44:34 lhf Exp $
*/
#include "func.h"
@@ -15,7 +15,7 @@
#define ID_VAR 'V'
#define ID_STR 'S'
#define SIGNATURE "Lua"
-#define VERSION 0x23 /* 2.3 */
+#define VERSION 0x25 /* 2.5 */
#define TEST_WORD 0x1234 /* a word for testing byte ordering */
#define TEST_FLOAT 0.123456789e-23 /* a float for testing representation */