From 5a3e014e4914dbd6421dbbd81e889cd6952e924b Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 5 Jun 2020 07:43:40 +0900 Subject: Constify `irep` members. - `pool` - `syms` - `reps` --- src/load.c | 59 ++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 27 deletions(-) (limited to 'src/load.c') diff --git a/src/load.c b/src/load.c index 247d511df..b033d7ad1 100644 --- a/src/load.c +++ b/src/load.c @@ -73,6 +73,8 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag uint16_t tt, pool_data_len, snl; int plen; struct RData *irep_obj = mrb_data_object_alloc(mrb, mrb->object_class, NULL, &tempirep_type); + mrb_value *pool; + mrb_sym *syms; mrb_irep *irep = mrb_add_irep(mrb); int ai = mrb_gc_arena_save(mrb); @@ -124,7 +126,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag if (SIZE_ERROR_MUL(plen, sizeof(mrb_value))) { return NULL; } - irep->pool = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value) * plen); + irep->pool = pool = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value) * plen); for (i = 0; i < plen; i++) { const char *s; @@ -139,26 +141,26 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag case IREP_TT_FIXNUM: { mrb_value num = mrb_str_len_to_inum(mrb, s, pool_data_len, 10, FALSE); #ifdef MRB_WITHOUT_FLOAT - irep->pool[i] = num; + pool[i] = num; #else - irep->pool[i] = mrb_float_p(num)? mrb_float_pool(mrb, mrb_float(num)) : num; + pool[i] = mrb_float_p(num)? mrb_float_pool(mrb, mrb_float(num)) : num; #endif } break; #ifndef MRB_WITHOUT_FLOAT case IREP_TT_FLOAT: - irep->pool[i] = mrb_float_pool(mrb, str_to_double(mrb, s, pool_data_len)); + pool[i] = mrb_float_pool(mrb, str_to_double(mrb, s, pool_data_len)); break; #endif case IREP_TT_STRING: - irep->pool[i] = mrb_str_pool(mrb, s, pool_data_len, st); + pool[i] = mrb_str_pool(mrb, s, pool_data_len, st); break; default: /* should not happen */ - irep->pool[i] = mrb_nil_value(); + pool[i] = mrb_nil_value(); break; } irep->plen++; @@ -173,22 +175,22 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag if (SIZE_ERROR_MUL(irep->slen, sizeof(mrb_sym))) { return NULL; } - irep->syms = (mrb_sym *)mrb_malloc(mrb, sizeof(mrb_sym) * irep->slen); + irep->syms = syms = (mrb_sym *)mrb_malloc(mrb, sizeof(mrb_sym) * irep->slen); for (i = 0; i < irep->slen; i++) { snl = bin_to_uint16(src); /* symbol name length */ src += sizeof(uint16_t); if (snl == MRB_DUMP_NULL_SYM_LEN) { - irep->syms[i] = 0; + syms[i] = 0; continue; } if (flags & FLAG_SRC_MALLOC) { - irep->syms[i] = mrb_intern(mrb, (char *)src, snl); + syms[i] = mrb_intern(mrb, (char *)src, snl); } else { - irep->syms[i] = mrb_intern_static(mrb, (char *)src, snl); + syms[i] = mrb_intern_static(mrb, (char *)src, snl); } src += snl + 1; @@ -196,8 +198,6 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag } } - irep->reps = (mrb_irep**)mrb_calloc(mrb, irep->rlen, sizeof(mrb_irep*)); - diff = src - bin; mrb_assert_int_fit(ptrdiff_t, diff, size_t, SIZE_MAX); *len = (size_t)diff; @@ -214,21 +214,24 @@ read_irep_record(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flags) int ai = mrb_gc_arena_save(mrb); mrb_irep *irep = read_irep_record_1(mrb, bin, len, flags); int i; + mrb_irep **reps; mrb_gc_arena_restore(mrb, ai); if (irep == NULL) { return NULL; } + reps = (mrb_irep**)mrb_calloc(mrb, irep->rlen, sizeof(mrb_irep*)); + irep->reps = (const mrb_irep**)reps; irep_obj->data = irep; bin += *len; for (i=0; irlen; i++) { size_t rlen; - irep->reps[i] = read_irep_record(mrb, bin, &rlen, flags); + reps[i] = read_irep_record(mrb, bin, &rlen, flags); mrb_gc_arena_restore(mrb, ai); - if (irep->reps[i] == NULL) { + if (reps[i] == NULL) { return NULL; } bin += rlen; @@ -257,25 +260,26 @@ read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t * size_t record_size; uint16_t f_idx; int i; + mrb_irep_debug_info *debug; if (irep->debug_info) { return MRB_DUMP_INVALID_IREP; } - irep->debug_info = (mrb_irep_debug_info*)mrb_calloc(mrb, 1, sizeof(mrb_irep_debug_info)); - irep->debug_info->pc_count = (uint32_t)irep->ilen; + irep->debug_info = debug = (mrb_irep_debug_info*)mrb_calloc(mrb, 1, sizeof(mrb_irep_debug_info)); + debug->pc_count = (uint32_t)irep->ilen; record_size = (size_t)bin_to_uint32(bin); bin += sizeof(uint32_t); - irep->debug_info->flen = bin_to_uint16(bin); - irep->debug_info->files = (mrb_irep_debug_info_file**)mrb_calloc(mrb, irep->debug_info->flen, sizeof(mrb_irep_debug_info*)); + debug->flen = bin_to_uint16(bin); + debug->files = (mrb_irep_debug_info_file**)mrb_calloc(mrb, irep->debug_info->flen, sizeof(mrb_irep_debug_info*)); bin += sizeof(uint16_t); - for (f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) { + for (f_idx = 0; f_idx < debug->flen; ++f_idx) { mrb_irep_debug_info_file *file; uint16_t filename_idx; file = (mrb_irep_debug_info_file *)mrb_calloc(mrb, 1, sizeof(*file)); - irep->debug_info->files[f_idx] = file; + debug->files[f_idx] = file; file->start_pos = bin_to_uint32(bin); bin += sizeof(uint32_t); @@ -329,7 +333,7 @@ read_debug_record(mrb_state *mrb, const uint8_t *start, mrb_irep* irep, size_t * size_t len; int ret; - ret = read_debug_record(mrb, bin, irep->reps[i], &len, filenames, filenames_len); + ret = read_debug_record(mrb, bin, (mrb_irep*)irep->reps[i], &len, filenames, filenames_len); if (ret != MRB_DUMP_OK) return ret; bin += len; } @@ -393,25 +397,26 @@ static int read_lv_record(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, size_t *record_len, mrb_sym const *syms, uint32_t syms_len) { const uint8_t *bin = start; + struct mrb_locals *lv; ptrdiff_t diff; int i; - irep->lv = (struct mrb_locals*)mrb_malloc(mrb, sizeof(struct mrb_locals) * (irep->nlocals - 1)); + irep->lv = lv = (struct mrb_locals*)mrb_malloc(mrb, sizeof(struct mrb_locals) * (irep->nlocals - 1)); for (i = 0; i + 1< irep->nlocals; ++i) { uint16_t const sym_idx = bin_to_uint16(bin); bin += sizeof(uint16_t); if (sym_idx == RITE_LV_NULL_MARK) { - irep->lv[i].name = 0; - irep->lv[i].r = 0; + lv[i].name = 0; + lv[i].r = 0; } else { if (sym_idx >= syms_len) { return MRB_DUMP_GENERAL_FAILURE; } - irep->lv[i].name = syms[sym_idx]; + lv[i].name = syms[sym_idx]; - irep->lv[i].r = bin_to_uint16(bin); + lv[i].r = bin_to_uint16(bin); } bin += sizeof(uint16_t); } @@ -420,7 +425,7 @@ read_lv_record(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, size_t *rec size_t len; int ret; - ret = read_lv_record(mrb, bin, irep->reps[i], &len, syms, syms_len); + ret = read_lv_record(mrb, bin, (mrb_irep*)irep->reps[i], &len, syms, syms_len); if (ret != MRB_DUMP_OK) return ret; bin += len; } -- cgit v1.2.3 From daa37be5495393ce3e4654e00e44099f627e6cd4 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 8 Jun 2020 19:17:59 +0900 Subject: Rename `struct mrb_locals` to `struct mrb_lvinfo`. That stands for "local variable information". --- include/mruby/irep.h | 4 ++-- mrbgems/mruby-compiler/core/codegen.c | 6 +++--- mrbgems/mruby-compiler/core/parse.y | 2 +- mrbgems/mruby-compiler/core/y.tab.c | 2 +- src/load.c | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/load.c') diff --git a/include/mruby/irep.h b/include/mruby/irep.h index 6633bc73e..9d30f2797 100644 --- a/include/mruby/irep.h +++ b/include/mruby/irep.h @@ -21,7 +21,7 @@ enum irep_pool_type { IREP_TT_FLOAT, }; -struct mrb_locals { +struct mrb_lvinfo { /* local variable info (name, idx) */ mrb_sym name; uint16_t r; }; @@ -37,7 +37,7 @@ typedef struct mrb_irep { const mrb_sym *syms; const struct mrb_irep **reps; - const struct mrb_locals *lv; + const struct mrb_lvinfo *lv; /* debug info */ struct mrb_irep_debug_info* debug_info; diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 64dcff340..f8561c0e7 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -698,7 +698,7 @@ search_upvar(codegen_scope *s, mrb_sym id, int *idx) while (u && !MRB_PROC_CFUNC_P(u)) { const struct mrb_irep *ir = u->body.irep; uint_fast16_t n = ir->nlocals; - const struct mrb_locals *v = ir->lv; + const struct mrb_lvinfo *v = ir->lv; for (; n > 1; n --, v ++) { if (v->name == id) { *idx = v->r; @@ -3056,11 +3056,11 @@ scope_new(mrb_state *mrb, codegen_scope *prev, node *nlv) s->sp += node_len(nlv)+1; /* add self */ s->nlocals = s->sp; if (nlv) { - struct mrb_locals *lv; + struct mrb_lvinfo *lv; node *n = nlv; size_t i = 0; - s->irep->lv = lv = (struct mrb_locals*)mrb_malloc(mrb, sizeof(struct mrb_locals)*(s->nlocals-1)); + s->irep->lv = lv = (struct mrb_lvinfo*)mrb_malloc(mrb, sizeof(struct mrb_lvinfo)*(s->nlocals-1)); for (i=0, n=nlv; n; i++,n=n->cdr) { lv[i].name = lv_name(n); if (lv_name(n)) { diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index b758a259d..cb4126713 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -281,7 +281,7 @@ local_var_p(parser_state *p, mrb_sym sym) while (u && !MRB_PROC_CFUNC_P(u)) { const struct mrb_irep *ir = u->body.irep; uint_fast16_t n = ir->nlocals; - const struct mrb_locals *v = ir->lv; + const struct mrb_lvinfo *v = ir->lv; for (; n > 1; n --, v ++) { if (v->name == sym) return TRUE; } diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 5c66a18a6..504ec6d04 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -344,7 +344,7 @@ local_var_p(parser_state *p, mrb_sym sym) while (u && !MRB_PROC_CFUNC_P(u)) { const struct mrb_irep *ir = u->body.irep; uint_fast16_t n = ir->nlocals; - const struct mrb_locals *v = ir->lv; + const struct mrb_lvinfo *v = ir->lv; for (; n > 1; n --, v ++) { if (v->name == sym) return TRUE; } diff --git a/src/load.c b/src/load.c index b033d7ad1..d47027350 100644 --- a/src/load.c +++ b/src/load.c @@ -397,11 +397,11 @@ static int read_lv_record(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, size_t *record_len, mrb_sym const *syms, uint32_t syms_len) { const uint8_t *bin = start; - struct mrb_locals *lv; + struct mrb_lvinfo *lv; ptrdiff_t diff; int i; - irep->lv = lv = (struct mrb_locals*)mrb_malloc(mrb, sizeof(struct mrb_locals) * (irep->nlocals - 1)); + irep->lv = lv = (struct mrb_lvinfo*)mrb_malloc(mrb, sizeof(struct mrb_lvinfo) * (irep->nlocals - 1)); for (i = 0; i + 1< irep->nlocals; ++i) { uint16_t const sym_idx = bin_to_uint16(bin); -- cgit v1.2.3 From d428fa0c4acfe4f70ab534d420052c193bd83281 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 9 Jun 2020 14:39:38 +0900 Subject: Replace entire `irep->pool`. Changes: - `pool format is completely replaced - supported types: `STR`, `INT32`, `INT64`, `FLOAT` - `FLOAT` may be replaced by binary representation in the future - insert `NUL` after string literals in `mrb` files - `irep->pool` no longer store values in `mrb_value` - instead it stores in `mrb_pool_value` - less allocation - `mrb_irep` can be stored in ROM --- include/mruby/boxing_nan.h | 2 - include/mruby/boxing_no.h | 4 -- include/mruby/boxing_word.h | 5 -- include/mruby/dump.h | 19 ------ include/mruby/irep.h | 26 +++++-- include/mruby/string.h | 10 +-- mrbgems/mruby-compiler/core/codegen.c | 62 ++++++++++++----- src/codedump.c | 37 ++++++---- src/dump.c | 123 ++++++++++++++++++++-------------- src/etc.c | 11 --- src/load.c | 77 ++++++++++++++------- src/state.c | 16 ++--- src/string.c | 26 ------- src/vm.c | 43 +++++++----- 14 files changed, 251 insertions(+), 210 deletions(-) (limited to 'src/load.c') diff --git a/include/mruby/boxing_nan.h b/include/mruby/boxing_nan.h index fae3b7630..4b44bba8a 100644 --- a/include/mruby/boxing_nan.h +++ b/include/mruby/boxing_nan.h @@ -51,8 +51,6 @@ typedef struct mrb_value { }; } mrb_value; -#define mrb_float_pool(mrb,f) mrb_float_value(mrb,f) - #define mrb_tt(o) ((enum mrb_vtype)(((o).value.ttt & 0xfc000)>>14)-1) #define mrb_type(o) (enum mrb_vtype)((uint32_t)0xfff00000 < (o).value.ttt ? mrb_tt(o) : MRB_TT_FLOAT) #define mrb_ptr(o) ((void*)((((uintptr_t)0x3fffffffffff)&((uintptr_t)((o).value.p)))<<2)) diff --git a/include/mruby/boxing_no.h b/include/mruby/boxing_no.h index 7573428e6..23b48c6f8 100644 --- a/include/mruby/boxing_no.h +++ b/include/mruby/boxing_no.h @@ -24,10 +24,6 @@ typedef struct mrb_value { enum mrb_vtype tt; } mrb_value; -#ifndef MRB_WITHOUT_FLOAT -#define mrb_float_pool(mrb,f) mrb_float_value(mrb,f) -#endif - #define mrb_ptr(o) (o).value.p #define mrb_cptr(o) mrb_ptr(o) #ifndef MRB_WITHOUT_FLOAT diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h index 1b7815b7f..56202a420 100644 --- a/include/mruby/boxing_word.h +++ b/include/mruby/boxing_word.h @@ -90,11 +90,6 @@ typedef union mrb_value { MRB_API mrb_value mrb_word_boxing_cptr_value(struct mrb_state*, void*); #ifndef MRB_WITHOUT_FLOAT MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float); -MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float); -#endif - -#ifndef MRB_WITHOUT_FLOAT -#define mrb_float_pool(mrb,f) mrb_word_boxing_float_pool(mrb,f) #endif #define mrb_ptr(o) (o).value.p diff --git a/include/mruby/dump.h b/include/mruby/dump.h index 384521c45..bad27fdf5 100644 --- a/include/mruby/dump.h +++ b/include/mruby/dump.h @@ -127,16 +127,6 @@ uint32_to_bin(uint32_t l, uint8_t *bin) return sizeof(uint32_t); } -static inline size_t -uint32l_to_bin(uint32_t l, uint8_t *bin) -{ - bin[3] = (l >> 24) & 0xff; - bin[2] = (l >> 16) & 0xff; - bin[1] = (l >> 8) & 0xff; - bin[0] = l & 0xff; - return sizeof(uint32_t); -} - static inline uint32_t bin_to_uint32(const uint8_t *bin) { @@ -146,15 +136,6 @@ bin_to_uint32(const uint8_t *bin) (uint32_t)bin[3]; } -static inline uint32_t -bin_to_uint32l(const uint8_t *bin) -{ - return (uint32_t)bin[3] << 24 | - (uint32_t)bin[2] << 16 | - (uint32_t)bin[1] << 8 | - (uint32_t)bin[0]; -} - static inline uint16_t bin_to_uint16(const uint8_t *bin) { diff --git a/include/mruby/irep.h b/include/mruby/irep.h index 9d30f2797..359fb6796 100644 --- a/include/mruby/irep.h +++ b/include/mruby/irep.h @@ -16,11 +16,29 @@ MRB_BEGIN_DECL enum irep_pool_type { - IREP_TT_STRING, - IREP_TT_FIXNUM, - IREP_TT_FLOAT, + IREP_TT_STR = 0, /* string (need free) */ + IREP_TT_SSTR = 2, /* string (static) */ + IREP_TT_INT32 = 1, /* 32bit integer */ + IREP_TT_INT64 = 3, /* 64bit integer */ + IREP_TT_FLOAT = 5, /* float (double/float) */ }; +#define IREP_TT_NFLAG 1 /* number (non string) flag */ +#define IREP_TT_SFLAG 2 /* static string flag */ +#define IREP_TT_SFLAG 2 /* static string flag */ + +typedef struct mrb_pool_value { + uint32_t tt; /* packed type and length (for string) */ + union { + const char *str; + int32_t i32; +#ifdef MRB_INT64 + int64_t i64; +#endif + mrb_float f; + } u; +} mrb_pool_value; + struct mrb_lvinfo { /* local variable info (name, idx) */ mrb_sym name; uint16_t r; @@ -33,7 +51,7 @@ typedef struct mrb_irep { uint8_t flags; const mrb_code *iseq; - const mrb_value *pool; + const mrb_pool_value *pool; const mrb_sym *syms; const struct mrb_irep **reps; diff --git a/include/mruby/string.h b/include/mruby/string.h index 93c94ef5d..0f1b762c1 100644 --- a/include/mruby/string.h +++ b/include/mruby/string.h @@ -92,9 +92,6 @@ struct RStringEmbed { # define RSTR_COPY_ASCII_FLAG(dst, src) (void)0 #endif -#define RSTR_POOL_P(s) ((s)->flags & MRB_STR_POOL) -#define RSTR_SET_POOL_FLAG(s) ((s)->flags |= MRB_STR_POOL) - /** * Returns a pointer from a Ruby string */ @@ -112,13 +109,11 @@ MRB_API mrb_int mrb_str_strlen(mrb_state*, struct RString*); #define MRB_STR_FSHARED 2 #define MRB_STR_NOFREE 4 #define MRB_STR_EMBED 8 /* type flags up to here */ -#define MRB_STR_POOL 16 /* status flags from here */ -#define MRB_STR_ASCII 32 +#define MRB_STR_ASCII 16 #define MRB_STR_EMBED_LEN_SHIFT 6 #define MRB_STR_EMBED_LEN_BIT 5 #define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT) -#define MRB_STR_TYPE_MASK (MRB_STR_POOL - 1) - +#define MRB_STR_TYPE_MASK 15 void mrb_gc_free_str(mrb_state*, struct RString*); @@ -447,7 +442,6 @@ MRB_API int mrb_str_cmp(mrb_state *mrb, mrb_value str1, mrb_value str2); */ MRB_API char *mrb_str_to_cstr(mrb_state *mrb, mrb_value str); -mrb_value mrb_str_pool(mrb_state *mrb, const char *s, mrb_int len, mrb_bool nofree); uint32_t mrb_str_hash(mrb_state *mrb, mrb_value str); mrb_value mrb_str_dump(mrb_state *mrb, mrb_value str); diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index f8561c0e7..0000e6dbe 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -70,7 +70,7 @@ typedef struct scope { uint32_t icapa; mrb_irep *irep; - mrb_value *pool; + mrb_pool_value *pool; mrb_sym *syms; mrb_irep **reps; uint32_t pcapa, scapa, rcapa; @@ -554,17 +554,17 @@ static inline int new_lit(codegen_scope *s, mrb_value val) { int i; - mrb_value *pv; + mrb_pool_value *pv; switch (mrb_type(val)) { case MRB_TT_STRING: for (i=0; iirep->plen; i++) { mrb_int len; pv = &s->pool[i]; - - if (!mrb_string_p(*pv)) continue; - if ((len = RSTRING_LEN(*pv)) != RSTRING_LEN(val)) continue; - if (memcmp(RSTRING_PTR(*pv), RSTRING_PTR(val), len) == 0) + if (pv->tt & IREP_TT_NFLAG) continue; + len = pv->tt>>2; + if (RSTRING_LEN(val) != len) continue; + if (memcmp(pv->u.str, RSTRING_PTR(val), len) == 0) return i; } break; @@ -573,8 +573,9 @@ new_lit(codegen_scope *s, mrb_value val) for (i=0; iirep->plen; i++) { mrb_float f1, f2; pv = &s->pool[i]; - if (!mrb_float_p(*pv)) continue; - f1 = mrb_float(*pv); + if (pv->tt != IREP_TT_FLOAT) continue; + pv = &s->pool[i]; + f1 = pv->u.f; f2 = mrb_float(val); if (f1 == f2 && !signbit(f1) == !signbit(f2)) return i; } @@ -582,9 +583,17 @@ new_lit(codegen_scope *s, mrb_value val) #endif case MRB_TT_FIXNUM: for (i=0; iirep->plen; i++) { + mrb_int v = mrb_fixnum(val); pv = &s->pool[i]; - if (!mrb_fixnum_p(*pv)) continue; - if (mrb_fixnum(*pv) == mrb_fixnum(val)) return i; + if (pv->tt == IREP_TT_INT32) { + if (v == pv->u.i32) return i; + } +#ifdef MRB_INT64 + else if (pv->tt == IREP_TT_INT64) { + if (v == pv->u.i64) return i; + } + continue; +#endif } break; default: @@ -594,7 +603,7 @@ new_lit(codegen_scope *s, mrb_value val) if (s->irep->plen == s->pcapa) { s->pcapa *= 2; - s->pool = (mrb_value *)codegen_realloc(s, s->pool, sizeof(mrb_value)*s->pcapa); + s->pool = (mrb_pool_value*)codegen_realloc(s, s->pool, sizeof(mrb_pool_value)*s->pcapa); } pv = &s->pool[s->irep->plen]; @@ -602,18 +611,35 @@ new_lit(codegen_scope *s, mrb_value val) switch (mrb_type(val)) { case MRB_TT_STRING: - *pv = mrb_str_pool(s->mrb, RSTRING_PTR(val), RSTRING_LEN(val), RSTR_NOFREE_P(RSTRING(val))); + if (RSTR_NOFREE_P(RSTRING(val))) { + pv->tt = (RSTRING_LEN(val)<<2) | IREP_TT_SSTR; + pv->u.str = RSTRING_PTR(val); + } + else { + char *p; + mrb_int len = RSTRING_LEN(val); + pv->tt = (len<<2) | IREP_TT_STR; + p = (char*)codegen_realloc(s, NULL, len+1); + memcpy(p, RSTRING_PTR(val), len); + p[len] = '\0'; + pv->u.str = p; + } break; #ifndef MRB_WITHOUT_FLOAT case MRB_TT_FLOAT: -#ifdef MRB_WORD_BOXING - *pv = mrb_float_pool(s->mrb, mrb_float(val)); + pv->tt = IREP_TT_FLOAT; + pv->u.f = mrb_float(val); break; -#endif #endif case MRB_TT_FIXNUM: - *pv = val; +#ifdef MRB_INT64 + pv->tt = IREP_TT_INT64; + pv->u.i64 = mrb_fixnum(val); +#else + pv->tt = IREP_TT_INT32; + pv->u.i32 = mrb_fixnum(val); +#endif break; default: @@ -3045,7 +3071,7 @@ scope_new(mrb_state *mrb, codegen_scope *prev, node *nlv) s->irep->iseq = NULL; s->pcapa = 32; - s->pool = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value)*s->pcapa); + s->pool = (mrb_pool_value*)mrb_malloc(mrb, sizeof(mrb_pool_value)*s->pcapa); s->irep->plen = 0; s->scapa = 256; @@ -3110,7 +3136,7 @@ scope_finish(codegen_scope *s) irep->iseq = (const mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->pc); irep->ilen = s->pc; } - irep->pool = (const mrb_value*)codegen_realloc(s, s->pool, sizeof(mrb_value)*irep->plen); + irep->pool = (const mrb_pool_value*)codegen_realloc(s, s->pool, sizeof(mrb_pool_value)*irep->plen); irep->syms = (const mrb_sym*)codegen_realloc(s, s->syms, sizeof(mrb_sym)*irep->slen); irep->reps = (const mrb_irep**)codegen_realloc(s, s->reps, sizeof(mrb_irep*)*irep->rlen); if (s->filename_sym) { diff --git a/src/codedump.c b/src/codedump.c index 14cca8553..fd73f3104 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -115,10 +115,21 @@ codedump(mrb_state *mrb, const mrb_irep *irep) print_lv_ab(mrb, irep, a, b); break; CASE(OP_LOADL, BB): - { - mrb_value v = irep->pool[b]; - mrb_value s = mrb_inspect(mrb, v); - printf("OP_LOADL\tR%d\tL(%d)\t; %s", a, b, RSTRING_PTR(s)); + switch (irep->pool[b].tt) { + case IREP_TT_FLOAT: + printf("OP_LOADL\tR%d\tL(%d)\t; %f", a, b, (double)irep->pool[b].u.f); + break; + case IREP_TT_INT32: + printf("OP_LOADL\tR%d\tL(%d)\t; %" PRId32, a, b, irep->pool[b].u.i32); + break; +#ifdef MRB_INT64 + case IREP_TT_INT64: + printf("OP_LOADL\tR%d\tL(%d)\t; %" PRId64, a, b, irep->pool[b].u.i64); + break; +#endif + default: + printf("OP_LOADL\tR%d\tL(%d)\t", a, b); + break; } print_lv_a(mrb, irep, a); break; @@ -404,10 +415,11 @@ codedump(mrb_state *mrb, const mrb_irep *irep) print_lv_a(mrb, irep, a); break; CASE(OP_STRING, BB): - { - mrb_value v = irep->pool[b]; - mrb_value s = mrb_str_dump(mrb, mrb_str_new(mrb, RSTRING_PTR(v), RSTRING_LEN(v))); - printf("OP_STRING\tR%d\tL(%d)\t; %s", a, b, RSTRING_PTR(s)); + if ((irep->pool[b].tt & IREP_TT_NFLAG) == 0) { + printf("OP_STRING\tR%d\tL(%d)\t; %s", a, b, irep->pool[b].u.str); + } + else { + printf("OP_STRING\tR%d\tL(%d)\t", a, b); } print_lv_a(mrb, irep, a); break; @@ -453,10 +465,11 @@ codedump(mrb_state *mrb, const mrb_irep *irep) print_lv_a(mrb, irep, a); break; CASE(OP_ERR, B): - { - mrb_value v = irep->pool[a]; - mrb_value s = mrb_str_dump(mrb, mrb_str_new(mrb, RSTRING_PTR(v), RSTRING_LEN(v))); - printf("OP_ERR\t%s\n", RSTRING_PTR(s)); + if ((irep->pool[a].tt & IREP_TT_NFLAG) == 0) { + printf("OP_ERR\t%s\n", irep->pool[a].u.str); + } + else { + printf("OP_ERR\tL(%d)\n", a); } break; CASE(OP_EPUSH, B): diff --git a/src/dump.c b/src/dump.c index 093e4c256..a1c539e50 100644 --- a/src/dump.c +++ b/src/dump.c @@ -90,14 +90,12 @@ write_iseq_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf, uint8_t fla #ifndef MRB_WITHOUT_FLOAT static mrb_value -float_to_str(mrb_state *mrb, mrb_value flt) +float_to_str(mrb_state *mrb, mrb_float f) { - mrb_float f = mrb_float(flt); - if (isinf(f)) { return f < 0 ? mrb_str_new_lit(mrb, "I") : mrb_str_new_lit(mrb, "i"); } - return mrb_float_to_str(mrb, flt, MRB_FLOAT_FMT); + return mrb_float_to_str(mrb, mrb_float_value(mrb, f), MRB_FLOAT_FMT); } #endif @@ -106,45 +104,50 @@ get_pool_block_size(mrb_state *mrb, const mrb_irep *irep) { int pool_no; size_t size = 0; - mrb_value str; - size += sizeof(uint32_t); /* plen */ - size += irep->plen * (sizeof(uint8_t) + sizeof(uint16_t)); /* len(n) */ + size += sizeof(uint16_t); /* plen */ + size += irep->plen * sizeof(uint8_t); /* len(n) */ for (pool_no = 0; pool_no < irep->plen; pool_no++) { int ai = mrb_gc_arena_save(mrb); - switch (mrb_type(irep->pool[pool_no])) { - case MRB_TT_FIXNUM: - str = mrb_fixnum_to_str(mrb, irep->pool[pool_no], 10); + switch (irep->pool[pool_no].tt) { + case IREP_TT_INT64: +#ifdef MRB_INT64 { - mrb_int len = RSTRING_LEN(str); - mrb_assert_int_fit(mrb_int, len, size_t, SIZE_MAX); - size += (size_t)len; + int64_t i = irep->pool[pool_no].u.i64; + + if (i < INT32_MIN || INT32_MAX < i) + size += 8; + else + size += 4; } break; +#else + /* fall through */ +#endif + case IREP_TT_INT32: + size += 4; /* 32bits = 4bytes */ + break; + case IREP_TT_FLOAT: #ifndef MRB_WITHOUT_FLOAT - case MRB_TT_FLOAT: - str = float_to_str(mrb, irep->pool[pool_no]); { + mrb_value str = float_to_str(mrb, irep->pool[pool_no].u.f); mrb_int len = RSTRING_LEN(str); mrb_assert_int_fit(mrb_int, len, size_t, SIZE_MAX); size += (size_t)len; } - break; #endif + break; - case MRB_TT_STRING: + default: /* packed IREP_TT_STRING */ { - mrb_int len = RSTRING_LEN(irep->pool[pool_no]); + mrb_int len = irep->pool[pool_no].tt >> 1; /* unpack length */ mrb_assert_int_fit(mrb_int, len, size_t, SIZE_MAX); - size += (size_t)len; + size += (size_t)len+1; } break; - - default: - break; } mrb_gc_arena_restore(mrb, ai); } @@ -157,48 +160,64 @@ write_pool_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) { int pool_no; uint8_t *cur = buf; - uint16_t len; - mrb_value str; - const char *char_ptr; + int len; + const char *ptr; - cur += uint32_to_bin(irep->plen, cur); /* number of pool */ + cur += uint16_to_bin(irep->plen, cur); /* number of pool */ for (pool_no = 0; pool_no < irep->plen; pool_no++) { int ai = mrb_gc_arena_save(mrb); - switch (mrb_type(irep->pool[pool_no])) { - case MRB_TT_FIXNUM: - cur += uint8_to_bin(IREP_TT_FIXNUM, cur); /* data type */ - str = mrb_fixnum_to_str(mrb, irep->pool[pool_no], 10); + switch (irep->pool[pool_no].tt) { +#ifdef MRB_INT64 + case IREP_TT_INT64: + { + int64_t i = irep->pool[pool_no].u.i64; + if (i < INT32_MIN || INT32_MAX < i) { + cur += uint8_to_bin(IREP_TT_INT64, cur); /* data type */ + cur += uint32_to_bin((uint32_t)((i>>32) & 0xffffffff), cur); /* i64 hi */ + cur += uint32_to_bin((uint32_t)((i ) & 0xffffffff), cur); /* i64 lo */ + } + else { + cur += uint8_to_bin(IREP_TT_INT32, cur); /* data type */ + cur += uint32_to_bin(irep->pool[pool_no].u.i32, cur); /* i32 */ + } + } + break; +#endif + case IREP_TT_INT32: + cur += uint8_to_bin(IREP_TT_INT32, cur); /* data type */ + cur += uint32_to_bin(irep->pool[pool_no].u.i32, cur); /* i32 */ break; -#ifndef MRB_WITHOUT_FLOAT - case MRB_TT_FLOAT: + case IREP_TT_FLOAT: cur += uint8_to_bin(IREP_TT_FLOAT, cur); /* data type */ - str = float_to_str(mrb, irep->pool[pool_no]); - break; +#ifndef MRB_WITHOUT_FLOAT + { + mrb_value str = float_to_str(mrb, irep->pool[pool_no].u.f); + ptr = RSTRING_PTR(str); + len = RSTRING_LEN(str); + mrb_assert_int_fit(mrb_int, len, uint16_t, UINT16_MAX); + cur += uint16_to_bin((uint16_t)len, cur); /* data length */ + memcpy(cur, ptr, (size_t)len); + cur += len; + } +#else + cur += uint16_to_bin(0, cur); /* zero length */ #endif - - case MRB_TT_STRING: - cur += uint8_to_bin(IREP_TT_STRING, cur); /* data type */ - str = irep->pool[pool_no]; break; - default: - continue; - } - - char_ptr = RSTRING_PTR(str); - { - mrb_int tlen = RSTRING_LEN(str); - mrb_assert_int_fit(mrb_int, tlen, uint16_t, UINT16_MAX); - len = (uint16_t)tlen; + default: /* string */ + cur += uint8_to_bin(IREP_TT_STR, cur); /* data type */ + ptr = irep->pool[pool_no].u.str; + len = irep->pool[pool_no].tt>>2; + mrb_assert_int_fit(mrb_int, len, uint16_t, UINT16_MAX); + cur += uint16_to_bin((uint16_t)len, cur); /* data length */ + memcpy(cur, ptr, (size_t)len); + cur += len; + *cur++ = '\0'; + break; } - - cur += uint16_to_bin(len, cur); /* data length */ - memcpy(cur, char_ptr, (size_t)len); - cur += len; - mrb_gc_arena_restore(mrb, ai); } diff --git a/src/etc.c b/src/etc.c index 74b9ab03b..99cdc0157 100644 --- a/src/etc.c +++ b/src/etc.c @@ -158,17 +158,6 @@ mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f) MRB_SET_FROZEN_FLAG(v.value.bp); return v; } - -MRB_API mrb_value -mrb_word_boxing_float_pool(mrb_state *mrb, mrb_float f) -{ - struct RFloat *nf = (struct RFloat *)mrb_malloc(mrb, sizeof(struct RFloat)); - nf->tt = MRB_TT_FLOAT; - nf->c = mrb->float_class; - nf->f = f; - MRB_SET_FROZEN_FLAG(nf); - return mrb_obj_value(nf); -} #endif /* MRB_WITHOUT_FLOAT */ #endif /* MRB_WORD_BOXING */ diff --git a/src/load.c b/src/load.c index d47027350..39644c34b 100644 --- a/src/load.c +++ b/src/load.c @@ -73,10 +73,10 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag uint16_t tt, pool_data_len, snl; int plen; struct RData *irep_obj = mrb_data_object_alloc(mrb, mrb->object_class, NULL, &tempirep_type); - mrb_value *pool; + mrb_pool_value *pool; mrb_sym *syms; + mrb_int ai = mrb_gc_arena_save(mrb); mrb_irep *irep = mrb_add_irep(mrb); - int ai = mrb_gc_arena_save(mrb); irep_obj->data = irep; @@ -120,51 +120,81 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag } /* POOL BLOCK */ - plen = bin_to_uint32(src); /* number of pool */ - src += sizeof(uint32_t); + plen = bin_to_uint16(src); /* number of pool */ + src += sizeof(uint16_t); if (plen > 0) { if (SIZE_ERROR_MUL(plen, sizeof(mrb_value))) { return NULL; } - irep->pool = pool = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value) * plen); + irep->pool = pool = (mrb_pool_value*)mrb_calloc(mrb, sizeof(mrb_pool_value), plen); for (i = 0; i < plen; i++) { - const char *s; mrb_bool st = (flags & FLAG_SRC_MALLOC)==0; tt = *src++; /* pool TT */ - pool_data_len = bin_to_uint16(src); /* pool data length */ - src += sizeof(uint16_t); - s = (const char*)src; - src += pool_data_len; switch (tt) { /* pool data */ - case IREP_TT_FIXNUM: { - mrb_value num = mrb_str_len_to_inum(mrb, s, pool_data_len, 10, FALSE); -#ifdef MRB_WITHOUT_FLOAT - pool[i] = num; + case IREP_TT_INT32: + { + mrb_int v = (int32_t)bin_to_uint32(src); + src += sizeof(uint32_t); +#ifdef MRB_INT64 + pool[i].tt = IREP_TT_INT64; + pool[i].u.i64 = (int64_t)v; #else - pool[i] = mrb_float_p(num)? mrb_float_pool(mrb, mrb_float(num)) : num; + pool[i].tt = IREP_TT_INT32; + pool[i].u.i32 = v; #endif } break; + case IREP_TT_INT64: +#ifdef MRB_INT64 + { + uint64_t i = bin_to_uint32(src); + src += sizeof(uint32_t); + i <<= 32; + i |= bin_to_uint32(src); + src += sizeof(uint32_t); + pool[i].u.i64 = (int64_t)i; + } +#else + return NULL; /* INT64 not supported on MRB_INT32 */ +#endif + break; -#ifndef MRB_WITHOUT_FLOAT case IREP_TT_FLOAT: - pool[i] = mrb_float_pool(mrb, str_to_double(mrb, s, pool_data_len)); +#ifndef MRB_WITHOUT_FLOAT + pool[i].tt = tt; + pool_data_len = bin_to_uint16(src); /* pool data length */ + src += sizeof(uint16_t); + pool[i].u.f = str_to_double(mrb, (const char*)src, pool_data_len); + src += pool_data_len; break; +#else + return NULL; /* MRB_WITHOUT_FLOAT */ #endif - case IREP_TT_STRING: - pool[i] = mrb_str_pool(mrb, s, pool_data_len, st); + case IREP_TT_STR: + pool_data_len = bin_to_uint16(src); /* pool data length */ + src += sizeof(uint16_t); + if (st) { + pool[i].tt = (pool_data_len<<2) | IREP_TT_SSTR; + pool[i].u.str = (const char*)src; + } + else { + char *p; + pool[i].tt = (pool_data_len<<2) | IREP_TT_STR; + p = (char*)mrb_malloc(mrb, pool_data_len+1); + memcpy(p, src, pool_data_len+1); + pool[i].u.str = (const char*)p; + } + src += pool_data_len + 1; break; default: /* should not happen */ - pool[i] = mrb_nil_value(); - break; + return NULL; } - irep->plen++; - mrb_gc_arena_restore(mrb, ai); + irep->plen = i+1; } } @@ -193,7 +223,6 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag syms[i] = mrb_intern_static(mrb, (char *)src, snl); } src += snl + 1; - mrb_gc_arena_restore(mrb, ai); } } diff --git a/src/state.c b/src/state.c index 323532363..7a1283fa6 100644 --- a/src/state.c +++ b/src/state.c @@ -144,18 +144,14 @@ mrb_irep_free(mrb_state *mrb, mrb_irep *irep) if (irep->flags & MRB_IREP_NO_FREE) return; if (!(irep->flags & MRB_ISEQ_NO_FREE)) mrb_free(mrb, (void*)irep->iseq); - if (irep->pool) for (i=0; iplen; i++) { - if (mrb_string_p(irep->pool[i])) { - mrb_gc_free_str(mrb, RSTRING(irep->pool[i])); - mrb_free(mrb, mrb_obj_ptr(irep->pool[i])); + if (irep->pool) { + for (i=0; iplen; i++) { + if ((irep->pool[i].tt & 3) == IREP_TT_STR) { + mrb_free(mrb, (void*)irep->pool[i].u.str); + } } -#if defined(MRB_WORD_BOXING) && !defined(MRB_WITHOUT_FLOAT) - else if (mrb_float_p(irep->pool[i])) { - mrb_free(mrb, mrb_obj_ptr(irep->pool[i])); - } -#endif + mrb_free(mrb, (void*)irep->pool); } - mrb_free(mrb, (void*)irep->pool); mrb_free(mrb, (void*)irep->syms); if (irep->reps) { for (i=0; irlen; i++) { diff --git a/src/string.c b/src/string.c index 97795221c..73e514f41 100644 --- a/src/string.c +++ b/src/string.c @@ -583,9 +583,6 @@ str_share(mrb_state *mrb, struct RString *orig, struct RString *s) else if (RSTR_FSHARED_P(orig)) { str_init_fshared(orig, s, orig->as.heap.aux.fshared); } - else if (mrb_frozen_p(orig) && !RSTR_POOL_P(orig)) { - str_init_fshared(orig, s, orig); - } else { if (orig->as.heap.aux.capa > orig->as.heap.len) { orig->as.heap.ptr = (char *)mrb_realloc(mrb, orig->as.heap.ptr, len+1); @@ -596,29 +593,6 @@ str_share(mrb_state *mrb, struct RString *orig, struct RString *s) } } -mrb_value -mrb_str_pool(mrb_state *mrb, const char *p, mrb_int len, mrb_bool nofree) -{ - struct RString *s = (struct RString *)mrb_malloc(mrb, sizeof(struct RString)); - - s->tt = MRB_TT_STRING; - s->c = mrb->string_class; - s->flags = 0; - - if (RSTR_EMBEDDABLE_P(len)) { - str_init_embed(s, p, len); - } - else if (nofree) { - str_init_nofree(s, p, len); - } - else { - str_init_normal(mrb, s, p, len); - } - RSTR_SET_POOL_FLAG(s); - MRB_SET_FROZEN_FLAG(s); - return mrb_obj_value(s); -} - mrb_value mrb_str_byte_subseq(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len) { diff --git a/src/vm.c b/src/vm.c index 064086fb9..c3fa12d3d 100644 --- a/src/vm.c +++ b/src/vm.c @@ -966,7 +966,7 @@ mrb_vm_exec(mrb_state *mrb, struct RProc *proc, const mrb_code *pc) /* mrb_assert(MRB_PROC_CFUNC_P(proc)) */ const mrb_code *pc0 = pc; const mrb_irep *irep = proc->body.irep; - const mrb_value *pool = irep->pool; + const mrb_pool_value *pool = irep->pool; const mrb_sym *syms = irep->syms; mrb_code insn; int ai = mrb_gc_arena_save(mrb); @@ -1013,17 +1013,25 @@ RETRY_TRY_BLOCK: } CASE(OP_LOADL, BB) { -#ifdef MRB_WORD_BOXING - mrb_value val = pool[b]; -#ifndef MRB_WITHOUT_FLOAT - if (mrb_float_p(val)) { - val = mrb_float_value(mrb, mrb_float(val)); - } + switch (pool[b].tt) { /* number */ + case IREP_TT_INT32: + regs[a] = mrb_fixnum_value((mrb_int)pool[b].u.i32); + break; +#ifdef MRB_INT64 + case IREP_TT_INT64: + regs[a] = mrb_fixnum_value((mrb_int)pool[b].u.i64); + break; #endif - regs[a] = val; -#else - regs[a] = pool[b]; +#ifndef MRB_WITHOUT_FLOAT + case IREP_TT_FLOAT: + regs[a] = mrb_float_value(mrb, pool[b].u.f); + break; #endif + default: + /* should not happen (tt:string) */ + regs[a] = mrb_nil_value(); + break; + } NEXT; } @@ -2499,9 +2507,13 @@ RETRY_TRY_BLOCK: } CASE(OP_STRING, BB) { - mrb_value str = mrb_str_dup(mrb, pool[b]); - - regs[a] = str; + size_t len = pool[b].tt >> 2; + if (pool[b].tt & IREP_TT_SFLAG) { + regs[a] = mrb_str_new_static(mrb, pool[b].u.str, len); + } + else { + regs[a] = mrb_str_new(mrb, pool[b].u.str, len); + } mrb_gc_arena_restore(mrb, ai); NEXT; } @@ -2703,10 +2715,11 @@ RETRY_TRY_BLOCK: } CASE(OP_ERR, B) { - mrb_value msg = mrb_str_dup(mrb, pool[a]); + size_t len = pool[a].tt >> 2; mrb_value exc; - exc = mrb_exc_new_str(mrb, E_LOCALJUMP_ERROR, msg); + mrb_assert((pool[a].tt&IREP_TT_NFLAG)==0); + exc = mrb_exc_new(mrb, E_LOCALJUMP_ERROR, pool[a].u.str, len); ERR_PC_SET(mrb); mrb_exc_set(mrb, exc); goto L_RAISE; -- cgit v1.2.3 From 52507b1083ba1c562ae506d63a07a51a26815c21 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 11 Jun 2020 15:37:49 +0900 Subject: Generate C struct from `irep` instead of binary dump. --- Rakefile | 58 ++++++++---- include/mruby.h | 8 +- include/mruby/compile.h | 4 +- include/mruby/error.h | 4 +- include/mruby/proc.h | 7 +- lib/mruby/build/command.rb | 2 +- lib/mruby/gem.rb | 17 ++-- mrbgems/mruby-compiler/core/codegen.c | 2 +- mrbgems/mruby-compiler/core/parse.y | 4 +- mrbgems/mruby-compiler/core/y.tab.c | 4 +- mrbgems/mruby-enumerator/mrblib/enumerator.rb | 1 + mrbgems/mruby-metaprog/src/metaprog.c | 7 +- mrbgems/mruby-socket/src/socket.c | 4 +- mrbgems/mruby-symbol-ext/test/symbol.rb | 6 +- mrbgems/mruby-test/driver.c | 4 +- mrbgems/mruby-test/mrbgem.rake | 14 +-- mrblib/init_mrblib.c | 11 --- mrblib/mrblib.rake | 17 +++- src/class.c | 3 + src/dump.c | 123 +++++++++----------------- src/gc.c | 11 ++- src/kernel.c | 4 +- src/load.c | 6 ++ src/proc.c | 4 +- src/symbol.c | 9 ++ src/variable.c | 12 +-- src/vm.c | 26 +++--- test/presym | 4 + 28 files changed, 201 insertions(+), 175 deletions(-) create mode 100644 test/presym (limited to 'src/load.c') diff --git a/Rakefile b/Rakefile index 75ed5c905..2198b27fd 100644 --- a/Rakefile +++ b/Rakefile @@ -106,11 +106,17 @@ end mkdir_p "#{MRUBY_ROOT}/build" cfiles = (Dir.glob("#{MRUBY_ROOT}/src/*.c")+ - Dir.glob("#{MRUBY_ROOT}/mrbgems/*/{core,src}/*.c")+ - Dir.glob("#{MRUBY_ROOT}/build/*/mrbgems/**/{src,core}/*.c")).uniq -rbfiles = (Dir.glob("#{MRUBY_ROOT}/mrblib/*.rb")+ - Dir.glob("#{MRUBY_ROOT}/mrbgems/*/mrblib/*.rb")+ - Dir.glob("#{MRUBY_ROOT}/build/*/mrbgems/**/mrblib/*.rb")).uniq + Dir.glob("#{MRUBY_ROOT}/mrbgems/**/*.c")+ + Dir.glob("#{MRUBY_ROOT}/build/*/mrbgems/**/{src,test,core}/*.c")).uniq +rbfiles = (Dir.glob("#{MRUBY_ROOT}/{mrblib,test,test/t}/*.rb")+ + Dir.glob("#{MRUBY_ROOT}/mrbgems/*/{mrblib,test}/*.rb")+ + Dir.glob("#{MRUBY_ROOT}/build/*/mrbgems/**/{mrblib,test}/*.rb")).uniq +psfiles = Dir.glob("#{MRUBY_ROOT}/{mrblib,mrbgems,test}/**/presym") +symbols = [] +psfiles.each do |file| + symbols += File.readlines(file).grep_v(/^# /) +end +symbols.each{|x| x.chomp!} presym_file="#{MRUBY_ROOT}/build/presym" op_table = { "!" => "not", @@ -145,30 +151,42 @@ op_table = { "~" => "neg", } -file presym_file => cfiles+rbfiles+[__FILE__] do +file presym_file => cfiles+rbfiles+psfiles+[__FILE__] do csymbols = cfiles.map do |f| src = File.read(f) [src.scan(/intern_lit\([^\n"]*"([^\n "]*)"/), src.scan(/mrb_define_method\([^\n"]*"([^\n"]*)"/), + src.scan(/mrb_define_class_method\([^\n"]*"([^\n"]*)"/), src.scan(/mrb_define_class\([^\n"]*"([^\n"]*)"/), src.scan(/mrb_define_module\([^\n"]*"([^\n"]*)"/), src.scan(/mrb_define_module_function\([^\n"]*"([^\n"]*)"/), + src.scan(/mrb_define_const\([^\n"]*"([^\n"]*)"/), + src.scan(/mrb_define_global_const\([^\n"]*"([^\n"]*)"/), src.scan(/MRB_SYM\((\w+)\)/), src.scan(/MRB_QSYM\((\w+)\)/).map{|x,| - x.sub!(/_p$/, "?") || x.sub!(/_b$/, "!") || x.sub!(/_e$/, "=") || x.sub!(/^a_/, "@") || x.sub!(/^d_/, "$") + x.sub!(/_p$/, "?") || x.sub!(/_b$/, "!") || x.sub!(/_e$/, "=") || x.sub!(/^0_/, "@") || x.sub!(/^00_/, "@@") }.compact] end rbsymbols = rbfiles.map do |f| src = File.read(f) + src.force_encoding(Encoding::BINARY) [src.scan(/\bclass +([A-Z]\w*)/), src.scan(/\bmodule +([A-Z]\w*)/), - src.scan(/\bdef +(\w+[!?]?)/), + src.scan(/\bdef +(\w+[!?=]?)/), src.scan(/\balias +(\w+[!?]?)/), - src.scan(/\b([A-Z]\w+) *=/), - src.scan(/(@\w+)/), - src.scan(/:(\w+)/)] + src.scan(/\b([A-Z]\w*) *=[^=]/), + src.scan(/(\$[a-zA-Z_]\w*)/), + src.scan(/(\$[$!?]\w*)/), + src.scan(/(@@?[a-zA-Z_]\w*)/), + src.scan(/[^.]\.([a-zA-Z_]\w*[!?]?)/), + src.scan(/\.([a-zA-Z_]\w* *=)/).map{|x|x.map{|s|s.gsub(' ', '')}}, + src.scan(/\b([a-zA-Z_]\w*):/), + src.scan(/:([a-zA-Z_]\w*[!?=]?)/), + src.scan(/[\(\[\{ ]:"([^"]+)"/).map{|x|x.map{|s|s.gsub('\#', '#')}}, + src.scan(/[ \(\[\{]:'([^']+)'/) + ] end - symbols = (csymbols+rbsymbols+op_table.keys).flatten.compact.uniq.sort + symbols = (symbols+csymbols+rbsymbols+op_table.keys).flatten.compact.uniq.sort.map{|x| x.gsub("\n", '\n')} presyms = File.readlines(presym_file) rescue [] presyms.each{|x| x.chomp!} if presyms != symbols @@ -182,10 +200,12 @@ file presym_inc => presym_file do presyms.each{|x| x.chomp!} File.open(presym_inc, "w") do |f| f.print "/* MRB_PRESYM_CSYM(sym, num) - symbol which is valid C id name */\n" - f.print "/* MRB_PRESYM_QSYM(sym, name, num) - symbol with alias name */\n" - f.print "/* MRB_PRESYM_SYM(sym, num) - symbol which is not valid C id */\n\n" + f.print "/* MRB_PRESYM_QSYM(name, sym, num) - symbol with alias name */\n" + f.print "/* MRB_PRESYM_SYM(name, num) - symbol which is not valid C id */\n" presyms.each.with_index do |sym,i| - if /\A\w+\Z/ =~ sym + if sym.bytes.detect{|x|x>0x80} || /\A\$/ =~ sym + f.print "MRB_PRESYM_SYM(\"#{sym}\", #{i+1})\n" + elsif /\A\w+\Z/ =~ sym f.print "MRB_PRESYM_CSYM(#{sym}, #{i+1})\n" elsif op_table.key?(sym) f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{op_table[sym]}, #{i+1})\n" @@ -198,11 +218,11 @@ file presym_inc => presym_file do elsif /\=\Z/ =~ sym s = sym.dup; s[-1] = "_e" f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{s}, #{i+1})\n" - elsif /\A@/ =~ sym - s = sym.dup; s[0] = "a_" + elsif /\A@@/ =~ sym + s = sym.dup; s[0,2] = "00_" f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{s}, #{i+1})\n" - elsif /\A$/ =~ sym - s = sym.dup; s[0] = "d_" + elsif /\A@/ =~ sym + s = sym.dup; s[0] = "0_" f.print "MRB_PRESYM_QSYM(\"#{sym}\", #{s}, #{i+1})\n" else f.print "MRB_PRESYM_SYM(\"#{sym}\", #{i+1})\n" diff --git a/include/mruby.h b/include/mruby.h index 59188e6b5..27c428e85 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -147,7 +147,7 @@ typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud); typedef struct { mrb_sym mid; - struct RProc *proc; + const struct RProc *proc; mrb_value *stackent; uint16_t ridx; uint16_t epos; @@ -1202,9 +1202,9 @@ MRB_API void mrb_close(mrb_state *mrb); MRB_API void* mrb_default_allocf(mrb_state*, void*, size_t, void*); MRB_API mrb_value mrb_top_self(mrb_state *mrb); -MRB_API mrb_value mrb_top_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep); -MRB_API mrb_value mrb_vm_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep); -MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, struct RProc *proc, const mrb_code *iseq); +MRB_API mrb_value mrb_top_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, unsigned int stack_keep); +MRB_API mrb_value mrb_vm_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, unsigned int stack_keep); +MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *iseq); /* compatibility macros */ #define mrb_toplevel_run_keep(m,p,k) mrb_top_run((m),(p),mrb_top_self(m),(k)) #define mrb_toplevel_run(m,p) mrb_toplevel_run_keep((m),(p),0) diff --git a/include/mruby/compile.h b/include/mruby/compile.h index e8ab91eb9..36adf5a32 100644 --- a/include/mruby/compile.h +++ b/include/mruby/compile.h @@ -33,7 +33,7 @@ typedef struct mrbc_context { mrb_bool no_exec:1; mrb_bool keep_lv:1; mrb_bool no_optimize:1; - struct RProc *upper; + const struct RProc *upper; size_t parser_nerr; } mrbc_context; @@ -153,7 +153,7 @@ struct mrb_parser_state { mrb_bool no_optimize:1; mrb_bool capture_errors:1; - struct RProc *upper; + const struct RProc *upper; struct mrb_parser_message error_buffer[10]; struct mrb_parser_message warn_buffer[10]; diff --git a/include/mruby/error.h b/include/mruby/error.h index d24b5b0c3..72f6c5f3d 100644 --- a/include/mruby/error.h +++ b/include/mruby/error.h @@ -35,7 +35,7 @@ MRB_API mrb_value mrb_f_raise(mrb_state*, mrb_value); #if defined(MRB_64BIT) || defined(MRB_USE_FLOAT) || defined(MRB_NAN_BOXING) || defined(MRB_WORD_BOXING) struct RBreak { MRB_OBJECT_HEADER; - struct RProc *proc; + const struct RProc *proc; mrb_value val; }; #define mrb_break_value_get(brk) ((brk)->val) @@ -43,7 +43,7 @@ struct RBreak { #else struct RBreak { MRB_OBJECT_HEADER; - struct RProc *proc; + const struct RProc *proc; union mrb_value_union value; }; #define RBREAK_VALUE_TT_MASK ((1 << 8) - 1) diff --git a/include/mruby/proc.h b/include/mruby/proc.h index 2d06210ef..fe0cf2eb0 100644 --- a/include/mruby/proc.h +++ b/include/mruby/proc.h @@ -44,7 +44,7 @@ struct RProc { const mrb_irep *irep; mrb_func_t func; } body; - struct RProc *upper; + const struct RProc *upper; union { struct RClass *target_class; struct REnv *env; @@ -93,9 +93,6 @@ MRB_API struct RProc *mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int void mrb_proc_copy(struct RProc *a, struct RProc *b); mrb_int mrb_proc_arity(const struct RProc *p); -/* implementation of #send method */ -mrb_value mrb_f_send(mrb_state *mrb, mrb_value self); - /* following functions are defined in mruby-proc-ext so please include it when using */ MRB_API struct RProc *mrb_proc_new_cfunc_with_env(mrb_state *mrb, mrb_func_t func, mrb_int argc, const mrb_value *argv); MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx); @@ -137,6 +134,8 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx); #include KHASH_DECLARE(mt, mrb_sym, mrb_method_t, TRUE) +MRB_API mrb_value mrb_load_proc(mrb_state *mrb, const struct RProc *proc); + MRB_END_DECL #endif /* MRUBY_PROC_H */ diff --git a/lib/mruby/build/command.rb b/lib/mruby/build/command.rb index 84ce78cb9..39981cc32 100644 --- a/lib/mruby/build/command.rb +++ b/lib/mruby/build/command.rb @@ -310,7 +310,7 @@ module MRuby def initialize(build) super @command = nil - @compile_options = "-B%{funcname} -o-" + @compile_options = "-S -B%{funcname} -o-" end def run(out, infiles, funcname) diff --git a/lib/mruby/gem.rb b/lib/mruby/gem.rb index 6fcaad9c1..d6b1a6851 100644 --- a/lib/mruby/gem.rb +++ b/lib/mruby/gem.rb @@ -174,7 +174,7 @@ module MRuby def generate_gem_init(fname) open(fname, 'w') do |f| print_gem_init_header f - build.mrbc.run f, rbfiles, "gem_mrblib_irep_#{funcname}" unless rbfiles.empty? + build.mrbc.run f, rbfiles, "gem_mrblib_#{funcname}_proc" unless rbfiles.empty? f.puts %Q[void mrb_#{funcname}_gem_init(mrb_state *mrb);] f.puts %Q[void mrb_#{funcname}_gem_final(mrb_state *mrb);] f.puts %Q[] @@ -183,7 +183,7 @@ module MRuby f.puts %Q[ struct REnv *e;] unless rbfiles.empty? f.puts %Q[ mrb_#{funcname}_gem_init(mrb);] if objs != [objfile("#{build_dir}/gem_init")] unless rbfiles.empty? - f.puts %Q[ mrb_load_irep(mrb, gem_mrblib_irep_#{funcname});] + f.puts %Q[ mrb_load_proc(mrb, gem_mrblib_#{funcname}_proc);] f.puts %Q[ if (mrb->exc) {] f.puts %Q[ mrb_print_error(mrb);] f.puts %Q[ mrb_close(mrb);] @@ -215,10 +215,13 @@ module MRuby def print_gem_init_header(f) print_gem_comment(f) - f.puts %Q[#include ] unless rbfiles.empty? - f.puts %Q[#include ] - f.puts %Q[#include ] unless rbfiles.empty? - f.puts %Q[#include ] unless rbfiles.empty? + unless rbfiles.empty? + f.puts %Q[#include ] + f.puts %Q[#include ] + f.puts %Q[#include ] + else + f.puts %Q[#include ] + end end def print_gem_test_header(f) @@ -226,7 +229,7 @@ module MRuby f.puts %Q[#include ] f.puts %Q[#include ] f.puts %Q[#include ] - f.puts %Q[#include ] + f.puts %Q[#include ] f.puts %Q[#include ] f.puts %Q[#include ] unless test_args.empty? end diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 0000e6dbe..5d29dcb2d 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -706,7 +706,7 @@ lv_idx(codegen_scope *s, mrb_sym id) static int search_upvar(codegen_scope *s, mrb_sym id, int *idx) { - struct RProc *u; + const struct RProc *u; int lv = 0; codegen_scope *up = s->prev; diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index cb4126713..c7c3d2a2f 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -265,7 +265,7 @@ local_unnest(parser_state *p) static mrb_bool local_var_p(parser_state *p, mrb_sym sym) { - struct RProc *u; + const struct RProc *u; node *l = p->locals; while (l) { @@ -282,7 +282,7 @@ local_var_p(parser_state *p, mrb_sym sym) const struct mrb_irep *ir = u->body.irep; uint_fast16_t n = ir->nlocals; const struct mrb_lvinfo *v = ir->lv; - for (; n > 1; n --, v ++) { + for (; v && n > 1; n--, v++) { if (v->name == sym) return TRUE; } if (MRB_PROC_SCOPE_P(u)) break; diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 504ec6d04..dbcc6a5bd 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -328,7 +328,7 @@ local_unnest(parser_state *p) static mrb_bool local_var_p(parser_state *p, mrb_sym sym) { - struct RProc *u; + const struct RProc *u; node *l = p->locals; while (l) { @@ -345,7 +345,7 @@ local_var_p(parser_state *p, mrb_sym sym) const struct mrb_irep *ir = u->body.irep; uint_fast16_t n = ir->nlocals; const struct mrb_lvinfo *v = ir->lv; - for (; n > 1; n --, v ++) { + for (; v && n > 1; n--, v++) { if (v->name == sym) return TRUE; } if (MRB_PROC_SCOPE_P(u)) break; diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb index 5a98dc964..f007b8553 100644 --- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb +++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb @@ -130,6 +130,7 @@ class Enumerator @feedvalue = nil @stop_exc = false end + attr_accessor :obj, :meth, :args attr_reader :fib diff --git a/mrbgems/mruby-metaprog/src/metaprog.c b/mrbgems/mruby-metaprog/src/metaprog.c index 8a4a6dc69..7a7639410 100644 --- a/mrbgems/mruby-metaprog/src/metaprog.c +++ b/mrbgems/mruby-metaprog/src/metaprog.c @@ -132,7 +132,7 @@ mrb_obj_ivar_set(mrb_state *mrb, mrb_value self) static mrb_value mrb_local_variables(mrb_state *mrb, mrb_value self) { - struct RProc *proc; + const struct RProc *proc; const mrb_irep *irep; mrb_value vars; size_t i; @@ -664,7 +664,7 @@ mrb_mod_s_constants(mrb_state *mrb, mrb_value mod) static mrb_value mrb_mod_s_nesting(mrb_state *mrb, mrb_value mod) { - struct RProc *proc; + const struct RProc *proc; mrb_value ary; struct RClass *c = NULL; @@ -684,6 +684,9 @@ mrb_mod_s_nesting(mrb_state *mrb, mrb_value mod) return ary; } +/* implementation of #send method */ +mrb_value mrb_f_send(mrb_state *mrb, mrb_value self); + void mrb_mruby_metaprog_gem_init(mrb_state* mrb) { diff --git a/mrbgems/mruby-socket/src/socket.c b/mrbgems/mruby-socket/src/socket.c index f158959a7..001021b81 100644 --- a/mrbgems/mruby-socket/src/socket.c +++ b/mrbgems/mruby-socket/src/socket.c @@ -200,7 +200,7 @@ mrb_addrinfo_getnameinfo(mrb_state *mrb, mrb_value self) host = mrb_str_buf_new(mrb, NI_MAXHOST); serv = mrb_str_buf_new(mrb, NI_MAXSERV); - sastr = mrb_iv_get(mrb, self, MRB_QSYM(a_sockaddr)); + sastr = mrb_iv_get(mrb, self, MRB_QSYM(0_sockaddr)); if (!mrb_string_p(sastr)) { mrb_raise(mrb, E_SOCKET_ERROR, "invalid sockaddr"); } @@ -222,7 +222,7 @@ mrb_addrinfo_unix_path(mrb_state *mrb, mrb_value self) { mrb_value sastr; - sastr = mrb_iv_get(mrb, self, MRB_QSYM(a_sockaddr)); + sastr = mrb_iv_get(mrb, self, MRB_QSYM(0_sockaddr)); if (((struct sockaddr *)RSTRING_PTR(sastr))->sa_family != AF_UNIX) mrb_raise(mrb, E_SOCKET_ERROR, "need AF_UNIX address"); if (RSTRING_LEN(sastr) < (mrb_int)offsetof(struct sockaddr_un, sun_path) + 1) { diff --git a/mrbgems/mruby-symbol-ext/test/symbol.rb b/mrbgems/mruby-symbol-ext/test/symbol.rb index db686e5f4..34c3c6ba5 100644 --- a/mrbgems/mruby-symbol-ext/test/symbol.rb +++ b/mrbgems/mruby-symbol-ext/test/symbol.rb @@ -13,13 +13,13 @@ end %w[size length].each do |n| assert("Symbol##{n}") do assert_equal 5, :hello.__send__(n) - assert_equal 4, :"aA\0b".__send__(n) + assert_equal 4, :"aA b".__send__(n) if __ENCODING__ == "UTF-8" assert_equal 8, :"こんにちは世界!".__send__(n) - assert_equal 4, :"aあ\0b".__send__(n) + assert_equal 4, :"aあ b".__send__(n) else assert_equal 22, :"こんにちは世界!".__send__(n) - assert_equal 6, :"aあ\0b".__send__(n) + assert_equal 6, :"aあ b".__send__(n) end end end diff --git a/mrbgems/mruby-test/driver.c b/mrbgems/mruby-test/driver.c index a5f723927..fe1a475d5 100644 --- a/mrbgems/mruby-test/driver.c +++ b/mrbgems/mruby-test/driver.c @@ -18,7 +18,7 @@ #include #include -extern const uint8_t mrbtest_assert_irep[]; +extern const struct RProc mrbtest_assert_proc[]; void mrbgemtest_init(mrb_state* mrb); void mrb_init_test_vformat(mrb_state* mrb); @@ -300,7 +300,7 @@ main(int argc, char **argv) } mrb_init_test_driver(mrb, verbose); - mrb_load_irep(mrb, mrbtest_assert_irep); + mrb_load_proc(mrb, mrbtest_assert_proc); mrbgemtest_init(mrb); ret = eval_test(mrb); mrb_close(mrb); diff --git a/mrbgems/mruby-test/mrbgem.rake b/mrbgems/mruby-test/mrbgem.rake index ced252ae6..9e8e4041f 100644 --- a/mrbgems/mruby-test/mrbgem.rake +++ b/mrbgems/mruby-test/mrbgem.rake @@ -28,7 +28,7 @@ MRuby::Gem::Specification.new('mruby-test') do |spec| file assert_c => [assert_rb, build.mrbcfile] do |t| mkdir_p File.dirname(t.name) open(t.name, 'w') do |f| - mrbc.run f, assert_rb, 'mrbtest_assert_irep' + mrbc.run f, assert_rb, 'mrbtest_assert_proc' end end @@ -56,12 +56,12 @@ MRuby::Gem::Specification.new('mruby-test') do |spec| f.puts %Q[ * All manual changes will get lost.] f.puts %Q[ */] if test_preload.nil? - f.puts %Q[extern const uint8_t mrbtest_assert_irep[];] + f.puts %Q[extern const struct RProc mrbtest_assert_proc[];] else - g.build.mrbc.run f, test_preload, "gem_test_irep_#{g.funcname}_preload" + g.build.mrbc.run f, test_preload, "gem_test_#{g.funcname}_preload" end g.test_rbfiles.flatten.each_with_index do |rbfile, i| - g.build.mrbc.run f, rbfile, "gem_test_irep_#{g.funcname}_#{i}" + g.build.mrbc.run f, rbfile, "gem_test_#{g.funcname}_#{i}_proc" end f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] unless g.test_objs.empty? dep_list.each do |d| @@ -90,9 +90,9 @@ MRuby::Gem::Specification.new('mruby-test') do |spec| end f.puts %Q[ mrb_init_test_driver(mrb2, mrb_test(mrb_gv_get(mrb, mrb_intern_lit(mrb, "$mrbtest_verbose"))));] if test_preload.nil? - f.puts %Q[ mrb_load_irep(mrb2, mrbtest_assert_irep);] + f.puts %Q[ mrb_load_proc(mrb2, mrbtest_assert_proc);] else - f.puts %Q[ mrb_load_irep(mrb2, gem_test_irep_#{g.funcname}_preload);] + f.puts %Q[ mrb_load_proc(mrb2, gem_test_#{g.funcname}_preload);] end f.puts %Q[ if (mrb2->exc) {] f.puts %Q[ mrb_print_error(mrb2);] @@ -113,7 +113,7 @@ MRuby::Gem::Specification.new('mruby-test') do |spec| f.puts %Q[ mrb_#{g.funcname}_gem_test(mrb2);] if g.custom_test_init? - f.puts %Q[ mrb_load_irep(mrb2, gem_test_irep_#{g.funcname}_#{i});] + f.puts %Q[ mrb_load_proc(mrb2, gem_test_#{g.funcname}_#{i}_proc);] f.puts %Q[ ] f.puts %Q[ mrb_t_pass_result(mrb, mrb2);] diff --git a/mrblib/init_mrblib.c b/mrblib/init_mrblib.c index 4d4bcd25a..e69de29bb 100644 --- a/mrblib/init_mrblib.c +++ b/mrblib/init_mrblib.c @@ -1,11 +0,0 @@ -#include -#include - -extern const uint8_t mrblib_irep[]; - -void -mrb_init_mrblib(mrb_state *mrb) -{ - mrb_load_irep(mrb, mrblib_irep); -} - diff --git a/mrblib/mrblib.rake b/mrblib/mrblib.rake index 6fba0adc1..724d328fa 100644 --- a/mrblib/mrblib.rake +++ b/mrblib/mrblib.rake @@ -11,8 +11,21 @@ MRuby.each_target do mkdir_p File.dirname(t.name) open(t.name, 'w') do |f| _pp "GEN", "*.rb", "#{t.name.relative_path}" - f.puts File.read("#{current_dir}/init_mrblib.c") - mrbc.run f, rbfiles, 'mrblib_irep' + f.puts %Q[/*] + f.puts %Q[ * This file is loading the mrblib] + f.puts %Q[ *] + f.puts %Q[ * IMPORTANT:] + f.puts %Q[ * This file was generated!] + f.puts %Q[ * All manual changes will get lost.] + f.puts %Q[ */] + mrbc.run f, rbfiles, 'mrblib_proc' + f.puts <u.i64); break; case IREP_TT_FLOAT: - fprintf(fp, "{IREP_TT_FLOAT, {.f="MRB_FLOAT_FMT"}},\n", p->u.f); + if (p->u.f == 0) { + fprintf(fp, "{IREP_TT_FLOAT, {.f=%#.1f}},\n", p->u.f); + } + else { + fprintf(fp, "{IREP_TT_FLOAT, {.f="MRB_FLOAT_FMT"}},\n", p->u.f); + } break; } } @@ -951,83 +956,28 @@ dump_pool(mrb_state *mrb, const mrb_pool_value *p, FILE *fp) const char *s = p->u.str; fprintf(fp, "{IREP_TT_STR|(%d<<2), {.str=\"", len); for (i=0; i", "cmp"}, - {"==", "eq"}, - {"===", "eqq"}, - {"=~", "match"}, - {">", "gt"}, - {">=", "ge"}, - {">>", "rshift"}, - {"[]", "aref"}, - {"[]=", "aset"}, - {"^", "xor"}, - {"`", "tick"}, - {"|", "or"}, - {"||", "oror"}, - {"~", "neg"}, - {0}, -}; - +mrb_bool mrb_sym_static_p(mrb_state *mrb, mrb_sym sym); + static int dump_sym(mrb_state *mrb, mrb_sym sym, FILE *fp) { - mrb_int len; - const char *name = mrb_sym_name_len(mrb, sym, &len); - int i; - - if (len == 0 || len != strlen(name)) - return MRB_DUMP_INVALID_ARGUMENT; - for (i=0; op_table[i].op; i++) { - if (strcmp(name, op_table[i].op) == 0) { - fprintf(fp, "MRB_QSYM(%s),", op_table[i].name); - return MRB_DUMP_OK; - } - } - if (name[0] == '@') { - fprintf(fp, "MRB_QSYM(a_%s),", name+1); - } - else if (name[0] == '$') { - fprintf(fp, "MRB_QSYM(d_%s),", name+1); - } - else if (name[len-1] == '!') { - fprintf(fp, "MRB_QSYM(%.*s_b),", (int)len-1, name); - } - else if (name[len-1] == '?') { - fprintf(fp, "MRB_QSYM(%.*s_p),", (int)len-1, name); - } - else if (name[len-1] == '=') { - fprintf(fp, "MRB_QSYM(%.*s_e),", (int)len-1, name); + const char *name; + if (sym == 0) return MRB_DUMP_INVALID_ARGUMENT; + name = mrb_sym_name(mrb, sym); + if (!name) { + fprintf(stderr, "undefined symbol (%d) - define presym\n", sym); } - else { - fprintf(fp, "MRB_SYM(%s),", name); + if (!mrb_sym_static_p(mrb, sym)) { + fprintf(stderr, "no static symbol (%s) - define presym\n", name); } + fprintf(fp, "%d /* %s */,", sym, name); return MRB_DUMP_OK; } @@ -1065,8 +1015,7 @@ dump_irep_struct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, len=irep->slen; fprintf(fp, "static const mrb_sym %s_syms_%d[%d] = {", name, n, len); for (i=0; isyms[i], fp) != MRB_DUMP_OK) - return MRB_DUMP_INVALID_ARGUMENT; + dump_sym(mrb, irep->syms[i], fp); } fputs("};\n", fp); } @@ -1078,13 +1027,17 @@ dump_irep_struct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, fprintf(fp, "0x%02x,", irep->iseq[i]); } fputs("};\n", fp); - /* dump irep */ - if (n == 0) { /* topleve irep */ - fprintf(fp, "static const mrb_irep %s = {\n", name); - } - else { - fprintf(fp, "static const mrb_irep %s_irep_%d = {\n", name, n); + /* dump lv */ + if (irep->lv) { + len=irep->nlocals; + fprintf(fp, "static const struct mrb_lvinfo %s_lv_%d[%d] = {", name, n, len); + for (i=0; i+1lv[i].name, irep->lv[i].r); + } + fputs("};\n", fp); } + /* dump irep */ + fprintf(fp, "static const mrb_irep %s_irep_%d = {\n", name, n); fprintf(fp, " %d,%d,\n", irep->nlocals, irep->nregs); fprintf(fp, " MRB_IREP_STATIC,%s_iseq_%d,\n", name, n); if (irep->pool) { @@ -1105,9 +1058,14 @@ dump_irep_struct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, else { fputs( "NULL,\n", fp); } - fputs( " NULL,\t\t\t\t\t/* lv */\n", fp); + if (irep->lv) { + fprintf(fp, "%s_lv_%d,\n", name, n); + } + else { + fputs( " NULL,\t\t\t\t\t/* lv */\n", fp); + } fputs( " NULL,\t\t\t\t\t/* debug_info */\n", fp); - fprintf(fp, " %d,%d,%d,%d,0\n};", irep->ilen, irep->plen, irep->slen, irep->rlen); + fprintf(fp, " %d,%d,%d,%d,0\n};\n", irep->ilen, irep->plen, irep->slen, irep->rlen); return MRB_DUMP_OK; } @@ -1116,13 +1074,20 @@ int mrb_dump_irep_cstruct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, const char *initname) { int max = 1; + int n; + if (fp == NULL || initname == NULL || initname[0] == '\0') { return MRB_DUMP_INVALID_ARGUMENT; } - if (fprintf(fp, "#include \n" "#include \n\n") < 0) { + if (fprintf(fp, "#include \n" "#include \n\n") < 0) { return MRB_DUMP_WRITE_FAULT; } - return dump_irep_struct(mrb, irep, flags, fp, initname, 0, &max); + n = dump_irep_struct(mrb, irep, flags, fp, initname, 0, &max); + if (n != MRB_DUMP_OK) return n; + fprintf(fp, "#ifdef __cplusplus\nextern struct RProc %s[];\n#endif\n", initname); + fprintf(fp, "struct RProc %s[] = {{\n", initname); + fprintf(fp, "NULL,NULL,MRB_TT_PROC,7,0,{&%s_irep_0},NULL,{NULL},\n}};\n", initname); + return MRB_DUMP_OK; } #endif /* MRB_DISABLE_STDIO */ diff --git a/src/gc.c b/src/gc.c index 897fa256f..4bee82364 100644 --- a/src/gc.c +++ b/src/gc.c @@ -35,6 +35,11 @@ * Gray - Marked, But the child objects are unmarked. * Black - Marked, the child objects are also marked. + Extra color + + * Red - Static (ROM object) no need to be collected. + - All child objects should be Red as well. + == Two White Types There're two white color types in a flip-flop fashion: White-A and White-B, @@ -185,6 +190,7 @@ gettimeofday_time(void) #define GC_WHITE_A 1 #define GC_WHITE_B (1 << 1) #define GC_BLACK (1 << 2) +#define GC_RED 7 #define GC_WHITES (GC_WHITE_A | GC_WHITE_B) #define GC_COLOR_MASK 7 @@ -194,7 +200,8 @@ gettimeofday_time(void) #define paint_partial_white(s, o) ((o)->color = (s)->current_white_part) #define is_gray(o) ((o)->color == GC_GRAY) #define is_white(o) ((o)->color & GC_WHITES) -#define is_black(o) ((o)->color & GC_BLACK) +#define is_black(o) ((o)->color == GC_BLACK) +#define is_red(o) ((o)->color == GC_RED) #define flip_white_part(s) ((s)->current_white_part = other_white_part(s)) #define other_white_part(s) ((s)->current_white_part ^ GC_WHITES) #define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE) @@ -584,7 +591,7 @@ add_gray_list(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj) static int ci_nregs(mrb_callinfo *ci) { - struct RProc *p = ci->proc; + const struct RProc *p = ci->proc; int n = 0; if (!p) { diff --git a/src/kernel.c b/src/kernel.c index 519052f4b..e4948143d 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -19,7 +19,7 @@ mrb_func_basic_p(mrb_state *mrb, mrb_value obj, mrb_sym mid, mrb_func_t func) { struct RClass *c = mrb_class(mrb, obj); mrb_method_t m = mrb_method_search_vm(mrb, &c, mid); - struct RProc *p; + const struct RProc *p; if (MRB_METHOD_UNDEF_P(m)) return FALSE; if (MRB_METHOD_FUNC_P(m)) @@ -143,7 +143,7 @@ mrb_f_block_given_p_m(mrb_state *mrb, mrb_value self) mrb_value *bp; int bidx; struct REnv *e = NULL; - struct RProc *p; + const struct RProc *p; if (ci <= cibase) { /* toplevel does not have block */ diff --git a/src/load.c b/src/load.c index 39644c34b..31059e833 100644 --- a/src/load.c +++ b/src/load.c @@ -676,6 +676,12 @@ mrb_load_irep_buf(mrb_state *mrb, const void *buf, size_t bufsize) return mrb_load_irep_buf_cxt(mrb, buf, bufsize, NULL); } +MRB_API mrb_value +mrb_load_proc(mrb_state *mrb, const struct RProc *proc) +{ + return mrb_vm_run(mrb, proc, mrb_top_self(mrb), 0); +} + #ifndef MRB_DISABLE_STDIO mrb_irep* diff --git a/src/proc.c b/src/proc.c index 2da2ec77e..14ba407d8 100644 --- a/src/proc.c +++ b/src/proc.c @@ -80,7 +80,7 @@ static void closure_setup(mrb_state *mrb, struct RProc *p) { mrb_callinfo *ci = mrb->c->ci; - struct RProc *up = p->upper; + const struct RProc *up = p->upper; struct REnv *e = NULL; if (ci && ci->env) { @@ -170,7 +170,7 @@ mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int nlocals) MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx) { - struct RProc *p = mrb->c->ci->proc; + const struct RProc *p = mrb->c->ci->proc; struct REnv *e; if (!p || !MRB_PROC_CFUNC_P(p)) { diff --git a/src/symbol.c b/src/symbol.c index 9981bad7c..3723335cd 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -330,6 +330,15 @@ mrb_sym_name_len(mrb_state *mrb, mrb_sym sym, mrb_int *lenp) return sym2name_len(mrb, sym, mrb->symbuf, lenp); } +mrb_bool +mrb_sym_static_p(mrb_state *mrb, mrb_sym sym) +{ + if (SYMBOL_INLINE_P(sym)) return TRUE; + sym >>= SYMBOL_NORMAL_SHIFT; + if (sym > MRB_PRESYM_MAX) return FALSE; + return TRUE; +} + void mrb_free_symtbl(mrb_state *mrb) { diff --git a/src/variable.c b/src/variable.c index 8fcbd6427..526d88c80 100644 --- a/src/variable.c +++ b/src/variable.c @@ -741,11 +741,11 @@ mrb_vm_cv_get(mrb_state *mrb, mrb_sym sym) { struct RClass *c; - struct RProc *p = mrb->c->ci->proc; + const struct RProc *p = mrb->c->ci->proc; for (;;) { c = MRB_PROC_TARGET_CLASS(p); - if (c->tt != MRB_TT_SCLASS) break; + if (c && c->tt != MRB_TT_SCLASS) break; p = p->upper; } return mrb_mod_cv_get(mrb, c, sym); @@ -755,11 +755,11 @@ void mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v) { struct RClass *c; - struct RProc *p = mrb->c->ci->proc; + const struct RProc *p = mrb->c->ci->proc; for (;;) { c = MRB_PROC_TARGET_CLASS(p); - if (c->tt != MRB_TT_SCLASS) break; + if (c && c->tt != MRB_TT_SCLASS) break; p = p->upper; } mrb_mod_cv_set(mrb, c, sym, v); @@ -817,9 +817,10 @@ mrb_vm_const_get(mrb_state *mrb, mrb_sym sym) struct RClass *c; struct RClass *c2; mrb_value v; - struct RProc *proc; + const struct RProc *proc; c = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc); + if (!c) c = mrb->object_class; if (iv_get(mrb, c->iv, sym, &v)) { return v; } @@ -862,6 +863,7 @@ mrb_vm_const_set(mrb_state *mrb, mrb_sym sym, mrb_value v) struct RClass *c; c = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc); + if (!c) c = mrb->object_class; mrb_obj_iv_set(mrb, (struct RObject*)c, sym, v); } diff --git a/src/vm.c b/src/vm.c index c3fa12d3d..62805b7ed 100644 --- a/src/vm.c +++ b/src/vm.c @@ -224,7 +224,7 @@ mrb_stack_extend(mrb_state *mrb, mrb_int room) static inline struct REnv* uvenv(mrb_state *mrb, int up) { - struct RProc *proc = mrb->c->ci->proc; + const struct RProc *proc = mrb->c->ci->proc; struct REnv *e; while (up--) { @@ -247,8 +247,8 @@ uvenv(mrb_state *mrb, int up) return NULL; } -static inline struct RProc* -top_proc(mrb_state *mrb, struct RProc *proc) +static inline const struct RProc* +top_proc(mrb_state *mrb, const struct RProc *proc) { while (proc->upper) { if (MRB_PROC_SCOPE_P(proc) || MRB_PROC_STRICT_P(proc)) @@ -327,7 +327,7 @@ cipop(mrb_state *mrb) } void mrb_exc_set(mrb_state *mrb, mrb_value exc); -static mrb_value mrb_run(mrb_state *mrb, struct RProc* proc, mrb_value self); +static mrb_value mrb_run(mrb_state *mrb, const struct RProc* proc, mrb_value self); static void ecall(mrb_state *mrb) @@ -423,7 +423,7 @@ mrb_funcall_id(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc, ...) static int ci_nregs(mrb_callinfo *ci) { - struct RProc *p; + const struct RProc *p; int n = 0; if (!ci) return 3; @@ -821,7 +821,7 @@ mrb_yield_cont(mrb_state *mrb, mrb_value b, mrb_value self, mrb_int argc, const } static struct RBreak* -break_new(mrb_state *mrb, struct RProc *p, mrb_value val) +break_new(mrb_state *mrb, const struct RProc *p, mrb_value val) { struct RBreak *brk; @@ -918,7 +918,7 @@ argnum_error(mrb_state *mrb, mrb_int num) #endif MRB_API mrb_value -mrb_vm_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep) +mrb_vm_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, unsigned int stack_keep) { const mrb_irep *irep = proc->body.irep; mrb_value result; @@ -961,7 +961,7 @@ check_target_class(mrb_state *mrb) void mrb_hash_check_kdict(mrb_state *mrb, mrb_value self); MRB_API mrb_value -mrb_vm_exec(mrb_state *mrb, struct RProc *proc, const mrb_code *pc) +mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *pc) { /* mrb_assert(MRB_PROC_CFUNC_P(proc)) */ const mrb_code *pc0 = pc; @@ -1534,7 +1534,7 @@ RETRY_TRY_BLOCK: struct RClass *cls; mrb_callinfo *ci = mrb->c->ci; mrb_value recv, blk; - struct RProc *p = ci->proc; + const struct RProc *p = ci->proc; mrb_sym mid = ci->mid; struct RClass* target_class = MRB_PROC_TARGET_CLASS(p); @@ -1975,7 +1975,7 @@ RETRY_TRY_BLOCK: else { int acc; mrb_value v; - struct RProc *dst; + const struct RProc *dst; ci = mrb->c->ci; v = regs[a]; @@ -2612,6 +2612,7 @@ RETRY_TRY_BLOCK: super = regs[a+1]; if (mrb_nil_p(base)) { baseclass = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc); + if (!baseclass) baseclass = mrb->object_class; base = mrb_obj_value(baseclass); } c = mrb_vm_define_class(mrb, base, super, id); @@ -2628,6 +2629,7 @@ RETRY_TRY_BLOCK: base = regs[a]; if (mrb_nil_p(base)) { baseclass = MRB_PROC_TARGET_CLASS(mrb->c->ci->proc); + if (!baseclass) baseclass = mrb->object_class; base = mrb_obj_value(baseclass); } cls = mrb_vm_define_module(mrb, base, id); @@ -2782,7 +2784,7 @@ RETRY_TRY_BLOCK: } static mrb_value -mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) +mrb_run(mrb_state *mrb, const struct RProc *proc, mrb_value self) { if (mrb->c->ci->argc < 0) { return mrb_vm_run(mrb, proc, self, 3); /* receiver, args and block) */ @@ -2793,7 +2795,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) } MRB_API mrb_value -mrb_top_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep) +mrb_top_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, unsigned int stack_keep) { mrb_value v; diff --git a/test/presym b/test/presym new file mode 100644 index 000000000..1e551143b --- /dev/null +++ b/test/presym @@ -0,0 +1,4 @@ +# List of symbols that cannot be detected by Rakefile +# Those symbols are not defined (to cause exceptions) +doesNotExistAsAMethodNameForVerySure +UnknownConstant -- cgit v1.2.3 From ee111dd175f3242649d87a4600e2bad62e8e0940 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 15 Jun 2020 08:55:48 +0900 Subject: Clarify the use of `MRB_64BIT` and `MRB_INT64` in `dump.c` and `load.c`. - `MRB_64BIT`: the size of a pointer is 64 bits - `MRB_INT64`: the size of `mrb_int` is 64 bits --- include/mruby/irep.h | 2 +- mrbgems/mruby-compiler/core/codegen.c | 2 +- src/codedump.c | 2 +- src/dump.c | 6 +++--- src/load.c | 8 ++++---- src/vm.c | 8 +++++++- 6 files changed, 17 insertions(+), 11 deletions(-) (limited to 'src/load.c') diff --git a/include/mruby/irep.h b/include/mruby/irep.h index 64a38227c..ede6780e6 100644 --- a/include/mruby/irep.h +++ b/include/mruby/irep.h @@ -32,7 +32,7 @@ typedef struct mrb_pool_value { union { const char *str; int32_t i32; -#ifdef MRB_INT64 +#ifdef MRB_64BIT int64_t i64; #endif mrb_float f; diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 5d29dcb2d..25e157736 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -588,7 +588,7 @@ new_lit(codegen_scope *s, mrb_value val) if (pv->tt == IREP_TT_INT32) { if (v == pv->u.i32) return i; } -#ifdef MRB_INT64 +#ifdef MRB_64BIT else if (pv->tt == IREP_TT_INT64) { if (v == pv->u.i64) return i; } diff --git a/src/codedump.c b/src/codedump.c index fd73f3104..0e90f22db 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -122,7 +122,7 @@ codedump(mrb_state *mrb, const mrb_irep *irep) case IREP_TT_INT32: printf("OP_LOADL\tR%d\tL(%d)\t; %" PRId32, a, b, irep->pool[b].u.i32); break; -#ifdef MRB_INT64 +#ifdef MRB_64BIT case IREP_TT_INT64: printf("OP_LOADL\tR%d\tL(%d)\t; %" PRId64, a, b, irep->pool[b].u.i64); break; diff --git a/src/dump.c b/src/dump.c index c0c349d68..31dceb593 100644 --- a/src/dump.c +++ b/src/dump.c @@ -113,7 +113,7 @@ get_pool_block_size(mrb_state *mrb, const mrb_irep *irep) switch (irep->pool[pool_no].tt) { case IREP_TT_INT64: -#ifdef MRB_INT64 +#ifdef MRB_64BIT { int64_t i = irep->pool[pool_no].u.i64; @@ -169,7 +169,7 @@ write_pool_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) int ai = mrb_gc_arena_save(mrb); switch (irep->pool[pool_no].tt) { -#ifdef MRB_INT64 +#ifdef MRB_64BIT case IREP_TT_INT64: { int64_t i = irep->pool[pool_no].u.i64; @@ -938,7 +938,7 @@ dump_pool(mrb_state *mrb, const mrb_pool_value *p, FILE *fp) case IREP_TT_INT32: fprintf(fp, "{IREP_TT_INT32, {.i32=%"PRId32"}},\n", p->u.i32); break; -#ifdef MRB_INT64 +#ifdef MRB_64BIT case IREP_TT_INT64: fprintf(fp, "{IREP_TT_INT64, {.i64=%"PRId64"}},\n", p->u.i64); break; diff --git a/src/load.c b/src/load.c index 31059e833..766aa0648 100644 --- a/src/load.c +++ b/src/load.c @@ -137,7 +137,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag { mrb_int v = (int32_t)bin_to_uint32(src); src += sizeof(uint32_t); -#ifdef MRB_INT64 +#ifdef MRB_64BIT pool[i].tt = IREP_TT_INT64; pool[i].u.i64 = (int64_t)v; #else @@ -147,7 +147,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag } break; case IREP_TT_INT64: -#ifdef MRB_INT64 +#ifdef MRB_64BIT { uint64_t i = bin_to_uint32(src); src += sizeof(uint32_t); @@ -156,10 +156,10 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag src += sizeof(uint32_t); pool[i].u.i64 = (int64_t)i; } + break; #else - return NULL; /* INT64 not supported on MRB_INT32 */ + return NULL; /* INT64 not supported on MRB_32BIT */ #endif - break; case IREP_TT_FLOAT: #ifndef MRB_WITHOUT_FLOAT diff --git a/src/vm.c b/src/vm.c index 62805b7ed..98f17e287 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1017,10 +1017,16 @@ RETRY_TRY_BLOCK: case IREP_TT_INT32: regs[a] = mrb_fixnum_value((mrb_int)pool[b].u.i32); break; -#ifdef MRB_INT64 case IREP_TT_INT64: +#if defined(MRB_INT64) && defined(MRB_64BIT) regs[a] = mrb_fixnum_value((mrb_int)pool[b].u.i64); break; +#else + { + mrb_value exc = mrb_exc_new_str_lit(mrb, E_RUNTIME_ERROR, "integer overflow"); + mrb_exc_set(mrb, exc); + } + goto L_RAISE; #endif #ifndef MRB_WITHOUT_FLOAT case IREP_TT_FLOAT: -- cgit v1.2.3 From d2f267a13dcce67e45ef358e1f133362b0a1c12e Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 15 Jun 2020 15:56:42 +0900 Subject: Add casts to silence warnings. --- mrbgems/mruby-compiler/core/codegen.c | 5 +++-- src/dump.c | 8 ++++---- src/load.c | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) (limited to 'src/load.c') diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 25e157736..14b53d073 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -612,13 +613,13 @@ new_lit(codegen_scope *s, mrb_value val) switch (mrb_type(val)) { case MRB_TT_STRING: if (RSTR_NOFREE_P(RSTRING(val))) { - pv->tt = (RSTRING_LEN(val)<<2) | IREP_TT_SSTR; + pv->tt = (uint32_t)(RSTRING_LEN(val)<<2) | IREP_TT_SSTR; pv->u.str = RSTRING_PTR(val); } else { char *p; mrb_int len = RSTRING_LEN(val); - pv->tt = (len<<2) | IREP_TT_STR; + pv->tt = (uint32_t)(len<<2) | IREP_TT_STR; p = (char*)codegen_realloc(s, NULL, len+1); memcpy(p, RSTRING_PTR(val), len); p[len] = '\0'; diff --git a/src/dump.c b/src/dump.c index 31dceb593..c9b5ccc9d 100644 --- a/src/dump.c +++ b/src/dump.c @@ -160,7 +160,7 @@ write_pool_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) { int pool_no; uint8_t *cur = buf; - int len; + mrb_int len; const char *ptr; cur += uint16_to_bin(irep->plen, cur); /* number of pool */ @@ -936,11 +936,11 @@ dump_pool(mrb_state *mrb, const mrb_pool_value *p, FILE *fp) if (p->tt & IREP_TT_NFLAG) { /* number */ switch (p->tt) { case IREP_TT_INT32: - fprintf(fp, "{IREP_TT_INT32, {.i32=%"PRId32"}},\n", p->u.i32); + fprintf(fp, "{IREP_TT_INT32, {.i32=%" PRId32 "}},\n", p->u.i32); break; #ifdef MRB_64BIT case IREP_TT_INT64: - fprintf(fp, "{IREP_TT_INT64, {.i64=%"PRId64"}},\n", p->u.i64); + fprintf(fp, "{IREP_TT_INT64, {.i64=%" PRId64 "}},\n", p->u.i64); break; #endif case IREP_TT_FLOAT: @@ -948,7 +948,7 @@ dump_pool(mrb_state *mrb, const mrb_pool_value *p, FILE *fp) fprintf(fp, "{IREP_TT_FLOAT, {.f=%#.1f}},\n", p->u.f); } else { - fprintf(fp, "{IREP_TT_FLOAT, {.f="MRB_FLOAT_FMT"}},\n", p->u.f); + fprintf(fp, "{IREP_TT_FLOAT, {.f=" MRB_FLOAT_FMT "}},\n", p->u.f); } break; } diff --git a/src/load.c b/src/load.c index 766aa0648..45fe38736 100644 --- a/src/load.c +++ b/src/load.c @@ -242,8 +242,8 @@ read_irep_record(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flags) struct RData *irep_obj = mrb_data_object_alloc(mrb, mrb->object_class, NULL, &tempirep_type); int ai = mrb_gc_arena_save(mrb); mrb_irep *irep = read_irep_record_1(mrb, bin, len, flags); - int i; mrb_irep **reps; + int i; mrb_gc_arena_restore(mrb, ai); if (irep == NULL) { -- cgit v1.2.3 From 925cd2ab8fa87c5acd13cb095d43c2bc2b4d77bf Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 15 Jun 2020 23:37:32 +0900 Subject: Use `int` instead of `mrb_int` for arena index. --- src/load.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/load.c') diff --git a/src/load.c b/src/load.c index 45fe38736..0dc6e93fe 100644 --- a/src/load.c +++ b/src/load.c @@ -75,7 +75,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag struct RData *irep_obj = mrb_data_object_alloc(mrb, mrb->object_class, NULL, &tempirep_type); mrb_pool_value *pool; mrb_sym *syms; - mrb_int ai = mrb_gc_arena_save(mrb); + int ai = mrb_gc_arena_save(mrb); mrb_irep *irep = mrb_add_irep(mrb); irep_obj->data = irep; -- cgit v1.2.3 From dec34d6c7bc0849a469ab517ad5f24e9c3ab9e4b Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 6 Jun 2020 18:02:15 +0900 Subject: Split `MRB_BINARY_FORMAT` to major and minor. The minor versions should be upper compatible. So mere opcode, section addition can be done without breaking compiled binary. --- include/mruby/dump.h | 10 ++++++++-- src/dump.c | 3 ++- src/load.c | 7 ++++++- 3 files changed, 16 insertions(+), 4 deletions(-) (limited to 'src/load.c') diff --git a/include/mruby/dump.h b/include/mruby/dump.h index bad27fdf5..b8161e055 100644 --- a/include/mruby/dump.h +++ b/include/mruby/dump.h @@ -49,7 +49,12 @@ MRB_API mrb_irep *mrb_read_irep_buf(mrb_state*, const void*, size_t); /* Rite Binary File header */ #define RITE_BINARY_IDENT "RITE" -#define RITE_BINARY_FORMAT_VER "0007" +/* Binary Format Version Major:Minor */ +/* Major: Incompatible to prior versions */ +/* Minor: Upper-compatible to prior versions */ +#define RITE_BINARY_MAJOR_VER "01" +#define RITE_BINARY_MINOR_VER "00" +#define RITE_BINARY_FORMAT_VER RITE_BINARY_MAJOR_VER RITE_BINARY_MINOR_VER #define RITE_COMPILER_NAME "MATZ" #define RITE_COMPILER_VERSION "0000" @@ -66,7 +71,8 @@ MRB_API mrb_irep *mrb_read_irep_buf(mrb_state*, const void*, size_t); /* binary header */ struct rite_binary_header { uint8_t binary_ident[4]; /* Binary Identifier */ - uint8_t binary_version[4]; /* Binary Format Version */ + uint8_t major_version[2]; /* Binary Format Major Version */ + uint8_t minor_version[2]; /* Binary Format Minor Version */ uint8_t binary_crc[2]; /* Binary CRC */ uint8_t binary_size[4]; /* Binary Size */ uint8_t compiler_name[4]; /* Compiler name */ diff --git a/src/dump.c b/src/dump.c index c0f0ca0a8..8cd69cd29 100644 --- a/src/dump.c +++ b/src/dump.c @@ -726,7 +726,8 @@ write_rite_binary_header(mrb_state *mrb, size_t binary_size, uint8_t *bin, uint8 uint32_t offset; memcpy(header->binary_ident, RITE_BINARY_IDENT, sizeof(header->binary_ident)); - memcpy(header->binary_version, RITE_BINARY_FORMAT_VER, sizeof(header->binary_version)); + memcpy(header->major_version, RITE_BINARY_MAJOR_VER, sizeof(header->major_version)); + memcpy(header->minor_version, RITE_BINARY_MAJOR_VER, sizeof(header->minor_version)); memcpy(header->compiler_name, RITE_COMPILER_NAME, sizeof(header->compiler_name)); memcpy(header->compiler_version, RITE_COMPILER_VERSION, sizeof(header->compiler_version)); mrb_assert(binary_size <= UINT32_MAX); diff --git a/src/load.c b/src/load.c index 0dc6e93fe..2002af3ab 100644 --- a/src/load.c +++ b/src/load.c @@ -525,7 +525,12 @@ read_binary_header(const uint8_t *bin, size_t bufsize, size_t *bin_size, uint16_ return MRB_DUMP_INVALID_FILE_HEADER; } - if (memcmp(header->binary_version, RITE_BINARY_FORMAT_VER, sizeof(header->binary_version)) != 0) { + /* if major version is different, they are incompatible */ + if (memcmp(header->major_version, RITE_BINARY_MAJOR_VER, sizeof(header->major_version)) != 0) { + return MRB_DUMP_INVALID_FILE_HEADER; + } + /* if minor version is different, we can accept the older version */ + if (memcmp(header->minor_version, RITE_BINARY_MINOR_VER, sizeof(header->minor_version)) <= 0) { return MRB_DUMP_INVALID_FILE_HEADER; } -- cgit v1.2.3 From 3d8a38bea4de5ca3a65ec9bce9359b9c62326f9f Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 29 Jun 2020 08:34:56 +0900 Subject: You don't need to keep index in local variables info in `irep`. --- include/mrbconf.h | 7 + include/mruby/boxing_word.h | 3 +- include/mruby/irep.h | 7 +- mrbgems/mruby-compiler/core/codegen.c | 22 +- mrbgems/mruby-compiler/core/parse.y | 10 +- mrbgems/mruby-compiler/core/y.tab.c | 7974 +++++++++++++++++---------------- mrbgems/mruby-metaprog/src/metaprog.c | 4 +- mrbgems/mruby-proc-ext/src/proc.c | 4 +- src/codedump.c | 17 +- src/dump.c | 14 +- src/load.c | 12 +- 11 files changed, 4121 insertions(+), 3953 deletions(-) (limited to 'src/load.c') diff --git a/include/mrbconf.h b/include/mrbconf.h index 81ab36977..1cf72ece9 100644 --- a/include/mrbconf.h +++ b/include/mrbconf.h @@ -31,6 +31,13 @@ /* exclude floating point numbers */ //#define MRB_WITHOUT_FLOAT +/* stop inlining floating point numbers in mrb_value (effective only with MRB_WORD_BOXING)*/ +/* floating numbers are rounded to fit in 30 bits (float) and 62 bits respectively, */ +/* by inlining. If you need full precision of floating numbers on the platform, */ +/* you have to define this option. when mrb_int is 32bit and mrb_float is double, */ +/* this option is set automatically. */ +// #define MRB_NO_FLOAT_INLINE + /* add -DMRB_NO_METHOD_CACHE to disable method cache to save memory */ //#define MRB_NO_METHOD_CACHE /* size of the method cache (need to be the power of 2) */ diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h index 56202a420..6eae789fa 100644 --- a/include/mruby/boxing_word.h +++ b/include/mruby/boxing_word.h @@ -11,7 +11,7 @@ #error MRB_INT64 cannot be used with MRB_WORD_BOXING in 32-bit mode. #endif -#ifndef MRB_WITHOUT_FLOAT +#if !defined(MRB_WITHOUT_FLOAT) || defined(MRB_NO_FLOAT_INLINE) struct RFloat { MRB_OBJECT_HEADER; mrb_float f; @@ -64,6 +64,7 @@ enum mrb_special_consts { * undef : ...0001 0100 * fixnum: ...IIII III1 * symbol: ...SSSS SS10 (use only upper 32-bit as symbol value on 64-bit CPU) + * symbol: ...SSSS SS10 (use only upper 32-bit as symbol value on 64-bit CPU) * object: ...PPPP P000 (any bits are 1) */ typedef union mrb_value { diff --git a/include/mruby/irep.h b/include/mruby/irep.h index 5d860273f..0a5b3f1a3 100644 --- a/include/mruby/irep.h +++ b/include/mruby/irep.h @@ -39,11 +39,6 @@ typedef struct mrb_pool_value { } u; } mrb_pool_value; -struct mrb_lvinfo { /* local variable info (name, idx) */ - mrb_sym name; - uint16_t r; -}; - /* Program data array struct */ typedef struct mrb_irep { uint16_t nlocals; /* Number of local variables */ @@ -55,7 +50,7 @@ typedef struct mrb_irep { const mrb_sym *syms; const struct mrb_irep * const *reps; - const struct mrb_lvinfo *lv; + const mrb_sym *lv; /* debug info */ struct mrb_irep_debug_info* debug_info; diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 9da80536b..191895668 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -677,10 +677,12 @@ search_upvar(codegen_scope *s, mrb_sym id, int *idx) while (u && !MRB_PROC_CFUNC_P(u)) { const struct mrb_irep *ir = u->body.irep; uint_fast16_t n = ir->nlocals; - const struct mrb_lvinfo *v = ir->lv; - for (; n > 1; n --, v ++) { - if (v->name == id) { - *idx = v->r; + int i; + + const mrb_sym *v = ir->lv; + for (i=1; n > 1; n--, v++, i++) { + if (*v == id) { + *idx = i; return lv - 1; } } @@ -3035,19 +3037,13 @@ scope_new(mrb_state *mrb, codegen_scope *prev, node *nlv) s->sp += node_len(nlv)+1; /* add self */ s->nlocals = s->sp; if (nlv) { - struct mrb_lvinfo *lv; + mrb_sym *lv; node *n = nlv; size_t i = 0; - s->irep->lv = lv = (struct mrb_lvinfo*)mrb_malloc(mrb, sizeof(struct mrb_lvinfo)*(s->nlocals-1)); + s->irep->lv = lv = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym)*(s->nlocals-1)); for (i=0, n=nlv; n; i++,n=n->cdr) { - lv[i].name = lv_name(n); - if (lv_name(n)) { - lv[i].r = lv_idx(s, lv_name(n)); - } - else { - lv[i].r = 0; - } + lv[i] = lv_name(n); } mrb_assert(i + 1 == s->nlocals); } diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 2ff66be60..c67c694fe 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -280,10 +280,12 @@ local_var_p(parser_state *p, mrb_sym sym) u = p->upper; while (u && !MRB_PROC_CFUNC_P(u)) { const struct mrb_irep *ir = u->body.irep; - uint_fast16_t n = ir->nlocals; - const struct mrb_lvinfo *v = ir->lv; - for (; v && n > 1; n--, v++) { - if (v->name == sym) return TRUE; + const mrb_sym *v = ir->lv; + int i; + + if (!v) break; + for (i=0; i < ir->nlocals; i++) { + if (v[i] == sym) return TRUE; } if (MRB_PROC_SCOPE_P(u)) break; u = u->upper; diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index dbcc6a5bd..096543349 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -343,10 +343,12 @@ local_var_p(parser_state *p, mrb_sym sym) u = p->upper; while (u && !MRB_PROC_CFUNC_P(u)) { const struct mrb_irep *ir = u->body.irep; - uint_fast16_t n = ir->nlocals; - const struct mrb_lvinfo *v = ir->lv; - for (; v && n > 1; n--, v++) { - if (v->name == sym) return TRUE; + const mrb_sym *v = ir->lv; + int i; + + if (!v) break; + for (i=0; i < ir->nlocals; i++) { + if (v[i] == sym) return TRUE; } if (MRB_PROC_SCOPE_P(u)) break; u = u->upper; @@ -793,7 +795,19 @@ new_module(parser_state *p, node *m, node *b) static node* new_def(parser_state *p, mrb_sym m, node *a, node *b) { - return list5((node*)NODE_DEF, nsym(m), locals_node(p), a, b); + return list5((node*)NODE_DEF, nsym(m), 0, a, b); +} + +static void +defn_setup(parser_state *p, node *d, node *a, node *b) +{ + node *n = d->cdr->cdr; + + n->car = locals_node(p); + p->cmdarg_stack = intn(n->cdr->car); + n->cdr->car = a; + local_resume(p, n->cdr->cdr->car); + n->cdr->cdr->car = b; } /* (:sdef obj m lv (arg . body)) */ @@ -801,7 +815,19 @@ static node* new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b) { void_expr_error(p, o); - return list6((node*)NODE_SDEF, o, nsym(m), locals_node(p), a, b); + return list6((node*)NODE_SDEF, o, nsym(m), 0, a, b); +} + +static void +defs_setup(parser_state *p, node *d, node *a, node *b) +{ + node *n = d->cdr->cdr->cdr; + + n->car = locals_node(p); + p->cmdarg_stack = intn(n->cdr->car); + n->cdr->car = a; + local_resume(p, n->cdr->cdr->car); + n->cdr->cdr->car = b; } /* (:arg . sym) */ @@ -1404,7 +1430,7 @@ heredoc_end(parser_state *p) /* xxx ----------------------------- */ -#line 1408 "mrbgems/mruby-compiler/core/y.tab.c" +#line 1434 "mrbgems/mruby-compiler/core/y.tab.c" # ifndef YY_CAST # ifdef __cplusplus @@ -1574,7 +1600,7 @@ extern int yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 1350 "mrbgems/mruby-compiler/core/parse.y" +#line 1376 "mrbgems/mruby-compiler/core/parse.y" node *nd; mrb_sym id; @@ -1582,7 +1608,7 @@ union YYSTYPE stack_type stack; const struct vtable *vars; -#line 1586 "mrbgems/mruby-compiler/core/y.tab.c" +#line 1612 "mrbgems/mruby-compiler/core/y.tab.c" }; typedef union YYSTYPE YYSTYPE; @@ -1900,16 +1926,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 11586 +#define YYLAST 11948 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 147 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 176 +#define YYNNTS 177 /* YYNRULES -- Number of rules. */ -#define YYNRULES 594 +#define YYNRULES 603 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1034 +#define YYNSTATES 1054 #define YYUNDEFTOK 2 #define YYMAXUTOK 375 @@ -1968,66 +1994,67 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 1508, 1508, 1508, 1519, 1525, 1529, 1534, 1538, 1544, - 1546, 1545, 1559, 1586, 1592, 1596, 1601, 1605, 1611, 1611, - 1615, 1619, 1623, 1627, 1631, 1635, 1639, 1644, 1645, 1649, - 1653, 1657, 1661, 1664, 1668, 1672, 1676, 1680, 1684, 1689, - 1693, 1700, 1701, 1705, 1709, 1710, 1714, 1718, 1722, 1726, - 1729, 1738, 1739, 1742, 1743, 1750, 1749, 1764, 1768, 1773, - 1777, 1782, 1786, 1791, 1795, 1799, 1803, 1807, 1813, 1817, - 1823, 1824, 1830, 1834, 1838, 1842, 1846, 1850, 1854, 1858, - 1862, 1866, 1872, 1873, 1879, 1883, 1889, 1893, 1899, 1903, - 1907, 1911, 1915, 1919, 1925, 1931, 1938, 1942, 1946, 1950, - 1954, 1958, 1964, 1970, 1975, 1981, 1985, 1988, 1992, 1996, - 2003, 2004, 2005, 2006, 2011, 2018, 2019, 2022, 2026, 2026, - 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, - 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, - 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, - 2064, 2064, 2064, 2065, 2065, 2066, 2066, 2066, 2067, 2067, - 2067, 2067, 2068, 2068, 2068, 2069, 2069, 2069, 2070, 2070, - 2070, 2070, 2071, 2071, 2071, 2071, 2072, 2072, 2072, 2072, - 2073, 2073, 2073, 2073, 2074, 2074, 2074, 2074, 2075, 2075, - 2078, 2082, 2086, 2090, 2094, 2098, 2102, 2107, 2112, 2117, - 2121, 2125, 2129, 2133, 2137, 2141, 2145, 2149, 2153, 2157, - 2161, 2165, 2169, 2173, 2177, 2181, 2185, 2189, 2193, 2197, + 0, 1534, 1534, 1534, 1545, 1551, 1555, 1560, 1564, 1570, + 1572, 1571, 1585, 1612, 1618, 1622, 1627, 1631, 1637, 1637, + 1641, 1645, 1649, 1653, 1657, 1661, 1665, 1670, 1671, 1675, + 1679, 1683, 1687, 1688, 1691, 1696, 1701, 1705, 1711, 1715, + 1719, 1723, 1727, 1731, 1736, 1740, 1747, 1748, 1752, 1756, + 1757, 1761, 1765, 1769, 1773, 1777, 1787, 1786, 1801, 1810, + 1811, 1814, 1815, 1822, 1821, 1836, 1840, 1845, 1849, 1854, + 1858, 1863, 1867, 1871, 1875, 1879, 1885, 1889, 1895, 1896, + 1902, 1906, 1910, 1914, 1918, 1922, 1926, 1930, 1934, 1938, + 1944, 1945, 1951, 1955, 1961, 1965, 1971, 1975, 1979, 1983, + 1987, 1991, 1997, 2003, 2010, 2014, 2018, 2022, 2026, 2030, + 2036, 2042, 2047, 2053, 2057, 2060, 2064, 2068, 2075, 2076, + 2077, 2078, 2083, 2090, 2091, 2094, 2098, 2098, 2104, 2105, + 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, + 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, + 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2136, 2136, + 2136, 2137, 2137, 2138, 2138, 2138, 2139, 2139, 2139, 2139, + 2140, 2140, 2140, 2141, 2141, 2141, 2142, 2142, 2142, 2142, + 2143, 2143, 2143, 2143, 2144, 2144, 2144, 2144, 2145, 2145, + 2145, 2145, 2146, 2146, 2146, 2146, 2147, 2147, 2150, 2154, + 2158, 2162, 2166, 2170, 2174, 2179, 2184, 2189, 2193, 2197, 2201, 2205, 2209, 2213, 2217, 2221, 2225, 2229, 2233, 2237, - 2241, 2245, 2249, 2255, 2256, 2261, 2265, 2272, 2276, 2284, - 2288, 2314, 2315, 2318, 2319, 2320, 2325, 2330, 2337, 2343, - 2348, 2353, 2358, 2365, 2365, 2376, 2382, 2386, 2392, 2393, - 2396, 2402, 2408, 2413, 2420, 2425, 2430, 2437, 2438, 2439, - 2440, 2441, 2442, 2443, 2444, 2448, 2453, 2452, 2464, 2468, - 2463, 2473, 2473, 2477, 2481, 2485, 2489, 2494, 2499, 2503, - 2507, 2511, 2515, 2519, 2520, 2526, 2532, 2525, 2544, 2552, - 2560, 2560, 2560, 2567, 2567, 2567, 2574, 2580, 2585, 2587, - 2584, 2596, 2594, 2612, 2617, 2610, 2634, 2632, 2649, 2653, - 2648, 2670, 2676, 2669, 2693, 2697, 2701, 2705, 2711, 2718, - 2719, 2720, 2723, 2724, 2727, 2728, 2736, 2737, 2743, 2747, - 2750, 2754, 2758, 2762, 2767, 2771, 2775, 2779, 2785, 2784, - 2794, 2798, 2802, 2806, 2812, 2817, 2822, 2826, 2830, 2834, - 2838, 2842, 2846, 2850, 2854, 2858, 2862, 2866, 2870, 2874, - 2878, 2884, 2889, 2896, 2896, 2900, 2905, 2912, 2916, 2922, - 2923, 2926, 2931, 2934, 2938, 2944, 2948, 2955, 2954, 2969, - 2979, 2983, 2988, 2995, 2999, 3003, 3007, 3011, 3015, 3019, - 3023, 3027, 3034, 3033, 3048, 3047, 3063, 3071, 3080, 3083, - 3090, 3093, 3097, 3098, 3101, 3105, 3108, 3112, 3115, 3116, - 3117, 3118, 3121, 3122, 3128, 3129, 3130, 3134, 3140, 3141, - 3147, 3152, 3151, 3162, 3166, 3172, 3176, 3182, 3186, 3192, - 3195, 3196, 3199, 3205, 3211, 3212, 3215, 3222, 3221, 3235, - 3239, 3246, 3251, 3258, 3264, 3265, 3266, 3267, 3268, 3272, - 3278, 3282, 3288, 3289, 3290, 3294, 3300, 3304, 3308, 3312, - 3316, 3322, 3326, 3332, 3336, 3340, 3344, 3348, 3352, 3360, - 3367, 3378, 3379, 3383, 3387, 3386, 3402, 3408, 3426, 3432, - 3438, 3444, 3451, 3456, 3463, 3467, 3473, 3477, 3483, 3484, - 3487, 3491, 3497, 3501, 3505, 3509, 3515, 3520, 3525, 3529, - 3533, 3537, 3541, 3545, 3549, 3553, 3557, 3561, 3565, 3569, - 3573, 3577, 3582, 3588, 3593, 3598, 3603, 3608, 3615, 3619, - 3626, 3631, 3630, 3642, 3646, 3652, 3660, 3668, 3676, 3680, - 3686, 3690, 3696, 3697, 3700, 3705, 3712, 3713, 3716, 3722, - 3726, 3732, 3737, 3737, 3762, 3763, 3769, 3774, 3780, 3781, - 3784, 3790, 3795, 3805, 3812, 3813, 3814, 3817, 3818, 3819, - 3820, 3823, 3824, 3825, 3828, 3829, 3832, 3836, 3842, 3843, - 3849, 3850, 3853, 3854, 3857, 3860, 3861, 3862, 3865, 3866, - 3867, 3870, 3877, 3878, 3882 + 2241, 2245, 2249, 2253, 2257, 2261, 2265, 2269, 2273, 2277, + 2281, 2285, 2289, 2293, 2297, 2301, 2305, 2309, 2313, 2317, + 2321, 2329, 2338, 2347, 2357, 2363, 2364, 2369, 2373, 2380, + 2384, 2392, 2396, 2422, 2423, 2426, 2427, 2428, 2433, 2438, + 2445, 2451, 2456, 2461, 2466, 2473, 2473, 2484, 2490, 2494, + 2500, 2501, 2504, 2510, 2516, 2521, 2528, 2533, 2538, 2545, + 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2556, 2561, 2560, + 2572, 2576, 2571, 2581, 2581, 2585, 2589, 2593, 2597, 2602, + 2607, 2611, 2615, 2619, 2623, 2627, 2628, 2634, 2640, 2633, + 2652, 2660, 2668, 2668, 2668, 2675, 2675, 2675, 2682, 2688, + 2693, 2695, 2692, 2704, 2702, 2720, 2725, 2718, 2742, 2740, + 2756, 2766, 2777, 2781, 2785, 2789, 2795, 2802, 2803, 2804, + 2807, 2808, 2811, 2812, 2820, 2821, 2827, 2831, 2834, 2838, + 2842, 2846, 2851, 2855, 2859, 2863, 2869, 2868, 2878, 2882, + 2886, 2890, 2896, 2901, 2906, 2910, 2914, 2918, 2922, 2926, + 2930, 2934, 2938, 2942, 2946, 2950, 2954, 2958, 2962, 2968, + 2973, 2980, 2980, 2984, 2989, 2996, 3000, 3006, 3007, 3010, + 3015, 3018, 3022, 3028, 3032, 3039, 3038, 3053, 3063, 3067, + 3072, 3079, 3083, 3087, 3091, 3095, 3099, 3103, 3107, 3111, + 3118, 3117, 3132, 3131, 3147, 3155, 3164, 3167, 3174, 3177, + 3181, 3182, 3185, 3189, 3192, 3196, 3199, 3200, 3201, 3202, + 3205, 3206, 3212, 3213, 3214, 3218, 3224, 3225, 3231, 3236, + 3235, 3246, 3250, 3256, 3260, 3266, 3270, 3276, 3279, 3280, + 3283, 3289, 3295, 3296, 3299, 3306, 3305, 3319, 3323, 3330, + 3335, 3342, 3348, 3349, 3350, 3351, 3352, 3356, 3362, 3366, + 3372, 3373, 3374, 3378, 3384, 3388, 3392, 3396, 3400, 3406, + 3410, 3416, 3420, 3424, 3428, 3432, 3436, 3444, 3451, 3462, + 3463, 3467, 3471, 3470, 3486, 3492, 3512, 3513, 3519, 3525, + 3531, 3538, 3543, 3550, 3554, 3560, 3564, 3570, 3571, 3574, + 3578, 3584, 3588, 3592, 3596, 3602, 3607, 3612, 3616, 3620, + 3624, 3628, 3632, 3636, 3640, 3644, 3648, 3652, 3656, 3660, + 3664, 3669, 3675, 3680, 3685, 3690, 3695, 3702, 3706, 3713, + 3718, 3717, 3729, 3733, 3739, 3747, 3755, 3763, 3767, 3773, + 3777, 3783, 3784, 3787, 3792, 3799, 3800, 3803, 3809, 3813, + 3819, 3824, 3824, 3849, 3850, 3856, 3861, 3867, 3868, 3871, + 3877, 3882, 3892, 3899, 3900, 3901, 3904, 3905, 3906, 3907, + 3910, 3911, 3912, 3915, 3916, 3919, 3923, 3929, 3930, 3936, + 3937, 3940, 3941, 3944, 3947, 3948, 3949, 3952, 3953, 3954, + 3957, 3964, 3965, 3969 }; #endif @@ -2065,33 +2092,33 @@ static const char *const yytname[] = "'~'", "tLAST_TOKEN", "'{'", "'}'", "'['", "']'", "','", "'`'", "'('", "')'", "';'", "'.'", "'\\n'", "$accept", "program", "$@1", "top_compstmt", "top_stmts", "top_stmt", "@2", "bodystmt", "compstmt", - "stmts", "stmt", "$@3", "command_asgn", "command_rhs", "expr", - "expr_value", "command_call", "block_command", "cmd_brace_block", "$@4", - "command", "mlhs", "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_list", - "mlhs_post", "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", - "undef_list", "$@5", "op", "reswords", "arg", "aref_args", "arg_rhs", - "paren_args", "opt_paren_args", "opt_call_args", "call_args", - "command_args", "@6", "block_arg", "opt_block_arg", "comma", "args", - "mrhs", "primary", "@7", "@8", "$@9", "$@10", "@11", "@12", "$@13", - "$@14", "$@15", "$@16", "$@17", "$@18", "@19", "@20", "@21", "@22", - "@23", "@24", "@25", "@26", "primary_value", "then", "do", "if_tail", - "opt_else", "for_var", "f_margs", "$@27", "block_args_tail", - "opt_block_args_tail", "block_param", "opt_block_param", - "block_param_def", "$@28", "opt_bv_decl", "bv_decls", "bvar", - "f_larglist", "lambda_body", "do_block", "$@29", "block_call", - "method_call", "brace_block", "@30", "@31", "case_body", "cases", + "stmts", "stmt", "$@3", "rassign", "command_asgn", "command_rhs", "expr", + "defn_head", "defs_head", "$@4", "expr_value", "command_call", + "block_command", "cmd_brace_block", "$@5", "command", "mlhs", + "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_list", "mlhs_post", + "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", "undef_list", + "$@6", "op", "reswords", "arg", "aref_args", "arg_rhs", "paren_args", + "opt_paren_args", "opt_call_args", "call_args", "command_args", "@7", + "block_arg", "opt_block_arg", "comma", "args", "mrhs", "primary", "@8", + "@9", "$@10", "$@11", "@12", "@13", "$@14", "$@15", "$@16", "$@17", + "$@18", "$@19", "@20", "@21", "@22", "@23", "primary_value", "then", + "do", "if_tail", "opt_else", "for_var", "f_margs", "$@24", + "block_args_tail", "opt_block_args_tail", "block_param", + "opt_block_param", "block_param_def", "$@25", "opt_bv_decl", "bv_decls", + "bvar", "f_larglist", "lambda_body", "do_block", "$@26", "block_call", + "method_call", "brace_block", "@27", "@28", "case_body", "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal", "string", - "string_fragment", "string_rep", "string_interp", "@32", "xstring", + "string_fragment", "string_rep", "string_interp", "@29", "xstring", "regexp", "heredoc", "heredoc_bodies", "heredoc_body", - "heredoc_string_rep", "heredoc_string_interp", "@33", "words", "symbol", + "heredoc_string_rep", "heredoc_string_interp", "@30", "words", "symbol", "basic_symbol", "sym", "symbols", "numeric", "variable", "var_lhs", - "var_ref", "backref", "superclass", "$@34", "f_arglist", "f_label", - "f_kw", "f_block_kw", "f_block_kwarg", "f_kwarg", "kwrest_mark", - "f_kwrest", "args_tail", "opt_args_tail", "f_args", "f_bad_arg", - "f_norm_arg", "f_arg_item", "@35", "f_arg", "f_opt_asgn", "f_opt", - "f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark", + "var_ref", "backref", "superclass", "$@31", "f_arglist_paren", + "f_arglist", "f_label", "f_kw", "f_block_kw", "f_block_kwarg", "f_kwarg", + "kwrest_mark", "f_kwrest", "args_tail", "opt_args_tail", "f_args", + "f_bad_arg", "f_norm_arg", "f_arg_item", "@32", "f_arg", "f_opt_asgn", + "f_opt", "f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark", "f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg", - "singleton", "$@36", "assoc_list", "assocs", "label_tag", "assoc", + "singleton", "$@33", "assoc_list", "assocs", "label_tag", "assoc", "operation", "operation2", "operation3", "dot_or_colon", "call_op", "call_op2", "opt_terms", "opt_nl", "rparen", "trailer", "term", "nl", "terms", "none", YY_NULLPTR @@ -2121,12 +2148,12 @@ static const yytype_int16 yytoknum[] = }; # endif -#define YYPACT_NINF (-829) +#define YYPACT_NINF (-870) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-595) +#define YYTABLE_NINF (-604) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -2135,110 +2162,112 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -829, 164, 2491, -829, 7022, 8994, 9330, 5100, -829, 8646, - 8646, -829, -829, 9106, 6520, 4956, 7370, 7370, -829, -829, - 7370, 2735, 5870, -829, -829, -829, -829, -39, 6520, -829, - 36, -829, -829, -829, 5240, 5380, -829, -829, 5520, -829, - -829, -829, -829, -829, -829, -829, 20, 8762, 8762, 129, - 4227, 1481, 7602, 7950, 6798, -829, 6242, 614, 927, 1024, - 1126, 839, -829, 410, 8878, 8762, -829, 852, -829, 1251, - -829, 448, -829, -829, 166, 171, -829, 80, 9218, -829, - 198, 11318, 299, 402, 21, 59, -829, 354, -829, -829, - -829, -829, -829, -829, -829, -829, -829, 203, 165, -829, - 340, 137, -829, -829, -829, -829, -829, 159, 159, 177, - 72, 552, -829, 8646, 99, 4344, 607, -829, 200, -829, - 494, -829, -829, 137, -829, -829, -829, -829, -829, -829, - -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, - -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, - -829, -829, 33, 44, 47, 101, -829, -829, -829, -829, - -829, -829, 170, 218, 219, 227, -829, 229, -829, -829, - -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, - -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, - -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, - -829, -829, -829, 240, 3417, 270, 448, 83, 225, 526, - 61, 247, 86, 83, 8646, 8646, 539, 306, -829, -829, - 609, 329, 95, 110, -829, -829, -829, -829, -829, -829, - -829, -829, -829, 6381, -829, -829, 253, -829, -829, -829, - -829, -829, -829, 852, -829, 264, -829, 386, -829, -829, - 852, 2601, 8762, 8762, 8762, 8762, -829, 11297, -829, -829, - 271, 361, 271, -829, -829, -829, 7138, -829, -829, -829, - 7370, -829, -829, -829, 4956, 8646, -829, -829, 286, 4461, - -829, 796, 355, 398, 7254, 4227, 302, 852, 1251, 852, - 323, -829, 7254, 852, 325, 1517, 1517, -829, 11297, 316, - 1517, -829, 421, 9442, 370, 798, 826, 859, 1597, -829, - -829, -829, -829, 1166, -829, -829, -829, -829, -829, -829, - 679, 749, -829, -829, 1186, -829, 1195, -829, 1257, -829, - 860, 444, 446, -829, -829, -829, -829, 4722, 8646, 8646, - 8646, 8646, 7254, 8646, 8646, -829, -829, 8066, -829, 4227, - 6910, 392, 8066, 8762, 8762, 8762, 8762, 8762, 8762, 8762, - 8762, 8762, 8762, 8762, 8762, 8762, 8762, 8762, 8762, 8762, - 8762, 8762, 8762, 8762, 8762, 8762, 8762, 8762, 8762, 9714, - -829, 7370, -829, 9798, -829, -829, 10974, -829, -829, -829, - -829, 8878, 8878, -829, 428, -829, 448, -829, 961, -829, - -829, -829, -829, -829, 9882, 7370, 9966, 3417, 8646, -829, - -829, -829, -829, 522, 528, 149, -829, 3561, 533, 8762, - 10050, 7370, 10134, 8762, 8762, 3849, 126, 126, 113, 10218, - 7370, 10302, -829, 501, -829, 4461, 386, -829, -829, 8182, - 542, -829, 679, 8762, 11318, 11318, 11318, 8762, 476, -829, - 7486, -829, 8762, -829, 7718, 852, 425, 852, 271, 271, - -829, -829, 745, 431, -829, -829, 6520, 3966, 443, 10050, - 10134, 8762, 1251, 852, -829, -829, 4839, 445, 1251, -829, - -829, 7834, -829, 852, 7950, -829, -829, -829, 961, 80, - 9442, -829, 9442, 10386, 7370, 10470, 30, -829, -829, -829, - -829, -829, -829, -829, -829, -829, -829, -829, -829, 1719, - -829, 8762, -829, 451, 554, 472, -829, -829, -829, -829, - -829, 479, 8762, -829, 497, 596, 511, 608, -829, -829, - 1283, 4461, 679, -829, -829, -829, -829, -829, -829, -829, - 8762, 8762, -829, -829, -829, -829, -829, -829, -829, -829, - 153, 8762, -829, 11121, 271, -829, 852, 9442, 532, -829, - -829, -829, 570, 572, 2302, -829, -829, 976, 180, 355, - 2331, 2331, 2331, 2331, 1479, 1479, 11455, 11395, 2331, 2331, - 11378, 11378, 671, 671, 11061, 1479, 1479, 1462, 1462, 1490, - 175, 175, 355, 355, 355, 2869, 5986, 3137, 6102, -829, - 159, -829, 550, 437, -829, 563, -829, -829, 5870, -829, - -829, 2061, 153, 153, -829, 11044, -829, -829, -829, -829, - -829, 852, 8646, 3417, 736, 813, -829, 159, 560, 159, - 699, 745, 1650, 6659, -829, 8298, 706, -829, 690, -829, - 5636, 5753, 605, 268, 276, 706, -829, -829, -829, -829, - 79, 88, 613, 121, 140, 8646, 6520, 616, 740, 11318, - 450, -829, 679, 11318, 11318, 679, 8762, 11297, -829, 271, - 11318, -829, -829, -829, -829, 7486, 7718, -829, -829, -829, - 623, -829, -829, 136, 1251, 852, 1517, 392, -829, 736, - 813, 626, 959, 1023, -829, -829, 1123, 622, 77, 11318, - 768, -829, -829, -829, 201, -829, 1719, -829, 11318, 1719, - -829, -829, 1907, -829, -829, -829, 637, -829, 355, 355, - -829, 1719, 3417, -829, -829, 11140, 8414, -829, -829, 9442, - 7254, 8878, 8762, 10554, 7370, 10638, 70, 8878, 8878, -829, - 428, 672, 8878, 8878, -829, 428, 59, 166, 3417, 4461, - 153, -829, 852, 762, -829, -829, -829, 1826, 3417, 852, - -829, 11121, -829, 689, -829, 4110, 774, -829, 8646, 779, - -829, 8762, 8762, 358, 8762, 8762, 800, 4605, 4605, 156, - 126, -829, -829, -829, 8530, 3705, 679, 11318, -829, 271, - -829, -829, -829, 192, -829, 104, 852, 676, 674, 678, - 3417, 4461, -829, 766, -829, 472, -829, -829, -829, 684, - 686, 687, -829, 691, 766, 687, -829, -829, 622, 622, - 9554, -829, 694, 472, 695, 9554, -829, 698, 701, -829, - 835, 8762, 11209, -829, -829, 11318, 3003, 3271, 712, 408, - 432, 8762, 8762, -829, -829, -829, -829, -829, 8878, -829, - -829, -829, -829, -829, -829, -829, 840, 722, 4461, 3417, - -829, -829, 852, 852, 845, -829, 1650, 9666, 83, -829, - -829, 4605, -829, -829, 83, -829, 8762, -829, 855, 856, - -829, 11318, 193, 7718, -829, 733, -829, 1530, -829, 680, - 868, 753, -829, 1719, -829, 1907, -829, 1907, -829, 1907, - -829, -829, 769, 771, 837, 995, 768, -829, -829, 1282, - -829, 995, 1719, -829, 1907, -829, -829, 11228, 439, 11318, - 11318, -829, -829, -829, -829, 761, 896, -829, -829, -829, - 3417, 862, -829, 1028, 826, 859, 3417, -829, 3561, -829, - -829, 4605, -829, -829, -829, 1585, 1585, 547, -829, 22, - -829, -829, -829, -829, 687, 778, 687, 687, -829, -829, - -829, 10722, -829, 472, 768, -829, -829, 780, 792, 793, - -829, 799, 793, -829, -829, 913, 961, 10806, 7370, 10890, - 528, 690, 935, 812, 812, 1585, 823, 680, -829, -829, - 1907, -829, -829, -829, 824, 828, -829, 1719, -829, 1907, - -829, 1907, -829, 1907, -829, -829, -829, 736, 813, 834, - 357, 579, -829, -829, -829, 1585, 812, 1585, -829, 687, - 793, 842, 793, 793, 192, 812, -829, -829, 1907, -829, - -829, -829, 793, -829 + -870, 123, 2747, -870, 7459, 9431, 9767, 5537, -870, 9083, + 9083, -870, -870, 9543, 6957, 5393, 7807, 7807, -870, -870, + 7807, 3172, 6307, -870, -870, -870, -870, 127, 6957, -870, + 78, -870, -870, -870, 5677, 5817, -870, -870, 5957, -870, + -870, -870, -870, -870, -870, -870, 30, 9199, 9199, 95, + 4664, 906, 8039, 8387, 7235, -870, 6679, 1068, 1316, 1360, + 1376, 695, -870, 125, 9315, 9199, -870, 1474, -870, 1634, + 60, -870, 75, 1663, 1663, -870, -870, 163, 87, -870, + 34, 9655, -870, 114, 11676, 197, 488, 260, 39, -870, + 322, -870, -870, -870, -870, -870, -870, -870, -870, -870, + 38, 204, -870, 241, 22, -870, -870, -870, -870, -870, + 94, 94, 155, 275, 998, -870, 9083, 263, 4781, 161, + 1663, 1663, -870, 180, -870, 626, -870, -870, 22, -870, + -870, -870, -870, -870, -870, -870, -870, -870, -870, -870, + -870, -870, -870, -870, -870, -870, -870, -870, -870, -870, + -870, -870, -870, -870, -870, -870, -870, 70, 109, 134, + 138, -870, -870, -870, -870, -870, -870, 146, 171, 189, + 201, -870, 205, -870, -870, -870, -870, -870, -870, -870, + -870, -870, -870, -870, -870, -870, -870, -870, -870, -870, + -870, -870, -870, -870, -870, -870, -870, -870, -870, -870, + -870, -870, -870, -870, -870, -870, -870, -870, 221, 3854, + 256, 75, 546, 207, 11757, 662, 102, 252, 250, 546, + 9083, 9083, 823, 292, -870, -870, 866, 337, 542, 643, + -870, -870, -870, -870, -870, -870, -870, -870, -870, 6818, + -870, -870, 236, -870, -870, -870, -870, -870, -870, 1474, + -870, 483, -870, 363, -870, -870, 1474, 3038, 9199, 9199, + 9199, 9199, -870, 11736, -870, -870, 259, 349, 259, -870, + -870, -870, 7575, -870, -870, -870, 7807, -870, -870, -870, + 5393, 9083, -870, -870, 272, 4898, -870, 902, 344, 305, + 7691, 4664, 279, 1474, 1634, 1474, 310, -870, 7691, 1474, + 316, 1341, 1341, -870, 11736, 289, 1341, -870, 391, 9879, + 325, 936, 999, 1050, 1903, -870, -870, -870, -870, 1382, + -870, -870, -870, -870, -870, -870, 498, 1322, -870, -870, + 1398, -870, 1451, -870, 1460, -870, 836, 399, 417, -870, + -870, -870, -870, 5159, 9083, 9083, 9083, 9083, 7691, 9543, + 9083, 9083, 54, -870, -870, -870, -870, -870, -870, -870, + -870, -870, -870, -870, -870, 2024, 378, 3854, 9199, -870, + 370, 452, 384, -870, 1474, -870, -870, -870, 386, 9199, + -870, 407, 467, 408, 504, -870, 430, 3854, -870, -870, + 8503, -870, 4664, 7347, 432, 8503, 9199, 9199, 9199, 9199, + 9199, 9199, 9199, 9199, 9199, 9199, 9199, 9199, 9199, 9199, + 9199, 9543, 9199, 9199, 9199, 9199, 9199, 9199, 9199, 9199, + 9199, 9199, 9199, 1804, -870, 7807, -870, 10151, -870, -870, + 11327, -870, -870, -870, -870, 9315, 9315, -870, 459, -870, + 75, -870, 1169, -870, -870, -870, -870, -870, -870, 10235, + 7807, 10319, 3854, 9083, -870, -870, -870, 555, 561, 295, + -870, 3998, 562, 9199, 10403, 7807, 10487, 9199, 9199, 4286, + 88, 88, 827, 10571, 7807, 10655, -870, 517, -870, 4898, + 363, -870, -870, 8619, 569, -870, 498, 9199, 11757, 11757, + 11757, 9199, 710, -870, 7923, -870, 9199, -870, 8155, 1474, + 443, 1474, 259, 259, -870, -870, 64, 445, -870, -870, + 6957, 4403, 455, 10403, 10487, 9199, 1634, 1474, -870, -870, + 5276, 449, 1634, -870, -870, 8271, -870, 1474, 8387, -870, + -870, -870, 1169, 34, 9879, -870, 9879, 10739, 7807, 10823, + 1771, -870, -870, -870, 1539, 4898, 498, -870, -870, -870, + -870, -870, -870, -870, 9199, 9199, -870, -870, -870, -870, + -870, -870, -870, -870, -870, -870, -870, -870, 1724, 1474, + 1474, 9199, 586, 11757, 139, -870, -870, -870, 145, -870, + -870, 1771, -870, 11757, 1771, -870, -870, 1417, -870, -870, + 9199, 591, 48, 9199, -870, 11500, 259, -870, 1474, 9879, + 478, -870, -870, -870, 581, 515, 2373, -870, -870, 1180, + 321, 344, 2795, 2795, 2795, 2795, 1483, 1483, 11817, 2139, + 2795, 2795, 2250, 2250, 511, 511, -870, -870, 11475, 1483, + 1483, 981, 981, 1377, 178, 178, 344, 344, 344, 3306, + 6423, 3574, 6539, -870, 94, -870, 507, 334, -870, 366, + -870, -870, 6307, -870, -870, 1624, 48, 48, -870, 2860, + -870, -870, -870, -870, -870, 1474, 9083, 3854, 1191, 100, + -870, 94, 508, 94, 633, 64, 7096, -870, 8735, 640, + -870, 208, -870, 6073, 6190, 521, 351, 439, 640, -870, + -870, -870, -870, 1148, 113, 522, 1227, 1261, 9083, 6957, + 528, 654, 11757, 601, -870, 498, 11757, 11757, 498, 9199, + 11736, -870, 259, 11757, -870, -870, -870, -870, 7923, 8155, + -870, -870, -870, 533, -870, -870, 90, 1634, 1474, 1341, + 432, -870, 1191, 100, 534, 1209, 1306, 532, 81, -870, + 548, -870, 344, 344, -870, 834, 1474, 543, -870, -870, + 11397, -870, 631, -870, 384, -870, -870, -870, 554, 556, + 558, -870, 559, 631, 558, 11415, -870, -870, 1771, 3854, + -870, -870, 11569, 8851, -870, -870, 9879, 7691, 9315, 9199, + 10907, 7807, 10991, 61, 9315, 9315, -870, 459, 414, 9315, + 9315, -870, 459, 39, 163, 3854, 4898, 48, -870, 1474, + 687, -870, -870, -870, -870, 11500, -870, 613, -870, 4547, + 698, -870, 9083, 705, -870, 9199, 9199, 441, 9199, 9199, + 707, 5042, 5042, 722, 88, -870, -870, -870, 8967, 4142, + 498, 11757, -870, 259, -870, -870, -870, 732, 583, 580, + 3854, 4898, -870, -870, -870, 587, -870, 1746, 9199, -870, + 1771, -870, 1417, -870, 1417, -870, 1417, -870, -870, 9199, + -870, 532, 532, 9991, -870, 590, 384, 598, 9991, -870, + 600, 604, -870, 734, 9199, 11588, -870, -870, 11757, 3440, + 3708, 611, 460, 474, 9199, 9199, -870, -870, -870, -870, + -870, 9315, -870, -870, -870, -870, -870, -870, -870, 738, + 617, 4898, 3854, -870, -870, 10103, 546, -870, -870, 5042, + -870, -870, 546, -870, 9199, -870, 748, 752, -870, 11757, + 112, 8155, -870, 1287, 755, 635, 1210, 1210, 1010, 11757, + 558, 636, 558, 558, 11757, 658, 663, 735, 1221, 139, + -870, -870, 1580, -870, 1221, 1771, -870, 1417, -870, -870, + 11657, 475, 11757, 11757, -870, -870, -870, -870, 657, 786, + 761, -870, 1272, 999, 1050, 3854, -870, 3998, -870, -870, + 5042, -870, -870, -870, -870, 14, -870, -870, -870, -870, + 679, 679, 1210, 688, -870, 1417, -870, -870, -870, -870, + -870, -870, 11075, -870, 384, 139, -870, -870, 692, 693, + 694, -870, 696, 694, -870, -870, 1169, 11159, 7807, 11243, + 561, 208, 826, 1287, -870, 1210, 679, 1210, 558, 700, + 708, -870, 1771, -870, 1417, -870, 1417, -870, 1417, -870, + -870, 1191, 100, 699, 1043, 1087, -870, -870, -870, -870, + 679, -870, 694, 712, 694, 694, 732, -870, 1417, -870, + -870, -870, 694, -870 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2246,156 +2275,158 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 0, 1, 0, 0, 0, 0, 276, 0, - 0, 300, 303, 0, 0, 580, 324, 325, 326, 327, - 288, 253, 400, 475, 474, 476, 477, 582, 0, 10, - 0, 479, 478, 480, 466, 275, 468, 467, 470, 469, - 462, 463, 424, 425, 481, 482, 274, 0, 0, 0, - 0, 278, 594, 594, 80, 295, 0, 0, 0, 0, - 0, 0, 439, 0, 0, 0, 3, 580, 6, 9, - 27, 32, 44, 52, 51, 0, 68, 0, 72, 82, - 0, 49, 232, 0, 53, 293, 267, 268, 422, 269, - 270, 271, 420, 419, 451, 421, 418, 473, 0, 272, - 273, 253, 5, 8, 324, 325, 288, 594, 400, 0, - 105, 106, 274, 0, 0, 0, 0, 108, 483, 328, - 0, 473, 273, 0, 316, 160, 170, 161, 157, 186, - 187, 188, 189, 168, 183, 176, 166, 165, 181, 164, - 163, 159, 184, 158, 171, 175, 177, 169, 162, 178, - 185, 180, 179, 172, 182, 167, 156, 174, 173, 155, - 153, 154, 150, 151, 152, 110, 112, 111, 145, 146, - 141, 123, 124, 125, 132, 129, 131, 126, 127, 147, - 148, 133, 134, 138, 142, 128, 130, 120, 121, 122, - 135, 136, 137, 139, 140, 143, 144, 149, 552, 318, - 113, 114, 551, 0, 0, 0, 50, 0, 0, 0, - 473, 0, 273, 0, 0, 0, 104, 0, 339, 338, - 0, 0, 473, 273, 179, 172, 182, 167, 150, 151, - 152, 110, 111, 0, 115, 117, 20, 116, 442, 447, - 446, 588, 591, 580, 590, 0, 444, 0, 592, 589, - 581, 564, 0, 0, 0, 0, 248, 260, 66, 252, - 594, 422, 594, 556, 67, 65, 594, 242, 289, 64, - 0, 241, 399, 63, 580, 0, 583, 18, 0, 0, - 209, 0, 210, 285, 0, 0, 0, 580, 15, 580, - 70, 14, 0, 580, 0, 585, 585, 233, 0, 0, - 585, 554, 0, 0, 78, 0, 88, 95, 522, 456, - 455, 457, 458, 0, 454, 453, 437, 431, 430, 433, - 0, 0, 428, 449, 0, 460, 0, 426, 0, 435, - 0, 464, 465, 48, 224, 225, 4, 581, 0, 0, - 0, 0, 0, 0, 0, 387, 389, 0, 84, 0, - 76, 73, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 1, 0, 0, 0, 0, 288, 0, + 0, 312, 315, 0, 0, 589, 332, 333, 334, 335, + 300, 265, 408, 483, 482, 484, 485, 591, 0, 10, + 0, 487, 486, 488, 474, 287, 476, 475, 478, 477, + 470, 471, 432, 433, 489, 490, 286, 0, 0, 0, + 0, 290, 603, 603, 88, 307, 0, 0, 0, 0, + 0, 0, 447, 0, 0, 0, 3, 589, 6, 9, + 32, 27, 33, 531, 531, 49, 60, 59, 0, 76, + 0, 80, 90, 0, 54, 244, 0, 61, 305, 279, + 280, 430, 281, 282, 283, 428, 427, 459, 429, 426, + 481, 0, 284, 285, 265, 5, 8, 332, 333, 300, + 603, 408, 0, 113, 114, 286, 0, 0, 0, 0, + 531, 531, 116, 491, 336, 0, 481, 285, 0, 328, + 168, 178, 169, 165, 194, 195, 196, 197, 176, 191, + 184, 174, 173, 189, 172, 171, 167, 192, 166, 179, + 183, 185, 177, 170, 186, 193, 188, 187, 180, 190, + 175, 164, 182, 181, 163, 161, 162, 158, 159, 160, + 118, 120, 119, 153, 154, 149, 131, 132, 133, 140, + 137, 139, 134, 135, 155, 156, 141, 142, 146, 150, + 136, 138, 128, 129, 130, 143, 144, 145, 147, 148, + 151, 152, 157, 561, 55, 121, 122, 560, 0, 0, + 0, 58, 0, 0, 54, 0, 481, 0, 285, 0, + 0, 0, 112, 0, 347, 346, 0, 0, 104, 111, + 187, 180, 190, 175, 158, 159, 160, 118, 119, 0, + 123, 125, 20, 124, 450, 455, 454, 597, 600, 589, + 599, 0, 452, 0, 601, 598, 590, 573, 0, 0, + 0, 0, 260, 272, 74, 264, 603, 430, 603, 565, + 75, 73, 603, 254, 301, 72, 0, 253, 407, 71, + 589, 0, 592, 18, 0, 0, 217, 0, 218, 297, + 0, 0, 0, 589, 15, 589, 78, 14, 0, 589, + 0, 594, 594, 245, 0, 0, 594, 563, 0, 0, + 86, 0, 96, 103, 531, 464, 463, 465, 466, 0, + 462, 461, 445, 439, 438, 441, 0, 0, 436, 457, + 0, 468, 0, 434, 0, 443, 0, 472, 473, 53, + 232, 233, 4, 590, 0, 0, 0, 0, 0, 0, + 0, 0, 538, 534, 533, 532, 535, 536, 507, 540, + 552, 508, 556, 555, 551, 531, 496, 0, 500, 505, + 603, 510, 603, 530, 0, 537, 539, 542, 516, 0, + 549, 516, 554, 516, 0, 514, 496, 0, 395, 397, + 0, 92, 0, 84, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 577, 594, 576, 0, 579, 578, 0, 404, 402, 294, - 423, 0, 0, 393, 57, 292, 313, 105, 106, 107, - 464, 465, 484, 311, 0, 594, 0, 0, 0, 319, - 575, 574, 321, 0, 594, 285, 330, 0, 329, 0, - 0, 594, 0, 0, 0, 0, 0, 0, 285, 0, - 594, 0, 308, 0, 118, 0, 0, 443, 445, 0, - 0, 593, 558, 0, 261, 563, 255, 0, 258, 249, - 0, 257, 0, 250, 0, 580, 0, 580, 594, 594, - 243, 254, 580, 0, 291, 47, 0, 0, 0, 0, - 0, 0, 17, 580, 283, 13, 581, 69, 279, 282, - 286, 587, 234, 586, 587, 236, 287, 555, 94, 86, - 0, 81, 0, 0, 594, 0, 529, 525, 524, 523, - 526, 527, 498, 531, 543, 499, 547, 546, 542, 522, - 296, 491, 496, 594, 501, 594, 521, 384, 528, 530, - 533, 507, 0, 540, 507, 545, 507, 0, 505, 459, - 0, 0, 434, 440, 438, 429, 450, 461, 427, 436, - 0, 0, 7, 21, 22, 23, 24, 25, 45, 46, - 594, 0, 28, 30, 0, 31, 580, 0, 74, 85, - 43, 33, 41, 0, 237, 190, 29, 0, 273, 206, - 214, 219, 220, 221, 216, 218, 228, 229, 222, 223, - 199, 200, 226, 227, 582, 215, 217, 211, 212, 213, - 201, 202, 203, 204, 205, 567, 572, 568, 573, 398, - 253, 396, 0, 567, 569, 568, 570, 397, 594, 567, - 568, 253, 594, 594, 34, 237, 191, 40, 198, 55, - 58, 0, 0, 0, 105, 106, 109, 0, 0, 594, - 0, 580, 522, 0, 277, 594, 594, 410, 594, 331, - 571, 284, 0, 567, 568, 594, 333, 301, 332, 304, - 571, 284, 0, 567, 568, 0, 0, 0, 0, 260, - 0, 307, 559, 561, 560, 0, 0, 262, 256, 594, - 562, 557, 240, 239, 244, 245, 247, 290, 584, 19, - 0, 26, 197, 71, 16, 580, 585, 87, 79, 91, - 93, 0, 90, 92, 489, 535, 0, 582, 0, 490, - 0, 503, 550, 500, 0, 504, 0, 514, 536, 0, - 517, 544, 0, 519, 548, 452, 0, 441, 207, 208, - 375, 373, 0, 372, 371, 266, 0, 83, 77, 0, - 0, 0, 0, 0, 594, 0, 0, 0, 0, 395, - 61, 401, 0, 0, 394, 59, 390, 54, 0, 0, - 594, 314, 0, 0, 401, 317, 553, 522, 0, 0, - 322, 411, 412, 594, 413, 0, 594, 336, 0, 0, - 334, 0, 0, 401, 0, 0, 0, 0, 0, 401, - 0, 119, 448, 306, 0, 0, 259, 263, 251, 594, - 11, 280, 235, 89, 529, 347, 580, 340, 0, 377, - 0, 0, 297, 0, 497, 594, 549, 506, 534, 507, - 507, 507, 541, 507, 529, 507, 432, 370, 582, 582, - 493, 494, 594, 594, 355, 0, 538, 355, 355, 353, - 0, 0, 264, 75, 42, 238, 567, 568, 0, 567, - 568, 0, 0, 39, 195, 38, 196, 62, 0, 36, - 193, 37, 194, 60, 391, 392, 0, 0, 0, 0, - 485, 312, 580, 580, 0, 488, 522, 0, 0, 415, - 337, 0, 12, 417, 0, 298, 0, 299, 0, 0, - 309, 262, 594, 246, 348, 345, 532, 0, 383, 0, - 0, 0, 502, 0, 510, 0, 512, 0, 518, 0, - 515, 520, 0, 0, 0, 492, 0, 351, 352, 355, - 363, 537, 0, 366, 0, 368, 388, 265, 401, 231, - 230, 35, 192, 405, 403, 0, 0, 487, 486, 320, - 0, 0, 414, 0, 96, 103, 0, 416, 0, 302, - 305, 0, 407, 408, 406, 0, 0, 343, 381, 582, - 379, 382, 386, 385, 507, 507, 507, 507, 376, 374, - 285, 0, 495, 594, 0, 354, 361, 355, 355, 355, - 539, 355, 355, 56, 315, 0, 102, 0, 594, 0, - 594, 594, 0, 349, 346, 0, 341, 0, 378, 511, - 0, 508, 513, 516, 571, 284, 350, 0, 358, 0, - 360, 0, 367, 0, 364, 369, 323, 99, 101, 0, - 567, 568, 409, 335, 310, 0, 344, 0, 380, 507, - 355, 355, 355, 355, 97, 342, 509, 359, 0, 356, - 362, 365, 355, 357 + 0, 0, 0, 0, 586, 603, 585, 0, 588, 587, + 0, 412, 410, 306, 431, 0, 0, 401, 65, 304, + 325, 113, 114, 115, 472, 473, 496, 492, 323, 0, + 603, 0, 0, 0, 584, 583, 56, 0, 603, 297, + 338, 0, 337, 0, 0, 603, 0, 0, 0, 0, + 0, 0, 110, 0, 603, 0, 320, 0, 126, 0, + 0, 451, 453, 0, 0, 602, 567, 0, 273, 572, + 267, 0, 270, 261, 0, 269, 0, 262, 0, 589, + 0, 589, 603, 603, 255, 266, 589, 0, 303, 52, + 0, 0, 0, 0, 0, 0, 17, 589, 295, 13, + 590, 77, 291, 294, 298, 596, 246, 595, 596, 248, + 299, 564, 102, 94, 0, 89, 0, 0, 603, 0, + 531, 308, 392, 467, 0, 0, 442, 448, 446, 437, + 458, 469, 435, 444, 0, 0, 7, 21, 22, 23, + 24, 25, 37, 36, 50, 51, 498, 544, 0, 589, + 589, 0, 0, 499, 0, 512, 559, 509, 0, 513, + 497, 0, 523, 545, 0, 526, 553, 0, 528, 557, + 0, 0, 603, 0, 28, 30, 0, 31, 589, 0, + 82, 93, 48, 38, 46, 0, 249, 198, 29, 0, + 285, 214, 222, 227, 228, 229, 224, 226, 236, 237, + 230, 231, 207, 208, 234, 235, 35, 34, 591, 223, + 225, 219, 220, 221, 209, 210, 211, 212, 213, 576, + 581, 577, 582, 406, 265, 404, 0, 576, 578, 577, + 579, 405, 603, 576, 577, 265, 603, 603, 39, 249, + 199, 45, 206, 63, 66, 0, 0, 0, 113, 114, + 117, 0, 0, 603, 0, 589, 0, 289, 603, 603, + 418, 603, 339, 580, 296, 0, 576, 577, 603, 341, + 313, 340, 316, 107, 109, 0, 106, 108, 0, 0, + 0, 0, 272, 0, 319, 568, 570, 569, 0, 0, + 274, 268, 603, 571, 566, 252, 251, 256, 257, 259, + 302, 593, 19, 0, 26, 205, 79, 16, 589, 594, + 95, 87, 99, 101, 0, 98, 100, 591, 0, 460, + 0, 449, 215, 216, 538, 355, 589, 348, 495, 494, + 240, 330, 0, 506, 603, 558, 515, 543, 516, 516, + 516, 550, 516, 538, 516, 242, 331, 383, 381, 0, + 380, 379, 278, 0, 91, 85, 0, 0, 0, 0, + 0, 603, 0, 0, 0, 0, 403, 69, 409, 0, + 0, 402, 67, 398, 62, 0, 0, 603, 326, 0, + 0, 409, 329, 562, 57, 419, 420, 603, 421, 0, + 603, 344, 0, 0, 342, 0, 0, 409, 0, 0, + 0, 0, 0, 105, 0, 127, 456, 318, 0, 0, + 271, 275, 263, 603, 11, 292, 247, 97, 0, 385, + 0, 0, 309, 440, 356, 353, 541, 0, 0, 511, + 0, 519, 0, 521, 0, 527, 0, 524, 529, 0, + 378, 591, 591, 502, 503, 603, 603, 363, 0, 547, + 363, 363, 361, 0, 0, 276, 83, 47, 250, 576, + 577, 0, 576, 577, 0, 0, 44, 203, 43, 204, + 70, 0, 41, 201, 42, 202, 68, 399, 400, 0, + 0, 0, 0, 493, 324, 0, 0, 423, 345, 0, + 12, 425, 0, 310, 0, 311, 0, 0, 321, 274, + 603, 258, 391, 0, 0, 0, 0, 0, 351, 241, + 516, 516, 516, 516, 243, 0, 0, 0, 501, 0, + 359, 360, 363, 371, 546, 0, 374, 0, 376, 396, + 277, 409, 239, 238, 40, 200, 413, 411, 0, 0, + 0, 422, 0, 104, 111, 0, 424, 0, 314, 317, + 0, 415, 416, 414, 389, 591, 387, 390, 394, 393, + 357, 354, 0, 349, 520, 0, 517, 522, 525, 384, + 382, 297, 0, 504, 603, 0, 362, 369, 363, 363, + 363, 548, 363, 363, 64, 327, 110, 0, 603, 0, + 603, 603, 0, 0, 386, 0, 352, 0, 516, 580, + 296, 358, 0, 366, 0, 368, 0, 375, 0, 372, + 377, 107, 109, 0, 576, 577, 417, 343, 322, 388, + 350, 518, 363, 363, 363, 363, 105, 367, 0, 364, + 370, 373, 363, 365 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -829, -829, -829, 510, -829, 32, -829, -214, 182, -829, - 28, -829, -155, -302, 867, 1, -16, -829, -536, -829, - 131, 971, -170, 4, -69, -266, -431, -15, 1295, -48, - 981, 19, 5, -829, -829, 24, -829, 653, -829, 413, - 75, -58, -352, 54, 13, -829, -390, -235, -11, 39, - -303, 89, -829, -829, -829, -829, -829, -829, -829, -829, - -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, - -829, -829, 8, -206, -382, 7, -568, -829, -829, -829, - 272, 538, -829, -512, -829, -829, -78, -829, 2, -829, - -829, 255, -829, -829, -829, -65, -829, -829, -430, -829, - 14, -829, -829, -829, -829, -829, 154, 58, -196, -829, - -829, -829, -829, -377, -257, -829, 787, -829, -829, -829, - -6, -829, -829, -829, 1461, 1552, 1026, 1065, -829, -829, - 173, 314, 343, 141, -829, -829, -829, 524, -306, 246, - -307, -801, -716, -519, -829, 474, -664, -627, -828, 142, - 346, -829, 236, -829, 517, -439, -829, -829, -829, 92, - 785, -411, 505, -339, -829, -829, -80, -829, 26, -22, - -152, -254, 788, -12, -33, -2 + -870, -870, -870, 342, -870, 37, -870, -62, 106, -870, + 41, -870, -870, -154, -352, 896, 85, 132, -870, 27, + 192, -870, -673, -870, -15, 16, -192, 29, -72, -212, + -436, -5, 1770, -82, 849, 13, 4, -870, -870, 24, + -870, 1132, -870, 307, 84, -224, -289, 131, 12, -870, + -406, -229, -181, 57, -341, 323, -870, -870, -870, -870, + -870, -870, -870, -870, -870, -870, -870, -870, -870, -870, + -870, -870, 8, -215, -463, -136, -624, -870, -870, -870, + 111, 164, -870, -575, -870, -870, -469, -870, -133, -870, + -870, 92, -870, -870, -870, -85, -870, -870, -454, -870, + -129, -870, -870, -870, -870, -870, 43, 83, -165, -870, + -870, -870, -870, -433, -201, -870, 641, -870, -870, -870, + 2, -870, -870, -870, 1740, 2183, 886, 1575, -870, -870, + 421, 66, 287, 320, -41, -870, -870, -870, 280, -27, + 239, -248, -816, -684, -524, -870, 228, -746, -548, -869, + -38, 326, -870, -506, -870, 273, -345, -870, -870, -870, + 51, 647, -442, 593, -296, -870, -870, -80, -870, 55, + -12, 274, -262, 425, -16, -34, -2 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 2, 66, 67, 68, 278, 413, 414, 287, - 288, 466, 70, 561, 71, 207, 72, 73, 620, 750, - 74, 75, 289, 76, 77, 78, 491, 79, 208, 117, - 118, 234, 235, 236, 656, 598, 201, 81, 294, 565, - 599, 268, 456, 457, 269, 270, 259, 449, 484, 458, - 555, 82, 204, 292, 685, 293, 308, 698, 214, 777, - 215, 778, 655, 941, 623, 621, 859, 407, 409, 632, - 633, 866, 281, 417, 647, 769, 770, 221, 796, 945, - 965, 910, 818, 722, 723, 819, 798, 949, 950, 510, - 802, 346, 550, 84, 85, 395, 613, 612, 440, 944, - 636, 763, 868, 872, 86, 87, 88, 321, 322, 531, - 89, 90, 91, 532, 244, 245, 246, 435, 92, 93, - 94, 315, 95, 96, 210, 211, 99, 212, 403, 622, - 758, 511, 512, 821, 822, 513, 514, 515, 807, 707, - 759, 518, 519, 520, 696, 521, 522, 523, 826, 827, - 524, 525, 526, 527, 528, 701, 203, 408, 299, 459, - 443, 263, 123, 627, 601, 412, 406, 386, 463, 799, - 464, 482, 248, 249, 250, 291 + -1, 1, 2, 66, 67, 68, 284, 457, 458, 293, + 294, 510, 70, 71, 603, 72, 73, 74, 676, 212, + 75, 76, 664, 797, 77, 78, 295, 79, 80, 81, + 535, 82, 213, 122, 123, 240, 241, 242, 699, 642, + 206, 84, 300, 607, 643, 274, 500, 501, 275, 276, + 265, 493, 528, 502, 597, 85, 209, 298, 728, 299, + 314, 738, 220, 821, 221, 822, 698, 970, 667, 665, + 902, 452, 287, 461, 690, 813, 814, 227, 746, 926, + 996, 943, 861, 769, 770, 862, 838, 975, 976, 541, + 842, 389, 592, 87, 88, 439, 657, 656, 484, 973, + 679, 807, 906, 910, 89, 90, 91, 327, 328, 545, + 92, 93, 94, 546, 250, 251, 252, 479, 95, 96, + 97, 321, 98, 99, 216, 217, 102, 218, 448, 666, + 446, 367, 368, 369, 864, 865, 370, 371, 372, 756, + 582, 374, 375, 376, 377, 568, 378, 379, 380, 869, + 870, 381, 382, 383, 384, 385, 575, 208, 453, 305, + 503, 487, 269, 128, 671, 645, 456, 451, 430, 507, + 839, 508, 526, 254, 255, 256, 297 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2403,456 +2434,488 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 102, 517, 516, 383, 385, 275, 658, 425, 237, 351, - 83, 213, 83, 120, 120, 276, 243, 209, 209, 271, - 389, 220, 237, 209, 209, 209, 199, 453, 209, 602, - 69, 200, 69, 277, 337, 273, 103, 490, 200, 304, - 600, 247, 485, 671, 608, 649, 487, 611, 333, 566, - 297, 301, 200, 628, 290, 260, 260, 825, 83, 260, - 668, 688, 305, 533, 668, 662, 399, 629, 766, 642, - 258, 264, 209, 671, 265, 314, 705, 776, 652, 885, - 200, 600, 812, 608, 970, 387, 305, 694, 951, 614, - 617, 295, 629, 336, 119, 119, 267, 272, -564, 416, - 748, 749, 119, 274, -99, 271, 800, 242, 262, 262, - 384, -472, 262, -101, 394, 473, 324, 326, 328, 330, - -96, 209, -475, 83, 380, 535, 728, 841, 535, 422, - 535, 629, 535, -474, 535, -103, -476, 477, -102, -104, - 431, 479, 691, 119, 296, 300, -98, 256, 256, 695, - 397, 256, -471, 646, 398, 794, 629, 497, 498, 499, - 500, -466, 987, 387, 3, -100, 382, 119, 242, 970, - 261, 261, 279, 501, 261, -466, 393, 424, -475, 556, - -96, -97, 267, 272, 283, 533, 951, 808, 801, -474, - -477, 842, -476, 630, 345, 388, 238, 560, 393, 239, - 240, 470, 697, 516, 847, -103, 261, 261, -564, 853, - -466, 765, 83, 439, -564, 426, 427, -466, -401, -91, - 348, -567, 209, 209, 453, 495, 490, 241, -93, 242, - -568, 986, 286, 720, 489, -88, 560, 560, 858, 238, - 471, 390, 239, 240, 884, 825, -477, 353, 825, 450, - -95, 454, 314, -94, 476, -69, 391, 200, 451, -479, - 451, -90, 483, 483, 460, 671, 812, 483, -102, 436, - 241, 392, 242, 388, 209, 717, -83, 721, 209, 266, - -92, -401, 209, 209, 481, 668, 668, 83, 786, 290, - 347, 490, 83, 83, -471, -401, -89, 286, 833, -103, - 83, 266, 506, 672, 376, 377, 378, -478, -480, 260, - 677, 305, 472, 475, 942, -479, -466, 352, -470, 274, - 478, 683, -96, 402, 461, 415, 516, 507, -401, 410, - -401, 552, 762, 825, 535, 558, 562, -401, 423, 543, - 544, 545, 546, -88, 419, 83, 209, 209, 209, 209, - 83, 209, 209, 290, 432, 209, 626, 83, 305, 774, - 567, 428, 262, -478, -480, 69, 892, 775, 808, 542, - 547, 530, -466, -98, -470, 562, 562, 437, 808, 460, - 239, 240, 838, 907, 908, 411, 554, -98, -328, 209, - 808, 554, 119, 434, 600, -100, 608, 256, 880, 567, - 567, 256, -328, 460, 727, 717, 439, 606, 533, 753, - 606, 448, 637, 209, 42, 83, 209, 43, 442, 460, - 261, 687, 467, 489, 261, 83, 665, 353, 460, 209, - 606, 392, 792, 83, 788, 843, 276, -328, 209, 119, - 849, 851, -68, 83, -328, 474, 606, 675, 676, 876, - 863, 516, 943, 486, 785, 606, 451, 451, 607, -103, - 237, 468, 60, 490, 480, 102, 416, 286, 331, 332, - -98, 679, 671, -98, -98, 83, 488, -97, 660, 756, - -95, 607, 808, 674, 83, 343, 344, 735, 489, 471, - 200, 379, 460, 668, 606, 69, 808, 607, 305, 742, - 305, -98, 209, -98, 684, 380, 607, 101, 830, 101, - 492, 702, 256, 702, 101, 101, 540, -102, 541, 606, - 101, 101, 101, 743, 996, 101, 619, -98, 742, 717, - 848, 286, 559, 791, 856, 261, 256, 634, -94, 83, - 381, 635, 669, 726, 864, 607, 921, 382, 724, 639, - 744, -100, 256, 746, 788, 101, -98, 661, -97, 261, - 516, 256, 736, 238, 529, 305, 239, 240, 673, 101, - 607, 744, 276, 686, 678, 261, 560, -90, -565, 119, - 681, 119, 560, 404, 261, -83, 890, 560, 560, -582, - 448, 700, -582, -582, 241, -100, 242, 380, 794, 638, - 497, 498, 499, 500, 261, 703, 271, 645, 261, 271, - 724, 724, 704, 740, 730, 420, 501, 657, 101, 706, - 101, 745, 242, 752, 747, 256, 1009, 271, -274, 380, - 209, 83, 405, 764, 767, 261, 767, 709, 261, 382, - 629, -470, -274, 767, 886, 926, 119, 711, 261, 784, - 237, 712, 760, 483, 743, -470, 780, 200, 454, 714, - 489, 781, 936, 209, 421, 400, 401, 451, 938, 257, - 257, 382, 729, 257, 554, 739, 316, -274, 317, 318, - 200, 854, -100, 267, -274, 276, 267, 985, -565, 741, - -470, 731, -100, 560, -565, -100, -100, -470, 429, 754, - 280, 282, 739, -92, 267, 257, 298, 768, 765, 101, - 927, 928, 380, 716, 755, 562, 975, 334, 335, 101, - 101, 562, 845, -100, 765, -100, 562, 562, 319, 320, - 83, 948, 460, 497, 498, 499, 500, 305, 83, 567, - 902, 903, 209, 353, 773, 567, 209, 430, 724, 501, - 567, 567, 779, 782, 382, 783, 83, 83, 834, 606, - 790, 869, -571, 848, 873, 793, 83, 789, 242, 874, - 710, 101, 713, 83, 816, 101, 209, 861, 883, 101, - 101, 867, 343, 344, 101, 83, 83, 451, 871, 101, - 101, -97, 238, 83, 875, 239, 240, 101, 374, 375, - 376, 377, 378, 702, 616, 618, 276, 276, 83, 83, - 607, 534, -89, 317, 318, 877, 887, 888, 119, 803, - 702, 702, 889, 694, 893, -571, 895, 897, 905, 261, - 261, 899, 562, 911, 906, 909, 616, 618, 912, -571, - 502, 914, 101, 101, 101, 101, 101, 101, 101, 101, - 916, 918, 101, 979, 101, 923, 567, 101, 238, 924, - 929, 239, 240, 319, 320, 256, 83, 83, 505, 506, - 939, 940, -571, 946, -571, 933, 206, 206, -567, 83, - 767, -571, 206, 952, 682, 469, 101, 493, 261, 241, - 953, 242, 960, 958, 507, 959, 101, 101, 973, 380, - 329, 380, -284, 317, 318, 444, 445, 446, 334, 119, - 101, 974, 101, 101, 119, -473, -284, 976, 990, 257, - 997, 539, 101, 257, 317, 318, 101, 988, 1006, -473, - 101, 857, 999, 1001, 421, 101, 494, 276, 83, 1003, - 101, 382, 810, 382, 83, 813, 83, 870, -273, 83, - 1014, -284, 1015, 319, 320, -568, 119, 828, -284, 878, - 879, 702, -273, 1017, -473, 238, -567, 882, 239, 240, - -568, -473, 101, 1024, 319, 320, 460, 680, 637, 767, - 396, 101, 1028, 891, 218, -567, 209, 124, 1013, 1018, - 323, 317, 318, 817, 1012, 418, 241, -273, 242, 101, - 553, 418, 855, 606, -273, 564, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 438, 202, 257, 820, 101, 261, 441, 930, - 925, 319, 320, 804, 615, 615, 452, 962, -567, -568, - -285, 967, 809, 937, 607, 894, 896, 898, 257, 900, - 0, 901, -567, 0, -285, 733, 0, 100, 0, 100, - 122, 122, 615, 0, 257, 0, 615, 615, 223, 380, - 0, 206, 206, 257, 961, 0, 0, 325, 317, 318, - 0, 0, 659, 0, 0, -567, 663, -567, 380, -285, - 664, -567, 0, 667, -567, 670, -285, 298, 0, 256, - 0, 0, -568, 0, 734, 100, 0, 977, 980, 307, - 981, 382, 0, 982, 615, 441, -568, 101, 101, 955, - 0, 380, 261, 405, 667, 0, 0, 298, 319, 320, - 382, 462, 465, 307, 0, 968, 0, 257, 971, 0, - 844, 846, 0, 0, 0, 850, 852, 0, 0, -568, - 101, -568, 0, 0, 699, -568, 978, 0, -568, 0, - 797, 0, 0, 382, 794, 708, 497, 498, 499, 500, - 100, 0, 0, 811, 844, 846, 815, 850, 852, 327, - 317, 318, 501, 718, 719, 824, 0, 0, 0, 0, - 989, 991, 992, 993, 725, 206, 206, 206, 206, 0, - 548, 549, 0, 0, 648, 648, 503, 806, 0, 0, - 820, 806, 795, 820, 805, 0, 820, 101, 820, 529, - 317, 318, 0, 1021, 0, 101, 101, 0, 829, 101, - 319, 320, 101, 101, 0, 823, 0, 101, 101, 536, - 317, 318, 0, 101, 101, 0, 0, 0, 537, 317, - 318, 922, 0, 101, 441, 1026, 0, 0, 0, 100, - 101, 441, 0, 101, 0, 631, 0, 0, 820, 0, - 319, 320, 101, 101, 0, 0, 0, 0, 761, 922, - 101, 338, 339, 340, 341, 342, 0, 80, 0, 80, - 319, 320, 0, 0, 0, 101, 101, 0, 219, 319, - 320, 820, 0, 820, 0, 820, 0, 820, 0, 787, - 538, 317, 318, 0, 0, 0, 0, 0, 667, 298, - 0, 0, 0, 496, 0, 497, 498, 499, 500, 0, - 0, 0, 820, 0, 100, 80, 715, 317, 318, 100, - 100, 501, 0, 101, 502, 0, 0, 100, 0, 0, - 0, 0, 0, 101, 101, 913, 915, 954, 307, 956, - 0, 319, 320, 957, 0, 503, 101, 0, 0, 832, - 0, 504, 505, 506, 615, 835, 969, 257, 972, 0, - 615, 615, 0, 0, 0, 615, 615, 319, 320, 0, - 0, 0, 100, 0, 0, 0, 0, 100, 507, 751, - 80, 508, 0, 0, 100, 307, 0, 568, 0, 983, - 984, 0, 964, 806, 615, 615, 829, 615, 615, 829, - 963, 829, 0, 823, 0, 101, 823, 881, 823, 0, - 0, 101, 0, 101, 0, 0, 101, 966, 418, 0, - 0, 0, 0, 0, 0, 0, 568, 568, 0, 1016, - 0, 0, 0, 97, 1019, 97, 121, 121, 121, 0, - 0, 1020, 100, 1022, 222, 0, 0, 1023, 0, 0, - 0, 829, 100, 101, 917, 0, 0, 0, 823, 206, - 100, 1025, 0, 0, 919, 920, 0, 0, 0, 80, - 100, 615, 1032, 0, 0, 998, 1000, 1002, 0, 1004, - 1005, 97, 0, 0, 829, 306, 829, 0, 829, 0, - 829, 823, 206, 823, 0, 823, 0, 823, 0, 615, - 0, 0, 100, 0, 353, 0, 298, 0, 0, 306, - 860, 100, 0, 0, 0, 829, 0, 865, 0, 366, - 367, 353, 823, 0, 98, 307, 98, 307, 1027, 1029, - 1030, 1031, 353, 0, 0, 0, 366, 367, 648, 0, - 1033, 0, 0, 0, 80, 0, 97, 366, 367, 80, - 80, 794, 0, 497, 498, 499, 500, 80, 373, 374, - 375, 376, 377, 378, -281, 0, 100, -281, -281, 501, - 0, 0, 98, 371, 372, 373, 374, 375, 376, 377, - 378, 0, 0, 0, 0, 0, 0, 374, 375, 376, - 377, 378, 307, 503, -281, -281, 0, -281, 0, 947, - 238, 257, 80, 239, 240, 206, 794, 80, 497, 498, - 499, 500, 0, 0, 80, 0, 0, 563, 496, 0, - 497, 498, 499, 500, 501, 0, 418, 448, 0, 0, - 0, 241, 418, 242, 0, 97, 501, 98, 0, 502, - 0, 0, 0, 0, 0, 0, 0, 0, 503, 0, - 0, 0, 0, 0, 0, 0, 563, 563, 100, 0, - 503, 0, 0, 0, 0, 0, 504, 505, 506, 0, - 0, 496, 80, 497, 498, 499, 500, 0, 0, 0, - 0, 0, 80, 0, 0, 0, 0, 0, 0, 501, - 80, 0, 502, 507, 0, 0, 508, 0, 0, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 509, - 97, 0, 0, 503, 0, 97, 97, 0, 0, 504, - 505, 506, 0, 97, 0, 0, 98, 0, 0, 0, - 0, 0, 80, 0, 306, 0, 0, 0, 0, 0, - 496, 80, 497, 498, 499, 500, 507, 0, 0, 508, - 0, 0, 0, 0, 0, 0, 0, 100, 501, 0, - 0, 502, 757, 0, 307, 100, 568, 0, 97, 0, - 0, 0, 568, 97, 0, 0, 0, 568, 568, 0, - 97, 306, 503, 100, 100, 0, 0, 0, 504, 505, - 506, 0, 0, 100, 0, 0, 80, 0, 0, 0, - 100, 98, 0, 0, 0, 0, 98, 98, 0, 0, - 0, 0, 100, 100, 98, 507, 0, 0, 508, 0, - 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 100, 100, 0, 97, 0, - 0, 0, 0, 0, 0, 0, 0, 496, 97, 497, - 498, 499, 500, 0, 0, 122, 97, 0, 0, 98, - 122, 0, 0, 0, 98, 501, 97, 0, 502, 0, - 0, 98, 0, 0, 98, 0, 0, 0, 0, 0, - 862, 0, 0, 568, 0, 0, 0, 0, 80, 503, - 0, 0, 0, 100, 100, 504, 505, 506, 97, 0, - 0, 0, 935, 0, 0, 0, 100, 97, 0, 0, - 0, 0, 0, 98, 98, 0, 0, 0, 0, 0, - 0, 306, 507, 306, 0, 508, 0, 0, 814, 98, - 497, 498, 499, 500, 0, 0, 0, 0, 0, 98, - 0, 0, 0, 0, 0, 0, 501, 98, 0, 502, - 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, - 0, 0, 97, 0, 0, 100, 0, 0, 0, 0, - 503, 100, 0, 100, 0, 0, 100, 505, 506, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 306, 98, - 0, 0, 0, 0, 0, 80, 563, 0, 98, 0, - 0, 0, 563, 507, 0, 0, 0, 563, 563, 0, - 0, 0, 0, 80, 80, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, - 80, -594, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 80, -594, -594, -594, -594, -594, -594, - 80, -594, 0, 98, 97, 0, 0, -594, -594, 0, - 0, 0, 0, 0, 0, 80, 80, 0, -594, -594, - 0, -594, -594, -594, -594, -594, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 105, 262, 262, 433, 469, 262, 427, 429, 692, 394, + 86, 282, 86, 125, 125, 281, 243, 215, 215, 277, + 204, 226, 868, 215, 215, 215, 701, 579, 215, 224, + 243, 205, 283, 343, 279, 443, 761, 219, 205, 497, + 529, 106, 249, 69, 531, 69, 373, 373, 431, 310, + 303, 307, 205, 705, 608, 810, 714, 757, 86, 267, + 267, 845, 311, 267, 820, 431, 542, 268, 268, 320, + 253, 268, 215, 266, 266, 759, 1001, 266, 762, 296, + 205, 795, 796, 658, 661, 494, 714, 498, 711, 311, + 120, 120, 711, 373, 373, 267, 267, 534, 120, 517, + 731, 350, 351, 302, 306, 273, 278, 977, 277, 301, + 840, 566, 350, 351, 890, 689, 438, 570, 884, 896, + 525, -480, 342, 3, 215, 547, 86, 644, 767, -479, + 809, 652, 483, 434, 655, 466, 646, 121, 121, 120, + 387, 330, 332, 334, 336, 121, 475, 264, 270, -112, + 289, 271, 349, 1001, 1013, 673, 292, -104, 432, -483, + 248, 672, 549, 775, 272, 549, 120, 549, 644, 549, + 652, 549, 768, 567, 391, 432, 685, 244, -96, 673, + 245, 246, 885, 337, 338, 695, 121, 387, 437, -296, + 752, 388, 841, -479, 273, 278, 868, 977, -482, 868, + 598, 244, -296, -296, 245, 246, 390, 514, 247, -77, + 248, 358, 437, 121, 285, -483, -296, 86, 673, 444, + 445, -104, 901, -484, 292, 812, 809, -485, 215, 215, + -91, 539, 247, 395, 248, -487, 272, 533, -296, 361, + 362, 602, -577, 673, 983, -296, 362, 470, 471, 734, + 396, -296, 320, -101, -482, -577, 339, 262, -296, 520, + -486, 262, 871, 205, 495, 363, 495, 527, 527, 280, + 504, 363, 527, 248, 497, 830, 868, 714, -488, -484, + 215, 602, 602, -485, 215, 547, -336, 373, 215, 215, + -474, -487, 737, 86, -478, 435, 971, 280, 86, 86, + -336, -573, 761, 447, 480, 572, 86, 420, 421, 422, + 454, 459, 711, 711, 441, 267, -486, 311, 442, 267, + 296, 718, 719, 757, 534, 591, 463, 268, 124, 124, + 757, 516, 436, 266, -488, -336, 124, 806, 373, 522, + 876, 468, -336, 467, 931, 741, -474, 472, 519, 428, + -478, 86, 215, 215, 215, 215, 86, 226, 215, 215, + -111, 918, 476, 424, -474, 562, 455, 670, 576, -111, + 576, 557, 558, 559, 560, 86, 478, 124, -474, 549, + 556, -103, 42, 483, 69, 43, 515, 534, 600, 561, + 674, 512, 935, 936, 120, 86, 515, 292, 215, 492, + 86, 311, 544, 609, 124, 426, 486, 505, 511, 849, + 262, -573, 436, -474, -110, 773, 396, -573, 757, 226, + -474, 296, 518, 504, -110, 789, 530, 626, 791, -76, + 60, 793, 886, 215, 120, 262, 999, 892, 894, 1002, + -111, 121, 818, 609, 609, -102, 532, 596, 504, 791, + 262, 650, 596, -106, 650, 524, 680, 790, 215, 262, + 86, 215, 730, 504, 533, 536, 972, 836, 267, 86, + -106, 554, 504, 215, -98, 650, 282, 86, 120, 714, + 708, 121, 215, 832, 644, -108, 652, 86, 829, 555, + 650, 757, 881, 267, 366, 386, 120, 571, 292, 650, + 495, 495, 757, 577, 741, 891, -100, 547, 267, 105, + 574, 651, 243, 373, 722, 711, 1043, 267, 586, 86, + 940, 941, 828, 262, 578, 121, 581, 533, 86, 782, + 819, 498, 914, -105, 205, 651, 504, 267, 650, 954, + 703, 267, 311, 121, 311, 712, 215, 584, 587, 590, + 651, 789, 69, 86, -97, 589, 717, 663, -108, 651, + -105, 727, 460, 650, 534, 790, 891, 681, 267, 521, + 677, 267, 601, 523, 678, 688, 729, 423, 682, -106, + 543, 267, 594, 396, 704, 700, 716, 604, 721, -91, + 771, 424, 724, -108, -105, 104, 481, 104, 651, 245, + 246, 751, 104, 104, 832, 800, 766, 311, 104, 104, + 104, 244, 282, 104, 245, 246, 783, 460, 776, 120, + 585, 120, 588, 651, 602, 777, 425, 604, 604, 741, + 602, -481, 124, 426, 778, 602, 602, 462, 418, 419, + 420, 421, 422, 104, 462, -481, 788, 801, 802, 1021, + 277, 740, 921, 277, 771, 771, 787, 104, 809, 244, + 817, 823, 245, 246, 792, 826, 121, 794, 121, 827, + 834, 277, 124, 837, 215, 86, 808, 811, 248, 811, + -481, 485, -96, 847, 120, 843, 811, -481, 566, 804, + 247, 965, 248, 799, 850, 527, 852, 967, 854, 856, + 205, 243, 904, 825, 533, 905, 215, 873, 897, 104, + 495, 104, 909, 673, 244, 449, 124, 245, 246, 1033, + 913, 282, 915, 205, 923, 824, 922, 927, 786, 424, + 939, 121, -285, 899, 124, 596, 273, 602, 942, 273, + 945, 492, 660, 662, 947, 247, -285, 248, -409, 949, + 951, 464, 576, 956, 957, 786, 335, 273, -409, 323, + 324, 267, 267, 968, 450, 424, 262, 969, 485, 833, + 978, 426, 979, 715, 660, 662, 985, 86, 924, 504, + 720, -285, 989, -103, 311, 86, 609, 990, -285, 215, + 991, 726, 609, 215, 1004, 771, 747, 609, 609, 580, + 465, 1005, 104, 86, 86, 907, 650, 426, 911, 325, + 326, -409, 760, 104, 104, 764, 1006, 86, 877, 1015, + 215, -409, 725, -591, 267, -409, -591, -591, 1017, 86, + 86, 495, 1022, 1024, 1026, -409, 1028, 86, 1046, 912, + 959, 1038, -576, 748, 749, 282, 282, 755, 86, 86, + -577, 755, 1048, 723, 754, 129, 248, 124, -409, 124, + -409, 120, -97, 576, 576, 104, 651, -409, -409, 104, + -409, 938, 774, 104, 104, 1037, 944, -409, 104, 860, + 1039, 1036, 1009, 104, 104, 744, 898, 353, 354, 355, + 356, 104, 482, 207, 753, 691, 691, 553, 993, 609, + 323, 324, 900, 357, 998, 211, 211, 758, 121, 86, + 86, 211, -286, 962, 496, 908, -297, 86, 811, 0, + 0, 0, 124, 0, 0, 0, -286, 916, 917, 0, + -297, 0, 0, 0, 0, 920, 104, 104, 104, 104, + 104, 104, 0, 104, 104, 485, 0, 925, 120, 803, + 325, 326, 485, 120, 0, 473, 0, 0, 0, 282, + 104, -286, 0, 1014, 267, -297, 0, -102, -286, 424, + 604, 0, -297, 86, 844, 86, 604, 888, 86, 0, + 104, 604, 604, 104, 0, 104, 0, 0, 104, 0, + 120, 513, 576, 262, 0, 121, 867, 851, 853, 855, + 121, 857, 835, 858, 474, 424, 504, 958, 680, 811, + 0, 426, 440, 0, 0, 966, 215, 0, 104, -293, + 846, 0, -293, -293, -574, 537, 0, 0, 104, 104, + 0, 0, 0, 650, 946, 948, 0, 121, 0, 424, + 465, 872, 0, 104, 0, 104, 104, 426, 866, -293, + -293, 267, -293, 396, 104, 863, 0, 0, 104, -106, + 0, 744, 104, 353, 354, 355, 356, 104, 409, 410, + 0, 1010, 104, 1011, 538, 0, 1012, 0, 930, 357, + 932, 426, 0, 604, 933, 0, 0, -478, -481, 0, + 798, 887, 889, 651, 0, 0, 893, 895, 0, 124, + 0, -478, -481, -108, 104, 0, 997, 417, 418, 419, + 420, 421, 422, 104, 0, 0, 211, 211, 0, 0, + 0, 0, 887, 889, 0, 893, 895, 0, 462, 0, + 322, 104, 323, 324, -574, 0, -478, -481, 104, -285, + -574, 214, 214, -478, -481, 0, 0, 214, 263, 263, + 982, 0, 263, -285, 980, 981, -106, 0, 0, -106, + -106, 0, 1023, 1025, 1027, 0, 1029, 1030, 0, 984, + 986, 987, 988, 1000, -580, 1003, 506, 509, 0, 286, + 288, 0, 325, 326, 263, 304, 124, -106, -285, -106, + 0, 124, 0, 0, 0, -285, 340, 341, 955, 0, + -108, 0, 0, -108, -108, 0, 1047, 1049, 1050, 1051, + 1016, 0, 755, 1018, 0, 872, 1053, -580, 872, 994, + 872, 955, 866, 0, 903, 866, 863, 866, 124, 863, + 0, -108, 863, -108, 863, -576, 0, -580, 0, 0, + 211, 211, 211, 211, 0, 1040, 564, 565, 214, 691, + 1042, -580, 1044, -576, 0, 0, 1045, 1041, -297, 104, + 104, 744, 0, 353, 354, 355, 356, 0, 872, 780, + 0, 0, -297, 0, 0, 866, 1052, 0, 0, 357, + -580, 0, 863, 424, -580, 0, -580, -577, -99, 0, + -576, 104, 0, -580, -580, 872, 0, 872, -576, 872, + 0, 872, 866, 359, 866, 0, 866, -297, 866, 863, + 992, 863, -576, 863, -297, 863, -576, 0, 781, 0, + 0, 872, 0, 0, 424, 426, 0, -580, 866, -580, + -576, 462, -577, -576, 0, 863, -580, 462, 974, 0, + 353, 354, 355, 356, 0, -576, 0, -576, 0, 675, + -577, -576, 214, 214, -576, 0, 357, 0, 0, 450, + 0, 1007, 104, -576, -577, -576, 426, -98, 0, -576, + 104, 104, -576, 0, 104, 424, 0, 104, 104, 329, + 323, 324, 104, 104, 548, 0, 323, 324, 104, 104, + 488, 489, 490, 340, 0, -577, 0, -577, 0, -577, + 0, -100, 104, -577, 263, 104, -577, 0, 263, -577, + 1008, 0, 214, 214, 104, 104, 0, 426, 0, 0, + 0, 0, 104, 331, 323, 324, 0, 0, 0, 0, + 325, 326, 0, 104, 104, 0, 325, 326, 0, 333, + 323, 324, -577, 0, -577, 543, 323, 324, -577, 396, + 0, -577, 0, 0, 244, 0, 0, 245, 246, 0, + 0, 550, 323, 324, 409, 410, 0, 0, 763, 0, + 353, 354, 355, 356, 325, 326, 214, 214, 214, 214, + 0, 492, 214, 214, 104, 247, 357, 248, 0, 358, + 325, 326, 0, 0, 104, 104, 325, 326, 0, 0, + 573, 0, 104, 0, 418, 419, 420, 421, 422, 0, + 359, 583, 325, 326, 551, 323, 324, 361, 362, 0, + 0, 0, 595, 552, 323, 324, 0, 606, 611, 612, + 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, + 623, 624, 625, 363, 628, 629, 630, 631, 632, 633, + 634, 635, 636, 637, 638, 396, 0, 263, 104, 0, + 104, 0, 211, 104, 0, 325, 326, 659, 659, 0, + 409, 410, 0, 0, 325, 326, 0, 103, 0, 103, + 127, 127, 263, 0, 0, 214, 0, 244, 229, 0, + 245, 246, 0, 0, 211, 659, 0, 263, 0, 659, + 659, 104, 739, 323, 324, 0, 263, 415, 416, 417, + 418, 419, 420, 421, 422, 702, 0, 0, 247, 706, + 248, 0, 0, 707, -603, 103, 710, 0, 713, 313, + 304, 352, 0, 353, 354, 355, 356, -603, -603, -603, + -603, -603, -603, 0, -603, 0, 0, 659, 0, 357, + -603, -603, 358, 325, 326, 0, 313, 710, 0, 0, + 304, -603, -603, 0, -603, -603, -603, -603, -603, 0, + 263, 0, 0, 359, 344, 345, 346, 347, 348, 360, + 361, 362, 0, 0, 0, 0, 742, 743, 0, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 750, 0, 0, 363, 0, 211, 364, + 0, 0, 0, -603, 352, 0, 353, 354, 355, 356, + 995, 0, 765, 0, 0, 772, 0, -603, 0, 0, + 0, 0, 357, 0, 0, 358, 0, -603, 0, 0, + -603, -603, 100, 0, 100, 126, 126, 126, 0, 0, + 0, 0, 0, 228, 0, 0, 359, 0, 0, 0, + -603, -603, 360, 361, 362, 0, 272, -603, -603, -603, + -603, 0, 83, 0, 83, 744, 0, 353, 354, 355, + 356, 0, 0, 225, 103, 0, 0, 0, 0, 363, + 100, 0, 364, 357, 312, 0, 0, 744, 214, 353, + 354, 355, 356, 0, 0, 365, 0, 0, 0, 0, + 805, 0, 0, 0, 0, 357, 0, 359, 0, 0, + 83, 312, 352, 745, 353, 354, 355, 356, 0, 0, + 214, 0, 0, 0, 0, 0, 0, 0, 0, 359, + 357, 831, 0, 358, 0, 928, 0, 0, 0, 0, + 710, 304, 0, 0, 0, 639, 640, 0, 100, 641, + 103, 0, 0, 0, 359, 103, 103, 0, 0, 0, + 360, 361, 362, 103, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 0, 313, 182, 183, 0, 83, 184, + 185, 186, 187, 0, 0, 0, 0, 363, 0, 0, + 364, 0, 0, 188, 189, 875, 0, 0, 0, 0, + 659, 878, 0, 263, 0, 0, 659, 659, 103, 0, + 0, 659, 659, 103, 229, 0, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 0, 200, 201, 0, + 0, 0, 103, 0, 214, 202, 272, 659, 659, 100, + 659, 659, 0, 0, 352, 0, 353, 354, 355, 356, + 919, 0, 103, 0, 0, 0, 0, 103, 313, 0, + 610, 0, 357, 0, 0, 358, 0, 0, 0, 83, + 929, 0, 0, 0, 0, 0, 229, 0, 0, 0, + 0, 934, 0, 0, 0, 0, 359, 0, 0, 0, + 0, 0, 360, 361, 362, 0, 950, 0, 0, 0, + 610, 610, 0, 0, 0, 0, 952, 953, 0, 0, + 0, 0, 0, 659, 0, 100, 0, 103, 0, 363, + 100, 100, 364, 0, 0, 0, 103, 0, 100, 0, + 0, 0, 0, 0, 103, 540, 659, 0, 0, 312, + 0, 0, 0, 304, 103, 83, 0, 0, 0, 0, + 83, 83, 0, 0, 0, 0, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 352, 0, 353, 354, 355, + 356, 0, 0, 100, 0, 0, 103, 0, 100, 228, + 0, 0, 0, 357, 0, 103, 358, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 100, 569, 313, + 0, 313, 0, 83, 0, 0, 0, 359, 83, 563, + 103, 0, 0, 360, 361, 362, 0, 100, 0, 0, + 0, 0, 100, 312, 0, 0, 0, 83, 0, 0, + 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 363, 228, 0, 364, 0, 0, 0, 83, 0, 0, + 0, 0, 83, 0, 0, 605, 0, 0, 0, 0, + 0, 0, 0, 0, 313, 0, 0, 0, 0, 0, + 0, 627, 0, 0, 0, 101, 0, 101, 0, 0, + 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, + 0, 100, 0, 0, 0, 605, 605, 0, 0, 100, + 0, 396, 397, 398, 399, 400, 401, 402, 403, 100, + 405, 406, 83, 0, 0, 0, 409, 410, 0, 0, + 0, 83, 0, 101, 0, 0, 0, 0, 0, 83, + 0, 0, 103, 0, 0, 0, 0, 0, 0, 83, + 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 100, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 0, 0, 0, 312, 0, 312, 0, 0, 0, + 0, 83, 0, 0, 0, 100, 0, 0, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, -604, -604, 0, 0, 409, 410, 312, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 0, 313, 103, 610, 0, 0, 0, 0, 0, 610, + 0, 0, 0, 0, 610, 610, 0, 0, 0, 0, + 103, 103, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 0, 0, 103, 0, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 0, 103, 103, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 100, 0, 0, + 0, 0, 0, 0, 0, 103, 103, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 83, 127, 0, + 0, 0, 0, 127, 0, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 0, 0, + 409, 410, 0, 0, 0, 0, 610, 0, 101, 0, + 0, 0, 0, 101, 101, 0, 103, 103, 0, 0, + 964, 101, 0, 0, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 412, 0, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 0, 0, 0, 0, 100, + 0, 0, 0, -272, 0, 0, 312, 100, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, + 0, 101, 0, 0, 0, 100, 100, 0, 0, 83, + 103, 0, 103, 0, 0, 103, 0, 83, 605, 100, + 101, 0, 0, 0, 605, 0, 0, 0, 0, 605, + 605, 100, 100, 0, 0, 83, 83, 0, 0, 100, + 101, 0, 0, 0, 0, 101, 0, 0, 101, 83, + 100, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 83, 0, 0, 0, 0, 0, 0, 83, + 0, 0, 0, 126, 0, 0, 0, 0, 126, 0, + 83, 83, 0, 0, 0, 0, 0, 0, 101, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 563, 0, 0, 0, 0, 0, 0, - -594, 0, 0, 80, 80, 0, 0, 0, 0, 0, - 0, 0, 932, 0, -594, 0, 80, 0, 0, 0, - 0, 0, 0, 0, -594, 98, 0, -594, -594, 0, - 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 306, 97, 0, 0, 0, 0, 0, -594, -594, 0, - 0, 0, 0, 266, -594, -594, -594, -594, 0, 97, - 97, 0, 0, 0, 0, 0, 0, 0, 0, 97, - 0, 0, 0, 0, 0, 80, 97, 0, 0, 0, - 0, 80, 0, 80, 0, 0, 80, 0, 97, 97, - 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, + 0, 100, 100, 0, 101, 963, 0, 0, 0, 100, + 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 605, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 83, 0, 0, 961, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 97, 97, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, - 0, 121, 98, 98, 0, 0, 121, 0, 0, 98, - 0, 0, 0, 0, 98, 98, 0, 0, 0, 0, - 98, 98, 0, 0, 0, 0, 0, 0, 0, 0, - 98, 0, 0, 0, 0, 0, 0, 98, 0, 97, - 97, 0, 0, 0, 0, 0, 0, 0, 934, 98, - 98, 0, 97, 0, 0, 0, 0, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 732, 0, 0, 0, - 0, 0, 98, 98, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 0, 0, 366, - 367, 97, 0, 0, 0, 0, 0, 97, 0, 97, - 98, 0, 97, 353, -595, -595, -595, -595, 358, 359, - 98, 98, -595, -595, 0, 0, 0, 0, 366, 367, - 0, 0, 368, 98, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 0, 0, 0, 0, 0, 0, - 0, 0, -260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 0, 100, 0, 100, 0, 0, + 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 83, 0, 83, 0, 0, + 83, 0, 0, 0, 0, 0, 0, -603, 4, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 0, 0, 0, 0, 0, 0, 15, 0, 16, 17, + 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, + 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, + 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 98, 0, 0, 0, 0, 0, 98, 0, - 98, -594, 4, 98, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, - 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, - 27, 0, 0, 0, 0, 0, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, + 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, + 101, 56, 57, 58, 59, 60, 61, 0, 0, 62, + -603, 0, 0, -603, -603, 0, 0, 396, -604, -604, + -604, -604, 401, 402, 0, 0, -604, -604, 0, 63, + 64, 65, 409, 410, 0, 0, 0, 0, 0, 0, + 0, -603, 0, -603, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 0, 0, 0, + 0, 0, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 0, 0, 409, 410, 0, + 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, + 101, 101, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 101, 101, 0, 0, 0, 0, 101, 101, + 412, 0, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 101, 101, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, - 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, - 61, -466, 0, 62, -594, 0, 0, -594, -594, 0, - 0, 0, 0, 0, -466, -466, -466, -466, -466, -466, - 0, -466, 0, 63, 64, 65, 0, 0, -466, -466, - 0, 0, 0, 0, 0, -594, 0, -594, -466, -466, - 0, -466, -466, -466, -466, -466, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 442, 0, + 0, -474, -474, -474, -474, -474, -474, 0, -474, 0, + 0, 0, 0, 0, 0, -474, -474, 0, 0, 0, + 0, 0, 0, 0, 101, -474, -474, 0, -474, -474, + -474, -474, -474, 0, 101, 101, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -466, -466, -466, -466, -466, -466, -466, - -466, -466, -466, -466, -466, -466, 0, 0, -466, -466, - -466, 0, -466, -466, 0, 0, 0, 0, 0, -466, - 0, 0, 0, 0, -466, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -466, 0, 0, -466, -466, 0, - -466, -466, 0, -466, -466, -466, -466, -466, -466, -466, - -466, -466, -466, 0, 0, -594, 0, 0, -466, -466, - -466, -466, 0, 0, -466, -466, -466, -466, -594, -594, - -594, -594, -594, -594, 0, -594, 0, 0, 0, 0, - 0, 0, -594, -594, 0, 0, 0, 0, 0, 0, - 0, 0, -594, -594, 0, -594, -594, -594, -594, -594, + -474, -474, -474, -474, -474, -474, -474, -474, -474, -474, + -474, -474, -474, 0, 0, -474, -474, -474, 0, -474, + -474, 0, 0, 0, 0, 0, -474, 0, 0, 0, + 0, -474, 0, 0, 0, 0, 0, 0, 101, 0, + 101, -474, 0, 101, -474, -474, 0, -474, -474, 0, + -474, -474, -474, -474, -474, -474, -474, -474, -474, -474, + 0, 0, -603, 0, 0, -474, -474, -474, -474, 0, + 0, -474, -474, -474, -474, -603, -603, -603, -603, -603, + -603, 0, -603, 0, 0, 0, 0, 0, 0, -603, + -603, 0, 0, 0, 0, 0, 0, 0, 0, -603, + -603, 0, -603, -603, -603, -603, -603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -594, -594, -594, - -594, -594, -594, -594, -594, -594, -594, -594, -594, -594, - 0, 0, -594, -594, -594, 0, 0, -594, 0, 0, - 0, 0, 0, -594, 0, 0, 0, 0, -594, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -594, 0, - 0, -594, -594, 0, 0, -594, 0, -594, -594, -594, - -594, -594, -594, -594, -594, -594, -594, 0, 0, -571, - 0, 0, -594, -594, -594, -594, 0, 266, -594, -594, - -594, -594, -571, -571, -571, 0, -571, -571, 0, -571, - 0, 0, 0, 0, 0, -571, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -571, -571, 0, -571, - -571, -571, -571, -571, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -603, -603, -603, -603, -603, -603, + -603, -603, -603, -603, -603, -603, -603, 0, 0, -603, + -603, -603, 0, 0, -603, 0, 0, 0, 0, 0, + -603, 0, 0, 0, 0, -603, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -603, 0, 0, -603, -603, + 0, 0, -603, 0, -603, -603, -603, -603, -603, -603, + -603, -603, -603, -603, 0, 0, -580, 0, 0, -603, + -603, -603, -603, 0, 272, -603, -603, -603, -603, -580, + -580, -580, 0, -580, -580, 0, -580, 0, 0, 0, + 0, 0, -580, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -580, -580, 0, -580, -580, -580, -580, + -580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -580, -580, + -580, -580, -580, -580, -580, -580, -580, -580, -580, -580, + -580, 0, 0, -580, -580, -580, 0, 784, -580, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -580, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -580, + 0, 0, -580, -580, 0, -107, -580, 0, -580, -580, + -580, -580, -580, -580, -580, -580, -580, -580, 0, 0, + -580, 0, -580, -580, -580, 0, -99, 0, 0, -580, + -580, -580, -580, -580, -580, -580, 0, -580, -580, 0, + -580, 0, 0, 0, 0, 0, -580, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -580, -580, 0, + -580, -580, -580, -580, -580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -571, -571, -571, -571, -571, -571, -571, -571, -571, - -571, -571, -571, -571, 0, 0, -571, -571, -571, 0, - 737, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -571, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -571, 0, 0, -571, -571, 0, -99, -571, - 0, -571, -571, -571, -571, -571, -571, -571, -571, -571, - -571, 0, 0, -571, 0, -571, -571, -571, 0, -91, - 0, 0, -571, -571, -571, -571, -571, -571, -571, 0, - -571, -571, 0, -571, 0, 0, 0, 0, 0, -571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -571, -571, 0, -571, -571, -571, -571, -571, 0, 0, + 0, 0, -580, -580, -580, -580, -580, -580, -580, -580, + -580, -580, -580, -580, -580, 0, 0, -580, -580, -580, + 0, 784, -580, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -580, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -580, 0, 0, -580, -580, 0, -107, + -580, 0, -580, -580, -580, -580, -580, -580, -580, -580, + -580, -580, 0, 0, -296, 0, -580, -580, -580, 0, + -580, 0, 0, -580, -580, -580, -580, -296, -296, -296, + 0, -296, -296, 0, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -296, -296, 0, -296, -296, -296, -296, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -571, -571, -571, -571, -571, - -571, -571, -571, -571, -571, -571, -571, -571, 0, 0, - -571, -571, -571, 0, 737, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -571, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -571, 0, 0, -571, - -571, 0, -99, -571, 0, -571, -571, -571, -571, -571, - -571, -571, -571, -571, -571, 0, 0, -284, 0, -571, - -571, -571, 0, -571, 0, 0, -571, -571, -571, -571, - -284, -284, -284, 0, -284, -284, 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -284, -284, 0, -284, -284, -284, - -284, -284, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, 0, + 0, -296, -296, -296, 0, 785, -296, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -296, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -296, 0, 0, + -296, -296, 0, -109, -296, 0, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, 0, 0, -296, 0, + 0, -296, -296, 0, -101, 0, 0, -296, -296, -296, + -296, -296, -296, -296, 0, -296, -296, 0, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, 0, 0, -284, -284, -284, 0, 738, 0, + 0, 0, 0, 0, 0, -296, -296, 0, -296, -296, + -296, -296, -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -284, 0, 0, -284, -284, 0, -101, -284, 0, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, 0, - 0, -284, 0, 0, -284, -284, 0, -93, 0, 0, - -284, -284, -284, -284, -284, -284, -284, 0, -284, -284, - 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -284, -284, - 0, -284, -284, -284, -284, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, 0, 0, -296, -296, -296, 0, 785, + -296, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -296, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -296, 0, 0, -296, -296, 0, -109, -296, 0, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + 0, 0, 0, 0, 0, -296, -296, 0, -296, 0, + 0, -296, -296, -296, -296, 290, 0, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, -603, -603, -603, + 0, 0, -603, 15, 0, 16, 17, 18, 19, 0, + 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, + 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, + 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, + 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, 0, 0, -284, -284, - -284, 0, 738, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -284, 0, 0, -284, -284, 0, - -101, -284, 0, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, 0, 0, 0, 0, 0, -284, -284, - 0, -284, 0, 0, -284, -284, -284, -284, 284, 0, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - -594, -594, -594, 0, 0, -594, 15, 0, 16, 17, - 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, - 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, - 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, - 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, + 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, + 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, + 58, 59, 60, 61, 0, 0, 62, -603, 0, 0, + -603, -603, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 63, 64, 65, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -603, 290, + -603, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 0, 0, -603, 0, -603, -603, 15, 0, 16, + 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, + 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, + 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, + 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, - 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, - 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, - -594, 0, 0, -594, -594, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -594, 284, -594, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 0, 0, -594, 0, -594, -594, - 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, - 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, - 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, - 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, - 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, + 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, + 62, -603, 0, 0, -603, -603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, - 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, - 61, 0, 0, 62, -594, 0, 0, -594, -594, 0, + 63, 64, 65, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -603, 290, -603, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 0, 0, -603, 0, 0, + -603, 15, -603, 16, 17, 18, 19, 0, 0, 0, + 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, + 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, + 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, + 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 64, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -594, 284, -594, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, - -594, 0, 0, -594, 15, -594, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, - 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, - 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, + 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, + 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, + 60, 61, 0, 0, 62, -603, 0, 0, -603, -603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, - 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, - 57, 58, 59, 60, 61, 0, 0, 62, -594, 0, - 0, -594, -594, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -594, - 284, -594, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 0, 0, -594, 0, 0, -594, 15, 0, - 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, - 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, - 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, - 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, - 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, - 0, 62, -594, 0, 0, -594, -594, 4, 0, 5, + 0, 0, 0, 0, 63, 64, 65, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -603, 290, -603, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, - 0, 63, 64, 65, 0, 15, 0, 16, 17, 18, - 19, 0, 0, -594, 0, -594, 20, 21, 22, 23, + 0, -603, 0, 0, -603, 15, 0, 16, 17, 18, + 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, - 56, 57, 58, 59, 60, 61, 0, 0, 62, -594, - 0, 0, -594, -594, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, - 65, 0, 0, -594, 0, 0, 0, 0, 0, 0, - -594, 284, -594, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 0, -594, -594, 0, 0, 0, 15, - 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, - 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, - 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 57, 58, 59, 60, 61, 0, 0, 62, -603, + 0, 0, -603, -603, 4, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, + 65, 0, 15, 0, 16, 17, 18, 19, 0, 0, + -603, 0, -603, 20, 21, 22, 23, 24, 25, 26, + 0, 0, 27, 0, 0, 0, 0, 0, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, - 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, - 0, 0, 62, -594, 0, 0, -594, -594, 284, 0, + 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, + 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, + 59, 60, 61, 0, 0, 62, -603, 0, 0, -603, + -603, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 64, 65, 0, 0, + -603, 0, 0, 0, 0, 0, 0, -603, 290, -603, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 0, 0, 63, 64, 65, 0, 15, 0, 16, 17, - 18, 19, 0, 0, -594, 0, -594, 20, 21, 22, + 0, -603, -603, 0, 0, 0, 15, 0, 16, 17, + 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, - 285, 51, 0, 52, 53, 0, 54, 0, 0, 55, + 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, - -594, 0, 0, -594, -594, 284, 0, 5, 6, 7, + -603, 0, 0, -603, -603, 290, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, 0, 15, 0, 16, 17, 18, 19, 0, - -594, -594, 0, -594, 20, 21, 22, 23, 24, 25, + 0, -603, 0, -603, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, + 0, 0, 0, 0, 49, 0, 0, 291, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, - 58, 59, 60, 61, 0, 0, 62, -594, 0, 0, - -594, -594, 284, 0, 5, 6, 7, 8, 9, 10, + 58, 59, 60, 61, 0, 0, 62, -603, 0, 0, + -603, -603, 290, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, 0, - 15, 0, 16, 17, 18, 19, 0, -594, -594, 0, - -594, 20, 21, 22, 23, 24, 25, 26, 0, 0, + 15, 0, 16, 17, 18, 19, 0, -603, -603, 0, + -603, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, @@ -2860,1138 +2923,1174 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, - 61, 0, 0, 62, -594, 0, 0, -594, -594, 0, + 61, 0, 0, 62, -603, 0, 0, -603, -603, 290, + 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 0, 0, 63, 64, 65, 0, 15, 0, 16, + 17, 18, 19, 0, -603, -603, 0, -603, 20, 21, + 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, + 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, + 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 64, 65, 0, 0, -594, 0, - 0, 0, 0, 0, 0, -594, 284, -594, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, - -594, 0, 0, 0, 15, 0, 16, 17, 18, 19, - 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, - 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, - 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, - 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, + 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, + 62, -603, 0, 0, -603, -603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, - 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, - 57, 58, 59, 60, 61, 0, 0, 62, -594, 0, - 0, -594, -594, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, - 0, 15, 0, 16, 17, 18, 19, 0, 0, -594, - 0, -594, 20, 21, 22, 23, 24, 25, 26, 0, - 0, 27, 0, 0, 0, 0, 0, 28, 29, 30, + 63, 64, 65, 0, 0, -603, 0, 0, 0, 0, + 0, 0, -603, 290, -603, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 0, 0, -603, 0, 0, + 0, 15, 0, 16, 17, 18, 19, 0, 0, 0, + 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, + 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, - 60, 61, 0, 0, 62, 238, 0, 0, 239, 240, + 60, 61, 0, 0, 62, -603, 0, 0, -603, -603, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, 0, 15, 0, - 16, 17, 18, 19, 0, 0, 241, 0, 242, 20, + 16, 17, 18, 19, 0, 0, -603, 0, -603, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, - 0, 0, 0, 0, 28, 0, 30, 31, 32, 33, + 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, - 0, 62, 238, 0, 0, 239, 240, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, + 0, 62, 244, 0, 0, 245, 246, 0, 0, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 63, 64, 65, 0, 15, 0, 16, 17, 18, - 19, 0, 0, 241, 0, 242, 20, 21, 22, 23, + 19, 0, 0, 247, 0, 248, 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, + 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 205, 0, 0, 115, - 51, 0, 52, 53, 0, 0, 0, 0, 55, 0, - 56, 57, 58, 59, 60, 61, 0, 0, 62, 238, - 0, 0, 239, 240, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, - 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 241, 0, 242, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 0, 0, 0, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 0, 0, 0, 0, 0, 159, 160, 161, 162, 163, - 164, 165, 166, 36, 37, 167, 39, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 0, - 0, 177, 178, 0, 0, 179, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, - 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 196, 0, 0, 0, 0, 0, - 0, 197, 198, -564, -564, -564, -564, -564, -564, -564, - -564, -564, 0, 0, 0, 0, 0, 0, 0, -564, - 0, -564, -564, -564, -564, 0, -564, 0, 0, 0, - -564, -564, -564, -564, -564, -564, -564, 0, 0, -564, - 0, 0, 0, 0, 0, 0, 0, 0, -564, -564, - -564, -564, -564, -564, -564, -564, -564, 0, -564, -564, - -564, 0, 0, -564, 0, 0, -564, -564, 0, -564, - -564, -564, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -564, 0, 0, -564, -564, 0, -564, -564, 0, -564, - -564, -564, -564, 0, -564, -564, -564, -564, -564, -564, - 0, 0, -564, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -564, -564, -564, 0, -564, 0, 0, 0, - 0, 0, -564, -566, -566, -566, -566, -566, -566, -566, - -566, -566, 0, 0, 0, 0, 0, 0, 0, -566, - 0, -566, -566, -566, -566, 0, -566, 0, 0, 0, - -566, -566, -566, -566, -566, -566, -566, 0, 0, -566, - 0, 0, 0, 0, 0, 0, 0, 0, -566, -566, - -566, -566, -566, -566, -566, -566, -566, 0, -566, -566, - -566, 0, 0, -566, 0, 0, -566, -566, 0, -566, - -566, -566, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -566, 0, 0, -566, -566, 0, -566, -566, 0, -566, - -566, -566, -566, 0, -566, -566, -566, -566, -566, -566, - 0, 0, -566, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -566, -566, -566, 0, -566, 0, 0, 0, - 0, 0, -566, -565, -565, -565, -565, -565, -565, -565, - -565, -565, 0, 0, 0, 0, 0, 0, 0, -565, - 0, -565, -565, -565, -565, 0, -565, 0, 0, 0, - -565, -565, -565, -565, -565, -565, -565, 0, 0, -565, - 0, 0, 0, 0, 0, 0, 0, 0, -565, -565, - -565, -565, -565, -565, -565, -565, -565, 0, -565, -565, - -565, 0, 0, -565, 0, 0, -565, -565, 0, -565, - -565, -565, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -565, 0, 0, -565, -565, 0, -565, -565, 0, -565, - -565, -565, -565, 0, -565, -565, -565, -565, -565, -565, - 0, 0, -565, 0, 0, 0, 0, 0, 0, -567, - -567, -567, -567, -567, -567, -567, -567, -567, 0, 0, - 0, 0, -565, -565, -565, -567, -565, -567, -567, -567, - -567, 0, -565, 0, 0, 0, -567, -567, -567, -567, - -567, -567, -567, 0, 0, -567, 0, 0, 0, 0, - 0, 0, 0, 0, -567, -567, -567, -567, -567, -567, - -567, -567, -567, 0, -567, -567, -567, 0, 0, -567, - 0, 0, -567, -567, 0, -567, -567, -567, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -567, 771, 0, -567, - -567, 0, -567, -567, 0, -567, -567, -567, -567, 0, - -567, -567, -567, -567, -567, -567, 0, 0, -567, 0, - 0, 0, 0, 0, 0, -99, -568, -568, -568, -568, - -568, -568, -568, -568, -568, 0, 0, 0, -567, -567, - -567, 0, -568, 0, -568, -568, -568, -568, -567, 0, - 0, 0, 0, -568, -568, -568, -568, -568, -568, -568, - 0, 0, -568, 0, 0, 0, 0, 0, 0, 0, - 0, -568, -568, -568, -568, -568, -568, -568, -568, -568, - 0, -568, -568, -568, 0, 0, -568, 0, 0, -568, - -568, 0, -568, -568, -568, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -568, 772, 0, -568, -568, 0, -568, - -568, 0, -568, -568, -568, -568, 0, -568, -568, -568, - -568, -568, -568, 0, 0, -568, 0, 0, 0, 0, - 0, 0, -101, -253, -253, -253, -253, -253, -253, -253, - -253, -253, 0, 0, 0, -568, -568, -568, 0, -253, - 0, -253, -253, -253, -253, -568, 0, 0, 0, 0, - -253, -253, -253, -253, -253, -253, -253, 0, 0, -253, - 0, 0, 0, 0, 0, 0, 0, 0, -253, -253, - -253, -253, -253, -253, -253, -253, -253, 0, -253, -253, - -253, 0, 0, -253, 0, 0, -253, -253, 0, -253, - -253, -253, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -253, 0, 0, -253, -253, 0, -253, -253, 0, -253, - -253, -253, -253, 0, -253, -253, -253, -253, -253, -253, - 0, 0, -253, 0, 0, 0, 0, 0, 0, -569, - -569, -569, -569, -569, -569, -569, -569, -569, 0, 0, - 0, 0, -253, -253, -253, -569, 0, -569, -569, -569, - -569, 0, 266, 0, 0, 0, -569, -569, -569, -569, - -569, -569, -569, 0, 0, -569, 0, 0, 0, 0, - 0, 0, 0, 0, -569, -569, -569, -569, -569, -569, - -569, -569, -569, 0, -569, -569, -569, 0, 0, -569, - 0, 0, -569, -569, 0, -569, -569, -569, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -569, 0, 0, -569, - -569, 0, -569, -569, 0, -569, -569, -569, -569, 0, - -569, -569, -569, -569, -569, -569, 0, 0, -569, 0, - 0, 0, 0, 0, 0, -570, -570, -570, -570, -570, - -570, -570, -570, -570, 0, 0, 0, 0, -569, -569, - -569, -570, 0, -570, -570, -570, -570, 0, -569, 0, - 0, 0, -570, -570, -570, -570, -570, -570, -570, 0, - 0, -570, 0, 0, 0, 0, 0, 0, 0, 0, - -570, -570, -570, -570, -570, -570, -570, -570, -570, 0, - -570, -570, -570, 0, 0, -570, 0, 0, -570, -570, - 0, -570, -570, -570, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -570, 0, 0, -570, -570, 0, -570, -570, - 0, -570, -570, -570, -570, 0, -570, -570, -570, -570, - -570, -570, 0, 0, -570, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, + 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, + 56, 57, 58, 59, 60, 61, 0, 0, 62, 244, + 0, 0, 245, 246, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 63, 64, + 65, 0, 15, 0, 16, 17, 18, 19, 0, 0, + 247, 0, 248, 20, 21, 22, 23, 24, 25, 26, + 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -570, -570, -570, 0, 0, 0, - 0, 0, 0, 0, -570, 125, 126, 127, 128, 129, + 0, 0, 0, 210, 0, 0, 118, 51, 0, 52, + 53, 0, 0, 0, 0, 55, 0, 56, 57, 58, + 59, 60, 61, 0, 0, 62, 244, 0, 0, 245, + 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 64, 65, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 247, 0, 248, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 0, - 0, 0, 149, 150, 151, 224, 225, 226, 227, 156, - 157, 158, 0, 0, 0, 0, 0, 159, 160, 161, - 228, 229, 230, 231, 166, 309, 310, 232, 311, 0, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, - 0, 0, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 0, 0, 177, 178, 0, 0, 179, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 183, 184, 0, 0, 0, 0, 0, 0, 0, - 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 196, 0, 0, 0, - 0, 0, 0, 197, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 0, 0, - 0, 149, 150, 151, 224, 225, 226, 227, 156, 157, - 158, 0, 0, 0, 0, 0, 159, 160, 161, 228, - 229, 230, 231, 166, 309, 310, 232, 311, 0, 0, - 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, - 0, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 0, 0, 177, 178, 0, 0, 179, 180, 181, 182, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 0, 0, 0, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 0, 0, 0, + 0, 0, 164, 165, 166, 167, 168, 169, 170, 171, + 36, 37, 172, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, + 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 183, 184, 0, 0, 0, 0, 0, 0, 0, 433, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, + 200, 201, 0, 0, 0, 0, 0, 0, 202, 203, + -573, -573, -573, -573, -573, -573, -573, -573, -573, 0, + 0, 0, 0, 0, 0, 0, -573, 0, -573, -573, + -573, -573, 0, -573, 0, 0, 0, -573, -573, -573, + -573, -573, -573, -573, 0, 0, -573, 0, 0, 0, + 0, 0, 0, 0, 0, -573, -573, -573, -573, -573, + -573, -573, -573, -573, 0, -573, -573, -573, 0, 0, + -573, 0, 0, -573, -573, 0, -573, -573, -573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 0, 195, 196, 0, 0, 0, 0, - 0, 0, 197, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 0, 0, 0, - 149, 150, 151, 224, 225, 226, 227, 156, 157, 158, - 0, 0, 0, 0, 0, 159, 160, 161, 228, 229, - 230, 231, 166, 0, 0, 232, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -573, 0, 0, + -573, -573, 0, -573, -573, 0, -573, -573, -573, -573, + 0, -573, -573, -573, -573, -573, -573, 0, 0, -573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 0, - 0, 177, 178, 0, 0, 179, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, - 184, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -573, + -573, -573, 0, -573, 0, 0, 0, 0, 0, -573, + -575, -575, -575, -575, -575, -575, -575, -575, -575, 0, + 0, 0, 0, 0, 0, 0, -575, 0, -575, -575, + -575, -575, 0, -575, 0, 0, 0, -575, -575, -575, + -575, -575, -575, -575, 0, 0, -575, 0, 0, 0, + 0, 0, 0, 0, 0, -575, -575, -575, -575, -575, + -575, -575, -575, -575, 0, -575, -575, -575, 0, 0, + -575, 0, 0, -575, -575, 0, -575, -575, -575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 196, 0, 0, 0, 0, 0, - 0, 197, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 0, 0, 0, 149, - 150, 151, 224, 225, 226, 227, 156, 157, 158, 0, - 0, 0, 0, 0, 159, 160, 161, 228, 229, 230, - 231, 166, 0, 0, 232, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 0, 0, - 177, 178, 0, 0, 179, 180, 181, 182, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 183, 184, + 0, 0, 0, 0, 0, 0, 0, -575, 0, 0, + -575, -575, 0, -575, -575, 0, -575, -575, -575, -575, + 0, -575, -575, -575, -575, -575, -575, 0, 0, -575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -575, + -575, -575, 0, -575, 0, 0, 0, 0, 0, -575, + -574, -574, -574, -574, -574, -574, -574, -574, -574, 0, + 0, 0, 0, 0, 0, 0, -574, 0, -574, -574, + -574, -574, 0, -574, 0, 0, 0, -574, -574, -574, + -574, -574, -574, -574, 0, 0, -574, 0, 0, 0, + 0, 0, 0, 0, 0, -574, -574, -574, -574, -574, + -574, -574, -574, -574, 0, -574, -574, -574, 0, 0, + -574, 0, 0, -574, -574, 0, -574, -574, -574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 0, 195, 196, 0, 0, 0, 0, 0, 0, - 197, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 104, - 105, 18, 19, 0, 0, 0, 0, 0, 106, 107, - 108, 23, 24, 25, 26, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -574, 0, 0, + -574, -574, 0, -574, -574, 0, -574, -574, -574, -574, + 0, -574, -574, -574, -574, -574, -574, 0, 0, -574, + 0, 0, 0, 0, 0, 0, -576, -576, -576, -576, + -576, -576, -576, -576, -576, 0, 0, 0, 0, -574, + -574, -574, -576, -574, -576, -576, -576, -576, 0, -574, + 0, 0, 0, -576, -576, -576, -576, -576, -576, -576, + 0, 0, -576, 0, 0, 0, 0, 0, 0, 0, + 0, -576, -576, -576, -576, -576, -576, -576, -576, -576, + 0, -576, -576, -576, 0, 0, -576, 0, 0, -576, + -576, 0, -576, -576, -576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 302, 0, - 0, 115, 51, 0, 52, 53, 0, 0, 0, 0, - 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, - 62, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 0, 0, 0, 15, - 116, 104, 105, 18, 19, 0, 0, 0, 303, 0, - 106, 107, 108, 23, 24, 25, 26, 0, 0, 109, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 112, + 0, 0, 0, -576, 815, 0, -576, -576, 0, -576, + -576, 0, -576, -576, -576, -576, 0, -576, -576, -576, + -576, -576, -576, 0, 0, -576, 0, 0, 0, 0, + 0, 0, -107, -577, -577, -577, -577, -577, -577, -577, + -577, -577, 0, 0, 0, -576, -576, -576, 0, -577, + 0, -577, -577, -577, -577, -576, 0, 0, 0, 0, + -577, -577, -577, -577, -577, -577, -577, 0, 0, -577, + 0, 0, 0, 0, 0, 0, 0, 0, -577, -577, + -577, -577, -577, -577, -577, -577, -577, 0, -577, -577, + -577, 0, 0, -577, 0, 0, -577, -577, 0, -577, + -577, -577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -577, 816, 0, -577, -577, 0, -577, -577, 0, -577, + -577, -577, -577, 0, -577, -577, -577, -577, -577, -577, + 0, 0, -577, 0, 0, 0, 0, 0, 0, -109, + -265, -265, -265, -265, -265, -265, -265, -265, -265, 0, + 0, 0, -577, -577, -577, 0, -265, 0, -265, -265, + -265, -265, -577, 0, 0, 0, 0, -265, -265, -265, + -265, -265, -265, -265, 0, 0, -265, 0, 0, 0, + 0, 0, 0, 0, 0, -265, -265, -265, -265, -265, + -265, -265, -265, -265, 0, -265, -265, -265, 0, 0, + -265, 0, 0, -265, -265, 0, -265, -265, -265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 302, 0, 0, 115, 51, 0, 52, 53, 0, 0, - 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, - 0, 0, 62, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, - 0, 15, 116, 16, 17, 18, 19, 0, 0, 0, - 557, 0, 20, 21, 22, 23, 24, 25, 26, 0, - 0, 27, 0, 0, 0, 0, 0, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -265, 0, 0, + -265, -265, 0, -265, -265, 0, -265, -265, -265, -265, + 0, -265, -265, -265, -265, -265, -265, 0, 0, -265, + 0, 0, 0, 0, 0, 0, -578, -578, -578, -578, + -578, -578, -578, -578, -578, 0, 0, 0, 0, -265, + -265, -265, -578, 0, -578, -578, -578, -578, 0, 272, + 0, 0, 0, -578, -578, -578, -578, -578, -578, -578, + 0, 0, -578, 0, 0, 0, 0, 0, 0, 0, + 0, -578, -578, -578, -578, -578, -578, -578, -578, -578, + 0, -578, -578, -578, 0, 0, -578, 0, 0, -578, + -578, 0, -578, -578, -578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 0, 0, 50, 51, 0, 52, 53, - 0, 54, 0, 0, 55, 0, 56, 57, 58, 59, - 60, 61, 0, 0, 62, 0, 0, 0, 0, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 63, 64, 65, 15, 0, 16, - 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, - 22, 23, 24, 25, 26, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 251, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, + 0, 0, 0, -578, 0, 0, -578, -578, 0, -578, + -578, 0, -578, -578, -578, -578, 0, -578, -578, -578, + -578, -578, -578, 0, 0, -578, 0, 0, 0, 0, + 0, 0, -579, -579, -579, -579, -579, -579, -579, -579, + -579, 0, 0, 0, 0, -578, -578, -578, -579, 0, + -579, -579, -579, -579, 0, -578, 0, 0, 0, -579, + -579, -579, -579, -579, -579, -579, 0, 0, -579, 0, + 0, 0, 0, 0, 0, 0, 0, -579, -579, -579, + -579, -579, -579, -579, -579, -579, 0, -579, -579, -579, + 0, 0, -579, 0, 0, -579, -579, 0, -579, -579, + -579, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -579, + 0, 0, -579, -579, 0, -579, -579, 0, -579, -579, + -579, -579, 0, -579, -579, -579, -579, -579, -579, 0, + 0, -579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 455, 0, 0, 0, 0, 0, 205, 0, - 0, 115, 51, 0, 52, 53, 0, 252, 253, 254, - 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, - 62, 0, 0, 0, 0, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 0, 0, 0, - 63, 255, 65, 15, 0, 16, 17, 18, 19, 0, - 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, - 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, - 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, + 0, -579, -579, -579, 0, 0, 0, 0, 0, 0, + 0, -579, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 0, 0, 0, 154, + 155, 156, 230, 231, 232, 233, 161, 162, 163, 0, + 0, 0, 0, 0, 164, 165, 166, 234, 235, 236, + 237, 171, 315, 316, 238, 317, 0, 0, 0, 0, + 0, 0, 318, 0, 0, 0, 0, 0, 0, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, + 182, 183, 0, 0, 184, 185, 186, 187, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, + 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 50, 51, 0, - 52, 53, 0, 54, 0, 0, 55, 0, 56, 57, - 58, 59, 60, 61, 0, 0, 62, 0, 0, 0, - 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 63, 64, 65, 15, - 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, - 20, 21, 22, 23, 24, 25, 26, 0, 0, 109, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 251, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 0, 200, 201, 0, 0, 0, 0, 0, 0, + 202, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 0, 0, 0, 154, 155, + 156, 230, 231, 232, 233, 161, 162, 163, 0, 0, + 0, 0, 0, 164, 165, 166, 234, 235, 236, 237, + 171, 315, 316, 238, 317, 0, 0, 0, 0, 0, + 0, 318, 0, 0, 0, 0, 0, 0, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 0, 0, 182, + 183, 0, 0, 184, 185, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 188, 189, 0, + 0, 0, 0, 0, 0, 0, 477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 205, 0, 0, 115, 51, 0, 52, 53, 0, 252, - 253, 254, 55, 0, 56, 57, 58, 59, 60, 61, - 0, 0, 62, 0, 0, 0, 0, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 63, 255, 65, 15, 0, 104, 105, 18, - 19, 0, 0, 0, 0, 0, 106, 107, 108, 23, - 24, 25, 26, 0, 0, 109, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 251, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 0, 200, 201, 0, 0, 0, 0, 0, 0, 202, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 0, 0, 0, 154, 155, 156, + 230, 231, 232, 233, 161, 162, 163, 0, 0, 0, + 0, 0, 164, 165, 166, 234, 235, 236, 237, 171, + 0, 0, 238, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, + 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, + 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, + 200, 201, 0, 0, 0, 0, 0, 0, 202, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 0, 0, 0, 154, 155, 156, 230, + 231, 232, 233, 161, 162, 163, 0, 0, 0, 0, + 0, 164, 165, 166, 234, 235, 236, 237, 171, 0, + 0, 238, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 0, 0, 182, 183, 0, + 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 205, 0, 0, 115, - 51, 0, 52, 53, 0, 666, 253, 254, 55, 0, - 56, 57, 58, 59, 60, 61, 0, 0, 62, 0, - 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 63, 255, - 65, 15, 0, 104, 105, 18, 19, 0, 0, 0, - 0, 0, 106, 107, 108, 23, 24, 25, 26, 0, - 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 251, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 0, 200, + 201, 0, 0, 0, 0, 0, 0, 202, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 107, 108, 18, 19, + 0, 0, 0, 0, 0, 109, 110, 111, 23, 24, + 25, 26, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 205, 0, 0, 115, 51, 0, 52, 53, - 0, 252, 253, 0, 55, 0, 56, 57, 58, 59, - 60, 61, 0, 0, 62, 0, 0, 0, 0, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 63, 255, 65, 15, 0, 104, - 105, 18, 19, 0, 0, 0, 0, 0, 106, 107, - 108, 23, 24, 25, 26, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 251, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, + 0, 0, 0, 0, 0, 308, 0, 0, 118, 51, + 0, 52, 53, 0, 0, 0, 0, 55, 0, 56, + 57, 58, 59, 60, 61, 0, 0, 62, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 0, 0, 0, 15, 119, 107, 108, + 18, 19, 0, 0, 0, 309, 0, 109, 110, 111, + 23, 24, 25, 26, 0, 0, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 205, 0, - 0, 115, 51, 0, 52, 53, 0, 0, 253, 254, - 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, - 62, 0, 0, 0, 0, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 63, 255, 65, 15, 0, 104, 105, 18, 19, 0, - 0, 0, 0, 0, 106, 107, 108, 23, 24, 25, - 26, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 251, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 308, 0, 0, + 118, 51, 0, 52, 53, 0, 0, 0, 0, 55, + 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 0, 0, 0, 0, 0, 0, 15, 119, + 16, 17, 18, 19, 0, 0, 0, 599, 0, 20, + 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, + 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 50, 51, 0, 52, 53, 0, 54, 0, + 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, + 0, 62, 0, 0, 0, 0, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 63, 64, 65, 15, 0, 16, 17, 18, 19, + 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 257, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 499, + 0, 0, 0, 0, 0, 210, 0, 0, 118, 51, + 0, 52, 53, 0, 258, 259, 260, 55, 0, 56, + 57, 58, 59, 60, 61, 0, 0, 62, 0, 0, + 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 0, 0, 0, 63, 261, 65, + 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, + 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, + 27, 0, 0, 0, 0, 0, 28, 0, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 205, 0, 0, 115, 51, 0, - 52, 53, 0, 666, 253, 0, 55, 0, 56, 57, - 58, 59, 60, 61, 0, 0, 62, 0, 0, 0, - 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 63, 255, 65, 15, - 0, 104, 105, 18, 19, 0, 0, 0, 0, 0, - 106, 107, 108, 23, 24, 25, 26, 0, 0, 109, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 251, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 49, 0, 0, 50, 51, 0, 52, 53, 0, + 54, 0, 0, 55, 0, 56, 57, 58, 59, 60, + 61, 0, 0, 62, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 63, 64, 65, 15, 0, 16, 17, + 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, + 23, 24, 25, 26, 0, 0, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 257, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 205, 0, 0, 115, 51, 0, 52, 53, 0, 0, - 253, 0, 55, 0, 56, 57, 58, 59, 60, 61, - 0, 0, 62, 0, 0, 0, 0, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 63, 255, 65, 15, 0, 16, 17, 18, - 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, - 24, 25, 26, 0, 0, 109, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, + 118, 51, 0, 52, 53, 0, 258, 259, 260, 55, + 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, + 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 63, + 261, 65, 15, 0, 107, 108, 18, 19, 0, 0, + 0, 0, 0, 109, 110, 111, 23, 24, 25, 26, + 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 257, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 205, 0, 0, 115, - 51, 0, 52, 53, 0, 551, 0, 0, 55, 0, - 56, 57, 58, 59, 60, 61, 0, 0, 62, 0, - 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 63, 255, - 65, 15, 0, 104, 105, 18, 19, 0, 0, 0, - 0, 0, 106, 107, 108, 23, 24, 25, 26, 0, - 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 210, 0, 0, 118, 51, 0, 52, + 53, 0, 709, 259, 260, 55, 0, 56, 57, 58, + 59, 60, 61, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 63, 261, 65, 15, 0, + 107, 108, 18, 19, 0, 0, 0, 0, 0, 109, + 110, 111, 23, 24, 25, 26, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 257, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 0, 0, 118, 51, 0, 52, 53, 0, 258, 259, + 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, + 0, 62, 0, 0, 0, 0, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 63, 261, 65, 15, 0, 107, 108, 18, 19, + 0, 0, 0, 0, 0, 109, 110, 111, 23, 24, + 25, 26, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 257, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 205, 0, 0, 115, 51, 0, 52, 53, - 0, 252, 0, 0, 55, 0, 56, 57, 58, 59, - 60, 61, 0, 0, 62, 0, 0, 0, 0, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 63, 255, 65, 15, 0, 104, - 105, 18, 19, 0, 0, 0, 0, 0, 106, 107, - 108, 23, 24, 25, 26, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, + 0, 0, 0, 0, 0, 210, 0, 0, 118, 51, + 0, 52, 53, 0, 0, 259, 260, 55, 0, 56, + 57, 58, 59, 60, 61, 0, 0, 62, 0, 0, + 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 63, 261, 65, + 15, 0, 107, 108, 18, 19, 0, 0, 0, 0, + 0, 109, 110, 111, 23, 24, 25, 26, 0, 0, + 112, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 257, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 205, 0, - 0, 115, 51, 0, 52, 53, 0, 551, 0, 0, - 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, - 62, 0, 0, 0, 0, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 63, 255, 65, 15, 0, 104, 105, 18, 19, 0, - 0, 0, 0, 0, 106, 107, 108, 23, 24, 25, - 26, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, + 0, 210, 0, 0, 118, 51, 0, 52, 53, 0, + 709, 259, 0, 55, 0, 56, 57, 58, 59, 60, + 61, 0, 0, 62, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 63, 261, 65, 15, 0, 107, 108, + 18, 19, 0, 0, 0, 0, 0, 109, 110, 111, + 23, 24, 25, 26, 0, 0, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 257, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 205, 0, 0, 115, 51, 0, - 52, 53, 0, 831, 0, 0, 55, 0, 56, 57, - 58, 59, 60, 61, 0, 0, 62, 0, 0, 0, - 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 63, 255, 65, 15, - 0, 104, 105, 18, 19, 0, 0, 0, 0, 0, - 106, 107, 108, 23, 24, 25, 26, 0, 0, 109, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 46, - 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, + 118, 51, 0, 52, 53, 0, 0, 259, 0, 55, + 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, + 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 63, + 261, 65, 15, 0, 16, 17, 18, 19, 0, 0, + 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, + 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 205, 0, 0, 115, 51, 0, 52, 53, 0, 666, - 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, - 0, 0, 62, 0, 0, 0, 0, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 63, 255, 65, 15, 0, 16, 17, 18, - 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, - 24, 25, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, + 0, 0, 0, 210, 0, 0, 118, 51, 0, 52, + 53, 0, 593, 0, 0, 55, 0, 56, 57, 58, + 59, 60, 61, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 63, 261, 65, 15, 0, + 107, 108, 18, 19, 0, 0, 0, 0, 0, 109, + 110, 111, 23, 24, 25, 26, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 0, 0, 118, 51, 0, 52, 53, 0, 258, 0, + 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, + 0, 62, 0, 0, 0, 0, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 63, 261, 65, 15, 0, 107, 108, 18, 19, + 0, 0, 0, 0, 0, 109, 110, 111, 23, 24, + 25, 26, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 205, 0, 0, 115, - 51, 0, 52, 53, 0, 0, 0, 0, 55, 0, - 56, 57, 58, 59, 60, 61, 0, 0, 62, 0, - 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 63, 64, - 65, 15, 0, 104, 105, 18, 19, 0, 0, 0, - 0, 0, 106, 107, 108, 23, 24, 25, 26, 0, - 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 210, 0, 0, 118, 51, + 0, 52, 53, 0, 593, 0, 0, 55, 0, 56, + 57, 58, 59, 60, 61, 0, 0, 62, 0, 0, + 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 63, 261, 65, + 15, 0, 107, 108, 18, 19, 0, 0, 0, 0, + 0, 109, 110, 111, 23, 24, 25, 26, 0, 0, + 112, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 205, 0, 0, 115, 51, 0, 52, 53, - 0, 0, 0, 0, 55, 0, 56, 57, 58, 59, - 60, 61, 0, 0, 62, 0, 0, 0, 0, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 63, 255, 65, 15, 0, 16, - 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, - 22, 23, 24, 25, 26, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 46, 47, 48, + 0, 210, 0, 0, 118, 51, 0, 52, 53, 0, + 874, 0, 0, 55, 0, 56, 57, 58, 59, 60, + 61, 0, 0, 62, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 63, 261, 65, 15, 0, 107, 108, + 18, 19, 0, 0, 0, 0, 0, 109, 110, 111, + 23, 24, 25, 26, 0, 0, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 205, 0, - 0, 115, 51, 0, 52, 53, 0, 0, 0, 0, - 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, - 62, 0, 0, 0, 0, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 63, 255, 65, 15, 0, 104, 105, 18, 19, 0, - 0, 0, 0, 0, 106, 107, 108, 23, 24, 25, - 26, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 110, 35, 36, 37, 111, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, + 118, 51, 0, 52, 53, 0, 709, 0, 0, 55, + 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, + 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 63, + 261, 65, 15, 0, 16, 17, 18, 19, 0, 0, + 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, + 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 113, 0, 0, 114, 0, 0, 115, 51, 0, - 52, 53, 0, 0, 0, 0, 55, 0, 56, 57, - 58, 59, 60, 61, 0, 0, 62, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 0, 0, 0, 15, 116, 104, 105, 18, - 19, 0, 0, 0, 0, 0, 106, 107, 108, 23, - 24, 25, 26, 0, 0, 109, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 216, 0, 0, 0, 0, + 0, 0, 0, 210, 0, 0, 118, 51, 0, 52, + 53, 0, 0, 0, 0, 55, 0, 56, 57, 58, + 59, 60, 61, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 63, 64, 65, 15, 0, + 107, 108, 18, 19, 0, 0, 0, 0, 0, 109, + 110, 111, 23, 24, 25, 26, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 46, 47, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 0, 0, 118, 51, 0, 52, 53, 0, 0, 0, + 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, + 0, 62, 0, 0, 0, 0, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 63, 261, 65, 15, 0, 16, 17, 18, 19, + 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, + 25, 26, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 0, 50, - 51, 0, 52, 53, 0, 54, 0, 0, 55, 0, - 56, 57, 58, 59, 60, 61, 0, 0, 62, 0, - 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 0, 0, 0, 0, 0, 0, 0, 15, 116, 104, - 105, 18, 19, 0, 0, 0, 0, 0, 106, 107, - 108, 23, 24, 25, 26, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 0, 43, 0, 0, 44, 45, 0, 112, 0, 0, + 0, 0, 0, 0, 0, 210, 0, 0, 118, 51, + 0, 52, 53, 0, 0, 0, 0, 55, 0, 56, + 57, 58, 59, 60, 61, 0, 0, 62, 0, 0, + 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 63, 261, 65, + 15, 0, 107, 108, 18, 19, 0, 0, 0, 0, + 0, 109, 110, 111, 23, 24, 25, 26, 0, 0, + 112, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 113, 35, 36, 37, 114, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, + 0, 117, 0, 0, 118, 51, 0, 52, 53, 0, + 0, 0, 0, 55, 0, 56, 57, 58, 59, 60, + 61, 0, 0, 62, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, + 0, 0, 15, 119, 107, 108, 18, 19, 0, 0, + 0, 0, 0, 109, 110, 111, 23, 24, 25, 26, + 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 302, 0, - 0, 349, 51, 0, 52, 53, 0, 350, 0, 0, - 55, 0, 56, 57, 58, 59, 60, 61, 0, 0, - 62, 0, 0, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 0, 0, 0, 0, 0, 0, 0, 15, - 116, 104, 105, 18, 19, 0, 0, 0, 0, 0, - 106, 107, 108, 23, 24, 25, 26, 0, 0, 109, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, - 33, 110, 35, 36, 37, 111, 39, 0, 40, 41, - 42, 0, 0, 43, 0, 0, 44, 45, 0, 112, + 0, 0, 0, 223, 0, 0, 50, 51, 0, 52, + 53, 0, 54, 0, 0, 55, 0, 56, 57, 58, + 59, 60, 61, 0, 0, 62, 0, 0, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, + 0, 0, 0, 0, 15, 119, 107, 108, 18, 19, + 0, 0, 0, 0, 0, 109, 110, 111, 23, 24, + 25, 26, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 43, 0, + 0, 44, 45, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 308, 0, 0, 392, 51, + 0, 52, 53, 0, 393, 0, 0, 55, 0, 56, + 57, 58, 59, 60, 61, 0, 0, 62, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, + 0, 0, 0, 0, 0, 0, 15, 119, 107, 108, + 18, 19, 0, 0, 0, 0, 0, 109, 110, 111, + 23, 24, 25, 26, 0, 0, 112, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 32, 33, 113, 35, + 36, 37, 114, 39, 0, 40, 41, 42, 0, 0, + 43, 0, 0, 44, 45, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 114, 0, 0, 115, 51, 0, 52, 53, 0, 0, - 0, 0, 55, 0, 56, 57, 58, 59, 60, 61, - 0, 0, 62, 0, 0, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, - 0, 15, 116, 104, 105, 18, 19, 0, 0, 0, - 0, 0, 106, 107, 108, 23, 24, 25, 26, 0, - 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, - 40, 41, 42, 0, 0, 43, 0, 0, 44, 45, - 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, + 118, 51, 0, 52, 53, 0, 0, 0, 0, 55, + 0, 56, 57, 58, 59, 60, 61, 0, 0, 62, + 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 0, 0, 0, 0, 0, 0, 0, 15, 119, + 107, 108, 18, 19, 0, 0, 0, 0, 0, 109, + 110, 111, 23, 24, 25, 26, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 43, 0, 0, 44, 45, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 302, 0, 0, 349, 51, 0, 52, 53, - 0, 0, 0, 0, 55, 0, 56, 57, 58, 59, - 60, 61, 0, 0, 62, 0, 0, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, - 0, 0, 0, 15, 116, 104, 105, 18, 19, 0, - 0, 0, 0, 0, 106, 107, 108, 23, 24, 25, - 26, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 0, 40, 41, 42, 0, 0, 43, 0, 0, - 44, 45, 0, 112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 308, + 0, 0, 392, 51, 0, 52, 53, 0, 0, 0, + 0, 55, 0, 56, 57, 58, 59, 60, 61, 0, + 0, 62, 0, 0, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, + 15, 119, 107, 108, 18, 19, 0, 0, 0, 0, + 0, 109, 110, 111, 23, 24, 25, 26, 0, 0, + 112, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 0, 0, 43, 0, 0, 44, 45, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 904, 0, 0, 115, 51, 0, - 52, 53, 0, 0, 0, 0, 55, 0, 56, 57, - 58, 59, 60, 61, 0, 0, 62, 0, 0, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 0, 0, 0, 0, 0, 15, 116, 104, 105, 18, - 19, 0, 0, 0, 0, 0, 106, 107, 108, 23, - 24, 25, 26, 0, 0, 109, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 0, 40, 41, 42, 0, 0, 43, - 0, 0, 44, 45, 0, 216, 0, 0, 0, 0, + 0, 937, 0, 0, 118, 51, 0, 52, 53, 0, + 0, 0, 0, 55, 0, 56, 57, 58, 59, 60, + 61, 0, 0, 62, 0, 0, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, + 0, 0, 15, 119, 107, 108, 18, 19, 0, 0, + 0, 0, 0, 109, 110, 111, 23, 24, 25, 26, + 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 43, 0, 0, 44, + 45, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 931, 0, 0, 115, - 51, 0, 52, 53, 0, 595, 596, 0, 55, 597, - 56, 57, 58, 59, 60, 61, 0, 0, 62, 0, - 0, 0, 0, 0, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 0, 0, 177, 178, 0, 116, 179, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 0, 0, 0, 0, 0, + 0, 0, 0, 960, 0, 0, 118, 51, 0, 52, + 53, 0, 647, 648, 0, 55, 649, 56, 57, 58, + 59, 60, 61, 0, 0, 62, 0, 0, 0, 0, + 0, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 0, 0, 182, 183, 0, 119, 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 196, 603, - 604, 0, 0, 605, 0, 197, 266, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 0, 0, 177, - 178, 0, 0, 179, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 183, 184, 0, + 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 0, 200, 201, 668, 640, 0, 0, + 669, 0, 202, 272, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, + 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 196, 624, 596, 0, 0, 625, 0, 197, - 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 0, 0, 177, 178, 0, 0, 179, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 183, 184, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 0, 200, 201, + 653, 648, 0, 0, 654, 0, 202, 272, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, + 182, 183, 0, 0, 184, 185, 186, 187, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 196, 609, 604, 0, - 0, 610, 0, 197, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 0, 0, 177, 178, 0, - 0, 179, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 183, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, - 196, 640, 596, 0, 0, 641, 0, 197, 266, 0, + 0, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 0, 200, 201, 683, 640, 0, 0, 684, 0, + 202, 272, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 0, 0, 182, 183, 0, 0, 184, 185, + 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 0, - 0, 177, 178, 0, 0, 179, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, - 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 0, 200, 201, 686, 648, + 0, 0, 687, 0, 202, 272, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, + 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 196, 643, 604, 0, 0, 644, - 0, 197, 266, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 0, 0, 177, 178, 0, 0, 179, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, + 200, 201, 693, 640, 0, 0, 694, 0, 202, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 196, 650, - 596, 0, 0, 651, 0, 197, 266, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 0, 0, 177, - 178, 0, 0, 179, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 183, 184, 0, + 0, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 0, 0, 182, 183, 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 196, 653, 604, 0, 0, 654, 0, 197, - 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 0, 0, 177, 178, 0, 0, 179, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 183, 184, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 0, 200, 201, 696, 648, 0, 0, + 697, 0, 202, 272, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, + 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 196, 689, 596, 0, - 0, 690, 0, 197, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 0, 0, 177, 178, 0, - 0, 179, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 183, 184, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 0, 200, 201, + 732, 640, 0, 0, 733, 0, 202, 272, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, + 182, 183, 0, 0, 184, 185, 186, 187, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, - 196, 692, 604, 0, 0, 693, 0, 197, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 0, - 0, 177, 178, 0, 0, 179, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, - 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 0, 200, 201, 735, 648, 0, 0, 736, 0, + 202, 272, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 0, 0, 182, 183, 0, 0, 184, 185, + 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 196, 836, 596, 0, 0, 837, - 0, 197, 266, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 0, 0, 177, 178, 0, 0, 179, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 0, 200, 201, 879, 640, + 0, 0, 880, 0, 202, 272, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, + 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 196, 839, - 604, 0, 0, 840, 0, 197, 266, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 0, 0, 177, - 178, 0, 0, 179, 180, 181, 182, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 183, 184, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, + 200, 201, 882, 648, 0, 0, 883, 0, 202, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 0, 0, 182, 183, 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 0, 195, 196, 994, 596, 0, 0, 995, 0, 197, - 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 0, 0, 177, 178, 0, 0, 179, 180, 181, - 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 183, 184, 0, 0, 0, 0, 0, 0, 0, + 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 0, 195, 196, 1007, 596, 0, - 0, 1008, 0, 197, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 0, 0, 177, 178, 0, - 0, 179, 180, 181, 182, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 183, 184, 0, 0, 0, + 0, 0, 0, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 0, 200, 201, 1019, 640, 0, 0, + 1020, 0, 202, 272, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 0, 0, 182, 183, 0, 0, + 184, 185, 186, 187, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 0, 195, - 196, 1010, 604, 0, 0, 1011, 0, 197, 266, 0, + 0, 0, 0, 0, 0, 0, 0, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 0, 200, 201, + 1031, 640, 0, 0, 1032, 0, 202, 272, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 0, 0, + 182, 183, 0, 0, 184, 185, 186, 187, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 0, - 0, 177, 178, 0, 0, 179, 180, 181, 182, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, - 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 0, 195, 196, 609, 604, 0, 0, 610, - 0, 197, 266, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 0, 0, 177, 178, 0, 0, 179, - 180, 181, 182, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 184, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 732, 0, - 0, 0, 0, 0, 0, 0, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 0, 195, 196, 0, - 0, 0, 0, 0, 0, 197, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 0, - 0, 366, 367, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 0, 0, 366, 367, + 0, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 0, 200, 201, 1034, 648, 0, 0, 1035, 0, + 202, 272, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 0, 0, 182, 183, 0, 0, 184, 185, + 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 0, 0, 0, 0, - 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 0, 242, 366, 367, - 0, 0, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 0, 0, 366, 367, 0, + 0, 0, 0, 0, 0, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 0, 200, 201, 653, 648, + 0, 0, 654, 0, 202, 272, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 0, 0, 182, 183, + 0, 0, 184, 185, 186, 187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 368, 0, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 0, 0, 0, 0, 0, 0, 0, - 368, -260, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 0, 0, 0, 0, 0, 0, 0, 0, - -261, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 0, 0, 366, 367, 0, 0, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, - 0, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 0, 0, 0, 0, 0, 0, 0, 368, -262, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 0, 0, 0, 0, 0, 0, 0, 0, -263, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 0, 0, 366, 367, 0, 0, 0, 447, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 0, 0, 366, 367, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 368, 0, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, -595, -595, 0, 0, 366, 367, 353, 354, 355, - 356, 357, 358, 359, 360, 0, 362, 363, 0, 0, - 0, 0, 366, 367, 0, 0, 0, 0, 0, 0, + 0, 848, 0, 0, 0, 0, 0, 0, 0, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 859, + 200, 201, 0, 0, 0, 0, 0, 0, 202, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 0, 0, 409, 410, 0, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 0, 0, 409, 410, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 0, + 0, 0, 0, 0, 0, 412, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 0, 0, 409, 410, 0, 0, 0, 0, 0, 0, + 0, 0, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 0, 0, 409, 410, 0, + 0, 0, 0, 0, 0, 412, 0, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 0, 0, 0, 0, 0, 0, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 353, 354, 355, - 356, 357, 358, 359, 0, 0, 362, 363, 0, 0, - 0, 0, 366, 367, 0, 0, 0, 0, 0, 0, + 412, 248, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 0, 0, 0, 0, 0, 0, 0, 0, + -272, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 0, 0, 409, 410, 0, 0, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 0, 0, 409, 410, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 412, + 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 0, 0, 0, 0, 0, 0, 0, 412, -273, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 0, 0, 0, 0, 0, 0, 0, 0, -274, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 0, 0, 409, 410, 0, 0, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 0, 0, 409, 410, 0, 0, 0, 411, 0, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 0, + 0, 0, 0, 0, 0, 0, 412, -275, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 0, 0, 409, 410, 0, 0, 0, 491, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 0, 0, 409, 410, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 412, 0, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 396, + 397, 398, 399, 400, 401, 402, 0, 0, 405, 406, + 0, 0, 0, 0, 409, 410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422 }; static const yytype_int16 yycheck[] = { - 2, 308, 308, 83, 84, 27, 436, 213, 14, 78, - 2, 10, 4, 5, 6, 27, 15, 9, 10, 21, - 85, 13, 28, 15, 16, 17, 7, 262, 20, 381, - 2, 7, 4, 28, 67, 22, 4, 303, 14, 54, - 379, 15, 296, 454, 383, 427, 300, 386, 64, 352, - 52, 53, 28, 405, 50, 16, 17, 721, 50, 20, - 450, 492, 54, 320, 454, 442, 114, 406, 636, 421, - 16, 17, 64, 484, 20, 56, 515, 645, 430, 795, - 56, 420, 709, 422, 912, 26, 78, 57, 889, 391, - 392, 52, 431, 67, 5, 6, 21, 22, 26, 16, - 612, 613, 13, 142, 25, 107, 29, 146, 16, 17, - 89, 91, 20, 25, 101, 285, 58, 59, 60, 61, - 25, 113, 89, 115, 103, 321, 557, 57, 324, 209, - 326, 470, 328, 89, 330, 25, 89, 289, 25, 119, - 220, 293, 494, 54, 52, 53, 25, 16, 17, 119, - 51, 20, 91, 27, 55, 51, 495, 53, 54, 55, - 56, 89, 140, 26, 0, 25, 145, 78, 146, 997, - 16, 17, 136, 69, 20, 103, 101, 91, 145, 349, - 119, 25, 107, 108, 55, 442, 987, 706, 111, 145, - 89, 121, 145, 407, 28, 136, 113, 352, 123, 116, - 117, 281, 509, 509, 740, 119, 52, 53, 136, 745, - 138, 18, 204, 20, 142, 214, 215, 145, 26, 140, - 140, 142, 214, 215, 459, 305, 492, 144, 140, 146, - 142, 947, 50, 80, 303, 140, 391, 392, 750, 113, - 91, 87, 116, 117, 140, 909, 145, 72, 912, 260, - 140, 262, 233, 140, 287, 119, 91, 233, 260, 89, - 262, 140, 295, 296, 266, 676, 893, 300, 119, 243, - 144, 91, 146, 136, 266, 532, 140, 124, 270, 142, - 140, 89, 274, 275, 295, 675, 676, 279, 665, 285, - 119, 557, 284, 285, 91, 103, 140, 115, 729, 119, - 292, 142, 101, 455, 129, 130, 131, 89, 89, 270, - 462, 303, 284, 287, 882, 145, 89, 119, 89, 142, - 292, 473, 119, 123, 270, 55, 632, 126, 136, 89, - 138, 347, 635, 997, 530, 350, 352, 145, 91, 338, - 339, 340, 341, 140, 119, 337, 338, 339, 340, 341, - 342, 343, 344, 349, 25, 347, 404, 349, 350, 91, - 352, 55, 270, 145, 145, 337, 805, 91, 887, 337, - 342, 313, 145, 16, 145, 391, 392, 113, 897, 381, - 116, 117, 734, 822, 823, 145, 347, 119, 89, 381, - 909, 352, 303, 140, 733, 119, 735, 266, 780, 391, - 392, 270, 103, 405, 556, 662, 20, 383, 665, 623, - 386, 140, 414, 405, 60, 407, 408, 63, 57, 421, - 266, 490, 136, 492, 270, 417, 448, 72, 430, 421, - 406, 91, 686, 425, 669, 737, 448, 138, 430, 350, - 742, 743, 119, 435, 145, 143, 422, 458, 459, 91, - 757, 757, 882, 137, 660, 431, 458, 459, 383, 119, - 466, 279, 108, 729, 139, 467, 16, 285, 58, 59, - 113, 466, 883, 116, 117, 467, 55, 119, 439, 631, - 140, 406, 1001, 457, 476, 37, 38, 567, 557, 91, - 466, 89, 494, 883, 470, 467, 1015, 422, 490, 91, - 492, 144, 494, 146, 476, 103, 431, 2, 722, 4, - 140, 513, 381, 515, 9, 10, 72, 119, 72, 495, - 15, 16, 17, 91, 963, 20, 98, 119, 91, 786, - 91, 349, 140, 685, 748, 381, 405, 15, 140, 531, - 138, 13, 450, 554, 758, 470, 848, 145, 550, 16, - 608, 119, 421, 611, 789, 50, 119, 15, 119, 405, - 866, 430, 584, 113, 63, 557, 116, 117, 143, 64, - 495, 629, 584, 481, 143, 421, 731, 140, 26, 490, - 137, 492, 737, 89, 430, 140, 800, 742, 743, 113, - 140, 140, 116, 117, 144, 16, 146, 103, 51, 417, - 53, 54, 55, 56, 450, 51, 608, 425, 454, 611, - 612, 613, 140, 600, 44, 89, 69, 435, 113, 140, - 115, 608, 146, 622, 611, 494, 978, 629, 89, 103, - 622, 623, 138, 635, 636, 481, 638, 140, 484, 145, - 979, 89, 103, 645, 796, 859, 557, 51, 494, 660, - 656, 140, 633, 686, 91, 103, 655, 633, 669, 51, - 729, 656, 868, 655, 138, 58, 59, 669, 874, 16, - 17, 145, 140, 20, 635, 600, 62, 138, 64, 65, - 656, 746, 119, 608, 145, 697, 611, 140, 136, 139, - 138, 119, 113, 848, 142, 116, 117, 145, 89, 139, - 47, 48, 627, 140, 629, 52, 53, 17, 18, 204, - 862, 863, 103, 531, 15, 731, 930, 64, 65, 214, - 215, 737, 738, 144, 18, 146, 742, 743, 114, 115, - 722, 51, 734, 53, 54, 55, 56, 729, 730, 731, - 818, 819, 734, 72, 139, 737, 738, 138, 750, 69, - 742, 743, 139, 137, 145, 15, 748, 749, 730, 735, - 137, 763, 26, 91, 766, 139, 758, 675, 146, 768, - 524, 266, 526, 765, 137, 270, 768, 15, 789, 274, - 275, 92, 37, 38, 279, 777, 778, 789, 14, 284, - 285, 119, 113, 785, 15, 116, 117, 292, 127, 128, - 129, 130, 131, 805, 391, 392, 818, 819, 800, 801, - 735, 62, 140, 64, 65, 15, 140, 143, 729, 51, - 822, 823, 144, 57, 140, 89, 140, 140, 820, 675, - 676, 140, 848, 825, 140, 140, 423, 424, 140, 103, - 72, 140, 337, 338, 339, 340, 341, 342, 343, 344, - 15, 139, 347, 933, 349, 15, 848, 352, 113, 137, - 15, 116, 117, 114, 115, 734, 858, 859, 100, 101, - 15, 15, 136, 140, 138, 867, 9, 10, 142, 871, - 882, 145, 15, 15, 471, 89, 381, 89, 734, 144, - 137, 146, 55, 124, 126, 124, 391, 392, 137, 103, - 61, 103, 89, 64, 65, 252, 253, 254, 255, 820, - 405, 15, 407, 408, 825, 89, 103, 55, 140, 266, - 140, 61, 417, 270, 64, 65, 421, 949, 15, 103, - 425, 749, 140, 140, 138, 430, 138, 949, 930, 140, - 435, 145, 706, 145, 936, 709, 938, 765, 89, 941, - 15, 138, 140, 114, 115, 142, 867, 721, 145, 777, - 778, 963, 103, 140, 138, 113, 142, 785, 116, 117, - 142, 145, 467, 139, 114, 115, 978, 467, 980, 981, - 113, 476, 140, 801, 13, 26, 978, 6, 981, 987, - 63, 64, 65, 721, 980, 207, 144, 138, 146, 494, - 347, 213, 747, 979, 145, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 245, 7, 381, 721, 531, 883, 250, 866, - 858, 114, 115, 700, 391, 392, 261, 906, 89, 26, - 89, 909, 706, 871, 979, 809, 810, 811, 405, 813, - -1, 815, 103, -1, 103, 89, -1, 2, -1, 4, - 5, 6, 419, -1, 421, -1, 423, 424, 13, 103, - -1, 214, 215, 430, 89, -1, -1, 63, 64, 65, - -1, -1, 439, -1, -1, 136, 443, 138, 103, 138, - 447, 142, -1, 450, 145, 452, 145, 454, -1, 978, - -1, -1, 89, -1, 138, 50, -1, 89, 936, 54, - 938, 145, -1, 941, 471, 337, 103, 622, 623, 893, - -1, 103, 978, 138, 481, -1, -1, 484, 114, 115, - 145, 274, 275, 78, -1, 909, -1, 494, 912, -1, - 737, 738, -1, -1, -1, 742, 743, -1, -1, 136, - 655, 138, -1, -1, 511, 142, 138, -1, 145, -1, - 696, -1, -1, 145, 51, 522, 53, 54, 55, 56, - 115, -1, -1, 709, 771, 772, 712, 774, 775, 63, - 64, 65, 69, 540, 541, 721, -1, -1, -1, -1, - 954, 955, 956, 957, 551, 338, 339, 340, 341, -1, - 343, 344, -1, -1, 426, 427, 93, 700, -1, -1, - 906, 704, 99, 909, 700, -1, 912, 722, 914, 63, - 64, 65, -1, 997, -1, 730, 731, -1, 721, 734, - 114, 115, 737, 738, -1, 721, -1, 742, 743, 63, - 64, 65, -1, 748, 749, -1, -1, -1, 63, 64, - 65, 848, -1, 758, 476, 1019, -1, -1, -1, 204, - 765, 483, -1, 768, -1, 408, -1, -1, 964, -1, - 114, 115, 777, 778, -1, -1, -1, -1, 635, 876, - 785, 40, 41, 42, 43, 44, -1, 2, -1, 4, - 114, 115, -1, -1, -1, 800, 801, -1, 13, 114, - 115, 997, -1, 999, -1, 1001, -1, 1003, -1, 666, - 63, 64, 65, -1, -1, -1, -1, -1, 675, 676, - -1, -1, -1, 51, -1, 53, 54, 55, 56, -1, - -1, -1, 1028, -1, 279, 50, 63, 64, 65, 284, - 285, 69, -1, 848, 72, -1, -1, 292, -1, -1, - -1, -1, -1, 858, 859, 827, 828, 893, 303, 895, - -1, 114, 115, 899, -1, 93, 871, -1, -1, 726, - -1, 99, 100, 101, 731, 732, 912, 734, 914, -1, - 737, 738, -1, -1, -1, 742, 743, 114, 115, -1, - -1, -1, 337, -1, -1, -1, -1, 342, 126, 621, - 115, 129, -1, -1, 349, 350, -1, 352, -1, 945, - 946, -1, 140, 906, 771, 772, 909, 774, 775, 912, - 906, 914, -1, 909, -1, 930, 912, 784, 914, -1, - -1, 936, -1, 938, -1, -1, 941, 909, 660, -1, - -1, -1, -1, -1, -1, -1, 391, 392, -1, 985, - -1, -1, -1, 2, 990, 4, 5, 6, 7, -1, - -1, 997, 407, 999, 13, -1, -1, 1003, -1, -1, - -1, 964, 417, 978, 831, -1, -1, -1, 964, 622, - 425, 1017, -1, -1, 841, 842, -1, -1, -1, 204, - 435, 848, 1028, -1, -1, 967, 968, 969, -1, 971, - 972, 50, -1, -1, 997, 54, 999, -1, 1001, -1, - 1003, 997, 655, 999, -1, 1001, -1, 1003, -1, 876, - -1, -1, 467, -1, 72, -1, 883, -1, -1, 78, - 752, 476, -1, -1, -1, 1028, -1, 759, -1, 87, - 88, 72, 1028, -1, 2, 490, 4, 492, 1020, 1021, - 1022, 1023, 72, -1, -1, -1, 87, 88, 780, -1, - 1032, -1, -1, -1, 279, -1, 115, 87, 88, 284, - 285, 51, -1, 53, 54, 55, 56, 292, 126, 127, - 128, 129, 130, 131, 113, -1, 531, 116, 117, 69, - -1, -1, 50, 124, 125, 126, 127, 128, 129, 130, - 131, -1, -1, -1, -1, -1, -1, 127, 128, 129, - 130, 131, 557, 93, 143, 144, -1, 146, -1, 99, - 113, 978, 337, 116, 117, 768, 51, 342, 53, 54, - 55, 56, -1, -1, 349, -1, -1, 352, 51, -1, - 53, 54, 55, 56, 69, -1, 868, 140, -1, -1, - -1, 144, 874, 146, -1, 204, 69, 115, -1, 72, - -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, -1, 391, 392, 623, -1, - 93, -1, -1, -1, -1, -1, 99, 100, 101, -1, - -1, 51, 407, 53, 54, 55, 56, -1, -1, -1, - -1, -1, 417, -1, -1, -1, -1, -1, -1, 69, - 425, -1, 72, 126, -1, -1, 129, -1, -1, -1, - 435, -1, -1, -1, -1, -1, -1, -1, -1, 142, - 279, -1, -1, 93, -1, 284, 285, -1, -1, 99, - 100, 101, -1, 292, -1, -1, 204, -1, -1, -1, - -1, -1, 467, -1, 303, -1, -1, -1, -1, -1, - 51, 476, 53, 54, 55, 56, 126, -1, -1, 129, - -1, -1, -1, -1, -1, -1, -1, 722, 69, -1, - -1, 72, 142, -1, 729, 730, 731, -1, 337, -1, - -1, -1, 737, 342, -1, -1, -1, 742, 743, -1, - 349, 350, 93, 748, 749, -1, -1, -1, 99, 100, - 101, -1, -1, 758, -1, -1, 531, -1, -1, -1, - 765, 279, -1, -1, -1, -1, 284, 285, -1, -1, - -1, -1, 777, 778, 292, 126, -1, -1, 129, -1, - 785, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 800, 801, -1, 407, -1, - -1, -1, -1, -1, -1, -1, -1, 51, 417, 53, - 54, 55, 56, -1, -1, 820, 425, -1, -1, 337, - 825, -1, -1, -1, 342, 69, 435, -1, 72, -1, - -1, 349, -1, -1, 352, -1, -1, -1, -1, -1, - 84, -1, -1, 848, -1, -1, -1, -1, 623, 93, - -1, -1, -1, 858, 859, 99, 100, 101, 467, -1, - -1, -1, 867, -1, -1, -1, 871, 476, -1, -1, - -1, -1, -1, 391, 392, -1, -1, -1, -1, -1, - -1, 490, 126, 492, -1, 129, -1, -1, 51, 407, - 53, 54, 55, 56, -1, -1, -1, -1, -1, 417, - -1, -1, -1, -1, -1, -1, 69, 425, -1, 72, - -1, -1, -1, -1, -1, -1, -1, 435, -1, -1, - -1, -1, 531, -1, -1, 930, -1, -1, -1, -1, - 93, 936, -1, 938, -1, -1, 941, 100, 101, -1, - -1, -1, -1, -1, -1, -1, -1, 722, 557, 467, - -1, -1, -1, -1, -1, 730, 731, -1, 476, -1, - -1, -1, 737, 126, -1, -1, -1, 742, 743, -1, - -1, -1, -1, 748, 749, -1, -1, -1, -1, -1, - -1, -1, -1, 758, -1, -1, -1, -1, -1, -1, - 765, 0, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 777, 778, 13, 14, 15, 16, 17, 18, - 785, 20, -1, 531, 623, -1, -1, 26, 27, -1, - -1, -1, -1, -1, -1, 800, 801, -1, 37, 38, - -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, + 2, 16, 17, 88, 219, 20, 86, 87, 471, 81, + 2, 27, 4, 5, 6, 27, 14, 9, 10, 21, + 7, 13, 768, 15, 16, 17, 480, 372, 20, 13, + 28, 7, 28, 67, 22, 117, 584, 10, 14, 268, + 302, 4, 15, 2, 306, 4, 73, 74, 26, 54, + 52, 53, 28, 486, 395, 679, 498, 581, 50, 16, + 17, 745, 54, 20, 688, 26, 314, 16, 17, 56, + 15, 20, 64, 16, 17, 581, 945, 20, 584, 50, + 56, 656, 657, 435, 436, 266, 528, 268, 494, 81, + 5, 6, 498, 120, 121, 52, 53, 309, 13, 291, + 536, 37, 38, 52, 53, 21, 22, 923, 110, 52, + 29, 57, 37, 38, 787, 27, 104, 365, 57, 792, + 301, 91, 67, 0, 116, 326, 118, 423, 80, 91, + 18, 427, 20, 90, 430, 215, 425, 5, 6, 54, + 74, 58, 59, 60, 61, 13, 226, 16, 17, 119, + 55, 20, 92, 1022, 140, 451, 50, 119, 136, 89, + 146, 450, 327, 599, 142, 330, 81, 332, 464, 334, + 466, 336, 124, 119, 140, 136, 465, 113, 140, 475, + 116, 117, 121, 58, 59, 474, 54, 121, 104, 89, + 51, 28, 111, 91, 110, 111, 942, 1013, 89, 945, + 392, 113, 89, 103, 116, 117, 119, 287, 144, 119, + 146, 72, 128, 81, 136, 145, 103, 209, 514, 58, + 59, 119, 797, 89, 118, 17, 18, 89, 220, 221, + 140, 311, 144, 119, 146, 89, 142, 309, 138, 100, + 101, 395, 142, 539, 928, 145, 101, 220, 221, 538, + 72, 138, 239, 140, 145, 142, 64, 272, 145, 293, + 89, 276, 768, 239, 266, 126, 268, 301, 302, 142, + 272, 126, 306, 146, 503, 708, 1022, 719, 89, 145, + 272, 435, 436, 145, 276, 486, 89, 314, 280, 281, + 89, 145, 540, 285, 89, 91, 920, 142, 290, 291, + 103, 26, 850, 123, 249, 367, 298, 129, 130, 131, + 89, 55, 718, 719, 51, 272, 145, 309, 55, 276, + 291, 502, 503, 847, 536, 387, 119, 276, 5, 6, + 854, 290, 91, 276, 145, 138, 13, 678, 365, 298, + 776, 91, 145, 91, 850, 546, 145, 55, 293, 89, + 145, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 119, 824, 25, 103, 89, 349, 145, 449, 370, 119, + 372, 344, 345, 346, 347, 367, 140, 54, 103, 544, + 343, 140, 60, 20, 343, 63, 91, 599, 393, 348, + 452, 285, 861, 862, 309, 387, 91, 291, 390, 140, + 392, 393, 319, 395, 81, 145, 57, 276, 136, 754, + 425, 136, 91, 138, 119, 596, 72, 142, 942, 411, + 145, 392, 143, 425, 119, 91, 137, 411, 652, 119, + 108, 655, 784, 425, 349, 450, 942, 789, 790, 945, + 119, 309, 91, 435, 436, 140, 55, 390, 450, 673, + 465, 427, 395, 119, 430, 139, 458, 91, 450, 474, + 452, 453, 534, 465, 536, 140, 920, 729, 425, 461, + 119, 72, 474, 465, 140, 451, 492, 469, 393, 921, + 492, 349, 474, 712, 780, 119, 782, 479, 703, 72, + 466, 1015, 781, 450, 73, 74, 411, 119, 392, 475, + 502, 503, 1026, 51, 705, 91, 140, 708, 465, 511, + 140, 427, 510, 540, 510, 921, 1022, 474, 51, 511, + 865, 866, 703, 538, 140, 393, 140, 599, 520, 609, + 91, 712, 91, 119, 510, 451, 538, 494, 514, 891, + 483, 498, 534, 411, 536, 494, 538, 140, 140, 119, + 466, 91, 511, 545, 140, 51, 501, 98, 119, 475, + 119, 520, 16, 539, 776, 91, 91, 461, 525, 295, + 15, 528, 140, 299, 13, 469, 525, 89, 16, 119, + 63, 538, 390, 72, 15, 479, 143, 395, 143, 140, + 592, 103, 137, 119, 119, 2, 113, 4, 514, 116, + 117, 15, 9, 10, 833, 667, 15, 599, 15, 16, + 17, 113, 628, 20, 116, 117, 628, 16, 140, 534, + 381, 536, 383, 539, 778, 44, 138, 435, 436, 830, + 784, 89, 309, 145, 119, 789, 790, 212, 127, 128, + 129, 130, 131, 50, 219, 103, 139, 139, 15, 994, + 652, 545, 833, 655, 656, 657, 644, 64, 18, 113, + 139, 139, 116, 117, 652, 137, 534, 655, 536, 15, + 137, 673, 349, 139, 666, 667, 678, 679, 146, 681, + 138, 256, 140, 140, 599, 137, 688, 145, 57, 676, + 144, 906, 146, 666, 140, 729, 140, 912, 140, 140, + 676, 699, 15, 699, 776, 92, 698, 769, 793, 116, + 712, 118, 14, 1009, 113, 89, 393, 116, 117, 1008, + 15, 737, 15, 699, 144, 698, 143, 140, 644, 103, + 140, 599, 89, 795, 411, 678, 652, 891, 140, 655, + 140, 140, 435, 436, 140, 144, 103, 146, 26, 15, + 139, 89, 754, 15, 137, 671, 61, 673, 26, 64, + 65, 718, 719, 15, 138, 103, 781, 15, 343, 718, + 15, 145, 137, 499, 467, 468, 140, 769, 840, 781, + 506, 138, 124, 140, 776, 777, 778, 124, 145, 781, + 55, 517, 784, 785, 137, 797, 568, 789, 790, 374, + 138, 15, 209, 795, 796, 807, 782, 145, 810, 114, + 115, 89, 584, 220, 221, 587, 55, 809, 777, 140, + 812, 89, 515, 113, 781, 103, 116, 117, 140, 821, + 822, 833, 140, 140, 140, 103, 140, 829, 139, 812, + 902, 15, 142, 569, 570, 861, 862, 574, 840, 841, + 142, 578, 140, 511, 574, 6, 146, 534, 136, 536, + 138, 776, 140, 865, 866, 272, 782, 145, 136, 276, + 138, 863, 598, 280, 281, 1011, 868, 145, 285, 768, + 1013, 1010, 962, 290, 291, 51, 794, 53, 54, 55, + 56, 298, 251, 7, 574, 470, 471, 61, 939, 891, + 64, 65, 796, 69, 942, 9, 10, 581, 776, 901, + 902, 15, 89, 905, 267, 809, 89, 909, 920, -1, + -1, -1, 599, -1, -1, -1, 103, 821, 822, -1, + 103, -1, -1, -1, -1, 829, 343, 344, 345, 346, + 347, 348, -1, 350, 351, 520, -1, 841, 863, 675, + 114, 115, 527, 868, -1, 89, -1, -1, -1, 975, + 367, 138, -1, 975, 921, 138, -1, 140, 145, 103, + 778, -1, 145, 965, 140, 967, 784, 785, 970, -1, + 387, 789, 790, 390, -1, 392, -1, -1, 395, -1, + 905, 89, 994, 1008, -1, 863, 768, 758, 759, 760, + 868, 762, 728, 764, 138, 103, 1008, 901, 1010, 1011, + -1, 145, 116, -1, -1, 909, 1008, -1, 425, 113, + 746, -1, 116, 117, 26, 89, -1, -1, 435, 436, + -1, -1, -1, 1009, 870, 871, -1, 905, -1, 103, + 138, 768, -1, 450, -1, 452, 453, 145, 768, 143, + 144, 1008, 146, 72, 461, 768, -1, -1, 465, 16, + -1, 51, 469, 53, 54, 55, 56, 474, 87, 88, + -1, 965, 479, 967, 138, -1, 970, -1, 850, 69, + 852, 145, -1, 891, 856, -1, -1, 89, 89, -1, + 665, 784, 785, 1009, -1, -1, 789, 790, -1, 776, + -1, 103, 103, 16, 511, -1, 942, 126, 127, 128, + 129, 130, 131, 520, -1, -1, 220, 221, -1, -1, + -1, -1, 815, 816, -1, 818, 819, -1, 703, -1, + 62, 538, 64, 65, 136, -1, 138, 138, 545, 89, + 142, 9, 10, 145, 145, -1, -1, 15, 16, 17, + 140, -1, 20, 103, 926, 927, 113, -1, -1, 116, + 117, -1, 998, 999, 1000, -1, 1002, 1003, -1, 930, + 931, 932, 933, 945, 26, 947, 280, 281, -1, 47, + 48, -1, 114, 115, 52, 53, 863, 144, 138, 146, + -1, 868, -1, -1, -1, 145, 64, 65, 891, -1, + 113, -1, -1, 116, 117, -1, 1042, 1043, 1044, 1045, + 982, -1, 939, 985, -1, 942, 1052, 26, 945, 939, + 947, 914, 942, -1, 799, 945, 939, 947, 905, 942, + -1, 144, 945, 146, 947, 26, -1, 89, -1, -1, + 344, 345, 346, 347, -1, 1017, 350, 351, 116, 824, + 1022, 103, 1024, 26, -1, -1, 1028, 1018, 89, 666, + 667, 51, -1, 53, 54, 55, 56, -1, 995, 89, + -1, -1, 103, -1, -1, 995, 1048, -1, -1, 69, + 89, -1, 995, 103, 136, -1, 138, 26, 140, -1, + 142, 698, -1, 145, 103, 1022, -1, 1024, 89, 1026, + -1, 1028, 1022, 93, 1024, -1, 1026, 138, 1028, 1022, + 89, 1024, 103, 1026, 145, 1028, 89, -1, 138, -1, + -1, 1048, -1, -1, 103, 145, -1, 136, 1048, 138, + 103, 906, 26, 142, -1, 1048, 145, 912, 51, -1, + 53, 54, 55, 56, -1, 136, -1, 138, -1, 453, + 89, 142, 220, 221, 145, -1, 69, -1, -1, 138, + -1, 89, 769, 136, 103, 138, 145, 140, -1, 142, + 777, 778, 145, -1, 781, 103, -1, 784, 785, 63, + 64, 65, 789, 790, 62, -1, 64, 65, 795, 796, + 258, 259, 260, 261, -1, 89, -1, 136, -1, 138, + -1, 140, 809, 142, 272, 812, 145, -1, 276, 103, + 138, -1, 280, 281, 821, 822, -1, 145, -1, -1, + -1, -1, 829, 63, 64, 65, -1, -1, -1, -1, + 114, 115, -1, 840, 841, -1, 114, 115, -1, 63, + 64, 65, 136, -1, 138, 63, 64, 65, 142, 72, + -1, 145, -1, -1, 113, -1, -1, 116, 117, -1, + -1, 63, 64, 65, 87, 88, -1, -1, 51, -1, + 53, 54, 55, 56, 114, 115, 344, 345, 346, 347, + -1, 140, 350, 351, 891, 144, 69, 146, -1, 72, + 114, 115, -1, -1, 901, 902, 114, 115, -1, -1, + 368, -1, 909, -1, 127, 128, 129, 130, 131, -1, + 93, 379, 114, 115, 63, 64, 65, 100, 101, -1, + -1, -1, 390, 63, 64, 65, -1, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 126, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 72, -1, 425, 965, -1, + 967, -1, 666, 970, -1, 114, 115, 435, 436, -1, + 87, 88, -1, -1, 114, 115, -1, 2, -1, 4, + 5, 6, 450, -1, -1, 453, -1, 113, 13, -1, + 116, 117, -1, -1, 698, 463, -1, 465, -1, 467, + 468, 1008, 63, 64, 65, -1, 474, 124, 125, 126, + 127, 128, 129, 130, 131, 483, -1, -1, 144, 487, + 146, -1, -1, 491, 0, 50, 494, -1, 496, 54, + 498, 51, -1, 53, 54, 55, 56, 13, 14, 15, + 16, 17, 18, -1, 20, -1, -1, 515, -1, 69, + 26, 27, 72, 114, 115, -1, 81, 525, -1, -1, + 528, 37, 38, -1, 40, 41, 42, 43, 44, -1, + 538, -1, -1, 93, 40, 41, 42, 43, 44, 99, + 100, 101, -1, -1, -1, -1, 554, 555, -1, -1, + -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 571, -1, -1, 126, -1, 812, 129, + -1, -1, -1, 89, 51, -1, 53, 54, 55, 56, + 140, -1, 590, -1, -1, 593, -1, 103, -1, -1, + -1, -1, 69, -1, -1, 72, -1, 113, -1, -1, + 116, 117, 2, -1, 4, 5, 6, 7, -1, -1, + -1, -1, -1, 13, -1, -1, 93, -1, -1, -1, + 136, 137, 99, 100, 101, -1, 142, 143, 144, 145, + 146, -1, 2, -1, 4, 51, -1, 53, 54, 55, + 56, -1, -1, 13, 209, -1, -1, -1, -1, 126, + 50, -1, 129, 69, 54, -1, -1, 51, 666, 53, + 54, 55, 56, -1, -1, 142, -1, -1, -1, -1, + 678, -1, -1, -1, -1, 69, -1, 93, -1, -1, + 50, 81, 51, 99, 53, 54, 55, 56, -1, -1, + 698, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 69, 709, -1, 72, -1, 99, -1, -1, -1, -1, + 718, 719, -1, -1, -1, 51, 52, -1, 118, 55, + 285, -1, -1, -1, 93, 290, 291, -1, -1, -1, + 99, 100, 101, 298, 70, 71, 72, 73, 74, 75, + 76, 77, 78, -1, 309, 81, 82, -1, 118, 85, + 86, 87, 88, -1, -1, -1, -1, 126, -1, -1, + 129, -1, -1, 99, 100, 773, -1, -1, -1, -1, + 778, 779, -1, 781, -1, -1, 784, 785, 343, -1, + -1, 789, 790, 348, 349, -1, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, -1, 133, 134, -1, + -1, -1, 367, -1, 812, 141, 142, 815, 816, 209, + 818, 819, -1, -1, 51, -1, 53, 54, 55, 56, + 828, -1, 387, -1, -1, -1, -1, 392, 393, -1, + 395, -1, 69, -1, -1, 72, -1, -1, -1, 209, + 848, -1, -1, -1, -1, -1, 411, -1, -1, -1, + -1, 859, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, 99, 100, 101, -1, 874, -1, -1, -1, + 435, 436, -1, -1, -1, -1, 884, 885, -1, -1, + -1, -1, -1, 891, -1, 285, -1, 452, -1, 126, + 290, 291, 129, -1, -1, -1, 461, -1, 298, -1, + -1, -1, -1, -1, 469, 142, 914, -1, -1, 309, + -1, -1, -1, 921, 479, 285, -1, -1, -1, -1, + 290, 291, -1, -1, -1, -1, -1, -1, 298, -1, + -1, -1, -1, -1, -1, 51, -1, 53, 54, 55, + 56, -1, -1, 343, -1, -1, 511, -1, 348, 349, + -1, -1, -1, 69, -1, 520, 72, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 367, 84, 534, + -1, 536, -1, 343, -1, -1, -1, 93, 348, 349, + 545, -1, -1, 99, 100, 101, -1, 387, -1, -1, + -1, -1, 392, 393, -1, -1, -1, 367, -1, -1, + 1008, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 126, 411, -1, 129, -1, -1, -1, 387, -1, -1, + -1, -1, 392, -1, -1, 395, -1, -1, -1, -1, + -1, -1, -1, -1, 599, -1, -1, -1, -1, -1, + -1, 411, -1, -1, -1, 2, -1, 4, -1, -1, + -1, -1, 452, -1, -1, -1, -1, -1, -1, -1, + -1, 461, -1, -1, -1, 435, 436, -1, -1, 469, + -1, 72, 73, 74, 75, 76, 77, 78, 79, 479, + 81, 82, 452, -1, -1, -1, 87, 88, -1, -1, + -1, 461, -1, 50, -1, -1, -1, -1, -1, 469, + -1, -1, 667, -1, -1, -1, -1, -1, -1, 479, + -1, 511, -1, -1, -1, -1, -1, -1, -1, -1, + 520, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, -1, -1, -1, 534, -1, 536, -1, -1, -1, + -1, 511, -1, -1, -1, 545, -1, -1, -1, -1, + 520, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 545, -1, -1, -1, -1, + -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, -1, -1, 87, 88, 599, + -1, -1, -1, -1, 769, -1, -1, -1, -1, -1, + -1, 776, 777, 778, -1, -1, -1, -1, -1, 784, + -1, -1, -1, -1, 789, 790, -1, -1, -1, -1, + 795, 796, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, -1, -1, 809, -1, -1, -1, -1, -1, + -1, -1, 209, -1, -1, -1, 821, 822, -1, -1, + -1, -1, -1, -1, 829, -1, -1, 667, -1, -1, + -1, -1, -1, -1, -1, 840, 841, 44, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 667, 863, -1, + -1, -1, -1, 868, -1, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, + 87, 88, -1, -1, -1, -1, 891, -1, 285, -1, + -1, -1, -1, 290, 291, -1, 901, 902, -1, -1, + 905, 298, -1, -1, 909, -1, -1, -1, -1, -1, + -1, -1, -1, 120, -1, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, -1, -1, -1, -1, 769, + -1, -1, -1, 140, -1, -1, 776, 777, -1, -1, + -1, -1, -1, -1, -1, -1, 343, -1, -1, -1, + -1, 348, -1, -1, -1, 795, 796, -1, -1, 769, + 965, -1, 967, -1, -1, 970, -1, 777, 778, 809, + 367, -1, -1, -1, 784, -1, -1, -1, -1, 789, + 790, 821, 822, -1, -1, 795, 796, -1, -1, 829, + 387, -1, -1, -1, -1, 392, -1, -1, 395, 809, + 840, 841, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 821, 822, -1, -1, -1, -1, -1, -1, 829, + -1, -1, -1, 863, -1, -1, -1, -1, 868, -1, + 840, 841, -1, -1, -1, -1, -1, -1, 435, 436, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 452, -1, -1, -1, -1, + -1, 901, 902, -1, 461, 905, -1, -1, -1, 909, + -1, -1, 469, -1, -1, -1, -1, -1, -1, -1, + -1, 891, 479, -1, -1, -1, -1, -1, -1, -1, + -1, 901, 902, -1, -1, 905, -1, -1, -1, 909, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 511, -1, -1, -1, -1, -1, + -1, -1, -1, 520, -1, 965, -1, 967, -1, -1, + 970, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 545, -1, + -1, -1, -1, -1, -1, 965, -1, 967, -1, -1, + 970, -1, -1, -1, -1, -1, -1, 0, 1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + -1, -1, -1, -1, -1, -1, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, 99, -1, -1, 102, + 667, 104, 105, 106, 107, 108, 109, -1, -1, 112, + 113, -1, -1, 116, 117, -1, -1, 72, 73, 74, + 75, 76, 77, 78, -1, -1, 81, 82, -1, 132, + 133, 134, 87, 88, -1, -1, -1, -1, -1, -1, + -1, 144, -1, 146, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, -1, -1, -1, + -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, -1, -1, 87, 88, -1, + -1, -1, 769, -1, -1, -1, -1, -1, -1, -1, + 777, 778, -1, -1, -1, -1, -1, 784, -1, -1, + -1, -1, 789, 790, -1, -1, -1, -1, 795, 796, + 120, -1, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 809, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 821, 822, -1, -1, -1, -1, + -1, -1, 829, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 840, 841, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 13, 14, 15, 16, 17, 18, -1, 20, -1, + -1, -1, -1, -1, -1, 27, 28, -1, -1, -1, + -1, -1, -1, -1, 891, 37, 38, -1, 40, 41, + 42, 43, 44, -1, 901, 902, -1, -1, -1, -1, + -1, -1, 909, -1, -1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 848, -1, -1, -1, -1, -1, -1, - 89, -1, -1, 858, 859, -1, -1, -1, -1, -1, - -1, -1, 867, -1, 103, -1, 871, -1, -1, -1, - -1, -1, -1, -1, 113, 623, -1, 116, 117, -1, - -1, -1, -1, 722, -1, -1, -1, -1, -1, -1, - 729, 730, -1, -1, -1, -1, -1, 136, 137, -1, - -1, -1, -1, 142, 143, 144, 145, 146, -1, 748, - 749, -1, -1, -1, -1, -1, -1, -1, -1, 758, - -1, -1, -1, -1, -1, 930, 765, -1, -1, -1, - -1, 936, -1, 938, -1, -1, 941, -1, 777, 778, - -1, -1, -1, -1, -1, -1, 785, -1, -1, -1, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, -1, -1, 87, 88, 89, -1, 91, + 92, -1, -1, -1, -1, -1, 98, -1, -1, -1, + -1, 103, -1, -1, -1, -1, -1, -1, 965, -1, + 967, 113, -1, 970, 116, 117, -1, 119, 120, -1, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + -1, -1, 0, -1, -1, 137, 138, 139, 140, -1, + -1, 143, 144, 145, 146, 13, 14, 15, 16, 17, + 18, -1, 20, -1, -1, -1, -1, -1, -1, 27, + 28, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 38, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 800, 801, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 722, -1, -1, -1, -1, -1, - -1, 820, 730, 731, -1, -1, 825, -1, -1, 737, - -1, -1, -1, -1, 742, 743, -1, -1, -1, -1, - 748, 749, -1, -1, -1, -1, -1, -1, -1, -1, - 758, -1, -1, -1, -1, -1, -1, 765, -1, 858, - 859, -1, -1, -1, -1, -1, -1, -1, 867, 777, - 778, -1, 871, -1, -1, -1, -1, 785, -1, -1, - -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, - -1, -1, 800, 801, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, 87, - 88, 930, -1, -1, -1, -1, -1, 936, -1, 938, - 848, -1, 941, 72, 73, 74, 75, 76, 77, 78, - 858, 859, 81, 82, -1, -1, -1, -1, 87, 88, - -1, -1, 120, 871, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, -1, -1, -1, -1, -1, -1, - -1, -1, 140, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 930, -1, -1, -1, -1, -1, 936, -1, - 938, 0, 1, 941, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, - 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, - 99, -1, -1, 102, -1, 104, 105, 106, 107, 108, - 109, 0, -1, 112, 113, -1, -1, 116, 117, -1, - -1, -1, -1, -1, 13, 14, 15, 16, 17, 18, - -1, 20, -1, 132, 133, 134, -1, -1, 27, 28, - -1, -1, -1, -1, -1, 144, -1, 146, 37, 38, - -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, -1, -1, 87, 88, - 89, -1, 91, 92, -1, -1, -1, -1, -1, 98, - -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 113, -1, -1, 116, 117, -1, - 119, 120, -1, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, -1, -1, 0, -1, -1, 137, 138, - 139, 140, -1, -1, 143, 144, 145, 146, 13, 14, - 15, 16, 17, 18, -1, 20, -1, -1, -1, -1, - -1, -1, 27, 28, -1, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, + 88, 89, -1, -1, 92, -1, -1, -1, -1, -1, + 98, -1, -1, -1, -1, 103, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 113, -1, -1, 116, 117, + -1, -1, 120, -1, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, -1, -1, 0, -1, -1, 137, + 138, 139, 140, -1, 142, 143, 144, 145, 146, 13, + 14, 15, -1, 17, 18, -1, 20, -1, -1, -1, + -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 37, 38, -1, 40, 41, 42, 43, + 44, -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, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, -1, -1, 87, 88, 89, -1, 91, 92, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, + -1, -1, 116, 117, -1, 119, 120, -1, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, + 0, -1, 136, 137, 138, -1, 140, -1, -1, 143, + 144, 145, 146, 13, 14, 15, -1, 17, 18, -1, + 20, -1, -1, -1, -1, -1, 26, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - -1, -1, 87, 88, 89, -1, -1, 92, -1, -1, - -1, -1, -1, 98, -1, -1, -1, -1, 103, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 113, -1, - -1, 116, 117, -1, -1, 120, -1, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, -1, -1, 0, - -1, -1, 137, 138, 139, 140, -1, 142, 143, 144, - 145, 146, 13, 14, 15, -1, 17, 18, -1, 20, - -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, - 41, 42, 43, 44, -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, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, -1, -1, 87, 88, 89, -1, - 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 113, -1, -1, 116, 117, -1, 119, 120, - -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, -1, -1, 0, -1, 136, 137, 138, -1, 140, - -1, -1, 143, 144, 145, 146, 13, 14, 15, -1, - 17, 18, -1, 20, -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 40, 41, 42, 43, 44, -1, -1, + -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, -1, -1, 87, 88, 89, + -1, 91, 92, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 113, -1, -1, 116, 117, -1, 119, + 120, -1, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, -1, -1, 0, -1, 136, 137, 138, -1, + 140, -1, -1, 143, 144, 145, 146, 13, 14, 15, + -1, 17, 18, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 38, -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, - 87, 88, 89, -1, 91, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 103, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 113, -1, -1, 116, - 117, -1, 119, 120, -1, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, -1, -1, 0, -1, 136, - 137, 138, -1, 140, -1, -1, 143, 144, 145, 146, - 13, 14, 15, -1, 17, 18, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, 40, 41, 42, - 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, + -1, 87, 88, 89, -1, 91, 92, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 103, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 113, -1, -1, + 116, 117, -1, 119, 120, -1, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, -1, -1, 0, -1, + -1, 137, 138, -1, 140, -1, -1, 143, 144, 145, + 146, 13, 14, 15, -1, 17, 18, -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, -1, -1, 87, 88, 89, -1, 91, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, + 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 113, -1, -1, 116, 117, -1, 119, 120, -1, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, - -1, 0, -1, -1, 137, 138, -1, 140, -1, -1, - 143, 144, 145, 146, 13, 14, 15, -1, 17, 18, - -1, 20, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, -1, -1, 87, 88, 89, -1, 91, + 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 103, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 113, -1, -1, 116, 117, -1, 119, 120, -1, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + -1, -1, -1, -1, -1, 137, 138, -1, 140, -1, + -1, 143, 144, 145, 146, 1, -1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + -1, -1, 18, 19, -1, 21, 22, 23, 24, -1, + -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, + 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, + -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, + 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, -1, -1, 87, 88, - 89, -1, 91, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 113, -1, -1, 116, 117, -1, - 119, 120, -1, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, -1, -1, -1, -1, -1, 137, 138, - -1, 140, -1, -1, 143, 144, 145, 146, 1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, -1, -1, 18, 19, -1, 21, 22, - 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, - 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, - -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, + -1, -1, -1, -1, 90, -1, -1, 93, 94, -1, + 96, 97, -1, 99, -1, -1, 102, -1, 104, 105, + 106, 107, 108, 109, -1, -1, 112, 113, -1, -1, + 116, 117, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 132, 133, 134, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 144, 1, + 146, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, -1, -1, 15, -1, 17, 18, 19, -1, 21, + 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, + 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, + -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, + -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, - 93, 94, -1, 96, 97, -1, 99, -1, -1, 102, - -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, - 113, -1, -1, 116, 117, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 132, - 133, 134, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 144, 1, 146, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, -1, -1, 15, -1, 17, 18, - 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, - 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, - 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, + -1, 93, 94, -1, 96, 97, -1, 99, -1, -1, + 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, + 112, 113, -1, -1, 116, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, - 99, -1, -1, 102, -1, 104, 105, 106, 107, 108, - 109, -1, -1, 112, 113, -1, -1, 116, 117, -1, + 132, 133, 134, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 144, 1, 146, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, + 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, + -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, + -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, + 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, + -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 132, 133, 134, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 144, 1, 146, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - 15, -1, -1, 18, 19, 20, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, + -1, 99, -1, -1, 102, -1, 104, 105, 106, 107, + 108, 109, -1, -1, 112, 113, -1, -1, 116, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, - -1, 96, 97, -1, 99, -1, -1, 102, -1, 104, - 105, 106, 107, 108, 109, -1, -1, 112, 113, -1, - -1, 116, 117, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 132, 133, 134, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 144, - 1, 146, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, -1, -1, 15, -1, -1, 18, 19, -1, - 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, - 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, - -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, - -1, -1, 93, 94, -1, 96, 97, -1, 99, -1, - -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, - -1, 112, 113, -1, -1, 116, 117, 1, -1, 3, + -1, -1, -1, -1, 132, 133, 134, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 144, 1, 146, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, - -1, 132, 133, 134, -1, 19, -1, 21, 22, 23, - 24, -1, -1, 144, -1, 146, 30, 31, 32, 33, + -1, 15, -1, -1, 18, 19, -1, 21, 22, 23, + 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, + -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, -1, -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, 113, - -1, -1, 116, 117, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 132, 133, - 134, -1, -1, 137, -1, -1, -1, -1, -1, -1, - 144, 1, 146, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, -1, 14, 15, -1, -1, -1, 19, - -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, 45, -1, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 116, 117, 1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, -1, -1, 132, 133, + 134, -1, 19, -1, 21, 22, 23, 24, -1, -1, + 144, -1, 146, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, - -1, -1, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, 113, -1, -1, 116, 117, 1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, + 97, -1, 99, -1, -1, 102, -1, 104, 105, 106, + 107, 108, 109, -1, -1, 112, 113, -1, -1, 116, + 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 132, 133, 134, -1, -1, + 137, -1, -1, -1, -1, -1, -1, 144, 1, 146, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - -1, -1, 132, 133, 134, -1, 19, -1, 21, 22, - 23, 24, -1, -1, 144, -1, 146, 30, 31, 32, + -1, 14, 15, -1, -1, -1, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, @@ -4003,7 +4102,7 @@ static const yytype_int16 yycheck[] = 113, -1, -1, 116, 117, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 132, 133, 134, -1, 19, -1, 21, 22, 23, 24, -1, - 143, 144, -1, 146, 30, 31, 32, 33, 34, 35, + -1, 144, -1, 146, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, @@ -4023,26 +4122,26 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, -1, -1, 102, -1, 104, 105, 106, 107, 108, - 109, -1, -1, 112, 113, -1, -1, 116, 117, -1, + 109, -1, -1, 112, 113, -1, -1, 116, 117, 1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, -1, -1, 132, 133, 134, -1, 19, -1, 21, + 22, 23, 24, -1, 143, 144, -1, 146, 30, 31, + 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, + -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, + -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 132, 133, 134, -1, -1, 137, -1, - -1, -1, -1, -1, -1, 144, 1, 146, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, - 15, -1, -1, -1, 19, -1, 21, 22, 23, 24, - -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, - 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, - 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, - -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, + -1, 93, 94, -1, 96, 97, -1, 99, -1, -1, + 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, + 112, 113, -1, -1, 116, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, - -1, 96, 97, -1, 99, -1, -1, 102, -1, 104, - 105, 106, 107, 108, 109, -1, -1, 112, 113, -1, - -1, 116, 117, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, -1, 132, 133, 134, - -1, 19, -1, 21, 22, 23, 24, -1, -1, 144, - -1, 146, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, 45, 46, 47, + 132, 133, 134, -1, -1, 137, -1, -1, -1, -1, + -1, -1, 144, 1, 146, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, + -1, 19, -1, 21, 22, 23, 24, -1, -1, -1, + -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, + -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, @@ -4054,7 +4153,7 @@ static const yytype_int16 yycheck[] = 11, 12, -1, -1, 132, 133, 134, -1, 19, -1, 21, 22, 23, 24, -1, -1, 144, -1, 146, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, - -1, -1, -1, -1, 45, -1, 47, 48, 49, 50, + -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -4062,88 +4161,88 @@ static const yytype_int16 yycheck[] = -1, -1, 93, 94, -1, 96, 97, -1, 99, -1, -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, 113, -1, -1, 116, 117, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, + 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 132, 133, 134, -1, 19, -1, 21, 22, 23, 24, -1, -1, 144, -1, 146, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, + -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, - 94, -1, 96, 97, -1, -1, -1, -1, 102, -1, + 94, -1, 96, 97, -1, 99, -1, -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, 113, - -1, -1, 116, 117, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 132, 133, - 134, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 144, -1, 146, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, - -1, 81, 82, -1, -1, 85, 86, 87, 88, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, - 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 116, 117, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, 132, 133, + 134, -1, 19, -1, 21, 22, 23, 24, -1, -1, + 144, -1, 146, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, -1, 133, 134, -1, -1, -1, -1, -1, - -1, 141, 142, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, - -1, 21, 22, 23, 24, -1, 26, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, + 97, -1, -1, -1, -1, 102, -1, 104, 105, 106, + 107, 108, 109, -1, -1, 112, 113, -1, -1, 116, + 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 132, 133, 134, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 144, -1, 146, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, + -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, + -1, -1, 85, 86, 87, 88, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, - 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, + 133, 134, -1, -1, -1, -1, -1, -1, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, 19, -1, 21, 22, + 23, 24, -1, 26, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 132, 133, 134, -1, 136, -1, -1, -1, - -1, -1, 142, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, - -1, 21, 22, 23, 24, -1, 26, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, 99, 100, 101, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, - 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 132, + 133, 134, -1, 136, -1, -1, -1, -1, -1, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, 19, -1, 21, 22, + 23, 24, -1, 26, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 132, 133, 134, -1, 136, -1, -1, -1, - -1, -1, 142, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, - -1, 21, 22, 23, 24, -1, 26, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, 99, 100, 101, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, - 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 132, 133, 134, 19, 136, 21, 22, 23, - 24, -1, 142, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 132, + 133, 134, -1, 136, -1, -1, -1, -1, -1, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, 19, -1, 21, 22, + 23, 24, -1, 26, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 90, 91, -1, 93, - 94, -1, 96, 97, -1, 99, 100, 101, 102, -1, - 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, - -1, -1, -1, -1, -1, 119, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, -1, -1, 132, 133, - 134, -1, 19, -1, 21, 22, 23, 24, 142, -1, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, 99, 100, 101, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 132, + 133, 134, 19, 136, 21, 22, 23, 24, -1, 142, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, @@ -4162,537 +4261,541 @@ static const yytype_int16 yycheck[] = 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, + 90, 91, -1, 93, 94, -1, 96, 97, -1, 99, 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 132, 133, 134, 19, -1, 21, 22, 23, - 24, -1, 142, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, - 94, -1, 96, 97, -1, 99, 100, 101, 102, -1, - 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, 132, 133, - 134, 19, -1, 21, 22, 23, 24, -1, 142, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, - -1, 99, 100, 101, 102, -1, 104, 105, 106, 107, - 108, 109, -1, -1, 112, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 132, 133, 134, -1, -1, -1, - -1, -1, -1, -1, 142, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, - 78, -1, -1, 81, 82, -1, -1, 85, 86, 87, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, - 108, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, -1, 133, 134, -1, -1, -1, - -1, -1, -1, 141, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, - -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, -1, -1, - -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, - -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, - -1, -1, 81, 82, -1, -1, 85, 86, 87, 88, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 99, 100, -1, -1, -1, -1, -1, -1, -1, 108, + -1, -1, 112, -1, -1, -1, -1, -1, -1, 119, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, 132, 133, 134, -1, 19, -1, 21, 22, + 23, 24, 142, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, -1, 133, 134, -1, -1, -1, -1, - -1, -1, 141, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, - 50, 51, 52, -1, -1, 55, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, 99, 100, 101, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 132, + 133, 134, 19, -1, 21, 22, 23, 24, -1, 142, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, - -1, 81, 82, -1, -1, 85, 86, 87, 88, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, - 100, -1, -1, -1, 104, -1, -1, -1, -1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, + 97, -1, 99, 100, 101, 102, -1, 104, 105, 106, + 107, 108, 109, -1, -1, 112, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, 132, 133, 134, 19, -1, + 21, 22, 23, 24, -1, 142, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, + -1, -1, 93, 94, -1, 96, 97, -1, 99, 100, + 101, 102, -1, 104, 105, 106, 107, 108, 109, -1, + -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, -1, 133, 134, -1, -1, -1, -1, -1, - -1, 141, 3, 4, 5, 6, 7, 8, 9, 10, + -1, 132, 133, 134, -1, -1, -1, -1, -1, -1, + -1, 142, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, - 51, 52, -1, -1, 55, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 51, 52, 53, 54, 55, 56, -1, -1, -1, -1, + -1, -1, 63, -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, -1, -1, 85, 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, 100, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, -1, -1, -1, -1, -1, -1, 141, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, -1, -1, -1, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, - -1, 93, 94, -1, 96, 97, -1, -1, -1, -1, - 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, - 112, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, - 132, 21, 22, 23, 24, -1, -1, -1, 140, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, -1, - -1, -1, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, - -1, 19, 132, 21, 22, 23, 24, -1, -1, -1, - 140, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, - -1, 99, -1, -1, 102, -1, 104, 105, 106, 107, - 108, 109, -1, -1, 112, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, 132, 133, 134, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 84, -1, -1, -1, -1, -1, 90, -1, - -1, 93, 94, -1, 96, 97, -1, 99, 100, 101, - 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, - 112, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, - 132, 133, 134, 19, -1, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, - -1, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, -1, -1, -1, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, -1, -1, + -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, -1, -1, -1, -1, -1, + -1, 63, -1, -1, -1, -1, -1, -1, 70, 71, + 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, + 82, -1, -1, 85, 86, 87, 88, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 99, 100, -1, + -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 90, -1, -1, 93, 94, -1, - 96, 97, -1, 99, -1, -1, 102, -1, 104, 105, - 106, 107, 108, 109, -1, -1, 112, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, 132, 133, 134, 19, - -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + -1, 133, 134, -1, -1, -1, -1, -1, -1, 141, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, + -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, + -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, + -1, -1, 85, 86, 87, 88, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, + -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, + 133, 134, -1, -1, -1, -1, -1, -1, 141, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, -1, -1, -1, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, + -1, 45, 46, 47, 48, 49, 50, 51, 52, -1, + -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, + 74, 75, 76, 77, 78, -1, -1, 81, 82, -1, + -1, 85, 86, 87, 88, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, - 100, 101, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 132, 133, 134, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, -1, 133, + 134, -1, -1, -1, -1, -1, -1, 141, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, -1, -1, -1, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, - 94, -1, 96, 97, -1, 99, 100, 101, 102, -1, - 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, 132, 133, - 134, 19, -1, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, + -1, 96, 97, -1, -1, -1, -1, 102, -1, 104, + 105, 106, 107, 108, 109, -1, -1, 112, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, 19, 132, 21, 22, + 23, 24, -1, -1, -1, 140, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, - -1, 99, 100, -1, 102, -1, 104, 105, 106, 107, - 108, 109, -1, -1, 112, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, 132, 133, 134, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, -1, -1, -1, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, -1, -1, -1, -1, -1, -1, 19, 132, + 21, 22, 23, 24, -1, -1, -1, 140, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, + -1, -1, 93, 94, -1, 96, 97, -1, 99, -1, + -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, + -1, 112, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 132, 133, 134, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, + -1, 96, 97, -1, 99, 100, 101, 102, -1, 104, + 105, 106, 107, 108, 109, -1, -1, 112, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, -1, -1, -1, 132, 133, 134, + 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, 45, -1, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, - -1, 93, 94, -1, 96, 97, -1, -1, 100, 101, - 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, - 112, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - 132, 133, 134, 19, -1, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, + -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, + 99, -1, -1, 102, -1, 104, 105, 106, 107, 108, + 109, -1, -1, 112, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, 132, 133, 134, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 90, -1, -1, 93, 94, -1, - 96, 97, -1, 99, 100, -1, 102, -1, 104, 105, - 106, 107, 108, 109, -1, -1, 112, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, 132, 133, 134, 19, - -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, 99, 100, 101, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 132, + 133, 134, 19, -1, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, -1, - 100, -1, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 132, 133, 134, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, + 97, -1, 99, 100, 101, 102, -1, 104, 105, 106, + 107, 108, 109, -1, -1, 112, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, 132, 133, 134, 19, -1, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, + -1, -1, 93, 94, -1, 96, 97, -1, 99, 100, + -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, + -1, 112, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 132, 133, 134, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, - 94, -1, 96, 97, -1, 99, -1, -1, 102, -1, - 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, 132, 133, - 134, 19, -1, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, + -1, 96, 97, -1, -1, 100, 101, 102, -1, 104, + 105, 106, 107, 108, 109, -1, -1, 112, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, 132, 133, 134, + 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, - -1, 99, -1, -1, 102, -1, 104, 105, 106, 107, - 108, 109, -1, -1, 112, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, 132, 133, 134, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, + -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, + 99, 100, -1, 102, -1, 104, 105, 106, 107, 108, + 109, -1, -1, 112, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, 132, 133, 134, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, - -1, 93, 94, -1, 96, 97, -1, 99, -1, -1, - 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, - 112, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - 132, 133, 134, 19, -1, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, -1, 100, -1, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 132, + 133, 134, 19, -1, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 90, -1, -1, 93, 94, -1, - 96, 97, -1, 99, -1, -1, 102, -1, 104, 105, - 106, 107, 108, 109, -1, -1, 112, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, 132, 133, 134, 19, - -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, + 97, -1, 99, -1, -1, 102, -1, 104, 105, 106, + 107, 108, 109, -1, -1, 112, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, 132, 133, 134, 19, -1, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, + -1, -1, 93, 94, -1, 96, 97, -1, 99, -1, + -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, + -1, 112, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 132, 133, 134, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, 99, - -1, -1, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, 132, 133, 134, 19, -1, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, + -1, 96, 97, -1, 99, -1, -1, 102, -1, 104, + 105, 106, 107, 108, 109, -1, -1, 112, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, 132, 133, 134, + 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, - 94, -1, 96, 97, -1, -1, -1, -1, 102, -1, - 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, 132, 133, - 134, 19, -1, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, + -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, + 99, -1, -1, 102, -1, 104, 105, 106, 107, 108, + 109, -1, -1, 112, -1, -1, -1, -1, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, 132, 133, 134, 19, -1, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, - -1, -1, -1, -1, 102, -1, 104, 105, 106, 107, - 108, 109, -1, -1, 112, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, 132, 133, 134, 19, -1, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, 70, 71, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, 99, -1, -1, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, 132, + 133, 134, 19, -1, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, - -1, 93, 94, -1, 96, 97, -1, -1, -1, -1, - 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, - 112, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - 132, 133, 134, 19, -1, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, + 97, -1, -1, -1, -1, 102, -1, 104, 105, 106, + 107, 108, 109, -1, -1, 112, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, 132, 133, 134, 19, -1, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, + -1, -1, 93, 94, -1, 96, 97, -1, -1, -1, + -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, + -1, 112, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, 132, 133, 134, 19, -1, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 87, -1, -1, 90, -1, -1, 93, 94, -1, - 96, 97, -1, -1, -1, -1, 102, -1, 104, 105, - 106, 107, 108, 109, -1, -1, 112, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, -1, -1, -1, 19, 132, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, + -1, 96, 97, -1, -1, -1, -1, 102, -1, 104, + 105, 106, 107, 108, 109, -1, -1, 112, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, 132, 133, 134, + 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, + -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, + -1, -1, -1, 102, -1, 104, 105, 106, 107, 108, + 109, -1, -1, 112, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, + -1, -1, 19, 132, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, - 94, -1, 96, 97, -1, 99, -1, -1, 102, -1, - 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, -1, -1, -1, -1, -1, -1, 19, 132, 21, - 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, - -1, 63, -1, -1, 66, 67, -1, 69, -1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, + 97, -1, 99, -1, -1, 102, -1, 104, 105, 106, + 107, 108, 109, -1, -1, 112, -1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, + -1, -1, -1, -1, 19, 132, 21, 22, 23, 24, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, + -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, - -1, 93, 94, -1, 96, 97, -1, 99, -1, -1, - 102, -1, 104, 105, 106, 107, 108, 109, -1, -1, - 112, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, - 132, 21, 22, 23, 24, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, - -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, - 50, 51, 52, 53, 54, 55, 56, -1, 58, 59, - 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, + -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, + -1, 96, 97, -1, 99, -1, -1, 102, -1, 104, + 105, 106, 107, 108, 109, -1, -1, 112, -1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, 19, 132, 21, 22, + 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, + 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, + 93, 94, -1, 96, 97, -1, -1, -1, -1, 102, + -1, 104, 105, 106, 107, 108, 109, -1, -1, 112, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, 19, 132, + 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, + -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, + 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, + -1, -1, 63, -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 90, -1, -1, 93, 94, -1, 96, 97, -1, -1, - -1, -1, 102, -1, 104, 105, 106, 107, 108, 109, - -1, -1, 112, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, - -1, 19, 132, 21, 22, 23, 24, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, - -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, - 48, 49, 50, 51, 52, 53, 54, 55, 56, -1, - 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, - -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, + -1, -1, 93, 94, -1, 96, 97, -1, -1, -1, + -1, 102, -1, 104, 105, 106, 107, 108, 109, -1, + -1, 112, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, + 19, 132, 21, 22, 23, 24, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, + 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, + 49, 50, 51, 52, 53, 54, 55, 56, -1, 58, + 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, + 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 90, -1, -1, 93, 94, -1, 96, 97, - -1, -1, -1, -1, 102, -1, 104, 105, 106, 107, - 108, 109, -1, -1, 112, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, - -1, -1, -1, 19, 132, 21, 22, 23, 24, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, - 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, - -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, - 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, - 66, 67, -1, 69, -1, -1, -1, -1, -1, -1, + -1, 90, -1, -1, 93, 94, -1, 96, 97, -1, + -1, -1, -1, 102, -1, 104, 105, 106, 107, 108, + 109, -1, -1, 112, -1, -1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, + -1, -1, 19, 132, 21, 22, 23, 24, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, + 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 90, -1, -1, 93, 94, -1, - 96, 97, -1, -1, -1, -1, 102, -1, 104, 105, - 106, 107, 108, 109, -1, -1, 112, -1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, - -1, -1, -1, -1, -1, 19, 132, 21, 22, 23, - 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, - -1, -1, 66, 67, -1, 69, -1, -1, -1, -1, + -1, -1, -1, 90, -1, -1, 93, 94, -1, 96, + 97, -1, 51, 52, -1, 102, 55, 104, 105, 106, + 107, 108, 109, -1, -1, 112, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, + -1, -1, 81, 82, -1, 132, 85, 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 90, -1, -1, 93, - 94, -1, 96, 97, -1, 51, 52, -1, 102, 55, - 104, 105, 106, 107, 108, 109, -1, -1, 112, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 77, 78, -1, -1, 81, 82, -1, 132, 85, - 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, + 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, -1, 133, 134, 51, - 52, -1, -1, 55, -1, 141, 142, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, - 82, -1, -1, 85, 86, 87, 88, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 99, 100, -1, + -1, -1, -1, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, -1, 133, 134, 51, 52, -1, -1, + 55, -1, 141, 142, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, 78, -1, -1, 81, 82, -1, -1, + 85, 86, 87, 88, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, + 51, 52, -1, -1, 55, -1, 141, 142, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, + 81, 82, -1, -1, 85, 86, 87, 88, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - -1, 133, 134, 51, 52, -1, -1, 55, -1, 141, - 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, - 78, -1, -1, 81, 82, -1, -1, 85, 86, 87, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, -1, 133, 134, 51, 52, -1, - -1, 55, -1, 141, 142, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 77, 78, -1, -1, 81, 82, -1, - -1, 85, 86, 87, 88, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, + -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, -1, 133, 134, 51, 52, -1, -1, 55, -1, + 141, 142, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, 78, -1, -1, 81, 82, -1, -1, 85, 86, + 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, -1, 133, - 134, 51, 52, -1, -1, 55, -1, 141, 142, -1, + -1, -1, -1, -1, -1, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, -1, 133, 134, 51, 52, + -1, -1, 55, -1, 141, 142, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, + -1, -1, 85, 86, 87, 88, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, - -1, 81, 82, -1, -1, 85, 86, 87, 88, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, - 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, + 133, 134, 51, 52, -1, -1, 55, -1, 141, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, -1, 133, 134, 51, 52, -1, -1, 55, - -1, 141, 142, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 77, 78, -1, -1, 81, 82, -1, -1, 85, - 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, + -1, -1, 81, 82, -1, -1, 85, 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, -1, 133, 134, 51, - 52, -1, -1, 55, -1, 141, 142, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, - 82, -1, -1, 85, 86, 87, 88, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 99, 100, -1, + 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, -1, 133, 134, 51, 52, -1, -1, + 55, -1, 141, 142, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, 78, -1, -1, 81, 82, -1, -1, + 85, 86, 87, 88, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - -1, 133, 134, 51, 52, -1, -1, 55, -1, 141, - 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, - 78, -1, -1, 81, 82, -1, -1, 85, 86, 87, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, + 51, 52, -1, -1, 55, -1, 141, 142, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, + 81, 82, -1, -1, 85, 86, 87, 88, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, -1, 133, 134, 51, 52, -1, - -1, 55, -1, 141, 142, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 77, 78, -1, -1, 81, 82, -1, - -1, 85, 86, 87, 88, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, -1, 133, - 134, 51, 52, -1, -1, 55, -1, 141, 142, -1, + -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, -1, 133, 134, 51, 52, -1, -1, 55, -1, + 141, 142, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, 78, -1, -1, 81, 82, -1, -1, 85, 86, + 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, - -1, 81, 82, -1, -1, 85, 86, 87, 88, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, - 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, -1, 133, 134, 51, 52, + -1, -1, 55, -1, 141, 142, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, + -1, -1, 85, 86, 87, 88, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, -1, 133, 134, 51, 52, -1, -1, 55, - -1, 141, 142, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 77, 78, -1, -1, 81, 82, -1, -1, 85, - 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, + 133, 134, 51, 52, -1, -1, 55, -1, 141, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, -1, 133, 134, 51, - 52, -1, -1, 55, -1, 141, 142, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 70, 71, - 72, 73, 74, 75, 76, 77, 78, -1, -1, 81, - 82, -1, -1, 85, 86, 87, 88, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 99, 100, -1, + -1, 70, 71, 72, 73, 74, 75, 76, 77, 78, + -1, -1, 81, 82, -1, -1, 85, 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - -1, 133, 134, 51, 52, -1, -1, 55, -1, 141, - 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 70, 71, 72, 73, 74, 75, 76, 77, - 78, -1, -1, 81, 82, -1, -1, 85, 86, 87, - 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, -1, 133, 134, 51, 52, -1, -1, + 55, -1, 141, 142, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 70, 71, 72, 73, 74, + 75, 76, 77, 78, -1, -1, 81, 82, -1, -1, + 85, 86, 87, 88, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, -1, 133, 134, 51, 52, -1, - -1, 55, -1, 141, 142, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 70, 71, 72, 73, - 74, 75, 76, 77, 78, -1, -1, 81, 82, -1, - -1, 85, 86, 87, 88, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, -1, 133, 134, + 51, 52, -1, -1, 55, -1, 141, 142, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, + 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, + 81, 82, -1, -1, 85, 86, 87, 88, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, -1, 133, - 134, 51, 52, -1, -1, 55, -1, 141, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, - -1, 81, 82, -1, -1, 85, 86, 87, 88, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, - 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, -1, 133, 134, 51, 52, -1, -1, 55, -1, + 141, 142, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 70, 71, 72, 73, 74, 75, 76, + 77, 78, -1, -1, 81, 82, -1, -1, 85, 86, + 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, -1, 133, 134, 51, 52, -1, -1, 55, - -1, 141, 142, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 70, 71, 72, 73, 74, 75, - 76, 77, 78, -1, -1, 81, 82, -1, -1, 85, - 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, - -1, -1, -1, -1, -1, -1, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, -1, 133, 134, -1, - -1, -1, -1, -1, -1, 141, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, - -1, 87, 88, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, -1, -1, 87, 88, + -1, -1, -1, -1, -1, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, -1, 133, 134, 51, 52, + -1, -1, 55, -1, 141, 142, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, 71, 72, + 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, + -1, -1, 85, 86, 87, 88, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, -1, -1, -1, -1, - -1, 120, -1, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, -1, 146, 87, 88, + -1, 44, -1, -1, -1, -1, -1, -1, -1, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 44, + 133, 134, -1, -1, -1, -1, -1, -1, 141, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, -1, -1, 87, 88, -1, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, + -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, 87, 88, -1, + -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 120, -1, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, -1, -1, -1, -1, -1, -1, -1, - 120, 140, 122, 123, 124, 125, 126, 127, 128, 129, + 120, 146, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, -1, -1, -1, -1, -1, -1, 140, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, 87, 88, -1, -1, @@ -4704,27 +4807,27 @@ static const yytype_int16 yycheck[] = 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, -1, -1, -1, -1, -1, -1, 140, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, -1, -1, 87, 88, -1, -1, -1, 92, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, -1, -1, 87, 88, -1, -1, -1, + 83, 84, -1, -1, 87, 88, -1, -1, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, -1, -1, 87, 88, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, -1, -1, 87, 88, 72, 73, 74, - 75, 76, 77, 78, 79, -1, 81, 82, -1, -1, - -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - -1, -1, -1, -1, -1, -1, -1, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 72, 73, 74, - 75, 76, 77, 78, -1, -1, 81, 82, -1, -1, - -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 120, 140, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, -1, -1, 87, 88, -1, -1, -1, 92, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, -1, -1, 87, 88, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 120, -1, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 72, + 73, 74, 75, 76, 77, 78, -1, -1, 81, 82, + -1, -1, -1, -1, 87, 88, -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, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4738,103 +4841,105 @@ static const yytype_int16 yystos[] = 58, 59, 60, 63, 66, 67, 69, 70, 71, 90, 93, 94, 96, 97, 99, 102, 104, 105, 106, 107, 108, 109, 112, 132, 133, 134, 150, 151, 152, 157, - 159, 161, 163, 164, 167, 168, 170, 171, 172, 174, - 175, 184, 198, 219, 240, 241, 251, 252, 253, 257, - 258, 259, 265, 266, 267, 269, 270, 271, 272, 273, - 274, 309, 322, 152, 21, 22, 30, 31, 32, 39, - 51, 55, 69, 87, 90, 93, 132, 176, 177, 198, - 219, 271, 274, 309, 177, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 45, - 46, 47, 48, 49, 50, 51, 52, 55, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 81, 82, 85, - 86, 87, 88, 99, 100, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 133, 134, 141, 142, 178, - 182, 183, 273, 303, 199, 90, 161, 162, 175, 219, - 271, 272, 274, 162, 205, 207, 69, 90, 168, 175, - 219, 224, 271, 274, 33, 34, 35, 36, 48, 49, - 50, 51, 55, 104, 178, 179, 180, 267, 113, 116, - 117, 144, 146, 162, 261, 262, 263, 315, 319, 320, - 321, 51, 99, 100, 101, 133, 167, 184, 190, 193, - 196, 253, 306, 308, 190, 190, 142, 187, 188, 191, - 192, 322, 187, 191, 142, 316, 320, 179, 153, 136, - 184, 219, 184, 55, 1, 93, 155, 156, 157, 169, - 170, 322, 200, 202, 185, 196, 306, 322, 184, 305, - 306, 322, 90, 140, 174, 219, 271, 274, 203, 53, - 54, 56, 63, 108, 178, 268, 62, 64, 65, 114, - 115, 254, 255, 63, 254, 63, 254, 63, 254, 61, - 254, 58, 59, 163, 184, 184, 315, 321, 40, 41, - 42, 43, 44, 37, 38, 28, 238, 119, 140, 93, - 99, 171, 119, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 87, 88, 120, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 89, - 103, 138, 145, 313, 89, 313, 314, 26, 136, 242, - 253, 91, 91, 187, 191, 242, 161, 51, 55, 176, - 58, 59, 123, 275, 89, 138, 313, 214, 304, 215, - 89, 145, 312, 154, 155, 55, 16, 220, 319, 119, - 89, 138, 313, 91, 91, 220, 162, 162, 55, 89, - 138, 313, 25, 108, 140, 264, 315, 113, 263, 20, - 245, 319, 57, 307, 184, 184, 184, 92, 140, 194, - 195, 322, 307, 194, 195, 84, 189, 190, 196, 306, - 322, 190, 161, 315, 317, 161, 158, 136, 155, 89, - 313, 91, 157, 169, 143, 315, 321, 317, 157, 317, - 139, 195, 318, 321, 195, 318, 137, 318, 55, 171, - 172, 173, 140, 89, 138, 313, 51, 53, 54, 55, - 56, 69, 72, 93, 99, 100, 101, 126, 129, 142, - 236, 278, 279, 282, 283, 284, 285, 287, 288, 289, - 290, 292, 293, 294, 297, 298, 299, 300, 301, 63, - 254, 256, 260, 261, 62, 255, 63, 63, 63, 61, - 72, 72, 152, 162, 162, 162, 162, 157, 161, 161, - 239, 99, 163, 184, 196, 197, 169, 140, 174, 140, - 159, 160, 163, 175, 184, 186, 197, 219, 274, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 51, 52, 55, 182, 187, - 310, 311, 189, 51, 52, 55, 182, 187, 310, 51, - 55, 310, 244, 243, 160, 184, 186, 160, 186, 98, - 165, 212, 276, 211, 51, 55, 176, 310, 189, 310, - 154, 161, 216, 217, 15, 13, 247, 322, 155, 16, - 51, 55, 189, 51, 55, 155, 27, 221, 319, 221, - 51, 55, 189, 51, 55, 209, 181, 155, 245, 184, - 196, 15, 260, 184, 184, 316, 99, 184, 193, 306, - 184, 308, 317, 143, 315, 195, 195, 317, 143, 179, - 150, 137, 186, 317, 157, 201, 306, 171, 173, 51, - 55, 189, 51, 55, 57, 119, 291, 287, 204, 184, - 140, 302, 322, 51, 140, 302, 140, 286, 184, 140, - 286, 51, 140, 286, 51, 63, 155, 261, 184, 184, - 80, 124, 230, 231, 322, 184, 195, 317, 173, 140, - 44, 119, 44, 89, 138, 313, 316, 91, 91, 187, - 191, 139, 91, 91, 188, 191, 188, 191, 230, 230, - 166, 319, 162, 154, 139, 15, 317, 142, 277, 287, - 178, 184, 197, 248, 322, 18, 223, 322, 17, 222, - 223, 91, 91, 139, 91, 91, 223, 206, 208, 139, - 162, 179, 137, 15, 195, 220, 260, 184, 194, 306, - 137, 317, 318, 139, 51, 99, 225, 292, 233, 316, - 29, 111, 237, 51, 279, 284, 301, 285, 290, 297, - 299, 292, 294, 299, 51, 292, 137, 227, 229, 232, - 278, 280, 281, 284, 292, 293, 295, 296, 299, 301, - 154, 99, 184, 173, 157, 184, 51, 55, 189, 51, - 55, 57, 121, 160, 186, 163, 186, 165, 91, 160, - 186, 160, 186, 165, 242, 238, 154, 155, 230, 213, - 319, 15, 84, 287, 154, 319, 218, 92, 249, 322, - 155, 14, 250, 322, 162, 15, 91, 15, 155, 155, - 221, 184, 155, 195, 140, 289, 317, 140, 143, 144, - 154, 155, 302, 140, 286, 140, 286, 140, 286, 140, - 286, 286, 233, 233, 90, 219, 140, 302, 302, 140, - 228, 219, 140, 228, 140, 228, 15, 184, 139, 184, - 184, 160, 186, 15, 137, 155, 154, 317, 317, 15, - 277, 90, 175, 219, 271, 274, 220, 155, 220, 15, - 15, 210, 223, 245, 246, 226, 140, 99, 51, 234, - 235, 288, 15, 137, 292, 299, 292, 292, 124, 124, - 55, 89, 280, 284, 140, 227, 228, 296, 299, 292, - 295, 299, 292, 137, 15, 154, 55, 89, 138, 313, - 155, 155, 155, 292, 292, 140, 289, 140, 316, 286, - 140, 286, 286, 286, 51, 55, 302, 140, 228, 140, - 228, 140, 228, 140, 228, 228, 15, 51, 55, 189, - 51, 55, 247, 222, 15, 140, 292, 140, 235, 292, - 292, 299, 292, 292, 139, 292, 286, 228, 140, 228, - 228, 228, 292, 228 + 159, 160, 162, 163, 164, 167, 168, 171, 172, 174, + 175, 176, 178, 179, 188, 202, 219, 240, 241, 251, + 252, 253, 257, 258, 259, 265, 266, 267, 269, 270, + 271, 272, 273, 274, 310, 323, 152, 21, 22, 30, + 31, 32, 39, 51, 55, 69, 87, 90, 93, 132, + 163, 164, 180, 181, 202, 219, 271, 274, 310, 181, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 45, 46, 47, 48, 49, 50, + 51, 52, 55, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 81, 82, 85, 86, 87, 88, 99, 100, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 133, 134, 141, 142, 182, 186, 187, 273, 304, 203, + 90, 162, 166, 179, 188, 219, 271, 272, 274, 166, + 209, 211, 69, 90, 172, 179, 219, 224, 271, 274, + 33, 34, 35, 36, 48, 49, 50, 51, 55, 104, + 182, 183, 184, 267, 113, 116, 117, 144, 146, 166, + 261, 262, 263, 316, 320, 321, 322, 51, 99, 100, + 101, 133, 171, 188, 194, 197, 200, 253, 307, 309, + 194, 194, 142, 191, 192, 195, 196, 323, 191, 195, + 142, 317, 321, 183, 153, 136, 188, 219, 188, 55, + 1, 93, 155, 156, 157, 173, 174, 323, 204, 206, + 189, 200, 307, 323, 188, 306, 307, 323, 90, 140, + 178, 219, 271, 274, 207, 53, 54, 56, 63, 108, + 182, 268, 62, 64, 65, 114, 115, 254, 255, 63, + 254, 63, 254, 63, 254, 61, 254, 58, 59, 167, + 188, 188, 316, 322, 40, 41, 42, 43, 44, 92, + 37, 38, 51, 53, 54, 55, 56, 69, 72, 93, + 99, 100, 101, 126, 129, 142, 277, 278, 279, 280, + 283, 284, 285, 286, 288, 289, 290, 291, 293, 294, + 295, 298, 299, 300, 301, 302, 277, 278, 28, 238, + 119, 140, 93, 99, 175, 119, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 87, + 88, 92, 120, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 89, 103, 138, 145, 314, 89, 314, + 315, 26, 136, 242, 253, 91, 91, 191, 195, 242, + 162, 51, 55, 180, 58, 59, 277, 123, 275, 89, + 138, 314, 218, 305, 89, 145, 313, 154, 155, 55, + 16, 220, 320, 119, 89, 138, 314, 91, 91, 220, + 166, 166, 55, 89, 138, 314, 25, 108, 140, 264, + 316, 113, 263, 20, 245, 320, 57, 308, 188, 188, + 188, 92, 140, 198, 199, 323, 308, 198, 199, 84, + 193, 194, 200, 307, 323, 194, 162, 316, 318, 162, + 158, 136, 155, 89, 314, 91, 157, 173, 143, 316, + 322, 318, 157, 318, 139, 199, 319, 322, 199, 319, + 137, 319, 55, 175, 176, 177, 140, 89, 138, 314, + 142, 236, 288, 63, 254, 256, 260, 261, 62, 255, + 63, 63, 63, 61, 72, 72, 152, 166, 166, 166, + 166, 157, 172, 179, 162, 162, 57, 119, 292, 84, + 288, 119, 154, 188, 140, 303, 323, 51, 140, 303, + 320, 140, 287, 188, 140, 287, 51, 140, 287, 51, + 119, 154, 239, 99, 167, 188, 200, 201, 173, 140, + 178, 140, 160, 161, 167, 179, 188, 190, 201, 219, + 274, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 172, 179, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 51, + 52, 55, 186, 191, 311, 312, 193, 51, 52, 55, + 186, 191, 311, 51, 55, 311, 244, 243, 161, 188, + 190, 161, 190, 98, 169, 216, 276, 215, 51, 55, + 180, 311, 193, 311, 154, 162, 165, 15, 13, 247, + 323, 155, 16, 51, 55, 193, 51, 55, 155, 27, + 221, 320, 221, 51, 55, 193, 51, 55, 213, 185, + 155, 245, 188, 200, 15, 260, 188, 188, 317, 99, + 188, 197, 307, 188, 309, 318, 143, 316, 199, 199, + 318, 143, 183, 150, 137, 190, 318, 157, 205, 307, + 175, 177, 51, 55, 193, 51, 55, 288, 208, 63, + 155, 261, 188, 188, 51, 99, 225, 293, 318, 318, + 188, 15, 51, 280, 285, 302, 286, 291, 298, 300, + 293, 295, 300, 51, 293, 188, 15, 80, 124, 230, + 231, 323, 188, 199, 318, 177, 140, 44, 119, 44, + 89, 138, 314, 317, 91, 91, 191, 195, 139, 91, + 91, 192, 195, 192, 195, 230, 230, 170, 320, 166, + 154, 139, 15, 318, 182, 188, 201, 248, 323, 18, + 223, 323, 17, 222, 223, 91, 91, 139, 91, 91, + 223, 210, 212, 139, 166, 183, 137, 15, 199, 220, + 260, 188, 198, 307, 137, 318, 319, 139, 233, 317, + 29, 111, 237, 137, 140, 290, 318, 140, 44, 303, + 140, 287, 140, 287, 140, 287, 140, 287, 287, 44, + 227, 229, 232, 279, 281, 282, 285, 293, 294, 296, + 297, 300, 302, 154, 99, 188, 177, 157, 188, 51, + 55, 193, 51, 55, 57, 121, 161, 190, 167, 190, + 169, 91, 161, 190, 161, 190, 169, 242, 238, 154, + 155, 230, 217, 320, 15, 92, 249, 323, 155, 14, + 250, 323, 166, 15, 91, 15, 155, 155, 221, 188, + 155, 199, 143, 144, 154, 155, 226, 140, 99, 188, + 293, 300, 293, 293, 188, 233, 233, 90, 219, 140, + 303, 303, 140, 228, 219, 140, 228, 140, 228, 15, + 188, 139, 188, 188, 161, 190, 15, 137, 155, 154, + 90, 179, 219, 271, 274, 220, 155, 220, 15, 15, + 214, 223, 245, 246, 51, 234, 235, 289, 15, 137, + 293, 293, 140, 290, 287, 140, 287, 287, 287, 124, + 124, 55, 89, 281, 285, 140, 227, 228, 297, 300, + 293, 296, 300, 293, 137, 15, 55, 89, 138, 314, + 155, 155, 155, 140, 317, 140, 293, 140, 293, 51, + 55, 303, 140, 228, 140, 228, 140, 228, 140, 228, + 228, 51, 55, 193, 51, 55, 247, 222, 15, 235, + 293, 287, 293, 300, 293, 293, 139, 228, 140, 228, + 228, 228, 293, 228 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -4843,63 +4948,64 @@ static const yytype_int16 yyr1[] = 0, 147, 149, 148, 150, 151, 151, 151, 151, 152, 153, 152, 154, 155, 156, 156, 156, 156, 158, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 159, 159, 159, 159, 159, 159, 159, - 159, 160, 160, 160, 161, 161, 161, 161, 161, 161, - 162, 163, 163, 164, 164, 166, 165, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 168, 168, - 169, 169, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 171, 171, 172, 172, 173, 173, 174, 174, - 174, 174, 174, 174, 174, 174, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 176, 176, 177, 177, 177, - 178, 178, 178, 178, 178, 179, 179, 180, 181, 180, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 185, 185, 185, 185, 186, 186, 187, - 187, 188, 188, 189, 189, 189, 189, 189, 190, 190, - 190, 190, 190, 192, 191, 193, 194, 194, 195, 195, - 196, 196, 196, 196, 197, 197, 197, 198, 198, 198, - 198, 198, 198, 198, 198, 198, 199, 198, 200, 201, - 198, 202, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 203, 204, 198, 198, 198, - 205, 206, 198, 207, 208, 198, 198, 198, 209, 210, - 198, 211, 198, 212, 213, 198, 214, 198, 215, 216, - 198, 217, 218, 198, 198, 198, 198, 198, 219, 220, - 220, 220, 221, 221, 222, 222, 223, 223, 224, 224, - 225, 225, 225, 225, 225, 225, 225, 225, 226, 225, - 227, 227, 227, 227, 228, 228, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 230, 230, 232, 231, 231, 231, 233, 233, 234, - 234, 235, 235, 236, 236, 237, 237, 239, 238, 240, - 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 243, 242, 244, 242, 245, 246, 246, 247, - 247, 248, 248, 248, 249, 249, 250, 250, 251, 251, - 251, 251, 252, 252, 253, 253, 253, 253, 254, 254, - 255, 256, 255, 255, 255, 257, 257, 258, 258, 259, - 260, 260, 261, 261, 262, 262, 263, 264, 263, 265, - 265, 266, 266, 267, 268, 268, 268, 268, 268, 268, - 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, - 271, 272, 272, 273, 273, 273, 273, 273, 273, 273, - 273, 274, 274, 275, 276, 275, 277, 277, 277, 278, - 279, 279, 280, 280, 281, 281, 282, 282, 283, 283, - 284, 284, 285, 285, 285, 285, 286, 286, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 288, 288, 288, 288, 288, 289, 289, - 290, 291, 290, 292, 292, 293, 294, 295, 296, 296, - 297, 297, 298, 298, 299, 299, 300, 300, 301, 302, - 302, 303, 304, 303, 305, 305, 306, 306, 307, 307, - 308, 308, 308, 308, 309, 309, 309, 310, 310, 310, - 310, 311, 311, 311, 312, 312, 313, 313, 314, 314, - 315, 315, 316, 316, 317, 318, 318, 318, 319, 319, - 319, 320, 321, 321, 322 + 157, 157, 157, 157, 159, 159, 159, 159, 160, 160, + 160, 160, 160, 160, 160, 160, 161, 161, 161, 162, + 162, 162, 162, 162, 162, 163, 165, 164, 166, 167, + 167, 168, 168, 170, 169, 171, 171, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 172, 172, 173, 173, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 175, 175, 176, 176, 177, 177, 178, 178, 178, 178, + 178, 178, 178, 178, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 180, 180, 181, 181, 181, 182, 182, + 182, 182, 182, 183, 183, 184, 185, 184, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 189, 189, 189, 189, 190, + 190, 191, 191, 192, 192, 193, 193, 193, 193, 193, + 194, 194, 194, 194, 194, 196, 195, 197, 198, 198, + 199, 199, 200, 200, 200, 200, 201, 201, 201, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 203, 202, + 204, 205, 202, 206, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 207, 208, 202, + 202, 202, 209, 210, 202, 211, 212, 202, 202, 202, + 213, 214, 202, 215, 202, 216, 217, 202, 218, 202, + 202, 202, 202, 202, 202, 202, 219, 220, 220, 220, + 221, 221, 222, 222, 223, 223, 224, 224, 225, 225, + 225, 225, 225, 225, 225, 225, 226, 225, 227, 227, + 227, 227, 228, 228, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, + 230, 232, 231, 231, 231, 233, 233, 234, 234, 235, + 235, 236, 236, 237, 237, 239, 238, 240, 240, 240, + 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 243, 242, 244, 242, 245, 246, 246, 247, 247, 248, + 248, 248, 249, 249, 250, 250, 251, 251, 251, 251, + 252, 252, 253, 253, 253, 253, 254, 254, 255, 256, + 255, 255, 255, 257, 257, 258, 258, 259, 260, 260, + 261, 261, 262, 262, 263, 264, 263, 265, 265, 266, + 266, 267, 268, 268, 268, 268, 268, 268, 269, 269, + 270, 270, 270, 270, 271, 271, 271, 271, 271, 272, + 272, 273, 273, 273, 273, 273, 273, 273, 273, 274, + 274, 275, 276, 275, 277, 277, 278, 278, 279, 280, + 280, 281, 281, 282, 282, 283, 283, 284, 284, 285, + 285, 286, 286, 286, 286, 287, 287, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 289, 289, 289, 289, 289, 290, 290, 291, + 292, 291, 293, 293, 294, 295, 296, 297, 297, 298, + 298, 299, 299, 300, 300, 301, 301, 302, 303, 303, + 304, 305, 304, 306, 306, 307, 307, 308, 308, 309, + 309, 309, 309, 310, 310, 310, 311, 311, 311, 311, + 312, 312, 312, 313, 313, 314, 314, 315, 315, 316, + 316, 317, 317, 318, 319, 319, 319, 320, 320, 320, + 321, 322, 322, 323 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4908,63 +5014,64 @@ static const yytype_int8 yyr2[] = 0, 2, 0, 2, 2, 1, 1, 3, 2, 1, 0, 5, 4, 2, 1, 1, 3, 2, 0, 4, 2, 3, 3, 3, 3, 3, 4, 1, 3, 3, - 3, 3, 1, 3, 3, 6, 5, 5, 5, 5, - 3, 1, 3, 1, 1, 3, 3, 3, 2, 1, - 1, 1, 1, 1, 4, 0, 5, 2, 3, 4, - 5, 4, 5, 2, 2, 2, 2, 2, 1, 3, - 1, 3, 1, 2, 3, 5, 2, 4, 2, 4, - 1, 3, 1, 3, 2, 3, 1, 2, 1, 4, - 3, 3, 3, 3, 2, 1, 1, 4, 3, 3, - 3, 3, 2, 1, 1, 1, 1, 2, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, + 6, 5, 5, 5, 5, 3, 1, 3, 1, 1, + 3, 3, 3, 2, 1, 2, 0, 5, 1, 1, + 1, 1, 4, 0, 5, 2, 3, 4, 5, 4, + 5, 2, 2, 2, 2, 2, 1, 3, 1, 3, + 1, 2, 3, 5, 2, 4, 2, 4, 1, 3, + 1, 3, 2, 3, 1, 2, 1, 4, 3, 3, + 3, 3, 2, 1, 1, 4, 3, 3, 3, 3, + 2, 1, 1, 1, 1, 2, 1, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 4, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 6, 5, 5, 5, 5, 4, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 4, 4, 2, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 3, 3, 3, 3, 6, 6, + 4, 6, 4, 6, 1, 1, 2, 4, 2, 1, + 3, 3, 3, 1, 1, 1, 2, 2, 4, 2, + 1, 2, 2, 4, 1, 0, 2, 2, 2, 1, + 1, 3, 1, 2, 3, 4, 3, 4, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, + 0, 0, 5, 0, 3, 3, 3, 2, 3, 3, + 1, 2, 4, 3, 2, 1, 2, 0, 0, 5, + 6, 6, 0, 0, 7, 0, 0, 7, 5, 4, + 0, 0, 9, 0, 6, 0, 0, 8, 0, 5, + 4, 4, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 5, 1, 2, 1, 1, 1, 4, + 6, 3, 5, 2, 4, 1, 0, 4, 4, 2, + 2, 1, 2, 0, 6, 8, 4, 6, 4, 3, + 6, 2, 4, 6, 2, 4, 2, 4, 1, 1, + 1, 0, 4, 1, 4, 1, 4, 1, 3, 1, + 1, 4, 1, 3, 3, 0, 5, 2, 4, 5, + 5, 2, 4, 4, 3, 3, 3, 2, 1, 4, + 0, 5, 0, 5, 5, 1, 1, 6, 1, 1, + 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 2, 3, 1, 2, 1, 0, + 4, 1, 2, 2, 3, 2, 3, 1, 1, 2, + 1, 2, 1, 2, 1, 0, 4, 2, 3, 1, + 4, 2, 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 3, 6, 5, 5, 5, 5, 4, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 4, 4, 2, - 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, - 6, 6, 1, 1, 2, 4, 2, 1, 3, 3, - 3, 1, 1, 1, 2, 2, 4, 2, 1, 2, - 2, 4, 1, 0, 2, 2, 2, 1, 1, 3, - 1, 2, 3, 4, 3, 4, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 4, 0, 0, - 5, 0, 3, 3, 3, 2, 3, 3, 1, 2, - 4, 3, 2, 1, 2, 0, 0, 5, 6, 6, - 0, 0, 7, 0, 0, 7, 5, 4, 0, 0, - 9, 0, 6, 0, 0, 8, 0, 5, 0, 0, - 7, 0, 0, 9, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 5, 1, 2, 1, 1, - 1, 4, 6, 3, 5, 2, 4, 1, 0, 4, - 4, 2, 2, 1, 2, 0, 6, 8, 4, 6, - 4, 3, 6, 2, 4, 6, 2, 4, 2, 4, - 1, 1, 1, 0, 4, 1, 4, 1, 4, 1, - 3, 1, 1, 4, 1, 3, 3, 0, 5, 2, - 4, 5, 5, 2, 4, 4, 3, 3, 3, 2, - 1, 4, 0, 5, 0, 5, 5, 1, 1, 6, - 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, - 1, 1, 1, 2, 1, 1, 2, 3, 1, 2, - 1, 0, 4, 1, 2, 2, 3, 2, 3, 1, - 1, 2, 1, 2, 1, 2, 1, 0, 4, 2, - 3, 1, 4, 2, 1, 1, 1, 1, 1, 2, - 2, 3, 1, 1, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 0, 4, 3, 3, 2, 2, - 2, 1, 2, 1, 1, 3, 1, 3, 1, 1, - 2, 1, 4, 2, 2, 1, 2, 0, 6, 8, - 4, 6, 4, 6, 2, 4, 6, 2, 4, 2, - 4, 1, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 4, 1, 3, 2, 2, 2, 1, 3, - 1, 3, 1, 1, 2, 1, 1, 1, 2, 2, - 1, 1, 0, 4, 1, 2, 1, 3, 1, 2, - 3, 3, 3, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 0, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 0 + 1, 0, 0, 4, 3, 3, 1, 2, 2, 2, + 1, 2, 1, 1, 3, 1, 3, 1, 1, 2, + 1, 4, 2, 2, 1, 2, 0, 6, 8, 4, + 6, 4, 6, 2, 4, 6, 2, 4, 2, 4, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 4, 1, 3, 2, 2, 2, 1, 3, 1, + 3, 1, 1, 2, 1, 1, 1, 2, 2, 1, + 1, 0, 4, 1, 2, 1, 3, 1, 2, 3, + 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 0, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 2, 0 }; @@ -5666,86 +5773,86 @@ yyreduce: switch (yyn) { case 2: -#line 1508 "mrbgems/mruby-compiler/core/parse.y" +#line 1534 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_BEG; if (!p->locals) p->locals = cons(0,0); } -#line 5675 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5782 "mrbgems/mruby-compiler/core/y.tab.c" break; case 3: -#line 1513 "mrbgems/mruby-compiler/core/parse.y" +#line 1539 "mrbgems/mruby-compiler/core/parse.y" { p->tree = new_scope(p, (yyvsp[0].nd)); NODE_LINENO(p->tree, (yyvsp[0].nd)); } -#line 5684 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5791 "mrbgems/mruby-compiler/core/y.tab.c" break; case 4: -#line 1520 "mrbgems/mruby-compiler/core/parse.y" +#line 1546 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 5692 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5799 "mrbgems/mruby-compiler/core/y.tab.c" break; case 5: -#line 1526 "mrbgems/mruby-compiler/core/parse.y" +#line 1552 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, 0); } -#line 5700 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5807 "mrbgems/mruby-compiler/core/y.tab.c" break; case 6: -#line 1530 "mrbgems/mruby-compiler/core/parse.y" +#line 1556 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 5709 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5816 "mrbgems/mruby-compiler/core/y.tab.c" break; case 7: -#line 1535 "mrbgems/mruby-compiler/core/parse.y" +#line 1561 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); } -#line 5717 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5824 "mrbgems/mruby-compiler/core/y.tab.c" break; case 8: -#line 1539 "mrbgems/mruby-compiler/core/parse.y" +#line 1565 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, 0); } -#line 5725 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5832 "mrbgems/mruby-compiler/core/y.tab.c" break; case 10: -#line 1546 "mrbgems/mruby-compiler/core/parse.y" +#line 1572 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = local_switch(p); nvars_block(p); } -#line 5734 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5841 "mrbgems/mruby-compiler/core/y.tab.c" break; case 11: -#line 1551 "mrbgems/mruby-compiler/core/parse.y" +#line 1577 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "BEGIN not supported"); local_resume(p, (yyvsp[-3].nd)); nvars_unnest(p); (yyval.nd) = 0; } -#line 5745 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5852 "mrbgems/mruby-compiler/core/y.tab.c" break; case 12: -#line 1563 "mrbgems/mruby-compiler/core/parse.y" +#line 1589 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-2].nd)) { (yyval.nd) = new_rescue(p, (yyvsp[-3].nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); @@ -5767,1332 +5874,1450 @@ yyreduce: } } } -#line 5771 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5878 "mrbgems/mruby-compiler/core/y.tab.c" break; case 13: -#line 1587 "mrbgems/mruby-compiler/core/parse.y" +#line 1613 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 5779 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5886 "mrbgems/mruby-compiler/core/y.tab.c" break; case 14: -#line 1593 "mrbgems/mruby-compiler/core/parse.y" +#line 1619 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, 0); } -#line 5787 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5894 "mrbgems/mruby-compiler/core/y.tab.c" break; case 15: -#line 1597 "mrbgems/mruby-compiler/core/parse.y" +#line 1623 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 5796 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5903 "mrbgems/mruby-compiler/core/y.tab.c" break; case 16: -#line 1602 "mrbgems/mruby-compiler/core/parse.y" +#line 1628 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd))); } -#line 5804 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5911 "mrbgems/mruby-compiler/core/y.tab.c" break; case 17: -#line 1606 "mrbgems/mruby-compiler/core/parse.y" +#line 1632 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_begin(p, (yyvsp[0].nd)); } -#line 5812 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5919 "mrbgems/mruby-compiler/core/y.tab.c" break; case 18: -#line 1611 "mrbgems/mruby-compiler/core/parse.y" +#line 1637 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_FNAME;} -#line 5818 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5925 "mrbgems/mruby-compiler/core/y.tab.c" break; case 19: -#line 1612 "mrbgems/mruby-compiler/core/parse.y" +#line 1638 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_alias(p, (yyvsp[-2].id), (yyvsp[0].id)); } -#line 5826 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5933 "mrbgems/mruby-compiler/core/y.tab.c" break; case 20: -#line 1616 "mrbgems/mruby-compiler/core/parse.y" +#line 1642 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 5834 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5941 "mrbgems/mruby-compiler/core/y.tab.c" break; case 21: -#line 1620 "mrbgems/mruby-compiler/core/parse.y" +#line 1646 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); } -#line 5842 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5949 "mrbgems/mruby-compiler/core/y.tab.c" break; case 22: -#line 1624 "mrbgems/mruby-compiler/core/parse.y" +#line 1650 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_unless(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0); } -#line 5850 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5957 "mrbgems/mruby-compiler/core/y.tab.c" break; case 23: -#line 1628 "mrbgems/mruby-compiler/core/parse.y" +#line 1654 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_while(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); } -#line 5858 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5965 "mrbgems/mruby-compiler/core/y.tab.c" break; case 24: -#line 1632 "mrbgems/mruby-compiler/core/parse.y" +#line 1658 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_until(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd)); } -#line 5866 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5973 "mrbgems/mruby-compiler/core/y.tab.c" break; case 25: -#line 1636 "mrbgems/mruby-compiler/core/parse.y" +#line 1662 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 5874 "mrbgems/mruby-compiler/core/y.tab.c" +#line 5981 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 26: +#line 1666 "mrbgems/mruby-compiler/core/parse.y" + { + yyerror(p, "END not supported"); + (yyval.nd) = new_postexe(p, (yyvsp[-1].nd)); + } +#line 5990 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 28: +#line 1672 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 5998 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 29: +#line 1676 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); + } +#line 6006 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 30: +#line 1680 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + } +#line 6014 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 26: -#line 1640 "mrbgems/mruby-compiler/core/parse.y" + case 31: +#line 1684 "mrbgems/mruby-compiler/core/parse.y" { - yyerror(p, "END not supported"); - (yyval.nd) = new_postexe(p, (yyvsp[-1].nd)); + (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); } -#line 5883 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6022 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 28: -#line 1646 "mrbgems/mruby-compiler/core/parse.y" + case 34: +#line 1692 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + void_expr_error(p, (yyvsp[-2].nd)); + (yyval.nd) = new_asgn(p, (yyvsp[0].nd), (yyvsp[-2].nd)); } -#line 5891 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6031 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 29: -#line 1650 "mrbgems/mruby-compiler/core/parse.y" + case 35: +#line 1697 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); + void_expr_error(p, (yyvsp[-2].nd)); + (yyval.nd) = new_masgn(p, (yyvsp[0].nd), (yyvsp[-2].nd)); } -#line 5899 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6040 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 30: -#line 1654 "mrbgems/mruby-compiler/core/parse.y" + case 36: +#line 1702 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); + (yyval.nd) = new_asgn(p, (yyvsp[0].nd), (yyvsp[-2].nd)); } -#line 5907 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6048 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 31: -#line 1658 "mrbgems/mruby-compiler/core/parse.y" + case 37: +#line 1706 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd))); + (yyval.nd) = new_masgn(p, (yyvsp[0].nd), (yyvsp[-2].nd)); } -#line 5915 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6056 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 33: -#line 1665 "mrbgems/mruby-compiler/core/parse.y" + case 38: +#line 1712 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 5923 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6064 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 34: -#line 1669 "mrbgems/mruby-compiler/core/parse.y" + case 39: +#line 1716 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 5931 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6072 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 35: -#line 1673 "mrbgems/mruby-compiler/core/parse.y" + case 40: +#line 1720 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), MRB_QSYM(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 5939 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6080 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 36: -#line 1677 "mrbgems/mruby-compiler/core/parse.y" + case 41: +#line 1724 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 5947 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6088 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 37: -#line 1681 "mrbgems/mruby-compiler/core/parse.y" + case 42: +#line 1728 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 5955 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6096 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 38: -#line 1685 "mrbgems/mruby-compiler/core/parse.y" + case 43: +#line 1732 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "constant re-assignment"); (yyval.nd) = 0; } -#line 5964 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6105 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 39: -#line 1690 "mrbgems/mruby-compiler/core/parse.y" + case 44: +#line 1737 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 5972 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6113 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 40: -#line 1694 "mrbgems/mruby-compiler/core/parse.y" + case 45: +#line 1741 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_begin(p, 0); } -#line 5981 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6122 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 42: -#line 1702 "mrbgems/mruby-compiler/core/parse.y" + case 47: +#line 1749 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 5989 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6130 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 45: -#line 1711 "mrbgems/mruby-compiler/core/parse.y" + case 50: +#line 1758 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 5997 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6138 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 46: -#line 1715 "mrbgems/mruby-compiler/core/parse.y" + case 51: +#line 1762 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6005 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6146 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 47: -#line 1719 "mrbgems/mruby-compiler/core/parse.y" + case 52: +#line 1766 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 6013 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6154 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 48: -#line 1723 "mrbgems/mruby-compiler/core/parse.y" + case 53: +#line 1770 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 6021 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6162 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 50: -#line 1730 "mrbgems/mruby-compiler/core/parse.y" + case 55: +#line 1778 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_def(p, (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p)); + p->cmdarg_stack = 0; + p->in_def++; + nvars_block(p); + } +#line 6173 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 56: +#line 1787 "mrbgems/mruby-compiler/core/parse.y" + { + p->lstate = EXPR_FNAME; + } +#line 6181 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 57: +#line 1791 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = new_sdef(p, (yyvsp[-3].nd), (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p)); + p->cmdarg_stack = 0; + p->in_def++; + p->in_single++; + nvars_block(p); + p->lstate = EXPR_ENDFN; /* force for args */ + } +#line 6194 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 58: +#line 1802 "mrbgems/mruby-compiler/core/parse.y" { if (!(yyvsp[0].nd)) (yyval.nd) = new_nil(p); else { (yyval.nd) = (yyvsp[0].nd); } } -#line 6032 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6205 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 54: -#line 1744 "mrbgems/mruby-compiler/core/parse.y" + case 62: +#line 1816 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 6040 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6213 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 55: -#line 1750 "mrbgems/mruby-compiler/core/parse.y" + case 63: +#line 1822 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); } -#line 6049 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6222 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 56: -#line 1757 "mrbgems/mruby-compiler/core/parse.y" + case 64: +#line 1829 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p, (yyvsp[-2].nd), (yyvsp[-1].nd)); local_unnest(p); nvars_unnest(p); } -#line 6059 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6232 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 57: -#line 1765 "mrbgems/mruby-compiler/core/parse.y" + case 65: +#line 1837 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6067 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6240 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 58: -#line 1769 "mrbgems/mruby-compiler/core/parse.y" + case 66: +#line 1841 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_fcall(p, (yyvsp[-2].id), (yyvsp[-1].nd)); } -#line 6076 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6249 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 59: -#line 1774 "mrbgems/mruby-compiler/core/parse.y" + case 67: +#line 1846 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 6084 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6257 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 60: -#line 1778 "mrbgems/mruby-compiler/core/parse.y" + case 68: +#line 1850 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); } -#line 6093 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6266 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 61: -#line 1783 "mrbgems/mruby-compiler/core/parse.y" + case 69: +#line 1855 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 6101 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6274 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 62: -#line 1787 "mrbgems/mruby-compiler/core/parse.y" + case 70: +#line 1859 "mrbgems/mruby-compiler/core/parse.y" { args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), tCOLON2); } -#line 6110 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6283 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 63: -#line 1792 "mrbgems/mruby-compiler/core/parse.y" + case 71: +#line 1864 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_super(p, (yyvsp[0].nd)); } -#line 6118 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6291 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 64: -#line 1796 "mrbgems/mruby-compiler/core/parse.y" + case 72: +#line 1868 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_yield(p, (yyvsp[0].nd)); } -#line 6126 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6299 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 65: -#line 1800 "mrbgems/mruby-compiler/core/parse.y" + case 73: +#line 1872 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_return(p, ret_args(p, (yyvsp[0].nd))); } -#line 6134 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6307 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 66: -#line 1804 "mrbgems/mruby-compiler/core/parse.y" + case 74: +#line 1876 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_break(p, ret_args(p, (yyvsp[0].nd))); } -#line 6142 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6315 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 67: -#line 1808 "mrbgems/mruby-compiler/core/parse.y" + case 75: +#line 1880 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_next(p, ret_args(p, (yyvsp[0].nd))); } -#line 6150 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6323 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 68: -#line 1814 "mrbgems/mruby-compiler/core/parse.y" + case 76: +#line 1886 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 6158 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6331 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 69: -#line 1818 "mrbgems/mruby-compiler/core/parse.y" + case 77: +#line 1890 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6166 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6339 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 71: -#line 1825 "mrbgems/mruby-compiler/core/parse.y" + case 79: +#line 1897 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 6174 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6347 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 72: -#line 1831 "mrbgems/mruby-compiler/core/parse.y" + case 80: +#line 1903 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 6182 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6355 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 73: -#line 1835 "mrbgems/mruby-compiler/core/parse.y" + case 81: +#line 1907 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(push((yyvsp[-1].nd),(yyvsp[0].nd))); } -#line 6190 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6363 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 74: -#line 1839 "mrbgems/mruby-compiler/core/parse.y" + case 82: +#line 1911 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6198 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6371 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 75: -#line 1843 "mrbgems/mruby-compiler/core/parse.y" + case 83: +#line 1915 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-4].nd), (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6206 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6379 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 76: -#line 1847 "mrbgems/mruby-compiler/core/parse.y" + case 84: +#line 1919 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2((yyvsp[-1].nd), new_nil(p)); } -#line 6214 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6387 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 77: -#line 1851 "mrbgems/mruby-compiler/core/parse.y" + case 85: +#line 1923 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-3].nd), new_nil(p), (yyvsp[0].nd)); } -#line 6222 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6395 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 78: -#line 1855 "mrbgems/mruby-compiler/core/parse.y" + case 86: +#line 1927 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2(0, (yyvsp[0].nd)); } -#line 6230 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6403 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 79: -#line 1859 "mrbgems/mruby-compiler/core/parse.y" + case 87: +#line 1931 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6238 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6411 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 80: -#line 1863 "mrbgems/mruby-compiler/core/parse.y" + case 88: +#line 1935 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list2(0, new_nil(p)); } -#line 6246 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6419 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 81: -#line 1867 "mrbgems/mruby-compiler/core/parse.y" + case 89: +#line 1939 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_nil(p), (yyvsp[0].nd)); } -#line 6254 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6427 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 83: -#line 1874 "mrbgems/mruby-compiler/core/parse.y" + case 91: +#line 1946 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn(p, (yyvsp[-1].nd), NULL); } -#line 6262 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6435 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 84: -#line 1880 "mrbgems/mruby-compiler/core/parse.y" + case 92: +#line 1952 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[-1].nd)); } -#line 6270 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6443 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 85: -#line 1884 "mrbgems/mruby-compiler/core/parse.y" + case 93: +#line 1956 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[-1].nd)); } -#line 6278 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6451 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 86: -#line 1890 "mrbgems/mruby-compiler/core/parse.y" + case 94: +#line 1962 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 6286 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6459 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 87: -#line 1894 "mrbgems/mruby-compiler/core/parse.y" + case 95: +#line 1966 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 6294 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6467 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 88: -#line 1900 "mrbgems/mruby-compiler/core/parse.y" + case 96: +#line 1972 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 6302 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6475 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 89: -#line 1904 "mrbgems/mruby-compiler/core/parse.y" + case 97: +#line 1976 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), MRB_QSYM(aref), (yyvsp[-1].nd), '.'); } -#line 6310 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6483 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 90: -#line 1908 "mrbgems/mruby-compiler/core/parse.y" + case 98: +#line 1980 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6318 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6491 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 91: -#line 1912 "mrbgems/mruby-compiler/core/parse.y" + case 99: +#line 1984 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 6326 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6499 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 92: -#line 1916 "mrbgems/mruby-compiler/core/parse.y" + case 100: +#line 1988 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6334 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6507 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 93: -#line 1920 "mrbgems/mruby-compiler/core/parse.y" + case 101: +#line 1992 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 6344 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6517 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 94: -#line 1926 "mrbgems/mruby-compiler/core/parse.y" + case 102: +#line 1998 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 6354 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6527 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 95: -#line 1932 "mrbgems/mruby-compiler/core/parse.y" + case 103: +#line 2004 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[0].nd)); (yyval.nd) = 0; } -#line 6363 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6536 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 96: -#line 1939 "mrbgems/mruby-compiler/core/parse.y" + case 104: +#line 2011 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 6371 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6544 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 97: -#line 1943 "mrbgems/mruby-compiler/core/parse.y" + case 105: +#line 2015 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), MRB_QSYM(aref), (yyvsp[-1].nd), '.'); } -#line 6379 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6552 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 98: -#line 1947 "mrbgems/mruby-compiler/core/parse.y" + case 106: +#line 2019 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6387 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6560 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 99: -#line 1951 "mrbgems/mruby-compiler/core/parse.y" + case 107: +#line 2023 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 6395 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6568 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 100: -#line 1955 "mrbgems/mruby-compiler/core/parse.y" + case 108: +#line 2027 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num)); } -#line 6403 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6576 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 101: -#line 1959 "mrbgems/mruby-compiler/core/parse.y" + case 109: +#line 2031 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 6413 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6586 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 102: -#line 1965 "mrbgems/mruby-compiler/core/parse.y" + case 110: +#line 2037 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "dynamic constant assignment"); (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 6423 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6596 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 103: -#line 1971 "mrbgems/mruby-compiler/core/parse.y" + case 111: +#line 2043 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[0].nd)); (yyval.nd) = 0; } -#line 6432 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6605 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 104: -#line 1976 "mrbgems/mruby-compiler/core/parse.y" + case 112: +#line 2048 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "can't assign to numbered parameter"); } -#line 6440 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6613 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 105: -#line 1982 "mrbgems/mruby-compiler/core/parse.y" + case 113: +#line 2054 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "class/module name must be CONSTANT"); } -#line 6448 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6621 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 107: -#line 1989 "mrbgems/mruby-compiler/core/parse.y" + case 115: +#line 2061 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons((node*)1, nsym((yyvsp[0].id))); } -#line 6456 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6629 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 108: -#line 1993 "mrbgems/mruby-compiler/core/parse.y" + case 116: +#line 2065 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons((node*)0, nsym((yyvsp[0].id))); } -#line 6464 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6637 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 109: -#line 1997 "mrbgems/mruby-compiler/core/parse.y" + case 117: +#line 2069 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); (yyval.nd) = cons((yyvsp[-2].nd), nsym((yyvsp[0].id))); } -#line 6473 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6646 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 113: -#line 2007 "mrbgems/mruby-compiler/core/parse.y" + case 121: +#line 2079 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDFN; (yyval.id) = (yyvsp[0].id); } -#line 6482 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6655 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 114: -#line 2012 "mrbgems/mruby-compiler/core/parse.y" + case 122: +#line 2084 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDFN; (yyval.id) = (yyvsp[0].id); } -#line 6491 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6664 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 117: -#line 2023 "mrbgems/mruby-compiler/core/parse.y" + case 125: +#line 2095 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_undef(p, (yyvsp[0].id)); } -#line 6499 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6672 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 118: -#line 2026 "mrbgems/mruby-compiler/core/parse.y" + case 126: +#line 2098 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_FNAME;} -#line 6505 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6678 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 119: -#line 2027 "mrbgems/mruby-compiler/core/parse.y" + case 127: +#line 2099 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), nsym((yyvsp[0].id))); } -#line 6513 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6686 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 120: -#line 2032 "mrbgems/mruby-compiler/core/parse.y" + case 128: +#line 2104 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(or); } -#line 6519 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6692 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 121: -#line 2033 "mrbgems/mruby-compiler/core/parse.y" + case 129: +#line 2105 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(xor); } -#line 6525 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6698 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 122: -#line 2034 "mrbgems/mruby-compiler/core/parse.y" + case 130: +#line 2106 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(and); } -#line 6531 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6704 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 123: -#line 2035 "mrbgems/mruby-compiler/core/parse.y" + case 131: +#line 2107 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(cmp); } -#line 6537 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6710 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 124: -#line 2036 "mrbgems/mruby-compiler/core/parse.y" + case 132: +#line 2108 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(eq); } -#line 6543 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6716 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 125: -#line 2037 "mrbgems/mruby-compiler/core/parse.y" + case 133: +#line 2109 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(eqq); } -#line 6549 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6722 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 126: -#line 2038 "mrbgems/mruby-compiler/core/parse.y" + case 134: +#line 2110 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(match); } -#line 6555 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6728 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 127: -#line 2039 "mrbgems/mruby-compiler/core/parse.y" + case 135: +#line 2111 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(nmatch); } -#line 6561 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6734 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 128: -#line 2040 "mrbgems/mruby-compiler/core/parse.y" + case 136: +#line 2112 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(gt); } -#line 6567 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6740 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 129: -#line 2041 "mrbgems/mruby-compiler/core/parse.y" + case 137: +#line 2113 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(ge); } -#line 6573 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6746 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 130: -#line 2042 "mrbgems/mruby-compiler/core/parse.y" + case 138: +#line 2114 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(lt); } -#line 6579 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6752 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 131: -#line 2043 "mrbgems/mruby-compiler/core/parse.y" + case 139: +#line 2115 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(le); } -#line 6585 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6758 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 132: -#line 2044 "mrbgems/mruby-compiler/core/parse.y" + case 140: +#line 2116 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(neq); } -#line 6591 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6764 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 133: -#line 2045 "mrbgems/mruby-compiler/core/parse.y" + case 141: +#line 2117 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(lshift); } -#line 6597 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6770 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 134: -#line 2046 "mrbgems/mruby-compiler/core/parse.y" + case 142: +#line 2118 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(rshift); } -#line 6603 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6776 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 135: -#line 2047 "mrbgems/mruby-compiler/core/parse.y" + case 143: +#line 2119 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(add); } -#line 6609 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6782 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 136: -#line 2048 "mrbgems/mruby-compiler/core/parse.y" + case 144: +#line 2120 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(sub); } -#line 6615 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6788 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 137: -#line 2049 "mrbgems/mruby-compiler/core/parse.y" + case 145: +#line 2121 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(mul); } -#line 6621 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6794 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 138: -#line 2050 "mrbgems/mruby-compiler/core/parse.y" + case 146: +#line 2122 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(mul); } -#line 6627 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6800 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 139: -#line 2051 "mrbgems/mruby-compiler/core/parse.y" + case 147: +#line 2123 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(div); } -#line 6633 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6806 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 140: -#line 2052 "mrbgems/mruby-compiler/core/parse.y" + case 148: +#line 2124 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(mod); } -#line 6639 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6812 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 141: -#line 2053 "mrbgems/mruby-compiler/core/parse.y" + case 149: +#line 2125 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(pow); } -#line 6645 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6818 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 142: -#line 2054 "mrbgems/mruby-compiler/core/parse.y" + case 150: +#line 2126 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(pow); } -#line 6651 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6824 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 143: -#line 2055 "mrbgems/mruby-compiler/core/parse.y" + case 151: +#line 2127 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(not); } -#line 6657 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6830 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 144: -#line 2056 "mrbgems/mruby-compiler/core/parse.y" + case 152: +#line 2128 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(neg); } -#line 6663 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6836 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 145: -#line 2057 "mrbgems/mruby-compiler/core/parse.y" + case 153: +#line 2129 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(plus); } -#line 6669 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6842 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 146: -#line 2058 "mrbgems/mruby-compiler/core/parse.y" + case 154: +#line 2130 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(minus); } -#line 6675 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6848 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 147: -#line 2059 "mrbgems/mruby-compiler/core/parse.y" + case 155: +#line 2131 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(aref); } -#line 6681 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6854 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 148: -#line 2060 "mrbgems/mruby-compiler/core/parse.y" + case 156: +#line 2132 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(aset); } -#line 6687 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6860 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 149: -#line 2061 "mrbgems/mruby-compiler/core/parse.y" + case 157: +#line 2133 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = MRB_QSYM(tick); } -#line 6693 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6866 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 190: -#line 2079 "mrbgems/mruby-compiler/core/parse.y" + case 198: +#line 2151 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6701 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6874 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 191: -#line 2083 "mrbgems/mruby-compiler/core/parse.y" + case 199: +#line 2155 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6709 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6882 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 192: -#line 2087 "mrbgems/mruby-compiler/core/parse.y" + case 200: +#line 2159 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), MRB_QSYM(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6717 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6890 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 193: -#line 2091 "mrbgems/mruby-compiler/core/parse.y" + case 201: +#line 2163 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6725 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6898 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 194: -#line 2095 "mrbgems/mruby-compiler/core/parse.y" + case 202: +#line 2167 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6733 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6906 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 195: -#line 2099 "mrbgems/mruby-compiler/core/parse.y" + case 203: +#line 2171 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 6741 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6914 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 196: -#line 2103 "mrbgems/mruby-compiler/core/parse.y" + case 204: +#line 2175 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "constant re-assignment"); (yyval.nd) = new_begin(p, 0); } -#line 6750 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6923 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 197: -#line 2108 "mrbgems/mruby-compiler/core/parse.y" + case 205: +#line 2180 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "constant re-assignment"); (yyval.nd) = new_begin(p, 0); } -#line 6759 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6932 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 198: -#line 2113 "mrbgems/mruby-compiler/core/parse.y" + case 206: +#line 2185 "mrbgems/mruby-compiler/core/parse.y" { backref_error(p, (yyvsp[-2].nd)); (yyval.nd) = new_begin(p, 0); } -#line 6768 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6941 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 199: -#line 2118 "mrbgems/mruby-compiler/core/parse.y" + case 207: +#line 2190 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot2(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6776 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6949 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 200: -#line 2122 "mrbgems/mruby-compiler/core/parse.y" + case 208: +#line 2194 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 6784 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6957 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 201: -#line 2126 "mrbgems/mruby-compiler/core/parse.y" + case 209: +#line 2198 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd)); } -#line 6792 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6965 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 202: -#line 2130 "mrbgems/mruby-compiler/core/parse.y" + case 210: +#line 2202 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd)); } -#line 6800 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6973 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 203: -#line 2134 "mrbgems/mruby-compiler/core/parse.y" + case 211: +#line 2206 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd)); } -#line 6808 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6981 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 204: -#line 2138 "mrbgems/mruby-compiler/core/parse.y" + case 212: +#line 2210 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd)); } -#line 6816 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6989 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 205: -#line 2142 "mrbgems/mruby-compiler/core/parse.y" + case 213: +#line 2214 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd)); } -#line 6824 "mrbgems/mruby-compiler/core/y.tab.c" +#line 6997 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 206: -#line 2146 "mrbgems/mruby-compiler/core/parse.y" + case 214: +#line 2218 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)); } -#line 6832 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7005 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 207: -#line 2150 "mrbgems/mruby-compiler/core/parse.y" + case 215: +#line 2222 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)), "-@"); } -#line 6840 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7013 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 208: -#line 2154 "mrbgems/mruby-compiler/core/parse.y" + case 216: +#line 2226 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)), "-@"); } -#line 6848 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7021 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 209: -#line 2158 "mrbgems/mruby-compiler/core/parse.y" + case 217: +#line 2230 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@"); } -#line 6856 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7029 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 210: -#line 2162 "mrbgems/mruby-compiler/core/parse.y" + case 218: +#line 2234 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "-@"); } -#line 6864 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7037 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 211: -#line 2166 "mrbgems/mruby-compiler/core/parse.y" + case 219: +#line 2238 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd)); } -#line 6872 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7045 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 212: -#line 2170 "mrbgems/mruby-compiler/core/parse.y" + case 220: +#line 2242 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd)); } -#line 6880 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7053 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 213: -#line 2174 "mrbgems/mruby-compiler/core/parse.y" + case 221: +#line 2246 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd)); } -#line 6888 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7061 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 214: -#line 2178 "mrbgems/mruby-compiler/core/parse.y" + case 222: +#line 2250 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd)); } -#line 6896 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7069 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 215: -#line 2182 "mrbgems/mruby-compiler/core/parse.y" + case 223: +#line 2254 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd)); } -#line 6904 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7077 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 216: -#line 2186 "mrbgems/mruby-compiler/core/parse.y" + case 224: +#line 2258 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd)); } -#line 6912 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7085 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 217: -#line 2190 "mrbgems/mruby-compiler/core/parse.y" + case 225: +#line 2262 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd)); } -#line 6920 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7093 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 218: -#line 2194 "mrbgems/mruby-compiler/core/parse.y" + case 226: +#line 2266 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd)); } -#line 6928 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7101 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 219: -#line 2198 "mrbgems/mruby-compiler/core/parse.y" + case 227: +#line 2270 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd)); } -#line 6936 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7109 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 220: -#line 2202 "mrbgems/mruby-compiler/core/parse.y" + case 228: +#line 2274 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd)); } -#line 6944 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7117 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 221: -#line 2206 "mrbgems/mruby-compiler/core/parse.y" + case 229: +#line 2278 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd)); } -#line 6952 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7125 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 222: -#line 2210 "mrbgems/mruby-compiler/core/parse.y" + case 230: +#line 2282 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd)); } -#line 6960 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7133 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 223: -#line 2214 "mrbgems/mruby-compiler/core/parse.y" + case 231: +#line 2286 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd)); } -#line 6968 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7141 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 224: -#line 2218 "mrbgems/mruby-compiler/core/parse.y" + case 232: +#line 2290 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!"); } -#line 6976 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7149 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 225: -#line 2222 "mrbgems/mruby-compiler/core/parse.y" + case 233: +#line 2294 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~"); } -#line 6984 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7157 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 226: -#line 2226 "mrbgems/mruby-compiler/core/parse.y" + case 234: +#line 2298 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd)); } -#line 6992 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7165 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 227: -#line 2230 "mrbgems/mruby-compiler/core/parse.y" + case 235: +#line 2302 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd)); } -#line 7000 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7173 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 228: -#line 2234 "mrbgems/mruby-compiler/core/parse.y" + case 236: +#line 2306 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7008 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7181 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 229: -#line 2238 "mrbgems/mruby-compiler/core/parse.y" + case 237: +#line 2310 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7016 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7189 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 230: -#line 2242 "mrbgems/mruby-compiler/core/parse.y" + case 238: +#line 2314 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); } -#line 7024 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7197 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 231: -#line 2246 "mrbgems/mruby-compiler/core/parse.y" + case 239: +#line 2318 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd)); } -#line 7032 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7205 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 232: -#line 2250 "mrbgems/mruby-compiler/core/parse.y" + case 240: +#line 2322 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-3].nd); + void_expr_error(p, (yyvsp[0].nd)); + defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd)); + nvars_unnest(p); + p->in_def--; + } +#line 7217 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 241: +#line 2330 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-5].nd); + void_expr_error(p, (yyvsp[-2].nd)); + void_expr_error(p, (yyvsp[0].nd)); + defn_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd))); + nvars_unnest(p); + p->in_def--; + } +#line 7230 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 242: +#line 2339 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-3].nd); + void_expr_error(p, (yyvsp[0].nd)); + defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd)); + nvars_unnest(p); + p->in_def--; + p->in_single--; + } +#line 7243 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 243: +#line 2348 "mrbgems/mruby-compiler/core/parse.y" + { + (yyval.nd) = (yyvsp[-5].nd); + void_expr_error(p, (yyvsp[-2].nd)); + void_expr_error(p, (yyvsp[0].nd)); + defs_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd))); + nvars_unnest(p); + p->in_def--; + p->in_single--; + } +#line 7257 "mrbgems/mruby-compiler/core/y.tab.c" + break; + + case 244: +#line 2358 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7040 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7265 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 234: -#line 2257 "mrbgems/mruby-compiler/core/parse.y" + case 246: +#line 2365 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7049 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7274 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 235: -#line 2262 "mrbgems/mruby-compiler/core/parse.y" + case 247: +#line 2370 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))); } -#line 7057 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7282 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 236: -#line 2266 "mrbgems/mruby-compiler/core/parse.y" + case 248: +#line 2374 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(new_kw_hash(p, (yyvsp[-1].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7066 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7291 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 237: -#line 2273 "mrbgems/mruby-compiler/core/parse.y" + case 249: +#line 2381 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7074 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7299 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 238: -#line 2277 "mrbgems/mruby-compiler/core/parse.y" + case 250: +#line 2385 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7084 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7309 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 239: -#line 2285 "mrbgems/mruby-compiler/core/parse.y" + case 251: +#line 2393 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 7092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7317 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 240: -#line 2289 "mrbgems/mruby-compiler/core/parse.y" + case 252: +#line 2397 "mrbgems/mruby-compiler/core/parse.y" { #if 1 mrb_sym r = MRB_QSYM(mul); @@ -7116,373 +7341,373 @@ yyreduce: (yyval.nd) = 0; } } -#line 7120 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7345 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 245: -#line 2321 "mrbgems/mruby-compiler/core/parse.y" + case 257: +#line 2429 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons((yyvsp[-1].nd),0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7129 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7354 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 246: -#line 2326 "mrbgems/mruby-compiler/core/parse.y" + case 258: +#line 2434 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))), 0); NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); } -#line 7138 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7363 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 247: -#line 2331 "mrbgems/mruby-compiler/core/parse.y" + case 259: +#line 2439 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(list1(new_kw_hash(p, (yyvsp[-1].nd))), 0); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7147 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7372 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 248: -#line 2338 "mrbgems/mruby-compiler/core/parse.y" + case 260: +#line 2446 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(list1((yyvsp[0].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7157 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7382 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 249: -#line 2344 "mrbgems/mruby-compiler/core/parse.y" + case 261: +#line 2452 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons((yyvsp[-1].nd), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7166 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7391 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 250: -#line 2349 "mrbgems/mruby-compiler/core/parse.y" + case 262: +#line 2457 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(list1(new_kw_hash(p, (yyvsp[-1].nd))), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7175 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7400 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 251: -#line 2354 "mrbgems/mruby-compiler/core/parse.y" + case 263: +#line 2462 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(push((yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd))), (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[-3].nd)); } -#line 7184 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7409 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 252: -#line 2359 "mrbgems/mruby-compiler/core/parse.y" + case 264: +#line 2467 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(0, (yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7193 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7418 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 253: -#line 2365 "mrbgems/mruby-compiler/core/parse.y" + case 265: +#line 2473 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; CMDARG_PUSH(1); } -#line 7202 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7427 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 254: -#line 2370 "mrbgems/mruby-compiler/core/parse.y" + case 266: +#line 2478 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-1].stack); (yyval.nd) = (yyvsp[0].nd); } -#line 7211 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7436 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 255: -#line 2377 "mrbgems/mruby-compiler/core/parse.y" + case 267: +#line 2485 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block_arg(p, (yyvsp[0].nd)); } -#line 7219 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7444 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 256: -#line 2383 "mrbgems/mruby-compiler/core/parse.y" + case 268: +#line 2491 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7227 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7452 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 257: -#line 2387 "mrbgems/mruby-compiler/core/parse.y" + case 269: +#line 2495 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 7235 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7460 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 260: -#line 2397 "mrbgems/mruby-compiler/core/parse.y" + case 272: +#line 2505 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons((yyvsp[0].nd), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7245 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7470 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 261: -#line 2403 "mrbgems/mruby-compiler/core/parse.y" + case 273: +#line 2511 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_splat(p, (yyvsp[0].nd)), 0); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 7255 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7480 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 262: -#line 2409 "mrbgems/mruby-compiler/core/parse.y" + case 274: +#line 2517 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7264 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7489 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 263: -#line 2414 "mrbgems/mruby-compiler/core/parse.y" + case 275: +#line 2522 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); } -#line 7273 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7498 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 264: -#line 2421 "mrbgems/mruby-compiler/core/parse.y" + case 276: +#line 2529 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 7282 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7507 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 265: -#line 2426 "mrbgems/mruby-compiler/core/parse.y" + case 277: +#line 2534 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd))); } -#line 7291 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7516 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 266: -#line 2431 "mrbgems/mruby-compiler/core/parse.y" + case 278: +#line 2539 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd))); } -#line 7300 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7525 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 274: -#line 2445 "mrbgems/mruby-compiler/core/parse.y" + case 286: +#line 2553 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nvar(p, (yyvsp[0].num)); } -#line 7308 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7533 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 275: -#line 2449 "mrbgems/mruby-compiler/core/parse.y" + case 287: +#line 2557 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0); } -#line 7316 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7541 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 276: -#line 2453 "mrbgems/mruby-compiler/core/parse.y" + case 288: +#line 2561 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7325 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7550 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 277: -#line 2459 "mrbgems/mruby-compiler/core/parse.y" + case 289: +#line 2567 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-2].stack); (yyval.nd) = (yyvsp[-1].nd); } -#line 7334 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7559 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 278: -#line 2464 "mrbgems/mruby-compiler/core/parse.y" + case 290: +#line 2572 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7343 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7568 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 279: -#line 2468 "mrbgems/mruby-compiler/core/parse.y" + case 291: +#line 2576 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_ENDARG;} -#line 7349 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7574 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 280: -#line 2469 "mrbgems/mruby-compiler/core/parse.y" + case 292: +#line 2577 "mrbgems/mruby-compiler/core/parse.y" { p->cmdarg_stack = (yyvsp[-3].stack); (yyval.nd) = (yyvsp[-2].nd); } -#line 7358 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7583 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 281: -#line 2473 "mrbgems/mruby-compiler/core/parse.y" + case 293: +#line 2581 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_ENDARG;} -#line 7364 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7589 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 282: -#line 2474 "mrbgems/mruby-compiler/core/parse.y" + case 294: +#line 2582 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nil(p); } -#line 7372 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7597 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 283: -#line 2478 "mrbgems/mruby-compiler/core/parse.y" + case 295: +#line 2586 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 7380 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7605 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 284: -#line 2482 "mrbgems/mruby-compiler/core/parse.y" + case 296: +#line 2590 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id)); } -#line 7388 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7613 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 285: -#line 2486 "mrbgems/mruby-compiler/core/parse.y" + case 297: +#line 2594 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_colon3(p, (yyvsp[0].id)); } -#line 7396 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7621 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 286: -#line 2490 "mrbgems/mruby-compiler/core/parse.y" + case 298: +#line 2598 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_array(p, (yyvsp[-1].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7405 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7630 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 287: -#line 2495 "mrbgems/mruby-compiler/core/parse.y" + case 299: +#line 2603 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_hash(p, (yyvsp[-1].nd)); NODE_LINENO((yyval.nd), (yyvsp[-1].nd)); } -#line 7414 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7639 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 288: -#line 2500 "mrbgems/mruby-compiler/core/parse.y" + case 300: +#line 2608 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_return(p, 0); } -#line 7422 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7647 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 289: -#line 2504 "mrbgems/mruby-compiler/core/parse.y" + case 301: +#line 2612 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_yield(p, (yyvsp[0].nd)); } -#line 7430 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7655 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 290: -#line 2508 "mrbgems/mruby-compiler/core/parse.y" + case 302: +#line 2616 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!"); } -#line 7438 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7663 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 291: -#line 2512 "mrbgems/mruby-compiler/core/parse.y" + case 303: +#line 2620 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = call_uni_op(p, new_nil(p), "!"); } -#line 7446 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7671 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 292: -#line 2516 "mrbgems/mruby-compiler/core/parse.y" + case 304: +#line 2624 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), cons(0, (yyvsp[0].nd))); } -#line 7454 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7679 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 294: -#line 2521 "mrbgems/mruby-compiler/core/parse.y" + case 306: +#line 2629 "mrbgems/mruby-compiler/core/parse.y" { call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd)); (yyval.nd) = (yyvsp[-1].nd); } -#line 7463 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7688 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 295: -#line 2526 "mrbgems/mruby-compiler/core/parse.y" + case 307: +#line 2634 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); (yyval.num) = p->lpar_beg; p->lpar_beg = ++p->paren_nest; } -#line 7473 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7698 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 296: -#line 2532 "mrbgems/mruby-compiler/core/parse.y" + case 308: +#line 2640 "mrbgems/mruby-compiler/core/parse.y" { (yyval.stack) = p->cmdarg_stack; p->cmdarg_stack = 0; } -#line 7482 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7707 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 297: -#line 2537 "mrbgems/mruby-compiler/core/parse.y" + case 309: +#line 2645 "mrbgems/mruby-compiler/core/parse.y" { p->lpar_beg = (yyvsp[-3].num); (yyval.nd) = new_lambda(p, (yyvsp[-2].nd), (yyvsp[0].nd)); @@ -7490,149 +7715,149 @@ yyreduce: p->cmdarg_stack = (yyvsp[-1].stack); CMDARG_LEXPOP(); } -#line 7494 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7719 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 298: -#line 2548 "mrbgems/mruby-compiler/core/parse.y" + case 310: +#line 2656 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); } -#line 7503 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7728 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 299: -#line 2556 "mrbgems/mruby-compiler/core/parse.y" + case 311: +#line 2664 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_unless(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); } -#line 7512 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7737 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 300: -#line 2560 "mrbgems/mruby-compiler/core/parse.y" + case 312: +#line 2668 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7518 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7743 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 301: -#line 2560 "mrbgems/mruby-compiler/core/parse.y" + case 313: +#line 2668 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7524 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7749 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 302: -#line 2563 "mrbgems/mruby-compiler/core/parse.y" + case 314: +#line 2671 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_while(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); } -#line 7533 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7758 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 303: -#line 2567 "mrbgems/mruby-compiler/core/parse.y" + case 315: +#line 2675 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7539 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7764 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 304: -#line 2567 "mrbgems/mruby-compiler/core/parse.y" + case 316: +#line 2675 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7545 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7770 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 305: -#line 2570 "mrbgems/mruby-compiler/core/parse.y" + case 317: +#line 2678 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_until(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-6].num)); } -#line 7554 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7779 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 306: -#line 2577 "mrbgems/mruby-compiler/core/parse.y" + case 318: +#line 2685 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 7562 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7787 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 307: -#line 2581 "mrbgems/mruby-compiler/core/parse.y" + case 319: +#line 2689 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_case(p, 0, (yyvsp[-1].nd)); } -#line 7570 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7795 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 308: -#line 2585 "mrbgems/mruby-compiler/core/parse.y" + case 320: +#line 2693 "mrbgems/mruby-compiler/core/parse.y" {COND_PUSH(1);} -#line 7576 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7801 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 309: -#line 2587 "mrbgems/mruby-compiler/core/parse.y" + case 321: +#line 2695 "mrbgems/mruby-compiler/core/parse.y" {COND_POP();} -#line 7582 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7807 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 310: -#line 2590 "mrbgems/mruby-compiler/core/parse.y" + case 322: +#line 2698 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_for(p, (yyvsp[-7].nd), (yyvsp[-4].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-8].num)); } -#line 7591 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7816 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 311: -#line 2596 "mrbgems/mruby-compiler/core/parse.y" + case 323: +#line 2704 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "class definition in method body"); (yyval.nd) = local_switch(p); nvars_block(p); } -#line 7602 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7827 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 312: -#line 2604 "mrbgems/mruby-compiler/core/parse.y" + case 324: +#line 2712 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_class(p, (yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-5].num)); local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 7613 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7838 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 313: -#line 2612 "mrbgems/mruby-compiler/core/parse.y" + case 325: +#line 2720 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = p->in_def; p->in_def = 0; } -#line 7622 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7847 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 314: -#line 2617 "mrbgems/mruby-compiler/core/parse.y" + case 326: +#line 2725 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(local_switch(p), nint(p->in_single)); nvars_block(p); p->in_single = 0; } -#line 7632 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7857 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 315: -#line 2624 "mrbgems/mruby-compiler/core/parse.y" + case 327: +#line 2732 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_sclass(p, (yyvsp[-5].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-7].num)); @@ -7641,539 +7866,496 @@ yyreduce: p->in_def = (yyvsp[-4].num); p->in_single = intn((yyvsp[-2].nd)->cdr); } -#line 7645 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7870 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 316: -#line 2634 "mrbgems/mruby-compiler/core/parse.y" + case 328: +#line 2742 "mrbgems/mruby-compiler/core/parse.y" { if (p->in_def || p->in_single) yyerror(p, "module definition in method body"); (yyval.nd) = local_switch(p); nvars_block(p); } -#line 7656 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7881 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 317: -#line 2642 "mrbgems/mruby-compiler/core/parse.y" + case 329: +#line 2750 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_module(p, (yyvsp[-3].nd), (yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-4].num)); local_resume(p, (yyvsp[-2].nd)); nvars_unnest(p); } -#line 7667 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 318: -#line 2649 "mrbgems/mruby-compiler/core/parse.y" - { - (yyval.stack) = p->cmdarg_stack; - p->cmdarg_stack = 0; - } -#line 7676 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 319: -#line 2653 "mrbgems/mruby-compiler/core/parse.y" - { - p->in_def++; - (yyval.nd) = local_switch(p); - nvars_block(p); - } -#line 7686 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7892 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 320: -#line 2661 "mrbgems/mruby-compiler/core/parse.y" + case 330: +#line 2760 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_def(p, (yyvsp[-5].id), (yyvsp[-2].nd), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-6].num)); - local_resume(p, (yyvsp[-3].nd)); + (yyval.nd) = (yyvsp[-3].nd); + defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); nvars_unnest(p); p->in_def--; - p->cmdarg_stack = (yyvsp[-4].stack); - } -#line 7699 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 321: -#line 2670 "mrbgems/mruby-compiler/core/parse.y" - { - p->lstate = EXPR_FNAME; - (yyval.stack) = p->cmdarg_stack; - p->cmdarg_stack = 0; - } -#line 7709 "mrbgems/mruby-compiler/core/y.tab.c" - break; - - case 322: -#line 2676 "mrbgems/mruby-compiler/core/parse.y" - { - p->in_single++; - p->lstate = EXPR_ENDFN; /* force for args */ - (yyval.nd) = local_switch(p); - nvars_block(p); } -#line 7720 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7903 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 323: -#line 2685 "mrbgems/mruby-compiler/core/parse.y" + case 331: +#line 2770 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_sdef(p, (yyvsp[-7].nd), (yyvsp[-4].id), (yyvsp[-2].nd), (yyvsp[-1].nd)); - SET_LINENO((yyval.nd), (yyvsp[-8].num)); - local_resume(p, (yyvsp[-3].nd)); + (yyval.nd) = (yyvsp[-3].nd); + defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd)); nvars_unnest(p); + p->in_def--; p->in_single--; - p->cmdarg_stack = (yyvsp[-5].stack); } -#line 7733 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7915 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 324: -#line 2694 "mrbgems/mruby-compiler/core/parse.y" + case 332: +#line 2778 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_break(p, 0); } -#line 7741 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7923 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 325: -#line 2698 "mrbgems/mruby-compiler/core/parse.y" + case 333: +#line 2782 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_next(p, 0); } -#line 7749 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7931 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 326: -#line 2702 "mrbgems/mruby-compiler/core/parse.y" + case 334: +#line 2786 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_redo(p); } -#line 7757 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7939 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 327: -#line 2706 "mrbgems/mruby-compiler/core/parse.y" + case 335: +#line 2790 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_retry(p); } -#line 7765 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7947 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 328: -#line 2712 "mrbgems/mruby-compiler/core/parse.y" + case 336: +#line 2796 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 7774 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7956 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 335: -#line 2731 "mrbgems/mruby-compiler/core/parse.y" + case 343: +#line 2815 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 7782 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7964 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 337: -#line 2738 "mrbgems/mruby-compiler/core/parse.y" + case 345: +#line 2822 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7790 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7972 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 338: -#line 2744 "mrbgems/mruby-compiler/core/parse.y" + case 346: +#line 2828 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list1((yyvsp[0].nd))); } -#line 7798 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7980 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 340: -#line 2751 "mrbgems/mruby-compiler/core/parse.y" + case 348: +#line 2835 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[0].nd),0,0); } -#line 7806 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7988 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 341: -#line 2755 "mrbgems/mruby-compiler/core/parse.y" + case 349: +#line 2839 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0); } -#line 7814 "mrbgems/mruby-compiler/core/y.tab.c" +#line 7996 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 342: -#line 2759 "mrbgems/mruby-compiler/core/parse.y" + case 350: +#line 2843 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 7822 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8004 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 343: -#line 2763 "mrbgems/mruby-compiler/core/parse.y" + case 351: +#line 2847 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, 0); (yyval.nd) = list3((yyvsp[-2].nd), (node*)-1, 0); } -#line 7831 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8013 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 344: -#line 2768 "mrbgems/mruby-compiler/core/parse.y" + case 352: +#line 2852 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3((yyvsp[-4].nd), (node*)-1, (yyvsp[0].nd)); } -#line 7839 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8021 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 345: -#line 2772 "mrbgems/mruby-compiler/core/parse.y" + case 353: +#line 2856 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0); } -#line 7847 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8029 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 346: -#line 2776 "mrbgems/mruby-compiler/core/parse.y" + case 354: +#line 2860 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 7855 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8037 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 347: -#line 2780 "mrbgems/mruby-compiler/core/parse.y" + case 355: +#line 2864 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, 0); (yyval.nd) = list3(0, (node*)-1, 0); } -#line 7864 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8046 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 348: -#line 2785 "mrbgems/mruby-compiler/core/parse.y" + case 356: +#line 2869 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, 0); } -#line 7872 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8054 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 349: -#line 2789 "mrbgems/mruby-compiler/core/parse.y" + case 357: +#line 2873 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list3(0, (node*)-1, (yyvsp[0].nd)); } -#line 7880 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8062 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 350: -#line 2795 "mrbgems/mruby-compiler/core/parse.y" + case 358: +#line 2879 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 7888 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8070 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 351: -#line 2799 "mrbgems/mruby-compiler/core/parse.y" + case 359: +#line 2883 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 7896 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8078 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 352: -#line 2803 "mrbgems/mruby-compiler/core/parse.y" + case 360: +#line 2887 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 7904 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8086 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 353: -#line 2807 "mrbgems/mruby-compiler/core/parse.y" + case 361: +#line 2891 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } -#line 7912 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8094 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 354: -#line 2813 "mrbgems/mruby-compiler/core/parse.y" + case 362: +#line 2897 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 7920 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8102 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 355: -#line 2817 "mrbgems/mruby-compiler/core/parse.y" + case 363: +#line 2901 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, 0); } -#line 7928 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8110 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 356: -#line 2823 "mrbgems/mruby-compiler/core/parse.y" + case 364: +#line 2907 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 7936 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8118 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 357: -#line 2827 "mrbgems/mruby-compiler/core/parse.y" + case 365: +#line 2911 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 7944 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8126 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 358: -#line 2831 "mrbgems/mruby-compiler/core/parse.y" + case 366: +#line 2915 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 7952 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8134 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 359: -#line 2835 "mrbgems/mruby-compiler/core/parse.y" + case 367: +#line 2919 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 7960 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8142 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 360: -#line 2839 "mrbgems/mruby-compiler/core/parse.y" + case 368: +#line 2923 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 7968 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8150 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 361: -#line 2843 "mrbgems/mruby-compiler/core/parse.y" + case 369: +#line 2927 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 7976 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8158 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 362: -#line 2847 "mrbgems/mruby-compiler/core/parse.y" + case 370: +#line 2931 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 7984 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8166 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 363: -#line 2851 "mrbgems/mruby-compiler/core/parse.y" + case 371: +#line 2935 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 7992 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8174 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 364: -#line 2855 "mrbgems/mruby-compiler/core/parse.y" + case 372: +#line 2939 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8000 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8182 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 365: -#line 2859 "mrbgems/mruby-compiler/core/parse.y" + case 373: +#line 2943 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8008 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8190 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 366: -#line 2863 "mrbgems/mruby-compiler/core/parse.y" + case 374: +#line 2947 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 8016 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8198 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 367: -#line 2867 "mrbgems/mruby-compiler/core/parse.y" + case 375: +#line 2951 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8024 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8206 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 368: -#line 2871 "mrbgems/mruby-compiler/core/parse.y" + case 376: +#line 2955 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8032 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8214 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 369: -#line 2875 "mrbgems/mruby-compiler/core/parse.y" + case 377: +#line 2959 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8040 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8222 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 370: -#line 2879 "mrbgems/mruby-compiler/core/parse.y" + case 378: +#line 2963 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); } -#line 8048 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8230 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 371: -#line 2885 "mrbgems/mruby-compiler/core/parse.y" + case 379: +#line 2969 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8057 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8239 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 372: -#line 2890 "mrbgems/mruby-compiler/core/parse.y" + case 380: +#line 2974 "mrbgems/mruby-compiler/core/parse.y" { p->cmd_start = TRUE; (yyval.nd) = (yyvsp[0].nd); } -#line 8066 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8248 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 373: -#line 2896 "mrbgems/mruby-compiler/core/parse.y" + case 381: +#line 2980 "mrbgems/mruby-compiler/core/parse.y" {local_add_blk(p, 0);} -#line 8072 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8254 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 374: -#line 2897 "mrbgems/mruby-compiler/core/parse.y" + case 382: +#line 2981 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8080 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8262 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 375: -#line 2901 "mrbgems/mruby-compiler/core/parse.y" + case 383: +#line 2985 "mrbgems/mruby-compiler/core/parse.y" { local_add_blk(p, 0); (yyval.nd) = 0; } -#line 8089 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8271 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 376: -#line 2906 "mrbgems/mruby-compiler/core/parse.y" + case 384: +#line 2990 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 8097 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8279 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 377: -#line 2913 "mrbgems/mruby-compiler/core/parse.y" + case 385: +#line 2997 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8105 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8287 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 378: -#line 2917 "mrbgems/mruby-compiler/core/parse.y" + case 386: +#line 3001 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8113 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8295 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 381: -#line 2927 "mrbgems/mruby-compiler/core/parse.y" + case 389: +#line 3011 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); new_bv(p, (yyvsp[0].id)); } -#line 8122 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8304 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 383: -#line 2935 "mrbgems/mruby-compiler/core/parse.y" + case 391: +#line 3019 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-2].nd); } -#line 8130 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8312 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 384: -#line 2939 "mrbgems/mruby-compiler/core/parse.y" + case 392: +#line 3023 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8138 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8320 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 385: -#line 2945 "mrbgems/mruby-compiler/core/parse.y" + case 393: +#line 3029 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8146 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8328 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 386: -#line 2949 "mrbgems/mruby-compiler/core/parse.y" + case 394: +#line 3033 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8154 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8336 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 387: -#line 2955 "mrbgems/mruby-compiler/core/parse.y" + case 395: +#line 3039 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); } -#line 8163 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8345 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 388: -#line 2962 "mrbgems/mruby-compiler/core/parse.y" + case 396: +#line 3046 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); local_unnest(p); nvars_unnest(p); } -#line 8173 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8355 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 389: -#line 2970 "mrbgems/mruby-compiler/core/parse.y" + case 397: +#line 3054 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-1].nd)->car == (node*)NODE_YIELD) { yyerror(p, "block given to yield"); @@ -8183,159 +8365,159 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 8187 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8369 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 390: -#line 2980 "mrbgems/mruby-compiler/core/parse.y" + case 398: +#line 3064 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8195 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8377 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 391: -#line 2984 "mrbgems/mruby-compiler/core/parse.y" + case 399: +#line 3068 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); call_with_block(p, (yyval.nd), (yyvsp[0].nd)); } -#line 8204 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8386 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 392: -#line 2989 "mrbgems/mruby-compiler/core/parse.y" + case 400: +#line 3073 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num)); call_with_block(p, (yyval.nd), (yyvsp[0].nd)); } -#line 8213 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8395 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 393: -#line 2996 "mrbgems/mruby-compiler/core/parse.y" + case 401: +#line 3080 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd)); } -#line 8221 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8403 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 394: -#line 3000 "mrbgems/mruby-compiler/core/parse.y" + case 402: +#line 3084 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num)); } -#line 8229 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8411 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 395: -#line 3004 "mrbgems/mruby-compiler/core/parse.y" + case 403: +#line 3088 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2); } -#line 8237 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8419 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 396: -#line 3008 "mrbgems/mruby-compiler/core/parse.y" + case 404: +#line 3092 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2); } -#line 8245 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8427 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 397: -#line 3012 "mrbgems/mruby-compiler/core/parse.y" + case 405: +#line 3096 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM(call), (yyvsp[0].nd), (yyvsp[-1].num)); } -#line 8253 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8435 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 398: -#line 3016 "mrbgems/mruby-compiler/core/parse.y" + case 406: +#line 3100 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM(call), (yyvsp[0].nd), tCOLON2); } -#line 8261 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8443 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 399: -#line 3020 "mrbgems/mruby-compiler/core/parse.y" + case 407: +#line 3104 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_super(p, (yyvsp[0].nd)); } -#line 8269 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8451 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 400: -#line 3024 "mrbgems/mruby-compiler/core/parse.y" + case 408: +#line 3108 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_zsuper(p); } -#line 8277 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8459 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 401: -#line 3028 "mrbgems/mruby-compiler/core/parse.y" + case 409: +#line 3112 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_call(p, (yyvsp[-3].nd), MRB_QSYM(aref), (yyvsp[-1].nd), '.'); } -#line 8285 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8467 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 402: -#line 3034 "mrbgems/mruby-compiler/core/parse.y" + case 410: +#line 3118 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8295 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8477 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 403: -#line 3041 "mrbgems/mruby-compiler/core/parse.y" + case 411: +#line 3125 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 8306 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8488 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 404: -#line 3048 "mrbgems/mruby-compiler/core/parse.y" + case 412: +#line 3132 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); nvars_nest(p); (yyval.num) = p->lineno; } -#line 8316 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8498 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 405: -#line 3055 "mrbgems/mruby-compiler/core/parse.y" + case 413: +#line 3139 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd)); SET_LINENO((yyval.nd), (yyvsp[-3].num)); local_unnest(p); nvars_unnest(p); } -#line 8327 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8509 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 406: -#line 3066 "mrbgems/mruby-compiler/core/parse.y" + case 414: +#line 3150 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd)); } -#line 8335 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8517 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 407: -#line 3072 "mrbgems/mruby-compiler/core/parse.y" + case 415: +#line 3156 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[0].nd)) { (yyval.nd) = cons(cons(0, (yyvsp[0].nd)), 0); @@ -8344,383 +8526,383 @@ yyreduce: (yyval.nd) = 0; } } -#line 8348 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8530 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 409: -#line 3086 "mrbgems/mruby-compiler/core/parse.y" + case 417: +#line 3170 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(list3((yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd))); if ((yyvsp[0].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[0].nd)); } -#line 8357 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8539 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 411: -#line 3094 "mrbgems/mruby-compiler/core/parse.y" + case 419: +#line 3178 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8365 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8547 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 414: -#line 3102 "mrbgems/mruby-compiler/core/parse.y" + case 422: +#line 3186 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8373 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8555 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 416: -#line 3109 "mrbgems/mruby-compiler/core/parse.y" + case 424: +#line 3193 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8381 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8563 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 423: -#line 3123 "mrbgems/mruby-compiler/core/parse.y" + case 431: +#line 3207 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8389 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8571 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 426: -#line 3131 "mrbgems/mruby-compiler/core/parse.y" + case 434: +#line 3215 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8397 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8579 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 427: -#line 3135 "mrbgems/mruby-compiler/core/parse.y" + case 435: +#line 3219 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8405 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8587 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 429: -#line 3142 "mrbgems/mruby-compiler/core/parse.y" + case 437: +#line 3226 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8413 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8595 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 430: -#line 3148 "mrbgems/mruby-compiler/core/parse.y" + case 438: +#line 3232 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8421 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8603 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 431: -#line 3152 "mrbgems/mruby-compiler/core/parse.y" + case 439: +#line 3236 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = p->lex_strterm; p->lex_strterm = NULL; } -#line 8430 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8612 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 432: -#line 3158 "mrbgems/mruby-compiler/core/parse.y" + case 440: +#line 3242 "mrbgems/mruby-compiler/core/parse.y" { p->lex_strterm = (yyvsp[-2].nd); (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd)); } -#line 8439 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8621 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 433: -#line 3163 "mrbgems/mruby-compiler/core/parse.y" + case 441: +#line 3247 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 8447 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8629 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 434: -#line 3167 "mrbgems/mruby-compiler/core/parse.y" + case 442: +#line 3251 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1(new_literal_delim(p)); } -#line 8455 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8637 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 435: -#line 3173 "mrbgems/mruby-compiler/core/parse.y" + case 443: +#line 3257 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8463 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8645 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 436: -#line 3177 "mrbgems/mruby-compiler/core/parse.y" + case 444: +#line 3261 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dxstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8471 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8653 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 437: -#line 3183 "mrbgems/mruby-compiler/core/parse.y" + case 445: +#line 3267 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8479 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8661 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 438: -#line 3187 "mrbgems/mruby-compiler/core/parse.y" + case 446: +#line 3271 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8487 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8669 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 442: -#line 3200 "mrbgems/mruby-compiler/core/parse.y" + case 450: +#line 3284 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); inf->doc = push(inf->doc, new_str(p, "", 0)); heredoc_end(p); } -#line 8497 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8679 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 443: -#line 3206 "mrbgems/mruby-compiler/core/parse.y" + case 451: +#line 3290 "mrbgems/mruby-compiler/core/parse.y" { heredoc_end(p); } -#line 8505 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8687 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 446: -#line 3216 "mrbgems/mruby-compiler/core/parse.y" + case 454: +#line 3300 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); inf->doc = push(inf->doc, (yyvsp[0].nd)); heredoc_treat_nextline(p); } -#line 8515 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8697 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 447: -#line 3222 "mrbgems/mruby-compiler/core/parse.y" + case 455: +#line 3306 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = p->lex_strterm; p->lex_strterm = NULL; } -#line 8524 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8706 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 448: -#line 3228 "mrbgems/mruby-compiler/core/parse.y" + case 456: +#line 3312 "mrbgems/mruby-compiler/core/parse.y" { parser_heredoc_info * inf = parsing_heredoc_inf(p); p->lex_strterm = (yyvsp[-2].nd); inf->doc = push(push(inf->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd)); } -#line 8534 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8716 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 449: -#line 3236 "mrbgems/mruby-compiler/core/parse.y" + case 457: +#line 3320 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_words(p, list1((yyvsp[0].nd))); } -#line 8542 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8724 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 450: -#line 3240 "mrbgems/mruby-compiler/core/parse.y" + case 458: +#line 3324 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_words(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8550 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8732 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 451: -#line 3247 "mrbgems/mruby-compiler/core/parse.y" + case 459: +#line 3331 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDARG; (yyval.nd) = new_sym(p, (yyvsp[0].id)); } -#line 8559 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8741 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 452: -#line 3252 "mrbgems/mruby-compiler/core/parse.y" + case 460: +#line 3336 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_ENDARG; (yyval.nd) = new_dsym(p, new_dstr(p, push((yyvsp[-1].nd), (yyvsp[0].nd)))); } -#line 8568 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8750 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 453: -#line 3259 "mrbgems/mruby-compiler/core/parse.y" + case 461: +#line 3343 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 8576 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8758 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 458: -#line 3269 "mrbgems/mruby-compiler/core/parse.y" + case 466: +#line 3353 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 8584 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8766 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 459: -#line 3273 "mrbgems/mruby-compiler/core/parse.y" + case 467: +#line 3357 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = new_strsym(p, (yyvsp[0].nd)); } -#line 8592 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8774 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 460: -#line 3279 "mrbgems/mruby-compiler/core/parse.y" + case 468: +#line 3363 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd))); } -#line 8600 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8782 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 461: -#line 3283 "mrbgems/mruby-compiler/core/parse.y" + case 469: +#line 3367 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_symbols(p, push((yyvsp[-1].nd), (yyvsp[0].nd))); } -#line 8608 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8790 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 464: -#line 3291 "mrbgems/mruby-compiler/core/parse.y" + case 472: +#line 3375 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = negate_lit(p, (yyvsp[0].nd)); } -#line 8616 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8798 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 465: -#line 3295 "mrbgems/mruby-compiler/core/parse.y" + case 473: +#line 3379 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = negate_lit(p, (yyvsp[0].nd)); } -#line 8624 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8806 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 466: -#line 3301 "mrbgems/mruby-compiler/core/parse.y" + case 474: +#line 3385 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_lvar(p, (yyvsp[0].id)); } -#line 8632 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8814 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 467: -#line 3305 "mrbgems/mruby-compiler/core/parse.y" + case 475: +#line 3389 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_ivar(p, (yyvsp[0].id)); } -#line 8640 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8822 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 468: -#line 3309 "mrbgems/mruby-compiler/core/parse.y" + case 476: +#line 3393 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_gvar(p, (yyvsp[0].id)); } -#line 8648 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8830 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 469: -#line 3313 "mrbgems/mruby-compiler/core/parse.y" + case 477: +#line 3397 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_cvar(p, (yyvsp[0].id)); } -#line 8656 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8838 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 470: -#line 3317 "mrbgems/mruby-compiler/core/parse.y" + case 478: +#line 3401 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_const(p, (yyvsp[0].id)); } -#line 8664 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8846 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 471: -#line 3323 "mrbgems/mruby-compiler/core/parse.y" + case 479: +#line 3407 "mrbgems/mruby-compiler/core/parse.y" { assignable(p, (yyvsp[0].nd)); } -#line 8672 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8854 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 472: -#line 3327 "mrbgems/mruby-compiler/core/parse.y" + case 480: +#line 3411 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "can't assign to numbered parameter"); } -#line 8680 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8862 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 473: -#line 3333 "mrbgems/mruby-compiler/core/parse.y" + case 481: +#line 3417 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = var_reference(p, (yyvsp[0].nd)); } -#line 8688 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8870 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 474: -#line 3337 "mrbgems/mruby-compiler/core/parse.y" + case 482: +#line 3421 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_nil(p); } -#line 8696 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8878 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 475: -#line 3341 "mrbgems/mruby-compiler/core/parse.y" + case 483: +#line 3425 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_self(p); } -#line 8704 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8886 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 476: -#line 3345 "mrbgems/mruby-compiler/core/parse.y" + case 484: +#line 3429 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_true(p); } -#line 8712 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8894 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 477: -#line 3349 "mrbgems/mruby-compiler/core/parse.y" + case 485: +#line 3433 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_false(p); } -#line 8720 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8902 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 478: -#line 3353 "mrbgems/mruby-compiler/core/parse.y" + case 486: +#line 3437 "mrbgems/mruby-compiler/core/parse.y" { const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL); if (!fn) { @@ -8728,22 +8910,22 @@ yyreduce: } (yyval.nd) = new_str(p, fn, strlen(fn)); } -#line 8732 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8914 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 479: -#line 3361 "mrbgems/mruby-compiler/core/parse.y" + case 487: +#line 3445 "mrbgems/mruby-compiler/core/parse.y" { char buf[16]; dump_int(p->lineno, buf); (yyval.nd) = new_int(p, buf, 10, 0); } -#line 8743 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8925 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 480: -#line 3368 "mrbgems/mruby-compiler/core/parse.y" + case 488: +#line 3452 "mrbgems/mruby-compiler/core/parse.y" { #ifdef MRB_UTF8_STRING const char *enc = "UTF-8"; @@ -8752,46 +8934,46 @@ yyreduce: #endif (yyval.nd) = new_str(p, enc, strlen(enc)); } -#line 8756 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8938 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 483: -#line 3383 "mrbgems/mruby-compiler/core/parse.y" + case 491: +#line 3467 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 8764 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8946 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 484: -#line 3387 "mrbgems/mruby-compiler/core/parse.y" + case 492: +#line 3471 "mrbgems/mruby-compiler/core/parse.y" { p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 8773 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8955 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 485: -#line 3392 "mrbgems/mruby-compiler/core/parse.y" + case 493: +#line 3476 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8781 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8963 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 486: -#line 3403 "mrbgems/mruby-compiler/core/parse.y" + case 494: +#line 3487 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); p->lstate = EXPR_BEG; p->cmd_start = TRUE; } -#line 8791 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8973 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 487: -#line 3409 "mrbgems/mruby-compiler/core/parse.y" + case 495: +#line 3493 "mrbgems/mruby-compiler/core/parse.y" { #if 1 /* til real keyword args implemented */ @@ -8809,504 +8991,504 @@ yyreduce: new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b)); #endif } -#line 8813 "mrbgems/mruby-compiler/core/y.tab.c" +#line 8995 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 488: -#line 3427 "mrbgems/mruby-compiler/core/parse.y" + case 497: +#line 3514 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 8821 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9003 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 489: -#line 3433 "mrbgems/mruby-compiler/core/parse.y" + case 498: +#line 3520 "mrbgems/mruby-compiler/core/parse.y" { local_nest(p); } -#line 8829 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9011 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 490: -#line 3439 "mrbgems/mruby-compiler/core/parse.y" + case 499: +#line 3526 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 8839 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9021 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 491: -#line 3445 "mrbgems/mruby-compiler/core/parse.y" + case 500: +#line 3532 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); local_unnest(p); } -#line 8848 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9030 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 492: -#line 3452 "mrbgems/mruby-compiler/core/parse.y" + case 501: +#line 3539 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 8857 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9039 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 493: -#line 3457 "mrbgems/mruby-compiler/core/parse.y" + case 502: +#line 3544 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0); local_unnest(p); } -#line 8866 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9048 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 494: -#line 3464 "mrbgems/mruby-compiler/core/parse.y" + case 503: +#line 3551 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8874 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9056 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 495: -#line 3468 "mrbgems/mruby-compiler/core/parse.y" + case 504: +#line 3555 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 8882 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9064 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 496: -#line 3474 "mrbgems/mruby-compiler/core/parse.y" + case 505: +#line 3561 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 8890 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9072 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 497: -#line 3478 "mrbgems/mruby-compiler/core/parse.y" + case 506: +#line 3565 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 8898 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9080 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 500: -#line 3488 "mrbgems/mruby-compiler/core/parse.y" + case 509: +#line 3575 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_rest_args(p, nsym((yyvsp[0].id))); } -#line 8906 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9088 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 501: -#line 3492 "mrbgems/mruby-compiler/core/parse.y" + case 510: +#line 3579 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_kw_rest_args(p, 0); } -#line 8914 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9096 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 502: -#line 3498 "mrbgems/mruby-compiler/core/parse.y" + case 511: +#line 3585 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 8922 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9104 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 503: -#line 3502 "mrbgems/mruby-compiler/core/parse.y" + case 512: +#line 3589 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id)); } -#line 8930 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9112 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 504: -#line 3506 "mrbgems/mruby-compiler/core/parse.y" + case 513: +#line 3593 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id)); } -#line 8938 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9120 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 505: -#line 3510 "mrbgems/mruby-compiler/core/parse.y" + case 514: +#line 3597 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id)); } -#line 8946 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9128 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 506: -#line 3516 "mrbgems/mruby-compiler/core/parse.y" + case 515: +#line 3603 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); } -#line 8954 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9136 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 507: -#line 3520 "mrbgems/mruby-compiler/core/parse.y" + case 516: +#line 3607 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args_tail(p, 0, 0, 0); } -#line 8962 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9144 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 508: -#line 3526 "mrbgems/mruby-compiler/core/parse.y" + case 517: +#line 3613 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 8970 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9152 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 509: -#line 3530 "mrbgems/mruby-compiler/core/parse.y" + case 518: +#line 3617 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8978 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9160 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 510: -#line 3534 "mrbgems/mruby-compiler/core/parse.y" + case 519: +#line 3621 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 8986 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9168 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 511: -#line 3538 "mrbgems/mruby-compiler/core/parse.y" + case 520: +#line 3625 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 8994 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9176 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 512: -#line 3542 "mrbgems/mruby-compiler/core/parse.y" + case 521: +#line 3629 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9002 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9184 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 513: -#line 3546 "mrbgems/mruby-compiler/core/parse.y" + case 522: +#line 3633 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9010 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9192 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 514: -#line 3550 "mrbgems/mruby-compiler/core/parse.y" + case 523: +#line 3637 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd)); } -#line 9018 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9200 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 515: -#line 3554 "mrbgems/mruby-compiler/core/parse.y" + case 524: +#line 3641 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9026 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9208 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 516: -#line 3558 "mrbgems/mruby-compiler/core/parse.y" + case 525: +#line 3645 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9034 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9216 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 517: -#line 3562 "mrbgems/mruby-compiler/core/parse.y" + case 526: +#line 3649 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd)); } -#line 9042 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9224 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 518: -#line 3566 "mrbgems/mruby-compiler/core/parse.y" + case 527: +#line 3653 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9050 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9232 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 519: -#line 3570 "mrbgems/mruby-compiler/core/parse.y" + case 528: +#line 3657 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd)); } -#line 9058 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9240 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 520: -#line 3574 "mrbgems/mruby-compiler/core/parse.y" + case 529: +#line 3661 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd)); } -#line 9066 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9248 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 521: -#line 3578 "mrbgems/mruby-compiler/core/parse.y" + case 530: +#line 3665 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd)); } -#line 9074 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9256 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 522: -#line 3582 "mrbgems/mruby-compiler/core/parse.y" + case 531: +#line 3669 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, MRB_QSYM(and)); (yyval.nd) = new_args(p, 0, 0, 0, 0, 0); } -#line 9083 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9265 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 523: -#line 3589 "mrbgems/mruby-compiler/core/parse.y" + case 532: +#line 3676 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a constant"); (yyval.nd) = 0; } -#line 9092 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9274 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 524: -#line 3594 "mrbgems/mruby-compiler/core/parse.y" + case 533: +#line 3681 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be an instance variable"); (yyval.nd) = 0; } -#line 9101 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9283 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 525: -#line 3599 "mrbgems/mruby-compiler/core/parse.y" + case 534: +#line 3686 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a global variable"); (yyval.nd) = 0; } -#line 9110 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9292 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 526: -#line 3604 "mrbgems/mruby-compiler/core/parse.y" + case 535: +#line 3691 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a class variable"); (yyval.nd) = 0; } -#line 9119 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9301 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 527: -#line 3609 "mrbgems/mruby-compiler/core/parse.y" + case 536: +#line 3696 "mrbgems/mruby-compiler/core/parse.y" { yyerror(p, "formal argument cannot be a numbered parameter"); (yyval.nd) = 0; } -#line 9128 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9310 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 528: -#line 3616 "mrbgems/mruby-compiler/core/parse.y" + case 537: +#line 3703 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 9136 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9318 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 529: -#line 3620 "mrbgems/mruby-compiler/core/parse.y" + case 538: +#line 3707 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9145 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9327 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 530: -#line 3627 "mrbgems/mruby-compiler/core/parse.y" + case 539: +#line 3714 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_arg(p, (yyvsp[0].id)); } -#line 9153 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9335 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 531: -#line 3631 "mrbgems/mruby-compiler/core/parse.y" + case 540: +#line 3718 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = local_switch(p); } -#line 9161 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9343 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 532: -#line 3635 "mrbgems/mruby-compiler/core/parse.y" + case 541: +#line 3722 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car); local_resume(p, (yyvsp[-2].nd)); local_add_f(p, 0); } -#line 9171 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9353 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 533: -#line 3643 "mrbgems/mruby-compiler/core/parse.y" + case 542: +#line 3730 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9179 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9361 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 534: -#line 3647 "mrbgems/mruby-compiler/core/parse.y" + case 543: +#line 3734 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9187 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9369 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 535: -#line 3653 "mrbgems/mruby-compiler/core/parse.y" + case 544: +#line 3740 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[-1].id)); local_nest(p); (yyval.id) = (yyvsp[-1].id); } -#line 9197 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9379 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 536: -#line 3661 "mrbgems/mruby-compiler/core/parse.y" + case 545: +#line 3748 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9207 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9389 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 537: -#line 3669 "mrbgems/mruby-compiler/core/parse.y" + case 546: +#line 3756 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p))); local_unnest(p); } -#line 9217 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9399 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 538: -#line 3677 "mrbgems/mruby-compiler/core/parse.y" + case 547: +#line 3764 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9225 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9407 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 539: -#line 3681 "mrbgems/mruby-compiler/core/parse.y" + case 548: +#line 3768 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9233 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9415 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 540: -#line 3687 "mrbgems/mruby-compiler/core/parse.y" + case 549: +#line 3774 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); } -#line 9241 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9423 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 541: -#line 3691 "mrbgems/mruby-compiler/core/parse.y" + case 550: +#line 3778 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9249 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9431 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 544: -#line 3701 "mrbgems/mruby-compiler/core/parse.y" + case 553: +#line 3788 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, (yyvsp[0].id)); (yyval.id) = (yyvsp[0].id); } -#line 9258 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9440 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 545: -#line 3706 "mrbgems/mruby-compiler/core/parse.y" + case 554: +#line 3793 "mrbgems/mruby-compiler/core/parse.y" { local_add_f(p, MRB_QSYM(and)); (yyval.id) = -1; } -#line 9267 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9449 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 548: -#line 3717 "mrbgems/mruby-compiler/core/parse.y" + case 557: +#line 3804 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9275 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9457 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 549: -#line 3723 "mrbgems/mruby-compiler/core/parse.y" + case 558: +#line 3810 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = (yyvsp[0].id); } -#line 9283 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9465 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 550: -#line 3727 "mrbgems/mruby-compiler/core/parse.y" + case 559: +#line 3814 "mrbgems/mruby-compiler/core/parse.y" { (yyval.id) = 0; } -#line 9291 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9473 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 551: -#line 3733 "mrbgems/mruby-compiler/core/parse.y" + case 560: +#line 3820 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[0].nd); if (!(yyval.nd)) (yyval.nd) = new_nil(p); } -#line 9300 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9482 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 552: -#line 3737 "mrbgems/mruby-compiler/core/parse.y" + case 561: +#line 3824 "mrbgems/mruby-compiler/core/parse.y" {p->lstate = EXPR_BEG;} -#line 9306 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9488 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 553: -#line 3738 "mrbgems/mruby-compiler/core/parse.y" + case 562: +#line 3825 "mrbgems/mruby-compiler/core/parse.y" { if ((yyvsp[-1].nd) == 0) { yyerror(p, "can't define singleton method for ()."); @@ -9329,55 +9511,55 @@ yyreduce: } (yyval.nd) = (yyvsp[-1].nd); } -#line 9333 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9515 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 555: -#line 3764 "mrbgems/mruby-compiler/core/parse.y" + case 564: +#line 3851 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = (yyvsp[-1].nd); } -#line 9341 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9523 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 556: -#line 3770 "mrbgems/mruby-compiler/core/parse.y" + case 565: +#line 3857 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = list1((yyvsp[0].nd)); NODE_LINENO((yyval.nd), (yyvsp[0].nd)); } -#line 9350 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9532 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 557: -#line 3775 "mrbgems/mruby-compiler/core/parse.y" + case 566: +#line 3862 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9358 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9540 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 560: -#line 3785 "mrbgems/mruby-compiler/core/parse.y" + case 569: +#line 3872 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[-2].nd)); void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons((yyvsp[-2].nd), (yyvsp[0].nd)); } -#line 9368 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9550 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 561: -#line 3791 "mrbgems/mruby-compiler/core/parse.y" + case 570: +#line 3878 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_sym(p, (yyvsp[-2].id)), (yyvsp[0].nd)); } -#line 9377 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9559 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 562: -#line 3796 "mrbgems/mruby-compiler/core/parse.y" + case 571: +#line 3883 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); if ((yyvsp[-2].nd)->car == (node*)NODE_DSTR) { @@ -9387,67 +9569,67 @@ yyreduce: (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd)); } } -#line 9391 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9573 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 563: -#line 3806 "mrbgems/mruby-compiler/core/parse.y" + case 572: +#line 3893 "mrbgems/mruby-compiler/core/parse.y" { void_expr_error(p, (yyvsp[0].nd)); (yyval.nd) = cons(new_kw_rest_args(p, 0), (yyvsp[0].nd)); } -#line 9400 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9582 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 576: -#line 3833 "mrbgems/mruby-compiler/core/parse.y" + case 585: +#line 3920 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = '.'; } -#line 9408 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9590 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 577: -#line 3837 "mrbgems/mruby-compiler/core/parse.y" + case 586: +#line 3924 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = 0; } -#line 9416 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9598 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 579: -#line 3844 "mrbgems/mruby-compiler/core/parse.y" + case 588: +#line 3931 "mrbgems/mruby-compiler/core/parse.y" { (yyval.num) = tCOLON2; } -#line 9424 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9606 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 588: -#line 3865 "mrbgems/mruby-compiler/core/parse.y" + case 597: +#line 3952 "mrbgems/mruby-compiler/core/parse.y" {yyerrok;} -#line 9430 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9612 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 591: -#line 3871 "mrbgems/mruby-compiler/core/parse.y" + case 600: +#line 3958 "mrbgems/mruby-compiler/core/parse.y" { p->lineno += (yyvsp[0].num); p->column = 0; } -#line 9439 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9621 "mrbgems/mruby-compiler/core/y.tab.c" break; - case 594: -#line 3882 "mrbgems/mruby-compiler/core/parse.y" + case 603: +#line 3969 "mrbgems/mruby-compiler/core/parse.y" { (yyval.nd) = 0; } -#line 9447 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9629 "mrbgems/mruby-compiler/core/y.tab.c" break; -#line 9451 "mrbgems/mruby-compiler/core/y.tab.c" +#line 9633 "mrbgems/mruby-compiler/core/y.tab.c" default: break; } @@ -9679,7 +9861,7 @@ yyreturn: #endif return yyresult; } -#line 3886 "mrbgems/mruby-compiler/core/parse.y" +#line 3973 "mrbgems/mruby-compiler/core/parse.y" #define pylval (*((YYSTYPE*)(p->ylval))) diff --git a/mrbgems/mruby-metaprog/src/metaprog.c b/mrbgems/mruby-metaprog/src/metaprog.c index 7a7639410..20fcc29cb 100644 --- a/mrbgems/mruby-metaprog/src/metaprog.c +++ b/mrbgems/mruby-metaprog/src/metaprog.c @@ -148,8 +148,8 @@ mrb_local_variables(mrb_state *mrb, mrb_value self) irep = proc->body.irep; if (irep->lv) { for (i = 0; i + 1 < irep->nlocals; ++i) { - if (irep->lv[i].name) { - mrb_sym sym = irep->lv[i].name; + if (irep->lv[i]) { + mrb_sym sym = irep->lv[i]; const char *name = mrb_sym_name(mrb, sym); switch (name[0]) { case '*': case '&': diff --git a/mrbgems/mruby-proc-ext/src/proc.c b/mrbgems/mruby-proc-ext/src/proc.c index a2f3ad101..bb4efe3fd 100644 --- a/mrbgems/mruby-proc-ext/src/proc.c +++ b/mrbgems/mruby-proc-ext/src/proc.c @@ -148,8 +148,8 @@ mrb_proc_parameters(mrb_state *mrb, mrb_value self) a = mrb_ary_new(mrb); mrb_ary_push(mrb, a, sname); - if (i < max && irep->lv[i].name) { - mrb_sym sym = irep->lv[i].name; + if (i < max && irep->lv[i]) { + mrb_sym sym = irep->lv[i]; const char *name = mrb_sym_name(mrb, sym); switch (name[0]) { case '*': case '&': diff --git a/src/codedump.c b/src/codedump.c index 67bd8754d..24fc94ef7 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -9,17 +9,9 @@ static void print_r(mrb_state *mrb, const mrb_irep *irep, size_t n) { - size_t i; - if (n == 0) return; - - for (i=0; i+1nlocals; i++) { - if (irep->lv[i].r == n) { - mrb_sym sym = irep->lv[i].name; - printf(" R%d:%s", (int)n, mrb_sym_dump(mrb, sym)); - break; - } - } + if (n > irep->nlocals) return; + printf(" R%d:%s", (int)n, mrb_sym_dump(mrb, irep->lv[n-1])); } static void @@ -82,9 +74,8 @@ codedump(mrb_state *mrb, const mrb_irep *irep) printf("local variable names:\n"); for (i = 1; i < irep->nlocals; ++i) { - char const *s = mrb_sym_dump(mrb, irep->lv[i - 1].name); - int n = irep->lv[i - 1].r ? irep->lv[i - 1].r : i; - printf(" R%d:%s\n", n, s ? s : ""); + char const *s = mrb_sym_dump(mrb, irep->lv[i - 1]); + printf(" R%d:%s\n", i, s ? s : ""); } } diff --git a/src/dump.c b/src/dump.c index 8cd69cd29..aeb23d033 100644 --- a/src/dump.c +++ b/src/dump.c @@ -585,7 +585,7 @@ create_lv_sym_table(mrb_state *mrb, const mrb_irep *irep, mrb_sym **syms, uint32 } for (i = 0; i + 1 < irep->nlocals; ++i) { - mrb_sym const name = irep->lv[i].name; + mrb_sym const name = irep->lv[i]; if (name == 0) continue; if (find_filename_index(*syms, *syms_len, name) != -1) continue; @@ -628,16 +628,14 @@ write_lv_record(mrb_state *mrb, const mrb_irep *irep, uint8_t **start, mrb_sym c int i; for (i = 0; i + 1 < irep->nlocals; ++i) { - if (irep->lv[i].name == 0) { + if (irep->lv[i] == 0) { cur += uint16_to_bin(RITE_LV_NULL_MARK, cur); - cur += uint16_to_bin(0, cur); } else { - int const sym_idx = find_filename_index(syms, syms_len, irep->lv[i].name); + int const sym_idx = find_filename_index(syms, syms_len, irep->lv[i]); mrb_assert(sym_idx != -1); /* local variable name must be in syms */ cur += uint16_to_bin(sym_idx, cur); - cur += uint16_to_bin(irep->lv[i].r, cur); } } @@ -656,7 +654,7 @@ get_lv_record_size(mrb_state *mrb, const mrb_irep *irep) size_t ret = 0; int i; - ret += (sizeof(uint16_t) + sizeof(uint16_t)) * (irep->nlocals - 1); + ret += sizeof(uint16_t) * (irep->nlocals - 1); for (i = 0; i < irep->rlen; ++i) { ret += get_lv_record_size(mrb, irep->reps[i]); @@ -1033,9 +1031,9 @@ dump_irep_struct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE *fp, /* dump lv */ if (irep->lv) { len=irep->nlocals; - fprintf(fp, "static const struct mrb_lvinfo %s_lv_%d[%d] = {", name, n, len); + fprintf(fp, "static const mrb_sym %s_lv_%d[%d] = {", name, n, len); for (i=0; i+1lv[i].name, irep->lv[i].r); + fprintf(fp, "%u, ", irep->lv[i]); } fputs("};\n", fp); } diff --git a/src/load.c b/src/load.c index 2002af3ab..1118fc2ad 100644 --- a/src/load.c +++ b/src/load.c @@ -426,28 +426,24 @@ static int read_lv_record(mrb_state *mrb, const uint8_t *start, mrb_irep *irep, size_t *record_len, mrb_sym const *syms, uint32_t syms_len) { const uint8_t *bin = start; - struct mrb_lvinfo *lv; + mrb_sym *lv; ptrdiff_t diff; int i; - irep->lv = lv = (struct mrb_lvinfo*)mrb_malloc(mrb, sizeof(struct mrb_lvinfo) * (irep->nlocals - 1)); + irep->lv = lv = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym) * (irep->nlocals - 1)); for (i = 0; i + 1< irep->nlocals; ++i) { uint16_t const sym_idx = bin_to_uint16(bin); bin += sizeof(uint16_t); if (sym_idx == RITE_LV_NULL_MARK) { - lv[i].name = 0; - lv[i].r = 0; + lv[i] = 0; } else { if (sym_idx >= syms_len) { return MRB_DUMP_GENERAL_FAILURE; } - lv[i].name = syms[sym_idx]; - - lv[i].r = bin_to_uint16(bin); + lv[i] = syms[sym_idx]; } - bin += sizeof(uint16_t); } for (i = 0; i < irep->rlen; ++i) { -- cgit v1.2.3 From a54a3df32c379a6953664f1d9241c731066915ec Mon Sep 17 00:00:00 2001 From: dearblue Date: Sun, 24 May 2020 00:19:04 +0900 Subject: Extended mruby binary format The catch handler table is combined with iseq block. This is to prevent the structure from growing by adding a field for the catch handler table to the `mrb_irep` structure. "iseq block" and "catch handler table": [number of catch handler table (2 bytes)] [number of byte code (4 bytes)] [iseq (any bytes)] [catch handlers (multiple of 7 bytes)] catch handler: [catch type (1 byte)] [begin offset (2 bytes)] [end offset (2 bytes)] [target offset (2 bytes)] catch type: enum mrb_catch_type (0 = rescue, 1 = ensure) begin offset: Includes the specified instruction address end offset: Does not include the specified instruction address target offset: replaces pc with the specified instruction address This table is not expanded by `read_irep_record_1()`. The necessary elements are expanded one by one when used. --- include/mruby/irep.h | 29 +++++++++++++++++++++ mrbgems/mruby-compiler/core/codegen.c | 47 ++++++++++++++++++++++++++++++++++- src/codedump.c | 29 +++++++++++++++++++++ src/dump.c | 32 ++++++++++++++++++++++++ src/load.c | 11 +++++--- 5 files changed, 143 insertions(+), 5 deletions(-) (limited to 'src/load.c') diff --git a/include/mruby/irep.h b/include/mruby/irep.h index 0a5b3f1a3..430602279 100644 --- a/include/mruby/irep.h +++ b/include/mruby/irep.h @@ -39,13 +39,31 @@ typedef struct mrb_pool_value { } u; } mrb_pool_value; +enum mrb_catch_type { + MRB_CATCH_RESCUE = 0, + MRB_CATCH_ENSURE = 1, +}; + +struct mrb_irep_catch_hander { + uint8_t type; /* enum mrb_catch_type */ + uint8_t begin[2]; /* The starting address to match the hander. Includes this. */ + uint8_t end[2]; /* The endpoint address that matches the hander. Not Includes this. */ + uint8_t target[2]; /* The address to jump to if a match is made. */ +}; + /* Program data array struct */ typedef struct mrb_irep { uint16_t nlocals; /* Number of local variables */ uint16_t nregs; /* Number of register variables */ + uint16_t clen; /* Number of catch handlers */ uint8_t flags; const mrb_code *iseq; + /* + * A catch handler table is placed after the iseq entity. + * The reason it doesn't add fields to the structure is to keep the mrb_irep structure from bloating. + * The catch handler table can be obtained with `mrb_irep_catch_handler_table(irep)`. + */ const mrb_pool_value *pool; const mrb_sym *syms; const struct mrb_irep * const *reps; @@ -107,6 +125,17 @@ struct mrb_insn_data { struct mrb_insn_data mrb_decode_insn(const mrb_code *pc); +static inline const struct mrb_irep_catch_hander * +mrb_irep_catch_handler_table(const struct mrb_irep *irep) +{ + if (irep->clen > 0) { + return (const struct mrb_irep_catch_hander *)(irep->iseq + irep->ilen); + } + else { + return (const struct mrb_irep_catch_hander *)NULL; + } +} + MRB_END_DECL #endif /* MRUBY_IREP_H */ diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 191895668..e55b6791d 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -72,6 +73,7 @@ typedef struct scope { mrb_pool_value *pool; mrb_sym *syms; mrb_irep **reps; + struct mrb_irep_catch_hander *catch_table; uint32_t pcapa, scapa, rcapa; uint16_t nlocals; @@ -91,6 +93,15 @@ static struct loopinfo *loop_push(codegen_scope *s, enum looptype t); static void loop_break(codegen_scope *s, node *tree); static void loop_pop(codegen_scope *s, int val); +/* + * The search for catch handlers starts at the end of the table in mrb_vm_run(). + * Therefore, the next handler to be added must meet one of the following conditions. + * - Larger start position + * - Same start position but smaller end position + */ +static int catch_hander_new(codegen_scope *s); +static void catch_hander_set(codegen_scope *s, int ent, enum mrb_catch_type type, uint32_t begin, uint32_t end, uint32_t target); + static void gen_assignment(codegen_scope *s, node *tree, int sp, int val); static void gen_vmassignment(codegen_scope *s, node *tree, int rhs, int val); @@ -3082,9 +3093,18 @@ scope_finish(codegen_scope *s) } irep->flags = 0; if (s->iseq) { - irep->iseq = (const mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->pc); + size_t catchsize = sizeof(struct mrb_irep_catch_hander) * irep->clen; + irep->iseq = (const mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->pc + catchsize); irep->ilen = s->pc; + if (irep->clen > 0) { + memcpy((void *)(irep->iseq + irep->ilen), s->catch_table, catchsize); + } } + else { + irep->clen = 0; + } + mrb_free(s->mrb, s->catch_table); + s->catch_table = NULL; irep->pool = (const mrb_pool_value*)codegen_realloc(s, s->pool, sizeof(mrb_pool_value)*irep->plen); irep->syms = (const mrb_sym*)codegen_realloc(s, s->syms, sizeof(mrb_sym)*irep->slen); irep->reps = (const mrb_irep**)codegen_realloc(s, s->reps, sizeof(mrb_irep*)*irep->rlen); @@ -3187,6 +3207,31 @@ loop_pop(codegen_scope *s, int val) if (val) push(); } +static int +catch_hander_new(codegen_scope *s) +{ + size_t newsize = sizeof(struct mrb_irep_catch_hander) * (s->irep->clen + 1); + s->catch_table = (struct mrb_irep_catch_hander *)codegen_realloc(s, (void *)s->catch_table, newsize); + return s->irep->clen ++; +} + +static void +catch_hander_set(codegen_scope *s, int ent, enum mrb_catch_type type, uint32_t begin, uint32_t end, uint32_t target) +{ + struct mrb_irep_catch_hander *e; + + mrb_assert(ent >= 0 && ent < s->irep->clen); + mrb_assert(begin < MAXARG_S); + mrb_assert(end < MAXARG_S); + mrb_assert(target < MAXARG_S); + + e = &s->catch_table[ent]; + uint8_to_bin(type, &e->type); + uint16_to_bin(begin, e->begin); + uint16_to_bin(end, e->end); + uint16_to_bin(target, e->target); +} + static struct RProc* generate_code(mrb_state *mrb, parser_state *p, int val) { diff --git a/src/codedump.c b/src/codedump.c index 106312f67..a19d60708 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -4,6 +4,7 @@ #include #include #include +#include #ifndef MRB_DISABLE_STDIO static void @@ -80,6 +81,34 @@ codedump(mrb_state *mrb, const mrb_irep *irep) } } + if (irep->clen > 0) { + int i = irep->clen; + const struct mrb_irep_catch_hander *e = mrb_irep_catch_handler_table(irep); + + for (; i > 0; i --, e ++) { + int begin = bin_to_uint16(e->begin); + int end = bin_to_uint16(e->end); + int target = bin_to_uint16(e->target); + char buf[20]; + const char *type; + + switch (e->type) { + case MRB_CATCH_RESCUE: + type = "rescue"; + break; + case MRB_CATCH_ENSURE: + type = "ensure"; + break; + default: + buf[0] = '\0'; + snprintf(buf, sizeof(buf), "0x%02x ", (int)e->type); + type = buf; + break; + } + printf("catch type: %-8s begin: %04d end: %04d target: %04d\n", type, begin, end, target); + } + } + pc = irep->iseq; pcend = pc + irep->ilen; while (pc < pcend) { diff --git a/src/dump.c b/src/dump.c index 6acba12c2..884c44dc6 100644 --- a/src/dump.c +++ b/src/dump.c @@ -273,6 +273,31 @@ write_syms_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) return cur - buf; } +static size_t +get_catch_table_block_size(mrb_state *mrb, const mrb_irep *irep) +{ + size_t size = 0; + + size += sizeof(uint16_t); /* number of catch handler */ + size += (sizeof(struct mrb_irep_catch_hander)) * irep->clen; + + return size; +} + +static ptrdiff_t +write_catch_table_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) +{ + uint8_t *cur = buf; + const struct mrb_irep_catch_hander *e = mrb_irep_catch_handler_table(irep); + mrb_static_assert1(sizeof(*e) == 7); + + /* irep->clen has already been written before iseq block */ + memcpy(cur, (const void *)e, sizeof(*e) * irep->clen); + cur += sizeof(*e) * irep->clen; + + return cur - buf; +} + static size_t get_irep_record_size_1(mrb_state *mrb, const mrb_irep *irep) { @@ -280,6 +305,7 @@ get_irep_record_size_1(mrb_state *mrb, const mrb_irep *irep) size += get_irep_header_size(mrb); size += get_iseq_block_size(mrb, irep); + size += get_catch_table_block_size(mrb, irep); size += get_pool_block_size(mrb, irep); size += get_syms_block_size(mrb, irep); return size; @@ -314,7 +340,13 @@ write_irep_record(mrb_state *mrb, const mrb_irep *irep, uint8_t *bin, size_t *ir } bin += write_irep_header(mrb, irep, bin); + /* + * The catch handler table is after iseq block, but the number of + * elements is placed before iseq block. + */ + bin += uint16_to_bin(irep->clen, bin); bin += write_iseq_block(mrb, irep, bin, flags); + bin += write_catch_table_block(mrb, irep, bin); bin += write_pool_block(mrb, irep, bin); bin += write_syms_block(mrb, irep, bin); diff --git a/src/load.c b/src/load.c index 1118fc2ad..59790bc17 100644 --- a/src/load.c +++ b/src/load.c @@ -96,27 +96,30 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag src += sizeof(uint16_t); /* Binary Data Section */ - /* ISEQ BLOCK */ + /* ISEQ BLOCK (and CATCH HANDLER TABLE BLOCK) */ + irep->clen = bin_to_uint16(src); /* number of catch handler */ + src += sizeof(uint16_t); irep->ilen = (uint16_t)bin_to_uint32(src); src += sizeof(uint32_t); src += skip_padding(src); if (irep->ilen > 0) { + size_t data_len = sizeof(mrb_code) * irep->ilen + + sizeof(struct mrb_irep_catch_hander) * irep->clen; + mrb_static_assert1(sizeof(struct mrb_irep_catch_hander) == 7); if (SIZE_ERROR_MUL(irep->ilen, sizeof(mrb_code))) { return NULL; } if ((flags & FLAG_SRC_MALLOC) == 0) { irep->iseq = (mrb_code*)src; - src += sizeof(mrb_code) * irep->ilen; irep->flags |= MRB_ISEQ_NO_FREE; } else { - size_t data_len = sizeof(mrb_code) * irep->ilen; void *buf = mrb_malloc(mrb, data_len); irep->iseq = (mrb_code *)buf; memcpy(buf, src, data_len); - src += data_len; } + src += data_len; } /* POOL BLOCK */ -- cgit v1.2.3 From 500f721f7080e79c2e41e306cc1d94471c10f173 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 8 Aug 2020 15:12:42 +0900 Subject: Fix typo `_hander` -> `_handler`. --- include/mruby/irep.h | 8 ++++---- mrbgems/mruby-compiler/core/codegen.c | 30 +++++++++++++++--------------- src/codedump.c | 2 +- src/dump.c | 4 ++-- src/load.c | 4 ++-- src/vm.c | 8 ++++---- 6 files changed, 28 insertions(+), 28 deletions(-) (limited to 'src/load.c') diff --git a/include/mruby/irep.h b/include/mruby/irep.h index 430602279..b800403ce 100644 --- a/include/mruby/irep.h +++ b/include/mruby/irep.h @@ -44,7 +44,7 @@ enum mrb_catch_type { MRB_CATCH_ENSURE = 1, }; -struct mrb_irep_catch_hander { +struct mrb_irep_catch_handler { uint8_t type; /* enum mrb_catch_type */ uint8_t begin[2]; /* The starting address to match the hander. Includes this. */ uint8_t end[2]; /* The endpoint address that matches the hander. Not Includes this. */ @@ -125,14 +125,14 @@ struct mrb_insn_data { struct mrb_insn_data mrb_decode_insn(const mrb_code *pc); -static inline const struct mrb_irep_catch_hander * +static inline const struct mrb_irep_catch_handler * mrb_irep_catch_handler_table(const struct mrb_irep *irep) { if (irep->clen > 0) { - return (const struct mrb_irep_catch_hander *)(irep->iseq + irep->ilen); + return (const struct mrb_irep_catch_handler*)(irep->iseq + irep->ilen); } else { - return (const struct mrb_irep_catch_hander *)NULL; + return (const struct mrb_irep_catch_handler*)NULL; } } diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index b3ce388a9..2ede5b81e 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -71,7 +71,7 @@ typedef struct scope { mrb_pool_value *pool; mrb_sym *syms; mrb_irep **reps; - struct mrb_irep_catch_hander *catch_table; + struct mrb_irep_catch_handler *catch_table; uint32_t pcapa, scapa, rcapa; uint16_t nlocals; @@ -97,8 +97,8 @@ static void loop_pop(codegen_scope *s, int val); * - Larger start position * - Same start position but smaller end position */ -static int catch_hander_new(codegen_scope *s); -static void catch_hander_set(codegen_scope *s, int ent, enum mrb_catch_type type, uint32_t begin, uint32_t end, uint32_t target); +static int catch_handler_new(codegen_scope *s); +static void catch_handler_set(codegen_scope *s, int ent, enum mrb_catch_type type, uint32_t begin, uint32_t end, uint32_t target); static void gen_assignment(codegen_scope *s, node *tree, int sp, int val); static void gen_vmassignment(codegen_scope *s, node *tree, int rhs, int val); @@ -1468,14 +1468,14 @@ codegen(codegen_scope *s, node *tree, int val) if (tree->car == NULL) goto exit; lp = loop_push(s, LOOP_BEGIN); lp->pc0 = new_label(s); - catch_entry = catch_hander_new(s); + catch_entry = catch_handler_new(s); begin = s->pc; codegen(s, tree->car, VAL); pop(); lp->type = LOOP_RESCUE; end = s->pc; noexc = genjmp(s, OP_JMP, 0); - catch_hander_set(s, catch_entry, MRB_CATCH_RESCUE, begin, end, s->pc); + catch_handler_set(s, catch_entry, MRB_CATCH_RESCUE, begin, end, s->pc); tree = tree->cdr; exend = 0; pos1 = 0; @@ -1558,7 +1558,7 @@ codegen(codegen_scope *s, node *tree, int val) int catch_entry, begin, end, target; int idx; - catch_entry = catch_hander_new(s); + catch_entry = catch_handler_new(s); begin = s->pc; codegen(s, tree->car, val); end = target = s->pc; @@ -1570,7 +1570,7 @@ codegen(codegen_scope *s, node *tree, int val) pop(); genop_1(s, OP_RAISEIF, idx); pop(); - catch_hander_set(s, catch_entry, MRB_CATCH_ENSURE, begin, end, target); + catch_handler_set(s, catch_entry, MRB_CATCH_ENSURE, begin, end, target); } else { /* empty ensure ignored */ codegen(s, tree->car, val); @@ -2038,14 +2038,14 @@ codegen(codegen_scope *s, node *tree, int val) lp = loop_push(s, LOOP_BEGIN); lp->pc0 = new_label(s); - catch_entry = catch_hander_new(s); + catch_entry = catch_handler_new(s); begin = s->pc; exc = cursp(); codegen(s, tree->car, VAL); end = s->pc; noexc = genjmp(s, OP_JMP, 0); lp->type = LOOP_RESCUE; - catch_hander_set(s, catch_entry, MRB_CATCH_RESCUE, begin, end, s->pc); + catch_handler_set(s, catch_entry, MRB_CATCH_RESCUE, begin, end, s->pc); genop_1(s, OP_EXCEPT, exc); genop_1(s, OP_LOADF, exc); dispatch(s, noexc); @@ -3081,7 +3081,7 @@ scope_finish(codegen_scope *s) } irep->flags = 0; if (s->iseq) { - size_t catchsize = sizeof(struct mrb_irep_catch_hander) * irep->clen; + size_t catchsize = sizeof(struct mrb_irep_catch_handler) * irep->clen; irep->iseq = (const mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->pc + catchsize); irep->ilen = s->pc; if (irep->clen > 0) { @@ -3187,17 +3187,17 @@ loop_pop(codegen_scope *s, int val) } static int -catch_hander_new(codegen_scope *s) +catch_handler_new(codegen_scope *s) { - size_t newsize = sizeof(struct mrb_irep_catch_hander) * (s->irep->clen + 1); - s->catch_table = (struct mrb_irep_catch_hander *)codegen_realloc(s, (void *)s->catch_table, newsize); + size_t newsize = sizeof(struct mrb_irep_catch_handler) * (s->irep->clen + 1); + s->catch_table = (struct mrb_irep_catch_handler *)codegen_realloc(s, (void *)s->catch_table, newsize); return s->irep->clen ++; } static void -catch_hander_set(codegen_scope *s, int ent, enum mrb_catch_type type, uint32_t begin, uint32_t end, uint32_t target) +catch_handler_set(codegen_scope *s, int ent, enum mrb_catch_type type, uint32_t begin, uint32_t end, uint32_t target) { - struct mrb_irep_catch_hander *e; + struct mrb_irep_catch_handler *e; mrb_assert(ent >= 0 && ent < s->irep->clen); mrb_assert(begin < MAXARG_S); diff --git a/src/codedump.c b/src/codedump.c index 095028a39..389ed3c8f 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -83,7 +83,7 @@ codedump(mrb_state *mrb, const mrb_irep *irep) if (irep->clen > 0) { int i = irep->clen; - const struct mrb_irep_catch_hander *e = mrb_irep_catch_handler_table(irep); + const struct mrb_irep_catch_handler *e = mrb_irep_catch_handler_table(irep); for (; i > 0; i --, e ++) { int begin = bin_to_uint16(e->begin); diff --git a/src/dump.c b/src/dump.c index b14fc4a1f..3bc95f629 100644 --- a/src/dump.c +++ b/src/dump.c @@ -279,7 +279,7 @@ get_catch_table_block_size(mrb_state *mrb, const mrb_irep *irep) size_t size = 0; size += sizeof(uint16_t); /* number of catch handler */ - size += (sizeof(struct mrb_irep_catch_hander)) * irep->clen; + size += (sizeof(struct mrb_irep_catch_handler)) * irep->clen; return size; } @@ -288,7 +288,7 @@ static ptrdiff_t write_catch_table_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) { uint8_t *cur = buf; - const struct mrb_irep_catch_hander *e = mrb_irep_catch_handler_table(irep); + const struct mrb_irep_catch_handler *e = mrb_irep_catch_handler_table(irep); mrb_static_assert1(sizeof(*e) == 7); if (e == NULL) return 0; diff --git a/src/load.c b/src/load.c index 59790bc17..67217b128 100644 --- a/src/load.c +++ b/src/load.c @@ -105,8 +105,8 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag if (irep->ilen > 0) { size_t data_len = sizeof(mrb_code) * irep->ilen + - sizeof(struct mrb_irep_catch_hander) * irep->clen; - mrb_static_assert1(sizeof(struct mrb_irep_catch_hander) == 7); + sizeof(struct mrb_irep_catch_handler) * irep->clen; + mrb_static_assert1(sizeof(struct mrb_irep_catch_handler) == 7); if (SIZE_ERROR_MUL(irep->ilen, sizeof(mrb_code))) { return NULL; } diff --git a/src/vm.c b/src/vm.c index 4d3ab720a..727c37d53 100644 --- a/src/vm.c +++ b/src/vm.c @@ -788,13 +788,13 @@ break_new(mrb_state *mrb, uint32_t tag, const struct RProc *p, mrb_value val) #define MRB_CATCH_FILTER_ENSURE (UINT32_C(1) << MRB_CATCH_ENSURE) #define MRB_CATCH_FILTER_ALL (MRB_CATCH_FILTER_RESCUE | MRB_CATCH_FILTER_ENSURE) -static const struct mrb_irep_catch_hander * +static const struct mrb_irep_catch_handler * catch_handler_find(mrb_state *mrb, mrb_callinfo *ci, const mrb_code *pc, uint32_t filter) { - mrb_irep *irep; + const mrb_irep *irep; ptrdiff_t xpc; size_t cnt; - const struct mrb_irep_catch_hander *e; + const struct mrb_irep_catch_handler *e; /* The comparison operators use `>` and `<=` because pc already points to the next instruction */ #define catch_cover_p(pc, beg, end) ((pc) > (beg) && (pc) <= (end)) @@ -1042,7 +1042,7 @@ mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *pc) uint16_t b; uint8_t c; mrb_sym mid; - const struct mrb_irep_catch_hander *ch; + const struct mrb_irep_catch_handler *ch; #ifdef DIRECT_THREADED static void *optable[] = { -- cgit v1.2.3 From 8a87549315d0c7fd984a8ad239ebe3dbab4d2855 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 14 Aug 2020 14:34:53 +0900 Subject: Rename float configuration option names. - `MRB_WITHOUT_FLOAT` => `MRB_NO_FLOAT` - `MRB_USE_FLOAT` => `MRB_USE_FLOAT32` The former is to use `USE_XXX` naming convention. The latter is to make sure `float` is 32bit float and not floating point number in general. --- doc/guides/mrbconf.md | 8 +-- doc/mruby3.md | 11 ++++ include/mrbconf.h | 22 ++++++-- include/mruby.h | 10 ++-- include/mruby/boxing_nan.h | 8 +-- include/mruby/boxing_no.h | 6 +- include/mruby/boxing_word.h | 12 ++-- include/mruby/class.h | 2 +- include/mruby/error.h | 4 +- include/mruby/numeric.h | 16 +++--- include/mruby/value.h | 10 ++-- mrbgems/mruby-compiler/core/codegen.c | 16 +++--- mrbgems/mruby-compiler/core/parse.y | 4 +- mrbgems/mruby-compiler/core/y.tab.c | 4 +- mrbgems/mruby-complex/src/complex.c | 8 +-- mrbgems/mruby-complex/test/complex.rb | 4 +- mrbgems/mruby-inline-struct/test/inline.c | 2 +- mrbgems/mruby-io/src/file.c | 4 +- mrbgems/mruby-io/src/io.c | 6 +- mrbgems/mruby-kernel-ext/src/kernel.c | 4 +- mrbgems/mruby-math/src/math.c | 4 +- mrbgems/mruby-numeric-ext/src/numeric_ext.c | 4 +- mrbgems/mruby-object-ext/src/object.c | 4 +- mrbgems/mruby-os-memsize/src/memsize.c | 2 +- mrbgems/mruby-pack/src/pack.c | 8 +-- mrbgems/mruby-random/src/random.c | 4 +- mrbgems/mruby-range-ext/src/range.c | 4 +- mrbgems/mruby-rational/src/rational.c | 6 +- mrbgems/mruby-sleep/src/mrb_sleep.c | 2 +- mrbgems/mruby-sprintf/src/sprintf.c | 10 ++-- mrbgems/mruby-string-ext/src/string.c | 2 +- mrbgems/mruby-test/driver.c | 4 +- mrbgems/mruby-test/vformat.c | 4 +- mrbgems/mruby-time/src/time.c | 20 +++---- src/array.c | 2 +- src/class.c | 4 +- src/dump.c | 10 ++-- src/error.c | 2 +- src/etc.c | 10 ++-- src/fmt_fp.c | 2 +- src/gc.c | 6 +- src/hash.c | 8 +-- src/load.c | 6 +- src/numeric.c | 88 ++++++++++++++--------------- src/object.c | 12 ++-- src/range.c | 2 +- src/string.c | 10 ++-- src/vm.c | 16 +++--- target/RX630.rb | 2 +- tasks/gitlab.rake | 4 +- test/t/float.rb | 2 +- 51 files changed, 223 insertions(+), 202 deletions(-) (limited to 'src/load.c') diff --git a/doc/guides/mrbconf.md b/doc/guides/mrbconf.md index d662e05bf..c95634604 100644 --- a/doc/guides/mrbconf.md +++ b/doc/guides/mrbconf.md @@ -46,11 +46,11 @@ You can use mrbconfs with following ways: ## Primitive type configuration. -`MRB_USE_FLOAT` +`MRB_USE_FLOAT32` * When defined single precision floating point type(C type `float`) is used as `mrb_float`. -* Else double precision floating point type(C type `double`) is used as `mrb_float`. +* Otherwise double precision floating point type(C type `double`) is used as `mrb_float`. -`MRB_WITHOUT_FLOAT` +`MRB_NO_FLOAT` * When defined removes floating point numbers from mruby. * It makes mruby easier to handle in "Microcontroller without FPU" and "Kernel Space". @@ -117,7 +117,7 @@ largest value of required alignment. `MRB_NAN_BOXING` * If defined represent `mrb_value` in boxed `double`. -* Conflicts with `MRB_USE_FLOAT` and `MRB_WITHOUT_FLOAT`. +* Conflicts with `MRB_USE_FLOAT32` and `MRB_NO_FLOAT`. `MRB_WORD_BOXING` * If defined represent `mrb_value` as a word. diff --git a/doc/mruby3.md b/doc/mruby3.md index 29da25cbc..02884f51b 100644 --- a/doc/mruby3.md +++ b/doc/mruby3.md @@ -57,6 +57,17 @@ pull-request. Some configuration macro names are changed for consistency +== `MRB_NO_FLOAT` + +Changed from `MRB_WITHOUT_FLOAT` to conform `USE_XXX` naming +convention. + +== `MRB_USE_FLOAT32` + +Changed from `MRB_USE_FLOAT` to make sure `float` here means +using single precision float, and not the opposite of +`MRB_NO_FLOAT`. + == `MRB_USE_METHOD_T_STRUCT` Changed from `MRB_METHOD_T_STRUCT`. diff --git a/include/mrbconf.h b/include/mrbconf.h index 734ec98e7..159aee48f 100644 --- a/include/mrbconf.h +++ b/include/mrbconf.h @@ -25,14 +25,24 @@ #endif /* configuration options: */ -/* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */ -//#define MRB_USE_FLOAT +/* add -DMRB_USE_FLOAT32 to use float instead of double for floating point numbers */ +//#define MRB_USE_FLOAT32 /* exclude floating point numbers */ -//#define MRB_WITHOUT_FLOAT +//#define MRB_NO_FLOAT -#if defined(MRB_USE_FLOAT) && defined(MRB_WITHOUT_FLOAT) -#error Cannot define MRB_USE_FLOAT and MRB_WITHOUT_FLOAT at the same time +/* obsolete configuration */ +#if defined(MRB_USE_FLOAT) +# define MRB_USE_FLOAT32 +#endif + +/* obsolete configuration */ +#if defined(MRB_WITHOUT_FLOAT) +# define MRB_NO_FLOAT +#endif + +#if defined(MRB_USE_FLOAT32) && defined(MRB_NO_FLOAT) +#error Cannot define MRB_USE_FLOAT32 and MRB_NO_FLOAT at the same time #endif /* stop inlining floating point numbers in mrb_value (effective only with MRB_WORD_BOXING)*/ @@ -65,7 +75,7 @@ # endif #endif -/* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT and MRB_WITHOUT_FLOAT */ +/* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT32 and MRB_NO_FLOAT */ //#define MRB_NAN_BOXING /* represent mrb_value as a word (natural unit of data for the processor) */ diff --git a/include/mruby.h b/include/mruby.h index dea0a9c88..485a94d70 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -92,7 +92,7 @@ #include #include -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #include #ifndef FLT_EPSILON #define FLT_EPSILON (1.19209290e-07f) @@ -104,7 +104,7 @@ #define LDBL_EPSILON (1.08420217248550443401e-19L) #endif -#ifdef MRB_USE_FLOAT +#ifdef MRB_USE_FLOAT32 #define MRB_FLOAT_EPSILON FLT_EPSILON #else #define MRB_FLOAT_EPSILON DBL_EPSILON @@ -245,7 +245,7 @@ typedef struct mrb_state { struct RClass *hash_class; struct RClass *range_class; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT struct RClass *float_class; #endif struct RClass *fixnum_class; @@ -1211,7 +1211,7 @@ MRB_API mrb_bool mrb_obj_equal(mrb_state *mrb, mrb_value a, mrb_value b); MRB_API mrb_bool mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2); MRB_API mrb_value mrb_convert_to_integer(mrb_state *mrb, mrb_value val, mrb_int base); MRB_API mrb_value mrb_Integer(mrb_state *mrb, mrb_value val); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_API mrb_value mrb_Float(mrb_state *mrb, mrb_value val); #endif MRB_API mrb_value mrb_inspect(mrb_state *mrb, mrb_value obj); @@ -1304,7 +1304,7 @@ MRB_API mrb_value mrb_vformat(mrb_state *mrb, const char *format, va_list ap); #define E_FROZEN_ERROR (mrb_exc_get_id(mrb, MRB_SYM(FrozenError))) #define E_NOTIMP_ERROR (mrb_exc_get_id(mrb, MRB_SYM(NotImplementedError))) -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #define E_FLOATDOMAIN_ERROR (mrb_exc_get_id(mrb, MRB_SYM(FloatDomainError))) #endif diff --git a/include/mruby/boxing_nan.h b/include/mruby/boxing_nan.h index a8655ca19..eb89ac1f9 100644 --- a/include/mruby/boxing_nan.h +++ b/include/mruby/boxing_nan.h @@ -7,12 +7,12 @@ #ifndef MRUBY_BOXING_NAN_H #define MRUBY_BOXING_NAN_H -#ifdef MRB_USE_FLOAT -# error ---->> MRB_NAN_BOXING and MRB_USE_FLOAT conflict <<---- +#ifdef MRB_USE_FLOAT32 +# error ---->> MRB_NAN_BOXING and MRB_USE_FLOAT32 conflict <<---- #endif -#ifdef MRB_WITHOUT_FLOAT -# error ---->> MRB_NAN_BOXING and MRB_WITHOUT_FLOAT conflict <<---- +#ifdef MRB_NO_FLOAT +# error ---->> MRB_NAN_BOXING and MRB_NO_FLOAT conflict <<---- #endif #ifdef MRB_INT64 diff --git a/include/mruby/boxing_no.h b/include/mruby/boxing_no.h index 23b48c6f8..345f6b35b 100644 --- a/include/mruby/boxing_no.h +++ b/include/mruby/boxing_no.h @@ -11,7 +11,7 @@ #define MRB_SYMBOL_SHIFT 0 union mrb_value_union { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_float f; #endif void *p; @@ -26,7 +26,7 @@ typedef struct mrb_value { #define mrb_ptr(o) (o).value.p #define mrb_cptr(o) mrb_ptr(o) -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #define mrb_float(o) (o).value.f #endif #define mrb_fixnum(o) (o).value.i @@ -43,7 +43,7 @@ typedef struct mrb_value { #define SET_TRUE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_TRUE, value.i, 1) #define SET_BOOL_VALUE(r,b) BOXNIX_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1) #define SET_INT_VALUE(r,n) BOXNIX_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n)) -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #define SET_FLOAT_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v)) #endif #define SET_SYM_VALUE(r,v) BOXNIX_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v)) diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h index a91d10421..b9b6a3fe9 100644 --- a/include/mruby/boxing_word.h +++ b/include/mruby/boxing_word.h @@ -11,7 +11,7 @@ #error MRB_INT64 cannot be used with MRB_WORD_BOXING in 32-bit mode. #endif -#if !defined(MRB_WITHOUT_FLOAT) || defined(MRB_NO_FLOAT_INLINE) +#if !defined(MRB_NO_FLOAT) || defined(MRB_NO_FLOAT_INLINE) struct RFloat { MRB_OBJECT_HEADER; mrb_float f; @@ -80,7 +80,7 @@ union mrb_value_ { }; #endif struct RBasic *bp; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT struct RFloat *fp; #endif struct RCptr *vp; @@ -96,13 +96,13 @@ mrb_val_union(mrb_value v) } MRB_API mrb_value mrb_word_boxing_cptr_value(struct mrb_state*, void*); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float); #endif #define mrb_ptr(o) mrb_val_union(o).p #define mrb_cptr(o) mrb_val_union(o).vp->p -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #define mrb_float(o) mrb_val_union(o).fp->f #endif #define mrb_fixnum(o) BOXWORD_SHIFT_VALUE(o, FIXNUM, mrb_int) @@ -124,7 +124,7 @@ MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float); #define mrb_nil_p(o) ((o) == MRB_Qnil) #define mrb_false_p(o) ((o) == MRB_Qfalse) #define mrb_true_p(o) ((o) == MRB_Qtrue) -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #define mrb_float_p(o) BOXWORD_OBJ_TYPE_P(o, FLOAT) #endif #define mrb_array_p(o) BOXWORD_OBJ_TYPE_P(o, ARRAY) @@ -146,7 +146,7 @@ MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float); #define mrb_istruct_p(o) BOXWORD_OBJ_TYPE_P(o, ISTRUCT) #define mrb_break_p(o) BOXWORD_OBJ_TYPE_P(o, BREAK) -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v)) #endif #define SET_CPTR_VALUE(mrb,r,v) ((r) = mrb_word_boxing_cptr_value(mrb, v)) diff --git a/include/mruby/class.h b/include/mruby/class.h index 88e5915e5..a02c4ef17 100644 --- a/include/mruby/class.h +++ b/include/mruby/class.h @@ -37,7 +37,7 @@ mrb_class(mrb_state *mrb, mrb_value v) return mrb->symbol_class; case MRB_TT_FIXNUM: return mrb->fixnum_class; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: return mrb->float_class; #endif diff --git a/include/mruby/error.h b/include/mruby/error.h index 67a0a539e..b607dd957 100644 --- a/include/mruby/error.h +++ b/include/mruby/error.h @@ -32,7 +32,7 @@ MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_va /* declaration for `fail` method */ MRB_API mrb_value mrb_f_raise(mrb_state*, mrb_value); -#if defined(MRB_64BIT) || defined(MRB_USE_FLOAT) || defined(MRB_NAN_BOXING) || defined(MRB_WORD_BOXING) +#if defined(MRB_64BIT) || defined(MRB_USE_FLOAT32) || defined(MRB_NAN_BOXING) || defined(MRB_WORD_BOXING) struct RBreak { MRB_OBJECT_HEADER; const struct RProc *proc; @@ -62,7 +62,7 @@ mrb_break_value_set(struct RBreak *brk, mrb_value val) brk->flags &= ~RBREAK_VALUE_TT_MASK; brk->flags |= val.tt; } -#endif /* MRB_64BIT || MRB_USE_FLOAT || MRB_NAN_BOXING || MRB_WORD_BOXING */ +#endif /* MRB_64BIT || MRB_USE_FLOAT32 || MRB_NAN_BOXING || MRB_WORD_BOXING */ #define mrb_break_proc_get(brk) ((brk)->proc) #define mrb_break_proc_set(brk, p) ((brk)->proc = p) diff --git a/include/mruby/numeric.h b/include/mruby/numeric.h index 06a33cc6f..10b242688 100644 --- a/include/mruby/numeric.h +++ b/include/mruby/numeric.h @@ -22,7 +22,7 @@ MRB_BEGIN_DECL #define POSFIXABLE(f) TYPED_POSFIXABLE(f,mrb_int) #define NEGFIXABLE(f) TYPED_NEGFIXABLE(f,mrb_int) #define FIXABLE(f) TYPED_FIXABLE(f,mrb_int) -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #ifdef MRB_INT64 #define FIXABLE_FLOAT(f) ((f)>=-9223372036854775808.0 && (f)<9223372036854775808.0) #else @@ -30,12 +30,12 @@ MRB_BEGIN_DECL #endif #endif -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_API mrb_value mrb_flo_to_fixnum(mrb_state *mrb, mrb_value val); #endif MRB_API mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base); /* ArgumentError if format string doesn't match /%(\.[0-9]+)?[aAeEfFgG]/ */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_API mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt); MRB_API int mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float f); MRB_API mrb_float mrb_to_flo(mrb_state *mrb, mrb_value x); @@ -161,13 +161,13 @@ mrb_int_mul_overflow(mrb_int multiplier, mrb_int multiplicand, mrb_int *product) #endif -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT # include # include # define MRB_FLT_RADIX FLT_RADIX -# ifdef MRB_USE_FLOAT +# ifdef MRB_USE_FLOAT32 # define MRB_FLT_MANT_DIG FLT_MANT_DIG # define MRB_FLT_EPSILON FLT_EPSILON # define MRB_FLT_DIG FLT_DIG @@ -178,7 +178,7 @@ mrb_int_mul_overflow(mrb_int multiplier, mrb_int multiplicand, mrb_int *product) # define MRB_FLT_MAX FLT_MAX # define MRB_FLT_MAX_10_EXP FLT_MAX_10_EXP -# else /* not MRB_USE_FLOAT */ +# else /* not MRB_USE_FLOAT32 */ # define MRB_FLT_MANT_DIG DBL_MANT_DIG # define MRB_FLT_EPSILON DBL_EPSILON # define MRB_FLT_DIG DBL_DIG @@ -188,8 +188,8 @@ mrb_int_mul_overflow(mrb_int multiplier, mrb_int multiplicand, mrb_int *product) # define MRB_FLT_MAX_EXP DBL_MAX_EXP # define MRB_FLT_MAX DBL_MAX # define MRB_FLT_MAX_10_EXP DBL_MAX_10_EXP -# endif /* MRB_USE_FLOAT */ -#endif /* MRB_WITHOUT_FLOAT */ +# endif /* MRB_USE_FLOAT32 */ +#endif /* MRB_NO_FLOAT */ MRB_END_DECL diff --git a/include/mruby/value.h b/include/mruby/value.h index 473774b00..88c8d4dba 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -75,9 +75,9 @@ struct mrb_state; # define MRB_ENDIAN_LOHI(a,b) b a #endif -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_API double mrb_float_read(const char*, char**); -#ifdef MRB_USE_FLOAT +#ifdef MRB_USE_FLOAT32 typedef float mrb_float; #else typedef double mrb_float; @@ -90,7 +90,7 @@ MRB_API int mrb_msvc_vsnprintf(char *s, size_t n, const char *format, va_list ar MRB_API int mrb_msvc_snprintf(char *s, size_t n, const char *format, ...); # define vsnprintf(s, n, format, arg) mrb_msvc_vsnprintf(s, n, format, arg) # define snprintf(s, n, format, ...) mrb_msvc_snprintf(s, n, format, __VA_ARGS__) -# if _MSC_VER < 1800 && !defined MRB_WITHOUT_FLOAT +# if _MSC_VER < 1800 && !defined MRB_NO_FLOAT # include # define isfinite(n) _finite(n) # define isnan _isnan @@ -195,7 +195,7 @@ struct RCptr { #ifndef mrb_true_p #define mrb_true_p(o) (mrb_type(o) == MRB_TT_TRUE) #endif -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #ifndef mrb_float_p #define mrb_float_p(o) (mrb_type(o) == MRB_TT_FLOAT) #endif @@ -264,7 +264,7 @@ struct RCptr { * * Takes a float and boxes it into an mrb_value */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_INLINE mrb_value mrb_float_value(struct mrb_state *mrb, mrb_float f) { mrb_value v; diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index f60f1f077..372a2c5f7 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -530,7 +530,7 @@ new_lit(codegen_scope *s, mrb_value val) return i; } break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: for (i=0; iirep->plen; i++) { mrb_float f1, f2; @@ -588,7 +588,7 @@ new_lit(codegen_scope *s, mrb_value val) } break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: pv->tt = IREP_TT_FLOAT; pv->u.f = mrb_float(val); @@ -1330,7 +1330,7 @@ raise_error(codegen_scope *s, const char *msg) genop_1(s, OP_ERR, idx); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static double readint_float(codegen_scope *s, const char *p, int base) { @@ -2442,7 +2442,7 @@ codegen(codegen_scope *s, node *tree, int val) mrb_bool overflow; i = readint_mrb_int(s, p, base, FALSE, &overflow); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (overflow) { double f = readint_float(s, p, base); int off = new_lit(s, mrb_float_value(s->mrb, f)); @@ -2473,7 +2473,7 @@ codegen(codegen_scope *s, node *tree, int val) } break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case NODE_FLOAT: if (val) { char *p = (char*)tree; @@ -2490,7 +2490,7 @@ codegen(codegen_scope *s, node *tree, int val) { nt = nint(tree->car); switch (nt) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case NODE_FLOAT: if (val) { char *p = (char*)tree->cdr; @@ -2511,7 +2511,7 @@ codegen(codegen_scope *s, node *tree, int val) mrb_bool overflow; i = readint_mrb_int(s, p, base, TRUE, &overflow); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (overflow) { double f = readint_float(s, p, base); int off = new_lit(s, mrb_float_value(s->mrb, -f)); @@ -2531,7 +2531,7 @@ codegen(codegen_scope *s, node *tree, int val) int off = new_lit(s, mrb_fixnum_value(i)); genop_2(s, OP_LOADL, cursp(), off); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT } #endif push(); diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index c67c694fe..8e3087a2a 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -981,7 +981,7 @@ new_int(parser_state *p, const char *s, int base, int suffix) return result; } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* (:float . i) */ static node* new_float(parser_state *p, const char *s, int suffix) @@ -5661,7 +5661,7 @@ parser_yylex(parser_state *p) } tokfix(p); if (is_float) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT yywarning_s(p, "floating point numbers are not supported", tok(p)); pylval.nd = new_int(p, "0", 10, 0); return tINTEGER; diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 096543349..48173933f 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -1044,7 +1044,7 @@ new_int(parser_state *p, const char *s, int base, int suffix) return result; } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* (:float . i) */ static node* new_float(parser_state *p, const char *s, int suffix) @@ -11553,7 +11553,7 @@ parser_yylex(parser_state *p) } tokfix(p); if (is_float) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT yywarning_s(p, "floating point numbers are not supported", tok(p)); pylval.nd = new_int(p, "0", 10, 0); return tINTEGER; diff --git a/mrbgems/mruby-complex/src/complex.c b/mrbgems/mruby-complex/src/complex.c index 24dad4235..85735b704 100644 --- a/mrbgems/mruby-complex/src/complex.c +++ b/mrbgems/mruby-complex/src/complex.c @@ -3,8 +3,8 @@ #include #include -#ifdef MRB_WITHOUT_FLOAT -# error Complex conflicts 'MRB_WITHOUT_FLOAT' configuration in your 'build_config.rb' +#ifdef MRB_NO_FLOAT +# error Complex conflicts with 'MRB_NO_FLOAT' configuration #endif struct mrb_complex { @@ -12,13 +12,13 @@ struct mrb_complex { mrb_float imaginary; }; -#ifdef MRB_USE_FLOAT +#ifdef MRB_USE_FLOAT32 #define F(x) x##f #else #define F(x) x #endif -#if defined(MRB_64BIT) || defined(MRB_USE_FLOAT) +#if defined(MRB_64BIT) || defined(MRB_USE_FLOAT32) #define COMPLEX_USE_ISTRUCT /* use TT_ISTRUCT */ diff --git a/mrbgems/mruby-complex/test/complex.rb b/mrbgems/mruby-complex/test/complex.rb index d996e8277..14711ad73 100644 --- a/mrbgems/mruby-complex/test/complex.rb +++ b/mrbgems/mruby-complex/test/complex.rb @@ -60,7 +60,7 @@ assert 'Complex#/' do assert_complex Complex(9, 8) / 4 , ((9 / 4) + 2i) assert_complex Complex(20, 9) / 9.8 , (2.0408163265306123 + 0.9183673469387754i) if 1e39.infinite? then - # MRB_USE_FLOAT in effect + # MRB_USE_FLOAT32 in effect ten = 1e21 one = 1e20 else @@ -80,7 +80,7 @@ assert 'Complex#abs' do assert_float Complex(-1).abs, 1 assert_float Complex(3.0, -4.0).abs, 5.0 if 1e39.infinite? then - # MRB_USE_FLOAT in effect + # MRB_USE_FLOAT32 in effect exp = 125 else exp = 1021 diff --git a/mrbgems/mruby-inline-struct/test/inline.c b/mrbgems/mruby-inline-struct/test/inline.c index 5d307dcab..b4d9b1f1e 100644 --- a/mrbgems/mruby-inline-struct/test/inline.c +++ b/mrbgems/mruby-inline-struct/test/inline.c @@ -13,7 +13,7 @@ istruct_test_initialize(mrb_state *mrb, mrb_value self) if (mrb_fixnum_p(object)) { strncpy(string, "fixnum", size-1); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT else if (mrb_float_p(object)) { strncpy(string, "float", size-1); } diff --git a/mrbgems/mruby-io/src/file.c b/mrbgems/mruby-io/src/file.c index 04dece910..a28360d81 100644 --- a/mrbgems/mruby-io/src/file.c +++ b/mrbgems/mruby-io/src/file.c @@ -448,8 +448,8 @@ mrb_file_size(mrb_state *mrb, mrb_value self) } if (st.st_size > MRB_INT_MAX) { -#ifdef MRB_WITHOUT_FLOAT - mrb_raise(mrb, E_RUNTIME_ERROR, "File#size too large for MRB_WITHOUT_FLOAT"); +#ifdef MRB_NO_FLOAT + mrb_raise(mrb, E_RUNTIME_ERROR, "File#size too large for MRB_NO_FLOAT"); #else return mrb_float_value(mrb, (mrb_float)st.st_size); #endif diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index 988d19b02..587e195d9 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -973,10 +973,10 @@ mrb_io_sysseek(mrb_state *mrb, mrb_value io) mrb_sys_fail(mrb, "sysseek"); } if (pos > MRB_INT_MAX) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT return mrb_float_value(mrb, (mrb_float)pos); #else - mrb_raise(mrb, E_IO_ERROR, "sysseek reached too far for MRB_WITHOUT_FLOAT"); + mrb_raise(mrb, E_IO_ERROR, "sysseek reached too far for MRB_NO_FLOAT"); #endif } else { return mrb_fixnum_value(pos); @@ -1081,7 +1081,7 @@ time2timeval(mrb_state *mrb, mrb_value time) t.tv_usec = 0; break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: t.tv_sec = (ftime_t)mrb_float(time); t.tv_usec = (fsuseconds_t)((mrb_float(time) - t.tv_sec) * 1000000.0); diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c index 70991c704..eaf8c6eb0 100644 --- a/mrbgems/mruby-kernel-ext/src/kernel.c +++ b/mrbgems/mruby-kernel-ext/src/kernel.c @@ -112,7 +112,7 @@ mrb_f_integer(mrb_state *mrb, mrb_value self) return mrb_convert_to_integer(mrb, arg, base); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* * call-seq: * Float(arg) -> float @@ -212,7 +212,7 @@ mrb_mruby_kernel_ext_gem_init(mrb_state *mrb) mrb_define_module_function(mrb, krn, "caller", mrb_f_caller, MRB_ARGS_OPT(2)); mrb_define_method(mrb, krn, "__method__", mrb_f_method, MRB_ARGS_NONE()); mrb_define_module_function(mrb, krn, "Integer", mrb_f_integer, MRB_ARGS_ARG(1,1)); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_define_module_function(mrb, krn, "Float", mrb_f_float, MRB_ARGS_REQ(1)); #endif mrb_define_module_function(mrb, krn, "String", mrb_f_string, MRB_ARGS_REQ(1)); diff --git a/mrbgems/mruby-math/src/math.c b/mrbgems/mruby-math/src/math.c index ff1e84684..fcde7e700 100644 --- a/mrbgems/mruby-math/src/math.c +++ b/mrbgems/mruby-math/src/math.c @@ -4,8 +4,8 @@ ** See Copyright Notice in mruby.h */ -#ifdef MRB_WITHOUT_FLOAT -# error Math conflicts 'MRB_WITHOUT_FLOAT' configuration in your 'build_config.rb' +#ifdef MRB_NO_FLOAT +# error Math conflicts with 'MRB_NO_FLOAT' configuration #endif #include diff --git a/mrbgems/mruby-numeric-ext/src/numeric_ext.c b/mrbgems/mruby-numeric-ext/src/numeric_ext.c index fd7072ccd..d00be4b5d 100644 --- a/mrbgems/mruby-numeric-ext/src/numeric_ext.c +++ b/mrbgems/mruby-numeric-ext/src/numeric_ext.c @@ -59,7 +59,7 @@ mrb_mruby_numeric_ext_gem_init(mrb_state* mrb) mrb_define_method(mrb, i, "anybits?", mrb_int_anybits, MRB_ARGS_REQ(1)); mrb_define_method(mrb, i, "nobits?", mrb_int_nobits, MRB_ARGS_REQ(1)); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_define_const_id(mrb, mrb->float_class, MRB_SYM(RADIX), mrb_fixnum_value(MRB_FLT_RADIX)); mrb_define_const_id(mrb, mrb->float_class, MRB_SYM(MANT_DIG), mrb_fixnum_value(MRB_FLT_MANT_DIG)); mrb_define_const_id(mrb, mrb->float_class, MRB_SYM(EPSILON), mrb_float_value(mrb, MRB_FLT_EPSILON)); @@ -70,7 +70,7 @@ mrb_mruby_numeric_ext_gem_init(mrb_state* mrb) mrb_define_const_id(mrb, mrb->float_class, MRB_SYM(MAX_EXP), mrb_fixnum_value(MRB_FLT_MAX_EXP)); mrb_define_const_id(mrb, mrb->float_class, MRB_SYM(MAX), mrb_float_value(mrb, MRB_FLT_MAX)); mrb_define_const_id(mrb, mrb->float_class, MRB_SYM(MAX_10_EXP), mrb_fixnum_value(MRB_FLT_MAX_10_EXP)); -#endif /* MRB_WITHOUT_FLOAT */ +#endif /* MRB_NO_FLOAT */ } void diff --git a/mrbgems/mruby-object-ext/src/object.c b/mrbgems/mruby-object-ext/src/object.c index 57361e8e2..2d99ce8c2 100644 --- a/mrbgems/mruby-object-ext/src/object.c +++ b/mrbgems/mruby-object-ext/src/object.c @@ -17,7 +17,7 @@ nil_to_a(mrb_state *mrb, mrb_value obj) return mrb_ary_new(mrb); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* * call-seq: * nil.to_f -> 0.0 @@ -115,7 +115,7 @@ mrb_mruby_object_ext_gem_init(mrb_state* mrb) struct RClass * n = mrb->nil_class; mrb_define_method(mrb, n, "to_a", nil_to_a, MRB_ARGS_NONE()); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_define_method(mrb, n, "to_f", nil_to_f, MRB_ARGS_NONE()); #endif mrb_define_method(mrb, n, "to_h", nil_to_h, MRB_ARGS_NONE()); diff --git a/mrbgems/mruby-os-memsize/src/memsize.c b/mrbgems/mruby-os-memsize/src/memsize.c index 7030299f4..78ef1e4df 100644 --- a/mrbgems/mruby-os-memsize/src/memsize.c +++ b/mrbgems/mruby-os-memsize/src/memsize.c @@ -111,7 +111,7 @@ os_memsize_of_object(mrb_state* mrb, mrb_value obj) case MRB_TT_DATA: size += mrb_objspace_page_slot_size(); break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: #ifdef MRB_WORD_BOXING size += mrb_objspace_page_slot_size() + diff --git a/mrbgems/mruby-pack/src/pack.c b/mrbgems/mruby-pack/src/pack.c index e222cd946..45427afa0 100644 --- a/mrbgems/mruby-pack/src/pack.c +++ b/mrbgems/mruby-pack/src/pack.c @@ -425,7 +425,7 @@ unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un return 8; } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static int pack_double(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags) { @@ -1248,7 +1248,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) if (type == PACK_TYPE_INTEGER) { o = mrb_to_int(mrb, o); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT else if (type == PACK_TYPE_FLOAT) { if (!mrb_float_p(o)) { mrb_float f = mrb_to_flo(mrb, o); @@ -1284,7 +1284,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary) case PACK_DIR_STR: ridx += pack_a(mrb, o, result, ridx, count, flags); break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case PACK_DIR_DOUBLE: ridx += pack_double(mrb, o, result, ridx, flags); break; @@ -1381,7 +1381,7 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single) case PACK_DIR_QUAD: srcidx += unpack_q(mrb, sptr, srclen - srcidx, result, flags); break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case PACK_DIR_FLOAT: srcidx += unpack_float(mrb, sptr, srclen - srcidx, result, flags); break; diff --git a/mrbgems/mruby-random/src/random.c b/mrbgems/mruby-random/src/random.c index fdb28e012..3010b3db7 100644 --- a/mrbgems/mruby-random/src/random.c +++ b/mrbgems/mruby-random/src/random.c @@ -85,7 +85,7 @@ rand_uint32(rand_state *state) } #endif /* XORSHIFT96 */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static double rand_real(rand_state *t) { @@ -100,7 +100,7 @@ random_rand(mrb_state *mrb, rand_state *t, mrb_value max) mrb_value value; if (mrb_fixnum(max) == 0) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT value = mrb_float_value(mrb, rand_real(t)); #else mrb_raise(mrb, E_ARGUMENT_ERROR, "Float not supported"); diff --git a/mrbgems/mruby-range-ext/src/range.c b/mrbgems/mruby-range-ext/src/range.c index 633894070..421e7d33a 100644 --- a/mrbgems/mruby-range-ext/src/range.c +++ b/mrbgems/mruby-range-ext/src/range.c @@ -96,7 +96,7 @@ range_last(mrb_state *mrb, mrb_value range) * ('a'..'z').size #=> nil */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static mrb_value range_size(mrb_state *mrb, mrb_value range) { @@ -170,7 +170,7 @@ range_size(mrb_state *mrb, mrb_value range) } return mrb_nil_value(); } -#endif /* MRB_WITHOUT_FLOAT */ +#endif /* MRB_NO_FLOAT */ void mrb_mruby_range_ext_gem_init(mrb_state* mrb) diff --git a/mrbgems/mruby-rational/src/rational.c b/mrbgems/mruby-rational/src/rational.c index 4a72a42f2..f9470de86 100644 --- a/mrbgems/mruby-rational/src/rational.c +++ b/mrbgems/mruby-rational/src/rational.c @@ -87,7 +87,7 @@ rational_s_new(mrb_state *mrb, mrb_value self) { mrb_int numerator, denominator; -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_get_args(mrb, "ii", &numerator, &denominator); #else @@ -136,7 +136,7 @@ rational_s_new(mrb_state *mrb, mrb_value self) return rational_new(mrb, numerator, denominator); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static mrb_value rational_to_f(mrb_state *mrb, mrb_value self) { @@ -194,7 +194,7 @@ void mrb_mruby_rational_gem_init(mrb_state *mrb) mrb_define_class_method(mrb, rat, "_new", rational_s_new, MRB_ARGS_REQ(2)); mrb_define_method(mrb, rat, "numerator", rational_numerator, MRB_ARGS_NONE()); mrb_define_method(mrb, rat, "denominator", rational_denominator, MRB_ARGS_NONE()); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_define_method(mrb, rat, "to_f", rational_to_f, MRB_ARGS_NONE()); #endif mrb_define_method(mrb, rat, "to_i", rational_to_i, MRB_ARGS_NONE()); diff --git a/mrbgems/mruby-sleep/src/mrb_sleep.c b/mrbgems/mruby-sleep/src/mrb_sleep.c index a653242d1..7771db56b 100644 --- a/mrbgems/mruby-sleep/src/mrb_sleep.c +++ b/mrbgems/mruby-sleep/src/mrb_sleep.c @@ -44,7 +44,7 @@ mrb_f_sleep(mrb_state *mrb, mrb_value self) { time_t beg = time(0); time_t end; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_float sec; mrb_get_args(mrb, "f", &sec); diff --git a/mrbgems/mruby-sprintf/src/sprintf.c b/mrbgems/mruby-sprintf/src/sprintf.c index 0cf462ef7..7f36616ec 100644 --- a/mrbgems/mruby-sprintf/src/sprintf.c +++ b/mrbgems/mruby-sprintf/src/sprintf.c @@ -10,7 +10,7 @@ #include #include #include -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #include #endif #include @@ -20,7 +20,7 @@ #define EXTENDSIGN(n, l) (((~0U << (n)) >> (((n)*(l)) % BITSPERDIG)) & ~(~0U << (n))) mrb_value mrb_str_format(mrb_state *, mrb_int, const mrb_value *, mrb_value); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static void fmt_setup(char*,size_t,int,int,mrb_int,mrb_int); #endif @@ -863,7 +863,7 @@ retry: bin_retry: switch (mrb_type(val)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: val = mrb_flo_to_fixnum(mrb, val); if (mrb_fixnum_p(val)) goto bin_retry; @@ -1030,7 +1030,7 @@ retry: } break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case 'f': case 'g': case 'G': @@ -1131,7 +1131,7 @@ retry: return result; } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static void fmt_setup(char *buf, size_t size, int c, int flags, mrb_int width, mrb_int prec) { diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index ded34a89e..71fb5bb65 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -12,7 +12,7 @@ #define ENC_COMP_P(enc, enc_lit) \ str_casecmp_p(RSTRING_PTR(enc), RSTRING_LEN(enc), enc_lit, sizeof(enc_lit"")-1) -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT # define mrb_float_p(o) FALSE #endif diff --git a/mrbgems/mruby-test/driver.c b/mrbgems/mruby-test/driver.c index fe1a475d5..4b82a9abc 100644 --- a/mrbgems/mruby-test/driver.c +++ b/mrbgems/mruby-test/driver.c @@ -224,8 +224,8 @@ mrb_init_test_driver(mrb_state *mrb, mrb_bool verbose) mrb_define_const(mrb, mrbtest, "FIXNUM_MIN", mrb_fixnum_value(MRB_INT_MIN)); mrb_define_const(mrb, mrbtest, "FIXNUM_BIT", mrb_fixnum_value(MRB_INT_BIT)); -#ifndef MRB_WITHOUT_FLOAT -#ifdef MRB_USE_FLOAT +#ifndef MRB_NO_FLOAT +#ifdef MRB_USE_FLOAT32 mrb_define_const(mrb, mrbtest, "FLOAT_TOLERANCE", mrb_float_value(mrb, 1e-6)); #else mrb_define_const(mrb, mrbtest, "FLOAT_TOLERANCE", mrb_float_value(mrb, 1e-12)); diff --git a/mrbgems/mruby-test/vformat.c b/mrbgems/mruby-test/vformat.c index e7ada02da..d73e52311 100644 --- a/mrbgems/mruby-test/vformat.c +++ b/mrbgems/mruby-test/vformat.c @@ -48,7 +48,7 @@ vf_s_format_d(mrb_state *mrb, mrb_value klass) return mrb_format(mrb, fmt, d); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* f float */ static mrb_value vf_s_format_f(mrb_state *mrb, mrb_value klass) @@ -167,7 +167,7 @@ mrb_init_test_vformat(mrb_state *mrb) VF_DEFINE_FORMAT_METHOD(c); VF_DEFINE_FORMAT_METHOD(d); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT VF_DEFINE_FORMAT_METHOD(f); #endif VF_DEFINE_FORMAT_METHOD(i); diff --git a/mrbgems/mruby-time/src/time.c b/mrbgems/mruby-time/src/time.c index 3655695cf..3d5cdca2e 100644 --- a/mrbgems/mruby-time/src/time.c +++ b/mrbgems/mruby-time/src/time.c @@ -4,7 +4,7 @@ ** See Copyright Notice in mruby.h */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #include #endif @@ -30,7 +30,7 @@ double round(double x) { } #endif -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT # if !defined(__MINGW64__) && defined(_WIN32) # define llround(x) round(x) # endif @@ -199,7 +199,7 @@ struct mrb_time { static const struct mrb_data_type mrb_time_type = { "Time", mrb_free }; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT void mrb_check_num_exact(mrb_state *mrb, mrb_float num); typedef mrb_float mrb_sec; #define mrb_sec_value(mrb, sec) mrb_float_value(mrb, sec) @@ -231,7 +231,7 @@ mrb_to_time_t(mrb_state *mrb, mrb_value obj, time_t *usec) time_t t; switch (mrb_type(obj)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: { mrb_float f = mrb_float(obj); @@ -250,7 +250,7 @@ mrb_to_time_t(mrb_state *mrb, mrb_value obj, time_t *usec) } } break; -#endif /* MRB_WITHOUT_FLOAT */ +#endif /* MRB_NO_FLOAT */ default: case MRB_TT_FIXNUM: { @@ -572,7 +572,7 @@ mrb_time_minus(mrb_state *mrb, mrb_value self) tm = time_get_ptr(mrb, self); tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time); if (tm2) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_float f; f = (mrb_sec)(tm->sec - tm2->sec) + (mrb_sec)(tm->usec - tm2->usec) / 1.0e6; @@ -843,7 +843,7 @@ mrb_time_sec(mrb_state *mrb, mrb_value self) return mrb_fixnum_value(tm->datetime.tm_sec); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* 15.2.19.7.24 */ /* Returns a Float with the time since the epoch in seconds. */ static mrb_value @@ -864,7 +864,7 @@ mrb_time_to_i(mrb_state *mrb, mrb_value self) struct mrb_time *tm; tm = time_get_ptr(mrb, self); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (!fixable_time_t_p(tm->sec)) { return mrb_float_value(mrb, (mrb_float)tm->sec); } @@ -880,7 +880,7 @@ mrb_time_usec(mrb_state *mrb, mrb_value self) struct mrb_time *tm; tm = time_get_ptr(mrb, self); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (!fixable_time_t_p(tm->usec)) { return mrb_float_value(mrb, (mrb_float)tm->usec); } @@ -995,7 +995,7 @@ mrb_mruby_time_gem_init(mrb_state* mrb) mrb_define_method(mrb, tc, "sec" , mrb_time_sec, MRB_ARGS_NONE()); /* 15.2.19.7.23 */ mrb_define_method(mrb, tc, "to_i", mrb_time_to_i, MRB_ARGS_NONE()); /* 15.2.19.7.25 */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_define_method(mrb, tc, "to_f", mrb_time_to_f, MRB_ARGS_NONE()); /* 15.2.19.7.24 */ #endif mrb_define_method(mrb, tc, "usec", mrb_time_usec, MRB_ARGS_NONE()); /* 15.2.19.7.26 */ diff --git a/src/array.c b/src/array.c index 285600969..432599bf7 100644 --- a/src/array.c +++ b/src/array.c @@ -825,7 +825,7 @@ aget_index(mrb_state *mrb, mrb_value index) if (mrb_fixnum_p(index)) { return mrb_fixnum(index); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT else if (mrb_float_p(index)) { return (mrb_int)mrb_float(index); } diff --git a/src/class.c b/src/class.c index 455a1b4e1..845246e97 100644 --- a/src/class.c +++ b/src/class.c @@ -899,7 +899,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) } } break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case 'f': { mrb_float *p; @@ -1343,7 +1343,7 @@ mrb_singleton_class_ptr(mrb_state *mrb, mrb_value v) return mrb->object_class; case MRB_TT_SYMBOL: case MRB_TT_FIXNUM: -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: #endif return NULL; diff --git a/src/dump.c b/src/dump.c index 3bc95f629..489e70f8a 100644 --- a/src/dump.c +++ b/src/dump.c @@ -13,8 +13,8 @@ #include #include -#ifndef MRB_WITHOUT_FLOAT -#ifdef MRB_USE_FLOAT +#ifndef MRB_NO_FLOAT +#ifdef MRB_USE_FLOAT32 #define MRB_FLOAT_FMT "%.9g" #else #define MRB_FLOAT_FMT "%.17g" @@ -88,7 +88,7 @@ write_iseq_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf, uint8_t fla return cur - buf; } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static mrb_value float_to_str(mrb_state *mrb, mrb_float f) { @@ -131,7 +131,7 @@ get_pool_block_size(mrb_state *mrb, const mrb_irep *irep) break; case IREP_TT_FLOAT: -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT { mrb_value str = float_to_str(mrb, irep->pool[pool_no].u.f); mrb_int len = RSTRING_LEN(str); @@ -192,7 +192,7 @@ write_pool_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) case IREP_TT_FLOAT: cur += uint8_to_bin(IREP_TT_FLOAT, cur); /* data type */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT { mrb_value str = float_to_str(mrb, irep->pool[pool_no].u.f); ptr = RSTRING_PTR(str); diff --git a/src/error.c b/src/error.c index 742049ace..b6a82f867 100644 --- a/src/error.c +++ b/src/error.c @@ -288,7 +288,7 @@ mrb_vformat(mrb_state *mrb, const char *format, va_list ap) #endif obj = mrb_fixnum_value(i); goto L_cat_obj; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case 'f': obj = mrb_float_value(mrb, (mrb_float)va_arg(ap, double)); goto L_cat_obj; diff --git a/src/etc.c b/src/etc.c index a1e384717..b0019e6de 100644 --- a/src/etc.c +++ b/src/etc.c @@ -70,7 +70,7 @@ mrb_obj_to_sym(mrb_state *mrb, mrb_value name) } MRB_API mrb_int -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_fixnum_id(mrb_int f) #else mrb_float_id(mrb_float f) @@ -80,7 +80,7 @@ mrb_float_id(mrb_float f) int len = sizeof(f); uint32_t id = 0; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* normalize -0.0 to 0.0 */ if (f == 0) f = 0.0; #endif @@ -115,7 +115,7 @@ mrb_obj_id(mrb_value obj) case MRB_TT_SYMBOL: return MakeID(mrb_symbol(obj)); case MRB_TT_FIXNUM: -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT return MakeID(mrb_fixnum_id(mrb_fixnum(obj))); #else return MakeID2(mrb_float_id((mrb_float)mrb_fixnum(obj)), MRB_TT_FLOAT); @@ -147,7 +147,7 @@ mrb_obj_id(mrb_value obj) #ifdef MRB_WORD_BOXING #define mrb_xxx_boxing_cptr_value mrb_word_boxing_cptr_value -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_API mrb_value mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f) { @@ -158,7 +158,7 @@ mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f) MRB_SET_FROZEN_FLAG(v.bp); return v.w; } -#endif /* MRB_WITHOUT_FLOAT */ +#endif /* MRB_NO_FLOAT */ #endif /* MRB_WORD_BOXING */ #if defined(MRB_WORD_BOXING) || (defined(MRB_NAN_BOXING) && defined(MRB_64BIT)) diff --git a/src/fmt_fp.c b/src/fmt_fp.c index 81ace6ec8..2c1e13c36 100644 --- a/src/fmt_fp.c +++ b/src/fmt_fp.c @@ -1,4 +1,4 @@ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #if defined(MRB_DISABLE_STDIO) || defined(_WIN32) || defined(_WIN64) /* diff --git a/src/gc.c b/src/gc.c index 17f7e81e4..50269f95c 100644 --- a/src/gc.c +++ b/src/gc.c @@ -122,7 +122,7 @@ typedef struct { struct RException exc; struct RBreak brk; #ifdef MRB_WORD_BOXING -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT struct RFloat floatv; #endif struct RCptr cptr; @@ -784,7 +784,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end) /* cannot happen */ return; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: #ifdef MRB_WORD_BOXING break; @@ -929,7 +929,7 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc) mrb_gc_mark(mrb, (struct RBasic*)mrb->hash_class); mrb_gc_mark(mrb, (struct RBasic*)mrb->range_class); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_gc_mark(mrb, (struct RBasic*)mrb->float_class); #endif mrb_gc_mark(mrb, (struct RBasic*)mrb->fixnum_class); diff --git a/src/hash.c b/src/hash.c index 72ed3c731..2eef4afaf 100644 --- a/src/hash.c +++ b/src/hash.c @@ -11,7 +11,7 @@ #include #include -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* a function to get hash value of a float number */ mrb_int mrb_float_id(mrb_float f); #endif @@ -65,7 +65,7 @@ ht_hash_func(mrb_state *mrb, htable *t, mrb_value key) case MRB_TT_FALSE: case MRB_TT_SYMBOL: case MRB_TT_FIXNUM: -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: #endif h = (size_t)mrb_obj_id(key); @@ -99,7 +99,7 @@ ht_hash_equal(mrb_state *mrb, htable *t, mrb_value a, mrb_value b) switch (mrb_type(b)) { case MRB_TT_FIXNUM: return mrb_fixnum(a) == mrb_fixnum(b); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: return (mrb_float)mrb_fixnum(a) == mrb_float(b); #endif @@ -107,7 +107,7 @@ ht_hash_equal(mrb_state *mrb, htable *t, mrb_value a, mrb_value b) return FALSE; } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: switch (mrb_type(b)) { case MRB_TT_FIXNUM: diff --git a/src/load.c b/src/load.c index 67217b128..b06b9ff37 100644 --- a/src/load.c +++ b/src/load.c @@ -39,7 +39,7 @@ offset_crc_body(void) return ((uint8_t *)header.binary_crc - (uint8_t *)&header) + sizeof(header.binary_crc); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT double mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck); static double @@ -165,7 +165,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag #endif case IREP_TT_FLOAT: -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT pool[i].tt = tt; pool_data_len = bin_to_uint16(src); /* pool data length */ src += sizeof(uint16_t); @@ -173,7 +173,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag src += pool_data_len; break; #else - return NULL; /* MRB_WITHOUT_FLOAT */ + return NULL; /* MRB_NO_FLOAT */ #endif case IREP_TT_STR: diff --git a/src/numeric.c b/src/numeric.c index 195bd40cf..f4ad116a4 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -4,7 +4,7 @@ ** See Copyright Notice in mruby.h */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #include #include #endif @@ -18,8 +18,8 @@ #include #include -#ifndef MRB_WITHOUT_FLOAT -#ifdef MRB_USE_FLOAT +#ifndef MRB_NO_FLOAT +#ifdef MRB_USE_FLOAT32 #define trunc(f) truncf(f) #define floor(f) floorf(f) #define ceil(f) ceilf(f) @@ -30,7 +30,7 @@ #endif #endif -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_API mrb_float mrb_to_flo(mrb_state *mrb, mrb_value val) { @@ -68,7 +68,7 @@ static mrb_value integral_pow(mrb_state *mrb, mrb_value x) { mrb_value y = mrb_get_arg1(mrb); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_float d; #endif @@ -79,7 +79,7 @@ integral_pow(mrb_state *mrb, mrb_value x) mrb_int result = 1; if (exp < 0) -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT return mrb_fixnum_value(0); #else goto float_pow; @@ -87,7 +87,7 @@ integral_pow(mrb_state *mrb, mrb_value x) for (;;) { if (exp & 1) { if (mrb_int_mul_overflow(result, base, &result)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT goto float_pow; #endif } @@ -95,14 +95,14 @@ integral_pow(mrb_state *mrb, mrb_value x) exp >>= 1; if (exp == 0) break; if (mrb_int_mul_overflow(base, base, &base)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT goto float_pow; #endif } } return mrb_fixnum_value(result); } -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value"); #else float_pow: @@ -114,7 +114,7 @@ integral_pow(mrb_state *mrb, mrb_value x) static mrb_value integral_idiv(mrb_state *mrb, mrb_value x) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_value y = mrb_get_arg1(mrb); if (!mrb_fixnum_p(y)) { @@ -151,7 +151,7 @@ integral_idiv(mrb_state *mrb, mrb_value x) static mrb_value integral_div(mrb_state *mrb, mrb_value xv) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_int y; mrb_get_args(mrb, "i", &y); @@ -184,7 +184,7 @@ integral_coerce_step_counter(mrb_state *mrb, mrb_value self) mrb_get_args(mrb, "oo", &num, &step); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (mrb_float_p(self) || mrb_float_p(num) || mrb_float_p(step)) { return mrb_Float(mrb, self); } @@ -193,7 +193,7 @@ integral_coerce_step_counter(mrb_state *mrb, mrb_value self) return self; } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /******************************************************************** * * Document-class: Float @@ -386,7 +386,7 @@ fix_eql(mrb_state *mrb, mrb_value x) return mrb_bool_value(mrb_fixnum(x) == mrb_fixnum(y)); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static mrb_value flo_eql(mrb_state *mrb, mrb_value x) { @@ -803,13 +803,13 @@ fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y) if (a == 0) return x; b = mrb_fixnum(y); if (mrb_int_mul_overflow(a, b, &c)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT return mrb_float_value(mrb, (mrb_float)a * (mrb_float)b); #endif } return mrb_fixnum_value(c); } -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value"); #else return mrb_float_value(mrb, (mrb_float)a * mrb_to_flo(mrb, y)); @@ -822,7 +822,7 @@ mrb_num_mul(mrb_state *mrb, mrb_value x, mrb_value y) if (mrb_fixnum_p(x)) { return fixnum_mul(mrb, x, y); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (mrb_float_p(x)) { return mrb_float_value(mrb, mrb_float(x) * mrb_to_flo(mrb, y)); } @@ -898,7 +898,7 @@ fix_mod(mrb_state *mrb, mrb_value x) mrb_int mod; if (b == 0) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT /* ZeroDivisionError */ return mrb_fixnum_value(0); #else @@ -910,7 +910,7 @@ fix_mod(mrb_state *mrb, mrb_value x) fixdivmod(mrb, a, b, NULL, &mod); return mrb_fixnum_value(mod); } -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value"); #else else { @@ -937,7 +937,7 @@ fix_divmod(mrb_state *mrb, mrb_value x) mrb_int div, mod; if (mrb_fixnum(y) == 0) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT return mrb_assoc_new(mrb, mrb_fixnum_value(0), mrb_fixnum_value(0)); #else return mrb_assoc_new(mrb, ((mrb_fixnum(x) == 0) ? @@ -949,7 +949,7 @@ fix_divmod(mrb_state *mrb, mrb_value x) fixdivmod(mrb, mrb_fixnum(x), mrb_fixnum(y), &div, &mod); return mrb_assoc_new(mrb, mrb_fixnum_value(div), mrb_fixnum_value(mod)); } -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value"); #else else { @@ -964,7 +964,7 @@ fix_divmod(mrb_state *mrb, mrb_value x) #endif } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static mrb_value flo_divmod(mrb_state *mrb, mrb_value x) { @@ -999,7 +999,7 @@ fix_equal(mrb_state *mrb, mrb_value x) switch (mrb_type(y)) { case MRB_TT_FIXNUM: return mrb_bool_value(mrb_fixnum(x) == mrb_fixnum(y)); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: return mrb_bool_value((mrb_float)mrb_fixnum(x) == mrb_float(y)); #endif @@ -1027,7 +1027,7 @@ fix_rev(mrb_state *mrb, mrb_value num) return mrb_fixnum_value(~val); } -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT #define bit_op(x,y,op1,op2) do {\ return mrb_fixnum_value(mrb_fixnum(x) op2 mrb_fixnum(y));\ } while(0) @@ -1095,7 +1095,7 @@ static mrb_value lshift(mrb_state *mrb, mrb_int val, mrb_int width) { if (width < 0) { /* mrb_int overflow */ -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT return mrb_fixnum_value(0); #else return mrb_float_value(mrb, INFINITY); @@ -1104,7 +1104,7 @@ lshift(mrb_state *mrb, mrb_int val, mrb_int width) if (val > 0) { if ((width > NUMERIC_SHIFT_WIDTH_MAX) || (val > (MRB_INT_MAX >> width))) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT return mrb_fixnum_value(-1); #else goto bit_overflow; @@ -1115,7 +1115,7 @@ lshift(mrb_state *mrb, mrb_int val, mrb_int width) else { if ((width > NUMERIC_SHIFT_WIDTH_MAX) || (val <= (MRB_INT_MIN >> width))) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT return mrb_fixnum_value(0); #else goto bit_overflow; @@ -1124,7 +1124,7 @@ lshift(mrb_state *mrb, mrb_int val, mrb_int width) return mrb_fixnum_value(val * ((mrb_int)1 << width)); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT bit_overflow: { mrb_float f = (mrb_float)val; @@ -1210,7 +1210,7 @@ fix_rshift(mrb_state *mrb, mrb_value x) * */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static mrb_value fix_to_f(mrb_state *mrb, mrb_value num) { @@ -1267,13 +1267,13 @@ fixnum_plus(mrb_state *mrb, mrb_value x, mrb_value y) if (a == 0) return y; b = mrb_fixnum(y); if (mrb_int_add_overflow(a, b, &c)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT return mrb_float_value(mrb, (mrb_float)a + (mrb_float)b); #endif } return mrb_fixnum_value(c); } -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value"); #else return mrb_float_value(mrb, (mrb_float)a + mrb_to_flo(mrb, y)); @@ -1286,7 +1286,7 @@ mrb_num_plus(mrb_state *mrb, mrb_value x, mrb_value y) if (mrb_fixnum_p(x)) { return fixnum_plus(mrb, x, y); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (mrb_float_p(x)) { return mrb_float_value(mrb, mrb_float(x) + mrb_to_flo(mrb, y)); } @@ -1323,13 +1323,13 @@ fixnum_minus(mrb_state *mrb, mrb_value x, mrb_value y) b = mrb_fixnum(y); if (mrb_int_sub_overflow(a, b, &c)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT return mrb_float_value(mrb, (mrb_float)a - (mrb_float)b); #endif } return mrb_fixnum_value(c); } -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value"); #else return mrb_float_value(mrb, (mrb_float)a - mrb_to_flo(mrb, y)); @@ -1342,7 +1342,7 @@ mrb_num_minus(mrb_state *mrb, mrb_value x, mrb_value y) if (mrb_fixnum_p(x)) { return fixnum_minus(mrb, x, y); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (mrb_float_p(x)) { return mrb_float_value(mrb, mrb_float(x) - mrb_to_flo(mrb, y)); } @@ -1431,26 +1431,26 @@ fix_to_s(mrb_state *mrb, mrb_value self) static mrb_int cmpnum(mrb_state *mrb, mrb_value v1, mrb_value v2) { -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT mrb_int x, y; #else mrb_float x, y; #endif -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT x = mrb_fixnum(v1); #else x = mrb_to_flo(mrb, v1); #endif switch (mrb_type(v2)) { case MRB_TT_FIXNUM: -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT y = mrb_fixnum(v2); #else y = (mrb_float)mrb_fixnum(v2); #endif break; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: y = mrb_float(v2); break; @@ -1585,7 +1585,7 @@ num_infinite_p(mrb_state *mrb, mrb_value self) * Returns a new float which is the sum of float * and other. */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT static mrb_value flo_plus(mrb_state *mrb, mrb_value x) { @@ -1600,7 +1600,7 @@ void mrb_init_numeric(mrb_state *mrb) { struct RClass *numeric, *integer, *fixnum, *integral; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT struct RClass *fl; #endif @@ -1627,7 +1627,7 @@ mrb_init_numeric(mrb_state *mrb) mrb_undef_class_method(mrb, integer, "new"); mrb_define_method(mrb, integer, "to_i", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.24 */ mrb_define_method(mrb, integer, "to_int", int_to_i, MRB_ARGS_NONE()); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_define_method(mrb, integer, "ceil", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.8 (x) */ mrb_define_method(mrb, integer, "floor", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.10 (x) */ mrb_define_method(mrb, integer, "round", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.12 (x) */ @@ -1648,14 +1648,14 @@ mrb_init_numeric(mrb_state *mrb) mrb_define_method(mrb, fixnum, "<<", fix_lshift, MRB_ARGS_REQ(1)); /* 15.2.8.3.12 */ mrb_define_method(mrb, fixnum, ">>", fix_rshift, MRB_ARGS_REQ(1)); /* 15.2.8.3.13 */ mrb_define_method(mrb, fixnum, "eql?", fix_eql, MRB_ARGS_REQ(1)); /* 15.2.8.3.16 */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_define_method(mrb, fixnum, "to_f", fix_to_f, MRB_ARGS_NONE()); /* 15.2.8.3.23 */ #endif mrb_define_method(mrb, fixnum, "to_s", fix_to_s, MRB_ARGS_OPT(1)); /* 15.2.8.3.25 */ mrb_define_method(mrb, fixnum, "inspect", fix_to_s, MRB_ARGS_OPT(1)); mrb_define_method(mrb, fixnum, "divmod", fix_divmod, MRB_ARGS_REQ(1)); /* 15.2.8.3.30 (x) */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* Float Class */ mrb->float_class = fl = mrb_define_class(mrb, "Float", numeric); /* 15.2.9 */ MRB_SET_INSTANCE_TT(fl, MRB_TT_FLOAT); diff --git a/src/object.c b/src/object.c index fd1f9e215..634f70830 100644 --- a/src/object.c +++ b/src/object.c @@ -24,7 +24,7 @@ mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2) case MRB_TT_SYMBOL: return (mrb_symbol(v1) == mrb_symbol(v2)); -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: return (mrb_float(v1) == mrb_float(v2)); #endif @@ -47,7 +47,7 @@ mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2) mrb_value result; if (mrb_obj_eq(mrb, obj1, obj2)) return TRUE; -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* value mixing with integer and float */ if (mrb_fixnum_p(obj1)) { if (mrb_float_p(obj2) && (mrb_float)mrb_fixnum(obj1) == mrb_float(obj2)) @@ -330,7 +330,7 @@ static const struct types { {MRB_TT_ICLASS, "iClass"}, /* internal use: mixed-in module holder */ {MRB_TT_SCLASS, "SClass"}, {MRB_TT_PROC, "Proc"}, -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT {MRB_TT_FLOAT, "Float"}, #endif {MRB_TT_ARRAY, "Array"}, @@ -510,7 +510,7 @@ mrb_to_int(mrb_state *mrb, mrb_value val) { if (!mrb_fixnum_p(val)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (mrb_float_p(val)) { return mrb_flo_to_fixnum(mrb, val); } @@ -530,7 +530,7 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, mrb_int base) mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Integer"); } switch (mrb_type(val)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case MRB_TT_FLOAT: if (base != 0) goto arg_error; return mrb_flo_to_fixnum(mrb, val); @@ -566,7 +566,7 @@ mrb_Integer(mrb_state *mrb, mrb_value val) return mrb_convert_to_integer(mrb, val, 0); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT MRB_API mrb_value mrb_Float(mrb_state *mrb, mrb_value val) { diff --git a/src/range.c b/src/range.c index 868d3d397..8f09eda24 100644 --- a/src/range.c +++ b/src/range.c @@ -23,7 +23,7 @@ r_check(mrb_state *mrb, mrb_value a, mrb_value b) ta = mrb_type(a); tb = mrb_type(b); -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT if (ta == MRB_TT_FIXNUM && tb == MRB_TT_FIXNUM ) { #else if ((ta == MRB_TT_FIXNUM || ta == MRB_TT_FLOAT) && diff --git a/src/string.c b/src/string.c index 73e514f41..f15770403 100644 --- a/src/string.c +++ b/src/string.c @@ -8,7 +8,7 @@ # define _CRT_NONSTDC_NO_DEPRECATE #endif -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #include #include #endif @@ -2365,7 +2365,7 @@ mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, mrb_int base, i n *= base; n += c; if (n > (uint64_t)MRB_INT_MAX + (sign ? 0 : 1)) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (base == 10) { return mrb_float_value(mrb, mrb_str_to_dbl(mrb, mrb_str_new(mrb, str, len), badcheck)); } @@ -2476,7 +2476,7 @@ mrb_str_to_i(mrb_state *mrb, mrb_value self) return mrb_str_to_inum(mrb, self, base, FALSE); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT double mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck) { @@ -2937,7 +2937,7 @@ mrb_init_string(mrb_state *mrb) mrb_define_method(mrb, s, "slice", mrb_str_aref_m, MRB_ARGS_ANY()); /* 15.2.10.5.34 */ mrb_define_method(mrb, s, "split", mrb_str_split_m, MRB_ARGS_ANY()); /* 15.2.10.5.35 */ -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT mrb_define_method(mrb, s, "to_f", mrb_str_to_f, MRB_ARGS_NONE()); /* 15.2.10.5.38 */ #endif mrb_define_method(mrb, s, "to_i", mrb_str_to_i, MRB_ARGS_ANY()); /* 15.2.10.5.39 */ @@ -2954,7 +2954,7 @@ mrb_init_string(mrb_state *mrb) mrb_define_method(mrb, s, "byteslice", mrb_str_byteslice, MRB_ARGS_ARG(1,1)); } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT /* * Source code for the "strtod" library procedure. * diff --git a/src/vm.c b/src/vm.c index 87606c1b4..48dea94fb 100644 --- a/src/vm.c +++ b/src/vm.c @@ -6,7 +6,7 @@ #include #include -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT #include #endif #include @@ -1101,7 +1101,7 @@ RETRY_TRY_BLOCK: } goto L_RAISE; #endif -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT case IREP_TT_FLOAT: regs[a] = mrb_float_value(mrb, pool[b].u.f); break; @@ -2265,7 +2265,7 @@ RETRY_TRY_BLOCK: SET_INT_VALUE(regs[a], z); \ } \ break -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT #define OP_MATH_CASE_FLOAT(op_name, t1, t2) (void)0 #define OP_MATH_OVERFLOW_INT(op_name, x, y, z) SET_INT_VALUE(regs[a], z) #else @@ -2305,14 +2305,14 @@ RETRY_TRY_BLOCK: } CASE(OP_DIV, B) { -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT double x, y, f; #endif /* need to check if op is overridden */ switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) { case TYPES2(MRB_TT_FIXNUM,MRB_TT_FIXNUM): -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT { mrb_int x = mrb_fixnum(regs[a]); mrb_int y = mrb_fixnum(regs[a+1]); @@ -2342,7 +2342,7 @@ RETRY_TRY_BLOCK: goto L_SEND_SYM; } -#ifndef MRB_WITHOUT_FLOAT +#ifndef MRB_NO_FLOAT if (y == 0) { if (x > 0) f = INFINITY; else if (x < 0) f = -INFINITY; @@ -2378,7 +2378,7 @@ RETRY_TRY_BLOCK: SET_INT_VALUE(regs[a], z); \ } \ break -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT #define OP_MATHI_CASE_FLOAT(op_name) (void)0 #else #define OP_MATHI_CASE_FLOAT(op_name) \ @@ -2400,7 +2400,7 @@ RETRY_TRY_BLOCK: #define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1])) -#ifdef MRB_WITHOUT_FLOAT +#ifdef MRB_NO_FLOAT #define OP_CMP(op,sym) do {\ int result;\ /* need to check if - is overridden */\ diff --git a/target/RX630.rb b/target/RX630.rb index 8b1bbb42f..1b1f425c1 100644 --- a/target/RX630.rb +++ b/target/RX630.rb @@ -30,7 +30,7 @@ MRuby::CrossBuild.new("RX630") do |conf| cc.compile_options = %Q[%{flags} -o "%{outfile}" -c "%{infile}"] #configuration for low memory environment - cc.defines << %w(MRB_USE_FLOAT) + cc.defines << %w(MRB_USE_FLOAT32) cc.defines << %w(MRB_HEAP_PAGE_SIZE=64) cc.defines << %w(KHASH_DEFAULT_SIZE=8) cc.defines << %w(MRB_STR_BUF_MIN_SIZE=20) diff --git a/tasks/gitlab.rake b/tasks/gitlab.rake index 377b1cc9d..5c7b3d8c5 100644 --- a/tasks/gitlab.rake +++ b/tasks/gitlab.rake @@ -62,10 +62,10 @@ task :gitlab_config do configs = [] [true, false].each do |mode_32| - ['', 'MRB_USE_FLOAT'].each do |float_conf| + ['', 'MRB_USE_FLOAT32'].each do |float_conf| ['', 'MRB_NAN_BOXING', 'MRB_WORD_BOXING'].each do |boxing_conf| ['', 'MRB_UTF8_STRING'].each do |utf8_conf| - next if (float_conf == 'MRB_USE_FLOAT') && (boxing_conf == 'MRB_NAN_BOXING') + next if (float_conf == 'MRB_USE_FLOAT32') && (boxing_conf == 'MRB_NAN_BOXING') next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_NAN_BOXING') next if (int_conf == 'MRB_INT64') && (boxing_conf == 'MRB_WORD_BOXING') && mode_32 env = [float_conf, int_conf, boxing_conf, utf8_conf].map do |conf| diff --git a/test/t/float.rb b/test/t/float.rb index dc989636f..1cbc90532 100644 --- a/test/t/float.rb +++ b/test/t/float.rb @@ -207,7 +207,7 @@ assert('Float#>>') do end assert('Float#to_s') do - uses_float = 4e38.infinite? # enable MRB_USE_FLOAT? + uses_float = 4e38.infinite? # enable MRB_USE_FLOAT32? assert_equal("Infinity", Float::INFINITY.to_s) assert_equal("-Infinity", (-Float::INFINITY).to_s) -- cgit v1.2.3 From 7e3d22f09569b920c8e3dd31d7a0d03e925a06cc Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 27 Aug 2020 10:23:50 +0900 Subject: Raname `mrb_exc_new_str_lit()` to `mrb_exc_new_lit()`. It uses `mrb_str_new_lit()` internally, but it doesn't need to express it in the name of the function (macro). --- include/mruby/error.h | 3 ++- mrbgems/mruby-compiler/core/parse.y | 4 ++-- mrbgems/mruby-compiler/core/y.tab.c | 4 ++-- src/error.c | 6 +++--- src/load.c | 2 +- src/vm.c | 18 +++++++++--------- 6 files changed, 19 insertions(+), 18 deletions(-) (limited to 'src/load.c') diff --git a/include/mruby/error.h b/include/mruby/error.h index b607dd957..9ad115f4b 100644 --- a/include/mruby/error.h +++ b/include/mruby/error.h @@ -23,7 +23,8 @@ struct RException { MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg); MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str); -#define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit)) +#define mrb_exc_new_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit)) +#define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_str_lit(mrb, c, lit) MRB_API mrb_value mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv); MRB_API mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc); MRB_API mrb_value mrb_get_backtrace(mrb_state *mrb); diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index b2bf8263f..fe54afbbe 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -6575,7 +6575,7 @@ mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c) } else { if (mrb->exc == NULL) { - mrb->exc = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, E_SYNTAX_ERROR, "syntax error")); + mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SYNTAX_ERROR, "syntax error")); } mrb_parser_free(p); return mrb_undef_value(); @@ -6585,7 +6585,7 @@ mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c) mrb_parser_free(p); if (proc == NULL) { if (mrb->exc == NULL) { - mrb->exc = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, E_SCRIPT_ERROR, "codegen error")); + mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SCRIPT_ERROR, "codegen error")); } return mrb_undef_value(); } diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 28a06472f..18b102018 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -12467,7 +12467,7 @@ mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c) } else { if (mrb->exc == NULL) { - mrb->exc = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, E_SYNTAX_ERROR, "syntax error")); + mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SYNTAX_ERROR, "syntax error")); } mrb_parser_free(p); return mrb_undef_value(); @@ -12477,7 +12477,7 @@ mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c) mrb_parser_free(p); if (proc == NULL) { if (mrb->exc == NULL) { - mrb->exc = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, E_SCRIPT_ERROR, "codegen error")); + mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SCRIPT_ERROR, "codegen error")); } return mrb_undef_value(); } diff --git a/src/error.c b/src/error.c index b6a82f867..b19f0ea43 100644 --- a/src/error.c +++ b/src/error.c @@ -622,11 +622,11 @@ mrb_init_exception(mrb_state *mrb) script_error = mrb_define_class(mrb, "ScriptError", mrb->eException_class); /* 15.2.37 */ mrb_define_class(mrb, "SyntaxError", script_error); /* 15.2.38 */ stack_error = mrb_define_class(mrb, "SystemStackError", exception); - mrb->stack_err = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, stack_error, "stack level too deep")); + mrb->stack_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, stack_error, "stack level too deep")); nomem_error = mrb_define_class(mrb, "NoMemoryError", exception); - mrb->nomem_err = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, nomem_error, "Out of memory")); + mrb->nomem_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, nomem_error, "Out of memory")); #ifdef MRB_GC_FIXED_ARENA - mrb->arena_err = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, nomem_error, "arena overflow error")); + mrb->arena_err = mrb_obj_ptr(mrb_exc_new_lit(mrb, nomem_error, "arena overflow error")); #endif } diff --git a/src/load.c b/src/load.c index b06b9ff37..2cc0f7557 100644 --- a/src/load.c +++ b/src/load.c @@ -625,7 +625,7 @@ void mrb_exc_set(mrb_state *mrb, mrb_value exc); static void irep_error(mrb_state *mrb) { - mrb_exc_set(mrb, mrb_exc_new_str_lit(mrb, E_SCRIPT_ERROR, "irep load error")); + mrb_exc_set(mrb, mrb_exc_new_lit(mrb, E_SCRIPT_ERROR, "irep load error")); } void mrb_codedump_all(mrb_state*, struct RProc*); diff --git a/src/vm.c b/src/vm.c index 52895bd28..7c14b40dd 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1016,7 +1016,7 @@ static mrb_bool check_target_class(mrb_state *mrb) { if (!mrb->c->ci->target_class) { - mrb_value exc = mrb_exc_new_str_lit(mrb, E_TYPE_ERROR, "no target class or module"); + mrb_value exc = mrb_exc_new_lit(mrb, E_TYPE_ERROR, "no target class or module"); mrb_exc_set(mrb, exc); return FALSE; } @@ -1096,7 +1096,7 @@ RETRY_TRY_BLOCK: } #endif { - mrb_value exc = mrb_exc_new_str_lit(mrb, E_RUNTIME_ERROR, "integer overflow"); + mrb_value exc = mrb_exc_new_lit(mrb, E_RUNTIME_ERROR, "integer overflow"); mrb_exc_set(mrb, exc); } goto L_RAISE; @@ -1357,7 +1357,7 @@ RETRY_TRY_BLOCK: { mrb_value exc; - exc = mrb_exc_new_str_lit(mrb, E_TYPE_ERROR, + exc = mrb_exc_new_lit(mrb, E_TYPE_ERROR, "class or module required for rescue clause"); mrb_exc_set(mrb, exc); goto L_RAISE; @@ -1585,21 +1585,21 @@ RETRY_TRY_BLOCK: mrb_assert(bidx < irep->nregs); if (mid == 0 || !target_class) { - mrb_value exc = mrb_exc_new_str_lit(mrb, E_NOMETHOD_ERROR, "super called outside of method"); + mrb_value exc = mrb_exc_new_lit(mrb, E_NOMETHOD_ERROR, "super called outside of method"); mrb_exc_set(mrb, exc); goto L_RAISE; } if (target_class->tt == MRB_TT_MODULE) { target_class = ci->target_class; if (target_class->tt != MRB_TT_ICLASS) { - mrb_value exc = mrb_exc_new_str_lit(mrb, E_RUNTIME_ERROR, "superclass info lost [mruby limitations]"); + mrb_value exc = mrb_exc_new_lit(mrb, E_RUNTIME_ERROR, "superclass info lost [mruby limitations]"); mrb_exc_set(mrb, exc); goto L_RAISE; } } recv = regs[0]; if (!mrb_obj_is_kind_of(mrb, recv, target_class)) { - mrb_value exc = mrb_exc_new_str_lit(mrb, E_TYPE_ERROR, + mrb_value exc = mrb_exc_new_lit(mrb, E_TYPE_ERROR, "self has wrong type to call super in this context"); mrb_exc_set(mrb, exc); goto L_RAISE; @@ -1700,7 +1700,7 @@ RETRY_TRY_BLOCK: mrb_value exc; L_NOSUPER: - exc = mrb_exc_new_str_lit(mrb, E_NOMETHOD_ERROR, "super called outside of method"); + exc = mrb_exc_new_lit(mrb, E_NOMETHOD_ERROR, "super called outside of method"); mrb_exc_set(mrb, exc); goto L_RAISE; } @@ -2066,7 +2066,7 @@ RETRY_TRY_BLOCK: goto CHECKPOINT_LABEL_MAKE(RBREAK_TAG_STOP); } if (c->prev->ci == c->prev->cibase) { - mrb_value exc = mrb_exc_new_str_lit(mrb, E_FIBER_ERROR, "double resume"); + mrb_value exc = mrb_exc_new_lit(mrb, E_FIBER_ERROR, "double resume"); mrb_exc_set(mrb, exc); goto L_RAISE; } @@ -2099,7 +2099,7 @@ RETRY_TRY_BLOCK: mrb_value exc; L_BREAK_ERROR: - exc = mrb_exc_new_str_lit(mrb, E_LOCALJUMP_ERROR, + exc = mrb_exc_new_lit(mrb, E_LOCALJUMP_ERROR, "break from proc-closure"); mrb_exc_set(mrb, exc); goto L_RAISE; -- cgit v1.2.3 From 471479e723157c1a7df2023ab2eea24fa4ca2246 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 28 Aug 2020 17:33:16 +0900 Subject: Change float representation in `mrb` binary files. From human readable (ASCII) string representation to binary dump of IEEE754 in little endian. --- include/mruby/endian.h | 44 +++++++++++++++++++++++++++++++++++++++++++ mrbgems/mruby-pack/src/pack.c | 33 +------------------------------- src/dump.c | 35 ++++++++++++++++++++-------------- src/load.c | 26 +++++++++++++++++-------- 4 files changed, 84 insertions(+), 54 deletions(-) create mode 100644 include/mruby/endian.h (limited to 'src/load.c') diff --git a/include/mruby/endian.h b/include/mruby/endian.h new file mode 100644 index 000000000..477f3bc94 --- /dev/null +++ b/include/mruby/endian.h @@ -0,0 +1,44 @@ +/** +** @file mruby/endian.h - detect endian-ness +** +** See Copyright Notice in mruby.h +*/ + +#ifndef MRUBY_ENDIAN_H +#define MRUBY_ENDIAN_H + +#include + +MRB_BEGIN_DECL + +#if !defined(BYTE_ORDER) && defined(__BYTE_ORDER__) +# define BYTE_ORDER __BYTE_ORDER__ +#endif +#if !defined(BIG_ENDIAN) && defined(__ORDER_BIG_ENDIAN__) +# define BIG_ENDIAN __ORDER_BIG_ENDIAN__ +#endif +#if !defined(LITTLE_ENDIAN) && defined(__ORDER_LITTLE_ENDIAN__) +# define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ +#endif + +#ifdef BYTE_ORDER +# if BYTE_ORDER == BIG_ENDIAN +# define littleendian 0 +# elif BYTE_ORDER == LITTLE_ENDIAN +# define littleendian 1 +# endif +#endif +#ifndef littleendian +/* can't distinguish endian in compile time */ +static inline int +check_little_endian(void) +{ + unsigned int n = 1; + return (*(unsigned char *)&n == 1); +} +# define littleendian check_little_endian() +#endif + +MRB_END_DECL + +#endif /* MRUBY_ENDIAN_H */ diff --git a/mrbgems/mruby-pack/src/pack.c b/mrbgems/mruby-pack/src/pack.c index 35e79d25d..9250e966d 100644 --- a/mrbgems/mruby-pack/src/pack.c +++ b/mrbgems/mruby-pack/src/pack.c @@ -9,10 +9,10 @@ #include "mruby/numeric.h" #include "mruby/string.h" #include "mruby/variable.h" +#include "mruby/endian.h" #include #include -#include #include struct tmpl { @@ -63,36 +63,6 @@ const static unsigned char base64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static unsigned char base64_dec_tab[128]; -#if !defined(BYTE_ORDER) && defined(__BYTE_ORDER__) -# define BYTE_ORDER __BYTE_ORDER__ -#endif -#if !defined(BIG_ENDIAN) && defined(__ORDER_BIG_ENDIAN__) -# define BIG_ENDIAN __ORDER_BIG_ENDIAN__ -#endif -#if !defined(LITTLE_ENDIAN) && defined(__ORDER_LITTLE_ENDIAN__) -# define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ -#endif - -#ifdef BYTE_ORDER -# if BYTE_ORDER == BIG_ENDIAN -# define littleendian 0 -# define check_little_endian() (void)0 -# elif BYTE_ORDER == LITTLE_ENDIAN -# define littleendian 1 -# define check_little_endian() (void)0 -# endif -#endif -#ifndef littleendian -/* can't distinguish endian in compile time */ -static int littleendian = 0; -static void -check_little_endian(void) -{ - unsigned int n = 1; - littleendian = (*(unsigned char *)&n == 1); -} -#endif - static unsigned int hex2int(unsigned char ch) { @@ -1426,7 +1396,6 @@ mrb_pack_unpack1(mrb_state *mrb, mrb_value str) void mrb_mruby_pack_gem_init(mrb_state *mrb) { - check_little_endian(); make_base64_dec_tab(); mrb_define_method(mrb, mrb->array_class, "pack", mrb_pack_pack, MRB_ARGS_REQ(1)); diff --git a/src/dump.c b/src/dump.c index 489e70f8a..243278103 100644 --- a/src/dump.c +++ b/src/dump.c @@ -12,6 +12,7 @@ #include #include #include +#include #ifndef MRB_NO_FLOAT #ifdef MRB_USE_FLOAT32 @@ -89,13 +90,25 @@ write_iseq_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf, uint8_t fla } #ifndef MRB_NO_FLOAT -static mrb_value -float_to_str(mrb_state *mrb, mrb_float f) +static void +dump_float(mrb_state *mrb, uint8_t *buf, mrb_float f) { - if (isinf(f)) { - return f < 0 ? mrb_str_new_lit(mrb, "I") : mrb_str_new_lit(mrb, "i"); + /* dump IEEE754 binary in little endian */ + union { + double f; + char s[sizeof(double)]; + } u = {.f = (double)f}; + + if (littleendian) { + memcpy(buf, u.s, sizeof(double)); + } + else { + int i; + + for (i=0; ipool[pool_no].u.f); - mrb_int len = RSTRING_LEN(str); - mrb_assert_int_fit(mrb_int, len, size_t, SIZE_MAX); - size += (size_t)len; + size += sizeof(double); } #endif break; @@ -194,12 +204,9 @@ write_pool_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) cur += uint8_to_bin(IREP_TT_FLOAT, cur); /* data type */ #ifndef MRB_NO_FLOAT { - mrb_value str = float_to_str(mrb, irep->pool[pool_no].u.f); - ptr = RSTRING_PTR(str); - len = RSTRING_LEN(str); - mrb_assert_int_fit(mrb_int, len, uint16_t, UINT16_MAX); + len = sizeof(double); cur += uint16_to_bin((uint16_t)len, cur); /* data length */ - memcpy(cur, ptr, (size_t)len); + dump_float(mrb, cur,irep->pool[pool_no].u.f); cur += len; } #else diff --git a/src/load.c b/src/load.c index 2cc0f7557..392a38456 100644 --- a/src/load.c +++ b/src/load.c @@ -15,6 +15,7 @@ #include #include #include +#include #if SIZE_MAX < UINT32_MAX # error size_t must be at least 32 bits wide @@ -40,17 +41,26 @@ offset_crc_body(void) } #ifndef MRB_NO_FLOAT -double mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck); - static double str_to_double(mrb_state *mrb, const char *p, size_t len) { - /* `i`, `inf`, `infinity` */ - if (len > 0 && p[0] == 'i') return INFINITY; - - /* `I`, `-inf`, `-infinity` */ - if (p[0] == 'I' || (len > 1 && p[0] == '-' && p[1] == 'i')) return -INFINITY; - return mrb_str_len_to_dbl(mrb, p, len, TRUE); + /* dump IEEE754 little endian binary */ + union { + char s[sizeof(double)]; + double f; + } u; + + mrb_assert(sizeof(double)==len); + if (littleendian) { + memcpy(u.s, p, sizeof(double)); + } + else { + int i; + for (i=0; i Date: Mon, 31 Aug 2020 23:11:31 +0900 Subject: Don't compare `int' with `size_t` (from `sizeof()`). --- src/dump.c | 2 +- src/load.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/load.c') diff --git a/src/dump.c b/src/dump.c index 243278103..25908260b 100644 --- a/src/dump.c +++ b/src/dump.c @@ -103,7 +103,7 @@ dump_float(mrb_state *mrb, uint8_t *buf, mrb_float f) memcpy(buf, u.s, sizeof(double)); } else { - int i; + size_t i; for (i=0; i Date: Mon, 21 Sep 2020 08:15:54 +0900 Subject: Dump/load 16 bits for `ilen` and `slen` in `irep`. Those types are `uint16_t` in definition. Also we no longer need padding for `iseq`. --- src/dump.c | 23 +++++------------------ src/load.c | 16 ++++------------ 2 files changed, 9 insertions(+), 30 deletions(-) (limited to 'src/load.c') diff --git a/src/dump.c b/src/dump.c index 3c7c5ac84..a75b0a88e 100644 --- a/src/dump.c +++ b/src/dump.c @@ -28,17 +28,6 @@ static size_t get_irep_record_size_1(mrb_state *mrb, const mrb_irep *irep); # error This code cannot be built on your environment. #endif -static size_t -write_padding(uint8_t *buf) -{ - const size_t align = MRB_DUMP_ALIGNMENT; - size_t pad_len = -(intptr_t)buf & (align-1); - if (pad_len > 0) { - memset(buf, 0, pad_len); - } - return pad_len; -} - static size_t get_irep_header_size(mrb_state *mrb) { @@ -69,9 +58,8 @@ get_iseq_block_size(mrb_state *mrb, const mrb_irep *irep) { size_t size = 0; - size += sizeof(uint32_t); /* ilen */ - size += sizeof(uint32_t); /* max padding */ - size += sizeof(uint32_t) * irep->ilen; /* iseq(n) */ + size += sizeof(uint16_t); /* ilen */ + size += irep->ilen * sizeof(mrb_code); /* iseq(n) */ return size; } @@ -81,8 +69,7 @@ write_iseq_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf, uint8_t fla { uint8_t *cur = buf; - cur += uint32_to_bin(irep->ilen, cur); /* number of opcode */ - cur += write_padding(cur); + cur += uint16_to_bin(irep->ilen, cur); /* number of opcode */ memcpy(cur, irep->iseq, irep->ilen * sizeof(mrb_code)); cur += irep->ilen * sizeof(mrb_code); @@ -239,7 +226,7 @@ get_syms_block_size(mrb_state *mrb, const mrb_irep *irep) int sym_no; mrb_int len; - size += sizeof(uint32_t); /* slen */ + size += sizeof(uint16_t); /* slen */ for (sym_no = 0; sym_no < irep->slen; sym_no++) { size += sizeof(uint16_t); /* snl(n) */ if (irep->syms[sym_no] != 0) { @@ -258,7 +245,7 @@ write_syms_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) uint8_t *cur = buf; const char *name; - cur += uint32_to_bin(irep->slen, cur); /* number of symbol */ + cur += uint16_to_bin(irep->slen, cur); /* number of symbol */ for (sym_no = 0; sym_no < irep->slen; sym_no++) { if (irep->syms[sym_no] != 0) { diff --git a/src/load.c b/src/load.c index aae1e071b..0e6ae44a6 100644 --- a/src/load.c +++ b/src/load.c @@ -26,13 +26,6 @@ #define SIZE_ERROR_MUL(nmemb, size) ((size_t)(nmemb) > SIZE_MAX / (size)) -static size_t -skip_padding(const uint8_t *buf) -{ - const size_t align = MRB_DUMP_ALIGNMENT; - return -(intptr_t)buf & (align-1); -} - static size_t offset_crc_body(void) { @@ -109,9 +102,8 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag /* ISEQ BLOCK (and CATCH HANDLER TABLE BLOCK) */ irep->clen = bin_to_uint16(src); /* number of catch handler */ src += sizeof(uint16_t); - irep->ilen = (uint16_t)bin_to_uint32(src); - src += sizeof(uint32_t); - src += skip_padding(src); + irep->ilen = bin_to_uint16(src); + src += sizeof(uint16_t); if (irep->ilen > 0) { size_t data_len = sizeof(mrb_code) * irep->ilen + @@ -212,8 +204,8 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag } /* SYMS BLOCK */ - irep->slen = (uint16_t)bin_to_uint32(src); /* syms length */ - src += sizeof(uint32_t); + irep->slen = bin_to_uint16(src); /* syms length */ + src += sizeof(uint16_t); if (irep->slen > 0) { if (SIZE_ERROR_MUL(irep->slen, sizeof(mrb_sym))) { return NULL; -- cgit v1.2.3 From d2b548de6088ec28ceb3c2d10c11f78035c0038d Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 22 Sep 2020 10:53:52 +0900 Subject: Remove the length of `Float' pool from the binary dump. Also fixed the size calculation of `irep` dump, that could cause memory corruption. --- src/dump.c | 4 +--- src/load.c | 9 +++------ 2 files changed, 4 insertions(+), 9 deletions(-) (limited to 'src/load.c') diff --git a/src/dump.c b/src/dump.c index a75b0a88e..0c5ded2e2 100644 --- a/src/dump.c +++ b/src/dump.c @@ -191,10 +191,8 @@ write_pool_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf) cur += uint8_to_bin(IREP_TT_FLOAT, cur); /* data type */ #ifndef MRB_NO_FLOAT { - len = sizeof(double); - cur += uint16_to_bin((uint16_t)len, cur); /* data length */ dump_float(mrb, cur,irep->pool[pool_no].u.f); - cur += len; + cur += sizeof(double); } #else cur += uint16_to_bin(0, cur); /* zero length */ diff --git a/src/load.c b/src/load.c index 0e6ae44a6..c1a8c4c87 100644 --- a/src/load.c +++ b/src/load.c @@ -35,7 +35,7 @@ offset_crc_body(void) #ifndef MRB_NO_FLOAT static double -str_to_double(mrb_state *mrb, const char *p, size_t len) +str_to_double(mrb_state *mrb, const char *p) { /* dump IEEE754 little endian binary */ union { @@ -43,7 +43,6 @@ str_to_double(mrb_state *mrb, const char *p, size_t len) double f; } u; - mrb_assert(sizeof(double)==len); if (littleendian) { memcpy(u.s, p, sizeof(double)); } @@ -169,10 +168,8 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag case IREP_TT_FLOAT: #ifndef MRB_NO_FLOAT pool[i].tt = tt; - pool_data_len = bin_to_uint16(src); /* pool data length */ - src += sizeof(uint16_t); - pool[i].u.f = str_to_double(mrb, (const char*)src, pool_data_len); - src += pool_data_len; + pool[i].u.f = str_to_double(mrb, (const char*)src); + src += sizeof(double); break; #else return NULL; /* MRB_NO_FLOAT */ -- cgit v1.2.3