diff --git a/gen/arc/parser.ypp b/gen/arc/parser.ypp index c5ca329e..d3e53a56 100644 --- a/gen/arc/parser.ypp +++ b/gen/arc/parser.ypp @@ -992,7 +992,9 @@ expr_level expr_animation : MOD IDENTIFIER %prec ANIMREF - { $$ = expr_animation::make(@$, $2); }; + { $$ = expr_animation::make(@$, "", $2); }; + | MOD IDENTIFIER DOUBLECOLON IDENTIFIER %prec ANIMREF + { $$ = expr_animation::make(@$, $2, $4); }; ; expr_animtree diff --git a/include/xsk/arc/common/ast.hpp b/include/xsk/arc/common/ast.hpp index d78912f0..be120402 100644 --- a/include/xsk/arc/common/ast.hpp +++ b/include/xsk/arc/common/ast.hpp @@ -391,9 +391,10 @@ struct expr_animation : public expr { using ptr = std::unique_ptr; + std::string space; std::string value; - expr_animation(location const& loc, std::string const& value); + expr_animation(location const& loc, std::string const& space, std::string const& value); friend auto operator==(expr_animation const& lhs, expr_animation const& rhs) -> bool; XSK_ARC_AST_MAKE(expr_animation) }; diff --git a/include/xsk/arc/parser.hpp b/include/xsk/arc/parser.hpp index db3853e1..ce0ecb48 100644 --- a/include/xsk/arc/parser.hpp +++ b/include/xsk/arc/parser.hpp @@ -5482,7 +5482,7 @@ switch (yykind) /// Constants. enum { - yylast_ = 3307, ///< Last index in yytable_. + yylast_ = 3337, ///< Last index in yytable_. yynnts_ = 102, ///< Number of nonterminal symbols. yyfinal_ = 28 ///< Termination state number. }; diff --git a/src/arc/common/ast.cpp b/src/arc/common/ast.cpp index 0790f324..0020aac2 100644 --- a/src/arc/common/ast.cpp +++ b/src/arc/common/ast.cpp @@ -505,7 +505,7 @@ expr_animtree::expr_animtree(location const& loc) : expr{ type::expr_animtree, l { } -expr_animation::expr_animation(location const& loc, std::string const& value) : expr{ type::expr_animation, loc }, value{ value } +expr_animation::expr_animation(location const& loc, std::string const& space, std::string const& value) : expr{ type::expr_animation, loc }, space{ space }, value{ value } { } @@ -986,7 +986,7 @@ auto operator==(expr_animtree const&, expr_animtree const&) -> bool auto operator==(expr_animation const& lhs, expr_animation const& rhs) -> bool { - return lhs.value == rhs.value; + return lhs.space == rhs.space && lhs.value == rhs.value; } auto operator==(expr_classes const&, expr_classes const&) -> bool diff --git a/src/arc/compiler.cpp b/src/arc/compiler.cpp index 4d6f0b5f..23c6ff91 100644 --- a/src/arc/compiler.cpp +++ b/src/arc/compiler.cpp @@ -1167,7 +1167,7 @@ auto compiler::emit_expr_call_function(expr_function const& exp, bool is_stmt) - bool as_dev = false; std::string end; - if (!developer_thread_ && is_stmt && exp.name->value == "assert") + if (!developer_thread_ && is_stmt && (exp.name->value == "assert" || exp.name->value == "assertmsg")) { as_dev = true; developer_thread_ = true; @@ -1804,12 +1804,15 @@ auto compiler::emit_expr_vector(expr_vector const& exp) -> void auto compiler::emit_expr_animation(expr_animation const& exp) -> void { - if (animtree_.empty()) + if (exp.space == "" && animtree_.empty()) { throw comp_error(exp.loc(), "trying to use animation without specified using animtree"); } - emit_opcode(opcode::OP_GetAnimation, { animtree_, exp.value }); + if (exp.space != "") + emit_opcode(opcode::OP_GetAnimation, { exp.space, exp.value }); + else + emit_opcode(opcode::OP_GetAnimation, { animtree_, exp.value }); } auto compiler::emit_expr_animtree(expr_animtree const& exp) -> void diff --git a/src/arc/decompiler.cpp b/src/arc/decompiler.cpp index db9b5e01..34bf4b92 100644 --- a/src/arc/decompiler.cpp +++ b/src/arc/decompiler.cpp @@ -241,23 +241,40 @@ auto decompiler::decompile_instruction(instruction const& inst, bool last) -> vo case opcode::OP_GetAnimation: { auto found = false; + auto space = ""s; for (auto i = program_->declarations.rbegin(); i != program_->declarations.rend(); i++) { if ((*i)->is()) { found = (*i)->as().name->value == inst.data[0]; + space = (*i)->as().name->value; break; } } if (!found) { - auto dec = decl_usingtree::make(loc, expr_string::make(loc, inst.data[0])); - program_->declarations.push_back(std::move(dec)); + if (space == "") + { + auto dec = decl_usingtree::make(loc, expr_string::make(loc, inst.data[0])); + program_->declarations.push_back(std::move(dec)); + stack_.push(expr_animation::make(loc, "", inst.data[1])); + } + else + { + stack_.push(expr_animation::make(loc, inst.data[0], inst.data[1])); + } + } + else if (space == inst.data[0]) + { + stack_.push(expr_animation::make(loc, "", inst.data[1])); + } + else + { + stack_.push(expr_animation::make(loc, inst.data[0], inst.data[1])); } - stack_.push(expr_animation::make(loc, inst.data[1])); break; } case opcode::OP_GetFunction: @@ -1462,7 +1479,9 @@ auto decompiler::decompile_devblocks(stmt_list& stm) -> void if (st->as().value->is() && st->as().value->as().value->is()) { - if (st->as().value->as().value->as().name->value == "assert") + auto func = st->as().value->as().value->as().name->value; + + if (func == "assert" || func == "assertmsg") { stm.list.insert(stm.list.begin() + i, std::move(list_stmt->list.at(0))); continue; diff --git a/src/arc/parser.cpp b/src/arc/parser.cpp index 6d1d8bb5..aeedf3c6 100644 --- a/src/arc/parser.cpp +++ b/src/arc/parser.cpp @@ -3880,108 +3880,114 @@ namespace xsk { namespace arc { case 258: // expr_animation: "%" "identifier" #line 995 "parser.ypp" - { yylhs.value.as < expr_animation::ptr > () = expr_animation::make(yylhs.location, yystack_[0].value.as < std::string > ()); } + { yylhs.value.as < expr_animation::ptr > () = expr_animation::make(yylhs.location, "", yystack_[0].value.as < std::string > ()); } #line 3891 "parser.cpp" break; - case 259: // expr_animtree: "#animtree" -#line 1000 "parser.ypp" - { yylhs.value.as < expr_animtree::ptr > () = expr_animtree::make(yylhs.location); } + case 259: // expr_animation: "%" "identifier" "::" "identifier" +#line 997 "parser.ypp" + { yylhs.value.as < expr_animation::ptr > () = expr_animation::make(yylhs.location, yystack_[2].value.as < std::string > (), yystack_[0].value.as < std::string > ()); } #line 3897 "parser.cpp" break; - case 260: // expr_identifier_nosize: "identifier" -#line 1005 "parser.ypp" - { yylhs.value.as < expr_identifier::ptr > () = expr_identifier::make(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 260: // expr_animtree: "#animtree" +#line 1002 "parser.ypp" + { yylhs.value.as < expr_animtree::ptr > () = expr_animtree::make(yylhs.location); } #line 3903 "parser.cpp" break; - case 261: // expr_identifier: "identifier" -#line 1010 "parser.ypp" + case 261: // expr_identifier_nosize: "identifier" +#line 1007 "parser.ypp" { yylhs.value.as < expr_identifier::ptr > () = expr_identifier::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3909 "parser.cpp" break; - case 262: // expr_identifier: "size" + case 262: // expr_identifier: "identifier" #line 1012 "parser.ypp" - { yylhs.value.as < expr_identifier::ptr > () = expr_identifier::make(yylhs.location, "size"); } + { yylhs.value.as < expr_identifier::ptr > () = expr_identifier::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3915 "parser.cpp" break; - case 263: // expr_path: "identifier" -#line 1017 "parser.ypp" - { yylhs.value.as < expr_path::ptr > () = expr_path::make(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 263: // expr_identifier: "size" +#line 1014 "parser.ypp" + { yylhs.value.as < expr_identifier::ptr > () = expr_identifier::make(yylhs.location, "size"); } #line 3921 "parser.cpp" break; - case 264: // expr_path: "path" + case 264: // expr_path: "identifier" #line 1019 "parser.ypp" { yylhs.value.as < expr_path::ptr > () = expr_path::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3927 "parser.cpp" break; - case 265: // expr_istring: "localized string" -#line 1024 "parser.ypp" - { yylhs.value.as < expr_istring::ptr > () = expr_istring::make(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 265: // expr_path: "path" +#line 1021 "parser.ypp" + { yylhs.value.as < expr_path::ptr > () = expr_path::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3933 "parser.cpp" break; - case 266: // expr_string: "string literal" -#line 1029 "parser.ypp" - { yylhs.value.as < expr_string::ptr > () = expr_string::make(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 266: // expr_istring: "localized string" +#line 1026 "parser.ypp" + { yylhs.value.as < expr_istring::ptr > () = expr_istring::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3939 "parser.cpp" break; - case 267: // expr_vector: "(" expr "," expr "," expr ")" -#line 1034 "parser.ypp" - { yylhs.value.as < expr_vector::ptr > () = expr_vector::make(yylhs.location, std::move(yystack_[5].value.as < expr::ptr > ()), std::move(yystack_[3].value.as < expr::ptr > ()), std::move(yystack_[1].value.as < expr::ptr > ())); } + case 267: // expr_string: "string literal" +#line 1031 "parser.ypp" + { yylhs.value.as < expr_string::ptr > () = expr_string::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3945 "parser.cpp" break; - case 268: // expr_hash: "hash string" -#line 1039 "parser.ypp" - { yylhs.value.as < expr_hash::ptr > () = expr_hash::make(yylhs.location, yystack_[0].value.as < std::string > ()); } + case 268: // expr_vector: "(" expr "," expr "," expr ")" +#line 1036 "parser.ypp" + { yylhs.value.as < expr_vector::ptr > () = expr_vector::make(yylhs.location, std::move(yystack_[5].value.as < expr::ptr > ()), std::move(yystack_[3].value.as < expr::ptr > ()), std::move(yystack_[1].value.as < expr::ptr > ())); } #line 3951 "parser.cpp" break; - case 269: // expr_float: "-" "float" -#line 1044 "parser.ypp" - { yylhs.value.as < expr_float::ptr > () = expr_float::make(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 269: // expr_hash: "hash string" +#line 1041 "parser.ypp" + { yylhs.value.as < expr_hash::ptr > () = expr_hash::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3957 "parser.cpp" break; - case 270: // expr_float: "float" + case 270: // expr_float: "-" "float" #line 1046 "parser.ypp" - { yylhs.value.as < expr_float::ptr > () = expr_float::make(yylhs.location, yystack_[0].value.as < std::string > ()); } + { yylhs.value.as < expr_float::ptr > () = expr_float::make(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3963 "parser.cpp" break; - case 271: // expr_integer: "-" "integer" -#line 1051 "parser.ypp" - { yylhs.value.as < expr_integer::ptr > () = expr_integer::make(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } + case 271: // expr_float: "float" +#line 1048 "parser.ypp" + { yylhs.value.as < expr_float::ptr > () = expr_float::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3969 "parser.cpp" break; - case 272: // expr_integer: "integer" + case 272: // expr_integer: "-" "integer" #line 1053 "parser.ypp" - { yylhs.value.as < expr_integer::ptr > () = expr_integer::make(yylhs.location, yystack_[0].value.as < std::string > ()); } + { yylhs.value.as < expr_integer::ptr > () = expr_integer::make(yylhs.location, "-" + yystack_[0].value.as < std::string > ()); } #line 3975 "parser.cpp" break; - case 273: // expr_false: "false" -#line 1058 "parser.ypp" - { yylhs.value.as < expr_false::ptr > () = expr_false::make(yylhs.location); } + case 273: // expr_integer: "integer" +#line 1055 "parser.ypp" + { yylhs.value.as < expr_integer::ptr > () = expr_integer::make(yylhs.location, yystack_[0].value.as < std::string > ()); } #line 3981 "parser.cpp" break; - case 274: // expr_true: "true" -#line 1063 "parser.ypp" - { yylhs.value.as < expr_true::ptr > () = expr_true::make(yylhs.location); } + case 274: // expr_false: "false" +#line 1060 "parser.ypp" + { yylhs.value.as < expr_false::ptr > () = expr_false::make(yylhs.location); } #line 3987 "parser.cpp" break; + case 275: // expr_true: "true" +#line 1065 "parser.ypp" + { yylhs.value.as < expr_true::ptr > () = expr_true::make(yylhs.location); } +#line 3993 "parser.cpp" + break; + -#line 3991 "parser.cpp" +#line 3997 "parser.cpp" default: break; @@ -4478,86 +4484,86 @@ namespace xsk { namespace arc { } - const short parser::yypact_ninf_ = -394; + const short parser::yypact_ninf_ = -404; - const short parser::yytable_ninf_ = -264; + const short parser::yytable_ninf_ = -265; const short parser::yypact_[] = { - 164, -394, -394, -84, -84, -30, -22, -22, -22, -394, - -394, -394, 43, 648, -394, -394, -394, -394, -394, -19, - -394, -394, -28, -26, -59, 1, 8, 19, -394, -394, - -394, -394, -394, -22, -394, -394, -394, 28, -22, -22, - -22, -14, -394, 10, 27, 9, 11, 12, 61, -22, - 1484, -394, 61, 61, 61, 1195, -394, -394, 10, -394, - -16, -394, -394, -394, -394, -394, -394, -394, 48, 66, - 68, 72, 77, 83, 89, 90, 101, 102, 115, 116, - 118, 122, 124, 127, 134, 135, 138, 1484, -11, -22, - 1484, 1484, 934, 13, 141, -394, -394, -394, -394, 3197, - -394, -394, -394, -394, -394, -394, -24, -4, -394, -394, - -394, -394, -394, -394, -394, -394, 121, -394, -394, -394, - -394, -394, 133, 140, 150, 151, 153, 155, -394, -394, - 2, 125, -394, -394, 219, -394, -394, 275, 320, 332, - 371, -394, -394, 7, 152, -394, 154, -394, -394, -394, - -394, -394, -394, -394, -394, -394, 1736, 1484, 1484, 148, - 145, 1866, 169, 171, 174, 175, -81, 166, 177, 179, - 1318, 186, 187, -22, -394, 192, -394, 1356, 1356, -394, - -394, 1671, -394, -394, -394, -394, -394, -394, -394, -394, - -394, -394, -394, -394, -394, -394, -394, -394, -394, -394, - -394, -394, -394, -394, -394, -394, -394, -394, 188, 193, - 194, 198, 199, 121, 133, 140, 150, 151, 153, 155, - -394, -394, 853, -394, -394, -394, -394, 216, 189, 200, - 218, 209, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1484, 197, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1899, 1484, -394, -394, -394, -394, 1484, -394, -394, - -394, -394, 2, 125, -394, 399, 7, -394, 1484, 1484, - 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1484, 1484, 1484, 1567, -15, -394, -394, 216, 1484, - -22, 245, -394, -394, -394, 1801, 798, 1062, -394, 1484, - 262, 1484, 1879, -22, 1484, 172, 211, 213, -394, -394, - -394, -394, 3149, 1484, 1484, 201, 399, 399, -394, -394, - -394, -394, -394, -394, -394, -394, 227, 228, 230, 231, - 185, -394, -394, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1484, 1484, 1484, -22, 1484, 1484, -22, 2996, 2050, - 2084, 2097, 2131, 2144, 2178, 2191, 2225, 2238, -394, 2272, - 2285, 2319, 2332, 2366, 2379, 3037, 2413, -394, 1484, 1397, - 2426, 3114, 137, 137, 931, 1075, 610, 610, 512, 512, - 512, 512, 810, 1237, 1205, 41, 41, -394, -394, -394, - 1480, 1563, 2703, 2745, 2787, 2829, 2871, 1401, 2913, -394, - -394, -394, 3197, 15, -394, 235, -394, -394, -394, -394, - -394, -394, 2460, 238, 2473, 232, -394, -394, -394, 761, - -1, 2507, -394, -394, -394, 21, 34, 1484, 1484, 1484, - 1484, 1484, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, - 3197, 3197, 3197, 235, 2955, 36, 242, 1484, -394, -394, - -394, -394, -394, -394, -394, -394, -394, -394, -394, -394, - -394, -394, -394, 1484, -394, 3078, 240, 1484, -394, -394, - -394, -394, -394, -394, -394, -394, -394, 1484, 1484, 1866, - 1484, 1866, 1484, 1484, -22, 61, 239, 241, 3184, 2520, - 1945, 1991, 2037, 252, -394, 1484, 2554, 2567, 1484, 258, - 3197, 3197, 40, 304, 2601, -394, 3197, 248, 2614, 302, - -394, -394, -394, -394, 253, 259, 1484, 260, 1484, 261, - 1484, 278, 46, -394, -394, 2648, 1484, -394, 1866, 263, - 1879, 1866, 1484, -394, -394, 277, 280, -394, 283, -394, - 284, 1484, -394, -394, 50, -394, -394, 287, -394, 2661, - 274, 286, 288, 59, -394, 1866, 1866, -394, -394, -394, - -394, -394, -394 + 164, -404, -404, 21, 21, -62, -22, -22, -22, -404, + -404, -404, 20, 380, -404, -404, -404, -404, -404, -10, + -404, -404, -45, -31, -57, 3, 7, 17, -404, -404, + -404, -404, -404, -22, -404, -404, -404, -2, -22, -22, + -22, -46, -404, -15, 19, -42, -36, -19, 37, -22, + 1399, -404, 37, 37, 37, 1586, -404, -404, -15, -404, + -24, -404, -404, -404, -404, -404, -404, -404, 42, 52, + 60, 66, 73, 77, 82, 83, 88, 90, 93, 96, + 116, 118, 122, 124, 125, 127, 130, 1399, 43, -22, + 1399, 1399, 1353, 23, 128, -404, -404, -404, -404, 3196, + -404, -404, -404, -404, -404, -404, -3, 2, -404, -404, + -404, -404, -404, -404, -404, -404, 131, -404, -404, -404, + -404, -404, 133, 140, 144, 146, 150, 151, -404, -404, + 47, 174, -404, -404, 176, -404, -404, 186, 282, 335, + 363, -404, -404, 8, 152, -404, 153, -404, -404, -404, + -404, -404, -404, -404, -404, -404, 1716, 1399, 1399, 120, + 165, 1846, 171, 172, 175, 179, -65, 163, 170, 177, + 1233, 187, 195, -22, -404, 194, -404, 1153, 1153, -404, + -404, 1651, -404, -404, -404, -404, -404, -404, -404, -404, + -404, -404, -404, -404, -404, -404, -404, -404, -404, -404, + -404, -404, -404, -404, -404, -404, -404, -404, 188, 191, + 192, 193, 199, 131, 133, 140, 144, 146, 150, 151, + -404, -404, 793, -404, -404, -404, -404, 206, 189, 212, + 218, 209, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, + 1399, 1399, 185, 1399, 1399, 1399, 1399, 1399, 1399, 1399, + 1399, 1856, 1399, -404, -404, -404, -404, 1399, -404, -404, + -404, -404, 47, 174, -404, 476, 8, 210, 1399, 1399, + 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, + 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, + 1399, 1399, 1399, 1399, 1482, -21, -404, -404, 206, 1399, + -22, 251, -404, -404, -404, 1781, 986, 1395, -404, 1399, + 268, 1399, 1089, -22, 1399, 178, 221, 227, -404, -404, + -404, -404, 3148, 1399, 1399, 201, 476, 476, -404, -404, + -404, -404, -404, -404, -404, -404, 242, 243, 245, 246, + 202, -404, -404, 1399, 1399, 1399, 1399, 1399, 1399, 1399, + 1399, 1399, 1399, 1399, -22, 1399, 1399, -22, 2995, 2007, + 2041, 2054, 2088, 2101, 2135, 2148, 2182, 2195, -404, 2229, + 2242, 2276, 2289, 2323, 2336, 3036, 2370, -404, 1399, 677, + 2383, 208, 3113, 314, 314, 3227, 1889, 547, 547, 622, + 622, 622, 622, 1143, 842, 1935, 41, 41, -404, -404, + -404, 1478, 2660, 2702, 2744, 2786, 2828, 2870, 1316, 2912, + -404, -404, -404, 3196, -8, -404, 258, -404, -404, -404, + -404, -404, -404, 2417, 259, 2430, 249, -404, -404, -404, + 875, -12, 2464, -404, -404, -404, -1, 13, 1399, 1399, + 1399, 1399, 1399, 3196, 3196, 3196, 3196, 3196, 3196, 3196, + 3196, 3196, 3196, 3196, 258, 2954, 15, 264, 1399, -404, + -404, -404, -404, -404, -404, -404, -404, -404, -404, -404, + -404, -404, -404, -404, 1399, -404, 3077, 261, -404, 1399, + -404, -404, -404, -404, -404, -404, -404, -404, -404, 1399, + 1399, 1846, 1399, 1846, 1399, 1399, -22, 37, 255, 260, + 3183, 2477, 1902, 1948, 1994, 266, -404, 1399, 2511, 2524, + 1399, 273, 3196, 3196, 31, 318, 2558, -404, 3196, 271, + 2571, 316, -404, -404, -404, -404, 272, 276, 1399, 279, + 1399, 288, 1399, 294, 32, -404, -404, 2605, 1399, -404, + 1846, 290, 1089, 1846, 1399, -404, -404, 298, 304, -404, + 306, -404, 308, 1399, -404, -404, 34, -404, -404, 310, + -404, 2618, 296, 303, 313, 40, -404, 1846, 1846, -404, + -404, -404, -404, -404, -404 }; const short parser::yydefact_[] = { - 3, 14, 15, 0, 0, 0, 0, 0, 0, 262, - 8, 261, 0, 2, 9, 10, 11, 16, 17, 0, - 264, 263, 0, 0, 0, 0, 0, 0, 1, 4, - 5, 6, 7, 204, 12, 13, 266, 0, 204, 204, + 3, 14, 15, 0, 0, 0, 0, 0, 0, 263, + 8, 262, 0, 2, 9, 10, 11, 16, 17, 0, + 265, 264, 0, 0, 0, 0, 0, 0, 1, 4, + 5, 6, 7, 204, 12, 13, 267, 0, 204, 204, 204, 0, 202, 203, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 19, 200, 201, 259, - 0, 274, 273, 253, 254, 255, 256, 257, 0, 0, + 0, 18, 0, 0, 0, 0, 19, 200, 201, 260, + 0, 275, 274, 253, 254, 255, 256, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 261, 265, 268, 270, 272, 205, + 0, 0, 0, 0, 262, 266, 269, 271, 273, 205, 99, 100, 101, 138, 139, 140, 141, 142, 190, 191, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, @@ -4573,7 +4579,7 @@ namespace xsk { namespace arc { 245, 246, 0, 247, 248, 249, 250, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 252, 229, 189, 184, 0, 269, 271, + 0, 0, 0, 252, 229, 189, 184, 0, 270, 272, 243, 244, 187, 188, 186, 0, 185, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4586,235 +4592,233 @@ namespace xsk { namespace arc { 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, - 0, 0, 131, 132, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 133, 134, 135, 136, 137, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 260, 239, 209, 0, 206, 230, 241, 58, 52, 50, - 75, 76, 0, 0, 0, 0, 63, 64, 62, 0, - 0, 0, 91, 90, 95, 0, 0, 0, 0, 0, - 0, 0, 108, 114, 115, 116, 117, 118, 109, 110, - 111, 113, 112, 0, 0, 0, 0, 0, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, - 224, 225, 226, 0, 228, 0, 0, 0, 232, 233, - 234, 235, 236, 237, 238, 231, 194, 0, 207, 0, - 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 196, 207, 0, 0, 0, 0, - 119, 208, 0, 82, 0, 84, 102, 0, 0, 0, - 89, 97, 98, 68, 0, 0, 207, 0, 207, 0, - 207, 0, 0, 210, 227, 0, 207, 195, 0, 0, - 65, 0, 0, 72, 74, 0, 206, 78, 206, 80, - 206, 207, 197, 267, 0, 83, 85, 0, 87, 0, - 0, 0, 0, 0, 198, 0, 0, 73, 77, 79, - 199, 86, 88 + 0, 0, 0, 131, 132, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 133, 134, 135, 136, + 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 261, 239, 209, 0, 206, 230, 241, 58, 52, + 50, 75, 76, 0, 0, 0, 0, 63, 64, 62, + 0, 0, 0, 91, 90, 95, 0, 0, 0, 0, + 0, 0, 0, 108, 114, 115, 116, 117, 118, 109, + 110, 111, 113, 112, 0, 0, 0, 0, 0, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, + 223, 224, 225, 226, 0, 228, 0, 0, 259, 0, + 232, 233, 234, 235, 236, 237, 238, 231, 194, 0, + 207, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 196, 207, 0, 0, + 0, 0, 119, 208, 0, 82, 0, 84, 102, 0, + 0, 0, 89, 97, 98, 68, 0, 0, 207, 0, + 207, 0, 207, 0, 0, 210, 227, 0, 207, 195, + 0, 0, 65, 0, 0, 72, 74, 0, 206, 78, + 206, 80, 206, 207, 197, 268, 0, 83, 85, 0, + 87, 0, 0, 0, 0, 0, 198, 0, 0, 73, + 77, 79, 199, 86, 88 }; const short parser::yypgoto_[] = { - -394, -394, -394, 340, 343, 348, -394, -394, -93, 182, - -394, -394, -394, -34, -174, -394, -394, -394, -394, -394, - -394, -394, -394, -394, -394, -394, -394, -394, -394, -394, - -394, -394, -394, -394, -394, -394, -394, -394, -394, 843, - -394, -311, -310, -309, -394, -394, -394, -394, -394, -394, - -39, -33, -122, -113, 119, 321, -294, -393, -394, -394, - -394, -394, -394, -394, 29, -394, -394, -394, -394, -394, - 39, 71, 100, 142, 204, 212, -394, -394, 246, 285, - -394, 282, 303, -394, -394, 422, 467, 490, 533, -394, - -394, -394, 0, 6, -394, -20, -394, -394, -394, 203, - -394, -394 + -404, -404, -404, 367, 369, 382, -404, -404, -126, 215, + -404, -404, -404, -27, -145, -404, -404, -404, -404, -404, + -404, -404, -404, -404, -404, -404, -404, -404, -404, -404, + -404, -404, -404, -404, -404, -404, -404, -404, -404, 767, + -404, -311, -309, -308, -404, -404, -404, -404, -404, -404, + -39, -33, -129, -122, 126, 351, -249, -403, -404, -404, + -404, -404, -404, -404, 29, -404, -404, -404, -404, -404, + 39, 71, 100, 138, 168, 182, -404, -404, 200, 248, + -404, 309, 307, -404, -404, 377, 422, 540, 595, -404, + -404, -404, 0, 6, -404, -13, -404, -404, -404, 241, + -404, -404 }; const short parser::yydefgoto_[] = { 0, 12, 13, 14, 15, 16, 17, 18, 179, 180, - 305, 181, 182, 183, 425, 184, 185, 186, 187, 188, + 305, 181, 182, 183, 426, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 412, - 517, 208, 209, 210, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 41, 42, 545, 414, 110, 111, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 413, + 519, 208, 209, 210, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 41, 42, 547, 415, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 411, 143, 144, 145, 146, 147, 148, 149, 150, + 142, 412, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152 }; const short parser::yytable_[] = { - 19, 426, 427, 428, 37, 413, 25, 26, 27, 22, - 23, -243, 296, 19, 56, -243, 211, 9, 153, 154, - 155, 297, 212, 9, 409, 493, 315, 20, 21, 435, - 436, -244, 36, 43, 24, -244, 98, -245, 43, 43, - 43, -245, -251, 28, -243, 33, -251, -243, 34, 58, - 35, 48, 229, 260, 36, 227, 49, 252, 253, 261, - 230, 228, 455, 304, -244, 38, 231, -244, 310, 494, - -245, 299, 39, -245, 52, -251, 53, 54, -251, 49, - 486, 49, 49, 40, 213, 487, 496, -243, -243, 254, - 11, 487, 266, 44, 214, 20, 94, 410, 228, 497, - 296, 504, 50, 51, 487, 537, 487, -244, -244, 297, - 487, 552, 232, -245, -245, 564, 487, 211, -251, -251, - 487, 213, 211, 212, 570, 267, 215, 55, 212, 487, - 233, 214, 234, 546, 298, 548, 235, 550, 260, 260, - 228, 236, 211, 296, 261, 261, 316, 237, 212, 284, - 285, 286, 297, 238, 239, 216, 227, 45, 46, 47, - -246, 227, 228, 215, -246, 240, 241, 228, 1, 2, - 3, 4, 5, 325, 6, 7, 8, 227, 227, 242, - 243, 227, 244, 228, 228, 213, 245, 228, 246, 287, - 213, 247, 216, -246, 512, 214, -246, 217, 248, 249, - 214, 288, 250, 9, 296, 296, 213, 213, 289, 309, - 213, 532, 419, 297, 297, -263, 214, 214, 290, 291, - 214, 292, 298, 293, 308, 301, 300, 215, 228, 426, - 427, 428, 215, 311, 217, 312, -246, -246, 313, 314, - 10, 318, 554, 282, 283, 284, 285, 286, 215, 215, - 323, 324, 215, 319, 60, 320, 216, 563, 9, 218, - 252, 216, 368, 354, 331, 298, 211, 219, 355, 332, - 333, 228, 212, 260, 334, 335, 11, 216, 216, 261, - 299, 216, 356, 357, 416, 423, 432, 294, 433, 259, - 295, 438, 439, 437, 440, 441, 218, 410, 217, 488, - 415, 220, 490, 217, 219, 227, 505, 296, 492, 509, - -247, 228, 227, 430, -247, 521, 297, 522, 228, 217, - 217, 531, 536, 217, 540, 538, 298, 298, 542, 543, - 20, 94, 228, 228, 213, 544, 547, 549, 262, 556, - 221, 213, 551, -247, 214, 560, -247, 487, 561, 562, - 567, 214, 565, 30, 453, -248, 31, 456, 222, -248, - 218, 32, 568, 330, 569, 218, 557, -249, 219, 317, - 57, -249, 0, 219, 264, 0, 215, 263, 0, 0, - 0, 218, 218, 215, 0, 218, -247, -247, -248, 219, - 219, -248, 0, 219, 0, 265, 513, 0, 515, 0, - -249, 0, 220, -249, 0, 216, -250, 220, 0, 0, - -250, 0, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 220, 220, 0, 0, 220, 0, 298, - 0, -248, -248, 0, 60, 228, 0, 0, 9, -250, - 0, 221, -250, -249, -249, 555, 221, 217, 558, 0, - 211, 0, 211, 0, 217, 0, 212, 0, 212, 222, - 0, 520, 221, 221, 222, 0, 221, 294, 0, 0, - 340, 0, 571, 572, 0, 0, 0, 223, 0, 0, - 326, 327, -250, -250, 222, 0, 0, 0, 0, 227, - 0, 227, 0, 0, 519, 228, 0, 228, 0, 211, - 0, 260, 211, 0, 0, 212, 0, 261, 212, 218, - 20, 94, 0, 0, 223, 0, 218, 219, 213, 0, - 213, 0, 224, 0, 219, 0, 211, 211, 214, 0, - 214, 0, 212, 212, 0, 0, 0, 0, 227, 0, - 227, 227, 0, 0, 228, 225, 228, 228, 0, 0, - 0, 220, 0, 0, 0, 0, 0, 0, 220, 224, - 215, 0, 215, 0, 0, 227, 227, 213, 0, 213, - 213, 228, 228, 0, 0, 0, 0, 214, 223, 214, - 214, 0, 225, 223, 0, 0, 0, 0, 226, 216, - 221, 216, 269, 270, 213, 213, 0, 221, 0, 223, - 223, 0, 0, 223, 214, 214, 0, 0, 222, 215, - 0, 215, 215, 0, 0, 429, 0, 0, 282, 283, - 284, 285, 286, 224, 0, 226, 0, 0, 224, 0, - 0, 217, 0, 217, 0, 0, 215, 215, 216, 0, - 216, 216, 0, 0, 224, 224, 225, 0, 224, 0, - 0, 225, 1, 2, 3, 4, 5, 0, 6, 7, - 8, 0, 0, 0, 0, 216, 216, 225, 225, 0, - 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, - 217, 0, 217, 217, 0, 0, 0, 9, 0, 226, - 269, 270, 0, 218, 226, 218, 275, 276, 277, 278, - 0, 219, 0, 219, 0, 0, 0, 217, 217, 0, - 226, 226, 0, 0, 226, 0, 282, 283, 284, 285, - 286, 0, 0, 0, 29, 0, 0, 223, 0, 0, - 0, 0, 0, 0, 223, 220, 0, 220, 0, 0, - 0, 0, 218, 0, 218, 218, 0, 0, 0, 0, - 219, 0, 219, 219, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 218, - 218, 0, 224, 0, 221, 0, 221, 219, 219, 224, - 0, 0, 0, 0, 220, 0, 220, 220, 0, 0, - 0, 0, 222, 0, 222, 225, 60, 0, 0, 0, - 9, 0, 225, 0, 0, 0, 0, 0, 0, 0, - 0, 220, 220, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 221, 0, 221, 221, 0, 0, 294, - 0, 0, 340, 0, 0, 0, 0, 0, 226, 341, - 342, 222, 0, 429, 222, 226, 0, 0, 0, 0, - 221, 221, 0, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 0, 0, 336, 337, 222, 222, - 338, 339, 20, 94, 420, 268, 0, 0, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 60, 0, - 269, 270, 9, 99, 273, 274, 275, 276, 277, 278, - 0, 279, 280, 281, 282, 283, 284, 285, 286, 0, - 0, 223, 0, 223, 280, 281, 282, 283, 284, 285, - 286, 294, 0, 0, 340, 0, 0, 0, 0, 0, - 251, 341, 342, 255, 256, 0, 0, 0, 0, 0, + 19, 427, 24, 428, 429, 296, 25, 26, 27, 22, + 23, 37, 297, 19, 495, 9, 211, 9, 410, 48, + 28, 56, 212, 52, 49, 153, 154, 155, 49, 53, + 304, 34, -243, 43, 49, 310, -243, -244, 43, 43, + 43, -244, 315, -251, 229, 35, 54, -251, 36, 58, + 414, 49, 98, 260, 33, 227, 36, 488, 496, 261, + 230, 228, 489, 44, 498, -243, 231, 38, -243, 489, + -244, 39, 299, -244, 436, 437, -251, 50, 499, -251, + 506, 40, -245, 489, 213, 489, -245, 20, 94, 254, + 11, 411, 266, 296, 214, 51, 539, 554, 228, 566, + 297, 489, 489, 55, 489, 572, 232, 456, -243, -243, + 489, 252, 253, -244, -244, -245, 233, 211, -245, -251, + -251, 213, 211, 212, 234, 548, 215, 550, 212, 552, + 235, 214, 20, 21, 298, 267, 296, 236, 260, 260, + 228, 237, 211, 297, 261, 261, 238, 239, 212, 284, + 285, 286, 240, 316, 241, 216, 227, 242, -245, -245, + 243, 227, 228, 215, 45, 46, 47, 228, 1, 2, + 3, 4, 5, 325, 6, 7, 8, 227, 227, 420, + 244, 227, 245, 228, 228, 213, 246, 228, 247, 248, + 213, 249, 216, 217, 250, 214, 308, 296, 296, 287, + 214, 288, -264, 9, 297, 297, 213, 213, 289, -246, + 213, 60, 290, -246, 291, 9, 214, 214, 292, 293, + 214, -247, 298, 218, 301, -247, 300, 215, 228, 309, + 217, 427, 215, 428, 429, 311, 312, 219, 318, 313, + 10, 514, -246, 314, 294, -246, 319, 295, 215, 215, + 368, 323, 215, 320, -247, 220, 216, -247, 534, 324, + 218, 216, 252, 354, 331, 298, 211, 332, 333, 334, + 299, 228, 212, 260, 219, 335, 11, 216, 216, 261, + 355, 216, 356, 357, 381, -246, -246, 20, 94, 556, + 417, 424, 262, 438, 217, 259, 433, -247, -247, 217, + 416, 296, 434, 221, 565, 227, 439, 440, 297, 441, + 442, 228, 227, 431, 411, 217, 217, -248, 228, 217, + 478, -248, 490, 492, 218, 494, 298, 298, 507, 218, + 511, 523, 228, 228, 213, 533, 524, 538, 219, 540, + 263, 213, 544, 219, 214, 218, 218, 542, 545, 218, + -248, 214, 546, -248, 454, 549, 220, 457, 553, 219, + 219, 220, 222, 219, 551, 515, 558, 517, 489, 562, + -249, 563, 569, 564, -249, 567, 215, 220, 220, 570, + 30, 220, 31, 215, 1, 2, 3, 4, 5, 571, + 6, 7, 8, -248, -248, 32, 330, 559, -250, 265, + 57, 264, -250, -249, 221, 216, -249, 317, 0, 221, + 0, 0, 216, 0, 557, 0, 0, 560, 0, 9, + 282, 283, 284, 285, 286, 221, 221, 0, 0, 221, + 298, -250, 223, 0, -250, 0, 228, 0, 0, 0, + 0, 573, 574, 217, 0, 0, -249, -249, 0, 0, + 217, 0, 211, 0, 211, 0, 29, 0, 212, 0, + 212, 0, 0, 222, 0, 0, 0, 0, 222, 223, + 522, 0, 0, 218, -250, -250, 0, 224, 0, 0, + 218, 0, 0, 0, 326, 327, 0, 219, 222, 0, + 0, 227, 11, 227, 219, 0, 521, 228, 0, 228, + 0, 211, 0, 260, 211, 220, 0, 212, 0, 261, + 212, 60, 220, 0, 224, 9, 0, 0, 0, 0, + 213, 0, 213, 0, 0, 0, 0, 0, 211, 211, + 214, 0, 214, 223, 212, 212, 0, 0, 223, 0, + 227, 0, 227, 227, 294, 0, 228, 340, 228, 228, + 0, 0, 0, 221, 223, 223, 0, 0, 223, 0, + 221, 0, 215, 0, 215, 0, 0, 227, 227, 213, + 0, 213, 213, 228, 228, 0, 0, 0, 224, 214, + 0, 214, 214, 224, 0, 0, 0, 20, 94, 0, + 0, 216, 0, 216, 0, 225, 213, 213, 0, 224, + 224, 0, 0, 224, 0, 0, 214, 214, 0, 0, + 0, 215, 222, 215, 215, 0, 0, 0, 0, 430, + 0, 0, 0, 0, 0, 0, 0, 269, 270, 217, + 0, 217, 225, 275, 276, 277, 278, 0, 215, 215, + 216, 0, 216, 216, 0, 0, 0, 0, 0, 0, + 226, 0, 0, 282, 283, 284, 285, 286, 0, 218, + 0, 218, 0, 0, 0, 0, 0, 216, 216, 0, + 0, 0, 0, 219, 0, 219, 0, 0, 217, 0, + 217, 217, 223, 0, 0, 0, 0, 226, 0, 223, + 0, 220, 0, 220, 0, 0, 225, 0, 0, 0, + 0, 225, 269, 270, 0, 217, 217, 0, 218, 0, + 218, 218, 0, 0, 0, 0, 0, 225, 225, 0, + 0, 225, 219, 0, 219, 219, 0, 224, 282, 283, + 284, 285, 286, 0, 224, 218, 218, 0, 0, 221, + 220, 221, 220, 220, 0, 0, 477, 0, 0, 219, + 219, 226, 0, 0, 268, 0, 226, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 220, 220, 0, + 0, 0, 226, 226, 0, 0, 226, 0, 0, 0, + 279, 280, 281, 282, 283, 284, 285, 286, 221, 0, + 221, 221, 0, 0, 0, 0, 0, 0, 222, 0, + 222, 0, 0, 0, 0, 0, 336, 337, 0, 0, + 338, 339, 0, 0, 0, 221, 221, 99, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 0, 222, 0, 430, + 222, 0, 225, 0, 251, 0, 0, 255, 256, 0, + 0, 294, 0, 0, 340, 0, 0, 0, 223, 0, + 223, 341, 342, 0, 222, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 224, 0, 224, 0, - 223, 0, 223, 223, 20, 94, 0, 0, 0, 60, - 0, 0, 0, 9, 64, 65, 66, 67, 0, 225, - 0, 225, 0, 0, 0, 74, 0, 223, 223, 0, - 0, 80, 81, 82, 83, 84, 85, 0, 257, 0, - 306, 307, 175, 0, 0, 224, 0, 224, 224, 0, - 0, 269, 270, 322, 272, 273, 274, 275, 276, 277, - 278, 0, 226, 0, 226, 0, 0, 0, 225, 0, - 225, 225, 224, 224, 279, 280, 281, 282, 283, 284, - 285, 286, 0, 0, 0, 20, 94, 0, 0, 0, - 258, 259, 0, 0, 0, 225, 225, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 226, 0, 226, 226, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 0, 369, 370, 371, 372, - 373, 374, 375, 376, 0, 379, 0, 0, 226, 226, - 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 408, 421, 268, - 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 422, 0, 424, 269, 270, 431, 0, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 0, 0, 0, 0, 0, 279, 280, - 281, 282, 283, 284, 285, 286, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 0, 454, 156, + 348, 349, 350, 351, 352, 353, 0, 0, 0, 0, + 226, 0, 0, 0, 20, 94, 0, 226, 0, 0, + 60, 0, 0, 224, 9, 224, 0, 223, 0, 223, + 223, 0, 269, 270, 306, 307, 273, 274, 275, 276, + 277, 278, 0, 0, 0, 0, 0, 322, 0, 0, + 0, 0, 0, 294, 223, 223, 340, 0, 282, 283, + 284, 285, 286, 341, 342, 0, 0, 0, 0, 0, + 0, 0, 224, 0, 224, 224, 0, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 94, 0, 224, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 0, + 369, 370, 371, 372, 373, 374, 375, 376, 0, 379, + 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, + 0, 225, 0, 225, 0, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 409, 421, 268, 0, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 423, 0, 425, 0, + 225, 432, 225, 225, 0, 0, 226, 0, 226, 279, + 280, 281, 282, 283, 284, 285, 286, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 225, 225, 0, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 0, 455, 0, 60, 0, 0, 0, 9, 64, + 65, 66, 67, 0, 0, 226, 0, 226, 226, 0, + 74, 0, 0, 0, 0, 476, 80, 81, 82, 83, + 84, 85, 0, 0, 0, 0, 0, 175, 0, 0, + 0, 0, 226, 226, 0, 0, 0, 177, 178, 0, + 0, 0, 0, 0, 0, 379, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, + 0, 0, 9, 64, 65, 66, 67, 0, 0, 0, + 20, 94, 0, 0, 74, 500, 501, 502, 503, 504, + 80, 81, 82, 83, 84, 85, 0, 0, 0, 0, + 0, 175, 0, 269, 270, 508, 0, 273, 274, 275, + 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 509, 59, 0, 0, 0, 512, 280, 281, 282, + 283, 284, 285, 286, 0, 0, 513, 0, 0, 516, + 0, 518, 520, 0, 20, 94, 0, 0, 60, 61, + 62, 63, 9, 64, 65, 66, 67, 537, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 0, 0, + 0, 88, 0, 0, 0, 0, 0, 89, 0, 321, + 0, 561, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 91, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 157, 158, 0, 0, 159, 160, 0, 161, 162, 163, - 164, 475, 165, 166, 167, 168, 169, 170, 171, 172, - 60, 0, 0, 0, 9, 64, 65, 66, 67, 173, - 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, - 379, 0, 80, 81, 82, 83, 84, 85, 0, 0, - 0, 55, 174, 175, 0, 0, 0, 0, 0, 0, - 0, 176, 0, 177, 178, 0, 0, 0, 0, 0, - 498, 499, 500, 501, 502, 269, 270, 0, 0, 273, - 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, - 506, 0, 0, 0, 0, 0, 20, 94, 0, 280, - 0, 282, 283, 284, 285, 286, 507, 269, 270, 0, - 510, 273, 274, 275, 276, 277, 278, 59, 0, 0, - 511, 0, 0, 514, 0, 516, 518, 0, 0, 0, - 0, 0, 0, 282, 283, 284, 285, 286, 0, 0, - 0, 535, 0, 60, 61, 62, 63, 9, 64, 65, - 66, 67, 0, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 0, 0, 559, 88, 0, 0, 0, - 0, 60, 89, 0, 321, 9, 64, 65, 66, 67, - 0, 0, 0, 0, 0, 0, 0, 74, 90, 91, - 59, 0, 0, 80, 81, 82, 83, 84, 85, 0, - 0, 0, 0, 0, 175, 92, 0, 0, 93, 20, - 94, 36, 95, 96, 97, 98, 60, 61, 62, 63, - 9, 64, 65, 66, 67, 0, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 476, 20, 94, 407, - 253, 0, 0, 0, 268, 89, 0, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, - 0, 90, 91, 59, 0, 0, 0, 0, 0, 0, - 279, 280, 281, 282, 283, 284, 285, 286, 92, 0, - 0, 93, 20, 94, 36, 95, 96, 97, 98, 60, - 61, 62, 63, 9, 64, 65, 66, 67, 0, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 478, - 0, 0, 88, 0, 0, 0, 0, 268, 89, 0, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 0, 0, 0, 0, 90, 91, 59, 0, 0, 0, - 0, 0, 0, 279, 280, 281, 282, 283, 284, 285, - 286, 92, 0, 0, 93, 20, 94, 36, 95, 96, - 97, 98, 60, 61, 62, 63, 9, 64, 65, 66, - 67, 0, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 479, 0, 0, 407, 0, 0, 0, 0, - 268, 89, 0, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 0, 0, 0, 90, 91, 0, - 0, 0, 0, 0, 0, 0, 279, 280, 281, 282, - 283, 284, 285, 286, 92, 156, 0, 93, 20, 94, - 36, 95, 96, 97, 98, 0, 157, 158, 0, 0, + 92, 0, 0, 93, 20, 94, 36, 95, 96, 97, + 98, 60, 61, 62, 63, 9, 64, 65, 66, 67, + 0, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 0, 0, 0, 408, 253, 0, 0, 60, 0, + 89, 0, 9, 64, 65, 66, 67, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 90, 91, 59, 0, + 80, 81, 82, 83, 84, 85, 0, 257, 0, 0, + 0, 175, 0, 92, 0, 0, 93, 20, 94, 36, + 95, 96, 97, 98, 60, 61, 62, 63, 9, 64, + 65, 66, 67, 0, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 20, 94, 0, 88, 0, 258, + 259, 422, 268, 89, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 0, 0, 0, 0, 90, + 91, 59, 0, 0, 0, 0, 0, 0, 279, 280, + 281, 282, 283, 284, 285, 286, 92, 0, 0, 93, + 20, 94, 36, 95, 96, 97, 98, 60, 61, 62, + 63, 9, 64, 65, 66, 67, 0, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 480, 0, 0, + 408, 0, 0, 0, 0, 268, 89, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 0, 0, + 0, 0, 90, 91, 0, 0, 0, 0, 0, 0, + 0, 279, 280, 281, 282, 283, 284, 285, 286, 92, + 156, 0, 93, 20, 94, 36, 95, 96, 97, 98, + 0, 157, 158, 0, 0, 159, 160, 0, 161, 162, + 163, 164, 0, 165, 166, 167, 168, 169, 170, 171, + 172, 60, 0, 0, 0, 9, 64, 65, 66, 67, + 173, 0, 0, 0, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 80, 81, 82, 83, 84, 85, 0, + 0, 0, 55, 174, 175, 156, 0, 0, 0, 0, + 0, 0, 176, 0, 177, 178, 157, 158, 0, 0, 159, 160, 0, 161, 162, 163, 164, 0, 165, 166, 167, 168, 169, 170, 171, 172, 60, 0, 0, 0, - 9, 64, 65, 66, 67, 173, 0, 0, 0, 0, + 9, 64, 65, 66, 67, 173, 0, 20, 94, 0, 0, 0, 74, 0, 0, 0, 0, 0, 80, 81, 82, 83, 84, 85, 0, 0, 0, 55, 328, 175, 0, 302, 0, 0, 0, 0, 0, 329, 0, 177, @@ -4823,334 +4827,337 @@ namespace xsk { namespace arc { 172, 60, 0, 0, 0, 9, 64, 65, 66, 67, 173, 0, 20, 94, 0, 0, 0, 74, 0, 0, 0, 0, 0, 80, 81, 82, 83, 84, 85, 0, - 0, 0, 55, 0, 175, 0, 417, 0, 0, 0, + 0, 0, 55, 0, 175, 0, 418, 0, 0, 0, 0, 0, 303, 0, 177, 178, 157, 158, 0, 0, 159, 160, 0, 161, 162, 163, 164, 0, 165, 166, 167, 168, 169, 170, 171, 172, 60, 0, 0, 0, 9, 64, 65, 66, 67, 173, 0, 20, 94, 0, 0, 0, 74, 0, 0, 0, 0, 0, 80, 81, 82, 83, 84, 85, 0, 0, 0, 55, 0, 175, - 0, 0, 0, 0, 0, 0, 0, 418, 0, 177, + 0, 0, 0, 0, 0, 0, 0, 419, 0, 177, 178, 157, 158, 0, 0, 159, 160, 0, 161, 162, 163, 164, 0, 165, 166, 167, 168, 169, 170, 171, 172, 60, 0, 0, 0, 9, 64, 65, 66, 67, - 173, 0, 20, 94, 60, 0, 0, 74, 9, 64, - 65, 66, 67, 80, 81, 82, 83, 84, 85, 0, - 74, 0, 55, 0, 175, 0, 80, 81, 82, 83, - 84, 85, 0, 0, 177, 178, 0, 175, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 177, 178, 0, - 0, 0, 0, 0, 377, 0, 0, 0, 0, 378, - 0, 0, 0, 0, 0, 0, 268, 20, 94, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, - 20, 94, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 280, 281, 282, 283, 284, 285, 286, - 525, 0, 0, 0, 0, 526, 0, 0, 0, 0, - 0, 0, 268, 0, 0, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 279, 280, - 281, 282, 283, 284, 285, 286, 527, 0, 0, 0, - 0, 528, 0, 0, 0, 0, 0, 0, 268, 0, - 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 279, 280, 281, 282, 283, 284, - 285, 286, 529, 0, 0, 0, 0, 530, 0, 0, - 0, 0, 0, 0, 268, 458, 0, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 0, 459, - 0, 0, 0, 279, 280, 281, 282, 283, 284, 285, - 286, 268, 460, 0, 269, 270, 271, 272, 273, 274, + 173, 0, 20, 94, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 80, 81, 82, 83, 84, 85, 0, + 0, 0, 55, 0, 175, 0, 0, 0, 0, 0, + 0, 377, 0, 0, 177, 178, 378, 0, 0, 0, + 0, 0, 0, 268, 0, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 94, 279, + 280, 281, 282, 283, 284, 285, 286, 527, 0, 269, + 270, 0, 528, 273, 274, 275, 276, 277, 278, 268, + 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 0, 0, 0, 0, 0, 279, 280, 281, 282, 283, + 284, 285, 286, 529, 0, 269, 270, 0, 530, 273, + 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 0, 280, + 0, 282, 283, 284, 285, 286, 0, 0, 0, 0, + 0, 279, 280, 281, 282, 283, 284, 285, 286, 531, + 0, 0, 0, 0, 532, 0, 0, 0, 0, 0, + 0, 268, 459, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 0, 461, 0, 0, 0, - 279, 280, 281, 282, 283, 284, 285, 286, 268, 462, + 282, 283, 284, 285, 286, 0, 460, 0, 0, 0, + 279, 280, 281, 282, 283, 284, 285, 286, 268, 461, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 0, 463, 0, 0, 0, 279, 280, 281, - 282, 283, 284, 285, 286, 268, 464, 0, 269, 270, + 285, 286, 0, 462, 0, 0, 0, 279, 280, 281, + 282, 283, 284, 285, 286, 268, 463, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 0, - 465, 0, 0, 0, 279, 280, 281, 282, 283, 284, - 285, 286, 268, 466, 0, 269, 270, 271, 272, 273, + 464, 0, 0, 0, 279, 280, 281, 282, 283, 284, + 285, 286, 268, 465, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 0, 467, 0, 0, + 281, 282, 283, 284, 285, 286, 0, 466, 0, 0, 0, 279, 280, 281, 282, 283, 284, 285, 286, 268, - 468, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 467, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 0, 469, 0, 0, 0, 279, 280, - 281, 282, 283, 284, 285, 286, 268, 470, 0, 269, + 284, 285, 286, 0, 468, 0, 0, 0, 279, 280, + 281, 282, 283, 284, 285, 286, 268, 469, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 0, 471, 0, 0, 0, 279, 280, 281, 282, 283, - 284, 285, 286, 268, 472, 0, 269, 270, 271, 272, + 0, 470, 0, 0, 0, 279, 280, 281, 282, 283, + 284, 285, 286, 268, 471, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 0, 474, 0, + 280, 281, 282, 283, 284, 285, 286, 0, 472, 0, 0, 0, 279, 280, 281, 282, 283, 284, 285, 286, - 268, 377, 0, 269, 270, 271, 272, 273, 274, 275, + 268, 473, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 0, 489, 0, 0, 0, 279, - 280, 281, 282, 283, 284, 285, 286, 268, 491, 0, + 283, 284, 285, 286, 0, 475, 0, 0, 0, 279, + 280, 281, 282, 283, 284, 285, 286, 268, 377, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 0, 495, 0, 0, 0, 279, 280, 281, 282, - 283, 284, 285, 286, 268, 524, 0, 269, 270, 271, + 286, 0, 491, 0, 0, 0, 279, 280, 281, 282, + 283, 284, 285, 286, 268, 493, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 0, 533, + 279, 280, 281, 282, 283, 284, 285, 286, 0, 497, 0, 0, 0, 279, 280, 281, 282, 283, 284, 285, - 286, 268, 534, 0, 269, 270, 271, 272, 273, 274, + 286, 268, 526, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 0, 539, 0, 0, 0, - 279, 280, 281, 282, 283, 284, 285, 286, 268, 541, + 282, 283, 284, 285, 286, 0, 535, 0, 0, 0, + 279, 280, 281, 282, 283, 284, 285, 286, 268, 536, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 0, 553, 0, 0, 0, 279, 280, 281, - 282, 283, 284, 285, 286, 268, 566, 0, 269, 270, + 285, 286, 0, 541, 0, 0, 0, 279, 280, 281, + 282, 283, 284, 285, 286, 268, 543, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 0, - 0, 0, 0, 0, 279, 280, 281, 282, 283, 284, - 285, 286, 480, 0, 0, 0, 0, 0, 0, 0, - 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 279, 280, 281, 282, - 283, 284, 285, 286, 481, 0, 0, 0, 0, 0, - 0, 0, 268, 0, 0, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 279, 280, - 281, 282, 283, 284, 285, 286, 482, 0, 0, 0, - 0, 0, 0, 0, 268, 0, 0, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, + 555, 0, 0, 0, 279, 280, 281, 282, 283, 284, + 285, 286, 268, 568, 0, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 268, 0, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 0, 0, 0, 0, + 0, 279, 280, 281, 282, 283, 284, 285, 286, 481, + 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 279, 280, 281, 282, 283, 284, 285, + 286, 482, 0, 0, 0, 0, 0, 0, 0, 268, + 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 279, 280, 281, 282, 283, + 284, 285, 286, 483, 0, 0, 0, 0, 0, 0, + 0, 268, 0, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 280, 281, + 282, 283, 284, 285, 286, 484, 0, 0, 0, 0, + 0, 0, 0, 268, 0, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 280, 281, 282, 283, 284, 285, 286, 485, 0, 0, + 0, 0, 0, 0, 0, 268, 0, 0, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 279, 280, 281, 282, 283, 284, 285, 286, 483, 0, - 0, 0, 0, 0, 0, 0, 268, 0, 0, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, + 0, 279, 280, 281, 282, 283, 284, 285, 286, 486, + 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 280, 281, 282, 283, 284, 285, 286, - 484, 0, 0, 0, 0, 0, 0, 0, 268, 0, - 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 279, 280, 281, 282, 283, 284, - 285, 286, 485, 0, 0, 0, 0, 0, 0, 0, - 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 279, 280, 281, 282, - 283, 284, 285, 286, 503, 0, 0, 0, 0, 0, + 0, 0, 0, 279, 280, 281, 282, 283, 284, 285, + 286, 487, 0, 0, 0, 0, 0, 0, 0, 268, + 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 279, 280, 281, 282, 283, + 284, 285, 286, 505, 0, 0, 0, 0, 0, 0, + 0, 268, 0, 0, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 280, 281, + 282, 283, 284, 285, 286, 458, 0, 0, 0, 0, 0, 0, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, 280, - 281, 282, 283, 284, 285, 286, 457, 0, 0, 0, + 281, 282, 283, 284, 285, 286, 474, 0, 0, 0, 0, 0, 0, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 280, 281, 282, 283, 284, 285, 286, 473, 0, 0, + 280, 281, 282, 283, 284, 285, 286, 510, 0, 0, 0, 0, 0, 0, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 279, 280, 281, 282, 283, 284, 285, 286, 508, 0, - 0, 0, 0, 0, 0, 268, 0, 0, 269, 270, + 279, 280, 281, 282, 283, 284, 285, 286, 479, 0, + 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 279, 280, 281, 282, + 283, 284, 285, 286, 435, 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 279, 280, 281, 282, 283, 284, 285, 286, 477, - 0, 268, 0, 0, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 279, 280, 281, - 282, 283, 284, 285, 286, 434, 268, 0, 0, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 0, + 0, 279, 280, 281, 282, 283, 284, 285, 286, 525, + 268, 0, 0, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 268, 0, 0, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 0, 0, 0, 0, 0, 279, + 280, 281, 282, 283, 284, 285, 286, 269, 270, 0, + 272, 273, 274, 275, 276, 277, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 280, 281, 282, 283, 284, 285, 286, - 523, 268, 0, 0, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 268, 0, 0, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 0, 0, 0, 0, 0, 279, 280, 281, 282, 283, 284, 285, 286 }; const short parser::yycheck_[] = { - 0, 312, 312, 312, 24, 299, 6, 7, 8, 3, - 4, 35, 134, 13, 48, 39, 55, 39, 52, 53, - 54, 134, 55, 39, 39, 26, 107, 111, 112, 323, - 324, 35, 113, 33, 64, 39, 117, 35, 38, 39, - 40, 39, 35, 0, 68, 64, 39, 71, 76, 49, - 76, 65, 68, 92, 113, 55, 70, 68, 69, 92, - 60, 55, 356, 156, 68, 64, 60, 71, 161, 70, - 68, 64, 64, 71, 65, 68, 65, 65, 71, 70, - 65, 70, 70, 64, 55, 70, 65, 111, 112, 89, - 112, 70, 92, 65, 55, 111, 112, 112, 92, 65, - 222, 65, 92, 76, 70, 65, 70, 111, 112, 222, - 70, 65, 64, 111, 112, 65, 70, 156, 111, 112, - 70, 92, 161, 156, 65, 112, 55, 66, 161, 70, - 64, 92, 64, 526, 134, 528, 64, 530, 177, 178, - 134, 64, 181, 265, 177, 178, 166, 64, 181, 108, - 109, 110, 265, 64, 64, 55, 156, 38, 39, 40, - 35, 161, 156, 92, 39, 64, 64, 161, 4, 5, - 6, 7, 8, 173, 10, 11, 12, 177, 178, 64, - 64, 181, 64, 177, 178, 156, 64, 181, 64, 68, - 161, 64, 92, 68, 488, 156, 71, 55, 64, 64, - 161, 68, 64, 39, 326, 327, 177, 178, 68, 64, - 181, 505, 305, 326, 327, 74, 177, 178, 68, 68, - 181, 68, 222, 68, 76, 71, 74, 156, 222, 540, - 540, 540, 161, 64, 92, 64, 111, 112, 64, 64, - 76, 75, 536, 106, 107, 108, 109, 110, 177, 178, - 64, 64, 181, 76, 35, 76, 156, 551, 39, 55, - 68, 161, 65, 74, 76, 265, 305, 55, 68, 76, - 76, 265, 305, 312, 76, 76, 112, 177, 178, 312, - 64, 181, 64, 74, 39, 23, 75, 68, 75, 117, - 71, 64, 64, 92, 64, 64, 92, 112, 156, 64, - 300, 55, 64, 161, 92, 305, 64, 429, 76, 69, - 35, 305, 312, 313, 39, 76, 429, 76, 312, 177, - 178, 69, 64, 181, 76, 21, 326, 327, 26, 76, - 111, 112, 326, 327, 305, 76, 76, 76, 92, 76, - 55, 312, 64, 68, 305, 65, 71, 70, 65, 65, - 76, 312, 65, 13, 354, 35, 13, 357, 55, 39, - 156, 13, 76, 181, 76, 161, 540, 35, 156, 166, - 49, 39, -1, 161, 92, -1, 305, 92, -1, -1, - -1, 177, 178, 312, -1, 181, 111, 112, 68, 177, - 178, 71, -1, 181, -1, 92, 489, -1, 491, -1, - 68, -1, 156, 71, -1, 305, 35, 161, -1, -1, - 39, -1, 312, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 177, 178, -1, -1, 181, -1, 429, - -1, 111, 112, -1, 35, 429, -1, -1, 39, 68, - -1, 156, 71, 111, 112, 538, 161, 305, 541, -1, - 489, -1, 491, -1, 312, -1, 489, -1, 491, 156, - -1, 495, 177, 178, 161, -1, 181, 68, -1, -1, - 71, -1, 565, 566, -1, -1, -1, 55, -1, -1, - 177, 178, 111, 112, 181, -1, -1, -1, -1, 489, - -1, 491, -1, -1, 494, 489, -1, 491, -1, 538, - -1, 540, 541, -1, -1, 538, -1, 540, 541, 305, - 111, 112, -1, -1, 92, -1, 312, 305, 489, -1, - 491, -1, 55, -1, 312, -1, 565, 566, 489, -1, - 491, -1, 565, 566, -1, -1, -1, -1, 538, -1, - 540, 541, -1, -1, 538, 55, 540, 541, -1, -1, - -1, 305, -1, -1, -1, -1, -1, -1, 312, 92, - 489, -1, 491, -1, -1, 565, 566, 538, -1, 540, - 541, 565, 566, -1, -1, -1, -1, 538, 156, 540, - 541, -1, 92, 161, -1, -1, -1, -1, 55, 489, - 305, 491, 80, 81, 565, 566, -1, 312, -1, 177, - 178, -1, -1, 181, 565, 566, -1, -1, 305, 538, - -1, 540, 541, -1, -1, 312, -1, -1, 106, 107, - 108, 109, 110, 156, -1, 92, -1, -1, 161, -1, - -1, 489, -1, 491, -1, -1, 565, 566, 538, -1, - 540, 541, -1, -1, 177, 178, 156, -1, 181, -1, - -1, 161, 4, 5, 6, 7, 8, -1, 10, 11, - 12, -1, -1, -1, -1, 565, 566, 177, 178, -1, - -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, - 538, -1, 540, 541, -1, -1, -1, 39, -1, 156, - 80, 81, -1, 489, 161, 491, 86, 87, 88, 89, - -1, 489, -1, 491, -1, -1, -1, 565, 566, -1, - 177, 178, -1, -1, 181, -1, 106, 107, 108, 109, - 110, -1, -1, -1, 76, -1, -1, 305, -1, -1, - -1, -1, -1, -1, 312, 489, -1, 491, -1, -1, - -1, -1, 538, -1, 540, 541, -1, -1, -1, -1, - 538, -1, 540, 541, -1, -1, -1, -1, -1, -1, - 112, -1, -1, -1, -1, -1, -1, -1, -1, 565, - 566, -1, 305, -1, 489, -1, 491, 565, 566, 312, - -1, -1, -1, -1, 538, -1, 540, 541, -1, -1, - -1, -1, 489, -1, 491, 305, 35, -1, -1, -1, - 39, -1, 312, -1, -1, -1, -1, -1, -1, -1, - -1, 565, 566, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 538, -1, 540, 541, -1, -1, 68, - -1, -1, 71, -1, -1, -1, -1, -1, 305, 78, - 79, 538, -1, 540, 541, 312, -1, -1, -1, -1, - 565, 566, -1, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, -1, -1, 13, 14, 565, 566, - 17, 18, 111, 112, 76, 77, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 35, -1, - 80, 81, 39, 50, 84, 85, 86, 87, 88, 89, - -1, 103, 104, 105, 106, 107, 108, 109, 110, -1, - -1, 489, -1, 491, 104, 105, 106, 107, 108, 109, - 110, 68, -1, -1, 71, -1, -1, -1, -1, -1, - 87, 78, 79, 90, 91, -1, -1, -1, -1, -1, + 0, 312, 64, 312, 312, 134, 6, 7, 8, 3, + 4, 24, 134, 13, 26, 39, 55, 39, 39, 65, + 0, 48, 55, 65, 70, 52, 53, 54, 70, 65, + 156, 76, 35, 33, 70, 161, 39, 35, 38, 39, + 40, 39, 107, 35, 68, 76, 65, 39, 113, 49, + 299, 70, 117, 92, 64, 55, 113, 65, 70, 92, + 60, 55, 70, 65, 65, 68, 60, 64, 71, 70, + 68, 64, 64, 71, 323, 324, 68, 92, 65, 71, + 65, 64, 35, 70, 55, 70, 39, 111, 112, 89, + 112, 112, 92, 222, 55, 76, 65, 65, 92, 65, + 222, 70, 70, 66, 70, 65, 64, 356, 111, 112, + 70, 68, 69, 111, 112, 68, 64, 156, 71, 111, + 112, 92, 161, 156, 64, 528, 55, 530, 161, 532, + 64, 92, 111, 112, 134, 112, 265, 64, 177, 178, + 134, 64, 181, 265, 177, 178, 64, 64, 181, 108, + 109, 110, 64, 166, 64, 55, 156, 64, 111, 112, + 64, 161, 156, 92, 38, 39, 40, 161, 4, 5, + 6, 7, 8, 173, 10, 11, 12, 177, 178, 305, + 64, 181, 64, 177, 178, 156, 64, 181, 64, 64, + 161, 64, 92, 55, 64, 156, 76, 326, 327, 68, + 161, 68, 74, 39, 326, 327, 177, 178, 68, 35, + 181, 35, 68, 39, 68, 39, 177, 178, 68, 68, + 181, 35, 222, 55, 71, 39, 74, 156, 222, 64, + 92, 542, 161, 542, 542, 64, 64, 55, 75, 64, + 76, 490, 68, 64, 68, 71, 76, 71, 177, 178, + 65, 64, 181, 76, 68, 55, 156, 71, 507, 64, + 92, 161, 68, 74, 76, 265, 305, 76, 76, 76, + 64, 265, 305, 312, 92, 76, 112, 177, 178, 312, + 68, 181, 64, 74, 74, 111, 112, 111, 112, 538, + 39, 23, 92, 92, 156, 117, 75, 111, 112, 161, + 300, 430, 75, 55, 553, 305, 64, 64, 430, 64, + 64, 305, 312, 313, 112, 177, 178, 35, 312, 181, + 112, 39, 64, 64, 156, 76, 326, 327, 64, 161, + 69, 76, 326, 327, 305, 69, 76, 64, 156, 21, + 92, 312, 26, 161, 305, 177, 178, 76, 76, 181, + 68, 312, 76, 71, 354, 76, 156, 357, 64, 177, + 178, 161, 55, 181, 76, 491, 76, 493, 70, 65, + 35, 65, 76, 65, 39, 65, 305, 177, 178, 76, + 13, 181, 13, 312, 4, 5, 6, 7, 8, 76, + 10, 11, 12, 111, 112, 13, 181, 542, 35, 92, + 49, 92, 39, 68, 156, 305, 71, 166, -1, 161, + -1, -1, 312, -1, 540, -1, -1, 543, -1, 39, + 106, 107, 108, 109, 110, 177, 178, -1, -1, 181, + 430, 68, 55, -1, 71, -1, 430, -1, -1, -1, + -1, 567, 568, 305, -1, -1, 111, 112, -1, -1, + 312, -1, 491, -1, 493, -1, 76, -1, 491, -1, + 493, -1, -1, 156, -1, -1, -1, -1, 161, 92, + 497, -1, -1, 305, 111, 112, -1, 55, -1, -1, + 312, -1, -1, -1, 177, 178, -1, 305, 181, -1, + -1, 491, 112, 493, 312, -1, 496, 491, -1, 493, + -1, 540, -1, 542, 543, 305, -1, 540, -1, 542, + 543, 35, 312, -1, 92, 39, -1, -1, -1, -1, + 491, -1, 493, -1, -1, -1, -1, -1, 567, 568, + 491, -1, 493, 156, 567, 568, -1, -1, 161, -1, + 540, -1, 542, 543, 68, -1, 540, 71, 542, 543, + -1, -1, -1, 305, 177, 178, -1, -1, 181, -1, + 312, -1, 491, -1, 493, -1, -1, 567, 568, 540, + -1, 542, 543, 567, 568, -1, -1, -1, 156, 540, + -1, 542, 543, 161, -1, -1, -1, 111, 112, -1, + -1, 491, -1, 493, -1, 55, 567, 568, -1, 177, + 178, -1, -1, 181, -1, -1, 567, 568, -1, -1, + -1, 540, 305, 542, 543, -1, -1, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, 80, 81, 491, + -1, 493, 92, 86, 87, 88, 89, -1, 567, 568, + 540, -1, 542, 543, -1, -1, -1, -1, -1, -1, + 55, -1, -1, 106, 107, 108, 109, 110, -1, 491, + -1, 493, -1, -1, -1, -1, -1, 567, 568, -1, + -1, -1, -1, 491, -1, 493, -1, -1, 540, -1, + 542, 543, 305, -1, -1, -1, -1, 92, -1, 312, + -1, 491, -1, 493, -1, -1, 156, -1, -1, -1, + -1, 161, 80, 81, -1, 567, 568, -1, 540, -1, + 542, 543, -1, -1, -1, -1, -1, 177, 178, -1, + -1, 181, 540, -1, 542, 543, -1, 305, 106, 107, + 108, 109, 110, -1, 312, 567, 568, -1, -1, 491, + 540, 493, 542, 543, -1, -1, 69, -1, -1, 567, + 568, 156, -1, -1, 77, -1, 161, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 567, 568, -1, + -1, -1, 177, 178, -1, -1, 181, -1, -1, -1, + 103, 104, 105, 106, 107, 108, 109, 110, 540, -1, + 542, 543, -1, -1, -1, -1, -1, -1, 491, -1, + 493, -1, -1, -1, -1, -1, 13, 14, -1, -1, + 17, 18, -1, -1, -1, 567, 568, 50, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, + -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 305, -1, 540, -1, 542, + 543, -1, 312, -1, 87, -1, -1, 90, 91, -1, + -1, 68, -1, -1, 71, -1, -1, -1, 491, -1, + 493, 78, 79, -1, 567, 568, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 489, -1, 491, -1, - 538, -1, 540, 541, 111, 112, -1, -1, -1, 35, - -1, -1, -1, 39, 40, 41, 42, 43, -1, 489, - -1, 491, -1, -1, -1, 51, -1, 565, 566, -1, - -1, 57, 58, 59, 60, 61, 62, -1, 64, -1, - 157, 158, 68, -1, -1, 538, -1, 540, 541, -1, - -1, 80, 81, 170, 83, 84, 85, 86, 87, 88, - 89, -1, 489, -1, 491, -1, -1, -1, 538, -1, - 540, 541, 565, 566, 103, 104, 105, 106, 107, 108, - 109, 110, -1, -1, -1, 111, 112, -1, -1, -1, - 116, 117, -1, -1, -1, 565, 566, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 538, -1, 540, 541, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, -1, 243, 244, 245, 246, - 247, 248, 249, 250, -1, 252, -1, -1, 565, 566, - 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 76, 77, - -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 309, -1, 311, 80, 81, 314, -1, 84, - 85, 86, 87, 88, 89, 103, 104, 105, 106, 107, - 108, 109, 110, -1, -1, -1, -1, -1, 103, 104, - 105, 106, 107, 108, 109, 110, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, -1, 355, 4, + 97, 98, 99, 100, 101, 102, -1, -1, -1, -1, + 305, -1, -1, -1, 111, 112, -1, 312, -1, -1, + 35, -1, -1, 491, 39, 493, -1, 540, -1, 542, + 543, -1, 80, 81, 157, 158, 84, 85, 86, 87, + 88, 89, -1, -1, -1, -1, -1, 170, -1, -1, + -1, -1, -1, 68, 567, 568, 71, -1, 106, 107, + 108, 109, 110, 78, 79, -1, -1, -1, -1, -1, + -1, -1, 540, -1, 542, 543, -1, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, -1, -1, + -1, -1, -1, -1, -1, -1, 111, 112, -1, 567, + 568, -1, -1, -1, -1, -1, -1, -1, -1, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, -1, + 243, 244, 245, 246, 247, 248, 249, 250, -1, 252, + -1, -1, -1, -1, 257, -1, -1, -1, -1, -1, + -1, 491, -1, 493, -1, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 76, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 309, -1, 311, -1, + 540, 314, 542, 543, -1, -1, 491, -1, 493, 103, + 104, 105, 106, 107, 108, 109, 110, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 567, 568, -1, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, -1, 355, -1, 35, -1, -1, -1, 39, 40, + 41, 42, 43, -1, -1, 540, -1, 542, 543, -1, + 51, -1, -1, -1, -1, 378, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, -1, 68, -1, -1, + -1, -1, 567, 568, -1, -1, -1, 78, 79, -1, + -1, -1, -1, -1, -1, 408, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, + -1, -1, 39, 40, 41, 42, 43, -1, -1, -1, + 111, 112, -1, -1, 51, 438, 439, 440, 441, 442, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + -1, 68, -1, 80, 81, 458, -1, 84, 85, 86, + 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, 474, 9, -1, -1, -1, 479, 104, 105, 106, + 107, 108, 109, 110, -1, -1, 489, -1, -1, 492, + -1, 494, 495, -1, 111, 112, -1, -1, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 510, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, -1, -1, + -1, 68, -1, -1, -1, -1, -1, 74, -1, 76, + -1, 544, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 90, 91, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 15, 16, -1, -1, 19, 20, -1, 22, 23, 24, - 25, 378, 27, 28, 29, 30, 31, 32, 33, 34, - 35, -1, -1, -1, 39, 40, 41, 42, 43, 44, - -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, - 407, -1, 57, 58, 59, 60, 61, 62, -1, -1, - -1, 66, 67, 68, -1, -1, -1, -1, -1, -1, - -1, 76, -1, 78, 79, -1, -1, -1, -1, -1, - 437, 438, 439, 440, 441, 80, 81, -1, -1, 84, - 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, - 457, -1, -1, -1, -1, -1, 111, 112, -1, 104, - -1, 106, 107, 108, 109, 110, 473, 80, 81, -1, - 477, 84, 85, 86, 87, 88, 89, 9, -1, -1, - 487, -1, -1, 490, -1, 492, 493, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, 508, -1, 35, 36, 37, 38, 39, 40, 41, - 42, 43, -1, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, -1, -1, 542, 68, -1, -1, -1, - -1, 35, 74, -1, 76, 39, 40, 41, 42, 43, - -1, -1, -1, -1, -1, -1, -1, 51, 90, 91, - 9, -1, -1, 57, 58, 59, 60, 61, 62, -1, - -1, -1, -1, -1, 68, 107, -1, -1, 110, 111, - 112, 113, 114, 115, 116, 117, 35, 36, 37, 38, - 39, 40, 41, 42, 43, -1, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 69, 111, 112, 68, - 69, -1, -1, -1, 77, 74, -1, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, - -1, 90, 91, 9, -1, -1, -1, -1, -1, -1, - 103, 104, 105, 106, 107, 108, 109, 110, 107, -1, - -1, 110, 111, 112, 113, 114, 115, 116, 117, 35, - 36, 37, 38, 39, 40, 41, 42, 43, -1, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 69, - -1, -1, 68, -1, -1, -1, -1, 77, 74, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - -1, -1, -1, -1, 90, 91, 9, -1, -1, -1, - -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 107, -1, -1, 110, 111, 112, 113, 114, 115, - 116, 117, 35, 36, 37, 38, 39, 40, 41, 42, - 43, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 69, -1, -1, 68, -1, -1, -1, -1, - 77, 74, -1, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, -1, -1, -1, -1, 90, 91, -1, - -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, - 107, 108, 109, 110, 107, 4, -1, 110, 111, 112, - 113, 114, 115, 116, 117, -1, 15, 16, -1, -1, + 107, -1, -1, 110, 111, 112, 113, 114, 115, 116, + 117, 35, 36, 37, 38, 39, 40, 41, 42, 43, + -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, -1, -1, -1, 68, 69, -1, -1, 35, -1, + 74, -1, 39, 40, 41, 42, 43, -1, -1, -1, + -1, -1, -1, -1, 51, -1, 90, 91, 9, -1, + 57, 58, 59, 60, 61, 62, -1, 64, -1, -1, + -1, 68, -1, 107, -1, -1, 110, 111, 112, 113, + 114, 115, 116, 117, 35, 36, 37, 38, 39, 40, + 41, 42, 43, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 111, 112, -1, 68, -1, 116, + 117, 76, 77, 74, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, -1, -1, -1, -1, 90, + 91, 9, -1, -1, -1, -1, -1, -1, 103, 104, + 105, 106, 107, 108, 109, 110, 107, -1, -1, 110, + 111, 112, 113, 114, 115, 116, 117, 35, 36, 37, + 38, 39, 40, 41, 42, 43, -1, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 69, -1, -1, + 68, -1, -1, -1, -1, 77, 74, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, + -1, -1, 90, 91, -1, -1, -1, -1, -1, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 107, + 4, -1, 110, 111, 112, 113, 114, 115, 116, 117, + -1, 15, 16, -1, -1, 19, 20, -1, 22, 23, + 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, + 34, 35, -1, -1, -1, 39, 40, 41, 42, 43, + 44, -1, -1, -1, -1, -1, -1, 51, -1, -1, + -1, -1, -1, 57, 58, 59, 60, 61, 62, -1, + -1, -1, 66, 67, 68, 4, -1, -1, -1, -1, + -1, -1, 76, -1, 78, 79, 15, 16, -1, -1, 19, 20, -1, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, - 39, 40, 41, 42, 43, 44, -1, -1, -1, -1, + 39, 40, 41, 42, 43, 44, -1, 111, 112, -1, -1, -1, 51, -1, -1, -1, -1, -1, 57, 58, 59, 60, 61, 62, -1, -1, -1, 66, 67, 68, -1, 5, -1, -1, -1, -1, -1, 76, -1, 78, @@ -5170,32 +5177,25 @@ namespace xsk { namespace arc { 79, 15, 16, -1, -1, 19, 20, -1, 22, 23, 24, 25, -1, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, 39, 40, 41, 42, 43, - 44, -1, 111, 112, 35, -1, -1, 51, 39, 40, - 41, 42, 43, 57, 58, 59, 60, 61, 62, -1, - 51, -1, 66, -1, 68, -1, 57, 58, 59, 60, - 61, 62, -1, -1, 78, 79, -1, 68, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 78, 79, -1, - -1, -1, -1, -1, 65, -1, -1, -1, -1, 70, - -1, -1, -1, -1, -1, -1, 77, 111, 112, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, - 111, 112, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, - 65, -1, -1, -1, -1, 70, -1, -1, -1, -1, - -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 103, 104, - 105, 106, 107, 108, 109, 110, 65, -1, -1, -1, - -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, - -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 103, 104, 105, 106, 107, 108, - 109, 110, 65, -1, -1, -1, -1, 70, -1, -1, - -1, -1, -1, -1, 77, 65, -1, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 77, -1, -1, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 103, 104, 105, 106, 107, 108, 109, 110, -1, 65, - -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 77, 65, -1, 80, 81, 82, 83, 84, 85, + 44, -1, 111, 112, -1, -1, -1, 51, -1, -1, + -1, -1, -1, 57, 58, 59, 60, 61, 62, -1, + -1, -1, 66, -1, 68, -1, -1, -1, -1, -1, + -1, 65, -1, -1, 78, 79, 70, -1, -1, -1, + -1, -1, -1, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 111, 112, 103, + 104, 105, 106, 107, 108, 109, 110, 65, -1, 80, + 81, -1, 70, 84, 85, 86, 87, 88, 89, 77, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 103, 104, 105, 106, 107, 108, 109, 110, + -1, -1, -1, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 65, -1, 80, 81, -1, 70, 84, + 85, 86, 87, 88, 89, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, 104, + -1, 106, 107, 108, 109, 110, -1, -1, -1, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 65, + -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, + -1, 77, 65, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 103, 104, 105, 106, 107, 108, 109, 110, -1, 65, -1, -1, -1, @@ -5255,33 +5255,46 @@ namespace xsk { namespace arc { 82, 83, 84, 85, 86, 87, 88, 89, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 103, 104, 105, 106, 107, 108, 109, 110, -1, - -1, -1, -1, -1, 103, 104, 105, 106, 107, 108, - 109, 110, 69, -1, -1, -1, -1, -1, -1, -1, - 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, - 107, 108, 109, 110, 69, -1, -1, -1, -1, -1, - -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 103, 104, - 105, 106, 107, 108, 109, 110, 69, -1, -1, -1, - -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, + 65, -1, -1, -1, 103, 104, 105, 106, 107, 108, + 109, 110, 77, 65, -1, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 103, 104, + 105, 106, 107, 108, 109, 110, -1, -1, -1, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 69, + -1, -1, -1, -1, -1, -1, -1, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 103, 104, 105, 106, 107, 108, 109, 110, 69, -1, - -1, -1, -1, -1, -1, -1, 77, -1, -1, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, + -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 69, -1, -1, -1, -1, -1, -1, -1, 77, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 69, -1, -1, -1, -1, -1, -1, + -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 69, -1, -1, -1, -1, + -1, -1, -1, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 69, -1, -1, + -1, -1, -1, -1, -1, 77, -1, -1, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, - 69, -1, -1, -1, -1, -1, -1, -1, 77, -1, - -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 103, 104, 105, 106, 107, 108, - 109, 110, 69, -1, -1, -1, -1, -1, -1, -1, - 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, - 107, 108, 109, 110, 69, -1, -1, -1, -1, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 69, + -1, -1, -1, -1, -1, -1, -1, 77, -1, -1, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, + 110, 69, -1, -1, -1, -1, -1, -1, -1, 77, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 103, 104, 105, 106, 107, + 108, 109, 110, 69, -1, -1, -1, -1, -1, -1, + -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, + 106, 107, 108, 109, 110, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 103, 104, @@ -5293,22 +5306,21 @@ namespace xsk { namespace arc { -1, -1, -1, -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 103, 104, 105, 106, 107, 108, 109, 110, 70, -1, - -1, -1, -1, -1, -1, 77, -1, -1, 80, 81, + 103, 104, 105, 106, 107, 108, 109, 110, 75, -1, + 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 103, 104, 105, 106, + 107, 108, 109, 110, 76, 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 103, 104, 105, 106, 107, 108, 109, 110, 75, - -1, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, - 106, 107, 108, 109, 110, 76, 77, -1, -1, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, -1, + -1, 103, 104, 105, 106, 107, 108, 109, 110, 76, + 77, -1, -1, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 77, -1, -1, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 103, 104, 105, 106, + 107, 108, 109, 110, -1, -1, -1, -1, -1, 103, + 104, 105, 106, 107, 108, 109, 110, 80, 81, -1, + 83, 84, 85, 86, 87, 88, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 103, 104, 105, 106, 107, 108, 109, 110, - 76, 77, -1, -1, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 77, -1, -1, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 103, 104, 105, - 106, 107, 108, 109, 110, -1, -1, -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, 110 }; @@ -5353,26 +5365,26 @@ namespace xsk { namespace arc { 99, 100, 101, 102, 74, 68, 64, 74, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 65, 166, 166, 166, 166, 166, 166, 166, 166, 65, 70, 166, + 166, 74, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 68, 166, 39, - 112, 218, 166, 183, 184, 219, 39, 5, 76, 135, - 76, 76, 166, 23, 166, 141, 168, 169, 170, 209, - 219, 166, 75, 75, 76, 183, 183, 92, 64, 64, - 64, 64, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 219, 166, 183, 219, 70, 65, 65, + 166, 166, 166, 166, 166, 166, 166, 166, 68, 166, + 39, 112, 218, 166, 183, 184, 219, 39, 5, 76, + 135, 76, 76, 166, 23, 166, 141, 168, 169, 170, + 209, 219, 166, 75, 75, 76, 183, 183, 92, 64, + 64, 64, 64, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 219, 166, 183, 219, 70, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 70, 65, 166, 69, 75, 69, 69, - 69, 69, 69, 69, 69, 69, 65, 70, 64, 65, - 64, 65, 76, 26, 70, 65, 65, 65, 166, 166, - 166, 166, 166, 69, 65, 64, 166, 166, 70, 69, - 166, 166, 183, 135, 166, 135, 166, 167, 166, 219, - 140, 76, 76, 76, 65, 65, 70, 65, 70, 65, - 70, 69, 183, 65, 65, 166, 64, 65, 21, 65, - 76, 65, 26, 76, 76, 183, 184, 76, 184, 76, - 184, 64, 65, 65, 183, 135, 76, 141, 135, 166, - 65, 65, 65, 183, 65, 65, 65, 76, 76, 76, - 65, 135, 135 + 65, 65, 65, 65, 70, 65, 166, 69, 112, 75, + 69, 69, 69, 69, 69, 69, 69, 69, 65, 70, + 64, 65, 64, 65, 76, 26, 70, 65, 65, 65, + 166, 166, 166, 166, 166, 69, 65, 64, 166, 166, + 70, 69, 166, 166, 183, 135, 166, 135, 166, 167, + 166, 219, 140, 76, 76, 76, 65, 65, 70, 65, + 70, 65, 70, 69, 183, 65, 65, 166, 64, 65, + 21, 65, 76, 65, 26, 76, 76, 183, 184, 76, + 184, 76, 184, 64, 65, 65, 183, 135, 76, 141, + 135, 166, 65, 65, 65, 183, 65, 65, 65, 76, + 76, 76, 65, 135, 135 }; const unsigned char @@ -5403,9 +5415,9 @@ namespace xsk { namespace arc { 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 204, 205, 205, 205, 205, 205, 205, 205, 205, 206, 207, 207, 208, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 219, 220, 220, 221, 222, 223, 224, 225, - 225, 226, 226, 227, 228 + 209, 209, 210, 211, 212, 213, 214, 215, 216, 216, + 217, 218, 219, 219, 220, 220, 221, 222, 223, 224, + 225, 225, 226, 226, 227, 228 }; const signed char @@ -5436,9 +5448,9 @@ namespace xsk { namespace arc { 3, 4, 4, 4, 4, 4, 4, 6, 4, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 7, 1, 2, - 1, 2, 1, 1, 1 + 1, 1, 2, 1, 1, 1, 1, 1, 2, 4, + 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, + 2, 1, 2, 1, 1, 1 }; @@ -5473,9 +5485,9 @@ namespace xsk { namespace arc { 864, 869, 874, 879, 884, 889, 894, 899, 904, 909, 911, 916, 918, 920, 922, 924, 926, 928, 930, 935, 940, 942, 947, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 964, 969, 974, 979, 984, 989, 994, 999, - 1004, 1009, 1011, 1016, 1018, 1023, 1028, 1033, 1038, 1043, - 1045, 1050, 1052, 1057, 1062 + 959, 960, 964, 969, 974, 979, 984, 989, 994, 996, + 1001, 1006, 1011, 1013, 1018, 1020, 1025, 1030, 1035, 1040, + 1045, 1047, 1052, 1054, 1059, 1064 }; void @@ -5508,9 +5520,9 @@ namespace xsk { namespace arc { #line 13 "parser.ypp" } } // xsk::arc -#line 5518 "parser.cpp" +#line 5530 "parser.cpp" -#line 1066 "parser.ypp" +#line 1068 "parser.ypp" namespace xsk::arc diff --git a/src/arc/source.cpp b/src/arc/source.cpp index b86a0be7..18e34b9e 100644 --- a/src/arc/source.cpp +++ b/src/arc/source.cpp @@ -1562,7 +1562,10 @@ auto source::dump_expr_classes(expr_classes const&) -> void auto source::dump_expr_animation(expr_animation const& exp) -> void { - std::format_to(std::back_inserter(buf_), "%{}", exp.value); + if (exp.space != "") + std::format_to(std::back_inserter(buf_), "%{}::{}", exp.space, exp.value); + else + std::format_to(std::back_inserter(buf_), "%{}", exp.value); } auto source::dump_expr_animtree(expr_animtree const&) -> void