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/codedump.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/codedump.c') diff --git a/src/codedump.c b/src/codedump.c index 649be176b..14cca8553 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -7,7 +7,7 @@ #ifndef MRB_DISABLE_STDIO static void -print_r(mrb_state *mrb, mrb_irep *irep, size_t n) +print_r(mrb_state *mrb, const mrb_irep *irep, size_t n) { size_t i; @@ -23,7 +23,7 @@ print_r(mrb_state *mrb, mrb_irep *irep, size_t n) } static void -print_lv_a(mrb_state *mrb, mrb_irep *irep, uint16_t a) +print_lv_a(mrb_state *mrb, const mrb_irep *irep, uint16_t a) { if (!irep->lv || a >= irep->nlocals || a == 0) { printf("\n"); @@ -35,7 +35,7 @@ print_lv_a(mrb_state *mrb, mrb_irep *irep, uint16_t a) } static void -print_lv_ab(mrb_state *mrb, mrb_irep *irep, uint16_t a, uint16_t b) +print_lv_ab(mrb_state *mrb, const mrb_irep *irep, uint16_t a, uint16_t b) { if (!irep->lv || (a >= irep->nlocals && b >= irep->nlocals) || a+b == 0) { printf("\n"); @@ -48,7 +48,7 @@ print_lv_ab(mrb_state *mrb, mrb_irep *irep, uint16_t a, uint16_t b) } static void -print_header(mrb_state *mrb, mrb_irep *irep, ptrdiff_t i) +print_header(mrb_state *mrb, const mrb_irep *irep, ptrdiff_t i) { int32_t line; @@ -66,7 +66,7 @@ print_header(mrb_state *mrb, mrb_irep *irep, ptrdiff_t i) #define CASE(insn,ops) case insn: FETCH_ ## ops (); L_ ## insn static void -codedump(mrb_state *mrb, mrb_irep *irep) +codedump(mrb_state *mrb, const mrb_irep *irep) { int ai; const mrb_code *pc, *pcend; @@ -533,7 +533,7 @@ codedump(mrb_state *mrb, mrb_irep *irep) } static void -codedump_recur(mrb_state *mrb, mrb_irep *irep) +codedump_recur(mrb_state *mrb, const mrb_irep *irep) { int i; -- 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/codedump.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 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/codedump.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 fd10c7231906ca48cb35892d2a86460004b62249 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 5 Jun 2020 19:17:33 +0900 Subject: Remove `OP_EXT[123]` from operands. --- doc/opcode.md | 11 -- include/mruby/opcode.h | 27 ---- include/mruby/ops.h | 3 - mrbgems/mruby-compiler/core/codegen.c | 88 +------------ src/codedump.c | 239 +++++++++++++++------------------- src/vm.c | 37 +----- 6 files changed, 112 insertions(+), 293 deletions(-) (limited to 'src/codedump.c') diff --git a/doc/opcode.md b/doc/opcode.md index a79453e8a..d5b71d9f0 100644 --- a/doc/opcode.md +++ b/doc/opcode.md @@ -20,14 +20,6 @@ sign) of operands. * sS: signed 16bit * W: 24bit -First two byte operands may be extended to 16bit. When those byte -operands are bigger than 256, the instruction will be prefixed by -`OP_EXT1` (means 1st operand is 16bit) or `OP_EXT2` (means 2nd operand -is 16bit) or `OP_EXT3` (means 1st and 2nd operands are 16bit). - -For instructions marked by `'`, `OP_EXT1` can be prefixed. For those -with `"`, either `OP_EXT1` or `OP_EXT2` or `OP_EXT2` can be prefixed. - ## table.1 Instruction Table | Instruction Name | Operand type | Semantics | @@ -133,8 +125,5 @@ with `"`, either `OP_EXT1` or `OP_EXT2` or `OP_EXT2` can be prefixed. | OP_TCLASS' | B | R(a) = target_class | | OP_DEBUG" | BBB | print a,b,c | | OP_ERR' | B | raise(LocalJumpError, Lit(a)) | -| OP_EXT1 | - | make 1st operand 16bit | -| OP_EXT2 | - | make 2nd operand 16bit | -| OP_EXT3 | - | make 1st and 2nd operands 16bit | | OP_STOP | - | stop VM | |------------------|--------------|--------------------------------------------------------| diff --git a/include/mruby/opcode.h b/include/mruby/opcode.h index 95e6736a4..a6c636cf8 100644 --- a/include/mruby/opcode.h +++ b/include/mruby/opcode.h @@ -39,31 +39,4 @@ enum mrb_insn { #define FETCH_S() do {a=READ_S();} while (0) #define FETCH_W() do {a=READ_W();} while (0) -/* with OP_EXT1 (1st 16bit) */ -#define FETCH_Z_1() FETCH_Z() -#define FETCH_B_1() FETCH_S() -#define FETCH_BB_1() do {a=READ_S(); b=READ_B();} while (0) -#define FETCH_BBB_1() do {a=READ_S(); b=READ_B(); c=READ_B();} while (0) -#define FETCH_BS_1() do {a=READ_S(); b=READ_S();} while (0) -#define FETCH_S_1() FETCH_S() -#define FETCH_W_1() FETCH_W() - -/* with OP_EXT2 (2nd 16bit) */ -#define FETCH_Z_2() FETCH_Z() -#define FETCH_B_2() FETCH_B() -#define FETCH_BB_2() do {a=READ_B(); b=READ_S();} while (0) -#define FETCH_BBB_2() do {a=READ_B(); b=READ_S(); c=READ_B();} while (0) -#define FETCH_BS_2() FETCH_BS() -#define FETCH_S_2() FETCH_S() -#define FETCH_W_2() FETCH_W() - -/* with OP_EXT3 (1st & 2nd 16bit) */ -#define FETCH_Z_3() FETCH_Z() -#define FETCH_B_3() FETCH_B() -#define FETCH_BB_3() do {a=READ_S(); b=READ_S();} while (0) -#define FETCH_BBB_3() do {a=READ_S(); b=READ_S(); c=READ_B();} while (0) -#define FETCH_BS_3() do {a=READ_S(); b=READ_S();} while (0) -#define FETCH_S_3() FETCH_S() -#define FETCH_W_3() FETCH_W() - #endif /* MRUBY_OPCODE_H */ diff --git a/include/mruby/ops.h b/include/mruby/ops.h index e85ee3133..de6106796 100644 --- a/include/mruby/ops.h +++ b/include/mruby/ops.h @@ -111,8 +111,5 @@ OPCODE(SCLASS, B) /* R(a) = R(a).singleton_class */ OPCODE(TCLASS, B) /* R(a) = target_class */ OPCODE(DEBUG, BBB) /* print a,b,c */ OPCODE(ERR, B) /* raise(LocalJumpError, Lit(a)) */ -OPCODE(EXT1, Z) /* make 1st operand 16bit */ -OPCODE(EXT2, Z) /* make 2nd operand 16bit */ -OPCODE(EXT3, Z) /* make 1st and 2nd operands 16bit */ OPCODE(STOP, Z) /* stop VM */ OPCODE(LOADI16, BS) /* R(a) = mrb_int(b) */ diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 189bb95b8..9da80536b 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -217,9 +217,7 @@ genop_1(codegen_scope *s, mrb_code i, uint16_t a) { s->lastpc = s->pc; if (a > 0xff) { - gen_B(s, OP_EXT1); - gen_B(s, i); - gen_S(s, a); + codegen_error(s, "too big operand"); } else { gen_B(s, i); @@ -231,23 +229,8 @@ static void genop_2(codegen_scope *s, mrb_code i, uint16_t a, uint16_t b) { s->lastpc = s->pc; - if (a > 0xff && b > 0xff) { - gen_B(s, OP_EXT3); - gen_B(s, i); - gen_S(s, a); - gen_S(s, b); - } - else if (b > 0xff) { - gen_B(s, OP_EXT2); - gen_B(s, i); - gen_B(s, (uint8_t)a); - gen_S(s, b); - } - else if (a > 0xff) { - gen_B(s, OP_EXT1); - gen_B(s, i); - gen_S(s, a); - gen_B(s, (uint8_t)b); + if (a > 0xff || b > 0xff) { + codegen_error(s, "too big operand"); } else { gen_B(s, i); @@ -309,32 +292,6 @@ mrb_decode_insn(const mrb_code *pc) #define OPCODE(i,x) case OP_ ## i: FETCH_ ## x (); break; #include "mruby/ops.h" #undef OPCODE - } - switch (insn) { - case OP_EXT1: - insn = READ_B(); - switch (insn) { -#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); break; -#include "mruby/ops.h" -#undef OPCODE - } - break; - case OP_EXT2: - insn = READ_B(); - switch (insn) { -#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); break; -#include "mruby/ops.h" -#undef OPCODE - } - break; - case OP_EXT3: - insn = READ_B(); - switch (insn) { -#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); break; -#include "mruby/ops.h" -#undef OPCODE - } - break; default: break; } @@ -391,11 +348,8 @@ genjmp2(codegen_scope *s, mrb_code i, uint16_t a, int pc, int val) s->lastpc = s->pc; if (a > 0xff) { - gen_B(s, OP_EXT1); - gen_B(s, i); - gen_S(s, a); - pos = s->pc; - gen_S(s, pc); + codegen_error(s, "too big operand"); + pos = 0; } else { gen_B(s, i); @@ -3314,35 +3268,3 @@ uint8_t mrb_insn_size[] = { #undef SB #undef BBB }; -/* EXT1 instruction sizes */ -uint8_t mrb_insn_size1[] = { -#define B 3 -#define BB 4 -#define BBB 5 -#define BS 5 -#define SB 5 -#define OPCODE(_,x) x, -#include "mruby/ops.h" -#undef OPCODE -#undef B -}; -/* EXT2 instruction sizes */ -uint8_t mrb_insn_size2[] = { -#define B 2 -#define OPCODE(_,x) x, -#include "mruby/ops.h" -#undef OPCODE -#undef BB -#undef BBB -#undef BS -#undef SB -}; -/* EXT3 instruction sizes */ -#define BB 5 -#define BBB 6 -#define BS 4 -#define SB 5 -uint8_t mrb_insn_size3[] = { -#define OPCODE(_,x) x, -#include "mruby/ops.h" -}; diff --git a/src/codedump.c b/src/codedump.c index 0e90f22db..67bd8754d 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -63,7 +63,7 @@ print_header(mrb_state *mrb, const mrb_irep *irep, ptrdiff_t i) printf("%03d ", (int)i); } -#define CASE(insn,ops) case insn: FETCH_ ## ops (); L_ ## insn +#define CASE(insn,ops) case insn: FETCH_ ## ops (); static void codedump(mrb_state *mrb, const mrb_irep *irep) @@ -107,14 +107,14 @@ codedump(mrb_state *mrb, const mrb_irep *irep) print_header(mrb, irep, i); ins = READ_B(); switch (ins) { - CASE(OP_NOP, Z): + CASE(OP_NOP, Z); printf("OP_NOP\n"); break; - CASE(OP_MOVE, BB): + CASE(OP_MOVE, BB); printf("OP_MOVE\tR%d\tR%d\t", a, b); print_lv_ab(mrb, irep, a, b); break; - CASE(OP_LOADL, BB): + CASE(OP_LOADL, BB); 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); @@ -133,144 +133,144 @@ codedump(mrb_state *mrb, const mrb_irep *irep) } print_lv_a(mrb, irep, a); break; - CASE(OP_LOADI, BB): + CASE(OP_LOADI, BB); printf("OP_LOADI\tR%d\t%d\t", a, b); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADINEG, BB): + CASE(OP_LOADINEG, BB); printf("OP_LOADI\tR%d\t-%d\t", a, b); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADI16, BS): + CASE(OP_LOADI16, BS); printf("OP_LOADI16\tR%d\t%d\t", a, (int)(int16_t)b); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADI__1, B): + CASE(OP_LOADI__1, B); printf("OP_LOADI__1\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADI_0, B): goto L_LOADI; - CASE(OP_LOADI_1, B): goto L_LOADI; - CASE(OP_LOADI_2, B): goto L_LOADI; - CASE(OP_LOADI_3, B): goto L_LOADI; - CASE(OP_LOADI_4, B): goto L_LOADI; - CASE(OP_LOADI_5, B): goto L_LOADI; - CASE(OP_LOADI_6, B): goto L_LOADI; - CASE(OP_LOADI_7, B): + CASE(OP_LOADI_0, B); goto L_LOADI; + CASE(OP_LOADI_1, B); goto L_LOADI; + CASE(OP_LOADI_2, B); goto L_LOADI; + CASE(OP_LOADI_3, B); goto L_LOADI; + CASE(OP_LOADI_4, B); goto L_LOADI; + CASE(OP_LOADI_5, B); goto L_LOADI; + CASE(OP_LOADI_6, B); goto L_LOADI; + CASE(OP_LOADI_7, B); L_LOADI: printf("OP_LOADI_%d\tR%d\t\t", ins-(int)OP_LOADI_0, a); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADSYM, BB): + CASE(OP_LOADSYM, BB); printf("OP_LOADSYM\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADNIL, B): + CASE(OP_LOADNIL, B); printf("OP_LOADNIL\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADSELF, B): + CASE(OP_LOADSELF, B); printf("OP_LOADSELF\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADT, B): + CASE(OP_LOADT, B); printf("OP_LOADT\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_LOADF, B): + CASE(OP_LOADF, B); printf("OP_LOADF\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_GETGV, BB): + CASE(OP_GETGV, BB); printf("OP_GETGV\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_SETGV, BB): - printf("OP_SETGV\t:%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); + CASE(OP_SETGV, BB); + printf("OP_SETGV\t;%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a); break; - CASE(OP_GETSV, BB): + CASE(OP_GETSV, BB); printf("OP_GETSV\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_SETSV, BB): + CASE(OP_SETSV, BB); printf("OP_SETSV\t:%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a); break; - CASE(OP_GETCONST, BB): + CASE(OP_GETCONST, BB); printf("OP_GETCONST\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_SETCONST, BB): + CASE(OP_SETCONST, BB); printf("OP_SETCONST\t:%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a); break; - CASE(OP_GETMCNST, BB): + CASE(OP_GETMCNST, BB); printf("OP_GETMCNST\tR%d\tR%d::%s", a, a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_SETMCNST, BB): + CASE(OP_SETMCNST, BB); printf("OP_SETMCNST\tR%d::%s\tR%d", a+1, mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a); break; - CASE(OP_GETIV, BB): + CASE(OP_GETIV, BB); printf("OP_GETIV\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_SETIV, BB): + CASE(OP_SETIV, BB); printf("OP_SETIV\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a); break; - CASE(OP_GETUPVAR, BBB): + CASE(OP_GETUPVAR, BBB); printf("OP_GETUPVAR\tR%d\t%d\t%d", a, b, c); print_lv_a(mrb, irep, a); break; - CASE(OP_SETUPVAR, BBB): + CASE(OP_SETUPVAR, BBB); printf("OP_SETUPVAR\tR%d\t%d\t%d", a, b, c); print_lv_a(mrb, irep, a); break; - CASE(OP_GETCV, BB): + CASE(OP_GETCV, BB); printf("OP_GETCV\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_SETCV, BB): + CASE(OP_SETCV, BB); printf("OP_SETCV\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a); break; - CASE(OP_JMP, S): + CASE(OP_JMP, S); printf("OP_JMP\t\t%03d\n", a); break; - CASE(OP_JMPIF, BS): + CASE(OP_JMPIF, BS); printf("OP_JMPIF\tR%d\t%03d\t", a, b); print_lv_a(mrb, irep, a); break; - CASE(OP_JMPNOT, BS): + CASE(OP_JMPNOT, BS); printf("OP_JMPNOT\tR%d\t%03d\t", a, b); print_lv_a(mrb, irep, a); break; - CASE(OP_JMPNIL, BS): + CASE(OP_JMPNIL, BS); printf("OP_JMPNIL\tR%d\t%03d\t", a, b); print_lv_a(mrb, irep, a); break; - CASE(OP_SENDV, BB): + CASE(OP_SENDV, BB); printf("OP_SENDV\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b])); break; - CASE(OP_SENDVB, BB): + CASE(OP_SENDVB, BB); printf("OP_SENDVB\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b])); break; - CASE(OP_SEND, BBB): + CASE(OP_SEND, BBB); printf("OP_SEND\tR%d\t:%s\t%d\n", a, mrb_sym_dump(mrb, irep->syms[b]), c); break; - CASE(OP_SENDB, BBB): + CASE(OP_SENDB, BBB); printf("OP_SENDB\tR%d\t:%s\t%d\n", a, mrb_sym_dump(mrb, irep->syms[b]), c); break; - CASE(OP_CALL, Z): + CASE(OP_CALL, Z); printf("OP_CALL\n"); break; - CASE(OP_SUPER, BB): + CASE(OP_SUPER, BB); printf("OP_SUPER\tR%d\t%d\n", a, b); break; - CASE(OP_ARGARY, BS): + CASE(OP_ARGARY, BS); printf("OP_ARGARY\tR%d\t%d:%d:%d:%d (%d)", a, (b>>11)&0x3f, (b>>10)&0x1, @@ -279,7 +279,7 @@ codedump(mrb_state *mrb, const mrb_irep *irep) (b>>0)&0xf); print_lv_a(mrb, irep, a); break; - CASE(OP_ENTER, W): + CASE(OP_ENTER, W); printf("OP_ENTER\t%d:%d:%d:%d:%d:%d:%d\n", MRB_ASPEC_REQ(a), MRB_ASPEC_OPT(a), @@ -289,30 +289,30 @@ codedump(mrb_state *mrb, const mrb_irep *irep) MRB_ASPEC_KDICT(a), MRB_ASPEC_BLOCK(a)); break; - CASE(OP_KEY_P, BB): + CASE(OP_KEY_P, BB); printf("OP_KEY_P\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_KEYEND, Z): + CASE(OP_KEYEND, Z); printf("OP_KEYEND\n"); break; - CASE(OP_KARG, BB): + CASE(OP_KARG, BB); printf("OP_KARG\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_RETURN, B): + CASE(OP_RETURN, B); printf("OP_RETURN\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_RETURN_BLK, B): + CASE(OP_RETURN_BLK, B); printf("OP_RETURN_BLK\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_BREAK, B): + CASE(OP_BREAK, B); printf("OP_BREAK\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_BLKPUSH, BS): + CASE(OP_BLKPUSH, BS); printf("OP_BLKPUSH\tR%d\t%d:%d:%d:%d (%d)", a, (b>>11)&0x3f, (b>>10)&0x1, @@ -321,100 +321,100 @@ codedump(mrb_state *mrb, const mrb_irep *irep) (b>>0)&0xf); print_lv_a(mrb, irep, a); break; - CASE(OP_LAMBDA, BB): + CASE(OP_LAMBDA, BB); printf("OP_LAMBDA\tR%d\tI(%d:%p)\n", a, b, irep->reps[b]); break; - CASE(OP_BLOCK, BB): + CASE(OP_BLOCK, BB); printf("OP_BLOCK\tR%d\tI(%d:%p)\n", a, b, irep->reps[b]); break; - CASE(OP_METHOD, BB): + CASE(OP_METHOD, BB); printf("OP_METHOD\tR%d\tI(%d:%p)\n", a, b, irep->reps[b]); break; - CASE(OP_RANGE_INC, B): + CASE(OP_RANGE_INC, B); printf("OP_RANGE_INC\tR%d\n", a); break; - CASE(OP_RANGE_EXC, B): + CASE(OP_RANGE_EXC, B); printf("OP_RANGE_EXC\tR%d\n", a); break; - CASE(OP_DEF, BB): + CASE(OP_DEF, BB); printf("OP_DEF\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b])); break; - CASE(OP_UNDEF, B): + CASE(OP_UNDEF, B); printf("OP_UNDEF\t:%s\n", mrb_sym_dump(mrb, irep->syms[a])); break; - CASE(OP_ALIAS, BB): + CASE(OP_ALIAS, BB); printf("OP_ALIAS\t:%s\t%s\n", mrb_sym_dump(mrb, irep->syms[a]), mrb_sym_dump(mrb, irep->syms[b])); break; - CASE(OP_ADD, B): + CASE(OP_ADD, B); printf("OP_ADD\tR%d\t\n", a); break; - CASE(OP_ADDI, BB): + CASE(OP_ADDI, BB); printf("OP_ADDI\tR%d\t%d\n", a, b); break; - CASE(OP_SUB, B): + CASE(OP_SUB, B); printf("OP_SUB\tR%d\t\n", a); break; - CASE(OP_SUBI, BB): + CASE(OP_SUBI, BB); printf("OP_SUBI\tR%d\t%d\n", a, b); break; - CASE(OP_MUL, B): + CASE(OP_MUL, B); printf("OP_MUL\tR%d\t\n", a); break; - CASE(OP_DIV, B): + CASE(OP_DIV, B); printf("OP_DIV\tR%d\t\n", a); break; - CASE(OP_LT, B): + CASE(OP_LT, B); printf("OP_LT\t\tR%d\t\n", a); break; - CASE(OP_LE, B): + CASE(OP_LE, B); printf("OP_LE\t\tR%d\t\n", a); break; - CASE(OP_GT, B): + CASE(OP_GT, B); printf("OP_GT\t\tR%d\t\n", a); break; - CASE(OP_GE, B): + CASE(OP_GE, B); printf("OP_GE\t\tR%d\t\n", a); break; - CASE(OP_EQ, B): + CASE(OP_EQ, B); printf("OP_EQ\t\tR%d\t\n", a); break; - CASE(OP_ARRAY, BB): + CASE(OP_ARRAY, BB); printf("OP_ARRAY\tR%d\t%d\t", a, b); print_lv_a(mrb, irep, a); break; - CASE(OP_ARRAY2, BBB): + CASE(OP_ARRAY2, BBB); printf("OP_ARRAY\tR%d\tR%d\t%d\t", a, b, c); print_lv_ab(mrb, irep, a, b); break; - CASE(OP_ARYCAT, B): + CASE(OP_ARYCAT, B); printf("OP_ARYCAT\tR%d\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_ARYPUSH, B): + CASE(OP_ARYPUSH, B); printf("OP_ARYPUSH\tR%d\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_ARYDUP, B): + CASE(OP_ARYDUP, B); printf("OP_ARYDUP\tR%d\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_AREF, BBB): + CASE(OP_AREF, BBB); printf("OP_AREF\tR%d\tR%d\t%d", a, b, c); print_lv_ab(mrb, irep, a, b); break; - CASE(OP_ASET, BBB): + CASE(OP_ASET, BBB); printf("OP_ASET\tR%d\tR%d\t%d", a, b, c); print_lv_ab(mrb, irep, a, b); break; - CASE(OP_APOST, BBB): + CASE(OP_APOST, BBB); printf("OP_APOST\tR%d\t%d\t%d", a, b, c); print_lv_a(mrb, irep, a); break; - CASE(OP_INTERN, B): + CASE(OP_INTERN, B); printf("OP_INTERN\tR%d", a); print_lv_a(mrb, irep, a); break; - CASE(OP_STRING, BB): + CASE(OP_STRING, BB); 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); } @@ -423,48 +423,48 @@ codedump(mrb_state *mrb, const mrb_irep *irep) } print_lv_a(mrb, irep, a); break; - CASE(OP_STRCAT, B): + CASE(OP_STRCAT, B); printf("OP_STRCAT\tR%d\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_HASH, BB): + CASE(OP_HASH, BB); printf("OP_HASH\tR%d\t%d\t", a, b); print_lv_a(mrb, irep, a); break; - CASE(OP_HASHADD, BB): + CASE(OP_HASHADD, BB); printf("OP_HASHADD\tR%d\t%d\t", a, b); print_lv_a(mrb, irep, a); break; - CASE(OP_HASHCAT, B): + CASE(OP_HASHCAT, B); printf("OP_HASHCAT\tR%d\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_OCLASS, B): + CASE(OP_OCLASS, B); printf("OP_OCLASS\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_CLASS, BB): + CASE(OP_CLASS, BB); printf("OP_CLASS\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_MODULE, BB): + CASE(OP_MODULE, BB); printf("OP_MODULE\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a); break; - CASE(OP_EXEC, BB): + CASE(OP_EXEC, BB); printf("OP_EXEC\tR%d\tI(%d:%p)", a, b, irep->reps[b]); print_lv_a(mrb, irep, a); break; - CASE(OP_SCLASS, B): + CASE(OP_SCLASS, B); printf("OP_SCLASS\tR%d\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_TCLASS, B): + CASE(OP_TCLASS, B); printf("OP_TCLASS\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_ERR, B): + CASE(OP_ERR, B); if ((irep->pool[a].tt & IREP_TT_NFLAG) == 0) { printf("OP_ERR\t%s\n", irep->pool[a].u.str); } @@ -472,70 +472,39 @@ codedump(mrb_state *mrb, const mrb_irep *irep) printf("OP_ERR\tL(%d)\n", a); } break; - CASE(OP_EPUSH, B): + CASE(OP_EPUSH, B); printf("OP_EPUSH\t\t:I(%d:%p)\n", a, irep->reps[a]); break; - CASE(OP_ONERR, S): + CASE(OP_ONERR, S); printf("OP_ONERR\t%03d\n", a); break; - CASE(OP_EXCEPT, B): + CASE(OP_EXCEPT, B); printf("OP_EXCEPT\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_RESCUE, BB): + CASE(OP_RESCUE, BB); printf("OP_RESCUE\tR%d\tR%d", a, b); print_lv_ab(mrb, irep, a, b); break; - CASE(OP_RAISE, B): + CASE(OP_RAISE, B); printf("OP_RAISE\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_POPERR, B): + CASE(OP_POPERR, B); printf("OP_POPERR\t%d\t\t\n", a); break; - CASE(OP_EPOP, B): + CASE(OP_EPOP, B); printf("OP_EPOP\t%d\n", a); break; - CASE(OP_DEBUG, BBB): + CASE(OP_DEBUG, BBB); printf("OP_DEBUG\t%d\t%d\t%d\n", a, b, c); break; - CASE(OP_STOP, Z): + CASE(OP_STOP, Z); printf("OP_STOP\n"); break; - CASE(OP_EXT1, Z): - ins = READ_B(); - printf("OP_EXT1\n"); - print_header(mrb, irep, pc-irep->iseq-2); - switch (ins) { -#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _1 (); goto L_OP_ ## i; -#include "mruby/ops.h" -#undef OPCODE - } - break; - CASE(OP_EXT2, Z): - ins = READ_B(); - printf("OP_EXT2\n"); - print_header(mrb, irep, pc-irep->iseq-2); - switch (ins) { -#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _2 (); goto L_OP_ ## i; -#include "mruby/ops.h" -#undef OPCODE - } - break; - CASE(OP_EXT3, Z): - ins = READ_B(); - printf("OP_EXT3\n"); - print_header(mrb, irep, pc-irep->iseq-2); - switch (ins) { -#define OPCODE(i,x) case OP_ ## i: FETCH_ ## x ## _3 (); goto L_OP_ ## i; -#include "mruby/ops.h" -#undef OPCODE - } - break; - default: printf("OP_unknown (0x%x)\n", ins); break; diff --git a/src/vm.c b/src/vm.c index 98f17e287..c97c9678c 100644 --- a/src/vm.c +++ b/src/vm.c @@ -901,7 +901,7 @@ argnum_error(mrb_state *mrb, mrb_int num) #ifndef DIRECT_THREADED #define INIT_DISPATCH for (;;) { insn = BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); switch (insn) { -#define CASE(insn,ops) case insn: pc0=pc++; FETCH_ ## ops ();; L_ ## insn ## _BODY: +#define CASE(insn,ops) case insn: pc0=pc++; FETCH_ ## ops (); #define NEXT break #define JUMP NEXT #define END_DISPATCH }} @@ -909,7 +909,7 @@ argnum_error(mrb_state *mrb, mrb_int num) #else #define INIT_DISPATCH JUMP; return mrb_nil_value(); -#define CASE(insn,ops) L_ ## insn: pc0=pc++; FETCH_ ## ops (); L_ ## insn ## _BODY: +#define CASE(insn,ops) L_ ## insn: pc0=pc++; FETCH_ ## ops (); #define NEXT insn=BYTECODE_DECODER(*pc); CODE_FETCH_HOOK(mrb, irep, pc, regs); goto *optable[insn] #define JUMP NEXT @@ -1512,7 +1512,7 @@ RETRY_TRY_BLOCK: mrb->c->stack[0] = mrb_nil_value(); a = 0; c = OP_R_NORMAL; - goto L_OP_RETURN_BODY; + goto L_RETURN; } pool = irep->pool; syms = irep->syms; @@ -2733,37 +2733,6 @@ RETRY_TRY_BLOCK: goto L_RAISE; } - CASE(OP_EXT1, Z) { - insn = READ_B(); - switch (insn) { -#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _1(); goto L_OP_ ## insn ## _BODY; -#include "mruby/ops.h" -#undef OPCODE - } - pc--; - NEXT; - } - CASE(OP_EXT2, Z) { - insn = READ_B(); - switch (insn) { -#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _2(); goto L_OP_ ## insn ## _BODY; -#include "mruby/ops.h" -#undef OPCODE - } - pc--; - NEXT; - } - CASE(OP_EXT3, Z) { - uint8_t insn = READ_B(); - switch (insn) { -#define OPCODE(insn,ops) case OP_ ## insn: FETCH_ ## ops ## _3(); goto L_OP_ ## insn ## _BODY; -#include "mruby/ops.h" -#undef OPCODE - } - pc--; - NEXT; - } - CASE(OP_STOP, Z) { /* stop VM */ L_STOP: -- 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/codedump.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 ff0e3bcea6fd7d34d4fc6f3f78ef3e4120825401 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 22 Jul 2020 14:20:08 +0900 Subject: Check `lv` before printing local variable names. --- src/codedump.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/codedump.c') diff --git a/src/codedump.c b/src/codedump.c index 24fc94ef7..106312f67 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -11,6 +11,7 @@ print_r(mrb_state *mrb, const mrb_irep *irep, size_t n) { if (n == 0) return; if (n > irep->nlocals) return; + if (!irep->lv[n-1]) return; printf(" R%d:%s", (int)n, mrb_sym_dump(mrb, irep->lv[n-1])); } -- 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/codedump.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 f467b02d4598ab64d98727348e8a9c4f04fc9b83 Mon Sep 17 00:00:00 2001 From: dearblue Date: Sun, 24 May 2020 11:44:31 +0900 Subject: Extended `OP_EXCEPT` and `OP_RAISE` (`OP_RAISEIF`) instructions - `OP_EXCEPT` checks if `mrb->exc` is `NULL`, `MRB_TT_EXCEPTION` or `MRB_TT_BREAK`. If `mrb->exc` is `NULL`, it will be replaced with `nil`. - If `OP_RAISE` is `nil`, it does nothing and the immediately following instruction is executed (like `OP_NOP`). Also, in case of `RBreak` object, it moves to the processing for `break`. With this change, the instruction name is changed from `OP_RAISE` to `OP_RAISEIF`. --- doc/opcode.md | 2 +- include/mruby/ops.h | 2 +- mrbgems/mruby-compiler/core/codegen.c | 2 +- src/codedump.c | 4 ++-- src/vm.c | 34 +++++++++++++++++++++++++++++----- 5 files changed, 34 insertions(+), 10 deletions(-) (limited to 'src/codedump.c') diff --git a/doc/opcode.md b/doc/opcode.md index 98d29cdc0..d7e620350 100644 --- a/doc/opcode.md +++ b/doc/opcode.md @@ -66,7 +66,7 @@ sign) of operands. | OP_EXCEPT | B | R(a) = exc | | OP_RESCUE | BB | R(b) = R(a).isa?(R(b)) | | OP_POPERR | B | a.times{rescue_pop()} | -| OP_RAISE | B | raise(R(a)) | +| OP_RAISEIF | B | raise(R(a)) if R(a) | | OP_EPUSH | B | ensure_push(SEQ[a]) | | OP_EPOP | B | A.times{ensure_pop().call} | | OP_SENDV | BB | R(a) = call(R(a),Syms(b),*R(a+1)) | diff --git a/include/mruby/ops.h b/include/mruby/ops.h index 7d20ac0ad..45397e2ed 100644 --- a/include/mruby/ops.h +++ b/include/mruby/ops.h @@ -53,7 +53,7 @@ OPCODE(ONERR, S) /* rescue_push(a) */ OPCODE(EXCEPT, B) /* R(a) = exc */ OPCODE(RESCUE, BB) /* R(b) = R(a).isa?(R(b)) */ OPCODE(POPERR, B) /* a.times{rescue_pop()} */ -OPCODE(RAISE, B) /* raise(R(a)) */ +OPCODE(RAISEIF, B) /* raise(R(a)) if R(a) */ OPCODE(EPUSH, B) /* ensure_push(SEQ[a]) */ OPCODE(EPOP, B) /* A.times{ensure_pop().call} */ OPCODE(SENDV, BB) /* R(a) = call(R(a),Syms(b),*R(a+1)) */ diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index e55b6791d..7911ecb36 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1533,7 +1533,7 @@ codegen(codegen_scope *s, node *tree, int val) } if (pos1) { dispatch(s, pos1); - genop_1(s, OP_RAISE, exc); + genop_1(s, OP_RAISEIF, exc); } } pop(); diff --git a/src/codedump.c b/src/codedump.c index a19d60708..2225da4ce 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -507,8 +507,8 @@ codedump(mrb_state *mrb, const mrb_irep *irep) printf("OP_RESCUE\tR%d\tR%d", a, b); print_lv_ab(mrb, irep, a, b); break; - CASE(OP_RAISE, B); - printf("OP_RAISE\tR%d\t\t", a); + CASE(OP_RAISEIF, B); + printf("OP_RAISEIF\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; CASE(OP_POPERR, B); diff --git a/src/vm.c b/src/vm.c index 3faecfaf2..2dbbe85f8 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1255,8 +1255,24 @@ RETRY_TRY_BLOCK: } CASE(OP_EXCEPT, B) { - mrb_value exc = mrb_obj_value(mrb->exc); - mrb->exc = 0; + mrb_value exc; + + if (mrb->exc == NULL) { + exc = mrb_nil_value(); + } + else { + switch (mrb->exc->tt) { + case MRB_TT_BREAK: + case MRB_TT_EXCEPTION: + exc = mrb_obj_value(mrb->exc); + break; + default: + mrb_assert(!"bad mrb_type"); + exc = mrb_nil_value(); + break; + } + mrb->exc = NULL; + } regs[a] = exc; NEXT; } @@ -1289,9 +1305,17 @@ RETRY_TRY_BLOCK: NEXT; } - CASE(OP_RAISE, B) { - mrb_exc_set(mrb, regs[a]); - goto L_RAISE; + CASE(OP_RAISEIF, B) { + mrb_value exc = regs[a]; + if (mrb_break_p(exc)) { + mrb->exc = mrb_obj_ptr(exc); + goto L_BREAK; + } + mrb_exc_set(mrb, exc); + if (mrb->exc) { + goto L_RAISE; + } + NEXT; } CASE(OP_EPUSH, B) { -- cgit v1.2.3 From 0d7b4deccf445e3edae9239bf40b91cc79e83634 Mon Sep 17 00:00:00 2001 From: dearblue Date: Sun, 24 May 2020 00:42:09 +0900 Subject: Removed push/pop instructions for rescue/ensure `OP_PUSHERR`, `OP_POPERR`, `OP_EPUSH` and `OP_EPOP` are removed. --- doc/opcode.md | 4 --- include/mruby/ops.h | 4 --- src/codedump.c | 12 -------- src/vm.c | 86 ----------------------------------------------------- 4 files changed, 106 deletions(-) (limited to 'src/codedump.c') diff --git a/doc/opcode.md b/doc/opcode.md index d7e620350..385bf9468 100644 --- a/doc/opcode.md +++ b/doc/opcode.md @@ -62,13 +62,9 @@ sign) of operands. | OP_JMPIF | BS | if R(a) pc=b | | OP_JMPNOT | BS | if !R(a) pc=b | | OP_JMPNIL | BS | if R(a)==nil pc=b | -| OP_ONERR | S | rescue_push(a) | | OP_EXCEPT | B | R(a) = exc | | OP_RESCUE | BB | R(b) = R(a).isa?(R(b)) | -| OP_POPERR | B | a.times{rescue_pop()} | | OP_RAISEIF | B | raise(R(a)) if R(a) | -| OP_EPUSH | B | ensure_push(SEQ[a]) | -| OP_EPOP | B | A.times{ensure_pop().call} | | OP_SENDV | BB | R(a) = call(R(a),Syms(b),*R(a+1)) | | OP_SENDVB | BB | R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) | | OP_SEND | BBB | R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) | diff --git a/include/mruby/ops.h b/include/mruby/ops.h index 45397e2ed..8ff44088e 100644 --- a/include/mruby/ops.h +++ b/include/mruby/ops.h @@ -49,13 +49,9 @@ OPCODE(JMP, S) /* pc=a */ OPCODE(JMPIF, BS) /* if R(a) pc=b */ OPCODE(JMPNOT, BS) /* if !R(a) pc=b */ OPCODE(JMPNIL, BS) /* if R(a)==nil pc=b */ -OPCODE(ONERR, S) /* rescue_push(a) */ OPCODE(EXCEPT, B) /* R(a) = exc */ OPCODE(RESCUE, BB) /* R(b) = R(a).isa?(R(b)) */ -OPCODE(POPERR, B) /* a.times{rescue_pop()} */ OPCODE(RAISEIF, B) /* raise(R(a)) if R(a) */ -OPCODE(EPUSH, B) /* ensure_push(SEQ[a]) */ -OPCODE(EPOP, B) /* A.times{ensure_pop().call} */ OPCODE(SENDV, BB) /* R(a) = call(R(a),Syms(b),*R(a+1)) */ OPCODE(SENDVB, BB) /* R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) */ OPCODE(SEND, BBB) /* R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) */ diff --git a/src/codedump.c b/src/codedump.c index 2225da4ce..81212921d 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -493,12 +493,6 @@ codedump(mrb_state *mrb, const mrb_irep *irep) printf("OP_ERR\tL(%d)\n", a); } break; - CASE(OP_EPUSH, B); - printf("OP_EPUSH\t\t:I(%d:%p)\n", a, irep->reps[a]); - break; - CASE(OP_ONERR, S); - printf("OP_ONERR\t%03d\n", a); - break; CASE(OP_EXCEPT, B); printf("OP_EXCEPT\tR%d\t\t", a); print_lv_a(mrb, irep, a); @@ -511,12 +505,6 @@ codedump(mrb_state *mrb, const mrb_irep *irep) printf("OP_RAISEIF\tR%d\t\t", a); print_lv_a(mrb, irep, a); break; - CASE(OP_POPERR, B); - printf("OP_POPERR\t%d\t\t\n", a); - break; - CASE(OP_EPOP, B); - printf("OP_EPOP\t%d\n", a); - break; CASE(OP_DEBUG, BBB); printf("OP_DEBUG\t%d\t%d\t%d\n", a, b, c); diff --git a/src/vm.c b/src/vm.c index 2dbbe85f8..d11caa5c7 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1231,29 +1231,6 @@ RETRY_TRY_BLOCK: NEXT; } - CASE(OP_ONERR, S) { - /* check rescue stack */ - if (mrb->c->ci->ridx == UINT16_MAX-1) { - mrb_value exc = mrb_exc_new_str_lit(mrb, E_RUNTIME_ERROR, "too many nested rescues"); - mrb_exc_set(mrb, exc); - goto L_RAISE; - } - /* expand rescue stack */ - if (mrb->c->rsize <= mrb->c->ci->ridx) { - if (mrb->c->rsize == 0) mrb->c->rsize = RESCUE_STACK_INIT_SIZE; - else { - mrb->c->rsize *= 2; - if (mrb->c->rsize <= mrb->c->ci->ridx) { - mrb->c->rsize = UINT16_MAX; - } - } - mrb->c->rescue = (uint16_t*)mrb_realloc(mrb, mrb->c->rescue, sizeof(uint16_t)*mrb->c->rsize); - } - /* push rescue stack */ - mrb->c->rescue[mrb->c->ci->ridx++] = a; - NEXT; - } - CASE(OP_EXCEPT, B) { mrb_value exc; @@ -1300,11 +1277,6 @@ RETRY_TRY_BLOCK: NEXT; } - CASE(OP_POPERR, B) { - mrb->c->ci->ridx -= a; - NEXT; - } - CASE(OP_RAISEIF, B) { mrb_value exc = regs[a]; if (mrb_break_p(exc)) { @@ -1318,64 +1290,6 @@ RETRY_TRY_BLOCK: NEXT; } - CASE(OP_EPUSH, B) { - struct RProc *p; - - p = mrb_closure_new(mrb, irep->reps[a]); - /* check ensure stack */ - if (mrb->c->eidx == UINT16_MAX-1) { - mrb_value exc = mrb_exc_new_str_lit(mrb, E_RUNTIME_ERROR, "too many nested ensures"); - mrb_exc_set(mrb, exc); - goto L_RAISE; - } - /* expand ensure stack */ - if (mrb->c->esize <= mrb->c->eidx+1) { - if (mrb->c->esize == 0) mrb->c->esize = ENSURE_STACK_INIT_SIZE; - else { - mrb->c->esize *= 2; - if (mrb->c->esize <= mrb->c->eidx) { - mrb->c->esize = UINT16_MAX; - } - } - mrb->c->ensure = (struct RProc**)mrb_realloc(mrb, mrb->c->ensure, sizeof(struct RProc*)*mrb->c->esize); - } - /* push ensure stack */ - mrb->c->ensure[mrb->c->eidx++] = p; - mrb->c->ensure[mrb->c->eidx] = NULL; - mrb_gc_arena_restore(mrb, ai); - NEXT; - } - - CASE(OP_EPOP, B) { - mrb_callinfo *ci = mrb->c->ci; - unsigned int n, epos = ci->epos; - mrb_value self = regs[0]; - struct RClass *target_class = ci->target_class; - - if (mrb->c->eidx <= epos) { - NEXT; - } - - if (a > (int)mrb->c->eidx - epos) - a = mrb->c->eidx - epos; - for (n=0; nnregs; - - proc = mrb->c->ensure[epos+n]; - mrb->c->ensure[epos+n] = NULL; - if (proc == NULL) continue; - irep = proc->body.irep; - ci = cipush(mrb, pc, nregs, nregs, target_class, proc, ci->mid, 0); - mrb_stack_extend(mrb, irep->nregs); - regs[0] = self; - pc = irep->iseq; - } - pool = irep->pool; - syms = irep->syms; - mrb->c->eidx = epos; - JUMP; - } - CASE(OP_SENDV, BB) { c = CALL_MAXARGS; goto L_SEND; -- cgit v1.2.3 From c1f112c49a597da8478516261f0812bc073f6cd8 Mon Sep 17 00:00:00 2001 From: dearblue Date: Sat, 18 Jul 2020 19:05:12 +0900 Subject: Replace global jump with catch handler implementation When a global jump occurs, look at the catch handler table to determine where to jump. In that case, `pc` already shows the following instruction, but since the table shows `begin_offset ... end_offset`, the comparison is done with `begin_offset < pc && pc <= end_offset`. If there is a corresponding handler, move `pc` to `handler.target_offset` and continue running the VM. When a global jump across `ensure` is made by `return`, `break`, `next`, `redo` and `retry`, the extended `RBreak` object saves and restores the C-level execution position. This extended `RBreak` can have tag information, which makes it a pseudo coroutine (the "tag" mimics CRuby). The implementation of pseudo coroutines by `RBreak` is summarized by `CHECKPOINT_RESTORE ... CHECKPOINT_MAIN ... CHECKPOINT_END` and `throw_tagged_break` / `unwind_ensure` macros. The restart of processing is branched by `RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS)`. - Not only `rescue` blocks but also `ensure` blocks are now sandwiched between `OP_EXCEPT` and `OP_RAISEIF`. - Remove the function `ecall()`. It is no longer necessary to re-enter the VM to perform an "ensure block". This will resolves #1888. - Added instruction `OP_JUW` (Jump while UnWind). It jumps unconditionally like `OP_JMP`, but searches the catch handler table and executes the ensure block. Since it searches the catch handler table, it is much heavier than `OP_JMP`. --- doc/opcode.md | 1 + include/mruby.h | 8 - include/mruby/error.h | 33 ++++ include/mruby/ops.h | 1 + mrbgems/mruby-compiler/core/codegen.c | 91 ++++----- mrbgems/mruby-os-memsize/src/memsize.c | 2 - src/codedump.c | 3 + src/gc.c | 8 - src/state.c | 2 - src/vm.c | 339 +++++++++++++++++++++++---------- 10 files changed, 311 insertions(+), 177 deletions(-) (limited to 'src/codedump.c') diff --git a/doc/opcode.md b/doc/opcode.md index 385bf9468..abdee704f 100644 --- a/doc/opcode.md +++ b/doc/opcode.md @@ -62,6 +62,7 @@ sign) of operands. | OP_JMPIF | BS | if R(a) pc=b | | OP_JMPNOT | BS | if !R(a) pc=b | | OP_JMPNIL | BS | if R(a)==nil pc=b | +| OP_JUW | S | unwind_and_jump_to(a) | | OP_EXCEPT | B | R(a) = exc | | OP_RESCUE | BB | R(b) = R(a).isa?(R(b)) | | OP_RAISEIF | B | raise(R(a)) if R(a) | diff --git a/include/mruby.h b/include/mruby.h index c9425e8a7..9f1d1aa30 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -149,8 +149,6 @@ typedef struct { mrb_sym mid; const struct RProc *proc; mrb_value *stackent; - uint16_t ridx; - uint16_t epos; struct REnv *env; const mrb_code *pc; /* return address */ const mrb_code *err; /* error position */ @@ -177,11 +175,6 @@ struct mrb_context { mrb_callinfo *ci; mrb_callinfo *cibase, *ciend; - uint16_t *rescue; /* exception handler stack */ - uint16_t rsize; - struct RProc **ensure; /* ensure handler stack */ - uint16_t esize, eidx; - enum mrb_fiber_state status : 4; mrb_bool vmexec : 1; struct RFiber *fib; @@ -301,7 +294,6 @@ typedef struct mrb_state { mrb_atexit_func *atexit_stack; #endif uint16_t atexit_stack_len; - uint16_t ecall_nest; /* prevent infinite recursive ecall() */ } mrb_state; /** diff --git a/include/mruby/error.h b/include/mruby/error.h index 72f6c5f3d..67a0a539e 100644 --- a/include/mruby/error.h +++ b/include/mruby/error.h @@ -66,6 +66,39 @@ mrb_break_value_set(struct RBreak *brk, mrb_value val) #define mrb_break_proc_get(brk) ((brk)->proc) #define mrb_break_proc_set(brk, p) ((brk)->proc = p) +#define RBREAK_TAG_FOREACH(f) \ + f(RBREAK_TAG_BREAK, 0) \ + f(RBREAK_TAG_BREAK_UPPER, 1) \ + f(RBREAK_TAG_BREAK_INTARGET, 2) \ + f(RBREAK_TAG_RETURN_BLOCK, 3) \ + f(RBREAK_TAG_RETURN, 4) \ + f(RBREAK_TAG_RETURN_TOPLEVEL, 5) \ + f(RBREAK_TAG_JUMP, 6) \ + f(RBREAK_TAG_STOP, 7) + +#define RBREAK_TAG_DEFINE(tag, i) tag = i, +enum { + RBREAK_TAG_FOREACH(RBREAK_TAG_DEFINE) +}; +#undef RBREAK_TAG_DEFINE + +#define RBREAK_TAG_BIT 3 +#define RBREAK_TAG_BIT_OFF 8 +#define RBREAK_TAG_MASK (~(~UINT32_C(0) << RBREAK_TAG_BIT)) + +static inline uint32_t +mrb_break_tag_get(struct RBreak *brk) +{ + return (brk->flags >> RBREAK_TAG_BIT_OFF) & RBREAK_TAG_MASK; +} + +static inline void +mrb_break_tag_set(struct RBreak *brk, uint32_t tag) +{ + brk->flags &= ~(RBREAK_TAG_MASK << RBREAK_TAG_BIT_OFF); + brk->flags |= (tag & RBREAK_TAG_MASK) << RBREAK_TAG_BIT_OFF; +} + /** * Protect * diff --git a/include/mruby/ops.h b/include/mruby/ops.h index 8ff44088e..770e54f3d 100644 --- a/include/mruby/ops.h +++ b/include/mruby/ops.h @@ -49,6 +49,7 @@ OPCODE(JMP, S) /* pc=a */ OPCODE(JMPIF, BS) /* if R(a) pc=b */ OPCODE(JMPNOT, BS) /* if !R(a) pc=b */ OPCODE(JMPNIL, BS) /* if R(a)==nil pc=b */ +OPCODE(JUW, S) /* unwind_and_jump_to(a) */ OPCODE(EXCEPT, B) /* R(a) = exc */ OPCODE(RESCUE, BB) /* R(b) = R(a).isa?(R(b)) */ OPCODE(RAISEIF, B) /* raise(R(a)) if R(a) */ diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 7911ecb36..b3ce388a9 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -40,7 +40,6 @@ enum looptype { struct loopinfo { enum looptype type; int pc0, pc1, pc2, pc3, acc; - int ensure_level; struct loopinfo *prev; }; @@ -61,7 +60,6 @@ typedef struct scope { mrb_bool mscope:1; struct loopinfo *loop; - int ensure_level; mrb_sym filename_sym; uint16_t lineno; @@ -1465,16 +1463,19 @@ codegen(codegen_scope *s, node *tree, int val) { int noexc, exend, pos1, pos2, tmp; struct loopinfo *lp; + int catch_entry, begin, end; if (tree->car == NULL) goto exit; lp = loop_push(s, LOOP_BEGIN); lp->pc0 = new_label(s); - lp->pc1 = genjmp(s, OP_ONERR, 0); + catch_entry = catch_hander_new(s); + begin = s->pc; codegen(s, tree->car, VAL); pop(); lp->type = LOOP_RESCUE; + end = s->pc; noexc = genjmp(s, OP_JMP, 0); - dispatch(s, lp->pc1); + catch_hander_set(s, catch_entry, MRB_CATCH_RESCUE, begin, end, s->pc); tree = tree->cdr; exend = 0; pos1 = 0; @@ -1539,7 +1540,6 @@ codegen(codegen_scope *s, node *tree, int val) pop(); tree = tree->cdr; dispatch(s, noexc); - genop_1(s, OP_POPERR, 1); if (tree->car) { codegen(s, tree->car, val); } @@ -1555,14 +1555,22 @@ codegen(codegen_scope *s, node *tree, int val) if (!tree->cdr || !tree->cdr->cdr || (nint(tree->cdr->cdr->car) == NODE_BEGIN && tree->cdr->cdr->cdr)) { + int catch_entry, begin, end, target; int idx; - s->ensure_level++; - idx = scope_body(s, tree->cdr, NOVAL); - genop_1(s, OP_EPUSH, idx); + catch_entry = catch_hander_new(s); + begin = s->pc; codegen(s, tree->car, val); - s->ensure_level--; - genop_1(s, OP_EPOP, 1); + end = target = s->pc; + push(); + idx = cursp(); + genop_1(s, OP_EXCEPT, idx); + push(); + codegen(s, tree->cdr->cdr, NOVAL); + pop(); + genop_1(s, OP_RAISEIF, idx); + pop(); + catch_hander_set(s, catch_entry, MRB_CATCH_ENSURE, begin, end, target); } else { /* empty ensure ignored */ codegen(s, tree->car, val); @@ -2024,18 +2032,20 @@ codegen(codegen_scope *s, node *tree, int val) if ((len == 2 && name[0] == '|' && name[1] == '|') && (nint(tree->car->car) == NODE_CONST || nint(tree->car->car) == NODE_CVAR)) { - int onerr, noexc, exc; + int catch_entry, begin, end; + int noexc, exc; struct loopinfo *lp; - onerr = genjmp(s, OP_ONERR, 0); lp = loop_push(s, LOOP_BEGIN); - lp->pc1 = onerr; + lp->pc0 = new_label(s); + catch_entry = catch_hander_new(s); + begin = s->pc; exc = cursp(); codegen(s, tree->car, VAL); - lp->type = LOOP_RESCUE; - genop_1(s, OP_POPERR, 1); + end = s->pc; noexc = genjmp(s, OP_JMP, 0); - dispatch(s, onerr); + lp->type = LOOP_RESCUE; + catch_hander_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); @@ -2288,11 +2298,8 @@ codegen(codegen_scope *s, node *tree, int val) raise_error(s, "unexpected next"); } else if (s->loop->type == LOOP_NORMAL) { - if (s->ensure_level > s->loop->ensure_level) { - genop_1(s, OP_EPOP, s->ensure_level - s->loop->ensure_level); - } codegen(s, tree, NOVAL); - genjmp(s, OP_JMP, s->loop->pc0); + genjmp(s, OP_JUW, s->loop->pc0); } else { if (tree) { @@ -2312,10 +2319,7 @@ codegen(codegen_scope *s, node *tree, int val) raise_error(s, "unexpected redo"); } else { - if (s->ensure_level > s->loop->ensure_level) { - genop_1(s, OP_EPOP, s->ensure_level - s->loop->ensure_level); - } - genjmp(s, OP_JMP, s->loop->pc2); + genjmp(s, OP_JUW, s->loop->pc2); } if (val) push(); break; @@ -2323,32 +2327,16 @@ codegen(codegen_scope *s, node *tree, int val) case NODE_RETRY: { const char *msg = "unexpected retry"; + const struct loopinfo *lp = s->loop; - if (!s->loop) { + while (lp && lp->type != LOOP_RESCUE) { + lp = lp->prev; + } + if (!lp) { raise_error(s, msg); } else { - struct loopinfo *lp = s->loop; - int n = 0; - - while (lp && lp->type != LOOP_RESCUE) { - if (lp->type == LOOP_BEGIN) { - n++; - } - lp = lp->prev; - } - if (!lp) { - raise_error(s, msg); - } - else { - if (n > 0) { - genop_1(s, OP_POPERR, n); - } - if (s->ensure_level > lp->ensure_level) { - genop_1(s, OP_EPOP, s->ensure_level - lp->ensure_level); - } - genjmp(s, OP_JMP, lp->pc0); - } + genjmp(s, OP_JUW, lp->pc0); } if (val) push(); } @@ -3132,7 +3120,6 @@ loop_push(codegen_scope *s, enum looptype t) p->type = t; p->pc0 = p->pc1 = p->pc2 = p->pc3 = 0; p->prev = s->loop; - p->ensure_level = s->ensure_level; p->acc = cursp(); s->loop = p; @@ -3148,7 +3135,6 @@ loop_break(codegen_scope *s, node *tree) } else { struct loopinfo *loop; - int n = 0; if (tree) { gen_retval(s, tree); @@ -3157,7 +3143,6 @@ loop_break(codegen_scope *s, node *tree) loop = s->loop; while (loop) { if (loop->type == LOOP_BEGIN) { - n++; loop = loop->prev; } else if (loop->type == LOOP_RESCUE) { @@ -3171,20 +3156,14 @@ loop_break(codegen_scope *s, node *tree) raise_error(s, "unexpected break"); return; } - if (n > 0) { - genop_1(s, OP_POPERR, n); - } if (loop->type == LOOP_NORMAL) { int tmp; - if (s->ensure_level > s->loop->ensure_level) { - genop_1(s, OP_EPOP, s->ensure_level - s->loop->ensure_level); - } if (tree) { gen_move(s, loop->acc, cursp(), 0); } - tmp = genjmp(s, OP_JMP, loop->pc3); + tmp = genjmp(s, OP_JUW, loop->pc3); loop->pc3 = tmp; } else { diff --git a/mrbgems/mruby-os-memsize/src/memsize.c b/mrbgems/mruby-os-memsize/src/memsize.c index 191ab062d..7030299f4 100644 --- a/mrbgems/mruby-os-memsize/src/memsize.c +++ b/mrbgems/mruby-os-memsize/src/memsize.c @@ -133,8 +133,6 @@ os_memsize_of_object(mrb_state* mrb, mrb_value obj) size += mrb_objspace_page_slot_size() + sizeof(struct RFiber) + sizeof(struct mrb_context) + - sizeof(struct RProc *) * f->cxt->esize + - sizeof(uint16_t *) * f->cxt->rsize + sizeof(mrb_value) * stack_size + sizeof(mrb_callinfo) * ci_size; break; diff --git a/src/codedump.c b/src/codedump.c index 81212921d..095028a39 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -261,6 +261,9 @@ codedump(mrb_state *mrb, const mrb_irep *irep) CASE(OP_JMP, S); printf("OP_JMP\t\t%03d\n", a); break; + CASE(OP_JUW, S); + printf("OP_JUW\t\t%03d\n", a); + break; CASE(OP_JMPIF, BS); printf("OP_JMPIF\tR%d\t%03d\t", a, b); print_lv_a(mrb, irep, a); diff --git a/src/gc.c b/src/gc.c index ab9779e1b..17f7e81e4 100644 --- a/src/gc.c +++ b/src/gc.c @@ -640,7 +640,6 @@ mark_context_stack(mrb_state *mrb, struct mrb_context *c) static void mark_context(mrb_state *mrb, struct mrb_context *c) { - int i; mrb_callinfo *ci; start: @@ -657,10 +656,6 @@ mark_context(mrb_state *mrb, struct mrb_context *c) mrb_gc_mark(mrb, (struct RBasic*)ci->target_class); } } - /* mark ensure stack */ - for (i=0; ieidx; i++) { - mrb_gc_mark(mrb, (struct RBasic*)c->ensure[i]); - } /* mark fibers */ mrb_gc_mark(mrb, (struct RBasic*)c->fib); if (c->prev) { @@ -1014,9 +1009,6 @@ gc_gray_counts(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj) if (c->stbase + i > c->stend) i = c->stend - c->stbase; children += i; - /* mark ensure stack */ - children += c->eidx; - /* mark closure */ if (c->cibase) { for (i=0, ci = c->cibase; ci <= c->ci; i++, ci++) diff --git a/src/state.c b/src/state.c index 7a1283fa6..1f85448a1 100644 --- a/src/state.c +++ b/src/state.c @@ -171,8 +171,6 @@ mrb_free_context(mrb_state *mrb, struct mrb_context *c) if (!c) return; mrb_free(mrb, c->stbase); mrb_free(mrb, c->cibase); - mrb_free(mrb, c->rescue); - mrb_free(mrb, c->ensure); mrb_free(mrb, c); } diff --git a/src/vm.c b/src/vm.c index d11caa5c7..cc6f087f9 100644 --- a/src/vm.c +++ b/src/vm.c @@ -23,6 +23,7 @@ #include #include "value_array.h" #include +#include #ifdef MRB_DISABLE_STDIO #if defined(__cplusplus) @@ -280,8 +281,6 @@ cipush(mrb_state *mrb, const mrb_code *pc, int push_stacks, int acc, ci->mid = mid; ci->proc = proc; ci->stackent = c->stack; - ci->epos = c->eidx; - ci->ridx = ci[-1].ridx; ci->pc = pc; ci->argc = argc; ci->acc = acc; @@ -329,54 +328,6 @@ cipop(mrb_state *mrb) void mrb_exc_set(mrb_state *mrb, mrb_value exc); static mrb_value mrb_run(mrb_state *mrb, const struct RProc* proc, mrb_value self); -static void -ecall(mrb_state *mrb) -{ - struct RProc *p; - struct mrb_context *c = mrb->c; - mrb_callinfo *ci = c->ci; - struct RObject *exc; - struct REnv *env; - ptrdiff_t cioff; - int ai = mrb_gc_arena_save(mrb); - uint16_t i; - int nregs; - - if (c->eidx == 0) return; - i = --c->eidx; - - /* restrict total call depth of ecall() */ - if (++mrb->ecall_nest > MRB_ECALL_DEPTH_MAX) { - mrb_exc_raise(mrb, mrb_obj_value(mrb->stack_err)); - } - p = c->ensure[i]; - if (!p) return; - mrb_assert(!MRB_PROC_CFUNC_P(p)); - c->ensure[i] = NULL; - nregs = p->upper->body.irep->nregs; - if (ci->proc && !MRB_PROC_CFUNC_P(ci->proc) && - ci->proc->body.irep->nregs > nregs) { - nregs = ci->proc->body.irep->nregs; - } - cioff = ci - c->cibase; - ci = cipush(mrb, NULL, nregs, CI_ACC_SKIP, MRB_PROC_TARGET_CLASS(p), p, ci->mid, 0); - env = MRB_PROC_ENV(p); - mrb_assert(env); - exc = mrb->exc; mrb->exc = 0; - if (exc) { - mrb_gc_protect(mrb, mrb_obj_value(exc)); - } - if (mrb->c->fib) { - mrb_gc_protect(mrb, mrb_obj_value(mrb->c->fib)); - } - mrb_run(mrb, p, env->stack[0]); - mrb->c = c; - c->ci = c->cibase + cioff; - if (!mrb->exc) mrb->exc = exc; - mrb_gc_arena_restore(mrb, ai); - mrb->ecall_nest--; -} - #ifndef MRB_FUNCALL_ARGC_MAX #define MRB_FUNCALL_ARGC_MAX 16 #endif @@ -821,17 +772,56 @@ mrb_yield_cont(mrb_state *mrb, mrb_value b, mrb_value self, mrb_int argc, const } static struct RBreak* -break_new(mrb_state *mrb, const struct RProc *p, mrb_value val) +break_new(mrb_state *mrb, uint32_t tag, const struct RProc *p, mrb_value val) { struct RBreak *brk; brk = (struct RBreak*)mrb_obj_alloc(mrb, MRB_TT_BREAK, NULL); mrb_break_proc_set(brk, p); mrb_break_value_set(brk, val); + mrb_break_tag_set(brk, tag); return brk; } +#define MRB_CATCH_FILTER_RESCUE (UINT32_C(1) << MRB_CATCH_RESCUE) +#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 * +catch_handler_find(mrb_state *mrb, mrb_callinfo *ci, const mrb_code *pc, uint32_t filter) +{ + mrb_irep *irep; + ptrdiff_t xpc; + size_t cnt; + const struct mrb_irep_catch_hander *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)) + + if (ci->proc == NULL || MRB_PROC_CFUNC_P(ci->proc)) return NULL; + irep = ci->proc->body.irep; + if (irep->clen < 1) return NULL; + xpc = pc - irep->iseq; + /* If it retry at the top level, pc will be 0, so check with -1 as the start position */ + mrb_assert(catch_cover_p(xpc, -1, irep->ilen)); + if (!catch_cover_p(xpc, -1, irep->ilen)) return NULL; + + /* Currently uses a simple linear search to avoid processing complexity. */ + cnt = irep->clen; + e = mrb_irep_catch_handler_table(irep) + cnt - 1; + for (; cnt > 0; cnt --, e --) { + if (((UINT32_C(1) << e->type) & filter) && + catch_cover_p(xpc, bin_to_uint16(e->begin), bin_to_uint16(e->end))) { + return e; + } + } + +#undef catch_cover_p + + return NULL; +} + typedef enum { LOCALJUMP_ERROR_RETURN = 0, LOCALJUMP_ERROR_BREAK = 1, @@ -878,6 +868,81 @@ argnum_error(mrb_state *mrb, mrb_int num) mrb_exc_set(mrb, exc); } +static mrb_bool +break_tag_p(struct RBreak *brk, uint32_t tag) +{ + return (brk != NULL && brk->tt == MRB_TT_BREAK) ? TRUE : FALSE; +} + +static void +prepare_tagged_break(mrb_state *mrb, uint32_t tag, struct RProc *proc, mrb_value val) +{ + if (break_tag_p((struct RBreak*)mrb->exc, tag)) { + mrb_break_tag_set((struct RBreak*)mrb->exc, tag); + } + else { + mrb->exc = (struct RObject*)break_new(mrb, tag, proc, val); + } +} + +#define THROW_TAGGED_BREAK(mrb, tag, proc, val) \ + do { \ + prepare_tagged_break(mrb, tag, proc, val); \ + goto L_CATCH_TAGGED_BREAK; \ + } while (0) + +#define UNWIND_ENSURE(mrb, ci, pc, tag, proc, val) \ + do { \ + ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ENSURE); \ + if (ch) { \ + THROW_TAGGED_BREAK(mrb, tag, proc, val); \ + } \ + } while (0) + +/* + * CHECKPOINT_RESTORE(tag) { + * This part is executed when jumping by the same "tag" of RBreak (it is not executed the first time). + * Write the code required (initialization of variables, etc.) for the subsequent processing. + * } + * CHECKPOINT_MAIN(tag) { + * This part is always executed. + * } + * CHECKPOINT_END(tag); + * + * ... + * + * // Jump to CHECKPOINT_RESTORE with the same "tag". + * goto CHECKPOINT_LABEL_MAKE(tag); + */ + +#define CHECKPOINT_LABEL_MAKE(tag) L_CHECKPOINT_ ## tag + +#define CHECKPOINT_RESTORE(tag) \ + do { \ + DEBUG_ONLY_EXPR(int current_checkpoint_tag); \ + DEBUG_ONLY_EXPR(current_checkpoint_tag = (tag)); \ + if (FALSE) { \ + CHECKPOINT_LABEL_MAKE(tag): \ + DEBUG_ONLY_EXPR(current_checkpoint_tag = (tag)); \ + do { + +#define CHECKPOINT_MAIN(tag) \ + } while (0); \ + } \ + mrb_assert((tag) == current_checkpoint_tag); \ + do { + +#define CHECKPOINT_END(tag) \ + } while (0); \ + mrb_assert((tag) == current_checkpoint_tag); \ + } while (0) + +#ifdef MRB_DEBUG +#define DEBUG_ONLY_EXPR(e) e +#else +#define DEBUG_ONLY_EXPR(e) ((void)0) +#endif + #define ERR_PC_SET(mrb) mrb->c->ci->err = pc0; #define ERR_PC_CLR(mrb) mrb->c->ci->err = 0; #ifdef MRB_ENABLE_DEBUG_HOOK @@ -976,6 +1041,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; #ifdef DIRECT_THREADED static void *optable[] = { @@ -1231,6 +1297,30 @@ RETRY_TRY_BLOCK: NEXT; } + CASE(OP_JUW, S) { + CHECKPOINT_RESTORE(RBREAK_TAG_JUMP) { + struct RBreak *brk = (struct RBreak*)mrb->exc; + mrb_value target = mrb_break_value_get(brk); + mrb_assert(mrb_fixnum_p(target)); + a = mrb_fixnum(target); + mrb_assert(a >= 0 && a < irep->ilen); + } + CHECKPOINT_MAIN(RBREAK_TAG_JUMP) { + ch = catch_handler_find(mrb, mrb->c->ci, pc, MRB_CATCH_FILTER_ENSURE); + if (ch) { + /* avoiding a jump from a catch handler into the same handler */ + if (a < bin_to_uint16(ch->begin) || a >= bin_to_uint16(ch->end)) { + THROW_TAGGED_BREAK(mrb, RBREAK_TAG_JUMP, proc, mrb_fixnum_value(a)); + } + } + } + CHECKPOINT_END(RBREAK_TAG_JUMP); + + mrb->exc = NULL; /* clear break object */ + pc = irep->iseq + a; + JUMP; + } + CASE(OP_EXCEPT, B) { mrb_value exc; @@ -1563,6 +1653,7 @@ RETRY_TRY_BLOCK: mrb_gc_arena_restore(mrb, ai); if (mrb->exc) goto L_RAISE; ci = mrb->c->ci; + mrb_assert(!mrb_break_p(v)); if (!ci->target_class) { /* return from context modifying method (resume/yield) */ if (ci->acc == CI_ACC_RESUMED) { mrb->jmp = prev_jmp; @@ -1839,13 +1930,7 @@ RETRY_TRY_BLOCK: c = OP_R_NORMAL; L_RETURN: { - mrb_callinfo *ci; - -#define ecall_adjust() do {\ - ptrdiff_t cioff = ci - mrb->c->cibase;\ - ecall(mrb);\ - ci = mrb->c->cibase + cioff;\ -} while (0) + mrb_callinfo *ci; ci = mrb->c->ci; if (ci->mid) { @@ -1873,17 +1958,20 @@ RETRY_TRY_BLOCK: L_RAISE: ci0 = ci = mrb->c->ci; if (ci == mrb->c->cibase) { - if (ci->ridx == 0) goto L_FTOP; - goto L_RESCUE; + ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ALL); + if (ch == NULL) goto L_FTOP; + goto L_CATCH; } - while (ci[0].ridx == ci[-1].ridx) { + while ((ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ALL)) == NULL) { ci = cipop(mrb); if (ci[1].acc == CI_ACC_SKIP && prev_jmp) { mrb->jmp = prev_jmp; MRB_THROW(prev_jmp); } + pc = ci[1].pc; if (ci == mrb->c->cibase) { - if (ci->ridx == 0) { + ch = catch_handler_find(mrb, ci, pc, MRB_CATCH_FILTER_ALL); + if (ch == NULL) { L_FTOP: /* fiber top */ if (mrb->c == mrb->root_c) { mrb->c->stack = mrb->c->stbase; @@ -1892,9 +1980,6 @@ RETRY_TRY_BLOCK: else { struct mrb_context *c = mrb->c; - while (c->eidx > ci->epos) { - ecall_adjust(); - } c->status = MRB_FIBER_TERMINATED; mrb->c = c->prev; c->prev = NULL; @@ -1903,15 +1988,13 @@ RETRY_TRY_BLOCK: } break; } - /* call ensure only when we skip this callinfo */ - if (ci[0].ridx == ci[-1].ridx) { - while (mrb->c->eidx > ci->epos) { - ecall_adjust(); - } - } } - L_RESCUE: - if (ci->ridx == 0) goto L_STOP; + L_CATCH: + if (ch == NULL) goto L_STOP; + if (FALSE) { + L_CATCH_TAGGED_BREAK: /* from THROW_TAGGED_BREAK() or UNWIND_ENSURE() */ + ci = ci0 = mrb->c->ci; + } proc = ci->proc; irep = proc->body.irep; pool = irep->pool; @@ -1920,7 +2003,7 @@ RETRY_TRY_BLOCK: mrb->c->stack = ci[1].stackent; } mrb_stack_extend(mrb, irep->nregs); - pc = irep->iseq+mrb->c->rescue[--ci->ridx]; + pc = irep->iseq + bin_to_uint16(ch->target); } else { int acc; @@ -1950,8 +2033,19 @@ RETRY_TRY_BLOCK: localjump_error(mrb, LOCALJUMP_ERROR_RETURN); goto L_RAISE; } - ci--; + CHECKPOINT_RESTORE(RBREAK_TAG_RETURN_BLOCK) { + cibase = mrb->c->cibase; + dst = top_proc(mrb, proc); + } + CHECKPOINT_MAIN(RBREAK_TAG_RETURN_BLOCK) { + UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_RETURN_BLOCK, proc, v); + } + CHECKPOINT_END(RBREAK_TAG_RETURN_BLOCK); + pc = ci->pc; + ci = cipop(mrb); } + mrb->exc = NULL; /* clear break object */ + proc = ci->proc; if (ci <= cibase) { localjump_error(mrb, LOCALJUMP_ERROR_RETURN); goto L_RAISE; @@ -1966,16 +2060,20 @@ RETRY_TRY_BLOCK: if (!c->prev) { /* toplevel return */ regs[irep->nlocals] = v; - goto L_STOP; + 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_exc_set(mrb, exc); goto L_RAISE; } - while (c->eidx > 0) { - ecall(mrb); + CHECKPOINT_RESTORE(RBREAK_TAG_RETURN_TOPLEVEL) { + c = mrb->c; } + CHECKPOINT_MAIN(RBREAK_TAG_RETURN_TOPLEVEL) { + UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_RETURN_TOPLEVEL, proc, v); + } + CHECKPOINT_END(RBREAK_TAG_RETURN_TOPLEVEL); /* automatic yield at the end */ c->status = MRB_FIBER_TERMINATED; mrb->c = c->prev; @@ -1983,6 +2081,14 @@ RETRY_TRY_BLOCK: mrb->c->status = MRB_FIBER_RUNNING; ci = mrb->c->ci; } + CHECKPOINT_RESTORE(RBREAK_TAG_RETURN) { + /* do nothing */ + } + CHECKPOINT_MAIN(RBREAK_TAG_RETURN) { + UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_RETURN, proc, v); + } + CHECKPOINT_END(RBREAK_TAG_RETURN); + mrb->exc = NULL; /* clear break object */ break; case OP_R_BREAK: if (MRB_PROC_STRICT_P(proc)) goto NORMAL_RETURN; @@ -2005,9 +2111,13 @@ RETRY_TRY_BLOCK: goto L_BREAK_ERROR; } } - while (mrb->c->eidx > mrb->c->ci->epos) { - ecall_adjust(); + CHECKPOINT_RESTORE(RBREAK_TAG_BREAK) { + /* do nothing */ } + CHECKPOINT_MAIN(RBREAK_TAG_BREAK) { + UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_BREAK, proc, v); + } + CHECKPOINT_END(RBREAK_TAG_BREAK); /* break from fiber block */ if (ci == mrb->c->cibase && ci->pc) { struct mrb_context *c = mrb->c; @@ -2017,45 +2127,64 @@ RETRY_TRY_BLOCK: ci = mrb->c->ci; } if (ci->acc < 0) { + ci = cipop(mrb); mrb_gc_arena_restore(mrb, ai); mrb->c->vmexec = FALSE; - mrb->exc = (struct RObject*)break_new(mrb, proc, v); + mrb->exc = (struct RObject*)break_new(mrb, RBREAK_TAG_BREAK, proc, v); mrb->jmp = prev_jmp; MRB_THROW(prev_jmp); } if (FALSE) { + struct RBreak *brk; + L_BREAK: - v = mrb_break_value_get((struct RBreak*)mrb->exc); - proc = mrb_break_proc_get((struct RBreak*)mrb->exc); - mrb->exc = NULL; + brk = (struct RBreak*)mrb->exc; + proc = mrb_break_proc_get(brk); + v = mrb_break_value_get(brk); ci = mrb->c->ci; + + switch (mrb_break_tag_get(brk)) { +#define DISPATCH_CHECKPOINTS(n, i) case n: goto CHECKPOINT_LABEL_MAKE(n); + RBREAK_TAG_FOREACH(DISPATCH_CHECKPOINTS) +#undef DISPATCH_CHECKPOINTS + default: + mrb_assert(!"wrong break tag"); + } } mrb->c->stack = ci->stackent; - proc = proc->upper; - while (mrb->c->cibase < ci && ci[-1].proc != proc) { + while (mrb->c->cibase < ci && ci[-1].proc != proc->upper) { if (ci[-1].acc == CI_ACC_SKIP) { - while (ci < mrb->c->ci) { - cipop(mrb); - } goto L_BREAK_ERROR; } - ci--; + CHECKPOINT_RESTORE(RBREAK_TAG_BREAK_UPPER) { + /* do nothing */ + } + CHECKPOINT_MAIN(RBREAK_TAG_BREAK_UPPER) { + UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_BREAK_UPPER, proc, v); + } + CHECKPOINT_END(RBREAK_TAG_BREAK_UPPER); + pc = ci->pc; + ci = cipop(mrb); } + CHECKPOINT_RESTORE(RBREAK_TAG_BREAK_INTARGET) { + /* do nothing */ + } + CHECKPOINT_MAIN(RBREAK_TAG_BREAK_INTARGET) { + UNWIND_ENSURE(mrb, ci, pc, RBREAK_TAG_BREAK_INTARGET, proc, v); + } + CHECKPOINT_END(RBREAK_TAG_BREAK_INTARGET); if (ci == mrb->c->cibase) { goto L_BREAK_ERROR; } + mrb->exc = NULL; /* clear break object */ break; default: /* cannot happen */ break; } - while (ci < mrb->c->ci) { - cipop(mrb); - } - ci[0].ridx = ci[-1].ridx; - while (mrb->c->eidx > ci->epos) { - ecall_adjust(); - } + mrb_assert(ci == mrb->c->ci); + mrb_assert(mrb->exc == NULL); + if (mrb->c->vmexec && !ci->target_class) { mrb_gc_arena_restore(mrb, ai); mrb->c->vmexec = FALSE; @@ -2679,14 +2808,18 @@ RETRY_TRY_BLOCK: CASE(OP_STOP, Z) { /* stop VM */ - L_STOP: - while (mrb->c->eidx > 0) { - ecall(mrb); + CHECKPOINT_RESTORE(RBREAK_TAG_STOP) { + /* do nothing */ + } + CHECKPOINT_MAIN(RBREAK_TAG_STOP) { + UNWIND_ENSURE(mrb, mrb->c->ci, pc, RBREAK_TAG_STOP, proc, mrb_nil_value()); } - mrb->c->cibase->ridx = 0; + CHECKPOINT_END(RBREAK_TAG_STOP); + L_STOP: ERR_PC_CLR(mrb); mrb->jmp = prev_jmp; if (mrb->exc) { + mrb_assert(mrb->exc->tt == MRB_TT_EXCEPTION); return mrb_obj_value(mrb->exc); } return regs[irep->nlocals]; @@ -2696,6 +2829,10 @@ RETRY_TRY_BLOCK: #undef regs } MRB_CATCH(&c_jmp) { + mrb_callinfo *ci = mrb->c->ci; + while (ci > mrb->c->cibase && ci->acc == CI_ACC_DIRECT) { + ci = cipop(mrb); + } exc_catched = TRUE; goto RETRY_TRY_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/codedump.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 107c777341c4768f0208e590a9ec6c8b9a241060 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 8 Aug 2020 15:57:42 +0900 Subject: Rename `OP_JUW` instruction to `OP_JMPUW`. --- doc/opcode.md | 2 +- include/mruby/ops.h | 2 +- mrbgems/mruby-compiler/core/codegen.c | 8 ++++---- src/codedump.c | 4 ++-- src/vm.c | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/codedump.c') diff --git a/doc/opcode.md b/doc/opcode.md index abdee704f..513b28302 100644 --- a/doc/opcode.md +++ b/doc/opcode.md @@ -62,7 +62,7 @@ sign) of operands. | OP_JMPIF | BS | if R(a) pc=b | | OP_JMPNOT | BS | if !R(a) pc=b | | OP_JMPNIL | BS | if R(a)==nil pc=b | -| OP_JUW | S | unwind_and_jump_to(a) | +| OP_JMPUW | S | unwind_and_jump_to(a) | | OP_EXCEPT | B | R(a) = exc | | OP_RESCUE | BB | R(b) = R(a).isa?(R(b)) | | OP_RAISEIF | B | raise(R(a)) if R(a) | diff --git a/include/mruby/ops.h b/include/mruby/ops.h index 770e54f3d..75936a791 100644 --- a/include/mruby/ops.h +++ b/include/mruby/ops.h @@ -49,7 +49,7 @@ OPCODE(JMP, S) /* pc=a */ OPCODE(JMPIF, BS) /* if R(a) pc=b */ OPCODE(JMPNOT, BS) /* if !R(a) pc=b */ OPCODE(JMPNIL, BS) /* if R(a)==nil pc=b */ -OPCODE(JUW, S) /* unwind_and_jump_to(a) */ +OPCODE(JMPUW, S) /* unwind_and_jump_to(a) */ OPCODE(EXCEPT, B) /* R(a) = exc */ OPCODE(RESCUE, BB) /* R(b) = R(a).isa?(R(b)) */ OPCODE(RAISEIF, B) /* raise(R(a)) if R(a) */ diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 2ede5b81e..f60f1f077 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2299,7 +2299,7 @@ codegen(codegen_scope *s, node *tree, int val) } else if (s->loop->type == LOOP_NORMAL) { codegen(s, tree, NOVAL); - genjmp(s, OP_JUW, s->loop->pc0); + genjmp(s, OP_JMPUW, s->loop->pc0); } else { if (tree) { @@ -2319,7 +2319,7 @@ codegen(codegen_scope *s, node *tree, int val) raise_error(s, "unexpected redo"); } else { - genjmp(s, OP_JUW, s->loop->pc2); + genjmp(s, OP_JMPUW, s->loop->pc2); } if (val) push(); break; @@ -2336,7 +2336,7 @@ codegen(codegen_scope *s, node *tree, int val) raise_error(s, msg); } else { - genjmp(s, OP_JUW, lp->pc0); + genjmp(s, OP_JMPUW, lp->pc0); } if (val) push(); } @@ -3163,7 +3163,7 @@ loop_break(codegen_scope *s, node *tree) if (tree) { gen_move(s, loop->acc, cursp(), 0); } - tmp = genjmp(s, OP_JUW, loop->pc3); + tmp = genjmp(s, OP_JMPUW, loop->pc3); loop->pc3 = tmp; } else { diff --git a/src/codedump.c b/src/codedump.c index 389ed3c8f..3f0801929 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -261,8 +261,8 @@ codedump(mrb_state *mrb, const mrb_irep *irep) CASE(OP_JMP, S); printf("OP_JMP\t\t%03d\n", a); break; - CASE(OP_JUW, S); - printf("OP_JUW\t\t%03d\n", a); + CASE(OP_JMPUW, S); + printf("OP_JMPUW\t\t%03d\n", a); break; CASE(OP_JMPIF, BS); printf("OP_JMPIF\tR%d\t%03d\t", a, b); diff --git a/src/vm.c b/src/vm.c index 727c37d53..82301aaf4 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1298,7 +1298,7 @@ RETRY_TRY_BLOCK: NEXT; } - CASE(OP_JUW, S) { + CASE(OP_JMPUW, S) { CHECKPOINT_RESTORE(RBREAK_TAG_JUMP) { struct RBreak *brk = (struct RBreak*)mrb->exc; mrb_value target = mrb_break_value_get(brk); -- cgit v1.2.3