diff options
author | Emanuele Torre <torreemanuele6@gmail.com> | 2023-08-04 01:21:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-04 08:21:25 +0900 |
commit | dcaf701ef66dd0a9c27df49959e4eae9c45c73c4 (patch) | |
tree | 6b9a6b8c29730827b23da6e95cded66acc0b150d /src | |
parent | d8327a90b86e0e066f2e04e9d5251a34ea4dea04 (diff) |
Simplify String rule in parser (#2805)
Use a StringStart component that is either FORMAT QQSTRING_START or
QQSTRING_START instead of having two similar rules for String.
This is simpler and avoids having to use an untyped mid-rule action
component to copy FORMAT at the top of the stack before QQString, and
having to use jv_free($<literal>3) instead of jv_free($1) just to make
bison not complain about the "unused" mid-rule component.
Diffstat (limited to 'src')
-rw-r--r-- | src/parser.c | 1359 | ||||
-rw-r--r-- | src/parser.y | 22 |
2 files changed, 687 insertions, 694 deletions
diff --git a/src/parser.c b/src/parser.c index a1987d34..429a4304 100644 --- a/src/parser.c +++ b/src/parser.c @@ -366,24 +366,23 @@ enum yysymbol_kind_t YYSYMBOL_FuncDef = 79, /* FuncDef */ YYSYMBOL_Params = 80, /* Params */ YYSYMBOL_Param = 81, /* Param */ - YYSYMBOL_NoFormat = 82, /* NoFormat */ + YYSYMBOL_StringStart = 82, /* StringStart */ YYSYMBOL_String = 83, /* String */ - YYSYMBOL_84_1 = 84, /* @1 */ - YYSYMBOL_QQString = 85, /* QQString */ - YYSYMBOL_ElseBody = 86, /* ElseBody */ - YYSYMBOL_ExpD = 87, /* ExpD */ - YYSYMBOL_Term = 88, /* Term */ - YYSYMBOL_Args = 89, /* Args */ - YYSYMBOL_Arg = 90, /* Arg */ - YYSYMBOL_RepPatterns = 91, /* RepPatterns */ - YYSYMBOL_Patterns = 92, /* Patterns */ - YYSYMBOL_Pattern = 93, /* Pattern */ - YYSYMBOL_ArrayPats = 94, /* ArrayPats */ - YYSYMBOL_ObjPats = 95, /* ObjPats */ - YYSYMBOL_ObjPat = 96, /* ObjPat */ - YYSYMBOL_Keyword = 97, /* Keyword */ - YYSYMBOL_MkDict = 98, /* MkDict */ - YYSYMBOL_MkDictPair = 99 /* MkDictPair */ + YYSYMBOL_QQString = 84, /* QQString */ + YYSYMBOL_ElseBody = 85, /* ElseBody */ + YYSYMBOL_ExpD = 86, /* ExpD */ + YYSYMBOL_Term = 87, /* Term */ + YYSYMBOL_Args = 88, /* Args */ + YYSYMBOL_Arg = 89, /* Arg */ + YYSYMBOL_RepPatterns = 90, /* RepPatterns */ + YYSYMBOL_Patterns = 91, /* Patterns */ + YYSYMBOL_Pattern = 92, /* Pattern */ + YYSYMBOL_ArrayPats = 93, /* ArrayPats */ + YYSYMBOL_ObjPats = 94, /* ObjPats */ + YYSYMBOL_ObjPat = 95, /* ObjPat */ + YYSYMBOL_Keyword = 96, /* Keyword */ + YYSYMBOL_MkDict = 97, /* MkDict */ + YYSYMBOL_MkDictPair = 98 /* MkDictPair */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -583,7 +582,7 @@ static block gen_loc_object(location *loc, struct locfile *locations) { } -#line 587 "src/parser.c" +#line 586 "src/parser.c" #ifdef short @@ -908,18 +907,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 29 +#define YYFINAL 30 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2039 +#define YYLAST 2051 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 70 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 30 +#define YYNNTS 29 /* YYNRULES -- Number of rules. */ -#define YYNRULES 170 +#define YYNRULES 169 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 318 +#define YYNSTATES 315 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 303 @@ -979,18 +978,17 @@ static const yytype_int16 yyrline[] = 445, 449, 453, 457, 461, 465, 469, 473, 477, 481, 485, 489, 493, 497, 501, 505, 509, 513, 518, 521, 538, 547, 554, 562, 573, 578, 584, 587, 592, 596, - 603, 608, 612, 612, 619, 622, 625, 631, 634, 637, - 642, 645, 648, 654, 657, 660, 668, 672, 675, 678, - 681, 684, 687, 690, 693, 696, 700, 706, 709, 712, - 715, 718, 721, 724, 727, 730, 733, 736, 739, 742, - 745, 748, 751, 754, 757, 760, 763, 766, 788, 792, - 796, 799, 811, 816, 817, 818, 819, 822, 825, 830, - 835, 838, 843, 846, 851, 855, 858, 863, 866, 871, - 874, 879, 882, 885, 888, 891, 894, 902, 908, 911, - 914, 917, 920, 923, 926, 929, 932, 935, 938, 941, - 944, 947, 950, 953, 956, 959, 964, 967, 968, 969, - 972, 975, 978, 981, 985, 990, 994, 998, 1002, 1006, - 1014 + 603, 606, 612, 619, 622, 625, 631, 634, 637, 642, + 645, 648, 654, 657, 660, 668, 672, 675, 678, 681, + 684, 687, 690, 693, 696, 700, 706, 709, 712, 715, + 718, 721, 724, 727, 730, 733, 736, 739, 742, 745, + 748, 751, 754, 757, 760, 763, 766, 788, 792, 796, + 799, 811, 816, 817, 818, 819, 822, 825, 830, 835, + 838, 843, 846, 851, 855, 858, 863, 866, 871, 874, + 879, 882, 885, 888, 891, 894, 902, 908, 911, 914, + 917, 920, 923, 926, 929, 932, 935, 938, 941, 944, + 947, 950, 953, 956, 959, 964, 967, 968, 969, 972, + 975, 978, 981, 985, 990, 994, 998, 1002, 1006, 1014 }; #endif @@ -1019,7 +1017,7 @@ static const char *const yytname[] = "'%'", "NONOPT", "'?'", "';'", "'('", "')'", "':'", "'.'", "'['", "']'", "'{'", "'}'", "'$'", "$accept", "TopLevel", "Module", "Imports", "FuncDefs", "Exp", "Import", "ImportWhat", "ImportFrom", "FuncDef", - "Params", "Param", "NoFormat", "String", "@1", "QQString", "ElseBody", + "Params", "Param", "StringStart", "String", "QQString", "ElseBody", "ExpD", "Term", "Args", "Arg", "RepPatterns", "Patterns", "Pattern", "ArrayPats", "ObjPats", "ObjPat", "Keyword", "MkDict", "MkDictPair", YY_NULLPTR }; @@ -1031,12 +1029,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-159) +#define YYPACT_NINF (-157) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-157) +#define YYTABLE_NINF (-156) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -1045,38 +1043,38 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - -13, 868, 7, 41, -44, -30, -159, -159, -2, -159, - 65, 868, 449, 449, 868, 66, 36, -159, -159, 868, - 418, 285, 351, 582, 4, 1356, 868, -159, 10, -159, - -4, -4, 868, 41, 670, 868, -159, -159, -18, 1712, - 47, 51, 54, 32, -159, -159, -159, -6, 46, 1186, - -159, 112, -2, 58, 52, -159, 997, -24, 64, 68, - -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, - -159, -159, -159, -159, -159, -159, -159, -159, -159, 868, - 69, 72, 60, 92, 75, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 868, 868, 868, 868, 868, -159, - -159, 1880, 86, -5, 6, 166, 132, -159, -159, -159, - 1880, 868, -159, -159, 1407, 1880, 63, -159, -159, 73, - 868, 469, -5, -5, 520, 868, 11, -159, -159, -159, - -159, -159, -159, 638, 207, -159, 207, 207, 1220, 207, - 207, -159, 638, 146, 1948, 581, 581, 1914, 784, 1980, - 1948, 1948, 1948, 1948, 1948, 1948, 581, 581, 1880, 1914, - 1948, 581, 581, -6, -6, 95, 95, 95, -159, -159, - -5, 930, 114, 110, 118, 736, 101, 96, 868, 102, - 963, 120, -159, -159, 868, -159, 24, -159, -159, 76, - -159, 1458, -159, 1662, 103, 104, -159, -159, 1880, -159, - 868, -159, -47, -159, 207, 115, 17, 115, 115, 105, - 115, 115, -159, -159, -159, -19, 106, 113, 116, 868, - 117, -22, -159, 119, -5, 868, 107, 1031, -159, -159, - 1065, -159, 802, 124, -159, -159, -159, -159, 73, 125, - -159, 868, 868, -159, -159, 868, 868, 1746, -159, 207, - 207, -5, -159, -5, -5, -5, 1254, -5, 930, -159, - -5, 136, 1880, -159, 133, 140, 141, 1099, -159, -159, - 868, 1796, 1846, 1509, 1560, -159, 115, 115, -159, -159, - -159, -159, 138, -159, -159, -159, -159, -159, -159, 143, - 1611, -159, 868, 868, 868, -5, -159, -159, 1662, 1288, - 1133, -159, -159, -159, 868, -159, 1322, -159 + -14, 881, 15, 62, -33, -23, -157, -157, -9, -157, + 37, 881, 912, 912, 881, 40, 2, -157, -157, 881, + 193, 282, 415, 595, -18, 1400, 881, -157, -157, 12, + -157, 1, 1, 881, 62, 683, 881, -157, -157, -11, + 1756, 17, 49, 26, 10, -157, -157, 14, 21, 1230, + -157, 74, -9, 53, 51, -157, 1041, -26, 63, 64, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, 881, + 65, 69, 70, 82, 67, 881, 881, 881, 881, 881, + 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, + 881, 881, 881, 881, 881, 881, 881, 881, 881, -157, + -157, 1924, 13, 87, -5, -4, 348, 127, -157, -157, + -157, 1924, 881, -157, -157, 1451, 1924, 56, -157, 68, + 881, 482, -5, -5, 533, 881, -157, -157, -157, -157, + -157, -157, 651, 513, -157, 513, 513, 1264, 513, 513, + -157, 651, 144, 1992, 113, 113, 1958, 594, 913, 1992, + 1992, 1992, 1992, 1992, 1992, 113, 113, 1924, 1958, 1992, + 113, 113, 14, 14, 98, 98, 98, -157, 881, -157, + -157, -157, -5, 974, 117, 111, 119, 749, 102, 96, + 881, 104, 1007, 116, -157, -157, 881, -157, -157, -157, + 61, -157, 1502, -157, 1706, 110, 112, -157, -157, 1924, + -10, -157, 513, 126, 0, 126, 126, 115, 126, 126, + -157, -157, 1790, -157, -37, 118, 120, 121, 881, 122, + -38, -157, 124, -5, 881, 123, 1075, -157, -157, 1109, + -157, 815, 131, -157, -157, -157, 68, 128, -157, 881, + 881, -157, -157, 881, 881, -157, 513, 513, -157, -5, + -157, -5, -5, -5, 1298, -5, 974, -157, -5, 134, + 1924, -157, 133, 137, 145, 1143, -157, -157, 881, 1840, + 1890, 1553, 1604, 126, 126, -157, -157, -157, -157, 130, + -157, -157, -157, -157, -157, -157, 146, 1655, -157, 881, + 881, 881, -5, -157, -157, 1706, 1332, 1177, -157, -157, + -157, 881, -157, 1366, -157 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1084,54 +1082,54 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 0, 6, 111, 82, 109, 101, 103, 74, - 0, 0, 0, 0, 0, 0, 0, 110, 60, 0, - 0, 0, 0, 0, 0, 0, 0, 102, 47, 1, - 0, 0, 8, 6, 0, 0, 78, 62, 0, 0, - 0, 0, 18, 0, 76, 75, 64, 32, 0, 0, - 85, 0, 0, 84, 0, 106, 0, 0, 166, 165, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 167, 0, - 163, 168, 0, 157, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 6, 110, 81, 108, 100, 102, 73, + 0, 0, 0, 0, 0, 0, 0, 109, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 101, 47, + 1, 0, 0, 8, 6, 0, 0, 77, 60, 0, + 0, 0, 0, 18, 0, 75, 74, 32, 0, 0, + 84, 0, 0, 83, 0, 105, 0, 0, 165, 164, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 166, 0, + 162, 167, 0, 156, 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, 21, - 5, 10, 81, 0, 0, 0, 0, 53, 52, 3, - 2, 8, 7, 48, 0, 119, 0, 117, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 113, 104, 86, - 80, 114, 105, 0, 0, 116, 0, 0, 0, 0, - 0, 107, 0, 0, 40, 41, 42, 25, 24, 23, - 27, 31, 34, 36, 39, 26, 45, 46, 28, 29, - 22, 43, 44, 30, 33, 35, 37, 38, 77, 124, - 0, 0, 0, 0, 123, 0, 83, 0, 0, 92, - 0, 0, 9, 49, 0, 112, 0, 59, 58, 0, - 56, 0, 16, 0, 0, 0, 19, 17, 20, 65, - 0, 61, 0, 159, 0, 170, 72, 160, 164, 0, - 162, 161, 158, 108, 127, 0, 0, 0, 131, 0, - 0, 0, 129, 0, 0, 0, 94, 0, 79, 115, - 0, 91, 0, 88, 51, 50, 118, 63, 0, 0, - 54, 0, 0, 69, 15, 0, 0, 0, 71, 0, - 0, 0, 125, 0, 0, 0, 0, 0, 0, 126, - 0, 122, 11, 93, 90, 100, 99, 0, 87, 57, - 0, 0, 0, 0, 0, 66, 70, 169, 128, 137, - 133, 132, 0, 135, 130, 134, 89, 97, 96, 98, - 0, 68, 0, 0, 0, 0, 95, 55, 0, 0, - 0, 136, 67, 12, 0, 14, 0, 13 + 5, 10, 0, 80, 0, 0, 0, 0, 53, 52, + 3, 2, 8, 7, 48, 0, 118, 0, 116, 0, + 0, 0, 0, 0, 0, 0, 112, 103, 85, 79, + 113, 104, 0, 0, 115, 0, 0, 0, 0, 0, + 106, 0, 0, 40, 41, 42, 25, 24, 23, 27, + 31, 34, 36, 39, 26, 45, 46, 28, 29, 22, + 43, 44, 30, 33, 35, 37, 38, 64, 0, 62, + 76, 123, 0, 0, 0, 0, 122, 0, 82, 0, + 0, 91, 0, 0, 9, 49, 0, 111, 59, 58, + 0, 56, 0, 16, 0, 0, 0, 19, 17, 20, + 0, 158, 0, 169, 71, 159, 163, 0, 161, 160, + 157, 107, 0, 126, 0, 0, 0, 130, 0, 0, + 0, 128, 0, 0, 0, 93, 0, 78, 114, 0, + 90, 0, 87, 51, 50, 117, 0, 0, 54, 0, + 0, 68, 15, 0, 0, 70, 0, 0, 65, 0, + 124, 0, 0, 0, 0, 0, 0, 125, 0, 121, + 11, 92, 89, 99, 98, 0, 86, 57, 0, 0, + 0, 0, 0, 69, 168, 127, 136, 132, 131, 0, + 134, 129, 133, 88, 96, 95, 97, 0, 67, 0, + 0, 0, 0, 94, 55, 0, 0, 0, 135, 66, + 12, 0, 14, 0, 13 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -159, -159, -159, 145, 74, -1, -159, -159, 172, -12, - -159, -43, -159, 5, -159, 78, -104, -138, -7, -159, - 16, -159, -69, -114, -159, -159, -51, -158, -111, -159 + -157, -157, -157, 169, 57, -1, -157, -157, 148, -13, + -157, -39, -157, -7, -157, -96, -101, -6, -157, 18, + -157, -66, -114, -157, -157, -56, -156, -102, -157 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_uint8 yydefgoto[] = { - 0, 2, 3, 32, 119, 111, 33, 34, 116, 26, - 199, 200, 46, 27, 128, 136, 254, 215, 28, 126, - 127, 182, 183, 184, 225, 231, 232, 81, 82, 83 + 0, 2, 3, 33, 120, 111, 34, 35, 117, 26, + 200, 201, 27, 28, 112, 252, 213, 29, 127, 128, + 184, 185, 186, 224, 230, 231, 81, 82, 83 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1139,321 +1137,324 @@ static const yytype_uint8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 25, 179, 143, 1, 52, 40, 41, 29, 217, 218, - 39, 220, 221, 42, 52, 112, 144, 35, 47, 49, - 121, 56, 112, 233, 113, 143, 53, 268, 80, 36, - 261, 120, 213, 124, 125, 117, 117, 44, 18, 144, - 37, 222, 45, 129, 145, 130, 269, 262, 18, 106, - 107, 108, 112, 109, 209, 210, 112, 211, 30, 31, - 180, 132, 181, 204, 205, 133, 224, 209, 210, 38, - 247, 185, 43, 84, 114, 115, 258, 197, 148, 198, - 135, 114, 115, 134, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 137, 121, - 233, 114, 115, 139, 190, 114, 115, 140, 141, 186, - 271, 286, 287, 194, 244, 195, 245, 146, 151, 201, - 203, 147, 149, 207, 208, 150, 248, 216, 249, 216, - 216, 152, 216, 216, 153, 178, 191, 288, 80, 289, - 290, 291, 223, 293, 109, 234, 295, 80, 235, -121, - 238, 241, 239, 259, 255, 256, 273, 187, 260, 263, - 4, 5, 6, 7, 8, 9, 264, -120, 122, 265, - 267, 10, 270, 278, 237, 11, 230, 240, 280, 12, - 13, 311, 296, 125, 14, 192, 15, 16, 17, 297, - 298, 305, 306, 118, 312, 279, 196, 216, 18, 257, - 246, 4, 5, 6, 7, 8, 9, 294, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 20, 266, 188, - 21, 22, 189, 23, 272, 24, 0, 0, 16, 17, - 0, 277, 0, 0, 0, 0, 0, 0, 0, 18, - 281, 282, 216, 216, 283, 284, 0, 0, 0, 0, - 0, 214, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 21, 22, 230, 23, 0, 24, 0, 0, 300, - 0, 0, 0, 0, 0, -73, 50, 0, 0, 51, - -73, 0, 0, 52, 0, -73, -73, -73, -73, -73, - 0, 308, 309, 310, 0, -73, -73, -73, 0, 0, - -73, -73, -73, 316, -73, 0, 0, 0, -73, -73, - -73, -73, -73, -73, -73, -73, 0, 18, 0, 0, - -73, 0, 0, -73, -73, -73, -73, -73, -73, -73, - -73, -73, -73, 0, -73, -73, 0, -73, -73, -73, - -73, -73, 54, -73, 0, 4, 5, 6, 7, 8, - 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, - 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 21, 22, 55, 23, 48, - 24, 0, 4, 5, 6, 7, 8, 9, 0, 0, - 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, - 17, 0, 0, 4, 5, 6, 7, 8, 9, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 0, 19, 4, 5, 6, 7, 8, 9, 20, - 16, 17, 21, 22, 10, 23, 0, 24, 11, 0, - 0, 18, 12, 13, 0, 0, 0, 14, 0, 15, - 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 18, 0, 21, 22, 0, 23, 0, 24, 0, - 0, 206, 0, 19, 4, 5, 6, 7, 8, 9, - 20, 0, 0, 21, 22, 10, 23, 0, 24, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, - 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 0, 20, 0, 57, 21, 22, 58, 23, 59, 24, - 52, 0, -157, -157, 0, 0, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 0, 0, 0, 0, 0, - -157, -157, 0, 0, 18, 0, 0, 0, 0, 0, - 0, 0, -157, -157, 104, 105, 106, 107, 108, 212, - 109, 0, 58, 79, 59, 0, 52, 0, 0, 0, - -156, 0, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 0, 0, 0, 4, 5, 6, 7, 8, 9, - 18, 0, 0, 0, 0, 10, 0, 0, 0, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 79, - 15, 16, 17, 0, 0, 0, -156, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 123, 20, 0, 0, 21, 22, 0, 23, 0, 24, - 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, - 13, 0, 0, 0, 14, 0, 15, 16, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 86, 87, 20, 0, 0, - 21, 22, 236, 23, 0, 24, 4, 5, 6, 7, - 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, - 0, 11, 0, 97, 98, 12, 13, 0, 0, 0, - 14, 0, 15, 16, 17, 102, 103, 104, 105, 106, - 107, 108, 0, 109, 18, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 21, 22, 276, 23, - 0, 24, 4, 5, 6, 7, 8, 9, 0, 0, + 25, 181, 1, 45, 52, 113, 41, 42, 46, 52, + 40, 266, 259, 43, 53, 30, 80, 113, 47, 49, + 122, 56, 113, 142, 118, 118, 114, 232, 36, 260, + 267, 132, 121, 38, 125, 126, 37, 143, 18, 142, + 211, 39, 144, 18, 215, 216, 44, 218, 219, 220, + 129, 84, 130, 143, 113, 134, 177, 178, 135, 179, + 182, 187, 183, 133, 115, 116, 205, 206, 223, 106, + 107, 108, 198, 109, 199, 138, 115, 116, 147, 31, + 32, 115, 116, 136, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 188, 122, + 232, 255, 139, 115, 116, 192, 196, 140, 197, 269, + 243, 246, 244, 247, -156, -156, 145, 146, 148, 202, + 204, 151, 149, 208, 209, 80, 152, 214, 150, 214, + 214, 193, 214, 214, 80, 285, 180, 286, 287, 288, + 221, 290, -156, -156, 292, 283, 284, 109, 233, 234, + -120, 237, 238, 240, -156, -156, 104, 105, 106, 107, + 108, 253, 109, 254, 256, -119, 229, 222, 257, 194, + 119, 261, 271, 262, 263, 265, 236, 268, 308, 239, + 276, 278, 293, 302, 48, 126, 294, 4, 5, 6, + 7, 8, 9, 123, 295, 303, 214, 277, 10, 309, + 291, 0, 11, 0, 245, 0, 12, 13, 0, 0, + 0, 14, 0, 15, 16, 17, 0, 264, 0, 0, + 0, 0, 0, 270, 0, 18, 0, 0, 0, 0, + 275, 0, 0, 0, 0, 0, 0, 19, 279, 280, + 214, 214, 281, 282, 20, 0, 0, 21, 22, 229, + 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 297, 0, 0, + 0, 0, -72, 50, 0, 0, 51, -72, 0, 0, + 52, 0, -72, -72, -72, -72, -72, 0, 305, 306, + 307, 0, -72, -72, -72, 0, 0, -72, -72, -72, + 313, -72, 0, 0, 0, -72, -72, -72, -72, -72, + -72, -72, -72, 0, 18, 0, 0, -72, 0, 0, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + 0, -72, -72, 0, -72, -72, -72, -72, -72, 189, + -72, 0, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 20, - 0, 226, 21, 22, 227, 23, 228, 24, 52, 0, - 0, 0, 0, 0, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 85, 86, 87, 88, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 229, 0, 0, 0, 0, 91, 92, 93, 94, - 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, - 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 0, 109, 89, 90, 0, 242, 0, 0, 243, + 0, 190, 21, 22, 191, 23, 54, 24, 0, 4, + 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, + 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, + 22, 55, 23, 203, 24, 0, 4, 5, 6, 7, + 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, + 14, 0, 15, 16, 17, 0, 0, 4, 5, 6, + 7, 8, 9, 0, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 207, 0, 19, 4, 5, 6, + 7, 8, 9, 20, 16, 17, 21, 22, 10, 23, + 0, 24, 11, 0, 0, 18, 12, 13, 0, 0, + 0, 14, 0, 15, 16, 17, 0, 212, 0, 0, + 0, 0, 0, 0, 20, 18, 0, 21, 22, 0, + 23, 0, 24, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 0, 20, 0, 57, 21, 22, 58, + 23, 59, 24, 52, 0, 86, 87, 0, 0, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 0, 0, + 0, 0, 0, 97, 98, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 102, 103, 104, 105, 106, + 107, 108, 210, 109, 0, 58, 79, 59, 0, 52, + 0, 0, 0, -155, 0, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 0, 0, 0, 4, 5, 6, + 7, 8, 9, 18, 0, 0, 0, 0, 10, 0, + 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, + 0, 14, 79, 15, 16, 17, 0, 0, 0, -155, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 124, 20, 0, 0, 21, 22, 0, + 23, 0, 24, 4, 5, 6, 7, 8, 9, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 12, 13, 0, 0, 0, 14, 0, 15, + 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 21, 22, 235, 23, 0, 24, 4, + 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, + 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, + 22, 274, 23, 0, 24, 4, 5, 6, 7, 8, + 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, + 0, 15, 16, 17, 0, 0, 4, 5, 6, 7, + 8, 9, 0, 18, 86, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 89, + 0, 0, 20, 16, 17, 21, 22, 0, 23, 0, + 24, 0, 97, 98, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 20, 0, 225, 21, 22, 226, 23, + 227, 24, 52, 0, 0, 0, 0, 0, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 85, 86, 87, + 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 228, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, - 0, 0, 0, 142, 91, 92, 93, 94, 95, 96, + 241, 0, 0, 242, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 109, 89, 90, 0, 0, 0, 0, 274, 91, 92, + 109, 89, 90, 0, 0, 0, 0, 141, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, - 0, 275, 91, 92, 93, 94, 95, 96, 97, 98, + 0, 272, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, - 90, 0, 0, 0, 0, 299, 91, 92, 93, 94, - 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, - 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 0, 109, 314, 0, 315, 85, 86, 87, 88, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, - 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, - 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 109, 89, 90, 138, 0, + 90, 0, 0, 0, 0, 273, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, + 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 89, 90, 0, 0, 0, 0, 296, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 311, 0, 312, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, - 89, 90, 219, 0, 0, 0, 0, 91, 92, 93, + 89, 90, 137, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 0, 109, 89, 90, 292, 0, 0, 0, + 107, 108, 0, 109, 89, 90, 217, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, - 313, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 289, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 0, 109, 89, 90, 317, 0, 0, 0, 0, 91, + 0, 109, 89, 90, 310, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, - 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 109, 110, 85, 86, 87, - 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, - 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, - 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 0, 109, 193, 85, 86, - 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, - 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, - 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 0, 109, 250, 85, - 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, - 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 0, 109, 303, - 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, + 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 89, 90, 314, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, - 304, 85, 86, 87, 88, 0, 0, 0, 0, 0, + 110, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 109, 307, 85, 86, 87, 88, 0, 0, 0, 0, - 0, 0, 0, 251, 252, 0, 0, 253, 89, 90, + 109, 195, 85, 86, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 0, 109, 85, 86, 87, 88, 0, 0, 0, 0, - 0, 0, 131, 0, 0, 0, 0, 0, 89, 90, - 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, - 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 0, 109, 89, 90, 0, 0, 0, 0, 0, 91, - 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, - 0, 285, 0, 0, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 109, 85, 86, 87, 88, + 0, 109, 248, 85, 86, 87, 88, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, + 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 300, 85, 86, 87, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, + 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 0, 109, 301, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 301, 89, 90, 0, 0, 0, 0, 0, 91, + 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, + 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, + 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 0, 109, 304, 85, 86, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 249, 250, 0, + 0, 251, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 85, 86, 87, 88, - 0, 0, 0, 0, 0, 0, 302, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 0, 258, 0, 0, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 298, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 299, 0, 0, 0, 0, 0, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, - 94, 95, 96, 97, 98, 0, 0, 0, -157, 86, - 87, 0, 0, 0, 101, 102, 103, 104, 105, 106, + 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, + 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, 0, - 0, -157, -157, -157, -157, -157, -157, 97, 98, 0, - 0, 86, 87, 0, 0, 0, 0, 0, -157, 102, - 103, 104, 105, 106, 107, 108, 89, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 102, 103, 104, 105, 106, 107, 108, 0, 109 + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 0, 0, -156, 86, 87, 0, 0, 0, 101, 102, + 103, |