diff --git a/Makefile b/Makefile index a7a46ef2168252f3fea8fb7c2d4e3217a6401796..c5daf0f0e73d73e073507f08a10c3990838bce50 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,18 @@ -CC ?= tcc -RAYLIB := raylib-5.5_linux_amd64 -LUA := lua-5.4.8 -CFLAGS := -std=c99 -v -g -I./vendor/$(RAYLIB)/include -I./vendor/$(LUA)/src -LDFLAGS := -L./vendor/$(RAYLIB)/lib -lraylib -L./vendor/$(LUA)/src -llua -lm -PROG := bidi -PROG_C := main.c +CC ?= tcc +RAYLIB := raylib-5.5_linux_amd64 +LUA := lua-5.4.8 +CFLAGS := -std=c99 -v -g -I./vendor/$(RAYLIB)/include -I./vendor/$(LUA)/src +LDFLAGS := -L./vendor/$(RAYLIB)/lib -lraylib -L./vendor/$(LUA)/src -llua -lm +STDLIB_FILES := $(wildcard stdlib/*.lua) +PROG := bidi +PROG_C := main.c + +all: lua hexdump $(STDLIB_FILES:.lua=.h) $(PROG) -$(PROG): lua hexdump $(PROG_C) +%.h: %.lua + ./hexdump $< $(@:stdlib/%.h=%) > $@ + +$(PROG): $(PROG_C) $(CC) $(CFLAGS) $(PROG_C) -o $(PROG) $(LDFLAGS) hexdump: hexdump.c diff --git a/main.c b/main.c index 79bcfb963e59bbb3ad699eeb1d16491bd4302b38..7515e57aaa14e0198afeb82cbee947ffea32deb0 100644 --- a/main.c +++ b/main.c @@ -5,9 +5,25 @@ #include "lua.h" #include "lualib.h" #include "lauxlib.h" +#include "stdlib/color.h" + #define IN_FILE "test/main.lua" #define DEBUG_LEVEL LOG_DEBUG +static int lua_getfield_int(lua_State *L, int index, const char *key) { + lua_getfield(L, index, key); + int val = (int)luaL_checknumber(L, -1); + lua_pop(L, 1); + return val; +} + +static int lua_getfield_int_opt(lua_State *L, int index, const char *key, int def) { + lua_getfield(L, index, key); + int val = lua_isnil(L, -1) ? def : (int)luaL_checknumber(L, -1); + lua_pop(L, 1); + return val; +} + static int l_open_window(lua_State *L) { int width = luaL_checknumber(L, 1); int height = luaL_checknumber(L, 2); @@ -18,8 +34,9 @@ TraceLog(LOG_DEBUG, "l_open_window"); return 0; } -static int l_window_should_close(lua_State *L) { - lua_pushboolean(L, WindowShouldClose()); +// TODO: This function name is still a bit sus. Revisit the name later. +static int l_window_running(lua_State *L) { + lua_pushboolean(L, !WindowShouldClose()); return 1; } @@ -47,7 +64,14 @@ return 0; } static int l_clear_window(lua_State *L) { - ClearBackground(BLACK); + luaL_checktype(L, 1, LUA_TTABLE); + Color color = { + .r = (unsigned char)lua_getfield_int(L, 1, "r"), + .g = (unsigned char)lua_getfield_int(L, 1, "g"), + .b = (unsigned char)lua_getfield_int(L, 1, "b"), + .a = (unsigned char)lua_getfield_int_opt(L, 1, "a", 255) + }; + ClearBackground(color); return 0; } @@ -64,12 +88,19 @@ luaL_openlibs(L); lua_register(L, "open_window", l_open_window); lua_register(L, "close_window", l_close_window); - lua_register(L, "window_should_close", l_window_should_close); + lua_register(L, "window_running", l_window_running); lua_register(L, "begin_drawing", l_begin_drawing); lua_register(L, "end_drawing", l_end_drawing); lua_register(L, "set_fps", l_set_fps); lua_register(L, "draw_fps", l_draw_fps); lua_register(L, "clear_window", l_clear_window); + + if (luaL_loadbuffer(L, color, color_len, "color") || lua_pcall(L, 0, 1, 0)) { + fprintf(stderr, "Error loading color.lua: %s\n", lua_tostring(L, -1)); + lua_close(L); + return 1; + } + lua_setglobal(L, "color"); // TODO: This should probably use loadbuffer instead. // https://www.lua.org/manual/5.4/manual.html#luaL_loadbuffer diff --git a/stdlib/color.h b/stdlib/color.h new file mode 100644 index 0000000000000000000000000000000000000000..1f47770c110ebd86f9961b8445384ede81a68204 --- /dev/null +++ b/stdlib/color.h @@ -0,0 +1,137 @@ +#ifndef color_H +#define color_H + +unsigned char color[] = { + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, + 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, + 0x4c, 0x49, 0x47, 0x48, 0x54, 0x47, 0x52, 0x41, 0x59, 0x20, 0x20, 0x3d, + 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x32, 0x30, 0x30, 0x2c, 0x20, + 0x67, 0x20, 0x3d, 0x20, 0x32, 0x30, 0x30, 0x2c, 0x20, 0x62, 0x20, 0x3d, + 0x20, 0x32, 0x30, 0x30, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, + 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x47, 0x52, + 0x41, 0x59, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x31, 0x33, 0x30, 0x2c, 0x20, 0x67, 0x20, + 0x3d, 0x20, 0x31, 0x33, 0x30, 0x2c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x31, + 0x33, 0x30, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, + 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x44, 0x41, 0x52, 0x4b, + 0x47, 0x52, 0x41, 0x59, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, + 0x20, 0x3d, 0x20, 0x38, 0x30, 0x2c, 0x20, 0x20, 0x67, 0x20, 0x3d, 0x20, + 0x38, 0x30, 0x2c, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x38, 0x30, 0x2c, + 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, + 0x20, 0x32, 0x35, 0x33, 0x2c, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x34, + 0x39, 0x2c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, + 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x2e, 0x47, 0x4f, 0x4c, 0x44, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x32, + 0x35, 0x35, 0x2c, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x30, 0x33, 0x2c, + 0x20, 0x62, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x61, 0x20, + 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x2e, 0x4f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, + 0x2c, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x36, 0x31, 0x2c, 0x20, 0x62, + 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, + 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, + 0x50, 0x49, 0x4e, 0x4b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, + 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, + 0x67, 0x20, 0x3d, 0x20, 0x31, 0x30, 0x39, 0x2c, 0x20, 0x62, 0x20, 0x3d, + 0x20, 0x31, 0x39, 0x34, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, + 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x52, 0x45, + 0x44, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x32, 0x33, 0x30, 0x2c, 0x20, 0x67, 0x20, + 0x3d, 0x20, 0x34, 0x31, 0x2c, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x35, + 0x35, 0x2c, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, + 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x4d, 0x41, 0x52, 0x4f, + 0x4f, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, + 0x20, 0x3d, 0x20, 0x31, 0x39, 0x30, 0x2c, 0x20, 0x67, 0x20, 0x3d, 0x20, + 0x33, 0x33, 0x2c, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x35, 0x35, 0x2c, + 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, + 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x32, + 0x38, 0x2c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x34, 0x38, 0x2c, 0x20, 0x20, + 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x2e, 0x4c, 0x49, 0x4d, 0x45, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, + 0x2c, 0x20, 0x20, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x35, 0x38, 0x2c, + 0x20, 0x62, 0x20, 0x3d, 0x20, 0x34, 0x37, 0x2c, 0x20, 0x20, 0x61, 0x20, + 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x2e, 0x44, 0x41, 0x52, 0x4b, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x20, + 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, + 0x20, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x31, 0x37, 0x2c, 0x20, 0x62, + 0x20, 0x3d, 0x20, 0x34, 0x34, 0x2c, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, + 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, + 0x53, 0x4b, 0x59, 0x42, 0x4c, 0x55, 0x45, 0x20, 0x20, 0x20, 0x20, 0x3d, + 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x31, 0x30, 0x32, 0x2c, 0x20, + 0x67, 0x20, 0x3d, 0x20, 0x31, 0x39, 0x31, 0x2c, 0x20, 0x62, 0x20, 0x3d, + 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, + 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x42, 0x4c, + 0x55, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x67, 0x20, + 0x3d, 0x20, 0x31, 0x32, 0x31, 0x2c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x32, + 0x34, 0x31, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, + 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x44, 0x41, 0x52, 0x4b, + 0x42, 0x4c, 0x55, 0x45, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, + 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x67, 0x20, 0x3d, 0x20, + 0x38, 0x32, 0x2c, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x31, 0x37, 0x32, + 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x50, 0x55, 0x52, 0x50, 0x4c, 0x45, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, + 0x20, 0x32, 0x30, 0x30, 0x2c, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x31, 0x32, + 0x32, 0x2c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, + 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x2e, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x54, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x31, + 0x33, 0x35, 0x2c, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x36, 0x30, 0x2c, 0x20, + 0x20, 0x62, 0x20, 0x3d, 0x20, 0x31, 0x39, 0x30, 0x2c, 0x20, 0x61, 0x20, + 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x2e, 0x44, 0x41, 0x52, 0x4b, 0x50, 0x55, 0x52, 0x50, 0x4c, 0x45, + 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x31, 0x31, 0x32, + 0x2c, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x33, 0x31, 0x2c, 0x20, 0x20, 0x62, + 0x20, 0x3d, 0x20, 0x31, 0x32, 0x36, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, + 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, + 0x42, 0x45, 0x49, 0x47, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, + 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x32, 0x31, 0x31, 0x2c, 0x20, + 0x67, 0x20, 0x3d, 0x20, 0x31, 0x37, 0x36, 0x2c, 0x20, 0x62, 0x20, 0x3d, + 0x20, 0x31, 0x33, 0x31, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, + 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x42, 0x52, + 0x4f, 0x57, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x37, 0x2c, 0x20, 0x67, 0x20, + 0x3d, 0x20, 0x31, 0x30, 0x36, 0x2c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x37, + 0x39, 0x2c, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, + 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x44, 0x41, 0x52, 0x4b, + 0x42, 0x52, 0x4f, 0x57, 0x4e, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, + 0x20, 0x3d, 0x20, 0x37, 0x36, 0x2c, 0x20, 0x20, 0x67, 0x20, 0x3d, 0x20, + 0x36, 0x33, 0x2c, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x34, 0x37, 0x2c, + 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x57, 0x48, 0x49, 0x54, 0x45, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, + 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x32, 0x35, + 0x35, 0x2c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, + 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x2e, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, + 0x2c, 0x20, 0x20, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, + 0x20, 0x62, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x61, 0x20, + 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x2e, 0x42, 0x4c, 0x41, 0x4e, 0x4b, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, + 0x20, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x62, + 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, + 0x30, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, + 0x4d, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x41, 0x20, 0x20, 0x20, 0x20, 0x3d, + 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, + 0x67, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, + 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, + 0x35, 0x20, 0x7d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x52, 0x41, + 0x59, 0x57, 0x48, 0x49, 0x54, 0x45, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x7b, + 0x20, 0x72, 0x20, 0x3d, 0x20, 0x32, 0x34, 0x35, 0x2c, 0x20, 0x67, 0x20, + 0x3d, 0x20, 0x32, 0x34, 0x35, 0x2c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x32, + 0x34, 0x35, 0x2c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x20, + 0x7d, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x0a +}; +unsigned int color_len = 1540; + +#endif // color_H diff --git a/stdlib/color.lua b/stdlib/color.lua new file mode 100644 index 0000000000000000000000000000000000000000..29584cba8116911841fd318eb78801e39e3fc882 --- /dev/null +++ b/stdlib/color.lua @@ -0,0 +1,30 @@ +local color = {} + +color.LIGHTGRAY = { r = 200, g = 200, b = 200, a = 255 } +color.GRAY = { r = 130, g = 130, b = 130, a = 255 } +color.DARKGRAY = { r = 80, g = 80, b = 80, a = 255 } +color.YELLOW = { r = 253, g = 249, b = 0, a = 255 } +color.GOLD = { r = 255, g = 203, b = 0, a = 255 } +color.ORANGE = { r = 255, g = 161, b = 0, a = 255 } +color.PINK = { r = 255, g = 109, b = 194, a = 255 } +color.RED = { r = 230, g = 41, b = 55, a = 255 } +color.MAROON = { r = 190, g = 33, b = 55, a = 255 } +color.GREEN = { r = 0, g = 228, b = 48, a = 255 } +color.LIME = { r = 0, g = 158, b = 47, a = 255 } +color.DARKGREEN = { r = 0, g = 117, b = 44, a = 255 } +color.SKYBLUE = { r = 102, g = 191, b = 255, a = 255 } +color.BLUE = { r = 0, g = 121, b = 241, a = 255 } +color.DARKBLUE = { r = 0, g = 82, b = 172, a = 255 } +color.PURPLE = { r = 200, g = 122, b = 255, a = 255 } +color.VIOLET = { r = 135, g = 60, b = 190, a = 255 } +color.DARKPURPLE = { r = 112, g = 31, b = 126, a = 255 } +color.BEIGE = { r = 211, g = 176, b = 131, a = 255 } +color.BROWN = { r = 127, g = 106, b = 79, a = 255 } +color.DARKBROWN = { r = 76, g = 63, b = 47, a = 255 } +color.WHITE = { r = 255, g = 255, b = 255, a = 255 } +color.BLACK = { r = 0, g = 0, b = 0, a = 255 } +color.BLANK = { r = 0, g = 0, b = 0, a = 0 } +color.MAGENTA = { r = 255, g = 0, b = 255, a = 255 } +color.RAYWHITE = { r = 245, g = 245, b = 245, a = 255 } + +return color diff --git a/stdlib/json.h b/stdlib/json.h new file mode 100644 index 0000000000000000000000000000000000000000..9c15a354e8b7829215fcb434a0a45345fec3fcb5 --- /dev/null +++ b/stdlib/json.h @@ -0,0 +1,812 @@ +#ifndef json_H +#define json_H + +unsigned char json[] = { + 0x2d, 0x2d, 0x0a, 0x2d, 0x2d, 0x20, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x6c, + 0x75, 0x61, 0x0a, 0x2d, 0x2d, 0x0a, 0x2d, 0x2d, 0x20, 0x43, 0x6f, 0x70, + 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x32, 0x30, 0x20, 0x72, 0x78, 0x69, 0x0a, 0x2d, 0x2d, 0x0a, 0x2d, + 0x2d, 0x20, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x69, 0x73, 0x20, 0x68, 0x65, 0x72, 0x65, 0x62, 0x79, 0x20, 0x67, + 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x2c, 0x20, 0x66, 0x72, 0x65, 0x65, + 0x20, 0x6f, 0x66, 0x20, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x2c, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x65, 0x72, 0x73, 0x6f, + 0x6e, 0x20, 0x6f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, + 0x61, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x20, 0x6f, 0x66, 0x0a, 0x2d, 0x2d, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, + 0x72, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, + 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x22, 0x53, 0x6f, 0x66, 0x74, + 0x77, 0x61, 0x72, 0x65, 0x22, 0x29, 0x2c, 0x20, 0x74, 0x6f, 0x20, 0x64, + 0x65, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x0a, 0x2d, 0x2d, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, + 0x74, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, + 0x74, 0x6f, 0x0a, 0x2d, 0x2d, 0x20, 0x75, 0x73, 0x65, 0x2c, 0x20, 0x63, + 0x6f, 0x70, 0x79, 0x2c, 0x20, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x2c, + 0x20, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x2c, 0x20, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x2c, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x2c, 0x20, 0x73, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x65, + 0x6e, 0x73, 0x65, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x2f, 0x6f, 0x72, 0x20, + 0x73, 0x65, 0x6c, 0x6c, 0x20, 0x63, 0x6f, 0x70, 0x69, 0x65, 0x73, 0x0a, + 0x2d, 0x2d, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x6f, + 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x20, 0x70, 0x65, + 0x72, 0x73, 0x6f, 0x6e, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x68, 0x6f, + 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, + 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x75, 0x72, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x0a, 0x2d, 0x2d, + 0x20, 0x73, 0x6f, 0x2c, 0x20, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, + 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0a, 0x2d, 0x2d, 0x0a, 0x2d, 0x2d, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20, 0x63, 0x6f, + 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x69, + 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6e, + 0x6f, 0x74, 0x69, 0x63, 0x65, 0x20, 0x73, 0x68, 0x61, 0x6c, 0x6c, 0x20, + 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, + 0x69, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x6f, + 0x70, 0x69, 0x65, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x62, 0x73, + 0x74, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x70, 0x6f, 0x72, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x2d, 0x2d, + 0x0a, 0x2d, 0x2d, 0x20, 0x54, 0x48, 0x45, 0x20, 0x53, 0x4f, 0x46, 0x54, + 0x57, 0x41, 0x52, 0x45, 0x20, 0x49, 0x53, 0x20, 0x50, 0x52, 0x4f, 0x56, + 0x49, 0x44, 0x45, 0x44, 0x20, 0x22, 0x41, 0x53, 0x20, 0x49, 0x53, 0x22, + 0x2c, 0x20, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x20, 0x57, 0x41, + 0x52, 0x52, 0x41, 0x4e, 0x54, 0x59, 0x20, 0x4f, 0x46, 0x20, 0x41, 0x4e, + 0x59, 0x20, 0x4b, 0x49, 0x4e, 0x44, 0x2c, 0x20, 0x45, 0x58, 0x50, 0x52, + 0x45, 0x53, 0x53, 0x20, 0x4f, 0x52, 0x0a, 0x2d, 0x2d, 0x20, 0x49, 0x4d, + 0x50, 0x4c, 0x49, 0x45, 0x44, 0x2c, 0x20, 0x49, 0x4e, 0x43, 0x4c, 0x55, + 0x44, 0x49, 0x4e, 0x47, 0x20, 0x42, 0x55, 0x54, 0x20, 0x4e, 0x4f, 0x54, + 0x20, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x20, 0x54, 0x4f, 0x20, + 0x54, 0x48, 0x45, 0x20, 0x57, 0x41, 0x52, 0x52, 0x41, 0x4e, 0x54, 0x49, + 0x45, 0x53, 0x20, 0x4f, 0x46, 0x20, 0x4d, 0x45, 0x52, 0x43, 0x48, 0x41, + 0x4e, 0x54, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x2c, 0x0a, 0x2d, + 0x2d, 0x20, 0x46, 0x49, 0x54, 0x4e, 0x45, 0x53, 0x53, 0x20, 0x46, 0x4f, + 0x52, 0x20, 0x41, 0x20, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x55, 0x4c, + 0x41, 0x52, 0x20, 0x50, 0x55, 0x52, 0x50, 0x4f, 0x53, 0x45, 0x20, 0x41, + 0x4e, 0x44, 0x20, 0x4e, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x52, 0x49, 0x4e, + 0x47, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x2e, 0x20, 0x49, 0x4e, 0x20, 0x4e, + 0x4f, 0x20, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x20, 0x53, 0x48, 0x41, 0x4c, + 0x4c, 0x20, 0x54, 0x48, 0x45, 0x0a, 0x2d, 0x2d, 0x20, 0x41, 0x55, 0x54, + 0x48, 0x4f, 0x52, 0x53, 0x20, 0x4f, 0x52, 0x20, 0x43, 0x4f, 0x50, 0x59, + 0x52, 0x49, 0x47, 0x48, 0x54, 0x20, 0x48, 0x4f, 0x4c, 0x44, 0x45, 0x52, + 0x53, 0x20, 0x42, 0x45, 0x20, 0x4c, 0x49, 0x41, 0x42, 0x4c, 0x45, 0x20, + 0x46, 0x4f, 0x52, 0x20, 0x41, 0x4e, 0x59, 0x20, 0x43, 0x4c, 0x41, 0x49, + 0x4d, 0x2c, 0x20, 0x44, 0x41, 0x4d, 0x41, 0x47, 0x45, 0x53, 0x20, 0x4f, + 0x52, 0x20, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x0a, 0x2d, 0x2d, 0x20, 0x4c, + 0x49, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x2c, 0x20, 0x57, 0x48, + 0x45, 0x54, 0x48, 0x45, 0x52, 0x20, 0x49, 0x4e, 0x20, 0x41, 0x4e, 0x20, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x20, 0x4f, 0x46, 0x20, 0x43, 0x4f, + 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54, 0x2c, 0x20, 0x54, 0x4f, 0x52, 0x54, + 0x20, 0x4f, 0x52, 0x20, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x57, 0x49, 0x53, + 0x45, 0x2c, 0x20, 0x41, 0x52, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x20, 0x46, + 0x52, 0x4f, 0x4d, 0x2c, 0x0a, 0x2d, 0x2d, 0x20, 0x4f, 0x55, 0x54, 0x20, + 0x4f, 0x46, 0x20, 0x4f, 0x52, 0x20, 0x49, 0x4e, 0x20, 0x43, 0x4f, 0x4e, + 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x20, 0x57, 0x49, 0x54, 0x48, + 0x20, 0x54, 0x48, 0x45, 0x20, 0x53, 0x4f, 0x46, 0x54, 0x57, 0x41, 0x52, + 0x45, 0x20, 0x4f, 0x52, 0x20, 0x54, 0x48, 0x45, 0x20, 0x55, 0x53, 0x45, + 0x20, 0x4f, 0x52, 0x20, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x20, 0x44, 0x45, + 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x53, 0x20, 0x49, 0x4e, 0x20, 0x54, 0x48, + 0x45, 0x0a, 0x2d, 0x2d, 0x20, 0x53, 0x4f, 0x46, 0x54, 0x57, 0x41, 0x52, + 0x45, 0x2e, 0x0a, 0x2d, 0x2d, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x6a, 0x73, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x22, 0x30, 0x2e, + 0x31, 0x2e, 0x32, 0x22, 0x20, 0x7d, 0x0a, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x0a, 0x2d, 0x2d, 0x20, 0x45, 0x6e, 0x63, 0x6f, 0x64, + 0x65, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x0a, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x73, 0x63, 0x61, 0x70, + 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x20, 0x3d, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x5c, 0x5c, 0x22, 0x20, + 0x5d, 0x20, 0x3d, 0x20, 0x22, 0x5c, 0x5c, 0x22, 0x2c, 0x0a, 0x20, 0x20, + 0x5b, 0x20, 0x22, 0x5c, 0x22, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x22, + 0x5c, 0x22, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x5c, 0x62, + 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x22, 0x62, 0x22, 0x2c, 0x0a, 0x20, + 0x20, 0x5b, 0x20, 0x22, 0x5c, 0x66, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, + 0x22, 0x66, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x5c, 0x6e, + 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x22, 0x6e, 0x22, 0x2c, 0x0a, 0x20, + 0x20, 0x5b, 0x20, 0x22, 0x5c, 0x72, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, + 0x22, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x5c, 0x74, + 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x22, 0x74, 0x22, 0x2c, 0x0a, 0x7d, + 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x73, 0x63, 0x61, + 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x5f, + 0x69, 0x6e, 0x76, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x5b, 0x20, 0x22, 0x2f, + 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x22, 0x2f, 0x22, 0x20, 0x7d, 0x0a, + 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20, + 0x70, 0x61, 0x69, 0x72, 0x73, 0x28, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x29, 0x20, 0x64, + 0x6f, 0x0a, 0x20, 0x20, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, + 0x68, 0x61, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x5b, + 0x76, 0x5d, 0x20, 0x3d, 0x20, 0x6b, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, + 0x68, 0x61, 0x72, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x22, 0x5c, 0x5c, 0x22, 0x20, 0x2e, 0x2e, 0x20, + 0x28, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, + 0x5f, 0x6d, 0x61, 0x70, 0x5b, 0x63, 0x5d, 0x20, 0x6f, 0x72, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x28, 0x22, 0x75, 0x25, 0x30, 0x34, 0x78, 0x22, 0x2c, 0x20, 0x63, 0x3a, + 0x62, 0x79, 0x74, 0x65, 0x28, 0x29, 0x29, 0x29, 0x0a, 0x65, 0x6e, 0x64, + 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x5f, 0x6e, 0x69, 0x6c, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x22, 0x6e, 0x75, 0x6c, 0x6c, + 0x22, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, + 0x76, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x29, 0x0a, + 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x20, + 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x20, 0x3d, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x20, 0x6f, 0x72, 0x20, + 0x7b, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x43, 0x69, 0x72, + 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x3f, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x73, 0x74, + 0x61, 0x63, 0x6b, 0x5b, 0x76, 0x61, 0x6c, 0x5d, 0x20, 0x74, 0x68, 0x65, + 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x63, 0x69, 0x72, + 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x22, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, + 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5b, 0x76, 0x61, 0x6c, 0x5d, 0x20, + 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x0a, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0x28, 0x76, 0x61, 0x6c, 0x2c, + 0x20, 0x31, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x20, 0x6f, + 0x72, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x20, + 0x3d, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x54, 0x72, 0x65, 0x61, 0x74, + 0x20, 0x61, 0x73, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x2d, 0x2d, + 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x73, 0x70, 0x61, 0x72, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x20, 0x69, 0x6e, 0x20, + 0x70, 0x61, 0x69, 0x72, 0x73, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x64, + 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x28, 0x6b, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x22, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x28, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x3a, 0x20, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x20, + 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x6b, + 0x65, 0x79, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x29, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x6e, 0x20, 0x2b, 0x20, 0x31, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x6e, 0x20, 0x7e, 0x3d, 0x20, 0x23, 0x76, 0x61, + 0x6c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x69, 0x6e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3a, 0x20, 0x73, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x22, + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x2c, 0x20, 0x76, + 0x20, 0x69, 0x6e, 0x20, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x28, 0x76, + 0x61, 0x6c, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, + 0x74, 0x28, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, + 0x65, 0x28, 0x76, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x29, 0x29, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5b, 0x76, 0x61, 0x6c, 0x5d, 0x20, + 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x22, 0x5b, 0x22, 0x20, 0x2e, 0x2e, 0x20, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x63, 0x61, 0x74, + 0x28, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x22, 0x2c, 0x22, 0x29, 0x20, 0x2e, + 0x2e, 0x20, 0x22, 0x5d, 0x22, 0x0a, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x54, 0x72, 0x65, + 0x61, 0x74, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x6b, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x61, 0x69, 0x72, + 0x73, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, + 0x6b, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x22, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x69, + 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x3a, 0x20, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x69, + 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x28, + 0x72, 0x65, 0x73, 0x2c, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, + 0x6b, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x29, 0x20, 0x2e, 0x2e, + 0x20, 0x22, 0x3a, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x65, 0x28, 0x76, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x29, + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5b, 0x76, 0x61, 0x6c, 0x5d, + 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x22, 0x7b, 0x22, 0x20, 0x2e, 0x2e, + 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x63, 0x61, + 0x74, 0x28, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x22, 0x2c, 0x22, 0x29, 0x20, + 0x2e, 0x2e, 0x20, 0x22, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, + 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, + 0x76, 0x61, 0x6c, 0x29, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x27, 0x22, 0x27, 0x20, 0x2e, 0x2e, 0x20, 0x76, 0x61, 0x6c, + 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x27, 0x5b, 0x25, 0x7a, 0x5c, 0x31, + 0x2d, 0x5c, 0x33, 0x31, 0x5c, 0x5c, 0x22, 0x5d, 0x27, 0x2c, 0x20, 0x65, + 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x29, 0x20, + 0x2e, 0x2e, 0x20, 0x27, 0x22, 0x27, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x0a, 0x20, + 0x20, 0x2d, 0x2d, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x4e, 0x61, 0x4e, 0x2c, 0x20, 0x2d, 0x69, 0x6e, 0x66, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x0a, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x76, 0x61, 0x6c, 0x20, 0x7e, 0x3d, 0x20, 0x76, 0x61, 0x6c, 0x20, + 0x6f, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x20, 0x3c, 0x3d, 0x20, 0x2d, 0x6d, + 0x61, 0x74, 0x68, 0x2e, 0x68, 0x75, 0x67, 0x65, 0x20, 0x6f, 0x72, 0x20, + 0x76, 0x61, 0x6c, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x68, 0x75, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x75, 0x6e, 0x65, + 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x27, 0x22, 0x20, + 0x2e, 0x2e, 0x20, 0x74, 0x6f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, + 0x76, 0x61, 0x6c, 0x29, 0x20, 0x2e, 0x2e, 0x20, 0x22, 0x27, 0x22, 0x29, + 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x2e, 0x31, 0x34, 0x67, + 0x22, 0x2c, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, + 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x20, 0x3d, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x6e, 0x69, 0x6c, 0x22, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x65, 0x6e, 0x63, 0x6f, + 0x64, 0x65, 0x5f, 0x6e, 0x69, 0x6c, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, + 0x22, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x20, 0x20, 0x20, 0x5d, 0x20, + 0x3d, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x22, 0x20, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, + 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x22, 0x20, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, + 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, + 0x5b, 0x20, 0x22, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x22, 0x20, + 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x2c, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, + 0x76, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x29, 0x0a, + 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x20, 0x3d, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x0a, 0x20, 0x20, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x5b, + 0x74, 0x5d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x66, 0x28, 0x76, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x75, 0x6e, 0x65, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x27, + 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x74, 0x20, 0x2e, 0x2e, 0x20, 0x22, 0x27, + 0x22, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6a, 0x73, 0x6f, 0x6e, 0x2e, 0x65, + 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x0a, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x20, 0x65, 0x6e, + 0x63, 0x6f, 0x64, 0x65, 0x28, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x29, 0x0a, + 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x0a, 0x2d, 0x2d, 0x20, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x0a, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x0a, 0x0a, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x28, + 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x20, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x31, 0x2c, 0x20, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x22, 0x23, 0x22, 0x2c, 0x20, 0x2e, + 0x2e, 0x2e, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x73, 0x5b, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, + 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x0a, 0x65, + 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x20, 0x20, 0x20, + 0x3d, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, + 0x28, 0x22, 0x20, 0x22, 0x2c, 0x20, 0x22, 0x5c, 0x74, 0x22, 0x2c, 0x20, + 0x22, 0x5c, 0x72, 0x22, 0x2c, 0x20, 0x22, 0x5c, 0x6e, 0x22, 0x29, 0x0a, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x5f, + 0x63, 0x68, 0x61, 0x72, 0x73, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x28, 0x22, 0x20, 0x22, + 0x2c, 0x20, 0x22, 0x5c, 0x74, 0x22, 0x2c, 0x20, 0x22, 0x5c, 0x72, 0x22, + 0x2c, 0x20, 0x22, 0x5c, 0x6e, 0x22, 0x2c, 0x20, 0x22, 0x5d, 0x22, 0x2c, + 0x20, 0x22, 0x7d, 0x22, 0x2c, 0x20, 0x22, 0x2c, 0x22, 0x29, 0x0a, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, + 0x63, 0x68, 0x61, 0x72, 0x73, 0x20, 0x20, 0x3d, 0x20, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x28, 0x22, 0x5c, 0x5c, 0x22, + 0x2c, 0x20, 0x22, 0x2f, 0x22, 0x2c, 0x20, 0x27, 0x22, 0x27, 0x2c, 0x20, + 0x22, 0x62, 0x22, 0x2c, 0x20, 0x22, 0x66, 0x22, 0x2c, 0x20, 0x22, 0x6e, + 0x22, 0x2c, 0x20, 0x22, 0x72, 0x22, 0x2c, 0x20, 0x22, 0x74, 0x22, 0x2c, + 0x20, 0x22, 0x75, 0x22, 0x29, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, + 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3d, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x65, 0x74, 0x28, 0x22, 0x74, 0x72, 0x75, 0x65, 0x22, 0x2c, 0x20, 0x22, + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x22, 0x2c, 0x20, 0x22, 0x6e, 0x75, 0x6c, + 0x6c, 0x22, 0x29, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, + 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x20, 0x3d, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x74, 0x72, 0x75, 0x65, + 0x22, 0x20, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, + 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x22, + 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x0a, + 0x20, 0x20, 0x5b, 0x20, 0x22, 0x6e, 0x75, 0x6c, 0x6c, 0x22, 0x20, 0x20, + 0x5d, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x0a, 0x7d, 0x0a, 0x0a, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x61, + 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x2c, 0x20, + 0x73, 0x65, 0x74, 0x2c, 0x20, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x29, + 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x69, + 0x64, 0x78, 0x2c, 0x20, 0x23, 0x73, 0x74, 0x72, 0x20, 0x64, 0x6f, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x73, 0x65, 0x74, 0x5b, 0x73, + 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x69, 0x2c, 0x20, 0x69, 0x29, + 0x5d, 0x20, 0x7e, 0x3d, 0x20, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x23, 0x73, 0x74, 0x72, 0x20, + 0x2b, 0x20, 0x31, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x2c, 0x20, + 0x6d, 0x73, 0x67, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, + 0x3d, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, + 0x63, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x3d, 0x20, + 0x31, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, + 0x31, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x64, + 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x20, 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x69, + 0x2c, 0x20, 0x69, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x5c, 0x6e, 0x22, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x3d, + 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, + 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, + 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x31, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, + 0x64, 0x0a, 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x28, 0x22, 0x25, 0x73, 0x20, 0x61, 0x74, 0x20, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x25, 0x64, 0x20, 0x63, 0x6f, 0x6c, 0x20, 0x25, 0x64, 0x22, 0x2c, + 0x20, 0x6d, 0x73, 0x67, 0x2c, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x29, 0x20, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x28, 0x6e, 0x29, + 0x0a, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x2e, 0x73, 0x69, 0x6c, + 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x63, 0x6d, 0x73, 0x2f, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x73, 0x2f, 0x70, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x68, + 0x70, 0x3f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x3d, 0x6e, 0x72, + 0x73, 0x69, 0x26, 0x69, 0x64, 0x3d, 0x69, 0x77, 0x73, 0x2d, 0x61, 0x70, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x78, 0x61, 0x0a, 0x20, 0x20, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x6e, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x78, 0x37, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x68, 0x61, + 0x72, 0x28, 0x6e, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x69, + 0x66, 0x20, 0x6e, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x78, 0x37, 0x66, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, + 0x63, 0x68, 0x61, 0x72, 0x28, 0x66, 0x28, 0x6e, 0x20, 0x2f, 0x20, 0x36, + 0x34, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x39, 0x32, 0x2c, 0x20, 0x6e, 0x20, + 0x25, 0x20, 0x36, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x32, 0x38, 0x29, 0x0a, + 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20, 0x6e, 0x20, 0x3c, + 0x3d, 0x20, 0x30, 0x78, 0x66, 0x66, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x68, 0x61, 0x72, + 0x28, 0x66, 0x28, 0x6e, 0x20, 0x2f, 0x20, 0x34, 0x30, 0x39, 0x36, 0x29, + 0x20, 0x2b, 0x20, 0x32, 0x32, 0x34, 0x2c, 0x20, 0x66, 0x28, 0x6e, 0x20, + 0x25, 0x20, 0x34, 0x30, 0x39, 0x36, 0x20, 0x2f, 0x20, 0x36, 0x34, 0x29, + 0x20, 0x2b, 0x20, 0x31, 0x32, 0x38, 0x2c, 0x20, 0x6e, 0x20, 0x25, 0x20, + 0x36, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x32, 0x38, 0x29, 0x0a, 0x20, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20, 0x6e, 0x20, 0x3c, 0x3d, 0x20, + 0x30, 0x78, 0x31, 0x30, 0x66, 0x66, 0x66, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x68, 0x61, 0x72, + 0x28, 0x66, 0x28, 0x6e, 0x20, 0x2f, 0x20, 0x32, 0x36, 0x32, 0x31, 0x34, + 0x34, 0x29, 0x20, 0x2b, 0x20, 0x32, 0x34, 0x30, 0x2c, 0x20, 0x66, 0x28, + 0x6e, 0x20, 0x25, 0x20, 0x32, 0x36, 0x32, 0x31, 0x34, 0x34, 0x20, 0x2f, + 0x20, 0x34, 0x30, 0x39, 0x36, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x32, 0x38, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x66, 0x28, 0x6e, 0x20, 0x25, 0x20, 0x34, 0x30, 0x39, 0x36, 0x20, + 0x2f, 0x20, 0x36, 0x34, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x32, 0x38, 0x2c, + 0x20, 0x6e, 0x20, 0x25, 0x20, 0x36, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x32, + 0x38, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x28, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x69, 0x6e, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x20, 0x75, 0x6e, 0x69, 0x63, 0x6f, 0x64, 0x65, + 0x20, 0x63, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x27, + 0x25, 0x78, 0x27, 0x22, 0x2c, 0x20, 0x6e, 0x29, 0x20, 0x29, 0x0a, 0x65, + 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x73, + 0x63, 0x61, 0x70, 0x65, 0x28, 0x73, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x6e, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x28, 0x20, 0x73, 0x3a, 0x73, 0x75, 0x62, + 0x28, 0x31, 0x2c, 0x20, 0x34, 0x29, 0x2c, 0x20, 0x20, 0x31, 0x36, 0x20, + 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e, 0x32, + 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x28, + 0x20, 0x73, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x37, 0x2c, 0x20, 0x31, 0x30, + 0x29, 0x2c, 0x20, 0x31, 0x36, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x2d, + 0x2d, 0x20, 0x53, 0x75, 0x72, 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x20, + 0x70, 0x61, 0x69, 0x72, 0x3f, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, + 0x32, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x28, + 0x28, 0x6e, 0x31, 0x20, 0x2d, 0x20, 0x30, 0x78, 0x64, 0x38, 0x30, 0x30, + 0x29, 0x20, 0x2a, 0x20, 0x30, 0x78, 0x34, 0x30, 0x30, 0x20, 0x2b, 0x20, + 0x28, 0x6e, 0x32, 0x20, 0x2d, 0x20, 0x30, 0x78, 0x64, 0x63, 0x30, 0x30, + 0x29, 0x20, 0x2b, 0x20, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x30, 0x29, + 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x74, 0x66, 0x38, + 0x28, 0x6e, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, + 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x73, 0x74, 0x72, + 0x2c, 0x20, 0x69, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x22, 0x22, 0x0a, 0x20, 0x20, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x69, 0x20, + 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, + 0x6b, 0x20, 0x3d, 0x20, 0x6a, 0x0a, 0x0a, 0x20, 0x20, 0x77, 0x68, 0x69, + 0x6c, 0x65, 0x20, 0x6a, 0x20, 0x3c, 0x3d, 0x20, 0x23, 0x73, 0x74, 0x72, + 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x62, 0x79, + 0x74, 0x65, 0x28, 0x6a, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x33, 0x32, 0x20, 0x74, 0x68, 0x65, + 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x63, 0x6f, + 0x64, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x73, 0x74, 0x72, + 0x2c, 0x20, 0x6a, 0x2c, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, + 0x69, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x29, 0x0a, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20, + 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x39, 0x32, 0x20, 0x74, 0x68, 0x65, 0x6e, + 0x20, 0x2d, 0x2d, 0x20, 0x60, 0x5c, 0x60, 0x3a, 0x20, 0x45, 0x73, 0x63, + 0x61, 0x70, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x73, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x20, 0x2e, 0x2e, 0x20, 0x73, + 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x6b, 0x2c, 0x20, 0x6a, 0x20, + 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6a, + 0x20, 0x3d, 0x20, 0x6a, 0x20, 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x20, 0x3d, + 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x6a, 0x2c, 0x20, + 0x6a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, + 0x63, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x75, 0x22, 0x20, 0x74, 0x68, 0x65, + 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x68, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x74, + 0x72, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x5e, 0x5b, 0x64, + 0x44, 0x5d, 0x5b, 0x38, 0x39, 0x61, 0x41, 0x62, 0x42, 0x5d, 0x25, 0x78, + 0x25, 0x78, 0x5c, 0x5c, 0x75, 0x25, 0x78, 0x25, 0x78, 0x25, 0x78, 0x25, + 0x78, 0x22, 0x2c, 0x20, 0x6a, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x6f, 0x72, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x5e, 0x25, 0x78, 0x25, 0x78, 0x25, + 0x78, 0x25, 0x78, 0x22, 0x2c, 0x20, 0x6a, 0x20, 0x2b, 0x20, 0x31, 0x29, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x73, 0x74, + 0x72, 0x2c, 0x20, 0x6a, 0x20, 0x2d, 0x20, 0x31, 0x2c, 0x20, 0x22, 0x69, + 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x75, 0x6e, 0x69, 0x63, 0x6f, + 0x64, 0x65, 0x20, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x69, 0x6e, + 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, + 0x72, 0x65, 0x73, 0x20, 0x2e, 0x2e, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x73, 0x63, + 0x61, 0x70, 0x65, 0x28, 0x68, 0x65, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x6a, 0x20, 0x2b, + 0x20, 0x23, 0x68, 0x65, 0x78, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x73, 0x63, 0x61, + 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x5b, 0x63, 0x5d, 0x20, + 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x6a, 0x20, 0x2d, + 0x20, 0x31, 0x2c, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x20, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, + 0x20, 0x27, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x63, 0x20, 0x2e, 0x2e, 0x20, + 0x22, 0x27, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, + 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x73, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x20, 0x2e, 0x2e, 0x20, + 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x5f, + 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x76, 0x5b, 0x63, 0x5d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x6a, 0x20, 0x2b, 0x20, 0x31, + 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, + 0x20, 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x34, 0x20, 0x74, 0x68, 0x65, + 0x6e, 0x20, 0x2d, 0x2d, 0x20, 0x60, 0x22, 0x60, 0x3a, 0x20, 0x45, 0x6e, + 0x64, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, + 0x72, 0x65, 0x73, 0x20, 0x2e, 0x2e, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, + 0x75, 0x62, 0x28, 0x6b, 0x2c, 0x20, 0x6a, 0x20, 0x2d, 0x20, 0x31, 0x29, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x6a, 0x20, 0x2b, 0x20, 0x31, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x6a, 0x20, 0x2b, 0x20, 0x31, 0x0a, + 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x64, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x73, 0x74, + 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x22, 0x65, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x20, + 0x71, 0x75, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x29, + 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x78, 0x20, 0x3d, + 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x28, 0x73, + 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x64, 0x65, 0x6c, 0x69, 0x6d, + 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x3a, + 0x73, 0x75, 0x62, 0x28, 0x69, 0x2c, 0x20, 0x78, 0x20, 0x2d, 0x20, 0x31, + 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e, 0x20, + 0x3d, 0x20, 0x74, 0x6f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x28, 0x73, + 0x29, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, + 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x73, + 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x27, + 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x73, 0x20, 0x2e, 0x2e, 0x20, 0x22, 0x27, + 0x22, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x2c, 0x20, 0x78, 0x0a, 0x65, + 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x28, 0x73, 0x74, + 0x72, 0x2c, 0x20, 0x69, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, + 0x68, 0x61, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, + 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x29, + 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x77, 0x6f, 0x72, + 0x64, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, + 0x69, 0x2c, 0x20, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x73, 0x5b, 0x77, 0x6f, 0x72, 0x64, 0x5d, 0x20, 0x74, 0x68, + 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, + 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, + 0x20, 0x69, 0x2c, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x27, 0x22, 0x20, + 0x2e, 0x2e, 0x20, 0x77, 0x6f, 0x72, 0x64, 0x20, 0x2e, 0x2e, 0x20, 0x22, + 0x27, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x5b, 0x77, 0x6f, 0x72, 0x64, 0x5d, + 0x2c, 0x20, 0x78, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x29, 0x0a, 0x20, 0x20, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x7b, + 0x7d, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e, 0x20, + 0x3d, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x69, 0x20, + 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, + 0x31, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x20, 0x78, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x20, 0x3d, + 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x28, 0x73, + 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x20, 0x2f, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x3f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x69, 0x2c, + 0x20, 0x69, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x5d, 0x22, 0x20, 0x74, + 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x20, + 0x3d, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x52, + 0x65, 0x61, 0x64, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x78, 0x2c, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x29, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x5b, 0x6e, 0x5d, 0x20, 0x3d, 0x20, + 0x78, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x6e, 0x20, + 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x4e, + 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, + 0x68, 0x61, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x2c, + 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x68, 0x72, 0x20, 0x3d, 0x20, 0x73, + 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x69, 0x2c, 0x20, 0x69, 0x29, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x69, 0x20, 0x2b, + 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x68, + 0x72, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x5d, 0x22, 0x20, 0x74, 0x68, 0x65, + 0x6e, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x20, 0x65, 0x6e, 0x64, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x68, 0x72, 0x20, 0x7e, + 0x3d, 0x20, 0x22, 0x2c, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x64, + 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, + 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x22, 0x65, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x27, 0x5d, 0x27, 0x20, 0x6f, 0x72, + 0x20, 0x27, 0x2c, 0x27, 0x22, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, + 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x0a, 0x65, 0x6e, 0x64, + 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, + 0x69, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, + 0x65, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x20, 0x20, 0x69, 0x20, + 0x3d, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x77, 0x68, + 0x69, 0x6c, 0x65, 0x20, 0x31, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6b, 0x65, 0x79, 0x2c, 0x20, + 0x76, 0x61, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x20, 0x3d, 0x20, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x28, 0x73, 0x74, + 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x63, 0x68, 0x61, 0x72, 0x73, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x20, 0x2f, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x69, 0x2c, + 0x20, 0x69, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x7d, 0x22, 0x20, 0x74, + 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x20, + 0x3d, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x52, + 0x65, 0x61, 0x64, 0x20, 0x6b, 0x65, 0x79, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x69, + 0x2c, 0x20, 0x69, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x27, 0x22, 0x27, 0x20, + 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, + 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, + 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x22, 0x65, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x65, 0x79, 0x22, 0x29, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6b, + 0x65, 0x79, 0x2c, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x29, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x52, 0x65, 0x61, 0x64, 0x20, 0x27, 0x3a, + 0x27, 0x20, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x63, 0x68, 0x61, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, + 0x2c, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, + 0x73, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, + 0x69, 0x2c, 0x20, 0x69, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x22, 0x3a, 0x22, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x22, 0x65, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x27, 0x3a, 0x27, 0x20, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x20, 0x6b, 0x65, 0x79, 0x22, 0x29, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, + 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x2c, + 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, + 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x2d, 0x20, 0x52, 0x65, 0x61, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x6c, 0x2c, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x28, 0x73, 0x74, 0x72, + 0x2c, 0x20, 0x69, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, + 0x53, 0x65, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x5b, + 0x6b, 0x65, 0x79, 0x5d, 0x20, 0x3d, 0x20, 0x76, 0x61, 0x6c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x4e, 0x65, 0x78, 0x74, 0x20, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x20, 0x3d, + 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x28, 0x73, + 0x74, 0x72, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, + 0x63, 0x68, 0x72, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, + 0x62, 0x28, 0x69, 0x2c, 0x20, 0x69, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x20, 0x3d, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x66, 0x20, 0x63, 0x68, 0x72, 0x20, 0x3d, 0x3d, 0x20, + 0x22, 0x7d, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x62, 0x72, 0x65, + 0x61, 0x6b, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x63, 0x68, 0x72, 0x20, 0x7e, 0x3d, 0x20, 0x22, 0x2c, 0x22, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, + 0x69, 0x2c, 0x20, 0x22, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x20, 0x27, 0x7d, 0x27, 0x20, 0x6f, 0x72, 0x20, 0x27, 0x2c, 0x27, 0x22, + 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, + 0x2c, 0x20, 0x69, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x20, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x66, 0x75, 0x6e, + 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x5b, 0x20, 0x27, 0x22, 0x27, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x0a, + 0x20, 0x20, 0x5b, 0x20, 0x22, 0x30, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x31, 0x22, 0x20, 0x5d, 0x20, + 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x32, 0x22, 0x20, + 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x33, + 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, + 0x22, 0x34, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, + 0x5b, 0x20, 0x22, 0x35, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x0a, + 0x20, 0x20, 0x5b, 0x20, 0x22, 0x36, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x37, 0x22, 0x20, 0x5d, 0x20, + 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x38, 0x22, 0x20, + 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x39, + 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, + 0x22, 0x2d, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x0a, 0x20, 0x20, + 0x5b, 0x20, 0x22, 0x74, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2c, + 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x66, 0x22, 0x20, 0x5d, 0x20, 0x3d, + 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, 0x6e, 0x22, 0x20, + 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, 0x22, + 0x5b, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2c, 0x0a, 0x20, 0x20, 0x5b, 0x20, + 0x22, 0x7b, 0x22, 0x20, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2c, 0x0a, 0x7d, 0x0a, + 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, + 0x69, 0x64, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x63, 0x68, 0x72, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x3a, 0x73, + 0x75, 0x62, 0x28, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x29, + 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, + 0x20, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x6d, + 0x61, 0x70, 0x5b, 0x63, 0x68, 0x72, 0x5d, 0x0a, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x28, 0x73, 0x74, 0x72, + 0x2c, 0x20, 0x69, 0x64, 0x78, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, + 0x0a, 0x20, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x69, 0x64, 0x78, + 0x2c, 0x20, 0x22, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, + 0x27, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x63, 0x68, 0x72, 0x20, 0x2e, 0x2e, + 0x20, 0x22, 0x27, 0x22, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6a, 0x73, 0x6f, + 0x6e, 0x2e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x73, 0x74, 0x72, + 0x29, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, + 0x73, 0x74, 0x72, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x22, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x65, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x67, 0x6f, 0x74, 0x20, 0x22, + 0x20, 0x2e, 0x2e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x73, 0x74, 0x72, + 0x29, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x64, + 0x78, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x28, 0x73, 0x74, + 0x72, 0x2c, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, + 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x2c, 0x20, 0x74, 0x72, + 0x75, 0x65, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x64, 0x78, 0x20, 0x3d, + 0x20, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x28, 0x73, + 0x74, 0x72, 0x2c, 0x20, 0x69, 0x64, 0x78, 0x2c, 0x20, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x73, 0x2c, 0x20, 0x74, 0x72, + 0x75, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x69, 0x64, 0x78, + 0x20, 0x3c, 0x3d, 0x20, 0x23, 0x73, 0x74, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x73, 0x74, 0x72, 0x2c, 0x20, + 0x69, 0x64, 0x78, 0x2c, 0x20, 0x22, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x22, 0x29, + 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x0a, 0x65, 0x6e, 0x64, 0x0a, + 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6a, 0x73, 0x6f, + 0x6e, 0x0a +}; +unsigned int json_len = 9638; + +#endif // json_H diff --git a/stdlib/tilemap.h b/stdlib/tilemap.h new file mode 100644 index 0000000000000000000000000000000000000000..5795bd7f0c0ac42f164126a3a071bd651ae9221e --- /dev/null +++ b/stdlib/tilemap.h @@ -0,0 +1,19 @@ +#ifndef tilemap_H +#define tilemap_H + +unsigned char tilemap[] = { + 0x2d, 0x2d, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, + 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x6f, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x20, 0x73, 0x74, 0x61, 0x6e, + 0x64, 0x61, 0x72, 0x64, 0x20, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x73, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x2d, 0x2d, 0x20, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x2e, 0x0a +}; +unsigned int tilemap_len = 124; + +#endif // tilemap_H diff --git a/tags b/tags index a81387e09c8134fba4f15c068792d6df9b7e8848..7fa7a4a93500310ca33443af96e092e7af0907ac 100644 --- a/tags +++ b/tags @@ -13,7 +13,8 @@ $(LUAC_T) vendor/lua-5.4.8/src/Makefile /^$(LUAC_T): $(LUAC_O) $(LUA_A)$/;" t $(LUA_A) vendor/lua-5.4.8/src/Makefile /^$(LUA_A): $(BASE_O)$/;" t $(LUA_T) vendor/lua-5.4.8/src/Makefile /^$(LUA_T): $(LUA_O) $(LUA_A)$/;" t $(PLATS) vendor/lua-5.4.8/Makefile /^$(PLATS) help test clean:$/;" t -$(PROG) Makefile /^$(PROG): lua *.c$/;" t +$(PROG) Makefile /^$(PROG): $(PROG_C)$/;" t +%.h Makefile /^%.h: %.lua$/;" t ABSLINEINFO vendor/lua-5.4.8/src/ldebug.h /^#define ABSLINEINFO /;" d ABSTKEYCONSTANT vendor/lua-5.4.8/src/lobject.h /^#define ABSTKEYCONSTANT /;" d AGEBITS vendor/lua-5.4.8/src/lgc.h /^#define AGEBITS /;" d @@ -57,6 +58,7 @@ BLEND_SUBTRACT_COLORS vendor/raylib-5.5_linux_amd64/include/raylib.h /^ BLEND_SUBTRACT_COLORS, \/\/ Blend textures subtracting colors (alternative)$/;" e enum:__anon77d6622f1203 BLUE vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define BLUE /;" d BROWN vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define BROWN /;" d BUFVFS vendor/lua-5.4.8/src/lobject.c /^#define BUFVFS /;" d file: +Basic Usage vendor/microtar-0.1.0/README.md /^## Basic Usage$/;" s chapter:microtar BeginBlendMode vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void BeginBlendMode(int mode); \/\/ Begin blending mode (alph/;" p typeref:typename:RLAPI void BeginDrawing vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void BeginDrawing(void); \/\/ Setup canvas (framebuffer/;" p typeref:typename:RLAPI void BeginMode2D vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void BeginMode2D(Camera2D camera); \/\/ Begin 2D mode with custom/;" p typeref:typename:RLAPI void @@ -86,11 +88,11 @@ CAMERA_PERSPECTIVE vendor/raylib-5.5_linux_amd64/include/raylib.h /^ CAMERA_PERSPECTIVE = 0, \/\/ Perspective projection$/;" e enum:__anon77d6622f1503 CAMERA_THIRD_PERSON vendor/raylib-5.5_linux_amd64/include/raylib.h /^ CAMERA_THIRD_PERSON \/\/ Camera third person$/;" e enum:__anon77d6622f1403 CAP_POSITION vendor/lua-5.4.8/src/lstrlib.c /^#define CAP_POSITION /;" d file: CAP_UNFINISHED vendor/lua-5.4.8/src/lstrlib.c /^#define CAP_UNFINISHED /;" d file: -CC Makefile /^CC ?= tcc$/;" m +CC Makefile /^CC ?= tcc$/;" m CC vendor/lua-5.4.8/src/Makefile /^CC= gcc -std=gnu99$/;" m CClosure vendor/lua-5.4.8/src/lobject.h /^typedef struct CClosure {$/;" s CClosure vendor/lua-5.4.8/src/lobject.h /^} CClosure;$/;" t typeref:struct:CClosure -CFLAGS Makefile /^CFLAGS := -std=c99 -v -g -I.\/vendor\/$(RAYLIB)\/include -I.\/vendor\/$(LUA)\/src$/;" m +CFLAGS Makefile /^CFLAGS := -std=c99 -v -g -I.\/vendor\/$(RAYLIB)\/include -I.\/vendor\/$(LUA)\/src$/;" m CFLAGS vendor/lua-5.4.8/src/Makefile /^CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_3 $(SYSCFLAGS) $(MYCFLAGS)$/;" m CIST_C vendor/lua-5.4.8/src/lstate.h /^#define CIST_C /;" d CIST_CLSRET vendor/lua-5.4.8/src/lstate.h /^#define CIST_CLSRET /;" d @@ -315,6 +317,7 @@ EndScissorMode vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void EndScissorMode(void); \/\/ End scissor mode$/;" p typeref:typename:RLAPI void EndShaderMode vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void EndShaderMode(void); \/\/ End custom shader drawing/;" p typeref:typename:RLAPI void EndTextureMode vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void EndTextureMode(void); \/\/ Ends drawing to render te/;" p typeref:typename:RLAPI void EndVrStereoMode vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void EndVrStereoMode(void); \/\/ End stereo rendering (req/;" p typeref:typename:RLAPI void +Error handling vendor/microtar-0.1.0/README.md /^## Error handling$/;" s chapter:microtar ExportAutomationEventList vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI bool ExportAutomationEventList(AutomationEventList list, const char *fileName); \/\/ Exp/;" p typeref:typename:RLAPI bool ExportDataAsCode vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI bool ExportDataAsCode(const unsigned char *data, int dataSize, const char *fileName); \/\//;" p typeref:typename:RLAPI bool ExportFontAsCode vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI bool ExportFontAsCode(Font font, const char *fileName); \/\//;" p typeref:typename:RLAPI bool @@ -876,7 +879,7 @@ L vendor/lua-5.4.8/src/lundump.c /^ lua_State *L;$/;" m struct:__anon98fd752a0108 typeref:typename:lua_State * file: L vendor/lua-5.4.8/src/lzio.h /^ lua_State *L; \/* Lua state (for reader) *\/$/;" m struct:Zio typeref:typename:lua_State * LClosure vendor/lua-5.4.8/src/lobject.h /^typedef struct LClosure {$/;" s LClosure vendor/lua-5.4.8/src/lobject.h /^} LClosure;$/;" t typeref:struct:LClosure -LDFLAGS Makefile /^LDFLAGS := -L.\/vendor\/$(RAYLIB)\/lib -lraylib -L.\/vendor\/$(LUA)\/src -llua -lm$/;" m +LDFLAGS Makefile /^LDFLAGS := -L.\/vendor\/$(RAYLIB)\/lib -lraylib -L.\/vendor\/$(LUA)\/src -llua -lm$/;" m LDFLAGS vendor/lua-5.4.8/src/Makefile /^LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)$/;" m LEVELS1 vendor/lua-5.4.8/src/lauxlib.c /^#define LEVELS1 /;" d file: LEVELS2 vendor/lua-5.4.8/src/lauxlib.c /^#define LEVELS2 /;" d file: @@ -906,7 +909,7 @@ LStream vendor/lua-5.4.8/src/liolib.c /^typedef luaL_Stream LStream;$/;" t typeref:typename:luaL_Stream file: LTfloatint vendor/lua-5.4.8/src/lvm.c /^l_sinline int LTfloatint (lua_Number f, lua_Integer i) {$/;" f typeref:typename:l_sinline int LTintfloat vendor/lua-5.4.8/src/lvm.c /^l_sinline int LTintfloat (lua_Integer i, lua_Number f) {$/;" f typeref:typename:l_sinline int LTnum vendor/lua-5.4.8/src/lvm.c /^l_sinline int LTnum (const TValue *l, const TValue *r) {$/;" f typeref:typename:l_sinline int -LUA Makefile /^LUA := lua-5.4.8$/;" m +LUA Makefile /^LUA := lua-5.4.8$/;" m LUAC_DATA vendor/lua-5.4.8/src/lundump.h /^#define LUAC_DATA /;" d LUAC_FORMAT vendor/lua-5.4.8/src/lundump.h /^#define LUAC_FORMAT /;" d LUAC_INT vendor/lua-5.4.8/src/lundump.h /^#define LUAC_INT /;" d @@ -1175,6 +1178,7 @@ Lerp vendor/raylib-5.5_linux_amd64/include/raymath.h /^RMAPI float Lerp(float start, float end, float amount)$/;" f typeref:typename:RMAPI float LexState vendor/lua-5.4.8/src/llex.h /^typedef struct LexState {$/;" s LexState vendor/lua-5.4.8/src/llex.h /^} LexState;$/;" t typeref:struct:LexState Libraries README.md /^## Libraries$/;" s chapter:Bidi - Game development framework +License vendor/microtar-0.1.0/README.md /^## License$/;" s chapter:microtar Linux vendor/lua-5.4.8/src/Makefile /^Linux linux: linux-noreadline$/;" t LoadAudioStream vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI AudioStream LoadAudioStream(unsigned int sampleRate, unsigned int sampleSize, unsigned int/;" p typeref:typename:RLAPI AudioStream LoadAutomationEventList vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI AutomationEventList LoadAutomationEventList(const char *fileName); \/\/ Loa/;" p typeref:typename:RLAPI AutomationEventList @@ -1291,6 +1295,7 @@ MAX_SIZET vendor/lua-5.4.8/src/llimits.h /^#define MAX_SIZET /;" d MAX_SIZET vendor/lua-5.4.8/src/lstrlib.c /^#define MAX_SIZET /;" d file: MC vendor/lua-5.4.8/src/lstrlib.c /^#define MC /;" d file: MEMERRMSG vendor/lua-5.4.8/src/lstring.h /^#define MEMERRMSG /;" d +MICROTAR_H vendor/microtar-0.1.0/src/microtar.h /^#define MICROTAR_H$/;" d MIN vendor/raylib-5.5_linux_amd64/include/rlgl.h /^ #define MIN(/;" d MINSIZEARRAY vendor/lua-5.4.8/src/lmem.c /^#define MINSIZEARRAY /;" d file: MINSTRTABSIZE vendor/lua-5.4.8/src/llimits.h /^#define MINSTRTABSIZE /;" d @@ -1317,6 +1322,23 @@ MOUSE_LEFT_BUTTON vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define MOUSE_LEFT_BUTTON /;" d MOUSE_MIDDLE_BUTTON vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define MOUSE_MIDDLE_BUTTON /;" d MOUSE_RIGHT_BUTTON vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define MOUSE_RIGHT_BUTTON /;" d MSGInvalid vendor/lua-5.4.8/src/lutf8lib.c /^#define MSGInvalid /;" d file: +MTAR_EBADCHKSUM vendor/microtar-0.1.0/src/microtar.h /^ MTAR_EBADCHKSUM = -6,$/;" e enum:__anonc24b2ada0103 +MTAR_EFAILURE vendor/microtar-0.1.0/src/microtar.h /^ MTAR_EFAILURE = -1,$/;" e enum:__anonc24b2ada0103 +MTAR_ENOTFOUND vendor/microtar-0.1.0/src/microtar.h /^ MTAR_ENOTFOUND = -8$/;" e enum:__anonc24b2ada0103 +MTAR_ENULLRECORD vendor/microtar-0.1.0/src/microtar.h /^ MTAR_ENULLRECORD = -7,$/;" e enum:__anonc24b2ada0103 +MTAR_EOPENFAIL vendor/microtar-0.1.0/src/microtar.h /^ MTAR_EOPENFAIL = -2,$/;" e enum:__anonc24b2ada0103 +MTAR_EREADFAIL vendor/microtar-0.1.0/src/microtar.h /^ MTAR_EREADFAIL = -3,$/;" e enum:__anonc24b2ada0103 +MTAR_ESEEKFAIL vendor/microtar-0.1.0/src/microtar.h /^ MTAR_ESEEKFAIL = -5,$/;" e enum:__anonc24b2ada0103 +MTAR_ESUCCESS vendor/microtar-0.1.0/src/microtar.h /^ MTAR_ESUCCESS = 0,$/;" e enum:__anonc24b2ada0103 +MTAR_EWRITEFAIL vendor/microtar-0.1.0/src/microtar.h /^ MTAR_EWRITEFAIL = -4,$/;" e enum:__anonc24b2ada0103 +MTAR_TBLK vendor/microtar-0.1.0/src/microtar.h /^ MTAR_TBLK = '4',$/;" e enum:__anonc24b2ada0203 +MTAR_TCHR vendor/microtar-0.1.0/src/microtar.h /^ MTAR_TCHR = '3',$/;" e enum:__anonc24b2ada0203 +MTAR_TDIR vendor/microtar-0.1.0/src/microtar.h /^ MTAR_TDIR = '5',$/;" e enum:__anonc24b2ada0203 +MTAR_TFIFO vendor/microtar-0.1.0/src/microtar.h /^ MTAR_TFIFO = '6'$/;" e enum:__anonc24b2ada0203 +MTAR_TLNK vendor/microtar-0.1.0/src/microtar.h /^ MTAR_TLNK = '1',$/;" e enum:__anonc24b2ada0203 +MTAR_TREG vendor/microtar-0.1.0/src/microtar.h /^ MTAR_TREG = '0',$/;" e enum:__anonc24b2ada0203 +MTAR_TSYM vendor/microtar-0.1.0/src/microtar.h /^ MTAR_TSYM = '2',$/;" e enum:__anonc24b2ada0203 +MTAR_VERSION vendor/microtar-0.1.0/src/microtar.h /^#define MTAR_VERSION /;" d MYCFLAGS vendor/lua-5.4.8/src/Makefile /^MYCFLAGS=$/;" m MYLDFLAGS vendor/lua-5.4.8/src/Makefile /^MYLDFLAGS=$/;" m MYLIBS vendor/lua-5.4.8/src/Makefile /^MYLIBS=$/;" m @@ -1564,8 +1586,9 @@ POS_k vendor/lua-5.4.8/src/lopcodes.h /^#define POS_k /;" d POS_sJ vendor/lua-5.4.8/src/lopcodes.h /^#define POS_sJ /;" d PRE vendor/lua-5.4.8/src/lobject.c /^#define PRE /;" d file: PRINTBIT vendor/lua-5.4.8/src/lctype.h /^#define PRINTBIT /;" d -PROG Makefile /^PROG := bidi$/;" m +PROG Makefile /^PROG := bidi$/;" m PROGNAME vendor/lua-5.4.8/src/luac.c /^#define PROGNAME /;" d file: +PROG_C Makefile /^PROG_C := main.c$/;" m PURPLE vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define PURPLE /;" d PauseAudioStream vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void PauseAudioStream(AudioStream stream); \/\/ Pause audio stream$/;" p typeref:typename:RLAPI void PauseMusicStream vendor/raylib-5.5_linux_amd64/include/raylib.h /^RLAPI void PauseMusicStream(Music music); \/\/ Pause music playing$/;" p typeref:typename:RLAPI void @@ -1625,7 +1648,7 @@ RAD2DEG vendor/raylib-5.5_linux_amd64/include/raymath.h /^ #define RAD2DEG /;" d RAD2DEG vendor/raylib-5.5_linux_amd64/include/rlgl.h /^ #define RAD2DEG /;" d RANLIB vendor/lua-5.4.8/src/Makefile /^RANLIB= ranlib$/;" m RANLIMIT vendor/lua-5.4.8/src/ltablib.c /^#define RANLIMIT /;" d file: -RAYLIB Makefile /^RAYLIB := raylib-5.5_linux_amd64$/;" m +RAYLIB Makefile /^RAYLIB := raylib-5.5_linux_amd64$/;" m RAYLIB_H vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define RAYLIB_H$/;" d RAYLIB_VERSION vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define RAYLIB_VERSION /;" d RAYLIB_VERSION_MAJOR vendor/raylib-5.5_linux_amd64/include/raylib.h /^#define RAYLIB_VERSION_MAJOR /;" d @@ -1903,6 +1926,8 @@ Ray vendor/raylib-5.5_linux_amd64/include/raylib.h /^typedef struct Ray {$/;" s Ray vendor/raylib-5.5_linux_amd64/include/raylib.h /^} Ray;$/;" t typeref:struct:Ray RayCollision vendor/raylib-5.5_linux_amd64/include/raylib.h /^typedef struct RayCollision {$/;" s RayCollision vendor/raylib-5.5_linux_amd64/include/raylib.h /^} RayCollision;$/;" t typeref:struct:RayCollision +Reading vendor/microtar-0.1.0/README.md /^#### Reading$/;" t section:microtar""Basic Usage +Reading vendor/microtar-0.1.0/README.md /^#### Reading$/;" t section:microtar""Wrapping a stream Rectangle vendor/raylib-5.5_linux_amd64/include/raylib.h /^typedef struct Rectangle {$/;" s Rectangle vendor/raylib-5.5_linux_amd64/include/raylib.h /^} Rectangle;$/;" t typeref:struct:Rectangle Remap vendor/raylib-5.5_linux_amd64/include/raymath.h /^RMAPI float Remap(float value, float inputStart, float inputEnd, float outputStart, float output/;" f typeref:typename:RMAPI float @@ -1983,6 +2008,7 @@ SPECIALS vendor/lua-5.4.8/src/lstrlib.c /^#define SPECIALS /;" d file: SParser vendor/lua-5.4.8/src/ldo.c /^struct SParser { \/* data to 'f_parser' *\/$/;" s file: SRand64 vendor/lua-5.4.8/src/lmathlib.c /^#define SRand64 /;" d file: SS vendor/lua-5.4.8/src/luac.c /^#define SS(/;" d file: +STDLIB_FILES Makefile /^STDLIB_FILES := $(wildcard stdlib\/*.lua)$/;" m STRCACHE_M vendor/lua-5.4.8/src/llimits.h /^#define STRCACHE_M /;" d STRCACHE_N vendor/lua-5.4.8/src/llimits.h /^#define STRCACHE_N /;" d SYSCFLAGS vendor/lua-5.4.8/src/Makefile /^SYSCFLAGS=$/;" m @@ -2188,6 +2214,7 @@ Texture2D vendor/raylib-5.5_linux_amd64/include/raylib.h /^typedef Texture Texture2D;$/;" t typeref:typename:Texture TextureCubemap vendor/raylib-5.5_linux_amd64/include/raylib.h /^typedef Texture TextureCubemap;$/;" t typeref:typename:Texture TextureFilter vendor/raylib-5.5_linux_amd64/include/raylib.h /^} TextureFilter;$/;" t typeref:enum:__anon77d6622f0e03 TextureWrap vendor/raylib-5.5_linux_amd64/include/raylib.h /^} TextureWrap;$/;" t typeref:enum:__anon77d6622f0f03 +Tiny framework for developing small video games. docs/index.html /^