52#define YYBISON_VERSION "3.8.2"
55#define YYSKELETON_NAME "yacc.c"
74# error needs pure parser
77#define YYERROR_VERBOSE 1
78#define YYSTACK_USE_ALLOCA 0
79#define YYLTYPE rb_code_location_t
80#define YYLTYPE_IS_DECLARED 1
94#include "internal/error.h"
102#include "internal/symbol.h"
105#include "internal/variable.h"
134#define NO_LEX_CTXT (struct lex_context){0}
136#define AREF(ary, i) RARRAY_AREF(ary, i)
138#ifndef WARN_PAST_SCOPE
139# define WARN_PAST_SCOPE 0
144#define yydebug (p->debug)
146#define YYMALLOC(size) rb_parser_malloc(p, (size))
147#define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
148#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
149#define YYFREE(ptr) rb_parser_free(p, (ptr))
150#define YYFPRINTF rb_parser_printf
151#define YY_LOCATION_PRINT(File, loc) \
152 rb_parser_printf(p, "%d.%d-%d.%d", \
153 (loc).beg_pos.lineno, (loc).beg_pos.column,\
154 (loc).end_pos.lineno, (loc).end_pos.column)
155#define YYLLOC_DEFAULT(Current, Rhs, N) \
159 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
160 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
164 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
165 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
169#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
170 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
171#define RUBY_SET_YYLLOC_OF_NONE(Current) \
172 rb_parser_set_location_of_none(p, &(Current))
173#define RUBY_SET_YYLLOC(Current) \
174 rb_parser_set_location(p, &(Current))
175#define RUBY_INIT_YYLLOC() \
177 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
178 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
199#define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
219#define IS_lex_state_for(x, ls) ((x) & (ls))
220#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
221#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
222#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
224# define SET_LEX_STATE(ls) \
227 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
228 (enum lex_state_e)(ls)))
234# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
235# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
236# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
237# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
238# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
242#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
243#define COND_POP() BITSTACK_POP(cond_stack)
244#define COND_P() BITSTACK_SET_P(cond_stack)
245#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
249#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
250#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
251#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
252#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
282#define NUMPARAM_ID_P(id) numparam_id_p(id)
283#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
284#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
294#define DVARS_INHERIT ((void*)1)
295#define DVARS_TOPSCOPE NULL
296#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
386 unsigned int past_scope_enabled: 1;
415 VALUE parsing_thread;
419#define intern_cstr(n,l,en) rb_intern3(n,l,en)
421#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
422#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
423#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
424#define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
425#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
458#define yyerror0(msg) parser_yyerror(p, NULL, (msg))
459#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
460#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
461#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
470#define compile_for_eval (0)
472#define compile_for_eval (p->parent_iseq != 0)
475#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
477#define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
478#define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
479#define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
481#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
498 && !RB_TYPE_P(obj,
T_NODE)
509#define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
523set_line_body(
NODE *body,
int line)
533#define yyparse ruby_yyparse
537#define new_nil(loc) NEW_NIL(loc)
549static NODE *remove_begin_all(
NODE*);
550#define value_expr(node) value_expr_gen(p, (node))
574static bool args_info_empty_p(
struct rb_args_info *args);
583static void warn_one_line_pattern_matching(
struct parser_params *p,
NODE *node,
NODE *pattern,
bool right_assign);
621#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
641#define get_id(id) (id)
642#define get_value(val) (val)
643#define get_num(num) (num)
645#define NODE_RIPPER NODE_CDECL
646#define NEW_RIPPER(a,b,c,loc) (VALUE)NEW_CDECL(a,b,c,loc)
648static inline int ripper_is_node_yylval(
VALUE n);
653 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
654 add_mark_object(p, b);
655 add_mark_object(p, c);
656 return NEW_RIPPER(a, b, c, &NULL_LOC);
660ripper_is_node_yylval(
VALUE n)
665#define value_expr(node) ((void)(node))
666#define remove_begin(node) (node)
667#define void_stmts(p,x) (x)
668#define rb_dvar_defined(id, base) 0
669#define rb_local_defined(id, base) 0
671#define get_id(id) ripper_get_id(id)
673#define get_value(val) ripper_get_value(val)
674#define get_num(num) (int)get_id(num)
678#define method_cond(p,node,loc) (node)
679#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
680#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
681#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
682#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
684#define new_nil(loc) Qnil
701RUBY_SYMBOL_EXPORT_BEGIN
711RUBY_SYMBOL_EXPORT_END
740#define dyna_var(p, id) local_var(p, id)
751# define METHOD_NOT idNOT
753# define METHOD_NOT '!'
756#define idFWD_REST '*'
758#define idFWD_KWREST idPow
760#define idFWD_KWREST 0
762#define idFWD_BLOCK '&'
764#define RE_OPTION_ONCE (1<<16)
765#define RE_OPTION_ENCODING_SHIFT 8
766#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
767#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
768#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
769#define RE_OPTION_MASK 0xff
770#define RE_OPTION_ARG_ENCODING_NONE 32
792#define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
799#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
801# define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
803# define HERETERM_LENGTH_MAX UINT_MAX
806#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
816#define STRTERM_HEREDOC IMEMO_FL_USER0
838#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
841#define TOKEN2ID(tok) ( \
842 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
843 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
844 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
845 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
846 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
847 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
848 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
853#define RIPPER_VERSION "0.1.0"
855static inline VALUE intern_sym(
const char *
name);
869#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
870#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
871#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
872#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
873#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
874#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
875#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
877#define yyparse ripper_yyparse
879#define ID2VAL(id) STATIC_ID2SYM(id)
880#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
881#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
883#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
884 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
886#define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
892 VALUE kw_args =
t->u1.value, kw_rest_arg =
t->u2.value, block =
t->u3.value;
893 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
900 add_mark_object(p, kw_args);
901 add_mark_object(p, kw_rest_arg);
902 add_mark_object(p, block);
916 VALUE pre_args =
t->u1.value, rest_arg =
t->u2.value, post_args =
t->u3.value;
918 if (!
NIL_P(pre_arg)) {
919 if (!
NIL_P(pre_args)) {
926 return dispatch4(aryptn, constant, pre_args, rest_arg, post_args);
935 rest_arg = dispatch1(var_field, rest_arg ? rest_arg :
Qnil);
942 add_mark_object(p, pre_args);
943 add_mark_object(p, rest_arg);
944 add_mark_object(p, post_args);
952 VALUE pre_rest_arg =
t->u1.value, args =
t->u2.value, post_rest_arg =
t->u3.value;
954 return dispatch4(fndptn, constant, pre_rest_arg, args, post_rest_arg);
962 pre_rest_arg = dispatch1(var_field, pre_rest_arg ? pre_rest_arg :
Qnil);
963 post_rest_arg = dispatch1(var_field, post_rest_arg ? post_rest_arg :
Qnil);
966 add_mark_object(p, pre_rest_arg);
967 add_mark_object(p, args);
968 add_mark_object(p, post_rest_arg);
972#define new_hash(p,h,l) rb_ary_new_from_args(0)
984 VALUE kw_args =
t->u1.value, kw_rest_arg =
t->u2.value;
985 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
993 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
1000 add_mark_object(p, kw_args);
1001 add_mark_object(p, kw_rest_arg);
1005#define new_defined(p,expr,loc) dispatch1(defined, (expr))
1010#define ID2VAL(id) (id)
1011#define TOKEN2VAL(t) ID2VAL(t)
1012#define KWD2EID(t, v) keyword_##t
1017 body = remove_begin(body);
1018 reduce_nodes(p, &body);
1019 n->nd_defn =
NEW_SCOPE(args, body, loc);
1022 set_line_body(body, loc->beg_pos.lineno);
1030 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1031 rescue =
NEW_RESBODY(0, remove_begin(rescue), 0, &loc);
1032 loc.beg_pos = arg_loc->beg_pos;
1044 p->
ctxt.shareable_constant_value = c.
ctxt.shareable_constant_value;
1051 defn = defn->nd_defn;
1053 ID mid = defn->nd_mid;
1055 yyerror1(loc,
"setter method cannot be defined in an endless method definition");
1057 token_info_drop(p,
"def", loc->beg_pos);
1063# define ifndef_ripper(x) (x)
1066# define Qnull Qundef
1067# define ifndef_ripper(x)
1070# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1071# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1072# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1073# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1074# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1075# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1076# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1077# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1078# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1079# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1080# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1081# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1082# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1083# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1084# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1085# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1086# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1087# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1088# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1089# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1091static ID id_warn, id_warning, id_gets, id_assoc;
1092# define ERR_MESG() STR_NEW2(mesg)
1093# define WARN_S_L(s,l) STR_NEW(s,l)
1094# define WARN_S(s) STR_NEW2(s)
1095# define WARN_I(i) INT2NUM(i)
1096# define WARN_ID(i) rb_id2str(i)
1097# define WARN_IVAL(i) i
1098# define PRIsWARN "s"
1099# define rb_warn0L_experimental(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1100# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1101# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1102# ifdef HAVE_VA_ARGS_MACRO
1103# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1105# define WARN_CALL rb_funcall
1107# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1108# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1109# ifdef HAVE_VA_ARGS_MACRO
1110# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1112# define WARNING_CALL rb_funcall
1115# define compile_error ripper_compile_error
1117# define WARN_S_L(s,l) s
1120# define WARN_ID(i) rb_id2name(i)
1121# define WARN_IVAL(i) NUM2INT(i)
1122# define PRIsWARN PRIsVALUE
1123# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1124# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1125# define WARN_CALL rb_compile_warn
1126# define rb_warn0L_experimental(l,fmt) rb_category_compile_warn(RB_WARN_CATEGORY_EXPERIMENTAL, WARN_ARGS_L(l, fmt, 1))
1127# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1128# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1129# define WARNING_CALL rb_compile_warning
1131# define compile_error parser_compile_error
1134#define WARN_EOL(tok) \
1135 (looking_at_eol_p(p) ? \
1136 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1140#line 1141 "ripper.c"
1144# define YY_CAST(Type, Val) static_cast<Type> (Val)
1145# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1147# define YY_CAST(Type, Val) ((Type) (Val))
1148# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1152# if defined __cplusplus
1153# if 201103L <= __cplusplus
1154# define YY_NULLPTR nullptr
1156# define YY_NULLPTR 0
1159# define YY_NULLPTR ((void*)0)
1307#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1310#line 1121 "ripper.y"
1321#line 1320 "ripper.c"
1325# define YYSTYPE_IS_TRIVIAL 1
1326# define YYSTYPE_IS_DECLARED 1
1330#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1339# define YYLTYPE_IS_DECLARED 1
1340# define YYLTYPE_IS_TRIVIAL 1
1792#ifndef __PTRDIFF_MAX__
1794# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1805#ifdef __INT_LEAST8_MAX__
1807#elif defined YY_STDINT_H
1813#ifdef __INT_LEAST16_MAX__
1815#elif defined YY_STDINT_H
1827# undef UINT_LEAST8_MAX
1828# undef UINT_LEAST16_MAX
1829# define UINT_LEAST8_MAX 255
1830# define UINT_LEAST16_MAX 65535
1833#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1835#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1836 && UINT_LEAST8_MAX <= INT_MAX)
1838#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1844#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1846#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1847 && UINT_LEAST16_MAX <= INT_MAX)
1849#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1856# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1857# define YYPTRDIFF_T __PTRDIFF_TYPE__
1858# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1859# elif defined PTRDIFF_MAX
1863# define YYPTRDIFF_T ptrdiff_t
1864# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1866# define YYPTRDIFF_T long
1867# define YYPTRDIFF_MAXIMUM LONG_MAX
1872# ifdef __SIZE_TYPE__
1873# define YYSIZE_T __SIZE_TYPE__
1874# elif defined size_t
1875# define YYSIZE_T size_t
1876# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1878# define YYSIZE_T size_t
1880# define YYSIZE_T unsigned
1884#define YYSIZE_MAXIMUM \
1885 YY_CAST (YYPTRDIFF_T, \
1886 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1887 ? YYPTRDIFF_MAXIMUM \
1888 : YY_CAST (YYSIZE_T, -1)))
1890#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1900# if defined YYENABLE_NLS && YYENABLE_NLS
1902# include <libintl.h>
1903# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1907# define YY_(Msgid) Msgid
1912#ifndef YY_ATTRIBUTE_PURE
1913# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1914# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1916# define YY_ATTRIBUTE_PURE
1920#ifndef YY_ATTRIBUTE_UNUSED
1921# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1922# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1924# define YY_ATTRIBUTE_UNUSED
1929#if ! defined lint || defined __GNUC__
1930# define YY_USE(E) ((void) (E))
1936#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1937# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1938# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1939 _Pragma ("GCC diagnostic push") \
1940 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1942# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1943 _Pragma ("GCC diagnostic push") \
1944 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1945 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1947# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1948 _Pragma ("GCC diagnostic pop")
1950# define YY_INITIAL_VALUE(Value) Value
1952#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1953# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1954# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1956#ifndef YY_INITIAL_VALUE
1957# define YY_INITIAL_VALUE(Value)
1960#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1961# define YY_IGNORE_USELESS_CAST_BEGIN \
1962 _Pragma ("GCC diagnostic push") \
1963 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1964# define YY_IGNORE_USELESS_CAST_END \
1965 _Pragma ("GCC diagnostic pop")
1967#ifndef YY_IGNORE_USELESS_CAST_BEGIN
1968# define YY_IGNORE_USELESS_CAST_BEGIN
1969# define YY_IGNORE_USELESS_CAST_END
1973#define YY_ASSERT(E) ((void) (0 && (E)))
1979# ifdef YYSTACK_USE_ALLOCA
1980# if YYSTACK_USE_ALLOCA
1982# define YYSTACK_ALLOC __builtin_alloca
1983# elif defined __BUILTIN_VA_ARG_INCR
1986# define YYSTACK_ALLOC __alloca
1987# elif defined _MSC_VER
1989# define alloca _alloca
1991# define YYSTACK_ALLOC alloca
1992# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1995# ifndef EXIT_SUCCESS
1996# define EXIT_SUCCESS 0
2003# ifdef YYSTACK_ALLOC
2005# define YYSTACK_FREE(Ptr) do { ; } while (0)
2006# ifndef YYSTACK_ALLOC_MAXIMUM
2011# define YYSTACK_ALLOC_MAXIMUM 4032
2014# define YYSTACK_ALLOC YYMALLOC
2015# define YYSTACK_FREE YYFREE
2016# ifndef YYSTACK_ALLOC_MAXIMUM
2017# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2019# if (defined __cplusplus && ! defined EXIT_SUCCESS \
2020 && ! ((defined YYMALLOC || defined malloc) \
2021 && (defined YYFREE || defined free)))
2023# ifndef EXIT_SUCCESS
2024# define EXIT_SUCCESS 0
2028# define YYMALLOC malloc
2029# if ! defined malloc && ! defined EXIT_SUCCESS
2035# if ! defined free && ! defined EXIT_SUCCESS
2042#if (! defined yyoverflow \
2043 && (! defined __cplusplus \
2044 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2045 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2056# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2060# define YYSTACK_BYTES(N) \
2061 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2062 + YYSIZEOF (YYLTYPE)) \
2063 + 2 * YYSTACK_GAP_MAXIMUM)
2065# define YYCOPY_NEEDED 1
2072# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
2075 YYPTRDIFF_T yynewbytes; \
2076 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
2077 Stack = &yyptr->Stack_alloc; \
2078 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2079 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
2085#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2089# if defined __GNUC__ && 1 < __GNUC__
2090# define YYCOPY(Dst, Src, Count) \
2091 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2093# define YYCOPY(Dst, Src, Count) \
2097 for (yyi = 0; yyi < (Count); yyi++) \
2098 (Dst)[yyi] = (Src)[yyi]; \
2111#define YYNTOKENS 154
2117#define YYNSTATES 1294
2120#define YYMAXUTOK 353
2125#define YYTRANSLATE(YYX) \
2126 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2127 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2134 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
2135 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
2136 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2137 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
2138 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
2139 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
2140 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
2141 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2142 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2143 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
2144 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2145 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2146 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
2147 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
2148 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
2149 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2150 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2151 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2152 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2153 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2154 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2155 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2156 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2157 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2158 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2159 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2160 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2161 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2162 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2163 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2164 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2165 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2166 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
2167 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2168 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2176 0, 1322, 1322, 1322, 1348, 1354, 1361, 1368, 1375, 1381,
2177 1382, 1388, 1401, 1399, 1410, 1421, 1427, 1434, 1441, 1448,
2178 1454, 1459, 1458, 1468, 1468, 1475, 1482, 1492, 1501, 1508,
2179 1516, 1524, 1536, 1548, 1558, 1572, 1573, 1581, 1589, 1598,
2180 1605, 1608, 1615, 1622, 1630, 1637, 1644, 1652, 1659, 1669,
2181 1674, 1683, 1686, 1687, 1691, 1695, 1699, 1704, 1711, 1713,
2182 1703, 1723, 1730, 1732, 1722, 1741, 1744, 1761, 1770, 1770,
2183 1784, 1791, 1791, 1791, 1797, 1798, 1801, 1802, 1811, 1821,
2184 1831, 1840, 1851, 1858, 1865, 1872, 1879, 1887, 1895, 1902,
2185 1909, 1918, 1919, 1928, 1929, 1938, 1945, 1952, 1959, 1966,
2186 1973, 1980, 1987, 1994, 2001, 2010, 2011, 2020, 2027, 2036,
2187 2043, 2052, 2059, 2066, 2073, 2083, 2090, 2100, 2107, 2114,
2188 2124, 2131, 2138, 2145, 2152, 2159, 2166, 2173, 2180, 2190,
2189 2198, 2201, 2208, 2215, 2224, 2225, 2226, 2227, 2232, 2235,
2190 2242, 2245, 2252, 2252, 2262, 2263, 2264, 2265, 2266, 2267,
2191 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277,
2192 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287,
2193 2288, 2289, 2290, 2291, 2294, 2294, 2294, 2295, 2295, 2296,
2194 2296, 2296, 2297, 2297, 2297, 2297, 2298, 2298, 2298, 2298,
2195 2299, 2299, 2299, 2300, 2300, 2300, 2300, 2301, 2301, 2301,
2196 2301, 2302, 2302, 2302, 2302, 2303, 2303, 2303, 2303, 2304,
2197 2304, 2304, 2304, 2305, 2305, 2308, 2315, 2322, 2329, 2336,
2198 2343, 2350, 2358, 2365, 2373, 2382, 2391, 2399, 2407, 2415,
2199 2423, 2427, 2431, 2435, 2439, 2443, 2447, 2451, 2455, 2459,
2200 2463, 2467, 2471, 2475, 2476, 2480, 2484, 2488, 2492, 2496,
2201 2500, 2504, 2508, 2512, 2516, 2520, 2520, 2525, 2534, 2544,
2202 2555, 2567, 2580, 2586, 2587, 2588, 2589, 2592, 2596, 2603,
2203 2607, 2613, 2620, 2621, 2625, 2632, 2641, 2646, 2656, 2663,
2204 2675, 2689, 2690, 2693, 2694, 2695, 2699, 2706, 2715, 2723,
2205 2730, 2738, 2746, 2750, 2750, 2787, 2796, 2800, 2806, 2813,
2206 2820, 2827, 2836, 2837, 2840, 2847, 2854, 2863, 2864, 2865,
2207 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2881, 2880,
2208 2895, 2895, 2902, 2902, 2910, 2918, 2925, 2932, 2939, 2947,
2209 2954, 2961, 2968, 2975, 2975, 2980, 2984, 2988, 2995, 2996,
2210 3004, 3005, 3016, 3027, 3037, 3048, 3047, 3064, 3063, 3078,
2211 3087, 3132, 3131, 3155, 3154, 3177, 3176, 3199, 3211, 3225,
2212 3232, 3239, 3246, 3255, 3262, 3268, 3285, 3291, 3297, 3303,
2213 3309, 3315, 3322, 3329, 3335, 3341, 3347, 3353, 3359, 3365,
2214 3380, 3387, 3393, 3400, 3401, 3402, 3405, 3406, 3409, 3410,
2215 3422, 3423, 3432, 3433, 3436, 3444, 3453, 3460, 3469, 3476,
2216 3483, 3490, 3497, 3506, 3514, 3523, 3524, 3527, 3531, 3535,
2217 3539, 3545, 3550, 3555, 3565, 3569, 3573, 3577, 3581, 3585,
2218 3590, 3594, 3598, 3602, 3606, 3610, 3614, 3618, 3622, 3628,
2219 3629, 3635, 3644, 3656, 3660, 3669, 3671, 3675, 3680, 3687,
2220 3693, 3697, 3701, 3686, 3726, 3734, 3744, 3749, 3755, 3765,
2221 3779, 3786, 3793, 3802, 3811, 3819, 3827, 3834, 3842, 3850,
2222 3857, 3864, 3877, 3885, 3895, 3896, 3900, 3895, 3917, 3918,
2223 3922, 3917, 3941, 3949, 3956, 3964, 3973, 3985, 3986, 3990,
2224 3997, 4001, 3989, 4016, 4017, 4020, 4021, 4029, 4039, 4040,
2225 4045, 4053, 4057, 4061, 4067, 4070, 4079, 4082, 4089, 4092,
2226 4093, 4095, 4096, 4105, 4114, 4123, 4128, 4137, 4146, 4155,
2227 4160, 4164, 4168, 4174, 4173, 4185, 4190, 4190, 4197, 4206,
2228 4210, 4219, 4223, 4227, 4231, 4235, 4238, 4242, 4251, 4255,
2229 4261, 4271, 4275, 4281, 4282, 4291, 4300, 4304, 4308, 4312,
2230 4318, 4320, 4329, 4337, 4351, 4352, 4375, 4379, 4385, 4391,
2231 4392, 4395, 4396, 4405, 4414, 4422, 4430, 4431, 4432, 4433,
2232 4441, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 4458, 4459,
2233 4466, 4469, 4479, 4492, 4499, 4506, 4515, 4527, 4530, 4537,
2234 4544, 4547, 4551, 4554, 4561, 4564, 4565, 4568, 4585, 4586,
2235 4587, 4596, 4606, 4615, 4621, 4631, 4637, 4646, 4648, 4657,
2236 4667, 4673, 4682, 4691, 4701, 4707, 4717, 4723, 4733, 4743,
2237 4762, 4768, 4778, 4788, 4829, 4832, 4831, 4848, 4852, 4857,
2238 4861, 4865, 4847, 4886, 4893, 4900, 4907, 4910, 4911, 4914,
2239 4924, 4925, 4926, 4927, 4930, 4940, 4941, 4951, 4952, 4953,
2240 4954, 4957, 4958, 4959, 4960, 4961, 4964, 4965, 4966, 4967,
2241 4968, 4969, 4970, 4973, 4986, 4995, 5002, 5011, 5012, 5016,
2242 5015, 5025, 5033, 5033, 5035, 5044, 5054, 5066, 5067, 5067,
2243 5081, 5085, 5089, 5093, 5099, 5104, 5109, 5113, 5117, 5121,
2244 5125, 5129, 5133, 5137, 5141, 5145, 5149, 5153, 5157, 5161,
2245 5166, 5172, 5181, 5190, 5199, 5208, 5219, 5220, 5228, 5237,
2246 5245, 5266, 5268, 5281, 5290, 5298, 5308, 5315, 5324, 5331,
2247 5341, 5348, 5357, 5358, 5361, 5369, 5377, 5387, 5397, 5407,
2248 5414, 5423, 5430, 5439, 5440, 5443, 5451, 5461, 5462, 5465,
2249 5475, 5479, 5485, 5490, 5490, 5514, 5515, 5524, 5526, 5549,
2250 5560, 5567, 5575, 5594, 5595, 5596, 5599, 5600, 5601, 5602,
2251 5605, 5606, 5607, 5610, 5611, 5614, 5615, 5618, 5619, 5622,
2252 5623, 5626, 5627, 5630, 5633, 5636, 5639, 5640, 5641, 5644,
2253 5645, 5648, 5649, 5653
2258#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2267static const char *
const yytname[] =
2269 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2270 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2271 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2272 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2273 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2274 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2275 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2276 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2277 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2278 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2279 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2280 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2281 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2282 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2283 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
2284 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2285 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2286 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
2287 "\"escaped space\"",
"\"escaped horizontal tab\"",
2288 "\"escaped form feed\"",
"\"escaped carriage return\"",
2289 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2290 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2291 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2292 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2293 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2294 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2295 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2296 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2297 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2298 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2299 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
2300 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
2301 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
2302 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
2303 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
2304 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
2305 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
"@8",
2306 "@9",
"$@10",
"def_name",
"defn_head",
"defs_head",
"$@11",
"expr_value",
2307 "expr_value_do",
"$@12",
"$@13",
"command_call",
"block_command",
2308 "cmd_brace_block",
"fcall",
"command",
"mlhs",
"mlhs_inner",
2309 "mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
"mlhs_node",
"lhs",
2310 "cname",
"cpath",
"fname",
"fitem",
"undef_list",
"$@14",
"op",
2311 "reswords",
"arg",
"$@15",
"relop",
"rel_expr",
"lex_ctxt",
"arg_value",
2312 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
2313 "call_args",
"command_args",
"$@16",
"block_arg",
"opt_block_arg",
2314 "args",
"mrhs_arg",
"mrhs",
"primary",
"$@17",
"$@18",
"$@19",
"$@20",
2315 "@21",
"@22",
"$@23",
"$@24",
"$@25",
"primary_value",
"k_begin",
"k_if",
2316 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
2317 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
2318 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"then",
"do",
2319 "if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
"f_margs",
2320 "f_rest_marg",
"f_any_kwrest",
"block_args_tail",
"opt_block_args_tail",
2321 "excessed_comma",
"block_param",
"opt_block_param",
"block_param_def",
2322 "opt_bv_decl",
"bv_decls",
"bvar",
"lambda",
"@26",
"@27",
"@28",
"$@29",
2323 "f_larglist",
"lambda_body",
"do_block",
"block_call",
"method_call",
2324 "brace_block",
"brace_body",
"@30",
"@31",
"@32",
"do_body",
"@33",
2325 "@34",
"@35",
"case_args",
"case_body",
"cases",
"p_case_body",
"@36",
2326 "@37",
"$@38",
"p_cases",
"p_top_expr",
"p_top_expr_body",
"p_expr",
2327 "p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
"@39",
"@40",
2328 "p_args",
"p_args_head",
"p_args_tail",
"p_find",
"p_rest",
2329 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
2330 "p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
"p_primitive",
2331 "p_variable",
"p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
2332 "exc_var",
"opt_ensure",
"literal",
"strings",
"string",
"string1",
2333 "xstring",
"regexp",
"words",
"word_list",
"word",
"symbols",
2334 "symbol_list",
"qwords",
"qsymbols",
"qword_list",
"qsym_list",
2335 "string_contents",
"xstring_contents",
"regexp_contents",
2336 "string_content",
"@41",
"$@42",
"@43",
"@44",
"@45",
"@46",
2337 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
2338 "simple_numeric",
"user_variable",
"keyword_variable",
"var_ref",
2339 "var_lhs",
"backref",
"superclass",
"$@47",
"f_opt_paren_args",
2340 "f_paren_args",
"f_arglist",
"@48",
"args_tail",
"opt_args_tail",
2341 "f_args",
"args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
2342 "f_arg_item",
"f_arg",
"f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
2343 "f_kwarg",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
2344 "f_block_opt",
"f_block_optarg",
"f_optarg",
"restarg_mark",
2345 "f_rest_arg",
"blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
2346 "singleton",
"$@49",
"assoc_list",
"assocs",
"assoc",
"operation",
2347 "operation2",
"operation3",
"dot_or_colon",
"call_op",
"call_op2",
2348 "opt_terms",
"opt_nl",
"rparen",
"rbracket",
"rbrace",
"trailer",
"term",
2355 return yytname[yysymbol];
2359#define YYPACT_NINF (-1080)
2361#define yypact_value_is_default(Yyn) \
2362 ((Yyn) == YYPACT_NINF)
2364#define YYTABLE_NINF (-774)
2366#define yytable_value_is_error(Yyn) \
2367 ((Yyn) == YYTABLE_NINF)
2373 -1080, 155, 4053, -1080, 9649, -1080, -1080, -1080, 9107, -1080,
2374 -1080, -1080, -1080, -1080, -1080, -1080, 9775, 9775, -1080, -1080,
2375 -1080, 5567, 5126, -1080, -1080, -1080, -1080, 353, 8962, 127,
2376 41, 83, -1080, -1080, -1080, 4391, 5273, -1080, -1080, 4538,
2377 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, 11539, 11539,
2378 11539, 11539, 112, 7162, 9901, 10405, 10783, 9391, -1080, 8817,
2379 -1080, -1080, -1080, 164, 217, 257, 289, 1108, 11665, 11539,
2380 -1080, 512, -1080, 1512, -1080, 728, 227, 227, -1080, -1080,
2381 66, 425, 347, -1080, 341, 11917, -1080, 377, 2218, 632,
2382 499, 745, -1080, 11791, 11791, -1080, -1080, 8144, 12039, 12161,
2383 12283, 8671, 9775, -1080, 444, 81, -1080, -1080, 491, -1080,
2384 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2385 -1080, 316, 445, -1080, 558, 451, -1080, -1080, -1080, -1080,
2386 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2387 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2388 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2389 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2390 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2391 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2392 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2393 -1080, -1080, -1080, -1080, -1080, 520, -1080, -1080, -1080, 539,
2394 11539, 642, 7313, 11539, 11539, 11539, -1080, 11539, -1080, 586,
2395 4957, 617, -1080, -1080, 597, 770, 30, 31, 647, 350,
2396 611, -1080, -1080, 8018, -1080, 9775, 10027, -1080, -1080, 8270,
2397 -1080, 11791, 613, -1080, 619, 7464, -1080, 7615, -1080, -1080,
2398 631, 633, 66, -1080, 788, -1080, 755, 5104, 5104, 453,
2399 9901, -1080, 7162, 654, 512, -1080, 1512, 127, 694, -1080,
2400 1512, 127, 690, 244, 708, -1080, 617, 706, 708, -1080,
2401 127, 778, 1108, 12405, 704, 704, 709, -1080, 827, 900,
2402 926, 932, -1080, -1080, -1080, -1080, -1080, 61, -1080, 400,
2403 629, 509, -1080, -1080, -1080, -1080, 781, -1080, -1080, -1080,
2404 -1080, -1080, -1080, -1080, 8396, 11791, 11791, 11791, 11791, 9901,
2405 11791, 11791, 1279, 737, 754, 6306, 1694, -1080, 765, 6306,
2406 -1080, -1080, -1080, 791, -1080, -1080, -1080, -1080, -1080, 834,
2407 -1080, 7162, 9520, 768, 834, -1080, 11539, 11539, 11539, 11539,
2408 11539, -1080, -1080, 11539, 11539, 11539, 11539, 11539, 11539, 11539,
2409 11539, -1080, 11539, -1080, -1080, 11539, 11539, 11539, 11539, 11539,
2410 11539, 11539, 11539, 11539, 11539, -1080, -1080, 12835, 9775, 12925,
2411 6306, 728, 96, 96, 7766, 11791, 7766, 512, -1080, 775,
2412 880, -1080, -1080, 956, 929, 90, 93, 106, 726, 861,
2413 11791, 473, -1080, 826, 990, -1080, -1080, -1080, -1080, 45,
2414 64, 382, 465, 493, 514, 537, 545, 573, -1080, -1080,
2415 -1080, -1080, 637, -1080, -1080, -1080, 14185, -1080, -1080, 834,
2416 834, -1080, -1080, 362, -1080, -1080, -1080, 751, 834, 11539,
2417 10153, -1080, -1080, 13015, 9775, 13105, 834, 834, 10531, -1080,
2418 127, 814, -1080, -1080, 11539, 127, -1080, 820, 127, 832,
2419 -1080, 137, -1080, -1080, -1080, -1080, -1080, 9107, -1080, 11539,
2420 845, 847, 13015, 13105, 834, 1512, 41, 127, -1080, -1080,
2421 8522, 852, 127, -1080, -1080, 10657, -1080, -1080, 10783, -1080,
2422 -1080, -1080, 619, 995, -1080, -1080, 865, -1080, 12405, 13195,
2423 9775, 13285, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2424 -1080, -1080, -1080, 743, 110, 946, 191, 11539, -1080, -1080,
2425 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2426 -1080, -1080, -1080, -1080, -1080, 1307, -1080, -1080, -1080, -1080,
2427 -1080, 868, -1080, 127, 127, -1080, -1080, 867, -1080, 881,
2428 11539, -1080, 888, 391, -1080, -1080, -1080, 890, 989, 896,
2429 999, -1080, 11539, 1037, 1046, 512, 909, 11539, 1037, 917,
2430 -1080, -1080, -1080, 1037, -1080, 1037, -1080, 10909, -1080, 127,
2431 12405, 923, -1080, 10909, -1080, 755, 3708, 3708, 3708, 3708,
2432 5251, 2121, 3708, 3708, 5104, 5104, 592, 592, -1080, 5689,
2433 1165, 1165, 1456, 447, 447, 755, 755, 755, 1451, 1451,
2434 5714, 4685, 6008, 4832, -1080, 633, -1080, 127, 924, 489,
2435 -1080, 623, -1080, -1080, 5420, 1037, -1080, 6457, 1062, 6910,
2436 1037, 38, 1037, 1053, 1066, 118, 13375, 9775, 13465, -1080,
2437 728, -1080, 995, -1080, -1080, -1080, 13555, 9775, 13645, 6306,
2438 11791, -1080, -1080, -1080, -1080, -1080, 3013, 11665, 11665, 9107,
2439 11539, 11539, -1080, 11539, 617, -1080, 611, 4239, 4979, 127,
2440 481, 648, 11539, 11539, -1080, -1080, -1080, -1080, 10279, -1080,
2441 10531, -1080, -1080, 11791, 4957, -1080, -1080, 633, 633, 11539,
2442 -1080, 285, -1080, -1080, 708, 12405, 865, 280, 763, 127,
2443 587, 672, 1622, -1080, 953, -1080, 296, -1080, 938, -1080,
2444 -1080, 299, 941, -1080, 755, 1307, 930, -1080, 951, 127,
2445 952, -1080, 37, -1080, -1080, -1080, -1080, 11539, 1279, -1080,
2446 -1080, 630, -1080, -1080, -1080, 1694, -1080, -1080, 1440, -1080,
2447 -1080, 4516, -1080, -1080, -1080, 11035, 583, -1080, -1080, 1694,
2448 4663, -1080, -1080, -1080, 940, -1080, -1080, -1080, 11539, -1080,
2449 957, 958, 1058, -1080, -1080, 865, 12405, -1080, -1080, 1065,
2450 980, 4369, -1080, -1080, -1080, 1089, 656, 2593, 2593, 987,
2451 834, 834, -1080, 791, 967, 646, 10153, 834, 834, -1080,
2452 -1080, 791, -1080, -1080, 862, -1080, 1104, -1080, -1080, -1080,
2453 -1080, -1080, -1080, 1066, 1037, -1080, 11161, 1037, 87, 284,
2454 127, 133, 156, 7766, 512, 11791, 6306, 1085, 763, -1080,
2455 127, 1037, 137, 9252, 81, 425, -1080, 4810, -1080, -1080,
2456 -1080, -1080, -1080, -1080, -1080, 834, 834, 661, 834, 834,
2457 127, 977, 137, -1080, -1080, -1080, 684, 1694, -1080, -1080,
2458 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2459 -1080, 127, -1080, 1307, -1080, 1392, -1080, -1080, -1080, 127,
2460 -1080, 979, 984, -1080, 1074, 868, 992, -1080, 996, -1080,
2461 992, 11539, 957, -1080, 1033, -1080, -1080, -1080, 7766, -1080,
2462 -1080, -1080, 11539, 1005, -1080, 1005, 998, 11287, 9901, 865,
2463 9901, 834, 11539, 13735, 9775, 13825, -1080, -1080, 2007, 2007,
2464 568, -1080, 3718, 470, 1096, -1080, 1041, -1080, 1014, -1080,
2465 -1080, 800, -1080, -1080, 231, -1080, -1080, -1080, -1080, -1080,
2466 -1080, -1080, -1080, -1080, 1041, 11539, 11665, 11665, -1080, -1080,
2467 834, 11665, 11665, -1080, -1080, 7766, 11791, 1037, -1080, -1080,
2468 1037, -1080, -1080, 1037, -1080, 11539, -1080, 67, -1080, 179,
2469 1037, 6306, 512, 1037, -1080, -1080, -1080, -1080, -1080, -1080,
2470 11539, 11539, 834, 11539, 11539, -1080, 10531, -1080, 127, 170,
2471 -1080, -1080, -1080, 1003, 1009, -1080, 1694, -1080, 1440, -1080,
2472 -1080, 1440, -1080, 1440, -1080, -1080, 4957, 12527, 96, -1080,
2473 -1080, 7036, 4957, 1808, 7615, -1080, -1080, 6306, 11539, 1010,
2474 -1080, -1080, 11665, 4957, 5861, 6155, 127, 679, 725, -1080,
2475 -1080, -1080, -1080, 2593, 1107, 165, 127, 12682, -1080, 127,
2476 1017, 1018, -1080, 387, 1029, -1080, -1080, 1124, -1080, 2593,
2477 2007, 2007, 568, 180, 526, 3895, 3895, -1080, 4957, -1080,
2478 -1080, -1080, -1080, 11665, -1080, -1080, -1080, -1080, -1080, 96,
2479 -1080, -1080, 3895, -1080, -1080, 11413, 6608, -1080, 1037, -1080,
2480 -1080, 11539, 1038, 1027, 6306, 7615, -1080, -1080, 1392, 1392,
2481 992, 1054, 992, 992, 1143, -1080, 1093, 103, 132, 173,
2482 6306, 1192, 868, -1080, 127, 1072, 1079, 1071, 12649, -1080,
2483 1076, -1080, 1077, 1080, -1080, -1080, -1080, 1081, 727, 62,
2484 -1080, -1080, 73, 1041, 1083, -1080, 2593, -1080, -1080, -1080,
2485 127, 1094, -1080, 2593, -1080, -1080, -1080, 639, -1080, -1080,
2486 -1080, -1080, -1080, -1080, -1080, -1080, -1080, 127, 127, 127,
2487 127, 127, 127, -1080, -1080, 6457, 96, 901, 243, -1080,
2488 -1080, -1080, 11539, -1080, 720, -1080, -1080, 1317, 1037, 1064,
2489 7892, 1009, -1080, 1440, -1080, -1080, -1080, 183, 13915, 9775,
2490 14005, 1046, -1080, -1080, 1116, -1080, 12649, 1694, -1080, -1080,
2491 1155, 1148, 630, -1080, 1694, -1080, 1440, -1080, -1080, 1103,
2492 2593, -1080, 1110, -1080, 415, -1080, 387, 1041, -1080, -1080,
2493 816, -1080, -1080, -1080, -1080, -1080, -1080, 862, -1080, 11791,
2494 11791, 12768, -1080, -1080, -1080, -1080, -1080, 767, -1080, -1080,
2495 -1080, -1080, 1092, 992, 77, 89, 127, 198, 210, -1080,
2496 -1080, 1148, -1080, 1112, 1118, -1080, 14095, -1080, 868, 1120,
2497 -1080, 1121, 1120, 2593, 1122, 12768, -1080, -1080, -1080, -1080,
2498 6759, -1080, -1080, -1080, 1126, 1317, -1080, -1080, -1080, 221,
2499 1694, -1080, 1440, -1080, 1102, 1105, -1080, 1440, -1080, 1440,
2500 -1080, -1080, 1122, 2593, -1080, -1080, 370, 2593, -1080, 1120,
2501 1127, 1120, 1120, -1080, -1080, -1080, 1122, -1080, 1440, -1080,
2502 -1080, -1080, 1120, -1080
2510 2, 0, 0, 1, 0, 371, 372, 373, 0, 364,
2511 365, 366, 369, 367, 368, 370, 359, 360, 361, 362,
2512 382, 293, 293, 647, 646, 648, 649, 761, 0, 761,
2513 0, 0, 651, 650, 652, 743, 745, 643, 642, 744,
2514 645, 637, 638, 639, 640, 588, 657, 658, 0, 0,
2515 0, 0, 0, 0, 320, 773, 773, 103, 439, 608,
2516 608, 610, 612, 0, 0, 0, 0, 0, 0, 0,
2517 3, 759, 6, 9, 35, 40, 668, 668, 52, 75,
2518 293, 74, 0, 91, 0, 95, 105, 0, 65, 243,
2519 262, 0, 318, 0, 0, 71, 71, 759, 0, 0,
2520 0, 0, 329, 340, 76, 338, 307, 308, 587, 589,
2521 309, 310, 311, 313, 312, 314, 586, 627, 628, 585,
2522 635, 653, 654, 315, 0, 316, 79, 5, 8, 184,
2523 195, 185, 208, 181, 201, 191, 190, 211, 212, 206,
2524 189, 188, 183, 209, 213, 214, 193, 182, 196, 200,
2525 202, 194, 187, 203, 210, 205, 204, 197, 207, 192,
2526 180, 199, 198, 179, 186, 177, 178, 174, 175, 176,
2527 134, 136, 135, 169, 170, 165, 147, 148, 149, 156,
2528 153, 155, 150, 151, 171, 172, 157, 158, 162, 166,
2529 152, 154, 144, 145, 146, 159, 160, 161, 163, 164,
2530 167, 168, 173, 139, 141, 28, 137, 138, 140, 0,
2531 0, 0, 0, 0, 0, 0, 608, 0, 288, 0,
2532 271, 298, 89, 292, 773, 0, 653, 654, 0, 316,
2533 773, 737, 90, 761, 87, 0, 773, 459, 86, 761,
2534 762, 0, 0, 23, 255, 0, 10, 0, 359, 360,
2535 332, 460, 0, 237, 0, 329, 238, 228, 229, 326,
2536 0, 21, 0, 0, 759, 17, 20, 761, 93, 16,
2537 322, 761, 0, 766, 766, 272, 0, 0, 766, 735,
2538 761, 0, 0, 0, 668, 668, 101, 363, 0, 111,
2539 112, 119, 440, 632, 631, 633, 630, 0, 629, 0,
2540 0, 0, 595, 604, 600, 606, 636, 56, 249, 250,
2541 769, 770, 4, 771, 760, 0, 0, 0, 0, 0,
2542 0, 0, 690, 0, 667, 0, 690, 663, 0, 0,
2543 374, 464, 453, 80, 468, 337, 375, 468, 449, 773,
2544 107, 0, 99, 96, 773, 61, 0, 0, 0, 0,
2545 0, 265, 266, 0, 0, 0, 0, 226, 227, 0,
2546 0, 57, 0, 263, 264, 0, 0, 0, 0, 0,
2547 0, 0, 0, 0, 0, 755, 756, 0, 773, 0,
2548 0, 70, 0, 0, 0, 0, 0, 759, 347, 760,
2549 0, 393, 392, 0, 0, 653, 654, 316, 129, 130,
2550 0, 0, 132, 661, 0, 653, 654, 316, 355, 204,
2551 197, 207, 192, 174, 175, 176, 134, 135, 733, 67,
2552 66, 732, 0, 88, 758, 757, 0, 339, 590, 773,
2553 773, 142, 740, 326, 299, 742, 295, 0, 773, 0,
2554 0, 289, 297, 0, 773, 0, 773, 773, 0, 290,
2555 761, 0, 331, 294, 691, 761, 284, 773, 761, 773,
2556 283, 761, 336, 55, 25, 27, 26, 0, 333, 0,
2557 0, 0, 0, 0, 773, 19, 0, 761, 324, 15,
2558 760, 92, 761, 321, 327, 768, 767, 273, 768, 275,
2559 328, 736, 0, 118, 636, 109, 104, 667, 0, 0,
2560 773, 0, 441, 614, 634, 617, 615, 609, 591, 592,
2561 611, 593, 613, 0, 0, 0, 0, 0, 772, 7,
2562 29, 30, 31, 32, 33, 53, 54, 697, 694, 693,
2563 692, 695, 703, 712, 691, 0, 724, 713, 728, 727,
2564 723, 773, 689, 761, 761, 696, 698, 699, 701, 675,
2565 705, 710, 773, 716, 406, 405, 721, 675, 726, 675,
2566 0, 673, 0, 0, 773, 0, 675, 0, 0, 0,
2567 465, 464, 81, 0, 469, 0, 269, 0, 270, 761,
2568 0, 97, 108, 0, 62, 235, 242, 244, 245, 246,
2569 253, 254, 247, 248, 224, 225, 251, 252, 58, 761,
2570 239, 240, 241, 230, 231, 232, 233, 234, 267, 268,
2571 746, 748, 747, 749, 458, 293, 456, 761, 773, 746,
2572 748, 747, 749, 457, 293, 0, 384, 0, 383, 0,
2573 0, 0, 0, 345, 0, 326, 0, 773, 0, 71,
2574 353, 129, 130, 131, 659, 351, 0, 773, 0, 0,
2575 0, 753, 754, 68, 746, 747, 293, 0, 0, 0,
2576 0, 0, 739, 0, 300, 296, 773, 746, 747, 761,
2577 746, 747, 0, 0, 738, 330, 763, 278, 285, 280,
2578 287, 335, 24, 0, 256, 11, 34, 0, 773, 0,
2579 22, 94, 18, 323, 766, 0, 102, 750, 117, 761,
2580 746, 747, 690, 618, 0, 594, 0, 597, 0, 602,
2581 599, 0, 0, 603, 236, 0, 404, 396, 398, 761,
2582 401, 394, 0, 672, 731, 664, 666, 0, 0, 682,
2583 704, 0, 671, 714, 715, 0, 685, 725, 0, 687,
2584 729, 258, 381, 357, 376, 773, 773, 577, 669, 0,
2585 260, 358, 462, 466, 0, 463, 470, 448, 0, 36,
2586 303, 0, 39, 302, 106, 100, 0, 51, 41, 49,
2587 0, 276, 298, 215, 37, 0, 316, 0, 0, 0,
2588 773, 773, 455, 84, 0, 461, 285, 773, 773, 282,
2589 454, 82, 281, 319, 773, 385, 773, 343, 387, 72,
2590 386, 344, 479, 0, 0, 378, 0, 0, 750, 325,
2591 761, 746, 747, 0, 0, 0, 0, 129, 130, 133,
2592 761, 0, 761, 0, 450, 77, 42, 276, 216, 48,
2593 223, 143, 741, 301, 291, 773, 773, 461, 773, 773,
2594 761, 773, 761, 222, 274, 110, 461, 690, 442, 445,
2595 619, 623, 624, 625, 616, 626, 596, 598, 605, 601,
2596 607, 761, 403, 0, 700, 0, 730, 717, 674, 761,
2597 702, 675, 675, 711, 716, 773, 675, 722, 675, 699,
2598 675, 0, 578, 579, 773, 580, 377, 379, 0, 12,
2599 14, 584, 0, 773, 78, 773, 306, 0, 0, 98,
2600 0, 773, 0, 0, 773, 0, 571, 575, 0, 0,
2601 0, 516, 761, 513, 0, 570, 63, 494, 496, 498,
2602 501, 551, 556, 557, 558, 561, 562, 563, 564, 565,
2603 567, 566, 568, 569, 59, 0, 0, 0, 85, 764,
2604 773, 0, 0, 83, 380, 0, 0, 0, 388, 390,
2605 0, 73, 480, 0, 349, 0, 472, 0, 348, 461,
2606 0, 0, 0, 0, 461, 356, 734, 69, 451, 452,
2607 0, 0, 773, 0, 0, 279, 286, 334, 761, 0,
2608 620, 395, 397, 399, 402, 665, 0, 678, 0, 680,
2609 670, 0, 686, 0, 683, 688, 259, 0, 0, 582,
2610 583, 0, 261, 761, 0, 430, 429, 0, 0, 304,
2611 38, 50, 0, 277, 746, 747, 761, 746, 747, 559,
2612 560, 130, 573, 0, 532, 518, 761, 519, 525, 761,
2613 528, 0, 512, 0, 0, 515, 572, 0, 64, 0,
2614 554, 555, 0, 500, 499, 0, 0, 60, 257, 47,
2615 220, 46, 221, 0, 44, 218, 45, 219, 391, 0,
2616 341, 342, 0, 346, 473, 0, 0, 350, 0, 660,
2617 352, 0, 0, 433, 0, 0, 443, 621, 0, 0,
2618 675, 675, 675, 675, 0, 581, 0, 653, 654, 316,
2619 0, 773, 773, 428, 761, 0, 699, 412, 707, 708,
2620 773, 719, 412, 412, 410, 467, 471, 305, 461, 761,
2621 531, 510, 523, 535, 520, 511, 0, 526, 544, 608,
2622 761, 537, 540, 543, 549, 550, 539, 547, 765, 495,
2623 497, 552, 553, 574, 509, 505, 608, 761, 761, 761,
2624 761, 761, 761, 43, 217, 0, 0, 485, 488, 492,
2625 491, 493, 0, 474, 773, 354, 444, 0, 0, 0,
2626 0, 400, 679, 0, 676, 681, 684, 326, 0, 773,
2627 0, 773, 13, 409, 0, 431, 0, 413, 421, 419,
2628 0, 706, 0, 408, 0, 424, 0, 426, 517, 521,
2629 0, 527, 529, 533, 0, 514, 538, 542, 548, 546,
2630 0, 502, 503, 504, 506, 507, 508, 773, 481, 0,
2631 0, 489, 475, 477, 478, 476, 437, 761, 435, 438,
2632 447, 446, 0, 675, 750, 325, 761, 746, 747, 576,
2633 432, 718, 411, 412, 412, 326, 0, 709, 773, 412,
2634 720, 412, 412, 0, 524, 0, 545, 541, 536, 389,
2635 0, 486, 487, 490, 528, 0, 434, 622, 677, 461,
2636 0, 416, 0, 418, 750, 325, 407, 0, 425, 0,
2637 422, 427, 522, 0, 530, 534, 773, 0, 436, 412,
2638 412, 412, 412, 483, 484, 482, 529, 417, 0, 414,
2645 -1080, -1080, -1080, 1025, -1080, 23, 748, -318, -1080, -40,
2646 -1080, 774, -1080, 69, -1080, 295, -537, -44, -1080, -1080,
2647 -1080, -1080, -1080, -1080, 455, -42, -24, -1080, 42, -88,
2648 -1080, -1080, -20, -1080, -298, 1078, 15, 1176, -140, 36,
2649 -62, -1080, -428, -27, 2306, -384, 1179, -55, -23, -1080,
2650 -1080, 13, -1080, 3243, -1080, 1187, -1080, 602, 2959, -1080,
2651 671, 44, 624, -350, 189, 25, -1080, -277, -191, 71,
2652 -1080, -514, 49, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2653 -1080, -1080, 877, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2654 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, 540, -1080,
2655 -440, 1527, -376, -1080, 78, -784, -1080, -804, -786, 574,
2656 428, -714, 291, 194, -1080, -1080, 397, -1080, -795, -1080,
2657 40, 242, -1080, -1080, -1080, -1080, -1080, -1080, 480, -1080,
2658 -1080, -104, 735, -1080, -1080, -1080, 971, -1080, -1080, -1080,
2659 -1080, -767, -1080, 33, -1080, -1080, -1080, -1080, -1080, -1080,
2660 -343, -1080, -1080, -1080, -1080, 271, -1080, -1080, -945, -1080,
2661 250, -217, -1051, -1079, -743, -118, -1080, 119, -1080, -1080,
2662 -1080, 120, -1080, -721, 281, -1080, -1080, 149, -1080, -1080,
2663 233, 443, 759, -1080, 1214, 1373, 1700, 1769, -1080, 811,
2664 2085, -1080, 2192, 2445, -1080, -1080, -57, -1080, -1080, -147,
2665 -1080, -1080, -1080, -1080, -1080, -1080, -1080, 1, -1080, -1080,
2666 -1080, -1080, 0, 2191, -2, 1226, 2488, 1900, -1080, -1080,
2667 1253, 666, 9, -1080, -304, -464, -289, -268, -1053, -394,
2668 -245, -646, -203, -461, 601, 157, -1080, -1080, -691, -1080,
2669 -705, -700, -991, 168, -549, -1080, -584, -1080, -476, -527,
2670 -1080, -1080, -1080, 161, -410, -1080, -335, -1080, -1080, -85,
2671 -1080, -52, -13, 968, -532, 222, -254, -37, -3, 8
2677 0, 1, 2, 70, 71, 72, 246, 563, 1001, 564,
2678 264, 265, 476, 266, 467, 74, 768, 75, 598, 778,
2679 1047, 584, 777, 1038, 419, 76, 77, 823, 382, 384,
2680 385, 951, 78, 79, 572, 252, 81, 82, 267, 83,
2681 84, 85, 496, 86, 219, 402, 403, 203, 204, 205,
2682 659, 613, 207, 88, 469, 373, 89, 577, 221, 272,
2683 773, 614, 790, 455, 456, 234, 235, 223, 441, 618,
2684 762, 763, 90, 380, 271, 482, 683, 803, 634, 816,
2685 814, 649, 254, 92, 93, 94, 95, 96, 97, 98,
2686 99, 100, 101, 334, 337, 745, 888, 806, 945, 946,
2687 743, 255, 627, 799, 947, 948, 394, 717, 718, 719,
2688 720, 541, 1232, 1178, 1179, 1094, 1004, 1005, 1072, 1217,
2689 1218, 103, 292, 502, 702, 979, 848, 1076, 338, 104,
2690 105, 335, 569, 570, 753, 893, 573, 574, 756, 895,
2691 957, 807, 1215, 804, 952, 1062, 1250, 1285, 1146, 1147,
2692 1113, 917, 918, 1045, 1046, 919, 1033, 1023, 1026, 1027,
2693 1028, 1029, 1030, 1192, 1031, 1120, 1121, 1122, 1123, 1124,
2694 1125, 1126, 920, 921, 922, 923, 924, 746, 884, 998,
2695 890, 106, 107, 108, 109, 110, 111, 112, 513, 706,
2696 113, 515, 114, 115, 514, 516, 297, 300, 301, 507,
2697 704, 703, 850, 980, 1077, 1160, 854, 116, 117, 298,
2698 118, 119, 120, 226, 227, 123, 228, 229, 645, 815,
2699 323, 324, 325, 326, 868, 729, 543, 458, 545, 546,
2700 879, 548, 566, 550, 551, 1099, 1100, 552, 553, 554,
2701 555, 556, 1101, 1102, 557, 558, 559, 560, 561, 723,
2702 422, 650, 277, 459, 231, 126, 687, 616, 653, 648,
2703 426, 312, 451, 452, 785, 1035, 487, 628, 389, 269
2711 122, 427, 122, 299, 296, 243, 379, 629, 386, 208,
2712 127, 568, 950, 263, 241, 284, 244, 643, 542, 425,
2713 489, 206, 542, 343, 491, 732, 875, 128, 617, 208,
2714 286, 218, 218, 285, 313, 877, 953, 565, 674, 449,
2715 874, 206, 615, 284, 624, 388, 420, 238, 307, 381,
2716 381, 122, 122, 381, 544, 290, 284, 284, 284, 982,
2717 313, 285, 625, 275, 279, 798, 237, 306, 314, 774,
2718 696, 73, 206, 73, 285, 285, 285, 547, 674, 984,
2719 626, 547, 870, 290, 327, 327, 329, 224, 224, 268,
2720 -124, 656, 330, 736, 669, 739, 396, 406, 406, 406,
2721 1137, 1140, -126, 870, 1219, 333, 287, 330, 615, 626,
2722 624, 1244, -124, -647, 206, -120, -120, 218, -121, 549,
2723 826, 829, 477, 270, 332, 1189, 273, 503, 751, -655,
2724 -656, -128, -646, 755, 287, 757, 383, 837, 688, 387,
2725 445, 721, -647, -127, 872, -121, 538, 287, 287, 287,
2726 699, 878, 765, 510, 512, 3, -120, -121, -123, 437,
2727 1254, -646, 1037, 665, 1272, 872, 688, 846, 259, 473,
2728 539, 665, 263, 224, 320, 321, 708, 230, 230, 871,
2729 504, -125, 505, 506, 245, 793, -128, 1019, 1020, 310,
2730 797, 311, 801, 1240, 1274, 461, -127, 463, 1286, 1074,
2731 871, 579, 1219, 501, -122, 222, 232, 471, 1095, 331,
2732 122, -123, 479, 1065, 236, 240, 274, 278, 310, 1190,
2733 311, 495, 263, -125, 331, -746, 247, 313, -124, 709,
2734 -124, 883, 442, -115, -122, -746, -111, -747, 442, -112,
2735 -126, 284, -126, 122, 460, 122, 866, 310, 218, 311,
2736 218, 218, -119, 127, -120, 866, -120, 712, 122, 285,
2737 122, 480, 819, 230, -118, 1037, 1253, 492, 449, 1240,
2738 674, 381, 381, 381, 381, 982, 525, 526, 959, -114,
2739 240, 290, 494, -121, 1114, -121, 877, 810, 964, 1092,
2740 240, 423, 1161, 1075, 329, 237, 332, 820, 268, 1174,
2741 284, 263, -116, 688, 224, -115, 224, 457, 638, -126,
2742 713, -535, 122, 688, 73, 581, 302, 122, 285, 1131,
2743 1132, 721, 862, 122, -128, -113, -128, 122, 1042, 475,
2744 -761, 821, 287, 240, -127, 633, -127, 519, 899, 122,
2745 290, 381, 1127, 1037, 630, 870, 632, 578, 990, -123,
2746 313, -123, 578, -773, 1127, 1127, 640, 520, 521, 522,
2747 523, -125, 503, -125, 954, 503, 707, 958, 707, 303,
2748 1213, 1127, -122, 1193, -122, 322, 1043, 268, 122, 1044,
2749 1032, 965, 122, 73, 122, 887, 460, 1214, 524, 1211,
2750 485, 287, 622, 218, 230, 802, 230, 486, 542, 1049,
2751 1051, 665, 1081, 665, 1054, 1056, -115, 987, 989, 304,
2752 840, -92, 992, 849, 994, -655, 995, 505, 506, 1103,
2753 505, 506, 450, 623, 453, 733, -115, 631, -746, -115,
2754 -117, -106, -747, -115, 916, 934, 495, 578, 578, 622,
2755 844, 305, -120, 734, 682, 1118, 578, 1193, 856, 447,
2756 -648, 859, 460, 336, 578, 578, 284, 547, 622, 218,
2757 869, 474, -111, 1092, 533, 442, 503, 442, 208, 721,
2758 1092, 721, 1092, 339, 285, 834, -128, 1238, 122, -648,
2759 206, 503, 578, 547, 1108, 938, 622, 340, -127, 623,
2760 547, 874, 1283, 943, 1111, 537, 290, 1115, 963, 1119,
2761 1193, 239, 1275, 344, 547, 1127, 240, 1060, 460, 665,
2762 1061, 1134, 375, 1063, 622, 218, 1143, 623, 495, 508,
2763 1067, 505, 506, 1070, 346, 641, 1022, 1104, 748, 642,
2764 1275, 870, 876, -649, 1193, 880, 505, 506, 284, 1246,
2765 376, 424, 1098, 542, -656, 623, 1092, 287, 1092, 724,
2766 430, 813, 474, 1092, 1016, 1092, 285, 759, 978, 857,
2767 724, -651, -649, 769, 857, 1173, 674, -363, 615, 1025,
2768 624, -121, 747, 1183, 1092, 503, 511, -128, 290, -127,
2769 838, 1066, -650, 370, 371, 372, 779, 794, 787, 796,
2770 -651, -112, 886, 1234, 800, -363, -363, -119, 887, -118,
2771 1241, 666, 547, 60, 784, -652, 822, -123, 1204, 1205,
2772 1206, -650, -114, -641, -761, -123, 1162, 1164, 1165, 1166,
2773 641, 870, 1090, 240, 1021, 122, 442, 122, 1155, 287,
2774 505, 506, 792, 845, -652, -114, 831, 769, 769, 842,
2775 783, -644, -641, 1068, -363, 460, 694, 122, 761, 791,
2776 834, 622, 218, 284, 761, 460, 784, 429, 1133, 782,
2777 208, 622, 218, 310, 792, 311, 431, 464, 789, 346,
2778 -644, 285, 206, 1198, 442, -761, 1280, 465, 466, 240,
2779 1109, 825, 623, 1145, 721, 721, 784, 239, 532, 1106,
2780 905, 1199, 623, 290, 1259, 503, 792, -116, 433, 665,
2781 789, 1104, 1025, 1025, 495, 651, 866, 533, 1104, -113,
2782 1104, 1266, 438, -114, 351, 352, 1098, 439, 1220, 1148,
2783 968, 1098, 788, 1098, 284, 1098, 368, 369, 370, 371,
2784 372, 782, 789, -114, 652, 887, -114, 805, 537, 538,
2785 -114, 547, 285, 440, 287, 940, 446, 839, 509, -125,
2786 505, 506, -743, 885, 891, 430, 1158, 448, 1096, 1258,
2787 972, 363, 364, 539, 290, 320, 321, 468, 420, -116,
2788 1208, 381, -122, 960, -125, 933, 933, 961, 787, 233,
2789 1197, 236, -128, 1080, 1104, 1082, 1104, -122, 578, 578,
2790 1083, 1104, -113, 1104, -641, 578, 578, 784, -116, 1098,
2791 1097, 1098, 949, 478, 949, -123, 1098, 784, 1098, 503,
2792 -113, 122, 1104, 375, 122, 287, 761, 503, -116, 1226,
2793 -91, -116, -641, -641, 788, -116, 940, 1098, 1138, 1141,
2794 -113, -325, 346, -113, 493, 688, 206, -113, 375, 841,
2795 484, 376, 377, 578, 578, 1150, 578, 578, 1000, 442,
2796 490, -125, 322, -122, 488, 498, 375, 962, 517, -325,
2797 -325, 486, 705, 562, 505, 506, 376, 443, 1025, -743,
2798 508, -641, 505, 506, -743, 660, 944, 887, 767, 91,
2799 -662, 91, 503, 724, 376, 472, 122, -744, 1040, 1041,
2800 378, 567, 999, 225, 225, 375, 122, 571, 122, 784,
2801 1034, 1006, 381, 1006, 576, 1058, 933, 933, -325, 578,
2802 933, -747, 460, 1255, 582, 444, 769, 769, 622, 218,
2803 240, 769, 769, 376, 499, 1069, 518, 1139, 1142, -644,
2804 91, 91, 1096, 444, 288, 508, 635, 505, 506, 1096,
2805 1246, 1209, 1210, 122, 1151, 225, 583, 841, 578, 623,
2806 497, 497, 767, 767, 639, 284, 644, -644, -644, 122,
2807 1223, 1091, 288, 676, 1105, 1073, 678, 1010, -653, 1011,
2808 225, 225, 500, 285, 225, 393, 404, 404, 680, 225,
2809 578, 1239, 527, 1242, 528, 529, 530, 531, 1059, 685,
2810 1073, 686, 769, 727, -654, 1088, -653, -653, -106, 122,
2811 -316, 1170, 122, 784, -744, 122, -644, 851, 852, -744,
2812 853, 695, 503, 784, 722, 1096, 784, 46, 47, 915,
2813 915, 933, -654, -654, 375, 933, 1154, 728, -316, -316,
2814 784, 657, 658, 769, 731, 1159, 735, 933, 933, 933,
2815 661, 737, 738, 933, 933, -653, 287, 742, 672, 673,
2816 1171, 740, 376, 636, 744, 749, 284, 1279, 375, 1281,
2817 933, 752, 1194, -326, 122, 710, 1282, 505, 506, 766,
2818 786, -654, 122, 122, 285, 795, 689, -316, 802, 1200,
2819 80, 1073, 80, 805, 894, 1292, 376, 646, 122, 91,
2820 858, -326, -326, 860, 80, 80, 406, 863, 865, 891,
2821 724, 637, 898, -298, 897, 1207, 901, 1034, 724, 900,
2822 225, -750, 225, 225, 933, 935, 225, 939, 225, 887,
2823 1222, 933, 91, 976, 91, 986, 734, 784, 784, 784,
2824 988, 80, 80, 997, 284, 647, 1003, 91, 991, 91,
2825 -326, 1037, 993, 122, -299, 1039, 80, 287, 1036, 1078,
2826 915, 915, 285, -750, 915, 1079, -300, 375, 122, 1110,
2827 288, 375, 949, 1116, 1117, 381, 381, 41, 42, 43,
2828 44, 80, 80, 1128, 406, 80, 906, 460, 1157, 747,
2829 80, -750, -750, 622, 218, 376, 903, 1156, 933, 376,
2830 1168, 91, 225, 225, 225, 225, 91, 225, 225, 1167,
2831 1163, 886, 91, 1175, 1256, 1176, 91, 462, 1221, 933,
2832 1276, 1235, 1257, 784, 623, 949, 375, 1177, 91, 288,
2833 925, 925, 1182, 1184, 690, 287, 1186, -301, -750, 1191,
2834 -750, 767, 767, -746, 904, 481, 767, 767, 1169, 483,
2835 1196, 933, 346, 933, 376, 1236, 724, 1230, 122, 1243,
2836 -746, 1251, 1252, -747, 692, 225, 1245, 91, 1260, 359,
2837 360, 91, 225, 91, 1262, 915, 1267, 1269, 1273, 915,
2838 470, 933, 1277, 1288, 391, 933, 374, 225, 967, 408,
2839 824, 915, 915, 915, 949, 1249, 889, 915, 915, 861,
2840 80, 983, 1007, 647, 1093, 1278, 1185, 1187, 367, 368,
2841 369, 370, 371, 372, 915, 969, 754, 767, 575, 1284,
2842 1130, 80, 1149, 80, 80, 1247, 1248, 80, 1129, 80,
2843 1229, 225, 428, 80, 1172, 80, 711, 421, 828, 830,
2844 328, 527, 873, 528, 529, 530, 531, 532, 80, 1237,
2845 80, 0, 1195, 828, 830, 1233, 0, 0, 767, 0,
2846 0, 925, 925, 0, 0, 925, 533, 91, 915, 527,
2847 843, 528, 529, 530, 531, 915, 0, 0, 0, 1216,
2848 534, 528, 529, 530, 531, 288, 0, 225, 0, 0,
2849 535, 0, 936, 937, 0, 0, 536, 537, 538, 941,
2850 942, 0, 80, 80, 80, 80, 80, 80, 80, 80,
2851 0, 0, 0, 80, 0, 0, 0, 80, 715, 0,
2852 0, 0, 539, 0, 716, 540, 0, 0, 675, 80,
2853 0, 0, 0, 677, 0, 0, 679, 1261, 1263, 681,
2854 0, 0, 915, 1268, 0, 1270, 1271, 970, 971, 0,
2855 973, 974, 0, 0, 527, 691, 528, 529, 530, 531,
2856 693, 0, 0, 915, 225, 0, 80, 288, 80, 0,
2857 775, 0, 80, 80, 80, 0, 925, 0, 0, 0,
2858 925, 0, 0, 1287, 1289, 1290, 1291, 0, 80, 0,
2859 0, 0, 925, 925, 925, 915, 1293, 915, 925, 925,
2860 0, 0, 527, 715, 528, 529, 530, 531, 532, 0,
2861 0, 0, 0, 1012, 91, 925, 91, 0, 0, 0,
2862 0, 725, 726, 0, 225, 915, 0, 533, 0, 915,
2863 0, 0, 80, 0, 225, 0, 91, 225, 346, 102,
2864 0, 102, 0, 346, 775, 775, 926, 926, 0, 0,
2865 0, 535, 1053, 102, 102, 359, 360, 764, 537, 538,
2866 359, 360, 315, 316, 317, 318, 319, 0, 80, 925,
2867 225, 0, 0, 0, 0, 0, 925, 0, 0, 0,
2868 0, 0, 288, 539, 1071, 0, 0, 0, 80, 0,
2869 102, 102, 365, 366, 367, 368, 369, 370, 371, 372,
2870 368, 369, 370, 371, 372, 102, 0, 0, 0, 0,
2871 0, 0, 0, 0, 0, 0, 0, 1050, 1052, 0,
2872 0, 0, 1055, 1057, 0, 0, 0, 0, 0, 0,
2873 102, 102, 0, 0, 102, 0, 0, 0, 0, 102,
2874 0, 0, 0, 925, 0, 0, 0, 0, 0, 0,
2875 0, 1050, 1052, 288, 1055, 1057, 0, 0, 0, 0,
2876 0, 0, 0, 0, 925, 80, 0, 0, 0, 0,
2877 0, 80, 0, 0, 0, 0, 0, 926, 926, 0,
2878 0, 926, 0, 0, 527, 0, 528, 529, 530, 531,
2879 532, 0, 0, 0, 0, 0, 925, 864, 925, 0,
2880 91, 0, 225, 91, 0, 0, 0, 0, 0, 533,
2881 0, 0, 0, 0, 0, 80, 0, 80, 0, 0,
2882 0, 0, 0, 0, 0, 80, 925, 0, 0, 0,
2883 925, 0, 0, 535, 1144, 80, 0, 80, 80, 536,
2884 537, 538, 0, 0, 0, 80, 80, 0, 0, 102,
2885 0, 0, 1144, 0, 0, 0, 527, 0, 528, 529,
2886 530, 531, 532, 0, 0, 539, 0, 0, 540, 0,
2887 102, 80, 102, 102, 0, 91, 102, 0, 102, 0,
2888 847, 533, 102, 0, 102, 91, 0, 91, 0, 0,
2889 0, 225, 926, 0, 0, 0, 926, 102, 0, 102,
2890 966, 0, 0, 0, 0, 535, 0, 0, 926, 926,
2891 926, 536, 537, 538, 926, 926, 0, 0, 975, 0,
2892 977, 0, 0, 775, 775, 0, 0, 0, 775, 775,
2893 0, 926, 91, 225, 0, 0, 0, 539, 0, 981,
2894 540, 0, 0, 0, 0, 0, 0, 985, 91, 0,
2895 0, 102, 102, 102, 102, 102, 102, 102, 102, 0,
2896 0, 0, 102, 0, 0, 0, 102, 0, 0, 0,
2897 527, 0, 528, 529, 530, 531, 532, 0, 102, 0,
2898 0, 0, 0, 0, 1086, 926, 0, 0, 91, 0,
2899 0, 91, 926, 0, 91, 533, 0, 0, 0, 775,
2900 0, 80, 0, 80, 80, 0, 0, 0, 0, 0,
2901 0, 0, 125, 0, 125, 102, 0, 102, 0, 535,
2902 0, 102, 102, 102, 0, 536, 537, 538, 0, 0,
2903 0, 0, 0, 0, 0, 0, 0, 102, 0, 0,
2904 775, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2905 0, 539, 0, 91, 540, 0, 0, 0, 0, 926,
2906 0, 91, 91, 125, 125, 0, 0, 291, 0, 0,
2907 0, 240, 0, 0, 0, 0, 80, 91, 0, 0,
2908 926, 102, 0, 0, 0, 1181, 80, 0, 80, 0,
2909 0, 0, 80, 0, 0, 291, 0, 0, 0, 0,
2910 0, 0, 0, 0, 0, 0, 0, 0, 397, 407,
2911 407, 0, 926, 0, 926, 0, 0, 102, 0, 0,
2912 0, 0, 1135, 0, 80, 80, 0, 0, 0, 80,
2913 80, 0, 91, 80, 80, 0, 0, 102, 0, 0,
2914 0, 0, 926, 0, 0, 0, 926, 91, 0, 80,
2915 23, 24, 25, 26, 0, 0, 225, 0, 0, 0,
2916 0, 0, 0, 1231, 0, 0, 32, 33, 34, 0,
2917 0, 0, 0, 0, 0, 0, 41, 42, 43, 44,
2918 45, 0, 0, 0, 0, 0, 0, 1188, 0, 80,
2919 0, 0, 80, 0, 0, 80, 225, 225, 0, 0,
2920 80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2921 0, 0, 0, 0, 102, 1201, 1202, 1203, 0, 0,
2922 102, 0, 125, 0, 0, 0, 0, 58, 59, 60,
2923 61, 62, 63, 64, 65, 66, 0, 91, 0, 0,
2924 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
2925 0, 0, 0, 0, 80, 125, 282, 125, 0, 0,
2926 927, 927, 80, 80, 102, 0, 102, 0, 0, 0,
2927 125, 0, 125, 0, 102, 0, 0, 0, 80, 0,
2928 0, 0, 0, 0, 102, 0, 102, 102, 0, 0,
2929 0, 0, 0, 291, 102, 102, 0, 0, 0, 0,
2930 0, 0, 0, 121, 0, 121, 0, 0, 346, 347,
2931 348, 349, 350, 351, 352, 353, 0, 355, 356, 0,
2932 102, 0, 0, 0, 125, 359, 360, 0, 0, 125,
2933 0, 0, 0, 80, 0, 125, 0, 0, 0, 125,
2934 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
2935 0, 125, 291, 345, 121, 121, 0, 80, 289, 0,
2936 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
2937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2938 0, 0, 0, 0, 0, 0, 289, 0, 0, 0,
2939 125, 927, 927, 0, 125, 927, 125, 80, 80, 395,
2940 405, 405, 405, 0, 0, 346, 347, 348, 349, 350,
2941 351, 352, 353, 354, 355, 356, 357, 358, 87, 0,
2942 87, 0, 359, 360, 0, 0, 0, 0, 361, 0,
2943 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
2944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2945 102, 0, 102, 102, 0, 362, 0, 363, 364, 365,
2946 366, 367, 368, 369, 370, 371, 372, 0, 0, 87,
2947 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2949 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2950 0, 0, 0, 0, 0, 0, 927, 0, 291, 0,
2951 927, 0, 0, 121, 392, 0, 0, 0, 0, 0,
2952 0, 0, 927, 927, 927, 102, 0, 0, 927, 927,
2953 0, 0, 0, 0, 0, 102, 0, 102, 0, 0,
2954 0, 102, 0, 0, 0, 927, 121, 0, 121, 0,
2955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2956 0, 121, 0, 121, 0, 0, 0, 0, 0, 0,
2957 0, 0, 0, 102, 102, 0, 0, 0, 102, 102,
2958 0, 0, 102, 102, 289, 0, 0, 928, 928, 0,
2959 291, 0, 0, 776, 0, 0, 0, 0, 102, 927,
2960 124, 0, 124, 0, 0, 0, 927, 0, 0, 0,
2961 0, 0, 0, 0, 0, 121, 0, 0, 0, 0,
2962 121, 0, 0, 0, 0, 0, 121, 0, 87, 0,
2963 121, 0, 0, 0, 0, 0, 0, 125, 102, 125,
2964 0, 102, 121, 289, 102, 0, 0, 0, 0, 102,
2965 0, 124, 124, 0, 0, 0, 929, 929, 0, 125,
2966 0, 87, 0, 87, 0, 0, 0, 776, 776, 0,
2967 0, 0, 0, 927, 0, 0, 87, 0, 87, 0,
2968 0, 121, 0, 0, 0, 121, 0, 121, 0, 0,
2969 102, 0, 0, 0, 927, 0, 0, 0, 0, 0,
2970 0, 0, 0, 102, 0, 291, 0, 0, 0, 0,
2971 0, 102, 102, 0, 855, 0, 0, 0, 928, 928,
2972 0, 0, 928, 0, 0, 0, 927, 102, 927, 0,
2973 87, 0, 0, 0, 0, 87, 23, 24, 25, 26,
2974 0, 87, 0, 0, 0, 87, 0, 0, 0, 0,
2975 0, 0, 32, 33, 34, 906, 927, 87, 0, 907,
2976 927, 0, 41, 42, 43, 44, 45, 0, 0, 0,
2977 0, 0, 0, 0, 0, 0, 291, 0, 0, 0,
2978 0, 121, 102, 0, 0, 0, 0, 929, 929, 0,
2979 0, 929, 0, 908, 909, 0, 87, 102, 0, 289,
2980 87, 910, 87, 0, 911, 0, 102, 912, 913, 0,
2981 124, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2982 65, 66, 0, 125, 0, 0, 125, 0, 0, 0,
2983 0, 0, 0, 928, 0, 914, 0, 928, 0, 0,
2984 0, 0, 282, 124, 0, 124, 102, 102, 0, 928,
2985 928, 928, 0, 0, 0, 928, 928, 0, 124, 0,
2986 124, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2987 0, 0, 928, 0, 0, 0, 0, 0, 0, 0,
2988 0, 289, 0, 0, 0, 0, 0, 102, 0, 0,
2989 0, 0, 0, 0, 0, 0, 87, 0, 125, 0,
2990 0, 0, 929, 0, 0, 0, 929, 0, 125, 0,
2991 125, 0, 124, 0, 0, 0, 0, 124, 929, 929,
2992 929, 0, 0, 124, 929, 929, 928, 124, 121, 0,
2993 121, 0, 0, 928, 0, 0, 0, 0, 0, 124,
2994 0, 929, 0, 0, 0, 0, 776, 776, 0, 0,
2995 121, 776, 776, 0, 0, 125, 0, 0, 0, 0,
2996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2997 0, 125, 930, 930, 0, 0, 0, 0, 124, 0,
2998 0, 0, 124, 0, 124, 0, 0, 0, 0, 0,
2999 0, 0, 0, 0, 0, 929, 289, 0, 0, 770,
3000 928, 0, 929, 0, 0, 0, 0, 1089, 0, 0,
3001 0, 125, 0, 0, 125, 0, 0, 125, 0, 0,
3002 0, 928, 776, 0, 0, 0, 0, 0, 0, 0,
3003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3004 0, 0, 0, 87, 0, 87, 0, 0, 0, 0,
3005 0, 0, 0, 928, 0, 928, 0, 0, 0, 0,
3006 0, 0, 0, 776, 0, 87, 0, 289, 0, 929,
3007 0, 0, 0, 770, 770, 0, 125, 0, 124, 931,
3008 931, 0, 0, 928, 125, 125, 0, 928, 0, 0,
3009 929, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3010 125, 0, 0, 930, 930, 0, 0, 930, 407, 0,
3011 0, 0, 0, 0, 121, 0, 0, 121, 0, 0,
3012 0, 0, 929, -773, 929, 276, 0, 0, 0, 0,
3013 0, -773, -773, -773, 0, 0, -773, -773, -773, 0,
3014 -773, 0, 0, 0, 0, 0, 0, 0, -773, -773,
3015 -773, 0, 929, 0, 0, 125, 929, 0, 0, 0,
3016 -773, -773, 0, -773, -773, -773, -773, -773, 0, 0,
3017 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3018 0, 124, 0, 0, 0, 0, 407, 0, 0, 121,
3019 0, -773, 0, 0, 0, 0, 0, 0, 0, 121,
3020 0, 121, 0, 0, 0, 0, 0, 0, 0, 0,
3021 931, 931, 0, 0, 931, 0, 0, 0, 930, -773,
3022 -773, 0, 930, 0, 0, 124, 0, 124, 0, 87,
3023 0, 0, 87, 0, 930, 930, 930, 0, 0, 0,
3024 930, 930, 0, -773, 0, 0, 121, 124, 0, 0,
3025 0, 0, 0, 0, 0, 124, 124, 930, 0, 0,
3026 125, 0, 121, 0, 0, 0, -773, -773, 0, 0,
3027 0, 236, -773, 0, -773, 0, -773, 0, 0, 432,
3028 0, 0, 434, 435, 436, 0, 0, 0, 0, 0,
3029 0, 0, 0, 0, 0, 0, 0, 0, 1087, 0,
3030 0, 0, 121, 0, 87, 121, 0, 0, 121, 0,
3031 0, 930, 0, 0, 87, 0, 87, 0, 930, 0,
3032 0, 0, 0, 0, 0, 931, 0, 0, 0, 931,
3033 0, 0, 932, 932, 0, 0, 0, 0, 0, 0,
3034 0, 931, 931, 931, 0, 0, 0, 931, 931, 0,
3035 0, 0, 770, 770, 0, 0, 0, 770, 770, 0,
3036 0, 87, 0, 0, 931, 0, 0, 121, 0, 220,
3037 220, 0, 0, 0, 0, 121, 121, 87, 0, 0,
3038 0, 0, 0, 0, 0, 930, 0, 0, 0, 0,
3039 0, 121, 0, 0, 0, 0, 0, 0, 0, 405,
3040 0, 253, 256, 257, 258, 0, 930, 0, 220, 220,
3041 0, 124, 0, 1085, 124, 0, 0, 87, 931, 0,
3042 87, 308, 309, 87, 0, 931, 0, 0, 770, 0,
3043 0, 0, 0, 0, 0, 0, 0, 0, 930, 0,
3044 930, 0, 0, 0, 0, 0, 121, 0, 0, 0,
3045 0, 0, 0, 0, 0, 220, 0, 0, 0, 0,
3046 0, 121, 0, 932, 932, 0, 0, 932, 930, 770,
3047 0, 0, 930, 0, 0, 0, 0, 405, 0, 0,
3048 0, 0, 87, 0, 0, 0, 124, 0, 0, 0,
3049 87, 87, 931, 0, 0, 0, 124, 0, 124, 0,
3050 0, 0, 0, 0, 0, 0, 87, 0, 662, 664,
3051 0, 0, 0, 931, 0, 0, 0, 276, 0, 0,
3052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3053 0, 0, 0, 0, 124, 124, 0, 0, 0, 124,
3054 124, 0, 0, 124, 0, 931, 0, 931, 0, 0,
3055 0, 121, 0, 0, 664, 0, 0, 276, 0, 124,
3056 0, 87, 0, 220, 0, 0, 220, 220, 220, 0,
3057 308, 0, 0, 0, 0, 931, 87, 0, 932, 931,
3058 0, 0, 932, 0, 0, 0, 220, 0, 220, 220,
3059 0, 0, 0, 0, 932, 932, 932, 0, 0, 124,
3060 932, 932, 124, 0, 0, 124, 0, 0, 0, 0,
3061 124, 0, 0, 0, 0, 0, 0, 932, 0, 730,
3062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3064 0, 0, 0, 0, 0, 0, 760, 0, 0, 0,
3065 0, 124, 772, 0, 0, 0, 0, 0, 0, 0,
3066 0, 0, 0, 0, 124, 0, 87, 0, 0, 0,
3067 0, 932, 124, 124, 0, 0, 0, 0, 932, 0,
3068 0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
3069 0, 0, 0, 0, 0, 0, 0, 0, 0, 585,
3070 586, 587, 588, 589, 0, 0, 590, 591, 592, 593,
3071 594, 595, 596, 597, 0, 599, 0, 0, 600, 601,
3072 602, 603, 604, 605, 606, 607, 608, 609, 0, 832,
3073 0, 220, 833, 0, 0, 0, 0, 0, 0, 0,
3074 0, 0, 0, 124, 0, 932, 0, 664, 0, 276,
3075 0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
3076 0, 0, 0, 0, 0, 0, 932, 0, 0, 0,
3077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3079 0, 0, 220, 220, 0, 0, 867, 220, 932, 0,
3080 932, 220, 0, 0, 0, 0, 0, 258, 0, 0,
3081 0, 0, 0, 0, 882, 0, 0, 0, 0, 0,
3082 0, 0, 684, 0, 0, 0, 0, 896, 932, 0,
3083 0, 0, 932, 0, 0, 0, 0, 0, 220, 0,
3084 0, 220, 0, 0, 0, 0, 0, 0, 124, 0,
3085 0, 0, 0, 220, 0, 664, 0, 0, 0, 0,
3086 0, 23, 24, 25, 26, 0, 0, 0, 0, 0,
3087 714, 0, 0, 0, 0, 956, 0, 32, 33, 34,
3088 906, 0, 0, 0, 907, 0, 0, 41, 42, 43,
3089 44, 45, 0, 0, 0, 346, -774, -774, -774, -774,
3090 351, 352, 0, 220, -774, -774, 0, 0, 0, 0,
3091 0, 0, 359, 360, 0, 741, 0, 0, 908, 909,
3092 750, 0, 0, 0, 0, 0, 910, 0, 0, 911,
3093 220, 0, 912, 913, 0, 1024, 771, 0, 58, 59,
3094 60, 61, 62, 63, 64, 65, 66, 363, 364, 365,
3095 366, 367, 368, 369, 370, 371, 372, 0, 0, 0,
3096 914, 0, 0, 0, 0, 0, 1009, 282, 0, 0,
3097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3098 0, 240, 0, 0, 0, 0, 0, 0, 0, 0,
3099 220, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3100 220, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3101 827, 827, 0, 220, 827, 0, 220, 0, 0, 0,
3102 0, 0, 0, 0, 1064, 827, 827, 0, 0, 0,
3103 0, 220, 0, 220, 0, 0, 0, 0, 23, 24,
3104 25, 26, 827, 0, 0, 276, 0, 0, 0, 0,
3105 0, 0, 0, 0, 32, 33, 34, 906, 0, 0,
3106 0, 907, 0, 1118, 41, 42, 43, 44, 45, 0,
3107 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0,
3108 220, 0, 533, 0, 0, 0, 0, 0, 0, 0,
3109 0, 0, 0, 0, 0, 908, 909, 0, 220, 0,
3110 0, 0, 0, 910, 0, 0, 911, 0, 0, 912,
3111 913, 220, 1024, 537, 0, 58, 59, 1136, 61, 62,
3112 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3113 0, 0, 0, 0, 1153, 0, 0, 914, 0, 220,
3114 0, 0, 0, 0, 282, 0, 0, 0, 0, 0,
3115 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
3116 0, 0, 0, -773, 4, 0, 5, 6, 7, 8,
3117 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3118 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3119 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3120 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
3121 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3122 40, 1212, 41, 42, 43, 44, 45, 46, 47, 0,
3123 0, 0, 0, 0, 996, 0, 0, 0, 48, 49,
3124 0, 0, 0, 0, 0, 1002, 0, 0, 0, 0,
3125 220, 0, 0, 50, 51, 1013, 0, 220, 0, 0,
3126 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3127 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3128 65, 66, 0, 0, 0, 0, 0, 0, 1048, 827,
3129 827, 0, 0, 0, 827, 827, 0, 0, 0, 0,
3130 0, 0, 67, 68, 69, 0, 0, 0, 220, 0,
3131 0, 0, 0, 0, -773, 0, -773, 0, 0, 0,
3132 0, 0, 0, 827, 827, 0, 827, 827, 0, 220,
3133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3134 0, 0, 0, 0, 0, 0, 0, 0, 0, -750,
3135 0, 0, 0, 0, 0, 0, 0, -750, -750, -750,
3136 0, 220, -750, -750, -750, 827, -750, 0, 0, 0,
3137 0, 0, 0, 0, -750, -750, -750, -750, -750, 0,
3138 0, 0, 0, 0, 0, 0, -750, -750, 0, -750,
3139 -750, -750, -750, -750, 0, 0, 0, 0, 0, 0,
3140 0, 0, 0, 0, 0, 0, 827, 0, 0, 0,
3141 0, 0, 0, 0, 0, 0, 0, -750, 220, 0,
3142 0, 0, 0, 0, 827, 0, -750, -750, -750, -750,
3143 -750, -750, -750, -750, -750, -750, -750, -750, -750, 0,
3144 0, 0, 0, -750, -750, -750, -750, 0, 835, -750,
3145 0, 0, 0, 0, 0, -750, 0, 0, 0, 0,
3146 0, 0, 0, 0, 0, 0, 0, 0, 0, -750,
3147 0, 0, -750, 0, 0, -124, -750, -750, -750, -750,
3148 -750, -750, -750, -750, -750, -750, -750, -750, 0, 0,
3149 0, 0, -750, -750, -750, -750, 0, 0, -750, -750,
3150 -750, -641, -750, 0, 0, 220, 0, 0, 0, -641,
3151 -641, -641, 0, 0, -641, -641, -641, 0, -641, 0,
3152 0, 0, 220, 902, 0, 0, -641, 0, -641, -641,
3153 -641, 0, 0, 0, 0, 0, 0, 0, -641, -641,
3154 0, -641, -641, -641, -641, -641, 0, 0, 0, 0,
3155 0, 0, 0, 0, 0, 0, 346, 347, 348, 349,
3156 350, 351, 352, 353, 354, 355, 356, 357, 358, -641,
3157 0, 0, 0, 359, 360, 0, 0, 0, -641, -641,
3158 -641, -641, -641, -641, -641, -641, -641, -641, -641, -641,
3159 -641, 0, 0, 0, 0, -641, -641, -641, -641, 0,
3160 -641, -641, 0, 0, 0, 0, 362, -641, 363, 364,
3161 365, 366, 367, 368, 369, 370, 371, 372, 0, 0,
3162 0, -641, 0, 0, -641, -271, 0, -641, -641, -641,
3163 -641, -641, -641, -641, -641, -641, -641, -641, -641, -641,
3164 0, 0, 0, 0, 0, -641, -641, -641, -644, 0,
3165 -641, -641, -641, 0, -641, 0, -644, -644, -644, 0,
3166 0, -644, -644, -644, 0, -644, 0, 0, 0, 0,
3167 881, 0, 0, -644, 0, -644, -644, -644, 0, 0,
3168 0, 0, 0, 0, 0, -644, -644, 0, -644, -644,
3169 -644, -644, -644, 0, 0, 0, 0, 0, 0, 0,
3170 0, 0, 0, 346, 347, 348, 349, 350, 351, 352,
3171 353, 354, 355, 356, 357, 358, -644, 0, 0, 0,
3172 359, 360, 0, 0, 0, -644, -644, -644, -644, -644,
3173 -644, -644, -644, -644, -644, -644, -644, -644, 0, 0,
3174 0, 0, -644, -644, -644, -644, 0, -644, -644, 0,
3175 0, 0, 0, 362, -644, 363, 364, 365, 366, 367,
3176 368, 369, 370, 371, 372, 0, 0, 0, -644, 0,
3177 0, -644, 0, 0, -644, -644, -644, -644, -644, -644,
3178 -644, -644, -644, -644, -644, -644, -644, 0, 0, 0,
3179 0, 0, -644, -644, -644, -751, 0, -644, -644, -644,
3180 0, -644, 0, -751, -751, -751, 0, 0, -751, -751,
3181 -751, 0, -751, 0, 0, 0, 0, 892, 0, 0,
3182 -751, -751, -751, -751, -751, 0, 0, 0, 0, 0,
3183 0, 0, -751, -751, 0, -751, -751, -751, -751, -751,
3184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3185 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
3186 356, 357, 358, -751, 0, 0, 0, 359, 360, 0,
3187 0, 0, -751, -751, -751, -751, -751, -751, -751, -751,
3188 -751, -751, -751, -751, -751, 0, 0, 0, 0, -751,
3189 -751, -751, -751, 0, 0, -751, 0, 0, 0, 0,
3190 362, -751, 363, 364, 365, 366, 367, 368, 369, 370,
3191 371, 372, 0, 0, 0, -751, 0, 0, -751, 0,
3192 0, 0, -751, -751, -751, -751, -751, -751, -751, -751,
3193 -751, -751, -751, -751, 0, 0, 0, 0, -751, -751,
3194 -751, -751, -752, 0, -751, -751, -751, 0, -751, 0,
3195 -752, -752, -752, 0, 0, -752, -752, -752, 0, -752,
3196 0, 0, 0, 0, 902, 0, 0, -752, -752, -752,
3197 -752, -752, 0, 0, 0, 0, 0, 0, 0, -752,
3198 -752, 0, -752, -752, -752, -752, -752, 0, 0, 0,
3199 0, 0, 0, 0, 0, 0, 0, 346, 347, 348,
3200 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
3201 -752, 0, 0, 0, 359, 360, 0, 0, 0, -752,
3202 -752, -752, -752, -752, -752, -752, -752, -752, -752, -752,
3203 -752, -752, 0, 0, 0, 0, -752, -752, -752, -752,
3204 0, 0, -752, 0, 0, 0, 0, 362, -752, 363,
3205 364, 365, 366, 367, 368, 369, 370, 371, 372, 0,
3206 0, 0, -752, 0, 0, -752, 0, 0, 0, -752,
3207 -752, -752, -752, -752, -752, -752, -752, -752, -752, -752,
3208 -752, 0, 0, 0, 0, -752, -752, -752, -752, -325,
3209 0, -752, -752, -752, 0, -752, 0, -325, -325, -325,
3210 0, 0, -325, -325, -325, 0, -325, 0, 0, 0,
3211 0, 0, 0, 0, -325, 0, -325, -325, -325, 0,
3212 0, 0, 0, 0, 0, 0, -325, -325, 0, -325,
3213 -325, -325, -325, -325, 0, 0, 0, 0, 0, 0,
3214 0, 0, 0, 0, 346, 347, 348, 349, 350, 351,
3215 352, 353, 354, 355, 356, 357, 358, -325, 0, 0,
3216 0, 359, 360, 0, 0, 0, -325, -325, -325, -325,
3217 -325, -325, -325, -325, -325, -325, -325, -325, -325, 0,
3218 0, 0, 0, -325, -325, -325, -325, 0, 836, -325,
3219 0, 0, 0, 0, 362, -325, 363, 364, 365, 366,
3220 367, 368, 369, 370, 371, 372, 0, 0, 0, -325,
3221 0, 0, -325, 0, 0, -126, -325, -325, -325, -325,
3222 -325, -325, -325, -325, -325, -325, -325, -325, 0, 0,
3223 0, 0, 0, -325, -325, -325, -460, 0, -325, -325,
3224 -325, 0, -325, 0, -460, -460, -460, 0, 0, -460,
3225 -460, -460, 0, -460, 0, 0, 0, 0, 0, 0,
3226 0, -460, -460, -460, -460, 0, 0, 0, 0, 0,
3227 0, 0, 0, -460, -460, 0, -460, -460, -460, -460,
3228 -460, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3229 0, 346, 347, 348, 349, 350, 351, 352, 353, 354,
3230 355, 356, -774, -774, -460, 0, 0, 0, 359, 360,
3231 0, 0, 0, -460, -460, -460, -460, -460, -460, -460,
3232 -460, -460, -460, -460, -460, -460, 0, 0, 0, 0,
3233 -460, -460, -460, -460, 0, 0, -460, 0, 0, 0,
3234 0, 0, -460, 363, 364, 365, 366, 367, 368, 369,
3235 370, 371, 372, 0, 0, 0, -460, 0, 0, 0,
3236 0, 0, 0, -460, 0, -460, -460, -460, -460, -460,
3237 -460, -460, -460, -460, -460, 0, 0, 0, 0, -460,
3238 -460, -460, -460, -317, 236, -460, -460, -460, 0, -460,
3239 0, -317, -317, -317, 0, 0, -317, -317, -317, 0,
3240 -317, 0, 0, 0, 0, 0, 0, 0, -317, 0,
3241 -317, -317, -317, 0, 0, 0, 0, 0, 0, 0,
3242 -317, -317, 0, -317, -317, -317, -317, -317, 0, 0,
3243 0, 0, 0, 0, 0, 0, 0, 0, 346, 347,
3244 348, 349, 350, 351, 352, 0, 0, 355, 356, 0,
3245 0, -317, 0, 0, 0, 359, 360, 0, 0, 0,
3246 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
3247 -317, -317, -317, 0, 0, 0, 0, -317, -317, -317,
3248 -317, 0, 0, -317, 0, 0, 0, 0, 0, -317,
3249 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
3250 0, 0, 0, -317, 0, 0, -317, 0, 0, 0,
3251 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
3252 -317, -317, 0, 0, 0, 0, 0, -317, -317, -317,
3253 -773, 0, -317, -317, -317, 0, -317, 0, -773, -773,
3254 -773, 0, 0, -773, -773, -773, 0, -773, 0, 0,
3255 0, 0, 0, 0, 0, -773, -773, -773, -773, 0,
3256 0, 0, 0, 0, 0, 0, 0, -773, -773, 0,
3257 -773, -773, -773, -773, -773, 0, 0, 0, 0, 0,
3258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3259 0, 0, 0, 0, 0, 0, 0, 0, -773, 0,
3260 0, 0, 0, 0, 0, 0, 0, -773, -773, -773,
3261 -773, -773, -773, -773, -773, -773, -773, -773, -773, -773,
3262 0, 0, 0, 0, -773, -773, -773, -773, 0, 0,
3263 -773, 0, 0, 0, 0, 0, -773, 0, 0, 0,
3264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3265 -773, 0, 0, 0, 0, 0, 0, -773, 0, -773,
3266 -773, -773, -773, -773, -773, -773, -773, -773, -773, 0,
3267 0, 0, 0, -773, -773, -773, -773, -332, 236, -773,
3268 -773, -773, 0, -773, 0, -332, -332, -332, 0, 0,
3269 -332, -332, -332, 0, -332, 0, 0, 0, 0, 0,
3270 0, 0, -332, 0, -332, -332, 0, 0, 0, 0,
3271 0, 0, 0, 0, -332, -332, 0, -332, -332, -332,
3272 -332, -332, 0, 0, 0, 0, 0, 0, 0, 0,
3273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3274 0, 0, 0, 0, 0, -332, 0, 0, 0, 0,
3275 0, 0, 0, 0, -332, -332, -332, -332, -332, -332,
3276 -332, -332, -332, -332, -332, -332, -332, 0, 0, 0,
3277 0, -332, -332, -332, -332, 0, 0, -332, 0, 0,
3278 0, 0, 0, -332, 0, 0, 0, 0, 0, 0,
3279 0, 0, 0, 0, 0, 0, 0, -332, 0, 0,
3280 0, 0, 0, 0, -332, 0, -332, -332, -332, -332,
3281 -332, -332, -332, -332, -332, -332, 0, 0, 0, 0,
3282 0, -332, -332, -332, -750, 233, -332, -332, -332, 0,
3283 -332, 0, -750, -750, -750, 0, 0, 0, -750, -750,
3284 0, -750, 0, 0, 0, 0, 0, 0, 0, -750,
3285 -750, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3286 0, -750, -750, 0, -750, -750, -750, -750, -750, 0,
3287 0, 0, 0, 0, 0, 0, 346, 347, 348, 349,
3288 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
3289 0, 0, -750, 359, 360, 0, 0, 0, 0, 0,
3290 0, -750, -750, -750, -750, -750, -750, -750, -750, -750,
3291 -750, -750, -750, -750, 0, 0, 0, 0, -750, -750,
3292 -750, -750, 0, 780, -750, 0, 362, 0, 363, 364,
3293 365, 366, 367, 368, 369, 370, 371, 372, 0, 0,
3294 0, 0, 0, 0, -750, 0, 0, 0, 0, 0,
3295 -124, -750, 240, -750, -750, -750, -750, -750, -750, -750,
3296 -750, -750, -750, 0, 0, 0, 0, -750, -750, -750,
3297 -115, -750, 0, -750, 0, -750, 0, -750, 0, -750,
3298 -750, -750, 0, 0, 0, -750, -750, 0, -750, 0,
3299 0, 0, 0, 0, 0, 0, -750, -750, 0, 0,
3300 0, 0, 0, 0, 0, 0, 0, 0, -750, -750,
3301 0, -750, -750, -750, -750, -750, 0, 0, 0, 0,
3302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3303 0, 0, 0, 0, 0, 0, 0, 0, 0, -750,
3304 0, 0, 0, 0, 0, 0, 0, 0, -750, -750,
3305 -750, -750, -750, -750, -750, -750, -750, -750, -750, -750,
3306 -750, 0, 0, 0, 0, -750, -750, -750, -750, 0,
3307 780, -750, 0, 0, 0, 0, 0, 0, 0, 0,
3308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3309 0, -750, 0, 0, 0, 0, 0, -124, -750, 0,
3310 -750, -750, -750, -750, -750, -750, -750, -750, -750, -750,
3311 0, 0, 0, 0, -750, -750, -750, -750, -325, 0,
3312 -750, 0, -750, 0, -750, 0, -325, -325, -325, 0,
3313 0, 0, -325, -325, 0, -325, 0, 0, 0, 0,
3314 0, 0, 0, -325, 0, 0, 0, 0, 0, 0,
3315 0, 0, 0, 0, 0, -325, -325, 0, -325, -325,
3316 -325, -325, -325, 0, 0, 0, 0, 0, 0, 0,
3317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3318 0, 0, 0, 0, 0, 0, -325, 0, 0, 0,
3319 0, 0, 0, 0, 0, -325, -325, -325, -325, -325,
3320 -325, -325, -325, -325, -325, -325, -325, -325, 0, 0,
3321 0, 0, -325, -325, -325, -325, 0, 781, -325, 0,
3322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3323 0, 0, 0, 0, 0, 0, 0, 0, -325, 0,
3324 0, 0, 0, 0, -126, -325, 0, -325, -325, -325,
3325 -325, -325, -325, -325, -325, -325, -325, 0, 0, 0,
3326 0, 0, -325, -325, -117, -325, 0, -325, 0, -325,
3327 0, -325, 0, -325, -325, -325, 0, 0, 0, -325,
3328 -325, 0, -325, 0, 0, 0, 0, 0, 0, 0,
3329 -325, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3330 0, 0, -325, -325, 0, -325, -325, -325, -325, -325,
3331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3333 0, 0, 0, -325, 0, 0, 0, 0, 0, 0,
3334 0, 0, -325, -325, -325, -325, -325, -325, -325, -325,
3335 -325, -325, -325, -325, -325, 0, 0, 0, 0, -325,
3336 -325, -325, -325, 0, 781, -325, 0, 0, 0, 0,
3337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3338 0, 0, 0, 0, 0, -325, 0, 0, 0, 0,
3339 0, -126, -325, 0, -325, -325, -325, -325, -325, -325,
3340 -325, -325, -325, -325, 0, 0, 0, 0, 0, -325,
3341 -325, -325, 0, 0, -325, 0, -325, 260, -325, 5,
3342 6, 7, 8, 9, -773, -773, -773, 10, 11, 0,
3343 0, -773, 12, 0, 13, 14, 15, 16, 17, 18,
3344 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3345 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3346 0, 28, 29, 261, 31, 32, 33, 34, 35, 36,
3347 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3348 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3349 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3350 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3351 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3352 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3353 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3355 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
3356 0, 0, 0, 0, 0, 0, 0, -773, 260, -773,
3357 5, 6, 7, 8, 9, 0, 0, -773, 10, 11,
3358 0, -773, -773, 12, 0, 13, 14, 15, 16, 17,
3359 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3360 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3361 0, 0, 28, 29, 261, 31, 32, 33, 34, 35,
3362 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3363 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3364 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3365 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3366 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3367 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3368 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3370 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
3371 0, 0, 0, 0, 0, 0, 0, 0, -773, 260,
3372 -773, 5, 6, 7, 8, 9, 0, 0, -773, 10,
3373 11, 0, 0, -773, 12, -773, 13, 14, 15, 16,
3374 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3375 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3376 0, 0, 0, 28, 29, 261, 31, 32, 33, 34,
3377 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3378 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3379 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3380 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3381 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3382 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3383 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3385 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
3386 0, 0, 0, 0, 0, 0, 0, 0, 0, -773,
3387 260, -773, 5, 6, 7, 8, 9, 0, 0, -773,
3388 10, 11, 0, 0, -773, 12, 0, 13, 14, 15,
3389 16, 17, 18, 19, -773, 0, 0, 0, 0, 20,
3390 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3391 0, 0, 0, 0, 28, 29, 261, 31, 32, 33,
3392 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3393 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3394 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3395 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3396 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3397 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3398 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3400 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
3401 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3402 -773, 260, -773, 5, 6, 7, 8, 9, 0, 0,
3403 -773, 10, 11, 0, 0, -773, 12, 0, 13, 14,
3404 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3405 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3406 0, 0, 0, 0, 0, 28, 29, 261, 31, 32,
3407 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3408 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3409 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3411 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3412 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3413 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3414 0, 0, 0, 0, 0, 0, 0, 260, 0, 5,
3415 6, 7, 8, 9, 0, -773, -773, 10, 11, 67,
3416 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3417 19, -773, 0, -773, 0, 0, 20, 21, 22, 23,
3418 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3419 0, 28, 29, 261, 31, 32, 33, 34, 35, 36,
3420 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3421 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3422 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3423 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3424 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3425 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3426 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3427 0, 0, 0, 260, 0, 5, 6, 7, 8, 9,
3428 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3429 13, 14, 15, 16, 17, 18, 19, -773, 0, -773,
3430 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3431 0, 27, 0, 0, 0, 0, 0, 28, 29, 261,
3432 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3433 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3434 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3436 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3437 52, 0, 0, 262, 54, 0, 55, 56, 0, 57,
3438 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3439 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3441 0, 67, 68, 69, 0, 0, 0, 0, 0, 0,
3442 0, -773, 0, -773, 260, -773, 5, 6, 7, 8,
3443 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3444 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3445 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3446 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
3447 261, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3448 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3449 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3451 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3452 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3453 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3454 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3456 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
3457 0, 0, -773, 0, -773, 4, -773, 5, 6, 7,
3458 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3459 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3460 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3461 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3462 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
3463 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3464 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3465 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3466 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3467 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3468 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3469 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3471 0, 0, 0, 67, 68, 69, 0, 0, -773, 0,
3472 0, 0, 0, 0, 0, -773, 260, -773, 5, 6,
3473 7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
3474 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3475 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3476 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3477 28, 29, 261, 31, 32, 33, 34, 35, 36, 37,
3478 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3479 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3480 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3481 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3482 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3483 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3484 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3486 0, 0, 0, 0, 67, 68, 69, 0, 0, -773,
3487 0, 0, 0, 0, 0, 0, -773, 260, -773, 5,
3488 6, 7, 8, 9, 0, 0, -773, 10, 11, 0,
3489 0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
3490 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3491 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3492 0, 28, 29, 261, 31, 32, 33, 34, 35, 36,
3493 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3494 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3495 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3496 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3497 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3498 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3499 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3500 0, 0, 0, 260, 0, 5, 6, 7, 8, 9,
3501 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3502 13, 14, 15, 16, 17, 18, 19, -773, 0, -773,
3503 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3504 0, 27, 0, 0, 0, 0, 0, 28, 29, 261,
3505 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3506 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3507 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3509 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3510 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3511 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3512 66, 0, -773, 0, 0, 0, 0, 0, 0, 0,
3513 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3514 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3515 17, 18, 19, -773, 0, -773, 0, 0, 20, 21,
3516 22, 23, 24, 25, 26, 0, 0, 209, 0, 0,
3517 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3518 35, 36, 37, 38, 39, 40, 210, 41, 42, 43,
3519 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3520 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3521 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3522 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
3523 54, 0, 55, 56, 0, 213, 214, 215, 58, 59,
3524 216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3525 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3526 0, 9, 0, 0, 0, 10, 11, 67, 217, 69,
3527 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3528 0, 240, 0, 0, 20, 21, 22, 23, 24, 25,
3529 26, 0, 0, 27, 0, 0, 0, 0, 0, 0,
3530 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3531 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3532 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3533 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3534 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3535 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
3536 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
3537 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3538 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3539 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3540 15, 16, 17, 18, 19, 310, 0, 311, 0, 0,
3541 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3542 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3543 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3544 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3545 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3547 50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
3548 0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
3549 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3550 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3551 6, 7, 8, 9, 0, 0, 0, 10, 11, 67,
3552 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3553 19, 0, 0, 240, 0, 0, 20, 21, 22, 23,
3554 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3555 0, 28, 29, 30, 31, 32, 33, 34, 35, 36,
3556 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3557 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3558 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3559 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3560 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3561 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3562 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3563 0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
3564 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3565 13, 14, 15, 16, 17, 18, 19, 518, 0, 0,
3566 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3567 0, 27, 0, 0, 0, 0, 0, 28, 29, 261,
3568 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3569 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3570 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3572 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3573 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3574 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3575 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3577 0, 67, 68, 69, 0, 0, 0, 0, 0, 0,
3578 0, 0, 0, 518, 129, 130, 131, 132, 133, 134,
3579 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
3580 145, 146, 147, 148, 149, 150, 151, 152, 0, 0,
3581 0, 153, 154, 155, 409, 410, 411, 412, 160, 161,
3582 162, 0, 0, 0, 0, 0, 163, 164, 165, 166,
3583 413, 414, 415, 416, 171, 37, 38, 417, 40, 0,
3584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3585 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
3586 177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
3587 0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
3588 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
3589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3591 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
3592 0, 200, 201, 0, 0, 0, 0, 0, 202, 418,
3593 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3594 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
3595 149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
3596 156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
3597 0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
3598 171, 293, 294, 172, 295, 0, 0, 0, 0, 0,
3599 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3600 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
3601 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
3602 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
3603 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
3604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3605 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
3606 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
3607 0, 0, 0, 0, 202, 129, 130, 131, 132, 133,
3608 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
3609 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
3610 0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
3611 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
3612 166, 167, 168, 169, 170, 171, 242, 0, 172, 0,
3613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3614 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
3615 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
3616 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
3617 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
3618 189, 0, 0, 59, 0, 0, 0, 0, 0, 0,
3619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3620 0, 190, 191, 192, 193, 194, 195, 196, 197, 198,
3621 199, 0, 200, 201, 0, 0, 0, 0, 0, 202,
3622 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3623 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
3624 149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
3625 156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
3626 0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
3627 171, 0, 0, 172, 0, 0, 0, 0, 0, 0,
3628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3629 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
3630 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
3631 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
3632 0, 0, 0, 0, 188, 189, 0, 0, 59, 0,
3633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3634 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
3635 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
3636 0, 0, 0, 0, 202, 129, 130, 131, 132, 133,
3637 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
3638 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
3639 0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
3640 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
3641 166, 167, 168, 169, 170, 171, 0, 0, 172, 0,
3642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3643 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
3644 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
3645 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
3646 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
3647 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3649 0, 190, 191, 192, 193, 194, 195, 196, 197, 198,
3650 199, 0, 200, 201, 5, 6, 7, 0, 9, 202,
3651 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
3652 14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
3653 0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
3654 209, 0, 0, 0, 0, 0, 0, 280, 0, 0,
3655 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3656 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3659 0, 0, 0, 0, 0, 0, 0, 0, 0, 281,
3660 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
3661 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3663 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3664 282, 10, 11, 0, 0, 0, 12, 283, 13, 14,
3665 15, 248, 249, 18, 19, 0, 0, 0, 0, 0,
3666 20, 250, 251, 23, 24, 25, 26, 0, 0, 209,
3667 0, 0, 0, 0, 0, 0, 280, 0, 0, 32,
3668 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3669 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3672 0, 0, 0, 0, 0, 0, 0, 0, 281, 0,
3673 0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
3674 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3676 0, 0, 5, 6, 7, 8, 9, 0, 0, 282,
3677 10, 11, 0, 0, 0, 12, 580, 13, 14, 15,
3678 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3679 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3680 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
3681 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3682 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3683 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3684 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3685 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3686 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3687 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3688 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3689 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
3690 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3691 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3692 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3693 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3694 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
3695 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3696 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3697 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3698 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3699 56, 0, 213, 214, 215, 58, 59, 216, 61, 62,
3700 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3701 0, 0, 0, 0, 5, 6, 7, 8, 9, 0,
3702 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3703 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3704 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3705 27, 0, 0, 0, 0, 0, 28, 29, 0, 31,
3706 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3707 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3708 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3710 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3711 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3712 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3714 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3715 67, 68, 69, 12, 0, 13, 14, 15, 16, 17,
3716 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3717 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3718 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3719 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
3720 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3721 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3722 0, 0, 0, 0, 0, 0, 0, 50, 454, 0,
3723 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3724 0, 55, 56, 0, 213, 214, 215, 58, 59, 216,
3725 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3726 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3727 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3728 0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
3729 0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
3730 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3731 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3732 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
3733 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3735 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3736 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3737 663, 214, 215, 58, 59, 216, 61, 62, 63, 64,
3738 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3739 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3740 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3741 248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
3742 250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
3743 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3744 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
3745 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3746 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3747 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3748 454, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3749 212, 54, 0, 55, 56, 0, 663, 214, 215, 58,
3750 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
3751 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3752 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3753 69, 12, 0, 13, 14, 15, 248, 249, 18, 19,
3754 0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
3755 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3756 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3757 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
3758 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3759 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3760 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3761 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3762 56, 0, 213, 214, 0, 58, 59, 216, 61, 62,
3763 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3764 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3765 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3766 14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
3767 0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
3768 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3769 32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
3770 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3771 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3773 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3774 0, 0, 212, 54, 0, 55, 56, 0, 0, 214,
3775 215, 58, 59, 216, 61, 62, 63, 64, 65, 66,
3776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3777 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3778 67, 217, 69, 12, 0, 13, 14, 15, 248, 249,
3779 18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
3780 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3781 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3782 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
3783 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3784 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3785 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3786 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3787 0, 55, 56, 0, 663, 214, 0, 58, 59, 216,
3788 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3789 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3790 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3791 0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
3792 0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
3793 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3794 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3795 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
3796 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3798 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3799 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3800 0, 214, 0, 58, 59, 216, 61, 62, 63, 64,
3801 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3802 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3803 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3804 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3805 21, 22, 23, 24, 25, 26, 0, 0, 209, 0,
3806 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3807 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3808 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3809 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3810 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3811 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3812 212, 54, 0, 55, 56, 0, 758, 0, 0, 58,
3813 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3814 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3815 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3816 69, 12, 0, 13, 14, 15, 248, 249, 18, 19,
3817 0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
3818 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3819 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3820 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3821 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3822 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3823 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3824 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3825 56, 0, 758, 0, 0, 58, 59, 60, 61, 62,
3826 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3827 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3828 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3829 14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
3830 0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
3831 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3832 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3833 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3834 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3836 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3837 0, 0, 212, 54, 0, 55, 56, 0, 955, 0,
3838 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3840 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3841 67, 217, 69, 12, 0, 13, 14, 15, 248, 249,
3842 18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
3843 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3844 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3845 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3846 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3847 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3848 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3849 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3850 0, 55, 56, 0, 1008, 0, 0, 58, 59, 60,
3851 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3852 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3853 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3854 0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
3855 0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
3856 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3857 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3858 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3859 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3861 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3862 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3863 1152, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3864 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3865 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3866 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3867 248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
3868 250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
3869 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3870 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3871 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3872 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3873 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3874 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3875 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3876 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3877 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3878 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3879 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3880 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3881 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3882 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3883 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3884 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3885 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3886 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3887 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3888 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3889 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3890 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3891 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3892 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3893 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3894 27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3895 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3896 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3897 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3899 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3900 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
3901 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3903 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3904 67, 68, 69, 12, 0, 13, 14, 15, 248, 249,
3905 18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
3906 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3907 0, 0, 0, 280, 0, 0, 32, 33, 34, 35,
3908 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3909 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3912 0, 0, 0, 0, 0, 281, 0, 0, 341, 54,
3913 0, 55, 56, 0, 342, 0, 0, 58, 59, 60,
3914 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3915 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3916 10, 11, 0, 0, 0, 12, 282, 13, 14, 15,
3917 248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
3918 250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
3919 0, 0, 0, 0, 0, 280, 0, 0, 32, 33,
3920 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3921 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3924 0, 0, 0, 0, 0, 0, 0, 390, 0, 0,
3925 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3926 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3927 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3928 0, 0, 10, 11, 0, 0, 0, 12, 282, 13,
3929 14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
3930 0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
3931 209, 0, 0, 0, 0, 0, 0, 280, 0, 0,
3932 32, 33, 34, 398, 36, 37, 38, 399, 40, 0,
3933 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3936 0, 0, 0, 0, 0, 400, 0, 0, 0, 401,
3937 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
3938 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3939 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3940 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3941 282, 13, 14, 15, 248, 249, 18, 19, 0, 0,
3942 0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
3943 0, 0, 209, 0, 0, 0, 0, 0, 0, 280,
3944 0, 0, 32, 33, 34, 398, 36, 37, 38, 399,
3945 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3949 0, 401, 0, 0, 212, 54, 0, 55, 56, 0,
3950 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3951 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
3952 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
3953 0, 12, 282, 13, 14, 15, 248, 249, 18, 19,
3954 0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
3955 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3956 0, 280, 0, 0, 32, 33, 34, 35, 36, 37,
3957 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3958 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3961 0, 0, 0, 281, 0, 0, 341, 54, 0, 55,
3962 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3963 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3964 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3965 0, 0, 0, 12, 282, 13, 14, 15, 248, 249,
3966 18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
3967 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3968 0, 0, 0, 280, 0, 0, 32, 33, 34, 35,
3969 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3970 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3973 0, 0, 0, 0, 0, 1084, 0, 0, 212, 54,
3974 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3975 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3976 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3977 10, 11, 0, 0, 0, 12, 282, 13, 14, 15,
3978 248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
3979 250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
3980 0, 0, 0, 0, 0, 280, 0, 0, 32, 33,
3981 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3982 43, 44, 45, 46, 47, 23, 24, 25, 26, 0,
3983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3984 0, 32, 33, 34, 906, 0, 0, 0, 907, 0,
3985 0, 41, 42, 43, 44, 45, 0, 1180, 0, 0,
3986 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3987 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3988 0, 0, 908, 909, 0, 0, 0, 0, 0, 0,
3989 910, 0, 0, 911, 0, 0, 912, 913, 282, 1112,
3990 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3991 66, 23, 24, 25, 26, 0, 0, 0, 0, 0,
3992 0, 0, 0, 0, 914, 0, 0, 32, 33, 34,
3993 906, 282, 0, 0, 907, 0, 0, 41, 42, 43,
3994 44, 45, 0, 0, 0, 0, 0, 0, 0, 0,
3995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3996 0, 0, 0, 0, 0, 0, 0, 0, 908, 909,
3997 0, 0, 0, 0, 0, 0, 910, 0, 0, 911,
3998 0, 0, 912, 913, 0, 1024, 0, 0, 58, 59,
3999 60, 61, 62, 63, 64, 65, 66, 610, 611, 0,
4000 0, 612, 0, 0, 0, 0, 0, 0, 0, 0,
4001 914, 0, 0, 0, 0, 0, 0, 282, 0, 0,
4002 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4003 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4004 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4005 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4007 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4008 196, 197, 198, 199, 0, 200, 201, 619, 620, 0,
4009 0, 621, 202, 236, 0, 0, 0, 0, 0, 0,
4010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4011 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4012 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4013 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4014 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4016 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4017 196, 197, 198, 199, 0, 200, 201, 667, 611, 0,
4018 0, 668, 202, 236, 0, 0, 0, 0, 0, 0,
4019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4020 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4021 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4022 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4023 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4025 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4026 196, 197, 198, 199, 0, 200, 201, 670, 620, 0,
4027 0, 671, 202, 236, 0, 0, 0, 0, 0, 0,
4028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4029 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4030 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4031 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4032 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4034 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4035 196, 197, 198, 199, 0, 200, 201, 697, 611, 0,
4036 0, 698, 202, 236, 0, 0, 0, 0, 0, 0,
4037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4038 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4039 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4040 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4041 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4043 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4044 196, 197, 198, 199, 0, 200, 201, 700, 620, 0,
4045 0, 701, 202, 236, 0, 0, 0, 0, 0, 0,
4046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4047 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4048 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4049 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4050 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4052 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4053 196, 197, 198, 199, 0, 200, 201, 808, 611, 0,
4054 0, 809, 202, 236, 0, 0, 0, 0, 0, 0,
4055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4056 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4057 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4058 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4059 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4061 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4062 196, 197, 198, 199, 0, 200, 201, 811, 620, 0,
4063 0, 812, 202, 236, 0, 0, 0, 0, 0, 0,
4064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4065 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4066 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4067 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4068 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4070 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4071 196, 197, 198, 199, 0, 200, 201, 817, 611, 0,
4072 0, 818, 202, 236, 0, 0, 0, 0, 0, 0,
4073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4074 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4075 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4076 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4077 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4079 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4080 196, 197, 198, 199, 0, 200, 201, 654, 620, 0,
4081 0, 655, 202, 236, 0, 0, 0, 0, 0, 0,
4082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4083 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4084 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4085 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4086 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4088 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4089 196, 197, 198, 199, 0, 200, 201, 1014, 611, 0,
4090 0, 1015, 202, 236, 0, 0, 0, 0, 0, 0,
4091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4092 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4093 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4094 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4095 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4097 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4098 196, 197, 198, 199, 0, 200, 201, 1017, 620, 0,
4099 0, 1018, 202, 236, 0, 0, 0, 0, 0, 0,
4100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4101 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4102 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4103 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4104 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4106 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4107 196, 197, 198, 199, 0, 200, 201, 1224, 611, 0,
4108 0, 1225, 202, 236, 0, 0, 0, 0, 0, 0,
4109 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4110 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4111 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4112 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4113 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4115 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4116 196, 197, 198, 199, 0, 200, 201, 1227, 620, 0,
4117 0, 1228, 202, 236, 0, 0, 0, 0, 0, 0,
4118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4119 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4120 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4121 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4122 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4124 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4125 196, 197, 198, 199, 0, 200, 201, 1264, 611, 0,
4126 0, 1265, 202, 236, 0, 0, 0, 0, 0, 0,
4127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4128 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4129 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4130 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4131 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4133 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4134 196, 197, 198, 199, 0, 200, 201, 654, 620, 0,
4135 0, 655, 202, 236, 0, 0, 0, 0, 0, 0,
4136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4137 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4138 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4139 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4140 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4142 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4143 196, 197, 198, 199, 0, 200, 201, 0, 0, 0,
4149 2, 105, 4, 60, 59, 28, 91, 383, 96, 8,
4150 2, 329, 796, 53, 27, 57, 29, 401, 322, 104,
4151 274, 8, 326, 85, 278, 552, 731, 4, 378, 28,
4152 57, 16, 17, 57, 71, 735, 803, 326, 448, 230,
4153 731, 28, 377, 85, 379, 97, 101, 22, 68, 93,
4154 94, 53, 54, 97, 322, 57, 98, 99, 100, 863,
4155 97, 85, 380, 55, 56, 27, 22, 67, 71, 583,
4156 498, 2, 59, 4, 98, 99, 100, 322, 488, 865,
4157 13, 326, 728, 85, 76, 77, 77, 16, 17, 53,
4158 13, 426, 26, 557, 444, 559, 98, 99, 100, 101,
4159 1045, 1046, 13, 749, 1157, 80, 57, 26, 443, 13,
4160 445, 1190, 25, 68, 101, 25, 13, 102, 25, 322,
4161 657, 658, 262, 54, 80, 52, 55, 66, 568, 99,
4162 99, 25, 68, 573, 85, 575, 94, 669, 473, 97,
4163 225, 535, 97, 25, 728, 13, 109, 98, 99, 100,
4164 500, 735, 580, 300, 301, 0, 126, 126, 25, 216,
4165 1211, 97, 100, 440, 1243, 749, 501, 699, 56, 254,
4166 133, 448, 212, 102, 37, 38, 66, 16, 17, 728,
4167 119, 25, 121, 122, 143, 625, 13, 908, 909, 151,
4168 630, 153, 632, 1184, 1245, 239, 13, 241, 1277, 29,
4169 749, 341, 1255, 288, 25, 16, 17, 247, 1003, 143,
4170 212, 13, 264, 146, 148, 153, 55, 56, 151, 146,
4171 153, 283, 262, 13, 143, 148, 143, 264, 151, 119,
4172 153, 745, 224, 146, 13, 148, 146, 148, 230, 146,
4173 151, 283, 153, 245, 236, 247, 722, 151, 233, 153,
4174 235, 236, 146, 245, 151, 731, 153, 66, 260, 283,
4175 262, 264, 646, 102, 146, 100, 1211, 280, 459, 1260,
4176 680, 315, 316, 317, 318, 1079, 320, 321, 810, 146,
4177 153, 283, 282, 151, 1027, 153, 986, 637, 820, 1003,
4178 153, 102, 1078, 123, 285, 251, 252, 647, 262, 1094,
4179 342, 341, 146, 638, 233, 25, 235, 236, 393, 25,
4180 119, 146, 314, 648, 245, 342, 152, 319, 342, 1040,
4181 1041, 715, 716, 325, 151, 146, 153, 329, 97, 260,
4182 150, 649, 283, 153, 151, 387, 153, 314, 766, 341,
4183 342, 385, 1033, 100, 384, 991, 386, 339, 875, 151,
4184 387, 153, 344, 126, 1045, 1046, 400, 315, 316, 317,
4185 318, 151, 66, 153, 804, 66, 513, 807, 515, 152,
4186 1154, 1062, 151, 1116, 153, 148, 145, 341, 380, 148,
4187 912, 821, 384, 314, 386, 15, 378, 1154, 319, 146,
4188 146, 342, 379, 378, 233, 25, 235, 153, 702, 936,
4189 937, 678, 986, 680, 941, 942, 126, 871, 872, 152,
4190 678, 126, 876, 702, 878, 99, 880, 121, 122, 1003,
4191 121, 122, 233, 379, 235, 34, 146, 385, 148, 149,
4192 146, 146, 148, 153, 777, 778, 498, 429, 430, 426,
4193 694, 152, 126, 52, 467, 58, 438, 1190, 152, 99,
4194 68, 152, 444, 28, 446, 447, 498, 702, 445, 444,
4195 728, 99, 146, 1177, 77, 457, 66, 459, 467, 863,
4196 1184, 865, 1186, 126, 498, 666, 126, 1182, 480, 97,
4197 467, 66, 474, 728, 1016, 783, 473, 146, 126, 445,
4198 735, 1182, 1276, 791, 1026, 108, 498, 1029, 816, 112,
4199 1243, 148, 1245, 126, 749, 1196, 153, 947, 500, 786,
4200 950, 1043, 68, 953, 501, 500, 1053, 473, 580, 119,
4201 960, 121, 122, 963, 77, 52, 910, 1003, 565, 56,
4202 1273, 1177, 735, 68, 1277, 738, 121, 122, 580, 124,
4203 96, 97, 1003, 847, 99, 501, 1260, 498, 1262, 541,
4204 99, 639, 99, 1267, 904, 1269, 580, 577, 847, 706,
4205 552, 68, 97, 583, 711, 1092, 976, 68, 903, 912,
4206 905, 126, 564, 1100, 1288, 66, 67, 126, 580, 126,
4207 99, 957, 68, 136, 137, 138, 599, 627, 99, 629,
4208 97, 146, 9, 1177, 631, 96, 97, 146, 15, 146,
4209 1184, 440, 847, 112, 617, 68, 650, 126, 1140, 1141,
4210 1142, 97, 25, 68, 144, 126, 1080, 1081, 1082, 1083,
4211 52, 1267, 998, 153, 56, 627, 618, 629, 1068, 580,
4212 121, 122, 624, 695, 97, 146, 659, 657, 658, 683,
4213 615, 68, 97, 961, 145, 637, 485, 649, 577, 624,
4214 841, 638, 637, 695, 583, 647, 669, 99, 1042, 615,
4215 659, 648, 647, 151, 656, 153, 146, 54, 624, 77,
4216 97, 695, 659, 34, 666, 149, 1260, 64, 65, 153,
4217 1023, 656, 638, 1059, 1078, 1079, 699, 148, 58, 1007,
4218 775, 52, 648, 695, 1226, 66, 688, 25, 56, 976,
4219 656, 1177, 1045, 1046, 766, 68, 1182, 77, 1184, 25,
4220 1186, 1238, 126, 126, 82, 83, 1177, 100, 1158, 1062,
4221 824, 1182, 99, 1184, 766, 1186, 134, 135, 136, 137,
4222 138, 687, 688, 146, 97, 15, 149, 17, 108, 109,
4223 153, 986, 766, 146, 695, 99, 99, 99, 119, 126,
4224 121, 122, 26, 745, 746, 99, 1074, 146, 1003, 1223,
4225 99, 129, 130, 133, 766, 37, 38, 148, 823, 146,
4226 1146, 815, 126, 813, 126, 777, 778, 814, 99, 148,
4227 1123, 148, 126, 986, 1260, 988, 1262, 126, 780, 781,
4228 993, 1267, 146, 1269, 68, 787, 788, 810, 126, 1260,
4229 1003, 1262, 794, 149, 796, 126, 1267, 820, 1269, 66,
4230 126, 813, 1288, 68, 816, 766, 745, 66, 146, 1169,
4231 126, 149, 96, 97, 99, 153, 99, 1288, 1045, 1046,
4232 146, 68, 77, 149, 56, 1170, 823, 153, 68, 678,
4233 150, 96, 97, 835, 836, 1062, 838, 839, 888, 841,
4234 144, 126, 148, 126, 146, 146, 68, 815, 77, 96,
4235 97, 153, 119, 126, 121, 122, 96, 97, 1211, 143,
4236 119, 145, 121, 122, 148, 124, 14, 15, 583, 2,
4237 126, 4, 66, 875, 96, 97, 888, 26, 88, 89,
4238 145, 126, 884, 16, 17, 68, 898, 106, 900, 912,
4239 913, 893, 946, 895, 70, 945, 908, 909, 145, 901,
4240 912, 148, 904, 146, 146, 145, 936, 937, 905, 904,
4241 153, 941, 942, 96, 97, 962, 151, 1045, 1046, 68,
4242 53, 54, 1177, 145, 57, 119, 56, 121, 122, 1184,
4243 124, 40, 41, 945, 1062, 68, 344, 786, 940, 905,
4244 284, 285, 657, 658, 25, 997, 130, 96, 97, 961,
4245 1163, 1001, 85, 149, 1004, 978, 146, 898, 68, 900,
4246 93, 94, 145, 997, 97, 98, 99, 100, 146, 102,
4247 972, 1184, 52, 1186, 54, 55, 56, 57, 946, 144,
4248 1003, 144, 1012, 126, 68, 997, 96, 97, 146, 1001,
4249 68, 1086, 1004, 1016, 143, 1007, 145, 54, 55, 148,
4250 57, 146, 66, 1026, 146, 1260, 1029, 64, 65, 777,
4251 778, 1023, 96, 97, 68, 1027, 1066, 146, 96, 97,
4252 1043, 429, 430, 1053, 146, 1075, 146, 1039, 1040, 1041,
4253 438, 52, 146, 1045, 1046, 145, 997, 10, 446, 447,
4254 1090, 52, 96, 97, 8, 146, 1098, 1260, 68, 1262,
4255 1062, 144, 1119, 68, 1066, 119, 1269, 121, 122, 146,
4256 146, 145, 1074, 1075, 1098, 13, 474, 145, 25, 1136,
4257 2, 1094, 4, 17, 144, 1288, 96, 97, 1090, 212,
4258 152, 96, 97, 152, 16, 17, 1098, 146, 146, 1091,
4259 1092, 145, 44, 146, 146, 1145, 126, 1120, 1100, 44,
4260 233, 26, 235, 236, 1116, 128, 239, 150, 241, 15,
4261 1160, 1123, 245, 146, 247, 146, 52, 1140, 1141, 1142,
4262 146, 53, 54, 100, 1176, 145, 131, 260, 146, 262,
4263 145, 100, 146, 1145, 146, 131, 68, 1098, 52, 146,
4264 908, 909, 1176, 68, 912, 146, 146, 68, 1160, 52,
4265 283, 68, 1154, 146, 146, 1209, 1210, 59, 60, 61,
4266 62, 93, 94, 144, 1176, 97, 52, 1169, 151, 1171,
4267 102, 96, 97, 1170, 1169, 96, 97, 149, 1190, 96,
4268 97, 314, 315, 316, 317, 318, 319, 320, 321, 56,
4269 146, 9, 325, 131, 1217, 126, 329, 239, 144, 1211,
4270 1250, 56, 120, 1226, 1170, 1207, 68, 146, 341, 342,
4271 777, 778, 146, 146, 476, 1176, 146, 146, 143, 146,
4272 145, 936, 937, 148, 145, 267, 941, 942, 145, 271,
4273 146, 1243, 77, 1245, 96, 97, 1238, 131, 1250, 146,
4274 148, 1209, 1210, 148, 480, 378, 146, 380, 146, 94,
4275 95, 384, 385, 386, 146, 1023, 146, 146, 146, 1027,
4276 245, 1273, 146, 146, 98, 1277, 89, 400, 823, 100,
4277 656, 1039, 1040, 1041, 1276, 1207, 746, 1045, 1046, 715,
4278 212, 863, 895, 145, 1003, 1255, 1102, 1103, 133, 134,
4279 135, 136, 137, 138, 1062, 825, 571, 1012, 337, 1276,
4280 1039, 233, 1062, 235, 236, 1196, 1196, 239, 1037, 241,
4281 1171, 444, 108, 245, 1091, 247, 515, 101, 657, 658,
4282 77, 52, 731, 54, 55, 56, 57, 58, 260, 1182,
4283 262, -1, 1120, 672, 673, 1177, -1, -1, 1053, -1,
4284 -1, 908, 909, -1, -1, 912, 77, 480, 1116, 52,
4285 689, 54, 55, 56, 57, 1123, -1, -1, -1, 52,
4286 91, 54, 55, 56, 57, 498, -1, 500, -1, -1,
4287 101, -1, 780, 781, -1, -1, 107, 108, 109, 787,
4288 788, -1, 314, 315, 316, 317, 318, 319, 320, 321,
4289 -1, -1, -1, 325, -1, -1, -1, 329, 101, -1,
4290 -1, -1, 133, -1, 107, 136, -1, -1, 450, 341,
4291 -1, -1, -1, 455, -1, -1, 458, 1233, 1234, 461,
4292 -1, -1, 1190, 1239, -1, 1241, 1242, 835, 836, -1,
4293 838, 839, -1, -1, 52, 477, 54, 55, 56, 57,
4294 482, -1, -1, 1211, 577, -1, 378, 580, 380, -1,
4295 583, -1, 384, 385, 386, -1, 1023, -1, -1, -1,
4296 1027, -1, -1, 1279, 1280, 1281, 1282, -1, 400, -1,
4297 -1, -1, 1039, 1040, 1041, 1243, 1292, 1245, 1045, 1046,
4298 -1, -1, 52, 101, 54, 55, 56, 57, 58, -1,
4299 -1, -1, -1, 901, 627, 1062, 629, -1, -1, -1,
4300 -1, 543, 544, -1, 637, 1273, -1, 77, -1, 1277,
4301 -1, -1, 444, -1, 647, -1, 649, 650, 77, 2,
4302 -1, 4, -1, 77, 657, 658, 777, 778, -1, -1,
4303 -1, 101, 940, 16, 17, 94, 95, 579, 108, 109,
4304 94, 95, 40, 41, 42, 43, 44, -1, 480, 1116,
4305 683, -1, -1, -1, -1, -1, 1123, -1, -1, -1,
4306 -1, -1, 695, 133, 972, -1, -1, -1, 500, -1,
4307 53, 54, 131, 132, 133, 134, 135, 136, 137, 138,
4308 134, 135, 136, 137, 138, 68, -1, -1, -1, -1,
4309 -1, -1, -1, -1, -1, -1, -1, 936, 937, -1,
4310 -1, -1, 941, 942, -1, -1, -1, -1, -1, -1,
4311 93, 94, -1, -1, 97, -1, -1, -1, -1, 102,
4312 -1, -1, -1, 1190, -1, -1, -1, -1, -1, -1,
4313 -1, 970, 971, 766, 973, 974, -1, -1, -1, -1,
4314 -1, -1, -1, -1, 1211, 577, -1, -1, -1, -1,
4315 -1, 583, -1, -1, -1, -1, -1, 908, 909, -1,
4316 -1, 912, -1, -1, 52, -1, 54, 55, 56, 57,
4317 58, -1, -1, -1, -1, -1, 1243, 719, 1245, -1,
4318 813, -1, 815, 816, -1, -1, -1, -1, -1, 77,
4319 -1, -1, -1, -1, -1, 627, -1, 629, -1, -1,
4320 -1, -1, -1, -1, -1, 637, 1273, -1, -1, -1,
4321 1277, -1, -1, 101, 1053, 647, -1, 649, 650, 107,
4322 108, 109, -1, -1, -1, 657, 658, -1, -1, 212,
4323 -1, -1, 1071, -1, -1, -1, 52, -1, 54, 55,
4324 56, 57, 58, -1, -1, 133, -1, -1, 136, -1,
4325 233, 683, 235, 236, -1, 888, 239, -1, 241, -1,
4326 148, 77, 245, -1, 247, 898, -1, 900, -1, -1,
4327 -1, 904, 1023, -1, -1, -1, 1027, 260, -1, 262,
4328 822, -1, -1, -1, -1, 101, -1, -1, 1039, 1040,
4329 1041, 107, 108, 109, 1045, 1046, -1, -1, 840, -1,
4330 842, -1, -1, 936, 937, -1, -1, -1, 941, 942,
4331 -1, 1062, 945, 946, -1, -1, -1, 133, -1, 861,
4332 136, -1, -1, -1, -1, -1, -1, 869, 961, -1,
4333 -1, 314, 315, 316, 317, 318, 319, 320, 321, -1,
4334 -1, -1, 325, -1, -1, -1, 329, -1, -1, -1,
4335 52, -1, 54, 55, 56, 57, 58, -1, 341, -1,
4336 -1, -1, -1, -1, 997, 1116, -1, -1, 1001, -1,
4337 -1, 1004, 1123, -1, 1007, 77, -1, -1, -1, 1012,
4338 -1, 813, -1, 815, 816, -1, -1, -1, -1, -1,
4339 -1, -1, 2, -1, 4, 378, -1, 380, -1, 101,
4340 -1, 384, 385, 386, -1, 107, 108, 109, -1, -1,
4341 -1, -1, -1, -1, -1, -1, -1, 400, -1, -1,
4342 1053, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4343 -1, 133, -1, 1066, 136, -1, -1, -1, -1, 1190,
4344 -1, 1074, 1075, 53, 54, -1, -1, 57, -1, -1,
4345 -1, 153, -1, -1, -1, -1, 888, 1090, -1, -1,
4346 1211, 444, -1, -1, -1, 1098, 898, -1, 900, -1,
4347 -1, -1, 904, -1, -1, 85, -1, -1, -1, -1,
4348 -1, -1, -1, -1, -1, -1, -1, -1, 98, 99,
4349 100, -1, 1243, -1, 1245, -1, -1, 480, -1, -1,
4350 -1, -1, 1044, -1, 936, 937, -1, -1, -1, 941,
4351 942, -1, 1145, 945, 946, -1, -1, 500, -1, -1,
4352 -1, -1, 1273, -1, -1, -1, 1277, 1160, -1, 961,
4353 33, 34, 35, 36, -1, -1, 1169, -1, -1, -1,
4354 -1, -1, -1, 1176, -1, -1, 49, 50, 51, -1,
4355 -1, -1, -1, -1, -1, -1, 59, 60, 61, 62,
4356 63, -1, -1, -1, -1, -1, -1, 1109, -1, 1001,
4357 -1, -1, 1004, -1, -1, 1007, 1209, 1210, -1, -1,
4358 1012, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4359 -1, -1, -1, -1, 577, 1137, 1138, 1139, -1, -1,
4360 583, -1, 212, -1, -1, -1, -1, 110, 111, 112,
4361 113, 114, 115, 116, 117, 118, -1, 1250, -1, -1,
4362 -1, 1053, -1, -1, -1, -1, -1, -1, -1, -1,
4363 -1, -1, -1, -1, 1066, 245, 139, 247, -1, -1,
4364 777, 778, 1074, 1075, 627, -1, 629, -1, -1, -1,
4365 260, -1, 262, -1, 637, -1, -1, -1, 1090, -1,
4366 -1, -1, -1, -1, 647, -1, 649, 650, -1, -1,
4367 -1, -1, -1, 283, 657, 658, -1, -1, -1, -1,
4368 -1, -1, -1, 2, -1, 4, -1, -1, 77, 78,
4369 79, 80, 81, 82, 83, 84, -1, 86, 87, -1,
4370 683, -1, -1, -1, 314, 94, 95, -1, -1, 319,
4371 -1, -1, -1, 1145, -1, 325, -1, -1, -1, 329,
4372 -1, -1, -1, -1, -1, -1, -1, -1, 1160, -1,
4373 -1, 341, 342, 25, 53, 54, -1, 1169, 57, -1,
4374 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4375 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4376 -1, -1, -1, -1, -1, -1, 85, -1, -1, -1,
4377 380, 908, 909, -1, 384, 912, 386, 1209, 1210, 98,
4378 99, 100, 101, -1, -1, 77, 78, 79, 80, 81,
4379 82, 83, 84, 85, 86, 87, 88, 89, 2, -1,
4380 4, -1, 94, 95, -1, -1, -1, -1, 100, -1,
4381 -1, -1, -1, -1, -1, -1, -1, -1, 1250, -1,
4382 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4383 813, -1, 815, 816, -1, 127, -1, 129, 130, 131,
4384 132, 133, 134, 135, 136, 137, 138, -1, -1, 53,
4385 54, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4386 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4387 480, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4388 -1, -1, -1, -1, -1, -1, 1023, -1, 498, -1,
4389 1027, -1, -1, 212, 98, -1, -1, -1, -1, -1,
4390 -1, -1, 1039, 1040, 1041, 888, -1, -1, 1045, 1046,
4391 -1, -1, -1, -1, -1, 898, -1, 900, -1, -1,
4392 -1, 904, -1, -1, -1, 1062, 245, -1, 247, -1,
4393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4394 -1, 260, -1, 262, -1, -1, -1, -1, -1, -1,
4395 -1, -1, -1, 936, 937, -1, -1, -1, 941, 942,
4396 -1, -1, 945, 946, 283, -1, -1, 777, 778, -1,
4397 580, -1, -1, 583, -1, -1, -1, -1, 961, 1116,
4398 2, -1, 4, -1, -1, -1, 1123, -1, -1, -1,
4399 -1, -1, -1, -1, -1, 314, -1, -1, -1, -1,
4400 319, -1, -1, -1, -1, -1, 325, -1, 212, -1,
4401 329, -1, -1, -1, -1, -1, -1, 627, 1001, 629,
4402 -1, 1004, 341, 342, 1007, -1, -1, -1, -1, 1012,
4403 -1, 53, 54, -1, -1, -1, 777, 778, -1, 649,
4404 -1, 245, -1, 247, -1, -1, -1, 657, 658, -1,
4405 -1, -1, -1, 1190, -1, -1, 260, -1, 262, -1,
4406 -1, 380, -1, -1, -1, 384, -1, 386, -1, -1,
4407 1053, -1, -1, -1, 1211, -1, -1, -1, -1, -1,
4408 -1, -1, -1, 1066, -1, 695, -1, -1, -1, -1,
4409 -1, 1074, 1075, -1, 704, -1, -1, -1, 908, 909,
4410 -1, -1, 912, -1, -1, -1, 1243, 1090, 1245, -1,
4411 314, -1, -1, -1, -1, 319, 33, 34, 35, 36,
4412 -1, 325, -1, -1, -1, 329, -1, -1, -1, -1,
4413 -1, -1, 49, 50, 51, 52, 1273, 341, -1, 56,
4414 1277, -1, 59, 60, 61, 62, 63, -1, -1, -1,
4415 -1, -1, -1, -1, -1, -1, 766, -1, -1, -1,
4416 -1, 480, 1145, -1, -1, -1, -1, 908, 909, -1,
4417 -1, 912, -1, 90, 91, -1, 380, 1160, -1, 498,
4418 384, 98, 386, -1, 101, -1, 1169, 104, 105, -1,
4419 212, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4420 117, 118, -1, 813, -1, -1, 816, -1, -1, -1,
4421 -1, -1, -1, 1023, -1, 132, -1, 1027, -1, -1,
4422 -1, -1, 139, 245, -1, 247, 1209, 1210, -1, 1039,
4423 1040, 1041, -1, -1, -1, 1045, 1046, -1, 260, -1,
4424 262, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4425 -1, -1, 1062, -1, -1, -1, -1, -1, -1, -1,
4426 -1, 580, -1, -1, -1, -1, -1, 1250, -1, -1,
4427 -1, -1, -1, -1, -1, -1, 480, -1, 888, -1,
4428 -1, -1, 1023, -1, -1, -1, 1027, -1, 898, -1,
4429 900, -1, 314, -1, -1, -1, -1, 319, 1039, 1040,
4430 1041, -1, -1, 325, 1045, 1046, 1116, 329, 627, -1,
4431 629, -1, -1, 1123, -1, -1, -1, -1, -1, 341,
4432 -1, 1062, -1, -1, -1, -1, 936, 937, -1, -1,
4433 649, 941, 942, -1, -1, 945, -1, -1, -1, -1,
4434 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4435 -1, 961, 777, 778, -1, -1, -1, -1, 380, -1,
4436 -1, -1, 384, -1, 386, -1, -1, -1, -1, -1,
4437 -1, -1, -1, -1, -1, 1116, 695, -1, -1, 583,
4438 1190, -1, 1123, -1, -1, -1, -1, 997, -1, -1,
4439 -1, 1001, -1, -1, 1004, -1, -1, 1007, -1, -1,
4440 -1, 1211, 1012, -1, -1, -1, -1, -1, -1, -1,
4441 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4442 -1, -1, -1, 627, -1, 629, -1, -1, -1, -1,
4443 -1, -1, -1, 1243, -1, 1245, -1, -1, -1, -1,
4444 -1, -1, -1, 1053, -1, 649, -1, 766, -1, 1190,
4445 -1, -1, -1, 657, 658, -1, 1066, -1, 480, 777,
4446 778, -1, -1, 1273, 1074, 1075, -1, 1277, -1, -1,
4447 1211, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4448 1090, -1, -1, 908, 909, -1, -1, 912, 1098, -1,
4449 -1, -1, -1, -1, 813, -1, -1, 816, -1, -1,
4450 -1, -1, 1243, 0, 1245, 56, -1, -1, -1, -1,
4451 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
4452 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
4453 27, -1, 1273, -1, -1, 1145, 1277, -1, -1, -1,
4454 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4455 1160, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4456 -1, 583, -1, -1, -1, -1, 1176, -1, -1, 888,
4457 -1, 68, -1, -1, -1, -1, -1, -1, -1, 898,
4458 -1, 900, -1, -1, -1, -1, -1, -1, -1, -1,
4459 908, 909, -1, -1, 912, -1, -1, -1, 1023, 96,
4460 97, -1, 1027, -1, -1, 627, -1, 629, -1, 813,
4461 -1, -1, 816, -1, 1039, 1040, 1041, -1, -1, -1,
4462 1045, 1046, -1, 120, -1, -1, 945, 649, -1, -1,
4463 -1, -1, -1, -1, -1, 657, 658, 1062, -1, -1,
4464 1250, -1, 961, -1, -1, -1, 143, 144, -1, -1,
4465 -1, 148, 149, -1, 151, -1, 153, -1, -1, 210,
4466 -1, -1, 213, 214, 215, -1, -1, -1, -1, -1,
4467 -1, -1, -1, -1, -1, -1, -1, -1, 997, -1,
4468 -1, -1, 1001, -1, 888, 1004, -1, -1, 1007, -1,
4469 -1, 1116, -1, -1, 898, -1, 900, -1, 1123, -1,
4470 -1, -1, -1, -1, -1, 1023, -1, -1, -1, 1027,
4471 -1, -1, 777, 778, -1, -1, -1, -1, -1, -1,
4472 -1, 1039, 1040, 1041, -1, -1, -1, 1045, 1046, -1,
4473 -1, -1, 936, 937, -1, -1, -1, 941, 942, -1,
4474 -1, 945, -1, -1, 1062, -1, -1, 1066, -1, 16,
4475 17, -1, -1, -1, -1, 1074, 1075, 961, -1, -1,
4476 -1, -1, -1, -1, -1, 1190, -1, -1, -1, -1,
4477 -1, 1090, -1, -1, -1, -1, -1, -1, -1, 1098,
4478 -1, 48, 49, 50, 51, -1, 1211, -1, 55, 56,
4479 -1, 813, -1, 997, 816, -1, -1, 1001, 1116, -1,
4480 1004, 68, 69, 1007, -1, 1123, -1, -1, 1012, -1,
4481 -1, -1, -1, -1, -1, -1, -1, -1, 1243, -1,
4482 1245, -1, -1, -1, -1, -1, 1145, -1, -1, -1,
4483 -1, -1, -1, -1, -1, 102, -1, -1, -1, -1,
4484 -1, 1160, -1, 908, 909, -1, -1, 912, 1273, 1053,
4485 -1, -1, 1277, -1, -1, -1, -1, 1176, -1, -1,
4486 -1, -1, 1066, -1, -1, -1, 888, -1, -1, -1,
4487 1074, 1075, 1190, -1, -1, -1, 898, -1, 900, -1,
4488 -1, -1, -1, -1, -1, -1, 1090, -1, 439, 440,
4489 -1, -1, -1, 1211, -1, -1, -1, 448, -1, -1,
4490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4491 -1, -1, -1, -1, 936, 937, -1, -1, -1, 941,
4492 942, -1, -1, 945, -1, 1243, -1, 1245, -1, -1,
4493 -1, 1250, -1, -1, 485, -1, -1, 488, -1, 961,
4494 -1, 1145, -1, 210, -1, -1, 213, 214, 215, -1,
4495 217, -1, -1, -1, -1, 1273, 1160, -1, 1023, 1277,
4496 -1, -1, 1027, -1, -1, -1, 233, -1, 235, 236,
4497 -1, -1, -1, -1, 1039, 1040, 1041, -1, -1, 1001,
4498 1045, 1046, 1004, -1, -1, 1007, -1, -1, -1, -1,
4499 1012, -1, -1, -1, -1, -1, -1, 1062, -1, 550,
4500 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4502 -1, -1, -1, -1, -1, -1, 577, -1, -1, -1,
4503 -1, 1053, 583, -1, -1, -1, -1, -1, -1, -1,
4504 -1, -1, -1, -1, 1066, -1, 1250, -1, -1, -1,
4505 -1, 1116, 1074, 1075, -1, -1, -1, -1, 1123, -1,
4506 -1, -1, -1, -1, -1, -1, -1, -1, 1090, -1,
4507 -1, -1, -1, -1, -1, -1, -1, -1, -1, 346,
4508 347, 348, 349, 350, -1, -1, 353, 354, 355, 356,
4509 357, 358, 359, 360, -1, 362, -1, -1, 365, 366,
4510 367, 368, 369, 370, 371, 372, 373, 374, -1, 660,
4511 -1, 378, 663, -1, -1, -1, -1, -1, -1, -1,
4512 -1, -1, -1, 1145, -1, 1190, -1, 678, -1, 680,
4513 -1, -1, -1, -1, -1, -1, -1, -1, 1160, -1,
4514 -1, -1, -1, -1, -1, -1, 1211, -1, -1, -1,
4515 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4516 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4517 -1, -1, 439, 440, -1, -1, 727, 444, 1243, -1,
4518 1245, 448, -1, -1, -1, -1, -1, 454, -1, -1,
4519 -1, -1, -1, -1, 745, -1, -1, -1, -1, -1,
4520 -1, -1, 469, -1, -1, -1, -1, 758, 1273, -1,
4521 -1, -1, 1277, -1, -1, -1, -1, -1, 485, -1,
4522 -1, 488, -1, -1, -1, -1, -1, -1, 1250, -1,
4523 -1, -1, -1, 500, -1, 786, -1, -1, -1, -1,
4524 -1, 33, 34, 35, 36, -1, -1, -1, -1, -1,
4525 517, -1, -1, -1, -1, 806, -1, 49, 50, 51,
4526 52, -1, -1, -1, 56, -1, -1, 59, 60, 61,
4527 62, 63, -1, -1, -1, 77, 78, 79, 80, 81,
4528 82, 83, -1, 550, 86, 87, -1, -1, -1, -1,
4529 -1, -1, 94, 95, -1, 562, -1, -1, 90, 91,
4530 567, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4531 577, -1, 104, 105, -1, 107, 583, -1, 110, 111,
4532 112, 113, 114, 115, 116, 117, 118, 129, 130, 131,
4533 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4534 132, -1, -1, -1, -1, -1, 897, 139, -1, -1,
4535 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4536 -1, 153, -1, -1, -1, -1, -1, -1, -1, -1,
4537 637, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4538 647, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4539 657, 658, -1, 660, 661, -1, 663, -1, -1, -1,
4540 -1, -1, -1, -1, 955, 672, 673, -1, -1, -1,
4541 -1, 678, -1, 680, -1, -1, -1, -1, 33, 34,
4542 35, 36, 689, -1, -1, 976, -1, -1, -1, -1,
4543 -1, -1, -1, -1, 49, 50, 51, 52, -1, -1,
4544 -1, 56, -1, 58, 59, 60, 61, 62, 63, -1,
4545 -1, -1, -1, -1, -1, -1, -1, 1008, -1, -1,
4546 727, -1, 77, -1, -1, -1, -1, -1, -1, -1,
4547 -1, -1, -1, -1, -1, 90, 91, -1, 745, -1,
4548 -1, -1, -1, 98, -1, -1, 101, -1, -1, 104,
4549 105, 758, 107, 108, -1, 110, 111, 112, 113, 114,
4550 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4551 -1, -1, -1, -1, 1065, -1, -1, 132, -1, 786,
4552 -1, -1, -1, -1, 139, -1, -1, -1, -1, -1,
4553 -1, -1, -1, -1, -1, -1, -1, -1, -1, 806,
4554 -1, -1, -1, 0, 1, -1, 3, 4, 5, 6,
4555 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
4556 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4557 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4558 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4559 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4560 57, 1152, 59, 60, 61, 62, 63, 64, 65, -1,
4561 -1, -1, -1, -1, 881, -1, -1, -1, 75, 76,
4562 -1, -1, -1, -1, -1, 892, -1, -1, -1, -1,
4563 897, -1, -1, 90, 91, 902, -1, 904, -1, -1,
4564 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4565 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4566 117, 118, -1, -1, -1, -1, -1, -1, 935, 936,
4567 937, -1, -1, -1, 941, 942, -1, -1, -1, -1,
4568 -1, -1, 139, 140, 141, -1, -1, -1, 955, -1,
4569 -1, -1, -1, -1, 151, -1, 153, -1, -1, -1,
4570 -1, -1, -1, 970, 971, -1, 973, 974, -1, 976,
4571 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4572 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
4573 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
4574 -1, 1008, 13, 14, 15, 1012, 17, -1, -1, -1,
4575 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
4576 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4577 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4578 -1, -1, -1, -1, -1, -1, 1053, -1, -1, -1,
4579 -1, -1, -1, -1, -1, -1, -1, 68, 1065, -1,
4580 -1, -1, -1, -1, 1071, -1, 77, 78, 79, 80,
4581 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4582 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4583 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
4584 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
4585 -1, -1, 123, -1, -1, 126, 127, 128, 129, 130,
4586 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4587 -1, -1, 143, 144, 145, 146, -1, -1, 149, 150,
4588 151, 0, 153, -1, -1, 1152, -1, -1, -1, 8,
4589 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
4590 -1, -1, 1169, 44, -1, -1, 25, -1, 27, 28,
4591 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4592 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4593 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4594 81, 82, 83, 84, 85, 86, 87, 88, 89, 68,
4595 -1, -1, -1, 94, 95, -1, -1, -1, 77, 78,
4596 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4597 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4598 99, 100, -1, -1, -1, -1, 127, 106, 129, 130,
4599 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4600 -1, 120, -1, -1, 123, 146, -1, 126, 127, 128,
4601 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4602 -1, -1, -1, -1, -1, 144, 145, 146, 0, -1,
4603 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
4604 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
4605 44, -1, -1, 25, -1, 27, 28, 29, -1, -1,
4606 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4607 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4608 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4609 84, 85, 86, 87, 88, 89, 68, -1, -1, -1,
4610 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
4611 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4612 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
4613 -1, -1, -1, 127, 106, 129, 130, 131, 132, 133,
4614 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
4615 -1, 123, -1, -1, 126, 127, 128, 129, 130, 131,
4616 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4617 -1, -1, 144, 145, 146, 0, -1, 149, 150, 151,
4618 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
4619 15, -1, 17, -1, -1, -1, -1, 44, -1, -1,
4620 25, 26, 27, 28, 29, -1, -1, -1, -1, -1,
4621 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4623 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4624 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
4625 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4626 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4627 95, 96, 97, -1, -1, 100, -1, -1, -1, -1,
4628 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
4629 137, 138, -1, -1, -1, 120, -1, -1, 123, -1,
4630 -1, -1, 127, 128, 129, 130, 131, 132, 133, 134,
4631 135, 136, 137, 138, -1, -1, -1, -1, 143, 144,
4632 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
4633 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
4634 -1, -1, -1, -1, 44, -1, -1, 25, 26, 27,
4635 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
4636 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4637 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4638 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4639 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
4640 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4641 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4642 -1, -1, 100, -1, -1, -1, -1, 127, 106, 129,
4643 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4644 -1, -1, 120, -1, -1, 123, -1, -1, -1, 127,
4645 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4646 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
4647 -1, 149, 150, 151, -1, 153, -1, 8, 9, 10,
4648 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4649 -1, -1, -1, -1, 25, -1, 27, 28, 29, -1,
4650 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4651 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4652 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4653 83, 84, 85, 86, 87, 88, 89, 68, -1, -1,
4654 -1, 94, 95, -1, -1, -1, 77, 78, 79, 80,
4655 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4656 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4657 -1, -1, -1, -1, 127, 106, 129, 130, 131, 132,
4658 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
4659 -1, -1, 123, -1, -1, 126, 127, 128, 129, 130,
4660 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4661 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
4662 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
4663 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
4664 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
4665 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4666 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4667 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4668 86, 87, 88, 89, 68, -1, -1, -1, 94, 95,
4669 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4670 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4671 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
4672 -1, -1, 106, 129, 130, 131, 132, 133, 134, 135,
4673 136, 137, 138, -1, -1, -1, 120, -1, -1, -1,
4674 -1, -1, -1, 127, -1, 129, 130, 131, 132, 133,
4675 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
4676 144, 145, 146, 0, 148, 149, 150, 151, -1, 153,
4677 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
4678 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
4679 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
4680 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4681 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4682 79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
4683 -1, 68, -1, -1, -1, 94, 95, -1, -1, -1,
4684 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4685 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4686 97, -1, -1, 100, -1, -1, -1, -1, -1, 106,
4687 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4688 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
4689 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
4690 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
4691 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
4692 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
4693 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
4694 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
4695 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
4696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4697 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
4698 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4699 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4700 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
4701 100, -1, -1, -1, -1, -1, 106, -1, -1, -1,
4702 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4703 120, -1, -1, -1, -1, -1, -1, 127, -1, 129,
4704 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4705 -1, -1, -1, 143, 144, 145, 146, 0, 148, 149,
4706 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
4707 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
4708 -1, -1, 25, -1, 27, 28, -1, -1, -1, -1,
4709 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4710 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
4711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4712 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
4713 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4714 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
4715 -1, 94, 95, 96, 97, -1, -1, 100, -1, -1,
4716 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
4717 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
4718 -1, -1, -1, -1, 127, -1, 129, 130, 131, 132,
4719 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4720 -1, 144, 145, 146, 0, 148, 149, 150, 151, -1,
4721 153, -1, 8, 9, 10, -1, -1, -1, 14, 15,
4722 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
4723 26, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4724 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4725 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4726 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4727 -1, -1, 68, 94, 95, -1, -1, -1, -1, -1,
4728 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4729 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4730 96, 97, -1, 99, 100, -1, 127, -1, 129, 130,
4731 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4732 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4733 126, 127, 153, 129, 130, 131, 132, 133, 134, 135,
4734 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
4735 146, 0, -1, 149, -1, 151, -1, 153, -1, 8,
4736 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
4737 -1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
4738 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4739 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4740 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4741 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
4742 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4743 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4744 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4745 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
4746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4747 -1, 120, -1, -1, -1, -1, -1, 126, 127, -1,
4748 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4749 -1, -1, -1, -1, 143, 144, 145, 146, 0, -1,
4750 149, -1, 151, -1, 153, -1, 8, 9, 10, -1,
4751 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
4752 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
4753 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4754 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4756 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
4757 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4758 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4759 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
4760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4761 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4762 -1, -1, -1, -1, 126, 127, -1, 129, 130, 131,
4763 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4764 -1, -1, 144, 145, 146, 0, -1, 149, -1, 151,
4765 -1, 153, -1, 8, 9, 10, -1, -1, -1, 14,
4766 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4767 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4768 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4771 -1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
4772 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4773 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4774 95, 96, 97, -1, 99, 100, -1, -1, -1, -1,
4775 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4776 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
4777 -1, 126, 127, -1, 129, 130, 131, 132, 133, 134,
4778 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4779 145, 146, -1, -1, 149, -1, 151, 1, 153, 3,
4780 4, 5, 6, 7, 8, 9, 10, 11, 12, -1,
4781 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
4782 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4783 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4784 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4785 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4786 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4787 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4788 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4789 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4790 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4791 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4793 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4794 -1, -1, -1, -1, -1, -1, -1, 151, 1, 153,
4795 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
4796 -1, 14, 15, 16, -1, 18, 19, 20, 21, 22,
4797 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4798 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4799 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4800 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4801 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4802 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4803 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4804 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4805 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4806 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4807 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4808 -1, -1, -1, -1, -1, -1, 139, 140, 141, -1,
4809 -1, -1, -1, -1, -1, -1, -1, -1, 151, 1,
4810 153, 3, 4, 5, 6, 7, -1, -1, 10, 11,
4811 12, -1, -1, 15, 16, 17, 18, 19, 20, 21,
4812 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4813 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4814 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4815 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4816 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4817 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4818 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4819 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4820 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4821 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4822 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4823 -1, -1, -1, -1, -1, -1, -1, 139, 140, 141,
4824 -1, -1, -1, -1, -1, -1, -1, -1, -1, 151,
4825 1, 153, 3, 4, 5, 6, 7, -1, -1, 10,
4826 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
4827 21, 22, 23, 24, 25, -1, -1, -1, -1, 30,
4828 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4829 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4830 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4831 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4832 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4833 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4834 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4835 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4836 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4837 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4838 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4839 141, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4840 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
4841 10, 11, 12, -1, -1, 15, 16, -1, 18, 19,
4842 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4843 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4844 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4845 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4846 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4847 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4848 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4849 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4850 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4851 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4852 -1, -1, -1, -1, -1, -1, -1, 1, -1, 3,
4853 4, 5, 6, 7, -1, 9, 10, 11, 12, 139,
4854 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4855 24, 151, -1, 153, -1, -1, 30, 31, 32, 33,
4856 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4857 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4858 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4859 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4860 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4861 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4862 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4863 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4864 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4865 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
4866 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4867 18, 19, 20, 21, 22, 23, 24, 151, -1, 153,
4868 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4869 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4870 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4871 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4872 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4873 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4874 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4875 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4876 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4877 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4878 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4879 -1, 139, 140, 141, -1, -1, -1, -1, -1, -1,
4880 -1, 149, -1, 151, 1, 153, 3, 4, 5, 6,
4881 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
4882 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4883 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4884 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4885 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4886 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4887 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4889 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4890 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4891 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4892 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4893 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4894 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
4895 -1, -1, 149, -1, 151, 1, 153, 3, 4, 5,
4896 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
4897 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4898 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4899 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4900 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4901 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4902 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4903 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4904 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4905 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4906 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4907 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4909 -1, -1, -1, 139, 140, 141, -1, -1, 144, -1,
4910 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
4911 5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
4912 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4913 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4914 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4915 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4916 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4917 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4918 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4919 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4920 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4921 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4922 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4923 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4924 -1, -1, -1, -1, 139, 140, 141, -1, -1, 144,
4925 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
4926 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
4927 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
4928 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4929 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4930 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4931 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4932 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4933 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4934 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4935 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4936 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4937 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4938 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
4939 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4940 18, 19, 20, 21, 22, 23, 24, 151, -1, 153,
4941 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4942 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4943 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4944 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4945 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4946 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4947 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4948 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4949 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4950 118, -1, 120, -1, -1, -1, -1, -1, -1, -1,
4951 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4952 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4953 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
4954 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4955 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4956 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4957 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4958 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4959 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4960 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4961 102, -1, 104, 105, -1, 107, 108, 109, 110, 111,
4962 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4963 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4964 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4965 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4966 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
4967 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4968 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4969 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4970 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4971 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4972 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4973 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4974 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4975 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4976 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4977 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4978 20, 21, 22, 23, 24, 151, -1, 153, -1, -1,
4979 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4980 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4981 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4982 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4983 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4984 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4985 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4986 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4987 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4988 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4989 4, 5, 6, 7, -1, -1, -1, 11, 12, 139,
4990 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4991 24, -1, -1, 153, -1, -1, 30, 31, 32, 33,
4992 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4993 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4994 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4995 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4996 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4997 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4998 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4999 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
5000 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
5001 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
5002 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
5003 18, 19, 20, 21, 22, 23, 24, 151, -1, -1,
5004 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5005 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5006 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5007 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5008 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
5009 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5010 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5011 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
5012 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5013 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5014 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5015 -1, 139, 140, 141, -1, -1, -1, -1, -1, -1,
5016 -1, -1, -1, 151, 3, 4, 5, 6, 7, 8,
5017 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
5018 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
5019 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5020 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5021 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5022 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5023 -1, -1, -1, -1, -1, -1, 75, 76, 77, 78,
5024 79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
5025 -1, -1, -1, 92, 93, 94, 95, -1, -1, -1,
5026 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
5027 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5028 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5029 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
5030 -1, 140, 141, -1, -1, -1, -1, -1, 147, 148,
5031 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
5032 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
5033 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
5034 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
5035 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5036 53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
5037 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5038 -1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
5039 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
5040 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
5041 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
5042 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5043 -1, -1, -1, -1, -1, -1, 129, 130, 131, 132,
5044 133, 134, 135, 136, 137, 138, -1, 140, 141, -1,
5045 -1, -1, -1, -1, 147, 3, 4, 5, 6, 7,
5046 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5047 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5048 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5049 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5050 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
5051 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5052 -1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
5053 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
5054 -1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
5055 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
5056 108, -1, -1, 111, -1, -1, -1, -1, -1, -1,
5057 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5058 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
5059 138, -1, 140, 141, -1, -1, -1, -1, -1, 147,
5060 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
5061 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
5062 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
5063 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
5064 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5065 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
5066 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5067 -1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
5068 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
5069 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
5070 -1, -1, -1, -1, 107, 108, -1, -1, 111, -1,
5071 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5072 -1, -1, -1, -1, -1, -1, 129, 130, 131, 132,
5073 133, 134, 135, 136, 137, 138, -1, 140, 141, -1,
5074 -1, -1, -1, -1, 147, 3, 4, 5, 6, 7,
5075 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5076 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5077 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5078 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5079 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
5080 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5081 -1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
5082 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
5083 -1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
5084 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
5085 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5086 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5087 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
5088 138, -1, 140, 141, 3, 4, 5, -1, 7, 147,
5089 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5090 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5091 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5092 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5093 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5094 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5095 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5096 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5097 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
5098 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5099 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5100 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5101 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
5102 139, 11, 12, -1, -1, -1, 16, 146, 18, 19,
5103 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5104 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5105 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5106 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5107 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5108 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5109 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5110 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
5111 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
5112 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
5113 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5114 -1, -1, 3, 4, 5, 6, 7, -1, -1, 139,
5115 11, 12, -1, -1, -1, 16, 146, 18, 19, 20,
5116 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5117 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5118 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5119 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5120 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5121 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5122 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5123 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5124 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5125 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5126 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5127 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5128 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5129 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5130 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5131 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5132 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5133 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5134 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5135 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5136 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5137 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
5138 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5139 -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
5140 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5141 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5142 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5143 39, -1, -1, -1, -1, -1, 45, 46, -1, 48,
5144 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5145 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5146 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5147 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5148 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5149 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5150 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5151 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5152 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5153 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5154 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5155 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5156 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5157 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5158 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5159 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5160 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5161 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5162 -1, 104, 105, -1, 107, 108, 109, 110, 111, 112,
5163 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5164 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5165 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5166 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5167 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5168 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5169 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5170 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5171 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5172 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5173 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5174 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5175 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
5176 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5177 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5178 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5179 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5180 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5181 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5182 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5183 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5184 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5185 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5186 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5187 101, 102, -1, 104, 105, -1, 107, 108, 109, 110,
5188 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5189 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5190 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5191 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5192 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5193 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5194 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5195 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5196 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5197 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5198 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5199 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5200 105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
5201 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5202 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5203 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5204 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5205 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5206 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5207 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5208 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5209 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5210 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5211 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5212 -1, -1, 101, 102, -1, 104, 105, -1, -1, 108,
5213 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5214 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5215 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5216 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5217 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5218 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5219 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5220 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5221 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5222 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5223 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5224 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5225 -1, 104, 105, -1, 107, 108, -1, 110, 111, 112,
5226 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5227 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5228 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5229 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5230 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5231 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5232 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5233 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5234 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5235 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5236 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5237 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5238 -1, 108, -1, 110, 111, 112, 113, 114, 115, 116,
5239 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5240 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5241 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5242 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5243 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5244 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5245 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5246 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5247 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5248 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5249 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5250 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5251 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5252 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5253 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5254 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5255 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5256 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5257 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5258 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5259 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5260 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5261 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5262 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5263 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5264 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5265 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5266 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5267 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5268 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5269 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5270 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5271 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5272 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5273 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5274 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5275 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5276 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5277 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5278 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5279 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5280 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5281 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5282 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5283 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5284 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5285 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5286 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5287 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5288 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5289 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5290 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5291 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5292 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5293 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5294 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5295 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5296 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5297 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5299 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5300 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5301 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5302 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5303 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5304 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5305 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5306 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5307 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5308 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5309 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5310 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5311 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5312 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5313 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5314 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5315 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5316 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5317 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5318 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5319 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5320 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5321 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5322 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5323 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5324 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5325 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5326 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5327 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5328 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5329 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5330 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5331 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5332 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5333 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5334 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5335 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5337 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5338 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5339 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5340 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5341 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5342 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5343 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5344 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5345 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5346 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5347 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5348 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5350 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5351 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5352 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5353 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5354 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
5355 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5356 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5357 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5358 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5359 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5362 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5363 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5364 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5365 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5366 -1, -1, 11, 12, -1, -1, -1, 16, 139, 18,
5367 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5368 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5369 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5370 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5371 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5372 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5373 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5374 -1, -1, -1, -1, -1, 94, -1, -1, -1, 98,
5375 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5376 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5377 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5378 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5379 139, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5380 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5381 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5382 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5383 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5386 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5387 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5388 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5389 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5390 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5391 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
5392 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5393 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5394 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5395 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5396 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5397 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5399 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5400 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5401 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5402 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5403 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
5404 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5405 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5406 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5407 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5408 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5409 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5411 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5412 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5413 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5414 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5415 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
5416 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5417 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5418 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5419 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5420 61, 62, 63, 64, 65, 33, 34, 35, 36, -1,
5421 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5422 -1, 49, 50, 51, 52, -1, -1, -1, 56, -1,
5423 -1, 59, 60, 61, 62, 63, -1, 98, -1, -1,
5424 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5425 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5426 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5427 98, -1, -1, 101, -1, -1, 104, 105, 139, 107,
5428 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5429 118, 33, 34, 35, 36, -1, -1, -1, -1, -1,
5430 -1, -1, -1, -1, 132, -1, -1, 49, 50, 51,
5431 52, 139, -1, -1, 56, -1, -1, 59, 60, 61,
5432 62, 63, -1, -1, -1, -1, -1, -1, -1, -1,
5433 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5434 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
5435 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5436 -1, -1, 104, 105, -1, 107, -1, -1, 110, 111,
5437 112, 113, 114, 115, 116, 117, 118, 52, 53, -1,
5438 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
5439 132, -1, -1, -1, -1, -1, -1, 139, -1, -1,
5440 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5441 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5442 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5443 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5445 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5446 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5447 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5448 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5449 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5450 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5451 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5452 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5453 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5454 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5455 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5456 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5457 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5458 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5459 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5460 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5461 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5463 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5464 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5465 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5466 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5467 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5468 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5469 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5470 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5471 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5472 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5473 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5474 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5475 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5476 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5477 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5478 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5479 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5480 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5481 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5482 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5483 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5485 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5486 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5487 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5488 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5490 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5491 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5492 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5494 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5495 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5496 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5497 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5498 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5499 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5500 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5501 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5502 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5503 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5504 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5505 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5506 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5507 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5508 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5509 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5510 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5511 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5512 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5513 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5514 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5515 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5516 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5517 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5518 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5519 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5520 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5521 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5522 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5523 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5524 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5525 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5526 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5527 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5528 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5529 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5530 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5531 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5532 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5533 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5534 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5535 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5536 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5537 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5539 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5540 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5541 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5542 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5543 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5544 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5545 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5546 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5547 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5548 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5549 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5550 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5551 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5552 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5553 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5554 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5555 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5556 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5557 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5558 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5559 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5560 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5561 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5562 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5563 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5564 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5565 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5566 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5567 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5568 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5569 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5570 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5571 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5572 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5573 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5574 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5575 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5576 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5577 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5578 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5579 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5580 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5581 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
5589 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
5590 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
5591 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
5592 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5593 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
5594 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
5595 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
5596 157, 158, 159, 167, 169, 171, 179, 180, 186, 187,
5597 189, 190, 191, 193, 194, 195, 197, 198, 207, 210,
5598 226, 236, 237, 238, 239, 240, 241, 242, 243, 244,
5599 245, 246, 255, 275, 283, 284, 335, 336, 337, 338,
5600 339, 340, 341, 344, 346, 347, 361, 362, 364, 365,
5601 366, 367, 368, 369, 370, 371, 409, 423, 159, 3,
5602 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
5603 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
5604 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
5605 37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
5606 52, 53, 56, 75, 76, 77, 78, 79, 80, 81,
5607 82, 83, 86, 87, 92, 93, 94, 95, 107, 108,
5608 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
5609 140, 141, 147, 201, 202, 203, 205, 206, 361, 39,
5610 58, 98, 101, 107, 108, 109, 112, 140, 190, 198,
5611 207, 212, 218, 221, 223, 236, 367, 368, 370, 371,
5612 407, 408, 218, 148, 219, 220, 148, 215, 219, 148,
5613 153, 416, 54, 202, 416, 143, 160, 143, 21, 22,
5614 31, 32, 189, 207, 236, 255, 207, 207, 207, 56,
5615 1, 47, 101, 163, 164, 165, 167, 192, 193, 423,
5616 167, 228, 213, 223, 407, 423, 212, 406, 407, 423,
5617 46, 98, 139, 146, 179, 180, 197, 226, 236, 367,
5618 368, 371, 276, 54, 55, 57, 201, 350, 363, 350,
5619 351, 352, 152, 152, 152, 152, 366, 186, 207, 207,
5620 151, 153, 415, 421, 422, 40, 41, 42, 43, 44,
5621 37, 38, 148, 374, 375, 376, 377, 423, 374, 376,
5622 26, 143, 215, 219, 247, 285, 28, 248, 282, 126,
5623 146, 101, 107, 194, 126, 25, 77, 78, 79, 80,
5624 81, 82, 83, 84, 85, 86, 87, 88, 89, 94,
5625 95, 100, 127, 129, 130, 131, 132, 133, 134, 135,
5626 136, 137, 138, 209, 209, 68, 96, 97, 145, 413,
5627 227, 171, 182, 182, 183, 184, 183, 182, 415, 422,
5628 98, 191, 198, 236, 260, 367, 368, 371, 52, 56,
5629 94, 98, 199, 200, 236, 367, 368, 371, 200, 33,
5630 34, 35, 36, 49, 50, 51, 52, 56, 148, 178,
5631 201, 369, 404, 218, 97, 413, 414, 285, 338, 99,
5632 99, 146, 212, 56, 212, 212, 212, 350, 126, 100,
5633 146, 222, 423, 97, 145, 413, 99, 99, 146, 222,
5634 218, 416, 417, 218, 91, 217, 218, 223, 381, 407,
5635 423, 171, 417, 171, 54, 64, 65, 168, 148, 208,
5636 157, 163, 97, 413, 99, 167, 166, 192, 149, 415,
5637 422, 417, 229, 417, 150, 146, 153, 420, 146, 420,
5638 144, 420, 416, 56, 366, 194, 196, 375, 146, 97,
5639 145, 413, 277, 66, 119, 121, 122, 353, 119, 119,
5640 353, 67, 353, 342, 348, 345, 349, 77, 151, 159,
5641 182, 182, 182, 182, 167, 171, 171, 52, 54, 55,
5642 56, 57, 58, 77, 91, 101, 107, 108, 109, 133,
5643 136, 265, 378, 380, 381, 382, 383, 384, 385, 386,
5644 387, 388, 391, 392, 393, 394, 395, 398, 399, 400,
5645 401, 402, 126, 161, 163, 380, 386, 126, 161, 286,
5646 287, 106, 188, 290, 291, 290, 70, 211, 423, 192,
5647 146, 197, 146, 211, 175, 207, 207, 207, 207, 207,
5648 207, 207, 207, 207, 207, 207, 207, 207, 172, 207,
5649 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
5650 52, 53, 56, 205, 215, 410, 411, 217, 223, 52,
5651 53, 56, 205, 215, 410, 161, 13, 256, 421, 256,
5652 163, 182, 163, 415, 232, 56, 97, 145, 413, 25,
5653 171, 52, 56, 199, 130, 372, 97, 145, 413, 235,
5654 405, 68, 97, 412, 52, 56, 410, 211, 211, 204,
5655 124, 211, 212, 107, 212, 221, 407, 52, 56, 217,
5656 52, 56, 211, 211, 408, 417, 149, 417, 146, 417,
5657 146, 417, 202, 230, 207, 144, 144, 410, 410, 211,
5658 160, 417, 165, 417, 407, 146, 196, 52, 56, 217,
5659 52, 56, 278, 355, 354, 119, 343, 353, 66, 119,
5660 119, 343, 66, 119, 207, 101, 107, 261, 262, 263,
5661 264, 383, 146, 403, 423, 417, 417, 126, 146, 379,
5662 212, 146, 403, 34, 52, 146, 379, 52, 146, 379,
5663 52, 207, 10, 254, 8, 249, 331, 423, 421, 146,
5664 207, 254, 144, 288, 286, 254, 292, 254, 107, 186,
5665 212, 223, 224, 225, 417, 196, 146, 169, 170, 186,
5666 198, 207, 212, 214, 225, 236, 371, 176, 173, 416,
5667 99, 99, 215, 219, 416, 418, 146, 99, 99, 215,
5668 216, 219, 423, 254, 163, 13, 163, 254, 27, 257,
5669 421, 254, 25, 231, 297, 17, 251, 295, 52, 56,
5670 217, 52, 56, 183, 234, 373, 233, 52, 56, 199,
5671 217, 161, 171, 181, 216, 219, 170, 207, 214, 170,
5672 214, 202, 212, 212, 222, 99, 99, 418, 99, 99,
5673 381, 407, 171, 214, 420, 194, 418, 148, 280, 380,
5674 356, 54, 55, 57, 360, 371, 152, 353, 152, 152,
5675 152, 263, 383, 146, 417, 146, 402, 212, 378, 381,
5676 385, 398, 400, 388, 392, 394, 386, 395, 400, 384,
5677 386, 44, 212, 225, 332, 423, 9, 15, 250, 252,
5678 334, 423, 44, 289, 144, 293, 212, 146, 44, 196,
5679 44, 126, 44, 97, 145, 413, 52, 56, 90, 91,
5680 98, 101, 104, 105, 132, 275, 304, 305, 306, 309,
5681 326, 327, 328, 329, 330, 335, 336, 339, 340, 341,
5682 344, 346, 347, 368, 304, 128, 211, 211, 188, 150,
5683 99, 211, 211, 188, 14, 252, 253, 258, 259, 423,
5684 259, 185, 298, 295, 254, 107, 212, 294, 254, 418,
5685 163, 421, 182, 161, 418, 254, 417, 178, 285, 282,
5686 211, 211, 99, 211, 211, 417, 146, 417, 380, 279,
5687 357, 417, 261, 264, 262, 417, 146, 379, 146, 379,
5688 403, 146, 379, 146, 379, 379, 207, 100, 333, 423,
5689 163, 162, 207, 131, 270, 271, 423, 270, 107, 212,
5690 167, 167, 211, 207, 52, 56, 217, 52, 56, 327,
5691 327, 56, 199, 311, 107, 304, 312, 313, 314, 315,
5692 316, 318, 418, 310, 416, 419, 52, 100, 177, 131,
5693 88, 89, 97, 145, 148, 307, 308, 174, 207, 170,
5694 214, 170, 214, 211, 170, 214, 170, 214, 163, 182,
5695 254, 254, 299, 254, 212, 146, 256, 254, 161, 421,
5696 254, 211, 272, 416, 29, 123, 281, 358, 146, 146,
5697 386, 400, 386, 386, 98, 198, 236, 367, 368, 371,
5698 256, 163, 265, 266, 269, 272, 384, 386, 387, 389,
5699 390, 396, 397, 400, 402, 163, 161, 212, 418, 304,
5700 52, 418, 107, 304, 318, 418, 146, 146, 58, 112,
5701 319, 320, 321, 322, 323, 324, 325, 392, 144, 328,
5702 309, 327, 327, 199, 418, 417, 112, 312, 315, 319,
5703 312, 315, 319, 170, 214, 256, 302, 303, 304, 314,
5704 315, 319, 107, 212, 163, 254, 149, 151, 161, 163,
5705 359, 262, 379, 146, 379, 379, 379, 56, 97, 145,
5706 413, 163, 334, 403, 272, 131, 126, 146, 267, 268,
5707 98, 236, 146, 403, 146, 267, 146, 267, 417, 52,
5708 146, 146, 317, 318, 350, 419, 146, 304, 34, 52,
5709 350, 417, 417, 417, 418, 418, 418, 163, 256, 40,
5710 41, 146, 212, 259, 295, 296, 52, 273, 274, 382,
5711 254, 144, 163, 386, 52, 56, 217, 52, 56, 331,
5712 131, 236, 266, 397, 400, 56, 97, 389, 394, 386,
5713 396, 400, 386, 146, 317, 146, 124, 321, 325, 258,
5714 300, 182, 182, 312, 316, 146, 416, 120, 379, 418,
5715 146, 267, 146, 267, 52, 56, 403, 146, 267, 146,
5716 267, 267, 317, 146, 316, 318, 163, 146, 274, 386,
5717 400, 386, 386, 259, 297, 301, 317, 267, 146, 267,
5724 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
5725 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
5726 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
5727 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
5728 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
5729 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
5730 171, 175, 176, 177, 171, 171, 178, 179, 181, 180,
5731 182, 184, 185, 183, 186, 186, 187, 187, 188, 189,
5732 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
5733 190, 191, 191, 192, 192, 193, 193, 193, 193, 193,
5734 193, 193, 193, 193, 193, 194, 194, 195, 195, 196,
5735 196, 197, 197, 197, 197, 197, 197, 197, 197, 197,
5736 198, 198, 198, 198, 198, 198, 198, 198, 198, 199,
5737 199, 200, 200, 200, 201, 201, 201, 201, 201, 202,
5738 202, 203, 204, 203, 205, 205, 205, 205, 205, 205,
5739 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5740 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5741 205, 205, 205, 205, 206, 206, 206, 206, 206, 206,
5742 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
5743 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
5744 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
5745 206, 206, 206, 206, 206, 207, 207, 207, 207, 207,
5746 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
5747 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
5748 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
5749 207, 207, 207, 207, 207, 208, 207, 207, 207, 207,
5750 207, 207, 207, 209, 209, 209, 209, 210, 210, 211,
5751 211, 212, 213, 213, 213, 213, 214, 214, 215, 215,
5752 215, 216, 216, 217, 217, 217, 217, 217, 218, 218,
5753 218, 218, 218, 220, 219, 221, 222, 222, 223, 223,
5754 223, 223, 224, 224, 225, 225, 225, 226, 226, 226,
5755 226, 226, 226, 226, 226, 226, 226, 226, 227, 226,
5756 228, 226, 229, 226, 226, 226, 226, 226, 226, 226,
5757 226, 226, 226, 230, 226, 226, 226, 226, 226, 226,
5758 226, 226, 226, 226, 226, 231, 226, 232, 226, 226,
5759 226, 233, 226, 234, 226, 235, 226, 226, 226, 226,
5760 226, 226, 226, 236, 237, 238, 239, 240, 241, 242,
5761 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
5762 253, 254, 255, 256, 256, 256, 257, 257, 258, 258,
5763 259, 259, 260, 260, 261, 261, 262, 262, 263, 263,
5764 263, 263, 263, 264, 264, 265, 265, 266, 266, 266,
5765 266, 267, 267, 268, 269, 269, 269, 269, 269, 269,
5766 269, 269, 269, 269, 269, 269, 269, 269, 269, 270,
5767 270, 271, 271, 272, 272, 273, 273, 274, 274, 276,
5768 277, 278, 279, 275, 280, 280, 281, 281, 282, 283,
5769 283, 283, 283, 284, 284, 284, 284, 284, 284, 284,
5770 284, 284, 285, 285, 287, 288, 289, 286, 291, 292,
5771 293, 290, 294, 294, 294, 294, 295, 296, 296, 298,
5772 299, 300, 297, 301, 301, 302, 302, 302, 303, 303,
5773 303, 303, 303, 303, 304, 305, 305, 306, 306, 307,
5774 308, 309, 309, 309, 309, 309, 309, 309, 309, 309,
5775 309, 309, 309, 310, 309, 309, 311, 309, 312, 312,
5776 312, 312, 312, 312, 312, 312, 313, 313, 314, 314,
5777 315, 316, 316, 317, 317, 318, 319, 319, 319, 319,
5778 320, 320, 321, 321, 322, 322, 323, 323, 324, 325,
5779 325, 326, 326, 326, 326, 326, 326, 326, 326, 326,
5780 326, 327, 327, 327, 327, 327, 327, 327, 327, 327,
5781 327, 328, 329, 330, 330, 330, 331, 331, 332, 332,
5782 332, 333, 333, 334, 334, 335, 335, 336, 337, 337,
5783 337, 338, 339, 340, 341, 342, 342, 343, 343, 344,
5784 345, 345, 346, 347, 348, 348, 349, 349, 350, 350,
5785 351, 351, 352, 352, 353, 354, 353, 355, 356, 357,
5786 358, 359, 353, 360, 360, 360, 360, 361, 361, 362,
5787 363, 363, 363, 363, 364, 365, 365, 366, 366, 366,
5788 366, 367, 367, 367, 367, 367, 368, 368, 368, 368,
5789 368, 368, 368, 369, 369, 370, 370, 371, 371, 373,
5790 372, 372, 374, 374, 375, 375, 375, 376, 377, 376,
5791 378, 378, 378, 378, 379, 379, 380, 380, 380, 380,
5792 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
5793 380, 381, 382, 382, 382, 382, 383, 383, 384, 385,
5794 385, 386, 386, 387, 388, 388, 389, 389, 390, 390,
5795 391, 391, 392, 392, 393, 394, 394, 395, 396, 397,
5796 397, 398, 398, 399, 399, 400, 400, 401, 401, 402,
5797 403, 403, 404, 405, 404, 406, 406, 407, 407, 408,
5798 408, 408, 408, 409, 409, 409, 410, 410, 410, 410,
5799 411, 411, 411, 412, 412, 413, 413, 414, 414, 415,
5800 415, 416, 416, 417, 418, 419, 420, 420, 420, 421,
5807 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5808 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5809 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5810 3, 3, 3, 3, 4, 1, 4, 4, 6, 4,
5811 1, 4, 4, 7, 6, 6, 6, 6, 4, 1,
5812 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5813 6, 0, 0, 0, 6, 1, 1, 2, 0, 5,
5814 1, 0, 0, 4, 1, 1, 1, 4, 3, 1,
5815 2, 3, 4, 5, 4, 5, 2, 2, 2, 2,
5816 2, 1, 3, 1, 3, 1, 2, 3, 5, 2,
5817 4, 2, 4, 1, 3, 1, 3, 2, 3, 1,
5818 3, 1, 1, 4, 3, 3, 3, 3, 2, 1,
5819 1, 1, 4, 3, 3, 3, 3, 2, 1, 1,
5820 1, 2, 1, 3, 1, 1, 1, 1, 1, 1,
5821 1, 1, 0, 4, 1, 1, 1, 1, 1, 1,
5822 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5823 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5824 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5825 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5826 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5827 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5828 1, 1, 1, 1, 1, 4, 4, 7, 6, 6,
5829 6, 6, 5, 4, 3, 3, 2, 2, 2, 2,
5830 3, 3, 3, 3, 3, 3, 4, 2, 2, 3,
5831 3, 3, 3, 1, 3, 3, 3, 3, 3, 2,
5832 2, 3, 3, 3, 3, 0, 4, 6, 4, 6,
5833 4, 6, 1, 1, 1, 1, 1, 3, 3, 1,
5834 1, 1, 1, 2, 4, 2, 1, 3, 3, 5,
5835 3, 1, 1, 1, 1, 2, 4, 2, 1, 2,
5836 2, 4, 1, 0, 2, 2, 2, 1, 1, 2,
5837 3, 4, 1, 1, 3, 4, 2, 1, 1, 1,
5838 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
5839 0, 3, 0, 4, 3, 3, 2, 3, 3, 1,
5840 4, 3, 1, 0, 6, 4, 3, 2, 1, 2,
5841 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
5842 6, 0, 6, 0, 7, 0, 5, 4, 4, 1,
5843 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5844 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5845 1, 1, 1, 1, 1, 2, 1, 1, 1, 5,
5846 1, 2, 1, 1, 1, 3, 1, 3, 1, 3,
5847 5, 1, 3, 2, 1, 1, 1, 4, 2, 2,
5848 1, 2, 0, 1, 6, 8, 4, 6, 4, 2,
5849 6, 2, 4, 6, 2, 4, 2, 4, 1, 1,
5850 1, 3, 4, 1, 4, 1, 3, 1, 1, 0,
5851 0, 0, 0, 7, 4, 1, 3, 3, 3, 2,
5852 4, 5, 5, 2, 4, 4, 3, 3, 3, 2,
5853 1, 4, 3, 3, 0, 0, 0, 5, 0, 0,
5854 0, 5, 1, 2, 3, 4, 5, 1, 1, 0,
5855 0, 0, 8, 1, 1, 1, 3, 3, 1, 2,
5856 3, 1, 1, 1, 1, 3, 1, 3, 1, 1,
5857 1, 1, 4, 4, 4, 3, 4, 4, 4, 3,
5858 3, 3, 2, 0, 4, 2, 0, 4, 1, 1,
5859 2, 3, 5, 2, 4, 1, 2, 3, 1, 3,
5860 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
5861 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
5862 1, 1, 3, 3, 2, 2, 1, 1, 1, 2,
5863 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5864 1, 1, 2, 2, 3, 1, 6, 1, 1, 1,
5865 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
5866 2, 3, 3, 3, 4, 0, 3, 1, 2, 4,
5867 0, 3, 4, 4, 0, 3, 0, 3, 0, 2,
5868 0, 2, 0, 2, 1, 0, 3, 0, 0, 0,
5869 0, 0, 8, 1, 1, 1, 1, 1, 1, 2,
5870 1, 1, 1, 1, 3, 1, 2, 1, 1, 1,
5871 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5872 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5873 4, 0, 1, 1, 3, 5, 3, 1, 0, 3,
5874 4, 2, 2, 1, 2, 0, 6, 8, 4, 6,
5875 4, 6, 2, 4, 6, 2, 4, 2, 4, 1,
5876 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5877 3, 1, 3, 1, 2, 1, 2, 1, 1, 3,
5878 1, 3, 1, 1, 2, 2, 1, 3, 3, 1,
5879 3, 1, 3, 1, 1, 2, 1, 1, 1, 2,
5880 2, 1, 1, 0, 4, 1, 2, 1, 3, 3,
5881 2, 4, 2, 1, 1, 1, 1, 1, 1, 1,
5882 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5883 1, 0, 1, 2, 2, 2, 0, 1, 1, 1,
5890#define yyerrok (yyerrstatus = 0)
5891#define yyclearin (yychar = YYEMPTY)
5893#define YYACCEPT goto yyacceptlab
5894#define YYABORT goto yyabortlab
5895#define YYERROR goto yyerrorlab
5896#define YYNOMEM goto yyexhaustedlab
5899#define YYRECOVERING() (!!yyerrstatus)
5901#define YYBACKUP(Token, Value) \
5903 if (yychar == YYEMPTY) \
5907 YYPOPSTACK (yylen); \
5913 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5920#define YYERRCODE YYUNDEF
5926#ifndef YYLLOC_DEFAULT
5927# define YYLLOC_DEFAULT(Current, Rhs, N) \
5931 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5932 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5933 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5934 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5938 (Current).first_line = (Current).last_line = \
5939 YYRHSLOC (Rhs, 0).last_line; \
5940 (Current).first_column = (Current).last_column = \
5941 YYRHSLOC (Rhs, 0).last_column; \
5946#define YYRHSLOC(Rhs, K) ((Rhs)[K])
5954# define YYFPRINTF fprintf
5957# define YYDPRINTF(Args) \
5968# ifndef YYLOCATION_PRINT
5970# if defined YY_LOCATION_PRINT
5974# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
5976# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5982yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
6000 else if (0 <= end_col && yylocp->
first_column < end_col)
6006# define YYLOCATION_PRINT yy_location_print_
6010# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
6014# define YYLOCATION_PRINT(File, Loc) ((void) 0)
6017# define YY_LOCATION_PRINT YYLOCATION_PRINT
6023# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
6027 YYFPRINTF (p, "%s ", Title); \
6028 yy_symbol_print (stderr, \
6029 Kind, Value, Location, p); \
6030 YYFPRINTF (p, "\n"); \
6040yy_symbol_value_print (
FILE *yyo,
6043 FILE *yyoutput = yyo;
6053#line 1085 "ripper.y"
6061#line 6060 "ripper.c"
6065#line 1085 "ripper.y"
6073#line 6072 "ripper.c"
6077#line 1085 "ripper.y"
6085#line 6084 "ripper.c"
6089#line 1085 "ripper.y"
6097#line 6096 "ripper.c"
6101#line 1085 "ripper.y"
6109#line 6108 "ripper.c"
6113#line 1085 "ripper.y"
6121#line 6120 "ripper.c"
6125#line 1085 "ripper.y"
6133#line 6132 "ripper.c"
6137#line 1092 "ripper.y"
6145#line 6144 "ripper.c"
6149#line 1092 "ripper.y"
6157#line 6156 "ripper.c"
6161#line 1092 "ripper.y"
6169#line 6168 "ripper.c"
6173#line 1092 "ripper.y"
6181#line 6180 "ripper.c"
6185#line 1092 "ripper.y"
6193#line 6192 "ripper.c"
6197#line 1099 "ripper.y"
6205#line 6204 "ripper.c"
6209#line 1106 "ripper.y"
6217#line 6216 "ripper.c"
6221#line 1092 "ripper.y"
6229#line 6228 "ripper.c"
6233#line 1085 "ripper.y"
6241#line 6240 "ripper.c"
6256yy_symbol_print (
FILE *yyo,
6260 yykind <
YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
6262 YYLOCATION_PRINT (yyo, yylocationp);
6264 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
6275#define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
6278 for (; yybottom <= yytop; yybottom++)
6280 int yybot = *yybottom;
6286# define YY_STACK_PRINT(Bottom, Top) \
6289 yy_stack_print ((Bottom), (Top)); \
6301 int yylno = yyrline[yyrule];
6302 int yynrhs = yyr2[yyrule];
6304 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
6307 for (yyi = 0; yyi < yynrhs; yyi++)
6310 yy_symbol_print (stderr,
6312 &yyvsp[(yyi + 1) - (yynrhs)],
6313 &(yylsp[(yyi + 1) - (yynrhs)]), p);
6318# define YY_REDUCE_PRINT(Rule) \
6321 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
6330# define YYDPRINTF(Args) ((void) 0)
6331# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
6332# define YY_STACK_PRINT(Bottom, Top)
6333# define YY_REDUCE_PRINT(Rule)
6339# define YYINITDEPTH 200
6350# define YYMAXDEPTH 10000
6374 int yyn = yypact[+*yyctx->
yyssp];
6380 int yyxbegin = yyn < 0 ? -yyn : 0;
6382 int yychecklim =
YYLAST - yyn + 1;
6385 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6391 else if (yycount == yyargn)
6397 if (yyarg && yycount == 0 && 0 < yyargn)
6406# if defined __GLIBC__ && defined _STRING_H
6407# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
6411yystrlen (
const char *yystr)
6414 for (yylen = 0; yystr[yylen]; yylen++)
6422# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
6423# define yystpcpy stpcpy
6428yystpcpy (
char *yydest,
const char *yysrc)
6431 const char *yys = yysrc;
6433 while ((*yyd++ = *yys++) !=
'\0')
6450yytnamerr (
char *yyres,
const char *yystr)
6455 char const *yyp = yystr;
6461 goto do_not_strip_quotes;
6465 goto do_not_strip_quotes;
6481 do_not_strip_quotes: ;
6485 return yystpcpy (yyres, yystr) - yyres;
6487 return yystrlen (yystr);
6525 yyarg[yycount] = yyctx->
yytoken;
6527 yyn = yypcontext_expected_tokens (yyctx,
6528 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
6549 enum { YYARGS_MAX = 5 };
6559 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
6565#define YYCASE_(N, S) \
6571 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
6572 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
6573 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
6574 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
6575 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6581 yysize = yystrlen (yyformat) - 2 * yycount + 1;
6584 for (yyi = 0; yyi < yycount; ++yyi)
6595 if (*yymsg_alloc < yysize)
6597 *yymsg_alloc = 2 * yysize;
6598 if (! (yysize <= *yymsg_alloc
6610 while ((*yyp = *yyformat) !=
'\0')
6611 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
6613 yyp +=
yytnamerr (yyp, yytname[yyarg[yyi++]]);
6631yydestruct (
const char *yymsg,
6670# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6674YYLTYPE yylloc = yyloc_default;
6681 int yyerrstatus = 0;
6719 char *yymsg = yymsgbuf;
6722#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
6734#line 1117 "ripper.y"
6739#line 6735 "ripper.c"
6758 YYDPRINTF ((p,
"Entering state %d\n", yystate));
6765 if (yyss + yystacksize - 1 <= yyssp)
6766#if !defined yyoverflow && !defined YYSTACK_RELOCATE
6773# if defined yyoverflow
6786 yyoverflow (
YY_(
"memory exhausted"),
6787 &yyss1, yysize *
YYSIZEOF (*yyssp),
6788 &yyvs1, yysize *
YYSIZEOF (*yyvsp),
6789 &yyls1, yysize *
YYSIZEOF (*yylsp),
6805 union yyalloc *yyptr =
6810 YYSTACK_RELOCATE (yyss_alloc, yyss);
6811 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
6812 YYSTACK_RELOCATE (yyls_alloc, yyls);
6813# undef YYSTACK_RELOCATE
6819 yyssp = yyss + yysize - 1;
6820 yyvsp = yyvs + yysize - 1;
6821 yylsp = yyls + yysize - 1;
6824 YYDPRINTF ((p,
"Stack size increased to %ld\n",
6825 YY_CAST (
long, yystacksize)));
6828 if (yyss + yystacksize - 1 <= yyssp)
6848 yyn = yypact[yystate];
6858 yychar = yylex (&
yylval, &yylloc, p);
6865 YYDPRINTF ((p,
"Now at end of input.\n"));
6875 yyerror_range[1] = yylloc;
6887 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
6920 yyn = yydefact[yystate];
6941 yyval = yyvsp[1-yylen];
6945 yyerror_range[1] = yyloc;
6950#line 1322 "ripper.y"
6955#line 6951 "ripper.c"
6959#line 1327 "ripper.y"
6966 while (node->nd_next) {
6967 node = node->nd_next;
6969 node = node->nd_head;
6971 node = remove_begin(node);
6976 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(program,v1);p->result=v2;}
6979#line 6975 "ripper.c"
6983#line 1349 "ripper.y"
6985 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
6987#line 6983 "ripper.c"
6991#line 1355 "ripper.y"
6996 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.
val)=v5;}
6998#line 6994 "ripper.c"
7002#line 1362 "ripper.y"
7005 (yyval.
val) = newline_node((yyvsp[0].val));
7007 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
7009#line 7005 "ripper.c"
7013#line 1369 "ripper.y"
7016 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
7018 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
7020#line 7016 "ripper.c"
7024#line 1376 "ripper.y"
7026 (yyval.
val) = remove_begin((yyvsp[0].val));
7028#line 7024 "ripper.c"
7032#line 1383 "ripper.y"
7034 (yyval.
val) = (yyvsp[0].val);
7036#line 7032 "ripper.c"
7040#line 1389 "ripper.y"
7047 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(BEGIN,v1);(yyval.
val)=v2;}
7049#line 7045 "ripper.c"
7053#line 1401 "ripper.y"
7054 {
if (!(yyvsp[-1].val)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
7055#line 7051 "ripper.c"
7059#line 1404 "ripper.y"
7062 (yyval.
val) = new_bodystmt(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
7064 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-5].val));v2=escape_Qundef((yyvsp[-4].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.
val)=v5;}
7066#line 7062 "ripper.c"
7070#line 1413 "ripper.y"
7073 (yyval.
val) = new_bodystmt(p, (yyvsp[-2].val), (yyvsp[-1].
val), 0, (yyvsp[0].val), &(yyloc));
7075 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=
Qnil;v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.
val)=v5;}
7077#line 7073 "ripper.c"
7081#line 1422 "ripper.y"
7083 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
7085#line 7081 "ripper.c"
7089#line 1428 "ripper.y"
7094 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.
val)=v5;}
7096#line 7092 "ripper.c"
7100#line 1435 "ripper.y"
7103 (yyval.
val) = newline_node((yyvsp[0].val));
7105 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
7107#line 7103 "ripper.c"
7111#line 1442 "ripper.y"
7114 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
7116 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
7118#line 7114 "ripper.c"
7122#line 1449 "ripper.y"
7124 (yyval.
val) = remove_begin((yyvsp[0].val));
7126#line 7122 "ripper.c"
7130#line 1455 "ripper.y"
7132 (yyval.
val) = (yyvsp[0].val);
7134#line 7130 "ripper.c"
7138#line 1459 "ripper.y"
7140 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
7142#line 7138 "ripper.c"
7146#line 1463 "ripper.y"
7148 (yyval.
val) = (yyvsp[0].val);
7150#line 7146 "ripper.c"
7154#line 1468 "ripper.y"
7156#line 7152 "ripper.c"
7160#line 1469 "ripper.y"
7165 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(
alias,v1,v2);(yyval.
val)=v3;}
7167#line 7163 "ripper.c"
7171#line 1476 "ripper.y"
7176 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
7178#line 7174 "ripper.c"
7182#line 1483 "ripper.y"
7187 buf[1] = (char)(yyvsp[0].val)->nd_nth;
7190 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
7192#line 7188 "ripper.c"
7196#line 1493 "ripper.y"
7198 static const char mesg[] =
"can't make alias for the number variables";
7203 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].
val);v3=dispatch2(alias_error,v1,v2);(yyval.
val)=v3;}ripper_error(p);
7205#line 7201 "ripper.c"
7209#line 1502 "ripper.y"
7212 (yyval.
val) = (yyvsp[0].val);
7214 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(undef,v1);(yyval.
val)=v2;}
7216#line 7212 "ripper.c"
7220#line 1509 "ripper.y"
7223 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
7224 fixpos((yyval.
val), (yyvsp[0].
val));
7226 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
7228#line 7224 "ripper.c"
7232#line 1517 "ripper.y"
7235 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
7236 fixpos((yyval.
val), (yyvsp[0].
val));
7238 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
7240#line 7236 "ripper.c"
7244#line 1525 "ripper.y"
7251 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].
val), 1, &(yyloc));
7254 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(while_mod,v1,v2);(yyval.
val)=v3;}
7256#line 7252 "ripper.c"
7260#line 1537 "ripper.y"
7267 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].
val), 1, &(yyloc));
7270 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(until_mod,v1,v2);(yyval.
val)=v3;}
7272#line 7268 "ripper.c"
7276#line 1549 "ripper.y"
7280 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7281 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc);
7282 (yyval.
val) =
NEW_RESCUE(remove_begin((yyvsp[-2].val)), resq, 0, &(yyloc));
7284 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
7286#line 7282 "ripper.c"
7290#line 1559 "ripper.y"
7293 rb_warn0(
"END in method; use at_exit");
7298 NODE_SCOPE, 0 , (yyvsp[-1].val) , 0 , &(yyloc));
7302 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(
END,v1);(yyval.
val)=v2;}
7304#line 7300 "ripper.c"
7308#line 1574 "ripper.y"
7312 (yyval.
val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].
val), (yyvsp[-1].ctxt), &(yyloc));
7314 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
7316#line 7312 "ripper.c"
7320#line 1582 "ripper.y"
7324 (yyval.
val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].
val), (yyvsp[-1].ctxt), &(yyloc));
7326 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
7328#line 7324 "ripper.c"
7332#line 1590 "ripper.y"
7335 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7337 (yyval.
val) = node_assign(p, (yyvsp[-5].val),
NEW_RESCUE((yyvsp[-2].val),
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc), 0, &(yyloc)), (yyvsp[-3].
ctxt), &(yyloc));
7339 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);v4=(yyvsp[-5].
val);v5=v3;v6=dispatch2(massign,v4,v5);(yyval.
val)=v6;}
7341#line 7337 "ripper.c"
7345#line 1599 "ripper.y"
7348 (yyval.
val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].
val), (yyvsp[-1].ctxt), &(yyloc));
7350 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
7352#line 7348 "ripper.c"
7356#line 1609 "ripper.y"
7359 (yyval.
val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].
val), (yyvsp[-1].ctxt), &(yyloc));
7361 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
7363#line 7359 "ripper.c"
7367#line 1616 "ripper.y"
7370 (yyval.
val) = new_op_assign(p, (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[0].val), (yyvsp[-1].
ctxt), &(yyloc));
7372 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
7374#line 7370 "ripper.c"
7378#line 1623 "ripper.y"
7381 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-6].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-4]), &(yyloc));
7383 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-6].
val);v2=escape_Qundef((yyvsp[-4].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-2].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7386#line 7382 "ripper.c"
7390#line 1631 "ripper.y"
7393 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
7395 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].
val);v2=(yyvsp[-4].
val);v3=(yyvsp[-3].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7397#line 7393 "ripper.c"
7401#line 1638 "ripper.y"
7404 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
7406 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].
val);v2=(yyvsp[-4].
val);v3=(yyvsp[-3].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7408#line 7404 "ripper.c"
7412#line 1645 "ripper.y"
7415 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
7416 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-5].val), (yyvsp[-3].val), &loc), (yyvsp[-2].
val), (yyvsp[0].val), (yyvsp[-1].
ctxt), &(yyloc));
7418 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].
val);v2=(yyvsp[-3].
val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-2].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7420#line 7416 "ripper.c"
7424#line 1653 "ripper.y"
7427 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-5].val),
ID2VAL(
idCOLON2), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7429 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-3].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7431#line 7427 "ripper.c"
7435#line 1660 "ripper.y"
7438 rb_backref_error(p, (yyvsp[-3].val));
7441 {
VALUE v1,v2,v3;v1=var_field(p, (yyvsp[-3].val));v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=backref_error(p,
RNODE((yyvsp[-3].val)), v3);}ripper_error(p);
7443#line 7439 "ripper.c"
7447#line 1670 "ripper.y"
7450 (yyval.
val) = (yyvsp[0].val);
7452#line 7448 "ripper.c"
7456#line 1675 "ripper.y"
7459 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7463 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
7465#line 7461 "ripper.c"
7469#line 1688 "ripper.y"
7471 (yyval.
val) = logop(p, idAND, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7473#line 7469 "ripper.c"
7477#line 1692 "ripper.y"
7479 (yyval.
val) = logop(p, idOR, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7481#line 7477 "ripper.c"
7485#line 1696 "ripper.y"
7487 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
7489#line 7485 "ripper.c"
7493#line 1700 "ripper.y"
7495 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7497#line 7493 "ripper.c"
7501#line 1704 "ripper.y"
7509#line 7505 "ripper.c"
7513#line 1711 "ripper.y"
7514 {(yyval.
tbl) = push_pvtbl(p);}
7515#line 7511 "ripper.c"
7519#line 1713 "ripper.y"
7520 {pop_pvtbl(p, (yyvsp[-1].tbl));}
7521#line 7517 "ripper.c"
7525#line 1714 "ripper.y"
7529 (yyval.
val) =
NEW_CASE3((yyvsp[-5].val),
NEW_IN((yyvsp[-1].val), 0, 0, &(yylsp[-1])), &(yyloc));
7530 warn_one_line_pattern_matching(p, (yyval.
val), (yyvsp[-1].
val),
true);
7532 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-1].
val);v2=
Qnil;v3=
Qnil;v4=dispatch3(
in,v1,v2,v3);v5=(yyvsp[-5].
val);v6=v4;v7=dispatch2(
case,v5,v6);(yyval.
val)=v7;}
7534#line 7530 "ripper.c"
7538#line 1723 "ripper.y"
7546#line 7542 "ripper.c"
7550#line 1730 "ripper.y"
7551 {(yyval.
tbl) = push_pvtbl(p);}
7552#line 7548 "ripper.c"
7556#line 1732 "ripper.y"
7557 {pop_pvtbl(p, (yyvsp[-1].tbl));}
7558#line 7554 "ripper.c"
7562#line 1733 "ripper.y"
7567 warn_one_line_pattern_matching(p, (yyval.
val), (yyvsp[-1].
val),
false);
7569 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-1].
val);v2=
Qnil;v3=
Qnil;v4=dispatch3(
in,v1,v2,v3);v5=(yyvsp[-5].
val);v6=v4;v7=dispatch2(
case,v5,v6);(yyval.
val)=v7;}
7571#line 7567 "ripper.c"
7575#line 1745 "ripper.y"
7580 numparam_name(p, fname);
7587 (yyval.
val) = NEW_RIPPER(fname,
get_value((yyvsp[0].val)), (yyval.
val), &NULL_LOC);
7590#line 7586 "ripper.c"
7594#line 1762 "ripper.y"
7596 (yyval.
val) = (yyvsp[0].val);
7601#line 7597 "ripper.c"
7605#line 1770 "ripper.y"
7607#line 7603 "ripper.c"
7611#line 1771 "ripper.y"
7614 (yyval.
val) = (yyvsp[0].val);
7619 add_mark_object(p, ary);
7623#line 7619 "ripper.c"
7627#line 1785 "ripper.y"
7630 (yyval.
val) = (yyvsp[0].val);
7632#line 7628 "ripper.c"
7636#line 1791 "ripper.y"
7638#line 7634 "ripper.c"
7642#line 1791 "ripper.y"
7644#line 7640 "ripper.c"
7648#line 1792 "ripper.y"
7650 (yyval.
val) = (yyvsp[-2].val);
7652#line 7648 "ripper.c"
7656#line 1803 "ripper.y"
7659 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7661 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
7663#line 7659 "ripper.c"
7667#line 1812 "ripper.y"
7669 (yyval.
val) = (yyvsp[-1].val);
7671 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
7675#line 7671 "ripper.c"
7679#line 1822 "ripper.y"
7685 (yyval.
val)=(yyvsp[0].val);
7687#line 7683 "ripper.c"
7691#line 1832 "ripper.y"
7696 (yyval.
val) = (yyvsp[-1].val);
7698 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(command,v1,v2);(yyval.
val)=v3;}
7700#line 7696 "ripper.c"
7704#line 1841 "ripper.y"
7707 block_dup_check(p, (yyvsp[-1].val), (yyvsp[0].val));
7709 (yyval.
val) = method_add_block(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7710 fixpos((yyval.
val), (yyvsp[-2].
val));
7713 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(command,v1,v2);v4=v3;v5=(yyvsp[0].
val);v6=dispatch2(method_add_block,v4,v5);(yyval.
val)=v6;}
7715#line 7711 "ripper.c"
7719#line 1852 "ripper.y"
7722 (yyval.
val) = new_command_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val),
Qnull, &(yylsp[-1]), &(yyloc));
7724 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=(yyvsp[0].
val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.
val)=v5;}
7726#line 7722 "ripper.c"
7730#line 1859 "ripper.y"
7733 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
7735 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=(yyvsp[-1].
val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
7737#line 7733 "ripper.c"
7741#line 1866 "ripper.y"
7746 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-1].
val);v4=(yyvsp[0].
val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.
val)=v5;}
7748#line 7744 "ripper.c"
7752#line 1873 "ripper.y"
7755 (yyval.
val) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
7757 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].
val);v4=(yyvsp[-1].
val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
7759#line 7755 "ripper.c"
7763#line 1880 "ripper.y"
7767 fixpos((yyval.
val), (yyvsp[0].
val));
7769 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
7771#line 7767 "ripper.c"
7775#line 1888 "ripper.y"
7778 (yyval.
val) = new_yield(p, (yyvsp[0].val), &(yyloc));
7779 fixpos((yyval.
val), (yyvsp[0].
val));
7781 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(yield,v1);(yyval.
val)=v2;}
7783#line 7779 "ripper.c"
7787#line 1896 "ripper.y"
7790 (yyval.
val) =
NEW_RETURN(ret_args(p, (yyvsp[0].val)), &(yyloc));
7792 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
return,v1);(yyval.
val)=v2;}
7794#line 7790 "ripper.c"
7798#line 1903 "ripper.y"
7801 (yyval.
val) =
NEW_BREAK(ret_args(p, (yyvsp[0].val)), &(yyloc));
7803 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
break,v1);(yyval.
val)=v2;}
7805#line 7801 "ripper.c"
7809#line 1910 "ripper.y"
7812 (yyval.
val) =
NEW_NEXT(ret_args(p, (yyvsp[0].val)), &(yyloc));
7814 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(next,v1);(yyval.
val)=v2;}
7816#line 7812 "ripper.c"
7820#line 1920 "ripper.y"
7823 (yyval.
val) = (yyvsp[-1].val);
7825 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
7827#line 7823 "ripper.c"
7831#line 1930 "ripper.y"
7836 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
7838#line 7834 "ripper.c"
7842#line 1939 "ripper.y"
7847 (yyval.
val)=(yyvsp[0].val);
7849#line 7845 "ripper.c"
7853#line 1946 "ripper.y"
7856 (yyval.
val) =
NEW_MASGN(list_append(p, (yyvsp[-1].val),(yyvsp[0].
val)), 0, &(yyloc));
7858 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
7860#line 7856 "ripper.c"
7864#line 1953 "ripper.y"
7869 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
7871#line 7867 "ripper.c"
7875#line 1960 "ripper.y"
7880 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].
val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
7882#line 7878 "ripper.c"
7886#line 1967 "ripper.y"
7891 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
7893#line 7889 "ripper.c"
7897#line 1974 "ripper.y"
7902 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-3].
val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].
val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
7904#line 7900 "ripper.c"
7908#line 1981 "ripper.y"
7913 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
7915#line 7911 "ripper.c"
7919#line 1988 "ripper.y"
7924 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].
val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
7926#line 7922 "ripper.c"
7930#line 1995 "ripper.y"
7935 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
7937#line 7933 "ripper.c"
7941#line 2002 "ripper.y"
7946 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
7948#line 7944 "ripper.c"
7952#line 2012 "ripper.y"
7955 (yyval.
val) = (yyvsp[-1].val);
7957 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
7959#line 7955 "ripper.c"
7963#line 2021 "ripper.y"
7966 (yyval.
val) =
NEW_LIST((yyvsp[-1].val), &(yylsp[-1]));
7968 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-1].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
7970#line 7966 "ripper.c"
7974#line 2028 "ripper.y"
7977 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
7979 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
7981#line 7977 "ripper.c"
7985#line 2037 "ripper.y"
7990 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
7992#line 7988 "ripper.c"
7996#line 2044 "ripper.y"
7999 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].
val));
8001 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
8003#line 7999 "ripper.c"
8007#line 2053 "ripper.y"
8010 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8012 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
8014#line 8010 "ripper.c"
8018#line 2060 "ripper.y"
8021 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8023 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
8025#line 8021 "ripper.c"
8029#line 2067 "ripper.y"
8032 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
8034 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
8036#line 8032 "ripper.c"
8040#line 2074 "ripper.y"
8042 if ((yyvsp[-1].val) ==
tANDDOT) {
8043 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
8046 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8048 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
8050#line 8046 "ripper.c"
8054#line 2084 "ripper.y"
8057 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].
val), &(yyloc));
8059 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=v3;}
8061#line 8057 "ripper.c"
8065#line 2091 "ripper.y"
8067 if ((yyvsp[-1].val) ==
tANDDOT) {
8068 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
8071 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8073 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
8075#line 8071 "ripper.c"
8079#line 2101 "ripper.y"
8082 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
8084 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=const_decl(p, v3);}
8086#line 8082 "ripper.c"
8090#line 2108 "ripper.y"
8093 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
8095 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
8097#line 8093 "ripper.c"
8101#line 2115 "ripper.y"
8104 rb_backref_error(p, (yyvsp[0].val));
8107 (yyval.
val)=backref_error(p,
RNODE((yyvsp[0].val)), var_field(p, (yyvsp[0].val)));ripper_error(p);
8109#line 8105 "ripper.c"
8113#line 2125 "ripper.y"
8116 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8118 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
8120#line 8116 "ripper.c"
8124#line 2132 "ripper.y"
8127 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8129 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
8131#line 8127 "ripper.c"
8135#line 2139 "ripper.y"
8138 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
8140 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
8142#line 8138 "ripper.c"
8146#line 2146 "ripper.y"
8149 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8151 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
8153#line 8149 "ripper.c"
8157#line 2153 "ripper.y"
8160 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].
val), &(yyloc));
8164#line 8160 "ripper.c"
8168#line 2160 "ripper.y"
8171 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
8173 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
8175#line 8171 "ripper.c"
8179#line 2167 "ripper.y"
8182 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
8184 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=const_decl(p, v3);}
8186#line 8182 "ripper.c"
8190#line 2174 "ripper.y"
8193 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
8195 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
8197#line 8193 "ripper.c"
8201#line 2181 "ripper.y"
8204 rb_backref_error(p, (yyvsp[0].val));
8207 (yyval.
val)=backref_error(p,
RNODE((yyvsp[0].val)), var_field(p, (yyvsp[0].val)));ripper_error(p);
8209#line 8205 "ripper.c"
8213#line 2191 "ripper.y"
8215 static const char mesg[] =
"class/module name must be CONSTANT";
8219 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].
val);v3=dispatch2(class_name_error,v1,v2);(yyval.
val)=v3;}ripper_error(p);
8221#line 8217 "ripper.c"
8225#line 2202 "ripper.y"
8230 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
8232#line 8228 "ripper.c"
8236#line 2209 "ripper.y"
8241 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(const_ref,v1);(yyval.
val)=v2;}
8243#line 8239 "ripper.c"
8247#line 2216 "ripper.y"
8252 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
8254#line 8250 "ripper.c"
8258#line 2228 "ripper.y"
8261 (yyval.
val) = (yyvsp[0].val);
8263#line 8259 "ripper.c"
8267#line 2236 "ripper.y"
8272 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(symbol_literal,v1);(yyval.
val)=v2;}
8274#line 8270 "ripper.c"
8278#line 2246 "ripper.y"
8285#line 8281 "ripper.c"
8289#line 2252 "ripper.y"
8291#line 8287 "ripper.c"
8295#line 2253 "ripper.y"
8299 (yyval.
val) = block_append(p, (yyvsp[-3].val), undef);
8303#line 8299 "ripper.c"
8307#line 2262 "ripper.y"
8309#line 8305 "ripper.c"
8313#line 2263 "ripper.y"
8315#line 8311 "ripper.c"
8319#line 2264 "ripper.y"
8321#line 8317 "ripper.c"
8325#line 2265 "ripper.y"
8327#line 8323 "ripper.c"
8331#line 2266 "ripper.y"
8333#line 8329 "ripper.c"
8337#line 2267 "ripper.y"
8339#line 8335 "ripper.c"
8343#line 2268 "ripper.y"
8345#line 8341 "ripper.c"
8349#line 2269 "ripper.y"
8351#line 8347 "ripper.c"
8355#line 2270 "ripper.y"
8357#line 8353 "ripper.c"
8361#line 2271 "ripper.y"
8363#line 8359 "ripper.c"
8367#line 2272 "ripper.y"
8369#line 8365 "ripper.c"
8373#line 2273 "ripper.y"
8375#line 8371 "ripper.c"
8379#line 2274 "ripper.y"
8381#line 8377 "ripper.c"
8385#line 2275 "ripper.y"
8387#line 8383 "ripper.c"
8391#line 2276 "ripper.y"
8393#line 8389 "ripper.c"
8397#line 2277 "ripper.y"
8399#line 8395 "ripper.c"
8403#line 2278 "ripper.y"
8405#line 8401 "ripper.c"
8409#line 2279 "ripper.y"
8411#line 8407 "ripper.c"
8415#line 2280 "ripper.y"
8417#line 8413 "ripper.c"
8421#line 2281 "ripper.y"
8423#line 8419 "ripper.c"
8427#line 2282 "ripper.y"
8429#line 8425 "ripper.c"
8433#line 2283 "ripper.y"
8435#line 8431 "ripper.c"
8439#line 2284 "ripper.y"
8441#line 8437 "ripper.c"
8445#line 2285 "ripper.y"
8447#line 8443 "ripper.c"
8451#line 2286 "ripper.y"
8453#line 8449 "ripper.c"
8457#line 2287 "ripper.y"
8459#line 8455 "ripper.c"
8463#line 2288 "ripper.y"
8465#line 8461 "ripper.c"
8469#line 2289 "ripper.y"
8471#line 8467 "ripper.c"
8475#line 2290 "ripper.y"
8477#line 8473 "ripper.c"
8481#line 2291 "ripper.y"
8483#line 8479 "ripper.c"
8487#line 2309 "ripper.y"
8490 (yyval.
val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].
val), (yyvsp[-1].ctxt), &(yyloc));
8492 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
8494#line 8490 "ripper.c"
8498#line 2316 "ripper.y"
8501 (yyval.
val) = new_op_assign(p, (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[0].val), (yyvsp[-1].
ctxt), &(yyloc));
8503 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
8505#line 8501 "ripper.c"
8509#line 2323 "ripper.y"
8512 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-6].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-4]), &(yyloc));
8514 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-6].
val);v2=escape_Qundef((yyvsp[-4].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-2].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
8516#line 8512 "ripper.c"
8520#line 2330 "ripper.y"
8523 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
8525 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].
val);v2=(yyvsp[-4].
val);v3=(yyvsp[-3].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
8527#line 8523 "ripper.c"
8531#line 2337 "ripper.y"
8534 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
8536 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].
val);v2=(yyvsp[-4].
val);v3=(yyvsp[-3].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
8538#line 8534 "ripper.c"
8542#line 2344 "ripper.y"
8545 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-5].val),
ID2VAL(
idCOLON2), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8547 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-3].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
8549#line 8545 "ripper.c"
8553#line 2351 "ripper.y"
8556 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
8557 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-5].val), (yyvsp[-3].val), &loc), (yyvsp[-2].
val), (yyvsp[0].val), (yyvsp[-1].
ctxt), &(yyloc));
8559 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].
val);v2=(yyvsp[-3].
val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-2].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
8561#line 8557 "ripper.c"
8565#line 2359 "ripper.y"
8568 (yyval.
val) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-3].val), &(yyloc)), (yyvsp[-2].
val), (yyvsp[0].val), (yyvsp[-1].
ctxt), &(yyloc));
8570 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-3].
val);v2=dispatch1(top_const_field,v1);v3=v2;v4=(yyvsp[-2].
val);v5=(yyvsp[0].
val);v6=dispatch3(opassign,v3,v4,v5);(yyval.
val)=v6;}
8572#line 8568 "ripper.c"
8576#line 2366 "ripper.y"
8579 rb_backref_error(p, (yyvsp[-3].val));
8582 {
VALUE v1,v2,v3,v4;v1=var_field(p, (yyvsp[-3].val));v2=(yyvsp[-2].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=backref_error(p,
RNODE((yyvsp[-3].val)), v4);}ripper_error(p);
8584#line 8580 "ripper.c"
8588#line 2374 "ripper.y"
8593 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8595 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
8597#line 8593 "ripper.c"
8601#line 2383 "ripper.y"
8606 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8608 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
8610#line 8606 "ripper.c"
8614#line 2392 "ripper.y"
8618 (yyval.
val) =
NEW_DOT2((yyvsp[-1].val), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
8620 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
8622#line 8618 "ripper.c"
8626#line 2400 "ripper.y"
8630 (yyval.
val) =
NEW_DOT3((yyvsp[-1].val), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
8632 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
8634#line 8630 "ripper.c"
8638#line 2408 "ripper.y"
8642 (yyval.
val) =
NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].
val), &(yyloc));
8644 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
8646#line 8642 "ripper.c"
8650#line 2416 "ripper.y"
8654 (yyval.
val) =
NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].
val), &(yyloc));
8656 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
8658#line 8654 "ripper.c"
8662#line 2424 "ripper.y"
8664 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'+', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8666#line 8662 "ripper.c"
8670#line 2428 "ripper.y"
8672 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'-', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8674#line 8670 "ripper.c"
8678#line 2432 "ripper.y"
8680 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'*', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8682#line 8678 "ripper.c"
8686#line 2436 "ripper.y"
8688 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'/', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8690#line 8686 "ripper.c"
8694#line 2440 "ripper.y"
8696 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'%', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8698#line 8694 "ripper.c"
8702#line 2444 "ripper.y"
8704 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8706#line 8702 "ripper.c"
8710#line 2448 "ripper.y"
8712 (yyval.
val) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].
val), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
8714#line 8710 "ripper.c"
8718#line 2452 "ripper.y"
8720 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUPlus, &(yylsp[-1]), &(yyloc));
8722#line 8718 "ripper.c"
8726#line 2456 "ripper.y"
8728 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUMinus, &(yylsp[-1]), &(yyloc));
8730#line 8726 "ripper.c"
8734#line 2460 "ripper.y"
8736 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'|', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8738#line 8734 "ripper.c"
8742#line 2464 "ripper.y"
8744 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'^', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8746#line 8742 "ripper.c"
8750#line 2468 "ripper.y"
8752 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'&', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8754#line 8750 "ripper.c"
8758#line 2472 "ripper.y"
8760 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idCmp, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8762#line 8758 "ripper.c"
8766#line 2477 "ripper.y"
8768 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8770#line 8766 "ripper.c"
8774#line 2481 "ripper.y"
8776 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEqq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8778#line 8774 "ripper.c"
8782#line 2485 "ripper.y"
8784 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8786#line 8782 "ripper.c"
8790#line 2489 "ripper.y"
8792 (yyval.
val) = match_op(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8794#line 8790 "ripper.c"
8798#line 2493 "ripper.y"
8800 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeqTilde, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8802#line 8798 "ripper.c"
8806#line 2497 "ripper.y"
8808 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
8810#line 8806 "ripper.c"
8814#line 2501 "ripper.y"
8816 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
'~', &(yylsp[-1]), &(yyloc));
8818#line 8814 "ripper.c"
8822#line 2505 "ripper.y"
8824 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idLTLT, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8826#line 8822 "ripper.c"
8830#line 2509 "ripper.y"
8832 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idGTGT, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8834#line 8830 "ripper.c"
8838#line 2513 "ripper.y"
8840 (yyval.
val) = logop(p,
idANDOP, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8842#line 8838 "ripper.c"
8846#line 2517 "ripper.y"
8848 (yyval.
val) = logop(p,
idOROP, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
8850#line 8846 "ripper.c"
8854#line 2520 "ripper.y"
8856#line 8852 "ripper.c"
8860#line 2521 "ripper.y"
8863 (yyval.
val) = new_defined(p, (yyvsp[0].val), &(yyloc));
8865#line 8861 "ripper.c"
8869#line 2526 "ripper.y"
8873 (yyval.
val) = new_if(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[0].val), &(yyloc));
8874 fixpos((yyval.
val), (yyvsp[-5].
val));
8876 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[0].
val);v4=dispatch3(ifop,v1,v2,v3);(yyval.
val)=v4;}
8878#line 8874 "ripper.c"
8882#line 2535 "ripper.y"
8884 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
8885 restore_defun(p, (yyvsp[-3].node)->
nd_defn);
8887 (yyval.
val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
8889 {
VALUE v1,v2,v3,v4;v1=
get_value((yyvsp[-3].val));v2=(yyvsp[-2].
val);v3=(yyvsp[0].
val);v4=dispatch3(
def,v1,v2,v3);(yyval.
val)=v4;}
8892#line 8888 "ripper.c"
8896#line 2545 "ripper.y"
8898 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
8899 restore_defun(p, (yyvsp[-5].node)->
nd_defn);
8901 (yyvsp[-2].
val) = rescued_expr(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
8902 (yyval.
val) = set_defun_body(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-2].val), &(yyloc));
8904 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);v4=
get_value((yyvsp[-5].val));v5=(yyvsp[-4].
val);v6=v3;v7=dispatch3(
def,v4,v5,v6);(yyval.
val)=v7;}
8907#line 8903 "ripper.c"
8911#line 2556 "ripper.y"
8913 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
8914 restore_defun(p, (yyvsp[-3].node)->
nd_defn);
8916 (yyval.
val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
8920 {
VALUE v1,v2,v3,v4,v5,v6;v1=
AREF((yyvsp[-3].val), 0);v2=
AREF((yyvsp[-3].val), 1);v3=
AREF((yyvsp[-3].val), 2);v4=(yyvsp[-2].
val);v5=(yyvsp[0].
val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.
val)=v6;}
8923#line 8919 "ripper.c"
8927#line 2568 "ripper.y"
8929 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
8930 restore_defun(p, (yyvsp[-5].node)->
nd_defn);
8932 (yyvsp[-2].
val) = rescued_expr(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
8933 (yyval.
val) = set_defun_body(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-2].val), &(yyloc));
8937 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);v4=
AREF((yyvsp[-5].val), 0);v5=
AREF((yyvsp[-5].val), 1);v6=
AREF((yyvsp[-5].val), 2);v7=(yyvsp[-4].
val);v8=v3;v9=dispatch5(defs,v4,v5,v6,v7,v8);(yyval.
val)=v9;}
8940#line 8936 "ripper.c"
8944#line 2581 "ripper.y"
8946 (yyval.
val) = (yyvsp[0].val);
8948#line 8944 "ripper.c"
8952#line 2586 "ripper.y"
8953 {(yyval.
val) =
'>';}
8954#line 8950 "ripper.c"
8958#line 2587 "ripper.y"
8959 {(yyval.
val) =
'<';}
8960#line 8956 "ripper.c"
8964#line 2588 "ripper.y"
8966#line 8962 "ripper.c"
8970#line 2589 "ripper.y"
8972#line 8968 "ripper.c"
8976#line 2593 "ripper.y"
8978 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8980#line 8976 "ripper.c"
8984#line 2597 "ripper.y"
8987 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8989#line 8985 "ripper.c"
8993#line 2604 "ripper.y"
8997#line 8993 "ripper.c"
9001#line 2608 "ripper.y"
9005#line 9001 "ripper.c"
9009#line 2614 "ripper.y"
9012 (yyval.
val) = (yyvsp[0].val);
9014#line 9010 "ripper.c"
9018#line 2622 "ripper.y"
9020 (yyval.
val) = (yyvsp[-1].val);
9022#line 9018 "ripper.c"
9026#line 2626 "ripper.y"
9029 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
9031 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].
val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].
val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.
val)=v5;}
9033#line 9029 "ripper.c"
9037#line 2633 "ripper.y"
9040 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : 0;
9042 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].
val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.
val)=v6;}
9044#line 9040 "ripper.c"
9048#line 2642 "ripper.y"
9051 (yyval.
val) = (yyvsp[0].val);
9053#line 9049 "ripper.c"
9057#line 2647 "ripper.y"
9061 (yyval.
val) = rescued_expr(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9063 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
9065#line 9061 "ripper.c"
9069#line 2657 "ripper.y"
9072 (yyval.
val) = (yyvsp[-1].val);
9074 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
9076#line 9072 "ripper.c"
9080#line 2664 "ripper.y"
9082 if (!check_forwarding_args(p)) {
9087 (yyval.
val) = new_args_forward_call(p, (yyvsp[-3].val), &(yylsp[-1]), &(yyloc));
9089 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=dispatch2(args_add,v1,v2);v4=v3;v5=dispatch1(arg_paren,v4);(yyval.
val)=v5;}
9092#line 9088 "ripper.c"
9096#line 2676 "ripper.y"
9098 if (!check_forwarding_args(p)) {
9103 (yyval.
val) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
9105 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
9108#line 9104 "ripper.c"
9112#line 2696 "ripper.y"
9114 (yyval.
val) = (yyvsp[-1].val);
9116#line 9112 "ripper.c"
9120#line 2700 "ripper.y"
9123 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
9125 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].
val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].
val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.
val)=v5;}
9127#line 9123 "ripper.c"
9131#line 2707 "ripper.y"
9134 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
9136 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].
val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.
val)=v6;}
9138#line 9134 "ripper.c"
9142#line 2716 "ripper.y"
9148 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
9150#line 9146 "ripper.c"
9154#line 2724 "ripper.y"
9157 (yyval.
val) = arg_blk_pass((yyvsp[-1].val), (yyvsp[0].
val));
9159 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_block,v1,v2);(yyval.
val)=v3;}
9161#line 9157 "ripper.c"
9165#line 2731 "ripper.y"
9168 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
9169 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].
val));
9171 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=dispatch0(args_new);v2=(yyvsp[-1].
val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);v7=v6;v8=(yyvsp[0].
val);v9=dispatch2(args_add_block,v7,v8);(yyval.
val)=v9;}
9173#line 9169 "ripper.c"
9177#line 2739 "ripper.y"
9180 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
9181 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].
val));
9183 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-1].
val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].
val);v4=v2;v5=dispatch2(args_add,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=dispatch2(args_add_block,v6,v7);(yyval.
val)=v8;}
9185#line 9181 "ripper.c"
9189#line 2747 "ripper.y"
9190 {{
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add_block,v2,v3);(yyval.
val)=v4;}}
9191#line 9187 "ripper.c"
9195#line 2750 "ripper.y"
9213#line 9209 "ripper.c"
9217#line 2768 "ripper.y"
9233 (yyval.
val) = (yyvsp[0].val);
9235#line 9231 "ripper.c"
9239#line 2788 "ripper.y"
9244 (yyval.
val)=(yyvsp[0].val);
9246#line 9242 "ripper.c"
9250#line 2797 "ripper.y"
9252 (yyval.
val) = (yyvsp[0].val);
9254#line 9250 "ripper.c"
9258#line 2801 "ripper.y"
9262#line 9258 "ripper.c"
9266#line 2807 "ripper.y"
9271 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
9273#line 9269 "ripper.c"
9277#line 2814 "ripper.y"
9282 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add_star,v2,v3);(yyval.
val)=v4;}
9284#line 9280 "ripper.c"
9288#line 2821 "ripper.y"
9291 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
9293 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
9295#line 9291 "ripper.c"
9299#line 2828 "ripper.y"
9302 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
9304 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
9306#line 9302 "ripper.c"
9310#line 2841 "ripper.y"
9313 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
9315 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].
val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].
val);v5=dispatch2(mrhs_add,v3,v4);(yyval.
val)=v5;}
9317#line 9313 "ripper.c"
9321#line 2848 "ripper.y"
9324 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
9326 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].
val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].
val);v5=dispatch2(mrhs_add_star,v3,v4);(yyval.
val)=v5;}
9328#line 9324 "ripper.c"
9332#line 2855 "ripper.y"
9337 {
VALUE v1,v2,v3,v4;v1=dispatch0(mrhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mrhs_add_star,v2,v3);(yyval.
val)=v4;}
9339#line 9335 "ripper.c"
9343#line 2874 "ripper.y"
9348 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[0].
val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);(yyval.
val)=v6;}
9350#line 9346 "ripper.c"
9354#line 2881 "ripper.y"
9358#line 9354 "ripper.c"
9362#line 2886 "ripper.y"
9366 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
9370 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(begin,v1);(yyval.
val)=v2;}
9372#line 9368 "ripper.c"
9376#line 2895 "ripper.y"
9378#line 9374 "ripper.c"
9382#line 2896 "ripper.y"
9387 {
VALUE v1,v2;v1=0;v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9389#line 9385 "ripper.c"
9393#line 2902 "ripper.y"
9395#line 9391 "ripper.c"
9399#line 2903 "ripper.y"
9403 (yyval.
val) = (yyvsp[-2].val);
9405 {
VALUE v1,v2;v1=(yyvsp[-2].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9407#line 9403 "ripper.c"
9411#line 2911 "ripper.y"
9415 (yyval.
val) = (yyvsp[-1].val);
9417 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9419#line 9415 "ripper.c"
9423#line 2919 "ripper.y"
9428 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
9430#line 9426 "ripper.c"
9434#line 2926 "ripper.y"
9439 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
9441#line 9437 "ripper.c"
9445#line 2933 "ripper.y"
9450 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(array,v1);(yyval.
val)=v2;}
9452#line 9448 "ripper.c"
9456#line 2940 "ripper.y"
9459 (yyval.
val) = new_hash(p, (yyvsp[-1].val), &(yyloc));
9462 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(hash,v1);(yyval.
val)=v2;}
9464#line 9460 "ripper.c"
9468#line 2948 "ripper.y"
9473 {
VALUE v1;v1=dispatch0(return0);(yyval.
val)=v1;}
9475#line 9471 "ripper.c"
9479#line 2955 "ripper.y"
9482 (yyval.
val) = new_yield(p, (yyvsp[-1].val), &(yyloc));
9484 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);v3=v2;v4=dispatch1(yield,v3);(yyval.
val)=v4;}
9486#line 9482 "ripper.c"
9490#line 2962 "ripper.y"
9495 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(args_new);v2=v1;v3=dispatch1(paren,v2);v4=v3;v5=dispatch1(yield,v4);(yyval.
val)=v5;}
9497#line 9493 "ripper.c"
9501#line 2969 "ripper.y"
9506 {
VALUE v1;v1=dispatch0(yield0);(yyval.
val)=v1;}
9508#line 9504 "ripper.c"
9512#line 2975 "ripper.y"
9514#line 9510 "ripper.c"
9518#line 2976 "ripper.y"
9521 (yyval.
val) = new_defined(p, (yyvsp[-1].val), &(yyloc));
9523#line 9519 "ripper.c"
9527#line 2981 "ripper.y"
9529 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[-1].val), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
9531#line 9527 "ripper.c"
9535#line 2985 "ripper.y"
9537 (yyval.
val) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
9539#line 9535 "ripper.c"
9543#line 2989 "ripper.y"
9546 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9548 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=(yyvsp[-1].
val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);v7=v6;v8=(yyvsp[0].
val);v9=dispatch2(method_add_block,v7,v8);(yyval.
val)=v9;}
9550#line 9546 "ripper.c"
9554#line 2997 "ripper.y"
9557 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
9558 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9560 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
9562#line 9558 "ripper.c"
9566#line 3009 "ripper.y"
9569 (yyval.
val) = new_if(p, (yyvsp[-4].val), (yyvsp[-2].
val), (yyvsp[-1].val), &(yyloc));
9570 fixpos((yyval.
val), (yyvsp[-4].
val));
9572 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(
if,v1,v2,v3);(yyval.
val)=v4;}
9574#line 9570 "ripper.c"
9578#line 3020 "ripper.y"
9581 (yyval.
val) = new_unless(p, (yyvsp[-4].val), (yyvsp[-2].
val), (yyvsp[-1].val), &(yyloc));
9582 fixpos((yyval.
val), (yyvsp[-4].
val));
9584 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(unless,v1,v2,v3);(yyval.
val)=v4;}
9586#line 9582 "ripper.c"
9590#line 3030 "ripper.y"
9593 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].
val), 1, &(yyloc));
9594 fixpos((yyval.
val), (yyvsp[-2].
val));
9596 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
while,v1,v2);(yyval.
val)=v3;}
9598#line 9594 "ripper.c"
9602#line 3040 "ripper.y"
9605 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].
val), 1, &(yyloc));
9606 fixpos((yyval.
val), (yyvsp[-2].
val));
9608 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(until,v1,v2);(yyval.
val)=v3;}
9610#line 9606 "ripper.c"
9614#line 3048 "ripper.y"
9619#line 9615 "ripper.c"
9623#line 3054 "ripper.y"
9628 (yyval.
val) =
NEW_CASE((yyvsp[-4].val), (yyvsp[-1].
val), &(yyloc));
9629 fixpos((yyval.
val), (yyvsp[-4].
val));
9631 {
VALUE v1,v2,v3;v1=(yyvsp[-4].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
9633#line 9629 "ripper.c"
9637#line 3064 "ripper.y"
9642#line 9638 "ripper.c"
9646#line 3070 "ripper.y"
9653 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
9655#line 9651 "ripper.c"
9659#line 3081 "ripper.y"
9664 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
9666#line 9662 "ripper.c"
9670#line 3090 "ripper.y"
9682 ID id = internal_id(p);
9684 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
9686 tbl[0] = 1 ; tbl[1] =
id ;
9689 switch (
nd_type((yyvsp[-4].val))) {
9696 m->nd_next = (yyvsp[-4].
val);
9699 m->nd_next = node_assign(p, (yyvsp[-4].val),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])),
NO_LEX_CTXT, &(yylsp[-4]));
9702 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].val), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var,
NO_LEX_CTXT, &(yylsp[-4]));
9705 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
9707 (yyval.
val) =
NEW_FOR((yyvsp[-2].val), scope, &(yyloc));
9708 fixpos((yyval.
val), (yyvsp[-4].
val));
9710 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(
for,v1,v2,v3);(yyval.
val)=v4;}
9712#line 9708 "ripper.c"
9716#line 3132 "ripper.y"
9719 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
9720 yyerror1(&loc,
"class definition in method body");
9725#line 9721 "ripper.c"
9729#line 3142 "ripper.y"
9732 (yyval.
val) =
NEW_CLASS((yyvsp[-4].val), (yyvsp[-1].
val), (yyvsp[-3].val), &(yyloc));
9734 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
9737 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-1].
val);v4=dispatch3(
class,v1,v2,v3);(yyval.
val)=v4;}
9740 p->
ctxt.shareable_constant_value = (yyvsp[-5].
ctxt).shareable_constant_value;
9742#line 9738 "ripper.c"
9746#line 3155 "ripper.y"
9752#line 9748 "ripper.c"
9756#line 3163 "ripper.y"
9761 set_line_body((yyvsp[-1].val),
nd_line((yyvsp[-4].val)));
9762 fixpos((yyval.
val), (yyvsp[-4].
val));
9764 {
VALUE v1,v2,v3;v1=(yyvsp[-4].
val);v2=(yyvsp[-1].
val);v3=dispatch2(sclass,v1,v2);(yyval.
val)=v3;}
9768 p->
ctxt.shareable_constant_value = (yyvsp[-6].
ctxt).shareable_constant_value;
9770#line 9766 "ripper.c"
9774#line 3177 "ripper.y"
9777 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9778 yyerror1(&loc,
"module definition in method body");
9783#line 9779 "ripper.c"
9787#line 3187 "ripper.y"
9792 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
9795 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=dispatch2(module,v1,v2);(yyval.
val)=v3;}
9798 p->
ctxt.shareable_constant_value = (yyvsp[-4].
ctxt).shareable_constant_value;
9800#line 9796 "ripper.c"
9804#line 3203 "ripper.y"
9806 restore_defun(p, (yyvsp[-3].node)->
nd_defn);
9808 (yyval.
val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[-1].val), &(yyloc));
9810 {
VALUE v1,v2,v3,v4;v1=
get_value((yyvsp[-3].val));v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(
def,v1,v2,v3);(yyval.
val)=v4;}
9813#line 9809 "ripper.c"
9817#line 3215 "ripper.y"
9819 restore_defun(p, (yyvsp[-3].node)->
nd_defn);
9821 (yyval.
val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].
val), (yyvsp[-1].val), &(yyloc));
9825 {
VALUE v1,v2,v3,v4,v5,v6;v1=
AREF((yyvsp[-3].val), 0);v2=
AREF((yyvsp[-3].val), 1);v3=
AREF((yyvsp[-3].val), 2);v4=(yyvsp[-2].
val);v5=(yyvsp[-1].
val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.
val)=v6;}
9828#line 9824 "ripper.c"
9832#line 3226 "ripper.y"
9837 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(
break,v2);(yyval.
val)=v3;}
9839#line 9835 "ripper.c"
9843#line 3233 "ripper.y"
9848 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(next,v2);(yyval.
val)=v3;}
9850#line 9846 "ripper.c"
9854#line 3240 "ripper.y"
9859 {
VALUE v1;v1=dispatch0(redo);(yyval.
val)=v1;}
9861#line 9857 "ripper.c"
9865#line 3247 "ripper.y"
9870 {
VALUE v1;v1=dispatch0(retry);(yyval.
val)=v1;}
9872#line 9868 "ripper.c"
9876#line 3256 "ripper.y"
9879 (yyval.
val) = (yyvsp[0].val);
9881#line 9877 "ripper.c"
9885#line 3263 "ripper.y"
9887 token_info_push(p,
"begin", &(yyloc));
9889#line 9885 "ripper.c"
9893#line 3269 "ripper.y"
9896 token_info_push(p,
"if", &(yyloc));
9908#line 9904 "ripper.c"
9912#line 3286 "ripper.y"
9914 token_info_push(p,
"unless", &(yyloc));
9916#line 9912 "ripper.c"
9920#line 3292 "ripper.y"
9922 token_info_push(p,
"while", &(yyloc));
9924#line 9920 "ripper.c"
9928#line 3298 "ripper.y"
9930 token_info_push(p,
"until", &(yyloc));
9932#line 9928 "ripper.c"
9936#line 3304 "ripper.y"
9938 token_info_push(p,
"case", &(yyloc));
9940#line 9936 "ripper.c"
9944#line 3310 "ripper.y"
9946 token_info_push(p,
"for", &(yyloc));
9948#line 9944 "ripper.c"
9952#line 3316 "ripper.y"
9954 token_info_push(p,
"class", &(yyloc));
9957#line 9953 "ripper.c"
9961#line 3323 "ripper.y"
9963 token_info_push(p,
"module", &(yyloc));
9966#line 9962 "ripper.c"
9970#line 3330 "ripper.y"
9972 token_info_push(p,
"def", &(yyloc));
9974#line 9970 "ripper.c"
9978#line 3336 "ripper.y"
9980 token_info_push(p,
"do", &(yyloc));
9982#line 9978 "ripper.c"
9986#line 3342 "ripper.y"
9988 token_info_push(p,
"do", &(yyloc));
9990#line 9986 "ripper.c"
9994#line 3348 "ripper.y"
9996 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
9998#line 9994 "ripper.c"
10002#line 3354 "ripper.y"
10004 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
10006#line 10002 "ripper.c"
10010#line 3360 "ripper.y"
10012 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
10014#line 10010 "ripper.c"
10018#line 3366 "ripper.y"
10021 int same = ptinfo_beg && strcmp(ptinfo_beg->
token,
"case") != 0;
10022 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
10027 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
10028 if (!e.
nonspc) *ptinfo_beg = e;
10031#line 10027 "ripper.c"
10035#line 3381 "ripper.y"
10038 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
10040#line 10036 "ripper.c"
10044#line 3388 "ripper.y"
10046 token_info_pop(p,
"end", &(yyloc));
10048#line 10044 "ripper.c"
10052#line 3394 "ripper.y"
10055 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
10057#line 10053 "ripper.c"
10061#line 3413 "ripper.y"
10064 (yyval.
val) = new_if(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10065 fixpos((yyval.
val), (yyvsp[-3].
val));
10067 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(elsif,v1,v2,v3);(yyval.
val)=v4;}
10069#line 10065 "ripper.c"
10073#line 3424 "ripper.y"
10076 (yyval.
val) = (yyvsp[0].val);
10078 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
else,v1);(yyval.
val)=v2;}
10080#line 10076 "ripper.c"
10084#line 3437 "ripper.y"
10087 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
10088 mark_lvar_used(p, (yyval.
val));
10090 (yyval.
val)=assignable(p, (yyvsp[0].val));
10092#line 10088 "ripper.c"
10096#line 3445 "ripper.y"
10099 (yyval.
val) = (yyvsp[-1].val);
10101 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
10103#line 10099 "ripper.c"
10107#line 3454 "ripper.y"
10110 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10112 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
10114#line 10110 "ripper.c"
10118#line 3461 "ripper.y"
10121 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].
val));
10123 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
10125#line 10121 "ripper.c"
10129#line 3470 "ripper.y"
10134 (yyval.
val)=(yyvsp[0].val);
10136#line 10132 "ripper.c"
10140#line 3477 "ripper.y"
10145 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
10147#line 10143 "ripper.c"
10151#line 3484 "ripper.y"
10156 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].
val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
10158#line 10154 "ripper.c"
10162#line 3491 "ripper.y"
10167 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
10169#line 10165 "ripper.c"
10173#line 3498 "ripper.y"
10178 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].
val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
10180#line 10176 "ripper.c"
10184#line 3507 "ripper.y"
10187 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
10188 mark_lvar_used(p, (yyval.
val));
10190 (yyval.
val)=assignable(p, (yyvsp[0].val));
10192#line 10188 "ripper.c"
10196#line 3515 "ripper.y"
10203#line 10199 "ripper.c"
10207#line 3524 "ripper.y"
10209#line 10205 "ripper.c"
10213#line 3528 "ripper.y"
10215 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]));
10217#line 10213 "ripper.c"
10221#line 3532 "ripper.y"
10223 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yylsp[-1]));
10225#line 10221 "ripper.c"
10229#line 3536 "ripper.y"
10231 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]));
10233#line 10229 "ripper.c"
10237#line 3540 "ripper.y"
10239 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
10241#line 10237 "ripper.c"
10245#line 3546 "ripper.y"
10247 (yyval.
val) = (yyvsp[0].val);
10249#line 10245 "ripper.c"
10253#line 3550 "ripper.y"
10257#line 10253 "ripper.c"
10261#line 3556 "ripper.y"
10267 {
VALUE v1;v1=dispatch0(excessed_comma);(yyval.
val)=v1;}
10269#line 10265 "ripper.c"
10273#line 3566 "ripper.y"
10275 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yyloc));
10277#line 10273 "ripper.c"
10281#line 3570 "ripper.y"
10283 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].
val), (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10285#line 10281 "ripper.c"
10289#line 3574 "ripper.y"
10291 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
10293#line 10289 "ripper.c"
10297#line 3578 "ripper.y"
10299 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val),
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10301#line 10297 "ripper.c"
10305#line 3582 "ripper.y"
10307 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
10309#line 10305 "ripper.c"
10313#line 3586 "ripper.y"
10316 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].
val),
Qnone, (yyval.
val), &(yyloc));
10318#line 10314 "ripper.c"
10322#line 3591 "ripper.y"
10324 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10326#line 10322 "ripper.c"
10330#line 3595 "ripper.y"
10334#line 10330 "ripper.c"
10338#line 3599 "ripper.y"
10340 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
10342#line 10338 "ripper.c"
10346#line 3603 "ripper.y"
10348 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10350#line 10346 "ripper.c"
10354#line 3607 "ripper.y"
10358#line 10354 "ripper.c"
10362#line 3611 "ripper.y"
10364 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10366#line 10362 "ripper.c"
10370#line 3615 "ripper.y"
10374#line 10370 "ripper.c"
10378#line 3619 "ripper.y"
10380 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10382#line 10378 "ripper.c"
10386#line 3623 "ripper.y"
10390#line 10386 "ripper.c"
10394#line 3630 "ripper.y"
10398#line 10394 "ripper.c"
10402#line 3636 "ripper.y"
10409 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11;v1=
Qnil;v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch7(params,v1,v2,v3,v4,v5,v6,v7);v9=v8;v10=escape_Qundef((yyvsp[-1].val));v11=dispatch2(block_var,v9,v10);(yyval.
val)=v11;}
10411#line 10407 "ripper.c"
10415#line 3645 "ripper.y"
10420 (yyval.
val) = (yyvsp[-2].val);
10422 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(block_var,v1,v2);(yyval.
val)=v3;}
10424#line 10420 "ripper.c"
10428#line 3657 "ripper.y"
10432#line 10428 "ripper.c"
10436#line 3661 "ripper.y"
10441 (yyval.
val)=(yyvsp[-1].val);
10443#line 10439 "ripper.c"
10447#line 3670 "ripper.y"
10449#line 10445 "ripper.c"
10453#line 3672 "ripper.y"
10455#line 10451 "ripper.c"
10459#line 3676 "ripper.y"
10461 new_bv(p,
get_id((yyvsp[0].val)));
10464#line 10460 "ripper.c"
10468#line 3681 "ripper.y"
10472#line 10468 "ripper.c"
10476#line 3687 "ripper.y"
10478 token_info_push(p,
"->", &(yylsp[0]));
10479 (yyvsp[0].
vars) = dyna_push(p);
10483#line 10479 "ripper.c"
10487#line 3693 "ripper.y"
10492#line 10488 "ripper.c"
10496#line 3697 "ripper.y"
10498 (yyval.
node) = numparam_push(p);
10500#line 10496 "ripper.c"
10504#line 3701 "ripper.y"
10508#line 10504 "ripper.c"
10512#line 3705 "ripper.y"
10518 (yyvsp[-2].
val) = args_with_numbered(p, (yyvsp[-2].val), max_numparam);
10521 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10528 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(lambda,v1,v2);(yyval.
val)=v3;}
10529 numparam_pop(p, (yyvsp[-3].node));
10530 dyna_pop(p, (yyvsp[-6].vars));
10532#line 10528 "ripper.c"
10536#line 3727 "ripper.y"
10539 (yyval.
val) = (yyvsp[-2].val);
10542 {
VALUE v1,v2;v1=(yyvsp[-2].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
10544#line 10540 "ripper.c"
10548#line 3735 "ripper.y"
10551 if (!args_info_empty_p((yyvsp[0].val)->
nd_ainfo))
10554 (yyval.
val) = (yyvsp[0].
val);
10556#line 10552 "ripper.c"
10560#line 3745 "ripper.y"
10562 token_info_pop(p,
"}", &(yylsp[0]));
10563 (yyval.
val) = (yyvsp[-1].val);
10565#line 10561 "ripper.c"
10569#line 3750 "ripper.y"
10571 (yyval.
val) = (yyvsp[-1].val);
10573#line 10569 "ripper.c"
10577#line 3756 "ripper.y"
10579 (yyval.
val) = (yyvsp[-1].val);
10581 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10585#line 10581 "ripper.c"
10589#line 3766 "ripper.y"
10596 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
10598 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10599 fixpos((yyval.
val), (yyvsp[-1].
val));
10601 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
10603#line 10599 "ripper.c"
10607#line 3780 "ripper.y"
10610 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
10612 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10614#line 10610 "ripper.c"
10618#line 3787 "ripper.y"
10621 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
10623 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=(yyvsp[-1].
val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=v7==
Qundef ? v6 : dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
10625#line 10621 "ripper.c"
10629#line 3794 "ripper.y"
10632 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
10634 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=(yyvsp[-1].
val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].
val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
10636#line 10632 "ripper.c"
10640#line 3803 "ripper.y"
10643 (yyval.
val) = (yyvsp[-1].val);
10647 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].
val);v2=dispatch1(fcall,v1);v3=v2;v4=(yyvsp[0].
val);v5=dispatch2(method_add_arg,v3,v4);(yyval.
val)=v5;}
10649#line 10645 "ripper.c"
10653#line 3812 "ripper.y"
10656 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
10659 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10661#line 10657 "ripper.c"
10665#line 3820 "ripper.y"
10668 (yyval.
val) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
10671 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-1].
val);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10673#line 10669 "ripper.c"
10677#line 3828 "ripper.y"
10684#line 10680 "ripper.c"
10688#line 3835 "ripper.y"
10691 (yyval.
val) = new_qcall(p, (yyvsp[-1].val), (yyvsp[-2].
val),
ID2VAL(idCall), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
10694 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=
ID2VAL(idCall);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10696#line 10692 "ripper.c"
10700#line 3843 "ripper.y"
10706 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].
val);v2=
ID2VAL(
idCOLON2);v3=
ID2VAL(idCall);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].
val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
10708#line 10704 "ripper.c"
10712#line 3851 "ripper.y"
10717 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
10719#line 10715 "ripper.c"
10723#line 3858 "ripper.y"
10728 {
VALUE v1;v1=dispatch0(zsuper);(yyval.
val)=v1;}
10730#line 10726 "ripper.c"
10734#line 3865 "ripper.y"
10740 (yyval.
val) =
NEW_CALL((yyvsp[-3].val),
tAREF, (yyvsp[-1].val), &(yyloc));
10741 fixpos((yyval.
val), (yyvsp[-3].
val));
10743 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref,v1,v2);(yyval.
val)=v3;}
10745#line 10741 "ripper.c"
10749#line 3878 "ripper.y"
10751 (yyval.
val) = (yyvsp[-1].val);
10753 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10757#line 10753 "ripper.c"
10761#line 3886 "ripper.y"
10763 (yyval.
val) = (yyvsp[-1].val);
10765 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10769#line 10765 "ripper.c"
10773#line 3895 "ripper.y"
10774 {(yyval.
vars) = dyna_push(p);}
10775#line 10771 "ripper.c"
10779#line 3896 "ripper.y"
10784#line 10780 "ripper.c"
10788#line 3900 "ripper.y"
10790 (yyval.
node) = numparam_push(p);
10792#line 10788 "ripper.c"
10796#line 3904 "ripper.y"
10800 (yyvsp[-1].
val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
10802 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10804 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].
val);v3=dispatch2(brace_block,v1,v2);(yyval.
val)=v3;}
10805 numparam_pop(p, (yyvsp[-2].node));
10806 dyna_pop(p, (yyvsp[-4].vars));
10808#line 10804 "ripper.c"
10812#line 3917 "ripper.y"
10813 {(yyval.
vars) = dyna_push(p);}
10814#line 10810 "ripper.c"
10818#line 3918 "ripper.y"
10823#line 10819 "ripper.c"
10827#line 3922 "ripper.y"
10829 (yyval.
node) = numparam_push(p);
10832#line 10828 "ripper.c"
10836#line 3927 "ripper.y"
10840 (yyvsp[-1].
val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
10842 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10844 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].
val);v3=dispatch2(do_block,v1,v2);(yyval.
val)=v3;}
10846 numparam_pop(p, (yyvsp[-2].node));
10847 dyna_pop(p, (yyvsp[-4].vars));
10849#line 10845 "ripper.c"
10853#line 3942 "ripper.y"
10856 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
10857 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10859 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
10861#line 10857 "ripper.c"
10865#line 3950 "ripper.y"
10870 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add_star,v2,v3);(yyval.
val)=v4;}
10872#line 10868 "ripper.c"
10876#line 3957 "ripper.y"
10879 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
10880 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
10882 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
10884#line 10880 "ripper.c"
10888#line 3965 "ripper.y"
10891 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
10893 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
10895#line 10891 "ripper.c"
10899#line 3976 "ripper.y"
10902 (yyval.
val) =
NEW_WHEN((yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10903 fixpos((yyval.
val), (yyvsp[-3].
val));
10905 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(when,v1,v2,v3);(yyval.
val)=v4;}
10907#line 10903 "ripper.c"
10911#line 3990 "ripper.y"
10917 (yyval.
tbl) = push_pvtbl(p);
10919#line 10915 "ripper.c"
10923#line 3997 "ripper.y"
10925 (yyval.
tbl) = push_pktbl(p);
10927#line 10923 "ripper.c"
10931#line 4001 "ripper.y"
10933 pop_pktbl(p, (yyvsp[-2].tbl));
10934 pop_pvtbl(p, (yyvsp[-3].tbl));
10937#line 10933 "ripper.c"
10941#line 4008 "ripper.y"
10944 (yyval.
val) =
NEW_IN((yyvsp[-4].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
10946 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].
val);v2=(yyvsp[-1].
val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(
in,v1,v2,v3);(yyval.
val)=v4;}
10948#line 10944 "ripper.c"
10952#line 4022 "ripper.y"
10955 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
10956 fixpos((yyval.
val), (yyvsp[0].
val));
10958 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
10960#line 10956 "ripper.c"
10964#line 4030 "ripper.y"
10967 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
10968 fixpos((yyval.
val), (yyvsp[0].
val));
10970 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
10972#line 10968 "ripper.c"
10976#line 4041 "ripper.y"
10978 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10981#line 10977 "ripper.c"
10985#line 4046 "ripper.y"
10987 (yyval.
val) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].val)), (yyvsp[0].val), &(yyloc));
10993#line 10989 "ripper.c"
10997#line 4054 "ripper.y"
10999 (yyval.
val) = new_find_pattern(p,
Qnone, (yyvsp[0].val), &(yyloc));
11001#line 10997 "ripper.c"
11005#line 4058 "ripper.y"
11007 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
11009#line 11005 "ripper.c"
11013#line 4062 "ripper.y"
11015 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[0].val), &(yyloc));
11017#line 11013 "ripper.c"
11021#line 4071 "ripper.y"
11025 n = list_append(p, n, (yyvsp[0].val));
11026 (yyval.
val) = new_hash(p, n, &(yyloc));
11028 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=
STATIC_ID2SYM(id_assoc);v3=(yyvsp[0].
val);v4=dispatch3(binary,v1,v2,v3);(yyval.
val)=v4;}
11030#line 11026 "ripper.c"
11034#line 4083 "ripper.y"
11041#line 11037 "ripper.c"
11045#line 4092 "ripper.y"
11046 {(yyval.
tbl) = push_pktbl(p);}
11047#line 11043 "ripper.c"
11051#line 4093 "ripper.y"
11052 {(yyval.
tbl) = push_pktbl(p);}
11053#line 11049 "ripper.c"
11057#line 4097 "ripper.y"
11059 pop_pktbl(p, (yyvsp[-2].tbl));
11060 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), &(yyloc));
11066#line 11062 "ripper.c"
11070#line 4106 "ripper.y"
11072 pop_pktbl(p, (yyvsp[-2].tbl));
11073 (yyval.
val) = new_find_pattern(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
11079#line 11075 "ripper.c"
11083#line 4115 "ripper.y"
11085 pop_pktbl(p, (yyvsp[-2].tbl));
11086 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
11092#line 11088 "ripper.c"
11096#line 4124 "ripper.y"
11098 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
11099 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
11101#line 11097 "ripper.c"
11105#line 4129 "ripper.y"
11107 pop_pktbl(p, (yyvsp[-2].tbl));
11108 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), &(yyloc));
11114#line 11110 "ripper.c"
11118#line 4138 "ripper.y"
11120 pop_pktbl(p, (yyvsp[-2].tbl));
11121 (yyval.
val) = new_find_pattern(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
11127#line 11123 "ripper.c"
11131#line 4147 "ripper.y"
11133 pop_pktbl(p, (yyvsp[-2].tbl));
11134 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
11140#line 11136 "ripper.c"
11144#line 4156 "ripper.y"
11146 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
11147 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
11149#line 11145 "ripper.c"
11153#line 4161 "ripper.y"
11155 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].val), &(yyloc));
11157#line 11153 "ripper.c"
11161#line 4165 "ripper.y"
11163 (yyval.
val) = new_find_pattern(p,
Qnone, (yyvsp[-1].val), &(yyloc));
11165#line 11161 "ripper.c"
11169#line 4169 "ripper.y"
11171 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
11174#line 11170 "ripper.c"
11178#line 4174 "ripper.y"
11180 (yyval.
tbl) = push_pktbl(p);
11184#line 11180 "ripper.c"
11188#line 4180 "ripper.y"
11190 pop_pktbl(p, (yyvsp[-2].tbl));
11192 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[-1].val), &(yyloc));
11194#line 11190 "ripper.c"
11198#line 4186 "ripper.y"
11200 (yyval.
val) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
11201 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyval.
val), &(yyloc));
11203#line 11199 "ripper.c"
11207#line 4190 "ripper.y"
11208 {(yyval.
tbl) = push_pktbl(p);}
11209#line 11205 "ripper.c"
11213#line 4191 "ripper.y"
11215 pop_pktbl(p, (yyvsp[-2].tbl));
11216 (yyval.
val) = (yyvsp[-1].val);
11218#line 11214 "ripper.c"
11222#line 4198 "ripper.y"
11226 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
11231#line 11227 "ripper.c"
11235#line 4207 "ripper.y"
11237 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[0].val), 1, 0,
Qnone, &(yyloc));
11239#line 11235 "ripper.c"
11243#line 4211 "ripper.y"
11246 (yyval.
val) = new_array_pattern_tail(p, list_concat((yyvsp[-1].val), (yyvsp[0].
val)), 0, 0,
Qnone, &(yyloc));
11249 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
11252#line 11248 "ripper.c"
11256#line 4220 "ripper.y"
11258 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-2].val), 1, (yyvsp[0].
val),
Qnone, &(yyloc));
11260#line 11256 "ripper.c"
11264#line 4224 "ripper.y"
11266 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-4].val), 1, (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
11268#line 11264 "ripper.c"
11272#line 4228 "ripper.y"
11274 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-1].val), 1, 0,
Qnone, &(yyloc));
11276#line 11272 "ripper.c"
11280#line 4232 "ripper.y"
11282 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-3].val), 1, 0, (yyvsp[0].
val), &(yyloc));
11284#line 11280 "ripper.c"
11288#line 4239 "ripper.y"
11290 (yyval.
val) = (yyvsp[-1].val);
11292#line 11288 "ripper.c"
11296#line 4243 "ripper.y"
11299 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[-1].
val));
11303#line 11299 "ripper.c"
11307#line 4252 "ripper.y"
11309 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].val),
Qnone, &(yyloc));
11311#line 11307 "ripper.c"
11315#line 4256 "ripper.y"
11317 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
11319#line 11315 "ripper.c"
11323#line 4262 "ripper.y"
11325 (yyval.
val) = new_find_pattern_tail(p, (yyvsp[-4].val), (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
11330#line 11326 "ripper.c"
11334#line 4272 "ripper.y"
11336 (yyval.
val) = (yyvsp[0].val);
11338#line 11334 "ripper.c"
11342#line 4276 "ripper.y"
11346#line 11342 "ripper.c"
11350#line 4283 "ripper.y"
11353 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].
val));
11357#line 11353 "ripper.c"
11361#line 4292 "ripper.y"
11364 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
11368#line 11364 "ripper.c"
11372#line 4301 "ripper.y"
11374 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)), (yyvsp[0].
val), &(yyloc));
11376#line 11372 "ripper.c"
11380#line 4305 "ripper.y"
11382 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].val), &(yyloc)), 0, &(yyloc));
11384#line 11380 "ripper.c"
11388#line 4309 "ripper.y"
11390 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].val), &(yyloc)), 0, &(yyloc));
11392#line 11388 "ripper.c"
11396#line 4313 "ripper.y"
11398 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].val), &(yyloc));
11400#line 11396 "ripper.c"
11404#line 4319 "ripper.y"
11406#line 11402 "ripper.c"
11410#line 4321 "ripper.y"
11413 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].
val));
11417#line 11413 "ripper.c"
11421#line 4330 "ripper.y"
11423 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].val)), &(yylsp[-1]));
11429#line 11425 "ripper.c"
11433#line 4338 "ripper.y"
11435 error_duplicate_pattern_key(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
11437 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
11439 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
11441 (yyval.
val) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].val), 0, &(yyloc)));
11445#line 11441 "ripper.c"
11449#line 4353 "ripper.y"
11451 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11454 NODE *node = dsym_node(p, (yyvsp[-1].val), &loc);
11458 if (ripper_is_node_yylval((yyvsp[-1].val)) &&
RNODE((yyvsp[-1].val))->nd_cval) {
11459 VALUE label =
RNODE((yyvsp[-1].val))->nd_cval;
11460 VALUE rval =
RNODE((yyvsp[-1].val))->nd_rval;
11466 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
11470#line 11466 "ripper.c"
11474#line 4376 "ripper.y"
11476 (yyval.
val) = (yyvsp[0].val);
11478#line 11474 "ripper.c"
11482#line 4380 "ripper.y"
11486#line 11482 "ripper.c"
11490#line 4386 "ripper.y"
11494#line 11490 "ripper.c"
11498#line 4392 "ripper.y"
11500#line 11496 "ripper.c"
11504#line 4397 "ripper.y"
11509 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
11511 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
11513#line 11509 "ripper.c"
11517#line 4406 "ripper.y"
11522 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
11524 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
11526#line 11522 "ripper.c"
11530#line 4415 "ripper.y"
11534 (yyval.
val) =
NEW_DOT2((yyvsp[-1].val), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11536 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
11538#line 11534 "ripper.c"
11542#line 4423 "ripper.y"
11546 (yyval.
val) =
NEW_DOT3((yyvsp[-1].val), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11548 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
11550#line 11546 "ripper.c"
11554#line 4434 "ripper.y"
11558 (yyval.
val) =
NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].
val), &(yyloc));
11560 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
11562#line 11558 "ripper.c"
11566#line 4442 "ripper.y"
11570 (yyval.
val) =
NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].
val), &(yyloc));
11572 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
11574#line 11570 "ripper.c"
11578#line 4460 "ripper.y"
11581 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11583 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11585#line 11581 "ripper.c"
11589#line 4470 "ripper.y"
11592 error_duplicate_pattern_variable(p, (yyvsp[0].val), &(yylsp[0]));
11593 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11595 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11597#line 11593 "ripper.c"
11601#line 4480 "ripper.y"
11604 NODE *n = gettable(p, (yyvsp[0].val), &(yyloc));
11610 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11612#line 11608 "ripper.c"
11616#line 4493 "ripper.y"
11621 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
11623#line 11619 "ripper.c"
11627#line 4500 "ripper.y"
11632 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
11634#line 11630 "ripper.c"
11638#line 4507 "ripper.y"
11641 (yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc));
11643 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11645#line 11641 "ripper.c"
11649#line 4518 "ripper.y"
11653 (yyvsp[-3].
val) ? block_append(p, node_assign(p, (yyvsp[-3].val),
NEW_ERRINFO(&(yylsp[-3])),
NO_LEX_CTXT, &(yylsp[-3])), (yyvsp[-1].
val)) : (yyvsp[-1].
val),
11654 (yyvsp[0].val), &(yyloc));
11655 fixpos((yyval.
val), (yyvsp[-4].
val)?(yyvsp[-4].
val):(yyvsp[-1].
val));
11657 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-4].val));v2=escape_Qundef((yyvsp[-3].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(rescue,v1,v2,v3,v4);(yyval.
val)=v5;}
11659#line 11655 "ripper.c"
11663#line 4531 "ripper.y"
11666 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
11670#line 11666 "ripper.c"
11674#line 4538 "ripper.y"
11677 if (!((yyval.
val) = splat_array((yyvsp[0].val)))) (yyval.
val) = (yyvsp[0].val);
11679 (yyval.
val)=(yyvsp[0].val);
11681#line 11677 "ripper.c"
11685#line 4548 "ripper.y"
11687 (yyval.
val) = (yyvsp[0].val);
11689#line 11685 "ripper.c"
11693#line 4555 "ripper.y"
11696 (yyval.
val) = (yyvsp[0].val);
11698 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(ensure,v1);(yyval.
val)=v2;}
11700#line 11696 "ripper.c"
11704#line 4569 "ripper.y"
11713 node = evstr2dstr(p, node);
11715 (yyval.
val) = node;
11717 (yyval.
val)=(yyvsp[0].val);
11719#line 11715 "ripper.c"
11723#line 4588 "ripper.y"
11726 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11728 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(string_concat,v1,v2);(yyval.
val)=v3;}
11730#line 11726 "ripper.c"
11734#line 4597 "ripper.y"
11737 (yyval.
val) = heredoc_dedent(p, (yyvsp[-1].val));
11738 if ((yyval.
val)) nd_set_loc((yyval.
val), &(yyloc));
11740 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(string_literal,v1);(yyval.
val)=v2;}
11742#line 11738 "ripper.c"
11746#line 4607 "ripper.y"
11749 (yyval.
val) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].val)), &(yyloc));
11751 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(xstring_literal,v1);(yyval.
val)=v2;}
11753#line 11749 "ripper.c"
11757#line 4616 "ripper.y"
11759 (yyval.
val) = new_regexp(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11761#line 11757 "ripper.c"
11765#line 4622 "ripper.y"
11770 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
11772#line 11768 "ripper.c"
11776#line 4631 "ripper.y"
11781 {
VALUE v1;v1=dispatch0(words_new);(yyval.
val)=v1;}
11783#line 11779 "ripper.c"
11787#line 4638 "ripper.y"
11790 (yyval.
val) = list_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
11792 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(words_add,v1,v2);(yyval.
val)=v3;}
11794#line 11790 "ripper.c"
11798#line 4647 "ripper.y"
11799 {{
VALUE v1,v2,v3,v4;v1=dispatch0(word_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(word_add,v2,v3);(yyval.
val)=v4;}}
11800#line 11796 "ripper.c"
11804#line 4649 "ripper.y"
11807 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11809 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(word_add,v1,v2);(yyval.
val)=v3;}
11811#line 11807 "ripper.c"
11815#line 4658 "ripper.y"
11820 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
11822#line 11818 "ripper.c"
11826#line 4667 "ripper.y"
11831 {
VALUE v1;v1=dispatch0(symbols_new);(yyval.
val)=v1;}
11833#line 11829 "ripper.c"
11837#line 4674 "ripper.y"
11840 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
11842 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(symbols_add,v1,v2);(yyval.
val)=v3;}
11844#line 11840 "ripper.c"
11848#line 4683 "ripper.y"
11853 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
11855#line 11851 "ripper.c"
11859#line 4692 "ripper.y"
11864 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
11866#line 11862 "ripper.c"
11870#line 4701 "ripper.y"
11875 {
VALUE v1;v1=dispatch0(qwords_new);(yyval.
val)=v1;}
11877#line 11873 "ripper.c"
11881#line 4708 "ripper.y"
11884 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
11886 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(qwords_add,v1,v2);(yyval.
val)=v3;}
11888#line 11884 "ripper.c"
11892#line 4717 "ripper.y"
11897 {
VALUE v1;v1=dispatch0(qsymbols_new);(yyval.
val)=v1;}
11899#line 11895 "ripper.c"
11903#line 4724 "ripper.y"
11906 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
11908 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(qsymbols_add,v1,v2);(yyval.
val)=v3;}
11910#line 11906 "ripper.c"
11914#line 4733 "ripper.y"
11919 {
VALUE v1;v1=dispatch0(string_content);(yyval.
val)=v1;}
11922 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
11925#line 11921 "ripper.c"
11929#line 4744 "ripper.y"
11932 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11934 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(string_add,v1,v2);(yyval.
val)=v3;}
11937 if (ripper_is_node_yylval((yyvsp[-1].val)) && ripper_is_node_yylval((yyvsp[0].val)) &&
11938 !
RNODE((yyvsp[-1].val))->nd_cval) {
11939 RNODE((yyvsp[-1].val))->nd_cval =
RNODE((yyvsp[0].val))->nd_cval;
11940 RNODE((yyvsp[-1].val))->nd_rval = add_mark_object(p, (yyval.
val));
11941 (yyval.
val) = (yyvsp[-1].val);
11945#line 11941 "ripper.c"
11949#line 4762 "ripper.y"
11954 {
VALUE v1;v1=dispatch0(xstring_new);(yyval.
val)=v1;}
11956#line 11952 "ripper.c"
11960#line 4769 "ripper.y"
11963 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11965 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(xstring_add,v1,v2);(yyval.
val)=v3;}
11967#line 11963 "ripper.c"
11971#line 4778 "ripper.y"
11976 {
VALUE v1;v1=dispatch0(regexp_new);(yyval.
val)=v1;}
11979 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
11982#line 11978 "ripper.c"
11986#line 4789 "ripper.y"
11989 NODE *head = (yyvsp[-1].
val), *tail = (yyvsp[0].val);
11991 (yyval.
val) = tail;
11994 (yyval.
val) = head;
12004 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
12007 (yyval.
val) = list_append(p, head, tail);
12010 VALUE s1 = 1, s2 = 0, n1 = (yyvsp[-1].
val), n2 = (yyvsp[0].val);
12011 if (ripper_is_node_yylval(n1)) {
12012 s1 =
RNODE(n1)->nd_cval;
12013 n1 =
RNODE(n1)->nd_rval;
12015 if (ripper_is_node_yylval(n2)) {
12016 s2 =
RNODE(n2)->nd_cval;
12017 n2 =
RNODE(n2)->nd_rval;
12019 (yyval.
val) = dispatch2(regexp_add, n1, n2);
12021 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), s2);
12025#line 12021 "ripper.c"
12029#line 4830 "ripper.y"
12030 {(yyval.
val)=ripper_new_yylval(p, 0,
get_value((yyvsp[0].val)), (yyvsp[0].val));}
12031#line 12027 "ripper.c"
12035#line 4832 "ripper.y"
12042#line 12038 "ripper.c"
12046#line 4839 "ripper.y"
12053 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(string_dvar,v1);(yyval.
val)=v2;}
12055#line 12051 "ripper.c"
12059#line 4848 "ripper.y"
12064#line 12060 "ripper.c"
12068#line 4852 "ripper.y"
12074#line 12070 "ripper.c"
12078#line 4857 "ripper.y"
12083#line 12079 "ripper.c"
12087#line 4861 "ripper.y"
12092#line 12088 "ripper.c"
12096#line 4865 "ripper.y"
12101#line 12097 "ripper.c"
12105#line 4870 "ripper.y"
12115 if ((yyvsp[-1].val)) (yyvsp[-1].val)->flags &= ~NODE_FL_NEWLINE;
12116 (yyval.
val) = new_evstr(p, (yyvsp[-1].val), &(yyloc));
12118 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(string_embexpr,v1);(yyval.
val)=v2;}
12120#line 12116 "ripper.c"
12124#line 4887 "ripper.y"
12127 (yyval.
val) =
NEW_GVAR((yyvsp[0].val), &(yyloc));
12129 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
12131#line 12127 "ripper.c"
12135#line 4894 "ripper.y"
12138 (yyval.
val) =
NEW_IVAR((yyvsp[0].val), &(yyloc));
12140 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
12142#line 12138 "ripper.c"
12146#line 4901 "ripper.y"
12149 (yyval.
val) =
NEW_CVAR((yyvsp[0].val), &(yyloc));
12151 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
12153#line 12149 "ripper.c"
12157#line 4915 "ripper.y"
12163 {
VALUE v1,v2,v3,v4;v1=(yyvsp[0].
val);v2=dispatch1(symbol,v1);v3=v2;v4=dispatch1(symbol_literal,v3);(yyval.
val)=v4;}
12165#line 12161 "ripper.c"
12169#line 4931 "ripper.y"
12173 (yyval.
val) = dsym_node(p, (yyvsp[-1].val), &(yyloc));
12175 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(dyna_symbol,v1);(yyval.
val)=v2;}
12177#line 12173 "ripper.c"
12181#line 4942 "ripper.y"
12184 (yyval.
val) = (yyvsp[0].val);
12189#line 12185 "ripper.c"
12193#line 4964 "ripper.y"
12194 {(yyval.
val) =
KWD2EID(nil, (yyvsp[0].val));}
12195#line 12191 "ripper.c"
12199#line 4965 "ripper.y"
12200 {(yyval.
val) =
KWD2EID(self, (yyvsp[0].val));}
12201#line 12197 "ripper.c"
12205#line 4966 "ripper.y"
12206 {(yyval.
val) =
KWD2EID(
true, (yyvsp[0].val));}
12207#line 12203 "ripper.c"
12211#line 4967 "ripper.y"
12212 {(yyval.
val) =
KWD2EID(
false, (yyvsp[0].val));}
12213#line 12209 "ripper.c"
12217#line 4968 "ripper.y"
12218 {(yyval.
val) =
KWD2EID(_FILE__, (yyvsp[0].val));}
12219#line 12215 "ripper.c"
12223#line 4969 "ripper.y"
12224 {(yyval.
val) =
KWD2EID(_LINE__, (yyvsp[0].val));}
12225#line 12221 "ripper.c"
12229#line 4970 "ripper.y"
12230 {(yyval.
val) =
KWD2EID(_ENCODING__, (yyvsp[0].val));}
12231#line 12227 "ripper.c"
12235#line 4974 "ripper.y"
12238 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
12240 if (id_is_var(p,
get_id((yyvsp[0].val)))) {
12241 (yyval.
val) = dispatch1(var_ref, (yyvsp[0].val));
12244 (yyval.
val) = dispatch1(vcall, (yyvsp[0].val));
12248#line 12244 "ripper.c"
12252#line 4987 "ripper.y"
12255 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
12257 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
12259#line 12255 "ripper.c"
12263#line 4996 "ripper.y"
12266 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
12268 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
12270#line 12266 "ripper.c"
12274#line 5003 "ripper.y"
12277 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
12279 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
12281#line 12277 "ripper.c"
12285#line 5016 "ripper.y"
12290#line 12286 "ripper.c"
12294#line 5021 "ripper.y"
12296 (yyval.
val) = (yyvsp[-1].val);
12298#line 12294 "ripper.c"
12302#line 5025 "ripper.y"
12309#line 12305 "ripper.c"
12313#line 5036 "ripper.y"
12316 (yyval.
val) = (yyvsp[-1].val);
12318 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
12322#line 12318 "ripper.c"
12326#line 5045 "ripper.y"
12328 add_forwarding_args(p);
12330 (yyval.
val) = new_args_forward_def(p, (yyvsp[-3].val), &(yyloc));
12332 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9,v10;v1=(yyvsp[-3].
val);v2=
Qnone;v3=(yyvsp[-1].
val);v4=
Qnone;v5=
Qnone;v6=
Qnone;v7=
Qnone;v8=dispatch7(params,v1,v2,v3,v4,v5,v6,v7);v9=v8;v10=dispatch1(paren,v9);(yyval.
val)=v10;}
12336#line 12332 "ripper.c"
12340#line 5055 "ripper.y"
12342 add_forwarding_args(p);
12344 (yyval.
val) = new_args_forward_def(p, 0, &(yyloc));
12346 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9,v10;v1=
Qnone;v2=
Qnone;v3=(yyvsp[-1].
val);v4=
Qnone;v5=
Qnone;v6=
Qnone;v7=
Qnone;v8=dispatch7(params,v1,v2,v3,v4,v5,v6,v7);v9=v8;v10=dispatch1(paren,v9);(yyval.
val)=v10;}
12350#line 12346 "ripper.c"
12354#line 5067 "ripper.y"
12360#line 12356 "ripper.c"
12364#line 5073 "ripper.y"
12367 (yyval.
val) = (yyvsp[-1].val);
12371#line 12367 "ripper.c"
12375#line 5082 "ripper.y"
12377 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]));
12379#line 12375 "ripper.c"
12383#line 5086 "ripper.y"
12385 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yylsp[-1]));
12387#line 12383 "ripper.c"
12391#line 5090 "ripper.y"
12393 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]));
12395#line 12391 "ripper.c"
12399#line 5094 "ripper.y"
12401 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
12403#line 12399 "ripper.c"
12407#line 5100 "ripper.y"
12409 (yyval.
val) = (yyvsp[0].val);
12411#line 12407 "ripper.c"
12415#line 5104 "ripper.y"
12419#line 12415 "ripper.c"
12423#line 5110 "ripper.y"
12425 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yyloc));
12427#line 12423 "ripper.c"
12431#line 5114 "ripper.y"
12433 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].
val), (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
12435#line 12431 "ripper.c"
12439#line 5118 "ripper.y"
12441 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
12443#line 12439 "ripper.c"
12447#line 5122 "ripper.y"
12449 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val),
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
12451#line 12447 "ripper.c"
12455#line 5126 "ripper.y"
12457 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
12459#line 12455 "ripper.c"
12463#line 5130 "ripper.y"
12465 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
12467#line 12463 "ripper.c"
12471#line 5134 "ripper.y"
12475#line 12471 "ripper.c"
12479#line 5138 "ripper.y"
12481 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
12483#line 12479 "ripper.c"
12487#line 5142 "ripper.y"
12489 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
12491#line 12487 "ripper.c"
12495#line 5146 "ripper.y"
12499#line 12495 "ripper.c"
12503#line 5150 "ripper.y"
12505 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
12507#line 12503 "ripper.c"
12511#line 5154 "ripper.y"
12515#line 12511 "ripper.c"
12519#line 5158 "ripper.y"
12521 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
12523#line 12519 "ripper.c"
12527#line 5162 "ripper.y"
12531#line 12527 "ripper.c"
12535#line 5166 "ripper.y"
12540#line 12536 "ripper.c"
12544#line 5173 "ripper.y"
12549 {
VALUE v1;v1=dispatch0(args_forward);(yyval.
val)=v1;}
12551#line 12547 "ripper.c"
12555#line 5182 "ripper.y"
12557 static const char mesg[] =
"formal argument cannot be a constant";
12562 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].
val);v3=dispatch2(param_error,v1,v2);(yyval.
val)=v3;}ripper_error(p);
12564#line 12560 "ripper.c"
12568#line 5191 "ripper.y"
12570 static const char mesg[] =
"formal argument cannot be an instance variable";
12575 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].
val);v3=dispatch2(param_error,v1,v2);(yyval.
val)=v3;}ripper_error(p);
12577#line 12573 "ripper.c"
12581#line 5200 "ripper.y"
12583 static const char mesg[] =
"formal argument cannot be a global variable";
12588 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].
val);v3=dispatch2(param_error,v1,v2);(yyval.
val)=v3;}ripper_error(p);
12590#line 12586 "ripper.c"
12594#line 5209 "ripper.y"
12596 static const char mesg[] =
"formal argument cannot be a class variable";
12601 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].
val);v3=dispatch2(param_error,v1,v2);(yyval.
val)=v3;}ripper_error(p);
12603#line 12599 "ripper.c"
12607#line 5221 "ripper.y"
12609 formal_argument(p, (yyvsp[0].val));
12611 (yyval.
val) = (yyvsp[0].val);
12613#line 12609 "ripper.c"
12617#line 5229 "ripper.y"
12622 (yyval.
val) = (yyvsp[0].val);
12624#line 12620 "ripper.c"
12628#line 5238 "ripper.y"
12636#line 12632 "ripper.c"
12640#line 5246 "ripper.y"
12643 ID tid = internal_id(p);
12645 loc.beg_pos = (yylsp[-1]).beg_pos;
12646 loc.end_pos = (yylsp[-1]).beg_pos;
12648 if (dyna_in_block(p)) {
12657 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
12659#line 12655 "ripper.c"
12663#line 5267 "ripper.y"
12665#line 12661 "ripper.c"
12669#line 5269 "ripper.y"
12672 (yyval.
val) = (yyvsp[-2].val);
12675 rb_discard_node(p, (yyvsp[0].val));
12679#line 12675 "ripper.c"
12683#line 5282 "ripper.y"
12685 arg_var(p, formal_argument(p, (yyvsp[0].val)));
12688 (yyval.
val) = (yyvsp[0].val);
12690#line 12686 "ripper.c"
12694#line 5291 "ripper.y"
12698 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
12702#line 12698 "ripper.c"
12706#line 5299 "ripper.y"
12714#line 12710 "ripper.c"
12718#line 5309 "ripper.y"
12721 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
12725#line 12721 "ripper.c"
12729#line 5316 "ripper.y"
12736#line 12732 "ripper.c"
12740#line 5325 "ripper.y"
12743 (yyval.
val) = (yyvsp[0].val);
12747#line 12743 "ripper.c"
12751#line 5332 "ripper.y"
12754 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].
val));
12758#line 12754 "ripper.c"
12762#line 5342 "ripper.y"
12765 (yyval.
val) = (yyvsp[0].val);
12769#line 12765 "ripper.c"
12773#line 5349 "ripper.y"
12776 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].
val));
12780#line 12776 "ripper.c"
12784#line 5362 "ripper.y"
12788 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(nokw_param,v1);(yyval.
val)=v2;}
12790#line 12786 "ripper.c"
12794#line 5370 "ripper.y"
12796 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
12798 (yyval.
val) = (yyvsp[0].val);
12800 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
12802#line 12798 "ripper.c"
12806#line 5378 "ripper.y"
12809 (yyval.
val) = internal_id(p);
12810 arg_var(p, (yyval.
val));
12812 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
12814#line 12810 "ripper.c"
12818#line 5388 "ripper.y"
12822 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
12826#line 12822 "ripper.c"
12830#line 5398 "ripper.y"
12834 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
12838#line 12834 "ripper.c"
12842#line 5408 "ripper.y"
12845 (yyval.
val) = (yyvsp[0].val);
12849#line 12845 "ripper.c"
12853#line 5415 "ripper.y"
12856 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].
val));
12860#line 12856 "ripper.c"
12864#line 5424 "ripper.y"
12867 (yyval.
val) = (yyvsp[0].val);
12871#line 12867 "ripper.c"
12875#line 5431 "ripper.y"
12878 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].
val));
12882#line 12878 "ripper.c"
12886#line 5444 "ripper.y"
12888 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
12890 (yyval.
val) = (yyvsp[0].val);
12892 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
12894#line 12890 "ripper.c"
12898#line 5452 "ripper.y"
12901 (yyval.
val) = internal_id(p);
12902 arg_var(p, (yyval.
val));
12904 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
12906#line 12902 "ripper.c"
12910#line 5466 "ripper.y"
12912 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
12914 (yyval.
val) = (yyvsp[0].val);
12916 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(blockarg,v1);(yyval.
val)=v2;}
12918#line 12914 "ripper.c"
12922#line 5476 "ripper.y"
12924 (yyval.
val) = (yyvsp[0].val);
12926#line 12922 "ripper.c"
12930#line 5480 "ripper.y"
12934#line 12930 "ripper.c"
12938#line 5486 "ripper.y"
12941 (yyval.
val) = (yyvsp[0].val);
12943#line 12939 "ripper.c"
12947#line 5490 "ripper.y"
12949#line 12945 "ripper.c"
12953#line 5491 "ripper.y"
12956 switch (
nd_type((yyvsp[-1].val))) {
12965 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
12971 (yyval.
val) = (yyvsp[-1].val);
12973 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
12975#line 12971 "ripper.c"
12979#line 5516 "ripper.y"
12982 (yyval.
val) = (yyvsp[-1].val);
12984 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(assoclist_from_args,v1);(yyval.
val)=v2;}
12986#line 12982 "ripper.c"
12990#line 5525 "ripper.y"
12992#line 12988 "ripper.c"
12996#line 5527 "ripper.y"
12999 NODE *assocs = (yyvsp[-2].
val);
13005 if (assocs->nd_head &&
13009 tail = tail->nd_next->nd_head->nd_head;
13011 assocs = list_concat(assocs, tail);
13013 (yyval.
val) = assocs;
13017#line 13013 "ripper.c"
13021#line 5550 "ripper.y"
13028 (yyval.
val) = list_append(p,
NEW_LIST((yyvsp[-2].val), &(yyloc)), (yyvsp[0].
val));
13030 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
13032#line 13028 "ripper.c"
13036#line 5561 "ripper.y"
13041 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
13043#line 13039 "ripper.c"
13047#line 5568 "ripper.y"
13050 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
13051 (yyval.
val) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].val), &loc), &loc), (yyvsp[0].
val));
13053 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].
val);v2=dispatch1(dyna_symbol,v1);v3=v2;v4=(yyvsp[0].
val);v5=dispatch2(assoc_new,v3,v4);(yyval.
val)=v5;}
13055#line 13051 "ripper.c"
13059#line 5576 "ripper.y"
13063 !((yyvsp[0].
val)->
nd_head && (yyvsp[0].val)->nd_head->nd_alen)) {
13064 static VALUE empty_hash;
13072 (yyval.
val) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].val));
13074 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(assoc_splat,v1);(yyval.
val)=v2;}
13076#line 13072 "ripper.c"
13080#line 5644 "ripper.y"
13082#line 13078 "ripper.c"
13086#line 5645 "ripper.y"
13088#line 13084 "ripper.c"
13092#line 5649 "ripper.y"
13094#line 13090 "ripper.c"
13098#line 5653 "ripper.y"
13102#line 13098 "ripper.c"
13106#line 13102 "ripper.c"
13133 const int yylhs = yyr1[yyn] -
YYNTOKENS;
13134 const int yyi = yypgoto[yylhs] + *yyssp;
13135 yystate = (0 <= yyi && yyi <=
YYLAST && yycheck[yyi] == *yyssp
13137 : yydefgoto[yylhs]);
13156 = {yyssp, yytoken, &yylloc};
13157 char const *yymsgp =
YY_(
"syntax error");
13158 int yysyntax_error_status;
13159 yysyntax_error_status = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
13160 if (yysyntax_error_status == 0)
13162 else if (yysyntax_error_status == -1)
13164 if (yymsg != yymsgbuf)
13170 yysyntax_error_status
13171 = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
13177 yymsg_alloc =
sizeof yymsgbuf;
13181 yyerror (&yylloc, p, yymsgp);
13182 if (yysyntax_error_status ==
YYENOMEM)
13187 yyerror_range[1] = yylloc;
13188 if (yyerrstatus == 3)
13201 yydestruct (
"Error: discarding",
13202 yytoken, &
yylval, &yylloc, p);
13240 yyn = yypact[yystate];
13246 yyn = yytable[yyn];
13256 yyerror_range[1] = *yylsp;
13257 yydestruct (
"Error: popping",
13268 yyerror_range[2] = yylloc;
13299 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
13313 yydestruct (
"Cleanup: discarding lookahead",
13314 yytoken, &
yylval, &yylloc, p);
13320 while (yyssp != yyss)
13322 yydestruct (
"Cleanup: popping",
13330 if (yymsg != yymsgbuf)
13335#line 5657 "ripper.y"
13340# define yylval (*p->lval)
13349# define set_yylval_node(x) { \
13350 YYLTYPE _cur_loc; \
13351 rb_parser_set_location(p, &_cur_loc); \
13352 yylval.node = (x); \
13354# define set_yylval_str(x) \
13356 set_yylval_node(NEW_STR(x, &_cur_loc)); \
13357 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13359# define set_yylval_literal(x) \
13361 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
13362 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13364# define set_yylval_num(x) (yylval.num = (x))
13365# define set_yylval_id(x) (yylval.id = (x))
13366# define set_yylval_name(x) (yylval.id = (x))
13367# define yylval_id() (yylval.id)
13372 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
13374# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
13375# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
13376# define set_yylval_id(x) (void)(x)
13377# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
13378# define set_yylval_literal(x) add_mark_object(p, (x))
13379# define set_yylval_node(x) (yylval.val = ripper_new_yylval(p, 0, 0, STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)))
13380# define yylval_id() yylval.id
13381# define _cur_loc NULL_LOC
13384#define set_yylval_noname() set_yylval_id(keyword_nil)
13387#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
13388#define dispatch_scan_event(p, t) ((void)0)
13389#define dispatch_delayed_token(p, t) ((void)0)
13390#define has_delayed_token(p) (0)
13392#define literal_flush(p, ptr) ((void)(ptr))
13394#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
13397intern_sym(
const char *
name)
13399 ID id = rb_intern_const(
name);
13414 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(
t),
str);
13422 if (!ripper_has_scan_event(p))
return;
13423 add_mark_object(p, yylval_rval = ripper_scan_event_val(p,
t));
13425#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
13431 const char *saved_tokp = p->
lex.
ptok;
13433 if (
NIL_P(p->delayed.token))
return;
13436 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(
t), p->delayed.token));
13437 p->delayed.token =
Qnil;
13441#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
13442#define has_delayed_token(p) (!NIL_P(p->delayed.token))
13466 int column = 1, nonspc = 0, i;
13468 if (*
ptr ==
'\t') {
13472 if (*
ptr !=
' ' && *
ptr !=
'\t') {
13478 ptinfo->
indent = column;
13479 ptinfo->
nonspc = nonspc;
13491 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
13501 if (!ptinfo_beg)
return;
13505 token_info_warn(p,
token, ptinfo_beg, 1, loc);
13514 if (!ptinfo_beg)
return;
13520 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
13523 ptinfo_beg->
token);
13532 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
13534 if (!ptinfo_beg)
return;
13535 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
13539 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
13541 "mismatched indentations at '%s' with '%s' at %d",
13567 else if (yylloc->beg_pos.lineno == lineno) {
13586 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
13587 yylloc->beg_pos.column == yylloc->end_pos.column)) {
13591 parser_show_error_line(p, yylloc);
13599 const int max_line_margin = 30;
13600 const char *
ptr, *ptr_end, *pt, *pb;
13601 const char *pre =
"", *post =
"", *pend;
13602 const char *
code =
"", *caret =
"";
13609 if (!yylloc)
return;
13610 pend = RSTRING_END(
str);
13611 if (pend > pbeg && pend[-1] ==
'\n') {
13612 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
13616 if (lineno == yylloc->end_pos.lineno &&
13617 (pend - pbeg) > yylloc->end_pos.column) {
13618 pt = pbeg + yylloc->end_pos.column;
13621 ptr = ptr_end = pt;
13622 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
13623 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
13625 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
13626 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
13632 if (
ptr > pbeg) pre =
"...";
13634 if (ptr_end < pend) {
13636 if (ptr_end < pend) post =
"...";
13640 if (lineno == yylloc->beg_pos.lineno) {
13641 pb += yylloc->beg_pos.column;
13642 if (pb > pt) pb = pt;
13645 if (len <= 4 && yylloc->beg_pos.
lineno == yylloc->end_pos.lineno) {
13648 if (
RTEST(errbuf)) {
13650 if (
RSTRING_LEN(mesg) > 0 && *(RSTRING_END(mesg)-1) !=
'\n')
13657#define CSI_BEGIN "\033["
13668 (
int)(pt - pb), pb,
13669 (
int)(ptr_end - pt), pt,
13676 lim = pt < pend ? pt : pend;
13683 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
13689 memset(p2,
'~', (lim -
ptr));
13703 const char *pcur = 0, *ptok = 0;
13712 dispatch1(parse_error,
STR_NEW2(msg));
13729vtable_size(
const struct vtable *tbl)
13755#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
13773#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
13789 if (
tbl->pos ==
tbl->capa) {
13790 tbl->capa =
tbl->capa * 2;
13795#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
13806 if (
tbl->pos < n) {
13812#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
13821 for (i = 0; i <
tbl->pos; i++) {
13822 if (
tbl->tbl[i] ==
id) {
13836debug_lines(
VALUE fname)
13839 CONST_ID(script_lines,
"SCRIPT_LINES__");
13842 if (RB_TYPE_P(hash,
T_HASH)) {
13858yycompile0(
VALUE arg)
13875 if (!e_option_supplied(p)) {
13881#define RUBY_DTRACE_PARSE_HOOK(name) \
13882 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
13883 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
13908 NODE *body = parser_append_options(p, tree->nd_body);
13912 tree->nd_body = prelude;
13924 if (
NIL_P(fname)) {
13944must_be_ascii_compatible(
VALUE s)
13956 char *beg, *end, *start;
13967 end = memchr(beg,
'\n',
len);
13968 if (end)
len = ++end - beg;
13977 if (
NIL_P(line))
return line;
13978 must_be_ascii_compatible(line);
14004 return yycompile(vparser, p, fname, line);
14016 must_be_ascii_compatible(s);
14017 return parser_compile_string(vparser,
f, s, line);
14039 return yycompile(vparser, p, fname, start);
14055 p->
lex.
gets = lex_generic_gets;
14060 return yycompile(vparser, p, fname, start);
14064#define STR_FUNC_ESCAPE 0x01
14065#define STR_FUNC_EXPAND 0x02
14066#define STR_FUNC_REGEXP 0x04
14067#define STR_FUNC_QWORDS 0x08
14068#define STR_FUNC_SYMBOL 0x10
14069#define STR_FUNC_INDENT 0x20
14070#define STR_FUNC_LABEL 0x40
14071#define STR_FUNC_LIST 0x4000
14072#define STR_FUNC_TERM 0x8000
14103#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
14104#define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
14105#define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
14106#define peek(p,c) peek_n(p, (c), 0)
14107#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
14108#define peekc(p) peekc_n(p, 0)
14109#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
14127#define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
14151 else if (
NIL_P(v)) {
14172 if (
peek(p,
'\n')) {
14187 c = (
unsigned char)*p->
lex.
pcur++;
14189 c = parser_cr(p, c);
14198 if (c == -1)
return;
14205#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
14207#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
14208#define tok(p) (p)->tokenbuf
14209#define toklen(p) (p)->tokidx
14215 while (ptr < p->
lex.pend) {
14216 int c = (
unsigned char)*
ptr++;
14217 int eol = (c ==
'\n' || c ==
'#');
14278#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
14281escaped_control_code(
int c)
14307#define WARN_SPACE_CHAR(c, prefix) \
14308 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
14312 int regexp_literal,
int wide)
14318 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
14319 yyerror0(
"invalid Unicode escape");
14320 return wide && numlen > 0;
14322 if (codepoint > 0x10ffff) {
14323 yyerror0(
"invalid Unicode codepoint (too large)");
14326 if ((codepoint & 0xfffff800) == 0xd800) {
14327 yyerror0(
"invalid Unicode codepoint");
14330 if (regexp_literal) {
14333 else if (codepoint >= 0x80) {
14335 if (*encp && utf8 != *encp) {
14338 parser_show_error_line(p, &loc);
14342 tokaddmbc(p, codepoint, *encp);
14345 tokadd(p, codepoint);
14353 int term,
int symbol_literal,
int regexp_literal)
14360 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
14362 const int open_brace =
'{', close_brace =
'}';
14364 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
14366 if (
peek(p, open_brace)) {
14367 const char *second =
NULL;
14368 int c,
last = nextc(p);
14371 while (c != close_brace) {
14372 if (c ==
term)
goto unterminated;
14373 if (second == multiple_codepoints)
14375 if (regexp_literal) tokadd(p,
last);
14376 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
14383 if (
term == -1 && !second)
14384 second = multiple_codepoints;
14387 if (c != close_brace) {
14390 yyerror0(
"unterminated Unicode escape");
14393 if (second && second != multiple_codepoints) {
14403 if (regexp_literal) tokadd(p, close_brace);
14407 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
14414#define ESCAPE_CONTROL 1
14415#define ESCAPE_META 2
14423 switch (c = nextc(p)) {
14448 case '0':
case '1':
case '2':
case '3':
14449 case '4':
case '5':
case '6':
case '7':
14456 c = tok_hex(p, &numlen);
14457 if (numlen == 0)
return 0;
14468 if ((c = nextc(p)) !=
'-') {
14471 if ((c = nextc(p)) ==
'\\') {
14472 switch (
peekc(p)) {
14473 case 'u':
case 'U':
14477 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
14479 else if (c == -1 || !
ISASCII(c))
goto eof;
14481 int c2 = escaped_control_code(c);
14490 else if (
ISCNTRL(c))
goto eof;
14491 return ((c & 0xff) | 0x80);
14495 if ((c = nextc(p)) !=
'-') {
14500 if ((c = nextc(p))==
'\\') {
14501 switch (
peekc(p)) {
14502 case 'u':
case 'U':
14510 else if (c == -1 || !
ISASCII(c))
goto eof;
14512 int c2 = escaped_control_code(c);
14531 else if (
ISCNTRL(c))
goto eof;
14537 yyerror0(
"Invalid escape character syntax");
14561 switch (c = nextc(p)) {
14565 case '0':
case '1':
case '2':
case '3':
14566 case '4':
case '5':
case '6':
case '7':
14569 if (numlen == 0)
goto eof;
14577 tok_hex(p, &numlen);
14578 if (numlen == 0)
return -1;
14585 if ((c = nextc(p)) !=
'-') {
14595 if ((c = nextc(p)) !=
'-') {
14607 if ((c = nextc(p)) ==
'\\') {
14610 else if (c == -1)
goto eof;
14616 yyerror0(
"Invalid escape character syntax");
14636 while (c = nextc(p),
ISALPHA(c)) {
14660 parser_show_error_line(p, &loc);
14668 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
14669 if (
len < 0)
return -1;
14677simple_re_meta(
int c)
14680 case '$':
case '*':
case '+':
case '.':
14681 case '?':
case '^':
case '|':
14682 case ')':
case ']':
case '}':
case '>':
14690parser_update_heredoc_indent(
struct parser_params *p,
int c)
14700 else if (c ==
'\t') {
14705 else if (c !=
'\n') {
14721 parser_show_error_line(p, &loc);
14727 const char *pos = p->
lex.
pcur;
14729 parser_mixed_error(p, enc1, enc2);
14735 int func,
int term,
int paren,
long *nest,
14739 bool erred =
false;
14741#define mixed_error(enc1, enc2) \
14742 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
14743#define mixed_escape(beg, enc1, enc2) \
14744 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
14746 while ((c = nextc(p)) != -1) {
14748 parser_update_heredoc_indent(p, c);
14751 if (paren && c == paren) {
14754 else if (c ==
term) {
14755 if (!nest || !*nest) {
14763 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
14768 else if (c ==
'\\') {
14800 if (c == -1)
return -1;
14806 if (c ==
term && !simple_re_meta(c)) {
14811 if ((c = tokadd_escape(p,
enc)) < 0)
14813 if (*
enc && *
enc != *encp) {
14821 c = read_escape(p, 0,
enc);
14826 else if (c !=
term && !(paren && c == paren)) {
14833 else if (!parser_isascii(p)) {
14838 else if (*
enc != *encp) {
14842 if (tokadd_mbchar(p, c) == -1)
return -1;
14853 else if (*
enc != *encp) {
14872#define NEW_STRTERM(func, term, paren) \
14873 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
14880 if (!ripper_is_node_yylval(content))
14881 content = ripper_new_yylval(p, 0, 0, content);
14892 if (
yylval.val != content)
14897#define flush_string_content(p, enc) ((void)(enc))
14904#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
14905#define SPECIAL_PUNCT(idx) ( \
14906 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
14907 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
14908 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
14909 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
14910 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
14912const unsigned int ruby_global_name_punct_bits[] = {
14918#undef SPECIAL_PUNCT
14921static enum yytokentype
14922parser_peek_variable_name(struct parser_params *p)
14925 const char *ptr = p->lex.pcur;
14927 if (ptr + 1 >= p->lex.pend) return 0;
14931 if ((c = *ptr) == '-') {
14932 if (++ptr >= p->lex.pend) return 0;
14935 else if (is_global_name_punct(c) || ISDIGIT(c)) {
14936 return tSTRING_DVAR;
14940 if ((c = *ptr) == '@') {
14941 if (++ptr >= p->lex.pend) return 0;
14947 p->command_start = TRUE;
14948 return tSTRING_DBEG;
14952 if (!ISASCII(c) || c == '_' || ISALPHA(c))
14953 return tSTRING_DVAR;
14957#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
14958#define IS_END() IS_lex_state(EXPR_END_ANY)
14959#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
14960#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
14961#define IS_LABEL_POSSIBLE() (\
14962 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
14964#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
14965#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
14967static inline enum yytokentype
14968parser_string_term(struct parser_params *p, int func)
14970 p->lex.strterm = 0;
14971 if (func & STR_FUNC_REGEXP) {
14972 set_yylval_num(regx_options(p));
14973 dispatch_scan_event(p, tREGEXP_END);
14974 SET_LEX_STATE(EXPR_END);
14975 return tREGEXP_END;
14977 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
14979 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
14982 SET_LEX_STATE(EXPR_END);
14983 return tSTRING_END;
14986static enum yytokentype
14987parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
14989 int func = (int)quote->u1.func;
14990 int term = (int)quote->u3.term;
14991 int paren = (int)quote->u2.paren;
14993 rb_encoding *enc = p->enc;
14994 rb_encoding *base_enc = 0;
14997 if (func & STR_FUNC_TERM) {
14998 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
14999 SET_LEX_STATE(EXPR_END);
15000 p->lex.strterm = 0;
15001 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
15004 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
15005 do {c = nextc(p);} while (ISSPACE(c));
15008 if (func & STR_FUNC_LIST) {
15009 quote->u1.func &= ~STR_FUNC_LIST;
15012 if (c == term && !quote->u0.nest) {
15013 if (func & STR_FUNC_QWORDS) {
15014 quote->u1.func |= STR_FUNC_TERM;
15015 pushback(p, c); /* dispatch the term at tSTRING_END */
15016 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
15019 return parser_string_term(p, func);
15023 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
15027 if ((func & STR_FUNC_EXPAND) && c == '#') {
15028 int t = parser_peek_variable_name(p);
15034 if (tokadd_string(p, func, term, paren, "e->u0.nest,
15035 &enc, &base_enc) == -1) {
15038# define unterminated_literal(mesg) yyerror0(mesg)
15040# define unterminated_literal(mesg) compile_error(p, mesg)
15042 literal_flush(p, p->lex.pcur);
15043 if (func & STR_FUNC_QWORDS) {
15044 /* no content to add, bailing out here */
15045 unterminated_literal("unterminated list meets end of file");
15046 p->lex.strterm = 0;
15047 return tSTRING_END;
15049 if (func & STR_FUNC_REGEXP) {
15050 unterminated_literal("unterminated regexp meets end of file");
15053 unterminated_literal("unterminated string meets end of file");
15055 quote->u1.func |= STR_FUNC_TERM;
15060 lit = STR_NEW3(tok(p), toklen(p), enc, func);
15061 set_yylval_str(lit);
15062 flush_string_content(p, enc);
15064 return tSTRING_CONTENT;
15067static enum yytokentype
15068heredoc_identifier(struct parser_params *p)
15071 * term_len is length of `<<"END"` except `END`,
15072 * in this case term_len is 4 (<, <, " and ").
15074 long len, offset = p->lex.pcur - p->lex.pbeg;
15075 int c = nextc(p), term, func = 0, quote = 0;
15076 enum yytokentype token = tSTRING_BEG;
15081 func = STR_FUNC_INDENT;
15084 else if (c == '~') {
15086 func = STR_FUNC_INDENT;
15092 func |= str_squote; goto quoted;
15104 while ((c = nextc(p)) !=
term) {
15105 if (c == -1 || c ==
'\r' || c ==
'\n') {
15106 yyerror(
NULL, p,
"unterminated here document identifier");
15113 if (!parser_is_identchar(p)) {
15116 pushback(p, indent > 0 ?
'~' :
'-');
15122 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
15123 if (n < 0)
return 0;
15125 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
15132 yyerror(
NULL, p,
"too long here document identifier");
15141 here->length = (
int)
len;
15142 here->
quote = quote;
15170dedent_string(
VALUE string,
int width)
15177 for (i = 0; i <
len && col < width; i++) {
15178 if (
str[i] ==
' ') {
15181 else if (
str[i] ==
'\t') {
15183 if (n > width)
break;
15204 NODE *node, *str_node, *prev_node;
15206 VALUE prev_lit = 0;
15208 if (indent <= 0)
return root;
15212 prev_node = node = str_node =
root;
15216 VALUE lit = str_node->nd_lit;
15218 dedent_string(lit, indent);
15223 else if (!literal_concat0(p, prev_lit, lit)) {
15227 NODE *end = node->nd_end;
15228 node = prev_node->nd_next = node->nd_next;
15234 node->nd_end = end;
15239 while ((node = (prev_node = node)->
nd_next) != 0) {
15242 if ((str_node = node->nd_head) != 0) {
15258 if (indent <= 0)
return array;
15260 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
15280 col = dedent_string(
input, wid);
15286whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
15295 if (n < 0)
return FALSE;
15296 if (n > 0 &&
ptr[
len] !=
'\n') {
15300 return strncmp(eos,
ptr,
len) == 0;
15306 if (strncmp(p->
lex.
pcur, word,
len))
return 0;
15311 case '\0':
case '\004':
case '\032':
return 1;
15316#define NUM_SUFFIX_R (1<<0)
15317#define NUM_SUFFIX_I (1<<1)
15318#define NUM_SUFFIX_ALL 3
15324 const char *lastp = p->
lex.
pcur;
15326 while ((c = nextc(p)) != -1) {
15329 mask &= ~NUM_SUFFIX_I;
15331 mask &= ~NUM_SUFFIX_R;
15336 mask &= ~NUM_SUFFIX_R;
15371 return set_number_literal(p, v,
type,
suffix);
15388#define dispatch_heredoc_end(p) ((void)0)
15394 int c, func, indent = 0;
15395 const char *eos, *
ptr, *ptr_end;
15403 len = here->length;
15406 if ((c = nextc(p)) == -1) {
15430 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
15448 else if (whole_match_p(p, eos,
len, indent)) {
15462 if (ptr_end >
ptr) {
15463 switch (ptr_end[-1]) {
15465 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
15476 while (
ptr + i < ptr_end && parser_update_heredoc_indent(p,
ptr[i]))
15490 if (nextc(p) == -1) {
15496 }
while (!whole_match_p(p, eos,
len, indent));
15502 int t = parser_peek_variable_name(p);
15516 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
15532 tokadd(p, nextc(p));
15538 if ((c = nextc(p)) == -1)
goto error;
15539 }
while (!whole_match_p(p, eos,
len, indent));
15564 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator",
WARN_I(c));
15567 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
15582 switch (id_type(
get_id(lhs))) {
15586# define ERR(mesg) yyerror0(mesg)
15588# define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
15591 ERR(
"formal argument cannot be a constant");
15594 ERR(
"formal argument cannot be an instance variable");
15597 ERR(
"formal argument cannot be a global variable");
15600 ERR(
"formal argument cannot be a class variable");
15603 ERR(
"formal argument must be local variable");
15607 shadowing_lvar(p, lhs);
15614 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
15623 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
15627 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
15663 for (i = 0; i < n; ++i) {
15675 while (
ptr < ptr_end) {
15685static int parser_invalid_pragma_value(
struct parser_params *p,
const char *
name,
const char *val);
15688magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
15690 if (!comment_at_top(p)) {
15693 parser_set_encode(p, val);
15700 case 't':
case 'T':
15705 case 'f':
case 'F':
15711 return parser_invalid_pragma_value(p,
name, val);
15715parser_invalid_pragma_value(
struct parser_params *p,
const char *
name,
const char *val)
15722parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
15724 int b = parser_get_bool(p,
name, val);
15729parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
15738 b = parser_get_bool(p,
name, val);
15748parser_set_shareable_constant_value(
struct parser_params *p,
const char *
name,
const char *val)
15750 for (
const char *s = p->
lex.
pbeg, *e = p->
lex.
pcur; s < e; ++s) {
15751 if (*s ==
' ' || *s ==
'\t')
continue;
15752 if (*s ==
'#')
break;
15758 case 'n':
case 'N':
15764 case 'l':
case 'L':
15770 case 'e':
case 'E':
15771 if (
STRCASECMP(val,
"experimental_copy") == 0) {
15775 if (
STRCASECMP(val,
"experimental_everything") == 0) {
15781 parser_invalid_pragma_value(p,
name, val);
15784# if WARN_PAST_SCOPE
15786parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
15788 int b = parser_get_bool(p,
name, val);
15789 if (b >= 0) p->past_scope_enabled = b;
15800 {
"coding", magic_comment_encoding, parser_encode_length},
15801 {
"encoding", magic_comment_encoding, parser_encode_length},
15802 {
"frozen_string_literal", parser_set_compile_option_flag},
15803 {
"shareable_constant_value", parser_set_shareable_constant_value},
15804 {
"warn_indent", parser_set_token_info},
15805# if WARN_PAST_SCOPE
15806 {
"warn_past_scope", parser_set_past_scope},
15811magic_comment_marker(
const char *
str,
long len)
15818 if (
str[i-1] ==
'*' &&
str[i-2] ==
'-') {
15819 return str + i + 1;
15824 if (i + 1 >=
len)
return 0;
15825 if (
str[i+1] !=
'-') {
15828 else if (
str[i-1] !=
'-') {
15832 return str + i + 2;
15848 const char *beg, *end, *vbeg, *vend;
15849#define str_copy(_s, _p, _n) ((_s) \
15850 ? (void)(rb_str_resize((_s), (_n)), \
15851 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
15852 : (void)((_s) = STR_NEW((_p), (_n))))
15855 if (!!(beg = magic_comment_marker(
str,
len))) {
15856 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
15860 len = end - beg - 3;
15872 case '\'':
case '"':
case ':':
case ';':
15879 case '\'':
case '"':
case ':':
case ';':
15890 if (!indicator)
return FALSE;
15898 if (*
str ==
'\\') {
15924 for (i = 0; i < n; ++i) {
15925 if (s[i] ==
'-') s[i] =
'_';
15931 n = (*mc->
length)(p, vbeg, n);
15937 }
while (++mc < magic_comments +
numberof(magic_comments));
15948set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
15951 const char *beg =
str;
15955 if (send -
str <= 6)
return;
15957 case 'C':
case 'c':
str += 6;
continue;
15958 case 'O':
case 'o':
str += 5;
continue;
15959 case 'D':
case 'd':
str += 4;
continue;
15960 case 'I':
case 'i':
str += 3;
continue;
15961 case 'N':
case 'n':
str += 2;
continue;
15962 case 'G':
case 'g':
str += 1;
continue;
15963 case '=':
case ':':
15976 if (++
str >= send)
return;
15979 if (*
str !=
'=' && *
str !=
':')
return;
15985 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
16001 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
16002 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
16017#define ambiguous_operator(tok, op, syn) ( \
16018 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
16019 rb_warning0("even though it seems like "syn""))
16021#define ambiguous_operator(tok, op, syn) \
16022 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
16024#define warn_balanced(tok, op, syn) ((void) \
16025 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
16026 space_seen && !ISSPACE(c) && \
16027 (ambiguous_operator(tok, op, syn), 0)), \
16028 (enum yytokentype)(tok))
16035 size_t fraclen =
len-seen_point-1;
16044 yyerror0(
"numeric literal without digits");
16045 if (
peek(p,
'_')) nextc(p);
16047 return set_integer_literal(p,
INT2FIX(0), 0);
16053 int is_float, seen_point, seen_e, nondigit;
16056 is_float = seen_point = seen_e = nondigit = 0;
16059 if (c ==
'-' || c ==
'+') {
16066 if (c ==
'x' || c ==
'X') {
16072 if (nondigit)
break;
16079 }
while ((c = nextc(p)) != -1);
16083 if (
toklen(p) == start) {
16084 return no_digits(p);
16086 else if (nondigit)
goto trailing_uc;
16090 if (c ==
'b' || c ==
'B') {
16093 if (c ==
'0' || c ==
'1') {
16096 if (nondigit)
break;
16100 if (c !=
'0' && c !=
'1')
break;
16103 }
while ((c = nextc(p)) != -1);
16107 if (
toklen(p) == start) {
16108 return no_digits(p);
16110 else if (nondigit)
goto trailing_uc;
16114 if (c ==
'd' || c ==
'D') {
16120 if (nondigit)
break;
16127 }
while ((c = nextc(p)) != -1);
16131 if (
toklen(p) == start) {
16132 return no_digits(p);
16134 else if (nondigit)
goto trailing_uc;
16142 if (c ==
'o' || c ==
'O') {
16145 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
16146 return no_digits(p);
16149 if (c >=
'0' && c <=
'7') {
16154 if (nondigit)
break;
16158 if (c < '0' || c >
'9')
break;
16159 if (c >
'7')
goto invalid_octal;
16162 }
while ((c = nextc(p)) != -1);
16163 if (
toklen(p) > start) {
16166 if (nondigit)
goto trailing_uc;
16175 if (c >
'7' && c <=
'9') {
16179 else if (c ==
'.' || c ==
'e' || c ==
'E') {
16191 case '0':
case '1':
case '2':
case '3':
case '4':
16192 case '5':
case '6':
case '7':
case '8':
case '9':
16198 if (nondigit)
goto trailing_uc;
16199 if (seen_point || seen_e) {
16204 if (c0 == -1 || !
ISDIGIT(c0)) {
16229 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
16234 tokadd(p, nondigit);
16238 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
16242 if (nondigit)
goto decode_num;
16259 parser_show_error_line(p, &loc);
16269 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
16273 if (errno == ERANGE) {
16279 return set_number_literal(p, v,
type,
suffix);
16303 int c2 = escaped_control_code(c);
16315 if (!parser_isascii(p)) {
16316 if (tokadd_mbchar(p, c) == -1)
return 0;
16321 const char *start = p->
lex.
pcur - 1, *
ptr = start;
16323 int n = parser_precise_mbclen(p,
ptr);
16324 if (n < 0)
return -1;
16327 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
16328 " a conditional operator, put a space after `?'",
16333 else if (c ==
'\\') {
16334 if (
peek(p,
'u')) {
16337 tokadd_utf8(p, &enc, -1, 0, 0);
16341 if (tokadd_mbchar(p, c) == -1)
return 0;
16344 c = read_escape(p, 0, &enc);
16362 const char *ptok = p->
lex.
pcur;
16370 if (c == -1 || !
ISALNUM(c)) {
16372 if (!
ISASCII(c))
goto unknown;
16380 c = parser_precise_mbclen(p, p->
lex.
pcur);
16381 if (c < 0)
return 0;
16383 yyerror0(
"unknown type of %string");
16388 compile_error(p,
"unterminated quoted string meets end of file");
16438 yyerror0(
"unknown type of %string");
16442 if ((c = nextc(p)) ==
'=') {
16459 if (tokadd_mbchar(p, c) == -1)
return -1;
16461 }
while (parser_is_identchar(p));
16482 const unsigned long nth_ref_max =
16483 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
16487 if (overflow || n > nth_ref_max) {
16510 if (parser_is_identchar(p)) {
16542 if (parser_is_identchar(p)) {
16543 if (tokadd_mbchar(p, c) == -1)
return 0;
16566 case '1':
case '2':
case '3':
16567 case '4':
case '5':
case '6':
16568 case '7':
case '8':
case '9':
16573 }
while (c != -1 &&
ISDIGIT(c));
16577 c = parse_numvar(p);
16582 if (!parser_is_identchar(p)) {
16585 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
16589 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
16591 parser_show_error_line(p, &loc);
16600 if (tokadd_ident(p, c))
return 0;
16602 tokenize_ident(p, last_state);
16610 if (n < 0)
return false;
16623 while (n > args->
pos) {
16635 register int c = nextc(p);
16647 if (c == -1 || !parser_is_identchar(p)) {
16650 if (result ==
tIVAR) {
16651 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
16654 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
16656 parser_show_error_line(p, &loc);
16664 if (result ==
tIVAR) {
16665 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
16668 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
16670 parser_show_error_line(p, &loc);
16676 if (tokadd_ident(p, c))
return 0;
16677 tokenize_ident(p, last_state);
16691 if (tokadd_mbchar(p, c) == -1)
return 0;
16693 }
while (parser_is_identchar(p));
16694 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
16746 if (kw->
id[0] != kw->
id[1])
16761 else if (p->
lex.
state == EXPR_FNAME) {
16768 ident = tokenize_ident(p, last_state);
16772 lvar_defined(p, ident)) {
16782 int space_seen = 0;
16786 int fallthru =
FALSE;
16806 switch (c = nextc(p)) {
16818 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
16821 case ' ':
case '\t':
case '\f':
16825 while ((c = nextc(p))) {
16827 case ' ':
case '\t':
case '\f':
case '\r':
16844 if (comment_at_top(p)) {
16854 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
16862 goto normal_newline;
16867 switch (c = nextc(p)) {
16868 case ' ':
case '\t':
case '\f':
case '\r':
16879 if (
peek(p,
'.') == (c ==
'&')) {
16901 goto normal_newline;
16910 if ((c = nextc(p)) ==
'*') {
16911 if ((c = nextc(p)) ==
'=') {
16918 rb_warning0(
"`**' interpreted as argument prefix");
16936 rb_warning0(
"`*' interpreted as argument prefix");
16972 if (word_match_p(p,
"begin", 5)) {
16973 int first_p =
TRUE;
16988 if (c ==
'=' && word_match_p(p,
"end", 3)) {
17000 if ((c = nextc(p)) ==
'=') {
17001 if ((c = nextc(p)) ==
'=') {
17010 else if (c ==
'>') {
17022 int token = heredoc_identifier(p);
17034 if ((c = nextc(p)) ==
'>') {
17041 if ((c = nextc(p)) ==
'=') {
17054 if ((c = nextc(p)) ==
'=') {
17058 if ((c = nextc(p)) ==
'=') {
17097 return parse_qmark(p, space_seen);
17100 if ((c = nextc(p)) ==
'&') {
17102 if ((c = nextc(p)) ==
'=') {
17110 else if (c ==
'=') {
17115 else if (c ==
'.') {
17124 !(c ==
'\'' || c ==
'"' ||
17126 rb_warning0(
"`&' interpreted as argument prefix");
17140 if ((c = nextc(p)) ==
'|') {
17142 if ((c = nextc(p)) ==
'=') {
17183 return parse_numeric(p,
'+');
17225 if ((c = nextc(p)) ==
'.') {
17226 if ((c = nextc(p)) ==
'.') {
17228 rb_warn0(
"... at EOL, should be parenthesized?");
17242 parse_numeric(p,
'.');
17244 yyerror0(
"unexpected fraction part after numeric literal");
17247 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
17258 case '0':
case '1':
case '2':
case '3':
case '4':
17259 case '5':
case '6':
case '7':
case '8':
case '9':
17260 return parse_numeric(p, c);
17321 if ((c = nextc(p)) ==
'=') {
17328 arg_ambiguous(p,
'/');
17336 if ((c = nextc(p)) ==
'=') {
17356 if ((c = nextc(p)) !=
'@') {
17370 else if (!space_seen) {
17377 rb_warning0(
"parentheses after method name is interpreted as "
17378 "an argument list, not a decomposed argument");
17389 if ((c = nextc(p)) ==
']') {
17392 if ((c = nextc(p)) ==
'=') {
17444 if (c ==
' ')
return tSP;
17450 return parse_percent(p, space_seen, last_state);
17453 return parse_gvar(p, last_state);
17456 return parse_atmark(p, last_state);
17459 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
17474 if (!parser_is_identchar(p)) {
17475 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
17484 return parse_ident(p, c, cmd_state);
17494 t = parser_yylex(p);
17509#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
17518 nd_set_loc(n, loc);
17533nodetype(
NODE *node)
17539nodeline(
NODE *node)
17545newline_node(
NODE *node)
17548 node = remove_begin(node);
17577 NODE *end, *h = head, *nd;
17579 if (tail == 0)
return head;
17581 if (h == 0)
return tail;
17589 parser_warning(p, h,
"unused literal ignored");
17609 parser_warning(p, tail,
"statement not reached");
17619 tail->nd_end = tail;
17621 end->nd_next = tail;
17622 h->nd_end = tail->nd_end;
17634 if (list->nd_next) {
17635 last = list->nd_next->nd_end;
17641 list->nd_alen += 1;
17643 list->nd_next->nd_end =
last->nd_next;
17652list_concat(
NODE *head,
NODE *tail)
17656 if (head->nd_next) {
17657 last = head->nd_next->nd_end;
17663 head->nd_alen += tail->nd_alen;
17664 last->nd_next = tail;
17665 if (tail->nd_next) {
17666 head->nd_next->nd_end = tail->nd_next->nd_end;
17669 head->nd_next->nd_end = tail;
17680 if (
NIL_P(tail))
return 1;
17682 compile_error(p,
"string literal encodings differ (%s / %s)",
17697 if (head->nd_next) {
17698 head = head->nd_next->nd_end->nd_head;
17701 const VALUE lit = head->nd_lit;
17713 if (!head)
return tail;
17714 if (!tail)
return head;
17718 head = new_dstr(p, head, loc);
17726 return list_append(p, head, tail);
17733 if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
17737 lit = head->nd_lit;
17740 if (!literal_concat0(p, lit, tail->nd_lit)) {
17742 rb_discard_node(p, head);
17743 rb_discard_node(p, tail);
17746 rb_discard_node(p, tail);
17749 list_append(p, head, tail);
17755 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
17757 tail->nd_lit = head->nd_lit;
17758 rb_discard_node(p, head);
17761 else if (
NIL_P(tail->nd_lit)) {
17763 head->nd_alen += tail->nd_alen - 1;
17764 if (!head->nd_next) {
17765 head->nd_next = tail->nd_next;
17767 else if (tail->nd_next) {
17768 head->nd_next->nd_end->nd_next = tail->nd_next;
17769 head->nd_next->nd_end = tail->nd_next->nd_end;
17771 rb_discard_node(p, tail);
17773 else if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
17774 if (!literal_concat0(p, lit, tail->nd_lit))
17776 tail->nd_lit =
Qnil;
17789 list_append(p, head, tail);
17799 node = new_dstr(p, node, &node->
nd_loc);
17826 return list_append(p, dstr, node);
17863 if (block) block_dup_check(p, args, block);
17864 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
17865 if (block) ret = method_add_block(p, ret, block, loc);
17870#define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
17875 int line = op_loc->beg_pos.lineno;
17889 if (RB_TYPE_P(n->nd_lit,
T_REGEXP)) {
17890 const VALUE lit = n->nd_lit;
17892 match->nd_args = reg_named_capture_assign(p, lit, loc);
17904 if (!RB_TYPE_P(n->nd_lit,
T_REGEXP))
break;
17917# if WARN_PAST_SCOPE
17923 if (vtable_included(past,
id))
return 1;
17939 "%s:%d: %s block here",
17941 outer ?
"outer" :
"inner");
17942 parser_show_error_line(p, &
used->nd_loc);
17981 switch (id_type(
id)) {
17983 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
17993 if (local_id_ref(p,
id, &vidp)) {
18004 if (numparam_nested_p(p))
return 0;
18007 if (!
local->numparam.current)
local->numparam.current = node;
18010# if WARN_PAST_SCOPE
18031opt_arg_append(
NODE *opt_list,
NODE *opt)
18033 NODE *opts = opt_list;
18036 while (opts->nd_next) {
18037 opts = opts->nd_next;
18040 opts->nd_next = opt;
18049 NODE *kws = kwlist;
18051 while (kws->nd_next) {
18052 kws = kws->nd_next;
18081 return list_append(p, symbols, symbol);
18098 VALUE src = node->nd_lit;
18100 nd_set_loc(node, loc);
18111 nd_set_loc(node, loc);
18113 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
18114 for (list = (
prev = node)->
nd_next; list; list = list->nd_next) {
18115 NODE *frag = list->nd_head;
18118 VALUE tail = frag->nd_lit;
18119 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
18121 if (!literal_concat0(p, lit, tail)) {
18125 prev->nd_next = list->nd_next;
18126 rb_discard_node(p, list->nd_head);
18127 rb_discard_node(p, list);
18138 if (!node->nd_next) {
18139 VALUE src = node->nd_lit;
18170 nd_set_loc(node, loc);
18174 nd_set_loc(node, loc);
18191 if (lit ==
Qundef)
return;
18201 if (!
NIL_P(line)) {
18202 rb_warning1(
"duplicated `when' clause with line %d is ignored",
18219 if (dyna_in_block(p)) {
18222 if (local_id(p,
id))
return 1;
18236 if (ripper_is_node_yylval(re)) {
18237 src =
RNODE(re)->nd_cval;
18238 re =
RNODE(re)->nd_rval;
18240 if (ripper_is_node_yylval(opt)) {
18241 options = (
int)
RNODE(opt)->nd_tag;
18242 opt =
RNODE(opt)->nd_rval;
18244 if (src &&
NIL_P(parser_reg_compile(p, src, options, &
err))) {
18247 return dispatch2(regexp_literal, re, opt);
18253static const char rb_parser_lex_state_names[][8] = {
18254 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
18255 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
18256 "LABEL",
"LABELED",
"FITEM",
18263 unsigned int mask = 1;
18264 static const char none[] =
"NONE";
18301 append_lex_state_name(from, mesg);
18303 append_lex_state_name(to, mesg);
18330 const char *
name,
int line)
18333 append_bitstack_value(stack, mesg);
18351 append_lex_state_name(p->
lex.
state, mesg);
18372 yylloc->beg_pos.lineno = sourceline;
18373 yylloc->beg_pos.column = beg_pos;
18374 yylloc->end_pos.lineno = sourceline;
18375 yylloc->end_pos.column = end_pos;
18411 v = valp->
node->nd_rval;
18418 v = valp->
node->nd_lit;
18446 if (!
id)
return -1;
18449 *
err =
"Can't change the value of self";
18452 *
err =
"Can't assign to nil";
18455 *
err =
"Can't assign to true";
18458 *
err =
"Can't assign to false";
18461 *
err =
"Can't assign to __FILE__";
18464 *
err =
"Can't assign to __LINE__";
18467 *
err =
"Can't assign to __ENCODING__";
18470 switch (id_type(
id)) {
18472 if (dyna_in_block(p)) {
18485 if (!local_id(p,
id)) local_var(p,
id);
18493 *
err =
"dynamic constant assignment";
18506 const char *
err = 0;
18524 const char *
err = 0;
18526 if (
err) lhs = assign_error(p,
err, lhs);
18532is_private_local_id(
ID name)
18535 if (
name == idUScore)
return 1;
18545 if (is_private_local_id(
name))
return 1;
18546 if (dyna_in_block(p)) {
18547 if (dvar_curr(p,
name)) {
18548 yyerror0(
"duplicated argument name");
18550 else if (dvar_defined(p,
name) || local_id(p,
name)) {
18559 if (local_id(p,
name)) {
18560 yyerror0(
"duplicated argument name");
18569 shadowing_lvar_0(p,
name);
18582 if (!shadowing_lvar_0(p,
name))
return;
18616 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
18626 return dispatch2(assign_error, mesg, expr);
18637 return list_append(p, node1, node2);
18639 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
18643 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
18649 node1->nd_body = list_append(p, node1->nd_body, node2);
18659 if (!node2)
return node1;
18662 if (node1->nd_head)
18663 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
18665 node1->nd_head =
NEW_LIST(node2, loc);
18669 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
18675 node1->nd_body = list_concat(node1->nd_body, node2);
18685 if ((n1 = splat_array(
args)) != 0) {
18686 return list_append(p, n1, last_arg);
18688 return arg_append(p,
args, last_arg, loc);
18696 return list_concat(n1, rest_arg);
18698 return arg_concat(p,
args, rest_arg, loc);
18702splat_array(
NODE* node)
18716 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
18722 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
18728 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
18729 mark_lvar_used(p, rhs->nd_head);
18767 *dest = n =
NEW_LIT(path, loc);
18794 args = list_append(p,
args, const_decl_path(p, dest));
18798static int is_static_content(
NODE *node);
18801shareable_literal_value(
NODE *node)
18803 if (!node)
return Qnil;
18813 return node->nd_lit;
18819#ifndef SHAREABLE_BARE_EXPRESSION
18820#define SHAREABLE_BARE_EXPRESSION 1
18827# define shareable_literal_constant_next(n) \
18828 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
18831 if (!value)
return 0;
18859 for (
NODE *n = value; n; n = n->nd_next) {
18860 NODE *elt = n->nd_head;
18866 else if (
RTEST(lit)) {
18872 VALUE e = shareable_literal_value(elt);
18885 if (!value->nd_brace)
return 0;
18887 for (
NODE *n = value->nd_head; n; n = n->nd_next->nd_next) {
18889 NODE *val = n->nd_next->nd_head;
18895 else if (
RTEST(lit)) {
18903 n->nd_next->nd_head = val;
18905 else if (
RTEST(lit)) {
18911 VALUE k = shareable_literal_value(
key);
18912 VALUE v = shareable_literal_value(val);
18927 return ensure_shareable_node(p, dest, value, loc);
18933 if (!lit)
return 0;
18937 value = make_shareable_node(p, value,
false, loc);
18944# undef shareable_literal_constant_next
18951 if (!value)
return 0;
18952 switch (shareable) {
18958 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
18959 if (lit)
return lit;
18967 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
18968 if (lit)
return lit;
18969 return make_shareable_node(p, value, shareable ==
shareable_copy, loc);
18981 if (!lhs)
return 0;
18985 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
18995 lhs->nd_value = rhs;
18996 nd_set_loc(lhs, loc);
19000 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
19001 nd_set_loc(lhs, loc);
19015 NODE *void_node = 0, *vn;
19027 return void_node ? void_node : node;
19034 if (node->nd_body->nd_body) {
19038 return void_node ? void_node : node;
19041 while (node->nd_next) {
19042 node = node->nd_next;
19044 node = node->nd_head;
19048 node = node->nd_body;
19053 if (!node->nd_body) {
19056 else if (!node->nd_else) {
19059 vn = value_expr_check(p, node->nd_body);
19060 if (!vn)
return NULL;
19061 if (!void_node) void_node = vn;
19062 node = node->nd_else;
19067 node = node->nd_1st;
19074 mark_lvar_used(p, node);
19088 NODE *void_node = value_expr_check(p, node);
19099 const char *useless = 0;
19106 switch (node->nd_mid) {
19137 useless =
"a variable";
19140 useless =
"a constant";
19146 useless =
"a literal";
19171 useless =
"defined?";
19183 NODE *
const n = node;
19185 if (!node)
return n;
19188 while (node->nd_next) {
19189 void_expr(p, node->nd_head);
19190 node = node->nd_next;
19196remove_begin(
NODE *node)
19198 NODE **n = &node, *n1 = node;
19200 *n = n1 = n1->nd_body;
19206remove_begin_all(
NODE *node)
19208 NODE **n = &node, *n1 = node;
19210 *n = n1 = n1->nd_body;
19218 NODE *node = *body;
19224#define subnodes(n1, n2) \
19225 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
19226 (!node->n2) ? (body = &node->n1, 1) : \
19227 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
19237 *body = node = node->nd_stts;
19241 *body = node = node->nd_body;
19245 body = &node->nd_end->nd_head;
19252 body = &node->nd_body;
19261 if (node->nd_else) {
19262 body = &node->nd_resq;
19278is_static_content(
NODE *node)
19280 if (!node)
return 1;
19283 if (!(node = node->nd_head))
break;
19286 if (!is_static_content(node->nd_head))
return 0;
19287 }
while ((node = node->nd_next) != 0);
19317 if (!node->nd_value)
return 1;
19318 if (is_static_content(node->nd_value)) {
19320 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
19331#define SWITCH_BY_COND_TYPE(t, w, arg) \
19333 case COND_IN_OP: break; \
19334 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
19335 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
19345 if (node == 0)
return 0;
19350 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
19360 if (node == 0)
return 0;
19362 assign_in_cond(p, node);
19415 if (node == 0)
return 0;
19422 if (node == 0)
return 0;
19436 if (!cc)
return right;
19438 return newline_node(
NEW_IF(cc, left, right, loc));
19444 if (!cc)
return right;
19446 return newline_node(
NEW_UNLESS(cc, left, right, loc));
19457 NODE *node = left, *second;
19462 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
19483 no_blockarg(p, node);
19485 if (node->nd_next == 0) {
19486 node = node->nd_head;
19499 if (node) no_blockarg(p, node);
19512 if (FLONUM_P(lit)) {
19520 BIGNUM_NEGATE(lit);
19524 RATIONAL_SET_NUM(lit, negate_lit(p,
RRATIONAL(lit)->
num));
19543arg_blk_pass(
NODE *node1,
NODE *node2)
19546 if (!node1)
return node2;
19547 node2->nd_head = node1;
19558 if (
args->pre_args_num)
return false;
19559 if (
args->post_args_num)
return false;
19560 if (
args->rest_arg)
return false;
19561 if (
args->opt_args)
return false;
19562 if (
args->block_arg)
return false;
19563 if (
args->kw_args)
return false;
19564 if (
args->kw_rest_arg)
return false;
19575 args->
pre_init = pre_args ? pre_args->nd_next : 0;
19578 args->
post_init = post_args ? post_args->nd_next : 0;
19588 nd_set_loc(tail, loc);
19598 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19600 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
19601 args->
imemo = tmpbuf;
19616 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
19618 NODE *kwn = kw_args;
19620 vtable_pop(vtargs, !!block + !!kw_rest_arg);
19621 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
19625 --required_kw_vars;
19626 kwn = kwn->nd_next;
19629 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
19630 ID vid = kwn->nd_body->nd_vid;
19632 *required_kw_vars++ = vid;
19639 arg_var(p, kw_bits);
19640 if (kw_rest_arg) arg_var(p, kw_rest_arg);
19641 if (block) arg_var(p, block);
19646 else if (kw_rest_arg == idNil) {
19649 else if (kw_rest_arg) {
19663 args = new_args_tail(p, 0, 0, 0, 0);
19664 nd_set_loc(args, &loc);
19666 args->nd_ainfo->pre_args_num = max_numparam;
19676 aryptn->nd_pconst = constant;
19695 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19697 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
19724 fndptn->nd_pconst = constant;
19734 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19736 rb_imemo_tmpbuf_set_ptr(tmpbuf, fpinfo);
19751 hshptn->nd_pconst = constant;
19759 NODE *node, *kw_rest_arg_node;
19761 if (kw_rest_arg == idNil) {
19764 else if (kw_rest_arg) {
19765 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
19768 kw_rest_arg_node =
NULL;
19778warn_one_line_pattern_matching(
struct parser_params *p,
NODE *node,
NODE *pattern,
bool right_assign)
19785 rb_warn0L_experimental(
nd_line(node),
"One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!");
19800 nd_set_loc(node, loc);
19803 lit = node->nd_lit;
19806 nd_set_loc(node, loc);
19821 node->nd_next->nd_end = node->nd_next;
19822 node->nd_next->nd_next = 0;
19824 list_concat(*result, node);
19836 while (hash && hash->nd_head && hash->nd_next) {
19837 NODE *head = hash->nd_head;
19838 NODE *value = hash->nd_next;
19839 NODE *next = value->nd_next;
19843 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
19845 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
19846 head->nd_lit,
nd_line(head));
19847 head = ((
NODE *)data)->nd_next;
19848 head->nd_head = block_append(p, head->nd_head, value->nd_head);
19858 if (!result) result = hash;
19859 else list_concat(result, hash);
19868 if (hash) hash = remove_duplicate_keys(p, hash);
19876 if (is_private_local_id(
id)) {
19880 yyerror1(loc,
"duplicated variable name");
19894 yyerror1(loc,
"duplicated key name");
19915 ID vid = lhs->nd_vid;
19917 int shareable = ctxt.shareable_constant_value;
19930 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->
nd_loc);
19931 lhs->nd_value = rhs;
19932 nd_set_loc(lhs, loc);
19935 switch (id_type(vid)) {
19939 asgn->nd_aid = vid;
19943 else if (op ==
tANDOP) {
19945 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->
nd_loc);
19947 lhs->nd_value = rhs;
19948 nd_set_loc(lhs, loc);
19955 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->
nd_loc);
19957 asgn->nd_value = rhs;
19958 nd_set_loc(asgn, loc);
19978 args = arg_concat(p,
args, rhs, loc);
20002 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
20016 yyerror1(loc,
"dynamic constant assignment");
20025 path = assign_error(p,
"dynamic constant assignment", path);
20033 a = dispatch2(assign_error, ERR_MESG(), a);
20041 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
20049 NODE *result = head;
20051 NODE *tmp = rescue_else ? rescue_else : rescue;
20054 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
20057 else if (rescue_else) {
20058 result = block_append(p, result, rescue_else);
20063 fixpos(result, head);
20073 if (!
local->used)
return;
20081 for (
int i = 0; i <
cnt; ++i) {
20082 if (!v[i] || (u[i] &
LVAR_USED))
continue;
20083 if (is_private_local_id(v[i]))
continue;
20102 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
20103 local->numparam.outer = 0;
20104 local->numparam.inner = 0;
20105 local->numparam.current = 0;
20109# if WARN_PAST_SCOPE
20122 warn_unused_var(p, p->
lvtbl);
20125# if WARN_PAST_SCOPE
20126 while (p->
lvtbl->past) {
20144 int cnt_args = vtable_size(p->
lvtbl->
args);
20145 int cnt_vars = vtable_size(p->
lvtbl->
vars);
20146 int cnt = cnt_args + cnt_vars;
20150 if (
cnt <= 0)
return 0;
20154 for (i = 0, j = cnt_args+1; i < cnt_vars; ++i) {
20156 if (!vtable_included(p->
lvtbl->
args,
id)) {
20193 numparam_name(p,
id);
20200 numparam_name(p,
id);
20210 struct vtable *vars, *args, *used;
20219 if (used) used = used->
prev;
20225 else if (vtable_included(args,
id)) {
20229 int i = vtable_included(vars,
id);
20230 if (i && used && vidrefp) *vidrefp = &used->
tbl[i-1];
20238 return local_id_ref(p,
id,
NULL);
20272 NODE *args = leading ? rest_arg_append(p, leading, splat, argsloc) : splat;
20274 args = arg_append(p, splat, new_hash(p, kwrest, loc), loc);
20276 return arg_blk_pass(args, block);
20293 if (!
local->numparam.outer) {
20294 local->numparam.outer =
local->numparam.current;
20296 local->numparam.inner = 0;
20297 local->numparam.current = 0;
20311 local->numparam.inner = prev_inner;
20313 else if (
local->numparam.current) {
20315 local->numparam.inner =
local->numparam.current;
20319 local->numparam.current =
local->numparam.outer;
20320 local->numparam.outer = 0;
20324 local->numparam.current = 0;
20329static const struct vtable *
20343 struct vtable *tmp = *vtblp;
20344 *vtblp = tmp->
prev;
20345# if WARN_PAST_SCOPE
20346 if (p->past_scope_enabled) {
20348 p->
lvtbl->past = tmp;
20361 warn_unused_var(p, p->
lvtbl);
20392 struct vtable *vars, *args, *used;
20400 if (vtable_included(args,
id)) {
20403 if ((i = vtable_included(vars,
id)) != 0) {
20404 if (used && vidrefp) *vidrefp = &used->
tbl[i-1];
20409 if (!vidrefp) used = 0;
20410 if (used) used = used->
prev;
20423 return dvar_defined_ref(p,
id,
NULL);
20429 return (vtable_included(p->
lvtbl->
args,
id) ||
20437 "regexp encoding option '%c' differs from source encoding '%s'",
20483 if (c) reg_fragment_enc_error(p,
str, c);
20490 reg_fragment_setenc(p,
str, options);
20509 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
20515 const char *s = (
const char *)
name;
20530 succ = block_append(p, succ, node);
20553 reg_fragment_setenc(p,
str, options);
20570 re = parser_reg_compile(p,
str, options);
20587 if (c) reg_fragment_enc_error(p,
str, c);
20612 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
20613 const YYLTYPE *
const LOC = &default_location;
20619 node = block_append(p, node, print);
20631 node = block_append(p, split, node);
20636 node = block_append(p, chomp, node);
20656 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
20672 p->delayed.token =
Qnil;
20674 p->parsing_thread =
Qnil;
20684#define parser_mark ripper_parser_mark
20685#define parser_free ripper_parser_free
20689parser_mark(
void *
ptr)
20719parser_free(
void *
ptr)
20743parser_memsize(
const void *
ptr)
20747 size_t size =
sizeof(*p);
20751 size +=
sizeof(*local);
20772#undef rb_reserved_word
20777 return reserved_word(
str,
len);
20785 &parser_data_type, p);
20786 parser_initialize(p);
20803#define rb_parser_end_seen_p ripper_parser_end_seen_p
20804#define rb_parser_encoding ripper_parser_encoding
20805#define rb_parser_get_yydebug ripper_parser_get_yydebug
20806#define rb_parser_set_yydebug ripper_parser_set_yydebug
20807#define rb_parser_get_debug_output ripper_parser_get_debug_output
20808#define rb_parser_set_debug_output ripper_parser_set_debug_output
20809static VALUE ripper_parser_end_seen_p(
VALUE vparser);
20810static VALUE ripper_parser_encoding(
VALUE vparser);
20811static VALUE ripper_parser_get_yydebug(
VALUE self);
20813static VALUE ripper_parser_get_debug_output(
VALUE self);
20814static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
20823ripper_error_p(
VALUE vparser)
20870rb_parser_get_yydebug(
VALUE self)
20927#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
20930#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
20931#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
20932 (new)->cnt = (cnt), (ptr))
20979 while ((n = *prev) !=
NULL) {
20980 if (n->ptr ==
ptr) {
21001 if (RSTRING_END(mesg)[-1] ==
'\n') {
21008parser_compile_error(
struct parser_params *p,
const char *fmt, ...)
21025count_char(
const char *
str,
int c)
21028 while (
str[n] == c) ++n;
21038RUBY_FUNC_EXPORTED
size_t
21041 if (*yystr ==
'"') {
21042 size_t yyn = 0, bquote = 0;
21043 const char *yyp = yystr;
21049 bquote = count_char(yyp+1,
'`') + 1;
21050 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
21058 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
21059 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
21065 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
21066 if (yyres)
memcpy(yyres + yyn, yyp, 3);
21071 goto do_not_strip_quotes;
21074 goto do_not_strip_quotes;
21077 if (*++yyp !=
'\\')
21078 goto do_not_strip_quotes;
21094 do_not_strip_quotes: ;
21097 if (!yyres)
return strlen(yystr);
21099 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
21109 if (x ==
Qfalse)
return x;
21110 if (x ==
Qtrue)
return x;
21111 if (x ==
Qnil)
return x;
21129 x = ((
NODE *)x)->nd_rval;
21143#define validate(x) ((x) = get_value(x))
21172 return rb_funcall(p->value, mid, 3, a, b, c);
21182 return rb_funcall(p->value, mid, 4, a, b, c, d);
21193 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
21206 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f,
g);
21210ripper_get_id(
VALUE v)
21213 if (!RB_TYPE_P(v,
T_NODE))
return 0;
21215 if (
nd_type(nd) != NODE_RIPPER)
return 0;
21220ripper_get_value(
VALUE v)
21224 if (!RB_TYPE_P(v,
T_NODE))
return v;
21227 return nd->nd_rval;
21237ripper_compile_error(
struct parser_params *p,
const char *fmt, ...)
21242 va_start(args, fmt);
21255 "gets returned %"PRIsVALUE" (expected String or nil)",
21268ripper_s_allocate(
VALUE klass)
21272 &parser_data_type, p);
21277#define ripper_initialized_p(r) ((r)->lex.input != 0)
21293 VALUE src, fname, lineno;
21297 if (RB_TYPE_P(src,
T_FILE)) {
21298 p->
lex.
gets = ripper_lex_io_get;
21301 p->
lex.
gets = ripper_lex_get_generic;
21309 if (
NIL_P(fname)) {
21317 parser_initialize(p);
21327ripper_parse0(
VALUE parser_v)
21334 ripper_yyparse((
void*)p);
21341ripper_ensure(
VALUE parser_v)
21346 p->parsing_thread =
Qnil;
21357ripper_parse(
VALUE self)
21362 if (!ripper_initialized_p(p)) {
21365 if (!
NIL_P(p->parsing_thread)) {
21372 rb_ensure(ripper_parse0, self, ripper_ensure, self);
21385ripper_column(
VALUE self)
21391 if (!ripper_initialized_p(p)) {
21394 if (
NIL_P(p->parsing_thread))
return Qnil;
21406ripper_filename(
VALUE self)
21411 if (!ripper_initialized_p(p)) {
21425ripper_lineno(
VALUE self)
21430 if (!ripper_initialized_p(p)) {
21433 if (
NIL_P(p->parsing_thread))
return Qnil;
21444ripper_state(
VALUE self)
21449 if (!ripper_initialized_p(p)) {
21452 if (
NIL_P(p->parsing_thread))
return Qnil;
21463ripper_token(
VALUE self)
21469 if (!ripper_initialized_p(p)) {
21472 if (
NIL_P(p->parsing_thread))
return Qnil;
21513 ripper_init_eventids1();
21514 ripper_init_eventids2();
21515 id_warn = rb_intern_const(
"warn");
21516 id_warning = rb_intern_const(
"warning");
21517 id_gets = rb_intern_const(
"gets");
21518 id_assoc = rb_intern_const(
"=>");
21596 ripper_init_eventids1_table(Ripper);
21597 ripper_init_eventids2_table(Ripper);
VALUE rb_ary_reverse(VALUE ary)
VALUE rb_ary_push(VALUE ary, VALUE item)
VALUE rb_ary_unshift(VALUE ary, VALUE item)
VALUE rb_ary_concat(VALUE x, VALUE y)
VALUE rb_ary_clear(VALUE ary)
VALUE rb_assoc_new(VALUE car, VALUE cdr)
VALUE rb_ary_join(VALUE ary, VALUE sep)
#define PRINTF_ARGS(decl, string_index, first_to_check)
#define UNREACHABLE_RETURN
VALUE rb_big_norm(VALUE x)
VALUE rb_cstr_to_inum(const char *str, int base, int badcheck)
int rb_dvar_defined(ID id, const rb_iseq_t *iseq)
VALUE rb_node_case_when_optimizable_literal(const NODE *const node)
int rb_local_defined(ID id, const rb_iseq_t *iseq)
Internal header for the compiler.
Internal header absorbing C compipler differences.
VALUE rb_complex_raw(VALUE x, VALUE y)
Our own, locale independent, character handling routines.
#define rb_define_method(klass, mid, func, arity)
Defines klass#mid.
#define rb_define_singleton_method(klass, mid, func, arity)
Defines klass.mid.
#define rb_define_private_method(klass, mid, func, arity)
Defines klass#mid and makes it private.
VALUE rb_int_positive_pow(long x, unsigned long y)
#define rb_ascii8bit_encindex()
int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc)
VALUE rb_enc_associate(VALUE obj, rb_encoding *enc)
rb_encoding * rb_utf8_encoding(void)
rb_encoding * rb_ascii8bit_encoding(void)
rb_encoding * rb_enc_from_index(int index)
rb_encoding * rb_enc_get(VALUE obj)
rb_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
rb_encoding * rb_usascii_encoding(void)
VALUE rb_enc_from_encoding(rb_encoding *encoding)
VALUE rb_enc_associate_index(VALUE obj, int idx)
int rb_enc_find_index(const char *name)
int rb_enc_codelen(int c, rb_encoding *enc)
char str[HTML_ESCAPE_MAX_LEN+1]
unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow)
#define RSTRING_LEN(string)
#define RSTRING_PTR(string)
void rb_gc_force_recycle(VALUE obj)
void rb_gc_mark(VALUE ptr)
VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0)
void rb_gc_register_mark_object(VALUE obj)
Inform the garbage collector that object is a live Ruby object that should not be moved.
#define rb_intern_str(string)
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
VALUE rb_syntax_error_append(VALUE exc, VALUE file, int line, int column, rb_encoding *enc, const char *fmt, va_list args)
void rb_raise(VALUE exc, const char *fmt,...)
void rb_compile_warn(const char *file, int line, const char *fmt,...)
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
VALUE rb_ident_hash_new(void)
const char * rb_builtin_type_name(int t)
void rb_fatal(const char *fmt,...)
const char * rb_builtin_class_name(VALUE x)
VALUE rb_make_exception(int argc, const VALUE *argv)
Make an Exception object from the list of arguments in a manner similar to Kernel#raise.
void rb_compile_warning(const char *file, int line, const char *fmt,...)
VALUE rb_ensure(VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*e_proc)(VALUE), VALUE data2)
An equivalent to ensure clause.
VALUE rb_errinfo(void)
The current exception in the current thread.
bool rb_warning_category_enabled_p(rb_warning_category_t category)
VALUE rb_cObject
Object class.
VALUE rb_class_new_instance(int, const VALUE *, VALUE)
Allocates and initializes an instance of klass.
VALUE rb_obj_hide(VALUE obj)
Make the object invisible from Ruby code.
VALUE rb_obj_class(VALUE)
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
unsigned char suffix[65536]
unsigned char match[65280+2]
unsigned in(void *in_desc, z_const unsigned char **buf)
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
VALUE rb_hash_lookup(VALUE hash, VALUE key)
VALUE rb_hash_clear(VALUE hash)
IMEMO: Internal memo object.
#define ENC_CODERANGE_7BIT
#define rb_enc_mbcput(c, buf, enc)
#define rb_enc_prev_char(s, p, e, enc)
int rb_enc_str_coderange(VALUE)
#define ENC_CODERANGE_UNKNOWN
VALUE rb_enc_str_new(const char *, long, rb_encoding *)
#define ENCODING_GET(obj)
VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc)
#define rb_enc_asciicompat(enc)
#define rb_enc_isalnum(c, enc)
int rb_char_to_option_kcode(int c, int *option, int *kcode)
long rb_str_coderange_scan_restartable(const char *, const char *, rb_encoding *, int *)
#define MBCLEN_CHARFOUND_P(ret)
#define ENCODING_SET(obj, i)
#define ENCODING_IS_ASCII8BIT(obj)
#define rb_enc_isspace(c, enc)
Thin wrapper to ruby/config.h.
@ RB_WARN_CATEGORY_EXPERIMENTAL
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
VALUE rb_funcallv_public(VALUE, ID, int, const VALUE *)
Calls a method.
VALUE rb_io_write(VALUE, VALUE)
VALUE rb_io_puts(int, const VALUE *, VALUE)
#define rb_rational_raw1(x)
VALUE rb_rational_new(VALUE, VALUE)
int rb_memcicmp(const void *, const void *, long)
VALUE rb_str_resize(VALUE, long)
#define rb_str_new(str, len)
VALUE rb_str_cat(VALUE, const char *, long)
#define rb_usascii_str_new(str, len)
void rb_str_set_len(VALUE, long)
void rb_str_modify(VALUE)
VALUE rb_str_buf_new(long)
VALUE rb_filesystem_str_new_cstr(const char *)
#define rb_usascii_str_new2
VALUE rb_str_subseq(VALUE, long, long)
#define rb_strlen_lit(str)
VALUE rb_str_append(VALUE, VALUE)
VALUE rb_str_new_frozen(VALUE)
VALUE rb_str_buf_append(VALUE, VALUE)
VALUE rb_str_intern(VALUE)
VALUE rb_obj_as_string(VALUE)
#define rb_str_cat_cstr(buf, str)
#define rb_str_new_cstr(str)
VALUE rb_thread_current(void)
int rb_const_defined_at(VALUE, ID)
VALUE rb_const_get_at(VALUE, ID)
VALUE rb_attr_get(VALUE, ID)
int rb_respond_to(VALUE, ID)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_make_backtrace(void)
const char * rb_id2name(ID)
ID rb_intern2(const char *, long)
ID rb_intern(const char *)
void rb_define_global_const(const char *, VALUE)
void rb_define_const(VALUE, const char *, VALUE)
void * memmove(void *, const void *, size_t)
unsigned long ruby_scan_oct(const char *, size_t, size_t *)
#define scan_hex(s, l, e)
#define scan_oct(s, l, e)
Internal header for Complex.
#define RCOMPLEX_SET_IMAG(cmp, i)
#define RCOMPLEX_SET_REAL(cmp, r)
#define SIZED_REALLOC_N(v, T, m, n)
Internal header for Hash.
int rb_stderr_tty_p(void)
Internal header for Numeric.
Internal header for the parser.
Internal header for Rational.
Internal header for Regexp.
VALUE rb_reg_check_preprocess(VALUE)
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline)
Internal header for Thread.
VALUE rb_suppress_tracing(VALUE(*func)(VALUE), VALUE arg)
Internal header corresponding util.c.
#define rb_ary_new_from_args(...)
#define rb_sym_intern_ascii_cstr(...)
typedef long(ZCALLBACK *tell_file_func) OF((voidpf opaque
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
const char * ruby_node_name(int node)
#define rb_reserved_word(str, len)
Historical shim for <limits.h>.
#define MEMCPY(p1, p2, type, n)
#define ALLOCA_N(type, n)
#define MEMMOVE(p1, p2, type, n)
VALUE type(ANYARGS)
ANYARGS-ed function type.
void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
void rb_ast_dispose(rb_ast_t *ast)
rb_ast_t * rb_ast_new(void)
void rb_ast_add_mark_object(rb_ast_t *ast, VALUE obj)
NODE * rb_ast_newnode(rb_ast_t *ast, enum node_type type)
void rb_ast_add_local_table(rb_ast_t *ast, ID *buf)
void rb_ast_delete_node(rb_ast_t *ast, NODE *n)
#define NEW_VCALL(m, loc)
#define NEW_ITER(a, b, loc)
#define NEW_BLOCK(a, loc)
#define NEW_POSTEXE(b, loc)
#define NEW_CVASGN(v, val, loc)
#define NEW_DOT2(b, e, loc)
#define NEW_UNLESS(c, t, e, loc)
#define NEW_RETURN(s, loc)
#define NEW_ALIAS(n, o, loc)
#define NEW_MODULE(n, b, loc)
#define nd_first_lineno(n)
#define nd_set_type(n, t)
#define NEW_DOT3(b, e, loc)
#define NEW_BREAK(s, loc)
#define NEW_EVSTR(n, loc)
#define NEW_COLON2(c, i, loc)
#define NEW_IF(c, t, e, loc)
#define NEW_GASGN(v, val, loc)
#define NEW_BEGIN(b, loc)
#define NEW_OPT_ARG(i, v, loc)
#define NEW_SPLAT(a, loc)
#define NEW_IASGN(v, val, loc)
#define NEW_ARGS_AUX(r, b, loc)
#define NEW_CDECL(v, val, path, loc)
#define NEW_CALL(r, m, a, loc)
#define NEW_DASGN(v, val, loc)
#define NEW_ARGSPUSH(a, b, loc)
#define NEW_CASE(h, b, loc)
#define nd_first_column(n)
#define NEW_SUPER(a, loc)
#define nd_set_node_id(n, id)
#define NEW_LASGN(v, val, loc)
#define NEW_MATCH2(n1, n2, loc)
#define nd_set_last_loc(n, v)
#define NEW_OPCALL(r, m, a, loc)
#define NEW_SCOPE(a, b, loc)
#define NEW_MATCH3(r, n2, loc)
#define NEW_CASE2(b, loc)
#define NEW_UNTIL(c, b, n, loc)
#define NEW_OP_ASGN_OR(i, val, loc)
#define NEW_OP_ASGN1(p, id, a, loc)
#define NEW_SCLASS(r, b, loc)
#define nd_set_first_lineno(n, v)
#define NEW_DEFINED(e, loc)
#define NEW_CONST(v, loc)
#define NEW_FOR_MASGN(v, loc)
#define NODE_SPECIAL_REQUIRED_KEYWORD
#define NEW_RESCUE(b, res, e, loc)
#define NEW_YIELD(a, loc)
#define NEW_MASGN(l, r, loc)
#define NEW_BLOCK_PASS(b, loc)
#define NODE_SPECIAL_NO_REST_KEYWORD
#define NEW_FCALL(m, a, loc)
#define NEW_OP_ASGN_AND(i, val, loc)
#define NEW_CLASS(n, b, s, loc)
#define nd_set_line(n, l)
#define NEW_LAMBDA(a, b, loc)
#define NEW_WHILE(c, b, n, loc)
#define NODE_REQUIRED_KEYWORD_P(node)
#define NEW_FOR(i, b, loc)
#define NEW_RESBODY(a, ex, n, loc)
#define NEW_IN(c, t, e, loc)
#define NEW_CASE3(h, b, loc)
#define NEW_WHEN(c, t, e, loc)
#define nd_set_first_column(n, v)
#define NEW_OP_CDECL(v, op, val, loc)
#define NEW_UNDEF(i, loc)
#define NEW_COLON3(i, loc)
#define NEW_BACK_REF(n, loc)
#define NEW_VALIAS(n, o, loc)
#define nd_set_first_loc(n, v)
#define NEW_POSTARG(i, v, loc)
#define NEW_NODE(t, a0, a1, a2, loc)
#define NEW_ENSURE(b, en, loc)
#define NODE_SPECIAL_NO_NAME_REST
#define NODE_SPECIAL_EXCESSIVE_COMMA
#define NEW_KW_ARG(i, v, loc)
#define NEW_ARGSCAT(a, b, loc)
#define NEW_DASGN_CURR(v, val, loc)
#define NEW_ATTRASGN(r, m, a, loc)
#define NEW_OP_ASGN2(r, t, i, o, val, loc)
#define NEW_NTH_REF(n, loc)
ONIG_EXTERN int onig_foreach_name(OnigRegex reg, int(*func)(const OnigUChar *, const OnigUChar *, int, int *, OnigRegex, void *), void *arg)
#define HERETERM_LENGTH_BITS
void(* rb_magic_comment_setter_t)(struct parser_params *p, const char *name, const char *val)
long(* rb_magic_comment_length_t)(struct parser_params *p, const char *name, long len)
enum yytokentype yytoken_kind_t
#define RARRAY_AREF(a, i)
VALUE rb_ractor_stderr(void)
VALUE rb_ractor_stdout(void)
VALUE rb_ractor_make_shareable(VALUE obj)
#define RB_OBJ_WRITE(a, slot, b)
WB for new reference from ‘a’ to ‘b’.
#define RB_OBJ_WRITTEN(a, oldv, b)
WB for new reference from ‘a’ to ‘b’.
#define RE_OPTION_ENCODING(e)
enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int)
void rb_parser_fatal(struct parser_params *p, const char *fmt,...)
#define dispatch_delayed_token(p, t)
#define IS_LABEL_POSSIBLE()
#define has_delayed_token(p)
#define set_yylval_name(x)
#define DVARS_TERMINAL_P(tbl)
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
VALUE rb_mRubyVMFrozenCore
VALUE rb_parser_new(void)
#define RUBY_DTRACE_PARSE_HOOK(name)
#define rb_warn0L_experimental(l, fmt)
@ YYSYMBOL_74_escaped_vertical_tab_
@ YYSYMBOL_keyword_module
@ YYSYMBOL_excessed_comma
@ YYSYMBOL_73_escaped_carriage_return_
@ YYSYMBOL_block_args_tail
@ YYSYMBOL_opt_block_args_tail
@ YYSYMBOL_modifier_unless
@ YYSYMBOL_keyword_do_LAMBDA
@ YYSYMBOL_modifier_until
@ YYSYMBOL_modifier_rescue
@ YYSYMBOL_xstring_contents
@ YYSYMBOL_p_top_expr_body
@ YYSYMBOL_block_param_def
@ YYSYMBOL_keyword__LINE__
@ YYSYMBOL_simple_numeric
@ YYSYMBOL_tSTRING_CONTENT
@ YYSYMBOL_keyword_variable
@ YYSYMBOL_regexp_contents
@ YYSYMBOL_modifier_while
@ YYSYMBOL_keyword_unless
@ YYSYMBOL_keyword_do_cond
@ YYSYMBOL_cmd_brace_block
@ YYSYMBOL_keyword__ENCODING__
@ YYSYMBOL_string_content
@ YYSYMBOL_keyword_ensure
@ YYSYMBOL_keyword_rescue
@ YYSYMBOL_f_block_optarg
@ YYSYMBOL_opt_f_block_arg
@ YYSYMBOL_f_opt_paren_args
@ YYSYMBOL_keyword_defined
@ YYSYMBOL_keyword_return
@ YYSYMBOL_opt_block_param
@ YYSYMBOL_keyword__FILE__
@ YYSYMBOL_string_contents
@ YYSYMBOL_opt_paren_args
@ YYSYMBOL_keyword_do_block
@ YYSYMBOL_72_escaped_form_feed_
@ YYSYMBOL_71_escaped_horizontal_tab_
#define add_delayed_token(p, tok, end)
#define NUMPARAM_ID_P(id)
#define str_copy(_s, _p, _n)
#define SWITCH_BY_COND_TYPE(t, w, arg)
#define make_list(list, loc)
#define rb_warn1L(l, fmt, a)
void * rb_parser_malloc(struct parser_params *p, size_t size)
#define dispatch_heredoc_end(p)
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
VALUE rb_io_gets_internal(VALUE io)
rb_ast_t * rb_parser_compile_string(VALUE vparser, const char *f, VALUE s, int line)
void(* rb_magic_comment_setter_t)(struct parser_params *p, const char *name, const char *val)
#define NEW_STRTERM(func, term, paren)
#define YY_IGNORE_USELESS_CAST_END
#define literal_flush(p, ptr)
#define yyerror(yylloc, p, msg)
struct token_info token_info
void rb_parser_printf(struct parser_params *p, const char *fmt,...)
VALUE rb_parser_reg_compile(struct parser_params *p, VALUE str, int options)
YYLTYPE * rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc)
#define WARN_SPACE_CHAR(c, prefix)
#define YYLLOC_DEFAULT(Current, Rhs, N)
#define intern_cstr(n, l, en)
#define YY_REDUCE_PRINT(Rule)
rb_ast_t * rb_parser_compile_string_path(VALUE vparser, VALUE f, VALUE s, int line)
#define YY_CAST(Type, Val)
void rb_parser_set_options(VALUE vparser, int print, int loop, int chomp, int split)
#define vtable_alloc(prev)
VALUE rb_parser_set_context(VALUE vparser, const struct rb_iseq_struct *base, int main)
#define IS_lex_state_for(x, ls)
#define dispatch_scan_event(p, t)
#define NEW_QCALL(q, r, m, a, loc)
long(* rb_magic_comment_length_t)(struct parser_params *p, const char *name, long len)
#define warn_balanced(tok, op, syn)
#define RE_OPTION_ENCODING_NONE(o)
YYLTYPE * rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
#define set_yylval_literal(x)
#define set_yylval_str(x)
rb_ast_t * rb_parser_compile_generic(VALUE vparser, VALUE(*lex_gets)(VALUE, int), VALUE fname, VALUE input, int start)
#define RUBY_INIT_YYLLOC()
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
#define YY_INITIAL_VALUE(Value)
#define STR_NEW3(ptr, len, e, func)
VALUE rb_parser_encoding(VALUE vparser)
int rb_reg_fragment_setenc(struct parser_params *, VALUE, int)
#define yytnamerr(yyres, yystr)
VALUE rb_parser_get_debug_output(VALUE self)
int_least16_t yytype_int16
#define YY_STACK_PRINT(Bottom, Top)
#define rb_warning2(fmt, a, b)
#define STR_NEW(ptr, len)
#define lambda_beginning_p()
#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current)
#define YYSTACK_ALLOC_MAXIMUM
#define IS_lex_state_all(ls)
#define NUMPARAM_IDX_TO_ID(idx)
#define YY_IGNORE_USELESS_CAST_BEGIN
void rb_strterm_mark(VALUE obj)
#define rb_warn2(fmt, a, b)
uint_least16_t yytype_uint16
void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int)
#define ADD2HEAP(new, cnt, ptr)
#define SHAREABLE_BARE_EXPRESSION
#define mixed_escape(beg, enc1, enc2)
#define RE_OPTION_ENCODING_IDX(o)
#define vtable_pop(tbl, n)
#define set_yylval_noname()
size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr)
void * rb_parser_realloc(struct parser_params *p, void *ptr, size_t size)
VALUE rb_parser_set_debug_output(VALUE self, VALUE output)
#define set_yylval_node(x)
VALUE rb_parser_set_yydebug(VALUE self, VALUE flag)
VALUE rb_parser_end_seen_p(VALUE vparser)
#define RUBY_SET_YYLLOC(Current)
#define yytable_value_is_error(Yyn)
struct rb_strterm_literal_struct rb_strterm_literal_t
#define shareable_literal_constant_next(n)
#define HERETERM_LENGTH_MAX
YYLTYPE * rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc)
#define YY_ATTRIBUTE_UNUSED
void rb_parser_free(struct parser_params *p, void *ptr)
rb_ast_t * rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE file, int start)
#define NUMPARAM_ID_TO_IDX(id)
#define SET_LEX_STATE(ls)
#define RUBY_SET_YYLLOC_OF_NONE(Current)
#define vtable_add(tbl, id)
#define mixed_error(enc1, enc2)
#define rb_node_newnode(type, a1, a2, a3, loc)
#define IS_LABEL_SUFFIX(n)
#define nd_once_body(node)
#define yyerror1(loc, msg)
#define yypact_value_is_default(Yyn)
#define flush_string_content(p, enc)
uint_least8_t yytype_uint8
#define rb_warn3L(l, fmt, a, b, c)
#define rb_warning1(fmt, a)
void * rb_parser_calloc(struct parser_params *p, size_t nelem, size_t size)
const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20+31)/32]
VALUE rb_parser_lex_state_name(enum lex_state_e state)
#define IS_AFTER_OPERATOR()
#define RSTRING_GETMEM(str, ptrvar, lenvar)
#define StringValueCStr(v)
#define TypedData_Get_Struct(obj, type, data_type, sval)
@ RUBY_TYPED_FREE_IMMEDIATELY
#define TypedData_Make_Struct(klass, type, data_type, sval)
const char * rb_obj_classname(VALUE)
rb_atomic_t cnt[RUBY_NSIG]
VALUE rb_vsprintf(const char *, va_list)
VALUE rb_str_vcatf(VALUE, const char *, va_list)
VALUE rb_str_catf(VALUE, const char *,...)
VALUE rb_sprintf(const char *,...)
#define st_init_numtable_with_size
#define st_is_member(table, key)
size_t strlen(const char *)
rb_code_location_t nd_loc
BITFIELD(enum shareability, shareable_constant_value, 2)
struct local_vars::@65 numparam
VALUE(* gets)(struct parser_params *, VALUE)
const char * ruby_sourcefile
unsigned int ruby__end__seen
VALUE(* call)(VALUE, int)
unsigned int command_start
struct parser_params::@66 lex
union parser_params::@66::@67 gets_
const struct rb_iseq_struct * parent_iseq
unsigned int token_info_enabled
VALUE ruby_sourcefile_string
struct local_vars * lvtbl
unsigned int ruby2_keywords
rb_code_position_t beg_pos
rb_code_position_t end_pos
struct rb_imemo_tmpbuf_struct * next
union rb_strterm_literal_struct::@68 u0
union rb_strterm_literal_struct::@71 u3
union rb_strterm_literal_struct::@70 u2
union rb_strterm_literal_struct::@69 u1
rb_strterm_literal_t literal
union rb_strterm_struct::@72 u
rb_strterm_heredoc_t heredoc
struct parser_params * parser
#define is_identchar(p, e, enc)
int rb_enc_symname_type(const char *name, long len, rb_encoding *enc, unsigned int allowed_attrset)
#define STATIC_ID2SYM(id)
#define is_attrset_id(id)
struct rb_strterm_struct * strterm
const struct vtable * vars
void error(const char *msg)
if((ID)(DISPID) nameid !=nameid)
void rb_write_error_str(VALUE mesg)
int def(FILE *source, FILE *dest, int level)
#define ZALLOC(strm, items, size)