summaryrefslogtreecommitdiff
path: root/tolua
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2014-10-09 08:59:02 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2014-10-09 08:59:02 +0200
commit7d8b1ff684b412da292e0fc734748975188a0f10 (patch)
tree2673e3da51cc80bfc38a426048b30a4d71c31d4c /tolua
parent62c5bb90525baf0d82c23892c2666f611750d63c (diff)
downloadcrawler-7d8b1ff684b412da292e0fc734748975188a0f10.tar.gz
crawler-7d8b1ff684b412da292e0fc734748975188a0f10.tar.bz2
first trials with a Google normalizer called from Lua, std::string is the problem currently
and the missing wrapper for the URL class also added a local 'tolua', we will have to hack it
Diffstat (limited to 'tolua')
-rw-r--r--tolua/._Makefilebin0 -> 233 bytes
-rwxr-xr-xtolua/._libbin0 -> 233 bytes
-rw-r--r--tolua/INSTALL31
-rw-r--r--tolua/MANIFEST107
-rw-r--r--tolua/Makefile17
-rw-r--r--tolua/README28
-rw-r--r--tolua/bin/.DS_Storebin0 -> 6148 bytes
-rw-r--r--tolua/bin/._.DS_Storebin0 -> 82 bytes
-rw-r--r--tolua/config36
-rw-r--r--tolua/include/.DS_Storebin0 -> 6148 bytes
-rw-r--r--tolua/include/._.DS_Storebin0 -> 82 bytes
-rwxr-xr-xtolua/include/tolua.h129
-rw-r--r--tolua/src/.DS_Storebin0 -> 12292 bytes
-rw-r--r--tolua/src/._.DS_Storebin0 -> 82 bytes
-rw-r--r--tolua/src/bin/.DS_Storebin0 -> 6148 bytes
-rw-r--r--tolua/src/bin/._.DS_Storebin0 -> 82 bytes
-rw-r--r--tolua/src/bin/._tolua.cbin0 -> 225 bytes
-rw-r--r--tolua/src/bin/Makefile36
-rw-r--r--tolua/src/bin/lua/._basic.luabin0 -> 225 bytes
-rw-r--r--tolua/src/bin/lua/._clean.luabin0 -> 225 bytes
-rw-r--r--tolua/src/bin/lua/._compat.luabin0 -> 225 bytes
-rw-r--r--tolua/src/bin/lua/CVS/Entries22
-rw-r--r--tolua/src/bin/lua/CVS/Repository1
-rw-r--r--tolua/src/bin/lua/CVS/Root1
-rw-r--r--tolua/src/bin/lua/all.lua26
-rw-r--r--tolua/src/bin/lua/array.lua208
-rw-r--r--tolua/src/bin/lua/basic.lua212
-rw-r--r--tolua/src/bin/lua/class.lua120
-rw-r--r--tolua/src/bin/lua/clean.lua75
-rw-r--r--tolua/src/bin/lua/code.lua73
-rw-r--r--tolua/src/bin/lua/compat.lua201
-rw-r--r--tolua/src/bin/lua/container.lua536
-rw-r--r--tolua/src/bin/lua/declaration.lua482
-rw-r--r--tolua/src/bin/lua/define.lua58
-rw-r--r--tolua/src/bin/lua/doit.lua63
-rw-r--r--tolua/src/bin/lua/enumerate.lua83
-rw-r--r--tolua/src/bin/lua/feature.lua101
-rw-r--r--tolua/src/bin/lua/function.lua386
-rw-r--r--tolua/src/bin/lua/module.lua67
-rw-r--r--tolua/src/bin/lua/namespace.lua52
-rw-r--r--tolua/src/bin/lua/operator.lua113
-rw-r--r--tolua/src/bin/lua/package.lua280
-rw-r--r--tolua/src/bin/lua/typedef.lua68
-rw-r--r--tolua/src/bin/lua/variable.lua253
-rw-r--r--tolua/src/bin/lua/verbatim.lua76
-rw-r--r--tolua/src/bin/tolua.c130
-rwxr-xr-xtolua/src/bin/tolua.pkg28
-rw-r--r--tolua/src/bin/toluabind.c4231
-rw-r--r--tolua/src/lib/.DS_Storebin0 -> 6148 bytes
-rw-r--r--tolua/src/lib/._.DS_Storebin0 -> 82 bytes
-rw-r--r--tolua/src/lib/._tolua_event.cbin0 -> 225 bytes
-rw-r--r--tolua/src/lib/._tolua_map.cbin0 -> 225 bytes
-rw-r--r--tolua/src/lib/Makefile27
-rw-r--r--tolua/src/lib/tolua_event.c449
-rw-r--r--tolua/src/lib/tolua_event.h24
-rwxr-xr-xtolua/src/lib/tolua_is.c567
-rw-r--r--tolua/src/lib/tolua_map.c529
-rwxr-xr-xtolua/src/lib/tolua_push.c144
-rwxr-xr-xtolua/src/lib/tolua_to.c125
-rw-r--r--tolua/src/tests/.DS_Storebin0 -> 6148 bytes
-rw-r--r--tolua/src/tests/._.DS_Storebin0 -> 82 bytes
-rw-r--r--tolua/src/tests/._Makefilebin0 -> 233 bytes
-rw-r--r--tolua/src/tests/.tenum.c.swpbin0 -> 12288 bytes
-rw-r--r--tolua/src/tests/Makefile84
-rw-r--r--tolua/src/tests/myassert.lua6
-rw-r--r--tolua/src/tests/t.pkg3
-rw-r--r--tolua/src/tests/tarray.c45
-rw-r--r--tolua/src/tests/tarray.h28
-rw-r--r--tolua/src/tests/tarray.lua39
-rw-r--r--tolua/src/tests/tarray.pkg29
-rwxr-xr-xtolua/src/tests/tclass.cpp33
-rw-r--r--tolua/src/tests/tclass.h67
-rw-r--r--tolua/src/tests/tclass.lua52
-rw-r--r--tolua/src/tests/tclass.pkg50
-rw-r--r--tolua/src/tests/tconstant.cpp22
-rw-r--r--tolua/src/tests/tconstant.h29
-rw-r--r--tolua/src/tests/tconstant.lua13
-rw-r--r--tolua/src/tests/tconstant.pkg34
-rw-r--r--tolua/src/tests/tdirective.lua8
-rw-r--r--tolua/src/tests/tdirective.pkg28
-rw-r--r--tolua/src/tests/tdirectivelua.lua5
-rw-r--r--tolua/src/tests/tdirectivepkg.pkg2
-rw-r--r--tolua/src/tests/tenum.c26
-rw-r--r--tolua/src/tests/tenum.h17
-rw-r--r--tolua/src/tests/tenum.lua9
-rw-r--r--tolua/src/tests/tenum.pkg13
-rw-r--r--tolua/src/tests/tfunction.cpp22
-rw-r--r--tolua/src/tests/tfunction.h210
-rw-r--r--tolua/src/tests/tfunction.lua104
-rw-r--r--tolua/src/tests/tfunction.pkg72
-rwxr-xr-xtolua/src/tests/tinheritance.cpp21
-rw-r--r--tolua/src/tests/tinheritance.h35
-rw-r--r--tolua/src/tests/tinheritance.lua16
-rw-r--r--tolua/src/tests/tinheritance.pkg35
-rw-r--r--tolua/src/tests/tmodule.c24
-rw-r--r--tolua/src/tests/tmodule.h7
-rw-r--r--tolua/src/tests/tmodule.lua19
-rw-r--r--tolua/src/tests/tmodule.pkg16
-rw-r--r--tolua/src/tests/tnamespace.cpp25
-rw-r--r--tolua/src/tests/tnamespace.h11
-rw-r--r--tolua/src/tests/tnamespace.lua16
-rw-r--r--tolua/src/tests/tnamespace.pkg13
-rw-r--r--tolua/src/tests/tvararg.cpp42
-rw-r--r--tolua/src/tests/tvararg.h38
-rw-r--r--tolua/src/tests/tvararg.lua14
-rw-r--r--tolua/src/tests/tvararg.pkg17
-rw-r--r--tolua/src/tests/tvariable.c46
-rw-r--r--tolua/src/tests/tvariable.h44
-rw-r--r--tolua/src/tests/tvariable.lua75
-rw-r--r--tolua/src/tests/tvariable.pkg45
110 files changed, 11804 insertions, 0 deletions
diff --git a/tolua/._Makefile b/tolua/._Makefile
new file mode 100644
index 0000000..7542593
--- /dev/null
+++ b/tolua/._Makefile
Binary files differ
diff --git a/tolua/._lib b/tolua/._lib
new file mode 100755
index 0000000..7542593
--- /dev/null
+++ b/tolua/._lib
Binary files differ
diff --git a/tolua/INSTALL b/tolua/INSTALL
new file mode 100644
index 0000000..f98a68f
--- /dev/null
+++ b/tolua/INSTALL
@@ -0,0 +1,31 @@
+* Installation
+
+ Building tolua on a Unix system should be very easy:
+
+ 1. Edit "config" to suit your platform, if at all necessary.
+ 2. Then, type "make".
+
+ See below for instructions for Windows and Macintosh.
+
+* What you get
+
+ If "make" succeeds, you get:
+ * an executable to generate binding code in ./bin;
+ * the C library to be linked in your application in ./lib;
+ * the include file needed to compile your application in ./include.
+ These are the only directories you need for development, besides Lua.
+
+ There is testing codes in src/tests and, if you are lucky, there is a manual page
+ in html in ./doc. You don't need these directories for development.
+
+* Installation on Windows
+
+ The instructions for building tolua on a Mac or Windows machine depend on
+ the particular compiler you are using.
+ The simplest way is to create a folder with all .c and .h files, and
+ then create a project for the executable and the library, as follows:
+
+ tolua.exe: all *.c *.h in src/bin.
+ tolua.lib: all *.c *.h in src/lib.
+
+ Under directory ./win32, there is a project sample for Visual C++ 6.
diff --git a/tolua/MANIFEST b/tolua/MANIFEST
new file mode 100644
index 0000000..34d782f
--- /dev/null
+++ b/tolua/MANIFEST
@@ -0,0 +1,107 @@
+MANIFEST contents of tolua-5.2.0 distribution on Thu Feb 16 18:59:30 BRST 2012
+tolua-5.2.0
+tolua-5.2.0/INSTALL
+tolua-5.2.0/MANIFEST
+tolua-5.2.0/Makefile
+tolua-5.2.0/README
+tolua-5.2.0/bin
+tolua-5.2.0/bin/.DS_Store
+tolua-5.2.0/config
+tolua-5.2.0/include
+tolua-5.2.0/include/.DS_Store
+tolua-5.2.0/include/tolua.h
+tolua-5.2.0/lib
+tolua-5.2.0/src
+tolua-5.2.0/src/.DS_Store
+tolua-5.2.0/src/bin
+tolua-5.2.0/src/bin/.DS_Store
+tolua-5.2.0/src/bin/Makefile
+tolua-5.2.0/src/bin/lua
+tolua-5.2.0/src/bin/lua/CVS
+tolua-5.2.0/src/bin/lua/CVS/Entries
+tolua-5.2.0/src/bin/lua/CVS/Repository
+tolua-5.2.0/src/bin/lua/CVS/Root
+tolua-5.2.0/src/bin/lua/all.lua
+tolua-5.2.0/src/bin/lua/array.lua
+tolua-5.2.0/src/bin/lua/basic.lua
+tolua-5.2.0/src/bin/lua/class.lua
+tolua-5.2.0/src/bin/lua/clean.lua
+tolua-5.2.0/src/bin/lua/code.lua
+tolua-5.2.0/src/bin/lua/compat.lua
+tolua-5.2.0/src/bin/lua/container.lua
+tolua-5.2.0/src/bin/lua/declaration.lua
+tolua-5.2.0/src/bin/lua/define.lua
+tolua-5.2.0/src/bin/lua/doit.lua
+tolua-5.2.0/src/bin/lua/enumerate.lua
+tolua-5.2.0/src/bin/lua/feature.lua
+tolua-5.2.0/src/bin/lua/function.lua
+tolua-5.2.0/src/bin/lua/module.lua
+tolua-5.2.0/src/bin/lua/namespace.lua
+tolua-5.2.0/src/bin/lua/operator.lua
+tolua-5.2.0/src/bin/lua/package.lua
+tolua-5.2.0/src/bin/lua/typedef.lua
+tolua-5.2.0/src/bin/lua/variable.lua
+tolua-5.2.0/src/bin/lua/verbatim.lua
+tolua-5.2.0/src/bin/tolua.c
+tolua-5.2.0/src/bin/tolua.pkg
+tolua-5.2.0/src/bin/toluabind.c
+tolua-5.2.0/src/lib
+tolua-5.2.0/src/lib/.DS_Store
+tolua-5.2.0/src/lib/Makefile
+tolua-5.2.0/src/lib/tolua_event.c
+tolua-5.2.0/src/lib/tolua_event.h
+tolua-5.2.0/src/lib/tolua_is.c
+tolua-5.2.0/src/lib/tolua_map.c
+tolua-5.2.0/src/lib/tolua_push.c
+tolua-5.2.0/src/lib/tolua_to.c
+tolua-5.2.0/src/tests
+tolua-5.2.0/src/tests/.DS_Store
+tolua-5.2.0/src/tests/.tenum.c.swp
+tolua-5.2.0/src/tests/Makefile
+tolua-5.2.0/src/tests/myassert.lua
+tolua-5.2.0/src/tests/t.pkg
+tolua-5.2.0/src/tests/tarray.c
+tolua-5.2.0/src/tests/tarray.h
+tolua-5.2.0/src/tests/tarray.lua
+tolua-5.2.0/src/tests/tarray.pkg
+tolua-5.2.0/src/tests/tclass.cpp
+tolua-5.2.0/src/tests/tclass.h
+tolua-5.2.0/src/tests/tclass.lua
+tolua-5.2.0/src/tests/tclass.pkg
+tolua-5.2.0/src/tests/tconstant.cpp
+tolua-5.2.0/src/tests/tconstant.h
+tolua-5.2.0/src/tests/tconstant.lua
+tolua-5.2.0/src/tests/tconstant.pkg
+tolua-5.2.0/src/tests/tdirective.lua
+tolua-5.2.0/src/tests/tdirective.pkg
+tolua-5.2.0/src/tests/tdirectivelua.lua
+tolua-5.2.0/src/tests/tdirectivepkg.pkg
+tolua-5.2.0/src/tests/tenum.c
+tolua-5.2.0/src/tests/tenum.h
+tolua-5.2.0/src/tests/tenum.lua
+tolua-5.2.0/src/tests/tenum.pkg
+tolua-5.2.0/src/tests/tfunction.cpp
+tolua-5.2.0/src/tests/tfunction.h
+tolua-5.2.0/src/tests/tfunction.lua
+tolua-5.2.0/src/tests/tfunction.pkg
+tolua-5.2.0/src/tests/tinheritance.cpp
+tolua-5.2.0/src/tests/tinheritance.h
+tolua-5.2.0/src/tests/tinheritance.lua
+tolua-5.2.0/src/tests/tinheritance.pkg
+tolua-5.2.0/src/tests/tmodule.c
+tolua-5.2.0/src/tests/tmodule.h
+tolua-5.2.0/src/tests/tmodule.lua
+tolua-5.2.0/src/tests/tmodule.pkg
+tolua-5.2.0/src/tests/tnamespace.cpp
+tolua-5.2.0/src/tests/tnamespace.h
+tolua-5.2.0/src/tests/tnamespace.lua
+tolua-5.2.0/src/tests/tnamespace.pkg
+tolua-5.2.0/src/tests/tvararg.cpp
+tolua-5.2.0/src/tests/tvararg.h
+tolua-5.2.0/src/tests/tvararg.lua
+tolua-5.2.0/src/tests/tvararg.pkg
+tolua-5.2.0/src/tests/tvariable.c
+tolua-5.2.0/src/tests/tvariable.h
+tolua-5.2.0/src/tests/tvariable.lua
+tolua-5.2.0/src/tests/tvariable.pkg
+END OF MANIFEST
diff --git a/tolua/Makefile b/tolua/Makefile
new file mode 100644
index 0000000..2d5f6af
--- /dev/null
+++ b/tolua/Makefile
@@ -0,0 +1,17 @@
+# makefile for tolua hierarchy
+
+tolua:
+ cd src/lib; make all
+ cd src/bin; make all
+
+tests:
+ cd src/tests; make all
+
+all clean klean:
+ cd src/lib; make $@
+ cd src/bin; make $@
+ cd src/tests; make $@
+
+debug:
+ cd src/bin; make debug
+
diff --git a/tolua/README b/tolua/README
new file mode 100644
index 0000000..fbcac6e
--- /dev/null
+++ b/tolua/README
@@ -0,0 +1,28 @@
+This is tolua-5.2.0
+This is tolua-5.1
+
+* What is tolua?
+ tolua is a tool that greatly simplifies the integration of C/C++ code
+ with Lua. Based on a "cleaned" header file, tolua automatically generates
+ the binding code to access C/C++ features from Lua. Using Lua API and
+ tag method facilities, the current version automatically maps C/C++
+ constants, external variables, functions, namespace, classes, and methods
+ to Lua. It also provides facilities to create Lua modules.
+
+* Availability
+ tolua is freely available; you can redistribute it and/or modify it.
+ The software provided hereunder is on an "as is" basis, and
+ the author has no obligation to provide maintenance, support,
+ updates, enhancements, or modifications.
+
+ tolua can be downloaded from the sites below:
+ http://www.tecgraf.puc-rio.br/~celes/tolua/
+ ftp://ftp.tecgraf.puc-rio.br/pub/users/celes/tolua/tolua.tar.gz
+
+* Installation
+ See INSTALL.
+
+* Contacting the author
+ tolua has been designed and implemented by Waldemar Celes.
+ Send your comments, bug reports and anything else to
+ celes@tecgraf.puc-rio.br.
diff --git a/tolua/bin/.DS_Store b/tolua/bin/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/tolua/bin/.DS_Store
Binary files differ
diff --git a/tolua/bin/._.DS_Store b/tolua/bin/._.DS_Store
new file mode 100644
index 0000000..460d887
--- /dev/null
+++ b/tolua/bin/._.DS_Store
Binary files differ
diff --git a/tolua/config b/tolua/config
new file mode 100644
index 0000000..d69bfaf
--- /dev/null
+++ b/tolua/config
@@ -0,0 +1,36 @@
+# configuration file for making tolua
+
+# == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT ======================
+
+# you need an ANSI C compiler. gcc is a popular one.
+CC= gcc
+CCPP = g++
+WARN= -ansi -Wall -g
+
+# on SGI's, cc is ANSI.
+#CC= cc
+#WARN= -ansi -fullwarn
+
+# if your system doesn't have (or need) ranlib, change "ranlib" to "true".
+# on some systems, "ar s" does it.
+RANLIB= ranlib
+#RANLIB= ar s
+#RANLIB= true
+
+# this should work in all unix systems.
+AR= ar rcu
+
+# set lua path
+LUA=/usr/local
+LUAINC=$(LUA)/include
+LUALIB=$(LUA)/lib
+
+# == END OF USER SETTINGS. DO NOT CHANGE ANYTHING BELOW THIS LINE ============
+
+INC= -I$(TOLUA)/include -I$(LUAINC)
+LIB= -L$(TOLUA)/lib -L$(LUALIB)
+
+#CFLAGS= -O2 $(WARN) $(INC)
+#CPPFLAGS= -O2 $(WARN) $(INC)
+CFLAGS= -g $(WARN) $(INC)
+CPPFLAGS= -g $(WARN) $(INC)
diff --git a/tolua/include/.DS_Store b/tolua/include/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/tolua/include/.DS_Store
Binary files differ
diff --git a/tolua/include/._.DS_Store b/tolua/include/._.DS_Store
new file mode 100644
index 0000000..321346b
--- /dev/null
+++ b/tolua/include/._.DS_Store
Binary files differ
diff --git a/tolua/include/tolua.h b/tolua/include/tolua.h
new file mode 100755
index 0000000..9273de1
--- /dev/null
+++ b/tolua/include/tolua.h
@@ -0,0 +1,129 @@
+/* tolua
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: tolua.h,v 1.12 2011/01/13 13:43:45 fabraham Exp $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+
+#ifndef TOLUA_H
+#define TOLUA_H
+
+#ifndef TOLUA_API
+# ifdef TOLUA5_DLL
+# define TOLUA_API __declspec(dllexport)
+# else
+# define TOLUA_API
+# endif
+#endif
+
+#define TOLUA_VERSION "tolua 5.2.0"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "lua.h"
+#include "lauxlib.h"
+
+struct tolua_Error
+{
+ int index;
+ int array;
+ const char* type;
+};
+typedef struct tolua_Error tolua_Error;
+typedef char tolua_byte;
+typedef unsigned char tolua_ubyte;
+typedef int tolua_index;
+typedef int lua_Object;
+
+#define tolua_own
+
+TOLUA_API const char* tolua_typename (lua_State* L, int lo);
+TOLUA_API void tolua_error (lua_State* L, const char* msg, tolua_Error* err);
+TOLUA_API int tolua_isnoobj (lua_State* L, int lo, tolua_Error* err);
+TOLUA_API int tolua_isvalue (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isboolean (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isnumber (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isstring (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_istable (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertable (lua_State* L, int lo, const char* type, int def, tolua_Error* err);
+TOLUA_API int tolua_isfunction (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isuserdata (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertype (lua_State* L, int lo, const char* type, int def, tolua_Error* err);
+TOLUA_API int tolua_isvaluearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isbooleanarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isnumberarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isstringarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_istablearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isuserdataarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertypearray
+ (lua_State* L, int lo, const char* type, int dim, int def, tolua_Error* err);
+
+TOLUA_API void tolua_open (lua_State* L);
+
+TOLUA_API void* tolua_copy (lua_State* L, void* value, unsigned int size);
+TOLUA_API void* tolua_clone (lua_State* L, void* value, lua_CFunction func);
+
+TOLUA_API void tolua_usertype (lua_State* L, const char* type);
+TOLUA_API void tolua_beginmodule (lua_State* L, const char* name);
+TOLUA_API void tolua_endmodule (lua_State* L);
+TOLUA_API void tolua_module (lua_State* L, const char* name, int hasvar);
+TOLUA_API void tolua_class (lua_State* L, const char* name, const char* base);
+TOLUA_API void tolua_cclass (lua_State* L, const char* lname, const char* name, const char* base, lua_CFunction col);
+TOLUA_API void tolua_function (lua_State* L, const char* name, lua_CFunction func);
+TOLUA_API void tolua_constant (lua_State* L, const char* name, double value);
+TOLUA_API void tolua_variable (lua_State* L, const char* name, lua_CFunction get, lua_CFunction set);
+TOLUA_API void tolua_array (lua_State* L, const char* name, lua_CFunction get, lua_CFunction set);
+
+
+TOLUA_API void tolua_pushvalue (lua_State* L, int lo);
+TOLUA_API void tolua_pushboolean (lua_State* L, int value);
+TOLUA_API void tolua_pushnumber (lua_State* L, double value);
+TOLUA_API void tolua_pushstring (lua_State* L, const char* value);
+TOLUA_API void tolua_pushuserdata (lua_State* L, void* value);
+TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char* type);
+TOLUA_API void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v);
+TOLUA_API void tolua_pushfieldboolean (lua_State* L, int lo, int index, int v);
+TOLUA_API void tolua_pushfieldnumber (lua_State* L, int lo, int index, double v);
+TOLUA_API void tolua_pushfieldstring (lua_State* L, int lo, int index, const char* v);
+TOLUA_API void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v);
+TOLUA_API void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, const char* type);
+TOLUA_API void tolua_release (lua_State* L, void* value);
+
+TOLUA_API double tolua_tonumber (lua_State* L, int narg, double def);
+TOLUA_API const char* tolua_tostring (lua_State* L, int narg, const char* def);
+TOLUA_API void* tolua_touserdata (lua_State* L, int narg, void* def);
+TOLUA_API void* tolua_tousertype (lua_State* L, int narg, void* def);
+TOLUA_API int tolua_tovalue (lua_State* L, int narg, int def);
+TOLUA_API int tolua_toboolean (lua_State* L, int narg, int def);
+TOLUA_API double tolua_tofieldnumber (lua_State* L, int lo, int index, double def);
+TOLUA_API int tolua_tofieldboolean (lua_State* L, int lo, int index, int def);
+TOLUA_API const char* tolua_tofieldstring (lua_State* L, int lo, int index, const char* def);
+TOLUA_API void* tolua_tofielduserdata (lua_State* L, int lo, int index, void* def);
+TOLUA_API void* tolua_tofieldusertype (lua_State* L, int lo, int index, void* def);
+TOLUA_API int tolua_tofieldvalue (lua_State* L, int lo, int index, int def);
+TOLUA_API int tolua_getfieldboolean (lua_State* L, int lo, int index, int def);
+
+TOLUA_API void tolua_newmetatable (lua_State* L, const char* name);
+TOLUA_API void tolua_getmetatable (lua_State* L, const char* name);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/tolua/src/.DS_Store b/tolua/src/.DS_Store
new file mode 100644
index 0000000..4f38733
--- /dev/null
+++ b/tolua/src/.DS_Store
Binary files differ
diff --git a/tolua/src/._.DS_Store b/tolua/src/._.DS_Store
new file mode 100644
index 0000000..321346b
--- /dev/null
+++ b/tolua/src/._.DS_Store
Binary files differ
diff --git a/tolua/src/bin/.DS_Store b/tolua/src/bin/.DS_Store
new file mode 100644
index 0000000..45b2ceb
--- /dev/null
+++ b/tolua/src/bin/.DS_Store
Binary files differ
diff --git a/tolua/src/bin/._.DS_Store b/tolua/src/bin/._.DS_Store
new file mode 100644
index 0000000..321346b
--- /dev/null
+++ b/tolua/src/bin/._.DS_Store
Binary files differ
diff --git a/tolua/src/bin/._tolua.c b/tolua/src/bin/._tolua.c
new file mode 100644
index 0000000..4f881ff
--- /dev/null
+++ b/tolua/src/bin/._tolua.c
Binary files differ
diff --git a/tolua/src/bin/Makefile b/tolua/src/bin/Makefile
new file mode 100644
index 0000000..4731778
--- /dev/null
+++ b/tolua/src/bin/Makefile
@@ -0,0 +1,36 @@
+# makefile for tolua executable
+
+TOLUA=../..
+
+include $(TOLUA)/config
+
+OBJS= \
+ tolua.o \
+ toluabind.o
+
+OBJS_D= \
+ tolua_lua.o
+
+T= $(TOLUA)/bin/tolua
+T_D = $(TOLUA)/bin/tolua_lua
+
+all: $(T)
+
+$(T): $(OBJS)
+ $(CC) -o $@ $(OBJS) $(LIB) -ltolua -llua -lm
+
+toluabind.c: $(T_D)
+ $(T_D) -o toluabind.c tolua.pkg
+
+$(T_D): $(OBJS_D)
+ $(CC) -o $@ $(OBJS_D) $(LIB) -ltolua -llua -lm
+
+tolua_lua.o: tolua.c
+ $(CC) -c -DLUA_SOURCE $(INC) -o $@ $<
+
+clean:
+ rm -f tolua_lua.o $(OBJS) -$(OBJS_D) $(T) $(T_D)
+
+klean:
+ rm -f tolua_lua.o $(OBJS) -$(OBJS_D) $(T_D)
+
diff --git a/tolua/src/bin/lua/._basic.lua b/tolua/src/bin/lua/._basic.lua
new file mode 100644
index 0000000..4f881ff
--- /dev/null
+++ b/tolua/src/bin/lua/._basic.lua
Binary files differ
diff --git a/tolua/src/bin/lua/._clean.lua b/tolua/src/bin/lua/._clean.lua
new file mode 100644
index 0000000..4f881ff
--- /dev/null
+++ b/tolua/src/bin/lua/._clean.lua
Binary files differ
diff --git a/tolua/src/bin/lua/._compat.lua b/tolua/src/bin/lua/._compat.lua
new file mode 100644
index 0000000..4f881ff
--- /dev/null
+++ b/tolua/src/bin/lua/._compat.lua
Binary files differ
diff --git a/tolua/src/bin/lua/CVS/Entries b/tolua/src/bin/lua/CVS/Entries
new file mode 100644
index 0000000..e62218f
--- /dev/null
+++ b/tolua/src/bin/lua/CVS/Entries
@@ -0,0 +1,22 @@
+/all.lua/1.1/Wed Apr 9 20:46:10 2008//
+/array.lua/1.4/Thu Jan 13 13:43:45 2011//
+/basic.lua/1.4/Tue Nov 24 16:45:13 2009//
+/class.lua/1.3/Tue Nov 24 16:45:13 2009//
+/clean.lua/1.1/Wed Apr 9 20:46:10 2008//
+/code.lua/1.5/Tue Nov 24 16:45:13 2009//
+/compat.lua/1.1/Wed Apr 9 20:46:10 2008//
+/container.lua/1.3/Tue Nov 24 16:45:13 2009//
+/declaration.lua/1.5/Thu Jan 13 13:43:46 2011//
+/define.lua/1.3/Tue Nov 24 16:45:13 2009//
+/doit.lua/1.3/Tue Nov 24 16:45:13 2009//
+/enumerate.lua/1.3/Tue Nov 24 16:45:13 2009//
+/feature.lua/1.3/Tue Nov 24 16:45:14 2009//
+/function.lua/1.4/Tue Nov 24 16:45:14 2009//
+/module.lua/1.3/Tue Nov 24 16:45:14 2009//
+/namespace.lua/1.3/Tue Nov 24 16:45:14 2009//
+/operator.lua/1.3/Tue Nov 24 16:45:14 2009//
+/package.lua/1.4/Tue Nov 24 16:45:15 2009//
+/typedef.lua/1.3/Tue Nov 24 16:45:15 2009//
+/variable.lua/1.3/Tue Nov 24 16:45:15 2009//
+/verbatim.lua/1.3/Tue Nov 24 16:45:15 2009//
+D
diff --git a/tolua/src/bin/lua/CVS/Repository b/tolua/src/bin/lua/CVS/Repository
new file mode 100644
index 0000000..0c10f83
--- /dev/null
+++ b/tolua/src/bin/lua/CVS/Repository
@@ -0,0 +1 @@
+src/tolua/src/bin/lua
diff --git a/tolua/src/bin/lua/CVS/Root b/tolua/src/bin/lua/CVS/Root
new file mode 100644
index 0000000..af4ddf1
--- /dev/null
+++ b/tolua/src/bin/lua/CVS/Root
@@ -0,0 +1 @@
+:ext:celes@ssh.tecgraf.puc-rio.br:/home/t/tecgraf/prod/lib/vis
diff --git a/tolua/src/bin/lua/all.lua b/tolua/src/bin/lua/all.lua
new file mode 100644
index 0000000..eadf600
--- /dev/null
+++ b/tolua/src/bin/lua/all.lua
@@ -0,0 +1,26 @@
+dofile(path.."compat.lua")
+dofile(path.."basic.lua")
+dofile(path.."feature.lua")
+dofile(path.."verbatim.lua")
+dofile(path.."code.lua")
+dofile(path.."typedef.lua")
+dofile(path.."container.lua")
+dofile(path.."package.lua")
+dofile(path.."module.lua")
+dofile(path.."namespace.lua")
+dofile(path.."define.lua")
+dofile(path.."enumerate.lua")
+dofile(path.."declaration.lua")
+dofile(path.."variable.lua")
+dofile(path.."array.lua")
+dofile(path.."function.lua")
+dofile(path.."operator.lua")
+dofile(path.."class.lua")
+dofile(path.."clean.lua")
+dofile(path.."doit.lua")
+
+local err,msg = pcall(doit)
+if not err then
+ local _,_,label,msg = strfind(msg,"(.-:.-:%s*)(.*)")
+ tolua_error(msg,label)
+end
diff --git a/tolua/src/bin/lua/array.lua b/tolua/src/bin/lua/array.lua
new file mode 100644
index 0000000..7a9b1ad
--- /dev/null
+++ b/tolua/src/bin/lua/array.lua
@@ -0,0 +1,208 @@
+-- tolua: array class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1999
+-- $Id: array.lua,v 1.4 2011/01/13 13:43:45 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Array class
+-- Represents a extern array variable or a public member of a class.
+-- Stores all fields present in a declaration.
+classArray = {
+}
+classArray.__index = classArray
+setmetatable(classArray,classDeclaration)
+
+-- Print method
+function classArray:print (ident,close)
+ print(ident.."Array{")
+ print(ident.." mod = '"..self.mod.."',")
+ print(ident.." type = '"..self.type.."',")
+ print(ident.." ptr = '"..self.ptr.."',")
+ print(ident.." name = '"..self.name.."',")
+ print(ident.." def = '"..self.def.."',")
+ print(ident.." dim = '"..self.dim.."',")
+ print(ident.." ret = '"..self.ret.."',")
+ print(ident.."}"..close)
+end
+
+-- check if it is a variable
+function classArray:isvariable ()
+ return true
+end
+
+
+-- get variable value
+function classArray:getvalue (class,static)
+ if class and static then
+ return class..'::'..self.name..'[tolua_index]'
+ elseif class then
+ return 'self->'..self.name..'[tolua_index]'
+ else
+ return self.name..'[tolua_index]'
+ end
+end
+
+-- Write binding functions
+function classArray:supcode ()
+ local class = self:inclass()
+
+ -- get function ------------------------------------------------
+ if class then
+ output("/* get function:",self.name," of class ",class," */")
+ else
+ output("/* get function:",self.name," */")
+ end
+ self.cgetname = self:cfuncname("tolua_get")
+ output("static int",self.cgetname,"(lua_State* tolua_S)")
+ output("{")
+ output(" int tolua_index;")
+
+ -- declare self, if the case
+ local _,_,static = strfind(self.mod,'^%s*(static)')
+ if class and static==nil then
+ output(' ',self.parent.type,'*','self;')
+ output(' lua_pushstring(tolua_S,".self");')
+ output(' lua_rawget(tolua_S,1);')
+ output(' self = ')
+ output('(',class,'*) ')
+ output('lua_touserdata(tolua_S,-1);')
+ elseif static then
+ _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
+ end
+
+ -- check index
+ output('#ifndef TOLUA_RELEASE\n')
+ output(' {')
+ output(' tolua_Error tolua_err;')
+ output(' if (!tolua_isnumber(tolua_S,2,0,&tolua_err))')
+ output(' tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);')
+ output(' }')
+ output('#endif\n')
+ output(' tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;')
+ output('#ifndef TOLUA_RELEASE\n')
+ output(' if (tolua_index<0 || tolua_index>='..self.dim..')')
+ output(' tolua_error(tolua_S,"array indexing out of range.",NULL);')
+ output('#endif\n')
+
+ -- return value
+ local t,ct = isbasic(self.type)
+ if t then
+ output(' tolua_push'..t..'(tolua_S,(',ct,')'..self:getvalue(class,static)..');')
+ else
+ t = self.type
+ if self.ptr == '&' or self.ptr == '' then
+ output(' tolua_pushusertype(tolua_S,(void*)&'..self:getvalue(class,static)..',"',t,'");')
+ else
+ output(' tolua_pushusertype(tolua_S,(void*)'..self:getvalue(class,static)..',"',t,'");')
+ end
+ end
+ output(' return 1;')
+ output('}')
+ output('\n')
+
+ -- set function ------------------------------------------------
+ if not strfind(self.type,'const') then
+ if class then
+ output("/* set function:",self.name," of class ",class," */")
+ else
+ output("/* set function:",self.name," */")
+ end
+ self.csetname = self:cfuncname("tolua_set")
+ output("static int",self.csetname,"(lua_State* tolua_S)")
+ output("{")
+
+ -- declare index
+ output(' int tolua_index;')
+
+ -- declare self, if the case
+ local _,_,static = strfind(self.mod,'^%s*(static)')
+ if class and static==nil then
+ output(' ',class,'*','self;')
+ output(' lua_pushstring(tolua_S,".self");')
+ output(' lua_rawget(tolua_S,1);')
+ output(' self = ')
+ output('(',class,'*) ')
+ output('lua_touserdata(tolua_S,-1);')
+ elseif static then
+ _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
+ end
+
+ -- check index
+ output('#ifndef TOLUA_RELEASE\n')
+ output(' {')
+ output(' tolua_Error tolua_err;')
+ output(' if (!tolua_isnumber(tolua_S,2,0,&tolua_err))')
+ output(' tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);')
+ output(' }')
+ output('#endif\n')
+ output(' tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;')
+ output('#ifndef TOLUA_RELEASE\n')
+ output(' if (tolua_index<0 || tolua_index>='..self.dim..')')
+ output(' tolua_error(tolua_S,"array indexing out of range.",NULL);')
+ output('#endif\n')
+
+ -- assign value
+ local ptr = ''
+ if self.ptr~='' then ptr = '*' end
+ output(' ')
+ if class and static then
+ output(class..'::'..self.name..'[tolua_index]')
+ elseif class then
+ output('self->'..self.name..'[tolua_index]')
+ else
+ output(self.name..'[tolua_index]')
+ end
+ local t = isbasic(self.type)
+ output(' = ')
+ if not t and ptr=='' then output('*') end
+ output('((',self.mod,self.type)
+ if not t then
+ output('*')
+ end
+ output(') ')
+ local def = 0
+ if self.def ~= '' then def = self.def end
+ if t then
+ if isenum(self.type) then
+ output('(int)')
+ end
+ if t=='function' then t='value' end
+ output('tolua_to'..t,'(tolua_S,3,',def,'));')
+ else
+ output('tolua_tousertype(tolua_S,3,',def,'));')
+ end
+ output(' return 0;')
+ output('}')
+ output('\n')
+ end
+
+end
+
+function classArray:register ()
+ if self.csetname then
+ output(' tolua_array(tolua_S,"'..self.lname..'",'..self.cgetname..','..self.csetname..');')
+ else
+ output(' tolua_array(tolua_S,"'..self.lname..'",'..self.cgetname..',NULL);')
+ end
+end
+
+-- Internal constructor
+function _Array (t)
+ setmetatable(t,classArray)
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects a string representing the variable declaration.
+function Array (s)
+ return _Array (Declaration(s,'var'))
+end
+
+
diff --git a/tolua/src/bin/lua/basic.lua b/tolua/src/bin/lua/basic.lua
new file mode 100644
index 0000000..0bfe8bb
--- /dev/null
+++ b/tolua/src/bin/lua/basic.lua
@@ -0,0 +1,212 @@
+-- tolua: basic utility functions
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- Last update: Apr 2003
+-- $Id: basic.lua,v 1.4 2009/11/24 16:45:13 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Basic C types and their corresponding Lua types
+-- All occurrences of "char*" will be replaced by "_cstring",
+-- and all occurrences of "void*" will be replaced by "_userdata"
+_basic = {
+ ['void'] = '',
+ ['char'] = 'number',
+ ['tolua_index'] = 'number',
+ ['tolua_byte'] = 'number',
+ ['tolua_ubyte'] = 'number',
+ ['int'] = 'number',
+ ['short'] = 'number',
+ ['long'] = 'number',
+ ['unsigned'] = 'number',
+ ['float'] = 'number',
+ ['double'] = 'number',
+ ['_cstring'] = 'string',
+ ['_userdata'] = 'userdata',
+ ['char*'] = 'string',
+ ['void*'] = 'userdata',
+ ['bool'] = 'boolean',
+ ['lua_State*'] = 'state',
+ ['_lstate'] = 'state',
+ ['lua_Object'] = 'value',
+ ['lua_Function'] = 'function',
+ ['LUA_VALUE'] = 'value', -- for compatibility with tolua 4.0
+}
+
+_basic_ctype = {
+ number = "lua_Number",
+ string = "const char*",
+ userdata = "void*",
+ boolean = "bool",
+ value = "int",
+}
+
+-- List of user defined types
+-- Each type corresponds to a variable name that stores its tag value.
+_usertype = {}
+
+-- List of types that have to be collected
+_collect = {}
+
+
+-- List of auto renaming
+_renaming = {}
+function appendrenaming (s)
+ local b,e,old,new = strfind(s,"%s*(.-)%s*@%s*(.-)%s*$")
+ if not b then
+ error("#Invalid renaming syntax; it should be of the form: pattern@pattern")
+ end
+ tinsert(_renaming,{old=old, new=new})
+end
+
+function applyrenaming (s)
+ for i=1,getn(_renaming) do
+ local m,n = gsub(s,_renaming[i].old,_renaming[i].new)
+ if n ~= 0 then
+ return m
+ end
+ end
+ return nil
+end
+
+-- Error handler
+function tolua_error (s,f)
+ local out = _OUTPUT
+ _OUTPUT = _STDERR
+ if strsub(s,1,1) == '#' then
+ write("\n** tolua: "..strsub(s,2)..".\n\n")
+ if _curr_code then
+ local _,_,s = strfind(_curr_code,"^%s*(.-\n)") -- extract first line
+ if s==nil then s = _curr_code end
+ s = gsub(s,"_userdata","void*") -- return with 'void*'
+ s = gsub(s,"_cstring","char*") -- return with 'char*'
+ s = gsub(s,"_lstate","lua_State*") -- return with 'lua_State*'
+ write("Code being processed:\n"..s.."\n")
+ end
+ else
+ print(debug.traceback("\n** tolua internal error: "..f..s..".\n\n"))
+ return
+ end
+ _OUTPUT = out
+end
+
+function warning (msg)
+ local out = _OUTPUT
+ _OUTPUT = _STDERR
+ write("\n** tolua warning: "..msg..".\n\n")
+ _OUTPUT = out
+end
+
+-- register an user defined type: returns full type
+function regtype (t)
+ local ft = findtype(t)
+ if isbasic(t) then
+ return t
+ end
+ if not ft then
+ return appendusertype(t)
+ end
+end
+
+-- return type name: returns full type
+function typevar(type)
+ if type == '' or type == 'void' or type == "..." then
+ return type
+ else
+ local ft = findtype(type)
+ if ft then
+ return ft
+ end
+ _usertype[type] = type
+ return type
+ end
+end
+
+-- check if basic type
+function isbasic (type)
+ local t = gsub(type,'const ','')
+ local m,t = applytypedef(t)
+ local b = _basic[t]
+ if b then
+ return b,_basic_ctype[b]
+ end
+ return nil
+end
+
+-- split string using a token
+function split (s,t)
+ local l = {n=0}
+ local f = function (s)
+ l.n = l.n + 1
+ l[l.n] = s
+ return ""
+ end
+ local p = "%s*(.-)%s*"..t.."%s*"
+ s = gsub(s,"^%s+","")
+ s = gsub(s,"%s+$","")
+ s = gsub(s,p,f)
+ l.n = l.n + 1
+ l[l.n] = gsub(s,"(%s%s*)$","")
+ return l
+end
+
+
+-- concatenate strings of a table
+function concat (t,f,l)
+ local s = ''
+ local i=f
+ while i<=l do
+ s = s..t[i]
+ i = i+1
+ if i <= l then s = s..' ' end
+ end
+ return s
+end
+
+-- concatenate all parameters, following output rules
+function concatparam (line, ...)
+ local arg = {...}
+ local i=1
+ while i<=#arg do
+ if _cont and not strfind(_cont,'[%(,"]') and
+ strfind(arg[i],"^[%a_~]") then
+ line = line .. ' '
+ end
+ line = line .. arg[i]
+ if arg[i] ~= '' then
+ _cont = strsub(arg[i],-1,-1)
+ end
+ i = i+1
+ end
+ if strfind(arg[#arg],"[%/%)%;%{%}]$") then
+ _cont=nil line = line .. '\n'
+ end
+ return line
+end
+
+-- output line
+function output (...)
+ local arg = {...}
+ local i=1
+ while i<=#arg do
+ if _cont and not strfind(_cont,'[%(,"]') and
+ strfind(arg[i],"^[%a_~]") then
+ write(' ')
+ end
+ write(arg[i])
+ if arg[i] ~= '' then
+ _cont = strsub(arg[i],-1,-1)
+ end
+ i = i+1
+ end
+ if strfind(arg[#arg],"[%/%)%;%{%}]$") then
+ _cont=nil write('\n')
+ end
+end
+
+
diff --git a/tolua/src/bin/lua/class.lua b/tolua/src/bin/lua/class.lua
new file mode 100644
index 0000000..bf38405
--- /dev/null
+++ b/tolua/src/bin/lua/class.lua
@@ -0,0 +1,120 @@
+-- tolua: class class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: class.lua,v 1.3 2009/11/24 16:45:13 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Class class
+-- Represents a class definition.
+-- Stores the following fields:
+-- name = class name
+-- base = class base, if any (only single inheritance is supported)
+-- {i} = list of members
+classClass = {
+ classtype = 'class',
+ name = '',
+ base = '',
+ type = '',
+ btype = '',
+ ctype = '',
+}
+classClass.__index = classClass
+setmetatable(classClass,classContainer)
+
+
+-- register class
+function classClass:register ()
+ push(self)
+ if _collect[self.type] then
+ output('#ifdef __cplusplus\n')
+ output(' tolua_cclass(tolua_S,"'..self.lname..'","'..self.type..'","'..self.btype..'",'.._collect[self.type]..');')
+ output('#else\n')
+ output(' tolua_cclass(tolua_S,"'..self.lname..'","'..self.type..'","'..self.btype..'",NULL);')
+ output('#endif\n')
+ else
+ output(' tolua_cclass(tolua_S,"'..self.lname..'","'..self.type..'","'..self.btype..'",NULL);')
+ end
+ output(' tolua_beginmodule(tolua_S,"'..self.lname..'");')
+ local i=1
+ while self[i] do
+ self[i]:register()
+ i = i+1
+ end
+ output(' tolua_endmodule(tolua_S);')
+ pop()
+end
+
+-- return collection requirement
+function classClass:requirecollection (t)
+ push(self)
+ local r = false
+ local i=1
+ while self[i] do
+ r = self[i]:requirecollection(t) or r
+ i = i+1
+ end
+ pop()
+ -- only class that exports destructor can be appropriately collected
+ if self._delete then
+ t[self.type] = "tolua_collect_" .. gsub(self.type,"::","_")
+ r = true
+ end
+ return r
+end
+
+-- output tags
+function classClass:decltype ()
+ push(self)
+ self.type = regtype(self.name)
+ self.btype = typevar(self.base)
+ self.ctype = 'const '..self.type
+ local i=1
+ while self[i] do
+ self[i]:decltype()
+ i = i+1
+ end
+ pop()
+end
+
+
+-- Print method
+function classClass:print (ident,close)
+ print(ident.."Class{")
+ print(ident.." name = '"..self.name.."',")
+ print(ident.." base = '"..self.base.."';")
+ print(ident.." lname = '"..self.lname.."',")
+ print(ident.." type = '"..self.type.."',")
+ print(ident.." btype = '"..self.btype.."',")
+ print(ident.." ctype = '"..self.ctype.."',")
+ local i=1
+ while self[i] do
+ self[i]:print(ident.." ",",")
+ i = i+1
+ end
+ print(ident.."}"..close)
+end
+
+-- Internal constructor
+function _Class (t)
+ setmetatable(t,classClass)
+ t:buildnames()
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects the name, the base and the body of the class.
+function Class (n,p,b)
+ local c = _Class(_Container{name=n, base=p})
+ push(c)
+ c:parse(strsub(b,2,strlen(b)-1)) -- eliminate braces
+ pop()
+end
+
+
diff --git a/tolua/src/bin/lua/clean.lua b/tolua/src/bin/lua/clean.lua
new file mode 100644
index 0000000..2442291
--- /dev/null
+++ b/tolua/src/bin/lua/clean.lua
@@ -0,0 +1,75 @@
+-- mark up comments and strings
+STR1 = "\001"
+STR2 = "\002"
+STR3 = "\003"
+STR4 = "\004"
+REM = "\005"
+ANY = "([\001-\005])"
+ESC1 = "\006"
+ESC2 = "\007"
+
+MASK = { -- the substitution order is important
+ {ESC1, "\\'", "\\'"},
+ {ESC2, '\\"', '\\"'},
+ {STR1, "'", "'"},
+ {STR2, '"', '"'},
+ {STR3, "%[%[", "[["},
+ {STR4, "%]%]", "]]"},
+ {REM , "%-%-", "--"},
+}
+
+function mask (s)
+ for i = 1,getn(MASK) do
+ s = gsub(s,MASK[i][2],MASK[i][1])
+ end
+ return s
+end
+
+function unmask (s)
+ for i = 1,getn(MASK) do
+ s = gsub(s,MASK[i][1],MASK[i][3])
+ end
+ return s
+end
+
+function clean (s)
+ -- check for compilation error
+ local code = "return function () " .. s .. " end"
+ if not dostring(code) then
+ return nil
+ end
+
+ local S = "" -- saved string
+
+ s = mask(s)
+
+ -- remove blanks and comments
+ while 1 do
+ local b,e,d = strfind(s,ANY)
+ if b then
+ S = S..strsub(s,1,b-1)
+ s = strsub(s,b+1)
+ if d==STR1 or d==STR2 then
+ e = strfind(s,d)
+ S = S ..d..strsub(s,1,e)
+ s = strsub(s,e+1)
+ elseif d==STR3 then
+ e = strfind(s,STR4)
+ S = S..d..strsub(s,1,e)
+ s = strsub(s,e+1)
+ elseif d==REM then
+ s = gsub(s,"[^\n]*(\n?)","%1",1)
+ end
+ else
+ S = S..s
+ break
+ end
+ end
+ -- eliminate unecessary spaces
+ S = gsub(S,"[ \t]+"," ")
+ S = gsub(S,"[ \t]*\n[ \t]*","\n")
+ S = gsub(S,"\n+","\n")
+ S = unmask(S)
+ return S
+end
+
diff --git a/tolua/src/bin/lua/code.lua b/tolua/src/bin/lua/code.lua
new file mode 100644
index 0000000..6afa84c
--- /dev/null
+++ b/tolua/src/bin/lua/code.lua
@@ -0,0 +1,73 @@
+-- tolua: code class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1999
+-- $Id: code.lua,v 1.5 2009/11/24 16:45:13 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Code class
+-- Represents Lua code to be compiled and included
+-- in the initialization function.
+-- The following fields are stored:
+-- text = text code
+classCode = {
+ text = '',
+}
+classCode.__index = classCode
+setmetatable(classCode,classFeature)
+
+-- register code
+function classCode:register ()
+ -- clean Lua code
+ local s = clean(self.text)
+ if not s then
+ error("parser error in embedded code")
+ end
+
+ -- convert to C
+ output('\n { /* begin embedded lua code */\n')
+ output(' static unsigned char B[] = {\n ')
+ local t={n=0}
+ local b = gsub(s,'(.)',function (c)
+ local e = ''
+ t.n=t.n+1 if t.n==15 then t.n=0 e='\n ' end
+ return format('%3u,%s',strbyte(c),e)
+ end
+ )
+ output(b..strbyte(" "))
+ output('\n };\n')
+ output(' if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)\n')
+ output(' lua_pcall(tolua_S,0,LUA_MULTRET,0);')
+ output(' } /* end of embedded lua code */\n\n')
+end
+
+
+-- Print method
+function classCode:print (ident,close)
+ print(ident.."Code{")
+ print(ident.." text = [["..self.text.."]],")
+ print(ident.."}"..close)
+end
+
+
+-- Internal constructor
+function _Code (t)
+ setmetatable(t,classCode)
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects a string representing the code text
+function Code (l)
+ return _Code {
+ text = l
+ }
+end
+
+
diff --git a/tolua/src/bin/lua/compat.lua b/tolua/src/bin/lua/compat.lua
new file mode 100644
index 0000000..a63c31d
--- /dev/null
+++ b/tolua/src/bin/lua/compat.lua
@@ -0,0 +1,201 @@
+-------------------------------------------------------------------
+-- Real globals
+-- _ALERT
+-- _ERRORMESSAGE
+-- _VERSION
+-- _G
+-- assert
+-- error
+-- metatable
+-- next
+-- print
+-- require
+-- tonumber
+-- tostring
+-- type
+
+-------------------------------------------------------------------
+-- collectgarbage
+-- gcinfo
+
+-- globals
+
+-- call -> protect(f, err)
+
+-- rawget
+-- rawset
+
+-- getargs = Main.getargs ??
+
+rawtype = type
+
+function do_ (f, err)
+ if not f then print(err); return end
+ local a,b = pcall(f)
+ if not a then print(b); return nil
+ else return b or true
+ end
+end
+
+function dostring(s) return do_(load(s)) end
+
+-------------------------------------------------------------------
+-- Table library
+local tab = table
+foreach = function(t,f)
+ for k,v in pairs(t) do
+ f(k,v)
+ end
+end
+foreachi = function(t,f)
+ for i,v in ipairs(t) do
+ f(i,v)
+ end
+end
+getn = function(t)
+ return #t
+end
+tinsert = tab.insert
+tremove = tab.remove
+sort = tab.sort
+
+-------------------------------------------------------------------
+-- Debug library
+local dbg = debug
+getinfo = dbg.getinfo
+getlocal = dbg.getlocal
+setcallhook = function () error"`setcallhook' is deprecated" end
+setlinehook = function () error"`setlinehook' is deprecated" end
+setlocal = dbg.setlocal
+
+-------------------------------------------------------------------
+-- math library
+local math = math
+abs = math.abs
+acos = function (x) return math.deg(math.acos(x)) end
+asin = function (x) return math.deg(math.asin(x)) end
+atan = function (x) return math.deg(math.atan(x)) end
+atan2 = function (x,y) return math.deg(math.atan2(x,y)) end
+ceil = math.ceil
+cos = function (x) return math.cos(math.rad(x)) end
+deg = math.deg
+exp = math.exp
+floor = math.floor
+frexp = math.frexp
+ldexp = math.ldexp
+log = math.log
+log10 = math.log10
+max = math.max
+min = math.min
+mod = math.mod
+PI = math.pi
+--??? pow = math.pow
+rad = math.rad
+random = math.random
+randomseed = math.randomseed
+sin = function (x) return math.sin(math.rad(x)) end
+sqrt = math.sqrt
+tan = function (x) return math.tan(math.rad(x)) end
+
+-------------------------------------------------------------------
+-- string library
+local str = string
+strbyte = str.byte
+strchar = str.char
+strfind = str.find
+format = str.format
+gsub = str.gsub
+strlen = str.len
+strlower = str.lower
+strrep = str.rep
+strsub = str.sub
+strupper = str.upper
+
+-------------------------------------------------------------------
+-- os library
+clock = os.clock
+date = os.date
+difftime = os.difftime
+execute = os.execute --?
+exit = os.exit
+getenv = os.getenv
+remove = os.remove
+rename = os.rename
+setlocale = os.setlocale
+time = os.time
+tmpname = os.tmpname
+
+-------------------------------------------------------------------
+-- compatibility only
+getglobal = function (n) return _G[n] end
+setglobal = function (n,v) _G[n] = v end
+
+-------------------------------------------------------------------
+
+local io, tab = io, table
+
+-- IO library (files)
+_STDIN = io.stdin
+_STDERR = io.stderr
+_STDOUT = io.stdout
+_INPUT = io.stdin
+_OUTPUT = io.stdout
+seek = io.stdin.seek -- sick ;-)
+tmpfile = io.tmpfile
+closefile = io.close
+openfile = io.open
+
+function flush (f)
+ if f then f:flush()
+ else _OUTPUT:flush()
+ end
+end
+
+function readfrom (name)
+ if name == nil then
+ local f, err, cod = io.close(_INPUT)
+ _INPUT = io.stdin
+ return f, err, cod
+ else
+ local f, err, cod = io.open(name, "r")
+ _INPUT = f or _INPUT
+ return f, err, cod
+ end
+end
+
+function writeto (name)
+ if name == nil then
+ local f, err, cod = io.close(_OUTPUT)
+ _OUTPUT = io.stdout
+ return f, err, cod
+ else
+ local f, err, cod = io.open(name, "w")
+ _OUTPUT = f or _OUTPUT
+ return f, err, cod
+ end
+end
+
+function appendto (name)
+ local f, err, cod = io.open(name, "a")
+ _OUTPUT = f or _OUTPUT
+ return f, err, cod
+end
+
+function read (...)
+ local f = _INPUT
+ local arg = {...}
+ if rawtype(arg[1]) == 'userdata' then
+ f = tab.remove(arg, 1)
+ end
+ return f:read(table.unpack(arg))
+end
+
+function write (...)
+ local f = _OUTPUT
+ local arg = {...}
+ if rawtype(arg[1]) == 'userdata' then
+ f = tab.remove(arg, 1)
+ end
+ return f:write(table.unpack(arg))
+end
+
diff --git a/tolua/src/bin/lua/container.lua b/tolua/src/bin/lua/container.lua
new file mode 100644
index 0000000..29c3781
--- /dev/null
+++ b/tolua/src/bin/lua/container.lua
@@ -0,0 +1,536 @@
+-- tolua: container abstract class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: container.lua,v 1.3 2009/11/24 16:45:13 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+-- table to store namespaced typedefs/enums in global scope
+global_typedefs = {}
+global_enums = {}
+
+-- Container class
+-- Represents a container of features to be bound
+-- to lua.
+classContainer =
+{
+ curr = nil,
+}
+classContainer.__index = classContainer
+setmetatable(classContainer,classFeature)
+
+-- output tags
+function classContainer:decltype ()
+ push(self)
+ local i=1
+ while self[i] do
+ self[i]:decltype()
+ i = i+1
+ end
+ pop()
+end
+
+
+-- write support code
+function classContainer:supcode ()
+ push(self)
+ local i=1
+ while self[i] do
+ self[i]:supcode()
+ i = i+1
+ end
+ pop()
+end
+
+function classContainer:hasvar ()
+ local i=1
+ while self[i] do
+ if self[i]:isvariable() then
+ return 1
+ end
+ i = i+1
+ end
+ return 0
+end
+
+-- Internal container constructor
+function _Container (self)
+ setmetatable(self,classContainer)
+ self.n = 0
+ self.typedefs = {tolua_n=0}
+ self.usertypes = {}
+ self.enums = {tolua_n=0}
+ self.lnames = {}
+ return self
+end
+
+-- push container
+function push (t)
+ t.prox = classContainer.curr
+ classContainer.curr = t
+end
+
+-- pop container
+function pop ()
+--print("name",classContainer.curr.name)
+--foreach(classContainer.curr.usertypes,print)
+--print("______________")
+ classContainer.curr = classContainer.curr.prox
+end
+
+-- get current namespace
+function getcurrnamespace ()
+ return getnamespace(classContainer.curr)
+end
+
+-- append to current container
+function append (t)
+ return classContainer.curr:append(t)
+end
+
+-- append typedef to current container
+function appendtypedef (t)
+ return classContainer.curr:appendtypedef(t)
+end
+
+-- append usertype to current container
+function appendusertype (t)
+ return classContainer.curr:appendusertype(t)
+end
+
+-- append enum to current container
+function appendenum (t)
+ return classContainer.curr:appendenum(t)
+end
+
+-- substitute typedef
+function applytypedef (type)
+ return classContainer.curr:applytypedef(type)
+end
+
+-- check if is type
+function findtype (type)
+ local t = classContainer.curr:findtype(type)
+ return t
+end
+
+-- check if is typedef
+function istypedef (type)
+ return classContainer.curr:istypedef(type)
+end
+
+-- get fulltype (with namespace)
+function fulltype (t)
+ local curr = classContainer.curr
+ while curr do
+ if curr then
+ if curr.typedefs and curr.typedefs[t] then
+ return curr.typedefs[t]
+ elseif curr.usertypes and curr.usertypes[t] then
+ return curr.usertypes[t]
+ end
+ end
+ curr = curr.prox
+ end
+ return t
+end
+
+-- checks if it requires collection
+function classContainer:requirecollection (t)
+ push(self)
+ local i=1
+ local r = false
+ while self[i] do
+ r = self[i]:requirecollection(t) or r
+ i = i+1
+ end
+ pop()
+ return r
+end
+
+
+-- get namesapce
+function getnamespace (curr)
+ local namespace = ''
+ while curr do
+ if curr and
+ ( curr.classtype == 'class' or curr.classtype == 'namespace')
+ then
+ namespace = curr.name .. '::' .. namespace
+ end
+ curr = curr.prox
+ end
+ return namespace
+end
+
+-- get namespace (only namespace)
+function getonlynamespace ()
+ local curr = classContainer.curr
+ local namespace = ''
+ while curr do
+ if curr.classtype == 'class' then
+ return namespace
+ elseif curr.classtype == 'namespace' then
+ namespace = curr.name .. '::' .. namespace
+ end
+ curr = curr.prox
+ end
+ return namespace
+end
+
+-- check if is enum
+function isenum (type)
+ return classContainer.curr:isenum(type)
+end
+
+-- append feature to container
+function classContainer:append (t)
+ self.n = self.n + 1
+ self[self.n] = t
+ t.parent = self
+end
+
+-- append typedef
+function classContainer:appendtypedef (t)
+ local namespace = getnamespace(classContainer.curr)
+ self.typedefs.tolua_n = self.typedefs.tolua_n + 1
+ self.typedefs[self.typedefs.tolua_n] = t
+ self.typedefs[t.utype] = namespace .. t.utype
+ global_typedefs[namespace..t.utype] = t
+end
+
+-- append usertype: return full type
+function classContainer:appendusertype (t)
+ local container
+ if t == self.name then
+ container = self.prox
+ else
+ container = self
+ end
+ local ft = getnamespace(container) .. t
+ container.usertypes[t] = ft
+ _usertype[ft] = ft
+ return ft
+end
+
+-- append enum
+function classContainer:appendenum (t)
+ local namespace = getnamespace(classContainer.curr)
+ self.enums.tolua_n = self.enums.tolua_n + 1
+ self.enums[self.enums.tolua_n] = t
+ global_enums[namespace..t.name] = t
+end
+
+-- determine lua function name overload
+function classContainer:overload (lname)
+ if not self.lnames[lname] then
+ self.lnames[lname] = 0
+ else
+ self.lnames[lname] = self.lnames[lname] + 1
+ end
+ return format("%02d",self.lnames[lname])
+end
+
+-- applies typedef: returns the 'the facto' modifier and type
+function classContainer:applytypedef (type)
+ if global_typedefs[type] then
+ local mod1, type1 = global_typedefs[type].mod, global_typedefs[type].type
+ local mod2, type2 = applytypedef(type1)
+ return mod2 .. ' ' .. mod1, type2
+ end
+ local basetype = gsub(type,"^.*::","")
+ local env = self
+ while env do
+ if env.typedefs then
+ local i=1
+ while env.typedefs[i] do
+ if env.typedefs[i].utype == basetype then
+ local mod1,type1 = env.typedefs[i].mod,env.typedefs[i].type
+ local mod2,type2 = applytypedef(type1)
+ return mod2..' '..mod1,type2
+ end
+ i = i+1
+ end
+ end
+ env = env.parent
+ end
+ return '',type
+end
+
+-- check if it is a typedef
+function classContainer:istypedef (type)
+ local env = self
+ while env do
+ if env.typedefs then
+ local i=1
+ while env.typedefs[i] do
+ if env.typedefs[i].utype == type then
+ return type
+ end
+ i = i+1
+ end
+ end
+ env = env.parent
+ end
+ return nil
+end
+
+-- check if is a registered type: return full type or nil
+function classContainer:findtype (t)
+ local curr = self
+ while curr do
+ if curr.typedefs and curr.typedefs[t] then
+ return curr.typedefs[t]
+ elseif curr.usertypes and curr.usertypes[t] then
+ return curr.usertypes[t]
+ end
+ curr = curr.prox
+ end
+ if _basic[t] then
+ return t
+ end
+ return nil
+end
+
+
+function classContainer:isenum (type)
+ if global_enums[type] then
+ return true
+ end
+ local basetype = gsub(type,"^.*::","")
+ local env = self
+ while env do
+ if env.enums then
+ local i=1
+ while env.enums[i] do
+ if env.enums[i].name == basetype then
+ return true
+ end
+ i = i+1
+ end
+ end
+ env = env.parent
+ end
+ return false
+end
+
+-- parse chunk
+function classContainer:doparse (s)
+
+ -- try Lua code
+ do
+ local b,e,code = strfind(s,"^%s*(%b\1\2)")
+ if b then
+ Code(strsub(code,2,-2))
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try C code
+ do
+ local b,e,code = strfind(s,"^%s*(%b\3\4)")
+ if b then
+ code = '{'..strsub(code,2,-2)..'\n}\n'
+ Verbatim(code,'r') -- verbatim code for 'r'egister fragment
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try verbatim
+ do
+ local b,e,line = strfind(s,"^%s*%$(.-\n)")
+ if b then
+ Verbatim(line)
+ return strsub(s,e+1)
+ end
+ end
+
+
+ -- try module
+ do
+ local b,e,name,body = strfind(s,"^%s*module%s%s*([_%w][_%w]*)%s*(%b{})%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Module(name,body)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try namesapce
+ do
+ local b,e,name,body = strfind(s,"^%s*namespace%s%s*([_%w][_%w]*)%s*(%b{})%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Namespace(name,body)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try define
+ do
+ local b,e,name = strfind(s,"^%s*#define%s%s*([^%s]*)[^\n]*\n%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Define(name)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try enumerates
+ do
+ local b,e,name,body = strfind(s,"^%s*enum%s+(%S*)%s*(%b{})%s*;?%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Enumerate(name,body)
+ return strsub(s,e+1)
+ end
+ end
+
+ do
+ local b,e,body,name = strfind(s,"^%s*typedef%s+enum[^{]*(%b{})%s*([%w_][^%s]*)%s*;%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Enumerate(name,body)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try operator
+ do
+ local b,e,decl,kind,arg,const = strfind(s,"^%s*([_%w][_%w%s%*&:]*operator)%s*([^%s][^%s]*)%s*(%b())%s*(c?o?n?s?t?)%s*;%s*")
+ if not b then
+ -- try inline
+ b,e,decl,kind,arg,const = strfind(s,"^%s*([_%w][_%w%s%*&:]*operator)%s*([^%s][^%s]*)%s*(%b())%s*(c?o?n?s?t?)%s*%b{}%s*;?%s*")
+ end
+ if b then
+ _curr_code = strsub(s,b,e)
+ Operator(decl,kind,arg,const)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try function
+ do
+ local b,e,decl,arg,const = strfind(s,"^%s*([~_%w][_@%w%s%*&:]*[_%w])%s*(%b())%s*(c?o?n?s?t?)%s*=?%s*0?%s*;%s*")
+ if not b then
+ -- try a single letter function name
+ b,e,decl,arg,const = strfind(s,"^%s*([_%w])%s*(%b())%s*(c?o?n?s?t?)%s*;%s*")
+ end
+ if b then
+ _curr_code = strsub(s,b,e)
+ Function(decl,arg,const)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try inline function
+ do
+ local b,e,decl,arg,const = strfind(s,"^%s*([~_%w][_@%w%s%*&:]*[_%w])%s*(%b())%s*(c?o?n?s?t?).-%b{}%s*;?%s*")
+ if not b then
+ -- try a single letter function name
+ b,e,decl,arg,const = strfind(s,"^%s*([_%w])%s*(%b())%s*(c?o?n?s?t?).-%b{}%s*;?%s*")
+ end
+ if b then
+ _curr_code = strsub(s,b,e)
+ Function(decl,arg,const)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try class
+ do
+ local b,e,name,base,body
+ base = '' body = ''
+ b,e,name = strfind(s,"^%s*class%s*([_%w][_%w@]*)%s*;") -- dummy class
+ if not b then
+ b,e,name = strfind(s,"^%s*struct%s*([_%w][_%w@]*)%s*;") -- dummy struct
+ if not b then
+ b,e,name,base,body = strfind(s,"^%s*class%s*([_%w][_%w@]*)%s*(.-)%s*(%b{})%s*;%s*")
+ if not b then
+ b,e,name,base,body = strfind(s,"^%s*struct%s*([_%w][_%w@]*)%s*(.-)%s*(%b{})%s*;%s*")
+ if not b then
+ b,e,name,base,body = strfind(s,"^%s*union%s*([_%w][_%w@]*)%s*(.-)%s*(%b{})%s*;%s*")
+ if not b then
+ base = ''
+ b,e,body,name = strfind(s,"^%s*typedef%s%s*struct%s*[_%w]*%s*(%b{})%s*([_%w][_%w@]*)%s*;%s*")
+ if not b then
+ base = ''
+ b,e,body,name = strfind(s,"^%s*typedef%s%s*union%s*[_%w]*%s*(%b{})%s*([_%w][_%w@]*)%s*;%s*")
+ end
+ end
+ end
+ end
+ end
+ end
+ if b then
+ if base ~= '' then
+ local b,e
+ b,e,base = strfind(base,".-([_%w][_%w]*)$")
+ end
+ _curr_code = strsub(s,b,e)
+ Class(name,base,body)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try typedef
+ do
+ local b,e,types = strfind(s,"^%s*typedef%s%s*(.-)%s*;%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Typedef(types)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try variable
+ do
+ local b,e,decl = strfind(s,"^%s*([_%w][_@%s%w%d%*&:]*[_%w%d])%s*;%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Variable(decl)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try string
+ do
+ local b,e,decl = strfind(s,"^%s*([_%w]?[_%s%w%d]-char%s+[_@%w%d]*%s*%[%s*%S+%s*%])%s*;%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Variable(decl)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- try array
+ do
+ local b,e,decl = strfind(s,"^%s*([_%w][][_@%s%w%d%*&:]*[]_%w%d])%s*;%s*")
+ if b then
+ _curr_code = strsub(s,b,e)
+ Array(decl)
+ return strsub(s,e+1)
+ end
+ end
+
+ -- no matching
+ if gsub(s,"%s%s*","") ~= "" then
+ _curr_code = s
+ error("#parse error")
+ else
+ return ""
+ end
+
+end
+
+function classContainer:parse (s)
+ while s ~= '' do
+ s = self:doparse(s)
+ end
+end
+
+
diff --git a/tolua/src/bin/lua/declaration.lua b/tolua/src/bin/lua/declaration.lua
new file mode 100644
index 0000000..b2aab1e
--- /dev/null
+++ b/tolua/src/bin/lua/declaration.lua
@@ -0,0 +1,482 @@
+-- tolua: declaration class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: declaration.lua,v 1.5 2011/01/13 13:43:46 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Declaration class
+-- Represents variable, function, or argument declaration.
+-- Stores the following fields:
+-- mod = type modifiers
+-- type = type
+-- ptr = "*" or "&", if representing a pointer or a reference
+-- name = name
+-- dim = dimension, if a vector
+-- def = default value, if any (only for arguments)
+-- ret = "*" or "&", if value is to be returned (only for arguments)
+classDeclaration = {
+ mod = '',
+ type = '',
+ ptr = '',
+ name = '',
+ dim = '',
+ ret = '',
+ def = ''
+}
+classDeclaration.__index = classDeclaration
+setmetatable(classDeclaration,classFeature)
+
+-- Create an unique variable name
+function create_varname ()
+ if not _varnumber then _varnumber = 0 end
+ _varnumber = _varnumber + 1
+ return "tolua_var_".._varnumber
+end
+
+-- Check declaration name
+-- It also identifies default values
+function classDeclaration:checkname ()
+
+ if strsub(self.name,1,1) == '[' and not findtype(self.type) then
+ self.name = self.type..self.name
+ local m = split(self.mod,'%s%s*')
+ self.type = m[m.n]
+ self.mod = concat(m,1,m.n-1)
+ end
+
+ local t = split(self.name,'=')
+ if t.n==2 then
+ self.name = t[1]
+ self.def = t[t.n]
+ end
+
+ local b,e,d = strfind(self.name,"%[(.-)%]")
+ if b then
+ self.name = strsub(self.name,1,b-1)
+ self.dim = d
+ end
+
+ if self.type ~= '' and self.type ~= 'void' and self.name == '' then
+ self.name = create_varname()
+ elseif self.kind=='var' then
+ if self.type=='' and self.name~='' then
+ self.type = self.type..self.name
+ self.name = create_varname()
+ elseif findtype(self.name) then
+ if self.type=='' then self.type = self.name
+ else self.type = self.type..' '..self.name end
+ self.name = create_varname()
+ end
+ end
+
+ -- adjust type of string
+-- if self.type == 'char' and self.dim ~= '' then
+-- self.type = 'char*'
+-- end
+end
+
+-- Check declaration type
+-- Substitutes typedef's.
+function classDeclaration:checktype ()
+
+ -- check if there is a pointer to basic type
+ if isbasic(self.type) and self.ptr~='' then
+ self.ret = self.ptr
+ self.ptr = nil
+ end
+
+ -- check if there is array to be returned
+ if self.dim~='' and self.ret~='' then
+ error('#invalid parameter: cannot return an array of values')
+ end
+
+ -- restore 'void*' and 'string*'
+ if self.type == '_userdata' then self.type = 'void*'
+ elseif self.type == '_cstring' then self.type = 'char*'
+ elseif self.type == '_lstate' then self.type = 'lua_State*'
+ end
+
+--
+-- -- if returning value, automatically set default value
+-- if self.ret ~= '' and self.def == '' then
+-- self.def = '0'
+-- end
+--
+
+end
+
+-- Print method
+function classDeclaration:print (ident,close)
+ print(ident.."Declaration{")
+ print(ident.." mod = '"..self.mod.."',")
+ print(ident.." type = '"..self.type.."',")
+ print(ident.." ptr = '"..self.ptr.."',")
+ print(ident.." name = '"..self.name.."',")
+ print(ident.." dim = '"..self.dim.."',")
+ print(ident.." def = '"..self.def.."',")
+ print(ident.." ret = '"..self.ret.."',")
+ print(ident.."}"..close)
+end
+
+-- check if array of values are returned to Lua
+function classDeclaration:requirecollection (t)
+ if self.mod ~= 'const' and
+ self.dim and self.dim ~= '' and
+ not isbasic(self.type) and
+ self.ptr == '' then
+ local type = gsub(self.type,"%s*const%s*","")
+ t[type] = "tolua_collect_" .. gsub(type,"::","_")
+ return true
+ end
+ return false
+end
+
+-- declare tag
+function classDeclaration:decltype ()
+ self.type = typevar(self.type)
+ if strfind(self.mod,'const') then
+ self.type = 'const '..self.type
+ self.mod = gsub(self.mod,'const%s*','')
+ end
+end
+
+
+-- output type checking
+function classDeclaration:outchecktype (narg,var)
+ local def
+ local t = isbasic(self.type)
+ if self.def~='' then
+ def = 1
+ else
+ def = 0
+ end
+ if self.dim ~= '' then
+ if var and self.type=='char' then
+ return 'tolua_isstring(tolua_S,'..narg..','..def..',&tolua_err)'
+ else
+ return 'tolua_istable(tolua_S,'..narg..',0,&tolua_err)'
+ end
+ elseif t then
+ return 'tolua_is'..t..'(tolua_S,'..narg..','..def..',&tolua_err)'
+ else
+ return 'tolua_isusertype(tolua_S,'..narg..',"'..self.type..'",'..def..',&tolua_err)'
+ end
+end
+
+function classDeclaration:builddeclaration (narg, cplusplus)
+ local array = self.dim ~= '' and tonumber(self.dim)==nil
+ local line = ""
+ local ptr = ''
+ local mod
+ local type = self.type
+ if self.dim ~= '' then
+ type = gsub(self.type,'const%s*','') -- eliminates const modifier for arrays
+ end
+ local ctype = type
+ if ctype=="lua_Object" or ctype=="lua_Function" then
+ ctype = "int"
+ end
+ if self.ptr~='' then ptr = '*' end
+ line = concatparam(line," ",self.mod,ctype,ptr)
+ if array then
+ line = concatparam(line,'*')
+ end
+ line = concatparam(line,self.name)
+ if self.dim ~= '' then
+ if tonumber(self.dim)~=nil then
+ line = concatparam(line,'[',self.dim,'];')
+ else
+ if cplusplus then
+ line = concatparam(line,' = new',type,ptr,'['..self.dim..'];')
+ else
+ line = concatparam(line,' = (',type,ptr,'*)',
+ 'malloc((',self.dim,')*sizeof(',type,ptr,'));')
+ end
+ end
+ else
+ local t = isbasic(type)
+ line = concatparam(line,' = ')
+ if t == 'state' then
+ line = concatparam(line, 'tolua_S;')
+ else
+ if not t and ptr=='' then line = concatparam(line,'*') end
+ local ct = type
+ if t == 'value' or t == 'function' then
+ ct = 'int'
+ end
+ line = concatparam(line,'((',self.mod,ct)
+ if not t then
+ line = concatparam(line,'*')
+ end
+ line = concatparam(line,') ')
+ if isenum(type) then
+ --if not t and isenum(type) then
+ line = concatparam(line,'(int) ')
+ end
+ local def = 0
+ if self.def ~= '' then def = self.def end
+ if t then
+ if t=='function' then t='value' end
+ if self.type == "tolua_index" then
+ line = concatparam(line,'tolua_to'..t,'(tolua_S,',narg,',',def,')-1);')
+ else
+ line = concatparam(line,'tolua_to'..t,'(tolua_S,',narg,',',def,'));')
+ end
+ else
+ line = concatparam(line,'tolua_tousertype(tolua_S,',narg,',',def,'));')
+ end
+ end
+ end
+ return line
+end
+
+-- Declare variable
+function classDeclaration:declare (narg)
+ if self.dim ~= '' and self.type~='char' and tonumber(self.dim)==nil then
+ output('#ifdef __cplusplus\n')
+ output(self:builddeclaration(narg,true))
+ output('#else\n')
+ output(self:builddeclaration(narg,false))
+ output('#endif\n')
+ else
+ output(self:builddeclaration(narg,false))
+ end
+end
+
+-- Get parameter value
+function classDeclaration:getarray (narg)
+ if self.dim ~= '' then
+ local type = gsub(self.type,'const ','')
+ output(' {')
+ output('#ifndef TOLUA_RELEASE\n')
+ local def; if self.def~='' then def=1 else def=0 end
+ local t = isbasic(type)
+ if (t) then
+ output(' if (!tolua_is'..t..'array(tolua_S,',narg,',',self.dim,',',def,',&tolua_err))')
+ else
+ output(' if (!tolua_isusertypearray(tolua_S,',narg,',"',type,'",',self.dim,',',def,',&tolua_err))')
+ end
+ output(' goto tolua_lerror;')
+ output(' else\n')
+ output('#endif\n')
+ output(' {')
+ output(' int i;')
+ output(' for(i=0; i<'..self.dim..';i++)')
+ local t = isbasic(type)
+ local ptr = ''
+ if self.ptr~='' then ptr = '*' end
+ output(' ',self.name..'[i] = ')
+ if not t and ptr=='' then output('*') end
+ output('((',type)
+ if not t then
+ output('*')
+ end
+ output(') ')
+ local def = 0
+ if self.def ~= '' then def = self.def end
+ if t then
+ if t=='function' then t='value' end
+ output('tolua_tofield'..t..'(tolua_S,',narg,',i+1,',def,'));')
+ else
+ output('tolua_tofieldusertype(tolua_S,',narg,',i+1,',def,'));')
+ end
+ output(' }')
+ output(' }')
+ end
+end
+
+-- Get parameter value
+function classDeclaration:setarray (narg)
+ if not strfind(self.type,'const') and self.dim ~= '' then
+ local type = gsub(self.type,'const ','')
+ output(' {')
+ output(' int i;')
+ output(' for(i=0; i<'..self.dim..';i++)')
+ local t,ct = isbasic(type)
+ if t then
+ if t=='function' then t='value' end
+ output(' tolua_pushfield'..t..'(tolua_S,',narg,',i+1,(',ct,')',self.name,'[i]);')
+ else
+ if self.ptr == '' then
+ output(' {')
+ output('#ifdef __cplusplus\n')
+ output(' void* tolua_obj = new',type,'(',self.name,'[i]);')
+ output(' tolua_pushfieldusertype(tolua_S,',narg,',i+1,tolua_clone(tolua_S,tolua_obj,'.. (_collect[type] or 'NULL') ..'),"',type,'");')
+ output('#else\n')
+ output(' void* tolua_obj = tolua_copy(tolua_S,(void*)&',self.name,'[i],sizeof(',type,'));')
+ output(' tolua_pushfieldusertype(tolua_S,',narg,',i+1,tolua_clone(tolua_S,tolua_obj,NULL),"',type,'");')
+ output('#endif\n')
+ output(' }')
+ else
+ output(' tolua_pushfieldusertype(tolua_S,',narg,',i+1,(void*)',self.name,'[i],"',type,'");')
+ end
+ end
+ output(' }')
+ end
+end
+
+-- Free dynamically allocated array
+function classDeclaration:freearray ()
+ if self.dim ~= '' and tonumber(self.dim)==nil then
+ output('#ifdef __cplusplus\n')
+ output(' delete []',self.name,';')
+ output('#else\n')
+ output(' free(',self.name,');')
+ output('#endif\n')
+ end
+end
+
+-- Pass parameter
+function classDeclaration:passpar ()
+ local name = self.name
+ if self.ptr=='&' then
+ output('*'..name)
+ elseif self.ret=='*' then
+ output('&'..name)
+ else
+ output(name)
+ end
+end
+
+-- Return parameter value
+function classDeclaration:retvalue ()
+ if self.ret ~= '' then
+ local t,ct = isbasic(self.type)
+ if t then
+ if t=='function' then t='value' end
+ if self.type=="tolua_index" then
+ output(' tolua_push'..t..'(tolua_S,(',ct,')'..self.name..'+1);')
+ else
+ output(' tolua_push'..t..'(tolua_S,(',ct,')'..self.name..');')
+ end
+ else
+ output(' tolua_pushusertype(tolua_S,(void*)'..self.name..',"',self.type,'");')
+ end
+ return 1
+ end
+ return 0
+end
+
+-- Internal constructor
+function _Declaration (t)
+ setmetatable(t,classDeclaration)
+ t:buildnames()
+ t:checkname()
+ t:checktype()
+ return t
+end
+
+-- Constructor
+-- Expects the string declaration.
+-- The kind of declaration can be "var" or "func".
+function Declaration (s,kind)
+ -- eliminate spaces if default value is provided
+ s = gsub(s,"%s*=%s*","=")
+
+ if kind == "var" then
+ -- check the form: void
+ if s == '' or s == 'void' then
+ return _Declaration{type = 'void', kind = kind}
+ end
+ end
+
+ -- check the form: mod type*& name
+ local t = split(s,'%*%s*&')
+ if t.n == 2 then
+ if kind == 'func' then
+ error("#invalid function return type: "..s)
+ end
+ local m = split(t[1],'%s%s*')
+ return _Declaration{
+ name = t[2],
+ ptr = '*',
+ ret = '&',
+ type = m[m.n],
+ mod = concat(m,1,m.n-1),
+ kind = kind
+ }
+ end
+
+ -- check the form: mod type** name
+ t = split(s,'%*%s*%*')
+ if t.n == 2 then
+ if kind == 'func' then
+ error("#invalid function return type: "..s)
+ end
+ local m = split(t[1],'%s%s*')
+ return _Declaration{
+ name = t[2],
+ ptr = '*',
+ ret = '*',
+ type = m[m.n],
+ mod = concat(m,1,m.n-1),
+ kind = kind
+ }
+ end
+
+ -- check the form: mod type& name
+ t = split(s,'&')
+ if t.n == 2 then
+ local m = split(t[1],'%s%s*')
+ return _Declaration{
+ name = t[2],
+ ptr = '&',
+ type = m[m.n],
+ mod = concat(m,1,m.n-1) ,
+ kind = kind
+ }
+ end
+
+ -- check the form: mod type* name
+ local s1 = gsub(s,"(%b%[%])",function (n) return gsub(n,'%*','\1') end)
+ t = split(s1,'%*')
+ if t.n == 2 then
+ t[2] = gsub(t[2],'\1','%*') -- restore * in dimension expression
+ local m = split(t[1],'%s%s*')
+ return _Declaration{
+ name = t[2],
+ ptr = '*',
+ type = m[m.n],
+ mod = concat(m,1,m.n-1) ,
+ kind = kind
+ }
+ end
+
+ if kind == 'var' then
+ -- check the form: mod type name
+ t = split(s,'%s%s*')
+ local v
+ if findtype(t[t.n]) then v = '' else v = t[t.n]; t.n = t.n-1 end
+ return _Declaration{
+ name = v,
+ type = t[t.n],
+ mod = concat(t,1,t.n-1),
+ kind = kind
+ }
+
+ else -- kind == "func"
+
+ -- check the form: mod type name
+ t = split(s,'%s%s*')
+ local v = t[t.n] -- last word is the function name
+ local tp,md
+ if t.n>1 then
+ tp = t[t.n-1]
+ md = concat(t,1,t.n-2)
+ end
+ return _Declaration{
+ name = v,
+ type = tp,
+ mod = md,
+ kind = kind
+ }
+ end
+
+end
+
diff --git a/tolua/src/bin/lua/define.lua b/tolua/src/bin/lua/define.lua
new file mode 100644
index 0000000..a903d2a
--- /dev/null
+++ b/tolua/src/bin/lua/define.lua
@@ -0,0 +1,58 @@
+-- tolua: define class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: define.lua,v 1.3 2009/11/24 16:45:13 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Define class
+-- Represents a numeric const definition
+-- The following filds are stored:
+-- name = constant name
+classDefine = {
+ name = '',
+}
+classDefine.__index = classDefine
+setmetatable(classDefine,classFeature)
+
+-- register define
+function classDefine:register ()
+ output(' tolua_constant(tolua_S,"'..self.lname..'",'..self.name..');')
+end
+
+-- Print method
+function classDefine:print (ident,close)
+ print(ident.."Define{")
+ print(ident.." name = '"..self.name.."',")
+ print(ident.." lname = '"..self.lname.."',")
+ print(ident.."}"..close)
+end
+
+
+-- Internal constructor
+function _Define (t)
+ setmetatable(t,classDefine)
+ t:buildnames()
+
+ if t.name == '' then
+ error("#invalid define")
+ end
+
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects a string representing the constant name
+function Define (n)
+ return _Define{
+ name = n
+ }
+end
+
+
diff --git a/tolua/src/bin/lua/doit.lua b/tolua/src/bin/lua/doit.lua
new file mode 100644
index 0000000..4050058
--- /dev/null
+++ b/tolua/src/bin/lua/doit.lua
@@ -0,0 +1,63 @@
+-- Generate binding code
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- Last update: Apr 2003
+-- $Id: doit.lua,v 1.3 2009/11/24 16:45:13 fabraham Exp $
+
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+function doit ()
+ -- define package name, if not provided
+ if not flags.n then
+ if flags.f then
+ flags.n = gsub(flags.f,"%..*","")
+ else
+ error("#no package name nor input file provided")
+ end
+ end
+
+ -- proccess package
+ local p = Package(flags.n,flags.f)
+
+ if flags.p then
+ return -- only parse
+ end
+
+ if flags.o then
+ local st,msg = writeto(flags.o)
+ if not st then
+ error('#'..msg)
+ end
+ end
+
+ p:decltype()
+ if flags.P then
+ p:print()
+ else
+ p:preamble()
+ p:supcode()
+ p:register()
+ end
+
+ if flags.o then
+ writeto()
+ end
+
+ -- write header file
+ if not flags.P then
+ if flags.H then
+ local st,msg = writeto(flags.H)
+ if not st then
+ error('#'..msg)
+ end
+ p:header()
+ writeto()
+ end
+ end
+end
+
diff --git a/tolua/src/bin/lua/enumerate.lua b/tolua/src/bin/lua/enumerate.lua
new file mode 100644
index 0000000..41ce314
--- /dev/null
+++ b/tolua/src/bin/lua/enumerate.lua
@@ -0,0 +1,83 @@
+-- tolua: enumerate class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: enumerate.lua,v 1.3 2009/11/24 16:45:13 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Enumerate class
+-- Represents enumeration
+-- The following fields are stored:
+-- {i} = list of constant names
+classEnumerate = {
+}
+classEnumerate.__index = classEnumerate
+setmetatable(classEnumerate,classFeature)
+
+-- register enumeration
+function classEnumerate:register ()
+ local nspace = getnamespace(classContainer.curr)
+ local i=1
+ while self[i] do
+ output(' tolua_constant(tolua_S,"'..self.lnames[i]..'",'..nspace..self[i]..');')
+ i = i+1
+ end
+end
+
+-- Print method
+function classEnumerate:print (ident,close)
+ print(ident.."Enumerate{")
+ print(ident.." name = "..self.name)
+ local i=1
+ while self[i] do
+ print(ident.." '"..self[i].."'("..self.lnames[i].."),")
+ i = i+1
+ end
+ print(ident.."}"..close)
+end
+
+-- Internal constructor
+function _Enumerate (t)
+ setmetatable(t,classEnumerate)
+ append(t)
+ appendenum(t)
+ return t
+end
+
+-- Constructor
+-- Expects a string representing the enumerate body
+function Enumerate (n,b)
+ local t = split(strsub(b,2,-2),',') -- eliminate braces
+ local i = 1
+ local e = {n=0}
+ while t[i] do
+ local tt = split(t[i],'=') -- discard initial value
+ e.n = e.n + 1
+ e[e.n] = tt[1]
+ i = i+1
+ end
+ -- set lua names
+ i = 1
+ e.lnames = {}
+ while e[i] do
+ local t = split(e[i],'@')
+ e[i] = t[1]
+ if not t[2] then
+ t[2] = applyrenaming(t[1])
+ end
+ e.lnames[i] = t[2] or t[1]
+ i = i+1
+ end
+ e.name = n
+ if n~="" then
+ Typedef("int "..n)
+ end
+ return _Enumerate(e)
+end
+
+
diff --git a/tolua/src/bin/lua/feature.lua b/tolua/src/bin/lua/feature.lua
new file mode 100644
index 0000000..dbf76ca
--- /dev/null
+++ b/tolua/src/bin/lua/feature.lua
@@ -0,0 +1,101 @@
+-- tolua: abstract feature class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: feature.lua,v 1.3 2009/11/24 16:45:14 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Feature class
+-- Represents the base class of all mapped feature.
+classFeature = {
+}
+classFeature.__index = classFeature
+
+-- write support code
+function classFeature:supcode ()
+end
+
+-- output tag
+function classFeature:decltype ()
+end
+
+-- register feature
+function classFeature:register ()
+end
+
+-- translate verbatim
+function classFeature:preamble ()
+end
+
+-- check if it is a variable
+function classFeature:isvariable ()
+ return false
+end
+
+-- checi if it requires collection
+function classFeature:requirecollection (t)
+ return false
+end
+
+-- build names
+function classFeature:buildnames ()
+ if self.name and self.name~='' then
+ local n = split(self.name,'@')
+ self.name = n[1]
+ if not n[2] then
+ n[2] = applyrenaming(n[1])
+ end
+ self.lname = n[2] or gsub(n[1],"%[.-%]","")
+ end
+ self.name = getonlynamespace() .. self.name
+end
+
+
+-- check if feature is inside a container definition
+-- it returns the container class name or nil.
+function classFeature:incontainer (which)
+ if self.parent then
+ local parent = self.parent
+ while parent do
+ if parent.classtype == which then
+ return parent.name
+ end
+ parent = parent.parent
+ end
+ end
+ return nil
+end
+
+function classFeature:inclass ()
+ return self:incontainer('class')
+end
+
+function classFeature:inmodule ()
+ return self:incontainer('module')
+end
+
+function classFeature:innamespace ()
+ return self:incontainer('namespace')
+end
+
+-- return C binding function name based on name
+-- the client specifies a prefix
+function classFeature:cfuncname (n)
+ if self.parent then
+ n = self.parent:cfuncname(n)
+ end
+
+ if self.lname and
+ strsub(self.lname,1,1)~="." -- operator are named as ".add"
+ then
+ return n..'_'..self.lname
+ else
+ return n..'_'..self.name
+ end
+end
+
diff --git a/tolua/src/bin/lua/function.lua b/tolua/src/bin/lua/function.lua
new file mode 100644
index 0000000..8fb5cc4
--- /dev/null
+++ b/tolua/src/bin/lua/function.lua
@@ -0,0 +1,386 @@
+-- tolua: function class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: function.lua,v 1.4 2009/11/24 16:45:14 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+
+-- Function class
+-- Represents a function or a class method.
+-- The following fields are stored:
+-- mod = type modifiers
+-- type = type
+-- ptr = "*" or "&", if representing a pointer or a reference
+-- name = name
+-- lname = lua name
+-- args = list of argument declarations
+-- const = if it is a method receiving a const "this".
+classFunction = {
+ mod = '',
+ type = '',
+ ptr = '',
+ name = '',
+ args = {n=0},
+ const = '',
+}
+classFunction.__index = classFunction
+setmetatable(classFunction,classFeature)
+
+-- declare tags
+function classFunction:decltype ()
+ self.type = typevar(self.type)
+ if strfind(self.mod,'const') then
+ self.type = 'const '..self.type
+ self.mod = gsub(self.mod,'const%s*','')
+ end
+ local i=1
+ while self.args[i] do
+ self.args[i]:decltype()
+ i = i+1
+ end
+end
+
+
+-- Write binding function
+-- Outputs C/C++ binding function.
+function classFunction:supcode ()
+ local overload = strsub(self.cname,-2,-1) - 1 -- indicate overloaded func
+ local nret = 0 -- number of returned values
+ local class = self:inclass()
+ local _,_,static = strfind(self.mod,'^%s*(static)')
+
+ if class then
+ output("/* method:",self.name," of class ",class," */")
+ else
+ output("/* function:",self.name," */")
+ end
+ output("static int",self.cname,"(lua_State* tolua_S)")
+ output("{")
+
+ -- check types
+ if overload < 0 then
+ output('#ifndef TOLUA_RELEASE\n')
+ end
+ output(' tolua_Error tolua_err;')
+ output(' if (\n')
+ -- check self
+ local narg
+ if class then narg=2 else narg=1 end
+ if class then
+ local func = 'tolua_isusertype'
+ local type = self.parent.type
+ if self.const ~= '' then
+ type = self.const .. " " .. type
+ end
+ if self.name=='new' or static~=nil then
+ func = 'tolua_isusertable'
+ type = self.parent.type
+ end
+ output(' !'..func..'(tolua_S,1,"'..type..'",0,&tolua_err) || \n')
+ end
+ -- check args
+ local vararg = false
+ if self.args[1].type ~= 'void' then
+ local i=1
+ while self.args[i] and self.args[i].type ~= "..." do
+ local btype = isbasic(self.args[i].type)
+ if btype ~= 'state' then
+ output(' !'..self.args[i]:outchecktype(narg,false)..' || \n')
+ end
+ if btype ~= 'state' then
+ narg = narg+1
+ end
+ i = i+1
+ end
+ if self.args[i] then
+ vararg = true
+ end
+ end
+ -- check end of list
+ if not vararg then
+ output(' !tolua_isnoobj(tolua_S,'..narg..',&tolua_err)\n')
+ else
+ output(' 0\n')
+ end
+ output(' )')
+ output(' goto tolua_lerror;')
+
+ output(' else\n')
+ if overload < 0 then
+ output('#endif\n')
+ end
+ output(' {')
+
+ -- declare self, if the case
+ local narg
+ if class then narg=2 else narg=1 end
+ if class and self.name~='new' and static==nil then
+ output(' ',self.const,self.parent.type,'*','self = ')
+ output('(',self.const,self.parent.type,'*) ')
+ output('tolua_tousertype(tolua_S,1,0);')
+ elseif static then
+ _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
+ end
+ -- declare parameters
+ if self.args[1].type ~= 'void' then
+ local i=1
+ while self.args[i] and self.args[i].type ~= "..." do
+ self.args[i]:declare(narg)
+ if isbasic(self.args[i].type) ~= "state" then
+ narg = narg+1
+ end
+ i = i+1
+ end
+ end
+
+ -- check self
+ if class and self.name~='new' and static==nil then
+ output('#ifndef TOLUA_RELEASE\n')
+ output(' if (!self) tolua_error(tolua_S,"invalid \'self\' in function \''..self.name..'\'",NULL);');
+ output('#endif\n')
+ end
+
+ -- get array element values
+ if class then narg=2 else narg=1 end
+ if self.args[1].type ~= 'void' then
+ local i=1
+ while self.args[i] and self.args[i].type ~= "..." do
+ if isbasic(self.args[i].type) ~= "state" then
+ self.args[i]:getarray(narg)
+ narg = narg+1
+ end
+ i = i+1
+ end
+ end
+
+ -- call function
+ if class and self.name=='delete' then
+ output(' tolua_release(tolua_S,self);')
+ output(' delete self;')
+ elseif class and self.name == 'operator&[]' then
+ output(' self->operator[](',self.args[1].name,'-1) = ',self.args[2].name,';')
+ else
+ output(' {')
+ if self.type ~= '' and self.type ~= 'void' then
+ local ctype = self.type
+ if ctype == 'value' or ctype == 'function' then
+ ctype = 'int'
+ end
+ output(' ',self.mod,ctype,self.ptr,'tolua_ret = ')
+ if isbasic(self.type) or self.ptr ~= '' then
+ output('(',self.mod,ctype,self.ptr,') ')
+ end
+ else
+ output(' ')
+ end
+ if class and self.name=='new' then
+ output('new',self.type,'(')
+ elseif class and static then
+ output(class..'::'..self.name,'(')
+ elseif class then
+ output('self->'..self.name,'(')
+ else
+ output(self.name,'(')
+ end
+
+ -- write parameters
+ local i=1
+ while self.args[i] and self.args[i].type ~= "..." do
+ self.args[i]:passpar()
+ i = i+1
+ if self.args[i] and self.args[i].type ~= "..." then
+ output(',')
+ end
+ end
+
+ if class and self.name == 'operator[]' then
+ output('-1);')
+ else
+ output(');')
+ end
+
+ -- return values
+ if self.type ~= '' and self.type ~= 'void' then
+ nret = nret + 1
+ local t,ct = isbasic(self.type)
+ if t then
+ if t=='function' then t='value' end
+ if self.type == 'tolua_index' then
+ output(' if (tolua_ret < 0) lua_pushnil(tolua_S);')
+ output(' else tolua_push'..t..'(tolua_S,(',ct,')tolua_ret+1);')
+ else
+ output(' tolua_push'..t..'(tolua_S,(',ct,')tolua_ret);')
+ end
+ else
+ t = self.type
+ if self.ptr == '' then
+ output(' {')
+ output('#ifdef __cplusplus\n')
+ output(' void* tolua_obj = new',t,'(tolua_ret);')
+ output(' tolua_pushusertype(tolua_S,tolua_clone(tolua_S,tolua_obj,'.. (_collect[t] or 'NULL') ..'),"',t,'");')
+ output('#else\n')
+ output(' void* tolua_obj = tolua_copy(tolua_S,(void*)&tolua_ret,sizeof(',t,'));')
+ output(' tolua_pushusertype(tolua_S,tolua_clone(tolua_S,tolua_obj,NULL),"',t,'");')
+ output('#endif\n')
+ output(' }')
+ elseif self.ptr == '&' then
+ output(' tolua_pushusertype(tolua_S,(void*)&tolua_ret,"',t,'");')
+ else
+ output(' tolua_pushusertype(tolua_S,(void*)tolua_ret,"',t,'");')
+ if self.mod == 'tolua_own' then
+ output(' lua_pushcfunction(tolua_S, tolua_bnd_takeownership);')
+ output(' lua_pushvalue(tolua_S, -2);')
+ output(' lua_call(tolua_S, 1, 0);')
+ end
+ end
+ end
+ end
+ local i=1
+ while self.args[i] do
+ nret = nret + self.args[i]:retvalue()
+ i = i+1
+ end
+ output(' }')
+
+ -- set array element values
+ if class then narg=2 else narg=1 end
+ if self.args[1].type ~= 'void' then
+ local i=1
+ while self.args[i] do
+ if isbasic(self.args[i].type) ~= "state" then
+ self.args[i]:setarray(narg)
+ narg = narg+1
+ end
+ i = i+1
+ end
+ end
+
+ -- free dynamically allocated array
+ if self.args[1].type ~= 'void' then
+ local i=1
+ while self.args[i] do
+ self.args[i]:freearray()
+ i = i+1
+ end
+ end
+ end
+
+ output(' }')
+ output(' return '..nret..';')
+
+ -- call overloaded function or generate error
+ if overload < 0 then
+ output('#ifndef TOLUA_RELEASE\n')
+ output('tolua_lerror:\n')
+ output(' tolua_error(tolua_S,"#ferror in function \''..self.lname..'\'.",&tolua_err);')
+ output(' return 0;')
+ output('#endif\n')
+ else
+ output('tolua_lerror:\n')
+ output(' return '..strsub(self.cname,1,-3)..format("%02d",overload)..'(tolua_S);')
+ end
+ output('}')
+ output('\n')
+end
+
+
+-- register function
+function classFunction:register ()
+ output(' tolua_function(tolua_S,"'..self.lname..'",'..self.cname..');')
+end
+
+-- Print method
+function classFunction:print (ident,close)
+ print(ident.."Function{")
+ print(ident.." mod = '"..self.mod.."',")
+ print(ident.." type = '"..self.type.."',")
+ print(ident.." ptr = '"..self.ptr.."',")
+ print(ident.." name = '"..self.name.."',")
+ print(ident.." lname = '"..self.lname.."',")
+ print(ident.." const = '"..self.const.."',")
+ print(ident.." cname = '"..self.cname.."',")
+ print(ident.." lname = '"..self.lname.."',")
+ print(ident.." args = {")
+ local i=1
+ while self.args[i] do
+ self.args[i]:print(ident.." ",",")
+ i = i+1
+ end
+ print(ident.." }")
+ print(ident.."}"..close)
+end
+
+-- check if it returns a object by value
+function classFunction:requirecollection (t)
+ local r = false
+ if self.type ~= '' and not isbasic(self.type) and self.ptr=='' then
+ local type = gsub(self.type,"%s*const%s*","")
+ t[type] = "tolua_collect_" .. gsub(type,"::","_")
+ r = true
+ end
+ local i=1
+ while self.args[i] do
+ r = self.args[i]:requirecollection(t) or r
+ i = i+1
+ end
+ return r
+end
+
+-- determine lua function name overload
+function classFunction:overload ()
+ return self.parent:overload(self.lname)
+end
+
+
+
+-- Internal constructor
+function _Function (t)
+ setmetatable(t,classFunction)
+
+ if t.const ~= 'const' and t.const ~= '' then
+ error("#invalid 'const' specification")
+ end
+
+ append(t)
+ if t:inclass() then
+ if t.name == t.parent.name then
+ t.name = 'new'
+ t.lname = 'new'
+ t.type = t.parent.name
+ t.ptr = '*'
+ elseif t.name == '~'..t.parent.name then
+ t.name = 'delete'
+ t.lname = 'delete'
+ t.parent._delete = true
+ end
+ end
+ t.cname = t:cfuncname("tolua")..t:overload(t)
+ return t
+end
+
+-- Constructor
+-- Expects three strings: one representing the function declaration,
+-- another representing the argument list, and the third representing
+-- the "const" or empty string.
+function Function (d,a,c)
+ local t = split(strsub(a,2,-2),',') -- eliminate braces
+ local i=1
+ local l = {n=0}
+ while t[i] do
+ l.n = l.n+1
+ l[l.n] = Declaration(t[i],'var')
+ i = i+1
+ end
+ local f = Declaration(d,'func')
+ f.args = l
+ f.const = c
+ return _Function(f)
+end
+
+
diff --git a/tolua/src/bin/lua/module.lua b/tolua/src/bin/lua/module.lua
new file mode 100644
index 0000000..10d541b
--- /dev/null
+++ b/tolua/src/bin/lua/module.lua
@@ -0,0 +1,67 @@
+-- tolua: module class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: module.lua,v 1.3 2009/11/24 16:45:14 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+
+-- Module class
+-- Represents module.
+-- The following fields are stored:
+-- {i} = list of objects in the module.
+classModule = {
+ classtype = 'module'
+}
+classModule.__index = classModule
+setmetatable(classModule,classContainer)
+
+-- register module
+function classModule:register ()
+ push(self)
+ output(' tolua_module(tolua_S,"'..self.name..'",',self:hasvar(),');')
+ output(' tolua_beginmodule(tolua_S,"'..self.name..'");')
+ local i=1
+ while self[i] do
+ self[i]:register()
+ i = i+1
+ end
+ output(' tolua_endmodule(tolua_S);')
+ pop()
+end
+
+-- Print method
+function classModule:print (ident,close)
+ print(ident.."Module{")
+ print(ident.." name = '"..self.name.."';")
+ local i=1
+ while self[i] do
+ self[i]:print(ident.." ",",")
+ i = i+1
+ end
+ print(ident.."}"..close)
+end
+
+-- Internal constructor
+function _Module (t)
+ setmetatable(t,classModule)
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects two string representing the module name and body.
+function Module (n,b)
+ local t = _Module(_Container{name=n})
+ push(t)
+ t:parse(strsub(b,2,strlen(b)-1)) -- eliminate braces
+ pop()
+ return t
+end
+
+
diff --git a/tolua/src/bin/lua/namespace.lua b/tolua/src/bin/lua/namespace.lua
new file mode 100644
index 0000000..572a8dc
--- /dev/null
+++ b/tolua/src/bin/lua/namespace.lua
@@ -0,0 +1,52 @@
+-- tolua: namespace class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 2003
+-- $Id: namespace.lua,v 1.3 2009/11/24 16:45:14 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Namespace class
+-- Represents a namesapce definition.
+-- Stores the following fields:
+-- name = class name
+-- {i} = list of members
+classNamespace = {
+ classtype = 'namespace',
+ name = '',
+}
+classNamespace.__index = classNamespace
+setmetatable(classNamespace,classModule)
+
+-- Print method
+function classNamespace:print (ident,close)
+ print(ident.."Namespace{")
+ print(ident.." name = '"..self.name.."',")
+ local i=1
+ while self[i] do
+ self[i]:print(ident.." ",",")
+ i = i+1
+ end
+ print(ident.."}"..close)
+end
+
+-- Internal constructor
+function _Namespace (t)
+ setmetatable(t,classNamespace)
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects the name and the body of the namespace.
+function Namespace (n,b)
+ local c = _Namespace(_Container{name=n})
+ push(c)
+ c:parse(strsub(b,2,strlen(b)-1)) -- eliminate braces
+ pop()
+end
+
diff --git a/tolua/src/bin/lua/operator.lua b/tolua/src/bin/lua/operator.lua
new file mode 100644
index 0000000..822fe83
--- /dev/null
+++ b/tolua/src/bin/lua/operator.lua
@@ -0,0 +1,113 @@
+-- tolua: operator class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: operator.lua,v 1.3 2009/11/24 16:45:14 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Operator class
+-- Represents an operator function or a class operator method.
+-- It stores the same fields as functions do plus:
+-- kind = set of character representing the operator (as it appers in C++ code)
+classOperator = {
+ kind = '',
+}
+classOperator.__index = classOperator
+setmetatable(classOperator,classFunction)
+
+-- table to transform operator kind into the appropriate tag method name
+_TM = {['+'] = 'add',
+ ['-'] = 'sub',
+ ['*'] = 'mul',
+ ['/'] = 'div',
+ ['<'] = 'lt',
+ ['<='] = 'le',
+ ['=='] = 'eq',
+ ['[]'] = 'geti',
+ ['&[]'] = 'seti',
+ }
+
+
+-- Print method
+function classOperator:print (ident,close)
+ print(ident.."Operator{")
+ print(ident.." kind = '"..self.kind.."',")
+ print(ident.." mod = '"..self.mod.."',")
+ print(ident.." type = '"..self.type.."',")
+ print(ident.." ptr = '"..self.ptr.."',")
+ print(ident.." name = '"..self.name.."',")
+ print(ident.." const = '"..self.const.."',")
+ print(ident.." cname = '"..self.cname.."',")
+ print(ident.." lname = '"..self.lname.."',")
+ print(ident.." args = {")
+ local i=1
+ while self.args[i] do
+ self.args[i]:print(ident.." ",",")
+ i = i+1
+ end
+ print(ident.." }")
+ print(ident.."}"..close)
+end
+
+-- Internal constructor
+function _Operator (t)
+ setmetatable(t,classOperator)
+
+ if t.const ~= 'const' and t.const ~= '' then
+ error("#invalid 'const' specification")
+ end
+
+ append(t)
+ if not t:inclass() then
+ error("#operator can only be defined as class member")
+ end
+
+ t.name = t.name .. "_" .. _TM[t.kind]
+ t.cname = t:cfuncname("tolua")..t:overload(t)
+ t.name = "operator" .. t.kind -- set appropriate calling name
+ return t
+end
+
+-- Constructor
+function Operator (d,k,a,c)
+ local ref = ''
+ local t = split(strsub(a,2,strlen(a)-1),',') -- eliminate braces
+ local i=1
+ local l = {n=0}
+ while t[i] do
+ l.n = l.n+1
+ l[l.n] = Declaration(t[i],'var')
+ i = i+1
+ end
+ if k == '[]' then
+ local _
+ _, _, ref = strfind(d,'(&)')
+ d = gsub(d,'&','')
+ elseif k=='&[]' then
+ l.n = l.n+1
+ l[l.n] = Declaration(d,'var')
+ l[l.n].name = 'tolua_value'
+ end
+ local f = Declaration(d,'func')
+ if k == '[]' and (l[1]==nil or isbasic(l[1].type)~='number') then
+ error('operator[] can only be defined for numeric index.')
+ end
+ f.args = l
+ f.const = c
+ f.kind = gsub(k,"%s","")
+ if not _TM[f.kind] then
+ error("tolua: no support for operator" .. f.kind)
+ end
+ f.lname = ".".._TM[f.kind]
+ if f.kind == '[]' and ref=='&' and f.const~='const' then
+ Operator(d,'&'..k,a,c) -- create correspoding set operator
+ end
+ return _Operator(f)
+end
+
+
diff --git a/tolua/src/bin/lua/package.lua b/tolua/src/bin/lua/package.lua
new file mode 100644
index 0000000..d0a7b08
--- /dev/null
+++ b/tolua/src/bin/lua/package.lua
@@ -0,0 +1,280 @@
+-- tolua: package class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: package.lua,v 1.4 2009/11/24 16:45:15 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+
+-- Package class
+-- Represents the whole package being bound.
+-- The following fields are stored:
+-- {i} = list of objects in the package.
+classPackage = {
+ classtype = 'package'
+}
+classPackage.__index = classPackage
+setmetatable(classPackage,classContainer)
+
+-- Print method
+function classPackage:print ()
+ print("Package: "..self.name)
+ local i=1
+ while self[i] do
+ self[i]:print("","")
+ i = i+1
+ end
+end
+
+function classPackage:preprocess ()
+ -- avoid preprocessing embedded Lua code
+ local L = {}
+ self.code = gsub(self.code,"\n%s*%$%[","\1") -- deal with embedded C code
+ self.code = gsub(self.code,"\n%s*%$%]","\2")
+ self.code = gsub(self.code,"(%b\1\2)", function (c)
+ tinsert(L,c)
+ return "\n#["..getn(L).."]#"
+ end)
+ -- avoid preprocessing embedded C code
+ local C = {}
+ self.code = gsub(self.code,"\n%s*%$%<","\3") -- deal with embedded C code
+ self.code = gsub(self.code,"\n%s*%$%>","\4")
+ self.code = gsub(self.code,"(%b\3\4)", function (c)
+ tinsert(C,c)
+ return "\n#<"..getn(C)..">#"
+ end)
+
+ -- avoid preprocessing verbatim lines
+ local V = {}
+ self.code = gsub(self.code,"\n(%s*%$[^%[%]][^\n]*)",function (v)
+ tinsert(V,v)
+ return "\n#"..getn(V).."#"
+ end)
+ -- perform global substitution
+
+ self.code = gsub(self.code,"(//[^\n]*)","") -- eliminate C++ comments
+ self.code = gsub(self.code,"/%*","\1")
+ self.code = gsub(self.code,"%*/","\2")
+ self.code = gsub(self.code,"%b\1\2","")
+ self.code = gsub(self.code,"\1","/%*")
+ self.code = gsub(self.code,"\2","%*/")
+ self.code = gsub(self.code,"%s*@%s*","@") -- eliminate spaces beside @
+ self.code = gsub(self.code,"%s?inline(%s)","%1") -- eliminate 'inline' keyword
+ self.code = gsub(self.code,"%s?extern(%s)","%1") -- eliminate 'extern' keyword
+ self.code = gsub(self.code,"%s?virtual(%s)","%1") -- eliminate 'virtual' keyword
+ self.code = gsub(self.code,"public:","") -- eliminate 'public:' keyword
+ self.code = gsub(self.code,"([^%w_])void%s*%*","%1_userdata ") -- substitute 'void*'
+ self.code = gsub(self.code,"([^%w_])void%s*%*","%1_userdata ") -- substitute 'void*'
+ self.code = gsub(self.code,"([^%w_])char%s*%*","%1_cstring ") -- substitute 'char*'
+ self.code = gsub(self.code,"([^%w_])lua_State%s*%*","%1_lstate ") -- substitute 'lua_State*'
+
+ -- restore embedded code
+ self.code = gsub(self.code,"%#%[(%d+)%]%#",function (n)
+ return L[tonumber(n)]
+ end)
+ -- restore embedded code
+ self.code = gsub(self.code,"%#%<(%d+)%>%#",function (n)
+ return C[tonumber(n)]
+ end)
+ -- restore verbatim lines
+ self.code = gsub(self.code,"%#(%d+)%#",function (n)
+ return V[tonumber(n)]
+ end)
+end
+
+-- translate verbatim
+function classPackage:preamble ()
+ output('/*\n')
+ output('** Lua binding: '..self.name..'\n')
+-- fred: removido porque gera trabalho na hora de fazer diffs
+-- output('** Generated automatically by '..TOLUA_VERSION..' on '..date()..'.\n')
+ output('*/\n\n')
+
+ output('#include "tolua.h"\n\n')
+ output('#ifndef __cplusplus\n')
+ output('#include <stdlib.h>\n')
+ output('#endif\n')
+ output('#ifdef __cplusplus\n')
+ output('extern "C" int tolua_bnd_takeownership (lua_State* L); // from tolua_map.c\n')
+ output('#else\n')
+ output('int tolua_bnd_takeownership (lua_State* L); /* from tolua_map.c */\n')
+ output('#endif\n')
+ output('#include <string.h>\n\n')
+
+ if not flags.h then
+ output('/* Exported function */')
+ output('TOLUA_API int tolua_'..self.name..'_open (lua_State* tolua_S);')
+ output('LUALIB_API int luaopen_'..self.name..' (lua_State* tolua_S);')
+ output('\n')
+ end
+
+ local i=1
+ while self[i] do
+ self[i]:preamble()
+ i = i+1
+ end
+
+
+
+ if self:requirecollection(_collect) then
+ output('\n')
+ output('/* function to release collected object via destructor */')
+ output('#ifdef __cplusplus\n')
+ for i,v in pairs(_collect) do
+ output('\nstatic int '..v..' (lua_State* tolua_S)')
+ output('{')
+ output(' '..i..'* self = ('..i..'*) tolua_tousertype(tolua_S,1,0);')
+ output(' tolua_release(tolua_S,self);')
+ output(' delete self;')
+ output(' return 0;')
+ output('}')
+ end
+ output('#endif\n\n')
+ end
+
+ output('\n')
+ output('/* function to register type */')
+ output('static void tolua_reg_types (lua_State* tolua_S)')
+ output('{')
+ foreach(_usertype,function(n,v) output(' tolua_usertype(tolua_S,"',v,'");') end)
+ output('}')
+ output('\n')
+end
+
+-- register package
+-- write package open function
+function classPackage:register ()
+ push(self)
+
+ output("/* Open lib function */")
+ output('LUALIB_API int luaopen_'..self.name..' (lua_State* tolua_S)')
+ output("{")
+ output(" tolua_open(tolua_S);")
+ output(" tolua_reg_types(tolua_S);")
+ output(" tolua_module(tolua_S,NULL,",self:hasvar(),");")
+ output(" tolua_beginmodule(tolua_S,NULL);")
+ local i=1
+ while self[i] do
+ self[i]:register()
+ i = i+1
+ end
+ output(" tolua_endmodule(tolua_S);")
+ output(" return 1;")
+ output("}")
+
+ output("/* Open tolua function */")
+ output("TOLUA_API int tolua_"..self.name.."_open (lua_State* tolua_S)")
+ output("{")
+ output(" lua_pushcfunction(tolua_S, luaopen_"..self.name..");")
+ output(' lua_pushstring(tolua_S, "'..self.name..'");')
+ output(" lua_call(tolua_S, 1, 0);")
+ output(" return 1;")
+ output("}")
+
+ pop()
+end
+
+-- write header file
+function classPackage:header ()
+ output('/*\n') output('** Lua binding: '..self.name..'\n')
+ output('** Generated automatically by '..TOLUA_VERSION..' on '..date()..'.\n')
+ output('*/\n\n')
+
+ if not flags.h then
+ output('/* Exported function */')
+ output('TOLUA_API int tolua_'..self.name..'_open (lua_State* tolua_S);')
+ output('LUALIB_API int luaopen_'..self.name..' (lua_State* tolua_S);')
+ output('\n')
+ end
+end
+
+-- Internal constructor
+function _Package (self)
+ setmetatable(self,classPackage)
+ return self
+end
+
+-- Parse C header file with tolua directives
+-- *** Thanks to Ariel Manzur for fixing bugs in nested directives ***
+function extract_code(fn,s)
+ local code = '\n$#include "'..fn..'"\n'
+ s= "\n" .. s .. "\n" -- add blank lines as sentinels
+ local _,e,c,t = strfind(s, "\n([^\n]-)[Tt][Oo][Ll][Uu][Aa]_([^%s]*)[^\n]*\n")
+ while e do
+ t = strlower(t)
+ if t == "begin" then
+ _,e,c = strfind(s,"(.-)\n[^\n]*[Tt][Oo][Ll][Uu][Aa]_[Ee][Nn][Dd][^\n]*\n",e)
+ if not e then
+ tolua_error("Unbalanced 'tolua_begin' directive in header file")
+ end
+ end
+ code = code .. c .. "\n"
+ _,e,c,t = strfind(s, "\n([^\n]-)[Tt][Oo][Ll][Uu][Aa]_([^%s]*)[^\n]*\n",e)
+ end
+ return code
+end
+
+-- Constructor
+-- Expects the package name, the file extension, and the file text.
+function Package (name,fn)
+ local ext = "pkg"
+
+ -- open input file, if any
+ if fn then
+ local st, msg = readfrom(flags.f)
+ if not st then
+ error('#'..msg)
+ end
+ local _; _, _, ext = strfind(fn,".*%.(.*)$")
+ end
+ local code = "\n" .. read('*a')
+ if ext == 'h' or ext == 'hpp' then
+ code = extract_code(fn,code)
+ end
+
+ -- close file
+ if fn then
+ readfrom()
+ end
+
+ -- deal with renaming directive
+ code = gsub(code,'%s*%$renaming%s*(.-)%s*\n', function (r) appendrenaming(r) return "\n" end)
+
+ -- deal with include directive
+ local nsubst
+ repeat
+ code,nsubst = gsub(code,'\n%s*%$(.)file%s*"(.-)"%s*\n',
+ function (kind,fn)
+ local _, _, ext = strfind(fn,".*%.(.*)$")
+ local fp,msg = openfile(fn,'r')
+ if not fp then
+ error('#'..msg..': '..fn)
+ end
+ local s = read(fp,'*a')
+ closefile(fp)
+ if kind == 'c' or kind == 'h' then
+ return extract_code(fn,s)
+ elseif kind == 'p' then
+ return "\n\n" .. s
+ elseif kind == 'l' then
+ return "\n$[\n" .. s .. "\n$]\n"
+ else
+ error('#Invalid include directive (use $cfile, $pfile or $lfile)')
+ end
+ end)
+ until nsubst==0
+
+ local t = _Package(_Container{name=name, code=code})
+ push(t)
+ t:preprocess()
+ t:parse(t.code)
+ pop()
+ return t
+end
+
+
diff --git a/tolua/src/bin/lua/typedef.lua b/tolua/src/bin/lua/typedef.lua
new file mode 100644
index 0000000..e7b4bc9
--- /dev/null
+++ b/tolua/src/bin/lua/typedef.lua
@@ -0,0 +1,68 @@
+-- tolua: typedef class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: typedef.lua,v 1.3 2009/11/24 16:45:15 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+
+-- Typedef class
+-- Represents a type synonym.
+-- The 'de facto' type replaces the typedef before the
+-- remaining code is parsed.
+-- The following fields are stored:
+-- utype = typedef name
+-- type = 'the facto' type
+-- mod = modifiers to the 'de facto' type
+classTypedef = {
+ utype = '',
+ mod = '',
+ type = ''
+}
+classTypedef.__index = classTypedef
+
+-- Print method
+function classTypedef:print (ident,close)
+ print(ident.."Typedef{")
+ print(ident.." utype = '"..self.utype.."',")
+ print(ident.." mod = '"..self.mod.."',")
+ print(ident.." type = '"..self.type.."',")
+ print(ident.."}"..close)
+end
+
+-- Return it's not a variable
+function classTypedef:isvariable ()
+ return false
+end
+
+-- Internal constructor
+function _Typedef (t)
+ setmetatable(t,classTypedef)
+ appendtypedef(t)
+ return t
+end
+
+-- Constructor
+-- Expects one string representing the type definition.
+function Typedef (s)
+ if strfind(s,'[%*&]') then
+ tolua_error("#invalid typedef: pointers (and references) are not supported")
+ end
+ local t = split(gsub(s,"%s%s*"," ")," ")
+ if not isbasic(t[t.n]) then
+ return _Typedef {
+ utype = t[t.n],
+ type = t[t.n-1],
+ mod = concat(t,1,t.n-2),
+ }
+ else
+ return nil
+ end
+end
+
+
diff --git a/tolua/src/bin/lua/variable.lua b/tolua/src/bin/lua/variable.lua
new file mode 100644
index 0000000..517a91c
--- /dev/null
+++ b/tolua/src/bin/lua/variable.lua
@@ -0,0 +1,253 @@
+-- tolua: variable class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: variable.lua,v 1.3 2009/11/24 16:45:15 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+-- Variable class
+-- Represents a extern variable or a public member of a class.
+-- Stores all fields present in a declaration.
+classVariable = {
+ _get = {}, -- mapped get functions
+ _set = {}, -- mapped set functions
+}
+classVariable.__index = classVariable
+setmetatable(classVariable,classDeclaration)
+
+-- Print method
+function classVariable:print (ident,close)
+ print(ident.."Variable{")
+ print(ident.." mod = '"..self.mod.."',")
+ print(ident.." type = '"..self.type.."',")
+ print(ident.." ptr = '"..self.ptr.."',")
+ print(ident.." name = '"..self.name.."',")
+ if self.dim then print(ident.." dim = '"..self.dim.."',") end
+ print(ident.." def = '"..self.def.."',")
+ print(ident.." ret = '"..self.ret.."',")
+ print(ident.."}"..close)
+end
+
+-- Generates C function name
+function classVariable:cfuncname (prefix)
+ local parent = ""
+ local unsigned = ""
+ local ptr = ""
+
+ local p = self:inmodule() or self:innamespace() or self:inclass()
+
+ if p then
+ parent = "_" .. p
+ end
+
+ if strfind(self.mod,"(unsigned)") then
+ unsigned = "_unsigned"
+ end
+
+ if self.ptr == "*" then ptr = "_ptr"
+ elseif self.ptr == "&" then ptr = "_ref"
+ end
+
+ local name = prefix .. parent .. unsigned .. "_" .. gsub(self.name,".*::","") .. ptr
+
+ return name
+
+end
+
+-- check if it is a variable
+function classVariable:isvariable ()
+ return true
+end
+
+-- get variable value
+function classVariable:getvalue (class,static)
+ if class and static then
+ return class..'::'..self.name
+ elseif class then
+ return 'self->'..self.name
+ else
+ return self.name
+ end
+end
+
+-- get variable pointer value
+function classVariable:getpointervalue (class,static)
+ if class and static then
+ return class..'::p'
+ elseif class then
+ return 'self->p'
+ else
+ return 'p'
+ end
+end
+
+-- Write binding functions
+function classVariable:supcode ()
+ local class = self:inclass()
+
+ -- get function ------------------------------------------------
+ if class then
+ output("/* get function:",self.name," of class ",class," */")
+ self.cgetname = self:cfuncname("tolua_get_"..class)
+ else
+ output("/* get function:",self.name," */")
+ self.cgetname = self:cfuncname("tolua_get")
+ end
+
+ output("static int",self.cgetname,"(lua_State* tolua_S)")
+ output("{")
+
+ -- declare self, if the case
+ local _,_,static = strfind(self.mod,'^%s*(static)')
+ if class and static==nil then
+ output(' ',class,'*','self = ')
+ output('(',class,'*) ')
+ output('tolua_tousertype(tolua_S,1,0);')
+ elseif static then
+ _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
+ end
+
+
+ -- check self value
+ if class and static==nil then
+ output('#ifndef TOLUA_RELEASE\n')
+ output(' if (!self) tolua_error(tolua_S,"invalid \'self\' in accessing variable \''..self.name..'\'",NULL);');
+ output('#endif\n')
+ end
+
+ -- return value
+ local type = self.type
+ if gsub(type,'const ','')=='char' and self.dim~='' then
+ type = 'char*'
+ end
+ local t,ct = isbasic(type)
+ if t then
+ output(' tolua_push'..t..'(tolua_S,(',ct,')'..self:getvalue(class,static)..');')
+ else
+ t = self.type
+ if self.ptr == '&' or self.ptr == '' then
+ output(' tolua_pushusertype(tolua_S,(void*)&'..self:getvalue(class,static)..',"',t,'");')
+ else
+ output(' tolua_pushusertype(tolua_S,(void*)'..self:getvalue(class,static)..',"',t,'");')
+ end
+ end
+ output(' return 1;')
+ output('}')
+ output('\n')
+
+ -- set function ------------------------------------------------
+ if not strfind(self.type,'const') then
+ if class then
+ output("/* set function:",self.name," of class ",class," */")
+ self.csetname = self:cfuncname("tolua_set_"..class)
+ else
+ output("/* set function:",self.name," */")
+ self.csetname = self:cfuncname("tolua_set")
+ end
+ output("static int",self.csetname,"(lua_State* tolua_S)")
+ output("{")
+
+ -- declare self, if the case
+ if class and static==nil then
+ output(' ',class,'*','self = ')
+ output('(',class,'*) ')
+ output('tolua_tousertype(tolua_S,1,0);')
+ -- check self value
+ end
+ -- check types
+ output('#ifndef TOLUA_RELEASE\n')
+ output(' tolua_Error tolua_err;')
+ if class and static==nil then
+ output(' if (!self) tolua_error(tolua_S,"invalid \'self\' in accessing variable \''..self.name..'\'",NULL);');
+ elseif static then
+ _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
+ end
+
+ -- check variable type
+ output(' if (!'..self:outchecktype(2,true)..')')
+ output(' tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);')
+ output('#endif\n')
+
+ -- assign value
+ local def = 0
+ if self.def ~= '' then def = self.def end
+ if self.type == 'char' and self.dim ~= '' then -- is string
+ output(' strncpy(')
+ if class and static then
+ output(class..'::'..self.name)
+ elseif class then
+ output('self->'..self.name)
+ else
+ output(self.name)
+ end
+ output(',tolua_tostring(tolua_S,2,',def,'),',self.dim,'-1);')
+ else
+ local ptr = ''
+ if self.ptr~='' then ptr = '*' end
+ output(' ')
+ if class and static then
+ output(class..'::'..self.name)
+ elseif class then
+ output('self->'..self.name)
+ else
+ output(self.name)
+ end
+ local t = isbasic(self.type)
+ output(' = ')
+ if not t and ptr=='' then output('*') end
+ output('((',self.mod,self.type)
+ if not t then
+ output('*')
+ end
+ output(') ')
+ if t then
+ if isenum(self.type) then
+ output('(int) ')
+ end
+ if t=='function' then t='value' end
+ output('tolua_to'..t,'(tolua_S,2,',def,'));')
+ else
+ output('tolua_tousertype(tolua_S,2,',def,'));')
+ end
+ end
+ output(' return 0;')
+ output('}')
+ output('\n')
+ end
+
+end
+
+function classVariable:register ()
+ local parent = self:inmodule() or self:innamespace() or self:inclass()
+ if not parent then
+ if classVariable._warning==nil then
+ warning("Mapping variable to global may degrade performance")
+ classVariable._warning = 1
+ end
+ end
+ if self.csetname then
+ output(' tolua_variable(tolua_S,"'..self.lname..'",'..self.cgetname..','..self.csetname..');')
+ else
+ output(' tolua_variable(tolua_S,"'..self.lname..'",'..self.cgetname..',NULL);')
+ end
+end
+
+-- Internal constructor
+function _Variable (t)
+ setmetatable(t,classVariable)
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects a string representing the variable declaration.
+function Variable (s)
+ return _Variable (Declaration(s,'var'))
+end
+
+
diff --git a/tolua/src/bin/lua/verbatim.lua b/tolua/src/bin/lua/verbatim.lua
new file mode 100644
index 0000000..1581092
--- /dev/null
+++ b/tolua/src/bin/lua/verbatim.lua
@@ -0,0 +1,76 @@
+-- tolua: verbatim class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: verbatim.lua,v 1.3 2009/11/24 16:45:15 fabraham Exp $
+
+-- This code is free software; you can redistribute it and/or modify it.
+-- The software provided hereunder is on an "as is" basis, and
+-- the author has no obligation to provide maintenance, support, updates,
+-- enhancements, or modifications.
+
+
+
+-- Verbatim class
+-- Represents a line translated directed to the binding file.
+-- The following filds are stored:
+-- line = line text
+classVerbatim = {
+ line = '',
+ cond = nil, -- condition: where to generate the code (s=suport, r=register)
+}
+classVerbatim.__index = classVerbatim
+setmetatable(classVerbatim,classFeature)
+
+-- preamble verbatim
+function classVerbatim:preamble ()
+ if self.cond == '' then
+ write(self.line)
+ end
+end
+
+-- support code
+function classVerbatim:supcode ()
+ if strfind(self.cond,'s') then
+ write(self.line)
+ write('\n')
+ end
+end
+
+-- register code
+function classVerbatim:register ()
+ if strfind(self.cond,'r') then
+ write(self.line)
+ end
+end
+
+
+-- Print method
+function classVerbatim:print (ident,close)
+ print(ident.."Verbatim{")
+ print(ident.." line = '"..self.line.."',")
+ print(ident.."}"..close)
+end
+
+
+-- Internal constructor
+function _Verbatim (t)
+ setmetatable(t,classVerbatim)
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects a string representing the text line
+function Verbatim (l,cond)
+ if strsub(l,1,1) == '$' then
+ cond = 'sr' -- generates in both suport and register fragments
+ l = strsub(l,2)
+ end
+ return _Verbatim {
+ line = l,
+ cond = cond or '',
+ }
+end
+
+
diff --git a/tolua/src/bin/tolua.c b/tolua/src/bin/tolua.c
new file mode 100644
index 0000000..29944ce
--- /dev/null
+++ b/tolua/src/bin/tolua.c
@@ -0,0 +1,130 @@
+/* tolua
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Aug 2003
+** $Id: tolua.c,v 1.4 2009/11/24 16:45:12 fabraham Exp $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include "tolua.h"
+
+#include "lua.h"
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+static void help (void)
+{
+ fprintf(stderr,"\n"
+ "usage: tolua [options] input_file\n"
+ "\n"
+ "Command line options are:\n"
+ " -v : print version information.\n"
+ " -o file : set output file; default is stdout.\n"
+ " -H file : create include file.\n"
+ " -n name : set package name; default is input file root name.\n"
+ " -p : parse only.\n"
+ " -P : parse and print structure information (for debug).\n"
+ " -h : print this message.\n"
+ "Should the input file be omitted, stdin is assumed;\n"
+ "in that case, the package name must be explicitly set.\n\n"
+ );
+}
+
+static void version (void)
+{
+ fprintf(stderr, "%s (written by W. Celes)\n",TOLUA_VERSION);
+}
+
+static void setfield (lua_State* L, int table, char* f, char* v)
+{
+ lua_pushstring(L,f);
+ lua_pushstring(L,v);
+ lua_settable(L,table);
+}
+
+static void error (char* o)
+{
+ fprintf(stderr,"tolua: unknown option '%s'\n",o);
+ help();
+ exit(1);
+}
+
+int main (int argc, char* argv[])
+{
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+
+ lua_pushstring(L,TOLUA_VERSION); lua_setglobal(L,"TOLUA_VERSION");
+
+ if (argc==1)
+ {
+ help();
+ return 0;
+ }
+ else
+ {
+ int i, t;
+ lua_newtable(L);
+ lua_pushvalue(L,-1);
+ lua_setglobal(L,"flags");
+ t = lua_gettop(L);
+ for (i=1; i<argc; ++i)
+ {
+ if (*argv[i] == '-')
+ {
+ switch (argv[i][1])
+ {
+ case 'v': version(); return 0;
+ case 'h': help(); return 0;
+ case 'p': setfield(L,t,"p",""); break;
+ case 'P': setfield(L,t,"P",""); break;
+ case 'o': setfield(L,t,"o",argv[++i]); break;
+ case 'n': setfield(L,t,"n",argv[++i]); break;
+ case 'H': setfield(L,t,"H",argv[++i]); break;
+ default: error(argv[i]); break;
+ }
+ }
+ else
+ {
+ setfield(L,t,"f",argv[i]);
+ break;
+ }
+ }
+ lua_pop(L,1);
+ }
+
+#ifndef LUA_SOURCE
+ {
+ int tolua_tolua_open (lua_State* L);
+ tolua_tolua_open(L);
+ }
+#else
+ {
+ char* p;
+ char path[BUFSIZ];
+ strcpy(path,argv[0]);
+ p = strrchr(path,'/');
+ if (p==NULL) p = strrchr(path,'\\');
+ p = (p==NULL) ? path : p+1;
+ sprintf(p,"%s","../src/bin/lua/");
+ lua_pushstring(L,path); lua_setglobal(L,"path");
+ strcat(path,"all.lua");
+ if (luaL_dofile(L,path)) {
+ printf("error loading all.lua: %s\n",lua_tostring(L,-1));
+ return 1;
+ }
+ }
+#endif
+ return 0;
+}
diff --git a/tolua/src/bin/tolua.pkg b/tolua/src/bin/tolua.pkg
new file mode 100755
index 0000000..4693cb1
--- /dev/null
+++ b/tolua/src/bin/tolua.pkg
@@ -0,0 +1,28 @@
+$lfile "lua/compat.lua"
+$lfile "lua/basic.lua"
+$lfile "lua/feature.lua"
+$lfile "lua/verbatim.lua"
+$lfile "lua/code.lua"
+$lfile "lua/typedef.lua"
+$lfile "lua/container.lua"
+$lfile "lua/package.lua"
+$lfile "lua/module.lua"
+$lfile "lua/namespace.lua"
+$lfile "lua/define.lua"
+$lfile "lua/enumerate.lua"
+$lfile "lua/declaration.lua"
+$lfile "lua/variable.lua"
+$lfile "lua/array.lua"
+$lfile "lua/function.lua"
+$lfile "lua/operator.lua"
+$lfile "lua/class.lua"
+$lfile "lua/clean.lua"
+$lfile "lua/doit.lua"
+
+$[
+local err,msg = pcall(doit)
+if not err then
+ local _,_,label,msg = strfind(msg,"(.-:.-:%s*)(.*)")
+ tolua_error(msg,label)
+end
+$]
diff --git a/tolua/src/bin/toluabind.c b/tolua/src/bin/toluabind.c
new file mode 100644
index 0000000..8b14849
--- /dev/null
+++ b/tolua/src/bin/toluabind.c
@@ -0,0 +1,4231 @@
+/*
+** Lua binding: tolua
+*/
+
+#include "tolua.h"
+
+#ifndef __cplusplus
+#include <stdlib.h>
+#endif
+#ifdef __cplusplus
+ extern "C" int tolua_bnd_takeownership (lua_State* L); // from tolua_map.c
+#else
+ int tolua_bnd_takeownership (lua_State* L); /* from tolua_map.c */
+#endif
+#include <string.h>
+
+/* Exported function */
+TOLUA_API int tolua_tolua_open (lua_State* tolua_S);
+LUALIB_API int luaopen_tolua (lua_State* tolua_S);
+
+
+/* function to register type */
+static void tolua_reg_types (lua_State* tolua_S)
+{
+}
+
+/* Open lib function */
+LUALIB_API int luaopen_tolua (lua_State* tolua_S)
+{
+ tolua_open(tolua_S);
+ tolua_reg_types(tolua_S);
+ tolua_module(tolua_S,NULL,0);
+ tolua_beginmodule(tolua_S,NULL);
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10,114, 97,
+ 119,116,121,112,101, 32, 61, 32,116,121,112,101, 13, 10, 13,
+ 10,102,117,110, 99,116,105,111,110, 32,100,111, 95, 32, 40,
+ 102, 44, 32,101,114,114, 41, 13, 10,105,102, 32,110,111,116,
+ 32,102, 32,116,104,101,110, 32,112,114,105,110,116, 40,101,
+ 114,114, 41, 59, 32,114,101,116,117,114,110, 32,101,110,100,
+ 13, 10,108,111, 99, 97,108, 32, 97, 44, 98, 32, 61, 32,112,
+ 99, 97,108,108, 40,102, 41, 13, 10,105,102, 32,110,111,116,
+ 32, 97, 32,116,104,101,110, 32,112,114,105,110,116, 40, 98,
+ 41, 59, 32,114,101,116,117,114,110, 32,110,105,108, 13, 10,
+ 101,108,115,101, 32,114,101,116,117,114,110, 32, 98, 32,111,
+ 114, 32,116,114,117,101, 13, 10,101,110,100, 13, 10,101,110,
+ 100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,100,
+ 111,115,116,114,105,110,103, 40,115, 41, 32,114,101,116,117,
+ 114,110, 32,100,111, 95, 40,108,111, 97,100, 40,115, 41, 41,
+ 32,101,110,100, 13, 10, 13, 10,108,111, 99, 97,108, 32,116,
+ 97, 98, 32, 61, 32,116, 97, 98,108,101, 13, 10,102,111,114,
+ 101, 97, 99,104, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40,116, 44,102, 41, 13, 10,102,111,114, 32,107, 44,118, 32,
+ 105,110, 32,112, 97,105,114,115, 40,116, 41, 32,100,111, 13,
+ 10,102, 40,107, 44,118, 41, 13, 10,101,110,100, 13, 10,101,
+ 110,100, 13, 10,102,111,114,101, 97, 99,104,105, 32, 61, 32,
+ 102,117,110, 99,116,105,111,110, 40,116, 44,102, 41, 13, 10,
+ 102,111,114, 32,105, 44,118, 32,105,110, 32,105,112, 97,105,
+ 114,115, 40,116, 41, 32,100,111, 13, 10,102, 40,105, 44,118,
+ 41, 13, 10,101,110,100, 13, 10,101,110,100, 13, 10,103,101,
+ 116,110, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,116,
+ 41, 13, 10,114,101,116,117,114,110, 32, 35,116, 13, 10,101,
+ 110,100, 13, 10,116,105,110,115,101,114,116, 32, 61, 32,116,
+ 97, 98, 46,105,110,115,101,114,116, 13, 10,116,114,101,109,
+ 111,118,101, 32, 61, 32,116, 97, 98, 46,114,101,109,111,118,
+ 101, 13, 10,115,111,114,116, 32, 61, 32,116, 97, 98, 46,115,
+ 111,114,116, 13, 10, 13, 10,108,111, 99, 97,108, 32,100, 98,
+ 103, 32, 61, 32,100,101, 98,117,103, 13, 10,103,101,116,105,
+ 110,102,111, 32, 61, 32,100, 98,103, 46,103,101,116,105,110,
+ 102,111, 13, 10,103,101,116,108,111, 99, 97,108, 32, 61, 32,
+ 100, 98,103, 46,103,101,116,108,111, 99, 97,108, 13, 10,115,
+ 101,116, 99, 97,108,108,104,111,111,107, 32, 61, 32,102,117,
+ 110, 99,116,105,111,110, 32, 40, 41, 32,101,114,114,111,114,
+ 34, 96,115,101,116, 99, 97,108,108,104,111,111,107, 39, 32,
+ 105,115, 32,100,101,112,114,101, 99, 97,116,101,100, 34, 32,
+ 101,110,100, 13, 10,115,101,116,108,105,110,101,104,111,111,
+ 107, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 41,
+ 32,101,114,114,111,114, 34, 96,115,101,116,108,105,110,101,
+ 104,111,111,107, 39, 32,105,115, 32,100,101,112,114,101, 99,
+ 97,116,101,100, 34, 32,101,110,100, 13, 10,115,101,116,108,
+ 111, 99, 97,108, 32, 61, 32,100, 98,103, 46,115,101,116,108,
+ 111, 99, 97,108, 13, 10, 13, 10,108,111, 99, 97,108, 32,109,
+ 97,116,104, 32, 61, 32,109, 97,116,104, 13, 10, 97, 98,115,
+ 32, 61, 32,109, 97,116,104, 46, 97, 98,115, 13, 10, 97, 99,
+ 111,115, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,
+ 120, 41, 32,114,101,116,117,114,110, 32,109, 97,116,104, 46,
+ 100,101,103, 40,109, 97,116,104, 46, 97, 99,111,115, 40,120,
+ 41, 41, 32,101,110,100, 13, 10, 97,115,105,110, 32, 61, 32,
+ 102,117,110, 99,116,105,111,110, 32, 40,120, 41, 32,114,101,
+ 116,117,114,110, 32,109, 97,116,104, 46,100,101,103, 40,109,
+ 97,116,104, 46, 97,115,105,110, 40,120, 41, 41, 32,101,110,
+ 100, 13, 10, 97,116, 97,110, 32, 61, 32,102,117,110, 99,116,
+ 105,111,110, 32, 40,120, 41, 32,114,101,116,117,114,110, 32,
+ 109, 97,116,104, 46,100,101,103, 40,109, 97,116,104, 46, 97,
+ 116, 97,110, 40,120, 41, 41, 32,101,110,100, 13, 10, 97,116,
+ 97,110, 50, 32, 61, 32,102,117,110, 99,116,105,111,110, 32,
+ 40,120, 44,121, 41, 32,114,101,116,117,114,110, 32,109, 97,
+ 116,104, 46,100,101,103, 40,109, 97,116,104, 46, 97,116, 97,
+ 110, 50, 40,120, 44,121, 41, 41, 32,101,110,100, 13, 10, 99,
+ 101,105,108, 32, 61, 32,109, 97,116,104, 46, 99,101,105,108,
+ 13, 10, 99,111,115, 32, 61, 32,102,117,110, 99,116,105,111,
+ 110, 32, 40,120, 41, 32,114,101,116,117,114,110, 32,109, 97,
+ 116,104, 46, 99,111,115, 40,109, 97,116,104, 46,114, 97,100,
+ 40,120, 41, 41, 32,101,110,100, 13, 10,100,101,103, 32, 61,
+ 32,109, 97,116,104, 46,100,101,103, 13, 10,101,120,112, 32,
+ 61, 32,109, 97,116,104, 46,101,120,112, 13, 10,102,108,111,
+ 111,114, 32, 61, 32,109, 97,116,104, 46,102,108,111,111,114,
+ 13, 10,102,114,101,120,112, 32, 61, 32,109, 97,116,104, 46,
+ 102,114,101,120,112, 13, 10,108,100,101,120,112, 32, 61, 32,
+ 109, 97,116,104, 46,108,100,101,120,112, 13, 10,108,111,103,
+ 32, 61, 32,109, 97,116,104, 46,108,111,103, 13, 10,108,111,
+ 103, 49, 48, 32, 61, 32,109, 97,116,104, 46,108,111,103, 49,
+ 48, 13, 10,109, 97,120, 32, 61, 32,109, 97,116,104, 46,109,
+ 97,120, 13, 10,109,105,110, 32, 61, 32,109, 97,116,104, 46,
+ 109,105,110, 13, 10,109,111,100, 32, 61, 32,109, 97,116,104,
+ 46,109,111,100, 13, 10, 80, 73, 32, 61, 32,109, 97,116,104,
+ 46,112,105, 13, 10,114, 97,100, 32, 61, 32,109, 97,116,104,
+ 46,114, 97,100, 13, 10,114, 97,110,100,111,109, 32, 61, 32,
+ 109, 97,116,104, 46,114, 97,110,100,111,109, 13, 10,114, 97,
+ 110,100,111,109,115,101,101,100, 32, 61, 32,109, 97,116,104,
+ 46,114, 97,110,100,111,109,115,101,101,100, 13, 10,115,105,
+ 110, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,120,
+ 41, 32,114,101,116,117,114,110, 32,109, 97,116,104, 46,115,
+ 105,110, 40,109, 97,116,104, 46,114, 97,100, 40,120, 41, 41,
+ 32,101,110,100, 13, 10,115,113,114,116, 32, 61, 32,109, 97,
+ 116,104, 46,115,113,114,116, 13, 10,116, 97,110, 32, 61, 32,
+ 102,117,110, 99,116,105,111,110, 32, 40,120, 41, 32,114,101,
+ 116,117,114,110, 32,109, 97,116,104, 46,116, 97,110, 40,109,
+ 97,116,104, 46,114, 97,100, 40,120, 41, 41, 32,101,110,100,
+ 13, 10, 13, 10,108,111, 99, 97,108, 32,115,116,114, 32, 61,
+ 32,115,116,114,105,110,103, 13, 10,115,116,114, 98,121,116,
+ 101, 32, 61, 32,115,116,114, 46, 98,121,116,101, 13, 10,115,
+ 116,114, 99,104, 97,114, 32, 61, 32,115,116,114, 46, 99,104,
+ 97,114, 13, 10,115,116,114,102,105,110,100, 32, 61, 32,115,
+ 116,114, 46,102,105,110,100, 13, 10,102,111,114,109, 97,116,
+ 32, 61, 32,115,116,114, 46,102,111,114,109, 97,116, 13, 10,
+ 103,115,117, 98, 32, 61, 32,115,116,114, 46,103,115,117, 98,
+ 13, 10,115,116,114,108,101,110, 32, 61, 32,115,116,114, 46,
+ 108,101,110, 13, 10,115,116,114,108,111,119,101,114, 32, 61,
+ 32,115,116,114, 46,108,111,119,101,114, 13, 10,115,116,114,
+ 114,101,112, 32, 61, 32,115,116,114, 46,114,101,112, 13, 10,
+ 115,116,114,115,117, 98, 32, 61, 32,115,116,114, 46,115,117,
+ 98, 13, 10,115,116,114,117,112,112,101,114, 32, 61, 32,115,
+ 116,114, 46,117,112,112,101,114, 13, 10, 13, 10, 99,108,111,
+ 99,107, 32, 61, 32,111,115, 46, 99,108,111, 99,107, 13, 10,
+ 100, 97,116,101, 32, 61, 32,111,115, 46,100, 97,116,101, 13,
+ 10,100,105,102,102,116,105,109,101, 32, 61, 32,111,115, 46,
+ 100,105,102,102,116,105,109,101, 13, 10,101,120,101, 99,117,
+ 116,101, 32, 61, 32,111,115, 46,101,120,101, 99,117,116,101,
+ 10,101,120,105,116, 32, 61, 32,111,115, 46,101,120,105,116,
+ 13, 10,103,101,116,101,110,118, 32, 61, 32,111,115, 46,103,
+ 101,116,101,110,118, 13, 10,114,101,109,111,118,101, 32, 61,
+ 32,111,115, 46,114,101,109,111,118,101, 13, 10,114,101,110,
+ 97,109,101, 32, 61, 32,111,115, 46,114,101,110, 97,109,101,
+ 13, 10,115,101,116,108,111, 99, 97,108,101, 32, 61, 32,111,
+ 115, 46,115,101,116,108,111, 99, 97,108,101, 13, 10,116,105,
+ 109,101, 32, 61, 32,111,115, 46,116,105,109,101, 13, 10,116,
+ 109,112,110, 97,109,101, 32, 61, 32,111,115, 46,116,109,112,
+ 110, 97,109,101, 13, 10, 13, 10,103,101,116,103,108,111, 98,
+ 97,108, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,
+ 110, 41, 32,114,101,116,117,114,110, 32, 95, 71, 91,110, 93,
+ 32,101,110,100, 13, 10,115,101,116,103,108,111, 98, 97,108,
+ 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,110, 44,
+ 118, 41, 32, 95, 71, 91,110, 93, 32, 61, 32,118, 32,101,110,
+ 100, 13, 10, 13, 10, 13, 10,108,111, 99, 97,108, 32,105,111,
+ 44, 32,116, 97, 98, 32, 61, 32,105,111, 44, 32,116, 97, 98,
+ 108,101, 13, 10, 13, 10, 95, 83, 84, 68, 73, 78, 32, 61, 32,
+ 105,111, 46,115,116,100,105,110, 13, 10, 95, 83, 84, 68, 69,
+ 82, 82, 32, 61, 32,105,111, 46,115,116,100,101,114,114, 13,
+ 10, 95, 83, 84, 68, 79, 85, 84, 32, 61, 32,105,111, 46,115,
+ 116,100,111,117,116, 13, 10, 95, 73, 78, 80, 85, 84, 32, 61,
+ 32,105,111, 46,115,116,100,105,110, 13, 10, 95, 79, 85, 84,
+ 80, 85, 84, 32, 61, 32,105,111, 46,115,116,100,111,117,116,
+ 13, 10,115,101,101,107, 32, 61, 32,105,111, 46,115,116,100,
+ 105,110, 46,115,101,101,107, 10,116,109,112,102,105,108,101,
+ 32, 61, 32,105,111, 46,116,109,112,102,105,108,101, 13, 10,
+ 99,108,111,115,101,102,105,108,101, 32, 61, 32,105,111, 46,
+ 99,108,111,115,101, 13, 10,111,112,101,110,102,105,108,101,
+ 32, 61, 32,105,111, 46,111,112,101,110, 13, 10, 13, 10,102,
+ 117,110, 99,116,105,111,110, 32,102,108,117,115,104, 32, 40,
+ 102, 41, 13, 10,105,102, 32,102, 32,116,104,101,110, 32,102,
+ 58,102,108,117,115,104, 40, 41, 13, 10,101,108,115,101, 32,
+ 95, 79, 85, 84, 80, 85, 84, 58,102,108,117,115,104, 40, 41,
+ 13, 10,101,110,100, 13, 10,101,110,100, 13, 10, 13, 10,102,
+ 117,110, 99,116,105,111,110, 32,114,101, 97,100,102,114,111,
+ 109, 32, 40,110, 97,109,101, 41, 13, 10,105,102, 32,110, 97,
+ 109,101, 32, 61, 61, 32,110,105,108, 32,116,104,101,110, 13,
+ 10,108,111, 99, 97,108, 32,102, 44, 32,101,114,114, 44, 32,
+ 99,111,100, 32, 61, 32,105,111, 46, 99,108,111,115,101, 40,
+ 95, 73, 78, 80, 85, 84, 41, 13, 10, 95, 73, 78, 80, 85, 84,
+ 32, 61, 32,105,111, 46,115,116,100,105,110, 13, 10,114,101,
+ 116,117,114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,111,
+ 100, 13, 10,101,108,115,101, 13, 10,108,111, 99, 97,108, 32,
+ 102, 44, 32,101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,
+ 111, 46,111,112,101,110, 40,110, 97,109,101, 44, 32, 34,114,
+ 34, 41, 13, 10, 95, 73, 78, 80, 85, 84, 32, 61, 32,102, 32,
+ 111,114, 32, 95, 73, 78, 80, 85, 84, 13, 10,114,101,116,117,
+ 114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 13,
+ 10,101,110,100, 13, 10,101,110,100, 13, 10, 13, 10,102,117,
+ 110, 99,116,105,111,110, 32,119,114,105,116,101,116,111, 32,
+ 40,110, 97,109,101, 41, 13, 10,105,102, 32,110, 97,109,101,
+ 32, 61, 61, 32,110,105,108, 32,116,104,101,110, 13, 10,108,
+ 111, 99, 97,108, 32,102, 44, 32,101,114,114, 44, 32, 99,111,
+ 100, 32, 61, 32,105,111, 46, 99,108,111,115,101, 40, 95, 79,
+ 85, 84, 80, 85, 84, 41, 13, 10, 95, 79, 85, 84, 80, 85, 84,
+ 32, 61, 32,105,111, 46,115,116,100,111,117,116, 13, 10,114,
+ 101,116,117,114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,
+ 111,100, 13, 10,101,108,115,101, 13, 10,108,111, 99, 97,108,
+ 32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 32, 61, 32,
+ 105,111, 46,111,112,101,110, 40,110, 97,109,101, 44, 32, 34,
+ 119, 34, 41, 13, 10, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,
+ 102, 32,111,114, 32, 95, 79, 85, 84, 80, 85, 84, 13, 10,114,
+ 101,116,117,114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,
+ 111,100, 13, 10,101,110,100, 13, 10,101,110,100, 13, 10, 13,
+ 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,101,110,
+ 100,116,111, 32, 40,110, 97,109,101, 41, 13, 10,108,111, 99,
+ 97,108, 32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 32,
+ 61, 32,105,111, 46,111,112,101,110, 40,110, 97,109,101, 44,
+ 32, 34, 97, 34, 41, 13, 10, 95, 79, 85, 84, 80, 85, 84, 32,
+ 61, 32,102, 32,111,114, 32, 95, 79, 85, 84, 80, 85, 84, 13,
+ 10,114,101,116,117,114,110, 32,102, 44, 32,101,114,114, 44,
+ 32, 99,111,100, 13, 10,101,110,100, 13, 10, 13, 10,102,117,
+ 110, 99,116,105,111,110, 32,114,101, 97,100, 32, 40, 46, 46,
+ 46, 41, 13, 10,108,111, 99, 97,108, 32,102, 32, 61, 32, 95,
+ 73, 78, 80, 85, 84, 13, 10,108,111, 99, 97,108, 32, 97,114,
+ 103, 32, 61, 32,123, 46, 46, 46,125, 13, 10,105,102, 32,114,
+ 97,119,116,121,112,101, 40, 97,114,103, 91, 49, 93, 41, 32,
+ 61, 61, 32, 39,117,115,101,114,100, 97,116, 97, 39, 32,116,
+ 104,101,110, 13, 10,102, 32, 61, 32,116, 97, 98, 46,114,101,
+ 109,111,118,101, 40, 97,114,103, 44, 32, 49, 41, 13, 10,101,
+ 110,100, 13, 10,114,101,116,117,114,110, 32,102, 58,114,101,
+ 97,100, 40,116, 97, 98,108,101, 46,117,110,112, 97, 99,107,
+ 40, 97,114,103, 41, 41, 13, 10,101,110,100, 13, 10, 13, 10,
+ 102,117,110, 99,116,105,111,110, 32,119,114,105,116,101, 32,
+ 40, 46, 46, 46, 41, 13, 10,108,111, 99, 97,108, 32,102, 32,
+ 61, 32, 95, 79, 85, 84, 80, 85, 84, 13, 10,108,111, 99, 97,
+ 108, 32, 97,114,103, 32, 61, 32,123, 46, 46, 46,125, 13, 10,
+ 105,102, 32,114, 97,119,116,121,112,101, 40, 97,114,103, 91,
+ 49, 93, 41, 32, 61, 61, 32, 39,117,115,101,114,100, 97,116,
+ 97, 39, 32,116,104,101,110, 13, 10,102, 32, 61, 32,116, 97,
+ 98, 46,114,101,109,111,118,101, 40, 97,114,103, 44, 32, 49,
+ 41, 13, 10,101,110,100, 13, 10,114,101,116,117,114,110, 32,
+ 102, 58,119,114,105,116,101, 40,116, 97, 98,108,101, 46,117,
+ 110,112, 97, 99,107, 40, 97,114,103, 41, 41, 13, 10,101,110,
+ 100, 13,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 13, 10, 13, 10, 13, 10, 95, 98, 97,115,105, 99, 32, 61,
+ 32,123, 13, 10, 91, 39,118,111,105,100, 39, 93, 32, 61, 32,
+ 39, 39, 44, 13, 10, 91, 39, 99,104, 97,114, 39, 93, 32, 61,
+ 32, 39,110,117,109, 98,101,114, 39, 44, 13, 10, 91, 39,116,
+ 111,108,117, 97, 95,105,110,100,101,120, 39, 93, 32, 61, 32,
+ 39,110,117,109, 98,101,114, 39, 44, 13, 10, 91, 39,116,111,
+ 108,117, 97, 95, 98,121,116,101, 39, 93, 32, 61, 32, 39,110,
+ 117,109, 98,101,114, 39, 44, 13, 10, 91, 39,116,111,108,117,
+ 97, 95,117, 98,121,116,101, 39, 93, 32, 61, 32, 39,110,117,
+ 109, 98,101,114, 39, 44, 13, 10, 91, 39,105,110,116, 39, 93,
+ 32, 61, 32, 39,110,117,109, 98,101,114, 39, 44, 13, 10, 91,
+ 39,115,104,111,114,116, 39, 93, 32, 61, 32, 39,110,117,109,
+ 98,101,114, 39, 44, 13, 10, 91, 39,108,111,110,103, 39, 93,
+ 32, 61, 32, 39,110,117,109, 98,101,114, 39, 44, 13, 10, 91,
+ 39,117,110,115,105,103,110,101,100, 39, 93, 32, 61, 32, 39,
+ 110,117,109, 98,101,114, 39, 44, 13, 10, 91, 39,102,108,111,
+ 97,116, 39, 93, 32, 61, 32, 39,110,117,109, 98,101,114, 39,
+ 44, 13, 10, 91, 39,100,111,117, 98,108,101, 39, 93, 32, 61,
+ 32, 39,110,117,109, 98,101,114, 39, 44, 13, 10, 91, 39, 95,
+ 99,115,116,114,105,110,103, 39, 93, 32, 61, 32, 39,115,116,
+ 114,105,110,103, 39, 44, 13, 10, 91, 39, 95,117,115,101,114,
+ 100, 97,116, 97, 39, 93, 32, 61, 32, 39,117,115,101,114,100,
+ 97,116, 97, 39, 44, 13, 10, 91, 39, 99,104, 97,114, 42, 39,
+ 93, 32, 61, 32, 39,115,116,114,105,110,103, 39, 44, 13, 10,
+ 91, 39,118,111,105,100, 42, 39, 93, 32, 61, 32, 39,117,115,
+ 101,114,100, 97,116, 97, 39, 44, 13, 10, 91, 39, 98,111,111,
+ 108, 39, 93, 32, 61, 32, 39, 98,111,111,108,101, 97,110, 39,
+ 44, 13, 10, 91, 39,108,117, 97, 95, 83,116, 97,116,101, 42,
+ 39, 93, 32, 61, 32, 39,115,116, 97,116,101, 39, 44, 13, 10,
+ 91, 39, 95,108,115,116, 97,116,101, 39, 93, 32, 61, 32, 39,
+ 115,116, 97,116,101, 39, 44, 13, 10, 91, 39,108,117, 97, 95,
+ 79, 98,106,101, 99,116, 39, 93, 32, 61, 32, 39,118, 97,108,
+ 117,101, 39, 44, 13, 10, 91, 39,108,117, 97, 95, 70,117,110,
+ 99,116,105,111,110, 39, 93, 32, 61, 32, 39,102,117,110, 99,
+ 116,105,111,110, 39, 44, 13, 10, 91, 39, 76, 85, 65, 95, 86,
+ 65, 76, 85, 69, 39, 93, 32, 61, 32, 39,118, 97,108,117,101,
+ 39, 44, 10,125, 13, 10, 13, 10, 95, 98, 97,115,105, 99, 95,
+ 99,116,121,112,101, 32, 61, 32,123, 13, 10,110,117,109, 98,
+ 101,114, 32, 61, 32, 34,108,117, 97, 95, 78,117,109, 98,101,
+ 114, 34, 44, 13, 10,115,116,114,105,110,103, 32, 61, 32, 34,
+ 99,111,110,115,116, 32, 99,104, 97,114, 42, 34, 44, 13, 10,
+ 117,115,101,114,100, 97,116, 97, 32, 61, 32, 34,118,111,105,
+ 100, 42, 34, 44, 13, 10, 98,111,111,108,101, 97,110, 32, 61,
+ 32, 34, 98,111,111,108, 34, 44, 13, 10,118, 97,108,117,101,
+ 32, 61, 32, 34,105,110,116, 34, 44, 13, 10,125, 13, 10, 13,
+ 10, 95,117,115,101,114,116,121,112,101, 32, 61, 32,123,125,
+ 13, 10, 13, 10, 95, 99,111,108,108,101, 99,116, 32, 61, 32,
+ 123,125, 13, 10, 13, 10, 13, 10, 95,114,101,110, 97,109,105,
+ 110,103, 32, 61, 32,123,125, 13, 10,102,117,110, 99,116,105,
+ 111,110, 32, 97,112,112,101,110,100,114,101,110, 97,109,105,
+ 110,103, 32, 40,115, 41, 13, 10,108,111, 99, 97,108, 32, 98,
+ 44,101, 44,111,108,100, 44,110,101,119, 32, 61, 32,115,116,
+ 114,102,105,110,100, 40,115, 44, 34, 37,115, 42, 40, 46, 45,
+ 41, 37,115, 42, 64, 37,115, 42, 40, 46, 45, 41, 37,115, 42,
+ 36, 34, 41, 13, 10,105,102, 32,110,111,116, 32, 98, 32,116,
+ 104,101,110, 13, 10,101,114,114,111,114, 40, 34, 35, 73,110,
+ 118, 97,108,105,100, 32,114,101,110, 97,109,105,110,103, 32,
+ 115,121,110,116, 97,120, 59, 32,105,116, 32,115,104,111,117,
+ 108,100, 32, 98,101, 32,111,102, 32,116,104,101, 32,102,111,
+ 114,109, 58, 32,112, 97,116,116,101,114,110, 64,112, 97,116,
+ 116,101,114,110, 34, 41, 13, 10,101,110,100, 13, 10,116,105,
+ 110,115,101,114,116, 40, 95,114,101,110, 97,109,105,110,103,
+ 44,123,111,108,100, 61,111,108,100, 44, 32,110,101,119, 61,
+ 110,101,119,125, 41, 13, 10,101,110,100, 13, 10, 13, 10,102,
+ 117,110, 99,116,105,111,110, 32, 97,112,112,108,121,114,101,
+ 110, 97,109,105,110,103, 32, 40,115, 41, 13, 10,102,111,114,
+ 32,105, 61, 49, 44,103,101,116,110, 40, 95,114,101,110, 97,
+ 109,105,110,103, 41, 32,100,111, 13, 10,108,111, 99, 97,108,
+ 32,109, 44,110, 32, 61, 32,103,115,117, 98, 40,115, 44, 95,
+ 114,101,110, 97,109,105,110,103, 91,105, 93, 46,111,108,100,
+ 44, 95,114,101,110, 97,109,105,110,103, 91,105, 93, 46,110,
+ 101,119, 41, 13, 10,105,102, 32,110, 32,126, 61, 32, 48, 32,
+ 116,104,101,110, 13, 10,114,101,116,117,114,110, 32,109, 13,
+ 10,101,110,100, 13, 10,101,110,100, 13, 10,114,101,116,117,
+ 114,110, 32,110,105,108, 13, 10,101,110,100, 13, 10, 13, 10,
+ 102,117,110, 99,116,105,111,110, 32,116,111,108,117, 97, 95,
+ 101,114,114,111,114, 32, 40,115, 44,102, 41, 13, 10,108,111,
+ 99, 97,108, 32,111,117,116, 32, 61, 32, 95, 79, 85, 84, 80,
+ 85, 84, 13, 10, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32, 95,
+ 83, 84, 68, 69, 82, 82, 13, 10,105,102, 32,115,116,114,115,
+ 117, 98, 40,115, 44, 49, 44, 49, 41, 32, 61, 61, 32, 39, 35,
+ 39, 32,116,104,101,110, 13, 10,119,114,105,116,101, 40, 34,
+ 92,110, 42, 42, 32,116,111,108,117, 97, 58, 32, 34, 46, 46,
+ 115,116,114,115,117, 98, 40,115, 44, 50, 41, 46, 46, 34, 46,
+ 92,110, 92,110, 34, 41, 13, 10,105,102, 32, 95, 99,117,114,
+ 114, 95, 99,111,100,101, 32,116,104,101,110, 13, 10,108,111,
+ 99, 97,108, 32, 95, 44, 95, 44,115, 32, 61, 32,115,116,114,
+ 102,105,110,100, 40, 95, 99,117,114,114, 95, 99,111,100,101,
+ 44, 34, 94, 37,115, 42, 40, 46, 45, 92,110, 41, 34, 41, 10,
+ 105,102, 32,115, 61, 61,110,105,108, 32,116,104,101,110, 32,
+ 115, 32, 61, 32, 95, 99,117,114,114, 95, 99,111,100,101, 32,
+ 101,110,100, 13, 10,115, 32, 61, 32,103,115,117, 98, 40,115,
+ 44, 34, 95,117,115,101,114,100, 97,116, 97, 34, 44, 34,118,
+ 111,105,100, 42, 34, 41, 10,115, 32, 61, 32,103,115,117, 98,
+ 40,115, 44, 34, 95, 99,115,116,114,105,110,103, 34, 44, 34,
+ 99,104, 97,114, 42, 34, 41, 10,115, 32, 61, 32,103,115,117,
+ 98, 40,115, 44, 34, 95,108,115,116, 97,116,101, 34, 44, 34,
+ 108,117, 97, 95, 83,116, 97,116,101, 42, 34, 41, 10,119,114,
+ 105,116,101, 40, 34, 67,111,100,101, 32, 98,101,105,110,103,
+ 32,112,114,111, 99,101,115,115,101,100, 58, 92,110, 34, 46,
+ 46,115, 46, 46, 34, 92,110, 34, 41, 13, 10,101,110,100, 13,
+ 10,101,108,115,101, 13, 10,112,114,105,110,116, 40,100,101,
+ 98,117,103, 46,116,114, 97, 99,101, 98, 97, 99,107, 40, 34,
+ 92,110, 42, 42, 32,116,111,108,117, 97, 32,105,110,116,101,
+ 114,110, 97,108, 32,101,114,114,111,114, 58, 32, 34, 46, 46,
+ 102, 46, 46,115, 46, 46, 34, 46, 92,110, 92,110, 34, 41, 41,
+ 13, 10,114,101,116,117,114,110, 13, 10,101,110,100, 13, 10,
+ 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,111,117,116, 13, 10,
+ 101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110,
+ 32,119, 97,114,110,105,110,103, 32, 40,109,115,103, 41, 13,
+ 10,108,111, 99, 97,108, 32,111,117,116, 32, 61, 32, 95, 79,
+ 85, 84, 80, 85, 84, 13, 10, 95, 79, 85, 84, 80, 85, 84, 32,
+ 61, 32, 95, 83, 84, 68, 69, 82, 82, 13, 10,119,114,105,116,
+ 101, 40, 34, 92,110, 42, 42, 32,116,111,108,117, 97, 32,119,
+ 97,114,110,105,110,103, 58, 32, 34, 46, 46,109,115,103, 46,
+ 46, 34, 46, 92,110, 92,110, 34, 41, 13, 10, 95, 79, 85, 84,
+ 80, 85, 84, 32, 61, 32,111,117,116, 13, 10,101,110,100, 13,
+ 10, 13, 10,102,117,110, 99,116,105,111,110, 32,114,101,103,
+ 116,121,112,101, 32, 40,116, 41, 13, 10,108,111, 99, 97,108,
+ 32,102,116, 32, 61, 32,102,105,110,100,116,121,112,101, 40,
+ 116, 41, 13, 10,105,102, 32,105,115, 98, 97,115,105, 99, 40,
+ 116, 41, 32,116,104,101,110, 13, 10,114,101,116,117,114,110,
+ 32,116, 13, 10,101,110,100, 13, 10,105,102, 32,110,111,116,
+ 32,102,116, 32,116,104,101,110, 13, 10,114,101,116,117,114,
+ 110, 32, 97,112,112,101,110,100,117,115,101,114,116,121,112,
+ 101, 40,116, 41, 13, 10,101,110,100, 13, 10,101,110,100, 13,
+ 10, 13, 10,102,117,110, 99,116,105,111,110, 32,116,121,112,
+ 101,118, 97,114, 40,116,121,112,101, 41, 13, 10,105,102, 32,
+ 116,121,112,101, 32, 61, 61, 32, 39, 39, 32,111,114, 32,116,
+ 121,112,101, 32, 61, 61, 32, 39,118,111,105,100, 39, 32,111,
+ 114, 32,116,121,112,101, 32, 61, 61, 32, 34, 46, 46, 46, 34,
+ 32,116,104,101,110, 13, 10,114,101,116,117,114,110, 32,116,
+ 121,112,101, 13, 10,101,108,115,101, 13, 10,108,111, 99, 97,
+ 108, 32,102,116, 32, 61, 32,102,105,110,100,116,121,112,101,
+ 40,116,121,112,101, 41, 13, 10,105,102, 32,102,116, 32,116,
+ 104,101,110, 13, 10,114,101,116,117,114,110, 32,102,116, 13,
+ 10,101,110,100, 13, 10, 95,117,115,101,114,116,121,112,101,
+ 91,116,121,112,101, 93, 32, 61, 32,116,121,112,101, 13, 10,
+ 114,101,116,117,114,110, 32,116,121,112,101, 13, 10,101,110,
+ 100, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,
+ 105,111,110, 32,105,115, 98, 97,115,105, 99, 32, 40,116,121,
+ 112,101, 41, 13, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,
+ 103,115,117, 98, 40,116,121,112,101, 44, 39, 99,111,110,115,
+ 116, 32, 39, 44, 39, 39, 41, 13, 10,108,111, 99, 97,108, 32,
+ 109, 44,116, 32, 61, 32, 97,112,112,108,121,116,121,112,101,
+ 100,101,102, 40,116, 41, 13, 10,108,111, 99, 97,108, 32, 98,
+ 32, 61, 32, 95, 98, 97,115,105, 99, 91,116, 93, 13, 10,105,
+ 102, 32, 98, 32,116,104,101,110, 13, 10,114,101,116,117,114,
+ 110, 32, 98, 44, 95, 98, 97,115,105, 99, 95, 99,116,121,112,
+ 101, 91, 98, 93, 13, 10,101,110,100, 13, 10,114,101,116,117,
+ 114,110, 32,110,105,108, 13, 10,101,110,100, 13, 10, 13, 10,
+ 102,117,110, 99,116,105,111,110, 32,115,112,108,105,116, 32,
+ 40,115, 44,116, 41, 13, 10,108,111, 99, 97,108, 32,108, 32,
+ 61, 32,123,110, 61, 48,125, 13, 10,108,111, 99, 97,108, 32,
+ 102, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,115,
+ 41, 13, 10,108, 46,110, 32, 61, 32,108, 46,110, 32, 43, 32,
+ 49, 13, 10,108, 91,108, 46,110, 93, 32, 61, 32,115, 13, 10,
+ 114,101,116,117,114,110, 32, 34, 34, 13, 10,101,110,100, 13,
+ 10,108,111, 99, 97,108, 32,112, 32, 61, 32, 34, 37,115, 42,
+ 40, 46, 45, 41, 37,115, 42, 34, 46, 46,116, 46, 46, 34, 37,
+ 115, 42, 34, 13, 10,115, 32, 61, 32,103,115,117, 98, 40,115,
+ 44, 34, 94, 37,115, 43, 34, 44, 34, 34, 41, 13, 10,115, 32,
+ 61, 32,103,115,117, 98, 40,115, 44, 34, 37,115, 43, 36, 34,
+ 44, 34, 34, 41, 13, 10,115, 32, 61, 32,103,115,117, 98, 40,
+ 115, 44,112, 44,102, 41, 13, 10,108, 46,110, 32, 61, 32,108,
+ 46,110, 32, 43, 32, 49, 13, 10,108, 91,108, 46,110, 93, 32,
+ 61, 32,103,115,117, 98, 40,115, 44, 34, 40, 37,115, 37,115,
+ 42, 41, 36, 34, 44, 34, 34, 41, 13, 10,114,101,116,117,114,
+ 110, 32,108, 13, 10,101,110,100, 13, 10, 13, 10, 13, 10,102,
+ 117,110, 99,116,105,111,110, 32, 99,111,110, 99, 97,116, 32,
+ 40,116, 44,102, 44,108, 41, 13, 10,108,111, 99, 97,108, 32,
+ 115, 32, 61, 32, 39, 39, 13, 10,108,111, 99, 97,108, 32,105,
+ 61,102, 13, 10,119,104,105,108,101, 32,105, 60, 61,108, 32,
+ 100,111, 13, 10,115, 32, 61, 32,115, 46, 46,116, 91,105, 93,
+ 13, 10,105, 32, 61, 32,105, 43, 49, 13, 10,105,102, 32,105,
+ 32, 60, 61, 32,108, 32,116,104,101,110, 32,115, 32, 61, 32,
+ 115, 46, 46, 39, 32, 39, 32,101,110,100, 13, 10,101,110,100,
+ 13, 10,114,101,116,117,114,110, 32,115, 13, 10,101,110,100,
+ 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32, 99,111,
+ 110, 99, 97,116,112, 97,114, 97,109, 32, 40,108,105,110,101,
+ 44, 32, 46, 46, 46, 41, 13, 10,108,111, 99, 97,108, 32, 97,
+ 114,103, 32, 61, 32,123, 46, 46, 46,125, 13, 10,108,111, 99,
+ 97,108, 32,105, 61, 49, 13, 10,119,104,105,108,101, 32,105,
+ 60, 61, 35, 97,114,103, 32,100,111, 13, 10,105,102, 32, 95,
+ 99,111,110,116, 32, 97,110,100, 32,110,111,116, 32,115,116,
+ 114,102,105,110,100, 40, 95, 99,111,110,116, 44, 39, 91, 37,
+ 40, 44, 34, 93, 39, 41, 32, 97,110,100, 32, 13, 10,115,116,
+ 114,102,105,110,100, 40, 97,114,103, 91,105, 93, 44, 34, 94,
+ 91, 37, 97, 95,126, 93, 34, 41, 32,116,104,101,110, 32, 13,
+ 10,108,105,110,101, 32, 61, 32,108,105,110,101, 32, 46, 46,
+ 32, 39, 32, 39, 32, 13, 10,101,110,100, 13, 10,108,105,110,
+ 101, 32, 61, 32,108,105,110,101, 32, 46, 46, 32, 97,114,103,
+ 91,105, 93, 13, 10,105,102, 32, 97,114,103, 91,105, 93, 32,
+ 126, 61, 32, 39, 39, 32,116,104,101,110, 13, 10, 95, 99,111,
+ 110,116, 32, 61, 32,115,116,114,115,117, 98, 40, 97,114,103,
+ 91,105, 93, 44, 45, 49, 44, 45, 49, 41, 13, 10,101,110,100,
+ 13, 10,105, 32, 61, 32,105, 43, 49, 13, 10,101,110,100, 13,
+ 10,105,102, 32,115,116,114,102,105,110,100, 40, 97,114,103,
+ 91, 35, 97,114,103, 93, 44, 34, 91, 37, 47, 37, 41, 37, 59,
+ 37,123, 37,125, 93, 36, 34, 41, 32,116,104,101,110, 32, 13,
+ 10, 95, 99,111,110,116, 61,110,105,108, 32,108,105,110,101,
+ 32, 61, 32,108,105,110,101, 32, 46, 46, 32, 39, 92,110, 39,
+ 13, 10,101,110,100, 13, 10,114,101,116,117,114,110, 32,108,
+ 105,110,101, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110,
+ 99,116,105,111,110, 32,111,117,116,112,117,116, 32, 40, 46,
+ 46, 46, 41, 13, 10,108,111, 99, 97,108, 32, 97,114,103, 32,
+ 61, 32,123, 46, 46, 46,125, 13, 10,108,111, 99, 97,108, 32,
+ 105, 61, 49, 13, 10,119,104,105,108,101, 32,105, 60, 61, 35,
+ 97,114,103, 32,100,111, 13, 10,105,102, 32, 95, 99,111,110,
+ 116, 32, 97,110,100, 32,110,111,116, 32,115,116,114,102,105,
+ 110,100, 40, 95, 99,111,110,116, 44, 39, 91, 37, 40, 44, 34,
+ 93, 39, 41, 32, 97,110,100, 32, 13, 10,115,116,114,102,105,
+ 110,100, 40, 97,114,103, 91,105, 93, 44, 34, 94, 91, 37, 97,
+ 95,126, 93, 34, 41, 32,116,104,101,110, 32, 13, 10,119,114,
+ 105,116,101, 40, 39, 32, 39, 41, 32, 13, 10,101,110,100, 13,
+ 10,119,114,105,116,101, 40, 97,114,103, 91,105, 93, 41, 13,
+ 10,105,102, 32, 97,114,103, 91,105, 93, 32,126, 61, 32, 39,
+ 39, 32,116,104,101,110, 13, 10, 95, 99,111,110,116, 32, 61,
+ 32,115,116,114,115,117, 98, 40, 97,114,103, 91,105, 93, 44,
+ 45, 49, 44, 45, 49, 41, 13, 10,101,110,100, 13, 10,105, 32,
+ 61, 32,105, 43, 49, 13, 10,101,110,100, 13, 10,105,102, 32,
+ 115,116,114,102,105,110,100, 40, 97,114,103, 91, 35, 97,114,
+ 103, 93, 44, 34, 91, 37, 47, 37, 41, 37, 59, 37,123, 37,125,
+ 93, 36, 34, 41, 32,116,104,101,110, 32, 13, 10, 95, 99,111,
+ 110,116, 61,110,105,108, 32,119,114,105,116,101, 40, 39, 92,
+ 110, 39, 41, 13, 10,101,110,100, 13, 10,101,110,100, 13,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 32, 61,
+ 32,123, 10,125, 10, 99,108, 97,115,115, 70,101, 97,116,117,
+ 114,101, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108,
+ 97,115,115, 70,101, 97,116,117,114,101, 10,102,117,110, 99,
+ 116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,
+ 114,101, 58,115,117,112, 99,111,100,101, 32, 40, 41, 10,101,
+ 110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+ 115,115, 70,101, 97,116,117,114,101, 58,100,101, 99,108,116,
+ 121,112,101, 32, 40, 41, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,
+ 114,101, 58,114,101,103,105,115,116,101,114, 32, 40, 41, 10,
+ 101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+ 97,115,115, 70,101, 97,116,117,114,101, 58,112,114,101, 97,
+ 109, 98,108,101, 32, 40, 41, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,116,
+ 117,114,101, 58,105,115,118, 97,114,105, 97, 98,108,101, 32,
+ 40, 41, 10,114,101,116,117,114,110, 32,102, 97,108,115,101,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 70,101, 97,116,117,114,101, 58,114,101,113,
+ 117,105,114,101, 99,111,108,108,101, 99,116,105,111,110, 32,
+ 40,116, 41, 10,114,101,116,117,114,110, 32,102, 97,108,115,
+ 101, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 99,108, 97,115,115, 70,101, 97,116,117,114,101, 58, 98,117,
+ 105,108,100,110, 97,109,101,115, 32, 40, 41, 10,105,102, 32,
+ 115,101,108,102, 46,110, 97,109,101, 32, 97,110,100, 32,115,
+ 101,108,102, 46,110, 97,109,101,126, 61, 39, 39, 32,116,104,
+ 101,110, 10,108,111, 99, 97,108, 32,110, 32, 61, 32,115,112,
+ 108,105,116, 40,115,101,108,102, 46,110, 97,109,101, 44, 39,
+ 64, 39, 41, 10,115,101,108,102, 46,110, 97,109,101, 32, 61,
+ 32,110, 91, 49, 93, 10,105,102, 32,110,111,116, 32,110, 91,
+ 50, 93, 32,116,104,101,110, 10,110, 91, 50, 93, 32, 61, 32,
+ 97,112,112,108,121,114,101,110, 97,109,105,110,103, 40,110,
+ 91, 49, 93, 41, 10,101,110,100, 10,115,101,108,102, 46,108,
+ 110, 97,109,101, 32, 61, 32,110, 91, 50, 93, 32,111,114, 32,
+ 103,115,117, 98, 40,110, 91, 49, 93, 44, 34, 37, 91, 46, 45,
+ 37, 93, 34, 44, 34, 34, 41, 10,101,110,100, 10,115,101,108,
+ 102, 46,110, 97,109,101, 32, 61, 32,103,101,116,111,110,108,
+ 121,110, 97,109,101,115,112, 97, 99,101, 40, 41, 32, 46, 46,
+ 32,115,101,108,102, 46,110, 97,109,101, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 70,
+ 101, 97,116,117,114,101, 58,105,110, 99,111,110,116, 97,105,
+ 110,101,114, 32, 40,119,104,105, 99,104, 41, 10,105,102, 32,
+ 115,101,108,102, 46,112, 97,114,101,110,116, 32,116,104,101,
+ 110, 10,108,111, 99, 97,108, 32,112, 97,114,101,110,116, 32,
+ 61, 32,115,101,108,102, 46,112, 97,114,101,110,116, 10,119,
+ 104,105,108,101, 32,112, 97,114,101,110,116, 32,100,111, 10,
+ 105,102, 32,112, 97,114,101,110,116, 46, 99,108, 97,115,115,
+ 116,121,112,101, 32, 61, 61, 32,119,104,105, 99,104, 32,116,
+ 104,101,110, 10,114,101,116,117,114,110, 32,112, 97,114,101,
+ 110,116, 46,110, 97,109,101, 10,101,110,100, 10,112, 97,114,
+ 101,110,116, 32, 61, 32,112, 97,114,101,110,116, 46,112, 97,
+ 114,101,110,116, 10,101,110,100, 10,101,110,100, 10,114,101,
+ 116,117,114,110, 32,110,105,108, 10,101,110,100, 10,102,117,
+ 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,
+ 116,117,114,101, 58,105,110, 99,108, 97,115,115, 32, 40, 41,
+ 10,114,101,116,117,114,110, 32,115,101,108,102, 58,105,110,
+ 99,111,110,116, 97,105,110,101,114, 40, 39, 99,108, 97,115,
+ 115, 39, 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 58,
+ 105,110,109,111,100,117,108,101, 32, 40, 41, 10,114,101,116,
+ 117,114,110, 32,115,101,108,102, 58,105,110, 99,111,110,116,
+ 97,105,110,101,114, 40, 39,109,111,100,117,108,101, 39, 41,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 70,101, 97,116,117,114,101, 58,105,110,110,
+ 97,109,101,115,112, 97, 99,101, 32, 40, 41, 10,114,101,116,
+ 117,114,110, 32,115,101,108,102, 58,105,110, 99,111,110,116,
+ 97,105,110,101,114, 40, 39,110, 97,109,101,115,112, 97, 99,
+ 101, 39, 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 58,
+ 99,102,117,110, 99,110, 97,109,101, 32, 40,110, 41, 10,105,
+ 102, 32,115,101,108,102, 46,112, 97,114,101,110,116, 32,116,
+ 104,101,110, 10,110, 32, 61, 32,115,101,108,102, 46,112, 97,
+ 114,101,110,116, 58, 99,102,117,110, 99,110, 97,109,101, 40,
+ 110, 41, 10,101,110,100, 10,105,102, 32,115,101,108,102, 46,
+ 108,110, 97,109,101, 32, 97,110,100, 10,115,116,114,115,117,
+ 98, 40,115,101,108,102, 46,108,110, 97,109,101, 44, 49, 44,
+ 49, 41,126, 61, 34, 46, 34, 10,116,104,101,110, 10,114,101,
+ 116,117,114,110, 32,110, 46, 46, 39, 95, 39, 46, 46,115,101,
+ 108,102, 46,108,110, 97,109,101, 10,101,108,115,101, 10,114,
+ 101,116,117,114,110, 32,110, 46, 46, 39, 95, 39, 46, 46,115,
+ 101,108,102, 46,110, 97,109,101, 10,101,110,100, 10,101,110,
+ 100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,109, 32,
+ 61, 32,123, 10,108,105,110,101, 32, 61, 32, 39, 39, 44, 10,
+ 99,111,110,100, 32, 61, 32,110,105,108, 44, 10,125, 10, 99,
+ 108, 97,115,115, 86,101,114, 98, 97,116,105,109, 46, 95, 95,
+ 105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 86,101,
+ 114, 98, 97,116,105,109, 10,115,101,116,109,101,116, 97,116,
+ 97, 98,108,101, 40, 99,108, 97,115,115, 86,101,114, 98, 97,
+ 116,105,109, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,
+ 101, 41, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+ 115,115, 86,101,114, 98, 97,116,105,109, 58,112,114,101, 97,
+ 109, 98,108,101, 32, 40, 41, 10,105,102, 32,115,101,108,102,
+ 46, 99,111,110,100, 32, 61, 61, 32, 39, 39, 32,116,104,101,
+ 110, 10,119,114,105,116,101, 40,115,101,108,102, 46,108,105,
+ 110,101, 41, 10,101,110,100, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32, 99,108, 97,115,115, 86,101,114, 98,
+ 97,116,105,109, 58,115,117,112, 99,111,100,101, 32, 40, 41,
+ 10,105,102, 32,115,116,114,102,105,110,100, 40,115,101,108,
+ 102, 46, 99,111,110,100, 44, 39,115, 39, 41, 32,116,104,101,
+ 110, 10,119,114,105,116,101, 40,115,101,108,102, 46,108,105,
+ 110,101, 41, 10,119,114,105,116,101, 40, 39, 92,110, 39, 41,
+ 10,101,110,100, 10,101,110,100, 10,102,117,110, 99,116,105,
+ 111,110, 32, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,
+ 109, 58,114,101,103,105,115,116,101,114, 32, 40, 41, 10,105,
+ 102, 32,115,116,114,102,105,110,100, 40,115,101,108,102, 46,
+ 99,111,110,100, 44, 39,114, 39, 41, 32,116,104,101,110, 10,
+ 119,114,105,116,101, 40,115,101,108,102, 46,108,105,110,101,
+ 41, 10,101,110,100, 10,101,110,100, 10,102,117,110, 99,116,
+ 105,111,110, 32, 99,108, 97,115,115, 86,101,114, 98, 97,116,
+ 105,109, 58,112,114,105,110,116, 32, 40,105,100,101,110,116,
+ 44, 99,108,111,115,101, 41, 10,112,114,105,110,116, 40,105,
+ 100,101,110,116, 46, 46, 34, 86,101,114, 98, 97,116,105,109,
+ 123, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
+ 46, 46, 34, 32,108,105,110,101, 32, 61, 32, 39, 34, 46, 46,
+ 115,101,108,102, 46,108,105,110,101, 46, 46, 34, 39, 44, 34,
+ 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
+ 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 95, 86,101,114, 98,
+ 97,116,105,109, 32, 40,116, 41, 10,115,101,116,109,101,116,
+ 97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115, 86,
+ 101,114, 98, 97,116,105,109, 41, 10, 97,112,112,101,110,100,
+ 40,116, 41, 10,114,101,116,117,114,110, 32,116, 10,101,110,
+ 100, 10,102,117,110, 99,116,105,111,110, 32, 86,101,114, 98,
+ 97,116,105,109, 32, 40,108, 44, 99,111,110,100, 41, 10,105,
+ 102, 32,115,116,114,115,117, 98, 40,108, 44, 49, 44, 49, 41,
+ 32, 61, 61, 32, 39, 36, 39, 32,116,104,101,110, 10, 99,111,
+ 110,100, 32, 61, 32, 39,115,114, 39, 10,108, 32, 61, 32,115,
+ 116,114,115,117, 98, 40,108, 44, 50, 41, 10,101,110,100, 10,
+ 114,101,116,117,114,110, 32, 95, 86,101,114, 98, 97,116,105,
+ 109, 32,123, 10,108,105,110,101, 32, 61, 32,108, 44, 10, 99,
+ 111,110,100, 32, 61, 32, 99,111,110,100, 32,111,114, 32, 39,
+ 39, 44, 10,125, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 67,111,100,101, 32, 61, 32,123, 10,
+ 116,101,120,116, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,108,
+ 97,115,115, 67,111,100,101, 46, 95, 95,105,110,100,101,120,
+ 32, 61, 32, 99,108, 97,115,115, 67,111,100,101, 10,115,101,
+ 116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,115,
+ 115, 67,111,100,101, 44, 99,108, 97,115,115, 70,101, 97,116,
+ 117,114,101, 41, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 67,111,100,101, 58,114,101,103,105,115,116,
+ 101,114, 32, 40, 41, 10,108,111, 99, 97,108, 32,115, 32, 61,
+ 32, 99,108,101, 97,110, 40,115,101,108,102, 46,116,101,120,
+ 116, 41, 10,105,102, 32,110,111,116, 32,115, 32,116,104,101,
+ 110, 10,101,114,114,111,114, 40, 34,112, 97,114,115,101,114,
+ 32,101,114,114,111,114, 32,105,110, 32,101,109, 98,101,100,
+ 100,101,100, 32, 99,111,100,101, 34, 41, 10,101,110,100, 10,
+ 111,117,116,112,117,116, 40, 39, 92,110, 32,123, 32, 47, 42,
+ 32, 98,101,103,105,110, 32,101,109, 98,101,100,100,101,100,
+ 32,108,117, 97, 32, 99,111,100,101, 32, 42, 47, 92,110, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 32,115,116, 97,116,
+ 105, 99, 32,117,110,115,105,103,110,101,100, 32, 99,104, 97,
+ 114, 32, 66, 91, 93, 32, 61, 32,123, 92,110, 32, 39, 41, 10,
+ 108,111, 99, 97,108, 32,116, 61,123,110, 61, 48,125, 10,108,
+ 111, 99, 97,108, 32, 98, 32, 61, 32,103,115,117, 98, 40,115,
+ 44, 39, 40, 46, 41, 39, 44,102,117,110, 99,116,105,111,110,
+ 32, 40, 99, 41, 10,108,111, 99, 97,108, 32,101, 32, 61, 32,
+ 39, 39, 10,116, 46,110, 61,116, 46,110, 43, 49, 32,105,102,
+ 32,116, 46,110, 61, 61, 49, 53, 32,116,104,101,110, 32,116,
+ 46,110, 61, 48, 32,101, 61, 39, 92,110, 32, 39, 32,101,110,
+ 100, 10,114,101,116,117,114,110, 32,102,111,114,109, 97,116,
+ 40, 39, 37, 51,117, 44, 37,115, 39, 44,115,116,114, 98,121,
+ 116,101, 40, 99, 41, 44,101, 41, 10,101,110,100, 10, 41, 10,
+ 111,117,116,112,117,116, 40, 98, 46, 46,115,116,114, 98,121,
+ 116,101, 40, 34, 32, 34, 41, 41, 10,111,117,116,112,117,116,
+ 40, 39, 92,110, 32,125, 59, 92,110, 39, 41, 10,111,117,116,
+ 112,117,116, 40, 39, 32,105,102, 32, 40,108,117, 97, 76, 95,
+ 108,111, 97,100, 98,117,102,102,101,114, 40,116,111,108,117,
+ 97, 95, 83, 44, 40, 99,104, 97,114, 42, 41, 66, 44,115,105,
+ 122,101,111,102, 40, 66, 41, 44, 34,116,111,108,117, 97, 58,
+ 32,101,109, 98,101,100,100,101,100, 32, 76,117, 97, 32, 99,
+ 111,100,101, 34, 41, 32, 61, 61, 32, 76, 85, 65, 95, 79, 75,
+ 41, 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,
+ 108,117, 97, 95,112, 99, 97,108,108, 40,116,111,108,117, 97,
+ 95, 83, 44, 48, 44, 76, 85, 65, 95, 77, 85, 76, 84, 82, 69,
+ 84, 44, 48, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40,
+ 39, 32,125, 32, 47, 42, 32,101,110,100, 32,111,102, 32,101,
+ 109, 98,101,100,100,101,100, 32,108,117, 97, 32, 99,111,100,
+ 101, 32, 42, 47, 92,110, 92,110, 39, 41, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,
+ 111,100,101, 58,112,114,105,110,116, 32, 40,105,100,101,110,
+ 116, 44, 99,108,111,115,101, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 67,111,100,101,123, 34, 41,
+ 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+ 32,116,101,120,116, 32, 61, 32, 91, 91, 34, 46, 46,115,101,
+ 108,102, 46,116,101,120,116, 46, 46, 34, 93, 93, 44, 34, 41,
+ 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+ 125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 95, 67,111,100,101, 32,
+ 40,116, 41, 10,115,101,116,109,101,116, 97,116, 97, 98,108,
+ 101, 40,116, 44, 99,108, 97,115,115, 67,111,100,101, 41, 10,
+ 97,112,112,101,110,100, 40,116, 41, 10,114,101,116,117,114,
+ 110, 32,116, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 67,111,100,101, 32, 40,108, 41, 10,114,101,116,117,
+ 114,110, 32, 95, 67,111,100,101, 32,123, 10,116,101,120,116,
+ 32, 61, 32,108, 10,125, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 84,121,112,101,100,101,102, 32, 61,
+ 32,123, 10,117,116,121,112,101, 32, 61, 32, 39, 39, 44, 10,
+ 109,111,100, 32, 61, 32, 39, 39, 44, 10,116,121,112,101, 32,
+ 61, 32, 39, 39, 10,125, 10, 99,108, 97,115,115, 84,121,112,
+ 101,100,101,102, 46, 95, 95,105,110,100,101,120, 32, 61, 32,
+ 99,108, 97,115,115, 84,121,112,101,100,101,102, 10,102,117,
+ 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 84,121,112,
+ 101,100,101,102, 58,112,114,105,110,116, 32, 40,105,100,101,
+ 110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,110,116,
+ 40,105,100,101,110,116, 46, 46, 34, 84,121,112,101,100,101,
+ 102,123, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,117,116,121,112,101, 32, 61, 32, 39, 34,
+ 46, 46,115,101,108,102, 46,117,116,121,112,101, 46, 46, 34,
+ 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,109,111,100, 32, 61, 32, 39, 34, 46, 46,
+ 115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34, 41,
+ 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+ 32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+ 102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10,112,
+ 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,125, 34,
+ 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10,102,117,
+ 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 84,121,112,
+ 101,100,101,102, 58,105,115,118, 97,114,105, 97, 98,108,101,
+ 32, 40, 41, 10,114,101,116,117,114,110, 32,102, 97,108,115,
+ 101, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 95, 84,121,112,101,100,101,102, 32, 40,116, 41, 10,115,101,
+ 116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,108,
+ 97,115,115, 84,121,112,101,100,101,102, 41, 10, 97,112,112,
+ 101,110,100,116,121,112,101,100,101,102, 40,116, 41, 10,114,
+ 101,116,117,114,110, 32,116, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32, 84,121,112,101,100,101,102, 32, 40,
+ 115, 41, 10,105,102, 32,115,116,114,102,105,110,100, 40,115,
+ 44, 39, 91, 37, 42, 38, 93, 39, 41, 32,116,104,101,110, 10,
+ 116,111,108,117, 97, 95,101,114,114,111,114, 40, 34, 35,105,
+ 110,118, 97,108,105,100, 32,116,121,112,101,100,101,102, 58,
+ 32,112,111,105,110,116,101,114,115, 32, 40, 97,110,100, 32,
+ 114,101,102,101,114,101,110, 99,101,115, 41, 32, 97,114,101,
+ 32,110,111,116, 32,115,117,112,112,111,114,116,101,100, 34,
+ 41, 10,101,110,100, 10,108,111, 99, 97,108, 32,116, 32, 61,
+ 32,115,112,108,105,116, 40,103,115,117, 98, 40,115, 44, 34,
+ 37,115, 37,115, 42, 34, 44, 34, 32, 34, 41, 44, 34, 32, 34,
+ 41, 10,105,102, 32,110,111,116, 32,105,115, 98, 97,115,105,
+ 99, 40,116, 91,116, 46,110, 93, 41, 32,116,104,101,110, 10,
+ 114,101,116,117,114,110, 32, 95, 84,121,112,101,100,101,102,
+ 32,123, 10,117,116,121,112,101, 32, 61, 32,116, 91,116, 46,
+ 110, 93, 44, 10,116,121,112,101, 32, 61, 32,116, 91,116, 46,
+ 110, 45, 49, 93, 44, 10,109,111,100, 32, 61, 32, 99,111,110,
+ 99, 97,116, 40,116, 44, 49, 44,116, 46,110, 45, 50, 41, 44,
+ 10,125, 10,101,108,115,101, 10,114,101,116,117,114,110, 32,
+ 110,105,108, 10,101,110,100, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10,103,108,111, 98, 97,108, 95,116,121,112,101,100,101,102,
+ 115, 32, 61, 32,123,125, 10,103,108,111, 98, 97,108, 95,101,
+ 110,117,109,115, 32, 61, 32,123,125, 10, 99,108, 97,115,115,
+ 67,111,110,116, 97,105,110,101,114, 32, 61, 10,123, 10, 99,
+ 117,114,114, 32, 61, 32,110,105,108, 44, 10,125, 10, 99,108,
+ 97,115,115, 67,111,110,116, 97,105,110,101,114, 46, 95, 95,
+ 105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 67,111,
+ 110,116, 97,105,110,101,114, 10,115,101,116,109,101,116, 97,
+ 116, 97, 98,108,101, 40, 99,108, 97,115,115, 67,111,110,116,
+ 97,105,110,101,114, 44, 99,108, 97,115,115, 70,101, 97,116,
+ 117,114,101, 41, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 58,100,
+ 101, 99,108,116,121,112,101, 32, 40, 41, 10,112,117,115,104,
+ 40,115,101,108,102, 41, 10,108,111, 99, 97,108, 32,105, 61,
+ 49, 10,119,104,105,108,101, 32,115,101,108,102, 91,105, 93,
+ 32,100,111, 10,115,101,108,102, 91,105, 93, 58,100,101, 99,
+ 108,116,121,112,101, 40, 41, 10,105, 32, 61, 32,105, 43, 49,
+ 10,101,110,100, 10,112,111,112, 40, 41, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,
+ 111,110,116, 97,105,110,101,114, 58,115,117,112, 99,111,100,
+ 101, 32, 40, 41, 10,112,117,115,104, 40,115,101,108,102, 41,
+ 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
+ 101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,115,101,
+ 108,102, 91,105, 93, 58,115,117,112, 99,111,100,101, 40, 41,
+ 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,112,111,
+ 112, 40, 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+ 114, 58,104, 97,115,118, 97,114, 32, 40, 41, 10,108,111, 99,
+ 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,
+ 108,102, 91,105, 93, 32,100,111, 10,105,102, 32,115,101,108,
+ 102, 91,105, 93, 58,105,115,118, 97,114,105, 97, 98,108,101,
+ 40, 41, 32,116,104,101,110, 10,114,101,116,117,114,110, 32,
+ 49, 10,101,110,100, 10,105, 32, 61, 32,105, 43, 49, 10,101,
+ 110,100, 10,114,101,116,117,114,110, 32, 48, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 95, 67,111,110,116,
+ 97,105,110,101,114, 32, 40,115,101,108,102, 41, 10,115,101,
+ 116,109,101,116, 97,116, 97, 98,108,101, 40,115,101,108,102,
+ 44, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+ 41, 10,115,101,108,102, 46,110, 32, 61, 32, 48, 10,115,101,
+ 108,102, 46,116,121,112,101,100,101,102,115, 32, 61, 32,123,
+ 116,111,108,117, 97, 95,110, 61, 48,125, 10,115,101,108,102,
+ 46,117,115,101,114,116,121,112,101,115, 32, 61, 32,123,125,
+ 10,115,101,108,102, 46,101,110,117,109,115, 32, 61, 32,123,
+ 116,111,108,117, 97, 95,110, 61, 48,125, 10,115,101,108,102,
+ 46,108,110, 97,109,101,115, 32, 61, 32,123,125, 10,114,101,
+ 116,117,114,110, 32,115,101,108,102, 10,101,110,100, 10,102,
+ 117,110, 99,116,105,111,110, 32,112,117,115,104, 32, 40,116,
+ 41, 10,116, 46,112,114,111,120, 32, 61, 32, 99,108, 97,115,
+ 115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+ 10, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+ 46, 99,117,114,114, 32, 61, 32,116, 10,101,110,100, 10,102,
+ 117,110, 99,116,105,111,110, 32,112,111,112, 32, 40, 41, 10,
+ 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 46,
+ 99,117,114,114, 32, 61, 32, 99,108, 97,115,115, 67,111,110,
+ 116, 97,105,110,101,114, 46, 99,117,114,114, 46,112,114,111,
+ 120, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 103,101,116, 99,117,114,114,110, 97,109,101,115,112, 97, 99,
+ 101, 32, 40, 41, 10,114,101,116,117,114,110, 32,103,101,116,
+ 110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,115,
+ 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 41,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 97,
+ 112,112,101,110,100, 32, 40,116, 41, 10,114,101,116,117,114,
+ 110, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+ 114, 46, 99,117,114,114, 58, 97,112,112,101,110,100, 40,116,
+ 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 97,112,112,101,110,100,116,121,112,101,100,101,102, 32, 40,
+ 116, 41, 10,114,101,116,117,114,110, 32, 99,108, 97,115,115,
+ 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 58,
+ 97,112,112,101,110,100,116,121,112,101,100,101,102, 40,116,
+ 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 97,112,112,101,110,100,117,115,101,114,116,121,112,101, 32,
+ 40,116, 41, 10,114,101,116,117,114,110, 32, 99,108, 97,115,
+ 115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+ 58, 97,112,112,101,110,100,117,115,101,114,116,121,112,101,
+ 40,116, 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 97,112,112,101,110,100,101,110,117,109, 32, 40,116,
+ 41, 10,114,101,116,117,114,110, 32, 99,108, 97,115,115, 67,
+ 111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 58, 97,
+ 112,112,101,110,100,101,110,117,109, 40,116, 41, 10,101,110,
+ 100, 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,108,
+ 121,116,121,112,101,100,101,102, 32, 40,116,121,112,101, 41,
+ 10,114,101,116,117,114,110, 32, 99,108, 97,115,115, 67,111,
+ 110,116, 97,105,110,101,114, 46, 99,117,114,114, 58, 97,112,
+ 112,108,121,116,121,112,101,100,101,102, 40,116,121,112,101,
+ 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 102,105,110,100,116,121,112,101, 32, 40,116,121,112,101, 41,
+ 10,108,111, 99, 97,108, 32,116, 32, 61, 32, 99,108, 97,115,
+ 115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+ 58,102,105,110,100,116,121,112,101, 40,116,121,112,101, 41,
+ 10,114,101,116,117,114,110, 32,116, 10,101,110,100, 10,102,
+ 117,110, 99,116,105,111,110, 32,105,115,116,121,112,101,100,
+ 101,102, 32, 40,116,121,112,101, 41, 10,114,101,116,117,114,
+ 110, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+ 114, 46, 99,117,114,114, 58,105,115,116,121,112,101,100,101,
+ 102, 40,116,121,112,101, 41, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32,102,117,108,108,116,121,112,101, 32,
+ 40,116, 41, 10,108,111, 99, 97,108, 32, 99,117,114,114, 32,
+ 61, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+ 114, 46, 99,117,114,114, 10,119,104,105,108,101, 32, 99,117,
+ 114,114, 32,100,111, 10,105,102, 32, 99,117,114,114, 32,116,
+ 104,101,110, 10,105,102, 32, 99,117,114,114, 46,116,121,112,
+ 101,100,101,102,115, 32, 97,110,100, 32, 99,117,114,114, 46,
+ 116,121,112,101,100,101,102,115, 91,116, 93, 32,116,104,101,
+ 110, 10,114,101,116,117,114,110, 32, 99,117,114,114, 46,116,
+ 121,112,101,100,101,102,115, 91,116, 93, 10,101,108,115,101,
+ 105,102, 32, 99,117,114,114, 46,117,115,101,114,116,121,112,
+ 101,115, 32, 97,110,100, 32, 99,117,114,114, 46,117,115,101,
+ 114,116,121,112,101,115, 91,116, 93, 32,116,104,101,110, 10,
+ 114,101,116,117,114,110, 32, 99,117,114,114, 46,117,115,101,
+ 114,116,121,112,101,115, 91,116, 93, 10,101,110,100, 10,101,
+ 110,100, 10, 99,117,114,114, 32, 61, 32, 99,117,114,114, 46,
+ 112,114,111,120, 10,101,110,100, 10,114,101,116,117,114,110,
+ 32,116, 10,101,110,100, 10,102,117,110, 99,116,105,111,110,
+ 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+ 58,114,101,113,117,105,114,101, 99,111,108,108,101, 99,116,
+ 105,111,110, 32, 40,116, 41, 10,112,117,115,104, 40,115,101,
+ 108,102, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,108,
+ 111, 99, 97,108, 32,114, 32, 61, 32,102, 97,108,115,101, 10,
+ 119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,
+ 111, 10,114, 32, 61, 32,115,101,108,102, 91,105, 93, 58,114,
+ 101,113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,
+ 110, 40,116, 41, 32,111,114, 32,114, 10,105, 32, 61, 32,105,
+ 43, 49, 10,101,110,100, 10,112,111,112, 40, 41, 10,114,101,
+ 116,117,114,110, 32,114, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32,103,101,116,110, 97,109,101,115,112, 97,
+ 99,101, 32, 40, 99,117,114,114, 41, 10,108,111, 99, 97,108,
+ 32,110, 97,109,101,115,112, 97, 99,101, 32, 61, 32, 39, 39,
+ 10,119,104,105,108,101, 32, 99,117,114,114, 32,100,111, 10,
+ 105,102, 32, 99,117,114,114, 32, 97,110,100, 10, 40, 32, 99,
+ 117,114,114, 46, 99,108, 97,115,115,116,121,112,101, 32, 61,
+ 61, 32, 39, 99,108, 97,115,115, 39, 32,111,114, 32, 99,117,
+ 114,114, 46, 99,108, 97,115,115,116,121,112,101, 32, 61, 61,
+ 32, 39,110, 97,109,101,115,112, 97, 99,101, 39, 41, 10,116,
+ 104,101,110, 10,110, 97,109,101,115,112, 97, 99,101, 32, 61,
+ 32, 99,117,114,114, 46,110, 97,109,101, 32, 46, 46, 32, 39,
+ 58, 58, 39, 32, 46, 46, 32,110, 97,109,101,115,112, 97, 99,
+ 101, 10,101,110,100, 10, 99,117,114,114, 32, 61, 32, 99,117,
+ 114,114, 46,112,114,111,120, 10,101,110,100, 10,114,101,116,
+ 117,114,110, 32,110, 97,109,101,115,112, 97, 99,101, 10,101,
+ 110,100, 10,102,117,110, 99,116,105,111,110, 32,103,101,116,
+ 111,110,108,121,110, 97,109,101,115,112, 97, 99,101, 32, 40,
+ 41, 10,108,111, 99, 97,108, 32, 99,117,114,114, 32, 61, 32,
+ 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 46,
+ 99,117,114,114, 10,108,111, 99, 97,108, 32,110, 97,109,101,
+ 115,112, 97, 99,101, 32, 61, 32, 39, 39, 10,119,104,105,108,
+ 101, 32, 99,117,114,114, 32,100,111, 10,105,102, 32, 99,117,
+ 114,114, 46, 99,108, 97,115,115,116,121,112,101, 32, 61, 61,
+ 32, 39, 99,108, 97,115,115, 39, 32,116,104,101,110, 10,114,
+ 101,116,117,114,110, 32,110, 97,109,101,115,112, 97, 99,101,
+ 10,101,108,115,101,105,102, 32, 99,117,114,114, 46, 99,108,
+ 97,115,115,116,121,112,101, 32, 61, 61, 32, 39,110, 97,109,
+ 101,115,112, 97, 99,101, 39, 32,116,104,101,110, 10,110, 97,
+ 109,101,115,112, 97, 99,101, 32, 61, 32, 99,117,114,114, 46,
+ 110, 97,109,101, 32, 46, 46, 32, 39, 58, 58, 39, 32, 46, 46,
+ 32,110, 97,109,101,115,112, 97, 99,101, 10,101,110,100, 10,
+ 99,117,114,114, 32, 61, 32, 99,117,114,114, 46,112,114,111,
+ 120, 10,101,110,100, 10,114,101,116,117,114,110, 32,110, 97,
+ 109,101,115,112, 97, 99,101, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32,105,115,101,110,117,109, 32, 40,116,
+ 121,112,101, 41, 10,114,101,116,117,114,110, 32, 99,108, 97,
+ 115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,
+ 114, 58,105,115,101,110,117,109, 40,116,121,112,101, 41, 10,
+ 101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+ 97,115,115, 67,111,110,116, 97,105,110,101,114, 58, 97,112,
+ 112,101,110,100, 32, 40,116, 41, 10,115,101,108,102, 46,110,
+ 32, 61, 32,115,101,108,102, 46,110, 32, 43, 32, 49, 10,115,
+ 101,108,102, 91,115,101,108,102, 46,110, 93, 32, 61, 32,116,
+ 10,116, 46,112, 97,114,101,110,116, 32, 61, 32,115,101,108,
+ 102, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 58,
+ 97,112,112,101,110,100,116,121,112,101,100,101,102, 32, 40,
+ 116, 41, 10,108,111, 99, 97,108, 32,110, 97,109,101,115,112,
+ 97, 99,101, 32, 61, 32,103,101,116,110, 97,109,101,115,112,
+ 97, 99,101, 40, 99,108, 97,115,115, 67,111,110,116, 97,105,
+ 110,101,114, 46, 99,117,114,114, 41, 10,115,101,108,102, 46,
+ 116,121,112,101,100,101,102,115, 46,116,111,108,117, 97, 95,
+ 110, 32, 61, 32,115,101,108,102, 46,116,121,112,101,100,101,
+ 102,115, 46,116,111,108,117, 97, 95,110, 32, 43, 32, 49, 10,
+ 115,101,108,102, 46,116,121,112,101,100,101,102,115, 91,115,
+ 101,108,102, 46,116,121,112,101,100,101,102,115, 46,116,111,
+ 108,117, 97, 95,110, 93, 32, 61, 32,116, 10,115,101,108,102,
+ 46,116,121,112,101,100,101,102,115, 91,116, 46,117,116,121,
+ 112,101, 93, 32, 61, 32,110, 97,109,101,115,112, 97, 99,101,
+ 32, 46, 46, 32,116, 46,117,116,121,112,101, 10,103,108,111,
+ 98, 97,108, 95,116,121,112,101,100,101,102,115, 91,110, 97,
+ 109,101,115,112, 97, 99,101, 46, 46,116, 46,117,116,121,112,
+ 101, 93, 32, 61, 32,116, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,
+ 105,110,101,114, 58, 97,112,112,101,110,100,117,115,101,114,
+ 116,121,112,101, 32, 40,116, 41, 10,108,111, 99, 97,108, 32,
+ 99,111,110,116, 97,105,110,101,114, 10,105,102, 32,116, 32,
+ 61, 61, 32,115,101,108,102, 46,110, 97,109,101, 32,116,104,
+ 101,110, 10, 99,111,110,116, 97,105,110,101,114, 32, 61, 32,
+ 115,101,108,102, 46,112,114,111,120, 10,101,108,115,101, 10,
+ 99,111,110,116, 97,105,110,101,114, 32, 61, 32,115,101,108,
+ 102, 10,101,110,100, 10,108,111, 99, 97,108, 32,102,116, 32,
+ 61, 32,103,101,116,110, 97,109,101,115,112, 97, 99,101, 40,
+ 99,111,110,116, 97,105,110,101,114, 41, 32, 46, 46, 32,116,
+ 10, 99,111,110,116, 97,105,110,101,114, 46,117,115,101,114,
+ 116,121,112,101,115, 91,116, 93, 32, 61, 32,102,116, 10, 95,
+ 117,115,101,114,116,121,112,101, 91,102,116, 93, 32, 61, 32,
+ 102,116, 10,114,101,116,117,114,110, 32,102,116, 10,101,110,
+ 100, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+ 115, 67,111,110,116, 97,105,110,101,114, 58, 97,112,112,101,
+ 110,100,101,110,117,109, 32, 40,116, 41, 10,108,111, 99, 97,
+ 108, 32,110, 97,109,101,115,112, 97, 99,101, 32, 61, 32,103,
+ 101,116,110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,
+ 115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,
+ 114, 41, 10,115,101,108,102, 46,101,110,117,109,115, 46,116,
+ 111,108,117, 97, 95,110, 32, 61, 32,115,101,108,102, 46,101,
+ 110,117,109,115, 46,116,111,108,117, 97, 95,110, 32, 43, 32,
+ 49, 10,115,101,108,102, 46,101,110,117,109,115, 91,115,101,
+ 108,102, 46,101,110,117,109,115, 46,116,111,108,117, 97, 95,
+ 110, 93, 32, 61, 32,116, 10,103,108,111, 98, 97,108, 95,101,
+ 110,117,109,115, 91,110, 97,109,101,115,112, 97, 99,101, 46,
+ 46,116, 46,110, 97,109,101, 93, 32, 61, 32,116, 10,101,110,
+ 100, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+ 115, 67,111,110,116, 97,105,110,101,114, 58,111,118,101,114,
+ 108,111, 97,100, 32, 40,108,110, 97,109,101, 41, 10,105,102,
+ 32,110,111,116, 32,115,101,108,102, 46,108,110, 97,109,101,
+ 115, 91,108,110, 97,109,101, 93, 32,116,104,101,110, 10,115,
+ 101,108,102, 46,108,110, 97,109,101,115, 91,108,110, 97,109,
+ 101, 93, 32, 61, 32, 48, 10,101,108,115,101, 10,115,101,108,
+ 102, 46,108,110, 97,109,101,115, 91,108,110, 97,109,101, 93,
+ 32, 61, 32,115,101,108,102, 46,108,110, 97,109,101,115, 91,
+ 108,110, 97,109,101, 93, 32, 43, 32, 49, 10,101,110,100, 10,
+ 114,101,116,117,114,110, 32,102,111,114,109, 97,116, 40, 34,
+ 37, 48, 50,100, 34, 44,115,101,108,102, 46,108,110, 97,109,
+ 101,115, 91,108,110, 97,109,101, 93, 41, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,
+ 111,110,116, 97,105,110,101,114, 58, 97,112,112,108,121,116,
+ 121,112,101,100,101,102, 32, 40,116,121,112,101, 41, 10,105,
+ 102, 32,103,108,111, 98, 97,108, 95,116,121,112,101,100,101,
+ 102,115, 91,116,121,112,101, 93, 32,116,104,101,110, 10,108,
+ 111, 99, 97,108, 32,109,111,100, 49, 44, 32,116,121,112,101,
+ 49, 32, 61, 32,103,108,111, 98, 97,108, 95,116,121,112,101,
+ 100,101,102,115, 91,116,121,112,101, 93, 46,109,111,100, 44,
+ 32,103,108,111, 98, 97,108, 95,116,121,112,101,100,101,102,
+ 115, 91,116,121,112,101, 93, 46,116,121,112,101, 10,108,111,
+ 99, 97,108, 32,109,111,100, 50, 44, 32,116,121,112,101, 50,
+ 32, 61, 32, 97,112,112,108,121,116,121,112,101,100,101,102,
+ 40,116,121,112,101, 49, 41, 10,114,101,116,117,114,110, 32,
+ 109,111,100, 50, 32, 46, 46, 32, 39, 32, 39, 32, 46, 46, 32,
+ 109,111,100, 49, 44, 32,116,121,112,101, 50, 10,101,110,100,
+ 10,108,111, 99, 97,108, 32, 98, 97,115,101,116,121,112,101,
+ 32, 61, 32,103,115,117, 98, 40,116,121,112,101, 44, 34, 94,
+ 46, 42, 58, 58, 34, 44, 34, 34, 41, 10,108,111, 99, 97,108,
+ 32,101,110,118, 32, 61, 32,115,101,108,102, 10,119,104,105,
+ 108,101, 32,101,110,118, 32,100,111, 10,105,102, 32,101,110,
+ 118, 46,116,121,112,101,100,101,102,115, 32,116,104,101,110,
+ 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
+ 101, 32,101,110,118, 46,116,121,112,101,100,101,102,115, 91,
+ 105, 93, 32,100,111, 10,105,102, 32,101,110,118, 46,116,121,
+ 112,101,100,101,102,115, 91,105, 93, 46,117,116,121,112,101,
+ 32, 61, 61, 32, 98, 97,115,101,116,121,112,101, 32,116,104,
+ 101,110, 10,108,111, 99, 97,108, 32,109,111,100, 49, 44,116,
+ 121,112,101, 49, 32, 61, 32,101,110,118, 46,116,121,112,101,
+ 100,101,102,115, 91,105, 93, 46,109,111,100, 44,101,110,118,
+ 46,116,121,112,101,100,101,102,115, 91,105, 93, 46,116,121,
+ 112,101, 10,108,111, 99, 97,108, 32,109,111,100, 50, 44,116,
+ 121,112,101, 50, 32, 61, 32, 97,112,112,108,121,116,121,112,
+ 101,100,101,102, 40,116,121,112,101, 49, 41, 10,114,101,116,
+ 117,114,110, 32,109,111,100, 50, 46, 46, 39, 32, 39, 46, 46,
+ 109,111,100, 49, 44,116,121,112,101, 50, 10,101,110,100, 10,
+ 105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,101,110,100,
+ 10,101,110,118, 32, 61, 32,101,110,118, 46,112, 97,114,101,
+ 110,116, 10,101,110,100, 10,114,101,116,117,114,110, 32, 39,
+ 39, 44,116,121,112,101, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,
+ 105,110,101,114, 58,105,115,116,121,112,101,100,101,102, 32,
+ 40,116,121,112,101, 41, 10,108,111, 99, 97,108, 32,101,110,
+ 118, 32, 61, 32,115,101,108,102, 10,119,104,105,108,101, 32,
+ 101,110,118, 32,100,111, 10,105,102, 32,101,110,118, 46,116,
+ 121,112,101,100,101,102,115, 32,116,104,101,110, 10,108,111,
+ 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,101,
+ 110,118, 46,116,121,112,101,100,101,102,115, 91,105, 93, 32,
+ 100,111, 10,105,102, 32,101,110,118, 46,116,121,112,101,100,
+ 101,102,115, 91,105, 93, 46,117,116,121,112,101, 32, 61, 61,
+ 32,116,121,112,101, 32,116,104,101,110, 10,114,101,116,117,
+ 114,110, 32,116,121,112,101, 10,101,110,100, 10,105, 32, 61,
+ 32,105, 43, 49, 10,101,110,100, 10,101,110,100, 10,101,110,
+ 118, 32, 61, 32,101,110,118, 46,112, 97,114,101,110,116, 10,
+ 101,110,100, 10,114,101,116,117,114,110, 32,110,105,108, 10,
+ 101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+ 97,115,115, 67,111,110,116, 97,105,110,101,114, 58,102,105,
+ 110,100,116,121,112,101, 32, 40,116, 41, 10,108,111, 99, 97,
+ 108, 32, 99,117,114,114, 32, 61, 32,115,101,108,102, 10,119,
+ 104,105,108,101, 32, 99,117,114,114, 32,100,111, 10,105,102,
+ 32, 99,117,114,114, 46,116,121,112,101,100,101,102,115, 32,
+ 97,110,100, 32, 99,117,114,114, 46,116,121,112,101,100,101,
+ 102,115, 91,116, 93, 32,116,104,101,110, 10,114,101,116,117,
+ 114,110, 32, 99,117,114,114, 46,116,121,112,101,100,101,102,
+ 115, 91,116, 93, 10,101,108,115,101,105,102, 32, 99,117,114,
+ 114, 46,117,115,101,114,116,121,112,101,115, 32, 97,110,100,
+ 32, 99,117,114,114, 46,117,115,101,114,116,121,112,101,115,
+ 91,116, 93, 32,116,104,101,110, 10,114,101,116,117,114,110,
+ 32, 99,117,114,114, 46,117,115,101,114,116,121,112,101,115,
+ 91,116, 93, 10,101,110,100, 10, 99,117,114,114, 32, 61, 32,
+ 99,117,114,114, 46,112,114,111,120, 10,101,110,100, 10,105,
+ 102, 32, 95, 98, 97,115,105, 99, 91,116, 93, 32,116,104,101,
+ 110, 10,114,101,116,117,114,110, 32,116, 10,101,110,100, 10,
+ 114,101,116,117,114,110, 32,110,105,108, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,
+ 111,110,116, 97,105,110,101,114, 58,105,115,101,110,117,109,
+ 32, 40,116,121,112,101, 41, 10,105,102, 32,103,108,111, 98,
+ 97,108, 95,101,110,117,109,115, 91,116,121,112,101, 93, 32,
+ 116,104,101,110, 10,114,101,116,117,114,110, 32,116,114,117,
+ 101, 10,101,110,100, 10,108,111, 99, 97,108, 32, 98, 97,115,
+ 101,116,121,112,101, 32, 61, 32,103,115,117, 98, 40,116,121,
+ 112,101, 44, 34, 94, 46, 42, 58, 58, 34, 44, 34, 34, 41, 10,
+ 108,111, 99, 97,108, 32,101,110,118, 32, 61, 32,115,101,108,
+ 102, 10,119,104,105,108,101, 32,101,110,118, 32,100,111, 10,
+ 105,102, 32,101,110,118, 46,101,110,117,109,115, 32,116,104,
+ 101,110, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,
+ 105,108,101, 32,101,110,118, 46,101,110,117,109,115, 91,105,
+ 93, 32,100,111, 10,105,102, 32,101,110,118, 46,101,110,117,
+ 109,115, 91,105, 93, 46,110, 97,109,101, 32, 61, 61, 32, 98,
+ 97,115,101,116,121,112,101, 32,116,104,101,110, 10,114,101,
+ 116,117,114,110, 32,116,114,117,101, 10,101,110,100, 10,105,
+ 32, 61, 32,105, 43, 49, 10,101,110,100, 10,101,110,100, 10,
+ 101,110,118, 32, 61, 32,101,110,118, 46,112, 97,114,101,110,
+ 116, 10,101,110,100, 10,114,101,116,117,114,110, 32,102, 97,
+ 108,115,101, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+ 114, 58,100,111,112, 97,114,115,101, 32, 40,115, 41, 10,100,
+ 111, 10,108,111, 99, 97,108, 32, 98, 44,101, 44, 99,111,100,
+ 101, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34,
+ 94, 37,115, 42, 40, 37, 98, 92, 49, 92, 50, 41, 34, 41, 10,
+ 105,102, 32, 98, 32,116,104,101,110, 10, 67,111,100,101, 40,
+ 115,116,114,115,117, 98, 40, 99,111,100,101, 44, 50, 44, 45,
+ 50, 41, 41, 10,114,101,116,117,114,110, 32,115,116,114,115,
+ 117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,
+ 110,100, 10,100,111, 10,108,111, 99, 97,108, 32, 98, 44,101,
+ 44, 99,111,100,101, 32, 61, 32,115,116,114,102,105,110,100,
+ 40,115, 44, 34, 94, 37,115, 42, 40, 37, 98, 92, 51, 92, 52,
+ 41, 34, 41, 10,105,102, 32, 98, 32,116,104,101,110, 10, 99,
+ 111,100,101, 32, 61, 32, 39,123, 39, 46, 46,115,116,114,115,
+ 117, 98, 40, 99,111,100,101, 44, 50, 44, 45, 50, 41, 46, 46,
+ 39, 92,110,125, 92,110, 39, 10, 86,101,114, 98, 97,116,105,
+ 109, 40, 99,111,100,101, 44, 39,114, 39, 41, 10,114,101,116,
+ 117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43,
+ 49, 41, 10,101,110,100, 10,101,110,100, 10,100,111, 10,108,
+ 111, 99, 97,108, 32, 98, 44,101, 44,108,105,110,101, 32, 61,
+ 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115,
+ 42, 37, 36, 40, 46, 45, 92,110, 41, 34, 41, 10,105,102, 32,
+ 98, 32,116,104,101,110, 10, 86,101,114, 98, 97,116,105,109,
+ 40,108,105,110,101, 41, 10,114,101,116,117,114,110, 32,115,
+ 116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,
+ 100, 10,101,110,100, 10,100,111, 10,108,111, 99, 97,108, 32,
+ 98, 44,101, 44,110, 97,109,101, 44, 98,111,100,121, 32, 61,
+ 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115,
+ 42,109,111,100,117,108,101, 37,115, 37,115, 42, 40, 91, 95,
+ 37,119, 93, 91, 95, 37,119, 93, 42, 41, 37,115, 42, 40, 37,
+ 98,123,125, 41, 37,115, 42, 34, 41, 10,105,102, 32, 98, 32,
+ 116,104,101,110, 10, 95, 99,117,114,114, 95, 99,111,100,101,
+ 32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101,
+ 41, 10, 77,111,100,117,108,101, 40,110, 97,109,101, 44, 98,
+ 111,100,121, 41, 10,114,101,116,117,114,110, 32,115,116,114,
+ 115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,
+ 101,110,100, 10,100,111, 10,108,111, 99, 97,108, 32, 98, 44,
+ 101, 44,110, 97,109,101, 44, 98,111,100,121, 32, 61, 32,115,
+ 116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42,110,
+ 97,109,101,115,112, 97, 99,101, 37,115, 37,115, 42, 40, 91,
+ 95, 37,119, 93, 91, 95, 37,119, 93, 42, 41, 37,115, 42, 40,
+ 37, 98,123,125, 41, 37,115, 42, 34, 41, 10,105,102, 32, 98,
+ 32,116,104,101,110, 10, 95, 99,117,114,114, 95, 99,111,100,
+ 101, 32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,
+ 101, 41, 10, 78, 97,109,101,115,112, 97, 99,101, 40,110, 97,
+ 109,101, 44, 98,111,100,121, 41, 10,114,101,116,117,114,110,
+ 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,
+ 101,110,100, 10,101,110,100, 10,100,111, 10,108,111, 99, 97,
+ 108, 32, 98, 44,101, 44,110, 97,109,101, 32, 61, 32,115,116,
+ 114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42, 35,100,
+ 101,102,105,110,101, 37,115, 37,115, 42, 40, 91, 94, 37,115,
+ 93, 42, 41, 91, 94, 92,110, 93, 42, 92,110, 37,115, 42, 34,
+ 41, 10,105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,117,
+ 114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117,
+ 98, 40,115, 44, 98, 44,101, 41, 10, 68,101,102,105,110,101,
+ 40,110, 97,109,101, 41, 10,114,101,116,117,114,110, 32,115,
+ 116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,
+ 100, 10,101,110,100, 10,100,111, 10,108,111, 99, 97,108, 32,
+ 98, 44,101, 44,110, 97,109,101, 44, 98,111,100,121, 32, 61,
+ 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115,
+ 42,101,110,117,109, 37,115, 43, 40, 37, 83, 42, 41, 37,115,
+ 42, 40, 37, 98,123,125, 41, 37,115, 42, 59, 63, 37,115, 42,
+ 34, 41, 10,105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,
+ 117,114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,
+ 117, 98, 40,115, 44, 98, 44,101, 41, 10, 69,110,117,109,101,
+ 114, 97,116,101, 40,110, 97,109,101, 44, 98,111,100,121, 41,
+ 10,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+ 115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,110,100, 10,
+ 100,111, 10,108,111, 99, 97,108, 32, 98, 44,101, 44, 98,111,
+ 100,121, 44,110, 97,109,101, 32, 61, 32,115,116,114,102,105,
+ 110,100, 40,115, 44, 34, 94, 37,115, 42,116,121,112,101,100,
+ 101,102, 37,115, 43,101,110,117,109, 91, 94,123, 93, 42, 40,
+ 37, 98,123,125, 41, 37,115, 42, 40, 91, 37,119, 95, 93, 91,
+ 94, 37,115, 93, 42, 41, 37,115, 42, 59, 37,115, 42, 34, 41,
+ 10,105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,117,114,
+ 114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117, 98,
+ 40,115, 44, 98, 44,101, 41, 10, 69,110,117,109,101,114, 97,
+ 116,101, 40,110, 97,109,101, 44, 98,111,100,121, 41, 10,114,
+ 101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,
+ 101, 43, 49, 41, 10,101,110,100, 10,101,110,100, 10,100,111,
+ 10,108,111, 99, 97,108, 32, 98, 44,101, 44,100,101, 99,108,
+ 44,107,105,110,100, 44, 97,114,103, 44, 99,111,110,115,116,
+ 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94,
+ 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 37,115,
+ 37, 42, 38, 58, 93, 42,111,112,101,114, 97,116,111,114, 41,
+ 37,115, 42, 40, 91, 94, 37,115, 93, 91, 94, 37,115, 93, 42,
+ 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99,
+ 63,111, 63,110, 63,115, 63,116, 63, 41, 37,115, 42, 59, 37,
+ 115, 42, 34, 41, 10,105,102, 32,110,111,116, 32, 98, 32,116,
+ 104,101,110, 10, 98, 44,101, 44,100,101, 99,108, 44,107,105,
+ 110,100, 44, 97,114,103, 44, 99,111,110,115,116, 32, 61, 32,
+ 115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42,
+ 40, 91, 95, 37,119, 93, 91, 95, 37,119, 37,115, 37, 42, 38,
+ 58, 93, 42,111,112,101,114, 97,116,111,114, 41, 37,115, 42,
+ 40, 91, 94, 37,115, 93, 91, 94, 37,115, 93, 42, 41, 37,115,
+ 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,
+ 110, 63,115, 63,116, 63, 41, 37,115, 42, 37, 98,123,125, 37,
+ 115, 42, 59, 63, 37,115, 42, 34, 41, 10,101,110,100, 10,105,
+ 102, 32, 98, 32,116,104,101,110, 10, 95, 99,117,114,114, 95,
+ 99,111,100,101, 32, 61, 32,115,116,114,115,117, 98, 40,115,
+ 44, 98, 44,101, 41, 10, 79,112,101,114, 97,116,111,114, 40,
+ 100,101, 99,108, 44,107,105,110,100, 44, 97,114,103, 44, 99,
+ 111,110,115,116, 41, 10,114,101,116,117,114,110, 32,115,116,
+ 114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100,
+ 10,101,110,100, 10,100,111, 10,108,111, 99, 97,108, 32, 98,
+ 44,101, 44,100,101, 99,108, 44, 97,114,103, 44, 99,111,110,
+ 115,116, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44,
+ 34, 94, 37,115, 42, 40, 91,126, 95, 37,119, 93, 91, 95, 64,
+ 37,119, 37,115, 37, 42, 38, 58, 93, 42, 91, 95, 37,119, 93,
+ 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99,
+ 63,111, 63,110, 63,115, 63,116, 63, 41, 37,115, 42, 61, 63,
+ 37,115, 42, 48, 63, 37,115, 42, 59, 37,115, 42, 34, 41, 10,
+ 105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10, 98,
+ 44,101, 44,100,101, 99,108, 44, 97,114,103, 44, 99,111,110,
+ 115,116, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44,
+ 34, 94, 37,115, 42, 40, 91, 95, 37,119, 93, 41, 37,115, 42,
+ 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,110,
+ 63,115, 63,116, 63, 41, 37,115, 42, 59, 37,115, 42, 34, 41,
+ 10,101,110,100, 10,105,102, 32, 98, 32,116,104,101,110, 10,
+ 95, 99,117,114,114, 95, 99,111,100,101, 32, 61, 32,115,116,
+ 114,115,117, 98, 40,115, 44, 98, 44,101, 41, 10, 70,117,110,
+ 99,116,105,111,110, 40,100,101, 99,108, 44, 97,114,103, 44,
+ 99,111,110,115,116, 41, 10,114,101,116,117,114,110, 32,115,
+ 116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,
+ 100, 10,101,110,100, 10,100,111, 10,108,111, 99, 97,108, 32,
+ 98, 44,101, 44,100,101, 99,108, 44, 97,114,103, 44, 99,111,
+ 110,115,116, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
+ 44, 34, 94, 37,115, 42, 40, 91,126, 95, 37,119, 93, 91, 95,
+ 64, 37,119, 37,115, 37, 42, 38, 58, 93, 42, 91, 95, 37,119,
+ 93, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40,
+ 99, 63,111, 63,110, 63,115, 63,116, 63, 41, 46, 45, 37, 98,
+ 123,125, 37,115, 42, 59, 63, 37,115, 42, 34, 41, 10,105,102,
+ 32,110,111,116, 32, 98, 32,116,104,101,110, 10, 98, 44,101,
+ 44,100,101, 99,108, 44, 97,114,103, 44, 99,111,110,115,116,
+ 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94,
+ 37,115, 42, 40, 91, 95, 37,119, 93, 41, 37,115, 42, 40, 37,
+ 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,110, 63,115,
+ 63,116, 63, 41, 46, 45, 37, 98,123,125, 37,115, 42, 59, 63,
+ 37,115, 42, 34, 41, 10,101,110,100, 10,105,102, 32, 98, 32,
+ 116,104,101,110, 10, 95, 99,117,114,114, 95, 99,111,100,101,
+ 32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101,
+ 41, 10, 70,117,110, 99,116,105,111,110, 40,100,101, 99,108,
+ 44, 97,114,103, 44, 99,111,110,115,116, 41, 10,114,101,116,
+ 117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43,
+ 49, 41, 10,101,110,100, 10,101,110,100, 10,100,111, 10,108,
+ 111, 99, 97,108, 32, 98, 44,101, 44,110, 97,109,101, 44, 98,
+ 97,115,101, 44, 98,111,100,121, 10, 98, 97,115,101, 32, 61,
+ 32, 39, 39, 32, 98,111,100,121, 32, 61, 32, 39, 39, 10, 98,
+ 44,101, 44,110, 97,109,101, 32, 61, 32,115,116,114,102,105,
+ 110,100, 40,115, 44, 34, 94, 37,115, 42, 99,108, 97,115,115,
+ 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93,
+ 42, 41, 37,115, 42, 59, 34, 41, 10,105,102, 32,110,111,116,
+ 32, 98, 32,116,104,101,110, 10, 98, 44,101, 44,110, 97,109,
+ 101, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34,
+ 94, 37,115, 42,115,116,114,117, 99,116, 37,115, 42, 40, 91,
+ 95, 37,119, 93, 91, 95, 37,119, 64, 93, 42, 41, 37,115, 42,
+ 59, 34, 41, 10,105,102, 32,110,111,116, 32, 98, 32,116,104,
+ 101,110, 10, 98, 44,101, 44,110, 97,109,101, 44, 98, 97,115,
+ 101, 44, 98,111,100,121, 32, 61, 32,115,116,114,102,105,110,
+ 100, 40,115, 44, 34, 94, 37,115, 42, 99,108, 97,115,115, 37,
+ 115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93, 42,
+ 41, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 40, 37, 98,123,
+ 125, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,105,102, 32,
+ 110,111,116, 32, 98, 32,116,104,101,110, 10, 98, 44,101, 44,
+ 110, 97,109,101, 44, 98, 97,115,101, 44, 98,111,100,121, 32,
+ 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,
+ 115, 42,115,116,114,117, 99,116, 37,115, 42, 40, 91, 95, 37,
+ 119, 93, 91, 95, 37,119, 64, 93, 42, 41, 37,115, 42, 40, 46,
+ 45, 41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42, 59,
+ 37,115, 42, 34, 41, 10,105,102, 32,110,111,116, 32, 98, 32,
+ 116,104,101,110, 10, 98, 44,101, 44,110, 97,109,101, 44, 98,
+ 97,115,101, 44, 98,111,100,121, 32, 61, 32,115,116,114,102,
+ 105,110,100, 40,115, 44, 34, 94, 37,115, 42,117,110,105,111,
+ 110, 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64,
+ 93, 42, 41, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 40, 37,
+ 98,123,125, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,105,
+ 102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10, 98, 97,
+ 115,101, 32, 61, 32, 39, 39, 10, 98, 44,101, 44, 98,111,100,
+ 121, 44,110, 97,109,101, 32, 61, 32,115,116,114,102,105,110,
+ 100, 40,115, 44, 34, 94, 37,115, 42,116,121,112,101,100,101,
+ 102, 37,115, 37,115, 42,115,116,114,117, 99,116, 37,115, 42,
+ 91, 95, 37,119, 93, 42, 37,115, 42, 40, 37, 98,123,125, 41,
+ 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93,
+ 42, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,105,102, 32,
+ 110,111,116, 32, 98, 32,116,104,101,110, 10, 98, 97,115,101,
+ 32, 61, 32, 39, 39, 10, 98, 44,101, 44, 98,111,100,121, 44,
+ 110, 97,109,101, 32, 61, 32,115,116,114,102,105,110,100, 40,
+ 115, 44, 34, 94, 37,115, 42,116,121,112,101,100,101,102, 37,
+ 115, 37,115, 42,117,110,105,111,110, 37,115, 42, 91, 95, 37,
+ 119, 93, 42, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42,
+ 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93, 42, 41, 37,
+ 115, 42, 59, 37,115, 42, 34, 41, 10,101,110,100, 10,101,110,
+ 100, 10,101,110,100, 10,101,110,100, 10,101,110,100, 10,101,
+ 110,100, 10,105,102, 32, 98, 32,116,104,101,110, 10,105,102,
+ 32, 98, 97,115,101, 32,126, 61, 32, 39, 39, 32,116,104,101,
+ 110, 10,108,111, 99, 97,108, 32, 98, 44,101, 10, 98, 44,101,
+ 44, 98, 97,115,101, 32, 61, 32,115,116,114,102,105,110,100,
+ 40, 98, 97,115,101, 44, 34, 46, 45, 40, 91, 95, 37,119, 93,
+ 91, 95, 37,119, 93, 42, 41, 36, 34, 41, 10,101,110,100, 10,
+ 95, 99,117,114,114, 95, 99,111,100,101, 32, 61, 32,115,116,
+ 114,115,117, 98, 40,115, 44, 98, 44,101, 41, 10, 67,108, 97,
+ 115,115, 40,110, 97,109,101, 44, 98, 97,115,101, 44, 98,111,
+ 100,121, 41, 10,114,101,116,117,114,110, 32,115,116,114,115,
+ 117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,
+ 110,100, 10,100,111, 10,108,111, 99, 97,108, 32, 98, 44,101,
+ 44,116,121,112,101,115, 32, 61, 32,115,116,114,102,105,110,
+ 100, 40,115, 44, 34, 94, 37,115, 42,116,121,112,101,100,101,
+ 102, 37,115, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 59, 37,
+ 115, 42, 34, 41, 10,105,102, 32, 98, 32,116,104,101,110, 10,
+ 95, 99,117,114,114, 95, 99,111,100,101, 32, 61, 32,115,116,
+ 114,115,117, 98, 40,115, 44, 98, 44,101, 41, 10, 84,121,112,
+ 101,100,101,102, 40,116,121,112,101,115, 41, 10,114,101,116,
+ 117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43,
+ 49, 41, 10,101,110,100, 10,101,110,100, 10,100,111, 10,108,
+ 111, 99, 97,108, 32, 98, 44,101, 44,100,101, 99,108, 32, 61,
+ 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115,
+ 42, 40, 91, 95, 37,119, 93, 91, 95, 64, 37,115, 37,119, 37,
+ 100, 37, 42, 38, 58, 93, 42, 91, 95, 37,119, 37,100, 93, 41,
+ 37,115, 42, 59, 37,115, 42, 34, 41, 10,105,102, 32, 98, 32,
+ 116,104,101,110, 10, 95, 99,117,114,114, 95, 99,111,100,101,
+ 32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101,
+ 41, 10, 86, 97,114,105, 97, 98,108,101, 40,100,101, 99,108,
+ 41, 10,114,101,116,117,114,110, 32,115,116,114,115,117, 98,
+ 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,110,100,
+ 10,100,111, 10,108,111, 99, 97,108, 32, 98, 44,101, 44,100,
+ 101, 99,108, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
+ 44, 34, 94, 37,115, 42, 40, 91, 95, 37,119, 93, 63, 91, 95,
+ 37,115, 37,119, 37,100, 93, 45, 99,104, 97,114, 37,115, 43,
+ 91, 95, 64, 37,119, 37,100, 93, 42, 37,115, 42, 37, 91, 37,
+ 115, 42, 37, 83, 43, 37,115, 42, 37, 93, 41, 37,115, 42, 59,
+ 37,115, 42, 34, 41, 10,105,102, 32, 98, 32,116,104,101,110,
+ 10, 95, 99,117,114,114, 95, 99,111,100,101, 32, 61, 32,115,
+ 116,114,115,117, 98, 40,115, 44, 98, 44,101, 41, 10, 86, 97,
+ 114,105, 97, 98,108,101, 40,100,101, 99,108, 41, 10,114,101,
+ 116,117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101,
+ 43, 49, 41, 10,101,110,100, 10,101,110,100, 10,100,111, 10,
+ 108,111, 99, 97,108, 32, 98, 44,101, 44,100,101, 99,108, 32,
+ 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,
+ 115, 42, 40, 91, 95, 37,119, 93, 91, 93, 91, 95, 64, 37,115,
+ 37,119, 37,100, 37, 42, 38, 58, 93, 42, 91, 93, 95, 37,119,
+ 37,100, 93, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,105,
+ 102, 32, 98, 32,116,104,101,110, 10, 95, 99,117,114,114, 95,
+ 99,111,100,101, 32, 61, 32,115,116,114,115,117, 98, 40,115,
+ 44, 98, 44,101, 41, 10, 65,114,114, 97,121, 40,100,101, 99,
+ 108, 41, 10,114,101,116,117,114,110, 32,115,116,114,115,117,
+ 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,110,
+ 100, 10,105,102, 32,103,115,117, 98, 40,115, 44, 34, 37,115,
+ 37,115, 42, 34, 44, 34, 34, 41, 32,126, 61, 32, 34, 34, 32,
+ 116,104,101,110, 10, 95, 99,117,114,114, 95, 99,111,100,101,
+ 32, 61, 32,115, 10,101,114,114,111,114, 40, 34, 35,112, 97,
+ 114,115,101, 32,101,114,114,111,114, 34, 41, 10,101,108,115,
+ 101, 10,114,101,116,117,114,110, 32, 34, 34, 10,101,110,100,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 58,112,
+ 97,114,115,101, 32, 40,115, 41, 10,119,104,105,108,101, 32,
+ 115, 32,126, 61, 32, 39, 39, 32,100,111, 10,115, 32, 61, 32,
+ 115,101,108,102, 58,100,111,112, 97,114,115,101, 40,115, 41,
+ 10,101,110,100, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 32, 61,
+ 32,123, 10, 99,108, 97,115,115,116,121,112,101, 32, 61, 32,
+ 39,112, 97, 99,107, 97,103,101, 39, 10,125, 10, 99,108, 97,
+ 115,115, 80, 97, 99,107, 97,103,101, 46, 95, 95,105,110,100,
+ 101,120, 32, 61, 32, 99,108, 97,115,115, 80, 97, 99,107, 97,
+ 103,101, 10,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+ 40, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 44, 99,
+ 108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 41, 10,
+ 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 80,
+ 97, 99,107, 97,103,101, 58,112,114,105,110,116, 32, 40, 41,
+ 10,112,114,105,110,116, 40, 34, 80, 97, 99,107, 97,103,101,
+ 58, 32, 34, 46, 46,115,101,108,102, 46,110, 97,109,101, 41,
+ 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
+ 101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,115,101,
+ 108,102, 91,105, 93, 58,112,114,105,110,116, 40, 34, 34, 44,
+ 34, 34, 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 80, 97, 99,107, 97,103,101, 58,112,114,101,
+ 112,114,111, 99,101,115,115, 32, 40, 41, 10,108,111, 99, 97,
+ 108, 32, 76, 32, 61, 32,123,125, 10,115,101,108,102, 46, 99,
+ 111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102,
+ 46, 99,111,100,101, 44, 34, 92,110, 37,115, 42, 37, 36, 37,
+ 91, 34, 44, 34, 92, 49, 34, 41, 10,115,101,108,102, 46, 99,
+ 111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102,
+ 46, 99,111,100,101, 44, 34, 92,110, 37,115, 42, 37, 36, 37,
+ 93, 34, 44, 34, 92, 50, 34, 41, 10,115,101,108,102, 46, 99,
+ 111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102,
+ 46, 99,111,100,101, 44, 34, 40, 37, 98, 92, 49, 92, 50, 41,
+ 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41,
+ 10,116,105,110,115,101,114,116, 40, 76, 44, 99, 41, 10,114,
+ 101,116,117,114,110, 32, 34, 92,110, 35, 91, 34, 46, 46,103,
+ 101,116,110, 40, 76, 41, 46, 46, 34, 93, 35, 34, 10,101,110,
+ 100, 41, 10,108,111, 99, 97,108, 32, 67, 32, 61, 32,123,125,
+ 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,
+ 117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 92,
+ 110, 37,115, 42, 37, 36, 37, 60, 34, 44, 34, 92, 51, 34, 41,
+ 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,
+ 117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 92,
+ 110, 37,115, 42, 37, 36, 37, 62, 34, 44, 34, 92, 52, 34, 41,
+ 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,
+ 117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 40,
+ 37, 98, 92, 51, 92, 52, 41, 34, 44, 32,102,117,110, 99,116,
+ 105,111,110, 32, 40, 99, 41, 10,116,105,110,115,101,114,116,
+ 40, 67, 44, 99, 41, 10,114,101,116,117,114,110, 32, 34, 92,
+ 110, 35, 60, 34, 46, 46,103,101,116,110, 40, 67, 41, 46, 46,
+ 34, 62, 35, 34, 10,101,110,100, 41, 10,108,111, 99, 97,108,
+ 32, 86, 32, 61, 32,123,125, 10,115,101,108,102, 46, 99,111,
+ 100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,
+ 99,111,100,101, 44, 34, 92,110, 40, 37,115, 42, 37, 36, 91,
+ 94, 37, 91, 37, 93, 93, 91, 94, 92,110, 93, 42, 41, 34, 44,
+ 102,117,110, 99,116,105,111,110, 32, 40,118, 41, 10,116,105,
+ 110,115,101,114,116, 40, 86, 44,118, 41, 10,114,101,116,117,
+ 114,110, 32, 34, 92,110, 35, 34, 46, 46,103,101,116,110, 40,
+ 86, 41, 46, 46, 34, 35, 34, 10,101,110,100, 41, 10,115,101,
+ 108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,
+ 115,101,108,102, 46, 99,111,100,101, 44, 34, 40, 47, 47, 91,
+ 94, 92,110, 93, 42, 41, 34, 44, 34, 34, 41, 10,115,101,108,
+ 102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,
+ 101,108,102, 46, 99,111,100,101, 44, 34, 47, 37, 42, 34, 44,
+ 34, 92, 49, 34, 41, 10,115,101,108,102, 46, 99,111,100,101,
+ 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,
+ 100,101, 44, 34, 37, 42, 47, 34, 44, 34, 92, 50, 34, 41, 10,
+ 115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117,
+ 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 37, 98,
+ 92, 49, 92, 50, 34, 44, 34, 34, 41, 10,115,101,108,102, 46,
+ 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,
+ 102, 46, 99,111,100,101, 44, 34, 92, 49, 34, 44, 34, 47, 37,
+ 42, 34, 41, 10,115,101,108,102, 46, 99,111,100,101, 32, 61,
+ 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,101,
+ 44, 34, 92, 50, 34, 44, 34, 37, 42, 47, 34, 41, 10,115,101,
+ 108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,
+ 115,101,108,102, 46, 99,111,100,101, 44, 34, 37,115, 42, 64,
+ 37,115, 42, 34, 44, 34, 64, 34, 41, 10,115,101,108,102, 46,
+ 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,
+ 102, 46, 99,111,100,101, 44, 34, 37,115, 63,105,110,108,105,
+ 110,101, 40, 37,115, 41, 34, 44, 34, 37, 49, 34, 41, 10,115,
+ 101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98,
+ 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 37,115, 63,
+ 101,120,116,101,114,110, 40, 37,115, 41, 34, 44, 34, 37, 49,
+ 34, 41, 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,
+ 103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44,
+ 34, 37,115, 63,118,105,114,116,117, 97,108, 40, 37,115, 41,
+ 34, 44, 34, 37, 49, 34, 41, 10,115,101,108,102, 46, 99,111,
+ 100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,
+ 99,111,100,101, 44, 34,112,117, 98,108,105, 99, 58, 34, 44,
+ 34, 34, 41, 10,115,101,108,102, 46, 99,111,100,101, 32, 61,
+ 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,101,
+ 44, 34, 40, 91, 94, 37,119, 95, 93, 41,118,111,105,100, 37,
+ 115, 42, 37, 42, 34, 44, 34, 37, 49, 95,117,115,101,114,100,
+ 97,116, 97, 32, 34, 41, 10,115,101,108,102, 46, 99,111,100,
+ 101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,
+ 111,100,101, 44, 34, 40, 91, 94, 37,119, 95, 93, 41,118,111,
+ 105,100, 37,115, 42, 37, 42, 34, 44, 34, 37, 49, 95,117,115,
+ 101,114,100, 97,116, 97, 32, 34, 41, 10,115,101,108,102, 46,
+ 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,
+ 102, 46, 99,111,100,101, 44, 34, 40, 91, 94, 37,119, 95, 93,
+ 41, 99,104, 97,114, 37,115, 42, 37, 42, 34, 44, 34, 37, 49,
+ 95, 99,115,116,114,105,110,103, 32, 34, 41, 10,115,101,108,
+ 102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,
+ 101,108,102, 46, 99,111,100,101, 44, 34, 40, 91, 94, 37,119,
+ 95, 93, 41,108,117, 97, 95, 83,116, 97,116,101, 37,115, 42,
+ 37, 42, 34, 44, 34, 37, 49, 95,108,115,116, 97,116,101, 32,
+ 34, 41, 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,
+ 103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44,
+ 34, 37, 35, 37, 91, 40, 37,100, 43, 41, 37, 93, 37, 35, 34,
+ 44,102,117,110, 99,116,105,111,110, 32, 40,110, 41, 10,114,
+ 101,116,117,114,110, 32, 76, 91,116,111,110,117,109, 98,101,
+ 114, 40,110, 41, 93, 10,101,110,100, 41, 10,115,101,108,102,
+ 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,
+ 108,102, 46, 99,111,100,101, 44, 34, 37, 35, 37, 60, 40, 37,
+ 100, 43, 41, 37, 62, 37, 35, 34, 44,102,117,110, 99,116,105,
+ 111,110, 32, 40,110, 41, 10,114,101,116,117,114,110, 32, 67,
+ 91,116,111,110,117,109, 98,101,114, 40,110, 41, 93, 10,101,
+ 110,100, 41, 10,115,101,108,102, 46, 99,111,100,101, 32, 61,
+ 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,101,
+ 44, 34, 37, 35, 40, 37,100, 43, 41, 37, 35, 34, 44,102,117,
+ 110, 99,116,105,111,110, 32, 40,110, 41, 10,114,101,116,117,
+ 114,110, 32, 86, 91,116,111,110,117,109, 98,101,114, 40,110,
+ 41, 93, 10,101,110,100, 41, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32, 99,108, 97,115,115, 80, 97, 99,107,
+ 97,103,101, 58,112,114,101, 97,109, 98,108,101, 32, 40, 41,
+ 10,111,117,116,112,117,116, 40, 39, 47, 42, 92,110, 39, 41,
+ 10,111,117,116,112,117,116, 40, 39, 42, 42, 32, 76,117, 97,
+ 32, 98,105,110,100,105,110,103, 58, 32, 39, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 46, 46, 39, 92,110, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 42, 47, 92,110, 92,110, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 35,105,110, 99,108,
+ 117,100,101, 32, 34,116,111,108,117, 97, 46,104, 34, 92,110,
+ 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,105,
+ 102,110,100,101,102, 32, 95, 95, 99,112,108,117,115,112,108,
+ 117,115, 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 35,105,110, 99,108,117,100,101, 32, 60,115,116,100,108,105,
+ 98, 46,104, 62, 92,110, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,111,117,
+ 116,112,117,116, 40, 39, 35,105,102,100,101,102, 32, 95, 95,
+ 99,112,108,117,115,112,108,117,115, 92,110, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39,101,120,116,101,114,110, 32, 34,
+ 67, 34, 32,105,110,116, 32,116,111,108,117, 97, 95, 98,110,
+ 100, 95,116, 97,107,101,111,119,110,101,114,115,104,105,112,
+ 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32, 76, 41,
+ 59, 32, 47, 47, 32,102,114,111,109, 32,116,111,108,117, 97,
+ 95,109, 97,112, 46, 99, 92,110, 39, 41, 10,111,117,116,112,
+ 117,116, 40, 39, 35,101,108,115,101, 92,110, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39,105,110,116, 32,116,111,108,117,
+ 97, 95, 98,110,100, 95,116, 97,107,101,111,119,110,101,114,
+ 115,104,105,112, 32, 40,108,117, 97, 95, 83,116, 97,116,101,
+ 42, 32, 76, 41, 59, 32, 47, 42, 32,102,114,111,109, 32,116,
+ 111,108,117, 97, 95,109, 97,112, 46, 99, 32, 42, 47, 92,110,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+ 105,102, 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 35,105,110, 99,108,117,100,101, 32, 60,115,116,114,105,110,
+ 103, 46,104, 62, 92,110, 92,110, 39, 41, 10,105,102, 32,110,
+ 111,116, 32,102,108, 97,103,115, 46,104, 32,116,104,101,110,
+ 10,111,117,116,112,117,116, 40, 39, 47, 42, 32, 69,120,112,
+ 111,114,116,101,100, 32,102,117,110, 99,116,105,111,110, 32,
+ 42, 47, 39, 41, 10,111,117,116,112,117,116, 40, 39, 84, 79,
+ 76, 85, 65, 95, 65, 80, 73, 32,105,110,116, 32,116,111,108,
+ 117, 97, 95, 39, 46, 46,115,101,108,102, 46,110, 97,109,101,
+ 46, 46, 39, 95,111,112,101,110, 32, 40,108,117, 97, 95, 83,
+ 116, 97,116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 59,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39, 76, 85, 65, 76,
+ 73, 66, 95, 65, 80, 73, 32,105,110,116, 32,108,117, 97,111,
+ 112,101,110, 95, 39, 46, 46,115,101,108,102, 46,110, 97,109,
+ 101, 46, 46, 39, 32, 40,108,117, 97, 95, 83,116, 97,116,101,
+ 42, 32,116,111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,101,110,100,
+ 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
+ 101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,115,101,
+ 108,102, 91,105, 93, 58,112,114,101, 97,109, 98,108,101, 40,
+ 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,105,
+ 102, 32,115,101,108,102, 58,114,101,113,117,105,114,101, 99,
+ 111,108,108,101, 99,116,105,111,110, 40, 95, 99,111,108,108,
+ 101, 99,116, 41, 32,116,104,101,110, 10,111,117,116,112,117,
+ 116, 40, 39, 92,110, 39, 41, 10,111,117,116,112,117,116, 40,
+ 39, 47, 42, 32,102,117,110, 99,116,105,111,110, 32,116,111,
+ 32,114,101,108,101, 97,115,101, 32, 99,111,108,108,101, 99,
+ 116,101,100, 32,111, 98,106,101, 99,116, 32,118,105, 97, 32,
+ 100,101,115,116,114,117, 99,116,111,114, 32, 42, 47, 39, 41,
+ 10,111,117,116,112,117,116, 40, 39, 35,105,102,100,101,102,
+ 32, 95, 95, 99,112,108,117,115,112,108,117,115, 92,110, 39,
+ 41, 10,102,111,114, 32,105, 44,118, 32,105,110, 32,112, 97,
+ 105,114,115, 40, 95, 99,111,108,108,101, 99,116, 41, 32,100,
+ 111, 10,111,117,116,112,117,116, 40, 39, 92,110,115,116, 97,
+ 116,105, 99, 32,105,110,116, 32, 39, 46, 46,118, 46, 46, 39,
+ 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32,116,111,
+ 108,117, 97, 95, 83, 41, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39,123, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,
+ 39, 46, 46,105, 46, 46, 39, 42, 32,115,101,108,102, 32, 61,
+ 32, 40, 39, 46, 46,105, 46, 46, 39, 42, 41, 32,116,111,108,
+ 117, 97, 95,116,111,117,115,101,114,116,121,112,101, 40,116,
+ 111,108,117, 97, 95, 83, 44, 49, 44, 48, 41, 59, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,
+ 114,101,108,101, 97,115,101, 40,116,111,108,117, 97, 95, 83,
+ 44,115,101,108,102, 41, 59, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39, 32,100,101,108,101,116,101, 32,115,101,108,102,
+ 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,114,101,
+ 116,117,114,110, 32, 48, 59, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39,125, 39, 41, 10,101,110,100, 10,111,117,116,112,
+ 117,116, 40, 39, 35,101,110,100,105,102, 92,110, 92,110, 39,
+ 41, 10,101,110,100, 10,111,117,116,112,117,116, 40, 39, 92,
+ 110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 47, 42, 32,
+ 102,117,110, 99,116,105,111,110, 32,116,111, 32,114,101,103,
+ 105,115,116,101,114, 32,116,121,112,101, 32, 42, 47, 39, 41,
+ 10,111,117,116,112,117,116, 40, 39,115,116, 97,116,105, 99,
+ 32,118,111,105,100, 32,116,111,108,117, 97, 95,114,101,103,
+ 95,116,121,112,101,115, 32, 40,108,117, 97, 95, 83,116, 97,
+ 116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39,123, 39, 41, 10,102,111,114,
+ 101, 97, 99,104, 40, 95,117,115,101,114,116,121,112,101, 44,
+ 102,117,110, 99,116,105,111,110, 40,110, 44,118, 41, 32,111,
+ 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,117,
+ 115,101,114,116,121,112,101, 40,116,111,108,117, 97, 95, 83,
+ 44, 34, 39, 44,118, 44, 39, 34, 41, 59, 39, 41, 32,101,110,
+ 100, 41, 10,111,117,116,112,117,116, 40, 39,125, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,101,110,
+ 100, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+ 115, 80, 97, 99,107, 97,103,101, 58,114,101,103,105,115,116,
+ 101,114, 32, 40, 41, 10,112,117,115,104, 40,115,101,108,102,
+ 41, 10,111,117,116,112,117,116, 40, 34, 47, 42, 32, 79,112,
+ 101,110, 32,108,105, 98, 32,102,117,110, 99,116,105,111,110,
+ 32, 42, 47, 34, 41, 10,111,117,116,112,117,116, 40, 39, 76,
+ 85, 65, 76, 73, 66, 95, 65, 80, 73, 32,105,110,116, 32,108,
+ 117, 97,111,112,101,110, 95, 39, 46, 46,115,101,108,102, 46,
+ 110, 97,109,101, 46, 46, 39, 32, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 39, 41,
+ 10,111,117,116,112,117,116, 40, 34,123, 34, 41, 10,111,117,
+ 116,112,117,116, 40, 34, 32,116,111,108,117, 97, 95,111,112,
+ 101,110, 40,116,111,108,117, 97, 95, 83, 41, 59, 34, 41, 10,
+ 111,117,116,112,117,116, 40, 34, 32,116,111,108,117, 97, 95,
+ 114,101,103, 95,116,121,112,101,115, 40,116,111,108,117, 97,
+ 95, 83, 41, 59, 34, 41, 10,111,117,116,112,117,116, 40, 34,
+ 32,116,111,108,117, 97, 95,109,111,100,117,108,101, 40,116,
+ 111,108,117, 97, 95, 83, 44, 78, 85, 76, 76, 44, 34, 44,115,
+ 101,108,102, 58,104, 97,115,118, 97,114, 40, 41, 44, 34, 41,
+ 59, 34, 41, 10,111,117,116,112,117,116, 40, 34, 32,116,111,
+ 108,117, 97, 95, 98,101,103,105,110,109,111,100,117,108,101,
+ 40,116,111,108,117, 97, 95, 83, 44, 78, 85, 76, 76, 41, 59,
+ 34, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,
+ 105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+ 115,101,108,102, 91,105, 93, 58,114,101,103,105,115,116,101,
+ 114, 40, 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100,
+ 10,111,117,116,112,117,116, 40, 34, 32,116,111,108,117, 97,
+ 95,101,110,100,109,111,100,117,108,101, 40,116,111,108,117,
+ 97, 95, 83, 41, 59, 34, 41, 10,111,117,116,112,117,116, 40,
+ 34, 32,114,101,116,117,114,110, 32, 49, 59, 34, 41, 10,111,
+ 117,116,112,117,116, 40, 34,125, 34, 41, 10,111,117,116,112,
+ 117,116, 40, 34, 47, 42, 32, 79,112,101,110, 32,116,111,108,
+ 117, 97, 32,102,117,110, 99,116,105,111,110, 32, 42, 47, 34,
+ 41, 10,111,117,116,112,117,116, 40, 34, 84, 79, 76, 85, 65,
+ 95, 65, 80, 73, 32,105,110,116, 32,116,111,108,117, 97, 95,
+ 34, 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 34,
+ 95,111,112,101,110, 32, 40,108,117, 97, 95, 83,116, 97,116,
+ 101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34, 41, 10,111,
+ 117,116,112,117,116, 40, 34,123, 34, 41, 10,111,117,116,112,
+ 117,116, 40, 34, 32,108,117, 97, 95,112,117,115,104, 99,102,
+ 117,110, 99,116,105,111,110, 40,116,111,108,117, 97, 95, 83,
+ 44, 32,108,117, 97,111,112,101,110, 95, 34, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 46, 46, 34, 41, 59, 34, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,112,117,
+ 115,104,115,116,114,105,110,103, 40,116,111,108,117, 97, 95,
+ 83, 44, 32, 34, 39, 46, 46,115,101,108,102, 46,110, 97,109,
+ 101, 46, 46, 39, 34, 41, 59, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 34, 32,108,117, 97, 95, 99, 97,108,108, 40,116,111,
+ 108,117, 97, 95, 83, 44, 32, 49, 44, 32, 48, 41, 59, 34, 41,
+ 10,111,117,116,112,117,116, 40, 34, 32,114,101,116,117,114,
+ 110, 32, 49, 59, 34, 41, 10,111,117,116,112,117,116, 40, 34,
+ 125, 34, 41, 10,112,111,112, 40, 41, 10,101,110,100, 10,102,
+ 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 80, 97,
+ 99,107, 97,103,101, 58,104,101, 97,100,101,114, 32, 40, 41,
+ 10,111,117,116,112,117,116, 40, 39, 47, 42, 92,110, 39, 41,
+ 32,111,117,116,112,117,116, 40, 39, 42, 42, 32, 76,117, 97,
+ 32, 98,105,110,100,105,110,103, 58, 32, 39, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 46, 46, 39, 92,110, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 42, 42, 32, 71,101,110,101,
+ 114, 97,116,101,100, 32, 97,117,116,111,109, 97,116,105, 99,
+ 97,108,108,121, 32, 98,121, 32, 39, 46, 46, 84, 79, 76, 85,
+ 65, 95, 86, 69, 82, 83, 73, 79, 78, 46, 46, 39, 32,111,110,
+ 32, 39, 46, 46,100, 97,116,101, 40, 41, 46, 46, 39, 46, 92,
+ 110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 42, 47, 92,
+ 110, 92,110, 39, 41, 10,105,102, 32,110,111,116, 32,102,108,
+ 97,103,115, 46,104, 32,116,104,101,110, 10,111,117,116,112,
+ 117,116, 40, 39, 47, 42, 32, 69,120,112,111,114,116,101,100,
+ 32,102,117,110, 99,116,105,111,110, 32, 42, 47, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 84, 79, 76, 85, 65, 95, 65,
+ 80, 73, 32,105,110,116, 32,116,111,108,117, 97, 95, 39, 46,
+ 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 95,111,
+ 112,101,110, 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42,
+ 32,116,111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,111,117,
+ 116,112,117,116, 40, 39, 76, 85, 65, 76, 73, 66, 95, 65, 80,
+ 73, 32,105,110,116, 32,108,117, 97,111,112,101,110, 95, 39,
+ 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 32,
+ 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32,116,111,108,
+ 117, 97, 95, 83, 41, 59, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 92,110, 39, 41, 10,101,110,100, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 95, 80, 97, 99,107, 97,
+ 103,101, 32, 40,115,101,108,102, 41, 10,115,101,116,109,101,
+ 116, 97,116, 97, 98,108,101, 40,115,101,108,102, 44, 99,108,
+ 97,115,115, 80, 97, 99,107, 97,103,101, 41, 10,114,101,116,
+ 117,114,110, 32,115,101,108,102, 10,101,110,100, 10,102,117,
+ 110, 99,116,105,111,110, 32,101,120,116,114, 97, 99,116, 95,
+ 99,111,100,101, 40,102,110, 44,115, 41, 10,108,111, 99, 97,
+ 108, 32, 99,111,100,101, 32, 61, 32, 39, 92,110, 36, 35,105,
+ 110, 99,108,117,100,101, 32, 34, 39, 46, 46,102,110, 46, 46,
+ 39, 34, 92,110, 39, 10,115, 61, 32, 34, 92,110, 34, 32, 46,
+ 46, 32,115, 32, 46, 46, 32, 34, 92,110, 34, 10,108,111, 99,
+ 97,108, 32, 95, 44,101, 44, 99, 44,116, 32, 61, 32,115,116,
+ 114,102,105,110,100, 40,115, 44, 32, 34, 92,110, 40, 91, 94,
+ 92,110, 93, 45, 41, 91, 84,116, 93, 91, 79,111, 93, 91, 76,
+ 108, 93, 91, 85,117, 93, 91, 65, 97, 93, 95, 40, 91, 94, 37,
+ 115, 93, 42, 41, 91, 94, 92,110, 93, 42, 92,110, 34, 41, 10,
+ 119,104,105,108,101, 32,101, 32,100,111, 10,116, 32, 61, 32,
+ 115,116,114,108,111,119,101,114, 40,116, 41, 10,105,102, 32,
+ 116, 32, 61, 61, 32, 34, 98,101,103,105,110, 34, 32,116,104,
+ 101,110, 10, 95, 44,101, 44, 99, 32, 61, 32,115,116,114,102,
+ 105,110,100, 40,115, 44, 34, 40, 46, 45, 41, 92,110, 91, 94,
+ 92,110, 93, 42, 91, 84,116, 93, 91, 79,111, 93, 91, 76,108,
+ 93, 91, 85,117, 93, 91, 65, 97, 93, 95, 91, 69,101, 93, 91,
+ 78,110, 93, 91, 68,100, 93, 91, 94, 92,110, 93, 42, 92,110,
+ 34, 44,101, 41, 10,105,102, 32,110,111,116, 32,101, 32,116,
+ 104,101,110, 10,116,111,108,117, 97, 95,101,114,114,111,114,
+ 40, 34, 85,110, 98, 97,108, 97,110, 99,101,100, 32, 39,116,
+ 111,108,117, 97, 95, 98,101,103,105,110, 39, 32,100,105,114,
+ 101, 99,116,105,118,101, 32,105,110, 32,104,101, 97,100,101,
+ 114, 32,102,105,108,101, 34, 41, 10,101,110,100, 10,101,110,
+ 100, 10, 99,111,100,101, 32, 61, 32, 99,111,100,101, 32, 46,
+ 46, 32, 99, 32, 46, 46, 32, 34, 92,110, 34, 10, 95, 44,101,
+ 44, 99, 44,116, 32, 61, 32,115,116,114,102,105,110,100, 40,
+ 115, 44, 32, 34, 92,110, 40, 91, 94, 92,110, 93, 45, 41, 91,
+ 84,116, 93, 91, 79,111, 93, 91, 76,108, 93, 91, 85,117, 93,
+ 91, 65, 97, 93, 95, 40, 91, 94, 37,115, 93, 42, 41, 91, 94,
+ 92,110, 93, 42, 92,110, 34, 44,101, 41, 10,101,110,100, 10,
+ 114,101,116,117,114,110, 32, 99,111,100,101, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 80, 97, 99,107, 97,
+ 103,101, 32, 40,110, 97,109,101, 44,102,110, 41, 10,108,111,
+ 99, 97,108, 32,101,120,116, 32, 61, 32, 34,112,107,103, 34,
+ 10,105,102, 32,102,110, 32,116,104,101,110, 10,108,111, 99,
+ 97,108, 32,115,116, 44, 32,109,115,103, 32, 61, 32,114,101,
+ 97,100,102,114,111,109, 40,102,108, 97,103,115, 46,102, 41,
+ 10,105,102, 32,110,111,116, 32,115,116, 32,116,104,101,110,
+ 10,101,114,114,111,114, 40, 39, 35, 39, 46, 46,109,115,103,
+ 41, 10,101,110,100, 10,108,111, 99, 97,108, 32, 95, 59, 32,
+ 95, 44, 32, 95, 44, 32,101,120,116, 32, 61, 32,115,116,114,
+ 102,105,110,100, 40,102,110, 44, 34, 46, 42, 37, 46, 40, 46,
+ 42, 41, 36, 34, 41, 10,101,110,100, 10,108,111, 99, 97,108,
+ 32, 99,111,100,101, 32, 61, 32, 34, 92,110, 34, 32, 46, 46,
+ 32,114,101, 97,100, 40, 39, 42, 97, 39, 41, 10,105,102, 32,
+ 101,120,116, 32, 61, 61, 32, 39,104, 39, 32,111,114, 32,101,
+ 120,116, 32, 61, 61, 32, 39,104,112,112, 39, 32,116,104,101,
+ 110, 10, 99,111,100,101, 32, 61, 32,101,120,116,114, 97, 99,
+ 116, 95, 99,111,100,101, 40,102,110, 44, 99,111,100,101, 41,
+ 10,101,110,100, 10,105,102, 32,102,110, 32,116,104,101,110,
+ 10,114,101, 97,100,102,114,111,109, 40, 41, 10,101,110,100,
+ 10, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40, 99,111,
+ 100,101, 44, 39, 37,115, 42, 37, 36,114,101,110, 97,109,105,
+ 110,103, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 92,110, 39,
+ 44, 32,102,117,110, 99,116,105,111,110, 32, 40,114, 41, 32,
+ 97,112,112,101,110,100,114,101,110, 97,109,105,110,103, 40,
+ 114, 41, 32,114,101,116,117,114,110, 32, 34, 92,110, 34, 32,
+ 101,110,100, 41, 10,108,111, 99, 97,108, 32,110,115,117, 98,
+ 115,116, 10,114,101,112,101, 97,116, 10, 99,111,100,101, 44,
+ 110,115,117, 98,115,116, 32, 61, 32,103,115,117, 98, 40, 99,
+ 111,100,101, 44, 39, 92,110, 37,115, 42, 37, 36, 40, 46, 41,
+ 102,105,108,101, 37,115, 42, 34, 40, 46, 45, 41, 34, 37,115,
+ 42, 92,110, 39, 44, 10,102,117,110, 99,116,105,111,110, 32,
+ 40,107,105,110,100, 44,102,110, 41, 10,108,111, 99, 97,108,
+ 32, 95, 44, 32, 95, 44, 32,101,120,116, 32, 61, 32,115,116,
+ 114,102,105,110,100, 40,102,110, 44, 34, 46, 42, 37, 46, 40,
+ 46, 42, 41, 36, 34, 41, 10,108,111, 99, 97,108, 32,102,112,
+ 44,109,115,103, 32, 61, 32,111,112,101,110,102,105,108,101,
+ 40,102,110, 44, 39,114, 39, 41, 10,105,102, 32,110,111,116,
+ 32,102,112, 32,116,104,101,110, 10,101,114,114,111,114, 40,
+ 39, 35, 39, 46, 46,109,115,103, 46, 46, 39, 58, 32, 39, 46,
+ 46,102,110, 41, 10,101,110,100, 10,108,111, 99, 97,108, 32,
+ 115, 32, 61, 32,114,101, 97,100, 40,102,112, 44, 39, 42, 97,
+ 39, 41, 10, 99,108,111,115,101,102,105,108,101, 40,102,112,
+ 41, 10,105,102, 32,107,105,110,100, 32, 61, 61, 32, 39, 99,
+ 39, 32,111,114, 32,107,105,110,100, 32, 61, 61, 32, 39,104,
+ 39, 32,116,104,101,110, 10,114,101,116,117,114,110, 32,101,
+ 120,116,114, 97, 99,116, 95, 99,111,100,101, 40,102,110, 44,
+ 115, 41, 10,101,108,115,101,105,102, 32,107,105,110,100, 32,
+ 61, 61, 32, 39,112, 39, 32,116,104,101,110, 10,114,101,116,
+ 117,114,110, 32, 34, 92,110, 92,110, 34, 32, 46, 46, 32,115,
+ 10,101,108,115,101,105,102, 32,107,105,110,100, 32, 61, 61,
+ 32, 39,108, 39, 32,116,104,101,110, 10,114,101,116,117,114,
+ 110, 32, 34, 92,110, 36, 91, 92,110, 34, 32, 46, 46, 32,115,
+ 32, 46, 46, 32, 34, 92,110, 36, 93, 92,110, 34, 10,101,108,
+ 115,101, 10,101,114,114,111,114, 40, 39, 35, 73,110,118, 97,
+ 108,105,100, 32,105,110, 99,108,117,100,101, 32,100,105,114,
+ 101, 99,116,105,118,101, 32, 40,117,115,101, 32, 36, 99,102,
+ 105,108,101, 44, 32, 36,112,102,105,108,101, 32,111,114, 32,
+ 36,108,102,105,108,101, 41, 39, 41, 10,101,110,100, 10,101,
+ 110,100, 41, 10,117,110,116,105,108, 32,110,115,117, 98,115,
+ 116, 61, 61, 48, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,
+ 95, 80, 97, 99,107, 97,103,101, 40, 95, 67,111,110,116, 97,
+ 105,110,101,114,123,110, 97,109,101, 61,110, 97,109,101, 44,
+ 32, 99,111,100,101, 61, 99,111,100,101,125, 41, 10,112,117,
+ 115,104, 40,116, 41, 10,116, 58,112,114,101,112,114,111, 99,
+ 101,115,115, 40, 41, 10,116, 58,112, 97,114,115,101, 40,116,
+ 46, 99,111,100,101, 41, 10,112,111,112, 40, 41, 10,114,101,
+ 116,117,114,110, 32,116, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 77,111,100,117,108,101, 32, 61, 32,
+ 123, 10, 99,108, 97,115,115,116,121,112,101, 32, 61, 32, 39,
+ 109,111,100,117,108,101, 39, 10,125, 10, 99,108, 97,115,115,
+ 77,111,100,117,108,101, 46, 95, 95,105,110,100,101,120, 32,
+ 61, 32, 99,108, 97,115,115, 77,111,100,117,108,101, 10,115,
+ 101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,
+ 115,115, 77,111,100,117,108,101, 44, 99,108, 97,115,115, 67,
+ 111,110,116, 97,105,110,101,114, 41, 10,102,117,110, 99,116,
+ 105,111,110, 32, 99,108, 97,115,115, 77,111,100,117,108,101,
+ 58,114,101,103,105,115,116,101,114, 32, 40, 41, 10,112,117,
+ 115,104, 40,115,101,108,102, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,116,111,108,117, 97, 95,109,111,100,117,108,101,
+ 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 46, 46, 39, 34, 44, 39, 44,115,
+ 101,108,102, 58,104, 97,115,118, 97,114, 40, 41, 44, 39, 41,
+ 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,116,111,
+ 108,117, 97, 95, 98,101,103,105,110,109,111,100,117,108,101,
+ 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 46, 46, 39, 34, 41, 59, 39, 41,
+ 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
+ 101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,115,101,
+ 108,102, 91,105, 93, 58,114,101,103,105,115,116,101,114, 40,
+ 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,111,
+ 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,101,
+ 110,100,109,111,100,117,108,101, 40,116,111,108,117, 97, 95,
+ 83, 41, 59, 39, 41, 10,112,111,112, 40, 41, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+ 77,111,100,117,108,101, 58,112,114,105,110,116, 32, 40,105,
+ 100,101,110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34, 77,111,100,117,
+ 108,101,123, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
+ 110,116, 46, 46, 34, 32,110, 97,109,101, 32, 61, 32, 39, 34,
+ 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 34, 39,
+ 59, 34, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,
+ 104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111,
+ 10,115,101,108,102, 91,105, 93, 58,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32, 34, 44, 34, 44, 34, 41,
+ 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,112,114,
+ 105,110,116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46,
+ 46, 99,108,111,115,101, 41, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32, 95, 77,111,100,117,108,101, 32, 40,
+ 116, 41, 10,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+ 40,116, 44, 99,108, 97,115,115, 77,111,100,117,108,101, 41,
+ 10, 97,112,112,101,110,100, 40,116, 41, 10,114,101,116,117,
+ 114,110, 32,116, 10,101,110,100, 10,102,117,110, 99,116,105,
+ 111,110, 32, 77,111,100,117,108,101, 32, 40,110, 44, 98, 41,
+ 10,108,111, 99, 97,108, 32,116, 32, 61, 32, 95, 77,111,100,
+ 117,108,101, 40, 95, 67,111,110,116, 97,105,110,101,114,123,
+ 110, 97,109,101, 61,110,125, 41, 10,112,117,115,104, 40,116,
+ 41, 10,116, 58,112, 97,114,115,101, 40,115,116,114,115,117,
+ 98, 40, 98, 44, 50, 44,115,116,114,108,101,110, 40, 98, 41,
+ 45, 49, 41, 41, 10,112,111,112, 40, 41, 10,114,101,116,117,
+ 114,110, 32,116, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 78, 97,109,101,115,112, 97, 99,101,
+ 32, 61, 32,123, 10, 99,108, 97,115,115,116,121,112,101, 32,
+ 61, 32, 39,110, 97,109,101,115,112, 97, 99,101, 39, 44, 10,
+ 110, 97,109,101, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,108,
+ 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 46, 95, 95,
+ 105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 78, 97,
+ 109,101,115,112, 97, 99,101, 10,115,101,116,109,101,116, 97,
+ 116, 97, 98,108,101, 40, 99,108, 97,115,115, 78, 97,109,101,
+ 115,112, 97, 99,101, 44, 99,108, 97,115,115, 77,111,100,117,
+ 108,101, 41, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+ 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 58,112,114,
+ 105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,111,115,
+ 101, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
+ 46, 34, 78, 97,109,101,115,112, 97, 99,101,123, 34, 41, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+ 46,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,108,111,
+ 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,
+ 101,108,102, 91,105, 93, 32,100,111, 10,115,101,108,102, 91,
+ 105, 93, 58,112,114,105,110,116, 40,105,100,101,110,116, 46,
+ 46, 34, 32, 34, 44, 34, 44, 34, 41, 10,105, 32, 61, 32,105,
+ 43, 49, 10,101,110,100, 10,112,114,105,110,116, 40,105,100,
+ 101,110,116, 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101,
+ 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 95, 78, 97,109,101,115,112, 97, 99,101, 32, 40,116, 41, 10,
+ 115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44,
+ 99,108, 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 41,
+ 10, 97,112,112,101,110,100, 40,116, 41, 10,114,101,116,117,
+ 114,110, 32,116, 10,101,110,100, 10,102,117,110, 99,116,105,
+ 111,110, 32, 78, 97,109,101,115,112, 97, 99,101, 32, 40,110,
+ 44, 98, 41, 10,108,111, 99, 97,108, 32, 99, 32, 61, 32, 95,
+ 78, 97,109,101,115,112, 97, 99,101, 40, 95, 67,111,110,116,
+ 97,105,110,101,114,123,110, 97,109,101, 61,110,125, 41, 10,
+ 112,117,115,104, 40, 99, 41, 10, 99, 58,112, 97,114,115,101,
+ 40,115,116,114,115,117, 98, 40, 98, 44, 50, 44,115,116,114,
+ 108,101,110, 40, 98, 41, 45, 49, 41, 41, 10,112,111,112, 40,
+ 41, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 68,101,102,105,110,101, 32, 61, 32,
+ 123, 10,110, 97,109,101, 32, 61, 32, 39, 39, 44, 10,125, 10,
+ 99,108, 97,115,115, 68,101,102,105,110,101, 46, 95, 95,105,
+ 110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 68,101,102,
+ 105,110,101, 10,115,101,116,109,101,116, 97,116, 97, 98,108,
+ 101, 40, 99,108, 97,115,115, 68,101,102,105,110,101, 44, 99,
+ 108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10,102,117,
+ 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101,102,
+ 105,110,101, 58,114,101,103,105,115,116,101,114, 32, 40, 41,
+ 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97,
+ 95, 99,111,110,115,116, 97,110,116, 40,116,111,108,117, 97,
+ 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,
+ 109,101, 46, 46, 39, 34, 44, 39, 46, 46,115,101,108,102, 46,
+ 110, 97,109,101, 46, 46, 39, 41, 59, 39, 41, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+ 68,101,102,105,110,101, 58,112,114,105,110,116, 32, 40,105,
+ 100,101,110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34, 68,101,102,105,
+ 110,101,123, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
+ 110,116, 46, 46, 34, 32,110, 97,109,101, 32, 61, 32, 39, 34,
+ 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 34, 39,
+ 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
+ 46, 46, 34, 32,108,110, 97,109,101, 32, 61, 32, 39, 34, 46,
+ 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 34, 39,
+ 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
+ 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,
+ 110,100, 10,102,117,110, 99,116,105,111,110, 32, 95, 68,101,
+ 102,105,110,101, 32, 40,116, 41, 10,115,101,116,109,101,116,
+ 97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115, 68,
+ 101,102,105,110,101, 41, 10,116, 58, 98,117,105,108,100,110,
+ 97,109,101,115, 40, 41, 10,105,102, 32,116, 46,110, 97,109,
+ 101, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10,101,114,
+ 114,111,114, 40, 34, 35,105,110,118, 97,108,105,100, 32,100,
+ 101,102,105,110,101, 34, 41, 10,101,110,100, 10, 97,112,112,
+ 101,110,100, 40,116, 41, 10,114,101,116,117,114,110, 32,116,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 68,
+ 101,102,105,110,101, 32, 40,110, 41, 10,114,101,116,117,114,
+ 110, 32, 95, 68,101,102,105,110,101,123, 10,110, 97,109,101,
+ 32, 61, 32,110, 10,125, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101,
+ 32, 61, 32,123, 10,125, 10, 99,108, 97,115,115, 69,110,117,
+ 109,101,114, 97,116,101, 46, 95, 95,105,110,100,101,120, 32,
+ 61, 32, 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,
+ 101, 10,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,
+ 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 44,
+ 99,108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10,102,
+ 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 69,110,
+ 117,109,101,114, 97,116,101, 58,114,101,103,105,115,116,101,
+ 114, 32, 40, 41, 10,108,111, 99, 97,108, 32,110,115,112, 97,
+ 99,101, 32, 61, 32,103,101,116,110, 97,109,101,115,112, 97,
+ 99,101, 40, 99,108, 97,115,115, 67,111,110,116, 97,105,110,
+ 101,114, 46, 99,117,114,114, 41, 10,108,111, 99, 97,108, 32,
+ 105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,102, 91,
+ 105, 93, 32,100,111, 10,111,117,116,112,117,116, 40, 39, 32,
+ 116,111,108,117, 97, 95, 99,111,110,115,116, 97,110,116, 40,
+ 116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,
+ 102, 46,108,110, 97,109,101,115, 91,105, 93, 46, 46, 39, 34,
+ 44, 39, 46, 46,110,115,112, 97, 99,101, 46, 46,115,101,108,
+ 102, 91,105, 93, 46, 46, 39, 41, 59, 39, 41, 10,105, 32, 61,
+ 32,105, 43, 49, 10,101,110,100, 10,101,110,100, 10,102,117,
+ 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 69,110,117,
+ 109,101,114, 97,116,101, 58,112,114,105,110,116, 32, 40,105,
+ 100,101,110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34, 69,110,117,109,
+ 101,114, 97,116,101,123, 34, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101, 32, 61,
+ 32, 34, 46, 46,115,101,108,102, 46,110, 97,109,101, 41, 10,
+ 108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101,
+ 32,115,101,108,102, 91,105, 93, 32,100,111, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34, 32, 39, 34, 46,
+ 46,115,101,108,102, 91,105, 93, 46, 46, 34, 39, 40, 34, 46,
+ 46,115,101,108,102, 46,108,110, 97,109,101,115, 91,105, 93,
+ 46, 46, 34, 41, 44, 34, 41, 10,105, 32, 61, 32,105, 43, 49,
+ 10,101,110,100, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,
+ 101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 95, 69,
+ 110,117,109,101,114, 97,116,101, 32, 40,116, 41, 10,115,101,
+ 116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,108,
+ 97,115,115, 69,110,117,109,101,114, 97,116,101, 41, 10, 97,
+ 112,112,101,110,100, 40,116, 41, 10, 97,112,112,101,110,100,
+ 101,110,117,109, 40,116, 41, 10,114,101,116,117,114,110, 32,
+ 116, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 69,110,117,109,101,114, 97,116,101, 32, 40,110, 44, 98, 41,
+ 10,108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,
+ 116, 40,115,116,114,115,117, 98, 40, 98, 44, 50, 44, 45, 50,
+ 41, 44, 39, 44, 39, 41, 10,108,111, 99, 97,108, 32,105, 32,
+ 61, 32, 49, 10,108,111, 99, 97,108, 32,101, 32, 61, 32,123,
+ 110, 61, 48,125, 10,119,104,105,108,101, 32,116, 91,105, 93,
+ 32,100,111, 10,108,111, 99, 97,108, 32,116,116, 32, 61, 32,
+ 115,112,108,105,116, 40,116, 91,105, 93, 44, 39, 61, 39, 41,
+ 10,101, 46,110, 32, 61, 32,101, 46,110, 32, 43, 32, 49, 10,
+ 101, 91,101, 46,110, 93, 32, 61, 32,116,116, 91, 49, 93, 10,
+ 105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,105, 32, 61,
+ 32, 49, 10,101, 46,108,110, 97,109,101,115, 32, 61, 32,123,
+ 125, 10,119,104,105,108,101, 32,101, 91,105, 93, 32,100,111,
+ 10,108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,
+ 116, 40,101, 91,105, 93, 44, 39, 64, 39, 41, 10,101, 91,105,
+ 93, 32, 61, 32,116, 91, 49, 93, 10,105,102, 32,110,111,116,
+ 32,116, 91, 50, 93, 32,116,104,101,110, 10,116, 91, 50, 93,
+ 32, 61, 32, 97,112,112,108,121,114,101,110, 97,109,105,110,
+ 103, 40,116, 91, 49, 93, 41, 10,101,110,100, 10,101, 46,108,
+ 110, 97,109,101,115, 91,105, 93, 32, 61, 32,116, 91, 50, 93,
+ 32,111,114, 32,116, 91, 49, 93, 10,105, 32, 61, 32,105, 43,
+ 49, 10,101,110,100, 10,101, 46,110, 97,109,101, 32, 61, 32,
+ 110, 10,105,102, 32,110,126, 61, 34, 34, 32,116,104,101,110,
+ 10, 84,121,112,101,100,101,102, 40, 34,105,110,116, 32, 34,
+ 46, 46,110, 41, 10,101,110,100, 10,114,101,116,117,114,110,
+ 32, 95, 69,110,117,109,101,114, 97,116,101, 40,101, 41, 10,
+ 101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,
+ 111,110, 32, 61, 32,123, 10,109,111,100, 32, 61, 32, 39, 39,
+ 44, 10,116,121,112,101, 32, 61, 32, 39, 39, 44, 10,112,116,
+ 114, 32, 61, 32, 39, 39, 44, 10,110, 97,109,101, 32, 61, 32,
+ 39, 39, 44, 10,100,105,109, 32, 61, 32, 39, 39, 44, 10,114,
+ 101,116, 32, 61, 32, 39, 39, 44, 10,100,101,102, 32, 61, 32,
+ 39, 39, 10,125, 10, 99,108, 97,115,115, 68,101, 99,108, 97,
+ 114, 97,116,105,111,110, 46, 95, 95,105,110,100,101,120, 32,
+ 61, 32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
+ 105,111,110, 10,115,101,116,109,101,116, 97,116, 97, 98,108,
+ 101, 40, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
+ 105,111,110, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,
+ 101, 41, 10,102,117,110, 99,116,105,111,110, 32, 99,114,101,
+ 97,116,101, 95,118, 97,114,110, 97,109,101, 32, 40, 41, 10,
+ 105,102, 32,110,111,116, 32, 95,118, 97,114,110,117,109, 98,
+ 101,114, 32,116,104,101,110, 32, 95,118, 97,114,110,117,109,
+ 98,101,114, 32, 61, 32, 48, 32,101,110,100, 10, 95,118, 97,
+ 114,110,117,109, 98,101,114, 32, 61, 32, 95,118, 97,114,110,
+ 117,109, 98,101,114, 32, 43, 32, 49, 10,114,101,116,117,114,
+ 110, 32, 34,116,111,108,117, 97, 95,118, 97,114, 95, 34, 46,
+ 46, 95,118, 97,114,110,117,109, 98,101,114, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+ 68,101, 99,108, 97,114, 97,116,105,111,110, 58, 99,104,101,
+ 99,107,110, 97,109,101, 32, 40, 41, 10,105,102, 32,115,116,
+ 114,115,117, 98, 40,115,101,108,102, 46,110, 97,109,101, 44,
+ 49, 44, 49, 41, 32, 61, 61, 32, 39, 91, 39, 32, 97,110,100,
+ 32,110,111,116, 32,102,105,110,100,116,121,112,101, 40,115,
+ 101,108,102, 46,116,121,112,101, 41, 32,116,104,101,110, 10,
+ 115,101,108,102, 46,110, 97,109,101, 32, 61, 32,115,101,108,
+ 102, 46,116,121,112,101, 46, 46,115,101,108,102, 46,110, 97,
+ 109,101, 10,108,111, 99, 97,108, 32,109, 32, 61, 32,115,112,
+ 108,105,116, 40,115,101,108,102, 46,109,111,100, 44, 39, 37,
+ 115, 37,115, 42, 39, 41, 10,115,101,108,102, 46,116,121,112,
+ 101, 32, 61, 32,109, 91,109, 46,110, 93, 10,115,101,108,102,
+ 46,109,111,100, 32, 61, 32, 99,111,110, 99, 97,116, 40,109,
+ 44, 49, 44,109, 46,110, 45, 49, 41, 10,101,110,100, 10,108,
+ 111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,116, 40,
+ 115,101,108,102, 46,110, 97,109,101, 44, 39, 61, 39, 41, 10,
+ 105,102, 32,116, 46,110, 61, 61, 50, 32,116,104,101,110, 10,
+ 115,101,108,102, 46,110, 97,109,101, 32, 61, 32,116, 91, 49,
+ 93, 10,115,101,108,102, 46,100,101,102, 32, 61, 32,116, 91,
+ 116, 46,110, 93, 10,101,110,100, 10,108,111, 99, 97,108, 32,
+ 98, 44,101, 44,100, 32, 61, 32,115,116,114,102,105,110,100,
+ 40,115,101,108,102, 46,110, 97,109,101, 44, 34, 37, 91, 40,
+ 46, 45, 41, 37, 93, 34, 41, 10,105,102, 32, 98, 32,116,104,
+ 101,110, 10,115,101,108,102, 46,110, 97,109,101, 32, 61, 32,
+ 115,116,114,115,117, 98, 40,115,101,108,102, 46,110, 97,109,
+ 101, 44, 49, 44, 98, 45, 49, 41, 10,115,101,108,102, 46,100,
+ 105,109, 32, 61, 32,100, 10,101,110,100, 10,105,102, 32,115,
+ 101,108,102, 46,116,121,112,101, 32,126, 61, 32, 39, 39, 32,
+ 97,110,100, 32,115,101,108,102, 46,116,121,112,101, 32,126,
+ 61, 32, 39,118,111,105,100, 39, 32, 97,110,100, 32,115,101,
+ 108,102, 46,110, 97,109,101, 32, 61, 61, 32, 39, 39, 32,116,
+ 104,101,110, 10,115,101,108,102, 46,110, 97,109,101, 32, 61,
+ 32, 99,114,101, 97,116,101, 95,118, 97,114,110, 97,109,101,
+ 40, 41, 10,101,108,115,101,105,102, 32,115,101,108,102, 46,
+ 107,105,110,100, 61, 61, 39,118, 97,114, 39, 32,116,104,101,
+ 110, 10,105,102, 32,115,101,108,102, 46,116,121,112,101, 61,
+ 61, 39, 39, 32, 97,110,100, 32,115,101,108,102, 46,110, 97,
+ 109,101,126, 61, 39, 39, 32,116,104,101,110, 10,115,101,108,
+ 102, 46,116,121,112,101, 32, 61, 32,115,101,108,102, 46,116,
+ 121,112,101, 46, 46,115,101,108,102, 46,110, 97,109,101, 10,
+ 115,101,108,102, 46,110, 97,109,101, 32, 61, 32, 99,114,101,
+ 97,116,101, 95,118, 97,114,110, 97,109,101, 40, 41, 10,101,
+ 108,115,101,105,102, 32,102,105,110,100,116,121,112,101, 40,
+ 115,101,108,102, 46,110, 97,109,101, 41, 32,116,104,101,110,
+ 10,105,102, 32,115,101,108,102, 46,116,121,112,101, 61, 61,
+ 39, 39, 32,116,104,101,110, 32,115,101,108,102, 46,116,121,
+ 112,101, 32, 61, 32,115,101,108,102, 46,110, 97,109,101, 10,
+ 101,108,115,101, 32,115,101,108,102, 46,116,121,112,101, 32,
+ 61, 32,115,101,108,102, 46,116,121,112,101, 46, 46, 39, 32,
+ 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 32,101,110,
+ 100, 10,115,101,108,102, 46,110, 97,109,101, 32, 61, 32, 99,
+ 114,101, 97,116,101, 95,118, 97,114,110, 97,109,101, 40, 41,
+ 10,101,110,100, 10,101,110,100, 10,101,110,100, 10,102,117,
+ 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,
+ 108, 97,114, 97,116,105,111,110, 58, 99,104,101, 99,107,116,
+ 121,112,101, 32, 40, 41, 10,105,102, 32,105,115, 98, 97,115,
+ 105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 32, 97,
+ 110,100, 32,115,101,108,102, 46,112,116,114,126, 61, 39, 39,
+ 32,116,104,101,110, 10,115,101,108,102, 46,114,101,116, 32,
+ 61, 32,115,101,108,102, 46,112,116,114, 10,115,101,108,102,
+ 46,112,116,114, 32, 61, 32,110,105,108, 10,101,110,100, 10,
+ 105,102, 32,115,101,108,102, 46,100,105,109,126, 61, 39, 39,
+ 32, 97,110,100, 32,115,101,108,102, 46,114,101,116,126, 61,
+ 39, 39, 32,116,104,101,110, 10,101,114,114,111,114, 40, 39,
+ 35,105,110,118, 97,108,105,100, 32,112, 97,114, 97,109,101,
+ 116,101,114, 58, 32, 99, 97,110,110,111,116, 32,114,101,116,
+ 117,114,110, 32, 97,110, 32, 97,114,114, 97,121, 32,111,102,
+ 32,118, 97,108,117,101,115, 39, 41, 10,101,110,100, 10,105,
+ 102, 32,115,101,108,102, 46,116,121,112,101, 32, 61, 61, 32,
+ 39, 95,117,115,101,114,100, 97,116, 97, 39, 32,116,104,101,
+ 110, 32,115,101,108,102, 46,116,121,112,101, 32, 61, 32, 39,
+ 118,111,105,100, 42, 39, 10,101,108,115,101,105,102, 32,115,
+ 101,108,102, 46,116,121,112,101, 32, 61, 61, 32, 39, 95, 99,
+ 115,116,114,105,110,103, 39, 32,116,104,101,110, 32,115,101,
+ 108,102, 46,116,121,112,101, 32, 61, 32, 39, 99,104, 97,114,
+ 42, 39, 10,101,108,115,101,105,102, 32,115,101,108,102, 46,
+ 116,121,112,101, 32, 61, 61, 32, 39, 95,108,115,116, 97,116,
+ 101, 39, 32,116,104,101,110, 32,115,101,108,102, 46,116,121,
+ 112,101, 32, 61, 32, 39,108,117, 97, 95, 83,116, 97,116,101,
+ 42, 39, 10,101,110,100, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,108, 97,
+ 114, 97,116,105,111,110, 58,112,114,105,110,116, 32, 40,105,
+ 100,101,110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34, 68,101, 99,108,
+ 97,114, 97,116,105,111,110,123, 34, 41, 10,112,114,105,110,
+ 116, 40,105,100,101,110,116, 46, 46, 34, 32,109,111,100, 32,
+ 61, 32, 39, 34, 46, 46,115,101,108,102, 46,109,111,100, 46,
+ 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,
+ 101,110,116, 46, 46, 34, 32,116,121,112,101, 32, 61, 32, 39,
+ 34, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46, 34,
+ 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,112,116,114, 32, 61, 32, 39, 34, 46, 46,
+ 115,101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34, 41,
+ 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+ 32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+ 102, 46,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,112,
+ 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,100,
+ 105,109, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,100,
+ 105,109, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116,
+ 40,105,100,101,110,116, 46, 46, 34, 32,100,101,102, 32, 61,
+ 32, 39, 34, 46, 46,115,101,108,102, 46,100,101,102, 46, 46,
+ 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
+ 110,116, 46, 46, 34, 32,114,101,116, 32, 61, 32, 39, 34, 46,
+ 46,115,101,108,102, 46,114,101,116, 46, 46, 34, 39, 44, 34,
+ 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
+ 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+ 68,101, 99,108, 97,114, 97,116,105,111,110, 58,114,101,113,
+ 117,105,114,101, 99,111,108,108,101, 99,116,105,111,110, 32,
+ 40,116, 41, 10,105,102, 32,115,101,108,102, 46,109,111,100,
+ 32,126, 61, 32, 39, 99,111,110,115,116, 39, 32, 97,110,100,
+ 10,115,101,108,102, 46,100,105,109, 32, 97,110,100, 32,115,
+ 101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32, 97,
+ 110,100, 10,110,111,116, 32,105,115, 98, 97,115,105, 99, 40,
+ 115,101,108,102, 46,116,121,112,101, 41, 32, 97,110,100, 10,
+ 115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39, 39, 32,
+ 116,104,101,110, 10,108,111, 99, 97,108, 32,116,121,112,101,
+ 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,116,121,
+ 112,101, 44, 34, 37,115, 42, 99,111,110,115,116, 37,115, 42,
+ 34, 44, 34, 34, 41, 10,116, 91,116,121,112,101, 93, 32, 61,
+ 32, 34,116,111,108,117, 97, 95, 99,111,108,108,101, 99,116,
+ 95, 34, 32, 46, 46, 32,103,115,117, 98, 40,116,121,112,101,
+ 44, 34, 58, 58, 34, 44, 34, 95, 34, 41, 10,114,101,116,117,
+ 114,110, 32,116,114,117,101, 10,101,110,100, 10,114,101,116,
+ 117,114,110, 32,102, 97,108,115,101, 10,101,110,100, 10,102,
+ 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101,
+ 99,108, 97,114, 97,116,105,111,110, 58,100,101, 99,108,116,
+ 121,112,101, 32, 40, 41, 10,115,101,108,102, 46,116,121,112,
+ 101, 32, 61, 32,116,121,112,101,118, 97,114, 40,115,101,108,
+ 102, 46,116,121,112,101, 41, 10,105,102, 32,115,116,114,102,
+ 105,110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 99,
+ 111,110,115,116, 39, 41, 32,116,104,101,110, 10,115,101,108,
+ 102, 46,116,121,112,101, 32, 61, 32, 39, 99,111,110,115,116,
+ 32, 39, 46, 46,115,101,108,102, 46,116,121,112,101, 10,115,
+ 101,108,102, 46,109,111,100, 32, 61, 32,103,115,117, 98, 40,
+ 115,101,108,102, 46,109,111,100, 44, 39, 99,111,110,115,116,
+ 37,115, 42, 39, 44, 39, 39, 41, 10,101,110,100, 10,101,110,
+ 100, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+ 115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,111,117,
+ 116, 99,104,101, 99,107,116,121,112,101, 32, 40,110, 97,114,
+ 103, 44,118, 97,114, 41, 10,108,111, 99, 97,108, 32,100,101,
+ 102, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,105,115, 98,
+ 97,115,105, 99, 40,115,101,108,102, 46,116,121,112,101, 41,
+ 10,105,102, 32,115,101,108,102, 46,100,101,102,126, 61, 39,
+ 39, 32,116,104,101,110, 10,100,101,102, 32, 61, 32, 49, 10,
+ 101,108,115,101, 10,100,101,102, 32, 61, 32, 48, 10,101,110,
+ 100, 10,105,102, 32,115,101,108,102, 46,100,105,109, 32,126,
+ 61, 32, 39, 39, 32,116,104,101,110, 10,105,102, 32,118, 97,
+ 114, 32, 97,110,100, 32,115,101,108,102, 46,116,121,112,101,
+ 61, 61, 39, 99,104, 97,114, 39, 32,116,104,101,110, 10,114,
+ 101,116,117,114,110, 32, 39,116,111,108,117, 97, 95,105,115,
+ 115,116,114,105,110,103, 40,116,111,108,117, 97, 95, 83, 44,
+ 39, 46, 46,110, 97,114,103, 46, 46, 39, 44, 39, 46, 46,100,
+ 101,102, 46, 46, 39, 44, 38,116,111,108,117, 97, 95,101,114,
+ 114, 41, 39, 10,101,108,115,101, 10,114,101,116,117,114,110,
+ 32, 39,116,111,108,117, 97, 95,105,115,116, 97, 98,108,101,
+ 40,116,111,108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,
+ 103, 46, 46, 39, 44, 48, 44, 38,116,111,108,117, 97, 95,101,
+ 114,114, 41, 39, 10,101,110,100, 10,101,108,115,101,105,102,
+ 32,116, 32,116,104,101,110, 10,114,101,116,117,114,110, 32,
+ 39,116,111,108,117, 97, 95,105,115, 39, 46, 46,116, 46, 46,
+ 39, 40,116,111,108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,
+ 114,103, 46, 46, 39, 44, 39, 46, 46,100,101,102, 46, 46, 39,
+ 44, 38,116,111,108,117, 97, 95,101,114,114, 41, 39, 10,101,
+ 108,115,101, 10,114,101,116,117,114,110, 32, 39,116,111,108,
+ 117, 97, 95,105,115,117,115,101,114,116,121,112,101, 40,116,
+ 111,108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46,
+ 46, 39, 44, 34, 39, 46, 46,115,101,108,102, 46,116,121,112,
+ 101, 46, 46, 39, 34, 44, 39, 46, 46,100,101,102, 46, 46, 39,
+ 44, 38,116,111,108,117, 97, 95,101,114,114, 41, 39, 10,101,
+ 110,100, 10,101,110,100, 10,102,117,110, 99,116,105,111,110,
+ 32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,
+ 111,110, 58, 98,117,105,108,100,100,101, 99,108, 97,114, 97,
+ 116,105,111,110, 32, 40,110, 97,114,103, 44, 32, 99,112,108,
+ 117,115,112,108,117,115, 41, 10,108,111, 99, 97,108, 32, 97,
+ 114,114, 97,121, 32, 61, 32,115,101,108,102, 46,100,105,109,
+ 32,126, 61, 32, 39, 39, 32, 97,110,100, 32,116,111,110,117,
+ 109, 98,101,114, 40,115,101,108,102, 46,100,105,109, 41, 61,
+ 61,110,105,108, 10,108,111, 99, 97,108, 32,108,105,110,101,
+ 32, 61, 32, 34, 34, 10,108,111, 99, 97,108, 32,112,116,114,
+ 32, 61, 32, 39, 39, 10,108,111, 99, 97,108, 32,109,111,100,
+ 10,108,111, 99, 97,108, 32,116,121,112,101, 32, 61, 32,115,
+ 101,108,102, 46,116,121,112,101, 10,105,102, 32,115,101,108,
+ 102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,104,101,
+ 110, 10,116,121,112,101, 32, 61, 32,103,115,117, 98, 40,115,
+ 101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,116,
+ 37,115, 42, 39, 44, 39, 39, 41, 10,101,110,100, 10,108,111,
+ 99, 97,108, 32, 99,116,121,112,101, 32, 61, 32,116,121,112,
+ 101, 10,105,102, 32, 99,116,121,112,101, 61, 61, 34,108,117,
+ 97, 95, 79, 98,106,101, 99,116, 34, 32,111,114, 32, 99,116,
+ 121,112,101, 61, 61, 34,108,117, 97, 95, 70,117,110, 99,116,
+ 105,111,110, 34, 32,116,104,101,110, 10, 99,116,121,112,101,
+ 32, 61, 32, 34,105,110,116, 34, 10,101,110,100, 10,105,102,
+ 32,115,101,108,102, 46,112,116,114,126, 61, 39, 39, 32,116,
+ 104,101,110, 32,112,116,114, 32, 61, 32, 39, 42, 39, 32,101,
+ 110,100, 10,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,
+ 116,112, 97,114, 97,109, 40,108,105,110,101, 44, 34, 32, 34,
+ 44,115,101,108,102, 46,109,111,100, 44, 99,116,121,112,101,
+ 44,112,116,114, 41, 10,105,102, 32, 97,114,114, 97,121, 32,
+ 116,104,101,110, 10,108,105,110,101, 32, 61, 32, 99,111,110,
+ 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39,
+ 42, 39, 41, 10,101,110,100, 10,108,105,110,101, 32, 61, 32,
+ 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,
+ 101, 44,115,101,108,102, 46,110, 97,109,101, 41, 10,105,102,
+ 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39,
+ 32,116,104,101,110, 10,105,102, 32,116,111,110,117,109, 98,
+ 101,114, 40,115,101,108,102, 46,100,105,109, 41,126, 61,110,
+ 105,108, 32,116,104,101,110, 10,108,105,110,101, 32, 61, 32,
+ 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,
+ 101, 44, 39, 91, 39, 44,115,101,108,102, 46,100,105,109, 44,
+ 39, 93, 59, 39, 41, 10,101,108,115,101, 10,105,102, 32, 99,
+ 112,108,117,115,112,108,117,115, 32,116,104,101,110, 10,108,
+ 105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114,
+ 97,109, 40,108,105,110,101, 44, 39, 32, 61, 32,110,101,119,
+ 39, 44,116,121,112,101, 44,112,116,114, 44, 39, 91, 39, 46,
+ 46,115,101,108,102, 46,100,105,109, 46, 46, 39, 93, 59, 39,
+ 41, 10,101,108,115,101, 10,108,105,110,101, 32, 61, 32, 99,
+ 111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101,
+ 44, 39, 32, 61, 32, 40, 39, 44,116,121,112,101, 44,112,116,
+ 114, 44, 39, 42, 41, 39, 44, 10, 39,109, 97,108,108,111, 99,
+ 40, 40, 39, 44,115,101,108,102, 46,100,105,109, 44, 39, 41,
+ 42,115,105,122,101,111,102, 40, 39, 44,116,121,112,101, 44,
+ 112,116,114, 44, 39, 41, 41, 59, 39, 41, 10,101,110,100, 10,
+ 101,110,100, 10,101,108,115,101, 10,108,111, 99, 97,108, 32,
+ 116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,
+ 101, 41, 10,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,
+ 116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 32, 61,
+ 32, 39, 41, 10,105,102, 32,116, 32, 61, 61, 32, 39,115,116,
+ 97,116,101, 39, 32,116,104,101,110, 10,108,105,110,101, 32,
+ 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,
+ 105,110,101, 44, 32, 39,116,111,108,117, 97, 95, 83, 59, 39,
+ 41, 10,101,108,115,101, 10,105,102, 32,110,111,116, 32,116,
+ 32, 97,110,100, 32,112,116,114, 61, 61, 39, 39, 32,116,104,
+ 101,110, 32,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,
+ 116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 42, 39,
+ 41, 32,101,110,100, 10,108,111, 99, 97,108, 32, 99,116, 32,
+ 61, 32,116,121,112,101, 10,105,102, 32,116, 32, 61, 61, 32,
+ 39,118, 97,108,117,101, 39, 32,111,114, 32,116, 32, 61, 61,
+ 32, 39,102,117,110, 99,116,105,111,110, 39, 32,116,104,101,
+ 110, 10, 99,116, 32, 61, 32, 39,105,110,116, 39, 10,101,110,
+ 100, 10,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,
+ 112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 40, 40, 39,
+ 44,115,101,108,102, 46,109,111,100, 44, 99,116, 41, 10,105,
+ 102, 32,110,111,116, 32,116, 32,116,104,101,110, 10,108,105,
+ 110,101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,
+ 109, 40,108,105,110,101, 44, 39, 42, 39, 41, 10,101,110,100,
+ 10,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,112,
+ 97,114, 97,109, 40,108,105,110,101, 44, 39, 41, 32, 39, 41,
+ 10,105,102, 32,105,115,101,110,117,109, 40,116,121,112,101,
+ 41, 32,116,104,101,110, 10,108,105,110,101, 32, 61, 32, 99,
+ 111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101,
+ 44, 39, 40,105,110,116, 41, 32, 39, 41, 10,101,110,100, 10,
+ 108,111, 99, 97,108, 32,100,101,102, 32, 61, 32, 48, 10,105,
+ 102, 32,115,101,108,102, 46,100,101,102, 32,126, 61, 32, 39,
+ 39, 32,116,104,101,110, 32,100,101,102, 32, 61, 32,115,101,
+ 108,102, 46,100,101,102, 32,101,110,100, 10,105,102, 32,116,
+ 32,116,104,101,110, 10,105,102, 32,116, 61, 61, 39,102,117,
+ 110, 99,116,105,111,110, 39, 32,116,104,101,110, 32,116, 61,
+ 39,118, 97,108,117,101, 39, 32,101,110,100, 10,105,102, 32,
+ 115,101,108,102, 46,116,121,112,101, 32, 61, 61, 32, 34,116,
+ 111,108,117, 97, 95,105,110,100,101,120, 34, 32,116,104,101,
+ 110, 10,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,
+ 112, 97,114, 97,109, 40,108,105,110,101, 44, 39,116,111,108,
+ 117, 97, 95,116,111, 39, 46, 46,116, 44, 39, 40,116,111,108,
+ 117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44, 39,
+ 44,100,101,102, 44, 39, 41, 45, 49, 41, 59, 39, 41, 10,101,
+ 108,115,101, 10,108,105,110,101, 32, 61, 32, 99,111,110, 99,
+ 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39,116,
+ 111,108,117, 97, 95,116,111, 39, 46, 46,116, 44, 39, 40,116,
+ 111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39,
+ 44, 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,101,
+ 110,100, 10,101,108,115,101, 10,108,105,110,101, 32, 61, 32,
+ 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,
+ 101, 44, 39,116,111,108,117, 97, 95,116,111,117,115,101,114,
+ 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,
+ 110, 97,114,103, 44, 39, 44, 39, 44,100,101,102, 44, 39, 41,
+ 41, 59, 39, 41, 10,101,110,100, 10,101,110,100, 10,101,110,
+ 100, 10,114,101,116,117,114,110, 32,108,105,110,101, 10,101,
+ 110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+ 115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,100,
+ 101, 99,108, 97,114,101, 32, 40,110, 97,114,103, 41, 10,105,
+ 102, 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39,
+ 39, 32, 97,110,100, 32,115,101,108,102, 46,116,121,112,101,
+ 126, 61, 39, 99,104, 97,114, 39, 32, 97,110,100, 32,116,111,
+ 110,117,109, 98,101,114, 40,115,101,108,102, 46,100,105,109,
+ 41, 61, 61,110,105,108, 32,116,104,101,110, 10,111,117,116,
+ 112,117,116, 40, 39, 35,105,102,100,101,102, 32, 95, 95, 99,
+ 112,108,117,115,112,108,117,115, 92,110, 39, 41, 10,111,117,
+ 116,112,117,116, 40,115,101,108,102, 58, 98,117,105,108,100,
+ 100,101, 99,108, 97,114, 97,116,105,111,110, 40,110, 97,114,
+ 103, 44,116,114,117,101, 41, 41, 10,111,117,116,112,117,116,
+ 40, 39, 35,101,108,115,101, 92,110, 39, 41, 10,111,117,116,
+ 112,117,116, 40,115,101,108,102, 58, 98,117,105,108,100,100,
+ 101, 99,108, 97,114, 97,116,105,111,110, 40,110, 97,114,103,
+ 44,102, 97,108,115,101, 41, 41, 10,111,117,116,112,117,116,
+ 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,101,108,
+ 115,101, 10,111,117,116,112,117,116, 40,115,101,108,102, 58,
+ 98,117,105,108,100,100,101, 99,108, 97,114, 97,116,105,111,
+ 110, 40,110, 97,114,103, 44,102, 97,108,115,101, 41, 41, 10,
+ 101,110,100, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
+ 105,111,110, 58,103,101,116, 97,114,114, 97,121, 32, 40,110,
+ 97,114,103, 41, 10,105,102, 32,115,101,108,102, 46,100,105,
+ 109, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 10,108,111,
+ 99, 97,108, 32,116,121,112,101, 32, 61, 32,103,115,117, 98,
+ 40,115,101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,
+ 115,116, 32, 39, 44, 39, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,123, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82,
+ 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,108,111, 99, 97,
+ 108, 32,100,101,102, 59, 32,105,102, 32,115,101,108,102, 46,
+ 100,101,102,126, 61, 39, 39, 32,116,104,101,110, 32,100,101,
+ 102, 61, 49, 32,101,108,115,101, 32,100,101,102, 61, 48, 32,
+ 101,110,100, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,105,
+ 115, 98, 97,115,105, 99, 40,116,121,112,101, 41, 10,105,102,
+ 32, 40,116, 41, 32,116,104,101,110, 10,111,117,116,112,117,
+ 116, 40, 39, 32,105,102, 32, 40, 33,116,111,108,117, 97, 95,
+ 105,115, 39, 46, 46,116, 46, 46, 39, 97,114,114, 97,121, 40,
+ 116,111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44,
+ 39, 44, 39, 44,115,101,108,102, 46,100,105,109, 44, 39, 44,
+ 39, 44,100,101,102, 44, 39, 44, 38,116,111,108,117, 97, 95,
+ 101,114,114, 41, 41, 39, 41, 10,101,108,115,101, 10,111,117,
+ 116,112,117,116, 40, 39, 32,105,102, 32, 40, 33,116,111,108,
+ 117, 97, 95,105,115,117,115,101,114,116,121,112,101, 97,114,
+ 114, 97,121, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,110,
+ 97,114,103, 44, 39, 44, 34, 39, 44,116,121,112,101, 44, 39,
+ 34, 44, 39, 44,115,101,108,102, 46,100,105,109, 44, 39, 44,
+ 39, 44,100,101,102, 44, 39, 44, 38,116,111,108,117, 97, 95,
+ 101,114,114, 41, 41, 39, 41, 10,101,110,100, 10,111,117,116,
+ 112,117,116, 40, 39, 32,103,111,116,111, 32,116,111,108,117,
+ 97, 95,108,101,114,114,111,114, 59, 39, 41, 10,111,117,116,
+ 112,117,116, 40, 39, 32,101,108,115,101, 92,110, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,
+ 110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,123, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 32,105,110,116, 32,
+ 105, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,102,
+ 111,114, 40,105, 61, 48, 59, 32,105, 60, 39, 46, 46,115,101,
+ 108,102, 46,100,105,109, 46, 46, 39, 59,105, 43, 43, 41, 39,
+ 41, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,105,115, 98,
+ 97,115,105, 99, 40,116,121,112,101, 41, 10,108,111, 99, 97,
+ 108, 32,112,116,114, 32, 61, 32, 39, 39, 10,105,102, 32,115,
+ 101,108,102, 46,112,116,114,126, 61, 39, 39, 32,116,104,101,
+ 110, 32,112,116,114, 32, 61, 32, 39, 42, 39, 32,101,110,100,
+ 10,111,117,116,112,117,116, 40, 39, 32, 39, 44,115,101,108,
+ 102, 46,110, 97,109,101, 46, 46, 39, 91,105, 93, 32, 61, 32,
+ 39, 41, 10,105,102, 32,110,111,116, 32,116, 32, 97,110,100,
+ 32,112,116,114, 61, 61, 39, 39, 32,116,104,101,110, 32,111,
+ 117,116,112,117,116, 40, 39, 42, 39, 41, 32,101,110,100, 10,
+ 111,117,116,112,117,116, 40, 39, 40, 40, 39, 44,116,121,112,
+ 101, 41, 10,105,102, 32,110,111,116, 32,116, 32,116,104,101,
+ 110, 10,111,117,116,112,117,116, 40, 39, 42, 39, 41, 10,101,
+ 110,100, 10,111,117,116,112,117,116, 40, 39, 41, 32, 39, 41,
+ 10,108,111, 99, 97,108, 32,100,101,102, 32, 61, 32, 48, 10,
+ 105,102, 32,115,101,108,102, 46,100,101,102, 32,126, 61, 32,
+ 39, 39, 32,116,104,101,110, 32,100,101,102, 32, 61, 32,115,
+ 101,108,102, 46,100,101,102, 32,101,110,100, 10,105,102, 32,
+ 116, 32,116,104,101,110, 10,105,102, 32,116, 61, 61, 39,102,
+ 117,110, 99,116,105,111,110, 39, 32,116,104,101,110, 32,116,
+ 61, 39,118, 97,108,117,101, 39, 32,101,110,100, 10,111,117,
+ 116,112,117,116, 40, 39,116,111,108,117, 97, 95,116,111,102,
+ 105,101,108,100, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,
+ 117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,105,
+ 43, 49, 44, 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41,
+ 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39,116,
+ 111,108,117, 97, 95,116,111,102,105,101,108,100,117,115,101,
+ 114,116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 39,
+ 44,110, 97,114,103, 44, 39, 44,105, 43, 49, 44, 39, 44,100,
+ 101,102, 44, 39, 41, 41, 59, 39, 41, 10,101,110,100, 10,111,
+ 117,116,112,117,116, 40, 39, 32,125, 39, 41, 10,111,117,116,
+ 112,117,116, 40, 39, 32,125, 39, 41, 10,101,110,100, 10,101,
+ 110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+ 115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,115,
+ 101,116, 97,114,114, 97,121, 32, 40,110, 97,114,103, 41, 10,
+ 105,102, 32,110,111,116, 32,115,116,114,102,105,110,100, 40,
+ 115,101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,
+ 116, 39, 41, 32, 97,110,100, 32,115,101,108,102, 46,100,105,
+ 109, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 10,108,111,
+ 99, 97,108, 32,116,121,112,101, 32, 61, 32,103,115,117, 98,
+ 40,115,101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,
+ 115,116, 32, 39, 44, 39, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,123, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 32,105,110,116, 32,105, 59, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39, 32,102,111,114, 40,105, 61, 48, 59, 32,105, 60,
+ 39, 46, 46,115,101,108,102, 46,100,105,109, 46, 46, 39, 59,
+ 105, 43, 43, 41, 39, 41, 10,108,111, 99, 97,108, 32,116, 44,
+ 99,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,116,121,
+ 112,101, 41, 10,105,102, 32,116, 32,116,104,101,110, 10,105,
+ 102, 32,116, 61, 61, 39,102,117,110, 99,116,105,111,110, 39,
+ 32,116,104,101,110, 32,116, 61, 39,118, 97,108,117,101, 39,
+ 32,101,110,100, 10,111,117,116,112,117,116, 40, 39, 32,116,
+ 111,108,117, 97, 95,112,117,115,104,102,105,101,108,100, 39,
+ 46, 46,116, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44,
+ 39, 44,110, 97,114,103, 44, 39, 44,105, 43, 49, 44, 40, 39,
+ 44, 99,116, 44, 39, 41, 39, 44,115,101,108,102, 46,110, 97,
+ 109,101, 44, 39, 91,105, 93, 41, 59, 39, 41, 10,101,108,115,
+ 101, 10,105,102, 32,115,101,108,102, 46,112,116,114, 32, 61,
+ 61, 32, 39, 39, 32,116,104,101,110, 10,111,117,116,112,117,
+ 116, 40, 39, 32,123, 39, 41, 10,111,117,116,112,117,116, 40,
+ 39, 35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,
+ 112,108,117,115, 92,110, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,118,111,105,100, 42, 32,116,111,108,117, 97, 95,
+ 111, 98,106, 32, 61, 32,110,101,119, 39, 44,116,121,112,101,
+ 44, 39, 40, 39, 44,115,101,108,102, 46,110, 97,109,101, 44,
+ 39, 91,105, 93, 41, 59, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,116,111,108,117, 97, 95,112,117,115,104,102,105,
+ 101,108,100,117,115,101,114,116,121,112,101, 40,116,111,108,
+ 117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,105,
+ 43, 49, 44,116,111,108,117, 97, 95, 99,108,111,110,101, 40,
+ 116,111,108,117, 97, 95, 83, 44,116,111,108,117, 97, 95,111,
+ 98,106, 44, 39, 46, 46, 32, 40, 95, 99,111,108,108,101, 99,
+ 116, 91,116,121,112,101, 93, 32,111,114, 32, 39, 78, 85, 76,
+ 76, 39, 41, 32, 46, 46, 39, 41, 44, 34, 39, 44,116,121,112,
+ 101, 44, 39, 34, 41, 59, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 35,101,108,115,101, 92,110, 39, 41, 10,111,117,116,
+ 112,117,116, 40, 39, 32,118,111,105,100, 42, 32,116,111,108,
+ 117, 97, 95,111, 98,106, 32, 61, 32,116,111,108,117, 97, 95,
+ 99,111,112,121, 40,116,111,108,117, 97, 95, 83, 44, 40,118,
+ 111,105,100, 42, 41, 38, 39, 44,115,101,108,102, 46,110, 97,
+ 109,101, 44, 39, 91,105, 93, 44,115,105,122,101,111,102, 40,
+ 39, 44,116,121,112,101, 44, 39, 41, 41, 59, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,
+ 117,115,104,102,105,101,108,100,117,115,101,114,116,121,112,
+ 101, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,
+ 103, 44, 39, 44,105, 43, 49, 44,116,111,108,117, 97, 95, 99,
+ 108,111,110,101, 40,116,111,108,117, 97, 95, 83, 44,116,111,
+ 108,117, 97, 95,111, 98,106, 44, 78, 85, 76, 76, 41, 44, 34,
+ 39, 44,116,121,112,101, 44, 39, 34, 41, 59, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,125, 39, 41,
+ 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39, 32,
+ 116,111,108,117, 97, 95,112,117,115,104,102,105,101,108,100,
+ 117,115,101,114,116,121,112,101, 40,116,111,108,117, 97, 95,
+ 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,105, 43, 49, 44,
+ 40,118,111,105,100, 42, 41, 39, 44,115,101,108,102, 46,110,
+ 97,109,101, 44, 39, 91,105, 93, 44, 34, 39, 44,116,121,112,
+ 101, 44, 39, 34, 41, 59, 39, 41, 10,101,110,100, 10,101,110,
+ 100, 10,111,117,116,112,117,116, 40, 39, 32,125, 39, 41, 10,
+ 101,110,100, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
+ 105,111,110, 58,102,114,101,101, 97,114,114, 97,121, 32, 40,
+ 41, 10,105,102, 32,115,101,108,102, 46,100,105,109, 32,126,
+ 61, 32, 39, 39, 32, 97,110,100, 32,116,111,110,117,109, 98,
+ 101,114, 40,115,101,108,102, 46,100,105,109, 41, 61, 61,110,
+ 105,108, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
+ 39, 35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,
+ 112,108,117,115, 92,110, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,100,101,108,101,116,101, 32, 91, 93, 39, 44,115,
+ 101,108,102, 46,110, 97,109,101, 44, 39, 59, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 35,101,108,115,101, 92,110, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 32,102,114,101,101,
+ 40, 39, 44,115,101,108,102, 46,110, 97,109,101, 44, 39, 41,
+ 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,110,
+ 100,105,102, 92,110, 39, 41, 10,101,110,100, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+ 68,101, 99,108, 97,114, 97,116,105,111,110, 58,112, 97,115,
+ 115,112, 97,114, 32, 40, 41, 10,108,111, 99, 97,108, 32,110,
+ 97,109,101, 32, 61, 32,115,101,108,102, 46,110, 97,109,101,
+ 10,105,102, 32,115,101,108,102, 46,112,116,114, 61, 61, 39,
+ 38, 39, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
+ 39, 42, 39, 46, 46,110, 97,109,101, 41, 10,101,108,115,101,
+ 105,102, 32,115,101,108,102, 46,114,101,116, 61, 61, 39, 42,
+ 39, 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 39,
+ 38, 39, 46, 46,110, 97,109,101, 41, 10,101,108,115,101, 10,
+ 111,117,116,112,117,116, 40,110, 97,109,101, 41, 10,101,110,
+ 100, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,
+ 110, 58,114,101,116,118, 97,108,117,101, 32, 40, 41, 10,105,
+ 102, 32,115,101,108,102, 46,114,101,116, 32,126, 61, 32, 39,
+ 39, 32,116,104,101,110, 10,108,111, 99, 97,108, 32,116, 44,
+ 99,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,115,101,
+ 108,102, 46,116,121,112,101, 41, 10,105,102, 32,116, 32,116,
+ 104,101,110, 10,105,102, 32,116, 61, 61, 39,102,117,110, 99,
+ 116,105,111,110, 39, 32,116,104,101,110, 32,116, 61, 39,118,
+ 97,108,117,101, 39, 32,101,110,100, 10,105,102, 32,115,101,
+ 108,102, 46,116,121,112,101, 61, 61, 34,116,111,108,117, 97,
+ 95,105,110,100,101,120, 34, 32,116,104,101,110, 10,111,117,
+ 116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,117,
+ 115,104, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,117, 97,
+ 95, 83, 44, 40, 39, 44, 99,116, 44, 39, 41, 39, 46, 46,115,
+ 101,108,102, 46,110, 97,109,101, 46, 46, 39, 43, 49, 41, 59,
+ 39, 41, 10,101,108,115,101, 10,111,117,116,112,117,116, 40,
+ 39, 32,116,111,108,117, 97, 95,112,117,115,104, 39, 46, 46,
+ 116, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 40, 39,
+ 44, 99,116, 44, 39, 41, 39, 46, 46,115,101,108,102, 46,110,
+ 97,109,101, 46, 46, 39, 41, 59, 39, 41, 10,101,110,100, 10,
+ 101,108,115,101, 10,111,117,116,112,117,116, 40, 39, 32,116,
+ 111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,
+ 112,101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,
+ 100, 42, 41, 39, 46, 46,115,101,108,102, 46,110, 97,109,101,
+ 46, 46, 39, 44, 34, 39, 44,115,101,108,102, 46,116,121,112,
+ 101, 44, 39, 34, 41, 59, 39, 41, 10,101,110,100, 10,114,101,
+ 116,117,114,110, 32, 49, 10,101,110,100, 10,114,101,116,117,
+ 114,110, 32, 48, 10,101,110,100, 10,102,117,110, 99,116,105,
+ 111,110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,110,
+ 32, 40,116, 41, 10,115,101,116,109,101,116, 97,116, 97, 98,
+ 108,101, 40,116, 44, 99,108, 97,115,115, 68,101, 99,108, 97,
+ 114, 97,116,105,111,110, 41, 10,116, 58, 98,117,105,108,100,
+ 110, 97,109,101,115, 40, 41, 10,116, 58, 99,104,101, 99,107,
+ 110, 97,109,101, 40, 41, 10,116, 58, 99,104,101, 99,107,116,
+ 121,112,101, 40, 41, 10,114,101,116,117,114,110, 32,116, 10,
+ 101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 68,101,
+ 99,108, 97,114, 97,116,105,111,110, 32, 40,115, 44,107,105,
+ 110,100, 41, 10,115, 32, 61, 32,103,115,117, 98, 40,115, 44,
+ 34, 37,115, 42, 61, 37,115, 42, 34, 44, 34, 61, 34, 41, 10,
+ 105,102, 32,107,105,110,100, 32, 61, 61, 32, 34,118, 97,114,
+ 34, 32,116,104,101,110, 10,105,102, 32,115, 32, 61, 61, 32,
+ 39, 39, 32,111,114, 32,115, 32, 61, 61, 32, 39,118,111,105,
+ 100, 39, 32,116,104,101,110, 10,114,101,116,117,114,110, 32,
+ 95, 68,101, 99,108, 97,114, 97,116,105,111,110,123,116,121,
+ 112,101, 32, 61, 32, 39,118,111,105,100, 39, 44, 32,107,105,
+ 110,100, 32, 61, 32,107,105,110,100,125, 10,101,110,100, 10,
+ 101,110,100, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,115,
+ 112,108,105,116, 40,115, 44, 39, 37, 42, 37,115, 42, 38, 39,
+ 41, 10,105,102, 32,116, 46,110, 32, 61, 61, 32, 50, 32,116,
+ 104,101,110, 10,105,102, 32,107,105,110,100, 32, 61, 61, 32,
+ 39,102,117,110, 99, 39, 32,116,104,101,110, 10,101,114,114,
+ 111,114, 40, 34, 35,105,110,118, 97,108,105,100, 32,102,117,
+ 110, 99,116,105,111,110, 32,114,101,116,117,114,110, 32,116,
+ 121,112,101, 58, 32, 34, 46, 46,115, 41, 10,101,110,100, 10,
+ 108,111, 99, 97,108, 32,109, 32, 61, 32,115,112,108,105,116,
+ 40,116, 91, 49, 93, 44, 39, 37,115, 37,115, 42, 39, 41, 10,
+ 114,101,116,117,114,110, 32, 95, 68,101, 99,108, 97,114, 97,
+ 116,105,111,110,123, 10,110, 97,109,101, 32, 61, 32,116, 91,
+ 50, 93, 44, 10,112,116,114, 32, 61, 32, 39, 42, 39, 44, 10,
+ 114,101,116, 32, 61, 32, 39, 38, 39, 44, 10,116,121,112,101,
+ 32, 61, 32,109, 91,109, 46,110, 93, 44, 10,109,111,100, 32,
+ 61, 32, 99,111,110, 99, 97,116, 40,109, 44, 49, 44,109, 46,
+ 110, 45, 49, 41, 44, 10,107,105,110,100, 32, 61, 32,107,105,
+ 110,100, 10,125, 10,101,110,100, 10,116, 32, 61, 32,115,112,
+ 108,105,116, 40,115, 44, 39, 37, 42, 37,115, 42, 37, 42, 39,
+ 41, 10,105,102, 32,116, 46,110, 32, 61, 61, 32, 50, 32,116,
+ 104,101,110, 10,105,102, 32,107,105,110,100, 32, 61, 61, 32,
+ 39,102,117,110, 99, 39, 32,116,104,101,110, 10,101,114,114,
+ 111,114, 40, 34, 35,105,110,118, 97,108,105,100, 32,102,117,
+ 110, 99,116,105,111,110, 32,114,101,116,117,114,110, 32,116,
+ 121,112,101, 58, 32, 34, 46, 46,115, 41, 10,101,110,100, 10,
+ 108,111, 99, 97,108, 32,109, 32, 61, 32,115,112,108,105,116,
+ 40,116, 91, 49, 93, 44, 39, 37,115, 37,115, 42, 39, 41, 10,
+ 114,101,116,117,114,110, 32, 95, 68,101, 99,108, 97,114, 97,
+ 116,105,111,110,123, 10,110, 97,109,101, 32, 61, 32,116, 91,
+ 50, 93, 44, 10,112,116,114, 32, 61, 32, 39, 42, 39, 44, 10,
+ 114,101,116, 32, 61, 32, 39, 42, 39, 44, 10,116,121,112,101,
+ 32, 61, 32,109, 91,109, 46,110, 93, 44, 10,109,111,100, 32,
+ 61, 32, 99,111,110, 99, 97,116, 40,109, 44, 49, 44,109, 46,
+ 110, 45, 49, 41, 44, 10,107,105,110,100, 32, 61, 32,107,105,
+ 110,100, 10,125, 10,101,110,100, 10,116, 32, 61, 32,115,112,
+ 108,105,116, 40,115, 44, 39, 38, 39, 41, 10,105,102, 32,116,
+ 46,110, 32, 61, 61, 32, 50, 32,116,104,101,110, 10,108,111,
+ 99, 97,108, 32,109, 32, 61, 32,115,112,108,105,116, 40,116,
+ 91, 49, 93, 44, 39, 37,115, 37,115, 42, 39, 41, 10,114,101,
+ 116,117,114,110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,
+ 111,110,123, 10,110, 97,109,101, 32, 61, 32,116, 91, 50, 93,
+ 44, 10,112,116,114, 32, 61, 32, 39, 38, 39, 44, 10,116,121,
+ 112,101, 32, 61, 32,109, 91,109, 46,110, 93, 44, 10,109,111,
+ 100, 32, 61, 32, 99,111,110, 99, 97,116, 40,109, 44, 49, 44,
+ 109, 46,110, 45, 49, 41, 32, 44, 10,107,105,110,100, 32, 61,
+ 32,107,105,110,100, 10,125, 10,101,110,100, 10,108,111, 99,
+ 97,108, 32,115, 49, 32, 61, 32,103,115,117, 98, 40,115, 44,
+ 34, 40, 37, 98, 37, 91, 37, 93, 41, 34, 44,102,117,110, 99,
+ 116,105,111,110, 32, 40,110, 41, 32,114,101,116,117,114,110,
+ 32,103,115,117, 98, 40,110, 44, 39, 37, 42, 39, 44, 39, 92,
+ 49, 39, 41, 32,101,110,100, 41, 10,116, 32, 61, 32,115,112,
+ 108,105,116, 40,115, 49, 44, 39, 37, 42, 39, 41, 10,105,102,
+ 32,116, 46,110, 32, 61, 61, 32, 50, 32,116,104,101,110, 10,
+ 116, 91, 50, 93, 32, 61, 32,103,115,117, 98, 40,116, 91, 50,
+ 93, 44, 39, 92, 49, 39, 44, 39, 37, 42, 39, 41, 10,108,111,
+ 99, 97,108, 32,109, 32, 61, 32,115,112,108,105,116, 40,116,
+ 91, 49, 93, 44, 39, 37,115, 37,115, 42, 39, 41, 10,114,101,
+ 116,117,114,110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,
+ 111,110,123, 10,110, 97,109,101, 32, 61, 32,116, 91, 50, 93,
+ 44, 10,112,116,114, 32, 61, 32, 39, 42, 39, 44, 10,116,121,
+ 112,101, 32, 61, 32,109, 91,109, 46,110, 93, 44, 10,109,111,
+ 100, 32, 61, 32, 99,111,110, 99, 97,116, 40,109, 44, 49, 44,
+ 109, 46,110, 45, 49, 41, 32, 44, 10,107,105,110,100, 32, 61,
+ 32,107,105,110,100, 10,125, 10,101,110,100, 10,105,102, 32,
+ 107,105,110,100, 32, 61, 61, 32, 39,118, 97,114, 39, 32,116,
+ 104,101,110, 10,116, 32, 61, 32,115,112,108,105,116, 40,115,
+ 44, 39, 37,115, 37,115, 42, 39, 41, 10,108,111, 99, 97,108,
+ 32,118, 10,105,102, 32,102,105,110,100,116,121,112,101, 40,
+ 116, 91,116, 46,110, 93, 41, 32,116,104,101,110, 32,118, 32,
+ 61, 32, 39, 39, 32,101,108,115,101, 32,118, 32, 61, 32,116,
+ 91,116, 46,110, 93, 59, 32,116, 46,110, 32, 61, 32,116, 46,
+ 110, 45, 49, 32,101,110,100, 10,114,101,116,117,114,110, 32,
+ 95, 68,101, 99,108, 97,114, 97,116,105,111,110,123, 10,110,
+ 97,109,101, 32, 61, 32,118, 44, 10,116,121,112,101, 32, 61,
+ 32,116, 91,116, 46,110, 93, 44, 10,109,111,100, 32, 61, 32,
+ 99,111,110, 99, 97,116, 40,116, 44, 49, 44,116, 46,110, 45,
+ 49, 41, 44, 10,107,105,110,100, 32, 61, 32,107,105,110,100,
+ 10,125, 10,101,108,115,101, 10,116, 32, 61, 32,115,112,108,
+ 105,116, 40,115, 44, 39, 37,115, 37,115, 42, 39, 41, 10,108,
+ 111, 99, 97,108, 32,118, 32, 61, 32,116, 91,116, 46,110, 93,
+ 10,108,111, 99, 97,108, 32,116,112, 44,109,100, 10,105,102,
+ 32,116, 46,110, 62, 49, 32,116,104,101,110, 10,116,112, 32,
+ 61, 32,116, 91,116, 46,110, 45, 49, 93, 10,109,100, 32, 61,
+ 32, 99,111,110, 99, 97,116, 40,116, 44, 49, 44,116, 46,110,
+ 45, 50, 41, 10,101,110,100, 10,114,101,116,117,114,110, 32,
+ 95, 68,101, 99,108, 97,114, 97,116,105,111,110,123, 10,110,
+ 97,109,101, 32, 61, 32,118, 44, 10,116,121,112,101, 32, 61,
+ 32,116,112, 44, 10,109,111,100, 32, 61, 32,109,100, 44, 10,
+ 107,105,110,100, 32, 61, 32,107,105,110,100, 10,125, 10,101,
+ 110,100, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 32,
+ 61, 32,123, 10, 95,103,101,116, 32, 61, 32,123,125, 44, 10,
+ 95,115,101,116, 32, 61, 32,123,125, 44, 10,125, 10, 99,108,
+ 97,115,115, 86, 97,114,105, 97, 98,108,101, 46, 95, 95,105,
+ 110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 86, 97,114,
+ 105, 97, 98,108,101, 10,115,101,116,109,101,116, 97,116, 97,
+ 98,108,101, 40, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+ 108,101, 44, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,
+ 116,105,111,110, 41, 10,102,117,110, 99,116,105,111,110, 32,
+ 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 58,112,
+ 114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,111,
+ 115,101, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
+ 46, 46, 34, 86, 97,114,105, 97, 98,108,101,123, 34, 41, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 109,111,100, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
+ 109,111,100, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,
+ 116, 40,105,100,101,110,116, 46, 46, 34, 32,116,121,112,101,
+ 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,116,121,112,
+ 101, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32,112,116,114, 32, 61, 32,
+ 39, 34, 46, 46,115,101,108,102, 46,112,116,114, 46, 46, 34,
+ 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,110, 97,109,101, 32, 61, 32, 39, 34, 46,
+ 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 34, 39, 44,
+ 34, 41, 10,105,102, 32,115,101,108,102, 46,100,105,109, 32,
+ 116,104,101,110, 32,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,100,105,109, 32, 61, 32, 39, 34, 46, 46,
+ 115,101,108,102, 46,100,105,109, 46, 46, 34, 39, 44, 34, 41,
+ 32,101,110,100, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,100,101,102, 32, 61, 32, 39, 34, 46, 46,
+ 115,101,108,102, 46,100,101,102, 46, 46, 34, 39, 44, 34, 41,
+ 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+ 32,114,101,116, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+ 46,114,101,116, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46, 46,
+ 99,108,111,115,101, 41, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97,
+ 98,108,101, 58, 99,102,117,110, 99,110, 97,109,101, 32, 40,
+ 112,114,101,102,105,120, 41, 10,108,111, 99, 97,108, 32,112,
+ 97,114,101,110,116, 32, 61, 32, 34, 34, 10,108,111, 99, 97,
+ 108, 32,117,110,115,105,103,110,101,100, 32, 61, 32, 34, 34,
+ 10,108,111, 99, 97,108, 32,112,116,114, 32, 61, 32, 34, 34,
+ 10,108,111, 99, 97,108, 32,112, 32, 61, 32,115,101,108,102,
+ 58,105,110,109,111,100,117,108,101, 40, 41, 32,111,114, 32,
+ 115,101,108,102, 58,105,110,110, 97,109,101,115,112, 97, 99,
+ 101, 40, 41, 32,111,114, 32,115,101,108,102, 58,105,110, 99,
+ 108, 97,115,115, 40, 41, 10,105,102, 32,112, 32,116,104,101,
+ 110, 10,112, 97,114,101,110,116, 32, 61, 32, 34, 95, 34, 32,
+ 46, 46, 32,112, 10,101,110,100, 10,105,102, 32,115,116,114,
+ 102,105,110,100, 40,115,101,108,102, 46,109,111,100, 44, 34,
+ 40,117,110,115,105,103,110,101,100, 41, 34, 41, 32,116,104,
+ 101,110, 10,117,110,115,105,103,110,101,100, 32, 61, 32, 34,
+ 95,117,110,115,105,103,110,101,100, 34, 10,101,110,100, 10,
+ 105,102, 32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32,
+ 34, 42, 34, 32,116,104,101,110, 32,112,116,114, 32, 61, 32,
+ 34, 95,112,116,114, 34, 10,101,108,115,101,105,102, 32,115,
+ 101,108,102, 46,112,116,114, 32, 61, 61, 32, 34, 38, 34, 32,
+ 116,104,101,110, 32,112,116,114, 32, 61, 32, 34, 95,114,101,
+ 102, 34, 10,101,110,100, 10,108,111, 99, 97,108, 32,110, 97,
+ 109,101, 32, 61, 32,112,114,101,102,105,120, 32, 46, 46, 32,
+ 112, 97,114,101,110,116, 32, 46, 46, 32,117,110,115,105,103,
+ 110,101,100, 32, 46, 46, 32, 34, 95, 34, 32, 46, 46, 32,103,
+ 115,117, 98, 40,115,101,108,102, 46,110, 97,109,101, 44, 34,
+ 46, 42, 58, 58, 34, 44, 34, 34, 41, 32, 46, 46, 32,112,116,
+ 114, 10,114,101,116,117,114,110, 32,110, 97,109,101, 10,101,
+ 110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+ 115,115, 86, 97,114,105, 97, 98,108,101, 58,105,115,118, 97,
+ 114,105, 97, 98,108,101, 32, 40, 41, 10,114,101,116,117,114,
+ 110, 32,116,114,117,101, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97,
+ 98,108,101, 58,103,101,116,118, 97,108,117,101, 32, 40, 99,
+ 108, 97,115,115, 44,115,116, 97,116,105, 99, 41, 10,105,102,
+ 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116, 97,116,
+ 105, 99, 32,116,104,101,110, 10,114,101,116,117,114,110, 32,
+ 99,108, 97,115,115, 46, 46, 39, 58, 58, 39, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 10,101,108,115,101,105,102, 32,
+ 99,108, 97,115,115, 32,116,104,101,110, 10,114,101,116,117,
+ 114,110, 32, 39,115,101,108,102, 45, 62, 39, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 10,101,108,115,101, 10,114,101,
+ 116,117,114,110, 32,115,101,108,102, 46,110, 97,109,101, 10,
+ 101,110,100, 10,101,110,100, 10,102,117,110, 99,116,105,111,
+ 110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101,
+ 58,103,101,116,112,111,105,110,116,101,114,118, 97,108,117,
+ 101, 32, 40, 99,108, 97,115,115, 44,115,116, 97,116,105, 99,
+ 41, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,
+ 115,116, 97,116,105, 99, 32,116,104,101,110, 10,114,101,116,
+ 117,114,110, 32, 99,108, 97,115,115, 46, 46, 39, 58, 58,112,
+ 39, 10,101,108,115,101,105,102, 32, 99,108, 97,115,115, 32,
+ 116,104,101,110, 10,114,101,116,117,114,110, 32, 39,115,101,
+ 108,102, 45, 62,112, 39, 10,101,108,115,101, 10,114,101,116,
+ 117,114,110, 32, 39,112, 39, 10,101,110,100, 10,101,110,100,
+ 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+ 86, 97,114,105, 97, 98,108,101, 58,115,117,112, 99,111,100,
+ 101, 32, 40, 41, 10,108,111, 99, 97,108, 32, 99,108, 97,115,
+ 115, 32, 61, 32,115,101,108,102, 58,105,110, 99,108, 97,115,
+ 115, 40, 41, 10,105,102, 32, 99,108, 97,115,115, 32,116,104,
+ 101,110, 10,111,117,116,112,117,116, 40, 34, 47, 42, 32,103,
+ 101,116, 32,102,117,110, 99,116,105,111,110, 58, 34, 44,115,
+ 101,108,102, 46,110, 97,109,101, 44, 34, 32,111,102, 32, 99,
+ 108, 97,115,115, 32, 34, 44, 99,108, 97,115,115, 44, 34, 32,
+ 42, 47, 34, 41, 10,115,101,108,102, 46, 99,103,101,116,110,
+ 97,109,101, 32, 61, 32,115,101,108,102, 58, 99,102,117,110,
+ 99,110, 97,109,101, 40, 34,116,111,108,117, 97, 95,103,101,
+ 116, 95, 34, 46, 46, 99,108, 97,115,115, 41, 10,101,108,115,
+ 101, 10,111,117,116,112,117,116, 40, 34, 47, 42, 32,103,101,
+ 116, 32,102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,
+ 108,102, 46,110, 97,109,101, 44, 34, 32, 42, 47, 34, 41, 10,
+ 115,101,108,102, 46, 99,103,101,116,110, 97,109,101, 32, 61,
+ 32,115,101,108,102, 58, 99,102,117,110, 99,110, 97,109,101,
+ 40, 34,116,111,108,117, 97, 95,103,101,116, 34, 41, 10,101,
+ 110,100, 10,111,117,116,112,117,116, 40, 34,115,116, 97,116,
+ 105, 99, 32,105,110,116, 34, 44,115,101,108,102, 46, 99,103,
+ 101,116,110, 97,109,101, 44, 34, 40,108,117, 97, 95, 83,116,
+ 97,116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34, 41,
+ 10,111,117,116,112,117,116, 40, 34,123, 34, 41, 10,108,111,
+ 99, 97,108, 32, 95, 44, 95, 44,115,116, 97,116,105, 99, 32,
+ 61, 32,115,116,114,102,105,110,100, 40,115,101,108,102, 46,
+ 109,111,100, 44, 39, 94, 37,115, 42, 40,115,116, 97,116,105,
+ 99, 41, 39, 41, 10,105,102, 32, 99,108, 97,115,115, 32, 97,
+ 110,100, 32,115,116, 97,116,105, 99, 61, 61,110,105,108, 32,
+ 116,104,101,110, 10,111,117,116,112,117,116, 40, 39, 32, 39,
+ 44, 99,108, 97,115,115, 44, 39, 42, 39, 44, 39,115,101,108,
+ 102, 32, 61, 32, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 40, 39, 44, 99,108, 97,115,115, 44, 39, 42, 41, 32, 39, 41,
+ 10,111,117,116,112,117,116, 40, 39,116,111,108,117, 97, 95,
+ 116,111,117,115,101,114,116,121,112,101, 40,116,111,108,117,
+ 97, 95, 83, 44, 49, 44, 48, 41, 59, 39, 41, 10,101,108,115,
+ 101,105,102, 32,115,116, 97,116,105, 99, 32,116,104,101,110,
+ 10, 95, 44, 95, 44,115,101,108,102, 46,109,111,100, 32, 61,
+ 32,115,116,114,102,105,110,100, 40,115,101,108,102, 46,109,
+ 111,100, 44, 39, 94, 37,115, 42,115,116, 97,116,105, 99, 37,
+ 115, 37,115, 42, 40, 46, 42, 41, 39, 41, 10,101,110,100, 10,
+ 105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116,
+ 97,116,105, 99, 61, 61,110,105,108, 32,116,104,101,110, 10,
+ 111,117,116,112,117,116, 40, 39, 35,105,102,110,100,101,102,
+ 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,
+ 110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,105,102,
+ 32, 40, 33,115,101,108,102, 41, 32,116,111,108,117, 97, 95,
+ 101,114,114,111,114, 40,116,111,108,117, 97, 95, 83, 44, 34,
+ 105,110,118, 97,108,105,100, 32, 92, 39,115,101,108,102, 92,
+ 39, 32,105,110, 32, 97, 99, 99,101,115,115,105,110,103, 32,
+ 118, 97,114,105, 97, 98,108,101, 32, 92, 39, 39, 46, 46,115,
+ 101,108,102, 46,110, 97,109,101, 46, 46, 39, 92, 39, 34, 44,
+ 78, 85, 76, 76, 41, 59, 39, 41, 59, 10,111,117,116,112,117,
+ 116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,101,
+ 110,100, 10,108,111, 99, 97,108, 32,116,121,112,101, 32, 61,
+ 32,115,101,108,102, 46,116,121,112,101, 10,105,102, 32,103,
+ 115,117, 98, 40,116,121,112,101, 44, 39, 99,111,110,115,116,
+ 32, 39, 44, 39, 39, 41, 61, 61, 39, 99,104, 97,114, 39, 32,
+ 97,110,100, 32,115,101,108,102, 46,100,105,109,126, 61, 39,
+ 39, 32,116,104,101,110, 10,116,121,112,101, 32, 61, 32, 39,
+ 99,104, 97,114, 42, 39, 10,101,110,100, 10,108,111, 99, 97,
+ 108, 32,116, 44, 99,116, 32, 61, 32,105,115, 98, 97,115,105,
+ 99, 40,116,121,112,101, 41, 10,105,102, 32,116, 32,116,104,
+ 101,110, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,
+ 117, 97, 95,112,117,115,104, 39, 46, 46,116, 46, 46, 39, 40,
+ 116,111,108,117, 97, 95, 83, 44, 40, 39, 44, 99,116, 44, 39,
+ 41, 39, 46, 46,115,101,108,102, 58,103,101,116,118, 97,108,
+ 117,101, 40, 99,108, 97,115,115, 44,115,116, 97,116,105, 99,
+ 41, 46, 46, 39, 41, 59, 39, 41, 10,101,108,115,101, 10,116,
+ 32, 61, 32,115,101,108,102, 46,116,121,112,101, 10,105,102,
+ 32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39, 38,
+ 39, 32,111,114, 32,115,101,108,102, 46,112,116,114, 32, 61,
+ 61, 32, 39, 39, 32,116,104,101,110, 10,111,117,116,112,117,
+ 116, 40, 39, 32,116,111,108,117, 97, 95,112,117,115,104,117,
+ 115,101,114,116,121,112,101, 40,116,111,108,117, 97, 95, 83,
+ 44, 40,118,111,105,100, 42, 41, 38, 39, 46, 46,115,101,108,
+ 102, 58,103,101,116,118, 97,108,117,101, 40, 99,108, 97,115,
+ 115, 44,115,116, 97,116,105, 99, 41, 46, 46, 39, 44, 34, 39,
+ 44,116, 44, 39, 34, 41, 59, 39, 41, 10,101,108,115,101, 10,
+ 111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,
+ 112,117,115,104,117,115,101,114,116,121,112,101, 40,116,111,
+ 108,117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41, 39, 46,
+ 46,115,101,108,102, 58,103,101,116,118, 97,108,117,101, 40,
+ 99,108, 97,115,115, 44,115,116, 97,116,105, 99, 41, 46, 46,
+ 39, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,101,
+ 110,100, 10,101,110,100, 10,111,117,116,112,117,116, 40, 39,
+ 32,114,101,116,117,114,110, 32, 49, 59, 39, 41, 10,111,117,
+ 116,112,117,116, 40, 39,125, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39, 92,110, 39, 41, 10,105,102, 32,110,111,116, 32,
+ 115,116,114,102,105,110,100, 40,115,101,108,102, 46,116,121,
+ 112,101, 44, 39, 99,111,110,115,116, 39, 41, 32,116,104,101,
+ 110, 10,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110,
+ 10,111,117,116,112,117,116, 40, 34, 47, 42, 32,115,101,116,
+ 32,102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,
+ 102, 46,110, 97,109,101, 44, 34, 32,111,102, 32, 99,108, 97,
+ 115,115, 32, 34, 44, 99,108, 97,115,115, 44, 34, 32, 42, 47,
+ 34, 41, 10,115,101,108,102, 46, 99,115,101,116,110, 97,109,
+ 101, 32, 61, 32,115,101,108,102, 58, 99,102,117,110, 99,110,
+ 97,109,101, 40, 34,116,111,108,117, 97, 95,115,101,116, 95,
+ 34, 46, 46, 99,108, 97,115,115, 41, 10,101,108,115,101, 10,
+ 111,117,116,112,117,116, 40, 34, 47, 42, 32,115,101,116, 32,
+ 102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,102,
+ 46,110, 97,109,101, 44, 34, 32, 42, 47, 34, 41, 10,115,101,
+ 108,102, 46, 99,115,101,116,110, 97,109,101, 32, 61, 32,115,
+ 101,108,102, 58, 99,102,117,110, 99,110, 97,109,101, 40, 34,
+ 116,111,108,117, 97, 95,115,101,116, 34, 41, 10,101,110,100,
+ 10,111,117,116,112,117,116, 40, 34,115,116, 97,116,105, 99,
+ 32,105,110,116, 34, 44,115,101,108,102, 46, 99,115,101,116,
+ 110, 97,109,101, 44, 34, 40,108,117, 97, 95, 83,116, 97,116,
+ 101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34, 41, 10,111,
+ 117,116,112,117,116, 40, 34,123, 34, 41, 10,105,102, 32, 99,
+ 108, 97,115,115, 32, 97,110,100, 32,115,116, 97,116,105, 99,
+ 61, 61,110,105,108, 32,116,104,101,110, 10,111,117,116,112,
+ 117,116, 40, 39, 32, 39, 44, 99,108, 97,115,115, 44, 39, 42,
+ 39, 44, 39,115,101,108,102, 32, 61, 32, 39, 41, 10,111,117,
+ 116,112,117,116, 40, 39, 40, 39, 44, 99,108, 97,115,115, 44,
+ 39, 42, 41, 32, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 116,111,108,117, 97, 95,116,111,117,115,101,114,116,121,112,
+ 101, 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 48, 41, 59,
+ 39, 41, 10,101,110,100, 10,111,117,116,112,117,116, 40, 39,
+ 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82,
+ 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,111,117,116,112,
+ 117,116, 40, 39, 32,116,111,108,117, 97, 95, 69,114,114,111,
+ 114, 32,116,111,108,117, 97, 95,101,114,114, 59, 39, 41, 10,
+ 105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116,
+ 97,116,105, 99, 61, 61,110,105,108, 32,116,104,101,110, 10,
+ 111,117,116,112,117,116, 40, 39, 32,105,102, 32, 40, 33,115,
+ 101,108,102, 41, 32,116,111,108,117, 97, 95,101,114,114,111,
+ 114, 40,116,111,108,117, 97, 95, 83, 44, 34,105,110,118, 97,
+ 108,105,100, 32, 92, 39,115,101,108,102, 92, 39, 32,105,110,
+ 32, 97, 99, 99,101,115,115,105,110,103, 32,118, 97,114,105,
+ 97, 98,108,101, 32, 92, 39, 39, 46, 46,115,101,108,102, 46,
+ 110, 97,109,101, 46, 46, 39, 92, 39, 34, 44, 78, 85, 76, 76,
+ 41, 59, 39, 41, 59, 10,101,108,115,101,105,102, 32,115,116,
+ 97,116,105, 99, 32,116,104,101,110, 10, 95, 44, 95, 44,115,
+ 101,108,102, 46,109,111,100, 32, 61, 32,115,116,114,102,105,
+ 110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 94, 37,
+ 115, 42,115,116, 97,116,105, 99, 37,115, 37,115, 42, 40, 46,
+ 42, 41, 39, 41, 10,101,110,100, 10,111,117,116,112,117,116,
+ 40, 39, 32,105,102, 32, 40, 33, 39, 46, 46,115,101,108,102,
+ 58,111,117,116, 99,104,101, 99,107,116,121,112,101, 40, 50,
+ 44,116,114,117,101, 41, 46, 46, 39, 41, 39, 41, 10,111,117,
+ 116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,101,114,
+ 114,111,114, 40,116,111,108,117, 97, 95, 83, 44, 34, 35,118,
+ 105,110,118, 97,108,105,100, 32,116,121,112,101, 32,105,110,
+ 32,118, 97,114,105, 97, 98,108,101, 32, 97,115,115,105,103,
+ 110,109,101,110,116, 46, 34, 44, 38,116,111,108,117, 97, 95,
+ 101,114,114, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40,
+ 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,108,111, 99,
+ 97,108, 32,100,101,102, 32, 61, 32, 48, 10,105,102, 32,115,
+ 101,108,102, 46,100,101,102, 32,126, 61, 32, 39, 39, 32,116,
+ 104,101,110, 32,100,101,102, 32, 61, 32,115,101,108,102, 46,
+ 100,101,102, 32,101,110,100, 10,105,102, 32,115,101,108,102,
+ 46,116,121,112,101, 32, 61, 61, 32, 39, 99,104, 97,114, 39,
+ 32, 97,110,100, 32,115,101,108,102, 46,100,105,109, 32,126,
+ 61, 32, 39, 39, 32,116,104,101,110, 10,111,117,116,112,117,
+ 116, 40, 39, 32,115,116,114,110, 99,112,121, 40, 39, 41, 10,
+ 105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116,
+ 97,116,105, 99, 32,116,104,101,110, 10,111,117,116,112,117,
+ 116, 40, 99,108, 97,115,115, 46, 46, 39, 58, 58, 39, 46, 46,
+ 115,101,108,102, 46,110, 97,109,101, 41, 10,101,108,115,101,
+ 105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,111,
+ 117,116,112,117,116, 40, 39,115,101,108,102, 45, 62, 39, 46,
+ 46,115,101,108,102, 46,110, 97,109,101, 41, 10,101,108,115,
+ 101, 10,111,117,116,112,117,116, 40,115,101,108,102, 46,110,
+ 97,109,101, 41, 10,101,110,100, 10,111,117,116,112,117,116,
+ 40, 39, 44,116,111,108,117, 97, 95,116,111,115,116,114,105,
+ 110,103, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 39, 44,
+ 100,101,102, 44, 39, 41, 44, 39, 44,115,101,108,102, 46,100,
+ 105,109, 44, 39, 45, 49, 41, 59, 39, 41, 10,101,108,115,101,
+ 10,108,111, 99, 97,108, 32,112,116,114, 32, 61, 32, 39, 39,
+ 10,105,102, 32,115,101,108,102, 46,112,116,114,126, 61, 39,
+ 39, 32,116,104,101,110, 32,112,116,114, 32, 61, 32, 39, 42,
+ 39, 32,101,110,100, 10,111,117,116,112,117,116, 40, 39, 32,
+ 39, 41, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100,
+ 32,115,116, 97,116,105, 99, 32,116,104,101,110, 10,111,117,
+ 116,112,117,116, 40, 99,108, 97,115,115, 46, 46, 39, 58, 58,
+ 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 41, 10,101,
+ 108,115,101,105,102, 32, 99,108, 97,115,115, 32,116,104,101,
+ 110, 10,111,117,116,112,117,116, 40, 39,115,101,108,102, 45,
+ 62, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 41, 10,
+ 101,108,115,101, 10,111,117,116,112,117,116, 40,115,101,108,
+ 102, 46,110, 97,109,101, 41, 10,101,110,100, 10,108,111, 99,
+ 97,108, 32,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,
+ 115,101,108,102, 46,116,121,112,101, 41, 10,111,117,116,112,
+ 117,116, 40, 39, 32, 61, 32, 39, 41, 10,105,102, 32,110,111,
+ 116, 32,116, 32, 97,110,100, 32,112,116,114, 61, 61, 39, 39,
+ 32,116,104,101,110, 32,111,117,116,112,117,116, 40, 39, 42,
+ 39, 41, 32,101,110,100, 10,111,117,116,112,117,116, 40, 39,
+ 40, 40, 39, 44,115,101,108,102, 46,109,111,100, 44,115,101,
+ 108,102, 46,116,121,112,101, 41, 10,105,102, 32,110,111,116,
+ 32,116, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
+ 39, 42, 39, 41, 10,101,110,100, 10,111,117,116,112,117,116,
+ 40, 39, 41, 32, 39, 41, 10,105,102, 32,116, 32,116,104,101,
+ 110, 10,105,102, 32,105,115,101,110,117,109, 40,115,101,108,
+ 102, 46,116,121,112,101, 41, 32,116,104,101,110, 10,111,117,
+ 116,112,117,116, 40, 39, 40,105,110,116, 41, 32, 39, 41, 10,
+ 101,110,100, 10,105,102, 32,116, 61, 61, 39,102,117,110, 99,
+ 116,105,111,110, 39, 32,116,104,101,110, 32,116, 61, 39,118,
+ 97,108,117,101, 39, 32,101,110,100, 10,111,117,116,112,117,
+ 116, 40, 39,116,111,108,117, 97, 95,116,111, 39, 46, 46,116,
+ 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 39, 44,
+ 100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,101,108,115,101,
+ 10,111,117,116,112,117,116, 40, 39,116,111,108,117, 97, 95,
+ 116,111,117,115,101,114,116,121,112,101, 40,116,111,108,117,
+ 97, 95, 83, 44, 50, 44, 39, 44,100,101,102, 44, 39, 41, 41,
+ 59, 39, 41, 10,101,110,100, 10,101,110,100, 10,111,117,116,
+ 112,117,116, 40, 39, 32,114,101,116,117,114,110, 32, 48, 59,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39,125, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,101,110,
+ 100, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 58,114,
+ 101,103,105,115,116,101,114, 32, 40, 41, 10,108,111, 99, 97,
+ 108, 32,112, 97,114,101,110,116, 32, 61, 32,115,101,108,102,
+ 58,105,110,109,111,100,117,108,101, 40, 41, 32,111,114, 32,
+ 115,101,108,102, 58,105,110,110, 97,109,101,115,112, 97, 99,
+ 101, 40, 41, 32,111,114, 32,115,101,108,102, 58,105,110, 99,
+ 108, 97,115,115, 40, 41, 10,105,102, 32,110,111,116, 32,112,
+ 97,114,101,110,116, 32,116,104,101,110, 10,105,102, 32, 99,
+ 108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 46, 95,119,
+ 97,114,110,105,110,103, 61, 61,110,105,108, 32,116,104,101,
+ 110, 10,119, 97,114,110,105,110,103, 40, 34, 77, 97,112,112,
+ 105,110,103, 32,118, 97,114,105, 97, 98,108,101, 32,116,111,
+ 32,103,108,111, 98, 97,108, 32,109, 97,121, 32,100,101,103,
+ 114, 97,100,101, 32,112,101,114,102,111,114,109, 97,110, 99,
+ 101, 34, 41, 10, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+ 108,101, 46, 95,119, 97,114,110,105,110,103, 32, 61, 32, 49,
+ 10,101,110,100, 10,101,110,100, 10,105,102, 32,115,101,108,
+ 102, 46, 99,115,101,116,110, 97,109,101, 32,116,104,101,110,
+ 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97,
+ 95,118, 97,114,105, 97, 98,108,101, 40,116,111,108,117, 97,
+ 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,
+ 109,101, 46, 46, 39, 34, 44, 39, 46, 46,115,101,108,102, 46,
+ 99,103,101,116,110, 97,109,101, 46, 46, 39, 44, 39, 46, 46,
+ 115,101,108,102, 46, 99,115,101,116,110, 97,109,101, 46, 46,
+ 39, 41, 59, 39, 41, 10,101,108,115,101, 10,111,117,116,112,
+ 117,116, 40, 39, 32,116,111,108,117, 97, 95,118, 97,114,105,
+ 97, 98,108,101, 40,116,111,108,117, 97, 95, 83, 44, 34, 39,
+ 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39,
+ 34, 44, 39, 46, 46,115,101,108,102, 46, 99,103,101,116,110,
+ 97,109,101, 46, 46, 39, 44, 78, 85, 76, 76, 41, 59, 39, 41,
+ 10,101,110,100, 10,101,110,100, 10,102,117,110, 99,116,105,
+ 111,110, 32, 95, 86, 97,114,105, 97, 98,108,101, 32, 40,116,
+ 41, 10,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,
+ 116, 44, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101,
+ 41, 10, 97,112,112,101,110,100, 40,116, 41, 10,114,101,116,
+ 117,114,110, 32,116, 10,101,110,100, 10,102,117,110, 99,116,
+ 105,111,110, 32, 86, 97,114,105, 97, 98,108,101, 32, 40,115,
+ 41, 10,114,101,116,117,114,110, 32, 95, 86, 97,114,105, 97,
+ 98,108,101, 32, 40, 68,101, 99,108, 97,114, 97,116,105,111,
+ 110, 40,115, 44, 39,118, 97,114, 39, 41, 41, 10,101,110,100,
+ 32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 65,114,114, 97,121, 32, 61, 32,123,
+ 10,125, 10, 99,108, 97,115,115, 65,114,114, 97,121, 46, 95,
+ 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 65,
+ 114,114, 97,121, 10,115,101,116,109,101,116, 97,116, 97, 98,
+ 108,101, 40, 99,108, 97,115,115, 65,114,114, 97,121, 44, 99,
+ 108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,110,
+ 41, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+ 115, 65,114,114, 97,121, 58,112,114,105,110,116, 32, 40,105,
+ 100,101,110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34, 65,114,114, 97,
+ 121,123, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,109,111,100, 32, 61, 32, 39, 34, 46, 46,
+ 115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34, 41,
+ 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+ 32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+ 102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10,112,
+ 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,112,
+ 116,114, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,112,
+ 116,114, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116,
+ 40,105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101, 32,
+ 61, 32, 39, 34, 46, 46,115,101,108,102, 46,110, 97,109,101,
+ 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,
+ 100,101,110,116, 46, 46, 34, 32,100,101,102, 32, 61, 32, 39,
+ 34, 46, 46,115,101,108,102, 46,100,101,102, 46, 46, 34, 39,
+ 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
+ 46, 46, 34, 32,100,105,109, 32, 61, 32, 39, 34, 46, 46,115,
+ 101,108,102, 46,100,105,109, 46, 46, 34, 39, 44, 34, 41, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 114,101,116, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
+ 114,101,116, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,
+ 116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46, 46, 99,
+ 108,111,115,101, 41, 10,101,110,100, 10,102,117,110, 99,116,
+ 105,111,110, 32, 99,108, 97,115,115, 65,114,114, 97,121, 58,
+ 105,115,118, 97,114,105, 97, 98,108,101, 32, 40, 41, 10,114,
+ 101,116,117,114,110, 32,116,114,117,101, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 65,
+ 114,114, 97,121, 58,103,101,116,118, 97,108,117,101, 32, 40,
+ 99,108, 97,115,115, 44,115,116, 97,116,105, 99, 41, 10,105,
+ 102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116, 97,
+ 116,105, 99, 32,116,104,101,110, 10,114,101,116,117,114,110,
+ 32, 99,108, 97,115,115, 46, 46, 39, 58, 58, 39, 46, 46,115,
+ 101,108,102, 46,110, 97,109,101, 46, 46, 39, 91,116,111,108,
+ 117, 97, 95,105,110,100,101,120, 93, 39, 10,101,108,115,101,
+ 105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,114,
+ 101,116,117,114,110, 32, 39,115,101,108,102, 45, 62, 39, 46,
+ 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 91,116,
+ 111,108,117, 97, 95,105,110,100,101,120, 93, 39, 10,101,108,
+ 115,101, 10,114,101,116,117,114,110, 32,115,101,108,102, 46,
+ 110, 97,109,101, 46, 46, 39, 91,116,111,108,117, 97, 95,105,
+ 110,100,101,120, 93, 39, 10,101,110,100, 10,101,110,100, 10,
+ 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 65,
+ 114,114, 97,121, 58,115,117,112, 99,111,100,101, 32, 40, 41,
+ 10,108,111, 99, 97,108, 32, 99,108, 97,115,115, 32, 61, 32,
+ 115,101,108,102, 58,105,110, 99,108, 97,115,115, 40, 41, 10,
+ 105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,111,
+ 117,116,112,117,116, 40, 34, 47, 42, 32,103,101,116, 32,102,
+ 117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,102, 46,
+ 110, 97,109,101, 44, 34, 32,111,102, 32, 99,108, 97,115,115,
+ 32, 34, 44, 99,108, 97,115,115, 44, 34, 32, 42, 47, 34, 41,
+ 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 34, 47,
+ 42, 32,103,101,116, 32,102,117,110, 99,116,105,111,110, 58,
+ 34, 44,115,101,108,102, 46,110, 97,109,101, 44, 34, 32, 42,
+ 47, 34, 41, 10,101,110,100, 10,115,101,108,102, 46, 99,103,
+ 101,116,110, 97,109,101, 32, 61, 32,115,101,108,102, 58, 99,
+ 102,117,110, 99,110, 97,109,101, 40, 34,116,111,108,117, 97,
+ 95,103,101,116, 34, 41, 10,111,117,116,112,117,116, 40, 34,
+ 115,116, 97,116,105, 99, 32,105,110,116, 34, 44,115,101,108,
+ 102, 46, 99,103,101,116,110, 97,109,101, 44, 34, 40,108,117,
+ 97, 95, 83,116, 97,116,101, 42, 32,116,111,108,117, 97, 95,
+ 83, 41, 34, 41, 10,111,117,116,112,117,116, 40, 34,123, 34,
+ 41, 10,111,117,116,112,117,116, 40, 34, 32,105,110,116, 32,
+ 116,111,108,117, 97, 95,105,110,100,101,120, 59, 34, 41, 10,
+ 108,111, 99, 97,108, 32, 95, 44, 95, 44,115,116, 97,116,105,
+ 99, 32, 61, 32,115,116,114,102,105,110,100, 40,115,101,108,
+ 102, 46,109,111,100, 44, 39, 94, 37,115, 42, 40,115,116, 97,
+ 116,105, 99, 41, 39, 41, 10,105,102, 32, 99,108, 97,115,115,
+ 32, 97,110,100, 32,115,116, 97,116,105, 99, 61, 61,110,105,
+ 108, 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 39,
+ 32, 39, 44,115,101,108,102, 46,112, 97,114,101,110,116, 46,
+ 116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102, 59,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97,
+ 95,112,117,115,104,115,116,114,105,110,103, 40,116,111,108,
+ 117, 97, 95, 83, 44, 34, 46,115,101,108,102, 34, 41, 59, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,
+ 114, 97,119,103,101,116, 40,116,111,108,117, 97, 95, 83, 44,
+ 49, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,
+ 115,101,108,102, 32, 61, 32, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39, 40, 39, 44, 99,108, 97,115,115, 44, 39, 42, 41,
+ 32, 39, 41, 10,111,117,116,112,117,116, 40, 39,108,117, 97,
+ 95,116,111,117,115,101,114,100, 97,116, 97, 40,116,111,108,
+ 117, 97, 95, 83, 44, 45, 49, 41, 59, 39, 41, 10,101,108,115,
+ 101,105,102, 32,115,116, 97,116,105, 99, 32,116,104,101,110,
+ 10, 95, 44, 95, 44,115,101,108,102, 46,109,111,100, 32, 61,
+ 32,115,116,114,102,105,110,100, 40,115,101,108,102, 46,109,
+ 111,100, 44, 39, 94, 37,115, 42,115,116, 97,116,105, 99, 37,
+ 115, 37,115, 42, 40, 46, 42, 41, 39, 41, 10,101,110,100, 10,
+ 111,117,116,112,117,116, 40, 39, 35,105,102,110,100,101,102,
+ 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,
+ 110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,123, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
+ 97, 95, 69,114,114,111,114, 32,116,111,108,117, 97, 95,101,
+ 114,114, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,
+ 105,102, 32, 40, 33,116,111,108,117, 97, 95,105,115,110,117,
+ 109, 98,101,114, 40,116,111,108,117, 97, 95, 83, 44, 50, 44,
+ 48, 44, 38,116,111,108,117, 97, 95,101,114,114, 41, 41, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
+ 97, 95,101,114,114,111,114, 40,116,111,108,117, 97, 95, 83,
+ 44, 34, 35,118,105,110,118, 97,108,105,100, 32,116,121,112,
+ 101, 32,105,110, 32, 97,114,114, 97,121, 32,105,110,100,101,
+ 120,105,110,103, 46, 34, 44, 38,116,111,108,117, 97, 95,101,
+ 114,114, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 32,125, 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,
+ 110,100,105,102, 92,110, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,116,111,108,117, 97, 95,105,110,100,101,120, 32,
+ 61, 32, 40,105,110,116, 41,116,111,108,117, 97, 95,116,111,
+ 110,117,109, 98,101,114, 40,116,111,108,117, 97, 95, 83, 44,
+ 50, 44, 48, 41, 45, 49, 59, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85,
+ 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 32,105,102, 32, 40,116,111,108,
+ 117, 97, 95,105,110,100,101,120, 60, 48, 32,124,124, 32,116,
+ 111,108,117, 97, 95,105,110,100,101,120, 62, 61, 39, 46, 46,
+ 115,101,108,102, 46,100,105,109, 46, 46, 39, 41, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,
+ 101,114,114,111,114, 40,116,111,108,117, 97, 95, 83, 44, 34,
+ 97,114,114, 97,121, 32,105,110,100,101,120,105,110,103, 32,
+ 111,117,116, 32,111,102, 32,114, 97,110,103,101, 46, 34, 44,
+ 78, 85, 76, 76, 41, 59, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,108,111,
+ 99, 97,108, 32,116, 44, 99,116, 32, 61, 32,105,115, 98, 97,
+ 115,105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 10,
+ 105,102, 32,116, 32,116,104,101,110, 10,111,117,116,112,117,
+ 116, 40, 39, 32,116,111,108,117, 97, 95,112,117,115,104, 39,
+ 46, 46,116, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44,
+ 40, 39, 44, 99,116, 44, 39, 41, 39, 46, 46,115,101,108,102,
+ 58,103,101,116,118, 97,108,117,101, 40, 99,108, 97,115,115,
+ 44,115,116, 97,116,105, 99, 41, 46, 46, 39, 41, 59, 39, 41,
+ 10,101,108,115,101, 10,116, 32, 61, 32,115,101,108,102, 46,
+ 116,121,112,101, 10,105,102, 32,115,101,108,102, 46,112,116,
+ 114, 32, 61, 61, 32, 39, 38, 39, 32,111,114, 32,115,101,108,
+ 102, 46,112,116,114, 32, 61, 61, 32, 39, 39, 32,116,104,101,
+ 110, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
+ 97, 95,112,117,115,104,117,115,101,114,116,121,112,101, 40,
+ 116,111,108,117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41,
+ 38, 39, 46, 46,115,101,108,102, 58,103,101,116,118, 97,108,
+ 117,101, 40, 99,108, 97,115,115, 44,115,116, 97,116,105, 99,
+ 41, 46, 46, 39, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39,
+ 41, 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39,
+ 32,116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,
+ 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,
+ 111,105,100, 42, 41, 39, 46, 46,115,101,108,102, 58,103,101,
+ 116,118, 97,108,117,101, 40, 99,108, 97,115,115, 44,115,116,
+ 97,116,105, 99, 41, 46, 46, 39, 44, 34, 39, 44,116, 44, 39,
+ 34, 41, 59, 39, 41, 10,101,110,100, 10,101,110,100, 10,111,
+ 117,116,112,117,116, 40, 39, 32,114,101,116,117,114,110, 32,
+ 49, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39,125, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,
+ 105,102, 32,110,111,116, 32,115,116,114,102,105,110,100, 40,
+ 115,101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,
+ 116, 39, 41, 32,116,104,101,110, 10,105,102, 32, 99,108, 97,
+ 115,115, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
+ 34, 47, 42, 32,115,101,116, 32,102,117,110, 99,116,105,111,
+ 110, 58, 34, 44,115,101,108,102, 46,110, 97,109,101, 44, 34,
+ 32,111,102, 32, 99,108, 97,115,115, 32, 34, 44, 99,108, 97,
+ 115,115, 44, 34, 32, 42, 47, 34, 41, 10,101,108,115,101, 10,
+ 111,117,116,112,117,116, 40, 34, 47, 42, 32,115,101,116, 32,
+ 102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,102,
+ 46,110, 97,109,101, 44, 34, 32, 42, 47, 34, 41, 10,101,110,
+ 100, 10,115,101,108,102, 46, 99,115,101,116,110, 97,109,101,
+ 32, 61, 32,115,101,108,102, 58, 99,102,117,110, 99,110, 97,
+ 109,101, 40, 34,116,111,108,117, 97, 95,115,101,116, 34, 41,
+ 10,111,117,116,112,117,116, 40, 34,115,116, 97,116,105, 99,
+ 32,105,110,116, 34, 44,115,101,108,102, 46, 99,115,101,116,
+ 110, 97,109,101, 44, 34, 40,108,117, 97, 95, 83,116, 97,116,
+ 101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34, 41, 10,111,
+ 117,116,112,117,116, 40, 34,123, 34, 41, 10,111,117,116,112,
+ 117,116, 40, 39, 32,105,110,116, 32,116,111,108,117, 97, 95,
+ 105,110,100,101,120, 59, 39, 41, 10,108,111, 99, 97,108, 32,
+ 95, 44, 95, 44,115,116, 97,116,105, 99, 32, 61, 32,115,116,
+ 114,102,105,110,100, 40,115,101,108,102, 46,109,111,100, 44,
+ 39, 94, 37,115, 42, 40,115,116, 97,116,105, 99, 41, 39, 41,
+ 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,
+ 116, 97,116,105, 99, 61, 61,110,105,108, 32,116,104,101,110,
+ 10,111,117,116,112,117,116, 40, 39, 32, 39, 44, 99,108, 97,
+ 115,115, 44, 39, 42, 39, 44, 39,115,101,108,102, 59, 39, 41,
+ 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,112,
+ 117,115,104,115,116,114,105,110,103, 40,116,111,108,117, 97,
+ 95, 83, 44, 34, 46,115,101,108,102, 34, 41, 59, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,114, 97,
+ 119,103,101,116, 40,116,111,108,117, 97, 95, 83, 44, 49, 41,
+ 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,115,101,
+ 108,102, 32, 61, 32, 39, 41, 10,111,117,116,112,117,116, 40,
+ 39, 40, 39, 44, 99,108, 97,115,115, 44, 39, 42, 41, 32, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39,108,117, 97, 95,116,
+ 111,117,115,101,114,100, 97,116, 97, 40,116,111,108,117, 97,
+ 95, 83, 44, 45, 49, 41, 59, 39, 41, 10,101,108,115,101,105,
+ 102, 32,115,116, 97,116,105, 99, 32,116,104,101,110, 10, 95,
+ 44, 95, 44,115,101,108,102, 46,109,111,100, 32, 61, 32,115,
+ 116,114,102,105,110,100, 40,115,101,108,102, 46,109,111,100,
+ 44, 39, 94, 37,115, 42,115,116, 97,116,105, 99, 37,115, 37,
+ 115, 42, 40, 46, 42, 41, 39, 41, 10,101,110,100, 10,111,117,
+ 116,112,117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84,
+ 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 32,123, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,
+ 69,114,114,111,114, 32,116,111,108,117, 97, 95,101,114,114,
+ 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,105,102,
+ 32, 40, 33,116,111,108,117, 97, 95,105,115,110,117,109, 98,
+ 101,114, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 48, 44,
+ 38,116,111,108,117, 97, 95,101,114,114, 41, 41, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,
+ 101,114,114,111,114, 40,116,111,108,117, 97, 95, 83, 44, 34,
+ 35,118,105,110,118, 97,108,105,100, 32,116,121,112,101, 32,
+ 105,110, 32, 97,114,114, 97,121, 32,105,110,100,101,120,105,
+ 110,103, 46, 34, 44, 38,116,111,108,117, 97, 95,101,114,114,
+ 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,125,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+ 105,102, 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 32,116,111,108,117, 97, 95,105,110,100,101,120, 32, 61, 32,
+ 40,105,110,116, 41,116,111,108,117, 97, 95,116,111,110,117,
+ 109, 98,101,114, 40,116,111,108,117, 97, 95, 83, 44, 50, 44,
+ 48, 41, 45, 49, 59, 39, 41, 10,111,117,116,112,117,116, 40,
+ 39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+ 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,111,117,116,
+ 112,117,116, 40, 39, 32,105,102, 32, 40,116,111,108,117, 97,
+ 95,105,110,100,101,120, 60, 48, 32,124,124, 32,116,111,108,
+ 117, 97, 95,105,110,100,101,120, 62, 61, 39, 46, 46,115,101,
+ 108,102, 46,100,105,109, 46, 46, 39, 41, 39, 41, 10,111,117,
+ 116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,101,114,
+ 114,111,114, 40,116,111,108,117, 97, 95, 83, 44, 34, 97,114,
+ 114, 97,121, 32,105,110,100,101,120,105,110,103, 32,111,117,
+ 116, 32,111,102, 32,114, 97,110,103,101, 46, 34, 44, 78, 85,
+ 76, 76, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 35,101,110,100,105,102, 92,110, 39, 41, 10,108,111, 99, 97,
+ 108, 32,112,116,114, 32, 61, 32, 39, 39, 10,105,102, 32,115,
+ 101,108,102, 46,112,116,114,126, 61, 39, 39, 32,116,104,101,
+ 110, 32,112,116,114, 32, 61, 32, 39, 42, 39, 32,101,110,100,
+ 10,111,117,116,112,117,116, 40, 39, 32, 39, 41, 10,105,102,
+ 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116, 97,116,
+ 105, 99, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
+ 99,108, 97,115,115, 46, 46, 39, 58, 58, 39, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 46, 46, 39, 91,116,111,108,117,
+ 97, 95,105,110,100,101,120, 93, 39, 41, 10,101,108,115,101,
+ 105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,111,
+ 117,116,112,117,116, 40, 39,115,101,108,102, 45, 62, 39, 46,
+ 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 91,116,
+ 111,108,117, 97, 95,105,110,100,101,120, 93, 39, 41, 10,101,
+ 108,115,101, 10,111,117,116,112,117,116, 40,115,101,108,102,
+ 46,110, 97,109,101, 46, 46, 39, 91,116,111,108,117, 97, 95,
+ 105,110,100,101,120, 93, 39, 41, 10,101,110,100, 10,108,111,
+ 99, 97,108, 32,116, 32, 61, 32,105,115, 98, 97,115,105, 99,
+ 40,115,101,108,102, 46,116,121,112,101, 41, 10,111,117,116,
+ 112,117,116, 40, 39, 32, 61, 32, 39, 41, 10,105,102, 32,110,
+ 111,116, 32,116, 32, 97,110,100, 32,112,116,114, 61, 61, 39,
+ 39, 32,116,104,101,110, 32,111,117,116,112,117,116, 40, 39,
+ 42, 39, 41, 32,101,110,100, 10,111,117,116,112,117,116, 40,
+ 39, 40, 40, 39, 44,115,101,108,102, 46,109,111,100, 44,115,
+ 101,108,102, 46,116,121,112,101, 41, 10,105,102, 32,110,111,
+ 116, 32,116, 32,116,104,101,110, 10,111,117,116,112,117,116,
+ 40, 39, 42, 39, 41, 10,101,110,100, 10,111,117,116,112,117,
+ 116, 40, 39, 41, 32, 39, 41, 10,108,111, 99, 97,108, 32,100,
+ 101,102, 32, 61, 32, 48, 10,105,102, 32,115,101,108,102, 46,
+ 100,101,102, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 32,
+ 100,101,102, 32, 61, 32,115,101,108,102, 46,100,101,102, 32,
+ 101,110,100, 10,105,102, 32,116, 32,116,104,101,110, 10,105,
+ 102, 32,105,115,101,110,117,109, 40,115,101,108,102, 46,116,
+ 121,112,101, 41, 32,116,104,101,110, 10,111,117,116,112,117,
+ 116, 40, 39, 40,105,110,116, 41, 39, 41, 10,101,110,100, 10,
+ 105,102, 32,116, 61, 61, 39,102,117,110, 99,116,105,111,110,
+ 39, 32,116,104,101,110, 32,116, 61, 39,118, 97,108,117,101,
+ 39, 32,101,110,100, 10,111,117,116,112,117,116, 40, 39,116,
+ 111,108,117, 97, 95,116,111, 39, 46, 46,116, 44, 39, 40,116,
+ 111,108,117, 97, 95, 83, 44, 51, 44, 39, 44,100,101,102, 44,
+ 39, 41, 41, 59, 39, 41, 10,101,108,115,101, 10,111,117,116,
+ 112,117,116, 40, 39,116,111,108,117, 97, 95,116,111,117,115,
+ 101,114,116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44,
+ 51, 44, 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,
+ 101,110,100, 10,111,117,116,112,117,116, 40, 39, 32,114,101,
+ 116,117,114,110, 32, 48, 59, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39,125, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 92,110, 39, 41, 10,101,110,100, 10,101,110,100, 10,102,117,
+ 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 65,114,114,
+ 97,121, 58,114,101,103,105,115,116,101,114, 32, 40, 41, 10,
+ 105,102, 32,115,101,108,102, 46, 99,115,101,116,110, 97,109,
+ 101, 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 39,
+ 32,116,111,108,117, 97, 95, 97,114,114, 97,121, 40,116,111,
+ 108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,
+ 108,110, 97,109,101, 46, 46, 39, 34, 44, 39, 46, 46,115,101,
+ 108,102, 46, 99,103,101,116,110, 97,109,101, 46, 46, 39, 44,
+ 39, 46, 46,115,101,108,102, 46, 99,115,101,116,110, 97,109,
+ 101, 46, 46, 39, 41, 59, 39, 41, 10,101,108,115,101, 10,111,
+ 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95, 97,
+ 114,114, 97,121, 40,116,111,108,117, 97, 95, 83, 44, 34, 39,
+ 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39,
+ 34, 44, 39, 46, 46,115,101,108,102, 46, 99,103,101,116,110,
+ 97,109,101, 46, 46, 39, 44, 78, 85, 76, 76, 41, 59, 39, 41,
+ 10,101,110,100, 10,101,110,100, 10,102,117,110, 99,116,105,
+ 111,110, 32, 95, 65,114,114, 97,121, 32, 40,116, 41, 10,115,
+ 101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,
+ 108, 97,115,115, 65,114,114, 97,121, 41, 10, 97,112,112,101,
+ 110,100, 40,116, 41, 10,114,101,116,117,114,110, 32,116, 10,
+ 101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 65,114,
+ 114, 97,121, 32, 40,115, 41, 10,114,101,116,117,114,110, 32,
+ 95, 65,114,114, 97,121, 32, 40, 68,101, 99,108, 97,114, 97,
+ 116,105,111,110, 40,115, 44, 39,118, 97,114, 39, 41, 41, 10,
+ 101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 32,
+ 61, 32,123, 10,109,111,100, 32, 61, 32, 39, 39, 44, 10,116,
+ 121,112,101, 32, 61, 32, 39, 39, 44, 10,112,116,114, 32, 61,
+ 32, 39, 39, 44, 10,110, 97,109,101, 32, 61, 32, 39, 39, 44,
+ 10, 97,114,103,115, 32, 61, 32,123,110, 61, 48,125, 44, 10,
+ 99,111,110,115,116, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,
+ 108, 97,115,115, 70,117,110, 99,116,105,111,110, 46, 95, 95,
+ 105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 70,117,
+ 110, 99,116,105,111,110, 10,115,101,116,109,101,116, 97,116,
+ 97, 98,108,101, 40, 99,108, 97,115,115, 70,117,110, 99,116,
+ 105,111,110, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,
+ 101, 41, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+ 115,115, 70,117,110, 99,116,105,111,110, 58,100,101, 99,108,
+ 116,121,112,101, 32, 40, 41, 10,115,101,108,102, 46,116,121,
+ 112,101, 32, 61, 32,116,121,112,101,118, 97,114, 40,115,101,
+ 108,102, 46,116,121,112,101, 41, 10,105,102, 32,115,116,114,
+ 102,105,110,100, 40,115,101,108,102, 46,109,111,100, 44, 39,
+ 99,111,110,115,116, 39, 41, 32,116,104,101,110, 10,115,101,
+ 108,102, 46,116,121,112,101, 32, 61, 32, 39, 99,111,110,115,
+ 116, 32, 39, 46, 46,115,101,108,102, 46,116,121,112,101, 10,
+ 115,101,108,102, 46,109,111,100, 32, 61, 32,103,115,117, 98,
+ 40,115,101,108,102, 46,109,111,100, 44, 39, 99,111,110,115,
+ 116, 37,115, 42, 39, 44, 39, 39, 41, 10,101,110,100, 10,108,
+ 111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,
+ 115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111,
+ 10,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,100,
+ 101, 99,108,116,121,112,101, 40, 41, 10,105, 32, 61, 32,105,
+ 43, 49, 10,101,110,100, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32, 99,108, 97,115,115, 70,117,110, 99,116,
+ 105,111,110, 58,115,117,112, 99,111,100,101, 32, 40, 41, 10,
+ 108,111, 99, 97,108, 32,111,118,101,114,108,111, 97,100, 32,
+ 61, 32,115,116,114,115,117, 98, 40,115,101,108,102, 46, 99,
+ 110, 97,109,101, 44, 45, 50, 44, 45, 49, 41, 32, 45, 32, 49,
+ 10,108,111, 99, 97,108, 32,110,114,101,116, 32, 61, 32, 48,
+ 10,108,111, 99, 97,108, 32, 99,108, 97,115,115, 32, 61, 32,
+ 115,101,108,102, 58,105,110, 99,108, 97,115,115, 40, 41, 10,
+ 108,111, 99, 97,108, 32, 95, 44, 95, 44,115,116, 97,116,105,
+ 99, 32, 61, 32,115,116,114,102,105,110,100, 40,115,101,108,
+ 102, 46,109,111,100, 44, 39, 94, 37,115, 42, 40,115,116, 97,
+ 116,105, 99, 41, 39, 41, 10,105,102, 32, 99,108, 97,115,115,
+ 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 34, 47,
+ 42, 32,109,101,116,104,111,100, 58, 34, 44,115,101,108,102,
+ 46,110, 97,109,101, 44, 34, 32,111,102, 32, 99,108, 97,115,
+ 115, 32, 34, 44, 99,108, 97,115,115, 44, 34, 32, 42, 47, 34,
+ 41, 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 34,
+ 47, 42, 32,102,117,110, 99,116,105,111,110, 58, 34, 44,115,
+ 101,108,102, 46,110, 97,109,101, 44, 34, 32, 42, 47, 34, 41,
+ 10,101,110,100, 10,111,117,116,112,117,116, 40, 34,115,116,
+ 97,116,105, 99, 32,105,110,116, 34, 44,115,101,108,102, 46,
+ 99,110, 97,109,101, 44, 34, 40,108,117, 97, 95, 83,116, 97,
+ 116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34, 41, 10,
+ 111,117,116,112,117,116, 40, 34,123, 34, 41, 10,105,102, 32,
+ 111,118,101,114,108,111, 97,100, 32, 60, 32, 48, 32,116,104,
+ 101,110, 10,111,117,116,112,117,116, 40, 39, 35,105,102,110,
+ 100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65,
+ 83, 69, 92,110, 39, 41, 10,101,110,100, 10,111,117,116,112,
+ 117,116, 40, 39, 32,116,111,108,117, 97, 95, 69,114,114,111,
+ 114, 32,116,111,108,117, 97, 95,101,114,114, 59, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 32,105,102, 32, 40, 92,110,
+ 39, 41, 10,108,111, 99, 97,108, 32,110, 97,114,103, 10,105,
+ 102, 32, 99,108, 97,115,115, 32,116,104,101,110, 32,110, 97,
+ 114,103, 61, 50, 32,101,108,115,101, 32,110, 97,114,103, 61,
+ 49, 32,101,110,100, 10,105,102, 32, 99,108, 97,115,115, 32,
+ 116,104,101,110, 10,108,111, 99, 97,108, 32,102,117,110, 99,
+ 32, 61, 32, 39,116,111,108,117, 97, 95,105,115,117,115,101,
+ 114,116,121,112,101, 39, 10,108,111, 99, 97,108, 32,116,121,
+ 112,101, 32, 61, 32,115,101,108,102, 46,112, 97,114,101,110,
+ 116, 46,116,121,112,101, 10,105,102, 32,115,101,108,102, 46,
+ 99,111,110,115,116, 32,126, 61, 32, 39, 39, 32,116,104,101,
+ 110, 10,116,121,112,101, 32, 61, 32,115,101,108,102, 46, 99,
+ 111,110,115,116, 32, 46, 46, 32, 34, 32, 34, 32, 46, 46, 32,
+ 116,121,112,101, 10,101,110,100, 10,105,102, 32,115,101,108,
+ 102, 46,110, 97,109,101, 61, 61, 39,110,101,119, 39, 32,111,
+ 114, 32,115,116, 97,116,105, 99,126, 61,110,105,108, 32,116,
+ 104,101,110, 10,102,117,110, 99, 32, 61, 32, 39,116,111,108,
+ 117, 97, 95,105,115,117,115,101,114,116, 97, 98,108,101, 39,
+ 10,116,121,112,101, 32, 61, 32,115,101,108,102, 46,112, 97,
+ 114,101,110,116, 46,116,121,112,101, 10,101,110,100, 10,111,
+ 117,116,112,117,116, 40, 39, 32, 33, 39, 46, 46,102,117,110,
+ 99, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 49, 44,
+ 34, 39, 46, 46,116,121,112,101, 46, 46, 39, 34, 44, 48, 44,
+ 38,116,111,108,117, 97, 95,101,114,114, 41, 32,124,124, 32,
+ 92,110, 39, 41, 10,101,110,100, 10,108,111, 99, 97,108, 32,
+ 118, 97,114, 97,114,103, 32, 61, 32,102, 97,108,115,101, 10,
+ 105,102, 32,115,101,108,102, 46, 97,114,103,115, 91, 49, 93,
+ 46,116,121,112,101, 32,126, 61, 32, 39,118,111,105,100, 39,
+ 32,116,104,101,110, 10,108,111, 99, 97,108, 32,105, 61, 49,
+ 10,119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,
+ 115, 91,105, 93, 32, 97,110,100, 32,115,101,108,102, 46, 97,
+ 114,103,115, 91,105, 93, 46,116,121,112,101, 32,126, 61, 32,
+ 34, 46, 46, 46, 34, 32,100,111, 10,108,111, 99, 97,108, 32,
+ 98,116,121,112,101, 32, 61, 32,105,115, 98, 97,115,105, 99,
+ 40,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 46,116,
+ 121,112,101, 41, 10,105,102, 32, 98,116,121,112,101, 32,126,
+ 61, 32, 39,115,116, 97,116,101, 39, 32,116,104,101,110, 10,
+ 111,117,116,112,117,116, 40, 39, 32, 33, 39, 46, 46,115,101,
+ 108,102, 46, 97,114,103,115, 91,105, 93, 58,111,117,116, 99,
+ 104,101, 99,107,116,121,112,101, 40,110, 97,114,103, 44,102,
+ 97,108,115,101, 41, 46, 46, 39, 32,124,124, 32, 92,110, 39,
+ 41, 10,101,110,100, 10,105,102, 32, 98,116,121,112,101, 32,
+ 126, 61, 32, 39,115,116, 97,116,101, 39, 32,116,104,101,110,
+ 10,110, 97,114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10,
+ 101,110,100, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100,
+ 10,105,102, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+ 93, 32,116,104,101,110, 10,118, 97,114, 97,114,103, 32, 61,
+ 32,116,114,117,101, 10,101,110,100, 10,101,110,100, 10,105,
+ 102, 32,110,111,116, 32,118, 97,114, 97,114,103, 32,116,104,
+ 101,110, 10,111,117,116,112,117,116, 40, 39, 32, 33,116,111,
+ 108,117, 97, 95,105,115,110,111,111, 98,106, 40,116,111,108,
+ 117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46, 39,
+ 44, 38,116,111,108,117, 97, 95,101,114,114, 41, 92,110, 39,
+ 41, 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39,
+ 32, 48, 92,110, 39, 41, 10,101,110,100, 10,111,117,116,112,
+ 117,116, 40, 39, 32, 41, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,103,111,116,111, 32,116,111,108,117, 97, 95,108,
+ 101,114,114,111,114, 59, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,101,108,115,101, 92,110, 39, 41, 10,105,102, 32,
+ 111,118,101,114,108,111, 97,100, 32, 60, 32, 48, 32,116,104,
+ 101,110, 10,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+ 105,102, 92,110, 39, 41, 10,101,110,100, 10,111,117,116,112,
+ 117,116, 40, 39, 32,123, 39, 41, 10,108,111, 99, 97,108, 32,
+ 110, 97,114,103, 10,105,102, 32, 99,108, 97,115,115, 32,116,
+ 104,101,110, 32,110, 97,114,103, 61, 50, 32,101,108,115,101,
+ 32,110, 97,114,103, 61, 49, 32,101,110,100, 10,105,102, 32,
+ 99,108, 97,115,115, 32, 97,110,100, 32,115,101,108,102, 46,
+ 110, 97,109,101,126, 61, 39,110,101,119, 39, 32, 97,110,100,
+ 32,115,116, 97,116,105, 99, 61, 61,110,105,108, 32,116,104,
+ 101,110, 10,111,117,116,112,117,116, 40, 39, 32, 39, 44,115,
+ 101,108,102, 46, 99,111,110,115,116, 44,115,101,108,102, 46,
+ 112, 97,114,101,110,116, 46,116,121,112,101, 44, 39, 42, 39,
+ 44, 39,115,101,108,102, 32, 61, 32, 39, 41, 10,111,117,116,
+ 112,117,116, 40, 39, 40, 39, 44,115,101,108,102, 46, 99,111,
+ 110,115,116, 44,115,101,108,102, 46,112, 97,114,101,110,116,
+ 46,116,121,112,101, 44, 39, 42, 41, 32, 39, 41, 10,111,117,
+ 116,112,117,116, 40, 39,116,111,108,117, 97, 95,116,111,117,
+ 115,101,114,116,121,112,101, 40,116,111,108,117, 97, 95, 83,
+ 44, 49, 44, 48, 41, 59, 39, 41, 10,101,108,115,101,105,102,
+ 32,115,116, 97,116,105, 99, 32,116,104,101,110, 10, 95, 44,
+ 95, 44,115,101,108,102, 46,109,111,100, 32, 61, 32,115,116,
+ 114,102,105,110,100, 40,115,101,108,102, 46,109,111,100, 44,
+ 39, 94, 37,115, 42,115,116, 97,116,105, 99, 37,115, 37,115,
+ 42, 40, 46, 42, 41, 39, 41, 10,101,110,100, 10,105,102, 32,
+ 115,101,108,102, 46, 97,114,103,115, 91, 49, 93, 46,116,121,
+ 112,101, 32,126, 61, 32, 39,118,111,105,100, 39, 32,116,104,
+ 101,110, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,
+ 105,108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+ 93, 32, 97,110,100, 32,115,101,108,102, 46, 97,114,103,115,
+ 91,105, 93, 46,116,121,112,101, 32,126, 61, 32, 34, 46, 46,
+ 46, 34, 32,100,111, 10,115,101,108,102, 46, 97,114,103,115,
+ 91,105, 93, 58,100,101, 99,108, 97,114,101, 40,110, 97,114,
+ 103, 41, 10,105,102, 32,105,115, 98, 97,115,105, 99, 40,115,
+ 101,108,102, 46, 97,114,103,115, 91,105, 93, 46,116,121,112,
+ 101, 41, 32,126, 61, 32, 34,115,116, 97,116,101, 34, 32,116,
+ 104,101,110, 10,110, 97,114,103, 32, 61, 32,110, 97,114,103,
+ 43, 49, 10,101,110,100, 10,105, 32, 61, 32,105, 43, 49, 10,
+ 101,110,100, 10,101,110,100, 10,105,102, 32, 99,108, 97,115,
+ 115, 32, 97,110,100, 32,115,101,108,102, 46,110, 97,109,101,
+ 126, 61, 39,110,101,119, 39, 32, 97,110,100, 32,115,116, 97,
+ 116,105, 99, 61, 61,110,105,108, 32,116,104,101,110, 10,111,
+ 117,116,112,117,116, 40, 39, 35,105,102,110,100,101,102, 32,
+ 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,105,102, 32,
+ 40, 33,115,101,108,102, 41, 32,116,111,108,117, 97, 95,101,
+ 114,114,111,114, 40,116,111,108,117, 97, 95, 83, 44, 34,105,
+ 110,118, 97,108,105,100, 32, 92, 39,115,101,108,102, 92, 39,
+ 32,105,110, 32,102,117,110, 99,116,105,111,110, 32, 92, 39,
+ 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39,
+ 92, 39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41, 59, 10,111,
+ 117,116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110,
+ 39, 41, 10,101,110,100, 10,105,102, 32, 99,108, 97,115,115,
+ 32,116,104,101,110, 32,110, 97,114,103, 61, 50, 32,101,108,
+ 115,101, 32,110, 97,114,103, 61, 49, 32,101,110,100, 10,105,
+ 102, 32,115,101,108,102, 46, 97,114,103,115, 91, 49, 93, 46,
+ 116,121,112,101, 32,126, 61, 32, 39,118,111,105,100, 39, 32,
+ 116,104,101,110, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,
+ 119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
+ 91,105, 93, 32, 97,110,100, 32,115,101,108,102, 46, 97,114,
+ 103,115, 91,105, 93, 46,116,121,112,101, 32,126, 61, 32, 34,
+ 46, 46, 46, 34, 32,100,111, 10,105,102, 32,105,115, 98, 97,
+ 115,105, 99, 40,115,101,108,102, 46, 97,114,103,115, 91,105,
+ 93, 46,116,121,112,101, 41, 32,126, 61, 32, 34,115,116, 97,
+ 116,101, 34, 32,116,104,101,110, 10,115,101,108,102, 46, 97,
+ 114,103,115, 91,105, 93, 58,103,101,116, 97,114,114, 97,121,
+ 40,110, 97,114,103, 41, 10,110, 97,114,103, 32, 61, 32,110,
+ 97,114,103, 43, 49, 10,101,110,100, 10,105, 32, 61, 32,105,
+ 43, 49, 10,101,110,100, 10,101,110,100, 10,105,102, 32, 99,
+ 108, 97,115,115, 32, 97,110,100, 32,115,101,108,102, 46,110,
+ 97,109,101, 61, 61, 39,100,101,108,101,116,101, 39, 32,116,
+ 104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,116,111,
+ 108,117, 97, 95,114,101,108,101, 97,115,101, 40,116,111,108,
+ 117, 97, 95, 83, 44,115,101,108,102, 41, 59, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 32,100,101,108,101,116,101, 32,
+ 115,101,108,102, 59, 39, 41, 10,101,108,115,101,105,102, 32,
+ 99,108, 97,115,115, 32, 97,110,100, 32,115,101,108,102, 46,
+ 110, 97,109,101, 32, 61, 61, 32, 39,111,112,101,114, 97,116,
+ 111,114, 38, 91, 93, 39, 32,116,104,101,110, 10,111,117,116,
+ 112,117,116, 40, 39, 32,115,101,108,102, 45, 62,111,112,101,
+ 114, 97,116,111,114, 91, 93, 40, 39, 44,115,101,108,102, 46,
+ 97,114,103,115, 91, 49, 93, 46,110, 97,109,101, 44, 39, 45,
+ 49, 41, 32, 61, 32, 39, 44,115,101,108,102, 46, 97,114,103,
+ 115, 91, 50, 93, 46,110, 97,109,101, 44, 39, 59, 39, 41, 10,
+ 101,108,115,101, 10,111,117,116,112,117,116, 40, 39, 32,123,
+ 39, 41, 10,105,102, 32,115,101,108,102, 46,116,121,112,101,
+ 32,126, 61, 32, 39, 39, 32, 97,110,100, 32,115,101,108,102,
+ 46,116,121,112,101, 32,126, 61, 32, 39,118,111,105,100, 39,
+ 32,116,104,101,110, 10,108,111, 99, 97,108, 32, 99,116,121,
+ 112,101, 32, 61, 32,115,101,108,102, 46,116,121,112,101, 10,
+ 105,102, 32, 99,116,121,112,101, 32, 61, 61, 32, 39,118, 97,
+ 108,117,101, 39, 32,111,114, 32, 99,116,121,112,101, 32, 61,
+ 61, 32, 39,102,117,110, 99,116,105,111,110, 39, 32,116,104,
+ 101,110, 10, 99,116,121,112,101, 32, 61, 32, 39,105,110,116,
+ 39, 10,101,110,100, 10,111,117,116,112,117,116, 40, 39, 32,
+ 39, 44,115,101,108,102, 46,109,111,100, 44, 99,116,121,112,
+ 101, 44,115,101,108,102, 46,112,116,114, 44, 39,116,111,108,
+ 117, 97, 95,114,101,116, 32, 61, 32, 39, 41, 10,105,102, 32,
+ 105,115, 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,
+ 112,101, 41, 32,111,114, 32,115,101,108,102, 46,112,116,114,
+ 32,126, 61, 32, 39, 39, 32,116,104,101,110, 10,111,117,116,
+ 112,117,116, 40, 39, 40, 39, 44,115,101,108,102, 46,109,111,
+ 100, 44, 99,116,121,112,101, 44,115,101,108,102, 46,112,116,
+ 114, 44, 39, 41, 32, 39, 41, 10,101,110,100, 10,101,108,115,
+ 101, 10,111,117,116,112,117,116, 40, 39, 32, 39, 41, 10,101,
+ 110,100, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100,
+ 32,115,101,108,102, 46,110, 97,109,101, 61, 61, 39,110,101,
+ 119, 39, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
+ 39,110,101,119, 39, 44,115,101,108,102, 46,116,121,112,101,
+ 44, 39, 40, 39, 41, 10,101,108,115,101,105,102, 32, 99,108,
+ 97,115,115, 32, 97,110,100, 32,115,116, 97,116,105, 99, 32,
+ 116,104,101,110, 10,111,117,116,112,117,116, 40, 99,108, 97,
+ 115,115, 46, 46, 39, 58, 58, 39, 46, 46,115,101,108,102, 46,
+ 110, 97,109,101, 44, 39, 40, 39, 41, 10,101,108,115,101,105,
+ 102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,111,117,
+ 116,112,117,116, 40, 39,115,101,108,102, 45, 62, 39, 46, 46,
+ 115,101,108,102, 46,110, 97,109,101, 44, 39, 40, 39, 41, 10,
+ 101,108,115,101, 10,111,117,116,112,117,116, 40,115,101,108,
+ 102, 46,110, 97,109,101, 44, 39, 40, 39, 41, 10,101,110,100,
+ 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
+ 101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
+ 97,110,100, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+ 93, 46,116,121,112,101, 32,126, 61, 32, 34, 46, 46, 46, 34,
+ 32,100,111, 10,115,101,108,102, 46, 97,114,103,115, 91,105,
+ 93, 58,112, 97,115,115,112, 97,114, 40, 41, 10,105, 32, 61,
+ 32,105, 43, 49, 10,105,102, 32,115,101,108,102, 46, 97,114,
+ 103,115, 91,105, 93, 32, 97,110,100, 32,115,101,108,102, 46,
+ 97,114,103,115, 91,105, 93, 46,116,121,112,101, 32,126, 61,
+ 32, 34, 46, 46, 46, 34, 32,116,104,101,110, 10,111,117,116,
+ 112,117,116, 40, 39, 44, 39, 41, 10,101,110,100, 10,101,110,
+ 100, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,
+ 115,101,108,102, 46,110, 97,109,101, 32, 61, 61, 32, 39,111,
+ 112,101,114, 97,116,111,114, 91, 93, 39, 32,116,104,101,110,
+ 10,111,117,116,112,117,116, 40, 39, 45, 49, 41, 59, 39, 41,
+ 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39, 41,
+ 59, 39, 41, 10,101,110,100, 10,105,102, 32,115,101,108,102,
+ 46,116,121,112,101, 32,126, 61, 32, 39, 39, 32, 97,110,100,
+ 32,115,101,108,102, 46,116,121,112,101, 32,126, 61, 32, 39,
+ 118,111,105,100, 39, 32,116,104,101,110, 10,110,114,101,116,
+ 32, 61, 32,110,114,101,116, 32, 43, 32, 49, 10,108,111, 99,
+ 97,108, 32,116, 44, 99,116, 32, 61, 32,105,115, 98, 97,115,
+ 105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 10,105,
+ 102, 32,116, 32,116,104,101,110, 10,105,102, 32,116, 61, 61,
+ 39,102,117,110, 99,116,105,111,110, 39, 32,116,104,101,110,
+ 32,116, 61, 39,118, 97,108,117,101, 39, 32,101,110,100, 10,
+ 105,102, 32,115,101,108,102, 46,116,121,112,101, 32, 61, 61,
+ 32, 39,116,111,108,117, 97, 95,105,110,100,101,120, 39, 32,
+ 116,104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,105,
+ 102, 32, 40,116,111,108,117, 97, 95,114,101,116, 32, 60, 32,
+ 48, 41, 32,108,117, 97, 95,112,117,115,104,110,105,108, 40,
+ 116,111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,111,117,116,
+ 112,117,116, 40, 39, 32,101,108,115,101, 32,116,111,108,117,
+ 97, 95,112,117,115,104, 39, 46, 46,116, 46, 46, 39, 40,116,
+ 111,108,117, 97, 95, 83, 44, 40, 39, 44, 99,116, 44, 39, 41,
+ 116,111,108,117, 97, 95,114,101,116, 43, 49, 41, 59, 39, 41,
+ 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39, 32,
+ 116,111,108,117, 97, 95,112,117,115,104, 39, 46, 46,116, 46,
+ 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 40, 39, 44, 99,
+ 116, 44, 39, 41,116,111,108,117, 97, 95,114,101,116, 41, 59,
+ 39, 41, 10,101,110,100, 10,101,108,115,101, 10,116, 32, 61,
+ 32,115,101,108,102, 46,116,121,112,101, 10,105,102, 32,115,
+ 101,108,102, 46,112,116,114, 32, 61, 61, 32, 39, 39, 32,116,
+ 104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,123, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 35,105,102,100,101,
+ 102, 32, 95, 95, 99,112,108,117,115,112,108,117,115, 92,110,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,118,111,105,
+ 100, 42, 32,116,111,108,117, 97, 95,111, 98,106, 32, 61, 32,
+ 110,101,119, 39, 44,116, 44, 39, 40,116,111,108,117, 97, 95,
+ 114,101,116, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40,
+ 39, 32,116,111,108,117, 97, 95,112,117,115,104,117,115,101,
+ 114,116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44,116,
+ 111,108,117, 97, 95, 99,108,111,110,101, 40,116,111,108,117,
+ 97, 95, 83, 44,116,111,108,117, 97, 95,111, 98,106, 44, 39,
+ 46, 46, 32, 40, 95, 99,111,108,108,101, 99,116, 91,116, 93,
+ 32,111,114, 32, 39, 78, 85, 76, 76, 39, 41, 32, 46, 46, 39,
+ 41, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 35,101,108,115,101, 92,110, 39,
+ 41, 10,111,117,116,112,117,116, 40, 39, 32,118,111,105,100,
+ 42, 32,116,111,108,117, 97, 95,111, 98,106, 32, 61, 32,116,
+ 111,108,117, 97, 95, 99,111,112,121, 40,116,111,108,117, 97,
+ 95, 83, 44, 40,118,111,105,100, 42, 41, 38,116,111,108,117,
+ 97, 95,114,101,116, 44,115,105,122,101,111,102, 40, 39, 44,
+ 116, 44, 39, 41, 41, 59, 39, 41, 10,111,117,116,112,117,116,
+ 40, 39, 32,116,111,108,117, 97, 95,112,117,115,104,117,115,
+ 101,114,116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44,
+ 116,111,108,117, 97, 95, 99,108,111,110,101, 40,116,111,108,
+ 117, 97, 95, 83, 44,116,111,108,117, 97, 95,111, 98,106, 44,
+ 78, 85, 76, 76, 41, 44, 34, 39, 44,116, 44, 39, 34, 41, 59,
+ 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+ 105,102, 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39,
+ 32,125, 39, 41, 10,101,108,115,101,105,102, 32,115,101,108,
+ 102, 46,112,116,114, 32, 61, 61, 32, 39, 38, 39, 32,116,104,
+ 101,110, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,
+ 117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,101,
+ 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,100, 42,
+ 41, 38,116,111,108,117, 97, 95,114,101,116, 44, 34, 39, 44,
+ 116, 44, 39, 34, 41, 59, 39, 41, 10,101,108,115,101, 10,111,
+ 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,
+ 117,115,104,117,115,101,114,116,121,112,101, 40,116,111,108,
+ 117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41,116,111,108,
+ 117, 97, 95,114,101,116, 44, 34, 39, 44,116, 44, 39, 34, 41,
+ 59, 39, 41, 10,105,102, 32,115,101,108,102, 46,109,111,100,
+ 32, 61, 61, 32, 39,116,111,108,117, 97, 95,111,119,110, 39,
+ 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,
+ 108,117, 97, 95,112,117,115,104, 99,102,117,110, 99,116,105,
+ 111,110, 40,116,111,108,117, 97, 95, 83, 44, 32,116,111,108,
+ 117, 97, 95, 98,110,100, 95,116, 97,107,101,111,119,110,101,
+ 114,115,104,105,112, 41, 59, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39, 32,108,117, 97, 95,112,117,115,104,118, 97,108,
+ 117,101, 40,116,111,108,117, 97, 95, 83, 44, 32, 45, 50, 41,
+ 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,108,117,
+ 97, 95, 99, 97,108,108, 40,116,111,108,117, 97, 95, 83, 44,
+ 32, 49, 44, 32, 48, 41, 59, 39, 41, 10,101,110,100, 10,101,
+ 110,100, 10,101,110,100, 10,101,110,100, 10,108,111, 99, 97,
+ 108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,
+ 102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,110,114,
+ 101,116, 32, 61, 32,110,114,101,116, 32, 43, 32,115,101,108,
+ 102, 46, 97,114,103,115, 91,105, 93, 58,114,101,116,118, 97,
+ 108,117,101, 40, 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,
+ 110,100, 10,111,117,116,112,117,116, 40, 39, 32,125, 39, 41,
+ 10,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 32,
+ 110, 97,114,103, 61, 50, 32,101,108,115,101, 32,110, 97,114,
+ 103, 61, 49, 32,101,110,100, 10,105,102, 32,115,101,108,102,
+ 46, 97,114,103,115, 91, 49, 93, 46,116,121,112,101, 32,126,
+ 61, 32, 39,118,111,105,100, 39, 32,116,104,101,110, 10,108,
+ 111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,
+ 115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111,
+ 10,105,102, 32,105,115, 98, 97,115,105, 99, 40,115,101,108,
+ 102, 46, 97,114,103,115, 91,105, 93, 46,116,121,112,101, 41,
+ 32,126, 61, 32, 34,115,116, 97,116,101, 34, 32,116,104,101,
+ 110, 10,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,
+ 115,101,116, 97,114,114, 97,121, 40,110, 97,114,103, 41, 10,
+ 110, 97,114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10,101,
+ 110,100, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,
+ 101,110,100, 10,105,102, 32,115,101,108,102, 46, 97,114,103,
+ 115, 91, 49, 93, 46,116,121,112,101, 32,126, 61, 32, 39,118,
+ 111,105,100, 39, 32,116,104,101,110, 10,108,111, 99, 97,108,
+ 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,102,
+ 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,115,101,108,
+ 102, 46, 97,114,103,115, 91,105, 93, 58,102,114,101,101, 97,
+ 114,114, 97,121, 40, 41, 10,105, 32, 61, 32,105, 43, 49, 10,
+ 101,110,100, 10,101,110,100, 10,101,110,100, 10,111,117,116,
+ 112,117,116, 40, 39, 32,125, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39, 32,114,101,116,117,114,110, 32, 39, 46, 46,110,
+ 114,101,116, 46, 46, 39, 59, 39, 41, 10,105,102, 32,111,118,
+ 101,114,108,111, 97,100, 32, 60, 32, 48, 32,116,104,101,110,
+ 10,111,117,116,112,117,116, 40, 39, 35,105,102,110,100,101,
+ 102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69,
+ 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39,116,111,
+ 108,117, 97, 95,108,101,114,114,111,114, 58, 92,110, 39, 41,
+ 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97,
+ 95,101,114,114,111,114, 40,116,111,108,117, 97, 95, 83, 44,
+ 34, 35,102,101,114,114,111,114, 32,105,110, 32,102,117,110,
+ 99,116,105,111,110, 32, 92, 39, 39, 46, 46,115,101,108,102,
+ 46,108,110, 97,109,101, 46, 46, 39, 92, 39, 46, 34, 44, 38,
+ 116,111,108,117, 97, 95,101,114,114, 41, 59, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 32,114,101,116,117,114,110, 32,
+ 48, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,
+ 110,100,105,102, 92,110, 39, 41, 10,101,108,115,101, 10,111,
+ 117,116,112,117,116, 40, 39,116,111,108,117, 97, 95,108,101,
+ 114,114,111,114, 58, 92,110, 39, 41, 10,111,117,116,112,117,
+ 116, 40, 39, 32,114,101,116,117,114,110, 32, 39, 46, 46,115,
+ 116,114,115,117, 98, 40,115,101,108,102, 46, 99,110, 97,109,
+ 101, 44, 49, 44, 45, 51, 41, 46, 46,102,111,114,109, 97,116,
+ 40, 34, 37, 48, 50,100, 34, 44,111,118,101,114,108,111, 97,
+ 100, 41, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 41, 59,
+ 39, 41, 10,101,110,100, 10,111,117,116,112,117,116, 40, 39,
+ 125, 39, 41, 10,111,117,116,112,117,116, 40, 39, 92,110, 39,
+ 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 58,114,
+ 101,103,105,115,116,101,114, 32, 40, 41, 10,111,117,116,112,
+ 117,116, 40, 39, 32,116,111,108,117, 97, 95,102,117,110, 99,
+ 116,105,111,110, 40,116,111,108,117, 97, 95, 83, 44, 34, 39,
+ 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39,
+ 34, 44, 39, 46, 46,115,101,108,102, 46, 99,110, 97,109,101,
+ 46, 46, 39, 41, 59, 39, 41, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32, 99,108, 97,115,115, 70,117,110, 99,
+ 116,105,111,110, 58,112,114,105,110,116, 32, 40,105,100,101,
+ 110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,110,116,
+ 40,105,100,101,110,116, 46, 46, 34, 70,117,110, 99,116,105,
+ 111,110,123, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
+ 110,116, 46, 46, 34, 32,109,111,100, 32, 61, 32, 39, 34, 46,
+ 46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34,
+ 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
+ 34, 32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,
+ 108,102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 112,116,114, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
+ 112,116,114, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,
+ 116, 40,105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101,
+ 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,110, 97,109,
+ 101, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32,108,110, 97,109,101, 32,
+ 61, 32, 39, 34, 46, 46,115,101,108,102, 46,108,110, 97,109,
+ 101, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32, 99,111,110,115,116, 32,
+ 61, 32, 39, 34, 46, 46,115,101,108,102, 46, 99,111,110,115,
+ 116, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32, 99,110, 97,109,101, 32,
+ 61, 32, 39, 34, 46, 46,115,101,108,102, 46, 99,110, 97,109,
+ 101, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32,108,110, 97,109,101, 32,
+ 61, 32, 39, 34, 46, 46,115,101,108,102, 46,108,110, 97,109,
+ 101, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32, 97,114,103,115, 32, 61,
+ 32,123, 34, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,
+ 119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
+ 91,105, 93, 32,100,111, 10,115,101,108,102, 46, 97,114,103,
+ 115, 91,105, 93, 58,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32, 34, 44, 34, 44, 34, 41, 10,105, 32, 61,
+ 32,105, 43, 49, 10,101,110,100, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32,125, 34, 41, 10,112,114,
+ 105,110,116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46,
+ 46, 99,108,111,115,101, 41, 10,101,110,100, 10,102,117,110,
+ 99,116,105,111,110, 32, 99,108, 97,115,115, 70,117,110, 99,
+ 116,105,111,110, 58,114,101,113,117,105,114,101, 99,111,108,
+ 108,101, 99,116,105,111,110, 32, 40,116, 41, 10,108,111, 99,
+ 97,108, 32,114, 32, 61, 32,102, 97,108,115,101, 10,105,102,
+ 32,115,101,108,102, 46,116,121,112,101, 32,126, 61, 32, 39,
+ 39, 32, 97,110,100, 32,110,111,116, 32,105,115, 98, 97,115,
+ 105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 32, 97,
+ 110,100, 32,115,101,108,102, 46,112,116,114, 61, 61, 39, 39,
+ 32,116,104,101,110, 10,108,111, 99, 97,108, 32,116,121,112,
+ 101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,116,
+ 121,112,101, 44, 34, 37,115, 42, 99,111,110,115,116, 37,115,
+ 42, 34, 44, 34, 34, 41, 10,116, 91,116,121,112,101, 93, 32,
+ 61, 32, 34,116,111,108,117, 97, 95, 99,111,108,108,101, 99,
+ 116, 95, 34, 32, 46, 46, 32,103,115,117, 98, 40,116,121,112,
+ 101, 44, 34, 58, 58, 34, 44, 34, 95, 34, 41, 10,114, 32, 61,
+ 32,116,114,117,101, 10,101,110,100, 10,108,111, 99, 97,108,
+ 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,102,
+ 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,114, 32, 61,
+ 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,114,
+ 101,113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,
+ 110, 40,116, 41, 32,111,114, 32,114, 10,105, 32, 61, 32,105,
+ 43, 49, 10,101,110,100, 10,114,101,116,117,114,110, 32,114,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 70,117,110, 99,116,105,111,110, 58,111,118,
+ 101,114,108,111, 97,100, 32, 40, 41, 10,114,101,116,117,114,
+ 110, 32,115,101,108,102, 46,112, 97,114,101,110,116, 58,111,
+ 118,101,114,108,111, 97,100, 40,115,101,108,102, 46,108,110,
+ 97,109,101, 41, 10,101,110,100, 10,102,117,110, 99,116,105,
+ 111,110, 32, 95, 70,117,110, 99,116,105,111,110, 32, 40,116,
+ 41, 10,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,
+ 116, 44, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110,
+ 41, 10,105,102, 32,116, 46, 99,111,110,115,116, 32,126, 61,
+ 32, 39, 99,111,110,115,116, 39, 32, 97,110,100, 32,116, 46,
+ 99,111,110,115,116, 32,126, 61, 32, 39, 39, 32,116,104,101,
+ 110, 10,101,114,114,111,114, 40, 34, 35,105,110,118, 97,108,
+ 105,100, 32, 39, 99,111,110,115,116, 39, 32,115,112,101, 99,
+ 105,102,105, 99, 97,116,105,111,110, 34, 41, 10,101,110,100,
+ 10, 97,112,112,101,110,100, 40,116, 41, 10,105,102, 32,116,
+ 58,105,110, 99,108, 97,115,115, 40, 41, 32,116,104,101,110,
+ 10,105,102, 32,116, 46,110, 97,109,101, 32, 61, 61, 32,116,
+ 46,112, 97,114,101,110,116, 46,110, 97,109,101, 32,116,104,
+ 101,110, 10,116, 46,110, 97,109,101, 32, 61, 32, 39,110,101,
+ 119, 39, 10,116, 46,108,110, 97,109,101, 32, 61, 32, 39,110,
+ 101,119, 39, 10,116, 46,116,121,112,101, 32, 61, 32,116, 46,
+ 112, 97,114,101,110,116, 46,110, 97,109,101, 10,116, 46,112,
+ 116,114, 32, 61, 32, 39, 42, 39, 10,101,108,115,101,105,102,
+ 32,116, 46,110, 97,109,101, 32, 61, 61, 32, 39,126, 39, 46,
+ 46,116, 46,112, 97,114,101,110,116, 46,110, 97,109,101, 32,
+ 116,104,101,110, 10,116, 46,110, 97,109,101, 32, 61, 32, 39,
+ 100,101,108,101,116,101, 39, 10,116, 46,108,110, 97,109,101,
+ 32, 61, 32, 39,100,101,108,101,116,101, 39, 10,116, 46,112,
+ 97,114,101,110,116, 46, 95,100,101,108,101,116,101, 32, 61,
+ 32,116,114,117,101, 10,101,110,100, 10,101,110,100, 10,116,
+ 46, 99,110, 97,109,101, 32, 61, 32,116, 58, 99,102,117,110,
+ 99,110, 97,109,101, 40, 34,116,111,108,117, 97, 34, 41, 46,
+ 46,116, 58,111,118,101,114,108,111, 97,100, 40,116, 41, 10,
+ 114,101,116,117,114,110, 32,116, 10,101,110,100, 10,102,117,
+ 110, 99,116,105,111,110, 32, 70,117,110, 99,116,105,111,110,
+ 32, 40,100, 44, 97, 44, 99, 41, 10,108,111, 99, 97,108, 32,
+ 116, 32, 61, 32,115,112,108,105,116, 40,115,116,114,115,117,
+ 98, 40, 97, 44, 50, 44, 45, 50, 41, 44, 39, 44, 39, 41, 10,
+ 108,111, 99, 97,108, 32,105, 61, 49, 10,108,111, 99, 97,108,
+ 32,108, 32, 61, 32,123,110, 61, 48,125, 10,119,104,105,108,
+ 101, 32,116, 91,105, 93, 32,100,111, 10,108, 46,110, 32, 61,
+ 32,108, 46,110, 43, 49, 10,108, 91,108, 46,110, 93, 32, 61,
+ 32, 68,101, 99,108, 97,114, 97,116,105,111,110, 40,116, 91,
+ 105, 93, 44, 39,118, 97,114, 39, 41, 10,105, 32, 61, 32,105,
+ 43, 49, 10,101,110,100, 10,108,111, 99, 97,108, 32,102, 32,
+ 61, 32, 68,101, 99,108, 97,114, 97,116,105,111,110, 40,100,
+ 44, 39,102,117,110, 99, 39, 41, 10,102, 46, 97,114,103,115,
+ 32, 61, 32,108, 10,102, 46, 99,111,110,115,116, 32, 61, 32,
+ 99, 10,114,101,116,117,114,110, 32, 95, 70,117,110, 99,116,
+ 105,111,110, 40,102, 41, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 79,112,101,114, 97,116,111,114, 32,
+ 61, 32,123, 10,107,105,110,100, 32, 61, 32, 39, 39, 44, 10,
+ 125, 10, 99,108, 97,115,115, 79,112,101,114, 97,116,111,114,
+ 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+ 115, 79,112,101,114, 97,116,111,114, 10,115,101,116,109,101,
+ 116, 97,116, 97, 98,108,101, 40, 99,108, 97,115,115, 79,112,
+ 101,114, 97,116,111,114, 44, 99,108, 97,115,115, 70,117,110,
+ 99,116,105,111,110, 41, 10, 95, 84, 77, 32, 61, 32,123, 91,
+ 39, 43, 39, 93, 32, 61, 32, 39, 97,100,100, 39, 44, 10, 91,
+ 39, 45, 39, 93, 32, 61, 32, 39,115,117, 98, 39, 44, 10, 91,
+ 39, 42, 39, 93, 32, 61, 32, 39,109,117,108, 39, 44, 10, 91,
+ 39, 47, 39, 93, 32, 61, 32, 39,100,105,118, 39, 44, 10, 91,
+ 39, 60, 39, 93, 32, 61, 32, 39,108,116, 39, 44, 10, 91, 39,
+ 60, 61, 39, 93, 32, 61, 32, 39,108,101, 39, 44, 10, 91, 39,
+ 61, 61, 39, 93, 32, 61, 32, 39,101,113, 39, 44, 10, 91, 39,
+ 91, 93, 39, 93, 32, 61, 32, 39,103,101,116,105, 39, 44, 10,
+ 91, 39, 38, 91, 93, 39, 93, 32, 61, 32, 39,115,101,116,105,
+ 39, 44, 10,125, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 79,112,101,114, 97,116,111,114, 58,112,114,
+ 105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,111,115,
+ 101, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
+ 46, 34, 79,112,101,114, 97,116,111,114,123, 34, 41, 10,112,
+ 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,107,
+ 105,110,100, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
+ 107,105,110,100, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34, 32,109,111,100,
+ 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,109,111,100,
+ 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,
+ 100,101,110,116, 46, 46, 34, 32,116,121,112,101, 32, 61, 32,
+ 39, 34, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46,
+ 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
+ 110,116, 46, 46, 34, 32,112,116,114, 32, 61, 32, 39, 34, 46,
+ 46,115,101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34,
+ 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
+ 34, 32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,
+ 108,102, 46,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 99,111,110,115,116, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+ 102, 46, 99,111,110,115,116, 46, 46, 34, 39, 44, 34, 41, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 99,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+ 102, 46, 99,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 108,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+ 102, 46,108,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 97,114,103,115, 32, 61, 32,123, 34, 41, 10,108,111, 99, 97,
+ 108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,
+ 102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,115,101,
+ 108,102, 46, 97,114,103,115, 91,105, 93, 58,112,114,105,110,
+ 116, 40,105,100,101,110,116, 46, 46, 34, 32, 34, 44, 34, 44,
+ 34, 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,
+ 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+ 125, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
+ 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,
+ 110,100, 10,102,117,110, 99,116,105,111,110, 32, 95, 79,112,
+ 101,114, 97,116,111,114, 32, 40,116, 41, 10,115,101,116,109,
+ 101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,
+ 115, 79,112,101,114, 97,116,111,114, 41, 10,105,102, 32,116,
+ 46, 99,111,110,115,116, 32,126, 61, 32, 39, 99,111,110,115,
+ 116, 39, 32, 97,110,100, 32,116, 46, 99,111,110,115,116, 32,
+ 126, 61, 32, 39, 39, 32,116,104,101,110, 10,101,114,114,111,
+ 114, 40, 34, 35,105,110,118, 97,108,105,100, 32, 39, 99,111,
+ 110,115,116, 39, 32,115,112,101, 99,105,102,105, 99, 97,116,
+ 105,111,110, 34, 41, 10,101,110,100, 10, 97,112,112,101,110,
+ 100, 40,116, 41, 10,105,102, 32,110,111,116, 32,116, 58,105,
+ 110, 99,108, 97,115,115, 40, 41, 32,116,104,101,110, 10,101,
+ 114,114,111,114, 40, 34, 35,111,112,101,114, 97,116,111,114,
+ 32, 99, 97,110, 32,111,110,108,121, 32, 98,101, 32,100,101,
+ 102,105,110,101,100, 32, 97,115, 32, 99,108, 97,115,115, 32,
+ 109,101,109, 98,101,114, 34, 41, 10,101,110,100, 10,116, 46,
+ 110, 97,109,101, 32, 61, 32,116, 46,110, 97,109,101, 32, 46,
+ 46, 32, 34, 95, 34, 32, 46, 46, 32, 95, 84, 77, 91,116, 46,
+ 107,105,110,100, 93, 10,116, 46, 99,110, 97,109,101, 32, 61,
+ 32,116, 58, 99,102,117,110, 99,110, 97,109,101, 40, 34,116,
+ 111,108,117, 97, 34, 41, 46, 46,116, 58,111,118,101,114,108,
+ 111, 97,100, 40,116, 41, 10,116, 46,110, 97,109,101, 32, 61,
+ 32, 34,111,112,101,114, 97,116,111,114, 34, 32, 46, 46, 32,
+ 116, 46,107,105,110,100, 10,114,101,116,117,114,110, 32,116,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 79,
+ 112,101,114, 97,116,111,114, 32, 40,100, 44,107, 44, 97, 44,
+ 99, 41, 10,108,111, 99, 97,108, 32,114,101,102, 32, 61, 32,
+ 39, 39, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,
+ 108,105,116, 40,115,116,114,115,117, 98, 40, 97, 44, 50, 44,
+ 115,116,114,108,101,110, 40, 97, 41, 45, 49, 41, 44, 39, 44,
+ 39, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,108,111,
+ 99, 97,108, 32,108, 32, 61, 32,123,110, 61, 48,125, 10,119,
+ 104,105,108,101, 32,116, 91,105, 93, 32,100,111, 10,108, 46,
+ 110, 32, 61, 32,108, 46,110, 43, 49, 10,108, 91,108, 46,110,
+ 93, 32, 61, 32, 68,101, 99,108, 97,114, 97,116,105,111,110,
+ 40,116, 91,105, 93, 44, 39,118, 97,114, 39, 41, 10,105, 32,
+ 61, 32,105, 43, 49, 10,101,110,100, 10,105,102, 32,107, 32,
+ 61, 61, 32, 39, 91, 93, 39, 32,116,104,101,110, 10,108,111,
+ 99, 97,108, 32, 95, 10, 95, 44, 32, 95, 44, 32,114,101,102,
+ 32, 61, 32,115,116,114,102,105,110,100, 40,100, 44, 39, 40,
+ 38, 41, 39, 41, 10,100, 32, 61, 32,103,115,117, 98, 40,100,
+ 44, 39, 38, 39, 44, 39, 39, 41, 10,101,108,115,101,105,102,
+ 32,107, 61, 61, 39, 38, 91, 93, 39, 32,116,104,101,110, 10,
+ 108, 46,110, 32, 61, 32,108, 46,110, 43, 49, 10,108, 91,108,
+ 46,110, 93, 32, 61, 32, 68,101, 99,108, 97,114, 97,116,105,
+ 111,110, 40,100, 44, 39,118, 97,114, 39, 41, 10,108, 91,108,
+ 46,110, 93, 46,110, 97,109,101, 32, 61, 32, 39,116,111,108,
+ 117, 97, 95,118, 97,108,117,101, 39, 10,101,110,100, 10,108,
+ 111, 99, 97,108, 32,102, 32, 61, 32, 68,101, 99,108, 97,114,
+ 97,116,105,111,110, 40,100, 44, 39,102,117,110, 99, 39, 41,
+ 10,105,102, 32,107, 32, 61, 61, 32, 39, 91, 93, 39, 32, 97,
+ 110,100, 32, 40,108, 91, 49, 93, 61, 61,110,105,108, 32,111,
+ 114, 32,105,115, 98, 97,115,105, 99, 40,108, 91, 49, 93, 46,
+ 116,121,112,101, 41,126, 61, 39,110,117,109, 98,101,114, 39,
+ 41, 32,116,104,101,110, 10,101,114,114,111,114, 40, 39,111,
+ 112,101,114, 97,116,111,114, 91, 93, 32, 99, 97,110, 32,111,
+ 110,108,121, 32, 98,101, 32,100,101,102,105,110,101,100, 32,
+ 102,111,114, 32,110,117,109,101,114,105, 99, 32,105,110,100,
+ 101,120, 46, 39, 41, 10,101,110,100, 10,102, 46, 97,114,103,
+ 115, 32, 61, 32,108, 10,102, 46, 99,111,110,115,116, 32, 61,
+ 32, 99, 10,102, 46,107,105,110,100, 32, 61, 32,103,115,117,
+ 98, 40,107, 44, 34, 37,115, 34, 44, 34, 34, 41, 10,105,102,
+ 32,110,111,116, 32, 95, 84, 77, 91,102, 46,107,105,110,100,
+ 93, 32,116,104,101,110, 10,101,114,114,111,114, 40, 34,116,
+ 111,108,117, 97, 58, 32,110,111, 32,115,117,112,112,111,114,
+ 116, 32,102,111,114, 32,111,112,101,114, 97,116,111,114, 34,
+ 32, 46, 46, 32,102, 46,107,105,110,100, 41, 10,101,110,100,
+ 10,102, 46,108,110, 97,109,101, 32, 61, 32, 34, 46, 34, 46,
+ 46, 95, 84, 77, 91,102, 46,107,105,110,100, 93, 10,105,102,
+ 32,102, 46,107,105,110,100, 32, 61, 61, 32, 39, 91, 93, 39,
+ 32, 97,110,100, 32,114,101,102, 61, 61, 39, 38, 39, 32, 97,
+ 110,100, 32,102, 46, 99,111,110,115,116,126, 61, 39, 99,111,
+ 110,115,116, 39, 32,116,104,101,110, 10, 79,112,101,114, 97,
+ 116,111,114, 40,100, 44, 39, 38, 39, 46, 46,107, 44, 97, 44,
+ 99, 41, 10,101,110,100, 10,114,101,116,117,114,110, 32, 95,
+ 79,112,101,114, 97,116,111,114, 40,102, 41, 10,101,110,100,
+ 32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 99,108, 97,115,115, 67,108, 97,115,115, 32, 61, 32,123,
+ 10, 99,108, 97,115,115,116,121,112,101, 32, 61, 32, 39, 99,
+ 108, 97,115,115, 39, 44, 10,110, 97,109,101, 32, 61, 32, 39,
+ 39, 44, 10, 98, 97,115,101, 32, 61, 32, 39, 39, 44, 10,116,
+ 121,112,101, 32, 61, 32, 39, 39, 44, 10, 98,116,121,112,101,
+ 32, 61, 32, 39, 39, 44, 10, 99,116,121,112,101, 32, 61, 32,
+ 39, 39, 44, 10,125, 10, 99,108, 97,115,115, 67,108, 97,115,
+ 115, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+ 115,115, 67,108, 97,115,115, 10,115,101,116,109,101,116, 97,
+ 116, 97, 98,108,101, 40, 99,108, 97,115,115, 67,108, 97,115,
+ 115, 44, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+ 114, 41, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+ 115,115, 67,108, 97,115,115, 58,114,101,103,105,115,116,101,
+ 114, 32, 40, 41, 10,112,117,115,104, 40,115,101,108,102, 41,
+ 10,105,102, 32, 95, 99,111,108,108,101, 99,116, 91,115,101,
+ 108,102, 46,116,121,112,101, 93, 32,116,104,101,110, 10,111,
+ 117,116,112,117,116, 40, 39, 35,105,102,100,101,102, 32, 95,
+ 95, 99,112,108,117,115,112,108,117,115, 92,110, 39, 41, 10,
+ 111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,
+ 99, 99,108, 97,115,115, 40,116,111,108,117, 97, 95, 83, 44,
+ 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46,
+ 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46,116,121,
+ 112,101, 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102,
+ 46, 98,116,121,112,101, 46, 46, 39, 34, 44, 39, 46, 46, 95,
+ 99,111,108,108,101, 99,116, 91,115,101,108,102, 46,116,121,
+ 112,101, 93, 46, 46, 39, 41, 59, 39, 41, 10,111,117,116,112,
+ 117,116, 40, 39, 35,101,108,115,101, 92,110, 39, 41, 10,111,
+ 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95, 99,
+ 99,108, 97,115,115, 40,116,111,108,117, 97, 95, 83, 44, 34,
+ 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46,
+ 39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46,116,121,112,
+ 101, 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46,
+ 98,116,121,112,101, 46, 46, 39, 34, 44, 78, 85, 76, 76, 41,
+ 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,110,
+ 100,105,102, 92,110, 39, 41, 10,101,108,115,101, 10,111,117,
+ 116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95, 99, 99,
+ 108, 97,115,115, 40,116,111,108,117, 97, 95, 83, 44, 34, 39,
+ 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39,
+ 34, 44, 34, 39, 46, 46,115,101,108,102, 46,116,121,112,101,
+ 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46, 98,
+ 116,121,112,101, 46, 46, 39, 34, 44, 78, 85, 76, 76, 41, 59,
+ 39, 41, 10,101,110,100, 10,111,117,116,112,117,116, 40, 39,
+ 32,116,111,108,117, 97, 95, 98,101,103,105,110,109,111,100,
+ 117,108,101, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46,
+ 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39, 34,
+ 41, 59, 39, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,
+ 119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,
+ 111, 10,115,101,108,102, 91,105, 93, 58,114,101,103,105,115,
+ 116,101,114, 40, 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,
+ 110,100, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,
+ 117, 97, 95,101,110,100,109,111,100,117,108,101, 40,116,111,
+ 108,117, 97, 95, 83, 41, 59, 39, 41, 10,112,111,112, 40, 41,
+ 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32, 99,
+ 108, 97,115,115, 67,108, 97,115,115, 58,114,101,113,117,105,
+ 114,101, 99,111,108,108,101, 99,116,105,111,110, 32, 40,116,
+ 41, 10,112,117,115,104, 40,115,101,108,102, 41, 10,108,111,
+ 99, 97,108, 32,114, 32, 61, 32,102, 97,108,115,101, 10,108,
+ 111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,
+ 115,101,108,102, 91,105, 93, 32,100,111, 10,114, 32, 61, 32,
+ 115,101,108,102, 91,105, 93, 58,114,101,113,117,105,114,101,
+ 99,111,108,108,101, 99,116,105,111,110, 40,116, 41, 32,111,
+ 114, 32,114, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100,
+ 10,112,111,112, 40, 41, 10,105,102, 32,115,101,108,102, 46,
+ 95,100,101,108,101,116,101, 32,116,104,101,110, 10,116, 91,
+ 115,101,108,102, 46,116,121,112,101, 93, 32, 61, 32, 34,116,
+ 111,108,117, 97, 95, 99,111,108,108,101, 99,116, 95, 34, 32,
+ 46, 46, 32,103,115,117, 98, 40,115,101,108,102, 46,116,121,
+ 112,101, 44, 34, 58, 58, 34, 44, 34, 95, 34, 41, 10,114, 32,
+ 61, 32,116,114,117,101, 10,101,110,100, 10,114,101,116,117,
+ 114,110, 32,114, 10,101,110,100, 10,102,117,110, 99,116,105,
+ 111,110, 32, 99,108, 97,115,115, 67,108, 97,115,115, 58,100,
+ 101, 99,108,116,121,112,101, 32, 40, 41, 10,112,117,115,104,
+ 40,115,101,108,102, 41, 10,115,101,108,102, 46,116,121,112,
+ 101, 32, 61, 32,114,101,103,116,121,112,101, 40,115,101,108,
+ 102, 46,110, 97,109,101, 41, 10,115,101,108,102, 46, 98,116,
+ 121,112,101, 32, 61, 32,116,121,112,101,118, 97,114, 40,115,
+ 101,108,102, 46, 98, 97,115,101, 41, 10,115,101,108,102, 46,
+ 99,116,121,112,101, 32, 61, 32, 39, 99,111,110,115,116, 32,
+ 39, 46, 46,115,101,108,102, 46,116,121,112,101, 10,108,111,
+ 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,
+ 101,108,102, 91,105, 93, 32,100,111, 10,115,101,108,102, 91,
+ 105, 93, 58,100,101, 99,108,116,121,112,101, 40, 41, 10,105,
+ 32, 61, 32,105, 43, 49, 10,101,110,100, 10,112,111,112, 40,
+ 41, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 99,108, 97,115,115, 67,108, 97,115,115, 58,112,114,105,110,
+ 116, 32, 40,105,100,101,110,116, 44, 99,108,111,115,101, 41,
+ 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+ 67,108, 97,115,115,123, 34, 41, 10,112,114,105,110,116, 40,
+ 105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101, 32, 61,
+ 32, 39, 34, 46, 46,115,101,108,102, 46,110, 97,109,101, 46,
+ 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,
+ 101,110,116, 46, 46, 34, 32, 98, 97,115,101, 32, 61, 32, 39,
+ 34, 46, 46,115,101,108,102, 46, 98, 97,115,101, 46, 46, 34,
+ 39, 59, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,108,110, 97,109,101, 32, 61, 32, 39, 34,
+ 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 34,
+ 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
+ 116, 46, 46, 34, 32,116,121,112,101, 32, 61, 32, 39, 34, 46,
+ 46,115,101,108,102, 46,116,121,112,101, 46, 46, 34, 39, 44,
+ 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
+ 46, 34, 32, 98,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,
+ 115,101,108,102, 46, 98,116,121,112,101, 46, 46, 34, 39, 44,
+ 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
+ 46, 34, 32, 99,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,
+ 115,101,108,102, 46, 99,116,121,112,101, 46, 46, 34, 39, 44,
+ 34, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,
+ 105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+ 115,101,108,102, 91,105, 93, 58,112,114,105,110,116, 40,105,
+ 100,101,110,116, 46, 46, 34, 32, 34, 44, 34, 44, 34, 41, 10,
+ 105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,112,114,105,
+ 110,116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46, 46,
+ 99,108,111,115,101, 41, 10,101,110,100, 10,102,117,110, 99,
+ 116,105,111,110, 32, 95, 67,108, 97,115,115, 32, 40,116, 41,
+ 10,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116,
+ 44, 99,108, 97,115,115, 67,108, 97,115,115, 41, 10,116, 58,
+ 98,117,105,108,100,110, 97,109,101,115, 40, 41, 10, 97,112,
+ 112,101,110,100, 40,116, 41, 10,114,101,116,117,114,110, 32,
+ 116, 10,101,110,100, 10,102,117,110, 99,116,105,111,110, 32,
+ 67,108, 97,115,115, 32, 40,110, 44,112, 44, 98, 41, 10,108,
+ 111, 99, 97,108, 32, 99, 32, 61, 32, 95, 67,108, 97,115,115,
+ 40, 95, 67,111,110,116, 97,105,110,101,114,123,110, 97,109,
+ 101, 61,110, 44, 32, 98, 97,115,101, 61,112,125, 41, 10,112,
+ 117,115,104, 40, 99, 41, 10, 99, 58,112, 97,114,115,101, 40,
+ 115,116,114,115,117, 98, 40, 98, 44, 50, 44,115,116,114,108,
+ 101,110, 40, 98, 41, 45, 49, 41, 41, 10,112,111,112, 40, 41,
+ 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10, 83, 84, 82, 49, 32, 61, 32, 34, 92, 48, 48, 49, 34, 13,
+ 10, 83, 84, 82, 50, 32, 61, 32, 34, 92, 48, 48, 50, 34, 13,
+ 10, 83, 84, 82, 51, 32, 61, 32, 34, 92, 48, 48, 51, 34, 13,
+ 10, 83, 84, 82, 52, 32, 61, 32, 34, 92, 48, 48, 52, 34, 13,
+ 10, 82, 69, 77, 32, 61, 32, 34, 92, 48, 48, 53, 34, 13, 10,
+ 65, 78, 89, 32, 61, 32, 34, 40, 91, 92, 48, 48, 49, 45, 92,
+ 48, 48, 53, 93, 41, 34, 13, 10, 69, 83, 67, 49, 32, 61, 32,
+ 34, 92, 48, 48, 54, 34, 13, 10, 69, 83, 67, 50, 32, 61, 32,
+ 34, 92, 48, 48, 55, 34, 13, 10, 13, 10, 77, 65, 83, 75, 32,
+ 61, 32,123, 10,123, 69, 83, 67, 49, 44, 32, 34, 92, 92, 39,
+ 34, 44, 32, 34, 92, 92, 39, 34,125, 44, 13, 10,123, 69, 83,
+ 67, 50, 44, 32, 39, 92, 92, 34, 39, 44, 32, 39, 92, 92, 34,
+ 39,125, 44, 13, 10,123, 83, 84, 82, 49, 44, 32, 34, 39, 34,
+ 44, 32, 34, 39, 34,125, 44, 13, 10,123, 83, 84, 82, 50, 44,
+ 32, 39, 34, 39, 44, 32, 39, 34, 39,125, 44, 13, 10,123, 83,
+ 84, 82, 51, 44, 32, 34, 37, 91, 37, 91, 34, 44, 32, 34, 91,
+ 91, 34,125, 44, 13, 10,123, 83, 84, 82, 52, 44, 32, 34, 37,
+ 93, 37, 93, 34, 44, 32, 34, 93, 93, 34,125, 44, 13, 10,123,
+ 82, 69, 77, 32, 44, 32, 34, 37, 45, 37, 45, 34, 44, 32, 34,
+ 45, 45, 34,125, 44, 13, 10,125, 13, 10, 13, 10,102,117,110,
+ 99,116,105,111,110, 32,109, 97,115,107, 32, 40,115, 41, 13,
+ 10,102,111,114, 32,105, 32, 61, 32, 49, 44,103,101,116,110,
+ 40, 77, 65, 83, 75, 41, 32,100,111, 13, 10,115, 32, 61, 32,
+ 103,115,117, 98, 40,115, 44, 77, 65, 83, 75, 91,105, 93, 91,
+ 50, 93, 44, 77, 65, 83, 75, 91,105, 93, 91, 49, 93, 41, 13,
+ 10,101,110,100, 13, 10,114,101,116,117,114,110, 32,115, 13,
+ 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,
+ 110, 32,117,110,109, 97,115,107, 32, 40,115, 41, 13, 10,102,
+ 111,114, 32,105, 32, 61, 32, 49, 44,103,101,116,110, 40, 77,
+ 65, 83, 75, 41, 32,100,111, 13, 10,115, 32, 61, 32,103,115,
+ 117, 98, 40,115, 44, 77, 65, 83, 75, 91,105, 93, 91, 49, 93,
+ 44, 77, 65, 83, 75, 91,105, 93, 91, 51, 93, 41, 13, 10,101,
+ 110,100, 13, 10,114,101,116,117,114,110, 32,115, 13, 10,101,
+ 110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,
+ 99,108,101, 97,110, 32, 40,115, 41, 13, 10,108,111, 99, 97,
+ 108, 32, 99,111,100,101, 32, 61, 32, 34,114,101,116,117,114,
+ 110, 32,102,117,110, 99,116,105,111,110, 32, 40, 41, 32, 34,
+ 32, 46, 46, 32,115, 32, 46, 46, 32, 34, 32,101,110,100, 34,
+ 32, 13, 10,105,102, 32,110,111,116, 32,100,111,115,116,114,
+ 105,110,103, 40, 99,111,100,101, 41, 32,116,104,101,110, 13,
+ 10,114,101,116,117,114,110, 32,110,105,108, 13, 10,101,110,
+ 100, 13, 10, 13, 10,108,111, 99, 97,108, 32, 83, 32, 61, 32,
+ 34, 34, 10, 13, 10,115, 32, 61, 32,109, 97,115,107, 40,115,
+ 41, 13, 10, 13, 10,119,104,105,108,101, 32, 49, 32,100,111,
+ 13, 10,108,111, 99, 97,108, 32, 98, 44,101, 44,100, 32, 61,
+ 32,115,116,114,102,105,110,100, 40,115, 44, 65, 78, 89, 41,
+ 13, 10,105,102, 32, 98, 32,116,104,101,110, 32, 13, 10, 83,
+ 32, 61, 32, 83, 46, 46,115,116,114,115,117, 98, 40,115, 44,
+ 49, 44, 98, 45, 49, 41, 13, 10,115, 32, 61, 32,115,116,114,
+ 115,117, 98, 40,115, 44, 98, 43, 49, 41, 13, 10,105,102, 32,
+ 100, 61, 61, 83, 84, 82, 49, 32,111,114, 32,100, 61, 61, 83,
+ 84, 82, 50, 32,116,104,101,110, 13, 10,101, 32, 61, 32,115,
+ 116,114,102,105,110,100, 40,115, 44,100, 41, 13, 10, 83, 32,
+ 61, 32, 83, 32, 46, 46,100, 46, 46,115,116,114,115,117, 98,
+ 40,115, 44, 49, 44,101, 41, 13, 10,115, 32, 61, 32,115,116,
+ 114,115,117, 98, 40,115, 44,101, 43, 49, 41, 13, 10,101,108,
+ 115,101,105,102, 32,100, 61, 61, 83, 84, 82, 51, 32,116,104,
+ 101,110, 13, 10,101, 32, 61, 32,115,116,114,102,105,110,100,
+ 40,115, 44, 83, 84, 82, 52, 41, 13, 10, 83, 32, 61, 32, 83,
+ 46, 46,100, 46, 46,115,116,114,115,117, 98, 40,115, 44, 49,
+ 44,101, 41, 13, 10,115, 32, 61, 32,115,116,114,115,117, 98,
+ 40,115, 44,101, 43, 49, 41, 13, 10,101,108,115,101,105,102,
+ 32,100, 61, 61, 82, 69, 77, 32,116,104,101,110, 13, 10,115,
+ 32, 61, 32,103,115,117, 98, 40,115, 44, 34, 91, 94, 92,110,
+ 93, 42, 40, 92,110, 63, 41, 34, 44, 34, 37, 49, 34, 44, 49,
+ 41, 13, 10,101,110,100, 32, 13, 10,101,108,115,101, 13, 10,
+ 83, 32, 61, 32, 83, 46, 46,115, 13, 10, 98,114,101, 97,107,
+ 13, 10,101,110,100, 13, 10,101,110,100, 13, 10, 83, 32, 61,
+ 32,103,115,117, 98, 40, 83, 44, 34, 91, 32, 92,116, 93, 43,
+ 34, 44, 34, 32, 34, 41, 13, 10, 83, 32, 61, 32,103,115,117,
+ 98, 40, 83, 44, 34, 91, 32, 92,116, 93, 42, 92,110, 91, 32,
+ 92,116, 93, 42, 34, 44, 34, 92,110, 34, 41, 13, 10, 83, 32,
+ 61, 32,103,115,117, 98, 40, 83, 44, 34, 92,110, 43, 34, 44,
+ 34, 92,110, 34, 41, 13, 10, 83, 32, 61, 32,117,110,109, 97,
+ 115,107, 40, 83, 41, 13, 10,114,101,116,117,114,110, 32, 83,
+ 13, 10,101,110,100, 13,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10,102,117,110, 99,116,105,111,110, 32,100,111,105,116, 32,
+ 40, 41, 10,105,102, 32,110,111,116, 32,102,108, 97,103,115,
+ 46,110, 32,116,104,101,110, 10,105,102, 32,102,108, 97,103,
+ 115, 46,102, 32,116,104,101,110, 10,102,108, 97,103,115, 46,
+ 110, 32, 61, 32,103,115,117, 98, 40,102,108, 97,103,115, 46,
+ 102, 44, 34, 37, 46, 46, 42, 34, 44, 34, 34, 41, 10,101,108,
+ 115,101, 10,101,114,114,111,114, 40, 34, 35,110,111, 32,112,
+ 97, 99,107, 97,103,101, 32,110, 97,109,101, 32,110,111,114,
+ 32,105,110,112,117,116, 32,102,105,108,101, 32,112,114,111,
+ 118,105,100,101,100, 34, 41, 10,101,110,100, 10,101,110,100,
+ 10,108,111, 99, 97,108, 32,112, 32, 61, 32, 80, 97, 99,107,
+ 97,103,101, 40,102,108, 97,103,115, 46,110, 44,102,108, 97,
+ 103,115, 46,102, 41, 10,105,102, 32,102,108, 97,103,115, 46,
+ 112, 32,116,104,101,110, 10,114,101,116,117,114,110, 10,101,
+ 110,100, 10,105,102, 32,102,108, 97,103,115, 46,111, 32,116,
+ 104,101,110, 10,108,111, 99, 97,108, 32,115,116, 44,109,115,
+ 103, 32, 61, 32,119,114,105,116,101,116,111, 40,102,108, 97,
+ 103,115, 46,111, 41, 10,105,102, 32,110,111,116, 32,115,116,
+ 32,116,104,101,110, 10,101,114,114,111,114, 40, 39, 35, 39,
+ 46, 46,109,115,103, 41, 10,101,110,100, 10,101,110,100, 10,
+ 112, 58,100,101, 99,108,116,121,112,101, 40, 41, 10,105,102,
+ 32,102,108, 97,103,115, 46, 80, 32,116,104,101,110, 10,112,
+ 58,112,114,105,110,116, 40, 41, 10,101,108,115,101, 10,112,
+ 58,112,114,101, 97,109, 98,108,101, 40, 41, 10,112, 58,115,
+ 117,112, 99,111,100,101, 40, 41, 10,112, 58,114,101,103,105,
+ 115,116,101,114, 40, 41, 10,101,110,100, 10,105,102, 32,102,
+ 108, 97,103,115, 46,111, 32,116,104,101,110, 10,119,114,105,
+ 116,101,116,111, 40, 41, 10,101,110,100, 10,105,102, 32,110,
+ 111,116, 32,102,108, 97,103,115, 46, 80, 32,116,104,101,110,
+ 10,105,102, 32,102,108, 97,103,115, 46, 72, 32,116,104,101,
+ 110, 10,108,111, 99, 97,108, 32,115,116, 44,109,115,103, 32,
+ 61, 32,119,114,105,116,101,116,111, 40,102,108, 97,103,115,
+ 46, 72, 41, 10,105,102, 32,110,111,116, 32,115,116, 32,116,
+ 104,101,110, 10,101,114,114,111,114, 40, 39, 35, 39, 46, 46,
+ 109,115,103, 41, 10,101,110,100, 10,112, 58,104,101, 97,100,
+ 101,114, 40, 41, 10,119,114,105,116,101,116,111, 40, 41, 10,
+ 101,110,100, 10,101,110,100, 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+
+ { /* begin embedded lua code */
+ static unsigned char B[] = {
+ 10,108,111, 99, 97,108, 32,101,114,114, 44,109,115,103, 32,
+ 61, 32,112, 99, 97,108,108, 40,100,111,105,116, 41, 10,105,
+ 102, 32,110,111,116, 32,101,114,114, 32,116,104,101,110, 10,
+ 108,111, 99, 97,108, 32, 95, 44, 95, 44,108, 97, 98,101,108,
+ 44,109,115,103, 32, 61, 32,115,116,114,102,105,110,100, 40,
+ 109,115,103, 44, 34, 40, 46, 45, 58, 46, 45, 58, 37,115, 42,
+ 41, 40, 46, 42, 41, 34, 41, 10,116,111,108,117, 97, 95,101,
+ 114,114,111,114, 40,109,115,103, 44,108, 97, 98,101,108, 41,
+ 10,101,110,100,32
+ };
+ if (luaL_loadbuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code") == LUA_OK)
+ lua_pcall(tolua_S,0,LUA_MULTRET,0);
+ } /* end of embedded lua code */
+
+ tolua_endmodule(tolua_S);
+ return 1;
+}
+/* Open tolua function */
+TOLUA_API int tolua_tolua_open (lua_State* tolua_S)
+{
+ lua_pushcfunction(tolua_S, luaopen_tolua);
+ lua_pushstring(tolua_S, "tolua");
+ lua_call(tolua_S, 1, 0);
+ return 1;
+}
diff --git a/tolua/src/lib/.DS_Store b/tolua/src/lib/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/tolua/src/lib/.DS_Store
Binary files differ
diff --git a/tolua/src/lib/._.DS_Store b/tolua/src/lib/._.DS_Store
new file mode 100644
index 0000000..321346b
--- /dev/null
+++ b/tolua/src/lib/._.DS_Store
Binary files differ
diff --git a/tolua/src/lib/._tolua_event.c b/tolua/src/lib/._tolua_event.c
new file mode 100644
index 0000000..4f881ff
--- /dev/null
+++ b/tolua/src/lib/._tolua_event.c
Binary files differ
diff --git a/tolua/src/lib/._tolua_map.c b/tolua/src/lib/._tolua_map.c
new file mode 100644
index 0000000..4f881ff
--- /dev/null
+++ b/tolua/src/lib/._tolua_map.c
Binary files differ
diff --git a/tolua/src/lib/Makefile b/tolua/src/lib/Makefile
new file mode 100644
index 0000000..b2091f3
--- /dev/null
+++ b/tolua/src/lib/Makefile
@@ -0,0 +1,27 @@
+# makefile for tolua library
+
+TOLUA=../..
+
+include $(TOLUA)/config
+
+OBJS= \
+ tolua_event.o \
+ tolua_is.o \
+ tolua_map.o \
+ tolua_push.o \
+ tolua_to.o
+
+T= $(TOLUA)/lib/libtolua.a
+
+all: $T
+
+$T: $(OBJS)
+ $(AR) $@ $(OBJS)
+ $(RANLIB) $@
+
+clean:
+ rm -f $(OBJS)
+
+klean:
+ rm -f $T
+
diff --git a/tolua/src/lib/tolua_event.c b/tolua/src/lib/tolua_event.c
new file mode 100644
index 0000000..40f20ff
--- /dev/null
+++ b/tolua/src/lib/tolua_event.c
@@ -0,0 +1,449 @@
+/* tolua: event functions
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: tolua_event.c,v 1.7 2011/01/13 13:43:46 fabraham Exp $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "tolua.h"
+
+/* Store at peer
+ * It stores, creating the corresponding table if needed,
+ * the pair key/value in the corresponding peer table
+*/
+static void storeatpeer (lua_State* L, int index)
+{
+ /* stack: key value (to be stored) */
+ lua_pushstring(L,"tolua_peer");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* stack: k v peer */
+ lua_pushvalue(L, index);
+ lua_rawget(L,-2); /* stack: k v peer peer[u] */
+ if (!lua_istable(L,-1))
+ {
+ lua_pop(L,1); /* stack: k v peer */
+ lua_newtable(L); /* stack: k v peer table */
+ lua_pushvalue(L,index);
+ lua_pushvalue(L,-2); /* stack: k v peer table u table */
+ lua_rawset(L,-4); /* stack: k v peer peer[u]=table */
+ }
+ lua_insert(L,-4); /* put table before k */
+ lua_pop(L,1); /* pop peer */
+ lua_rawset(L,-3); /* store at table */
+ lua_pop(L,1); /* pop peer[u] */
+}
+
+/* Module index function
+*/
+static int module_index_event (lua_State* L)
+{
+ lua_pushstring(L,".get");
+ lua_rawget(L,-3);
+ if (lua_istable(L,-1))
+ {
+ lua_pushvalue(L,2); /* key */
+ lua_rawget(L,-2);
+ if (lua_iscfunction(L,-1))
+ {
+ lua_call(L,0,1);
+ return 1;
+ }
+ else if (lua_istable(L,-1))
+ return 1;
+ }
+ /* call old index meta event */
+ if (lua_getmetatable(L,1))
+ {
+ lua_pushstring(L,"__index");
+ lua_rawget(L,-2);
+ lua_pushvalue(L,1);
+ lua_pushvalue(L,2);
+ if (lua_isfunction(L,-1))
+ {
+ lua_call(L,2,1);
+ return 1;
+ }
+ else if (lua_istable(L,-1))
+ {
+ lua_gettable(L,-3);
+ return 1;
+ }
+ }
+ lua_pushnil(L);
+ return 1;
+}
+
+/* Module newindex function
+*/
+static int module_newindex_event (lua_State* L)
+{
+ lua_pushstring(L,".set");
+ lua_rawget(L,-4);
+ if (lua_istable(L,-1))
+ {
+ lua_pushvalue(L,2); /* key */
+ lua_rawget(L,-2);
+ if (lua_iscfunction(L,-1))
+ {
+ lua_pushvalue(L,1); /* only to be compatible with non-static vars */
+ lua_pushvalue(L,3); /* value */
+ lua_call(L,2,0);
+ return 0;
+ }
+ }
+ /* call old newindex meta event */
+ if (lua_getmetatable(L,1) && lua_getmetatable(L,-1))
+ {
+ lua_pushstring(L,"__newindex");
+ lua_rawget(L,-2);
+ if (lua_isfunction(L,-1))
+ {
+ lua_pushvalue(L,1);
+ lua_pushvalue(L,2);
+ lua_pushvalue(L,3);
+ lua_call(L,3,0);
+ }
+ }
+ lua_settop(L,3);
+ lua_rawset(L,-3);
+ return 0;
+}
+
+/* Class index function
+ * If the object is a userdata (ie, an object), it searches the field in
+ * the alternative table stored in the corresponding "peer" table.
+*/
+static int class_index_event (lua_State* L)
+{
+ int t = lua_type(L,1);
+ if (t == LUA_TUSERDATA)
+ {
+ /* Access alternative table */
+ lua_pushstring(L,"tolua_peer");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* stack: obj key peer */
+ lua_pushvalue(L,1);
+ lua_rawget(L,-2); /* stack: obj key peer peer[u] */
+ if (lua_istable(L,-1))
+ {
+ lua_pushvalue(L,2); /* key */
+ lua_rawget(L,-2); /* stack: obj key peer peer[u] value */
+ if (!lua_isnil(L,-1))
+ return 1;
+ }
+ lua_settop(L,2); /* stack: obj key */
+ /* Try metatables */
+ lua_pushvalue(L,1); /* stack: obj key obj */
+ while (lua_getmetatable(L,-1))
+ { /* stack: obj key obj mt */
+ lua_remove(L,-2); /* stack: obj key mt */
+ if (lua_isnumber(L,2)) /* check if key is a numeric value */
+ {
+ /* try operator[] */
+ lua_pushstring(L,".geti");
+ lua_rawget(L,-2); /* stack: obj key mt func */
+ if (lua_isfunction(L,-1))
+ {
+ lua_pushvalue(L,1);
+ lua_pushvalue(L,2);
+ lua_call(L,2,1);
+ return 1;
+ }
+ }
+ else
+ {
+ lua_pushvalue(L,2); /* stack: obj key mt key */
+ lua_rawget(L,-2); /* stack: obj key mt value */
+ if (!lua_isnil(L,-1))
+ return 1;
+ else
+ lua_pop(L,1);
+ /* try C/C++ variable */
+ lua_pushstring(L,".get");
+ lua_rawget(L,-2); /* stack: obj key mt tget */
+ if (lua_istable(L,-1))
+ {
+ lua_pushvalue(L,2);
+ lua_rawget(L,-2); /* stack: obj key mt value */
+ if (lua_iscfunction(L,-1))
+ {
+ lua_pushvalue(L,1);
+ lua_pushvalue(L,2);
+ lua_call(L,2,1);
+ return 1;
+ }
+ else if (lua_istable(L,-1))
+ {
+ /* deal with array: create table to be returned and cache it in peer */
+ void* u = *((void**)lua_touserdata(L,1));
+ lua_newtable(L); /* stack: obj key mt value table */
+ lua_pushstring(L,".self");
+ lua_pushlightuserdata(L,u);
+ lua_rawset(L,-3); /* store usertype in ".self" */
+ lua_insert(L,-2); /* stack: obj key mt table value */
+ lua_setmetatable(L,-2); /* set stored value as metatable */
+ lua_pushvalue(L,-1); /* stack: obj key met table table */
+ lua_pushvalue(L,2); /* stack: obj key mt table table key */
+ lua_insert(L,-2); /* stack: obj key mt table key table */
+ storeatpeer(L,1); /* stack: obj key mt table */
+ return 1;
+ }
+ }
+ }
+ lua_settop(L,3);
+ }
+ lua_pushnil(L);
+ return 1;
+ }
+ else if (t== LUA_TTABLE)
+ {
+ module_index_event(L);
+ return 1;
+ }
+ lua_pushnil(L);
+ return 1;
+}
+
+/* Newindex function
+ * It first searches for a C/C++ varaible to be set.
+ * Then, it either stores it in the alternative peer table (in the case it is
+ * an object) or in the own table (that represents the class or module).
+*/
+static int class_newindex_event (lua_State* L)
+{
+ int t = lua_type(L,1);
+ if (t == LUA_TUSERDATA)
+ {
+ /* Try accessing a C/C++ variable to be set */
+ lua_getmetatable(L,1);
+ while (lua_istable(L,-1)) /* stack: t k v mt */
+ {
+ if (lua_isnumber(L,2)) /* check if key is a numeric value */
+ {
+ /* try operator[] */
+ lua_pushstring(L,".seti");
+ lua_rawget(L,-2); /* stack: obj key mt func */
+ if (lua_isfunction(L,-1))
+ {
+ lua_pushvalue(L,1);
+ lua_pushvalue(L,2);
+ lua_pushvalue(L,3);
+ lua_call(L,3,0);
+ return 0;
+ }
+ }
+ else
+ {
+ lua_pushstring(L,".set");
+ lua_rawget(L,-2); /* stack: t k v mt tset */
+ if (lua_istable(L,-1))
+ {
+ lua_pushvalue(L,2);
+ lua_rawget(L,-2); /* stack: t k v mt tset func */
+ if (lua_iscfunction(L,-1))
+ {
+ lua_pushvalue(L,1);
+ lua_pushvalue(L,3);
+ lua_call(L,2,0);
+ return 0;
+ }
+ lua_pop(L,1); /* stack: t k v mt tset */
+ }
+ lua_pop(L,1); /* stack: t k v mt */
+ if (!lua_getmetatable(L,-1)) /* stack: t k v mt mt */
+ lua_pushnil(L);
+ lua_remove(L,-2); /* stack: t k v mt */
+ }
+ }
+ lua_settop(L,3); /* stack: t k v */
+
+ /* then, store as a new field */
+ storeatpeer(L,1);
+ }
+ else if (t== LUA_TTABLE)
+ {
+ module_newindex_event(L);
+ }
+ return 0;
+}
+
+static int do_operator (lua_State* L, const char* op)
+{
+ if (lua_isuserdata(L,1))
+ {
+ /* Try metatables */
+ lua_pushvalue(L,1); /* stack: op1 op2 */
+ while (lua_getmetatable(L,-1))
+ { /* stack: op1 op2 op1 mt */
+ lua_remove(L,-2); /* stack: op1 op2 mt */
+ lua_pushstring(L,op); /* stack: op1 op2 mt key */
+ lua_rawget(L,-2); /* stack: obj key mt func */
+ if (lua_isfunction(L,-1))
+ {
+ lua_pushvalue(L,1);
+ lua_pushvalue(L,2);
+ lua_call(L,2,1);
+ return 1;
+ }
+ lua_settop(L,3);
+ }
+ }
+ if (strcmp(op,".eq")==0)
+ {
+ lua_pushboolean(L,lua_rawequal(L,1,2));
+ return 1;
+ }
+ else
+ {
+ tolua_error(L,"Attempt to perform operation on an invalid operand",NULL);
+ return 0;
+ }
+}
+
+static int class_add_event (lua_State* L)
+{
+ return do_operator(L,".add");
+}
+
+static int class_sub_event (lua_State* L)
+{
+ return do_operator(L,".sub");
+}
+
+static int class_mul_event (lua_State* L)
+{
+ return do_operator(L,".mul");
+}
+
+static int class_div_event (lua_State* L)
+{
+ return do_operator(L,".div");
+}
+
+static int class_lt_event (lua_State* L)
+{
+ return do_operator(L,".lt");
+}
+
+static int class_le_event (lua_State* L)
+{
+ return do_operator(L,".le");
+}
+
+static int class_eq_event (lua_State* L)
+{
+ return do_operator(L,".eq");
+}
+
+static int class_gc_event (lua_State* L)
+{
+ if (lua_type(L,1) == LUA_TUSERDATA)
+ {
+ int top = lua_gettop(L);
+ void* u = *((void**)lua_touserdata(L,1));
+ lua_pushstring(L,"tolua_gc");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* gc */
+ lua_pushlightuserdata(L,u); /* gc u */
+ lua_rawget(L,-2); /* gc func */
+ if (!lua_isnil(L, -1))
+ {
+ /* remove entry from table */
+ lua_pushlightuserdata(L,u);
+ lua_pushnil(L);
+ lua_rawset(L,-4);
+ if (lua_isfunction(L,-1)) {
+ /* call collect function */
+ lua_pushvalue(L,1); /* tolua_gc tolua_gc.u(func) u */
+ lua_call(L,1,0); /* tolua_gc */
+ }
+ else if (lua_isuserdata(L,-1) && *((void**)lua_touserdata(L,-1))==NULL) {
+ /* free object */
+ free(u);
+ tolua_release(L,u); /* unmap from tolua tables */
+ }
+ }
+ lua_settop(L,top);
+ }
+ return 0;
+}
+
+
+
+
+/* Register module events
+ * It expects the metatable on the top of the stack
+*/
+TOLUA_API void tolua_moduleevents (lua_State* L)
+{
+ lua_pushstring(L,"__index");
+ lua_pushcfunction(L,module_index_event);
+ lua_rawset(L,-3);
+ lua_pushstring(L,"__newindex");
+ lua_pushcfunction(L,module_newindex_event);
+ lua_rawset(L,-3);
+}
+
+/* Check if the object on the top has a module metatable
+*/
+TOLUA_API int tolua_ismodulemetatable (lua_State* L)
+{
+ int r = 0;
+ if (lua_getmetatable(L,-1))
+ {
+ lua_pushstring(L,"__index");
+ lua_rawget(L,-2);
+ r = (lua_tocfunction(L,-1) == module_index_event);
+ lua_pop(L,2);
+ }
+ return r;
+}
+
+/* Register class events
+ * It expects the metatable on the top of the stack
+*/
+TOLUA_API void tolua_classevents (lua_State* L)
+{
+ lua_pushstring(L,"__index");
+ lua_pushcfunction(L,class_index_event);
+ lua_rawset(L,-3);
+ lua_pushstring(L,"__newindex");
+ lua_pushcfunction(L,class_newindex_event);
+ lua_rawset(L,-3);
+
+ lua_pushstring(L,"__add");
+ lua_pushcfunction(L,class_add_event);
+ lua_rawset(L,-3);
+ lua_pushstring(L,"__sub");
+ lua_pushcfunction(L,class_sub_event);
+ lua_rawset(L,-3);
+ lua_pushstring(L,"__mul");
+ lua_pushcfunction(L,class_mul_event);
+ lua_rawset(L,-3);
+ lua_pushstring(L,"__div");
+ lua_pushcfunction(L,class_div_event);
+ lua_rawset(L,-3);
+
+ lua_pushstring(L,"__lt");
+ lua_pushcfunction(L,class_lt_event);
+ lua_rawset(L,-3);
+ lua_pushstring(L,"__le");
+ lua_pushcfunction(L,class_le_event);
+ lua_rawset(L,-3);
+ lua_pushstring(L,"__eq");
+ lua_pushcfunction(L,class_eq_event);
+ lua_rawset(L,-3);
+
+ lua_pushstring(L,"__gc");
+ lua_pushcfunction(L,class_gc_event);
+ lua_rawset(L,-3);
+}
+
diff --git a/tolua/src/lib/tolua_event.h b/tolua/src/lib/tolua_event.h
new file mode 100644
index 0000000..a393979
--- /dev/null
+++ b/tolua/src/lib/tolua_event.h
@@ -0,0 +1,24 @@
+/* tolua: event functions
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: tolua_event.h,v 1.3 2009/11/24 16:45:15 fabraham Exp $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#ifndef TOLUA_EVENT_H
+#define TOLUA_EVENT_H
+
+#include "tolua.h"
+
+TOLUA_API void tolua_moduleevents (lua_State* L);
+TOLUA_API int tolua_ismodulemetatable (lua_State* L);
+TOLUA_API void tolua_classevents (lua_State* L);
+
+#endif
diff --git a/tolua/src/lib/tolua_is.c b/tolua/src/lib/tolua_is.c
new file mode 100755
index 0000000..c28e01a
--- /dev/null
+++ b/tolua/src/lib/tolua_is.c
@@ -0,0 +1,567 @@
+/* tolua: functions to check types.
+ ** Support code for Lua bindings.
+ ** Written by Waldemar Celes
+ ** TeCGraf/PUC-Rio
+ ** Apr 2003
+ ** $Id: tolua_is.c,v 1.5 2009/11/24 16:45:15 fabraham Exp $
+ */
+
+/* This code is free software; you can redistribute it and/or modify it.
+ ** The software provided hereunder is on an "as is" basis, and
+ ** the author has no obligation to provide maintenance, support, updates,
+ ** enhancements, or modifications.
+ */
+
+#include "tolua.h"
+#include "lauxlib.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/* Push and returns the corresponding object typename */
+TOLUA_API const char* tolua_typename (lua_State* L, int lo)
+{
+ int tag = lua_type(L,lo);
+ if (tag == LUA_TNONE)
+ lua_pushstring(L,"[no object]");
+ else if (tag != LUA_TUSERDATA && tag != LUA_TTABLE)
+ lua_pushstring(L,lua_typename(L,tag));
+ else if (tag == LUA_TUSERDATA)
+ {
+ if (!lua_getmetatable(L,lo)) {
+ lua_pushstring(L,lua_typename(L,tag));
+ }
+ else
+ {
+ lua_rawget(L,LUA_REGISTRYINDEX);
+ if (!lua_isstring(L,-1))
+ {
+ lua_pop(L,1);
+ lua_pushstring(L,"[undefined]");
+ }
+ }
+ }
+ else /* is table */
+ {
+ lua_pushvalue(L,lo);
+ lua_rawget(L,LUA_REGISTRYINDEX);
+ if (!lua_isstring(L,-1))
+ {
+ lua_pop(L,1);
+ lua_pushstring(L,"table");
+ }
+ else
+ {
+ lua_pushstring(L,"class ");
+ lua_insert(L,-2);
+ lua_concat(L,2);
+ }
+ }
+ return lua_tostring(L,-1);
+}
+
+TOLUA_API void tolua_error (lua_State* L, const char* msg, tolua_Error* err)
+{
+ if (msg[0] == '#')
+ {
+ const char* expected = err->type;
+ const char* provided = tolua_typename(L,err->index);
+ if (msg[1]=='f')
+ {
+ int narg = err->index;
+ if (err->array)
+ luaL_error(L,"%s\n argument #%d is array of '%s'; array of '%s' expected.\n",
+ msg+2,narg,provided,expected);
+ else
+ luaL_error(L,"%s\n argument #%d is '%s'; '%s' expected.\n",
+ msg+2,narg,provided,expected);
+ }
+ else if (msg[1]=='v')
+ {
+ if (err->array)
+ luaL_error(L,"%s\n value is array of '%s'; array of '%s' expected.\n",
+ msg+2,provided,expected);
+ else
+ luaL_error(L,"%s\n value is '%s'; '%s' expected.\n",
+ msg+2,provided,expected);
+ }
+ }
+ else
+ luaL_error(L,msg);
+}
+
+/* the equivalent of lua_is* for usertable */
+static int lua_isusertable (lua_State* L, int lo, const char* type)
+{
+ int r = 0;
+ if (lo < 0) lo = lua_gettop(L)+lo+1;
+ lua_pushvalue(L,lo);
+ lua_rawget(L,LUA_REGISTRYINDEX); /* get registry[t] */
+ if (lua_isstring(L,-1))
+ {
+ r = strcmp(lua_tostring(L,-1),type)==0;
+ if (!r)
+ {
+ /* try const */
+ lua_pushstring(L,"const ");
+ lua_insert(L,-2);
+ lua_concat(L,2);
+ r = lua_isstring(L,-1) && strcmp(lua_tostring(L,-1),type)==0;
+ }
+ }
+ lua_pop(L, 1);
+ return r;
+}
+
+/* the equivalent of lua_is* for usertype */
+static int lua_isusertype (lua_State* L, int lo, const char* type)
+{
+ if (lua_isuserdata(L,lo))
+ {
+ /* check if it is of the same type */
+ int r;
+ const char *tn;
+ if (lua_getmetatable(L,lo)) /* if metatable? */
+ {
+ lua_rawget(L,LUA_REGISTRYINDEX); /* get registry[mt] */
+ tn = lua_tostring(L,-1);
+ r = tn && (strcmp(tn,type) == 0);
+ lua_pop(L, 1);
+ if (r)
+ return 1;
+ else
+ {
+ /* check if it is a specialized class */
+ lua_pushstring(L,"tolua_super");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* get super */
+ lua_getmetatable(L,lo);
+ lua_rawget(L,-2); /* get super[mt] */
+ if (lua_istable(L,-1))
+ {
+ int b;
+ lua_pushstring(L,type);
+ lua_rawget(L,-2); /* get super[mt][type] */
+ b = lua_toboolean(L,-1);
+ lua_pop(L,3);
+ if (b)
+ return 1;
+ }
+ }
+ }
+ }
+ return 0;
+}
+
+TOLUA_API int tolua_isnoobj (lua_State* L, int lo, tolua_Error* err)
+{
+ if (lua_gettop(L)<abs(lo))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = NULL;
+ return 0;
+}
+TOLUA_API int tolua_isvalue (lua_State* L, int lo, int def, tolua_Error* err)
+{
+ if (def || abs(lo)<=lua_gettop(L)) /* any valid index */
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = "value";
+ return 0;
+}
+
+TOLUA_API int tolua_isboolean (lua_State* L, int lo, int def, tolua_Error* err)
+{
+ if (def && lua_gettop(L)<abs(lo))
+ return 1;
+ if (lua_isnil(L,lo) || lua_isboolean(L,lo))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = "boolean";
+ return 0;
+}
+
+TOLUA_API int tolua_isnumber (lua_State* L, int lo, int def, tolua_Error* err)
+{
+ if (def && lua_gettop(L)<abs(lo))
+ return 1;
+ if (lua_isnumber(L,lo))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = "number";
+ return 0;
+}
+
+TOLUA_API int tolua_isstring (lua_State* L, int lo, int def, tolua_Error* err)
+{
+ if (def && lua_gettop(L)<abs(lo))
+ return 1;
+ if (lua_isnil(L,lo) || lua_isstring(L,lo))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = "string";
+ return 0;
+}
+
+TOLUA_API int tolua_istable (lua_State* L, int lo, int def, tolua_Error* err)
+{
+ if (def && lua_gettop(L)<abs(lo))
+ return 1;
+ if (lua_istable(L,lo))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = "table";
+ return 0;
+}
+
+TOLUA_API int tolua_isusertable (lua_State* L, int lo, const char* type, int def, tolua_Error* err)
+{
+ if (def && lua_gettop(L)<abs(lo))
+ return 1;
+ if (lua_isusertable(L,lo,type))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = type;
+ return 0;
+}
+
+TOLUA_API int tolua_isfunction (lua_State* L, int lo, int def, tolua_Error* err)
+{
+ if (def && lua_gettop(L)<abs(lo))
+ return 1;
+ if (lua_isfunction(L,lo))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = "function";
+ return 0;
+}
+
+TOLUA_API int tolua_isuserdata (lua_State* L, int lo, int def, tolua_Error* err)
+{
+ if (def && lua_gettop(L)<abs(lo))
+ return 1;
+ if (lua_isnil(L,lo) || lua_isuserdata(L,lo))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = "userdata";
+ return 0;
+}
+
+TOLUA_API int tolua_isusertype (lua_State* L, int lo, const char* type, int def, tolua_Error* err)
+{
+ if (def && lua_gettop(L)<abs(lo))
+ return 1;
+ if (lua_isnil(L,lo) || lua_isusertype(L,lo,type))
+ return 1;
+ err->index = lo;
+ err->array = 0;
+ err->type = type;
+ return 0;
+}
+
+TOLUA_API int tolua_isvaluearray
+(lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+ if (!tolua_istable(L,lo,def,err))
+ return 0;
+ else
+ return 1;
+}
+
+TOLUA_API int tolua_isbooleanarray
+(lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+ if (!tolua_istable(L,lo,def,err))
+ return 0;
+ else
+ {
+ int i;
+ for (i=1; i<=dim; ++i)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isboolean(L,-1)) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "boolean";
+ return 0;
+ }
+ lua_pop(L,1);
+ }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isnumberarray
+(lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+ if (!tolua_istable(L,lo,def,err))
+ return 0;
+ else
+ {
+ int i;
+ for (i=1; i<=dim; ++i)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!lua_isnumber(L,-1) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "number";
+ return 0;
+ }
+ lua_pop(L,1);
+ }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isstringarray
+(lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+ if (!tolua_istable(L,lo,def,err))
+ return 0;
+ else
+ {
+ int i;
+ for (i=1; i<=dim; ++i)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isstring(L,-1)) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "string";
+ return 0;
+ }
+ lua_pop(L,1);
+ }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_istablearray
+(lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+ if (!tolua_istable(L,lo,def,err))
+ return 0;
+ else
+ {
+ int i;
+ for (i=1; i<=dim; ++i)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (! lua_istable(L,-1) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "table";
+ return 0;
+ }
+ lua_pop(L,1);
+ }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isuserdataarray
+(lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+ if (!tolua_istable(L,lo,def,err))
+ return 0;
+ else
+ {
+ int i;
+ for (i=1; i<=dim; ++i)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "userdata";
+ return 0;
+ }
+ lua_pop(L,1);
+ }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isusertypearray
+(lua_State* L, int lo, const char* type, int dim, int def, tolua_Error* err)
+{
+ if (!tolua_istable(L,lo,def,err))
+ return 0;
+ else
+ {
+ int i;
+ for (i=1; i<=dim; ++i)
+ {
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->type = type;
+ err->array = 1;
+ return 0;
+ }
+ lua_pop(L,1);
+ }
+ }
+ return 1;
+}
+
+#if 0
+int tolua_isbooleanfield
+(lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isboolean(L,-1)) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "boolean";
+ return 0;
+ }
+ lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isnumberfield
+(lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!lua_isnumber(L,-1) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "number";
+ return 0;
+ }
+ lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isstringfield
+(lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isstring(L,-1)) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "string";
+ return 0;
+ }
+ lua_pop(L,1);
+ return 1;
+}
+
+int tolua_istablefield
+(lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+ lua_pushnumber(L,i+1);
+ lua_gettable(L,lo);
+ if (! lua_istable(L,-1) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "table";
+ return 0;
+ }
+ lua_pop(L,1);
+}
+
+int tolua_isusertablefield
+(lua_State* L, int lo, const char* type, int i, int def, tolua_Error* err)
+{
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (! lua_isusertable(L,-1,type) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = type;
+ return 0;
+ }
+ lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isuserdatafield
+(lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->array = 1;
+ err->type = "userdata";
+ return 0;
+ }
+ lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isusertypefield
+(lua_State* L, int lo, const char* type, int i, int def, tolua_Error* err)
+{
+ lua_pushnumber(L,i);
+ lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isusertype(L,-1,type)) &&
+ !(def && lua_isnil(L,-1))
+ )
+ {
+ err->index = lo;
+ err->type = type;
+ err->array = 1;
+ return 0;
+ }
+ lua_pop(L,1);
+ return 1;
+}
+
+#endif
diff --git a/tolua/src/lib/tolua_map.c b/tolua/src/lib/tolua_map.c
new file mode 100644
index 0000000..c732406
--- /dev/null
+++ b/tolua/src/lib/tolua_map.c
@@ -0,0 +1,529 @@
+/* tolua: functions to map features
+ ** Support code for Lua bindings.
+ ** Written by Waldemar Celes
+ ** TeCGraf/PUC-Rio
+ ** Apr 2003
+ ** $Id: tolua_map.c,v 1.10 2011/01/13 13:43:46 fabraham Exp $
+ */
+
+/* This code is free software; you can redistribute it and/or modify it.
+ ** The software provided hereunder is on an "as is" basis, and
+ ** the author has no obligation to provide maintenance, support, updates,
+ ** enhancements, or modifications.
+ */
+
+#include "tolua.h"
+#include "tolua_event.h"
+#include "lauxlib.h"
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+static char toluaname[128] = "tolua.";
+static const char* TOLUANAME (const char* n)
+{
+ sprintf(&toluaname[6],"%.120s",n);
+ return toluaname;
+}
+
+/* Create metatable
+ * Create and register new metatable
+ */
+void tolua_newmetatable (lua_State* L, const char* name)
+{
+ if (luaL_newmetatable(L,TOLUANAME(name)))
+ {
+ lua_pushvalue(L,-1);
+ lua_pushstring(L,name);
+ lua_rawset(L,LUA_REGISTRYINDEX);
+ }
+
+ /* set meta events */
+ tolua_classevents(L);
+ lua_pop(L,1);
+}
+
+/* Get metatable
+ * Access already created metatable
+ */
+void tolua_getmetatable (lua_State* L, const char* name)
+{
+ luaL_getmetatable(L,TOLUANAME(name));
+}
+
+/* Map super classes
+ * It sets 'name' as being also a 'base', mapping all super classes of 'base' in 'name'
+ */
+static void mapsuper (lua_State* L, const char* name, const char* base)
+{
+ /* push registry.super */
+ lua_pushstring(L,"tolua_super");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* stack: super */
+ tolua_getmetatable(L,name); /* stack: super mt */
+ lua_rawget(L,-2); /* stack: super table */
+ if (lua_isnil(L,-1))
+ {
+ /* create table */
+ lua_pop(L,1);
+ lua_newtable(L); /* stack: super table */
+ tolua_getmetatable(L,name); /* stack: super table mt */
+ lua_pushvalue(L,-2); /* stack: super table mt table */
+ lua_rawset(L,-4); /* stack: super table */
+ }
+
+ /* set base as super class */
+ lua_pushstring(L,base);
+ lua_pushboolean(L,1);
+ lua_rawset(L,-3); /* stack: super table */
+
+ /* set all super class of base as super class of name */
+ tolua_getmetatable(L,base); /* stack: super table base_mt */
+ lua_rawget(L,-3); /* stack: super table base_table */
+ if (lua_istable(L,-1))
+ {
+ /* traverse base table */
+ lua_pushnil(L); /* first key */
+ while (lua_next(L,-2) != 0)
+ {
+ /* stack: ... base_table key value */
+ lua_pushvalue(L,-2); /* stack: ... base_table key value key */
+ lua_insert(L,-2); /* stack: ... base_table key key value */
+ lua_rawset(L,-5); /* stack: ... base_table key */
+ }
+ }
+ lua_pop(L,3); /* stack: <empty> */
+}
+
+
+/* Map inheritance
+ * It sets 'name' as derived from 'base' by setting 'base' as metatable of 'name'
+ */
+static void mapinheritance (lua_State* L, const char* name, const char* base)
+{
+ /* set metatable inheritance */
+ tolua_getmetatable(L,name);
+ if (base && *base)
+ tolua_getmetatable(L,base);
+ else
+ tolua_getmetatable(L,"tolua_commonclass");
+ lua_setmetatable(L,-2);
+ lua_pop(L,1);
+}
+
+/* Object type
+ */
+static int tolua_bnd_type (lua_State* L)
+{
+ tolua_typename(L,lua_gettop(L));
+ return 1;
+}
+
+/* Take ownership
+ */
+int tolua_bnd_takeownership (lua_State* L)
+{
+ lua_CFunction func = 0;
+ if (lua_isuserdata(L,1))
+ {
+ if (lua_getmetatable(L,1)) /* if metatable? */
+ {
+ void* u;
+ lua_pushstring(L,".collector");
+ lua_rawget(L,-2);
+ func = lua_iscfunction(L,-1) ? lua_tocfunction(L,-1) : NULL;
+ lua_pop(L,2);
+ u = *((void**)lua_touserdata(L,1));
+ tolua_clone(L,u,func);
+ }
+ }
+ lua_pushboolean(L,func!=0);
+ return 1;
+}
+
+/* Release ownership
+ */
+static int tolua_bnd_releaseownership (lua_State* L)
+{
+ int done = 0;
+ if (lua_isuserdata(L,1))
+ {
+ void* u = *((void**)lua_touserdata(L,1));
+ lua_pushstring(L,"tolua_gc");
+ lua_rawget(L,LUA_REGISTRYINDEX);
+ lua_pushlightuserdata(L,u);
+ lua_rawget(L,-2);
+ lua_pushlightuserdata(L,u);
+ lua_pushnil(L);
+ lua_rawset(L,-4);
+ done = 1;
+ }
+ lua_pushboolean(L,done!=0);
+ return 1;
+}
+
+/* Type casting
+ */
+static int tolua_bnd_cast (lua_State* L)
+{
+ void* v = tolua_tousertype(L,1,NULL);
+ const char* s = tolua_tostring(L,2,NULL);
+ if (!v)
+ lua_pushnil(L);
+ else if (v && s) {
+ tolua_getmetatable(L,s); /* stack: ubox[u] super super[mt] flag mt */
+ if (lua_isnil(L,-1)) {
+ tolua_error(L,"Unknown 'type' for 'tolua.cast' function",NULL);
+ }
+ tolua_pushusertype(L,v,s);
+ }
+ else {
+ tolua_error(L,"Invalid arguments for 'tolua.cast' function",NULL);
+ }
+ return 1;
+}
+
+/* Release
+** Function to be called by a Lua code that uses a function to explicitly
+** release a mapped object. This function is automatically called by all
+** destructors bound by tolua and by all collected objects.
+*/
+static int tolua_bnd_release (lua_State* L)
+{
+ void* value = tolua_tousertype(L,1,NULL);
+ if (value)
+ tolua_release(L,value);
+ return 1;
+}
+
+static void tolua_push_globals_table (lua_State* L)
+{
+ lua_pushvalue(L,LUA_REGISTRYINDEX); /* registry */
+ lua_pushnumber(L,LUA_RIDX_GLOBALS); /* registry globalsindex */
+ lua_rawget(L, -2); /* registry registry[globalsindex] */
+ lua_remove(L, -2); /* registry[globalsindex] */
+}
+
+TOLUA_API void tolua_open (lua_State* L)
+{
+ int top = lua_gettop(L);
+ lua_pushstring(L,"tolua_opened");
+ lua_rawget(L,LUA_REGISTRYINDEX);
+ if (!lua_isboolean(L,-1))
+ {
+ lua_pushstring(L,"tolua_opened"); lua_pushboolean(L,1); lua_rawset(L,LUA_REGISTRYINDEX);
+ lua_pushstring(L,"tolua_ubox");
+ lua_newtable(L);
+ lua_pushvalue(L, -1); /* metatable: for weak table */
+ lua_pushstring(L, "__mode");
+ lua_pushstring(L, "v");
+ lua_rawset(L, -3);
+ lua_setmetatable(L, -2);
+ lua_rawset(L,LUA_REGISTRYINDEX);
+ lua_pushstring(L,"tolua_peer");
+ lua_newtable(L);
+ lua_pushvalue(L, -1); /* metatable: for weak table */
+ lua_pushstring(L, "__mode");
+ lua_pushstring(L, "k");
+ lua_rawset(L, -3);
+ lua_setmetatable(L, -2);
+ lua_rawset(L,LUA_REGISTRYINDEX);
+ lua_pushstring(L,"tolua_super"); lua_newtable(L); lua_rawset(L,LUA_REGISTRYINDEX);
+ lua_pushstring(L,"tolua_gc"); lua_newtable(L); lua_rawset(L,LUA_REGISTRYINDEX);
+
+ tolua_newmetatable(L,"tolua_commonclass");
+
+ tolua_module(L,NULL,0);
+ tolua_beginmodule(L,NULL);
+ tolua_module(L,"tolua",0);
+ tolua_beginmodule(L,"tolua");
+ tolua_function(L,"type",tolua_bnd_type);
+ tolua_function(L,"takeownership",tolua_bnd_takeownership);
+ tolua_function(L,"releaseownership",tolua_bnd_releaseownership);
+ tolua_function(L,"cast",tolua_bnd_cast);
+ tolua_function(L,"release",tolua_bnd_release);
+ tolua_endmodule(L);
+ tolua_endmodule(L);
+ }
+ lua_settop(L,top);
+}
+
+/* Copy a C object
+ */
+TOLUA_API void* tolua_copy (lua_State* L, void* value, unsigned int size)
+{
+ void* clone = (void*)malloc(size);
+ if (clone)
+ memcpy(clone,value,size);
+ else
+ tolua_error(L,"insuficient memory",NULL);
+ return clone;
+}
+
+
+/* Release userdata from tolua
+ */
+TOLUA_API void tolua_release (lua_State* L, void* value)
+{
+ void** p;
+ lua_pushstring(L,"tolua_ubox");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* stack: ubox */
+ lua_pushlightuserdata(L,value); /* stack: ubox u */
+ /* set userdata pointer to NULL: this pointer might be reused by C/C++ */
+ lua_rawget(L,-2); /* stack: ubox ud */
+ p = (void**)lua_touserdata(L,-1);
+ if (p) *p = NULL;
+ /* fixed bug: thanks to Ulrik Sverdrup -- it was 1 instead of -1 */
+ lua_pop(L,1); /* stack: ubox */
+ /* remove value from ubox */
+ lua_pushlightuserdata(L,value); /* stack: ubox u */
+ lua_pushnil(L);
+ lua_rawset(L,-3);
+ lua_pop(L,1);
+}
+
+/* Do clone
+ */
+TOLUA_API void* tolua_clone (lua_State* L, void* value, lua_CFunction func)
+{
+ lua_pushstring(L,"tolua_gc");
+ lua_rawget(L,LUA_REGISTRYINDEX);
+ lua_pushlightuserdata(L,value);
+ lua_pushcfunction(L,func);
+ lua_rawset(L,-3);
+ lua_pop(L,1);
+ return value;
+}
+
+/* Register a usertype
+ * It creates the correspoding metatable in the registry, for both 'type' and 'const type'.
+ * It maps 'const type' as being also a 'type'
+ */
+TOLUA_API void tolua_usertype (lua_State* L, const char* type)
+{
+ char ctype[128] = "const ";
+ strncat(ctype,type,120);
+
+ tolua_newmetatable(L,ctype); /* create both metatables */
+ tolua_newmetatable(L,type);
+
+ mapsuper(L,type,ctype); /* 'type' is also a 'const type' */
+}
+
+
+/* Begin module
+ * It pushes the module (or class) table on the stack
+ */
+TOLUA_API void tolua_beginmodule (lua_State* L, const char* name)
+{
+ if (name)
+ {
+ lua_pushstring(L,name);
+ lua_rawget(L,-2);
+ }
+ else
+ tolua_push_globals_table(L);
+}
+
+/* End module
+ * It pops the module (or class) from the stack
+ */
+TOLUA_API void tolua_endmodule (lua_State* L)
+{
+ lua_pop(L,1);
+}
+
+/* Map module
+ * It creates a new module
+ */
+#if 1
+TOLUA_API void tolua_module (lua_State* L, const char* name, int hasvar)
+{
+ if (name)
+ {
+ /* tolua module */
+ lua_pushstring(L,name);
+ lua_rawget(L,-2);
+ if (!lua_istable(L,-1)) /* check if module already exists */
+ {
+ lua_pop(L,1);
+ lua_newtable(L);
+ lua_pushstring(L,name);
+ lua_pushvalue(L,-2);
+ lua_rawset(L,-4); /* assing module into module */
+ }
+ }
+ else
+ tolua_push_globals_table(L);
+ if (hasvar)
+ {
+ if (!tolua_ismodulemetatable(L)) /* check if it already has a module metatable */
+ {
+ /* create metatable to get/set C/C++ variable */
+ lua_newtable(L);
+ tolua_moduleevents(L);
+ if (lua_getmetatable(L,-2))
+ lua_setmetatable(L,-2); /* set old metatable as metatable of metatable */
+ lua_setmetatable(L,-2);
+ }
+ }
+ lua_pop(L,1); /* pop module */
+}
+#else
+TOLUA_API void tolua_module (lua_State* L, const char* name, int hasvar)
+{
+ if (name)
+ {
+ /* tolua module */
+ lua_pushstring(L,name);
+ lua_newtable(L);
+ }
+ else
+ tolua_push_globals_table(L);
+ if (hasvar)
+ {
+ /* create metatable to get/set C/C++ variable */
+ lua_newtable(L);
+ tolua_moduleevents(L);
+ if (lua_getmetatable(L,-2))
+ lua_setmetatable(L,-2); /* set old metatable as metatable of metatable */
+ lua_setmetatable(L,-2);
+ }
+ if (name)
+ lua_rawset(L,-3); /* assing module into module */
+ else
+ lua_pop(L,1); /* pop global table */
+}
+#endif
+
+/* Map C class
+ * It maps a C class, setting the appropriate inheritance and super classes.
+ */
+TOLUA_API void tolua_cclass (lua_State* L, const char* lname, const char* name, const char* base, lua_CFunction col)
+{
+ char cname[128] = "const ";
+ char cbase[128] = "const ";
+ strncat(cname,name,120);
+ strncat(cbase,base,120);
+
+ mapinheritance(L,name,base);
+ mapinheritance(L,cname,name);
+
+ mapsuper(L,cname,cbase);
+ mapsuper(L,name,base);
+
+ lua_pushstring(L,lname);
+ tolua_getmetatable(L,name);
+ lua_pushstring(L,".collector");
+ lua_pushcfunction(L,col);
+ lua_rawset(L,-3); /* store collector function into metatable */
+ lua_rawset(L,-3); /* assign class metatable to module */
+}
+
+/* Map function
+ * It assigns a function into the current module (or class)
+ */
+TOLUA_API void tolua_function (lua_State* L, const char* name, lua_CFunction func)
+{
+ lua_pushstring(L,name);
+ lua_pushcfunction(L,func);
+ lua_rawset(L,-3);
+}
+
+/* Map constant number
+ * It assigns a constant number into the current module (or class)
+ */
+TOLUA_API void tolua_constant (lua_State* L, const char* name, double value)
+{
+ lua_pushstring(L,name);
+ tolua_pushnumber(L,value);
+ lua_rawset(L,-3);
+}
+
+
+/* Map variable
+ * It assigns a variable into the current module (or class)
+ */
+TOLUA_API void tolua_variable (lua_State* L, const char* name, lua_CFunction get, lua_CFunction set)
+{
+ /* get func */
+ lua_pushstring(L,".get");
+ lua_rawget(L,-2);
+ if (!lua_istable(L,-1))
+ {
+ /* create .get table, leaving it at the top */
+ lua_pop(L,1);
+ lua_newtable(L);
+ lua_pushstring(L,".get");
+ lua_pushvalue(L,-2);
+ lua_rawset(L,-4);
+ }
+ lua_pushstring(L,name);
+ lua_pushcfunction(L,get);
+ lua_rawset(L,-3); /* store variable */
+ lua_pop(L,1); /* pop .get table */
+
+ /* set func */
+ if (set)
+ {
+ lua_pushstring(L,".set");
+ lua_rawget(L,-2);
+ if (!lua_istable(L,-1))
+ {
+ /* create .set table, leaving it at the top */
+ lua_pop(L,1);
+ lua_newtable(L);
+ lua_pushstring(L,".set");
+ lua_pushvalue(L,-2);
+ lua_rawset(L,-4);
+ }
+ lua_pushstring(L,name);
+ lua_pushcfunction(L,set);
+ lua_rawset(L,-3); /* store variable */
+ lua_pop(L,1); /* pop .set table */
+ }
+}
+
+/* Access const array
+ * It reports an error when trying to write into a const array
+ */
+static int const_array (lua_State* L)
+{
+ luaL_error(L,"value of const array cannot be changed");
+ return 0;
+}
+
+/* Map an array
+ * It assigns an array into the current module (or class)
+ */
+TOLUA_API void tolua_array (lua_State* L, const char* name, lua_CFunction get, lua_CFunction set)
+{
+ lua_pushstring(L,".get");
+ lua_rawget(L,-2);
+ if (!lua_istable(L,-1))
+ {
+ /* create .get table, leaving it at the top */
+ lua_pop(L,1);
+ lua_newtable(L);
+ lua_pushstring(L,".get");
+ lua_pushvalue(L,-2);
+ lua_rawset(L,-4);
+ }
+ lua_pushstring(L,name);
+
+ lua_newtable(L); /* create array metatable */
+ lua_pushvalue(L,-1);
+ lua_setmetatable(L,-2); /* set the own table as metatable (for modules) */
+ lua_pushstring(L,"__index");
+ lua_pushcfunction(L,get);
+ lua_rawset(L,-3);
+ lua_pushstring(L,"__newindex");
+ lua_pushcfunction(L,set?set:const_array);
+ lua_rawset(L,-3);
+
+ lua_rawset(L,-3); /* store variable */
+ lua_pop(L,1); /* pop .get table */
+}
+
diff --git a/tolua/src/lib/tolua_push.c b/tolua/src/lib/tolua_push.c
new file mode 100755
index 0000000..4413548
--- /dev/null
+++ b/tolua/src/lib/tolua_push.c
@@ -0,0 +1,144 @@
+/* tolua: functions to push C values.
+ ** Support code for Lua bindings.
+ ** Written by Waldemar Celes
+ ** TeCGraf/PUC-Rio
+ ** Apr 2003
+ ** $Id: tolua_push.c,v 1.7 2010/01/22 15:39:29 fabraham Exp $
+ */
+
+/* This code is free software; you can redistribute it and/or modify it.
+ ** The software provided hereunder is on an "as is" basis, and
+ ** the author has no obligation to provide maintenance, support, updates,
+ ** enhancements, or modifications.
+ */
+
+#include "tolua.h"
+#include "lauxlib.h"
+
+#include <stdlib.h>
+
+TOLUA_API void tolua_pushvalue (lua_State* L, int lo)
+{
+ lua_pushvalue(L,lo);
+}
+
+TOLUA_API void tolua_pushboolean (lua_State* L, int value)
+{
+ lua_pushboolean(L,value);
+}
+
+TOLUA_API void tolua_pushnumber (lua_State* L, double value)
+{
+ lua_pushnumber(L,value);
+}
+
+TOLUA_API void tolua_pushstring (lua_State* L, const char* value)
+{
+ if (value == NULL)
+ lua_pushnil(L);
+ else
+ lua_pushstring(L,value);
+}
+
+TOLUA_API void tolua_pushuserdata (lua_State* L, void* value)
+{
+ if (value == NULL)
+ lua_pushnil(L);
+ else
+ lua_pushlightuserdata(L,value);
+}
+
+TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char* type)
+{
+ if (value == NULL)
+ lua_pushnil(L);
+ else
+ {
+ lua_pushstring(L,"tolua_ubox");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* stack: ubox */
+ lua_pushlightuserdata(L,value);
+ lua_rawget(L,-2); /* stack: ubox ubox[u] */
+ if (lua_isnil(L,-1))
+ {
+ /* creating ubox of value */
+ lua_pop(L,1); /* stack: ubox */
+ lua_pushlightuserdata(L,value);
+ *(void**)lua_newuserdata(L,sizeof(void *)) = value; /* stack: ubox u newud */
+ lua_pushvalue(L,-1); /* stack: ubox u newud newud */
+ lua_insert(L,-4); /* stack: newud ubox u newud */
+ lua_rawset(L,-3); /* stack: newud ubox */
+ lua_pop(L,1); /* stack: newud */
+ tolua_getmetatable(L,type); /* stack: newud mt */
+ lua_setmetatable(L,-2); /* stack: newud */
+ }
+ else
+ {
+ /* reusing ubox of value */
+ /* check the need of updating the metatable to a more specialized class */
+ lua_insert(L,-2); /* stack: ubox[u] ubox */
+ lua_pop(L,1); /* stack: ubox[u] */
+ lua_pushstring(L,"tolua_super");
+ lua_rawget(L,LUA_REGISTRYINDEX); /* stack: ubox[u] super */
+ lua_getmetatable(L,-2); /* stack: ubox[u] super mt */
+ lua_rawget(L,-2); /* stack: ubox[u] super super[mt] */
+ if (lua_istable(L,-1))
+ {
+ lua_pushstring(L,type); /* stack: ubox[u] super super[mt] type */
+ lua_rawget(L,-2); /* stack: ubox[u] super super[mt] flag */
+ if (lua_toboolean(L,-1) == 1) /* if true */
+ {
+ lua_pop(L,3); /* stack: ubox[u] */
+ return;
+ }
+ }
+ /* type represents a more specilized type */
+ tolua_getmetatable(L,type); /* stack: ubox[u] super super[mt] flag mt */
+ lua_setmetatable(L,-5); /* stack: ubox[u] super super[mt] flag */
+ lua_pop(L,3); /* stack: ubox[u] */
+ }
+ }
+}
+
+TOLUA_API void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v)
+{
+ lua_pushnumber(L,index);
+ lua_pushvalue(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldboolean (lua_State* L, int lo, int index, int v)
+{
+ lua_pushnumber(L,index);
+ lua_pushboolean(L,v);
+ lua_settable(L,lo);
+}
+
+
+TOLUA_API void tolua_pushfieldnumber (lua_State* L, int lo, int index, double v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushnumber(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldstring (lua_State* L, int lo, int index, const char* v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushstring(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushuserdata(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, const char* type)
+{
+ lua_pushnumber(L,index);
+ tolua_pushusertype(L,v,type);
+ lua_settable(L,lo);
+}
+
diff --git a/tolua/src/lib/tolua_to.c b/tolua/src/lib/tolua_to.c
new file mode 100755
index 0000000..e036037
--- /dev/null
+++ b/tolua/src/lib/tolua_to.c
@@ -0,0 +1,125 @@
+/* tolua: funcitons to convert to C types
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: tolua_to.c,v 1.5 2009/11/24 16:45:15 fabraham Exp $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include "tolua.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+TOLUA_API double tolua_tonumber (lua_State* L, int narg, double def)
+{
+ return lua_gettop(L)<abs(narg) ? def : lua_tonumber(L,narg);
+}
+
+TOLUA_API const char* tolua_tostring (lua_State* L, int narg, const char* def)
+{
+ return lua_gettop(L)<abs(narg) ? def : lua_tostring(L,narg);
+}
+
+TOLUA_API void* tolua_touserdata (lua_State* L, int narg, void* def)
+{
+ return lua_gettop(L)<abs(narg) ? def : lua_touserdata(L,narg);
+}
+
+TOLUA_API void* tolua_tousertype (lua_State* L, int narg, void* def)
+{
+ if (lua_gettop(L)<abs(narg))
+ return def;
+ else
+ {
+ void* u = lua_touserdata(L,narg);
+ return (u==NULL) ? NULL : *((void**)u); /* nil represents NULL */
+ }
+}
+
+TOLUA_API int tolua_tovalue (lua_State* L, int narg, int def)
+{
+ return lua_gettop(L)<abs(narg) ? def : narg;
+}
+
+TOLUA_API int tolua_toboolean (lua_State* L, int narg, int def)
+{
+ return lua_gettop(L)<abs(narg) ? def : lua_toboolean(L,narg);
+}
+
+TOLUA_API double tolua_tofieldnumber (lua_State* L, int lo, int index, double def)
+{
+ double v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lua_tonumber(L,-1);
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API int tolua_tofieldboolean (lua_State* L, int lo, int index, int def)
+{
+ int v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lua_toboolean(L,-1);
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API const char* tolua_tofieldstring
+(lua_State* L, int lo, int index, const char* def)
+{
+ const char* v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lua_tostring(L,-1);
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API void* tolua_tofielduserdata (lua_State* L, int lo, int index, void* def)
+{
+ void* v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lua_touserdata(L,-1);
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API void* tolua_tofieldusertype (lua_State* L, int lo, int index, void* def)
+{
+ void* v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : (*(void **)(lua_touserdata(L, -1)));
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API int tolua_tofieldvalue (lua_State* L, int lo, int index, int def)
+{
+ int v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lo;
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API int tolua_getfieldboolean (lua_State* L, int lo, int index, int def)
+{
+ int v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? 0 : lua_toboolean(L,-1);
+ lua_pop(L,1);
+ return v;
+}
diff --git a/tolua/src/tests/.DS_Store b/tolua/src/tests/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/tolua/src/tests/.DS_Store
Binary files differ
diff --git a/tolua/src/tests/._.DS_Store b/tolua/src/tests/._.DS_Store
new file mode 100644
index 0000000..321346b
--- /dev/null
+++ b/tolua/src/tests/._.DS_Store
Binary files differ
diff --git a/tolua/src/tests/._Makefile b/tolua/src/tests/._Makefile
new file mode 100644
index 0000000..7542593
--- /dev/null
+++ b/tolua/src/tests/._Makefile
Binary files differ
diff --git a/tolua/src/tests/.tenum.c.swp b/tolua/src/tests/.tenum.c.swp
new file mode 100644
index 0000000..613d29a
--- /dev/null
+++ b/tolua/src/tests/.tenum.c.swp
Binary files differ
diff --git a/tolua/src/tests/Makefile b/tolua/src/tests/Makefile
new file mode 100644
index 0000000..9fb6bb1
--- /dev/null
+++ b/tolua/src/tests/Makefile
@@ -0,0 +1,84 @@
+# makefile for tolua executable
+
+TOLUA=../..
+TOLUAEXE = tolua
+
+include $(TOLUA)/config
+
+LIBS = -ltolua -llua
+
+EXE = tmodule tnamespace tclass tinheritance tconstant tvariable tfunction tarray tdirective tenum tvararg
+
+all: $(EXE)
+ ./tmodule; ./tnamespace; ./tclass; ./tinheritance; ./tconstant; ./tvariable; ./tfunction; ./tarray; ./tdirective; ./tfunction; ./tenum; ./tvararg
+
+tarray: tarray.o tarraybind.o
+ $(CC) $(CFLAGS) -o $@ tarray.o tarraybind.o $(TLIB) $(LIB) $(LIBS)
+tarraybind.c: tarray.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tvariable: tvariable.o tvariablebind.o
+ $(CC) $(CFLAGS) -o $@ tvariable.o tvariablebind.o $(TLIB) $(LIB) $(LIBS)
+tvariablebind.c: tvariable.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tmodule: tmodule.o tmodulebind.o
+ $(CC) $(CFLAGS) -o $@ tmodule.o tmodulebind.o $(TLIB) $(LIB) $(LIBS)
+tmodulebind.c: tmodule.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tnamespace: tnamespace.o tnamespacebind.o
+ $(CCPP) $(CFLAGS) -o $@ tnamespace.o tnamespacebind.o $(TLIB) $(LIB) $(LIBS)
+tnamespacebind.cpp: tnamespace.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tdirective: tdirectivebind.o
+ $(CC) $(CFLAGS) -o $@ tdirectivebind.o $(TLIB) $(LIB) $(LIBS)
+tdirectivebind.c: tdirective.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tfunction: tfunction.o tfunctionbind.o
+ $(CCPP) $(CPPFLAGS) -o $@ tfunction.o tfunctionbind.o $(TLIB) $(LIB) $(LIBS)
+tfunctionbind.cpp: tfunction.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tconstant: tconstant.o tconstantbind.o
+ $(CCPP) $(CPPFLAGS) -o $@ tconstant.o tconstantbind.o $(TLIB) $(LIB) $(LIBS)
+tconstantbind.cpp: tconstant.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tclass: tclass.o tclassbind.o
+ $(CCPP) $(CPPFLAGS) -o $@ tclass.o tclassbind.o $(TLIB) $(LIB) $(LIBS)
+tclassbind.cpp: tclass.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tinheritance: tinheritance.o tinheritancebind.o
+ $(CCPP) $(CPPFLAGS) -o $@ tinheritance.o tinheritancebind.o $(TLIB) $(LIB) $(LIBS)
+tinheritancebind.cpp: tinheritance.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tenum: tenum.o tenumbind.o
+ $(CC) $(CPPFLAGS) -o $@ tenum.o tenumbind.o $(TLIB) $(LIB) $(LIBS)
+tenumbind.c: tenum.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+tvararg: tvararg.o tvarargbind.o
+ $(CCPP) $(CPPFLAGS) -o $@ tvararg.o tvarargbind.o $(TLIB) $(LIB) $(LIBS)
+tvarargbind.cpp: tvararg.pkg
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+.cpp.o:
+ $(CCPP) -c $(CPPFLAGS) -o $@ $<
+
+.pkg.cpp:
+ $(TOLUA)/bin/$(TOLUAEXE) -o $@ $<
+
+clean:
+ rm -f t*bind.*
+ rm -f *.o
+
+klean:
+ rm -f $(EXE)
+
+
+
diff --git a/tolua/src/tests/myassert.lua b/tolua/src/tests/myassert.lua
new file mode 100644
index 0000000..a4d5ebd
--- /dev/null
+++ b/tolua/src/tests/myassert.lua
@@ -0,0 +1,6 @@
+function assert (status,msg)
+ if not status then
+ print("ERROR: " .. (msg or "assertion failed")) error()
+ end
+end
+
diff --git a/tolua/src/tests/t.pkg b/tolua/src/tests/t.pkg
new file mode 100644
index 0000000..a8d2b02
--- /dev/null
+++ b/tolua/src/tests/t.pkg
@@ -0,0 +1,3 @@
+$typedef T* M;
+
+M* f ();
diff --git a/tolua/src/tests/tarray.c b/tolua/src/tests/tarray.c
new file mode 100644
index 0000000..91580c1
--- /dev/null
+++ b/tolua/src/tests/tarray.c
@@ -0,0 +1,45 @@
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include "tarray.h"
+
+
+int a[10] = {1,2,3,4,5,6,7,8,9,10};
+Point p[10] = {{0,1},{1,2},{2,3},{3,4},{4,5},{5,6},{6,7},{7,8},{8,9},{9,10}};
+Point* pp[10];
+
+int ma[10];
+Point mp[10];
+Point* mpp[10];
+
+Array array;
+Array* parray = &array;
+
+int main (void)
+{
+ int tolua_tarray_open (lua_State*);
+ lua_State* L = luaL_newstate();
+ int i;
+
+ for (i=0; i<10; ++i)
+ {
+ pp[i] = &p[i];
+
+ ma[i] = a[i];
+ mp[i] = p[i];
+ mpp[i] = pp[i];
+
+ array.a[i] = a[i];
+ array.p[i] = p[i];
+ array.pp[i] = pp[i];
+ }
+
+ luaL_openlibs(L);
+ tolua_tarray_open(L);
+
+ luaL_dofile(L,"tarray.lua");
+
+ lua_close(L);
+ return 0;
+}
+
diff --git a/tolua/src/tests/tarray.h b/tolua/src/tests/tarray.h
new file mode 100644
index 0000000..6964ef7
--- /dev/null
+++ b/tolua/src/tests/tarray.h
@@ -0,0 +1,28 @@
+
+typedef struct Point Point;
+struct Point
+{
+ float x;
+ float y;
+};
+
+
+extern int a[10];
+extern Point p[10];
+extern Point* pp[10];
+
+
+extern int ma[10];
+extern Point mp[10];
+extern Point* mpp[10];
+
+typedef struct Array Array;
+struct Array
+{
+ int a[10];
+ Point p[10];
+ Point* pp[10];
+};
+
+extern Array array;
+extern Array* parray;
diff --git a/tolua/src/tests/tarray.lua b/tolua/src/tests/tarray.lua
new file mode 100644
index 0000000..1fd3657
--- /dev/null
+++ b/tolua/src/tests/tarray.lua
@@ -0,0 +1,39 @@
+dofile("myassert.lua")
+
+for i=1,10 do
+ assert(a[i]==i)
+end
+
+for i=2,10 do
+ assert(p[i-1].y==p[i].x)
+end
+
+for i=1,10 do
+ assert(M.a[i]==i)
+end
+
+for i=2,10 do
+ assert(M.p[i-1].y==M.p[i].x)
+end
+
+for i=1,10 do
+ assert(pp[i].x==M.p[i].x and p[i].y == M.pp[i].y)
+end
+
+for i=1,10 do
+ assert(array.a[i] == parray.a[i])
+ assert(array.p[i].x == parray.pp[i].x and array.p[i].y == parray.pp[i].y)
+end
+
+for i=1,10 do
+ array.a[i] = a[10-i+1]
+ M.a[i] = 10-i+1
+ assert(array.a[i]==M.a[i])
+end
+
+for i=2,10 do
+ array.p[i] = array.pp[1]
+ assert(array.p[i].x==0 and array.p[i].y==1)
+end
+
+print("Array test OK")
diff --git a/tolua/src/tests/tarray.pkg b/tolua/src/tests/tarray.pkg
new file mode 100644
index 0000000..32859c9
--- /dev/null
+++ b/tolua/src/tests/tarray.pkg
@@ -0,0 +1,29 @@
+$#include "tarray.h"
+
+struct Point
+{
+ float x;
+ float y;
+};
+
+
+extern int a[10];
+extern const Point p[10];
+extern Point* pp[10];
+
+
+module M {
+extern int ma[10]@a;
+extern const Point mp[10]@p;
+extern Point* mpp[10]@pp;
+}
+
+struct Array
+{
+ int a[10];
+ Point p[10];
+ Point* pp[10];
+};
+
+extern Array array;
+extern Array* parray;
diff --git a/tolua/src/tests/tclass.cpp b/tolua/src/tests/tclass.cpp
new file mode 100755
index 0000000..feeba34
--- /dev/null
+++ b/tolua/src/tests/tclass.cpp
@@ -0,0 +1,33 @@
+extern "C" {
+#include "lua.h"
+#include "lualib.h"
+#include "lauxlib.h"
+}
+
+#include "tclass.h"
+
+
+#include <stdlib.h>
+
+Tst_A* Tst_A::last;
+Tst_B* Tst_B::last;
+Tst_C* Tst_C::last;
+
+
+int main ()
+{
+ Tst_B* b = new Tst_B; // instance used in Lua code
+ int tolua_tclass_open (lua_State*);
+
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ tolua_tclass_open(L);
+ if (luaL_dofile(L,"tclass.lua")) {
+ printf("Error: %s\n",lua_tostring(L,-1));
+ }
+ lua_close(L);
+
+ delete b;
+ return 0;
+}
+
diff --git a/tolua/src/tests/tclass.h b/tolua/src/tests/tclass.h
new file mode 100644
index 0000000..d439b08
--- /dev/null
+++ b/tolua/src/tests/tclass.h
@@ -0,0 +1,67 @@
+#include <stdio.h>
+
+class Tst_Dummy
+{
+};
+
+class Tst_A
+{
+public:
+ static Tst_A* last;
+ Tst_A () {last = this;}
+ virtual ~Tst_A() {}
+ virtual const char* a () { return "A"; }
+ class Tst_AA
+ {
+ public:
+ Tst_AA () {}
+ virtual ~Tst_AA () { }
+ const char* aa () { return "AA"; }
+ };
+ class Tst_BB : public Tst_AA
+ {
+ public:
+ Tst_BB () {}
+ virtual ~Tst_BB () {}
+ Tst_AA* Base () { return this; }
+ const char* classname () const {
+ return "Tst_BB";
+ }
+ };
+};
+
+class Tst_B : public Tst_A
+{
+public:
+ static Tst_B* last;
+ Tst_B () {last = this;}
+ virtual ~Tst_B () { }
+ virtual const char* b () { return "B"; }
+};
+
+class Tst_C : public Tst_B
+{
+ int i;
+public:
+ static Tst_C* last;
+ Tst_C (int n) : i(n) {last = this;}
+ virtual ~Tst_C () { printf("deleting C: %d\n",i); }
+ virtual const char* c () { return "C"; }
+};
+
+inline Tst_A::Tst_AA* Tst_create_aa ()
+{
+ return new Tst_A::Tst_AA();
+}
+
+inline bool Tst_is_aa (Tst_A::Tst_AA* obj)
+{
+ return true;
+}
+
+class D // private destructor
+{
+ ~D () {}
+public:
+ D () {}
+};
diff --git a/tolua/src/tests/tclass.lua b/tolua/src/tests/tclass.lua
new file mode 100644
index 0000000..ab6c704
--- /dev/null
+++ b/tolua/src/tests/tclass.lua
@@ -0,0 +1,52 @@
+dofile("myassert.lua")
+
+-- type convertion tests
+assert(tolua.type(A.last) == 'Tst_A') -- first time the object is mapped
+assert(tolua.type(B.last) == 'Tst_B') -- type convertion to specialized type
+assert(tolua.type(A.last) == 'Tst_B') -- no convertion: obj already mapped as B
+
+
+local a = A:new()
+assert(tolua.type(A.last) == 'Tst_A') -- no type convertion: same type
+local b = B:new()
+assert(tolua.type(A.last) == 'Tst_B') -- no convertion: obj already mapped as B
+local c = luaC:new(0)
+assert(tolua.type(A.last) == 'Tst_C') -- no convertion: obj already mapped as C
+assert(tolua.type(luaC.last) == 'Tst_C')
+local aa = A.AA:new()
+local bb = A.BB:new()
+local xx = create_aa()
+
+-- casting test
+local base = bb:Base();
+local derived = tolua.cast(base,"Tst_A::Tst_BB");
+assert(derived:classname()=="Tst_BB")
+
+-- method calling tests
+assert(a:a() == 'A')
+assert(b:a() == 'A')
+assert(b:b() == 'B')
+assert(c:a() == 'A')
+assert(c:b() == 'B')
+assert(c:c() == 'C')
+assert(aa:aa() == 'AA')
+assert(bb:aa() == bb:Base():aa())
+assert(xx:aa() == 'AA')
+assert(is_aa(bb) == true)
+
+-- test ownershipping handling
+-- should delete objects: 6 7 8 9 10 (it may vary!)
+remark = [[
+local set = {}
+for i=1,10 do
+ local c = luaC:new(i)
+ tolua.takeownership(c)
+ set[i] = c
+end
+
+for i=1,5 do
+ tolua.releaseownership(set[i])
+end
+--]]
+
+print("Class test OK")
diff --git a/tolua/src/tests/tclass.pkg b/tolua/src/tests/tclass.pkg
new file mode 100644
index 0000000..485253f
--- /dev/null
+++ b/tolua/src/tests/tclass.pkg
@@ -0,0 +1,50 @@
+$#include "tclass.h"
+
+$renaming ^Tst_ @
+
+class Tst_Dummy;
+
+class Tst_A
+{
+ static Tst_A* last;
+ Tst_A ();
+ virtual const char* a ();
+ class Tst_AA
+ {
+ Tst_AA () {}
+ ~Tst_AA () {}
+ const char* aa () { return "AA"; }
+ };
+ class Tst_BB : public Tst_AA
+ {
+ Tst_BB () {}
+ ~Tst_BB () {}
+ Tst_AA* Base () { return this; }
+ const char* classname () const {
+ return "Tst_BB";
+ }
+ };
+};
+
+class Tst_B : public Tst_A
+{
+ static Tst_B* last;
+ Tst_B ();
+ virtual const char* b ();
+};
+
+class Tst_C@luaC : public Tst_B
+{
+ static Tst_C* last;
+ Tst_C (int n);
+ ~Tst_C ();
+ virtual const char* c ();
+};
+
+class D // private destructor
+{
+ D () {}
+};
+
+Tst_A::Tst_AA* Tst_create_aa ();
+bool Tst_is_aa (Tst_A::Tst_AA* obj);
diff --git a/tolua/src/tests/tconstant.cpp b/tolua/src/tests/tconstant.cpp
new file mode 100644
index 0000000..fa85882
--- /dev/null
+++ b/tolua/src/tests/tconstant.cpp
@@ -0,0 +1,22 @@
+extern "C"
+{
+#include "lualib.h"
+#include "lauxlib.h"
+}
+
+#include "tconstant.h"
+
+
+int main (void)
+{
+ int tolua_tconstant_open (lua_State*);
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ tolua_tconstant_open(L);
+
+ luaL_dofile(L,"tconstant.lua");
+
+ lua_close(L);
+ return 0;
+}
+
diff --git a/tolua/src/tests/tconstant.h b/tolua/src/tests/tconstant.h
new file mode 100644
index 0000000..917ad0a
--- /dev/null
+++ b/tolua/src/tests/tconstant.h
@@ -0,0 +1,29 @@
+#define FIRST 1
+#define SECOND 2
+
+enum {
+ ONE = 1,
+ TWO = 2
+};
+
+#define M_FIRST 1
+#define M_SECOND 2
+
+enum {
+ M_ONE = 1,
+ M_TWO = 2
+};
+
+class A {
+public:
+
+ #define FIRST 1
+ #define SECOND 2
+
+ enum {
+ ONE = 1,
+ TWO = 2
+ };
+};
+
+
diff --git a/tolua/src/tests/tconstant.lua b/tolua/src/tests/tconstant.lua
new file mode 100644
index 0000000..4f6e12b
--- /dev/null
+++ b/tolua/src/tests/tconstant.lua
@@ -0,0 +1,13 @@
+dofile("myassert.lua")
+
+assert(FIRST==M.FIRST)
+assert(FIRST==A.FIRST)
+assert(SECOND==M.SECOND)
+assert(SECOND==A.SECOND)
+
+assert(ONE==M.ONE)
+assert(ONE==A.ONE)
+assert(TWO==M.TWO)
+assert(TWO==A.TWO)
+
+print("Constant test OK")
diff --git a/tolua/src/tests/tconstant.pkg b/tolua/src/tests/tconstant.pkg
new file mode 100644
index 0000000..ada3390
--- /dev/null
+++ b/tolua/src/tests/tconstant.pkg
@@ -0,0 +1,34 @@
+$#include "tconstant.h"
+
+#define FIRST 1
+#define SECOND 2
+
+enum {
+ ONE = 1,
+ TWO = 2
+};
+
+module M {
+
+#define M_FIRST@FIRST 1
+#define M_SECOND@SECOND 2
+
+enum {
+ M_ONE@ONE = 1,
+ M_TWO@TWO = 2
+};
+}
+
+class A {
+public:
+
+ #define FIRST 1
+ #define SECOND 2
+
+ enum {
+ ONE = 1,
+ TWO = 2
+ };
+};
+
+
diff --git a/tolua/src/tests/tdirective.lua b/tolua/src/tests/tdirective.lua
new file mode 100644
index 0000000..011403f
--- /dev/null
+++ b/tolua/src/tests/tdirective.lua
@@ -0,0 +1,8 @@
+dofile("myassert.lua")
+
+assert(a==3)
+assert(A==4)
+assert(func()==5)
+
+print("Directive test OK")
+
diff --git a/tolua/src/tests/tdirective.pkg b/tolua/src/tests/tdirective.pkg
new file mode 100644
index 0000000..024c795
--- /dev/null
+++ b/tolua/src/tests/tdirective.pkg
@@ -0,0 +1,28 @@
+$#include "lualib.h"
+$#include "lauxlib.h"
+
+$int a;
+$extern int a;
+
+$int main (void)
+${
+$ lua_State* L = luaL_newstate();
+$ luaopen_base(L);
+$ tolua_tdirective_open(L);
+$ luaL_dofile(L,"tdirective.lua");
+$ lua_close(L);
+$ return 0;
+$}
+
+$pfile "tdirectivepkg.pkg"
+
+$<
+ a = 3;
+$>
+
+$[
+A = 4
+$]
+
+$lfile "tdirectivelua.lua"
+
diff --git a/tolua/src/tests/tdirectivelua.lua b/tolua/src/tests/tdirectivelua.lua
new file mode 100644
index 0000000..abdfd7a
--- /dev/null
+++ b/tolua/src/tests/tdirectivelua.lua
@@ -0,0 +1,5 @@
+dofile("myassert.lua")
+
+function func ()
+ return 5
+end
diff --git a/tolua/src/tests/tdirectivepkg.pkg b/tolua/src/tests/tdirectivepkg.pkg
new file mode 100644
index 0000000..b15a66e
--- /dev/null
+++ b/tolua/src/tests/tdirectivepkg.pkg
@@ -0,0 +1,2 @@
+extern int a;
+
diff --git a/tolua/src/tests/tenum.c b/tolua/src/tests/tenum.c
new file mode 100644
index 0000000..3ecf4b6
--- /dev/null
+++ b/tolua/src/tests/tenum.c
@@ -0,0 +1,26 @@
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include "tenum.h"
+
+Status checkenum (Order o)
+{
+ if (o == FIRST)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+int main (void)
+{
+ int tolua_tenum_open (lua_State*);
+ lua_State* L = luaL_newstate();
+
+ luaL_openlibs(L);
+ tolua_tenum_open(L);
+
+ luaL_dofile(L,"tenum.lua");
+
+ lua_close(L);
+ return 0;
+}
diff --git a/tolua/src/tests/tenum.h b/tolua/src/tests/tenum.h
new file mode 100644
index 0000000..453f9aa
--- /dev/null
+++ b/tolua/src/tests/tenum.h
@@ -0,0 +1,17 @@
+#ifndef tenum_h
+#define tenum_h
+
+
+typedef enum {
+ FIRST,
+ SECOND
+} Order;
+
+typedef enum {
+ FALSE,
+ TRUE
+} Status;
+
+Status checkenum (Order o);
+
+#endif \ No newline at end of file
diff --git a/tolua/src/tests/tenum.lua b/tolua/src/tests/tenum.lua
new file mode 100644
index 0000000..4082907
--- /dev/null
+++ b/tolua/src/tests/tenum.lua
@@ -0,0 +1,9 @@
+dofile("myassert.lua")
+
+local a = FIRST
+local b = SECOND
+
+assert(checkenum(a)==TRUE)
+assert(checkenum(b)==FALSE)
+
+print("Enum test OK") \ No newline at end of file
diff --git a/tolua/src/tests/tenum.pkg b/tolua/src/tests/tenum.pkg
new file mode 100644
index 0000000..9e90cc4
--- /dev/null
+++ b/tolua/src/tests/tenum.pkg
@@ -0,0 +1,13 @@
+$#include "tenum.h"
+
+enum Order {
+ FIRST,
+ SECOND
+};
+
+typedef enum {
+ FALSE,
+ TRUE
+} Status;
+
+Status checkenum (Order o);
diff --git a/tolua/src/tests/tfunction.cpp b/tolua/src/tests/tfunction.cpp
new file mode 100644
index 0000000..b4ecedb
--- /dev/null
+++ b/tolua/src/tests/tfunction.cpp
@@ -0,0 +1,22 @@
+extern "C"
+{
+#include "lualib.h"
+#include "lauxlib.h"
+}
+
+#include "tfunction.h"
+
+
+int main (void)
+{
+ int tolua_tfunction_open (lua_State*);
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ tolua_tfunction_open(L);
+
+ luaL_dofile(L,"tfunction.lua");
+
+ lua_close(L);
+ return 0;
+}
+
diff --git a/tolua/src/tests/tfunction.h b/tolua/src/tests/tfunction.h
new file mode 100644
index 0000000..a14bb6e
--- /dev/null
+++ b/tolua/src/tests/tfunction.h
@@ -0,0 +1,210 @@
+#ifndef tfunction_h
+#define tfunction_h
+
+#include <stdio.h>
+
+typedef enum {
+ FIRST = 1,
+ SECOND = 2
+} Order;
+
+class Point
+{
+ float m_x;
+ float m_y;
+
+public:
+
+ enum Error {
+ SUCCESS = 0,
+ ERROR = 1
+ };
+
+ Point (float x=0, float y=0)
+ : m_x(x), m_y(y)
+ {
+ }
+ virtual ~Point ()
+ {
+ }
+
+ void set (float x, float y)
+ {
+ m_x = x, m_y = y;
+ }
+ void set (float v[2]=0)
+ {
+ m_x = v[0], m_y=v[1];
+ }
+ void setpointer (Point* p)
+ {
+ *this = *p;
+ }
+ void setref (Point& p)
+ {
+ *this = p;
+ }
+ void setvalue (Point p)
+ {
+ *this = p;
+ }
+ void setconst (const Point* p)
+ {
+ *this = *p;
+ }
+
+ void get (float* x, float* y) const
+ {
+ *x = m_x, *y = m_y;
+ }
+ void get (float v[2]) const
+ {
+ v[0] = m_x, v[1] = m_y;
+ }
+ Point* getpointer ()
+ {
+ return this;
+ }
+ Point& getref ()
+ {
+ return *this;
+ }
+ Point getvalue ()
+ {
+ return *this;
+ }
+ const Point* getconst () const
+ {
+ return this;
+ }
+
+ Point operator+ (const Point& p) const
+ {
+ return Point(m_x+p.m_x,m_y+p.m_y);
+ }
+ Point operator- (const Point& p) const
+ {
+ return Point(m_x-p.m_x,m_y-p.m_y);
+ }
+ Point operator* (const Point& p) const
+ {
+ return Point(m_x*p.m_x,m_y*p.m_y);
+ }
+ Point operator/ (float n) const
+ {
+ return Point(m_x/n,m_y/n);
+ }
+ bool operator< (const Point& p) const
+ {
+ if (m_x < p.m_x) return true;
+ else if (m_x > p.m_x) return false;
+ else return m_y < p.m_y;
+ }
+ bool operator<= (const Point& p) const
+ {
+ return operator<(p) || operator==(p);
+ }
+ bool operator== (const Point& p) const
+ {
+ return m_x==p.m_x && m_y==p.m_y;
+ }
+
+ float operator[] (int i) const
+ {
+ return (i==0) ? m_x : m_y;
+ }
+ float& operator[] (int i)
+ {
+ return (i==0) ? m_x : m_y;
+ }
+
+ static Error echo (Error e)
+ {
+ return e;
+ }
+
+};
+
+
+inline Point add (const Point& p1, const Point& p2)
+{
+ return p1+p2;
+}
+inline Point sub (const Point& p1, const Point& p2)
+{
+ return p1-p2;
+}
+inline Point mult (const Point& p1, const Point& p2)
+{
+ return p1*p2;
+}
+inline Point div (const Point& p1, float n)
+{
+ return p1/n;
+}
+
+inline void getpoint (const Point* p, float* x, float* y)
+{
+ p->get(x,y);
+}
+inline void setpoint (Point* p, float x=0, float y=0)
+{
+ p->set(x,y);
+}
+
+inline Point average (int n, Point v[])
+{
+ Point p(0,0);
+ for (int i=0; i<n; ++i)
+ p = p+v[i];
+ return p/n;
+}
+
+inline Point averagepointer (int n, Point* v[])
+{
+ Point p(0,0);
+ for (int i=0; i<n; ++i)
+ p = p+(*v[i]);
+ return p/n;
+}
+
+inline void copyvector (int n, const Point v[], Point u[])
+{
+ for (int i=0; i<n; ++i)
+ u[i] = v[i];
+}
+
+inline Order invert (Order o)
+{
+ if (o==FIRST)
+ return SECOND;
+ else
+ return FIRST;
+}
+
+
+class ColorPoint : public Point //tolua_export
+{ //tolua_export
+ float r, g, b;
+public:
+
+//tolua_begin
+ ColorPoint (float px, float py, float cr=0.0f, float cg=0.0f, float cb=0.0f)
+ : Point(px,py), r(cr), g(cg), b(cb)
+ {
+ }
+ virtual ~ColorPoint () { }
+
+ virtual void getcolor (float* red, float *green, float *blue) const
+ {
+ *red = r;
+ *green = g;
+ *blue = b;
+ }
+ static ColorPoint* MakeRed (float x, float y)
+ {
+ return new ColorPoint(x,y,1,0,0);
+ }
+};
+//tolua_end
+#endif
diff --git a/tolua/src/tests/tfunction.lua b/tolua/src/tests/tfunction.lua
new file mode 100644
index 0000000..62d8d41
--- /dev/null
+++ b/tolua/src/tests/tfunction.lua
@@ -0,0 +1,104 @@
+dofile("myassert.lua")
+
+local p = Point:new(1,2)
+local q = Point:new()
+
+local x, y = p:get()
+local c = {}; q:get(c)
+
+assert(x==1 and y==2)
+assert(c[1]==0 and c[2]==0)
+
+q:set(4,5)
+p:setconst(q)
+local r = p:getpointer();
+x,y = r:get()
+assert(x==4 and y==5)
+
+local s = Point:new()
+s:setref(r)
+local t = s:getref()
+t:set(5,6) -- t is s
+x,y = s:get()
+assert(x==5 and y==6)
+
+local u = s:getvalue()
+u:set(4,1) -- u represents a copy of s
+x,y = s:get()
+assert(x~=4 and y~=1)
+
+local x1,y1 = getpoint(u)
+local x2,y2 = getpoint(s)
+
+local p1 = alg.add(u,s)
+x,y = p1:get()
+assert(x==x1+x2 and y==y1+y2)
+
+local p2 = alg.sub(u,s)
+x,y = p2:get()
+assert(x==x1-x2 and y==y1-y2)
+
+local p3 = alg.mult(u,s)
+x,y = p3:get()
+assert(x==x1*x2 and y==y1*y2)
+
+local p4 = alg.div(s,2)
+x,y = p4:get()
+assert(x==x2/2 and y==y2/2)
+
+setpoint(p4)
+x,y = p4:get()
+assert(x==0 and y==0)
+
+local cp = ColorPoint:MakeRed(3,4)
+local p = cp+cp
+x,y = p:get()
+assert(x==6 and y==8)
+local q = p-cp
+x,y = q:get()
+assert(x==3 and y==4)
+local r = p/2
+x,y = r:get()
+assert(x==3 and y==4)
+local t = r*cp
+x,y = t:get()
+assert(x==9 and y==16)
+assert(t==r*r)
+-- assert(q==cp) -- the eq does not deal with different metatables
+assert(t~=q)
+assert(q<t)
+assert(q<=t)
+assert(t>q)
+assert(t>=q)
+
+local p = Point:new(1,2)
+assert(p[1]==1 and p[2]==2)
+p[1]=3; p[2] = p[2]+2
+local x, y = p:get()
+assert(x==3 and y==4)
+
+
+local n = 3
+local v = {Point:new(0,1), Point:new(2,3), Point:new(4,5)}
+
+local m = average(n,v)
+local c = averagepointer(n,v)
+local t = {}
+copyvector(n,v,t)
+
+local l = Point:new()
+for i=1,n do
+ assert(v[i]==t[i])
+ l[1] = l[1] + v[i][1]
+ l[2] = l[2] + v[i][2]
+end
+l = l/n
+assert(m==l)
+assert(c==l)
+
+assert(Point.SUCCESS==Point:echo(Point.SUCCESS))
+assert(Point.ERROR==Point:echo(Point.ERROR))
+assert(FIRST==invert(SECOND))
+assert(SECOND==invert(FIRST))
+
+print("Function test OK")
diff --git a/tolua/src/tests/tfunction.pkg b/tolua/src/tests/tfunction.pkg
new file mode 100644
index 0000000..d898455
--- /dev/null
+++ b/tolua/src/tests/tfunction.pkg
@@ -0,0 +1,72 @@
+$#include "tfunction.h"
+
+typedef enum {
+ FIRST = 1,
+ SECOND = 2
+} Order;
+
+class Point
+{
+ enum Error {
+ SUCCESS = 0,
+ ERROR = 1
+ };
+
+ Point (float x=0, float y=0);
+ virtual ~Point ();
+
+ void set (float x, float y);
+ void set (float v[2]=0);
+ void setpointer (Point* p);
+ void setref (Point& p);
+ void setvalue (Point p);
+ void setconst (const Point* p);
+
+ void get (float* x=0, float* y=0) const;
+ void get (float v[2]=0) const;
+ Point* getpointer ();
+ Point& getref ();
+ Point getvalue ();
+ const Point* getconst () const;
+
+ Point operator+ (const Point& p) const;
+ Point operator- (const Point& p) const;
+ Point operator* (const Point& p) const;
+ Point operator/ (float n) const;
+ bool operator< (const Point& p) const;
+ bool operator<= (const Point& p) const;
+ bool operator== (const Point& p) const;
+
+ float operator[] (int i) const;
+ float& operator[] (int i);
+
+ static Error echo (Error e);
+};
+
+module alg
+{
+ Point add (const Point& p1, const Point& p2);
+ Point sub (const Point& p1, const Point& p2);
+ Point mult (const Point& p1, const Point& p2);
+ Point div (const Point& p1, float n);
+}
+
+void getpoint (const Point* p, float* x=0, float* y=0);
+void setpoint (Point* p, float x=0, float y=0);
+inline Point average (int n, Point v[n]);
+inline Point averagepointer (int n, Point* v[n]);
+inline void copyvector (int n, const Point v[n], Point u[n]=(u+i));
+
+inline Order invert (Order o);
+
+$cfile "tfunction.h"
+
+/*
+class ColorPoint : public Point
+{
+ ColorPoint (float px, float py, float cr=0.0f, float cg=0.0f, float cb=0.0f);
+ virtual ~ColorPoint ();
+ virtual void getcolor (float* red, float *green, float *blue) const;
+ static const Point* MakeRed (float x, float y);
+};
+*/
diff --git a/tolua/src/tests/tinheritance.cpp b/tolua/src/tests/tinheritance.cpp
new file mode 100755
index 0000000..4396a7e
--- /dev/null
+++ b/tolua/src/tests/tinheritance.cpp
@@ -0,0 +1,21 @@
+extern "C" {
+#include "lua.h"
+#include "lualib.h"
+#include "lauxlib.h"
+}
+
+int main ()
+{
+ int tolua_tinheritance_open (lua_State*);
+
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ tolua_tinheritance_open(L);
+
+ luaL_dofile(L,"tinheritance.lua");
+
+ lua_close(L);
+
+ return 0;
+}
+
diff --git a/tolua/src/tests/tinheritance.h b/tolua/src/tests/tinheritance.h
new file mode 100644
index 0000000..d572abc
--- /dev/null
+++ b/tolua/src/tests/tinheritance.h
@@ -0,0 +1,35 @@
+#include <stdio.h>
+
+class A
+{
+public:
+ A () {}
+ virtual ~A() {}
+ virtual const char* aname () { return "A"; }
+ virtual const char* name () { return "A"; }
+};
+
+class B : public A
+{
+public:
+ B () {}
+ virtual ~B() {}
+ virtual const char* name () { return "B"; }
+};
+
+class C : public B
+{
+public:
+ C () {}
+ virtual ~C() {}
+ virtual const char* name () { return "C"; }
+};
+
+class D : public C
+{
+public:
+ D () {}
+ virtual ~D() {}
+ virtual const char* name () { return "D"; }
+};
+
diff --git a/tolua/src/tests/tinheritance.lua b/tolua/src/tests/tinheritance.lua
new file mode 100644
index 0000000..2df1f38
--- /dev/null
+++ b/tolua/src/tests/tinheritance.lua
@@ -0,0 +1,16 @@
+dofile("myassert.lua")
+
+-- type convertion tests
+local a = A:new()
+local b = B:new()
+local c = C:new()
+local d = D:new()
+
+assert(b:name()=="B")
+assert(b:aname()=="A")
+assert(c:name()=="C")
+assert(c:aname()=="A")
+assert(d:name()=="D")
+assert(d:aname()=="A")
+
+print("Inheritance test OK")
diff --git a/tolua/src/tests/tinheritance.pkg b/tolua/src/tests/tinheritance.pkg
new file mode 100644
index 0000000..4a40de7
--- /dev/null
+++ b/tolua/src/tests/tinheritance.pkg
@@ -0,0 +1,35 @@
+$#include "tinheritance.h"
+
+class A
+{
+public:
+ A () {}
+ virtual ~A() {}
+ virtual const char* aname () { return "A"; }
+ virtual const char* name () { return "A"; }
+};
+
+class B : public A
+{
+public:
+ B () {}
+ virtual ~B() {}
+ virtual const char* name () { return "B"; }
+};
+
+class C : public B
+{
+public:
+ C () {}
+ virtual ~C() {}
+ virtual const char* name () { return "C"; }
+};
+
+class D : public C
+{
+public:
+ D () {}
+ virtual ~D() {}
+ virtual const char* name () { return "D"; }
+};
+
diff --git a/tolua/src/tests/tmodule.c b/tolua/src/tests/tmodule.c
new file mode 100644
index 0000000..c5e0d29
--- /dev/null
+++ b/tolua/src/tests/tmodule.c
@@ -0,0 +1,24 @@
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include "tmodule.h"
+
+int a = 1;
+int b = 2;
+int c = 3;
+int d = 4;
+
+int main ()
+{
+ int tolua_tmodule_open (lua_State*);
+
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ tolua_tmodule_open(L);
+
+ luaL_dofile(L,"tmodule.lua");
+
+ lua_close(L);
+ return 0;
+}
+
diff --git a/tolua/src/tests/tmodule.h b/tolua/src/tests/tmodule.h
new file mode 100644
index 0000000..3766bc4
--- /dev/null
+++ b/tolua/src/tests/tmodule.h
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+extern int a;
+extern int b;
+extern int c;
+extern int d;
+
diff --git a/tolua/src/tests/tmodule.lua b/tolua/src/tests/tmodule.lua
new file mode 100644
index 0000000..0593ee9
--- /dev/null
+++ b/tolua/src/tests/tmodule.lua
@@ -0,0 +1,19 @@
+dofile("myassert.lua")
+
+-- test valid access
+assert(A.a==1)
+assert(A.B.b==2)
+assert(A.B.C.c==3)
+
+-- test invalid access
+assert(A.B.a==nil) -- no inheritance
+assert(A.B.C.a==nil)
+
+assert(A.b==nil) -- no access the inner module
+assert(A.c==nil)
+assert(A.B.c==nil)
+
+-- test variables appended to existing modules
+assert(A.d==4)
+
+print("Module test OK")
diff --git a/tolua/src/tests/tmodule.pkg b/tolua/src/tests/tmodule.pkg
new file mode 100644
index 0000000..43d4306
--- /dev/null
+++ b/tolua/src/tests/tmodule.pkg
@@ -0,0 +1,16 @@
+
+$#include "tmodule.h"
+
+module A {
+ extern int a;
+ module B {
+ extern int b;
+ module C {
+ extern int c;
+ }
+ }
+}
+
+module A {
+ extern int d;
+}
diff --git a/tolua/src/tests/tnamespace.cpp b/tolua/src/tests/tnamespace.cpp
new file mode 100644
index 0000000..0884d35
--- /dev/null
+++ b/tolua/src/tests/tnamespace.cpp
@@ -0,0 +1,25 @@
+extern "C" {
+#include "lualib.h"
+#include "lauxlib.h"
+}
+
+#include "tnamespace.h"
+
+int A::a = 1;
+int A::B::b = 2;
+int A::B::C::c = 3;
+
+int main ()
+{
+ int tolua_tnamespace_open (lua_State*);
+
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ tolua_tnamespace_open(L);
+
+ luaL_dofile(L,"tnamespace.lua");
+
+ lua_close(L);
+ return 0;
+}
+
diff --git a/tolua/src/tests/tnamespace.h b/tolua/src/tests/tnamespace.h
new file mode 100644
index 0000000..8c15e41
--- /dev/null
+++ b/tolua/src/tests/tnamespace.h
@@ -0,0 +1,11 @@
+namespace A {
+ enum {FIRST=1};
+ extern int a;
+ namespace B {
+ extern int b;
+ namespace C {
+ extern int c;
+ }
+ }
+}
+
diff --git a/tolua/src/tests/tnamespace.lua b/tolua/src/tests/tnamespace.lua
new file mode 100644
index 0000000..f378bee
--- /dev/null
+++ b/tolua/src/tests/tnamespace.lua
@@ -0,0 +1,16 @@
+dofile("myassert.lua")
+
+-- test valid access
+assert(A.a==1)
+assert(A.B.b==2)
+assert(A.B.C.c==3)
+
+-- test invalid access
+assert(A.B.a==nil) -- no inheritance
+assert(A.B.C.a==nil)
+
+assert(A.b==nil) -- no access the inner module
+assert(A.c==nil)
+assert(A.B.c==nil)
+
+print("Namespace test OK")
diff --git a/tolua/src/tests/tnamespace.pkg b/tolua/src/tests/tnamespace.pkg
new file mode 100644
index 0000000..0b58366
--- /dev/null
+++ b/tolua/src/tests/tnamespace.pkg
@@ -0,0 +1,13 @@
+
+$#include "tnamespace.h"
+
+namespace A {
+ int a;
+ namespace B {
+ int b;
+ namespace C {
+ int c;
+ }
+ }
+}
+
diff --git a/tolua/src/tests/tvararg.cpp b/tolua/src/tests/tvararg.cpp
new file mode 100644
index 0000000..9f58fb8
--- /dev/null
+++ b/tolua/src/tests/tvararg.cpp
@@ -0,0 +1,42 @@
+extern "C" {
+#include "lua.h"
+#include "lualib.h"
+#include "lauxlib.h"
+}
+
+#include "tvararg.h"
+
+
+#include <assert.h>
+#include <stdlib.h>
+
+int B::n = 0;
+
+static void check (void)
+{
+ assert(B::n == 0);
+}
+
+int main ()
+{
+ int tolua_tvararg_open (lua_State*);
+
+ atexit(check);
+
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ tolua_tvararg_open(L);
+
+ lua_pushstring(L, "tolua_ubox");
+ lua_rawget(L, LUA_REGISTRYINDEX);
+ lua_setglobal(L, "ubox");
+
+ if (luaL_dofile(L,"tvararg.lua")) {
+ printf("Error: %s\n",lua_tostring(L,-1));
+ }
+
+ lua_close(L);
+
+ return 0;
+}
+
diff --git a/tolua/src/tests/tvararg.h b/tolua/src/tests/tvararg.h
new file mode 100644
index 0000000..76c5de0
--- /dev/null
+++ b/tolua/src/tests/tvararg.h
@@ -0,0 +1,38 @@
+#include <stdio.h>
+
+struct B
+{
+ static int n;
+ B() {++n; }
+ ~B() {--n; }
+};
+
+class A
+{
+ double v[3];
+public:
+ A() { v[0]=1.0; v[1]=2.0; v[2]=3.0;}
+ double get (int i)
+ {
+ return v[i];
+ }
+ int bounce (int i, int* j, int* k)
+ {
+ *k = i;
+ return i;
+ }
+ double add (lua_State* L)
+ {
+ double a = 0.0;
+ int n=2;
+ while (lua_isnumber(L, n)) {
+ a += lua_tonumber(L, n);
+ ++n;
+ }
+ return a;
+ }
+ B* GetB ()
+ {
+ return new B();
+ }
+};
diff --git a/tolua/src/tests/tvararg.lua b/tolua/src/tests/tvararg.lua
new file mode 100644
index 0000000..7b42eec
--- /dev/null
+++ b/tolua/src/tests/tvararg.lua
@@ -0,0 +1,14 @@
+local a = A:new()
+local b = a:GetB()
+local t = {}
+for i = 1, 100 do
+ t[i] = a:GetB()
+ local a, b, c = a:bounce(i,i)
+ assert(a==i and b==i and c==i)
+end
+
+t = nil
+b = nil
+collectgarbage("collect")
+assert(B.n == 0)
+print("VarArg OK")
diff --git a/tolua/src/tests/tvararg.pkg b/tolua/src/tests/tvararg.pkg
new file mode 100644
index 0000000..0ab6d88
--- /dev/null
+++ b/tolua/src/tests/tvararg.pkg
@@ -0,0 +1,17 @@
+$#include "tvararg.h"
+
+struct B
+{
+ static int n;
+ B();
+ ~B();
+};
+
+class A
+{
+ A();
+ double get (int i) ;
+ tolua_index bounce (tolua_index i, tolua_index *j, tolua_index* k=0);
+ double add (lua_State* L);
+ tolua_own B* GetB ();
+};
diff --git a/tolua/src/tests/tvariable.c b/tolua/src/tests/tvariable.c
new file mode 100644
index 0000000..1ec97e4
--- /dev/null
+++ b/tolua/src/tests/tvariable.c
@@ -0,0 +1,46 @@
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include "tvariable.h"
+
+int i = 1;
+float f = 2.0f;;
+double d = 3.0;
+char* s = "Hello world";
+void* v = (void*)1;
+char n[64] = "Hi there";
+
+A a = {11,12.0f,13.0,"Hello world from class",(void*)1,"Hi there from class"};
+B* b;
+U u;
+
+int mi = 21;
+float mf = 22.0f;
+double md = 23.0;
+char* ms = "Hello world in module";
+void* mv = NULL;
+char mn[64] = "Hi there in module";
+A ma = {31,32.0f,33.0,"Hello world from class in module",
+ NULL,"Hi there from class in module"};
+B* mb;
+
+int main (void)
+{
+ int tolua_tvariable_open (lua_State*);
+ lua_State* L = luaL_newstate();
+
+ B bb = {a,NULL};
+ B bbb = {ma,&bb};
+ b = &bb;
+ mb = &bbb;
+
+
+ luaL_openlibs(L);
+ tolua_tvariable_open(L);
+
+ luaL_dofile(L,"tvariable.lua");
+
+ lua_close(L);
+ return 0;
+}
+
diff --git a/tolua/src/tests/tvariable.h b/tolua/src/tests/tvariable.h
new file mode 100644
index 0000000..6363c48
--- /dev/null
+++ b/tolua/src/tests/tvariable.h
@@ -0,0 +1,44 @@
+typedef struct A A;
+typedef struct B B;
+typedef union U U;
+
+struct A
+{
+ int i;
+ float f;
+ double d;
+ char* s;
+ void* v;
+ char n[64];
+};
+
+union U
+{
+ int i;
+ float f;
+};
+
+struct B
+{
+ A a;
+ B* b;
+};
+
+extern int i;
+extern float f;
+extern double d;
+extern char* s;
+extern void* v;
+extern char n[64];
+extern A a;
+extern B* b;
+extern U u;
+
+extern int mi;
+extern float mf;
+extern double md;
+extern char* ms;
+extern void* mv;
+extern char mn[64];
+extern A ma;
+extern B* mb;
diff --git a/tolua/src/tests/tvariable.lua b/tolua/src/tests/tvariable.lua
new file mode 100644
index 0000000..6d3d963
--- /dev/null
+++ b/tolua/src/tests/tvariable.lua
@@ -0,0 +1,75 @@
+dofile("myassert.lua")
+
+assert(i==1)
+assert(f==2)
+assert(d==3)
+assert(s=="Hello world")
+assert(n=="Hi there")
+n = "Hello"
+assert(n=="Hello")
+
+assert(a.i==11)
+assert(a.f==12)
+assert(a.d==13)
+assert(a.s=="Hello world from class")
+assert(a.n=="Hi there from class")
+a.n = "Hello from class"
+assert(a.n=="Hello from class")
+
+assert(v==a.v)
+
+u.i = 2
+assert(u.i==2)
+u.f = 2
+assert(u.f==2)
+assert(u.i~=2)
+
+assert(M.mi==21)
+assert(M.mf==22)
+assert(M.md==23)
+assert(M.ms=="Hello world in module")
+assert(M.mn=="Hi there in module")
+M.mn = "Hello in module"
+assert(M.mn=="Hello in module")
+assert(M.mv==nil)
+
+assert(M.ma.i==31)
+assert(M.ma.f==32)
+assert(M.ma.d==33)
+assert(M.ma.s=="Hello world from class in module")
+assert(M.ma.n=="Hi there from class in module")
+M.ma.n = "Hello from class in module"
+assert(M.ma.n=="Hello from class in module")
+assert(M.ma.v==nil)
+
+assert(a.i==b.a.i)
+assert(a.f==b.a.f)
+assert(a.d==b.a.d)
+assert(a.s==b.a.s)
+assert(a.v==b.a.v)
+assert(b.b==nil)
+
+assert(M.ma.i==M.mb.a.i)
+assert(M.ma.f==M.mb.a.f)
+assert(M.ma.d==M.mb.a.d)
+assert(M.ma.s==M.mb.a.s)
+assert(M.ma.v==M.mb.a.v)
+
+assert(a.i==M.mb.b.a.i)
+assert(a.f==M.mb.b.a.f)
+assert(a.d==M.mb.b.a.d)
+assert(a.s==M.mb.b.a.s)
+assert(a.v==M.mb.b.a.v)
+assert(M.mb.b.b==nil)
+
+assert(s~=rawget(_G,"s")) -- because s represents a C variable
+s = "Hello"
+assert(s==rawget(_G,"s")) -- because s is mapped as const
+
+f = 25.0
+assert(f~=rawget(_G,"f")) -- because f represents a C variable
+
+b.a.i = 5
+assert(b.a.i==M.mb.b.a.i)
+
+print("Variable test OK")
diff --git a/tolua/src/tests/tvariable.pkg b/tolua/src/tests/tvariable.pkg
new file mode 100644
index 0000000..a8a1539
--- /dev/null
+++ b/tolua/src/tests/tvariable.pkg
@@ -0,0 +1,45 @@
+$#include "tvariable.h"
+
+struct A
+{
+ int i;
+ float f;
+ double d;
+ char* s;
+ void* v;
+ char n[64];
+};
+
+struct B
+{
+ A a;
+ B* b;
+};
+
+union U
+{
+ int i;
+ float f;
+};
+
+extern int i;
+extern float f;
+extern double d;
+extern const char* s;
+extern void* v;
+extern char n[64];
+extern A a;
+extern B* b;
+extern U u;
+
+module M {
+extern int mi;
+extern float mf;
+extern double md;
+extern const char* ms;
+extern void* mv;
+extern const char mn[64];
+extern A a;
+extern A ma;
+extern B* mb;
+}