diff options
Diffstat (limited to 'crawl-ref')
25 files changed, 2052 insertions, 1865 deletions
diff --git a/crawl-ref/docs/level_design.txt b/crawl-ref/docs/level_design.txt index d916bfdc00..ddef5dce5c 100644 --- a/crawl-ref/docs/level_design.txt +++ b/crawl-ref/docs/level_design.txt @@ -502,6 +502,14 @@ ROCKCOL: yellow the vault appears in. Should only be used for bazaars and other portal vaults. +FLOORTILE: (tile name string, e.g. "floor_tomb") + Like FLOORCOL, this overrides the default floor tiles used for + this level. If the tile specified has variations, those will be + used automatically. + +ROCKTILE: (tile name string, e.g. "wall_hive") + Same as FLOORTILE, but for rock walls. + ITEM: (list of items, separated by comma) These are used to help place specified items at specific places within a vault. They create an array with up to 8 positions. What's diff --git a/crawl-ref/source/dat/bazaar.des b/crawl-ref/source/dat/bazaar.des index f81df67cce..b63caea014 100644 --- a/crawl-ref/source/dat/bazaar.des +++ b/crawl-ref/source/dat/bazaar.des @@ -41,7 +41,6 @@ end function fixup_bazaar() dgn.fixup_stairs("stone_arch", "exit_portal_vault") - dgn.floor_halo("enter_shop", "yellow") if (dgn.get_floor_colour() == "black") then dgn.change_floor_colour(random_bazaar_colour()) @@ -50,6 +49,25 @@ function fixup_bazaar() if (dgn.get_rock_colour() == "black") then dgn.change_rock_colour("yellow") end + + local default = {rock="wall_vault", floor="floor_vault", halo="halo_vault"} + local tileset = { + blue = {rock="wall_brick_gray", floor="floor_grass", halo="halo_grass"}, + red = {rock="wall_pebble_red", floor="floor_vault", halo="halo_vault"}, + lightblue = {rock="wall_hive", floor="floor_grass", halo="halo_grass2"}, + magenta = {rock="wall_stone_gray", floor="floor_dirt", halo="halo_dirt"}, + green = {rock="wall_stone_gray", floor="floor_grass", halo="halo_grass"}, + } + + local tile = tileset[dgn.get_floor_colour()] + if (tile == nil) then + tile = default + end + + dgn.change_floor_tile(tile.floor) + dgn.change_rock_tile(tile.rock) + + dgn.floor_halo("enter_shop", "yellow", tile.halo) end dgn.set_lt_callback("bazaar", "fixup_bazaar") diff --git a/crawl-ref/source/dat/clua/ziggurat.lua b/crawl-ref/source/dat/clua/ziggurat.lua index 37d9446b26..63095862a5 100644 --- a/crawl-ref/source/dat/clua/ziggurat.lua +++ b/crawl-ref/source/dat/clua/ziggurat.lua @@ -169,6 +169,14 @@ local function clamp_in_bounds(x, y) return clamp_in(x, 2, dgn.GXM - 3), clamp_in(y, 2, dgn.GYM - 3) end +local function set_tiles_for_place(place) + local rock = dgn.lev_rocktile(place) + dgn.change_rock_tile(rock) + + local floor = dgn.lev_floortile(place) + dgn.change_floor_tile(floor) +end + local function set_floor_colour(colour) if not zig().level.floor_colour then zig().level.floor_colour = colour @@ -211,11 +219,15 @@ local function monster_creator_fn(arg) local atyp = type(arg) if atyp == "string" then local _, _, branch = string.find(arg, "^place:(%w+):") + local _, _, place = string.find(arg, "^place:(%w+):?") local mcreator = dgn.monster_fn(arg) local function mspec(x, y, nth) if branch then set_floor_colour(dgn.br_floorcol(branch)) end + if place then + set_tiles_for_place(place) + end return mcreator(x, y) end return { fn = mspec } @@ -753,4 +765,4 @@ local ziggurat_builders = util.keys(ziggurat_builder_map) function ziggurat_choose_builder() return util.random_from(ziggurat_builders) -end
\ No newline at end of file +end diff --git a/crawl-ref/source/dat/icecave.des b/crawl-ref/source/dat/icecave.des index c414ccb64e..a52036b9ee 100644 --- a/crawl-ref/source/dat/icecave.des +++ b/crawl-ref/source/dat/icecave.des @@ -46,6 +46,8 @@ function ice_cave_colours(e) e.colour("< = white") e.rockcol("white") e.floorcol("blue") + e.rocktile("wall_ice") + e.floortile("floor_ice") end }} diff --git a/crawl-ref/source/dat/lair.des b/crawl-ref/source/dat/lair.des index 06c0e67584..ab6c4d4347 100644 --- a/crawl-ref/source/dat/lair.des +++ b/crawl-ref/source/dat/lair.des @@ -764,10 +764,11 @@ ENDMAP # Shoal hut with rune inside # # Shoal:$ is hand-hacked to force lots of minivaults. -NAME: shoalhut_rune -TAGS: shoal_rune -SHUFFLE: ABCD -SUBST: A:x, B:x, C:x=, D=+ +NAME: shoalhut_rune +TAGS: shoal_rune +SHUFFLE: ABCD +SUBST: A:x, B:x, C:x=, D=+ +ROCKTILE: wall_vines MAP .xxCxx. xx...xx diff --git a/crawl-ref/source/dat/sewer.des b/crawl-ref/source/dat/sewer.des index 256520750a..161889e685 100644 --- a/crawl-ref/source/dat/sewer.des +++ b/crawl-ref/source/dat/sewer.des @@ -36,6 +36,8 @@ function sewer_colours(e) e.floorcol("lightgrey") e.colour("w = green") e.colour("W = lightgreen") + e.rocktile("wall_slime") + e.floortile("floor_slime") end }} diff --git a/crawl-ref/source/dat/zot.des b/crawl-ref/source/dat/zot.des index d8de119f9e..52dd9d559a 100644 --- a/crawl-ref/source/dat/zot.des +++ b/crawl-ref/source/dat/zot.des @@ -294,6 +294,8 @@ MARKER: Z = lua:item_pickup_change_flags { \ } FLOORCOL: magenta ROCKCOL: lightmagenta +FLOORTILE:floor_tomb +ROCKTILE: wall_zot_magenta #traps SUBST: C = c:1000 = @@ -369,6 +371,8 @@ TAGS: transparent ORIENT: float FLOORCOL: lightgrey ROCKCOL: lightgrey +FLOORTILE:floor_tomb +ROCKTILE: wall_zot_gray MAP . ENDMAP @@ -379,6 +383,8 @@ TAGS: transparent ORIENT: float FLOORCOL: lightgrey ROCKCOL: blue +FLOORTILE:floor_tomb +ROCKTILE: wall_zot_blue MAP . ENDMAP @@ -389,6 +395,8 @@ TAGS: transparent ORIENT: float FLOORCOL: blue ROCKCOL: lightblue +FLOORTILE:floor_tomb +ROCKTILE: wall_zot_cyan MAP . ENDMAP @@ -399,6 +407,8 @@ TAGS: transparent ORIENT: float FLOORCOL: lightblue ROCKCOL: magenta +FLOORTILE:floor_tomb +ROCKTILE: wall_zot_blue MAP . ENDMAP diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index 459853da53..56c37fc72e 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -792,6 +792,14 @@ void dgn_register_place(const vault_placement &place, bool register_vault) if (place.map.rock_colour != BLACK) env.rock_colour = place.map.rock_colour; + +#ifdef USE_TILE + if (place.map.rock_tile != 0) + env.tile_default.wall = place.map.rock_tile; + + if (place.map.floor_tile != 0) + env.tile_default.floor = place.map.floor_tile; +#endif } static bool _ensure_vault_placed(bool vault_success) diff --git a/crawl-ref/source/externs.h b/crawl-ref/source/externs.h index 4b61bbc9b8..dd52521d4c 100644 --- a/crawl-ref/source/externs.h +++ b/crawl-ref/source/externs.h @@ -31,11 +31,11 @@ struct tile_flavour { // The floor tile to use. - unsigned char floor; + unsigned short floor; // The wall tile to use. - unsigned char wall; + unsigned short wall; // Used as a random value or for special cases e.g. (bazaars, gates). - unsigned char special; + unsigned short special; }; // A glorified unsigned int that assists with ref-counting the mcache. @@ -1621,12 +1621,13 @@ public: #ifdef USE_TILE // indexed by grid coords - FixedArray<tile_fg_store, GXM, GYM> tile_bk_fg; // tile fg - FixedArray<unsigned int, GXM, GYM> tile_bk_bg; // tile bg + FixedArray<tile_fg_store, GXM, GYM> tile_bk_fg; + FixedArray<unsigned int, GXM, GYM> tile_bk_bg; FixedArray<tile_flavour, GXM, GYM> tile_flv; // indexed by (show-1) coords FixedArray<unsigned int,ENV_SHOW_DIAMETER-2,ENV_SHOW_DIAMETER-2> tile_fg; FixedArray<unsigned int,ENV_SHOW_DIAMETER-2,ENV_SHOW_DIAMETER-2> tile_bg; + tile_flavour tile_default; #endif FixedVector< cloud_struct, MAX_CLOUDS > cloud; // cloud list diff --git a/crawl-ref/source/files.cc b/crawl-ref/source/files.cc index 47b413b01b..cb3ea53ddf 100644 --- a/crawl-ref/source/files.cc +++ b/crawl-ref/source/files.cc @@ -1144,6 +1144,12 @@ bool load( dungeon_feature_type stair_taken, load_mode_type load_mode, Generated_Levels.insert(level_id::current()); } +#ifdef USE_TILE + tiles.load_dungeon(NULL, you.pos().x, you.pos().y); + tile_init_default_flavour(); + tile_clear_flavour(); +#endif + _clear_env_map(); builder(you.your_level, you.level_type); just_created_level = true; diff --git a/crawl-ref/source/luadgn.cc b/crawl-ref/source/luadgn.cc index 3001efbe10..3779029295 100644 --- a/crawl-ref/source/luadgn.cc +++ b/crawl-ref/source/luadgn.cc @@ -1559,11 +1559,36 @@ static int dgn_fixup_stairs(lua_State *ls) return (0); } +#ifdef USE_TILE +static unsigned int _get_tile_idx(lua_State *ls, int arg) +{ + if (!lua_isstring(ls, arg)) + { + luaL_argerror(ls, arg, "Expected string for tile name"); + return 0; + } + + const char *tile_name = luaL_checkstring(ls, arg); + + unsigned int idx; + if (!tile_dngn_index(tile_name, idx)) + { + std::string error = "Couldn't find tile '"; + error += tile_name; + error += "'"; + luaL_argerror(ls, arg, error.c_str()); + return 0; + } + + return idx; +} +#endif + static int dgn_floor_halo(lua_State *ls) { std::string error = ""; - const char* s1 = luaL_checkstring(ls, 1); + const char *s1 = luaL_checkstring(ls, 1); const dungeon_feature_type target = dungeon_feature_by_name(s1); if (target == DNGN_UNSEEN) @@ -1573,7 +1598,7 @@ static int dgn_floor_halo(lua_State *ls) error += "'. "; } - const char* s2 = luaL_checkstring(ls, 2); + const char *s2 = luaL_checkstring(ls, 2); short colour = str_to_colour(s2); if (colour == -1) @@ -1615,6 +1640,24 @@ static int dgn_floor_halo(lua_State *ls) } } +#ifdef USE_TILE + unsigned int tile = _get_tile_idx(ls, 3); + if (!tile) + return (0); + if (tile_dngn_count(tile) != 9) + { + error += "'"; + error += luaL_checkstring(ls, 3); + error += "' is not a valid halo tile. It has "; + error += tile_dngn_count(tile); + error += " variations, but needs exactly 9."; + luaL_argerror(ls, 3, error.c_str()); + return (0); + } + + tile_floor_halo(target, tile); +#endif + return (0); } @@ -2314,6 +2357,16 @@ BRANCHFN(parent_branch, string, br.parent_branch == NUM_BRANCHES ? "" : branches[br.parent_branch].abbrevname) +#define LEVEL(lev, br, pos) \ + const char *level_name = luaL_checkstring(ls, pos); \ + level_area_type lev = str_to_level_area_type(level_name); \ + if (lev == NUM_LEVEL_AREA_TYPES) \ + luaL_error(ls, "Expected level name"); \ + const char *branch_name = luaL_checkstring(ls, pos); \ + branch_type br = str_to_branch(branch_name); \ + if (lev == LEVEL_DUNGEON && br == NUM_BRANCHES) \ + luaL_error(ls, "Expected branch name"); + static void push_level_id(lua_State *ls, const level_id &lid) { // We're skipping the constructor; naughty, but level_id has no @@ -2585,7 +2638,97 @@ LUAFN(_dgn_reuse_map) return (0); } -static int dgn_debug_dump_map(lua_State *ls) +LUAFN(dgn_lev_floortile) +{ +#ifdef USE_TILE + LEVEL(lev, br, 1); + + tile_flavour flv; + tile_default_flv(lev, br, flv); + + const char *tile_name = tile_dngn_name(flv.floor); + PLUARET(string, tile_name); +#else + PLUARET(string, "invalid"); +#endif +} + +LUAFN(dgn_lev_rocktile) +{ +#ifdef USE_TILE + LEVEL(lev, br, 1); + + tile_flavour flv; + tile_default_flv(lev, br, flv); + + const char *tile_name = tile_dngn_name(flv.wall); + PLUARET(string, tile_name); +#else + PLUARET(string, "invalid"); +#endif +} + +LUAFN(dgn_rocktile) +{ + MAP(ls, 1, map); + +#ifdef USE_TILE + unsigned short tile = _get_tile_idx(ls, 2); + map->rock_tile = tile; + + const char *tile_name = tile_dngn_name(tile); + PLUARET(string, tile_name); +#else + UNUSED(map); + PLUARET(string, "invalid"); +#endif +} + +LUAFN(dgn_floortile) +{ + MAP(ls, 1, map); + +#ifdef USE_TILE + unsigned short tile = _get_tile_idx(ls, 2); + map->floor_tile = tile; + + const char *tile_name = tile_dngn_name(tile); + PLUARET(string, tile_name); +#else + UNUSED(map); + PLUARET(string, "invalid"); +#endif +} + +LUAFN(dgn_change_rock_tile) +{ +#ifdef USE_TILE + unsigned short tile = _get_tile_idx(ls, 1); + if (tile) + env.tile_default.wall = tile; + + const char *tile_name = tile_dngn_name(tile); + PLUARET(string, tile_name); +#else + PLUARET(string, "invalid"); +#endif +} + +LUAFN(dgn_change_floor_tile) +{ +#ifdef USE_TILE + unsigned short tile = _get_tile_idx(ls, 1); + if (tile) + env.tile_default.floor = tile; + + const char *tile_name = tile_dngn_name(tile); + PLUARET(string, tile_name); +#else + PLUARET(string, "invalid"); +#endif +} + +LUAFN(dgn_debug_dump_map) { const int pos = lua_isuserdata(ls, 1) ? 2 : 1; if (lua_isstring(ls, pos)) @@ -2723,6 +2866,13 @@ static const struct luaL_reg dgn_lib[] = { "get_special_room_info", dgn_get_special_room_info }, + { "rocktile", dgn_rocktile }, + { "floortile", dgn_floortile }, + { "change_rock_tile", dgn_change_rock_tile }, + { "change_floor_tile", dgn_change_floor_tile }, + { "lev_floortile", dgn_lev_floortile }, + { "lev_rocktile", dgn_lev_rocktile }, + { "debug_dump_map", dgn_debug_dump_map }, { NULL, NULL } diff --git a/crawl-ref/source/mapdef.cc b/crawl-ref/source/mapdef.cc index c73fe63413..da1afa86b9 100644 --- a/crawl-ref/source/mapdef.cc +++ b/crawl-ref/source/mapdef.cc @@ -1198,7 +1198,8 @@ map_def::map_def() weight_depth_mult(), weight_depth_div(), welcome_messages(), map(), mons(), items(), keyspecs(), prelude("dlprelude"), main("dlmain"), validate("dlvalidate"), veto("dlveto"), rock_colour(BLACK), - floor_colour(BLACK), index_only(false), cache_offset(0L) + floor_colour(BLACK), rock_tile(0), floor_tile(0), + index_only(false), cache_offset(0L) { init(); } @@ -1228,6 +1229,7 @@ void map_def::reinit() welcome_messages.clear(); rock_colour = floor_colour = BLACK; + rock_tile = floor_tile = 0; // Chance of using this level. Nonzero chance should be used // sparingly. When selecting vaults for a place, first those diff --git a/crawl-ref/source/mapdef.h b/crawl-ref/source/mapdef.h index 25c13cffc8..8b2a40260e 100644 --- a/crawl-ref/source/mapdef.h +++ b/crawl-ref/source/mapdef.h @@ -649,6 +649,7 @@ public: map_def *original; unsigned char rock_colour, floor_colour; + int rock_tile, floor_tile; private: // This map has been loaded from an index, and not fully realised. diff --git a/crawl-ref/source/prebuilt/levcomp.lex.cc b/crawl-ref/source/prebuilt/levcomp.lex.cc index 8dc04ac0c8..3f12981f31 100644 --- a/crawl-ref/source/prebuilt/levcomp.lex.cc +++ b/crawl-ref/source/prebuilt/levcomp.lex.cc @@ -9,7 +9,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 34 +#define YY_FLEX_SUBMINOR_VERSION 33 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -31,7 +31,7 @@ /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#if __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. @@ -94,12 +94,11 @@ typedef unsigned int flex_uint32_t; #else /* ! __cplusplus */ -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) +#if __STDC__ #define YY_USE_CONST -#endif /* defined (__STDC__) */ +#endif /* __STDC__ */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST @@ -195,13 +194,11 @@ extern FILE *yyin, *yyout; /* The following is because we cannot portably get our hands on size_t * (without autoconf's help, which isn't available because we want * flex-generated scanners to compile on their own). - * Given that the standard has decreed that size_t exists since 1989, - * I guess we can afford to depend on it. Manoj. */ #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; +typedef unsigned int yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -380,8 +377,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 75 -#define YY_END_OF_BUFFER 76 +#define YY_NUM_RULES 77 +#define YY_END_OF_BUFFER 78 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -389,38 +386,38 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[974] = +static yyconst flex_int16_t yy_accept[1012] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 74, 71, 72, - 73, 69, 74, 67, 70, 68, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 71, 34, 36, 74, 74, 74, 74, 74, - 74, 75, 6, 75, 75, 4, 2, 3, 75, 2, - 2, 2, 2, 9, 10, 75, 9, 9, 75, 12, - 75, 32, 71, 33, 73, 32, 32, 32, 32, 32, + 0, 0, 0, 0, 0, 0, 78, 76, 73, 74, + 75, 71, 76, 69, 72, 70, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 73, 34, 36, 76, 76, 76, 76, 76, + 76, 77, 6, 77, 77, 4, 2, 3, 77, 2, + 2, 2, 2, 9, 10, 77, 9, 9, 77, 12, + 77, 32, 73, 33, 75, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 71, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 73, 32, 32, - 32, 32, 32, 32, 32, 32, 74, 28, 23, 28, - 69, 74, 27, 70, 68, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 28, 34, 36, 74, 74, 74, 74, 74, - 74, 15, 16, 73, 13, 13, 13, 13, 13, 13, + 32, 32, 32, 32, 32, 32, 76, 28, 23, 28, + 71, 76, 27, 72, 70, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 28, 34, 36, 76, 76, 76, 76, 76, + 76, 15, 16, 75, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 74, 13, 15, 13, 13, 13, 13, 13, - 75, 21, 22, 75, 20, 75, 71, 72, 70, 0, + 13, 13, 76, 13, 15, 13, 13, 13, 13, 13, + 77, 21, 22, 77, 20, 77, 73, 74, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 71, 34, 36, 0, 0, 0, 0, 34, 0, + 0, 73, 34, 36, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 39, 6, 5, 0, 0, 2, 3, 2, 0, 2, 2, 2, 2, 9, 9, 10, 9, 9, 9, 0, 11, 0, 12, 31, - 0, 31, 71, 33, 0, 0, 33, 31, 31, 31, + 0, 31, 73, 33, 0, 0, 33, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 0, - 30, 31, 71, 31, 34, 31, 31, 31, 31, 31, + 30, 31, 73, 31, 34, 31, 31, 31, 31, 31, 31, 31, 31, 31, 26, 0, 26, 28, 23, 28, 0, 23, 26, 26, 26, 26, 26, 26, 26, 26, @@ -462,42 +459,47 @@ static yyconst flex_int16_t yy_accept[974] = 26, 26, 26, 26, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 0, 0, 0, 0, 0, 0, 60, 0, - 0, 0, 0, 0, 0, 59, 42, 0, 0, 0, - 0, 0, 0, 51, 0, 0, 0, 38, 0, 0, - 0, 0, 2, 31, 31, 31, 31, 31, 31, 31, + 13, 13, 0, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 61, 42, 0, 0, 0, + 0, 0, 0, 0, 51, 0, 0, 0, 38, 0, + 0, 0, 0, 2, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 0, 31, 26, 26, 26, 26, 26, 26, 26, + 31, 31, 31, 0, 31, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 0, 26, 13, 13, 13, 13, 13, 13, 13, + 26, 26, 26, 26, 0, 26, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 0, 0, 0, 44, - 50, 0, 63, 64, 66, 65, 0, 0, 0, 0, - 46, 0, 0, 54, 0, 0, 0, 0, 0, 41, - 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 0, 0, 0, 44, 50, 0, 0, 65, 66, 68, + 67, 0, 0, 0, 0, 46, 0, 0, 0, 54, + 0, 0, 0, 0, 0, 41, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 26, 26, 26, 26, 26, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 53, 48, 56, 0, 52, 61, - 55, 45, 0, 0, 49, 0, 0, 0, 0, 1, + 13, 13, 13, 13, 13, 13, 53, 48, 56, 0, + 0, 52, 63, 55, 45, 0, 0, 0, 49, 0, + 0, 0, 0, 1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 13, 13, 13, 13, 13, 13, 13, 0, 58, 62, - 47, 0, 0, 0, 0, 31, 31, 31, 31, 31, - 0, 31, 31, 26, 26, 26, 26, 26, 0, 26, - 26, 13, 13, 13, 57, 0, 37, 0, 0, 31, - 31, 31, 0, 31, 26, 26, 26, 0, 26, 13, - 0, 40, 31, 31, 26, 26, 13, 0, 31, 26, - 13, 0, 31, 26, 13, 0, 31, 26, 13, 43, - 31, 26, 0 + 31, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 0, 0, 58, + 0, 64, 47, 0, 0, 0, 0, 31, 31, 31, + 31, 31, 31, 31, 0, 31, 31, 26, 26, 26, + 26, 26, 26, 26, 0, 26, 26, 13, 13, 13, + 13, 13, 57, 0, 60, 0, 37, 0, 0, 31, + 31, 31, 31, 31, 0, 31, 26, 26, 26, 26, + 26, 0, 26, 13, 13, 59, 0, 40, 31, 31, + 31, 26, 26, 26, 13, 0, 31, 26, 13, 0, + + 31, 26, 13, 0, 31, 26, 13, 43, 31, 26, + 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -541,231 +543,241 @@ static yyconst flex_int32_t yy_meta[51] = 6, 6, 6, 6, 6, 6, 6, 6, 1, 1 } ; -static yyconst flex_int16_t yy_base[991] = +static yyconst flex_int16_t yy_base[1029] = { 0, 0, 49, 53, 60, 64, 66, 49, 68, 116, 165, - 214, 263, 312, 361, 76, 170, 2035, 3243, 71, 3243, - 2031, 3243, 2007, 3243, 2006, 3243, 1998, 55, 1996, 1985, - 1967, 66, 1975, 73, 76, 1959, 1960, 1951, 63, 1955, - 1937, 1915, 409, 0, 3243, 75, 1900, 1900, 68, 64, - 1894, 3243, 3243, 1935, 177, 3243, 0, 3243, 1934, 181, - 0, 1906, 151, 1878, 3243, 1924, 58, 1869, 184, 3243, - 1914, 268, 275, 3243, 366, 373, 378, 383, 388, 392, + 214, 263, 312, 361, 76, 170, 2173, 3341, 71, 3341, + 2151, 3341, 2131, 3341, 2126, 3341, 2112, 55, 2107, 2096, + 2088, 66, 2096, 73, 76, 2084, 2073, 2066, 63, 2076, + 2065, 2041, 409, 0, 3341, 75, 2029, 2025, 68, 64, + 2010, 3341, 3341, 2051, 177, 3341, 0, 3341, 2039, 181, + 0, 2015, 151, 1985, 3341, 2031, 58, 1968, 184, 3341, + 2014, 268, 275, 3341, 366, 373, 378, 383, 388, 392, 414, 426, 432, 437, 460, 465, 470, 474, 480, 493, 501, 507, 511, 515, 519, 535, 528, 552, 542, 546, - 562, 556, 566, 577, 583, 589, 269, 602, 3243, 610, - 374, 422, 3243, 590, 379, 614, 623, 624, 625, 629, + 562, 556, 566, 577, 583, 589, 269, 602, 3341, 610, + 374, 422, 3341, 590, 379, 614, 623, 624, 625, 629, 649, 635, 659, 660, 637, 673, 650, 680, 674, 686, 713, 687, 723, 697, 708, 717, 727, 731, 733, 735, - 743, 750, 3243, 777, 1898, 1896, 0, 1886, 149, 1884, - 1867, 1859, 173, 1871, 165, 182, 1854, 1857, 1850, 169, - 1863, 1858, 279, 1834, 783, 180, 1820, 1817, 241, 162, - 757, 791, 3243, 795, 3243, 799, 102, 3243, 1846, 1824, - 1833, 1789, 1784, 263, 1794, 1790, 1775, 272, 1781, 1773, - 1775, 1775, 1766, 1776, 1778, 1751, 1733, 1750, 1738, 91, - - 1718, 0, 0, 3243, 1704, 1703, 165, 1696, 0, 263, - 1707, 1703, 1724, 242, 1694, 1685, 3243, 3243, 3243, 1725, - 290, 0, 3243, 0, 1724, 293, 1695, 1681, 378, 1647, - 1646, 3243, 255, 1642, 803, 361, 3243, 1687, 3243, 808, - 814, 818, 832, 3243, 836, 841, 3243, 845, 853, 858, + 743, 750, 3341, 777, 2005, 2002, 0, 1991, 149, 1981, + 1969, 1957, 173, 1960, 165, 182, 1939, 1930, 1925, 169, + 1934, 1927, 279, 1906, 783, 180, 1891, 1893, 241, 162, + 757, 791, 3341, 795, 3341, 799, 102, 3341, 1921, 1904, + 1914, 1895, 1889, 263, 1892, 1890, 1873, 272, 1877, 1862, + 1864, 1864, 1851, 1860, 1864, 1861, 1843, 1857, 1848, 91, + + 1823, 0, 0, 3341, 1810, 1804, 165, 1797, 0, 263, + 1778, 1775, 1798, 242, 1766, 1760, 3341, 3341, 3341, 1802, + 290, 0, 3341, 0, 1799, 293, 1785, 1774, 378, 1748, + 1747, 3341, 255, 1741, 803, 361, 3341, 1763, 3341, 808, + 814, 818, 832, 3341, 836, 841, 3341, 845, 853, 858, 870, 863, 876, 881, 891, 897, 907, 912, 919, 925, 933, 938, 945, 950, 960, 969, 976, 981, 987, 993, - 3243, 1000, 0, 1012, 1018, 1026, 1035, 1031, 1039, 1043, - 1049, 1057, 1053, 1066, 825, 871, 1076, 1099, 3243, 1103, - 1109, 3243, 1084, 1091, 1114, 1115, 1119, 1127, 1121, 1126, + 3341, 1000, 0, 1012, 1018, 1026, 1035, 1031, 1039, 1043, + 1049, 1057, 1053, 1066, 825, 871, 1076, 1099, 3341, 1103, + 1109, 3341, 1084, 1091, 1114, 1115, 1119, 1127, 1121, 1126, 1139, 1154, 1140, 1160, 1161, 1166, 1167, 1175, 1173, 1177, - 1188, 1200, 1208, 1214, 1221, 3243, 1226, 1213, 0, 1235, + 1188, 1200, 1208, 1214, 1221, 3341, 1226, 1213, 0, 1235, 1241, 1254, 1262, 1231, 1247, 1266, 1268, 1275, 1280, 1281, - 1301, 3243, 1315, 1319, 1293, 3243, 0, 1662, 1636, 1640, - 1614, 1602, 378, 1606, 1605, 1575, 416, 1578, 1567, 1555, - 1547, 1539, 1549, 1552, 1549, 1531, 1546, 1526, 286, 1326, - 3243, 1502, 0, 416, 1496, 1487, 1510, 395, 1473, 1463, - 1305, 1306, 1339, 1343, 3243, 1348, 1352, 1332, 1356, 3243, - 1360, 1495, 1476, 1473, 1467, 1477, 1467, 1467, 1470, 1463, - 1445, 1448, 1449, 1435, 1419, 1429, 1428, 1424, 1419, 1410, - - 1405, 1387, 1386, 1394, 1394, 1364, 1365, 524, 1348, 1360, - 1347, 1334, 1350, 1376, 1381, 1389, 3243, 1393, 1398, 3243, + 1301, 3341, 1315, 1319, 1293, 3341, 0, 1754, 1740, 1744, + 1732, 1723, 378, 1730, 1728, 1711, 416, 1716, 1708, 1709, + 1706, 1696, 1706, 1698, 1692, 1665, 1682, 1673, 286, 1326, + 3341, 1652, 0, 416, 1638, 1623, 1640, 395, 1597, 1584, + 1305, 1306, 1339, 1343, 3341, 1348, 1352, 1332, 1356, 3341, + 1360, 1610, 1596, 1579, 1571, 1577, 1554, 1547, 1558, 1553, + 1535, 1538, 1550, 1537, 1515, 1523, 1517, 1507, 1508, 1491, + + 1491, 1478, 1472, 1481, 1483, 1461, 1365, 524, 1453, 1464, + 1443, 1438, 1450, 1376, 1381, 1389, 3341, 1393, 1398, 3341, 1402, 1406, 1410, 1416, 1420, 1433, 1443, 1451, 1455, 1461, 1467, 1477, 1486, 1482, 1502, 1508, 1513, 1517, 1524, 1533, 1539, 1544, 1550, 1557, 1564, 1581, 1585, 1590, 1595, 1599, - 1603, 1607, 1616, 1623, 3243, 1425, 1630, 1608, 1548, 1634, + 1603, 1607, 1616, 1623, 3341, 1425, 1630, 1608, 1548, 1634, 1643, 1644, 1649, 1650, 1664, 1665, 1654, 1674, 1670, 1680, 1684, 1459, 1689, 1698, 1707, 1715, 1714, 1720, 1719, 1700, - 1724, 1758, 1766, 1770, 1750, 1774, 1775, 1776, 1780, 1361, - 1346, 1344, 1307, 1314, 1305, 1300, 1299, 1284, 1269, 1268, - - 1279, 1266, 1257, 1261, 1262, 1257, 1257, 1239, 1243, 1230, - 1224, 1234, 1226, 1197, 1784, 572, 1180, 1189, 1172, 1166, - 1791, 3243, 1815, 1187, 1189, 1171, 1178, 1167, 1156, 1172, - 1152, 1151, 1135, 1127, 1133, 1134, 1138, 1134, 1106, 1109, - 1117, 1115, 1104, 1078, 1085, 1072, 1063, 1041, 1824, 3243, - 741, 1036, 1037, 1046, 766, 1062, 1828, 3243, 1832, 1836, - 3243, 1840, 1845, 1850, 1819, 1854, 1864, 1858, 1868, 1891, + 1724, 1758, 1766, 1770, 1750, 1774, 1775, 1776, 1780, 1461, + 1436, 1431, 1418, 1427, 1415, 1416, 1421, 1416, 1393, 1391, + + 1403, 1390, 1379, 1382, 1375, 1371, 1372, 1353, 1357, 1344, + 1342, 1352, 1323, 1298, 1784, 572, 1291, 1297, 1272, 1259, + 1791, 3341, 1815, 1280, 1279, 1260, 1269, 1257, 1249, 1264, + 1243, 1247, 1239, 1231, 1241, 1237, 1241, 1229, 1202, 1195, + 1200, 420, 1194, 1177, 1194, 1184, 1176, 1151, 1824, 3341, + 741, 1148, 1138, 1148, 766, 1170, 1828, 3341, 1832, 1836, + 3341, 1840, 1845, 1850, 1819, 1854, 1864, 1858, 1868, 1891, 1895, 1901, 1906, 1911, 1929, 1937, 1946, 1951, 1957, 1962, 1971, 1985, 1990, 1995, 2006, 2010, 2018, 2028, 2023, 2034, - 2041, 2045, 2051, 2058, 1967, 1880, 2046, 1972, 2062, 2082, - - 2068, 2084, 2088, 2093, 2101, 2102, 2103, 2112, 2108, 2123, - 2124, 2128, 2129, 2143, 2148, 2149, 2154, 2150, 2162, 2166, - 2168, 2173, 2174, 2184, 1053, 1052, 1018, 1029, 1012, 1003, - 1014, 994, 999, 996, 988, 994, 995, 997, 995, 976, - 973, 976, 973, 969, 951, 965, 956, 942, 921, 914, - 924, 1528, 927, 939, 916, 932, 927, 918, 3243, 920, - 914, 910, 907, 888, 884, 3243, 3243, 876, 875, 888, - 863, 864, 872, 3243, 851, 844, 823, 3243, 825, 819, - 1612, 802, 804, 2189, 2207, 2201, 2224, 2235, 2240, 2244, - 2248, 2252, 2261, 2275, 2266, 2279, 2257, 2288, 2297, 2301, - - 2312, 2316, 2321, 2325, 2334, 2347, 2352, 2356, 2360, 2365, - 2369, 2378, 2383, 2310, 2374, 2193, 2390, 2404, 2270, 2391, - 2408, 2409, 2417, 2421, 2426, 2432, 2413, 2434, 2439, 2443, - 2447, 2448, 2452, 2460, 2462, 2478, 2482, 2483, 2487, 2493, - 2488, 2497, 2498, 801, 811, 797, 812, 802, 794, 777, - 771, 764, 761, 736, 735, 732, 729, 744, 723, 725, - 729, 708, 709, 682, 675, 674, 693, 692, 686, 3243, - 3243, 669, 3243, 3243, 3243, 3243, 683, 669, 668, 656, - 3243, 632, 630, 3243, 634, 628, 589, 596, 563, 3243, - 603, 2506, 2531, 2537, 2546, 2550, 2554, 2558, 2562, 2568, - - 2572, 2581, 2585, 2596, 2605, 2609, 2616, 2620, 2624, 2629, - 2640, 2644, 2651, 2657, 2662, 2663, 2667, 2668, 2523, 2589, - 2679, 2681, 2687, 2693, 2702, 2706, 2707, 2712, 2718, 2720, - 2724, 2726, 2730, 2732, 2740, 2745, 2751, 2760, 2765, 587, - 586, 585, 557, 571, 566, 560, 551, 535, 535, 530, - 501, 461, 465, 454, 3243, 3243, 3243, 472, 3243, 3243, - 3243, 3243, 480, 477, 3243, 469, 470, 1734, 440, 468, - 2767, 2771, 2776, 2785, 2791, 2798, 2809, 2813, 2818, 2822, - 2831, 2836, 2840, 2849, 2853, 2826, 2844, 2857, 2861, 2859, - 2866, 2867, 2871, 2877, 2892, 2875, 2894, 2905, 2911, 2912, - - 444, 451, 447, 443, 444, 1741, 414, 435, 3243, 3243, - 3243, 402, 1916, 386, 1921, 2917, 2928, 2932, 2936, 2948, - 2952, 2959, 2963, 2969, 2942, 2953, 2970, 2975, 2983, 2987, - 2989, 413, 367, 1955, 3243, 364, 3243, 2185, 349, 2994, - 3011, 3020, 3025, 3029, 3005, 3035, 3039, 3041, 3045, 337, - 329, 3243, 3053, 3047, 3059, 3051, 258, 243, 3063, 3078, - 165, 170, 3084, 3093, 166, 191, 3099, 3103, 84, 3243, - 3112, 3105, 3243, 3146, 3152, 3158, 3164, 3170, 3176, 3182, - 3188, 3194, 3200, 3206, 3212, 3218, 3224, 3230, 54, 3236 + 2041, 2045, 2051, 2058, 1967, 1880, 2046, 2056, 2062, 1972, + + 2068, 2069, 2082, 2093, 2099, 2104, 2105, 2110, 2106, 2123, + 2124, 2130, 2129, 2141, 2148, 2146, 2150, 2154, 2165, 2160, + 2169, 2174, 2176, 2181, 1157, 1143, 1125, 1132, 1121, 1121, + 1134, 1105, 1110, 1111, 1100, 1103, 1092, 1085, 1080, 1060, + 1062, 1068, 423, 1066, 1051, 1063, 1052, 1040, 1003, 1002, + 1006, 1528, 1002, 1009, 996, 1012, 1007, 432, 3341, 1006, + 1001, 1000, 997, 977, 977, 3341, 3341, 968, 962, 976, + 960, 961, 953, 964, 3341, 938, 943, 920, 3341, 924, + 922, 1612, 907, 917, 2193, 2185, 2202, 2212, 2230, 2224, + 2236, 2245, 2249, 2261, 2270, 2276, 2282, 2286, 2292, 2296, + + 2303, 2310, 2319, 2327, 2331, 2337, 2352, 2358, 2362, 2368, + 2372, 2376, 2380, 2386, 2393, 2345, 2243, 2191, 2399, 2411, + 2403, 2398, 2417, 2419, 2434, 2436, 2442, 2423, 2453, 2454, + 2458, 2459, 2469, 2464, 2473, 2475, 2499, 2480, 2481, 2495, + 2500, 2508, 2514, 2519, 2521, 2523, 914, 922, 904, 920, + 914, 458, 910, 907, 906, 901, 877, 877, 869, 859, + 876, 857, 861, 845, 852, 830, 829, 810, 796, 796, + 816, 814, 812, 3341, 3341, 787, 788, 3341, 3341, 3341, + 3341, 777, 771, 764, 761, 3341, 742, 740, 746, 3341, + 748, 739, 704, 712, 695, 3341, 734, 2533, 2547, 2556, + + 2542, 2560, 2569, 2578, 2573, 2582, 2587, 2593, 2606, 2618, + 2624, 2629, 2633, 2640, 2644, 2649, 2655, 2667, 2671, 2680, + 2688, 2693, 2698, 2675, 2694, 2706, 2583, 2660, 2702, 2710, + 2708, 2714, 2715, 2719, 2733, 2745, 2749, 2750, 2732, 2741, + 2754, 2768, 2758, 2769, 2784, 2775, 2785, 2789, 2791, 722, + 711, 699, 682, 684, 692, 686, 684, 683, 657, 656, + 651, 644, 630, 600, 608, 589, 3341, 3341, 3341, 609, + 585, 3341, 3341, 3341, 3341, 596, 582, 586, 3341, 585, + 574, 1734, 546, 573, 2793, 2802, 2806, 2810, 2824, 2828, + 2837, 2841, 2845, 2849, 2855, 2861, 2865, 2872, 2876, 2883, + + 2888, 2889, 2895, 2896, 2900, 2902, 2906, 2907, 2911, 2913, + 2926, 2937, 2941, 2946, 2947, 2953, 2959, 2960, 548, 539, + 547, 535, 530, 506, 497, 1741, 465, 488, 479, 3341, + 480, 3341, 3341, 445, 1916, 431, 1921, 2964, 2968, 2984, + 2999, 3005, 3010, 3015, 3019, 3023, 3027, 2972, 3033, 3011, + 3035, 3041, 3050, 3054, 3058, 3060, 3068, 465, 451, 447, + 419, 1955, 3341, 413, 3341, 366, 3341, 2254, 352, 3076, + 3081, 3093, 3099, 3109, 3114, 3118, 3072, 3119, 3094, 3103, + 3124, 3130, 3136, 386, 337, 3341, 329, 3341, 3140, 3152, + 3157, 3144, 3163, 3164, 258, 243, 3171, 3175, 165, 170, + + 3179, 3185, 166, 191, 3198, 3199, 84, 3341, 3210, 3191, + 3341, 3244, 3250, 3256, 3262, 3268, 3274, 3280, 3286, 3292, + 3298, 3304, 3310, 3316, 3322, 3328, 54, 3334 } ; -static yyconst flex_int16_t yy_def[991] = +static yyconst flex_int16_t yy_def[1029] = { 0, - 973, 1, 974, 975, 976, 976, 977, 977, 973, 9, - 973, 11, 973, 13, 978, 978, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 979, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 980, 973, 981, 973, 973, 982, - 981, 981, 981, 983, 973, 973, 983, 983, 984, 973, - 973, 985, 973, 973, 973, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 43, 986, 985, - - 985, 985, 985, 985, 985, 985, 987, 973, 973, 973, - 987, 987, 973, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 43, 988, 987, 987, 987, 987, 987, 987, - 987, 973, 973, 973, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 973, 989, 43, 989, 989, 989, 989, 989, - 990, 973, 973, 973, 973, 990, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - - 973, 43, 979, 973, 973, 973, 973, 973, 979, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 981, 973, 981, 973, 981, 981, 981, 981, 983, - 983, 973, 983, 983, 983, 984, 973, 973, 973, 985, - 985, 985, 973, 973, 973, 973, 973, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 973, 985, 98, 986, 986, 986, 985, 985, 985, 985, - 985, 985, 985, 985, 987, 987, 987, 973, 973, 973, - 973, 973, 987, 987, 987, 987, 987, 987, 987, 987, - - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 973, 973, 987, 133, 988, - 988, 988, 987, 987, 987, 987, 987, 987, 987, 987, - 973, 973, 973, 973, 973, 973, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 973, - 973, 989, 165, 989, 989, 989, 989, 989, 989, 989, - 990, 990, 990, 973, 973, 973, 973, 973, 990, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 981, 983, 983, 983, 973, 973, 985, 973, - 973, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 986, 985, 985, 985, - 985, 985, 985, 987, 973, 973, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 988, 979, 987, 987, 987, 987, 987, 987, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 990, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 981, 983, 973, 973, 983, - 973, 973, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 987, 987, 987, 987, 987, 987, 987, - - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 981, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 981, 985, 985, 985, 985, 985, 985, 985, 985, 985, - - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 989, - 989, 989, 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 981, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - 985, 985, 985, 985, 985, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - - 989, 989, 989, 989, 989, 989, 989, 973, 973, 973, - 973, 973, 973, 973, 973, 985, 985, 985, 985, 985, - 985, 985, 985, 987, 987, 987, 987, 987, 987, 987, - 987, 989, 989, 989, 973, 973, 973, 973, 973, 985, - 985, 985, 985, 985, 987, 987, 987, 987, 987, 989, - 973, 973, 985, 985, 987, 987, 989, 973, 985, 987, - 989, 973, 985, 987, 989, 973, 985, 987, 989, 973, - 985, 987, 0, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973 + 1011, 1, 1012, 1013, 1014, 1014, 1015, 1015, 1011, 9, + 1011, 11, 1011, 13, 1016, 1016, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1017, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1018, 1011, 1019, 1011, 1011, 1020, + 1019, 1019, 1019, 1021, 1011, 1011, 1021, 1021, 1022, 1011, + 1011, 1023, 1011, 1011, 1011, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 43, 1024, 1023, + + 1023, 1023, 1023, 1023, 1023, 1023, 1025, 1011, 1011, 1011, + 1025, 1025, 1011, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 43, 1026, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1011, 1011, 1011, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1011, 1027, 43, 1027, 1027, 1027, 1027, 1027, + 1028, 1011, 1011, 1011, 1011, 1028, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + + 1011, 43, 1017, 1011, 1011, 1011, 1011, 1011, 1017, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1019, 1011, 1019, 1011, 1019, 1019, 1019, 1019, 1021, + 1021, 1011, 1021, 1021, 1021, 1022, 1011, 1011, 1011, 1023, + 1023, 1023, 1011, 1011, 1011, 1011, 1011, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1011, 1023, 98, 1024, 1024, 1024, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1025, 1025, 1025, 1011, 1011, 1011, + 1011, 1011, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1011, 1011, 1025, 133, 1026, + 1026, 1026, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1011, 1011, 1011, 1011, 1011, 1011, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1011, + 1011, 1027, 165, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1028, 1028, 1028, 1011, 1011, 1011, 1011, 1011, 1028, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1019, 1021, 1021, 1021, 1011, 1011, 1023, 1011, + 1011, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1023, 1023, 1023, + 1023, 1023, 1023, 1025, 1011, 1011, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1026, 1017, 1025, 1025, 1025, 1025, 1025, 1025, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1028, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1019, 1021, 1011, 1011, 1021, + 1011, 1011, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1019, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1019, 1023, 1023, 1023, + + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1019, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + + 1023, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1027, 1027, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1027, 1027, 1027, + 1027, 1027, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1027, 1027, 1011, 1011, 1011, 1023, 1023, + 1023, 1025, 1025, 1025, 1027, 1011, 1023, 1025, 1027, 1011, + + 1023, 1025, 1027, 1011, 1023, 1025, 1027, 1011, 1023, 1025, + 0, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011 } ; -static yyconst flex_int16_t yy_nxt[3294] = +static yyconst flex_int16_t yy_nxt[3392] = { 0, 18, 19, 20, 21, 19, 18, 22, 23, 24, 23, 25, 26, 18, 27, 28, 29, 18, 30, 18, 18, @@ -776,7 +788,7 @@ static yyconst flex_int16_t yy_nxt[3294] = 45, 52, 58, 59, 60, 61, 65, 66, 65, 66, 70, 71, 177, 46, 181, 177, 62, 172, 173, 174, 172, 182, 197, 186, 175, 190, 187, 210, 192, 47, - 188, 48, 213, 49, 198, 970, 50, 51, 215, 191, + 188, 48, 213, 49, 198, 1008, 50, 51, 215, 191, 216, 191, 233, 177, 63, 193, 177, 234, 67, 176, 67, 404, 214, 68, 405, 68, 72, 73, 74, 75, @@ -789,361 +801,372 @@ static yyconst flex_int16_t yy_nxt[3294] = 220, 221, 219, 223, 225, 226, 237, 238, 356, 101, 345, 350, 364, 346, 351, 229, 369, 347, 370, 215, - 357, 216, 970, 176, 969, 102, 350, 103, 966, 104, - 965, 352, 105, 106, 107, 108, 109, 110, 108, 107, + 357, 216, 1008, 176, 1007, 102, 350, 103, 1004, 104, + 1003, 352, 105, 106, 107, 108, 109, 110, 108, 107, 111, 112, 113, 112, 114, 115, 107, 116, 117, 118, 107, 119, 107, 107, 120, 107, 121, 122, 123, 124, 125, 126, 127, 128, 129, 107, 130, 131, 107, 132, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 133, 367, 213, 133, 134, 241, 286, 241, 241, 286, 135, 386, 243, 244, 245, 243, - 360, 361, 360, 360, 391, 368, 214, 136, 962, 387, + 360, 361, 360, 360, 391, 368, 214, 136, 1000, 387, 407, 394, 218, 220, 221, 223, 225, 226, 392, 233, - 961, 242, 287, 137, 234, 138, 512, 139, 246, 513, + 999, 242, 287, 137, 234, 138, 512, 139, 246, 513, 140, 141, 18, 142, 143, 144, 142, 18, 22, 23, 24, 145, 146, 26, 147, 148, 149, 150, 147, 151, 147, 147, 152, 147, 153, 154, 155, 156, 157, 158, 159, 160, 161, 147, 162, 163, 147, 164, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 18, 18, 165, 237, 238, 165, 44, 245, 247, 245, - 245, 958, 45, 957, 241, 286, 241, 241, 286, 241, + 245, 996, 45, 995, 241, 286, 241, 241, 286, 241, 286, 241, 241, 286, 241, 166, 241, 241, 248, 241, - 494, 241, 241, 241, 228, 241, 241, 952, 248, 246, + 494, 241, 241, 241, 228, 241, 241, 986, 248, 246, - 951, 167, 950, 168, 495, 169, 242, 287, 170, 51, + 988, 167, 987, 168, 495, 169, 242, 287, 170, 51, 202, 242, 287, 202, 203, 241, 242, 241, 241, 367, - 204, 242, 229, 286, 935, 242, 286, 241, 499, 241, - 241, 249, 293, 241, 937, 241, 241, 936, 241, 368, - 241, 241, 500, 515, 502, 250, 935, 242, 252, 205, - 934, 206, 251, 933, 911, 287, 207, 208, 910, 242, - 253, 241, 909, 241, 241, 242, 241, 932, 241, 241, - 242, 241, 870, 241, 241, 241, 915, 241, 241, 912, - 911, 241, 255, 241, 241, 256, 259, 258, 910, 257, - 254, 909, 261, 242, 241, 908, 241, 241, 242, 907, - - 260, 906, 241, 242, 241, 241, 905, 242, 241, 262, - 241, 241, 241, 242, 241, 241, 241, 904, 241, 241, + 204, 242, 229, 286, 986, 242, 286, 241, 499, 241, + 241, 249, 293, 241, 671, 241, 241, 762, 241, 368, + 241, 241, 500, 515, 502, 250, 776, 242, 252, 205, + 672, 206, 251, 763, 985, 287, 207, 208, 965, 242, + 253, 241, 777, 241, 241, 242, 241, 984, 241, 241, + 242, 241, 853, 241, 241, 241, 963, 241, 241, 967, + 966, 241, 255, 241, 241, 256, 259, 258, 854, 257, + 254, 965, 261, 242, 241, 964, 241, 241, 242, 963, + + 260, 962, 241, 242, 241, 241, 961, 242, 241, 262, + 241, 241, 241, 242, 241, 241, 241, 933, 241, 241, 241, 263, 241, 241, 264, 551, 242, 268, 551, 241, 266, 241, 241, 265, 242, 269, 270, 271, 270, 270, - 242, 865, 267, 275, 242, 275, 275, 241, 242, 241, - 241, 903, 242, 273, 244, 245, 273, 241, 902, 241, - 241, 242, 862, 241, 272, 241, 241, 241, 242, 241, - 241, 861, 552, 551, 277, 276, 551, 860, 241, 242, - 241, 241, 859, 901, 241, 246, 241, 241, 260, 242, - 241, 286, 241, 241, 286, 242, 857, 856, 855, 242, - - 293, 280, 278, 288, 289, 290, 288, 870, 869, 279, + 242, 932, 267, 275, 242, 275, 275, 241, 242, 241, + 241, 960, 242, 273, 244, 245, 273, 241, 930, 241, + 241, 242, 959, 241, 272, 241, 241, 241, 242, 241, + 241, 958, 552, 551, 277, 276, 551, 884, 241, 242, + 241, 241, 937, 934, 241, 246, 241, 241, 260, 242, + 241, 286, 241, 241, 286, 242, 933, 932, 931, 242, + + 293, 280, 278, 288, 289, 290, 288, 930, 929, 279, 242, 290, 292, 290, 290, 286, 242, 282, 286, 283, 552, 281, 242, 287, 286, 286, 286, 286, 286, 286, - 286, 294, 868, 286, 867, 291, 286, 284, 286, 286, - 297, 286, 295, 291, 866, 865, 864, 287, 298, 296, - 286, 286, 303, 286, 286, 863, 287, 287, 287, 299, - 286, 286, 287, 286, 286, 308, 300, 862, 287, 301, - 287, 304, 306, 302, 286, 286, 310, 286, 286, 861, - 860, 286, 287, 287, 286, 305, 313, 286, 286, 307, - 286, 286, 287, 287, 859, 858, 309, 857, 321, 311, - - 209, 321, 314, 856, 855, 209, 287, 287, 854, 286, - 853, 312, 286, 287, 315, 316, 317, 315, 286, 287, - 287, 286, 852, 318, 319, 289, 290, 319, 286, 323, - 322, 286, 286, 851, 286, 286, 286, 286, 850, 286, - 784, 287, 551, 305, 286, 551, 287, 286, 849, 848, - 287, 331, 332, 333, 331, 781, 291, 326, 372, 847, - 287, 372, 846, 845, 287, 844, 287, 681, 287, 328, - 681, 329, 776, 324, 325, 775, 287, 327, 335, 336, - 335, 335, 774, 334, 363, 332, 333, 363, 773, 552, + 286, 294, 928, 286, 927, 291, 286, 284, 286, 286, + 297, 286, 295, 291, 926, 925, 924, 287, 298, 296, + 286, 286, 303, 286, 286, 879, 287, 287, 287, 299, + 286, 286, 287, 286, 286, 308, 300, 923, 287, 301, + 287, 304, 306, 302, 286, 286, 310, 286, 286, 922, + 921, 286, 287, 287, 286, 305, 313, 286, 286, 307, + 286, 286, 287, 287, 875, 874, 309, 873, 321, 311, + + 209, 321, 314, 872, 920, 209, 287, 287, 919, 286, + 869, 312, 286, 287, 315, 316, 317, 315, 286, 287, + 287, 286, 868, 318, 319, 289, 290, 319, 286, 323, + 322, 286, 286, 867, 286, 286, 286, 286, 884, 286, + 883, 287, 551, 305, 286, 551, 287, 286, 882, 881, + 287, 331, 332, 333, 331, 880, 291, 326, 372, 879, + 287, 372, 878, 877, 287, 876, 287, 682, 287, 328, + 682, 329, 875, 324, 325, 874, 287, 327, 335, 336, + 335, 335, 873, 334, 363, 332, 333, 363, 872, 552, 373, 330, 374, 375, 376, 374, 378, 375, 378, 378, - 379, 380, 381, 379, 416, 417, 418, 416, 843, 241, - 334, 241, 241, 771, 682, 241, 334, 241, 241, 419, - 420, 419, 419, 770, 377, 842, 286, 841, 377, 286, - 840, 791, 373, 243, 244, 245, 243, 245, 244, 245, + 379, 380, 381, 379, 416, 417, 418, 416, 871, 241, + 334, 241, 241, 870, 683, 241, 334, 241, 241, 419, + 420, 419, 419, 869, 377, 868, 286, 867, 377, 286, + 866, 865, 373, 243, 244, 245, 243, 245, 244, 245, 245, 242, 421, 271, 421, 421, 241, 242, 241, 241, - 790, 242, 414, 789, 241, 248, 241, 241, 287, 241, - 788, 241, 241, 787, 241, 246, 241, 241, 786, 246, + 864, 242, 414, 863, 241, 248, 241, 241, 287, 241, + 862, 241, 241, 790, 241, 246, 241, 241, 861, 246, 423, 241, 286, 241, 241, 286, 422, 241, 242, 241, - 241, 785, 241, 784, 241, 241, 242, 783, 426, 782, - 425, 242, 241, 424, 241, 241, 242, 428, 241, 781, - - 241, 241, 427, 242, 287, 780, 779, 429, 241, 242, - 241, 241, 778, 241, 242, 241, 241, 777, 776, 431, - 241, 775, 241, 241, 242, 774, 241, 430, 241, 241, - 242, 773, 772, 432, 241, 433, 241, 241, 771, 241, - 242, 241, 241, 770, 769, 242, 241, 434, 241, 241, - 435, 241, 242, 241, 241, 768, 767, 436, 242, 766, - 765, 241, 439, 241, 241, 438, 242, 764, 763, 437, - 241, 242, 241, 241, 440, 762, 674, 241, 242, 241, - 241, 761, 241, 242, 241, 241, 760, 759, 241, 442, - 241, 241, 758, 242, 270, 271, 270, 270, 757, 443, - - 441, 241, 242, 241, 241, 756, 667, 444, 666, 242, - 445, 755, 754, 275, 242, 275, 275, 753, 752, 275, - 242, 275, 275, 751, 750, 659, 242, 447, 420, 447, - 447, 749, 241, 242, 241, 241, 241, 446, 241, 241, - 241, 748, 241, 241, 241, 276, 241, 241, 747, 746, + 241, 860, 241, 859, 241, 241, 242, 786, 426, 858, + 425, 242, 241, 424, 241, 241, 242, 428, 241, 857, + + 241, 241, 427, 242, 287, 856, 855, 429, 241, 242, + 241, 241, 781, 241, 242, 241, 241, 780, 779, 431, + 241, 778, 241, 241, 242, 775, 241, 430, 241, 241, + 242, 774, 852, 432, 241, 433, 241, 241, 851, 241, + 242, 241, 241, 850, 797, 242, 241, 434, 241, 241, + 435, 241, 242, 241, 241, 796, 795, 436, 242, 794, + 793, 241, 439, 241, 241, 438, 242, 792, 791, 437, + 241, 242, 241, 241, 440, 790, 789, 241, 242, 241, + 241, 788, 241, 242, 241, 241, 787, 786, 241, 442, + 241, 241, 785, 242, 270, 271, 270, 270, 784, 443, + + 441, 241, 242, 241, 241, 783, 782, 444, 781, 242, + 445, 780, 779, 275, 242, 275, 275, 778, 775, 275, + 242, 275, 275, 774, 773, 772, 242, 447, 420, 447, + 447, 771, 241, 242, 241, 241, 241, 446, 241, 241, + 241, 770, 241, 241, 241, 276, 241, 241, 769, 768, 241, 276, 241, 241, 241, 451, 241, 241, 241, 276, - 241, 241, 448, 434, 242, 449, 745, 241, 242, 241, - 241, 744, 242, 280, 683, 450, 242, 454, 455, 456, - 454, 680, 242, 679, 678, 286, 242, 677, 286, 676, - 242, 675, 286, 281, 293, 286, 674, 452, 453, 242, + 241, 241, 448, 434, 242, 449, 767, 241, 242, 241, + 241, 766, 242, 280, 675, 450, 242, 454, 455, 456, + 454, 765, 242, 764, 761, 286, 242, 760, 286, 759, + 242, 667, 286, 281, 293, 286, 666, 452, 453, 242, - 288, 289, 290, 288, 290, 289, 290, 290, 673, 287, + 288, 289, 290, 288, 290, 289, 290, 290, 758, 287, 317, 316, 317, 317, 457, 286, 286, 287, 286, 286, - 286, 672, 286, 286, 287, 286, 458, 286, 286, 671, - 286, 286, 291, 670, 669, 668, 291, 463, 459, 461, - 286, 286, 464, 286, 286, 667, 460, 287, 287, 666, - 665, 664, 287, 462, 287, 286, 663, 662, 286, 287, + 286, 757, 286, 286, 287, 286, 458, 286, 286, 756, + 286, 286, 291, 755, 754, 753, 291, 463, 459, 461, + 286, 286, 464, 286, 286, 659, 460, 287, 287, 752, + 751, 750, 287, 462, 287, 286, 749, 748, 286, 287, 287, 286, 286, 468, 286, 286, 466, 286, 286, 465, - 286, 286, 287, 287, 286, 661, 286, 286, 286, 286, - 467, 286, 660, 659, 658, 474, 470, 287, 469, 286, - 471, 475, 286, 287, 287, 473, 657, 656, 472, 287, - - 287, 286, 655, 654, 286, 653, 287, 652, 287, 286, - 287, 651, 286, 477, 286, 286, 515, 286, 286, 476, - 650, 287, 315, 316, 317, 315, 478, 317, 316, 317, - 317, 649, 286, 287, 479, 286, 321, 480, 209, 321, - 648, 287, 321, 209, 209, 321, 287, 287, 286, 209, - 481, 286, 647, 646, 287, 482, 455, 483, 482, 645, - 644, 643, 209, 286, 287, 485, 286, 286, 322, 286, - 286, 642, 286, 641, 322, 640, 286, 639, 487, 286, - 287, 286, 286, 486, 286, 286, 638, 322, 637, 484, - 469, 636, 326, 635, 335, 287, 335, 335, 634, 287, - - 633, 287, 331, 332, 333, 331, 372, 372, 287, 372, - 372, 632, 327, 287, 287, 488, 335, 332, 335, 335, - 360, 361, 360, 360, 631, 489, 334, 360, 361, 360, - 360, 630, 629, 378, 334, 378, 378, 628, 373, 373, + 286, 286, 287, 287, 286, 747, 286, 286, 286, 286, + 467, 286, 684, 681, 680, 474, 470, 287, 469, 286, + 471, 475, 286, 287, 287, 473, 679, 678, 472, 287, + + 287, 286, 677, 676, 286, 675, 287, 674, 287, 286, + 287, 673, 286, 477, 286, 286, 670, 286, 286, 476, + 669, 287, 315, 316, 317, 315, 478, 317, 316, 317, + 317, 668, 286, 287, 479, 286, 321, 480, 209, 321, + 667, 287, 321, 209, 209, 321, 287, 287, 286, 209, + 481, 286, 666, 665, 287, 482, 455, 483, 482, 664, + 663, 662, 209, 286, 287, 485, 286, 286, 322, 286, + 286, 661, 286, 660, 322, 659, 286, 658, 487, 286, + 287, 286, 286, 486, 286, 286, 657, 322, 656, 484, + 469, 655, 326, 654, 335, 287, 335, 335, 653, 287, + + 652, 287, 331, 332, 333, 331, 372, 372, 287, 372, + 372, 651, 327, 287, 287, 488, 335, 332, 335, 335, + 360, 361, 360, 360, 515, 489, 334, 360, 361, 360, + 360, 650, 649, 378, 334, 378, 378, 648, 373, 373, 521, 522, 523, 521, 374, 375, 376, 374, 334, 378, 375, 378, 378, 381, 380, 381, 381, 379, 380, 381, 379, 381, 380, 381, 381, 377, 549, 550, 549, 549, - 627, 626, 373, 625, 556, 555, 377, 557, 558, 559, - 557, 377, 560, 561, 562, 560, 554, 407, 553, 373, - 416, 417, 418, 416, 418, 417, 418, 418, 548, 419, - - 420, 419, 419, 421, 271, 421, 421, 241, 547, 241, - 241, 241, 546, 241, 241, 545, 544, 241, 563, 241, - 241, 241, 543, 241, 241, 414, 456, 455, 456, 456, - 414, 242, 542, 541, 241, 564, 241, 241, 231, 242, - 540, 539, 565, 242, 241, 538, 241, 241, 537, 242, - 566, 567, 241, 242, 241, 241, 241, 536, 241, 241, - 286, 535, 241, 286, 241, 241, 242, 570, 241, 568, - 241, 241, 609, 534, 533, 569, 242, 571, 241, 532, - 241, 241, 531, 241, 242, 241, 241, 241, 242, 241, - 241, 530, 287, 529, 242, 528, 572, 527, 574, 526, - - 242, 525, 573, 241, 575, 241, 241, 524, 520, 241, - 242, 241, 241, 519, 241, 242, 241, 241, 241, 242, - 241, 241, 518, 517, 577, 241, 578, 241, 241, 681, - 516, 576, 681, 579, 241, 242, 241, 241, 580, 514, - 241, 242, 241, 241, 511, 241, 242, 241, 241, 286, - 242, 241, 286, 241, 241, 581, 582, 242, 241, 510, - 241, 241, 509, 508, 507, 241, 242, 241, 241, 506, - 505, 504, 242, 583, 596, 585, 682, 242, 586, 584, - 503, 287, 241, 242, 241, 241, 447, 420, 447, 447, - 242, 588, 550, 588, 588, 502, 589, 242, 241, 589, - - 241, 501, 241, 241, 241, 498, 241, 241, 241, 286, - 241, 241, 286, 681, 242, 587, 681, 241, 276, 241, - 241, 497, 496, 242, 454, 455, 456, 454, 242, 493, - 448, 286, 242, 595, 286, 286, 242, 492, 286, 591, + 647, 646, 373, 645, 644, 643, 377, 557, 558, 559, + 557, 377, 560, 561, 562, 560, 642, 641, 640, 373, + 416, 417, 418, 416, 418, 417, 418, 418, 639, 419, + + 420, 419, 419, 421, 271, 421, 421, 241, 638, 241, + 241, 241, 637, 241, 241, 636, 635, 241, 563, 241, + 241, 241, 634, 241, 241, 414, 456, 455, 456, 456, + 414, 242, 633, 632, 241, 564, 241, 241, 231, 242, + 631, 630, 565, 242, 241, 629, 241, 241, 628, 242, + 566, 567, 241, 242, 241, 241, 241, 627, 241, 241, + 286, 626, 241, 286, 241, 241, 242, 570, 241, 568, + 241, 241, 609, 625, 556, 569, 242, 571, 241, 555, + 241, 241, 554, 241, 242, 241, 241, 241, 242, 241, + 241, 407, 287, 553, 242, 548, 572, 547, 574, 546, + + 242, 545, 573, 241, 575, 241, 241, 544, 543, 241, + 242, 241, 241, 542, 241, 242, 241, 241, 241, 242, + 241, 241, 541, 540, 577, 241, 578, 241, 241, 682, + 539, 576, 682, 579, 241, 242, 241, 241, 580, 538, + 241, 242, 241, 241, 537, 241, 242, 241, 241, 286, + 242, 241, 286, 241, 241, 581, 582, 242, 241, 536, + 241, 241, 535, 534, 533, 241, 242, 241, 241, 532, + 531, 530, 242, 583, 596, 585, 683, 242, 586, 584, + 529, 287, 241, 242, 241, 241, 447, 420, 447, 447, + 242, 588, 550, 588, 588, 528, 589, 242, 241, 589, + + 241, 527, 241, 241, 241, 526, 241, 241, 241, 286, + 241, 241, 286, 682, 242, 587, 682, 241, 276, 241, + 241, 525, 524, 242, 454, 455, 456, 454, 242, 520, + 448, 286, 242, 595, 286, 286, 242, 519, 286, 591, 242, 287, 594, 590, 286, 286, 592, 286, 286, 242, - 286, 286, 491, 286, 286, 286, 287, 593, 286, 490, - 682, 598, 601, 287, 597, 286, 286, 287, 286, 286, - 599, 286, 338, 600, 286, 286, 287, 287, 286, 604, - 602, 286, 287, 287, 286, 286, 605, 287, 286, 237, - 286, 415, 606, 286, 603, 414, 231, 287, 287, 286, - - 608, 286, 286, 287, 286, 610, 227, 287, 286, 607, - 413, 286, 611, 287, 617, 286, 286, 287, 286, 286, - 286, 286, 287, 286, 286, 286, 223, 218, 286, 612, - 412, 287, 613, 287, 411, 913, 410, 616, 913, 409, - 287, 408, 913, 614, 217, 913, 212, 287, 287, 615, - 211, 620, 287, 287, 620, 406, 403, 287, 618, 482, - 455, 483, 482, 402, 401, 400, 209, 483, 455, 483, + 286, 286, 518, 286, 286, 286, 287, 593, 286, 517, + 683, 598, 601, 287, 597, 286, 286, 287, 286, 286, + 599, 286, 516, 600, 286, 286, 287, 287, 286, 604, + 602, 286, 287, 287, 286, 286, 605, 287, 286, 514, + 286, 511, 606, 286, 603, 510, 509, 287, 287, 286, + + 608, 286, 286, 287, 286, 610, 508, 287, 286, 607, + 507, 286, 611, 287, 617, 286, 286, 287, 286, 286, + 286, 286, 287, 286, 286, 286, 506, 505, 286, 612, + 504, 287, 613, 287, 503, 935, 502, 616, 935, 501, + 287, 498, 935, 614, 497, 935, 496, 287, 287, 615, + 493, 620, 287, 287, 620, 492, 491, 287, 618, 482, + 455, 483, 482, 490, 338, 237, 209, 483, 455, 483, 483, 619, 550, 549, 619, 286, 286, 286, 286, 286, - 286, 286, 914, 287, 286, 549, 550, 549, 549, 914, - 399, 322, 521, 522, 523, 521, 398, 397, 621, 396, + 286, 286, 936, 287, 286, 549, 550, 549, 549, 936, + 415, 322, 521, 522, 523, 521, 414, 231, 621, 227, - 395, 394, 484, 287, 393, 390, 389, 287, 287, 287, - 388, 385, 384, 287, 622, 623, 523, 522, 523, 523, + 413, 223, 484, 287, 218, 412, 411, 287, 287, 287, + 410, 409, 408, 287, 622, 623, 523, 522, 523, 523, 241, 624, 241, 241, 373, 549, 550, 549, 549, 557, 558, 559, 557, 559, 558, 559, 559, 560, 561, 562, - 560, 562, 561, 562, 562, 383, 241, 382, 241, 241, - 686, 241, 242, 241, 241, 241, 179, 241, 241, 241, - 366, 241, 241, 684, 685, 241, 365, 241, 241, 241, - 362, 241, 241, 687, 359, 358, 355, 231, 242, 690, - 354, 286, 353, 242, 286, 231, 689, 242, 348, 344, - 343, 242, 241, 688, 241, 241, 241, 242, 241, 241, - - 342, 242, 241, 339, 241, 241, 338, 241, 338, 241, - 241, 716, 241, 287, 241, 241, 239, 913, 235, 692, - 913, 691, 938, 693, 242, 938, 232, 231, 242, 695, - 241, 227, 241, 241, 242, 694, 223, 218, 241, 242, - 241, 241, 217, 212, 242, 696, 211, 241, 697, 241, - 241, 201, 241, 200, 241, 241, 938, 698, 241, 938, - 241, 241, 242, 241, 914, 241, 241, 199, 286, 939, - 242, 286, 241, 286, 241, 241, 286, 196, 701, 242, - 699, 715, 700, 195, 242, 702, 241, 194, 241, 241, - 242, 241, 189, 241, 241, 242, 241, 185, 241, 241, - - 287, 718, 703, 939, 242, 287, 705, 241, 184, 241, - 241, 241, 183, 241, 241, 180, 179, 179, 242, 241, - 704, 241, 241, 242, 589, 706, 241, 589, 242, 588, - 550, 588, 588, 178, 973, 241, 707, 241, 241, 242, - 973, 973, 241, 242, 241, 241, 241, 286, 241, 241, - 286, 242, 712, 973, 241, 712, 242, 973, 973, 286, - 973, 242, 286, 286, 708, 717, 286, 242, 973, 286, - 973, 590, 286, 973, 242, 973, 714, 973, 242, 287, - 711, 973, 709, 286, 242, 286, 286, 710, 286, 286, - 719, 287, 286, 720, 286, 287, 973, 286, 721, 713, - - 973, 287, 286, 286, 286, 286, 286, 286, 722, 286, - 723, 973, 286, 286, 727, 287, 286, 287, 726, 725, - 973, 287, 724, 728, 286, 286, 287, 286, 286, 286, - 286, 973, 286, 286, 287, 287, 287, 729, 973, 973, - 731, 287, 732, 973, 286, 287, 733, 286, 730, 286, - 286, 286, 286, 286, 286, 286, 287, 287, 286, 735, - 973, 287, 287, 619, 550, 549, 619, 620, 736, 286, - 620, 973, 286, 734, 286, 286, 287, 286, 286, 973, - 737, 287, 287, 287, 973, 742, 938, 287, 742, 938, - 241, 973, 241, 241, 286, 287, 738, 286, 973, 287, - - 973, 287, 241, 973, 241, 241, 287, 287, 241, 741, - 241, 241, 973, 973, 621, 973, 739, 287, 792, 740, - 973, 818, 242, 793, 973, 241, 287, 241, 241, 794, - 973, 973, 743, 939, 242, 795, 241, 973, 241, 241, - 242, 241, 973, 241, 241, 241, 796, 241, 241, 241, - 973, 241, 241, 241, 797, 241, 241, 242, 241, 798, - 241, 241, 241, 799, 241, 241, 973, 241, 242, 241, - 241, 286, 800, 242, 286, 973, 241, 242, 241, 241, - 241, 242, 241, 241, 821, 242, 801, 973, 973, 241, - 242, 241, 241, 973, 242, 802, 973, 973, 241, 242, - - 241, 241, 241, 287, 241, 241, 973, 803, 242, 973, - 973, 286, 242, 241, 286, 241, 241, 241, 973, 241, - 241, 242, 241, 806, 241, 241, 241, 804, 241, 241, - 242, 805, 973, 973, 242, 241, 809, 241, 241, 816, - 973, 973, 807, 287, 808, 242, 973, 973, 241, 242, - 241, 241, 973, 241, 242, 241, 241, 241, 242, 241, - 241, 241, 973, 241, 241, 973, 241, 242, 241, 241, - 241, 973, 241, 241, 973, 286, 811, 810, 286, 712, - 242, 241, 712, 973, 241, 242, 241, 241, 973, 242, - 817, 286, 286, 242, 286, 286, 812, 973, 242, 973, - - 813, 819, 242, 814, 973, 286, 973, 287, 286, 286, - 286, 242, 286, 286, 286, 820, 242, 286, 286, 822, - 823, 286, 286, 287, 287, 286, 713, 286, 824, 973, - 286, 815, 825, 286, 973, 286, 286, 287, 286, 973, - 286, 287, 287, 286, 286, 973, 287, 286, 286, 286, - 287, 286, 286, 286, 287, 826, 286, 973, 830, 287, - 827, 286, 973, 286, 286, 287, 286, 287, 973, 828, - 973, 833, 287, 829, 831, 832, 287, 973, 973, 286, - 287, 287, 286, 286, 286, 287, 286, 286, 286, 286, - 973, 286, 286, 287, 286, 287, 973, 286, 742, 286, - - 973, 742, 286, 973, 973, 973, 835, 241, 834, 241, - 241, 287, 973, 973, 973, 287, 287, 871, 973, 973, - 287, 287, 838, 836, 286, 973, 287, 286, 837, 973, - 287, 287, 241, 973, 241, 241, 973, 973, 241, 242, - 241, 241, 872, 973, 973, 743, 839, 241, 873, 241, - 241, 241, 973, 241, 241, 241, 287, 241, 241, 241, - 973, 241, 241, 241, 242, 241, 241, 973, 973, 241, - 242, 241, 241, 241, 973, 241, 241, 973, 973, 242, - 874, 973, 241, 242, 241, 241, 241, 242, 241, 241, - 286, 242, 875, 286, 973, 242, 876, 241, 973, 241, - - 241, 242, 973, 973, 973, 242, 241, 877, 241, 241, - 241, 973, 241, 241, 242, 973, 878, 241, 242, 241, - 241, 241, 287, 241, 241, 241, 973, 241, 241, 242, - 241, 973, 241, 241, 973, 973, 880, 973, 242, 879, - 881, 241, 242, 241, 241, 241, 973, 241, 241, 242, - 973, 973, 241, 242, 241, 241, 882, 242, 241, 973, - 241, 241, 242, 241, 286, 241, 241, 286, 286, 286, - 973, 286, 286, 242, 886, 973, 973, 242, 887, 888, - 286, 973, 286, 286, 242, 286, 973, 884, 286, 883, - 242, 286, 973, 973, 286, 242, 287, 286, 973, 973, - - 287, 287, 885, 286, 973, 889, 286, 286, 286, 973, - 286, 286, 287, 286, 287, 973, 286, 890, 891, 286, - 287, 286, 286, 892, 286, 286, 287, 286, 286, 893, - 286, 286, 973, 286, 286, 287, 286, 973, 973, 287, - 287, 286, 895, 896, 286, 287, 286, 894, 973, 286, - 973, 287, 286, 287, 973, 286, 897, 287, 973, 287, - 973, 286, 973, 287, 286, 287, 286, 973, 241, 286, - 241, 241, 241, 287, 241, 241, 973, 241, 287, 241, - 241, 973, 973, 973, 287, 973, 241, 899, 241, 241, - 898, 973, 241, 287, 241, 241, 973, 973, 287, 241, - - 242, 241, 241, 973, 242, 900, 973, 973, 916, 242, - 241, 973, 241, 241, 241, 973, 241, 241, 242, 241, - 973, 241, 241, 241, 242, 241, 241, 286, 973, 917, - 286, 242, 241, 918, 241, 241, 973, 241, 973, 241, - 241, 241, 242, 241, 241, 286, 242, 919, 286, 920, - 921, 242, 241, 921, 241, 242, 241, 241, 286, 287, - 286, 286, 286, 286, 242, 286, 973, 286, 286, 242, - 286, 286, 286, 242, 973, 286, 286, 287, 286, 286, - 973, 286, 242, 973, 924, 973, 242, 973, 925, 923, - 287, 973, 287, 286, 287, 286, 286, 922, 286, 287, - - 287, 973, 973, 926, 287, 927, 286, 973, 287, 286, - 287, 973, 929, 286, 928, 929, 286, 973, 241, 973, - 241, 241, 973, 973, 973, 287, 973, 287, 940, 241, - 973, 241, 241, 241, 973, 241, 241, 241, 287, 241, - 241, 973, 973, 286, 287, 287, 286, 973, 931, 241, - 242, 241, 241, 921, 286, 241, 921, 286, 973, 930, - 241, 242, 241, 241, 943, 242, 241, 943, 973, 242, - 286, 286, 973, 286, 286, 287, 286, 973, 973, 286, - 945, 242, 973, 941, 929, 242, 287, 929, 286, 973, - 948, 286, 242, 948, 973, 241, 242, 241, 241, 973, - - 922, 973, 287, 287, 973, 973, 286, 942, 287, 286, - 946, 944, 241, 973, 241, 241, 287, 973, 973, 973, - 287, 241, 287, 241, 241, 973, 943, 242, 241, 943, - 241, 930, 241, 241, 973, 947, 286, 949, 287, 286, - 286, 973, 948, 286, 242, 948, 286, 953, 241, 286, - 241, 241, 286, 242, 241, 286, 241, 241, 242, 973, - 286, 973, 242, 286, 241, 973, 241, 241, 287, 973, - 973, 955, 287, 944, 287, 973, 973, 954, 287, 286, - 242, 973, 286, 973, 287, 241, 242, 241, 241, 949, - 973, 973, 287, 956, 286, 959, 242, 286, 973, 973, - - 241, 960, 241, 241, 286, 973, 286, 286, 963, 286, - 971, 287, 973, 241, 972, 241, 241, 242, 973, 973, - 973, 973, 967, 964, 973, 973, 287, 973, 973, 973, - 973, 968, 242, 973, 973, 973, 287, 973, 287, 973, - 973, 973, 973, 973, 973, 242, 52, 52, 52, 52, - 52, 52, 57, 57, 57, 57, 57, 57, 64, 64, - 64, 64, 64, 64, 69, 69, 69, 69, 69, 69, - 171, 171, 171, 171, 171, 171, 209, 209, 973, 209, - 209, 209, 219, 219, 219, 219, 219, 219, 222, 973, - 973, 973, 222, 222, 224, 224, 224, 224, 224, 224, - - 230, 230, 973, 973, 230, 230, 236, 236, 236, 236, - 236, 236, 240, 240, 973, 240, 240, 240, 274, 274, - 973, 274, 274, 274, 285, 285, 973, 973, 973, 285, - 320, 320, 973, 320, 320, 320, 371, 371, 973, 973, - 973, 371, 17, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973 + 560, 562, 561, 562, 562, 217, 241, 212, 241, 241, + 687, 241, 242, 241, 241, 241, 211, 241, 241, 241, + 406, 241, 241, 685, 686, 241, 403, 241, 241, 241, + 402, 241, 241, 688, 401, 400, 399, 231, 242, 691, + 398, 286, 397, 242, 286, 231, 690, 242, 396, 395, + 394, 242, 241, 689, 241, 241, 241, 242, 241, 241, + + 393, 242, 241, 390, 241, 241, 389, 241, 388, 241, + 241, 718, 241, 287, 241, 241, 385, 935, 384, 693, + 935, 692, 968, 694, 242, 968, 383, 382, 242, 696, + 241, 179, 241, 241, 242, 695, 366, 365, 241, 242, + 241, 241, 362, 359, 242, 697, 358, 241, 698, 241, + 241, 355, 241, 354, 241, 241, 968, 699, 241, 968, + 241, 241, 242, 241, 936, 241, 241, 353, 286, 969, + 242, 286, 241, 286, 241, 241, 286, 348, 702, 242, + 700, 717, 701, 722, 242, 703, 241, 344, 241, 241, + 242, 241, 343, 241, 241, 242, 241, 342, 241, 241, + + 287, 704, 705, 969, 242, 287, 707, 241, 339, 241, + 241, 241, 338, 241, 241, 338, 239, 235, 242, 241, + 706, 241, 241, 242, 589, 708, 241, 589, 242, 588, + 550, 588, 588, 232, 231, 241, 709, 241, 241, 242, + 227, 223, 241, 242, 241, 241, 241, 286, 241, 241, + 286, 242, 714, 218, 241, 714, 242, 286, 217, 286, + 286, 242, 286, 286, 710, 719, 286, 242, 212, 286, + 286, 590, 286, 286, 242, 211, 716, 201, 242, 287, + 713, 200, 711, 286, 242, 720, 286, 712, 199, 287, + 721, 287, 196, 724, 286, 287, 195, 286, 723, 715, + + 286, 287, 287, 286, 725, 286, 286, 286, 286, 286, + 286, 286, 194, 189, 286, 287, 729, 727, 185, 184, + 728, 730, 726, 183, 286, 286, 287, 286, 286, 180, + 286, 286, 287, 286, 286, 731, 179, 287, 287, 287, + 733, 179, 286, 287, 734, 286, 736, 286, 732, 286, + 286, 286, 286, 178, 286, 286, 287, 287, 286, 738, + 735, 620, 287, 287, 620, 739, 619, 550, 549, 619, + 286, 737, 1011, 286, 287, 286, 740, 286, 286, 287, + 286, 287, 745, 287, 1011, 745, 241, 287, 241, 241, + 1011, 1011, 286, 287, 241, 286, 241, 241, 287, 1011, + + 741, 799, 287, 241, 1011, 241, 241, 287, 621, 287, + 1011, 744, 1011, 241, 287, 241, 241, 742, 242, 826, + 743, 1011, 798, 801, 287, 241, 242, 241, 241, 746, + 800, 241, 1011, 241, 241, 242, 1011, 241, 803, 241, + 241, 802, 1011, 1011, 286, 242, 241, 286, 241, 241, + 241, 1011, 241, 241, 804, 968, 805, 242, 968, 825, + 806, 1011, 241, 242, 241, 241, 1011, 1011, 1011, 242, + 1011, 241, 807, 241, 241, 1011, 287, 241, 242, 241, + 241, 808, 242, 241, 1011, 241, 241, 241, 1011, 241, + 241, 1011, 1011, 241, 242, 241, 241, 241, 1011, 241, + + 241, 1011, 969, 242, 241, 809, 241, 241, 1011, 242, + 810, 241, 1011, 241, 241, 242, 1011, 1011, 1011, 242, + 241, 813, 241, 241, 1011, 242, 811, 1011, 241, 242, + 241, 241, 241, 812, 241, 241, 242, 1011, 241, 1011, + 241, 241, 1011, 242, 1011, 814, 286, 815, 817, 286, + 1011, 1011, 242, 241, 816, 241, 241, 1011, 1011, 241, + 242, 241, 241, 241, 242, 241, 241, 1011, 1011, 241, + 242, 241, 241, 241, 824, 241, 241, 241, 287, 241, + 241, 241, 1011, 241, 241, 242, 819, 714, 818, 241, + 714, 242, 1011, 1011, 241, 242, 241, 241, 1011, 286, + + 286, 242, 286, 286, 286, 242, 1011, 286, 820, 242, + 827, 821, 286, 242, 822, 286, 1011, 829, 286, 242, + 286, 286, 828, 286, 286, 1011, 242, 286, 831, 1011, + 832, 287, 287, 830, 715, 286, 287, 286, 286, 1011, + 286, 823, 1011, 286, 287, 833, 286, 834, 1011, 1011, + 287, 836, 287, 1011, 286, 286, 287, 286, 286, 286, + 286, 1011, 286, 286, 1011, 286, 1011, 287, 286, 287, + 286, 835, 1011, 286, 286, 287, 286, 286, 1011, 286, + 839, 286, 286, 1011, 286, 286, 287, 287, 837, 838, + 840, 287, 287, 841, 1011, 1011, 286, 287, 842, 286, + + 286, 286, 287, 286, 286, 1011, 287, 1011, 287, 286, + 843, 844, 286, 287, 287, 286, 1011, 1011, 286, 845, + 286, 1011, 745, 286, 286, 745, 1011, 286, 287, 1011, + 1011, 1011, 287, 287, 241, 1011, 241, 241, 1011, 1011, + 846, 287, 1011, 241, 885, 241, 241, 287, 241, 847, + 241, 241, 287, 848, 287, 1011, 287, 241, 886, 241, + 241, 241, 1011, 241, 241, 1011, 242, 887, 1011, 746, + 241, 849, 241, 241, 241, 242, 241, 241, 1011, 241, + 242, 241, 241, 241, 286, 241, 241, 286, 241, 242, + 241, 241, 1011, 242, 241, 888, 241, 241, 889, 1011, + + 1011, 1011, 242, 1011, 1011, 1011, 242, 241, 1011, 241, + 241, 242, 1011, 1011, 1011, 242, 287, 890, 1011, 241, + 242, 241, 241, 1011, 1011, 241, 242, 241, 241, 891, + 241, 1011, 241, 241, 241, 892, 241, 241, 1011, 242, + 893, 241, 1011, 241, 241, 241, 1011, 241, 241, 1011, + 241, 242, 241, 241, 1011, 1011, 241, 242, 241, 241, + 1011, 286, 242, 894, 286, 896, 242, 895, 241, 1011, + 241, 241, 241, 242, 241, 241, 286, 242, 897, 286, + 1011, 241, 242, 241, 241, 1011, 902, 898, 242, 241, + 1011, 241, 241, 287, 241, 286, 241, 241, 286, 241, + + 242, 241, 241, 286, 242, 903, 286, 286, 287, 286, + 286, 286, 286, 242, 286, 286, 286, 904, 286, 286, + 286, 242, 1011, 286, 900, 899, 242, 287, 905, 1011, + 906, 242, 1011, 286, 286, 287, 286, 286, 901, 287, + 1011, 287, 286, 287, 907, 286, 286, 287, 287, 286, + 286, 286, 287, 286, 286, 286, 908, 1011, 286, 286, + 909, 910, 286, 1011, 911, 287, 287, 1011, 1011, 286, + 286, 1011, 286, 286, 287, 1011, 286, 912, 287, 286, + 914, 1011, 287, 287, 913, 286, 286, 287, 286, 286, + 286, 287, 286, 286, 241, 286, 241, 241, 1011, 1011, + + 915, 287, 287, 241, 1011, 241, 241, 241, 287, 241, + 241, 241, 1011, 241, 241, 1011, 1011, 287, 287, 1011, + 916, 917, 287, 1011, 287, 241, 242, 241, 241, 241, + 1011, 241, 241, 938, 918, 242, 1011, 1011, 241, 242, + 241, 241, 241, 242, 241, 241, 241, 939, 241, 241, + 241, 1011, 241, 241, 1011, 1011, 241, 242, 241, 241, + 940, 242, 241, 1011, 241, 241, 241, 1011, 241, 241, + 242, 941, 942, 241, 242, 241, 241, 241, 242, 241, + 241, 1011, 242, 943, 945, 944, 241, 945, 242, 241, + 286, 241, 241, 286, 242, 1011, 286, 286, 242, 286, + + 286, 286, 1011, 286, 286, 242, 286, 286, 286, 242, + 286, 286, 286, 1011, 286, 286, 242, 286, 1011, 1011, + 1011, 242, 287, 948, 947, 949, 1011, 286, 287, 287, + 286, 946, 1011, 287, 1011, 287, 1011, 950, 286, 287, + 287, 286, 286, 1011, 287, 286, 287, 286, 286, 1011, + 286, 286, 952, 951, 286, 1011, 1011, 286, 953, 287, + 955, 286, 954, 955, 286, 241, 1011, 241, 241, 241, + 287, 241, 241, 286, 287, 970, 286, 1011, 1011, 287, + 287, 1011, 1011, 977, 971, 241, 287, 241, 241, 1011, + 1011, 1011, 287, 287, 1011, 1011, 957, 242, 1011, 1011, + + 241, 242, 241, 241, 1011, 287, 241, 956, 241, 241, + 972, 241, 286, 241, 241, 286, 241, 242, 241, 241, + 945, 1011, 241, 945, 241, 1011, 241, 241, 975, 1011, + 241, 975, 242, 1011, 286, 1011, 286, 286, 242, 286, + 1011, 1011, 286, 242, 287, 286, 979, 1011, 242, 978, + 973, 286, 242, 1011, 286, 286, 242, 1011, 286, 955, + 242, 286, 955, 1011, 286, 1011, 287, 946, 287, 982, + 1011, 974, 982, 286, 287, 976, 286, 241, 1011, 241, + 241, 1011, 241, 287, 241, 241, 1011, 287, 1011, 980, + 1011, 287, 989, 287, 241, 286, 241, 241, 286, 1011, + + 241, 287, 241, 241, 286, 287, 956, 286, 981, 242, + 241, 1011, 241, 241, 242, 975, 983, 241, 975, 241, + 286, 241, 241, 286, 1011, 286, 242, 287, 286, 1011, + 992, 982, 242, 1011, 982, 990, 287, 286, 1011, 993, + 286, 241, 242, 241, 241, 286, 1011, 242, 286, 1011, + 1011, 242, 287, 241, 1011, 241, 241, 287, 241, 1011, + 241, 241, 976, 287, 286, 286, 991, 286, 286, 287, + 1011, 1011, 241, 242, 241, 241, 286, 287, 983, 286, + 241, 1011, 241, 241, 994, 242, 286, 1011, 1011, 286, + 242, 1011, 286, 1011, 997, 286, 287, 287, 1011, 241, + + 286, 241, 241, 286, 242, 998, 1011, 1011, 287, 1009, + 1010, 241, 242, 241, 241, 1011, 1001, 1005, 287, 1011, + 1002, 1011, 1011, 1006, 287, 1011, 1011, 1011, 1011, 1011, + 1011, 242, 287, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 242, 52, 52, 52, 52, 52, 52, + 57, 57, 57, 57, 57, 57, 64, 64, 64, 64, + 64, 64, 69, 69, 69, 69, 69, 69, 171, 171, + 171, 171, 171, 171, 209, 209, 1011, 209, 209, 209, + 219, 219, 219, 219, 219, 219, 222, 1011, 1011, 1011, + 222, 222, 224, 224, 224, 224, 224, 224, 230, 230, + + 1011, 1011, 230, 230, 236, 236, 236, 236, 236, 236, + 240, 240, 1011, 240, 240, 240, 274, 274, 1011, 274, + 274, 274, 285, 285, 1011, 1011, 1011, 285, 320, 320, + 1011, 320, 320, 320, 371, 371, 1011, 1011, 1011, 371, + 17, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011 } ; -static yyconst flex_int16_t yy_chk[3294] = +static yyconst flex_int16_t yy_chk[3392] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 7, 7, 2, 2, 3, 3, 3, 3, 989, + 2, 7, 7, 2, 2, 3, 3, 3, 3, 1027, 2, 4, 4, 4, 4, 4, 5, 5, 6, 6, 8, 8, 19, 2, 28, 19, 4, 15, 15, 15, 15, 28, 39, 32, 15, 34, 32, 46, 35, 2, - 32, 2, 49, 2, 39, 969, 2, 2, 50, 34, + 32, 2, 49, 2, 39, 1007, 2, 2, 50, 34, 50, 46, 67, 177, 4, 35, 177, 67, 5, 15, 6, 200, 49, 5, 200, 6, 9, 9, 9, 9, @@ -1156,356 +1179,367 @@ static yyconst flex_int16_t yy_chk[3294] = 55, 55, 60, 60, 60, 60, 69, 69, 160, 10, 153, 155, 166, 153, 156, 63, 170, 153, 170, 207, - 160, 207, 966, 16, 965, 10, 166, 10, 962, 10, - 961, 156, 10, 10, 11, 11, 11, 11, 11, 11, + 160, 207, 1004, 16, 1003, 10, 166, 10, 1000, 10, + 999, 156, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 169, 214, 12, 12, 72, 107, 72, 72, 107, 12, 184, 73, 73, 73, 73, - 163, 163, 163, 163, 188, 169, 214, 12, 958, 184, + 163, 163, 163, 163, 188, 169, 214, 12, 996, 184, 210, 210, 221, 221, 221, 226, 226, 226, 188, 233, - 957, 72, 107, 12, 233, 12, 359, 12, 73, 359, + 995, 72, 107, 12, 233, 12, 359, 12, 73, 359, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 236, 236, 14, 14, 75, 75, 75, - 75, 951, 14, 950, 76, 111, 76, 76, 111, 77, + 75, 987, 14, 985, 76, 111, 76, 76, 111, 77, 115, 77, 77, 115, 78, 14, 78, 78, 77, 79, - 343, 79, 79, 80, 229, 80, 80, 939, 79, 75, + 343, 79, 79, 80, 229, 80, 80, 984, 79, 75, - 936, 14, 933, 14, 343, 14, 76, 111, 14, 14, + 969, 14, 966, 14, 343, 14, 76, 111, 14, 14, 43, 77, 115, 43, 43, 81, 78, 81, 81, 368, - 43, 79, 229, 112, 932, 80, 112, 82, 347, 82, - 82, 81, 112, 83, 914, 83, 83, 912, 84, 368, - 84, 84, 347, 364, 364, 82, 908, 81, 83, 43, - 907, 43, 82, 905, 904, 112, 43, 43, 903, 82, - 84, 85, 902, 85, 85, 83, 86, 901, 86, 86, - 84, 87, 870, 87, 87, 88, 869, 88, 88, 867, - 866, 89, 86, 89, 89, 86, 88, 87, 864, 86, - 85, 863, 89, 85, 90, 858, 90, 90, 86, 854, - - 88, 853, 91, 87, 91, 91, 852, 88, 92, 89, - 92, 92, 93, 89, 93, 93, 94, 851, 94, 94, + 43, 79, 229, 112, 964, 80, 112, 82, 347, 82, + 82, 81, 112, 83, 542, 83, 83, 643, 84, 368, + 84, 84, 347, 364, 364, 82, 658, 81, 83, 43, + 542, 43, 82, 643, 961, 112, 43, 43, 960, 82, + 84, 85, 658, 85, 85, 83, 86, 959, 86, 86, + 84, 87, 752, 87, 87, 88, 958, 88, 88, 936, + 934, 89, 86, 89, 89, 86, 88, 87, 752, 86, + 85, 931, 89, 85, 90, 929, 90, 90, 86, 928, + + 88, 927, 91, 87, 91, 91, 925, 88, 92, 89, + 92, 92, 93, 89, 93, 93, 94, 924, 94, 94, 95, 90, 95, 95, 91, 408, 90, 94, 408, 97, 93, 97, 97, 92, 91, 95, 96, 96, 96, 96, - 92, 850, 93, 99, 93, 99, 99, 100, 94, 100, - 100, 849, 95, 98, 98, 98, 98, 102, 848, 102, - 102, 97, 847, 101, 97, 101, 101, 103, 96, 103, - 103, 846, 408, 516, 101, 99, 516, 845, 104, 100, - 104, 104, 844, 843, 105, 98, 105, 105, 101, 102, - 106, 114, 106, 106, 114, 101, 842, 841, 840, 103, - - 114, 104, 102, 108, 108, 108, 108, 791, 789, 103, + 92, 923, 93, 99, 93, 99, 99, 100, 94, 100, + 100, 922, 95, 98, 98, 98, 98, 102, 921, 102, + 102, 97, 920, 101, 97, 101, 101, 103, 96, 103, + 103, 919, 408, 516, 101, 99, 516, 884, 104, 100, + 104, 104, 883, 881, 105, 98, 105, 105, 101, 102, + 106, 114, 106, 106, 114, 101, 880, 878, 877, 103, + + 114, 104, 102, 108, 108, 108, 108, 876, 871, 103, 104, 110, 110, 110, 110, 116, 105, 105, 116, 105, 516, 104, 106, 114, 117, 118, 119, 117, 118, 119, - 120, 116, 788, 120, 787, 108, 122, 106, 125, 122, - 118, 125, 117, 110, 786, 785, 783, 116, 119, 117, - 121, 127, 122, 121, 127, 782, 117, 118, 119, 120, - 123, 124, 120, 123, 124, 125, 121, 780, 122, 121, - 125, 123, 124, 121, 126, 129, 127, 126, 129, 779, - 778, 128, 121, 127, 128, 123, 129, 130, 132, 124, - 130, 132, 123, 124, 777, 772, 126, 769, 134, 128, - - 134, 134, 130, 768, 767, 134, 126, 129, 766, 135, - 765, 128, 135, 128, 131, 131, 131, 131, 136, 130, - 132, 136, 764, 132, 133, 133, 133, 133, 137, 136, - 134, 137, 138, 763, 139, 138, 140, 139, 762, 140, - 761, 135, 551, 136, 141, 551, 131, 141, 760, 759, - 136, 142, 142, 142, 142, 758, 133, 139, 171, 757, - 137, 171, 756, 755, 138, 754, 139, 555, 140, 140, - 555, 140, 753, 137, 138, 752, 141, 139, 144, 144, - 144, 144, 751, 142, 165, 165, 165, 165, 750, 551, + 120, 116, 870, 120, 866, 108, 122, 106, 125, 122, + 118, 125, 117, 110, 865, 864, 863, 116, 119, 117, + 121, 127, 122, 121, 127, 862, 117, 118, 119, 120, + 123, 124, 120, 123, 124, 125, 121, 861, 122, 121, + 125, 123, 124, 121, 126, 129, 127, 126, 129, 860, + 859, 128, 121, 127, 128, 123, 129, 130, 132, 124, + 130, 132, 123, 124, 858, 857, 126, 856, 134, 128, + + 134, 134, 130, 855, 854, 134, 126, 129, 853, 135, + 852, 128, 135, 128, 131, 131, 131, 131, 136, 130, + 132, 136, 851, 132, 133, 133, 133, 133, 137, 136, + 134, 137, 138, 850, 139, 138, 140, 139, 797, 140, + 795, 135, 551, 136, 141, 551, 131, 141, 794, 793, + 136, 142, 142, 142, 142, 792, 133, 139, 171, 791, + 137, 171, 789, 788, 138, 787, 139, 555, 140, 140, + 555, 140, 785, 137, 138, 784, 141, 139, 144, 144, + 144, 144, 783, 142, 165, 165, 165, 165, 782, 551, 171, 141, 172, 172, 172, 172, 174, 174, 174, 174, - 176, 176, 176, 176, 235, 235, 235, 235, 749, 240, - 144, 240, 240, 748, 555, 241, 165, 241, 241, 242, - 242, 242, 242, 747, 172, 746, 285, 745, 174, 285, - 744, 683, 176, 243, 243, 243, 243, 245, 245, 245, + 176, 176, 176, 176, 235, 235, 235, 235, 777, 240, + 144, 240, 240, 776, 555, 241, 165, 241, 241, 242, + 242, 242, 242, 773, 172, 772, 285, 771, 174, 285, + 770, 769, 176, 243, 243, 243, 243, 245, 245, 245, 245, 240, 246, 246, 246, 246, 248, 241, 248, 248, - 682, 242, 235, 680, 249, 248, 249, 249, 285, 250, - 679, 250, 250, 677, 252, 243, 252, 252, 676, 245, + 768, 242, 235, 767, 249, 248, 249, 249, 285, 250, + 766, 250, 250, 765, 252, 243, 252, 252, 764, 245, 250, 251, 286, 251, 251, 286, 249, 253, 248, 253, - 253, 675, 254, 673, 254, 254, 249, 672, 253, 671, - 252, 250, 255, 251, 255, 255, 252, 254, 256, 670, - - 256, 256, 253, 251, 286, 669, 668, 255, 257, 253, - 257, 257, 665, 258, 254, 258, 258, 664, 663, 257, - 259, 662, 259, 259, 255, 661, 260, 256, 260, 260, - 256, 660, 658, 257, 261, 258, 261, 261, 657, 262, - 257, 262, 262, 656, 655, 258, 263, 259, 263, 263, - 260, 264, 259, 264, 264, 654, 653, 261, 260, 651, - 650, 265, 264, 265, 265, 263, 261, 649, 648, 262, - 266, 262, 266, 266, 265, 647, 646, 267, 263, 267, - 267, 645, 268, 264, 268, 268, 644, 643, 269, 267, - 269, 269, 642, 265, 270, 270, 270, 270, 641, 268, - - 266, 272, 266, 272, 272, 640, 639, 269, 638, 267, - 269, 637, 636, 274, 268, 274, 274, 635, 634, 275, - 269, 275, 275, 633, 632, 631, 270, 276, 276, 276, - 276, 630, 278, 272, 278, 278, 277, 272, 277, 277, - 279, 629, 279, 279, 280, 274, 280, 280, 628, 627, + 253, 763, 254, 762, 254, 254, 249, 761, 253, 760, + 252, 250, 255, 251, 255, 255, 252, 254, 256, 759, + + 256, 256, 253, 251, 286, 758, 757, 255, 257, 253, + 257, 257, 756, 258, 254, 258, 258, 755, 754, 257, + 259, 753, 259, 259, 255, 751, 260, 256, 260, 260, + 256, 750, 749, 257, 261, 258, 261, 261, 748, 262, + 257, 262, 262, 747, 684, 258, 263, 259, 263, 263, + 260, 264, 259, 264, 264, 683, 681, 261, 260, 680, + 678, 265, 264, 265, 265, 263, 261, 677, 676, 262, + 266, 262, 266, 266, 265, 674, 673, 267, 263, 267, + 267, 672, 268, 264, 268, 268, 671, 670, 269, 267, + 269, 269, 669, 265, 270, 270, 270, 270, 668, 268, + + 266, 272, 266, 272, 272, 665, 664, 269, 663, 267, + 269, 662, 661, 274, 268, 274, 274, 660, 657, 275, + 269, 275, 275, 656, 655, 654, 270, 276, 276, 276, + 276, 653, 278, 272, 278, 278, 277, 272, 277, 277, + 279, 651, 279, 279, 280, 274, 280, 280, 650, 649, 281, 275, 281, 281, 283, 280, 283, 283, 282, 276, - 282, 282, 277, 277, 278, 278, 626, 284, 277, 284, - 284, 625, 279, 281, 556, 279, 280, 287, 287, 287, - 287, 554, 281, 553, 552, 293, 283, 548, 293, 547, - 282, 546, 294, 281, 293, 294, 545, 282, 283, 284, + 282, 282, 277, 277, 278, 278, 648, 284, 277, 284, + 284, 647, 279, 281, 646, 279, 280, 287, 287, 287, + 287, 645, 281, 644, 642, 293, 283, 641, 293, 640, + 282, 639, 294, 281, 293, 294, 638, 282, 283, 284, - 288, 288, 288, 288, 290, 290, 290, 290, 544, 287, + 288, 288, 288, 288, 290, 290, 290, 290, 637, 287, 291, 291, 291, 291, 294, 295, 296, 293, 295, 296, - 297, 543, 299, 297, 294, 299, 295, 300, 298, 542, - 300, 298, 288, 541, 540, 539, 290, 299, 296, 298, - 301, 303, 300, 301, 303, 538, 297, 295, 296, 537, - 536, 535, 297, 298, 299, 302, 534, 533, 302, 300, + 297, 636, 299, 297, 294, 299, 295, 300, 298, 635, + 300, 298, 288, 634, 633, 632, 290, 299, 296, 298, + 301, 303, 300, 301, 303, 631, 297, 295, 296, 630, + 629, 628, 297, 298, 299, 302, 627, 626, 302, 300, 298, 304, 305, 303, 304, 305, 302, 306, 307, 301, - 306, 307, 301, 303, 309, 532, 308, 309, 310, 308, - 302, 310, 531, 530, 529, 309, 305, 302, 304, 311, - 306, 310, 311, 304, 305, 308, 528, 527, 307, 306, - - 307, 312, 526, 525, 312, 524, 309, 520, 308, 313, - 310, 519, 313, 312, 318, 314, 518, 318, 314, 311, - 517, 311, 315, 315, 315, 315, 313, 317, 317, 317, - 317, 514, 324, 312, 314, 324, 320, 314, 320, 320, - 513, 313, 321, 320, 321, 321, 318, 314, 325, 321, - 318, 325, 512, 511, 315, 322, 322, 322, 322, 510, - 509, 508, 322, 323, 324, 324, 323, 326, 320, 327, - 326, 507, 327, 506, 321, 505, 328, 504, 326, 328, - 325, 329, 330, 325, 329, 330, 503, 322, 502, 323, - 323, 501, 327, 500, 335, 323, 335, 335, 499, 326, - - 498, 327, 331, 331, 331, 331, 371, 372, 328, 371, - 372, 497, 327, 329, 330, 328, 333, 333, 333, 333, - 334, 334, 334, 334, 496, 329, 335, 360, 360, 360, - 360, 495, 494, 378, 331, 378, 378, 493, 371, 372, + 306, 307, 301, 303, 309, 625, 308, 309, 310, 308, + 302, 310, 556, 554, 553, 309, 305, 302, 304, 311, + 306, 310, 311, 304, 305, 308, 552, 548, 307, 306, + + 307, 312, 547, 546, 312, 545, 309, 544, 308, 313, + 310, 543, 313, 312, 318, 314, 541, 318, 314, 311, + 540, 311, 315, 315, 315, 315, 313, 317, 317, 317, + 317, 539, 324, 312, 314, 324, 320, 314, 320, 320, + 538, 313, 321, 320, 321, 321, 318, 314, 325, 321, + 318, 325, 537, 536, 315, 322, 322, 322, 322, 535, + 534, 533, 322, 323, 324, 324, 323, 326, 320, 327, + 326, 532, 327, 531, 321, 530, 328, 529, 326, 328, + 325, 329, 330, 325, 329, 330, 528, 322, 527, 323, + 323, 526, 327, 525, 335, 323, 335, 335, 524, 326, + + 520, 327, 331, 331, 331, 331, 371, 372, 328, 371, + 372, 519, 327, 329, 330, 328, 333, 333, 333, 333, + 334, 334, 334, 334, 518, 329, 335, 360, 360, 360, + 360, 517, 514, 378, 331, 378, 378, 513, 371, 372, 373, 373, 373, 373, 374, 374, 374, 374, 333, 376, 376, 376, 376, 377, 377, 377, 377, 379, 379, 379, 379, 381, 381, 381, 381, 378, 407, 407, 407, 407, - 492, 491, 373, 490, 413, 412, 374, 414, 414, 414, - 414, 376, 415, 415, 415, 415, 411, 410, 409, 379, - 416, 416, 416, 416, 418, 418, 418, 418, 406, 419, - - 419, 419, 419, 421, 421, 421, 421, 422, 405, 422, - 422, 423, 404, 423, 423, 403, 402, 424, 422, 424, - 424, 425, 401, 425, 425, 414, 456, 456, 456, 456, - 415, 419, 400, 399, 426, 423, 426, 426, 416, 422, - 398, 397, 424, 423, 427, 396, 427, 427, 395, 424, - 425, 426, 428, 425, 428, 428, 429, 394, 429, 429, - 472, 393, 430, 472, 430, 430, 426, 429, 431, 427, - 431, 431, 472, 392, 391, 428, 427, 430, 432, 390, - 432, 432, 389, 434, 428, 434, 434, 433, 429, 433, - 433, 388, 472, 387, 430, 386, 431, 385, 433, 384, - - 431, 383, 432, 435, 434, 435, 435, 382, 370, 436, - 432, 436, 436, 369, 437, 434, 437, 437, 438, 433, - 438, 438, 367, 366, 436, 439, 437, 439, 439, 652, - 365, 435, 652, 438, 440, 435, 440, 440, 439, 362, - 441, 436, 441, 441, 358, 442, 437, 442, 442, 459, - 438, 443, 459, 443, 443, 440, 441, 439, 444, 357, - 444, 444, 356, 355, 354, 445, 440, 445, 445, 353, - 352, 351, 441, 442, 459, 444, 652, 442, 445, 443, - 350, 459, 446, 443, 446, 446, 447, 447, 447, 447, - 444, 448, 448, 448, 448, 349, 449, 445, 449, 449, - - 450, 348, 450, 450, 451, 346, 451, 451, 452, 458, - 452, 452, 458, 681, 446, 446, 681, 453, 447, 453, - 453, 345, 344, 448, 454, 454, 454, 454, 449, 342, - 451, 457, 450, 458, 457, 460, 451, 341, 460, 450, + 512, 511, 373, 510, 509, 508, 374, 414, 414, 414, + 414, 376, 415, 415, 415, 415, 507, 506, 505, 379, + 416, 416, 416, 416, 418, 418, 418, 418, 504, 419, + + 419, 419, 419, 421, 421, 421, 421, 422, 503, 422, + 422, 423, 502, 423, 423, 501, 500, 424, 422, 424, + 424, 425, 499, 425, 425, 414, 456, 456, 456, 456, + 415, 419, 498, 497, 426, 423, 426, 426, 416, 422, + 496, 495, 424, 423, 427, 494, 427, 427, 493, 424, + 425, 426, 428, 425, 428, 428, 429, 492, 429, 429, + 472, 491, 430, 472, 430, 430, 426, 429, 431, 427, + 431, 431, 472, 490, 413, 428, 427, 430, 432, 412, + 432, 432, 411, 434, 428, 434, 434, 433, 429, 433, + 433, 410, 472, 409, 430, 406, 431, 405, 433, 404, + + 431, 403, 432, 435, 434, 435, 435, 402, 401, 436, + 432, 436, 436, 400, 437, 434, 437, 437, 438, 433, + 438, 438, 399, 398, 436, 439, 437, 439, 439, 652, + 397, 435, 652, 438, 440, 435, 440, 440, 439, 396, + 441, 436, 441, 441, 395, 442, 437, 442, 442, 459, + 438, 443, 459, 443, 443, 440, 441, 439, 444, 394, + 444, 444, 393, 392, 391, 445, 440, 445, 445, 390, + 389, 388, 441, 442, 459, 444, 652, 442, 445, 443, + 387, 459, 446, 443, 446, 446, 447, 447, 447, 447, + 444, 448, 448, 448, 448, 386, 449, 445, 449, 449, + + 450, 385, 450, 450, 451, 384, 451, 451, 452, 458, + 452, 452, 458, 682, 446, 446, 682, 453, 447, 453, + 453, 383, 382, 448, 454, 454, 454, 454, 449, 370, + 451, 457, 450, 458, 457, 460, 451, 369, 460, 450, 452, 458, 457, 449, 461, 462, 452, 461, 462, 453, - 463, 464, 340, 463, 464, 467, 454, 453, 467, 339, - 681, 461, 464, 457, 460, 465, 466, 460, 465, 466, - 462, 469, 338, 463, 469, 468, 461, 462, 468, 467, - 465, 470, 463, 464, 470, 471, 468, 467, 471, 238, - 473, 234, 469, 473, 466, 231, 230, 465, 466, 474, - - 471, 480, 474, 469, 480, 473, 228, 468, 475, 470, - 227, 475, 474, 470, 480, 477, 476, 471, 477, 476, - 479, 478, 473, 479, 478, 481, 225, 220, 481, 475, - 216, 474, 476, 480, 215, 868, 213, 479, 868, 212, - 475, 211, 906, 477, 208, 906, 206, 477, 476, 478, - 205, 485, 479, 478, 485, 201, 199, 481, 481, 482, - 482, 482, 482, 198, 197, 196, 482, 483, 483, 483, + 463, 464, 367, 463, 464, 467, 454, 453, 467, 366, + 682, 461, 464, 457, 460, 465, 466, 460, 465, 466, + 462, 469, 365, 463, 469, 468, 461, 462, 468, 467, + 465, 470, 463, 464, 470, 471, 468, 467, 471, 362, + 473, 358, 469, 473, 466, 357, 356, 465, 466, 474, + + 471, 480, 474, 469, 480, 473, 355, 468, 475, 470, + 354, 475, 474, 470, 480, 477, 476, 471, 477, 476, + 479, 478, 473, 479, 478, 481, 353, 352, 481, 475, + 351, 474, 476, 480, 350, 882, 349, 479, 882, 348, + 475, 346, 926, 477, 345, 926, 344, 477, 476, 478, + 342, 485, 479, 478, 485, 341, 340, 481, 481, 482, + 482, 482, 482, 339, 338, 238, 482, 483, 483, 483, 483, 484, 484, 484, 484, 486, 487, 488, 486, 487, - 488, 489, 868, 485, 489, 515, 515, 515, 515, 906, - 195, 482, 521, 521, 521, 521, 194, 193, 485, 192, + 488, 489, 882, 485, 489, 515, 515, 515, 515, 926, + 234, 482, 521, 521, 521, 521, 231, 230, 485, 228, - 191, 190, 487, 484, 189, 187, 186, 486, 487, 488, - 185, 183, 182, 489, 486, 488, 523, 523, 523, 523, + 227, 225, 487, 484, 220, 216, 215, 486, 487, 488, + 213, 212, 211, 489, 486, 488, 523, 523, 523, 523, 565, 489, 565, 565, 521, 549, 549, 549, 549, 557, 557, 557, 557, 559, 559, 559, 559, 560, 560, 560, - 560, 562, 562, 562, 562, 181, 563, 180, 563, 563, - 565, 564, 565, 564, 564, 566, 179, 566, 566, 568, - 168, 568, 568, 563, 564, 567, 167, 567, 567, 569, - 164, 569, 569, 566, 162, 161, 159, 557, 563, 569, - 158, 596, 157, 564, 596, 560, 568, 566, 154, 152, - 151, 568, 570, 567, 570, 570, 571, 567, 571, 571, - - 150, 569, 572, 148, 572, 572, 146, 573, 145, 573, - 573, 596, 574, 596, 574, 574, 71, 913, 68, 571, - 913, 570, 915, 572, 570, 915, 66, 64, 571, 574, - 575, 62, 575, 575, 572, 573, 59, 54, 576, 573, - 576, 576, 51, 48, 574, 575, 47, 577, 576, 577, - 577, 42, 578, 41, 578, 578, 934, 577, 579, 934, - 579, 579, 575, 580, 913, 580, 580, 40, 595, 915, - 576, 595, 581, 598, 581, 581, 598, 38, 580, 577, - 578, 595, 579, 37, 578, 581, 582, 36, 582, 582, - 579, 583, 33, 583, 583, 580, 584, 31, 584, 584, - - 595, 598, 582, 934, 581, 598, 584, 585, 30, 585, - 585, 586, 29, 586, 586, 27, 25, 23, 582, 587, + 560, 562, 562, 562, 562, 208, 563, 206, 563, 563, + 565, 564, 565, 564, 564, 566, 205, 566, 566, 568, + 201, 568, 568, 563, 564, 567, 199, 567, 567, 569, + 198, 569, 569, 566, 197, 196, 195, 557, 563, 569, + 194, 596, 193, 564, 596, 560, 568, 566, 192, 191, + 190, 568, 570, 567, 570, 570, 571, 567, 571, 571, + + 189, 569, 572, 187, 572, 572, 186, 573, 185, 573, + 573, 596, 574, 596, 574, 574, 183, 935, 182, 571, + 935, 570, 937, 572, 570, 937, 181, 180, 571, 574, + 575, 179, 575, 575, 572, 573, 168, 167, 576, 573, + 576, 576, 164, 162, 574, 575, 161, 577, 576, 577, + 577, 159, 578, 158, 578, 578, 962, 577, 579, 962, + 579, 579, 575, 580, 935, 580, 580, 157, 595, 937, + 576, 595, 581, 600, 581, 581, 600, 154, 580, 577, + 578, 595, 579, 600, 578, 581, 582, 152, 582, 582, + 579, 583, 151, 583, 583, 580, 584, 150, 584, 584, + + 595, 581, 582, 962, 581, 600, 584, 585, 148, 585, + 585, 586, 146, 586, 586, 145, 71, 68, 582, 587, 583, 587, 587, 583, 589, 585, 589, 589, 584, 588, - 588, 588, 588, 21, 17, 590, 586, 590, 590, 585, - 0, 0, 591, 586, 591, 591, 592, 597, 592, 592, - 597, 587, 593, 0, 593, 593, 589, 0, 0, 594, - 0, 588, 594, 599, 587, 597, 599, 590, 0, 601, - 0, 589, 601, 0, 591, 0, 594, 0, 592, 597, - 592, 0, 590, 600, 593, 602, 600, 591, 602, 603, - 599, 594, 603, 600, 604, 599, 0, 604, 601, 593, - - 0, 601, 605, 606, 607, 605, 606, 607, 602, 609, - 603, 0, 609, 608, 607, 600, 608, 602, 606, 605, - 0, 603, 604, 608, 610, 611, 604, 610, 611, 612, - 613, 0, 612, 613, 605, 606, 607, 609, 0, 0, - 611, 609, 612, 0, 614, 608, 613, 614, 610, 615, - 616, 618, 615, 616, 618, 617, 610, 611, 617, 615, - 0, 612, 613, 619, 619, 619, 619, 620, 616, 621, - 620, 0, 621, 614, 622, 623, 614, 622, 623, 0, - 617, 615, 616, 618, 0, 624, 938, 617, 624, 938, - 684, 0, 684, 684, 716, 619, 618, 716, 0, 620, - - 0, 621, 686, 0, 686, 686, 622, 623, 685, 623, - 685, 685, 0, 0, 620, 0, 621, 624, 684, 622, - 0, 716, 684, 685, 0, 687, 716, 687, 687, 686, - 0, 0, 624, 938, 686, 687, 688, 0, 688, 688, - 685, 689, 0, 689, 689, 690, 688, 690, 690, 691, - 0, 691, 691, 692, 689, 692, 692, 687, 697, 691, - 697, 697, 693, 692, 693, 693, 0, 695, 688, 695, - 695, 719, 693, 689, 719, 0, 694, 690, 694, 694, - 696, 691, 696, 696, 719, 692, 694, 0, 0, 698, - 697, 698, 698, 0, 693, 695, 0, 0, 699, 695, - - 699, 699, 700, 719, 700, 700, 0, 696, 694, 0, - 0, 714, 696, 701, 714, 701, 701, 702, 0, 702, - 702, 698, 703, 701, 703, 703, 704, 699, 704, 704, - 699, 700, 0, 0, 700, 705, 704, 705, 705, 714, - 0, 0, 702, 714, 703, 701, 0, 0, 706, 702, - 706, 706, 0, 707, 703, 707, 707, 708, 704, 708, - 708, 709, 0, 709, 709, 0, 710, 705, 710, 710, - 711, 0, 711, 711, 0, 715, 707, 706, 715, 712, - 706, 712, 712, 0, 713, 707, 713, 713, 0, 708, - 715, 717, 720, 709, 717, 720, 708, 0, 710, 0, - - 710, 717, 711, 711, 0, 718, 0, 715, 718, 721, - 722, 712, 721, 722, 727, 718, 713, 727, 723, 721, - 722, 723, 724, 717, 720, 724, 712, 725, 723, 0, - 725, 713, 724, 726, 0, 728, 726, 718, 728, 0, - 729, 721, 722, 729, 730, 0, 727, 730, 731, 732, - 723, 731, 732, 733, 724, 725, 733, 0, 731, 725, - 726, 734, 0, 735, 734, 726, 735, 728, 0, 729, - 0, 734, 729, 730, 732, 733, 730, 0, 0, 736, - 731, 732, 736, 737, 738, 733, 737, 738, 739, 741, - 0, 739, 741, 734, 740, 735, 0, 740, 742, 743, - - 0, 742, 743, 0, 0, 0, 737, 792, 736, 792, - 792, 736, 0, 0, 0, 737, 738, 792, 0, 0, - 739, 741, 741, 738, 819, 0, 740, 819, 740, 0, - 742, 743, 793, 0, 793, 793, 0, 0, 794, 792, - 794, 794, 793, 0, 0, 742, 743, 795, 794, 795, - 795, 796, 0, 796, 796, 797, 819, 797, 797, 798, - 0, 798, 798, 799, 793, 799, 799, 0, 0, 800, - 794, 800, 800, 801, 0, 801, 801, 0, 0, 795, - 797, 0, 802, 796, 802, 802, 803, 797, 803, 803, - 820, 798, 802, 820, 0, 799, 803, 804, 0, 804, - - 804, 800, 0, 0, 0, 801, 805, 804, 805, 805, - 806, 0, 806, 806, 802, 0, 805, 807, 803, 807, - 807, 808, 820, 808, 808, 809, 0, 809, 809, 804, - 810, 0, 810, 810, 0, 0, 808, 0, 805, 807, - 810, 811, 806, 811, 811, 812, 0, 812, 812, 807, - 0, 0, 813, 808, 813, 813, 811, 809, 814, 0, - 814, 814, 810, 815, 816, 815, 815, 816, 817, 818, - 0, 817, 818, 811, 816, 0, 0, 812, 817, 818, - 821, 0, 822, 821, 813, 822, 0, 813, 823, 812, - 814, 823, 0, 0, 824, 815, 816, 824, 0, 0, - - 817, 818, 814, 825, 0, 821, 825, 826, 827, 0, - 826, 827, 821, 828, 822, 0, 828, 826, 827, 829, - 823, 830, 829, 828, 830, 831, 824, 832, 831, 829, - 832, 833, 0, 834, 833, 825, 834, 0, 0, 826, - 827, 835, 832, 834, 835, 828, 836, 831, 0, 836, - 0, 829, 837, 830, 0, 837, 835, 831, 0, 832, - 0, 838, 0, 833, 838, 834, 839, 0, 871, 839, - 871, 871, 872, 835, 872, 872, 0, 873, 836, 873, - 873, 0, 0, 0, 837, 0, 874, 837, 874, 874, - 836, 0, 875, 838, 875, 875, 0, 0, 839, 876, - - 871, 876, 876, 0, 872, 838, 0, 0, 874, 873, - 877, 0, 877, 877, 878, 0, 878, 878, 874, 879, - 0, 879, 879, 880, 875, 880, 880, 886, 0, 879, - 886, 876, 881, 880, 881, 881, 0, 882, 0, 882, - 882, 883, 877, 883, 883, 887, 878, 882, 887, 883, - 884, 879, 884, 884, 885, 880, 885, 885, 888, 886, - 890, 888, 889, 890, 881, 889, 0, 891, 892, 882, - 891, 892, 893, 883, 0, 893, 896, 887, 894, 896, - 0, 894, 884, 0, 889, 0, 885, 0, 894, 885, - 888, 0, 890, 895, 889, 897, 895, 884, 897, 891, - - 892, 0, 0, 895, 893, 897, 898, 0, 896, 898, - 894, 0, 899, 900, 898, 899, 900, 0, 916, 0, - 916, 916, 0, 0, 0, 895, 0, 897, 916, 917, - 0, 917, 917, 918, 0, 918, 918, 919, 898, 919, - 919, 0, 0, 925, 899, 900, 925, 0, 900, 920, - 916, 920, 920, 921, 926, 921, 921, 926, 0, 899, - 922, 917, 922, 922, 923, 918, 923, 923, 0, 919, - 924, 927, 0, 924, 927, 925, 928, 0, 0, 928, - 924, 920, 0, 920, 929, 921, 926, 929, 930, 0, - 931, 930, 922, 931, 0, 940, 923, 940, 940, 0, - - 921, 0, 924, 927, 0, 0, 945, 922, 928, 945, - 928, 923, 941, 0, 941, 941, 929, 0, 0, 0, - 930, 942, 931, 942, 942, 0, 943, 940, 943, 943, - 944, 929, 944, 944, 0, 930, 946, 931, 945, 946, - 947, 0, 948, 947, 941, 948, 949, 941, 954, 949, - 954, 954, 956, 942, 953, 956, 953, 953, 943, 0, - 955, 0, 944, 955, 959, 0, 959, 959, 946, 0, - 0, 946, 947, 943, 948, 0, 0, 944, 949, 960, - 954, 0, 960, 0, 956, 963, 953, 963, 963, 948, - 0, 0, 955, 949, 964, 953, 959, 964, 0, 0, - - 967, 955, 967, 967, 968, 0, 972, 968, 959, 972, - 967, 960, 0, 971, 968, 971, 971, 963, 0, 0, - 0, 0, 963, 960, 0, 0, 964, 0, 0, 0, - 0, 964, 967, 0, 0, 0, 968, 0, 972, 0, - 0, 0, 0, 0, 0, 971, 974, 974, 974, 974, - 974, 974, 975, 975, 975, 975, 975, 975, 976, 976, - 976, 976, 976, 976, 977, 977, 977, 977, 977, 977, - 978, 978, 978, 978, 978, 978, 979, 979, 0, 979, - 979, 979, 980, 980, 980, 980, 980, 980, 981, 0, - 0, 0, 981, 981, 982, 982, 982, 982, 982, 982, - - 983, 983, 0, 0, 983, 983, 984, 984, 984, 984, - 984, 984, 985, 985, 0, 985, 985, 985, 986, 986, - 0, 986, 986, 986, 987, 987, 0, 0, 0, 987, - 988, 988, 0, 988, 988, 988, 990, 990, 0, 0, - 0, 990, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973 + 588, 588, 588, 66, 64, 590, 586, 590, 590, 585, + 62, 59, 591, 586, 591, 591, 592, 597, 592, 592, + 597, 587, 593, 54, 593, 593, 589, 598, 51, 594, + 598, 588, 594, 599, 587, 597, 599, 590, 48, 601, + 602, 589, 601, 602, 591, 47, 594, 42, 592, 597, + 592, 41, 590, 603, 593, 598, 603, 591, 40, 598, + 599, 594, 38, 602, 604, 599, 37, 604, 601, 593, + + 605, 601, 602, 605, 603, 606, 607, 609, 606, 607, + 609, 608, 36, 33, 608, 603, 607, 605, 31, 30, + 606, 608, 604, 29, 610, 611, 604, 610, 611, 27, + 613, 612, 605, 613, 612, 609, 25, 606, 607, 609, + 611, 23, 614, 608, 612, 614, 613, 616, 610, 615, + 616, 617, 615, 21, 617, 618, 610, 611, 618, 615, + 612, 620, 613, 612, 620, 616, 619, 619, 619, 619, + 621, 614, 17, 621, 614, 622, 617, 623, 622, 616, + 623, 615, 624, 617, 0, 624, 686, 618, 686, 686, + 0, 0, 718, 620, 685, 718, 685, 685, 619, 0, + + 618, 686, 621, 687, 0, 687, 687, 622, 620, 623, + 0, 623, 0, 688, 624, 688, 688, 621, 686, 718, + 622, 0, 685, 688, 718, 690, 685, 690, 690, 624, + 687, 689, 0, 689, 689, 687, 0, 691, 690, 691, + 691, 689, 0, 0, 717, 688, 692, 717, 692, 692, + 693, 0, 693, 693, 690, 968, 692, 690, 968, 717, + 693, 0, 694, 689, 694, 694, 0, 0, 0, 691, + 0, 695, 694, 695, 695, 0, 717, 696, 692, 696, + 696, 695, 693, 697, 0, 697, 697, 698, 0, 698, + 698, 0, 0, 699, 694, 699, 699, 700, 0, 700, + + 700, 0, 968, 695, 701, 696, 701, 701, 0, 696, + 697, 702, 0, 702, 702, 697, 0, 0, 0, 698, + 703, 702, 703, 703, 0, 699, 700, 0, 704, 700, + 704, 704, 705, 701, 705, 705, 701, 0, 706, 0, + 706, 706, 0, 702, 0, 703, 716, 704, 706, 716, + 0, 0, 703, 707, 705, 707, 707, 0, 0, 708, + 704, 708, 708, 709, 705, 709, 709, 0, 0, 710, + 706, 710, 710, 711, 716, 711, 711, 712, 716, 712, + 712, 713, 0, 713, 713, 707, 709, 714, 708, 714, + 714, 708, 0, 0, 715, 709, 715, 715, 0, 722, + + 719, 710, 722, 719, 721, 711, 0, 721, 710, 712, + 719, 712, 720, 713, 713, 720, 0, 721, 723, 714, + 724, 723, 720, 724, 728, 0, 715, 728, 723, 0, + 724, 722, 719, 721, 714, 725, 721, 726, 725, 0, + 726, 715, 0, 727, 720, 725, 727, 726, 0, 0, + 723, 728, 724, 0, 729, 730, 728, 729, 730, 731, + 732, 0, 731, 732, 0, 734, 0, 725, 734, 726, + 733, 727, 0, 733, 735, 727, 736, 735, 0, 736, + 733, 738, 739, 0, 738, 739, 729, 730, 731, 732, + 734, 731, 732, 735, 0, 0, 740, 734, 736, 740, + + 737, 741, 733, 737, 741, 0, 735, 0, 736, 742, + 737, 739, 742, 738, 739, 743, 0, 0, 743, 740, + 744, 0, 745, 744, 746, 745, 0, 746, 740, 0, + 0, 0, 737, 741, 798, 0, 798, 798, 0, 0, + 741, 742, 0, 801, 798, 801, 801, 743, 799, 743, + 799, 799, 744, 744, 745, 0, 746, 800, 799, 800, + 800, 802, 0, 802, 802, 0, 798, 800, 0, 745, + 803, 746, 803, 803, 805, 801, 805, 805, 0, 804, + 799, 804, 804, 806, 827, 806, 806, 827, 807, 800, + 807, 807, 0, 802, 808, 803, 808, 808, 804, 0, + + 0, 0, 803, 0, 0, 0, 805, 809, 0, 809, + 809, 804, 0, 0, 0, 806, 827, 809, 0, 810, + 807, 810, 810, 0, 0, 811, 808, 811, 811, 810, + 812, 0, 812, 812, 813, 811, 813, 813, 0, 809, + 812, 814, 0, 814, 814, 815, 0, 815, 815, 0, + 816, 810, 816, 816, 0, 0, 817, 811, 817, 817, + 0, 828, 812, 814, 828, 816, 813, 815, 818, 0, + 818, 818, 819, 814, 819, 819, 824, 815, 818, 824, + 0, 820, 816, 820, 820, 0, 824, 819, 817, 821, + 0, 821, 821, 828, 822, 825, 822, 822, 825, 823, + + 818, 823, 823, 829, 819, 825, 829, 826, 824, 831, + 826, 830, 831, 820, 830, 832, 833, 826, 832, 833, + 834, 821, 0, 834, 821, 820, 822, 825, 829, 0, + 830, 823, 0, 839, 835, 829, 839, 835, 822, 826, + 0, 831, 840, 830, 835, 840, 836, 832, 833, 836, + 837, 838, 834, 837, 838, 841, 836, 0, 841, 843, + 837, 838, 843, 0, 840, 839, 835, 0, 0, 842, + 844, 0, 842, 844, 840, 0, 846, 841, 836, 846, + 844, 0, 837, 838, 842, 845, 847, 841, 845, 847, + 848, 843, 849, 848, 885, 849, 885, 885, 0, 0, + + 845, 842, 844, 886, 0, 886, 886, 887, 846, 887, + 887, 888, 0, 888, 888, 0, 0, 845, 847, 0, + 846, 847, 848, 0, 849, 889, 885, 889, 889, 890, + 0, 890, 890, 888, 848, 886, 0, 0, 891, 887, + 891, 891, 892, 888, 892, 892, 893, 889, 893, 893, + 894, 0, 894, 894, 0, 0, 895, 889, 895, 895, + 894, 890, 896, 0, 896, 896, 897, 0, 897, 897, + 891, 895, 896, 898, 892, 898, 898, 899, 893, 899, + 899, 0, 894, 898, 900, 899, 900, 900, 895, 901, + 902, 901, 901, 902, 896, 0, 903, 904, 897, 903, + + 904, 905, 0, 906, 905, 898, 906, 907, 908, 899, + 907, 908, 909, 0, 910, 909, 900, 910, 0, 0, + 0, 901, 902, 905, 901, 906, 0, 911, 903, 904, + 911, 900, 0, 905, 0, 906, 0, 911, 912, 907, + 908, 912, 913, 0, 909, 913, 910, 914, 915, 0, + 914, 915, 913, 912, 916, 0, 0, 916, 915, 911, + 917, 918, 916, 917, 918, 938, 0, 938, 938, 939, + 912, 939, 939, 948, 913, 938, 948, 0, 0, 914, + 915, 0, 0, 948, 939, 940, 916, 940, 940, 0, + 0, 0, 917, 918, 0, 0, 918, 938, 0, 0, + + 941, 939, 941, 941, 0, 948, 942, 917, 942, 942, + 941, 943, 950, 943, 943, 950, 944, 940, 944, 944, + 945, 0, 945, 945, 946, 0, 946, 946, 947, 0, + 947, 947, 941, 0, 949, 0, 951, 949, 942, 951, + 0, 0, 952, 943, 950, 952, 951, 0, 944, 949, + 944, 953, 945, 0, 953, 954, 946, 0, 954, 955, + 947, 956, 955, 0, 956, 0, 949, 945, 951, 957, + 0, 946, 957, 977, 952, 947, 977, 970, 0, 970, + 970, 0, 971, 953, 971, 971, 0, 954, 0, 954, + 0, 955, 971, 956, 972, 979, 972, 972, 979, 0, + + 973, 957, 973, 973, 980, 977, 955, 980, 956, 970, + 974, 0, 974, 974, 971, 975, 957, 975, 975, 976, + 978, 976, 976, 978, 0, 981, 972, 979, 981, 0, + 978, 982, 973, 0, 982, 973, 980, 983, 0, 980, + 983, 989, 974, 989, 989, 992, 0, 975, 992, 0, + 0, 976, 978, 990, 0, 990, 990, 981, 991, 0, + 991, 991, 975, 982, 993, 994, 976, 993, 994, 983, + 0, 0, 997, 989, 997, 997, 998, 992, 982, 998, + 1001, 0, 1001, 1001, 983, 990, 1002, 0, 0, 1002, + 991, 0, 1010, 0, 990, 1010, 993, 994, 0, 1005, + + 1006, 1005, 1005, 1006, 997, 993, 0, 0, 998, 1005, + 1006, 1009, 1001, 1009, 1009, 0, 997, 1001, 1002, 0, + 998, 0, 0, 1002, 1010, 0, 0, 0, 0, 0, + 0, 1005, 1006, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1009, 1012, 1012, 1012, 1012, 1012, 1012, + 1013, 1013, 1013, 1013, 1013, 1013, 1014, 1014, 1014, 1014, + 1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015, 1016, 1016, + 1016, 1016, 1016, 1016, 1017, 1017, 0, 1017, 1017, 1017, + 1018, 1018, 1018, 1018, 1018, 1018, 1019, 0, 0, 0, + 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1021, 1021, + + 0, 0, 1021, 1021, 1022, 1022, 1022, 1022, 1022, 1022, + 1023, 1023, 0, 1023, 1023, 1023, 1024, 1024, 0, 1024, + 1024, 1024, 1025, 1025, 0, 0, 0, 1025, 1026, 1026, + 0, 1026, 1026, 1026, 1028, 1028, 0, 0, 0, 1028, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011 } ; /* Table of booleans, true if rule could match eol. */ -static yyconst flex_int32_t yy_rule_can_match_eol[76] = +static yyconst flex_int32_t yy_rule_can_match_eol[78] = { 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, }; + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, }; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; @@ -1645,7 +1679,7 @@ static void cattext(bool trim_right = false, int strip_trailing = 0) -#line 1649 "levcomp.lex.cc" +#line 1683 "levcomp.lex.cc" #define INITIAL 0 #define MAPDEF 1 @@ -1712,7 +1746,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1723,7 +1757,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1811,7 +1845,7 @@ YY_DECL #line 133 "levcomp.lpp" -#line 1815 "levcomp.lex.cc" +#line 1849 "levcomp.lex.cc" if ( !(yy_init) ) { @@ -1865,13 +1899,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 974 ) + if ( yy_current_state >= 1012 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 973 ); + while ( yy_current_state != 1011 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2253,94 +2287,104 @@ YY_RULE_SETUP case 59: YY_RULE_SETUP #line 250 "levcomp.lpp" -{ CBEGIN(MNAME); return MONS; } +{ CBEGIN(ARGUMENT); return FLOORTILE; } YY_BREAK case 60: YY_RULE_SETUP #line 251 "levcomp.lpp" -{ CBEGIN(ITEM_LIST); return ITEM; } +{ CBEGIN(ARGUMENT); return ROCKTILE; } YY_BREAK case 61: YY_RULE_SETUP #line 252 "levcomp.lpp" -{ CBEGIN(ARGUMENT); return MARKER; } +{ CBEGIN(MNAME); return MONS; } YY_BREAK case 62: YY_RULE_SETUP #line 253 "levcomp.lpp" -{ CBEGIN(ITEM_LIST); return SHUFFLE; } +{ CBEGIN(ITEM_LIST); return ITEM; } YY_BREAK case 63: YY_RULE_SETUP -#line 255 "levcomp.lpp" -{ CBEGIN(ARGUMENT); return KFEAT; } +#line 254 "levcomp.lpp" +{ CBEGIN(ARGUMENT); return MARKER; } YY_BREAK case 64: YY_RULE_SETUP -#line 256 "levcomp.lpp" -{ CBEGIN(ARGUMENT); return KITEM; } +#line 255 "levcomp.lpp" +{ CBEGIN(ITEM_LIST); return SHUFFLE; } YY_BREAK case 65: YY_RULE_SETUP #line 257 "levcomp.lpp" -{ CBEGIN(ARGUMENT); return KMONS; } +{ CBEGIN(ARGUMENT); return KFEAT; } YY_BREAK case 66: YY_RULE_SETUP #line 258 "levcomp.lpp" -{ CBEGIN(ARGUMENT); return KMASK; } +{ CBEGIN(ARGUMENT); return KITEM; } YY_BREAK case 67: YY_RULE_SETUP -#line 260 "levcomp.lpp" -return COMMA; +#line 259 "levcomp.lpp" +{ CBEGIN(ARGUMENT); return KMONS; } YY_BREAK case 68: YY_RULE_SETUP -#line 262 "levcomp.lpp" -return COLON; +#line 260 "levcomp.lpp" +{ CBEGIN(ARGUMENT); return KMASK; } YY_BREAK case 69: YY_RULE_SETUP -#line 264 "levcomp.lpp" -return PERC; +#line 262 "levcomp.lpp" +return COMMA; YY_BREAK case 70: YY_RULE_SETUP +#line 264 "levcomp.lpp" +return COLON; + YY_BREAK +case 71: +YY_RULE_SETUP #line 266 "levcomp.lpp" +return PERC; + YY_BREAK +case 72: +YY_RULE_SETUP +#line 268 "levcomp.lpp" { clean(); yylval.i = atoi(yytext); return INTEGER; } YY_BREAK -case 71: +case 73: YY_RULE_SETUP -#line 272 "levcomp.lpp" +#line 274 "levcomp.lpp" ; YY_BREAK -case 72: -/* rule 72 can match eol */ +case 74: +/* rule 74 can match eol */ YY_RULE_SETUP -#line 273 "levcomp.lpp" +#line 275 "levcomp.lpp" ; YY_BREAK -case 73: +case 75: YY_RULE_SETUP -#line 274 "levcomp.lpp" +#line 276 "levcomp.lpp" ; YY_BREAK -case 74: +case 76: YY_RULE_SETUP -#line 275 "levcomp.lpp" +#line 277 "levcomp.lpp" return CHARACTER; YY_BREAK -case 75: +case 77: YY_RULE_SETUP -#line 277 "levcomp.lpp" +#line 279 "levcomp.lpp" ECHO; YY_BREAK -#line 2344 "levcomp.lex.cc" +#line 2388 "levcomp.lex.cc" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(MAPDEF): case YY_STATE_EOF(LUA): @@ -2579,7 +2623,7 @@ static int yy_get_next_buffer (void) /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), (size_t) num_to_read ); + (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -2603,14 +2647,6 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; @@ -2641,7 +2677,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 974 ) + if ( yy_current_state >= 1012 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2669,11 +2705,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 974 ) + if ( yy_current_state >= 1012 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 973); + yy_is_jam = (yy_current_state == 1011); return yy_is_jam ? 0 : yy_current_state; } @@ -2767,7 +2803,7 @@ static int yy_get_next_buffer (void) case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) - return EOF; + return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -3033,9 +3069,7 @@ static void yyensure_buffer_stack (void) (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; @@ -3053,8 +3087,6 @@ static void yyensure_buffer_stack (void) ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); @@ -3099,7 +3131,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan + * @param str a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use @@ -3356,7 +3388,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 277 "levcomp.lpp" +#line 279 "levcomp.lpp" diff --git a/crawl-ref/source/prebuilt/levcomp.tab.cc b/crawl-ref/source/prebuilt/levcomp.tab.cc index 58c0e179b2..2cd8cb7ea1 100644 --- a/crawl-ref/source/prebuilt/levcomp.tab.cc +++ b/crawl-ref/source/prebuilt/levcomp.tab.cc @@ -94,16 +94,18 @@ BFLAGS = 283, FLOORCOL = 284, ROCKCOL = 285, - COMMA = 286, - COLON = 287, - PERC = 288, - INTEGER = 289, - CHARACTER = 290, - STRING = 291, - MAP_LINE = 292, - MONSTER_NAME = 293, - ITEM_INFO = 294, - LUA_LINE = 295 + FLOORTILE = 286, + ROCKTILE = 287, + COMMA = 288, + COLON = 289, + PERC = 290, + INTEGER = 291, + CHARACTER = 292, + STRING = 293, + MAP_LINE = 294, + MONSTER_NAME = 295, + ITEM_INFO = 296, + LUA_LINE = 297 }; #endif /* Tokens. */ @@ -135,16 +137,18 @@ #define BFLAGS 283 #define FLOORCOL 284 #define ROCKCOL 285 -#define COMMA 286 -#define COLON 287 -#define PERC 288 -#define INTEGER 289 -#define CHARACTER 290 -#define STRING 291 -#define MAP_LINE 292 -#define MONSTER_NAME 293 -#define ITEM_INFO 294 -#define LUA_LINE 295 +#define FLOORTILE 286 +#define ROCKTILE 287 +#define COMMA 288 +#define COLON 289 +#define PERC 290 +#define INTEGER 291 +#define CHARACTER 292 +#define STRING 293 +#define MAP_LINE 294 +#define MONSTER_NAME 295 +#define ITEM_INFO 296 +#define LUA_LINE 297 @@ -221,8 +225,8 @@ typedef union YYSTYPE const char *text; raw_range range; } -/* Line 187 of yacc.c. */ -#line 226 "levcomp.tab.c" +/* Line 193 of yacc.c. */ +#line 230 "levcomp.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -235,7 +239,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 239 "levcomp.tab.c" +#line 243 "levcomp.tab.c" #ifdef short # undef short @@ -285,7 +289,7 @@ typedef short int yytype_int16; #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ -# if YYENABLE_NLS +# if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) @@ -450,20 +454,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 87 +#define YYLAST 91 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 41 +#define YYNTOKENS 43 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 66 +#define YYNNTS 68 /* YYNRULES -- Number of rules. */ -#define YYNRULES 123 +#define YYNRULES 129 /* YYNRULES -- Number of states. */ -#define YYNSTATES 144 +#define YYNSTATES 150 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 295 +#define YYMAXUTOK 297 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -500,7 +504,7 @@ static const yytype_uint8 yytranslate[] = 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40 + 35, 36, 37, 38, 39, 40, 41, 42 }; #if YYDEBUG @@ -512,50 +516,52 @@ static const yytype_uint16 yyprhs[] = 19, 22, 25, 26, 29, 31, 33, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, - 82, 84, 86, 88, 90, 93, 94, 97, 99, 102, - 103, 106, 108, 111, 112, 115, 117, 120, 121, 124, - 126, 129, 130, 133, 135, 137, 140, 142, 145, 147, - 150, 152, 155, 158, 160, 164, 166, 169, 170, 173, - 175, 178, 181, 184, 187, 189, 192, 194, 197, 199, - 203, 205, 208, 210, 214, 216, 219, 221, 225, 227, - 229, 232, 236, 238, 240, 242, 245, 249, 251, 253, - 256, 258, 261, 267, 272, 276, 279, 282, 284, 287, - 290, 292, 295, 297 + 82, 84, 86, 88, 90, 92, 94, 97, 98, 101, + 103, 106, 107, 110, 112, 115, 116, 119, 121, 124, + 125, 128, 130, 133, 134, 137, 139, 141, 144, 146, + 149, 151, 154, 156, 159, 162, 164, 168, 170, 173, + 174, 177, 179, 182, 185, 188, 191, 193, 196, 198, + 201, 203, 206, 208, 211, 213, 217, 219, 222, 224, + 228, 230, 233, 235, 239, 241, 243, 246, 250, 252, + 254, 256, 259, 263, 265, 267, 270, 272, 275, 281, + 286, 290, 293, 296, 298, 301, 304, 306, 309, 311 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 42, 0, -1, 43, -1, -1, 43, 44, -1, 46, - -1, 48, -1, 35, -1, 47, -1, 53, -1, 3, - 36, -1, 51, 49, -1, -1, 49, 50, -1, 52, - -1, 104, -1, 11, 36, -1, 98, -1, 99, -1, - 100, -1, 101, -1, 102, -1, 103, -1, 95, -1, - 92, -1, 80, -1, 89, -1, 86, -1, 81, -1, - 82, -1, 83, -1, 72, -1, 75, -1, 78, -1, - 79, -1, 68, -1, 70, -1, 69, -1, 71, -1, - 56, -1, 65, -1, 59, -1, 62, -1, 45, -1, - 22, 54, -1, -1, 54, 55, -1, 40, -1, 22, - 57, -1, -1, 57, 58, -1, 40, -1, 23, 60, - -1, -1, 60, 61, -1, 40, -1, 24, 63, -1, - -1, 63, 64, -1, 40, -1, 21, 66, -1, -1, - 66, 67, -1, 40, -1, 7, -1, 7, 36, -1, - 9, -1, 9, 36, -1, 8, -1, 8, 36, -1, - 10, -1, 10, 36, -1, 4, 73, -1, 74, -1, - 73, 31, 74, -1, 39, -1, 6, 76, -1, -1, - 76, 77, -1, 36, -1, 27, 36, -1, 28, 36, - -1, 19, 36, -1, 20, 84, -1, 29, -1, 29, - 36, -1, 30, -1, 30, 36, -1, 85, -1, 84, - 31, 85, -1, 39, -1, 25, 87, -1, 88, -1, - 87, 31, 88, -1, 39, -1, 5, 90, -1, 91, - -1, 91, 31, 90, -1, 39, -1, 18, -1, 18, - 93, -1, 93, 31, 94, -1, 94, -1, 39, -1, - 17, -1, 17, 96, -1, 97, 31, 96, -1, 97, - -1, 38, -1, 14, 36, -1, 12, -1, 12, 36, - -1, 15, 34, 32, 34, 33, -1, 15, 34, 32, - 34, -1, 15, 34, 33, -1, 15, 34, -1, 16, - 34, -1, 13, -1, 13, 36, -1, 26, 36, -1, - 105, -1, 105, 106, -1, 106, -1, 37, -1 + 44, 0, -1, 45, -1, -1, 45, 46, -1, 48, + -1, 50, -1, 37, -1, 49, -1, 55, -1, 3, + 38, -1, 53, 51, -1, -1, 51, 52, -1, 54, + -1, 108, -1, 11, 38, -1, 102, -1, 103, -1, + 104, -1, 105, -1, 106, -1, 107, -1, 99, -1, + 96, -1, 82, -1, 93, -1, 90, -1, 83, -1, + 84, -1, 85, -1, 86, -1, 87, -1, 74, -1, + 77, -1, 80, -1, 81, -1, 70, -1, 72, -1, + 71, -1, 73, -1, 58, -1, 67, -1, 61, -1, + 64, -1, 47, -1, 22, 56, -1, -1, 56, 57, + -1, 42, -1, 22, 59, -1, -1, 59, 60, -1, + 42, -1, 23, 62, -1, -1, 62, 63, -1, 42, + -1, 24, 65, -1, -1, 65, 66, -1, 42, -1, + 21, 68, -1, -1, 68, 69, -1, 42, -1, 7, + -1, 7, 38, -1, 9, -1, 9, 38, -1, 8, + -1, 8, 38, -1, 10, -1, 10, 38, -1, 4, + 75, -1, 76, -1, 75, 33, 76, -1, 41, -1, + 6, 78, -1, -1, 78, 79, -1, 38, -1, 27, + 38, -1, 28, 38, -1, 19, 38, -1, 20, 88, + -1, 29, -1, 29, 38, -1, 30, -1, 30, 38, + -1, 31, -1, 31, 38, -1, 32, -1, 32, 38, + -1, 89, -1, 88, 33, 89, -1, 41, -1, 25, + 91, -1, 92, -1, 91, 33, 92, -1, 41, -1, + 5, 94, -1, 95, -1, 95, 33, 94, -1, 41, + -1, 18, -1, 18, 97, -1, 97, 33, 98, -1, + 98, -1, 41, -1, 17, -1, 17, 100, -1, 101, + 33, 100, -1, 101, -1, 40, -1, 14, 38, -1, + 12, -1, 12, 38, -1, 15, 36, 34, 36, 35, + -1, 15, 36, 34, 36, -1, 15, 36, 35, -1, + 15, 36, -1, 16, 36, -1, 13, -1, 13, 38, + -1, 26, 38, -1, 109, -1, 109, 110, -1, 110, + -1, 39, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -565,15 +571,15 @@ static const yytype_uint16 yyrline[] = 88, 98, 120, 121, 124, 125, 128, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 181, 183, 184, 187, 192, 194, - 195, 198, 203, 205, 206, 209, 214, 216, 217, 220, - 225, 227, 228, 231, 236, 237, 245, 246, 254, 255, - 263, 264, 272, 275, 276, 279, 287, 290, 291, 294, - 303, 312, 321, 354, 357, 358, 366, 367, 375, 376, - 379, 388, 391, 392, 395, 404, 407, 408, 411, 420, - 421, 424, 425, 428, 436, 437, 440, 441, 444, 453, - 462, 463, 472, 479, 486, 493, 501, 509, 510, 519, - 528, 531, 532, 535 + 175, 176, 177, 178, 179, 180, 183, 185, 186, 189, + 194, 196, 197, 200, 205, 207, 208, 211, 216, 218, + 219, 222, 227, 229, 230, 233, 238, 239, 247, 248, + 256, 257, 265, 266, 274, 277, 278, 281, 289, 292, + 293, 296, 305, 314, 323, 356, 359, 360, 368, 369, + 377, 378, 386, 387, 395, 396, 399, 408, 411, 412, + 415, 424, 427, 428, 431, 440, 441, 444, 445, 448, + 456, 457, 460, 461, 464, 473, 482, 483, 492, 499, + 506, 513, 521, 529, 530, 539, 548, 551, 552, 555 }; #endif @@ -586,21 +592,23 @@ static const char *const yytname[] = "TAGS", "KFEAT", "KITEM", "KMONS", "KMASK", "NAME", "DEPTH", "ORIENT", "PLACE", "CHANCE", "WEIGHT", "MONS", "ITEM", "MARKER", "COLOUR", "PRELUDE", "MAIN", "VALIDATE", "VETO", "NSUBST", "WELCOME", "LFLAGS", - "BFLAGS", "FLOORCOL", "ROCKCOL", "COMMA", "COLON", "PERC", "INTEGER", - "CHARACTER", "STRING", "MAP_LINE", "MONSTER_NAME", "ITEM_INFO", - "LUA_LINE", "$accept", "file", "definitions", "definition", "error_seq", - "def", "defdepth", "level", "map_specs", "map_spec", "name", "metaline", - "global_lua", "global_lua_lines", "global_lua_line", "main_lua", - "main_lua_lines", "main_lua_line", "validate_lua", "validate_lua_lines", + "BFLAGS", "FLOORCOL", "ROCKCOL", "FLOORTILE", "ROCKTILE", "COMMA", + "COLON", "PERC", "INTEGER", "CHARACTER", "STRING", "MAP_LINE", + "MONSTER_NAME", "ITEM_INFO", "LUA_LINE", "$accept", "file", + "definitions", "definition", "error_seq", "def", "defdepth", "level", + "map_specs", "map_spec", "name", "metaline", "global_lua", + "global_lua_lines", "global_lua_line", "main_lua", "main_lua_lines", + "main_lua_line", "validate_lua", "validate_lua_lines", "validate_lua_line", "veto_lua", "veto_lua_lines", "veto_lua_line", "prelude_lua", "prelude_lua_lines", "prelude_lua_line", "kfeat", "kmons", "kitem", "kmask", "shuffle", "shuffle_specifiers", "shuffle_spec", "tags", "tagstrings", "tagstring", "lflags", "bflags", "marker", - "colour", "floorcol", "rockcol", "colour_specifiers", "colour_specifier", - "nsubst", "nsubst_specifiers", "nsubst_spec", "subst", - "subst_specifiers", "subst_spec", "items", "item_specifiers", - "item_specifier", "mons", "mnames", "mname", "place", "depth", "chance", - "weight", "orientation", "welcome", "map_def", "map_lines", "map_line", 0 + "colour", "floorcol", "rockcol", "floortile", "rocktile", + "colour_specifiers", "colour_specifier", "nsubst", "nsubst_specifiers", + "nsubst_spec", "subst", "subst_specifiers", "subst_spec", "items", + "item_specifiers", "item_specifier", "mons", "mnames", "mname", "place", + "depth", "chance", "weight", "orientation", "welcome", "map_def", + "map_lines", "map_line", 0 }; #endif @@ -613,26 +621,26 @@ static const yytype_uint16 yytoknum[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295 + 295, 296, 297 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 41, 42, 43, 43, 44, 44, 45, 46, 46, - 47, 48, 49, 49, 50, 50, 51, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 53, 54, 54, 55, 56, 57, - 57, 58, 59, 60, 60, 61, 62, 63, 63, 64, - 65, 66, 66, 67, 68, 68, 69, 69, 70, 70, - 71, 71, 72, 73, 73, 74, 75, 76, 76, 77, - 78, 79, 80, 81, 82, 82, 83, 83, 84, 84, - 85, 86, 87, 87, 88, 89, 90, 90, 91, 92, - 92, 93, 93, 94, 95, 95, 96, 96, 97, 98, - 99, 99, 100, 100, 100, 100, 101, 102, 102, 103, - 104, 105, 105, 106 + 0, 43, 44, 45, 45, 46, 46, 47, 48, 48, + 49, 50, 51, 51, 52, 52, 53, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 55, 56, 56, 57, + 58, 59, 59, 60, 61, 62, 62, 63, 64, 65, + 65, 66, 67, 68, 68, 69, 70, 70, 71, 71, + 72, 72, 73, 73, 74, 75, 75, 76, 77, 78, + 78, 79, 80, 81, 82, 83, 84, 84, 85, 85, + 86, 86, 87, 87, 88, 88, 89, 90, 91, 91, + 92, 93, 94, 94, 95, 96, 96, 97, 97, 98, + 99, 99, 100, 100, 101, 102, 103, 103, 104, 104, + 104, 104, 105, 106, 106, 107, 108, 109, 109, 110 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -642,15 +650,15 @@ static const yytype_uint8 yyr2[] = 2, 2, 0, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 2, 1, 2, 0, - 2, 1, 2, 0, 2, 1, 2, 0, 2, 1, - 2, 0, 2, 1, 1, 2, 1, 2, 1, 2, - 1, 2, 2, 1, 3, 1, 2, 0, 2, 1, - 2, 2, 2, 2, 1, 2, 1, 2, 1, 3, - 1, 2, 1, 3, 1, 2, 1, 3, 1, 1, - 2, 3, 1, 1, 1, 2, 3, 1, 1, 2, - 1, 2, 5, 4, 3, 2, 2, 1, 2, 2, - 1, 2, 1, 1 + 1, 1, 1, 1, 1, 1, 2, 0, 2, 1, + 2, 0, 2, 1, 2, 0, 2, 1, 2, 0, + 2, 1, 2, 0, 2, 1, 1, 2, 1, 2, + 1, 2, 1, 2, 2, 1, 3, 1, 2, 0, + 2, 1, 2, 2, 2, 2, 1, 2, 1, 2, + 1, 2, 1, 2, 1, 3, 1, 2, 1, 3, + 1, 2, 1, 3, 1, 1, 2, 3, 1, 1, + 1, 2, 3, 1, 1, 2, 1, 2, 5, 4, + 3, 2, 2, 1, 2, 2, 1, 2, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -658,67 +666,67 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 3, 0, 2, 1, 0, 0, 45, 4, 5, 8, - 6, 12, 9, 10, 16, 44, 11, 47, 46, 0, - 0, 77, 64, 68, 66, 70, 110, 117, 0, 0, - 0, 104, 99, 0, 0, 61, 49, 53, 57, 0, - 0, 0, 0, 84, 86, 7, 123, 43, 13, 14, - 39, 41, 42, 40, 35, 37, 36, 38, 31, 32, - 33, 34, 25, 28, 29, 30, 27, 26, 24, 23, - 17, 18, 19, 20, 21, 22, 15, 120, 122, 75, - 72, 73, 98, 95, 96, 76, 65, 69, 67, 71, - 111, 118, 109, 115, 116, 108, 105, 107, 103, 100, - 102, 82, 90, 83, 88, 60, 48, 52, 56, 94, - 91, 92, 119, 80, 81, 85, 87, 121, 0, 0, - 79, 78, 0, 114, 0, 0, 0, 63, 62, 51, - 50, 55, 54, 59, 58, 0, 74, 97, 113, 106, - 101, 89, 93, 112 + 3, 0, 2, 1, 0, 0, 47, 4, 5, 8, + 6, 12, 9, 10, 16, 46, 11, 49, 48, 0, + 0, 79, 66, 70, 68, 72, 116, 123, 0, 0, + 0, 110, 105, 0, 0, 63, 51, 55, 59, 0, + 0, 0, 0, 86, 88, 90, 92, 7, 129, 45, + 13, 14, 41, 43, 44, 42, 37, 39, 38, 40, + 33, 34, 35, 36, 25, 28, 29, 30, 31, 32, + 27, 26, 24, 23, 17, 18, 19, 20, 21, 22, + 15, 126, 128, 77, 74, 75, 104, 101, 102, 78, + 67, 71, 69, 73, 117, 124, 115, 121, 122, 114, + 111, 113, 109, 106, 108, 84, 96, 85, 94, 62, + 50, 54, 58, 100, 97, 98, 125, 82, 83, 87, + 89, 91, 93, 127, 0, 0, 81, 80, 0, 120, + 0, 0, 0, 65, 64, 53, 52, 57, 56, 61, + 60, 0, 76, 103, 119, 112, 107, 95, 99, 118 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 2, 7, 47, 8, 9, 10, 16, 48, - 11, 49, 12, 15, 18, 50, 106, 130, 51, 107, - 132, 52, 108, 134, 53, 105, 128, 54, 55, 56, - 57, 58, 80, 81, 59, 85, 121, 60, 61, 62, - 63, 64, 65, 103, 104, 66, 110, 111, 67, 83, - 84, 68, 99, 100, 69, 96, 97, 70, 71, 72, - 73, 74, 75, 76, 77, 78 + -1, 1, 2, 7, 49, 8, 9, 10, 16, 50, + 11, 51, 12, 15, 18, 52, 110, 136, 53, 111, + 138, 54, 112, 140, 55, 109, 134, 56, 57, 58, + 59, 60, 84, 85, 61, 89, 127, 62, 63, 64, + 65, 66, 67, 68, 69, 107, 108, 70, 114, 115, + 71, 87, 88, 72, 103, 104, 73, 100, 101, 74, + 75, 76, 77, 78, 79, 80, 81, 82 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -68 +#define YYPACT_NINF -72 static const yytype_int8 yypact[] = { - -68, 7, 24, -68, -8, -2, -68, -68, -68, -68, - -68, -68, -68, -68, -68, -1, -4, -68, -68, -7, - 1, -68, 0, 2, 5, 6, 8, 9, 11, 3, - 14, 12, 4, 13, 15, -68, -68, -68, -68, 16, - 17, 20, 21, 22, 23, -68, -68, -68, -68, -68, - -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, - -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, - -68, -68, -68, -68, -68, -68, -68, 25, -68, -68, - 29, -68, -68, -68, 30, 27, -68, -68, -68, -68, - -68, -68, -68, -3, -68, -68, -68, 33, -68, 34, - -68, -68, -68, 35, -68, 28, 31, 32, 36, -68, - 38, -68, -68, -68, -68, -68, -68, -68, -7, 1, - -68, -68, 18, -68, 12, 4, 15, -68, -68, -68, - -68, -68, -68, -68, -68, 16, -68, -68, 37, -68, - -68, -68, -68, -68 + -72, 7, 26, -72, -8, -2, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -1, -4, -72, -72, -7, + 1, -72, 0, 2, 5, 6, 8, 9, 11, 3, + 14, 12, 4, 13, 15, -72, -72, -72, -72, 16, + 17, 20, 21, 22, 23, 24, 25, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, 27, -72, -72, 31, -72, -72, -72, 32, 29, + -72, -72, -72, -72, -72, -72, -72, -3, -72, -72, + -72, 35, -72, 36, -72, -72, -72, 37, -72, 30, + 33, 34, 38, -72, 40, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -7, 1, -72, -72, 18, -72, + 12, 4, 15, -72, -72, -72, -72, -72, -72, -72, + -72, 16, -72, -72, 39, -72, -72, -72, -72, -72 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, - -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, - -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, - -68, -68, -68, -67, -68, -68, -68, -68, -68, -68, - -68, -68, -68, -68, -59, -68, -68, -62, -68, -45, - -68, -68, -68, -50, -68, -47, -68, -68, -68, -68, - -68, -68, -68, -68, -68, 10 + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -71, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -61, -72, -72, -64, + -72, -47, -72, -72, -72, -52, -72, -49, -72, -72, + -72, -72, -72, -72, -72, -72, -72, 10 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -730,47 +738,49 @@ static const yytype_uint8 yytable[] = { 19, 20, 21, 22, 23, 24, 25, 3, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 4, 13, 122, - 123, 45, 79, 46, 14, 5, 86, 93, 87, 17, - 82, 88, 89, 98, 90, 91, 6, 92, 94, 101, - 95, 136, 138, 112, 102, 109, 113, 114, 115, 116, - 118, 119, 46, 120, 124, 125, 126, 141, 127, 135, - 143, 129, 131, 142, 137, 140, 133, 139, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117 + 38, 39, 40, 41, 42, 43, 44, 45, 46, 4, + 13, 128, 129, 47, 83, 48, 14, 5, 90, 97, + 91, 17, 86, 92, 93, 102, 94, 95, 6, 96, + 98, 105, 99, 142, 144, 116, 106, 113, 117, 118, + 119, 120, 121, 122, 124, 125, 48, 126, 130, 131, + 132, 147, 133, 141, 149, 135, 137, 148, 143, 146, + 139, 145, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 123 }; static const yytype_int16 yycheck[] = { 4, 5, 6, 7, 8, 9, 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 3, 36, 32, - 33, 35, 39, 37, 36, 11, 36, 34, 36, 40, - 39, 36, 36, 39, 36, 36, 22, 36, 34, 36, - 38, 118, 34, 36, 39, 39, 36, 36, 36, 36, - 31, 31, 37, 36, 31, 31, 31, 126, 40, 31, - 33, 40, 40, 135, 119, 125, 40, 124, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 77 + 24, 25, 26, 27, 28, 29, 30, 31, 32, 3, + 38, 34, 35, 37, 41, 39, 38, 11, 38, 36, + 38, 42, 41, 38, 38, 41, 38, 38, 22, 38, + 36, 38, 40, 124, 36, 38, 41, 41, 38, 38, + 38, 38, 38, 38, 33, 33, 39, 38, 33, 33, + 33, 132, 42, 33, 35, 42, 42, 141, 125, 131, + 42, 130, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 81 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 42, 43, 0, 3, 11, 22, 44, 46, 47, - 48, 51, 53, 36, 36, 54, 49, 40, 55, 4, + 0, 44, 45, 0, 3, 11, 22, 46, 48, 49, + 50, 53, 55, 38, 38, 56, 51, 42, 57, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 35, 37, 45, 50, 52, - 56, 59, 62, 65, 68, 69, 70, 71, 72, 75, - 78, 79, 80, 81, 82, 83, 86, 89, 92, 95, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 39, - 73, 74, 39, 90, 91, 76, 36, 36, 36, 36, - 36, 36, 36, 34, 34, 38, 96, 97, 39, 93, - 94, 36, 39, 84, 85, 66, 57, 60, 63, 39, - 87, 88, 36, 36, 36, 36, 36, 106, 31, 31, - 36, 77, 32, 33, 31, 31, 31, 40, 67, 40, - 58, 40, 61, 40, 64, 31, 74, 90, 34, 96, - 94, 85, 88, 33 + 26, 27, 28, 29, 30, 31, 32, 37, 39, 47, + 52, 54, 58, 61, 64, 67, 70, 71, 72, 73, + 74, 77, 80, 81, 82, 83, 84, 85, 86, 87, + 90, 93, 96, 99, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 41, 75, 76, 41, 94, 95, 78, + 38, 38, 38, 38, 38, 38, 38, 36, 36, 40, + 100, 101, 41, 97, 98, 38, 41, 88, 89, 68, + 59, 62, 65, 41, 91, 92, 38, 38, 38, 38, + 38, 38, 38, 110, 33, 33, 38, 79, 34, 35, + 33, 33, 33, 42, 69, 42, 60, 42, 63, 42, + 66, 33, 76, 94, 36, 100, 98, 89, 92, 35 }; #define yyerrok (yyerrstatus = 0) @@ -844,7 +854,7 @@ while (YYID (0)) we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT -# if YYLTYPE_IS_TRIVIAL +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ @@ -1705,128 +1715,128 @@ yyreduce: } break; - case 43: -#line 178 "levcomp.ypp" + case 45: +#line 180 "levcomp.ypp" {} break; - case 44: -#line 181 "levcomp.ypp" + case 46: +#line 183 "levcomp.ypp" { } break; - case 45: -#line 183 "levcomp.ypp" + case 47: +#line 185 "levcomp.ypp" { } break; - case 46: -#line 184 "levcomp.ypp" + case 48: +#line 186 "levcomp.ypp" { } break; - case 47: -#line 188 "levcomp.ypp" + case 49: +#line 190 "levcomp.ypp" { lc_global_prelude.add(yylineno, (yyvsp[(1) - (1)].text)); } break; - case 48: -#line 192 "levcomp.ypp" + case 50: +#line 194 "levcomp.ypp" { } break; - case 49: -#line 194 "levcomp.ypp" + case 51: +#line 196 "levcomp.ypp" { } break; - case 50: -#line 195 "levcomp.ypp" + case 52: +#line 197 "levcomp.ypp" { } break; - case 51: -#line 199 "levcomp.ypp" + case 53: +#line 201 "levcomp.ypp" { lc_map.main.add(yylineno, (yyvsp[(1) - (1)].text)); } break; - case 52: -#line 203 "levcomp.ypp" + case 54: +#line 205 "levcomp.ypp" { } break; - case 53: -#line 205 "levcomp.ypp" + case 55: +#line 207 "levcomp.ypp" { } break; - case 54: -#line 206 "levcomp.ypp" + case 56: +#line 208 "levcomp.ypp" { } break; - case 55: -#line 210 "levcomp.ypp" + case 57: +#line 212 "levcomp.ypp" { lc_map.validate.add(yylineno, (yyvsp[(1) - (1)].text)); } break; - case 56: -#line 214 "levcomp.ypp" + case 58: +#line 216 "levcomp.ypp" { } break; - case 57: -#line 216 "levcomp.ypp" + case 59: +#line 218 "levcomp.ypp" { } break; - case 58: -#line 217 "levcomp.ypp" + case 60: +#line 219 "levcomp.ypp" { } break; - case 59: -#line 221 "levcomp.ypp" + case 61: +#line 223 "levcomp.ypp" { lc_map.veto.add(yylineno, (yyvsp[(1) - (1)].text)); } break; - case 60: -#line 225 "levcomp.ypp" + case 62: +#line 227 "levcomp.ypp" { } break; - case 61: -#line 227 "levcomp.ypp" + case 63: +#line 229 "levcomp.ypp" { } break; - case 62: -#line 228 "levcomp.ypp" + case 64: +#line 230 "levcomp.ypp" { } break; - case 63: -#line 232 "levcomp.ypp" + case 65: +#line 234 "levcomp.ypp" { lc_map.prelude.add(yylineno, (yyvsp[(1) - (1)].text)); } break; - case 64: -#line 236 "levcomp.ypp" + case 66: +#line 238 "levcomp.ypp" { } break; - case 65: -#line 238 "levcomp.ypp" + case 67: +#line 240 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1835,13 +1845,13 @@ yyreduce: } break; - case 66: -#line 245 "levcomp.ypp" + case 68: +#line 247 "levcomp.ypp" { } break; - case 67: -#line 247 "levcomp.ypp" + case 69: +#line 249 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1850,13 +1860,13 @@ yyreduce: } break; - case 68: -#line 254 "levcomp.ypp" + case 70: +#line 256 "levcomp.ypp" { } break; - case 69: -#line 256 "levcomp.ypp" + case 71: +#line 258 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1865,13 +1875,13 @@ yyreduce: } break; - case 70: -#line 263 "levcomp.ypp" + case 72: +#line 265 "levcomp.ypp" { } break; - case 71: -#line 265 "levcomp.ypp" + case 73: +#line 267 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1880,13 +1890,13 @@ yyreduce: } break; - case 72: -#line 272 "levcomp.ypp" + case 74: +#line 274 "levcomp.ypp" {} break; - case 75: -#line 280 "levcomp.ypp" + case 77: +#line 282 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1895,13 +1905,13 @@ yyreduce: } break; - case 76: -#line 287 "levcomp.ypp" + case 78: +#line 289 "levcomp.ypp" {} break; - case 79: -#line 295 "levcomp.ypp" + case 81: +#line 297 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1910,8 +1920,8 @@ yyreduce: } break; - case 80: -#line 304 "levcomp.ypp" + case 82: +#line 306 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1920,8 +1930,8 @@ yyreduce: } break; - case 81: -#line 313 "levcomp.ypp" + case 83: +#line 315 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1930,8 +1940,8 @@ yyreduce: } break; - case 82: -#line 322 "levcomp.ypp" + case 84: +#line 324 "levcomp.ypp" { std::string key, arg; int sep(0); @@ -1964,18 +1974,18 @@ yyreduce: } break; - case 83: -#line 354 "levcomp.ypp" + case 85: +#line 356 "levcomp.ypp" { } break; - case 84: -#line 357 "levcomp.ypp" + case 86: +#line 359 "levcomp.ypp" { } break; - case 85: -#line 359 "levcomp.ypp" + case 87: +#line 361 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1984,13 +1994,13 @@ yyreduce: } break; - case 86: -#line 366 "levcomp.ypp" + case 88: +#line 368 "levcomp.ypp" { } break; - case 87: -#line 368 "levcomp.ypp" + case 89: +#line 370 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -1999,18 +2009,48 @@ yyreduce: } break; - case 88: -#line 375 "levcomp.ypp" + case 90: +#line 377 "levcomp.ypp" { } break; - case 89: -#line 376 "levcomp.ypp" + case 91: +#line 379 "levcomp.ypp" + { + lc_map.main.add( + yylineno, + make_stringf("floortile(\"%s\")", + quote_lua_string((yyvsp[(2) - (2)].text)).c_str())); + } + break; + + case 92: +#line 386 "levcomp.ypp" { } break; - case 90: -#line 380 "levcomp.ypp" + case 93: +#line 388 "levcomp.ypp" + { + lc_map.main.add( + yylineno, + make_stringf("rocktile(\"%s\")", + quote_lua_string((yyvsp[(2) - (2)].text)).c_str())); + } + break; + + case 94: +#line 395 "levcomp.ypp" + { } + break; + + case 95: +#line 396 "levcomp.ypp" + { } + break; + + case 96: +#line 400 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2019,23 +2059,23 @@ yyreduce: } break; - case 91: -#line 388 "levcomp.ypp" + case 97: +#line 408 "levcomp.ypp" { } break; - case 92: -#line 391 "levcomp.ypp" + case 98: +#line 411 "levcomp.ypp" { } break; - case 93: -#line 392 "levcomp.ypp" + case 99: +#line 412 "levcomp.ypp" { } break; - case 94: -#line 396 "levcomp.ypp" + case 100: +#line 416 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2044,13 +2084,13 @@ yyreduce: } break; - case 95: -#line 404 "levcomp.ypp" + case 101: +#line 424 "levcomp.ypp" { } break; - case 98: -#line 412 "levcomp.ypp" + case 104: +#line 432 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2059,18 +2099,18 @@ yyreduce: } break; - case 99: -#line 420 "levcomp.ypp" + case 105: +#line 440 "levcomp.ypp" {} break; - case 100: -#line 421 "levcomp.ypp" + case 106: +#line 441 "levcomp.ypp" {} break; - case 103: -#line 429 "levcomp.ypp" + case 109: +#line 449 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2079,18 +2119,18 @@ yyreduce: } break; - case 104: -#line 436 "levcomp.ypp" + case 110: +#line 456 "levcomp.ypp" {} break; - case 105: -#line 437 "levcomp.ypp" + case 111: +#line 457 "levcomp.ypp" {} break; - case 108: -#line 445 "levcomp.ypp" + case 114: +#line 465 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2099,8 +2139,8 @@ yyreduce: } break; - case 109: -#line 454 "levcomp.ypp" + case 115: +#line 474 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2109,13 +2149,13 @@ yyreduce: } break; - case 110: -#line 462 "levcomp.ypp" + case 116: +#line 482 "levcomp.ypp" {} break; - case 111: -#line 464 "levcomp.ypp" + case 117: +#line 484 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2124,8 +2164,8 @@ yyreduce: } break; - case 112: -#line 473 "levcomp.ypp" + case 118: +#line 493 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2133,8 +2173,8 @@ yyreduce: } break; - case 113: -#line 480 "levcomp.ypp" + case 119: +#line 500 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2142,8 +2182,8 @@ yyreduce: } break; - case 114: -#line 487 "levcomp.ypp" + case 120: +#line 507 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2151,8 +2191,8 @@ yyreduce: } break; - case 115: -#line 494 "levcomp.ypp" + case 121: +#line 514 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2160,8 +2200,8 @@ yyreduce: } break; - case 116: -#line 502 "levcomp.ypp" + case 122: +#line 522 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2169,13 +2209,13 @@ yyreduce: } break; - case 117: -#line 509 "levcomp.ypp" + case 123: +#line 529 "levcomp.ypp" {} break; - case 118: -#line 511 "levcomp.ypp" + case 124: +#line 531 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2184,8 +2224,8 @@ yyreduce: } break; - case 119: -#line 520 "levcomp.ypp" + case 125: +#line 540 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2194,8 +2234,8 @@ yyreduce: } break; - case 123: -#line 536 "levcomp.ypp" + case 129: +#line 556 "levcomp.ypp" { lc_map.main.add( yylineno, @@ -2206,7 +2246,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2210 "levcomp.tab.c" +#line 2250 "levcomp.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2420,6 +2460,6 @@ yyreturn: } -#line 544 "levcomp.ypp" +#line 564 "levcomp.ypp" diff --git a/crawl-ref/source/prebuilt/levcomp.tab.h b/crawl-ref/source/prebuilt/levcomp.tab.h index 18db2c49e7..b02f4913fc 100644 --- a/crawl-ref/source/prebuilt/levcomp.tab.h +++ b/crawl-ref/source/prebuilt/levcomp.tab.h @@ -67,16 +67,18 @@ BFLAGS = 283, FLOORCOL = 284, ROCKCOL = 285, - COMMA = 286, - COLON = 287, - PERC = 288, - INTEGER = 289, - CHARACTER = 290, - STRING = 291, - MAP_LINE = 292, - MONSTER_NAME = 293, - ITEM_INFO = 294, - LUA_LINE = 295 + FLOORTILE = 286, + ROCKTILE = 287, + COMMA = 288, + COLON = 289, + PERC = 290, + INTEGER = 291, + CHARACTER = 292, + STRING = 293, + MAP_LINE = 294, + MONSTER_NAME = 295, + ITEM_INFO = 296, + LUA_LINE = 297 }; #endif /* Tokens. */ @@ -108,16 +110,18 @@ #define BFLAGS 283 #define FLOORCOL 284 #define ROCKCOL 285 -#define COMMA 286 -#define COLON 287 -#define PERC 288 -#define INTEGER 289 -#define CHARACTER 290 -#define STRING 291 -#define MAP_LINE 292 -#define MONSTER_NAME 293 -#define ITEM_INFO 294 -#define LUA_LINE 295 +#define FLOORTILE 286 +#define ROCKTILE 287 +#define COMMA 288 +#define COLON 289 +#define PERC 290 +#define INTEGER 291 +#define CHARACTER 292 +#define STRING 293 +#define MAP_LINE 294 +#define MONSTER_NAME 295 +#define ITEM_INFO 296 +#define LUA_LINE 297 @@ -130,8 +134,8 @@ typedef union YYSTYPE const char *text; raw_range range; } -/* Line 1489 of yacc.c. */ -#line 135 "levcomp.tab.h" +/* Line 1529 of yacc.c. */ +#line 139 "levcomp.tab.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/crawl-ref/source/rltiles/dc-dngn.txt b/crawl-ref/source/rltiles/dc-dngn.txt index d65cd6e1e2..7f4c9b3ad7 100644 --- a/crawl-ref/source/rltiles/dc-dngn.txt +++ b/crawl-ref/source/rltiles/dc-dngn.txt @@ -191,21 +191,21 @@ wall/wall_yellow_rock1 wall/wall_yellow_rock2 wall/wall_yellow_rock3 -wall/brick_gray0 WALL_BAZAAR_GRAY +wall/brick_gray0 WALL_BRICK_GRAY wall/brick_gray1 wall/brick_gray2 wall/brick_gray3 -wall/stone_gray0 WALL_BAZAAR_STONE +wall/stone_gray0 WALL_STONE_GRAY wall/stone_gray1 wall/stone_gray2 wall/stone_gray3 -floor/grass0 FLOOR_BAZAAR_GRASS +floor/grass0 FLOOR_GRASS floor/grass1 floor/grass2 -floor/grass_n FLOOR_BAZAAR_GRASS1_SPECIAL +floor/grass_n HALO_GRASS floor/grass_ne floor/grass_e floor/grass_se @@ -215,8 +215,6 @@ floor/grass_w floor/grass_nw floor/grass_full -## NOTE: wall_undead and floor_nerves are used for the corruption effect. -## They need to go last. wall/undead0 WALL_UNDEAD wall/undead1 wall/undead2 @@ -233,7 +231,7 @@ floor/floor_nerves6 %start %compose floor/grass0 %compose floor/pedestal_n -%finish FLOOR_BAZAAR_GRASS2_SPECIAL +%finish HALO_GRASS2 %start %compose floor/grass1 %compose floor/pedestal_ne @@ -267,7 +265,7 @@ floor/pedestal_full %start %compose floor/rect_gray0 %compose floor/pedestal_n -%finish FLOOR_BAZAAR_VAULT_SPECIAL +%finish HALO_VAULT %start %compose floor/rect_gray1 %compose floor/pedestal_ne @@ -298,11 +296,11 @@ floor/pedestal_full %finish floor/pedestal_full -floor/dirt0 FLOOR_BAZAAR_DIRT +floor/dirt0 FLOOR_DIRT floor/dirt1 floor/dirt2 -floor/dirt_n FLOOR_BAZAAR_DIRT_SPECIAL +floor/dirt_n HALO_DIRT floor/dirt_ne floor/dirt_e floor/dirt_se diff --git a/crawl-ref/source/rltiles/tool/tile_list_processor.cc b/crawl-ref/source/rltiles/tool/tile_list_processor.cc index e0f8628a23..4f43f20793 100644 --- a/crawl-ref/source/rltiles/tool/tile_list_processor.cc +++ b/crawl-ref/source/rltiles/tool/tile_list_processor.cc @@ -607,6 +607,8 @@ bool tile_list_processor::write_data() lcname.c_str()); fprintf(fp, "tile_info &tile_%s_info(unsigned int idx);\n", lcname.c_str()); + fprintf(fp, "bool tile_%s_index(const char *str, unsigned int &idx);\n", + lcname.c_str()); if (m_categories.size() > 0) { @@ -644,6 +646,10 @@ bool tile_list_processor::write_data() fprintf(fp, "// This file has been automatically generated.\n\n"); fprintf(fp, "#include \"tiledef-%s.h\"\n\n", lcname.c_str()); + fprintf(fp, "#include <map>\n"); + fprintf(fp, "#include <string>\n"); + fprintf(fp, "#include <assert.h>\n"); + fprintf(fp, "using namespace std;\n"); fprintf(fp, "int _tile_%s_count[%s - %s] =\n{\n", lcname.c_str(), max.c_str(), m_start_value.c_str()); @@ -720,6 +726,56 @@ bool tile_list_processor::write_data() fprintf(fp, "};\n\n"); } + + fprintf(fp, "\nclass tile_%s_map : public map<string, int>\n" + "{\n" + "public:\n" + " tile_%s_map();\n" + "} %s_name_map;\n\n", + lcname.c_str(), lcname.c_str(), lcname.c_str()); + + fprintf(fp, + "tile_%s_map::tile_%s_map()\n" + "{\n" + " map<string, int>::iterator itr = begin();\n", + lcname.c_str(), lcname.c_str()); + + for (unsigned int i = 0; i < m_page.m_tiles.size(); i++) + { + const std::string &enumname = m_page.m_tiles[i]->enumname(); + // Filler can't be looked up. + if (enumname.empty()) + continue; + + std::string lcenum = enumname; + for (unsigned int c = 0; c < enumname.size(); c++) + lcenum[c] = std::tolower(enumname[c]); + + fprintf(fp, " insert(itr, map<string, int>::value_type(\"%s\", %d + %s));\n", + lcenum.c_str(), i, m_start_value.c_str()); + } + + fprintf(fp, "}\n\n"); + + fprintf(fp, + "bool tile_%s_index(const char *str, unsigned int &idx)\n" + "{\n" + " assert(str);\n" + " if (!str)\n" + " return false;\n" + "\n" + " string lc = str;\n" + " for (unsigned int i = 0; i < lc.size(); i++)\n" + " lc[i] = tolower(lc[i]);\n" + "\n" + " map<string, int>::const_iterator itr = %s_name_map.find(lc);\n" + " if (itr == %s_name_map.end())\n" + " return false;\n" + "\n" + " idx = itr->second;\n" + " return true;\n" + "}\n", + lcname.c_str(), lcname.c_str(), lcname.c_str()); } delete[] part_min; diff --git a/crawl-ref/source/tags.cc b/crawl-ref/source/tags.cc index e7af317cb2..8cdb33306c 100644 --- a/crawl-ref/source/tags.cc +++ b/crawl-ref/source/tags.cc @@ -1975,12 +1975,16 @@ void tag_construct_level_tiles(writer &th) marshallByte(th, rle_count); // flavour + marshallShort(th, env.tile_default.wall); + marshallShort(th, env.tile_default.floor); + marshallShort(th, env.tile_default.special); + for (int count_x = 0; count_x < GXM; count_x++) for (int count_y = 0; count_y < GYM; count_y++) { - marshallByte(th, env.tile_flv[count_x][count_y].wall); - marshallByte(th, env.tile_flv[count_x][count_y].floor); - marshallByte(th, env.tile_flv[count_x][count_y].special); + marshallShort(th, env.tile_flv[count_x][count_y].wall); + marshallShort(th, env.tile_flv[count_x][count_y].floor); + marshallShort(th, env.tile_flv[count_x][count_y].special); } mcache.construct(th); @@ -2305,12 +2309,16 @@ void tag_read_level_tiles(struct reader &th) } // flavour + env.tile_default.wall = unmarshallShort(th); + env.tile_default.floor = unmarshallShort(th); + env.tile_default.special = unmarshallShort(th); + for (int x = 0; x < gx; x++) for (int y = 0; y < gy; y++) { - env.tile_flv[x][y].wall = unmarshallByte(th); - env.tile_flv[x][y].floor = unmarshallByte(th); - env.tile_flv[x][y].special = unmarshallByte(th); + env.tile_flv[x][y].wall = unmarshallShort(th); + env.tile_flv[x][y].floor = unmarshallShort(th); + env.tile_flv[x][y].special = unmarshallShort(th); } if (ver > TILETAG_PRE_MCACHE) @@ -2324,6 +2332,9 @@ void tag_read_level_tiles(struct reader &th) static void tag_missing_level_tiles() { #ifdef USE_TILE + tile_init_default_flavour(); + tile_clear_flavour(); + for (int i = 0; i < GXM; i++) for (int j = 0; j < GYM; j++) { @@ -2337,8 +2348,6 @@ static void tag_missing_level_tiles() mcache.clear_all(); TileNewLevel(true); - - #endif } diff --git a/crawl-ref/source/tile2.cc b/crawl-ref/source/tile2.cc index a4404f9e84..b327aa84f6 100644 --- a/crawl-ref/source/tile2.cc +++ b/crawl-ref/source/tile2.cc @@ -28,355 +28,164 @@ #include "tiles.h" #include "transfor.h" -static int wall_flavours = 0; -static int floor_flavours = 0; -static int special_flavours = 0; -static int wall_tile_idx = 0; -static int floor_tile_idx = 0; -static int special_tile_idx = 0; - -int get_num_wall_flavours() +void tile_default_flv(level_area_type lev, branch_type br, tile_flavour &flv) { - return wall_flavours; -} + flv.wall = TILE_WALL_NORMAL; + flv.floor = TILE_FLOOR_NORMAL; + flv.special = 0; -int get_num_floor_flavours() -{ - return floor_flavours; -} - -int get_num_floor_special_flavours() -{ - return special_flavours; -} - -int get_wall_tile_idx() -{ - return wall_tile_idx; -} - -int get_floor_tile_idx() -{ - return floor_tile_idx; -} - -int get_floor_special_tile_idx() -{ - return special_tile_idx; -} - -// TODO: Add this sort of determinism to the lua maps, -// at least for the portal vaults. -void WallIdx(int &wall, int &floor, int &special) -{ - // Note: This function must be deterministic. - - special = -1; - - if (you.level_type == LEVEL_PANDEMONIUM) + if (lev == LEVEL_PANDEMONIUM) { - switch (env.rock_colour) + flv.floor = TILE_FLOOR_TOMB; + switch (random2(7)) { - case BLUE: - case LIGHTBLUE: - wall = TILE_WALL_ZOT_BLUE; - floor = TILE_FLOOR_TOMB; - break; - - case RED: - case LIGHTRED: - wall = TILE_WALL_ZOT_RED; - floor = TILE_FLOOR_TOMB; - break; - - case MAGENTA: - case LIGHTMAGENTA: - wall = TILE_WALL_ZOT_MAGENTA; - floor = TILE_FLOOR_TOMB; - break; - - case GREEN: - case LIGHTGREEN: - wall = TILE_WALL_ZOT_GREEN; - floor = TILE_FLOOR_TOMB; - break; - - case CYAN: - case LIGHTCYAN: - wall = TILE_WALL_ZOT_CYAN; - floor = TILE_FLOOR_TOMB; - break; - - case BROWN: - case YELLOW: - wall = TILE_WALL_ZOT_YELLOW; - floor = TILE_FLOOR_TOMB; - break; - - case BLACK: - case WHITE: default: - wall = TILE_WALL_ZOT_GRAY; - floor = TILE_FLOOR_TOMB; - break; + case 0: flv.wall = TILE_WALL_ZOT_BLUE; break; + case 1: flv.wall = TILE_WALL_ZOT_RED; break; + case 2: flv.wall = TILE_WALL_ZOT_MAGENTA; break; + case 3: flv.wall = TILE_WALL_ZOT_GREEN; break; + case 4: flv.wall = TILE_WALL_ZOT_CYAN; break; + case 5: flv.wall = TILE_WALL_ZOT_YELLOW; break; + case 6: flv.wall = TILE_WALL_ZOT_GRAY; break; } - unsigned int seen = you.get_place_info(LEVEL_PANDEMONIUM).levels_seen; - - if ((seen + env.rock_colour) % 3 == 1) - wall = TILE_WALL_FLESH; - if ((seen + env.floor_colour) % 3 == 1) - floor = TILE_FLOOR_NERVES; + if (one_chance_in(3)) + flv.wall = TILE_WALL_FLESH; + if (one_chance_in(3)) + flv.floor = TILE_FLOOR_NERVES; return; } - else if (you.level_type == LEVEL_ABYSS) + else if (lev == LEVEL_ABYSS) { - switch (env.rock_colour) + flv.floor = TILE_FLOOR_NERVES; + switch (random2(6)) { - case YELLOW: - case BROWN: - wall = TILE_WALL_HIVE; - break; - case RED: - case LIGHTRED: - wall = TILE_WALL_PEBBLE_RED; - break; - case GREEN: - case LIGHTGREEN: - wall = TILE_WALL_SLIME; - break; - case BLUE: - wall = TILE_WALL_ICE; - break; - case LIGHTGREY: - case WHITE: - wall = TILE_WALL_HALL; - break; default: - wall = TILE_WALL_UNDEAD; - break; + case 0: flv.wall = TILE_WALL_HIVE; break; + case 1: flv.wall = TILE_WALL_PEBBLE_RED; break; + case 2: flv.wall = TILE_WALL_SLIME; break; + case 3: flv.wall = TILE_WALL_ICE; break; + case 4: flv.wall = TILE_WALL_HALL; break; + case 5: flv.wall = TILE_WALL_UNDEAD; break; } - floor = TILE_FLOOR_NERVES; return; } - else if (you.level_type == LEVEL_LABYRINTH) + else if (lev == LEVEL_LABYRINTH) { - wall = TILE_WALL_UNDEAD; - floor = TILE_FLOOR_TOMB; + flv.wall = TILE_WALL_UNDEAD; + flv.floor = TILE_FLOOR_TOMB; return; } - else if (you.level_type == LEVEL_PORTAL_VAULT) + else if (lev == LEVEL_PORTAL_VAULT) { - if (you.level_type_name == "bazaar") - { - // Bazaar tiles here lean towards grass and dirt to emphasize - // both the non-hostile and other-wordly aspects of the - // portal vaults (i.e. they aren't in the dungeon, necessarily.) - int colour = env.floor_colour; - switch (colour) - { - case BLUE: - wall = TILE_WALL_BAZAAR_GRAY; - floor = TILE_FLOOR_BAZAAR_GRASS; - special = TILE_FLOOR_BAZAAR_GRASS1_SPECIAL; - return; - - case RED: - // Reds often have lava, which looks ridiculous - // next to grass or dirt, so we'll use existing - // floor and wall tiles here. - wall = TILE_WALL_PEBBLE_RED; - floor = TILE_FLOOR_VAULT; - special = TILE_FLOOR_BAZAAR_VAULT_SPECIAL; - return; - - case LIGHTBLUE: - wall = TILE_WALL_HIVE; - floor = TILE_FLOOR_BAZAAR_GRASS; - special = TILE_FLOOR_BAZAAR_GRASS2_SPECIAL; - return; - - case GREEN: - wall = TILE_WALL_BAZAAR_STONE; - floor = TILE_FLOOR_BAZAAR_GRASS; - special = TILE_FLOOR_BAZAAR_GRASS1_SPECIAL; - return; - - case MAGENTA: - wall = TILE_WALL_BAZAAR_STONE; - floor = TILE_FLOOR_BAZAAR_DIRT; - special = TILE_FLOOR_BAZAAR_DIRT_SPECIAL; - return; - - default: - wall = TILE_WALL_VAULT; - floor = TILE_FLOOR_VAULT; - special = TILE_FLOOR_BAZAAR_VAULT_SPECIAL; - return; - } - } - else if (you.level_type_name == "sewer") - { - wall = TILE_WALL_SLIME; - floor = TILE_FLOOR_SLIME; - return; - } - else if (you.level_type_name == "ice cave") - { - wall = TILE_WALL_ICE; - floor = TILE_FLOOR_ICE; - return; - } + // These should be handled in the respective lua files. + flv.wall = TILE_WALL_NORMAL; + flv.floor = TILE_FLOOR_NORMAL; + return; } - int depth = player_branch_depth(); - int branch_depth = your_branch().depth; - - switch (you.where_are_you) + switch (br) { - case BRANCH_MAIN_DUNGEON: - wall = TILE_WALL_NORMAL; - floor = TILE_FLOOR_NORMAL; - return; - - case BRANCH_HIVE: - wall = TILE_WALL_HIVE; - floor = TILE_FLOOR_HIVE; - return; - - case BRANCH_VAULTS: - wall = TILE_WALL_VAULT; - floor = TILE_FLOOR_VAULT; - return; - - case BRANCH_ECUMENICAL_TEMPLE: - wall = TILE_WALL_VINES; - floor = TILE_FLOOR_VINES; - return; - - case BRANCH_ELVEN_HALLS: - case BRANCH_HALL_OF_BLADES: - wall = TILE_WALL_HALL; - floor = TILE_FLOOR_HALL; - return; - - case BRANCH_TARTARUS: - case BRANCH_CRYPT: - case BRANCH_VESTIBULE_OF_HELL: - wall = TILE_WALL_UNDEAD; - floor = TILE_FLOOR_TOMB; - return; - - case BRANCH_TOMB: - wall = TILE_WALL_TOMB; - floor = TILE_FLOOR_TOMB; - return; - - case BRANCH_DIS: - wall = TILE_WALL_ZOT_CYAN; - floor = TILE_FLOOR_TOMB; - return; - - case BRANCH_GEHENNA: - wall = TILE_WALL_ZOT_RED; - floor = TILE_FLOOR_ROUGH_RED; - return; - - case BRANCH_COCYTUS: - wall = TILE_WALL_ICE; - floor = TILE_FLOOR_ICE; - return; - - case BRANCH_ORCISH_MINES: - wall = TILE_WALL_ORC; - floor = TILE_FLOOR_ORC; - return; - - case BRANCH_LAIR: - wall = TILE_WALL_LAIR; - floor = TILE_FLOOR_LAIR; - return; - - case BRANCH_SLIME_PITS: - wall = TILE_WALL_SLIME; - floor = TILE_FLOOR_SLIME; - return; - - case BRANCH_SNAKE_PIT: - wall = TILE_WALL_SNAKE; - floor = TILE_FLOOR_SNAKE; - return; - - case BRANCH_SWAMP: - wall = TILE_WALL_SWAMP; - floor = TILE_FLOOR_SWAMP; - return; - - case BRANCH_SHOALS: - if (depth == branch_depth) - wall = TILE_WALL_VINES; - else - wall = TILE_WALL_YELLOW_ROCK; - - floor = TILE_FLOOR_SAND_STONE; - return; - - case BRANCH_HALL_OF_ZOT: - if (you.your_level - you.branch_stairs[7] <= 1) - { - wall = TILE_WALL_ZOT_YELLOW; - floor = TILE_FLOOR_TOMB; - return; - } - - switch (you.your_level - you.branch_stairs[7]) - { - case 2: - wall = TILE_WALL_ZOT_GREEN; - floor = TILE_FLOOR_TOMB; - return; - case 3: - wall = TILE_WALL_ZOT_CYAN; - floor = TILE_FLOOR_TOMB; - return; - case 4: - wall = TILE_WALL_ZOT_BLUE; - floor = TILE_FLOOR_TOMB; - return; - case 5: - default: - wall = TILE_WALL_ZOT_MAGENTA; - floor = TILE_FLOOR_TOMB; - return; - } - - case BRANCH_INFERNO: - case BRANCH_THE_PIT: - case BRANCH_CAVERNS: - case NUM_BRANCHES: - break; - - // NOTE: there is no default case in this switch statement so that - // the compiler will issue a warning when new branches are created. - } + case BRANCH_MAIN_DUNGEON: + flv.wall = TILE_WALL_NORMAL; + flv.floor = TILE_FLOOR_NORMAL; + return; - wall = TILE_WALL_NORMAL; - floor = TILE_FLOOR_NORMAL; -} + case BRANCH_HIVE: + flv.wall = TILE_WALL_HIVE; + flv.floor = TILE_FLOOR_HIVE; + return; -void TileLoadWall(bool wizard) -{ - WallIdx(wall_tile_idx, floor_tile_idx, special_tile_idx); + case BRANCH_VAULTS: + flv.wall = TILE_WALL_VAULT; + flv.floor = TILE_FLOOR_VAULT; + return; - // Number of flavours are generated automatically... - floor_flavours = tile_dngn_count(floor_tile_idx); - wall_flavours = tile_dngn_count(wall_tile_idx); + case BRANCH_ECUMENICAL_TEMPLE: + flv.wall = TILE_WALL_VINES; + flv.floor = TILE_FLOOR_VINES; + return; - if (special_tile_idx != -1) - special_flavours = tile_dngn_count(special_tile_idx); - else - special_flavours = 0; + case BRANCH_ELVEN_HALLS: + case BRANCH_HALL_OF_BLADES: + flv.wall = TILE_WALL_HALL; + flv.floor = TILE_FLOOR_HALL; + return; + + case BRANCH_TARTARUS: + case BRANCH_CRYPT: + case BRANCH_VESTIBULE_OF_HELL: + flv.wall = TILE_WALL_UNDEAD; + flv.floor = TILE_FLOOR_TOMB; + return; + + case BRANCH_TOMB: + flv.wall = TILE_WALL_TOMB; + flv.floor = TILE_FLOOR_TOMB; + return; + + case BRANCH_DIS: + flv.wall = TILE_WALL_ZOT_CYAN; + flv.floor = TILE_FLOOR_TOMB; + return; + + case BRANCH_GEHENNA: + flv.wall = TILE_WALL_ZOT_RED; + flv.floor = TILE_FLOOR_ROUGH_RED; + return; + + case BRANCH_COCYTUS: + flv.wall = TILE_WALL_ICE; + flv.floor = TILE_FLOOR_ICE; + return; + + case BRANCH_ORCISH_MINES: + flv.wall = TILE_WALL_ORC; + flv.floor = TILE_FLOOR_ORC; + return; + + case BRANCH_LAIR: + flv.wall = TILE_WALL_LAIR; + flv.floor = TILE_FLOOR_LAIR; + return; + + case BRANCH_SLIME_PITS: + flv.wall = TILE_WALL_SLIME; + flv.floor = TILE_FLOOR_SLIME; + return; + + case BRANCH_SNAKE_PIT: + flv.wall = TILE_WALL_SNAKE; + flv.floor = TILE_FLOOR_SNAKE; + return; + + case BRANCH_SWAMP: + flv.wall = TILE_WALL_SWAMP; + flv.floor = TILE_FLOOR_SWAMP; + return; + + case BRANCH_SHOALS: + flv.wall = TILE_WALL_YELLOW_ROCK; + flv.floor = TILE_FLOOR_SAND_STONE; + return; + + case BRANCH_HALL_OF_ZOT: + flv.wall = TILE_WALL_ZOT_YELLOW; + flv.floor = TILE_FLOOR_TOMB; + return; + + case BRANCH_INFERNO: + case BRANCH_THE_PIT: + case BRANCH_CAVERNS: + case NUM_BRANCHES: + break; + } +} + +void tile_init_default_flavour() +{ + tile_default_flv(you.level_type, you.where_are_you, env.tile_default); } int get_clean_map_idx(int tile_idx) diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index 93615fa369..9fcd07668b 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -31,23 +31,12 @@ #include "travel.h" #include "view.h" -static inline bool _is_bazaar() -{ - return (you.level_type == LEVEL_PORTAL_VAULT - && you.level_type_name == "bazaar"); -} - static inline bool _is_sewers() { return (you.level_type == LEVEL_PORTAL_VAULT && you.level_type_name == "sewer"); } -static inline unsigned short _get_bazaar_special_colour() -{ - return YELLOW; -} - void TileNewLevel(bool first_time) { tiles.clear_minimap(); @@ -55,7 +44,6 @@ void TileNewLevel(bool first_time) for (int x = 0; x < GXM; x++) tiles.update_minimap(x, y); - TileLoadWall(false); if (first_time) tile_init_flavour(); @@ -2636,7 +2624,7 @@ int tileidx_zap(int colour) } // Modify wall tile index depending on floor/wall flavour. -static inline void _finalize_tile(unsigned int *tile, bool is_special, +static inline void _finalize_tile(unsigned int *tile, unsigned char wall_flv, unsigned char floor_flv, unsigned char special_flv) @@ -2644,6 +2632,9 @@ static inline void _finalize_tile(unsigned int *tile, bool is_special, int orig = (*tile) & TILE_FLAG_MASK; int flag = (*tile) & (~TILE_FLAG_MASK); + // TODO enne - expose this as an option, so ziggurat can use it too. + // Alternatively, allow the stone type to be set. + // // Hack: Swap rock/stone in crypt and tomb, because there are // only stone walls. if ((you.where_are_you == BRANCH_CRYPT || you.where_are_you == BRANCH_TOMB) @@ -2652,33 +2643,14 @@ static inline void _finalize_tile(unsigned int *tile, bool is_special, orig = TILE_WALL_NORMAL; } - // If there are special tiles for this level, then use them. - // Otherwise, we'll fall through to the next case and replace - // special tiles with normal floor. - if (orig == TILE_FLOOR_NORMAL && is_special - && get_num_floor_special_flavours() > 0) - { - (*tile) = get_floor_special_tile_idx() + special_flv; - ASSERT(special_flv < get_num_floor_special_flavours()); - } - else if (orig == TILE_FLOOR_NORMAL) - { + if (orig == TILE_FLOOR_NORMAL) (*tile) = floor_flv; - } else if (orig == TILE_WALL_NORMAL) - { (*tile) = wall_flv; - } else if (orig == TILE_DNGN_CLOSED_DOOR || orig == TILE_DNGN_OPEN_DOOR) - { - if (special_flv > 3) - special_flv = 3; - (*tile) = orig + special_flv; - } + (*tile) = orig + std::min((int)special_flv, 3); else if (orig < TILE_DNGN_MAX) - { (*tile) = orig + (special_flv % tile_dngn_count(orig)); - } (*tile) |= flag; } @@ -3937,21 +3909,33 @@ int jitter(SpecialIdx i) return (i + random_range(-1, 1) + 8) % 8; } -void tile_init_flavour() +void tile_clear_flavour() { - const bool bazaar = _is_bazaar(); - const unsigned short baz_col = _get_bazaar_special_colour(); + for (int y = 0; y < GYM; y++) + for (int x = 0; x < GXM; x++) + { + env.tile_flv[x][y].floor = 0; + env.tile_flv[x][y].wall = 0; + env.tile_flv[x][y].special = 0; + } +} - for (int x = 0; x < GXM; x++) - for (int y = 0; y < GYM; y++) +// For floors and walls that have not already been set to a particular tile, +// set them to a random instance of the default floor and wall tileset. +void tile_init_flavour() +{ + for (int y = 0; y < GYM; y++) + for (int x = 0; x < GXM; x++) { - int max_wall_flavour = get_num_wall_flavours() - 1; - int max_floor_flavour = get_num_floor_flavours() - 1; - int wall_flavour = random_range(0, max_wall_flavour); - int floor_flavour = random_range(0, max_floor_flavour); + int max_wall_flavor = tile_dngn_count(env.tile_default.wall) - 1; + int max_floor_flavor = tile_dngn_count(env.tile_default.floor) - 1; + int wall_rnd = random_range(0, max_wall_flavor); + int floor_rnd = random_range(0, max_floor_flavor); - env.tile_flv[x][y].floor = get_floor_tile_idx() + floor_flavour; - env.tile_flv[x][y].wall = get_wall_tile_idx() + wall_flavour; + if (!env.tile_flv[x][y].floor) + env.tile_flv[x][y].floor = env.tile_default.floor + floor_rnd; + if (!env.tile_flv[x][y].wall) + env.tile_flv[x][y].wall = env.tile_default.wall + wall_rnd; if (grd[x][y] == DNGN_CLOSED_DOOR || grd[x][y] == DNGN_OPEN_DOOR) { @@ -3985,183 +3969,202 @@ void tile_init_flavour() { env.tile_flv[x][y].special = 0; } - else if (bazaar && env.grid_colours[x][y] == baz_col - && grd[x][y] == DNGN_FLOOR) + else if (!env.tile_flv[x][y].special) { - int left_grd = (x > 0) ? grd[x-1][y] : DNGN_ROCK_WALL; - int right_grd = (x < GXM - 1) ? grd[x+1][y] : DNGN_ROCK_WALL; - int up_grd = (y > 0) ? grd[x][y-1] : DNGN_ROCK_WALL; - int down_grd = (y < GYM - 1) ? grd[x][y+1] : DNGN_ROCK_WALL; - unsigned short left_col = (x > 0) ? - env.grid_colours[x-1][y] : BLACK; - unsigned short right_col = (x < GXM - 1) ? - env.grid_colours[x+1][y] : BLACK; - unsigned short up_col = (y > 0) ? - env.grid_colours[x][y-1] : BLACK; - unsigned short down_col = (y < GYM - 1) ? - env.grid_colours[x][y+1] : BLACK; - - // The special tiles contains part floor and part special, so - // if there are adjacent floor or special tiles, we should - // do our best to "connect" them appropriately. If there are - // are other tiles there (walls, doors, whatever...) then it - // doesn't matter. - bool l_nrm = (left_grd == DNGN_FLOOR && left_col != baz_col); - bool r_nrm = (right_grd == DNGN_FLOOR && right_col != baz_col); - bool u_nrm = (up_grd == DNGN_FLOOR && up_col != baz_col); - bool d_nrm = (down_grd == DNGN_FLOOR && down_col != baz_col); - - bool l_spc = (left_grd == DNGN_FLOOR && left_col == baz_col); - bool r_spc = (right_grd == DNGN_FLOOR && right_col == baz_col); - bool u_spc = (up_grd == DNGN_FLOOR && up_col == baz_col); - bool d_spc = (down_grd == DNGN_FLOOR && down_col == baz_col); - - if (l_nrm && r_nrm || u_nrm && d_nrm) - { - // Not much to do here... - env.tile_flv[x][y].special = SPECIAL_FULL; - } - else if (l_nrm) - { - if (u_nrm) - env.tile_flv[x][y].special = SPECIAL_NW; - else if (d_nrm) - env.tile_flv[x][y].special = SPECIAL_SW; - else if (u_spc && d_spc) - env.tile_flv[x][y].special = SPECIAL_W; - else if (u_spc && r_spc) - env.tile_flv[x][y].special = SPECIAL_SW; - else if (d_spc && r_spc) - env.tile_flv[x][y].special = SPECIAL_NW; - else if (u_spc) - { - env.tile_flv[x][y].special = coinflip() ? - SPECIAL_W : SPECIAL_SW; - } - else if (d_spc) - { - env.tile_flv[x][y].special = coinflip() ? - SPECIAL_W : SPECIAL_NW; - } - else - env.tile_flv[x][y].special = jitter(SPECIAL_W); - } - else if (r_nrm) - { - if (u_nrm) - env.tile_flv[x][y].special = SPECIAL_NE; - else if (d_nrm) - env.tile_flv[x][y].special = SPECIAL_SE; - else if (u_spc && d_spc) - env.tile_flv[x][y].special = SPECIAL_E; - else if (u_spc && l_spc) - env.tile_flv[x][y].special = SPECIAL_SE; - else if (d_spc && l_spc) - env.tile_flv[x][y].special = SPECIAL_NE; - else if (u_spc) - env.tile_flv[x][y].special = coinflip() ? - SPECIAL_E : SPECIAL_SE; - else if (d_spc) - env.tile_flv[x][y].special = coinflip() ? - SPECIAL_E : SPECIAL_NE; - else - env.tile_flv[x][y].special = jitter(SPECIAL_E); - } - else if (u_nrm) - { - if (r_spc && l_spc) - env.tile_flv[x][y].special = SPECIAL_N; - else if (r_spc && d_spc) - env.tile_flv[x][y].special = SPECIAL_NW; - else if (l_spc && d_spc) - env.tile_flv[x][y].special = SPECIAL_NE; - else if (r_spc) - { - env.tile_flv[x][y].special = coinflip() ? - SPECIAL_N : SPECIAL_NW; - } - else if (l_spc) - { - env.tile_flv[x][y].special = coinflip() ? - SPECIAL_N : SPECIAL_NE; - } - else - env.tile_flv[x][y].special = jitter(SPECIAL_N); - } + env.tile_flv[x][y].special = random2(256); + } + } +} + +static bool _adjacent_target(dungeon_feature_type target, int x, int y) +{ + for (int i = -1; i <= 1; i++) + for (int j = -1; j <= 1; j++) + { + if (!map_bounds(x+i, y+j)) + continue; + if (grd[x+i][y+j] == target) + return true; + } + + return false; +} + +void tile_floor_halo(dungeon_feature_type target, int tile) +{ + for (int x = 0; x < GXM; x++) + { + for (int y = 0; y < GYM; y++) + { + if (grd[x][y] < DNGN_FLOOR_MIN) + continue; + if (!_adjacent_target(target, x, y)) + continue; + + bool l_flr = (x > 0) ? grd[x-1][y] >= DNGN_FLOOR_MIN : false; + bool r_flr = (x < GXM - 1) ? grd[x+1][y] >= DNGN_FLOOR_MIN : false; + bool u_flr = (y > 0) ? grd[x][y-1] >= DNGN_FLOOR_MIN : false; + bool d_flr = (y < GYM - 1) ? grd[x][y+1] >= DNGN_FLOOR_MIN : false; + + bool l_target = _adjacent_target(target, x-1, y); + bool r_target = _adjacent_target(target, x+1, y); + bool u_target = _adjacent_target(target, x, y-1); + bool d_target = _adjacent_target(target, x, y+1); + + // The special tiles contains part floor and part special, so + // if there are adjacent floor or special tiles, we should + // do our best to "connect" them appropriately. If there are + // are other tiles there (walls, doors, whatever...) then it + // doesn't matter. + bool l_nrm = (l_flr && !l_target); + bool r_nrm = (r_flr && !r_target); + bool u_nrm = (u_flr && !u_target); + bool d_nrm = (d_flr && !d_target); + + bool l_spc = (l_flr && l_target); + bool r_spc = (r_flr && r_target); + bool u_spc = (u_flr && u_target); + bool d_spc = (d_flr && d_target); + + if (l_nrm && r_nrm || u_nrm && d_nrm) + { + // Not much to do here... + env.tile_flv[x][y].floor = tile + SPECIAL_FULL; + } + else if (l_nrm) + { + if (u_nrm) + env.tile_flv[x][y].floor = tile + SPECIAL_NW; else if (d_nrm) - { - if (r_spc && l_spc) - env.tile_flv[x][y].special = SPECIAL_S; - else if (r_spc && u_spc) - env.tile_flv[x][y].special = SPECIAL_SW; - else if (l_spc && u_spc) - env.tile_flv[x][y].special = SPECIAL_SE; - else if (r_spc) - { - env.tile_flv[x][y].special = coinflip() ? - SPECIAL_S : SPECIAL_SW; - } - else if (l_spc) - { - env.tile_flv[x][y].special = coinflip() ? - SPECIAL_S : SPECIAL_SE; - } - else - env.tile_flv[x][y].special = jitter(SPECIAL_S); - } + env.tile_flv[x][y].floor = tile + SPECIAL_SW; else if (u_spc && d_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_W; + else if (u_spc && r_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_SW; + else if (d_spc && r_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_NW; + else if (u_spc) { - // We know this value is already initialized and - // is necessarily in bounds. - char t = env.tile_flv[x][y-1].special; - if (t == SPECIAL_NE || t == SPECIAL_E) - env.tile_flv[x][y].special = SPECIAL_E; - else if (t == SPECIAL_NW || t == SPECIAL_W) - env.tile_flv[x][y].special = SPECIAL_W; - else - env.tile_flv[x][y].special = SPECIAL_FULL; + env.tile_flv[x][y].floor = tile + (coinflip() ? + SPECIAL_W : SPECIAL_SW); } - else if (r_spc && l_spc) + else if (d_spc) { - // We know this value is already initialized and - // is necessarily in bounds. - char t = env.tile_flv[x-1][y].special; - if (t == SPECIAL_NW || t == SPECIAL_N) - env.tile_flv[x][y].special = SPECIAL_N; - else if (t == SPECIAL_SW || t == SPECIAL_S) - env.tile_flv[x][y].special = SPECIAL_S; - else - env.tile_flv[x][y].special = SPECIAL_FULL; + env.tile_flv[x][y].floor = tile + (coinflip() ? + SPECIAL_W : SPECIAL_NW); } + else + env.tile_flv[x][y].floor = tile + jitter(SPECIAL_W); + } + else if (r_nrm) + { + if (u_nrm) + env.tile_flv[x][y].floor = tile + SPECIAL_NE; + else if (d_nrm) + env.tile_flv[x][y].floor = tile + SPECIAL_SE; + else if (u_spc && d_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_E; else if (u_spc && l_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_SE; + else if (d_spc && l_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_NE; + else if (u_spc) + env.tile_flv[x][y].floor = tile + (coinflip() ? + SPECIAL_E : SPECIAL_SE); + else if (d_spc) + env.tile_flv[x][y].floor = tile + (coinflip() ? + SPECIAL_E : SPECIAL_NE); + else + env.tile_flv[x][y].floor = tile + jitter(SPECIAL_E); + } + else if (u_nrm) + { + if (r_spc && l_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_N; + else if (r_spc && d_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_NW; + else if (l_spc && d_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_NE; + else if (r_spc) { - env.tile_flv[x][y].special = SPECIAL_SE; + env.tile_flv[x][y].floor = tile + (coinflip() ? + SPECIAL_N : SPECIAL_NW); } - else if (u_spc && r_spc) + else if (l_spc) { - env.tile_flv[x][y].special = SPECIAL_SW; + env.tile_flv[x][y].floor = tile + (coinflip() ? + SPECIAL_N : SPECIAL_NE); } - else if (d_spc && l_spc) + else + env.tile_flv[x][y].floor = tile + jitter(SPECIAL_N); + } + else if (d_nrm) + { + if (r_spc && l_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_S; + else if (r_spc && u_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_SW; + else if (l_spc && u_spc) + env.tile_flv[x][y].floor = tile + SPECIAL_SE; + else if (r_spc) { - env.tile_flv[x][y].special = SPECIAL_NE; + env.tile_flv[x][y].floor = tile + (coinflip() ? + SPECIAL_S : SPECIAL_SW); } - else if (d_spc && r_spc) + else if (l_spc) { - env.tile_flv[x][y].special = SPECIAL_NW; + env.tile_flv[x][y].floor = tile + (coinflip() ? + SPECIAL_S : SPECIAL_SE); } else - { - env.tile_flv[x][y].special = SPECIAL_FULL; - } + env.tile_flv[x][y].floor = tile + jitter(SPECIAL_S); + } + else if (u_spc && d_spc) + { + // We know this value is already initialized and + // is necessarily in bounds. + int t = env.tile_flv[x][y-1].floor - tile; + if (t == SPECIAL_NE || t == SPECIAL_E) + env.tile_flv[x][y].floor = tile + SPECIAL_E; + else if (t == SPECIAL_NW || t == SPECIAL_W) + env.tile_flv[x][y].floor = tile + SPECIAL_W; + else + env.tile_flv[x][y].floor = tile + SPECIAL_FULL; + } + else if (r_spc && l_spc) + { + // We know this value is already initialized and + // is necessarily in bounds. + int t = env.tile_flv[x-1][y].floor - tile; + if (t == SPECIAL_NW || t == SPECIAL_N) + env.tile_flv[x][y].floor = tile + SPECIAL_N; + else if (t == SPECIAL_SW || t == SPECIAL_S) + env.tile_flv[x][y].floor = tile + SPECIAL_S; + else + env.tile_flv[x][y].floor = tile + SPECIAL_FULL; + } + else if (u_spc && l_spc) + { + env.tile_flv[x][y].floor = tile + SPECIAL_SE; + } + else if (u_spc && r_spc) + { + env.tile_flv[x][y].floor = tile + SPECIAL_SW; + } + else if (d_spc && l_spc) + { + env.tile_flv[x][y].floor = tile + SPECIAL_NE; + } + else if (d_spc && r_spc) + { + env.tile_flv[x][y].floor = tile + SPECIAL_NW; } else { - env.tile_flv[x][y].special = random2(256); + env.tile_flv[x][y].floor = tile + SPECIAL_FULL; } } - - if (!bazaar) - return; + } // Second pass for clean up. The only bad part about the above // algorithm is that it could turn a block of floor like this: @@ -4180,45 +4183,43 @@ void tile_init_flavour() // Generally the tiles don't fit with a north to the right or left // of a south tile. What we really want to do is to separate the // two regions, by making 1 a SPECIAL_SE and 2 a SPECIAL_NW tile. - for (int x = 0; x < GXM - 1; x++) - for (int y = 0; y < GYM - 1; y++) + for (int y = 0; y < GYM - 1; y++) + for (int x = 0; x < GXM - 1; x++) { - if (grd[x][y] != DNGN_FLOOR || env.grid_colours[x][y] != baz_col) + int this_spc = env.tile_flv[x][y].floor - tile; + if (this_spc < 0 || this_spc > 8) continue; - if (env.tile_flv[x][y].special != SPECIAL_N - && env.tile_flv[x][y].special != SPECIAL_S - && env.tile_flv[x][y].special != SPECIAL_E - && env.tile_flv[x][y].special != SPECIAL_W) + if (this_spc != SPECIAL_N && this_spc != SPECIAL_S + && this_spc != SPECIAL_E && this_spc != SPECIAL_W) { continue; } - int right_flavour = x < GXM - 1 ? env.tile_flv[x+1][y].special - : SPECIAL_FULL; - int down_flavour = y < GYM - 1 ? env.tile_flv[x][y+1].special - : SPECIAL_FULL; - int this_flavour = env.tile_flv[x][y].special; + int right_spc = x < GXM - 1 ? env.tile_flv[x+1][y].floor - tile + : SPECIAL_FULL; + int down_spc = y < GYM - 1 ? env.tile_flv[x][y+1].floor - tile + : SPECIAL_FULL; - if (this_flavour == SPECIAL_N && right_flavour == SPECIAL_S) + if (this_spc == SPECIAL_N && right_spc == SPECIAL_S) { - env.tile_flv[x][y].special = SPECIAL_NE; - env.tile_flv[x+1][y].special = SPECIAL_SW; + env.tile_flv[x][y].floor = tile + SPECIAL_NE; + env.tile_flv[x+1][y].floor = tile + SPECIAL_SW; } - else if (this_flavour == SPECIAL_S && right_flavour == SPECIAL_N) + else if (this_spc == SPECIAL_S && right_spc == SPECIAL_N) { - env.tile_flv[x][y].special = SPECIAL_SE; - env.tile_flv[x+1][y].special = SPECIAL_NW; + env.tile_flv[x][y].floor = tile + SPECIAL_SE; + env.tile_flv[x+1][y].floor = tile + SPECIAL_NW; } - else if (this_flavour == SPECIAL_E && down_flavour == SPECIAL_W) + else if (this_spc == SPECIAL_E && down_spc == SPECIAL_W) { - env.tile_flv[x][y].special = SPECIAL_SE; - env.tile_flv[x][y+1].special = SPECIAL_NW; + env.tile_flv[x][y].floor = tile + SPECIAL_SE; + env.tile_flv[x][y+1].floor = tile + SPECIAL_NW; } - else if (this_flavour == SPECIAL_W && down_flavour == SPECIAL_E) + else if (this_spc == SPECIAL_W && down_spc == SPECIAL_E) { - env.tile_flv[x][y].special = SPECIAL_NE; - env.tile_flv[x][y+1].special = SPECIAL_SW; + env.tile_flv[x][y].floor = tile + SPECIAL_NE; + env.tile_flv[x][y+1].floor = tile + SPECIAL_SW; } } } @@ -4410,9 +4411,6 @@ void tile_finish_dngn(unsigned int *tileb, int cx, int cy) int x, y; int count = 0; - const bool bazaar = _is_bazaar(); - const unsigned short baz_col = _get_bazaar_special_colour(); - for (y = 0; y < crawl_view.viewsz.y; y++) for (x = 0; x < crawl_view.viewsz.x; x++) { @@ -4423,7 +4421,6 @@ void tile_finish_dngn(unsigned int *tileb, int cx, int cy) unsigned char wall_flv = 0; unsigned char floor_flv = 0; unsigned char special_flv = 0; - bool is_special = false; const bool in_bounds = (map_bounds(gx, gy)); if (in_bounds) @@ -4431,14 +4428,11 @@ void tile_finish_dngn(unsigned int *tileb, int cx, int cy) wall_flv = env.tile_flv[gx][gy].wall; floor_flv = env.tile_flv[gx][gy].floor; special_flv = env.tile_flv[gx][gy].special; - is_special = (bazaar && env.grid_colours[gx][gy] == baz_col); } - _finalize_tile(&tileb[count+1], is_special, - wall_flv, floor_flv, special_flv); + _finalize_tile(&tileb[count+1], wall_flv, floor_flv, special_flv); const coord_def gc(gx, gy); - if (is_excluded(gc)) { if (is_exclude_root(gc)) diff --git a/crawl-ref/source/tilereg.cc b/crawl-ref/source/tilereg.cc index 9d632c4b8e..27c3948a99 100644 --- a/crawl-ref/source/tilereg.cc +++ b/crawl-ref/source/tilereg.cc @@ -1250,8 +1250,9 @@ void InventoryRegion::pack_verts() if (item.flag & TILEI_FLAG_FLOOR) { - add_quad(TEX_DUNGEON, get_floor_tile_idx() - + m_flavour[i] % get_num_floor_flavours(), x, y); + int num_floor = tile_dngn_count(env.tile_default.floor); + add_quad(TEX_DUNGEON, env.tile_default.floor + + m_flavour[i] % num_floor, x, y); } else add_quad(TEX_DUNGEON, TILE_ITEM_SLOT, x, y); diff --git a/crawl-ref/source/tiles.h b/crawl-ref/source/tiles.h index 1d795e6270..eaa6c5c10f 100644 --- a/crawl-ref/source/tiles.h +++ b/crawl-ref/source/tiles.h @@ -15,6 +15,7 @@ #include "tiledef-player.h" #include "beam.h" +#include "enum.h" enum tag_version { @@ -92,14 +93,17 @@ void tile_draw_inv(int flag = -1); // Multiple pickup void tile_pick_menu(); -int get_num_wall_flavours(); -int get_num_floor_flavours(); -int get_num_floor_special_flavours(); -int get_wall_tile_idx(); -int get_floor_tile_idx(); -int get_floor_special_tile_idx(); +// Set the default type of walls and floors. +void tile_init_default_flavour(); +// Get the default types of walls and floors +void tile_default_flv(level_area_type lev, branch_type br, tile_flavour &flv); +// Clear the per-cell wall and floor flavors. +void tile_clear_flavour(); +// Initialize per-cell types of walls and floors using defaults. void tile_init_flavour(); +void tile_floor_halo(dungeon_feature_type target, int tile); + void tile_set_force_redraw_tiles(bool redraw); void tile_set_force_redraw_inv(bool redraw); @@ -113,7 +117,7 @@ void TileResizeScreen(int x, int y); // display tile cursor, returns old cursor value there int TileDrawCursor(int x, int y, int flag); -// display bolts + void TileNewLevel(bool first_time); // edit player tile @@ -121,14 +125,11 @@ void TilePlayerEdit(); int item_unid_type(const item_def &item); -// load wall tiles -void TileLoadWall(bool wizard); - void TileDrawTitle(); int get_clean_map_idx(int tile_idx); -/* Flags for drawing routines */ +// Flags for drawing routines enum tile_flags { // Foreground flags diff --git a/crawl-ref/source/util/levcomp.lpp b/crawl-ref/source/util/levcomp.lpp index 41342277b7..6ca7542ce4 100644 --- a/crawl-ref/source/util/levcomp.lpp +++ b/crawl-ref/source/util/levcomp.lpp @@ -247,6 +247,8 @@ NSUBST: { CBEGIN(ITEM_LIST); return NSUBST; } COLOUR: { CBEGIN(ITEM_LIST); return COLOUR; } FLOORCOL: { CBEGIN(ARGUMENT); return FLOORCOL; } ROCKCOL: { CBEGIN(ARGUMENT); return ROCKCOL; } +FLOORTILE: { CBEGIN(ARGUMENT); return FLOORTILE; } +ROCKTILE: { CBEGIN(ARGUMENT); return ROCKTILE; } MONS: { CBEGIN(MNAME); return MONS; } ITEM: { CBEGIN(ITEM_LIST); return ITEM; } MARKER: { CBEGIN(ARGUMENT); return MARKER; } diff --git a/crawl-ref/source/util/levcomp.ypp b/crawl-ref/source/util/levcomp.ypp index 23549491b6..ea059cd991 100644 --- a/crawl-ref/source/util/levcomp.ypp +++ b/crawl-ref/source/util/levcomp.ypp @@ -55,7 +55,7 @@ level_range set_range(const char *s, int start, int end) %token <i> DEFAULT_DEPTH SHUFFLE SUBST TAGS KFEAT KITEM KMONS KMASK %token <i> NAME DEPTH ORIENT PLACE CHANCE WEIGHT MONS ITEM MARKER COLOUR %token <i> PRELUDE MAIN VALIDATE VETO NSUBST WELCOME LFLAGS BFLAGS -%token <i> FLOORCOL ROCKCOL +%token <i> FLOORCOL ROCKCOL FLOORTILE ROCKTILE %token <i> COMMA COLON PERC INTEGER CHARACTER @@ -163,6 +163,8 @@ metaline : place | colour | floorcol | rockcol + | floortile + | rocktile | shuffle | tags | lflags @@ -372,6 +374,24 @@ rockcol : ROCKCOL { } quote_lua_string($2).c_str())); } +floortile : FLOORTILE { } + | FLOORTILE STRING + { + lc_map.main.add( + yylineno, + make_stringf("floortile(\"%s\")", + quote_lua_string($2).c_str())); + } + +rocktile : ROCKTILE { } + | ROCKTILE STRING + { + lc_map.main.add( + yylineno, + make_stringf("rocktile(\"%s\")", + quote_lua_string($2).c_str())); + } + colour_specifiers : colour_specifier { } | colour_specifiers COMMA colour_specifier { } ; |