51#define YYBISON_VERSION "3.5.1"
54#define YYSKELETON_NAME "yacc.c"
73# error needs pure parser
76#define YYERROR_VERBOSE 1
77#define YYSTACK_USE_ALLOCA 0
78#define YYLTYPE rb_code_location_t
79#define YYLTYPE_IS_DECLARED 1
94#ifndef WARN_PAST_SCOPE
95# define WARN_PAST_SCOPE 0
100#define yydebug (p->debug)
102#define YYMALLOC(size) rb_parser_malloc(p, (size))
103#define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
104#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
105#define YYFREE(ptr) rb_parser_free(p, (ptr))
106#define YYFPRINTF rb_parser_printf
107#define YYPRINT(out, tok, val) parser_token_value_print(p, (tok), &(val))
108#define YY_LOCATION_PRINT(File, loc) \
109 rb_parser_printf(p, "%d.%d-%d.%d", \
110 (loc).beg_pos.lineno, (loc).beg_pos.column,\
111 (loc).end_pos.lineno, (loc).end_pos.column)
112#define YYLLOC_DEFAULT(Current, Rhs, N) \
116 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
117 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
121 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
122 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
126#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
127 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
128#define RUBY_SET_YYLLOC_OF_NONE(Current) \
129 rb_parser_set_location_of_none(p, &(Current))
130#define RUBY_SET_YYLLOC(Current) \
131 rb_parser_set_location(p, &(Current))
132#define RUBY_INIT_YYLLOC() \
134 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
135 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
156#define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
176#define IS_lex_state_for(x, ls) ((x) & (ls))
177#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
178#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
179#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
181# define SET_LEX_STATE(ls) \
184 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
185 (enum lex_state_e)(ls)))
191# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
192# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
193# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
194# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
195# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
199#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
200#define COND_POP() BITSTACK_POP(cond_stack)
201#define COND_P() BITSTACK_SET_P(cond_stack)
202#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
206#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
207#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
208#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
209#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
239#define NUMPARAM_ID_P(id) numparam_id_p(id)
240#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
241#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
251#define DVARS_INHERIT ((void*)1)
252#define DVARS_TOPSCOPE NULL
253#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
345 unsigned int past_scope_enabled: 1;
375 VALUE parsing_thread;
379#define intern_cstr(n,l,en) rb_intern3(n,l,en)
381#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
382#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
383#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
384#define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
385#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
418#define yyerror0(msg) parser_yyerror(p, NULL, (msg))
419#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
420#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
421#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
424#define compile_for_eval (0)
426#define compile_for_eval (p->parent_iseq != 0)
429#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
431#define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
432#define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
433#define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
435#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
463#define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
477set_line_body(
NODE *body,
int line)
487#define yyparse ruby_yyparse
491#define new_nil(loc) NEW_NIL(loc)
502static NODE *remove_begin_all(
NODE*);
503#define value_expr(node) value_expr_gen(p, (node) = remove_begin(node))
526static bool args_info_empty_p(
struct rb_args_info *args);
571#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
591#define get_id(id) (id)
592#define get_value(val) (val)
593#define get_num(num) (num)
595#define NODE_RIPPER NODE_CDECL
597static inline int ripper_is_node_yylval(
VALUE n);
602 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
603 add_mark_object(p, b);
604 add_mark_object(p, c);
609ripper_is_node_yylval(
VALUE n)
614#define value_expr(node) ((void)(node))
615#define remove_begin(node) (node)
616#define void_stmts(p,x) (x)
617#define rb_dvar_defined(id, base) 0
618#define rb_local_defined(id, base) 0
620#define get_id(id) ripper_get_id(id)
622#define get_value(val) ripper_get_value(val)
623#define get_num(num) (int)get_id(num)
627#define method_cond(p,node,loc) (node)
628#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
629#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
630#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
631#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
633#define new_nil(loc) Qnil
681#define dyna_var(p, id) local_var(p, id)
692# define METHOD_NOT idNOT
694# define METHOD_NOT '!'
697#define idFWD_REST '*'
699#define idFWD_KWREST idPow
701#define idFWD_KWREST 0
703#define idFWD_BLOCK '&'
705#define RE_OPTION_ONCE (1<<16)
706#define RE_OPTION_ENCODING_SHIFT 8
707#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
708#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
709#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
710#define RE_OPTION_MASK 0xff
711#define RE_OPTION_ARG_ENCODING_NONE 32
733#define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
740#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
742# define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
744# define HERETERM_LENGTH_MAX UINT_MAX
747#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
757#define STRTERM_HEREDOC IMEMO_FL_USER0
779#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
782#define TOKEN2ID(tok) ( \
783 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
784 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
785 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
786 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
787 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
788 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
789 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
794#define RIPPER_VERSION "0.1.0"
796static inline VALUE intern_sym(
const char *
name);
810#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
811#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
812#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
813#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
814#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
815#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
816#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))
818#define yyparse ripper_yyparse
820#define ID2VAL(id) STATIC_ID2SYM(id)
821#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
822#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
824#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
825 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
827#define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
834 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
841 add_mark_object(p, kw_args);
842 add_mark_object(p, kw_rest_arg);
843 add_mark_object(p, block);
866 if (!
NIL_P(pre_arg)) {
892 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
901#define new_hash(p,h,l) rb_ary_new_from_args(0)
914 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
922 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
929 add_mark_object(p, kw_args);
930 add_mark_object(p, kw_rest_arg);
934#define new_defined(p,expr,loc) dispatch1(defined, (expr))
939#define ID2VAL(id) (id)
940#define TOKEN2VAL(t) ID2VAL(t)
941#define KWD2EID(t, v) keyword_##t
947# define ifndef_ripper(x) (x)
951# define ifndef_ripper(x)
954# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
955# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
956# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
957# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
958# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
959# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
960# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
961# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
962# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
963# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
964# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
965# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
966# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
967# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
968# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
969# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
970# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
971# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
972# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
973# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
975static ID id_warn, id_warning, id_gets, id_assoc;
976# define WARN_S_L(s,l) STR_NEW(s,l)
977# define WARN_S(s) STR_NEW2(s)
978# define WARN_I(i) INT2NUM(i)
979# define WARN_ID(i) rb_id2str(i)
980# define WARN_IVAL(i) i
982# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
983# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
984# ifdef HAVE_VA_ARGS_MACRO
985# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
987# define WARN_CALL rb_funcall
989# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
990# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
991# ifdef HAVE_VA_ARGS_MACRO
992# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
994# define WARNING_CALL rb_funcall
997# define compile_error ripper_compile_error
999# define WARN_S_L(s,l) s
1002# define WARN_ID(i) rb_id2name(i)
1003# define WARN_IVAL(i) NUM2INT(i)
1004# define PRIsWARN PRIsVALUE
1005# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1006# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1007# define WARN_CALL rb_compile_warn
1008# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1009# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1010# define WARNING_CALL rb_compile_warning
1012# define compile_error parser_compile_error
1020#define WARN_EOL(tok) \
1021 (looking_at_eol_p(p) ? \
1022 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1026#line 1027 "ripper.c"
1030# define YY_CAST(Type, Val) static_cast<Type> (Val)
1031# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1033# define YY_CAST(Type, Val) ((Type) (Val))
1034# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1038# if defined __cplusplus
1039# if 201103L <= __cplusplus
1040# define YY_NULLPTR nullptr
1042# define YY_NULLPTR 0
1045# define YY_NULLPTR ((void*)0)
1050#ifdef YYERROR_VERBOSE
1051# undef YYERROR_VERBOSE
1052# define YYERROR_VERBOSE 1
1054# define YYERROR_VERBOSE 1
1197#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1210#line 1209 "ripper.c"
1214# define YYSTYPE_IS_TRIVIAL 1
1215# define YYSTYPE_IS_DECLARED 1
1219#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1228# define YYLTYPE_IS_DECLARED 1
1229# define YYLTYPE_IS_TRIVIAL 1
1248#ifndef __PTRDIFF_MAX__
1250# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1261#ifdef __INT_LEAST8_MAX__
1263#elif defined YY_STDINT_H
1269#ifdef __INT_LEAST16_MAX__
1271#elif defined YY_STDINT_H
1277#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1279#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1280 && UINT_LEAST8_MAX <= INT_MAX)
1282#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1288#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1290#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1291 && UINT_LEAST16_MAX <= INT_MAX)
1293#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1300# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1301# define YYPTRDIFF_T __PTRDIFF_TYPE__
1302# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1303# elif defined PTRDIFF_MAX
1307# define YYPTRDIFF_T ptrdiff_t
1308# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1310# define YYPTRDIFF_T long
1311# define YYPTRDIFF_MAXIMUM LONG_MAX
1316# ifdef __SIZE_TYPE__
1317# define YYSIZE_T __SIZE_TYPE__
1318# elif defined size_t
1319# define YYSIZE_T size_t
1320# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1322# define YYSIZE_T size_t
1324# define YYSIZE_T unsigned
1328#define YYSIZE_MAXIMUM \
1329 YY_CAST (YYPTRDIFF_T, \
1330 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1331 ? YYPTRDIFF_MAXIMUM \
1332 : YY_CAST (YYSIZE_T, -1)))
1334#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1343# if defined YYENABLE_NLS && YYENABLE_NLS
1345# include <libintl.h>
1346# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1350# define YY_(Msgid) Msgid
1354#ifndef YY_ATTRIBUTE_PURE
1355# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1356# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1358# define YY_ATTRIBUTE_PURE
1362#ifndef YY_ATTRIBUTE_UNUSED
1363# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1364# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1366# define YY_ATTRIBUTE_UNUSED
1371#if ! defined lint || defined __GNUC__
1372# define YYUSE(E) ((void) (E))
1377#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1379# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1380 _Pragma ("GCC diagnostic push") \
1381 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1382 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1383# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1384 _Pragma ("GCC diagnostic pop")
1386# define YY_INITIAL_VALUE(Value) Value
1388#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1389# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1390# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1392#ifndef YY_INITIAL_VALUE
1393# define YY_INITIAL_VALUE(Value)
1396#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1397# define YY_IGNORE_USELESS_CAST_BEGIN \
1398 _Pragma ("GCC diagnostic push") \
1399 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1400# define YY_IGNORE_USELESS_CAST_END \
1401 _Pragma ("GCC diagnostic pop")
1403#ifndef YY_IGNORE_USELESS_CAST_BEGIN
1404# define YY_IGNORE_USELESS_CAST_BEGIN
1405# define YY_IGNORE_USELESS_CAST_END
1409#define YY_ASSERT(E) ((void) (0 && (E)))
1411#if ! defined yyoverflow || YYERROR_VERBOSE
1415# ifdef YYSTACK_USE_ALLOCA
1416# if YYSTACK_USE_ALLOCA
1418# define YYSTACK_ALLOC __builtin_alloca
1419# elif defined __BUILTIN_VA_ARG_INCR
1422# define YYSTACK_ALLOC __alloca
1423# elif defined _MSC_VER
1425# define alloca _alloca
1427# define YYSTACK_ALLOC alloca
1428# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1431# ifndef EXIT_SUCCESS
1432# define EXIT_SUCCESS 0
1439# ifdef YYSTACK_ALLOC
1441# define YYSTACK_FREE(Ptr) do { ; } while (0)
1442# ifndef YYSTACK_ALLOC_MAXIMUM
1447# define YYSTACK_ALLOC_MAXIMUM 4032
1450# define YYSTACK_ALLOC YYMALLOC
1451# define YYSTACK_FREE YYFREE
1452# ifndef YYSTACK_ALLOC_MAXIMUM
1453# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1455# if (defined __cplusplus && ! defined EXIT_SUCCESS \
1456 && ! ((defined YYMALLOC || defined malloc) \
1457 && (defined YYFREE || defined free)))
1459# ifndef EXIT_SUCCESS
1460# define EXIT_SUCCESS 0
1464# define YYMALLOC malloc
1465# if ! defined malloc && ! defined EXIT_SUCCESS
1471# if ! defined free && ! defined EXIT_SUCCESS
1479#if (! defined yyoverflow \
1480 && (! defined __cplusplus \
1481 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
1482 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1493# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1497# define YYSTACK_BYTES(N) \
1498 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
1499 + YYSIZEOF (YYLTYPE)) \
1500 + 2 * YYSTACK_GAP_MAXIMUM)
1502# define YYCOPY_NEEDED 1
1509# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1512 YYPTRDIFF_T yynewbytes; \
1513 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1514 Stack = &yyptr->Stack_alloc; \
1515 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1516 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1522#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1526# if defined __GNUC__ && 1 < __GNUC__
1527# define YYCOPY(Dst, Src, Count) \
1528 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1530# define YYCOPY(Dst, Src, Count) \
1534 for (yyi = 0; yyi < (Count); yyi++) \
1535 (Dst)[yyi] = (Src)[yyi]; \
1548#define YYNTOKENS 154
1554#define YYNSTATES 1251
1557#define YYMAXUTOK 353
1562#define YYTRANSLATE(YYX) \
1563 (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1569 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
1570 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
1571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1572 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
1573 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
1574 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
1575 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
1576 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1577 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1578 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
1579 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1581 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
1582 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
1583 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
1584 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1585 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1586 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1587 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1588 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1589 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1590 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1591 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1592 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1593 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1594 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1595 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1596 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1597 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1598 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1599 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1600 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1601 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
1602 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1603 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1611 0, 1177, 1177, 1177, 1203, 1209, 1216, 1223, 1230, 1236,
1612 1237, 1243, 1256, 1254, 1265, 1276, 1282, 1289, 1296, 1303,
1613 1309, 1314, 1313, 1323, 1323, 1330, 1337, 1347, 1355, 1362,
1614 1370, 1378, 1390, 1402, 1412, 1426, 1427, 1435, 1443, 1452,
1615 1459, 1462, 1469, 1476, 1484, 1491, 1498, 1506, 1513, 1523,
1616 1528, 1537, 1540, 1541, 1545, 1549, 1553, 1558, 1565, 1567,
1617 1557, 1575, 1578, 1585, 1585, 1585, 1591, 1592, 1595, 1596,
1618 1605, 1615, 1625, 1634, 1645, 1652, 1659, 1666, 1673, 1681,
1619 1689, 1696, 1703, 1712, 1713, 1722, 1723, 1732, 1739, 1746,
1620 1753, 1760, 1767, 1774, 1781, 1788, 1795, 1804, 1805, 1814,
1621 1821, 1830, 1837, 1846, 1853, 1860, 1867, 1877, 1884, 1894,
1622 1901, 1908, 1918, 1925, 1932, 1939, 1946, 1953, 1960, 1967,
1623 1974, 1984, 1991, 1994, 2001, 2008, 2017, 2018, 2019, 2020,
1624 2025, 2028, 2035, 2038, 2045, 2045, 2055, 2056, 2057, 2058,
1625 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068,
1626 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078,
1627 2079, 2080, 2081, 2082, 2083, 2084, 2087, 2087, 2087, 2088,
1628 2088, 2089, 2089, 2089, 2090, 2090, 2090, 2090, 2091, 2091,
1629 2091, 2091, 2092, 2092, 2092, 2093, 2093, 2093, 2093, 2094,
1630 2094, 2094, 2094, 2095, 2095, 2095, 2095, 2096, 2096, 2096,
1631 2096, 2097, 2097, 2097, 2097, 2098, 2098, 2101, 2108, 2115,
1632 2123, 2131, 2139, 2147, 2155, 2162, 2170, 2179, 2188, 2200,
1633 2212, 2224, 2236, 2240, 2244, 2248, 2252, 2256, 2260, 2264,
1634 2268, 2272, 2276, 2280, 2284, 2288, 2289, 2293, 2297, 2301,
1635 2305, 2309, 2313, 2317, 2321, 2325, 2329, 2333, 2333, 2338,
1636 2347, 2353, 2354, 2355, 2356, 2359, 2363, 2370, 2377, 2378,
1637 2382, 2389, 2398, 2403, 2414, 2421, 2447, 2476, 2477, 2480,
1638 2481, 2482, 2486, 2493, 2502, 2510, 2517, 2525, 2533, 2537,
1639 2537, 2574, 2583, 2587, 2593, 2600, 2607, 2614, 2623, 2624,
1640 2627, 2634, 2641, 2650, 2651, 2652, 2653, 2654, 2655, 2656,
1641 2657, 2658, 2659, 2660, 2668, 2667, 2682, 2682, 2689, 2689,
1642 2697, 2705, 2712, 2719, 2726, 2734, 2741, 2748, 2755, 2762,
1643 2762, 2767, 2771, 2775, 2782, 2783, 2792, 2791, 2802, 2813,
1644 2824, 2834, 2845, 2844, 2861, 2860, 2875, 2884, 2929, 2928,
1645 2952, 2951, 2974, 2973, 2997, 3003, 2996, 3023, 3024, 3023,
1646 3049, 3056, 3063, 3070, 3079, 3086, 3092, 3109, 3115, 3121,
1647 3127, 3133, 3139, 3145, 3151, 3157, 3163, 3169, 3175, 3181,
1648 3187, 3202, 3209, 3215, 3222, 3223, 3224, 3227, 3228, 3231,
1649 3232, 3244, 3245, 3254, 3255, 3258, 3266, 3275, 3282, 3291,
1650 3298, 3305, 3312, 3319, 3328, 3336, 3345, 3349, 3353, 3357,
1651 3361, 3367, 3372, 3377, 3381, 3385, 3389, 3393, 3397, 3405,
1652 3409, 3413, 3417, 3421, 3425, 3429, 3433, 3437, 3443, 3444,
1653 3450, 3459, 3471, 3475, 3484, 3486, 3490, 3495, 3501, 3504,
1654 3508, 3512, 3516, 3501, 3540, 3548, 3558, 3563, 3569, 3579,
1655 3593, 3600, 3607, 3616, 3625, 3633, 3641, 3648, 3656, 3664,
1656 3671, 3678, 3691, 3699, 3709, 3710, 3714, 3709, 3731, 3732,
1657 3736, 3731, 3755, 3763, 3770, 3778, 3787, 3799, 3800, 3804,
1658 3810, 3811, 3813, 3814, 3815, 3803, 3828, 3829, 3832, 3833,
1659 3841, 3851, 3852, 3857, 3865, 3869, 3875, 3878, 3887, 3890,
1660 3897, 3900, 3901, 3903, 3904, 3913, 3922, 3927, 3936, 3945,
1661 3950, 3950, 3955, 3961, 3960, 3972, 3977, 3977, 3984, 3993,
1662 3997, 4006, 4010, 4014, 4018, 4022, 4025, 4029, 4038, 4042,
1663 4046, 4050, 4056, 4057, 4066, 4075, 4079, 4083, 4087, 4091,
1664 4095, 4101, 4103, 4112, 4120, 4134, 4135, 4158, 4162, 4168,
1665 4174, 4175, 4184, 4193, 4205, 4217, 4218, 4219, 4220, 4232,
1666 4246, 4247, 4248, 4249, 4250, 4251, 4252, 4253, 4254, 4262,
1667 4261, 4274, 4284, 4297, 4304, 4311, 4320, 4332, 4335, 4342,
1668 4349, 4352, 4356, 4359, 4366, 4369, 4370, 4373, 4390, 4391,
1669 4392, 4401, 4411, 4420, 4426, 4436, 4442, 4451, 4453, 4462,
1670 4472, 4478, 4487, 4496, 4506, 4512, 4522, 4528, 4538, 4548,
1671 4567, 4573, 4583, 4593, 4634, 4637, 4636, 4653, 4657, 4662,
1672 4666, 4670, 4652, 4691, 4698, 4705, 4712, 4715, 4716, 4719,
1673 4729, 4730, 4731, 4732, 4735, 4745, 4746, 4756, 4757, 4758,
1674 4759, 4762, 4763, 4764, 4765, 4766, 4769, 4770, 4771, 4772,
1675 4773, 4774, 4775, 4778, 4791, 4800, 4807, 4816, 4817, 4821,
1676 4820, 4830, 4838, 4847, 4862, 4877, 4877, 4891, 4895, 4899,
1677 4903, 4907, 4913, 4918, 4923, 4927, 4931, 4935, 4939, 4943,
1678 4947, 4951, 4955, 4959, 4963, 4967, 4971, 4975, 4980, 4986,
1679 4995, 5003, 5011, 5019, 5029, 5030, 5038, 5047, 5055, 5076,
1680 5078, 5091, 5101, 5109, 5119, 5126, 5135, 5142, 5152, 5159,
1681 5168, 5169, 5172, 5180, 5188, 5198, 5208, 5218, 5225, 5234,
1682 5241, 5250, 5251, 5254, 5262, 5272, 5273, 5276, 5286, 5290,
1683 5296, 5301, 5301, 5325, 5326, 5335, 5337, 5360, 5371, 5378,
1684 5386, 5405, 5406, 5407, 5410, 5411, 5412, 5413, 5416, 5417,
1685 5418, 5421, 5422, 5425, 5426, 5429, 5430, 5433, 5434, 5437,
1686 5438, 5441, 5444, 5447, 5450, 5451, 5452, 5455, 5456, 5459,
1691#if YYDEBUG || YYERROR_VERBOSE || 1
1694static const char *
const yytname[] =
1696 "\"end-of-input\"",
"error",
"$undefined",
"\"`class'\"",
1697 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
1698 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
1699 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
1700 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
1701 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
1702 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
1703 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
1704 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
1705 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
1706 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
1707 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
1708 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
1709 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
1710 "\"constant\"",
"\"class variable\"",
"tLABEL",
"\"integer literal\"",
1711 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
1712 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
1713 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
1714 "\"escaped space\"",
"\"escaped horizontal tab\"",
1715 "\"escaped form feed\"",
"\"escaped carriage return\"",
1716 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
1717 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
1718 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
1719 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
1720 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
1721 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
1722 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
1723 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
1724 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
1725 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
1726 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
1727 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
1728 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
1729 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
1730 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
1731 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
1732 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
1733 "expr_value",
"expr_value_do",
"$@8",
"$@9",
"command_call",
1734 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
1735 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
1736 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
1737 "$@10",
"op",
"reswords",
"arg",
"$@11",
"relop",
"rel_expr",
1738 "arg_value",
"aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
1739 "opt_call_args",
"call_args",
"command_args",
"$@12",
"block_arg",
1740 "opt_block_arg",
"args",
"mrhs_arg",
"mrhs",
"primary",
"$@13",
"$@14",
1741 "$@15",
"$@16",
"$@17",
"@18",
"@19",
"$@20",
"@21",
"$@22",
"@23",
1742 "@24",
"@25",
"@26",
"primary_value",
"k_begin",
"k_if",
"k_unless",
1743 "k_while",
"k_until",
"k_case",
"k_for",
"k_class",
"k_module",
"k_def",
1744 "k_do",
"k_do_block",
"k_rescue",
"k_ensure",
"k_when",
"k_else",
1745 "k_elsif",
"k_end",
"k_return",
"then",
"do",
"if_tail",
"opt_else",
1746 "for_var",
"f_marg",
"f_marg_list",
"f_margs",
"f_rest_marg",
1747 "block_args_tail",
"opt_block_args_tail",
"block_param",
1748 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
1749 "lambda",
"@27",
"@28",
"@29",
"@30",
"$@31",
"f_larglist",
1750 "lambda_body",
"do_block",
"block_call",
"method_call",
"brace_block",
1751 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
1752 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"@40",
1753 "$@41",
"$@42",
"$@43",
"p_cases",
"p_top_expr",
"p_top_expr_body",
1754 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
1755 "@44",
"@45",
"@46",
"p_args",
"p_args_head",
"p_args_tail",
1756 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
1757 "p_kwrest",
"p_kwnorest",
"p_value",
"p_primitive",
"$@47",
"p_variable",
1758 "p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
1759 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
1760 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
1761 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
1762 "xstring_contents",
"regexp_contents",
"string_content",
"@48",
"$@49",
1763 "@50",
"@51",
"@52",
"@53",
"string_dvar",
"symbol",
"ssym",
"sym",
1764 "dsym",
"numeric",
"simple_numeric",
"user_variable",
"keyword_variable",
1765 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@54",
"f_arglist",
1766 "@55",
"args_tail",
"opt_args_tail",
"f_args",
"args_forward",
1767 "f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
1768 "f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
"f_kwarg",
1769 "kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
"f_block_opt",
1770 "f_block_optarg",
"f_optarg",
"restarg_mark",
"f_rest_arg",
1771 "blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
"singleton",
"$@56",
1772 "assoc_list",
"assocs",
"assoc",
"operation",
"operation2",
"operation3",
1773 "dot_or_colon",
"call_op",
"call_op2",
"opt_terms",
"opt_nl",
"rparen",
1774 "rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none",
YY_NULLPTR
1783 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1784 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1785 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1786 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1787 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1788 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1789 315, 316, 317, 318, 319, 320, 321, 322, 46, 92,
1790 323, 9, 12, 13, 11, 132, 133, 134, 135, 140,
1791 141, 142, 139, 138, 148, 149, 143, 144, 128, 129,
1792 130, 131, 145, 146, 136, 137, 150, 147, 324, 325,
1793 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
1794 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
1795 346, 347, 348, 349, 350, 351, 61, 63, 58, 62,
1796 60, 124, 94, 38, 43, 45, 42, 47, 37, 352,
1797 33, 126, 353, 123, 125, 91, 44, 96, 40, 41,
1802#define YYPACT_NINF (-1040)
1804#define yypact_value_is_default(Yyn) \
1805 ((Yyn) == YYPACT_NINF)
1807#define YYTABLE_NINF (-762)
1809#define yytable_value_is_error(Yyn) \
1810 ((Yyn) == YYTABLE_NINF)
1816 -1040, 114, 3745, -1040, 9167, -1040, -1040, -1040, 8625, -1040,
1817 -1040, -1040, -1040, -1040, -1040, -1040, 9293, 9293, -1040, -1040,
1818 -1040, 5085, 4644, -1040, -1040, -1040, -1040, 384, 8480, -27,
1819 236, 280, -1040, -1040, -1040, 3909, 4791, -1040, -1040, 4056,
1820 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 11057, 11057,
1821 11057, 11057, 124, 6680, 9419, 9923, 10301, 8909, -1040, 8335,
1822 -1040, -1040, -1040, 282, 316, 388, 413, 996, 11183, 11057,
1823 -1040, 799, -1040, 1065, -1040, 374, -1040, -1040, 367, 549,
1824 495, -1040, 485, 11435, -1040, 520, 1591, 398, 65, 348,
1825 -1040, 11309, 11309, -1040, -1040, 7662, 11557, 11679, 11801, 8189,
1826 9293, 424, 95, -1040, -1040, 544, -1040, -1040, -1040, -1040,
1827 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 323, 435,
1828 -1040, 570, 518, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1829 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1830 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1831 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1832 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1833 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1834 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1835 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1836 -1040, -1040, 547, -1040, -1040, -1040, 580, 11057, 634, 6831,
1837 11057, 11057, 11057, -1040, 11057, -1040, 613, 4181, 679, -1040,
1838 -1040, 640, 496, 353, 453, 696, 553, 655, -1040, -1040,
1839 7536, -1040, 9293, 9545, -1040, -1040, 7788, -1040, 11309, 863,
1840 -1040, 671, 6982, -1040, 7133, -1040, -1040, 702, 708, 367,
1841 -1040, 531, -1040, 759, 4328, 4328, 551, 9419, -1040, 6680,
1842 713, 799, -1040, 1065, -27, 745, -1040, 1065, -27, 750,
1843 -33, 38, -1040, 679, 765, 38, -1040, -27, 838, 996,
1844 11923, 769, -1040, 536, 562, 605, 659, -1040, -1040, -1040,
1845 -1040, -1040, 600, -1040, 716, 911, 438, -1040, -1040, -1040,
1846 -1040, 843, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 7914,
1847 11309, 11309, 11309, 11309, 9419, 11309, 11309, -1040, -1040, -1040,
1848 824, -1040, -1040, -1040, -1040, -1040, 10427, -1040, 6680, 9038,
1849 794, 10427, -1040, 11057, 11057, 11057, 11057, 11057, -1040, -1040,
1850 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, -1040,
1851 -1040, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057,
1852 11057, -1040, -1040, 12386, 9293, 12476, 5824, 374, 106, 106,
1853 7284, 11309, 7284, 799, -1040, 798, 885, -1040, -1040, 662,
1854 928, 117, 127, 141, 439, 670, 11309, 880, -1040, 832,
1855 701, -1040, -1040, -1040, -1040, 34, 78, 415, 543, 558,
1856 612, 626, 632, 720, -1040, -1040, -1040, 732, -1040, -1040,
1857 -1040, 13736, -1040, -1040, 11183, 11183, -1040, -1040, 585, -1040,
1858 -1040, -1040, 777, 11057, 11057, 9671, -1040, -1040, 12566, 9293,
1859 12656, 11057, 11057, 10049, -1040, -27, 826, -1040, -1040, 11057,
1860 -27, -1040, 836, -27, 842, -1040, 133, -1040, -1040, -1040,
1861 -1040, -1040, 8625, -1040, 11057, 834, 847, 12566, 12656, 11057,
1862 1065, 236, -27, -1040, -1040, 8040, 846, -27, -1040, -1040,
1863 10175, -1040, -1040, 10301, -1040, -1040, -1040, 671, 731, -1040,
1864 -1040, 850, 11923, 12746, 9293, 12836, -1040, -1040, -1040, -1040,
1865 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 931, 59,
1866 960, 340, 11057, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1867 -1040, -1040, 851, -1040, -1040, -1040, 990, -1040, 990, 11057,
1868 -1040, 855, 857, 963, -1040, -27, 11923, 858, -1040, -1040,
1869 -1040, 966, 887, 3887, -1040, -1040, -1040, 737, 663, -1040,
1870 759, 4622, 4622, 4622, 4622, 4769, 4475, 4622, 4622, 4328,
1871 4328, 849, 849, 3200, 1162, 1162, 886, 436, 436, 759,
1872 759, 759, 1842, 1842, 5232, 4203, 5526, 4350, -1040, 708,
1873 -1040, -27, 866, 588, -1040, 666, -1040, -1040, 4938, 990,
1874 1010, -1040, 5975, 1012, 6428, 990, 54, 990, 1003, 1018,
1875 144, 12926, 9293, 13016, -1040, 374, -1040, 731, -1040, -1040,
1876 -1040, 13106, 9293, 13196, 5824, 11309, -1040, -1040, -1040, -1040,
1877 -1040, -1040, 3529, -1040, 4034, -1040, -1040, -1040, 8625, 11057,
1878 -1040, 11057, 679, -1040, 655, 3369, 4497, -27, 688, 722,
1879 -1040, -1040, -1040, -1040, 9797, -1040, 10049, -1040, -1040, 11309,
1880 4181, -1040, -1040, 708, 708, -1040, -1040, 345, -1040, -1040,
1881 38, 11923, 850, 37, 470, -27, 271, 349, -1040, -1040,
1882 1007, -1040, 487, -1040, 877, -1040, -1040, 491, 884, -1040,
1883 759, -1040, -1040, 893, -1040, -1040, -1040, -1040, 895, 10553,
1884 9419, -1040, 850, 11923, 9419, 11183, 11057, 13286, 9293, 13376,
1885 12319, 918, 11183, 11183, -1040, 824, 889, 727, 9671, 11183,
1886 11183, -1040, -1040, 824, -1040, -1040, -1040, 10679, 738, -1040,
1887 574, -1040, 1033, -1040, -1040, -1040, -1040, -1040, -1040, 1018,
1888 990, -1040, 10805, 990, 72, 235, -27, 156, 312, 7284,
1889 799, 11309, 5824, 897, 470, -1040, -27, 990, 133, 921,
1890 8770, 95, 549, -1040, -1040, -1040, -1040, 11057, 11057, 733,
1891 11057, 11057, -27, 920, 133, -1040, -1040, 350, -1040, -1040,
1892 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1893 939, -1040, 939, 11057, 927, -1040, 850, -1040, 4181, 5379,
1894 5673, -27, 753, 786, -1040, -1040, 2945, 2945, 881, -1040,
1895 356, 631, -1040, 1024, 978, -1040, 952, -1040, -1040, 742,
1896 -1040, -1040, 341, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
1897 -1040, -1040, 11057, -1040, -1040, -1040, -1040, -1040, -1040, 11183,
1898 -1040, -1040, -1040, -1040, -1040, 855, -1040, 989, -1040, -1040,
1899 -1040, 7284, -1040, -1040, -1040, -1040, 7284, 11309, 990, -1040,
1900 -1040, 990, -1040, -1040, 990, -1040, 11057, -1040, 26, -1040,
1901 332, 990, 5824, 799, 990, -1040, -1040, -1040, 2196, 5824,
1902 2402, -1040, -1040, -1040, 11057, -1040, 10049, -1040, 1834, -1040,
1903 1556, 7133, -1040, -1040, 5824, 944, 787, -1040, -1040, -1040,
1904 -1040, 12319, 12200, -1040, 577, 949, -1040, -1040, -1040, 1043,
1905 -1040, 12319, 2945, 2945, 881, 356, 790, 3608, 3608, 4181,
1906 -1040, -1040, 12045, 106, -1040, -1040, 6554, -1040, 106, -1040,
1907 -1040, -1040, -1040, -1040, 10931, 6126, -1040, 990, -1040, -1040,
1908 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 1151, -1040,
1909 -1040, -1040, -1040, -1040, -1040, -27, -27, -1040, -1040, 973,
1910 -1040, 954, 11057, -1040, 956, 546, 965, 965, -1040, 967,
1911 1049, 968, 1066, -1040, 990, 799, 974, 921, 2402, -1040,
1912 -1040, -1040, -1040, -27, 991, 995, 979, 12167, -1040, 981,
1913 965, 965, -1040, 982, 992, -1040, 999, -1040, -1040, 3,
1914 264, 355, -27, 12286, -1040, 1001, -1040, -1040, -27, 1011,
1915 -1040, 12319, -1040, -1040, 744, -1040, -1040, -1040, -1040, -1040,
1916 -1040, -1040, -1040, -1040, -1040, -27, -27, -27, -27, 1068,
1917 -1040, 743, 198, 203, 213, 5824, 1133, 5975, 3608, 11057,
1918 -1040, 955, -1040, 1151, 1079, -1040, 1022, -27, 1025, -1040,
1919 -1040, -1040, 11057, 2196, -1040, -1040, 714, -1040, -1040, -1040,
1920 -1040, 243, -1040, -1040, 2402, -1040, -1040, 1417, -1040, -1040,
1921 -1040, -1040, 2402, 5824, -27, 291, 7410, 1027, -1040, 12167,
1922 2402, -1040, 1108, 748, 714, -1040, -1040, -1040, 2402, -1040,
1923 1417, -1040, 1089, -1040, 1028, 12319, -1040, 307, 978, 1031,
1924 -1040, 652, -1040, 577, 978, -1040, -1040, 800, -1040, -1040,
1925 -1040, -1040, 248, 13466, 9293, 13556, 1010, -1040, 574, 106,
1926 801, 377, -1040, -1040, -1040, -1040, -1040, -1040, -27, -1040,
1927 1151, -1040, 1097, -1040, -1040, -27, -1040, 1032, 1037, -1040,
1928 1121, 965, -1040, 1040, -1040, 1041, -1040, 1040, 990, 1046,
1929 5824, 7133, -1040, 1069, -1040, 748, -1040, 1051, 1053, -1040,
1930 13646, -1040, 965, 1054, -1040, 1067, 1054, -1040, 542, -1040,
1931 -1040, 12319, 1071, -1040, 1072, 12319, -1040, -1040, -1040, -1040,
1932 -1040, 61, 202, -27, 286, 313, -1040, -1040, -1040, 11309,
1933 11309, 12200, -1040, -1040, 1073, 1074, -1040, 2402, -1040, 1417,
1934 -1040, -1040, 1417, -1040, 1417, -1040, -1040, -1040, -1040, 990,
1935 1048, -1040, 2402, -1040, 1417, -1040, 1075, 1076, -1040, 1417,
1936 -1040, 1417, -1040, -1040, 1089, -1040, 1071, 12319, 12319, 1071,
1937 321, -1040, -1040, -1040, -1040, 1097, 1097, 1040, 1080, 1040,
1938 1040, -1040, -1040, 1054, 1087, 1054, 1054, -1040, -1040, 1071,
1939 -1040, 1074, -1040, 1417, -1040, -1040, -1040, -1040, 1417, -1040,
1940 -1040, -1040, 6277, 1040, 1054, 576, -1040, -1040, -1040, -1040,
1949 2, 0, 0, 1, 0, 362, 363, 364, 0, 355,
1950 356, 357, 360, 358, 359, 361, 350, 351, 352, 353,
1951 373, 279, 279, 637, 636, 638, 639, 749, 0, 749,
1952 0, 0, 641, 640, 642, 731, 733, 633, 632, 732,
1953 635, 627, 628, 629, 630, 578, 647, 648, 0, 0,
1954 0, 0, 0, 0, 306, 761, 761, 95, 326, 598,
1955 598, 600, 602, 0, 0, 0, 0, 0, 0, 0,
1956 3, 747, 6, 9, 35, 40, 52, 67, 279, 66,
1957 0, 83, 0, 87, 97, 0, 61, 235, 250, 0,
1958 304, 0, 0, 63, 63, 747, 0, 0, 0, 0,
1959 315, 68, 324, 293, 294, 577, 579, 295, 296, 297,
1960 299, 298, 300, 576, 617, 618, 575, 625, 643, 644,
1961 301, 0, 302, 71, 5, 8, 176, 187, 177, 200,
1962 173, 193, 183, 182, 203, 204, 198, 181, 180, 175,
1963 201, 205, 206, 185, 174, 188, 192, 194, 186, 179,
1964 195, 202, 197, 196, 189, 199, 184, 172, 191, 190,
1965 171, 178, 169, 170, 166, 167, 168, 126, 128, 127,
1966 161, 162, 157, 139, 140, 141, 148, 145, 147, 142,
1967 143, 163, 164, 149, 150, 154, 158, 144, 146, 136,
1968 137, 138, 151, 152, 153, 155, 156, 159, 160, 165,
1969 131, 133, 28, 129, 130, 132, 0, 0, 0, 0,
1970 0, 0, 0, 598, 0, 274, 0, 257, 284, 81,
1971 278, 761, 0, 643, 644, 0, 302, 761, 725, 82,
1972 749, 79, 0, 761, 449, 78, 749, 750, 0, 0,
1973 23, 247, 0, 10, 0, 350, 351, 318, 450, 0,
1974 229, 0, 315, 230, 220, 221, 312, 0, 21, 0,
1975 0, 747, 17, 20, 749, 85, 16, 308, 749, 0,
1976 754, 754, 258, 0, 0, 754, 723, 749, 0, 0,
1977 0, 93, 354, 0, 103, 104, 111, 428, 622, 621,
1978 623, 620, 0, 619, 0, 0, 0, 585, 594, 590,
1979 596, 626, 56, 241, 242, 757, 758, 4, 759, 748,
1980 0, 0, 0, 0, 0, 0, 0, 365, 454, 443,
1981 72, 458, 323, 366, 458, 439, 0, 99, 0, 91,
1982 88, 0, 57, 0, 0, 0, 0, 0, 253, 254,
1983 0, 0, 0, 0, 218, 219, 0, 0, 0, 251,
1984 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 743, 744, 0, 761, 0, 0, 62, 0, 0,
1986 0, 0, 0, 747, 334, 748, 0, 384, 383, 0,
1987 0, 643, 644, 302, 121, 122, 0, 0, 124, 651,
1988 0, 643, 644, 302, 342, 196, 189, 199, 184, 166,
1989 167, 168, 126, 127, 721, 344, 720, 0, 80, 746,
1990 745, 0, 325, 580, 0, 0, 134, 728, 312, 285,
1991 730, 281, 0, 0, 0, 0, 275, 283, 0, 761,
1992 0, 0, 0, 0, 276, 749, 0, 317, 280, 679,
1993 749, 270, 761, 749, 761, 269, 749, 322, 55, 25,
1994 27, 26, 0, 319, 0, 0, 0, 0, 0, 0,
1995 19, 0, 749, 310, 15, 748, 84, 749, 307, 313,
1996 756, 755, 259, 756, 261, 314, 724, 0, 110, 626,
1997 101, 96, 0, 0, 761, 0, 327, 429, 604, 624,
1998 607, 605, 599, 581, 582, 601, 583, 603, 0, 0,
1999 0, 0, 0, 760, 7, 29, 30, 31, 32, 33,
2000 53, 54, 0, 455, 454, 73, 0, 459, 0, 0,
2001 36, 289, 0, 39, 288, 749, 0, 89, 100, 51,
2002 41, 49, 0, 262, 284, 207, 37, 0, 302, 58,
2003 227, 234, 236, 237, 238, 245, 246, 239, 240, 216,
2004 217, 243, 244, 749, 231, 232, 233, 222, 223, 224,
2005 225, 226, 255, 256, 734, 736, 735, 737, 448, 279,
2006 446, 749, 761, 734, 736, 735, 737, 447, 279, 0,
2007 761, 375, 0, 374, 0, 0, 0, 0, 332, 0,
2008 312, 0, 761, 0, 63, 340, 121, 122, 123, 649,
2009 338, 0, 761, 0, 0, 0, 345, 741, 742, 347,
2010 734, 735, 279, 42, 262, 208, 48, 215, 0, 0,
2011 727, 0, 286, 282, 761, 734, 735, 749, 734, 735,
2012 726, 316, 751, 264, 271, 266, 273, 321, 24, 0,
2013 248, 11, 34, 0, 761, 214, 22, 86, 18, 309,
2014 754, 0, 94, 738, 109, 749, 734, 735, 430, 608,
2015 0, 584, 0, 587, 0, 592, 589, 0, 0, 593,
2016 228, 452, 456, 0, 372, 453, 460, 438, 292, 0,
2017 0, 98, 92, 0, 0, 0, 0, 0, 761, 0,
2018 0, 0, 0, 0, 445, 76, 0, 451, 271, 0,
2019 0, 268, 444, 74, 267, 305, 367, 761, 761, 567,
2020 761, 376, 761, 330, 378, 64, 377, 331, 469, 0,
2021 0, 369, 0, 0, 738, 311, 749, 734, 735, 0,
2022 0, 0, 0, 121, 122, 125, 749, 0, 749, 655,
2023 0, 440, 69, 135, 729, 287, 277, 0, 0, 451,
2024 0, 0, 749, 761, 749, 260, 102, 451, 431, 609,
2025 613, 614, 615, 606, 616, 586, 588, 595, 591, 597,
2026 761, 70, 761, 0, 290, 38, 90, 50, 263, 734,
2027 735, 749, 734, 735, 561, 565, 0, 0, 0, 506,
2028 500, 503, 559, 0, 59, 486, 488, 490, 493, 540,
2029 545, 546, 547, 550, 551, 552, 553, 554, 556, 555,
2030 557, 558, 0, 47, 212, 46, 213, 77, 752, 0,
2031 44, 210, 45, 211, 75, 568, 569, 761, 570, 368,
2032 370, 0, 12, 14, 574, 371, 0, 0, 0, 379,
2033 381, 0, 65, 470, 0, 336, 0, 462, 0, 335,
2034 451, 0, 0, 0, 0, 451, 343, 722, 678, 0,
2035 678, 348, 441, 442, 0, 265, 272, 320, 678, 610,
2036 749, 0, 419, 418, 0, 291, 451, 548, 549, 122,
2037 563, 0, 0, 502, 0, 0, 505, 428, 562, 0,
2038 60, 0, 543, 544, 0, 492, 491, 0, 0, 249,
2039 43, 209, 0, 0, 572, 573, 0, 382, 0, 328,
2040 329, 471, 333, 463, 0, 0, 337, 0, 650, 339,
2041 685, 682, 681, 680, 683, 691, 700, 679, 0, 712,
2042 701, 716, 715, 711, 677, 749, 749, 684, 686, 687,
2043 689, 663, 693, 698, 761, 704, 761, 761, 709, 663,
2044 714, 663, 0, 661, 0, 0, 663, 655, 678, 432,
2045 435, 611, 417, 749, 0, 687, 402, 695, 696, 761,
2046 761, 761, 707, 402, 402, 400, 422, 457, 461, 749,
2047 520, 508, 749, 509, 515, 0, 535, 598, 749, 526,
2048 531, 534, 528, 530, 538, 753, 560, 487, 489, 541,
2049 542, 564, 499, 496, 598, 749, 749, 749, 749, 0,
2050 571, 0, 643, 644, 302, 0, 761, 0, 0, 0,
2051 464, 761, 341, 0, 395, 387, 389, 749, 392, 385,
2052 652, 654, 0, 0, 670, 692, 0, 658, 719, 702,
2053 703, 0, 660, 659, 0, 673, 713, 0, 675, 717,
2054 346, 656, 0, 0, 749, 0, 0, 0, 420, 0,
2055 408, 410, 0, 694, 0, 397, 399, 398, 0, 413,
2056 0, 415, 0, 507, 518, 0, 501, 513, 524, 510,
2057 516, 0, 504, 527, 533, 539, 537, 0, 494, 495,
2058 497, 498, 312, 0, 761, 0, 761, 13, 761, 0,
2059 478, 481, 484, 485, 465, 467, 468, 466, 749, 394,
2060 0, 688, 0, 705, 662, 749, 690, 663, 663, 699,
2061 704, 761, 718, 663, 710, 663, 687, 663, 0, 0,
2062 0, 0, 433, 0, 421, 706, 401, 402, 402, 312,
2063 0, 697, 761, 402, 708, 402, 402, 426, 749, 424,
2064 427, 0, 521, 522, 511, 0, 517, 536, 532, 525,
2065 529, 738, 311, 749, 734, 735, 566, 380, 472, 0,
2066 0, 482, 386, 388, 390, 393, 653, 0, 666, 0,
2067 668, 657, 0, 674, 0, 671, 676, 349, 434, 0,
2068 0, 612, 0, 405, 0, 407, 738, 311, 396, 0,
2069 414, 0, 411, 416, 0, 423, 519, 0, 0, 514,
2070 451, 473, 479, 480, 483, 0, 0, 663, 663, 663,
2071 663, 437, 436, 402, 402, 402, 402, 425, 523, 512,
2072 474, 391, 667, 0, 664, 669, 672, 406, 0, 403,
2073 409, 412, 0, 663, 402, 761, 665, 404, 476, 477,
2080 -1040, -1040, -1040, 972, -1040, 19, 754, -545, -1040, -51,
2081 -1040, 756, -1040, 68, -1040, -264, -308, -83, -1040, -1040,
2082 -1040, -66, -75, -1040, -1040, -25, -1040, -323, 645, 4,
2083 1126, -154, 7, -26, -1040, -391, 11, 2057, -345, 1127,
2084 -58, -11, -1040, -1040, 2, -1040, 2889, -1040, 1147, -1040,
2085 1411, -1040, 110, 60, 630, -350, 100, -15, -1040, -381,
2086 -205, 39, -1040, -307, -32, -1040, -1040, -1040, -1040, -1040,
2087 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, 32,
2088 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040,
2089 -1040, -1040, -1040, -1040, -1040, 538, -1040, 331, 1177, -364,
2090 -1040, 146, -694, -1040, -1027, -1039, 230, 152, 393, 308,
2091 -1040, 501, -1040, -886, -1040, 74, 389, -1040, -1040, -1040,
2092 -1040, -1040, -1040, -1040, 537, -1040, -1040, -96, 766, -1040,
2093 -1040, -1040, 962, -1040, -1040, -1040, -1040, -688, -1040, 42,
2094 -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -1040, -603,
2095 -1040, -1040, -1040, -1040, 399, -1040, -1040, -1040, -860, -1040,
2096 274, -991, -605, -822, -1040, 206, -1040, 210, 218, -1040,
2097 -643, -1040, 414, -1040, -1040, 208, -1040, -1040, 289, 373,
2098 675, -1040, 1197, 1459, 1483, 1523, -1040, 806, 1936, -1040,
2099 1965, 2010, -1040, -1040, -56, -1040, -1040, -200, -1040, -1040,
2100 -1040, -1040, -1040, -1040, -1040, 5, -1040, -1040, -1040, -1040,
2101 -21, 1967, 1113, 1209, 1908, 1709, -1040, -1040, 352, -1040,
2102 -770, 412, -776, -607, -1001, -829, 207, -915, -287, -62,
2103 275, 249, -1040, -1040, -489, -327, 168, -975, -957, 256,
2104 -879, -1040, -729, -1040, 120, -748, -1040, -1040, -1040, 92,
2105 -393, -1040, -318, -1040, -1040, -86, -1040, -37, 253, 848,
2106 -577, 329, -243, -60, -55, -2
2112 -1, 1, 2, 70, 71, 72, 243, 579, 906, 580,
2113 261, 262, 461, 263, 452, 74, 530, 75, 539, 690,
2114 890, 368, 370, 371, 842, 76, 77, 515, 249, 79,
2115 80, 264, 81, 82, 83, 481, 84, 216, 388, 389,
2116 200, 201, 202, 618, 567, 204, 86, 454, 359, 87,
2117 218, 269, 535, 568, 702, 440, 441, 231, 232, 220,
2118 426, 572, 523, 524, 88, 366, 268, 467, 639, 287,
2119 719, 589, 732, 730, 604, 606, 739, 740, 957, 251,
2120 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
2121 321, 324, 707, 831, 722, 836, 837, 675, 252, 582,
2122 715, 838, 839, 380, 1025, 1026, 1027, 1028, 1136, 1061,
2123 963, 871, 872, 964, 1148, 1149, 486, 487, 658, 758,
2124 868, 1055, 959, 1132, 325, 101, 102, 322, 512, 513,
2125 672, 770, 516, 517, 676, 772, 848, 723, 1107, 720,
2126 843, 911, 1018, 1211, 1230, 1242, 1250, 1099, 1100, 1078,
2127 795, 796, 897, 898, 797, 882, 884, 881, 982, 983,
2128 984, 1152, 985, 988, 989, 990, 991, 992, 993, 798,
2129 799, 887, 800, 801, 802, 708, 827, 903, 833, 103,
2130 104, 105, 106, 107, 108, 109, 498, 662, 110, 500,
2131 111, 112, 499, 501, 292, 295, 296, 492, 660, 659,
2132 759, 869, 961, 1056, 763, 113, 114, 293, 115, 116,
2133 117, 223, 224, 120, 225, 226, 600, 731, 859, 860,
2134 1114, 1034, 935, 443, 937, 938, 1126, 940, 956, 942,
2135 943, 968, 969, 944, 945, 946, 947, 948, 972, 973,
2136 949, 950, 951, 952, 953, 1037, 407, 605, 274, 444,
2137 228, 123, 643, 570, 609, 603, 411, 307, 436, 437,
2138 697, 886, 472, 583, 375, 266
2146 124, 291, 260, 365, 294, 584, 412, 235, 367, 367,
2147 203, 308, 367, 205, 571, 410, 309, 240, 841, 372,
2148 215, 215, 434, 125, 536, 282, 369, 752, 474, 373,
2149 203, 844, 476, 205, 89, 308, 89, 1005, 1007, 581,
2150 630, 405, 598, 302, 623, 569, 301, 578, 222, 222,
2151 749, 282, 623, 272, 276, 221, 221, 330, 374, 737,
2152 265, 203, -107, 320, 282, 282, 282, 529, 281, 1124,
2153 73, 1150, 73, 1175, -116, 1006, 1008, 1057, 757, 627,
2154 630, 714, 234, 1173, 955, 89, 89, 794, 934, 283,
2155 934, 652, 960, 612, 270, 495, 497, -116, 934, 1029,
2156 222, 203, -637, 889, 215, 462, 613, 616, 227, 227,
2157 569, 1144, 578, 470, 3, 283, 219, 229, 1116, 581,
2158 471, 317, 267, 222, 222, 664, 237, 222, 379, 390,
2159 390, -637, 222, -354, 655, 682, 430, 1116, 319, 221,
2160 644, 974, -112, 877, 878, 1116, -636, 271, 275, 850,
2161 529, 529, -113, 446, 1117, 448, 237, 422, 260, 855,
2162 1206, -354, -354, -107, 1209, 458, -120, 644, 1129, -119,
2163 315, 316, 914, 1117, 525, -636, 1231, 305, 665, 306,
2164 256, -115, 1054, -107, 473, -734, -107, 854, 934, 1173,
2165 -107, 471, 227, 456, 1029, 1109, 1103, 485, 1042, 1043,
2166 408, 308, 1124, 1150, 876, 305, 465, 306, 260, -734,
2167 -354, -112, -116, 883, -116, -118, -113, 1229, -107, 427,
2168 -734, 1065, 1066, 1067, 464, 427, -120, 367, 367, 367,
2169 367, 445, 510, 511, 215, 1144, 215, 215, 318, 434,
2170 124, 89, 726, 630, 505, 506, 507, 508, 282, 999,
2171 1000, 936, 736, 623, 480, 623, 735, 305, 479, 306,
2172 -118, -119, 222, -103, 222, 222, 265, 1116, 222, 221,
2173 222, 221, 442, -104, 89, 644, 89, 260, 979, 981,
2174 238, 1029, 241, 1029, 1116, 644, 237, -111, 367, 89,
2175 -110, 89, 776, 593, 981, 981, -106, 282, 663, -115,
2176 663, 520, -106, 595, 1118, 586, 531, 917, 234, 319,
2177 73, 1214, 283, 308, 954, 1125, 1074, 623, 1002, 585,
2178 1130, 587, 227, 1118, 227, 460, -117, 1105, 504, 978,
2179 435, 1138, 438, 1106, -114, 265, 588, -117, 781, 1145,
2180 527, 89, 222, 222, 222, 222, 89, 222, 222, -112,
2181 -735, -112, 931, -118, -113, -118, -113, -114, 222, 1154,
2182 89, 283, 445, 537, -120, 522, -120, 576, 215, 569,
2183 522, 578, 817, 1181, -108, -105, 932, 73, 1079, 242,
2184 824, -109, 509, -735, 813, 815, 1029, 1029, 1084, 531,
2185 531, 820, 822, 317, 1198, 994, 222, -106, 89, -119,
2186 826, -119, 89, 222, 89, 1076, 668, 755, 994, 994,
2187 1075, 315, 316, 576, 1131, 1101, 361, -106, 222, 746,
2188 -106, 529, -645, 244, -106, 577, 1115, 445, 529, 529,
2189 1090, 1091, 576, 215, 297, 529, 529, -115, 894, -115,
2190 427, 638, 427, 880, 362, 363, 537, 537, 1218, -112,
2191 282, 689, -645, 1155, 203, 889, 480, 205, -108, 669,
2192 576, 222, 766, 1224, -117, -731, -117, 766, 298, -103,
2193 1153, -84, -114, 630, -114, -108, -105, 889, -105, -112,
2194 338, 339, 445, -638, 915, 623, 895, 576, 215, 896,
2195 577, -98, 361, 364, 282, -108, -105, 89, -108, -105,
2196 480, -524, -108, -105, 488, 496, -749, -631, 1128, 237,
2197 318, 900, -638, 333, 283, 233, 222, 624, 577, 729,
2198 362, 409, 738, 1171, 615, 617, 716, 349, 350, 994,
2199 477, 710, 236, 712, -646, -631, -631, 237, -311, 1015,
2200 299, 615, 617, 970, 1017, 577, 1153, 1120, 746, 1001,
2201 1153, 1248, -646, 488, 695, 529, 754, 488, 283, 490,
2202 491, -113, 650, 703, 361, 300, -311, -311, 981, 645,
2203 427, 941, 356, 357, 358, 1120, 704, 323, 709, -113,
2204 1039, -104, -731, 966, -631, 1189, 1210, -731, 835, 830,
2205 445, 830, 362, 428, 994, 576, 215, 742, 1040, 361,
2206 445, 718, 1228, 1153, 361, 576, 215, 743, 490, 491,
2207 704, -639, 490, 491, 89, -311, 89, 415, -735, 282,
2208 203, 326, 427, 205, 222, 756, -641, 362, 457, 694,
2209 -643, 327, 362, 483, 222, 986, 89, 222, 701, 765,
2210 -639, 429, 704, 768, -120, 862, 331, 78, 367, 78,
2211 459, 282, 432, 577, 926, -641, 60, 480, -643, -643,
2212 531, 78, 78, 577, -111, 853, 488, 531, 531, 414,
2213 852, 222, 701, -644, 531, 531, 429, -119, 851, -120,
2214 -640, 484, 861, 283, 459, 930, 445, 699, 1204, 987,
2215 418, 576, 215, 416, -642, 237, -732, -110, 78, 78,
2216 -631, -644, -644, 694, 701, 828, 834, -643, 840, -640,
2217 840, -119, 89, 78, -115, 283, 89, 537, 488, 489,
2218 222, 490, 491, -642, 537, 537, 753, -302, 236, -631,
2219 361, 537, 537, 970, -106, 1168, 78, 78, -634, 423,
2220 78, 970, 203, 970, 1163, 78, 522, 829, 775, 577,
2221 -644, 427, 777, 830, 367, -302, -302, 1123, 362, 591,
2222 1127, 89, 415, 222, 89, 700, -634, -634, 873, 361,
2223 873, 908, 925, 490, 491, -749, 1157, 644, 1085, 424,
2224 905, 1143, 488, 1146, 237, 907, 425, 750, -634, -120,
2225 753, 926, -117, 918, 531, 431, 1086, 362, 601, -312,
2226 607, 433, 814, 816, -302, 361, 691, 592, 967, 821,
2227 823, 361, -108, -732, -115, -634, 361, -634, -732, 453,
2228 977, 751, 930, 931, 696, 904, 819, -312, -312, 608,
2229 892, 893, 864, 362, 687, 493, 333, 490, 491, 362,
2230 1093, 1169, 1170, 488, 362, 1140, 602, 932, -117, 677,
2231 230, 537, 699, -114, 78, 1016, 233, 814, 816, -114,
2232 821, 823, 463, 89, 1021, 970, 488, 970, 89, 222,
2233 282, -83, 970, -105, 970, 78, -312, 78, 78, -115,
2234 696, 78, 688, 78, 89, 700, 819, 78, 1094, 78,
2235 1217, 89, 1219, 602, 478, 1051, 493, 1220, 490, 491,
2236 469, 619, 78, 89, 78, 1223, 89, 1225, 696, 475,
2237 705, 970, -117, -114, 1226, 482, 713, 449, 717, 493,
2238 502, 490, 491, -738, 1157, 1095, 333, 450, 451, 901,
2239 514, 1081, 596, 596, 1011, 282, 597, 879, 89, -749,
2240 528, 590, 1038, 237, 1038, 1038, 1243, 89, 1087, 503,
2241 305, 1244, 306, 594, 78, 78, 78, 78, 78, 78,
2242 78, 78, 599, 333, 1096, -738, 1098, 1038, 1038, 1038,
2243 830, 78, 721, 78, 901, 632, 78, 488, 641, 696,
2244 346, 347, 634, 354, 355, 356, 357, 358, 636, 696,
2245 975, 642, -98, -738, -738, 671, 651, 488, 967, 1063,
2246 674, -284, 967, 679, 683, 1133, 967, 680, 967, 78,
2247 684, 78, 698, 685, 834, 78, 78, 78, 706, 840,
2248 354, 355, 356, 357, 358, 711, 488, 282, 718, 767,
2249 494, 78, 490, 491, 696, 721, 769, 771, 971, 818,
2250 -738, -285, -738, 696, 885, -734, 812, 89, 830, 89,
2251 661, 845, 490, 491, 849, 41, 42, 43, 44, 78,
2252 78, 760, 761, 803, 762, 939, 866, 939, 856, 858,
2253 870, 46, 47, -286, 78, 939, 888, 965, 889, 666,
2254 1190, 490, 491, 891, 447, 89, 367, 367, 89, 902,
2255 -287, 1135, 445, 995, 709, 784, 840, 576, 215, 1032,
2256 1033, 1046, 1036, 1212, 1213, 310, 311, 312, 313, 314,
2257 78, 1041, 466, 1044, 1047, 119, 468, 119, 1049, 1038,
2258 1052, 1059, 1058, 976, 1092, 1060, 222, 1064, 1068, 78,
2259 967, 920, 967, 921, 922, 923, 924, 967, 1070, 967,
2260 1038, 1147, 829, 921, 922, 923, 924, 1080, 696, 920,
2261 1072, 921, 922, 923, 924, 577, 1122, 1083, 1134, 803,
2262 803, 1122, 89, 89, 1139, 939, 119, 119, 1110, 909,
2263 285, 1112, 910, 1040, 1151, 912, 967, 1156, 1177, 100,
2264 975, 100, 916, 1179, 1122, 919, 1182, 1184, 975, 1191,
2265 975, 1245, 1222, 100, 100, 1188, 285, 1192, 1023, 1194,
2266 1199, 222, 222, 920, 1121, 921, 922, 923, 924, 382,
2267 392, 392, 392, 1201, 455, 646, 976, 1207, 1208, 1215,
2268 1216, 648, 377, -734, -735, 394, 1233, 78, 971, 78,
2269 100, 100, 1142, 1238, 360, 696, 971, 78, 971, 333,
2270 939, 885, 741, 840, 1167, 100, 832, 78, 1022, 78,
2271 78, 939, 1023, 1108, 803, 803, 346, 347, 1024, 939,
2272 696, 696, 1174, 962, 803, 803, 803, 965, 100, 100,
2273 803, 803, 100, 874, 89, 965, 996, 100, 1227, 863,
2274 673, 1069, 1071, 631, 78, 1050, 518, 1249, 633, 1158,
2275 998, 635, 1102, 1159, 637, 353, 354, 355, 356, 357,
2276 358, 1160, 413, 997, 1166, 1097, 667, 976, 406, 1053,
2277 647, 1119, 975, 1141, 975, 649, 1137, 1082, 0, 975,
2278 0, 975, 119, 0, 0, 78, 0, 0, 0, 78,
2279 78, 0, 0, 78, 0, 0, 0, 78, 78, 0,
2280 0, 0, 0, 0, 78, 78, 0, 0, 0, 0,
2281 0, 0, 0, 0, 0, 119, 803, 119, 975, 0,
2282 971, 1045, 971, 1048, 803, 804, 0, 971, 0, 971,
2283 119, 0, 119, 681, 78, 0, 78, 78, 0, 0,
2284 0, 0, 0, 0, 939, 0, 100, 0, 0, 0,
2285 0, 803, 0, 285, 0, 0, 0, 0, 0, 965,
2286 0, 1205, 0, 0, 0, 0, 971, 100, 0, 100,
2287 100, 0, 0, 100, 0, 100, 696, 0, 0, 100,
2288 0, 100, 119, 0, 0, 0, 0, 119, 0, 0,
2289 0, 0, 0, 0, 100, 0, 100, 0, 0, 0,
2290 0, 119, 285, 0, 0, 1193, 1195, 0, 803, 0,
2291 0, 1200, 0, 1202, 1203, 0, 0, 0, 0, 1187,
2292 0, 804, 804, 0, 78, 0, 0, 273, 0, 920,
2293 0, 921, 922, 923, 924, 925, 78, 0, 0, 119,
2294 0, 78, 78, 119, 0, 119, 100, 100, 100, 100,
2295 100, 100, 100, 100, 926, 0, 0, 78, 0, 0,
2296 0, 0, 0, 100, 78, 100, 0, 0, 100, 0,
2297 0, 0, 0, 0, 0, 0, 78, 0, 928, 78,
2298 1221, 0, 0, 0, 803, 930, 931, 0, 803, 1178,
2299 1180, 1237, 1239, 1240, 1241, 1183, 0, 1185, 0, 1186,
2300 0, 100, 0, 100, 803, 0, 0, 100, 100, 100,
2301 932, 78, 1247, 0, 0, 0, 804, 804, 0, 0,
2302 78, 0, 0, 100, 0, 0, 804, 804, 804, 0,
2303 0, 0, 804, 804, 0, 0, 0, 0, 119, 0,
2304 803, 803, 0, 0, 0, 0, 857, 0, 0, 0,
2305 0, 100, 100, 0, 0, 285, 0, 0, 0, 0,
2306 865, 0, 867, 0, 0, 0, 100, 0, 920, 0,
2307 921, 922, 923, 924, 925, 0, 332, 0, 417, 0,
2308 0, 419, 420, 421, 0, 0, 0, 0, 0, 1232,
2309 1234, 1235, 1236, 926, 0, 0, 0, 0, 0, 285,
2310 0, 0, 100, 0, 0, 0, 0, 0, 0, 0,
2311 0, 0, 0, 0, 0, 1246, 0, 928, 804, 0,
2312 78, 100, 78, 929, 930, 931, 804, 0, 333, 334,
2313 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2314 345, 0, 0, 0, 0, 346, 347, 0, 0, 932,
2315 0, 0, 933, 804, 0, 119, 0, 119, 78, 0,
2316 0, 78, 0, 0, 0, 0, 0, 0, 0, 237,
2317 0, 122, 0, 122, 0, 0, 0, 119, 348, 0,
2318 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
2319 0, 0, 0, 0, 0, 0, 0, 521, 0, 78,
2320 0, 0, 534, 0, 1003, 0, 0, 0, 0, 0,
2321 804, 0, 0, 0, 0, 0, 0, 0, 0, 100,
2322 0, 100, 122, 122, 285, 0, 286, 0, 0, 100,
2323 0, 0, 0, 0, 0, 78, 78, 0, 0, 100,
2324 0, 100, 100, 1030, 1031, 0, 0, 0, 0, 0,
2325 0, 0, 286, 119, 0, 0, 285, 119, 0, 0,
2326 0, 0, 0, 811, 0, 383, 393, 393, 0, 0,
2327 0, 0, 0, 0, 78, 78, 100, 0, 0, 0,
2328 0, 0, 0, 0, 0, 0, 804, 1073, 0, 0,
2329 804, 0, 0, 0, 0, 620, 622, 0, 0, 0,
2330 0, 0, 119, 0, 273, 119, 804, 0, 0, 0,
2331 0, 0, 0, 1088, 1089, 0, 0, 100, 0, 0,
2332 0, 100, 100, 0, 0, 100, 0, 0, 0, 100,
2333 100, 0, 0, 0, 0, 1111, 100, 100, 0, 0,
2334 0, 622, 804, 804, 273, 0, 920, 78, 921, 922,
2335 923, 924, 925, 0, 0, 0, 0, 0, 0, 811,
2336 811, 0, 0, 0, 0, 0, 100, 0, 100, 100,
2337 121, 926, 121, 0, 0, 0, 0, 0, 122, 333,
2338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2339 678, 0, 0, 0, 0, 928, 346, 347, 0, 0,
2340 0, 929, 930, 931, 119, 0, 0, 0, 0, 119,
2341 0, 122, 0, 122, 0, 0, 1172, 0, 0, 0,
2342 0, 121, 121, 1176, 0, 119, 122, 932, 122, 118,
2343 933, 118, 119, 351, 352, 353, 354, 355, 356, 357,
2344 358, 0, 958, 0, 119, 0, 0, 119, 0, 286,
2345 0, 0, 0, 0, 811, 811, 100, 0, 0, 0,
2346 0, 0, 0, 0, 811, 811, 811, 0, 100, 0,
2347 811, 811, 0, 100, 100, 1013, 0, 0, 122, 119,
2348 118, 118, 0, 122, 284, 0, 0, 0, 119, 100,
2349 744, 0, 745, 0, 0, 0, 100, 122, 286, 0,
2350 538, 0, 0, 0, 0, 622, 0, 273, 100, 0,
2351 284, 100, 0, 0, 0, 0, 0, 0, 0, 85,
2352 0, 85, 0, 381, 391, 391, 391, 0, 0, 0,
2353 0, 0, 0, 0, 0, 122, 0, 0, 0, 122,
2354 392, 122, 0, 100, 0, 0, 0, 0, 0, 0,
2355 774, 0, 100, 0, 0, 0, 811, 0, 0, 0,
2356 0, 0, 0, 0, 811, 0, 0, 0, 0, 622,
2357 85, 85, 0, 0, 0, 0, 0, 121, 825, 0,
2358 0, 0, 0, 538, 538, 0, 0, 0, 119, 0,
2359 119, 811, 0, 847, 0, 0, 0, 0, 0, 0,
2360 0, 0, 0, 0, 0, 0, 0, 0, 0, 805,
2361 121, 0, 121, 378, 0, 0, 0, 0, 0, 0,
2362 0, 0, 0, 0, 0, 121, 119, 121, 0, 119,
2363 0, 0, 392, 806, 122, 0, 118, 0, 0, 0,
2364 0, 0, 0, 0, 875, 0, 0, 0, 811, 0,
2365 0, 286, 100, 0, 100, 0, 0, 0, 0, 0,
2366 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2367 0, 118, 0, 807, 0, 0, 0, 121, 0, 0,
2368 0, 0, 121, 0, 118, 0, 118, 0, 0, 0,
2369 100, 0, 0, 100, 0, 286, 121, 0, 0, 121,
2370 0, 0, 0, 119, 119, 805, 805, 284, 920, 0,
2371 921, 922, 923, 924, 925, 0, 0, 913, 0, 0,
2372 0, 0, 0, 0, 811, 0, 85, 0, 811, 806,
2373 806, 100, 0, 926, 121, 0, 118, 273, 121, 0,
2374 121, 118, 0, 0, 811, 0, 0, 927, 0, 0,
2375 0, 122, 0, 122, 0, 118, 284, 928, 0, 85,
2376 0, 85, 0, 929, 930, 931, 0, 100, 100, 807,
2377 807, 0, 0, 122, 85, 0, 85, 0, 0, 0,
2378 811, 811, 121, 121, 0, 1020, 0, 0, 0, 932,
2379 0, 0, 933, 118, 0, 0, 0, 118, 0, 118,
2380 805, 805, 0, 0, 0, 0, 100, 100, 0, 0,
2381 805, 805, 805, 1035, 0, 119, 805, 805, 0, 0,
2382 286, 0, 0, 0, 806, 806, 85, 0, 0, 764,
2383 0, 85, 0, 121, 806, 806, 806, 0, 0, 0,
2384 806, 806, 0, 0, 0, 85, 0, 0, 532, 122,
2385 0, 0, 286, 122, 538, 0, 0, 0, 0, 0,
2386 0, 538, 538, 0, 807, 807, 0, 0, 538, 538,
2387 0, 0, 0, 0, 807, 807, 807, 0, 0, 100,
2388 807, 807, 0, 85, 0, 0, 0, 85, 0, 85,
2389 1104, 0, 118, 0, 0, 0, 0, 0, 122, 0,
2390 0, 122, 805, 1113, 0, 0, 0, 0, 0, 284,
2391 805, 0, 0, 0, 920, 0, 921, 922, 923, 924,
2392 925, 0, 0, 0, 0, 0, 806, 0, 0, 0,
2393 0, 532, 532, 0, 806, 0, 0, 805, 0, 926,
2394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2395 121, 0, 121, 284, 0, 0, 0, 0, 0, 0,
2396 0, 806, 0, 928, 0, 0, 807, 0, 0, 929,
2397 930, 931, 121, 0, 807, 0, 0, 0, 0, 0,
2398 0, 0, 85, 0, 0, 0, 0, 0, 538, 0,
2399 0, 0, 0, 0, 805, 932, 0, 0, 933, 0,
2400 122, 807, 0, 0, 0, 122, 0, 0, 0, 118,
2401 0, 118, 0, 0, 0, 0, 0, 0, 806, 0,
2402 0, 122, 0, 0, 0, 0, 0, 0, 122, 0,
2403 0, 118, 0, 0, 0, 0, 0, 0, 0, 0,
2404 122, 0, 0, 122, 0, 0, 0, 0, 121, 0,
2405 0, 0, 121, 121, 0, 0, 0, 0, 807, 0,
2406 121, 121, 0, 0, 0, 0, 0, 121, 121, 0,
2407 805, 1014, 0, 0, 805, 122, 0, 0, 284, 0,
2408 0, 0, 0, 0, 122, 0, 808, 0, 0, 0,
2409 805, 0, 0, 0, 806, 0, 0, 121, 806, 85,
2410 121, 85, 0, 0, 0, 0, 0, 118, 0, 0,
2411 284, 118, 0, 0, 806, 809, 0, 0, 0, 0,
2412 0, 85, 0, 0, 0, 0, 805, 805, 0, 0,
2413 0, 0, 0, 0, 807, 0, 393, 0, 807, 0,
2414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2415 806, 806, 0, 0, 807, 0, 118, 0, 0, 118,
2416 810, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2418 0, 0, 808, 808, 122, 0, 122, 121, 0, 0,
2419 807, 807, 0, 0, 0, 0, 0, 85, 0, 121,
2420 0, 85, 532, 0, 121, 0, 0, 0, 0, 532,
2421 532, 809, 809, 0, 0, 0, 532, 532, 0, 0,
2422 121, 0, 122, 0, 0, 122, 0, 121, 393, 0,
2423 0, 0, 0, 0, 0, 0, 0, 0, 0, 121,
2424 0, 0, 121, 0, 0, 0, 85, 0, 0, 85,
2425 0, 0, 0, 0, 0, 0, 810, 810, 118, 0,
2426 0, 0, 0, 118, 0, 0, 0, 0, 0, 0,
2427 0, 0, 0, 0, 121, 0, 0, 808, 808, 118,
2428 0, 0, 0, 121, 0, 0, 118, 808, 808, 808,
2429 0, 0, 0, 808, 808, 0, 0, 0, 118, 122,
2430 122, 118, 0, 0, 0, 0, 809, 809, 0, 0,
2431 0, 0, 0, 0, 0, 0, 809, 809, 809, 0,
2432 0, 0, 809, 809, 0, 0, 0, 0, 0, 1012,
2433 0, 0, 0, 118, 0, 0, 532, 0, 0, 0,
2434 0, 0, 118, 0, 0, 0, 0, 0, 85, 0,
2435 0, 810, 810, 85, 0, 0, 0, 0, 0, 0,
2436 0, 810, 810, 810, 0, 217, 217, 810, 810, 85,
2437 0, 0, 0, 0, 0, 0, 85, 0, 0, 808,
2438 0, 0, 0, 121, 0, 121, 0, 808, 85, 0,
2439 0, 85, 0, 0, 391, 0, 0, 250, 253, 254,
2440 255, 0, 0, 0, 217, 217, 0, 0, 809, 0,
2441 0, 122, 0, 0, 808, 0, 809, 303, 304, 1010,
2442 0, 121, 0, 85, 121, 0, 0, 0, 0, 0,
2443 0, 0, 85, 0, 0, 0, 0, 0, 23, 24,
2444 25, 26, 118, 809, 118, 0, 0, 0, 0, 217,
2445 0, 0, 0, 810, 32, 33, 34, 0, 0, 0,
2446 0, 810, 0, 0, 41, 42, 43, 44, 45, 0,
2447 0, 808, 0, 0, 0, 0, 0, 0, 0, 0,
2448 118, 0, 0, 118, 0, 0, 391, 0, 810, 0,
2449 0, 0, 0, 0, 0, 0, 0, 0, 121, 121,
2450 809, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2451 0, 0, 0, 0, 0, 792, 59, 60, 61, 62,
2452 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2453 0, 0, 85, 0, 85, 0, 0, 0, 0, 0,
2454 0, 0, 0, 0, 279, 810, 0, 808, 0, 0,
2455 0, 808, 0, 0, 0, 0, 217, 118, 118, 217,
2456 217, 217, 0, 303, 0, 0, 0, 808, 0, 0,
2457 85, 0, 0, 85, 0, 0, 809, 0, 0, 217,
2458 809, 217, 217, 0, 0, 0, 0, 0, 0, 0,
2459 0, 0, 0, 0, 0, 0, 809, 0, 0, 0,
2460 0, 0, 0, 808, 808, 0, 0, 0, 0, 0,
2461 121, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2462 0, 810, 0, 0, 0, 810, 0, 0, 0, 0,
2463 0, 0, 809, 809, 0, 0, 0, 0, 0, 0,
2464 0, 810, 0, 0, 0, 0, 0, 85, 85, 0,
2465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2466 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2467 0, 0, 0, 0, 0, 217, 0, 810, 810, 0,
2468 533, 0, 540, 541, 542, 543, 544, 0, 0, 545,
2469 546, 547, 548, 549, 550, 551, 552, 553, 0, 0,
2470 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
2471 0, 0, 0, 217, 0, 0, 0, 0, 0, 0,
2472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2473 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
2474 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2475 0, 0, 0, 0, 346, 347, 0, 0, 0, 85,
2476 0, 0, 0, 614, 614, 0, 0, 0, 0, 0,
2477 0, 0, 614, 217, 217, 0, 0, 0, 217, 0,
2478 614, 614, 217, 0, 0, 0, 0, 348, 255, 349,
2479 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
2480 0, 0, 0, 640, 0, 0, 0, 0, 614, 0,
2481 0, 0, 0, 237, 0, 0, 0, 0, 0, 217,
2482 0, 0, 217, 0, 0, 0, 0, 0, 0, -738,
2483 0, 0, 0, 217, 0, 0, 0, -738, -738, -738,
2484 0, 0, -738, -738, -738, 0, -738, 0, 0, 0,
2485 0, 670, 0, 0, -738, -738, -738, -738, -738, 0,
2486 0, 0, 0, 0, 0, 0, -738, -738, 217, -738,
2487 -738, -738, -738, -738, 0, 0, 0, 0, 0, 0,
2488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2489 0, 0, 0, 0, 0, 0, 0, -738, 0, 0,
2490 0, 0, 0, 0, 0, 0, -738, -738, -738, -738,
2491 -738, -738, -738, -738, -738, -738, -738, -738, -738, 0,
2492 0, 0, 0, -738, -738, -738, -738, 0, 747, -738,
2493 0, 0, 0, 0, 0, -738, 0, 0, 0, 0,
2494 0, 217, 0, 0, 0, 0, 0, 0, 0, -738,
2495 0, 217, -738, 0, 0, -116, -738, -738, -738, -738,
2496 -738, -738, -738, -738, -738, -738, -738, -738, 217, 0,
2497 217, 0, -738, -738, -738, -738, 0, 0, -738, -738,
2498 -738, 0, -738, 217, 0, 217, 0, 0, 0, -761,
2499 0, 0, 0, 0, 0, 0, 0, -761, -761, -761,
2500 0, 0, -761, -761, -761, 0, -761, 0, 0, 0,
2501 0, 0, 0, 0, -761, -761, -761, 0, 0, 0,
2502 0, 0, 0, 0, 0, 0, -761, -761, 217, -761,
2503 -761, -761, -761, -761, 614, 778, 0, 217, 0, 0,
2504 0, 614, 614, 0, 0, 0, 0, 217, 614, 614,
2505 0, 0, 0, 0, 0, 0, 217, -761, 0, 0,
2506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2507 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
2508 0, 0, 0, 0, 0, -761, -761, 0, 0, 0,
2509 0, 0, 0, 0, 0, 0, 614, 614, 0, 614,
2510 614, 23, 24, 25, 26, 0, 0, 0, 0, -761,
2511 0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
2512 784, 0, 217, 0, 785, 0, 986, 41, 42, 43,
2513 44, 45, -761, -761, 0, 0, 0, 233, -761, 0,
2514 -761, 0, -761, 0, 0, 926, 0, 0, 0, 0,
2515 0, 0, 0, 0, 0, 0, 0, 0, 786, 787,
2516 0, 899, 0, 0, 0, 0, 788, 0, 614, 789,
2517 0, 0, 790, 791, 0, 980, 930, 0, 792, 59,
2518 1004, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2519 0, 0, 0, 0, 0, 217, 0, 0, 0, 0,
2520 793, 0, 0, 0, 0, -761, 4, 279, 5, 6,
2521 7, 8, 9, 614, 0, 217, 10, 11, 0, 0,
2522 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2523 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2524 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2525 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
2526 38, 39, 40, 217, 41, 42, 43, 44, 45, 46,
2527 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2528 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2529 0, 217, 0, 0, 0, 50, 51, 0, 0, 0,
2530 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2531 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2532 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2534 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2535 0, 0, 0, 0, 0, 0, -761, 0, -761, 0,
2536 0, 0, 0, 0, 0, 0, 0, 0, 217, -631,
2537 0, 0, 0, 0, 0, 0, 0, -631, -631, -631,
2538 0, 217, -631, -631, -631, 0, -631, 0, 0, 0,
2539 0, 686, 0, 0, -631, 0, -631, -631, -631, 0,
2540 0, 0, 0, 0, 0, 0, -631, -631, 0, -631,
2541 -631, -631, -631, -631, 0, 0, 0, 0, 0, 0,
2542 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2543 339, 340, 341, 342, 343, 344, 345, -631, 0, 0,
2544 0, 346, 347, 217, 0, 0, -631, -631, -631, -631,
2545 -631, -631, -631, -631, -631, -631, -631, -631, -631, 0,
2546 0, 0, 0, -631, -631, -631, -631, 0, -631, -631,
2547 0, 0, 0, 0, 348, -631, 349, 350, 351, 352,
2548 353, 354, 355, 356, 357, 358, 0, 0, 0, -631,
2549 0, 0, -631, -257, 0, -631, -631, -631, -631, -631,
2550 -631, -631, -631, -631, -631, -631, -631, -631, 0, 0,
2551 0, 0, 0, -631, -631, -631, -634, 0, -631, -631,
2552 -631, 0, -631, 0, -634, -634, -634, 0, 0, -634,
2553 -634, -634, 0, -634, 0, 0, 0, 0, 686, 0,
2554 0, -634, 0, -634, -634, -634, 0, 0, 0, 0,
2555 0, 0, 0, -634, -634, 0, -634, -634, -634, -634,
2556 -634, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2557 0, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2558 342, 343, 344, 345, -634, 0, 0, 0, 346, 347,
2559 0, 0, 0, -634, -634, -634, -634, -634, -634, -634,
2560 -634, -634, -634, -634, -634, -634, 0, 0, 0, 0,
2561 -634, -634, -634, -634, 0, -634, -634, 0, 0, 0,
2562 0, 348, -634, 349, 350, 351, 352, 353, 354, 355,
2563 356, 357, 358, 0, 0, 0, -634, 0, 0, -634,
2564 0, 0, -634, -634, -634, -634, -634, -634, -634, -634,
2565 -634, -634, -634, -634, -634, 0, 0, 0, 0, 0,
2566 -634, -634, -634, -739, 0, -634, -634, -634, 0, -634,
2567 0, -739, -739, -739, 0, 0, -739, -739, -739, 0,
2568 -739, 0, 0, 0, 0, 0, 0, 0, -739, -739,
2569 -739, -739, -739, 0, 0, 0, 0, 0, 0, 0,
2570 -739, -739, 0, -739, -739, -739, -739, -739, 0, 0,
2571 0, 0, 0, 0, 0, 0, 0, 0, 333, 334,
2572 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2573 345, -739, 0, 0, 0, 346, 347, 0, 0, 0,
2574 -739, -739, -739, -739, -739, -739, -739, -739, -739, -739,
2575 -739, -739, -739, 0, 0, 0, 0, -739, -739, -739,
2576 -739, 0, 0, -739, 0, 0, 0, 0, 348, -739,
2577 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
2578 0, 0, 0, -739, 0, 0, -739, 0, 0, 0,
2579 -739, -739, -739, -739, -739, -739, -739, -739, -739, -739,
2580 -739, -739, 0, 0, 0, 0, -739, -739, -739, -739,
2581 -740, 0, -739, -739, -739, 0, -739, 0, -740, -740,
2582 -740, 0, 0, -740, -740, -740, 0, -740, 0, 0,
2583 0, 0, 0, 0, 0, -740, -740, -740, -740, -740,
2584 0, 0, 0, 0, 0, 0, 0, -740, -740, 0,
2585 -740, -740, -740, -740, -740, 0, 0, 0, 0, 0,
2586 0, 0, 0, 0, 0, 333, 334, 335, 336, 337,
2587 338, 339, 340, 341, 342, 343, -762, -762, -740, 0,
2588 0, 0, 346, 347, 0, 0, 0, -740, -740, -740,
2589 -740, -740, -740, -740, -740, -740, -740, -740, -740, -740,
2590 0, 0, 0, 0, -740, -740, -740, -740, 0, 0,
2591 -740, 0, 0, 0, 0, 0, -740, 349, 350, 351,
2592 352, 353, 354, 355, 356, 357, 358, 0, 0, 0,
2593 -740, 0, 0, -740, 0, 0, 0, -740, -740, -740,
2594 -740, -740, -740, -740, -740, -740, -740, -740, -740, 0,
2595 0, 0, 0, -740, -740, -740, -740, -311, 0, -740,
2596 -740, -740, 0, -740, 0, -311, -311, -311, 0, 0,
2597 -311, -311, -311, 0, -311, 0, 0, 0, 0, 0,
2598 0, 0, -311, 0, -311, -311, -311, 0, 0, 0,
2599 0, 0, 0, 0, -311, -311, 0, -311, -311, -311,
2600 -311, -311, 0, 0, 0, 0, 0, 0, 0, 0,
2601 0, 0, 333, 334, 335, 336, 337, 338, 339, 340,
2602 0, 342, 343, 0, 0, -311, 0, 0, 0, 346,
2603 347, 0, 0, 0, -311, -311, -311, -311, -311, -311,
2604 -311, -311, -311, -311, -311, -311, -311, 0, 0, 0,
2605 0, -311, -311, -311, -311, 0, 748, -311, 0, 0,
2606 0, 0, 0, -311, 349, 350, 351, 352, 353, 354,
2607 355, 356, 357, 358, 0, 0, 0, -311, 0, 0,
2608 -311, 0, 0, -118, -311, -311, -311, -311, -311, -311,
2609 -311, -311, -311, -311, -311, -311, 0, 0, 0, 0,
2610 0, -311, -311, -311, -450, 0, -311, -311, -311, 0,
2611 -311, 0, -450, -450, -450, 0, 0, -450, -450, -450,
2612 0, -450, 0, 0, 0, 0, 0, 0, 0, -450,
2613 -450, -450, -450, 0, 0, 0, 0, 0, 0, 0,
2614 0, -450, -450, 0, -450, -450, -450, -450, -450, 0,
2615 0, 0, 0, 0, 0, 0, 0, 0, 0, 333,
2616 -762, -762, -762, -762, 338, 339, 0, 0, -762, -762,
2617 0, 0, -450, 0, 0, 0, 346, 347, 0, 0,
2618 0, -450, -450, -450, -450, -450, -450, -450, -450, -450,
2619 -450, -450, -450, -450, 0, 0, 0, 0, -450, -450,
2620 -450, -450, 0, 0, -450, 0, 0, 0, 0, 0,
2621 -450, 349, 350, 351, 352, 353, 354, 355, 356, 357,
2622 358, 0, 0, 0, -450, 0, 0, 0, 0, 0,
2623 0, -450, 0, -450, -450, -450, -450, -450, -450, -450,
2624 -450, -450, -450, 0, 0, 0, 0, -450, -450, -450,
2625 -450, -303, 233, -450, -450, -450, 0, -450, 0, -303,
2626 -303, -303, 0, 0, -303, -303, -303, 0, -303, 0,
2627 0, 0, 0, 0, 0, 0, -303, 0, -303, -303,
2628 -303, 0, 0, 0, 0, 0, 0, 0, -303, -303,
2629 0, -303, -303, -303, -303, -303, 0, 0, 0, 0,
2630 0, 0, 0, 0, 0, 0, 333, 334, 335, 336,
2631 337, 338, 339, 0, 0, 342, 343, 0, 0, -303,
2632 0, 0, 0, 346, 347, 0, 0, 0, -303, -303,
2633 -303, -303, -303, -303, -303, -303, -303, -303, -303, -303,
2634 -303, 0, 0, 0, 0, -303, -303, -303, -303, 0,
2635 0, -303, 0, 0, 0, 0, 0, -303, 349, 350,
2636 351, 352, 353, 354, 355, 356, 357, 358, 0, 0,
2637 0, -303, 0, 0, -303, 0, 0, 0, -303, -303,
2638 -303, -303, -303, -303, -303, -303, -303, -303, -303, -303,
2639 0, 0, 0, 0, 0, -303, -303, -303, -761, 0,
2640 -303, -303, -303, 0, -303, 0, -761, -761, -761, 0,
2641 0, -761, -761, -761, 0, -761, 0, 0, 0, 0,
2642 0, 0, 0, -761, -761, -761, -761, 0, 0, 0,
2643 0, 0, 0, 0, 0, -761, -761, 0, -761, -761,
2644 -761, -761, -761, 0, 0, 0, 0, 0, 0, 0,
2645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2646 0, 0, 0, 0, 0, 0, -761, 0, 0, 0,
2647 0, 0, 0, 0, 0, -761, -761, -761, -761, -761,
2648 -761, -761, -761, -761, -761, -761, -761, -761, 0, 0,
2649 0, 0, -761, -761, -761, -761, 0, 0, -761, 0,
2650 0, 0, 0, 0, -761, 0, 0, 0, 0, 0,
2651 0, 0, 0, 0, 0, 0, 0, 0, -761, 0,
2652 0, 0, 0, 0, 0, -761, 0, -761, -761, -761,
2653 -761, -761, -761, -761, -761, -761, -761, 0, 0, 0,
2654 0, -761, -761, -761, -761, -318, 233, -761, -761, -761,
2655 0, -761, 0, -318, -318, -318, 0, 0, -318, -318,
2656 -318, 0, -318, 0, 0, 0, 0, 0, 0, 0,
2657 -318, 0, -318, -318, 0, 0, 0, 0, 0, 0,
2658 0, 0, -318, -318, 0, -318, -318, -318, -318, -318,
2659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2661 0, 0, 0, -318, 0, 0, 0, 0, 0, 0,
2662 0, 0, -318, -318, -318, -318, -318, -318, -318, -318,
2663 -318, -318, -318, -318, -318, 0, 0, 0, 0, -318,
2664 -318, -318, -318, 0, 0, -318, 0, 0, 0, 0,
2665 0, -318, 0, 0, 0, 0, 0, 0, 0, 0,
2666 0, 0, 0, 0, 0, -318, 0, 0, 0, 0,
2667 0, 0, -318, 0, -318, -318, -318, -318, -318, -318,
2668 -318, -318, -318, -318, 0, 0, 0, 0, 0, -318,
2669 -318, -318, -738, 230, -318, -318, -318, 0, -318, 0,
2670 -738, -738, -738, 0, 0, 0, -738, -738, 0, -738,
2671 0, 0, 0, 0, 0, 0, 0, -738, -738, 0,
2672 0, 0, 0, 0, 0, 0, 0, 0, 0, -738,
2673 -738, 0, -738, -738, -738, -738, -738, 0, 0, 0,
2674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2676 -738, 0, 0, 0, 0, 0, 0, 0, 0, -738,
2677 -738, -738, -738, -738, -738, -738, -738, -738, -738, -738,
2678 -738, -738, 0, 0, 0, 0, -738, -738, -738, -738,
2679 0, 692, 0, 0, 0, 0, 0, 0, 0, 0,
2680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2681 0, 0, -738, 0, 0, 0, 0, 0, -116, -738,
2682 0, -738, -738, -738, -738, -738, -738, -738, -738, -738,
2683 -738, 0, 0, 0, 0, -738, -738, -738, -107, -738,
2684 0, -738, 0, -738, 0, -738, 0, -738, -738, -738,
2685 0, 0, 0, -738, -738, 0, -738, 0, 0, 0,
2686 0, 0, 0, 0, -738, -738, 0, 0, 0, 0,
2687 0, 0, 0, 0, 0, 0, -738, -738, 0, -738,
2688 -738, -738, -738, -738, 0, 0, 0, 0, 0, 0,
2689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2690 0, 0, 0, 0, 0, 0, 0, -738, 0, 0,
2691 0, 0, 0, 0, 0, 0, -738, -738, -738, -738,
2692 -738, -738, -738, -738, -738, -738, -738, -738, -738, 0,
2693 0, 0, 0, -738, -738, -738, -738, 0, 692, 0,
2694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2695 0, 0, 0, 0, 0, 0, 0, 0, 0, -738,
2696 0, 0, 0, 0, 0, -116, -738, 0, -738, -738,
2697 -738, -738, -738, -738, -738, -738, -738, -738, 0, 0,
2698 0, 0, -738, -738, -738, -738, -311, 0, -738, 0,
2699 -738, 0, -738, 0, -311, -311, -311, 0, 0, 0,
2700 -311, -311, 0, -311, 0, 0, 0, 0, 0, 0,
2701 0, -311, 0, 0, 0, 0, 0, 0, 0, 0,
2702 0, 0, 0, -311, -311, 0, -311, -311, -311, -311,
2703 -311, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2705 0, 0, 0, 0, -311, 0, 0, 0, 0, 0,
2706 0, 0, 0, -311, -311, -311, -311, -311, -311, -311,
2707 -311, -311, -311, -311, -311, -311, 0, 0, 0, 0,
2708 -311, -311, -311, -311, 0, 693, 0, 0, 0, 0,
2709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2710 0, 0, 0, 0, 0, 0, -311, 0, 0, 0,
2711 0, 0, -118, -311, 0, -311, -311, -311, -311, -311,
2712 -311, -311, -311, -311, -311, 0, 0, 0, 0, 0,
2713 -311, -311, -109, -311, 0, -311, 0, -311, 0, -311,
2714 0, -311, -311, -311, 0, 0, 0, -311, -311, 0,
2715 -311, 0, 0, 0, 0, 0, 0, 0, -311, 0,
2716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2717 -311, -311, 0, -311, -311, -311, -311, -311, 0, 0,
2718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2720 0, -311, 0, 0, 0, 0, 0, 0, 0, 0,
2721 -311, -311, -311, -311, -311, -311, -311, -311, -311, -311,
2722 -311, -311, -311, 0, 0, 0, 0, -311, -311, -311,
2723 -311, 0, 693, 0, 0, 0, 0, 0, 0, 0,
2724 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2725 0, 0, 0, -311, 0, 0, 0, 0, 0, -118,
2726 -311, 0, -311, -311, -311, -311, -311, -311, -311, -311,
2727 -311, -311, 0, 0, 0, 0, 0, -311, -311, -311,
2728 0, 0, -311, 0, -311, 257, -311, 5, 6, 7,
2729 8, 9, -761, -761, -761, 10, 11, 0, 0, -761,
2730 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2731 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2732 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2733 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
2734 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2735 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
2736 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2737 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
2738 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
2739 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
2740 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2742 0, 0, 0, 67, 68, 69, 0, 0, 0, 0,
2743 0, 0, 0, 0, 0, -761, 257, -761, 5, 6,
2744 7, 8, 9, 0, 0, -761, 10, 11, 0, -761,
2745 -761, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2746 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2747 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2748 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2749 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2750 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2751 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2752 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2753 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2754 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2755 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2757 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2758 0, 0, 0, 0, 0, 0, -761, 257, -761, 5,
2759 6, 7, 8, 9, 0, 0, -761, 10, 11, 0,
2760 0, -761, 12, -761, 13, 14, 15, 16, 17, 18,
2761 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2762 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2763 0, 28, 29, 258, 31, 32, 33, 34, 35, 36,
2764 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2765 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2766 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2767 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2768 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2769 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2770 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2772 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
2773 0, 0, 0, 0, 0, 0, 0, -761, 257, -761,
2774 5, 6, 7, 8, 9, 0, 0, -761, 10, 11,
2775 0, 0, -761, 12, 0, 13, 14, 15, 16, 17,
2776 18, 19, -761, 0, 0, 0, 0, 20, 21, 22,
2777 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2778 0, 0, 28, 29, 258, 31, 32, 33, 34, 35,
2779 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2780 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2781 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2782 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2783 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
2784 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
2785 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2787 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
2788 0, 0, 0, 0, 0, 0, 0, 0, -761, 257,
2789 -761, 5, 6, 7, 8, 9, 0, 0, -761, 10,
2790 11, 0, 0, -761, 12, 0, 13, 14, 15, 16,
2791 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
2792 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2793 0, 0, 0, 28, 29, 258, 31, 32, 33, 34,
2794 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2795 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
2796 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
2797 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
2798 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
2799 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
2800 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2801 0, 0, 0, 0, 0, 257, 0, 5, 6, 7,
2802 8, 9, 0, -761, -761, 10, 11, 67, 68, 69,
2803 12, 0, 13, 14, 15, 16, 17, 18, 19, -761,
2804 0, -761, 0, 0, 20, 21, 22, 23, 24, 25,
2805 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2806 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
2807 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2808 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
2809 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2810 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
2811 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
2812 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
2813 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2814 0, 257, 0, 5, 6, 7, 8, 9, 0, 0,
2815 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
2816 15, 16, 17, 18, 19, -761, 0, -761, 0, 0,
2817 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2818 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
2819 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2820 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
2821 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
2822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2823 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
2824 0, 259, 54, 0, 55, 56, 0, 57, 0, 0,
2825 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
2826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2827 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
2828 68, 69, 0, 0, 0, 0, 0, 0, 0, -761,
2829 0, -761, 257, -761, 5, 6, 7, 8, 9, 0,
2830 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
2831 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
2832 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2833 27, 0, 0, 0, 0, 0, 28, 29, 258, 31,
2834 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2835 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2836 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2837 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2838 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
2839 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
2840 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2843 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
2844 -761, 0, -761, 4, -761, 5, 6, 7, 8, 9,
2845 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
2846 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2847 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2848 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
2849 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2850 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2851 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2853 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2854 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2855 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2856 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2858 0, 67, 68, 69, 0, 0, -761, 0, 0, 0,
2859 0, 0, 0, -761, 257, -761, 5, 6, 7, 8,
2860 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
2861 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2862 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2863 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2864 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2865 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2866 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2868 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2869 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2870 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2871 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2873 0, 0, 67, 68, 69, 0, 0, -761, 0, 0,
2874 0, 0, 0, 0, -761, 257, -761, 5, 6, 7,
2875 8, 9, 0, 0, -761, 10, 11, 0, 0, 0,
2876 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2877 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2878 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2879 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
2880 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2881 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
2882 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2883 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
2884 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
2885 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
2886 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2887 0, 257, 0, 5, 6, 7, 8, 9, 0, 0,
2888 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
2889 15, 16, 17, 18, 19, -761, 0, -761, 0, 0,
2890 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2891 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
2892 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2893 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
2894 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
2895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2896 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
2897 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
2898 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
2899 -761, 0, 0, 0, 0, 0, 0, 0, 0, 5,
2900 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
2901 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
2902 19, -761, 0, -761, 0, 0, 20, 21, 22, 23,
2903 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
2904 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
2905 37, 38, 39, 40, 207, 41, 42, 43, 44, 45,
2906 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2907 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2908 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2909 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
2910 55, 56, 0, 210, 211, 212, 58, 59, 213, 61,
2911 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2912 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
2913 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
2914 13, 14, 15, 16, 17, 18, 19, 0, 0, 237,
2915 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2916 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
2917 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2918 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2919 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2921 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2922 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
2923 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2924 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2925 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
2926 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
2927 17, 18, 19, 305, 0, 306, 0, 0, 20, 21,
2928 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
2929 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
2930 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2931 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
2932 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
2933 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
2934 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
2935 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
2936 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2937 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2938 8, 9, 0, 0, 0, 10, 11, 67, 68, 69,
2939 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2940 0, 237, 0, 0, 20, 21, 22, 23, 24, 25,
2941 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2942 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
2943 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2944 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
2945 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2946 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
2947 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
2948 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
2949 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2950 0, 0, 0, 5, 6, 7, 8, 9, 0, 0,
2951 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
2952 15, 16, 17, 18, 19, 503, 0, 0, 0, 0,
2953 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2954 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
2955 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2956 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
2957 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
2958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2959 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
2960 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
2961 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
2962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2963 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
2964 68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
2965 0, 503, 126, 127, 128, 129, 130, 131, 132, 133,
2966 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2967 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
2968 151, 152, 395, 396, 397, 398, 157, 158, 159, 0,
2969 0, 0, 0, 0, 160, 161, 162, 163, 399, 400,
2970 401, 402, 168, 37, 38, 403, 40, 0, 0, 0,
2971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2972 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
2973 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
2974 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
2975 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
2976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2977 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
2978 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
2979 198, 0, 0, 0, 0, 0, 199, 404, 126, 127,
2980 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
2981 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
2982 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
2983 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
2984 160, 161, 162, 163, 164, 165, 166, 167, 168, 288,
2985 289, 169, 290, 0, 0, 0, 0, 0, 0, 0,
2986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2987 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
2988 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
2989 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2990 0, 0, 185, 186, 0, 0, 0, 0, 0, 0,
2991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2992 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
2993 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
2994 0, 0, 199, 126, 127, 128, 129, 130, 131, 132,
2995 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
2996 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
2997 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
2998 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
2999 165, 166, 167, 168, 239, 0, 169, 0, 0, 0,
3000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3001 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
3002 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
3003 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
3004 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
3005 0, 59, 0, 0, 0, 0, 0, 0, 0, 0,
3006 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
3007 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
3008 197, 198, 0, 0, 0, 0, 0, 199, 126, 127,
3009 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3010 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3011 148, 149, 0, 0, 0, 150, 151, 152, 153, 154,
3012 155, 156, 157, 158, 159, 0, 0, 0, 0, 0,
3013 160, 161, 162, 163, 164, 165, 166, 167, 168, 0,
3014 0, 169, 0, 0, 0, 0, 0, 0, 0, 0,
3015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3016 170, 171, 172, 173, 174, 175, 176, 177, 178, 0,
3017 0, 179, 180, 0, 0, 0, 0, 181, 182, 183,
3018 184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3019 0, 0, 185, 186, 0, 0, 59, 0, 0, 0,
3020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3021 0, 0, 0, 0, 187, 188, 189, 190, 191, 192,
3022 193, 194, 195, 196, 0, 197, 198, 0, 0, 0,
3023 0, 0, 199, 126, 127, 128, 129, 130, 131, 132,
3024 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3025 143, 144, 145, 146, 147, 148, 149, 0, 0, 0,
3026 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
3027 0, 0, 0, 0, 0, 160, 161, 162, 163, 164,
3028 165, 166, 167, 168, 0, 0, 169, 0, 0, 0,
3029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3030 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
3031 175, 176, 177, 178, 0, 0, 179, 180, 0, 0,
3032 0, 0, 181, 182, 183, 184, 0, 0, 0, 0,
3033 0, 0, 0, 0, 0, 0, 0, 185, 186, 0,
3034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3035 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
3036 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
3037 197, 198, 5, 6, 7, 0, 9, 199, 0, 0,
3038 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
3039 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3040 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3041 0, 0, 0, 0, 0, 277, 0, 0, 32, 33,
3042 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3043 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3046 0, 0, 0, 0, 0, 0, 0, 278, 0, 0,
3047 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3048 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3050 0, 5, 6, 7, 0, 9, 0, 0, 279, 10,
3051 11, 0, 0, 0, 12, 280, 13, 14, 15, 245,
3052 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3053 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3054 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3055 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3056 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3059 0, 0, 0, 0, 0, 0, 278, 0, 0, 209,
3060 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3061 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3063 5, 6, 7, 8, 9, 0, 0, 279, 10, 11,
3064 0, 0, 0, 12, 526, 13, 14, 15, 16, 17,
3065 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3066 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3067 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
3068 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3069 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3070 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3071 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3072 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3073 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3074 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3075 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3076 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
3077 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3078 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3079 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3080 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3081 40, 207, 41, 42, 43, 44, 45, 46, 47, 0,
3082 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3084 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3085 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3086 210, 211, 212, 58, 59, 213, 61, 62, 63, 64,
3087 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3088 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
3089 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3090 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3091 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3092 0, 0, 0, 0, 28, 29, 0, 31, 32, 33,
3093 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3094 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3095 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3096 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3097 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3098 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3099 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3100 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3101 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
3102 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3103 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3104 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3105 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3106 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
3107 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3108 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3109 0, 0, 0, 0, 0, 50, 439, 0, 0, 0,
3110 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3111 56, 0, 210, 211, 212, 58, 59, 213, 61, 62,
3112 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3113 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3114 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3115 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3116 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3117 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3118 32, 33, 34, 35, 36, 37, 38, 39, 40, 207,
3119 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3120 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3122 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3123 0, 0, 209, 54, 0, 55, 56, 0, 621, 211,
3124 212, 58, 59, 213, 61, 62, 63, 64, 65, 66,
3125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3126 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3127 67, 214, 69, 12, 0, 13, 14, 15, 245, 246,
3128 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3129 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3130 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3131 36, 37, 38, 39, 40, 207, 41, 42, 43, 44,
3132 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3133 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3134 0, 0, 0, 0, 0, 0, 0, 50, 439, 0,
3135 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3136 0, 55, 56, 0, 621, 211, 212, 58, 59, 213,
3137 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3138 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3139 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3140 0, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3141 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3142 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3143 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3144 40, 207, 41, 42, 43, 44, 45, 46, 47, 0,
3145 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3147 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3148 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3149 210, 211, 0, 58, 59, 213, 61, 62, 63, 64,
3150 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3151 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3152 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3153 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3154 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3155 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3156 34, 35, 36, 37, 38, 39, 40, 207, 41, 42,
3157 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3158 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3159 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3160 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3161 209, 54, 0, 55, 56, 0, 0, 211, 212, 58,
3162 59, 213, 61, 62, 63, 64, 65, 66, 0, 0,
3163 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3164 7, 0, 9, 0, 0, 0, 10, 11, 67, 214,
3165 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3166 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3167 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3168 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3169 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
3170 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3171 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3172 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3173 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3174 56, 0, 621, 211, 0, 58, 59, 213, 61, 62,
3175 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3176 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3177 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3178 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3179 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3180 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3181 32, 33, 34, 35, 36, 37, 38, 39, 40, 207,
3182 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3183 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3185 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3186 0, 0, 209, 54, 0, 55, 56, 0, 0, 211,
3187 0, 58, 59, 213, 61, 62, 63, 64, 65, 66,
3188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3189 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3190 67, 214, 69, 12, 0, 13, 14, 15, 16, 17,
3191 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3192 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3193 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3194 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3195 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3196 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3197 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3198 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3199 0, 55, 56, 0, 519, 0, 0, 58, 59, 60,
3200 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3201 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3202 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3203 0, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3204 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3205 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3206 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3207 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3208 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3210 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3211 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3212 773, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3213 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3214 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3215 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3216 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3217 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3218 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3219 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3220 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3221 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3222 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3223 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3224 209, 54, 0, 55, 56, 0, 519, 0, 0, 58,
3225 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3226 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3227 7, 0, 9, 0, 0, 0, 10, 11, 67, 214,
3228 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3229 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3230 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3231 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3232 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3233 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3234 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3235 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3236 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
3237 56, 0, 846, 0, 0, 58, 59, 60, 61, 62,
3238 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3239 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3240 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
3241 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3242 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3243 206, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3244 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3245 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3246 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3247 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3248 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
3249 0, 0, 209, 54, 0, 55, 56, 0, 1019, 0,
3250 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3252 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3253 67, 214, 69, 12, 0, 13, 14, 15, 245, 246,
3254 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3255 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3256 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3257 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3258 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3259 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3260 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3261 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
3262 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3263 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3264 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3265 9, 0, 0, 0, 10, 11, 67, 214, 69, 12,
3266 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3267 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3268 0, 0, 206, 0, 0, 0, 0, 0, 0, 29,
3269 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3270 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3271 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3273 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3274 0, 208, 0, 0, 209, 54, 0, 55, 56, 0,
3275 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3276 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3277 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3278 10, 11, 67, 214, 69, 12, 0, 13, 14, 15,
3279 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3280 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3281 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3282 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3283 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3284 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3285 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3286 51, 0, 0, 0, 0, 0, 0, 208, 0, 0,
3287 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3288 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3289 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3290 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
3291 69, 12, 0, 13, 14, 15, 245, 246, 18, 19,
3292 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3293 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3294 0, 277, 0, 0, 32, 33, 34, 35, 36, 37,
3295 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3296 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3297 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3299 0, 0, 0, 278, 0, 0, 328, 54, 0, 55,
3300 56, 0, 329, 0, 0, 58, 59, 60, 61, 62,
3301 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3302 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3303 0, 0, 0, 12, 279, 13, 14, 15, 245, 246,
3304 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3305 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3306 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
3307 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3308 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3311 0, 0, 0, 0, 0, 376, 0, 0, 53, 54,
3312 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3313 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3314 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3315 10, 11, 0, 0, 0, 12, 279, 13, 14, 15,
3316 245, 246, 18, 19, 0, 0, 0, 0, 0, 20,
3317 247, 248, 23, 24, 25, 26, 0, 0, 206, 0,
3318 0, 0, 0, 0, 0, 277, 0, 0, 32, 33,
3319 34, 384, 36, 37, 38, 385, 40, 0, 41, 42,
3320 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3323 0, 0, 0, 386, 0, 0, 0, 387, 0, 0,
3324 209, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3325 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3326 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3327 0, 0, 10, 11, 0, 0, 0, 12, 279, 13,
3328 14, 15, 245, 246, 18, 19, 0, 0, 0, 0,
3329 0, 20, 247, 248, 23, 24, 25, 26, 0, 0,
3330 206, 0, 0, 0, 0, 0, 0, 277, 0, 0,
3331 32, 33, 34, 384, 36, 37, 38, 385, 40, 0,
3332 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3335 0, 0, 0, 0, 0, 0, 0, 0, 0, 387,
3336 0, 0, 209, 54, 0, 55, 56, 0, 0, 0,
3337 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3338 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3339 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3340 279, 13, 14, 15, 245, 246, 18, 19, 0, 0,
3341 0, 0, 0, 20, 247, 248, 23, 24, 25, 26,
3342 0, 0, 206, 0, 0, 0, 0, 0, 0, 277,
3343 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3344 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3348 0, 278, 0, 0, 328, 54, 0, 55, 56, 0,
3349 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3350 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
3351 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
3352 0, 12, 279, 13, 14, 15, 245, 246, 18, 19,
3353 0, 0, 0, 0, 0, 20, 247, 248, 23, 24,
3354 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
3355 0, 277, 0, 0, 32, 33, 34, 35, 36, 37,
3356 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3357 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3360 0, 0, 0, 1009, 0, 0, 209, 54, 0, 55,
3361 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3362 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3363 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3364 0, 0, 0, 12, 279, 13, 14, 15, 245, 246,
3365 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
3366 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
3367 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
3368 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3369 45, 46, 47, 23, 24, 25, 26, 0, 0, 0,
3370 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
3371 33, 34, 784, 0, 0, 0, 785, 0, 0, 41,
3372 42, 43, 44, 45, 0, 1062, 0, 0, 209, 54,
3373 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3374 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3375 786, 787, 0, 0, 0, 0, 0, 0, 788, 0,
3376 0, 789, 0, 0, 790, 791, 279, 980, 0, 0,
3377 792, 59, 60, 61, 62, 63, 64, 65, 66, 23,
3378 24, 25, 26, 0, 0, 0, 0, 0, 0, 0,
3379 0, 0, 793, 0, 0, 32, 33, 34, 784, 279,
3380 0, 0, 785, 0, 0, 41, 42, 43, 44, 45,
3381 0, 0, 23, 24, 25, 26, 0, 0, 0, 0,
3382 0, 0, 0, 0, 0, 0, 0, 0, 32, 33,
3383 34, 784, 0, 0, 0, 785, 786, 787, 41, 42,
3384 43, 44, 45, 0, 788, 0, 0, 789, 0, 0,
3385 790, 791, 0, 1077, 0, 0, 792, 59, 60, 61,
3386 62, 63, 64, 65, 66, 0, 0, 0, 0, 786,
3387 787, 0, 0, 0, 0, 0, 0, 788, 793, 0,
3388 789, 0, 0, 790, 791, 279, 0, 0, 0, 792,
3389 59, 60, 61, 62, 63, 64, 65, 66, 564, 565,
3390 0, 0, 566, 0, 0, 0, 0, 0, 0, 0,
3391 0, 793, 0, 0, 0, 0, 0, 0, 279, 0,
3392 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3393 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3394 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3395 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3398 192, 193, 194, 195, 196, 0, 197, 198, 573, 574,
3399 0, 0, 575, 199, 233, 0, 0, 0, 0, 0,
3400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3401 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3402 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3403 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3404 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3406 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3407 192, 193, 194, 195, 196, 0, 197, 198, 625, 565,
3408 0, 0, 626, 199, 233, 0, 0, 0, 0, 0,
3409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3410 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3411 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3412 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3413 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3415 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3416 192, 193, 194, 195, 196, 0, 197, 198, 628, 574,
3417 0, 0, 629, 199, 233, 0, 0, 0, 0, 0,
3418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3419 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3420 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3421 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3422 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3424 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3425 192, 193, 194, 195, 196, 0, 197, 198, 653, 565,
3426 0, 0, 654, 199, 233, 0, 0, 0, 0, 0,
3427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3428 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3429 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3430 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3431 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3433 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3434 192, 193, 194, 195, 196, 0, 197, 198, 656, 574,
3435 0, 0, 657, 199, 233, 0, 0, 0, 0, 0,
3436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3437 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3438 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3439 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3440 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3442 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3443 192, 193, 194, 195, 196, 0, 197, 198, 724, 565,
3444 0, 0, 725, 199, 233, 0, 0, 0, 0, 0,
3445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3446 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3447 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3448 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3449 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3451 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3452 192, 193, 194, 195, 196, 0, 197, 198, 727, 574,
3453 0, 0, 728, 199, 233, 0, 0, 0, 0, 0,
3454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3455 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3456 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3457 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3458 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3460 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3461 192, 193, 194, 195, 196, 0, 197, 198, 733, 565,
3462 0, 0, 734, 199, 233, 0, 0, 0, 0, 0,
3463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3464 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3465 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3466 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3467 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3469 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3470 192, 193, 194, 195, 196, 0, 197, 198, 610, 574,
3471 0, 0, 611, 199, 233, 0, 0, 0, 0, 0,
3472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3473 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3474 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3475 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3476 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3478 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3479 192, 193, 194, 195, 196, 0, 197, 198, 779, 565,
3480 0, 0, 780, 199, 233, 0, 0, 0, 0, 0,
3481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3482 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3483 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3484 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3485 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3487 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3488 192, 193, 194, 195, 196, 0, 197, 198, 782, 574,
3489 0, 0, 783, 199, 233, 0, 0, 0, 0, 0,
3490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3491 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3492 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3493 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3494 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3496 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3497 192, 193, 194, 195, 196, 0, 197, 198, 1161, 565,
3498 0, 0, 1162, 199, 233, 0, 0, 0, 0, 0,
3499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3500 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3501 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3502 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3503 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3505 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3506 192, 193, 194, 195, 196, 0, 197, 198, 1164, 574,
3507 0, 0, 1165, 199, 233, 0, 0, 0, 0, 0,
3508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3509 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3510 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3511 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3512 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3514 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3515 192, 193, 194, 195, 196, 0, 197, 198, 1196, 565,
3516 0, 0, 1197, 199, 233, 0, 0, 0, 0, 0,
3517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3518 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3519 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3520 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3521 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3523 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3524 192, 193, 194, 195, 196, 0, 197, 198, 610, 574,
3525 0, 0, 611, 199, 233, 0, 0, 0, 0, 0,
3526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3527 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
3528 0, 0, 179, 180, 0, 0, 0, 0, 181, 182,
3529 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
3530 0, 0, 0, 185, 186, 0, 0, 0, 0, 0,
3531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3532 0, 0, 0, 0, 0, 187, 188, 189, 190, 191,
3533 192, 193, 194, 195, 196, 0, 197, 198, 0, 0,
3539 2, 59, 53, 89, 60, 369, 102, 22, 91, 92,
3540 8, 71, 95, 8, 364, 101, 71, 28, 712, 94,
3541 16, 17, 227, 4, 331, 57, 92, 634, 271, 95,
3542 28, 719, 275, 28, 2, 95, 4, 897, 898, 13,
3543 433, 99, 387, 68, 425, 363, 67, 365, 16, 17,
3544 627, 83, 433, 55, 56, 16, 17, 83, 95, 604,
3545 53, 59, 25, 78, 96, 97, 98, 331, 57, 1044,
3546 2, 1072, 4, 1112, 13, 897, 898, 963, 655, 429,
3547 473, 27, 22, 1110, 860, 53, 54, 690, 858, 57,
3548 860, 482, 868, 411, 55, 295, 296, 25, 868, 928,
3549 68, 99, 68, 100, 100, 259, 414, 415, 16, 17,
3550 428, 1068, 430, 146, 0, 83, 16, 17, 1033, 13,
3551 153, 26, 54, 91, 92, 66, 153, 95, 96, 97,
3552 98, 97, 100, 68, 484, 526, 222, 1052, 78, 100,
3553 458, 870, 25, 786, 787, 1060, 68, 55, 56, 726,
3554 414, 415, 25, 236, 1033, 238, 153, 213, 209, 736,
3555 1151, 96, 97, 126, 1155, 251, 25, 485, 1054, 25,
3556 37, 38, 146, 1052, 328, 97, 1215, 151, 119, 153,
3557 56, 25, 958, 146, 146, 148, 149, 732, 958, 1216,
3558 153, 153, 100, 244, 1023, 1024, 1018, 283, 946, 947,
3559 100, 261, 1177, 1204, 781, 151, 261, 153, 259, 148,
3560 145, 13, 151, 790, 153, 13, 13, 1208, 146, 221,
3561 148, 969, 970, 971, 261, 227, 13, 310, 311, 312,
3562 313, 233, 315, 316, 230, 1192, 232, 233, 143, 444,
3563 242, 209, 592, 636, 310, 311, 312, 313, 280, 892,
3564 893, 858, 602, 634, 280, 636, 601, 151, 279, 153,
3565 25, 13, 230, 146, 232, 233, 259, 1182, 236, 230,
3566 238, 232, 233, 146, 242, 593, 244, 328, 881, 882,
3567 27, 1110, 29, 1112, 1199, 603, 153, 146, 371, 257,
3568 146, 259, 683, 379, 897, 898, 25, 329, 498, 13,
3569 500, 326, 146, 386, 1033, 371, 331, 852, 248, 249,
3570 242, 1171, 280, 373, 859, 1044, 52, 698, 895, 370,
3571 29, 372, 230, 1052, 232, 257, 13, 1021, 309, 874,
3572 230, 1060, 232, 1021, 13, 328, 373, 25, 688, 1068,
3573 329, 309, 310, 311, 312, 313, 314, 315, 316, 151,
3574 148, 153, 109, 151, 151, 153, 153, 25, 326, 52,
3575 328, 329, 364, 331, 151, 326, 153, 365, 364, 687,
3576 331, 689, 695, 1121, 25, 25, 133, 309, 983, 143,
3577 703, 146, 314, 148, 692, 693, 1215, 1216, 991, 414,
3578 415, 699, 700, 26, 1142, 884, 364, 126, 366, 151,
3579 707, 153, 370, 371, 372, 982, 66, 650, 897, 898,
3580 146, 37, 38, 411, 123, 1018, 68, 146, 386, 624,
3581 149, 685, 99, 143, 153, 365, 1033, 429, 692, 693,
3582 1007, 1008, 430, 429, 152, 699, 700, 151, 97, 153,
3583 442, 452, 444, 788, 96, 97, 414, 415, 1177, 126,
3584 482, 537, 99, 146, 452, 100, 482, 452, 146, 119,
3585 458, 429, 662, 1192, 151, 26, 153, 667, 152, 146,
3586 1075, 126, 151, 866, 153, 126, 126, 100, 146, 126,
3587 82, 83, 484, 68, 848, 866, 145, 485, 484, 148,
3588 430, 146, 68, 145, 526, 146, 146, 465, 149, 149,
3589 526, 146, 153, 153, 66, 67, 150, 68, 1053, 153,
3590 143, 819, 97, 77, 482, 148, 484, 425, 458, 594,
3591 96, 97, 605, 146, 414, 415, 586, 129, 130, 1018,
3592 277, 582, 148, 584, 99, 96, 97, 153, 68, 903,
3593 152, 431, 432, 870, 908, 485, 1151, 1036, 753, 894,
3594 1155, 1245, 99, 66, 569, 819, 639, 66, 526, 121,
3595 122, 126, 470, 578, 68, 152, 96, 97, 1171, 459,
3596 572, 858, 136, 137, 138, 1064, 578, 28, 580, 126,
3597 34, 146, 143, 870, 145, 1130, 1163, 148, 14, 15,
3598 592, 15, 96, 97, 1083, 593, 592, 612, 52, 68,
3599 602, 25, 1207, 1208, 68, 603, 602, 618, 121, 122,
3600 612, 68, 121, 122, 582, 145, 584, 99, 148, 651,
3601 618, 126, 624, 618, 592, 651, 68, 96, 97, 569,
3602 68, 146, 96, 97, 602, 58, 604, 605, 578, 152,
3603 97, 145, 644, 152, 126, 741, 126, 2, 731, 4,
3604 99, 683, 99, 593, 77, 97, 112, 683, 96, 97,
3605 685, 16, 17, 603, 146, 731, 66, 692, 693, 99,
3606 730, 639, 612, 68, 699, 700, 145, 126, 729, 126,
3607 68, 145, 740, 651, 99, 108, 688, 99, 146, 112,
3608 56, 689, 688, 146, 68, 153, 26, 146, 53, 54,
3609 68, 96, 97, 643, 644, 707, 708, 145, 710, 97,
3610 712, 126, 680, 68, 126, 683, 684, 685, 66, 119,
3611 688, 121, 122, 97, 692, 693, 634, 68, 148, 97,
3612 68, 699, 700, 1060, 146, 1099, 91, 92, 68, 126,
3613 95, 1068, 740, 1070, 1094, 100, 707, 9, 680, 689,
3614 145, 753, 684, 15, 837, 96, 97, 1044, 96, 97,
3615 1047, 729, 99, 731, 732, 99, 96, 97, 770, 68,
3616 772, 837, 58, 121, 122, 144, 124, 1095, 34, 100,
3617 831, 1068, 66, 1070, 153, 836, 146, 99, 68, 126,
3618 698, 77, 126, 853, 819, 99, 52, 96, 97, 68,
3619 68, 146, 692, 693, 145, 68, 553, 145, 870, 699,
3620 700, 68, 146, 143, 126, 145, 68, 97, 148, 148,
3621 871, 99, 108, 109, 571, 827, 99, 96, 97, 97,
3622 88, 89, 99, 96, 97, 119, 77, 121, 122, 96,
3623 97, 40, 41, 66, 96, 97, 145, 133, 126, 518,
3624 148, 819, 99, 126, 209, 906, 148, 747, 748, 126,
3625 750, 751, 149, 831, 915, 1192, 66, 1194, 836, 837,
3626 902, 126, 1199, 146, 1201, 230, 145, 232, 233, 126,
3627 627, 236, 145, 238, 852, 99, 99, 242, 145, 244,
3628 1177, 859, 1179, 145, 56, 955, 119, 1184, 121, 122,
3629 150, 124, 257, 871, 259, 1192, 874, 1194, 655, 144,
3630 579, 1238, 126, 126, 1201, 146, 585, 54, 587, 119,
3631 77, 121, 122, 26, 124, 1011, 77, 64, 65, 819,
3632 106, 987, 52, 52, 902, 967, 56, 56, 906, 149,
3633 146, 56, 944, 153, 946, 947, 1233, 915, 1004, 151,
3634 151, 1238, 153, 25, 309, 310, 311, 312, 313, 314,
3635 315, 316, 130, 77, 1015, 68, 1017, 969, 970, 971,
3636 15, 326, 17, 328, 864, 149, 331, 66, 144, 726,
3637 94, 95, 146, 134, 135, 136, 137, 138, 146, 736,
3638 870, 144, 146, 96, 97, 144, 146, 66, 1060, 967,
3639 10, 146, 1064, 146, 146, 1056, 1068, 44, 1070, 364,
3640 44, 366, 146, 126, 1016, 370, 371, 372, 8, 1021,
3641 134, 135, 136, 137, 138, 13, 66, 1059, 25, 152,
3642 119, 386, 121, 122, 781, 17, 152, 144, 870, 150,
3643 143, 146, 145, 790, 791, 148, 128, 1015, 15, 1017,
3644 119, 720, 121, 122, 723, 59, 60, 61, 62, 414,
3645 415, 54, 55, 690, 57, 858, 146, 860, 737, 148,
3646 131, 64, 65, 146, 429, 868, 52, 870, 100, 119,
3647 1131, 121, 122, 131, 236, 1053, 1169, 1170, 1056, 100,
3648 146, 1059, 1094, 144, 1096, 52, 1098, 1095, 1094, 126,
3649 146, 52, 146, 1169, 1170, 40, 41, 42, 43, 44,
3650 465, 146, 264, 146, 146, 2, 268, 4, 52, 1121,
3651 146, 126, 131, 870, 56, 146, 1094, 146, 146, 484,
3652 1192, 52, 1194, 54, 55, 56, 57, 1199, 146, 1201,
3653 1142, 52, 9, 54, 55, 56, 57, 146, 895, 52,
3654 151, 54, 55, 56, 57, 1095, 1036, 146, 131, 786,
3655 787, 1041, 1130, 1131, 56, 958, 53, 54, 146, 838,
3656 57, 146, 841, 52, 146, 844, 1238, 146, 146, 2,
3657 1060, 4, 851, 146, 1064, 854, 146, 146, 1068, 120,
3658 1070, 1242, 144, 16, 17, 149, 83, 146, 101, 146,
3659 146, 1169, 1170, 52, 1036, 54, 55, 56, 57, 96,
3660 97, 98, 99, 146, 242, 461, 963, 146, 146, 146,
3661 146, 465, 96, 148, 148, 98, 146, 582, 1060, 584,
3662 53, 54, 1064, 146, 87, 982, 1068, 592, 1070, 77,
3663 1033, 988, 612, 1245, 1098, 68, 708, 602, 917, 604,
3664 605, 1044, 101, 1023, 881, 882, 94, 95, 107, 1052,
3665 1007, 1008, 1110, 870, 891, 892, 893, 1060, 91, 92,
3666 897, 898, 95, 772, 1242, 1068, 887, 100, 1204, 742,
3667 514, 973, 974, 435, 639, 954, 324, 1245, 440, 1083,
3668 891, 443, 1018, 1083, 446, 133, 134, 135, 136, 137,
3669 138, 1083, 105, 889, 1096, 1016, 500, 1054, 99, 957,
3670 462, 1036, 1192, 1064, 1194, 467, 1060, 988, -1, 1199,
3671 -1, 1201, 209, -1, -1, 680, -1, -1, -1, 684,
3672 685, -1, -1, 688, -1, -1, -1, 692, 693, -1,
3673 -1, -1, -1, -1, 699, 700, -1, -1, -1, -1,
3674 -1, -1, -1, -1, -1, 242, 983, 244, 1238, -1,
3675 1192, 949, 1194, 951, 991, 690, -1, 1199, -1, 1201,
3676 257, -1, 259, 525, 729, -1, 731, 732, -1, -1,
3677 -1, -1, -1, -1, 1177, -1, 209, -1, -1, -1,
3678 -1, 1018, -1, 280, -1, -1, -1, -1, -1, 1192,
3679 -1, 1148, -1, -1, -1, -1, 1238, 230, -1, 232,
3680 233, -1, -1, 236, -1, 238, 1163, -1, -1, 242,
3681 -1, 244, 309, -1, -1, -1, -1, 314, -1, -1,
3682 -1, -1, -1, -1, 257, -1, 259, -1, -1, -1,
3683 -1, 328, 329, -1, -1, 1137, 1138, -1, 1075, -1,
3684 -1, 1143, -1, 1145, 1146, -1, -1, -1, -1, 1128,
3685 -1, 786, 787, -1, 819, -1, -1, 56, -1, 52,
3686 -1, 54, 55, 56, 57, 58, 831, -1, -1, 366,
3687 -1, 836, 837, 370, -1, 372, 309, 310, 311, 312,
3688 313, 314, 315, 316, 77, -1, -1, 852, -1, -1,
3689 -1, -1, -1, 326, 859, 328, -1, -1, 331, -1,
3690 -1, -1, -1, -1, -1, -1, 871, -1, 101, 874,
3691 1189, -1, -1, -1, 1151, 108, 109, -1, 1155, 1117,
3692 1118, 1223, 1224, 1225, 1226, 1123, -1, 1125, -1, 1127,
3693 -1, 364, -1, 366, 1171, -1, -1, 370, 371, 372,
3694 133, 906, 1244, -1, -1, -1, 881, 882, -1, -1,
3695 915, -1, -1, 386, -1, -1, 891, 892, 893, -1,
3696 -1, -1, 897, 898, -1, -1, -1, -1, 465, -1,
3697 1207, 1208, -1, -1, -1, -1, 738, -1, -1, -1,
3698 -1, 414, 415, -1, -1, 482, -1, -1, -1, -1,
3699 752, -1, 754, -1, -1, -1, 429, -1, 52, -1,
3700 54, 55, 56, 57, 58, -1, 25, -1, 207, -1,
3701 -1, 210, 211, 212, -1, -1, -1, -1, -1, 1217,
3702 1218, 1219, 1220, 77, -1, -1, -1, -1, -1, 526,
3703 -1, -1, 465, -1, -1, -1, -1, -1, -1, -1,
3704 -1, -1, -1, -1, -1, 1243, -1, 101, 983, -1,
3705 1015, 484, 1017, 107, 108, 109, 991, -1, 77, 78,
3706 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
3707 89, -1, -1, -1, -1, 94, 95, -1, -1, 133,
3708 -1, -1, 136, 1018, -1, 582, -1, 584, 1053, -1,
3709 -1, 1056, -1, -1, -1, -1, -1, -1, -1, 153,
3710 -1, 2, -1, 4, -1, -1, -1, 604, 127, -1,
3711 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3712 -1, -1, -1, -1, -1, -1, -1, 326, -1, 1094,
3713 -1, -1, 331, -1, 896, -1, -1, -1, -1, -1,
3714 1075, -1, -1, -1, -1, -1, -1, -1, -1, 582,
3715 -1, 584, 53, 54, 651, -1, 57, -1, -1, 592,
3716 -1, -1, -1, -1, -1, 1130, 1131, -1, -1, 602,
3717 -1, 604, 605, 935, 936, -1, -1, -1, -1, -1,
3718 -1, -1, 83, 680, -1, -1, 683, 684, -1, -1,
3719 -1, -1, -1, 690, -1, 96, 97, 98, -1, -1,
3720 -1, -1, -1, -1, 1169, 1170, 639, -1, -1, -1,
3721 -1, -1, -1, -1, -1, -1, 1151, 979, -1, -1,
3722 1155, -1, -1, -1, -1, 424, 425, -1, -1, -1,
3723 -1, -1, 729, -1, 433, 732, 1171, -1, -1, -1,
3724 -1, -1, -1, 1005, 1006, -1, -1, 680, -1, -1,
3725 -1, 684, 685, -1, -1, 688, -1, -1, -1, 692,
3726 693, -1, -1, -1, -1, 1027, 699, 700, -1, -1,
3727 -1, 470, 1207, 1208, 473, -1, 52, 1242, 54, 55,
3728 56, 57, 58, -1, -1, -1, -1, -1, -1, 786,
3729 787, -1, -1, -1, -1, -1, 729, -1, 731, 732,
3730 2, 77, 4, -1, -1, -1, -1, -1, 209, 77,
3731 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3732 519, -1, -1, -1, -1, 101, 94, 95, -1, -1,
3733 -1, 107, 108, 109, 831, -1, -1, -1, -1, 836,
3734 -1, 242, -1, 244, -1, -1, 1108, -1, -1, -1,
3735 -1, 53, 54, 1115, -1, 852, 257, 133, 259, 2,
3736 136, 4, 859, 131, 132, 133, 134, 135, 136, 137,
3737 138, -1, 148, -1, 871, -1, -1, 874, -1, 280,
3738 -1, -1, -1, -1, 881, 882, 819, -1, -1, -1,
3739 -1, -1, -1, -1, 891, 892, 893, -1, 831, -1,
3740 897, 898, -1, 836, 837, 902, -1, -1, 309, 906,
3741 53, 54, -1, 314, 57, -1, -1, -1, 915, 852,
3742 619, -1, 621, -1, -1, -1, 859, 328, 329, -1,
3743 331, -1, -1, -1, -1, 634, -1, 636, 871, -1,
3744 83, 874, -1, -1, -1, -1, -1, -1, -1, 2,
3745 -1, 4, -1, 96, 97, 98, 99, -1, -1, -1,
3746 -1, -1, -1, -1, -1, 366, -1, -1, -1, 370,
3747 967, 372, -1, 906, -1, -1, -1, -1, -1, -1,
3748 679, -1, 915, -1, -1, -1, 983, -1, -1, -1,
3749 -1, -1, -1, -1, 991, -1, -1, -1, -1, 698,
3750 53, 54, -1, -1, -1, -1, -1, 209, 707, -1,
3751 -1, -1, -1, 414, 415, -1, -1, -1, 1015, -1,
3752 1017, 1018, -1, 722, -1, -1, -1, -1, -1, -1,
3753 -1, -1, -1, -1, -1, -1, -1, -1, -1, 690,
3754 242, -1, 244, 96, -1, -1, -1, -1, -1, -1,
3755 -1, -1, -1, -1, -1, 257, 1053, 259, -1, 1056,
3756 -1, -1, 1059, 690, 465, -1, 209, -1, -1, -1,
3757 -1, -1, -1, -1, 773, -1, -1, -1, 1075, -1,
3758 -1, 482, 1015, -1, 1017, -1, -1, -1, -1, -1,
3759 -1, -1, -1, -1, -1, -1, -1, -1, -1, 242,
3760 -1, 244, -1, 690, -1, -1, -1, 309, -1, -1,
3761 -1, -1, 314, -1, 257, -1, 259, -1, -1, -1,
3762 1053, -1, -1, 1056, -1, 526, 328, -1, -1, 331,
3763 -1, -1, -1, 1130, 1131, 786, 787, 280, 52, -1,
3764 54, 55, 56, 57, 58, -1, -1, 846, -1, -1,
3765 -1, -1, -1, -1, 1151, -1, 209, -1, 1155, 786,
3766 787, 1094, -1, 77, 366, -1, 309, 866, 370, -1,
3767 372, 314, -1, -1, 1171, -1, -1, 91, -1, -1,
3768 -1, 582, -1, 584, -1, 328, 329, 101, -1, 242,
3769 -1, 244, -1, 107, 108, 109, -1, 1130, 1131, 786,
3770 787, -1, -1, 604, 257, -1, 259, -1, -1, -1,
3771 1207, 1208, 414, 415, -1, 914, -1, -1, -1, 133,
3772 -1, -1, 136, 366, -1, -1, -1, 370, -1, 372,
3773 881, 882, -1, -1, -1, -1, 1169, 1170, -1, -1,
3774 891, 892, 893, 942, -1, 1242, 897, 898, -1, -1,
3775 651, -1, -1, -1, 881, 882, 309, -1, -1, 660,
3776 -1, 314, -1, 465, 891, 892, 893, -1, -1, -1,
3777 897, 898, -1, -1, -1, 328, -1, -1, 331, 680,
3778 -1, -1, 683, 684, 685, -1, -1, -1, -1, -1,
3779 -1, 692, 693, -1, 881, 882, -1, -1, 699, 700,
3780 -1, -1, -1, -1, 891, 892, 893, -1, -1, 1242,
3781 897, 898, -1, 366, -1, -1, -1, 370, -1, 372,
3782 1019, -1, 465, -1, -1, -1, -1, -1, 729, -1,
3783 -1, 732, 983, 1032, -1, -1, -1, -1, -1, 482,
3784 991, -1, -1, -1, 52, -1, 54, 55, 56, 57,
3785 58, -1, -1, -1, -1, -1, 983, -1, -1, -1,
3786 -1, 414, 415, -1, 991, -1, -1, 1018, -1, 77,
3787 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3788 582, -1, 584, 526, -1, -1, -1, -1, -1, -1,
3789 -1, 1018, -1, 101, -1, -1, 983, -1, -1, 107,
3790 108, 109, 604, -1, 991, -1, -1, -1, -1, -1,
3791 -1, -1, 465, -1, -1, -1, -1, -1, 819, -1,
3792 -1, -1, -1, -1, 1075, 133, -1, -1, 136, -1,
3793 831, 1018, -1, -1, -1, 836, -1, -1, -1, 582,
3794 -1, 584, -1, -1, -1, -1, -1, -1, 1075, -1,
3795 -1, 852, -1, -1, -1, -1, -1, -1, 859, -1,
3796 -1, 604, -1, -1, -1, -1, -1, -1, -1, -1,
3797 871, -1, -1, 874, -1, -1, -1, -1, 680, -1,
3798 -1, -1, 684, 685, -1, -1, -1, -1, 1075, -1,
3799 692, 693, -1, -1, -1, -1, -1, 699, 700, -1,
3800 1151, 902, -1, -1, 1155, 906, -1, -1, 651, -1,
3801 -1, -1, -1, -1, 915, -1, 690, -1, -1, -1,
3802 1171, -1, -1, -1, 1151, -1, -1, 729, 1155, 582,
3803 732, 584, -1, -1, -1, -1, -1, 680, -1, -1,
3804 683, 684, -1, -1, 1171, 690, -1, -1, -1, -1,
3805 -1, 604, -1, -1, -1, -1, 1207, 1208, -1, -1,
3806 -1, -1, -1, -1, 1151, -1, 967, -1, 1155, -1,
3807 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3808 1207, 1208, -1, -1, 1171, -1, 729, -1, -1, 732,
3809 690, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3810 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3811 -1, -1, 786, 787, 1015, -1, 1017, 819, -1, -1,
3812 1207, 1208, -1, -1, -1, -1, -1, 680, -1, 831,
3813 -1, 684, 685, -1, 836, -1, -1, -1, -1, 692,
3814 693, 786, 787, -1, -1, -1, 699, 700, -1, -1,
3815 852, -1, 1053, -1, -1, 1056, -1, 859, 1059, -1,
3816 -1, -1, -1, -1, -1, -1, -1, -1, -1, 871,
3817 -1, -1, 874, -1, -1, -1, 729, -1, -1, 732,
3818 -1, -1, -1, -1, -1, -1, 786, 787, 831, -1,
3819 -1, -1, -1, 836, -1, -1, -1, -1, -1, -1,
3820 -1, -1, -1, -1, 906, -1, -1, 881, 882, 852,
3821 -1, -1, -1, 915, -1, -1, 859, 891, 892, 893,
3822 -1, -1, -1, 897, 898, -1, -1, -1, 871, 1130,
3823 1131, 874, -1, -1, -1, -1, 881, 882, -1, -1,
3824 -1, -1, -1, -1, -1, -1, 891, 892, 893, -1,
3825 -1, -1, 897, 898, -1, -1, -1, -1, -1, 902,
3826 -1, -1, -1, 906, -1, -1, 819, -1, -1, -1,
3827 -1, -1, 915, -1, -1, -1, -1, -1, 831, -1,
3828 -1, 881, 882, 836, -1, -1, -1, -1, -1, -1,
3829 -1, 891, 892, 893, -1, 16, 17, 897, 898, 852,
3830 -1, -1, -1, -1, -1, -1, 859, -1, -1, 983,
3831 -1, -1, -1, 1015, -1, 1017, -1, 991, 871, -1,
3832 -1, 874, -1, -1, 967, -1, -1, 48, 49, 50,
3833 51, -1, -1, -1, 55, 56, -1, -1, 983, -1,
3834 -1, 1242, -1, -1, 1018, -1, 991, 68, 69, 902,
3835 -1, 1053, -1, 906, 1056, -1, -1, -1, -1, -1,
3836 -1, -1, 915, -1, -1, -1, -1, -1, 33, 34,
3837 35, 36, 1015, 1018, 1017, -1, -1, -1, -1, 100,
3838 -1, -1, -1, 983, 49, 50, 51, -1, -1, -1,
3839 -1, 991, -1, -1, 59, 60, 61, 62, 63, -1,
3840 -1, 1075, -1, -1, -1, -1, -1, -1, -1, -1,
3841 1053, -1, -1, 1056, -1, -1, 1059, -1, 1018, -1,
3842 -1, -1, -1, -1, -1, -1, -1, -1, 1130, 1131,
3843 1075, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3844 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114,
3845 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
3846 -1, -1, 1015, -1, 1017, -1, -1, -1, -1, -1,
3847 -1, -1, -1, -1, 139, 1075, -1, 1151, -1, -1,
3848 -1, 1155, -1, -1, -1, -1, 207, 1130, 1131, 210,
3849 211, 212, -1, 214, -1, -1, -1, 1171, -1, -1,
3850 1053, -1, -1, 1056, -1, -1, 1151, -1, -1, 230,
3851 1155, 232, 233, -1, -1, -1, -1, -1, -1, -1,
3852 -1, -1, -1, -1, -1, -1, 1171, -1, -1, -1,
3853 -1, -1, -1, 1207, 1208, -1, -1, -1, -1, -1,
3854 1242, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3855 -1, 1151, -1, -1, -1, 1155, -1, -1, -1, -1,
3856 -1, -1, 1207, 1208, -1, -1, -1, -1, -1, -1,
3857 -1, 1171, -1, -1, -1, -1, -1, 1130, 1131, -1,
3858 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3859 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1242,
3860 -1, -1, -1, -1, -1, 326, -1, 1207, 1208, -1,
3861 331, -1, 333, 334, 335, 336, 337, -1, -1, 340,
3862 341, 342, 343, 344, 345, 346, 347, 348, -1, -1,
3863 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
3864 -1, -1, -1, 364, -1, -1, -1, -1, -1, -1,
3865 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3866 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3867 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3868 -1, -1, -1, -1, 94, 95, -1, -1, -1, 1242,
3869 -1, -1, -1, 414, 415, -1, -1, -1, -1, -1,
3870 -1, -1, 423, 424, 425, -1, -1, -1, 429, -1,
3871 431, 432, 433, -1, -1, -1, -1, 127, 439, 129,
3872 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3873 -1, -1, -1, 454, -1, -1, -1, -1, 459, -1,
3874 -1, -1, -1, 153, -1, -1, -1, -1, -1, 470,
3875 -1, -1, 473, -1, -1, -1, -1, -1, -1, 0,
3876 -1, -1, -1, 484, -1, -1, -1, 8, 9, 10,
3877 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
3878 -1, 502, -1, -1, 25, 26, 27, 28, 29, -1,
3879 -1, -1, -1, -1, -1, -1, 37, 38, 519, 40,
3880 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
3881 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3882 -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
3883 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
3884 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3885 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
3886 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
3887 -1, 592, -1, -1, -1, -1, -1, -1, -1, 120,
3888 -1, 602, 123, -1, -1, 126, 127, 128, 129, 130,
3889 131, 132, 133, 134, 135, 136, 137, 138, 619, -1,
3890 621, -1, 143, 144, 145, 146, -1, -1, 149, 150,
3891 151, -1, 153, 634, -1, 636, -1, -1, -1, 0,
3892 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
3893 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
3894 -1, -1, -1, -1, 25, 26, 27, -1, -1, -1,
3895 -1, -1, -1, -1, -1, -1, 37, 38, 679, 40,
3896 41, 42, 43, 44, 685, 686, -1, 688, -1, -1,
3897 -1, 692, 693, -1, -1, -1, -1, 698, 699, 700,
3898 -1, -1, -1, -1, -1, -1, 707, 68, -1, -1,
3899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3900 -1, 722, -1, -1, -1, -1, -1, -1, -1, -1,
3901 -1, -1, -1, -1, -1, 96, 97, -1, -1, -1,
3902 -1, -1, -1, -1, -1, -1, 747, 748, -1, 750,
3903 751, 33, 34, 35, 36, -1, -1, -1, -1, 120,
3904 -1, -1, -1, -1, -1, -1, -1, 49, 50, 51,
3905 52, -1, 773, -1, 56, -1, 58, 59, 60, 61,
3906 62, 63, 143, 144, -1, -1, -1, 148, 149, -1,
3907 151, -1, 153, -1, -1, 77, -1, -1, -1, -1,
3908 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
3909 -1, 812, -1, -1, -1, -1, 98, -1, 819, 101,
3910 -1, -1, 104, 105, -1, 107, 108, -1, 110, 111,
3911 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
3912 -1, -1, -1, -1, -1, 846, -1, -1, -1, -1,
3913 132, -1, -1, -1, -1, 0, 1, 139, 3, 4,
3914 5, 6, 7, 864, -1, 866, 11, 12, -1, -1,
3915 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
3916 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
3917 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3918 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3919 55, 56, 57, 914, 59, 60, 61, 62, 63, 64,
3920 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3921 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
3922 -1, 942, -1, -1, -1, 90, 91, -1, -1, -1,
3923 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
3924 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
3925 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
3926 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3927 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
3928 -1, -1, -1, -1, -1, -1, 151, -1, 153, -1,
3929 -1, -1, -1, -1, -1, -1, -1, -1, 1019, 0,
3930 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
3931 -1, 1032, 13, 14, 15, -1, 17, -1, -1, -1,
3932 -1, 44, -1, -1, 25, -1, 27, 28, 29, -1,
3933 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3934 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
3935 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3936 83, 84, 85, 86, 87, 88, 89, 68, -1, -1,
3937 -1, 94, 95, 1094, -1, -1, 77, 78, 79, 80,
3938 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3939 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
3940 -1, -1, -1, -1, 127, 106, 129, 130, 131, 132,
3941 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
3942 -1, -1, 123, 146, -1, 126, 127, 128, 129, 130,
3943 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
3944 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
3945 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
3946 14, 15, -1, 17, -1, -1, -1, -1, 44, -1,
3947 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
3948 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
3949 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3950 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3951 86, 87, 88, 89, 68, -1, -1, -1, 94, 95,
3952 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3953 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
3954 94, 95, 96, 97, -1, 99, 100, -1, -1, -1,
3955 -1, 127, 106, 129, 130, 131, 132, 133, 134, 135,
3956 136, 137, 138, -1, -1, -1, 120, -1, -1, 123,
3957 -1, -1, 126, 127, 128, 129, 130, 131, 132, 133,
3958 134, 135, 136, 137, 138, -1, -1, -1, -1, -1,
3959 144, 145, 146, 0, -1, 149, 150, 151, -1, 153,
3960 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3961 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
3962 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
3963 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3964 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
3965 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
3966 89, 68, -1, -1, -1, 94, 95, -1, -1, -1,
3967 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3968 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
3969 97, -1, -1, 100, -1, -1, -1, -1, 127, 106,
3970 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3971 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
3972 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
3973 137, 138, -1, -1, -1, -1, 143, 144, 145, 146,
3974 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
3975 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
3976 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
3977 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
3978 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
3979 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
3980 82, 83, 84, 85, 86, 87, 88, 89, 68, -1,
3981 -1, -1, 94, 95, -1, -1, -1, 77, 78, 79,
3982 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3983 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
3984 100, -1, -1, -1, -1, -1, 106, 129, 130, 131,
3985 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3986 120, -1, -1, 123, -1, -1, -1, 127, 128, 129,
3987 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3988 -1, -1, -1, 143, 144, 145, 146, 0, -1, 149,
3989 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
3990 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
3991 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
3992 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
3993 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
3994 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
3995 -1, 86, 87, -1, -1, 68, -1, -1, -1, 94,
3996 95, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3997 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
3998 -1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
3999 -1, -1, -1, 106, 129, 130, 131, 132, 133, 134,
4000 135, 136, 137, 138, -1, -1, -1, 120, -1, -1,
4001 123, -1, -1, 126, 127, 128, 129, 130, 131, 132,
4002 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4003 -1, 144, 145, 146, 0, -1, 149, 150, 151, -1,
4004 153, -1, 8, 9, 10, -1, -1, 13, 14, 15,
4005 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
4006 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
4007 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4008 -1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4009 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
4010 -1, -1, 68, -1, -1, -1, 94, 95, -1, -1,
4011 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4012 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4013 96, 97, -1, -1, 100, -1, -1, -1, -1, -1,
4014 106, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4015 138, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4016 -1, 127, -1, 129, 130, 131, 132, 133, 134, 135,
4017 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
4018 146, 0, 148, 149, 150, 151, -1, 153, -1, 8,
4019 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
4020 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
4021 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4022 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4023 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4024 81, 82, 83, -1, -1, 86, 87, -1, -1, 68,
4025 -1, -1, -1, 94, 95, -1, -1, -1, 77, 78,
4026 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4027 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4028 -1, 100, -1, -1, -1, -1, -1, 106, 129, 130,
4029 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4030 -1, 120, -1, -1, 123, -1, -1, -1, 127, 128,
4031 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4032 -1, -1, -1, -1, -1, 144, 145, 146, 0, -1,
4033 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
4034 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
4035 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
4036 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4037 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4039 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
4040 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4041 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4042 -1, -1, 94, 95, 96, 97, -1, -1, 100, -1,
4043 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
4044 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4045 -1, -1, -1, -1, -1, 127, -1, 129, 130, 131,
4046 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4047 -1, 143, 144, 145, 146, 0, 148, 149, 150, 151,
4048 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
4049 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4050 25, -1, 27, 28, -1, -1, -1, -1, -1, -1,
4051 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4052 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4053 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4054 -1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
4055 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4056 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4057 95, 96, 97, -1, -1, 100, -1, -1, -1, -1,
4058 -1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
4059 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
4060 -1, -1, 127, -1, 129, 130, 131, 132, 133, 134,
4061 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4062 145, 146, 0, 148, 149, 150, 151, -1, 153, -1,
4063 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
4064 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
4065 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
4066 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4067 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4068 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4069 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4070 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4071 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4072 -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
4073 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4074 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
4075 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4076 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
4077 -1, 149, -1, 151, -1, 153, -1, 8, 9, 10,
4078 -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
4079 -1, -1, -1, -1, 25, 26, -1, -1, -1, -1,
4080 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4081 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4082 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4083 -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
4084 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4085 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4086 -1, -1, -1, 94, 95, 96, 97, -1, 99, -1,
4087 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4088 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
4089 -1, -1, -1, -1, -1, 126, 127, -1, 129, 130,
4090 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4091 -1, -1, 143, 144, 145, 146, 0, -1, 149, -1,
4092 151, -1, 153, -1, 8, 9, 10, -1, -1, -1,
4093 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
4094 -1, 25, -1, -1, -1, -1, -1, -1, -1, -1,
4095 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4096 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4097 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4098 -1, -1, -1, -1, 68, -1, -1, -1, -1, -1,
4099 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4100 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4101 94, 95, 96, 97, -1, 99, -1, -1, -1, -1,
4102 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4103 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
4104 -1, -1, 126, 127, -1, 129, 130, 131, 132, 133,
4105 134, 135, 136, 137, 138, -1, -1, -1, -1, -1,
4106 144, 145, 146, 0, -1, 149, -1, 151, -1, 153,
4107 -1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
4108 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
4109 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4110 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4111 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4112 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4113 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
4114 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4115 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4116 97, -1, 99, -1, -1, -1, -1, -1, -1, -1,
4117 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4118 -1, -1, -1, 120, -1, -1, -1, -1, -1, 126,
4119 127, -1, 129, 130, 131, 132, 133, 134, 135, 136,
4120 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
4121 -1, -1, 149, -1, 151, 1, 153, 3, 4, 5,
4122 6, 7, 8, 9, 10, 11, 12, -1, -1, 15,
4123 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4124 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4125 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4126 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4127 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4128 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4129 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4130 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4131 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4132 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4133 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4134 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4135 -1, -1, -1, 139, 140, 141, -1, -1, -1, -1,
4136 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
4137 5, 6, 7, -1, -1, 10, 11, 12, -1, 14,
4138 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4139 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4140 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4141 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4142 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4143 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4144 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4145 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4146 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4147 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4148 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4149 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4150 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4151 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
4152 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
4153 -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
4154 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4155 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4156 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4157 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4158 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4159 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4160 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4161 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4162 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4163 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4164 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4165 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4166 -1, -1, -1, -1, -1, -1, -1, 151, 1, 153,
4167 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
4168 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
4169 23, 24, 25, -1, -1, -1, -1, 30, 31, 32,
4170 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4171 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4172 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4173 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4174 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4175 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4176 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4177 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4178 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4179 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4180 -1, -1, -1, -1, -1, -1, 139, 140, 141, -1,
4181 -1, -1, -1, -1, -1, -1, -1, -1, 151, 1,
4182 153, 3, 4, 5, 6, 7, -1, -1, 10, 11,
4183 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
4184 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4185 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4186 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4187 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4188 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4189 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4190 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4191 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4192 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4193 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4194 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
4195 6, 7, -1, 9, 10, 11, 12, 139, 140, 141,
4196 16, -1, 18, 19, 20, 21, 22, 23, 24, 151,
4197 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
4198 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4199 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4200 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4201 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4202 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4203 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4204 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4205 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4206 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4207 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
4208 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4209 20, 21, 22, 23, 24, 151, -1, 153, -1, -1,
4210 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4211 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4212 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4213 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4214 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4215 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4216 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4217 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4218 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4219 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4220 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4221 140, 141, -1, -1, -1, -1, -1, -1, -1, 149,
4222 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
4223 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
4224 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4225 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4226 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
4227 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4228 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4229 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4230 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4231 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4232 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4233 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4234 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4235 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4236 139, 140, 141, -1, -1, -1, -1, -1, -1, -1,
4237 149, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4238 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
4239 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4240 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4241 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4242 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4243 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4244 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4245 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4246 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4247 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4248 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4249 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4250 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4251 -1, 139, 140, 141, -1, -1, 144, -1, -1, -1,
4252 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4253 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
4254 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4255 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4256 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4257 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4258 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4259 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4260 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4261 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4262 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4263 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4264 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4265 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4266 -1, -1, 139, 140, 141, -1, -1, 144, -1, -1,
4267 -1, -1, -1, -1, 151, 1, 153, 3, 4, 5,
4268 6, 7, -1, -1, 10, 11, 12, -1, -1, -1,
4269 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4270 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4271 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4272 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4273 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4274 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4275 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4276 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4277 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4278 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4279 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4280 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
4281 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4282 20, 21, 22, 23, 24, 151, -1, 153, -1, -1,
4283 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4284 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4285 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4286 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4287 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4288 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4289 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4290 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4291 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4292 120, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4293 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4294 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4295 24, 151, -1, 153, -1, -1, 30, 31, 32, 33,
4296 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4297 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4298 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4299 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4300 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4301 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4302 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4303 104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
4304 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4305 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4306 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4307 18, 19, 20, 21, 22, 23, 24, -1, -1, 153,
4308 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4309 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4310 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4311 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4312 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4314 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4315 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4316 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4317 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4318 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4319 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4320 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
4321 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4322 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4323 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4324 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4325 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4326 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4327 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4328 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4329 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4330 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4331 6, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4332 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4333 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
4334 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4335 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4336 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4337 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4338 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4339 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4340 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4341 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4342 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4343 -1, -1, -1, 3, 4, 5, 6, 7, -1, -1,
4344 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4345 20, 21, 22, 23, 24, 151, -1, -1, -1, -1,
4346 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4347 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4348 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4349 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4350 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4351 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4352 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4353 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4354 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4356 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4357 140, 141, -1, -1, -1, -1, -1, -1, -1, -1,
4358 -1, 151, 3, 4, 5, 6, 7, 8, 9, 10,
4359 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4360 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4361 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4362 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4363 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
4364 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4365 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4366 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4367 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4368 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4369 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4370 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4371 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4372 141, -1, -1, -1, -1, -1, 147, 148, 3, 4,
4373 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4374 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4375 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4376 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4377 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4378 55, 56, 57, -1, -1, -1, -1, -1, -1, -1,
4379 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4380 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4381 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4382 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4383 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
4384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4385 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4386 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4387 -1, -1, 147, 3, 4, 5, 6, 7, 8, 9,
4388 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4389 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4390 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4391 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4392 50, 51, 52, 53, 54, -1, 56, -1, -1, -1,
4393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4394 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4395 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4396 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4397 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4398 -1, 111, -1, -1, -1, -1, -1, -1, -1, -1,
4399 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4400 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4401 140, 141, -1, -1, -1, -1, -1, 147, 3, 4,
4402 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
4403 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4404 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
4405 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
4406 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
4407 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
4408 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4409 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
4410 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
4411 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4412 -1, -1, 107, 108, -1, -1, 111, -1, -1, -1,
4413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4414 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
4415 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
4416 -1, -1, 147, 3, 4, 5, 6, 7, 8, 9,
4417 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4418 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4419 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4420 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4421 50, 51, 52, 53, -1, -1, 56, -1, -1, -1,
4422 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4423 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
4424 80, 81, 82, 83, -1, -1, 86, 87, -1, -1,
4425 -1, -1, 92, 93, 94, 95, -1, -1, -1, -1,
4426 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
4427 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4428 -1, -1, -1, -1, -1, -1, -1, -1, -1, 129,
4429 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4430 140, 141, 3, 4, 5, -1, 7, 147, -1, -1,
4431 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
4432 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4433 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4434 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4435 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4436 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4437 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4438 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4439 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4440 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
4441 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4442 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4443 -1, 3, 4, 5, -1, 7, -1, -1, 139, 11,
4444 12, -1, -1, -1, 16, 146, 18, 19, 20, 21,
4445 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4446 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4447 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4448 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4449 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4451 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4452 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4453 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4454 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4455 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4456 3, 4, 5, 6, 7, -1, -1, 139, 11, 12,
4457 -1, -1, -1, 16, 146, 18, 19, 20, 21, 22,
4458 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4459 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4460 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4461 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4462 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4463 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4464 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4465 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4466 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4467 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4468 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4469 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4470 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4471 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4472 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4473 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4474 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
4475 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4476 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4477 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4478 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4479 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
4480 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4481 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4482 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4483 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4484 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4485 -1, -1, -1, -1, 45, 46, -1, 48, 49, 50,
4486 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4487 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4488 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4489 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4490 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4491 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4492 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4493 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4494 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4495 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4496 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4497 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4498 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4499 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
4500 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4501 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4502 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4503 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4504 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
4505 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4506 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4507 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4508 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4509 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4510 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4511 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
4512 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4513 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4514 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4515 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4516 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
4517 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4518 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4519 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4520 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4521 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4522 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4523 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4524 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
4525 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4526 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4527 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4528 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4529 -1, 104, 105, -1, 107, 108, 109, 110, 111, 112,
4530 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4531 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4532 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4533 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4534 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4535 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4536 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4537 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
4538 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4539 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4540 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4541 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4542 107, 108, -1, 110, 111, 112, 113, 114, 115, 116,
4543 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4544 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4545 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4546 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4547 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4548 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4549 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
4550 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4551 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4552 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4553 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4554 101, 102, -1, 104, 105, -1, -1, 108, 109, 110,
4555 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4556 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4557 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4558 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4559 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4560 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4561 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4562 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
4563 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4564 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4565 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4566 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4567 105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
4568 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4569 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4570 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4571 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4572 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4573 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4574 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
4575 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4576 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4577 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4578 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4579 -1, -1, 101, 102, -1, 104, 105, -1, -1, 108,
4580 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4581 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4582 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4583 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4584 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4585 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4586 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4587 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4588 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4589 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4590 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4591 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4592 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4593 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4594 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4595 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4596 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4597 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4598 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4599 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4600 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4601 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4602 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4603 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4604 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4605 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4606 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4607 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4608 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4609 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4610 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4611 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4612 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4613 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4614 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4615 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4616 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4617 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4618 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4619 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4620 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4621 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4622 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4623 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4624 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4625 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4626 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4627 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4628 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4629 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4630 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4631 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4632 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4633 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4634 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4635 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4636 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4637 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4638 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4639 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4641 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4642 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4643 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4644 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4645 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4646 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4647 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4648 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4649 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4650 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4651 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4652 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4653 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4654 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4655 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4656 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4657 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4658 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4659 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4660 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4661 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4662 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4663 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4664 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4666 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4667 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4668 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4669 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4670 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4671 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4672 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4673 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4674 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4675 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4676 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4677 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4678 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4679 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4680 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
4681 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4682 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4683 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4684 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4685 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4686 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4687 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4688 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4689 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4692 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4693 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4694 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4695 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4696 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
4697 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4698 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4699 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4700 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4701 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4702 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4703 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4704 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4705 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4706 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4707 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4708 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
4709 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4710 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4711 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
4712 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4713 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4716 -1, -1, -1, 94, -1, -1, -1, 98, -1, -1,
4717 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
4718 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4719 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4720 -1, -1, 11, 12, -1, -1, -1, 16, 139, 18,
4721 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4722 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4723 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4724 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4725 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4726 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4727 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4728 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
4729 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
4730 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4731 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4732 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
4733 139, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4734 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4735 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
4736 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
4737 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4738 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4739 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4740 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4741 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4742 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4743 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
4744 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
4745 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
4746 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4747 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4748 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4749 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4750 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4751 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4752 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4753 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4754 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
4755 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4756 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4757 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
4758 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4759 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4760 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4761 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4762 63, 64, 65, 33, 34, 35, 36, -1, -1, -1,
4763 -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
4764 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
4765 60, 61, 62, 63, -1, 98, -1, -1, 101, 102,
4766 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4767 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4768 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4769 -1, 101, -1, -1, 104, 105, 139, 107, -1, -1,
4770 110, 111, 112, 113, 114, 115, 116, 117, 118, 33,
4771 34, 35, 36, -1, -1, -1, -1, -1, -1, -1,
4772 -1, -1, 132, -1, -1, 49, 50, 51, 52, 139,
4773 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
4774 -1, -1, 33, 34, 35, 36, -1, -1, -1, -1,
4775 -1, -1, -1, -1, -1, -1, -1, -1, 49, 50,
4776 51, 52, -1, -1, -1, 56, 90, 91, 59, 60,
4777 61, 62, 63, -1, 98, -1, -1, 101, -1, -1,
4778 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4779 114, 115, 116, 117, 118, -1, -1, -1, -1, 90,
4780 91, -1, -1, -1, -1, -1, -1, 98, 132, -1,
4781 101, -1, -1, 104, 105, 139, -1, -1, -1, 110,
4782 111, 112, 113, 114, 115, 116, 117, 118, 52, 53,
4783 -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
4784 -1, 132, -1, -1, -1, -1, -1, -1, 139, -1,
4785 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4786 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4787 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4788 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4789 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4790 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4791 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4792 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4793 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4794 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4795 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4796 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4797 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4799 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4800 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4801 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4802 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4803 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4804 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4805 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4806 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4807 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4808 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4809 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4810 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4811 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4812 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4813 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4814 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4815 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4816 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4817 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4818 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4819 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4820 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4821 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4822 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4823 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4824 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4825 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4826 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4827 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4828 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4829 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4830 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4831 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4832 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4833 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4834 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4835 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4836 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4837 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4838 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4839 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4840 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4841 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4842 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4843 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4844 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4845 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4846 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4848 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4849 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4850 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4851 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4852 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4853 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4854 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4855 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4856 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4857 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4858 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4859 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4860 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4861 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4862 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4863 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4864 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4865 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4866 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4867 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4868 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4869 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4870 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4871 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4872 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4873 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4874 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4875 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4876 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4877 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4878 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4879 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4880 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4881 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4882 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4884 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4885 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4886 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4887 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4889 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4890 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4891 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4893 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4894 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4895 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4896 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4897 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4898 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4899 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4900 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4901 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4902 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4903 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4904 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4905 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4906 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4907 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4908 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4909 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4910 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4911 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4912 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4913 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4914 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4915 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4916 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4917 134, 135, 136, 137, 138, -1, 140, 141, 52, 53,
4918 -1, -1, 56, 147, 148, -1, -1, -1, -1, -1,
4919 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4920 -1, 75, 76, 77, 78, 79, 80, 81, 82, 83,
4921 -1, -1, 86, 87, -1, -1, -1, -1, 92, 93,
4922 94, 95, -1, -1, -1, -1, -1, -1, -1, -1,
4923 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
4924 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4925 -1, -1, -1, -1, -1, 129, 130, 131, 132, 133,
4926 134, 135, 136, 137, 138, -1, 140, 141, -1, -1,
4934 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
4935 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4936 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4937 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4938 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
4939 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
4940 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
4941 157, 158, 159, 167, 169, 171, 179, 180, 182, 183,
4942 184, 186, 187, 188, 190, 191, 200, 203, 218, 233,
4943 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
4944 252, 279, 280, 333, 334, 335, 336, 337, 338, 339,
4945 342, 344, 345, 359, 360, 362, 363, 364, 365, 366,
4946 367, 368, 369, 405, 419, 159, 3, 4, 5, 6,
4947 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
4948 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
4949 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4950 45, 46, 47, 48, 49, 50, 51, 52, 53, 56,
4951 75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
4952 87, 92, 93, 94, 95, 107, 108, 129, 130, 131,
4953 132, 133, 134, 135, 136, 137, 138, 140, 141, 147,
4954 194, 195, 196, 198, 199, 359, 39, 58, 98, 101,
4955 107, 108, 109, 112, 140, 183, 191, 200, 204, 210,
4956 213, 215, 233, 365, 366, 368, 369, 403, 404, 210,
4957 148, 211, 212, 148, 207, 211, 148, 153, 412, 54,
4958 195, 412, 143, 160, 143, 21, 22, 31, 32, 182,
4959 200, 233, 252, 200, 200, 200, 56, 1, 47, 101,
4960 163, 164, 165, 167, 185, 186, 419, 167, 220, 205,
4961 215, 403, 419, 204, 402, 403, 419, 46, 98, 139,
4962 146, 190, 218, 233, 365, 366, 369, 223, 54, 55,
4963 57, 194, 348, 361, 348, 349, 350, 152, 152, 152,
4964 152, 364, 179, 200, 200, 151, 153, 411, 417, 418,
4965 40, 41, 42, 43, 44, 37, 38, 26, 143, 207,
4966 211, 244, 281, 28, 245, 278, 126, 146, 101, 107,
4967 187, 126, 25, 77, 78, 79, 80, 81, 82, 83,
4968 84, 85, 86, 87, 88, 89, 94, 95, 127, 129,
4969 130, 131, 132, 133, 134, 135, 136, 137, 138, 202,
4970 202, 68, 96, 97, 145, 409, 219, 171, 175, 175,
4971 176, 177, 176, 175, 411, 418, 98, 184, 191, 233,
4972 257, 365, 366, 369, 52, 56, 94, 98, 192, 193,
4973 233, 365, 366, 369, 193, 33, 34, 35, 36, 49,
4974 50, 51, 52, 56, 148, 194, 367, 400, 210, 97,
4975 409, 410, 281, 336, 99, 99, 146, 204, 56, 204,
4976 204, 204, 348, 126, 100, 146, 214, 419, 97, 145,
4977 409, 99, 99, 146, 214, 210, 412, 413, 210, 91,
4978 209, 210, 215, 377, 403, 419, 171, 413, 171, 54,
4979 64, 65, 168, 148, 201, 157, 163, 97, 409, 99,
4980 167, 166, 185, 149, 411, 418, 413, 221, 413, 150,
4981 146, 153, 416, 146, 416, 144, 416, 412, 56, 364,
4982 187, 189, 146, 97, 145, 409, 270, 271, 66, 119,
4983 121, 122, 351, 119, 119, 351, 67, 351, 340, 346,
4984 343, 347, 77, 151, 159, 175, 175, 175, 175, 167,
4985 171, 171, 282, 283, 106, 181, 286, 287, 286, 107,
4986 179, 204, 215, 216, 217, 185, 146, 190, 146, 169,
4987 170, 179, 191, 200, 204, 206, 217, 233, 369, 172,
4988 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4989 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4990 200, 200, 200, 200, 52, 53, 56, 198, 207, 406,
4991 407, 209, 215, 52, 53, 56, 198, 207, 406, 161,
4992 163, 13, 253, 417, 253, 163, 175, 163, 411, 225,
4993 56, 97, 145, 409, 25, 171, 52, 56, 192, 130,
4994 370, 97, 145, 409, 228, 401, 229, 68, 97, 408,
4995 52, 56, 406, 170, 200, 206, 170, 206, 197, 124,
4996 204, 107, 204, 213, 403, 52, 56, 209, 52, 56,
4997 404, 413, 149, 413, 146, 413, 146, 413, 195, 222,
4998 200, 144, 144, 406, 406, 206, 160, 413, 165, 413,
4999 403, 146, 189, 52, 56, 209, 52, 56, 272, 353,
5000 352, 119, 341, 351, 66, 119, 119, 341, 66, 119,
5001 200, 144, 284, 282, 10, 251, 288, 251, 204, 146,
5002 44, 413, 189, 146, 44, 126, 44, 97, 145, 409,
5003 173, 412, 99, 99, 207, 211, 412, 414, 146, 99,
5004 99, 207, 208, 211, 419, 251, 8, 246, 329, 419,
5005 163, 13, 163, 251, 27, 254, 417, 251, 25, 224,
5006 293, 17, 248, 291, 52, 56, 209, 52, 56, 176,
5007 227, 371, 226, 52, 56, 192, 209, 161, 171, 230,
5008 231, 208, 211, 195, 204, 204, 214, 99, 99, 414,
5009 99, 99, 377, 403, 171, 416, 187, 414, 273, 354,
5010 54, 55, 57, 358, 369, 152, 351, 152, 152, 152,
5011 285, 144, 289, 107, 204, 167, 189, 167, 200, 52,
5012 56, 209, 52, 56, 52, 56, 90, 91, 98, 101,
5013 104, 105, 110, 132, 303, 304, 305, 308, 323, 324,
5014 326, 327, 328, 333, 334, 337, 338, 339, 342, 344,
5015 345, 366, 128, 170, 206, 170, 206, 181, 150, 99,
5016 170, 206, 170, 206, 181, 204, 217, 330, 419, 9,
5017 15, 247, 249, 332, 419, 14, 249, 250, 255, 256,
5018 419, 256, 178, 294, 291, 251, 107, 204, 290, 251,
5019 414, 163, 417, 175, 161, 414, 251, 413, 148, 372,
5020 373, 194, 281, 278, 99, 413, 146, 413, 274, 355,
5021 131, 265, 266, 419, 265, 204, 414, 324, 324, 56,
5022 192, 311, 309, 414, 310, 412, 415, 325, 52, 100,
5023 174, 131, 88, 89, 97, 145, 148, 306, 307, 200,
5024 170, 206, 100, 331, 419, 163, 162, 163, 175, 251,
5025 251, 295, 251, 204, 146, 253, 251, 161, 417, 251,
5026 52, 54, 55, 56, 57, 58, 77, 91, 101, 107,
5027 108, 109, 133, 136, 374, 376, 377, 378, 379, 380,
5028 381, 382, 383, 384, 387, 388, 389, 390, 391, 394,
5029 395, 396, 397, 398, 161, 376, 382, 232, 148, 276,
5030 376, 356, 262, 264, 267, 380, 382, 383, 385, 386,
5031 389, 390, 392, 393, 396, 398, 412, 163, 161, 303,
5032 107, 303, 312, 313, 314, 316, 58, 112, 317, 318,
5033 319, 320, 321, 322, 388, 144, 270, 326, 308, 324,
5034 324, 192, 414, 413, 112, 312, 317, 312, 317, 98,
5035 191, 233, 365, 366, 369, 253, 163, 253, 296, 107,
5036 204, 163, 251, 101, 107, 258, 259, 260, 261, 379,
5037 413, 413, 126, 146, 375, 204, 146, 399, 419, 34,
5038 52, 146, 399, 399, 146, 375, 52, 146, 375, 52,
5039 251, 417, 146, 372, 376, 275, 357, 267, 131, 126,
5040 146, 263, 98, 233, 146, 399, 399, 399, 146, 263,
5041 146, 263, 151, 413, 52, 146, 414, 107, 303, 316,
5042 146, 348, 415, 146, 303, 34, 52, 348, 413, 413,
5043 414, 414, 56, 97, 145, 409, 163, 332, 163, 301,
5044 302, 303, 314, 317, 204, 256, 291, 292, 260, 379,
5045 146, 413, 146, 204, 374, 377, 381, 394, 396, 384,
5046 388, 390, 398, 382, 391, 396, 380, 382, 161, 267,
5047 29, 123, 277, 163, 131, 233, 262, 393, 396, 56,
5048 97, 385, 390, 382, 392, 396, 382, 52, 268, 269,
5049 378, 146, 315, 316, 52, 146, 146, 124, 319, 321,
5050 322, 52, 56, 209, 52, 56, 329, 255, 253, 40,
5051 41, 146, 413, 258, 261, 259, 413, 146, 375, 146,
5052 375, 399, 146, 375, 146, 375, 375, 251, 149, 161,
5053 163, 120, 146, 263, 146, 263, 52, 56, 399, 146,
5054 263, 146, 263, 263, 146, 412, 315, 146, 146, 315,
5055 414, 297, 175, 175, 312, 146, 146, 382, 396, 382,
5056 382, 251, 144, 382, 396, 382, 382, 269, 316, 315,
5057 298, 259, 375, 146, 375, 375, 375, 263, 146, 263,
5058 263, 263, 299, 382, 382, 163, 375, 263, 256, 293,
5065 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
5066 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
5067 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
5068 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
5069 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
5070 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
5071 171, 171, 175, 177, 178, 176, 179, 179, 180, 180,
5072 181, 182, 183, 183, 183, 183, 183, 183, 183, 183,
5073 183, 183, 183, 184, 184, 185, 185, 186, 186, 186,
5074 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
5075 188, 189, 189, 190, 190, 190, 190, 190, 190, 190,
5076 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
5077 191, 192, 192, 193, 193, 193, 194, 194, 194, 194,
5078 194, 195, 195, 196, 197, 196, 198, 198, 198, 198,
5079 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
5080 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
5081 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
5082 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5083 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5084 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
5085 199, 199, 199, 199, 199, 199, 199, 200, 200, 200,
5086 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5087 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5088 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
5089 200, 200, 200, 200, 200, 200, 200, 201, 200, 200,
5090 200, 202, 202, 202, 202, 203, 203, 204, 205, 205,
5091 205, 205, 206, 206, 207, 207, 207, 208, 208, 209,
5092 209, 209, 209, 209, 210, 210, 210, 210, 210, 212,
5093 211, 213, 214, 214, 215, 215, 215, 215, 216, 216,
5094 217, 217, 217, 218, 218, 218, 218, 218, 218, 218,
5095 218, 218, 218, 218, 219, 218, 220, 218, 221, 218,
5096 218, 218, 218, 218, 218, 218, 218, 218, 218, 222,
5097 218, 218, 218, 218, 218, 218, 223, 218, 218, 218,
5098 218, 218, 224, 218, 225, 218, 218, 218, 226, 218,
5099 227, 218, 228, 218, 229, 230, 218, 231, 232, 218,
5100 218, 218, 218, 218, 233, 234, 235, 236, 237, 238,
5101 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
5102 249, 250, 251, 252, 253, 253, 253, 254, 254, 255,
5103 255, 256, 256, 257, 257, 258, 258, 259, 259, 260,
5104 260, 260, 260, 260, 261, 261, 262, 262, 262, 262,
5105 262, 263, 263, 264, 264, 264, 264, 264, 264, 264,
5106 264, 264, 264, 264, 264, 264, 264, 264, 265, 265,
5107 266, 266, 267, 267, 268, 268, 269, 269, 271, 272,
5108 273, 274, 275, 270, 276, 276, 277, 277, 278, 279,
5109 279, 279, 279, 280, 280, 280, 280, 280, 280, 280,
5110 280, 280, 281, 281, 283, 284, 285, 282, 287, 288,
5111 289, 286, 290, 290, 290, 290, 291, 292, 292, 294,
5112 295, 296, 297, 298, 299, 293, 300, 300, 301, 301,
5113 301, 302, 302, 302, 302, 302, 303, 304, 304, 305,
5114 305, 306, 307, 308, 308, 308, 308, 308, 308, 308,
5115 309, 308, 308, 310, 308, 308, 311, 308, 312, 312,
5116 312, 312, 312, 312, 312, 312, 313, 313, 314, 314,
5117 314, 314, 315, 315, 316, 317, 317, 317, 317, 317,
5118 317, 318, 318, 319, 319, 320, 320, 321, 321, 322,
5119 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
5120 324, 324, 324, 324, 324, 324, 324, 324, 324, 325,
5121 324, 326, 327, 328, 328, 328, 329, 329, 330, 330,
5122 330, 331, 331, 332, 332, 333, 333, 334, 335, 335,
5123 335, 336, 337, 338, 339, 340, 340, 341, 341, 342,
5124 343, 343, 344, 345, 346, 346, 347, 347, 348, 348,
5125 349, 349, 350, 350, 351, 352, 351, 353, 354, 355,
5126 356, 357, 351, 358, 358, 358, 358, 359, 359, 360,
5127 361, 361, 361, 361, 362, 363, 363, 364, 364, 364,
5128 364, 365, 365, 365, 365, 365, 366, 366, 366, 366,
5129 366, 366, 366, 367, 367, 368, 368, 369, 369, 371,
5130 370, 370, 372, 372, 372, 373, 372, 374, 374, 374,
5131 374, 374, 375, 375, 376, 376, 376, 376, 376, 376,
5132 376, 376, 376, 376, 376, 376, 376, 376, 376, 377,
5133 378, 378, 378, 378, 379, 379, 380, 381, 381, 382,
5134 382, 383, 384, 384, 385, 385, 386, 386, 387, 387,
5135 388, 388, 389, 390, 390, 391, 392, 393, 393, 394,
5136 394, 395, 395, 396, 396, 397, 397, 398, 399, 399,
5137 400, 401, 400, 402, 402, 403, 403, 404, 404, 404,
5138 404, 405, 405, 405, 406, 406, 406, 406, 407, 407,
5139 407, 408, 408, 409, 409, 410, 410, 411, 411, 412,
5140 412, 413, 414, 415, 416, 416, 416, 417, 417, 418,
5147 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5148 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5149 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5150 3, 3, 3, 3, 4, 1, 3, 3, 5, 3,
5151 1, 3, 3, 6, 5, 5, 5, 5, 3, 1,
5152 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5153 6, 1, 1, 0, 0, 4, 1, 1, 1, 4,
5154 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5155 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5156 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5157 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5158 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
5159 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
5160 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
5161 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5162 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5163 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5164 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5165 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5166 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5167 1, 1, 1, 1, 1, 1, 1, 3, 3, 6,
5168 5, 5, 5, 5, 4, 3, 3, 3, 2, 2,
5169 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
5170 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
5171 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
5172 1, 1, 1, 1, 1, 3, 3, 1, 1, 2,
5173 4, 2, 1, 3, 3, 5, 3, 1, 1, 1,
5174 1, 2, 4, 2, 1, 2, 2, 4, 1, 0,
5175 2, 2, 2, 1, 1, 2, 3, 4, 1, 1,
5176 3, 4, 2, 1, 1, 1, 1, 1, 1, 1,
5177 1, 1, 1, 1, 0, 4, 0, 3, 0, 4,
5178 3, 3, 2, 3, 3, 1, 4, 3, 1, 0,
5179 6, 4, 3, 2, 1, 2, 0, 3, 6, 6,
5180 4, 4, 0, 6, 0, 5, 5, 6, 0, 6,
5181 0, 7, 0, 5, 0, 0, 7, 0, 0, 9,
5182 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5183 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5184 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
5185 5, 1, 2, 1, 1, 1, 3, 1, 3, 1,
5186 3, 5, 1, 3, 2, 1, 4, 2, 2, 2,
5187 1, 2, 0, 6, 8, 4, 6, 4, 2, 6,
5188 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
5189 3, 4, 1, 4, 1, 3, 1, 1, 0, 0,
5190 0, 0, 0, 7, 4, 1, 3, 3, 3, 2,
5191 4, 5, 5, 2, 4, 4, 3, 3, 3, 2,
5192 1, 4, 3, 3, 0, 0, 0, 5, 0, 0,
5193 0, 5, 1, 2, 3, 4, 5, 1, 1, 0,
5194 0, 0, 0, 0, 0, 11, 1, 1, 1, 3,
5195 3, 1, 2, 3, 1, 1, 1, 3, 1, 3,
5196 1, 1, 1, 1, 4, 4, 3, 4, 4, 3,
5197 0, 4, 2, 0, 4, 2, 0, 4, 1, 1,
5198 2, 3, 5, 2, 4, 1, 2, 3, 2, 4,
5199 1, 3, 1, 3, 1, 3, 1, 2, 1, 3,
5200 1, 1, 3, 2, 1, 1, 3, 2, 1, 2,
5201 1, 3, 3, 2, 2, 1, 1, 1, 2, 2,
5202 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5203 3, 1, 2, 2, 3, 1, 6, 1, 1, 1,
5204 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
5205 2, 3, 3, 3, 4, 0, 3, 1, 2, 4,
5206 0, 3, 4, 4, 0, 3, 0, 3, 0, 2,
5207 0, 2, 0, 2, 1, 0, 3, 0, 0, 0,
5208 0, 0, 8, 1, 1, 1, 1, 1, 1, 2,
5209 1, 1, 1, 1, 3, 1, 2, 1, 1, 1,
5210 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5211 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5212 4, 0, 3, 5, 3, 0, 3, 4, 2, 2,
5213 2, 1, 2, 0, 6, 8, 4, 6, 4, 6,
5214 2, 4, 6, 2, 4, 2, 4, 1, 0, 1,
5215 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
5216 3, 1, 2, 1, 2, 1, 1, 3, 1, 3,
5217 1, 1, 2, 2, 1, 3, 3, 1, 3, 1,
5218 3, 1, 1, 2, 1, 1, 1, 2, 2, 1,
5219 1, 0, 4, 1, 2, 1, 3, 3, 2, 4,
5220 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5221 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,
5222 1, 2, 2, 2, 0, 1, 1, 1, 1, 1,
5227#define yyerrok (yyerrstatus = 0)
5228#define yyclearin (yychar = YYEMPTY)
5232#define YYACCEPT goto yyacceptlab
5233#define YYABORT goto yyabortlab
5234#define YYERROR goto yyerrorlab
5237#define YYRECOVERING() (!!yyerrstatus)
5239#define YYBACKUP(Token, Value) \
5241 if (yychar == YYEMPTY) \
5245 YYPOPSTACK (yylen); \
5251 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5258#define YYERRCODE 256
5265#ifndef YYLLOC_DEFAULT
5266# define YYLLOC_DEFAULT(Current, Rhs, N) \
5270 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5271 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5272 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5273 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5277 (Current).first_line = (Current).last_line = \
5278 YYRHSLOC (Rhs, 0).last_line; \
5279 (Current).first_column = (Current).last_column = \
5280 YYRHSLOC (Rhs, 0).last_column; \
5285#define YYRHSLOC(Rhs, K) ((Rhs)[K])
5293# define YYFPRINTF fprintf
5296# define YYDPRINTF(Args) \
5307#ifndef YY_LOCATION_PRINT
5308# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5314yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
5332 else if (0 <= end_col && yylocp->
first_column < end_col)
5338# define YY_LOCATION_PRINT(File, Loc) \
5339 yy_location_print_ (File, &(Loc))
5342# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
5347# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
5351 YYFPRINTF (p, "%s ", Title); \
5352 yy_symbol_print (stderr, \
5353 Type, Value, Location, p); \
5354 YYFPRINTF (p, "\n"); \
5366 FILE *yyoutput = yyo;
5368 YYUSE (yylocationp);
5374 YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
5390 yytype <
YYNTOKENS ?
"token" :
"nterm", yytname[yytype]);
5394 yy_symbol_value_print (yyo, yytype, yyvaluep, yylocationp, p);
5405#define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
5408 for (; yybottom <= yytop; yybottom++)
5410 int yybot = *yybottom;
5416# define YY_STACK_PRINT(Bottom, Top) \
5419 yy_stack_print ((Bottom), (Top)); \
5430 int yylno = yyrline[yyrule];
5431 int yynrhs = yyr2[yyrule];
5433 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
5436 for (yyi = 0; yyi < yynrhs; yyi++)
5440 yystos[+yyssp[yyi + 1 - yynrhs]],
5441 &yyvsp[(yyi + 1) - (yynrhs)]
5442 , &(yylsp[(yyi + 1) - (yynrhs)]) , p);
5447# define YY_REDUCE_PRINT(Rule) \
5450 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
5459# define YYDPRINTF(Args)
5460# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
5461# define YY_STACK_PRINT(Bottom, Top)
5462# define YY_REDUCE_PRINT(Rule)
5468# define YYINITDEPTH 200
5479# define YYMAXDEPTH 10000
5486# if defined __GLIBC__ && defined _STRING_H
5487# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
5491yystrlen (
const char *yystr)
5494 for (yylen = 0; yystr[yylen]; yylen++)
5502# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
5503# define yystpcpy stpcpy
5508yystpcpy (
char *yydest,
const char *yysrc)
5511 const char *yys = yysrc;
5513 while ((*yyd++ = *yys++) !=
'\0')
5530yytnamerr (
char *yyres,
const char *yystr)
5535 char const *yyp = yystr;
5542 goto do_not_strip_quotes;
5546 goto do_not_strip_quotes;
5562 do_not_strip_quotes: ;
5566 return yystpcpy (yyres, yystr) - yyres;
5568 return yystrlen (yystr);
5584 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
5589 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
5620 int yyn = yypact[+*yyssp];
5623 yyarg[yycount++] = yytname[yytoken];
5629 int yyxbegin = yyn < 0 ? -yyn : 0;
5631 int yychecklim =
YYLAST - yyn + 1;
5635 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
5636 if (yycheck[yyx + yyn] == yyx && yyx !=
YYTERROR
5639 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
5645 yyarg[yycount++] = yytname[yyx];
5660# define YYCASE_(N, S) \
5666 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
5667 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
5668 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
5669 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
5670 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
5677 YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
5684 if (*yymsg_alloc < yysize)
5686 *yymsg_alloc = 2 * yysize;
5687 if (! (yysize <= *yymsg_alloc
5699 while ((*yyp = *yyformat) !=
'\0')
5700 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
5723 YYUSE (yylocationp);
5756# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5760YYLTYPE yylloc = yyloc_default;
5809 char *yymsg = yymsgbuf;
5813#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
5819 yyssp = yyss = yyssa;
5820 yyvsp = yyvs = yyvsa;
5821 yylsp = yyls = yylsa;
5837#line 5833 "ripper.c"
5856 YYDPRINTF ((p,
"Entering state %d\n", yystate));
5862 if (yyss + yystacksize - 1 <= yyssp)
5863#if !defined yyoverflow && !defined YYSTACK_RELOCATE
5864 goto yyexhaustedlab;
5870# if defined yyoverflow
5883 yyoverflow (
YY_(
"memory exhausted"),
5884 &yyss1, yysize *
YYSIZEOF (*yyssp),
5885 &yyvs1, yysize *
YYSIZEOF (*yyvsp),
5886 &yyls1, yysize *
YYSIZEOF (*yylsp),
5895 goto yyexhaustedlab;
5906 goto yyexhaustedlab;
5910# undef YYSTACK_RELOCATE
5916 yyssp = yyss + yysize - 1;
5917 yyvsp = yyvs + yysize - 1;
5918 yylsp = yyls + yysize - 1;
5921 YYDPRINTF ((p,
"Stack size increased to %ld\n",
5922 YY_CAST (
long, yystacksize)));
5925 if (yyss + yystacksize - 1 <= yyssp)
5944 yyn = yypact[yystate];
5954 yychar = yylex (&
yylval, &yylloc, p);
5957 if (yychar <=
YYEOF)
5959 yychar = yytoken =
YYEOF;
5960 YYDPRINTF ((p,
"Now at end of input.\n"));
5971 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
6004 yyn = yydefact[yystate];
6025 yyval = yyvsp[1-yylen];
6029 yyerror_range[1] = yyloc;
6034#line 1177 "ripper.y"
6039#line 6035 "ripper.c"
6043#line 1182 "ripper.y"
6050 while (node->nd_next) {
6051 node = node->nd_next;
6053 node = node->nd_head;
6055 node = remove_begin(node);
6060 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(program,v1);p->result=v2;}
6063#line 6059 "ripper.c"
6067#line 1204 "ripper.y"
6069 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
6071#line 6067 "ripper.c"
6075#line 1210 "ripper.y"
6080 {
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;}
6082#line 6078 "ripper.c"
6086#line 1217 "ripper.y"
6089 (yyval.
val) = newline_node((yyvsp[0].val));
6091 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
6093#line 6089 "ripper.c"
6097#line 1224 "ripper.y"
6100 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
6102 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
6104#line 6100 "ripper.c"
6108#line 1231 "ripper.y"
6110 (yyval.
val) = remove_begin((yyvsp[0].val));
6112#line 6108 "ripper.c"
6116#line 1238 "ripper.y"
6118 (yyval.
val) = (yyvsp[0].val);
6120#line 6116 "ripper.c"
6124#line 1244 "ripper.y"
6131 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(BEGIN,v1);(yyval.
val)=v2;}
6133#line 6129 "ripper.c"
6137#line 1256 "ripper.y"
6138 {
if (!(yyvsp[-1].val)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
6139#line 6135 "ripper.c"
6143#line 1259 "ripper.y"
6146 (yyval.
val) = new_bodystmt(p, (yyvsp[-5].val), (yyvsp[-4].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
6148 {
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;}
6150#line 6146 "ripper.c"
6154#line 1268 "ripper.y"
6157 (yyval.
val) = new_bodystmt(p, (yyvsp[-2].val), (yyvsp[-1].
val), 0, (yyvsp[0].val), &(yyloc));
6159 {
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;}
6161#line 6157 "ripper.c"
6165#line 1277 "ripper.y"
6167 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
6169#line 6165 "ripper.c"
6173#line 1283 "ripper.y"
6178 {
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;}
6180#line 6176 "ripper.c"
6184#line 1290 "ripper.y"
6187 (yyval.
val) = newline_node((yyvsp[0].val));
6189 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
6191#line 6187 "ripper.c"
6195#line 1297 "ripper.y"
6198 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
6200 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
6202#line 6198 "ripper.c"
6206#line 1304 "ripper.y"
6208 (yyval.
val) = remove_begin((yyvsp[0].val));
6210#line 6206 "ripper.c"
6214#line 1310 "ripper.y"
6216 (yyval.
val) = (yyvsp[0].val);
6218#line 6214 "ripper.c"
6222#line 1314 "ripper.y"
6224 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
6226#line 6222 "ripper.c"
6230#line 1318 "ripper.y"
6232 (yyval.
val) = (yyvsp[0].val);
6234#line 6230 "ripper.c"
6238#line 1323 "ripper.y"
6240#line 6236 "ripper.c"
6244#line 1324 "ripper.y"
6249 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(
alias,v1,v2);(yyval.
val)=v3;}
6251#line 6247 "ripper.c"
6255#line 1331 "ripper.y"
6260 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
6262#line 6258 "ripper.c"
6266#line 1338 "ripper.y"
6271 buf[1] = (
char)(yyvsp[0].val)->nd_nth;
6274 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
6276#line 6272 "ripper.c"
6280#line 1348 "ripper.y"
6283 yyerror1(&(yylsp[0]),
"can't make alias for the number variables");
6286 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(var_alias,v1,v2);v4=v3;v5=dispatch1(alias_error,v4);(yyval.
val)=v5;}ripper_error(p);
6288#line 6284 "ripper.c"
6292#line 1356 "ripper.y"
6295 (yyval.
val) = (yyvsp[0].val);
6297 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(undef,v1);(yyval.
val)=v2;}
6299#line 6295 "ripper.c"
6303#line 1363 "ripper.y"
6306 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
6307 fixpos((yyval.
val), (yyvsp[0].
val));
6309 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
6311#line 6307 "ripper.c"
6315#line 1371 "ripper.y"
6318 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
6319 fixpos((yyval.
val), (yyvsp[0].
val));
6321 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
6323#line 6319 "ripper.c"
6327#line 1379 "ripper.y"
6334 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].
val), 1, &(yyloc));
6337 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(while_mod,v1,v2);(yyval.
val)=v3;}
6339#line 6335 "ripper.c"
6343#line 1391 "ripper.y"
6350 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].
val), 1, &(yyloc));
6353 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(until_mod,v1,v2);(yyval.
val)=v3;}
6355#line 6351 "ripper.c"
6359#line 1403 "ripper.y"
6363 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6364 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc);
6365 (yyval.
val) =
NEW_RESCUE(remove_begin((yyvsp[-2].val)), resq, 0, &(yyloc));
6367 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
6369#line 6365 "ripper.c"
6373#line 1413 "ripper.y"
6376 rb_warn0(
"END in method; use at_exit");
6381 NODE_SCOPE, 0 , (yyvsp[-1].val) , 0 , &(yyloc));
6385 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(
END,v1);(yyval.
val)=v2;}
6387#line 6383 "ripper.c"
6391#line 1428 "ripper.y"
6395 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
6397 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
6399#line 6395 "ripper.c"
6403#line 1436 "ripper.y"
6407 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
6409 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
6411#line 6407 "ripper.c"
6415#line 1444 "ripper.y"
6418 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6420 (yyval.
val) = node_assign(p, (yyvsp[-4].val),
NEW_RESCUE((yyvsp[-2].val),
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc), 0, &(yyloc)), &(yyloc));
6422 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);v4=(yyvsp[-4].
val);v5=v3;v6=dispatch2(massign,v4,v5);(yyval.
val)=v6;}
6424#line 6420 "ripper.c"
6428#line 1453 "ripper.y"
6431 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
6433 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
6435#line 6431 "ripper.c"
6439#line 1463 "ripper.y"
6442 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
6444 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
6446#line 6442 "ripper.c"
6450#line 1470 "ripper.y"
6453 (yyval.
val) = new_op_assign(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
6455 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
6457#line 6453 "ripper.c"
6461#line 1477 "ripper.y"
6464 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-3]), &(yyloc));
6466 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].
val);v2=escape_Qundef((yyvsp[-3].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-1].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
6469#line 6465 "ripper.c"
6473#line 1485 "ripper.y"
6476 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
6478 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6480#line 6476 "ripper.c"
6484#line 1492 "ripper.y"
6487 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
6489 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6491#line 6487 "ripper.c"
6495#line 1499 "ripper.y"
6498 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
6499 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].val), (yyvsp[-2].val), &loc), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
6501 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-1].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
6503#line 6499 "ripper.c"
6507#line 1507 "ripper.y"
6510 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val),
ID2VAL(
idCOLON2), (yyvsp[-2].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
6512 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6514#line 6510 "ripper.c"
6518#line 1514 "ripper.y"
6521 rb_backref_error(p, (yyvsp[-2].val));
6524 {
VALUE v1,v2,v3,v4,v5;v1=var_field(p, (yyvsp[-2].val));v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);v4=v3;v5=dispatch1(assign_error,v4);(yyval.
val)=v5;}ripper_error(p);
6526#line 6522 "ripper.c"
6530#line 1524 "ripper.y"
6533 (yyval.
val) = (yyvsp[0].val);
6535#line 6531 "ripper.c"
6539#line 1529 "ripper.y"
6542 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6546 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
6548#line 6544 "ripper.c"
6552#line 1542 "ripper.y"
6554 (yyval.
val) = logop(p,
idAND, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
6556#line 6552 "ripper.c"
6560#line 1546 "ripper.y"
6562 (yyval.
val) = logop(p,
idOR, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
6564#line 6560 "ripper.c"
6568#line 1550 "ripper.y"
6570 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
6572#line 6568 "ripper.c"
6576#line 1554 "ripper.y"
6578 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
6580#line 6576 "ripper.c"
6584#line 1558 "ripper.y"
6592#line 6588 "ripper.c"
6596#line 1565 "ripper.y"
6597 {(yyval.
tbl) = push_pvtbl(p);}
6598#line 6594 "ripper.c"
6602#line 1567 "ripper.y"
6603 {pop_pvtbl(p, (yyvsp[-1].tbl));}
6604#line 6600 "ripper.c"
6608#line 1568 "ripper.y"
6612 (yyval.
val) = new_case3(p, (yyvsp[-5].val),
NEW_IN((yyvsp[-1].val), 0, 0, &(yylsp[-1])), &(yyloc));
6614 {
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;}
6616#line 6612 "ripper.c"
6620#line 1579 "ripper.y"
6623 (yyval.
val) = (yyvsp[0].val);
6625#line 6621 "ripper.c"
6629#line 1585 "ripper.y"
6631#line 6627 "ripper.c"
6635#line 1585 "ripper.y"
6637#line 6633 "ripper.c"
6641#line 1586 "ripper.y"
6643 (yyval.
val) = (yyvsp[-2].val);
6645#line 6641 "ripper.c"
6649#line 1597 "ripper.y"
6652 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
6654 {
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;}
6656#line 6652 "ripper.c"
6660#line 1606 "ripper.y"
6662 (yyval.
val) = (yyvsp[-1].val);
6664 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
6668#line 6664 "ripper.c"
6672#line 1616 "ripper.y"
6678 (yyval.
val)=(yyvsp[0].val);
6680#line 6676 "ripper.c"
6684#line 1626 "ripper.y"
6689 (yyval.
val) = (yyvsp[-1].val);
6691 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(command,v1,v2);(yyval.
val)=v3;}
6693#line 6689 "ripper.c"
6697#line 1635 "ripper.y"
6700 block_dup_check(p, (yyvsp[-1].val), (yyvsp[0].val));
6702 (yyval.
val) = method_add_block(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
6703 fixpos((yyval.
val), (yyvsp[-2].
val));
6706 {
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;}
6708#line 6704 "ripper.c"
6712#line 1646 "ripper.y"
6715 (yyval.
val) = new_command_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val),
Qnull, &(yylsp[-1]), &(yyloc));
6717 {
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;}
6719#line 6715 "ripper.c"
6723#line 1653 "ripper.y"
6726 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
6728 {
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;}
6730#line 6726 "ripper.c"
6734#line 1660 "ripper.y"
6739 {
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;}
6741#line 6737 "ripper.c"
6745#line 1667 "ripper.y"
6748 (yyval.
val) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
6750 {
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;}
6752#line 6748 "ripper.c"
6756#line 1674 "ripper.y"
6760 fixpos((yyval.
val), (yyvsp[0].
val));
6762 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
6764#line 6760 "ripper.c"
6768#line 1682 "ripper.y"
6771 (yyval.
val) = new_yield(p, (yyvsp[0].val), &(yyloc));
6772 fixpos((yyval.
val), (yyvsp[0].
val));
6774 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(yield,v1);(yyval.
val)=v2;}
6776#line 6772 "ripper.c"
6780#line 1690 "ripper.y"
6783 (yyval.
val) =
NEW_RETURN(ret_args(p, (yyvsp[0].val)), &(yyloc));
6785 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
return,v1);(yyval.
val)=v2;}
6787#line 6783 "ripper.c"
6791#line 1697 "ripper.y"
6794 (yyval.
val) =
NEW_BREAK(ret_args(p, (yyvsp[0].val)), &(yyloc));
6796 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
break,v1);(yyval.
val)=v2;}
6798#line 6794 "ripper.c"
6802#line 1704 "ripper.y"
6805 (yyval.
val) =
NEW_NEXT(ret_args(p, (yyvsp[0].val)), &(yyloc));
6807 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(next,v1);(yyval.
val)=v2;}
6809#line 6805 "ripper.c"
6813#line 1714 "ripper.y"
6816 (yyval.
val) = (yyvsp[-1].val);
6818 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6820#line 6816 "ripper.c"
6824#line 1724 "ripper.y"
6829 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6831#line 6827 "ripper.c"
6835#line 1733 "ripper.y"
6840 (yyval.
val)=(yyvsp[0].val);
6842#line 6838 "ripper.c"
6846#line 1740 "ripper.y"
6849 (yyval.
val) =
NEW_MASGN(list_append(p, (yyvsp[-1].val),(yyvsp[0].
val)), 0, &(yyloc));
6851 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6853#line 6849 "ripper.c"
6857#line 1747 "ripper.y"
6862 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
6864#line 6860 "ripper.c"
6868#line 1754 "ripper.y"
6873 {
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;}
6875#line 6871 "ripper.c"
6879#line 1761 "ripper.y"
6884 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
6886#line 6882 "ripper.c"
6890#line 1768 "ripper.y"
6895 {
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;}
6897#line 6893 "ripper.c"
6901#line 1775 "ripper.y"
6906 {
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;}
6908#line 6904 "ripper.c"
6912#line 1782 "ripper.y"
6917 {
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;}
6919#line 6915 "ripper.c"
6923#line 1789 "ripper.y"
6928 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
6930#line 6926 "ripper.c"
6934#line 1796 "ripper.y"
6939 {
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;}
6941#line 6937 "ripper.c"
6945#line 1806 "ripper.y"
6948 (yyval.
val) = (yyvsp[-1].val);
6950 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6952#line 6948 "ripper.c"
6956#line 1815 "ripper.y"
6959 (yyval.
val) =
NEW_LIST((yyvsp[-1].val), &(yylsp[-1]));
6961 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-1].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
6963#line 6959 "ripper.c"
6967#line 1822 "ripper.y"
6970 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
6972 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6974#line 6970 "ripper.c"
6978#line 1831 "ripper.y"
6983 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
6985#line 6981 "ripper.c"
6989#line 1838 "ripper.y"
6992 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].
val));
6994 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6996#line 6992 "ripper.c"
7000#line 1847 "ripper.y"
7003 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7005 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7007#line 7003 "ripper.c"
7011#line 1854 "ripper.y"
7014 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7016 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7018#line 7014 "ripper.c"
7022#line 1861 "ripper.y"
7025 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
7027 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
7029#line 7025 "ripper.c"
7033#line 1868 "ripper.y"
7035 if ((yyvsp[-1].val) ==
tANDDOT) {
7036 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
7039 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7041 {
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;}
7043#line 7039 "ripper.c"
7047#line 1878 "ripper.y"
7050 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].
val), &(yyloc));
7052 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=v3;}
7054#line 7050 "ripper.c"
7058#line 1885 "ripper.y"
7060 if ((yyvsp[-1].val) ==
tANDDOT) {
7061 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
7064 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7066 {
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;}
7068#line 7064 "ripper.c"
7072#line 1895 "ripper.y"
7075 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
7077 {
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);}
7079#line 7075 "ripper.c"
7083#line 1902 "ripper.y"
7086 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
7088 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
7090#line 7086 "ripper.c"
7094#line 1909 "ripper.y"
7097 rb_backref_error(p, (yyvsp[0].val));
7100 {
VALUE v1,v2;v1=var_field(p, (yyvsp[0].val));v2=dispatch1(assign_error,v1);(yyval.
val)=v2;}ripper_error(p);
7102#line 7098 "ripper.c"
7106#line 1919 "ripper.y"
7109 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7111 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7113#line 7109 "ripper.c"
7117#line 1926 "ripper.y"
7120 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
7122 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
7124#line 7120 "ripper.c"
7128#line 1933 "ripper.y"
7131 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
7133 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
7135#line 7131 "ripper.c"
7139#line 1940 "ripper.y"
7142 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7144 {
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;}
7146#line 7142 "ripper.c"
7150#line 1947 "ripper.y"
7153 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].
val), &(yyloc));
7157#line 7153 "ripper.c"
7161#line 1954 "ripper.y"
7164 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7166 {
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;}
7168#line 7164 "ripper.c"
7172#line 1961 "ripper.y"
7175 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
7177 {
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);}
7179#line 7175 "ripper.c"
7183#line 1968 "ripper.y"
7186 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
7188 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
7190#line 7186 "ripper.c"
7194#line 1975 "ripper.y"
7197 rb_backref_error(p, (yyvsp[0].val));
7200 {
VALUE v1,v2;v1=var_field(p, (yyvsp[0].val));v2=dispatch1(assign_error,v1);(yyval.
val)=v2;}ripper_error(p);
7202#line 7198 "ripper.c"
7206#line 1985 "ripper.y"
7209 yyerror1(&(yylsp[0]),
"class/module name must be CONSTANT");
7211 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(class_name_error,v1);(yyval.
val)=v2;}ripper_error(p);
7213#line 7209 "ripper.c"
7217#line 1995 "ripper.y"
7222 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
7224#line 7220 "ripper.c"
7228#line 2002 "ripper.y"
7233 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(const_ref,v1);(yyval.
val)=v2;}
7235#line 7231 "ripper.c"
7239#line 2009 "ripper.y"
7244 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
7246#line 7242 "ripper.c"
7250#line 2021 "ripper.y"
7253 (yyval.
val) = (yyvsp[0].val);
7255#line 7251 "ripper.c"
7259#line 2029 "ripper.y"
7264 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(symbol_literal,v1);(yyval.
val)=v2;}
7266#line 7262 "ripper.c"
7270#line 2039 "ripper.y"
7277#line 7273 "ripper.c"
7281#line 2045 "ripper.y"
7283#line 7279 "ripper.c"
7287#line 2046 "ripper.y"
7291 (yyval.
val) = block_append(p, (yyvsp[-3].val), undef);
7295#line 7291 "ripper.c"
7299#line 2055 "ripper.y"
7301#line 7297 "ripper.c"
7305#line 2056 "ripper.y"
7307#line 7303 "ripper.c"
7311#line 2057 "ripper.y"
7313#line 7309 "ripper.c"
7317#line 2058 "ripper.y"
7319#line 7315 "ripper.c"
7323#line 2059 "ripper.y"
7325#line 7321 "ripper.c"
7329#line 2060 "ripper.y"
7331#line 7327 "ripper.c"
7335#line 2061 "ripper.y"
7337#line 7333 "ripper.c"
7341#line 2062 "ripper.y"
7343#line 7339 "ripper.c"
7347#line 2063 "ripper.y"
7349#line 7345 "ripper.c"
7353#line 2064 "ripper.y"
7355#line 7351 "ripper.c"
7359#line 2065 "ripper.y"
7361#line 7357 "ripper.c"
7365#line 2066 "ripper.y"
7367#line 7363 "ripper.c"
7371#line 2067 "ripper.y"
7373#line 7369 "ripper.c"
7377#line 2068 "ripper.y"
7379#line 7375 "ripper.c"
7383#line 2069 "ripper.y"
7385#line 7381 "ripper.c"
7389#line 2070 "ripper.y"
7391#line 7387 "ripper.c"
7395#line 2071 "ripper.y"
7397#line 7393 "ripper.c"
7401#line 2072 "ripper.y"
7403#line 7399 "ripper.c"
7407#line 2073 "ripper.y"
7409#line 7405 "ripper.c"
7413#line 2074 "ripper.y"
7415#line 7411 "ripper.c"
7419#line 2075 "ripper.y"
7421#line 7417 "ripper.c"
7425#line 2076 "ripper.y"
7427#line 7423 "ripper.c"
7431#line 2077 "ripper.y"
7433#line 7429 "ripper.c"
7437#line 2078 "ripper.y"
7439#line 7435 "ripper.c"
7443#line 2079 "ripper.y"
7445#line 7441 "ripper.c"
7449#line 2080 "ripper.y"
7451#line 7447 "ripper.c"
7455#line 2081 "ripper.y"
7457#line 7453 "ripper.c"
7461#line 2082 "ripper.y"
7463#line 7459 "ripper.c"
7467#line 2083 "ripper.y"
7469#line 7465 "ripper.c"
7473#line 2084 "ripper.y"
7475#line 7471 "ripper.c"
7479#line 2102 "ripper.y"
7482 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7484 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
7486#line 7482 "ripper.c"
7490#line 2109 "ripper.y"
7493 (yyval.
val) = new_op_assign(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7495 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
7497#line 7493 "ripper.c"
7501#line 2116 "ripper.y"
7505 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-3]), &(yyloc));
7507 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].
val);v2=escape_Qundef((yyvsp[-3].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-1].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7509#line 7505 "ripper.c"
7513#line 2124 "ripper.y"
7517 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7519 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7521#line 7517 "ripper.c"
7525#line 2132 "ripper.y"
7529 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7531 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=(yyvsp[-3].
val);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7533#line 7529 "ripper.c"
7537#line 2140 "ripper.y"
7541 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val),
ID2VAL(
idCOLON2), (yyvsp[-2].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
7543 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].
val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].
val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].
val);v7=(yyvsp[0].
val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7545#line 7541 "ripper.c"
7549#line 2148 "ripper.y"
7552 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
7553 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].val), (yyvsp[-2].val), &loc), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7555 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-4].
val);v2=(yyvsp[-2].
val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-1].
val);v6=(yyvsp[0].
val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7557#line 7553 "ripper.c"
7561#line 2156 "ripper.y"
7564 (yyval.
val) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-2].val), &(yyloc)), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
7566 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].
val);v2=dispatch1(top_const_field,v1);v3=v2;v4=(yyvsp[-1].
val);v5=(yyvsp[0].
val);v6=dispatch3(opassign,v3,v4,v5);(yyval.
val)=v6;}
7568#line 7564 "ripper.c"
7572#line 2163 "ripper.y"
7575 rb_backref_error(p, (yyvsp[-2].val));
7578 {
VALUE v1,v2,v3,v4,v5,v6;v1=var_field(p, (yyvsp[-2].val));v2=(yyvsp[-1].
val);v3=(yyvsp[0].
val);v4=dispatch3(opassign,v1,v2,v3);v5=v4;v6=dispatch1(assign_error,v5);(yyval.
val)=v6;}ripper_error(p);
7580#line 7576 "ripper.c"
7584#line 2171 "ripper.y"
7589 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7591 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7593#line 7589 "ripper.c"
7597#line 2180 "ripper.y"
7602 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
7604 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7606#line 7602 "ripper.c"
7610#line 2189 "ripper.y"
7614 loc.beg_pos = (yylsp[0]).end_pos;
7615 loc.end_pos = (yylsp[0]).end_pos;
7620 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7622#line 7618 "ripper.c"
7626#line 2201 "ripper.y"
7630 loc.beg_pos = (yylsp[0]).end_pos;
7631 loc.end_pos = (yylsp[0]).end_pos;
7636 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7638#line 7634 "ripper.c"
7642#line 2213 "ripper.y"
7646 loc.beg_pos = (yylsp[-1]).beg_pos;
7647 loc.end_pos = (yylsp[-1]).beg_pos;
7652 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7654#line 7650 "ripper.c"
7658#line 2225 "ripper.y"
7662 loc.beg_pos = (yylsp[-1]).beg_pos;
7663 loc.end_pos = (yylsp[-1]).beg_pos;
7668 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7670#line 7666 "ripper.c"
7674#line 2237 "ripper.y"
7676 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'+', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7678#line 7674 "ripper.c"
7682#line 2241 "ripper.y"
7684 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'-', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7686#line 7682 "ripper.c"
7690#line 2245 "ripper.y"
7692 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'*', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7694#line 7690 "ripper.c"
7698#line 2249 "ripper.y"
7700 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'/', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7702#line 7698 "ripper.c"
7706#line 2253 "ripper.y"
7708 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'%', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7710#line 7706 "ripper.c"
7714#line 2257 "ripper.y"
7716 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7718#line 7714 "ripper.c"
7722#line 2261 "ripper.y"
7724 (yyval.
val) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].
val), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
7726#line 7722 "ripper.c"
7730#line 2265 "ripper.y"
7732 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUPlus, &(yylsp[-1]), &(yyloc));
7734#line 7730 "ripper.c"
7738#line 2269 "ripper.y"
7740 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUMinus, &(yylsp[-1]), &(yyloc));
7742#line 7738 "ripper.c"
7746#line 2273 "ripper.y"
7748 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'|', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7750#line 7746 "ripper.c"
7754#line 2277 "ripper.y"
7756 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'^', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7758#line 7754 "ripper.c"
7762#line 2281 "ripper.y"
7764 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'&', (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7766#line 7762 "ripper.c"
7770#line 2285 "ripper.y"
7772 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idCmp, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7774#line 7770 "ripper.c"
7778#line 2290 "ripper.y"
7780 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7782#line 7778 "ripper.c"
7786#line 2294 "ripper.y"
7788 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEqq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7790#line 7786 "ripper.c"
7794#line 2298 "ripper.y"
7796 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeq, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7798#line 7794 "ripper.c"
7802#line 2302 "ripper.y"
7804 (yyval.
val) = match_op(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7806#line 7802 "ripper.c"
7810#line 2306 "ripper.y"
7812 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeqTilde, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7814#line 7810 "ripper.c"
7818#line 2310 "ripper.y"
7820 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7822#line 7818 "ripper.c"
7826#line 2314 "ripper.y"
7828 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
'~', &(yylsp[-1]), &(yyloc));
7830#line 7826 "ripper.c"
7834#line 2318 "ripper.y"
7836 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idLTLT, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7838#line 7834 "ripper.c"
7842#line 2322 "ripper.y"
7844 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idGTGT, (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7846#line 7842 "ripper.c"
7850#line 2326 "ripper.y"
7852 (yyval.
val) = logop(p,
idANDOP, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7854#line 7850 "ripper.c"
7858#line 2330 "ripper.y"
7860 (yyval.
val) = logop(p,
idOROP, (yyvsp[-2].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
7862#line 7858 "ripper.c"
7866#line 2333 "ripper.y"
7868#line 7864 "ripper.c"
7872#line 2334 "ripper.y"
7875 (yyval.
val) = new_defined(p, (yyvsp[0].val), &(yyloc));
7877#line 7873 "ripper.c"
7881#line 2339 "ripper.y"
7885 (yyval.
val) = new_if(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[0].val), &(yyloc));
7886 fixpos((yyval.
val), (yyvsp[-5].
val));
7888 {
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;}
7890#line 7886 "ripper.c"
7894#line 2348 "ripper.y"
7896 (yyval.
val) = (yyvsp[0].val);
7898#line 7894 "ripper.c"
7902#line 2353 "ripper.y"
7903 {(yyval.
val) =
'>';}
7904#line 7900 "ripper.c"
7908#line 2354 "ripper.y"
7909 {(yyval.
val) =
'<';}
7910#line 7906 "ripper.c"
7914#line 2355 "ripper.y"
7916#line 7912 "ripper.c"
7920#line 2356 "ripper.y"
7922#line 7918 "ripper.c"
7926#line 2360 "ripper.y"
7928 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7930#line 7926 "ripper.c"
7934#line 2364 "ripper.y"
7937 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7939#line 7935 "ripper.c"
7943#line 2371 "ripper.y"
7946 (yyval.
val) = (yyvsp[0].val);
7948#line 7944 "ripper.c"
7952#line 2379 "ripper.y"
7954 (yyval.
val) = (yyvsp[-1].val);
7956#line 7952 "ripper.c"
7960#line 2383 "ripper.y"
7963 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
7965 {
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;}
7967#line 7963 "ripper.c"
7971#line 2390 "ripper.y"
7974 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : 0;
7976 {
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;}
7978#line 7974 "ripper.c"
7982#line 2399 "ripper.y"
7985 (yyval.
val) = (yyvsp[0].val);
7987#line 7983 "ripper.c"
7991#line 2404 "ripper.y"
7994 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7998 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
8000#line 7996 "ripper.c"
8004#line 2415 "ripper.y"
8007 (yyval.
val) = (yyvsp[-1].val);
8009 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
8011#line 8007 "ripper.c"
8015#line 2422 "ripper.y"
8032 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), splat, &(yyloc));
8034 (yyval.
val) = arg_append(p, (yyval.
val), new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
8036 (yyval.
val) = arg_blk_pass((yyval.
val), block);
8038 {
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;}
8041#line 8037 "ripper.c"
8045#line 2448 "ripper.y"
8063 (yyval.
val) = arg_append(p, splat, new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
8065 (yyval.
val) = splat;
8067 (yyval.
val) = arg_blk_pass((yyval.
val), block);
8069 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
8072#line 8068 "ripper.c"
8076#line 2483 "ripper.y"
8078 (yyval.
val) = (yyvsp[-1].val);
8080#line 8076 "ripper.c"
8084#line 2487 "ripper.y"
8087 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
8089 {
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;}
8091#line 8087 "ripper.c"
8095#line 2494 "ripper.y"
8098 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
8100 {
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;}
8102#line 8098 "ripper.c"
8106#line 2503 "ripper.y"
8112 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
8114#line 8110 "ripper.c"
8118#line 2511 "ripper.y"
8121 (yyval.
val) = arg_blk_pass((yyvsp[-1].val), (yyvsp[0].
val));
8123 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_block,v1,v2);(yyval.
val)=v3;}
8125#line 8121 "ripper.c"
8129#line 2518 "ripper.y"
8132 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
8133 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].
val));
8135 {
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;}
8137#line 8133 "ripper.c"
8141#line 2526 "ripper.y"
8144 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
val);
8145 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].
val));
8147 {
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;}
8149#line 8145 "ripper.c"
8153#line 2534 "ripper.y"
8154 {{
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;}}
8155#line 8151 "ripper.c"
8159#line 2537 "ripper.y"
8177#line 8173 "ripper.c"
8181#line 2555 "ripper.y"
8197 (yyval.
val) = (yyvsp[0].val);
8199#line 8195 "ripper.c"
8203#line 2575 "ripper.y"
8208 (yyval.
val)=(yyvsp[0].val);
8210#line 8206 "ripper.c"
8214#line 2584 "ripper.y"
8216 (yyval.
val) = (yyvsp[0].val);
8218#line 8214 "ripper.c"
8222#line 2588 "ripper.y"
8226#line 8222 "ripper.c"
8230#line 2594 "ripper.y"
8235 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
8237#line 8233 "ripper.c"
8241#line 2601 "ripper.y"
8246 {
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;}
8248#line 8244 "ripper.c"
8252#line 2608 "ripper.y"
8255 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8257 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
8259#line 8255 "ripper.c"
8263#line 2615 "ripper.y"
8266 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
8268 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
8270#line 8266 "ripper.c"
8274#line 2628 "ripper.y"
8277 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
8279 {
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;}
8281#line 8277 "ripper.c"
8285#line 2635 "ripper.y"
8288 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
8290 {
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;}
8292#line 8288 "ripper.c"
8296#line 2642 "ripper.y"
8301 {
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;}
8303#line 8299 "ripper.c"
8307#line 2661 "ripper.y"
8312 {
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;}
8314#line 8310 "ripper.c"
8318#line 2668 "ripper.y"
8322#line 8318 "ripper.c"
8326#line 2673 "ripper.y"
8330 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8334 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(begin,v1);(yyval.
val)=v2;}
8336#line 8332 "ripper.c"
8340#line 2682 "ripper.y"
8342#line 8338 "ripper.c"
8346#line 2683 "ripper.y"
8351 {
VALUE v1,v2;v1=0;v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8353#line 8349 "ripper.c"
8357#line 2689 "ripper.y"
8359#line 8355 "ripper.c"
8363#line 2690 "ripper.y"
8367 (yyval.
val) = (yyvsp[-2].val);
8369 {
VALUE v1,v2;v1=(yyvsp[-2].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8371#line 8367 "ripper.c"
8375#line 2698 "ripper.y"
8379 (yyval.
val) = (yyvsp[-1].val);
8381 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8383#line 8379 "ripper.c"
8387#line 2706 "ripper.y"
8392 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
8394#line 8390 "ripper.c"
8398#line 2713 "ripper.y"
8403 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
8405#line 8401 "ripper.c"
8409#line 2720 "ripper.y"
8414 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(array,v1);(yyval.
val)=v2;}
8416#line 8412 "ripper.c"
8420#line 2727 "ripper.y"
8423 (yyval.
val) = new_hash(p, (yyvsp[-1].val), &(yyloc));
8426 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(hash,v1);(yyval.
val)=v2;}
8428#line 8424 "ripper.c"
8432#line 2735 "ripper.y"
8437 {
VALUE v1;v1=dispatch0(return0);(yyval.
val)=v1;}
8439#line 8435 "ripper.c"
8443#line 2742 "ripper.y"
8446 (yyval.
val) = new_yield(p, (yyvsp[-1].val), &(yyloc));
8448 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);v3=v2;v4=dispatch1(yield,v3);(yyval.
val)=v4;}
8450#line 8446 "ripper.c"
8454#line 2749 "ripper.y"
8459 {
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;}
8461#line 8457 "ripper.c"
8465#line 2756 "ripper.y"
8470 {
VALUE v1;v1=dispatch0(yield0);(yyval.
val)=v1;}
8472#line 8468 "ripper.c"
8476#line 2762 "ripper.y"
8478#line 8474 "ripper.c"
8482#line 2763 "ripper.y"
8485 (yyval.
val) = new_defined(p, (yyvsp[-1].val), &(yyloc));
8487#line 8483 "ripper.c"
8491#line 2768 "ripper.y"
8493 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[-1].val), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
8495#line 8491 "ripper.c"
8499#line 2772 "ripper.y"
8501 (yyval.
val) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
8503#line 8499 "ripper.c"
8507#line 2776 "ripper.y"
8510 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
8512 {
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;}
8514#line 8510 "ripper.c"
8518#line 2784 "ripper.y"
8521 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
8522 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
8524 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
8526#line 8522 "ripper.c"
8530#line 2792 "ripper.y"
8532 token_info_push(p,
"->", &(yylsp[0]));
8534#line 8530 "ripper.c"
8538#line 2796 "ripper.y"
8540 (yyval.
val) = (yyvsp[0].val);
8545#line 8541 "ripper.c"
8549#line 2806 "ripper.y"
8552 (yyval.
val) = new_if(p, (yyvsp[-4].val), (yyvsp[-2].
val), (yyvsp[-1].val), &(yyloc));
8553 fixpos((yyval.
val), (yyvsp[-4].
val));
8555 {
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;}
8557#line 8553 "ripper.c"
8561#line 2817 "ripper.y"
8564 (yyval.
val) = new_unless(p, (yyvsp[-4].val), (yyvsp[-2].
val), (yyvsp[-1].val), &(yyloc));
8565 fixpos((yyval.
val), (yyvsp[-4].
val));
8567 {
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;}
8569#line 8565 "ripper.c"
8573#line 2827 "ripper.y"
8576 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].
val), 1, &(yyloc));
8577 fixpos((yyval.
val), (yyvsp[-2].
val));
8579 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
while,v1,v2);(yyval.
val)=v3;}
8581#line 8577 "ripper.c"
8585#line 2837 "ripper.y"
8588 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].
val), 1, &(yyloc));
8589 fixpos((yyval.
val), (yyvsp[-2].
val));
8591 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(until,v1,v2);(yyval.
val)=v3;}
8593#line 8589 "ripper.c"
8597#line 2845 "ripper.y"
8602#line 8598 "ripper.c"
8606#line 2851 "ripper.y"
8611 (yyval.
val) =
NEW_CASE((yyvsp[-4].val), (yyvsp[-1].
val), &(yyloc));
8612 fixpos((yyval.
val), (yyvsp[-4].
val));
8614 {
VALUE v1,v2,v3;v1=(yyvsp[-4].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8616#line 8612 "ripper.c"
8620#line 2861 "ripper.y"
8625#line 8621 "ripper.c"
8629#line 2867 "ripper.y"
8636 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8638#line 8634 "ripper.c"
8642#line 2878 "ripper.y"
8645 (yyval.
val) = new_case3(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
8647 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8649#line 8645 "ripper.c"
8653#line 2887 "ripper.y"
8665 ID id = internal_id(p);
8667 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
8669 tbl[0] = 1 ; tbl[1] =
id ;
8672 switch (
nd_type((yyvsp[-4].val))) {
8679 m->nd_next = (yyvsp[-4].
val);
8682 m->nd_next = node_assign(p, (yyvsp[-4].val),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])), &(yylsp[-4]));
8685 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].val), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, &(yylsp[-4]));
8688 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
8690 (yyval.
val) =
NEW_FOR((yyvsp[-2].val), scope, &(yyloc));
8691 fixpos((yyval.
val), (yyvsp[-4].
val));
8693 {
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;}
8695#line 8691 "ripper.c"
8699#line 2929 "ripper.y"
8702 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
8703 yyerror1(&loc,
"class definition in method body");
8709#line 8705 "ripper.c"
8713#line 2940 "ripper.y"
8716 (yyval.
val) =
NEW_CLASS((yyvsp[-4].val), (yyvsp[-1].
val), (yyvsp[-3].val), &(yyloc));
8718 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8721 {
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;}
8725#line 8721 "ripper.c"
8729#line 2952 "ripper.y"
8736#line 8732 "ripper.c"
8740#line 2961 "ripper.y"
8745 set_line_body((yyvsp[-1].val),
nd_line((yyvsp[-4].val)));
8746 fixpos((yyval.
val), (yyvsp[-4].
val));
8748 {
VALUE v1,v2,v3;v1=(yyvsp[-4].
val);v2=(yyvsp[-1].
val);v3=dispatch2(sclass,v1,v2);(yyval.
val)=v3;}
8753#line 8749 "ripper.c"
8757#line 2974 "ripper.y"
8760 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
8761 yyerror1(&loc,
"module definition in method body");
8767#line 8763 "ripper.c"
8771#line 2985 "ripper.y"
8776 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8779 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[-1].
val);v3=dispatch2(module,v1,v2);(yyval.
val)=v3;}
8783#line 8779 "ripper.c"
8787#line 2997 "ripper.y"
8789 numparam_name(p,
get_id((yyvsp[0].val)));
8794#line 8790 "ripper.c"
8798#line 3003 "ripper.y"
8803#line 8799 "ripper.c"
8807#line 3010 "ripper.y"
8810 NODE *body = remove_begin((yyvsp[-1].val));
8811 reduce_nodes(p, &body);
8812 (yyval.
val) =
NEW_DEFN((yyvsp[-5].val), (yyvsp[-2].
val), body, &(yyloc));
8814 set_line_body(body, (yylsp[-6]).beg_pos.lineno);
8816 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].
val);v2=(yyvsp[-2].
val);v3=(yyvsp[-1].
val);v4=dispatch3(def,v1,v2,v3);(yyval.
val)=v4;}
8821#line 8817 "ripper.c"
8825#line 3023 "ripper.y"
8827#line 8823 "ripper.c"
8831#line 3024 "ripper.y"
8833 numparam_name(p,
get_id((yyvsp[0].val)));
8841#line 8837 "ripper.c"
8845#line 3036 "ripper.y"
8848 NODE *body = remove_begin((yyvsp[-1].val));
8849 reduce_nodes(p, &body);
8850 (yyval.
val) =
NEW_DEFS((yyvsp[-7].val), (yyvsp[-4].
val), (yyvsp[-2].val), body, &(yyloc));
8852 set_line_body(body, (yylsp[-8]).beg_pos.lineno);
8854 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-7].
val);v2=(yyvsp[-6].
val);v3=(yyvsp[-4].
val);v4=(yyvsp[-2].
val);v5=(yyvsp[-1].
val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.
val)=v6;}
8859#line 8855 "ripper.c"
8863#line 3050 "ripper.y"
8868 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(
break,v2);(yyval.
val)=v3;}
8870#line 8866 "ripper.c"
8874#line 3057 "ripper.y"
8879 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(next,v2);(yyval.
val)=v3;}
8881#line 8877 "ripper.c"
8885#line 3064 "ripper.y"
8890 {
VALUE v1;v1=dispatch0(redo);(yyval.
val)=v1;}
8892#line 8888 "ripper.c"
8896#line 3071 "ripper.y"
8901 {
VALUE v1;v1=dispatch0(retry);(yyval.
val)=v1;}
8903#line 8899 "ripper.c"
8907#line 3080 "ripper.y"
8910 (yyval.
val) = (yyvsp[0].val);
8912#line 8908 "ripper.c"
8916#line 3087 "ripper.y"
8918 token_info_push(p,
"begin", &(yyloc));
8920#line 8916 "ripper.c"
8924#line 3093 "ripper.y"
8927 token_info_push(p,
"if", &(yyloc));
8939#line 8935 "ripper.c"
8943#line 3110 "ripper.y"
8945 token_info_push(p,
"unless", &(yyloc));
8947#line 8943 "ripper.c"
8951#line 3116 "ripper.y"
8953 token_info_push(p,
"while", &(yyloc));
8955#line 8951 "ripper.c"
8959#line 3122 "ripper.y"
8961 token_info_push(p,
"until", &(yyloc));
8963#line 8959 "ripper.c"
8967#line 3128 "ripper.y"
8969 token_info_push(p,
"case", &(yyloc));
8971#line 8967 "ripper.c"
8975#line 3134 "ripper.y"
8977 token_info_push(p,
"for", &(yyloc));
8979#line 8975 "ripper.c"
8983#line 3140 "ripper.y"
8985 token_info_push(p,
"class", &(yyloc));
8987#line 8983 "ripper.c"
8991#line 3146 "ripper.y"
8993 token_info_push(p,
"module", &(yyloc));
8995#line 8991 "ripper.c"
8999#line 3152 "ripper.y"
9001 token_info_push(p,
"def", &(yyloc));
9003#line 8999 "ripper.c"
9007#line 3158 "ripper.y"
9009 token_info_push(p,
"do", &(yyloc));
9011#line 9007 "ripper.c"
9015#line 3164 "ripper.y"
9017 token_info_push(p,
"do", &(yyloc));
9019#line 9015 "ripper.c"
9023#line 3170 "ripper.y"
9025 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
9027#line 9023 "ripper.c"
9031#line 3176 "ripper.y"
9033 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
9035#line 9031 "ripper.c"
9039#line 3182 "ripper.y"
9041 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
9043#line 9039 "ripper.c"
9047#line 3188 "ripper.y"
9050 int same = ptinfo_beg &&
strcmp(ptinfo_beg->
token,
"case") != 0;
9051 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
9056 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
9057 if (!e.
nonspc) *ptinfo_beg = e;
9060#line 9056 "ripper.c"
9064#line 3203 "ripper.y"
9067 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
9069#line 9065 "ripper.c"
9073#line 3210 "ripper.y"
9075 token_info_pop(p,
"end", &(yyloc));
9077#line 9073 "ripper.c"
9081#line 3216 "ripper.y"
9084 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
9086#line 9082 "ripper.c"
9090#line 3235 "ripper.y"
9093 (yyval.
val) = new_if(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
9094 fixpos((yyval.
val), (yyvsp[-3].
val));
9096 {
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;}
9098#line 9094 "ripper.c"
9102#line 3246 "ripper.y"
9105 (yyval.
val) = (yyvsp[0].val);
9107 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(
else,v1);(yyval.
val)=v2;}
9109#line 9105 "ripper.c"
9113#line 3259 "ripper.y"
9116 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
9117 mark_lvar_used(p, (yyval.
val));
9119 (yyval.
val)=assignable(p, (yyvsp[0].val));
9121#line 9117 "ripper.c"
9125#line 3267 "ripper.y"
9128 (yyval.
val) = (yyvsp[-1].val);
9130 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
9132#line 9128 "ripper.c"
9136#line 3276 "ripper.y"
9141 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
9143#line 9139 "ripper.c"
9147#line 3283 "ripper.y"
9150 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].
val));
9152 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
9154#line 9150 "ripper.c"
9158#line 3292 "ripper.y"
9163 (yyval.
val)=(yyvsp[0].val);
9165#line 9161 "ripper.c"
9169#line 3299 "ripper.y"
9174 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
9176#line 9172 "ripper.c"
9180#line 3306 "ripper.y"
9185 {
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;}
9187#line 9183 "ripper.c"
9191#line 3313 "ripper.y"
9196 {
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;}
9198#line 9194 "ripper.c"
9202#line 3320 "ripper.y"
9207 {
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;}
9209#line 9205 "ripper.c"
9213#line 3329 "ripper.y"
9216 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
9217 mark_lvar_used(p, (yyval.
val));
9219 (yyval.
val)=assignable(p, (yyvsp[0].val));
9221#line 9217 "ripper.c"
9225#line 3337 "ripper.y"
9232#line 9228 "ripper.c"
9236#line 3346 "ripper.y"
9238 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]));
9240#line 9236 "ripper.c"
9244#line 3350 "ripper.y"
9246 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yylsp[-1]));
9248#line 9244 "ripper.c"
9252#line 3354 "ripper.y"
9254 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]));
9256#line 9252 "ripper.c"
9260#line 3358 "ripper.y"
9264#line 9260 "ripper.c"
9268#line 3362 "ripper.y"
9270 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
9272#line 9268 "ripper.c"
9276#line 3368 "ripper.y"
9278 (yyval.
val) = (yyvsp[0].val);
9280#line 9276 "ripper.c"
9284#line 3372 "ripper.y"
9288#line 9284 "ripper.c"
9292#line 3378 "ripper.y"
9294 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yyloc));
9296#line 9292 "ripper.c"
9300#line 3382 "ripper.y"
9302 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].
val), (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
9304#line 9300 "ripper.c"
9308#line 3386 "ripper.y"
9310 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9312#line 9308 "ripper.c"
9316#line 3390 "ripper.y"
9318 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val),
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9320#line 9316 "ripper.c"
9324#line 3394 "ripper.y"
9326 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
9328#line 9324 "ripper.c"
9332#line 3398 "ripper.y"
9336 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone,
NODE_SPECIAL_EXCESSIVE_COMMA,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone, &(yylsp[-1])), &(yyloc));
9338 {
VALUE v1;v1=dispatch0(excessed_comma);(yyval.
val)=new_args(p, (yyvsp[-1].val),
Qnone, v1,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone,
NULL),
NULL);}
9340#line 9336 "ripper.c"
9344#line 3406 "ripper.y"
9346 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9348#line 9344 "ripper.c"
9352#line 3410 "ripper.y"
9356#line 9352 "ripper.c"
9360#line 3414 "ripper.y"
9362 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
9364#line 9360 "ripper.c"
9368#line 3418 "ripper.y"
9370 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9372#line 9368 "ripper.c"
9376#line 3422 "ripper.y"
9380#line 9376 "ripper.c"
9384#line 3426 "ripper.y"
9386 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
9388#line 9384 "ripper.c"
9392#line 3430 "ripper.y"
9396#line 9392 "ripper.c"
9400#line 3434 "ripper.y"
9402 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
9404#line 9400 "ripper.c"
9408#line 3438 "ripper.y"
9412#line 9408 "ripper.c"
9416#line 3445 "ripper.y"
9420#line 9416 "ripper.c"
9424#line 3451 "ripper.y"
9431 {
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;}
9433#line 9429 "ripper.c"
9437#line 3460 "ripper.y"
9442 (yyval.
val) = (yyvsp[-2].val);
9444 {
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;}
9446#line 9442 "ripper.c"
9450#line 3472 "ripper.y"
9454#line 9450 "ripper.c"
9458#line 3476 "ripper.y"
9463 (yyval.
val)=(yyvsp[-1].val);
9465#line 9461 "ripper.c"
9469#line 3485 "ripper.y"
9471#line 9467 "ripper.c"
9475#line 3487 "ripper.y"
9477#line 9473 "ripper.c"
9481#line 3491 "ripper.y"
9483 new_bv(p,
get_id((yyvsp[0].val)));
9486#line 9482 "ripper.c"
9490#line 3496 "ripper.y"
9494#line 9490 "ripper.c"
9498#line 3501 "ripper.y"
9500 (yyval.
vars) = dyna_push(p);
9502#line 9498 "ripper.c"
9506#line 3504 "ripper.y"
9511#line 9507 "ripper.c"
9515#line 3508 "ripper.y"
9520#line 9516 "ripper.c"
9524#line 3512 "ripper.y"
9526 (yyval.
node) = numparam_push(p);
9528#line 9524 "ripper.c"
9532#line 3516 "ripper.y"
9536#line 9532 "ripper.c"
9540#line 3520 "ripper.y"
9546 (yyvsp[-2].
val) = args_with_numbered(p, (yyvsp[-2].val), max_numparam);
9549 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9555 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(lambda,v1,v2);(yyval.
val)=v3;}
9556 numparam_pop(p, (yyvsp[-3].node));
9557 dyna_pop(p, (yyvsp[-6].
vars));
9559#line 9555 "ripper.c"
9563#line 3541 "ripper.y"
9566 (yyval.
val) = (yyvsp[-2].val);
9569 {
VALUE v1,v2;v1=(yyvsp[-2].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9571#line 9567 "ripper.c"
9575#line 3549 "ripper.y"
9578 if (!args_info_empty_p((yyvsp[0].val)->
nd_ainfo))
9581 (yyval.
val) = (yyvsp[0].
val);
9583#line 9579 "ripper.c"
9587#line 3559 "ripper.y"
9589 token_info_pop(p,
"}", &(yylsp[0]));
9590 (yyval.
val) = (yyvsp[-1].val);
9592#line 9588 "ripper.c"
9596#line 3564 "ripper.y"
9598 (yyval.
val) = (yyvsp[-1].val);
9600#line 9596 "ripper.c"
9604#line 3570 "ripper.y"
9606 (yyval.
val) = (yyvsp[-1].val);
9608 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9612#line 9608 "ripper.c"
9616#line 3580 "ripper.y"
9623 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
9625 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9626 fixpos((yyval.
val), (yyvsp[-1].
val));
9628 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
9630#line 9626 "ripper.c"
9634#line 3594 "ripper.y"
9637 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
9639 {
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;}
9641#line 9637 "ripper.c"
9645#line 3601 "ripper.y"
9648 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
9650 {
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;}
9652#line 9648 "ripper.c"
9656#line 3608 "ripper.y"
9659 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].
val), (yyvsp[-2].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
9661 {
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;}
9663#line 9659 "ripper.c"
9667#line 3617 "ripper.y"
9670 (yyval.
val) = (yyvsp[-1].val);
9674 {
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;}
9676#line 9672 "ripper.c"
9680#line 3626 "ripper.y"
9683 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
9686 {
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;}
9688#line 9684 "ripper.c"
9692#line 3634 "ripper.y"
9695 (yyval.
val) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
9698 {
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;}
9700#line 9696 "ripper.c"
9704#line 3642 "ripper.y"
9711#line 9707 "ripper.c"
9715#line 3649 "ripper.y"
9718 (yyval.
val) = new_qcall(p, (yyvsp[-1].val), (yyvsp[-2].
val),
ID2VAL(
idCall), (yyvsp[0].
val), &(yylsp[-1]), &(yyloc));
9721 {
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;}
9723#line 9719 "ripper.c"
9727#line 3657 "ripper.y"
9733 {
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;}
9735#line 9731 "ripper.c"
9739#line 3665 "ripper.y"
9744 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
9746#line 9742 "ripper.c"
9750#line 3672 "ripper.y"
9755 {
VALUE v1;v1=dispatch0(zsuper);(yyval.
val)=v1;}
9757#line 9753 "ripper.c"
9761#line 3679 "ripper.y"
9768 fixpos((yyval.
val), (yyvsp[-3].
val));
9770 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref,v1,v2);(yyval.
val)=v3;}
9772#line 9768 "ripper.c"
9776#line 3692 "ripper.y"
9778 (yyval.
val) = (yyvsp[-1].val);
9780 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9784#line 9780 "ripper.c"
9788#line 3700 "ripper.y"
9790 (yyval.
val) = (yyvsp[-1].val);
9792 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9796#line 9792 "ripper.c"
9800#line 3709 "ripper.y"
9801 {(yyval.
vars) = dyna_push(p);}
9802#line 9798 "ripper.c"
9806#line 3710 "ripper.y"
9811#line 9807 "ripper.c"
9815#line 3714 "ripper.y"
9817 (yyval.
node) = numparam_push(p);
9819#line 9815 "ripper.c"
9823#line 3718 "ripper.y"
9827 (yyvsp[-1].
val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
9829 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9831 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].
val);v3=dispatch2(brace_block,v1,v2);(yyval.
val)=v3;}
9832 numparam_pop(p, (yyvsp[-2].node));
9833 dyna_pop(p, (yyvsp[-4].
vars));
9835#line 9831 "ripper.c"
9839#line 3731 "ripper.y"
9840 {(yyval.
vars) = dyna_push(p);}
9841#line 9837 "ripper.c"
9845#line 3732 "ripper.y"
9850#line 9846 "ripper.c"
9854#line 3736 "ripper.y"
9856 (yyval.
node) = numparam_push(p);
9859#line 9855 "ripper.c"
9863#line 3741 "ripper.y"
9867 (yyvsp[-1].
val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
9869 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
9871 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].
val);v3=dispatch2(do_block,v1,v2);(yyval.
val)=v3;}
9873 numparam_pop(p, (yyvsp[-2].node));
9874 dyna_pop(p, (yyvsp[-4].
vars));
9876#line 9872 "ripper.c"
9880#line 3756 "ripper.y"
9883 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
9886 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
9888#line 9884 "ripper.c"
9892#line 3764 "ripper.y"
9897 {
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;}
9899#line 9895 "ripper.c"
9903#line 3771 "ripper.y"
9906 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
9907 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
9909 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
9911#line 9907 "ripper.c"
9915#line 3779 "ripper.y"
9918 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].
val), &(yyloc));
9920 {
VALUE v1,v2,v3;v1=(yyvsp[-3].
val);v2=(yyvsp[0].
val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
9922#line 9918 "ripper.c"
9926#line 3790 "ripper.y"
9929 (yyval.
val) =
NEW_WHEN((yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
9930 fixpos((yyval.
val), (yyvsp[-3].
val));
9932 {
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;}
9934#line 9930 "ripper.c"
9938#line 3804 "ripper.y"
9945#line 9941 "ripper.c"
9949#line 3810 "ripper.y"
9950 {(yyval.
tbl) = push_pvtbl(p);}
9951#line 9947 "ripper.c"
9955#line 3811 "ripper.y"
9956 {(yyval.
tbl) = push_pktbl(p);}
9957#line 9953 "ripper.c"
9961#line 3813 "ripper.y"
9962 {pop_pktbl(p, (yyvsp[-2].tbl));}
9963#line 9959 "ripper.c"
9967#line 3814 "ripper.y"
9968 {pop_pvtbl(p, (yyvsp[-4].tbl));}
9969#line 9965 "ripper.c"
9973#line 3815 "ripper.y"
9977#line 9973 "ripper.c"
9981#line 3820 "ripper.y"
9984 (yyval.
val) =
NEW_IN((yyvsp[-6].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
9986 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-6].
val);v2=(yyvsp[-1].
val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(in,v1,v2,v3);(yyval.
val)=v4;}
9988#line 9984 "ripper.c"
9992#line 3834 "ripper.y"
9995 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
9996 fixpos((yyval.
val), (yyvsp[0].
val));
9998 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
10000#line 9996 "ripper.c"
10004#line 3842 "ripper.y"
10007 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
10008 fixpos((yyval.
val), (yyvsp[0].
val));
10010 {
VALUE v1,v2,v3;v1=(yyvsp[0].
val);v2=(yyvsp[-2].
val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
10012#line 10008 "ripper.c"
10016#line 3853 "ripper.y"
10018 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10021#line 10017 "ripper.c"
10025#line 3858 "ripper.y"
10027 (yyval.
val) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].val)), (yyvsp[0].val), &(yyloc));
10033#line 10029 "ripper.c"
10037#line 3866 "ripper.y"
10039 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
10041#line 10037 "ripper.c"
10045#line 3870 "ripper.y"
10047 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[0].val), &(yyloc));
10049#line 10045 "ripper.c"
10053#line 3879 "ripper.y"
10057 n = list_append(p,
n, (yyvsp[0].val));
10058 (yyval.
val) = new_hash(p,
n, &(yyloc));
10060 {
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;}
10062#line 10058 "ripper.c"
10066#line 3891 "ripper.y"
10073#line 10069 "ripper.c"
10077#line 3900 "ripper.y"
10078 {(yyval.
tbl) = push_pktbl(p);}
10079#line 10075 "ripper.c"
10083#line 3901 "ripper.y"
10084 {(yyval.
tbl) = push_pktbl(p);}
10085#line 10081 "ripper.c"
10089#line 3905 "ripper.y"
10091 pop_pktbl(p, (yyvsp[-2].tbl));
10092 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), &(yyloc));
10098#line 10094 "ripper.c"
10102#line 3914 "ripper.y"
10104 pop_pktbl(p, (yyvsp[-2].tbl));
10105 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
10111#line 10107 "ripper.c"
10115#line 3923 "ripper.y"
10117 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10118 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
10120#line 10116 "ripper.c"
10124#line 3928 "ripper.y"
10126 pop_pktbl(p, (yyvsp[-2].tbl));
10127 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), &(yyloc));
10133#line 10129 "ripper.c"
10137#line 3937 "ripper.y"
10139 pop_pktbl(p, (yyvsp[-2].tbl));
10140 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].
val), &(yyloc));
10146#line 10142 "ripper.c"
10150#line 3946 "ripper.y"
10152 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10153 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
10155#line 10151 "ripper.c"
10159#line 3950 "ripper.y"
10160 {(yyval.
tbl) = push_pktbl(p);}
10161#line 10157 "ripper.c"
10165#line 3951 "ripper.y"
10167 pop_pktbl(p, (yyvsp[-2].tbl));
10168 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].val), &(yyloc));
10170#line 10166 "ripper.c"
10174#line 3956 "ripper.y"
10176 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10179#line 10175 "ripper.c"
10183#line 3961 "ripper.y"
10185 (yyval.
tbl) = push_pktbl(p);
10189#line 10185 "ripper.c"
10193#line 3967 "ripper.y"
10195 pop_pktbl(p, (yyvsp[-2].tbl));
10197 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[-1].val), &(yyloc));
10199#line 10195 "ripper.c"
10203#line 3973 "ripper.y"
10205 (yyval.
val) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
10206 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyval.
val), &(yyloc));
10208#line 10204 "ripper.c"
10212#line 3977 "ripper.y"
10213 {(yyval.
tbl) = push_pktbl(p);}
10214#line 10210 "ripper.c"
10218#line 3978 "ripper.y"
10220 pop_pktbl(p, (yyvsp[-2].tbl));
10221 (yyval.
val) = (yyvsp[-1].val);
10223#line 10219 "ripper.c"
10227#line 3985 "ripper.y"
10231 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10236#line 10232 "ripper.c"
10240#line 3994 "ripper.y"
10242 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[0].val), 1, 0,
Qnone, &(yyloc));
10244#line 10240 "ripper.c"
10248#line 3998 "ripper.y"
10251 (yyval.
val) = new_array_pattern_tail(p, list_concat((yyvsp[-1].val), (yyvsp[0].
val)), 0, 0,
Qnone, &(yyloc));
10254 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10257#line 10253 "ripper.c"
10261#line 4007 "ripper.y"
10263 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-2].val), 1, (yyvsp[0].
val),
Qnone, &(yyloc));
10265#line 10261 "ripper.c"
10269#line 4011 "ripper.y"
10271 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-4].val), 1, (yyvsp[-2].
val), (yyvsp[0].val), &(yyloc));
10273#line 10269 "ripper.c"
10277#line 4015 "ripper.y"
10279 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-1].val), 1, 0,
Qnone, &(yyloc));
10281#line 10277 "ripper.c"
10285#line 4019 "ripper.y"
10287 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-3].val), 1, 0, (yyvsp[0].
val), &(yyloc));
10289#line 10285 "ripper.c"
10293#line 4026 "ripper.y"
10295 (yyval.
val) = (yyvsp[-1].val);
10297#line 10293 "ripper.c"
10301#line 4030 "ripper.y"
10304 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[-1].
val));
10308#line 10304 "ripper.c"
10312#line 4039 "ripper.y"
10314 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].val),
Qnone, &(yyloc));
10316#line 10312 "ripper.c"
10320#line 4043 "ripper.y"
10322 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
10324#line 10320 "ripper.c"
10328#line 4047 "ripper.y"
10330 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10332#line 10328 "ripper.c"
10336#line 4051 "ripper.y"
10338 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0, (yyvsp[0].val), &(yyloc));
10340#line 10336 "ripper.c"
10344#line 4058 "ripper.y"
10347 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].
val));
10351#line 10347 "ripper.c"
10355#line 4067 "ripper.y"
10358 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10362#line 10358 "ripper.c"
10366#line 4076 "ripper.y"
10368 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)), (yyvsp[0].
val), &(yyloc));
10370#line 10366 "ripper.c"
10374#line 4080 "ripper.y"
10376 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].val), &(yyloc)), 0, &(yyloc));
10378#line 10374 "ripper.c"
10382#line 4084 "ripper.y"
10384 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].val), &(yyloc)), 0, &(yyloc));
10386#line 10382 "ripper.c"
10390#line 4088 "ripper.y"
10392 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].val), &(yyloc));
10394#line 10390 "ripper.c"
10398#line 4092 "ripper.y"
10400 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10402#line 10398 "ripper.c"
10406#line 4096 "ripper.y"
10408 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10410#line 10406 "ripper.c"
10414#line 4102 "ripper.y"
10416#line 10412 "ripper.c"
10420#line 4104 "ripper.y"
10423 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].
val));
10427#line 10423 "ripper.c"
10431#line 4113 "ripper.y"
10433 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].val)), &(yylsp[-1]));
10439#line 10435 "ripper.c"
10443#line 4121 "ripper.y"
10445 error_duplicate_pattern_key(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
10447 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
10449 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
10451 (yyval.
val) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].val), 0, &(yyloc)));
10455#line 10451 "ripper.c"
10459#line 4136 "ripper.y"
10461 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10464 NODE *node = dsym_node(p, (yyvsp[-1].val), &loc);
10468 if (ripper_is_node_yylval((yyvsp[-1].val)) &&
RNODE((yyvsp[-1].val))->nd_cval) {
10469 VALUE label =
RNODE((yyvsp[-1].val))->nd_cval;
10470 VALUE rval =
RNODE((yyvsp[-1].val))->nd_rval;
10476 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
10480#line 10476 "ripper.c"
10484#line 4159 "ripper.y"
10486 (yyval.
val) = (yyvsp[0].val);
10488#line 10484 "ripper.c"
10492#line 4163 "ripper.y"
10496#line 10492 "ripper.c"
10500#line 4169 "ripper.y"
10504#line 10500 "ripper.c"
10508#line 4176 "ripper.y"
10513 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
10515 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10517#line 10513 "ripper.c"
10521#line 4185 "ripper.y"
10526 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].
val), &(yyloc));
10528 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10530#line 10526 "ripper.c"
10534#line 4194 "ripper.y"
10538 loc.beg_pos = (yylsp[0]).end_pos;
10539 loc.end_pos = (yylsp[0]).end_pos;
10544 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10546#line 10542 "ripper.c"
10550#line 4206 "ripper.y"
10554 loc.beg_pos = (yylsp[0]).end_pos;
10555 loc.end_pos = (yylsp[0]).end_pos;
10560 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10562#line 10558 "ripper.c"
10566#line 4221 "ripper.y"
10570 loc.beg_pos = (yylsp[-1]).beg_pos;
10571 loc.end_pos = (yylsp[-1]).beg_pos;
10576 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10578#line 10574 "ripper.c"
10582#line 4233 "ripper.y"
10586 loc.beg_pos = (yylsp[-1]).beg_pos;
10587 loc.end_pos = (yylsp[-1]).beg_pos;
10592 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].
val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10594#line 10590 "ripper.c"
10598#line 4255 "ripper.y"
10601 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
10603 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10605#line 10601 "ripper.c"
10609#line 4262 "ripper.y"
10611 token_info_push(p,
"->", &(yylsp[0]));
10613#line 10609 "ripper.c"
10617#line 4266 "ripper.y"
10619 (yyval.
val) = (yyvsp[0].val);
10624#line 10620 "ripper.c"
10628#line 4275 "ripper.y"
10631 error_duplicate_pattern_variable(p, (yyvsp[0].val), &(yylsp[0]));
10632 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
10634 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
10636#line 10632 "ripper.c"
10640#line 4285 "ripper.y"
10643 NODE *
n = gettable(p, (yyvsp[0].val), &(yyloc));
10649 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10651#line 10647 "ripper.c"
10655#line 4298 "ripper.y"
10660 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
10662#line 10658 "ripper.c"
10666#line 4305 "ripper.y"
10671 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
10673#line 10669 "ripper.c"
10677#line 4312 "ripper.y"
10680 (yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc));
10682 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10684#line 10680 "ripper.c"
10688#line 4323 "ripper.y"
10692 (yyvsp[-3].
val) ? block_append(p, node_assign(p, (yyvsp[-3].val),
NEW_ERRINFO(&(yylsp[-3])), &(yylsp[-3])), (yyvsp[-1].
val)) : (yyvsp[-1].
val),
10693 (yyvsp[0].val), &(yyloc));
10694 fixpos((yyval.
val), (yyvsp[-4].
val)?(yyvsp[-4].
val):(yyvsp[-1].
val));
10696 {
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;}
10698#line 10694 "ripper.c"
10702#line 4336 "ripper.y"
10705 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10709#line 10705 "ripper.c"
10713#line 4343 "ripper.y"
10716 if (!((yyval.
val) = splat_array((yyvsp[0].val)))) (yyval.
val) = (yyvsp[0].val);
10718 (yyval.
val)=(yyvsp[0].val);
10720#line 10716 "ripper.c"
10724#line 4353 "ripper.y"
10726 (yyval.
val) = (yyvsp[0].val);
10728#line 10724 "ripper.c"
10732#line 4360 "ripper.y"
10735 (yyval.
val) = (yyvsp[0].val);
10737 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(ensure,v1);(yyval.
val)=v2;}
10739#line 10735 "ripper.c"
10743#line 4374 "ripper.y"
10752 node = evstr2dstr(p, node);
10754 (yyval.
val) = node;
10756 (yyval.
val)=(yyvsp[0].val);
10758#line 10754 "ripper.c"
10762#line 4393 "ripper.y"
10765 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10767 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(string_concat,v1,v2);(yyval.
val)=v3;}
10769#line 10765 "ripper.c"
10773#line 4402 "ripper.y"
10776 (yyval.
val) = heredoc_dedent(p, (yyvsp[-1].val));
10777 if ((yyval.
val)) nd_set_loc((yyval.
val), &(yyloc));
10779 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(string_literal,v1);(yyval.
val)=v2;}
10781#line 10777 "ripper.c"
10785#line 4412 "ripper.y"
10788 (yyval.
val) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].val)), &(yyloc));
10790 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(xstring_literal,v1);(yyval.
val)=v2;}
10792#line 10788 "ripper.c"
10796#line 4421 "ripper.y"
10798 (yyval.
val) = new_regexp(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10800#line 10796 "ripper.c"
10804#line 4427 "ripper.y"
10809 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10811#line 10807 "ripper.c"
10815#line 4436 "ripper.y"
10820 {
VALUE v1;v1=dispatch0(words_new);(yyval.
val)=v1;}
10822#line 10818 "ripper.c"
10826#line 4443 "ripper.y"
10829 (yyval.
val) = list_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
10831 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(words_add,v1,v2);(yyval.
val)=v3;}
10833#line 10829 "ripper.c"
10837#line 4452 "ripper.y"
10838 {{
VALUE v1,v2,v3,v4;v1=dispatch0(word_new);v2=v1;v3=(yyvsp[0].
val);v4=dispatch2(word_add,v2,v3);(yyval.
val)=v4;}}
10839#line 10835 "ripper.c"
10843#line 4454 "ripper.y"
10846 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10848 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(word_add,v1,v2);(yyval.
val)=v3;}
10850#line 10846 "ripper.c"
10854#line 4463 "ripper.y"
10859 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10861#line 10857 "ripper.c"
10865#line 4472 "ripper.y"
10870 {
VALUE v1;v1=dispatch0(symbols_new);(yyval.
val)=v1;}
10872#line 10868 "ripper.c"
10876#line 4479 "ripper.y"
10879 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
10881 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(symbols_add,v1,v2);(yyval.
val)=v3;}
10883#line 10879 "ripper.c"
10887#line 4488 "ripper.y"
10892 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10894#line 10890 "ripper.c"
10898#line 4497 "ripper.y"
10903 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10905#line 10901 "ripper.c"
10909#line 4506 "ripper.y"
10914 {
VALUE v1;v1=dispatch0(qwords_new);(yyval.
val)=v1;}
10916#line 10912 "ripper.c"
10920#line 4513 "ripper.y"
10923 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
10925 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(qwords_add,v1,v2);(yyval.
val)=v3;}
10927#line 10923 "ripper.c"
10931#line 4522 "ripper.y"
10936 {
VALUE v1;v1=dispatch0(qsymbols_new);(yyval.
val)=v1;}
10938#line 10934 "ripper.c"
10942#line 4529 "ripper.y"
10945 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), (yyvsp[-1].
val));
10947 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[-1].
val);v3=dispatch2(qsymbols_add,v1,v2);(yyval.
val)=v3;}
10949#line 10945 "ripper.c"
10953#line 4538 "ripper.y"
10958 {
VALUE v1;v1=dispatch0(string_content);(yyval.
val)=v1;}
10961 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
10964#line 10960 "ripper.c"
10968#line 4549 "ripper.y"
10971 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
10973 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(string_add,v1,v2);(yyval.
val)=v3;}
10976 if (ripper_is_node_yylval((yyvsp[-1].val)) && ripper_is_node_yylval((yyvsp[0].val)) &&
10977 !
RNODE((yyvsp[-1].val))->nd_cval) {
10978 RNODE((yyvsp[-1].val))->nd_cval =
RNODE((yyvsp[0].val))->nd_cval;
10979 RNODE((yyvsp[-1].val))->nd_rval = add_mark_object(p, (yyval.
val));
10980 (yyval.
val) = (yyvsp[-1].val);
10984#line 10980 "ripper.c"
10988#line 4567 "ripper.y"
10993 {
VALUE v1;v1=dispatch0(xstring_new);(yyval.
val)=v1;}
10995#line 10991 "ripper.c"
10999#line 4574 "ripper.y"
11002 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11004 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(xstring_add,v1,v2);(yyval.
val)=v3;}
11006#line 11002 "ripper.c"
11010#line 4583 "ripper.y"
11015 {
VALUE v1;v1=dispatch0(regexp_new);(yyval.
val)=v1;}
11018 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
11021#line 11017 "ripper.c"
11025#line 4594 "ripper.y"
11028 NODE *head = (yyvsp[-1].
val), *tail = (yyvsp[0].val);
11030 (yyval.
val) = tail;
11033 (yyval.
val) = head;
11043 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
11046 (yyval.
val) = list_append(p, head, tail);
11049 VALUE s1 = 1,
s2 = 0, n1 = (yyvsp[-1].
val), n2 = (yyvsp[0].val);
11050 if (ripper_is_node_yylval(n1)) {
11051 s1 =
RNODE(n1)->nd_cval;
11052 n1 =
RNODE(n1)->nd_rval;
11054 if (ripper_is_node_yylval(n2)) {
11056 n2 =
RNODE(n2)->nd_rval;
11058 (yyval.
val) = dispatch2(regexp_add, n1, n2);
11060 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val),
s2);
11064#line 11060 "ripper.c"
11068#line 4635 "ripper.y"
11069 {(yyval.
val)=ripper_new_yylval(p, 0,
get_value((yyvsp[0].val)), (yyvsp[0].val));}
11070#line 11066 "ripper.c"
11074#line 4637 "ripper.y"
11081#line 11077 "ripper.c"
11085#line 4644 "ripper.y"
11092 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(string_dvar,v1);(yyval.
val)=v2;}
11094#line 11090 "ripper.c"
11098#line 4653 "ripper.y"
11103#line 11099 "ripper.c"
11107#line 4657 "ripper.y"
11113#line 11109 "ripper.c"
11117#line 4662 "ripper.y"
11122#line 11118 "ripper.c"
11126#line 4666 "ripper.y"
11131#line 11127 "ripper.c"
11135#line 4670 "ripper.y"
11140#line 11136 "ripper.c"
11144#line 4675 "ripper.y"
11154 if ((yyvsp[-1].val)) (yyvsp[-1].val)->flags &= ~NODE_FL_NEWLINE;
11155 (yyval.
val) = new_evstr(p, (yyvsp[-1].val), &(yyloc));
11157 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(string_embexpr,v1);(yyval.
val)=v2;}
11159#line 11155 "ripper.c"
11163#line 4692 "ripper.y"
11166 (yyval.
val) =
NEW_GVAR((yyvsp[0].val), &(yyloc));
11168 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11170#line 11166 "ripper.c"
11174#line 4699 "ripper.y"
11177 (yyval.
val) =
NEW_IVAR((yyvsp[0].val), &(yyloc));
11179 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11181#line 11177 "ripper.c"
11185#line 4706 "ripper.y"
11188 (yyval.
val) =
NEW_CVAR((yyvsp[0].val), &(yyloc));
11190 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11192#line 11188 "ripper.c"
11196#line 4720 "ripper.y"
11202 {
VALUE v1,v2,v3,v4;v1=(yyvsp[0].
val);v2=dispatch1(symbol,v1);v3=v2;v4=dispatch1(symbol_literal,v3);(yyval.
val)=v4;}
11204#line 11200 "ripper.c"
11208#line 4736 "ripper.y"
11212 (yyval.
val) = dsym_node(p, (yyvsp[-1].val), &(yyloc));
11214 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(dyna_symbol,v1);(yyval.
val)=v2;}
11216#line 11212 "ripper.c"
11220#line 4747 "ripper.y"
11223 (yyval.
val) = (yyvsp[0].val);
11228#line 11224 "ripper.c"
11232#line 4769 "ripper.y"
11233 {(yyval.
val) =
KWD2EID(nil, (yyvsp[0].val));}
11234#line 11230 "ripper.c"
11238#line 4770 "ripper.y"
11239 {(yyval.
val) =
KWD2EID(
self, (yyvsp[0].val));}
11240#line 11236 "ripper.c"
11244#line 4771 "ripper.y"
11245 {(yyval.
val) =
KWD2EID(
true, (yyvsp[0].val));}
11246#line 11242 "ripper.c"
11250#line 4772 "ripper.y"
11251 {(yyval.
val) =
KWD2EID(
false, (yyvsp[0].val));}
11252#line 11248 "ripper.c"
11256#line 4773 "ripper.y"
11257 {(yyval.
val) =
KWD2EID(_FILE__, (yyvsp[0].val));}
11258#line 11254 "ripper.c"
11262#line 4774 "ripper.y"
11263 {(yyval.
val) =
KWD2EID(_LINE__, (yyvsp[0].val));}
11264#line 11260 "ripper.c"
11268#line 4775 "ripper.y"
11269 {(yyval.
val) =
KWD2EID(_ENCODING__, (yyvsp[0].val));}
11270#line 11266 "ripper.c"
11274#line 4779 "ripper.y"
11277 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11279 if (id_is_var(p,
get_id((yyvsp[0].val)))) {
11280 (yyval.
val) = dispatch1(var_ref, (yyvsp[0].val));
11283 (yyval.
val) = dispatch1(vcall, (yyvsp[0].val));
11287#line 11283 "ripper.c"
11291#line 4792 "ripper.y"
11294 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11296 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11298#line 11294 "ripper.c"
11302#line 4801 "ripper.y"
11305 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11307 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11309#line 11305 "ripper.c"
11313#line 4808 "ripper.y"
11316 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11318 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11320#line 11316 "ripper.c"
11324#line 4821 "ripper.y"
11329#line 11325 "ripper.c"
11333#line 4826 "ripper.y"
11335 (yyval.
val) = (yyvsp[-1].val);
11337#line 11333 "ripper.c"
11341#line 4830 "ripper.y"
11348#line 11344 "ripper.c"
11352#line 4839 "ripper.y"
11355 (yyval.
val) = (yyvsp[-1].val);
11357 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
11361#line 11357 "ripper.c"
11365#line 4848 "ripper.y"
11380#line 11376 "ripper.c"
11384#line 4863 "ripper.y"
11399#line 11395 "ripper.c"
11403#line 4877 "ripper.y"
11409#line 11405 "ripper.c"
11413#line 4883 "ripper.y"
11416 (yyval.
val) = (yyvsp[-1].val);
11420#line 11416 "ripper.c"
11424#line 4892 "ripper.y"
11426 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yylsp[-1]));
11428#line 11424 "ripper.c"
11432#line 4896 "ripper.y"
11434 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yylsp[-1]));
11436#line 11432 "ripper.c"
11440#line 4900 "ripper.y"
11442 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yylsp[-1]));
11444#line 11440 "ripper.c"
11448#line 4904 "ripper.y"
11452#line 11448 "ripper.c"
11456#line 4908 "ripper.y"
11458 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
11460#line 11456 "ripper.c"
11464#line 4914 "ripper.y"
11466 (yyval.
val) = (yyvsp[0].val);
11468#line 11464 "ripper.c"
11472#line 4918 "ripper.y"
11476#line 11472 "ripper.c"
11480#line 4924 "ripper.y"
11482 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val),
Qnone, (yyvsp[0].
val), &(yyloc));
11484#line 11480 "ripper.c"
11488#line 4928 "ripper.y"
11490 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].
val), (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
11492#line 11488 "ripper.c"
11496#line 4932 "ripper.y"
11498 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
11500#line 11496 "ripper.c"
11504#line 4936 "ripper.y"
11506 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].
val),
Qnone, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11508#line 11504 "ripper.c"
11512#line 4940 "ripper.y"
11514 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
11516#line 11512 "ripper.c"
11520#line 4944 "ripper.y"
11522 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11524#line 11520 "ripper.c"
11528#line 4948 "ripper.y"
11532#line 11528 "ripper.c"
11536#line 4952 "ripper.y"
11538 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val),
Qnone, (yyvsp[0].val), &(yyloc));
11540#line 11536 "ripper.c"
11544#line 4956 "ripper.y"
11546 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].
val), (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc));
11548#line 11544 "ripper.c"
11552#line 4960 "ripper.y"
11556#line 11552 "ripper.c"
11560#line 4964 "ripper.y"
11562 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
11564#line 11560 "ripper.c"
11568#line 4968 "ripper.y"
11572#line 11568 "ripper.c"
11576#line 4972 "ripper.y"
11578 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].
val), (yyvsp[0].val), &(yyloc));
11580#line 11576 "ripper.c"
11584#line 4976 "ripper.y"
11588#line 11584 "ripper.c"
11592#line 4980 "ripper.y"
11597#line 11593 "ripper.c"
11601#line 4987 "ripper.y"
11606 {
VALUE v1;v1=dispatch0(args_forward);(yyval.
val)=v1;}
11608#line 11604 "ripper.c"
11612#line 4996 "ripper.y"
11615 yyerror1(&(yylsp[0]),
"formal argument cannot be a constant");
11618 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11620#line 11616 "ripper.c"
11624#line 5004 "ripper.y"
11627 yyerror1(&(yylsp[0]),
"formal argument cannot be an instance variable");
11630 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11632#line 11628 "ripper.c"
11636#line 5012 "ripper.y"
11639 yyerror1(&(yylsp[0]),
"formal argument cannot be a global variable");
11642 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11644#line 11640 "ripper.c"
11648#line 5020 "ripper.y"
11651 yyerror1(&(yylsp[0]),
"formal argument cannot be a class variable");
11654 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11656#line 11652 "ripper.c"
11660#line 5031 "ripper.y"
11662 formal_argument(p,
get_id((yyvsp[0].val)));
11664 (yyval.
val) = (yyvsp[0].val);
11666#line 11662 "ripper.c"
11670#line 5039 "ripper.y"
11675 (yyval.
val) = (yyvsp[0].val);
11677#line 11673 "ripper.c"
11681#line 5048 "ripper.y"
11689#line 11685 "ripper.c"
11693#line 5056 "ripper.y"
11696 ID tid = internal_id(p);
11698 loc.beg_pos = (yylsp[-1]).beg_pos;
11699 loc.end_pos = (yylsp[-1]).beg_pos;
11701 if (dyna_in_block(p)) {
11710 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
11712#line 11708 "ripper.c"
11716#line 5077 "ripper.y"
11718#line 11714 "ripper.c"
11722#line 5079 "ripper.y"
11725 (yyval.
val) = (yyvsp[-2].val);
11728 rb_discard_node(p, (yyvsp[0].val));
11732#line 11728 "ripper.c"
11736#line 5092 "ripper.y"
11739 arg_var(p, formal_argument(p,
id));
11742 (yyval.
val) = (yyvsp[0].val);
11744#line 11740 "ripper.c"
11748#line 5102 "ripper.y"
11752 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
11756#line 11752 "ripper.c"
11760#line 5110 "ripper.y"
11768#line 11764 "ripper.c"
11772#line 5120 "ripper.y"
11775 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
11779#line 11775 "ripper.c"
11783#line 5127 "ripper.y"
11790#line 11786 "ripper.c"
11794#line 5136 "ripper.y"
11797 (yyval.
val) = (yyvsp[0].val);
11801#line 11797 "ripper.c"
11805#line 5143 "ripper.y"
11808 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].
val));
11812#line 11808 "ripper.c"
11816#line 5153 "ripper.y"
11819 (yyval.
val) = (yyvsp[0].val);
11823#line 11819 "ripper.c"
11827#line 5160 "ripper.y"
11830 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].
val));
11834#line 11830 "ripper.c"
11838#line 5173 "ripper.y"
11842 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(nokw_param,v1);(yyval.
val)=v2;}
11844#line 11840 "ripper.c"
11848#line 5181 "ripper.y"
11850 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11852 (yyval.
val) = (yyvsp[0].val);
11854 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
11856#line 11852 "ripper.c"
11860#line 5189 "ripper.y"
11863 (yyval.
val) = internal_id(p);
11864 arg_var(p, (yyval.
val));
11866 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
11868#line 11864 "ripper.c"
11872#line 5199 "ripper.y"
11876 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
11880#line 11876 "ripper.c"
11884#line 5209 "ripper.y"
11888 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].
val), &(yyloc)), &(yyloc));
11892#line 11888 "ripper.c"
11896#line 5219 "ripper.y"
11899 (yyval.
val) = (yyvsp[0].val);
11903#line 11899 "ripper.c"
11907#line 5226 "ripper.y"
11910 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].
val));
11914#line 11910 "ripper.c"
11918#line 5235 "ripper.y"
11921 (yyval.
val) = (yyvsp[0].val);
11925#line 11921 "ripper.c"
11929#line 5242 "ripper.y"
11932 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].
val));
11936#line 11932 "ripper.c"
11940#line 5255 "ripper.y"
11942 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11944 (yyval.
val) = (yyvsp[0].val);
11946 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
11948#line 11944 "ripper.c"
11952#line 5263 "ripper.y"
11955 (yyval.
val) = internal_id(p);
11956 arg_var(p, (yyval.
val));
11958 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
11960#line 11956 "ripper.c"
11964#line 5277 "ripper.y"
11966 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11968 (yyval.
val) = (yyvsp[0].val);
11970 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(blockarg,v1);(yyval.
val)=v2;}
11972#line 11968 "ripper.c"
11976#line 5287 "ripper.y"
11978 (yyval.
val) = (yyvsp[0].val);
11980#line 11976 "ripper.c"
11984#line 5291 "ripper.y"
11988#line 11984 "ripper.c"
11992#line 5297 "ripper.y"
11995 (yyval.
val) = (yyvsp[0].val);
11997#line 11993 "ripper.c"
12001#line 5301 "ripper.y"
12003#line 11999 "ripper.c"
12007#line 5302 "ripper.y"
12010 switch (
nd_type((yyvsp[-1].val))) {
12019 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
12025 (yyval.
val) = (yyvsp[-1].val);
12027 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
12029#line 12025 "ripper.c"
12033#line 5327 "ripper.y"
12036 (yyval.
val) = (yyvsp[-1].val);
12038 {
VALUE v1,v2;v1=(yyvsp[-1].
val);v2=dispatch1(assoclist_from_args,v1);(yyval.
val)=v2;}
12040#line 12036 "ripper.c"
12044#line 5336 "ripper.y"
12046#line 12042 "ripper.c"
12050#line 5338 "ripper.y"
12053 NODE *assocs = (yyvsp[-2].
val);
12059 if (assocs->nd_head &&
12063 tail = tail->nd_next->nd_head->nd_head;
12065 assocs = list_concat(assocs, tail);
12067 (yyval.
val) = assocs;
12071#line 12067 "ripper.c"
12075#line 5361 "ripper.y"
12082 (yyval.
val) = list_append(p,
NEW_LIST((yyvsp[-2].val), &(yyloc)), (yyvsp[0].
val));
12084 {
VALUE v1,v2,v3;v1=(yyvsp[-2].
val);v2=(yyvsp[0].
val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
12086#line 12082 "ripper.c"
12090#line 5372 "ripper.y"
12095 {
VALUE v1,v2,v3;v1=(yyvsp[-1].
val);v2=(yyvsp[0].
val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
12097#line 12093 "ripper.c"
12101#line 5379 "ripper.y"
12104 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
12105 (yyval.
val) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].val), &loc), &loc), (yyvsp[0].
val));
12107 {
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;}
12109#line 12105 "ripper.c"
12113#line 5387 "ripper.y"
12117 !((yyvsp[0].
val)->
nd_head && (yyvsp[0].val)->nd_head->nd_alen)) {
12118 static VALUE empty_hash;
12126 (yyval.
val) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].val));
12128 {
VALUE v1,v2;v1=(yyvsp[0].
val);v2=dispatch1(assoc_splat,v1);(yyval.
val)=v2;}
12130#line 12126 "ripper.c"
12134#line 5455 "ripper.y"
12136#line 12132 "ripper.c"
12140#line 5456 "ripper.y"
12142#line 12138 "ripper.c"
12146#line 5460 "ripper.y"
12148#line 12144 "ripper.c"
12152#line 5464 "ripper.y"
12156#line 12152 "ripper.c"
12160#line 12156 "ripper.c"
12188 const int yylhs = yyr1[yyn] -
YYNTOKENS;
12189 const int yyi = yypgoto[yylhs] + *yyssp;
12190 yystate = (0 <= yyi && yyi <=
YYLAST && yycheck[yyi] == *yyssp
12192 : yydefgoto[yylhs]);
12210#if ! YYERROR_VERBOSE
12213# define YYSYNTAX_ERROR yysyntax_error (p, &yymsg_alloc, &yymsg, \
12216 char const *yymsgp =
YY_(
"syntax error");
12217 int yysyntax_error_status;
12219 if (yysyntax_error_status == 0)
12221 else if (yysyntax_error_status == 1)
12223 if (yymsg != yymsgbuf)
12229 yymsg_alloc =
sizeof yymsgbuf;
12230 yysyntax_error_status = 2;
12238 yyerror (&yylloc, p, yymsgp);
12239 if (yysyntax_error_status == 2)
12240 goto yyexhaustedlab;
12242# undef YYSYNTAX_ERROR
12246 yyerror_range[1] = yylloc;
12248 if (yyerrstatus == 3)
12253 if (yychar <=
YYEOF)
12256 if (yychar ==
YYEOF)
12261 yydestruct (
"Error: discarding",
12262 yytoken, &
yylval, &yylloc, p);
12298 yyn = yypact[yystate];
12304 yyn = yytable[yyn];
12314 yyerror_range[1] = *yylsp;
12315 yydestruct (
"Error: popping",
12316 yystos[yystate], yyvsp, yylsp, p);
12326 yyerror_range[2] = yylloc;
12355#if !defined yyoverflow || YYERROR_VERBOSE
12360 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
12375 yydestruct (
"Cleanup: discarding lookahead",
12376 yytoken, &
yylval, &yylloc, p);
12382 while (yyssp != yyss)
12384 yydestruct (
"Cleanup: popping",
12385 yystos[+*yyssp], yyvsp, yylsp, p);
12393 if (yymsg != yymsgbuf)
12398#line 5468 "ripper.y"
12403# define yylval (*p->lval)
12412# define set_yylval_node(x) { \
12413 YYLTYPE _cur_loc; \
12414 rb_parser_set_location(p, &_cur_loc); \
12415 yylval.node = (x); \
12417# define set_yylval_str(x) \
12419 set_yylval_node(NEW_STR(x, &_cur_loc)); \
12420 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12422# define set_yylval_literal(x) \
12424 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
12425 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12427# define set_yylval_num(x) (yylval.num = (x))
12428# define set_yylval_id(x) (yylval.id = (x))
12429# define set_yylval_name(x) (yylval.id = (x))
12430# define yylval_id() (yylval.id)
12435 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
12437# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
12438# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
12439# define set_yylval_id(x) (void)(x)
12440# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
12441# define set_yylval_literal(x) add_mark_object(p, (x))
12442# define set_yylval_node(x) (void)(x)
12443# define yylval_id() yylval.id
12444# define _cur_loc NULL_LOC
12447#define set_yylval_noname() set_yylval_id(keyword_nil)
12450#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
12451#define dispatch_scan_event(p, t) ((void)0)
12452#define dispatch_delayed_token(p, t) ((void)0)
12453#define has_delayed_token(p) (0)
12455#define literal_flush(p, ptr) ((void)(ptr))
12457#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
12460intern_sym(
const char *
name)
12477 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t),
str);
12485 if (!ripper_has_scan_event(p))
return;
12486 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
12488#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
12494 const char *saved_tokp = p->
lex.
ptok;
12496 if (
NIL_P(p->delayed.token))
return;
12499 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
12500 p->delayed.token =
Qnil;
12504#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
12505#define has_delayed_token(p) (!NIL_P(p->delayed.token))
12532 int column = 1, nonspc = 0,
i;
12534 if (*
ptr ==
'\t') {
12538 if (*
ptr !=
' ' && *
ptr !=
'\t') {
12544 ptinfo->
indent = column;
12545 ptinfo->
nonspc = nonspc;
12557 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
12567 if (!ptinfo_beg)
return;
12571 token_info_warn(p,
token, ptinfo_beg, 1, loc);
12578 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
12580 if (!ptinfo_beg)
return;
12581 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
12585 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
12587 "mismatched indentations at '%s' with '%s' at %d",
12613 else if (yylloc->beg_pos.lineno == lineno) {
12632 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
12633 yylloc->beg_pos.column == yylloc->end_pos.column)) {
12637 parser_show_error_line(p, yylloc);
12645 const int max_line_margin = 30;
12646 const char *
ptr, *ptr_end, *pt, *pb;
12647 const char *pre =
"", *post =
"", *pend;
12648 const char *code =
"", *caret =
"";
12655 if (!yylloc)
return;
12657 if (pend > pbeg && pend[-1] ==
'\n') {
12658 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
12662 if (lineno == yylloc->end_pos.lineno &&
12663 (pend - pbeg) > yylloc->end_pos.column) {
12664 pt = pbeg + yylloc->end_pos.column;
12667 ptr = ptr_end = pt;
12668 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
12669 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
12671 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
12672 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
12678 if (
ptr > pbeg) pre =
"...";
12680 if (ptr_end < pend) {
12682 if (ptr_end < pend) post =
"...";
12686 if (lineno == yylloc->beg_pos.lineno) {
12687 pb += yylloc->beg_pos.column;
12688 if (pb > pt) pb = pt;
12691 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
12694 if (
RTEST(errbuf)) {
12703#define CSI_BEGIN "\033["
12714 (
int)(pt - pb), pb,
12715 (
int)(ptr_end - pt), pt,
12722 lim = pt < pend ? pt : pend;
12729 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
12740 pre, (
int)
len, code, post,
12749 const char *pcur = 0, *ptok = 0;
12758 dispatch1(parse_error,
STR_NEW2(msg));
12775vtable_size(
const struct vtable *tbl)
12801#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
12819#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
12835 if (
tbl->pos ==
tbl->capa) {
12836 tbl->capa =
tbl->capa * 2;
12841#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
12852 if (
tbl->pos <
n) {
12858#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
12867 for (
i = 0;
i <
tbl->pos;
i++) {
12868 if (
tbl->tbl[
i] ==
id) {
12882debug_lines(
VALUE fname)
12885 CONST_ID(script_lines,
"SCRIPT_LINES__");
12921 if (!e_option_supplied(p)) {
12927#define RUBY_DTRACE_PARSE_HOOK(name) \
12928 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
12929 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
12954 NODE *body = parser_append_options(p, tree->nd_body);
12958 tree->nd_body = prelude;
12970 if (
NIL_P(fname)) {
12990must_be_ascii_compatible(
VALUE s)
13002 char *beg, *end, *start;
13014 if (end)
len = ++end - beg;
13023 if (
NIL_P(line))
return line;
13024 must_be_ascii_compatible(line);
13050 return yycompile(vparser, p, fname, line);
13062 must_be_ascii_compatible(s);
13063 return parser_compile_string(vparser,
f, s, line);
13085 return yycompile(vparser, p, fname, start);
13101 p->
lex.
gets = lex_generic_gets;
13106 return yycompile(vparser, p, fname, start);
13110#define STR_FUNC_ESCAPE 0x01
13111#define STR_FUNC_EXPAND 0x02
13112#define STR_FUNC_REGEXP 0x04
13113#define STR_FUNC_QWORDS 0x08
13114#define STR_FUNC_SYMBOL 0x10
13115#define STR_FUNC_INDENT 0x20
13116#define STR_FUNC_LABEL 0x40
13117#define STR_FUNC_LIST 0x4000
13118#define STR_FUNC_TERM 0x8000
13149#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
13150#define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
13151#define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
13152#define peek(p,c) peek_n(p, (c), 0)
13153#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
13154#define peekc(p) peekc_n(p, 0)
13155#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
13173#define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
13218 if (
peek(p,
'\n')) {
13225 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
13240 c = parser_cr(p, c);
13249 if (c == -1)
return;
13256#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
13258#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
13259#define tok(p) (p)->tokenbuf
13260#define toklen(p) (p)->tokidx
13266 while (ptr < p->
lex.pend) {
13267 int c = (
unsigned char)*
ptr++;
13268 int eol = (c ==
'\n' || c ==
'#');
13329#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
13332escaped_control_code(
int c)
13358#define WARN_SPACE_CHAR(c, prefix) \
13359 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
13363 int regexp_literal,
int wide)
13369 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
13370 yyerror0(
"invalid Unicode escape");
13371 return wide && numlen > 0;
13373 if (codepoint > 0x10ffff) {
13374 yyerror0(
"invalid Unicode codepoint (too large)");
13377 if ((codepoint & 0xfffff800) == 0xd800) {
13378 yyerror0(
"invalid Unicode codepoint");
13381 if (regexp_literal) {
13384 else if (codepoint >= 0x80) {
13386 if (*encp && utf8 != *encp) {
13389 parser_show_error_line(p, &loc);
13393 tokaddmbc(p, codepoint, *encp);
13396 tokadd(p, codepoint);
13404 int term,
int symbol_literal,
int regexp_literal)
13411 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
13413 const int open_brace =
'{', close_brace =
'}';
13415 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
13417 if (
peek(p, open_brace)) {
13418 const char *second =
NULL;
13419 int c,
last = nextc(p);
13422 while (c != close_brace) {
13423 if (c ==
term)
goto unterminated;
13424 if (second == multiple_codepoints)
13426 if (regexp_literal) tokadd(p,
last);
13427 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
13434 if (
term == -1 && !second)
13435 second = multiple_codepoints;
13438 if (c != close_brace) {
13441 yyerror0(
"unterminated Unicode escape");
13444 if (second && second != multiple_codepoints) {
13454 if (regexp_literal) tokadd(p, close_brace);
13458 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
13465#define ESCAPE_CONTROL 1
13466#define ESCAPE_META 2
13474 switch (c = nextc(p)) {
13499 case '0':
case '1':
case '2':
case '3':
13500 case '4':
case '5':
case '6':
case '7':
13507 c = tok_hex(p, &numlen);
13508 if (numlen == 0)
return 0;
13519 if ((c = nextc(p)) !=
'-') {
13522 if ((c = nextc(p)) ==
'\\') {
13523 if (
peek(p,
'u'))
goto eof;
13524 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
13526 else if (c == -1 || !
ISASCII(c))
goto eof;
13528 int c2 = escaped_control_code(c);
13537 else if (
ISCNTRL(c))
goto eof;
13538 return ((c & 0xff) | 0x80);
13542 if ((c = nextc(p)) !=
'-') {
13547 if ((c = nextc(p))==
'\\') {
13548 if (
peek(p,
'u'))
goto eof;
13553 else if (c == -1 || !
ISASCII(c))
goto eof;
13555 int c2 = escaped_control_code(c);
13574 else if (
ISCNTRL(c))
goto eof;
13580 yyerror0(
"Invalid escape character syntax");
13604 switch (c = nextc(p)) {
13608 case '0':
case '1':
case '2':
case '3':
13609 case '4':
case '5':
case '6':
case '7':
13612 if (numlen == 0)
goto eof;
13620 tok_hex(p, &numlen);
13621 if (numlen == 0)
return -1;
13628 if ((c = nextc(p)) !=
'-') {
13638 if ((c = nextc(p)) !=
'-') {
13650 if ((c = nextc(p)) ==
'\\') {
13653 else if (c == -1)
goto eof;
13659 yyerror0(
"Invalid escape character syntax");
13679 while (c = nextc(p),
ISALPHA(c)) {
13703 parser_show_error_line(p, &loc);
13711 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
13712 if (
len < 0)
return -1;
13720simple_re_meta(
int c)
13723 case '$':
case '*':
case '+':
case '.':
13724 case '?':
case '^':
case '|':
13725 case ')':
case ']':
case '}':
case '>':
13733parser_update_heredoc_indent(
struct parser_params *p,
int c)
13743 else if (c ==
'\t') {
13748 else if (c !=
'\n') {
13764 parser_show_error_line(p, &loc);
13770 const char *pos = p->
lex.
pcur;
13772 parser_mixed_error(p, enc1, enc2);
13778 int func,
int term,
int paren,
long *nest,
13782 bool erred =
false;
13784#define mixed_error(enc1, enc2) \
13785 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
13786#define mixed_escape(beg, enc1, enc2) \
13787 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
13789 while ((c = nextc(p)) != -1) {
13791 parser_update_heredoc_indent(p, c);
13794 if (paren && c == paren) {
13797 else if (c ==
term) {
13798 if (!nest || !*nest) {
13806 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
13811 else if (c ==
'\\') {
13843 if (c == -1)
return -1;
13849 if (c ==
term && !simple_re_meta(c)) {
13854 if ((c = tokadd_escape(p,
enc)) < 0)
13856 if (*
enc && *
enc != *encp) {
13864 c = read_escape(p, 0,
enc);
13869 else if (c !=
term && !(paren && c == paren)) {
13876 else if (!parser_isascii(p)) {
13881 else if (*
enc != *encp) {
13885 if (tokadd_mbchar(p, c) == -1)
return -1;
13896 else if (*
enc != *encp) {
13915#define NEW_STRTERM(func, term, paren) \
13916 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
13923 if (!ripper_is_node_yylval(content))
13924 content = ripper_new_yylval(p, 0, 0, content);
13935 if (
yylval.val != content)
13940#define flush_string_content(p, enc) ((void)(enc))
13947#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
13948#define SPECIAL_PUNCT(idx) ( \
13949 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
13950 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
13951 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
13952 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
13953 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
13955const unsigned int ruby_global_name_punct_bits[] = {
13961#undef SPECIAL_PUNCT
13964static enum yytokentype
13965parser_peek_variable_name(struct parser_params *p)
13968 const char *ptr = p->lex.pcur;
13970 if (ptr + 1 >= p->lex.pend) return 0;
13974 if ((c = *ptr) == '-') {
13975 if (++ptr >= p->lex.pend) return 0;
13978 else if (is_global_name_punct(c) || ISDIGIT(c)) {
13979 return tSTRING_DVAR;
13983 if ((c = *ptr) == '@') {
13984 if (++ptr >= p->lex.pend) return 0;
13990 p->command_start = TRUE;
13991 return tSTRING_DBEG;
13995 if (!ISASCII(c) || c == '_' || ISALPHA(c))
13996 return tSTRING_DVAR;
14000#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
14001#define IS_END() IS_lex_state(EXPR_END_ANY)
14002#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
14003#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
14004#define IS_LABEL_POSSIBLE() (\
14005 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
14007#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
14008#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
14010static inline enum yytokentype
14011parser_string_term(struct parser_params *p, int func)
14013 p->lex.strterm = 0;
14014 if (func & STR_FUNC_REGEXP) {
14015 set_yylval_num(regx_options(p));
14016 dispatch_scan_event(p, tREGEXP_END);
14017 SET_LEX_STATE(EXPR_END);
14018 return tREGEXP_END;
14020 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
14022 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
14025 SET_LEX_STATE(EXPR_END);
14026 return tSTRING_END;
14029static enum yytokentype
14030parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
14032 int func = (int)quote->u1.func;
14033 int term = (int)quote->u3.term;
14034 int paren = (int)quote->u2.paren;
14036 rb_encoding *enc = p->enc;
14037 rb_encoding *base_enc = 0;
14040 if (func & STR_FUNC_TERM) {
14041 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
14042 SET_LEX_STATE(EXPR_END);
14043 p->lex.strterm = 0;
14044 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
14047 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
14048 do {c = nextc(p);} while (ISSPACE(c));
14051 if (func & STR_FUNC_LIST) {
14052 quote->u1.func &= ~STR_FUNC_LIST;
14055 if (c == term && !quote->u0.nest) {
14056 if (func & STR_FUNC_QWORDS) {
14057 quote->u1.func |= STR_FUNC_TERM;
14058 pushback(p, c); /* dispatch the term at tSTRING_END */
14059 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
14062 return parser_string_term(p, func);
14066 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
14070 if ((func & STR_FUNC_EXPAND) && c == '#') {
14071 int t = parser_peek_variable_name(p);
14077 if (tokadd_string(p, func, term, paren, "e->u0.nest,
14078 &enc, &base_enc) == -1) {
14081# define unterminated_literal(mesg) yyerror0(mesg)
14083# define unterminated_literal(mesg) compile_error(p, mesg)
14085 literal_flush(p, p->lex.pcur);
14086 if (func & STR_FUNC_QWORDS) {
14087 /* no content to add, bailing out here */
14088 unterminated_literal("unterminated list meets end of file");
14089 p->lex.strterm = 0;
14090 return tSTRING_END;
14092 if (func & STR_FUNC_REGEXP) {
14093 unterminated_literal("unterminated regexp meets end of file");
14096 unterminated_literal("unterminated string meets end of file");
14098 quote->u1.func |= STR_FUNC_TERM;
14103 lit = STR_NEW3(tok(p), toklen(p), enc, func);
14104 set_yylval_str(lit);
14105 flush_string_content(p, enc);
14107 return tSTRING_CONTENT;
14110static enum yytokentype
14111heredoc_identifier(struct parser_params *p)
14114 * term_len is length of `<<"END"` except `END`,
14115 * in this case term_len is 4 (<, <, " and ").
14117 long len, offset = p->lex.pcur - p->lex.pbeg;
14118 int c = nextc(p), term, func = 0, quote = 0;
14119 enum yytokentype token = tSTRING_BEG;
14124 func = STR_FUNC_INDENT;
14127 else if (c == '~') {
14129 func = STR_FUNC_INDENT;
14135 func |= str_squote; goto quoted;
14147 while ((c = nextc(p)) !=
term) {
14148 if (c == -1 || c ==
'\r' || c ==
'\n') {
14149 yyerror(
NULL, p,
"unterminated here document identifier");
14156 if (!parser_is_identchar(p)) {
14159 pushback(p, indent > 0 ?
'~' :
'-');
14165 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
14166 if (
n < 0)
return 0;
14168 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
14175 yyerror(
NULL, p,
"too long here document identifier");
14185 here->
quote = quote;
14213dedent_string(
VALUE string,
int width)
14220 for (
i = 0;
i <
len && col < width;
i++) {
14221 if (
str[
i] ==
' ') {
14224 else if (
str[
i] ==
'\t') {
14226 if (
n > width)
break;
14247 NODE *node, *str_node, *prev_node;
14249 VALUE prev_lit = 0;
14251 if (indent <= 0)
return root;
14253 if (!root)
return root;
14255 prev_node = node = str_node = root;
14259 VALUE lit = str_node->nd_lit;
14261 dedent_string(lit, indent);
14266 else if (!literal_concat0(p, prev_lit, lit)) {
14270 NODE *end = node->nd_end;
14271 node = prev_node->nd_next = node->nd_next;
14277 node->nd_end = end;
14282 while ((node = (prev_node = node)->
nd_next) != 0) {
14285 if ((str_node = node->nd_head) != 0) {
14301 if (indent <= 0)
return array;
14303 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
14323 col = dedent_string(
input, wid);
14329whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
14338 if (
n < 0)
return FALSE;
14339 if (
n > 0 &&
ptr[
len] !=
'\n') {
14354 case '\0':
case '\004':
case '\032':
return 1;
14359#define NUM_SUFFIX_R (1<<0)
14360#define NUM_SUFFIX_I (1<<1)
14361#define NUM_SUFFIX_ALL 3
14367 const char *lastp = p->
lex.
pcur;
14369 while ((c = nextc(p)) != -1) {
14372 mask &= ~NUM_SUFFIX_I;
14374 mask &= ~NUM_SUFFIX_R;
14379 mask &= ~NUM_SUFFIX_R;
14414 return set_number_literal(p,
v,
type, suffix);
14431#define dispatch_heredoc_end(p) ((void)0)
14437 int c, func, indent = 0;
14438 const char *eos, *
ptr, *ptr_end;
14449 if ((c = nextc(p)) == -1) {
14473 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
14491 else if (whole_match_p(p, eos,
len, indent)) {
14505 if (ptr_end >
ptr) {
14506 switch (ptr_end[-1]) {
14508 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
14519 while (
ptr +
i < ptr_end && parser_update_heredoc_indent(p,
ptr[
i]))
14533 if (nextc(p) == -1) {
14539 }
while (!whole_match_p(p, eos,
len, indent));
14545 int t = parser_peek_variable_name(p);
14559 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
14575 tokadd(p, nextc(p));
14581 if ((c = nextc(p)) == -1)
goto error;
14582 }
while (!whole_match_p(p, eos,
len, indent));
14606 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
14616 switch (id_type(lhs)) {
14621 yyerror0(
"formal argument cannot be a constant");
14624 yyerror0(
"formal argument cannot be an instance variable");
14627 yyerror0(
"formal argument cannot be a global variable");
14630 yyerror0(
"formal argument cannot be a class variable");
14633 yyerror0(
"formal argument must be local variable");
14637 lhs = dispatch1(param_error, lhs);
14642 shadowing_lvar(p, lhs);
14649 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
14658 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
14662 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
14698 for (
i = 0;
i <
n; ++
i) {
14710 while (
ptr < ptr_end) {
14721magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
14723 if (!comment_at_top(p)) {
14726 parser_set_encode(p, val);
14733 case 't':
case 'T':
14738 case 'f':
case 'F':
14749parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
14751 int b = parser_get_bool(p,
name, val);
14756parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
14765 b = parser_get_bool(p,
name, val);
14774# if WARN_PAST_SCOPE
14776parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
14778 int b = parser_get_bool(p,
name, val);
14779 if (b >= 0) p->past_scope_enabled = b;
14790 {
"coding", magic_comment_encoding, parser_encode_length},
14791 {
"encoding", magic_comment_encoding, parser_encode_length},
14792 {
"frozen_string_literal", parser_set_compile_option_flag},
14793 {
"warn_indent", parser_set_token_info},
14794# if WARN_PAST_SCOPE
14795 {
"warn_past_scope", parser_set_past_scope},
14800magic_comment_marker(
const char *
str,
long len)
14807 if (
str[
i-1] ==
'*' &&
str[
i-2] ==
'-') {
14808 return str +
i + 1;
14813 if (
i + 1 >=
len)
return 0;
14814 if (
str[
i+1] !=
'-') {
14817 else if (
str[
i-1] !=
'-') {
14821 return str +
i + 2;
14837 const char *beg, *end, *vbeg, *vend;
14838#define str_copy(_s, _p, _n) ((_s) \
14839 ? (void)(rb_str_resize((_s), (_n)), \
14840 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
14841 : (void)((_s) = STR_NEW((_p), (_n))))
14844 if (!!(beg = magic_comment_marker(
str,
len))) {
14845 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
14849 len = end - beg - 3;
14861 case '\'':
case '"':
case ':':
case ';':
14868 case '\'':
case '"':
case ':':
case ';':
14879 if (!indicator)
return FALSE;
14887 if (*
str ==
'\\') {
14913 for (
i = 0;
i <
n; ++
i) {
14914 if (s[
i] ==
'-') s[
i] =
'_';
14926 }
while (++mc < magic_comments +
numberof(magic_comments));
14937set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
14940 const char *beg =
str;
14944 if (send -
str <= 6)
return;
14946 case 'C':
case 'c':
str += 6;
continue;
14947 case 'O':
case 'o':
str += 5;
continue;
14948 case 'D':
case 'd':
str += 4;
continue;
14949 case 'I':
case 'i':
str += 3;
continue;
14950 case 'N':
case 'n':
str += 2;
continue;
14951 case 'G':
case 'g':
str += 1;
continue;
14952 case '=':
case ':':
14965 if (++
str >= send)
return;
14968 if (*
str !=
'=' && *
str !=
':')
return;
14974 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
14990 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
14991 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
15006#define ambiguous_operator(tok, op, syn) ( \
15007 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
15008 rb_warning0("even though it seems like "syn""))
15010#define ambiguous_operator(tok, op, syn) \
15011 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
15013#define warn_balanced(tok, op, syn) ((void) \
15014 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
15015 space_seen && !ISSPACE(c) && \
15016 (ambiguous_operator(tok, op, syn), 0)), \
15017 (enum yytokentype)(tok))
15023 char *point = &
str[seen_point];
15024 size_t fraclen =
len-seen_point-1;
15025 memmove(point, point+1, fraclen+1);
15033 yyerror0(
"numeric literal without digits");
15034 if (
peek(p,
'_')) nextc(p);
15036 return set_integer_literal(p,
INT2FIX(0), 0);
15042 int is_float, seen_point, seen_e, nondigit;
15045 is_float = seen_point = seen_e = nondigit = 0;
15048 if (c ==
'-' || c ==
'+') {
15055 if (c ==
'x' || c ==
'X') {
15061 if (nondigit)
break;
15068 }
while ((c = nextc(p)) != -1);
15072 if (
toklen(p) == start) {
15073 return no_digits(p);
15075 else if (nondigit)
goto trailing_uc;
15079 if (c ==
'b' || c ==
'B') {
15082 if (c ==
'0' || c ==
'1') {
15085 if (nondigit)
break;
15089 if (c !=
'0' && c !=
'1')
break;
15092 }
while ((c = nextc(p)) != -1);
15096 if (
toklen(p) == start) {
15097 return no_digits(p);
15099 else if (nondigit)
goto trailing_uc;
15103 if (c ==
'd' || c ==
'D') {
15109 if (nondigit)
break;
15116 }
while ((c = nextc(p)) != -1);
15120 if (
toklen(p) == start) {
15121 return no_digits(p);
15123 else if (nondigit)
goto trailing_uc;
15131 if (c ==
'o' || c ==
'O') {
15134 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
15135 return no_digits(p);
15138 if (c >=
'0' && c <=
'7') {
15143 if (nondigit)
break;
15147 if (c < '0' || c >
'9')
break;
15148 if (c >
'7')
goto invalid_octal;
15151 }
while ((c = nextc(p)) != -1);
15152 if (
toklen(p) > start) {
15155 if (nondigit)
goto trailing_uc;
15164 if (c >
'7' && c <=
'9') {
15168 else if (c ==
'.' || c ==
'e' || c ==
'E') {
15174 return set_integer_literal(p,
INT2FIX(0), suffix);
15180 case '0':
case '1':
case '2':
case '3':
case '4':
15181 case '5':
case '6':
case '7':
case '8':
case '9':
15187 if (nondigit)
goto trailing_uc;
15188 if (seen_point || seen_e) {
15193 if (c0 == -1 || !
ISDIGIT(c0)) {
15218 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
15223 tokadd(p, nondigit);
15227 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
15231 if (nondigit)
goto decode_num;
15248 parser_show_error_line(p, &loc);
15258 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
15268 return set_number_literal(p,
v,
type, suffix);
15292 int c2 = escaped_control_code(c);
15304 if (!parser_isascii(p)) {
15305 if (tokadd_mbchar(p, c) == -1)
return 0;
15310 const char *start = p->
lex.
pcur - 1, *
ptr = start;
15312 int n = parser_precise_mbclen(p,
ptr);
15313 if (
n < 0)
return -1;
15316 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
15317 " a conditional operator, put a space after `?'",
15322 else if (c ==
'\\') {
15323 if (
peek(p,
'u')) {
15326 tokadd_utf8(p, &enc, -1, 0, 0);
15330 if (tokadd_mbchar(p, c) == -1)
return 0;
15333 c = read_escape(p, 0, &enc);
15351 const char *ptok = p->
lex.
pcur;
15359 if (c == -1 || !
ISALNUM(c)) {
15366 yyerror0(
"unknown type of %string");
15370 if (c == -1 ||
term == -1) {
15371 compile_error(p,
"unterminated quoted string meets end of file");
15421 yyerror0(
"unknown type of %string");
15425 if ((c = nextc(p)) ==
'=') {
15442 if (tokadd_mbchar(p, c) == -1)
return -1;
15444 }
while (parser_is_identchar(p));
15465 const unsigned long nth_ref_max =
15466 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
15470 if (overflow ||
n > nth_ref_max) {
15493 if (parser_is_identchar(p)) {
15525 if (parser_is_identchar(p)) {
15526 if (tokadd_mbchar(p, c) == -1)
return 0;
15549 case '1':
case '2':
case '3':
15550 case '4':
case '5':
case '6':
15551 case '7':
case '8':
case '9':
15556 }
while (c != -1 &&
ISDIGIT(c));
15564 if (!parser_is_identchar(p)) {
15567 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
15571 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
15573 parser_show_error_line(p, &loc);
15582 if (tokadd_ident(p, c))
return 0;
15584 tokenize_ident(p, last_state);
15592 if (
n < 0)
return false;
15605 while (
n > args->
pos) {
15617 register int c = nextc(p);
15629 if (c == -1 || !parser_is_identchar(p)) {
15632 if (result ==
tIVAR) {
15633 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
15636 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
15638 parser_show_error_line(p, &loc);
15646 if (result ==
tIVAR) {
15647 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
15650 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
15652 parser_show_error_line(p, &loc);
15658 if (tokadd_ident(p, c))
return 0;
15659 tokenize_ident(p, last_state);
15673 if (tokadd_mbchar(p, c) == -1)
return 0;
15675 }
while (parser_is_identchar(p));
15676 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
15728 if (kw->
id[0] != kw->
id[1])
15743 else if (p->
lex.
state == EXPR_FNAME) {
15750 ident = tokenize_ident(p, last_state);
15754 lvar_defined(p, ident)) {
15764 int space_seen = 0;
15768 int fallthru =
FALSE;
15788 switch (c = nextc(p)) {
15796 case ' ':
case '\t':
case '\f':
case '\r':
15800 while ((c = nextc(p))) {
15802 case ' ':
case '\t':
case '\f':
case '\r':
15819 if (comment_at_top(p)) {
15829 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
15837 goto normal_newline;
15842 switch (c = nextc(p)) {
15843 case ' ':
case '\t':
case '\f':
case '\r':
15854 if (
peek(p,
'.') == (c ==
'&')) {
15876 goto normal_newline;
15885 if ((c = nextc(p)) ==
'*') {
15886 if ((c = nextc(p)) ==
'=') {
15893 rb_warning0(
"`**' interpreted as argument prefix");
15911 rb_warning0(
"`*' interpreted as argument prefix");
15947 if (word_match_p(p,
"begin", 5)) {
15948 int first_p =
TRUE;
15963 if (c ==
'=' && word_match_p(p,
"end", 3)) {
15975 if ((c = nextc(p)) ==
'=') {
15976 if ((c = nextc(p)) ==
'=') {
15985 else if (c ==
'>') {
15997 int token = heredoc_identifier(p);
16009 if ((c = nextc(p)) ==
'>') {
16016 if ((c = nextc(p)) ==
'=') {
16029 if ((c = nextc(p)) ==
'=') {
16033 if ((c = nextc(p)) ==
'=') {
16072 return parse_qmark(p, space_seen);
16075 if ((c = nextc(p)) ==
'&') {
16077 if ((c = nextc(p)) ==
'=') {
16085 else if (c ==
'=') {
16090 else if (c ==
'.') {
16099 !(c ==
'\'' || c ==
'"' ||
16101 rb_warning0(
"`&' interpreted as argument prefix");
16115 if ((c = nextc(p)) ==
'|') {
16117 if ((c = nextc(p)) ==
'=') {
16158 return parse_numeric(p,
'+');
16200 if ((c = nextc(p)) ==
'.') {
16201 if ((c = nextc(p)) ==
'.') {
16203 rb_warn0(
"... at EOL, should be parenthesized?");
16213 parse_numeric(p,
'.');
16215 yyerror0(
"unexpected fraction part after numeric literal");
16218 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
16229 case '0':
case '1':
case '2':
case '3':
case '4':
16230 case '5':
case '6':
case '7':
case '8':
case '9':
16231 return parse_numeric(p, c);
16292 if ((c = nextc(p)) ==
'=') {
16299 arg_ambiguous(p,
'/');
16307 if ((c = nextc(p)) ==
'=') {
16327 if ((c = nextc(p)) !=
'@') {
16341 else if (!space_seen) {
16348 rb_warning0(
"parentheses after method name is interpreted as "
16349 "an argument list, not a decomposed argument");
16360 if ((c = nextc(p)) ==
']') {
16362 if ((c = nextc(p)) ==
'=') {
16414 if (c ==
' ')
return tSP;
16420 return parse_percent(p, space_seen, last_state);
16423 return parse_gvar(p, last_state);
16426 return parse_atmark(p, last_state);
16429 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
16444 if (!parser_is_identchar(p)) {
16445 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
16454 return parse_ident(p, c, cmd_state);
16464 t = parser_yylex(p);
16479#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
16488 nd_set_loc(
n, loc);
16503nodetype(
NODE *node)
16509nodeline(
NODE *node)
16515newline_node(
NODE *node)
16518 node = remove_begin(node);
16547 NODE *end, *
h = head, *nd;
16549 if (tail == 0)
return head;
16551 if (
h == 0)
return tail;
16559 parser_warning(p,
h,
"unused literal ignored");
16579 parser_warning(p, tail,
"statement not reached");
16589 tail->nd_end = tail;
16591 end->nd_next = tail;
16592 h->nd_end = tail->nd_end;
16604 if (
list->nd_next) {
16611 list->nd_alen += 1;
16613 list->nd_next->nd_end =
last->nd_next;
16622list_concat(
NODE *head,
NODE *tail)
16626 if (head->nd_next) {
16627 last = head->nd_next->nd_end;
16633 head->nd_alen += tail->nd_alen;
16634 last->nd_next = tail;
16635 if (tail->nd_next) {
16636 head->nd_next->nd_end = tail->nd_next->nd_end;
16639 head->nd_next->nd_end = tail;
16650 if (
NIL_P(tail))
return 1;
16652 compile_error(p,
"string literal encodings differ (%s / %s)",
16671 if (!head)
return tail;
16672 if (!tail)
return head;
16678 head = list_append(p, node, head);
16686 return list_append(p, head, tail);
16693 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16696 lit = headlast->nd_lit;
16699 lit = head->nd_lit;
16702 if (!literal_concat0(p, lit, tail->nd_lit)) {
16704 rb_discard_node(p, head);
16705 rb_discard_node(p, tail);
16708 rb_discard_node(p, tail);
16711 list_append(p, head, tail);
16717 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
16719 tail->nd_lit = head->nd_lit;
16720 rb_discard_node(p, head);
16723 else if (
NIL_P(tail->nd_lit)) {
16725 head->nd_alen += tail->nd_alen - 1;
16726 head->nd_next->nd_end->nd_next = tail->nd_next;
16727 head->nd_next->nd_end = tail->nd_next->nd_end;
16728 rb_discard_node(p, tail);
16730 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16732 lit = headlast->nd_lit;
16733 if (!literal_concat0(p, lit, tail->nd_lit))
16735 tail->nd_lit =
Qnil;
16748 list_append(p, head, tail);
16760 node = list_append(p, dstr, node);
16813 if (block) block_dup_check(p, args, block);
16814 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
16815 if (block) ret = method_add_block(p, ret, block, loc);
16820#define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
16825 int line = op_loc->beg_pos.lineno;
16840 const VALUE lit =
n->nd_lit;
16842 match->nd_args = reg_named_capture_assign(p, lit, loc);
16867# if WARN_PAST_SCOPE
16873 if (vtable_included(past,
id))
return 1;
16882#define WARN_LOCATION(type) do { \
16883 if (p->warn_location) { \
16885 VALUE file = rb_source_location(&line); \
16886 rb_warn3(type" in eval may not return location in binding;" \
16887 " use Binding#source_location instead\n" \
16888 "%"PRIsWARN":%d: warning: in `%"PRIsWARN"'", \
16889 file, WARN_I(line), rb_id2str(rb_frame_this_func())); \
16902 "%s:%d: %s block here",
16904 outer ?
"outer" :
"inner");
16905 parser_show_error_line(p, &
used->nd_loc);
16946 switch (id_type(
id)) {
16948 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
16958 if (local_id_ref(p,
id, &vidp)) {
16969 if (numparam_nested_p(p))
return 0;
16975# if WARN_PAST_SCOPE
16996opt_arg_append(
NODE *opt_list,
NODE *opt)
16998 NODE *opts = opt_list;
17001 while (opts->nd_next) {
17002 opts = opts->nd_next;
17005 opts->nd_next = opt;
17014 NODE *kws = kwlist;
17016 while (kws->nd_next) {
17017 kws = kws->nd_next;
17041 return list_append(p, symbols, symbol);
17060 nd_set_loc(node, loc);
17071 nd_set_loc(node, loc);
17073 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
17077 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
17079 if (!literal_concat0(p, lit, tail)) {
17084 rb_discard_node(p,
list->nd_head);
17085 rb_discard_node(p,
list);
17096 if (!node->nd_next) {
17128 nd_set_loc(node, loc);
17132 nd_set_loc(node, loc);
17149 if (lit ==
Qundef)
return;
17159 if (!
NIL_P(line)) {
17160 rb_warning1(
"duplicated `when' clause with line %d is ignored",
17177 if (dyna_in_block(p)) {
17180 if (local_id(p,
id))
return 1;
17194 if (ripper_is_node_yylval(re)) {
17196 re =
RNODE(re)->nd_rval;
17198 if (ripper_is_node_yylval(opt)) {
17199 options = (
int)
RNODE(opt)->nd_tag;
17200 opt =
RNODE(opt)->nd_rval;
17205 return dispatch2(regexp_literal, re, opt);
17211static const char rb_parser_lex_state_names[][8] = {
17212 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
17213 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
17214 "LABEL",
"LABELED",
"FITEM",
17221 unsigned int mask = 1;
17222 static const char none[] =
"NONE";
17225 if ((
unsigned)state &
mask) {
17259 append_lex_state_name(from, mesg);
17261 append_lex_state_name(to, mesg);
17288 const char *
name,
int line)
17291 append_bitstack_value(stack, mesg);
17309 append_lex_state_name(p->
lex.
state, mesg);
17330 yylloc->beg_pos.lineno = sourceline;
17331 yylloc->beg_pos.column = beg_pos;
17332 yylloc->end_pos.lineno = sourceline;
17333 yylloc->end_pos.column = end_pos;
17369 v = valp->
node->nd_rval;
17376 v = valp->
node->nd_lit;
17404 if (!
id)
return -1;
17407 *
err =
"Can't change the value of self";
17410 *
err =
"Can't assign to nil";
17413 *
err =
"Can't assign to true";
17416 *
err =
"Can't assign to false";
17419 *
err =
"Can't assign to __FILE__";
17422 *
err =
"Can't assign to __LINE__";
17425 *
err =
"Can't assign to __ENCODING__";
17428 switch (id_type(
id)) {
17430 if (dyna_in_block(p)) {
17443 if (!local_id(p,
id)) local_var(p,
id);
17451 *
err =
"dynamic constant assignment";
17464 const char *
err = 0;
17482 const char *
err = 0;
17484 if (
err) lhs = assign_error(p, lhs);
17490is_private_local_id(
ID name)
17503 if (is_private_local_id(
name))
return 1;
17504 if (dyna_in_block(p)) {
17505 if (dvar_curr(p,
name)) {
17506 yyerror0(
"duplicated argument name");
17508 else if (dvar_defined(p,
name) || local_id(p,
name)) {
17517 if (local_id(p,
name)) {
17518 yyerror0(
"duplicated argument name");
17527 shadowing_lvar_0(p,
name);
17540 if (!shadowing_lvar_0(p,
name))
return;
17574 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
17585 return list_append(p, node1, node2);
17587 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
17591 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
17597 node1->nd_body = list_append(p, node1->nd_body, node2);
17607 if (!node2)
return node1;
17610 if (node1->nd_head)
17611 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
17613 node1->nd_head =
NEW_LIST(node2, loc);
17617 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
17623 node1->nd_body = list_concat(node1->nd_body, node2);
17633 if ((n1 = splat_array(
args)) != 0) {
17634 return list_append(p, n1, last_arg);
17636 return arg_append(p,
args, last_arg, loc);
17644 return list_concat(n1, rest_arg);
17646 return arg_concat(p,
args, rest_arg, loc);
17650splat_array(
NODE* node)
17664 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
17670 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
17676 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
17677 mark_lvar_used(p, rhs->nd_head);
17687 if (!lhs)
return 0;
17698 lhs->nd_value = rhs;
17699 nd_set_loc(lhs, loc);
17703 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
17704 nd_set_loc(lhs, loc);
17718 NODE *void_node = 0, *vn;
17730 return void_node ? void_node : node;
17737 if (node->nd_body->nd_body) {
17741 return void_node ? void_node : node;
17744 while (node->nd_next) {
17745 node = node->nd_next;
17747 node = node->nd_head;
17751 node = node->nd_body;
17756 if (!node->nd_body) {
17759 else if (!node->nd_else) {
17762 vn = value_expr_check(p, node->nd_body);
17763 if (!vn)
return NULL;
17764 if (!void_node) void_node = vn;
17765 node = node->nd_else;
17770 node = node->nd_1st;
17777 mark_lvar_used(p, node);
17791 NODE *void_node = value_expr_check(p, node);
17802 const char *useless = 0;
17809 switch (node->nd_mid) {
17840 useless =
"a variable";
17843 useless =
"a constant";
17849 useless =
"a literal";
17874 useless =
"defined?";
17886 NODE *
const n = node;
17888 if (!node)
return n;
17891 while (node->nd_next) {
17892 void_expr(p, node->nd_head);
17893 node = node->nd_next;
17899remove_begin(
NODE *node)
17901 NODE **
n = &node, *n1 = node;
17903 *
n = n1 = n1->nd_body;
17909remove_begin_all(
NODE *node)
17911 NODE **
n = &node, *n1 = node;
17913 *
n = n1 = n1->nd_body;
17921 NODE *node = *body;
17927#define subnodes(n1, n2) \
17928 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
17929 (!node->n2) ? (body = &node->n1, 1) : \
17930 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
17940 *body = node = node->nd_stts;
17944 *body = node = node->nd_body;
17948 body = &node->nd_end->nd_head;
17955 body = &node->nd_body;
17964 if (node->nd_else) {
17965 body = &node->nd_resq;
17981is_static_content(
NODE *node)
17983 if (!node)
return 1;
17986 if (!(node = node->nd_head))
break;
17989 if (!is_static_content(node->nd_head))
return 0;
17990 }
while ((node = node->nd_next) != 0);
18020 if (!node->nd_value)
return 1;
18021 if (is_static_content(node->nd_value)) {
18023 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
18034#define SWITCH_BY_COND_TYPE(t, w, arg) \
18036 case COND_IN_OP: break; \
18037 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
18038 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
18048 if (node == 0)
return 0;
18053 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
18062 if (node == 0)
return 0;
18064 assign_in_cond(p, node);
18117 if (node == 0)
return 0;
18124 if (node == 0)
return 0;
18131 if (!
cc)
return right;
18133 return newline_node(
NEW_IF(
cc, left, right, loc));
18139 if (!
cc)
return right;
18141 return newline_node(
NEW_UNLESS(
cc, left, right, loc));
18152 NODE *node = left, *second;
18157 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
18178 no_blockarg(p, node);
18180 if (node->nd_next == 0) {
18181 node = node->nd_head;
18194 if (node) no_blockarg(p, node);
18238arg_blk_pass(
NODE *node1,
NODE *node2)
18241 if (!node1)
return node2;
18242 node2->nd_head = node1;
18253 if (
args->pre_args_num)
return false;
18254 if (
args->post_args_num)
return false;
18255 if (
args->rest_arg)
return false;
18256 if (
args->opt_args)
return false;
18257 if (
args->block_arg)
return false;
18258 if (
args->kw_args)
return false;
18259 if (
args->kw_rest_arg)
return false;
18270 args->
pre_init = pre_args ? pre_args->nd_next : 0;
18273 args->
post_init = post_args ? post_args->nd_next : 0;
18283 nd_set_loc(tail, loc);
18295 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
18296 args->
imemo = tmpbuf;
18311 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
18313 NODE *kwn = kw_args;
18315 vtable_pop(vtargs, !!block + !!kw_rest_arg);
18316 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
18320 --required_kw_vars;
18321 kwn = kwn->nd_next;
18324 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
18325 ID vid = kwn->nd_body->nd_vid;
18327 *required_kw_vars++ = vid;
18334 arg_var(p, kw_bits);
18335 if (kw_rest_arg) arg_var(p, kw_rest_arg);
18336 if (block) arg_var(p, block);
18341 else if (kw_rest_arg ==
idNil) {
18344 else if (kw_rest_arg) {
18358 args = new_args_tail(p, 0, 0, 0, 0);
18359 nd_set_loc(args, &loc);
18361 args->nd_ainfo->pre_args_num = max_numparam;
18371 aryptn->nd_pconst = constant;
18392 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
18394 apinfo->
imemo = tmpbuf;
18420 hshptn->nd_pconst = constant;
18428 NODE *node, *kw_rest_arg_node;
18430 if (kw_rest_arg ==
idNil) {
18433 else if (kw_rest_arg) {
18434 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
18437 kw_rest_arg_node =
NULL;
18452 rb_warn0L(
nd_line(node),
"Pattern matching is experimental, and the behavior may change in future versions of Ruby!");
18468 nd_set_loc(node, loc);
18471 lit = node->nd_lit;
18474 nd_set_loc(node, loc);
18489 node->nd_next->nd_end = node->nd_next;
18490 node->nd_next->nd_next = 0;
18492 list_concat(*result, node);
18504 while (hash && hash->nd_head && hash->nd_next) {
18505 NODE *head = hash->nd_head;
18506 NODE *value = hash->nd_next;
18507 NODE *next = value->nd_next;
18511 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
18513 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
18514 head->nd_lit,
nd_line(head));
18515 head = ((
NODE *)data)->nd_next;
18516 head->nd_head = block_append(p, head->nd_head, value->nd_head);
18526 if (!result) result = hash;
18527 else list_concat(result, hash);
18536 if (hash) hash = remove_duplicate_keys(p, hash);
18544 if (is_private_local_id(
id)) {
18548 yyerror1(loc,
"duplicated variable name");
18562 yyerror1(loc,
"duplicated key name");
18583 ID vid = lhs->nd_vid;
18586 lhs->nd_value = rhs;
18587 nd_set_loc(lhs, loc);
18590 switch (id_type(vid)) {
18594 asgn->nd_aid = vid;
18598 else if (op ==
tANDOP) {
18599 lhs->nd_value = rhs;
18600 nd_set_loc(lhs, loc);
18606 nd_set_loc(asgn, loc);
18626 args = arg_concat(p, args, rhs, loc);
18663 yyerror1(loc,
"dynamic constant assignment");
18672 path = dispatch1(assign_error,
path);
18681 a = dispatch1(assign_error, a);
18689 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
18697 NODE *result = head;
18699 NODE *tmp = rescue_else ? rescue_else : rescue;
18702 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
18705 else if (rescue_else) {
18706 result = block_append(p, result, rescue_else);
18711 fixpos(result, head);
18721 if (!local->
used)
return;
18729 for (
int i = 0;
i <
cnt; ++
i) {
18731 if (is_private_local_id(
v[
i]))
continue;
18750 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
18757# if WARN_PAST_SCOPE
18770 warn_unused_var(p, p->
lvtbl);
18773# if WARN_PAST_SCOPE
18774 while (p->
lvtbl->past) {
18792 int cnt_args = vtable_size(p->
lvtbl->
args);
18793 int cnt_vars = vtable_size(p->
lvtbl->
vars);
18794 int cnt = cnt_args + cnt_vars;
18798 if (
cnt <= 0)
return 0;
18802 for (
i = 0, j = cnt_args+1;
i < cnt_vars; ++
i) {
18804 if (!vtable_included(p->
lvtbl->
args,
id)) {
18834 rb_warn1(
"`_%d' is reserved for numbered parameter; consider another name",
18841 numparam_name(p,
id);
18848 numparam_name(p,
id);
18867 if (used) used = used->
prev;
18873 else if (vtable_included(args,
id)) {
18877 int i = vtable_included(
vars,
id);
18878 if (
i && used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18886 return local_id_ref(p,
id,
NULL);
18931static const struct vtable *
18945 struct vtable *tmp = *vtblp;
18946 *vtblp = tmp->
prev;
18947# if WARN_PAST_SCOPE
18948 if (p->past_scope_enabled) {
18950 p->
lvtbl->past = tmp;
18963 warn_unused_var(p, p->
lvtbl);
19002 if (vtable_included(args,
id)) {
19005 if ((
i = vtable_included(
vars,
id)) != 0) {
19006 if (used && vidrefp) *vidrefp = &used->
tbl[
i-1];
19011 if (!vidrefp) used = 0;
19012 if (used) used = used->
prev;
19025 return dvar_defined_ref(p,
id,
NULL);
19031 return (vtable_included(p->
lvtbl->
args,
id) ||
19039 "regexp encoding option '%c' differs from source encoding '%s'",
19085 if (c) reg_fragment_enc_error(p,
str, c);
19092 reg_fragment_setenc(p,
str, options);
19111 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
19117 const char *s = (
const char *)
name;
19130 succ =
arg->succ_block;
19132 succ = block_append(p, succ, node);
19133 arg->succ_block = succ;
19144 arg.succ_block = 0;
19148 if (!
arg.succ_block)
return 0;
19149 return arg.succ_block->nd_next;
19155 reg_fragment_setenc(p,
str, options);
19172 re = parser_reg_compile(p,
str, options);
19189 if (c) reg_fragment_enc_error(p,
str, c);
19222 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
19223 const YYLTYPE *
const LOC = &default_location;
19229 node = block_append(p, node, print);
19239 node = block_append(p, split, node);
19244 node = block_append(p, chomp, node);
19264 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
19280 p->delayed.token =
Qnil;
19282 p->parsing_thread =
Qnil;
19292#define parser_mark ripper_parser_mark
19293#define parser_free ripper_parser_free
19297parser_mark(
void *
ptr)
19327parser_free(
void *
ptr)
19335 for (local = p->
lvtbl; local; local =
prev) {
19351parser_memsize(
const void *
ptr)
19355 size_t size =
sizeof(*p);
19358 for (local = p->
lvtbl; local; local = local->
prev) {
19359 size +=
sizeof(*local);
19380#undef rb_reserved_word
19385 return reserved_word(
str,
len);
19393 &parser_data_type, p);
19394 parser_initialize(p);
19411#define rb_parser_end_seen_p ripper_parser_end_seen_p
19412#define rb_parser_encoding ripper_parser_encoding
19413#define rb_parser_get_yydebug ripper_parser_get_yydebug
19414#define rb_parser_set_yydebug ripper_parser_set_yydebug
19415#define rb_parser_get_debug_output ripper_parser_get_debug_output
19416#define rb_parser_set_debug_output ripper_parser_set_debug_output
19417static VALUE ripper_parser_end_seen_p(
VALUE vparser);
19418static VALUE ripper_parser_encoding(
VALUE vparser);
19419static VALUE ripper_parser_get_yydebug(
VALUE self);
19421static VALUE ripper_parser_get_debug_output(
VALUE self);
19422static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
19431ripper_error_p(
VALUE vparser)
19478rb_parser_get_yydebug(
VALUE self)
19535#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
19538#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
19539#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
19540 (new)->cnt = (cnt), (ptr))
19570 if (
n->ptr ==
ptr) {
19572 if (
n->cnt)
n->cnt =
cnt;
19575 }
while ((
n =
n->next) !=
NULL);
19587 while ((
n = *prev) !=
NULL) {
19588 if (
n->ptr ==
ptr) {
19633count_char(
const char *
str,
int c)
19636 while (
str[
n] == c) ++
n;
19649 if (*yystr ==
'"') {
19650 size_t yyn = 0, bquote = 0;
19651 const char *yyp = yystr;
19657 bquote = count_char(yyp+1,
'`') + 1;
19658 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
19666 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
19667 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
19673 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
19674 if (yyres)
memcpy(yyres + yyn, yyp, 3);
19679 goto do_not_strip_quotes;
19682 goto do_not_strip_quotes;
19685 if (*++yyp !=
'\\')
19686 goto do_not_strip_quotes;
19702 do_not_strip_quotes: ;
19705 if (!yyres)
return strlen(yystr);
19707 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
19717 if (x ==
Qfalse)
return x;
19718 if (x ==
Qtrue)
return x;
19719 if (x ==
Qnil)
return x;
19737 x = ((
NODE *)x)->nd_rval;
19751#define validate(x) ((x) = get_value(x))
19780 return rb_funcall(p->value, mid, 3, a, b, c);
19790 return rb_funcall(p->value, mid, 4, a, b, c, d);
19801 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
19814 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f, g);
19823 if (
nd_type(nd) != NODE_RIPPER)
return 0;
19828ripper_get_value(
VALUE v)
19835 return nd->nd_rval;
19863 "gets returned %"PRIsVALUE" (expected String or nil)",
19880 &parser_data_type, p);
19885#define ripper_initialized_p(r) ((r)->lex.input != 0)
19906 p->
lex.
gets = ripper_lex_io_get;
19909 p->
lex.
gets = ripper_lex_get_generic;
19917 if (
NIL_P(fname)) {
19925 parser_initialize(p);
19935ripper_parse0(
VALUE parser_v)
19942 ripper_yyparse((
void*)p);
19949ripper_ensure(
VALUE parser_v)
19954 p->parsing_thread =
Qnil;
19965ripper_parse(
VALUE self)
19970 if (!ripper_initialized_p(p)) {
19973 if (!
NIL_P(p->parsing_thread)) {
19980 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
19993ripper_column(
VALUE self)
19999 if (!ripper_initialized_p(p)) {
20002 if (
NIL_P(p->parsing_thread))
return Qnil;
20014ripper_filename(
VALUE self)
20019 if (!ripper_initialized_p(p)) {
20033ripper_lineno(
VALUE self)
20038 if (!ripper_initialized_p(p)) {
20041 if (
NIL_P(p->parsing_thread))
return Qnil;
20052ripper_state(
VALUE self)
20057 if (!ripper_initialized_p(p)) {
20060 if (
NIL_P(p->parsing_thread))
return Qnil;
20071ripper_token(
VALUE self)
20077 if (!ripper_initialized_p(p)) {
20080 if (
NIL_P(p->parsing_thread))
return Qnil;
20121 ripper_init_eventids1();
20122 ripper_init_eventids2();
20204 ripper_init_eventids1_table(Ripper);
20205 ripper_init_eventids2_table(Ripper);
struct rb_encoding_entry * list
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)
int rb_ascii8bit_encindex(void)
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)
#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)
char str[HTML_ESCAPE_MAX_LEN+1]
#define rb_intern_str(string)
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
VALUE rb_cObject
Object class.
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,...)
_Bool rb_warning_category_enabled_p(rb_warning_category_t category)
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.
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, const VALUE *)
Make an Exception object from the list of arguments in a manner similar to Kernel#raise.
VALUE rb_ensure(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE), VALUE)
An equivalent to ensure clause.
VALUE rb_errinfo(void)
The current exception in the current thread.
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)
Equivalent to Object#class in Ruby.
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
VALUE type(ANYARGS)
ANYARGS-ed function type.
ONIG_EXTERN int onig_foreach_name(OnigRegex reg, int(*func)(const OnigUChar *, const OnigUChar *, int, int *, OnigRegex, void *), void *arg)
#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)
#define HERETERM_LENGTH_BITS
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 YY_LOCATION_PRINT(File, loc)
#define DVARS_TERMINAL_P(tbl)
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
VALUE rb_parser_new(void)
#define RUBY_DTRACE_PARSE_HOOK(name)
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
#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
#define YYPRINT(out, tok, val)
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)
STATIC_ASSERT(rb_strterm_heredoc_t, sizeof(rb_strterm_heredoc_t)<=4 *SIZEOF_VALUE)
#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,...)
RUBY_SYMBOL_EXPORT_BEGIN 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)
#define WARN_LOCATION(type)
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_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)
unsigned char yytype_uint8
#define YY_STACK_PRINT(Bottom, Top)
const struct kwtable * rb_reserved_word(const char *str, unsigned int len)
#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)
void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int)
#define ADD2HEAP(new, cnt, ptr)
#define mixed_escape(beg, enc1, enc2)
#define RE_OPTION_ENCODING_IDX(o)
#define vtable_pop(tbl, n)
#define set_yylval_noname()
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 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)
PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt,...), 2, 3)
rb_ast_t * rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE file, int start)
#define NUMPARAM_ID_TO_IDX(id)
void rb_parser_warn_location(VALUE vparser, int warn)
#define SET_LEX_STATE(ls)
#define RUBY_SET_YYLLOC_OF_NONE(Current)
#define vtable_add(tbl, id)
unsigned short yytype_uint16
#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 YYSTACK_RELOCATE(Stack_alloc, Stack)
size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr)
#define yypact_value_is_default(Yyn)
#define flush_string_content(p, enc)
#define rb_warn0L(l, fmt)
#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)
RUBY_FUNC_EXPORTED 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()
rb_atomic_t cnt[RUBY_NSIG]
void st_free_table(st_table *tab)
st_table * st_init_numtable_with_size(st_index_t size)
st_table * st_init_numtable(void)
int st_insert(st_table *tab, st_data_t key, st_data_t value)
int st_lookup(st_table *tab, st_data_t key, st_data_t *value)
int st_foreach(st_table *tab, st_foreach_callback_func *func, st_data_t arg)
rb_code_location_t nd_loc
struct local_vars::@125 numparam
VALUE(* gets)(struct parser_params *, VALUE)
struct parser_params::@126 lex
const char * ruby_sourcefile
unsigned int ruby__end__seen
VALUE(* call)(VALUE, int)
unsigned int command_start
unsigned int warn_location
const struct rb_iseq_struct * parent_iseq
unsigned int token_info_enabled
VALUE ruby_sourcefile_string
union parser_params::@126::@127 gets_
struct local_vars * lvtbl
unsigned int ruby2_keywords
rb_code_position_t beg_pos
rb_code_position_t end_pos
union rb_strterm_literal_struct::@130 u2
union rb_strterm_literal_struct::@128 u0
union rb_strterm_literal_struct::@131 u3
union rb_strterm_literal_struct::@129 u1
rb_strterm_literal_t literal
union rb_strterm_struct::@132 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)
struct rb_strterm_struct * strterm
const struct vtable * vars
unsigned long ruby_scan_oct(const char *, size_t, size_t *)
#define scan_hex(s, l, e)
#define scan_oct(s, l, e)