From a59deb43c3d8ba9d6e8d380f3c6ba24c57e725a6 Mon Sep 17 00:00:00 2001 From: alkim0 Date: Fri, 2 Nov 2018 06:42:23 -0400 Subject: [PATCH] Added boolean literal support (#103) * Added boolean support * Made bool literals int vals With a flag indicating if they came from boolean literals. * Add makeLiteral(bool val); --- src/parser/bison_parser.cpp | 1979 ++++++++++++++++---------------- src/parser/bison_parser.h | 20 +- src/parser/bison_parser.y | 8 +- src/parser/flex_lexer.cpp | 2141 ++++++++++++++++++----------------- src/parser/flex_lexer.h | 2 +- src/parser/flex_lexer.l | 2 + src/sql/Expr.cpp | 159 +-- src/sql/Expr.h | 27 +- test/select_tests.cpp | 19 +- 9 files changed, 2216 insertions(+), 2141 deletions(-) diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 1d9a1d4..662266c 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -301,14 +301,16 @@ extern int hsql_debug; SQL_DAY = 388, SQL_MONTH = 389, SQL_YEAR = 390, - SQL_EQUALS = 391, - SQL_NOTEQUALS = 392, - SQL_LESS = 393, - SQL_GREATER = 394, - SQL_LESSEQ = 395, - SQL_GREATEREQ = 396, - SQL_NOTNULL = 397, - SQL_UMINUS = 398 + SQL_TRUE = 391, + SQL_FALSE = 392, + SQL_EQUALS = 393, + SQL_NOTEQUALS = 394, + SQL_LESS = 395, + SQL_GREATER = 396, + SQL_LESSEQ = 397, + SQL_GREATEREQ = 398, + SQL_NOTNULL = 399, + SQL_UMINUS = 400 }; #endif @@ -359,7 +361,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 363 "bison_parser.cpp" /* yacc.c:355 */ +#line 365 "bison_parser.cpp" /* yacc.c:355 */ }; typedef union HSQL_STYPE HSQL_STYPE; @@ -389,7 +391,7 @@ int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); /* Copy the second part of user declarations. */ -#line 393 "bison_parser.cpp" /* yacc.c:358 */ +#line 395 "bison_parser.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -633,21 +635,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 52 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 609 +#define YYLAST 634 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 161 +#define YYNTOKENS 163 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 94 +#define YYNNTS 95 /* YYNRULES -- Number of rules. */ -#define YYNRULES 234 +#define YYNRULES 237 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 427 +#define YYNSTATES 430 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 398 +#define YYMAXUTOK 400 #define YYTRANSLATE(YYX) \ ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -659,13 +661,13 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 150, 2, 2, - 155, 156, 148, 146, 159, 147, 157, 149, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 158, - 139, 136, 140, 160, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 152, 2, 2, + 157, 158, 150, 148, 161, 149, 159, 151, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 160, + 141, 138, 142, 162, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 153, 2, 154, 151, 2, 2, 2, 2, 2, + 2, 155, 2, 156, 153, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -695,37 +697,38 @@ static const yytype_uint8 yytranslate[] = 105, 106, 107, 108, 109, 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, 137, 138, 141, 142, 143, 144, 145, 152 + 135, 136, 137, 139, 140, 143, 144, 145, 146, 147, + 154 }; #if HSQL_DEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 253, 253, 274, 280, 289, 293, 297, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 321, 322, 327, - 328, 332, 336, 348, 355, 358, 362, 374, 383, 387, - 397, 400, 414, 421, 428, 439, 440, 444, 445, 449, - 455, 456, 457, 458, 459, 460, 461, 462, 466, 467, - 468, 478, 484, 490, 498, 499, 508, 517, 530, 537, - 548, 549, 559, 568, 569, 573, 585, 586, 587, 604, - 605, 609, 610, 614, 624, 641, 645, 646, 647, 651, - 652, 656, 668, 669, 673, 677, 678, 681, 686, 687, - 691, 696, 700, 701, 704, 705, 709, 710, 714, 718, - 719, 720, 726, 727, 731, 732, 733, 734, 735, 736, - 737, 738, 745, 746, 750, 751, 755, 765, 766, 767, - 768, 769, 773, 774, 775, 776, 777, 778, 779, 780, - 781, 782, 786, 787, 791, 792, 793, 794, 795, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, - 813, 814, 818, 819, 820, 821, 827, 828, 829, 830, - 834, 835, 839, 840, 844, 845, 846, 847, 848, 849, - 850, 854, 855, 859, 863, 864, 865, 866, 867, 868, - 871, 875, 879, 883, 884, 885, 886, 890, 891, 892, - 893, 897, 902, 903, 907, 911, 915, 927, 928, 938, - 939, 943, 944, 953, 954, 959, 970, 979, 980, 985, - 986, 991, 992, 996, 997, 1002, 1003, 1011, 1019, 1029, - 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, - 1062, 1071, 1072, 1077, 1078 + 0, 254, 254, 275, 281, 290, 294, 298, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 322, 323, 328, + 329, 333, 337, 349, 356, 359, 363, 375, 384, 388, + 398, 401, 415, 422, 429, 440, 441, 445, 446, 450, + 456, 457, 458, 459, 460, 461, 462, 463, 467, 468, + 469, 479, 485, 491, 499, 500, 509, 518, 531, 538, + 549, 550, 560, 569, 570, 574, 586, 587, 588, 605, + 606, 610, 611, 615, 625, 642, 646, 647, 648, 652, + 653, 657, 669, 670, 674, 678, 679, 682, 687, 688, + 692, 697, 701, 702, 705, 706, 710, 711, 715, 719, + 720, 721, 727, 728, 732, 733, 734, 735, 736, 737, + 738, 739, 746, 747, 751, 752, 756, 766, 767, 768, + 769, 770, 774, 775, 776, 777, 778, 779, 780, 781, + 782, 783, 787, 788, 792, 793, 794, 795, 796, 800, + 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, + 814, 815, 819, 820, 821, 822, 828, 829, 830, 831, + 835, 836, 840, 841, 845, 846, 847, 848, 849, 850, + 851, 855, 856, 860, 864, 865, 866, 867, 868, 869, + 872, 876, 880, 884, 885, 886, 887, 891, 892, 893, + 894, 895, 899, 903, 904, 908, 909, 913, 917, 921, + 933, 934, 944, 945, 949, 950, 959, 960, 965, 976, + 985, 986, 991, 992, 997, 998, 1002, 1003, 1008, 1009, + 1017, 1025, 1035, 1054, 1055, 1056, 1057, 1058, 1059, 1060, + 1061, 1062, 1063, 1068, 1077, 1078, 1083, 1084 }; #endif @@ -751,10 +754,10 @@ static const char *const yytname[] = "THEN", "TIME", "VIEW", "WHEN", "WITH", "ADD", "ALL", "AND", "ASC", "CSV", "END", "FOR", "INT", "KEY", "NOT", "OFF", "SET", "TBL", "TOP", "AS", "BY", "IF", "IN", "IS", "OF", "ON", "OR", "TO", "ARRAY", "CONCAT", - "ILIKE", "SECOND", "MINUTE", "HOUR", "DAY", "MONTH", "YEAR", "'='", - "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", "GREATER", "LESSEQ", - "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", - "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "'?'", + "ILIKE", "SECOND", "MINUTE", "HOUR", "DAY", "MONTH", "YEAR", "TRUE", + "FALSE", "'='", "EQUALS", "NOTEQUALS", "'<'", "'>'", "LESS", "GREATER", + "LESSEQ", "GREATEREQ", "NOTNULL", "'+'", "'-'", "'*'", "'/'", "'%'", + "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "'?'", "$accept", "input", "statement_list", "statement", "preparable_statement", "opt_hints", "hint_list", "hint", "prepare_statement", "prepare_target_query", "execute_statement", @@ -773,10 +776,10 @@ static const char *const yytname[] = "binary_expr", "logic_expr", "in_expr", "case_expr", "case_list", "exists_expr", "comp_expr", "function_expr", "extract_expr", "datetime_field", "array_expr", "array_index", "between_expr", - "column_name", "literal", "string_literal", "num_literal", "int_literal", - "null_literal", "param_expr", "table_ref", "table_ref_atomic", - "nonjoin_table_ref_atomic", "table_ref_commalist", "table_ref_name", - "table_ref_name_no_alias", "table_name", "table_alias", + "column_name", "literal", "string_literal", "bool_literal", + "num_literal", "int_literal", "null_literal", "param_expr", "table_ref", + "table_ref_atomic", "nonjoin_table_ref_atomic", "table_ref_commalist", + "table_ref_name", "table_ref_name_no_alias", "table_name", "table_alias", "opt_table_alias", "alias", "opt_alias", "join_clause", "opt_join_type", "join_condition", "opt_semicolon", "ident_commalist", YY_NULLPTR }; @@ -800,70 +803,70 @@ static const yytype_uint16 yytoknum[] = 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 61, 391, 392, 60, - 62, 393, 394, 395, 396, 397, 43, 45, 42, 47, - 37, 94, 398, 91, 93, 40, 41, 46, 59, 44, - 63 + 385, 386, 387, 388, 389, 390, 391, 392, 61, 393, + 394, 60, 62, 395, 396, 397, 398, 399, 43, 45, + 42, 47, 37, 94, 400, 91, 93, 40, 41, 46, + 59, 44, 63 }; # endif -#define YYPACT_NINF -312 +#define YYPACT_NINF -337 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-312))) + (!!((Yystate) == (-337))) -#define YYTABLE_NINF -230 +#define YYTABLE_NINF -233 #define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-230))) + (!!((Yytable_value) == (-233))) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 18, -3, 34, 92, 113, -44, 40, 70, 81, 75, - 34, 36, 24, -29, 200, 64, -312, 131, 131, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, 19, - -312, 12, 208, 93, -312, 94, 175, 142, 142, 34, - 160, 34, 263, 262, 161, -312, 167, 167, 34, -312, - 135, 153, -312, 18, -312, 226, -312, -312, -312, -312, - -312, -29, 221, 196, -29, -16, -312, 313, 2, 326, - 222, 34, 34, 261, -312, 257, 187, -312, -312, -312, - 185, 340, 303, 34, 34, -312, -312, -312, -312, 191, - -312, 277, -312, -312, -312, 185, 277, 263, 69, -312, - -312, -312, -312, -312, -312, -112, -312, -312, -312, -312, - -312, -312, -312, -312, 307, -68, 187, 185, -312, 352, - 354, 45, 66, 205, 206, 118, 211, 209, 289, -312, - 124, 278, 213, -312, 13, 282, -312, -312, -312, -312, - -312, -312, -312, -312, -312, -312, -312, -312, -312, -312, - -312, 228, -61, -312, -312, -312, -312, 362, -16, 214, - -312, -46, -16, -312, 320, 321, 322, -312, 2, -312, - 259, 373, 260, 62, 288, -312, -312, 76, 225, -312, - 7, 8, 330, 220, 185, 123, 11, 227, 289, 392, - 185, 169, 229, -55, 6, 261, -312, 185, -312, 185, - 380, 185, -312, -312, 289, -312, 289, -66, 231, -14, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 263, 185, 340, -312, 232, - 108, -312, -312, 185, -312, -312, -312, -312, 263, 263, - 263, -312, 304, 415, 127, -312, -29, 34, -312, 386, - 2, -312, 185, -312, -312, 234, -312, -312, -312, -312, - -312, -312, 306, 78, 84, 185, 185, -312, 330, 300, - 53, -312, -312, -29, -312, 20, -312, 235, -312, 15, - -312, 333, -312, -312, -312, 287, 332, 426, 289, 242, - 124, -312, 305, 245, 426, 426, 426, 426, 456, 456, - 456, 456, 169, 169, -39, -39, -39, 29, 247, 62, - -312, 2, -312, 362, -312, -312, -312, -312, 352, -312, - 244, -312, -312, 250, -312, -312, -312, 88, -312, 373, - -312, -312, -312, 144, 146, -312, 185, 185, 185, -312, - 72, 99, 251, -312, 252, 316, -312, -312, -312, 338, - 341, 342, 324, 6, 412, -312, -312, -312, 298, -312, - 289, 426, 124, 267, 148, -312, -312, 152, -312, -312, - 421, 428, -312, 346, -312, -312, -312, -312, 74, 62, - 132, -312, 185, -312, 15, 6, -312, -312, -312, 6, - 168, 292, 185, 392, 286, 154, -312, -312, -312, 294, - 295, -312, -312, -312, 62, -312, -312, 210, 354, -24, - -312, -312, -312, -312, 293, 185, 180, 185, -312, 10, - 62, -312, -312, 62, 299, 296, -312 + 358, 50, 42, 43, 84, -43, 16, 95, 38, -14, + 42, -41, 29, -35, 189, 54, -337, 112, 112, -337, + -337, -337, -337, -337, -337, -337, -337, -337, -337, 14, + -337, 22, 216, 69, -337, -68, 151, 121, 121, 42, + 132, 42, 243, 238, 148, -337, 135, 135, 42, -337, + 119, 134, -337, 358, -337, 195, -337, -337, -337, -337, + -337, -35, 174, 165, -35, -15, -337, 287, 23, 295, + 187, 42, 42, 236, -337, 231, 160, -337, -337, -337, + 193, 315, 278, 42, 42, -337, -337, -337, -337, 166, + -337, 255, -337, -337, -337, 193, 255, 243, 11, -337, + -337, -337, -337, -337, -337, -337, -337, -114, -337, -337, + -337, -337, -337, -337, -337, -337, -337, 286, -71, 160, + 193, -337, 324, 328, 126, -102, 175, 184, 125, 227, + 196, 261, -337, 159, 268, 197, -337, 7, 320, -337, + -337, -337, -337, -337, -337, -337, -337, -337, -337, -337, + -337, -337, -337, -337, 219, -63, -337, -337, -337, -337, + 356, -15, 199, -337, -28, -15, -337, 313, 314, 318, + -337, 23, -337, 252, 366, 253, 65, 281, -337, -337, + -44, 215, -337, 0, 18, 327, 214, 193, 80, 24, + 218, 261, 404, 193, 183, 221, -88, 4, 236, -337, + 193, -337, 193, 378, 193, -337, -337, 261, -337, 261, + -56, 225, 78, 261, 261, 261, 261, 261, 261, 261, + 261, 261, 261, 261, 261, 261, 261, 261, 243, 193, + 315, -337, 226, 20, -337, -337, 193, -337, -337, -337, + -337, 243, 243, 243, -337, 302, 191, 98, -337, -35, + 42, -337, 384, 23, -337, 193, -337, -337, 232, -337, + -337, -337, -337, -337, -337, 306, -16, 32, 193, 193, + -337, 327, 300, 56, -337, -337, -35, -337, 9, -337, + 234, -337, 6, -337, 333, -337, -337, -337, 293, 361, + 438, 261, 244, 159, -337, 305, 247, 438, 438, 438, + 438, 472, 472, 472, 472, 183, 183, -103, -103, -103, + -53, 250, 65, -337, 23, -337, 356, -337, -337, -337, + -337, 324, -337, 248, -337, -337, 256, -337, -337, -337, + 89, -337, 366, -337, -337, -337, 99, 115, -337, 193, + 193, 193, -337, 86, 13, 257, -337, 258, 317, -337, + -337, -337, 346, 348, 349, 331, 4, 419, -337, -337, + -337, 307, -337, 261, 438, 159, 266, 120, -337, -337, + 136, -337, -337, 421, 422, -337, 330, -337, -337, -337, + -337, -87, 65, 117, -337, 193, -337, 6, 4, -337, + -337, -337, 4, 153, 272, 193, 404, 273, 140, -337, + -337, -337, 274, 276, -337, -337, -337, 65, -337, -337, + 510, 328, -38, -337, -337, -337, -337, 279, 193, 146, + 193, -337, 19, 65, -337, -337, 65, 271, 277, -337 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -872,78 +875,78 @@ static const yytype_int16 yypact[] = static const yytype_uint8 yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 0, 0, 0, 0, 0, 232, 3, 18, 18, 16, + 0, 0, 0, 0, 0, 235, 3, 18, 18, 16, 9, 7, 10, 15, 12, 13, 11, 14, 8, 66, - 67, 95, 0, 207, 57, 25, 0, 36, 36, 0, - 0, 0, 0, 83, 0, 206, 55, 55, 0, 30, - 0, 0, 1, 231, 2, 0, 6, 5, 77, 78, + 67, 95, 0, 210, 57, 25, 0, 36, 36, 0, + 0, 0, 0, 83, 0, 209, 55, 55, 0, 30, + 0, 0, 1, 234, 2, 0, 6, 5, 77, 78, 76, 0, 80, 0, 0, 111, 53, 0, 0, 0, - 0, 0, 0, 89, 28, 0, 61, 194, 102, 82, + 0, 0, 0, 89, 28, 0, 61, 197, 102, 82, 0, 0, 0, 0, 0, 31, 70, 69, 4, 0, 71, 95, 72, 79, 75, 0, 95, 0, 0, 73, - 208, 191, 192, 195, 196, 0, 114, 187, 188, 193, - 189, 190, 24, 23, 0, 0, 61, 0, 56, 0, - 0, 0, 183, 0, 0, 0, 0, 0, 0, 185, - 0, 86, 84, 112, 216, 117, 124, 125, 126, 119, - 121, 127, 120, 139, 128, 129, 130, 123, 118, 132, - 133, 0, 89, 63, 54, 51, 52, 0, 111, 94, - 96, 101, 111, 106, 108, 107, 104, 26, 0, 35, - 0, 0, 0, 88, 0, 29, 233, 0, 0, 59, - 83, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 0, 134, 0, 0, 0, 89, 85, 0, 214, 0, - 0, 0, 215, 116, 0, 136, 0, 0, 0, 0, + 211, 192, 195, 198, 193, 194, 199, 0, 114, 187, + 188, 189, 196, 190, 191, 24, 23, 0, 0, 61, + 0, 56, 0, 0, 0, 183, 0, 0, 0, 0, + 0, 0, 185, 0, 86, 84, 112, 219, 117, 124, + 125, 126, 119, 121, 127, 120, 139, 128, 129, 130, + 123, 118, 132, 133, 0, 89, 63, 54, 51, 52, + 0, 111, 94, 96, 101, 111, 106, 108, 107, 104, + 26, 0, 35, 0, 0, 0, 88, 0, 29, 236, + 0, 0, 59, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 0, 134, 0, 0, 0, 89, 85, + 0, 217, 0, 0, 0, 218, 116, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 62, 21, - 0, 19, 68, 0, 100, 99, 98, 74, 0, 0, - 0, 115, 0, 0, 0, 37, 0, 0, 60, 0, - 0, 171, 0, 184, 186, 0, 174, 175, 176, 177, - 178, 179, 0, 0, 0, 0, 0, 158, 0, 0, - 0, 131, 122, 0, 87, 197, 199, 0, 201, 212, - 200, 91, 113, 150, 213, 151, 0, 146, 0, 0, - 0, 137, 0, 149, 148, 164, 165, 166, 167, 168, - 169, 170, 141, 140, 143, 142, 144, 145, 0, 65, - 64, 0, 17, 0, 97, 110, 109, 105, 0, 41, - 0, 44, 43, 0, 42, 47, 40, 50, 33, 0, - 34, 27, 234, 0, 0, 162, 0, 0, 0, 156, - 0, 0, 0, 180, 0, 0, 228, 220, 226, 224, - 227, 222, 0, 0, 0, 211, 205, 209, 0, 81, - 0, 147, 0, 0, 0, 138, 181, 0, 20, 32, - 0, 0, 48, 0, 39, 38, 58, 172, 0, 160, - 0, 159, 0, 163, 212, 0, 223, 225, 221, 0, - 198, 213, 0, 182, 0, 0, 154, 152, 22, 0, - 0, 49, 173, 157, 161, 202, 217, 229, 0, 93, - 155, 153, 45, 46, 0, 0, 0, 0, 90, 0, - 230, 218, 210, 92, 183, 0, 219 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 62, 21, 0, 19, 68, 0, 100, 99, 98, + 74, 0, 0, 0, 115, 0, 0, 0, 37, 0, + 0, 60, 0, 0, 171, 0, 184, 186, 0, 174, + 175, 176, 177, 178, 179, 0, 0, 0, 0, 0, + 158, 0, 0, 0, 131, 122, 0, 87, 200, 202, + 0, 204, 215, 203, 91, 113, 150, 216, 151, 0, + 146, 0, 0, 0, 137, 0, 149, 148, 164, 165, + 166, 167, 168, 169, 170, 141, 140, 143, 142, 144, + 145, 0, 65, 64, 0, 17, 0, 97, 110, 109, + 105, 0, 41, 0, 44, 43, 0, 42, 47, 40, + 50, 33, 0, 34, 27, 237, 0, 0, 162, 0, + 0, 0, 156, 0, 0, 0, 180, 0, 0, 231, + 223, 229, 227, 230, 225, 0, 0, 0, 214, 208, + 212, 0, 81, 0, 147, 0, 0, 0, 138, 181, + 0, 20, 32, 0, 0, 48, 0, 39, 38, 58, + 172, 0, 160, 0, 159, 0, 163, 215, 0, 226, + 228, 224, 0, 201, 216, 0, 182, 0, 0, 154, + 152, 22, 0, 0, 49, 173, 157, 161, 205, 220, + 232, 0, 93, 155, 153, 45, 46, 0, 0, 0, + 0, 90, 0, 233, 221, 213, 92, 183, 0, 222 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -312, -312, -312, 390, -312, 437, -312, 145, -312, -312, - -312, -312, -312, 139, -312, -312, 424, -312, 130, -312, - -312, -312, 416, -312, -312, -312, 348, -312, -312, 238, - -197, 1, 402, -13, 436, -312, -312, 264, 308, -312, - -312, -312, -122, -312, -312, 165, -312, 241, -312, -312, - -124, -186, -223, 290, -94, -70, -312, -312, -312, -312, - -312, -312, 301, -312, -312, -312, -312, -312, -312, -312, - -312, 71, -65, -114, -312, -30, -312, -312, -312, -311, - 104, -312, -312, -312, 0, -312, 107, 358, -312, -312, - -312, -312, -312, 85 + -337, -337, -337, 385, -337, 425, -337, 123, -337, -337, + -337, -337, -337, 116, -337, -337, 406, -337, 113, -337, + -337, -337, 399, -337, -337, -337, 335, -337, -337, 217, + -208, 30, 386, -13, 426, -337, -337, 249, 269, -337, + -337, -337, -131, -337, -337, 97, -337, 220, -337, -337, + -25, -189, -238, 263, -94, -70, -337, -337, -337, -337, + -337, -337, 288, -337, -337, -337, -337, -337, -337, -337, + -337, 55, -66, -117, -337, -337, -34, -337, -337, -337, + -336, 76, -337, -337, -337, 1, -337, 91, 342, -337, + -337, -337, -337, -337, 70 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 14, 15, 16, 17, 56, 230, 231, 18, 113, - 19, 20, 75, 174, 21, 22, 71, 244, 245, 327, - 374, 23, 83, 24, 25, 26, 121, 27, 152, 153, - 28, 29, 91, 30, 61, 62, 94, 31, 80, 131, - 195, 196, 118, 359, 418, 65, 159, 160, 236, 43, - 99, 132, 105, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 186, 142, 143, 144, 145, 262, 146, 147, - 148, 149, 150, 107, 108, 109, 110, 111, 274, 275, - 276, 277, 278, 44, 279, 355, 356, 357, 203, 280, - 352, 421, 54, 177 + -1, 14, 15, 16, 17, 56, 233, 234, 18, 116, + 19, 20, 75, 177, 21, 22, 71, 247, 248, 330, + 377, 23, 83, 24, 25, 26, 124, 27, 155, 156, + 28, 29, 91, 30, 61, 62, 94, 31, 80, 134, + 198, 199, 121, 362, 421, 65, 162, 163, 239, 43, + 99, 135, 107, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 189, 145, 146, 147, 148, 265, 149, 150, + 151, 152, 153, 109, 110, 111, 112, 113, 114, 277, + 278, 279, 280, 281, 44, 282, 358, 359, 360, 206, + 283, 355, 424, 54, 180 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -951,210 +954,216 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 51, 161, 34, 106, 270, 175, 101, 102, 77, 33, - 45, 253, 78, 424, 50, 117, 198, 170, 198, 79, - 417, 58, 9, 173, 32, 1, 288, 333, 58, 37, - 228, 185, 97, 2, 232, 234, 193, 33, 237, 73, - 3, 76, 390, 48, 167, 4, 345, 168, 85, 330, - 98, 199, 59, 5, 6, 289, 189, 38, 191, 59, - 199, 235, 90, 7, 8, 90, 334, 163, 166, 9, - 201, 115, 116, 281, 10, 77, 344, 49, 407, 201, - 346, 291, 63, 155, 156, 347, 60, 171, 367, 210, - 263, 348, 349, 60, 265, 35, 9, 103, 227, 292, - 11, 272, 178, 241, 364, 283, 350, 285, 179, 46, - -229, 351, 224, 266, 225, 12, 36, 192, 189, 199, - 267, 122, 101, 102, 77, 39, 13, 122, 101, 102, - 77, 200, 309, 354, 286, 197, 287, 47, 201, 161, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 40, 254, 210, 129, 123, - 124, 273, 104, 251, 164, 123, 124, 338, 199, 255, - 41, 340, 341, 13, 165, 9, 395, 337, 199, -203, - 199, 381, 225, 372, 199, 106, 266, 201, 122, 101, - 102, 77, 42, 339, 345, 308, 125, 201, 382, 201, - 52, 373, 125, 201, 175, 199, 409, 343, 315, 316, - 317, 66, 197, 103, 122, 101, 102, 77, 361, 103, - 184, 180, 53, 181, 201, 184, 123, 124, 346, 199, - 402, 126, 248, 347, 55, 249, 345, 126, 199, 348, - 349, 403, 378, 379, 380, 127, 106, 331, 201, 68, - 67, 127, 187, 124, 350, 342, 158, 201, -229, 351, - 69, 162, 70, 125, 312, 128, 129, 313, 74, 77, - 346, 128, 129, 130, 79, 347, 81, 363, 104, 130, - 103, 348, 349, 328, 104, 414, 329, 82, 404, 125, - 393, 86, 122, 101, 102, 77, 350, 210, 126, 204, - 376, 351, 377, 168, 397, 197, 103, 197, 398, 87, - 411, 168, 127, 197, 89, 95, 100, 221, 222, 223, - 224, 420, 225, 423, 188, 92, 93, -204, 92, 205, - 112, 124, 128, 129, 415, 114, 422, 117, 127, 249, - 130, 119, 120, 151, 154, 104, 157, 63, 169, 394, - 256, 257, 258, 259, 260, 261, 101, 176, 128, 129, - 182, 183, 190, 194, 226, 229, 130, 125, 238, 239, - 240, 104, 197, 233, 206, 242, 243, 247, 246, 205, - 250, 9, 268, 284, 103, 271, 290, 311, 318, 332, - 335, 336, 288, 199, 353, 207, 358, 362, 225, 370, - 365, 366, 188, 208, 209, 371, 385, 383, 384, 386, - 210, 211, 387, 388, 389, 391, 127, 392, 212, 213, - 214, 215, 216, 396, 206, 217, 218, 399, 219, 220, - 221, 222, 223, 224, 400, 225, 128, 129, 360, 205, - 319, 401, 410, 88, 130, 269, 320, 408, 419, 104, - 412, 413, 426, 321, 209, 57, 181, 369, 368, 375, - 210, 211, 72, 84, 172, 310, 96, 64, 212, 213, - 214, 215, 216, 205, 314, 217, 218, 322, 219, 220, - 221, 222, 223, 224, 206, 225, 264, 282, 252, 406, - 425, 405, 202, 416, 323, 0, 0, 0, 0, 0, - 0, 0, 0, 205, 0, 269, 0, 0, 0, 324, - 0, 0, 0, 325, 209, 0, 0, 0, -230, 0, - 210, 211, 0, 0, 0, 0, 326, 0, 212, 213, - 214, 215, 216, 0, 0, 217, 218, 0, 219, 220, - 221, 222, 223, 224, 0, 225, 0, 0, 209, 0, - 0, 0, 0, 0, 210, -230, 0, 0, 0, 0, - 0, 0, -230, -230, -230, 215, 216, 0, 0, 217, - 218, 0, 219, 220, 221, 222, 223, 224, 209, 225, - 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -230, -230, 0, 0, -230, - -230, 0, 219, 220, 221, 222, 223, 224, 0, 225 + 51, 164, 108, 34, 273, 178, 420, 33, 78, 201, + 201, 45, 79, 120, 173, 336, 9, 77, 202, 202, + 393, 256, 427, 58, 231, 213, 176, 101, 102, 77, + 37, 58, 46, 97, 188, 348, 291, 204, 204, 196, + 73, 333, 76, 50, 170, 33, 35, 171, 48, 85, + 227, 98, 228, 237, 59, 183, 410, 184, 38, 192, + 47, 194, 59, 166, 169, 292, 337, 284, 347, 349, + 275, 405, 118, 119, 350, 213, 370, 32, 202, 238, + 351, 352, 49, 340, 158, 159, 174, 36, 60, 68, + 202, 90, 63, 266, 90, 353, 60, 204, 230, -232, + 354, 39, 228, 42, 367, 244, 167, 268, 286, 204, + 288, 182, 385, 202, 251, 341, 168, 252, 103, 202, + 195, 192, 13, 200, 357, 203, 269, 41, 125, 101, + 102, 77, 204, 270, 269, 312, 235, 289, 204, 290, + 240, 342, 164, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 254, 104, + 105, 276, 125, 101, 102, 77, 126, 127, 257, 132, + -206, 202, 258, 294, 343, 344, 398, 9, 315, 348, + 40, 316, 187, 181, 375, 106, 202, 108, 161, 52, + 204, 295, 202, 165, 311, 384, 125, 101, 102, 77, + 126, 127, 376, 128, 178, 204, 412, 318, 319, 320, + 9, 204, 346, 349, 53, 55, 322, 200, 350, 66, + 103, 364, 323, 202, 351, 352, 406, 187, 67, 324, + 125, 101, 102, 77, 126, 127, 69, 128, 129, 353, + 74, 70, 204, -232, 354, 381, 382, 383, 108, 77, + 79, 334, 130, 325, 103, 82, 331, 379, 345, 332, + 171, 104, 105, 81, 125, 101, 102, 77, 190, 127, + 326, 128, 129, 380, 131, 132, 200, 86, 400, 93, + 366, 200, 133, 89, 95, 327, 130, 106, 103, 328, + 100, 407, 87, 396, 401, 104, 105, 171, 414, 115, + 117, 200, 329, 127, 425, 128, 129, 252, 131, 132, + 92, 213, 120, 92, -207, 122, 133, 123, 154, 157, + 130, 106, 103, 160, 423, 63, 426, 172, 101, 104, + 105, 179, 185, 224, 225, 226, 227, 207, 228, 128, + 191, 186, 131, 132, 259, 260, 261, 262, 263, 264, + 133, 193, 397, 197, 130, 106, 103, 229, 200, 232, + 236, 241, 242, 104, 105, 1, 243, 208, 245, 246, + 250, 249, 253, 2, 191, 271, 131, 132, 9, 274, + 3, 287, 293, 314, 133, 4, 321, 335, 130, 106, + 338, 339, 291, 5, 6, 356, 361, 104, 105, 202, + 368, 365, 228, 7, 8, 373, 369, 388, 208, 9, + 131, 132, 209, 374, 10, 386, 387, 389, 133, 390, + 391, 392, 394, 106, 399, 404, 395, 402, 403, 411, + 184, 413, 415, 210, 416, 429, 422, 372, 88, 371, + 11, 211, 212, 57, 72, 378, 84, 313, 213, 214, + 96, 208, 255, 209, 175, 12, 317, 64, 215, 216, + 217, 218, 219, 285, 409, 220, 221, 363, 222, 223, + 224, 225, 226, 227, 272, 228, 267, 428, 408, 205, + 0, 419, 0, 212, 0, 208, 0, 0, 0, 213, + 214, 0, 0, 0, 0, 0, 209, 0, 0, 215, + 216, 217, 218, 219, 0, 0, 220, 221, 0, 222, + 223, 224, 225, 226, 227, 13, 228, 272, 0, 208, + 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, + -233, 0, 213, 214, 0, 0, 348, 0, 0, 0, + 0, 0, 215, 216, 217, 218, 219, 0, 0, 220, + 221, 0, 222, 223, 224, 225, 226, 227, 0, 228, + 212, 0, 0, 0, 0, 0, 213, -233, 0, 0, + 349, 0, 0, 0, 0, 350, -233, -233, -233, 218, + 219, 351, 352, 220, 221, 417, 222, 223, 224, 225, + 226, 227, 0, 228, 212, 0, 353, 0, 0, 0, + 213, 354, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -233, -233, 0, 0, -233, -233, 0, + 222, 223, 224, 225, 226, 227, 0, 228, 0, 0, + 0, 0, 0, 0, 418 }; static const yytype_int16 yycheck[] = { - 13, 95, 2, 68, 190, 119, 4, 5, 6, 3, - 10, 3, 42, 3, 13, 76, 3, 85, 3, 12, - 44, 9, 51, 117, 27, 7, 92, 250, 9, 73, - 152, 125, 48, 15, 158, 81, 130, 3, 162, 39, - 22, 41, 353, 19, 156, 27, 26, 159, 48, 246, - 66, 106, 40, 35, 36, 121, 126, 101, 128, 40, - 106, 107, 61, 45, 46, 64, 252, 97, 98, 51, - 125, 71, 72, 195, 56, 6, 273, 53, 389, 125, - 60, 95, 70, 83, 84, 65, 74, 155, 311, 128, - 184, 71, 72, 74, 83, 3, 51, 95, 159, 113, - 82, 156, 57, 168, 290, 199, 86, 201, 121, 73, - 90, 91, 151, 102, 153, 97, 3, 130, 188, 106, - 109, 3, 4, 5, 6, 85, 155, 3, 4, 5, - 6, 118, 226, 118, 204, 159, 206, 101, 125, 233, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 85, 148, 128, 148, 41, - 42, 155, 160, 156, 95, 41, 42, 83, 106, 182, - 89, 265, 266, 155, 105, 51, 362, 99, 106, 159, - 106, 109, 153, 95, 106, 250, 102, 125, 3, 4, - 5, 6, 117, 109, 26, 225, 78, 125, 99, 125, - 0, 113, 78, 125, 318, 106, 392, 154, 238, 239, - 240, 3, 159, 95, 3, 4, 5, 6, 288, 95, - 102, 155, 158, 157, 125, 102, 41, 42, 60, 106, - 156, 113, 156, 65, 103, 159, 26, 113, 106, 71, - 72, 109, 336, 337, 338, 127, 311, 247, 125, 155, - 157, 127, 41, 42, 86, 268, 91, 125, 90, 91, - 85, 96, 120, 78, 156, 147, 148, 159, 108, 6, - 60, 147, 148, 155, 12, 65, 115, 290, 160, 155, - 95, 71, 72, 156, 160, 75, 159, 120, 382, 78, - 360, 156, 3, 4, 5, 6, 86, 128, 113, 17, - 156, 91, 156, 159, 156, 159, 95, 159, 156, 156, - 156, 159, 127, 159, 88, 119, 3, 148, 149, 150, - 151, 415, 153, 417, 113, 61, 105, 159, 64, 47, - 4, 42, 147, 148, 124, 113, 156, 76, 127, 159, - 155, 84, 155, 3, 41, 160, 155, 70, 41, 362, - 130, 131, 132, 133, 134, 135, 4, 3, 147, 148, - 155, 155, 153, 85, 136, 3, 155, 78, 48, 48, - 48, 160, 159, 159, 92, 116, 3, 89, 118, 47, - 155, 51, 155, 3, 95, 156, 155, 155, 84, 3, - 156, 85, 92, 106, 159, 113, 63, 155, 153, 155, - 95, 154, 113, 121, 122, 155, 90, 156, 156, 71, - 128, 129, 71, 71, 90, 3, 127, 119, 136, 137, - 138, 139, 140, 156, 92, 143, 144, 6, 146, 147, - 148, 149, 150, 151, 6, 153, 147, 148, 106, 47, - 25, 95, 156, 53, 155, 113, 31, 155, 155, 160, - 156, 156, 156, 38, 122, 18, 157, 318, 313, 329, - 128, 129, 38, 47, 116, 227, 64, 31, 136, 137, - 138, 139, 140, 47, 233, 143, 144, 62, 146, 147, - 148, 149, 150, 151, 92, 153, 185, 197, 180, 385, - 419, 384, 134, 408, 79, -1, -1, -1, -1, -1, - -1, -1, -1, 47, -1, 113, -1, -1, -1, 94, - -1, -1, -1, 98, 122, -1, -1, -1, 92, -1, - 128, 129, -1, -1, -1, -1, 111, -1, 136, 137, - 138, 139, 140, -1, -1, 143, 144, -1, 146, 147, - 148, 149, 150, 151, -1, 153, -1, -1, 122, -1, - -1, -1, -1, -1, 128, 129, -1, -1, -1, -1, - -1, -1, 136, 137, 138, 139, 140, -1, -1, 143, - 144, -1, 146, 147, 148, 149, 150, 151, 122, 153, - -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 139, 140, -1, -1, 143, - 144, -1, 146, 147, 148, 149, 150, 151, -1, 153 + 13, 95, 68, 2, 193, 122, 44, 3, 42, 3, + 3, 10, 12, 76, 85, 253, 51, 6, 106, 106, + 356, 3, 3, 9, 155, 128, 120, 4, 5, 6, + 73, 9, 73, 48, 128, 26, 92, 125, 125, 133, + 39, 249, 41, 13, 158, 3, 3, 161, 19, 48, + 153, 66, 155, 81, 40, 157, 392, 159, 101, 129, + 101, 131, 40, 97, 98, 121, 255, 198, 276, 60, + 158, 158, 71, 72, 65, 128, 314, 27, 106, 107, + 71, 72, 53, 99, 83, 84, 157, 3, 74, 157, + 106, 61, 70, 187, 64, 86, 74, 125, 161, 90, + 91, 85, 155, 117, 293, 171, 95, 83, 202, 125, + 204, 124, 99, 106, 158, 83, 105, 161, 95, 106, + 133, 191, 157, 161, 118, 118, 102, 89, 3, 4, + 5, 6, 125, 109, 102, 229, 161, 207, 125, 209, + 165, 109, 236, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 158, 136, + 137, 157, 3, 4, 5, 6, 41, 42, 150, 150, + 161, 106, 185, 95, 268, 269, 365, 51, 158, 26, + 85, 161, 102, 57, 95, 162, 106, 253, 91, 0, + 125, 113, 106, 96, 228, 109, 3, 4, 5, 6, + 41, 42, 113, 78, 321, 125, 395, 241, 242, 243, + 51, 125, 156, 60, 160, 103, 25, 161, 65, 3, + 95, 291, 31, 106, 71, 72, 109, 102, 159, 38, + 3, 4, 5, 6, 41, 42, 85, 78, 113, 86, + 108, 120, 125, 90, 91, 339, 340, 341, 314, 6, + 12, 250, 127, 62, 95, 120, 158, 158, 271, 161, + 161, 136, 137, 115, 3, 4, 5, 6, 41, 42, + 79, 78, 113, 158, 149, 150, 161, 158, 158, 105, + 293, 161, 157, 88, 119, 94, 127, 162, 95, 98, + 3, 385, 158, 363, 158, 136, 137, 161, 158, 4, + 113, 161, 111, 42, 158, 78, 113, 161, 149, 150, + 61, 128, 76, 64, 161, 84, 157, 157, 3, 41, + 127, 162, 95, 157, 418, 70, 420, 41, 4, 136, + 137, 3, 157, 150, 151, 152, 153, 17, 155, 78, + 113, 157, 149, 150, 130, 131, 132, 133, 134, 135, + 157, 155, 365, 85, 127, 162, 95, 138, 161, 3, + 161, 48, 48, 136, 137, 7, 48, 47, 116, 3, + 89, 118, 157, 15, 113, 157, 149, 150, 51, 158, + 22, 3, 157, 157, 157, 27, 84, 3, 127, 162, + 158, 85, 92, 35, 36, 161, 63, 136, 137, 106, + 95, 157, 155, 45, 46, 157, 156, 90, 47, 51, + 149, 150, 92, 157, 56, 158, 158, 71, 157, 71, + 71, 90, 3, 162, 158, 95, 119, 6, 6, 157, + 159, 158, 158, 113, 158, 158, 157, 321, 53, 316, + 82, 121, 122, 18, 38, 332, 47, 230, 128, 129, + 64, 47, 183, 92, 119, 97, 236, 31, 138, 139, + 140, 141, 142, 200, 388, 145, 146, 106, 148, 149, + 150, 151, 152, 153, 113, 155, 188, 422, 387, 137, + -1, 411, -1, 122, -1, 47, -1, -1, -1, 128, + 129, -1, -1, -1, -1, -1, 92, -1, -1, 138, + 139, 140, 141, 142, -1, -1, 145, 146, -1, 148, + 149, 150, 151, 152, 153, 157, 155, 113, -1, 47, + -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, + 92, -1, 128, 129, -1, -1, 26, -1, -1, -1, + -1, -1, 138, 139, 140, 141, 142, -1, -1, 145, + 146, -1, 148, 149, 150, 151, 152, 153, -1, 155, + 122, -1, -1, -1, -1, -1, 128, 129, -1, -1, + 60, -1, -1, -1, -1, 65, 138, 139, 140, 141, + 142, 71, 72, 145, 146, 75, 148, 149, 150, 151, + 152, 153, -1, 155, 122, -1, 86, -1, -1, -1, + 128, 91, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 141, 142, -1, -1, 145, 146, -1, + 148, 149, 150, 151, 152, 153, -1, 155, -1, -1, + -1, -1, -1, -1, 124 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +static const yytype_uint16 yystos[] = { 0, 7, 15, 22, 27, 35, 36, 45, 46, 51, - 56, 82, 97, 155, 162, 163, 164, 165, 169, 171, - 172, 175, 176, 182, 184, 185, 186, 188, 191, 192, - 194, 198, 27, 3, 245, 3, 3, 73, 101, 85, - 85, 89, 117, 210, 244, 245, 73, 101, 19, 53, - 192, 194, 0, 158, 253, 103, 166, 166, 9, 40, - 74, 195, 196, 70, 195, 206, 3, 157, 155, 85, - 120, 177, 177, 245, 108, 173, 245, 6, 236, 12, - 199, 115, 120, 183, 183, 245, 156, 156, 164, 88, - 192, 193, 198, 105, 197, 119, 193, 48, 66, 211, - 3, 4, 5, 95, 160, 213, 233, 234, 235, 236, - 237, 238, 4, 170, 113, 245, 245, 76, 203, 84, - 155, 187, 3, 41, 42, 78, 113, 127, 147, 148, - 155, 200, 212, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 224, 225, 226, 227, 229, 230, 231, 232, - 233, 3, 189, 190, 41, 245, 245, 155, 206, 207, - 208, 215, 206, 236, 95, 105, 236, 156, 159, 41, - 85, 155, 187, 215, 174, 234, 3, 254, 57, 194, - 155, 157, 155, 155, 102, 215, 223, 41, 113, 216, - 153, 216, 194, 215, 85, 201, 202, 159, 3, 106, - 118, 125, 248, 249, 17, 47, 92, 113, 121, 122, - 128, 129, 136, 137, 138, 139, 140, 143, 144, 146, - 147, 148, 149, 150, 151, 153, 136, 159, 203, 3, - 167, 168, 211, 159, 81, 107, 209, 211, 48, 48, - 48, 233, 116, 3, 178, 179, 118, 89, 156, 159, - 155, 156, 199, 3, 148, 194, 130, 131, 132, 133, - 134, 135, 228, 215, 223, 83, 102, 109, 155, 113, - 212, 156, 156, 155, 239, 240, 241, 242, 243, 245, - 250, 203, 214, 215, 3, 215, 216, 216, 92, 121, - 155, 95, 113, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 236, 215, - 190, 155, 156, 159, 208, 236, 236, 236, 84, 25, - 31, 38, 62, 79, 94, 98, 111, 180, 156, 159, - 191, 245, 3, 213, 212, 156, 85, 99, 83, 109, - 215, 215, 194, 154, 191, 26, 60, 65, 71, 72, - 86, 91, 251, 159, 118, 246, 247, 248, 63, 204, - 106, 216, 155, 194, 212, 95, 154, 213, 168, 174, - 155, 155, 95, 113, 181, 179, 156, 156, 215, 215, - 215, 109, 99, 156, 156, 90, 71, 71, 71, 90, - 240, 3, 119, 216, 194, 212, 156, 156, 156, 6, - 6, 95, 156, 109, 215, 247, 241, 240, 155, 212, - 156, 156, 156, 156, 75, 124, 254, 44, 205, 155, - 215, 252, 156, 215, 3, 232, 156 + 56, 82, 97, 157, 164, 165, 166, 167, 171, 173, + 174, 177, 178, 184, 186, 187, 188, 190, 193, 194, + 196, 200, 27, 3, 248, 3, 3, 73, 101, 85, + 85, 89, 117, 212, 247, 248, 73, 101, 19, 53, + 194, 196, 0, 160, 256, 103, 168, 168, 9, 40, + 74, 197, 198, 70, 197, 208, 3, 159, 157, 85, + 120, 179, 179, 248, 108, 175, 248, 6, 239, 12, + 201, 115, 120, 185, 185, 248, 158, 158, 166, 88, + 194, 195, 200, 105, 199, 119, 195, 48, 66, 213, + 3, 4, 5, 95, 136, 137, 162, 215, 235, 236, + 237, 238, 239, 240, 241, 4, 172, 113, 248, 248, + 76, 205, 84, 157, 189, 3, 41, 42, 78, 113, + 127, 149, 150, 157, 202, 214, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 226, 227, 228, 229, 231, + 232, 233, 234, 235, 3, 191, 192, 41, 248, 248, + 157, 208, 209, 210, 217, 208, 239, 95, 105, 239, + 158, 161, 41, 85, 157, 189, 217, 176, 236, 3, + 257, 57, 196, 157, 159, 157, 157, 102, 217, 225, + 41, 113, 218, 155, 218, 196, 217, 85, 203, 204, + 161, 3, 106, 118, 125, 251, 252, 17, 47, 92, + 113, 121, 122, 128, 129, 138, 139, 140, 141, 142, + 145, 146, 148, 149, 150, 151, 152, 153, 155, 138, + 161, 205, 3, 169, 170, 213, 161, 81, 107, 211, + 213, 48, 48, 48, 235, 116, 3, 180, 181, 118, + 89, 158, 161, 157, 158, 201, 3, 150, 196, 130, + 131, 132, 133, 134, 135, 230, 217, 225, 83, 102, + 109, 157, 113, 214, 158, 158, 157, 242, 243, 244, + 245, 246, 248, 253, 205, 216, 217, 3, 217, 218, + 218, 92, 121, 157, 95, 113, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, + 218, 239, 217, 192, 157, 158, 161, 210, 239, 239, + 239, 84, 25, 31, 38, 62, 79, 94, 98, 111, + 182, 158, 161, 193, 248, 3, 215, 214, 158, 85, + 99, 83, 109, 217, 217, 196, 156, 193, 26, 60, + 65, 71, 72, 86, 91, 254, 161, 118, 249, 250, + 251, 63, 206, 106, 218, 157, 196, 214, 95, 156, + 215, 170, 176, 157, 157, 95, 113, 183, 181, 158, + 158, 217, 217, 217, 109, 99, 158, 158, 90, 71, + 71, 71, 90, 243, 3, 119, 218, 196, 214, 158, + 158, 158, 6, 6, 95, 158, 109, 217, 250, 244, + 243, 157, 214, 158, 158, 158, 158, 75, 124, 257, + 44, 207, 157, 217, 255, 158, 217, 3, 234, 158 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +static const yytype_uint16 yyr1[] = { - 0, 161, 162, 163, 163, 164, 164, 164, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 166, 166, 167, - 167, 168, 168, 169, 170, 171, 171, 172, 173, 174, - 175, 175, 176, 176, 176, 177, 177, 178, 178, 179, - 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, - 181, 182, 182, 182, 183, 183, 184, 185, 186, 186, - 187, 187, 188, 189, 189, 190, 191, 191, 191, 192, - 192, 193, 193, 194, 194, 195, 196, 196, 196, 197, - 197, 198, 199, 199, 200, 201, 201, 202, 203, 203, - 204, 204, 205, 205, 206, 206, 207, 207, 208, 209, - 209, 209, 210, 210, 211, 211, 211, 211, 211, 211, - 211, 211, 212, 212, 213, 213, 214, 215, 215, 215, - 215, 215, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 217, 217, 218, 218, 218, 218, 218, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 220, 220, 221, 221, 221, 221, 222, 222, 222, 222, - 223, 223, 224, 224, 225, 225, 225, 225, 225, 225, - 225, 226, 226, 227, 228, 228, 228, 228, 228, 228, - 229, 230, 231, 232, 232, 232, 232, 233, 233, 233, - 233, 234, 235, 235, 236, 237, 238, 239, 239, 240, - 240, 241, 241, 242, 242, 243, 244, 245, 245, 246, - 246, 247, 247, 248, 248, 249, 249, 250, 250, 250, - 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, - 252, 253, 253, 254, 254 + 0, 163, 164, 165, 165, 166, 166, 166, 167, 167, + 167, 167, 167, 167, 167, 167, 167, 168, 168, 169, + 169, 170, 170, 171, 172, 173, 173, 174, 175, 176, + 177, 177, 178, 178, 178, 179, 179, 180, 180, 181, + 182, 182, 182, 182, 182, 182, 182, 182, 183, 183, + 183, 184, 184, 184, 185, 185, 186, 187, 188, 188, + 189, 189, 190, 191, 191, 192, 193, 193, 193, 194, + 194, 195, 195, 196, 196, 197, 198, 198, 198, 199, + 199, 200, 201, 201, 202, 203, 203, 204, 205, 205, + 206, 206, 207, 207, 208, 208, 209, 209, 210, 211, + 211, 211, 212, 212, 213, 213, 213, 213, 213, 213, + 213, 213, 214, 214, 215, 215, 216, 217, 217, 217, + 217, 217, 218, 218, 218, 218, 218, 218, 218, 218, + 218, 218, 219, 219, 220, 220, 220, 220, 220, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 222, 222, 223, 223, 223, 223, 224, 224, 224, 224, + 225, 225, 226, 226, 227, 227, 227, 227, 227, 227, + 227, 228, 228, 229, 230, 230, 230, 230, 230, 230, + 231, 232, 233, 234, 234, 234, 234, 235, 235, 235, + 235, 235, 236, 237, 237, 238, 238, 239, 240, 241, + 242, 242, 243, 243, 244, 244, 245, 245, 246, 247, + 248, 248, 249, 249, 250, 250, 251, 251, 252, 252, + 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 255, 256, 256, 257, 257 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1179,11 +1188,11 @@ static const yytype_uint8 yyr2[] = 4, 5, 4, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 6, 1, 1, 1, 1, 1, 1, 4, 4, 5, 1, 3, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 4, 1, 3, 2, 1, 1, 3, 1, - 5, 1, 0, 2, 1, 1, 0, 4, 6, 8, - 1, 2, 1, 2, 1, 2, 1, 1, 1, 0, - 1, 1, 0, 1, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 1, 4, 1, 3, 2, 1, + 1, 3, 1, 5, 1, 0, 2, 1, 1, 0, + 4, 6, 8, 1, 2, 1, 2, 1, 2, 1, + 1, 1, 0, 1, 1, 0, 1, 3 }; @@ -1683,28 +1692,28 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 3: /* IDENTIFIER */ #line 143 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).sval)) ); } -#line 1687 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1696 "bison_parser.cpp" /* yacc.c:1258 */ break; case 4: /* STRING */ #line 143 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).sval)) ); } -#line 1693 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1702 "bison_parser.cpp" /* yacc.c:1258 */ break; case 5: /* FLOATVAL */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1699 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1708 "bison_parser.cpp" /* yacc.c:1258 */ break; case 6: /* INTVAL */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1705 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1714 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 163: /* statement_list */ + case 165: /* statement_list */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).stmt_vec)) != nullptr) { @@ -1714,22 +1723,22 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).stmt_vec)); } -#line 1718 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1727 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 164: /* statement */ + case 166: /* statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).statement)); } -#line 1724 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1733 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 165: /* preparable_statement */ + case 167: /* preparable_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).statement)); } -#line 1730 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1739 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 166: /* opt_hints */ + case 168: /* opt_hints */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -1739,10 +1748,10 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1743 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1752 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 167: /* hint_list */ + case 169: /* hint_list */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -1752,70 +1761,70 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1756 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1765 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 168: /* hint */ + case 170: /* hint */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 1762 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1771 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 169: /* prepare_statement */ + case 171: /* prepare_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).prep_stmt)); } -#line 1768 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1777 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 170: /* prepare_target_query */ + case 172: /* prepare_target_query */ #line 143 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).sval)) ); } -#line 1774 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1783 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 171: /* execute_statement */ + case 173: /* execute_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).exec_stmt)); } -#line 1780 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1789 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 172: /* import_statement */ + case 174: /* import_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).import_stmt)); } -#line 1786 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1795 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 173: /* import_file_type */ + case 175: /* import_file_type */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1792 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1801 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 174: /* file_path */ + case 176: /* file_path */ #line 143 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).sval)) ); } -#line 1798 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1807 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 175: /* show_statement */ + case 177: /* show_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).show_stmt)); } -#line 1804 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1813 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 176: /* create_statement */ + case 178: /* create_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).create_stmt)); } -#line 1810 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1819 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 177: /* opt_not_exists */ + case 179: /* opt_not_exists */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1816 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1825 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 178: /* column_def_commalist */ + case 180: /* column_def_commalist */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).column_vec)) != nullptr) { @@ -1825,58 +1834,58 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).column_vec)); } -#line 1829 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1838 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 179: /* column_def */ + case 181: /* column_def */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).column_t)); } -#line 1835 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1844 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 180: /* column_type */ + case 182: /* column_type */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1841 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1850 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 181: /* opt_column_nullable */ + case 183: /* opt_column_nullable */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1847 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1856 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 182: /* drop_statement */ + case 184: /* drop_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).drop_stmt)); } -#line 1853 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1862 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 183: /* opt_exists */ + case 185: /* opt_exists */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1859 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1868 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 184: /* delete_statement */ + case 186: /* delete_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1865 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1874 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 185: /* truncate_statement */ + case 187: /* truncate_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).delete_stmt)); } -#line 1871 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1880 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 186: /* insert_statement */ + case 188: /* insert_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).insert_stmt)); } -#line 1877 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1886 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 187: /* opt_column_list */ + case 189: /* opt_column_list */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).str_vec)) != nullptr) { @@ -1886,16 +1895,16 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 1890 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1899 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 188: /* update_statement */ + case 190: /* update_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).update_stmt)); } -#line 1896 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1905 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 189: /* update_clause_commalist */ + case 191: /* update_clause_commalist */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).update_vec)) != nullptr) { @@ -1905,52 +1914,52 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).update_vec)); } -#line 1909 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1918 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 190: /* update_clause */ + case 192: /* update_clause */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).update_t)); } -#line 1915 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1924 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 191: /* select_statement */ + case 193: /* select_statement */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1921 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1930 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 192: /* select_with_paren */ + case 194: /* select_with_paren */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1927 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1936 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 193: /* select_paren_or_clause */ + case 195: /* select_paren_or_clause */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1933 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1942 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 194: /* select_no_paren */ + case 196: /* select_no_paren */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1939 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1948 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 198: /* select_clause */ + case 200: /* select_clause */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).select_stmt)); } -#line 1945 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1954 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 199: /* opt_distinct */ + case 201: /* opt_distinct */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 1951 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1960 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 200: /* select_list */ + case 202: /* select_list */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -1960,40 +1969,40 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 1964 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1973 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 201: /* opt_from_clause */ + case 203: /* opt_from_clause */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 1970 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1979 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 202: /* from_clause */ + case 204: /* from_clause */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 1976 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1985 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 203: /* opt_where */ + case 205: /* opt_where */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 1982 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1991 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 204: /* opt_group */ + case 206: /* opt_group */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).group_t)); } -#line 1988 "bison_parser.cpp" /* yacc.c:1258 */ +#line 1997 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 205: /* opt_having */ + case 207: /* opt_having */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 1994 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2003 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 206: /* opt_order */ + case 208: /* opt_order */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).order_vec)) != nullptr) { @@ -2003,10 +2012,10 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2007 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2016 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 207: /* order_list */ + case 209: /* order_list */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).order_vec)) != nullptr) { @@ -2016,34 +2025,34 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).order_vec)); } -#line 2020 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2029 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 208: /* order_desc */ + case 210: /* order_desc */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).order)); } -#line 2026 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2035 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 209: /* opt_order_type */ + case 211: /* opt_order_type */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 2032 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2041 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 210: /* opt_top */ + case 212: /* opt_top */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).limit)); } -#line 2038 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2047 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 211: /* opt_limit */ + case 213: /* opt_limit */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).limit)); } -#line 2044 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2053 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 212: /* expr_list */ + case 214: /* expr_list */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2053,10 +2062,10 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2057 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2066 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 213: /* literal_list */ + case 215: /* literal_list */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2066,178 +2075,184 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).expr_vec)); } -#line 2070 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2079 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 214: /* expr_alias */ + case 216: /* expr_alias */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2076 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2085 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 215: /* expr */ + case 217: /* expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2082 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2091 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 216: /* operand */ + case 218: /* operand */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2088 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2097 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 217: /* scalar_expr */ + case 219: /* scalar_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2094 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2103 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 218: /* unary_expr */ + case 220: /* unary_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2100 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2109 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 219: /* binary_expr */ + case 221: /* binary_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2106 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2115 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 220: /* logic_expr */ + case 222: /* logic_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2112 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2121 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 221: /* in_expr */ + case 223: /* in_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2118 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2127 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 222: /* case_expr */ + case 224: /* case_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2124 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2133 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 223: /* case_list */ + case 225: /* case_list */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2130 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2139 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 224: /* exists_expr */ + case 226: /* exists_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2136 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2145 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 225: /* comp_expr */ + case 227: /* comp_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2142 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2151 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 226: /* function_expr */ + case 228: /* function_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2148 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2157 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 227: /* extract_expr */ + case 229: /* extract_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2154 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2163 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 228: /* datetime_field */ + case 230: /* datetime_field */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 2160 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2169 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 229: /* array_expr */ + case 231: /* array_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2166 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2175 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 230: /* array_index */ + case 232: /* array_index */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2172 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2181 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 231: /* between_expr */ + case 233: /* between_expr */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2178 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2187 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 232: /* column_name */ + case 234: /* column_name */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2184 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2193 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 233: /* literal */ + case 235: /* literal */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2190 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2199 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 234: /* string_literal */ + case 236: /* string_literal */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2196 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2205 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 235: /* num_literal */ + case 237: /* bool_literal */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2202 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2211 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 236: /* int_literal */ + case 238: /* num_literal */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2208 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2217 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 237: /* null_literal */ + case 239: /* int_literal */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2214 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2223 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 238: /* param_expr */ + case 240: /* null_literal */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2220 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2229 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 239: /* table_ref */ + case 241: /* param_expr */ +#line 152 "bison_parser.y" /* yacc.c:1258 */ + { delete (((*yyvaluep).expr)); } +#line 2235 "bison_parser.cpp" /* yacc.c:1258 */ + break; + + case 242: /* table_ref */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2226 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2241 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 240: /* table_ref_atomic */ + case 243: /* table_ref_atomic */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2232 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2247 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 241: /* nonjoin_table_ref_atomic */ + case 244: /* nonjoin_table_ref_atomic */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2238 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2253 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 242: /* table_ref_commalist */ + case 245: /* table_ref_commalist */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).table_vec)) != nullptr) { @@ -2247,70 +2262,70 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).table_vec)); } -#line 2251 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2266 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 243: /* table_ref_name */ + case 246: /* table_ref_name */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2257 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2272 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 244: /* table_ref_name_no_alias */ + case 247: /* table_ref_name_no_alias */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2263 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2278 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 245: /* table_name */ + case 248: /* table_name */ #line 142 "bison_parser.y" /* yacc.c:1258 */ { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2269 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2284 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 246: /* table_alias */ + case 249: /* table_alias */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).alias_t)); } -#line 2275 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2290 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 247: /* opt_table_alias */ + case 250: /* opt_table_alias */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).alias_t)); } -#line 2281 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2296 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 248: /* alias */ + case 251: /* alias */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).alias_t)); } -#line 2287 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2302 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 249: /* opt_alias */ + case 252: /* opt_alias */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).alias_t)); } -#line 2293 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2308 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 250: /* join_clause */ + case 253: /* join_clause */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).table)); } -#line 2299 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2314 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 251: /* opt_join_type */ + case 254: /* opt_join_type */ #line 141 "bison_parser.y" /* yacc.c:1258 */ { } -#line 2305 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2320 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 252: /* join_condition */ + case 255: /* join_condition */ #line 152 "bison_parser.y" /* yacc.c:1258 */ { delete (((*yyvaluep).expr)); } -#line 2311 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2326 "bison_parser.cpp" /* yacc.c:1258 */ break; - case 254: /* ident_commalist */ + case 257: /* ident_commalist */ #line 144 "bison_parser.y" /* yacc.c:1258 */ { if ((((*yyvaluep).str_vec)) != nullptr) { @@ -2320,7 +2335,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio } delete (((*yyvaluep).str_vec)); } -#line 2324 "bison_parser.cpp" /* yacc.c:1258 */ +#line 2339 "bison_parser.cpp" /* yacc.c:1258 */ break; @@ -2439,7 +2454,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 2443 "bison_parser.cpp" /* yacc.c:1440 */ +#line 2458 "bison_parser.cpp" /* yacc.c:1440 */ yylsp[0] = yylloc; goto yysetstate; @@ -2627,7 +2642,7 @@ yyreduce: switch (yyn) { case 2: -#line 253 "bison_parser.y" /* yacc.c:1666 */ +#line 254 "bison_parser.y" /* yacc.c:1666 */ { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { // Transfers ownership of the statement. @@ -2645,226 +2660,226 @@ yyreduce: } delete (yyvsp[-1].stmt_vec); } -#line 2649 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2664 "bison_parser.cpp" /* yacc.c:1666 */ break; case 3: -#line 274 "bison_parser.y" /* yacc.c:1666 */ +#line 275 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 2660 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2675 "bison_parser.cpp" /* yacc.c:1666 */ break; case 4: -#line 280 "bison_parser.y" /* yacc.c:1666 */ +#line 281 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[0].statement)->stringLength = yylloc.string_length; yylloc.string_length = 0; (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 2671 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2686 "bison_parser.cpp" /* yacc.c:1666 */ break; case 5: -#line 289 "bison_parser.y" /* yacc.c:1666 */ +#line 290 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2680 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2695 "bison_parser.cpp" /* yacc.c:1666 */ break; case 6: -#line 293 "bison_parser.y" /* yacc.c:1666 */ +#line 294 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 2689 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2704 "bison_parser.cpp" /* yacc.c:1666 */ break; case 7: -#line 297 "bison_parser.y" /* yacc.c:1666 */ +#line 298 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 2697 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2712 "bison_parser.cpp" /* yacc.c:1666 */ break; case 8: -#line 304 "bison_parser.y" /* yacc.c:1666 */ +#line 305 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 2703 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2718 "bison_parser.cpp" /* yacc.c:1666 */ break; case 9: -#line 305 "bison_parser.y" /* yacc.c:1666 */ +#line 306 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 2709 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2724 "bison_parser.cpp" /* yacc.c:1666 */ break; case 10: -#line 306 "bison_parser.y" /* yacc.c:1666 */ +#line 307 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 2715 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2730 "bison_parser.cpp" /* yacc.c:1666 */ break; case 11: -#line 307 "bison_parser.y" /* yacc.c:1666 */ +#line 308 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 2721 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2736 "bison_parser.cpp" /* yacc.c:1666 */ break; case 12: -#line 308 "bison_parser.y" /* yacc.c:1666 */ +#line 309 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2727 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2742 "bison_parser.cpp" /* yacc.c:1666 */ break; case 13: -#line 309 "bison_parser.y" /* yacc.c:1666 */ +#line 310 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 2733 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2748 "bison_parser.cpp" /* yacc.c:1666 */ break; case 14: -#line 310 "bison_parser.y" /* yacc.c:1666 */ +#line 311 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 2739 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2754 "bison_parser.cpp" /* yacc.c:1666 */ break; case 15: -#line 311 "bison_parser.y" /* yacc.c:1666 */ +#line 312 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 2745 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2760 "bison_parser.cpp" /* yacc.c:1666 */ break; case 16: -#line 312 "bison_parser.y" /* yacc.c:1666 */ +#line 313 "bison_parser.y" /* yacc.c:1666 */ { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 2751 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2766 "bison_parser.cpp" /* yacc.c:1666 */ break; case 17: -#line 321 "bison_parser.y" /* yacc.c:1666 */ +#line 322 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 2757 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2772 "bison_parser.cpp" /* yacc.c:1666 */ break; case 18: -#line 322 "bison_parser.y" /* yacc.c:1666 */ +#line 323 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr_vec) = nullptr; } -#line 2763 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2778 "bison_parser.cpp" /* yacc.c:1666 */ break; case 19: -#line 327 "bison_parser.y" /* yacc.c:1666 */ +#line 328 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 2769 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2784 "bison_parser.cpp" /* yacc.c:1666 */ break; case 20: -#line 328 "bison_parser.y" /* yacc.c:1666 */ +#line 329 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 2775 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2790 "bison_parser.cpp" /* yacc.c:1666 */ break; case 21: -#line 332 "bison_parser.y" /* yacc.c:1666 */ +#line 333 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 2784 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2799 "bison_parser.cpp" /* yacc.c:1666 */ break; case 22: -#line 336 "bison_parser.y" /* yacc.c:1666 */ +#line 337 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 2794 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2809 "bison_parser.cpp" /* yacc.c:1666 */ break; case 23: -#line 348 "bison_parser.y" /* yacc.c:1666 */ +#line 349 "bison_parser.y" /* yacc.c:1666 */ { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 2804 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2819 "bison_parser.cpp" /* yacc.c:1666 */ break; case 25: -#line 358 "bison_parser.y" /* yacc.c:1666 */ +#line 359 "bison_parser.y" /* yacc.c:1666 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 2813 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2828 "bison_parser.cpp" /* yacc.c:1666 */ break; case 26: -#line 362 "bison_parser.y" /* yacc.c:1666 */ +#line 363 "bison_parser.y" /* yacc.c:1666 */ { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 2823 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2838 "bison_parser.cpp" /* yacc.c:1666 */ break; case 27: -#line 374 "bison_parser.y" /* yacc.c:1666 */ +#line 375 "bison_parser.y" /* yacc.c:1666 */ { (yyval.import_stmt) = new ImportStatement((ImportType) (yyvsp[-4].uval)); (yyval.import_stmt)->filePath = (yyvsp[-2].sval); (yyval.import_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 2834 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2849 "bison_parser.cpp" /* yacc.c:1666 */ break; case 28: -#line 383 "bison_parser.y" /* yacc.c:1666 */ +#line 384 "bison_parser.y" /* yacc.c:1666 */ { (yyval.uval) = kImportCSV; } -#line 2840 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2855 "bison_parser.cpp" /* yacc.c:1666 */ break; case 29: -#line 387 "bison_parser.y" /* yacc.c:1666 */ +#line 388 "bison_parser.y" /* yacc.c:1666 */ { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 2846 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2861 "bison_parser.cpp" /* yacc.c:1666 */ break; case 30: -#line 397 "bison_parser.y" /* yacc.c:1666 */ +#line 398 "bison_parser.y" /* yacc.c:1666 */ { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 2854 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2869 "bison_parser.cpp" /* yacc.c:1666 */ break; case 31: -#line 400 "bison_parser.y" /* yacc.c:1666 */ +#line 401 "bison_parser.y" /* yacc.c:1666 */ { (yyval.show_stmt) = new ShowStatement(kShowColumns); (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 2864 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2879 "bison_parser.cpp" /* yacc.c:1666 */ break; case 32: -#line 414 "bison_parser.y" /* yacc.c:1666 */ +#line 415 "bison_parser.y" /* yacc.c:1666 */ { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); (yyval.create_stmt)->ifNotExists = (yyvsp[-5].bval); @@ -2872,11 +2887,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-4].table_name).name; (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 2876 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2891 "bison_parser.cpp" /* yacc.c:1666 */ break; case 33: -#line 421 "bison_parser.y" /* yacc.c:1666 */ +#line 422 "bison_parser.y" /* yacc.c:1666 */ { (yyval.create_stmt) = new CreateStatement(kCreateTable); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2884,11 +2899,11 @@ yyreduce: (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 2888 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2903 "bison_parser.cpp" /* yacc.c:1666 */ break; case 34: -#line 428 "bison_parser.y" /* yacc.c:1666 */ +#line 429 "bison_parser.y" /* yacc.c:1666 */ { (yyval.create_stmt) = new CreateStatement(kCreateView); (yyval.create_stmt)->ifNotExists = (yyvsp[-4].bval); @@ -2897,174 +2912,174 @@ yyreduce: (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 2901 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2916 "bison_parser.cpp" /* yacc.c:1666 */ break; case 35: -#line 439 "bison_parser.y" /* yacc.c:1666 */ +#line 440 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = true; } -#line 2907 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2922 "bison_parser.cpp" /* yacc.c:1666 */ break; case 36: -#line 440 "bison_parser.y" /* yacc.c:1666 */ +#line 441 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = false; } -#line 2913 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2928 "bison_parser.cpp" /* yacc.c:1666 */ break; case 37: -#line 444 "bison_parser.y" /* yacc.c:1666 */ +#line 445 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 2919 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2934 "bison_parser.cpp" /* yacc.c:1666 */ break; case 38: -#line 445 "bison_parser.y" /* yacc.c:1666 */ +#line 446 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 2925 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2940 "bison_parser.cpp" /* yacc.c:1666 */ break; case 39: -#line 449 "bison_parser.y" /* yacc.c:1666 */ +#line 450 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); } -#line 2933 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2948 "bison_parser.cpp" /* yacc.c:1666 */ break; case 40: -#line 455 "bison_parser.y" /* yacc.c:1666 */ +#line 456 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 2939 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2954 "bison_parser.cpp" /* yacc.c:1666 */ break; case 41: -#line 456 "bison_parser.y" /* yacc.c:1666 */ +#line 457 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 2945 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2960 "bison_parser.cpp" /* yacc.c:1666 */ break; case 42: -#line 457 "bison_parser.y" /* yacc.c:1666 */ +#line 458 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 2951 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2966 "bison_parser.cpp" /* yacc.c:1666 */ break; case 43: -#line 458 "bison_parser.y" /* yacc.c:1666 */ +#line 459 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 2957 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2972 "bison_parser.cpp" /* yacc.c:1666 */ break; case 44: -#line 459 "bison_parser.y" /* yacc.c:1666 */ +#line 460 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 2963 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2978 "bison_parser.cpp" /* yacc.c:1666 */ break; case 45: -#line 460 "bison_parser.y" /* yacc.c:1666 */ +#line 461 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 2969 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2984 "bison_parser.cpp" /* yacc.c:1666 */ break; case 46: -#line 461 "bison_parser.y" /* yacc.c:1666 */ +#line 462 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 2975 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2990 "bison_parser.cpp" /* yacc.c:1666 */ break; case 47: -#line 462 "bison_parser.y" /* yacc.c:1666 */ +#line 463 "bison_parser.y" /* yacc.c:1666 */ { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 2981 "bison_parser.cpp" /* yacc.c:1666 */ +#line 2996 "bison_parser.cpp" /* yacc.c:1666 */ break; case 48: -#line 466 "bison_parser.y" /* yacc.c:1666 */ +#line 467 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = true; } -#line 2987 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3002 "bison_parser.cpp" /* yacc.c:1666 */ break; case 49: -#line 467 "bison_parser.y" /* yacc.c:1666 */ +#line 468 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = false; } -#line 2993 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3008 "bison_parser.cpp" /* yacc.c:1666 */ break; case 50: -#line 468 "bison_parser.y" /* yacc.c:1666 */ +#line 469 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = false; } -#line 2999 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3014 "bison_parser.cpp" /* yacc.c:1666 */ break; case 51: -#line 478 "bison_parser.y" /* yacc.c:1666 */ +#line 479 "bison_parser.y" /* yacc.c:1666 */ { (yyval.drop_stmt) = new DropStatement(kDropTable); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3010 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3025 "bison_parser.cpp" /* yacc.c:1666 */ break; case 52: -#line 484 "bison_parser.y" /* yacc.c:1666 */ +#line 485 "bison_parser.y" /* yacc.c:1666 */ { (yyval.drop_stmt) = new DropStatement(kDropView); (yyval.drop_stmt)->ifExists = (yyvsp[-1].bval); (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3021 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3036 "bison_parser.cpp" /* yacc.c:1666 */ break; case 53: -#line 490 "bison_parser.y" /* yacc.c:1666 */ +#line 491 "bison_parser.y" /* yacc.c:1666 */ { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3031 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3046 "bison_parser.cpp" /* yacc.c:1666 */ break; case 54: -#line 498 "bison_parser.y" /* yacc.c:1666 */ +#line 499 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = true; } -#line 3037 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3052 "bison_parser.cpp" /* yacc.c:1666 */ break; case 55: -#line 499 "bison_parser.y" /* yacc.c:1666 */ +#line 500 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = false; } -#line 3043 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3058 "bison_parser.cpp" /* yacc.c:1666 */ break; case 56: -#line 508 "bison_parser.y" /* yacc.c:1666 */ +#line 509 "bison_parser.y" /* yacc.c:1666 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[-1].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[-1].table_name).name; (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 3054 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3069 "bison_parser.cpp" /* yacc.c:1666 */ break; case 57: -#line 517 "bison_parser.y" /* yacc.c:1666 */ +#line 518 "bison_parser.y" /* yacc.c:1666 */ { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 3064 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3079 "bison_parser.cpp" /* yacc.c:1666 */ break; case 58: -#line 530 "bison_parser.y" /* yacc.c:1666 */ +#line 531 "bison_parser.y" /* yacc.c:1666 */ { (yyval.insert_stmt) = new InsertStatement(kInsertValues); (yyval.insert_stmt)->schema = (yyvsp[-5].table_name).schema; @@ -3072,11 +3087,11 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3076 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3091 "bison_parser.cpp" /* yacc.c:1666 */ break; case 59: -#line 537 "bison_parser.y" /* yacc.c:1666 */ +#line 538 "bison_parser.y" /* yacc.c:1666 */ { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); (yyval.insert_stmt)->schema = (yyvsp[-2].table_name).schema; @@ -3084,56 +3099,56 @@ yyreduce: (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3088 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3103 "bison_parser.cpp" /* yacc.c:1666 */ break; case 60: -#line 548 "bison_parser.y" /* yacc.c:1666 */ +#line 549 "bison_parser.y" /* yacc.c:1666 */ { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3094 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3109 "bison_parser.cpp" /* yacc.c:1666 */ break; case 61: -#line 549 "bison_parser.y" /* yacc.c:1666 */ +#line 550 "bison_parser.y" /* yacc.c:1666 */ { (yyval.str_vec) = nullptr; } -#line 3100 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3115 "bison_parser.cpp" /* yacc.c:1666 */ break; case 62: -#line 559 "bison_parser.y" /* yacc.c:1666 */ +#line 560 "bison_parser.y" /* yacc.c:1666 */ { (yyval.update_stmt) = new UpdateStatement(); (yyval.update_stmt)->table = (yyvsp[-3].table); (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 3111 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3126 "bison_parser.cpp" /* yacc.c:1666 */ break; case 63: -#line 568 "bison_parser.y" /* yacc.c:1666 */ +#line 569 "bison_parser.y" /* yacc.c:1666 */ { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3117 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3132 "bison_parser.cpp" /* yacc.c:1666 */ break; case 64: -#line 569 "bison_parser.y" /* yacc.c:1666 */ +#line 570 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3123 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3138 "bison_parser.cpp" /* yacc.c:1666 */ break; case 65: -#line 573 "bison_parser.y" /* yacc.c:1666 */ +#line 574 "bison_parser.y" /* yacc.c:1666 */ { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3133 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3148 "bison_parser.cpp" /* yacc.c:1666 */ break; case 68: -#line 587 "bison_parser.y" /* yacc.c:1666 */ +#line 588 "bison_parser.y" /* yacc.c:1666 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3148,23 +3163,23 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3152 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3167 "bison_parser.cpp" /* yacc.c:1666 */ break; case 69: -#line 604 "bison_parser.y" /* yacc.c:1666 */ +#line 605 "bison_parser.y" /* yacc.c:1666 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3158 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3173 "bison_parser.cpp" /* yacc.c:1666 */ break; case 70: -#line 605 "bison_parser.y" /* yacc.c:1666 */ +#line 606 "bison_parser.y" /* yacc.c:1666 */ { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3164 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3179 "bison_parser.cpp" /* yacc.c:1666 */ break; case 73: -#line 614 "bison_parser.y" /* yacc.c:1666 */ +#line 615 "bison_parser.y" /* yacc.c:1666 */ { (yyval.select_stmt) = (yyvsp[-2].select_stmt); (yyval.select_stmt)->order = (yyvsp[-1].order_vec); @@ -3175,11 +3190,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3179 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3194 "bison_parser.cpp" /* yacc.c:1666 */ break; case 74: -#line 624 "bison_parser.y" /* yacc.c:1666 */ +#line 625 "bison_parser.y" /* yacc.c:1666 */ { // TODO: allow multiple unions (through linked list) // TODO: capture type of set_operator @@ -3194,11 +3209,11 @@ yyreduce: (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3198 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3213 "bison_parser.cpp" /* yacc.c:1666 */ break; case 81: -#line 656 "bison_parser.y" /* yacc.c:1666 */ +#line 657 "bison_parser.y" /* yacc.c:1666 */ { (yyval.select_stmt) = new SelectStatement(); (yyval.select_stmt)->limit = (yyvsp[-5].limit); @@ -3208,213 +3223,213 @@ yyreduce: (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 3212 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3227 "bison_parser.cpp" /* yacc.c:1666 */ break; case 82: -#line 668 "bison_parser.y" /* yacc.c:1666 */ +#line 669 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = true; } -#line 3218 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3233 "bison_parser.cpp" /* yacc.c:1666 */ break; case 83: -#line 669 "bison_parser.y" /* yacc.c:1666 */ +#line 670 "bison_parser.y" /* yacc.c:1666 */ { (yyval.bval) = false; } -#line 3224 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3239 "bison_parser.cpp" /* yacc.c:1666 */ break; case 85: -#line 677 "bison_parser.y" /* yacc.c:1666 */ +#line 678 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = (yyvsp[0].table); } -#line 3230 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3245 "bison_parser.cpp" /* yacc.c:1666 */ break; case 86: -#line 678 "bison_parser.y" /* yacc.c:1666 */ +#line 679 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = nullptr; } -#line 3236 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3251 "bison_parser.cpp" /* yacc.c:1666 */ break; case 87: -#line 681 "bison_parser.y" /* yacc.c:1666 */ +#line 682 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = (yyvsp[0].table); } -#line 3242 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3257 "bison_parser.cpp" /* yacc.c:1666 */ break; case 88: -#line 686 "bison_parser.y" /* yacc.c:1666 */ +#line 687 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 3248 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3263 "bison_parser.cpp" /* yacc.c:1666 */ break; case 89: -#line 687 "bison_parser.y" /* yacc.c:1666 */ +#line 688 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = nullptr; } -#line 3254 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3269 "bison_parser.cpp" /* yacc.c:1666 */ break; case 90: -#line 691 "bison_parser.y" /* yacc.c:1666 */ +#line 692 "bison_parser.y" /* yacc.c:1666 */ { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 3264 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3279 "bison_parser.cpp" /* yacc.c:1666 */ break; case 91: -#line 696 "bison_parser.y" /* yacc.c:1666 */ +#line 697 "bison_parser.y" /* yacc.c:1666 */ { (yyval.group_t) = nullptr; } -#line 3270 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3285 "bison_parser.cpp" /* yacc.c:1666 */ break; case 92: -#line 700 "bison_parser.y" /* yacc.c:1666 */ +#line 701 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = (yyvsp[0].expr); } -#line 3276 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3291 "bison_parser.cpp" /* yacc.c:1666 */ break; case 93: -#line 701 "bison_parser.y" /* yacc.c:1666 */ +#line 702 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = nullptr; } -#line 3282 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3297 "bison_parser.cpp" /* yacc.c:1666 */ break; case 94: -#line 704 "bison_parser.y" /* yacc.c:1666 */ +#line 705 "bison_parser.y" /* yacc.c:1666 */ { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 3288 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3303 "bison_parser.cpp" /* yacc.c:1666 */ break; case 95: -#line 705 "bison_parser.y" /* yacc.c:1666 */ +#line 706 "bison_parser.y" /* yacc.c:1666 */ { (yyval.order_vec) = nullptr; } -#line 3294 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3309 "bison_parser.cpp" /* yacc.c:1666 */ break; case 96: -#line 709 "bison_parser.y" /* yacc.c:1666 */ +#line 710 "bison_parser.y" /* yacc.c:1666 */ { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 3300 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3315 "bison_parser.cpp" /* yacc.c:1666 */ break; case 97: -#line 710 "bison_parser.y" /* yacc.c:1666 */ +#line 711 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 3306 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3321 "bison_parser.cpp" /* yacc.c:1666 */ break; case 98: -#line 714 "bison_parser.y" /* yacc.c:1666 */ +#line 715 "bison_parser.y" /* yacc.c:1666 */ { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 3312 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3327 "bison_parser.cpp" /* yacc.c:1666 */ break; case 99: -#line 718 "bison_parser.y" /* yacc.c:1666 */ +#line 719 "bison_parser.y" /* yacc.c:1666 */ { (yyval.order_type) = kOrderAsc; } -#line 3318 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3333 "bison_parser.cpp" /* yacc.c:1666 */ break; case 100: -#line 719 "bison_parser.y" /* yacc.c:1666 */ +#line 720 "bison_parser.y" /* yacc.c:1666 */ { (yyval.order_type) = kOrderDesc; } -#line 3324 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3339 "bison_parser.cpp" /* yacc.c:1666 */ break; case 101: -#line 720 "bison_parser.y" /* yacc.c:1666 */ +#line 721 "bison_parser.y" /* yacc.c:1666 */ { (yyval.order_type) = kOrderAsc; } -#line 3330 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3345 "bison_parser.cpp" /* yacc.c:1666 */ break; case 102: -#line 726 "bison_parser.y" /* yacc.c:1666 */ +#line 727 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3336 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3351 "bison_parser.cpp" /* yacc.c:1666 */ break; case 103: -#line 727 "bison_parser.y" /* yacc.c:1666 */ +#line 728 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = nullptr; } -#line 3342 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3357 "bison_parser.cpp" /* yacc.c:1666 */ break; case 104: -#line 731 "bison_parser.y" /* yacc.c:1666 */ +#line 732 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = new LimitDescription((yyvsp[0].expr)->ival, kNoOffset); delete (yyvsp[0].expr); } -#line 3348 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3363 "bison_parser.cpp" /* yacc.c:1666 */ break; case 105: -#line 732 "bison_parser.y" /* yacc.c:1666 */ +#line 733 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = new LimitDescription((yyvsp[-2].expr)->ival, (yyvsp[0].expr)->ival); delete (yyvsp[-2].expr); delete (yyvsp[0].expr); } -#line 3354 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3369 "bison_parser.cpp" /* yacc.c:1666 */ break; case 106: -#line 733 "bison_parser.y" /* yacc.c:1666 */ +#line 734 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3360 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3375 "bison_parser.cpp" /* yacc.c:1666 */ break; case 107: -#line 734 "bison_parser.y" /* yacc.c:1666 */ +#line 735 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = nullptr; } -#line 3366 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3381 "bison_parser.cpp" /* yacc.c:1666 */ break; case 108: -#line 735 "bison_parser.y" /* yacc.c:1666 */ +#line 736 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = nullptr; } -#line 3372 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3387 "bison_parser.cpp" /* yacc.c:1666 */ break; case 109: -#line 736 "bison_parser.y" /* yacc.c:1666 */ +#line 737 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3378 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3393 "bison_parser.cpp" /* yacc.c:1666 */ break; case 110: -#line 737 "bison_parser.y" /* yacc.c:1666 */ +#line 738 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = new LimitDescription(kNoLimit, (yyvsp[0].expr)->ival); delete (yyvsp[0].expr); } -#line 3384 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3399 "bison_parser.cpp" /* yacc.c:1666 */ break; case 111: -#line 738 "bison_parser.y" /* yacc.c:1666 */ +#line 739 "bison_parser.y" /* yacc.c:1666 */ { (yyval.limit) = nullptr; } -#line 3390 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3405 "bison_parser.cpp" /* yacc.c:1666 */ break; case 112: -#line 745 "bison_parser.y" /* yacc.c:1666 */ +#line 746 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3396 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3411 "bison_parser.cpp" /* yacc.c:1666 */ break; case 113: -#line 746 "bison_parser.y" /* yacc.c:1666 */ +#line 747 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3402 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3417 "bison_parser.cpp" /* yacc.c:1666 */ break; case 114: -#line 750 "bison_parser.y" /* yacc.c:1666 */ +#line 751 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3408 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3423 "bison_parser.cpp" /* yacc.c:1666 */ break; case 115: -#line 751 "bison_parser.y" /* yacc.c:1666 */ +#line 752 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3414 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3429 "bison_parser.cpp" /* yacc.c:1666 */ break; case 116: -#line 755 "bison_parser.y" /* yacc.c:1666 */ +#line 756 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = (yyvsp[-1].expr); if ((yyvsp[0].alias_t)) { @@ -3422,403 +3437,415 @@ yyreduce: delete (yyvsp[0].alias_t); } } -#line 3426 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3441 "bison_parser.cpp" /* yacc.c:1666 */ break; case 122: -#line 773 "bison_parser.y" /* yacc.c:1666 */ +#line 774 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = (yyvsp[-1].expr); } -#line 3432 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3447 "bison_parser.cpp" /* yacc.c:1666 */ break; case 131: -#line 782 "bison_parser.y" /* yacc.c:1666 */ +#line 783 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 3438 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3453 "bison_parser.cpp" /* yacc.c:1666 */ break; case 134: -#line 791 "bison_parser.y" /* yacc.c:1666 */ +#line 792 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 3444 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3459 "bison_parser.cpp" /* yacc.c:1666 */ break; case 135: -#line 792 "bison_parser.y" /* yacc.c:1666 */ +#line 793 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 3450 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3465 "bison_parser.cpp" /* yacc.c:1666 */ break; case 136: -#line 793 "bison_parser.y" /* yacc.c:1666 */ +#line 794 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 3456 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3471 "bison_parser.cpp" /* yacc.c:1666 */ break; case 137: -#line 794 "bison_parser.y" /* yacc.c:1666 */ +#line 795 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 3462 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3477 "bison_parser.cpp" /* yacc.c:1666 */ break; case 138: -#line 795 "bison_parser.y" /* yacc.c:1666 */ +#line 796 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 3468 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3483 "bison_parser.cpp" /* yacc.c:1666 */ break; case 140: -#line 800 "bison_parser.y" /* yacc.c:1666 */ +#line 801 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 3474 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3489 "bison_parser.cpp" /* yacc.c:1666 */ break; case 141: -#line 801 "bison_parser.y" /* yacc.c:1666 */ +#line 802 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 3480 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3495 "bison_parser.cpp" /* yacc.c:1666 */ break; case 142: -#line 802 "bison_parser.y" /* yacc.c:1666 */ +#line 803 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 3486 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3501 "bison_parser.cpp" /* yacc.c:1666 */ break; case 143: -#line 803 "bison_parser.y" /* yacc.c:1666 */ +#line 804 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 3492 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3507 "bison_parser.cpp" /* yacc.c:1666 */ break; case 144: -#line 804 "bison_parser.y" /* yacc.c:1666 */ +#line 805 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 3498 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3513 "bison_parser.cpp" /* yacc.c:1666 */ break; case 145: -#line 805 "bison_parser.y" /* yacc.c:1666 */ +#line 806 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 3504 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3519 "bison_parser.cpp" /* yacc.c:1666 */ break; case 146: -#line 806 "bison_parser.y" /* yacc.c:1666 */ +#line 807 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 3510 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3525 "bison_parser.cpp" /* yacc.c:1666 */ break; case 147: -#line 807 "bison_parser.y" /* yacc.c:1666 */ +#line 808 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 3516 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3531 "bison_parser.cpp" /* yacc.c:1666 */ break; case 148: -#line 808 "bison_parser.y" /* yacc.c:1666 */ +#line 809 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 3522 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3537 "bison_parser.cpp" /* yacc.c:1666 */ break; case 149: -#line 809 "bison_parser.y" /* yacc.c:1666 */ +#line 810 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 3528 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3543 "bison_parser.cpp" /* yacc.c:1666 */ break; case 150: -#line 813 "bison_parser.y" /* yacc.c:1666 */ +#line 814 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 3534 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3549 "bison_parser.cpp" /* yacc.c:1666 */ break; case 151: -#line 814 "bison_parser.y" /* yacc.c:1666 */ +#line 815 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 3540 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3555 "bison_parser.cpp" /* yacc.c:1666 */ break; case 152: -#line 818 "bison_parser.y" /* yacc.c:1666 */ +#line 819 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 3546 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3561 "bison_parser.cpp" /* yacc.c:1666 */ break; case 153: -#line 819 "bison_parser.y" /* yacc.c:1666 */ +#line 820 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 3552 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3567 "bison_parser.cpp" /* yacc.c:1666 */ break; case 154: -#line 820 "bison_parser.y" /* yacc.c:1666 */ +#line 821 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 3558 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3573 "bison_parser.cpp" /* yacc.c:1666 */ break; case 155: -#line 821 "bison_parser.y" /* yacc.c:1666 */ +#line 822 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 3564 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3579 "bison_parser.cpp" /* yacc.c:1666 */ break; case 156: -#line 827 "bison_parser.y" /* yacc.c:1666 */ +#line 828 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 3570 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3585 "bison_parser.cpp" /* yacc.c:1666 */ break; case 157: -#line 828 "bison_parser.y" /* yacc.c:1666 */ +#line 829 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3576 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3591 "bison_parser.cpp" /* yacc.c:1666 */ break; case 158: -#line 829 "bison_parser.y" /* yacc.c:1666 */ +#line 830 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 3582 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3597 "bison_parser.cpp" /* yacc.c:1666 */ break; case 159: -#line 830 "bison_parser.y" /* yacc.c:1666 */ +#line 831 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 3588 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3603 "bison_parser.cpp" /* yacc.c:1666 */ break; case 160: -#line 834 "bison_parser.y" /* yacc.c:1666 */ +#line 835 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3594 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3609 "bison_parser.cpp" /* yacc.c:1666 */ break; case 161: -#line 835 "bison_parser.y" /* yacc.c:1666 */ +#line 836 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 3600 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3615 "bison_parser.cpp" /* yacc.c:1666 */ break; case 162: -#line 839 "bison_parser.y" /* yacc.c:1666 */ +#line 840 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 3606 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3621 "bison_parser.cpp" /* yacc.c:1666 */ break; case 163: -#line 840 "bison_parser.y" /* yacc.c:1666 */ +#line 841 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 3612 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3627 "bison_parser.cpp" /* yacc.c:1666 */ break; case 164: -#line 844 "bison_parser.y" /* yacc.c:1666 */ +#line 845 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3618 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3633 "bison_parser.cpp" /* yacc.c:1666 */ break; case 165: -#line 845 "bison_parser.y" /* yacc.c:1666 */ +#line 846 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 3624 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3639 "bison_parser.cpp" /* yacc.c:1666 */ break; case 166: -#line 846 "bison_parser.y" /* yacc.c:1666 */ +#line 847 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 3630 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3645 "bison_parser.cpp" /* yacc.c:1666 */ break; case 167: -#line 847 "bison_parser.y" /* yacc.c:1666 */ +#line 848 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 3636 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3651 "bison_parser.cpp" /* yacc.c:1666 */ break; case 168: -#line 848 "bison_parser.y" /* yacc.c:1666 */ +#line 849 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 3642 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3657 "bison_parser.cpp" /* yacc.c:1666 */ break; case 169: -#line 849 "bison_parser.y" /* yacc.c:1666 */ +#line 850 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 3648 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3663 "bison_parser.cpp" /* yacc.c:1666 */ break; case 170: -#line 850 "bison_parser.y" /* yacc.c:1666 */ +#line 851 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 3654 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3669 "bison_parser.cpp" /* yacc.c:1666 */ break; case 171: -#line 854 "bison_parser.y" /* yacc.c:1666 */ +#line 855 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 3660 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3675 "bison_parser.cpp" /* yacc.c:1666 */ break; case 172: -#line 855 "bison_parser.y" /* yacc.c:1666 */ +#line 856 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 3666 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3681 "bison_parser.cpp" /* yacc.c:1666 */ break; case 173: -#line 859 "bison_parser.y" /* yacc.c:1666 */ +#line 860 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 3672 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3687 "bison_parser.cpp" /* yacc.c:1666 */ break; case 174: -#line 863 "bison_parser.y" /* yacc.c:1666 */ +#line 864 "bison_parser.y" /* yacc.c:1666 */ { (yyval.datetime_field) = kDatetimeSecond; } -#line 3678 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3693 "bison_parser.cpp" /* yacc.c:1666 */ break; case 175: -#line 864 "bison_parser.y" /* yacc.c:1666 */ +#line 865 "bison_parser.y" /* yacc.c:1666 */ { (yyval.datetime_field) = kDatetimeMinute; } -#line 3684 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3699 "bison_parser.cpp" /* yacc.c:1666 */ break; case 176: -#line 865 "bison_parser.y" /* yacc.c:1666 */ +#line 866 "bison_parser.y" /* yacc.c:1666 */ { (yyval.datetime_field) = kDatetimeHour; } -#line 3690 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3705 "bison_parser.cpp" /* yacc.c:1666 */ break; case 177: -#line 866 "bison_parser.y" /* yacc.c:1666 */ +#line 867 "bison_parser.y" /* yacc.c:1666 */ { (yyval.datetime_field) = kDatetimeDay; } -#line 3696 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3711 "bison_parser.cpp" /* yacc.c:1666 */ break; case 178: -#line 867 "bison_parser.y" /* yacc.c:1666 */ +#line 868 "bison_parser.y" /* yacc.c:1666 */ { (yyval.datetime_field) = kDatetimeMonth; } -#line 3702 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3717 "bison_parser.cpp" /* yacc.c:1666 */ break; case 179: -#line 868 "bison_parser.y" /* yacc.c:1666 */ +#line 869 "bison_parser.y" /* yacc.c:1666 */ { (yyval.datetime_field) = kDatetimeYear; } -#line 3708 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3723 "bison_parser.cpp" /* yacc.c:1666 */ break; case 180: -#line 871 "bison_parser.y" /* yacc.c:1666 */ +#line 872 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 3714 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3729 "bison_parser.cpp" /* yacc.c:1666 */ break; case 181: -#line 875 "bison_parser.y" /* yacc.c:1666 */ +#line 876 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 3720 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3735 "bison_parser.cpp" /* yacc.c:1666 */ break; case 182: -#line 879 "bison_parser.y" /* yacc.c:1666 */ +#line 880 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3726 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3741 "bison_parser.cpp" /* yacc.c:1666 */ break; case 183: -#line 883 "bison_parser.y" /* yacc.c:1666 */ +#line 884 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 3732 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3747 "bison_parser.cpp" /* yacc.c:1666 */ break; case 184: -#line 884 "bison_parser.y" /* yacc.c:1666 */ +#line 885 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 3738 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3753 "bison_parser.cpp" /* yacc.c:1666 */ break; case 185: -#line 885 "bison_parser.y" /* yacc.c:1666 */ +#line 886 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeStar(); } -#line 3744 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3759 "bison_parser.cpp" /* yacc.c:1666 */ break; case 186: -#line 886 "bison_parser.y" /* yacc.c:1666 */ +#line 887 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 3750 "bison_parser.cpp" /* yacc.c:1666 */ - break; - - case 191: -#line 897 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 3756 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3765 "bison_parser.cpp" /* yacc.c:1666 */ break; case 192: -#line 902 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 3762 "bison_parser.cpp" /* yacc.c:1666 */ +#line 899 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } +#line 3771 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 193: +#line 903 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeLiteral(true); } +#line 3777 "bison_parser.cpp" /* yacc.c:1666 */ break; case 194: -#line 907 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 3768 "bison_parser.cpp" /* yacc.c:1666 */ +#line 904 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeLiteral(false); } +#line 3783 "bison_parser.cpp" /* yacc.c:1666 */ break; case 195: -#line 911 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.expr) = Expr::makeNullLiteral(); } -#line 3774 "bison_parser.cpp" /* yacc.c:1666 */ +#line 908 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } +#line 3789 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 196: -#line 915 "bison_parser.y" /* yacc.c:1666 */ + case 197: +#line 913 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } +#line 3795 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 198: +#line 917 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.expr) = Expr::makeNullLiteral(); } +#line 3801 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 199: +#line 921 "bison_parser.y" /* yacc.c:1666 */ { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 3784 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3811 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 198: -#line 928 "bison_parser.y" /* yacc.c:1666 */ + case 201: +#line 934 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); auto tbl = new TableRef(kTableCrossProduct); tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 3795 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3822 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 202: -#line 944 "bison_parser.y" /* yacc.c:1666 */ + case 205: +#line 950 "bison_parser.y" /* yacc.c:1666 */ { auto tbl = new TableRef(kTableSelect); tbl->select = (yyvsp[-2].select_stmt); tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3806 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3833 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 203: -#line 953 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 3812 "bison_parser.cpp" /* yacc.c:1666 */ - break; - - case 204: -#line 954 "bison_parser.y" /* yacc.c:1666 */ - { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 3818 "bison_parser.cpp" /* yacc.c:1666 */ - break; - - case 205: + case 206: #line 959 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } +#line 3839 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 207: +#line 960 "bison_parser.y" /* yacc.c:1666 */ + { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } +#line 3845 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 208: +#line 965 "bison_parser.y" /* yacc.c:1666 */ { auto tbl = new TableRef(kTableName); tbl->schema = (yyvsp[-1].table_name).schema; @@ -3826,63 +3853,63 @@ yyreduce: tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 3830 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3857 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 206: -#line 970 "bison_parser.y" /* yacc.c:1666 */ + case 209: +#line 976 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 3840 "bison_parser.cpp" /* yacc.c:1666 */ - break; - - case 207: -#line 979 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 3846 "bison_parser.cpp" /* yacc.c:1666 */ - break; - - case 208: -#line 980 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 3852 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3867 "bison_parser.cpp" /* yacc.c:1666 */ break; case 210: -#line 986 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 3858 "bison_parser.cpp" /* yacc.c:1666 */ +#line 985 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} +#line 3873 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 212: -#line 992 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.alias_t) = nullptr; } -#line 3864 "bison_parser.cpp" /* yacc.c:1666 */ + case 211: +#line 986 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } +#line 3879 "bison_parser.cpp" /* yacc.c:1666 */ break; case 213: -#line 996 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 3870 "bison_parser.cpp" /* yacc.c:1666 */ +#line 992 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } +#line 3885 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 214: -#line 997 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 3876 "bison_parser.cpp" /* yacc.c:1666 */ + case 215: +#line 998 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = nullptr; } +#line 3891 "bison_parser.cpp" /* yacc.c:1666 */ break; case 216: -#line 1003 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.alias_t) = nullptr; } -#line 3882 "bison_parser.cpp" /* yacc.c:1666 */ +#line 1002 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 3897 "bison_parser.cpp" /* yacc.c:1666 */ break; case 217: -#line 1012 "bison_parser.y" /* yacc.c:1666 */ +#line 1003 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } +#line 3903 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 219: +#line 1009 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.alias_t) = nullptr; } +#line 3909 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 220: +#line 1018 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3890,11 +3917,11 @@ yyreduce: (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 3894 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3921 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 218: -#line 1020 "bison_parser.y" /* yacc.c:1666 */ + case 221: +#line 1026 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3903,11 +3930,11 @@ yyreduce: (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 3907 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3934 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 219: -#line 1030 "bison_parser.y" /* yacc.c:1666 */ + case 222: +#line 1036 "bison_parser.y" /* yacc.c:1666 */ { (yyval.table) = new TableRef(kTableJoin); (yyval.table)->join = new JoinDefinition(); @@ -3923,83 +3950,83 @@ yyreduce: (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 3927 "bison_parser.cpp" /* yacc.c:1666 */ - break; - - case 220: -#line 1048 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinInner; } -#line 3933 "bison_parser.cpp" /* yacc.c:1666 */ - break; - - case 221: -#line 1049 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinLeft; } -#line 3939 "bison_parser.cpp" /* yacc.c:1666 */ - break; - - case 222: -#line 1050 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinLeft; } -#line 3945 "bison_parser.cpp" /* yacc.c:1666 */ +#line 3954 "bison_parser.cpp" /* yacc.c:1666 */ break; case 223: -#line 1051 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinRight; } -#line 3951 "bison_parser.cpp" /* yacc.c:1666 */ +#line 1054 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinInner; } +#line 3960 "bison_parser.cpp" /* yacc.c:1666 */ break; case 224: -#line 1052 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinRight; } -#line 3957 "bison_parser.cpp" /* yacc.c:1666 */ +#line 1055 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinLeft; } +#line 3966 "bison_parser.cpp" /* yacc.c:1666 */ break; case 225: -#line 1053 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinFull; } -#line 3963 "bison_parser.cpp" /* yacc.c:1666 */ +#line 1056 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinLeft; } +#line 3972 "bison_parser.cpp" /* yacc.c:1666 */ break; case 226: -#line 1054 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinFull; } -#line 3969 "bison_parser.cpp" /* yacc.c:1666 */ +#line 1057 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinRight; } +#line 3978 "bison_parser.cpp" /* yacc.c:1666 */ break; case 227: -#line 1055 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinFull; } -#line 3975 "bison_parser.cpp" /* yacc.c:1666 */ +#line 1058 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinRight; } +#line 3984 "bison_parser.cpp" /* yacc.c:1666 */ break; case 228: -#line 1056 "bison_parser.y" /* yacc.c:1666 */ - { (yyval.uval) = kJoinCross; } -#line 3981 "bison_parser.cpp" /* yacc.c:1666 */ +#line 1059 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinFull; } +#line 3990 "bison_parser.cpp" /* yacc.c:1666 */ break; case 229: -#line 1057 "bison_parser.y" /* yacc.c:1666 */ +#line 1060 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinFull; } +#line 3996 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 230: +#line 1061 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinFull; } +#line 4002 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 231: +#line 1062 "bison_parser.y" /* yacc.c:1666 */ + { (yyval.uval) = kJoinCross; } +#line 4008 "bison_parser.cpp" /* yacc.c:1666 */ + break; + + case 232: +#line 1063 "bison_parser.y" /* yacc.c:1666 */ { (yyval.uval) = kJoinInner; } -#line 3987 "bison_parser.cpp" /* yacc.c:1666 */ +#line 4014 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 233: -#line 1077 "bison_parser.y" /* yacc.c:1666 */ + case 236: +#line 1083 "bison_parser.y" /* yacc.c:1666 */ { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 3993 "bison_parser.cpp" /* yacc.c:1666 */ +#line 4020 "bison_parser.cpp" /* yacc.c:1666 */ break; - case 234: -#line 1078 "bison_parser.y" /* yacc.c:1666 */ + case 237: +#line 1084 "bison_parser.y" /* yacc.c:1666 */ { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 3999 "bison_parser.cpp" /* yacc.c:1666 */ +#line 4026 "bison_parser.cpp" /* yacc.c:1666 */ break; -#line 4003 "bison_parser.cpp" /* yacc.c:1666 */ +#line 4030 "bison_parser.cpp" /* yacc.c:1666 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -4233,7 +4260,7 @@ yyreturn: #endif return yyresult; } -#line 1081 "bison_parser.y" /* yacc.c:1910 */ +#line 1087 "bison_parser.y" /* yacc.c:1910 */ /********************************* ** Section 4: Additional C code diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 5b2203c..851e6e9 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -212,14 +212,16 @@ extern int hsql_debug; SQL_DAY = 388, SQL_MONTH = 389, SQL_YEAR = 390, - SQL_EQUALS = 391, - SQL_NOTEQUALS = 392, - SQL_LESS = 393, - SQL_GREATER = 394, - SQL_LESSEQ = 395, - SQL_GREATEREQ = 396, - SQL_NOTNULL = 397, - SQL_UMINUS = 398 + SQL_TRUE = 391, + SQL_FALSE = 392, + SQL_EQUALS = 393, + SQL_NOTEQUALS = 394, + SQL_LESS = 395, + SQL_GREATER = 396, + SQL_LESSEQ = 397, + SQL_GREATEREQ = 398, + SQL_NOTNULL = 399, + SQL_UMINUS = 400 }; #endif @@ -270,7 +272,7 @@ union HSQL_STYPE std::vector* expr_vec; std::vector* order_vec; -#line 274 "bison_parser.h" /* yacc.c:1919 */ +#line 276 "bison_parser.h" /* yacc.c:1919 */ }; typedef union HSQL_STYPE HSQL_STYPE; diff --git a/src/parser/bison_parser.y b/src/parser/bison_parser.y index d7c4fba..283428a 100755 --- a/src/parser/bison_parser.y +++ b/src/parser/bison_parser.y @@ -175,6 +175,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %token VIEW WHEN WITH ADD ALL AND ASC CSV END FOR INT KEY %token NOT OFF SET TBL TOP AS BY IF IN IS OF ON OR TO %token ARRAY CONCAT ILIKE SECOND MINUTE HOUR DAY MONTH YEAR +%token TRUE FALSE /********************************* ** Non-Terminal types (http://www.gnu.org/software/bison/manual/html_node/Type-Decl.html) @@ -199,7 +200,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha %type join_clause table_ref_name_no_alias %type expr operand scalar_expr unary_expr binary_expr logic_expr exists_expr extract_expr %type function_expr between_expr expr_alias param_expr -%type column_name literal int_literal num_literal string_literal +%type column_name literal int_literal num_literal string_literal bool_literal %type comp_expr opt_where join_condition opt_having case_expr case_list in_expr hint %type array_expr array_index null_literal %type opt_limit opt_top @@ -888,6 +889,7 @@ column_name: literal: string_literal + | bool_literal | num_literal | null_literal | param_expr @@ -897,6 +899,10 @@ string_literal: STRING { $$ = Expr::makeLiteral($1); } ; +bool_literal: + TRUE { $$ = Expr::makeLiteral(true); } + | FALSE { $$ = Expr::makeLiteral(false); } + ; num_literal: FLOATVAL { $$ = Expr::makeLiteral($1); } diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index 2da13ae..aac1a78 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -573,8 +573,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 147 -#define YY_END_OF_BUFFER 148 +#define YY_NUM_RULES 149 +#define YY_END_OF_BUFFER 150 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,28 +582,28 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1014] = +static const flex_int16_t yy_accept[1024] = { 0, - 0, 0, 2, 2, 148, 146, 4, 4, 146, 146, - 139, 146, 139, 139, 142, 139, 139, 139, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 139, 2, 2, 3, 2, 2, 2, 2, + 0, 0, 2, 2, 150, 148, 4, 4, 148, 148, + 141, 148, 141, 141, 144, 141, 141, 141, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 141, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 4, 134, 0, 0, 145, 1, 142, 141, 140, - 136, 135, 133, 137, 144, 144, 144, 144, 144, 144, + 2, 4, 136, 0, 0, 147, 1, 144, 143, 142, + 138, 137, 135, 139, 146, 146, 146, 146, 146, 146, - 118, 144, 119, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 120, 144, 144, - 121, 122, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 123, 124, 125, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 126, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 138, 2, 2, 2, 2, 2, 2, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 118, 146, 119, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 120, 146, + 146, 121, 122, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 123, 124, 125, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 126, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 140, 2, 2, 2, 2, 2, + 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -612,19 +612,19 @@ static const flex_int16_t yy_accept[1014] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 143, 140, - 104, 144, 105, 144, 144, 106, 144, 107, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 108, 144, 130, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 109, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 145, 142, 104, 146, 105, 146, 146, 106, 146, 107, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 108, + 146, 130, 146, 146, 146, 146, 146, 146, 146, 146, - 144, 144, 144, 144, 144, 144, 144, 144, 110, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 111, 144, 144, 112, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 113, 144, 144, - 114, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 115, 144, 144, 144, 144, 116, 144, - 144, 144, 144, 117, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 2, 2, 2, 2, + 146, 109, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 110, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 111, 146, 146, 112, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 113, 146, 146, 114, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 115, 146, 146, 146, + 146, 116, 146, 146, 146, 146, 117, 146, 146, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -636,18 +636,18 @@ static const flex_int16_t yy_accept[1014] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 144, 144, 144, 144, 144, 144, - 76, 144, 77, 78, 144, 144, 144, 144, 79, 144, + 2, 2, 2, 2, 2, 2, 2, 2, 146, 146, + 146, 146, 146, 146, 76, 146, 77, 78, 146, 146, - 144, 144, 144, 80, 144, 144, 144, 81, 82, 144, - 144, 144, 144, 144, 144, 83, 144, 84, 85, 144, - 144, 86, 144, 87, 144, 129, 144, 144, 144, 144, - 144, 144, 88, 144, 89, 90, 91, 144, 93, 144, - 94, 144, 144, 144, 144, 95, 144, 144, 144, 144, - 144, 96, 144, 144, 144, 144, 144, 144, 144, 144, - 97, 144, 144, 144, 144, 98, 99, 100, 144, 144, - 144, 144, 144, 144, 144, 144, 101, 144, 102, 144, - 103, 132, 2, 2, 2, 2, 2, 2, 2, 2, + 146, 146, 79, 146, 146, 146, 146, 80, 146, 146, + 146, 81, 82, 146, 146, 146, 146, 146, 146, 146, + 83, 146, 84, 85, 146, 146, 86, 146, 87, 146, + 129, 146, 146, 146, 146, 146, 146, 88, 146, 89, + 90, 91, 146, 93, 146, 94, 146, 146, 146, 146, + 95, 146, 146, 146, 146, 146, 96, 146, 146, 146, + 146, 146, 146, 146, 146, 97, 146, 146, 146, 146, + 98, 99, 100, 133, 146, 146, 146, 146, 146, 146, + 146, 146, 101, 146, 102, 146, 103, 132, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -658,43 +658,44 @@ static const flex_int16_t yy_accept[1014] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 56, 57, 144, 58, 144, 144, 144, 144, 144, 144, - 59, 144, 144, 144, 60, 144, 144, 144, 144, 144, + 2, 2, 2, 2, 2, 2, 2, 2, 56, 57, + 146, 58, 146, 146, 146, 146, 146, 146, 59, 146, - 144, 144, 144, 144, 61, 144, 62, 144, 144, 92, - 144, 63, 64, 144, 144, 144, 144, 65, 66, 67, - 68, 144, 131, 144, 144, 144, 69, 70, 144, 144, - 144, 144, 144, 71, 144, 144, 144, 144, 144, 72, - 144, 144, 144, 73, 144, 144, 144, 74, 144, 144, - 144, 75, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 146, 146, 60, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 134, 61, 146, 62, 146, 146, 92, 146, + 63, 64, 146, 146, 146, 146, 65, 66, 67, 68, + 146, 131, 146, 146, 146, 69, 70, 146, 146, 146, + 146, 146, 71, 146, 146, 146, 146, 146, 72, 146, + 146, 146, 73, 146, 146, 146, 74, 146, 146, 146, + 75, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 144, 31, 144, 144, 32, 144, - 33, 144, 144, 34, 35, 144, 36, 37, 38, 144, - 39, 144, 144, 41, 42, 144, 43, 44, 144, 144, - 45, 128, 144, 144, 46, 144, 144, 144, 47, 144, - 48, 127, 49, 50, 144, 51, 144, 144, 144, 52, - 53, 54, 55, 144, 144, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 146, 31, 146, 146, 32, 146, + 33, 146, 146, 34, 35, 146, 36, 37, 38, 146, + 39, 146, 146, 41, 42, 146, 43, 44, 146, 146, + 45, 128, 146, 146, 46, 146, 146, 146, 47, 146, + 48, 127, 49, 50, 146, 51, 146, 146, 146, 52, + 53, 54, 55, 146, 146, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 14, 15, 16, 17, - 18, 144, 19, 144, 20, 21, 40, 22, 23, 144, - 24, 144, 144, 25, 26, 144, 27, 28, 144, 144, - 144, 29, 30, 2, 2, 2, 2, 2, 2, 2, + 18, 146, 19, 146, 20, 21, 40, 22, 23, 146, + 24, 146, 146, 25, 26, 146, 27, 28, 146, 146, + 146, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 144, 10, 144, 11, 144, 12, 144, 144, 13, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 144, 7, + 146, 10, 146, 11, 146, 12, 146, 146, 13, 2, - 144, 8, 9, 2, 2, 2, 2, 2, 5, 6, + 2, 2, 2, 2, 2, 2, 2, 2, 146, 7, + 146, 8, 9, 2, 2, 2, 2, 2, 5, 6, 2, 2, 0 } ; @@ -741,144 +742,145 @@ static const YY_CHAR yy_meta[68] = 4, 4, 4, 4, 4, 4, 1 } ; -static const flex_int16_t yy_base[1021] = +static const flex_int16_t yy_base[1031] = { 0, - 0, 0, 67, 0, 469, 4035, 133, 135, 446, 0, - 4035, 444, 131, 435, 133, 132, 414, 399, 129, 129, - 137, 135, 145, 180, 175, 193, 191, 124, 141, 202, - 218, 225, 237, 244, 0, 243, 261, 304, 249, 279, - 289, 144, 335, 0, 210, 223, 335, 339, 0, 329, - 193, 314, 245, 287, 303, 295, 362, 429, 483, 535, - 583, 631, 296, 358, 679, 295, 313, 421, 426, 731, - 779, 447, 339, 435, 829, 881, 491, 537, 495, 347, - 227, 327, 4035, 279, 267, 4035, 4035, 333, 262, 252, - 4035, 4035, 4035, 4035, 0, 147, 138, 357, 374, 191, + 0, 0, 67, 0, 481, 4068, 133, 135, 465, 0, + 4068, 466, 131, 460, 133, 132, 428, 398, 129, 129, + 137, 135, 145, 196, 176, 184, 217, 124, 141, 201, + 213, 238, 255, 250, 0, 243, 269, 312, 251, 191, + 273, 144, 332, 0, 200, 212, 357, 353, 0, 342, + 212, 334, 207, 247, 308, 294, 370, 437, 491, 543, + 591, 643, 355, 301, 691, 300, 266, 366, 429, 743, + 791, 438, 367, 442, 841, 893, 479, 537, 450, 388, + 236, 333, 4068, 291, 270, 4068, 4068, 338, 257, 245, + 4068, 4068, 4068, 4068, 0, 147, 178, 365, 445, 195, - 254, 364, 0, 373, 298, 425, 480, 360, 422, 573, - 369, 385, 428, 430, 446, 452, 628, 478, 479, 479, - 491, 502, 524, 530, 529, 535, 534, 0, 547, 541, - 668, 545, 555, 565, 587, 583, 597, 581, 589, 591, - 594, 598, 616, 638, 636, 0, 643, 630, 633, 652, - 681, 675, 647, 660, 721, 681, 682, 700, 700, 691, - 721, 703, 697, 706, 717, 730, 736, 734, 732, 757, - 742, 734, 754, 4035, 0, 353, 0, 247, 224, 0, - 0, 613, 218, 209, 0, 0, 0, 0, 771, 783, - 781, 845, 794, 811, 848, 882, 816, 886, 903, 925, + 316, 481, 0, 371, 323, 491, 492, 306, 488, 544, + 360, 374, 381, 395, 417, 442, 544, 440, 441, 473, + 482, 497, 539, 539, 540, 548, 579, 536, 0, 550, + 576, 631, 585, 591, 576, 596, 593, 608, 589, 598, + 599, 594, 626, 635, 652, 648, 0, 652, 637, 641, + 659, 658, 679, 658, 691, 699, 685, 683, 705, 705, + 696, 723, 707, 700, 698, 694, 740, 714, 741, 739, + 748, 749, 735, 755, 4068, 0, 349, 0, 242, 201, + 0, 0, 353, 190, 161, 0, 0, 0, 0, 762, + 795, 781, 830, 806, 835, 860, 894, 793, 884, 912, - 931, 919, 922, 983, 940, 955, 985, 974, 993, 1009, - 1059, 1018, 1031, 1026, 1044, 1028, 1067, 1072, 1088, 1098, - 1100, 842, 996, 1110, 1159, 1113, 1124, 1049, 1161, 1164, - 1167, 1196, 1193, 1198, 1204, 1212, 1210, 1242, 1221, 1233, - 1256, 1252, 1250, 1275, 1281, 1264, 1286, 1304, 1320, 1309, - 1310, 1321, 1352, 1353, 1355, 1338, 1361, 1366, 1378, 1403, - 1392, 1411, 1409, 1420, 1397, 1426, 1432, 0, 4035, 145, - 0, 759, 0, 773, 778, 0, 838, 0, 827, 826, - 840, 890, 840, 900, 920, 942, 963, 0, 1033, 0, - 1104, 1127, 1448, 1128, 1142, 1141, 1181, 1236, 1266, 0, + 937, 836, 928, 927, 989, 966, 961, 991, 929, 995, + 999, 1049, 1025, 1034, 1055, 1031, 1057, 1063, 1079, 1085, + 1100, 1109, 1108, 854, 1111, 1119, 1168, 1134, 1133, 1066, + 1171, 1197, 1216, 1149, 1193, 1222, 1159, 1208, 1226, 1251, + 1237, 1207, 1262, 1266, 1267, 1272, 1296, 1297, 1283, 1301, + 1322, 1325, 1326, 1340, 1354, 1350, 1371, 1341, 1375, 1365, + 1380, 1404, 1394, 1405, 1426, 1429, 1428, 1430, 1444, 0, + 4068, 145, 0, 756, 0, 757, 778, 0, 801, 0, + 788, 798, 842, 1002, 846, 849, 884, 942, 937, 0, + 960, 0, 976, 1039, 1148, 1100, 1165, 1158, 1187, 1210, - 1291, 1316, 1334, 1413, 1428, 1432, 1451, 1461, 0, 1453, - 1457, 1468, 1450, 1466, 1466, 1456, 1459, 1463, 1471, 1470, - 1481, 1482, 1483, 1485, 1470, 1478, 0, 1474, 1494, 1495, - 1501, 1506, 1503, 1504, 1495, 1500, 1501, 0, 1511, 1506, - 1506, 1523, 1524, 1529, 1519, 1519, 1523, 1538, 1520, 1533, - 1537, 1529, 1540, 0, 1523, 1528, 1533, 1542, 0, 1542, - 1539, 1547, 1559, 0, 1551, 1559, 1555, 1576, 1564, 1558, - 1579, 1560, 1564, 1575, 1579, 1572, 0, 140, 1590, 1593, - 1594, 1602, 1616, 1607, 1628, 1618, 1632, 1626, 1657, 1658, - 1647, 1666, 1661, 1672, 1696, 1670, 1680, 1698, 1714, 1706, + 1275, 0, 1295, 1305, 1357, 1345, 1382, 1421, 1429, 1447, + 1458, 0, 1450, 1452, 1465, 1447, 1462, 1464, 1463, 1464, + 1467, 1476, 1473, 1484, 1487, 1488, 1493, 1478, 1487, 0, + 1482, 1498, 1495, 1501, 1505, 1500, 1502, 1492, 1497, 1497, + 0, 1509, 1504, 1504, 1519, 1522, 1536, 1524, 1523, 1528, + 1541, 1523, 1538, 1542, 1537, 1548, 0, 1532, 1536, 1537, + 1546, 0, 1543, 1540, 1547, 1557, 0, 1558, 1560, 1552, + 1570, 1562, 1557, 1578, 1568, 1572, 1579, 1587, 1578, 0, + 140, 1596, 1601, 1602, 1604, 1605, 1606, 1634, 1620, 1635, + 1638, 1659, 1644, 1650, 1660, 1674, 1688, 1678, 1675, 1700, - 1715, 1724, 1711, 1732, 1763, 1755, 1750, 1764, 1769, 1768, - 1778, 1780, 1799, 1804, 1781, 1818, 1809, 1812, 1823, 1840, - 1842, 1852, 1871, 1834, 1853, 1877, 1886, 1874, 1883, 1888, - 1896, 1912, 1909, 1928, 1907, 1926, 1920, 1938, 1951, 1961, - 1960, 1970, 1966, 1976, 1994, 1992, 1995, 2011, 2006, 2005, - 2016, 2034, 2035, 2045, 2040, 2050, 2049, 2085, 2059, 2074, - 2080, 2089, 2090, 2098, 2099, 2122, 2103, 2128, 2138, 2124, - 2134, 2143, 2159, 2162, 2157, 2187, 2188, 2176, 2193, 2211, - 2212, 2217, 2222, 2228, 1590, 1595, 1642, 1681, 1699, 1740, - 0, 1750, 0, 0, 1778, 1853, 1863, 1960, 0, 1993, + 1704, 1710, 1713, 1714, 1728, 1712, 1723, 1749, 1752, 1754, + 1758, 1766, 1764, 1782, 1783, 1788, 1806, 1798, 1767, 1820, + 1817, 1828, 1831, 1852, 1834, 1866, 1870, 1868, 1885, 1871, + 1902, 1894, 1860, 1862, 1903, 1906, 1920, 1919, 1924, 1937, + 1934, 1938, 1960, 1972, 1973, 1974, 1962, 1991, 1988, 1970, + 2016, 2012, 2010, 2014, 2022, 2044, 2045, 2055, 2060, 2074, + 2058, 2076, 2084, 2088, 2089, 2090, 2112, 2099, 2113, 2122, + 2118, 2143, 2147, 2144, 2148, 2152, 2173, 2176, 2177, 2202, + 2192, 2210, 2207, 2218, 2231, 2235, 2240, 2256, 1596, 1597, + 1621, 1626, 1705, 1777, 0, 1804, 0, 0, 1824, 1943, - 2050, 2053, 2108, 0, 2122, 2169, 2171, 0, 0, 2205, - 2222, 2220, 2230, 2250, 2251, 0, 2235, 0, 0, 2255, - 2250, 0, 2253, 0, 2255, 0, 2266, 2254, 2251, 2258, - 2263, 2277, 0, 2273, 0, 0, 0, 2266, 0, 2275, - 0, 2283, 2270, 2283, 2274, 0, 2293, 2295, 2283, 2286, - 2292, 0, 2305, 2306, 2296, 2292, 2300, 2308, 2310, 2322, - 0, 2321, 2320, 2325, 2320, 0, 0, 2319, 2336, 2326, - 2320, 2341, 2323, 2337, 2340, 2338, 0, 2328, 0, 2345, - 0, 0, 2356, 2373, 2350, 2354, 2375, 2358, 2379, 2384, - 2389, 2390, 2419, 2408, 2414, 2418, 2423, 2433, 2442, 2457, + 2011, 2015, 0, 2117, 2118, 2143, 2188, 0, 2208, 2237, + 2240, 0, 0, 2239, 2241, 2243, 2246, 2268, 2270, 2272, + 0, 2265, 0, 0, 2285, 2273, 0, 2276, 0, 2279, + 0, 2290, 2279, 2275, 2282, 2284, 2296, 0, 2293, 0, + 0, 0, 2286, 0, 2295, 0, 2304, 2291, 2307, 2300, + 0, 2316, 2315, 2305, 2307, 2315, 0, 2330, 2334, 2326, + 2322, 2323, 2331, 2334, 2346, 0, 2346, 2344, 2349, 2341, + 0, 0, 2338, 0, 2356, 2346, 2340, 2362, 2344, 2358, + 2363, 2361, 0, 2351, 0, 2368, 0, 0, 2380, 2384, + 2369, 2372, 2388, 2398, 2402, 2410, 2412, 2414, 2436, 2438, - 2451, 2463, 2475, 2487, 2481, 2476, 2486, 2505, 2509, 2511, - 2497, 2530, 2541, 2535, 2545, 2546, 2549, 2563, 2574, 2551, - 2575, 2579, 2597, 2589, 2600, 2605, 2619, 2615, 2630, 2651, - 2613, 2641, 2629, 2654, 2659, 2667, 2663, 2685, 2669, 2673, - 2703, 2704, 2695, 2713, 2727, 2721, 2726, 2736, 2757, 2755, - 2771, 2785, 2779, 2780, 2795, 2789, 2819, 2813, 2803, 2821, - 2825, 2831, 2834, 2843, 2847, 2859, 2864, 2876, 2877, 2887, - 2898, 2899, 2875, 2927, 2888, 2916, 2917, 2921, 2929, 2931, - 0, 0, 2334, 0, 2398, 2452, 2493, 2485, 2530, 2581, - 0, 2594, 2665, 2684, 0, 2687, 2728, 2743, 2759, 2746, + 2440, 2448, 2423, 2446, 2472, 2454, 2490, 2464, 2500, 2502, + 2514, 2477, 2503, 2531, 2532, 2540, 2553, 2566, 2576, 2508, + 2518, 2577, 2544, 2554, 2588, 2594, 2582, 2598, 2590, 2606, + 2620, 2622, 2631, 2636, 2639, 2648, 2660, 2630, 2665, 2654, + 2664, 2670, 2693, 2676, 2698, 2694, 2702, 2716, 2724, 2706, + 2728, 2739, 2742, 2747, 2752, 2768, 2750, 2782, 2784, 2773, + 2801, 2798, 2816, 2810, 2834, 2806, 2822, 2835, 2838, 2850, + 2844, 2847, 2872, 2856, 2875, 2884, 2889, 2910, 2908, 2924, + 2898, 2938, 2907, 2940, 2939, 2942, 2943, 2952, 0, 0, + 2431, 0, 2509, 2512, 2586, 2725, 2746, 2785, 0, 2780, - 2754, 2776, 2849, 2867, 0, 2875, 0, 2931, 2925, 0, - 2924, 0, 0, 2927, 2950, 2938, 2946, 0, 0, 0, - 0, 2955, 0, 2965, 2959, 2952, 0, 0, 2970, 2958, - 2959, 2973, 2971, 0, 2985, 2984, 2969, 2986, 2990, 2973, - 2977, 2976, 2996, 0, 2993, 2996, 2996, 0, 2987, 3007, - 3008, 0, 3005, 3006, 3015, 3007, 3021, 3024, 3038, 3040, - 3046, 3050, 3055, 3059, 3074, 3072, 3078, 3080, 3103, 3084, - 3089, 3113, 3114, 3118, 3142, 3090, 3124, 3147, 3143, 3164, - 3172, 3148, 3182, 3176, 3178, 3186, 3180, 3216, 3214, 3188, - 3217, 3218, 3220, 3222, 3226, 3254, 3252, 3251, 3256, 3260, + 2789, 2852, 0, 2873, 2881, 2921, 2946, 2932, 2934, 2947, + 2960, 2977, 0, 0, 2970, 0, 2976, 2967, 0, 2966, + 0, 0, 2967, 2984, 2978, 2986, 0, 0, 0, 0, + 2994, 0, 2999, 2993, 2982, 0, 0, 2998, 2987, 2988, + 3003, 3002, 0, 3014, 3013, 2998, 3015, 3019, 3002, 3004, + 3003, 3030, 0, 3029, 3032, 3032, 0, 3020, 3039, 3040, + 0, 3046, 3047, 3048, 3050, 3051, 3052, 3065, 3080, 3101, + 3082, 3083, 3104, 3106, 3088, 3105, 3119, 3136, 3117, 3122, + 3147, 3150, 3159, 3171, 3160, 3168, 3176, 3201, 3184, 3210, + 3209, 3193, 3199, 3205, 3224, 3227, 3233, 3245, 3243, 3255, - 3268, 3284, 3289, 3285, 3286, 3294, 3300, 3319, 3310, 3335, - 3344, 3349, 3338, 3353, 3354, 3359, 3372, 3384, 3387, 3388, - 3389, 3397, 3398, 3402, 3016, 0, 3117, 3152, 3163, 3176, - 0, 3233, 3217, 0, 0, 3345, 0, 0, 0, 3348, - 0, 3396, 3397, 0, 0, 3393, 0, 0, 3410, 3426, - 0, 0, 3420, 3432, 0, 3418, 3437, 3418, 0, 3443, - 3428, 0, 0, 0, 3436, 0, 3450, 3451, 3433, 0, - 0, 0, 0, 3438, 3445, 3456, 3457, 3462, 3461, 3466, - 3485, 3467, 3497, 3491, 3496, 3500, 3501, 3510, 3515, 3525, - 3529, 3531, 3541, 3539, 3540, 3553, 3555, 3563, 3564, 3579, + 3258, 3261, 3264, 3267, 3273, 3283, 3295, 3289, 3297, 3299, + 3301, 3327, 3332, 3323, 3329, 3335, 3338, 3364, 3351, 3369, + 3377, 3387, 3386, 3388, 3409, 3392, 3417, 3421, 3418, 3422, + 3440, 3450, 3455, 3452, 3049, 0, 3045, 3057, 3046, 3147, + 0, 3157, 3175, 0, 0, 3314, 0, 0, 0, 3353, + 0, 3366, 3368, 0, 0, 3411, 0, 0, 3440, 3457, + 0, 0, 3452, 3465, 0, 3447, 3463, 3446, 0, 3473, + 3460, 0, 0, 0, 3469, 0, 3487, 3489, 3476, 0, + 0, 0, 0, 3479, 3487, 3495, 3496, 3500, 3504, 3514, + 3506, 3505, 3537, 3529, 3538, 3539, 3548, 3550, 3554, 3560, - 3569, 3574, 3585, 3597, 3607, 3593, 3608, 3595, 3598, 3609, - 3639, 3633, 3638, 3641, 3643, 3662, 3651, 3652, 3677, 3687, - 3681, 3683, 3691, 3692, 3693, 3715, 0, 0, 0, 0, - 0, 3467, 0, 3634, 0, 0, 0, 0, 0, 3659, - 0, 3654, 3705, 0, 0, 3701, 0, 0, 3704, 3713, - 3723, 0, 0, 3725, 3726, 3727, 3731, 3736, 3741, 3755, - 3765, 3757, 3759, 3767, 3769, 3770, 3793, 3781, 3809, 3799, - 3803, 3805, 3824, 3811, 3815, 3821, 3837, 3827, 3833, 3843, - 3756, 0, 3840, 0, 3846, 0, 3845, 3856, 0, 3873, - 3869, 3883, 3875, 3891, 3879, 3881, 3912, 3887, 3878, 0, + 3563, 3569, 3579, 3578, 3582, 3591, 3592, 3594, 3603, 3604, + 3608, 3613, 3622, 3627, 3636, 3637, 3652, 3646, 3648, 3658, + 3682, 3676, 3671, 3677, 3681, 3706, 3692, 3714, 3715, 3716, + 3700, 3725, 3730, 3744, 3746, 3748, 0, 0, 0, 0, + 0, 3549, 0, 3628, 0, 0, 0, 0, 0, 3664, + 0, 3709, 3751, 0, 0, 3739, 0, 0, 3743, 3752, + 3765, 0, 0, 3769, 3770, 3774, 3779, 3780, 3788, 3785, + 3798, 3802, 3803, 3804, 3814, 3819, 3838, 3828, 3844, 3833, + 3842, 3847, 3868, 3852, 3870, 3873, 3896, 3878, 3881, 3882, + 3795, 0, 3861, 0, 3874, 0, 3872, 3895, 0, 3907, - 3883, 0, 0, 3909, 3913, 3921, 3917, 3927, 0, 0, - 3943, 3945, 4035, 4010, 4014, 136, 4018, 4022, 4026, 4030 + 3912, 3921, 3918, 3924, 3926, 3930, 3947, 3935, 3942, 0, + 3938, 0, 0, 3956, 3960, 3961, 3966, 3970, 0, 0, + 3972, 3978, 4068, 4043, 4047, 136, 4051, 4055, 4059, 4063 } ; -static const flex_int16_t yy_def[1021] = +static const flex_int16_t yy_def[1031] = { 0, - 1013, 1, 1013, 3, 1013, 1013, 1013, 1013, 1013, 1014, - 1013, 1015, 1013, 1013, 1013, 1013, 1013, 1013, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1013, 1017, 1017, 1013, 1017, 1018, 1017, 1019, - 1017, 1017, 1017, 1017, 1017, 1017, 1020, 1020, 58, 58, + 1023, 1, 1023, 3, 1023, 1023, 1023, 1023, 1023, 1024, + 1023, 1025, 1023, 1023, 1023, 1023, 1023, 1023, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1023, 1027, 1027, 1023, 1027, 1028, 1027, 1029, + 1027, 1027, 1027, 1027, 1027, 1027, 1030, 1030, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 1017, 1013, 1013, 1014, 1015, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1016, 1016, 1016, 1016, 1016, 1016, + 1027, 1023, 1023, 1024, 1025, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1026, 1026, 1026, 1026, 1026, 1026, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1013, 1017, 1017, 1017, 1018, 1019, 1017, - 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 58, 58, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1023, 1027, 1027, 1027, 1028, 1029, + 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, @@ -887,20 +889,20 @@ static const flex_int16_t yy_def[1021] = 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 1017, 1013, 1013, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 1027, + 1023, 1023, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1017, 1017, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1027, + 1027, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, @@ -911,18 +913,18 @@ static const flex_int16_t yy_def[1021] = 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 58, 58, 58, 58, 58, 58, 58, 58, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 58, 58, 58, 58, 58, 58, 58, 58, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, @@ -933,47 +935,48 @@ static const flex_int16_t yy_def[1021] = 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 58, 58, 58, 58, 58, 58, 58, 58, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, - 1016, 1016, 1016, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1026, 1026, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 1016, 1016, + 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 58, - 1016, 1016, 1016, 58, 58, 58, 58, 58, 1016, 1016, - 58, 58, 0, 1013, 1013, 1013, 1013, 1013, 1013, 1013 + 58, 58, 58, 58, 58, 58, 58, 58, 1026, 1026, + 1026, 1026, 1026, 58, 58, 58, 58, 58, 1026, 1026, + 58, 58, 0, 1023, 1023, 1023, 1023, 1023, 1023, 1023 } ; -static const flex_int16_t yy_nxt[4103] = +static const flex_int16_t yy_nxt[4136] = { 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, @@ -990,446 +993,449 @@ static const flex_int16_t yy_nxt[4103] = 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 73, 80, 73, 81, 82, 82, 82, 82, 87, 95, - 88, 90, 88, 91, 92, 96, 102, 97, 109, 378, - 104, 133, 110, 98, 270, 99, 111, 105, 134, 100, - 101, 173, 112, 271, 106, 113, 103, 107, 108, 114, - 272, 115, 96, 102, 97, 109, 116, 104, 133, 110, - 98, 117, 99, 111, 105, 134, 100, 101, 173, 112, - 271, 106, 113, 103, 107, 108, 114, 272, 115, 123, + 88, 90, 88, 91, 92, 96, 102, 97, 109, 381, + 104, 134, 110, 98, 272, 99, 111, 105, 135, 100, + 101, 174, 112, 273, 106, 113, 103, 107, 108, 114, + 381, 115, 96, 102, 97, 109, 116, 104, 134, 110, + 98, 117, 99, 111, 105, 135, 100, 101, 174, 112, + 273, 106, 113, 103, 107, 108, 114, 126, 115, 184, - 181, 118, 182, 116, 119, 124, 125, 120, 117, 128, - 121, 176, 82, 122, 126, 129, 130, 131, 378, 135, - 127, 277, 132, 136, 82, 82, 123, 183, 118, 137, - 180, 119, 124, 125, 120, 138, 128, 121, 141, 139, - 122, 126, 129, 130, 131, 140, 135, 127, 277, 132, - 136, 377, 142, 184, 182, 145, 137, 149, 143, 144, - 152, 270, 138, 146, 153, 141, 139, 147, 150, 278, - 148, 89, 140, 86, 151, 166, 154, 167, 155, 142, - 168, 156, 145, 269, 149, 143, 144, 152, 157, 158, - 146, 153, 169, 268, 147, 150, 278, 148, 185, 186, + 124, 177, 82, 116, 170, 127, 125, 181, 117, 118, + 274, 128, 171, 82, 82, 185, 183, 119, 136, 182, + 120, 183, 137, 121, 126, 279, 122, 124, 138, 123, + 139, 170, 127, 125, 140, 129, 118, 274, 128, 171, + 141, 130, 131, 132, 119, 136, 380, 120, 133, 137, + 121, 142, 279, 122, 272, 138, 123, 139, 186, 187, + 153, 140, 129, 150, 154, 143, 89, 141, 130, 131, + 132, 144, 145, 146, 151, 133, 86, 167, 142, 168, + 152, 147, 169, 230, 155, 148, 156, 153, 149, 157, + 150, 154, 143, 172, 173, 271, 158, 159, 144, 145, - 170, 151, 166, 154, 167, 155, 188, 168, 156, 171, - 172, 283, 189, 189, 187, 157, 158, 159, 160, 169, - 217, 161, 227, 183, 162, 163, 218, 170, 82, 82, - 228, 164, 189, 189, 165, 180, 171, 172, 283, 189, - 189, 90, 88, 175, 159, 160, 177, 217, 161, 227, - 189, 162, 163, 218, 176, 82, 189, 228, 164, 189, - 189, 165, 175, 175, 267, 175, 175, 175, 175, 175, - 175, 219, 175, 175, 175, 189, 189, 189, 190, 220, - 191, 273, 279, 189, 189, 221, 192, 275, 193, 274, - 276, 267, 194, 195, 288, 189, 280, 281, 219, 295, + 146, 151, 270, 190, 167, 189, 168, 152, 147, 169, + 230, 155, 148, 156, 221, 149, 157, 190, 190, 188, + 172, 173, 222, 158, 159, 160, 161, 229, 223, 162, + 190, 280, 163, 164, 82, 82, 285, 190, 190, 165, + 290, 221, 166, 184, 190, 190, 90, 88, 181, 222, + 177, 82, 160, 161, 229, 223, 162, 176, 280, 163, + 164, 185, 183, 285, 190, 190, 165, 290, 178, 166, + 176, 176, 190, 176, 176, 176, 176, 176, 176, 219, + 176, 176, 176, 231, 190, 220, 191, 232, 192, 275, + 297, 298, 190, 233, 193, 283, 194, 276, 175, 190, - 296, 174, 189, 189, 282, 190, 220, 191, 273, 279, - 94, 189, 221, 192, 275, 193, 274, 276, 297, 194, - 195, 288, 189, 280, 281, 93, 295, 296, 175, 175, - 175, 282, 175, 175, 175, 175, 175, 175, 229, 175, - 175, 175, 230, 232, 89, 297, 196, 233, 231, 284, - 86, 285, 246, 234, 289, 298, 247, 83, 189, 290, - 243, 299, 300, 189, 189, 229, 197, 301, 1013, 230, - 232, 244, 189, 196, 233, 231, 284, 245, 285, 246, - 234, 289, 298, 247, 189, 189, 290, 243, 299, 300, - 189, 189, 1013, 197, 301, 175, 198, 286, 244, 189, + 195, 196, 284, 190, 190, 269, 219, 299, 300, 94, + 231, 190, 220, 191, 232, 192, 275, 297, 298, 190, + 233, 193, 283, 194, 276, 190, 301, 195, 196, 284, + 190, 190, 269, 302, 299, 300, 176, 176, 176, 93, + 176, 176, 176, 176, 176, 176, 234, 176, 176, 176, + 235, 245, 190, 301, 197, 190, 236, 303, 277, 248, + 302, 278, 246, 249, 309, 310, 190, 190, 247, 89, + 267, 268, 86, 234, 198, 190, 83, 235, 245, 190, + 1023, 197, 190, 236, 303, 277, 248, 190, 278, 246, + 249, 309, 310, 190, 190, 247, 190, 267, 268, 281, - 189, 1013, 307, 199, 245, 1013, 308, 287, 189, 309, - 200, 189, 189, 201, 202, 265, 266, 260, 310, 261, - 189, 1013, 262, 198, 286, 1013, 311, 189, 189, 307, - 199, 1013, 189, 308, 287, 189, 309, 200, 1013, 189, - 201, 202, 265, 266, 260, 310, 261, 189, 203, 262, - 263, 312, 204, 311, 189, 189, 205, 313, 264, 189, - 314, 316, 206, 315, 1013, 207, 317, 318, 319, 320, - 1013, 325, 189, 1013, 189, 203, 326, 263, 312, 204, - 1013, 189, 1013, 205, 313, 264, 291, 314, 316, 206, - 315, 292, 207, 317, 318, 319, 320, 293, 325, 189, + 311, 198, 190, 176, 199, 262, 190, 263, 190, 288, + 264, 200, 312, 282, 190, 286, 190, 287, 201, 289, + 291, 202, 203, 190, 313, 292, 281, 311, 190, 1023, + 1023, 199, 262, 1023, 263, 190, 288, 264, 200, 312, + 282, 1023, 286, 190, 287, 201, 289, 291, 202, 203, + 265, 313, 292, 1023, 190, 190, 204, 293, 266, 304, + 205, 305, 294, 314, 206, 306, 315, 316, 295, 321, + 207, 322, 307, 208, 190, 296, 308, 265, 1023, 317, + 190, 190, 318, 204, 293, 266, 304, 205, 305, 294, + 314, 206, 306, 315, 316, 295, 321, 207, 322, 307, - 189, 189, 327, 326, 294, 328, 329, 208, 330, 209, - 331, 334, 332, 291, 210, 335, 1013, 336, 292, 211, - 189, 184, 182, 333, 293, 1013, 337, 189, 1013, 327, - 338, 294, 328, 329, 208, 330, 209, 331, 334, 332, - 339, 210, 335, 302, 336, 303, 211, 189, 189, 304, - 333, 340, 212, 337, 341, 213, 305, 338, 214, 342, - 306, 215, 343, 344, 216, 345, 350, 339, 189, 1013, - 302, 1013, 303, 1013, 1013, 189, 304, 1013, 340, 212, - 351, 341, 213, 305, 321, 214, 342, 306, 215, 343, - 344, 216, 345, 350, 322, 189, 189, 222, 346, 323, + 208, 190, 296, 308, 323, 319, 317, 190, 190, 318, + 320, 328, 329, 330, 331, 209, 332, 210, 333, 337, + 1023, 334, 211, 335, 338, 339, 340, 212, 190, 1023, + 1023, 323, 319, 1023, 336, 190, 1023, 320, 328, 329, + 330, 331, 209, 332, 210, 333, 337, 324, 334, 211, + 335, 338, 339, 340, 212, 190, 213, 325, 341, 342, + 190, 336, 326, 327, 214, 343, 344, 215, 345, 346, + 216, 347, 348, 217, 324, 349, 218, 353, 1023, 350, + 190, 1023, 1023, 213, 325, 341, 342, 190, 1023, 326, + 327, 214, 343, 344, 215, 345, 346, 216, 347, 348, - 324, 348, 347, 223, 224, 225, 349, 351, 355, 1013, - 226, 321, 356, 357, 358, 359, 189, 1013, 1013, 1013, - 362, 322, 363, 189, 222, 346, 323, 324, 348, 347, - 223, 224, 225, 349, 364, 355, 352, 226, 1013, 356, - 357, 358, 359, 189, 235, 353, 360, 362, 189, 363, - 365, 366, 368, 354, 367, 369, 370, 361, 236, 374, - 1013, 364, 371, 352, 237, 238, 375, 376, 189, 1013, - 1013, 235, 353, 360, 372, 189, 485, 365, 366, 368, - 354, 367, 369, 370, 361, 236, 374, 373, 189, 371, - 486, 237, 238, 375, 376, 189, 189, 239, 189, 379, + 217, 1023, 349, 218, 353, 351, 350, 190, 190, 224, + 352, 354, 358, 359, 355, 225, 226, 227, 360, 361, + 362, 1023, 228, 356, 365, 366, 367, 368, 190, 1023, + 371, 357, 351, 1023, 1023, 190, 224, 352, 354, 358, + 359, 355, 225, 226, 227, 360, 361, 362, 363, 228, + 356, 365, 366, 367, 368, 190, 237, 371, 357, 364, + 190, 369, 372, 373, 370, 375, 377, 378, 379, 374, + 238, 1023, 1023, 489, 490, 363, 239, 240, 376, 190, + 190, 1023, 1023, 237, 1023, 1023, 364, 190, 369, 372, + 373, 370, 375, 377, 378, 379, 374, 238, 190, 190, - 189, 372, 487, 485, 1013, 240, 1013, 383, 189, 241, - 384, 189, 242, 380, 373, 189, 189, 486, 189, 1013, - 189, 1013, 1013, 189, 239, 189, 379, 189, 189, 487, - 1013, 189, 240, 189, 383, 189, 241, 384, 189, 242, - 380, 385, 1013, 189, 248, 189, 249, 189, 189, 250, - 1013, 488, 1013, 189, 489, 189, 251, 252, 189, 189, - 189, 490, 189, 386, 491, 189, 189, 1013, 385, 381, - 494, 248, 1013, 249, 1013, 189, 250, 382, 488, 189, - 189, 489, 189, 251, 252, 189, 189, 1013, 490, 189, - 386, 491, 189, 189, 253, 254, 381, 494, 255, 189, + 489, 490, 491, 239, 240, 376, 190, 190, 190, 241, + 190, 382, 190, 383, 492, 493, 1023, 242, 190, 386, + 1023, 243, 387, 190, 244, 190, 190, 1023, 190, 491, + 190, 1023, 190, 494, 1023, 190, 241, 190, 382, 190, + 383, 492, 493, 190, 242, 190, 386, 190, 243, 387, + 190, 244, 190, 397, 384, 190, 250, 190, 251, 190, + 494, 252, 385, 398, 1023, 388, 495, 190, 253, 254, + 190, 190, 190, 190, 190, 389, 498, 190, 190, 190, + 397, 384, 499, 250, 1023, 251, 1023, 1023, 252, 385, + 398, 190, 388, 495, 190, 253, 254, 190, 190, 190, - 387, 256, 257, 189, 382, 492, 189, 493, 258, 189, - 389, 259, 189, 1013, 388, 1013, 391, 390, 189, 189, - 189, 253, 254, 189, 1013, 255, 189, 387, 256, 257, - 189, 1013, 492, 495, 493, 258, 189, 389, 259, 189, - 189, 388, 189, 391, 390, 189, 189, 189, 394, 392, - 189, 393, 496, 396, 397, 497, 189, 189, 395, 398, - 495, 1013, 189, 189, 1013, 1013, 189, 189, 189, 189, - 403, 404, 189, 1013, 1013, 394, 392, 189, 393, 496, - 396, 397, 497, 189, 189, 395, 398, 1013, 405, 189, - 1013, 189, 189, 1013, 498, 189, 399, 403, 404, 189, + 190, 190, 389, 498, 190, 190, 255, 256, 392, 499, + 257, 190, 390, 258, 259, 393, 500, 1023, 190, 1023, + 260, 190, 1023, 261, 190, 394, 391, 1023, 190, 190, + 190, 190, 1023, 255, 256, 392, 1023, 257, 190, 390, + 258, 259, 393, 500, 190, 190, 190, 260, 190, 190, + 261, 1023, 394, 391, 190, 501, 190, 190, 190, 400, + 410, 395, 399, 396, 401, 190, 190, 1023, 502, 1023, + 1023, 190, 190, 190, 190, 1023, 190, 503, 190, 1023, + 1023, 190, 501, 190, 1023, 1023, 400, 410, 395, 399, + 396, 401, 190, 190, 408, 502, 406, 407, 190, 1023, - 189, 400, 189, 1013, 189, 407, 1013, 401, 1013, 408, - 189, 189, 406, 189, 402, 405, 1013, 427, 189, 189, - 189, 498, 189, 399, 409, 1013, 189, 189, 400, 189, - 189, 1013, 407, 189, 401, 189, 408, 189, 189, 406, - 189, 402, 415, 189, 427, 189, 189, 189, 189, 189, - 499, 409, 419, 189, 1013, 189, 417, 189, 416, 1013, - 189, 189, 189, 189, 1013, 189, 189, 1013, 189, 415, - 189, 418, 189, 189, 410, 189, 411, 499, 1013, 419, - 412, 189, 189, 417, 189, 416, 435, 413, 189, 189, - 189, 414, 189, 189, 420, 189, 189, 1013, 418, 421, + 504, 190, 402, 190, 503, 190, 190, 403, 190, 1023, + 190, 411, 190, 404, 412, 1023, 190, 496, 409, 497, + 405, 408, 1023, 406, 407, 190, 190, 504, 190, 402, + 190, 1023, 190, 190, 403, 190, 190, 1023, 411, 190, + 404, 412, 190, 190, 496, 409, 497, 405, 190, 418, + 1023, 190, 505, 190, 1023, 190, 1023, 1023, 419, 190, + 1023, 421, 190, 190, 413, 1023, 414, 1023, 190, 190, + 415, 190, 190, 1023, 190, 190, 418, 416, 190, 505, + 190, 417, 420, 190, 422, 419, 190, 423, 421, 190, + 1023, 413, 190, 414, 190, 190, 190, 415, 190, 190, - 1013, 410, 1013, 411, 189, 189, 1013, 412, 189, 189, - 1013, 189, 1013, 435, 413, 189, 189, 189, 414, 422, - 1013, 420, 423, 189, 424, 189, 421, 189, 500, 425, - 189, 189, 189, 426, 1013, 189, 189, 189, 428, 433, - 501, 189, 189, 504, 189, 434, 422, 189, 1013, 423, - 189, 424, 189, 1013, 189, 500, 425, 189, 1013, 505, - 426, 189, 189, 1013, 189, 428, 433, 501, 189, 1013, - 504, 1013, 434, 506, 189, 429, 189, 189, 189, 436, - 439, 189, 440, 1013, 189, 430, 505, 437, 189, 438, - 431, 432, 1013, 441, 1013, 507, 189, 1013, 189, 1013, + 190, 190, 190, 439, 416, 1023, 424, 190, 417, 420, + 190, 422, 425, 190, 423, 508, 190, 190, 1023, 190, + 1023, 190, 190, 190, 1023, 190, 190, 190, 190, 190, + 439, 426, 431, 424, 427, 428, 190, 190, 1023, 425, + 429, 430, 508, 190, 190, 190, 190, 432, 190, 190, + 190, 190, 190, 190, 438, 190, 190, 1023, 426, 431, + 437, 427, 428, 190, 190, 506, 190, 429, 430, 1023, + 190, 190, 190, 190, 432, 190, 190, 190, 190, 446, + 507, 438, 509, 190, 433, 190, 190, 437, 190, 440, + 510, 449, 506, 190, 434, 1023, 190, 190, 190, 435, - 506, 189, 429, 189, 189, 189, 436, 439, 189, 440, - 189, 189, 430, 189, 437, 189, 438, 431, 432, 443, - 441, 189, 507, 189, 444, 189, 442, 189, 189, 189, - 189, 189, 1013, 189, 447, 189, 445, 189, 189, 449, - 189, 189, 189, 1013, 446, 1013, 443, 189, 189, 189, - 189, 444, 1013, 442, 189, 448, 189, 189, 189, 189, - 189, 447, 189, 445, 508, 189, 449, 189, 189, 189, - 189, 446, 450, 189, 189, 1013, 189, 189, 1013, 189, - 452, 189, 448, 509, 451, 189, 189, 189, 453, 189, - 456, 508, 189, 189, 189, 457, 189, 189, 454, 450, + 436, 511, 1023, 190, 1023, 190, 446, 507, 190, 509, + 190, 433, 190, 190, 190, 190, 440, 510, 449, 447, + 441, 434, 442, 190, 190, 190, 435, 436, 511, 443, + 190, 444, 190, 190, 190, 190, 1023, 190, 512, 190, + 450, 190, 445, 190, 190, 190, 447, 441, 448, 442, + 451, 190, 190, 190, 190, 453, 443, 190, 444, 190, + 190, 190, 1023, 190, 452, 512, 190, 450, 190, 445, + 190, 190, 190, 1023, 190, 448, 1023, 451, 454, 190, + 190, 190, 453, 190, 190, 457, 190, 1023, 190, 190, + 190, 452, 513, 1023, 1023, 190, 1023, 456, 455, 190, - 189, 189, 455, 189, 510, 458, 189, 452, 189, 1013, - 509, 451, 189, 1013, 189, 453, 189, 456, 189, 189, - 189, 189, 457, 189, 459, 454, 189, 189, 189, 455, - 189, 510, 458, 511, 465, 460, 463, 189, 189, 189, - 464, 189, 1013, 1013, 461, 189, 189, 189, 189, 512, - 189, 459, 462, 189, 189, 470, 1013, 189, 189, 1013, - 511, 465, 460, 463, 189, 189, 466, 464, 189, 189, - 189, 461, 189, 189, 189, 189, 512, 467, 189, 462, - 468, 1013, 470, 189, 189, 189, 471, 1013, 1013, 189, - 189, 469, 189, 466, 472, 189, 189, 189, 189, 189, + 190, 190, 462, 190, 190, 454, 190, 1023, 514, 190, + 190, 190, 457, 458, 190, 190, 190, 459, 190, 513, + 190, 463, 515, 460, 456, 455, 190, 190, 461, 462, + 190, 190, 1023, 190, 190, 514, 190, 464, 190, 190, + 458, 190, 190, 190, 459, 190, 465, 190, 463, 515, + 460, 1023, 467, 469, 466, 461, 468, 190, 474, 190, + 190, 190, 190, 190, 464, 190, 190, 190, 470, 190, + 190, 190, 516, 465, 471, 1023, 517, 190, 190, 467, + 469, 466, 190, 468, 190, 474, 190, 190, 190, 190, + 190, 190, 190, 476, 190, 470, 472, 190, 190, 516, - 1013, 1013, 189, 189, 467, 189, 1013, 468, 476, 189, - 189, 473, 1013, 471, 482, 189, 189, 189, 469, 189, - 189, 472, 189, 1013, 474, 189, 189, 475, 189, 189, - 189, 1013, 477, 478, 189, 476, 189, 480, 473, 479, - 189, 482, 189, 189, 513, 484, 189, 189, 189, 189, - 481, 474, 514, 189, 475, 189, 189, 189, 483, 477, - 478, 189, 515, 189, 480, 502, 479, 189, 516, 189, - 189, 513, 484, 189, 517, 189, 189, 481, 518, 514, - 503, 519, 520, 521, 189, 483, 522, 523, 524, 515, - 189, 525, 502, 526, 527, 516, 189, 528, 529, 530, + 475, 471, 190, 517, 190, 190, 518, 473, 190, 190, + 480, 190, 190, 477, 190, 190, 1023, 190, 190, 190, + 476, 190, 190, 472, 190, 478, 481, 475, 479, 190, + 1023, 190, 1023, 518, 473, 190, 1023, 480, 190, 190, + 477, 190, 190, 190, 190, 486, 484, 190, 190, 190, + 482, 519, 478, 481, 1023, 479, 483, 488, 190, 485, + 520, 190, 487, 190, 521, 190, 190, 190, 190, 190, + 190, 522, 486, 484, 190, 523, 524, 482, 519, 525, + 526, 190, 527, 483, 488, 528, 485, 520, 190, 487, + 190, 521, 190, 190, 190, 529, 530, 531, 522, 532, - 531, 517, 532, 534, 535, 518, 536, 503, 519, 520, - 521, 537, 533, 522, 523, 524, 538, 539, 525, 540, - 526, 527, 541, 542, 528, 529, 530, 531, 543, 532, - 534, 535, 544, 536, 545, 546, 547, 548, 537, 533, - 549, 550, 551, 538, 539, 552, 540, 553, 554, 541, - 542, 555, 556, 557, 558, 543, 559, 560, 561, 544, - 562, 545, 546, 547, 548, 563, 564, 549, 550, 551, - 565, 566, 552, 567, 553, 554, 568, 569, 555, 556, - 557, 558, 572, 559, 560, 561, 570, 562, 571, 573, - 574, 575, 563, 564, 576, 577, 578, 565, 566, 581, + 533, 534, 523, 524, 535, 536, 525, 526, 190, 527, + 537, 539, 528, 540, 541, 542, 543, 544, 545, 546, + 538, 547, 529, 530, 531, 548, 532, 533, 534, 549, + 550, 535, 536, 551, 552, 553, 554, 537, 539, 555, + 540, 541, 542, 543, 544, 545, 546, 538, 547, 556, + 557, 558, 548, 559, 560, 561, 549, 550, 562, 563, + 551, 552, 553, 554, 564, 565, 555, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 556, 557, 558, 578, + 559, 560, 561, 579, 575, 562, 563, 576, 580, 577, + 581, 564, 565, 582, 566, 567, 568, 569, 570, 571, - 567, 579, 582, 568, 569, 580, 1013, 189, 1013, 572, - 583, 189, 1013, 570, 1013, 571, 573, 574, 575, 584, - 681, 576, 577, 578, 189, 682, 581, 189, 579, 582, - 189, 189, 580, 189, 189, 189, 1013, 583, 189, 189, - 585, 586, 1013, 189, 189, 189, 584, 681, 1013, 189, - 1013, 189, 682, 189, 189, 189, 1013, 189, 189, 587, - 189, 588, 189, 189, 189, 189, 189, 585, 586, 189, - 189, 189, 189, 590, 189, 591, 189, 592, 189, 683, - 189, 589, 189, 189, 189, 595, 587, 189, 588, 189, - 189, 189, 189, 594, 189, 189, 189, 597, 189, 593, + 572, 573, 574, 583, 584, 585, 578, 587, 588, 586, + 579, 575, 1023, 190, 576, 580, 577, 581, 589, 190, + 582, 590, 190, 190, 1023, 1023, 689, 690, 1023, 591, + 583, 584, 585, 190, 587, 588, 586, 190, 190, 190, + 190, 190, 190, 190, 1023, 589, 190, 592, 590, 190, + 190, 190, 190, 689, 690, 190, 591, 190, 691, 596, + 190, 597, 593, 692, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 594, 592, 190, 190, 190, 190, 190, + 598, 190, 190, 595, 190, 691, 596, 190, 597, 593, + 692, 190, 190, 599, 190, 190, 190, 190, 190, 190, - 590, 189, 591, 189, 592, 189, 683, 189, 589, 189, - 189, 189, 595, 189, 189, 189, 189, 189, 684, 599, - 594, 189, 189, 189, 597, 189, 593, 596, 603, 685, - 189, 189, 600, 189, 189, 189, 189, 1013, 598, 602, - 189, 189, 189, 189, 189, 684, 599, 601, 189, 189, - 189, 189, 189, 1013, 596, 603, 685, 686, 189, 600, - 189, 189, 189, 687, 604, 598, 602, 607, 189, 189, - 189, 1013, 189, 1013, 601, 189, 189, 605, 189, 189, - 189, 189, 608, 606, 686, 609, 189, 189, 189, 1013, - 687, 604, 189, 610, 607, 189, 189, 189, 614, 189, + 594, 601, 190, 190, 190, 190, 600, 598, 190, 602, + 595, 190, 190, 1023, 190, 190, 1023, 603, 190, 190, + 599, 190, 190, 190, 190, 190, 605, 190, 601, 609, + 190, 606, 190, 600, 604, 693, 602, 190, 190, 190, + 190, 190, 190, 608, 603, 190, 607, 190, 190, 190, + 190, 190, 190, 605, 190, 610, 609, 190, 606, 1023, + 190, 604, 693, 611, 190, 190, 190, 190, 190, 190, + 608, 613, 190, 607, 190, 190, 190, 190, 190, 614, + 612, 615, 610, 190, 621, 1023, 190, 190, 1023, 190, + 611, 190, 190, 190, 694, 190, 190, 616, 613, 190, - 189, 189, 1013, 688, 605, 189, 189, 189, 189, 608, - 606, 611, 609, 189, 189, 189, 189, 189, 189, 189, - 610, 189, 189, 612, 189, 614, 189, 189, 189, 189, - 688, 615, 189, 189, 613, 189, 189, 616, 611, 1013, - 189, 189, 189, 189, 189, 189, 189, 617, 189, 189, - 612, 189, 1013, 189, 618, 189, 189, 189, 615, 189, - 189, 613, 189, 189, 616, 1013, 622, 189, 189, 189, - 189, 189, 620, 189, 617, 619, 189, 189, 189, 189, - 1013, 618, 189, 689, 189, 623, 189, 189, 189, 189, - 189, 189, 621, 622, 189, 690, 189, 189, 189, 620, + 190, 190, 190, 190, 190, 190, 614, 612, 615, 1023, + 190, 621, 618, 190, 617, 190, 190, 695, 190, 190, + 190, 694, 190, 190, 616, 190, 190, 190, 190, 620, + 190, 190, 190, 622, 190, 190, 619, 190, 1023, 618, + 1023, 617, 190, 190, 695, 190, 190, 190, 190, 696, + 190, 190, 190, 623, 190, 624, 620, 190, 1023, 1023, + 622, 190, 190, 619, 190, 190, 625, 626, 190, 190, + 190, 190, 190, 1023, 1023, 190, 696, 634, 190, 635, + 623, 190, 624, 190, 190, 190, 627, 190, 190, 190, + 1023, 628, 190, 625, 626, 190, 190, 190, 190, 190, - 627, 626, 619, 189, 189, 628, 189, 624, 189, 625, - 689, 189, 623, 629, 189, 189, 189, 189, 189, 621, - 189, 189, 690, 189, 189, 189, 189, 627, 626, 630, - 189, 1013, 628, 189, 624, 189, 625, 635, 189, 631, - 629, 189, 632, 189, 189, 189, 189, 189, 1013, 189, - 189, 189, 189, 189, 633, 189, 630, 189, 634, 636, - 189, 1013, 1013, 189, 635, 189, 631, 637, 189, 632, - 189, 189, 189, 189, 638, 189, 189, 189, 189, 639, - 1013, 633, 189, 189, 189, 634, 636, 189, 189, 640, - 189, 691, 189, 189, 637, 189, 1013, 189, 189, 641, + 629, 631, 190, 190, 634, 190, 635, 190, 190, 1023, + 190, 190, 190, 627, 190, 190, 190, 630, 628, 190, + 636, 633, 190, 637, 190, 632, 190, 629, 631, 190, + 190, 190, 190, 638, 190, 190, 190, 190, 190, 190, + 190, 190, 1023, 190, 630, 640, 190, 636, 633, 190, + 637, 642, 632, 639, 190, 190, 190, 190, 190, 643, + 638, 190, 1023, 190, 190, 1023, 190, 190, 190, 641, + 190, 190, 640, 697, 190, 190, 644, 190, 642, 190, + 639, 190, 190, 190, 190, 645, 643, 190, 190, 190, + 190, 190, 646, 647, 1023, 648, 641, 190, 190, 190, - 1013, 638, 189, 189, 189, 189, 639, 189, 642, 189, - 189, 189, 189, 189, 189, 189, 640, 692, 691, 644, - 189, 1013, 647, 189, 189, 189, 641, 643, 189, 189, - 189, 189, 189, 648, 189, 642, 189, 646, 189, 189, - 189, 645, 189, 189, 692, 1013, 644, 649, 189, 647, - 189, 189, 189, 189, 643, 189, 189, 189, 189, 189, - 648, 650, 189, 653, 646, 652, 189, 189, 645, 189, - 189, 189, 189, 651, 649, 189, 656, 189, 189, 189, - 189, 654, 189, 693, 189, 694, 189, 189, 650, 189, - 653, 189, 652, 189, 189, 1013, 189, 658, 189, 189, + 697, 190, 190, 644, 190, 190, 190, 190, 190, 190, + 190, 190, 645, 1023, 190, 1023, 190, 190, 190, 646, + 647, 650, 648, 649, 190, 190, 190, 190, 190, 190, + 1023, 654, 190, 190, 190, 190, 190, 190, 190, 655, + 651, 653, 652, 698, 1023, 1023, 699, 190, 650, 190, + 649, 190, 190, 190, 190, 190, 190, 656, 654, 190, + 190, 190, 190, 1023, 1023, 1023, 655, 651, 653, 652, + 698, 657, 190, 699, 190, 190, 190, 190, 190, 1023, + 190, 190, 190, 658, 656, 659, 190, 660, 190, 190, + 661, 190, 190, 190, 1023, 190, 662, 190, 657, 190, - 651, 657, 189, 656, 189, 655, 189, 189, 654, 189, - 693, 189, 694, 189, 189, 189, 189, 189, 189, 1013, - 189, 695, 189, 189, 658, 659, 189, 189, 657, 189, - 660, 661, 655, 189, 189, 189, 189, 696, 189, 189, - 189, 189, 189, 189, 189, 189, 662, 189, 695, 189, - 665, 666, 659, 189, 189, 189, 663, 660, 661, 189, - 189, 189, 189, 189, 696, 189, 189, 189, 189, 1013, - 664, 189, 189, 662, 189, 189, 189, 665, 666, 189, - 189, 1013, 189, 663, 670, 667, 189, 189, 189, 668, - 697, 669, 189, 189, 189, 698, 189, 664, 189, 189, + 1023, 663, 190, 1023, 190, 190, 665, 190, 190, 190, + 658, 190, 659, 190, 660, 664, 190, 661, 190, 190, + 190, 190, 190, 662, 190, 190, 190, 190, 663, 190, + 190, 667, 190, 665, 190, 190, 190, 1023, 190, 190, + 190, 700, 664, 190, 1023, 668, 669, 666, 190, 190, + 190, 701, 190, 190, 190, 190, 190, 190, 667, 190, + 190, 190, 190, 190, 190, 673, 190, 1023, 700, 190, + 672, 670, 668, 669, 666, 702, 190, 190, 701, 671, + 190, 190, 190, 1023, 190, 190, 190, 190, 190, 190, + 674, 190, 673, 190, 190, 1023, 190, 672, 670, 675, - 671, 189, 189, 189, 189, 189, 189, 189, 674, 673, - 189, 670, 667, 189, 672, 1013, 668, 697, 669, 1013, - 189, 189, 698, 189, 189, 189, 189, 671, 189, 189, - 189, 189, 189, 699, 189, 674, 673, 189, 1013, 189, - 189, 672, 679, 677, 676, 189, 675, 678, 189, 189, - 700, 189, 189, 701, 189, 189, 189, 189, 680, 189, - 699, 189, 702, 703, 704, 189, 189, 705, 706, 679, - 677, 676, 189, 675, 678, 189, 189, 700, 707, 708, - 701, 189, 709, 710, 711, 680, 189, 712, 713, 702, - 703, 704, 189, 714, 705, 706, 715, 717, 718, 719, + 1023, 703, 702, 676, 678, 677, 671, 190, 190, 190, + 190, 190, 190, 190, 190, 679, 190, 674, 680, 190, + 190, 190, 682, 704, 190, 1023, 675, 190, 703, 190, + 676, 678, 677, 1023, 1023, 190, 190, 190, 1023, 190, + 190, 190, 679, 681, 190, 680, 190, 190, 190, 682, + 704, 190, 190, 683, 190, 190, 190, 190, 705, 1023, + 687, 685, 190, 684, 706, 686, 190, 707, 190, 708, + 681, 190, 190, 190, 190, 190, 709, 190, 710, 190, + 683, 711, 190, 712, 190, 705, 688, 687, 685, 713, + 684, 706, 686, 190, 707, 190, 708, 714, 715, 190, - 720, 721, 722, 723, 724, 707, 708, 716, 725, 709, - 710, 711, 726, 727, 712, 713, 728, 729, 730, 731, - 714, 732, 733, 715, 717, 718, 719, 720, 721, 722, - 723, 724, 734, 735, 716, 725, 736, 737, 738, 726, - 727, 739, 740, 728, 729, 730, 731, 741, 732, 733, - 742, 743, 744, 745, 746, 747, 748, 749, 750, 734, - 735, 751, 752, 736, 737, 738, 1013, 189, 739, 740, - 1013, 189, 825, 189, 741, 758, 1013, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 753, 755, 751, 752, - 189, 756, 189, 189, 189, 189, 189, 759, 189, 825, + 190, 716, 717, 709, 190, 710, 718, 719, 711, 720, + 712, 721, 722, 688, 723, 724, 713, 726, 727, 728, + 190, 729, 730, 731, 714, 715, 725, 732, 716, 717, + 733, 734, 735, 718, 719, 736, 720, 737, 721, 722, + 738, 723, 724, 739, 726, 727, 728, 740, 729, 730, + 731, 741, 742, 725, 732, 743, 744, 733, 734, 735, + 745, 746, 736, 747, 737, 748, 749, 738, 750, 751, + 739, 752, 753, 754, 740, 755, 756, 757, 741, 742, + 758, 759, 743, 744, 760, 761, 190, 745, 746, 190, + 747, 1023, 748, 749, 1023, 750, 751, 190, 752, 753, - 189, 189, 758, 754, 1013, 757, 189, 189, 1013, 1013, - 189, 1013, 189, 753, 755, 826, 189, 189, 756, 189, - 189, 189, 189, 189, 759, 189, 189, 189, 189, 1013, - 754, 189, 757, 189, 189, 189, 189, 189, 761, 189, - 189, 1013, 826, 189, 760, 189, 762, 1013, 189, 763, - 189, 189, 189, 189, 189, 189, 189, 764, 189, 189, - 189, 1013, 189, 189, 767, 761, 1013, 189, 189, 827, - 189, 760, 189, 762, 189, 765, 763, 189, 189, 189, - 189, 1013, 189, 189, 764, 1013, 189, 189, 189, 766, - 768, 767, 189, 189, 189, 189, 827, 189, 189, 1013, + 754, 190, 755, 756, 757, 190, 764, 758, 759, 765, + 762, 760, 761, 190, 763, 767, 190, 190, 766, 190, + 1023, 190, 1023, 768, 190, 190, 1023, 190, 190, 190, + 1023, 190, 190, 764, 1023, 190, 765, 762, 1023, 190, + 190, 763, 767, 1023, 190, 766, 190, 190, 190, 190, + 768, 190, 190, 190, 190, 190, 190, 190, 190, 1023, + 190, 769, 190, 190, 1023, 190, 190, 190, 770, 835, + 773, 190, 771, 190, 190, 190, 190, 190, 190, 772, + 190, 190, 190, 190, 190, 190, 775, 190, 769, 190, + 190, 190, 190, 1023, 190, 770, 835, 773, 190, 771, - 189, 189, 765, 189, 189, 770, 189, 189, 769, 828, - 1013, 829, 189, 189, 189, 189, 766, 768, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 774, - 189, 189, 770, 771, 189, 769, 828, 772, 829, 189, - 189, 189, 189, 775, 773, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 776, 189, 774, 830, 189, 1013, - 771, 189, 189, 189, 772, 1013, 189, 189, 189, 189, - 775, 773, 189, 189, 189, 189, 778, 777, 189, 189, - 189, 776, 189, 189, 830, 189, 189, 1013, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 1013, 831, 189, + 190, 190, 190, 776, 190, 774, 772, 190, 190, 190, + 190, 1023, 190, 775, 190, 777, 190, 190, 190, 190, + 190, 190, 1023, 778, 1023, 786, 836, 190, 190, 837, + 776, 190, 774, 1023, 190, 190, 190, 190, 779, 190, + 190, 190, 777, 1023, 190, 190, 190, 190, 190, 190, + 778, 190, 786, 836, 190, 190, 837, 190, 190, 780, + 781, 190, 190, 1023, 190, 779, 190, 190, 190, 190, + 190, 190, 190, 782, 1023, 190, 190, 190, 190, 784, + 1023, 190, 190, 190, 190, 783, 780, 781, 190, 785, + 190, 190, 1023, 190, 190, 190, 190, 190, 190, 190, - 189, 780, 779, 778, 777, 189, 189, 189, 1013, 189, - 189, 189, 189, 189, 189, 189, 189, 782, 189, 189, - 1013, 832, 189, 189, 781, 831, 189, 189, 780, 779, - 189, 1013, 189, 189, 189, 783, 189, 189, 189, 189, - 1013, 189, 189, 189, 782, 785, 189, 189, 832, 189, - 189, 781, 189, 189, 1013, 784, 189, 189, 189, 189, - 786, 189, 783, 189, 189, 789, 189, 189, 189, 189, - 787, 189, 785, 189, 189, 1013, 189, 189, 189, 189, - 189, 788, 784, 189, 189, 189, 189, 786, 189, 833, - 792, 189, 789, 189, 189, 189, 189, 787, 189, 790, + 782, 788, 838, 190, 190, 190, 784, 190, 190, 787, + 190, 190, 783, 190, 190, 190, 785, 190, 190, 190, + 190, 190, 789, 190, 790, 190, 190, 190, 788, 838, + 190, 190, 190, 791, 190, 190, 787, 190, 190, 792, + 190, 190, 190, 190, 1023, 1023, 190, 190, 190, 789, + 190, 790, 190, 190, 190, 1023, 190, 190, 190, 190, + 791, 793, 190, 1023, 190, 190, 792, 190, 190, 795, + 190, 190, 794, 190, 190, 190, 190, 190, 796, 797, + 190, 190, 190, 190, 190, 190, 190, 190, 793, 799, + 798, 190, 190, 190, 190, 190, 795, 190, 190, 794, - 189, 834, 189, 189, 189, 189, 189, 189, 788, 791, - 189, 189, 189, 189, 1013, 189, 833, 792, 189, 835, - 189, 189, 189, 189, 795, 796, 790, 189, 834, 189, - 189, 189, 189, 189, 793, 794, 791, 189, 798, 189, - 189, 189, 797, 189, 189, 1013, 835, 189, 189, 189, - 189, 795, 796, 189, 836, 1013, 799, 189, 189, 189, - 837, 793, 794, 189, 189, 798, 800, 189, 189, 797, - 189, 189, 189, 189, 189, 1013, 838, 189, 839, 1013, - 189, 836, 801, 799, 802, 189, 840, 837, 189, 1013, - 189, 189, 189, 800, 189, 1013, 189, 189, 803, 189, + 190, 190, 190, 190, 190, 796, 797, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 799, 798, 190, 802, + 190, 1023, 801, 190, 190, 800, 1023, 1023, 190, 190, + 190, 190, 1023, 190, 190, 190, 806, 190, 190, 190, + 190, 190, 190, 190, 805, 190, 802, 803, 804, 801, + 190, 839, 800, 190, 807, 1023, 190, 190, 190, 808, + 190, 190, 190, 806, 190, 190, 190, 190, 190, 190, + 190, 805, 190, 840, 803, 804, 190, 809, 839, 190, + 190, 807, 810, 190, 190, 190, 808, 190, 190, 190, + 190, 190, 190, 811, 190, 812, 190, 813, 814, 190, - 189, 189, 189, 838, 804, 839, 189, 841, 189, 801, - 805, 802, 189, 840, 807, 189, 189, 189, 1013, 189, - 189, 189, 189, 189, 189, 803, 189, 806, 809, 189, - 189, 804, 189, 189, 841, 189, 189, 805, 810, 189, - 189, 807, 189, 189, 189, 808, 811, 189, 812, 189, - 189, 189, 1013, 189, 806, 809, 189, 189, 189, 189, - 189, 813, 189, 189, 189, 810, 1013, 189, 189, 189, - 842, 189, 808, 811, 1013, 812, 189, 189, 189, 815, - 189, 189, 843, 189, 189, 189, 1013, 189, 813, 189, - 814, 189, 821, 189, 189, 189, 189, 842, 189, 844, + 840, 190, 841, 190, 809, 190, 190, 842, 1023, 810, + 190, 190, 190, 843, 190, 190, 190, 190, 190, 190, + 811, 190, 812, 190, 813, 814, 190, 190, 190, 841, + 816, 815, 190, 190, 842, 190, 818, 190, 190, 820, + 843, 817, 190, 190, 1023, 190, 190, 190, 190, 819, + 190, 190, 190, 190, 190, 822, 821, 816, 815, 190, + 190, 190, 190, 818, 190, 190, 820, 190, 817, 844, + 190, 190, 190, 190, 190, 190, 819, 823, 190, 190, + 190, 190, 822, 821, 190, 1023, 190, 190, 190, 190, + 825, 190, 190, 190, 190, 1023, 844, 1023, 190, 190, - 818, 189, 816, 189, 189, 189, 815, 189, 189, 843, - 817, 189, 189, 189, 189, 189, 189, 814, 820, 821, - 189, 189, 1013, 189, 189, 189, 844, 818, 189, 816, - 819, 189, 189, 189, 189, 189, 189, 817, 824, 189, - 189, 189, 189, 189, 189, 820, 189, 822, 189, 823, - 845, 189, 189, 189, 189, 846, 847, 819, 189, 848, - 189, 189, 189, 189, 189, 824, 189, 849, 189, 850, - 851, 189, 852, 189, 822, 189, 823, 845, 853, 854, - 189, 189, 846, 847, 855, 189, 848, 856, 857, 858, - 859, 189, 860, 189, 849, 189, 850, 851, 861, 852, + 190, 190, 190, 824, 823, 845, 190, 846, 190, 190, + 826, 190, 190, 1023, 190, 831, 190, 825, 1023, 190, + 190, 190, 827, 828, 190, 190, 190, 190, 190, 1023, + 824, 1023, 845, 190, 846, 190, 190, 826, 847, 190, + 829, 190, 831, 830, 190, 190, 1023, 190, 190, 827, + 828, 190, 190, 190, 190, 190, 190, 190, 832, 834, + 190, 190, 190, 848, 849, 847, 850, 829, 190, 190, + 830, 190, 190, 833, 190, 190, 190, 190, 851, 190, + 190, 852, 190, 190, 190, 832, 834, 190, 190, 190, + 848, 849, 853, 850, 854, 855, 190, 856, 857, 858, - 862, 863, 864, 865, 866, 853, 854, 867, 868, 869, - 870, 855, 871, 872, 856, 857, 858, 859, 873, 860, - 874, 875, 189, 189, 189, 861, 1013, 862, 863, 864, - 865, 866, 189, 927, 867, 868, 869, 870, 877, 871, - 872, 878, 189, 189, 189, 873, 1013, 874, 875, 189, - 189, 189, 189, 876, 879, 189, 1013, 189, 189, 189, - 927, 189, 1013, 189, 1013, 877, 880, 882, 878, 189, - 189, 189, 189, 881, 1013, 189, 189, 189, 1013, 189, - 876, 879, 189, 189, 189, 189, 883, 189, 189, 885, - 189, 189, 189, 880, 882, 189, 189, 189, 884, 189, + 833, 859, 190, 190, 190, 851, 190, 190, 852, 860, + 861, 862, 863, 864, 865, 866, 190, 867, 868, 853, + 869, 854, 855, 870, 856, 857, 858, 871, 859, 872, + 873, 874, 875, 876, 877, 878, 860, 861, 862, 863, + 864, 865, 866, 879, 867, 868, 880, 869, 881, 882, + 870, 883, 884, 885, 871, 1023, 872, 873, 874, 875, + 876, 877, 878, 190, 190, 190, 937, 190, 887, 888, + 879, 938, 1023, 880, 939, 881, 882, 940, 883, 884, + 885, 889, 190, 190, 190, 190, 886, 190, 190, 190, + 190, 190, 190, 937, 190, 887, 888, 190, 938, 892, - 881, 888, 189, 189, 189, 894, 889, 189, 1013, 189, - 189, 189, 886, 883, 189, 189, 885, 189, 189, 189, - 189, 189, 189, 189, 189, 884, 189, 189, 888, 887, - 189, 189, 894, 889, 189, 189, 189, 1013, 189, 886, - 189, 189, 189, 928, 189, 890, 891, 189, 189, 892, - 189, 189, 1013, 189, 189, 189, 887, 189, 189, 189, - 189, 189, 189, 893, 189, 189, 1013, 189, 189, 929, - 928, 895, 890, 891, 1013, 1013, 892, 189, 189, 189, - 189, 189, 189, 896, 189, 189, 189, 189, 189, 189, - 893, 189, 189, 189, 930, 189, 929, 900, 895, 189, + 190, 939, 190, 1023, 940, 895, 890, 1023, 889, 190, + 190, 190, 190, 886, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 892, 190, 891, 190, + 894, 893, 895, 890, 898, 1023, 190, 1023, 190, 899, + 1023, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 896, 190, 190, 190, 891, 190, 894, 893, 190, + 1023, 898, 897, 190, 190, 190, 899, 190, 190, 190, + 190, 941, 942, 190, 1023, 904, 190, 190, 896, 900, + 190, 190, 901, 190, 190, 190, 190, 190, 190, 897, + 902, 190, 903, 190, 190, 1023, 190, 190, 941, 942, - 931, 189, 897, 189, 1013, 189, 189, 189, 189, 189, - 896, 189, 189, 189, 898, 189, 189, 189, 899, 189, - 189, 930, 189, 189, 900, 189, 189, 931, 189, 897, - 189, 189, 189, 189, 189, 189, 189, 189, 902, 903, - 189, 898, 189, 189, 189, 899, 189, 901, 932, 933, - 189, 189, 189, 189, 189, 189, 1013, 189, 189, 189, - 189, 189, 189, 189, 189, 902, 903, 904, 189, 189, - 189, 189, 905, 189, 901, 932, 933, 189, 189, 1013, - 189, 189, 189, 906, 189, 907, 189, 1013, 189, 189, - 189, 189, 1013, 189, 904, 189, 189, 189, 189, 905, + 190, 190, 904, 190, 190, 190, 900, 943, 190, 901, + 190, 190, 190, 190, 190, 190, 190, 902, 190, 903, + 190, 190, 190, 190, 190, 905, 190, 190, 190, 906, + 190, 908, 190, 1023, 943, 190, 190, 190, 190, 907, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 910, 1023, 905, 190, 190, 1023, 906, 190, 908, 909, + 190, 190, 190, 190, 190, 190, 907, 912, 190, 190, + 190, 190, 190, 190, 190, 190, 911, 910, 190, 1023, + 190, 190, 190, 1023, 913, 1023, 909, 190, 190, 190, + 190, 190, 190, 1023, 912, 190, 914, 190, 190, 190, - 189, 189, 910, 189, 189, 189, 189, 911, 1013, 1013, - 906, 189, 907, 912, 908, 189, 189, 189, 189, 909, - 189, 189, 189, 189, 189, 1013, 189, 189, 189, 910, - 189, 189, 189, 189, 911, 913, 189, 189, 189, 1013, - 912, 908, 914, 1013, 189, 1013, 909, 189, 189, 189, - 189, 915, 189, 189, 189, 189, 189, 916, 189, 1013, - 934, 189, 913, 189, 189, 935, 189, 920, 918, 914, - 189, 189, 189, 1013, 189, 189, 189, 1013, 915, 189, - 917, 189, 189, 189, 916, 919, 189, 934, 189, 921, - 189, 189, 935, 189, 920, 918, 189, 189, 189, 189, + 190, 190, 190, 911, 190, 190, 190, 190, 190, 190, + 190, 913, 190, 1023, 190, 915, 190, 190, 917, 190, + 190, 916, 190, 914, 1023, 190, 190, 190, 190, 944, + 1023, 190, 190, 190, 190, 1023, 190, 190, 190, 190, + 920, 190, 915, 190, 190, 917, 190, 190, 916, 190, + 921, 922, 190, 190, 1023, 190, 944, 918, 1023, 190, + 190, 190, 919, 190, 190, 190, 190, 920, 190, 190, + 945, 190, 190, 190, 1023, 190, 190, 921, 922, 190, + 923, 190, 190, 924, 918, 925, 190, 190, 190, 919, + 926, 190, 946, 190, 190, 190, 190, 945, 1023, 190, - 922, 189, 189, 189, 923, 189, 189, 917, 189, 189, - 925, 926, 919, 189, 189, 189, 921, 189, 189, 189, - 924, 189, 936, 189, 189, 189, 189, 922, 189, 937, - 938, 923, 189, 189, 189, 189, 189, 925, 926, 189, - 939, 189, 189, 940, 941, 942, 189, 924, 189, 936, - 943, 189, 189, 189, 944, 945, 937, 938, 946, 947, - 948, 189, 189, 949, 950, 951, 189, 939, 952, 953, - 940, 941, 942, 954, 189, 1013, 1013, 943, 956, 189, - 981, 944, 945, 189, 189, 946, 947, 948, 955, 1013, - 949, 950, 951, 189, 189, 952, 953, 957, 189, 189, + 947, 190, 190, 190, 190, 190, 190, 923, 190, 190, + 924, 1023, 925, 190, 190, 190, 928, 926, 927, 946, + 929, 190, 930, 190, 190, 190, 190, 947, 190, 190, + 190, 190, 190, 190, 931, 933, 190, 932, 190, 190, + 1023, 190, 1023, 928, 1023, 927, 190, 929, 948, 930, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 1023, 931, 933, 935, 932, 190, 190, 190, 936, 190, + 949, 934, 190, 190, 950, 948, 951, 190, 952, 953, + 954, 190, 190, 955, 190, 190, 190, 190, 956, 190, + 935, 957, 190, 958, 190, 936, 190, 949, 934, 190, - 954, 189, 189, 189, 189, 956, 189, 981, 189, 958, - 189, 189, 959, 189, 189, 955, 961, 189, 189, 1013, - 189, 189, 189, 960, 957, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 958, 189, 189, 959, - 189, 189, 189, 961, 189, 189, 962, 189, 189, 189, - 960, 1013, 189, 1013, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 1013, 189, 189, 189, 963, 189, 189, - 189, 964, 189, 962, 189, 189, 189, 189, 189, 189, - 189, 189, 1013, 189, 189, 189, 967, 1013, 1013, 189, - 189, 189, 965, 189, 963, 189, 189, 189, 964, 189, + 959, 950, 960, 951, 190, 952, 953, 954, 961, 962, + 955, 963, 964, 190, 190, 956, 190, 190, 957, 190, + 958, 966, 190, 190, 1023, 1023, 965, 959, 1023, 960, + 968, 190, 190, 190, 1023, 961, 962, 190, 963, 964, + 190, 190, 190, 190, 190, 967, 190, 1023, 966, 190, + 190, 190, 969, 965, 190, 190, 190, 968, 190, 190, + 190, 970, 991, 971, 190, 190, 190, 190, 190, 190, + 190, 190, 967, 190, 190, 190, 190, 190, 190, 969, + 972, 190, 190, 190, 1023, 190, 190, 190, 970, 991, + 971, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 966, - 189, 189, 971, 967, 189, 189, 189, 189, 189, 965, - 969, 968, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 1013, 189, 189, 189, 972, 966, 189, 189, 971, - 970, 189, 189, 189, 189, 189, 189, 969, 968, 189, - 189, 189, 189, 189, 973, 189, 189, 189, 189, 189, - 189, 189, 972, 1013, 974, 976, 982, 970, 189, 189, - 189, 189, 189, 189, 983, 189, 189, 189, 189, 189, - 189, 973, 189, 189, 984, 189, 975, 189, 189, 189, - 977, 974, 976, 982, 189, 189, 189, 189, 189, 189, + 190, 190, 190, 190, 190, 973, 190, 972, 190, 190, + 974, 190, 190, 190, 190, 190, 190, 1023, 190, 190, + 190, 190, 190, 190, 190, 977, 190, 190, 190, 975, + 190, 190, 973, 190, 976, 190, 190, 974, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 979, + 190, 978, 977, 190, 190, 190, 975, 190, 190, 190, + 992, 976, 1023, 981, 190, 190, 190, 190, 190, 190, + 1023, 190, 190, 190, 190, 190, 979, 190, 978, 993, + 190, 190, 1023, 190, 980, 982, 190, 992, 190, 190, + 981, 190, 190, 190, 190, 190, 190, 983, 190, 190, - 189, 983, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 984, 1013, 975, 189, 189, 189, 977, 189, 978, - 189, 189, 985, 979, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 986, 987, 189, 189, 189, 988, 980, - 989, 189, 189, 189, 189, 189, 978, 189, 189, 985, - 979, 189, 189, 189, 990, 189, 189, 189, 189, 189, - 986, 987, 189, 189, 189, 988, 980, 989, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 1013, 189, 189, - 189, 990, 189, 1013, 189, 189, 189, 189, 999, 189, - 189, 189, 189, 1013, 189, 189, 189, 991, 189, 189, + 190, 190, 190, 1023, 1023, 1023, 993, 984, 190, 190, + 190, 980, 982, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 983, 190, 190, 986, 987, 190, + 985, 190, 190, 190, 984, 190, 190, 190, 1023, 994, + 190, 190, 190, 190, 190, 190, 190, 190, 988, 1023, + 190, 190, 190, 190, 986, 987, 190, 985, 190, 190, + 190, 190, 190, 190, 190, 190, 994, 190, 995, 190, + 190, 996, 990, 997, 190, 988, 989, 998, 190, 190, + 190, 190, 999, 190, 1023, 190, 190, 190, 190, 190, + 190, 190, 190, 1023, 190, 995, 190, 190, 996, 990, - 189, 189, 189, 189, 189, 189, 189, 189, 992, 189, - 189, 189, 1013, 189, 189, 999, 994, 1013, 189, 189, - 189, 189, 189, 189, 991, 189, 189, 1013, 189, 189, - 189, 189, 189, 189, 189, 992, 189, 189, 189, 993, - 189, 189, 189, 994, 998, 189, 189, 189, 189, 189, - 189, 996, 189, 189, 189, 189, 995, 189, 189, 189, - 189, 189, 997, 189, 189, 189, 993, 189, 189, 189, - 189, 998, 1000, 189, 189, 189, 1001, 189, 996, 189, - 189, 189, 1002, 995, 1003, 189, 189, 189, 189, 997, - 189, 189, 189, 1013, 1013, 1009, 189, 189, 189, 1000, + 997, 1000, 190, 989, 998, 190, 190, 190, 190, 999, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 1023, 1009, 1000, 190, + 1001, 190, 190, 190, 190, 190, 190, 1023, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 1004, 190, 190, 1002, 1009, 190, 190, 1001, 190, 190, + 1023, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 1023, 190, 1023, 1003, 190, 1023, 1004, 190, 190, + 1002, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 1010, 1023, 1008, 190, 190, 190, 190, - 189, 189, 1013, 1001, 189, 1004, 189, 189, 189, 1002, - 189, 1003, 189, 189, 1010, 1005, 189, 189, 1007, 189, - 189, 1006, 1009, 189, 189, 189, 1011, 189, 189, 189, - 189, 189, 1004, 189, 189, 189, 1013, 189, 189, 189, - 1008, 1010, 1005, 189, 189, 1007, 189, 189, 1006, 189, - 189, 189, 1012, 1011, 189, 189, 189, 189, 189, 1013, - 189, 189, 189, 1013, 189, 189, 1013, 1008, 1013, 1013, - 1013, 189, 1013, 189, 1013, 1013, 189, 189, 1013, 1012, - 189, 189, 189, 1013, 1013, 189, 1013, 189, 1013, 189, - 1013, 189, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1005, 1003, 190, 1006, 1011, 190, 190, 190, 190, 1012, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 1010, 1007, 1008, 1013, 190, 190, 190, 1005, 1023, 190, + 1006, 1011, 190, 190, 190, 190, 1012, 190, 190, 1014, + 190, 190, 190, 190, 190, 190, 190, 190, 1007, 190, + 1013, 190, 190, 1015, 1016, 190, 190, 1023, 190, 1019, + 190, 190, 190, 190, 190, 190, 1014, 1017, 190, 1020, + 190, 190, 190, 1021, 190, 1018, 190, 190, 190, 190, + 1015, 1016, 190, 190, 190, 190, 1019, 190, 190, 190, + 190, 190, 1022, 190, 1017, 190, 1020, 190, 190, 190, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 189, 1013, 189, - 84, 1013, 1013, 84, 85, 1013, 85, 85, 175, 1013, - 175, 175, 178, 1013, 178, 178, 179, 1013, 179, 179, - 189, 1013, 189, 189, 5, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1021, 1023, 1018, 190, 190, 190, 1023, 190, 1023, 190, + 190, 190, 1023, 1023, 190, 190, 190, 1023, 1023, 1022, + 190, 1023, 190, 1023, 190, 190, 1023, 1023, 1023, 1023, + 190, 1023, 1023, 1023, 190, 1023, 190, 1023, 1023, 1023, + 1023, 1023, 190, 84, 1023, 1023, 84, 85, 1023, 85, + 85, 176, 1023, 176, 176, 179, 1023, 179, 179, 180, + 1023, 180, 180, 190, 1023, 190, 190, 5, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1013, 1013 + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023 } ; -static const flex_int16_t yy_chk[4103] = +static const flex_int16_t yy_chk[4136] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1445,444 +1451,447 @@ static const flex_int16_t yy_chk[4103] = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 7, 7, 8, 8, 13, 1016, - 13, 15, 15, 16, 16, 19, 20, 19, 22, 378, - 21, 28, 22, 19, 270, 19, 22, 21, 29, 19, + 3, 3, 3, 3, 7, 7, 8, 8, 13, 1026, + 13, 15, 15, 16, 16, 19, 20, 19, 22, 381, + 21, 28, 22, 19, 272, 19, 22, 21, 29, 19, 19, 42, 22, 96, 21, 22, 20, 21, 21, 23, - 97, 23, 19, 20, 19, 22, 23, 21, 28, 22, + 185, 23, 19, 20, 19, 22, 23, 21, 28, 22, 19, 23, 19, 22, 21, 29, 19, 19, 42, 22, - 96, 21, 22, 20, 21, 21, 23, 97, 23, 25, + 96, 21, 22, 20, 21, 21, 23, 26, 23, 184, - 51, 24, 51, 23, 24, 25, 26, 24, 23, 27, - 24, 45, 45, 24, 26, 27, 27, 27, 184, 30, - 26, 100, 27, 30, 46, 46, 25, 183, 24, 30, - 179, 24, 25, 26, 24, 31, 27, 24, 32, 31, - 24, 26, 27, 27, 27, 31, 30, 26, 100, 27, - 30, 178, 32, 53, 53, 33, 30, 34, 32, 32, - 36, 90, 31, 33, 36, 32, 31, 33, 34, 101, - 33, 89, 31, 85, 34, 39, 37, 39, 37, 32, - 39, 37, 33, 84, 34, 32, 32, 36, 37, 37, - 33, 36, 40, 81, 33, 34, 101, 33, 54, 54, + 25, 45, 45, 23, 40, 26, 25, 180, 23, 24, + 97, 26, 40, 46, 46, 53, 53, 24, 30, 51, + 24, 51, 30, 24, 26, 100, 24, 25, 30, 24, + 31, 40, 26, 25, 31, 27, 24, 97, 26, 40, + 31, 27, 27, 27, 24, 30, 179, 24, 27, 30, + 24, 32, 100, 24, 90, 30, 24, 31, 54, 54, + 36, 31, 27, 34, 36, 32, 89, 31, 27, 27, + 27, 32, 32, 33, 34, 27, 85, 39, 32, 39, + 34, 33, 39, 67, 37, 33, 37, 36, 33, 37, + 34, 36, 32, 41, 41, 84, 37, 37, 32, 32, - 40, 34, 39, 37, 39, 37, 56, 39, 37, 41, - 41, 105, 66, 63, 55, 37, 37, 38, 38, 40, - 63, 38, 66, 52, 38, 38, 63, 40, 82, 82, - 67, 38, 66, 63, 38, 50, 41, 41, 105, 66, - 63, 88, 88, 48, 38, 38, 47, 63, 38, 66, - 67, 38, 38, 63, 176, 176, 73, 67, 38, 66, - 63, 38, 57, 57, 80, 57, 57, 57, 57, 57, - 57, 64, 57, 57, 57, 64, 73, 67, 57, 64, - 57, 98, 102, 73, 80, 64, 57, 99, 57, 98, - 99, 80, 57, 57, 108, 64, 102, 104, 64, 111, + 33, 34, 81, 67, 39, 56, 39, 34, 33, 39, + 67, 37, 33, 37, 64, 33, 37, 66, 64, 55, + 41, 41, 64, 37, 37, 38, 38, 66, 64, 38, + 67, 101, 38, 38, 82, 82, 105, 66, 64, 38, + 108, 64, 38, 52, 66, 64, 88, 88, 50, 64, + 177, 177, 38, 38, 66, 64, 38, 48, 101, 38, + 38, 183, 183, 105, 66, 64, 38, 108, 47, 38, + 57, 57, 63, 57, 57, 57, 57, 57, 57, 63, + 57, 57, 57, 68, 73, 63, 57, 68, 57, 98, + 111, 111, 63, 68, 57, 104, 57, 98, 43, 63, - 111, 43, 64, 73, 104, 57, 64, 57, 98, 102, - 18, 80, 64, 57, 99, 57, 98, 99, 112, 57, - 57, 108, 64, 102, 104, 17, 111, 111, 57, 58, - 58, 104, 58, 58, 58, 58, 58, 58, 68, 58, - 58, 58, 68, 69, 14, 112, 58, 69, 68, 106, - 12, 106, 74, 69, 109, 113, 74, 9, 68, 109, - 72, 114, 115, 69, 72, 68, 58, 116, 5, 68, - 69, 72, 74, 58, 69, 68, 106, 72, 106, 74, - 69, 109, 113, 74, 72, 68, 109, 72, 114, 115, - 69, 72, 0, 58, 116, 58, 59, 107, 72, 74, + 57, 57, 104, 68, 73, 80, 63, 112, 113, 18, + 68, 73, 63, 57, 68, 57, 98, 111, 111, 63, + 68, 57, 104, 57, 98, 80, 114, 57, 57, 104, + 68, 73, 80, 115, 112, 113, 57, 58, 58, 17, + 58, 58, 58, 58, 58, 58, 69, 58, 58, 58, + 69, 72, 80, 114, 58, 72, 69, 116, 99, 74, + 115, 99, 72, 74, 118, 119, 69, 79, 72, 14, + 79, 79, 12, 69, 58, 72, 9, 69, 72, 74, + 5, 58, 72, 69, 116, 99, 74, 79, 99, 72, + 74, 118, 119, 69, 79, 72, 77, 79, 79, 102, - 59, 0, 118, 59, 72, 0, 119, 107, 77, 120, - 59, 72, 79, 59, 59, 79, 79, 77, 121, 77, - 59, 0, 77, 59, 107, 0, 122, 59, 77, 118, - 59, 0, 79, 119, 107, 77, 120, 59, 0, 79, - 59, 59, 79, 79, 77, 121, 77, 59, 60, 77, - 78, 123, 60, 122, 78, 77, 60, 124, 78, 79, - 125, 126, 60, 125, 0, 60, 126, 127, 129, 130, - 0, 132, 60, 0, 78, 60, 133, 78, 123, 60, - 0, 78, 0, 60, 124, 78, 110, 125, 126, 60, - 125, 110, 60, 126, 127, 129, 130, 110, 132, 60, + 120, 58, 72, 58, 59, 77, 74, 77, 59, 107, + 77, 59, 121, 102, 79, 106, 77, 106, 59, 107, + 109, 59, 59, 77, 122, 109, 102, 120, 59, 0, + 0, 59, 77, 0, 77, 59, 107, 77, 59, 121, + 102, 0, 106, 77, 106, 59, 107, 109, 59, 59, + 78, 122, 109, 0, 78, 59, 60, 110, 78, 117, + 60, 117, 110, 123, 60, 117, 124, 125, 110, 128, + 60, 130, 117, 60, 78, 110, 117, 78, 0, 126, + 60, 78, 126, 60, 110, 78, 117, 60, 117, 110, + 123, 60, 117, 124, 125, 110, 128, 60, 130, 117, - 61, 78, 134, 133, 110, 135, 136, 61, 136, 61, - 137, 138, 137, 110, 61, 139, 0, 140, 110, 61, - 61, 182, 182, 137, 110, 0, 141, 61, 0, 134, - 142, 110, 135, 136, 61, 136, 61, 137, 138, 137, - 143, 61, 139, 117, 140, 117, 61, 61, 62, 117, - 137, 144, 62, 141, 145, 62, 117, 142, 62, 147, - 117, 62, 148, 149, 62, 150, 153, 143, 62, 0, - 117, 0, 117, 0, 0, 62, 117, 0, 144, 62, - 154, 145, 62, 117, 131, 62, 147, 117, 62, 148, - 149, 62, 150, 153, 131, 62, 65, 65, 151, 131, + 60, 78, 110, 117, 131, 127, 126, 60, 61, 126, + 127, 133, 134, 135, 136, 61, 137, 61, 137, 139, + 0, 138, 61, 138, 140, 141, 142, 61, 61, 0, + 0, 131, 127, 0, 138, 61, 0, 127, 133, 134, + 135, 136, 61, 137, 61, 137, 139, 132, 138, 61, + 138, 140, 141, 142, 61, 61, 62, 132, 143, 144, + 62, 138, 132, 132, 62, 145, 146, 62, 148, 149, + 62, 150, 151, 62, 132, 152, 62, 154, 0, 152, + 62, 0, 0, 62, 132, 143, 144, 62, 0, 132, + 132, 62, 145, 146, 62, 148, 149, 62, 150, 151, - 131, 152, 151, 65, 65, 65, 152, 154, 156, 0, - 65, 131, 157, 158, 159, 160, 65, 0, 0, 0, - 162, 131, 163, 65, 65, 151, 131, 131, 152, 151, - 65, 65, 65, 152, 164, 156, 155, 65, 0, 157, - 158, 159, 160, 65, 70, 155, 161, 162, 70, 163, - 165, 166, 167, 155, 166, 168, 169, 161, 70, 171, - 0, 164, 169, 155, 70, 70, 172, 173, 70, 0, - 0, 70, 155, 161, 170, 70, 272, 165, 166, 167, - 155, 166, 168, 169, 161, 70, 171, 170, 189, 169, - 274, 70, 70, 172, 173, 70, 71, 71, 191, 190, + 62, 0, 152, 62, 154, 153, 152, 62, 65, 65, + 153, 155, 157, 158, 156, 65, 65, 65, 159, 160, + 161, 0, 65, 156, 163, 164, 165, 166, 65, 0, + 168, 156, 153, 0, 0, 65, 65, 153, 155, 157, + 158, 156, 65, 65, 65, 159, 160, 161, 162, 65, + 156, 163, 164, 165, 166, 65, 70, 168, 156, 162, + 70, 167, 169, 170, 167, 171, 172, 173, 174, 170, + 70, 0, 0, 274, 276, 162, 70, 70, 171, 190, + 70, 0, 0, 70, 0, 0, 162, 70, 167, 169, + 170, 167, 171, 172, 173, 174, 170, 70, 192, 190, - 190, 170, 275, 272, 0, 71, 0, 193, 189, 71, - 193, 193, 71, 191, 170, 189, 71, 274, 191, 0, - 190, 0, 0, 71, 71, 191, 190, 190, 194, 275, - 0, 193, 71, 197, 193, 189, 71, 193, 193, 71, - 191, 194, 0, 71, 75, 191, 75, 190, 194, 75, - 0, 277, 0, 197, 279, 194, 75, 75, 193, 222, - 197, 280, 192, 195, 281, 195, 75, 0, 194, 192, - 283, 75, 0, 75, 0, 194, 75, 192, 277, 222, - 197, 279, 192, 75, 75, 195, 222, 0, 280, 192, - 195, 281, 195, 75, 76, 76, 192, 283, 76, 196, + 274, 276, 277, 70, 70, 171, 190, 70, 71, 71, + 198, 191, 191, 192, 279, 281, 0, 71, 192, 194, + 0, 71, 194, 194, 71, 192, 190, 0, 71, 277, + 198, 0, 191, 282, 0, 71, 71, 198, 191, 191, + 192, 279, 281, 194, 71, 192, 194, 193, 71, 194, + 194, 71, 195, 202, 193, 71, 75, 198, 75, 191, + 282, 75, 193, 202, 0, 195, 283, 193, 75, 75, + 194, 224, 195, 202, 193, 196, 285, 196, 75, 195, + 202, 193, 286, 75, 0, 75, 0, 0, 75, 193, + 202, 224, 195, 283, 193, 75, 75, 196, 224, 195, - 196, 76, 76, 198, 192, 282, 222, 282, 76, 192, - 198, 76, 195, 0, 196, 0, 199, 198, 76, 196, - 199, 76, 76, 198, 0, 76, 196, 196, 76, 76, - 198, 0, 282, 284, 282, 76, 202, 198, 76, 203, - 199, 196, 200, 199, 198, 76, 196, 199, 201, 200, - 198, 200, 285, 202, 203, 286, 202, 205, 201, 203, - 284, 0, 200, 202, 0, 0, 203, 199, 201, 200, - 205, 205, 206, 0, 0, 201, 200, 205, 200, 285, - 202, 203, 286, 202, 205, 201, 203, 0, 206, 200, - 0, 208, 206, 0, 287, 201, 204, 205, 205, 206, + 202, 199, 196, 285, 196, 75, 76, 76, 199, 286, + 76, 197, 197, 76, 76, 199, 287, 0, 224, 0, + 76, 199, 0, 76, 196, 200, 197, 0, 199, 200, + 76, 197, 0, 76, 76, 199, 0, 76, 197, 197, + 76, 76, 199, 287, 204, 203, 209, 76, 199, 200, + 76, 0, 200, 197, 201, 288, 200, 76, 197, 204, + 209, 201, 203, 201, 204, 203, 209, 0, 289, 0, + 0, 204, 203, 209, 201, 0, 200, 291, 207, 0, + 0, 201, 288, 206, 0, 0, 204, 209, 201, 203, + 201, 204, 203, 209, 207, 289, 206, 206, 207, 0, - 204, 204, 207, 0, 205, 208, 0, 204, 0, 209, - 209, 208, 207, 223, 204, 206, 0, 223, 208, 206, - 204, 287, 207, 204, 210, 0, 210, 204, 204, 207, - 209, 0, 208, 223, 204, 212, 209, 209, 208, 207, - 223, 204, 212, 214, 223, 216, 210, 204, 213, 207, - 289, 210, 216, 210, 0, 212, 214, 209, 213, 0, - 223, 215, 212, 214, 0, 216, 228, 0, 213, 212, - 214, 215, 216, 210, 211, 213, 211, 289, 0, 216, - 211, 215, 212, 214, 217, 213, 228, 211, 215, 218, - 214, 211, 216, 228, 217, 213, 211, 0, 215, 218, + 293, 201, 205, 206, 291, 207, 205, 205, 208, 0, + 206, 210, 210, 205, 211, 0, 211, 284, 208, 284, + 205, 207, 0, 206, 206, 207, 205, 293, 208, 205, + 206, 0, 210, 205, 205, 208, 211, 0, 210, 210, + 205, 211, 213, 211, 284, 208, 284, 205, 216, 213, + 0, 214, 294, 205, 0, 208, 0, 0, 214, 210, + 0, 216, 213, 211, 212, 0, 212, 0, 216, 213, + 212, 214, 215, 0, 217, 216, 213, 212, 214, 294, + 218, 212, 215, 230, 217, 214, 212, 218, 216, 213, + 0, 212, 215, 212, 217, 216, 219, 212, 214, 215, - 0, 211, 0, 211, 217, 219, 0, 211, 215, 218, - 0, 217, 0, 228, 211, 220, 218, 221, 211, 219, - 0, 217, 219, 211, 220, 219, 218, 224, 291, 220, - 226, 217, 219, 221, 0, 220, 218, 221, 224, 226, - 292, 227, 220, 294, 221, 227, 219, 224, 0, 219, - 226, 220, 219, 0, 224, 291, 220, 226, 0, 295, - 221, 227, 220, 0, 221, 224, 226, 292, 227, 0, - 294, 0, 227, 296, 224, 225, 225, 226, 229, 229, - 231, 230, 231, 0, 231, 225, 295, 230, 227, 230, - 225, 225, 0, 231, 0, 297, 225, 0, 229, 0, + 218, 217, 220, 230, 212, 0, 219, 218, 212, 215, + 230, 217, 220, 212, 218, 296, 219, 221, 0, 215, + 0, 217, 220, 219, 0, 223, 222, 218, 225, 220, + 230, 221, 225, 219, 221, 222, 226, 221, 0, 220, + 222, 223, 296, 219, 221, 223, 222, 226, 225, 220, + 229, 228, 223, 222, 229, 225, 226, 0, 221, 225, + 228, 221, 222, 226, 221, 295, 234, 222, 223, 0, + 229, 228, 223, 222, 226, 225, 237, 229, 228, 234, + 295, 229, 297, 226, 227, 227, 234, 228, 231, 231, + 298, 237, 295, 234, 227, 0, 237, 229, 228, 227, - 296, 230, 225, 225, 231, 229, 229, 231, 230, 231, - 233, 231, 225, 232, 230, 234, 230, 225, 225, 233, - 231, 235, 297, 225, 234, 229, 232, 237, 230, 236, - 233, 231, 0, 232, 237, 234, 235, 233, 239, 239, - 232, 235, 234, 0, 236, 0, 233, 237, 235, 236, - 240, 234, 0, 232, 237, 238, 236, 233, 239, 238, - 232, 237, 234, 235, 298, 239, 239, 243, 235, 242, - 240, 236, 241, 241, 237, 0, 236, 240, 0, 238, - 243, 246, 238, 299, 242, 239, 238, 243, 244, 242, - 246, 298, 244, 241, 243, 246, 242, 240, 245, 241, + 227, 299, 0, 237, 0, 227, 234, 295, 231, 297, + 235, 227, 227, 234, 232, 231, 231, 298, 237, 235, + 232, 227, 232, 237, 242, 238, 227, 227, 299, 233, + 235, 233, 227, 233, 232, 231, 0, 235, 300, 236, + 238, 232, 233, 239, 242, 238, 235, 232, 236, 232, + 239, 242, 238, 233, 241, 241, 233, 235, 233, 236, + 233, 232, 0, 239, 240, 300, 236, 238, 240, 233, + 239, 242, 238, 0, 241, 236, 0, 239, 243, 243, + 233, 241, 241, 244, 245, 246, 236, 0, 240, 246, + 239, 240, 301, 0, 0, 240, 0, 245, 244, 243, - 241, 246, 245, 247, 301, 247, 238, 243, 246, 0, - 299, 242, 244, 0, 243, 244, 242, 246, 245, 244, - 241, 248, 246, 247, 248, 245, 250, 251, 246, 245, - 247, 301, 247, 302, 252, 249, 250, 249, 252, 244, - 251, 248, 0, 0, 249, 245, 250, 251, 248, 303, - 247, 248, 249, 250, 251, 256, 0, 249, 252, 0, - 302, 252, 249, 250, 249, 252, 253, 251, 248, 253, - 254, 249, 255, 250, 251, 256, 303, 254, 257, 249, - 255, 0, 256, 258, 249, 252, 257, 0, 0, 253, - 254, 255, 255, 253, 258, 259, 253, 254, 257, 255, + 249, 241, 249, 244, 245, 243, 243, 0, 303, 246, + 244, 245, 246, 247, 248, 240, 246, 247, 250, 301, + 249, 250, 304, 248, 245, 244, 243, 249, 248, 249, + 244, 245, 0, 247, 248, 303, 246, 251, 250, 251, + 247, 248, 252, 253, 247, 250, 251, 249, 250, 304, + 248, 0, 252, 254, 251, 248, 253, 254, 258, 251, + 247, 248, 252, 253, 251, 250, 251, 256, 255, 252, + 253, 255, 305, 251, 256, 0, 306, 254, 258, 252, + 254, 251, 260, 253, 254, 258, 251, 256, 257, 252, + 253, 255, 259, 260, 256, 255, 257, 261, 255, 305, - 0, 0, 256, 258, 254, 257, 0, 255, 261, 261, - 258, 259, 0, 257, 265, 259, 253, 254, 255, 255, - 260, 258, 259, 0, 260, 257, 263, 260, 262, 261, - 258, 0, 262, 263, 265, 261, 261, 264, 259, 263, - 260, 265, 259, 266, 304, 267, 263, 260, 262, 267, - 264, 260, 305, 263, 260, 262, 261, 264, 266, 262, - 263, 265, 306, 266, 264, 293, 263, 260, 307, 267, - 266, 304, 267, 263, 308, 262, 267, 264, 310, 305, - 293, 311, 312, 313, 264, 266, 314, 315, 316, 306, - 266, 317, 293, 318, 319, 307, 267, 320, 321, 322, + 259, 256, 260, 306, 254, 258, 307, 257, 257, 260, + 263, 263, 259, 261, 256, 257, 0, 261, 255, 259, + 260, 262, 264, 257, 261, 262, 264, 259, 262, 260, + 0, 263, 0, 307, 257, 257, 0, 263, 263, 259, + 261, 262, 264, 265, 261, 267, 266, 268, 262, 264, + 265, 308, 262, 264, 0, 262, 265, 269, 263, 266, + 309, 269, 268, 265, 310, 267, 266, 268, 262, 264, + 265, 311, 267, 266, 268, 313, 314, 265, 308, 315, + 316, 269, 317, 265, 269, 318, 266, 309, 269, 268, + 265, 310, 267, 266, 268, 319, 320, 321, 311, 322, - 323, 308, 324, 325, 326, 310, 328, 293, 311, 312, - 313, 329, 324, 314, 315, 316, 330, 331, 317, 332, - 318, 319, 333, 334, 320, 321, 322, 323, 335, 324, - 325, 326, 336, 328, 337, 339, 340, 341, 329, 324, - 342, 343, 344, 330, 331, 345, 332, 346, 347, 333, - 334, 348, 349, 350, 351, 335, 352, 353, 355, 336, - 356, 337, 339, 340, 341, 357, 358, 342, 343, 344, - 360, 361, 345, 362, 346, 347, 363, 365, 348, 349, - 350, 351, 367, 352, 353, 355, 366, 356, 366, 368, - 369, 370, 357, 358, 371, 372, 373, 360, 361, 375, + 323, 324, 313, 314, 325, 326, 315, 316, 269, 317, + 327, 328, 318, 329, 331, 332, 333, 334, 335, 336, + 327, 337, 319, 320, 321, 338, 322, 323, 324, 339, + 340, 325, 326, 342, 343, 344, 345, 327, 328, 346, + 329, 331, 332, 333, 334, 335, 336, 327, 337, 347, + 348, 349, 338, 350, 351, 352, 339, 340, 353, 354, + 342, 343, 344, 345, 355, 356, 346, 358, 359, 360, + 361, 363, 364, 365, 366, 368, 347, 348, 349, 370, + 350, 351, 352, 371, 368, 353, 354, 369, 372, 369, + 373, 355, 356, 374, 358, 359, 360, 361, 363, 364, - 362, 374, 376, 363, 365, 374, 0, 379, 0, 367, - 380, 381, 0, 366, 0, 366, 368, 369, 370, 382, - 485, 371, 372, 373, 384, 486, 375, 379, 374, 376, - 380, 381, 374, 383, 379, 386, 0, 380, 381, 382, - 383, 385, 0, 388, 384, 385, 382, 485, 0, 387, - 0, 384, 486, 383, 379, 386, 0, 380, 381, 387, - 383, 388, 386, 388, 391, 385, 382, 383, 385, 387, - 388, 384, 385, 390, 389, 390, 387, 391, 393, 487, - 383, 389, 386, 392, 391, 394, 387, 396, 388, 394, - 388, 391, 385, 393, 389, 390, 387, 397, 393, 392, + 365, 366, 368, 375, 376, 377, 370, 378, 379, 377, + 371, 368, 0, 382, 369, 372, 369, 373, 383, 384, + 374, 385, 386, 387, 0, 0, 489, 490, 0, 386, + 375, 376, 377, 382, 378, 379, 377, 389, 383, 384, + 382, 385, 386, 387, 0, 383, 384, 388, 385, 386, + 387, 388, 390, 489, 490, 391, 386, 389, 491, 393, + 382, 393, 390, 492, 389, 383, 384, 394, 385, 386, + 387, 388, 390, 391, 388, 391, 392, 395, 388, 390, + 394, 393, 391, 392, 389, 491, 393, 394, 393, 390, + 492, 396, 399, 395, 394, 398, 392, 395, 388, 390, - 390, 389, 390, 392, 391, 393, 487, 396, 389, 394, - 392, 391, 394, 395, 396, 398, 394, 397, 488, 400, - 393, 389, 390, 400, 397, 393, 392, 395, 403, 489, - 392, 399, 401, 395, 396, 398, 394, 0, 399, 402, - 395, 402, 398, 400, 397, 488, 400, 401, 403, 404, - 400, 399, 401, 0, 395, 403, 489, 490, 399, 401, - 395, 402, 398, 492, 404, 399, 402, 407, 402, 404, - 400, 0, 406, 0, 401, 403, 404, 405, 399, 401, - 405, 408, 409, 406, 490, 410, 409, 407, 402, 0, - 492, 404, 406, 411, 407, 411, 404, 412, 415, 406, + 391, 397, 391, 392, 395, 397, 396, 394, 393, 398, + 392, 396, 399, 0, 394, 398, 0, 400, 396, 399, + 395, 401, 398, 392, 395, 397, 403, 402, 397, 406, + 403, 404, 397, 396, 402, 493, 398, 400, 396, 399, + 407, 401, 398, 405, 400, 405, 404, 402, 401, 406, + 403, 404, 397, 403, 402, 407, 406, 403, 404, 0, + 407, 402, 493, 408, 400, 405, 408, 407, 401, 409, + 405, 410, 405, 404, 402, 411, 406, 403, 404, 412, + 409, 413, 407, 412, 419, 0, 408, 407, 0, 409, + 408, 410, 405, 408, 494, 411, 409, 414, 410, 414, - 405, 408, 0, 495, 405, 410, 409, 405, 408, 409, - 406, 412, 410, 409, 407, 411, 413, 412, 415, 406, - 411, 414, 411, 413, 412, 415, 417, 405, 408, 418, - 495, 416, 410, 409, 414, 416, 413, 418, 412, 0, - 419, 414, 411, 413, 412, 415, 417, 419, 414, 418, - 413, 424, 0, 417, 420, 416, 418, 420, 416, 421, - 419, 414, 416, 413, 418, 0, 424, 419, 414, 422, - 425, 424, 422, 417, 419, 421, 418, 420, 424, 421, - 0, 420, 416, 496, 420, 425, 421, 419, 423, 422, - 425, 428, 423, 424, 426, 497, 422, 425, 424, 422, + 415, 413, 411, 412, 419, 416, 412, 409, 413, 0, + 412, 419, 416, 408, 415, 418, 409, 496, 410, 414, + 415, 494, 411, 417, 414, 416, 414, 415, 413, 418, + 412, 419, 416, 420, 421, 418, 417, 420, 0, 416, + 0, 415, 418, 417, 496, 422, 414, 415, 423, 499, + 417, 425, 416, 422, 421, 423, 418, 420, 0, 0, + 420, 421, 418, 417, 420, 422, 424, 425, 423, 424, + 417, 425, 422, 0, 0, 423, 499, 433, 425, 434, + 422, 421, 423, 426, 420, 428, 426, 427, 430, 424, + 0, 427, 422, 424, 425, 423, 424, 433, 425, 434, - 429, 428, 421, 427, 420, 430, 421, 426, 423, 427, - 496, 428, 425, 431, 426, 423, 422, 425, 428, 423, - 429, 426, 497, 427, 435, 430, 433, 429, 428, 432, - 427, 0, 430, 431, 426, 423, 427, 437, 428, 432, - 431, 426, 433, 436, 435, 434, 433, 429, 0, 432, - 427, 435, 430, 433, 434, 438, 432, 437, 436, 438, - 431, 0, 0, 436, 437, 434, 432, 439, 439, 433, - 436, 435, 434, 433, 440, 438, 432, 441, 440, 441, - 0, 434, 438, 443, 437, 436, 438, 442, 439, 442, - 436, 498, 434, 444, 439, 439, 0, 441, 440, 443, + 428, 430, 429, 426, 433, 428, 434, 427, 430, 0, + 426, 432, 428, 426, 427, 430, 424, 429, 427, 431, + 435, 432, 429, 436, 433, 431, 434, 428, 430, 429, + 426, 432, 428, 436, 427, 430, 438, 437, 432, 431, + 435, 439, 0, 436, 429, 438, 431, 435, 432, 429, + 436, 441, 431, 437, 440, 442, 438, 437, 432, 442, + 436, 439, 0, 438, 437, 0, 431, 435, 439, 440, + 436, 441, 438, 500, 440, 442, 443, 443, 441, 447, + 437, 440, 442, 438, 437, 444, 442, 450, 439, 444, + 445, 446, 445, 446, 0, 447, 440, 443, 441, 447, - 0, 440, 438, 443, 441, 440, 441, 442, 444, 446, - 443, 445, 447, 444, 442, 439, 442, 500, 498, 447, - 444, 0, 450, 449, 441, 440, 443, 445, 448, 446, - 443, 445, 447, 451, 442, 444, 446, 449, 445, 447, - 444, 448, 450, 449, 500, 0, 447, 452, 448, 450, - 449, 452, 453, 451, 445, 448, 446, 455, 445, 447, - 451, 453, 454, 456, 449, 455, 457, 456, 448, 450, - 449, 452, 453, 454, 452, 448, 459, 455, 452, 453, - 451, 457, 454, 501, 455, 502, 457, 456, 453, 454, - 456, 460, 455, 457, 456, 0, 459, 461, 452, 453, + 500, 440, 442, 443, 443, 449, 447, 450, 448, 444, + 445, 446, 444, 0, 450, 0, 444, 445, 446, 445, + 446, 449, 447, 448, 443, 449, 447, 453, 448, 452, + 0, 454, 449, 451, 450, 448, 444, 445, 446, 455, + 451, 453, 452, 501, 0, 0, 502, 453, 449, 452, + 448, 454, 449, 451, 453, 448, 452, 456, 454, 455, + 451, 456, 457, 0, 0, 0, 455, 451, 453, 452, + 501, 457, 458, 502, 453, 461, 452, 459, 454, 0, + 451, 456, 457, 458, 456, 459, 455, 460, 456, 457, + 461, 460, 458, 462, 0, 461, 462, 459, 457, 458, - 454, 460, 458, 459, 455, 458, 462, 463, 457, 454, - 501, 460, 502, 457, 456, 464, 465, 461, 460, 0, - 467, 503, 458, 459, 461, 463, 462, 463, 460, 458, - 464, 465, 458, 462, 463, 464, 465, 505, 460, 466, - 467, 470, 464, 465, 461, 468, 466, 467, 503, 458, - 470, 471, 463, 462, 463, 469, 468, 464, 465, 466, - 472, 470, 464, 465, 505, 468, 466, 467, 470, 0, - 469, 471, 468, 466, 475, 469, 473, 470, 471, 474, - 472, 0, 469, 468, 475, 473, 466, 472, 470, 474, - 506, 474, 468, 478, 475, 507, 473, 469, 471, 474, + 0, 463, 461, 0, 459, 464, 465, 466, 456, 457, + 458, 460, 459, 462, 460, 464, 468, 461, 460, 458, + 462, 463, 461, 462, 459, 464, 465, 466, 463, 467, + 469, 468, 464, 465, 466, 471, 468, 0, 460, 470, + 462, 504, 464, 468, 0, 469, 470, 467, 463, 467, + 469, 505, 464, 465, 466, 471, 467, 469, 468, 470, + 472, 474, 471, 468, 473, 475, 470, 0, 504, 476, + 474, 472, 469, 470, 467, 506, 467, 469, 505, 473, + 472, 474, 471, 0, 473, 475, 470, 472, 474, 476, + 477, 473, 475, 478, 479, 0, 476, 474, 472, 477, - 476, 475, 469, 473, 476, 477, 474, 472, 479, 478, - 479, 475, 473, 478, 477, 0, 474, 506, 474, 0, - 478, 475, 507, 473, 476, 477, 474, 476, 480, 481, - 479, 476, 477, 510, 482, 479, 478, 479, 0, 483, - 478, 477, 483, 482, 481, 484, 480, 482, 480, 481, - 511, 476, 477, 512, 482, 480, 481, 479, 484, 483, - 510, 482, 513, 514, 515, 484, 483, 517, 520, 483, - 482, 481, 484, 480, 482, 480, 481, 511, 521, 523, - 512, 482, 525, 527, 528, 484, 483, 529, 530, 513, - 514, 515, 484, 531, 517, 520, 532, 534, 538, 540, + 0, 507, 506, 478, 479, 478, 473, 472, 474, 481, + 477, 473, 475, 478, 479, 480, 476, 477, 481, 480, + 478, 479, 483, 509, 483, 0, 477, 482, 507, 481, + 478, 479, 478, 0, 0, 484, 481, 477, 0, 480, + 478, 479, 480, 482, 483, 481, 480, 482, 485, 483, + 509, 483, 486, 484, 482, 484, 481, 487, 510, 0, + 487, 486, 484, 485, 511, 486, 480, 514, 485, 515, + 482, 483, 486, 488, 482, 485, 516, 487, 517, 486, + 484, 518, 484, 519, 487, 510, 488, 487, 486, 520, + 485, 511, 486, 488, 514, 485, 515, 522, 525, 486, - 542, 543, 543, 544, 545, 521, 523, 532, 547, 525, - 527, 528, 548, 549, 529, 530, 550, 551, 553, 554, - 531, 555, 556, 532, 534, 538, 540, 542, 543, 543, - 544, 545, 557, 558, 532, 547, 559, 560, 562, 548, - 549, 563, 564, 550, 551, 553, 554, 565, 555, 556, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 557, - 558, 578, 580, 559, 560, 562, 0, 585, 563, 564, - 0, 586, 683, 583, 565, 588, 0, 568, 569, 570, - 571, 572, 573, 574, 575, 576, 583, 585, 578, 580, - 584, 586, 587, 583, 585, 588, 589, 590, 586, 683, + 488, 526, 528, 516, 487, 517, 530, 532, 518, 533, + 519, 534, 535, 488, 536, 537, 520, 539, 543, 545, + 488, 547, 548, 548, 522, 525, 537, 549, 526, 528, + 550, 552, 553, 530, 532, 554, 533, 555, 534, 535, + 556, 536, 537, 558, 539, 543, 545, 559, 547, 548, + 548, 560, 561, 537, 549, 562, 563, 550, 552, 553, + 564, 565, 554, 567, 555, 568, 569, 556, 570, 573, + 558, 575, 576, 577, 559, 578, 579, 580, 560, 561, + 581, 582, 562, 563, 584, 586, 591, 564, 565, 592, + 567, 0, 568, 569, 0, 570, 573, 589, 575, 576, - 583, 590, 588, 584, 0, 587, 591, 592, 0, 0, - 584, 0, 587, 583, 585, 685, 589, 584, 586, 587, - 583, 590, 588, 589, 590, 594, 591, 592, 590, 0, - 584, 595, 587, 591, 592, 596, 593, 584, 594, 587, - 597, 0, 685, 589, 593, 594, 595, 0, 590, 596, - 598, 595, 594, 591, 592, 596, 593, 598, 595, 599, - 597, 0, 596, 593, 601, 594, 0, 597, 601, 686, - 598, 593, 594, 595, 600, 599, 596, 598, 595, 599, - 602, 0, 596, 593, 598, 0, 599, 597, 601, 600, - 603, 601, 603, 606, 600, 601, 686, 598, 605, 0, + 577, 590, 578, 579, 580, 593, 591, 581, 582, 592, + 589, 584, 586, 591, 590, 594, 592, 589, 593, 595, + 0, 590, 0, 596, 589, 593, 0, 596, 590, 597, + 0, 598, 593, 591, 0, 594, 592, 589, 0, 595, + 603, 590, 594, 0, 589, 593, 595, 596, 590, 597, + 596, 598, 593, 599, 596, 600, 597, 601, 598, 0, + 603, 599, 594, 604, 0, 602, 595, 603, 600, 691, + 604, 606, 601, 599, 596, 600, 597, 601, 598, 602, + 599, 608, 600, 604, 601, 602, 606, 603, 599, 605, + 604, 606, 602, 0, 612, 600, 691, 604, 606, 601, - 602, 600, 599, 607, 604, 605, 599, 602, 604, 687, - 0, 688, 603, 606, 611, 601, 600, 603, 605, 603, - 606, 600, 608, 607, 604, 605, 609, 602, 610, 611, - 607, 604, 605, 608, 611, 604, 687, 609, 688, 603, - 606, 611, 608, 612, 610, 605, 609, 612, 610, 608, - 607, 604, 614, 609, 613, 610, 611, 689, 613, 0, - 608, 611, 615, 616, 609, 0, 617, 612, 620, 608, - 612, 610, 614, 609, 612, 610, 618, 615, 613, 614, - 618, 613, 615, 616, 689, 613, 617, 0, 620, 615, - 616, 619, 621, 617, 612, 620, 622, 0, 690, 614, + 599, 608, 600, 607, 601, 605, 602, 607, 608, 605, + 604, 0, 602, 606, 612, 609, 605, 609, 606, 610, + 613, 612, 0, 610, 0, 620, 693, 607, 608, 694, + 607, 611, 605, 0, 607, 621, 605, 609, 611, 610, + 613, 612, 609, 0, 609, 620, 610, 613, 614, 615, + 610, 611, 620, 693, 607, 621, 694, 616, 611, 614, + 615, 623, 621, 0, 609, 611, 610, 613, 614, 615, + 617, 624, 620, 616, 0, 614, 615, 616, 611, 618, + 0, 623, 621, 618, 616, 617, 614, 615, 623, 619, + 617, 624, 0, 619, 622, 614, 615, 617, 624, 627, - 618, 621, 619, 618, 615, 613, 624, 618, 0, 615, - 616, 619, 621, 617, 623, 620, 622, 625, 619, 621, - 0, 692, 626, 622, 623, 690, 624, 618, 621, 619, - 631, 0, 628, 624, 623, 626, 627, 625, 619, 621, - 0, 623, 626, 622, 625, 628, 633, 629, 692, 626, - 631, 623, 628, 624, 0, 627, 627, 631, 632, 628, - 629, 623, 626, 627, 625, 632, 633, 629, 630, 626, - 630, 634, 628, 633, 629, 0, 635, 631, 632, 628, - 637, 630, 627, 627, 636, 632, 639, 629, 630, 693, - 640, 634, 632, 633, 629, 630, 635, 630, 634, 636, + 616, 625, 695, 618, 616, 625, 618, 629, 623, 622, + 618, 626, 617, 619, 622, 628, 619, 617, 624, 627, + 619, 622, 626, 630, 628, 625, 627, 629, 625, 695, + 618, 626, 625, 630, 629, 628, 622, 631, 626, 632, + 619, 622, 628, 630, 0, 0, 627, 638, 633, 626, + 630, 628, 625, 634, 629, 0, 635, 631, 626, 632, + 630, 633, 628, 0, 631, 636, 632, 638, 633, 635, + 630, 640, 634, 634, 638, 633, 635, 637, 636, 637, + 634, 641, 639, 635, 631, 636, 632, 642, 633, 639, + 637, 640, 636, 644, 638, 633, 635, 637, 640, 634, - 637, 694, 638, 635, 636, 632, 639, 637, 630, 638, - 640, 636, 643, 639, 0, 630, 693, 640, 634, 696, - 641, 642, 638, 635, 642, 643, 636, 637, 694, 638, - 644, 636, 643, 639, 641, 641, 638, 640, 646, 643, - 641, 642, 645, 647, 645, 0, 696, 641, 642, 638, - 644, 642, 643, 648, 697, 0, 647, 644, 646, 643, - 698, 641, 641, 647, 645, 646, 648, 641, 642, 645, - 647, 645, 650, 648, 649, 0, 699, 644, 700, 0, - 648, 697, 649, 647, 651, 646, 701, 698, 651, 0, - 647, 645, 650, 648, 649, 0, 653, 654, 652, 650, + 634, 641, 639, 635, 637, 636, 637, 642, 641, 639, + 643, 646, 636, 644, 642, 645, 639, 637, 640, 647, + 644, 0, 645, 650, 637, 643, 0, 0, 641, 639, + 643, 646, 0, 648, 642, 645, 650, 643, 646, 647, + 644, 649, 645, 650, 649, 651, 647, 648, 648, 645, + 650, 696, 643, 648, 652, 0, 652, 643, 646, 653, + 648, 649, 645, 650, 654, 651, 647, 657, 649, 655, + 650, 649, 651, 697, 648, 648, 652, 654, 696, 653, + 648, 652, 655, 652, 654, 656, 653, 657, 649, 655, + 660, 654, 651, 656, 657, 658, 655, 659, 660, 658, - 648, 649, 652, 699, 653, 700, 656, 702, 651, 649, - 654, 651, 655, 701, 656, 651, 653, 654, 0, 650, - 659, 649, 652, 653, 654, 652, 656, 655, 658, 652, - 658, 653, 655, 656, 702, 651, 657, 654, 660, 655, - 659, 656, 661, 653, 654, 657, 661, 659, 662, 652, - 658, 663, 0, 656, 655, 658, 657, 658, 660, 655, - 664, 663, 661, 657, 665, 660, 0, 659, 662, 661, - 703, 663, 657, 661, 0, 662, 666, 658, 663, 667, - 664, 667, 704, 657, 665, 660, 0, 664, 663, 661, - 666, 665, 673, 668, 669, 662, 666, 703, 663, 706, + 697, 659, 698, 652, 654, 656, 653, 700, 0, 655, + 660, 654, 656, 701, 657, 662, 655, 660, 661, 658, + 656, 659, 658, 666, 659, 660, 658, 664, 659, 698, + 662, 661, 656, 663, 700, 662, 664, 660, 661, 667, + 701, 663, 662, 666, 0, 661, 658, 664, 659, 665, + 666, 665, 668, 663, 664, 669, 668, 662, 661, 667, + 663, 671, 662, 664, 672, 661, 667, 670, 663, 702, + 666, 665, 668, 674, 664, 669, 665, 670, 665, 668, + 663, 671, 669, 668, 672, 0, 667, 670, 671, 673, + 675, 672, 675, 674, 670, 0, 702, 0, 665, 668, - 670, 667, 668, 666, 670, 675, 667, 664, 667, 704, - 669, 665, 673, 668, 669, 671, 672, 666, 672, 673, - 668, 669, 0, 666, 670, 675, 706, 670, 667, 668, - 671, 670, 675, 676, 677, 671, 672, 669, 678, 673, - 668, 669, 671, 672, 674, 672, 679, 674, 680, 676, - 708, 670, 675, 676, 677, 709, 711, 671, 678, 714, - 676, 677, 671, 672, 674, 678, 679, 715, 680, 716, - 717, 674, 722, 679, 674, 680, 676, 708, 724, 725, - 676, 677, 709, 711, 726, 678, 714, 729, 730, 731, - 732, 674, 733, 679, 715, 680, 716, 717, 735, 722, + 674, 676, 669, 673, 670, 704, 677, 705, 671, 673, + 676, 672, 675, 0, 670, 681, 673, 675, 0, 675, + 674, 676, 677, 678, 683, 679, 677, 678, 676, 0, + 673, 0, 704, 677, 705, 681, 673, 676, 706, 675, + 679, 680, 681, 680, 683, 679, 0, 678, 676, 677, + 678, 683, 679, 677, 678, 682, 685, 684, 682, 686, + 687, 680, 681, 707, 708, 706, 709, 679, 680, 688, + 680, 683, 679, 684, 678, 682, 685, 684, 710, 686, + 687, 711, 682, 685, 684, 682, 686, 687, 680, 688, + 707, 708, 712, 709, 715, 717, 688, 718, 720, 723, - 736, 737, 738, 739, 740, 724, 725, 741, 742, 743, - 745, 726, 746, 747, 729, 730, 731, 732, 749, 733, - 750, 751, 753, 754, 756, 735, 0, 736, 737, 738, - 739, 740, 755, 825, 741, 742, 743, 745, 757, 746, - 747, 758, 753, 754, 756, 749, 0, 750, 751, 753, - 754, 756, 755, 755, 759, 759, 0, 760, 757, 755, - 825, 758, 0, 761, 0, 757, 760, 762, 758, 753, - 754, 756, 763, 761, 0, 759, 764, 760, 0, 755, - 755, 759, 759, 761, 760, 757, 764, 762, 758, 766, - 761, 765, 763, 760, 762, 767, 764, 768, 765, 763, + 684, 724, 682, 685, 684, 710, 686, 687, 711, 725, + 726, 731, 733, 734, 735, 738, 688, 739, 740, 712, + 741, 715, 717, 742, 718, 720, 723, 744, 724, 745, + 746, 747, 748, 749, 750, 751, 725, 726, 731, 733, + 734, 735, 738, 752, 739, 740, 754, 741, 755, 756, + 742, 758, 759, 760, 744, 0, 745, 746, 747, 748, + 749, 750, 751, 762, 763, 764, 835, 765, 766, 767, + 752, 837, 0, 754, 838, 755, 756, 839, 758, 759, + 760, 768, 768, 762, 763, 764, 764, 765, 766, 767, + 762, 763, 764, 835, 765, 766, 767, 769, 837, 771, - 761, 770, 759, 764, 760, 776, 771, 776, 0, 766, - 761, 765, 768, 764, 762, 767, 766, 768, 765, 763, - 769, 770, 767, 764, 768, 765, 771, 776, 770, 769, - 772, 773, 776, 771, 776, 774, 766, 0, 765, 768, - 769, 777, 767, 827, 768, 772, 773, 769, 770, 774, - 772, 773, 0, 771, 776, 774, 769, 772, 773, 775, - 779, 777, 774, 775, 778, 782, 0, 769, 777, 828, - 827, 778, 772, 773, 0, 0, 774, 772, 773, 775, - 779, 780, 774, 780, 778, 782, 775, 779, 777, 781, - 775, 778, 782, 784, 829, 785, 828, 787, 778, 783, + 772, 838, 768, 0, 839, 775, 769, 0, 768, 768, + 762, 763, 764, 764, 765, 766, 767, 769, 770, 771, + 772, 773, 776, 774, 769, 775, 771, 772, 770, 768, + 774, 773, 775, 769, 779, 0, 777, 0, 770, 780, + 0, 773, 776, 774, 769, 770, 771, 772, 773, 776, + 774, 777, 775, 778, 779, 770, 777, 774, 773, 780, + 0, 779, 778, 777, 781, 770, 780, 782, 773, 776, + 774, 840, 842, 778, 0, 785, 783, 785, 777, 781, + 778, 779, 782, 777, 781, 786, 780, 782, 784, 778, + 783, 781, 784, 787, 782, 0, 783, 785, 840, 842, - 830, 780, 781, 786, 0, 790, 775, 779, 780, 781, - 780, 778, 782, 784, 783, 785, 781, 787, 786, 783, - 784, 829, 785, 786, 787, 790, 783, 830, 780, 781, - 786, 789, 790, 788, 791, 792, 781, 793, 789, 794, - 784, 783, 785, 795, 787, 786, 783, 788, 832, 833, - 786, 789, 790, 788, 791, 792, 0, 793, 789, 794, - 788, 791, 792, 795, 793, 789, 794, 796, 798, 797, - 795, 796, 797, 799, 788, 832, 833, 800, 789, 0, - 788, 791, 792, 798, 793, 801, 794, 0, 798, 797, - 795, 796, 0, 799, 796, 798, 797, 800, 796, 797, + 778, 789, 785, 783, 785, 786, 781, 843, 784, 782, + 792, 781, 786, 787, 782, 784, 793, 783, 788, 784, + 787, 789, 794, 783, 785, 788, 791, 790, 789, 790, + 792, 793, 786, 0, 843, 784, 793, 792, 788, 791, + 787, 795, 794, 793, 796, 788, 791, 790, 789, 794, + 797, 0, 788, 791, 790, 0, 790, 792, 793, 796, + 799, 795, 798, 793, 796, 788, 791, 799, 795, 794, + 797, 796, 800, 791, 790, 801, 798, 797, 802, 0, + 799, 803, 798, 0, 804, 0, 796, 799, 795, 798, + 805, 796, 800, 0, 799, 801, 806, 797, 802, 800, - 799, 802, 804, 805, 800, 801, 803, 805, 0, 0, - 798, 806, 801, 807, 802, 798, 797, 807, 796, 803, - 799, 802, 804, 805, 800, 0, 803, 809, 802, 804, - 805, 806, 801, 803, 805, 808, 808, 807, 806, 0, - 807, 802, 809, 0, 807, 0, 803, 809, 802, 804, - 805, 810, 810, 803, 809, 813, 808, 811, 806, 0, - 836, 811, 808, 808, 807, 840, 812, 815, 813, 809, - 814, 815, 810, 0, 809, 813, 816, 0, 810, 810, - 812, 811, 813, 808, 811, 814, 812, 836, 811, 817, - 814, 815, 840, 812, 815, 813, 816, 814, 815, 810, + 806, 803, 801, 798, 804, 802, 808, 799, 803, 798, + 805, 804, 807, 0, 809, 807, 810, 805, 811, 800, + 806, 808, 801, 806, 0, 802, 808, 806, 803, 846, + 0, 804, 807, 808, 809, 0, 810, 805, 811, 807, + 814, 809, 807, 810, 812, 811, 815, 806, 808, 813, + 815, 817, 816, 808, 0, 817, 846, 812, 0, 807, + 814, 809, 813, 810, 812, 811, 815, 814, 819, 813, + 850, 812, 816, 815, 0, 817, 813, 815, 817, 816, + 818, 818, 817, 819, 812, 820, 820, 814, 819, 813, + 821, 812, 852, 815, 821, 819, 813, 850, 0, 816, - 818, 818, 813, 816, 819, 820, 821, 812, 811, 817, - 822, 823, 814, 812, 822, 823, 817, 814, 815, 824, - 821, 818, 842, 816, 819, 820, 821, 818, 818, 843, - 846, 819, 820, 821, 822, 823, 817, 822, 823, 824, - 849, 822, 823, 850, 853, 854, 824, 821, 818, 842, - 856, 819, 820, 821, 857, 858, 843, 846, 860, 861, - 865, 822, 823, 867, 868, 869, 824, 849, 874, 875, - 850, 853, 854, 876, 877, 0, 0, 856, 879, 878, - 932, 857, 858, 880, 882, 860, 861, 865, 878, 0, - 867, 868, 869, 876, 877, 874, 875, 880, 879, 878, + 853, 818, 817, 823, 822, 824, 820, 818, 818, 826, + 819, 0, 820, 820, 821, 819, 823, 821, 822, 852, + 824, 821, 825, 823, 822, 824, 825, 853, 818, 826, + 823, 822, 824, 820, 827, 829, 826, 828, 828, 830, + 0, 821, 0, 823, 0, 822, 825, 824, 856, 825, + 823, 822, 824, 825, 827, 829, 826, 831, 828, 830, + 0, 827, 829, 832, 828, 828, 830, 832, 833, 834, + 859, 831, 833, 825, 860, 856, 863, 831, 864, 866, + 867, 827, 829, 868, 831, 828, 830, 832, 870, 834, + 832, 871, 833, 875, 832, 833, 834, 859, 831, 833, - 876, 877, 881, 880, 882, 879, 878, 932, 884, 881, - 880, 882, 883, 885, 883, 878, 887, 886, 887, 0, - 876, 877, 881, 884, 880, 879, 878, 888, 884, 881, - 880, 882, 889, 885, 883, 884, 881, 886, 887, 883, - 885, 883, 890, 887, 886, 887, 891, 888, 892, 881, - 884, 0, 889, 0, 888, 884, 894, 895, 893, 889, - 885, 883, 890, 0, 886, 887, 891, 893, 892, 890, - 896, 894, 897, 891, 888, 892, 894, 895, 893, 889, - 898, 899, 0, 894, 895, 893, 901, 0, 0, 890, - 896, 902, 897, 891, 893, 892, 900, 896, 894, 897, + 877, 860, 878, 863, 831, 864, 866, 867, 879, 884, + 868, 885, 886, 887, 832, 870, 834, 888, 871, 833, + 875, 889, 892, 891, 0, 0, 888, 877, 0, 878, + 891, 890, 886, 887, 0, 879, 884, 888, 885, 886, + 887, 889, 892, 891, 888, 890, 894, 0, 889, 892, + 891, 890, 893, 888, 893, 895, 896, 891, 890, 886, + 887, 894, 942, 897, 888, 897, 894, 898, 889, 892, + 891, 899, 890, 894, 893, 895, 896, 900, 890, 893, + 901, 893, 895, 896, 0, 897, 902, 898, 894, 942, + 897, 899, 897, 894, 898, 904, 903, 900, 899, 905, - 898, 899, 903, 894, 895, 893, 901, 898, 899, 900, - 906, 902, 908, 901, 904, 909, 900, 896, 902, 897, - 905, 904, 903, 900, 905, 907, 910, 898, 899, 903, - 906, 0, 908, 901, 904, 909, 900, 906, 902, 908, - 907, 904, 909, 900, 905, 907, 910, 905, 904, 903, - 912, 905, 907, 910, 911, 913, 911, 906, 914, 908, - 915, 904, 909, 0, 912, 918, 934, 907, 917, 918, - 912, 905, 907, 910, 940, 913, 911, 912, 914, 916, - 915, 911, 913, 911, 942, 914, 916, 915, 917, 918, - 919, 912, 918, 934, 919, 917, 918, 912, 921, 916, + 901, 893, 895, 896, 900, 903, 902, 901, 906, 907, + 904, 908, 897, 902, 898, 904, 903, 0, 899, 905, + 909, 910, 904, 903, 900, 911, 905, 901, 906, 907, + 912, 908, 903, 902, 910, 906, 907, 904, 908, 913, + 909, 910, 904, 903, 914, 911, 905, 909, 910, 915, + 912, 914, 911, 915, 916, 906, 907, 912, 908, 913, + 944, 910, 0, 918, 914, 919, 913, 909, 910, 917, + 0, 914, 911, 915, 916, 920, 915, 912, 914, 950, + 915, 916, 0, 918, 917, 919, 913, 944, 923, 917, + 918, 914, 919, 922, 924, 920, 917, 921, 925, 921, - 922, 940, 913, 911, 920, 914, 916, 915, 923, 924, - 925, 942, 0, 916, 919, 917, 918, 919, 921, 920, - 922, 919, 943, 925, 920, 921, 916, 922, 923, 924, - 925, 920, 926, 946, 949, 923, 924, 925, 950, 926, - 951, 919, 954, 955, 956, 921, 920, 922, 957, 943, - 925, 920, 926, 958, 959, 923, 924, 925, 959, 926, - 946, 949, 954, 955, 956, 950, 926, 951, 957, 954, - 955, 956, 960, 958, 962, 957, 963, 0, 959, 926, - 958, 959, 961, 0, 964, 959, 965, 966, 981, 954, - 955, 956, 960, 0, 962, 957, 963, 961, 968, 960, + 915, 916, 920, 0, 0, 0, 950, 922, 923, 927, + 918, 917, 919, 922, 924, 923, 917, 931, 925, 921, + 922, 924, 920, 926, 921, 925, 921, 928, 929, 927, + 926, 928, 929, 930, 922, 923, 927, 931, 0, 952, + 922, 924, 932, 926, 931, 925, 921, 933, 930, 0, + 926, 928, 929, 930, 928, 929, 927, 926, 928, 929, + 930, 934, 932, 935, 931, 936, 952, 933, 953, 932, + 926, 956, 936, 959, 933, 930, 935, 960, 928, 929, + 930, 934, 961, 935, 0, 936, 964, 965, 934, 932, + 935, 966, 936, 0, 933, 953, 967, 968, 956, 936, - 958, 962, 961, 963, 964, 959, 965, 966, 967, 961, - 967, 964, 0, 965, 966, 981, 970, 0, 968, 960, - 971, 962, 972, 963, 961, 968, 969, 0, 974, 961, - 967, 964, 975, 965, 966, 967, 970, 967, 976, 969, - 971, 973, 972, 970, 978, 968, 969, 971, 974, 972, - 979, 976, 975, 969, 977, 974, 973, 967, 976, 975, - 980, 973, 977, 970, 978, 976, 969, 971, 973, 972, - 979, 978, 983, 969, 977, 974, 985, 979, 976, 975, - 980, 977, 987, 973, 988, 976, 991, 980, 973, 977, - 990, 978, 993, 0, 0, 999, 995, 979, 996, 983, + 959, 969, 970, 935, 960, 969, 964, 965, 934, 961, + 935, 966, 936, 964, 965, 971, 967, 968, 966, 972, + 973, 974, 970, 967, 968, 969, 0, 991, 969, 970, + 971, 975, 969, 964, 965, 971, 976, 0, 966, 972, + 973, 974, 971, 967, 968, 978, 972, 973, 974, 970, + 980, 975, 969, 977, 991, 977, 976, 971, 975, 981, + 0, 979, 971, 976, 982, 978, 972, 973, 974, 984, + 980, 0, 978, 0, 979, 977, 0, 980, 975, 981, + 977, 979, 977, 976, 982, 983, 981, 985, 979, 984, + 986, 982, 978, 993, 0, 988, 984, 980, 989, 990, - 992, 977, 0, 985, 998, 990, 991, 980, 994, 987, - 990, 988, 993, 991, 1001, 992, 995, 990, 996, 993, - 992, 994, 999, 995, 998, 996, 1004, 992, 994, 997, - 1005, 998, 990, 991, 1007, 994, 0, 990, 1006, 993, - 997, 1001, 992, 995, 1008, 996, 1004, 992, 994, 997, - 1005, 998, 1006, 1004, 1007, 994, 997, 1005, 1006, 0, - 1011, 1007, 1012, 0, 1008, 1006, 0, 997, 0, 0, - 0, 1008, 0, 1004, 0, 0, 997, 1005, 0, 1006, - 1011, 1007, 1012, 0, 0, 1006, 0, 1011, 0, 1012, - 0, 1008, 0, 0, 0, 0, 0, 0, 0, 0, + 983, 979, 977, 986, 995, 983, 981, 985, 979, 997, + 986, 982, 983, 987, 985, 988, 984, 986, 989, 990, + 993, 987, 988, 998, 1000, 989, 990, 983, 0, 1001, + 986, 995, 983, 987, 985, 1003, 997, 986, 1002, 1000, + 987, 1004, 988, 1005, 1000, 989, 990, 1006, 987, 1001, + 998, 1000, 1008, 1002, 1004, 1003, 1001, 0, 1002, 1009, + 987, 1004, 1003, 1005, 1007, 1002, 1000, 1006, 1004, 1011, + 1005, 1000, 1008, 1014, 1006, 1007, 1001, 1015, 1016, 1008, + 1002, 1004, 1003, 1017, 1007, 1002, 1009, 1018, 1004, 1021, + 1005, 1007, 1016, 1014, 1006, 1022, 1011, 1015, 1016, 1008, - 0, 0, 0, 0, 0, 0, 0, 1011, 0, 1012, - 1014, 0, 0, 1014, 1015, 0, 1015, 1015, 1017, 0, - 1017, 1017, 1018, 0, 1018, 1018, 1019, 0, 1019, 1019, - 1020, 0, 1020, 1020, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1014, 0, 1007, 1017, 1015, 1016, 0, 1018, 0, 1021, + 1017, 1007, 0, 0, 1018, 1022, 1021, 0, 0, 1016, + 1014, 0, 1022, 0, 1015, 1016, 0, 0, 0, 0, + 1017, 0, 0, 0, 1018, 0, 1021, 0, 0, 0, + 0, 0, 1022, 1024, 0, 0, 1024, 1025, 0, 1025, + 1025, 1027, 0, 1027, 1027, 1028, 0, 1028, 1028, 1029, + 0, 1029, 1029, 1030, 0, 1030, 1030, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, - 1013, 1013 + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023 } ; /* The intent behind this definition is that it'll catch @@ -1909,7 +1918,7 @@ static const flex_int16_t yy_chk[4103] = #define TOKEN(name) { return SQL_##name; } -#line 1912 "flex_lexer.cpp" +#line 1921 "flex_lexer.cpp" /*************************** ** Section 2: Rules ***************************/ @@ -1922,7 +1931,7 @@ static const flex_int16_t yy_chk[4103] = /*************************** ** Section 3: Rules ***************************/ -#line 1925 "flex_lexer.cpp" +#line 1934 "flex_lexer.cpp" #define INITIAL 0 #define COMMENT 1 @@ -2208,7 +2217,7 @@ YY_DECL #line 51 "flex_lexer.l" -#line 2211 "flex_lexer.cpp" +#line 2220 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2235,13 +2244,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1014 ) + if ( yy_current_state >= 1024 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1013 ); + while ( yy_current_state != 1023 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2923,97 +2932,107 @@ YY_RULE_SETUP #line 186 "flex_lexer.l" TOKEN(YEAR) YY_BREAK -/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 133: YY_RULE_SETUP -#line 189 "flex_lexer.l" -TOKEN(EQUALS) +#line 187 "flex_lexer.l" +TOKEN(TRUE) YY_BREAK case 134: YY_RULE_SETUP -#line 190 "flex_lexer.l" -TOKEN(NOTEQUALS) +#line 188 "flex_lexer.l" +TOKEN(FALSE) YY_BREAK +/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 135: YY_RULE_SETUP #line 191 "flex_lexer.l" -TOKEN(NOTEQUALS) +TOKEN(EQUALS) YY_BREAK case 136: YY_RULE_SETUP #line 192 "flex_lexer.l" -TOKEN(LESSEQ) +TOKEN(NOTEQUALS) YY_BREAK case 137: YY_RULE_SETUP #line 193 "flex_lexer.l" -TOKEN(GREATEREQ) +TOKEN(NOTEQUALS) YY_BREAK case 138: YY_RULE_SETUP #line 194 "flex_lexer.l" -TOKEN(CONCAT) +TOKEN(LESSEQ) YY_BREAK case 139: YY_RULE_SETUP -#line 196 "flex_lexer.l" -{ return yytext[0]; } +#line 195 "flex_lexer.l" +TOKEN(GREATEREQ) YY_BREAK case 140: -#line 199 "flex_lexer.l" +YY_RULE_SETUP +#line 196 "flex_lexer.l" +TOKEN(CONCAT) + YY_BREAK case 141: YY_RULE_SETUP -#line 199 "flex_lexer.l" +#line 198 "flex_lexer.l" +{ return yytext[0]; } + YY_BREAK +case 142: +#line 201 "flex_lexer.l" +case 143: +YY_RULE_SETUP +#line 201 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; } YY_BREAK -case 142: +case 144: YY_RULE_SETUP -#line 204 "flex_lexer.l" +#line 206 "flex_lexer.l" { yylval->ival = atol(yytext); return SQL_INTVAL; } YY_BREAK -case 143: +case 145: YY_RULE_SETUP -#line 209 "flex_lexer.l" +#line 211 "flex_lexer.l" { // Crop the leading and trailing quote char yylval->sval = hsql::substr(yytext, 1, strlen(yytext)-1); return SQL_IDENTIFIER; } YY_BREAK -case 144: +case 146: YY_RULE_SETUP -#line 215 "flex_lexer.l" +#line 217 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 145: +case 147: YY_RULE_SETUP -#line 220 "flex_lexer.l" +#line 222 "flex_lexer.l" { // Crop the leading and trailing quote char yylval->sval = hsql::substr(yytext, 1, strlen(yytext)-1); return SQL_STRING; } YY_BREAK -case 146: +case 148: YY_RULE_SETUP -#line 226 "flex_lexer.l" +#line 228 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 147: +case 149: YY_RULE_SETUP -#line 229 "flex_lexer.l" +#line 231 "flex_lexer.l" ECHO; YY_BREAK -#line 3016 "flex_lexer.cpp" +#line 3035 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -3314,7 +3333,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1014 ) + if ( yy_current_state >= 1024 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3343,11 +3362,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1014 ) + if ( yy_current_state >= 1024 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1013); + yy_is_jam = (yy_current_state == 1023); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -4170,7 +4189,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 229 "flex_lexer.l" +#line 231 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index 520f1ec..37c95c4 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -729,7 +729,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 229 "flex_lexer.l" +#line 231 "flex_lexer.l" #line 735 "flex_lexer.h" diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index ad05ce3..9b44e3a 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -184,6 +184,8 @@ HOUR TOKEN(HOUR) DAY TOKEN(DAY) MONTH TOKEN(MONTH) YEAR TOKEN(YEAR) +TRUE TOKEN(TRUE) +FALSE TOKEN(FALSE) /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ "==" TOKEN(EQUALS) diff --git a/src/sql/Expr.cpp b/src/sql/Expr.cpp index 36b027e..e1ee8f6 100644 --- a/src/sql/Expr.cpp +++ b/src/sql/Expr.cpp @@ -1,4 +1,3 @@ - #include "Expr.h" #include #include @@ -6,7 +5,7 @@ namespace hsql { - Expr::Expr(ExprType type) +Expr::Expr(ExprType type) : type(type), expr(nullptr), expr2(nullptr), @@ -19,10 +18,11 @@ namespace hsql { ival(0), ival2(0), datetimeField(kDatetimeNone), + isBoolLiteral(false), opType(kOpNone), - distinct(false) {}; + distinct(false){}; - Expr::~Expr() { +Expr::~Expr() { delete expr; delete expr2; delete select; @@ -31,35 +31,35 @@ namespace hsql { free(alias); if (exprList != nullptr) { - for (Expr* e : *exprList) { - delete e; - } - delete exprList; + for (Expr* e : *exprList) { + delete e; + } + delete exprList; } - } +} - Expr* Expr::make(ExprType type) { +Expr* Expr::make(ExprType type) { Expr* e = new Expr(type); return e; - } +} - Expr* Expr::makeOpUnary(OperatorType op, Expr* expr) { +Expr* Expr::makeOpUnary(OperatorType op, Expr* expr) { Expr* e = new Expr(kExprOperator); e->opType = op; e->expr = expr; e->expr2 = nullptr; return e; - } +} - Expr* Expr::makeOpBinary(Expr* expr1, OperatorType op, Expr* expr2) { +Expr* Expr::makeOpBinary(Expr* expr1, OperatorType op, Expr* expr2) { Expr* e = new Expr(kExprOperator); e->opType = op; e->expr = expr1; e->expr2 = expr2; return e; - } +} - Expr* Expr::makeBetween(Expr* expr, Expr* left, Expr* right) { +Expr* Expr::makeBetween(Expr* expr, Expr* left, Expr* right) { Expr* e = new Expr(kExprOperator); e->expr = expr; e->opType = kOpBetween; @@ -67,32 +67,32 @@ namespace hsql { e->exprList->push_back(left); e->exprList->push_back(right); return e; - } +} - Expr* Expr::makeCaseList(Expr* caseListElement) { +Expr* Expr::makeCaseList(Expr* caseListElement) { Expr* e = new Expr(kExprOperator); - // Case list expressions are temporary and will be integrated into the case expressions exprList - thus assign - // operator type kOpNone + // Case list expressions are temporary and will be integrated into the case + // expressions exprList - thus assign operator type kOpNone e->opType = kOpNone; e->exprList = new std::vector(); e->exprList->push_back(caseListElement); return e; - } +} - Expr* Expr::makeCaseListElement(Expr* when, Expr* then) { +Expr* Expr::makeCaseListElement(Expr* when, Expr* then) { Expr* e = new Expr(kExprOperator); e->opType = kOpCaseListElement; e->expr = when; e->expr2 = then; return e; - } +} - Expr* Expr::caseListAppend(Expr* caseList, Expr* caseListElement) { +Expr* Expr::caseListAppend(Expr* caseList, Expr* caseListElement) { caseList->exprList->push_back(caseListElement); return caseList; - } +} - Expr* Expr::makeCase(Expr* expr, Expr* caseList, Expr* elseExpr) { +Expr* Expr::makeCase(Expr* expr, Expr* caseList, Expr* elseExpr) { Expr* e = new Expr(kExprOperator); e->opType = kOpCase; e->expr = expr; @@ -101,153 +101,154 @@ namespace hsql { caseList->exprList = nullptr; delete caseList; return e; - } +} - Expr* Expr::makeLiteral(int64_t val) { +Expr* Expr::makeLiteral(int64_t val) { Expr* e = new Expr(kExprLiteralInt); e->ival = val; return e; - } +} - Expr* Expr::makeLiteral(double value) { +Expr* Expr::makeLiteral(double value) { Expr* e = new Expr(kExprLiteralFloat); e->fval = value; return e; - } +} - Expr* Expr::makeLiteral(char* string) { +Expr* Expr::makeLiteral(char* string) { Expr* e = new Expr(kExprLiteralString); e->name = string; return e; - } +} - Expr* Expr::makeNullLiteral() { +Expr* Expr::makeLiteral(bool val) { + Expr* e = new Expr(kExprLiteralInt); + e->ival = (int)val; + e->isBoolLiteral = true; + return e; +} + +Expr* Expr::makeNullLiteral() { Expr* e = new Expr(kExprLiteralNull); return e; - } +} - Expr* Expr::makeColumnRef(char* name) { +Expr* Expr::makeColumnRef(char* name) { Expr* e = new Expr(kExprColumnRef); e->name = name; return e; - } +} - Expr* Expr::makeColumnRef(char* table, char* name) { +Expr* Expr::makeColumnRef(char* table, char* name) { Expr* e = new Expr(kExprColumnRef); e->name = name; e->table = table; return e; - } +} - Expr* Expr::makeStar(void) { +Expr* Expr::makeStar(void) { Expr* e = new Expr(kExprStar); return e; - } +} - Expr* Expr::makeStar(char* table) { +Expr* Expr::makeStar(char* table) { Expr* e = new Expr(kExprStar); e->table = table; return e; - } +} - Expr* Expr::makeFunctionRef(char* func_name, std::vector* exprList, - bool distinct) { +Expr* Expr::makeFunctionRef(char* func_name, std::vector* exprList, + bool distinct) { Expr* e = new Expr(kExprFunctionRef); e->name = func_name; e->exprList = exprList; e->distinct = distinct; return e; - } +} - Expr* Expr::makeArray(std::vector* exprList) { +Expr* Expr::makeArray(std::vector* exprList) { Expr* e = new Expr(kExprArray); e->exprList = exprList; return e; - } +} - Expr* Expr::makeArrayIndex(Expr* expr, int64_t index) { +Expr* Expr::makeArrayIndex(Expr* expr, int64_t index) { Expr* e = new Expr(kExprArrayIndex); e->expr = expr; e->ival = index; return e; - } +} - Expr* Expr::makeParameter(int id) { +Expr* Expr::makeParameter(int id) { Expr* e = new Expr(kExprParameter); e->ival = id; return e; - } +} - Expr* Expr::makeSelect(SelectStatement* select) { +Expr* Expr::makeSelect(SelectStatement* select) { Expr* e = new Expr(kExprSelect); e->select = select; return e; - } +} - Expr* Expr::makeExists(SelectStatement* select) { +Expr* Expr::makeExists(SelectStatement* select) { Expr* e = new Expr(kExprOperator); e->opType = kOpExists; e->select = select; return e; - } +} - Expr* Expr::makeInOperator(Expr* expr, std::vector* exprList) { +Expr* Expr::makeInOperator(Expr* expr, std::vector* exprList) { Expr* e = new Expr(kExprOperator); e->opType = kOpIn; e->expr = expr; e->exprList = exprList; return e; - } +} - Expr* Expr::makeInOperator(Expr* expr, SelectStatement* select) { +Expr* Expr::makeInOperator(Expr* expr, SelectStatement* select) { Expr* e = new Expr(kExprOperator); e->opType = kOpIn; e->expr = expr; e->select = select; return e; - } +} - Expr* Expr::makeExtract(DatetimeField datetimeField, Expr* expr) { +Expr* Expr::makeExtract(DatetimeField datetimeField, Expr* expr) { Expr* e = new Expr(kExprFunctionRef); e->name = strdup("EXTRACT"); e->datetimeField = datetimeField; e->expr = expr; return e; - } +} - bool Expr::isType(ExprType exprType) const { - return exprType == type; - } +bool Expr::isType(ExprType exprType) const { return exprType == type; } - bool Expr::isLiteral() const { +bool Expr::isLiteral() const { return isType(kExprLiteralInt) || isType(kExprLiteralFloat) || isType(kExprLiteralString) || isType(kExprParameter) || isType(kExprLiteralNull); - } +} - bool Expr::hasAlias() const { - return alias != nullptr; - } +bool Expr::hasAlias() const { return alias != nullptr; } - bool Expr::hasTable() const { - return table != nullptr; - } +bool Expr::hasTable() const { return table != nullptr; } - const char* Expr::getName() const { +const char* Expr::getName() const { if (alias != nullptr) - return alias; + return alias; else - return name; - } + return name; +} - char* substr(const char* source, int from, int to) { +char* substr(const char* source, int from, int to) { int len = to - from; char* copy = (char*)malloc(len + 1); ; strncpy(copy, source + from, len); copy[len] = '\0'; return copy; - } +} } // namespace hsql diff --git a/src/sql/Expr.h b/src/sql/Expr.h index 331eea2..a8f2f47 100644 --- a/src/sql/Expr.h +++ b/src/sql/Expr.h @@ -6,13 +6,13 @@ #include namespace hsql { - struct SelectStatement; +struct SelectStatement; // Helper function used by the lexer. // TODO: move to more appropriate place. - char* substr(const char* source, int from, int to); +char* substr(const char* source, int from, int to); - enum ExprType { +enum ExprType { kExprLiteralFloat, kExprLiteralString, kExprLiteralInt, @@ -27,10 +27,10 @@ namespace hsql { kExprArray, kExprArrayIndex, kExprDatetimeField - }; +}; // Operator types. These are important for expressions of type kExprOperator. - enum OperatorType { +enum OperatorType { kOpNone, // Ternary operator @@ -38,7 +38,7 @@ namespace hsql { // n-nary special case kOpCase, - kOpCaseListElement, // `WHEN expr THEN expr` + kOpCaseListElement, // `WHEN expr THEN expr` // Binary operators. kOpPlus, @@ -67,9 +67,9 @@ namespace hsql { kOpUnaryMinus, kOpIsNull, kOpExists - }; +}; - enum DatetimeField { +enum DatetimeField { kDatetimeNone, kDatetimeSecond, kDatetimeMinute, @@ -77,14 +77,14 @@ namespace hsql { kDatetimeDay, kDatetimeMonth, kDatetimeYear, - }; +}; - typedef struct Expr Expr; +typedef struct Expr Expr; // Represents SQL expressions (i.e. literals, operators, column_refs). // TODO: When destructing a placeholder expression, we might need to alter the // placeholder_list. - struct Expr { +struct Expr { Expr(ExprType type); virtual ~Expr(); @@ -102,6 +102,7 @@ namespace hsql { int64_t ival; int64_t ival2; DatetimeField datetimeField; + bool isBoolLiteral; OperatorType opType; bool distinct; @@ -142,6 +143,8 @@ namespace hsql { static Expr* makeLiteral(char* val); + static Expr* makeLiteral(bool val); + static Expr* makeNullLiteral(); static Expr* makeColumnRef(char* name); @@ -170,7 +173,7 @@ namespace hsql { static Expr* makeInOperator(Expr* expr, SelectStatement* select); static Expr* makeExtract(DatetimeField datetimeField1, Expr* expr); - }; +}; // Zero initializes an Expr object and assigns it to a space in the heap // For Hyrise we still had to put in the explicit NULL constructor diff --git a/test/select_tests.cpp b/test/select_tests.cpp index d1c266b..9f63ee3 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -428,19 +428,24 @@ TEST(Operators) { SQLParserResult result; SQLParser::parse("SELECT * FROM foo where a = 1; \ - SELECT * FROM foo where a == 1; \ + SELECT * FROM foo where a == 2; \ SELECT * FROM foo where a != 1; \ SELECT * FROM foo where a <> 1; \ SELECT * FROM foo where a > 1; \ SELECT * FROM foo where a < 1; \ SELECT * FROM foo where a >= 1; \ - SELECT * FROM foo where a <= 1;", &result); + SELECT * FROM foo where a <= 1; \ + SELECT * FROM foo where a = TRUE; \ + SELECT * FROM foo where a = false;", &result); stmt = (SelectStatement*) result.getStatement(0); ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_EQ(stmt->whereClause->expr2->ival, 1); + ASSERT_EQ(stmt->whereClause->expr2->isBoolLiteral, false); stmt = (SelectStatement*) result.getStatement(1); ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_EQ(stmt->whereClause->expr2->ival, 2); stmt = (SelectStatement*) result.getStatement(2); ASSERT_EQ(stmt->whereClause->opType, kOpNotEquals); @@ -459,6 +464,16 @@ TEST(Operators) { stmt = (SelectStatement*) result.getStatement(7); ASSERT_EQ(stmt->whereClause->opType, kOpLessEq); + + stmt = (SelectStatement*) result.getStatement(8); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_EQ(stmt->whereClause->expr2->ival, 1); + ASSERT_EQ(stmt->whereClause->expr2->isBoolLiteral, true); + + stmt = (SelectStatement*) result.getStatement(9); + ASSERT_EQ(stmt->whereClause->opType, kOpEquals); + ASSERT_EQ(stmt->whereClause->expr2->ival, 0); + ASSERT_EQ(stmt->whereClause->expr2->isBoolLiteral, true); } TEST(JoinTypes) {